<?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>CSSPreprocessor</name>
	<version>3.2.1</version>
    <mincmsversion>2.2.22</mincmsversion>
	<help><![CDATA[PGgyPldoYXQgZG9lcyB0aGlzIGRvPzwvaDI+CjxwPlRoaXMgbW9kdWxlIGFkZHMgdG8gdGhlIENNU01TIGZpbGUtYmFzZWQgc3R5bGVzaGVldHMgKENNU01TIDIuMyspIGFuZC9vciBEZXNpZ25NYW5hZ2VyIHNvbWUgQ1NTIFByZXByb2Nlc3NvcnMsIGluIG9yZGVyIHRvIGNvbXBpbGUgTEVTUyBvciBTQVNTIGxhbmd1YWdlcyAob3Igb3RoZXIgbWF5YmUgbGF0ZXIpLjwvcD4KCjxoMj5Ib3cgZG9lcyBpdCB3b3JrIGFuZCBpbnRlZ3JhdGUgaW4gQ01TTVM8L2gyPgo8cD4KCVRoaXMgbW9kdWxlIGlzIGxhdW5jaGVkIGFmdGVyIGFsbCB0aGUgc3R5bGVzaGVldHMgaGF2ZSBiZWVuIGNvbWJpbmVkICh0aHJvdWdoIGNtc19zdHlsZXNoZWV0IG9yIGNtc19yZW5kZXJfY3NzKSwgYW5kIGl0IHRha2VzIGFsbCB0aGUgQ1NTIGNvbnRlbnQgdG8gZ2l2ZSBpdCB0byB0aGUgUHJlcHJvY2Vzc29yIG9mIHlvdXIgY2hvaWNlLgo8L3A+CjxwPgoJS2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBtb2R1bGUgcHJvY2Vzc2VzIHRoZSBlbnRpcmUgc3R5bGVzaGVldCBhZnRlciB0aGVpciBjb21iaW5hdGlvbi4gTm8gbWF0dGVyIGlmIHlvdSB1c2UgMSBvciAxMCBzdHlsZXNoZWV0cyBpbiB5b3VyIGRlc2lnbiwgdGhlIHByZXByb2Nlc3NvciB3aWxsIG9ubHkgcHJvY2VzcyBpdCBvbmUgdGltZSwgYW5kIGl0IHdpbGwgb25seSBwcm9jZXNzIGl0IHdoZW4gdGhlcmUncyBhIGNoYW5nZSBpbiBvbmUgb2YgdGhlIGluY2x1ZGVkIHN0eWxlc2hlZXQuCjwvcD4KCgo8aDI+SG93IERvIEkgVXNlIEl0PC9oMj4KPHVsPgoJPGxpPgoJCURlZmluZSB5b3VyIGltcG9ydCBkaXJlY3RvcmllcywgaWYgeW91IHVzZSBpdC4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGludGVncmF0ZSBCb290c3RyYXAsIHlvdSBjYW46CgkJPG9sPgoJCQk8bGk+UHV0IHlvdXIgQm9vdHN0cmFwIFNBU1Mgc291cmNlIGZpbGVzIGluIGFzc2V0cy9ib290c3RyYXAvIChvciBtYXliZSBhc3NldHMvdGhlbWVzL015VGhlbWVOYW1lL3Njc3MvYm9vdHN0cmFwIGlmIHlvdSBhcmUgdXNpbmcgdGhlIHRoZW1lcyBzeXN0ZW0pPC9saT4KCQkJPGxpPlR5cGUgPHN0cm9uZz48ZW0+YXNzZXRzL2Jvb3RzdHJhcDwvZW0+PC9zdHJvbmc+IGluIHRoZSAiRGlyZWN0b3JpZXMgY29udGFpbmluZyBMRVNTL1NBU1MgZmlsZXMgdG8gaW5jbHVkZSBpbiBjb21waWxhdGlvbiIgLSBObyBzbGFzaCBhdCBiZWdpbm5pbmcgb3IgZW5kPC9saT4KICAgICAgCQk8bGk+CiAgICAgIAkJCUNyZWF0ZSBvbmUgb3IgbW9yZSAiY3VzdG9tIiBzdHlsZXNoZWV0IGluIHRoZSBEZXNpZ24gTWFuYWdlciBhbmQgbGluayBpdCB0byB5b3VyIGRlc2lnbi4KICAgICAgCQkJPGJyPgogICAgICAJCQlPUgogICAgICAJCQk8YnI+CiAgICAgIAkJCVF1ZXVlIHlvdXIgdmFyaW91cyBDU1MgaW4geW91ciB0ZW1wbGF0ZSB3aXRoIHtjbXNfcXVldWVfY3NzIGZpbGU9ImFzc2V0cy90aGVtZXMvTXlUaGVtZU5hbWUvY3NzL21haW4tc3R5bGVzaGVldC5zY3NzIn0KICAgICAgCQk8L2xpPgogICAgICAJCTxsaT4KICAgICAgCQkJVXNlIHtjbXNfc3R5bGVzaGVldH0gb3Ige2Ntc19yZW5kZXJfY3NzfSBhY2NvcmRpbmcgdG8gaG93IHlvdSdyZSB3b3JraW5nIHdpdGggc3R5bGVzaGVldHMgaW4gQ01TIE1hZGUgU2ltcGxlLiBDU1MgUHJlcHJvY2Vzc29yIHdvcmtzIHdpdGggYm90aC4KICAgICAgCQk8L2xpPgoJCTwvb2w+Cgk8L2xpPgogIDxsaT4KCQlTYW1lIGNhbiBiZSBkb25lIGZvciBGb3VuZGF0aW9uOgoJCTxvbD4KCQkJPGxpPlB1dCB5b3VyIEZvdW5kYXRpb24gU0FTUyBzb3VyY2UgZmlsZXMgaW4gYXNzZXRzL2ZvdW5kYXRpb24vc2NzczwvbGk+CgkJCTxsaT5UeXBlIDxzdHJvbmc+PGVtPmFzc2V0cy9mb3VuZGF0aW9uL3Njc3M8L2VtPjwvc3Ryb25nPiBpbiB0aGUgIkRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgTEVTUy9TQVNTIGZpbGVzIHRvIGluY2x1ZGUgaW4gY29tcGlsYXRpb24iIC0gTm8gc2xhc2ggYXQgYmVnaW5uaW5nIG9yIGVuZDwvbGk+CgkJCTxsaT4KCQkJCUNhbGwgdGhlIGZvdW5kYXRpb24gbWl4aW5zIC8gcnVsZXMgaW4geW91ciBtYWluIENTUyBmaWxlCgkJCTwvbGk+CgkJPC9vbD4KCTwvbGk+Cgk8bGk+U3RhcnQgdXNpbmcgTEVTUyAvIFNBU1MgY29kZSBpbiB5b3VyIHN0eWxlc2hlZXRzITwvbGk+CjwvdWw+CgoKPGgyPlVwZGF0aW5nIHN0eWxlc2hlZXRzPC9oMj4KPHA+CglJZiB5b3UgbWFrZSBhbiB1cGRhdGUgb24gYSBEZXNpZ25NYW5hZ2VyIG9yIGZpbGUtYmFzZWQgc3R5bGVzaGVldCAocXVldWVkIHdpdGggY21zX3F1ZXVlX2NzcyksIHRoZSBtb2R1bGUgd2lsbCBwcm9jZXNzIHRoZSBzdHlsZXNoZWV0IGFnYWluIG9uIHRoZSBuZXh0IHBhZ2UgcmVmcmVzaC4KPC9wPgo8cD4KCUhvd2V2ZXIsIGlmIHlvdSBkaWQgbWFrZSBhIGNoYW5nZSBpbiB5b3VyIGltcG9ydGVkIGxlc3MgZmlsZXMsIHRoZSBzeXN0ZW0gd2lsbCBub3QgcGVyZm9ybSBhbnkgdXBkYXRlIC0gaW4gdGhpcyBjYXNlLCB5b3UgbXVzdCBjbGVhciB0aGUgY2FjaGUgb3Igc2ltcGx5IHNhdmUgeW91ciBkZXNpZ25tYW5hZ2VyIHN0eWxlc2hlZXQgdG8gbWFrZSB0aGUge2Ntc19zdHlsZXNoZWV0fSBwbHVnaW4gcHJvY2VzcyB0aGUgY3NzIGFnYWluLgoJPGJyPgoJSW4gQ01TTVMgMi4zKyB5b3VyIGNhbiB1c2Uge2Ntc19yZW5kZXJfY3NzIGZvcmNlPXRydWV9IHRvIGNvbWJpbmUgYW5kIHByb2Nlc3MgdGhlIHdob2xlIHN0eWxlc2hlZXRzIG9uIGV2ZXJ5IHBhZ2UgcmVmcmVzaCAodXNlZnVsIG9uIGRldmVsb3BtZW50KS4KPC9wPgoKCjxoMj5TbWFydHkgc3VwcG9ydDwvaDI+CjxwPkFzIHRoaXMgbW9kdWxlIHVzZXMge2Ntc19zdHlsZXNoZWV0fSBhbmQvb3Ige2Ntc19yZW5kZXJfY3NzfSwgeW91IGNhbiB1c2UgU21hcnR5IHRhZ3Mgd2l0aCBbWyBhbmQgXV0gLSBTbWFydHkgd2lsbCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRoZSBDU1MgUHJlUHJvY2Vzc29yLjwvcD4KCjxoMj5Vc2luZyBTb3VyY2VtYXBzPC9oMj4KPHA+CglTb21lIHByZXByb2Nlc3NvcnMgY2FuIGNyZWF0ZSBzb3VyY2VtYXAgZmlsZXMsIGluIG9yZGVyIHRvIGhlbHAgeW91IGR1cmluZyBpbnRlZ3JhdGlvbi4gRG9uJ3QgZm9yZ2V0IHRvIGNvbmZpZ3VyZSB5b3VyIGJyb3dzZXIgdG8gdXNlIHRoYXQgZnVuY3Rpb24uIE5vdGUgdGhhdCBvbmx5IGltcG9ydGVkIGZpbGVzIHdpbGwgYmUgbWFwcGVkIGluIHRoZSBzb3VyY2VtYXBzICh0aGlzIG1heSBjaGFuZ2UgaW4gYSBmdXJ0aGVyIHZlcnNpb24pLjxicj5Eb24ndCBmb3JnZXQgdG8gZGlzYWJsZSB0aGUgc291cmNlbWFwcyBmb3IgcHJvZHVjdGlvbi4KPC9wPgoKPGgyPlNlY3VyaW5nIHlvdXIgc2NzcyBzb3VyY2UgZmlsZXM8L2gyPgo8cD4KCUluIHByb2R1Y3Rpb24sIHlvdSBzaG91bGQgZGlzYWJsZSB5b3VyIC5zY3NzIHNvdXJjZSBmaWxlcyBmcm9tIGJlaW5nIHZpZXdlZCBpbiBhIGJyb3dzZXIuIFlvdSBtYXkgdXNlIGFuIC5odGFjY2VzcyBydWxlIGZvciBBcGFjaGUsIGxpa2UgdGhpcyBvbmU6Cgk8YnI+Cgk8ZW0+UmVkaXJlY3RNYXRjaCA0MDMgXi4qL2Fzc2V0cy8uKlwuc2NzcyQ8L2VtPgoJPGJyPgoJWW91IHNob3VsZCBjb21tZW50IHRoaXMgbGluZSBpbiBEZXZlbG9wbWVudCBpZiB5b3Ugd2FudCB0byB1c2UgU291cmNlbWFwcyBiZWNhdXNlIHlvdXIgYnJvd3NlciB3aWxsIHRyeSB0byBvcGVuIGl0IGluIHRoZSBpbnNwZWN0b3IuCjwvcD4KCjxoMj5EZWFjdGl2YXRlIHRoZSBtb2R1bGU8L2gyPgo8cD4KCUlmIHlvdSBkb24ndCB3YW50IHRvIHVzZSBhbnkgb2YgdGhlIHByZXByb2Nlc3NvcnMsIHBsZWFzZSByZW1vdmUgaXQgb3IgZGlzYWJsZSBpdCBpbiB0aGUgTW9kdWxlcyBNYW5hZ2VyIC0gVGhlcmUgYXJlIG5vICJkZWFjdGl2YXRlIiBmdW5jdGlvbiBidWlsdCBpbiB0aGUgbW9kdWxlLgo8L3A+Cgo8aDI+UHJlcHJvY2Vzc29yIHN3aXRjaDwvaDI+CjxwPgoJWW91IG1heSB3YW50IHRvIHN3aXRjaCBmcm9tIG9uZSBwcmVwcm9jZXNzb3IgdG8gYW5vdGhlciAtIFRoZSBtb2R1bGUgc2hvdWxkIGNsZWFyIHRoZSBjYWNoZSBvbiBwcmVmZXJlbmNlcyBjaGFuZ2Ugc28gb24gdGhlIG5leHQgcGFnZSByZWZyZXNoIGluIHlvdXIgYnJvd3NlciB0aGUgd2hvbGUgQ1NTIHdpbGwgYmUgcHJlcHJvY2Vzc2VkIGFnYWluLgo8L3A+Cgo8aDI+RXh0ZW5kIHdpdGggYW5vdGhlciBwcmVwcm9jZXNzb3I8L2gyPgo8cD4KCVlvdSBjYW4gY3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBpbiB0aGUgInByZXByb2Nlc3NvcnMiIGRpcmVjdG9yeSwgYW5kIGNyZWF0ZSB5b3VyIG93biBjbGFzcyAtIENoZWNrIGhvdyB0aGUgYnVuZGxlZCBwcmVwcm9jZXNzb3JzIGFyZSBpbnRlZ3JhdGVkLgo8L3A+CjxwPkRvbid0IGZvcmdldCB0byA8YSBocmVmPSJtYWlsdG86Y29udGFjdEBhaXJlbGlicmUubmV0Ij5lbWFpbCBtZTwvYT4gaWYgeW91IHdhbnQgeW91ciBwcmVwcm9jZXNzb3IgdG8gYmUgYWRkZWQgdG8gdGhlIHByb2plY3QhPC9wPgoKPGgyPlN1cHBvcnQ8L2gyPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8cD4KCUlmIHlvdSB3YW50IHRvIGNvbnRhY3QgbWU6IDxhIGhyZWY9Im1haWx0bzpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmNvbnRhY3RAYWlyZWxpYnJlLm5ldDwvYT4KPC9wPgoKPGgyPlByb2plY3Qgb24gdGhlIHdlYjwvaDI+CjxwPllvdSBjYW4gZm9sbG93IHRoZSBwcm9qZWN0IG9uIDogPC9wPgo8dWw+Cgk8bGk+R2l0SHViOiA8YSBocmVmPSJodHRwczojZ2l0aHViLmNvbS9haXJlbGlicmUvQ1NTUHJlcHJvY2Vzc29yIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6I2dpdGh1Yi5jb20vYWlyZWxpYnJlL0NTU1ByZXByb2Nlc3NvcjwvYT48L2xpPgoJPGxpPkNNU01TIEZvcmdlOiA8YSBocmVmPSJodHRwOiNkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY3NzcHJlcHJvY2Vzc29yIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDojZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Nzc3ByZXByb2Nlc3NvcjwvYT48L2xpPgo8L3VsPgoKPGgyPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDI+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxNC0yMDE3LCBNYXRoaWV1IE11dGhzIDxhaXJlTGlicmU+IDxhIGhyZWY9Im1haWx0bzpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmNvbnRhY3RAYWlyZWxpYnJlLm5ldDwvYT4gLyA8YSBocmVmPSJodHRwczovL3d3dy5haXJlbGlicmUubmV0IiB0YXJnZXQ9Il9ibGFuayI+d3d3LmFpcmVsaWJyZS5uZXQ8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOiN3d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KCjxoMz5QcmVwcm9jZXNzb3JzIGNvcHlyaWdodDwvaDM+CjxwPgoJVGhlIGF1dGhvciBvZiB0aGlzIG1vZHVsZSBkb2VzIG5vdCBvd24gdGhlIHByZXByb2Nlc3NvcnMgYnVuZGxlZCB3aXRoIGl0IC0gUGxlYXNlIHNlZSBldmVyeSBwcmVwcm9jZXNzb3JzIHNvdXJjZSBjb2RlIC8gd2Vic2l0ZSB0byBnZXQgaW5mb3JtYXRpb25zIGFib3V0IGxpY2VuY2UgYW5kIGNvcHlyaWdodC4KPC9wPgo8cD5JIGp1c3Qgd2FudGVkIHRvIHRoYW5rIGFsbCB0aGUgZGV2ZWxvcGVycyB0aGF0IGNvbnRyaWJ1dGUgdG8gdGhlc2UgcHJlcHJvY2Vzc29ycyB3aGljaCBhcmUgZ3JlYXQgdG9vbHMgZm9yIGRlc2lnbmVycyE8L3A+Cjxicj4KPGJyPgo8YnI+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBBaXJlIGxpYnJlIC0gTWF0aGlldSBNdXRocyAmbHQ7Y29udGFjdEBhaXJlbGlicmUubmV0Jmd0OzxiciAvPjxiciAvPlZlcnNpb246IDMuMi4xPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgogICAgPGxpPgogICAgICAgIDxzdHJvbmc+My4yLjE8L3N0cm9uZz4gLSAyMDI2LTExLTEwCiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBVcGRhdGVkIExlc3NDb21tYW5kICh0ZXN0ZWQgd2l0aCBsZXNzYyA0LjkuMSkKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQWRkIFNjc3NQSFAgdmVyc2lvbiAyICgyLjEuMCkgd2hpbGUga2VlcGluZyB2MSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB5b3VyIGN1cnJlbnQgQ1NTIHN0eWxlc2hlZXRzCiAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICBVbmZvcnR1bmF0ZWx5LCB0aGlzIHZlcnNpb24gZG9lc24ndCBzdXBwb3J0IFNhc3MgbW9kdWxlcyB5ZXQgLSBJZiB5b3UgbmVlZCBTYXNzIG1vZHVsZXMsIHlvdSBjYW4gdXNlIHRoZSBEYXJ0U2FzcyBwcmVwcm9jZXNzb3IKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQnVnIGZpeDogc29tZXRpbWVzIHRoZXJlIHdhcyBtdWx0aXBsZSBzb3VyY2VtYXBzCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9ucyB1cGRhdGVzCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4zLjEtYWxwaGExPC9zdHJvbmc+IC0gMjAyNS0xMS0wNAogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQWRkZWQgTEVTUy5waHAgZnJvbSBXaWtpbWVkaWEsIHdoaWNoIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiBPeWVqb3JnZSdzIExlc3NQSFAgLSBXYXJuaW5nLCB0aGlzIG9ubHkgd29ya3Mgd2l0aCBQSFA4CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4zLjAtYmV0YTM8L3N0cm9uZz4gLSAyMDE5LTA4LTEzCiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBOZXcgRGFydC1TYXNzIHByZXByb2Nlc3NvciBpbnRlcmZhY2UgLSBSdWJ5IHNhc3MgdXNlcnMgc2hvdWxkIHVwZ3JhZGUgdGhlaXIgc2VydmVyIGFuZCB1c2UgdGhpcyBvbmUgbm93LgogICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgVGhhbmtzIHRvIDxlbT5Ub21hcyBIYWxzIEFtc3J1ZDwvZW0+IGZvciBoZWxwCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIEJ1ZyBmaXhlcyB3aXRoIHNvdXJjZW1hcHMsIG1pbmlmeSBhbmQgYXV0b3ByZWZpeGVyICh0aGUgbGF0ZXIgd2FzIHN0cmlwcGluZyBpdCkgLSBwbGVhc2UgdGVzdCB2YXJpb3VzIGNvbWJpbmF0aW9ucy4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjMuMC1iZXRhMjwvc3Ryb25nPiAtIDIwMTktMDgtMDcKICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFVwZ3JhZGVkIGxpYnM6IFNjc3NQSFAgdi4xLjAuMgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBDTVNNUyAyLjMgY29tcGF0aWJpbGl0eTogd29ya3Mgd2l0aCBEZXNpZ25NYW5hZ2VyIGFuZCBmaWxlLWJhc2VkIHRlbXBsYXRlcyAvIHN0eWxlc2hlZXRzIHdpdGggdGhlIG5ldyB7Y21zX3F1ZXVlX2Nzc30gYW5kIHtjbXNfcmVuZGVyX2Nzc30KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgTm93IGluY2x1ZGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyIGFzIGEgUEhQIEF1dG9wcmVmaXhlciBzbyBpdCBkb2VzIG5vdCByZWx5IG9uIFBvc3RDU1MgYW55bW9yZQogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBVcGRhdGVkIGRvY3MgKHRyYW5zbGF0b3JzIHBsZWFzZSB1cGRhdGUgeW91ciB2ZXJzaW9ucykKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQ29kZSBjbGVhbnVwCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4zLjAtYmV0YTE8L3N0cm9uZz4gLSAyMDE3LTA2LTE5CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Tm93IHdvcmtzIGluIENNU01TIDIuMisgYW5kIHVzZXMgdGhlIGhvb2tzIHN5c3RlbSB0byBwcm9jZXNzIHRoZSBlbnRpcmUgU0NTUy9MRVNTIGNvZGUgZnJvbSB2YXJpb3VzIHN0eWxlc2hlZXRzIGRpcmVjdGx5IGluIHtjbXNfc3R5bGVzaGVldH08L2xpPgogICAgICAgICAgICA8bGk+V2l0aCB0aGUgbmV3IENNU01TIHN0eWxlc2hlZXRzIGhvb2sgeW91IGNhbiBub3cgdXNlIG1hbnkgU2Fzcy9MZXNzIHNvdXJjZSBDU1MgZmlsZXMgaW4gdGhlIERlc2lnbiBtYW5hZ2VyIChub3QgbGltaXRlZCB0byAxIGFueW1vcmUpPC9saT4KICAgICAgICAgICAgPGxpPk5vdyB1c2luZyBBdXRvcHJlZml4ZXIgd2l0aCBQb3N0Y3NzIGRpcmVjdGx5IGZyb20gQ0xJIC0geW91IG11c3QgaW5zdGFsbCBpdCBvbiB5b3VyIHNlcnZlciAoc2VlIHRoZSBDTEkgdG9vbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0Y3NzL2F1dG9wcmVmaXhlcikgLSBCcm93c2VycyBsaXN0IHBhcmFtZXRlciByZW1vdmVkPC9saT4KICAgICAgICAgICAgPGxpPlRoZSBAQENTU1ByZXByb2Nlc3NvckBAIHRhZyBpcyBubyBtb3JlIG5lZWRlZDogdGhlIGVudGlyZSBjb25jYXRlbmF0ZWQgc3R5bGVzaGVldCBpcyBub3cgcHJvY2Vzc2VkIC0gaWYgeW91IGRvbid0IG5lZWQgdGhlIENTU1ByZXByb2Nlc3NvciBtb2R1bGUsIHNpbXBseSByZW1vdmUgaXQgb3IgZGlzYWJsZSBpdC48L2xpPgogICAgICAgICAgICA8bGk+UmVtb3ZlZCB0aGUgaW5zdGFsbGVyIC8gdW5pbnN0YWxsZXIgKG5vdGhpbmcgbW9yZSB0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwgYXMgdGhlcmUgaXMgbm8gbW9yZSBldmVudCBoYW5kbGVyIHRoYW5rcyB0byB0aGUgaG9va3MgbWVjaGFuaXNtKTwvbGk+CiAgICAgICAgICAgIDxsaT5Ob3cgY2xlYXJzIHRoZSBDTVNNUyBjYWNoZSB3aGVuIHRoZSBtb2R1bGUgcHJlZmVyZW5jZXMgYXJlIGNoYW5nZWQ8L2xpPgogICAgICAgICAgICA8bGk+QnVnIGZpeCB3cnQgc291cmNlbWFwIGZpbGVzIGluIFNhc3M8L2xpPgogICAgICAgICAgICA8bGk+U21hbGwgYWRtaW4gbG9vayBjaGFuZ2U8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxzdHJvbmc+Mi4xPC9zdHJvbmc+IC0gMjAxNi0wNS0wOSA6IGJ1ZyBmaXhlcyB3cnQgYWRtaW4gcGFuZWwgbG9vawogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjIuMDwvc3Ryb25nPiAtIDIwMTYtMDEtMjU6IHNheSBoZWxsbyB0byBTQVNTIHRocm91Z2ggY29tbWFuZCBsaW5lIGFuZCBzY3NzcGhwIQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPkFkZGVkIFNhc3MgZnJvbSBjb21tYW5kIGxpbmUgKyBTY3NzUEhQPC9saT4KICAgICAgICAgICAgPGxpPkJ1ZyBmaXhlczwvbGk+CiAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgQ01TTVMyIC0gTm90ZTogb25seSBvbmUgc3R5bHNoZWV0IGlzIGFsbG93ZWQgaW4gb3JkZXIgdG8gd29yayBpbiBDTVNNUyAyPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjEuNC4xPC9zdHJvbmc+IC0gMjAxNi0wMS0xODogYnVnIGZpeCByZWxhdGVkIHRvIHNtYXJ0eSBkZWxpbWl0ZXJzICgiW1siIGFuZCAiXV0iKQogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjEuNDwvc3Ryb25nPiAtIDIwMTYtMDEtMDg6CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+TWluaW1hbCBDTVMgdmVyc2lvbiA9IDIuMS4xPC9saT4KICAgICAgICAgICAgPGxpPk5vdyB1c2VzIHRoZSBTdHlsZXNoZWV0UHJlQ29tcGlsZSBldmVudCBpbnN0ZWFkIG9mIHRoZSBTbWFydHlQcmVDb21waWxlPC9saT4KICAgICAgICAgICAgPGxpPlNvbWUgYnVnIGZpeGUgKGRlZmF1bHQgUHJlUHJvY2Vzc29yIGJlY29tZSBPeWVqb3JnZXMgb25lKTwvbGk+CiAgICAgICAgICAgIDxsaT5VcGRhdGVkIHRvIE95ZWpvcmdlJ3MgTGVzcy5waHAgdi4gMS43LjAuMTAgLSBwbGVhc2UgdGVzdCE8L2xpPgogICAgICAgICAgICA8bGk+UmVtb3ZlZCB0aGUgLXggKGNvbXByZXNzKSBvcHRpb24gZnJvbSBMZXNzIGNvbW1hbmQgbGluZSBjb21waWxlciBQcmVwcm9jZXNzb3IgYXMgaXQncyBub3cgZGVwcmVjYXRlZCAtIHlvdSBjYW4gdXNlIHRoZSBlbWJlZGVkIG1pbmlmaWVyPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT48c3Ryb25nPjEuMzwvc3Ryb25nPiAtIDIwMTUtMDEtMjA6IGFkZCBzdXBwb3J0IGZvciBBdXRvcHJlZml4IGZvciB0aGUgTGVzc2MgY29tbWFuZCBsaW5lIC0gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0Y3NzL2F1dG9wcmVmaXhlciAtIGNoZWNrIG91dCBuZXcgb3B0aW9ucyBvbiB0aGUgYWRtaW4gcGFuZWwgLSBwbGVhc2UgdGVzdCB3aXRoIHlvdXIgdmVyc2lvbiBvZiBMZXNzYzwvbGk+CiAgICA8bGk+PHN0cm9uZz4xLjI8L3N0cm9uZz4gLSAyMDE0LTA5LTI1OiB1cGRhdGUgdG8gdGhlIHBhdGhzIC8gTm93IHRoZSBpbmNsdWRlIGRpciBpcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBwYXRoIChub3QgdGhlIHVwbG9hZHMgYW55bW9yZSkgLSBQbGVhc2UgdXBkYXRlIHlvdXIgY29uZmlndXJhdGlvbiB0byBhZGQgPHN0cm9uZz51cGxvYWRzLzwvc3Ryb25nPiBpZiBuZWVkZWQhPGJyPgogICAgICAgIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBwbGFjZSB5b3VyIGxlc3MgZmlsZXMgaW4gYW5vdGhlciBkaXIgdGhhdCB0aGUgdXBsb2Fkcy8gb25lCiAgICA8L2xpPgogICAgPGxpPjxzdHJvbmc+MS4xPC9zdHJvbmc+IC0gMjAxNC0wOS0wMzogQWRkIFNtYXJ0eSBzdXBwb3J0IC0gTm90ZSB0aGF0IHRoZSBtb2R1bGUgbm93IHBsdWdzIG9uIHRoZSBTbWFydHlQcmVDb21waWxlIGV2ZW50IChiZWZvcmUgaXQgd2FzIFNtYXJ0eVBvc3RDb21waWxlKSAtIFRoaXMgbmVlZHMgdGVzdHM8L2xpPgogICAgPGxpPjxzdHJvbmc+MS4wLjE8L3N0cm9uZz4gLSAyMDE0LTA5LTAzOiBCdWcgZml4ZXM8L2xpPgogICAgPGxpPjxzdHJvbmc+MS4wPC9zdHJvbmc+IC0gMjAxNC0wOS0wMjogSW5pdGlhbCAxLjAgcmVsZWFzZSAtIFBsZWFzZSB0ZXN0IGFuZCBnaXZlIG1lIGZlZWRiYWNrPC9saT4KPC91bD4KPGJyIC8+]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgcmV0dXJuOwoKCgppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKQp7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJlcHJvY2Vzc29yJywgJHBhcmFtc1sncHJlcHJvY2Vzc29yJ10pOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ltcG9ydF9kaXJzJywgJHBhcmFtc1snaW1wb3J0X2RpcnMnXSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWluaWZ5JywgJHBhcmFtc1snbWluaWZ5J10pOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dlbmVyYXRlX3NvdXJjZW1hcCcsICRwYXJhbXNbJ2dlbmVyYXRlX3NvdXJjZW1hcCddKTsKCQoJLy8gQXV0b3ByZWZpeGVyCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX2F1dG9wcmVmaXhlcicsICRwYXJhbXNbJ3VzZV9hdXRvcHJlZml4ZXInXSk7CgoKCWNtc21zKCktPmNsZWFyX2NhY2hlZF9maWxlcygtMSk7CiAgLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiAgYXVkaXQoJycsICdTeXN0ZW0gbWFpbnRlbmFuY2UnLCAnQ2FjaGUgY2xlYXJlZCBhZnRlciBDU1NQcmVwcm9jZXNzb3IgcHJlZmVyZW5jZXMgY2hhbmdlJyk7CgkKCSR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygncHJlZmVyZW5jZXNfc2V0JykpOwp9CgoKCgoKLy8gUmV0cmlldmUgdGhlIGF2YWlsYWJsZSBwcmVwcm9jZXNzb3JzIGluIHRoZSBkaXJlY3RvcnkgInByZXByb2Nlc3NvcnMiCiRwcmVwcm9jZXNzb3JzID0gYXJyYXkoKTsKCiRyb290ID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLCAncHJlcHJvY2Vzc29ycycpOwokc2VhcmNoID0gY21zX2pvaW5fcGF0aCgkcm9vdCwgJyonKTsKJGRpcnMgPSBnbG9iKCRzZWFyY2gsIEdMT0JfT05MWURJUik7CgppZiAoJGRpcnMpCnsKCWZvcmVhY2ggKCRkaXJzIGFzICRvbmUpCgl7CgkJJHByZXByb2Nlc3NvciA9IGJhc2VuYW1lKCRvbmUpOwoJCQoJCS8vIFNlYXJjaCBpbmZvIDogbmFtZSwgbG9nbywgLi4uCgkJJGNsYXNzX25hbWUgPSAnUHJlcHJvY2Vzc29yXycuJHByZXByb2Nlc3NvcjsKCQlyZXF1aXJlX29uY2UoY21zX2pvaW5fcGF0aCgkcm9vdCwgJHByZXByb2Nlc3NvciwgJ2NsYXNzLicuJGNsYXNzX25hbWUuJy5waHAnKSk7CgkJCgkJJG9iaiA9IG5ldyBzdGRDbGFzczsKCQkkb2JqLT5kaXIgPSAkcHJlcHJvY2Vzc29yOwoJCSRvYmotPmZyaWVuZGx5X25hbWUgPSAkY2xhc3NfbmFtZTo6RlJJRU5ETFlfTkFNRTsKCQkkb2JqLT5kZXNjcmlwdGlvbiA9ICRjbGFzc19uYW1lOjpERVNDUklQVElPTjsKCQkkb2JqLT5hdXRob3IgPSAkY2xhc3NfbmFtZTo6QVVUSE9SOwoJCSRvYmotPndlYnNpdGUgPSAkY2xhc3NfbmFtZTo6V0VCU0lURTsKCQkKCQkkbG9nbyA9ICRjbGFzc19uYW1lOjpMT0dPOwoJCWlmICghZW1wdHkoJGxvZ28pKQoJCQkkb2JqLT5sb2dvID0gJGxvZ287CgkJCgkJJG5vdGUgPSAkY2xhc3NfbmFtZTo6Tk9URTsKCQlpZiAoIWVtcHR5KCRub3RlKSkKCQkJJG9iai0+bm90ZSA9ICRub3RlOwoJCQoJCSRwcmVwcm9jZXNzb3JzWyRjbGFzc19uYW1lOjpQUklPUklUWV0gPSAkb2JqOwoJfQoJLy8gT3JkZXIgYnkgcHJpb3JpdHkKCWtzb3J0KCRwcmVwcm9jZXNzb3JzKTsKCQoJJGFzc2lnblsncHJlcHJvY2Vzc29ycyddID0gJHByZXByb2Nlc3NvcnM7Cn0KCi8vIEN1cnJlbnQgcHJlcHJvY2Vzc29yCiRhc3NpZ25bJ2N1cnJlbnRfcHJlcHJvY2Vzc29yJ10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJlcHJvY2Vzc29yJywgJ0lMZXNzJyk7CiRhc3NpZ25bJ2ltcG9ydF9kaXJzJ10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1wb3J0X2RpcnMnLCAnJyk7CiRhc3NpZ25bJ21pbmlmeSddID0gICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtaW5pZnknLCAwKTsKJGFzc2lnblsnZ2VuZXJhdGVfc291cmNlbWFwJ10gPSAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2dlbmVyYXRlX3NvdXJjZW1hcCcsIDApOwoKLy8gQXV0b3ByZWZpeGVyCiRhc3NpZ25bJ3VzZV9hdXRvcHJlZml4ZXInXSA9ICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX2F1dG9wcmVmaXhlcicsIDApOwoKCgovLyBDTVNNUyAxLjExIGNvbXBhdGliaWxpdHkKJGFzc2lnblsnbW9kJ10gPSAkdGhpczsKJGFzc2lnblsnZm9ybV9zdGFydCddID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdkZWZhdWx0YWRtaW4nKTsKJGFzc2lnblsnZm9ybV9lbmQnXSA9ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgpjbXNtcygpLT5HZXRTbWFydHkoKS0+YXNzaWduKCRhc3NpZ24pOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwcmVmZXJlbmNlcy50cGwnKTsKCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/admin_css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/admin_css/csspreprocessor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZmllbGRzZXQgewoJcGFkZGluZzogMjVweDsKfQoKLnByZXByb2Nlc3NvciB7CglkaXNwbGF5OiBibG9jazsKCW92ZXJmbG93OiBoaWRkZW47Cgl3aWR0aDogYXV0bzsKCWJhY2tncm91bmQ6ICNkZGQ7Cglib3JkZXItcmFkaXVzOiA1cHg7CgltYXJnaW46IDAgMCAxMHB4OwoJY3Vyc29yOiBwb2ludGVyOwp9CgoucHJlcHJvY2Vzc29yIGxhYmVsLCAucHJlcHJvY2Vzc29yIGRpdi5kZXNjcmlwdGlvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglmbG9hdDogbGVmdDsKCXBhZGRpbmctdG9wOiAxMHB4OwoJcGFkZGluZy1ib3R0b206IDEwcHgKfQoKLyoucHJlcHJvY2Vzc29yIGxhYmVsIHt3aWR0aDogMjEwcHg7IHJpZ2h0OiAyMTBweDsgX3JpZ2h0OiAwcHg7IG1hcmdpbjogMCAwIDAgLTEwMCV9Ci5wcmVwcm9jZXNzb3IgbGFiZWwgLmlucHV0X3JhZGlvIHt0b3A6IDVweH0qLwoucHJlcHJvY2Vzc29yIC5pbnB1dF9yYWRpbyB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglwYWRkaW5nLXRvcDogMzBweDsKCglpbnB1dCB7CgkJd2lkdGg6IDMwcHg7CgkJaGVpZ2h0OiAzMHB4OwoJCWN1cnNvcjogcG9pbnRlcjsKCX0KCn0KCi5wcmVwcm9jZXNzb3IgLmxvZ28gewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJdGV4dC1hbGlnbjogY2VudGVyOwp9CgoucHJlcHJvY2Vzc29yIGltZyB7CgltYXgtd2lkdGg6IDgwJTsKCWhlaWdodDogYXV0bzsKCW1hcmdpbjogMTVweCAwOwp9CgoucHJlcHJvY2Vzc29yIGgyIHsKCW1hcmdpbi10b3A6IDAKfQo=]]></data>
	</file>
	<file>
	  <filename>/admin_css/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/CSSPreprocessor.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENTU1ByZXByb2Nlc3NvcgojIEF1dGhvcjogQWlyZWxpYnJlIC8gTWF0aGlldSBNdXRocyAtIHd3dy5haXJlbGlicmUubmV0CiMgQSBtb2R1bGUgdG8gaGVscCBkZXNpZ25lcnMgdG8gdXNlIENTUyBQcmVwcm9jZXNzb3IgaW4gb3JkZXIgdG8gcHJvY2VzcwojIExFU1Mgb3IgU0FTUyAobGF0ZXIpIGNvZGUuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jdXN0b21ncwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKdXNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxBdXRvcHJlZml4ZXI7CgpjbGFzcyBDU1NQcmVwcm9jZXNzb3IgZXh0ZW5kcyBDTVNNb2R1bGUKewoJZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewoJCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsKICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmFkZF9ob29rKCdDb3JlOjpTdHlsZXNoZWV0UG9zdFJlbmRlcicsIFskdGhpcywgJ1J1blByZXByb2Nlc3NvciddICk7CiAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjphZGRfaG9vaygnQ29yZTo6UG9zdFByb2Nlc3NDU1MnLCBbJHRoaXMsICdSdW5QcmVwcm9jZXNzb3InXSApOwoJfQoKCWZ1bmN0aW9uIEdldFZlcnNpb24oKSB7IHJldHVybiAnMy4yLjEnOyB9CglmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcyLjIuMjInOyB9CglmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7fQoJZnVuY3Rpb24gR2V0SGVscCgpeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTt9CglmdW5jdGlvbiBHZXRBdXRob3IoKSB7IHJldHVybiAnQWlyZSBsaWJyZSAtIE1hdGhpZXUgTXV0aHMnOyB9CiAgICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjb250YWN0QGFpcmVsaWJyZS5uZXQnOyB9CgogICAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgewoJCXJldHVybiBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKS4nL2RvYy9jaGFuZ2Vsb2cuaHRtbCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCkgeyByZXR1cm4gZmFsc2U7IH0KCgogICAgICAvLyBBZG1pbiBwYXJhbXMKICAgICAgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiB0cnVlOyB9CiAgICAgIGZ1bmN0aW9uIElzQWRtaW5Pbmx5KCkgeyByZXR1cm4gZmFsc2U7IH0KCiAgICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKSB7IHJldHVybiAnbGF5b3V0JzsgfQogICAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgCiAgICB7CgkJcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBTdHlsZXNoZWV0cycpOwogICAgfQoKICAgIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKSAKICAgIHsKICAgICAgICAkY3NzRmlsZSA9IGNtc19qb2luX3BhdGgoJHRoaXMtPmdldE1vZHVsZVBhdGgoKSwgJ2FkbWluX2NzcycsICdjc3NwcmVwcm9jZXNzb3IuY3NzJyk7CiAgICAgICAgJGNzc1VybCA9IHN0cl9yZXBsYWNlKENNU19ST09UX1BBVEgsIENNU19ST09UX1VSTCwgJGNzc0ZpbGUpOwogICAgICAgICRoZWFkZXIgPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSInIC4gJGNzc1VybCAuICciPic7CgkJcmV0dXJuICRoZWFkZXI7CiAgICB9CgoKCiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAvLyBOT04tQVBJIENVU1RPTSBGVU5DVElPTlMKICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0UHJlcHJvY2Vzc29yKCkKICAgIHsKCQkkcHJlcHJvY2Vzc29yX25hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJlcHJvY2Vzc29yJywgJ0xlc3NQSFBPeWVqb3JnZScpOwoKCQlyZXF1aXJlX29uY2UoY21zX2pvaW5fcGF0aChfX0RJUl9fLCAncHJlcHJvY2Vzc29ycycsICRwcmVwcm9jZXNzb3JfbmFtZSwgJ2NsYXNzLlByZXByb2Nlc3Nvcl8nIC4gJHByZXByb2Nlc3Nvcl9uYW1lIC4gJy5waHAnKSk7CgoJCSRjbGFzc19uYW1lID0gJ1ByZVByb2Nlc3Nvcl8nIC4gJHByZXByb2Nlc3Nvcl9uYW1lOwoJCSRvYmogPSBuZXcgJGNsYXNzX25hbWUoKTsKCgkJJG9iai0+TG9hZCgpOwoKCQlyZXR1cm4gJG9iajsKICAgIH0KCgoKCiAgICAvLyBSdW4gdGhlIHByZXByb2Nlc3NvcgogICAgcHVibGljIGZ1bmN0aW9uIFJ1blByZXByb2Nlc3NvcigkcGFyYW1zKQogICAgewoJCS8vIFByZXByb2Nlc3NvciBsb2FkIGFuZCBydW4KCQlpZiAoJHByZXByb2Nlc3NvciA9ICR0aGlzLT5HZXRQcmVwcm9jZXNzb3IoKSkKCQl7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkcGFyYW1zKSkgewogICAgICAgICAgICAgICAgJGNzc0NvbnRlbnQgPSAmJHBhcmFtc1snY29udGVudCddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNzc0NvbnRlbnQgPSAmJHBhcmFtczsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcHJlcHJvY2Vzc29yLT5jb21waWxlQ1NTKCRjc3NDb250ZW50KTsKCgkJCWlmICggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9hdXRvcHJlZml4ZXInLCAwKSApCgkJCXsKICAgICAgICAgICAgICAgIHJlcXVpcmVfb25jZShjbXNfam9pbl9wYXRoKF9fRElSX18sJ2xpYicsJ3ZlbmRvcicsICdhdXRvbG9hZC5waHAnKSk7CiAgICAgICAgICAgICAgICAkYXV0b1ByZWZpeGVyID0gbmV3IEF1dG9wcmVmaXhlcigkY3NzQ29udGVudCk7CiAgICAgICAgICAgICAgICAkY3NzQ29udGVudCA9ICRhdXRvUHJlZml4ZXItPmNvbXBpbGUoKTsKCQkJfQoKCQkJLy8gTWluaWZ5CgkJCWlmICgkcHJlcHJvY2Vzc29yLT5taW5pZnkpIHsKCQkJCSRwcmVwcm9jZXNzb3ItPm1pbmlmeUNTUygkY3NzQ29udGVudCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFNvdXJjZW1hcCA/CiAgICAgICAgICAgIGlmICgkcHJlcHJvY2Vzc29yLT5taW5pZnkgJiYgJHByZXByb2Nlc3Nvci0+Z2VuZXJhdGVfc291cmNlbWFwICYmICRwcmVwcm9jZXNzb3ItPnNvdXJjZV9tYXBfdXJsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBBbmQgYWRkIHNvdXJjZW1hcCBiZWNhdXNlIG1pbmlmeSByZW1vdmVzIGNvbW1lbnRzCiAgICAgICAgICAgICAgICAkY3NzQ29udGVudCAuPSAiLyojIHNvdXJjZU1hcHBpbmdVUkw9IiAuICRwcmVwcm9jZXNzb3ItPnNvdXJjZV9tYXBfdXJsIC4gIiAqLyI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkY3NzQ29udGVudDsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/changelog.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogICAgPGxpPgogICAgICAgIDxzdHJvbmc+My4yLjE8L3N0cm9uZz4gLSAyMDI2LTExLTEwCiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBVcGRhdGVkIExlc3NDb21tYW5kICh0ZXN0ZWQgd2l0aCBsZXNzYyA0LjkuMSkKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQWRkIFNjc3NQSFAgdmVyc2lvbiAyICgyLjEuMCkgd2hpbGUga2VlcGluZyB2MSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB5b3VyIGN1cnJlbnQgQ1NTIHN0eWxlc2hlZXRzCiAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICBVbmZvcnR1bmF0ZWx5LCB0aGlzIHZlcnNpb24gZG9lc24ndCBzdXBwb3J0IFNhc3MgbW9kdWxlcyB5ZXQgLSBJZiB5b3UgbmVlZCBTYXNzIG1vZHVsZXMsIHlvdSBjYW4gdXNlIHRoZSBEYXJ0U2FzcyBwcmVwcm9jZXNzb3IKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQnVnIGZpeDogc29tZXRpbWVzIHRoZXJlIHdhcyBtdWx0aXBsZSBzb3VyY2VtYXBzCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9ucyB1cGRhdGVzCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4zLjEtYWxwaGExPC9zdHJvbmc+IC0gMjAyNS0xMS0wNAogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQWRkZWQgTEVTUy5waHAgZnJvbSBXaWtpbWVkaWEsIHdoaWNoIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiBPeWVqb3JnZSdzIExlc3NQSFAgLSBXYXJuaW5nLCB0aGlzIG9ubHkgd29ya3Mgd2l0aCBQSFA4CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4zLjAtYmV0YTM8L3N0cm9uZz4gLSAyMDE5LTA4LTEzCiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBOZXcgRGFydC1TYXNzIHByZXByb2Nlc3NvciBpbnRlcmZhY2UgLSBSdWJ5IHNhc3MgdXNlcnMgc2hvdWxkIHVwZ3JhZGUgdGhlaXIgc2VydmVyIGFuZCB1c2UgdGhpcyBvbmUgbm93LgogICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgVGhhbmtzIHRvIDxlbT5Ub21hcyBIYWxzIEFtc3J1ZDwvZW0+IGZvciBoZWxwCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIEJ1ZyBmaXhlcyB3aXRoIHNvdXJjZW1hcHMsIG1pbmlmeSBhbmQgYXV0b3ByZWZpeGVyICh0aGUgbGF0ZXIgd2FzIHN0cmlwcGluZyBpdCkgLSBwbGVhc2UgdGVzdCB2YXJpb3VzIGNvbWJpbmF0aW9ucy4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjMuMC1iZXRhMjwvc3Ryb25nPiAtIDIwMTktMDgtMDcKICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFVwZ3JhZGVkIGxpYnM6IFNjc3NQSFAgdi4xLjAuMgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBDTVNNUyAyLjMgY29tcGF0aWJpbGl0eTogd29ya3Mgd2l0aCBEZXNpZ25NYW5hZ2VyIGFuZCBmaWxlLWJhc2VkIHRlbXBsYXRlcyAvIHN0eWxlc2hlZXRzIHdpdGggdGhlIG5ldyB7Y21zX3F1ZXVlX2Nzc30gYW5kIHtjbXNfcmVuZGVyX2Nzc30KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgTm93IGluY2x1ZGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyIGFzIGEgUEhQIEF1dG9wcmVmaXhlciBzbyBpdCBkb2VzIG5vdCByZWx5IG9uIFBvc3RDU1MgYW55bW9yZQogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBVcGRhdGVkIGRvY3MgKHRyYW5zbGF0b3JzIHBsZWFzZSB1cGRhdGUgeW91ciB2ZXJzaW9ucykKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQ29kZSBjbGVhbnVwCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4zLjAtYmV0YTE8L3N0cm9uZz4gLSAyMDE3LTA2LTE5CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Tm93IHdvcmtzIGluIENNU01TIDIuMisgYW5kIHVzZXMgdGhlIGhvb2tzIHN5c3RlbSB0byBwcm9jZXNzIHRoZSBlbnRpcmUgU0NTUy9MRVNTIGNvZGUgZnJvbSB2YXJpb3VzIHN0eWxlc2hlZXRzIGRpcmVjdGx5IGluIHtjbXNfc3R5bGVzaGVldH08L2xpPgogICAgICAgICAgICA8bGk+V2l0aCB0aGUgbmV3IENNU01TIHN0eWxlc2hlZXRzIGhvb2sgeW91IGNhbiBub3cgdXNlIG1hbnkgU2Fzcy9MZXNzIHNvdXJjZSBDU1MgZmlsZXMgaW4gdGhlIERlc2lnbiBtYW5hZ2VyIChub3QgbGltaXRlZCB0byAxIGFueW1vcmUpPC9saT4KICAgICAgICAgICAgPGxpPk5vdyB1c2luZyBBdXRvcHJlZml4ZXIgd2l0aCBQb3N0Y3NzIGRpcmVjdGx5IGZyb20gQ0xJIC0geW91IG11c3QgaW5zdGFsbCBpdCBvbiB5b3VyIHNlcnZlciAoc2VlIHRoZSBDTEkgdG9vbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0Y3NzL2F1dG9wcmVmaXhlcikgLSBCcm93c2VycyBsaXN0IHBhcmFtZXRlciByZW1vdmVkPC9saT4KICAgICAgICAgICAgPGxpPlRoZSBAQENTU1ByZXByb2Nlc3NvckBAIHRhZyBpcyBubyBtb3JlIG5lZWRlZDogdGhlIGVudGlyZSBjb25jYXRlbmF0ZWQgc3R5bGVzaGVldCBpcyBub3cgcHJvY2Vzc2VkIC0gaWYgeW91IGRvbid0IG5lZWQgdGhlIENTU1ByZXByb2Nlc3NvciBtb2R1bGUsIHNpbXBseSByZW1vdmUgaXQgb3IgZGlzYWJsZSBpdC48L2xpPgogICAgICAgICAgICA8bGk+UmVtb3ZlZCB0aGUgaW5zdGFsbGVyIC8gdW5pbnN0YWxsZXIgKG5vdGhpbmcgbW9yZSB0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwgYXMgdGhlcmUgaXMgbm8gbW9yZSBldmVudCBoYW5kbGVyIHRoYW5rcyB0byB0aGUgaG9va3MgbWVjaGFuaXNtKTwvbGk+CiAgICAgICAgICAgIDxsaT5Ob3cgY2xlYXJzIHRoZSBDTVNNUyBjYWNoZSB3aGVuIHRoZSBtb2R1bGUgcHJlZmVyZW5jZXMgYXJlIGNoYW5nZWQ8L2xpPgogICAgICAgICAgICA8bGk+QnVnIGZpeCB3cnQgc291cmNlbWFwIGZpbGVzIGluIFNhc3M8L2xpPgogICAgICAgICAgICA8bGk+U21hbGwgYWRtaW4gbG9vayBjaGFuZ2U8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxzdHJvbmc+Mi4xPC9zdHJvbmc+IC0gMjAxNi0wNS0wOSA6IGJ1ZyBmaXhlcyB3cnQgYWRtaW4gcGFuZWwgbG9vawogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjIuMDwvc3Ryb25nPiAtIDIwMTYtMDEtMjU6IHNheSBoZWxsbyB0byBTQVNTIHRocm91Z2ggY29tbWFuZCBsaW5lIGFuZCBzY3NzcGhwIQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPkFkZGVkIFNhc3MgZnJvbSBjb21tYW5kIGxpbmUgKyBTY3NzUEhQPC9saT4KICAgICAgICAgICAgPGxpPkJ1ZyBmaXhlczwvbGk+CiAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgQ01TTVMyIC0gTm90ZTogb25seSBvbmUgc3R5bHNoZWV0IGlzIGFsbG93ZWQgaW4gb3JkZXIgdG8gd29yayBpbiBDTVNNUyAyPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjEuNC4xPC9zdHJvbmc+IC0gMjAxNi0wMS0xODogYnVnIGZpeCByZWxhdGVkIHRvIHNtYXJ0eSBkZWxpbWl0ZXJzICgiW1siIGFuZCAiXV0iKQogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjEuNDwvc3Ryb25nPiAtIDIwMTYtMDEtMDg6CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+TWluaW1hbCBDTVMgdmVyc2lvbiA9IDIuMS4xPC9saT4KICAgICAgICAgICAgPGxpPk5vdyB1c2VzIHRoZSBTdHlsZXNoZWV0UHJlQ29tcGlsZSBldmVudCBpbnN0ZWFkIG9mIHRoZSBTbWFydHlQcmVDb21waWxlPC9saT4KICAgICAgICAgICAgPGxpPlNvbWUgYnVnIGZpeGUgKGRlZmF1bHQgUHJlUHJvY2Vzc29yIGJlY29tZSBPeWVqb3JnZXMgb25lKTwvbGk+CiAgICAgICAgICAgIDxsaT5VcGRhdGVkIHRvIE95ZWpvcmdlJ3MgTGVzcy5waHAgdi4gMS43LjAuMTAgLSBwbGVhc2UgdGVzdCE8L2xpPgogICAgICAgICAgICA8bGk+UmVtb3ZlZCB0aGUgLXggKGNvbXByZXNzKSBvcHRpb24gZnJvbSBMZXNzIGNvbW1hbmQgbGluZSBjb21waWxlciBQcmVwcm9jZXNzb3IgYXMgaXQncyBub3cgZGVwcmVjYXRlZCAtIHlvdSBjYW4gdXNlIHRoZSBlbWJlZGVkIG1pbmlmaWVyPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT48c3Ryb25nPjEuMzwvc3Ryb25nPiAtIDIwMTUtMDEtMjA6IGFkZCBzdXBwb3J0IGZvciBBdXRvcHJlZml4IGZvciB0aGUgTGVzc2MgY29tbWFuZCBsaW5lIC0gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0Y3NzL2F1dG9wcmVmaXhlciAtIGNoZWNrIG91dCBuZXcgb3B0aW9ucyBvbiB0aGUgYWRtaW4gcGFuZWwgLSBwbGVhc2UgdGVzdCB3aXRoIHlvdXIgdmVyc2lvbiBvZiBMZXNzYzwvbGk+CiAgICA8bGk+PHN0cm9uZz4xLjI8L3N0cm9uZz4gLSAyMDE0LTA5LTI1OiB1cGRhdGUgdG8gdGhlIHBhdGhzIC8gTm93IHRoZSBpbmNsdWRlIGRpciBpcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBwYXRoIChub3QgdGhlIHVwbG9hZHMgYW55bW9yZSkgLSBQbGVhc2UgdXBkYXRlIHlvdXIgY29uZmlndXJhdGlvbiB0byBhZGQgPHN0cm9uZz51cGxvYWRzLzwvc3Ryb25nPiBpZiBuZWVkZWQhPGJyPgogICAgICAgIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBwbGFjZSB5b3VyIGxlc3MgZmlsZXMgaW4gYW5vdGhlciBkaXIgdGhhdCB0aGUgdXBsb2Fkcy8gb25lCiAgICA8L2xpPgogICAgPGxpPjxzdHJvbmc+MS4xPC9zdHJvbmc+IC0gMjAxNC0wOS0wMzogQWRkIFNtYXJ0eSBzdXBwb3J0IC0gTm90ZSB0aGF0IHRoZSBtb2R1bGUgbm93IHBsdWdzIG9uIHRoZSBTbWFydHlQcmVDb21waWxlIGV2ZW50IChiZWZvcmUgaXQgd2FzIFNtYXJ0eVBvc3RDb21waWxlKSAtIFRoaXMgbmVlZHMgdGVzdHM8L2xpPgogICAgPGxpPjxzdHJvbmc+MS4wLjE8L3N0cm9uZz4gLSAyMDE0LTA5LTAzOiBCdWcgZml4ZXM8L2xpPgogICAgPGxpPjxzdHJvbmc+MS4wPC9zdHJvbmc+IC0gMjAxNC0wOS0wMjogSW5pdGlhbCAxLjAgcmVsZWFzZSAtIFBsZWFzZSB0ZXN0IGFuZCBnaXZlIG1lIGZlZWRiYWNrPC9saT4KPC91bD4K]]></data>
	</file>
	<file>
	  <filename>/doc/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgojIEMKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydjc3NfcHJlcHJvY2Vzc29yJ10gPSAnQ1NTIFByZXByb2Nlc3Nvcic7CiRsYW5nWydjaG9vc2VfcHJlcHJvY2Vzc29yJ10gPSAnQ2hvb3NlIHRoZSBwcmVwcm9jZXNzb3IgeW91IHdhbnQgdG8gdXNlJzsKCgojIEYKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NTUyBQcmVwcm9jZXNzb3InOwoKCiMgRwokbGFuZ1snZ2VuZXJhdGVfc291cmNlbWFwJ10gPSAnU291cmNlIG1hcCc7CiRsYW5nWydnZW5lcmF0ZV9zb3VyY2VtYXBfbGFiZWwnXSA9ICdHZW5lcmF0ZSBhIHNvdXJjZSBtYXAsIGlmIHRoZSBQcmVQcm9jZXNzb3Igc3VwcG9ydHMgaXQnOwoKCiMgSAoKCgojIEkKJGxhbmdbJ2ltcG9ydF9kaXJzJ10gPSAnRGlyZWN0b3JpZXMgY29udGFpbmluZyBMRVNTL1NBU1MgZmlsZXMgdG8gaW5jbHVkZSBpbiBjb21waWxhdGlvbiAtIFJlbGF0aXZlIHRvIHRoZSA8c3Ryb25nPnJvb3Q8L3N0cm9uZz4gZGlyIC0gQ29tbWEgc2VwYXJhdGVkIGxpc3QnOwoKIyBNCiRsYW5nWydtaW5pZnknXSA9ICdNaW5pZnknOwokbGFuZ1snbWluaWZ5X2xhYmVsJ10gPSAnTWluaWZ5IHRoZSBDU1MnOwoKIyBOCiRsYW5nWydub3RlJ10gPSAnTm90ZTonOwoKCiMgTwokbGFuZ1snb3B0aW9ucyddID0gJ09wdGlvbnMnOwoKCiMgUAokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydwcmVmZXJlbmNlc19zZXQnXSA9ICdQcmVmZXJlbmNlcyBzYXZlZCc7CgoKCgojIFMKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CgoKIyBVCiRsYW5nWyd1c2VfYXV0b3ByZWZpeGVyJ10gPSAnVXNlIFBIUC1BdXRvcHJlZml4ZXIgKG1vcmUgaW5mbzogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlcjwvYT4pJzsKCgoKCgoKJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVAo8aDI+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMj4KPHA+VGhpcyBtb2R1bGUgYWRkcyB0byB0aGUgQ01TTVMgZmlsZS1iYXNlZCBzdHlsZXNoZWV0cyAoQ01TTVMgMi4zKykgYW5kL29yIERlc2lnbk1hbmFnZXIgc29tZSBDU1MgUHJlcHJvY2Vzc29ycywgaW4gb3JkZXIgdG8gY29tcGlsZSBMRVNTIG9yIFNBU1MgbGFuZ3VhZ2VzIChvciBvdGhlciBtYXliZSBsYXRlcikuPC9wPgoKPGgyPkhvdyBkb2VzIGl0IHdvcmsgYW5kIGludGVncmF0ZSBpbiBDTVNNUzwvaDI+CjxwPgoJVGhpcyBtb2R1bGUgaXMgbGF1bmNoZWQgYWZ0ZXIgYWxsIHRoZSBzdHlsZXNoZWV0cyBoYXZlIGJlZW4gY29tYmluZWQgKHRocm91Z2ggY21zX3N0eWxlc2hlZXQgb3IgY21zX3JlbmRlcl9jc3MpLCBhbmQgaXQgdGFrZXMgYWxsIHRoZSBDU1MgY29udGVudCB0byBnaXZlIGl0IHRvIHRoZSBQcmVwcm9jZXNzb3Igb2YgeW91ciBjaG9pY2UuCjwvcD4KPHA+CglLZWVwIGluIG1pbmQgdGhhdCB0aGlzIG1vZHVsZSBwcm9jZXNzZXMgdGhlIGVudGlyZSBzdHlsZXNoZWV0IGFmdGVyIHRoZWlyIGNvbWJpbmF0aW9uLiBObyBtYXR0ZXIgaWYgeW91IHVzZSAxIG9yIDEwIHN0eWxlc2hlZXRzIGluIHlvdXIgZGVzaWduLCB0aGUgcHJlcHJvY2Vzc29yIHdpbGwgb25seSBwcm9jZXNzIGl0IG9uZSB0aW1lLCBhbmQgaXQgd2lsbCBvbmx5IHByb2Nlc3MgaXQgd2hlbiB0aGVyZSdzIGEgY2hhbmdlIGluIG9uZSBvZiB0aGUgaW5jbHVkZWQgc3R5bGVzaGVldC4KPC9wPgoKCjxoMj5Ib3cgRG8gSSBVc2UgSXQ8L2gyPgo8dWw+Cgk8bGk+CgkJRGVmaW5lIHlvdXIgaW1wb3J0IGRpcmVjdG9yaWVzLCBpZiB5b3UgdXNlIGl0LiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW50ZWdyYXRlIEJvb3RzdHJhcCwgeW91IGNhbjoKCQk8b2w+CgkJCTxsaT5QdXQgeW91ciBCb290c3RyYXAgU0FTUyBzb3VyY2UgZmlsZXMgaW4gYXNzZXRzL2Jvb3RzdHJhcC8gKG9yIG1heWJlIGFzc2V0cy90aGVtZXMvTXlUaGVtZU5hbWUvc2Nzcy9ib290c3RyYXAgaWYgeW91IGFyZSB1c2luZyB0aGUgdGhlbWVzIHN5c3RlbSk8L2xpPgoJCQk8bGk+VHlwZSA8c3Ryb25nPjxlbT5hc3NldHMvYm9vdHN0cmFwPC9lbT48L3N0cm9uZz4gaW4gdGhlICJEaXJlY3RvcmllcyBjb250YWluaW5nIExFU1MvU0FTUyBmaWxlcyB0byBpbmNsdWRlIGluIGNvbXBpbGF0aW9uIiAtIE5vIHNsYXNoIGF0IGJlZ2lubmluZyBvciBlbmQ8L2xpPgogICAgICAJCTxsaT4KICAgICAgCQkJQ3JlYXRlIG9uZSBvciBtb3JlICJjdXN0b20iIHN0eWxlc2hlZXQgaW4gdGhlIERlc2lnbiBNYW5hZ2VyIGFuZCBsaW5rIGl0IHRvIHlvdXIgZGVzaWduLgogICAgICAJCQk8YnI+CiAgICAgIAkJCU9SCiAgICAgIAkJCTxicj4KICAgICAgCQkJUXVldWUgeW91ciB2YXJpb3VzIENTUyBpbiB5b3VyIHRlbXBsYXRlIHdpdGgge2Ntc19xdWV1ZV9jc3MgZmlsZT0iYXNzZXRzL3RoZW1lcy9NeVRoZW1lTmFtZS9jc3MvbWFpbi1zdHlsZXNoZWV0LnNjc3MifQogICAgICAJCTwvbGk+CiAgICAgIAkJPGxpPgogICAgICAJCQlVc2Uge2Ntc19zdHlsZXNoZWV0fSBvciB7Y21zX3JlbmRlcl9jc3N9IGFjY29yZGluZyB0byBob3cgeW91J3JlIHdvcmtpbmcgd2l0aCBzdHlsZXNoZWV0cyBpbiBDTVMgTWFkZSBTaW1wbGUuIENTUyBQcmVwcm9jZXNzb3Igd29ya3Mgd2l0aCBib3RoLgogICAgICAJCTwvbGk+CgkJPC9vbD4KCTwvbGk+CiAgPGxpPgoJCVNhbWUgY2FuIGJlIGRvbmUgZm9yIEZvdW5kYXRpb246CgkJPG9sPgoJCQk8bGk+UHV0IHlvdXIgRm91bmRhdGlvbiBTQVNTIHNvdXJjZSBmaWxlcyBpbiBhc3NldHMvZm91bmRhdGlvbi9zY3NzPC9saT4KCQkJPGxpPlR5cGUgPHN0cm9uZz48ZW0+YXNzZXRzL2ZvdW5kYXRpb24vc2NzczwvZW0+PC9zdHJvbmc+IGluIHRoZSAiRGlyZWN0b3JpZXMgY29udGFpbmluZyBMRVNTL1NBU1MgZmlsZXMgdG8gaW5jbHVkZSBpbiBjb21waWxhdGlvbiIgLSBObyBzbGFzaCBhdCBiZWdpbm5pbmcgb3IgZW5kPC9saT4KCQkJPGxpPgoJCQkJQ2FsbCB0aGUgZm91bmRhdGlvbiBtaXhpbnMgLyBydWxlcyBpbiB5b3VyIG1haW4gQ1NTIGZpbGUKCQkJPC9saT4KCQk8L29sPgoJPC9saT4KCTxsaT5TdGFydCB1c2luZyBMRVNTIC8gU0FTUyBjb2RlIGluIHlvdXIgc3R5bGVzaGVldHMhPC9saT4KPC91bD4KCgo8aDI+VXBkYXRpbmcgc3R5bGVzaGVldHM8L2gyPgo8cD4KCUlmIHlvdSBtYWtlIGFuIHVwZGF0ZSBvbiBhIERlc2lnbk1hbmFnZXIgb3IgZmlsZS1iYXNlZCBzdHlsZXNoZWV0IChxdWV1ZWQgd2l0aCBjbXNfcXVldWVfY3NzKSwgdGhlIG1vZHVsZSB3aWxsIHByb2Nlc3MgdGhlIHN0eWxlc2hlZXQgYWdhaW4gb24gdGhlIG5leHQgcGFnZSByZWZyZXNoLgo8L3A+CjxwPgoJSG93ZXZlciwgaWYgeW91IGRpZCBtYWtlIGEgY2hhbmdlIGluIHlvdXIgaW1wb3J0ZWQgbGVzcyBmaWxlcywgdGhlIHN5c3RlbSB3aWxsIG5vdCBwZXJmb3JtIGFueSB1cGRhdGUgLSBpbiB0aGlzIGNhc2UsIHlvdSBtdXN0IGNsZWFyIHRoZSBjYWNoZSBvciBzaW1wbHkgc2F2ZSB5b3VyIGRlc2lnbm1hbmFnZXIgc3R5bGVzaGVldCB0byBtYWtlIHRoZSB7Y21zX3N0eWxlc2hlZXR9IHBsdWdpbiBwcm9jZXNzIHRoZSBjc3MgYWdhaW4uCgk8YnI+CglJbiBDTVNNUyAyLjMrIHlvdXIgY2FuIHVzZSB7Y21zX3JlbmRlcl9jc3MgZm9yY2U9dHJ1ZX0gdG8gY29tYmluZSBhbmQgcHJvY2VzcyB0aGUgd2hvbGUgc3R5bGVzaGVldHMgb24gZXZlcnkgcGFnZSByZWZyZXNoICh1c2VmdWwgb24gZGV2ZWxvcG1lbnQpLgo8L3A+CgoKPGgyPlNtYXJ0eSBzdXBwb3J0PC9oMj4KPHA+QXMgdGhpcyBtb2R1bGUgdXNlcyB7Y21zX3N0eWxlc2hlZXR9IGFuZC9vciB7Y21zX3JlbmRlcl9jc3N9LCB5b3UgY2FuIHVzZSBTbWFydHkgdGFncyB3aXRoIFtbIGFuZCBdXSAtIFNtYXJ0eSB3aWxsIGJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlIENTUyBQcmVQcm9jZXNzb3IuPC9wPgoKPGgyPlVzaW5nIFNvdXJjZW1hcHM8L2gyPgo8cD4KCVNvbWUgcHJlcHJvY2Vzc29ycyBjYW4gY3JlYXRlIHNvdXJjZW1hcCBmaWxlcywgaW4gb3JkZXIgdG8gaGVscCB5b3UgZHVyaW5nIGludGVncmF0aW9uLiBEb24ndCBmb3JnZXQgdG8gY29uZmlndXJlIHlvdXIgYnJvd3NlciB0byB1c2UgdGhhdCBmdW5jdGlvbi4gTm90ZSB0aGF0IG9ubHkgaW1wb3J0ZWQgZmlsZXMgd2lsbCBiZSBtYXBwZWQgaW4gdGhlIHNvdXJjZW1hcHMgKHRoaXMgbWF5IGNoYW5nZSBpbiBhIGZ1cnRoZXIgdmVyc2lvbikuPGJyPkRvbid0IGZvcmdldCB0byBkaXNhYmxlIHRoZSBzb3VyY2VtYXBzIGZvciBwcm9kdWN0aW9uLgo8L3A+Cgo8aDI+U2VjdXJpbmcgeW91ciBzY3NzIHNvdXJjZSBmaWxlczwvaDI+CjxwPgoJSW4gcHJvZHVjdGlvbiwgeW91IHNob3VsZCBkaXNhYmxlIHlvdXIgLnNjc3Mgc291cmNlIGZpbGVzIGZyb20gYmVpbmcgdmlld2VkIGluIGEgYnJvd3Nlci4gWW91IG1heSB1c2UgYW4gLmh0YWNjZXNzIHJ1bGUgZm9yIEFwYWNoZSwgbGlrZSB0aGlzIG9uZToKCTxicj4KCTxlbT5SZWRpcmVjdE1hdGNoIDQwMyBeLiovYXNzZXRzLy4qXC5zY3NzJDwvZW0+Cgk8YnI+CglZb3Ugc2hvdWxkIGNvbW1lbnQgdGhpcyBsaW5lIGluIERldmVsb3BtZW50IGlmIHlvdSB3YW50IHRvIHVzZSBTb3VyY2VtYXBzIGJlY2F1c2UgeW91ciBicm93c2VyIHdpbGwgdHJ5IHRvIG9wZW4gaXQgaW4gdGhlIGluc3BlY3Rvci4KPC9wPgoKPGgyPkRlYWN0aXZhdGUgdGhlIG1vZHVsZTwvaDI+CjxwPgoJSWYgeW91IGRvbid0IHdhbnQgdG8gdXNlIGFueSBvZiB0aGUgcHJlcHJvY2Vzc29ycywgcGxlYXNlIHJlbW92ZSBpdCBvciBkaXNhYmxlIGl0IGluIHRoZSBNb2R1bGVzIE1hbmFnZXIgLSBUaGVyZSBhcmUgbm8gImRlYWN0aXZhdGUiIGZ1bmN0aW9uIGJ1aWx0IGluIHRoZSBtb2R1bGUuCjwvcD4KCjxoMj5QcmVwcm9jZXNzb3Igc3dpdGNoPC9oMj4KPHA+CglZb3UgbWF5IHdhbnQgdG8gc3dpdGNoIGZyb20gb25lIHByZXByb2Nlc3NvciB0byBhbm90aGVyIC0gVGhlIG1vZHVsZSBzaG91bGQgY2xlYXIgdGhlIGNhY2hlIG9uIHByZWZlcmVuY2VzIGNoYW5nZSBzbyBvbiB0aGUgbmV4dCBwYWdlIHJlZnJlc2ggaW4geW91ciBicm93c2VyIHRoZSB3aG9sZSBDU1Mgd2lsbCBiZSBwcmVwcm9jZXNzZWQgYWdhaW4uCjwvcD4KCjxoMj5FeHRlbmQgd2l0aCBhbm90aGVyIHByZXByb2Nlc3NvcjwvaDI+CjxwPgoJWW91IGNhbiBjcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGluIHRoZSAicHJlcHJvY2Vzc29ycyIgZGlyZWN0b3J5LCBhbmQgY3JlYXRlIHlvdXIgb3duIGNsYXNzIC0gQ2hlY2sgaG93IHRoZSBidW5kbGVkIHByZXByb2Nlc3NvcnMgYXJlIGludGVncmF0ZWQuCjwvcD4KPHA+RG9uJ3QgZm9yZ2V0IHRvIDxhIGhyZWY9Im1haWx0bzpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmVtYWlsIG1lPC9hPiBpZiB5b3Ugd2FudCB5b3VyIHByZXByb2Nlc3NvciB0byBiZSBhZGRlZCB0byB0aGUgcHJvamVjdCE8L3A+Cgo8aDI+U3VwcG9ydDwvaDI+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+CjxwPgoJSWYgeW91IHdhbnQgdG8gY29udGFjdCBtZTogPGEgaHJlZj0ibWFpbHRvOmNvbnRhY3RAYWlyZWxpYnJlLm5ldCI+Y29udGFjdEBhaXJlbGlicmUubmV0PC9hPgo8L3A+Cgo8aDI+UHJvamVjdCBvbiB0aGUgd2ViPC9oMj4KPHA+WW91IGNhbiBmb2xsb3cgdGhlIHByb2plY3Qgb24gOiA8L3A+Cjx1bD4KCTxsaT5HaXRIdWI6IDxhIGhyZWY9Imh0dHBzOiNnaXRodWIuY29tL2FpcmVsaWJyZS9DU1NQcmVwcm9jZXNzb3IiIHRhcmdldD0iX2JsYW5rIj5odHRwczojZ2l0aHViLmNvbS9haXJlbGlicmUvQ1NTUHJlcHJvY2Vzc29yPC9hPjwvbGk+Cgk8bGk+Q01TTVMgRm9yZ2U6IDxhIGhyZWY9Imh0dHA6I2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jc3NwcmVwcm9jZXNzb3IiIHRhcmdldD0iX2JsYW5rIj5odHRwOiNkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY3NzcHJlcHJvY2Vzc29yPC9hPjwvbGk+CjwvdWw+Cgo8aDI+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMj4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE0LTIwMTcsIE1hdGhpZXUgTXV0aHMgPGFpcmVMaWJyZT4gPGEgaHJlZj0ibWFpbHRvOmNvbnRhY3RAYWlyZWxpYnJlLm5ldCI+Y29udGFjdEBhaXJlbGlicmUubmV0PC9hPiAvIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFpcmVsaWJyZS5uZXQiIHRhcmdldD0iX2JsYW5rIj53d3cuYWlyZWxpYnJlLm5ldDwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6I3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgoKPGgzPlByZXByb2Nlc3NvcnMgY29weXJpZ2h0PC9oMz4KPHA+CglUaGUgYXV0aG9yIG9mIHRoaXMgbW9kdWxlIGRvZXMgbm90IG93biB0aGUgcHJlcHJvY2Vzc29ycyBidW5kbGVkIHdpdGggaXQgLSBQbGVhc2Ugc2VlIGV2ZXJ5IHByZXByb2Nlc3NvcnMgc291cmNlIGNvZGUgLyB3ZWJzaXRlIHRvIGdldCBpbmZvcm1hdGlvbnMgYWJvdXQgbGljZW5jZSBhbmQgY29weXJpZ2h0Lgo8L3A+CjxwPkkganVzdCB3YW50ZWQgdG8gdGhhbmsgYWxsIHRoZSBkZXZlbG9wZXJzIHRoYXQgY29udHJpYnV0ZSB0byB0aGVzZSBwcmVwcm9jZXNzb3JzIHdoaWNoIGFyZSBncmVhdCB0b29scyBmb3IgZGVzaWduZXJzITwvcD4KPGJyPgo8YnI+Cjxicj4KRU9UOwoKCgoKCgoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZXInOw0KJGxhbmdbJ2Nzc19wcmVwcm9jZXNzb3InXSA9ICdQcsOpcHJvY2Vzc2V1ciBDU1MnOw0KJGxhbmdbJ2Nob29zZV9wcmVwcm9jZXNzb3InXSA9ICdDaG9pc2lzc2V6IGxlIHByw6lwcm9jZXNzZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiB1dGlsaXNlcic7DQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnUHLDqXByb2Nlc3NldXIgQ1NTJzsNCiRsYW5nWydnZW5lcmF0ZV9zb3VyY2VtYXAnXSA9ICdGaWNoaWVyIHNvdXJjZW1hcCc7DQokbGFuZ1snZ2VuZXJhdGVfc291cmNlbWFwX2xhYmVsJ10gPSAnR8OpbsOpcmVyIHVuIHNvdXJjZSBtYXAsIHNpIGxlIHByw6lwcm9jZXNzZXVyIGxlIHN1cHBvcnRlJzsNCiRsYW5nWydpbXBvcnRfZGlycyddID0gJ1LDqXBlcnRvaXJlcyBjb250ZW5hbnQgZGVzIGZpY2hpZXJzIExFU1MvU0FTUyDDoCBpbmNsdXJlIGxvcnMgZGUgbGEgY29tcGlsYXRpb24gLSBSZWxhdGlmIGF1IHLDqXBlcnRvaXJlIHJhY2luZSBkdSBDTVMgLSBMaXN0ZSBzw6lwYXLDqWUgcGFyIGRlcyB2aXJndWxlcyc7DQokbGFuZ1snbWluaWZ5J10gPSAnTWluaWZpZXInOw0KJGxhbmdbJ21pbmlmeV9sYWJlbCddID0gJ01pbmlmaWVyIGxlIENTUyc7DQokbGFuZ1snbm90ZSddID0gJ05vdGUgOic7DQokbGFuZ1snb3B0aW9ucyddID0gJ09wdGlvbnMmbmJzcDsnOw0KJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUHLDqWbDqXJlbmNlcyc7DQokbGFuZ1sncHJlZmVyZW5jZXNfc2V0J10gPSAnUHLDqWbDqXJlbmNlcyBzYXV2ZWdhcmTDqWVzJzsNCiRsYW5nWydzdWJtaXQnXSA9ICdFbnZveWVyJzsNCiRsYW5nWyd1c2VfYXV0b3ByZWZpeGVyJ10gPSAnVXRpbGlzZXIgQXV0b3ByZWZpeGVyIChwbHVzIGRcJ2luZm9zIHN1ciA8YSBocmVmPSJodHRwczojZ2l0aHViLmNvbS9wb3N0Y3NzL2F1dG9wcmVmaXhlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOiNnaXRodWIuY29tL3Bvc3Rjc3MvYXV0b3ByZWZpeGVyPC9hPikgLSBTZXVsZW1lbnQgc2kgaW5zdGFsbMOpIHN1ciBsZSBzZXJ2ZXVyLic7DQoNCiRsYW5nWydoZWxwJ10gPSA8PDxFT1QNCjxoMj5RdWUgZmFpdCBjZSBtb2R1bGUgPzwvaDI+DQogPHA+Q2UgbW9kdWxlIGFqb3V0ZSBhdSBnZXN0aW9ubmFpcmUgZGUgZmV1aWxsZXMgZGUgc3R5bGUgLyBkZXNpZ24gZGUgQ01TTVMgY2VydGFpbnMgcHLDqXByb2Nlc3NldXJzIENTUywgYWZpbiBkZSBjb21waWxlciBsZXMgbGFuZ2FnZXMgTEVTUyBvdSBTQVNTIChvdSBwZXV0LcOqdHJlIGQnYXV0cmVzIHVsdMOpcmlldXJlbWVudCkuPC9wPg0KIDxoMj5Db21tZW50IGZvbmN0aW9ubmUtdC1pbCBldCBjb21tZW50IHMnaW50w6hncmUtdC1pbCBkYW5zIENNU01TID88L2gyPg0KIDxwPg0KCUNlIG1vZHVsZSB1dGlsaXNlIGxlcyBmZXVpbGxlcyBkZSBzdHlsZSBzdGFuZGFyZCBkZSBDTVMgTWFkZSBTaW1wbGUuIElsIGVzdCBsYW5jw6kgYXByw6hzIGxhIGNvbWJpbmFpc29uIGRlIHRvdXRlcyBsZXMgZmV1aWxsZXMgZGUgc3R5bGUsIGV0IGlsIHRyYW5zbWV0IGwnZW5zZW1ibGUgZHUgY29udGVudSBDU1MgYXUgcHLDqXByb2Nlc3NldXIgZGUgdm90cmUgY2hvaXguDQogPC9wPg0KIDxwPg0KCQlHYXJkZXogw6AgbCdlc3ByaXQgcXVlIGNlIG1vZHVsZSB0cmFpdGUgbGEgZmV1aWxsZSBkZSBzdHlsZSBkYW5zIHNvbiBpbnTDqWdyYWxpdMOpLCBhcHLDqHMgbGV1ciBjb21iaW5haXNvbi4gUXVlIHZvdXMgdXRpbGlzaWV6IDEgb3UgMTAgZmV1aWxsZXMgZGUgc3R5bGUgZGFucyB2b3RyZSBkZXNpZ24sIGxlIHByw6lwcm9jZXNzZXVyIG5lIGxhIHRyYWl0ZXJhIHF1J3VuZSBzZXVsZSBmb2lzLg0KICA8L3A+DQo8aDI+Q29tbWVudCBsJ3V0aWxpc2VyID88L2gyPg0KPGgzPkNNU01TIDIrPC9oMz4NCjx1bD4NCgk8bGk+DQoJCUTDqWZpbmlzc2V6IHZvcyByw6lwZXJ0b2lyZXMgZCdpbXBvcnQsIHNpIHZvdXMgZW4gdXRpbGlzZXouIFBhciBleGVtcGxlLCBzaSB2b3VzIHNvdWhhaXRleiBpbnTDqWdyZXIgQm9vdHN0cmFwLCB2b3VzIHBvdXZleiA6DQoJCTxvbD4NCgkJCTxsaT5QbGFjZXIgdm9zIGZpY2hpZXJzIHNvdXJjZXMgU0FTUy9MRVNTIGRlIEJvb3RzdHJhcCBkYW5zIGFzc2V0cy9ib290c3RyYXAvPC9saT4NCgkJCTxsaT5TYWlzaXIgPHN0cm9uZz48ZW0+YXNzZXRzL2Jvb3RzdHJhcDwvZW0+PC9zdHJvbmc+IGRhbnMgwqsgUsOpcGVydG9pcmVzIGNvbnRlbmFudCBkZXMgZmljaGllcnMgTEVTUy9TQVNTIMOgIGluY2x1cmUgZGFucyBsYSBjb21waWxhdGlvbiDCuyDigJQgUGFzIGRlIHNsYXNoIGF1IGTDqWJ1dCBuaSDDoCBsYSBmaW48L2xpPg0KICAgICAgPGxpPkNyw6llciB1bmUgb3UgcGx1c2lldXJzIGZldWlsbGVzIGRlIHN0eWxlIMKrIHBlcnNvbm5hbGlzw6llcyDCuyBkYW5zIGxlIEdlc3Rpb25uYWlyZSBkdSBEZXNpZ24gZXQgbGVzIGFzc29jaWVyIMOgIHZvdHJlIGRlc2lnbi48L2xpPg0KCQk8L29sPg0KCTwvbGk+DQogIDxsaT4NCgkJTGEgbcOqbWUgY2hvc2UgcGV1dCDDqnRyZSBmYWl0ZSBwb3VyIEZvdW5kYXRpb24gOg0KCQk8b2w+DQoJCQk8bGk+UGxhY2VyIHZvcyBmaWNoaWVycyBzb3VyY2VzIFNBU1MgZGUgRm91bmRhdGlvbiBkYW5zIGFzc2V0cy9mb3VuZGF0aW9uL3Njc3M8L2xpPg0KCQkJPGxpPlNhaXNpciA8c3Ryb25nPjxlbT5hc3NldHMvZm91bmRhdGlvbi9zY3NzPC9lbT48L3N0cm9uZz4gZGFucyDCqyBSw6lwZXJ0b2lyZXMgY29udGVuYW50IGRlcyBmaWNoaWVycyBMRVNTL1NBU1Mgw6AgaW5jbHVyZSBkYW5zIGxhIGNvbXBpbGF0aW9uIMK7IOKAlCBQYXMgZGUgc2xhc2ggYXUgZMOpYnV0IG5pIMOgIGxhIGZpbjwvbGk+DQoJCTwvb2w+DQoJPC9saT4NCgk8bGk+Q29tbWVuY2V6IMOgIHV0aWxpc2VyIGR1IGNvZGUgTEVTUyAvIFNBU1MgZGFucyB2b3MgZmV1aWxsZXMgZGUgc3R5bGUgITwvbGk+DQo8L3VsPg0KPGgyPk1pc2Ugw6Agam91ciBkZXMgZmV1aWxsZXMgZGUgc3R5bGU8L2gyPg0KPHA+DQoJU2kgdm91cyBlZmZlY3R1ZXogdW5lIG1pc2Ugw6Agam91ciBzdXIgdW5lIGZldWlsbGUgZGUgc3R5bGUgQ01TTVMsIHRvdXQgc2UgcGFzc2UgYmllbiBldCBsZSBtb2R1bGUgdHJhaXRlcmEgw6Agbm91dmVhdSBsYSBmZXVpbGxlIGRlIHN0eWxlIGF1IHByb2NoYWluIHJhZnJhw65jaGlzc2VtZW50IGRlIGxhIHBhZ2UuDQo8L3A+DQo8cD4NCglFbiByZXZhbmNoZSwgc2kgdm91cyBhdmV6IG1vZGlmacOpIHZvcyBmaWNoaWVycyBMRVNTIGltcG9ydMOpcywgbGUgc3lzdMOobWUgbidlZmZlY3R1ZXJhIGF1Y3VuZSBtaXNlIMOgIGpvdXIg4oCUIGRhbnMgY2UgY2FzLCB2b3VzIGRldmV6IHZpZGVyIGxlIGNhY2hlIG91IHNpbXBsZW1lbnQgZW5yZWdpc3RyZXIgw6Agbm91dmVhdSB2b3RyZSBmZXVpbGxlIGRlIHN0eWxlIGRhbnMgbGUgRGVzaWduIE1hbmFnZXIgYWZpbiBxdWUgbGUgcGx1Z2luIHtjbXNfc3R5bGVzaGVldH0gdHJhaXRlIMOgIG5vdXZlYXUgbGUgQ1NTLg0KPC9wPg0KPGgyPlByaXNlIGVuIGNoYXJnZSBkZSBTbWFydHk8L2gyPg0KPHA+Vm91cyBwb3V2ZXogdXRpbGlzZXIgbGVzIGJhbGlzZXMgU21hcnR5IGF2ZWMgW1sgZXQgXV0g4oCUIFNtYXJ0eSBzZXJhIHRyYWl0w6kgYXZhbnQgbGUgcHLDqXByb2Nlc3NldXIgQ1NTLjwvcD4NCjxoMj5VdGlsaXNhdGlvbiBkZXMgc291cmNlbWFwczwvaDI+DQo8cD4NCglDZXJ0YWlucyBwcsOpcHJvY2Vzc2V1cnMgcGV1dmVudCBjcsOpZXIgZGVzIGZpY2hpZXJzIHNvdXJjZW1hcCwgYWZpbiBkZSB2b3VzIGFpZGVyIGxvcnMgZGUgbCdpbnTDqWdyYXRpb24uIE4nb3VibGlleiBwYXMgZGUgY29uZmlndXJlciB2b3RyZSBuYXZpZ2F0ZXVyIHBvdXIgdXRpbGlzZXIgY2V0dGUgZm9uY3Rpb24uIE5vdGV6IHF1ZSBzZXVscyBsZXMgZmljaGllcnMgaW1wb3J0w6lzIHNlcm9udCBjYXJ0b2dyYXBoacOpcyBkYW5zIGxlcyBzb3VyY2VtYXBzIChjZWxhIHBvdXJyYSBjaGFuZ2VyIGRhbnMgdW5lIHZlcnNpb24gdWx0w6lyaWV1cmUpLjxicj48c3Ryb25nPk4nb3VibGlleiBwYXMgZGUgZMOpc2FjdGl2ZXIgbGVzIHNvdXJjZW1hcHMgZW4gcHJvZHVjdGlvbjwvc3Ryb25nPi4NCjwvcD4NCjxoMj5Ew6lzYWN0aXZlciBsZSBtb2R1bGU8L2gyPg0KPHA+DQoJU2kgdm91cyBuZSBzb3VoYWl0ZXogcGx1cyB1dGlsaXNlciBsZXMgcHLDqXByb2Nlc3NldXJzLCB2ZXVpbGxleiBsZSBzdXBwcmltZXIgb3UgbGUgZMOpc2FjdGl2ZXIgZGFucyBsZSBNb2R1bGVzIE1hbmFnZXIg4oCUIGlsIG4neSBhIHBhcyBkZSBmb25jdGlvbiDCqyBkw6lzYWN0aXZlciDCuyBpbnTDqWdyw6llIGF1IG1vZHVsZS4NCjwvcD4NCjxoMj5DaGFuZ2VyIGRlIHByw6lwcm9jZXNzZXVyPC9oMj4NCjxwPg0KCVZvdXMgcG91dmV6IHNvdWhhaXRlciBwYXNzZXIgZCd1biBwcsOpcHJvY2Vzc2V1ciDDoCB1biBhdXRyZSDigJQgTGUgbW9kdWxlIGRldnJhaXQgdmlkZXIgbGUgY2FjaGUgbG9ycyBkdSBjaGFuZ2VtZW50IGRlIHByw6lmw6lyZW5jZXMsIGRlIHNvcnRlIHF1J2F1IHByb2NoYWluIHJhZnJhw65jaGlzc2VtZW50IGRlIGxhIHBhZ2UgZGFucyB2b3RyZSBuYXZpZ2F0ZXVyLCBsJ2Vuc2VtYmxlIGR1IENTUyBzZXJhIMOgIG5vdXZlYXUgcHLDqXByb2Nlc3PDqS4NCjwvcD4NCjxoMj7DiXRlbmRyZSBhdmVjIHVuIGF1dHJlIHByw6lwcm9jZXNzZXVyPC9oMj4NCjxwPg0KCVZvdXMgcG91dmV6IGNyw6llciB1biBub3V2ZWF1IHLDqXBlcnRvaXJlIGRhbnMgbGUgcsOpcGVydG9pcmUgwqsgcHJlcHJvY2Vzc29ycyDCuyBldCBjcsOpZXIgdm90cmUgcHJvcHJlIGNsYXNzZSDigJQgUmVnYXJkZXogY29tbWVudCBsZXMgcHLDqXByb2Nlc3NldXJzIGZvdXJuaXMgc29udCBpbnTDqWdyw6lzLg0KPC9wPg0KPHA+TidvdWJsaWV6IHBhcyBkZSA8YSBocmVmPSJtYWlsdG9cOmNvbnRhY3RAYWlyZWxpYnJlLm5ldCI+bSfDqWNyaXJlPC9hPiBzaSB2b3VzIHNvdWhhaXRleiBxdWUgdm90cmUgcHLDqXByb2Nlc3NldXIgc29pdCBham91dMOpIGF1IHByb2pldCAhPC9wPg0KPGgyPlN1cHBvcnQ8L2gyPg0KCTxwPkNvbmZvcm3DqW1lbnQgw6AgbGEgR1BMLCBjZSBsb2dpY2llbCBlc3QgZm91cm5pIMKrIHRlbCBxdWVsIMK7LiBWZXVpbGxleiBsaXJlIGxlIHRleHRlIGRlIGxhIGxpY2VuY2UgcG91ciBsJ2V4b27DqXJhdGlvbiBkZSByZXNwb25zYWJpbGl0w6kgY29tcGzDqHRlLjwvcD4NCgk8cD4NCgkJU2kgdm91cyBzb3VoYWl0ZXogbWUgY29udGFjdGVyIDogPGEgaHJlZj0ibWFpbHRvXDpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmNvbnRhY3RAYWlyZWxpYnJlLm5ldDwvYT4NCgk8L3A+DQo8aDI+UHJvamV0IHN1ciBsZSB3ZWI8L2gyPg0KPHA+Vm91cyBwb3V2ZXogc3VpdnJlIGxlIHByb2pldCBzdXIgOjwvcD4NCgk8dWw+DQoJCTxsaT5HaXRIdWIgOiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWlyZWxpYnJlL0NTU1ByZXByb2Nlc3NvciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS9haXJlbGlicmUvQ1NTUHJlcHJvY2Vzc29yPC9hPjwvbGk+DQoJCTxsaT5Gb3JnZSBDTVNNUyA6IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY3NzcHJlcHJvY2Vzc29yIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jc3NwcmVwcm9jZXNzb3I8L2E+PC9saT4NCgk8L3VsPg0KPGgyPkNvcHlyaWdodCBldCBsaWNlbmNlPC9oMj4NCgk8cD5Db3B5cmlnaHQgJmNvcHk7IGRlcHVpcyAyMDE0LCBNYXRoaWV1IE11dGhzIDxhaXJlTGlicmU+IDxhIGhyZWY9Im1haWx0b1w6Y29udGFjdEBhaXJlbGlicmUubmV0Ij5jb250YWN0QGFpcmVsaWJyZS5uZXQ8L2E+IC8gPGEgaHJlZj0iaHR0cHM6Ly93d3cuYWlyZWxpYnJlLm5ldCIgdGFyZ2V0PSJfYmxhbmsiPnd3dy5haXJlbGlicmUubmV0PC9hPi4gVG91cyBkcm9pdHMgcsOpc2VydsOpcy48L3A+DQoJPHA+Q2UgbW9kdWxlIGEgw6l0w6kgcHVibGnDqSBzb3VzIGxhIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+TGljZW5jZSBQdWJsaXF1ZSBHw6luw6lyYWxlIEdOVTwvYT4uIFZvdXMgZGV2ZXogYWNjZXB0ZXIgY2V0dGUgbGljZW5jZSBhdmFudCBkJ3V0aWxpc2VyIGxlIG1vZHVsZS48L3A+DQo8aDM+Q29weXJpZ2h0IGRlcyBwcsOpcHJvY2Vzc2V1cnM8L2gzPg0KPHA+DQogICAgTCdhdXRldXIgZGUgY2UgbW9kdWxlIG5lIGTDqXRpZW50IHBhcyBsZXMgcHLDqXByb2Nlc3NldXJzIHF1aSB5IHNvbnQgaW50w6lncsOpcyDigJQgVmV1aWxsZXogY29uc3VsdGVyIGxlIGNvZGUgc291cmNlIC8gbGUgc2l0ZSB3ZWIgZGUgY2hhcXVlIHByw6lwcm9jZXNzZXVyIHBvdXIgb2J0ZW5pciBkZXMgaW5mb3JtYXRpb25zIHN1ciBsZXVyIGxpY2VuY2UgZXQgbGV1ciBjb3B5cmlnaHQuDQo8L3A+DQo8cD5KZSB0aWVucyBzaW1wbGVtZW50IMOgIHJlbWVyY2llciB0b3VzIGxlcyBkw6l2ZWxvcHBldXJzIHF1aSBjb250cmlidWVudCDDoCBjZXMgcHLDqXByb2Nlc3NldXJzLCBxdWkgc29udCBkJ2V4Y2VsbGVudHMgb3V0aWxzIHBvdXIgbGVzIGRlc2lnbmVycyAhPC9wPg0KDQpFT1Q7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2NhbmNlbCddID0gJ0F2YnJ5dCc7CiRsYW5nWydjc3NfcHJlcHJvY2Vzc29yJ10gPSAnQ1NTIFByZXByb2Nlc3Nvcic7CiRsYW5nWydjaG9vc2VfcHJlcHJvY2Vzc29yJ10gPSAnVmVsZyBkZW4gcHJlcHJvc2Vzc29yZW4gZHUgdmlsIGJlbnl0dGUnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ1NTIFByZXByb2Nlc3Nvcic7CiRsYW5nWydnZW5lcmF0ZV9zb3VyY2VtYXAnXSA9ICdraWxkZWthcnQnOwokbGFuZ1snZ2VuZXJhdGVfc291cmNlbWFwX2xhYmVsJ10gPSAnR2VuZXJlciBraWxkZWthcnQnOwokbGFuZ1snaW1wb3J0X2RpcnMnXSA9ICdLYXRhbG9nZXIgc29tIGlubmVob2xkZXIgTEVTUy9TQVNTIGZpbGVyIHNvbSBza2FsIGlua2x1ZGVyZXMgaSBrb21waWxlcmluZ2VuLiBSZWxhdGl2IHRpbCA8c3Ryb25nPnJvb3Q8L3N0cm9uZz4ga2F0YWxvZyAtIEtvbW1hc2VwYXJlcnQtbGlzdGUnOwokbGFuZ1snbWluaWZ5J10gPSAnTWluaW1lcic7CiRsYW5nWydtaW5pZnlfbGFiZWwnXSA9ICdNaW5pbWVyIENTUyAtIE1lcmtuYWQ6IEh2aXMgdGlsbGF0dCBhdiBwcmVwcm9zZXNzb3Jlbic7CiRsYW5nWydub3RlJ10gPSAnTWVya25hZDonOwokbGFuZ1snb3B0aW9ucyddID0gJ1ZhbGcnOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQcmVmZXJhbnNlcic7CiRsYW5nWydwcmVmZXJlbmNlc19zZXQnXSA9ICdQcmVmZXJhbnNlbmUgYmxlIGxhZ3JldDxicj5WZW5ubGlnc3QgdMO4bSBkaXR0IG5ldHRzdGVkcyBtZWxsb21sYWdlciBmb3Igw6UgcmUtcHJvc2Vzc2VyZSBDU1MnOwokbGFuZ1snc3VibWl0J10gPSAnTGFncmUnOwokbGFuZ1sndXNlX2F1dG9wcmVmaXhlciddID0gJ0JydWsgUEhQLUF1dG9wcmVmaXhlciAobWVyIGluZm86IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXI8L2E+KSc7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZWVyJzsKJGxhbmdbJ2dlbmVyYXRlX3NvdXJjZW1hcCddID0gJ0Jyb25tYXAnOwokbGFuZ1snbm90ZSddID0gJ09wbWVya2luZzonOwokbGFuZ1snb3B0aW9ucyddID0gJ09wdGllcyc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ0luc3RlbGxpbmdlbic7CiRsYW5nWydwcmVmZXJlbmNlc19zZXQnXSA9ICdJbnN0ZWxsaW5nZW4gb3BnZXNsYWdlbic7CiRsYW5nWydzdWJtaXQnXSA9ICdWZXJzdHVyZW4nOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.Preprocessor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3NvciB7CgoJY29uc3QgTE9HTyA9ICcnOwoKCWNvbnN0IFNPVVJDRU1BUEZJTEUgPSAnc291cmNlbWFwLm1hcCc7CgoJLy8gUHJpb3JpdHkgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2Ugb24gdGhlIGFkbWluIHBhbmVsCgljb25zdCBQUklPUklUWSA9IDEwMDsKCglwdWJsaWMgJGltcG9ydF9kaXJzOwoJcHVibGljICRtaW5pZnk7CgoJcHVibGljICRnZW5lcmF0ZV9zb3VyY2VtYXA7CglwdWJsaWMgJHNvdXJjZV9tYXBfZmlsZT0nJzsKCXB1YmxpYyAkc291cmNlX21hcF91cmw9Jyc7CgoJLy8gTG9hZCBpbXBvcnQgZGlycwoJcHVibGljIGZ1bmN0aW9uIGxvYWQoKQoJewoJCSRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NTU1ByZXByb2Nlc3NvcicpOwoJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCgkJLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkJLy8gSW1wb3J0IGRpcnMsIGlmIGFueQoJCSRpbXBvcnRfZGlycyA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2ltcG9ydF9kaXJzJywgJycpOwoJCSRpbXBvcnRfZGlyc19hcnJheSA9IGFycmF5KCk7CgkJaWYgKCFlbXB0eSgkaW1wb3J0X2RpcnMpKQoJCXsKCQkJLy8gYXJyYXkKCQkJJHRtcCA9IGV4cGxvZGUoJywnLCAkaW1wb3J0X2RpcnMpOwoKCQkJZm9yZWFjaCAoJHRtcCBhcyAkb25lKQoJCQl7CgkJCQkvLyBOb3RlOiBzb21lIHByZXByb2Nlc3NvcnMgbmVlZCB0aGUga2V5IHRvIGJlIHRoZSBwYXRoIChMZXNzLnBocCBieSBveWVqb3JnZSkKCQkJCSRkaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLCB0cmltKCRvbmUpKTsKCQkJCSRpbXBvcnRfZGlyc19hcnJheVtdID0gJGRpcjsKCQkJfQoJCX0KCQkkdGhpcy0+aW1wb3J0X2RpcnMgPSAkaW1wb3J0X2RpcnNfYXJyYXk7CgkJLy8gRW5kIGltcG9ydCBkaXJzCgkJLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKCgoJCS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCS8vIE1pbmlmeSA/CgkJJHRoaXMtPm1pbmlmeSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ21pbmlmeScsIDApOwoJCS8vIEVuZCBtaW5pZnkKCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgoKCgkJLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkJLy8gR2VuZXJhdGUgc291cmNlbWFwID8KCQkkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZ2VuZXJhdGVfc291cmNlbWFwJywgMCk7CgoJCWlmICgkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKQoJCXsKCQkJJHRoaXMtPnNvdXJjZV9tYXBfZmlsZSA9IGNtc19qb2luX3BhdGgoVE1QX0NBQ0hFX0xPQ0FUSU9OLCBzdGF0aWM6OlNPVVJDRU1BUEZJTEUpOwoJCQkkdGhpcy0+c291cmNlX21hcF91cmwgPSAkY29uZmlnWydjc3NfdXJsJ10gLiAnLycgLiBzdGF0aWM6OlNPVVJDRU1BUEZJTEU7CgkJfQoJCS8vIEVuZCBzb3VyY2VtYXAKCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgl9CgoKCgoKCS8vIE5lZWRzIHRvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIHN1YmNsYXNzZXMKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlQ1NTKCYkY3NzKQoJewoJCXJldHVybiB0cnVlOwoJfQoKCgoKCgkvLyBGcm9tIDogaHR0cDovL2NvZGUuc2VlYnoubmV0L3AvbWluaWZ5LWNzcy8KCS8vIFRoYW5rcwoJcHVibGljIGZ1bmN0aW9uIG1pbmlmeUNTUygmJGNzcz0nJykKCXsKCQkkY3NzID0gcHJlZ19yZXBsYWNlKCchL1wqW14qXSpcKisoW14vXVteKl0qXCorKSovIScsICcnLCAkY3NzKTsKCQkkY3NzID0gc3RyX3JlcGxhY2UoYXJyYXkoIlxyIiwiXG4iKSwgJycsICRjc3MpOwoJCSRjc3MgPSBwcmVnX3JlcGxhY2UoJ2AoW14qL10pXC9cKihbXipdfFsqXSg/IS8pKXs1LH1cKlwvKFteKi9dKWBVcycsICckMSQzJywgJGNzcyk7CgkJJGNzcyA9IHByZWdfcmVwbGFjZSgnYFxzKih7fH18LHw6fDspXHMqYCcsICckMScsICRjc3MpOwoJCSRjc3MgPSBzdHJfcmVwbGFjZSgnO30nLCAnfScsICRjc3MpOwoJCSRjc3MgPSBwcmVnX3JlcGxhY2UoJ2AoPz18fSlbXnt9XSt7fWAnLCAnJywgJGNzcyk7CgkJJGNzcyA9IHByZWdfcmVwbGFjZSgnYFtcc10rYCcsICcgJywgJGNzcyk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiYWlyZWxpYnJlL2Nzc3ByZXByb2Nlc3NvciIsCiAgICAiZGVzY3JpcHRpb24iOiAiQ01TTVMgQ1NTUHJlcHJvY2Vzc29yIG1vZHVsZSDigJQgU0NTUy9MZXNzL1Nhc3MgcHJlLXByb2Nlc3NvcnMgaW50ZWdyYXRpb24iLAogICAgImxpY2Vuc2UiOiAiR1BMLTIuMC1vci1sYXRlciIsCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIj49OC4xIiwKICAgICAgICAicGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciI6ICIxLjQiLAogICAgICAgICJzY3NzcGhwL3Njc3NwaHAiOiAiXjIuMS4wIiwKICAgICAgICAic2FiYmVyd29ybS9waHAtY3NzLXBhcnNlciI6ICJeOC43IiwKICAgICAgICAic3ltZm9ueS9maWxlc3lzdGVtIjogIl42LjQiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNpbnN0YWxsaW5nLWRlcGVuZGVuY2llcyIsCiAgICAgICAgIlRoaXMgZmlsZSBpcyBAZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkiCiAgICBdLAogICAgImNvbnRlbnQtaGFzaCI6ICJkZGI4NGJkMjhlOTM0NzM4MzJiZDY4NzlkYWM5MzI4ZSIsCiAgICAicGFja2FnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJsZWFndWUvdXJpIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiNy44LjEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS91cmkuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMDhjZjM4ZTM5MjRkNGY1NjIzODEyNTU0N2I1NzIwNDk2ZmFjOGZkNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3RoZXBocGxlYWd1ZS91cmkvemlwYmFsbC8wOGNmMzhlMzkyNGQ0ZjU2MjM4MTI1NTQ3YjU3MjA0OTZmYWM4ZmQ0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMDhjZjM4ZTM5MjRkNGY1NjIzODEyNTU0N2I1NzIwNDk2ZmFjOGZkNCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAibGVhZ3VlL3VyaS1pbnRlcmZhY2VzIjogIl43LjguMSIsCiAgICAgICAgICAgICAgICAicGhwIjogIl44LjEiLAogICAgICAgICAgICAgICAgInBzci9odHRwLWZhY3RvcnkiOiAiXjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJjb25mbGljdCI6IHsKICAgICAgICAgICAgICAgICJsZWFndWUvdXJpLXNjaGVtZXMiOiAiXjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWJjbWF0aCI6ICJ0byBpbXByb3ZlIElQVjQgaG9zdCBwYXJzaW5nIiwKICAgICAgICAgICAgICAgICJleHQtZG9tIjogInRvIGNvbnZlcnQgdGhlIFVSSSBpbnRvIGFuIEhUTUwgYW5jaG9yIHRhZyIsCiAgICAgICAgICAgICAgICAiZXh0LWZpbGVpbmZvIjogInRvIGNyZWF0ZSBEYXRhIFVSSSBmcm9tIGZpbGUgY29udGVubnRzIiwKICAgICAgICAgICAgICAgICJleHQtZ21wIjogInRvIGltcHJvdmUgSVBWNCBob3N0IHBhcnNpbmciLAogICAgICAgICAgICAgICAgImV4dC1pbnRsIjogInRvIGhhbmRsZSBJRE4gaG9zdCB3aXRoIHRoZSBiZXN0IHBlcmZvcm1hbmNlIiwKICAgICAgICAgICAgICAgICJleHQtdXJpIjogInRvIHVzZSB0aGUgUEhQIG5hdGl2ZSBVUkkgY2xhc3MiLAogICAgICAgICAgICAgICAgImplcmVteWtlbmRhbGwvcGhwLWRvbWFpbi1wYXJzZXIiOiAidG8gZnVydGhlciBwYXJzZSB0aGUgVVJJIGhvc3QgYW5kIHJlc29sdmUgaXRzIFB1YmxpYyBTdWZmaXggYW5kIFRvcCBMZXZlbCBEb21haW4iLAogICAgICAgICAgICAgICAgImxlYWd1ZS91cmktY29tcG9uZW50cyI6ICJ0byBwcm92aWRlIGFkZGl0aW9uYWwgdG9vbHMgdG8gbWFuaXB1bGF0ZSBVUkkgb2JqZWN0cyBjb21wb25lbnRzIiwKICAgICAgICAgICAgICAgICJsZWFndWUvdXJpLXBvbHlmaWxsIjogInRvIGJhY2twb3J0IHRoZSBQSFAgVVJJIGV4dGVuc2lvbiBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgUEhQIiwKICAgICAgICAgICAgICAgICJwaHAtNjRiaXQiOiAidG8gaW1wcm92ZSBJUFY0IGhvc3QgcGFyc2luZyIsCiAgICAgICAgICAgICAgICAicm93Ym90L3VybCI6ICJ0byBoYW5kbGUgVVJMcyB1c2luZyB0aGUgV0hBVFdHIFVSTCBMaXZpbmcgU3RhbmRhcmQgc3BlY2lmaWNhdGlvbiIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1pbnRsLWlkbiI6ICJ0byBoYW5kbGUgSUROIGhvc3QgdmlhIHRoZSBTeW1mb255IHBvbHlmaWxsIGlmIGV4dC1pbnRsIGlzIG5vdCBwcmVzZW50IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICI3LngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkxlYWd1ZVxcVXJpXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJueWFtc3Byb2RAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9ueWFtc3Byb2QuY29tIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVVJJIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vdXJpLnRoZXBocGxlYWd1ZS5jb20iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiVVJOIiwKICAgICAgICAgICAgICAgICJkYXRhLXVyaSIsCiAgICAgICAgICAgICAgICAiZmlsZS11cmkiLAogICAgICAgICAgICAgICAgImZ0cCIsCiAgICAgICAgICAgICAgICAiaG9zdG5hbWUiLAogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgImh0dHBzIiwKICAgICAgICAgICAgICAgICJtaWRkbGV3YXJlIiwKICAgICAgICAgICAgICAgICJwYXJzZV9zdHIiLAogICAgICAgICAgICAgICAgInBhcnNlX3VybCIsCiAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgInF1ZXJ5LXN0cmluZyIsCiAgICAgICAgICAgICAgICAicXVlcnlzdHJpbmciLAogICAgICAgICAgICAgICAgInJmYzIxNDEiLAogICAgICAgICAgICAgICAgInJmYzM5ODYiLAogICAgICAgICAgICAgICAgInJmYzM5ODciLAogICAgICAgICAgICAgICAgInJmYzY1NzAiLAogICAgICAgICAgICAgICAgInJmYzgxNDEiLAogICAgICAgICAgICAgICAgInVyaSIsCiAgICAgICAgICAgICAgICAidXJpLXRlbXBsYXRlIiwKICAgICAgICAgICAgICAgICJ1cmwiLAogICAgICAgICAgICAgICAgIndzIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJkb2NzIjogImh0dHBzOi8vdXJpLnRoZXBocGxlYWd1ZS5jb20iLAogICAgICAgICAgICAgICAgImZvcnVtIjogImh0dHBzOi8vdGhlcGhwbGVhZ3VlLnNsYWNrLmNvbSIsCiAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvdXJpLXNyYy9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL3VyaS90cmVlLzcuOC4xIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9ueWFtc3Byb2QiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNi0wMy0xNVQyMDoyMjoyNSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAibGVhZ3VlL3VyaS1pbnRlcmZhY2VzIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiNy44LjEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS91cmktaW50ZXJmYWNlcy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI4NWQ1Yzc3YzVkNmQzYWY2YzU0ZGI0YTc4MjQ2MzY0OTA4ZjNjOTI4IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvdGhlcGhwbGVhZ3VlL3VyaS1pbnRlcmZhY2VzL3ppcGJhbGwvODVkNWM3N2M1ZDZkM2FmNmM1NGRiNGE3ODI0NjM2NDkwOGYzYzkyOCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjg1ZDVjNzdjNWQ2ZDNhZjZjNTRkYjRhNzgyNDYzNjQ5MDhmM2M5MjgiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1maWx0ZXIiOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIl44LjEiLAogICAgICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAiXjEuMSB8fCBeMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtYmNtYXRoIjogInRvIGltcHJvdmUgSVBWNCBob3N0IHBhcnNpbmciLAogICAgICAgICAgICAgICAgImV4dC1nbXAiOiAidG8gaW1wcm92ZSBJUFY0IGhvc3QgcGFyc2luZyIsCiAgICAgICAgICAgICAgICAiZXh0LWludGwiOiAidG8gaGFuZGxlIElETiBob3N0IHdpdGggdGhlIGJlc3QgcGVyZm9ybWFuY2UiLAogICAgICAgICAgICAgICAgInBocC02NGJpdCI6ICJ0byBpbXByb3ZlIElQVjQgaG9zdCBwYXJzaW5nIiwKICAgICAgICAgICAgICAgICJyb3dib3QvdXJsIjogInRvIGhhbmRsZSBVUkxzIHVzaW5nIHRoZSBXSEFUV0cgVVJMIExpdmluZyBTdGFuZGFyZCBzcGVjaWZpY2F0aW9uIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLWludGwtaWRuIjogInRvIGhhbmRsZSBJRE4gaG9zdCB2aWEgdGhlIFN5bWZvbnkgcG9seWZpbGwgaWYgZXh0LWludGwgaXMgbm90IHByZXNlbnQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjcueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiTGVhZ3VlXFxVcmlcXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJJZ25hY2UgTnlhbWFnYW5hIEJ1dGVyYSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm55YW1zcHJvZEBnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL255YW1zcHJvZC5jb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gdG9vbHMgZm9yIHBhcnNpbmcgYW5kIHJlc29sdmluZyBSRkMzOTg3L1JGQzM5ODYgVVJJIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vdXJpLnRoZXBocGxlYWd1ZS5jb20iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiZGF0YS11cmkiLAogICAgICAgICAgICAgICAgImZpbGUtdXJpIiwKICAgICAgICAgICAgICAgICJmdHAiLAogICAgICAgICAgICAgICAgImhvc3RuYW1lIiwKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJodHRwcyIsCiAgICAgICAgICAgICAgICAicGFyc2Vfc3RyIiwKICAgICAgICAgICAgICAgICJwYXJzZV91cmwiLAogICAgICAgICAgICAgICAgInBzci03IiwKICAgICAgICAgICAgICAgICJxdWVyeS1zdHJpbmciLAogICAgICAgICAgICAgICAgInF1ZXJ5c3RyaW5nIiwKICAgICAgICAgICAgICAgICJyZmMzOTg2IiwKICAgICAgICAgICAgICAgICJyZmMzOTg3IiwKICAgICAgICAgICAgICAgICJyZmM2NTcwIiwKICAgICAgICAgICAgICAgICJ1cmkiLAogICAgICAgICAgICAgICAgInVybCIsCiAgICAgICAgICAgICAgICAid3MiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImRvY3MiOiAiaHR0cHM6Ly91cmkudGhlcGhwbGVhZ3VlLmNvbSIsCiAgICAgICAgICAgICAgICAiZm9ydW0iOiAiaHR0cHM6Ly90aGVwaHBsZWFndWUuc2xhY2suY29tIiwKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS91cmktc3JjL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvdXJpLWludGVyZmFjZXMvdHJlZS83LjguMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvbnlhbXNwcm9kIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjYtMDMtMDhUMjA6MDU6MzUrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjQiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMTdhYzlkMjBjMGU0NTIxMTYzYTA2MWQ0Zjk5ZjNkMzFmODhlNzk3ZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvemlwYmFsbC8xN2FjOWQyMGMwZTQ1MjExNjNhMDYxZDRmOTlmM2QzMWY4OGU3OTdlIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMTdhYzlkMjBjMGU0NTIxMTYzYTA2MWQ0Zjk5ZjNkMzFmODhlNzk3ZSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAic2FiYmVyd29ybS9waHAtY3NzLXBhcnNlciI6ICIqIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJQYWRhbGl5YWpheVxcUEhQQXV0b3ByZWZpeGVyXFwiOiAic3JjIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSmF5IHBhZGFsaXlhIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ1NTIEF1dG9wcmVmaXhlciB3cml0dGVuIGluIHB1cmUgUEhQLiIsCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci90cmVlLzEuNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMi0wOC0wMlQwMjozNzoyOCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicHNyL2h0dHAtZmFjdG9yeSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtZmFjdG9yeS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyYjQ3NjVmZGRmZTNiNTA4YWM2MmY4MjllODUyYjE1MDFkM2Y2ZThhIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwLWZpZy9odHRwLWZhY3RvcnkvemlwYmFsbC8yYjQ3NjVmZGRmZTNiNTA4YWM2MmY4MjllODUyYjE1MDFkM2Y2ZThhIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMmI0NzY1ZmRkZmUzYjUwOGFjNjJmODI5ZTg1MmIxNTAxZDNmNmU4YSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4xIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlIjogIl4xLjAgfHwgXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4wLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlBzclxcSHR0cFxcTWVzc2FnZVxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTE3OiBDb21tb24gaW50ZXJmYWNlcyBmb3IgUFNSLTcgSFRUUCBtZXNzYWdlIGZhY3RvcmllcyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJmYWN0b3J5IiwKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci0xNyIsCiAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAgICAgInJlc3BvbnNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1mYWN0b3J5IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDI0LTA0LTE1VDEyOjA2OjE0KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwc3IvaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDJkMzViY2I5MmM3MGMwMjZkMWE2YTk4ODNmMDZiMmVhZDIzZDcxIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwLWZpZy9odHRwLW1lc3NhZ2UvemlwYmFsbC80MDJkMzViY2I5MmM3MGMwMjZkMWE2YTk4ODNmMDZiMmVhZDIzZDcxIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDAyZDM1YmNiOTJjNzBjMDI2ZDFhNmE5ODgzZjA2YjJlYWQyM2Q3MSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl43LjIgfHwgXjguMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMi4wLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlBzclxcSHR0cFxcTWVzc2FnZVxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAiaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci03IiwKICAgICAgICAgICAgICAgICJyZXF1ZXN0IiwKICAgICAgICAgICAgICAgICJyZXNwb25zZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZS90cmVlLzIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMy0wNC0wNFQwOTo1NDo1MSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic2FiYmVyd29ybS9waHAtY3NzLXBhcnNlciIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInY4LjkuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTXlJbnRlcnZhbHMvUEhQLUNTUy1QYXJzZXIuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDhlOTE2NTA3Yjg4ZTM4OWUyNmQ0YWIwM2M5MDRhMDgyYWE2NmJiOSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL015SW50ZXJ2YWxzL1BIUC1DU1MtUGFyc2VyL3ppcGJhbGwvZDhlOTE2NTA3Yjg4ZTM4OWUyNmQ0YWIwM2M5MDRhMDgyYWE2NmJiOSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQ4ZTkxNjUwN2I4OGUzODllMjZkNGFiMDNjOTA0YTA4MmFhNjZiYjkiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1pY29udiI6ICIqIiwKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuNi4yMCB8fCBeNy4wLjAgfHwgfjguMC4wIHx8IH44LjEuMCB8fCB+OC4yLjAgfHwgfjguMy4wIHx8IH44LjQuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICI1LjcuMjcgfHwgNi41LjE0IHx8IDcuNS4yMCB8fCA4LjUuNDEiLAogICAgICAgICAgICAgICAgInJhd3IvY3Jvc3MtZGF0YS1wcm92aWRlcnMiOiAiXjIuMC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtbWJzdHJpbmciOiAiZm9yIHBhcnNpbmcgVVRGLTggQ1NTIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1haW4iOiAiOS4wLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlNhYmJlcndvcm1cXENTU1xcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJSYXBoYWVsIFNjaHdlaWtlcnQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk9saXZlciBLbGVlIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZ2l0aHViQG9saXZlcmtsZWUuZGUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkpha2UgSG90c29uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiamFrZS5naXRodWJAcXpkZXNpZ24uY28udWsiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQYXJzZXIgZm9yIENTUyBGaWxlcyB3cml0dGVuIGluIFBIUCIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3d3dy5zYWJiZXJ3b3JtLmNvbS9ibG9nLzIwMTAvNi8xMC9waHAtY3NzLXBhcnNlciIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjc3MiLAogICAgICAgICAgICAgICAgInBhcnNlciIsCiAgICAgICAgICAgICAgICAic3R5bGVzaGVldCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NeUludGVydmFscy9QSFAtQ1NTLVBhcnNlci9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vTXlJbnRlcnZhbHMvUEhQLUNTUy1QYXJzZXIvdHJlZS92OC45LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjUtMDctMTFUMTM6MjA6NDgrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNjc3NwaHAvc2Nzc3BocCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjEuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2Nzc3BocC9zY3NzcGhwLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQ4NDUwYzJiYWY1ZmIwN2QwMDM3NDk5OWQwZWE1MTI3Njk3NGQxYjYiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zY3NzcGhwL3Njc3NwaHAvemlwYmFsbC9kODQ1MGMyYmFmNWZiMDdkMDAzNzQ5OTlkMGVhNTEyNzY5NzRkMWI2IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDg0NTBjMmJhZjVmYjA3ZDAwMzc0OTk5ZDBlYTUxMjc2OTc0ZDFiNiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWN0eXBlIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICAgICAgICAgICAgICJsZWFndWUvdXJpIjogIl43LjYiLAogICAgICAgICAgICAgICAgImxlYWd1ZS91cmktaW50ZXJmYWNlcyI6ICJeNy42IiwKICAgICAgICAgICAgICAgICJwaHAiOiAiPj04LjEiLAogICAgICAgICAgICAgICAgInNjc3NwaHAvc291cmNlLXNwYW4iOiAiXjEuMSIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9maWxlc3lzdGVtIjogIl41LjQgfHwgXjYuMCB8fCBeNy4wIHx8IF44LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJqZ3RobXMvYnVsbWEiOiAifjAuOS40IiwKICAgICAgICAgICAgICAgICJqaXJpcHVkaWwvcGhwc3Rhbi1zZWFsZWQtY2xhc3NlcyI6ICJeMS4zIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4iOiAiXjIuMS4zMSIsCiAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuLWRlcHJlY2F0aW9uLXJ1bGVzIjogIl4yLjAiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOS41LjYiLAogICAgICAgICAgICAgICAgInNhc3Mvc2Fzcy1zcGVjIjogIioiLAogICAgICAgICAgICAgICAgInNxdWl6bGFicy9waHBfY29kZXNuaWZmZXIiOiAiXjMuMTMiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcGhwdW5pdC1icmlkZ2UiOiAiXjcuMyB8fCBeOC4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLXBocDg0IjogIl4xLjMzIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3Zhci1kdW1wZXIiOiAiXjYuNCB8fCBeNy4zIHx8IF44LjAiLAogICAgICAgICAgICAgICAgInRob3VnaHRib3QvYm91cmJvbiI6ICJeNy4wIiwKICAgICAgICAgICAgICAgICJ0d2JzL2Jvb3RzdHJhcCI6ICJeNS4zIiwKICAgICAgICAgICAgICAgICJ0d2JzL2Jvb3RzdHJhcDQiOiAiNC42LjEiLAogICAgICAgICAgICAgICAgInp1cmIvZm91bmRhdGlvbiI6ICJ+Ni43LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlNjc3NQaHBcXFNjc3NQaHBcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQW50aG9uIFBhbmciLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhcGFuZ0Bzb2Z0d2FyZWRldmVsb3BtZW50LmNhIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JvYm9jb2RlciIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ8OpZHJpYyBNb3JpbiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImNlZHJpY0B5dGVyaXVtLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DZXJkaWMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJzY3NzcGhwIGlzIGEgY29tcGlsZXIgZm9yIFNDU1Mgd3JpdHRlbiBpbiBQSFAuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocC8iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiY3NzIiwKICAgICAgICAgICAgICAgICJsZXNzIiwKICAgICAgICAgICAgICAgICJzYXNzIiwKICAgICAgICAgICAgICAgICJzY3NzIiwKICAgICAgICAgICAgICAgICJzdHlsZXNoZWV0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Njc3NwaHAvc2Nzc3BocC9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc2Nzc3BocC9zY3NzcGhwL3RyZWUvdjIuMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDI1LTExLTIxVDE3OjI3OjU5KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzY3NzcGhwL3NvdXJjZS1zcGFuIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuMS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zY3NzcGhwL3NvdXJjZS1zcGFuLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjM3ZDY1MzIwNmRhZjExZGExZWU2MGIzMzM5ODQxMDFiYzRjMjdiYTIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zY3NzcGhwL3NvdXJjZS1zcGFuL3ppcGJhbGwvMzdkNjUzMjA2ZGFmMTFkYTFlZTYwYjMzMzk4NDEwMWJjNGMyN2JhMiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjM3ZDY1MzIwNmRhZjExZGExZWU2MGIzMzM5ODQxMDFiYzRjMjdiYTIiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICAgICAgICAgICAgICJsZWFndWUvdXJpIjogIl43LjYiLAogICAgICAgICAgICAgICAgImxlYWd1ZS91cmktaW50ZXJmYWNlcyI6ICJeNy42IiwKICAgICAgICAgICAgICAgICJwaHAiOiAiPj04LjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4iOiAiXjIuMCIsCiAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuLWRlcHJlY2F0aW9uLXJ1bGVzIjogIl4yLjAiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOS41LjYiLAogICAgICAgICAgICAgICAgInNxdWl6bGFicy9waHBfY29kZXNuaWZmZXIiOiAifjMuNSIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9waHB1bml0LWJyaWRnZSI6ICJeNi40IHx8IF43LjMgfHwgXjguMCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS92YXItZHVtcGVyIjogIl42LjQgfHwgXjcuMyB8fCBeOC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1haW4iOiAiMS54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTb3VyY2VTcGFuXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNocmlzdG9waGUgQ29ldm9ldCIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdG9mIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlkZXMgYSByZXByZXNlbnRhdGlvbiBmb3Igc291cmNlIGNvZGUgbG9jYXRpb25zIGFuZCBzcGFucy4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAicGFyc2luZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zY3NzcGhwL3NvdXJjZS1zcGFuL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zY3NzcGhwL3NvdXJjZS1zcGFuL3RyZWUvdjEuMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDI1LTExLTIxVDE2OjI4OjE5KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L2ZpbGVzeXN0ZW0iLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Ni40LjQ1IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2ZpbGVzeXN0ZW0uZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNmRhYmY0MWMyMTk1N2EyMDYwZjEwMWJkN2JmN2UzMjI5ODk4NjZiZCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvZmlsZXN5c3RlbS96aXBiYWxsLzZkYWJmNDFjMjE5NTdhMjA2MGYxMDFiZDdiZjdlMzIyOTg5ODY2YmQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2ZGFiZjQxYzIxOTU3YTIwNjBmMTAxYmQ3YmY3ZTMyMjk4OTg2NmJkIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj04LjEiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtY3R5cGUiOiAifjEuOCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZyI6ICJ+MS44IgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAic3ltZm9ueS9wcm9jZXNzIjogIl41LjR8XjYuNHxeNy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxDb21wb25lbnRcXEZpbGVzeXN0ZW1cXCI6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImV4Y2x1ZGUtZnJvbS1jbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAiL1Rlc3RzLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZhYmllbiBQb3RlbmNpZXIiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmYWJpZW5Ac3ltZm9ueS5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm92aWRlcyBiYXNpYyB1dGlsaXRpZXMgZm9yIHRoZSBmaWxlc3lzdGVtIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvZmlsZXN5c3RlbS90cmVlL3Y2LjQuNDUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9zcG9uc29yIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZhYnBvdCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvbGFzLWdyZWthcyIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9zeW1mb255L3N5bWZvbnkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInRpZGVsaWZ0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDI2LTA4LTIzVDA3OjU5OjMxKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsLWN0eXBlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuMzcuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC1jdHlwZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxNDEwNDZhOGY5NDc3OTQ4ZmYyODRmYTY1YmUyMDk1YmFhZmI5NGYyIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9wb2x5ZmlsbC1jdHlwZS96aXBiYWxsLzE0MTA0NmE4Zjk0Nzc5NDhmZjI4NGZhNjViZTIwOTViYWFmYjk0ZjIiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxNDEwNDZhOGY5NDc3OTQ4ZmYyODRmYTY1YmUyMDk1YmFhZmI5NGYyIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJwcm92aWRlIjogewogICAgICAgICAgICAgICAgImV4dC1jdHlwZSI6ICIqIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtY3R5cGUiOiAiRm9yIGJlc3QgcGVyZm9ybWFuY2UiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAidGhhbmtzIjogewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwiLAogICAgICAgICAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvcG9seWZpbGwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlN5bWZvbnlcXFBvbHlmaWxsXFxDdHlwZVxcIjogIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdlcnQgZGUgUGFndGVyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiQmFja0VuZFRlYUBnbWFpbC5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGZvciBjdHlwZSBmdW5jdGlvbnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjb21wYXRpYmlsaXR5IiwKICAgICAgICAgICAgICAgICJjdHlwZSIsCiAgICAgICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAgICAgInBvcnRhYmxlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwtY3R5cGUvdHJlZS92MS4zNy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc3ltZm9ueS5jb20vc3BvbnNvciIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mYWJwb3QiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmljb2xhcy1ncmVrYXMiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3Qvc3ltZm9ueS9zeW1mb255IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNi0wNC0xMFQxNjoxOToyMiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYxLjM4LjIiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDNkMzE4YmFkNWU3YTFiZmJkMDI2MDA5YzhiZmI4ZDhmOTlhZTZiNiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcvemlwYmFsbC9kM2QzMThiYWQ1ZTdhMWJmYmQwMjYwMDljOGJmYjhkOGY5OWFlNmI2IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDNkMzE4YmFkNWU3YTFiZmJkMDI2MDA5YzhiZmI4ZDhmOTlhZTZiNiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWljb252IjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTcuMiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInByb3ZpZGUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICJGb3IgYmVzdCBwZXJmb3JtYW5jZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJ0aGFua3MiOiB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJib290c3RyYXAucGhwIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU3ltZm9ueVxcUG9seWZpbGxcXE1ic3RyaW5nXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTmljb2xhcyBHcmVrYXMiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3ltZm9ueSBwb2x5ZmlsbCBmb3IgdGhlIE1ic3RyaW5nIGV4dGVuc2lvbiIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNvbXBhdGliaWxpdHkiLAogICAgICAgICAgICAgICAgIm1ic3RyaW5nIiwKICAgICAgICAgICAgICAgICJwb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAicG9ydGFibGUiLAogICAgICAgICAgICAgICAgInNoaW0iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZy90cmVlL3YxLjM4LjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9zcG9uc29yIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZhYnBvdCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvbGFzLWdyZWthcyIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9zeW1mb255L3N5bWZvbnkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInRpZGVsaWZ0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDI2LTA1LTI3VDA2OjU5OjMwKzAwOjAwIgogICAgICAgIH0KICAgIF0sCiAgICAicGFja2FnZXMtZGV2IjogW10sCiAgICAiYWxpYXNlcyI6IFtdLAogICAgIm1pbmltdW0tc3RhYmlsaXR5IjogInN0YWJsZSIsCiAgICAic3RhYmlsaXR5LWZsYWdzIjoge30sCiAgICAicHJlZmVyLXN0YWJsZSI6IGZhbHNlLAogICAgInByZWZlci1sb3dlc3QiOiBmYWxzZSwKICAgICJwbGF0Zm9ybSI6IHsKICAgICAgICAicGhwIjogIj49OC4xIgogICAgfSwKICAgICJwbGF0Zm9ybS1kZXYiOiB7fSwKICAgICJwbHVnaW4tYXBpLXZlcnNpb24iOiAiMi45LjAiCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/autoload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgppZiAoUEhQX1ZFUlNJT05fSUQgPCA1MDYwMCkgewogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSkgewogICAgICAgIGhlYWRlcignSFRUUC8xLjEgNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpOwogICAgfQogICAgJGVyciA9ICdDb21wb3NlciAyLjMuMCBkcm9wcGVkIHN1cHBvcnQgZm9yIGF1dG9sb2FkaW5nIG9uIFBIUCA8NS42IGFuZCB5b3UgYXJlIHJ1bm5pbmcgJy5QSFBfVkVSU0lPTi4nLCBwbGVhc2UgdXBncmFkZSBQSFAgb3IgdXNlIENvbXBvc2VyIDIuMiBMVFMgdmlhICJjb21wb3NlciBzZWxmLXVwZGF0ZSAtLTIuMiIuIEFib3J0aW5nLicuUEhQX0VPTDsKICAgIGlmICghaW5pX2dldCgnZGlzcGxheV9lcnJvcnMnKSkgewogICAgICAgIGlmIChQSFBfU0FQSSA9PT0gJ2NsaScgfHwgUEhQX1NBUEkgPT09ICdwaHBkYmcnKSB7CiAgICAgICAgICAgIGZ3cml0ZShTVERFUlIsICRlcnIpOwogICAgICAgIH0gZWxzZWlmICghaGVhZGVyc19zZW50KCkpIHsKICAgICAgICAgICAgZWNobyAkZXJyOwogICAgICAgIH0KICAgIH0KICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCRlcnIpOwp9CgpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvY29tcG9zZXIvYXV0b2xvYWRfcmVhbC5waHAnOwoKcmV0dXJuIENvbXBvc2VyQXV0b2xvYWRlckluaXQyOTMwZjRhZGM4MzViOTYyYzU4Mjg0NGNhNWJiNWVlYjo6Z2V0TG9hZGVyKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/bin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/composer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_classmap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2NsYXNzbWFwLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShfX0RJUl9fKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJ0NvbXBvc2VyXFxJbnN0YWxsZWRWZXJzaW9ucycgPT4gJHZlbmRvckRpciAuICcvY29tcG9zZXIvSW5zdGFsbGVkVmVyc2lvbnMucGhwJywKKTsK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_files.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2ZpbGVzLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShfX0RJUl9fKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJzMyMGNkZTIyZjY2ZGQ0ZjVkM2ZkNjIxZDNlODhiOThmJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLWN0eXBlL2Jvb3RzdHJhcC5waHAnLAogICAgJzBlNmQ3YmY0YTU4MTFiZmE1Y2Y0MGM1Y2NkNmZhZTZhJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nL2Jvb3RzdHJhcC5waHAnLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_namespaces.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX25hbWVzcGFjZXMucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKF9fRElSX18pOwokYmFzZURpciA9IGRpcm5hbWUoJHZlbmRvckRpcik7CgpyZXR1cm4gYXJyYXkoCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_psr4.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3BzcjQucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKF9fRElSX18pOwokYmFzZURpciA9IGRpcm5hbWUoJHZlbmRvckRpcik7CgpyZXR1cm4gYXJyYXkoCiAgICAnU3ltZm9ueVxcUG9seWZpbGxcXE1ic3RyaW5nXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcnKSwKICAgICdTeW1mb255XFxQb2x5ZmlsbFxcQ3R5cGVcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvc3ltZm9ueS9wb2x5ZmlsbC1jdHlwZScpLAogICAgJ1N5bWZvbnlcXENvbXBvbmVudFxcRmlsZXN5c3RlbVxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9zeW1mb255L2ZpbGVzeXN0ZW0nKSwKICAgICdTb3VyY2VTcGFuXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3Njc3NwaHAvc291cmNlLXNwYW4vc3JjJyksCiAgICAnU2Nzc1BocFxcU2Nzc1BocFxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9zY3NzcGhwL3Njc3NwaHAvc3JjJyksCiAgICAnU2FiYmVyd29ybVxcQ1NTXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3NhYmJlcndvcm0vcGhwLWNzcy1wYXJzZXIvc3JjJyksCiAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3Bzci9odHRwLWZhY3Rvcnkvc3JjJywgJHZlbmRvckRpciAuICcvcHNyL2h0dHAtbWVzc2FnZS9zcmMnKSwKICAgICdQYWRhbGl5YWpheVxcUEhQQXV0b3ByZWZpeGVyXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjJyksCiAgICAnTGVhZ3VlXFxVcmlcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvbGVhZ3VlL3VyaScsICR2ZW5kb3JEaXIgLiAnL2xlYWd1ZS91cmktaW50ZXJmYWNlcycpLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_real.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3JlYWwucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCmNsYXNzIENvbXBvc2VyQXV0b2xvYWRlckluaXQyOTMwZjRhZGM4MzViOTYyYzU4Mjg0NGNhNWJiNWVlYgp7CiAgICBwcml2YXRlIHN0YXRpYyAkbG9hZGVyOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZENsYXNzTG9hZGVyKCRjbGFzcykKICAgIHsKICAgICAgICBpZiAoJ0NvbXBvc2VyXEF1dG9sb2FkXENsYXNzTG9hZGVyJyA9PT0gJGNsYXNzKSB7CiAgICAgICAgICAgIHJlcXVpcmUgX19ESVJfXyAuICcvQ2xhc3NMb2FkZXIucGhwJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxDb21wb3NlclxBdXRvbG9hZFxDbGFzc0xvYWRlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldExvYWRlcigpCiAgICB7CiAgICAgICAgaWYgKG51bGwgIT09IHNlbGY6OiRsb2FkZXIpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRsb2FkZXI7CiAgICAgICAgfQoKICAgICAgICByZXF1aXJlIF9fRElSX18gLiAnL3BsYXRmb3JtX2NoZWNrLnBocCc7CgogICAgICAgIHNwbF9hdXRvbG9hZF9yZWdpc3RlcihhcnJheSgnQ29tcG9zZXJBdXRvbG9hZGVySW5pdDI5MzBmNGFkYzgzNWI5NjJjNTgyODQ0Y2E1YmI1ZWViJywgJ2xvYWRDbGFzc0xvYWRlcicpLCB0cnVlLCB0cnVlKTsKICAgICAgICBzZWxmOjokbG9hZGVyID0gJGxvYWRlciA9IG5ldyBcQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXIoXGRpcm5hbWUoX19ESVJfXykpOwogICAgICAgIHNwbF9hdXRvbG9hZF91bnJlZ2lzdGVyKGFycmF5KCdDb21wb3NlckF1dG9sb2FkZXJJbml0MjkzMGY0YWRjODM1Yjk2MmM1ODI4NDRjYTViYjVlZWInLCAnbG9hZENsYXNzTG9hZGVyJykpOwoKICAgICAgICByZXF1aXJlIF9fRElSX18gLiAnL2F1dG9sb2FkX3N0YXRpYy5waHAnOwogICAgICAgIGNhbGxfdXNlcl9mdW5jKFxDb21wb3NlclxBdXRvbG9hZFxDb21wb3NlclN0YXRpY0luaXQyOTMwZjRhZGM4MzViOTYyYzU4Mjg0NGNhNWJiNWVlYjo6Z2V0SW5pdGlhbGl6ZXIoJGxvYWRlcikpOwoKICAgICAgICAkbG9hZGVyLT5yZWdpc3Rlcih0cnVlKTsKCiAgICAgICAgJGZpbGVzVG9Mb2FkID0gXENvbXBvc2VyXEF1dG9sb2FkXENvbXBvc2VyU3RhdGljSW5pdDI5MzBmNGFkYzgzNWI5NjJjNTgyODQ0Y2E1YmI1ZWViOjokZmlsZXM7CiAgICAgICAgJHJlcXVpcmVGaWxlID0gXENsb3N1cmU6OmJpbmQoc3RhdGljIGZ1bmN0aW9uICgkZmlsZUlkZW50aWZpZXIsICRmaWxlKSB7CiAgICAgICAgICAgIGlmIChlbXB0eSgkR0xPQkFMU1snX19jb21wb3Nlcl9hdXRvbG9hZF9maWxlcyddWyRmaWxlSWRlbnRpZmllcl0pKSB7CiAgICAgICAgICAgICAgICAkR0xPQkFMU1snX19jb21wb3Nlcl9hdXRvbG9hZF9maWxlcyddWyRmaWxlSWRlbnRpZmllcl0gPSB0cnVlOwoKICAgICAgICAgICAgICAgIHJlcXVpcmUgJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9LCBudWxsLCBudWxsKTsKICAgICAgICBmb3JlYWNoICgkZmlsZXNUb0xvYWQgYXMgJGZpbGVJZGVudGlmaWVyID0+ICRmaWxlKSB7CiAgICAgICAgICAgICRyZXF1aXJlRmlsZSgkZmlsZUlkZW50aWZpZXIsICRmaWxlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbG9hZGVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_static.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3N0YXRpYy5waHAgQGdlbmVyYXRlZCBieSBDb21wb3NlcgoKbmFtZXNwYWNlIENvbXBvc2VyXEF1dG9sb2FkOwoKY2xhc3MgQ29tcG9zZXJTdGF0aWNJbml0MjkzMGY0YWRjODM1Yjk2MmM1ODI4NDRjYTViYjVlZWIKewogICAgcHVibGljIHN0YXRpYyAkZmlsZXMgPSBhcnJheSAoCiAgICAgICAgJzMyMGNkZTIyZjY2ZGQ0ZjVkM2ZkNjIxZDNlODhiOThmJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtY3R5cGUvYm9vdHN0cmFwLnBocCcsCiAgICAgICAgJzBlNmQ3YmY0YTU4MTFiZmE1Y2Y0MGM1Y2NkNmZhZTZhJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcvYm9vdHN0cmFwLnBocCcsCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgJHByZWZpeExlbmd0aHNQc3I0ID0gYXJyYXkgKAogICAgICAgICdTJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ1N5bWZvbnlcXFBvbHlmaWxsXFxNYnN0cmluZ1xcJyA9PiAyNiwKICAgICAgICAgICAgJ1N5bWZvbnlcXFBvbHlmaWxsXFxDdHlwZVxcJyA9PiAyMywKICAgICAgICAgICAgJ1N5bWZvbnlcXENvbXBvbmVudFxcRmlsZXN5c3RlbVxcJyA9PiAyOSwKICAgICAgICAgICAgJ1NvdXJjZVNwYW5cXCcgPT4gMTEsCiAgICAgICAgICAgICdTY3NzUGhwXFxTY3NzUGhwXFwnID0+IDE2LAogICAgICAgICAgICAnU2FiYmVyd29ybVxcQ1NTXFwnID0+IDE1LAogICAgICAgICksCiAgICAgICAgJ1AnID0+CiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+IDE3LAogICAgICAgICAgICAnUGFkYWxpeWFqYXlcXFBIUEF1dG9wcmVmaXhlclxcJyA9PiAyOCwKICAgICAgICApLAogICAgICAgICdMJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ0xlYWd1ZVxcVXJpXFwnID0+IDExLAogICAgICAgICksCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgJHByZWZpeERpcnNQc3I0ID0gYXJyYXkgKAogICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nJywKICAgICAgICApLAogICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcQ3R5cGVcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zeW1mb255L3BvbHlmaWxsLWN0eXBlJywKICAgICAgICApLAogICAgICAgICdTeW1mb255XFxDb21wb25lbnRcXEZpbGVzeXN0ZW1cXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zeW1mb255L2ZpbGVzeXN0ZW0nLAogICAgICAgICksCiAgICAgICAgJ1NvdXJjZVNwYW5cXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zY3NzcGhwL3NvdXJjZS1zcGFuL3NyYycsCiAgICAgICAgKSwKICAgICAgICAnU2Nzc1BocFxcU2Nzc1BocFxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3Njc3NwaHAvc2Nzc3BocC9zcmMnLAogICAgICAgICksCiAgICAgICAgJ1NhYmJlcndvcm1cXENTU1xcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3NhYmJlcndvcm0vcGhwLWNzcy1wYXJzZXIvc3JjJywKICAgICAgICApLAogICAgICAgICdQc3JcXEh0dHBcXE1lc3NhZ2VcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9wc3IvaHR0cC1mYWN0b3J5L3NyYycsCiAgICAgICAgICAgIDEgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9wc3IvaHR0cC1tZXNzYWdlL3NyYycsCiAgICAgICAgKSwKICAgICAgICAnUGFkYWxpeWFqYXlcXFBIUEF1dG9wcmVmaXhlclxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjJywKICAgICAgICApLAogICAgICAgICdMZWFndWVcXFVyaVxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2xlYWd1ZS91cmknLAogICAgICAgICAgICAxID0+IF9fRElSX18gLiAnLy4uJyAuICcvbGVhZ3VlL3VyaS1pbnRlcmZhY2VzJywKICAgICAgICApLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljICRjbGFzc01hcCA9IGFycmF5ICgKICAgICAgICAnQ29tcG9zZXJcXEluc3RhbGxlZFZlcnNpb25zJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2NvbXBvc2VyL0luc3RhbGxlZFZlcnNpb25zLnBocCcsCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5pdGlhbGl6ZXIoQ2xhc3NMb2FkZXIgJGxvYWRlcikKICAgIHsKICAgICAgICByZXR1cm4gXENsb3N1cmU6OmJpbmQoZnVuY3Rpb24gKCkgdXNlICgkbG9hZGVyKSB7CiAgICAgICAgICAgICRsb2FkZXItPnByZWZpeExlbmd0aHNQc3I0ID0gQ29tcG9zZXJTdGF0aWNJbml0MjkzMGY0YWRjODM1Yjk2MmM1ODI4NDRjYTViYjVlZWI6OiRwcmVmaXhMZW5ndGhzUHNyNDsKICAgICAgICAgICAgJGxvYWRlci0+cHJlZml4RGlyc1BzcjQgPSBDb21wb3NlclN0YXRpY0luaXQyOTMwZjRhZGM4MzViOTYyYzU4Mjg0NGNhNWJiNWVlYjo6JHByZWZpeERpcnNQc3I0OwogICAgICAgICAgICAkbG9hZGVyLT5jbGFzc01hcCA9IENvbXBvc2VyU3RhdGljSW5pdDI5MzBmNGFkYzgzNWI5NjJjNTgyODQ0Y2E1YmI1ZWViOjokY2xhc3NNYXA7CgogICAgICAgIH0sIG51bGwsIENsYXNzTG9hZGVyOjpjbGFzcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/ClassLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIENvbXBvc2VyLgogKgogKiAoYykgTmlscyBBZGVybWFubiA8bmFkZXJtYW5AbmFkZXJtYW4uZGU+CiAqICAgICBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgQ29tcG9zZXJcQXV0b2xvYWQ7CgovKioKICogQ2xhc3NMb2FkZXIgaW1wbGVtZW50cyBhIFBTUi0wLCBQU1ItNCBhbmQgY2xhc3NtYXAgY2xhc3MgbG9hZGVyLgogKgogKiAgICAgJGxvYWRlciA9IG5ldyBcQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXIoKTsKICoKICogICAgIC8vIHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBuYW1lc3BhY2VzCiAqICAgICAkbG9hZGVyLT5hZGQoJ1N5bWZvbnlcQ29tcG9uZW50JywgX19ESVJfXy4nL2NvbXBvbmVudCcpOwogKiAgICAgJGxvYWRlci0+YWRkKCdTeW1mb255JywgICAgICAgICAgIF9fRElSX18uJy9mcmFtZXdvcmsnKTsKICoKICogICAgIC8vIGFjdGl2YXRlIHRoZSBhdXRvbG9hZGVyCiAqICAgICAkbG9hZGVyLT5yZWdpc3RlcigpOwogKgogKiAgICAgLy8gdG8gZW5hYmxlIHNlYXJjaGluZyB0aGUgaW5jbHVkZSBwYXRoIChlZy4gZm9yIFBFQVIgcGFja2FnZXMpCiAqICAgICAkbG9hZGVyLT5zZXRVc2VJbmNsdWRlUGF0aCh0cnVlKTsKICoKICogSW4gdGhpcyBleGFtcGxlLCBpZiB5b3UgdHJ5IHRvIHVzZSBhIGNsYXNzIGluIHRoZSBTeW1mb255XENvbXBvbmVudAogKiBuYW1lc3BhY2Ugb3Igb25lIG9mIGl0cyBjaGlsZHJlbiAoU3ltZm9ueVxDb21wb25lbnRcQ29uc29sZSBmb3IgaW5zdGFuY2UpLAogKiB0aGUgYXV0b2xvYWRlciB3aWxsIGZpcnN0IGxvb2sgZm9yIHRoZSBjbGFzcyB1bmRlciB0aGUgY29tcG9uZW50LwogKiBkaXJlY3RvcnksIGFuZCBpdCB3aWxsIHRoZW4gZmFsbGJhY2sgdG8gdGhlIGZyYW1ld29yay8gZGlyZWN0b3J5IGlmIG5vdAogKiBmb3VuZCBiZWZvcmUgZ2l2aW5nIHVwLgogKgogKiBUaGlzIGNsYXNzIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlIFN5bWZvbnkgVW5pdmVyc2FsQ2xhc3NMb2FkZXIuCiAqCiAqIEBhdXRob3IgRmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgogKiBAYXV0aG9yIEpvcmRpIEJvZ2dpYW5vIDxqLmJvZ2dpYW5vQHNlbGQuYmU+CiAqIEBzZWUgICAgaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci0wLwogKiBAc2VlICAgIGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNC8KICovCmNsYXNzIENsYXNzTG9hZGVyCnsKICAgIC8qKiBAdmFyIFxDbG9zdXJlKHN0cmluZyk6dm9pZCAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJGluY2x1ZGVGaWxlOwoKICAgIC8qKiBAdmFyIHN0cmluZ3xudWxsICovCiAgICBwcml2YXRlICR2ZW5kb3JEaXI7CgogICAgLy8gUFNSLTQKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGFycmF5PHN0cmluZywgaW50Pj4KICAgICAqLwogICAgcHJpdmF0ZSAkcHJlZml4TGVuZ3Roc1BzcjQgPSBhcnJheSgpOwogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgbGlzdDxzdHJpbmc+PgogICAgICovCiAgICBwcml2YXRlICRwcmVmaXhEaXJzUHNyNCA9IGFycmF5KCk7CiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgJGZhbGxiYWNrRGlyc1BzcjQgPSBhcnJheSgpOwoKICAgIC8vIFBTUi0wCiAgICAvKioKICAgICAqIExpc3Qgb2YgUFNSLTAgcHJlZml4ZXMKICAgICAqCiAgICAgKiBTdHJ1Y3R1cmVkIGFzIGFycmF5KCdGIChmaXJzdCBsZXR0ZXIpJyA9PiBhcnJheSgnRm9vXEJhciAoZnVsbCBwcmVmaXgpJyA9PiBhcnJheSgncGF0aCcsICdwYXRoMicpKSkKICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgYXJyYXk8c3RyaW5nLCBsaXN0PHN0cmluZz4+PgogICAgICovCiAgICBwcml2YXRlICRwcmVmaXhlc1BzcjAgPSBhcnJheSgpOwogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlICRmYWxsYmFja0RpcnNQc3IwID0gYXJyYXkoKTsKCiAgICAvKiogQHZhciBib29sICovCiAgICBwcml2YXRlICR1c2VJbmNsdWRlUGF0aCA9IGZhbHNlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSAkY2xhc3NNYXAgPSBhcnJheSgpOwoKICAgIC8qKiBAdmFyIGJvb2wgKi8KICAgIHByaXZhdGUgJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZSA9IGZhbHNlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGJvb2w+CiAgICAgKi8KICAgIHByaXZhdGUgJG1pc3NpbmdDbGFzc2VzID0gYXJyYXkoKTsKCiAgICAvKiogQHZhciBzdHJpbmd8bnVsbCAqLwogICAgcHJpdmF0ZSAkYXBjdVByZWZpeDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBzZWxmPgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkcmVnaXN0ZXJlZExvYWRlcnMgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICR2ZW5kb3JEaXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2ZW5kb3JEaXIgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT52ZW5kb3JEaXIgPSAkdmVuZG9yRGlyOwogICAgICAgIHNlbGY6OmluaXRpYWxpemVJbmNsdWRlQ2xvc3VyZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIGxpc3Q8c3RyaW5nPj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByZWZpeGVzKCkKICAgIHsKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5wcmVmaXhlc1BzcjApKSB7CiAgICAgICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheSgnYXJyYXlfbWVyZ2UnLCBhcnJheV92YWx1ZXMoJHRoaXMtPnByZWZpeGVzUHNyMCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgbGlzdDxzdHJpbmc+PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlZml4ZXNQc3I0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByZWZpeERpcnNQc3I0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZhbGxiYWNrRGlycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZhbGxiYWNrRGlyc1BzcjQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyNDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBzdHJpbmc+IEFycmF5IG9mIGNsYXNzbmFtZSA9PiBwYXRoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGFzc01hcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJGNsYXNzTWFwIENsYXNzIHRvIGZpbGVuYW1lIG1hcAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ2xhc3NNYXAoYXJyYXkgJGNsYXNzTWFwKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y2xhc3NNYXApIHsKICAgICAgICAgICAgJHRoaXMtPmNsYXNzTWFwID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmNsYXNzTWFwLCAkY2xhc3NNYXApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5jbGFzc01hcCA9ICRjbGFzc01hcDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgYSBzZXQgb2YgUFNSLTAgZGlyZWN0b3JpZXMgZm9yIGEgZ2l2ZW4gcHJlZml4LCBlaXRoZXIKICAgICAqIGFwcGVuZGluZyBvciBwcmVwZW5kaW5nIHRvIHRoZSBvbmVzIHByZXZpb3VzbHkgc2V0IGZvciB0aGlzIHByZWZpeC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAkcHJlZml4ICBUaGUgcHJlZml4CiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+fHN0cmluZyAkcGF0aHMgICBUaGUgUFNSLTAgcm9vdCBkaXJlY3RvcmllcwogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgJHByZXBlbmQgV2hldGhlciB0byBwcmVwZW5kIHRoZSBkaXJlY3RvcmllcwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKCRwcmVmaXgsICRwYXRocywgJHByZXBlbmQgPSBmYWxzZSkKICAgIHsKICAgICAgICAkcGF0aHMgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgaWYgKCRwcmVwZW5kKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICRwYXRocywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjAsCiAgICAgICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkZmlyc3QgPSAkcHJlZml4WzBdOwogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdWyRwcmVmaXhdKSkgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSAkcGF0aHM7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICgkcHJlcGVuZCkgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICRwYXRocywKICAgICAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XQogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdWyRwcmVmaXhdLAogICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi00IGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIG5hbWVzcGFjZSwgZWl0aGVyCiAgICAgKiBhcHBlbmRpbmcgb3IgcHJlcGVuZGluZyB0byB0aGUgb25lcyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBuYW1lc3BhY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgJHByZWZpeCAgVGhlIHByZWZpeC9uYW1lc3BhY2UsIHdpdGggdHJhaWxpbmcgJ1xcJwogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPnxzdHJpbmcgJHBhdGhzICAgVGhlIFBTUi00IGJhc2UgZGlyZWN0b3JpZXMKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICRwcmVwZW5kIFdoZXRoZXIgdG8gcHJlcGVuZCB0aGUgZGlyZWN0b3JpZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFBzcjQoJHByZWZpeCwgJHBhdGhzLCAkcHJlcGVuZCA9IGZhbHNlKQogICAgewogICAgICAgICRwYXRocyA9IChhcnJheSkgJHBhdGhzOwogICAgICAgIGlmICghJHByZWZpeCkgewogICAgICAgICAgICAvLyBSZWdpc3RlciBkaXJlY3RvcmllcyBmb3IgdGhlIHJvb3QgbmFtZXNwYWNlLgogICAgICAgICAgICBpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0ID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgJHBhdGhzLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyNCwKICAgICAgICAgICAgICAgICAgICAkcGF0aHMKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoIWlzc2V0KCR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSkpIHsKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZGlyZWN0b3JpZXMgZm9yIGEgbmV3IG5hbWVzcGFjZS4KICAgICAgICAgICAgJGxlbmd0aCA9IHN0cmxlbigkcHJlZml4KTsKICAgICAgICAgICAgaWYgKCdcXCcgIT09ICRwcmVmaXhbJGxlbmd0aCAtIDFdKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiQSBub24tZW1wdHkgUFNSLTQgcHJlZml4IG11c3QgZW5kIHdpdGggYSBuYW1lc3BhY2Ugc2VwYXJhdG9yLiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhMZW5ndGhzUHNyNFskcHJlZml4WzBdXVskcHJlZml4XSA9ICRsZW5ndGg7CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSA9ICRwYXRoczsKICAgICAgICB9IGVsc2VpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgLy8gUHJlcGVuZCBkaXJlY3RvcmllcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIG5hbWVzcGFjZS4KICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAkcGF0aHMsCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBBcHBlbmQgZGlyZWN0b3JpZXMgZm9yIGFuIGFscmVhZHkgcmVnaXN0ZXJlZCBuYW1lc3BhY2UuCiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdLAogICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi0wIGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIHByZWZpeCwKICAgICAqIHJlcGxhY2luZyBhbnkgb3RoZXJzIHByZXZpb3VzbHkgc2V0IGZvciB0aGlzIHByZWZpeC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAkcHJlZml4IFRoZSBwcmVmaXgKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz58c3RyaW5nICRwYXRocyAgVGhlIFBTUi0wIGJhc2UgZGlyZWN0b3JpZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldCgkcHJlZml4LCAkcGF0aHMpCiAgICB7CiAgICAgICAgaWYgKCEkcHJlZml4KSB7CiAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnByZWZpeGVzUHNyMFskcHJlZml4WzBdXVskcHJlZml4XSA9IChhcnJheSkgJHBhdGhzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyBhIHNldCBvZiBQU1ItNCBkaXJlY3RvcmllcyBmb3IgYSBnaXZlbiBuYW1lc3BhY2UsCiAgICAgKiByZXBsYWNpbmcgYW55IG90aGVycyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBuYW1lc3BhY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgJHByZWZpeCBUaGUgcHJlZml4L25hbWVzcGFjZSwgd2l0aCB0cmFpbGluZyAnXFwnCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+fHN0cmluZyAkcGF0aHMgIFRoZSBQU1ItNCBiYXNlIGRpcmVjdG9yaWVzCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRQc3I0KCRwcmVmaXgsICRwYXRocykKICAgIHsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGVuZ3RoID0gc3RybGVuKCRwcmVmaXgpOwogICAgICAgICAgICBpZiAoJ1xcJyAhPT0gJHByZWZpeFskbGVuZ3RoIC0gMV0pIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJBIG5vbi1lbXB0eSBQU1ItNCBwcmVmaXggbXVzdCBlbmQgd2l0aCBhIG5hbWVzcGFjZSBzZXBhcmF0b3IuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnByZWZpeExlbmd0aHNQc3I0WyRwcmVmaXhbMF1dWyRwcmVmaXhdID0gJGxlbmd0aDsKICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVHVybnMgb24gc2VhcmNoaW5nIHRoZSBpbmNsdWRlIHBhdGggZm9yIGNsYXNzIGZpbGVzLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICR1c2VJbmNsdWRlUGF0aAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VXNlSW5jbHVkZVBhdGgoJHVzZUluY2x1ZGVQYXRoKQogICAgewogICAgICAgICR0aGlzLT51c2VJbmNsdWRlUGF0aCA9ICR1c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIENhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBhdXRvbG9hZGVyIHVzZXMgdGhlIGluY2x1ZGUgcGF0aCB0byBjaGVjawogICAgICogZm9yIGNsYXNzZXMuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VJbmNsdWRlUGF0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIFR1cm5zIG9mZiBzZWFyY2hpbmcgdGhlIHByZWZpeCBhbmQgZmFsbGJhY2sgZGlyZWN0b3JpZXMgZm9yIGNsYXNzZXMKICAgICAqIHRoYXQgaGF2ZSBub3QgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGNsYXNzIG1hcC4KICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbCAkY2xhc3NNYXBBdXRob3JpdGF0aXZlCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzc01hcEF1dGhvcml0YXRpdmUoJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlID0gJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNob3VsZCBjbGFzcyBsb29rdXAgZmFpbCBpZiBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgY2xhc3MgbWFwPwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDbGFzc01hcEF1dGhvcml0YXRpdmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlOwogICAgfQoKICAgIC8qKgogICAgICogQVBDdSBwcmVmaXggdG8gdXNlIHRvIGNhY2hlIGZvdW5kL25vdC1mb3VuZCBjbGFzc2VzLCBpZiB0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRhcGN1UHJlZml4CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRBcGN1UHJlZml4KCRhcGN1UHJlZml4KQogICAgewogICAgICAgICR0aGlzLT5hcGN1UHJlZml4ID0gZnVuY3Rpb25fZXhpc3RzKCdhcGN1X2ZldGNoJykgJiYgZmlsdGVyX3ZhcihpbmlfZ2V0KCdhcGMuZW5hYmxlZCcpLCBGSUxURVJfVkFMSURBVEVfQk9PTEVBTikgPyAkYXBjdVByZWZpeCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgQVBDdSBwcmVmaXggaW4gdXNlLCBvciBudWxsIGlmIEFQQ3UgY2FjaGluZyBpcyBub3QgZW5hYmxlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcGN1UHJlZml4KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFwY3VQcmVmaXg7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgdGhpcyBpbnN0YW5jZSBhcyBhbiBhdXRvbG9hZGVyLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICRwcmVwZW5kIFdoZXRoZXIgdG8gcHJlcGVuZCB0aGUgYXV0b2xvYWRlciBvciBub3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2lzdGVyKCRwcmVwZW5kID0gZmFsc2UpCiAgICB7CiAgICAgICAgc3BsX2F1dG9sb2FkX3JlZ2lzdGVyKGFycmF5KCR0aGlzLCAnbG9hZENsYXNzJyksIHRydWUsICRwcmVwZW5kKTsKCiAgICAgICAgaWYgKG51bGwgPT09ICR0aGlzLT52ZW5kb3JEaXIpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwcmVwZW5kKSB7CiAgICAgICAgICAgIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVycyA9IGFycmF5KCR0aGlzLT52ZW5kb3JEaXIgPT4gJHRoaXMpICsgc2VsZjo6JHJlZ2lzdGVyZWRMb2FkZXJzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHVuc2V0KHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyc1skdGhpcy0+dmVuZG9yRGlyXSk7CiAgICAgICAgICAgIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyc1skdGhpcy0+dmVuZG9yRGlyXSA9ICR0aGlzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFVucmVnaXN0ZXJzIHRoaXMgaW5zdGFuY2UgYXMgYW4gYXV0b2xvYWRlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVucmVnaXN0ZXIoKQogICAgewogICAgICAgIHNwbF9hdXRvbG9hZF91bnJlZ2lzdGVyKGFycmF5KCR0aGlzLCAnbG9hZENsYXNzJykpOwoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPnZlbmRvckRpcikgewogICAgICAgICAgICB1bnNldChzZWxmOjokcmVnaXN0ZXJlZExvYWRlcnNbJHRoaXMtPnZlbmRvckRpcl0pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExvYWRzIHRoZSBnaXZlbiBjbGFzcyBvciBpbnRlcmZhY2UuCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgICAgJGNsYXNzIFRoZSBuYW1lIG9mIHRoZSBjbGFzcwogICAgICogQHJldHVybiB0cnVlfG51bGwgVHJ1ZSBpZiBsb2FkZWQsIG51bGwgb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQ2xhc3MoJGNsYXNzKQogICAgewogICAgICAgIGlmICgkZmlsZSA9ICR0aGlzLT5maW5kRmlsZSgkY2xhc3MpKSB7CiAgICAgICAgICAgICRpbmNsdWRlRmlsZSA9IHNlbGY6OiRpbmNsdWRlRmlsZTsKICAgICAgICAgICAgJGluY2x1ZGVGaWxlKCRmaWxlKTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kcyB0aGUgcGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgY2xhc3MgaXMgZGVmaW5lZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xmYWxzZSBUaGUgcGF0aCBpZiBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmaW5kRmlsZSgkY2xhc3MpCiAgICB7CiAgICAgICAgLy8gY2xhc3MgbWFwIGxvb2t1cAogICAgICAgIGlmIChpc3NldCgkdGhpcy0+Y2xhc3NNYXBbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcFskY2xhc3NdOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPmNsYXNzTWFwQXV0aG9yaXRhdGl2ZSB8fCBpc3NldCgkdGhpcy0+bWlzc2luZ0NsYXNzZXNbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgJGZpbGUgPSBhcGN1X2ZldGNoKCR0aGlzLT5hcGN1UHJlZml4LiRjbGFzcywgJGhpdCk7CiAgICAgICAgICAgIGlmICgkaGl0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRmaWxlID0gJHRoaXMtPmZpbmRGaWxlV2l0aEV4dGVuc2lvbigkY2xhc3MsICcucGhwJyk7CgogICAgICAgIC8vIFNlYXJjaCBmb3IgSGFjayBmaWxlcyBpZiB3ZSBhcmUgcnVubmluZyBvbiBISFZNCiAgICAgICAgaWYgKGZhbHNlID09PSAkZmlsZSAmJiBkZWZpbmVkKCdISFZNX1ZFUlNJT04nKSkgewogICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5maW5kRmlsZVdpdGhFeHRlbnNpb24oJGNsYXNzLCAnLmhoJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgYXBjdV9hZGQoJHRoaXMtPmFwY3VQcmVmaXguJGNsYXNzLCAkZmlsZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmFsc2UgPT09ICRmaWxlKSB7CiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoYXQgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdC4KICAgICAgICAgICAgJHRoaXMtPm1pc3NpbmdDbGFzc2VzWyRjbGFzc10gPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaWxlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgbG9hZGVycyBrZXllZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHZlbmRvciBkaXJlY3Rvcmllcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgc2VsZj4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWdpc3RlcmVkTG9hZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICRjbGFzcwogICAgICogQHBhcmFtICBzdHJpbmcgICAgICAgJGV4dAogICAgICogQHJldHVybiBzdHJpbmd8ZmFsc2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaW5kRmlsZVdpdGhFeHRlbnNpb24oJGNsYXNzLCAkZXh0KQogICAgewogICAgICAgIC8vIFBTUi00IGxvb2t1cAogICAgICAgICRsb2dpY2FsUGF0aFBzcjQgPSBzdHJ0cigkY2xhc3MsICdcXCcsIERJUkVDVE9SWV9TRVBBUkFUT1IpIC4gJGV4dDsKCiAgICAgICAgJGZpcnN0ID0gJGNsYXNzWzBdOwogICAgICAgIGlmIChpc3NldCgkdGhpcy0+cHJlZml4TGVuZ3Roc1BzcjRbJGZpcnN0XSkpIHsKICAgICAgICAgICAgJHN1YlBhdGggPSAkY2xhc3M7CiAgICAgICAgICAgIHdoaWxlIChmYWxzZSAhPT0gJGxhc3RQb3MgPSBzdHJycG9zKCRzdWJQYXRoLCAnXFwnKSkgewogICAgICAgICAgICAgICAgJHN1YlBhdGggPSBzdWJzdHIoJHN1YlBhdGgsIDAsICRsYXN0UG9zKTsKICAgICAgICAgICAgICAgICRzZWFyY2ggPSAkc3ViUGF0aCAuICdcXCc7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeERpcnNQc3I0WyRzZWFyY2hdKSkgewogICAgICAgICAgICAgICAgICAgICRwYXRoRW5kID0gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAkbGFzdFBvcyArIDEpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wcmVmaXhEaXJzUHNyNFskc2VhcmNoXSBhcyAkZGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiAkcGF0aEVuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTQgZmFsbGJhY2sgZGlycwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mYWxsYmFja0RpcnNQc3I0IGFzICRkaXIpIHsKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbG9naWNhbFBhdGhQc3I0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQU1ItMCBsb29rdXAKICAgICAgICBpZiAoZmFsc2UgIT09ICRwb3MgPSBzdHJycG9zKCRjbGFzcywgJ1xcJykpIHsKICAgICAgICAgICAgLy8gbmFtZXNwYWNlZCBjbGFzcyBuYW1lCiAgICAgICAgICAgICRsb2dpY2FsUGF0aFBzcjAgPSBzdWJzdHIoJGxvZ2ljYWxQYXRoUHNyNCwgMCwgJHBvcyArIDEpCiAgICAgICAgICAgICAgICAuIHN0cnRyKHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAkcG9zICsgMSksICdfJywgRElSRUNUT1JZX1NFUEFSQVRPUik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gUEVBUi1saWtlIGNsYXNzIG5hbWUKICAgICAgICAgICAgJGxvZ2ljYWxQYXRoUHNyMCA9IHN0cnRyKCRjbGFzcywgJ18nLCBESVJFQ1RPUllfU0VQQVJBVE9SKSAuICRleHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF0gYXMgJHByZWZpeCA9PiAkZGlycykgewogICAgICAgICAgICAgICAgaWYgKDAgPT09IHN0cnBvcygkY2xhc3MsICRwcmVmaXgpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRpcnMgYXMgJGRpcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSAkZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRsb2dpY2FsUGF0aFBzcjApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFBTUi0wIGZhbGxiYWNrIGRpcnMKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCBhcyAkZGlyKSB7CiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGxvZ2ljYWxQYXRoUHNyMCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTAgaW5jbHVkZSBwYXRocy4KICAgICAgICBpZiAoJHRoaXMtPnVzZUluY2x1ZGVQYXRoICYmICRmaWxlID0gc3RyZWFtX3Jlc29sdmVfaW5jbHVkZV9wYXRoKCRsb2dpY2FsUGF0aFBzcjApKSB7CiAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpbml0aWFsaXplSW5jbHVkZUNsb3N1cmUoKQogICAgewogICAgICAgIGlmIChzZWxmOjokaW5jbHVkZUZpbGUgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogU2NvcGUgaXNvbGF0ZWQgaW5jbHVkZS4KICAgICAgICAgKgogICAgICAgICAqIFByZXZlbnRzIGFjY2VzcyB0byAkdGhpcy9zZWxmIGZyb20gaW5jbHVkZWQgZmlsZXMuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gIHN0cmluZyAkZmlsZQogICAgICAgICAqIEByZXR1cm4gdm9pZAogICAgICAgICAqLwogICAgICAgIHNlbGY6OiRpbmNsdWRlRmlsZSA9IFxDbG9zdXJlOjpiaW5kKHN0YXRpYyBmdW5jdGlvbigkZmlsZSkgewogICAgICAgICAgICBpbmNsdWRlICRmaWxlOwogICAgICAgIH0sIG51bGwsIG51bGwpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/installed.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgICAgICJwYWNrYWdlcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibGVhZ3VlL3VyaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjcuOC4xIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICI3LjguMS4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS91cmkuZ2l0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjA4Y2YzOGUzOTI0ZDRmNTYyMzgxMjU1NDdiNTcyMDQ5NmZhYzhmZDQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3RoZXBocGxlYWd1ZS91cmkvemlwYmFsbC8wOGNmMzhlMzkyNGQ0ZjU2MjM4MTI1NTQ3YjU3MjA0OTZmYWM4ZmQ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjA4Y2YzOGUzOTI0ZDRmNTYyMzgxMjU1NDdiNTcyMDQ5NmZhYzhmZDQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGVhZ3VlL3VyaS1pbnRlcmZhY2VzIjogIl43LjguMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBocCI6ICJeOC4xIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyL2h0dHAtZmFjdG9yeSI6ICJeMSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImNvbmZsaWN0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZWFndWUvdXJpLXNjaGVtZXMiOiAiXjEuMCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dC1iY21hdGgiOiAidG8gaW1wcm92ZSBJUFY0IGhvc3QgcGFyc2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dC1kb20iOiAidG8gY29udmVydCB0aGUgVVJJIGludG8gYW4gSFRNTCBhbmNob3IgdGFnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0LWZpbGVpbmZvIjogInRvIGNyZWF0ZSBEYXRhIFVSSSBmcm9tIGZpbGUgY29udGVubnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0LWdtcCI6ICJ0byBpbXByb3ZlIElQVjQgaG9zdCBwYXJzaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0LWludGwiOiAidG8gaGFuZGxlIElETiBob3N0IHdpdGggdGhlIGJlc3QgcGVyZm9ybWFuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHQtdXJpIjogInRvIHVzZSB0aGUgUEhQIG5hdGl2ZSBVUkkgY2xhc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqZXJlbXlrZW5kYWxsL3BocC1kb21haW4tcGFyc2VyIjogInRvIGZ1cnRoZXIgcGFyc2UgdGhlIFVSSSBob3N0IGFuZCByZXNvbHZlIGl0cyBQdWJsaWMgU3VmZml4IGFuZCBUb3AgTGV2ZWwgRG9tYWluIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGVhZ3VlL3VyaS1jb21wb25lbnRzIjogInRvIHByb3ZpZGUgYWRkaXRpb25hbCB0b29scyB0byBtYW5pcHVsYXRlIFVSSSBvYmplY3RzIGNvbXBvbmVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZWFndWUvdXJpLXBvbHlmaWxsIjogInRvIGJhY2twb3J0IHRoZSBQSFAgVVJJIGV4dGVuc2lvbiBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgUEhQIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGhwLTY0Yml0IjogInRvIGltcHJvdmUgSVBWNCBob3N0IHBhcnNpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyb3dib3QvdXJsIjogInRvIGhhbmRsZSBVUkxzIHVzaW5nIHRoZSBXSEFUV0cgVVJMIExpdmluZyBTdGFuZGFyZCBzcGVjaWZpY2F0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1pbnRsLWlkbiI6ICJ0byBoYW5kbGUgSUROIGhvc3QgdmlhIHRoZSBTeW1mb255IHBvbHlmaWxsIGlmIGV4dC1pbnRsIGlzIG5vdCBwcmVzZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidGltZSI6ICIyMDI2LTAzLTE1VDIwOjIyOjI1KzAwOjAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiNy54LWRldiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlYWd1ZVxcVXJpXFwiOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAgICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJJZ25hY2UgTnlhbWFnYW5hIEJ1dGVyYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibnlhbXNwcm9kQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9ueWFtc3Byb2QuY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVSSSBtYW5pcHVsYXRpb24gbGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tIiwKICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVUk4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhLXVyaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUtdXJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnRwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaWRkbGV3YXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2Vfc3RyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2VfdXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyeS1zdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyeXN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJmYzIxNDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZmMzOTg2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmZjMzk4NyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJmYzY1NzAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZmM4MTQxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJpLXRlbXBsYXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3MiCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2NzIjogImh0dHBzOi8vdXJpLnRoZXBocGxlYWd1ZS5jb20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3J1bSI6ICJodHRwczovL3RoZXBocGxlYWd1ZS5zbGFjay5jb20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS91cmktc3JjL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL3VyaS90cmVlLzcuOC4xIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9ueWFtc3Byb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9sZWFndWUvdXJpIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibGVhZ3VlL3VyaS1pbnRlcmZhY2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiNy44LjEiLAogICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjcuOC4xLjAiLAogICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL3VyaS1pbnRlcmZhY2VzLmdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI4NWQ1Yzc3YzVkNmQzYWY2YzU0ZGI0YTc4MjQ2MzY0OTA4ZjNjOTI4IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy90aGVwaHBsZWFndWUvdXJpLWludGVyZmFjZXMvemlwYmFsbC84NWQ1Yzc3YzVkNmQzYWY2YzU0ZGI0YTc4MjQ2MzY0OTA4ZjNjOTI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjg1ZDVjNzdjNWQ2ZDNhZjZjNTRkYjRhNzgyNDYzNjQ5MDhmM2M5MjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0LWZpbHRlciI6ICIqIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGhwIjogIl44LjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlIjogIl4xLjEgfHwgXjIuMCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dC1iY21hdGgiOiAidG8gaW1wcm92ZSBJUFY0IGhvc3QgcGFyc2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dC1nbXAiOiAidG8gaW1wcm92ZSBJUFY0IGhvc3QgcGFyc2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dC1pbnRsIjogInRvIGhhbmRsZSBJRE4gaG9zdCB3aXRoIHRoZSBiZXN0IHBlcmZvcm1hbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGhwLTY0Yml0IjogInRvIGltcHJvdmUgSVBWNCBob3N0IHBhcnNpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyb3dib3QvdXJsIjogInRvIGhhbmRsZSBVUkxzIHVzaW5nIHRoZSBXSEFUV0cgVVJMIExpdmluZyBTdGFuZGFyZCBzcGVjaWZpY2F0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1pbnRsLWlkbiI6ICJ0byBoYW5kbGUgSUROIGhvc3QgdmlhIHRoZSBTeW1mb255IHBvbHlmaWxsIGlmIGV4dC1pbnRsIGlzIG5vdCBwcmVzZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidGltZSI6ICIyMDI2LTAzLTA4VDIwOjA1OjM1KzAwOjAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiNy54LWRldiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlYWd1ZVxcVXJpXFwiOiAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAgICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJJZ25hY2UgTnlhbWFnYW5hIEJ1dGVyYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibnlhbXNwcm9kQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9ueWFtc3Byb2QuY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbW1vbiB0b29scyBmb3IgcGFyc2luZyBhbmQgcmVzb2x2aW5nIFJGQzM5ODcvUkZDMzk4NiBVUkkiLAogICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly91cmkudGhlcGhwbGVhZ3VlLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS11cmkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlLXVyaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ0cCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2Vfc3RyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2VfdXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyeS1zdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyeXN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJmYzM5ODYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZmMzOTg3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmZjNjU3MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVyaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndzIgogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9jcyI6ICJodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ydW0iOiAiaHR0cHM6Ly90aGVwaHBsZWFndWUuc2xhY2suY29tIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvdXJpLXNyYy9pc3N1ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS91cmktaW50ZXJmYWNlcy90cmVlLzcuOC4xIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9ueWFtc3Byb2QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9sZWFndWUvdXJpLWludGVyZmFjZXMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS40IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjQuMC4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIuZ2l0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjE3YWM5ZDIwYzBlNDUyMTE2M2EwNjFkNGY5OWYzZDMxZjg4ZTc5N2UiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvemlwYmFsbC8xN2FjOWQyMGMwZTQ1MjExNjNhMDYxZDRmOTlmM2QzMWY4OGU3OTdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjE3YWM5ZDIwYzBlNDUyMTE2M2EwNjFkNGY5OWYzZDMxZjg4ZTc5N2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FiYmVyd29ybS9waHAtY3NzLXBhcnNlciI6ICIqIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidGltZSI6ICIyMDIyLTA4LTAyVDAyOjM3OjI4KzAwOjAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhZGFsaXlhamF5XFxQSFBBdXRvcHJlZml4ZXJcXCI6ICJzcmMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkpheSBwYWRhbGl5YSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDU1MgQXV0b3ByZWZpeGVyIHdyaXR0ZW4gaW4gcHVyZSBQSFAuIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9pc3N1ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvdHJlZS8xLjQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsLXBhdGgiOiAiLi4vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogInBzci9odHRwLWZhY3RvcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4xLjAuMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtZmFjdG9yeS5naXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMmI0NzY1ZmRkZmUzYjUwOGFjNjJmODI5ZTg1MmIxNTAxZDNmNmU4YSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwLWZpZy9odHRwLWZhY3RvcnkvemlwYmFsbC8yYjQ3NjVmZGRmZTNiNTA4YWM2MmY4MjllODUyYjE1MDFkM2Y2ZThhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjJiNDc2NWZkZGZlM2I1MDhhYzYyZjgyOWU4NTJiMTUwMWQzZjZlOGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4xIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4wIHx8IF4yLjAiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMjQtMDQtMTVUMTI6MDY6MTQrMDA6MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQc3JcXEh0dHBcXE1lc3NhZ2VcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAgICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTE3OiBDb21tb24gaW50ZXJmYWNlcyBmb3IgUFNSLTcgSFRUUCBtZXNzYWdlIGZhY3RvcmllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFjdG9yeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTE3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzcG9uc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1mYWN0b3J5IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3Bzci9odHRwLWZhY3RvcnkiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJwc3IvaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjAuMC4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlLmdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDJkMzViY2I5MmM3MGMwMjZkMWE2YTk4ODNmMDZiMmVhZDIzZDcxIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2h0dHAtbWVzc2FnZS96aXBiYWxsLzQwMmQzNWJjYjkyYzcwYzAyNmQxYTZhOTg4M2YwNmIyZWFkMjNkNzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDAyZDM1YmNiOTJjNzBjMDI2ZDFhNmE5ODgzZjA2YjJlYWQyM2Q3MSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMiB8fCBeOC4wIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidGltZSI6ICIyMDIzLTA0LTA0VDA5OjU0OjUxKzAwOjAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMi4wLngtZGV2IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUEhQLUZJRyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbW1vbiBpbnRlcmZhY2UgZm9yIEhUVFAgbWVzc2FnZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzcG9uc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlL3RyZWUvMi4wIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3Bzci9odHRwLW1lc3NhZ2UiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAidjguOS4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICI4LjkuMC4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL015SW50ZXJ2YWxzL1BIUC1DU1MtUGFyc2VyLmdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJkOGU5MTY1MDdiODhlMzg5ZTI2ZDRhYjAzYzkwNGEwODJhYTY2YmI5IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9NeUludGVydmFscy9QSFAtQ1NTLVBhcnNlci96aXBiYWxsL2Q4ZTkxNjUwN2I4OGUzODllMjZkNGFiMDNjOTA0YTA4MmFhNjZiYjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDhlOTE2NTA3Yjg4ZTM4OWUyNmQ0YWIwM2M5MDRhMDgyYWE2NmJiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHQtaWNvbnYiOiAiKiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBocCI6ICJeNS42LjIwIHx8IF43LjAuMCB8fCB+OC4wLjAgfHwgfjguMS4wIHx8IH44LjIuMCB8fCB+OC4zLjAgfHwgfjguNC4wIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICI1LjcuMjcgfHwgNi41LjE0IHx8IDcuNS4yMCB8fCA4LjUuNDEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyYXdyL2Nyb3NzLWRhdGEtcHJvdmlkZXJzIjogIl4yLjAuMCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICJmb3IgcGFyc2luZyBVVEYtOCBDU1MiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMjUtMDctMTFUMTM6MjA6NDgrMDA6MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2LW1haW4iOiAiOS4wLngtZGV2IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2FiYmVyd29ybVxcQ1NTXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUmFwaGFlbCBTY2h3ZWlrZXJ0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiT2xpdmVyIEtsZWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImdpdGh1YkBvbGl2ZXJrbGVlLmRlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSmFrZSBIb3Rzb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImpha2UuZ2l0aHViQHF6ZGVzaWduLmNvLnVrIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhcnNlciBmb3IgQ1NTIEZpbGVzIHdyaXR0ZW4gaW4gUEhQIiwKICAgICAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vd3d3LnNhYmJlcndvcm0uY29tL2Jsb2cvMjAxMC82LzEwL3BocC1jc3MtcGFyc2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJzZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXNoZWV0IgogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NeUludGVydmFscy9QSFAtQ1NTLVBhcnNlci9pc3N1ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL015SW50ZXJ2YWxzL1BIUC1DU1MtUGFyc2VyL3RyZWUvdjguOS4wIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3NhYmJlcndvcm0vcGhwLWNzcy1wYXJzZXIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzY3NzcGhwL3Njc3NwaHAiLAogICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4xLjAiLAogICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuMS4wLjAiLAogICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2Nzc3BocC9zY3NzcGhwLmdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJkODQ1MGMyYmFmNWZiMDdkMDAzNzQ5OTlkMGVhNTEyNzY5NzRkMWI2IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zY3NzcGhwL3Njc3NwaHAvemlwYmFsbC9kODQ1MGMyYmFmNWZiMDdkMDAzNzQ5OTlkMGVhNTEyNzY5NzRkMWI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQ4NDUwYzJiYWY1ZmIwN2QwMDM3NDk5OWQwZWE1MTI3Njk3NGQxYjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0LWN0eXBlIjogIioiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHQtanNvbiI6ICIqIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZWFndWUvdXJpIjogIl43LjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZWFndWUvdXJpLWludGVyZmFjZXMiOiAiXjcuNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBocCI6ICI+PTguMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjc3NwaHAvc291cmNlLXNwYW4iOiAiXjEuMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5bWZvbnkvZmlsZXN5c3RlbSI6ICJeNS40IHx8IF42LjAgfHwgXjcuMCB8fCBeOC4wIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpndGhtcy9idWxtYSI6ICJ+MC45LjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqaXJpcHVkaWwvcGhwc3Rhbi1zZWFsZWQtY2xhc3NlcyI6ICJeMS4zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuIjogIl4yLjEuMzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tZGVwcmVjYXRpb24tcnVsZXMiOiAiXjIuMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOS41LjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzYXNzL3Nhc3Mtc3BlYyI6ICIqIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlciI6ICJeMy4xMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5bWZvbnkvcGhwdW5pdC1icmlkZ2UiOiAiXjcuMyB8fCBeOC4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1waHA4NCI6ICJeMS4zMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5bWZvbnkvdmFyLWR1bXBlciI6ICJeNi40IHx8IF43LjMgfHwgXjguMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRob3VnaHRib3QvYm91cmJvbiI6ICJeNy4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdicy9ib290c3RyYXAiOiAiXjUuMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3YnMvYm9vdHN0cmFwNCI6ICI0LjYuMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInp1cmIvZm91bmRhdGlvbiI6ICJ+Ni43LjAiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIjogIjIwMjUtMTEtMjFUMTc6Mjc6NTkrMDA6MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Nzc1BocFxcU2Nzc1BocFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFudGhvbiBQYW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhcGFuZ0Bzb2Z0d2FyZWRldmVsb3BtZW50LmNhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcm9ib2NvZGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ8OpZHJpYyBNb3JpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiY2VkcmljQHl0ZXJpdW0uY29tIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2VyZGljIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNjc3NwaHAgaXMgYSBjb21waWxlciBmb3IgU0NTUyB3cml0dGVuIGluIFBIUC4iLAogICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3NzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGVzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNhc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3NzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVzaGVldCIKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vc2Nzc3BocC9zY3NzcGhwL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc2Nzc3BocC9zY3NzcGhwL3RyZWUvdjIuMS4wIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3Njc3NwaHAvc2Nzc3BocCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogInNjc3NwaHAvc291cmNlLXNwYW4iLAogICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICJ2MS4xLjAiLAogICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjEuMS4wLjAiLAogICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2Nzc3BocC9zb3VyY2Utc3Bhbi5naXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMzdkNjUzMjA2ZGFmMTFkYTFlZTYwYjMzMzk4NDEwMWJjNGMyN2JhMiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2Nzc3BocC9zb3VyY2Utc3Bhbi96aXBiYWxsLzM3ZDY1MzIwNmRhZjExZGExZWU2MGIzMzM5ODQxMDFiYzRjMjdiYTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMzdkNjUzMjA2ZGFmMTFkYTFlZTYwYjMzMzk4NDEwMWJjNGMyN2JhMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHQtbWJzdHJpbmciOiAiKiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxlYWd1ZS91cmkiOiAiXjcuNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxlYWd1ZS91cmktaW50ZXJmYWNlcyI6ICJeNy42IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGhwIjogIj49OC4xIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBocHN0YW4vcGhwc3RhbiI6ICJeMi4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuLWRlcHJlY2F0aW9uLXJ1bGVzIjogIl4yLjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjkuNS42IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlciI6ICJ+My41IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ltZm9ueS9waHB1bml0LWJyaWRnZSI6ICJeNi40IHx8IF43LjMgfHwgXjguMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5bWZvbnkvdmFyLWR1bXBlciI6ICJeNi40IHx8IF43LjMgfHwgXjguMCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiOiAiMjAyNS0xMS0yMVQxNjoyODoxOSswMDowMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXYtbWFpbiI6ICIxLngtZGV2IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291cmNlU3BhblxcIjogInNyYy8iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNocmlzdG9waGUgQ29ldm9ldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0b2YiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlkZXMgYSByZXByZXNlbnRhdGlvbiBmb3Igc291cmNlIGNvZGUgbG9jYXRpb25zIGFuZCBzcGFucy4iLAogICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcnNpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Njc3NwaHAvc291cmNlLXNwYW4vaXNzdWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zY3NzcGhwL3NvdXJjZS1zcGFuL3RyZWUvdjEuMS4wIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3Njc3NwaHAvc291cmNlLXNwYW4iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L2ZpbGVzeXN0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICJ2Ni40LjQ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICI2LjQuNDUuMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2ZpbGVzeXN0ZW0uZ2l0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjZkYWJmNDFjMjE5NTdhMjA2MGYxMDFiZDdiZjdlMzIyOTg5ODY2YmQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvZmlsZXN5c3RlbS96aXBiYWxsLzZkYWJmNDFjMjE5NTdhMjA2MGYxMDFiZDdiZjdlMzIyOTg5ODY2YmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNmRhYmY0MWMyMTk1N2EyMDYwZjEwMWJkN2JmN2UzMjI5ODk4NjZiZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwaHAiOiAiPj04LjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLWN0eXBlIjogIn4xLjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIn4xLjgiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ltZm9ueS9wcm9jZXNzIjogIl41LjR8XjYuNHxeNy4wIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidGltZSI6ICIyMDI2LTA4LTIzVDA3OjU5OjMxKzAwOjAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN5bWZvbnlcXENvbXBvbmVudFxcRmlsZXN5c3RlbVxcIjogIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdWRlLWZyb20tY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL1Rlc3RzLyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmFiaWVuIFBvdGVuY2llciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZmFiaWVuQHN5bWZvbnkuY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGJhc2ljIHV0aWxpdGllcyBmb3IgdGhlIGZpbGVzeXN0ZW0iLAogICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvZmlsZXN5c3RlbS90cmVlL3Y2LjQuNDUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9zcG9uc29yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZhYnBvdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvbGFzLWdyZWthcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9zeW1mb255L3N5bWZvbnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAidGlkZWxpZnQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3N5bWZvbnkvZmlsZXN5c3RlbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvcG9seWZpbGwtY3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICJ2MS4zNy4wIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjM3LjAuMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsLWN0eXBlLmdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxNDEwNDZhOGY5NDc3OTQ4ZmYyODRmYTY1YmUyMDk1YmFhZmI5NGYyIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L3BvbHlmaWxsLWN0eXBlL3ppcGJhbGwvMTQxMDQ2YThmOTQ3Nzk0OGZmMjg0ZmE2NWJlMjA5NWJhYWZiOTRmMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxNDEwNDZhOGY5NDc3OTQ4ZmYyODRmYTY1YmUyMDk1YmFhZmI5NGYyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBocCI6ICI+PTcuMiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInByb3ZpZGUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dC1jdHlwZSI6ICIqIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0LWN0eXBlIjogIkZvciBiZXN0IHBlcmZvcm1hbmNlIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidGltZSI6ICIyMDI2LTA0LTEwVDE2OjE5OjIyKzAwOjAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhbmtzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxQb2x5ZmlsbFxcQ3R5cGVcXCI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdlcnQgZGUgUGFndGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJCYWNrRW5kVGVhQGdtYWlsLmNvbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGZvciBjdHlwZSBmdW5jdGlvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJpbGl0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN0eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3J0YWJsZSIKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC1jdHlwZS90cmVlL3YxLjM3LjAiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9zcG9uc29yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZhYnBvdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvbGFzLWdyZWthcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9zeW1mb255L3N5bWZvbnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAidGlkZWxpZnQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3N5bWZvbnkvcG9seWZpbGwtY3R5cGUiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAidjEuMzguMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4zOC4yLjAiLAogICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZy5naXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDNkMzE4YmFkNWU3YTFiZmJkMDI2MDA5YzhiZmI4ZDhmOTlhZTZiNiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZy96aXBiYWxsL2QzZDMxOGJhZDVlN2ExYmZiZDAyNjAwOWM4YmZiOGQ4Zjk5YWU2YjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDNkMzE4YmFkNWU3YTFiZmJkMDI2MDA5YzhiZmI4ZDhmOTlhZTZiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHQtaWNvbnYiOiAiKiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBocCI6ICI+PTcuMiIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInByb3ZpZGUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIkZvciBiZXN0IHBlcmZvcm1hbmNlIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidGltZSI6ICIyMDI2LTA1LTI3VDA2OjU5OjMwKzAwOjAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhbmtzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCI6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk5pY29sYXMgR3Jla2FzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgcG9seWZpbGwgZm9yIHRoZSBNYnN0cmluZyBleHRlbnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJpbGl0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3J0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNoaW0iCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcvdHJlZS92MS4zOC4yIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc3ltZm9ueS5jb20vc3BvbnNvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJjdXN0b20iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mYWJwb3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmljb2xhcy1ncmVrYXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3Qvc3ltZm9ueS9zeW1mb255IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInRpZGVsaWZ0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIgogICAgICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImRldiI6IHRydWUsCiAgICAgICAgImRldi1wYWNrYWdlLW5hbWVzIjogW10KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/installed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgcmV0dXJuIGFycmF5KAogICAgJ3Jvb3QnID0+IGFycmF5KAogICAgICAgICduYW1lJyA9PiAnYWlyZWxpYnJlL2Nzc3ByZXByb2Nlc3NvcicsCiAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAnMS4wLjArbm8tdmVyc2lvbi1zZXQnLAogICAgICAgICd2ZXJzaW9uJyA9PiAnMS4wLjAuMCcsCiAgICAgICAgJ3JlZmVyZW5jZScgPT4gbnVsbCwKICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uLy4uLycsCiAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgJ2RldicgPT4gdHJ1ZSwKICAgICksCiAgICAndmVyc2lvbnMnID0+IGFycmF5KAogICAgICAgICdhaXJlbGlicmUvY3NzcHJlcHJvY2Vzc29yJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAnMS4wLjArbm8tdmVyc2lvbi1zZXQnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzEuMC4wLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiBudWxsLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi8uLi8nLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAnbGVhZ3VlL3VyaScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzcuOC4xJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICc3LjguMS4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzA4Y2YzOGUzOTI0ZDRmNTYyMzgxMjU1NDdiNTcyMDQ5NmZhYzhmZDQnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9sZWFndWUvdXJpJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ2xlYWd1ZS91cmktaW50ZXJmYWNlcycgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzcuOC4xJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICc3LjguMS4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzg1ZDVjNzdjNWQ2ZDNhZjZjNTRkYjRhNzgyNDYzNjQ5MDhmM2M5MjgnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9sZWFndWUvdXJpLWludGVyZmFjZXMnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlcicgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzEuNCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMS40LjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICcxN2FjOWQyMGMwZTQ1MjExNjNhMDYxZDRmOTlmM2QzMWY4OGU3OTdlJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlcicsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdwc3IvaHR0cC1mYWN0b3J5JyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAnMS4xLjAnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzEuMS4wLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnMmI0NzY1ZmRkZmUzYjUwOGFjNjJmODI5ZTg1MmIxNTAxZDNmNmU4YScsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3Bzci9odHRwLWZhY3RvcnknLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAncHNyL2h0dHAtbWVzc2FnZScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzIuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi4wLjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc0MDJkMzViY2I5MmM3MGMwMjZkMWE2YTk4ODNmMDZiMmVhZDIzZDcxJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vcHNyL2h0dHAtbWVzc2FnZScsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdzYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAndjguOS4wJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICc4LjkuMC4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJ2Q4ZTkxNjUwN2I4OGUzODllMjZkNGFiMDNjOTA0YTA4MmFhNjZiYjknLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9zYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3Njc3NwaHAvc2Nzc3BocCcgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjEuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi4xLjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICdkODQ1MGMyYmFmNWZiMDdkMDAzNzQ5OTlkMGVhNTEyNzY5NzRkMWI2JywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vc2Nzc3BocC9zY3NzcGhwJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3Njc3NwaHAvc291cmNlLXNwYW4nID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICd2MS4xLjAnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzEuMS4wLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnMzdkNjUzMjA2ZGFmMTFkYTFlZTYwYjMzMzk4NDEwMWJjNGMyN2JhMicsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3Njc3NwaHAvc291cmNlLXNwYW4nLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAnc3ltZm9ueS9maWxlc3lzdGVtJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAndjYuNC40NScsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnNi40LjQ1LjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnNmRhYmY0MWMyMTk1N2EyMDYwZjEwMWJkN2JmN2UzMjI5ODk4NjZiZCcsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3N5bWZvbnkvZmlsZXN5c3RlbScsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdzeW1mb255L3BvbHlmaWxsLWN0eXBlJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAndjEuMzcuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMS4zNy4wLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnMTQxMDQ2YThmOTQ3Nzk0OGZmMjg0ZmE2NWJlMjA5NWJhYWZiOTRmMicsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3N5bWZvbnkvcG9seWZpbGwtY3R5cGUnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAnc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZycgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YxLjM4LjInLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzEuMzguMi4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJ2QzZDMxOGJhZDVlN2ExYmZiZDAyNjAwOWM4YmZiOGQ4Zjk5YWU2YjYnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICApLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/InstalledVersions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIENvbXBvc2VyLgogKgogKiAoYykgTmlscyBBZGVybWFubiA8bmFkZXJtYW5AbmFkZXJtYW4uZGU+CiAqICAgICBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgQ29tcG9zZXI7Cgp1c2UgQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXI7CnVzZSBDb21wb3NlclxTZW12ZXJcVmVyc2lvblBhcnNlcjsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIGNvcGllZCBpbiBldmVyeSBDb21wb3NlciBpbnN0YWxsZWQgcHJvamVjdCBhbmQgYXZhaWxhYmxlIHRvIGFsbAogKgogKiBTZWUgYWxzbyBodHRwczovL2dldGNvbXBvc2VyLm9yZy9kb2MvMDctcnVudGltZS5tZCNpbnN0YWxsZWQtdmVyc2lvbnMKICoKICogVG8gcmVxdWlyZSBpdHMgcHJlc2VuY2UsIHlvdSBjYW4gcmVxdWlyZSBgY29tcG9zZXItcnVudGltZS1hcGkgXjIuMGAKICoKICogQGZpbmFsCiAqLwpjbGFzcyBJbnN0YWxsZWRWZXJzaW9ucwp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwgaWYgc2V0IChieSByZWZsZWN0aW9uIGJ5IENvbXBvc2VyKSwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBwYXRoIHdoZXJlIHRoaXMgY2xhc3MgaXMgYmVpbmcgY29waWVkIHRvCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJHNlbGZEaXIgPSBudWxsOwoKICAgIC8qKgogICAgICogQHZhciBtaXhlZFtdfG51bGwKICAgICAqIEBwc2FsbS12YXIgYXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn18YXJyYXl7fXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRpbnN0YWxsZWQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2x8bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkY2FuR2V0VmVuZG9yczsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXlbXQogICAgICogQHBzYWxtLXZhciBhcnJheTxzdHJpbmcsIGFycmF5e3Jvb3Q6IGFycmF5e25hbWU6IHN0cmluZywgcHJldHR5X3ZlcnNpb246IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZ3xudWxsLCB0eXBlOiBzdHJpbmcsIGluc3RhbGxfcGF0aDogc3RyaW5nLCBhbGlhc2VzOiBzdHJpbmdbXSwgZGV2OiBib29sfSwgdmVyc2lvbnM6IGFycmF5PHN0cmluZywgYXJyYXl7cHJldHR5X3ZlcnNpb24/OiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcsIHJlZmVyZW5jZT86IHN0cmluZ3xudWxsLCB0eXBlPzogc3RyaW5nLCBpbnN0YWxsX3BhdGg/OiBzdHJpbmcsIGFsaWFzZXM/OiBzdHJpbmdbXSwgZGV2X3JlcXVpcmVtZW50OiBib29sLCByZXBsYWNlZD86IHN0cmluZ1tdLCBwcm92aWRlZD86IHN0cmluZ1tdfT59PgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkaW5zdGFsbGVkQnlWZW5kb3IgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHBhY2thZ2UgbmFtZXMgd2hpY2ggYXJlIHByZXNlbnQsIGVpdGhlciBieSBiZWluZyBpbnN0YWxsZWQsIHJlcGxhY2VkIG9yIHByb3ZpZGVkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICogQHBzYWxtLXJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRJbnN0YWxsZWRQYWNrYWdlcygpCiAgICB7CiAgICAgICAgJHBhY2thZ2VzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoIChzZWxmOjpnZXRJbnN0YWxsZWQoKSBhcyAkaW5zdGFsbGVkKSB7CiAgICAgICAgICAgICRwYWNrYWdlc1tdID0gYXJyYXlfa2V5cygkaW5zdGFsbGVkWyd2ZXJzaW9ucyddKTsKICAgICAgICB9CgogICAgICAgIGlmICgxID09PSBcY291bnQoJHBhY2thZ2VzKSkgewogICAgICAgICAgICByZXR1cm4gJHBhY2thZ2VzWzBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5X2tleXMoYXJyYXlfZmxpcChcY2FsbF91c2VyX2Z1bmNfYXJyYXkoJ2FycmF5X21lcmdlJywgJHBhY2thZ2VzKSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHBhY2thZ2UgbmFtZXMgd2l0aCBhIHNwZWNpZmljIHR5cGUgZS5nLiAnbGlicmFyeScKICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICR0eXBlCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKiBAcHNhbG0tcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbGxlZFBhY2thZ2VzQnlUeXBlKCR0eXBlKQogICAgewogICAgICAgICRwYWNrYWdlc0J5VHlwZSA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbGxlZFsndmVyc2lvbnMnXSBhcyAkbmFtZSA9PiAkcGFja2FnZSkgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRwYWNrYWdlWyd0eXBlJ10pICYmICRwYWNrYWdlWyd0eXBlJ10gPT09ICR0eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhY2thZ2VzQnlUeXBlW10gPSAkbmFtZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwYWNrYWdlc0J5VHlwZTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBwYWNrYWdlIGlzIGluc3RhbGxlZAogICAgICoKICAgICAqIFRoaXMgYWxzbyByZXR1cm5zIHRydWUgaWYgdGhlIHBhY2thZ2UgbmFtZSBpcyBwcm92aWRlZCBvciByZXBsYWNlZCBieSBhbm90aGVyIHBhY2thZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAkcGFja2FnZU5hbWUKICAgICAqIEBwYXJhbSAgYm9vbCAgICRpbmNsdWRlRGV2UmVxdWlyZW1lbnRzCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0luc3RhbGxlZCgkcGFja2FnZU5hbWUsICRpbmNsdWRlRGV2UmVxdWlyZW1lbnRzID0gdHJ1ZSkKICAgIHsKICAgICAgICBmb3JlYWNoIChzZWxmOjpnZXRJbnN0YWxsZWQoKSBhcyAkaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGluY2x1ZGVEZXZSZXF1aXJlbWVudHMgfHwgIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnZGV2X3JlcXVpcmVtZW50J10pIHx8ICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnZGV2X3JlcXVpcmVtZW50J10gPT09IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gcGFja2FnZSBzYXRpc2ZpZXMgYSB2ZXJzaW9uIGNvbnN0cmFpbnQKICAgICAqCiAgICAgKiBlLmcuIElmIHlvdSB3YW50IHRvIGtub3cgd2hldGhlciB2ZXJzaW9uIDIuMysgb2YgcGFja2FnZSBmb28vYmFyIGlzIGluc3RhbGxlZCwgeW91IHdvdWxkIGNhbGw6CiAgICAgKgogICAgICogICBDb21wb3NlclxJbnN0YWxsZWRWZXJzaW9uczo6c2F0aXNmaWVzKG5ldyBWZXJzaW9uUGFyc2VyLCAnZm9vL2JhcicsICdeMi4zJykKICAgICAqCiAgICAgKiBAcGFyYW0gIFZlcnNpb25QYXJzZXIgJHBhcnNlciAgICAgIEluc3RhbGwgY29tcG9zZXIvc2VtdmVyIHRvIGhhdmUgYWNjZXNzIHRvIHRoaXMgY2xhc3MgYW5kIGZ1bmN0aW9uYWxpdHkKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICAkcGFja2FnZU5hbWUKICAgICAqIEBwYXJhbSAgc3RyaW5nfG51bGwgICAkY29uc3RyYWludCAgQSB2ZXJzaW9uIGNvbnN0cmFpbnQgdG8gY2hlY2sgZm9yLCBpZiB5b3UgcGFzcyBvbmUgeW91IGhhdmUgdG8gbWFrZSBzdXJlIGNvbXBvc2VyL3NlbXZlciBpcyByZXF1aXJlZCBieSB5b3VyIHBhY2thZ2UKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhdGlzZmllcyhWZXJzaW9uUGFyc2VyICRwYXJzZXIsICRwYWNrYWdlTmFtZSwgJGNvbnN0cmFpbnQpCiAgICB7CiAgICAgICAgJGNvbnN0cmFpbnQgPSAkcGFyc2VyLT5wYXJzZUNvbnN0cmFpbnRzKChzdHJpbmcpICRjb25zdHJhaW50KTsKICAgICAgICAkcHJvdmlkZWQgPSAkcGFyc2VyLT5wYXJzZUNvbnN0cmFpbnRzKHNlbGY6OmdldFZlcnNpb25SYW5nZXMoJHBhY2thZ2VOYW1lKSk7CgogICAgICAgIHJldHVybiAkcHJvdmlkZWQtPm1hdGNoZXMoJGNvbnN0cmFpbnQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHZlcnNpb24gY29uc3RyYWludCByZXByZXNlbnRpbmcgYWxsIHRoZSByYW5nZShzKSB3aGljaCBhcmUgaW5zdGFsbGVkIGZvciBhIGdpdmVuIHBhY2thZ2UKICAgICAqCiAgICAgKiBJdCBpcyBlYXNpZXIgdG8gdXNlIHRoaXMgdmlhIGlzSW5zdGFsbGVkKCkgd2l0aCB0aGUgJGNvbnN0cmFpbnQgYXJndW1lbnQgaWYgeW91IG5lZWQgdG8gY2hlY2sKICAgICAqIHdoZXRoZXIgYSBnaXZlbiB2ZXJzaW9uIG9mIGEgcGFja2FnZSBpcyBpbnN0YWxsZWQsIGFuZCBub3QganVzdCB3aGV0aGVyIGl0IGV4aXN0cwogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmcgVmVyc2lvbiBjb25zdHJhaW50IHVzYWJsZSB3aXRoIGNvbXBvc2VyL3NlbXZlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFZlcnNpb25SYW5nZXMoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJhbmdlcyA9IGFycmF5KCk7CiAgICAgICAgICAgIGlmIChpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ10pKSB7CiAgICAgICAgICAgICAgICAkcmFuZ2VzW10gPSAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2FsaWFzZXMnLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICAkcmFuZ2VzID0gYXJyYXlfbWVyZ2UoJHJhbmdlcywgJGluc3RhbGxlZFsndmVyc2lvbnMnXVskcGFja2FnZU5hbWVdWydhbGlhc2VzJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdyZXBsYWNlZCcsICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgICRyYW5nZXMgPSBhcnJheV9tZXJnZSgkcmFuZ2VzLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlcGxhY2VkJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcm92aWRlZCcsICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgICRyYW5nZXMgPSBhcnJheV9tZXJnZSgkcmFuZ2VzLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3Byb3ZpZGVkJ10pOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gaW1wbG9kZSgnIHx8ICcsICRyYW5nZXMpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxPdXRPZkJvdW5kc0V4Y2VwdGlvbignUGFja2FnZSAiJyAuICRwYWNrYWdlTmFtZSAuICciIGlzIG5vdCBpbnN0YWxsZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgJHBhY2thZ2VOYW1lCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIElmIHRoZSBwYWNrYWdlIGlzIGJlaW5nIHJlcGxhY2VkIG9yIHByb3ZpZGVkIGJ1dCBpcyBub3QgcmVhbGx5IGluc3RhbGxlZCwgbnVsbCB3aWxsIGJlIHJldHVybmVkIGFzIHZlcnNpb24sIHVzZSBzYXRpc2ZpZXMgb3IgZ2V0VmVyc2lvblJhbmdlcyBpZiB5b3UgbmVlZCB0byBrbm93IGlmIGEgZ2l2ZW4gdmVyc2lvbiBpcyBwcmVzZW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmVyc2lvbigkcGFja2FnZU5hbWUpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoc2VsZjo6Z2V0SW5zdGFsbGVkKCkgYXMgJGluc3RhbGxlZCkgewogICAgICAgICAgICBpZiAoIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsndmVyc2lvbiddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ZlcnNpb24nXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcT3V0T2ZCb3VuZHNFeGNlcHRpb24oJ1BhY2thZ2UgIicgLiAkcGFja2FnZU5hbWUgLiAnIiBpcyBub3QgaW5zdGFsbGVkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBJZiB0aGUgcGFja2FnZSBpcyBiZWluZyByZXBsYWNlZCBvciBwcm92aWRlZCBidXQgaXMgbm90IHJlYWxseSBpbnN0YWxsZWQsIG51bGwgd2lsbCBiZSByZXR1cm5lZCBhcyB2ZXJzaW9uLCB1c2Ugc2F0aXNmaWVzIG9yIGdldFZlcnNpb25SYW5nZXMgaWYgeW91IG5lZWQgdG8ga25vdyBpZiBhIGdpdmVuIHZlcnNpb24gaXMgcHJlc2VudAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFByZXR0eVZlcnNpb24oJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ10pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsncHJldHR5X3ZlcnNpb24nXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcT3V0T2ZCb3VuZHNFeGNlcHRpb24oJ1BhY2thZ2UgIicgLiAkcGFja2FnZU5hbWUgLiAnIiBpcyBub3QgaW5zdGFsbGVkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBJZiB0aGUgcGFja2FnZSBpcyBiZWluZyByZXBsYWNlZCBvciBwcm92aWRlZCBidXQgaXMgbm90IHJlYWxseSBpbnN0YWxsZWQsIG51bGwgd2lsbCBiZSByZXR1cm5lZCBhcyByZWZlcmVuY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWZlcmVuY2UoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlZmVyZW5jZSddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlZmVyZW5jZSddOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxPdXRPZkJvdW5kc0V4Y2VwdGlvbignUGFja2FnZSAiJyAuICRwYWNrYWdlTmFtZSAuICciIGlzIG5vdCBpbnN0YWxsZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgJHBhY2thZ2VOYW1lCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIElmIHRoZSBwYWNrYWdlIGlzIGJlaW5nIHJlcGxhY2VkIG9yIHByb3ZpZGVkIGJ1dCBpcyBub3QgcmVhbGx5IGluc3RhbGxlZCwgbnVsbCB3aWxsIGJlIHJldHVybmVkIGFzIGluc3RhbGwgcGF0aC4gUGFja2FnZXMgb2YgdHlwZSBtZXRhcGFja2FnZXMgYWxzbyBoYXZlIGEgbnVsbCBpbnN0YWxsIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFsbFBhdGgoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnaW5zdGFsbF9wYXRoJ10pID8gJGluc3RhbGxlZFsndmVyc2lvbnMnXVskcGFja2FnZU5hbWVdWydpbnN0YWxsX3BhdGgnXSA6IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXE91dE9mQm91bmRzRXhjZXB0aW9uKCdQYWNrYWdlICInIC4gJHBhY2thZ2VOYW1lIC4gJyIgaXMgbm90IGluc3RhbGxlZCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICogQHBzYWxtLXJldHVybiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSb290UGFja2FnZSgpCiAgICB7CiAgICAgICAgJGluc3RhbGxlZCA9IHNlbGY6OmdldEluc3RhbGxlZCgpOwoKICAgICAgICByZXR1cm4gJGluc3RhbGxlZFswXVsncm9vdCddOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmF3IGluc3RhbGxlZC5waHAgZGF0YSBmb3IgY3VzdG9tIGltcGxlbWVudGF0aW9ucwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFVzZSBnZXRBbGxSYXdEYXRhKCkgaW5zdGVhZCB3aGljaCByZXR1cm5zIGFsbCBkYXRhc2V0cyBmb3IgYWxsIGF1dG9sb2FkZXJzIHByZXNlbnQgaW4gdGhlIHByb2Nlc3MuIGdldFJhd0RhdGEgb25seSByZXR1cm5zIHRoZSBmaXJzdCBkYXRhc2V0IGxvYWRlZCwgd2hpY2ggbWF5IG5vdCBiZSB3aGF0IHlvdSBleHBlY3QuCiAgICAgKiBAcmV0dXJuIGFycmF5W10KICAgICAqIEBwc2FsbS1yZXR1cm4gYXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn0KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSYXdEYXRhKCkKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcignZ2V0UmF3RGF0YSBvbmx5IHJldHVybnMgdGhlIGZpcnN0IGRhdGFzZXQgbG9hZGVkLCB3aGljaCBtYXkgbm90IGJlIHdoYXQgeW91IGV4cGVjdC4gVXNlIGdldEFsbFJhd0RhdGEoKSBpbnN0ZWFkIHdoaWNoIHJldHVybnMgYWxsIGRhdGFzZXRzIGZvciBhbGwgYXV0b2xvYWRlcnMgcHJlc2VudCBpbiB0aGUgcHJvY2Vzcy4nLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgIGlmIChudWxsID09PSBzZWxmOjokaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZSB0aGUgaW5zdGFsbGVkLnBocCBmaWxlIGlmIHRoaXMgZmlsZSBpcyBsb2FkZWQgZnJvbSBpdHMgZHVtcGVkIGxvY2F0aW9uLAogICAgICAgICAgICAvLyBhbmQgbm90IGZyb20gaXRzIHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgY29tcG9zZXIvY29tcG9zZXIgcGFja2FnZSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21wb3Nlci9jb21wb3Nlci9pc3N1ZXMvOTkzNwogICAgICAgICAgICBpZiAoc3Vic3RyKF9fRElSX18sIC04LCAxKSAhPT0gJ0MnKSB7CiAgICAgICAgICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gaW5jbHVkZSBfX0RJUl9fIC4gJy9pbnN0YWxsZWQucGhwJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNlbGY6OiRpbnN0YWxsZWQgPSBhcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JGluc3RhbGxlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJhdyBkYXRhIG9mIGFsbCBpbnN0YWxsZWQucGhwIHdoaWNoIGFyZSBjdXJyZW50bHkgbG9hZGVkIGZvciBjdXN0b20gaW1wbGVtZW50YXRpb25zCiAgICAgKgogICAgICogQHJldHVybiBhcnJheVtdCiAgICAgKiBAcHNhbG0tcmV0dXJuIGxpc3Q8YXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn0+CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QWxsUmF3RGF0YSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmdldEluc3RhbGxlZCgpOwogICAgfQoKICAgIC8qKgogICAgICogTGV0cyB5b3UgcmVsb2FkIHRoZSBzdGF0aWMgYXJyYXkgZnJvbSBhbm90aGVyIGZpbGUKICAgICAqCiAgICAgKiBUaGlzIGlzIG9ubHkgdXNlZnVsIGZvciBjb21wbGV4IGludGVncmF0aW9ucyBpbiB3aGljaCBhIHByb2plY3QgbmVlZHMgdG8gdXNlCiAgICAgKiB0aGlzIGNsYXNzIGJ1dCB0aGVuIGFsc28gbmVlZHMgdG8gZXhlY3V0ZSBhbm90aGVyIHByb2plY3QncyBhdXRvbG9hZGVyIGluIHByb2Nlc3MsCiAgICAgKiBhbmQgd2FudHMgdG8gZW5zdXJlIGJvdGggcHJvamVjdHMgaGF2ZSBhY2Nlc3MgdG8gdGhlaXIgdmVyc2lvbiBvZiBpbnN0YWxsZWQucGhwLgogICAgICoKICAgICAqIEEgdHlwaWNhbCBjYXNlIHdvdWxkIGJlIFBIUFVuaXQsIHdoZXJlIGl0IHdvdWxkIG5lZWQgdG8gbWFrZSBzdXJlIGl0IHJlYWRzIGFsbAogICAgICogdGhlIGRhdGEgaXQgbmVlZHMgZnJvbSB0aGlzIGNsYXNzLCB0aGVuIGNhbGwgcmVsb2FkKCkgd2l0aAogICAgICogYHJlcXVpcmUgJENXRC92ZW5kb3IvY29tcG9zZXIvaW5zdGFsbGVkLnBocGAgKG9yIHNpbWlsYXIpIGFzIGlucHV0IHRvIG1ha2Ugc3VyZQogICAgICogdGhlIHByb2plY3QgaW4gd2hpY2ggaXQgcnVucyBjYW4gdGhlbiBhbHNvIHVzZSB0aGlzIGNsYXNzIHNhZmVseSwgd2l0aG91dAogICAgICogaW50ZXJmZXJlbmNlIGJldHdlZW4gUEhQVW5pdCdzIGRlcGVuZGVuY2llcyBhbmQgdGhlIHByb2plY3QncyBkZXBlbmRlbmNpZXMuCiAgICAgKgogICAgICogQHBhcmFtICBhcnJheVtdICRkYXRhIEEgdmVuZG9yL2NvbXBvc2VyL2luc3RhbGxlZC5waHAgZGF0YSBzZXQKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBwc2FsbS1wYXJhbSBhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fSAkZGF0YQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbG9hZCgkZGF0YSkKICAgIHsKICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gJGRhdGE7CiAgICAgICAgc2VsZjo6JGluc3RhbGxlZEJ5VmVuZG9yID0gYXJyYXkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFNlbGZEaXIoKQogICAgewogICAgICAgIGlmIChzZWxmOjokc2VsZkRpciA9PT0gbnVsbCkgewogICAgICAgICAgICBzZWxmOjokc2VsZkRpciA9IHN0cnRyKF9fRElSX18sICdcXCcsICcvJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JHNlbGZEaXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5W10KICAgICAqIEBwc2FsbS1yZXR1cm4gbGlzdDxhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fT4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFsbGVkKCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gc2VsZjo6JGNhbkdldFZlbmRvcnMpIHsKICAgICAgICAgICAgc2VsZjo6JGNhbkdldFZlbmRvcnMgPSBtZXRob2RfZXhpc3RzKCdDb21wb3NlclxBdXRvbG9hZFxDbGFzc0xvYWRlcicsICdnZXRSZWdpc3RlcmVkTG9hZGVycycpOwogICAgICAgIH0KCiAgICAgICAgJGluc3RhbGxlZCA9IGFycmF5KCk7CiAgICAgICAgJGNvcGllZExvY2FsRGlyID0gZmFsc2U7CgogICAgICAgIGlmIChzZWxmOjokY2FuR2V0VmVuZG9ycykgewogICAgICAgICAgICBmb3JlYWNoIChDbGFzc0xvYWRlcjo6Z2V0UmVnaXN0ZXJlZExvYWRlcnMoKSBhcyAkdmVuZG9yRGlyID0+ICRsb2FkZXIpIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldChzZWxmOjokaW5zdGFsbGVkQnlWZW5kb3JbJHZlbmRvckRpcl0pKSB7CiAgICAgICAgICAgICAgICAgICAgJGluc3RhbGxlZFtdID0gc2VsZjo6JGluc3RhbGxlZEJ5VmVuZG9yWyR2ZW5kb3JEaXJdOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGlzX2ZpbGUoJHZlbmRvckRpci4nL2NvbXBvc2VyL2luc3RhbGxlZC5waHAnKSkgewogICAgICAgICAgICAgICAgICAgIC8qKiBAdmFyIGFycmF5e3Jvb3Q6IGFycmF5e25hbWU6IHN0cmluZywgcHJldHR5X3ZlcnNpb246IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZ3xudWxsLCB0eXBlOiBzdHJpbmcsIGluc3RhbGxfcGF0aDogc3RyaW5nLCBhbGlhc2VzOiBzdHJpbmdbXSwgZGV2OiBib29sfSwgdmVyc2lvbnM6IGFycmF5PHN0cmluZywgYXJyYXl7cHJldHR5X3ZlcnNpb24/OiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcsIHJlZmVyZW5jZT86IHN0cmluZ3xudWxsLCB0eXBlPzogc3RyaW5nLCBpbnN0YWxsX3BhdGg/OiBzdHJpbmcsIGFsaWFzZXM/OiBzdHJpbmdbXSwgZGV2X3JlcXVpcmVtZW50OiBib29sLCByZXBsYWNlZD86IHN0cmluZ1tdLCBwcm92aWRlZD86IHN0cmluZ1tdfT59ICRyZXF1aXJlZCAqLwogICAgICAgICAgICAgICAgICAgICRyZXF1aXJlZCA9IHJlcXVpcmUgJHZlbmRvckRpci4nL2NvbXBvc2VyL2luc3RhbGxlZC5waHAnOwogICAgICAgICAgICAgICAgICAgIHNlbGY6OiRpbnN0YWxsZWRCeVZlbmRvclskdmVuZG9yRGlyXSA9ICRyZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgICAkaW5zdGFsbGVkW10gPSAkcmVxdWlyZWQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnRyKCR2ZW5kb3JEaXIuJy9jb21wb3NlcicsICdcXCcsICcvJykgPT09IHN0cnRyKF9fRElSX18sICdcXCcsICcvJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6JGluc3RhbGxlZCA9ICRyZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvcGllZExvY2FsRGlyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSBzZWxmOjokaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZSB0aGUgaW5zdGFsbGVkLnBocCBmaWxlIGlmIHRoaXMgZmlsZSBpcyBsb2FkZWQgZnJvbSBpdHMgZHVtcGVkIGxvY2F0aW9uLAogICAgICAgICAgICAvLyBhbmQgbm90IGZyb20gaXRzIHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgY29tcG9zZXIvY29tcG9zZXIgcGFja2FnZSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21wb3Nlci9jb21wb3Nlci9pc3N1ZXMvOTkzNwogICAgICAgICAgICBpZiAoc3Vic3RyKF9fRElSX18sIC04LCAxKSAhPT0gJ0MnKSB7CiAgICAgICAgICAgICAgICAvKiogQHZhciBhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fSAkcmVxdWlyZWQgKi8KICAgICAgICAgICAgICAgICRyZXF1aXJlZCA9IHJlcXVpcmUgX19ESVJfXyAuICcvaW5zdGFsbGVkLnBocCc7CiAgICAgICAgICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gJHJlcXVpcmVkOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2VsZjo6JGluc3RhbGxlZCA9IGFycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzZWxmOjokaW5zdGFsbGVkICE9PSBhcnJheSgpICYmICEkY29waWVkTG9jYWxEaXIpIHsKICAgICAgICAgICAgJGluc3RhbGxlZFtdID0gc2VsZjo6JGluc3RhbGxlZDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaW5zdGFsbGVkOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSBOaWxzIEFkZXJtYW5uLCBKb3JkaSBCb2dnaWFubwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/platform_check.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIHBsYXRmb3JtX2NoZWNrLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokaXNzdWVzID0gYXJyYXkoKTsKCmlmICghKFBIUF9WRVJTSU9OX0lEID49IDgwMTAwKSkgewogICAgJGlzc3Vlc1tdID0gJ1lvdXIgQ29tcG9zZXIgZGVwZW5kZW5jaWVzIHJlcXVpcmUgYSBQSFAgdmVyc2lvbiAiPj0gOC4xLjAiLiBZb3UgYXJlIHJ1bm5pbmcgJyAuIFBIUF9WRVJTSU9OIC4gJy4nOwp9CgppZiAoJGlzc3VlcykgewogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSkgewogICAgICAgIGhlYWRlcignSFRUUC8xLjEgNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpOwogICAgfQogICAgaWYgKCFpbmlfZ2V0KCdkaXNwbGF5X2Vycm9ycycpKSB7CiAgICAgICAgaWYgKFBIUF9TQVBJID09PSAnY2xpJyB8fCBQSFBfU0FQSSA9PT0gJ3BocGRiZycpIHsKICAgICAgICAgICAgZndyaXRlKFNUREVSUiwgJ0NvbXBvc2VyIGRldGVjdGVkIGlzc3VlcyBpbiB5b3VyIHBsYXRmb3JtOicgLiBQSFBfRU9MLlBIUF9FT0wgLiBpbXBsb2RlKFBIUF9FT0wsICRpc3N1ZXMpIC4gUEhQX0VPTC5QSFBfRU9MKTsKICAgICAgICB9IGVsc2VpZiAoIWhlYWRlcnNfc2VudCgpKSB7CiAgICAgICAgICAgIGVjaG8gJ0NvbXBvc2VyIGRldGVjdGVkIGlzc3VlcyBpbiB5b3VyIHBsYXRmb3JtOicgLiBQSFBfRU9MLlBIUF9FT0wgLiBzdHJfcmVwbGFjZSgnWW91IGFyZSBydW5uaW5nICcuUEhQX1ZFUlNJT04uJy4nLCAnJywgaW1wbG9kZShQSFBfRU9MLCAkaXNzdWVzKSkgLiBQSFBfRU9MLlBIUF9FT0w7CiAgICAgICAgfQogICAgfQogICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICdDb21wb3NlciBkZXRlY3RlZCBpc3N1ZXMgaW4geW91ciBwbGF0Zm9ybTogJyAuIGltcGxvZGUoJyAnLCAkaXNzdWVzKQogICAgKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAibGVhZ3VlL3VyaS1pbnRlcmZhY2VzIiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImRlc2NyaXB0aW9uIiA6ICJDb21tb24gdG9vbHMgZm9yIHBhcnNpbmcgYW5kIHJlc29sdmluZyBSRkMzOTg3L1JGQzM5ODYgVVJJIiwKICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAidXJsIiwKICAgICAgICAidXJpIiwKICAgICAgICAicmZjMzk4NiIsCiAgICAgICAgInJmYzM5ODciLAogICAgICAgICJyZmM2NTcwIiwKICAgICAgICAicHNyLTciLAogICAgICAgICJwYXJzZV91cmwiLAogICAgICAgICJodHRwIiwKICAgICAgICAiaHR0cHMiLAogICAgICAgICJ3cyIsCiAgICAgICAgImZ0cCIsCiAgICAgICAgImRhdGEtdXJpIiwKICAgICAgICAiZmlsZS11cmkiLAogICAgICAgICJwYXJzZV9zdHIiLAogICAgICAgICJxdWVyeS1zdHJpbmciLAogICAgICAgICJxdWVyeXN0cmluZyIsCiAgICAgICAgImhvc3RuYW1lIgogICAgXSwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly91cmkudGhlcGhwbGVhZ3VlLmNvbSIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIiA6ICJJZ25hY2UgTnlhbWFnYW5hIEJ1dGVyYSIsCiAgICAgICAgICAgICJlbWFpbCIgOiAibnlhbXNwcm9kQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICJob21lcGFnZSIgOiAiaHR0cHM6Ly9ueWFtc3Byb2QuY29tIgogICAgICAgIH0KICAgIF0sCiAgICAiZnVuZGluZyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL255YW1zcHJvZCIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCIgOiAiXjguMSIsCiAgICAgICAgImV4dC1maWx0ZXIiOiAiKiIsCiAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAiXjEuMSB8fCBeMi4wIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJMZWFndWVcXFVyaVxcIjogIiIKICAgICAgICB9CiAgICB9LAogICAgInN1Z2dlc3QiOiB7CiAgICAgICAgImV4dC1iY21hdGgiOiAidG8gaW1wcm92ZSBJUFY0IGhvc3QgcGFyc2luZyIsCiAgICAgICAgImV4dC1nbXAiOiAidG8gaW1wcm92ZSBJUFY0IGhvc3QgcGFyc2luZyIsCiAgICAgICAgImV4dC1pbnRsIjogInRvIGhhbmRsZSBJRE4gaG9zdCB3aXRoIHRoZSBiZXN0IHBlcmZvcm1hbmNlIiwKICAgICAgICAicGhwLTY0Yml0IjogInRvIGltcHJvdmUgSVBWNCBob3N0IHBhcnNpbmciLAogICAgICAgICJzeW1mb255L3BvbHlmaWxsLWludGwtaWRuIjogInRvIGhhbmRsZSBJRE4gaG9zdCB2aWEgdGhlIFN5bWZvbnkgcG9seWZpbGwgaWYgZXh0LWludGwgaXMgbm90IHByZXNlbnQiLAogICAgICAgICJyb3dib3QvdXJsIjogInRvIGhhbmRsZSBVUkxzIHVzaW5nIHRoZSBXSEFUV0cgVVJMIExpdmluZyBTdGFuZGFyZCBzcGVjaWZpY2F0aW9uIgogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICI3LngtZGV2IgogICAgICAgIH0KICAgIH0sCiAgICAic3VwcG9ydCI6IHsKICAgICAgICAiZm9ydW0iOiAiaHR0cHM6Ly90aGVwaHBsZWFndWUuc2xhY2suY29tIiwKICAgICAgICAiZG9jcyI6ICJodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tIiwKICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvdXJpLXNyYy9pc3N1ZXMiCiAgICB9LAogICAgImNvbmZpZyI6IHsKICAgICAgICAic29ydC1wYWNrYWdlcyI6IHRydWUKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/AuthorityInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uc1xNaXNzaW5nRmVhdHVyZTsKdXNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uc1xTeW50YXhFcnJvcjsKdXNlIFN0cmluZ2FibGU7CgppbnRlcmZhY2UgQXV0aG9yaXR5SW50ZXJmYWNlIGV4dGVuZHMgVXJpQ29tcG9uZW50SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaG9zdCBjb21wb25lbnQgb2YgdGhlIGF1dGhvcml0eS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhvc3QoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHBvcnQgY29tcG9uZW50IG9mIHRoZSBhdXRob3JpdHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb3J0KCk6ID9pbnQ7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB1c2VyIGluZm9ybWF0aW9uIGNvbXBvbmVudCBvZiB0aGUgYXV0aG9yaXR5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlckluZm8oKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIEF1dGhvcml0eSBjb21wb25lbnRzLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBhIGhhc2htYXAgc2ltaWxhciB0byBQSFAncyBwYXJzZV91cmwgcmV0dXJuIHZhbHVlCiAgICAgKgogICAgICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e3VzZXI6ID9zdHJpbmcsIHBhc3MgOiA/c3RyaW5nLCBob3N0OiA/c3RyaW5nLCBwb3J0OiA/aW50fQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcG9uZW50cygpOiBhcnJheTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgaG9zdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBob3N0LgogICAgICoKICAgICAqIEEgbnVsbCB2YWx1ZSBwcm92aWRlZCBmb3IgdGhlIGhvc3QgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgaG9zdAogICAgICogaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBmb3IgaW52YWxpZCBjb21wb25lbnQgb3IgdHJhbnNmb3JtYXRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd291bGQgcmVzdWx0IGluIGFuIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICogQHRocm93cyBNaXNzaW5nRmVhdHVyZSBmb3IgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJpbmcgSUROIHN1cHBvcnQgd2hlbiBJRE4gc3VwcG9ydCBpcyBub3QgcHJlc2VudAogICAgICogICAgICAgICAgICAgICAgICAgICAgICBvciBtaXNjb25maWd1cmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhvc3QoU3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkaG9zdCk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHBvcnQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgcG9ydC4KICAgICAqCiAgICAgKiBBIG51bGwgdmFsdWUgcHJvdmlkZWQgZm9yIHRoZSBwb3J0IGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIHBvcnQKICAgICAqIGluZm9ybWF0aW9uLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgZm9yIGludmFsaWQgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbiBvYmplY3QgaW4gaW52YWxpZCBzdGF0ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQb3J0KD9pbnQgJHBvcnQpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCB1c2VyIGluZm9ybWF0aW9uLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogUGFzc3dvcmQgaXMgb3B0aW9uYWwsIGJ1dCB0aGUgdXNlciBpbmZvcm1hdGlvbiBNVVNUIGluY2x1ZGUgdGhlCiAgICAgKiB1c2VyOyBhIG51bGwgdmFsdWUgZm9yIHRoZSB1c2VyIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdXNlcgogICAgICogaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBmb3IgaW52YWxpZCBjb21wb25lbnQgb3IgdHJhbnNmb3JtYXRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd291bGQgcmVzdWx0IGluIGFuIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFVzZXJJbmZvKFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHVzZXIsIFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHBhc3N3b3JkID0gbnVsbCk6IHNlbGY7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/Conditionable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKaW50ZXJmYWNlIENvbmRpdGlvbmFibGUKewogICAgLyoqCiAgICAgKiBBcHBseSB0aGUgY2FsbGJhY2sgaWYgdGhlIGdpdmVuICJjb25kaXRpb24iIGlzIChvciByZXNvbHZlcyB0bykgdHJ1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gKGNhbGxhYmxlKHN0YXRpYyk6IGJvb2wpfGJvb2wgJGNvbmRpdGlvbgogICAgICogQHBhcmFtIGNhbGxhYmxlKHN0YXRpYyk6IChzdGF0aWN8bnVsbCkgJG9uU3VjY2VzcwogICAgICogQHBhcmFtID9jYWxsYWJsZShzdGF0aWMpOiAoc3RhdGljfG51bGwpICRvbkZhaWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdoZW4oY2FsbGFibGV8Ym9vbCAkY29uZGl0aW9uLCBjYWxsYWJsZSAkb25TdWNjZXNzLCA/Y2FsbGFibGUgJG9uRmFpbCA9IG51bGwpOiBzdGF0aWM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/DataPathInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIFNwbEZpbGVPYmplY3Q7CnVzZSBTdHJpbmdhYmxlOwoKaW50ZXJmYWNlIERhdGFQYXRoSW50ZXJmYWNlIGV4dGVuZHMgUGF0aEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBkYXRhIG1pbWUgdHlwZSBhc3NvY2lhdGVkIHRvIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gbWltZXR5cGUgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gdGhlIGRlZmF1bHQgbWltZXR5cGUgJ3RleHQvcGxhaW4nLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjM5NyNzZWN0aW9uLTIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1pbWVUeXBlKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwYXJhbWV0ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgTWltZSBUeXBlIG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gcGFyYW1ldGVycyBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiB0aGUgZGVmYXVsdCBwYXJhbWV0ZXIgJ2NoYXJzZXQ9VVMtQVNDSUknLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjM5NyNzZWN0aW9uLTIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcmFtZXRlcnMoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIG1lZGlhdHlwZSBhc3NvY2lhdGVkIHdpdGggdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBtZWRpYXR5cGUgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gdGhlIGRlZmF1bHQgcGFyYW1ldGVyICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVMtQVNDSUknLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjM5NyNzZWN0aW9uLTMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHNjaGVtZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1lZGlhVHlwZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgdGhlIGRhdGEgc3RyaW5nLgogICAgICoKICAgICAqIFJldHJpZXZlcyB0aGUgZGF0YSBwYXJ0IG9mIHRoZSBwYXRoLiBJZiBubyBkYXRhIHBhcnQgaXMgcHJvdmlkZWQgcmV0dXJuCiAgICAgKiBhbiBlbXB0eSBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERhdGEoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgZGF0YSBpcyBiaW5hcnkgc2FmZSBlbmNvZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNCaW5hcnlEYXRhKCk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBTYXZlIHRoZSBkYXRhIHRvIGEgc3BlY2lmaWMgZmlsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoc3RyaW5nICRwYXRoLCBzdHJpbmcgJG1vZGUgPSAndycpOiBTcGxGaWxlT2JqZWN0OwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aGVyZSB0aGUgZGF0YSBwYXJ0IGlzIGJhc2U2NCBlbmNvZGVkLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2Ugd2hlcmUgdGhlIGRhdGEgcGFydCBpcyBiYXNlNjQgZW5jb2RlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9CaW5hcnkoKTogc2VsZjsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2hlcmUgdGhlIGRhdGEgcGFydCBpcyB1cmwgZW5jb2RlZCBmb2xsb3dpbmcgUkZDMzk4NiBydWxlcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHdoZXJlIHRoZSBkYXRhIHBhcnQgaXMgdXJsIGVuY29kZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQXNjaWkoKTogc2VsZjsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgbWVkaWF0eXBlIHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgbWVkaWF0eXBlIHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogVXNlcnMgbXVzdCBwcm92aWRlIGVuY29kZWQgY2hhcmFjdGVycy4KICAgICAqCiAgICAgKiBBbiBlbXB0eSBwYXJhbWV0ZXJzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIHBhcmFtZXRlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXJhbWV0ZXJzKFN0cmluZ2FibGV8c3RyaW5nICRwYXJhbWV0ZXJzKTogc2VsZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/DomainHostInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIEJhY2tlZEVudW07CnVzZSBDb3VudGFibGU7CnVzZSBJdGVyYXRvcjsKdXNlIEl0ZXJhdG9yQWdncmVnYXRlOwp1c2UgTGVhZ3VlXFVyaVxFeGNlcHRpb25zXFN5bnRheEVycm9yOwp1c2UgU3RyaW5nYWJsZTsKCi8qKgogKiBAZXh0ZW5kcyBJdGVyYXRvckFnZ3JlZ2F0ZTxpbnQsIHN0cmluZz4KICoKICogQG1ldGhvZCBib29sIGlzU3ViZG9tYWluT2YoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRwYXJlbnRIb3N0KSBUZWxscyB3aGV0aGVyIHRoZSBjdXJyZW50IGRvbWFpbiBpbnN0YW5jZSBpcyBhIHN1YmRvbWFpbiBvZiB0aGUgcGFyZW50IGhvc3QuCiAqIEBtZXRob2QgYm9vbCBoYXNTdWJkb21haW4oQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRjaGlsZEhvc3QpIFRlbGxzIHdoZXRoZXIgdGhlIHN1Ym1pdHRlZCBob3N0IGlzIGEgc3ViZG9tYWluIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLgogKiBAbWV0aG9kIGJvb2wgaXNTaWJsaW5nT2YoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRzaWJsaW5nSG9zdCkgVGVsbHMgd2hldGhlciB0aGUgc3VibWl0dGVkIGhvc3Qgc2hhcmUgdGhlIHNhbWUgcGFyZW50IGRvbWFpbiBhcyB0aGUgY3VycmVudCBpbnN0YW5jZS4KICogQG1ldGhvZCBzdGF0aWMgY29tbW9uQW5jZXN0b3JXaXRoKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkb3RoZXIpIFJldHVybnMgdGhlIGNvbW1vbiBsb25nZXN0IGFuY2VzdG9yIGJldHdlZW4gMiBkb21haW4uIFRoZSByZXR1cm5lZCBkb21haW4gaXMgZW1wdHkgaWYgbm8gYW5jZXN0b3IgaXMgZm91bmQKICogQG1ldGhvZCBzdGF0aWMgcGFyZW50SG9zdCgpIFJldHVybnMgdGhlIGN1cnJlbnQgcGFyZW50IGRvbWFpbiBmb3IgdGhlIGN1cnJlbnQgaW5zdGFuY2UuIFRoZSByZXR1cm5lZCBkb21haW4gaXMgZW1wdHkgaWYgbm8gYW5jZXN0b3IgaXMgZm91bmQKICogQG1ldGhvZCBib29sIGlzRW1wdHkoKSBUZWxscyB3aGV0aGVyIHRoZSBkb21haW4gY29udGFpbnMgYW55IGxhYmVsLgogKi8KaW50ZXJmYWNlIERvbWFpbkhvc3RJbnRlcmZhY2UgZXh0ZW5kcyBDb3VudGFibGUsIEhvc3RJbnRlcmZhY2UsIEl0ZXJhdG9yQWdncmVnYXRlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbGFiZWxzIHRvdGFsIG51bWJlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCk6IGludDsKCiAgICAvKioKICAgICAqIEl0ZXJhdGUgb3ZlciB0aGUgRG9tYWluIGxhYmVscy4KICAgICAqCiAgICAgKiBAcmV0dXJuIEl0ZXJhdG9yPHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEl0ZXJhdG9yKCk6IEl0ZXJhdG9yOwoKICAgIC8qKgogICAgICogUmV0cmlldmVzIGEgc2luZ2xlIGhvc3QgbGFiZWwuCiAgICAgKgogICAgICogSWYgdGhlIGxhYmVsIG9mZnNldCBoYXMgbm90IGJlZW4gc2V0LCByZXR1cm5zIHRoZSBudWxsIHZhbHVlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KGludCAkb2Zmc2V0KTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGFzc29jaWF0ZWQga2V5IGZvciBhIHNwZWNpZmljIGxhYmVsIG9yIGFsbCB0aGUga2V5cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludFtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBrZXlzKD9zdHJpbmcgJGxhYmVsID0gbnVsbCk6IGFycmF5OwoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgZG9tYWluIGlzIGFic29sdXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNBYnNvbHV0ZSgpOiBib29sOwoKICAgIC8qKgogICAgICogUHJlcGVuZHMgYSBsYWJlbCB0byB0aGUgaG9zdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByZXBlbmQoU3RyaW5nYWJsZXxzdHJpbmcgJGxhYmVsKTogc2VsZjsKCiAgICAvKioKICAgICAqIEFwcGVuZHMgYSBsYWJlbCB0byB0aGUgaG9zdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFwcGVuZChTdHJpbmdhYmxlfHN0cmluZyAkbGFiZWwpOiBzZWxmOwoKICAgIC8qKgogICAgICogRXh0cmFjdHMgYSBzbGljZSBvZiAkbGVuZ3RoIGVsZW1lbnRzIHN0YXJ0aW5nIGF0IHBvc2l0aW9uICRvZmZzZXQgZnJvbSB0aGUgaG9zdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNlbGVjdGVkIHNsaWNlLgogICAgICoKICAgICAqIElmICRsZW5ndGggaXMgbnVsbCBpdCByZXR1cm5zIGFsbCBlbGVtZW50cyBmcm9tICRvZmZzZXQgdG8gdGhlIGVuZCBvZiB0aGUgRG9tYWluLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2xpY2UoaW50ICRvZmZzZXQsID9pbnQgJGxlbmd0aCA9IG51bGwpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRoIGl0cyBSb290IGxhYmVsLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjIuMgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFJvb3RMYWJlbCgpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRob3V0IGl0cyBSb290IGxhYmVsLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjIuMgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aG91dFJvb3RMYWJlbCgpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRoIHRoZSBtb2RpZmllZCBsYWJlbC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIG5ldyBsYWJlbAogICAgICoKICAgICAqIElmICRrZXkgaXMgbm9uLW5lZ2F0aXZlLCB0aGUgYWRkZWQgbGFiZWwgd2lsbCBiZSB0aGUgbGFiZWwgYXQgJGtleSBwb3NpdGlvbiBmcm9tIHRoZSBzdGFydC4KICAgICAqIElmICRrZXkgaXMgbmVnYXRpdmUsIHRoZSBhZGRlZCBsYWJlbCB3aWxsIGJlIHRoZSBsYWJlbCBhdCAka2V5IHBvc2l0aW9uIGZyb20gdGhlIGVuZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIElmIHRoZSBrZXkgaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aExhYmVsKGludCAka2V5LCBTdHJpbmdhYmxlfHN0cmluZyAkbGFiZWwpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRob3V0IHRoZSBzcGVjaWZpZWQgbGFiZWwuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2RpZmllZCBjb21wb25lbnQKICAgICAqCiAgICAgKiBJZiAka2V5IGlzIG5vbi1uZWdhdGl2ZSwgdGhlIHJlbW92ZWQgbGFiZWwgd2lsbCBiZSB0aGUgbGFiZWwgYXQgJGtleSBwb3NpdGlvbiBmcm9tIHRoZSBzdGFydC4KICAgICAqIElmICRrZXkgaXMgbmVnYXRpdmUsIHRoZSByZW1vdmVkIGxhYmVsIHdpbGwgYmUgdGhlIGxhYmVsIGF0ICRrZXkgcG9zaXRpb24gZnJvbSB0aGUgZW5kLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgSWYgdGhlIGtleSBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0TGFiZWwoaW50IC4uLiRrZXlzKTogc2VsZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/FragmentDirective.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIFN0cmluZ2FibGU7CgovKioKICogQHNlZSBodHRwczovL3dpY2cuZ2l0aHViLmlvL3Njcm9sbC10by10ZXh0LWZyYWdtZW50LyN0aGUtZnJhZ21lbnQtZGlyZWN0aXZlCiAqCiAqIEBtZXRob2Qgc3RyaW5nIHRvRnJhZ21lbnRWYWx1ZSgpIHJldHVybnMgdGhlIGVuY29kZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkaXJlY3RpdmUgYXMgYSBmcmFnbWVudCBzdHJpbmcKICovCmludGVyZmFjZSBGcmFnbWVudERpcmVjdGl2ZSBleHRlbmRzIFN0cmluZ2FibGUKewogICAgLyoqCiAgICAgKiBUaGUgZGVjb2RlZCBEaXJlY3RpdmUgbmFtZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIG5vbi1lbXB0eS1zdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5hbWUoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogVGhlIGRlY29kZWQgRGlyZWN0aXZlIHZhbHVlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsdWUoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFRoZSBlbmNvZGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGlyZWN0aXZlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogVGhlIGVuY29kZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBmcmFnbWVudCB1c2luZwogICAgICogdGhlIFN0cmluZ2FibGUgaW50ZXJmYWNlLgogICAgICoKICAgICAqIEBzZWUgRnJhZ21lbnREaXJlY3RpdmU6OnRvU3RyaW5nKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgc3VibWl0dGVkIHZhbHVlIGlzIGVxdWFscyB0byB0aGUgc3RyaW5nCiAgICAgKiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZGlyZWN0aXZlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG1peGVkICRkaXJlY3RpdmUpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/FragmentInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKLyoqCiAqIEBtZXRob2Qgc2VsZiBub3JtYWxpemUoKSByZXR1cm5zIHRoZSBub3JtYWxpemVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tcG9uZW50CiAqLwppbnRlcmZhY2UgRnJhZ21lbnRJbnRlcmZhY2UgZXh0ZW5kcyBVcmlDb21wb25lbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBkZWNvZGVkIGZyYWdtZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjb2RlZCgpOiA/c3RyaW5nOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/HostInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKLyoqCiAqIEBtZXRob2Qgc3RyaW5nfG51bGwgZW5jb2RlZCgpIHJldHVybnMgUkZDMzk4NiBlbmNvZGVkIGhvc3QKICovCmludGVyZmFjZSBIb3N0SW50ZXJmYWNlIGV4dGVuZHMgVXJpQ29tcG9uZW50SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYXNjaWkgcmVwcmVzZW50YXRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FzY2lpKCk6ID9zdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB1bmljb2RlIHJlcHJlc2VudGF0aW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9Vbmljb2RlKCk6ID9zdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBJUCB2ZXJzaW9uLgogICAgICoKICAgICAqIElmIHRoZSBob3N0IGlzIGEgbm90IGFuIElQIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElwVmVyc2lvbigpOiA/c3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgSVAgY29tcG9uZW50IElmIHRoZSBIb3N0IGlzIGFuIElQIGFkZHJlc3MuCiAgICAgKgogICAgICogSWYgdGhlIGhvc3QgaXMgYSBub3QgYW4gSVAgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gbnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXAoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIGhvc3QgaXMgYSBkb21haW4gbmFtZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRG9tYWluKCk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBob3N0IGlzIGFuIElQIEFkZHJlc3MuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0lwKCk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBob3N0IGlzIGEgcmVnaXN0ZXJlZCBuYW1lLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSZWdpc3RlcmVkTmFtZSgpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/IpHostInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKaW50ZXJmYWNlIElwSG9zdEludGVyZmFjZSBleHRlbmRzIEhvc3RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBob3N0IGlzIGFuIElQdjQgYWRkcmVzcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzSXB2NCgpOiBib29sOwoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgaG9zdCBpcyBhbiBJUHY2IGFkZHJlc3MuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0lwdjYoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIGhvc3QgaXMgYW4gSVB2NiBhZGRyZXNzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNJcEZ1dHVyZSgpOiBib29sOwoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgaG9zdCBoYXMgYSBab25lSWRlbnRpZmllci4KICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY4NzQjc2VjdGlvbi00CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNab25lSWRlbnRpZmllcigpOiBib29sOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGhvc3Qgd2l0aG91dCBpdHMgem9uZSBpZGVudGlmaWVyIGFjY29yZGluZyB0byBSRkM2ODc0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2Ugd2l0aG91dCB0aGUgaG9zdCB6b25lIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIFJGQzY4NzQKICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY4NzQjc2VjdGlvbi00CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0Wm9uZUlkZW50aWZpZXIoKTogc2VsZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/PathInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uc1xTeW50YXhFcnJvcjsKCi8qKgogKiBAbWV0aG9kIHN0YXRpYyBub3JtYWxpemUoKSByZXR1cm5zIHRoZSBub3JtYWxpemVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tcG9uZW50CiAqLwppbnRlcmZhY2UgUGF0aEludGVyZmFjZSBleHRlbmRzIFVyaUNvbXBvbmVudEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGRlY29kZWQgcGF0aC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY29kZWQoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgcGF0aCBpcyBhYnNvbHV0ZSBvciByZWxhdGl2ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzQWJzb2x1dGUoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIHBhdGggaGFzIGEgdHJhaWxpbmcgc2xhc2guCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNUcmFpbGluZ1NsYXNoKCk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIHdpdGhvdXQgZG90IHNlZ21lbnRzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgcGF0aCBjb21wb25lbnQgbm9ybWFsaXplZCBieSByZW1vdmluZwogICAgICogdGhlIGRvdCBzZWdtZW50LgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgZm9yIGludmFsaWQgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aG91dERvdFNlZ21lbnRzKCk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIHdpdGggYSBsZWFkaW5nIHNsYXNoLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgcGF0aCBjb21wb25lbnQgd2l0aCBhIGxlYWRpbmcgc2xhc2gKICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGZvciBpbnZhbGlkIGNvbXBvbmVudCBvciB0cmFuc2Zvcm1hdGlvbnMKICAgICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBvYmplY3QgaW4gaW52YWxpZCBzdGF0ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhMZWFkaW5nU2xhc2goKTogc2VsZjsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aG91dCBhIGxlYWRpbmcgc2xhc2guCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBwYXRoIGNvbXBvbmVudCB3aXRob3V0IGEgbGVhZGluZyBzbGFzaAogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgZm9yIGludmFsaWQgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aG91dExlYWRpbmdTbGFzaCgpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRoIGEgdHJhaWxpbmcgc2xhc2guCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBwYXRoIGNvbXBvbmVudCB3aXRoIGEgdHJhaWxpbmcgc2xhc2gKICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGZvciBpbnZhbGlkIGNvbXBvbmVudCBvciB0cmFuc2Zvcm1hdGlvbnMKICAgICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBvYmplY3QgaW4gaW52YWxpZCBzdGF0ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhUcmFpbGluZ1NsYXNoKCk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIHdpdGhvdXQgYSB0cmFpbGluZyBzbGFzaC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHBhdGggY29tcG9uZW50IHdpdGhvdXQgYSB0cmFpbGluZyBzbGFzaAogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgZm9yIGludmFsaWQgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aG91dFRyYWlsaW5nU2xhc2goKTogc2VsZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/PortInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKaW50ZXJmYWNlIFBvcnRJbnRlcmZhY2UgZXh0ZW5kcyBVcmlDb21wb25lbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBQb3J0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9JbnQoKTogP2ludDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/QueryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIEJhY2tlZEVudW07CnVzZSBDb3VudGFibGU7CnVzZSBEZXByZWNhdGVkOwp1c2UgSXRlcmF0b3I7CnVzZSBJdGVyYXRvckFnZ3JlZ2F0ZTsKdXNlIExlYWd1ZVxVcmlcUXVlcnlDb21wb3NlTW9kZTsKdXNlIExlYWd1ZVxVcmlcU3RyaW5nQ29lcmNpb25Nb2RlOwp1c2UgU3RyaW5nYWJsZTsKCi8qKgogKiBAZXh0ZW5kcyBJdGVyYXRvckFnZ3JlZ2F0ZTxhcnJheXswOnN0cmluZywgMTpzdHJpbmd8bnVsbH0+CiAqCiAqIEBtZXRob2Qgc3RyaW5nfG51bGwgdG9Gb3JtRGF0YSgpIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiB1c2luZyB0aGUgYXBwbGljYXRpb24vd3d3LWZvcm0tdXJsZW5jb2RlZCBydWxlcwogKiBAbWV0aG9kIHN0cmluZ3xudWxsIHRvUkZDMzk4NigpIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiB1c2luZyBSRkMzOTg2IHJ1bGVzCiAqIEBtZXRob2Qgc3RyaW5nfG51bGwgZmlyc3Qoc3RyaW5nICRrZXkpIFJldHVybnMgdGhlIGZpcnN0IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbmFtZQogKiBAbWV0aG9kIHN0cmluZ3xudWxsIGxhc3Qoc3RyaW5nICRrZXkpIFJldHVybnMgdGhlIGZpcnN0IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbmFtZQogKiBAbWV0aG9kIGludHxudWxsIGluZGV4T2Yoc3RyaW5nICRrZXksIGludCAkbnRoID0gMCkgUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoZSBwYWlyIGJhc2VkIG9uIGl0cyBrZXkgYW5kIGl0cyBudGggb2NjdXJyZW5jZTsgbmVnYXRpdmUgb2NjdXJyZW5jZXMgYXJlIHN1cHBvcnRlZAogKiBAbWV0aG9kIGludHxudWxsIGluZGV4T2ZWYWx1ZSg/c3RyaW5nICR2YWx1ZSwgaW50ICRudGggPSAwKSBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIHBhaXIgYmFzZWQgb24gaXRzIHZhbHVlIGFuZCBpdHMgbnRoIG9jY3VycmVuY2U7IG5lZ2F0aXZlIG9jY3VycmVuY2VzIGFyZSBzdXBwb3J0ZWQKICogQG1ldGhvZCBhcnJheSBwYWlyKGludCAkb2Zmc2V0KSBSZXR1cm5zIHRoZSBrZXkvdmFsdWUgcGFpciBhdCB0aGUgZ2l2ZW4gbnVtZXJpYyBvZmZzZXQ7IG5lZ2F0aXZlIG9jY3VycmVuY2VzIGFyZSBzdXBwb3J0ZWQKICogQG1ldGhvZCBpbnQgY291bnREaXN0aW5jdEtleXMoKSBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgZGlzdGluY3Qga2V5cwogKiBAbWV0aG9kIHN0cmluZ3xudWxsIHZhbHVlQXQoaW50ICRvZmZzZXQpOiBSZXR1cm5zIHRoZSB2YWx1ZSBhdCB0aGUgZ2l2ZW4gbnVtZXJpYyBvZmZzZXQ7IG5lZ2F0aXZlIG9jY3VycmVuY2VzIGFyZSBzdXBwb3J0ZWQKICogQG1ldGhvZCBzdHJpbmcga2V5QXQoaW50ICRvZmZzZXQpOiBSZXR1cm5zIHRoZSBrZXkgYXQgdGhlIGdpdmVuIG51bWVyaWMgb2Zmc2V0OyBuZWdhdGl2ZSBvY2N1cnJlbmNlcyBhcmUgc3VwcG9ydGVkCiAqIEBtZXRob2Qgc2VsZiBub3JtYWxpemUoKSByZXR1cm5zIHRoZSBub3JtYWxpemVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tcG9uZW50CiAqIEBtZXRob2Qgc2VsZiB3aXRob3V0UGFpckJ5S2V5KHN0cmluZyAuLi4ka2V5cykgUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRob3V0IHBhaXJzIHdpdGggdGhlIHNwZWNpZmllZCBrZXlzLgogKiBAbWV0aG9kIHNlbGYgd2l0aG91dFBhaXJCeVZhbHVlKGFycmF5fEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8aW50fGJvb2x8bnVsbCAkdmFsdWVzLCBTdHJpbmdDb2VyY2lvbk1vZGUgJGNvZXJjaW9uTW9kZSA9IFN0cmluZ0NvZXJjaW9uTW9kZTo6TmF0aXZlKSBSZXR1cm5zIGFuIGluc3RhbmNlIHdpdGhvdXQgcGFpcnMgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlcy4KICogQG1ldGhvZCBzZWxmIHdpdGhvdXRQYWlyQnlLZXlWYWx1ZShzdHJpbmcgJGtleSwgQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xpbnR8Ym9vbHxudWxsICR2YWx1ZSwgU3RyaW5nQ29lcmNpb25Nb2RlICRjb2VyY2lvbk1vZGUgPSBTdHJpbmdDb2VyY2lvbk1vZGU6Ok5hdGl2ZSkgUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRob3V0IHBhaXJzIHdpdGggdGhlIHNwZWNpZmllZCBrZXkvdmFsdWUgcGFpcgogKiBAbWV0aG9kIGJvb2wgaGFzUGFpcihzdHJpbmcgJGtleSwgP3N0cmluZyAkdmFsdWUpIFRlbGxzIHdoZXRoZXIgdGhlIHBhaXIgZXhpc3RzIGluIHRoZSBxdWVyeS4KICogQG1ldGhvZCBhcnJheSBnZXRMaXN0KHN0cmluZyAkbmFtZSkgUmV0dXJucyB0aGUgbGlzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgYW4gZW1wdHkgYXJyYXkgaWYgaXQgZG9lcyBub3QgZXhpc3QuCiAqIEBtZXRob2QgYm9vbCBoYXNMaXN0KHN0cmluZyAuLi4kbmFtZXMpIFRlbGxzIHdoZXRoZXIgdGhlIHBhcmFtZXRlciBsaXN0IGV4aXN0cyBpbiB0aGUgcXVlcnkuCiAqIEBtZXRob2Qgc2VsZiBhcHBlbmRMaXN0KHN0cmluZyAkbmFtZSwgYXJyYXkgJHZhbHVlcywgUXVlcnlDb21wb3NlTW9kZSAkY29tcG9zZU1vZGUgPSBRdWVyeUNvbXBvc2VNb2RlOjpOYXRpdmUpIEFwcGVuZHMgYSBwYXJhbWV0ZXIgdG8gdGhlIHF1ZXJ5IHN0cmluZwogKiBAbWV0aG9kIHNlbGYgd2l0aExpc3Qoc3RyaW5nICRuYW1lLCBhcnJheSAkdmFsdWVzLCBRdWVyeUNvbXBvc2VNb2RlICRjb21wb3NlTW9kZSA9IFF1ZXJ5Q29tcG9zZU1vZGU6Ok5hdGl2ZSkgQWRkcyBhIG5ldyBwYXJhbWV0ZXIgdG8gdGhlIHF1ZXJ5IHN0cmluZyBhbmQgcmVtb3ZlIGFueSBwcmV2aW91c2x5IHNldCB2YWx1ZXMKICogQG1ldGhvZCBzZWxmIHdpdGhvdXRMaXN0KHN0cmluZyAuLi4kbmFtZXMpIFJlbW92ZXMgYW55IGdpdmVuIGxpc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBuYW1lcwogKiBAbWV0aG9kIHNlbGYgd2l0aG91dExpc3RzKCkgUmVtb3ZlcyBhbGwgbGlzdHMgZnJvbSB0aGUgcXVlcnkgc3RyaW5nCiAqIEBtZXRob2Qgc2VsZiBvbmx5TGlzdHMoKSBSZW1vdmVzIGFsbCBwYWlycyB3aXRob3V0IGEgdmFsaWQgUEhQJ3MgYnJhY2tldCBub3RhdGlvbgogKi8KaW50ZXJmYWNlIFF1ZXJ5SW50ZXJmYWNlIGV4dGVuZHMgQ291bnRhYmxlLCBJdGVyYXRvckFnZ3JlZ2F0ZSwgVXJpQ29tcG9uZW50SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcXVlcnkgc2VwYXJhdG9yLgogICAgICoKICAgICAqIEByZXR1cm4gbm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VwYXJhdG9yKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBrZXkvdmFsdWUgcGFpcnMgcHJlc2VudCBpbiB0aGUgb2JqZWN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoKTogaW50OwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpdGVyYXRvciBhbGxvd2luZyB0byBnbyB0aHJvdWdoIGFsbCBrZXkvdmFsdWUgcGFpcnMgY29udGFpbmVkIGluIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIFRoZSBwYWlyIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IHdoZXJlIHRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUgcGFpciBrZXkKICAgICAqIGFuZCB0aGUgc2Vjb25kIHZhbHVlIHRoZSBwYWlyIHZhbHVlLgogICAgICoKICAgICAqIFRoZSBrZXkgb2YgZWFjaCBwYWlyIGlzIGEgc3RyaW5nCiAgICAgKiBUaGUgdmFsdWUgb2YgZWFjaCBwYWlyIGlzIGEgc2NhbGFyIG9yIHRoZSBudWxsIHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBJdGVyYXRvcjxpbnQsIGFycmF5ezA6c3RyaW5nLCAxOnN0cmluZ3xudWxsfT4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEl0ZXJhdG9yKCk6IEl0ZXJhdG9yOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpdGVyYXRvciBhbGxvd2luZyB0byBnbyB0aHJvdWdoIGFsbCBrZXkvdmFsdWUgcGFpcnMgY29udGFpbmVkIGluIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIFRoZSByZXR1cm4gdHlwZSBpcyBhcyBhbiBJdGVyYXRvciB3aGVyZSBpdHMgb2Zmc2V0IGlzIHRoZSBwYWlyIGtleSBhbmQgaXRzIHZhbHVlIHRoZSBwYWlyIHZhbHVlLgogICAgICoKICAgICAqIFRoZSBrZXkgb2YgZWFjaCBwYWlyIGlzIGEgc3RyaW5nCiAgICAgKiBUaGUgdmFsdWUgb2YgZWFjaCBwYWlyIGlzIGEgc2NhbGFyIG9yIHRoZSBudWxsIHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBpdGVyYWJsZTxzdHJpbmcsIHN0cmluZ3xudWxsPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFpcnMoKTogaXRlcmFibGU7CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIGEgbGlzdCBvZiBwYWlyIHdpdGggYSBzcGVjaWZpYyBrZXkgZXhpc3RzLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWhhcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzKHN0cmluZyAuLi4ka2V5cyk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSBhc3NvY2lhdGVkIHRvIHRoZSBnaXZlbiBwYWlyIG5hbWUuCiAgICAgKgogICAgICogSWYgbm8gdmFsdWUgaXMgZm91bmQgbnVsbCBpcyByZXR1cm5lZAogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWdldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KHN0cmluZyAka2V5KTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB0byB0aGUgZ2l2ZW4gcGFpciBuYW1lIGFzIGFuIGFycmF5IG9yIGFsbAogICAgICogdGhlIGluc3RhbmNlIHBhaXJzLgogICAgICoKICAgICAqIElmIG5vIHZhbHVlIGlzIGZvdW5kIGFuIGVtcHR5IGFycmF5IGlzIHJldHVybmVkCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZ2V0YWxsCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIHN0cmluZ3xudWxsPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsKHN0cmluZyAka2V5KTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdG9yZSBQSFAgdmFyaWFibGVzIGFzIGVsZW1lbnRzIG9mIGFuIGFycmF5LgogICAgICoKICAgICAqIFRoZSByZXN1bHQgaXMgc2ltaWxhciBhcyBQSFAgcGFyc2Vfc3RyIHdoZW4gdXNlZCB3aXRoIGl0cwogICAgICogc2Vjb25kIGFyZ3VtZW50IHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB2YXJpYWJsZSBuYW1lcyBhcmUKICAgICAqIG5vdCBtYW5nbGVkLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvcGFyc2Vfc3RyCiAgICAgKiBAc2VlIGh0dHBzOi8vd2lraS5waHAubmV0L3JmYy9vbl9kZW1hbmRfbmFtZV9tYW5nbGluZwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgdGhlIGNvbGxlY3Rpb24gb2Ygc3RvcmVkIFBIUCB2YXJpYWJsZXMgb3IgdGhlIGVtcHR5IGFycmF5IGlmIG5vIGlucHV0IGlzIGdpdmVuLAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyYW1ldGVycygpOiBhcnJheTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIGF0dGFjaGVkIHRvIHRoZSBzcGVjaWZpYyBrZXkuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBpcyBzaW1pbGFyIHRvIFBIUCBwYXJzZV9zdHIgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IHZhcmlhYmxlCiAgICAgKiBuYW1lcyBhcmUgbm90IG1hbmdsZWQuCiAgICAgKgogICAgICogSWYgYSBrZXkgaXMgc3VibWl0dGVkIGl0IHdpbGwgcmV0dXJuIHRoZSB2YWx1ZSBhdHRhY2hlZCB0byBpdCBvciBudWxsCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9wYXJzZV9zdHIKICAgICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBocC5uZXQvcmZjL29uX2RlbWFuZF9uYW1lX21hbmdsaW5nCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZCB0aGUgY29sbGVjdGlvbiBvZiBzdG9yZWQgUEhQIHZhcmlhYmxlcyBvciB0aGUgZW1wdHkgYXJyYXkgaWYgbm8gaW5wdXQgaXMgZ2l2ZW4sCiAgICAgKiAgICAgICAgICAgICAgIHRoZSBzaW5nbGUgdmFsdWUgb2YgYSBzdG9yZWQgUEhQIHZhcmlhYmxlIG9yIG51bGwgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBjb2xsZWN0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJhbWV0ZXIoc3RyaW5nICRuYW1lKTogbWl4ZWQ7CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIGEgbGlzdCBvZiB2YXJpYWJsZSB3aXRoIHNwZWNpZmljIG5hbWVzIGV4aXN0cy4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1oYXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1BhcmFtZXRlcihzdHJpbmcgLi4uJG5hbWVzKTogYm9vbDsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIFJGQzE3MzggZW5jb2RlZCBxdWVyeS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvUkZDMTczOCgpOiA/c3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRoIGEgZGlmZmVyZW50IHNlcGFyYXRvci4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHF1ZXJ5IGNvbXBvbmVudCB3aXRoIGEgZGlmZmVyZW50IHNlcGFyYXRvcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNlcGFyYXRvcihzdHJpbmcgJHNlcGFyYXRvcik6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIHdpdGggdGhlIG5ldyBwYWlycyBzZXQgdG8gaXQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2RpZmllZCBxdWVyeQogICAgICoKICAgICAqIEBzZWUgOjp3aXRoUGFpcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWVyZ2UoU3RyaW5nYWJsZXxzdHJpbmcgJHF1ZXJ5KTogc2VsZjsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aCB0aGUgbmV3IHBhaXJzIGFwcGVuZGVkIHRvIGl0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgbW9kaWZpZWQgcXVlcnkKICAgICAqCiAgICAgKiBJZiB0aGUgcGFpciBhbHJlYWR5IGV4aXN0cyB0aGUgdmFsdWUgd2lsbCBiZSBhZGRlZCB0byBpdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFwcGVuZChTdHJpbmdhYmxlfHN0cmluZyAkcXVlcnkpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSB3aXRoIGEgc3BlY2lmaWVkIGtleS92YWx1ZSBwYWlyIGFwcGVuZGVkIGFzIGEgbmV3IHBhaXIuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2RpZmllZCBxdWVyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXBwZW5kVG8oc3RyaW5nICRrZXksIFN0cmluZ2FibGV8c3RyaW5nfGludHxib29sfG51bGwgJHZhbHVlKTogc2VsZjsKCiAgICAvKioKICAgICAqIFNvcnRzIHRoZSBxdWVyeSBzdHJpbmcgYnkgb2Zmc2V0LCBtYWludGFpbmluZyBvZmZzZXQgdG8gZGF0YSBjb3JyZWxhdGlvbnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2RpZmllZCBxdWVyeQogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLXNvcnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNvcnQoKTogc2VsZjsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aG91dCBkdXBsaWNhdGUga2V5L3ZhbHVlIHBhaXIuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBxdWVyeSBjb21wb25lbnQgbm9ybWFsaXplZCBieSByZW1vdmluZwogICAgICogZHVwbGljYXRlIHBhaXJzIHdob3NlIGtleS92YWx1ZSBhcmUgdGhlIHNhbWUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0RHVwbGljYXRlcygpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRob3V0IGVtcHR5IGtleS92YWx1ZSB3aGVyZSB0aGUgdmFsdWUgaXMgdGhlIG51bGwgdmFsdWUuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBxdWVyeSBjb21wb25lbnQgbm9ybWFsaXplZCBieSByZW1vdmluZwogICAgICogZW1wdHkgcGFpcnMuCiAgICAgKgogICAgICogQSBwYWlyIGlzIGNvbnNpZGVyZWQgZW1wdHkgaWYgaXRzIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBudWxsIHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0RW1wdHlQYWlycygpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aGVyZSBudW1lcmljIGluZGljZXMgYXNzb2NpYXRlZCB0byBQSFAncyBhcnJheSBsaWtlIGtleSBhcmUgcmVtb3ZlZC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHF1ZXJ5IGNvbXBvbmVudCBub3JtYWxpemVkIHNvIHRoYXQgbnVtZXJpYyBpbmRleGVzCiAgICAgKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwYWlyIGtleSB2YWx1ZS4KICAgICAqCiAgICAgKiBpLmUuOiB0b3RvWzNdPWJhclszXSZmb289YmFyIGJlY29tZXMgdG90b1tdPWJhclszXSZmb289YmFyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0TnVtZXJpY0luZGljZXMoKTogc2VsZjsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aCBhIG5ldyBrZXkvdmFsdWUgcGFpciBhZGRlZCB0byBpdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIG1vZGlmaWVkIHF1ZXJ5CiAgICAgKgogICAgICogSWYgdGhlIHBhaXIgYWxyZWFkeSBleGlzdHMgdGhlIHZhbHVlIHdpbGwgcmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWUuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtc2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUGFpcihzdHJpbmcgJGtleSwgU3RyaW5nYWJsZXxzdHJpbmd8aW50fGZsb2F0fGJvb2x8bnVsbCAkdmFsdWUpOiBzZWxmOwoKICAgIC8qKgogICAgICogREVQUkVDQVRJT04gV0FSTklORyEgVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHBvaW50IHJlbGVhc2UuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgU2luY2UgdmVyc2lvbiA3LjMuMAogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICogQHNlZSBRdWVyeUludGVyZmFjZTo6d2l0aG91dFBhaXJCeUtleSgpCiAgICAgKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRob3V0IHRoZSBzcGVjaWZpZWQga2V5cy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIG1vZGlmaWVkIGNvbXBvbmVudAogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFF1ZXJ5SW50ZXJmYWNlOjp3aXRob3V0UGFpckJ5S2V5KCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpLWludGVyZmFjZXM6Ny4zLjAnKV0KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0UGFpcihzdHJpbmcgLi4uJGtleXMpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRob3V0IHRoZSBzcGVjaWZpZWQgcGFyYW1zLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgbW9kaWZpZWQgY29tcG9uZW50IHdpdGhvdXQgUEhQJ3MgdmFsdWUuCiAgICAgKiBQSFAncyBtYW5nbGVkIGlzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0UGFyYW1ldGVycyhzdHJpbmcgLi4uJG5hbWVzKTogc2VsZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIENvdW50YWJsZTsKdXNlIEl0ZXJhdG9yOwp1c2UgSXRlcmF0b3JBZ2dyZWdhdGU7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBTdHJpbmdhYmxlOwoKLyoqCiAqIEBleHRlbmRzIEl0ZXJhdG9yQWdncmVnYXRlPHN0cmluZz4KICovCmludGVyZmFjZSBTZWdtZW50ZWRQYXRoSW50ZXJmYWNlIGV4dGVuZHMgQ291bnRhYmxlLCBJdGVyYXRvckFnZ3JlZ2F0ZSwgUGF0aEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBzZWdtZW50cyBpbiB0aGUgcGF0aC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCk6IGludDsKCiAgICAvKioKICAgICAqIEl0ZXJhdGUgb3ZlciB0aGUgcGF0aCBzZWdtZW50LgogICAgICoKICAgICAqIEByZXR1cm4gSXRlcmF0b3I8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXRlcmF0b3IoKTogSXRlcmF0b3I7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHBhcmVudCBkaXJlY3RvcnkncyBwYXRoLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGlybmFtZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBwYXRoIGJhc2VuYW1lLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QmFzZW5hbWUoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYmFzZW5hbWUgZXh0ZW5zaW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlcyBhIHNpbmdsZSBwYXRoIHNlZ21lbnQuCiAgICAgKgogICAgICogSWYgdGhlIHNlZ21lbnQgb2Zmc2V0IGhhcyBub3QgYmVlbiBzZXQsIHJldHVybnMgbnVsbC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldChpbnQgJG9mZnNldCk6ID9zdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBhc3NvY2lhdGVkIGtleSBmb3IgYSBzcGVjaWZpYyBzZWdtZW50LgogICAgICoKICAgICAqIElmIGEgdmFsdWUgaXMgc3BlY2lmaWVkIG9ubHkgdGhlIGtleXMgYXNzb2NpYXRlZCB3aXRoCiAgICAgKiB0aGUgZ2l2ZW4gdmFsdWUgd2lsbCBiZSByZXR1cm5lZAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8aW50PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ga2V5cyhTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRzZWdtZW50ID0gbnVsbCk6IGFycmF5OwoKICAgIC8qKgogICAgICogQXBwZW5kcyBhIHNlZ21lbnQgdG8gdGhlIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhcHBlbmQoU3RyaW5nYWJsZXxzdHJpbmcgJHBhdGgpOiBzZWxmOwoKICAgIC8qKgogICAgICogRXh0cmFjdHMgYSBzbGljZSBvZiAkbGVuZ3RoIGVsZW1lbnRzIHN0YXJ0aW5nIGF0IHBvc2l0aW9uICRvZmZzZXQgZnJvbSB0aGUgaG9zdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNlbGVjdGVkIHNsaWNlLgogICAgICoKICAgICAqIElmICRsZW5ndGggaXMgbnVsbCBpdCByZXR1cm5zIGFsbCBlbGVtZW50cyBmcm9tICRvZmZzZXQgdG8gdGhlIGVuZCBvZiB0aGUgUGF0aC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNsaWNlKGludCAkb2Zmc2V0LCA/aW50ICRsZW5ndGggPSBudWxsKTogc2VsZjsKCiAgICAvKioKICAgICAqIFByZXBlbmRzIGEgc2VnbWVudCB0byB0aGUgcGF0aC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByZXBlbmQoU3RyaW5nYWJsZXxzdHJpbmcgJHBhdGgpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRoIHRoZSBtb2RpZmllZCBzZWdtZW50LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgbmV3IHNlZ21lbnQKICAgICAqCiAgICAgKiBJZiAka2V5IGlzIG5vbi1uZWdhdGl2ZSwgdGhlIGFkZGVkIHNlZ21lbnQgd2lsbCBiZSB0aGUgc2VnbWVudCBhdCAka2V5IHBvc2l0aW9uIGZyb20gdGhlIHN0YXJ0LgogICAgICogSWYgJGtleSBpcyBuZWdhdGl2ZSwgdGhlIGFkZGVkIHNlZ21lbnQgd2lsbCBiZSB0aGUgc2VnbWVudCBhdCAka2V5IHBvc2l0aW9uIGZyb20gdGhlIGVuZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIElmIHRoZSBrZXkgaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNlZ21lbnQoaW50ICRrZXksIFN0cmluZ2FibGV8c3RyaW5nICRzZWdtZW50KTogc2VsZjsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aG91dCB0aGUgc3BlY2lmaWVkIHNlZ21lbnQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2RpZmllZCBjb21wb25lbnQKICAgICAqCiAgICAgKiBJZiAka2V5IGlzIG5vbi1uZWdhdGl2ZSwgdGhlIHJlbW92ZWQgc2VnbWVudCB3aWxsIGJlIHRoZSBzZWdtZW50IGF0ICRrZXkgcG9zaXRpb24gZnJvbSB0aGUgc3RhcnQuCiAgICAgKiBJZiAka2V5IGlzIG5lZ2F0aXZlLCB0aGUgcmVtb3ZlZCBzZWdtZW50IHdpbGwgYmUgdGhlIHNlZ21lbnQgYXQgJGtleSBwb3NpdGlvbiBmcm9tIHRoZSBlbmQuCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBJZiB0aGUga2V5IGlzIGludmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRTZWdtZW50KGludCAuLi4ka2V5cyk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIHdpdGhvdXQgZHVwbGljYXRlIGRlbGltaXRlcnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBwYXRoIGNvbXBvbmVudCBub3JtYWxpemVkIGJ5IHJlbW92aW5nCiAgICAgKiBtdWx0aXBsZSBjb25zZWN1dGl2ZSBlbXB0eSBzZWdtZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0RW1wdHlTZWdtZW50cygpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGFyZW50IGRpcmVjdG9yeSdzIHBhdGguCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBleHRlbnNpb24gYmFzZW5hbWUgbW9kaWZpZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoRGlybmFtZShTdHJpbmdhYmxlfHN0cmluZyAkcGF0aCk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBiYXNlbmFtZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGV4dGVuc2lvbiBiYXNlbmFtZSBtb2RpZmllZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhCYXNlbmFtZShTdHJpbmdhYmxlfHN0cmluZyAkYmFzZW5hbWUpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYmFzZW5hbWUgZXh0ZW5zaW9uLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgZXh0ZW5zaW9uIGJhc2VuYW1lIG1vZGlmaWVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEV4dGVuc2lvbihTdHJpbmdhYmxlfHN0cmluZyAkZXh0ZW5zaW9uKTogc2VsZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/Transformable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKaW50ZXJmYWNlIFRyYW5zZm9ybWFibGUKewogICAgLyoqCiAgICAgKiBBcHBseSBhIHRyYW5zZm9ybWF0aW9uIHRvIHRoaXMgaW5zdGFuY2UgYW5kIHJldHVybiBhIG5ldyBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBzYW1lIHR5cGUuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKHN0YXRpYyk6IHN0YXRpYyAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRyYW5zZm9ybShjYWxsYWJsZSAkY2FsbGJhY2spOiBzdGF0aWM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/UriAccess.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlIGFzIFBzcjdVcmlJbnRlcmZhY2U7CgovKioKICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA3LjYuMAogKi8KaW50ZXJmYWNlIFVyaUFjY2Vzcwp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXJpKCk6IFVyaUludGVyZmFjZXxQc3I3VXJpSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgUkZDMzk4NiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbXBsZXRlIFVSSS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVyaVN0cmluZygpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/UriComponentInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIEpzb25TZXJpYWxpemFibGU7CnVzZSBTdHJpbmdhYmxlOwoKLyoqCiAqIEBtZXRob2Qgc3RhdGljIHdoZW4oY2FsbGFibGV8Ym9vbCAkY29uZGl0aW9uLCBjYWxsYWJsZSAkb25TdWNjZXNzLCA/Y2FsbGFibGUgJG9uRmFpbCA9IG51bGwpIGNvbmRpdGlvbmFsbHkgcmV0dXJuIGEgbmV3IGluc3RhbmNlCiAqIEBtZXRob2QgYm9vbCBlcXVhbHMobWl4ZWQgJHZhbHVlKSB0ZWxscyB3aGV0aGVyIHRoZSBzdWJtaXR0ZWQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGN1cnJlbnQgaW5zdGFuY2UgdmFsdWUKICovCmludGVyZmFjZSBVcmlDb21wb25lbnRJbnRlcmZhY2UgZXh0ZW5kcyBKc29uU2VyaWFsaXphYmxlLCBTdHJpbmdhYmxlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5zdGFuY2Ugc3RyaW5nIHJlcHJlc2VudGF0aW9uLgogICAgICoKICAgICAqIElmIHRoZSBpbnN0YW5jZSBpcyBkZWZpbmVkLCB0aGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBwZXJjZW50LWVuY29kZWQsCiAgICAgKiBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZSBhbnkgY2hhcmFjdGVycy4gVG8gZGV0ZXJtaW5lIHdoYXQgY2hhcmFjdGVycwogICAgICogdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8gUkZDIDM5ODYsIFNlY3Rpb25zIDIgYW5kIDMuCiAgICAgKgogICAgICogSWYgdGhlIGluc3RhbmNlIGlzIG5vdCBkZWZpbmVkIG51bGwgaXMgcmV0dXJuZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbHVlKCk6ID9zdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBpbnN0YW5jZSBzdHJpbmcgcmVwcmVzZW50YXRpb24uCiAgICAgKgogICAgICogSWYgdGhlIGluc3RhbmNlIGlzIGRlZmluZWQsIHRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwKICAgICAqIGJ1dCBNVVNUIE5PVCBkb3VibGUtZW5jb2RlIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzCiAgICAgKiB0byBlbmNvZGUsIHBsZWFzZSByZWZlciB0byBSRkMgMzk4NiwgU2VjdGlvbnMgMiBhbmQgMy4KICAgICAqCiAgICAgKiBJZiB0aGUgaW5zdGFuY2UgaXMgbm90IGRlZmluZWQsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5zdGFuY2Ugc3RyaW5nIHJlcHJlc2VudGF0aW9uLgogICAgICoKICAgICAqIElmIHRoZSBpbnN0YW5jZSBpcyBkZWZpbmVkLCB0aGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBwZXJjZW50LWVuY29kZWQsCiAgICAgKiBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZSBhbnkgY2hhcmFjdGVycy4gVG8gZGV0ZXJtaW5lIHdoYXQgY2hhcmFjdGVycwogICAgICogdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8gUkZDIDM5ODYsIFNlY3Rpb25zIDIgYW5kIDMuCiAgICAgKgogICAgICogSWYgdGhlIGluc3RhbmNlIGlzIG5vdCBkZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5zdGFuY2UganNvbiByZXByZXNlbnRhdGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGUgaW5zdGFuY2UgaXMgZGVmaW5lZCwgdGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLAogICAgICogYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUgYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMKICAgICAqIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvIFJGQyAzOTg2IG9yIFJGQyAxNzM4LgogICAgICoKICAgICAqIElmIHRoZSBpbnN0YW5jZSBpcyBub3QgZGVmaW5lZCwgbnVsbCBpcyByZXR1cm5lZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpOiA/c3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5zdGFuY2Ugc3RyaW5nIHJlcHJlc2VudGF0aW9uIHdpdGggaXRzIG9wdGlvbmFsIFVSSSBkZWxpbWl0ZXJzLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUgYW55CiAgICAgKiBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvIFJGQyAzOTg2LAogICAgICogU2VjdGlvbnMgMiBhbmQgMy4KICAgICAqCiAgICAgKiBJZiB0aGUgaW5zdGFuY2UgaXMgbm90IGRlZmluZWQsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXJpQ29tcG9uZW50KCk6IHN0cmluZzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/UriException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIFRocm93YWJsZTsKCmludGVyZmFjZSBVcmlFeGNlcHRpb24gZXh0ZW5kcyBUaHJvd2FibGUKewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/UriInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIEpzb25TZXJpYWxpemFibGU7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcTWlzc2luZ0ZlYXR1cmU7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBMZWFndWVcVXJpXFVyaVN0cmluZzsKdXNlIFN0cmluZ2FibGU7CgovKioKICogQHBocHN0YW4taW1wb3J0LXR5cGUgQ29tcG9uZW50TWFwIGZyb20gVXJpU3RyaW5nCiAqCiAqIEBtZXRob2Qgc3RyaW5nfG51bGwgZ2V0VXNlcm5hbWUoKSByZXR1cm5zIHRoZSB1c2VyIGNvbXBvbmVudCBvZiB0aGUgVVJJLgogKiBAbWV0aG9kIHNlbGYgd2l0aFVzZXJuYW1lKD9zdHJpbmcgJHVzZXIpIHJldHVybnMgYSBuZXcgVVJJIGluc3RhbmNlIHdpdGggdGhlIHVzZXIgY29tcG9uZW50IHVwZGF0ZWQuCiAqIEBtZXRob2Qgc3RyaW5nfG51bGwgZ2V0UGFzc3dvcmQoKSByZXR1cm5zIHRoZSBzY2hlbWUtc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGdhaW4gYXV0aG9yaXphdGlvbiB0byBhY2Nlc3MgdGhlIHJlc291cmNlLgogKiBAbWV0aG9kIHNlbGYgd2l0aFBhc3N3b3JkKD9zdHJpbmcgJHBhc3N3b3JkKSByZXR1cm5zIGEgbmV3IFVSSSBpbnN0YW5jZSB3aXRoIHRoZSBwYXNzd29yZCBjb21wb25lbnQgdXBkYXRlZC4KICogQG1ldGhvZCBzdHJpbmcgdG9Bc2NpaVN0cmluZygpIHJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgVVJJIGluIGl0cyBSRkMzOTg2IGZvcm0KICogQG1ldGhvZCBzdHJpbmcgdG9Vbmljb2RlU3RyaW5nKCkgcmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBVUkkgaW4gaXRzIFJGQzM5ODcgZm9ybSAodGhlIGhvc3QgaXMgaW4gaXRzIElETiBmb3JtKQogKiBAbWV0aG9kIGFycmF5IHRvQ29tcG9uZW50cygpIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFVSSSBjb21wb25lbnRzLgogKiBAbWV0aG9kIHNlbGYgbm9ybWFsaXplKCkgcmV0dXJucyBhIG5ldyBVUkkgaW5zdGFuY2Ugd2l0aCBub3JtYWxpemVkIGNvbXBvbmVudHMKICogQG1ldGhvZCBzZWxmIHJlc29sdmUoVXJpSW50ZXJmYWNlICR1cmkpIHJlc29sdmVzIGEgVVJJIGFnYWluc3QgYSBiYXNlIFVSSSB1c2luZyBSRkMzOTg2IHJ1bGVzCiAqIEBtZXRob2Qgc2VsZiByZWxhdGl2aXplKFVyaUludGVyZmFjZSAkdXJpKSByZWxhdGl2aXplIGEgVVJJIGFnYWluc3QgYSBiYXNlIFVSSSB1c2luZyBSRkMzOTg2IHJ1bGVzCiAqLwppbnRlcmZhY2UgVXJpSW50ZXJmYWNlIGV4dGVuZHMgSnNvblNlcmlhbGl6YWJsZSwgU3RyaW5nYWJsZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBhIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4xCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBhIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4xCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1N0cmluZygpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYXMgYSBVUkkgcmVmZXJlbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMQogICAgICogQHNlZSA6Ol9fdG9TdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHNjaGVtZSBjb21wb25lbnQgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBzY2hlbWUgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYSBudWxsIHZhbHVlLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlLCBwZXIgUkZDIDM5ODYKICAgICAqIFNlY3Rpb24gMy4xLgogICAgICoKICAgICAqIFRoZSB0cmFpbGluZyAiOiIgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBzY2hlbWUgYW5kIE1VU1QgTk9UIGJlCiAgICAgKiBhZGRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4xCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTY2hlbWUoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBhdXRob3JpdHkgY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gc2NoZW1lIGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGEgbnVsbCB2YWx1ZS4KICAgICAqCiAgICAgKiBJZiB0aGUgcG9ydCBjb21wb25lbnQgaXMgbm90IHNldCBvciBpcyB0aGUgc3RhbmRhcmQgcG9ydCBmb3IgdGhlIGN1cnJlbnQKICAgICAqIHNjaGVtZSwgaXQgU0hPVUxEIE5PVCBiZSBpbmNsdWRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRob3JpdHkoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSB1c2VyIGluZm9ybWF0aW9uIGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIHNjaGVtZSBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhIG51bGwgdmFsdWUuCiAgICAgKgogICAgICogSWYgYSB1c2VyIGlzIHByZXNlbnQgaW4gdGhlIFVSSSwgdGhpcyB3aWxsIHJldHVybiB0aGF0IHZhbHVlOwogICAgICogYWRkaXRpb25hbGx5LCBpZiB0aGUgcGFzc3dvcmQgaXMgYWxzbyBwcmVzZW50LCBpdCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZQogICAgICogdXNlciB2YWx1ZSwgd2l0aCBhIGNvbG9uICgiOiIpIHNlcGFyYXRpbmcgdGhlIHZhbHVlcy4KICAgICAqCiAgICAgKiBUaGUgdHJhaWxpbmcgIkAiIGNoYXJhY3RlciBpcyBub3QgcGFydCBvZiB0aGUgdXNlciBpbmZvcm1hdGlvbiBhbmQgTVVTVAogICAgICogTk9UIGJlIGFkZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlckluZm8oKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBob3N0IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIGhvc3QgaXMgcHJlc2VudCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhIG51bGwgdmFsdWUuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgbm9ybWFsaXplZCB0byBsb3dlcmNhc2UsIHBlciBSRkMgMzk4NgogICAgICogU2VjdGlvbiAzLjIuMi4KICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjIuMgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SG9zdCgpOiA/c3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHBvcnQgY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgYSBwb3J0IGlzIHByZXNlbnQsIGFuZCBpdCBpcyBub24tc3RhbmRhcmQgZm9yIHRoZSBjdXJyZW50IHNjaGVtZSwKICAgICAqIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGl0IGFzIGFuIGludGVnZXIuIElmIHRoZSBwb3J0IGlzIHRoZSBzdGFuZGFyZCBwb3J0CiAgICAgKiB1c2VkIHdpdGggdGhlIGN1cnJlbnQgc2NoZW1lLCB0aGlzIG1ldGhvZCBTSE9VTEQgcmV0dXJuIG51bGwuCiAgICAgKgogICAgICogSWYgbm8gcG9ydCBpcyBwcmVzZW50LCBhbmQgbm8gc2NoZW1lIGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuCiAgICAgKiBhIG51bGwgdmFsdWUuCiAgICAgKgogICAgICogSWYgbm8gcG9ydCBpcyBwcmVzZW50LCBidXQgYSBzY2hlbWUgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTUFZIHJldHVybgogICAgICogdGhlIHN0YW5kYXJkIHBvcnQgZm9yIHRoYXQgc2NoZW1lLCBidXQgU0hPVUxEIHJldHVybiBudWxsLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG9ydCgpOiA/aW50OwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogVGhlIHBhdGggY2FuIGVpdGhlciBiZSBlbXB0eSBvciBhYnNvbHV0ZSAoc3RhcnRpbmcgd2l0aCBhIHNsYXNoKSBvcgogICAgICogcm9vdGxlc3MgKG5vdCBzdGFydGluZyB3aXRoIGEgc2xhc2gpLiBJbXBsZW1lbnRhdGlvbnMgTVVTVCBzdXBwb3J0IGFsbAogICAgICogdGhyZWUgc3ludGF4ZXMuCiAgICAgKgogICAgICogTm9ybWFsbHksIHRoZSBlbXB0eSBwYXRoICIiIGFuZCBhYnNvbHV0ZSBwYXRoICIvIiBhcmUgY29uc2lkZXJlZCBlcXVhbCBhcwogICAgICogZGVmaW5lZCBpbiBSRkMgNzIzMCBTZWN0aW9uIDIuNy4zLiBCdXQgdGhpcyBtZXRob2QgTVVTVCBOT1QgYXV0b21hdGljYWxseQogICAgICogZG8gdGhpcyBub3JtYWxpemF0aW9uIGJlY2F1c2UgaW4gY29udGV4dHMgd2l0aCBhIHRyaW1tZWQgYmFzZSBwYXRoLCBlLmcuCiAgICAgKiB0aGUgZnJvbnQgY29udHJvbGxlciwgdGhpcyBkaWZmZXJlbmNlIGJlY29tZXMgc2lnbmlmaWNhbnQuIEl0J3MgdGhlIHRhc2sKICAgICAqIG9mIHRoZSB1c2VyIHRvIGhhbmRsZSBib3RoICIiIGFuZCAiLyIuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLCBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZQogICAgICogYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMgdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8KICAgICAqIFJGQyAzOTg2LCBTZWN0aW9ucyAyIGFuZCAzLjMuCiAgICAgKgogICAgICogQXMgYW4gZXhhbXBsZSwgaWYgdGhlIHZhbHVlIHNob3VsZCBpbmNsdWRlIGEgc2xhc2ggKCIvIikgbm90IGludGVuZGVkIGFzCiAgICAgKiBkZWxpbWl0ZXIgYmV0d2VlbiBwYXRoIHNlZ21lbnRzLCB0aGF0IHZhbHVlIE1VU1QgYmUgcGFzc2VkIGluIGVuY29kZWQKICAgICAqIGZvcm0gKGUuZy4sICIlMkYiKSB0byB0aGUgaW5zdGFuY2UuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhdGgoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHF1ZXJ5IHN0cmluZyBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIGhvc3QgaXMgcHJlc2VudCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhIG51bGwgdmFsdWUuCiAgICAgKgogICAgICogVGhlIGxlYWRpbmcgIj8iIGNoYXJhY3RlciBpcyBub3QgcGFydCBvZiB0aGUgcXVlcnkgYW5kIE1VU1QgTk9UIGJlCiAgICAgKiBhZGRlZC4KICAgICAqCiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBwZXJjZW50LWVuY29kZWQsIGJ1dCBNVVNUIE5PVCBkb3VibGUtZW5jb2RlCiAgICAgKiBhbnkgY2hhcmFjdGVycy4gVG8gZGV0ZXJtaW5lIHdoYXQgY2hhcmFjdGVycyB0byBlbmNvZGUsIHBsZWFzZSByZWZlciB0bwogICAgICogUkZDIDM5ODYsIFNlY3Rpb25zIDIgYW5kIDMuNC4KICAgICAqCiAgICAgKiBBcyBhbiBleGFtcGxlLCBpZiBhIHZhbHVlIGluIGEga2V5L3ZhbHVlIHBhaXIgb2YgdGhlIHF1ZXJ5IHN0cmluZyBzaG91bGQKICAgICAqIGluY2x1ZGUgYW4gYW1wZXJzYW5kICgiJiIpIG5vdCBpbnRlbmRlZCBhcyBhIGRlbGltaXRlciBiZXR3ZWVuIHZhbHVlcywKICAgICAqIHRoYXQgdmFsdWUgTVVTVCBiZSBwYXNzZWQgaW4gZW5jb2RlZCBmb3JtIChlLmcuLCAiJTI2IikgdG8gdGhlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy40CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeSgpOiA/c3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGZyYWdtZW50IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIGhvc3QgaXMgcHJlc2VudCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhIG51bGwgdmFsdWUuCiAgICAgKgogICAgICogVGhlIGxlYWRpbmcgIiMiIGNoYXJhY3RlciBpcyBub3QgcGFydCBvZiB0aGUgZnJhZ21lbnQgYW5kIE1VU1QgTk9UIGJlCiAgICAgKiBhZGRlZC4KICAgICAqCiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBwZXJjZW50LWVuY29kZWQsIGJ1dCBNVVNUIE5PVCBkb3VibGUtZW5jb2RlCiAgICAgKiBhbnkgY2hhcmFjdGVycy4gVG8gZGV0ZXJtaW5lIHdoYXQgY2hhcmFjdGVycyB0byBlbmNvZGUsIHBsZWFzZSByZWZlciB0bwogICAgICogUkZDIDM5ODYsIFNlY3Rpb25zIDIgYW5kIDMuNS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuNQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RnJhZ21lbnQoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFVSSSBjb21wb25lbnRzLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBhcnJheSBpcyBzaW1pbGFyIHRvIFBIUCdzIHBhcnNlX3VybCByZXR1cm4gdmFsdWUgd2l0aCB0aGUgZm9sbG93aW5nCiAgICAgKiBkaWZmZXJlbmNlczoKICAgICAqCiAgICAgKiA8dWw+CiAgICAgKiA8bGk+QWxsIGNvbXBvbmVudHMgYXJlIHByZXNlbnQgaW4gdGhlIHJldHVybmVkIGFycmF5PC9saT4KICAgICAqIDxsaT5FbXB0eSBhbmQgdW5kZWZpbmVkIGNvbXBvbmVudCBhcmUgdHJlYXRlZCBkaWZmZXJlbnRseS4gQW5kIGVtcHR5IGNvbXBvbmVudCBpcwogICAgICogICBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyB3aGlsZSBhbiB1bmRlZmluZWQgY29tcG9uZW50IGlzIHNldCB0byB0aGUgYG51bGxgIHZhbHVlLjwvbGk+CiAgICAgKiA8L3VsPgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2CiAgICAgKgogICAgICogQHJldHVybiBDb21wb25lbnRNYXAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbXBvbmVudHMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHNjaGVtZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKgogICAgICogQSBudWxsIHZhbHVlIHByb3ZpZGVkIGZvciB0aGUgc2NoZW1lIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIHNjaGVtZQogICAgICogaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBmb3IgaW52YWxpZCBjb21wb25lbnQgb3IgdHJhbnNmb3JtYXRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd291bGQgcmVzdWx0IGluIGFuIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNjaGVtZShTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRzY2hlbWUpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCB1c2VyIGluZm9ybWF0aW9uLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogUGFzc3dvcmQgaXMgb3B0aW9uYWwsIGJ1dCB0aGUgdXNlciBpbmZvcm1hdGlvbiBNVVNUIGluY2x1ZGUgdGhlCiAgICAgKiB1c2VyOyBhIG51bGwgdmFsdWUgZm9yIHRoZSB1c2VyIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdXNlcgogICAgICogaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBmb3IgaW52YWxpZCBjb21wb25lbnQgb3IgdHJhbnNmb3JtYXRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd291bGQgcmVzdWx0IGluIGFuIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFVzZXJJbmZvKFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHVzZXIsIFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHBhc3N3b3JkID0gbnVsbCk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgaG9zdC4KICAgICAqCiAgICAgKiBBIG51bGwgdmFsdWUgcHJvdmlkZWQgZm9yIHRoZSBob3N0IGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIGhvc3QKICAgICAqIGluZm9ybWF0aW9uLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgZm9yIGludmFsaWQgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbiBvYmplY3QgaW4gaW52YWxpZCBzdGF0ZS4KICAgICAqIEB0aHJvd3MgTWlzc2luZ0ZlYXR1cmUgZm9yIGNvbXBvbmVudCBvciB0cmFuc2Zvcm1hdGlvbnMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyaW5nIElETiBzdXBwb3J0IHdoZW4gSUROIHN1cHBvcnQgaXMgbm90IHByZXNlbnQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgb3IgbWlzY29uZmlndXJlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhIb3N0KFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiBzZWxmOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHBvcnQuCiAgICAgKgogICAgICogQSBudWxsIHZhbHVlIHByb3ZpZGVkIGZvciB0aGUgcG9ydCBpcyBlcXVpdmFsZW50IHRvIHJlbW92aW5nIHRoZSBwb3J0CiAgICAgKiBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGZvciBpbnZhbGlkIGNvbXBvbmVudCBvciB0cmFuc2Zvcm1hdGlvbnMKICAgICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCB3b3VsZCByZXN1bHQgaW4gYW4gb2JqZWN0IGluIGludmFsaWQgc3RhdGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUG9ydCg/aW50ICRwb3J0KTogc2VsZjsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBwYXRoLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBwYXRoIGNoYXJhY3RlcnMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgZW5zdXJlIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFzIG91dGxpbmVkIGluIGdldFBhdGgoKS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGZvciBpbnZhbGlkIGNvbXBvbmVudCBvciB0cmFuc2Zvcm1hdGlvbnMKICAgICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCB3b3VsZCByZXN1bHQgaW4gYW4gb2JqZWN0IGluIGludmFsaWQgc3RhdGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUGF0aChTdHJpbmdhYmxlfHN0cmluZyAkcGF0aCk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHF1ZXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcuCiAgICAgKgogICAgICogVXNlcnMgY2FuIHByb3ZpZGUgYm90aCBlbmNvZGVkIGFuZCBkZWNvZGVkIHF1ZXJ5IGNoYXJhY3RlcnMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgZW5zdXJlIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFzIG91dGxpbmVkIGluIGdldFF1ZXJ5KCkuCiAgICAgKgogICAgICogQSBudWxsIHZhbHVlIHByb3ZpZGVkIGZvciB0aGUgcXVlcnkgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgcXVlcnkKICAgICAqIGluZm9ybWF0aW9uLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgZm9yIGludmFsaWQgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbiBvYmplY3QgaW4gaW52YWxpZCBzdGF0ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeShTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRxdWVyeSk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIFVSSSBmcmFnbWVudC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBVUkkgZnJhZ21lbnQuCiAgICAgKgogICAgICogVXNlcnMgY2FuIHByb3ZpZGUgYm90aCBlbmNvZGVkIGFuZCBkZWNvZGVkIGZyYWdtZW50IGNoYXJhY3RlcnMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgZW5zdXJlIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFzIG91dGxpbmVkIGluIGdldEZyYWdtZW50KCkuCiAgICAgKgogICAgICogQSBudWxsIHZhbHVlIHByb3ZpZGVkIGZvciB0aGUgZnJhZ21lbnQgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgZnJhZ21lbnQKICAgICAqIGluZm9ybWF0aW9uLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgZm9yIGludmFsaWQgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbiBvYmplY3QgaW4gaW52YWxpZCBzdGF0ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhGcmFnbWVudChTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRmcmFnbWVudCk6IHNlbGY7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Contracts/UserInfoInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcQ29udHJhY3RzOwoKdXNlIFN0cmluZ2FibGU7CgppbnRlcmZhY2UgVXNlckluZm9JbnRlcmZhY2UgZXh0ZW5kcyBVcmlDb21wb25lbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB1c2VyIGNvbXBvbmVudCBwYXJ0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlcigpOiA/c3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcGFzcyBjb21wb25lbnQgcGFydC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhc3MoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFVzZXIgSW5mbyBjb21wb25lbnRzLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBhIGhhc2htYXAgc2ltaWxhciB0byBQSFAncyBwYXJzZV91cmwgcmV0dXJuIHZhbHVlCiAgICAgKgogICAgICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e3VzZXI6ID9zdHJpbmcsIHBhc3MgOiA/c3RyaW5nfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcG9uZW50cygpOiBhcnJheTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVzZXIgYW5kL29yIHBhc3MuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgbmV3IHVzZXJuYW1lCiAgICAgKiBvdGhlcndpc2UgaXQgcmV0dXJucyB0aGUgc2FtZSBpbnN0YW5jZSB1bmNoYW5nZWQuCiAgICAgKgogICAgICogQSB2YXJpYWJsZSBlcXVhbCB0byBudWxsIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIGNvbXBsZXRlIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoVXNlcihTdHJpbmdhYmxlfHN0cmluZ3xudWxsICR1c2VybmFtZSk6IHNlbGY7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCB1c2VyIGFuZC9vciBwYXNzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHBhc3N3b3JkIGlmIHRoZSB1c2VyIGlzIHNwZWNpZmllZAogICAgICogb3RoZXJ3aXNlIGl0IHJldHVybnMgdGhlIHNhbWUgaW5zdGFuY2UgdW5jaGFuZ2VkLgogICAgICoKICAgICAqIEFuIGVtcHR5IHVzZXIgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXNzKFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHBhc3N3b3JkKTogc2VsZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Encoder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIENsb3N1cmU7CnVzZSBEZXByZWNhdGVkOwp1c2UgTGVhZ3VlXFVyaVxFeGNlcHRpb25zXFN5bnRheEVycm9yOwp1c2UgTGVhZ3VlXFVyaVxJUHY2XENvbnZlcnRlciBhcyBJUHY2Q29udmVydGVyOwp1c2UgU2Vuc2l0aXZlUGFyYW1ldGVyOwp1c2UgU3RyaW5nYWJsZTsKdXNlIFRocm93YWJsZTsKCnVzZSBmdW5jdGlvbiBleHBsb2RlOwp1c2UgZnVuY3Rpb24gZmlsdGVyX3ZhcjsKdXNlIGZ1bmN0aW9uIGdldHR5cGU7CnVzZSBmdW5jdGlvbiBpbl9hcnJheTsKdXNlIGZ1bmN0aW9uIHByZWdfbWF0Y2g7CnVzZSBmdW5jdGlvbiBwcmVnX3JlcGxhY2VfY2FsbGJhY2s7CnVzZSBmdW5jdGlvbiByYXd1cmxkZWNvZGU7CnVzZSBmdW5jdGlvbiByYXd1cmxlbmNvZGU7CnVzZSBmdW5jdGlvbiBzcHJpbnRmOwp1c2UgZnVuY3Rpb24gc3RyX3N0YXJ0c193aXRoOwp1c2UgZnVuY3Rpb24gc3RydG9sb3dlcjsKdXNlIGZ1bmN0aW9uIHN0cnRvdXBwZXI7Cgp1c2UgY29uc3QgRklMVEVSX0ZMQUdfSVBWNDsKdXNlIGNvbnN0IEZJTFRFUl9WQUxJREFURV9JUDsKCmZpbmFsIGNsYXNzIEVuY29kZXIKewogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfQ0hBUlNfSU5WQUxJRCA9ICcvW1x4MDAtXHgxZlx4N2ZdLyc7CiAgICBwcml2YXRlIGNvbnN0IFJFR0VYUF9DSEFSU19FTkNPREVEID0gJywlW0EtRmEtZjAtOV17Mn0sJzsKICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX0NIQVJTX1BSRVZFTlRTX0RFQ09ESU5HID0gJywlCiAgICAgCTJbQS1GfDEtMnw0LTldfAogICAgICAgIDNbMC05fEJ8RF18CiAgICAgICAgNFsxLTl8QS1GXXwKICAgICAgICA1WzAtOXxBfEZdfAogICAgICAgIDZbMS05fEEtRl18CiAgICAgICAgN1swLTl8RV0KICAgICxpeCc7CiAgICBwcml2YXRlIGNvbnN0IFJFR0VYUF9QQVJUX1NVQkRFTElNID0gIlwhXCQmJ1woXClcKlwrLDtcPSUiOwogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfUEFSVF9VTlJFU0VSVkVEID0gJ0EtWmEtelxkX1wtLn4nOwogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfUEFSVF9FTkNPREVEID0gJyUoPyFbQS1GYS1mXGRdezJ9KSc7CgogICAgLyoqCiAgICAgKiBVbnJlc2VydmVkIGNoYXJhY3RlcnMuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzk4Ni5odG1sI3NlY3Rpb24tMi4zCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX1VOUkVTRVJWRURfQ0hBUkFDVEVSUyA9ICcsJSgyW0RkRWVdfDNbMC05XXw0WzEtOUEtRmEtZl18NVtBYUZmXXw2WzEtOUEtRmEtZl18N1swLTlBLUVhLWVdKSwnOwoKICAgIC8qKgogICAgICogVGVsbCB3aGV0aGVyIHRoZSB1c2VyIGNvbXBvbmVudCBpcyBjb3JyZWN0bHkgZW5jb2RlZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1VzZXJFbmNvZGVkKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkZW5jb2RlZCk6IGJvb2wKICAgIHsKICAgICAgICBzdGF0aWMgJHBhdHRlcm4gPSAnL1teJy5zZWxmOjpSRUdFWFBfUEFSVF9VTlJFU0VSVkVELnNlbGY6OlJFR0VYUF9QQVJUX1NVQkRFTElNLiddK3wnLnNlbGY6OlJFR0VYUF9QQVJUX0VOQ09ERUQuJy8nOwoKICAgICAgICBpZiAoJGVuY29kZWQgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICRlbmNvZGVkID0gJGVuY29kZWQtPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGwgPT09ICRlbmNvZGVkIHx8IDEgIT09IHByZWdfbWF0Y2goJHBhdHRlcm4sIChzdHJpbmcpICRlbmNvZGVkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEVuY29kZSBVc2VyLgogICAgICoKICAgICAqIEFsbCBnZW5lcmljIGRlbGltaXRlcnMgTVVTVCBiZSBlbmNvZGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5jb2RlVXNlcihCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHVzZXIpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgc3RhdGljICRwYXR0ZXJuID0gJy9bXicuc2VsZjo6UkVHRVhQX1BBUlRfVU5SRVNFUlZFRC5zZWxmOjpSRUdFWFBfUEFSVF9TVUJERUxJTS4nXSt8Jy5zZWxmOjpSRUdFWFBfUEFSVF9FTkNPREVELicvJzsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmVuY29kZSgkdXNlciwgJHBhdHRlcm4pOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIHVzZXIgY29tcG9uZW50LgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4Ni4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVVc2VyKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkdXNlcik6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6bm9ybWFsaXplKHNlbGY6OmVuY29kZVVzZXIoc2VsZjo6ZGVjb2RlVW5yZXNlcnZlZENoYXJhY3RlcnMoJHVzZXIpKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplKD9zdHJpbmcgJGNvbXBvbmVudCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGNvbXBvbmVudCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoc3RyaW5nKSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcvJVswLTlhLWZdezJ9L2knLAogICAgICAgICAgICBzdGF0aWMgZm4gKGFycmF5ICRmb3VuZCkgPT4gc3RydG91cHBlcigkZm91bmRbMF0pLAogICAgICAgICAgICAkY29tcG9uZW50CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGwgd2hldGhlciB0aGUgcGFzc3dvcmQgY29tcG9uZW50IGlzIGNvcnJlY3RseSBlbmNvZGVkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUGFzc3dvcmRFbmNvZGVkKCNbU2Vuc2l0aXZlUGFyYW1ldGVyXSBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGVuY29kZWQpOiBib29sCiAgICB7CiAgICAgICAgc3RhdGljICRwYXR0ZXJuID0gJy9bXicuc2VsZjo6UkVHRVhQX1BBUlRfVU5SRVNFUlZFRC5zZWxmOjpSRUdFWFBfUEFSVF9TVUJERUxJTS4nOl0rfCcuc2VsZjo6UkVHRVhQX1BBUlRfRU5DT0RFRC4nLyc7CgogICAgICAgIGlmICgkZW5jb2RlZCBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJGVuY29kZWQgPSAkZW5jb2RlZC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbCA9PT0gJGVuY29kZWQgfHwgMSAhPT0gcHJlZ19tYXRjaCgkcGF0dGVybiwgKHN0cmluZykgJGVuY29kZWQpOwogICAgfQoKICAgIC8qKgogICAgICogRW5jb2RlIFBhc3N3b3JkLgogICAgICoKICAgICAqIEdlbmVyaWMgZGVsaW1pdGVycyAiOiIgTVVTVCBOT1QgYmUgZW5jb2RlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZVBhc3N3b3JkKCNbU2Vuc2l0aXZlUGFyYW1ldGVyXSBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGNvbXBvbmVudCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBzdGF0aWMgJHBhdHRlcm4gPSAnL1teJy5zZWxmOjpSRUdFWFBfUEFSVF9VTlJFU0VSVkVELnNlbGY6OlJFR0VYUF9QQVJUX1NVQkRFTElNLic6XSt8Jy5zZWxmOjpSRUdFWFBfUEFSVF9FTkNPREVELicvJzsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmVuY29kZSgkY29tcG9uZW50LCAkcGF0dGVybik7CiAgICB9CgogICAgLyoqCiAgICAgKiBOb3JtYWxpemUgcGFzc3dvcmQgY29tcG9uZW50LgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4Ni4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVQYXNzd29yZCgjW1NlbnNpdGl2ZVBhcmFtZXRlcl0gQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRwYXNzd29yZCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6bm9ybWFsaXplKHNlbGY6OmVuY29kZVBhc3N3b3JkKHNlbGY6OmRlY29kZVVucmVzZXJ2ZWRDaGFyYWN0ZXJzKCRwYXNzd29yZCkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGwgd2hldGhlciB0aGUgdXNlckluZm8gY29tcG9uZW50IGlzIGNvcnJlY3RseSBlbmNvZGVkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVXNlckluZm9FbmNvZGVkKCNbU2Vuc2l0aXZlUGFyYW1ldGVyXSBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHVzZXJJbmZvKTogYm9vbAogICAgewogICAgICAgIGlmIChudWxsID09PSAkdXNlckluZm8pIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVzZXJJbmZvIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkdXNlckluZm8gPSAkdXNlckluZm8tPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgWyR1c2VyLCAkcGFzc3dvcmRdID0gZXhwbG9kZSgnOicsIChzdHJpbmcpICR1c2VySW5mbywgMikgKyBbMSA9PiBudWxsXTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmlzVXNlckVuY29kZWQoJHVzZXIpCiAgICAgICAgICAgICYmIHNlbGY6OmlzUGFzc3dvcmRFbmNvZGVkKCRwYXNzd29yZCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbmNvZGVVc2VySW5mbygjW1NlbnNpdGl2ZVBhcmFtZXRlcl0gQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICR1c2VySW5mbyk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHVzZXJJbmZvKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR1c2VySW5mbyBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJHVzZXJJbmZvID0gJHVzZXJJbmZvLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIFskdXNlciwgJHBhc3N3b3JkXSA9IGV4cGxvZGUoJzonLCAoc3RyaW5nKSAkdXNlckluZm8sIDIpICsgWzEgPT4gbnVsbF07CiAgICAgICAgJHVzZXJJbmZvID0gc2VsZjo6ZW5jb2RlVXNlcigkdXNlcik7CiAgICAgICAgaWYgKG51bGwgPT09ICRwYXNzd29yZCkgewogICAgICAgICAgICByZXR1cm4gJHVzZXJJbmZvOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1c2VySW5mby4nOicuc2VsZjo6ZW5jb2RlUGFzc3dvcmQoJHBhc3N3b3JkKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVVzZXJJbmZvKCNbU2Vuc2l0aXZlUGFyYW1ldGVyXSBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHVzZXJJbmZvKTogP3N0cmluZwogICAgewogICAgICAgIGlmIChudWxsID09PSAkdXNlckluZm8pIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVzZXJJbmZvIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkdXNlckluZm8gPSAkdXNlckluZm8tPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgWyR1c2VyLCAkcGFzc3dvcmRdID0gZXhwbG9kZSgnOicsIChzdHJpbmcpICR1c2VySW5mbywgMikgKyBbMSA9PiBudWxsXTsKICAgICAgICAkdXNlckluZm8gPSBzZWxmOjpub3JtYWxpemVVc2VyKCR1c2VyKTsKICAgICAgICBpZiAobnVsbCA9PT0gJHBhc3N3b3JkKSB7CiAgICAgICAgICAgIHJldHVybiAkdXNlckluZm87CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVzZXJJbmZvLic6Jy5zZWxmOjpub3JtYWxpemVQYXNzd29yZCgkcGFzc3dvcmQpOwogICAgfQoKICAgIC8qKgogICAgICogRGVjb2RlcyBhbGwgdGhlIFVSSSBjb21wb25lbnQgY2hhcmFjdGVycy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGVBbGwoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRjb21wb25lbnQpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmRlY29kZSgkY29tcG9uZW50LCBzdGF0aWMgZm4gKGFycmF5ICRtYXRjaGVzKTogc3RyaW5nID0+IHJhd3VybGRlY29kZSgkbWF0Y2hlc1swXSkpOwogICAgfQoKICAgIC8qKgogICAgICogRGVjb2RlcyB0aGUgVVJJIGNvbXBvbmVudCB3aXRob3V0IGRlY29kaW5nIHRoZSB1bnJlc2VydmVkIGNoYXJhY3RlcnMgd2hpY2ggYXJlIGFscmVhZHkgZW5jb2RlZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGVOZWNlc3NhcnkoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xpbnR8bnVsbCAkY29tcG9uZW50KTogP3N0cmluZwogICAgewogICAgICAgICRkZWNvZGVyID0gc3RhdGljIGZ1bmN0aW9uIChhcnJheSAkbWF0Y2hlcyk6IHN0cmluZyB7CiAgICAgICAgICAgIGlmICgxID09PSBwcmVnX21hdGNoKHNlbGY6OlJFR0VYUF9DSEFSU19QUkVWRU5UU19ERUNPRElORywgJG1hdGNoZXNbMF0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3RydG91cHBlcigkbWF0Y2hlc1swXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiByYXd1cmxkZWNvZGUoJG1hdGNoZXNbMF0pOwogICAgICAgIH07CgogICAgICAgIHJldHVybiBzZWxmOjpkZWNvZGUoJGNvbXBvbmVudCwgJGRlY29kZXIpOwogICAgfQoKICAgIC8qKgogICAgICogRGVjb2RlcyB0aGUgY29tcG9uZW50IHVucmVzZXJ2ZWQgY2hhcmFjdGVycy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGVVbnJlc2VydmVkQ2hhcmFjdGVycyhCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHN0cik6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHN0ciBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJHN0ciA9ICRzdHItPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRzdHIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKAogICAgICAgICAgICBzZWxmOjpSRUdFWFBfVU5SRVNFUlZFRF9DSEFSQUNURVJTLAogICAgICAgICAgICBzdGF0aWMgZm4gKGFycmF5ICRtYXRjaGVzKTogc3RyaW5nID0+IHJhd3VybGRlY29kZSgkbWF0Y2hlc1swXSksCiAgICAgICAgICAgIChzdHJpbmcpICRzdHIKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogVGVsbCB3aGV0aGVyIHRoZSBwYXRoIGNvbXBvbmVudCBpcyBjb3JyZWN0bHkgZW5jb2RlZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1BhdGhFbmNvZGVkKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkZW5jb2RlZCk6IGJvb2wKICAgIHsKICAgICAgICBzdGF0aWMgJHBhdHRlcm4gPSAnL1teJy5zZWxmOjpSRUdFWFBfUEFSVF9VTlJFU0VSVkVELnNlbGY6OlJFR0VYUF9QQVJUX1NVQkRFTElNLic6QFwvXSt8Jy5zZWxmOjpSRUdFWFBfUEFSVF9FTkNPREVELicvJzsKCiAgICAgICAgaWYgKCRlbmNvZGVkIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkZW5jb2RlZCA9ICRlbmNvZGVkLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsID09PSAkZW5jb2RlZCB8fCAxICE9PSBwcmVnX21hdGNoKCRwYXR0ZXJuLCAoc3RyaW5nKSAkZW5jb2RlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgUGF0aC4KICAgICAqCiAgICAgKiBHZW5lcmljIGRlbGltaXRlcnMgIjoiLCAiQCIsIGFuZCAiLyIgTVVTVCBOT1QgYmUgZW5jb2RlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZVBhdGgoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRjb21wb25lbnQpOiBzdHJpbmcKICAgIHsKICAgICAgICBzdGF0aWMgJHBhdHRlcm4gPSAnL1teJy5zZWxmOjpSRUdFWFBfUEFSVF9VTlJFU0VSVkVELnNlbGY6OlJFR0VYUF9QQVJUX1NVQkRFTElNLic6QFwvXSt8Jy5zZWxmOjpSRUdFWFBfUEFSVF9FTkNPREVELicvJzsKCiAgICAgICAgcmV0dXJuIChzdHJpbmcpIHNlbGY6OmVuY29kZSgkY29tcG9uZW50LCAkcGF0dGVybik7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWNvZGVzIHRoZSBwYXRoIGNvbXBvbmVudCB3aGlsZSBwcmVzZXJ2aW5nIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgbm90IGJlIGRlY29kZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBmdWxsIHZhbGlkIFVSSS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGVQYXRoKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkcGF0aCk6ID9zdHJpbmcKICAgIHsKICAgICAgICAkZGVjb2RlciA9IHN0YXRpYyBmdW5jdGlvbiAoYXJyYXkgJG1hdGNoZXMpOiBzdHJpbmcgewogICAgICAgICAgICAkZW5jb2RlZENoYXIgPSBzdHJ0b3VwcGVyKCRtYXRjaGVzWzBdKTsKCiAgICAgICAgICAgIHJldHVybiBpbl9hcnJheSgkZW5jb2RlZENoYXIsIFsnJTJGJywgJyUyMCcsICclM0YnLCAnJTIzJ10sIHRydWUpID8gJGVuY29kZWRDaGFyIDogcmF3dXJsZGVjb2RlKCRlbmNvZGVkQ2hhcik7CiAgICAgICAgfTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmRlY29kZSgkcGF0aCwgJGRlY29kZXIpOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIHBhdGggY29tcG9uZW50LgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4Ni4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVQYXRoKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkY29tcG9uZW50KTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiBzZWxmOjpub3JtYWxpemUoc2VsZjo6ZW5jb2RlUGF0aChzZWxmOjpkZWNvZGVQYXRoKCRjb21wb25lbnQpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxsIHdoZXRoZXIgdGhlIHF1ZXJ5IGNvbXBvbmVudCBpcyBjb3JyZWN0bHkgZW5jb2RlZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1F1ZXJ5RW5jb2RlZChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGVuY29kZWQpOiBib29sCiAgICB7CiAgICAgICAgc3RhdGljICRwYXR0ZXJuID0gJy9bXicuc2VsZjo6UkVHRVhQX1BBUlRfVU5SRVNFUlZFRC5zZWxmOjpSRUdFWFBfUEFSVF9TVUJERUxJTS4nXC8/JV0rfCcuc2VsZjo6UkVHRVhQX1BBUlRfRU5DT0RFRC4nLyc7CiAgICAgICAgaWYgKCRlbmNvZGVkIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkZW5jb2RlZCA9ICRlbmNvZGVkLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsID09PSAkZW5jb2RlZCB8fCAxICE9PSBwcmVnX21hdGNoKCRwYXR0ZXJuLCAoc3RyaW5nKSAkZW5jb2RlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWNvZGVzIHRoZSBxdWVyeSBjb21wb25lbnQgd2hpbGUgcHJlc2VydmluZyBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIG5vdCBiZSBkZWNvZGVkIGluIHRoZSBjb250ZXh0IG9mIGEgZnVsbCB2YWxpZCBVUkkuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlUXVlcnkoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRwYXRoKTogP3N0cmluZwogICAgewogICAgICAgICRkZWNvZGVyID0gc3RhdGljIGZ1bmN0aW9uIChhcnJheSAkbWF0Y2hlcyk6IHN0cmluZyB7CiAgICAgICAgICAgICRlbmNvZGVkQ2hhciA9IHN0cnRvdXBwZXIoJG1hdGNoZXNbMF0pOwoKICAgICAgICAgICAgcmV0dXJuIGluX2FycmF5KCRlbmNvZGVkQ2hhciwgWyclMjYnLCAnJTNEJywgJyUyMCcsICclMjMnLCAnJTNGJ10sIHRydWUpID8gJGVuY29kZWRDaGFyIDogcmF3dXJsZGVjb2RlKCRlbmNvZGVkQ2hhcik7CiAgICAgICAgfTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmRlY29kZSgkcGF0aCwgJGRlY29kZXIpOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIHRoZSBxdWVyeSBjb21wb25lbnQuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLCBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZQogICAgICogYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMgdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8KICAgICAqIFJGQyAzOTg2LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVF1ZXJ5KEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkcXVlcnkpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om5vcm1hbGl6ZShzZWxmOjplbmNvZGVRdWVyeU9yRnJhZ21lbnQoc2VsZjo6ZGVjb2RlUXVlcnkoJHF1ZXJ5KSkpOwogICAgfQoKICAgIC8qKgogICAgICogVGVsbCB3aGV0aGVyIHRoZSBxdWVyeSBjb21wb25lbnQgaXMgY29ycmVjdGx5IGVuY29kZWQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNGcmFnbWVudEVuY29kZWQoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRlbmNvZGVkKTogYm9vbAogICAgewogICAgICAgIHN0YXRpYyAkcGF0dGVybiA9ICcvW14nLnNlbGY6OlJFR0VYUF9QQVJUX1VOUkVTRVJWRUQuc2VsZjo6UkVHRVhQX1BBUlRfU1VCREVMSU0uJzpAXC8/JV18Jy5zZWxmOjpSRUdFWFBfUEFSVF9FTkNPREVELicvJzsKCiAgICAgICAgaWYgKCRlbmNvZGVkIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkZW5jb2RlZCA9ICRlbmNvZGVkLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsID09PSAkZW5jb2RlZCB8fCAxICE9PSBwcmVnX21hdGNoKCRwYXR0ZXJuLCAoc3RyaW5nKSAkZW5jb2RlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWNvZGVzIHRoZSBmcmFnbWVudCBjb21wb25lbnQgd2hpbGUgcHJlc2VydmluZyBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIG5vdCBiZSBkZWNvZGVkIGluIHRoZSBjb250ZXh0IG9mIGEgZnVsbCB2YWxpZCBVUkkuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlRnJhZ21lbnQoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRwYXRoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiBzZWxmOjpkZWNvZGUoJHBhdGgsIHN0YXRpYyBmbiAoYXJyYXkgJG1hdGNoZXMpOiBzdHJpbmcgPT4gJyUyMCcgPT09ICRtYXRjaGVzWzBdID8gJG1hdGNoZXNbMF0gOiByYXd1cmxkZWNvZGUoJG1hdGNoZXNbMF0pKTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZSB0aGUgZnJhZ21lbnQgY29tcG9uZW50LgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4Ni4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVGcmFnbWVudChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGZyYWdtZW50KTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiBzZWxmOjpub3JtYWxpemUoc2VsZjo6ZW5jb2RlUXVlcnlPckZyYWdtZW50KHNlbGY6OmRlY29kZUZyYWdtZW50KCRmcmFnbWVudCkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZSB0aGUgaG9zdCBjb21wb25lbnQuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzk4Ni5odG1sI3NlY3Rpb24tMy4yLjIKICAgICAqCiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBwZXJjZW50LWVuY29kZWQsIGJ1dCBNVVNUIE5PVCBkb3VibGUtZW5jb2RlCiAgICAgKiBhbnkgY2hhcmFjdGVycy4gVG8gZGV0ZXJtaW5lIHdoYXQgY2hhcmFjdGVycyB0byBlbmNvZGUsIHBsZWFzZSByZWZlciB0bwogICAgICogUkZDIDM5ODYuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplSG9zdChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRob3N0IGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkaG9zdCA9IChzdHJpbmcpICRob3N0LT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkaG9zdCBpbnN0YW5jZW9mIFN0cmluZ2FibGUpIHsKICAgICAgICAgICAgJGhvc3QgPSAoc3RyaW5nKSAkaG9zdDsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkaG9zdCB8fCAnJyA9PT0gJGhvc3QgfHwgZmFsc2UgIT09IGZpbHRlcl92YXIoJGhvc3QsIEZJTFRFUl9WQUxJREFURV9JUCwgRklMVEVSX0ZMQUdfSVBWNCkpIHsKICAgICAgICAgICAgcmV0dXJuICRob3N0OwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkaG9zdCwgJ1snKSkgewogICAgICAgICAgICByZXR1cm4gSVB2NkNvbnZlcnRlcjo6bm9ybWFsaXplKCRob3N0KTsKICAgICAgICB9CgogICAgICAgICRob3N0ID0gc3RydG9sb3dlcigkaG9zdCk7CgogICAgICAgIHJldHVybiAoIXN0cl9jb250YWlucygkaG9zdCwgJyUnKSkgPyAkaG9zdCA6IHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICAgJy8lW2EtZjAtOV17Mn0vJywKICAgICAgICAgICAgZm4gKGFycmF5ICRtYXRjaGVzKSA9PiAxID09PSBwcmVnX21hdGNoKCcvJShbMC03XVswLTlhLWZdKS8nLCAkbWF0Y2hlc1swXSkgPyByYXd1cmxkZWNvZGUoJG1hdGNoZXNbMF0pIDogc3RydG91cHBlcigkbWF0Y2hlc1swXSksCiAgICAgICAgICAgICRob3N0CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEVuY29kZSBRdWVyeSBvciBGcmFnbWVudC4KICAgICAqCiAgICAgKiBHZW5lcmljIGRlbGltaXRlcnMgIjoiLCAiQCIsICI/IiwgYW5kICIvIiBNVVNUIE5PVCBiZSBlbmNvZGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5jb2RlUXVlcnlPckZyYWdtZW50KEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkY29tcG9uZW50KTogP3N0cmluZwogICAgewogICAgICAgIHN0YXRpYyAkcGF0dGVybiA9ICcvW14nLnNlbGY6OlJFR0VYUF9QQVJUX1VOUkVTRVJWRUQuc2VsZjo6UkVHRVhQX1BBUlRfU1VCREVMSU0uJzpAXC8/XSt8Jy5zZWxmOjpSRUdFWFBfUEFSVF9FTkNPREVELicvJzsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmVuY29kZSgkY29tcG9uZW50LCAkcGF0dGVybik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbmNvZGVRdWVyeUtleVZhbHVlKG1peGVkICRjb21wb25lbnQpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgc3RhdGljICRwYXR0ZXJuID0gJy9bXicuc2VsZjo6UkVHRVhQX1BBUlRfVU5SRVNFUlZFRC4nXSt8Jy5zZWxmOjpSRUdFWFBfUEFSVF9FTkNPREVELicvJzsKICAgICAgICAkZW5jb2RlciA9IHN0YXRpYyBmbiAoYXJyYXkgJGZvdW5kKTogc3RyaW5nID0+IDEgPT09IHByZWdfbWF0Y2goJy9bXicuc2VsZjo6UkVHRVhQX1BBUlRfVU5SRVNFUlZFRC4nXS8nLCByYXd1cmxkZWNvZGUoJGZvdW5kWzBdKSkgPyByYXd1cmxlbmNvZGUoJGZvdW5kWzBdKSA6ICRmb3VuZFswXTsKICAgICAgICAkZmlsdGVyZWRDb21wb25lbnQgPSBzZWxmOjpmaWx0ZXJDb21wb25lbnQoJGNvbXBvbmVudCk7CgogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICBudWxsID09PSAkZmlsdGVyZWRDb21wb25lbnQgPT4gdGhyb3cgbmV3IFN5bnRheEVycm9yKHNwcmludGYoJ0EgcGFpciBrZXkvdmFsdWUgbXVzdCBiZSBhIHNjYWxhciB2YWx1ZSBgJXNgIGdpdmVuLicsIGdldHR5cGUoJGNvbXBvbmVudCkpKSwKICAgICAgICAgICAgMSA9PT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfQ0hBUlNfSU5WQUxJRCwgJGZpbHRlcmVkQ29tcG9uZW50KSA9PiByYXd1cmxlbmNvZGUoJGZpbHRlcmVkQ29tcG9uZW50KSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAoc3RyaW5nKSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJHBhdHRlcm4sICRlbmNvZGVyLCAkZmlsdGVyZWRDb21wb25lbnQpLAogICAgICAgIH07CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZmlsdGVyQ29tcG9uZW50KG1peGVkICRjb21wb25lbnQpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0NvZXJjaW9uTW9kZTo6TmF0aXZlLT5jb2VyY2UoJGNvbXBvbmVudCk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICRleGNlcHRpb24pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKAogICAgICAgICAgICAgICAgc3ByaW50ZignVGhlIGNvbXBvbmVudCBtdXN0IGJlIGEgc2NhbGFyIHZhbHVlIGAlc2AgZ2l2ZW4uJywgZ2V0dHlwZSgkY29tcG9uZW50KSksCiAgICAgICAgICAgICAgICBwcmV2aW91czogJGV4Y2VwdGlvbgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEVuY29kZXMgdGhlIFVSSSBjb21wb25lbnQgY2hhcmFjdGVycyB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaW5kIHdoaWNoIGNoYXJhY3RlcnMgbmVlZCBlbmNvZGluZy4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZW5jb2RlKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8aW50fGJvb2x8bnVsbCAkY29tcG9uZW50LCBzdHJpbmcgJHBhdHRlcm4pOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJGNvbXBvbmVudCA9IHNlbGY6OmZpbHRlckNvbXBvbmVudCgkY29tcG9uZW50KTsKICAgICAgICBpZiAobnVsbCA9PT0gJGNvbXBvbmVudCB8fCAnJyA9PT0gJGNvbXBvbmVudCkgewogICAgICAgICAgICByZXR1cm4gJGNvbXBvbmVudDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoc3RyaW5nKSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICRwYXR0ZXJuLAogICAgICAgICAgICBzdGF0aWMgZm4gKGFycmF5ICRmb3VuZCk6IHN0cmluZyA9PiAxID09PSBwcmVnX21hdGNoKCcvW14nLnNlbGY6OlJFR0VYUF9QQVJUX1VOUkVTRVJWRUQuJ10vJywgcmF3dXJsZGVjb2RlKCRmb3VuZFswXSkpID8gcmF3dXJsZW5jb2RlKCRmb3VuZFswXSkgOiAkZm91bmRbMF0sCiAgICAgICAgICAgICRjb21wb25lbnQKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogRGVjb2RlcyB0aGUgVVJJIGNvbXBvbmVudCBjaGFyYWN0ZXJzIHVzaW5nIGEgY2xvc3VyZS4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8aW50fG51bGwgJGNvbXBvbmVudCwgQ2xvc3VyZSAkZGVjb2Rlcik6ID9zdHJpbmcKICAgIHsKICAgICAgICAkY29tcG9uZW50ID0gc2VsZjo6ZmlsdGVyQ29tcG9uZW50KCRjb21wb25lbnQpOwogICAgICAgIGlmIChudWxsID09PSAkY29tcG9uZW50IHx8ICcnID09PSAkY29tcG9uZW50KSB7CiAgICAgICAgICAgIHJldHVybiAkY29tcG9uZW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKDEgPT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX0NIQVJTX0lOVkFMSUQsICRjb21wb25lbnQpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignSW52YWxpZCBjb21wb25lbnQgc3RyaW5nOiAnLiRjb21wb25lbnQuJy4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgxID09PSBwcmVnX21hdGNoKHNlbGY6OlJFR0VYUF9DSEFSU19FTkNPREVELCAkY29tcG9uZW50KSkgewogICAgICAgICAgICByZXR1cm4gKHN0cmluZykgcHJlZ19yZXBsYWNlX2NhbGxiYWNrKHNlbGY6OlJFR0VYUF9DSEFSU19FTkNPREVELCAkZGVjb2RlciwgJGNvbXBvbmVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbXBvbmVudDsKICAgIH0KCiAgICAvKioKICAgICAqIERlY29kZXMgdGhlIFVSSSBjb21wb25lbnQgd2l0aG91dCBkZWNvZGluZyB0aGUgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzIHdoaWNoIGFyZSBhbHJlYWR5IGVuY29kZWQuCiAgICAgKgogICAgICogREVQUkVDQVRJT04gV0FSTklORyEgVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHBvaW50IHJlbGVhc2UuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgU2luY2UgdmVyc2lvbiA3LjYuMAogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICogQHNlZSBFbmNvZGVyOjpkZWNvZGVOZWNlc3NhcnkoKQogICAgICoKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXEVuY29kZXI6OmRlY29kZU5lY2Vzc2FyeSgpIGluc3RlYWQnLCBzaW5jZTonbGVhZ3VlL3VyaTo3LjYuMCcpXQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGVQYXJ0aWFsKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8aW50fG51bGwgJGNvbXBvbmVudCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6ZGVjb2RlTmVjZXNzYXJ5KCRjb21wb25lbnQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Exceptions/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Exceptions/ConversionFailed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uczsKCnVzZSBCYWNrZWRFbnVtOwp1c2UgTGVhZ3VlXFVyaVxJZG5hXEVycm9yOwp1c2UgTGVhZ3VlXFVyaVxJZG5hXFJlc3VsdDsKdXNlIFN0cmluZ2FibGU7CgpmaW5hbCBjbGFzcyBDb252ZXJzaW9uRmFpbGVkIGV4dGVuZHMgU3ludGF4RXJyb3IKewogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBzdHJpbmcgJG1lc3NhZ2UsCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJGhvc3QsCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBSZXN1bHQgJHJlc3VsdAogICAgKSB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkdWVUb0lkbkVycm9yKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJGhvc3QsIFJlc3VsdCAkcmVzdWx0KTogc2VsZgogICAgewogICAgICAgICRyZWFzb25zID0gYXJyYXlfbWFwKGZuIChFcnJvciAkZXJyb3IpOiBzdHJpbmcgPT4gJGVycm9yLT5kZXNjcmlwdGlvbigpLCAkcmVzdWx0LT5lcnJvcnMoKSk7CgogICAgICAgIGlmICgkaG9zdCBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJGhvc3QgPSAoc3RyaW5nKSAkaG9zdC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ0hvc3QgYCcuJGhvc3QuJ2AgaXMgaW52YWxpZDogJy5pbXBsb2RlKCc7ICcsICRyZWFzb25zKS4nLicsIChzdHJpbmcpICRob3N0LCAkcmVzdWx0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SG9zdCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmhvc3Q7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3VsdCgpOiBSZXN1bHQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3VsdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Exceptions/MissingFeature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uczsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlFeGNlcHRpb247CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKY2xhc3MgTWlzc2luZ0ZlYXR1cmUgZXh0ZW5kcyBSdW50aW1lRXhjZXB0aW9uIGltcGxlbWVudHMgVXJpRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uczsKCmNsYXNzIE9mZnNldE91dE9mQm91bmRzIGV4dGVuZHMgU3ludGF4RXJyb3IKewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Exceptions/SyntaxError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uczsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlFeGNlcHRpb247CgpjbGFzcyBTeW50YXhFcnJvciBleHRlbmRzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpbXBsZW1lbnRzIFVyaUV4Y2VwdGlvbgp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/FeatureDetection.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgZmluZm87CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcTWlzc2luZ0ZlYXR1cmU7CnVzZSBMZWFndWVcVXJpXElQdjRcQ2FsY3VsYXRvcjsKCnVzZSBmdW5jdGlvbiBjbGFzc19leGlzdHM7CnVzZSBmdW5jdGlvbiBkZWZpbmVkOwp1c2UgZnVuY3Rpb24gZXh0ZW5zaW9uX2xvYWRlZDsKdXNlIGZ1bmN0aW9uIGZ1bmN0aW9uX2V4aXN0czsKCnVzZSBjb25zdCBQSFBfSU5UX1NJWkU7CgovKioKICogQWxsb3cgZGV0ZWN0aW5nIGZlYXR1cmVzIG5lZWRlZCB0byBtYWtlIHRoZSBwYWNrYWdlcyB3b3JrLgogKi8KZmluYWwgY2xhc3MgRmVhdHVyZURldGVjdGlvbgp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN1cHBvcnRzRmlsZURldGVjdGlvbigpOiB2b2lkCiAgICB7CiAgICAgICAgc3RhdGljICRpc1N1cHBvcnRlZCA9IG51bGw7CiAgICAgICAgJGlzU3VwcG9ydGVkID0gJGlzU3VwcG9ydGVkID8/IGNsYXNzX2V4aXN0cyhmaW5mbzo6Y2xhc3MpOwoKICAgICAgICAkaXNTdXBwb3J0ZWQgfHwgdGhyb3cgbmV3IE1pc3NpbmdGZWF0dXJlKCdTdXBwb3J0IGZvciBmaWxlIHR5cGUgZGV0ZWN0aW9uIHJlcXVpcmVzIHRoZSBgZmlsZWluZm9gIGV4dGVuc2lvbi4nKTsKCiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdXBwb3J0c0lkbigpOiB2b2lkCiAgICB7CiAgICAgICAgc3RhdGljICRpc1N1cHBvcnRlZCA9IG51bGw7CiAgICAgICAgJGlzU3VwcG9ydGVkID0gJGlzU3VwcG9ydGVkID8/IChmdW5jdGlvbl9leGlzdHMoJ1xpZG5fdG9fYXNjaWknKSAmJiBkZWZpbmVkKCdcSU5UTF9JRE5BX1ZBUklBTlRfVVRTNDYnKSk7CgogICAgICAgICRpc1N1cHBvcnRlZCB8fCB0aHJvdyBuZXcgTWlzc2luZ0ZlYXR1cmUoJ1N1cHBvcnQgZm9yIElETiBob3N0IHJlcXVpcmVzIHRoZSBgaW50bGAgZXh0ZW5zaW9uIGZvciBiZXN0IHBlcmZvcm1hbmNlIG9yIHJ1biAiY29tcG9zZXIgcmVxdWlyZSBzeW1mb255L3BvbHlmaWxsLWludGwtaWRuIiB0byBpbnN0YWxsIGEgcG9seWZpbGwuJyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdXBwb3J0c0lQdjRDb252ZXJzaW9uKCk6IHZvaWQKICAgIHsKICAgICAgICBzdGF0aWMgJGlzU3VwcG9ydGVkID0gbnVsbDsKICAgICAgICAkaXNTdXBwb3J0ZWQgPSAkaXNTdXBwb3J0ZWQgPz8gKGV4dGVuc2lvbl9sb2FkZWQoJ2dtcCcpIHx8IGV4dGVuc2lvbl9sb2FkZWQoJ2JjbWF0aCcpIHx8ICg0IDwgUEhQX0lOVF9TSVpFKSk7CgogICAgICAgICRpc1N1cHBvcnRlZCB8fCB0aHJvdyBuZXcgTWlzc2luZ0ZlYXR1cmUoJ0EgJy5DYWxjdWxhdG9yOjpjbGFzcy4nIGltcGxlbWVudGF0aW9uIGNvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZC4gVG8gcGVyZm9ybSBJUHY0IGNvbnZlcnNpb24gdXNlIGEgeC42NCBQSFAgYnVpbGQgb3IgaW5zdGFsbCBvbmUgb2YgdGhlIGZvbGxvd2luZyBleHRlbnNpb24gR01QIG9yIEJDTWF0aC4gWW91IGNhbiBhbHNvIHNoaXAgeW91ciBvd24gaW1wbGVtZW50YXRpb24uJyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdXBwb3J0c0RvbSgpOiB2b2lkCiAgICB7CiAgICAgICAgc3RhdGljICRpc1N1cHBvcnRlZCA9IG51bGw7CiAgICAgICAgJGlzU3VwcG9ydGVkID0gJGlzU3VwcG9ydGVkID8/IGV4dGVuc2lvbl9sb2FkZWQoJ2RvbScpOwoKICAgICAgICAkaXNTdXBwb3J0ZWQgfHwgdGhyb3cgbmV3IE1pc3NpbmdGZWF0dXJlKCdUbyB1c2UgYSBET00gcmVsYXRlZCBmZWF0dXJlLCB0aGUgRE9NIGV4dGVuc2lvbiBtdXN0IGJlIGluc3RhbGxlZCBpbiB5b3VyIHN5c3RlbS4nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/HostFormat.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7CgplbnVtIEhvc3RGb3JtYXQKewogICAgY2FzZSBBc2NpaTsKICAgIGNhc2UgVW5pY29kZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/HostRecord.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIEV4Y2VwdGlvbjsKdXNlIEpzb25TZXJpYWxpemFibGU7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlDb21wb25lbnRJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBMZWFndWVcVXJpXElkbmFcQ29udmVydGVyIGFzIElkbkNvbnZlcnRlcjsKdXNlIFN0cmluZ2FibGU7CnVzZSBUaHJvd2FibGU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2ZpcnN0Owp1c2UgZnVuY3Rpb24gY291bnQ7CnVzZSBmdW5jdGlvbiBleHBsb2RlOwp1c2UgZnVuY3Rpb24gZmlsdGVyX3ZhcjsKdXNlIGZ1bmN0aW9uIGdldF9vYmplY3RfdmFyczsKdXNlIGZ1bmN0aW9uIGluX2FycmF5Owp1c2UgZnVuY3Rpb24gaW5ldF9wdG9uOwp1c2UgZnVuY3Rpb24gaXNfb2JqZWN0Owp1c2UgZnVuY3Rpb24gcHJlZ19tYXRjaDsKdXNlIGZ1bmN0aW9uIHJhd3VybGRlY29kZTsKdXNlIGZ1bmN0aW9uIHN0cnBvczsKdXNlIGZ1bmN0aW9uIHN0cnRvbG93ZXI7CnVzZSBmdW5jdGlvbiBzdWJzdHI7Cgp1c2UgY29uc3QgRklMVEVSX0ZMQUdfSVBWNDsKdXNlIGNvbnN0IEZJTFRFUl9GTEFHX0lQVjY7CnVzZSBjb25zdCBGSUxURVJfVkFMSURBVEVfSVA7CgovKioKICogQHBocHN0YW4tdHlwZSBIb3N0UmVjb3JkU2VyaWFsaXplZFNoYXBlIGFycmF5ezA6IGFycmF5e2hvc3Q6ID9zdHJpbmd9LCAxOiBhcnJheXt9fQogKi8KZmluYWwgY2xhc3MgSG9zdFJlY29yZCBpbXBsZW1lbnRzIEpzb25TZXJpYWxpemFibGUKewogICAgLyoqCiAgICAgKiBNYXhpbXVtIG51bWJlciBvZiBob3N0IGNhY2hlZC4KICAgICAqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlIGNvbnN0IE1BWElNVU1fSE9TVF9DQUNIRUQgPSAxMDA7CgogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfTk9OX0FTQ0lJX1BBVFRFUk4gPSAnL1teXHgyMC1ceDdmXS8nOwoKICAgIC8qKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMi4yCiAgICAgKgogICAgICogaW52YWxpZCBjaGFyYWN0ZXJzIGluIGhvc3QgcmVndWxhciBleHByZXNzaW9uCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX0lOVkFMSURfSE9TVF9DSEFSUyA9ICcvCiAgICAgICAgWzpcLz8jXFtcXUAgXSAgIyBnZW4tZGVsaW1zIGNoYXJhY3RlcnMgYXMgd2VsbCBhcyB0aGUgc3BhY2UgY2hhcmFjdGVyCiAgICAvaXgnOwoKICAgIC8qKgogICAgICogR2VuZXJhbCByZWdpc3RlcmVkIG5hbWUgcmVndWxhciBleHByZXNzaW9uLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjIuMgogICAgICogQHNlZSBodHRwczovL3JlZ2V4MTAxLmNvbS9yL2ZwdFU4Vi8xCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX1JFR0lTVEVSRURfTkFNRSA9ICcvCiAgICAoPyhERUZJTkUpCiAgICAgICAgKD88dW5yZXNlcnZlZD5bYS16MC05X35cLV0pICAgIyAuIGlzIG1pc3NpbmcgYXMgaXQgaXMgdXNlZCB0byBzZXBhcmF0ZSBsYWJlbHMKICAgICAgICAoPzxzdWJfZGVsaW1zPlshJCZcJygpKissOz1dKQogICAgICAgICg/PGVuY29kZWQ+JVtBLUYwLTldezJ9KQogICAgICAgICg/PHJlZ19uYW1lPig/Oig/JnVucmVzZXJ2ZWQpfCg/JnN1Yl9kZWxpbXMpfCg/JmVuY29kZWQpKSopCiAgICApCiAgICAgICAgXig/Oig/JnJlZ19uYW1lKVwuKSooPyZyZWdfbmFtZSlcLj8kCiAgICAvaXgnOwoKICAgIC8qKgogICAgICogRG9tYWluIG5hbWUgcmVndWxhciBleHByZXNzaW9uLgogICAgICoKICAgICAqIEV2ZXJ5dGhpbmcgYnV0IHRoZSBkb21haW4gbmFtZSBsZW5ndGggaXMgdmFsaWRhdGVkCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTAzNCNzZWN0aW9uLTMuNQogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTEyMyNzZWN0aW9uLTIuMQogICAgICogQHNlZSBodHRwczovL3JlZ2V4MTAxLmNvbS9yLzcxajZydC8xCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX0RPTUFJTl9OQU1FID0gJy8KICAgICg/KERFRklORSkKICAgICAgICAoPzxsZXRfZGlnPiBbYS16MC05XSkgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbHBoYSBkaWdpdAogICAgICAgICg/PGxldF9kaWdfaHlwPiBbYS16MC05LV0pICAgICAgICAgICAgICAgICAgICAjIGFscGhhIGRpZ2l0IGFuZCBoeXBoZW4KICAgICAgICAoPzxsZGhfc3RyPiAoPyZsZXRfZGlnX2h5cCl7MCw2MX0oPyZsZXRfZGlnKSkgIyBkb21haW4gbGFiZWwgZW5kCiAgICAgICAgKD88bGFiZWw+ICg/JmxldF9kaWcpKCg/JmxkaF9zdHIpKT8pICAgICAgICAgICMgZG9tYWluIGxhYmVsCiAgICAgICAgKD88ZG9tYWluPiAoPyZsYWJlbCkoXC4oPyZsYWJlbCkpezAsMTI2fVwuPykgICMgZG9tYWluIG5hbWUKICAgICkKICAgICAgICBeKD8mZG9tYWluKSQKICAgIC9peCc7CgogICAgLyoqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yLjIKICAgICAqCiAgICAgKiBJUHZGdXR1cmUgcmVndWxhciBleHByZXNzaW9uCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX0lQX0ZVVFVSRSA9ICcvXgogICAgICAgIHYoPzx2ZXJzaW9uPltBLUZcZF0pK1wuCiAgICAgICAgKD86CiAgICAgICAgICAgICg/PHVucmVzZXJ2ZWQ+W2EtelxkX35cLVwuXSl8CiAgICAgICAgICAgICg/PHN1Yl9kZWxpbXM+WyEkJlwnKCkqKyw7PTpdKSAgIyBhbHNvIGluY2x1ZGUgdGhlIDogY2hhcmFjdGVyCiAgICAgICAgKSsKICAgICQvaXgnOwogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfR0VOX0RFTElNUyA9ICcvWzpcLz8jXFtcXUAgXS8nOwogICAgcHJpdmF0ZSBjb25zdCBBRERSRVNTX0JMT0NLID0gIlx4ZmVceDgwIjsKCiAgICBwcml2YXRlID9ib29sICRpc0RvbWFpbk5hbWUgPSBudWxsOwogICAgcHJpdmF0ZSA/Ym9vbCAkaGFzWm9uZUlkZW50aWZpZXIgPSBudWxsOwogICAgcHJpdmF0ZSBib29sICRhc2NpaUlzTG9hZGVkID0gZmFsc2U7CiAgICBwcml2YXRlID9zdHJpbmcgJGhvc3RBc0FzY2lpID0gbnVsbDsKICAgIHByaXZhdGUgYm9vbCAkdW5pY29kZUlzTG9hZGVkID0gZmFsc2U7CiAgICBwcml2YXRlID9zdHJpbmcgJGhvc3RBc1VuaWNvZGUgPSBudWxsOwogICAgcHJpdmF0ZSBib29sICRpc0lwVmVyc2lvbkxvYWRlZCA9IGZhbHNlOwogICAgcHJpdmF0ZSA/c3RyaW5nICRpcFZlcnNpb24gPSBudWxsOwogICAgcHJpdmF0ZSBib29sICRpc0lwVmFsdWVMb2FkZWQgPSBmYWxzZTsKICAgIHByaXZhdGUgP3N0cmluZyAkaXBWYWx1ZSA9IG51bGw7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgP3N0cmluZyAkdmFsdWUsCiAgICAgICAgcHVibGljIHJlYWRvbmx5IEhvc3RUeXBlICR0eXBlLAogICAgICAgIHB1YmxpYyByZWFkb25seSBIb3N0Rm9ybWF0ICRmb3JtYXQKICAgICkgewogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNab25lSWRlbnRpZmllcigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYXNab25lSWRlbnRpZmllciA/Pz0gSG9zdFR5cGU6OklwdjYgPT09ICR0aGlzLT50eXBlICYmIHN0cl9jb250YWlucygoc3RyaW5nKSAkdGhpcy0+dmFsdWUsICclJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvQXNjaWkoKTogP3N0cmluZwogICAgewogICAgICAgIGlmICghJHRoaXMtPmFzY2lpSXNMb2FkZWQpIHsKICAgICAgICAgICAgJHRoaXMtPmFzY2lpSXNMb2FkZWQgPSB0cnVlOwogICAgICAgICAgICAkdGhpcy0+aG9zdEFzQXNjaWkgPSAoZnVuY3Rpb24gKCk6ID9zdHJpbmcgewogICAgICAgICAgICAgICAgaWYgKEhvc3RUeXBlOjpSZWdpc3RlcmVkTmFtZSAhPT0gJHRoaXMtPnR5cGUgfHwgbnVsbCA9PT0gJHRoaXMtPnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZm9ybWF0dGVkSG9zdCA9IHJhd3VybGRlY29kZSgkdGhpcy0+dmFsdWUpOwogICAgICAgICAgICAgICAgaWYgKCRmb3JtYXR0ZWRIb3N0ID09PSAkdGhpcy0+dmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmlzRG9tYWluVHlwZSgpID8gSWRuQ29udmVydGVyOjp0b0FzY2lpKCR0aGlzLT52YWx1ZSktPmRvbWFpbigpIDogc3RydG9sb3dlcigkZm9ybWF0dGVkSG9zdCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIEVuY29kZXI6Om5vcm1hbGl6ZUhvc3QoJHRoaXMtPnZhbHVlKTsKICAgICAgICAgICAgfSkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+aG9zdEFzQXNjaWk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvVW5pY29kZSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+dW5pY29kZUlzTG9hZGVkKSB7CiAgICAgICAgICAgICR0aGlzLT51bmljb2RlSXNMb2FkZWQgPSB0cnVlOwogICAgICAgICAgICAkdGhpcy0+aG9zdEFzVW5pY29kZSA9ICR0aGlzLT5pc0RvbWFpblR5cGUoKSAmJiBudWxsICE9PSAkdGhpcy0+dmFsdWUgPyBJZG5Db252ZXJ0ZXI6OnRvVW5pY29kZSgkdGhpcy0+dmFsdWUpLT5kb21haW4oKSA6ICR0aGlzLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+aG9zdEFzVW5pY29kZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNEb21haW5UeXBlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlzRG9tYWluTmFtZSA/Pz0gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgSG9zdFR5cGU6OlJlZ2lzdGVyZWROYW1lICE9PSAkdGhpcy0+dHlwZSwgJycgPT09ICR0aGlzLT52YWx1ZSA9PiBmYWxzZSwKICAgICAgICAgICAgbnVsbCA9PT0gJHRoaXMtPnZhbHVlID0+IHRydWUsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gaXNfb2JqZWN0KCRyZXN1bHQgPSBJZG5Db252ZXJ0ZXI6OnRvQXNjaWkoJHRoaXMtPnZhbHVlKSkKICAgICAgICAgICAgICAgICYmICEkcmVzdWx0LT5oYXNFcnJvcnMoKQogICAgICAgICAgICAgICAgJiYgc2VsZjo6aXNWYWxpZERvbWFpbigkcmVzdWx0LT5kb21haW4oKSksCiAgICAgICAgfTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXBWZXJzaW9uKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5pc0lwVmVyc2lvbkxvYWRlZCkgewogICAgICAgICAgICAkdGhpcy0+aXNJcFZlcnNpb25Mb2FkZWQgPSB0cnVlOwogICAgICAgICAgICAkdGhpcy0+aXBWZXJzaW9uID0gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgICAgIEhvc3RUeXBlOjpJcHY0ID09PSAkdGhpcy0+dHlwZSA9PiAnNCcsCiAgICAgICAgICAgICAgICBIb3N0VHlwZTo6SXB2NiA9PT0gJHRoaXMtPnR5cGUgPT4gJzYnLAogICAgICAgICAgICAgICAgMSA9PT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfSVBfRlVUVVJFLCBzdWJzdHIoKHN0cmluZykgJHRoaXMtPnZhbHVlLCAxLCAtMSksICRtYXRjaGVzKSA9PiAkbWF0Y2hlc1sndmVyc2lvbiddLAogICAgICAgICAgICAgICAgZGVmYXVsdCA9PiBudWxsLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5pcFZlcnNpb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlwVmFsdWUoKTogP3N0cmluZwogICAgewogICAgICAgIGlmICghJHRoaXMtPmlzSXBWYWx1ZUxvYWRlZCkgewogICAgICAgICAgICAkdGhpcy0+aXNJcFZhbHVlTG9hZGVkID0gdHJ1ZTsKICAgICAgICAgICAgJHRoaXMtPmlwVmFsdWUgPSAoZnVuY3Rpb24gKCk6ID9zdHJpbmcgewogICAgICAgICAgICAgICAgaWYgKEhvc3RUeXBlOjpSZWdpc3RlcmVkTmFtZSA9PT0gJHRoaXMtPnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoSG9zdFR5cGU6OklwdjQgPT09ICR0aGlzLT50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaXAgPSBzdWJzdHIoKHN0cmluZykgJHRoaXMtPnZhbHVlLCAxLCAtMSk7CiAgICAgICAgICAgICAgICBpZiAoSG9zdFR5cGU6OklwdjYgIT09ICR0aGlzLT50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkaXAsIChpbnQpIHN0cnBvcygkaXAsICcuJykgKyAxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcG9zID0gc3RycG9zKCRpcCwgJyUnKTsKICAgICAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJHBvcykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkaXA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkaXAsIDAsICRwb3MpLiclJy5yYXd1cmxkZWNvZGUoc3Vic3RyKCRpcCwgJHBvcyArIDMpKTsKICAgICAgICAgICAgfSkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+aXBWYWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWQoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogYm9vbAogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIEhvc3RSZWNvcmQ6OmZyb20oJGhvc3QpOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0lwdjQoU3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkaG9zdCk6IGJvb2wKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gSG9zdFR5cGU6OklwdjQgPT09IEhvc3RSZWNvcmQ6OmZyb20oJGhvc3QpLT50eXBlOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNJcHY2KFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiBib29sCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIEhvc3RUeXBlOjpJcHY2ID09PSBIb3N0UmVjb3JkOjpmcm9tKCRob3N0KS0+dHlwZTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzSXB2RnV0dXJlKFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiBib29sCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIEhvc3RUeXBlOjpJcHZGdXR1cmUgPT09IEhvc3RSZWNvcmQ6OmZyb20oJGhvc3QpLT50eXBlOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNJcChTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogYm9vbAogICAgewogICAgICAgIHJldHVybiBzZWxmOjppc0lwdjQoJGhvc3QpCiAgICAgICAgICAgIHx8IHNlbGY6OmlzSXB2NigkaG9zdCkKICAgICAgICAgICAgfHwgc2VsZjo6aXNJcHZGdXR1cmUoJGhvc3QpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNSZWdpc3RlcmVkTmFtZShTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogYm9vbAogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBIb3N0VHlwZTo6UmVnaXN0ZXJlZE5hbWUgPT09IEhvc3RSZWNvcmQ6OmZyb20oJGhvc3QpLT50eXBlOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNEb21haW4oU3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkaG9zdCk6IGJvb2wKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gSG9zdFJlY29yZDo6ZnJvbSgkaG9zdCktPmlzRG9tYWluVHlwZSgpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTeW50YXhFcnJvcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb20oQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogc2VsZgogICAgewogICAgICAgIGlmICgkaG9zdCBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJGhvc3QgPSAkaG9zdC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGhvc3QgaW5zdGFuY2VvZiBVcmlDb21wb25lbnRJbnRlcmZhY2UpIHsKICAgICAgICAgICAgJGhvc3QgPSAkaG9zdC0+dmFsdWUoKTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkaG9zdCkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCwKICAgICAgICAgICAgICAgIHR5cGU6IEhvc3RUeXBlOjpSZWdpc3RlcmVkTmFtZSwKICAgICAgICAgICAgICAgIGZvcm1hdDogSG9zdEZvcm1hdDo6QXNjaWksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkaG9zdCA9IChzdHJpbmcpICRob3N0OwogICAgICAgIGlmICgnJyA9PT0gJGhvc3QpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKAogICAgICAgICAgICAgICAgdmFsdWU6ICcnLAogICAgICAgICAgICAgICAgdHlwZTogSG9zdFR5cGU6OlJlZ2lzdGVyZWROYW1lLAogICAgICAgICAgICAgICAgZm9ybWF0OiBIb3N0Rm9ybWF0OjpBc2NpaSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyAkaW5NZW1vcnlDYWNoZSA9IFtdOwogICAgICAgIGlmIChpc3NldCgkaW5NZW1vcnlDYWNoZVskaG9zdF0pKSB7CiAgICAgICAgICAgIHJldHVybiAkaW5NZW1vcnlDYWNoZVskaG9zdF07CiAgICAgICAgfQoKICAgICAgICBpZiAoc2VsZjo6TUFYSU1VTV9IT1NUX0NBQ0hFRCA8IGNvdW50KCRpbk1lbW9yeUNhY2hlKSkgewogICAgICAgICAgICB1bnNldCgkaW5NZW1vcnlDYWNoZVthcnJheV9rZXlfZmlyc3QoJGluTWVtb3J5Q2FjaGUpXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGhvc3QgPT09IGZpbHRlcl92YXIoJGhvc3QsIEZJTFRFUl9WQUxJREFURV9JUCwgRklMVEVSX0ZMQUdfSVBWNCkpIHsKICAgICAgICAgICAgcmV0dXJuICRpbk1lbW9yeUNhY2hlWyRob3N0XSA9IG5ldyBzZWxmKAogICAgICAgICAgICAgICAgdmFsdWU6ICRob3N0LAogICAgICAgICAgICAgICAgdHlwZTogSG9zdFR5cGU6OklwdjQsCiAgICAgICAgICAgICAgICBmb3JtYXQ6IEhvc3RGb3JtYXQ6OkFzY2lpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkaG9zdCwgJ1snKSkgewogICAgICAgICAgICBzdHJfZW5kc193aXRoKCRob3N0LCAnXScpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIGhvc3QgJy4kaG9zdC4nIGlzIG5vdCBhIHZhbGlkIElQdjYgaG9zdC4nKTsKCiAgICAgICAgICAgICRpcEhvc3QgPSBzdWJzdHIoJGhvc3QsIDEsIC0xKTsKICAgICAgICAgICAgaWYgKDEgPT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX0lQX0ZVVFVSRSwgJGlwSG9zdCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIWluX2FycmF5KCRtYXRjaGVzWyd2ZXJzaW9uJ10sIFsnNCcsICc2J10sIHRydWUpID8gKCRpbk1lbW9yeUNhY2hlWyRob3N0XSA9IG5ldyBzZWxmKAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAkaG9zdCwKICAgICAgICAgICAgICAgICAgICB0eXBlOiBIb3N0VHlwZTo6SXB2RnV0dXJlLAogICAgICAgICAgICAgICAgICAgIGZvcm1hdDogSG9zdEZvcm1hdDo6QXNjaWksCiAgICAgICAgICAgICAgICApKSA6IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIGhvc3QgJy4kaG9zdC4nIGlzIG5vdCBhIHZhbGlkIElQdkZ1dHVyZSBob3N0LicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc2VsZjo6aXNWYWxpZElwdjZIb3N0bmFtZSgkaXBIb3N0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRpbk1lbW9yeUNhY2hlWyRob3N0XSA9IG5ldyBzZWxmKAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAkaG9zdCwKICAgICAgICAgICAgICAgICAgICB0eXBlOiBIb3N0VHlwZTo6SXB2NiwKICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IEhvc3RGb3JtYXQ6OkFzY2lpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgaG9zdCAnLiRob3N0LicgaXMgbm90IGEgdmFsaWQgSVB2NiBob3N0LicpOwogICAgICAgIH0KCiAgICAgICAgJGRvbWFpbk5hbWUgPSByYXd1cmxkZWNvZGUoJGhvc3QpOwogICAgICAgICRmb3JtYXQgPSBIb3N0Rm9ybWF0OjpVbmljb2RlOwogICAgICAgIGlmICgxICE9PSBwcmVnX21hdGNoKHNlbGY6OlJFR0VYUF9OT05fQVNDSUlfUEFUVEVSTiwgJGRvbWFpbk5hbWUpKSB7CiAgICAgICAgICAgICRkb21haW5OYW1lID0gc3RydG9sb3dlcigkZG9tYWluTmFtZSk7CiAgICAgICAgICAgICRmb3JtYXQgPSBIb3N0Rm9ybWF0OjpBc2NpaTsKICAgICAgICB9CgogICAgICAgIGlmICgxID09PSBwcmVnX21hdGNoKHNlbGY6OlJFR0VYUF9SRUdJU1RFUkVEX05BTUUsICRkb21haW5OYW1lKSkgewogICAgICAgICAgICByZXR1cm4gJGluTWVtb3J5Q2FjaGVbJGhvc3RdID0gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICB2YWx1ZTogJGhvc3QsCiAgICAgICAgICAgICAgICB0eXBlOiBIb3N0VHlwZTo6UmVnaXN0ZXJlZE5hbWUsCiAgICAgICAgICAgICAgICBmb3JtYXQ6ICRmb3JtYXQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAoSG9zdEZvcm1hdDo6QXNjaWkgIT09ICRmb3JtYXQgJiYgMSAhPT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfSU5WQUxJRF9IT1NUX0NIQVJTLCAkZG9tYWluTmFtZSkpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignYCcuJGhvc3QuJ2AgaXMgYW4gaW52YWxpZCBkb21haW4gbmFtZSA6IHRoZSBob3N0IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycy4nKTsKICAgICAgICBJZG5Db252ZXJ0ZXI6OnRvQXNjaWlPckZhaWwoJGRvbWFpbk5hbWUpOwoKICAgICAgICByZXR1cm4gJGluTWVtb3J5Q2FjaGVbJGhvc3RdID0gbmV3IHNlbGYoCiAgICAgICAgICAgIHZhbHVlOiAkaG9zdCwKICAgICAgICAgICAgdHlwZTogSG9zdFR5cGU6OlJlZ2lzdGVyZWROYW1lLAogICAgICAgICAgICBmb3JtYXQ6ICRmb3JtYXQsCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIHJlZ2lzdGVyZWQgbmFtZSBpcyBhIHZhbGlkIGRvbWFpbiBuYW1lIGFjY29yZGluZyB0byBSRkMxMTIzLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW43L2hvc3RuYW1lLjcuaHRtbAogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTEyMyNzZWN0aW9uLTIuMQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpc1ZhbGlkRG9tYWluKHN0cmluZyAkaG9zdG5hbWUpOiBib29sCiAgICB7CiAgICAgICAgJGRvbWFpbk1heExlbmd0aCA9IHN0cl9lbmRzX3dpdGgoJGhvc3RuYW1lLCAnLicpID8gMjU0IDogMjUzOwoKICAgICAgICByZXR1cm4gIWlzc2V0KCRob3N0bmFtZVskZG9tYWluTWF4TGVuZ3RoXSkKICAgICAgICAgICAgJiYgMSA9PT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfRE9NQUlOX05BTUUsICRob3N0bmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBWYWxpZGF0ZXMgYW4gSXB2NiBhcyBIb3N0LgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjg3NCNzZWN0aW9uLTIKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjg3NCNzZWN0aW9uLTQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNWYWxpZElwdjZIb3N0bmFtZShzdHJpbmcgJGhvc3QpOiBib29sCiAgICB7CiAgICAgICAgWyRpcHY2LCAkc2NvcGVdID0gZXhwbG9kZSgnJScsICRob3N0LCAyKSArIFsxID0+IG51bGxdOwogICAgICAgIGlmIChudWxsID09PSAkc2NvcGUpIHsKICAgICAgICAgICAgcmV0dXJuIChib29sKSBmaWx0ZXJfdmFyKCRpcHY2LCBGSUxURVJfVkFMSURBVEVfSVAsIEZJTFRFUl9GTEFHX0lQVjYpOwogICAgICAgIH0KCiAgICAgICAgJHNjb3BlID0gcmF3dXJsZGVjb2RlKCclJy4kc2NvcGUpOwoKICAgICAgICByZXR1cm4gMSAhPT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfTk9OX0FTQ0lJX1BBVFRFUk4sICRzY29wZSkKICAgICAgICAgICAgJiYgMSAhPT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfR0VOX0RFTElNUywgJHNjb3BlKQogICAgICAgICAgICAmJiBmYWxzZSAhPT0gZmlsdGVyX3ZhcigkaXB2NiwgRklMVEVSX1ZBTElEQVRFX0lQLCBGSUxURVJfRkxBR19JUFY2KQogICAgICAgICAgICAmJiBzdHJfc3RhcnRzX3dpdGgoKHN0cmluZylpbmV0X3B0b24oKHN0cmluZykkaXB2NiksIHNlbGY6OkFERFJFU1NfQkxPQ0spOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBIb3N0UmVjb3JkU2VyaWFsaXplZFNoYXBlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NlcmlhbGl6ZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbWydob3N0JyA9PiAkdGhpcy0+dmFsdWVdLCBbXV07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gSG9zdFJlY29yZFNlcmlhbGl6ZWRTaGFwZSAkZGF0YQogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9ufFN5bnRheEVycm9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3Vuc2VyaWFsaXplKGFycmF5ICRkYXRhKTogdm9pZAogICAgewogICAgICAgIFskcHJvcGVydGllc10gPSAkZGF0YTsKICAgICAgICAkcmVjb3JkID0gc2VsZjo6ZnJvbSgkcHJvcGVydGllc1snaG9zdCddID8/IHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBgaG9zdGAgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHRoZSBzZXJpYWxpemVkIG9iamVjdC4nKSk7CiAgICAgICAgLy9pZiB0aGUgSG9zdCBjb21wdXRlZCB2YWx1ZSBhcmUgYWxyZWFkeSBjYWNoZSB0aGlzIGF2b2lkIHJlY29tcHV0aW5nIHRoZW0KICAgICAgICBmb3JlYWNoIChnZXRfb2JqZWN0X3ZhcnMoJHJlY29yZCkgYXMgJHByb3AgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIC8qIEBwaHBzdGFuLWlnbm9yZS1uZXh0LWxpbmUgKi8KICAgICAgICAgICAgJHRoaXMtPnskcHJvcH0gPSAkdmFsdWU7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/HostType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7CgplbnVtIEhvc3RUeXBlCnsKICAgIGNhc2UgUmVnaXN0ZXJlZE5hbWU7CiAgICBjYXNlIElwdjQ7CiAgICBjYXNlIElwdjY7CiAgICBjYXNlIElwdkZ1dHVyZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Idna/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Idna/Converter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSWRuYTsKCnVzZSBCYWNrZWRFbnVtOwp1c2UgTGVhZ3VlXFVyaVxFeGNlcHRpb25zXENvbnZlcnNpb25GYWlsZWQ7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBMZWFndWVcVXJpXEZlYXR1cmVEZXRlY3Rpb247CnVzZSBTdHJpbmdhYmxlOwoKdXNlIGZ1bmN0aW9uIGlkbl90b19hc2NpaTsKdXNlIGZ1bmN0aW9uIGlkbl90b191dGY4Owp1c2UgZnVuY3Rpb24gcmF3dXJsZGVjb2RlOwp1c2UgZnVuY3Rpb24gc3RydG9sb3dlcjsKCnVzZSBjb25zdCBJTlRMX0lETkFfVkFSSUFOVF9VVFM0NjsKCi8qKgogKiBAc2VlIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS1kb2NzL2FwaWRvYy9yZWxlYXNlZC9pY3U0Yy91aWRuYV84aC5odG1sCiAqLwpmaW5hbCBjbGFzcyBDb252ZXJ0ZXIKewogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfSUROQV9QQVRURVJOID0gJy9bXlx4MjAtXHg3Zl0vJzsKICAgIHByaXZhdGUgY29uc3QgTUFYX0RPTUFJTl9MRU5HVEggPSAyNTM7CiAgICBwcml2YXRlIGNvbnN0IE1BWF9MQUJFTF9MRU5HVEggPSA2MzsKCiAgICAvKioKICAgICAqIEdlbmVyYWwgcmVnaXN0ZXJlZCBuYW1lIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yLjIKICAgICAqIEBzZWUgaHR0cHM6Ly9yZWdleDEwMS5jb20vci9mcHRVOFYvMQogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFJFR0VYUF9SRUdJU1RFUkVEX05BTUUgPSAnLwogICAgICAgICg/KERFRklORSkKICAgICAgICAgICAgKD88dW5yZXNlcnZlZD5bYS16MC05X35cLV0pICAgIyAuIGlzIG1pc3NpbmcgYXMgaXQgaXMgdXNlZCB0byBzZXBhcmF0ZSBsYWJlbHMKICAgICAgICAgICAgKD88c3ViX2RlbGltcz5bISQmXCcoKSorLDs9XSkKICAgICAgICAgICAgKD88ZW5jb2RlZD4lW0EtRjAtOV17Mn0pCiAgICAgICAgICAgICg/PHJlZ19uYW1lPig/Oig/JnVucmVzZXJ2ZWQpfCg/JnN1Yl9kZWxpbXMpfCg/JmVuY29kZWQpKSopCiAgICAgICAgKQogICAgICAgICAgICBeKD86KD8mcmVnX25hbWUpXC4pKig/JnJlZ19uYW1lKVwuPyQKICAgICAgICAvaXgnOwoKICAgIC8qKgogICAgICogQ29udmVydHMgdGhlIGlucHV0IHRvIGl0cyBJRE5BIEFTQ0lJIGZvcm0gb3IgdGhyb3cgb24gZmFpbHVyZS4KICAgICAqCiAgICAgKiBAc2VlIENvbnZlcnRlcjo6dG9Bc2NpaSgpCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gVU5JQ09ERSB1c2luZyBJRE4gVVRTNDYgYWxnb3JpdGhtCiAgICAgKiBAdGhyb3dzIENvbnZlcnNpb25GYWlsZWQgaWYgdGhlIGNvbnZlcnNpb24gcmV0dXJucyBlcnJvcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvQXNjaWlPckZhaWwoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZyAkZG9tYWluLCBPcHRpb258aW50fG51bGwgJG9wdGlvbnMgPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IHNlbGY6OnRvQXNjaWkoJGRvbWFpbiwgJG9wdGlvbnMpOwoKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgJHJlc3VsdC0+aGFzRXJyb3JzKCkgPT4gdGhyb3cgQ29udmVyc2lvbkZhaWxlZDo6ZHVlVG9JZG5FcnJvcigkZG9tYWluLCAkcmVzdWx0KSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkcmVzdWx0LT5kb21haW4oKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgdGhlIGlucHV0IHRvIGl0cyBJRE5BIEFTQ0lJIGZvcm0uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc3RyaW5nIGNvbnZlcnRlZCB0byBJRE4gQVNDSUkgZm9ybQogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIHN0cmluZyBjYW5ub3QgYmUgY29udmVydGVkIHRvIEFTQ0lJIHVzaW5nIElETiBVVFM0NiBhbGdvcml0aG0KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b0FzY2lpKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJGRvbWFpbiwgT3B0aW9ufGludHxudWxsICRvcHRpb25zID0gbnVsbCk6IFJlc3VsdAogICAgewogICAgICAgIGlmICgkZG9tYWluIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkZG9tYWluID0gJGRvbWFpbi0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkZG9tYWluID0gcmF3dXJsZGVjb2RlKChzdHJpbmcpICRkb21haW4pOwoKICAgICAgICBpZiAoMSA9PT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfSUROQV9QQVRURVJOLCAkZG9tYWluKSkgewogICAgICAgICAgICBGZWF0dXJlRGV0ZWN0aW9uOjpzdXBwb3J0c0lkbigpOwoKICAgICAgICAgICAgJGZsYWdzID0gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgICAgIG51bGwgPT09ICRvcHRpb25zID0+IE9wdGlvbjo6Zm9ySUROQTIwMDhBc2NpaSgpLAogICAgICAgICAgICAgICAgJG9wdGlvbnMgaW5zdGFuY2VvZiBPcHRpb24gPT4gJG9wdGlvbnMsCiAgICAgICAgICAgICAgICBkZWZhdWx0ID0+IE9wdGlvbjo6bmV3KCRvcHRpb25zKSwKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGlkbl90b19hc2NpaSgkZG9tYWluLCAkZmxhZ3MtPnRvQnl0ZXMoKSwgSU5UTF9JRE5BX1ZBUklBTlRfVVRTNDYsICRpZG5hSW5mbyk7CgogICAgICAgICAgICBpZiAoW10gPT09ICRpZG5hSW5mbykgewogICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdDo6ZnJvbUludGwoWwogICAgICAgICAgICAgICAgICAgICdyZXN1bHQnID0+IHN0cnRvbG93ZXIoJGRvbWFpbiksCiAgICAgICAgICAgICAgICAgICAgJ2lzVHJhbnNpdGlvbmFsRGlmZmVyZW50JyA9PiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAnZXJyb3JzJyA9PiBzZWxmOjp2YWxpZGF0ZURvbWFpbkFuZExhYmVsTGVuZ3RoKCRkb21haW4pLAogICAgICAgICAgICAgICAgXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBSZXN1bHQ6OmZyb21JbnRsKCRpZG5hSW5mbyk7CiAgICAgICAgfQoKICAgICAgICAkZXJyb3IgPSBFcnJvcjo6Tk9ORS0+dmFsdWU7CiAgICAgICAgaWYgKDEgIT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX1JFR0lTVEVSRURfTkFNRSwgJGRvbWFpbikpIHsKICAgICAgICAgICAgJGVycm9yIHw9IEVycm9yOjpESVNBTExPV0VELT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBSZXN1bHQ6OmZyb21JbnRsKFsKICAgICAgICAgICAgJ3Jlc3VsdCcgPT4gc3RydG9sb3dlcigkZG9tYWluKSwKICAgICAgICAgICAgJ2lzVHJhbnNpdGlvbmFsRGlmZmVyZW50JyA9PiBmYWxzZSwKICAgICAgICAgICAgJ2Vycm9ycycgPT4gc2VsZjo6dmFsaWRhdGVEb21haW5BbmRMYWJlbExlbmd0aCgkZG9tYWluKSB8ICRlcnJvciwKICAgICAgICBdKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCB0byBpdHMgSUROQSBVTklDT0RFIGZvcm0gb3IgdGhyb3cgb24gZmFpbHVyZS4KICAgICAqCiAgICAgKiBAc2VlIENvbnZlcnRlcjo6dG9Vbmljb2RlKCkKICAgICAqCiAgICAgKiBAdGhyb3dzIENvbnZlcnNpb25GYWlsZWQgaWYgdGhlIGNvbnZlcnNpb24gcmV0dXJucyBlcnJvcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvVW5pY29kZU9yRmFpbChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nICRkb21haW4sIE9wdGlvbnxpbnR8bnVsbCAkb3B0aW9ucyA9IG51bGwpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcmVzdWx0ID0gc2VsZjo6dG9Vbmljb2RlKCRkb21haW4sICRvcHRpb25zKTsKCiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICRyZXN1bHQtPmhhc0Vycm9ycygpID0+IHRocm93IENvbnZlcnNpb25GYWlsZWQ6OmR1ZVRvSWRuRXJyb3IoJGRvbWFpbiwgJHJlc3VsdCksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJHJlc3VsdC0+ZG9tYWluKCksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCB0byBpdHMgSUROQSBVTklDT0RFIGZvcm0uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc3RyaW5nIGNvbnZlcnRlZCB0byBJRE4gVU5JQ09ERSBmb3JtCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gVU5JQ09ERSB1c2luZyBJRE4gVVRTNDYgYWxnb3JpdGhtCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdG9Vbmljb2RlKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJGRvbWFpbiwgT3B0aW9ufGludHxudWxsICRvcHRpb25zID0gbnVsbCk6IFJlc3VsdAogICAgewogICAgICAgIGlmICgkZG9tYWluIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkZG9tYWluID0gJGRvbWFpbi0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkZG9tYWluID0gcmF3dXJsZGVjb2RlKChzdHJpbmcpICRkb21haW4pOwogICAgICAgIGlmIChmYWxzZSA9PT0gc3RyaXBvcygkZG9tYWluLCAneG4tLScpKSB7CiAgICAgICAgICAgIHJldHVybiBSZXN1bHQ6OmZyb21JbnRsKFsncmVzdWx0JyA9PiBzdHJ0b2xvd2VyKCRkb21haW4pLCAnaXNUcmFuc2l0aW9uYWxEaWZmZXJlbnQnID0+IGZhbHNlLCAnZXJyb3JzJyA9PiBFcnJvcjo6Tk9ORS0+dmFsdWVdKTsKICAgICAgICB9CgogICAgICAgIEZlYXR1cmVEZXRlY3Rpb246OnN1cHBvcnRzSWRuKCk7CgogICAgICAgICRmbGFncyA9IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgIG51bGwgPT09ICRvcHRpb25zID0+IE9wdGlvbjo6Zm9ySUROQTIwMDhVbmljb2RlKCksCiAgICAgICAgICAgICRvcHRpb25zIGluc3RhbmNlb2YgT3B0aW9uID0+ICRvcHRpb25zLAogICAgICAgICAgICBkZWZhdWx0ID0+IE9wdGlvbjo6bmV3KCRvcHRpb25zKSwKICAgICAgICB9OwoKICAgICAgICBpZG5fdG9fdXRmOCgkZG9tYWluLCAkZmxhZ3MtPnRvQnl0ZXMoKSwgSU5UTF9JRE5BX1ZBUklBTlRfVVRTNDYsICRpZG5hSW5mbyk7CgogICAgICAgIGlmIChbXSA9PT0gJGlkbmFJbmZvKSB7CiAgICAgICAgICAgIHJldHVybiBSZXN1bHQ6OmZyb21JbnRsKFsncmVzdWx0JyA9PiBzdHJ0b2xvd2VyKCRkb21haW4pLCAnaXNUcmFuc2l0aW9uYWxEaWZmZXJlbnQnID0+IGZhbHNlLCAnZXJyb3JzJyA9PiBFcnJvcjo6Tk9ORS0+dmFsdWVdKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBSZXN1bHQ6OmZyb21JbnRsKCRpZG5hSW5mbyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBzdWJtaXR0ZWQgaG9zdCBpcyBhIHZhbGlkIElETiByZWdhcmRsZXNzIG9mIGl0cyBmb3JtYXQuCiAgICAgKgogICAgICogUmV0dXJucyBmYWxzZSBpZiB0aGUgaG9zdCBpcyBpbnZhbGlkIG9yIGlmIGl0cyBjb252ZXJzaW9uIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0lkbihCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGRvbWFpbik6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJGRvbWFpbiBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJGRvbWFpbiA9ICRkb21haW4tPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgJGRvbWFpbiA9IHN0cnRvbG93ZXIocmF3dXJsZGVjb2RlKChzdHJpbmcpICRkb21haW4pKTsKICAgICAgICAkcmVzdWx0ID0gbWF0Y2ggKDEpIHsKICAgICAgICAgICAgcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfSUROQV9QQVRURVJOLCAkZG9tYWluKSA9PiBzZWxmOjp0b0FzY2lpKCRkb21haW4pLAogICAgICAgICAgICBkZWZhdWx0ID0+IHNlbGY6OnRvVW5pY29kZSgkZG9tYWluKSwKICAgICAgICB9OwoKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgJHJlc3VsdC0+aGFzRXJyb3JzKCkgPT4gZmFsc2UsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJHJlc3VsdC0+ZG9tYWluKCkgIT09ICRkb21haW4sCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vVFJvd2JvdGhhbS9pZG5hLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1RSb3dib3RoYW0vaWRuYS9ibG9iL21hc3Rlci9zcmMvSWRuYS5waHAjTDIzNgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2YWxpZGF0ZURvbWFpbkFuZExhYmVsTGVuZ3RoKHN0cmluZyAkZG9tYWluKTogaW50CiAgICB7CiAgICAgICAgJGVycm9yID0gRXJyb3I6Ok5PTkUtPnZhbHVlOwogICAgICAgICRsYWJlbHMgPSBleHBsb2RlKCcuJywgJGRvbWFpbik7CiAgICAgICAgJG1heERvbWFpblNpemUgPSBzZWxmOjpNQVhfRE9NQUlOX0xFTkdUSDsKICAgICAgICAkbGVuZ3RoID0gY291bnQoJGxhYmVscyk7CgogICAgICAgIC8vIElmIHRoZSBsYXN0IGxhYmVsIGlzIGVtcHR5LCBhbmQgaXQgaXMgbm90IHRoZSBmaXJzdCBsYWJlbCwgdGhlbiBpdCBpcyB0aGUgcm9vdCBsYWJlbC4KICAgICAgICAvLyBJbmNyZWFzZSB0aGUgbWF4IHNpemUgYnkgMSwgbWFraW5nIGl0IDI1NCwgdG8gYWNjb3VudCBmb3IgdGhlIHJvb3QgbGFiZWwncyAiLiIKICAgICAgICAvLyBkZWxpbWl0ZXIuIFRoaXMgYWxzbyBtZWFucyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBsYXN0IGxhYmVsJ3MgbGVuZ3RoIGZvciBiZWluZyB0b28KICAgICAgICAvLyBsb25nLgogICAgICAgIGlmICgkbGVuZ3RoID4gMSAmJiAnJyA9PT0gJGxhYmVsc1skbGVuZ3RoIC0gMV0pIHsKICAgICAgICAgICAgKyskbWF4RG9tYWluU2l6ZTsKICAgICAgICAgICAgYXJyYXlfcG9wKCRsYWJlbHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cmxlbigkZG9tYWluKSA+ICRtYXhEb21haW5TaXplKSB7CiAgICAgICAgICAgICRlcnJvciB8PSBFcnJvcjo6RE9NQUlOX05BTUVfVE9PX0xPTkctPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGxhYmVscyBhcyAkbGFiZWwpIHsKICAgICAgICAgICAgaWYgKHN0cmxlbigkbGFiZWwpID4gc2VsZjo6TUFYX0xBQkVMX0xFTkdUSCkgewogICAgICAgICAgICAgICAgJGVycm9yIHw9IEVycm9yOjpMQUJFTF9UT09fTE9ORy0+dmFsdWU7CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZXJyb3I7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Idna/Error.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBMZWFndWVcVXJpXElkbmE7CgplbnVtIEVycm9yOiBpbnQKewogICAgY2FzZSBOT05FICAgICAgICAgICAgICAgICAgID0gMDsKICAgIGNhc2UgRU1QVFlfTEFCRUwgICAgICAgICAgICA9IDE7CiAgICBjYXNlIExBQkVMX1RPT19MT05HICAgICAgICAgPSAyOwogICAgY2FzZSBET01BSU5fTkFNRV9UT09fTE9ORyAgID0gNDsKICAgIGNhc2UgTEVBRElOR19IWVBIRU4gICAgICAgICA9IDg7CiAgICBjYXNlIFRSQUlMSU5HX0hZUEhFTiAgICAgICAgPSAweDEwOwogICAgY2FzZSBIWVBIRU5fM180ICAgICAgICAgICAgID0gMHgyMDsKICAgIGNhc2UgTEVBRElOR19DT01CSU5JTkdfTUFSSyA9IDB4NDA7CiAgICBjYXNlIERJU0FMTE9XRUQgICAgICAgICAgICAgPSAweDgwOwogICAgY2FzZSBQVU5ZQ09ERSAgICAgICAgICAgICAgID0gMHgxMDA7CiAgICBjYXNlIExBQkVMX0hBU19ET1QgICAgICAgICAgPSAweDIwMDsKICAgIGNhc2UgSU5WQUxJRF9BQ0VfTEFCRUwgICAgICA9IDB4NDAwOwogICAgY2FzZSBCSURJICAgICAgICAgICAgICAgICAgID0gMHg4MDA7CiAgICBjYXNlIENPTlRFWFRKICAgICAgICAgICAgICAgPSAweDEwMDA7CiAgICBjYXNlIENPTlRFWFRPX1BVTkNUVUFUSU9OICAgPSAweDIwMDA7CiAgICBjYXNlIENPTlRFWFRPX0RJR0lUUyAgICAgICAgPSAweDQwMDA7CgogICAgcHVibGljIGZ1bmN0aW9uIGRlc2NyaXB0aW9uKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMpIHsKICAgICAgICAgICAgc2VsZjo6Tk9ORSA9PiAnTm8gZXJyb3IgaGFzIG9jY3VycmVkJywKICAgICAgICAgICAgc2VsZjo6RU1QVFlfTEFCRUwgPT4gJ2Egbm9uLWZpbmFsIGRvbWFpbiBuYW1lIGxhYmVsIChvciB0aGUgd2hvbGUgZG9tYWluIG5hbWUpIGlzIGVtcHR5JywKICAgICAgICAgICAgc2VsZjo6TEFCRUxfVE9PX0xPTkcgPT4gJ2EgZG9tYWluIG5hbWUgbGFiZWwgaXMgbG9uZ2VyIHRoYW4gNjMgYnl0ZXMnLAogICAgICAgICAgICBzZWxmOjpET01BSU5fTkFNRV9UT09fTE9ORyA9PiAnYSBkb21haW4gbmFtZSBpcyBsb25nZXIgdGhhbiAyNTUgYnl0ZXMgaW4gaXRzIHN0b3JhZ2UgZm9ybScsCiAgICAgICAgICAgIHNlbGY6OkxFQURJTkdfSFlQSEVOID0+ICdhIGxhYmVsIHN0YXJ0cyB3aXRoIGEgaHlwaGVuLW1pbnVzICgiLSIpJywKICAgICAgICAgICAgc2VsZjo6VFJBSUxJTkdfSFlQSEVOID0+ICdhIGxhYmVsIGVuZHMgd2l0aCBhIGh5cGhlbi1taW51cyAoIi0iKScsCiAgICAgICAgICAgIHNlbGY6OkhZUEhFTl8zXzQgPT4gJ2EgbGFiZWwgY29udGFpbnMgaHlwaGVuLW1pbnVzICgiLSIpIGluIHRoZSB0aGlyZCBhbmQgZm91cnRoIHBvc2l0aW9ucycsCiAgICAgICAgICAgIHNlbGY6OkxFQURJTkdfQ09NQklOSU5HX01BUksgPT4gJ2EgbGFiZWwgc3RhcnRzIHdpdGggYSBjb21iaW5pbmcgbWFyaycsCiAgICAgICAgICAgIHNlbGY6OkRJU0FMTE9XRUQgPT4gJ2EgbGFiZWwgb3IgZG9tYWluIG5hbWUgY29udGFpbnMgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzJywKICAgICAgICAgICAgc2VsZjo6UFVOWUNPREUgPT4gJ2EgbGFiZWwgc3RhcnRzIHdpdGggInhuLS0iIGJ1dCBkb2VzIG5vdCBjb250YWluIHZhbGlkIFB1bnljb2RlJywKICAgICAgICAgICAgc2VsZjo6TEFCRUxfSEFTX0RPVCA9PiAnYSBsYWJlbCBjb250YWlucyBhIGRvdD1mdWxsIHN0b3AnLAogICAgICAgICAgICBzZWxmOjpJTlZBTElEX0FDRV9MQUJFTCA9PiAnQW4gQUNFIGxhYmVsIGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBsYWJlbCBzdHJpbmcnLAogICAgICAgICAgICBzZWxmOjpCSURJID0+ICdhIGxhYmVsIGRvZXMgbm90IG1lZXQgdGhlIElETkEgQmlEaSByZXF1aXJlbWVudHMgKGZvciByaWdodC10by1sZWZ0IGNoYXJhY3RlcnMpJywKICAgICAgICAgICAgc2VsZjo6Q09OVEVYVEogPT4gJ2EgbGFiZWwgZG9lcyBub3QgbWVldCB0aGUgSUROQSBDT05URVhUSiByZXF1aXJlbWVudHMnLAogICAgICAgICAgICBzZWxmOjpDT05URVhUT19ESUdJVFMgPT4gJ2EgbGFiZWwgZG9lcyBub3QgbWVldCB0aGUgSUROQSBDT05URVhUTyByZXF1aXJlbWVudHMgZm9yIGRpZ2l0cycsCiAgICAgICAgICAgIHNlbGY6OkNPTlRFWFRPX1BVTkNUVUFUSU9OID0+ICdhIGxhYmVsIGRvZXMgbm90IG1lZXQgdGhlIElETkEgQ09OVEVYVE8gcmVxdWlyZW1lbnRzIGZvciBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLiBTb21lIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMgIldvdWxkIG90aGVyd2lzZSBoYXZlIGJlZW4gRElTQUxMT1dFRCIgYnV0IGFyZSBhbGxvd2VkIGluIGNlcnRhaW4gY29udGV4dHMnLAogICAgICAgIH07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmaWx0ZXJCeUVycm9yQnl0ZXMoaW50ICRlcnJvcnMpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBhcnJheV92YWx1ZXMoCiAgICAgICAgICAgIGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgICAgIHNlbGY6OmNhc2VzKCksCiAgICAgICAgICAgICAgICBmbiAoc2VsZiAkZXJyb3IpOiBib29sID0+IDAgIT09ICgkZXJyb3ItPnZhbHVlICYgJGVycm9ycykKICAgICAgICAgICAgKQogICAgICAgICk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Idna/Option.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSWRuYTsKCnVzZSBSZWZsZWN0aW9uQ2xhc3M7CnVzZSBSZWZsZWN0aW9uQ2xhc3NDb25zdGFudDsKCi8qKgogKiBAc2VlIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS1kb2NzL2FwaWRvYy9yZWxlYXNlZC9pY3U0Yy91aWRuYV84aC5odG1sCiAqLwpmaW5hbCBjbGFzcyBPcHRpb24KewogICAgcHJpdmF0ZSBjb25zdCBERUZBVUxUICAgICAgICAgICAgICAgICAgICA9IDA7CiAgICBwcml2YXRlIGNvbnN0IEFMTE9XX1VOQVNTSUdORUQgICAgICAgICAgID0gMTsKICAgIHByaXZhdGUgY29uc3QgVVNFX1NURDNfUlVMRVMgICAgICAgICAgICAgPSAyOwogICAgcHJpdmF0ZSBjb25zdCBDSEVDS19CSURJICAgICAgICAgICAgICAgICA9IDQ7CiAgICBwcml2YXRlIGNvbnN0IENIRUNLX0NPTlRFWFRKICAgICAgICAgICAgID0gODsKICAgIHByaXZhdGUgY29uc3QgTk9OVFJBTlNJVElPTkFMX1RPX0FTQ0lJICAgPSAweDEwOwogICAgcHJpdmF0ZSBjb25zdCBOT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSA9IDB4MjA7CiAgICBwcml2YXRlIGNvbnN0IENIRUNLX0NPTlRFWFRPICAgICAgICAgICAgID0gMHg0MDsKCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KHByaXZhdGUgcmVhZG9ubHkgaW50ICR2YWx1ZSkKICAgIHsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjYXNlcygpOiBhcnJheQogICAgewogICAgICAgIHN0YXRpYyAkYXNzb2M7CiAgICAgICAgaWYgKG51bGwgPT09ICRhc3NvYykgewogICAgICAgICAgICAkYXNzb2MgPSBbXTsKICAgICAgICAgICAgJGZvb0NsYXNzID0gbmV3IFJlZmxlY3Rpb25DbGFzcyhzZWxmOjpjbGFzcyk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRmb29DbGFzcy0+Z2V0Q29uc3RhbnRzKFJlZmxlY3Rpb25DbGFzc0NvbnN0YW50OjpJU19QUklWQVRFKSBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICRhc3NvY1skbmFtZV0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkYXNzb2M7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXcoaW50ICRieXRlcyA9IHNlbGY6OkRFRkFVTFQpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKGFycmF5X3JlZHVjZSgKICAgICAgICAgICAgc2VsZjo6Y2FzZXMoKSwKICAgICAgICAgICAgZm4gKGludCAkdmFsdWUsIGludCAkb3B0aW9uKSA9PiAwICE9PSAoJG9wdGlvbiAmICRieXRlcykgPyAoJHZhbHVlIHwgJG9wdGlvbikgOiAkdmFsdWUsCiAgICAgICAgICAgIHNlbGY6OkRFRkFVTFQKICAgICAgICApKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZvcklETkEyMDA4QXNjaWkoKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBzZWxmOjpuZXcoKQogICAgICAgICAgICAtPm5vblRyYW5zaXRpb25hbFRvQXNjaWkoKQogICAgICAgICAgICAtPmNoZWNrQmlkaSgpCiAgICAgICAgICAgIC0+dXNlU1REM1J1bGVzKCkKICAgICAgICAgICAgLT5jaGVja0NvbnRleHRKKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmb3JJRE5BMjAwOFVuaWNvZGUoKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBzZWxmOjpuZXcoKQogICAgICAgICAgICAtPm5vblRyYW5zaXRpb25hbFRvVW5pY29kZSgpCiAgICAgICAgICAgIC0+Y2hlY2tCaWRpKCkKICAgICAgICAgICAgLT51c2VTVEQzUnVsZXMoKQogICAgICAgICAgICAtPmNoZWNrQ29udGV4dEooKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9CeXRlcygpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIC8qKiBhcnJheTxzdHJpbmcsIGludD4gKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsaXN0KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleXMoYXJyYXlfZmlsdGVyKAogICAgICAgICAgICBzZWxmOjpjYXNlcygpLAogICAgICAgICAgICBmbiAoaW50ICR2YWx1ZSkgPT4gMCAhPT0gKCR2YWx1ZSAmICR0aGlzLT52YWx1ZSkKICAgICAgICApKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsb3dVbmFzc2lnbmVkKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkZChzZWxmOjpBTExPV19VTkFTU0lHTkVEKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGlzYWxsb3dVbmFzc2lnbmVkKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbW92ZShzZWxmOjpBTExPV19VTkFTU0lHTkVEKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdXNlU1REM1J1bGVzKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkZChzZWxmOjpVU0VfU1REM19SVUxFUyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHByb2hpYml0U1REM1J1bGVzKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbW92ZShzZWxmOjpVU0VfU1REM19SVUxFUyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrQmlkaSgpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGQoc2VsZjo6Q0hFQ0tfQklESSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlnbm9yZUJpZGkoKTogc2VsZgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVtb3ZlKHNlbGY6OkNIRUNLX0JJREkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0NvbnRleHRKKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkZChzZWxmOjpDSEVDS19DT05URVhUSik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlnbm9yZUNvbnRleHRKKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbW92ZShzZWxmOjpDSEVDS19DT05URVhUSik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrQ29udGV4dE8oKTogc2VsZgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRkKHNlbGY6OkNIRUNLX0NPTlRFWFRPKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaWdub3JlQ29udGV4dE8oKTogc2VsZgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVtb3ZlKHNlbGY6OkNIRUNLX0NPTlRFWFRPKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbm9uVHJhbnNpdGlvbmFsVG9Bc2NpaSgpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGQoc2VsZjo6Tk9OVFJBTlNJVElPTkFMX1RPX0FTQ0lJKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdHJhbnNpdGlvbmFsVG9Bc2NpaSgpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW1vdmUoc2VsZjo6Tk9OVFJBTlNJVElPTkFMX1RPX0FTQ0lJKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbm9uVHJhbnNpdGlvbmFsVG9Vbmljb2RlKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkZChzZWxmOjpOT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRyYW5zaXRpb25hbFRvVW5pY29kZSgpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW1vdmUoc2VsZjo6Tk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoT3B0aW9ufGludHxudWxsICRvcHRpb24gPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICBudWxsID09PSAkb3B0aW9uID0+ICR0aGlzLAogICAgICAgICAgICAkb3B0aW9uIGluc3RhbmNlb2Ygc2VsZiA9PiBzZWxmOjpuZXcoJHRoaXMtPnZhbHVlIHwgJG9wdGlvbi0+dmFsdWUpLAogICAgICAgICAgICBkZWZhdWx0ID0+IHNlbGY6Om5ldygkdGhpcy0+dmFsdWUgfCAkb3B0aW9uKSwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmUoT3B0aW9ufGludHxudWxsICRvcHRpb24gPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICBudWxsID09PSAkb3B0aW9uID0+ICR0aGlzLAogICAgICAgICAgICAkb3B0aW9uIGluc3RhbmNlb2Ygc2VsZiA9PiBzZWxmOjpuZXcoJHRoaXMtPnZhbHVlICYgfiRvcHRpb24tPnZhbHVlKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBzZWxmOjpuZXcoJHRoaXMtPnZhbHVlICYgfiRvcHRpb24pLAogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/Idna/Result.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSWRuYTsKCi8qKgogKiBAc2VlIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS1kb2NzL2FwaWRvYy9yZWxlYXNlZC9pY3U0Yy91aWRuYV84aC5odG1sCiAqLwpmaW5hbCBjbGFzcyBSZXN1bHQKewogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkZG9tYWluLAogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkaXNUcmFuc2l0aW9uYWxEaWZmZXJlbnQsCiAgICAgICAgLyoqIEB2YXIgYXJyYXk8RXJyb3I+ICovCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkZXJyb3JzCiAgICApIHsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheXtyZXN1bHQ6c3RyaW5nLCBpc1RyYW5zaXRpb25hbERpZmZlcmVudDpib29sLCBlcnJvcnM6aW50fSAkaW5mb3MKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tSW50bChhcnJheSAkaW5mb3MpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRpbmZvc1sncmVzdWx0J10sICRpbmZvc1snaXNUcmFuc2l0aW9uYWxEaWZmZXJlbnQnXSwgRXJyb3I6OmZpbHRlckJ5RXJyb3JCeXRlcygkaW5mb3NbJ2Vycm9ycyddKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRvbWFpbigpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRvbWFpbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNUcmFuc2l0aW9uYWxEaWZmZXJlbnQoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNUcmFuc2l0aW9uYWxEaWZmZXJlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PEVycm9yPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXJyb3JzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lcnJvcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0Vycm9ycygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIFtdICE9PSAkdGhpcy0+ZXJyb3JzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNFcnJvcihFcnJvciAkZXJyb3IpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGluX2FycmF5KCRlcnJvciwgJHRoaXMtPmVycm9ycywgdHJ1ZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/IPv4/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/IPv4/BCMathCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSVB2NDsKCnVzZSBmdW5jdGlvbiBiY2FkZDsKdXNlIGZ1bmN0aW9uIGJjY29tcDsKdXNlIGZ1bmN0aW9uIGJjZGl2Owp1c2UgZnVuY3Rpb24gYmNtb2Q7CnVzZSBmdW5jdGlvbiBiY211bDsKdXNlIGZ1bmN0aW9uIGJjcG93Owp1c2UgZnVuY3Rpb24gYmNzdWI7CnVzZSBmdW5jdGlvbiBzdHJfc3BsaXQ7CgpmaW5hbCBjbGFzcyBCQ01hdGhDYWxjdWxhdG9yIGltcGxlbWVudHMgQ2FsY3VsYXRvcgp7CiAgICBwcml2YXRlIGNvbnN0IFNDQUxFID0gMDsKICAgIHByaXZhdGUgY29uc3QgQ09OVkVSU0lPTl9UQUJMRSA9IFsKICAgICAgICAnMCcgPT4gJzAnLCAnMScgPT4gJzEnLCAnMicgPT4gJzInLCAnMycgPT4gJzMnLAogICAgICAgICc0JyA9PiAnNCcsICc1JyA9PiAnNScsICc2JyA9PiAnNicsICc3JyA9PiAnNycsCiAgICAgICAgJzgnID0+ICc4JywgJzknID0+ICc5JywgJ2EnID0+ICcxMCcsICdiJyA9PiAnMTEnLAogICAgICAgICdjJyA9PiAnMTInLCAnZCcgPT4gJzEzJywgJ2UnID0+ICcxNCcsICdmJyA9PiAnMTUnLAogICAgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gYmFzZUNvbnZlcnQobWl4ZWQgJHZhbHVlLCBpbnQgJGJhc2UpOiBzdHJpbmcKICAgIHsKICAgICAgICAkdmFsdWUgPSAoc3RyaW5nKSAkdmFsdWU7CiAgICAgICAgaWYgKDEwID09PSAkYmFzZSkgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgJGJhc2UgPSAoc3RyaW5nKSAkYmFzZTsKICAgICAgICAkZGVjaW1hbCA9ICcwJzsKICAgICAgICBmb3JlYWNoIChzdHJfc3BsaXQoJHZhbHVlKSBhcyAkY2hhcikgewogICAgICAgICAgICAkZGVjaW1hbCA9IGJjYWRkKCR0aGlzLT5tdWx0aXBseSgkZGVjaW1hbCwgJGJhc2UpLCBzZWxmOjpDT05WRVJTSU9OX1RBQkxFWyRjaGFyXSwgc2VsZjo6U0NBTEUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRkZWNpbWFsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwb3cobWl4ZWQgJHZhbHVlLCBpbnQgJGV4cG9uZW50KTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIGJjcG93KChzdHJpbmcpICR2YWx1ZSwgKHN0cmluZykgJGV4cG9uZW50LCBzZWxmOjpTQ0FMRSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMik6IGludAogICAgewogICAgICAgIHJldHVybiBiY2NvbXAoKHN0cmluZykgJHZhbHVlMSwgKHN0cmluZykgJHZhbHVlMiwgc2VsZjo6U0NBTEUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtdWx0aXBseShtaXhlZCAkdmFsdWUxLCBtaXhlZCAkdmFsdWUyKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIGJjbXVsKChzdHJpbmcpICR2YWx1ZTEsIChzdHJpbmcpICR2YWx1ZTIsIHNlbGY6OlNDQUxFKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2KG1peGVkICR2YWx1ZSwgbWl4ZWQgJGJhc2UpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gYmNkaXYoKHN0cmluZykgJHZhbHVlLCAoc3RyaW5nKSAkYmFzZSwgc2VsZjo6U0NBTEUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtb2QobWl4ZWQgJHZhbHVlLCBtaXhlZCAkYmFzZSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBiY21vZCgoc3RyaW5nKSAkdmFsdWUsIChzdHJpbmcpICRiYXNlLCBzZWxmOjpTQ0FMRSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZChtaXhlZCAkdmFsdWUxLCBtaXhlZCAkdmFsdWUyKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIGJjYWRkKChzdHJpbmcpICR2YWx1ZTEsIChzdHJpbmcpICR2YWx1ZTIsIHNlbGY6OlNDQUxFKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKG1peGVkICR2YWx1ZTEsIG1peGVkICR2YWx1ZTIpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gYmNzdWIoKHN0cmluZykgJHZhbHVlMSwgKHN0cmluZykgJHZhbHVlMiwgc2VsZjo6U0NBTEUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/IPv4/Calculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSVB2NDsKCmludGVyZmFjZSBDYWxjdWxhdG9yCnsKICAgIC8qKgogICAgICogQWRkIG51bWJlcnMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZTEgYSBudW1iZXIgdGhhdCB3aWxsIGJlIGFkZGVkIHRvICR2YWx1ZTIKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUyIGEgbnVtYmVyIHRoYXQgd2lsbCBiZSBhZGRlZCB0byAkdmFsdWUxCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZCB0aGUgYWRkaXRpb24gcmVzdWx0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMik7CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBvbmUgbnVtYmVyIGZyb20gYW5vdGhlci4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlMSBhIG51bWJlciB0aGF0IHdpbGwgYmUgc3VidHJhY3RlZCBvZiAkdmFsdWUyCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlMiBhIG51bWJlciB0aGF0IHdpbGwgYmUgc3VidHJhY3RlZCB0byAkdmFsdWUxCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZCB0aGUgc3VidHJhY3Rpb24gcmVzdWx0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdWIobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMik7CgogICAgLyoqCiAgICAgKiBNdWx0aXBseSBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUxIGEgbnVtYmVyIHRoYXQgd2lsbCBiZSBtdWx0aXBsaWVkIGJ5ICR2YWx1ZTIKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUyIGEgbnVtYmVyIHRoYXQgd2lsbCBiZSBtdWx0aXBsaWVkIGJ5ICR2YWx1ZTEKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkIHRoZSBtdWx0aXBsaWNhdGlvbiByZXN1bHQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bHRpcGx5KG1peGVkICR2YWx1ZTEsIG1peGVkICR2YWx1ZTIpOwoKICAgIC8qKgogICAgICogRGl2aWRlIG51bWJlcnMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBUaGUgbnVtYmVyIGJlaW5nIGRpdmlkZWQuCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGJhc2UgVGhlIG51bWJlciB0aGF0ICR2YWx1ZSBpcyBiZWluZyBkaXZpZGVkIGJ5LgogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQgdGhlIHJlc3VsdCBvZiB0aGUgZGl2aXNpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpdihtaXhlZCAkdmFsdWUsIG1peGVkICRiYXNlKTsKCiAgICAvKioKICAgICAqIFJhaXNlIGFuIG51bWJlciB0byB0aGUgcG93ZXIgb2YgZXhwb25lbnQuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBzY2FsYXIsIHRoZSBiYXNlIHRvIHVzZQogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQgdGhlIHZhbHVlIHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgZXhwLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93KG1peGVkICR2YWx1ZSwgaW50ICRleHBvbmVudCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBpbnQgcG9pbnQgcmVtYWluZGVyIChtb2R1bG8pIG9mIHRoZSBkaXZpc2lvbiBvZiB0aGUgYXJndW1lbnRzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgVGhlIGRpdmlkZW5kCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGJhc2UgVGhlIGRpdmlzb3IKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkIHRoZSByZW1haW5kZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZChtaXhlZCAkdmFsdWUsIG1peGVkICRiYXNlKTsKCiAgICAvKioKICAgICAqIE51bWJlciBjb21wYXJpc29uLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUxIHRoZSBmaXJzdCB2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZTIgdGhlIHNlY29uZCB2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgPCAwIGlmIHZhbHVlMSBpcyBsZXNzIHRoYW4gdmFsdWUyOyA+IDAgaWYgdmFsdWUxIGlzIGdyZWF0ZXIgdGhhbiB2YWx1ZTIsIGFuZCAwIGlmIHRoZXkgYXJlIGVxdWFsLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGFyZShtaXhlZCAkdmFsdWUxLCBtaXhlZCAkdmFsdWUyKTogaW50OwoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWNpbWFsIGludGVnZXIgdmFsdWUgb2YgYSB2YXJpYWJsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIFRoZSBzY2FsYXIgdmFsdWUgYmVpbmcgY29udmVydGVkIHRvIGFuIGludGVnZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkIHRoZSBpbnRlZ2VyIHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiYXNlQ29udmVydChtaXhlZCAkdmFsdWUsIGludCAkYmFzZSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/IPv4/Converter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSVB2NDsKCnVzZSBCYWNrZWRFbnVtOwp1c2UgTGVhZ3VlXFVyaVxFeGNlcHRpb25zXE1pc3NpbmdGZWF0dXJlOwp1c2UgTGVhZ3VlXFVyaVxGZWF0dXJlRGV0ZWN0aW9uOwp1c2UgU3RyaW5nYWJsZTsKCnVzZSBmdW5jdGlvbiBhcnJheV9wb3A7CnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIGZ1bmN0aW9uIGV4cGxvZGU7CnVzZSBmdW5jdGlvbiBleHRlbnNpb25fbG9hZGVkOwp1c2UgZnVuY3Rpb24gaGV4ZGVjOwp1c2UgZnVuY3Rpb24gbG9uZzJpcDsKdXNlIGZ1bmN0aW9uIGx0cmltOwp1c2UgZnVuY3Rpb24gcHJlZ19tYXRjaDsKdXNlIGZ1bmN0aW9uIHN0cl9lbmRzX3dpdGg7CnVzZSBmdW5jdGlvbiBzdWJzdHI7Cgp1c2UgY29uc3QgRklMVEVSX0ZMQUdfSVBWNDsKdXNlIGNvbnN0IEZJTFRFUl9GTEFHX0lQVjY7CnVzZSBjb25zdCBGSUxURVJfVkFMSURBVEVfSVA7CgpmaW5hbCBjbGFzcyBDb252ZXJ0ZXIKewogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfSVBWNF9IT1NUID0gJy8KICAgICAgICAoPyhERUZJTkUpICMgLiBpcyBtaXNzaW5nIGFzIGl0IGlzIHVzZWQgdG8gc2VwYXJhdGUgbGFiZWxzCiAgICAgICAgICAgICg/PGhleGFkZWNpbWFsPjB4W1s6eGRpZ2l0Ol1dKikKICAgICAgICAgICAgKD88b2N0YWw+MFswLTddKikKICAgICAgICAgICAgKD88ZGVjaW1hbD5cZCspCiAgICAgICAgICAgICg/PGlwdjRfcGFydD4oPzooPyZoZXhhZGVjaW1hbCl8KD8mb2N0YWwpfCg/JmRlY2ltYWwpKSopCiAgICAgICAgKQogICAgICAgIF4oPzooPyZpcHY0X3BhcnQpXC4pezAsM30oPyZpcHY0X3BhcnQpXC4/JAogICAgL3gnOwogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfSVBWNF9OVU1CRVJfUEVSX0JBU0UgPSBbCiAgICAgICAgJy9eMHgoPzxudW1iZXI+W1s6eGRpZ2l0Ol1dKikkLycgPT4gMTYsCiAgICAgICAgJy9eMCg/PG51bWJlcj5bMC03XSopJC8nID0+IDgsCiAgICAgICAgJy9eKD88bnVtYmVyPlxkKykkLycgPT4gMTAsCiAgICBdOwoKICAgIHByaXZhdGUgY29uc3QgSVBWNl82VE80X1BSRUZJWCA9ICcyMDAyOic7CiAgICBwcml2YXRlIGNvbnN0IElQVjRfTUFQUEVEX1BSRUZJWCA9ICc6OmZmZmY6JzsKCiAgICBwcml2YXRlIHJlYWRvbmx5IG1peGVkICRtYXhJUHY0TnVtYmVyOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IENhbGN1bGF0b3IgJGNhbGN1bGF0b3IKICAgICkgewogICAgICAgICR0aGlzLT5tYXhJUHY0TnVtYmVyID0gJGNhbGN1bGF0b3ItPnN1YigkY2FsY3VsYXRvci0+cG93KDIsIDMyKSwgMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIHVzaW5nIGEgR01QIGNhbGN1bGF0b3IuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUdNUCgpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKG5ldyBHTVBDYWxjdWxhdG9yKCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB1c2luZyBhIEJjbWF0aCBjYWxjdWxhdG9yLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CQ01hdGgoKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZihuZXcgQkNNYXRoQ2FsY3VsYXRvcigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2UgdXNpbmcgYSBQSFAgbmF0aXZlIGNhbGN1bGF0b3IgKHJlcXVpcmVzIDY0Yml0cyBQSFApLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21OYXRpdmUoKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZihuZXcgTmF0aXZlQ2FsY3VsYXRvcigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2UgdXNpbmcgYSBkZXRlY3RlZCBjYWxjdWxhdG9yIGRlcGVuZGluZyBvbiB0aGUgUEhQIGVudmlyb25tZW50LgogICAgICoKICAgICAqIEB0aHJvd3MgTWlzc2luZ0ZlYXR1cmUgSWYgbm8gQ2FsY3VsYXRvciBpbXBsZW1lbnRpbmcgb2JqZWN0IGNhbiBiZSB1c2VkIG9uIHRoZSBwbGF0Zm9ybQogICAgICoKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tRW52aXJvbm1lbnQoKTogc2VsZgogICAgewogICAgICAgIEZlYXR1cmVEZXRlY3Rpb246OnN1cHBvcnRzSVB2NENvbnZlcnNpb24oKTsKCiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgIGV4dGVuc2lvbl9sb2FkZWQoJ2dtcCcpID0+IHNlbGY6OmZyb21HTVAoKSwKICAgICAgICAgICAgZXh0ZW5zaW9uX2xvYWRlZCgnYmNtYXRoJykgPT4gc2VsZjo6ZnJvbUJDTWF0aCgpLAogICAgICAgICAgICBkZWZhdWx0ID0+IHNlbGY6OmZyb21OYXRpdmUoKSwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0lwdjQoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogYm9vbAogICAgewogICAgICAgIGlmICgkaG9zdCBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJGhvc3QgPSAoc3RyaW5nKSAkaG9zdC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCA9PT0gJGhvc3QpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT50b0RlY2ltYWwoJGhvc3QpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJGhvc3QgPSAoc3RyaW5nKSAkaG9zdDsKICAgICAgICBpZiAoZmFsc2UgPT09IGZpbHRlcl92YXIoJGhvc3QsIEZJTFRFUl9WQUxJREFURV9JUCwgRklMVEVSX0ZMQUdfSVBWNikpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJGlwQWRkcmVzcyA9IHN0cnRvbG93ZXIoKHN0cmluZykgaW5ldF9udG9wKChzdHJpbmcpIGluZXRfcHRvbigkaG9zdCkpKTsKICAgICAgICBpZiAoc3RyX3N0YXJ0c193aXRoKCRpcEFkZHJlc3MsIHNlbGY6OklQVjRfTUFQUEVEX1BSRUZJWCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlICE9PSBmaWx0ZXJfdmFyKHN1YnN0cigkaXBBZGRyZXNzLCA3KSwgRklMVEVSX1ZBTElEQVRFX0lQLCBGSUxURVJfRkxBR19JUFY0KTsKICAgICAgICB9CgogICAgICAgIGlmICghc3RyX3N0YXJ0c193aXRoKCRpcEFkZHJlc3MsIHNlbGY6OklQVjZfNlRPNF9QUkVGSVgpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRoZXhQYXJ0cyA9IGV4cGxvZGUoJzonLCBzdWJzdHIoJGlwQWRkcmVzcywgNSwgOSkpOwogICAgICAgIGlmIChjb3VudCgkaGV4UGFydHMpIDwgMikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkaXBBZGRyZXNzID0gbG9uZzJpcCgoaW50KSBoZXhkZWMoJGhleFBhcnRzWzBdKSAqIDY1NTM2ICsgKGludCkgaGV4ZGVjKCRoZXhQYXJ0c1sxXSkpOwoKICAgICAgICByZXR1cm4gJycgIT09ICcnLiRpcEFkZHJlc3M7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvSVB2NlVzaW5nNnRvNChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJGhvc3QgPSAkdGhpcy0+dG9EZWNpbWFsKCRob3N0KTsKICAgICAgICBpZiAobnVsbCA9PT0gJGhvc3QpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBhcnJheTxzdHJpbmc+ICRwYXJ0cyAqLwogICAgICAgICRwYXJ0cyA9IGFycmF5X21hcCgKICAgICAgICAgICAgZm4gKHN0cmluZyAkcGFydCk6IHN0cmluZyA9PiBzcHJpbnRmKCclMDJ4JywgJHBhcnQpLAogICAgICAgICAgICBleHBsb2RlKCcuJywgJGhvc3QpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICdbJy5zZWxmOjpJUFY2XzZUTzRfUFJFRklYLiRwYXJ0c1swXS4kcGFydHNbMV0uJzonLiRwYXJ0c1syXS4kcGFydHNbM10uJzo6XSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvSVB2NlVzaW5nTWFwcGluZyhCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJGhvc3QgPSAkdGhpcy0+dG9EZWNpbWFsKCRob3N0KTsKICAgICAgICBpZiAobnVsbCA9PT0gJGhvc3QpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ1snLnNlbGY6OklQVjRfTUFQUEVEX1BSRUZJWC4kaG9zdC4nXSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvT2N0YWwoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogP3N0cmluZwogICAgewogICAgICAgICRob3N0ID0gJHRoaXMtPnRvRGVjaW1hbCgkaG9zdCk7CgogICAgICAgIHJldHVybiBtYXRjaCAobnVsbCkgewogICAgICAgICAgICAkaG9zdCA9PiBudWxsLAogICAgICAgICAgICBkZWZhdWx0ID0+IGltcGxvZGUoJy4nLCBhcnJheV9tYXAoCiAgICAgICAgICAgICAgICBmbiAoJHZhbHVlKSA9PiBzdHJfcGFkKGRlY29jdCgoaW50KSAkdmFsdWUpLCA0LCAnMCcsIFNUUl9QQURfTEVGVCksCiAgICAgICAgICAgICAgICBleHBsb2RlKCcuJywgJGhvc3QpCiAgICAgICAgICAgICkpLAogICAgICAgIH07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvSGV4YWRlY2ltYWwoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogP3N0cmluZwogICAgewogICAgICAgICRob3N0ID0gJHRoaXMtPnRvRGVjaW1hbCgkaG9zdCk7CgogICAgICAgIHJldHVybiBtYXRjaCAobnVsbCkgewogICAgICAgICAgICAkaG9zdCA9PiBudWxsLAogICAgICAgICAgICBkZWZhdWx0ID0+ICcweCcuaW1wbG9kZSgnJywgYXJyYXlfbWFwKAogICAgICAgICAgICAgICAgZm4gKCR2YWx1ZSkgPT4gZGVjaGV4KChpbnQpICR2YWx1ZSksCiAgICAgICAgICAgICAgICBleHBsb2RlKCcuJywgJGhvc3QpCiAgICAgICAgICAgICkpLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmllcyB0byBjb252ZXJ0IGEgSVB2NCBoZXhhZGVjaW1hbCBvciBhIElQdjQgb2N0YWwgbm90YXRpb24gaW50byBhIElQdjQgZG90LWRlY2ltYWwgbm90YXRpb24gaWYgcG9zc2libGUKICAgICAqIG90aGVyd2lzZSByZXR1cm5zIG51bGwuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaXB2NC1wYXJzZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvRGVjaW1hbChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRob3N0IGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkaG9zdCA9ICRob3N0LT52YWx1ZTsKICAgICAgICB9CgogICAgICAgICRob3N0ID0gKHN0cmluZykgJGhvc3Q7CiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkaG9zdCwgJ1snKSAmJiBzdHJfZW5kc193aXRoKCRob3N0LCAnXScpKSB7CiAgICAgICAgICAgICRob3N0ID0gc3Vic3RyKCRob3N0LCAxLCAtMSk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gZmlsdGVyX3ZhcigkaG9zdCwgRklMVEVSX1ZBTElEQVRFX0lQLCBGSUxURVJfRkxBR19JUFY2KSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRpcEFkZHJlc3MgPSBzdHJ0b2xvd2VyKChzdHJpbmcpIGluZXRfbnRvcCgoc3RyaW5nKSBpbmV0X3B0b24oJGhvc3QpKSk7CiAgICAgICAgICAgIGlmIChzdHJfc3RhcnRzX3dpdGgoJGlwQWRkcmVzcywgc2VsZjo6SVBWNF9NQVBQRURfUFJFRklYKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkaXBBZGRyZXNzLCA3KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFzdHJfc3RhcnRzX3dpdGgoJGlwQWRkcmVzcywgc2VsZjo6SVBWNl82VE80X1BSRUZJWCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaGV4UGFydHMgPSBleHBsb2RlKCc6Jywgc3Vic3RyKCRpcEFkZHJlc3MsIDUsIDkpKTsKCiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgY291bnQoJGhleFBhcnRzKSA8IDIgPT4gbnVsbCwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gbG9uZzJpcCgoaW50KSBoZXhkZWMoJGhleFBhcnRzWzBdKSAqIDY1NTM2ICsgKGludCkgaGV4ZGVjKCRoZXhQYXJ0c1sxXSkpLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKDEgIT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX0lQVjRfSE9TVCwgJGhvc3QpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cl9lbmRzX3dpdGgoJGhvc3QsICcuJykpIHsKICAgICAgICAgICAgJGhvc3QgPSBzdWJzdHIoJGhvc3QsIDAsIC0xKTsKICAgICAgICB9CgogICAgICAgICRudW1iZXJzID0gW107CiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLicsICRob3N0KSBhcyAkbGFiZWwpIHsKICAgICAgICAgICAgJG51bWJlciA9ICR0aGlzLT5sYWJlbFRvTnVtYmVyKCRsYWJlbCk7CiAgICAgICAgICAgIGlmIChudWxsID09PSAkbnVtYmVyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG51bWJlcnNbXSA9ICRudW1iZXI7CiAgICAgICAgfQoKICAgICAgICAkaXB2NCA9IGFycmF5X3BvcCgkbnVtYmVycyk7CiAgICAgICAgJG1heCA9ICR0aGlzLT5jYWxjdWxhdG9yLT5wb3coMjU2LCA2IC0gY291bnQoJG51bWJlcnMpKTsKICAgICAgICBpZiAoJHRoaXMtPmNhbGN1bGF0b3ItPmNvbXBhcmUoJGlwdjQsICRtYXgpID4gMCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRudW1iZXJzIGFzICRvZmZzZXQgPT4gJG51bWJlcikgewogICAgICAgICAgICBpZiAoJHRoaXMtPmNhbGN1bGF0b3ItPmNvbXBhcmUoJG51bWJlciwgMjU1KSA+IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaXB2NCA9ICR0aGlzLT5jYWxjdWxhdG9yLT5hZGQoJGlwdjQsICR0aGlzLT5jYWxjdWxhdG9yLT5tdWx0aXBseSgKICAgICAgICAgICAgICAgICRudW1iZXIsCiAgICAgICAgICAgICAgICAkdGhpcy0+Y2FsY3VsYXRvci0+cG93KDI1NiwgMyAtICRvZmZzZXQpCiAgICAgICAgICAgICkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5sb25nMklwKCRpcHY0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgZG9tYWluIGxhYmVsIGludG8gYSBJUHY0IGludGVnZXIgcGFydC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaXB2NC1udW1iZXItcGFyc2VyCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZCByZXR1cm5zIG51bGwgaWYgaXQgY2Fubm90IGNvcnJlY3RseSBjb252ZXJ0IHRoZSBsYWJlbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxhYmVsVG9OdW1iZXIoc3RyaW5nICRsYWJlbCk6IG1peGVkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoc2VsZjo6UkVHRVhQX0lQVjRfTlVNQkVSX1BFUl9CQVNFIGFzICRyZWdleHAgPT4gJGJhc2UpIHsKICAgICAgICAgICAgaWYgKDEgIT09IHByZWdfbWF0Y2goJHJlZ2V4cCwgJGxhYmVsLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbnVtYmVyID0gbHRyaW0oJG1hdGNoZXNbJ251bWJlciddLCAnMCcpOwogICAgICAgICAgICBpZiAoJycgPT09ICRudW1iZXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbnVtYmVyID0gJHRoaXMtPmNhbGN1bGF0b3ItPmJhc2VDb252ZXJ0KCRudW1iZXIsICRiYXNlKTsKICAgICAgICAgICAgaWYgKDAgPD0gJHRoaXMtPmNhbGN1bGF0b3ItPmNvbXBhcmUoJG51bWJlciwgMCkgJiYgMCA+PSAkdGhpcy0+Y2FsY3VsYXRvci0+Y29tcGFyZSgkbnVtYmVyLCAkdGhpcy0+bWF4SVB2NE51bWJlcikpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlcyB0aGUgZG90LWRlY2ltYWwgbm90YXRpb24gZm9yIElQdjQuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaXB2NC1wYXJzZXIKICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGlwQWRkcmVzcyB0aGUgbnVtYmVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBJUFY0YWRkcmVzcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvbmcySXAobWl4ZWQgJGlwQWRkcmVzcyk6IHN0cmluZwogICAgewogICAgICAgICRvdXRwdXQgPSAnJzsKICAgICAgICBmb3IgKCRvZmZzZXQgPSAwOyAkb2Zmc2V0IDwgNDsgJG9mZnNldCsrKSB7CiAgICAgICAgICAgICRvdXRwdXQgPSAkdGhpcy0+Y2FsY3VsYXRvci0+bW9kKCRpcEFkZHJlc3MsIDI1NikuJG91dHB1dDsKICAgICAgICAgICAgaWYgKCRvZmZzZXQgPCAzKSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gJy4nLiRvdXRwdXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGlwQWRkcmVzcyA9ICR0aGlzLT5jYWxjdWxhdG9yLT5kaXYoJGlwQWRkcmVzcywgMjU2KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb3V0cHV0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/IPv4/GMPCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSVB2NDsKCnVzZSBHTVA7Cgp1c2UgZnVuY3Rpb24gZ21wX2FkZDsKdXNlIGZ1bmN0aW9uIGdtcF9jbXA7CnVzZSBmdW5jdGlvbiBnbXBfZGl2X3E7CnVzZSBmdW5jdGlvbiBnbXBfaW5pdDsKdXNlIGZ1bmN0aW9uIGdtcF9tb2Q7CnVzZSBmdW5jdGlvbiBnbXBfbXVsOwp1c2UgZnVuY3Rpb24gZ21wX3BvdzsKdXNlIGZ1bmN0aW9uIGdtcF9zdWI7Cgp1c2UgY29uc3QgR01QX1JPVU5EX01JTlVTSU5GOwoKZmluYWwgY2xhc3MgR01QQ2FsY3VsYXRvciBpbXBsZW1lbnRzIENhbGN1bGF0b3IKewogICAgcHVibGljIGZ1bmN0aW9uIGJhc2VDb252ZXJ0KG1peGVkICR2YWx1ZSwgaW50ICRiYXNlKTogR01QCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9pbml0KCR2YWx1ZSwgJGJhc2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwb3cobWl4ZWQgJHZhbHVlLCBpbnQgJGV4cG9uZW50KTogR01QCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9wb3coJHZhbHVlLCAkZXhwb25lbnQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKG1peGVkICR2YWx1ZTEsIG1peGVkICR2YWx1ZTIpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gZ21wX2NtcCgkdmFsdWUxLCAkdmFsdWUyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsdGlwbHkobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMik6IEdNUAogICAgewogICAgICAgIHJldHVybiBnbXBfbXVsKCR2YWx1ZTEsICR2YWx1ZTIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkaXYobWl4ZWQgJHZhbHVlLCBtaXhlZCAkYmFzZSk6IEdNUAogICAgewogICAgICAgIHJldHVybiBnbXBfZGl2X3EoJHZhbHVlLCAkYmFzZSwgR01QX1JPVU5EX01JTlVTSU5GKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGJhc2UpOiBHTVAKICAgIHsKICAgICAgICByZXR1cm4gZ21wX21vZCgkdmFsdWUsICRiYXNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKG1peGVkICR2YWx1ZTEsIG1peGVkICR2YWx1ZTIpOiBHTVAKICAgIHsKICAgICAgICByZXR1cm4gZ21wX2FkZCgkdmFsdWUxLCAkdmFsdWUyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKG1peGVkICR2YWx1ZTEsIG1peGVkICR2YWx1ZTIpOiBHTVAKICAgIHsKICAgICAgICByZXR1cm4gZ21wX3N1YigkdmFsdWUxLCAkdmFsdWUyKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/IPv4/NativeCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSVB2NDsKCnVzZSBmdW5jdGlvbiBmbG9vcjsKdXNlIGZ1bmN0aW9uIGludHZhbDsKCmZpbmFsIGNsYXNzIE5hdGl2ZUNhbGN1bGF0b3IgaW1wbGVtZW50cyBDYWxjdWxhdG9yCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBiYXNlQ29udmVydChtaXhlZCAkdmFsdWUsIGludCAkYmFzZSk6IGludAogICAgewogICAgICAgIHJldHVybiBpbnR2YWwoKHN0cmluZykgJHZhbHVlLCAkYmFzZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHBvdyhtaXhlZCAkdmFsdWUsIGludCAkZXhwb25lbnQpCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZSAqKiAkZXhwb25lbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMik6IGludAogICAgewogICAgICAgIHJldHVybiAkdmFsdWUxIDw9PiAkdmFsdWUyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtdWx0aXBseShtaXhlZCAkdmFsdWUxLCBtaXhlZCAkdmFsdWUyKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZTEgKiAkdmFsdWUyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkaXYobWl4ZWQgJHZhbHVlLCBtaXhlZCAkYmFzZSk6IGludAogICAgewogICAgICAgIHJldHVybiAoaW50KSBmbG9vcigkdmFsdWUgLyAkYmFzZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1vZChtaXhlZCAkdmFsdWUsIG1peGVkICRiYXNlKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZSAlICRiYXNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMik6IGludAogICAgewogICAgICAgIHJldHVybiAkdmFsdWUxICsgJHZhbHVlMjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKG1peGVkICR2YWx1ZTEsIG1peGVkICR2YWx1ZTIpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHZhbHVlMSAtICR2YWx1ZTI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/IPv6/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/IPv6/Converter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcSVB2NjsKCnVzZSBCYWNrZWRFbnVtOwp1c2UgU3RyaW5nYWJsZTsKdXNlIFZhbHVlRXJyb3I7Cgp1c2UgZnVuY3Rpb24gZmlsdGVyX3ZhcjsKdXNlIGZ1bmN0aW9uIGltcGxvZGU7CnVzZSBmdW5jdGlvbiBpbmV0X3B0b247CnVzZSBmdW5jdGlvbiBzdHJfc3BsaXQ7CnVzZSBmdW5jdGlvbiBzdHJ0b2xvd2VyOwp1c2UgZnVuY3Rpb24gdW5wYWNrOwoKdXNlIGNvbnN0IEZJTFRFUl9GTEFHX0lQVjY7CnVzZSBjb25zdCBGSUxURVJfVkFMSURBVEVfSVA7CgpmaW5hbCBjbGFzcyBDb252ZXJ0ZXIKewogICAgLyoqCiAgICAgKiBTaWduaWZpY2FudCAxMCBiaXRzIG9mIElQIHRvIGRldGVjdCBab25lIElEIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgSE9TVF9BRERSRVNTX0JMT0NLID0gIlx4ZmVceDgwIjsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbXByZXNzSXAoQmFja2VkRW51bXxzdHJpbmcgJGlwQWRkcmVzcyk6IHN0cmluZwogICAgewogICAgICAgIGlmICgkaXBBZGRyZXNzIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkaXBBZGRyZXNzID0gKHN0cmluZykgJGlwQWRkcmVzcy0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF0Y2ggKGZpbHRlcl92YXIoJGlwQWRkcmVzcywgRklMVEVSX1ZBTElEQVRFX0lQLCBGSUxURVJfRkxBR19JUFY2KSkgewogICAgICAgICAgICBmYWxzZSA9PiB0aHJvdyBuZXcgVmFsdWVFcnJvcignVGhlIHN1Ym1pdHRlZCBJUCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuJyksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gIHN0cnRvbG93ZXIoKHN0cmluZykgaW5ldF9udG9wKChzdHJpbmcpIGluZXRfcHRvbigkaXBBZGRyZXNzKSkpLAogICAgICAgIH07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHBhbmRJcChCYWNrZWRFbnVtfHN0cmluZyAkaXBBZGRyZXNzKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRpcEFkZHJlc3MgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICRpcEFkZHJlc3MgPSAoc3RyaW5nKSAkaXBBZGRyZXNzLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChmYWxzZSA9PT0gZmlsdGVyX3ZhcigkaXBBZGRyZXNzLCBGSUxURVJfVkFMSURBVEVfSVAsIEZJTFRFUl9GTEFHX0lQVjYpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBWYWx1ZUVycm9yKCdUaGUgc3VibWl0dGVkIElQIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcy4nKTsKICAgICAgICB9CgogICAgICAgICRoZXggPSAoYXJyYXkpIHVucGFjaygnSCpoZXgnLCAoc3RyaW5nKSBpbmV0X3B0b24oJGlwQWRkcmVzcykpOwoKICAgICAgICByZXR1cm4gaW1wbG9kZSgnOicsIHN0cl9zcGxpdChzdHJ0b2xvd2VyKCRoZXhbJ2hleCddID8/ICcnKSwgNCkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29tcHJlc3MoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogP3N0cmluZwogICAgewogICAgICAgICRjb21wb25lbnRzID0gc2VsZjo6cGFyc2UoJGhvc3QpOwogICAgICAgIGlmIChudWxsID09PSAkY29tcG9uZW50c1snaXBBZGRyZXNzJ10pIHsKICAgICAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICBudWxsID09PSAkaG9zdCA9PiAkaG9zdCwKICAgICAgICAgICAgICAgICRob3N0IGluc3RhbmNlb2YgQmFja2VkRW51bSA9PiAoc3RyaW5nKSAkaG9zdC0+dmFsdWUsCiAgICAgICAgICAgICAgICBkZWZhdWx0ID0+IChzdHJpbmcpICRob3N0LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJGNvbXBvbmVudHNbJ2lwQWRkcmVzcyddID0gc2VsZjo6Y29tcHJlc3NJcCgkY29tcG9uZW50c1snaXBBZGRyZXNzJ10pOwoKICAgICAgICByZXR1cm4gc2VsZjo6YnVpbGQoJGNvbXBvbmVudHMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhwYW5kKFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJGNvbXBvbmVudHMgPSBzZWxmOjpwYXJzZSgkaG9zdCk7CiAgICAgICAgaWYgKG51bGwgPT09ICRjb21wb25lbnRzWydpcEFkZHJlc3MnXSkgewogICAgICAgICAgICByZXR1cm4gbWF0Y2ggKCRob3N0KSB7CiAgICAgICAgICAgICAgICBudWxsID0+ICRob3N0LAogICAgICAgICAgICAgICAgZGVmYXVsdCA9PiAoc3RyaW5nKSAkaG9zdCwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRjb21wb25lbnRzWydpcEFkZHJlc3MnXSA9IHNlbGY6OmV4cGFuZElwKCRjb21wb25lbnRzWydpcEFkZHJlc3MnXSk7CgogICAgICAgIHJldHVybiBzZWxmOjpidWlsZCgkY29tcG9uZW50cyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBidWlsZChhcnJheSAkY29tcG9uZW50cyk6IHN0cmluZwogICAgewogICAgICAgICRjb21wb25lbnRzWydpcEFkZHJlc3MnXSA/Pz0gbnVsbDsKICAgICAgICAkY29tcG9uZW50c1snem9uZUlkZW50aWZpZXInXSA/Pz0gbnVsbDsKCiAgICAgICAgaWYgKG51bGwgPT09ICRjb21wb25lbnRzWydpcEFkZHJlc3MnXSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ1snLiRjb21wb25lbnRzWydpcEFkZHJlc3MnXS5tYXRjaCAoJGNvbXBvbmVudHNbJ3pvbmVJZGVudGlmaWVyJ10pIHsKICAgICAgICAgICAgbnVsbCA9PiAnJywKICAgICAgICAgICAgZGVmYXVsdCA9PiAnJScuJGNvbXBvbmVudHNbJ3pvbmVJZGVudGlmaWVyJ10sCiAgICAgICAgfS4nXSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5e2lwQWRkcmVzczpzdHJpbmd8bnVsbCwgem9uZUlkZW50aWZpZXI6c3RyaW5nfG51bGx9CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkaG9zdCk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRob3N0KSB7CiAgICAgICAgICAgIHJldHVybiBbJ2lwQWRkcmVzcycgPT4gbnVsbCwgJ3pvbmVJZGVudGlmaWVyJyA9PiBudWxsXTsKICAgICAgICB9CgogICAgICAgIGlmICgkaG9zdCBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJGhvc3QgPSAkaG9zdC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkaG9zdCA9IChzdHJpbmcpICRob3N0OwogICAgICAgIGlmICgnJyA9PT0gJGhvc3QpIHsKICAgICAgICAgICAgcmV0dXJuIFsnaXBBZGRyZXNzJyA9PiBudWxsLCAnem9uZUlkZW50aWZpZXInID0+IG51bGxdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFzdHJfc3RhcnRzX3dpdGgoJGhvc3QsICdbJykpIHsKICAgICAgICAgICAgcmV0dXJuIFsnaXBBZGRyZXNzJyA9PiBudWxsLCAnem9uZUlkZW50aWZpZXInID0+IG51bGxdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFzdHJfZW5kc193aXRoKCRob3N0LCAnXScpKSB7CiAgICAgICAgICAgIHJldHVybiBbJ2lwQWRkcmVzcycgPT4gbnVsbCwgJ3pvbmVJZGVudGlmaWVyJyA9PiBudWxsXTsKICAgICAgICB9CgogICAgICAgIFskaXB2NiwgJHpvbmVJZGVudGlmaWVyXSA9IGV4cGxvZGUoJyUnLCBzdWJzdHIoJGhvc3QsIDEsIC0xKSwgMikgKyBbMSA9PiBudWxsXTsKICAgICAgICBpZiAoZmFsc2UgPT09IGZpbHRlcl92YXIoJGlwdjYsIEZJTFRFUl9WQUxJREFURV9JUCwgRklMVEVSX0ZMQUdfSVBWNikpIHsKICAgICAgICAgICAgcmV0dXJuIFsnaXBBZGRyZXNzJyA9PiBudWxsLCAnem9uZUlkZW50aWZpZXInID0+IG51bGxdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgIG51bGwgPT09ICR6b25lSWRlbnRpZmllciwKICAgICAgICAgICAgaXNfc3RyaW5nKCRpcHY2KSAmJiBzdHJfc3RhcnRzX3dpdGgoKHN0cmluZylpbmV0X3B0b24oJGlwdjYpLCBzZWxmOjpIT1NUX0FERFJFU1NfQkxPQ0spID0+ICBbJ2lwQWRkcmVzcycgPT4gJGlwdjYsICd6b25lSWRlbnRpZmllcicgPT4gJHpvbmVJZGVudGlmaWVyXSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBbJ2lwQWRkcmVzcycgPT4gbnVsbCwgJ3pvbmVJZGVudGlmaWVyJyA9PiBudWxsXSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgaG9zdCBpcyBhbiBJUHY2LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzSXB2NihCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgIT09IHNlbGY6OnBhcnNlKCRob3N0KVsnaXBBZGRyZXNzJ107CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogP3N0cmluZwogICAgewogICAgICAgIGlmICgkaG9zdCBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJGhvc3QgPSAkaG9zdC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCA9PT0gJGhvc3QgfHwgJycgPT09ICRob3N0KSB7CiAgICAgICAgICAgIHJldHVybiAkaG9zdDsKICAgICAgICB9CgogICAgICAgICRob3N0ID0gKHN0cmluZykgJGhvc3Q7CiAgICAgICAgJGNvbXBvbmVudHMgPSBzZWxmOjpwYXJzZSgkaG9zdCk7CiAgICAgICAgaWYgKG51bGwgPT09ICRjb21wb25lbnRzWydpcEFkZHJlc3MnXSkgewogICAgICAgICAgICByZXR1cm4gc3RydG9sb3dlcigkaG9zdCk7CiAgICAgICAgfQoKICAgICAgICAkY29tcG9uZW50c1snaXBBZGRyZXNzJ10gPSBzdHJ0b2xvd2VyKCRjb21wb25lbnRzWydpcEFkZHJlc3MnXSk7CgogICAgICAgIHJldHVybiBzZWxmOjpidWlsZCgkY29tcG9uZW50cyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/KeyValuePair/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/KeyValuePair/Converter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcS2V5VmFsdWVQYWlyOwoKdXNlIEJhY2tlZEVudW07CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBMZWFndWVcVXJpXFN0cmluZ0NvZXJjaW9uTW9kZTsKdXNlIFN0cmluZ2FibGU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfY29tYmluZTsKdXNlIGZ1bmN0aW9uIGV4cGxvZGU7CnVzZSBmdW5jdGlvbiBpbXBsb2RlOwp1c2UgZnVuY3Rpb24gaXNfc3RyaW5nOwp1c2UgZnVuY3Rpb24gcHJlZ19tYXRjaDsKdXNlIGZ1bmN0aW9uIHN0cl9yZXBsYWNlOwoKdXNlIGNvbnN0IFBIUF9RVUVSWV9SRkMxNzM4Owp1c2UgY29uc3QgUEhQX1FVRVJZX1JGQzM5ODY7CgpmaW5hbCBjbGFzcyBDb252ZXJ0ZXIKewogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfSU5WQUxJRF9DSEFSUyA9ICcvW1x4MDAtXHgxZlx4N2ZdLyc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbm9uLWVtcHR5LXN0cmluZyAkc2VwYXJhdG9yIHRoZSBxdWVyeSBzdHJpbmcgc2VwYXJhdG9yCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nPiAkZnJvbVJmYzM5ODYgY29udGFpbnMgYWxsIHRoZSBSRkMzOTg2IGVuY29kZWQgY2hhcmFjdGVycyB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmc+ICR0b0VuY29kaW5nIGNvbnRhaW5zIGFsbCB0aGUgZXhwZWN0ZWQgZW5jb2RlZCBjaGFyYWN0ZXJzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJHNlcGFyYXRvciwKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRmcm9tUmZjMzk4NiA9IFtdLAogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJHRvRW5jb2RpbmcgPSBbXSwKICAgICkgewogICAgICAgIGlmICgnJyA9PT0gJHRoaXMtPnNlcGFyYXRvcikgewogICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSBzZXBhcmF0b3IgY2hhcmFjdGVyIG11c3QgYmUgYSBub24gZW1wdHkgc3RyaW5nLicpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBub24tZW1wdHktc3RyaW5nICRzZXBhcmF0b3IKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXcoc3RyaW5nICRzZXBhcmF0b3IpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRzZXBhcmF0b3IpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG5vbi1lbXB0eS1zdHJpbmcgJHNlcGFyYXRvcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21SRkMzOTg2KHN0cmluZyAkc2VwYXJhdG9yID0gJyYnKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBzZWxmOjpuZXcoJHNlcGFyYXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbm9uLWVtcHR5LXN0cmluZyAkc2VwYXJhdG9yCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbVJGQzE3Mzgoc3RyaW5nICRzZXBhcmF0b3IgPSAnJicpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om5ldygkc2VwYXJhdG9yKQogICAgICAgICAgICAtPndpdGhFbmNvZGluZ01hcChbJyUyMCcgPT4gJysnXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbm9uLWVtcHR5LXN0cmluZyAkc2VwYXJhdG9yCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21Gb3JtRGF0YShzdHJpbmcgJHNlcGFyYXRvciA9ICcmJyk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6bmV3KCRzZXBhcmF0b3IpCiAgICAgICAgICAgIC0+d2l0aEVuY29kaW5nTWFwKFsnJTIwJyA9PiAnKycsICclMkEnID0+ICcqJ10pOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUVuY29kaW5nVHlwZShpbnQgJGVuY1R5cGUpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkZW5jVHlwZSkgewogICAgICAgICAgICBQSFBfUVVFUllfUkZDMzk4NiA9PiBzZWxmOjpmcm9tUkZDMzk4NigpLAogICAgICAgICAgICBQSFBfUVVFUllfUkZDMTczOCA9PiBzZWxmOjpmcm9tUkZDMTczOCgpLAogICAgICAgICAgICBkZWZhdWx0ID0+IHRocm93IG5ldyBTeW50YXhFcnJvcignVW5rbm93biBvciBVbnN1cHBvcnRlZCBlbmNvZGluZy4nKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBub24tZW1wdHktc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXBhcmF0b3IoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZXBhcmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgc3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5jb2RpbmdNYXAoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfY29tYmluZSgkdGhpcy0+ZnJvbVJmYzM5ODYsICR0aGlzLT50b0VuY29kaW5nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8bm9uLWVtcHR5LWxpc3Q8c3RyaW5nfG51bGw+PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9QYWlycyhCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfGludHxmbG9hdHxib29sfG51bGwgJHZhbHVlKTogYXJyYXkKICAgIHsKICAgICAgICAkdmFsdWUgPSBTdHJpbmdDb2VyY2lvbk1vZGU6Ok5hdGl2ZS0+Y29lcmNlKCR2YWx1ZSk7CiAgICAgICAgaWYgKG51bGwgPT09ICR2YWx1ZSkgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBtYXRjaCAoMSkgewogICAgICAgICAgICBwcmVnX21hdGNoKHNlbGY6OlJFR0VYUF9JTlZBTElEX0NIQVJTLCAkdmFsdWUpID0+IHRocm93IG5ldyBTeW50YXhFcnJvcignSW52YWxpZCBxdWVyeSBzdHJpbmc6IGAnLiR2YWx1ZS4nYC4nKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBzdHJfcmVwbGFjZSgkdGhpcy0+dG9FbmNvZGluZywgJHRoaXMtPmZyb21SZmMzOTg2LCAkdmFsdWUpLAogICAgICAgIH07CgogICAgICAgIHJldHVybiBhcnJheV9tYXAoCiAgICAgICAgICAgIGZuIChzdHJpbmcgJHBhaXIpOiBhcnJheSA9PiBleHBsb2RlKCc9JywgJHBhaXIsIDIpICsgWzEgPT4gbnVsbF0sCiAgICAgICAgICAgIGV4cGxvZGUoJHRoaXMtPnNlcGFyYXRvciwgJHZhbHVlKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaXRlcmFibGU8YXJyYXl7MDpzdHJpbmd8bnVsbCwgMTpCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfGJvb2x8aW50fGZsb2F0fG51bGx9PiAkcGFpcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvVmFsdWUoaXRlcmFibGUgJHBhaXJzKTogP3N0cmluZwogICAgewogICAgICAgICRmaWx0ZXJlZFBhaXJzID0gW107CiAgICAgICAgZm9yZWFjaCAoJHBhaXJzIGFzICRwYWlyKSB7CiAgICAgICAgICAgICRmaWx0ZXJlZFBhaXJzW10gPSBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgIWlzX3N0cmluZygkcGFpclswXSkgPT4gdGhyb3cgbmV3IFN5bnRheEVycm9yKCd0aGUgcGFpciBrZXkgTVVTVCBiZSBhIHN0cmluZzssIGAnLmdldHR5cGUoJHBhaXJbMF0pLidgIGdpdmVuLicpLAogICAgICAgICAgICAgICAgbnVsbCA9PT0gJHBhaXJbMV0gPT4gU3RyaW5nQ29lcmNpb25Nb2RlOjpOYXRpdmUtPmNvZXJjZSgkcGFpclswXSksCiAgICAgICAgICAgICAgICBkZWZhdWx0ID0+IFN0cmluZ0NvZXJjaW9uTW9kZTo6TmF0aXZlLT5jb2VyY2UoJHBhaXJbMF0pLic9Jy5TdHJpbmdDb2VyY2lvbk1vZGU6Ok5hdGl2ZS0+Y29lcmNlKCRwYWlyWzFdKSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtYXRjaCAoW10pIHsKICAgICAgICAgICAgJGZpbHRlcmVkUGFpcnMgPT4gbnVsbCwKICAgICAgICAgICAgZGVmYXVsdCA9PiBzdHJfcmVwbGFjZSgkdGhpcy0+ZnJvbVJmYzM5ODYsICR0aGlzLT50b0VuY29kaW5nLCBpbXBsb2RlKCR0aGlzLT5zZXBhcmF0b3IsICRmaWx0ZXJlZFBhaXJzKSksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBub24tZW1wdHktc3RyaW5nICRzZXBhcmF0b3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTZXBhcmF0b3Ioc3RyaW5nICRzZXBhcmF0b3IpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcy0+c2VwYXJhdG9yKSB7CiAgICAgICAgICAgICRzZXBhcmF0b3IgPT4gJHRoaXMsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gbmV3IHNlbGYoJHNlcGFyYXRvciwgJHRoaXMtPmZyb21SZmMzOTg2LCAkdGhpcy0+dG9FbmNvZGluZyksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldHMgdGhlIGNvbnZlcnNpb24gbWFwLgogICAgICoKICAgICAqIEVhY2gga2V5IGZyb20gdGhlIGl0ZXJhYmxlIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSBSRkMzOTg2IGVuY29kZWQgY2hhcmFjdGVycyBhcyBzdHJpbmcsCiAgICAgKiB3aGlsZSBlYWNoIHZhbHVlIHJlcHJlc2VudHMgdGhlIGV4cGVjdGVkIG91dHB1dCBlbmNvZGVkIGNoYXJhY3RlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhFbmNvZGluZ01hcChpdGVyYWJsZSAkZW5jb2RpbmdNYXApOiBzZWxmCiAgICB7CiAgICAgICAgJGZyb21SZmMzOTg2ID0gW107CiAgICAgICAgJHRvRW5jb2RpbmcgPSBbXTsKICAgICAgICBmb3JlYWNoICgkZW5jb2RpbmdNYXAgYXMgJGZyb20gPT4gJHRvKSB7CiAgICAgICAgICAgIFskZnJvbVJmYzM5ODZbXSwgJHRvRW5jb2RpbmdbXV0gPSBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgIWlzX3N0cmluZygkZnJvbSkgPT4gdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgZW5jb2Rpbmcgb3V0cHV0IG11c3QgYmUgYSBzdHJpbmc7IGAnLmdldHR5cGUoJGZyb20pLidgIGdpdmVuLicpLAogICAgICAgICAgICAgICAgJHRvIGluc3RhbmNlb2YgU3RyaW5nYWJsZSwKICAgICAgICAgICAgICAgIGlzX3N0cmluZygkdG8pID0+IFskZnJvbSwgKHN0cmluZykgJHRvXSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgZW5jb2Rpbmcgb3V0cHV0IG11c3QgYmUgYSBzdHJpbmc7IGAnLmdldHR5cGUoJHRvKS4nYCBnaXZlbi4nKSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAkZnJvbVJmYzM5ODYgIT09ICR0aGlzLT5mcm9tUmZjMzk4NiwKICAgICAgICAgICAgJHRvRW5jb2RpbmcgIT09ICR0aGlzLT50b0VuY29kaW5nID0+IG5ldyBzZWxmKCR0aGlzLT5zZXBhcmF0b3IsICRmcm9tUmZjMzk4NiwgJHRvRW5jb2RpbmcpLAogICAgICAgICAgICBkZWZhdWx0ID0+ICR0aGlzLAogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTUgaWduYWNlIG55YW1hZ2FuYSBidXRlcmEKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YKdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bwp1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZgp0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sCnN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUwpGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IKQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSCklOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCkNPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/QueryComposeMode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7CgplbnVtIFF1ZXJ5Q29tcG9zZU1vZGUKewogICAgLyoqCiAgICAgKiBQcmUtUEhQIDguNCBNb2RlLgogICAgICoKICAgICAqIFN0cmljdGx5IHVzZXMgZ2V0X29iamVjdF92YXJzIG9uIG9iamVjdHMgKEVudW0gaW5jbHVkZWQpCiAgICAgKiBJZiB0aGUgdmFsdWUgY2FuIG5vdCBiZSBzZXJpYWxpemVkIHRoZSBlbnRyeSBpcyBza2lwcGVkLgogICAgICoKICAgICAqIGllIGh0dHBfYnVpbGRfcXVlcnkgYmVoYXZpb3IgYmVmb3JlIFBIUDguNAogICAgICovCiAgICBjYXNlIENvbXBhdGlibGU7CgogICAgLyoqCiAgICAgKiBQSFAgOC40KyBlbnVtLWNvbXBhdGlibGUgbGVuaWVudCBtb2RlLgogICAgICoKICAgICAqIFByb3ZpZGVzIHN0YWJsZSBzdXBwb3J0IGZvciBCYWNrZWRFbnVtIHZhbHVlcy4KICAgICAqIFVuaXRFbnVtIHZhbHVlcyBhcmUgc2tpcHBlZC4KICAgICAqIFVzZXMgZ2V0X29iamVjdF92YXJzKCkgZm9yIG5vbi1lbnVtIG9iamVjdHMuCiAgICAgKiBVbnNlcmlhbGl6YWJsZSB2YWx1ZXMgYXJlIHNraXBwZWQuCiAgICAgKgogICAgICogQmVoYXZlcyBsaWtlIHtAc2VlIFF1ZXJ5Q29tcG9zZU1vZGU6OkVudW1Db21wYXRpYmxlfQogICAgICogYnV0IGRvZXMgbm90IHRocm93IGZvciBVbml0RW51bSB2YWx1ZXMuCiAgICAgKgogICAgICogTWlycm9ycyBodHRwX2J1aWxkX3F1ZXJ5IGJlaGF2aW9yIGluIFBIUCA4LjQrLAogICAgICogZXhjZXB0IHRoYXQgZXJyb3IgY2FzZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQKICAgICAqIGluc3RlYWQgb2YgdGhyb3dpbmcuCiAgICAgKgogICAgICogVGhpcyBtb2RlIGlzIHRvbGVyYW50IGJ5IGRlc2lnbiBhbmQgc2tpcHMgZW50cmllcyB0aGF0IHdvdWxkIG90aGVyd2lzZQogICAgICogcmVzdWx0IGluIGFuIGV4Y2VwdGlvbiBpbiB7QHNlZSBRdWVyeUNvbXBvc2VNb2RlOjpFbnVtQ29tcGF0aWJsZX0uCiAgICAgKi8KICAgIGNhc2UgRW51bUxlbmllbnQ7CgogICAgLyoqCiAgICAgKiBQSFAgOC40KyBtb2RlLgogICAgICoKICAgICAqIFByb3ZpZGVzIHN0YWJsZSBzdXBwb3J0IGZvciBCYWNrZWRFbnVtIHZhbHVlcy4KICAgICAqIFRocm93cyBmb3IgVW5pdEVudW0uCiAgICAgKiBVc2VzIGdldF9vYmplY3RfdmFycygpIGZvciBub24tZW51bSBvYmplY3RzLgogICAgICogVW5zZXJpYWxpemFibGUgdmFsdWVzIGFyZSBza2lwcGVkLgogICAgICoKICAgICAqIGh0dHBfYnVpbGRfcXVlcnkgYmVoYXZpb3IgaW4gUEhQIDguNCsuCiAgICAgKi8KICAgIGNhc2UgRW51bUNvbXBhdGlibGU7CgogICAgLyoqCiAgICAgKiBVc2UgUEhQIHZlcnNpb24gaHR0cF9idWlsZF9xdWVyeSBhbGdvcml0aG0uCiAgICAgKgogICAgICogSW4gcHJlLVBIUDguNCB5b3UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgYENvbXBhdGlibGVgCiAgICAgKiBJbiBQSFAgUEhQOC40KyB5b3UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgYEVudW1Db21wYXRpYmxlYAogICAgICovCiAgICBjYXNlIE5hdGl2ZTsKCiAgICAvKioKICAgICAqIFZhbGlkYXRpb24tZmlyc3QgbW9kZS4KICAgICAqCiAgICAgKiBHdWFyYW50ZWVzIHRoYXQgb25seSBzY2FsYXIgdmFsdWVzLCBCYWNrZWRFbnVtLCBhbmQgbnVsbCBhcmUgYWNjZXB0ZWQuCiAgICAgKiBBbnkgb2JqZWN0LCBVbml0RW51bSwgcmVzb3VyY2UsIG9yIHJlY3Vyc2l2ZSBzdHJ1Y3R1cmUKICAgICAqIHJlc3VsdHMgaW4gYW4gZXhjZXB0aW9uLgogICAgICoKICAgICAqIC0gbnVsbDogdGhlIGtleSBuYW1lIGlzIHVzZWQgYnV0IHRoZSBzZXBhcmF0b3IgYW5kIGl0cyBjb250ZW50IGFyZSBvbWl0dGVkCiAgICAgKiAtIHN0cmluZzogdXNlZCBhcy1pcwogICAgICogLSBib29sOiBjb252ZXJ0ZWQgdG8gc3RyaW5nIOKAnDDigJ0gKGZhbHNlKSBvciDigJwx4oCdICh0cnVlKQogICAgICogLSBpbnQ6IGNvbnZlcnRlZCB0byBudW1lcmljIHN0cmluZyAoMTIzIC0+IOKAnDEyM+KAnSkKICAgICAqIC0gZmxvYXQ6IGNvbnZlcnRlZCB0byBkZWNpbWFsIHN0cmluZyAoMy4xNCAtPiDigJwzLjE04oCdKQogICAgICogLSBCYWNrZWQgRW51bTogY29udmVydGVkIHRvIHRoZWlyIGJhY2tpbmcgdmFsdWUgYW5kIHRoZW4gc3RyaW5naWZ5IHNlZSBpbnQgYW5kIHN0cmluZwogICAgICogLSBhcnJheTogZW1wdHkgYXJyYXk6IEFuIGVtcHR5IGFycmF5IGhhcyB6ZXJvIGl0ZW1zLCB0aGVyZWZvcmUgZW1wdHkgYXJyYXlzIGFyZSBvbWl0dGVkIGZyb20gdGhlIHF1ZXJ5IHBhcmFtZXRlciBsaXN0LgogICAgICogICAgIC0gbGlzdHM6IEJlY29tZXMgYSByZXBlYXRlZCBuYW1lIHN1ZmZpeGVkIHdpdGggZW1wdHkgYnJhY2tldHMgKGllICJhIiB3aXRoIFsiZm9vIiwgZmFsc2UsIDEuMjNdIHdpbGwgcmVzdWx0IGluIGFbXT1mb28mYVtdPTAmYVtdPTEuMjMpCiAgICAgKiAgICAgLSBtYXBzOiBCZWNvbWVzIGEgcmVwZWF0ZWQgbmFtZSBzdWZmaXhlZCB3aXRoIGJyYWNrZXRzIGNvbnRhaW5pbmcgdGhlIGtleSAoaWUgImEiIHdpdGggWyJiIiA9PiAiZm9vIiwgImMiID0+IGZhbHNlLCAiZCIgPT4gMS4yM10gd2lsbCByZXN1bHQgaW4gYVtiXT1mb28mYVtjXT0wJmFbZF09MS4yMykKICAgICAqCiAgICAgKiBUaGlzIGNvbnRyYWN0IGlzIHN0YWJsZSBhbmQgaW5kZXBlbmRlbnQgb2YgUEhQJ3MgaHR0cF9idWlsZF9xdWVyeSBpbXBsZW1lbnRhdGlvbi4KICAgICAqLwogICAgY2FzZSBTYWZlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/QueryExtractMode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7CgplbnVtIFF1ZXJ5RXh0cmFjdE1vZGUKewogICAgLyoqCiAgICAgKiBQYXJzZXMgdGhlIHF1ZXJ5IHN0cmluZyB1c2luZyBwYXJzZV9zdHIgYWxnb3JpdGhtLgogICAgICovCiAgICBjYXNlIE5hdGl2ZTsKCiAgICAvKioKICAgICAqIFBhcnNlcyB0aGUgcXVlcnkgc3RyaW5nIGxpa2UgcGFyc2Vfc3RyIHdpdGhvdXQgbWFuZ2xpbmcgcmVzdWx0IGtleXMuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBpcyBzaW1pbGFyIHRvIFBIUCBwYXJzZV9zdHIgd2hlbiB1c2VkIHdpdGggaXRzIHNlY29uZCBhcmd1bWVudCwKICAgICAqIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB2YXJpYWJsZSBuYW1lcyBhcmUgbm90IG1hbmdsZWQuCiAgICAgKgogICAgICogQmVoYXZpb3IgZGV0YWlsczoKICAgICAqIC0gRW1wdHkgbmFtZXMgYXJlIGlnbm9yZWQKICAgICAqIC0gSWYgYSBuYW1lIGlzIGR1cGxpY2F0ZWQsIHRoZSBsYXN0IHZhbHVlIG92ZXJ3cml0ZXMgdGhlIHByZXZpb3VzIG9uZQogICAgICogLSBJZiBubyAiWyIgaXMgZGV0ZWN0ZWQsIHRoZSB2YWx1ZSBpcyBhZGRlZCB1c2luZyB0aGUgbmFtZSBhcyB0aGUgYXJyYXkga2V5CiAgICAgKiAtIElmICJbIiBpcyBkZXRlY3RlZCBidXQgbm8gbWF0Y2hpbmcgIl0iIGV4aXN0cywgdGhlIHZhbHVlIGlzIGFkZGVkIHVzaW5nIHRoZSBuYW1lIGFzIHRoZSBhcnJheSBrZXkKICAgICAqIC0gSWYgYnJhY2tldCB1c2FnZSBpcyBtYWxmb3JtZWQsIHRoZSByZW1haW5pbmcgcGFydCBpcyBkcm9wcGVkCiAgICAgKiAtICIuIiBhbmQgIiAiIGFyZSBOT1QgY29udmVydGVkIHRvICJfIgogICAgICogLSBJZiBubyAiXSIgZXhpc3RzLCB0aGUgZmlyc3QgIlsiIGlzIG5vdCBjb252ZXJ0ZWQgdG8gIl8iCiAgICAgKiAtIE5vIHdoaXRlc3BhY2UgdHJpbW1pbmcgaXMgcGVyZm9ybWVkIG9uIGtleXMKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvcGFyc2Vfc3RyCiAgICAgKiBAc2VlIGh0dHBzOi8vd2lraS5waHAubmV0L3JmYy9vbl9kZW1hbmRfbmFtZV9tYW5nbGluZwogICAgICovCiAgICBjYXNlIFVubWFuZ2xlZDsKCiAgICAvKioKICAgICAqIFNhbWUgYXMgUXVlcnlQYXJzaW5nTW9kZTo6VW5tYW5nbGVkIGFuZCBhZGRpdGlvbmFsbHkKICAgICAqIHByZXNlcnZlcyBudWxsIHZhbHVlcyBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgdGhlbQogICAgICogdG8gZW1wdHkgc3RyaW5ncy4KICAgICAqLwogICAgY2FzZSBMb3NzTGVzczsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/QueryString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uc1xTeW50YXhFcnJvcjsKdXNlIExlYWd1ZVxVcmlcS2V5VmFsdWVQYWlyXENvbnZlcnRlcjsKdXNlIFJlZmxlY3Rpb25FbnVtOwp1c2UgUmVmbGVjdGlvbkV4Y2VwdGlvbjsKdXNlIFNwbE9iamVjdFN0b3JhZ2U7CnVzZSBTdHJpbmdhYmxlOwp1c2UgVHlwZUVycm9yOwp1c2UgVW5pdEVudW07CnVzZSBWYWx1ZUVycm9yOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2lzX2xpc3Q7CnVzZSBmdW5jdGlvbiBhcnJheV9rZXlfZXhpc3RzOwp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5czsKdXNlIGZ1bmN0aW9uIGdldF9kZWJ1Z190eXBlOwp1c2UgZnVuY3Rpb24gZ2V0X29iamVjdF92YXJzOwp1c2UgZnVuY3Rpb24gaHR0cF9idWlsZF9xdWVyeTsKdXNlIGZ1bmN0aW9uIGltcGxvZGU7CnVzZSBmdW5jdGlvbiBpc19hcnJheTsKdXNlIGZ1bmN0aW9uIGlzX29iamVjdDsKdXNlIGZ1bmN0aW9uIGlzX3Jlc291cmNlOwp1c2UgZnVuY3Rpb24gaXNfc2NhbGFyOwp1c2UgZnVuY3Rpb24gcmF3dXJsZGVjb2RlOwp1c2UgZnVuY3Rpb24gc3RyX3JlcGxhY2U7CnVzZSBmdW5jdGlvbiBzdHJwb3M7CnVzZSBmdW5jdGlvbiBzdWJzdHI7Cgp1c2UgY29uc3QgUEhQX1FVRVJZX1JGQzE3Mzg7CnVzZSBjb25zdCBQSFBfUVVFUllfUkZDMzk4NjsKCi8qKgogKiBBIGNsYXNzIHRvIHBhcnNlIHRoZSBVUkkgcXVlcnkgc3RyaW5nLgogKgogKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy40CiAqLwpmaW5hbCBjbGFzcyBRdWVyeVN0cmluZwp7CiAgICBwcml2YXRlIGNvbnN0IFBBSVJfVkFMVUVfREVDT0RFRCA9IDE7CiAgICBwcml2YXRlIGNvbnN0IFBBSVJfVkFMVUVfUFJFU0VSVkVEID0gMjsKICAgIHByaXZhdGUgY29uc3QgUkVDVVJTSU9OX01BUktFUiA9ICJcMF9fUkVDVVJTSU9OX0lOVEVSTkFMX01BUktFUl9fXDAiOwoKICAgIC8qKgogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgIH0KCiAgICAvKioKICAgICAqIEJ1aWxkIGEgcXVlcnkgc3RyaW5nIGZyb20gYSBsaXN0IG9mIHBhaXJzLgogICAgICoKICAgICAqIEBzZWUgUXVlcnlTdHJpbmc6OmJ1aWxkRnJvbVBhaXJzKCkKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMi4yCiAgICAgKgogICAgICogQHBhcmFtIGl0ZXJhYmxlPGFycmF5ezA6c3RyaW5nLCAxOm1peGVkfT4gJHBhaXJzCiAgICAgKiBAcGFyYW0gbm9uLWVtcHR5LXN0cmluZyAkc2VwYXJhdG9yCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBJZiB0aGUgZW5jb2RpbmcgdHlwZSBpcyBpbnZhbGlkCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIElmIGEgcGFpciBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGQoaXRlcmFibGUgJHBhaXJzLCBzdHJpbmcgJHNlcGFyYXRvciA9ICcmJywgaW50ICRlbmNUeXBlID0gUEhQX1FVRVJZX1JGQzM5ODYsIFN0cmluZ0NvZXJjaW9uTW9kZSAkY29lcmNpb25Nb2RlID0gU3RyaW5nQ29lcmNpb25Nb2RlOjpOYXRpdmUpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmJ1aWxkRnJvbVBhaXJzKCRwYWlycywgQ29udmVydGVyOjpmcm9tRW5jb2RpbmdUeXBlKCRlbmNUeXBlKS0+d2l0aFNlcGFyYXRvcigkc2VwYXJhdG9yKSwgJGNvZXJjaW9uTW9kZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBCdWlsZCBhIHF1ZXJ5IHN0cmluZyBmcm9tIGEgbGlzdCBvZiBwYWlycy4KICAgICAqCiAgICAgKiBUaGUgbWV0aG9kIGV4cGVjdHMgdGhlIHJldHVybiB2YWx1ZSBmcm9tIFF1ZXJ5OjpwYXJzZSB0byBidWlsZAogICAgICogYSB2YWxpZCBxdWVyeSBzdHJpbmcuIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSBQSFAgaHR0cF9idWlsZF9xdWVyeSBhcwogICAgICogaXQgZG9lcyBub3QgbW9kaWZ5IHBhcmFtZXRlcnMga2V5cy4KICAgICAqCiAgICAgKiAgSWYgYSByZXNlcnZlZCBjaGFyYWN0ZXIgaXMgZm91bmQgaW4gYSBVUkkgY29tcG9uZW50IGFuZAogICAgICogIG5vIGRlbGltaXRpbmcgcm9sZSBpcyBrbm93biBmb3IgdGhhdCBjaGFyYWN0ZXIsIHRoZW4gaXQgbXVzdCBiZQogICAgICogIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZyB0aGUgZGF0YSBvY3RldCBjb3JyZXNwb25kaW5nIHRvIHRoYXQKICAgICAqICBjaGFyYWN0ZXIncyBlbmNvZGluZyBpbiBVUy1BU0NJSS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIuMgogICAgICoKICAgICAqIEBwYXJhbSBpdGVyYWJsZTxhcnJheXswOnN0cmluZywgMTptaXhlZH0+ICRwYWlycwogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgSWYgdGhlIGVuY29kaW5nIHR5cGUgaXMgaW52YWxpZAogICAgICogQHRocm93cyBTeW50YXhFcnJvciBJZiBhIHBhaXIgaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJ1aWxkRnJvbVBhaXJzKGl0ZXJhYmxlICRwYWlycywgP0NvbnZlcnRlciAkY29udmVydGVyID0gbnVsbCwgU3RyaW5nQ29lcmNpb25Nb2RlICRjb2VyY2lvbk1vZGUgPSBTdHJpbmdDb2VyY2lvbk1vZGU6Ok5hdGl2ZSk6ID9zdHJpbmcKICAgIHsKICAgICAgICAka2V5VmFsdWVQYWlycyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRwYWlycyBhcyAkcGFpcikgewogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRwYWlyKSB8fCBbMCwgMV0gIT09IGFycmF5X2tleXMoJHBhaXIpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0EgcGFpciBtdXN0IGJlIGEgc2VxdWVudGlhbCBhcnJheSBzdGFydGluZyBhdCBgMGAgYW5kIGNvbnRhaW5pbmcgdHdvIGVsZW1lbnRzLicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBbJGtleSwgJHZhbHVlXSA9ICRwYWlyOwogICAgICAgICAgICAkY29lcmNpb25Nb2RlLT5pc0NvZXJjaWJsZSgkdmFsdWUpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignQ29udmVydGluZyBhIHR5cGUgYCcuZ2V0X2RlYnVnX3R5cGUoJHZhbHVlKS4nYCBpbnRvIGEgc3RyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlICcuKFN0cmluZ0NvZXJjaW9uTW9kZTo6TmF0aXZlID09PSAkY29lcmNpb25Nb2RlID8gJ1BIUCBOYXRpdmUnIDogJ0VjbWFzY3JpcHQnKS4nIGNvZXJjaW9uIG1vZGUuJyk7CgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGtleSA9ICRjb2VyY2lvbk1vZGUtPmNvZXJjZSgka2V5KTsKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRjb2VyY2lvbk1vZGUtPmNvZXJjZSgkdmFsdWUpOwogICAgICAgICAgICB9IGNhdGNoIChUeXBlRXJyb3IgJHR5cGVFcnJvcikgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgcGFpciBjYW4gbm90IGJlIGNvbnZlcnRlZCB0byBidWlsZCBhIHF1ZXJ5IHN0cmluZy4nLCBwcmV2aW91czogJHR5cGVFcnJvcik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRrZXlWYWx1ZVBhaXJzW10gPSBbKHN0cmluZykgRW5jb2Rlcjo6ZW5jb2RlUXVlcnlLZXlWYWx1ZSgka2V5KSwgbnVsbCA9PT0gJHZhbHVlID8gbnVsbCA6IEVuY29kZXI6OmVuY29kZVF1ZXJ5S2V5VmFsdWUoJHZhbHVlKV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCRjb252ZXJ0ZXIgPz8gQ29udmVydGVyOjpmcm9tUkZDMzk4NigpKS0+dG9WYWx1ZSgka2V5VmFsdWVQYWlycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBCdWlsZCBhIHF1ZXJ5IHN0cmluZyBmcm9tIGFuIG9iamVjdCBvciBhbiBhcnJheSBsaWtlIGh0dHBfYnVpbGRfcXVlcnkgd2l0aG91dCBkaXNjYXJkaW5nIHZhbHVlcy4KICAgICAqIFRoZSBtZXRob2QgZGlmZmVycyBmcm9tIGh0dHBfYnVpbGRfcXVlcnkgZm9yIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3I6CiAgICAgKgogICAgICogIC0gaWYgYSByZXNvdXJjZSBpcyB1c2VkLCBhIFR5cGVFcnJvciBpcyB0aHJvd24uCiAgICAgKiAgLSBpZiBhIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZCBhIFZhbHVlRXJyb3IgaXMgdGhyb3duCiAgICAgKiAgLSB0aGUgbWV0aG9kIHByZXNlcnZlcyB2YWx1ZSB3aXRoIGBudWxsYCB2YWx1ZSAoaHR0cF9idWlsZF9xdWVyeSkgc2tpcCB0aGUga2V5LgogICAgICogIC0gdGhlIG1ldGhvZCBkb2VzIG5vdCBoYW5kbGUgcHJlZml4IHVzYWdlCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgbWl4ZWQ+ICRkYXRhCiAgICAgKiBAcGFyYW0gbm9uLWVtcHR5LXN0cmluZyAkc2VwYXJhdG9yCiAgICAgKgogICAgICogQHRocm93cyBUeXBlRXJyb3IgaWYgYSByZXNvdXJjZSBpcyBmb3VuZCBpdCB0aGUgaW5wdXQgYXJyYXkKICAgICAqIEB0aHJvd3MgVmFsdWVFcnJvciBpZiBhIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbXBvc2UoCiAgICAgICAgYXJyYXl8b2JqZWN0ICRkYXRhLAogICAgICAgIHN0cmluZyAkc2VwYXJhdG9yID0gJyYnLAogICAgICAgIGludCAkZW5jVHlwZSA9IFBIUF9RVUVSWV9SRkMxNzM4LAogICAgICAgIFF1ZXJ5Q29tcG9zZU1vZGUgJGNvbXBvc2VNb2RlID0gUXVlcnlDb21wb3NlTW9kZTo6TmF0aXZlCiAgICApOiA/c3RyaW5nIHsKICAgICAgICBpZiAoUXVlcnlDb21wb3NlTW9kZTo6TmF0aXZlID09PSAkY29tcG9zZU1vZGUpIHsKICAgICAgICAgICAgcmV0dXJuIGh0dHBfYnVpbGRfcXVlcnkoZGF0YTogJGRhdGEsIGFyZ19zZXBhcmF0b3I6ICRzZXBhcmF0b3IsIGVuY29kaW5nX3R5cGU6ICRlbmNUeXBlKTsKICAgICAgICB9CgogICAgICAgICRxdWVyeSA9IHNlbGY6OmNvbXBvc2VGcm9tVmFsdWUoJGRhdGEsIENvbnZlcnRlcjo6ZnJvbUVuY29kaW5nVHlwZSgkZW5jVHlwZSktPndpdGhTZXBhcmF0b3IoJHNlcGFyYXRvciksICRjb21wb3NlTW9kZSk7CgogICAgICAgIHJldHVybiBRdWVyeUNvbXBvc2VNb2RlOjpTYWZlICE9PSAkY29tcG9zZU1vZGUgPyAoc3RyaW5nKSAkcXVlcnkgOiAkcXVlcnk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wb3NlRnJvbVZhbHVlKAogICAgICAgIGFycmF5fG9iamVjdCAkZGF0YSwKICAgICAgICA/Q29udmVydGVyICRjb252ZXJ0ZXIgPSBudWxsLAogICAgICAgIFF1ZXJ5Q29tcG9zZU1vZGUgJGNvbXBvc2VNb2RlID0gUXVlcnlDb21wb3NlTW9kZTo6TmF0aXZlLAogICAgKTogP3N0cmluZyB7CiAgICAgICAgaWYgKFF1ZXJ5Q29tcG9zZU1vZGU6OkVudW1MZW5pZW50ID09PSAkY29tcG9zZU1vZGUgJiYgJGRhdGEgaW5zdGFuY2VvZiBVbml0RW51bSAmJiAhJGRhdGEgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIFF1ZXJ5Q29tcG9zZU1vZGU6OlNhZmUgIT09ICRjb21wb3NlTW9kZSB8fCBpc19hcnJheSgkZGF0YSkgfHwgdGhyb3cgbmV3IFR5cGVFcnJvcignSW4gc2FmZSBtb2RlIG9ubHkgYXJyYXlzIGFyZSBzdXBwb3J0ZWQuJyk7CgogICAgICAgICRjb252ZXJ0ZXIgPz89IENvbnZlcnRlcjo6ZnJvbVJGQzM5ODYoKTsKCiAgICAgICAgJHBhaXJzID0gUXVlcnlDb21wb3NlTW9kZTo6TmF0aXZlICE9PSAkY29tcG9zZU1vZGUKICAgICAgICAgICAgPyBzZWxmOjpjb21wb3NlUmVjdXJzaXZlKCRjb21wb3NlTW9kZSwgJGRhdGEpCiAgICAgICAgICAgIDogc2VsZjo6cGFyc2VGcm9tVmFsdWUoaHR0cF9idWlsZF9xdWVyeShkYXRhOiAkZGF0YSwgYXJnX3NlcGFyYXRvcjogJyYnKSwgQ29udmVydGVyOjpmcm9tUkZDMTczOCgpKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmJ1aWxkRnJvbVBhaXJzKCRwYWlycywgJGNvbnZlcnRlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD58b2JqZWN0ICRkYXRhCiAgICAgKiBAcGFyYW0gU3BsT2JqZWN0U3RvcmFnZTxvYmplY3QsIG51bGw+ICRzZWVuT2JqZWN0cwogICAgICoKICAgICAqIEB0aHJvd3MgVHlwZUVycm9yIGlmIGEgcmVzb3VyY2UgaXMgZm91bmQgaXQgdGhlIGlucHV0IGFycmF5CiAgICAgKiBAdGhyb3dzIFZhbHVlRXJyb3IgaWYgYSByZWN1cnNpb24gaXMgZGV0ZWN0ZWQKICAgICAqIEB0aHJvd3MgUmVmbGVjdGlvbkV4Y2VwdGlvbiBpZiByZWZsZWN0aW9uIGlzIG5vdCBwb3NzaWJsZSBvbiB0aGUgRW51bQogICAgICoKICAgICAqIEByZXR1cm4gaXRlcmFibGU8YXJyYXl7MDogYXJyYXkta2V5LCAxOiBzdHJpbmd8aW50fGZsb2F0fGJvb2x8bnVsbH0+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbXBvc2VSZWN1cnNpdmUoCiAgICAgICAgUXVlcnlDb21wb3NlTW9kZSAkY29tcG9zZU1vZGUsCiAgICAgICAgYXJyYXl8b2JqZWN0ICRkYXRhLAogICAgICAgIHN0cmluZ3xpbnQgJHByZWZpeCA9ICcnLAogICAgICAgIFNwbE9iamVjdFN0b3JhZ2UgJHNlZW5PYmplY3RzID0gbmV3IFNwbE9iamVjdFN0b3JhZ2UoKSwKICAgICk6IGl0ZXJhYmxlIHsKICAgICAgICBRdWVyeUNvbXBvc2VNb2RlOjpTYWZlICE9PSAkY29tcG9zZU1vZGUgfHwgaXNfYXJyYXkoJGRhdGEpIHx8IHRocm93IG5ldyBUeXBlRXJyb3IoJ0luIHNhZmUgbW9kZSBvbmx5IGFycmF5cyBhcmUgc3VwcG9ydGVkLicpOwogICAgICAgIGluX2FycmF5KCRjb21wb3NlTW9kZSwgW1F1ZXJ5Q29tcG9zZU1vZGU6OkVudW1Db21wYXRpYmxlLCBRdWVyeUNvbXBvc2VNb2RlOjpFbnVtTGVuaWVudF0sIHRydWUpIHx8ICEkZGF0YSBpbnN0YW5jZW9mIFVuaXRFbnVtIHx8IHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50ICMxICgkZGF0YSkgbXVzdCBub3QgYmUgYW4gZW51bSwgJy4oKG5ldyBSZWZsZWN0aW9uRW51bSgkZGF0YTo6Y2xhc3MpKS0+aXNCYWNrZWQoKSA/ICdCYWNrZWQnIDogJ1B1cmUnKS4nIGdpdmVuJykgOwoKICAgICAgICBpZiAoaXNfb2JqZWN0KCRkYXRhKSkgewogICAgICAgICAgICBpZiAoJHNlZW5PYmplY3RzLT5jb250YWlucygkZGF0YSkpIHsKICAgICAgICAgICAgICAgIFF1ZXJ5Q29tcG9zZU1vZGU6OlNhZmUgIT09ICRjb21wb3NlTW9kZSB8fCB0aHJvdyBuZXcgVmFsdWVFcnJvcignY29tcG9zaXRpb24gZmFpbGVkOyBjaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQuJyk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2Vlbk9iamVjdHMtPmF0dGFjaCgkZGF0YSk7CiAgICAgICAgICAgICRkYXRhID0gZ2V0X29iamVjdF92YXJzKCRkYXRhKTsKICAgICAgICB9CgogICAgICAgIGlmIChzZWxmOjpoYXNDaXJjdWxhclJlZmVyZW5jZSgkZGF0YSkpIHsKICAgICAgICAgICAgUXVlcnlDb21wb3NlTW9kZTo6U2FmZSAhPT0gJGNvbXBvc2VNb2RlIHx8IHRocm93IG5ldyBWYWx1ZUVycm9yKCdjb21wb3NpdGlvbiBmYWlsZWQ7IGNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZC4nKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRzdHJpcEluZGljZXMgPSBRdWVyeUNvbXBvc2VNb2RlOjpTYWZlID09PSAkY29tcG9zZU1vZGUgJiYgYXJyYXlfaXNfbGlzdCgkZGF0YSk7CgogICAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkbmFtZSA9ICRzdHJpcEluZGljZXMgPyAnJyA6ICRuYW1lOwogICAgICAgICAgICBpZiAoJycgIT09ICRwcmVmaXgpIHsKICAgICAgICAgICAgICAgICRuYW1lID0gJHByZWZpeC4nWycuJG5hbWUuJ10nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgUXVlcnlDb21wb3NlTW9kZTo6U2FmZSAhPT0gJGNvbXBvc2VNb2RlIHx8IHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbXBvc2l0aW9uIGZhaWxlZDsgYSByZXNvdXJjZSBoYXMgYmVlbiBkZXRlY3RlZCBhbmQgY2FuIG5vdCBiZSBjb252ZXJ0ZWQuJyk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlzX3NjYWxhcigkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICB5aWVsZCBbJG5hbWUsICR2YWx1ZV07CgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChudWxsID09PSAkdmFsdWUpIHsKICAgICAgICAgICAgICAgIGlmIChRdWVyeUNvbXBvc2VNb2RlOjpTYWZlID09PSAkY29tcG9zZU1vZGUpIHsKICAgICAgICAgICAgICAgICAgICB5aWVsZCBbJG5hbWUsICR2YWx1ZV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICAgICBpZiAoUXVlcnlDb21wb3NlTW9kZTo6Q29tcGF0aWJsZSAhPT0gJGNvbXBvc2VNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgeWllbGQgWyRuYW1lLCAkdmFsdWUtPnZhbHVlXTsKCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhbHVlID0gZ2V0X29iamVjdF92YXJzKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBVbml0RW51bSkgewogICAgICAgICAgICAgICAgaWYgKFF1ZXJ5Q29tcG9zZU1vZGU6OkVudW1MZW5pZW50ID09PSAkY29tcG9zZU1vZGUpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBRdWVyeUNvbXBvc2VNb2RlOjpDb21wYXRpYmxlID09PSAkY29tcG9zZU1vZGUgfHwgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5iYWNrZWQgZW51bSAnLiR2YWx1ZTo6Y2xhc3MuJyBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgc3RyaW5nJyk7CgogICAgICAgICAgICAgICAgJHZhbHVlID0gZ2V0X29iamVjdF92YXJzKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChRdWVyeUNvbXBvc2VNb2RlOjpTYWZlID09PSAkY29tcG9zZU1vZGUgJiYgaXNfb2JqZWN0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWx1ZUVycm9yKCdJbiBjb25zZXJ2YXRpdmUgbW9kZSBvbmx5IGFycmF5cywgc2NhbGFyIHZhbHVlIG9yIG51bGwgYXJlIHN1cHBvcnRlZC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmOjpjb21wb3NlUmVjdXJzaXZlKCRjb21wb3NlTW9kZSwgJHZhbHVlLCAkbmFtZSwgJHNlZW5PYmplY3RzKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBcnJheSByZWN1cnNpb24gZGV0ZWN0aW9uLgogICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85MDQyMTQyL2RldGVjdGluZy1pbmZpbml0ZS1hcnJheS1yZWN1cnNpb24taW4tcGhwCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGhhc0NpcmN1bGFyUmVmZXJlbmNlKGFycmF5ICYkYXJyKTogYm9vbAogICAgewogICAgICAgIGlmIChpc3NldCgkYXJyW3NlbGY6OlJFQ1VSU0lPTl9NQVJLRVJdKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRhcnJbc2VsZjo6UkVDVVJTSU9OX01BUktFUl0gPSB0cnVlOwogICAgICAgICAgICBmb3JlYWNoICgkYXJyIGFzICRrZXkgPT4gJiR2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKHNlbGY6OlJFQ1VSU0lPTl9NQVJLRVIgIT09ICRrZXkgJiYgaXNfYXJyYXkoJHZhbHVlKSAmJiBzZWxmOjpoYXNDaXJjdWxhclJlZmVyZW5jZSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICB1bnNldCgkYXJyW3NlbGY6OlJFQ1VSU0lPTl9NQVJLRVJdKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgdGhlIHF1ZXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHF1ZXJ5IHBhcnNpbmcgbW9kZQogICAgICoKICAgICAqIEBzZWUgUXVlcnlTdHJpbmc6OmV4dHJhY3RGcm9tVmFsdWUoKQogICAgICoKICAgICAqIEBwYXJhbSBub24tZW1wdHktc3RyaW5nICRzZXBhcmF0b3IKICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXh0cmFjdCgKICAgICAgICBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfGJvb2x8bnVsbCAkcXVlcnksCiAgICAgICAgc3RyaW5nICRzZXBhcmF0b3IgPSAnJicsCiAgICAgICAgaW50ICRlbmNUeXBlID0gUEhQX1FVRVJZX1JGQzM5ODYsCiAgICAgICAgUXVlcnlFeHRyYWN0TW9kZSAkZXh0cmFjdE1vZGUgPSBRdWVyeUV4dHJhY3RNb2RlOjpVbm1hbmdsZWQsCiAgICApOiBhcnJheSB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmV4dHJhY3RGcm9tVmFsdWUoCiAgICAgICAgICAgICRxdWVyeSwKICAgICAgICAgICAgQ29udmVydGVyOjpmcm9tRW5jb2RpbmdUeXBlKCRlbmNUeXBlKS0+d2l0aFNlcGFyYXRvcigkc2VwYXJhdG9yKSwKICAgICAgICAgICAgJGV4dHJhY3RNb2RlLAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgdGhlIHF1ZXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHF1ZXJ5IHBhcnNpbmcgbW9kZQogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHRyYWN0RnJvbVZhbHVlKAogICAgICAgIEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8Ym9vbHxudWxsICRxdWVyeSwKICAgICAgICA/Q29udmVydGVyICRjb252ZXJ0ZXIgPSBudWxsLAogICAgICAgIFF1ZXJ5RXh0cmFjdE1vZGUgJGV4dHJhY3RNb2RlID0gUXVlcnlFeHRyYWN0TW9kZTo6VW5tYW5nbGVkLAogICAgKTogYXJyYXkgewogICAgICAgICRwYWlycyA9ICgkY29udmVydGVyID8/IENvbnZlcnRlcjo6ZnJvbVJGQzM5ODYoKSktPnRvUGFpcnMoJHF1ZXJ5KTsKICAgICAgICBpZiAoUXVlcnlFeHRyYWN0TW9kZTo6TmF0aXZlID09PSAkZXh0cmFjdE1vZGUpIHsKICAgICAgICAgICAgaWYgKFtdID09PSAkcGFpcnMpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGRhdGEgPSBbXTsKICAgICAgICAgICAgZm9yZWFjaCAoJHBhaXJzIGFzIFska2V5LCAkdmFsdWVdKSB7CiAgICAgICAgICAgICAgICAka2V5ID0gc3RyX3JlcGxhY2UoJyYnLCAnJTI2JywgKHN0cmluZykgJGtleSk7CiAgICAgICAgICAgICAgICAkZGF0YVtdID0gbnVsbCA9PT0gJHZhbHVlID8gJGtleSA6ICRrZXkuJz0nLnN0cl9yZXBsYWNlKCcmJywgJyUyNicsICR2YWx1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHBhcnNlX3N0cihpbXBsb2RlKCcmJywgJGRhdGEpLCAkcmVzdWx0KTsKCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmNvbnZlcnQoCiAgICAgICAgICAgIHNlbGY6OmRlY29kZVBhaXJzKCRwYWlycywgc2VsZjo6UEFJUl9WQUxVRV9QUkVTRVJWRUQpLAogICAgICAgICAgICAkZXh0cmFjdE1vZGUKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgcXVlcnkgc3RyaW5nIGludG8gYSBjb2xsZWN0aW9uIG9mIGtleS92YWx1ZSBwYWlycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbm9uLWVtcHR5LXN0cmluZyAkc2VwYXJhdG9yCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvcgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LCBhcnJheXswOnN0cmluZywgMTpzdHJpbmd8bnVsbH0+CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xib29sfG51bGwgJHF1ZXJ5LCBzdHJpbmcgJHNlcGFyYXRvciA9ICcmJywgaW50ICRlbmNUeXBlID0gUEhQX1FVRVJZX1JGQzM5ODYpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpwYXJzZUZyb21WYWx1ZSgkcXVlcnksIENvbnZlcnRlcjo6ZnJvbUVuY29kaW5nVHlwZSgkZW5jVHlwZSktPndpdGhTZXBhcmF0b3IoJHNlcGFyYXRvcikpOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgcXVlcnkgc3RyaW5nIGludG8gYSBjb2xsZWN0aW9uIG9mIGtleS92YWx1ZSBwYWlycy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIGFycmF5ezA6c3RyaW5nLCAxOnN0cmluZ3xudWxsfT4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZUZyb21WYWx1ZShCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfGJvb2x8bnVsbCAkcXVlcnksID9Db252ZXJ0ZXIgJGNvbnZlcnRlciA9IG51bGwpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpkZWNvZGVQYWlycygKICAgICAgICAgICAgKCRjb252ZXJ0ZXIgPz8gQ29udmVydGVyOjpmcm9tUkZDMzk4NigpKS0+dG9QYWlycygkcXVlcnkpLAogICAgICAgICAgICBzZWxmOjpQQUlSX1ZBTFVFX0RFQ09ERUQKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PG5vbi1lbXB0eS1saXN0PHN0cmluZ3xudWxsPj4gJHBhaXJzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIGFycmF5ezA6c3RyaW5nLCAxOnN0cmluZ3xudWxsfT4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlUGFpcnMoYXJyYXkgJHBhaXJzLCBpbnQgJHBhaXJWYWx1ZVN0YXRlKTogYXJyYXkKICAgIHsKICAgICAgICAkZGVjb2RlUGFpciA9IHN0YXRpYyBmdW5jdGlvbiAoYXJyYXkgJHBhaXIsIGludCAkcGFpclZhbHVlU3RhdGUpOiBhcnJheSB7CiAgICAgICAgICAgIFska2V5LCAkdmFsdWVdID0gJHBhaXI7CgogICAgICAgICAgICByZXR1cm4gbWF0Y2ggKCRwYWlyVmFsdWVTdGF0ZSkgewogICAgICAgICAgICAgICAgc2VsZjo6UEFJUl9WQUxVRV9QUkVTRVJWRUQgPT4gWyhzdHJpbmcpIEVuY29kZXI6OmRlY29kZUFsbCgka2V5KSwgJHZhbHVlXSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gWyhzdHJpbmcpIEVuY29kZXI6OmRlY29kZUFsbCgka2V5KSwgRW5jb2Rlcjo6ZGVjb2RlQWxsKCR2YWx1ZSldLAogICAgICAgICAgICB9OwogICAgICAgIH07CgogICAgICAgIHJldHVybiBhcnJheV9yZWR1Y2UoCiAgICAgICAgICAgICRwYWlycywKICAgICAgICAgICAgZm4gKGFycmF5ICRjYXJyeSwgYXJyYXkgJHBhaXIpID0+IFsuLi4kY2FycnksICRkZWNvZGVQYWlyKCRwYWlyLCAkcGFpclZhbHVlU3RhdGUpXSwKICAgICAgICAgICAgW10KICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYSBjb2xsZWN0aW9uIG9mIGtleS92YWx1ZSBwYWlycyBhbmQgcmV0dXJucwogICAgICogdGhlIHN0b3JlIFBIUCB2YXJpYWJsZXMgYXMgZWxlbWVudHMgb2YgYW4gYXJyYXkuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29udmVydChpdGVyYWJsZSAkcGFpcnMsIFF1ZXJ5RXh0cmFjdE1vZGUgJGV4dHJhY3RNb2RlID0gUXVlcnlFeHRyYWN0TW9kZTo6VW5tYW5nbGVkKTogYXJyYXkKICAgIHsKICAgICAgICAkcmV0dXJuZWRWYWx1ZSA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRwYWlycyBhcyAkcGFpcikgewogICAgICAgICAgICAkcmV0dXJuZWRWYWx1ZSA9IHNlbGY6OmV4dHJhY3RQaHBWYXJpYWJsZSgkcmV0dXJuZWRWYWx1ZSwgJHBhaXIsIGV4dHJhY3RNb2RlOiAkZXh0cmFjdE1vZGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXR1cm5lZFZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgcXVlcnkgcGFpciBsaWtlIHBhcnNlX3N0ciB3aXRob3V0IG1hbmdsaW5nIHRoZSByZXN1bHRzIGFycmF5IGtleXMuCiAgICAgKgogICAgICogPHVsPgogICAgICogPGxpPmVtcHR5IG5hbWUgYXJlIG5vdCBzYXZlZDwvbGk+CiAgICAgKiA8bGk+SWYgdGhlIHZhbHVlIGZyb20gbmFtZSBpcyBkdXBsaWNhdGVkIGl0cyBjb3JyZXNwb25kaW5nIHZhbHVlIHdpbGwgYmUgb3ZlcndyaXR0ZW48L2xpPgogICAgICogPGxpPmlmIG5vICJbIiBpcyBkZXRlY3RlZCB0aGUgdmFsdWUgaXMgYWRkZWQgdG8gdGhlIHJldHVybiBhcnJheSB3aXRoIHRoZSBuYW1lIGFzIGluZGV4PC9saT4KICAgICAqIDxsaT5pZiBubyAiXSIgaXMgZGV0ZWN0ZWQgYWZ0ZXIgZGV0ZWN0aW5nIGEgIlsiIHRoZSB2YWx1ZSBpcyBhZGRlZCB0byB0aGUgcmV0dXJuIGFycmF5IHdpdGggdGhlIG5hbWUgYXMgaW5kZXg8L2xpPgogICAgICogPGxpPmlmIHRoZXJlJ3MgYSBtaXNtYXRjaCBpbiBicmFja2V0IHVzYWdlIHRoZSByZW1haW5pbmcgcGFydCBpcyBkcm9wcGVkPC9saT4KICAgICAqIDxsaT7igJwu4oCdIGFuZCDigJwg4oCdIGFyZSBub3QgY29udmVydGVkIHRvIOKAnF/igJ08L2xpPgogICAgICogPGxpPklmIHRoZXJlIGlzIG5vIOKAnF3igJ0sIHRoZW4gdGhlIGZpcnN0IOKAnFvigJ0gaXMgbm90IGNvbnZlcnRlZCB0byBiZWNvbWVzIGFuIOKAnF/igJ08L2xpPgogICAgICogPGxpPm5vIHdoaXRlc3BhY2UgdHJpbW1pbmcgaXMgZG9uZSBvbiB0aGUga2V5IHZhbHVlPC9saT4KICAgICAqIDwvdWw+CiAgICAgKgogICAgICogQHNlZSBodHRwczovL3BocC5uZXQvcGFyc2Vfc3RyCiAgICAgKiBAc2VlIGh0dHBzOi8vd2lraS5waHAubmV0L3JmYy9vbl9kZW1hbmRfbmFtZV9tYW5nbGluZwogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMvYmxvYi9tYXN0ZXIvZXh0L3N0YW5kYXJkL3Rlc3RzL3N0cmluZ3MvcGFyc2Vfc3RyX2Jhc2ljMS5waHB0CiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9waHAvcGhwLXNyYy9ibG9iL21hc3Rlci9leHQvc3RhbmRhcmQvdGVzdHMvc3RyaW5ncy9wYXJzZV9zdHJfYmFzaWMyLnBocHQKICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BocC9waHAtc3JjL2Jsb2IvbWFzdGVyL2V4dC9zdGFuZGFyZC90ZXN0cy9zdHJpbmdzL3BhcnNlX3N0cl9iYXNpYzMucGhwdAogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMvYmxvYi9tYXN0ZXIvZXh0L3N0YW5kYXJkL3Rlc3RzL3N0cmluZ3MvcGFyc2Vfc3RyX2Jhc2ljNC5waHB0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRkYXRhIHRoZSBzdWJtaXR0ZWQgYXJyYXkKICAgICAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJG5hbWUgdGhlIHBhaXIga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZSB0aGUgcGFpciB2YWx1ZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBleHRyYWN0UGhwVmFyaWFibGUoCiAgICAgICAgYXJyYXkgJGRhdGEsCiAgICAgICAgYXJyYXl8c3RyaW5nICRuYW1lLAogICAgICAgID9zdHJpbmcgJHZhbHVlID0gJycsCiAgICAgICAgUXVlcnlFeHRyYWN0TW9kZSAkZXh0cmFjdE1vZGUgPSBRdWVyeUV4dHJhY3RNb2RlOjpVbm1hbmdsZWQKICAgICk6IGFycmF5IHsKICAgICAgICBpZiAoaXNfYXJyYXkoJG5hbWUpKSB7CiAgICAgICAgICAgIFskbmFtZSwgJHZhbHVlXSA9ICRuYW1lOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gJHZhbHVlIHx8IFF1ZXJ5RXh0cmFjdE1vZGU6Okxvc3NMZXNzICE9PSAkZXh0cmFjdE1vZGUpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IHJhd3VybGRlY29kZSgoc3RyaW5nKSAkdmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJycgPT09ICRuYW1lKSB7CiAgICAgICAgICAgIHJldHVybiAkZGF0YTsKICAgICAgICB9CgogICAgICAgICRsZWZ0QnJhY2tldFBvc2l0aW9uID0gc3RycG9zKCRuYW1lLCAnWycpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGxlZnRCcmFja2V0UG9zaXRpb24pIHsKICAgICAgICAgICAgJGRhdGFbJG5hbWVdID0gJHZhbHVlOwoKICAgICAgICAgICAgcmV0dXJuICRkYXRhOwogICAgICAgIH0KCiAgICAgICAgJHJpZ2h0QnJhY2tldFBvc2l0aW9uID0gc3RycG9zKCRuYW1lLCAnXScsICRsZWZ0QnJhY2tldFBvc2l0aW9uKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRyaWdodEJyYWNrZXRQb3NpdGlvbikgewogICAgICAgICAgICAkZGF0YVskbmFtZV0gPSAkdmFsdWU7CgogICAgICAgICAgICByZXR1cm4gJGRhdGE7CiAgICAgICAgfQoKICAgICAgICAka2V5ID0gc3Vic3RyKCRuYW1lLCAwLCAkbGVmdEJyYWNrZXRQb3NpdGlvbik7CiAgICAgICAgaWYgKCcnID09PSAka2V5KSB7CiAgICAgICAgICAgICRrZXkgPSAnMCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGRhdGEpIHx8ICFpc19hcnJheSgkZGF0YVska2V5XSkpIHsKICAgICAgICAgICAgJGRhdGFbJGtleV0gPSBbXTsKICAgICAgICB9CgogICAgICAgICRyZW1haW5pbmcgPSBzdWJzdHIoJG5hbWUsICRyaWdodEJyYWNrZXRQb3NpdGlvbiArIDEpOwogICAgICAgIGlmICghc3RyX3N0YXJ0c193aXRoKCRyZW1haW5pbmcsICdbJykgfHwgIXN0cl9jb250YWlucygkcmVtYWluaW5nLCAnXScpKSB7CiAgICAgICAgICAgICRyZW1haW5pbmcgPSAnJzsKICAgICAgICB9CgogICAgICAgICRuYW1lID0gc3Vic3RyKCRuYW1lLCAkbGVmdEJyYWNrZXRQb3NpdGlvbiArIDEsICRyaWdodEJyYWNrZXRQb3NpdGlvbiAtICRsZWZ0QnJhY2tldFBvc2l0aW9uIC0gMSkuJHJlbWFpbmluZzsKICAgICAgICBpZiAoJycgPT09ICRuYW1lKSB7CiAgICAgICAgICAgICRkYXRhWyRrZXldW10gPSAkdmFsdWU7CgogICAgICAgICAgICByZXR1cm4gJGRhdGE7CiAgICAgICAgfQoKICAgICAgICAkZGF0YVska2V5XSA9IHNlbGY6OmV4dHJhY3RQaHBWYXJpYWJsZSgkZGF0YVska2V5XSwgJG5hbWUsICR2YWx1ZSwgJGV4dHJhY3RNb2RlKTsKCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/StringCoercionMode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIERhdGVUaW1lSW50ZXJmYWNlOwp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpQ29tcG9uZW50SW50ZXJmYWNlOwp1c2UgU3RyaW5nYWJsZTsKdXNlIFR5cGVFcnJvcjsKdXNlIFVyaVxSZmMzOTg2XFVyaSBhcyBSZmMzOTg2VXJpOwp1c2UgVXJpXFdoYXRXZ1xVcmwgYXMgV2hhdFdnVXJsOwp1c2UgVmFsdWVFcnJvcjsKCnVzZSBmdW5jdGlvbiBhcnJheV9pc19saXN0Owp1c2UgZnVuY3Rpb24gYXJyYXlfbWFwOwp1c2UgZnVuY3Rpb24gZ2V0X2RlYnVnX3R5cGU7CnVzZSBmdW5jdGlvbiBpbXBsb2RlOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBmdW5jdGlvbiBpc19mbG9hdDsKdXNlIGZ1bmN0aW9uIGlzX2luZmluaXRlOwp1c2UgZnVuY3Rpb24gaXNfbmFuOwp1c2UgZnVuY3Rpb24gaXNfb2JqZWN0Owp1c2UgZnVuY3Rpb24gaXNfcmVzb3VyY2U7CnVzZSBmdW5jdGlvbiBpc19zY2FsYXI7CnVzZSBmdW5jdGlvbiBqc29uX2VuY29kZTsKCnVzZSBjb25zdCBKU09OX1BSRVNFUlZFX1pFUk9fRlJBQ1RJT047CgplbnVtIFN0cmluZ0NvZXJjaW9uTW9kZQp7CiAgICAvKioKICAgICAqIFBIUCBjb252ZXJzaW9uIG1vZGUuCiAgICAgKgogICAgICogR3VhcmFudGVlcyB0aGF0IG9ubHkgc2NhbGFyIHZhbHVlcywgQmFja2VkRW51bSwgYW5kIG51bGwgYXJlIGFjY2VwdGVkLgogICAgICogQW55IG9iamVjdCwgTm9uLWJhY2tlZCBlbnVtcywgcmVzb3VyY2UsIG9yIHJlY3Vyc2l2ZSBzdHJ1Y3R1cmUgcmVzdWx0cyBpbiBhbiBlcnJvci4KICAgICAqCiAgICAgKiAtIG51bGw6IGlzIG5vdCBjb252ZXJ0ZWQgYW5kIHN0YXlzIHRoZSBgbnVsbGAgdmFsdWUKICAgICAqIC0gc3RyaW5nOiB1c2VkIGFzLWlzCiAgICAgKiAtIGJvb2w6IGNvbnZlcnRlZCB0byBzdHJpbmcg4oCcMOKAnSAoZmFsc2UpIG9yIOKAnDHigJ0gKHRydWUpCiAgICAgKiAtIGludDogY29udmVydGVkIHRvIG51bWVyaWMgc3RyaW5nICgxMjMgLT4g4oCcMTIz4oCdKQogICAgICogLSBmbG9hdDogY29udmVydGVkIHRvIGRlY2ltYWwgc3RyaW5nICgzLjE0IC0+IOKAnDMuMTTigJ0pCiAgICAgKiAtIEJhY2tlZCBFbnVtOiBjb252ZXJ0ZWQgdG8gdGhlaXIgYmFja2luZyB2YWx1ZSBhbmQgdGhlbiBzdHJpbmdpZnkgc2VlIGludCBhbmQgc3RyaW5nCiAgICAgKi8KICAgIGNhc2UgTmF0aXZlOwoKICAgIC8qKgogICAgICogRWNtYXNjcmlwdCBjb252ZXJzaW9uIG1vZGUuCiAgICAgKgogICAgICogR3VhcmFudGVlcyB0aGF0IG9ubHkgc2NhbGFyIHZhbHVlcywgQmFja2VkRW51bSwgYW5kIG51bGwgYXJlIGFjY2VwdGVkLgogICAgICogQW55IHJlc291cmNlLCBvciByZWN1cnNpdmUgc3RydWN0dXJlIHJlc3VsdHMgaW4gYW4gZXJyb3IuCiAgICAgKgogICAgICogLSBudWxsOiBjb252ZXJ0ZWQgdG8gc3RyaW5nIOKAnG51bGzigJ0KICAgICAqIC0gc3RyaW5nOiB1c2VkIGFzLWlzCiAgICAgKiAtIGJvb2w6IGNvbnZlcnRlZCB0byBzdHJpbmcg4oCcZmFsc2XigJ0gKGZhbHNlKSBvciDigJx0cnVl4oCdICh0cnVlKQogICAgICogLSBpbnQ6IGNvbnZlcnRlZCB0byBudW1lcmljIHN0cmluZyAoMTIzIC0+IOKAnDEyM+KAnSkKICAgICAqIC0gZmxvYXQ6IGNvbnZlcnRlZCB0byBkZWNpbWFsIHN0cmluZyAoMy4xNCAtPiDigJwzLjE04oCdKSwgIk5hTiIsICItSW5maW5pdHkiIG9yICJJbmZpbml0eSIKICAgICAqIC0gQmFja2VkIEVudW06IGNvbnZlcnRlZCB0byB0aGVpciBiYWNraW5nIHZhbHVlIGFuZCB0aGVuIHN0cmluZ2lmeSBzZWUgaW50IGFuZCBzdHJpbmcKICAgICAqIC0gQXJyYXkgYXMgbGlzdCBhcmUgZmxhdHRlbiBpbnRvIGEgc3RyaW5nIGxpc3QgdXNpbmcgdGhlICIsIiBjaGFyYWN0ZXIgYXMgc2VwYXJhdG9yCiAgICAgKiAtIEFzc29jaWF0aXZlIGFycmF5LCBOb24tYmFja2VkIGVudW1zLCBhbnkgb2JqZWN0IHdpdGhvdXQgc3RyaW5naWZpY2F0aW9uIHNlbWFudGljcyBpcyBjb2VyY2VkIHRvICJbb2JqZWN0IE9iamVjdF0iLgogICAgICogLSBEYXRlVGltZUludGVyZmFjZSBpbXBsZW1lbnRpbmcgb2JqZWN0IGFyZSBjb2VyY2UgdG8gdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIHVzaW5nIERhdGVUaW1lSW50ZXJmYWNlOjpSRkMyODIyIGZvcm1hdAogICAgICovCiAgICBjYXNlIEVjbWFzY3JpcHQ7CgogICAgcHJpdmF0ZSBjb25zdCBSRUNVUlNJT05fTUFSS0VSID0gIlwwX19SRUNVUlNJT05fSU5URVJOQUxfTUFSS0VSX1dIQVRXR19fXDAiOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0NvZXJjaWJsZShtaXhlZCAkdmFsdWUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OkVjbWFzY3JpcHQgPT09ICR0aGlzCiAgICAgICAgICAgID8gIWlzX3Jlc291cmNlKCR2YWx1ZSkKICAgICAgICAgICAgOiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgUmZjMzk4NlVyaSwKICAgICAgICAgICAgICAgICR2YWx1ZSBpbnN0YW5jZW9mIFdoYXRXZ1VybCwKICAgICAgICAgICAgICAgICR2YWx1ZSBpbnN0YW5jZW9mIEJhY2tlZEVudW0sCiAgICAgICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmdhYmxlLAogICAgICAgICAgICAgICAgaXNfc2NhbGFyKCR2YWx1ZSksCiAgICAgICAgICAgICAgICBudWxsID09PSAkdmFsdWUgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gZmFsc2UsCiAgICAgICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFR5cGVFcnJvciBpZiB0aGUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzcGVjaWZpYyBjYXNlCiAgICAgKiBAdGhyb3dzIFZhbHVlRXJyb3IgaWYgY2lyY3VsYXIgcmVmZXJlbmNlIGlzIGRldGVjdGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb2VyY2UobWl4ZWQgJHZhbHVlKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMpIHsKICAgICAgICAgICAgc2VsZjo6RWNtYXNjcmlwdCA9PiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgUmZjMzk4NlVyaSA9PiAkdmFsdWUtPnRvU3RyaW5nKCksCiAgICAgICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBXaGF0V2dVcmwgPT4gJHZhbHVlLT50b0FzY2lpU3RyaW5nKCksCiAgICAgICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBEYXRlVGltZUludGVyZmFjZSA9PiAkdmFsdWUtPmZvcm1hdChEYXRlVGltZUludGVyZmFjZTo6UkZDMjgyMiksCiAgICAgICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBCYWNrZWRFbnVtID0+IChzdHJpbmcpICR2YWx1ZS0+dmFsdWUsCiAgICAgICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmdhYmxlID0+ICR2YWx1ZS0+X190b1N0cmluZygpLAogICAgICAgICAgICAgICAgaXNfb2JqZWN0KCR2YWx1ZSkgPT4gJ1tvYmplY3QgT2JqZWN0XScsCiAgICAgICAgICAgICAgICBpc19hcnJheSgkdmFsdWUpID0+IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZjo6aGFzQ2lyY3VsYXJSZWZlcmVuY2UoJHZhbHVlKSA9PiB0aHJvdyBuZXcgVmFsdWVFcnJvcignUmVjdXJzaXZlIGFycmF5IHN0cnVjdHVyZSBkZXRlY3RlZDsgdW5hYmxlIHRvIGNvZXJjZSB2YWx1ZS4nKSwKICAgICAgICAgICAgICAgICAgICBhcnJheV9pc19saXN0KCR2YWx1ZSkgPT4gaW1wbG9kZSgnLCcsIGFycmF5X21hcCgkdGhpcy0+Y29lcmNlKC4uLiksICR2YWx1ZSkpLAogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gJ1tvYmplY3QgT2JqZWN0XScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdHJ1ZSA9PT0gJHZhbHVlID0+ICd0cnVlJywKICAgICAgICAgICAgICAgIGZhbHNlID09PSAkdmFsdWUgPT4gJ2ZhbHNlJywKICAgICAgICAgICAgICAgIG51bGwgPT09ICR2YWx1ZSA9PiAnbnVsbCcsCiAgICAgICAgICAgICAgICBpc19mbG9hdCgkdmFsdWUpID0+IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgaXNfbmFuKCR2YWx1ZSkgPT4gJ05hTicsCiAgICAgICAgICAgICAgICAgICAgaXNfaW5maW5pdGUoJHZhbHVlKSA9PiAwIDwgJHZhbHVlID8gJ0luZmluaXR5JyA6ICctSW5maW5pdHknLAogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gKHN0cmluZykganNvbl9lbmNvZGUoJHZhbHVlLCBKU09OX1BSRVNFUlZFX1pFUk9fRlJBQ1RJT04pLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGlzX3NjYWxhcigkdmFsdWUpID0+IChzdHJpbmcpICR2YWx1ZSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gdGhyb3cgbmV3IFR5cGVFcnJvcignVW5hYmxlIHRvIGNvZXJjZSB2YWx1ZSBvZiB0eXBlICInLmdldF9kZWJ1Z190eXBlKCR2YWx1ZSkuJyIgd2l0aCAiJy4kdGhpcy0+bmFtZS4nIiBjb2VyY2lvbi4nKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2VsZjo6TmF0aXZlID0+IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBVcmlDb21wb25lbnRJbnRlcmZhY2UgPT4gJHZhbHVlLT52YWx1ZSgpLAogICAgICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgV2hhdFdnVXJsID0+ICR2YWx1ZS0+dG9Bc2NpaVN0cmluZygpLAogICAgICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgUmZjMzk4NlVyaSA9PiAkdmFsdWUtPnRvU3RyaW5nKCksCiAgICAgICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBCYWNrZWRFbnVtID0+IChzdHJpbmcpICR2YWx1ZS0+dmFsdWUsCiAgICAgICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmdhYmxlID0+ICR2YWx1ZS0+X190b1N0cmluZygpLAogICAgICAgICAgICAgICAgZmFsc2UgPT09ICR2YWx1ZSA9PiAnMCcsCiAgICAgICAgICAgICAgICB0cnVlID09PSAkdmFsdWUgPT4gJzEnLAogICAgICAgICAgICAgICAgbnVsbCA9PT0gJHZhbHVlID0+IG51bGwsCiAgICAgICAgICAgICAgICBpc19zY2FsYXIoJHZhbHVlKSA9PiAoc3RyaW5nKSAkdmFsdWUsCiAgICAgICAgICAgICAgICBkZWZhdWx0ID0+IHRocm93IG5ldyBUeXBlRXJyb3IoJ1VuYWJsZSB0byBjb2VyY2UgdmFsdWUgb2YgdHlwZSAiJy5nZXRfZGVidWdfdHlwZSgkdmFsdWUpLiciIHdpdGggIicuJHRoaXMtPm5hbWUuJyIgY29lcmNpb24uJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIEFycmF5IHJlY3Vyc2lvbiBkZXRlY3Rpb24uCiAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzkwNDIxNDIvZGV0ZWN0aW5nLWluZmluaXRlLWFycmF5LXJlY3Vyc2lvbi1pbi1waHAKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaGFzQ2lyY3VsYXJSZWZlcmVuY2UoYXJyYXkgJiRhcnIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRhcnJbc2VsZjo6UkVDVVJTSU9OX01BUktFUl0pKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGFycltzZWxmOjpSRUNVUlNJT05fTUFSS0VSXSA9IHRydWU7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhcnIgYXMgJGtleSA9PiAmJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoc2VsZjo6UkVDVVJTSU9OX01BUktFUiAhPT0gJGtleSAmJiBpc19hcnJheSgkdmFsdWUpICYmIHNlbGY6Omhhc0NpcmN1bGFyUmVmZXJlbmNlKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIHVuc2V0KCRhcnJbc2VsZjo6UkVDVVJTSU9OX01BUktFUl0pOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/UriComparisonMode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7CgplbnVtIFVyaUNvbXBhcmlzb25Nb2RlCnsKICAgIGNhc2UgSW5jbHVkZUZyYWdtZW50OwogICAgY2FzZSBFeGNsdWRlRnJhZ21lbnQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/UriString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIERlcHJlY2F0ZWQ7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBMZWFndWVcVXJpXElkbmFcQ29udmVydGVyIGFzIElkbmFDb252ZXJ0ZXI7CnVzZSBTdHJpbmdhYmxlOwp1c2UgVGhyb3dhYmxlOwoKdXNlIGZ1bmN0aW9uIGFycmF5X21hcDsKdXNlIGZ1bmN0aW9uIGFycmF5X21lcmdlOwp1c2UgZnVuY3Rpb24gYXJyYXlfcG9wOwp1c2UgZnVuY3Rpb24gYXJyYXlfcmVkdWNlOwp1c2UgZnVuY3Rpb24gZGVmaW5lZDsKdXNlIGZ1bmN0aW9uIGV4cGxvZGU7CnVzZSBmdW5jdGlvbiBmaWx0ZXJfdmFyOwp1c2UgZnVuY3Rpb24gZnVuY3Rpb25fZXhpc3RzOwp1c2UgZnVuY3Rpb24gaW1wbG9kZTsKdXNlIGZ1bmN0aW9uIHByZWdfbWF0Y2g7CnVzZSBmdW5jdGlvbiBzcHJpbnRmOwp1c2UgZnVuY3Rpb24gc3RyX3JlcGxhY2U7CnVzZSBmdW5jdGlvbiBzdHJwb3M7CnVzZSBmdW5jdGlvbiBzdHJ0b2xvd2VyOwp1c2UgZnVuY3Rpb24gc3Vic3RyOwoKdXNlIGNvbnN0IEZJTFRFUl9GTEFHX0lQVjQ7CnVzZSBjb25zdCBGSUxURVJfVkFMSURBVEVfSVA7CgovKioKICogQSBjbGFzcyB0byBwYXJzZSBhIFVSSSBzdHJpbmcgYWNjb3JkaW5nIHRvIFJGQzM5ODYuCiAqCiAqIEBsaW5rICAgIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2CiAqIEBwYWNrYWdlIExlYWd1ZVxVcmkKICogQGF1dGhvciAgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqIEBzaW5jZSAgIDYuMC4wCiAqCiAqIEBwaHBzdGFuLXR5cGUgQXV0aG9yaXR5TWFwIGFycmF5e3VzZXI6ID9zdHJpbmcsIHBhc3M6ID9zdHJpbmcsIGhvc3Q6ID9zdHJpbmcsIHBvcnQ6ID9pbnR9CiAqIEBwaHBzdGFuLXR5cGUgQ29tcG9uZW50TWFwIGFycmF5e3NjaGVtZTogP3N0cmluZywgdXNlcjogP3N0cmluZywgcGFzczogP3N0cmluZywgaG9zdDogP3N0cmluZywgcG9ydDogP2ludCwgcGF0aDogc3RyaW5nLCBxdWVyeTogP3N0cmluZywgZnJhZ21lbnQ6ID9zdHJpbmd9CiAqIEBwaHBzdGFuLXR5cGUgSW5wdXRDb21wb25lbnRNYXAgYXJyYXl7c2NoZW1lPyA6ID9zdHJpbmcsIHVzZXI/IDogP3N0cmluZywgcGFzcz8gOiA/c3RyaW5nLCBob3N0PyA6ID9zdHJpbmcsIHBvcnQ/IDogP2ludCwgcGF0aD8gOiA/c3RyaW5nLCBxdWVyeT8gOiA/c3RyaW5nLCBmcmFnbWVudD8gOiA/c3RyaW5nfQogKi8KZmluYWwgY2xhc3MgVXJpU3RyaW5nCnsKICAgIC8qKgogICAgICogRGVmYXVsdCBVUkkgY29tcG9uZW50IHZhbHVlcy4KICAgICAqCiAgICAgKiBAdmFyIENvbXBvbmVudE1hcAogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFVSSV9DT01QT05FTlRTID0gWwogICAgICAgICdzY2hlbWUnID0+IG51bGwsICd1c2VyJyA9PiBudWxsLCAncGFzcycgPT4gbnVsbCwgJ2hvc3QnID0+IG51bGwsCiAgICAgICAgJ3BvcnQnID0+IG51bGwsICdwYXRoJyA9PiAnJywgJ3F1ZXJ5JyA9PiBudWxsLCAnZnJhZ21lbnQnID0+IG51bGwsCiAgICBdOwoKICAgIC8qKgogICAgICogU2ltcGxlIFVSSSB3aGljaCBkbyBub3QgbmVlZCBhbnkgcGFyc2luZy4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgYXJyYXk8c3RyaW5nPj4KICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBVUklfU0hPUlRDVVRTID0gWwogICAgICAgICcnID0+IFsncGF0aCcgPT4gJyddLAogICAgICAgICcjJyA9PiBbJ2ZyYWdtZW50JyA9PiAnJ10sCiAgICAgICAgJz8nID0+IFsncXVlcnknID0+ICcnXSwKICAgICAgICAnPyMnID0+IFsncXVlcnknID0+ICcnLCAnZnJhZ21lbnQnID0+ICcnXSwKICAgICAgICAnLycgPT4gWydwYXRoJyA9PiAnLyddLAogICAgICAgICcvLycgPT4gWydob3N0JyA9PiAnJ10sCiAgICAgICAgJy8vLycgPT4gWydob3N0JyA9PiAnJywgJ3BhdGgnID0+ICcvJ10sCiAgICBdOwoKICAgIC8qKgogICAgICogUmFuZ2Ugb2YgaW52YWxpZCBjaGFyYWN0ZXJzIGluIFVSSSAzOTg2IHN0cmluZy4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFJFR0VYUF9WQUxJRF9VUklfUkZDMzk4Nl9DSEFSUyA9ICcvXig/OltBLVphLXowLTlcLS5ffjpcLz8jW1xdQCEkJlwnKCkqKyw7PSVdfCVbMC05QS1GYS1mXXsyfSkqJC8nOwoKICAgIC8qKgogICAgICogUmFuZ2Ugb2YgaW52YWxpZCBjaGFyYWN0ZXJzIGluIFVSSSAzOTg3IHN0cmluZy4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFJFR0VYUF9JTlZBTElEX1VSSV9SRkMzOTg3X0NIQVJTID0gJy9bXHgwMC1ceDFmXHg3ZlxzXS8nOwoKICAgIC8qKgogICAgICogUkZDMzk4NiByZWd1bGFyIGV4cHJlc3Npb24gVVJJIHNwbGl0dGVyLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I2FwcGVuZGl4LUIKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX1VSSV9QQVJUUyA9ICcsXgogICAgICAgICg/PHNjaGVtZT4oPzxzY29udGVudD5bXjovP1wjXSspOik/ICAgICMgVVJJIHNjaGVtZSBjb21wb25lbnQKICAgICAgICAoPzxhdXRob3JpdHk+Ly8oPzxhY29udGVudD5bXi8/XCNdKikpPyAjIFVSSSBhdXRob3JpdHkgcGFydAogICAgICAgICg/PHBhdGg+W14/XCNdKikgICAgICAgICAgICAgICAgICAgICAgICMgVVJJIHBhdGggY29tcG9uZW50CiAgICAgICAgKD88cXVlcnk+XD8oPzxxY29udGVudD5bXlwjXSopKT8gICAgICAgIyBVUkkgcXVlcnkgY29tcG9uZW50CiAgICAgICAgKD88ZnJhZ21lbnQ+XCMoPzxmY29udGVudD4uKikpPyAgICAgICAgIyBVUkkgZnJhZ21lbnQgY29tcG9uZW50CiAgICAseCc7CgogICAgLyoqCiAgICAgKiBVUkkgc2NoZW1lIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMQogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfVVJJX1NDSEVNRSA9ICcvXihbYS16XVthLXpcZCsuLV0qKT8kL2knOwoKICAgIC8qKgogICAgICogSW52YWxpZCBwYXRoIGZvciBVUkkgd2l0aG91dCBzY2hlbWUgYW5kIGF1dGhvcml0eSByZWd1bGFyIGV4cHJlc3Npb24uCiAgICAgKgogICAgICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjMKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX0lOVkFMSURfUEFUSCA9ICcsXigoW14vXSopOikoLiopPy8sJzsKCiAgICAvKioKICAgICAqIEhvc3QgYW5kIFBvcnQgc3BsaXR0ZXIgcmVndWxhciBleHByZXNzaW9uLgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX0hPU1RfUE9SVCA9ICcsXig/PGhvc3Q+XFsuKlxdfFteOl0qKSg6KD88cG9ydD4uKikpPyQsJzsKCiAgICAvKiogQHZhciBhcnJheTxzdHJpbmcsaW50PiAqLwogICAgcHJpdmF0ZSBjb25zdCBET1RfU0VHTUVOVFMgPSBbJy4nID0+IDEsICcuLicgPT4gMV07CgogICAgLyoqCiAgICAgKiBHZW5lcmF0ZSBhbiBJUkkgc3RyaW5nIHJlcHJlc2VudGF0aW9uIChSRkMzOTg3KSBmcm9tIGl0cyBwYXJzZWQgcmVwcmVzZW50YXRpb24KICAgICAqIHJldHVybmVkIGJ5IExlYWd1ZVxVcmlTdHJpbmc6OnBhcnNlKCkgb3IgUEhQJ3MgcGFyc2VfdXJsLgogICAgICoKICAgICAqIElmIHlvdSBzdXBwbHkgeW91ciBvd24gYXJyYXksIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZwogICAgICogdmFsaWQgY29tcG9uZW50cyB3aXRob3V0IHRoZWlyIFVSSSBkZWxpbWl0ZXJzLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4zCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTcuNQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvSXJpU3RyaW5nKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJHVyaSk6IHN0cmluZwogICAgewogICAgICAgICRjb21wb25lbnRzID0gc2VsZjo6cGFyc2UoJHVyaSk7CiAgICAgICAgJHBvcnQgPSBudWxsOwogICAgICAgIGlmIChpc3NldCgkY29tcG9uZW50c1sncG9ydCddKSkgewogICAgICAgICAgICAkcG9ydCA9IChpbnQpICRjb21wb25lbnRzWydwb3J0J107CiAgICAgICAgICAgIHVuc2V0KCRjb21wb25lbnRzWydwb3J0J10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgIT09ICRjb21wb25lbnRzWydob3N0J10pIHsKICAgICAgICAgICAgJGNvbXBvbmVudHNbJ2hvc3QnXSA9IElkbmFDb252ZXJ0ZXI6OnRvVW5pY29kZSgkY29tcG9uZW50c1snaG9zdCddKS0+ZG9tYWluKCk7CiAgICAgICAgfQoKICAgICAgICAkY29tcG9uZW50c1sncGF0aCddID0gRW5jb2Rlcjo6ZGVjb2RlUGF0aCgkY29tcG9uZW50c1sncGF0aCddKTsKICAgICAgICAkY29tcG9uZW50c1sndXNlciddID0gRW5jb2Rlcjo6ZGVjb2RlTmVjZXNzYXJ5KCRjb21wb25lbnRzWyd1c2VyJ10pOwogICAgICAgICRjb21wb25lbnRzWydwYXNzJ10gPSBFbmNvZGVyOjpkZWNvZGVOZWNlc3NhcnkoJGNvbXBvbmVudHNbJ3Bhc3MnXSk7CiAgICAgICAgJGNvbXBvbmVudHNbJ3F1ZXJ5J10gPSBFbmNvZGVyOjpkZWNvZGVRdWVyeSgkY29tcG9uZW50c1sncXVlcnknXSk7CiAgICAgICAgJGNvbXBvbmVudHNbJ2ZyYWdtZW50J10gPSBFbmNvZGVyOjpkZWNvZGVGcmFnbWVudCgkY29tcG9uZW50c1snZnJhZ21lbnQnXSk7CgogICAgICAgIHJldHVybiBzZWxmOjpidWlsZChbCiAgICAgICAgICAgIC4uLmFycmF5X21hcChmbiAoP3N0cmluZyAkdmFsdWUpID0+IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICBudWxsID09PSAkdmFsdWUsCiAgICAgICAgICAgICAgICAhc3RyX2NvbnRhaW5zKCR2YWx1ZSwgJyUyMCcpID0+ICR2YWx1ZSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gc3RyX3JlcGxhY2UoJyUyMCcsICcgJywgJHZhbHVlKSwKICAgICAgICAgICAgfSwgJGNvbXBvbmVudHMpLAogICAgICAgICAgICAuLi5bJ3BvcnQnID0+ICRwb3J0XSwKICAgICAgICBdKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlIGEgVVJJIHN0cmluZyByZXByZXNlbnRhdGlvbiBmcm9tIGl0cyBwYXJzZWQgcmVwcmVzZW50YXRpb24KICAgICAqIHJldHVybmVkIGJ5IExlYWd1ZVxVcmlTdHJpbmc6OnBhcnNlKCkgb3IgUEhQJ3MgcGFyc2VfdXJsLgogICAgICoKICAgICAqIElmIHlvdSBzdXBwbHkgeW91ciBvd24gYXJyYXksIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZwogICAgICogdmFsaWQgY29tcG9uZW50cyB3aXRob3V0IHRoZWlyIFVSSSBkZWxpbWl0ZXJzLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4zCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTcuNQogICAgICoKICAgICAqIEBwYXJhbSBJbnB1dENvbXBvbmVudE1hcCAkY29tcG9uZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJ1aWxkKGFycmF5ICRjb21wb25lbnRzKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmJ1aWxkVXJpKAogICAgICAgICAgICAkY29tcG9uZW50c1snc2NoZW1lJ10gPz8gbnVsbCwKICAgICAgICAgICAgc2VsZjo6YnVpbGRBdXRob3JpdHkoJGNvbXBvbmVudHMpLAogICAgICAgICAgICAkY29tcG9uZW50c1sncGF0aCddID8/IG51bGwsCiAgICAgICAgICAgICRjb21wb25lbnRzWydxdWVyeSddID8/IG51bGwsCiAgICAgICAgICAgICRjb21wb25lbnRzWydmcmFnbWVudCddID8/IG51bGwsCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlcyBhIFVSSSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYmFzZWQgb24gUkZDMzk4NiBhbGdvcml0aG0uCiAgICAgKgogICAgICogVmFsaWQgVVJJIGNvbXBvbmVudCBNVVNUIGJlIHByb3ZpZGVkIHdpdGhvdXQgdGhlaXIgVVJJIGRlbGltaXRlcnMKICAgICAqIGJ1dCBwcm9wZXJseSBlbmNvZGVkLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4zCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTcuNcKnCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGRVcmkoCiAgICAgICAgP3N0cmluZyAkc2NoZW1lID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRhdXRob3JpdHkgPSBudWxsLAogICAgICAgID9zdHJpbmcgJHBhdGggPSBudWxsLAogICAgICAgID9zdHJpbmcgJHF1ZXJ5ID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRmcmFnbWVudCA9IG51bGwsCiAgICApOiBzdHJpbmcgewogICAgICAgIHNlbGY6OnZhbGlkYXRlQ29tcG9uZW50cygkc2NoZW1lLCAkYXV0aG9yaXR5LCAkcGF0aCk7CiAgICAgICAgJHVyaSA9ICcnOwogICAgICAgIGlmIChudWxsICE9PSAkc2NoZW1lKSB7CiAgICAgICAgICAgICR1cmkgLj0gJHNjaGVtZS4nOic7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJGF1dGhvcml0eSkgewogICAgICAgICAgICAkdXJpIC49ICcvLycuJGF1dGhvcml0eTsKICAgICAgICB9CgogICAgICAgICR1cmkgLj0gJHBhdGg7CiAgICAgICAgaWYgKG51bGwgIT09ICRxdWVyeSkgewogICAgICAgICAgICAkdXJpIC49ICc/Jy4kcXVlcnk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJGZyYWdtZW50KSB7CiAgICAgICAgICAgICR1cmkgLj0gJyMnLiRmcmFnbWVudDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGUgYSBVUkkgYXV0aG9yaXR5IHJlcHJlc2VudGF0aW9uIGZyb20gaXRzIHBhcnNlZCByZXByZXNlbnRhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gSW5wdXRDb21wb25lbnRNYXAgJGNvbXBvbmVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBidWlsZEF1dGhvcml0eShhcnJheSAkY29tcG9uZW50cyk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRjb21wb25lbnRzWydob3N0J10pKSB7CiAgICAgICAgICAgICghaXNzZXQoJGNvbXBvbmVudHNbJ3VzZXInXSkgJiYgIWlzc2V0KCRjb21wb25lbnRzWydwYXNzJ10pKSB8fCB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSB1c2VyIGluZm8gY29tcG9uZW50IG11c3Qgbm90IGJlIHNldCBpZiB0aGUgaG9zdCBpcyBub3QgZGVmaW5lZC4nKTsKICAgICAgICAgICAgIWlzc2V0KCRjb21wb25lbnRzWydwb3J0J10pIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIHBvcnQgY29tcG9uZW50IG11c3Qgbm90IGJlIHNldCBpZiB0aGUgaG9zdCBpcyBub3QgZGVmaW5lZC4nKTsKCiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHVzZXJJbmZvID0gJGNvbXBvbmVudHNbJ3VzZXInXSA/PyBudWxsOwogICAgICAgIGlmIChpc3NldCgkY29tcG9uZW50c1sncGFzcyddKSkgewogICAgICAgICAgICAkdXNlckluZm8gLj0gJzonLiRjb21wb25lbnRzWydwYXNzJ107CiAgICAgICAgfQoKICAgICAgICAkYXV0aG9yaXR5ID0gJyc7CiAgICAgICAgaWYgKGlzc2V0KCR1c2VySW5mbykpIHsKICAgICAgICAgICAgJGF1dGhvcml0eSAuPSAkdXNlckluZm8uJ0AnOwogICAgICAgIH0KCiAgICAgICAgJGF1dGhvcml0eSAuPSAkY29tcG9uZW50c1snaG9zdCddOwogICAgICAgIGlmIChpc3NldCgkY29tcG9uZW50c1sncG9ydCddKSkgewogICAgICAgICAgICAkYXV0aG9yaXR5IC49ICc6Jy4kY29tcG9uZW50c1sncG9ydCddOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRhdXRob3JpdHk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgYW5kIG5vcm1hbGl6ZXMgdGhlIFVSSSBmb2xsb3dpbmcgUkZDMzk4NiBkZXN0cnVjdGl2ZSBhbmQgbm9uLWRlc3RydWN0aXZlIGNvbnN0cmFpbnRzLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIFVSSSBpcyBub3QgcGFyc2FibGUKICAgICAqCiAgICAgKiBAcmV0dXJuIENvbXBvbmVudE1hcAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlTm9ybWFsaXplZChTdHJpbmdhYmxlfHN0cmluZyAkdXJpKTogYXJyYXkKICAgIHsKICAgICAgICAkY29tcG9uZW50cyA9IHNlbGY6OnBhcnNlKCR1cmkpOwogICAgICAgIGlmIChudWxsICE9PSAkY29tcG9uZW50c1snc2NoZW1lJ10pIHsKICAgICAgICAgICAgJGNvbXBvbmVudHNbJ3NjaGVtZSddID0gc3RydG9sb3dlcigkY29tcG9uZW50c1snc2NoZW1lJ10pOwogICAgICAgIH0KCiAgICAgICAgJGNvbXBvbmVudHNbJ2hvc3QnXSA9IHNlbGY6Om5vcm1hbGl6ZUhvc3QoJGNvbXBvbmVudHNbJ2hvc3QnXSk7CiAgICAgICAgJHBhdGggPSAkY29tcG9uZW50c1sncGF0aCddOwogICAgICAgICRhdXRob3JpdHkgPSBzZWxmOjpidWlsZEF1dGhvcml0eSgkY29tcG9uZW50cyk7CiAgICAgICAgLy9kb3Qgc2VnbWVudCBvbmx5IGhhcHBlbnMgd2hlbjoKICAgICAgICAvLyAtIHRoZSBwYXRoIGlzIGFic29sdXRlCiAgICAgICAgLy8gLSB0aGUgc2NoZW1lIGFuZC9vciB0aGUgYXV0aG9yaXR5IGFyZSBkZWZpbmVkCiAgICAgICAgaWYgKCcvJyA9PT0gKCRwYXRoWzBdID8/ICcnKSB8fCAnJyAhPT0gJGNvbXBvbmVudHNbJ3NjaGVtZSddLiRhdXRob3JpdHkpIHsKICAgICAgICAgICAgJHBhdGggPSBzZWxmOjpyZW1vdmVEb3RTZWdtZW50cygkcGF0aCk7CiAgICAgICAgfQoKICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbiBhdXRob3JpdHksIHRoZSBwYXRoIG11c3QgYmUgYWJzb2x1dGUKICAgICAgICBpZiAoJycgIT09ICRwYXRoICYmICcvJyAhPT0gJHBhdGhbMF0pIHsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICRhdXRob3JpdHkpIHsKICAgICAgICAgICAgICAgICRwYXRoID0gJy8nLiRwYXRoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkY29tcG9uZW50c1sncGF0aCddID0gKHN0cmluZykgRW5jb2Rlcjo6bm9ybWFsaXplUGF0aCgkcGF0aCk7CiAgICAgICAgJGNvbXBvbmVudHNbJ3F1ZXJ5J10gPSBFbmNvZGVyOjpub3JtYWxpemVRdWVyeSgkY29tcG9uZW50c1sncXVlcnknXSk7CiAgICAgICAgJGNvbXBvbmVudHNbJ2ZyYWdtZW50J10gPSBFbmNvZGVyOjpub3JtYWxpemVGcmFnbWVudCgkY29tcG9uZW50c1snZnJhZ21lbnQnXSk7CiAgICAgICAgJGNvbXBvbmVudHNbJ3VzZXInXSA9IEVuY29kZXI6Om5vcm1hbGl6ZVVzZXIoJGNvbXBvbmVudHNbJ3VzZXInXSk7CiAgICAgICAgJGNvbXBvbmVudHNbJ3Bhc3MnXSA9IEVuY29kZXI6Om5vcm1hbGl6ZVBhc3N3b3JkKCRjb21wb25lbnRzWydwYXNzJ10pOwoKICAgICAgICByZXR1cm4gJGNvbXBvbmVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgYW5kIG5vcm1hbGl6ZXMgdGhlIFVSSSBmb2xsb3dpbmcgUkZDMzk4NiBkZXN0cnVjdGl2ZSBhbmQgbm9uLWRlc3RydWN0aXZlIGNvbnN0cmFpbnRzLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIFVSSSBpcyBub3QgcGFyc2FibGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoU3RyaW5nYWJsZXxzdHJpbmcgJHVyaSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBzZWxmOjpidWlsZChzZWxmOjpwYXJzZU5vcm1hbGl6ZWQoJHVyaSkpOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGFuZCBub3JtYWxpemVzIHRoZSBVUkkgZm9sbG93aW5nIFJGQzM5ODYgZGVzdHJ1Y3RpdmUgYW5kIG5vbi1kZXN0cnVjdGl2ZSBjb25zdHJhaW50cy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSBVUkkgaXMgbm90IHBhcnNhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplQXV0aG9yaXR5KFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGF1dGhvcml0eSk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGF1dGhvcml0eSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRjb21wb25lbnRzID0gc2VsZjo6cGFyc2VBdXRob3JpdHkoJGF1dGhvcml0eSk7CiAgICAgICAgJGNvbXBvbmVudHNbJ2hvc3QnXSA9IHNlbGY6Om5vcm1hbGl6ZUhvc3QoJGNvbXBvbmVudHNbJ2hvc3QnXSA/PyBudWxsKTsKICAgICAgICAkY29tcG9uZW50c1sndXNlciddID0gRW5jb2Rlcjo6bm9ybWFsaXplVXNlcigkY29tcG9uZW50c1sndXNlciddKTsKICAgICAgICAkY29tcG9uZW50c1sncGFzcyddID0gRW5jb2Rlcjo6bm9ybWFsaXplUGFzc3dvcmQoJGNvbXBvbmVudHNbJ3Bhc3MnXSk7CgogICAgICAgIHJldHVybiAoc3RyaW5nKSBzZWxmOjpidWlsZEF1dGhvcml0eSgkY29tcG9uZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXNvbHZlcyBhIFVSSSBhZ2FpbnN0IGEgYmFzZSBVUkkgdXNpbmcgUkZDMzk4NiBydWxlcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIHN1Ym1pdHRlZCBVUkkgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGEgVVJJIGluc3RhbmNlIG9mIHRoZSBzYW1lIHR5cGUgdGhhdCBjb250YWlucyB0aGUgYXBwbGllZCBtb2RpZmljYXRpb25zLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgdHJhbnNwYXJlbnQgd2hlbiBkZWFsaW5nIHdpdGggZXJyb3IgYW5kIGV4Y2VwdGlvbnMuCiAgICAgKiBJdCBNVVNUIG5vdCBhbHRlciBvciBzaWxlbmNlIHRoZW0gYXBhcnQgZnJvbSB2YWxpZGF0aW5nIGl0cyBvd24gcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMzOTg2Lmh0bWwjc2VjdGlvbi01CiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgQmFzZVVyaSBpcyBub3QgYWJzb2x1dGUgb3IgaW4gYWJzZW5jZSBvZiBhIEJhc2VVcmkgaWYgdGhlIHVyaSBpcyBub3QgYWJzb2x1dGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJHVyaSwgQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRiYXNlVXJpID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgkdXJpIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkdXJpID0gKHN0cmluZykgJHVyaS0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJhc2VVcmkgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICRiYXNlVXJpID0gKHN0cmluZykgJGJhc2VVcmktPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9IChzdHJpbmcpICR1cmk7CiAgICAgICAgaWYgKCcnID09PSAkdXJpKSB7CiAgICAgICAgICAgICR1cmkgPSAkYmFzZVVyaSA/PyB0aHJvdyBuZXcgU3ludGF4RXJyb3IoIlRoZSB1cmkgY2FuIG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIHdoZW4gdGhlcmUncyBubyBiYXNlIFVSSS4iKTsKICAgICAgICB9CgogICAgICAgICR1cmlDb21wb25lbnRzID0gc2VsZjo6cGFyc2UoJHVyaSk7CiAgICAgICAgJGJhc2VVcmlDb21wb25lbnRzID0gJHVyaUNvbXBvbmVudHM7CiAgICAgICAgaWYgKG51bGwgIT09ICRiYXNlVXJpICYmICR1cmkgIT09IChzdHJpbmcpICRiYXNlVXJpKSB7CiAgICAgICAgICAgICRiYXNlVXJpQ29tcG9uZW50cyA9IHNlbGY6OnBhcnNlKCRiYXNlVXJpKTsKICAgICAgICB9CgogICAgICAgIG51bGwgIT09ICRiYXNlVXJpQ29tcG9uZW50c1snc2NoZW1lJ10gfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgYmFzZSBVUkkgbXVzdCBiZSBhbiBhYnNvbHV0ZSBVUkkgb3IgbnVsbDsgSWYgdGhlIGJhc2UgVVJJIGlzIG51bGwgdGhlIFVSSSBtdXN0IGJlIGFuIGFic29sdXRlIFVSSS4nKTsKCiAgICAgICAgJGF1dGhvcml0eSA9IHNlbGY6OmJ1aWxkQXV0aG9yaXR5KCR1cmlDb21wb25lbnRzKTsKICAgICAgICAkcGF0aCA9IHNlbGY6OnJlbW92ZURvdFNlZ21lbnRzKCR1cmlDb21wb25lbnRzWydwYXRoJ10pOwogICAgICAgIGlmICgnJyAhPT0gJHBhdGggJiYgJy8nICE9PSAkcGF0aFswXSAmJiAobnVsbCAhPT0gJGF1dGhvcml0eSB8fCAkdXJpQ29tcG9uZW50c1sncGF0aCddICE9PSAkcGF0aCkpIHsKICAgICAgICAgICAgJHBhdGggPSAnLycuJHBhdGg7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHVyaUNvbXBvbmVudHNbJ3NjaGVtZSddICYmICcnICE9PSAkdXJpQ29tcG9uZW50c1snc2NoZW1lJ10pIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmJ1aWxkVXJpKCR1cmlDb21wb25lbnRzWydzY2hlbWUnXSwgJGF1dGhvcml0eSwgJHBhdGgsICR1cmlDb21wb25lbnRzWydxdWVyeSddLCAkdXJpQ29tcG9uZW50c1snZnJhZ21lbnQnXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJGF1dGhvcml0eSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6YnVpbGRVcmkoJGJhc2VVcmlDb21wb25lbnRzWydzY2hlbWUnXSwgJGF1dGhvcml0eSwgJHBhdGgsICR1cmlDb21wb25lbnRzWydxdWVyeSddLCAkdXJpQ29tcG9uZW50c1snZnJhZ21lbnQnXSk7CiAgICAgICAgfQoKICAgICAgICBbJHJlc29sdmVkUGF0aCwgJHF1ZXJ5XSA9IHNlbGY6OnJlc29sdmVQYXRoQW5kUXVlcnkoJHVyaUNvbXBvbmVudHMsICRiYXNlVXJpQ29tcG9uZW50cyk7CiAgICAgICAgJGJhc2VBdXRob3JpdHkgPSBzZWxmOjpidWlsZEF1dGhvcml0eSgkYmFzZVVyaUNvbXBvbmVudHMpOwogICAgICAgICRwYXRoID0gc2VsZjo6cmVtb3ZlRG90U2VnbWVudHMoJHJlc29sdmVkUGF0aCk7CiAgICAgICAgaWYgKCcnICE9PSAkcGF0aCAmJiAnLycgIT09ICRwYXRoWzBdICYmIChudWxsICE9PSAkYmFzZUF1dGhvcml0eSB8fCAkcmVzb2x2ZWRQYXRoICE9PSAkcGF0aCkpIHsKICAgICAgICAgICAgJHBhdGggPSAnLycuJHBhdGg7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6YnVpbGRVcmkoJGJhc2VVcmlDb21wb25lbnRzWydzY2hlbWUnXSwgJGJhc2VBdXRob3JpdHksICRwYXRoLCAkcXVlcnksICR1cmlDb21wb25lbnRzWydmcmFnbWVudCddKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlciBEb3Qgc2VnbWVudCBhY2NvcmRpbmcgdG8gUkZDMzk4Ni4KICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuNAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbW92ZURvdFNlZ21lbnRzKFN0cmluZ2FibGV8c3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHBhdGggPSAoc3RyaW5nKSAkcGF0aDsKICAgICAgICBpZiAoIXN0cl9jb250YWlucygkcGF0aCwgJy4nKSkgewogICAgICAgICAgICByZXR1cm4gJHBhdGg7CiAgICAgICAgfQoKICAgICAgICAkcmVkdWNlciA9IGZ1bmN0aW9uIChhcnJheSAkY2FycnksIHN0cmluZyAkc2VnbWVudCk6IGFycmF5IHsKICAgICAgICAgICAgaWYgKCcuLicgPT09ICRzZWdtZW50KSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGNhcnJ5KTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGNhcnJ5OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzc2V0KHNlbGY6OkRPVF9TRUdNRU5UU1skc2VnbWVudF0pKSB7CiAgICAgICAgICAgICAgICAkY2FycnlbXSA9ICRzZWdtZW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGNhcnJ5OwogICAgICAgIH07CgogICAgICAgICRvbGRTZWdtZW50cyA9IGV4cGxvZGUoJy8nLCAkcGF0aCk7CiAgICAgICAgJG5ld1BhdGggPSBpbXBsb2RlKCcvJywgYXJyYXlfcmVkdWNlKCRvbGRTZWdtZW50cywgJHJlZHVjZXIoLi4uKSwgW10pKTsKICAgICAgICBpZiAoaXNzZXQoc2VsZjo6RE9UX1NFR01FTlRTWyRvbGRTZWdtZW50c1thcnJheV9rZXlfbGFzdCgkb2xkU2VnbWVudHMpXV0pKSB7CiAgICAgICAgICAgICRuZXdQYXRoIC49ICcvJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmV3UGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc29sdmVzIGFuIFVSSSBwYXRoIGFuZCBxdWVyeSBjb21wb25lbnQuCiAgICAgKgogICAgICogQHBhcmFtIENvbXBvbmVudE1hcCAkdXJpCiAgICAgKiBAcGFyYW0gQ29tcG9uZW50TWFwICRiYXNlVXJpCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXswOnN0cmluZywgMTpzdHJpbmd8bnVsbH0KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZVBhdGhBbmRRdWVyeShhcnJheSAkdXJpLCBhcnJheSAkYmFzZVVyaSk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkdXJpWydwYXRoJ10sICcvJykpIHsKICAgICAgICAgICAgcmV0dXJuIFskdXJpWydwYXRoJ10sICR1cmlbJ3F1ZXJ5J11dOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcnID09PSAkdXJpWydwYXRoJ10pIHsKICAgICAgICAgICAgcmV0dXJuIFskYmFzZVVyaVsncGF0aCddLCAkdXJpWydxdWVyeSddID8/ICRiYXNlVXJpWydxdWVyeSddXTsKICAgICAgICB9CgogICAgICAgICR0YXJnZXRQYXRoID0gJHVyaVsncGF0aCddOwogICAgICAgIGlmIChudWxsICE9PSBzZWxmOjpidWlsZEF1dGhvcml0eSgkYmFzZVVyaSkgJiYgJycgPT09ICRiYXNlVXJpWydwYXRoJ10pIHsKICAgICAgICAgICAgJHRhcmdldFBhdGggPSAnLycuJHRhcmdldFBhdGg7CiAgICAgICAgfQoKICAgICAgICBpZiAoJycgIT09ICRiYXNlVXJpWydwYXRoJ10pIHsKICAgICAgICAgICAgJHNlZ21lbnRzID0gZXhwbG9kZSgnLycsICRiYXNlVXJpWydwYXRoJ10pOwogICAgICAgICAgICBhcnJheV9wb3AoJHNlZ21lbnRzKTsKICAgICAgICAgICAgaWYgKFtdICE9PSAkc2VnbWVudHMpIHsKICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gaW1wbG9kZSgnLycsICRzZWdtZW50cykuJy8nLiR0YXJnZXRQYXRoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyR0YXJnZXRQYXRoLCAkdXJpWydxdWVyeSddXTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbnRhaW5zUmZjMzk4NkNoYXJzKFN0cmluZ2FibGV8c3RyaW5nICR1cmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIDEgPT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX1ZBTElEX1VSSV9SRkMzOTg2X0NIQVJTLCAoc3RyaW5nKSAkdXJpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbnRhaW5zUmZjMzk4N0NoYXJzKFN0cmluZ2FibGV8c3RyaW5nICR1cmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIDEgIT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX0lOVkFMSURfVVJJX1JGQzM5ODdfQ0hBUlMsIChzdHJpbmcpICR1cmkpOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSBVUkkgc3RyaW5nIGludG8gaXRzIGNvbXBvbmVudHMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcGFyc2VzIGEgVVJJIGFuZCByZXR1cm5zIGFuIGFzc29jaWF0aXZlIGFycmF5IGNvbnRhaW5pbmcgYW55CiAgICAgKiBvZiB0aGUgdmFyaW91cyBjb21wb25lbnRzIG9mIHRoZSBVUkkgdGhhdCBhcmUgcHJlc2VudC4KICAgICAqCiAgICAgKiA8Y29kZT4KICAgICAqICRjb21wb25lbnRzID0gVXJpU3RyaW5nOjpwYXJzZSgnaHR0cDovL2Zvb0B0ZXN0LmV4YW1wbGUuY29tOjQyP3F1ZXJ5IycpOwogICAgICogdmFyX2V4cG9ydCgkY29tcG9uZW50cyk7CiAgICAgKiAvL3dpbGwgZGlzcGxheQogICAgICogYXJyYXkoCiAgICAgKiAgICdzY2hlbWUnID0+ICdodHRwJywgICAgICAgICAgIC8vIHRoZSBVUkkgc2NoZW1lIGNvbXBvbmVudAogICAgICogICAndXNlcicgPT4gJ2ZvbycsICAgICAgICAgICAgICAvLyB0aGUgVVJJIHVzZXIgY29tcG9uZW50CiAgICAgKiAgICdwYXNzJyA9PiBudWxsLCAgICAgICAgICAgICAgIC8vIHRoZSBVUkkgcGFzcyBjb21wb25lbnQKICAgICAqICAgJ2hvc3QnID0+ICd0ZXN0LmV4YW1wbGUuY29tJywgLy8gdGhlIFVSSSBob3N0IGNvbXBvbmVudAogICAgICogICAncG9ydCcgPT4gNDIsICAgICAgICAgICAgICAgICAvLyB0aGUgVVJJIHBvcnQgY29tcG9uZW50CiAgICAgKiAgICdwYXRoJyA9PiAnJywgICAgICAgICAgICAgICAgIC8vIHRoZSBVUkkgcGF0aCBjb21wb25lbnQKICAgICAqICAgJ3F1ZXJ5JyA9PiAncXVlcnknLCAgICAgICAgICAgLy8gdGhlIFVSSSBxdWVyeSBjb21wb25lbnQKICAgICAqICAgJ2ZyYWdtZW50JyA9PiAnJywgICAgICAgICAgICAgLy8gdGhlIFVSSSBmcmFnbWVudCBjb21wb25lbnQKICAgICAqICk7CiAgICAgKiA8L2NvZGU+CiAgICAgKgogICAgICogVGhlIHJldHVybmVkIGFycmF5IGlzIHNpbWlsYXIgdG8gUEhQJ3MgcGFyc2VfdXJsIHJldHVybiB2YWx1ZSB3aXRoIHRoZSBmb2xsb3dpbmcKICAgICAqIGRpZmZlcmVuY2VzOgogICAgICoKICAgICAqIDx1bD4KICAgICAqIDxsaT5BbGwgY29tcG9uZW50cyBhcmUgYWx3YXlzIHByZXNlbnQgaW4gdGhlIHJldHVybmVkIGFycmF5PC9saT4KICAgICAqIDxsaT5FbXB0eSBhbmQgdW5kZWZpbmVkIGNvbXBvbmVudCBhcmUgdHJlYXRlZCBkaWZmZXJlbnRseS4gQW5kIGVtcHR5IGNvbXBvbmVudCBpcwogICAgICogICBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyB3aGlsZSBhbiB1bmRlZmluZWQgY29tcG9uZW50IGlzIHNldCB0byB0aGUgYG51bGxgIHZhbHVlLjwvbGk+CiAgICAgKiA8bGk+VGhlIHBhdGggY29tcG9uZW50IGlzIG5ldmVyIHVuZGVmaW5lZDwvbGk+CiAgICAgKiA8bGk+VGhlIG1ldGhvZCBwYXJzZXMgdGhlIFVSSSBmb2xsb3dpbmcgdGhlIFJGQzM5ODYgcnVsZXMsIGJ1dCB5b3UgYXJlIHN0aWxsCiAgICAgKiAgIHJlcXVpcmVkIHRvIHZhbGlkYXRlIHRoZSByZXR1cm5lZCBjb21wb25lbnRzIGFnYWluc3QgaXRzIHJlbGF0ZWQgc2NoZW1lIHNwZWNpZmljIHJ1bGVzLjwvbGk+CiAgICAgKiA8L3VsPgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2CiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgVVJJIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycwogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgVVJJIGNvbnRhaW5zIGFuIGludmFsaWQgc2NoZW1lCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSBVUkkgY29udGFpbnMgYW4gaW52YWxpZCBwYXRoCiAgICAgKgogICAgICogQHJldHVybiBDb21wb25lbnRNYXAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfGludCAkdXJpKTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoJHVyaSBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9IChzdHJpbmcpICR1cmk7CiAgICAgICAgaWYgKGlzc2V0KHNlbGY6OlVSSV9TSE9SVENVVFNbJHVyaV0pKSB7CiAgICAgICAgICAgIC8qKiBAdmFyIENvbXBvbmVudE1hcCAkY29tcG9uZW50cyAqLwogICAgICAgICAgICAkY29tcG9uZW50cyA9IFsuLi5zZWxmOjpVUklfQ09NUE9ORU5UUywgLi4uc2VsZjo6VVJJX1NIT1JUQ1VUU1skdXJpXV07CgogICAgICAgICAgICByZXR1cm4gJGNvbXBvbmVudHM7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjpjb250YWluc1JmYzM5ODdDaGFycygkdXJpKSB8fCB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ByaW50ZignVGhlIHVyaSBgJXNgIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycycsICR1cmkpKTsKCiAgICAgICAgLy9pZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIGEga25vd24gVVJJIGRlbGltaXRlciwgcGFyc2luZyBjYW4gYmUgc2ltcGxpZmllZAogICAgICAgICRmaXJzdF9jaGFyID0gJHVyaVswXTsKCiAgICAgICAgLy9UaGUgVVJJIGlzIG1hZGUgb2YgdGhlIGZyYWdtZW50IG9ubHkKICAgICAgICBpZiAoJyMnID09PSAkZmlyc3RfY2hhcikgewogICAgICAgICAgICBbLCAkZnJhZ21lbnRdID0gZXhwbG9kZSgnIycsICR1cmksIDIpOwogICAgICAgICAgICAkY29tcG9uZW50cyA9IHNlbGY6OlVSSV9DT01QT05FTlRTOwogICAgICAgICAgICAkY29tcG9uZW50c1snZnJhZ21lbnQnXSA9ICRmcmFnbWVudDsKCiAgICAgICAgICAgIHJldHVybiAkY29tcG9uZW50czsKICAgICAgICB9CgogICAgICAgIC8vVGhlIFVSSSBpcyBtYWRlIG9mIHRoZSBxdWVyeSBhbmQgZnJhZ21lbnQKICAgICAgICBpZiAoJz8nID09PSAkZmlyc3RfY2hhcikgewogICAgICAgICAgICBbLCAkcGFydGlhbF0gPSBleHBsb2RlKCc/JywgJHVyaSwgMik7CiAgICAgICAgICAgIFskcXVlcnksICRmcmFnbWVudF0gPSBleHBsb2RlKCcjJywgJHBhcnRpYWwsIDIpICsgWzEgPT4gbnVsbF07CiAgICAgICAgICAgICRjb21wb25lbnRzID0gc2VsZjo6VVJJX0NPTVBPTkVOVFM7CiAgICAgICAgICAgICRjb21wb25lbnRzWydxdWVyeSddID0gJHF1ZXJ5OwogICAgICAgICAgICAkY29tcG9uZW50c1snZnJhZ21lbnQnXSA9ICRmcmFnbWVudDsKCiAgICAgICAgICAgIHJldHVybiAkY29tcG9uZW50czsKICAgICAgICB9CgogICAgICAgIC8vdXNlIFJGQzM5ODYgVVJJIHJlZ2V4cCB0byBzcGxpdCB0aGUgVVJJCiAgICAgICAgcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfVVJJX1BBUlRTLCAkdXJpLCAkcGFydHMpOwogICAgICAgICRwYXJ0cyArPSBbJ3F1ZXJ5JyA9PiAnJywgJ2ZyYWdtZW50JyA9PiAnJ107CgogICAgICAgIGlmICgnOicgPT09ICgkcGFydHNbJ3NjaGVtZSddICA/PyBudWxsKSB8fCAxICE9PSBwcmVnX21hdGNoKHNlbGY6OlJFR0VYUF9VUklfU0NIRU1FLCAkcGFydHNbJ3Njb250ZW50J10gPz8gJycpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzcHJpbnRmKCdUaGUgdXJpIGAlc2AgY29udGFpbnMgYW4gaW52YWxpZCBzY2hlbWUnLCAkdXJpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJycgPT09ICgkcGFydHNbJ3NjaGVtZSddID8/ICcnKS4oJHBhcnRzWydhdXRob3JpdHknXSA/PyAnJykgJiYgMSA9PT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfSU5WQUxJRF9QQVRILCAkcGFydHNbJ3BhdGgnXSA/PyAnJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHNwcmludGYoJ1RoZSB1cmkgYCVzYCBjb250YWlucyBhbiBpbnZhbGlkIHBhdGguJywgJHVyaSkpOwogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgQ29tcG9uZW50TWFwICRjb21wb25lbnRzICovCiAgICAgICAgJGNvbXBvbmVudHMgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgc2VsZjo6VVJJX0NPTVBPTkVOVFMsCiAgICAgICAgICAgICcnID09PSAoJHBhcnRzWydhdXRob3JpdHknXSA/PyBudWxsKSA/IFtdIDogc2VsZjo6cGFyc2VBdXRob3JpdHkoJHBhcnRzWydhY29udGVudCddID8/IG51bGwpLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAncGF0aCcgPT4gJHBhcnRzWydwYXRoJ10gPz8gJycsCiAgICAgICAgICAgICAgICAnc2NoZW1lJyA9PiAnJyA9PT0gKCRwYXJ0c1snc2NoZW1lJ10gPz8gbnVsbCkgPyBudWxsIDogKCRwYXJ0c1snc2NvbnRlbnQnXSA/PyBudWxsKSwKICAgICAgICAgICAgICAgICdxdWVyeScgPT4gJycgPT09ICRwYXJ0c1sncXVlcnknXSA/IG51bGwgOiAoJHBhcnRzWydxY29udGVudCddID8/IG51bGwpLAogICAgICAgICAgICAgICAgJ2ZyYWdtZW50JyA9PiAnJyA9PT0gJHBhcnRzWydmcmFnbWVudCddID8gbnVsbCA6ICgkcGFydHNbJ2Zjb250ZW50J10gPz8gbnVsbCksCiAgICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICByZXR1cm4gJGNvbXBvbmVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhlIFVSSSBpbnRlcm5hbCBzdGF0ZSBpcyB2YWxpZC4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4zCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2YWxpZGF0ZUNvbXBvbmVudHMoP3N0cmluZyAkc2NoZW1lLCA/c3RyaW5nICRhdXRob3JpdHksID9zdHJpbmcgJHBhdGgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKG51bGwgIT09ICRhdXRob3JpdHkpIHsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICRwYXRoICYmICcnICE9PSAkcGF0aCAmJiAnLycgIT09ICRwYXRoWzBdKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0lmIGFuIGF1dGhvcml0eSBpcyBwcmVzZW50IHRoZSBwYXRoIG11c3QgYmUgZW1wdHkgb3Igc3RhcnQgd2l0aCBhIGAvYC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRwYXRoIHx8ICcnID09PSAkcGF0aCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyX3N0YXJ0c193aXRoKCRwYXRoLCAnLy8nKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0lmIHRoZXJlIGlzIG5vIGF1dGhvcml0eSB0aGUgcGF0aCBgJy4kcGF0aC4nYCBjYW5ub3Qgc3RhcnQgd2l0aCBhIGAvL2AuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHNjaGVtZSB8fCBmYWxzZSA9PT0gKCRwb3MgPSBzdHJwb3MoJHBhdGgsICc6JykpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICghc3RyX2NvbnRhaW5zKHN1YnN0cigkcGF0aCwgMCwgJHBvcyksICcvJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdJbiBhYnNlbmNlIG9mIGEgc2NoZW1lIGFuZCBhbiBhdXRob3JpdHkgdGhlIGZpcnN0IHBhdGggc2VnbWVudCBjYW5ub3QgY29udGFpbiBhIGNvbG9uICgiOiIpIGNoYXJhY3Rlci4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgdGhlIFVSSSBhdXRob3JpdHkgcGFydC4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgSWYgdGhlIHBvcnQgY29tcG9uZW50IGlzIGludmFsaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIEF1dGhvcml0eU1hcAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlQXV0aG9yaXR5KEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkYXV0aG9yaXR5KTogYXJyYXkKICAgIHsKICAgICAgICAkY29tcG9uZW50cyA9IFsndXNlcicgPT4gbnVsbCwgJ3Bhc3MnID0+IG51bGwsICdob3N0JyA9PiBudWxsLCAncG9ydCcgPT4gbnVsbF07CiAgICAgICAgaWYgKG51bGwgPT09ICRhdXRob3JpdHkpIHsKICAgICAgICAgICAgcmV0dXJuICRjb21wb25lbnRzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhdXRob3JpdHkgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICRhdXRob3JpdHkgPSAkYXV0aG9yaXR5LT52YWx1ZTsKICAgICAgICB9CiAgICAgICAgJGF1dGhvcml0eSA9IChzdHJpbmcpICRhdXRob3JpdHk7CiAgICAgICAgJGNvbXBvbmVudHNbJ2hvc3QnXSA9ICcnOwogICAgICAgIGlmICgnJyA9PT0gJGF1dGhvcml0eSkgewogICAgICAgICAgICByZXR1cm4gJGNvbXBvbmVudHM7CiAgICAgICAgfQoKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCdAJywgJGF1dGhvcml0eSwgMik7CiAgICAgICAgaWYgKGlzc2V0KCRwYXJ0c1sxXSkpIHsKICAgICAgICAgICAgWyRjb21wb25lbnRzWyd1c2VyJ10sICRjb21wb25lbnRzWydwYXNzJ11dID0gZXhwbG9kZSgnOicsICRwYXJ0c1swXSwgMikgKyBbMSA9PiBudWxsXTsKICAgICAgICB9CgogICAgICAgIHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX0hPU1RfUE9SVCwgJHBhcnRzWzFdID8/ICRwYXJ0c1swXSwgJG1hdGNoZXMpOwogICAgICAgICRtYXRjaGVzICs9IFsncG9ydCcgPT4gJyddOwoKICAgICAgICAkY29tcG9uZW50c1sncG9ydCddID0gc2VsZjo6ZmlsdGVyUG9ydCgkbWF0Y2hlc1sncG9ydCddKTsKICAgICAgICAkY29tcG9uZW50c1snaG9zdCddID0gc2VsZjo6ZmlsdGVySG9zdCgkbWF0Y2hlc1snaG9zdCddID8/ICcnKTsKCiAgICAgICAgcmV0dXJuICRjb21wb25lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogRmlsdGVyIGFuZCBmb3JtYXQgdGhlIHBvcnQgY29tcG9uZW50LgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yLjIKICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSByZWdpc3RlcmVkIG5hbWUgaXMgaW52YWxpZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmaWx0ZXJQb3J0KHN0cmluZyAkcG9ydCk6ID9pbnQKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgJycgPT09ICRwb3J0ID0+IG51bGwsCiAgICAgICAgICAgIDEgPT09IHByZWdfbWF0Y2goJy9eXGQqJC8nLCAkcG9ydCkgPT4gKGludCkgJHBvcnQsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gdGhyb3cgbmV3IFN5bnRheEVycm9yKHNwcmludGYoJ1RoZSBwb3J0IGAlc2AgaXMgaW52YWxpZCcsICRwb3J0KSksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBhIGhvc3RuYW1lIGlzIHZhbGlkLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yLjIKICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSByZWdpc3RlcmVkIG5hbWUgaXMgaW52YWxpZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmaWx0ZXJIb3N0KFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIEhvc3RSZWNvcmQ6OmZyb20oJGhvc3QpLT52YWx1ZTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHNwcmludGYoJ0hvc3QgYCVzYCBpcyBpbnZhbGlkIDogdGhlIElQIGhvc3QgaXMgbWFsZm9ybWVkJywgJGhvc3QpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBzY2hlbWUgY29tcG9uZW50IGlzIHZhbGlkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWRTY2hlbWUoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRzY2hlbWUpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRzY2hlbWUgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICRzY2hlbWUgPSAkc2NoZW1lLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsID09PSAkc2NoZW1lIHx8IDEgPT09IHByZWdfbWF0Y2goJy9eW0EtWmEtel0oWy1BLVphLXpcZCsuXSspPyQvJywgKHN0cmluZykgJHNjaGVtZSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplSG9zdChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRob3N0IGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkaG9zdCA9ICRob3N0LT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkaG9zdCkgewogICAgICAgICAgICAkaG9zdCA9IChzdHJpbmcpICRob3N0OwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRob3N0IHx8IGZhbHNlICE9PSBmaWx0ZXJfdmFyKCRob3N0LCBGSUxURVJfVkFMSURBVEVfSVAsIEZJTFRFUl9GTEFHX0lQVjQpKSB7CiAgICAgICAgICAgIHJldHVybiAkaG9zdDsKICAgICAgICB9CgogICAgICAgICRob3N0ID0gKHN0cmluZykgRW5jb2Rlcjo6bm9ybWFsaXplSG9zdCgkaG9zdCk7CiAgICAgICAgc3RhdGljICRpc1N1cHBvcnRlZCA9IG51bGw7CiAgICAgICAgJGlzU3VwcG9ydGVkID8/PSAoZnVuY3Rpb25fZXhpc3RzKCdcaWRuX3RvX2FzY2lpJykgJiYgZGVmaW5lZCgnXElOVExfSUROQV9WQVJJQU5UX1VUUzQ2JykpOwogICAgICAgIGlmICghICRpc1N1cHBvcnRlZCkgewogICAgICAgICAgICByZXR1cm4gJGhvc3Q7CiAgICAgICAgfQoKICAgICAgICAkaWRuYUhvc3QgPSBJZG5hQ29udmVydGVyOjp0b0FzY2lpKCRob3N0KTsKICAgICAgICBpZiAoISRpZG5hSG9zdC0+aGFzRXJyb3JzKCkpIHsKICAgICAgICAgICAgcmV0dXJuICRpZG5hSG9zdC0+ZG9tYWluKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGhvc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBERVBSRUNBVElPTiBXQVJOSU5HISBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcG9pbnQgcmVsZWFzZS4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2ZXJzaW9uIDcuNi4wCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKiBAc2VlIEhvc3RSZWNvb3JkOjp2YWxpZGF0ZSgpCiAgICAgKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gdGhlIGVudmlyb25tZW50LgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcSG9zdFJlY29yZDo6dmFsaWRhdGUoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny42LjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNWYWxpZEhvc3QoU3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkaG9zdCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gSG9zdFJlY29yZDo6aXNWYWxpZCgkaG9zdCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri-interfaces/UrnComparisonMode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7CgplbnVtIFVybkNvbXBhcmlzb25Nb2RlCnsKICAgIGNhc2UgSW5jbHVkZUNvbXBvbmVudHM7CiAgICBjYXNlIEV4Y2x1ZGVDb21wb25lbnRzOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/BaseUri.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgRGVwcmVjYXRlZDsKdXNlIEpzb25TZXJpYWxpemFibGU7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlBY2Nlc3M7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcTWlzc2luZ0ZlYXR1cmU7CnVzZSBMZWFndWVcVXJpXElkbmFcQ29udmVydGVyIGFzIElkbmFDb252ZXJ0ZXI7CnVzZSBMZWFndWVcVXJpXElQdjRcQ29udmVydGVyIGFzIElQdjRDb252ZXJ0ZXI7CnVzZSBMZWFndWVcVXJpXElQdjZcQ29udmVydGVyIGFzIElQdjZDb252ZXJ0ZXI7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUZhY3RvcnlJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZSBhcyBQc3I3VXJpSW50ZXJmYWNlOwp1c2UgU3RyaW5nYWJsZTsKCnVzZSBmdW5jdGlvbiBhcnJheV9wb3A7CnVzZSBmdW5jdGlvbiBhcnJheV9yZWR1Y2U7CnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIGZ1bmN0aW9uIGV4cGxvZGU7CnVzZSBmdW5jdGlvbiBpbXBsb2RlOwp1c2UgZnVuY3Rpb24gaW5fYXJyYXk7CnVzZSBmdW5jdGlvbiBwcmVnX21hdGNoOwp1c2UgZnVuY3Rpb24gcmF3dXJsZGVjb2RlOwp1c2UgZnVuY3Rpb24gc29ydDsKdXNlIGZ1bmN0aW9uIHN0cl9jb250YWluczsKdXNlIGZ1bmN0aW9uIHN0cl9yZXBlYXQ7CnVzZSBmdW5jdGlvbiBzdHJfcmVwbGFjZTsKdXNlIGZ1bmN0aW9uIHN0cnBvczsKdXNlIGZ1bmN0aW9uIHN1YnN0cjsKCi8qKgogKiBAcGhwc3Rhbi1pbXBvcnQtdHlwZSBDb21wb25lbnRNYXAgZnJvbSBVcmlJbnRlcmZhY2UKICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA3LjYuMAogKgogKiBAc2VlIE1vZGlmaWVyCiAqIEBzZWUgVXJpCiAqLwpjbGFzcyBCYXNlVXJpIGltcGxlbWVudHMgU3RyaW5nYWJsZSwgSnNvblNlcmlhbGl6YWJsZSwgVXJpQWNjZXNzCnsKICAgIC8qKiBAdmFyIGFycmF5PHN0cmluZyxpbnQ+ICovCiAgICBmaW5hbCBwcm90ZWN0ZWQgY29uc3QgV0hBVFdHX1NQRUNJQUxfU0NIRU1FUyA9IFsnZnRwJyA9PiAxLCAnaHR0cCcgPT4gMSwgJ2h0dHBzJyA9PiAxLCAnd3MnID0+IDEsICd3c3MnID0+IDFdOwoKICAgIC8qKiBAdmFyIGFycmF5PHN0cmluZyxpbnQ+ICovCiAgICBmaW5hbCBwcm90ZWN0ZWQgY29uc3QgRE9UX1NFR01FTlRTID0gWycuJyA9PiAxLCAnLi4nID0+IDFdOwoKICAgIHByb3RlY3RlZCByZWFkb25seSBQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZXxudWxsICRvcmlnaW47CiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgP3N0cmluZyAkbnVsbFZhbHVlOwoKICAgIC8qKgogICAgICogQHBhcmFtIFVyaUZhY3RvcnlJbnRlcmZhY2V8bnVsbCAkdXJpRmFjdG9yeSBEZXByZWNhdGVkLCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZQogICAgICovCiAgICBmaW5hbCBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlICR1cmksCiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5ID9VcmlGYWN0b3J5SW50ZXJmYWNlICR1cmlGYWN0b3J5CiAgICApIHsKICAgICAgICAkdGhpcy0+bnVsbFZhbHVlID0gJHRoaXMtPnVyaSBpbnN0YW5jZW9mIFBzcjdVcmlJbnRlcmZhY2UgPyAnJyA6IG51bGw7CiAgICAgICAgJHRoaXMtPm9yaWdpbiA9ICR0aGlzLT5jb21wdXRlT3JpZ2luKCR0aGlzLT51cmksICR0aGlzLT5udWxsVmFsdWUpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbShTdHJpbmdhYmxlfHN0cmluZyAkdXJpLCA/VXJpRmFjdG9yeUludGVyZmFjZSAkdXJpRmFjdG9yeSA9IG51bGwpOiBzdGF0aWMKICAgIHsKICAgICAgICAkdXJpID0gc3RhdGljOjpmb3JtYXRIb3N0KHN0YXRpYzo6ZmlsdGVyVXJpKCR1cmksICR1cmlGYWN0b3J5KSk7CiAgICAgICAgcmV0dXJuIG5ldyBzdGF0aWMoJHVyaSwgJHVyaUZhY3RvcnkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoVXJpRmFjdG9yeShVcmlGYWN0b3J5SW50ZXJmYWNlICR1cmlGYWN0b3J5KTogc3RhdGljCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzdGF0aWMoJHRoaXMtPnVyaSwgJHVyaUZhY3RvcnkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRob3V0VXJpRmFjdG9yeSgpOiBzdGF0aWMKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHN0YXRpYygkdGhpcy0+dXJpLCBudWxsKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXJpKCk6IFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVyaVN0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnVyaS0+X190b1N0cmluZygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXJpLT5fX3RvU3RyaW5nKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmktPl9fdG9TdHJpbmcoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb3JpZ2luKCk6ID9zZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoIChudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5vcmlnaW4gPT4gbnVsbCwKICAgICAgICAgICAgZGVmYXVsdCA9PiBuZXcgc2VsZigkdGhpcy0+b3JpZ2luLCAkdGhpcy0+dXJpRmFjdG9yeSksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIFVuaXggZmlsZXN5c3RlbSBwYXRoLgogICAgICoKICAgICAqIFRoZSBtZXRob2Qgd2lsbCByZXR1cm4gbnVsbCBpZiBhIHNjaGVtZSBpcyBwcmVzZW50IGFuZCBpcyBub3QgdGhlIGBmaWxlYCBzY2hlbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuaXhQYXRoKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCR0aGlzLT51cmktPmdldFNjaGVtZSgpKSB7CiAgICAgICAgICAgICdmaWxlJywgJHRoaXMtPm51bGxWYWx1ZSA9PiByYXd1cmxkZWNvZGUoJHRoaXMtPnVyaS0+Z2V0UGF0aCgpKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBudWxsLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBXaW5kb3dzIGZpbGVzeXN0ZW0gcGF0aC4KICAgICAqCiAgICAgKiBUaGUgbWV0aG9kIHdpbGwgcmV0dXJuIG51bGwgaWYgYSBzY2hlbWUgaXMgcHJlc2VudCBhbmQgaXMgbm90IHRoZSBgZmlsZWAgc2NoZW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aW5kb3dzUGF0aCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgc3RhdGljICRyZWdleHBXaW5kb3dzUGF0aCA9ICcsXig/PHJvb3Q+W2EtekEtWl06KSwnOwoKICAgICAgICBpZiAoIWluX2FycmF5KCR0aGlzLT51cmktPmdldFNjaGVtZSgpLCBbJ2ZpbGUnLCAkdGhpcy0+bnVsbFZhbHVlXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkb3JpZ2luYWxQYXRoID0gJHRoaXMtPnVyaS0+Z2V0UGF0aCgpOwogICAgICAgICRwYXRoID0gJG9yaWdpbmFsUGF0aDsKICAgICAgICBpZiAoJy8nID09PSAoJHBhdGhbMF0gPz8gJycpKSB7CiAgICAgICAgICAgICRwYXRoID0gc3Vic3RyKCRwYXRoLCAxKTsKICAgICAgICB9CgogICAgICAgIGlmICgxID09PSBwcmVnX21hdGNoKCRyZWdleHBXaW5kb3dzUGF0aCwgJHBhdGgsICRtYXRjaGVzKSkgewogICAgICAgICAgICAkcm9vdCA9ICRtYXRjaGVzWydyb290J107CiAgICAgICAgICAgICRwYXRoID0gc3Vic3RyKCRwYXRoLCBzdHJsZW4oJHJvb3QpKTsKCiAgICAgICAgICAgIHJldHVybiAkcm9vdC5zdHJfcmVwbGFjZSgnLycsICdcXCcsIHJhd3VybGRlY29kZSgkcGF0aCkpOwogICAgICAgIH0KCiAgICAgICAgJGhvc3QgPSAkdGhpcy0+dXJpLT5nZXRIb3N0KCk7CgogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMtPm51bGxWYWx1ZSkgewogICAgICAgICAgICAkaG9zdCA9PiBzdHJfcmVwbGFjZSgnLycsICdcXCcsIHJhd3VybGRlY29kZSgkb3JpZ2luYWxQYXRoKSksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJ1xcXFwnLiRob3N0LidcXCcuc3RyX3JlcGxhY2UoJy8nLCAnXFwnLCByYXd1cmxkZWNvZGUoJHBhdGgpKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEZpbGUgVVJJIGFjY29yZGluZyB0byBSRkM4MDg5LgogICAgICoKICAgICAqIFRoZSBtZXRob2Qgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGUgVVJJIHNjaGVtZSBpcyBub3QgdGhlIGBmaWxlYCBzY2hlbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvUmZjODA4OSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJHBhdGggPSAkdGhpcy0+dXJpLT5nZXRQYXRoKCk7CgogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAnZmlsZScgIT09ICR0aGlzLT51cmktPmdldFNjaGVtZSgpID0+IG51bGwsCiAgICAgICAgICAgIGluX2FycmF5KCR0aGlzLT51cmktPmdldEF1dGhvcml0eSgpLCBbJycsIG51bGwsICdsb2NhbGhvc3QnXSwgdHJ1ZSkgPT4gJ2ZpbGU6Jy5tYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgJycgPT09ICRwYXRoLAogICAgICAgICAgICAgICAgJy8nID09PSAkcGF0aFswXSA9PiAkcGF0aCwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gJy8nLiRwYXRoLAogICAgICAgICAgICB9LAogICAgICAgICAgICBkZWZhdWx0ID0+IChzdHJpbmcpICR0aGlzLT51cmksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIGBmaWxlYCBzY2hlbWUgYmFzZSBVUkkgcmVwcmVzZW50cyBhIGxvY2FsIGZpbGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0xvY2FsRmlsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICdmaWxlJyAhPT0gJHRoaXMtPnVyaS0+Z2V0U2NoZW1lKCkgPT4gZmFsc2UsCiAgICAgICAgICAgIGluX2FycmF5KCR0aGlzLT51cmktPmdldEF1dGhvcml0eSgpLCBbJycsIG51bGwsICdsb2NhbGhvc3QnXSwgdHJ1ZSkgPT4gdHJ1ZSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBmYWxzZSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgVVJJIGlzIG9wYXF1ZSBvciBub3QuCiAgICAgKgogICAgICogQSBVUkkgaXMgb3BhcXVlIGlmIGFuZCBvbmx5IGlmIGl0IGlzIGFic29sdXRlCiAgICAgKiBhbmQgZG9lcyBub3QgaGF2ZSBhbiBhdXRob3JpdHkgcGF0aC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzT3BhcXVlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bGxWYWx1ZSA9PT0gJHRoaXMtPnVyaS0+Z2V0QXV0aG9yaXR5KCkKICAgICAgICAgICAgJiYgJHRoaXMtPmlzQWJzb2x1dGUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdHdvIFVSSSBkbyBub3Qgc2hhcmUgdGhlIHNhbWUgb3JpZ2luLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDcm9zc09yaWdpbihTdHJpbmdhYmxlfHN0cmluZyAkdXJpKTogYm9vbAogICAgewogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+b3JpZ2luKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9IHN0YXRpYzo6ZmlsdGVyVXJpKCR1cmkpOwogICAgICAgICR1cmlPcmlnaW4gPSAkdGhpcy0+Y29tcHV0ZU9yaWdpbigkdXJpLCAkdXJpIGluc3RhbmNlb2YgUHNyN1VyaUludGVyZmFjZSA/ICcnIDogbnVsbCk7CgogICAgICAgIHJldHVybiBtYXRjaCh0cnVlKSB7CiAgICAgICAgICAgIG51bGwgPT09ICR1cmlPcmlnaW4sCiAgICAgICAgICAgICR1cmlPcmlnaW4tPl9fdG9TdHJpbmcoKSAhPT0gJHRoaXMtPm9yaWdpbi0+X190b1N0cmluZygpID0+IHRydWUsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gZmFsc2UsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIFVSSSBpcyBhYnNvbHV0ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzQWJzb2x1dGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVsbFZhbHVlICE9PSAkdGhpcy0+dXJpLT5nZXRTY2hlbWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIFVSSSBpcyBhIG5ldHdvcmsgcGF0aC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzTmV0d29ya1BhdGgoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVsbFZhbHVlID09PSAkdGhpcy0+dXJpLT5nZXRTY2hlbWUoKQogICAgICAgICAgICAmJiAkdGhpcy0+bnVsbFZhbHVlICE9PSAkdGhpcy0+dXJpLT5nZXRBdXRob3JpdHkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIFVSSSBpcyBhbiBhYnNvbHV0ZSBwYXRoLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNBYnNvbHV0ZVBhdGgoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVsbFZhbHVlID09PSAkdGhpcy0+dXJpLT5nZXRTY2hlbWUoKQogICAgICAgICAgICAmJiAkdGhpcy0+bnVsbFZhbHVlID09PSAkdGhpcy0+dXJpLT5nZXRBdXRob3JpdHkoKQogICAgICAgICAgICAmJiAnLycgPT09ICgkdGhpcy0+dXJpLT5nZXRQYXRoKClbMF0gPz8gJycpOwogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgVVJJIGlzIGEgcmVsYXRpdmUgcGF0aC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVsYXRpdmVQYXRoKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bGxWYWx1ZSA9PT0gJHRoaXMtPnVyaS0+Z2V0U2NoZW1lKCkKICAgICAgICAgICAgJiYgJHRoaXMtPm51bGxWYWx1ZSA9PT0gJHRoaXMtPnVyaS0+Z2V0QXV0aG9yaXR5KCkKICAgICAgICAgICAgJiYgJy8nICE9PSAoJHRoaXMtPnVyaS0+Z2V0UGF0aCgpWzBdID8/ICcnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgYm90aCBVUkkgcmVmZXJzIHRvIHRoZSBzYW1lIGRvY3VtZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTYW1lRG9jdW1lbnQoU3RyaW5nYWJsZXxzdHJpbmcgJHVyaSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6bm9ybWFsaXplZFVyaSgkdGhpcy0+dXJpKS0+ZXF1YWxzKHNlbGY6Om5vcm1hbGl6ZWRVcmkoJHVyaSkpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZWRVcmkoU3RyaW5nYWJsZXxzdHJpbmcgJHVyaSk6IFVyaQogICAgewogICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgVVJJIGFjY29yZGluZyB0byBSRkMzOTg2CiAgICAgICAgJHVyaSA9ICgkdXJpIGluc3RhbmNlb2YgVXJpID8gJHVyaSA6IFVyaTo6bmV3KCR1cmkpKS0+bm9ybWFsaXplKCk7CgogICAgICAgIHJldHVybiAkdXJpCiAgICAgICAgICAgIC8vTm9ybWFsaXphdGlvbiBhcyBwZXIgV0hBVFdHIFVSTCBzdGFuZGFyZAogICAgICAgICAgICAvL29ubHkgbWVhbmluZ2Z1bCBmb3IgV0hBVFdHIFNwZWNpYWwgVVJJIHNjaGVtZSBwcm90b2NvbAogICAgICAgICAgICAtPndoZW4oCiAgICAgICAgICAgICAgICBjb25kaXRpb246ICcnID09PSAkdXJpLT5nZXRQYXRoKCkgJiYgbnVsbCAhPT0gJHVyaS0+Z2V0QXV0aG9yaXR5KCksCiAgICAgICAgICAgICAgICBvblN1Y2Nlc3M6IGZuIChVcmkgJHVyaSkgPT4gJHVyaS0+d2l0aFBhdGgoJy8nKSwKICAgICAgICAgICAgKQogICAgICAgICAgICAvL1NvcnRpbmcgYXMgcGVyIFdIQVRXRyBVUkxTZWFyY2hQYXJhbXMgY2xhc3MKICAgICAgICAgICAgLy9ub3QgaW5jbHVkZWQgb24gYW55IGVxdWl2YWxlbmNlIGFsZ29yaXRobQogICAgICAgICAgICAtPndoZW4oCiAgICAgICAgICAgICAgICBjb25kaXRpb246IG51bGwgIT09ICgkcXVlcnkgPSAkdXJpLT5nZXRRdWVyeSgpKSAmJiBzdHJfY29udGFpbnMoJHF1ZXJ5LCAnJicpLAogICAgICAgICAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiAoVXJpICR1cmkpIHVzZSAoJHF1ZXJ5KSB7CiAgICAgICAgICAgICAgICAgICAgJHBhaXJzID0gZXhwbG9kZSgnJicsIChzdHJpbmcpICRxdWVyeSk7CiAgICAgICAgICAgICAgICAgICAgc29ydCgkcGFpcnMpOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHVyaS0+d2l0aFF1ZXJ5KGltcGxvZGUoJyYnLCAkcGFpcnMpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIFVSSSBjb250YWlucyBhbiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSAoSUROKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0lkbigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIElkbmFDb252ZXJ0ZXI6OmlzSWRuKCR0aGlzLT51cmktPmdldEhvc3QoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBVUkkgY29udGFpbnMgYW4gSVB2NCByZWdhcmRsZXNzIGlmIGl0IGlzIG1hcHBlZCBvciBuYXRpdmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNJUHY0KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gSVB2NENvbnZlcnRlcjo6ZnJvbUVudmlyb25tZW50KCktPmlzSXB2NCgkdGhpcy0+dXJpLT5nZXRIb3N0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmVzb2x2ZXMgYSBVUkkgYWdhaW5zdCBhIGJhc2UgVVJJIHVzaW5nIFJGQzM5ODYgcnVsZXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBzdWJtaXR0ZWQgVVJJIGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhIFVSSSBpbnN0YW5jZSBvZiB0aGUgc2FtZSB0eXBlIHRoYXQgY29udGFpbnMgdGhlIGFwcGxpZWQgbW9kaWZpY2F0aW9ucy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIHRyYW5zcGFyZW50IHdoZW4gZGVhbGluZyB3aXRoIGVycm9yIGFuZCBleGNlcHRpb25zLgogICAgICogSXQgTVVTVCBub3QgYWx0ZXIgb3Igc2lsZW5jZSB0aGVtIGFwYXJ0IGZyb20gdmFsaWRhdGluZyBpdHMgb3duIHBhcmFtZXRlcnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKFN0cmluZ2FibGV8c3RyaW5nICR1cmkpOiBzdGF0aWMKICAgIHsKICAgICAgICAkcmVzb2x2ZWQgPSBVcmlTdHJpbmc6OnJlc29sdmUoJHVyaSwgJHRoaXMtPnVyaSk7CgogICAgICAgIHJldHVybiBuZXcgc3RhdGljKG1hdGNoICgkdGhpcy0+dXJpRmFjdG9yeSkgewogICAgICAgICAgICBudWxsID0+IFVyaTo6bmV3KCRyZXNvbHZlZCksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJHRoaXMtPnVyaUZhY3RvcnktPmNyZWF0ZVVyaSgkcmVzb2x2ZWQpLAogICAgICAgIH0sICR0aGlzLT51cmlGYWN0b3J5KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlbGF0aXZpemUgYSBVUkkgYWNjb3JkaW5nIHRvIGEgYmFzZSBVUkkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBzdWJtaXR0ZWQgVVJJIGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhIFVSSSBpbnN0YW5jZSBvZiB0aGUgc2FtZSB0eXBlIHRoYXQgY29udGFpbnMgdGhlIGFwcGxpZWQgbW9kaWZpY2F0aW9ucy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIHRyYW5zcGFyZW50IHdoZW4gZGVhbGluZyB3aXRoIGVycm9yIGFuZCBleGNlcHRpb25zLgogICAgICogSXQgTVVTVCBub3QgYWx0ZXIgb2Ygc2lsZW5jZSB0aGVtIGFwYXJ0IGZyb20gdmFsaWRhdGluZyBpdHMgb3duIHBhcmFtZXRlcnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWxhdGl2aXplKFN0cmluZ2FibGV8c3RyaW5nICR1cmkpOiBzdGF0aWMKICAgIHsKICAgICAgICAkdXJpID0gc3RhdGljOjpmb3JtYXRIb3N0KHN0YXRpYzo6ZmlsdGVyVXJpKCR1cmksICR0aGlzLT51cmlGYWN0b3J5KSk7CiAgICAgICAgaWYgKCR0aGlzLT5jYW5Ob3RCZVJlbGF0aXZpemUoJHVyaSkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBzdGF0aWMoJHVyaSwgJHRoaXMtPnVyaUZhY3RvcnkpOwogICAgICAgIH0KCiAgICAgICAgJG51bGwgPSAkdXJpIGluc3RhbmNlb2YgUHNyN1VyaUludGVyZmFjZSA/ICcnIDogbnVsbDsKICAgICAgICAkdXJpID0gJHVyaS0+d2l0aFNjaGVtZSgkbnVsbCktPndpdGhQb3J0KG51bGwpLT53aXRoVXNlckluZm8oJG51bGwpLT53aXRoSG9zdCgkbnVsbCk7CiAgICAgICAgJHRhcmdldFBhdGggPSAkdXJpLT5nZXRQYXRoKCk7CiAgICAgICAgJGJhc2VQYXRoID0gJHRoaXMtPnVyaS0+Z2V0UGF0aCgpOwoKICAgICAgICByZXR1cm4gbmV3IHN0YXRpYygKICAgICAgICAgICAgbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoICE9PSAkYmFzZVBhdGggPT4gJHVyaS0+d2l0aFBhdGgoc3RhdGljOjpyZWxhdGl2aXplUGF0aCgkdGFyZ2V0UGF0aCwgJGJhc2VQYXRoKSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OmNvbXBvbmVudEVxdWFscygncXVlcnknLCAkdXJpKSA9PiAkdXJpLT53aXRoUGF0aCgnJyktPndpdGhRdWVyeSgkbnVsbCksCiAgICAgICAgICAgICAgICAkbnVsbCA9PT0gJHVyaS0+Z2V0UXVlcnkoKSA9PiAkdXJpLT53aXRoUGF0aChzdGF0aWM6OmZvcm1hdFBhdGhXaXRoRW1wdHlCYXNlUXVlcnkoJHRhcmdldFBhdGgpKSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gJHVyaS0+d2l0aFBhdGgoJycpLAogICAgICAgICAgICB9LAogICAgICAgICAgICAkdGhpcy0+dXJpRmFjdG9yeQogICAgICAgICk7CiAgICB9CgogICAgZmluYWwgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXB1dGVPcmlnaW4oUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UgJHVyaSwgP3N0cmluZyAkbnVsbFZhbHVlKTogUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2V8bnVsbAogICAgewogICAgICAgIGlmICgkdXJpIGluc3RhbmNlb2YgVXJpKSB7CiAgICAgICAgICAgICRvcmlnaW4gPSAkdXJpLT5nZXRPcmlnaW4oKTsKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRvcmlnaW4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gVXJpOjp0cnlOZXcoJG9yaWdpbik7CiAgICAgICAgfQoKICAgICAgICAkb3JpZ2luID0gVXJpOjp0cnlOZXcoJHVyaSk/LT5nZXRPcmlnaW4oKTsKICAgICAgICBpZiAobnVsbCA9PT0gJG9yaWdpbikgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRjb21wb25lbnRzID0gVXJpU3RyaW5nOjpwYXJzZSgkb3JpZ2luKTsKCiAgICAgICAgcmV0dXJuICR1cmkKICAgICAgICAgICAgICAgIC0+d2l0aEZyYWdtZW50KCRudWxsVmFsdWUpCiAgICAgICAgICAgICAgICAtPndpdGhRdWVyeSgkbnVsbFZhbHVlKQogICAgICAgICAgICAgICAgLT53aXRoUGF0aCgnJykKICAgICAgICAgICAgICAgIC0+d2l0aFNjaGVtZSgnbG9jYWxob3N0JykKICAgICAgICAgICAgICAgIC0+d2l0aEhvc3QoKHN0cmluZykgJGNvbXBvbmVudHNbJ2hvc3QnXSkKICAgICAgICAgICAgICAgIC0+d2l0aFBvcnQoJGNvbXBvbmVudHNbJ3BvcnQnXSkKICAgICAgICAgICAgICAgIC0+d2l0aFNjaGVtZSgoc3RyaW5nKSAkY29tcG9uZW50c1snc2NoZW1lJ10pCiAgICAgICAgICAgICAgICAtPndpdGhVc2VySW5mbygkbnVsbFZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIElucHV0IFVSSSBub3JtYWxpemF0aW9uIHRvIGFsbG93IFN0cmluZ2FibGUgYW5kIHN0cmluZyBVUkkuCiAgICAgKi8KICAgIGZpbmFsIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gZmlsdGVyVXJpKFN0cmluZ2FibGV8c3RyaW5nICR1cmksIFVyaUZhY3RvcnlJbnRlcmZhY2V8bnVsbCAkdXJpRmFjdG9yeSA9IG51bGwpOiBQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgVXJpQWNjZXNzID0+ICR1cmktPmdldFVyaSgpLAogICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgUHNyN1VyaUludGVyZmFjZSwKICAgICAgICAgICAgJHVyaSBpbnN0YW5jZW9mIFVyaUludGVyZmFjZSA9PiAkdXJpLAogICAgICAgICAgICAkdXJpRmFjdG9yeSBpbnN0YW5jZW9mIFVyaUZhY3RvcnlJbnRlcmZhY2UgPT4gJHVyaUZhY3RvcnktPmNyZWF0ZVVyaSgoc3RyaW5nKSAkdXJpKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBVcmk6Om5ldygkdXJpKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgY29tcG9uZW50IHZhbHVlIGZyb20gYm90aCBVUkkgb2JqZWN0IGVxdWFscy4KICAgICAqCiAgICAgKiBAcHFyYW0gJ3F1ZXJ5J3wnYXV0aG9yaXR5J3wnc2NoZW1lJyAkcHJvcGVydHkKICAgICAqLwogICAgZmluYWwgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBvbmVudEVxdWFscyhzdHJpbmcgJHByb3BlcnR5LCBQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZSAkdXJpKTogYm9vbAogICAgewogICAgICAgICRnZXRDb21wb25lbnQgPSBmdW5jdGlvbiAoc3RyaW5nICRwcm9wZXJ0eSwgUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UgJHVyaSk6ID9zdHJpbmcgewogICAgICAgICAgICAkY29tcG9uZW50ID0gbWF0Y2ggKCRwcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgJ3F1ZXJ5JyA9PiAkdXJpLT5nZXRRdWVyeSgpLAogICAgICAgICAgICAgICAgJ2F1dGhvcml0eScgPT4gJHVyaS0+Z2V0QXV0aG9yaXR5KCksCiAgICAgICAgICAgICAgICBkZWZhdWx0ID0+ICR1cmktPmdldFNjaGVtZSgpLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgVXJpSW50ZXJmYWNlLCAnJyAhPT0gJGNvbXBvbmVudCA9PiAkY29tcG9uZW50LAogICAgICAgICAgICAgICAgZGVmYXVsdCA9PiBudWxsLAogICAgICAgICAgICB9OwogICAgICAgIH07CgogICAgICAgIHJldHVybiAkZ2V0Q29tcG9uZW50KCRwcm9wZXJ0eSwgJHVyaSkgPT09ICRnZXRDb21wb25lbnQoJHByb3BlcnR5LCAkdGhpcy0+dXJpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlciB0aGUgVVJJIG9iamVjdC4KICAgICAqLwogICAgZmluYWwgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBmb3JtYXRIb3N0KFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlICR1cmkpOiBQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZQogICAgewogICAgICAgICRob3N0ID0gJHVyaS0+Z2V0SG9zdCgpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRjb252ZXJ0ZWQgPSBJUHY0Q29udmVydGVyOjpmcm9tRW52aXJvbm1lbnQoKS0+dG9EZWNpbWFsKCRob3N0KTsKICAgICAgICB9IGNhdGNoIChNaXNzaW5nRmVhdHVyZSkgewogICAgICAgICAgICAkY29udmVydGVkID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmIChmYWxzZSA9PT0gZmlsdGVyX3ZhcigkY29udmVydGVkLCBGSUxURVJfVkFMSURBVEVfSVAsIEZJTFRFUl9GTEFHX0lQVjQpKSB7CiAgICAgICAgICAgICRjb252ZXJ0ZWQgPSBJUHY2Q29udmVydGVyOjpjb21wcmVzcygkaG9zdCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgbnVsbCAhPT0gJGNvbnZlcnRlZCA9PiAkdXJpLT53aXRoSG9zdCgkY29udmVydGVkKSwKICAgICAgICAgICAgJycgPT09ICRob3N0LAogICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgVXJpSW50ZXJmYWNlID0+ICR1cmksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJHVyaS0+d2l0aEhvc3QoKHN0cmluZykgVXJpOjpmcm9tQ29tcG9uZW50cyhbJ2hvc3QnID0+ICRob3N0XSktPmdldEhvc3QoKSksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIHN1Ym1pdHRlZCBVUkkgb2JqZWN0IGNhbiBiZSByZWxhdGl2aXplZC4KICAgICAqLwogICAgZmluYWwgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbk5vdEJlUmVsYXRpdml6ZShQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZSAkdXJpKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAhc3RhdGljOjpjb21wb25lbnRFcXVhbHMoJ3NjaGVtZScsICR1cmkpCiAgICAgICAgICAgIHx8ICFzdGF0aWM6OmNvbXBvbmVudEVxdWFscygnYXV0aG9yaXR5JywgJHVyaSkKICAgICAgICAgICAgfHwgc3RhdGljOjpmcm9tKCR1cmkpLT5pc1JlbGF0aXZlUGF0aCgpOwogICAgfQoKICAgIC8qKgogICAgICogUmVsYXRpdmVzIHRoZSBVUkkgZm9yIGFuIGF1dGhvcml0eS1sZXNzIHRhcmdldCBVUkkuCiAgICAgKi8KICAgIGZpbmFsIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcmVsYXRpdml6ZVBhdGgoc3RyaW5nICRwYXRoLCBzdHJpbmcgJGJhc2VQYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJhc2VTZWdtZW50cyA9IHN0YXRpYzo6Z2V0U2VnbWVudHMoJGJhc2VQYXRoKTsKICAgICAgICAkdGFyZ2V0U2VnbWVudHMgPSBzdGF0aWM6OmdldFNlZ21lbnRzKCRwYXRoKTsKICAgICAgICAkdGFyZ2V0QmFzZW5hbWUgPSBhcnJheV9wb3AoJHRhcmdldFNlZ21lbnRzKTsKICAgICAgICBhcnJheV9wb3AoJGJhc2VTZWdtZW50cyk7CiAgICAgICAgZm9yZWFjaCAoJGJhc2VTZWdtZW50cyBhcyAkb2Zmc2V0ID0+ICRzZWdtZW50KSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHRhcmdldFNlZ21lbnRzWyRvZmZzZXRdKSB8fCAkc2VnbWVudCAhPT0gJHRhcmdldFNlZ21lbnRzWyRvZmZzZXRdKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bnNldCgkYmFzZVNlZ21lbnRzWyRvZmZzZXRdLCAkdGFyZ2V0U2VnbWVudHNbJG9mZnNldF0pOwogICAgICAgIH0KICAgICAgICAkdGFyZ2V0U2VnbWVudHNbXSA9ICR0YXJnZXRCYXNlbmFtZTsKCiAgICAgICAgcmV0dXJuIHN0YXRpYzo6Zm9ybWF0UGF0aCgKICAgICAgICAgICAgc3RyX3JlcGVhdCgnLi4vJywgY291bnQoJGJhc2VTZWdtZW50cykpLmltcGxvZGUoJy8nLCAkdGFyZ2V0U2VnbWVudHMpLAogICAgICAgICAgICAkYmFzZVBhdGgKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogcmV0dXJucyB0aGUgcGF0aCBzZWdtZW50cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIGZpbmFsIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gZ2V0U2VnbWVudHMoc3RyaW5nICRwYXRoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gZXhwbG9kZSgnLycsIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICcnID09PSAkcGF0aCwKICAgICAgICAgICAgJy8nICE9PSAkcGF0aFswXSA9PiAkcGF0aCwKICAgICAgICAgICAgZGVmYXVsdCA9PiBzdWJzdHIoJHBhdGgsIDEpLAogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogRm9ybWF0dGluZyB0aGUgcGF0aCB0byBrZWVwIGEgdmFsaWQgVVJJLgogICAgICovCiAgICBmaW5hbCBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGZvcm1hdFBhdGgoc3RyaW5nICRwYXRoLCBzdHJpbmcgJGJhc2VQYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGNvbG9uUG9zaXRpb24gPSBzdHJwb3MoJHBhdGgsICc6Jyk7CiAgICAgICAgJHNsYXNoUG9zaXRpb24gPSBzdHJwb3MoJHBhdGgsICcvJyk7CgogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAnJyA9PT0gJHBhdGggPT4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgICAgICcnID09PSAkYmFzZVBhdGgsCiAgICAgICAgICAgICAgICAnLycgPT09ICRiYXNlUGF0aCA9PiAkYmFzZVBhdGgsCiAgICAgICAgICAgICAgICBkZWZhdWx0ID0+ICcuLycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZhbHNlID09PSAkY29sb25Qb3NpdGlvbiA9PiAkcGF0aCwKICAgICAgICAgICAgZmFsc2UgPT09ICRzbGFzaFBvc2l0aW9uLAogICAgICAgICAgICAkY29sb25Qb3NpdGlvbiA8ICRzbGFzaFBvc2l0aW9uICA9PiAgIi4vJHBhdGgiLAogICAgICAgICAgICBkZWZhdWx0ID0+ICRwYXRoLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBGb3JtYXR0aW5nIHRoZSBwYXRoIHRvIGtlZXAgYSByZXNvbHZhYmxlIFVSSS4KICAgICAqLwogICAgZmluYWwgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBmb3JtYXRQYXRoV2l0aEVtcHR5QmFzZVF1ZXJ5KHN0cmluZyAkcGF0aCk6IHN0cmluZwogICAgewogICAgICAgICR0YXJnZXRTZWdtZW50cyA9IHN0YXRpYzo6Z2V0U2VnbWVudHMoJHBhdGgpOwogICAgICAgICRiYXNlbmFtZSA9ICR0YXJnZXRTZWdtZW50c1thcnJheV9rZXlfbGFzdCgkdGFyZ2V0U2VnbWVudHMpXTsKCiAgICAgICAgcmV0dXJuICcnID09PSAkYmFzZW5hbWUgPyAnLi8nIDogJGJhc2VuYW1lOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplcyBhIFVSSSBmb3IgY29tcGFyaXNvbjsgdGhpcyBVUkkgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGlzIG5vdCBzdWl0YWJsZSBmb3IgdXNhZ2UgYXMgcGVyIFJGQyBndWlkZWxpbmVzLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNy42LjAKICAgICAqCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKi8KICAgICNbRGVwcmVjYXRlZChtZXNzYWdlOidubyBsb25nZXIgdXNlZCBieSB0aGUgaXNTYW1lRG9jdW1lbnQgbWV0aG9kJywgc2luY2U6J2xlYWd1ZS91cmktaW50ZXJmYWNlczo3LjYuMCcpXQogICAgZmluYWwgcHJvdGVjdGVkIGZ1bmN0aW9uIG5vcm1hbGl6ZShQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZSAkdXJpKTogc3RyaW5nCiAgICB7CiAgICAgICAgJG5ld1VyaSA9ICR1cmktPndpdGhTY2hlbWUoJHVyaSBpbnN0YW5jZW9mIFBzcjdVcmlJbnRlcmZhY2UgPyAnJyA6IG51bGwpOwogICAgICAgIGlmICgnJyA9PT0gJG5ld1VyaS0+X190b1N0cmluZygpKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBVcmlTdHJpbmc6Om5vcm1hbGl6ZSgkbmV3VXJpKTsKICAgIH0KCgogICAgLyoqCiAgICAgKiBSZW1vdmUgZG90IHNlZ21lbnRzIGZyb20gdGhlIFVSSSBwYXRoIGFzIHBlciBSRkMgc3BlY2lmaWNhdGlvbi4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDcuNi4wCiAgICAgKgogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTonbm8gbG9uZ2VyIHVzZWQgYnkgdGhlIGlzU2FtZURvY3VtZW50IG1ldGhvZCcsIHNpbmNlOidsZWFndWUvdXJpLWludGVyZmFjZXM6Ny42LjAnKV0KICAgIGZpbmFsIHByb3RlY3RlZCBmdW5jdGlvbiByZW1vdmVEb3RTZWdtZW50cyhzdHJpbmcgJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIXN0cl9jb250YWlucygkcGF0aCwgJy4nKSkgewogICAgICAgICAgICByZXR1cm4gJHBhdGg7CiAgICAgICAgfQoKICAgICAgICAkcmVkdWNlciA9IGZ1bmN0aW9uIChhcnJheSAkY2FycnksIHN0cmluZyAkc2VnbWVudCk6IGFycmF5IHsKICAgICAgICAgICAgaWYgKCcuLicgPT09ICRzZWdtZW50KSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGNhcnJ5KTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGNhcnJ5OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzc2V0KHN0YXRpYzo6RE9UX1NFR01FTlRTWyRzZWdtZW50XSkpIHsKICAgICAgICAgICAgICAgICRjYXJyeVtdID0gJHNlZ21lbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkY2Fycnk7CiAgICAgICAgfTsKCiAgICAgICAgJG9sZFNlZ21lbnRzID0gZXhwbG9kZSgnLycsICRwYXRoKTsKICAgICAgICAkbmV3UGF0aCA9IGltcGxvZGUoJy8nLCBhcnJheV9yZWR1Y2UoJG9sZFNlZ21lbnRzLCAkcmVkdWNlciguLi4pLCBbXSkpOwogICAgICAgIGlmIChpc3NldChzdGF0aWM6OkRPVF9TRUdNRU5UU1skb2xkU2VnbWVudHNbYXJyYXlfa2V5X2xhc3QoJG9sZFNlZ21lbnRzKV1dKSkgewogICAgICAgICAgICAkbmV3UGF0aCAuPSAnLyc7CiAgICAgICAgfQoKICAgICAgICAvLyBAY29kZUNvdmVyYWdlSWdub3JlU3RhcnQKICAgICAgICAvLyBhZGRlZCBiZWNhdXNlIHNvbWUgUFNSLTcgaW1wbGVtZW50YXRpb25zIGRvIG5vdCByZXNwZWN0IFJGQzM5ODYKICAgICAgICBpZiAoc3RyX3N0YXJ0c193aXRoKCRwYXRoLCAnLycpICYmICFzdHJfc3RhcnRzX3dpdGgoJG5ld1BhdGgsICcvJykpIHsKICAgICAgICAgICAgcmV0dXJuICcvJy4kbmV3UGF0aDsKICAgICAgICB9CiAgICAgICAgLy8gQGNvZGVDb3ZlcmFnZUlnbm9yZUVuZAoKICAgICAgICByZXR1cm4gJG5ld1BhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXNvbHZlcyBhbiBVUkkgcGF0aCBhbmQgcXVlcnkgY29tcG9uZW50LgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7MDpzdHJpbmcsIDE6c3RyaW5nfG51bGx9CiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA3LjYuMAogICAgICoKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J25vIGxvbmdlciB1c2VkIGJ5IHRoZSBpc1NhbWVEb2N1bWVudCBtZXRob2QnLCBzaW5jZTonbGVhZ3VlL3VyaS1pbnRlcmZhY2VzOjcuNi4wJyldCiAgICBmaW5hbCBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVzb2x2ZVBhdGhBbmRRdWVyeShQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZSAkdXJpKTogYXJyYXkKICAgIHsKICAgICAgICAkdGFyZ2V0UGF0aCA9ICR1cmktPmdldFBhdGgoKTsKICAgICAgICAkbnVsbCA9ICR1cmkgaW5zdGFuY2VvZiBQc3I3VXJpSW50ZXJmYWNlID8gJycgOiBudWxsOwoKICAgICAgICBpZiAoc3RyX3N0YXJ0c193aXRoKCR0YXJnZXRQYXRoLCAnLycpKSB7CiAgICAgICAgICAgIHJldHVybiBbJHRhcmdldFBhdGgsICR1cmktPmdldFF1ZXJ5KCldOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcnID09PSAkdGFyZ2V0UGF0aCkgewogICAgICAgICAgICAkdGFyZ2V0UXVlcnkgPSAkdXJpLT5nZXRRdWVyeSgpOwogICAgICAgICAgICBpZiAoJG51bGwgPT09ICR0YXJnZXRRdWVyeSkgewogICAgICAgICAgICAgICAgJHRhcmdldFF1ZXJ5ID0gJHRoaXMtPnVyaS0+Z2V0UXVlcnkoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRhcmdldFBhdGggPSAkdGhpcy0+dXJpLT5nZXRQYXRoKCk7CiAgICAgICAgICAgIC8vQGNvZGVDb3ZlcmFnZUlnbm9yZVN0YXJ0CiAgICAgICAgICAgIC8vYmVjYXVzZSBzb21lIFBTUi03IFVyaSBpbXBsZW1lbnRhdGlvbnMgYWxsb3cgdGhpcyBSRkMzOTg2IGZvcmJpZGRlbiBjb25zdHJ1Y3Rpb24KICAgICAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT51cmktPmdldEF1dGhvcml0eSgpICYmICFzdHJfc3RhcnRzX3dpdGgoJHRhcmdldFBhdGgsICcvJykpIHsKICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gJy8nLiR0YXJnZXRQYXRoOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vQGNvZGVDb3ZlcmFnZUlnbm9yZUVuZAoKICAgICAgICAgICAgcmV0dXJuIFskdGFyZ2V0UGF0aCwgJHRhcmdldFF1ZXJ5XTsKICAgICAgICB9CgogICAgICAgICRiYXNlUGF0aCA9ICR0aGlzLT51cmktPmdldFBhdGgoKTsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPnVyaS0+Z2V0QXV0aG9yaXR5KCkgJiYgJycgPT09ICRiYXNlUGF0aCkgewogICAgICAgICAgICAkdGFyZ2V0UGF0aCA9ICcvJy4kdGFyZ2V0UGF0aDsKICAgICAgICB9CgogICAgICAgIGlmICgnJyAhPT0gJGJhc2VQYXRoKSB7CiAgICAgICAgICAgICRzZWdtZW50cyA9IGV4cGxvZGUoJy8nLCAkYmFzZVBhdGgpOwogICAgICAgICAgICBhcnJheV9wb3AoJHNlZ21lbnRzKTsKICAgICAgICAgICAgaWYgKFtdICE9PSAkc2VnbWVudHMpIHsKICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gaW1wbG9kZSgnLycsICRzZWdtZW50cykuJy8nLiR0YXJnZXRQYXRoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyR0YXJnZXRQYXRoLCAkdXJpLT5nZXRRdWVyeSgpXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/Builder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXENvbmRpdGlvbmFibGU7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xGcmFnbWVudERpcmVjdGl2ZTsKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFRyYW5zZm9ybWFibGU7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlDb21wb25lbnRJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBTZW5zaXRpdmVQYXJhbWV0ZXI7CnVzZSBTdHJpbmdhYmxlOwp1c2UgVGhyb3dhYmxlOwp1c2UgVHlwZUVycm9yOwp1c2UgVXJpXFJmYzM5ODZcVXJpIGFzIFJmYzM5ODZVcmk7CnVzZSBVcmlcV2hhdFdnXFVybCBhcyBXaGF0V2dVcmw7Cgp1c2UgZnVuY3Rpb24gaXNfYm9vbDsKdXNlIGZ1bmN0aW9uIHN0cl9yZXBsYWNlOwp1c2UgZnVuY3Rpb24gc3RycG9zOwoKZmluYWwgY2xhc3MgQnVpbGRlciBpbXBsZW1lbnRzIENvbmRpdGlvbmFibGUsIFRyYW5zZm9ybWFibGUKewogICAgcHJpdmF0ZSA/c3RyaW5nICRzY2hlbWUgPSBudWxsOwogICAgcHJpdmF0ZSA/c3RyaW5nICR1c2VybmFtZSA9IG51bGw7CiAgICBwcml2YXRlID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbDsKICAgIHByaXZhdGUgP3N0cmluZyAkaG9zdCA9IG51bGw7CiAgICBwcml2YXRlID9pbnQgJHBvcnQgPSBudWxsOwogICAgcHJpdmF0ZSA/c3RyaW5nICRwYXRoID0gbnVsbDsKICAgIHByaXZhdGUgP3N0cmluZyAkcXVlcnkgPSBudWxsOwogICAgcHJpdmF0ZSA/c3RyaW5nICRmcmFnbWVudCA9IG51bGw7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkc2NoZW1lID0gbnVsbCwKICAgICAgICBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHVzZXJuYW1lID0gbnVsbCwKICAgICAgICAjW1NlbnNpdGl2ZVBhcmFtZXRlcl0gQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRwYXNzd29yZCA9IG51bGwsCiAgICAgICAgQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0ID0gbnVsbCwKICAgICAgICBCYWNrZWRFbnVtfGludHxudWxsICRwb3J0ID0gbnVsbCwKICAgICAgICBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHBhdGggPSBudWxsLAogICAgICAgIEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkcXVlcnkgPSBudWxsLAogICAgICAgIEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkZnJhZ21lbnQgPSBudWxsLAogICAgKSB7CiAgICAgICAgJHRoaXMKICAgICAgICAgICAgLT5zY2hlbWUoJHNjaGVtZSkKICAgICAgICAgICAgLT51c2VySW5mbygkdXNlcm5hbWUsICRwYXNzd29yZCkKICAgICAgICAgICAgLT5ob3N0KCRob3N0KQogICAgICAgICAgICAtPnBvcnQoJHBvcnQpCiAgICAgICAgICAgIC0+cGF0aCgkcGF0aCkKICAgICAgICAgICAgLT5xdWVyeSgkcXVlcnkpCiAgICAgICAgICAgIC0+ZnJhZ21lbnQoJGZyYWdtZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNjaGVtZShCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHNjaGVtZSk6IHNlbGYKICAgIHsKICAgICAgICAkc2NoZW1lID0gJHRoaXMtPmZpbHRlclN0cmluZygkc2NoZW1lKTsKICAgICAgICBpZiAoJHNjaGVtZSAhPT0gJHRoaXMtPnNjaGVtZSkgewogICAgICAgICAgICBVcmlTdHJpbmc6OmlzVmFsaWRTY2hlbWUoJHNjaGVtZSkgfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgc2NoZW1lIGAnLiRzY2hlbWUuJ2AgaXMgaW52YWxpZC4nKTsKCiAgICAgICAgICAgICR0aGlzLT5zY2hlbWUgPSAkc2NoZW1lOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTeW50YXhFcnJvcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdXNlckluZm8oCiAgICAgICAgQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICR1c2VyLAogICAgICAgICNbU2Vuc2l0aXZlUGFyYW1ldGVyXSBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHBhc3N3b3JkID0gbnVsbAogICAgKTogc3RhdGljIHsKICAgICAgICAkdXNlcm5hbWUgPSBFbmNvZGVyOjplbmNvZGVVc2VyKCR0aGlzLT5maWx0ZXJTdHJpbmcoJHVzZXIpKTsKICAgICAgICAkcGFzc3dvcmQgPSBFbmNvZGVyOjplbmNvZGVQYXNzd29yZCgkdGhpcy0+ZmlsdGVyU3RyaW5nKCRwYXNzd29yZCkpOwogICAgICAgIGlmICgkdXNlcm5hbWUgIT09ICR0aGlzLT51c2VybmFtZSB8fCAkcGFzc3dvcmQgIT09ICR0aGlzLT5wYXNzd29yZCkgewogICAgICAgICAgICAkdGhpcy0+dXNlcm5hbWUgPSAkdXNlcm5hbWU7CiAgICAgICAgICAgICR0aGlzLT5wYXNzd29yZCA9ICRwYXNzd29yZDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhvc3QoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRob3N0KTogc2VsZgogICAgewogICAgICAgICRob3N0ID0gJHRoaXMtPmZpbHRlclN0cmluZygkaG9zdCk7CiAgICAgICAgaWYgKCRob3N0ICE9PSAkdGhpcy0+aG9zdCkgewogICAgICAgICAgICBudWxsID09PSAkaG9zdAogICAgICAgICAgICB8fCBIb3N0UmVjb3JkOjppc1ZhbGlkKCRob3N0KQogICAgICAgICAgICB8fCB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSBob3N0IGAnLiRob3N0LidgIGlzIGludmFsaWQuJyk7CgogICAgICAgICAgICAkdGhpcy0+aG9zdCA9ICRob3N0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTeW50YXhFcnJvcgogICAgICogQHRocm93cyBUeXBlRXJyb3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvcnQoQmFja2VkRW51bXxpbnR8bnVsbCAkcG9ydCk6IHNlbGYKICAgIHsKICAgICAgICBpZiAoJHBvcnQgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgIDEgPT09IHByZWdfbWF0Y2goJy9eXGQrJC8nLCAoc3RyaW5nKSAkcG9ydC0+dmFsdWUpCiAgICAgICAgICAgIHx8IHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBwb3J0IG11c3QgYmUgYSB2YWxpZCBCYWNrZWRFbnVtIGNvbnRhaW5pbmcgYSBudW1iZXIuJyk7CgogICAgICAgICAgICAkcG9ydCA9IChpbnQpICRwb3J0LT52YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcG9ydCAhPT0gJHRoaXMtPnBvcnQpIHsKICAgICAgICAgICAgbnVsbCA9PT0gJHBvcnQKICAgICAgICAgICAgfHwgKCRwb3J0ID49IDAgJiYgJHBvcnQgPCA2NTUzNSkKICAgICAgICAgICAgfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgcG9ydCB2YWx1ZSBtdXN0IGJlIG51bGwgb3IgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDY1NTM1LicpOwoKICAgICAgICAgICAgJHRoaXMtPnBvcnQgPSAkcG9ydDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGF1dGhvcml0eShCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGF1dGhvcml0eSk6IHNlbGYKICAgIHsKICAgICAgICBbJ3VzZXInID0+ICR1c2VyLCAncGFzcycgPT4gJHBhc3MsICdob3N0JyA9PiAkaG9zdCwgJ3BvcnQnID0+ICRwb3J0XSA9IFVyaVN0cmluZzo6cGFyc2VBdXRob3JpdHkoJGF1dGhvcml0eSk7CgogICAgICAgIHJldHVybiAkdGhpcwogICAgICAgICAgICAtPnVzZXJJbmZvKCR1c2VyLCAkcGFzcykKICAgICAgICAgICAgLT5ob3N0KCRob3N0KQogICAgICAgICAgICAtPnBvcnQoJHBvcnQpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTeW50YXhFcnJvcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGF0aChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHBhdGgpOiBzZWxmCiAgICB7CiAgICAgICAgJHBhdGggPSAkdGhpcy0+ZmlsdGVyU3RyaW5nKCRwYXRoKTsKICAgICAgICBpZiAoJHBhdGggIT09ICR0aGlzLT5wYXRoKSB7CiAgICAgICAgICAgICR0aGlzLT5wYXRoID0gbnVsbCAhPT0gJHBhdGggPyBFbmNvZGVyOjplbmNvZGVQYXRoKCRwYXRoKSA6IG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBxdWVyeShCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHF1ZXJ5KTogc2VsZgogICAgewogICAgICAgICRxdWVyeSA9ICR0aGlzLT5maWx0ZXJTdHJpbmcoJHF1ZXJ5KTsKICAgICAgICBpZiAoJHF1ZXJ5ICE9PSAkdGhpcy0+cXVlcnkpIHsKICAgICAgICAgICAgJHRoaXMtPnF1ZXJ5ID0gRW5jb2Rlcjo6ZW5jb2RlUXVlcnlPckZyYWdtZW50KCRxdWVyeSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmcmFnbWVudChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGZyYWdtZW50KTogc2VsZgogICAgewogICAgICAgICRmcmFnbWVudCA9ICR0aGlzLT5maWx0ZXJTdHJpbmcoJGZyYWdtZW50KTsKICAgICAgICBpZiAoJGZyYWdtZW50ICE9PSAkdGhpcy0+ZnJhZ21lbnQpIHsKICAgICAgICAgICAgJHRoaXMtPmZyYWdtZW50ID0gRW5jb2Rlcjo6ZW5jb2RlUXVlcnlPckZyYWdtZW50KCRmcmFnbWVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXRzIGJhY2sgdGhlIEJ1aWxkZXIgaW4gYSBmcmVzaGx5IGNyZWF0ZWQgc3RhdGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNldCgpOiBzZWxmCiAgICB7CiAgICAgICAgJHRoaXMtPnNjaGVtZSA9IG51bGw7CiAgICAgICAgJHRoaXMtPnVzZXJuYW1lID0gbnVsbDsKICAgICAgICAkdGhpcy0+cGFzc3dvcmQgPSBudWxsOwogICAgICAgICR0aGlzLT5ob3N0ID0gbnVsbDsKICAgICAgICAkdGhpcy0+cG9ydCA9IG51bGw7CiAgICAgICAgJHRoaXMtPnBhdGggPSBudWxsOwogICAgICAgICR0aGlzLT5xdWVyeSA9IG51bGw7CiAgICAgICAgJHRoaXMtPmZyYWdtZW50ID0gbnVsbDsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogRXhlY3V0ZXMgdGhlIGdpdmVuIGNhbGxiYWNrIHdpdGggdGhlIGN1cnJlbnQgaW5zdGFuY2UKICAgICAqIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZShzZWxmKTogc2VsZiAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRyYW5zZm9ybShjYWxsYWJsZSAkY2FsbGJhY2spOiBzdGF0aWMKICAgIHsKICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2hlbihjYWxsYWJsZXxib29sICRjb25kaXRpb24sIGNhbGxhYmxlICRvblN1Y2Nlc3MsID9jYWxsYWJsZSAkb25GYWlsID0gbnVsbCk6IHN0YXRpYwogICAgewogICAgICAgIGlmICghaXNfYm9vbCgkY29uZGl0aW9uKSkgewogICAgICAgICAgICAkY29uZGl0aW9uID0gJGNvbmRpdGlvbigkdGhpcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgJGNvbmRpdGlvbiA9PiAkb25TdWNjZXNzKCR0aGlzKSwKICAgICAgICAgICAgbnVsbCAhPT0gJG9uRmFpbCA9PiAkb25GYWlsKCR0aGlzKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkdGhpcywKICAgICAgICB9ID8/ICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgVVJJIGNhbiBub3QgYmUgYnVpbGQgd2l0aCB0aGUgY3VycmVudCBCdWlsZGVyIHN0YXRlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBndWFyZChSZmMzOTg2VXJpfFdoYXRXZ1VybHxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmkgPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0aGlzLT5idWlsZCgkYmFzZVVyaSk7CgogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICRleGNlcHRpb24pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgY3VycmVudCBidWlsZGVyIGNhbm5vdCBnZW5lcmF0ZSBhIHZhbGlkIFVSSS4nLCBwcmV2aW91czogJGV4Y2VwdGlvbik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgVVJJIGNhbiBiZSBidWlsdCB3aXRoIHRoZSBjdXJyZW50IEJ1aWxkZXIgc3RhdGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZShSZmMzOTg2VXJpfFdoYXRXZ1VybHxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmkgPSBudWxsKTogYm9vbAogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0aGlzLT5idWlsZCgkYmFzZVVyaSk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYnVpbGQoUmZjMzk4NlVyaXxXaGF0V2dVcmx8QmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRiYXNlVXJpID0gbnVsbCk6IFVyaQogICAgewogICAgICAgICRhdXRob3JpdHkgPSAkdGhpcy0+YnVpbGRBdXRob3JpdHkoKTsKICAgICAgICAkcGF0aCA9ICR0aGlzLT5idWlsZFBhdGgoJGF1dGhvcml0eSk7CiAgICAgICAgJHVyaVN0cmluZyA9IFVyaVN0cmluZzo6YnVpbGRVcmkoCiAgICAgICAgICAgICR0aGlzLT5zY2hlbWUsCiAgICAgICAgICAgICRhdXRob3JpdHksCiAgICAgICAgICAgICRwYXRoLAogICAgICAgICAgICBFbmNvZGVyOjplbmNvZGVRdWVyeU9yRnJhZ21lbnQoJHRoaXMtPnF1ZXJ5KSwKICAgICAgICAgICAgRW5jb2Rlcjo6ZW5jb2RlUXVlcnlPckZyYWdtZW50KCR0aGlzLT5mcmFnbWVudCkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gVXJpOjpuZXcobnVsbCA9PT0gJGJhc2VVcmkgPyAkdXJpU3RyaW5nIDogVXJpU3RyaW5nOjpyZXNvbHZlKCR1cmlTdHJpbmcsIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICRiYXNlVXJpIGluc3RhbmNlb2YgUmZjMzk4NlVyaSA9PiAkYmFzZVVyaS0+dG9TdHJpbmcoKSwKICAgICAgICAgICAgJGJhc2VVcmkgaW5zdGFuY2VvZiBXaGF0V2dVcmwgPT4gJGJhc2VVcmktPnRvQXNjaWlTdHJpbmcoKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkYmFzZVVyaSwKICAgICAgICB9KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYnVpbGRBdXRob3JpdHkoKTogP3N0cmluZwogICAgewogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+aG9zdCkgewogICAgICAgICAgICAobnVsbCA9PT0gJHRoaXMtPnVzZXJuYW1lICYmIG51bGwgPT09ICR0aGlzLT5wYXNzd29yZCAmJiBudWxsID09PSAkdGhpcy0+cG9ydCkKICAgICAgICAgICAgfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgVXNlciBJbmZvcm1hdGlvbiBhbmQvb3IgdGhlIFBvcnQgY29tcG9uZW50KHMpIGFyZSBzZXQgd2l0aG91dCBhIEhvc3QgY29tcG9uZW50IGJlaW5nIHByZXNlbnQuJyk7CgogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRhdXRob3JpdHkgPSAkdGhpcy0+aG9zdDsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPnVzZXJuYW1lIHx8IG51bGwgIT09ICR0aGlzLT5wYXNzd29yZCkgewogICAgICAgICAgICAkdXNlckluZm8gPSBFbmNvZGVyOjplbmNvZGVVc2VyKCR0aGlzLT51c2VybmFtZSk7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAkdGhpcy0+cGFzc3dvcmQpIHsKICAgICAgICAgICAgICAgICR1c2VySW5mbyAuPSAnOicuRW5jb2Rlcjo6ZW5jb2RlUGFzc3dvcmQoJHRoaXMtPnBhc3N3b3JkKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGF1dGhvcml0eSA9ICR1c2VySW5mby4nQCcuJGF1dGhvcml0eTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkdGhpcy0+cG9ydCkgewogICAgICAgICAgICByZXR1cm4gJGF1dGhvcml0eS4nOicuJHRoaXMtPnBvcnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGF1dGhvcml0eTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBidWlsZFBhdGgoP3N0cmluZyAkYXV0aG9yaXR5KTogP3N0cmluZwogICAgewogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+cGF0aCB8fCAnJyA9PT0gJHRoaXMtPnBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5wYXRoOwogICAgICAgIH0KCiAgICAgICAgJHBhdGggPSBFbmNvZGVyOjplbmNvZGVQYXRoKCR0aGlzLT5wYXRoKTsKICAgICAgICBpZiAobnVsbCAhPT0gJGF1dGhvcml0eSkgewogICAgICAgICAgICByZXR1cm4gc3RyX3N0YXJ0c193aXRoKCRwYXRoLCAnLycpID8gJHBhdGggOiAnLycuJHBhdGg7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyX3N0YXJ0c193aXRoKCRwYXRoLCAnLy8nKSkgewogICAgICAgICAgICByZXR1cm4gJy8uJy4kcGF0aDsKICAgICAgICB9CgogICAgICAgICRjb2xvblBvcyA9IHN0cnBvcygkcGF0aCwgJzonKTsKICAgICAgICBpZiAoZmFsc2UgIT09ICRjb2xvblBvcyAmJiBudWxsID09PSAkdGhpcy0+c2NoZW1lKSB7CiAgICAgICAgICAgICRzbGFzaFBvcyA9IHN0cnBvcygkcGF0aCwgJy8nKTsKICAgICAgICAgICAgKGZhbHNlICE9PSAkc2xhc2hQb3MgJiYgJGNvbG9uUG9zID4gJHNsYXNoUG9zKSB8fCB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0luIGFic2VuY2Ugb2YgdGhlIHNjaGVtZSBhbmQgYXV0aG9yaXR5IGNvbXBvbmVudHMsIHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgY2Fubm90IGNvbnRhaW4gYSBjb2xvbiAoIjoiKSBjaGFyYWN0ZXIuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaWx0ZXIgYSBzdHJpbmcuCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgc3VibWl0dGVkIGRhdGEgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJTdHJpbmcoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRzdHIpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJHN0ciA9IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICRzdHIgaW5zdGFuY2VvZiBGcmFnbWVudERpcmVjdGl2ZSA9PiAkc3RyLT50b0ZyYWdtZW50VmFsdWUoKSwKICAgICAgICAgICAgJHN0ciBpbnN0YW5jZW9mIFVyaUNvbXBvbmVudEludGVyZmFjZSA9PiAkc3RyLT52YWx1ZSgpLAogICAgICAgICAgICAkc3RyIGluc3RhbmNlb2YgQmFja2VkRW51bSA9PiAoc3RyaW5nKSAkc3RyLT52YWx1ZSwKICAgICAgICAgICAgbnVsbCA9PT0gJHN0ciA9PiBudWxsLAogICAgICAgICAgICBkZWZhdWx0ID0+IChzdHJpbmcpICRzdHIsCiAgICAgICAgfTsKCiAgICAgICAgaWYgKG51bGwgPT09ICRzdHIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkc3RyID0gc3RyX3JlcGxhY2UoJyAnLCAnJTIwJywgJHN0cik7CgogICAgICAgIHJldHVybiBVcmlTdHJpbmc6OmNvbnRhaW5zUmZjMzk4N0NoYXJzKCRzdHIpCiAgICAgICAgICAgID8gJHN0cgogICAgICAgICAgICA6IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIGNvbXBvbmVudCB2YWx1ZSBgJy4kc3RyLidgIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycy4nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAibGVhZ3VlL3VyaSIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiIgOiAiVVJJIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IiwKICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAidXJsIiwKICAgICAgICAidXJpIiwKICAgICAgICAidXJuIiwKICAgICAgICAidXJpLXRlbXBsYXRlIiwKICAgICAgICAicmZjMjE0MSIsCiAgICAgICAgInJmYzM5ODYiLAogICAgICAgICJyZmMzOTg3IiwKICAgICAgICAicmZjODE0MSIsCiAgICAgICAgInJmYzY1NzAiLAogICAgICAgICJwc3ItNyIsCiAgICAgICAgInBhcnNlX3VybCIsCiAgICAgICAgImh0dHAiLAogICAgICAgICJodHRwcyIsCiAgICAgICAgIndzIiwKICAgICAgICAiZnRwIiwKICAgICAgICAiZGF0YS11cmkiLAogICAgICAgICJmaWxlLXVyaSIsCiAgICAgICAgIm1pZGRsZXdhcmUiLAogICAgICAgICJwYXJzZV9zdHIiLAogICAgICAgICJxdWVyeS1zdHJpbmciLAogICAgICAgICJxdWVyeXN0cmluZyIsCiAgICAgICAgImhvc3RuYW1lIgogICAgXSwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly91cmkudGhlcGhwbGVhZ3VlLmNvbSIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIiA6ICJJZ25hY2UgTnlhbWFnYW5hIEJ1dGVyYSIsCiAgICAgICAgICAgICJlbWFpbCIgOiAibnlhbXNwcm9kQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICJob21lcGFnZSIgOiAiaHR0cHM6Ly9ueWFtc3Byb2QuY29tIgogICAgICAgIH0KICAgIF0sCiAgICAic3VwcG9ydCI6IHsKICAgICAgICAiZm9ydW0iOiAiaHR0cHM6Ly90aGVwaHBsZWFndWUuc2xhY2suY29tIiwKICAgICAgICAiZG9jcyI6ICJodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tIiwKICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvdXJpLXNyYy9pc3N1ZXMiCiAgICB9LAogICAgImZ1bmRpbmciOiBbCiAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9ueWFtc3Byb2QiCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiXjguMSIsCiAgICAgICAgImxlYWd1ZS91cmktaW50ZXJmYWNlcyI6ICJeNy44LjEiLAogICAgICAgICJwc3IvaHR0cC1mYWN0b3J5IjogIl4xIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJMZWFndWVcXFVyaVxcIjogIiIKICAgICAgICB9CiAgICB9LAogICAgImNvbmZsaWN0IjogewogICAgICAgICJsZWFndWUvdXJpLXNjaGVtZXMiOiAiXjEuMCIKICAgIH0sCiAgICAic3VnZ2VzdCI6IHsKICAgICAgICAiZXh0LWJjbWF0aCI6ICJ0byBpbXByb3ZlIElQVjQgaG9zdCBwYXJzaW5nIiwKICAgICAgICAiZXh0LWRvbSI6ICJ0byBjb252ZXJ0IHRoZSBVUkkgaW50byBhbiBIVE1MIGFuY2hvciB0YWciLAogICAgICAgICJleHQtZmlsZWluZm8iOiAidG8gY3JlYXRlIERhdGEgVVJJIGZyb20gZmlsZSBjb250ZW5udHMiLAogICAgICAgICJleHQtZ21wIjogInRvIGltcHJvdmUgSVBWNCBob3N0IHBhcnNpbmciLAogICAgICAgICJleHQtaW50bCI6ICJ0byBoYW5kbGUgSUROIGhvc3Qgd2l0aCB0aGUgYmVzdCBwZXJmb3JtYW5jZSIsCiAgICAgICAgImV4dC11cmkiOiAidG8gdXNlIHRoZSBQSFAgbmF0aXZlIFVSSSBjbGFzcyIsCiAgICAgICAgImplcmVteWtlbmRhbGwvcGhwLWRvbWFpbi1wYXJzZXIiOiAidG8gZnVydGhlciBwYXJzZSB0aGUgVVJJIGhvc3QgYW5kIHJlc29sdmUgaXRzIFB1YmxpYyBTdWZmaXggYW5kIFRvcCBMZXZlbCBEb21haW4iLAogICAgICAgICJsZWFndWUvdXJpLWNvbXBvbmVudHMiIDogInRvIHByb3ZpZGUgYWRkaXRpb25hbCB0b29scyB0byBtYW5pcHVsYXRlIFVSSSBvYmplY3RzIGNvbXBvbmVudHMiLAogICAgICAgICJsZWFndWUvdXJpLXBvbHlmaWxsIiA6ICJ0byBiYWNrcG9ydCB0aGUgUEhQIFVSSSBleHRlbnNpb24gZm9yIG9sZGVyIHZlcnNpb25zIG9mIFBIUCIsCiAgICAgICAgInBocC02NGJpdCI6ICJ0byBpbXByb3ZlIElQVjQgaG9zdCBwYXJzaW5nIiwKICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1pbnRsLWlkbiI6ICJ0byBoYW5kbGUgSUROIGhvc3QgdmlhIHRoZSBTeW1mb255IHBvbHlmaWxsIGlmIGV4dC1pbnRsIGlzIG5vdCBwcmVzZW50IiwKICAgICAgICAicm93Ym90L3VybCI6ICJ0byBoYW5kbGUgVVJMcyB1c2luZyB0aGUgV0hBVFdHIFVSTCBMaXZpbmcgU3RhbmRhcmQgc3BlY2lmaWNhdGlvbiIKICAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiNy54LWRldiIKICAgICAgICB9CiAgICB9LAogICAgImNvbmZpZyI6IHsKICAgICAgICAic29ydC1wYWNrYWdlcyI6IHRydWUKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/Http.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgRGVwcmVjYXRlZDsKdXNlIEpzb25TZXJpYWxpemFibGU7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xDb25kaXRpb25hYmxlOwp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVHJhbnNmb3JtYWJsZTsKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUV4Y2VwdGlvbjsKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uc1xTeW50YXhFcnJvcjsKdXNlIExlYWd1ZVxVcmlcVXJpVGVtcGxhdGVcVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2UgYXMgUHNyN1VyaUludGVyZmFjZTsKdXNlIFN0cmluZ2FibGU7CnVzZSBVcmlcUmZjMzk4NlxVcmkgYXMgUmZjMzk4NlVyaTsKdXNlIFVyaVxXaGF0V2dcVXJsIGFzIFdoYXRXZ1VybDsKCnVzZSBmdW5jdGlvbiBpc19ib29sOwp1c2UgZnVuY3Rpb24gbHRyaW07CgovKioKICogQHBocHN0YW4taW1wb3J0LXR5cGUgSW5wdXRDb21wb25lbnRNYXAgZnJvbSBVcmlTdHJpbmcKICovCmZpbmFsIGNsYXNzIEh0dHAgaW1wbGVtZW50cyBTdHJpbmdhYmxlLCBQc3I3VXJpSW50ZXJmYWNlLCBKc29uU2VyaWFsaXphYmxlLCBDb25kaXRpb25hYmxlLCBUcmFuc2Zvcm1hYmxlCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgVXJpSW50ZXJmYWNlICR1cmk7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChVcmlJbnRlcmZhY2UgJHVyaSkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHVyaS0+Z2V0U2NoZW1lKCkgJiYgJycgPT09ICR1cmktPmdldEhvc3QoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0FuIFVSSSB3aXRob3V0IHNjaGVtZSBjYW5ub3QgY29udGFpbiBhbiBlbXB0eSBob3N0IHN0cmluZyBhY2NvcmRpbmcgdG8gUFNSLTc6ICcuJHVyaSk7CiAgICAgICAgfQoKICAgICAgICAkcG9ydCA9ICR1cmktPmdldFBvcnQoKTsKICAgICAgICBpZiAobnVsbCAhPT0gJHBvcnQgJiYgKCRwb3J0IDwgMCB8fCAkcG9ydCA+IDY1NTM1KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSBVUkkgcG9ydCBpcyBvdXRzaWRlIHRoZSBlc3RhYmxpc2hlZCBUQ1AgYW5kIFVEUCBwb3J0IHJhbmdlczogJy4kdXJpKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT51cmkgPSAkdGhpcy0+bm9ybWFsaXplUHNyN1VyaSgkdXJpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBTUi03IFVyaUludGVyZmFjZSBtYWtlcyB0aGUgZm9sbG93aW5nIG5vcm1hbGl6YXRpb24uCiAgICAgKgogICAgICogU2FmZWx5IHN0cmluZ2lmeSBpbnB1dCB3aGVuIHBvc3NpYmxlIGZvciBMZWFndWUgVXJpSW50ZXJmYWNlIGNvbXBhdGliaWxpdHkuCiAgICAgKgogICAgICogUXVlcnksIEZyYWdtZW50IGFuZCBVc2VyIEluZm8gd2hlbiB1bmRlZmluZWQgYXJlIG5vcm1hbGl6ZWQgdG8gdGhlIGVtcHR5IHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG5vcm1hbGl6ZVBzcjdVcmkoVXJpSW50ZXJmYWNlICR1cmkpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkY29tcG9uZW50cyA9IFtdOwogICAgICAgIGlmICgnJyA9PT0gJHVyaS0+Z2V0RnJhZ21lbnQoKSkgewogICAgICAgICAgICAkY29tcG9uZW50c1snZnJhZ21lbnQnXSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJycgPT09ICR1cmktPmdldFF1ZXJ5KCkpIHsKICAgICAgICAgICAgJGNvbXBvbmVudHNbJ3F1ZXJ5J10gPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcnID09PSAkdXJpLT5nZXRVc2VySW5mbygpKSB7CiAgICAgICAgICAgICRjb21wb25lbnRzWyd1c2VyJ10gPSBudWxsOwogICAgICAgICAgICAkY29tcG9uZW50c1sncGFzcyddID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtYXRjaCAoJGNvbXBvbmVudHMpIHsKICAgICAgICAgICAgW10gPT4gJHVyaSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBVcmk6OmZyb21Db21wb25lbnRzKFsuLi4kdXJpLT50b0NvbXBvbmVudHMoKSwgLi4uJGNvbXBvbmVudHNdKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBzdHJpbmcgb3IgYSBzdHJpbmdhYmxlIG9iamVjdC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXcoUmZjMzk4NlVyaXxXaGF0d2dVcmx8U3RyaW5nYWJsZXxzdHJpbmcgJHVyaSA9ICcnKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZihVcmk6Om5ldygkdXJpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgZnJvbSBhIHN0cmluZyBvciBhIHN0cmluZ2FibGUgc3RydWN0dXJlIG9yIHJldHVybnMgbnVsbCBvbiBmYWlsdXJlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRyeU5ldyhSZmMzOTg2VXJpfFdoYXR3Z1VybHxTdHJpbmdhYmxlfHN0cmluZyAkdXJpID0gJycpOiA/c2VsZgogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpuZXcoJHVyaSk7CiAgICAgICAgfSBjYXRjaCAoVXJpRXhjZXB0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgaGFzaCBvZiBwYXJzZV91cmwgcGFydHMuCiAgICAgKgogICAgICogQHBhcmFtIElucHV0Q29tcG9uZW50TWFwICRjb21wb25lbnRzIGEgaGFzaCByZXByZXNlbnRhdGlvbiBvZiB0aGUgVVJJIHNpbWlsYXIKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBQSFAgcGFyc2VfdXJsIGZ1bmN0aW9uIHJlc3VsdAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21Db21wb25lbnRzKGFycmF5ICRjb21wb25lbnRzKTogc2VsZgogICAgewogICAgICAgICRjb21wb25lbnRzICs9IFsKICAgICAgICAgICAgJ3NjaGVtZScgPT4gbnVsbCwgJ3VzZXInID0+IG51bGwsICdwYXNzJyA9PiBudWxsLCAnaG9zdCcgPT4gbnVsbCwKICAgICAgICAgICAgJ3BvcnQnID0+IG51bGwsICdwYXRoJyA9PiAnJywgJ3F1ZXJ5JyA9PiBudWxsLCAnZnJhZ21lbnQnID0+IG51bGwsCiAgICAgICAgXTsKCiAgICAgICAgaWYgKCcnID09PSAkY29tcG9uZW50c1sndXNlciddKSB7CiAgICAgICAgICAgICRjb21wb25lbnRzWyd1c2VyJ10gPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcnID09PSAkY29tcG9uZW50c1sncGFzcyddKSB7CiAgICAgICAgICAgICRjb21wb25lbnRzWydwYXNzJ10gPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcnID09PSAkY29tcG9uZW50c1sncXVlcnknXSkgewogICAgICAgICAgICAkY29tcG9uZW50c1sncXVlcnknXSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJycgPT09ICRjb21wb25lbnRzWydmcmFnbWVudCddKSB7CiAgICAgICAgICAgICRjb21wb25lbnRzWydmcmFnbWVudCddID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgc2VsZihVcmk6OmZyb21Db21wb25lbnRzKCRjb21wb25lbnRzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbVNlcnZlcihhcnJheSAkc2VydmVyKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZihVcmk6OmZyb21TZXJ2ZXIoJHNlcnZlcikpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgdGVtcGxhdGUuCiAgICAgKgogICAgICogQHRocm93cyBUZW1wbGF0ZUNhbk5vdEJlRXhwYW5kZWQgaWYgdGhlIHZhcmlhYmxlcyBhcmUgaW52YWxpZCBvciBtaXNzaW5nCiAgICAgKiBAdGhyb3dzIFVyaUV4Y2VwdGlvbiBpZiB0aGUgdmFyaWFibGVzIGFyZSBpbnZhbGlkIG9yIG1pc3NpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tVGVtcGxhdGUoU3RyaW5nYWJsZXxzdHJpbmcgJHRlbXBsYXRlLCBpdGVyYWJsZSAkdmFyaWFibGVzID0gW10pOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKFVyaTo6ZnJvbVRlbXBsYXRlKCR0ZW1wbGF0ZSwgJHZhcmlhYmxlcykpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgVVJJIGFuZCBhIEJhc2UgVVJJLm9yIG51bGwgb24gZmFpbHVyZS4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuZWQgVVJJIG11c3QgYmUgYWJzb2x1dGUgaWYgYSBiYXNlIFVSSSBpcyBwcm92aWRlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFdoYXRXZ1VybHxSZmMzOTg2VXJpfFN0cmluZ2FibGV8c3RyaW5nICR1cmksIFdoYXRXZ1VybHxSZmMzOTg2VXJpfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmkgPSBudWxsKTogP3NlbGYKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gKCR1cmkgPSBVcmk6OnBhcnNlKCR1cmksICRiYXNlVXJpKSkgPyBuZXcgc2VsZigkdXJpKSA6IG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNjaGVtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnVyaS0+Z2V0U2NoZW1lKCkgPz8gJyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEF1dGhvcml0eSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnVyaS0+Z2V0QXV0aG9yaXR5KCkgPz8gJyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXJJbmZvKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXJpLT5nZXRVc2VySW5mbygpID8/ICcnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIb3N0KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXJpLT5nZXRIb3N0KCkgPz8gJyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvcnQoKTogP2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXJpLT5nZXRQb3J0KCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhdGgoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHBhdGggPSAkdGhpcy0+dXJpLT5nZXRQYXRoKCk7CgogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICBzdHJfc3RhcnRzX3dpdGgoJHBhdGgsICcvLycpID0+ICcvJy5sdHJpbSgkcGF0aCwgJy8nKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkcGF0aCwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnVyaS0+Z2V0UXVlcnkoKSA/PyAnJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RnJhZ21lbnQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmktPmdldEZyYWdtZW50KCkgPz8gJyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmktPnRvU3RyaW5nKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmktPnRvU3RyaW5nKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYWZlbHkgc3RyaW5naWZ5IGlucHV0IHdoZW4gcG9zc2libGUgZm9yIExlYWd1ZSBVcmlJbnRlcmZhY2UgY29tcGF0aWJpbGl0eS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJJbnB1dChzdHJpbmcgJHN0cik6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCcnKSB7CiAgICAgICAgICAgICRzdHIgPT4gbnVsbCwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkc3RyLAogICAgICAgIH07CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBuZXdJbnN0YW5jZShVcmlJbnRlcmZhY2UgJHVyaSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCR0aGlzLT51cmktPnRvU3RyaW5nKCkpIHsKICAgICAgICAgICAgJHVyaS0+dG9TdHJpbmcoKSA9PiAkdGhpcywKICAgICAgICAgICAgZGVmYXVsdCA9PiBuZXcgc2VsZigkdXJpKSwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aGVuKGNhbGxhYmxlfGJvb2wgJGNvbmRpdGlvbiwgY2FsbGFibGUgJG9uU3VjY2VzcywgP2NhbGxhYmxlICRvbkZhaWwgPSBudWxsKTogc3RhdGljCiAgICB7CiAgICAgICAgaWYgKCFpc19ib29sKCRjb25kaXRpb24pKSB7CiAgICAgICAgICAgICRjb25kaXRpb24gPSAkY29uZGl0aW9uKCR0aGlzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAkY29uZGl0aW9uID0+ICRvblN1Y2Nlc3MoJHRoaXMpLAogICAgICAgICAgICBudWxsICE9PSAkb25GYWlsID0+ICRvbkZhaWwoJHRoaXMpLAogICAgICAgICAgICBkZWZhdWx0ID0+ICR0aGlzLAogICAgICAgIH0gPz8gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRyYW5zZm9ybShjYWxsYWJsZSAkY2FsbGJhY2spOiBzdGF0aWMKICAgIHsKICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNjaGVtZShzdHJpbmcgJHNjaGVtZSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5ld0luc3RhbmNlKCR0aGlzLT51cmktPndpdGhTY2hlbWUoJHRoaXMtPmZpbHRlcklucHV0KCRzY2hlbWUpKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVc2VySW5mbyhzdHJpbmcgJHVzZXIsID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5ld0luc3RhbmNlKCR0aGlzLT51cmktPndpdGhVc2VySW5mbygkdGhpcy0+ZmlsdGVySW5wdXQoJHVzZXIpLCAkcGFzc3dvcmQpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhvc3Qoc3RyaW5nICRob3N0KTogc2VsZgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmV3SW5zdGFuY2UoJHRoaXMtPnVyaS0+d2l0aEhvc3QoJHRoaXMtPmZpbHRlcklucHV0KCRob3N0KSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUG9ydCg/aW50ICRwb3J0KTogc2VsZgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmV3SW5zdGFuY2UoJHRoaXMtPnVyaS0+d2l0aFBvcnQoJHBvcnQpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhdGgoc3RyaW5nICRwYXRoKTogc2VsZgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmV3SW5zdGFuY2UoJHRoaXMtPnVyaS0+d2l0aFBhdGgoJHBhdGgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFF1ZXJ5KHN0cmluZyAkcXVlcnkpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uZXdJbnN0YW5jZSgkdGhpcy0+dXJpLT53aXRoUXVlcnkoJHRoaXMtPmZpbHRlcklucHV0KCRxdWVyeSkpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEZyYWdtZW50KHN0cmluZyAkZnJhZ21lbnQpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uZXdJbnN0YW5jZSgkdGhpcy0+dXJpLT53aXRoRnJhZ21lbnQoJHRoaXMtPmZpbHRlcklucHV0KCRmcmFnbWVudCkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIERFUFJFQ0FUSU9OIFdBUk5JTkchIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBwb2ludCByZWxlYXNlLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gNy42LjAKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqIEBzZWUgSHR0cDo6cGFyc2UoKQogICAgICoKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgVVJJIGFuZCBhIEJhc2UgVVJJLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBVUkkgbXVzdCBiZSBhYnNvbHV0ZS4KICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXEh0dHA6OnBhcnNlKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuNi4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CYXNlVXJpKFJmYzM5ODZVcml8V2hhdHdnVXJsfFN0cmluZ2FibGV8c3RyaW5nICR1cmksIFJmYzM5ODZVcml8V2hhdHdnVXJsfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmkgPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZihVcmk6OmZyb21CYXNlVXJpKCR1cmksICRiYXNlVXJpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBERVBSRUNBVElPTiBXQVJOSU5HISBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcG9pbnQgcmVsZWFzZS4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2ZXJzaW9uIDcuMC4wCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKiBAc2VlIEh0dHA6Om5ldygpCiAgICAgKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBzdHJpbmcuCiAgICAgKi8KICAgICNbRGVwcmVjYXRlZChtZXNzYWdlOid1c2UgTGVhZ3VlXFVyaVxIdHRwOjpuZXcoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVN0cmluZyhTdHJpbmdhYmxlfHN0cmluZyAkdXJpID0gJycpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om5ldygkdXJpKTsKICAgIH0KCiAgICAvKioKICAgICAqIERFUFJFQ0FUSU9OIFdBUk5JTkchIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBwb2ludCByZWxlYXNlLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gNy4wLjAKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqIEBzZWUgSHR0cDo6ZnJvbUNvbXBvbmVudHMoKQogICAgICoKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgaGFzaCBvZiBwYXJzZV91cmwgcGFydHMuCiAgICAgKgogICAgICogQHBhcmFtIElucHV0Q29tcG9uZW50TWFwICRjb21wb25lbnRzIGEgaGFzaCByZXByZXNlbnRhdGlvbiBvZiB0aGUgVVJJIHNpbWlsYXIKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBQSFAgcGFyc2VfdXJsIGZ1bmN0aW9uIHJlc3VsdAogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcSHR0cDo6ZnJvbUNvbXBvbmVudHMoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbXBvbmVudHMoYXJyYXkgJGNvbXBvbmVudHMpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21Db21wb25lbnRzKCRjb21wb25lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIERFUFJFQ0FUSU9OIFdBUk5JTkchIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBwb2ludCByZWxlYXNlLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gNy4wLjAKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqIEBzZWUgSHR0cDo6ZnJvbVNlcnZlcigpCiAgICAgKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gdGhlIGVudmlyb25tZW50LgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcSHR0cDo6ZnJvbVNlcnZlcigpIGluc3RlYWQnLCBzaW5jZTonbGVhZ3VlL3VyaTo3LjAuMCcpXQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tU2VydmVyKGFycmF5ICRzZXJ2ZXIpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21TZXJ2ZXIoJHNlcnZlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBERVBSRUNBVElPTiBXQVJOSU5HISBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcG9pbnQgcmVsZWFzZS4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2ZXJzaW9uIDcuMC4wCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKiBAc2VlIEh0dHA6Om5ldygpCiAgICAgKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBVUkkgb2JqZWN0LgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcSHR0cDo6bmV3KCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21VcmkoUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UgJHVyaSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6bmV3KCR1cmkpOwogICAgfQoKICAgIC8qKgogICAgICogREVQUkVDQVRJT04gV0FSTklORyEgVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHBvaW50IHJlbGVhc2UuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgU2luY2UgdmVyc2lvbiA3LjAuMAogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICogQHNlZSBIdHRwOjpmcm9tQmFzZVVyaSgpCiAgICAgKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBVUkkgYW5kIGEgQmFzZSBVUkkuCiAgICAgKgogICAgICogVGhlIHJldHVybmVkIFVSSSBtdXN0IGJlIGFic29sdXRlLgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcSHR0cDo6ZnJvbUJhc2VVcmkoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUJhc2VVcmkoU3RyaW5nYWJsZXxzdHJpbmcgJHVyaSwgU3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkYmFzZVVyaSA9IG51bGwpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21CYXNlVXJpKCR1cmksICRiYXNlVXJpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/HttpFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlGYWN0b3J5SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgpmaW5hbCBjbGFzcyBIdHRwRmFjdG9yeSBpbXBsZW1lbnRzIFVyaUZhY3RvcnlJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVVyaShzdHJpbmcgJHVyaSA9ICcnKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIEh0dHA6Om5ldygkdXJpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTUgaWduYWNlIG55YW1hZ2FuYSBidXRlcmEKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YKdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bwp1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZgp0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sCnN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUwpGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IKQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSCklOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCkNPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/SchemeType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7CgplbnVtIFNjaGVtZVR5cGUKewogICAgY2FzZSBPcGFxdWU7CiAgICBjYXNlIEhpZXJhcmNoaWNhbDsKICAgIGNhc2UgVW5rbm93bjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNPcGFxdWUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBzZWxmOjpPcGFxdWUgPT09ICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0hpZXJhcmNoaWNhbCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OkhpZXJhcmNoaWNhbCA9PT0gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzVW5rbm93bigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OlVua25vd24gPT09ICR0aGlzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/Uri.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIENsb3N1cmU7CnVzZSBEZXByZWNhdGVkOwp1c2UgZmluZm87CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xDb25kaXRpb25hYmxlOwp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcRnJhZ21lbnREaXJlY3RpdmU7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xUcmFuc2Zvcm1hYmxlOwp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpQ29tcG9uZW50SW50ZXJmYWNlOwp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpRXhjZXB0aW9uOwp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpSW50ZXJmYWNlOwp1c2UgTGVhZ3VlXFVyaVxFeGNlcHRpb25zXE1pc3NpbmdGZWF0dXJlOwp1c2UgTGVhZ3VlXFVyaVxFeGNlcHRpb25zXFN5bnRheEVycm9yOwp1c2UgTGVhZ3VlXFVyaVxJZG5hXENvbnZlcnRlciBhcyBJZG5hQ29udmVydGVyOwp1c2UgTGVhZ3VlXFVyaVxJUHY0XENvbnZlcnRlciBhcyBJUHY0Q29udmVydGVyOwp1c2UgTGVhZ3VlXFVyaVxJUHY2XENvbnZlcnRlciBhcyBJUHY2Q29udmVydGVyOwp1c2UgTGVhZ3VlXFVyaVxVcmlUZW1wbGF0ZVxUZW1wbGF0ZUNhbk5vdEJlRXhwYW5kZWQ7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZSBhcyBQc3I3VXJpSW50ZXJmYWNlOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKdXNlIFNlbnNpdGl2ZVBhcmFtZXRlcjsKdXNlIFNwbEZpbGVJbmZvOwp1c2UgU3BsRmlsZU9iamVjdDsKdXNlIFN0cmluZ2FibGU7CnVzZSBUaHJvd2FibGU7CnVzZSBUeXBlRXJyb3I7CnVzZSBVcmlcUmZjMzk4NlxVcmkgYXMgUmZjMzk4NlVyaTsKdXNlIFVyaVxXaGF0V2dcVXJsIGFzIFdoYXRXZ1VybDsKCnVzZSBmdW5jdGlvbiBhcnJheV9maWx0ZXI7CnVzZSBmdW5jdGlvbiBhcnJheV9rZXlfbGFzdDsKdXNlIGZ1bmN0aW9uIGFycmF5X21hcDsKdXNlIGZ1bmN0aW9uIGFycmF5X3BvcDsKdXNlIGZ1bmN0aW9uIGFycmF5X3NoaWZ0Owp1c2UgZnVuY3Rpb24gYmFzZTY0X2RlY29kZTsKdXNlIGZ1bmN0aW9uIGJhc2U2NF9lbmNvZGU7CnVzZSBmdW5jdGlvbiBiYXNlbmFtZTsKdXNlIGZ1bmN0aW9uIGNvdW50Owp1c2UgZnVuY3Rpb24gZGlybmFtZTsKdXNlIGZ1bmN0aW9uIGV4cGxvZGU7CnVzZSBmdW5jdGlvbiBmY2xvc2U7CnVzZSBmdW5jdGlvbiBmZW9mOwp1c2UgZnVuY3Rpb24gZmlsZV9nZXRfY29udGVudHM7CnVzZSBmdW5jdGlvbiBmaWx0ZXJfdmFyOwp1c2UgZnVuY3Rpb24gZm9wZW47CnVzZSBmdW5jdGlvbiBmcmVhZDsKdXNlIGZ1bmN0aW9uIGZ3cml0ZTsKdXNlIGZ1bmN0aW9uIGdldHR5cGU7CnVzZSBmdW5jdGlvbiBpbXBsb2RlOwp1c2UgZnVuY3Rpb24gaW5fYXJyYXk7CnVzZSBmdW5jdGlvbiBpc19ib29sOwp1c2UgZnVuY3Rpb24gaXNfb2JqZWN0Owp1c2UgZnVuY3Rpb24gaXNfcmVzb3VyY2U7CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBmdW5jdGlvbiBwcmVnX21hdGNoOwp1c2UgZnVuY3Rpb24gcHJlZ19yZXBsYWNlOwp1c2UgZnVuY3Rpb24gcHJlZ19yZXBsYWNlX2NhbGxiYWNrOwp1c2UgZnVuY3Rpb24gcmF3dXJsZGVjb2RlOwp1c2UgZnVuY3Rpb24gcmF3dXJsZW5jb2RlOwp1c2UgZnVuY3Rpb24gcmVzdG9yZV9lcnJvcl9oYW5kbGVyOwp1c2UgZnVuY3Rpb24gc2V0X2Vycm9yX2hhbmRsZXI7CnVzZSBmdW5jdGlvbiBzcHJpbnRmOwp1c2UgZnVuY3Rpb24gc3RyX2NvbnRhaW5zOwp1c2UgZnVuY3Rpb24gc3RyX3JlcGVhdDsKdXNlIGZ1bmN0aW9uIHN0cl9yZXBsYWNlOwp1c2UgZnVuY3Rpb24gc3RyX3N0YXJ0c193aXRoOwp1c2UgZnVuY3Rpb24gc3RybGVuOwp1c2UgZnVuY3Rpb24gc3RycG9zOwp1c2UgZnVuY3Rpb24gc3Ryc3BuOwp1c2UgZnVuY3Rpb24gc3RydG9sb3dlcjsKdXNlIGZ1bmN0aW9uIHN1YnN0cjsKdXNlIGZ1bmN0aW9uIHRyaW07Cgp1c2UgY29uc3QgRklMRUlORk9fTUlNRTsKdXNlIGNvbnN0IEZJTEVJTkZPX01JTUVfVFlQRTsKdXNlIGNvbnN0IEZJTFRFUl9GTEFHX0lQVjQ7CnVzZSBjb25zdCBGSUxURVJfTlVMTF9PTl9GQUlMVVJFOwp1c2UgY29uc3QgRklMVEVSX1ZBTElEQVRFX0JPT0xFQU47CnVzZSBjb25zdCBGSUxURVJfVkFMSURBVEVfRU1BSUw7CnVzZSBjb25zdCBGSUxURVJfVkFMSURBVEVfSVA7CgovKioKICogQHBocHN0YW4taW1wb3J0LXR5cGUgQ29tcG9uZW50TWFwIGZyb20gVXJpU3RyaW5nCiAqIEBwaHBzdGFuLWltcG9ydC10eXBlIElucHV0Q29tcG9uZW50TWFwIGZyb20gVXJpU3RyaW5nCiAqLwpmaW5hbCBjbGFzcyBVcmkgaW1wbGVtZW50cyBDb25kaXRpb25hYmxlLCBVcmlJbnRlcmZhY2UsIFRyYW5zZm9ybWFibGUKewogICAgLyoqCiAgICAgKiBSRkMzOTg2IGludmFsaWQgY2hhcmFjdGVycy4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIuMgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX0lOVkFMSURfQ0hBUlMgPSAnL1tceDAwLVx4MWZceDdmXS8nOwoKICAgIC8qKgogICAgICogUkZDMzk4NiBJUHZGdXR1cmUgaG9zdCBhbmQgcG9ydCBjb21wb25lbnQuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfSE9TVF9QT1JUID0gJyxeKD88aG9zdD4oXFsuKl18W146XSkqKSg6KD88cG9ydD5bXi8/I10qKSk/JCx4JzsKCiAgICAvKioKICAgICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHRvIGZvciBmaWxlIFVSSS4KICAgICAqIDx2b2x1bWU+IGNvbnRhaW5zIHRoZSB2b2x1bWUgYnV0IG5vdCB0aGUgdm9sdW1lIHNlcGFyYXRvci4KICAgICAqIFRoZSB2b2x1bWUgc2VwYXJhdG9yIG1heSBiZSBVUkwtZW5jb2RlZCAoYHxgIGFzIGAlN0NgKSBieSBmb3JtYXRQYXRoKCksCiAgICAgKiBzbyB3ZSBhY2NvdW50IGZvciB0aGF0IGhlcmUuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfRklMRV9QQVRIID0gJyxeKD88ZGVsaW0+Lyk/KD88dm9sdW1lPlthLXpBLVpdKSg/Ols6fFx8XXwlN0MpKD88cmVzdD4uKik/LCc7CgogICAgLyoqCiAgICAgKiBNaW1ldHlwZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjM5NwogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX01JTUVUWVBFID0gJyxeXHcrL1stLlx3XSsoPzpcK1stLlx3XSspPyQsJzsKCiAgICAvKioKICAgICAqIEJhc2U2NCBjb250ZW50IHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMzk3CiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBSRUdFWFBfQklOQVJZID0gJywoO3xeKWJhc2U2NCQsJzsKCiAgICAvKioKICAgICAqIFdpbmRvd3MgZmlsZXBhdGggcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4uCiAgICAgKiA8cm9vdD4gY29udGFpbnMgYm90aCB0aGUgdm9sdW1lIGFuZCB2b2x1bWUgc2VwYXJhdG9yLgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX1dJTkRPV19QQVRIID0gJyxeKD88cm9vdD5bYS16QS1aXVs6fFx8XSksJzsKCiAgICAvKioKICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGNhY2hlZCBpdGVtcy4KICAgICAqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlIGNvbnN0IE1BWElNVU1fQ0FDSEVEX0lURU1TID0gMTAwOwoKICAgIC8qKgogICAgICogQWxsIEFTQ0lJIGxldHRlcnMgc29ydGVkIGJ5IHR5cGljYWwgZnJlcXVlbmN5IG9mIG9jY3VycmVuY2UuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBBU0NJSSA9ICJceDIwXHg2NVx4NjlceDYxXHg3M1x4NkVceDc0XHg3Mlx4NkZceDZDXHg3NVx4NjRceDVEXHg1Qlx4NjNceDZEXHg3MFx4MjdceDBBXHg2N1x4N0NceDY4XHg3Nlx4MkVceDY2XHg2Mlx4MkNceDNBXHgzRFx4MkRceDcxXHgzMVx4MzBceDQzXHgzMlx4MkFceDc5XHg3OFx4MjlceDI4XHg0Q1x4MzlceDQxXHg1M1x4MkZceDUwXHgyMlx4NDVceDZBXHg0RFx4NDlceDZCXHgzM1x4M0VceDM1XHg1NFx4M0NceDQ0XHgzNFx4N0RceDQyXHg3Qlx4MzhceDQ2XHg3N1x4NTJceDM2XHgzN1x4NTVceDQ3XHg0RVx4M0JceDRBXHg3QVx4NTZceDIzXHg0OFx4NEZceDU3XHg1Rlx4MjZceDIxXHg0Qlx4M0ZceDU4XHg1MVx4MjVceDU5XHg1Q1x4MDlceDVBXHgyQlx4N0VceDVFXHgyNFx4NDBceDYwXHg3Rlx4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MEJceDBDXHgwRFx4MEVceDBGXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MUFceDFCXHgxQ1x4MURceDFFXHgxRiI7CgogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICRzY2hlbWU7CiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJHVzZXI7CiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJHBhc3M7CiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJHVzZXJJbmZvOwogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICRob3N0OwogICAgcHJpdmF0ZSByZWFkb25seSA/aW50ICRwb3J0OwogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICRhdXRob3JpdHk7CiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkcGF0aDsKICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkcXVlcnk7CiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJGZyYWdtZW50OwogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJHVyaUFzY2lpU3RyaW5nOwogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJHVyaVVuaWNvZGVTdHJpbmc7CiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJG9yaWdpbjsKCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgID9zdHJpbmcgJHNjaGVtZSwKICAgICAgICA/c3RyaW5nICR1c2VyLAogICAgICAgICNbU2Vuc2l0aXZlUGFyYW1ldGVyXSA/c3RyaW5nICRwYXNzLAogICAgICAgID9zdHJpbmcgJGhvc3QsCiAgICAgICAgP2ludCAkcG9ydCwKICAgICAgICBzdHJpbmcgJHBhdGgsCiAgICAgICAgP3N0cmluZyAkcXVlcnksCiAgICAgICAgP3N0cmluZyAkZnJhZ21lbnQKICAgICkgewogICAgICAgICR0aGlzLT5zY2hlbWUgPSAkdGhpcy0+Zm9ybWF0U2NoZW1lKCRzY2hlbWUpOwogICAgICAgICR0aGlzLT51c2VyID0gRW5jb2Rlcjo6ZW5jb2RlVXNlcigkdXNlcik7CiAgICAgICAgJHRoaXMtPnBhc3MgPSBFbmNvZGVyOjplbmNvZGVQYXNzd29yZCgkcGFzcyk7CiAgICAgICAgJHRoaXMtPmhvc3QgPSAkdGhpcy0+Zm9ybWF0SG9zdCgkaG9zdCk7CiAgICAgICAgJHRoaXMtPnBvcnQgPSAkdGhpcy0+Zm9ybWF0UG9ydCgkcG9ydCk7CiAgICAgICAgJHRoaXMtPmF1dGhvcml0eSA9IFVyaVN0cmluZzo6YnVpbGRBdXRob3JpdHkoWwogICAgICAgICAgICAnc2NoZW1lJyA9PiAkdGhpcy0+c2NoZW1lLAogICAgICAgICAgICAndXNlcicgPT4gJHRoaXMtPnVzZXIsCiAgICAgICAgICAgICdwYXNzJyA9PiAkdGhpcy0+cGFzcywKICAgICAgICAgICAgJ2hvc3QnID0+ICR0aGlzLT5ob3N0LAogICAgICAgICAgICAncG9ydCcgPT4gJHRoaXMtPnBvcnQsCiAgICAgICAgXSk7CiAgICAgICAgJHRoaXMtPnBhdGggPSAkdGhpcy0+Zm9ybWF0UGF0aCgkcGF0aCk7CiAgICAgICAgJHRoaXMtPnF1ZXJ5ID0gRW5jb2Rlcjo6ZW5jb2RlUXVlcnlPckZyYWdtZW50KCRxdWVyeSk7CiAgICAgICAgJHRoaXMtPmZyYWdtZW50ID0gRW5jb2Rlcjo6ZW5jb2RlUXVlcnlPckZyYWdtZW50KCRmcmFnbWVudCk7CiAgICAgICAgJHRoaXMtPnVzZXJJbmZvID0gbnVsbCAhPT0gJHRoaXMtPnBhc3MgPyAkdGhpcy0+dXNlci4nOicuJHRoaXMtPnBhc3MgOiAkdGhpcy0+dXNlcjsKICAgICAgICAkdGhpcy0+dXJpQXNjaWlTdHJpbmcgPSBVcmlTdHJpbmc6OmJ1aWxkVXJpKCR0aGlzLT5zY2hlbWUsICR0aGlzLT5hdXRob3JpdHksICR0aGlzLT5wYXRoLCAkdGhpcy0+cXVlcnksICR0aGlzLT5mcmFnbWVudCk7CiAgICAgICAgJHRoaXMtPmFzc2VydFZhbGlkUmZjMzk4NlVyaSgpOwogICAgICAgICR0aGlzLT5hc3NlcnRWYWxpZFN0YXRlKCk7CiAgICAgICAgJHRoaXMtPm9yaWdpbiA9ICR0aGlzLT5zZXRPcmlnaW4oKTsKICAgICAgICAkaG9zdCA9ICR0aGlzLT5nZXRVbmljb2RlSG9zdCgpOwogICAgICAgICR0aGlzLT51cmlVbmljb2RlU3RyaW5nID0gJGhvc3QgPT09ICR0aGlzLT5ob3N0CiAgICAgICAgICAgID8gJHRoaXMtPnVyaUFzY2lpU3RyaW5nCiAgICAgICAgICAgIDogVXJpU3RyaW5nOjpidWlsZFVyaSgKICAgICAgICAgICAgICAgICR0aGlzLT5zY2hlbWUsCiAgICAgICAgICAgICAgICBVcmlTdHJpbmc6OmJ1aWxkQXV0aG9yaXR5KFsuLi4kdGhpcy0+dG9Db21wb25lbnRzKCksIC4uLlsnaG9zdCcgPT4gJGhvc3RdXSksCiAgICAgICAgICAgICAgICAkdGhpcy0+cGF0aCwKICAgICAgICAgICAgICAgICR0aGlzLT5xdWVyeSwKICAgICAgICAgICAgICAgICR0aGlzLT5mcmFnbWVudAogICAgICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogRm9ybWF0IHRoZSBTY2hlbWUgYW5kIEhvc3QgY29tcG9uZW50LgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIHNjaGVtZSBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZm9ybWF0U2NoZW1lKD9zdHJpbmcgJHNjaGVtZSk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHNjaGVtZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRmb3JtYXR0ZWRTY2hlbWUgPSBzdHJ0b2xvd2VyKCRzY2hlbWUpOwogICAgICAgIHN0YXRpYyAkY2FjaGUgPSBbXTsKICAgICAgICBpZiAoaXNzZXQoJGNhY2hlWyRmb3JtYXR0ZWRTY2hlbWVdKSkgewogICAgICAgICAgICByZXR1cm4gJGZvcm1hdHRlZFNjaGVtZTsKICAgICAgICB9CgogICAgICAgIG51bGwgIT09IFVyaVNjaGVtZTo6dHJ5RnJvbSgkZm9ybWF0dGVkU2NoZW1lKQogICAgICAgIHx8IFVyaVN0cmluZzo6aXNWYWxpZFNjaGVtZSgkZm9ybWF0dGVkU2NoZW1lKQogICAgICAgIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIHNjaGVtZSBgJy4kc2NoZW1lLidgIGlzIGludmFsaWQuJyk7CgoKICAgICAgICAkY2FjaGVbJGZvcm1hdHRlZFNjaGVtZV0gPSAxOwogICAgICAgIGlmIChzZWxmOjpNQVhJTVVNX0NBQ0hFRF9JVEVNUyA8IGNvdW50KCRjYWNoZSkpIHsKICAgICAgICAgICAgYXJyYXlfc2hpZnQoJGNhY2hlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZm9ybWF0dGVkU2NoZW1lOwogICAgfQoKICAgIC8qKgogICAgICogVmFsaWRhdGUgYW5kIEZvcm1hdCB0aGUgSG9zdCBjb21wb25lbnQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZm9ybWF0SG9zdCg/c3RyaW5nICRob3N0KTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiBIb3N0UmVjb3JkOjpmcm9tKCRob3N0KS0+dG9Bc2NpaSgpOwogICAgfQoKICAgIC8qKgogICAgICogRm9ybWF0IHRoZSBQb3J0IGNvbXBvbmVudC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZm9ybWF0UG9ydChCYWNrZWRFbnVtfGludHxudWxsICRwb3J0ID0gbnVsbCk6ID9pbnQKICAgIHsKICAgICAgICBpZiAoJHBvcnQgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICRwb3J0ID0gKHN0cmluZykgJHBvcnQtPnZhbHVlOwogICAgICAgICAgICAxID09PSBwcmVnX21hdGNoKCcvXlxkKyQvJywgJHBvcnQpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIHBvcnQgYCcuJHBvcnQuJ2AgaXMgaW52YWxpZC4nKTsKICAgICAgICAgICAgJHBvcnQgPSAoaW50KSAkcG9ydDsKICAgICAgICB9CgogICAgICAgICRkZWZhdWx0UG9ydCA9IG51bGwgIT09ICR0aGlzLT5zY2hlbWUKICAgICAgICAgICAgPyBVcmlTY2hlbWU6OnRyeUZyb20oJHRoaXMtPnNjaGVtZSk/LT5wb3J0KCkKICAgICAgICAgICAgOiBudWxsOwoKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgbnVsbCA9PT0gJHBvcnQsICRkZWZhdWx0UG9ydCA9PT0gJHBvcnQgPT4gbnVsbCwKICAgICAgICAgICAgMCA+ICRwb3J0ID0+IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIHBvcnQgYCcuJHBvcnQuJ2AgaXMgaW52YWxpZC4nKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkcG9ydCwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBzdHJpbmcgb3IgYSBzdHJpbmdhYmxlIHN0cnVjdHVyZSBvciByZXR1cm5zIG51bGwgb24gZmFpbHVyZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cnlOZXcoUmZjMzk4NlVyaXxXaGF0V2dVcmx8VXJufFN0cmluZ2FibGV8c3RyaW5nICR1cmkgPSAnJyk6ID9zZWxmCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om5ldygkdXJpKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBzdHJpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbmV3KFJmYzM5ODZVcml8V2hhdFdnVXJsfFVybnxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nICR1cmkgPSAnJyk6IHNlbGYKICAgIHsKICAgICAgICBpZiAoJHVyaSBpbnN0YW5jZW9mIFJmYzM5ODZVcmkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKAogICAgICAgICAgICAgICAgJHVyaS0+Z2V0UmF3U2NoZW1lKCksCiAgICAgICAgICAgICAgICAkdXJpLT5nZXRSYXdVc2VybmFtZSgpLAogICAgICAgICAgICAgICAgJHVyaS0+Z2V0UmF3UGFzc3dvcmQoKSwKICAgICAgICAgICAgICAgICR1cmktPmdldFJhd0hvc3QoKSwKICAgICAgICAgICAgICAgICR1cmktPmdldFBvcnQoKSwKICAgICAgICAgICAgICAgICR1cmktPmdldFJhd1BhdGgoKSwKICAgICAgICAgICAgICAgICR1cmktPmdldFJhd1F1ZXJ5KCksCiAgICAgICAgICAgICAgICAkdXJpLT5nZXRSYXdGcmFnbWVudCgpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVyaSBpbnN0YW5jZW9mIFdoYXRXZ1VybCkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICAkdXJpLT5nZXRTY2hlbWUoKSwKICAgICAgICAgICAgICAgICR1cmktPmdldFVzZXJuYW1lKCksCiAgICAgICAgICAgICAgICAkdXJpLT5nZXRQYXNzd29yZCgpLAogICAgICAgICAgICAgICAgJHVyaS0+Z2V0QXNjaWlIb3N0KCksCiAgICAgICAgICAgICAgICAkdXJpLT5nZXRQb3J0KCksCiAgICAgICAgICAgICAgICAkdXJpLT5nZXRQYXRoKCksCiAgICAgICAgICAgICAgICAkdXJpLT5nZXRRdWVyeSgpLAogICAgICAgICAgICAgICAgJHVyaS0+Z2V0RnJhZ21lbnQoKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdXJpIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkdXJpID0gJHVyaS0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkdXJpID0gKHN0cmluZykgJHVyaTsKICAgICAgICB0cmltKCR1cmkpID09PSAkdXJpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcihzcHJpbnRmKCdUaGUgdXJpIGAlc2AgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzJywgJHVyaSkpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoLi4uVXJpU3RyaW5nOjpwYXJzZShzdHJfcmVwbGFjZSgnICcsICclMjAnLCAkdXJpKSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgVVJJIGFuZCBhIEJhc2UgVVJJLm9yIG51bGwgb24gZmFpbHVyZS4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuZWQgVVJJIG11c3QgYmUgYWJzb2x1dGUgaWYgYSBiYXNlIFVSSSBpcyBwcm92aWRlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFJmYzM5ODZVcml8V2hhdFdnVXJsfFVybnxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nICR1cmksIFJmYzM5ODZVcml8V2hhdFdnVXJsfFVybnxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmkgPSBudWxsKTogP3NlbGYKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gJGJhc2VVcmkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjpuZXcoJHVyaSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdXJpIGluc3RhbmNlb2YgUmZjMzk4NlVyaSkgewogICAgICAgICAgICAgICAgJHVyaSA9ICR1cmktPnRvUmF3U3RyaW5nKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdXJpIGluc3RhbmNlb2YgV2hhdFdnVXJsKSB7CiAgICAgICAgICAgICAgICAkdXJpID0gJHVyaS0+dG9Bc2NpaVN0cmluZygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGJhc2VVcmkgaW5zdGFuY2VvZiBSZmMzOTg2VXJpKSB7CiAgICAgICAgICAgICAgICAkYmFzZVVyaSA9ICRiYXNlVXJpLT50b1Jhd1N0cmluZygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGJhc2VVcmkgaW5zdGFuY2VvZiBXaGF0V2dVcmwpIHsKICAgICAgICAgICAgICAgICRiYXNlVXJpID0gJGJhc2VVcmktPnRvQXNjaWlTdHJpbmcoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om5ldyhVcmlTdHJpbmc6OnJlc29sdmUoJHVyaSwgJGJhc2VVcmkpKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgdGVtcGxhdGUuCiAgICAgKgogICAgICogQHRocm93cyBUZW1wbGF0ZUNhbk5vdEJlRXhwYW5kZWQgaWYgdGhlIHZhcmlhYmxlcyBhcmUgaW52YWxpZCBvciBtaXNzaW5nCiAgICAgKiBAdGhyb3dzIFVyaUV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nIGV4cGFuc2lvbiBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgVXJpSW50ZXJmYWNlIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbVRlbXBsYXRlKEJhY2tlZEVudW18VXJpVGVtcGxhdGV8U3RyaW5nYWJsZXxzdHJpbmcgJHRlbXBsYXRlLCBpdGVyYWJsZSAkdmFyaWFibGVzID0gW10pOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICR0ZW1wbGF0ZSBpbnN0YW5jZW9mIFVyaVRlbXBsYXRlID0+IHNlbGY6Om5ldygkdGVtcGxhdGUtPmV4cGFuZCgkdmFyaWFibGVzKSksCiAgICAgICAgICAgICR0ZW1wbGF0ZSBpbnN0YW5jZW9mIFVyaVRlbXBsYXRlXFRlbXBsYXRlID0+IHNlbGY6Om5ldygkdGVtcGxhdGUtPmV4cGFuZCgkdmFyaWFibGVzKSksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gc2VsZjo6bmV3KFVyaVRlbXBsYXRlXFRlbXBsYXRlOjpuZXcoJHRlbXBsYXRlKS0+ZXhwYW5kKCR2YXJpYWJsZXMpKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBoYXNoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBVUkkgc2ltaWxhcgogICAgICogdG8gUEhQIHBhcnNlX3VybCBmdW5jdGlvbiByZXN1bHQuCiAgICAgKgogICAgICogQHBhcmFtIElucHV0Q29tcG9uZW50TWFwICRjb21wb25lbnRzIGEgaGFzaCByZXByZXNlbnRhdGlvbiBvZiB0aGUgVVJJIHNpbWlsYXIgdG8gUEhQIHBhcnNlX3VybCBmdW5jdGlvbiByZXN1bHQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQ29tcG9uZW50cyhhcnJheSAkY29tcG9uZW50cyA9IFtdKTogc2VsZgogICAgewogICAgICAgICRjb21wb25lbnRzICs9IFsKICAgICAgICAgICAgJ3NjaGVtZScgPT4gbnVsbCwgJ3VzZXInID0+IG51bGwsICdwYXNzJyA9PiBudWxsLCAnaG9zdCcgPT4gbnVsbCwKICAgICAgICAgICAgJ3BvcnQnID0+IG51bGwsICdwYXRoJyA9PiAnJywgJ3F1ZXJ5JyA9PiBudWxsLCAnZnJhZ21lbnQnID0+IG51bGwsCiAgICAgICAgXTsKCiAgICAgICAgaWYgKG51bGwgPT09ICRjb21wb25lbnRzWydwYXRoJ10pIHsKICAgICAgICAgICAgJGNvbXBvbmVudHNbJ3BhdGgnXSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKAogICAgICAgICAgICAkY29tcG9uZW50c1snc2NoZW1lJ10sCiAgICAgICAgICAgICRjb21wb25lbnRzWyd1c2VyJ10sCiAgICAgICAgICAgICRjb21wb25lbnRzWydwYXNzJ10sCiAgICAgICAgICAgICRjb21wb25lbnRzWydob3N0J10sCiAgICAgICAgICAgICRjb21wb25lbnRzWydwb3J0J10sCiAgICAgICAgICAgICRjb21wb25lbnRzWydwYXRoJ10sCiAgICAgICAgICAgICRjb21wb25lbnRzWydxdWVyeSddLAogICAgICAgICAgICAkY29tcG9uZW50c1snZnJhZ21lbnQnXQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgZnJvbSBhIGRhdGEgZmlsZSBwYXRoLgogICAgICoKICAgICAqIEBwYXJhbSBTcGxGaWxlSW5mb3xTcGxGaWxlT2JqZWN0fHJlc291cmNlfFN0cmluZ2FibGV8c3RyaW5nICRwYXRoCiAgICAgKiBAcGFyYW0gP3Jlc291cmNlICRjb250ZXh0CiAgICAgKgogICAgICogQHRocm93cyBNaXNzaW5nRmVhdHVyZSBJZiBleHQvZmlsZWluZm8gaXMgbm90IGluc3RhbGxlZAogICAgICogQHRocm93cyBTeW50YXhFcnJvciBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tRmlsZUNvbnRlbnRzKG1peGVkICRwYXRoLCAkY29udGV4dCA9IG51bGwpOiBzZWxmCiAgICB7CiAgICAgICAgRmVhdHVyZURldGVjdGlvbjo6c3VwcG9ydHNGaWxlRGV0ZWN0aW9uKCk7CiAgICAgICAgJGZpbmZvID0gbmV3IGZpbmZvKEZJTEVJTkZPX01JTUVfVFlQRSk7CiAgICAgICAgJGJ1ZmZlclNpemUgPSA4MTkyOwoKICAgICAgICAvKiogQHZhciBDbG9zdXJlKFNwbEZpbGVvYmplY3QpOiBhcnJheXswOnN0cmluZywgMTpzdHJpbmd9ICRmcm9tRmlsZU9iamVjdCAqLwogICAgICAgICRmcm9tRmlsZU9iamVjdCA9IGZ1bmN0aW9uIChTcGxGaWxlT2JqZWN0ICRwYXRoKSB1c2UgKCRmaW5mbywgJGJ1ZmZlclNpemUpOiBhcnJheSB7CiAgICAgICAgICAgICRyYXcgPSAkcGF0aC0+ZnJlYWQoJGJ1ZmZlclNpemUpOwogICAgICAgICAgICBmYWxzZSAhPT0gJHJhdyB8fCB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSBmaWxlIGAnLiRwYXRoLidgIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCByZWFkYWJsZS4nKTsKCiAgICAgICAgICAgICRtaW1ldHlwZSA9IChzdHJpbmcpICRmaW5mby0+YnVmZmVyKCRyYXcpOwogICAgICAgICAgICB3aGlsZSAoISRwYXRoLT5lb2YoKSkgewogICAgICAgICAgICAgICAgJHJhdyAuPSAkcGF0aC0+ZnJlYWQoJGJ1ZmZlclNpemUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gWyRtaW1ldHlwZSwgJHJhd107CiAgICAgICAgfTsKCiAgICAgICAgLyoqIEB2YXIgQ2xvc3VyZShyZXNvdXJjZSk6IGFycmF5ezA6c3RyaW5nLCAxOnN0cmluZ30gJGZyb21SZXNvdXJjZSAqLwogICAgICAgICRmcm9tUmVzb3VyY2UgPSBmdW5jdGlvbiAoJHN0cmVhbSkgdXNlICgkZmluZm8sICRwYXRoLCAkYnVmZmVyU2l6ZSk6IGFycmF5IHsKICAgICAgICAgICAgc2V0X2Vycm9yX2hhbmRsZXIoZm4gKGludCAkZXJybm8sIHN0cmluZyAkZXJyc3RyLCBzdHJpbmcgJGVycmZpbGUsIGludCAkZXJybGluZSkgPT4gdHJ1ZSk7CiAgICAgICAgICAgICRyYXcgPSBmcmVhZCgkc3RyZWFtLCAkYnVmZmVyU2l6ZSk7CiAgICAgICAgICAgIGZhbHNlICE9PSAkcmF3IHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIGZpbGUgYCcuJHBhdGguJ2AgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IHJlYWRhYmxlLicpOwoKICAgICAgICAgICAgJG1pbWV0eXBlID0gKHN0cmluZykgJGZpbmZvLT5idWZmZXIoJHJhdyk7CiAgICAgICAgICAgIHdoaWxlICghZmVvZigkc3RyZWFtKSkgewogICAgICAgICAgICAgICAgJHJhdyAuPSBmcmVhZCgkc3RyZWFtLCAkYnVmZmVyU2l6ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CgogICAgICAgICAgICByZXR1cm4gWyRtaW1ldHlwZSwgJHJhd107CiAgICAgICAgfTsKCiAgICAgICAgLyoqIEB2YXIgQ2xvc3VyZShTdHJpbmdhYmxlfHN0cmluZywgcmVzb3VyY2V8bnVsbCk6IGFycmF5ezA6c3RyaW5nLCAxOnN0cmluZ30gJGZyb21QYXRoICovCiAgICAgICAgJGZyb21QYXRoID0gZnVuY3Rpb24gKFN0cmluZ2FibGV8c3RyaW5nICRwYXRoLCAkY29udGV4dCkgdXNlICgkZmluZm8pOiBhcnJheSB7CiAgICAgICAgICAgICRwYXRoID0gKHN0cmluZykgJHBhdGg7CiAgICAgICAgICAgIHNldF9lcnJvcl9oYW5kbGVyKGZuIChpbnQgJGVycm5vLCBzdHJpbmcgJGVycnN0ciwgc3RyaW5nICRlcnJmaWxlLCBpbnQgJGVycmxpbmUpID0+IHRydWUpOwogICAgICAgICAgICAkcmF3ID0gZmlsZV9nZXRfY29udGVudHMoZmlsZW5hbWU6ICRwYXRoLCBjb250ZXh0OiAkY29udGV4dCk7CiAgICAgICAgICAgIHJlc3RvcmVfZXJyb3JfaGFuZGxlcigpOwogICAgICAgICAgICBmYWxzZSAhPT0gJHJhdyB8fCB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSBmaWxlIGAnLiRwYXRoLidgIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCByZWFkYWJsZS4nKTsKICAgICAgICAgICAgJG1pbWV0eXBlID0gKHN0cmluZykgJGZpbmZvLT5maWxlKGZpbGVuYW1lOiAkcGF0aCwgZmxhZ3M6IEZJTEVJTkZPX01JTUUsIGNvbnRleHQ6ICRjb250ZXh0KTsKCiAgICAgICAgICAgIHJldHVybiBbJG1pbWV0eXBlLCAkcmF3XTsKICAgICAgICB9OwoKICAgICAgICBbJG1pbWV0eXBlLCAkcmF3XSA9IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICRwYXRoIGluc3RhbmNlb2YgU3BsRmlsZU9iamVjdCA9PiAkZnJvbUZpbGVPYmplY3QoJHBhdGgpLAogICAgICAgICAgICAkcGF0aCBpbnN0YW5jZW9mIFNwbEZpbGVJbmZvID0+ICRmcm9tRmlsZU9iamVjdCgkcGF0aC0+b3BlbkZpbGUobW9kZTogJ3JiJywgY29udGV4dDogJGNvbnRleHQpKSwKICAgICAgICAgICAgaXNfcmVzb3VyY2UoJHBhdGgpID0+ICRmcm9tUmVzb3VyY2UoJHBhdGgpLAogICAgICAgICAgICAkcGF0aCBpbnN0YW5jZW9mIFN0cmluZ2FibGUsCiAgICAgICAgICAgIGlzX3N0cmluZygkcGF0aCkgPT4gJGZyb21QYXRoKCRwYXRoLCAkY29udGV4dCksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHBhdGggYCcuJHBhdGguJ2AgaXMgbm90IGEgdmFsaWQgcmVzb3VyY2UuJyksCiAgICAgICAgfTsKCiAgICAgICAgcmV0dXJuIFVyaTo6ZnJvbUNvbXBvbmVudHMoWwogICAgICAgICAgICAnc2NoZW1lJyA9PiAnZGF0YScsCiAgICAgICAgICAgICdwYXRoJyA9PiBzdHJfcmVwbGFjZSgnICcsICcnLCAkbWltZXR5cGUuJztiYXNlNjQsJy5iYXNlNjRfZW5jb2RlKCRyYXcpKSwKICAgICAgICBdKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgZGF0YSBVUkkgc3RyaW5nLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgSWYgdGhlIHBhcmFtZXRlciBzeW50YXggaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21EYXRhKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJGRhdGEsIHN0cmluZyAkbWltZXR5cGUgPSAnJywgc3RyaW5nICRwYXJhbWV0ZXJzID0gJycpOiBzZWxmCiAgICB7CiAgICAgICAgc3RhdGljICRyZWdleHBNaW1ldHlwZSA9ICcsXlx3Ky9bLS5cd10rKD86XCtbLS5cd10rKT8kLCc7CgogICAgICAgICRtaW1ldHlwZSA9IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICcnID09PSAkbWltZXR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAxID09PSBwcmVnX21hdGNoKCRyZWdleHBNaW1ldHlwZSwgJG1pbWV0eXBlKSA9PiAgJG1pbWV0eXBlLAogICAgICAgICAgICBkZWZhdWx0ID0+IHRocm93IG5ldyBTeW50YXhFcnJvcignSW52YWxpZCBtaW1lVHlwZSwgYCcuJG1pbWV0eXBlLidgLicpLAogICAgICAgIH07CgogICAgICAgIGlmICgkZGF0YSBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJGRhdGEgPSAkZGF0YS0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkZGF0YSA9IChzdHJpbmcpICRkYXRhOwogICAgICAgIGlmICgnJyA9PT0gJHBhcmFtZXRlcnMpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21Db21wb25lbnRzKFsKICAgICAgICAgICAgICAgICdzY2hlbWUnID0+ICdkYXRhJywKICAgICAgICAgICAgICAgICdwYXRoJyA9PiBzZWxmOjpmb3JtYXREYXRhUGF0aCgkbWltZXR5cGUuJywnLnJhd3VybGVuY29kZSgkZGF0YSkpLAogICAgICAgICAgICBdKTsKICAgICAgICB9CgogICAgICAgICRpc0ludmFsaWRQYXJhbWV0ZXIgPSBzdGF0aWMgZnVuY3Rpb24gKHN0cmluZyAkcGFyYW1ldGVyKTogYm9vbCB7CiAgICAgICAgICAgICRwcm9wZXJ0aWVzID0gZXhwbG9kZSgnPScsICRwYXJhbWV0ZXIpOwoKICAgICAgICAgICAgcmV0dXJuIDIgIT09IGNvdW50KCRwcm9wZXJ0aWVzKSB8fCAnYmFzZTY0JyA9PT0gc3RydG9sb3dlcigkcHJvcGVydGllc1swXSk7CiAgICAgICAgfTsKCiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkcGFyYW1ldGVycywgJzsnKSkgewogICAgICAgICAgICAkcGFyYW1ldGVycyA9IHN1YnN0cigkcGFyYW1ldGVycywgMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF0Y2ggKFtdKSB7CiAgICAgICAgICAgIGFycmF5X2ZpbHRlcihleHBsb2RlKCc7JywgJHBhcmFtZXRlcnMpLCAkaXNJbnZhbGlkUGFyYW1ldGVyKSA9PiBzZWxmOjpmcm9tQ29tcG9uZW50cyhbCiAgICAgICAgICAgICAgICAnc2NoZW1lJyA9PiAnZGF0YScsCiAgICAgICAgICAgICAgICAncGF0aCcgPT4gc2VsZjo6Zm9ybWF0RGF0YVBhdGgoJG1pbWV0eXBlLic7Jy4kcGFyYW1ldGVycy4nLCcucmF3dXJsZW5jb2RlKCRkYXRhKSksCiAgICAgICAgICAgIF0pLAogICAgICAgICAgICBkZWZhdWx0ID0+IHRocm93IG5ldyBTeW50YXhFcnJvcihzcHJpbnRmKCdJbnZhbGlkIG1lZGlhdHlwZSBwYXJhbWV0ZXJzLCBgJXNgLicsICRwYXJhbWV0ZXJzKSkKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBVbml4IHBhdGggc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21Vbml4UGF0aChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nICRwYXRoKTogc2VsZgogICAgewogICAgICAgIGlmICgkcGF0aCBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJHBhdGggPSAkcGF0aC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkcGF0aCA9IGltcGxvZGUoJy8nLCBhcnJheV9tYXAocmF3dXJsZW5jb2RlKC4uLiksIGV4cGxvZGUoJy8nLCAoc3RyaW5nKSAkcGF0aCkpKTsKCiAgICAgICAgcmV0dXJuIFVyaTo6ZnJvbUNvbXBvbmVudHMobWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgJy8nICE9PSAoJHBhdGhbMF0gPz8gJycpID0+IFsncGF0aCcgPT4gJHBhdGhdLAogICAgICAgICAgICBkZWZhdWx0ID0+IFsncGF0aCcgPT4gJHBhdGgsICdzY2hlbWUnID0+ICdmaWxlJywgJ2hvc3QnID0+ICcnXSwKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgbG9jYWwgV2luZG93cyBwYXRoIHN0cmluZy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tV2luZG93c1BhdGgoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZyAkcGF0aCk6IHNlbGYKICAgIHsKICAgICAgICBpZiAoJHBhdGggaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICRwYXRoID0gJHBhdGgtPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgJHJvb3QgPSAnJzsKICAgICAgICAkcGF0aCA9IChzdHJpbmcpICRwYXRoOwogICAgICAgIGlmICgxID09PSBwcmVnX21hdGNoKHNlbGY6OlJFR0VYUF9XSU5ET1dfUEFUSCwgJHBhdGgsICRtYXRjaGVzKSkgewogICAgICAgICAgICAkcm9vdCA9IHN1YnN0cigkbWF0Y2hlc1sncm9vdCddLCAwLCAtMSkuJzonOwogICAgICAgICAgICAkcGF0aCA9IHN1YnN0cigkcGF0aCwgc3RybGVuKCRyb290KSk7CiAgICAgICAgfQogICAgICAgICRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCk7CiAgICAgICAgJHBhdGggPSBpbXBsb2RlKCcvJywgYXJyYXlfbWFwKHJhd3VybGVuY29kZSguLi4pLCBleHBsb2RlKCcvJywgJHBhdGgpKSk7CgogICAgICAgIC8vTG9jYWwgV2luZG93cyBhYnNvbHV0ZSBwYXRoCiAgICAgICAgaWYgKCcnICE9PSAkcm9vdCkgewogICAgICAgICAgICByZXR1cm4gVXJpOjpmcm9tQ29tcG9uZW50cyhbJ3BhdGgnID0+ICcvJy4kcm9vdC4kcGF0aCwgJ3NjaGVtZScgPT4gJ2ZpbGUnLCAnaG9zdCcgPT4gJyddKTsKICAgICAgICB9CgogICAgICAgIC8vVU5DIFdpbmRvd3MgUGF0aAogICAgICAgIGlmICghc3RyX3N0YXJ0c193aXRoKCRwYXRoLCAnLy8nKSkgewogICAgICAgICAgICByZXR1cm4gVXJpOjpmcm9tQ29tcG9uZW50cyhbJ3BhdGgnID0+ICRwYXRoXSk7CiAgICAgICAgfQoKICAgICAgICBbJGhvc3QsICRwYXRoXSA9IGV4cGxvZGUoJy8nLCBzdWJzdHIoJHBhdGgsIDIpLCAyKSArIFsxID0+ICcnXTsKCiAgICAgICAgcmV0dXJuIFVyaTo6ZnJvbUNvbXBvbmVudHMoWydob3N0JyA9PiAkaG9zdCwgJ3BhdGgnID0+ICcvJy4kcGF0aCwgJ3NjaGVtZScgPT4gJ2ZpbGUnXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIGZyb20gYSBSRkM4MDg5IGNvbXBhdGlibGUgVVJJLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4MDg5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbVJmYzgwODkoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZyAkdXJpKTogc3RhdGljCiAgICB7CiAgICAgICAgaWYgKCR1cmkgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgICRmaWxlVXJpID0gc2VsZjo6bmV3KChzdHJpbmcpIHByZWdfcmVwbGFjZSgnLF4oZmlsZTovKShbXi9dLiopJCxpJywgJ2ZpbGU6Ly8vJDInLCAoc3RyaW5nKSAkdXJpKSk7CiAgICAgICAgJHNjaGVtZSA9ICRmaWxlVXJpLT5nZXRTY2hlbWUoKTsKCiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICdmaWxlJyAhPT0gJHNjaGVtZSA9PiB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0FzIHBlciBSRkM4MDg5LCB0aGUgVVJJIHNjaGVtZSBtdXN0IGJlIGBmaWxlYC4nKSwKICAgICAgICAgICAgJ2xvY2FsaG9zdCcgPT09ICRmaWxlVXJpLT5nZXRBdXRob3JpdHkoKSA9PiAkZmlsZVVyaS0+d2l0aEhvc3QoJycpLAogICAgICAgICAgICBkZWZhdWx0ID0+ICRmaWxlVXJpLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbVNlcnZlcihhcnJheSAkc2VydmVyKTogc2VsZgogICAgewogICAgICAgICRjb21wb25lbnRzID0gWydzY2hlbWUnID0+IHNlbGY6OmZldGNoU2NoZW1lKCRzZXJ2ZXIpXTsKICAgICAgICBbJGNvbXBvbmVudHNbJ3VzZXInXSwgJGNvbXBvbmVudHNbJ3Bhc3MnXV0gPSBzZWxmOjpmZXRjaFVzZXJJbmZvKCRzZXJ2ZXIpOwogICAgICAgIFskY29tcG9uZW50c1snaG9zdCddLCAkY29tcG9uZW50c1sncG9ydCddXSA9IHNlbGY6OmZldGNoSG9zdG5hbWUoJHNlcnZlcik7CiAgICAgICAgWyRjb21wb25lbnRzWydwYXRoJ10sICRjb21wb25lbnRzWydxdWVyeSddXSA9IHNlbGY6OmZldGNoUmVxdWVzdFVyaSgkc2VydmVyKTsKCiAgICAgICAgcmV0dXJuIFVyaTo6ZnJvbUNvbXBvbmVudHMoJGNvbXBvbmVudHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZW52aXJvbm1lbnQgc2NoZW1lLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmZXRjaFNjaGVtZShhcnJheSAkc2VydmVyKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHNlcnZlciArPSBbJ0hUVFBTJyA9PiAnJ107CgogICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICBmYWxzZSAhPT0gZmlsdGVyX3Zhcigkc2VydmVyWydIVFRQUyddLCBGSUxURVJfVkFMSURBVEVfQk9PTEVBTiwgRklMVEVSX05VTExfT05fRkFJTFVSRSkgPT4gJ2h0dHBzJywKICAgICAgICAgICAgZGVmYXVsdCA9PiAnaHR0cCcsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVudmlyb25tZW50IHVzZXIgaW5mby4KICAgICAqCiAgICAgKiBAcmV0dXJuIG5vbi1lbXB0eS1hcnJheSB7MDogP3N0cmluZywgMTogP3N0cmluZ30KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZmV0Y2hVc2VySW5mbyhhcnJheSAkc2VydmVyKTogYXJyYXkKICAgIHsKICAgICAgICAkc2VydmVyICs9IFsnUEhQX0FVVEhfVVNFUicgPT4gbnVsbCwgJ1BIUF9BVVRIX1BXJyA9PiBudWxsLCAnSFRUUF9BVVRIT1JJWkFUSU9OJyA9PiAnJ107CiAgICAgICAgJHVzZXIgPSAkc2VydmVyWydQSFBfQVVUSF9VU0VSJ107CiAgICAgICAgJHBhc3MgPSAkc2VydmVyWydQSFBfQVVUSF9QVyddOwogICAgICAgIGlmIChzdHJfc3RhcnRzX3dpdGgoc3RydG9sb3dlcigkc2VydmVyWydIVFRQX0FVVEhPUklaQVRJT04nXSksICdiYXNpYycpKSB7CiAgICAgICAgICAgICR1c2VyaW5mbyA9IGJhc2U2NF9kZWNvZGUoc3Vic3RyKCRzZXJ2ZXJbJ0hUVFBfQVVUSE9SSVpBVElPTiddLCA2KSwgdHJ1ZSk7CiAgICAgICAgICAgIGZhbHNlICE9PSAkdXNlcmluZm8gfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgdXNlciBpbmZvIGNvdWxkIG5vdCBiZSBkZXRlY3RlZCcpOwogICAgICAgICAgICBbJHVzZXIsICRwYXNzXSA9IGV4cGxvZGUoJzonLCAkdXNlcmluZm8sIDIpICsgWzEgPT4gbnVsbF07CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHVzZXIpIHsKICAgICAgICAgICAgJHVzZXIgPSByYXd1cmxlbmNvZGUoJHVzZXIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgIT09ICRwYXNzKSB7CiAgICAgICAgICAgICRwYXNzID0gcmF3dXJsZW5jb2RlKCRwYXNzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHVzZXIsICRwYXNzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVudmlyb25tZW50IGhvc3QuCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBJZiB0aGUgaG9zdCBjYW5ub3QgYmUgZGV0ZWN0ZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5ezA6c3RyaW5nfG51bGwsIDE6aW50fG51bGx9CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZldGNoSG9zdG5hbWUoYXJyYXkgJHNlcnZlcik6IGFycmF5CiAgICB7CiAgICAgICAgJHNlcnZlciArPSBbJ1NFUlZFUl9QT1JUJyA9PiBudWxsXTsKICAgICAgICBpZiAobnVsbCAhPT0gJHNlcnZlclsnU0VSVkVSX1BPUlQnXSkgewogICAgICAgICAgICAkc2VydmVyWydTRVJWRVJfUE9SVCddID0gKGludCkgJHNlcnZlclsnU0VSVkVSX1BPUlQnXTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkc2VydmVyWydIVFRQX0hPU1QnXSkgJiYgMSA9PT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfSE9TVF9QT1JULCAkc2VydmVyWydIVFRQX0hPU1QnXSwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICRtYXRjaGVzICs9IFsnaG9zdCcgPT4gbnVsbCwgJ3BvcnQnID0+IG51bGxdOwogICAgICAgICAgICBpZiAobnVsbCAhPT0gJG1hdGNoZXNbJ3BvcnQnXSkgewogICAgICAgICAgICAgICAgJG1hdGNoZXNbJ3BvcnQnXSA9IChpbnQpICRtYXRjaGVzWydwb3J0J107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbJG1hdGNoZXNbJ2hvc3QnXSwgJG1hdGNoZXNbJ3BvcnQnXSA/PyAkc2VydmVyWydTRVJWRVJfUE9SVCddXTsKICAgICAgICB9CgogICAgICAgIGlzc2V0KCRzZXJ2ZXJbJ1NFUlZFUl9BRERSJ10pIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIGhvc3QgY291bGQgbm90IGJlIGRldGVjdGVkJyk7CiAgICAgICAgaWYgKGZhbHNlID09PSBmaWx0ZXJfdmFyKCRzZXJ2ZXJbJ1NFUlZFUl9BRERSJ10sIEZJTFRFUl9WQUxJREFURV9JUCwgRklMVEVSX0ZMQUdfSVBWNCkpIHsKICAgICAgICAgICAgcmV0dXJuIFsnWycuJHNlcnZlclsnU0VSVkVSX0FERFInXS4nXScsICRzZXJ2ZXJbJ1NFUlZFUl9QT1JUJ11dOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskc2VydmVyWydTRVJWRVJfQUREUiddLCAkc2VydmVyWydTRVJWRVJfUE9SVCddXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVudmlyb25tZW50IHBhdGguCiAgICAgKgogICAgICogQHJldHVybiBsaXN0PD9zdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZldGNoUmVxdWVzdFVyaShhcnJheSAkc2VydmVyKTogYXJyYXkKICAgIHsKICAgICAgICAkc2VydmVyICs9IFsnSUlTX1dhc1VybFJld3JpdHRlbicgPT4gbnVsbCwgJ1VORU5DT0RFRF9VUkwnID0+ICcnLCAnUEhQX1NFTEYnID0+ICcnLCAnUVVFUllfU1RSSU5HJyA9PiBudWxsXTsKICAgICAgICBpZiAoJzEnID09PSAkc2VydmVyWydJSVNfV2FzVXJsUmV3cml0dGVuJ10gJiYgJycgIT09ICRzZXJ2ZXJbJ1VORU5DT0RFRF9VUkwnXSkgewogICAgICAgICAgICByZXR1cm4gZXhwbG9kZSgnPycsICRzZXJ2ZXJbJ1VORU5DT0RFRF9VUkwnXSwgMikgKyBbMSA9PiBudWxsXTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkc2VydmVyWydSRVFVRVNUX1VSSSddKSkgewogICAgICAgICAgICBbJHBhdGhdID0gZXhwbG9kZSgnPycsICRzZXJ2ZXJbJ1JFUVVFU1RfVVJJJ10sIDIpOwogICAgICAgICAgICAkcXVlcnkgPSAoJycgIT09ICRzZXJ2ZXJbJ1FVRVJZX1NUUklORyddKSA/ICRzZXJ2ZXJbJ1FVRVJZX1NUUklORyddIDogbnVsbDsKCiAgICAgICAgICAgIHJldHVybiBbJHBhdGgsICRxdWVyeV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRzZXJ2ZXJbJ1BIUF9TRUxGJ10sICRzZXJ2ZXJbJ1FVRVJZX1NUUklORyddXTsKICAgIH0KCiAgICAvKioKICAgICAqIEZvcm1hdCB0aGUgUGF0aCBjb21wb25lbnQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZm9ybWF0UGF0aChzdHJpbmcgJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcGF0aCA9IG1hdGNoICgkdGhpcy0+c2NoZW1lKSB7CiAgICAgICAgICAgICdkYXRhJyA9PiBFbmNvZGVyOjplbmNvZGVQYXRoKHNlbGY6OmZvcm1hdERhdGFQYXRoKCRwYXRoKSksCiAgICAgICAgICAgICdmaWxlJyA9PiBzZWxmOjpmb3JtYXRGaWxlUGF0aChFbmNvZGVyOjplbmNvZGVQYXRoKCRwYXRoKSksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gRW5jb2Rlcjo6ZW5jb2RlUGF0aCgkcGF0aCksCiAgICAgICAgfTsKCiAgICAgICAgaWYgKCcnID09PSAkcGF0aCkgewogICAgICAgICAgICByZXR1cm4gJHBhdGg7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmF1dGhvcml0eSkgewogICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbiBhdXRob3JpdHksIHRoZSBwYXRoIG11c3Qgc3RhcnQgd2l0aCBhIGAvYAogICAgICAgICAgICByZXR1cm4gc3RyX3N0YXJ0c193aXRoKCRwYXRoLCAnLycpID8gJHBhdGggOiAnLycuJHBhdGg7CiAgICAgICAgfQoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBhdXRob3JpdHksIHRoZSBwYXRoIGNhbm5vdCBzdGFydCB3aXRoIGAvL2AKICAgICAgICBpZiAoc3RyX3N0YXJ0c193aXRoKCRwYXRoLCAnLy8nKSkgewogICAgICAgICAgICByZXR1cm4gJy8uJy4kcGF0aDsKICAgICAgICB9CgogICAgICAgICRjb2xvblBvcyA9IHN0cnBvcygkcGF0aCwgJzonKTsKICAgICAgICBpZiAoZmFsc2UgIT09ICRjb2xvblBvcyAmJiBudWxsID09PSAkdGhpcy0+c2NoZW1lKSB7CiAgICAgICAgICAgIC8vIEluIHRoZSBhYnNlbmNlIG9mIGEgc2NoZW1lIGFuZCBvZiBhbiBhdXRob3JpdHksCiAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgY2Fubm90IGNvbnRhaW4gYSBjb2xvbiAoIjoiKSBjaGFyYWN0ZXIuJwogICAgICAgICAgICAkc2xhc2hQb3MgPSBzdHJwb3MoJHBhdGgsICcvJyk7CiAgICAgICAgICAgIChmYWxzZSAhPT0gJHNsYXNoUG9zICYmICRjb2xvblBvcyA+ICRzbGFzaFBvcykgfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKAogICAgICAgICAgICAgICAgJ0luIGFic2VuY2Ugb2YgdGhlIHNjaGVtZSBhbmQgYXV0aG9yaXR5IGNvbXBvbmVudHMsIHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgY2Fubm90IGNvbnRhaW4gYSBjb2xvbiAoIjoiKSBjaGFyYWN0ZXIuJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwYXRoOwogICAgfQoKICAgIC8qKgogICAgICogRmlsdGVyIHRoZSBQYXRoIGNvbXBvbmVudC4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjM5NwogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgSWYgdGhlIHBhdGggaXMgbm90IGNvbXBsaWFudCB3aXRoIFJGQzIzOTcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZm9ybWF0RGF0YVBhdGgoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCcnID09ICRwYXRoKSB7CiAgICAgICAgICAgIHJldHVybiAndGV4dC9wbGFpbjtjaGFyc2V0PXVzLWFzY2lpLCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RybGVuKCRwYXRoKSAhPT0gc3Ryc3BuKCRwYXRoLCBzZWxmOjpBU0NJSSkgfHwgIXN0cl9jb250YWlucygkcGF0aCwgJywnKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSBwYXRoIGAnLiRwYXRoLidgIGlzIGludmFsaWQgYWNjb3JkaW5nIHRvIFJGQzI5MzcuJyk7CiAgICAgICAgfQoKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcsJywgJHBhdGgsIDIpICsgWzEgPT4gbnVsbF07CiAgICAgICAgJG1lZGlhdHlwZSA9IGV4cGxvZGUoJzsnLCAoc3RyaW5nKSAkcGFydHNbMF0sIDIpICsgWzEgPT4gbnVsbF07CiAgICAgICAgJGRhdGEgPSAoc3RyaW5nKSAkcGFydHNbMV07CiAgICAgICAgJG1pbWV0eXBlID0gJG1lZGlhdHlwZVswXTsKICAgICAgICBpZiAobnVsbCA9PT0gJG1pbWV0eXBlIHx8ICcnID09PSAkbWltZXR5cGUpIHsKICAgICAgICAgICAgJG1pbWV0eXBlID0gJ3RleHQvcGxhaW4nOwogICAgICAgIH0KCiAgICAgICAgJHBhcmFtZXRlcnMgPSAkbWVkaWF0eXBlWzFdOwogICAgICAgIGlmIChudWxsID09PSAkcGFyYW1ldGVycyB8fCAnJyA9PT0gJHBhcmFtZXRlcnMpIHsKICAgICAgICAgICAgJHBhcmFtZXRlcnMgPSAnY2hhcnNldD11cy1hc2NpaSc7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjphc3NlcnRWYWxpZFBhdGgoJG1pbWV0eXBlLCAkcGFyYW1ldGVycywgJGRhdGEpOwoKICAgICAgICByZXR1cm4gJG1pbWV0eXBlLic7Jy4kcGFyYW1ldGVycy4nLCcuJGRhdGE7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhlIHBhdGggaXMgYSBjb21wbGlhbnQgd2l0aCBSRkMyMzk3LgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMzk3CiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBJZiB0aGUgbWVkaWF0eXBlIG9yIHRoZSBkYXRhIGFyZSBub3QgY29tcGxpYW50IHdpdGggdGhlIFJGQzIzOTcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gYXNzZXJ0VmFsaWRQYXRoKHN0cmluZyAkbWltZXR5cGUsIHN0cmluZyAkcGFyYW1ldGVycywgc3RyaW5nICRkYXRhKTogdm9pZAogICAgewogICAgICAgIDEgPT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX01JTUVUWVBFLCAkbWltZXR5cGUpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIHBhdGggbWltZXR5cGUgYCcuJG1pbWV0eXBlLidgIGlzIGludmFsaWQuJyk7CiAgICAgICAgJGlzQmluYXJ5ID0gMSA9PT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfQklOQVJZLCAkcGFyYW1ldGVycywgJG1hdGNoZXMpOwogICAgICAgIGlmICgkaXNCaW5hcnkpIHsKICAgICAgICAgICAgJHBhcmFtZXRlcnMgPSBzdWJzdHIoJHBhcmFtZXRlcnMsIDAsIC0gc3RybGVuKCRtYXRjaGVzWzBdKSk7CiAgICAgICAgfQoKICAgICAgICAkcmVzID0gYXJyYXlfZmlsdGVyKGFycmF5X2ZpbHRlcihleHBsb2RlKCc7JywgJHBhcmFtZXRlcnMpLCBzZWxmOjp2YWxpZGF0ZVBhcmFtZXRlciguLi4pKSk7CiAgICAgICAgW10gPT09ICRyZXMgfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgcGF0aCBwYXJhbWV0ZXJzIGAnLiRwYXJhbWV0ZXJzLidgIGlzIGludmFsaWQuJyk7CiAgICAgICAgaWYgKCEkaXNCaW5hcnkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHJlcyA9IGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJHJlcyB8fCAkZGF0YSAhPT0gYmFzZTY0X2VuY29kZSgkcmVzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSBwYXRoIGRhdGEgYCcuJGRhdGEuJ2AgaXMgaW52YWxpZC4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBWYWxpZGF0ZSBtZWRpYXR5cGUgcGFyYW1ldGVyLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2YWxpZGF0ZVBhcmFtZXRlcihzdHJpbmcgJHBhcmFtZXRlcik6IGJvb2wKICAgIHsKICAgICAgICAkcHJvcGVydGllcyA9IGV4cGxvZGUoJz0nLCAkcGFyYW1ldGVyKTsKCiAgICAgICAgcmV0dXJuIDIgIT0gY291bnQoJHByb3BlcnRpZXMpIHx8ICdiYXNlNjQnID09PSBzdHJ0b2xvd2VyKCRwcm9wZXJ0aWVzWzBdKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZvcm1hdCB0aGUgcGF0aCBjb21wb25lbnQgZm9yIHRoZSBVUkkgc2NoZW1lIGZpbGUuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZvcm1hdEZpbGVQYXRoKHN0cmluZyAkcGF0aCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAoc3RyaW5nKSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgIHNlbGY6OlJFR0VYUF9GSUxFX1BBVEgsCiAgICAgICAgICAgIHN0YXRpYyBmbiAoYXJyYXkgJG1hdGNoZXMpOiBzdHJpbmcgPT4gJG1hdGNoZXNbJ2RlbGltJ10uJG1hdGNoZXNbJ3ZvbHVtZSddLihpc3NldCgkbWF0Y2hlc1sncmVzdCddKSA/ICc6Jy4kbWF0Y2hlc1sncmVzdCddIDogJycpLAogICAgICAgICAgICAkcGF0aAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBhc3NlcnQgdGhlIFVSSSBpbnRlcm5hbCBzdGF0ZSBpcyB2YWxpZC4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4zCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgVVJJIGlzIGluIGFuIGludmFsaWQgc3RhdGUsIGFjY29yZGluZyB0byBSRkMzOTg2CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXNzZXJ0VmFsaWRSZmMzOTg2VXJpKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmF1dGhvcml0eSAmJiAoJycgIT09ICR0aGlzLT5wYXRoICYmICcvJyAhPT0gJHRoaXMtPnBhdGhbMF0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignSWYgYW4gYXV0aG9yaXR5IGlzIHByZXNlbnQgdGhlIHBhdGggbXVzdCBiZSBlbXB0eSBvciBzdGFydCB3aXRoIGEgYC9gLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICR0aGlzLT5hdXRob3JpdHkgJiYgc3RyX3N0YXJ0c193aXRoKCR0aGlzLT5wYXRoLCAnLy8nKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0lmIHRoZXJlIGlzIG5vIGF1dGhvcml0eSB0aGUgcGF0aCBgJy4kdGhpcy0+cGF0aC4nYCBjYW5ub3Qgc3RhcnQgd2l0aCBhIGAvL2AuJyk7CiAgICAgICAgfQoKICAgICAgICAkcG9zID0gc3RycG9zKCR0aGlzLT5wYXRoLCAnOicpOwogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+YXV0aG9yaXR5CiAgICAgICAgICAgICYmIG51bGwgPT09ICR0aGlzLT5zY2hlbWUKICAgICAgICAgICAgJiYgZmFsc2UgIT09ICRwb3MKICAgICAgICAgICAgJiYgIXN0cl9jb250YWlucyhzdWJzdHIoJHRoaXMtPnBhdGgsIDAsICRwb3MpLCAnLycpCiAgICAgICAgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignSW4gYWJzZW5jZSBvZiBhIHNjaGVtZSBhbmQgYW4gYXV0aG9yaXR5IHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgY2Fubm90IGNvbnRhaW4gYSBjb2xvbiAoIjoiKSBjaGFyYWN0ZXIuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogYXNzZXJ0IHRoZSBVUkkgc2NoZW1lIGlzIHZhbGlkLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9GaWxlQVBJLyN1cmwKICAgICAqIEBsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMjM5NwogICAgICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMwogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIFVSSSBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLCBhY2NvcmRpbmcgdG8gc2NoZW1lLXNwZWNpZmljIHJ1bGVzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXNzZXJ0VmFsaWRTdGF0ZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJHNjaGVtZSA9IFVyaVNjaGVtZTo6dHJ5RnJvbSgoc3RyaW5nKSAkdGhpcy0+c2NoZW1lKTsKICAgICAgICBpZiAobnVsbCA9PT0gJHNjaGVtZSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkc2NoZW1lVHlwZSA9ICRzY2hlbWUtPnR5cGUoKTsKICAgICAgICBtYXRjaCAoJHNjaGVtZSkgewogICAgICAgICAgICBVcmlTY2hlbWU6OkJsb2IgPT4gJHRoaXMtPmlzVmFsaWRCbG9iKCksCiAgICAgICAgICAgIFVyaVNjaGVtZTo6TWFpbHRvID0+ICR0aGlzLT5pc1ZhbGlkTWFpbHRvKCksCiAgICAgICAgICAgIFVyaVNjaGVtZTo6RGF0YSwKICAgICAgICAgICAgVXJpU2NoZW1lOjpBYm91dCwKICAgICAgICAgICAgVXJpU2NoZW1lOjpKYXZhc2NyaXB0ID0+ICR0aGlzLT5pc1VyaVdpdGhTY2hlbWVBbmRQYXRoT25seSgpLAogICAgICAgICAgICBVcmlTY2hlbWU6OkZpbGUgPT4gJHRoaXMtPmlzVXJpV2l0aFNjaGVtZUhvc3RBbmRQYXRoT25seSgpLAogICAgICAgICAgICBVcmlTY2hlbWU6OkZ0cCwKICAgICAgICAgICAgVXJpU2NoZW1lOjpHb3BoZXIsCiAgICAgICAgICAgIFVyaVNjaGVtZTo6QWZwLAogICAgICAgICAgICBVcmlTY2hlbWU6OkRpY3QsCiAgICAgICAgICAgIFVyaVNjaGVtZTo6TXNycHMsCiAgICAgICAgICAgIFVyaVNjaGVtZTo6TXNycCwKICAgICAgICAgICAgVXJpU2NoZW1lOjpNdHFwLAogICAgICAgICAgICBVcmlTY2hlbWU6OlJzeW5jLAogICAgICAgICAgICBVcmlTY2hlbWU6OlNzaCwKICAgICAgICAgICAgVXJpU2NoZW1lOjpTdm4sCiAgICAgICAgICAgIFVyaVNjaGVtZTo6U25tcCA9PiAkdGhpcy0+aXNOb25FbXB0eUhvc3RVcmlXaXRob3V0RnJhZ21lbnRBbmRRdWVyeSgpLAogICAgICAgICAgICBVcmlTY2hlbWU6Okh0dHBzLAogICAgICAgICAgICBVcmlTY2hlbWU6Okh0dHAgPT4gJHRoaXMtPmlzTm9uRW1wdHlIb3N0VXJpKCksCiAgICAgICAgICAgIFVyaVNjaGVtZTo6V3MsCiAgICAgICAgICAgIFVyaVNjaGVtZTo6V3NzLAogICAgICAgICAgICBVcmlTY2hlbWU6OklwcCwKICAgICAgICAgICAgVXJpU2NoZW1lOjpJcHBzID0+ICR0aGlzLT5pc05vbkVtcHR5SG9zdFVyaVdpdGhvdXRGcmFnbWVudCgpLAogICAgICAgICAgICBVcmlTY2hlbWU6OkxkYXAsCiAgICAgICAgICAgIFVyaVNjaGVtZTo6TGRhcHMsCiAgICAgICAgICAgIFVyaVNjaGVtZTo6QWNhcCwKICAgICAgICAgICAgVXJpU2NoZW1lOjpJbWFwcywKICAgICAgICAgICAgVXJpU2NoZW1lOjpJbWFwLAogICAgICAgICAgICBVcmlTY2hlbWU6OlJlZGlzID0+IG51bGwgPT09ICR0aGlzLT5mcmFnbWVudCwKICAgICAgICAgICAgVXJpU2NoZW1lOjpQcm9zcGVybyA9PiBudWxsID09PSAkdGhpcy0+ZnJhZ21lbnQgJiYgbnVsbCA9PT0gJHRoaXMtPnF1ZXJ5ICYmIG51bGwgPT09ICR0aGlzLT51c2VySW5mbywKICAgICAgICAgICAgVXJpU2NoZW1lOjpVcm4gPT4gbnVsbCAhPT0gVXJuOjpwYXJzZSgkdGhpcy0+dXJpQXNjaWlTdHJpbmcpLAogICAgICAgICAgICBVcmlTY2hlbWU6OlRlbG5ldCwKICAgICAgICAgICAgVXJpU2NoZW1lOjpUbjMyNzAgPT4gbnVsbCA9PT0gJHRoaXMtPmZyYWdtZW50ICYmIG51bGwgPT09ICR0aGlzLT5xdWVyeSAmJiBpbl9hcnJheSgkdGhpcy0+cGF0aCwgWycnLCAnLyddLCB0cnVlKSwKICAgICAgICAgICAgVXJpU2NoZW1lOjpWbmMgPT4gbnVsbCAhPT0gICR0aGlzLT5hdXRob3JpdHkgJiYgbnVsbCA9PT0gJHRoaXMtPmZyYWdtZW50ICYmICcnID09PSAkdGhpcy0+cGF0aCwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkc2NoZW1lVHlwZS0+aXNVbmtub3duKCkKICAgICAgICAgICAgICAgIHx8ICgkc2NoZW1lVHlwZS0+aXNPcGFxdWUoKSAmJiBudWxsID09PSAkdGhpcy0+YXV0aG9yaXR5KQogICAgICAgICAgICAgICAgfHwgKCRzY2hlbWVUeXBlLT5pc0hpZXJhcmNoaWNhbCgpICYmIG51bGwgIT09ICR0aGlzLT5hdXRob3JpdHkpLAogICAgICAgIH0gfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgdXJpIGAnLiR0aGlzLT51cmlBc2NpaVN0cmluZy4nYCBpcyBpbnZhbGlkIGZvciB0aGUgYCcuJHRoaXMtPnNjaGVtZS4nYCBzY2hlbWUuJyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc1ZhbGlkQmxvYigpOiBib29sCiAgICB7CiAgICAgICAgc3RhdGljICRyZWdleHBVdWlkUmZjNDEyMiA9ICcvXlswLTlhLWZdezh9LVswLTlhLWZdezR9LVsxLTVdWzAtOWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9JC9pJzsKCiAgICAgICAgaWYgKCEkdGhpcy0+aXNVcmlXaXRoU2NoZW1lQW5kUGF0aE9ubHkoKQogICAgICAgICAgICB8fCAnJyA9PT0gJHRoaXMtPnBhdGgKICAgICAgICAgICAgfHwgIXN0cl9jb250YWlucygkdGhpcy0+cGF0aCwgJy8nKQogICAgICAgICAgICB8fCBzdHJfZW5kc193aXRoKCR0aGlzLT5wYXRoLCAnLycpCiAgICAgICAgICAgIHx8IDEgIT09IHByZWdfbWF0Y2goJHJlZ2V4cFV1aWRSZmM0MTIyLCBiYXNlbmFtZSgkdGhpcy0+cGF0aCkpCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRvcmlnaW4gPSBkaXJuYW1lKCR0aGlzLT5wYXRoKTsKICAgICAgICBpZiAoJ251bGwnID09PSAkb3JpZ2luKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGNvbXBvbmVudHMgPSBVcmlTdHJpbmc6OnBhcnNlKCRvcmlnaW4pOwoKICAgICAgICAgICAgcmV0dXJuICcnID09PSAkY29tcG9uZW50c1sncGF0aCddCiAgICAgICAgICAgICAgICAmJiBudWxsID09PSAkY29tcG9uZW50c1sncXVlcnknXQogICAgICAgICAgICAgICAgJiYgbnVsbCA9PT0gJGNvbXBvbmVudHNbJ2ZyYWdtZW50J10KICAgICAgICAgICAgICAgICYmIHRydWUgPT09IFVyaVNjaGVtZTo6dHJ5RnJvbSgoc3RyaW5nKSAkY29tcG9uZW50c1snc2NoZW1lJ10pPy0+aXNXaGF0V2dTcGVjaWFsKCk7CiAgICAgICAgfSBjYXRjaCAoVXJpRXhjZXB0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc1ZhbGlkTWFpbHRvKCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmF1dGhvcml0eSB8fCBudWxsICE9PSAkdGhpcy0+ZnJhZ21lbnQgfHwgc3RyX2NvbnRhaW5zKChzdHJpbmcpICR0aGlzLT5xdWVyeSwgJz8nKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgJG1haWxIZWFkZXJzID0gWwogICAgICAgICAgICAndG8nLCAnY2MnLCAnYmNjJywgJ3JlcGx5LXRvJywgJ2Zyb20nLCAnc2VuZGVyJywKICAgICAgICAgICAgJ3Jlc2VudC10bycsICdyZXNlbnQtY2MnLCAncmVzZW50LWJjYycsICdyZXNlbnQtZnJvbScsICdyZXNlbnQtc2VuZGVyJywKICAgICAgICAgICAgJ3JldHVybi1wYXRoJywgJ2RlbGl2ZXJ5LXRvJywgJ3NpdGUtb3duZXInLAogICAgICAgIF07CgogICAgICAgIHN0YXRpYyAkaGVhZGVyUmVnZXhwID0gJy9eW2EtekEtWjAtOVwnYCMkJSYqKy5eX3x+IS1dKyQvRCc7CiAgICAgICAgJHBhaXJzID0gUXVlcnlTdHJpbmc6OnBhcnNlRnJvbVZhbHVlKCR0aGlzLT5xdWVyeSk7CiAgICAgICAgJGhhc1RvID0gZmFsc2U7CiAgICAgICAgZm9yZWFjaCAoJHBhaXJzIGFzIFskbmFtZSwgJHZhbHVlXSkgewogICAgICAgICAgICAkaGVhZGVyTmFtZSA9IHN0cnRvbG93ZXIoJG5hbWUpOwogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGhlYWRlck5hbWUsICRtYWlsSGVhZGVycywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSAkdmFsdWUgfHwgIXNlbGY6OnZhbGlkYXRlRW1haWxMaXN0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCEkaGFzVG8gJiYgJ3RvJyA9PT0gJGhlYWRlck5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAkaGFzVG8gPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgxICE9PSBwcmVnX21hdGNoKCRoZWFkZXJSZWdleHAsIChzdHJpbmcpIEVuY29kZXI6OmRlY29kZUFsbCgkbmFtZSkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAnJyA9PT0gJHRoaXMtPnBhdGggPyAkaGFzVG8gOiBzZWxmOjp2YWxpZGF0ZUVtYWlsTGlzdCgkdGhpcy0+cGF0aCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdmFsaWRhdGVFbWFpbExpc3Qoc3RyaW5nICRlbWFpbHMpOiBib29sCiAgICB7CiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRlbWFpbHMpIGFzICRlbWFpbCkgewogICAgICAgICAgICBpZiAoZmFsc2UgPT09IGZpbHRlcl92YXIoKHN0cmluZykgRW5jb2Rlcjo6ZGVjb2RlQWxsKCRlbWFpbCksIEZJTFRFUl9WQUxJREFURV9FTUFJTCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICcnICE9PSAkZW1haWxzOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyB0aGUgVVJJIG9yaWdpbi4KICAgICAqCiAgICAgKiBUaGUgb3JpZ2luIHJlYWQtb25seSBwcm9wZXJ0eSBvZiB0aGUgVVJMIGludGVyZmFjZSByZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcKICAgICAqIHRoZSBVbmljb2RlIHNlcmlhbGl6YXRpb24gb2YgdGhlIHJlcHJlc2VudGVkIFVSTC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRPcmlnaW4oKTogP3N0cmluZwogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICgnYmxvYicgIT09ICR0aGlzLT5zY2hlbWUpIHsKICAgICAgICAgICAgICAgIGlmICghKFVyaVNjaGVtZTo6dHJ5RnJvbSgkdGhpcy0+c2NoZW1lID8/ICcnKT8tPmlzV2hhdFdnU3BlY2lhbCgpID8/IGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRob3N0ID0gJHRoaXMtPmhvc3Q7CiAgICAgICAgICAgICAgICAkY29udmVydGVkID0gJGhvc3Q7CiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gJGNvbnZlcnRlZCkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb252ZXJ0ZWQgPSBJUHY0Q29udmVydGVyOjpmcm9tRW52aXJvbm1lbnQoKS0+dG9EZWNpbWFsKCRob3N0KTsKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nRmVhdHVyZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29udmVydGVkID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gZmlsdGVyX3ZhcigkY29udmVydGVkLCBGSUxURVJfVkFMSURBVEVfSVAsIEZJTFRFUl9GTEFHX0lQVjQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb252ZXJ0ZWQgPSBJUHY2Q29udmVydGVyOjpjb21wcmVzcygkaG9zdCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvKiogQHZhciBzdHJpbmcgJGNvbnZlcnRlZCAqLwogICAgICAgICAgICAgICAgICAgIGlmICgkY29udmVydGVkICE9PSAkaG9zdCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29udmVydGVkID0gSWRuYVxDb252ZXJ0ZXI6OnRvQXNjaWkoJGNvbnZlcnRlZCktPmRvbWFpbigpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMKICAgICAgICAgICAgICAgICAgICAtPndpdGhGcmFnbWVudChudWxsKQogICAgICAgICAgICAgICAgICAgIC0+d2l0aFF1ZXJ5KG51bGwpCiAgICAgICAgICAgICAgICAgICAgLT53aXRoUGF0aCgnJykKICAgICAgICAgICAgICAgICAgICAtPndpdGhVc2VySW5mbyhudWxsKQogICAgICAgICAgICAgICAgICAgIC0+d2l0aEhvc3QoJGNvbnZlcnRlZCkKICAgICAgICAgICAgICAgICAgICAtPnRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjb21wb25lbnRzID0gVXJpU3RyaW5nOjpwYXJzZSgkdGhpcy0+cGF0aCk7CiAgICAgICAgICAgICRzY2hlbWUgPSBzdHJ0b2xvd2VyKCRjb21wb25lbnRzWydzY2hlbWUnXSA/PyAnJyk7CiAgICAgICAgICAgIGlmICghIChVcmlTY2hlbWU6OnRyeUZyb20oJHNjaGVtZSk/LT5pc1doYXRXZ1NwZWNpYWwoKSA/PyBmYWxzZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZnJvbUNvbXBvbmVudHMoJGNvbXBvbmVudHMpLT5vcmlnaW47CiAgICAgICAgfSBjYXRjaCAoVXJpRXhjZXB0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFVSSSB2YWxpZGF0aW9uIGZvciBVUkkgc2NoZW1lcyB3aGljaCBhbGxvd3Mgb25seSBzY2hlbWUgYW5kIHBhdGggY29tcG9uZW50cy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc1VyaVdpdGhTY2hlbWVBbmRQYXRoT25seSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgPT09ICR0aGlzLT5hdXRob3JpdHkKICAgICAgICAgICAgJiYgbnVsbCA9PT0gJHRoaXMtPnF1ZXJ5CiAgICAgICAgICAgICYmIG51bGwgPT09ICR0aGlzLT5mcmFnbWVudDsKICAgIH0KCiAgICAvKioKICAgICAqIFVSSSB2YWxpZGF0aW9uIGZvciBVUkkgc2NoZW1lcyB3aGljaCBhbGxvd3Mgb25seSBzY2hlbWUsIGhvc3QgYW5kIHBhdGggY29tcG9uZW50cy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc1VyaVdpdGhTY2hlbWVIb3N0QW5kUGF0aE9ubHkoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBudWxsID09PSAkdGhpcy0+dXNlckluZm8KICAgICAgICAgICAgJiYgbnVsbCA9PT0gJHRoaXMtPnBvcnQKICAgICAgICAgICAgJiYgbnVsbCA9PT0gJHRoaXMtPnF1ZXJ5CiAgICAgICAgICAgICYmIG51bGwgPT09ICR0aGlzLT5mcmFnbWVudAogICAgICAgICAgICAmJiAhKCcnICE9ICR0aGlzLT5zY2hlbWUgJiYgbnVsbCA9PT0gJHRoaXMtPmhvc3QpOwogICAgfQoKICAgIC8qKgogICAgICogVVJJIHZhbGlkYXRpb24gZm9yIFVSSSBzY2hlbWVzIHdoaWNoIGRpc2FsbG93IHRoZSBlbXB0eSAnJyBob3N0LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzTm9uRW1wdHlIb3N0VXJpKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJycgIT09ICR0aGlzLT5ob3N0CiAgICAgICAgICAgICYmICEobnVsbCAhPT0gJHRoaXMtPnNjaGVtZSAmJiBudWxsID09PSAkdGhpcy0+aG9zdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBVUkkgdmFsaWRhdGlvbiBmb3IgVVJJcyBzY2hlbWVzIHdoaWNoIGRpc2FsbG93IHRoZSBlbXB0eSAnJyBob3N0CiAgICAgKiBhbmQgZm9yYmlkcyB0aGUgZnJhZ21lbnQgY29tcG9uZW50LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzTm9uRW1wdHlIb3N0VXJpV2l0aG91dEZyYWdtZW50KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlzTm9uRW1wdHlIb3N0VXJpKCkgJiYgbnVsbCA9PT0gJHRoaXMtPmZyYWdtZW50OwogICAgfQoKICAgIC8qKgogICAgICogVVJJIHZhbGlkYXRpb24gZm9yIFVSSXMgc2NoZW1lcyB3aGljaCBkaXNhbGxvdyB0aGUgZW1wdHkgJycgaG9zdAogICAgICogYW5kIGZvcmJpZHMgZnJhZ21lbnQgYW5kIHF1ZXJ5IGNvbXBvbmVudHMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNOb25FbXB0eUhvc3RVcmlXaXRob3V0RnJhZ21lbnRBbmRRdWVyeSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pc05vbkVtcHR5SG9zdFVyaSgpICYmIG51bGwgPT09ICR0aGlzLT5mcmFnbWVudCAmJiBudWxsID09PSAkdGhpcy0+cXVlcnk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b1N0cmluZygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFzIGEgVVJJIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjEKICAgICAqIEBzZWUgOjp0b1N0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvU3RyaW5nKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYXMgYSBVUkkgcmVmZXJlbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0FzY2lpU3RyaW5nKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYXMgYSBVUkkgcmVmZXJlbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9Bc2NpaVN0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnVyaUFzY2lpU3RyaW5nOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFzIGEgVVJJIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBUaGUgaG9zdCBpcyBjb252ZXJ0ZWQgdG8gaXRzIFVOSUNPREUgcmVwcmVzZW50YXRpb24gaWYgYXZhaWxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1VuaWNvZGVTdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmlVbmljb2RlU3RyaW5nOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaHVtYW4tcmVhZGFibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBVUkkgYXMgYW4gSVJJLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg3CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0Rpc3BsYXlTdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFVyaVN0cmluZzo6dG9JcmlTdHJpbmcoJHRoaXMtPnRvU3RyaW5nKCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgVW5peCBmaWxlc3lzdGVtIHBhdGguCiAgICAgKgogICAgICogVGhlIG1ldGhvZCB3aWxsIHJldHVybiBudWxsIGlmIGEgc2NoZW1lIGlzIHByZXNlbnQgYW5kIGlzIG5vdCB0aGUgYGZpbGVgIHNjaGVtZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9Vbml4UGF0aCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcy0+c2NoZW1lKSB7CiAgICAgICAgICAgICdmaWxlJywgbnVsbCA9PiByYXd1cmxkZWNvZGUoJHRoaXMtPnBhdGgpLAogICAgICAgICAgICBkZWZhdWx0ID0+IG51bGwsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIFdpbmRvd3MgZmlsZXN5c3RlbSBwYXRoLgogICAgICoKICAgICAqIFRoZSBtZXRob2Qgd2lsbCByZXR1cm4gbnVsbCBpZiBhIHNjaGVtZSBpcyBwcmVzZW50IGFuZCBpcyBub3QgdGhlIGBmaWxlYCBzY2hlbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvV2luZG93c1BhdGgoKTogP3N0cmluZwogICAgewogICAgICAgIHN0YXRpYyAkcmVnZXhwV2luZG93c1BhdGggPSAnLF4oPzxyb290PlthLXpBLVpdOiksJzsKCiAgICAgICAgaWYgKCFpbl9hcnJheSgkdGhpcy0+c2NoZW1lLCBbJ2ZpbGUnLCBudWxsXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkb3JpZ2luYWxQYXRoID0gJHRoaXMtPnBhdGg7CiAgICAgICAgJHBhdGggPSAkb3JpZ2luYWxQYXRoOwogICAgICAgIGlmICgnLycgPT09ICgkcGF0aFswXSA/PyAnJykpIHsKICAgICAgICAgICAgJHBhdGggPSBzdWJzdHIoJHBhdGgsIDEpOwogICAgICAgIH0KCiAgICAgICAgaWYgKDEgPT09IHByZWdfbWF0Y2goJHJlZ2V4cFdpbmRvd3NQYXRoLCAkcGF0aCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICRyb290ID0gJG1hdGNoZXNbJ3Jvb3QnXTsKICAgICAgICAgICAgJHBhdGggPSBzdWJzdHIoJHBhdGgsIHN0cmxlbigkcm9vdCkpOwoKICAgICAgICAgICAgcmV0dXJuICRyb290LnN0cl9yZXBsYWNlKCcvJywgJ1xcJywgcmF3dXJsZGVjb2RlKCRwYXRoKSk7CiAgICAgICAgfQoKICAgICAgICAkaG9zdCA9ICR0aGlzLT5ob3N0OwoKICAgICAgICByZXR1cm4gbWF0Y2ggKG51bGwpIHsKICAgICAgICAgICAgJGhvc3QgPT4gc3RyX3JlcGxhY2UoJy8nLCAnXFwnLCByYXd1cmxkZWNvZGUoJG9yaWdpbmFsUGF0aCkpLAogICAgICAgICAgICBkZWZhdWx0ID0+ICdcXFxcJy4kaG9zdC4nXFwnLnN0cl9yZXBsYWNlKCcvJywgJ1xcJywgcmF3dXJsZGVjb2RlKCRwYXRoKSksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGaWxlIFVSSSBhY2NvcmRpbmcgdG8gUkZDODA4OS4KICAgICAqCiAgICAgKiBUaGUgbWV0aG9kIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIFVSSSBzY2hlbWUgaXMgbm90IHRoZSBgZmlsZWAgc2NoZW1lCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzgwODkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvUmZjODA4OSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJHBhdGggPSAkdGhpcy0+cGF0aDsKCiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICdmaWxlJyAhPT0gJHRoaXMtPnNjaGVtZSA9PiBudWxsLAogICAgICAgICAgICBpbl9hcnJheSgkdGhpcy0+YXV0aG9yaXR5LCBbJycsIG51bGwsICdsb2NhbGhvc3QnXSwgdHJ1ZSkgPT4gJ2ZpbGU6Jy5tYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgJycgPT09ICRwYXRoLAogICAgICAgICAgICAgICAgJy8nID09PSAkcGF0aFswXSA9PiAkcGF0aCwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gJy8nLiRwYXRoLAogICAgICAgICAgICB9LAogICAgICAgICAgICBkZWZhdWx0ID0+ICR0aGlzLT50b1N0cmluZygpLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBTYXZlIHRoZSBkYXRhIHRvIGEgc3BlY2lmaWMgZmlsZS4KICAgICAqCiAgICAgKiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBmaWxlCiAgICAgKiBvciBudWxsIGZvciBhbnkgb3RoZXIgc2NoZW1lIGV4Y2VwdCB0aGUgZGF0YSBzY2hlbWUKICAgICAqCiAgICAgKiBAcGFyYW0gU3BsRmlsZUluZm98U3BsRmlsZU9iamVjdHxyZXNvdXJjZXxTdHJpbmdhYmxlfHN0cmluZyAkZGVzdGluYXRpb24KICAgICAqIEBwYXJhbSA/cmVzb3VyY2UgJGNvbnRleHQKICAgICAqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGNvbnRlbnQgY2Fubm90IGJlIHN0b3JlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvRmlsZUNvbnRlbnRzKG1peGVkICRkZXN0aW5hdGlvbiwgJGNvbnRleHQgPSBudWxsKTogP2ludAogICAgewogICAgICAgIGlmICgnZGF0YScgIT09ICR0aGlzLT5zY2hlbWUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBbJG1lZGlhVHlwZSwgJGRvY3VtZW50XSA9IGV4cGxvZGUoJywnLCAkdGhpcy0+cGF0aCwgMikgKyBbMCA9PiAnJywgMSA9PiBudWxsXTsKICAgICAgICBudWxsICE9PSAkZG9jdW1lbnQgfHwgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBleHRyYWN0IHRoZSBkb2N1bWVudCBwYXJ0IGZyb20gdGhlIFVSSSBwYXRoLicpOwoKICAgICAgICAkZGF0YSA9IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgIHN0cl9lbmRzX3dpdGgoKHN0cmluZykgJG1lZGlhVHlwZSwgJztiYXNlNjQnKSA9PiAoc3RyaW5nKSBiYXNlNjRfZGVjb2RlKCRkb2N1bWVudCwgdHJ1ZSksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gcmF3dXJsZGVjb2RlKCRkb2N1bWVudCksCiAgICAgICAgfTsKCiAgICAgICAgJHJlcyA9IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICRkZXN0aW5hdGlvbiBpbnN0YW5jZW9mIFNwbEZpbGVPYmplY3QgPT4gJGRlc3RpbmF0aW9uLT5md3JpdGUoJGRhdGEpLAogICAgICAgICAgICAkZGVzdGluYXRpb24gaW5zdGFuY2VvZiBTcGxGaWxlSW5mbyA9PiAkZGVzdGluYXRpb24tPm9wZW5GaWxlKG1vZGU6J3diJywgY29udGV4dDogJGNvbnRleHQpLT5md3JpdGUoJGRhdGEpLAogICAgICAgICAgICBpc19yZXNvdXJjZSgkZGVzdGluYXRpb24pID0+IGZ3cml0ZSgkZGVzdGluYXRpb24sICRkYXRhKSwKICAgICAgICAgICAgJGRlc3RpbmF0aW9uIGluc3RhbmNlb2YgU3RyaW5nYWJsZSwKICAgICAgICAgICAgaXNfc3RyaW5nKCRkZXN0aW5hdGlvbikgPT4gKGZ1bmN0aW9uICgpIHVzZSAoJGRlc3RpbmF0aW9uLCAkZGF0YSwgJGNvbnRleHQpOiBpbnR8ZmFsc2UgewogICAgICAgICAgICAgICAgc2V0X2Vycm9yX2hhbmRsZXIoZm4gKGludCAkZXJybm8sIHN0cmluZyAkZXJyc3RyLCBzdHJpbmcgJGVycmZpbGUsIGludCAkZXJybGluZSkgPT4gdHJ1ZSk7CiAgICAgICAgICAgICAgICAkcnNyYyA9IGZvcGVuKChzdHJpbmcpICRkZXN0aW5hdGlvbiwgbW9kZTond2InLCBjb250ZXh0OiAkY29udGV4dCk7CiAgICAgICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRyc3JjKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBvcGVuIHRoZSBkZXN0aW5hdGlvbiBmaWxlOiAnLiRkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGJ5dGVzID0gZndyaXRlKCRyc3JjLCAkZGF0YSk7CiAgICAgICAgICAgICAgICBmY2xvc2UoJHJzcmMpOwogICAgICAgICAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRieXRlczsKICAgICAgICAgICAgfSkoKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbnN1cHBvcnRlZCBkZXN0aW5hdGlvbiB0eXBlOyBleHBlY3RlZCBTcGxGaWxlT2JqZWN0LCBTcGxGaWxlSW5mbywgcmVzb3VyY2Ugb3IgYSBzdHJpbmc7ICcuKGlzX29iamVjdCgkZGVzdGluYXRpb24pID8gJGRlc3RpbmF0aW9uOjpjbGFzcyA6IGdldHR5cGUoJGRlc3RpbmF0aW9uKSkuJyBnaXZlbi4nKSwKICAgICAgICB9OwoKICAgICAgICBmYWxzZSAhPT0gJHJlcyB8fCB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXN0aW5hdGlvbiBmaWxlLicpOwoKICAgICAgICByZXR1cm4gJHJlczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbmluZyBhbGwgdGhlIFVSSSBjb21wb25lbnRzLgogICAgICoKICAgICAqIEByZXR1cm4gQ29tcG9uZW50TWFwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0NvbXBvbmVudHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnc2NoZW1lJyA9PiAkdGhpcy0+c2NoZW1lLAogICAgICAgICAgICAndXNlcicgPT4gJHRoaXMtPnVzZXIsCiAgICAgICAgICAgICdwYXNzJyA9PiAkdGhpcy0+cGFzcywKICAgICAgICAgICAgJ2hvc3QnID0+ICR0aGlzLT5ob3N0LAogICAgICAgICAgICAncG9ydCcgPT4gJHRoaXMtPnBvcnQsCiAgICAgICAgICAgICdwYXRoJyA9PiAkdGhpcy0+cGF0aCwKICAgICAgICAgICAgJ3F1ZXJ5JyA9PiAkdGhpcy0+cXVlcnksCiAgICAgICAgICAgICdmcmFnbWVudCcgPT4gJHRoaXMtPmZyYWdtZW50LAogICAgICAgIF07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNjaGVtZSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zY2hlbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEF1dGhvcml0eSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hdXRob3JpdHk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB1c2VyIGNvbXBvbmVudCBlbmNvZGVkIHZhbHVlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBocC5uZXQvcmZjL3VybF9wYXJzaW5nX2FwaQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlcm5hbWUoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXNlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGFzc3dvcmQoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFzczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlckluZm8oKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXNlckluZm87CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEhvc3QoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aG9zdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VW5pY29kZUhvc3QoKTogP3N0cmluZwogICAgewogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+aG9zdCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRob3N0ID0gSWRuYUNvbnZlcnRlcjo6dG9Vbmljb2RlKCR0aGlzLT5ob3N0KS0+ZG9tYWluKCk7CiAgICAgICAgaWYgKCRob3N0ID09PSAkdGhpcy0+aG9zdCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmhvc3Q7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGhvc3Q7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzSXB2NEhvc3QoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBIb3N0UmVjb3JkOjppc0lwdjQoJHRoaXMtPmhvc3QpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0lwdjZIb3N0KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gSG9zdFJlY29yZDo6aXNJcHY2KCR0aGlzLT5ob3N0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNJcHZGdXR1cmVIb3N0KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gSG9zdFJlY29yZDo6aXNJcHZGdXR1cmUoJHRoaXMtPmhvc3QpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0lwSG9zdCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEhvc3RSZWNvcmQ6OmlzSXAoJHRoaXMtPmhvc3QpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlZ2lzdGVyZWROYW1lSG9zdCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEhvc3RSZWNvcmQ6OmlzUmVnaXN0ZXJlZE5hbWUoJHRoaXMtPmhvc3QpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0RvbWFpbkhvc3QoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBIb3N0UmVjb3JkOjppc0RvbWFpbigkdGhpcy0+aG9zdCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvcnQoKTogP2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9ydDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGF0aCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBhdGg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFF1ZXJ5KCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnF1ZXJ5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmFnbWVudCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mcmFnbWVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JpZ2luKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9yaWdpbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2hlbihjYWxsYWJsZXxib29sICRjb25kaXRpb24sIGNhbGxhYmxlICRvblN1Y2Nlc3MsID9jYWxsYWJsZSAkb25GYWlsID0gbnVsbCk6IHN0YXRpYwogICAgewogICAgICAgIGlmICghaXNfYm9vbCgkY29uZGl0aW9uKSkgewogICAgICAgICAgICAkY29uZGl0aW9uID0gJGNvbmRpdGlvbigkdGhpcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgJGNvbmRpdGlvbiA9PiAkb25TdWNjZXNzKCR0aGlzKSwKICAgICAgICAgICAgbnVsbCAhPT0gJG9uRmFpbCA9PiAkb25GYWlsKCR0aGlzKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkdGhpcywKICAgICAgICB9ID8/ICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0cmFuc2Zvcm0oY2FsbGFibGUgJGNhbGxiYWNrKTogc3RhdGljCiAgICB7CiAgICAgICAgcmV0dXJuICRjYWxsYmFjaygkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTY2hlbWUoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRzY2hlbWUpOiBzdGF0aWMKICAgIHsKICAgICAgICAkc2NoZW1lID0gJHRoaXMtPmZvcm1hdFNjaGVtZSgkdGhpcy0+ZmlsdGVyU3RyaW5nKCRzY2hlbWUpKTsKCiAgICAgICAgcmV0dXJuIG1hdGNoICgkc2NoZW1lKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2hlbWUgPT4gJHRoaXMsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gbmV3IHNlbGYoJHNjaGVtZSwgJHRoaXMtPnVzZXIsICR0aGlzLT5wYXNzLCAkdGhpcy0+aG9zdCwgJHRoaXMtPnBvcnQsICR0aGlzLT5wYXRoLCAkdGhpcy0+cXVlcnksICR0aGlzLT5mcmFnbWVudCksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlciBhIHN0cmluZy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSBzdWJtaXR0ZWQgZGF0YSBjYW5ub3QgYmUgY29udmVydGVkIHRvIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbHRlclN0cmluZyhCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHN0cik6ID9zdHJpbmcKICAgIHsKICAgICAgICAkc3RyID0gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgJHN0ciBpbnN0YW5jZW9mIEZyYWdtZW50RGlyZWN0aXZlID0+ICRzdHItPnRvRnJhZ21lbnRWYWx1ZSgpLAogICAgICAgICAgICAkc3RyIGluc3RhbmNlb2YgVXJpQ29tcG9uZW50SW50ZXJmYWNlID0+ICRzdHItPnZhbHVlKCksCiAgICAgICAgICAgICRzdHIgaW5zdGFuY2VvZiBCYWNrZWRFbnVtID0+IChzdHJpbmcpICRzdHItPnZhbHVlLAogICAgICAgICAgICBudWxsID09PSAkc3RyID0+IG51bGwsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gKHN0cmluZykgJHN0ciwKICAgICAgICB9OwoKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgbnVsbCA9PT0gJHN0ciA9PiBudWxsLAogICAgICAgICAgICAxID09PSBwcmVnX21hdGNoKHNlbGY6OlJFR0VYUF9JTlZBTElEX0NIQVJTLCAkc3RyKSA9PiB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSBjb21wb25lbnQgYCcuJHN0ci4nYCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMuJyksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJHN0ciwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoVXNlckluZm8oCiAgICAgICAgQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICR1c2VyLAogICAgICAgICNbU2Vuc2l0aXZlUGFyYW1ldGVyXSBCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHBhc3N3b3JkID0gbnVsbAogICAgKTogc3RhdGljIHsKICAgICAgICAkdXNlciA9IEVuY29kZXI6OmVuY29kZVVzZXIoJHRoaXMtPmZpbHRlclN0cmluZygkdXNlcikpOwogICAgICAgICRwYXNzID0gRW5jb2Rlcjo6ZW5jb2RlUGFzc3dvcmQoJHRoaXMtPmZpbHRlclN0cmluZygkcGFzc3dvcmQpKTsKICAgICAgICAkdXNlckluZm8gPSAkdXNlcjsKICAgICAgICBpZiAobnVsbCAhPT0gJHBhc3N3b3JkKSB7CiAgICAgICAgICAgICR1c2VySW5mbyAuPSAnOicuJHBhc3M7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF0Y2ggKCR1c2VySW5mbykgewogICAgICAgICAgICAkdGhpcy0+dXNlckluZm8gPT4gJHRoaXMsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gbmV3IHNlbGYoJHRoaXMtPnNjaGVtZSwgJHVzZXIsICRwYXNzLCAkdGhpcy0+aG9zdCwgJHRoaXMtPnBvcnQsICR0aGlzLT5wYXRoLCAkdGhpcy0+cXVlcnksICR0aGlzLT5mcmFnbWVudCksCiAgICAgICAgfTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFVzZXJuYW1lKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkdXNlcik6IHN0YXRpYwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFVzZXJJbmZvKCR1c2VyLCAkdGhpcy0+cGFzcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXNzd29yZCgjW1NlbnNpdGl2ZVBhcmFtZXRlcl0gQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRwYXNzd29yZCk6IHN0YXRpYwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFVzZXJJbmZvKCR0aGlzLT51c2VyLCAkcGFzc3dvcmQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoSG9zdChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGhvc3QpOiBzdGF0aWMKICAgIHsKICAgICAgICAkaG9zdCA9ICR0aGlzLT5mb3JtYXRIb3N0KCR0aGlzLT5maWx0ZXJTdHJpbmcoJGhvc3QpKTsKCiAgICAgICAgcmV0dXJuIG1hdGNoICgkaG9zdCkgewogICAgICAgICAgICAkdGhpcy0+aG9zdCA9PiAkdGhpcywKICAgICAgICAgICAgZGVmYXVsdCA9PiBuZXcgc2VsZigkdGhpcy0+c2NoZW1lLCAkdGhpcy0+dXNlciwgJHRoaXMtPnBhc3MsICRob3N0LCAkdGhpcy0+cG9ydCwgJHRoaXMtPnBhdGgsICR0aGlzLT5xdWVyeSwgJHRoaXMtPmZyYWdtZW50KSwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUG9ydChCYWNrZWRFbnVtfGludHxudWxsICRwb3J0KTogc3RhdGljCiAgICB7CiAgICAgICAgJHBvcnQgPSAkdGhpcy0+Zm9ybWF0UG9ydCgkcG9ydCk7CgogICAgICAgIHJldHVybiBtYXRjaCAoJHBvcnQpIHsKICAgICAgICAgICAgJHRoaXMtPnBvcnQgPT4gJHRoaXMsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gbmV3IHNlbGYoJHRoaXMtPnNjaGVtZSwgJHRoaXMtPnVzZXIsICR0aGlzLT5wYXNzLCAkdGhpcy0+aG9zdCwgJHBvcnQsICR0aGlzLT5wYXRoLCAkdGhpcy0+cXVlcnksICR0aGlzLT5mcmFnbWVudCksCiAgICAgICAgfTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhdGgoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZyAkcGF0aCk6IHN0YXRpYwogICAgewogICAgICAgICRwYXRoID0gJHRoaXMtPmZvcm1hdFBhdGgoJHRoaXMtPmZpbHRlclN0cmluZygkcGF0aCkgPz8gdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgcGF0aCBjb21wb25lbnQgY2Fubm90IGJlIG51bGwuJykpOwoKICAgICAgICByZXR1cm4gbWF0Y2ggKCRwYXRoKSB7CiAgICAgICAgICAgICR0aGlzLT5wYXRoID0+ICR0aGlzLAogICAgICAgICAgICBkZWZhdWx0ID0+IG5ldyBzZWxmKCR0aGlzLT5zY2hlbWUsICR0aGlzLT51c2VyLCAkdGhpcy0+cGFzcywgJHRoaXMtPmhvc3QsICR0aGlzLT5wb3J0LCAkcGF0aCwgJHRoaXMtPnF1ZXJ5LCAkdGhpcy0+ZnJhZ21lbnQpLAogICAgICAgIH07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeShCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJHF1ZXJ5KTogc3RhdGljCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gRW5jb2Rlcjo6ZW5jb2RlUXVlcnlPckZyYWdtZW50KCR0aGlzLT5maWx0ZXJTdHJpbmcoJHF1ZXJ5KSk7CgogICAgICAgIHJldHVybiBtYXRjaCAoJHF1ZXJ5KSB7CiAgICAgICAgICAgICR0aGlzLT5xdWVyeSA9PiAkdGhpcywKICAgICAgICAgICAgZGVmYXVsdCA9PiBuZXcgc2VsZigkdGhpcy0+c2NoZW1lLCAkdGhpcy0+dXNlciwgJHRoaXMtPnBhc3MsICR0aGlzLT5ob3N0LCAkdGhpcy0+cG9ydCwgJHRoaXMtPnBhdGgsICRxdWVyeSwgJHRoaXMtPmZyYWdtZW50KSwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoRnJhZ21lbnQoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRmcmFnbWVudCk6IHN0YXRpYwogICAgewogICAgICAgICRmcmFnbWVudCA9IEVuY29kZXI6OmVuY29kZVF1ZXJ5T3JGcmFnbWVudCgkdGhpcy0+ZmlsdGVyU3RyaW5nKCRmcmFnbWVudCkpOwoKICAgICAgICByZXR1cm4gbWF0Y2ggKCRmcmFnbWVudCkgewogICAgICAgICAgICAkdGhpcy0+ZnJhZ21lbnQgPT4gJHRoaXMsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gbmV3IHNlbGYoJHRoaXMtPnNjaGVtZSwgJHRoaXMtPnVzZXIsICR0aGlzLT5wYXNzLCAkdGhpcy0+aG9zdCwgJHRoaXMtPnBvcnQsICR0aGlzLT5wYXRoLCAkdGhpcy0+cXVlcnksICRmcmFnbWVudCksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIGBmaWxlYCBzY2hlbWUgYmFzZSBVUkkgcmVwcmVzZW50cyBhIGxvY2FsIGZpbGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0xvY2FsRmlsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICdmaWxlJyAhPT0gJHRoaXMtPnNjaGVtZSA9PiBmYWxzZSwKICAgICAgICAgICAgaW5fYXJyYXkoJHRoaXMtPmF1dGhvcml0eSwgWycnLCBudWxsLCAnbG9jYWxob3N0J10sIHRydWUpID0+IHRydWUsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gZmFsc2UsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIFVSSSBpcyBvcGFxdWUgb3Igbm90LgogICAgICoKICAgICAqIEEgVVJJIGlzIG9wYXF1ZSBpZiBhbmQgb25seSBpZiBpdCBpcyBhYnNvbHV0ZQogICAgICogYW5kIGRvZXMgbm90IGhhdmUgYW4gYXV0aG9yaXR5IHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc09wYXF1ZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgPT09ICR0aGlzLT5hdXRob3JpdHkKICAgICAgICAgICAgJiYgbnVsbCAhPT0gJHRoaXMtPnNjaGVtZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdHdvIFVSSSBkbyBub3Qgc2hhcmUgdGhlIHNhbWUgb3JpZ2luLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDcm9zc09yaWdpbihSZmMzOTg2VXJpfFdoYXRXZ1VybHxVcm58U3RyaW5nYWJsZXxzdHJpbmcgJHVyaSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHRoaXMtPm9yaWdpbikgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR1cmkgPSBzZWxmOjp0cnlOZXcoJHVyaSk7CiAgICAgICAgaWYgKG51bGwgPT09ICR1cmkgfHwgbnVsbCA9PT0gKCRvcmlnaW4gPSAkdXJpLT5nZXRPcmlnaW4oKSkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm9yaWdpbiAhPT0gJG9yaWdpbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTYW1lT3JpZ2luKFJmYzM5ODZVcml8V2hhdFdnVXJsfFVybnxTdHJpbmdhYmxlfHN0cmluZyAkdXJpKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAhICR0aGlzLT5pc0Nyb3NzT3JpZ2luKCR1cmkpOwogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgVVJJIGlzIGFic29sdXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNBYnNvbHV0ZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgIT09ICR0aGlzLT5zY2hlbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBVUkkgaXMgYSBuZXR3b3JrIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc05ldHdvcmtQYXRoKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCA9PT0gJHRoaXMtPnNjaGVtZQogICAgICAgICAgICAmJiBudWxsICE9PSAkdGhpcy0+YXV0aG9yaXR5OwogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgVVJJIGlzIGFuIGFic29sdXRlIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0Fic29sdXRlUGF0aCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgPT09ICR0aGlzLT5zY2hlbWUKICAgICAgICAgICAgJiYgbnVsbCA9PT0gJHRoaXMtPmF1dGhvcml0eQogICAgICAgICAgICAmJiAnLycgPT09ICgkdGhpcy0+cGF0aFswXSA/PyAnJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBVUkkgaXMgYSByZWxhdGl2ZSBwYXRoLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSZWxhdGl2ZVBhdGgoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBudWxsID09PSAkdGhpcy0+c2NoZW1lCiAgICAgICAgICAgICYmIG51bGwgPT09ICR0aGlzLT5hdXRob3JpdHkKICAgICAgICAgICAgJiYgJy8nICE9PSAoJHRoaXMtPnBhdGhbMF0gPz8gJycpOwogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciBib3RoIFVSSXMgcmVmZXIgdG8gdGhlIHNhbWUgZG9jdW1lbnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NhbWVEb2N1bWVudChSZmMzOTg2VXJpfFdoYXRXZ1VybHxVcmlJbnRlcmZhY2V8U3RyaW5nYWJsZXxVcm58c3RyaW5nICR1cmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lcXVhbHMoJHVyaSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhSZmMzOTg2VXJpfFdoYXRXZ1VybHxVcmlJbnRlcmZhY2V8U3RyaW5nYWJsZXxVcm58c3RyaW5nICR1cmksIFVyaUNvbXBhcmlzb25Nb2RlICR1cmlDb21wYXJpc29uTW9kZSA9IFVyaUNvbXBhcmlzb25Nb2RlOjpFeGNsdWRlRnJhZ21lbnQpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCEkdXJpIGluc3RhbmNlb2YgVXJpSW50ZXJmYWNlICYmICEkdXJpIGluc3RhbmNlb2YgUmZjMzk4NlVyaSAmJiAhJHVyaSBpbnN0YW5jZW9mIFdoYXRXZ1VybCkgewogICAgICAgICAgICAkdXJpID0gc2VsZjo6dHJ5TmV3KCR1cmkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICR1cmkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJGJhc2VVcmkgPSAkdGhpczsKICAgICAgICBpZiAoVXJpQ29tcGFyaXNvbk1vZGU6OkV4Y2x1ZGVGcmFnbWVudCA9PT0gJHVyaUNvbXBhcmlzb25Nb2RlKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoRnJhZ21lbnQobnVsbCk7CiAgICAgICAgICAgICRiYXNlVXJpID0gJGJhc2VVcmktPndpdGhGcmFnbWVudChudWxsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYmFzZVVyaS0+bm9ybWFsaXplKCktPnRvU3RyaW5nKCkgPT09IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICR1cmkgaW5zdGFuY2VvZiBSZmMzOTg2VXJpID0+ICR1cmktPnRvU3RyaW5nKCksCiAgICAgICAgICAgICR1cmkgaW5zdGFuY2VvZiBXaGF0V2dVcmwgPT4gJHVyaS0+dG9Bc2NpaVN0cmluZygpLAogICAgICAgICAgICBkZWZhdWx0ID0+ICR1cmktPm5vcm1hbGl6ZSgpLT50b1N0cmluZygpLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBOb3JtYWxpemUgYSBVUkkgYnkgYXBwbHlpbmcgbm9uLWRlc3RydWN0aXZlIGFuZCBkZXN0cnVjdGl2ZSBub3JtYWxpemF0aW9uCiAgICAgKiBydWxlcyBhcyBkZWZpbmVkIGluIFJGQzM5ODYgYW5kIFJGQzM5ODcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBub3JtYWxpemUoKTogc3RhdGljCiAgICB7CiAgICAgICAgJHVyaVN0cmluZyA9ICR0aGlzLT50b1N0cmluZygpOwogICAgICAgIGlmICgnJyA9PT0gJHVyaVN0cmluZykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbm9ybWFsaXplZFVyaVN0cmluZyA9IFVyaVN0cmluZzo6bm9ybWFsaXplKCR1cmlTdHJpbmcpOwogICAgICAgICRub3JtYWxpemVkVXJpID0gc2VsZjo6bmV3KCRub3JtYWxpemVkVXJpU3RyaW5nKTsKICAgICAgICBpZiAobnVsbCAhPT0gJG5vcm1hbGl6ZWRVcmktPmdldEF1dGhvcml0eSgpICYmICgnJyA9PT0gJG5vcm1hbGl6ZWRVcmktPmdldFBhdGgoKSAmJiAoVXJpU2NoZW1lOjp0cnlGcm9tKCRub3JtYWxpemVkVXJpLT5nZXRTY2hlbWUoKSA/PyAnJyk/LT5pc1doYXRXZ1NwZWNpYWwoKSA/PyBmYWxzZSkpKSB7CiAgICAgICAgICAgICRub3JtYWxpemVkVXJpID0gJG5vcm1hbGl6ZWRVcmktPndpdGhQYXRoKCcvJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5vcm1hbGl6ZWRVcmktPnRvU3RyaW5nKCkgPT09ICR1cmlTdHJpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRub3JtYWxpemVkVXJpOwogICAgfQoKICAgIC8qKgogICAgICogUmVzb2x2ZXMgYSBVUkkgYWdhaW5zdCBhIGJhc2UgVVJJIHVzaW5nIFJGQzM5ODYgcnVsZXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBzdWJtaXR0ZWQgVVJJIGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhIFVSSSBpbnN0YW5jZSBvZiB0aGUgc2FtZSB0eXBlIHRoYXQgY29udGFpbnMgdGhlIGFwcGxpZWQgbW9kaWZpY2F0aW9ucy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIHRyYW5zcGFyZW50IHdoZW4gZGVhbGluZyB3aXRoIGVycm9ycyBhbmQgZXhjZXB0aW9ucy4KICAgICAqIEl0IE1VU1Qgbm90IGFsdGVyIG9yIHNpbGVuY2UgdGhlbSBhcGFydCBmcm9tIHZhbGlkYXRpbmcgaXRzIG93biBwYXJhbWV0ZXJzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzb2x2ZShSZmMzOTg2VXJpfFdoYXRXZ1VybHxVcmlJbnRlcmZhY2V8U3RyaW5nYWJsZXxVcm58QmFja2VkRW51bXxzdHJpbmcgJHVyaSk6IHN0YXRpYwogICAgewogICAgICAgIHJldHVybiBzZWxmOjpuZXcoVXJpU3RyaW5nOjpyZXNvbHZlKAogICAgICAgICAgICBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgJHVyaSBpbnN0YW5jZW9mIFVyaUludGVyZmFjZSwKICAgICAgICAgICAgICAgICR1cmkgaW5zdGFuY2VvZiBSZmMzOTg2VXJpID0+ICR1cmktPnRvU3RyaW5nKCksCiAgICAgICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgV2hhdFdnVXJsID0+ICR1cmktPnRvQXNjaWlTdHJpbmcoKSwKICAgICAgICAgICAgICAgICR1cmkgaW5zdGFuY2VvZiBCYWNrZWRFbnVtID0+IChzdHJpbmcpICR1cmktPnZhbHVlLAogICAgICAgICAgICAgICAgZGVmYXVsdCA9PiAkdXJpLAogICAgICAgICAgICB9LAogICAgICAgICAgICAkdGhpcy0+dG9TdHJpbmcoKQogICAgICAgICkpOwogICAgfQoKICAgIC8qKgogICAgICogUmVsYXRpdml6ZSBhIFVSSSBhY2NvcmRpbmcgdG8gYSBiYXNlIFVSSS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIHN1Ym1pdHRlZCBVUkkgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGEgVVJJIGluc3RhbmNlIG9mIHRoZSBzYW1lIHR5cGUgdGhhdCBjb250YWlucyB0aGUgYXBwbGllZCBtb2RpZmljYXRpb25zLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgdHJhbnNwYXJlbnQgd2hlbiBkZWFsaW5nIHdpdGggZXJyb3IgYW5kIGV4Y2VwdGlvbnMuCiAgICAgKiBJdCBNVVNUIG5vdCBhbHRlciBvZiBzaWxlbmNlIHRoZW0gYXBhcnQgZnJvbSB2YWxpZGF0aW5nIGl0cyBvd24gcGFyYW1ldGVycy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbGF0aXZpemUoUmZjMzk4NlVyaXxXaGF0V2dVcmx8VXJpSW50ZXJmYWNlfFN0cmluZ2FibGV8VXJufEJhY2tlZEVudW18c3RyaW5nICR1cmkpOiBzdGF0aWMKICAgIHsKICAgICAgICAkdXJpID0gc2VsZjo6bmV3KCR1cmkpOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICR0aGlzLT5zY2hlbWUgIT09ICR1cmktPmdldFNjaGVtZSgpIHx8CiAgICAgICAgICAgICR0aGlzLT5hdXRob3JpdHkgIT09ICR1cmktPmdldEF1dGhvcml0eSgpIHx8CiAgICAgICAgICAgICR1cmktPmlzUmVsYXRpdmVQYXRoKCkpIHsKICAgICAgICAgICAgcmV0dXJuICR1cmk7CiAgICAgICAgfQoKICAgICAgICAkdGFyZ2V0UGF0aCA9ICR1cmktPmdldFBhdGgoKTsKICAgICAgICAkYmFzZVBhdGggPSAkdGhpcy0+cGF0aDsKCiAgICAgICAgJHVyaSA9ICR1cmkKICAgICAgICAgICAgLT53aXRoU2NoZW1lKG51bGwpCiAgICAgICAgICAgIC0+d2l0aFVzZXJJbmZvKG51bGwpCiAgICAgICAgICAgIC0+d2l0aFBvcnQobnVsbCkKICAgICAgICAgICAgLT53aXRoSG9zdChudWxsKTsKCiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICR0YXJnZXRQYXRoICE9PSAkYmFzZVBhdGggPT4gJHVyaS0+d2l0aFBhdGgoc2VsZjo6cmVsYXRpdml6ZVBhdGgoJHRhcmdldFBhdGgsICRiYXNlUGF0aCkpLAogICAgICAgICAgICAkdGhpcy0+cXVlcnkgPT09ICR1cmktPmdldFF1ZXJ5KCkgPT4gJHVyaS0+d2l0aFBhdGgoJycpLT53aXRoUXVlcnkobnVsbCksCiAgICAgICAgICAgIG51bGwgPT09ICR1cmktPmdldFF1ZXJ5KCkgPT4gJHVyaS0+d2l0aFBhdGgoc2VsZjo6Zm9ybWF0UGF0aFdpdGhFbXB0eUJhc2VRdWVyeSgkdGFyZ2V0UGF0aCkpLAogICAgICAgICAgICBkZWZhdWx0ID0+ICR1cmktPndpdGhQYXRoKCcnKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogRm9ybWF0dGluZyB0aGUgcGF0aCB0byBrZWVwIGEgcmVzb2x2YWJsZSBVUkkuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZvcm1hdFBhdGhXaXRoRW1wdHlCYXNlUXVlcnkoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHRhcmdldFNlZ21lbnRzID0gc2VsZjo6Z2V0U2VnbWVudHMoJHBhdGgpOwogICAgICAgICRiYXNlbmFtZSA9ICR0YXJnZXRTZWdtZW50c1thcnJheV9rZXlfbGFzdCgkdGFyZ2V0U2VnbWVudHMpXTsKCiAgICAgICAgcmV0dXJuICcnID09PSAkYmFzZW5hbWUgPyAnLi8nIDogJGJhc2VuYW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmVsYXRpdmVzIHRoZSBVUkkgZm9yIGFuIGF1dGhvcml0eS1sZXNzIHRhcmdldCBVUkkuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJlbGF0aXZpemVQYXRoKHN0cmluZyAkcGF0aCwgc3RyaW5nICRiYXNlUGF0aCk6IHN0cmluZwogICAgewogICAgICAgICRiYXNlU2VnbWVudHMgPSBzZWxmOjpnZXRTZWdtZW50cygkYmFzZVBhdGgpOwogICAgICAgICR0YXJnZXRTZWdtZW50cyA9IHNlbGY6OmdldFNlZ21lbnRzKCRwYXRoKTsKICAgICAgICAkdGFyZ2V0QmFzZW5hbWUgPSBhcnJheV9wb3AoJHRhcmdldFNlZ21lbnRzKTsKICAgICAgICBhcnJheV9wb3AoJGJhc2VTZWdtZW50cyk7CiAgICAgICAgZm9yZWFjaCAoJGJhc2VTZWdtZW50cyBhcyAkb2Zmc2V0ID0+ICRzZWdtZW50KSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHRhcmdldFNlZ21lbnRzWyRvZmZzZXRdKSB8fCAkc2VnbWVudCAhPT0gJHRhcmdldFNlZ21lbnRzWyRvZmZzZXRdKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bnNldCgkYmFzZVNlZ21lbnRzWyRvZmZzZXRdLCAkdGFyZ2V0U2VnbWVudHNbJG9mZnNldF0pOwogICAgICAgIH0KICAgICAgICAkdGFyZ2V0U2VnbWVudHNbXSA9ICR0YXJnZXRCYXNlbmFtZTsKCiAgICAgICAgcmV0dXJuIHN0YXRpYzo6Zm9ybWF0UmVsYXRpdmVQYXRoKAogICAgICAgICAgICBzdHJfcmVwZWF0KCcuLi8nLCBjb3VudCgkYmFzZVNlZ21lbnRzKSkuaW1wbG9kZSgnLycsICR0YXJnZXRTZWdtZW50cyksCiAgICAgICAgICAgICRiYXNlUGF0aAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBGb3JtYXR0aW5nIHRoZSBwYXRoIHRvIGtlZXAgYSB2YWxpZCBVUkkuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlUGF0aChzdHJpbmcgJHBhdGgsIHN0cmluZyAkYmFzZVBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkY29sb25Qb3NpdGlvbiA9IHN0cnBvcygkcGF0aCwgJzonKTsKICAgICAgICAkc2xhc2hQb3NpdGlvbiA9IHN0cnBvcygkcGF0aCwgJy8nKTsKCiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICcnID09PSAkcGF0aCA9PiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgJycgPT09ICRiYXNlUGF0aCwKICAgICAgICAgICAgICAgICcvJyA9PT0gJGJhc2VQYXRoID0+ICRiYXNlUGF0aCwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gJy4vJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmFsc2UgPT09ICRjb2xvblBvc2l0aW9uID0+ICRwYXRoLAogICAgICAgICAgICBmYWxzZSA9PT0gJHNsYXNoUG9zaXRpb24sCiAgICAgICAgICAgICRjb2xvblBvc2l0aW9uIDwgJHNsYXNoUG9zaXRpb24gID0+ICAiLi8kcGF0aCIsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJHBhdGgsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIHJldHVybnMgdGhlIHBhdGggc2VnbWVudHMuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFNlZ21lbnRzKHN0cmluZyAkcGF0aCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGV4cGxvZGUoJy8nLCBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAnJyA9PT0gJHBhdGgsCiAgICAgICAgICAgICcvJyAhPT0gJHBhdGhbMF0gPT4gJHBhdGgsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gc3Vic3RyKCRwYXRoLCAxKSwKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQ29tcG9uZW50TWFwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2RlYnVnSW5mbygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dG9Db21wb25lbnRzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBERVBSRUNBVElPTiBXQVJOSU5HISBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcG9pbnQgcmVsZWFzZS4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2ZXJzaW9uIDcuNi4wCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKiBAc2VlIFVyaTo6cGFyc2UoKQogICAgICoKICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgZnJvbSBhIFVSSSBhbmQgYSBCYXNlIFVSSS4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuZWQgVVJJIG11c3QgYmUgYWJzb2x1dGUuCiAgICAgKi8KICAgICNbRGVwcmVjYXRlZChtZXNzYWdlOid1c2UgTGVhZ3VlXFVyaVxVcmk6OnBhcnNlKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuNi4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CYXNlVXJpKFdoYXRXZ1VybHxSZmMzOTg2VXJpfFN0cmluZ2FibGV8c3RyaW5nICR1cmksIFdoYXRXZ1VybHxSZmMzOTg2VXJpfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmkgPSBudWxsKTogc2VsZgogICAgewogICAgICAgICRmb3JtYXR0ZXIgPSBmbiAoV2hhdFdnVXJsfFJmYzM5ODZVcml8U3RyaW5nYWJsZXxzdHJpbmcgJHVyaSk6IHN0cmluZyA9PiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgUmZjMzk4NlVyaSA9PiAkdXJpLT50b1Jhd1N0cmluZygpLAogICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgV2hhdFdnVXJsID0+ICR1cmktPnRvQXNjaWlTdHJpbmcoKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBzdHJfcmVwbGFjZSgnICcsICclMjAnLCAoc3RyaW5nKSAkdXJpKSwKICAgICAgICB9OwoKICAgICAgICByZXR1cm4gc2VsZjo6bmV3KAogICAgICAgICAgICBVcmlTdHJpbmc6OnJlc29sdmUoCiAgICAgICAgICAgICAgICB1cmk6ICRmb3JtYXR0ZXIoJHVyaSksCiAgICAgICAgICAgICAgICBiYXNlVXJpOiBudWxsICE9PSAkYmFzZVVyaSA/ICRmb3JtYXR0ZXIoJGJhc2VVcmkpIDogJGJhc2VVcmkKICAgICAgICAgICAgKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBERVBSRUNBVElPTiBXQVJOSU5HISBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcG9pbnQgcmVsZWFzZS4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2ZXJzaW9uIDcuNS4wCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKiBAc2VlIFVyaTo6dG9Db21wb25lbnRzKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIENvbXBvbmVudE1hcAogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcVXJpOjp0b0NvbXBvbmVudHMoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny41LjAnKV0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb21wb25lbnRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0NvbXBvbmVudHMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIERFUFJFQ0FUSU9OIFdBUk5JTkchIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBwb2ludCByZWxlYXNlLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gNy4wLjAKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqIEBzZWUgVXJpOjpuZXcoKQogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcVXJpOjpuZXcoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVN0cmluZyhTdHJpbmdhYmxlfHN0cmluZyAkdXJpID0gJycpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om5ldygkdXJpKTsKICAgIH0KCiAgICAvKioKICAgICAqIERFUFJFQ0FUSU9OIFdBUk5JTkchIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBwb2ludCByZWxlYXNlLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gNy4wLjAKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqIEBzZWUgVXJpOjpmcm9tQ29tcG9uZW50cygpCiAgICAgKgogICAgICogQHBhcmFtIElucHV0Q29tcG9uZW50TWFwICRjb21wb25lbnRzIGEgaGFzaCByZXByZXNlbnRhdGlvbiBvZiB0aGUgVVJJIHNpbWlsYXIgdG8gUEhQIHBhcnNlX3VybCBmdW5jdGlvbiByZXN1bHQKICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXFVyaTo6ZnJvbUNvbXBvbmVudHMoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbXBvbmVudHMoYXJyYXkgJGNvbXBvbmVudHMgPSBbXSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6ZnJvbUNvbXBvbmVudHMoJGNvbXBvbmVudHMpOwogICAgfQoKICAgIC8qKgogICAgICogREVQUkVDQVRJT04gV0FSTklORyEgVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHBvaW50IHJlbGVhc2UuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlfG51bGwgJGNvbnRleHQKICAgICAqCiAgICAgKiBAdGhyb3dzIE1pc3NpbmdGZWF0dXJlIElmIGV4dC9maWxlaW5mbyBpcyBub3QgaW5zdGFsbGVkCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCByZWFkYWJsZQogICAgICogQHNlZSBVcmk6OmZyb21GaWxlQ29udGVudHMoKQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gNy4wLjAKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXFVyaTo6ZnJvbURhdGFQYXRoKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21EYXRhUGF0aChzdHJpbmcgJHBhdGgsICRjb250ZXh0ID0gbnVsbCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6ZnJvbUZpbGVDb250ZW50cygkcGF0aCwgJGNvbnRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogREVQUkVDQVRJT04gV0FSTklORyEgVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHBvaW50IHJlbGVhc2UuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgU2luY2UgdmVyc2lvbiA3LjAuMAogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICogQHNlZSBVcmk6OmZyb21CYXNlVXJpKCkKICAgICAqCiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIGZyb20gYSBVUkkgYW5kIGEgQmFzZSBVUkkuCiAgICAgKgogICAgICogVGhlIHJldHVybmVkIFVSSSBtdXN0IGJlIGFic29sdXRlLgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcVXJpOjpmcm9tQmFzZVVyaSgpIGluc3RlYWQnLCBzaW5jZTonbGVhZ3VlL3VyaTo3LjAuMCcpXQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tQmFzZVVyaSgKICAgICAgICBTdHJpbmdhYmxlfFVyaUludGVyZmFjZXxTdHJpbmcgJHVyaSwKICAgICAgICBTdHJpbmdhYmxlfFVyaUludGVyZmFjZXxTdHJpbmd8bnVsbCAkYmFzZVVyaSA9IG51bGwKICAgICk6IHN0YXRpYyB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21CYXNlVXJpKCR1cmksICRiYXNlVXJpKTsKICAgIH0KCiAgICAvKioKICAgICAqIERFUFJFQ0FUSU9OIFdBUk5JTkchIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBwb2ludCByZWxlYXNlLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gNy4wLjAKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqIEBzZWUgVXJpOjpmcm9tVW5peFBhdGgoKQogICAgICoKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmcm9tIGEgVW5peCBwYXRoIHN0cmluZy4KICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXFVyaTo6ZnJvbVVuaXhQYXRoKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21Vbml4UGF0aChzdHJpbmcgJHVyaSA9ICcnKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBzZWxmOjpmcm9tVW5peFBhdGgoJHVyaSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBERVBSRUNBVElPTiBXQVJOSU5HISBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcG9pbnQgcmVsZWFzZS4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2ZXJzaW9uIDcuMC4wCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKiBAc2VlIFVyaTo6ZnJvbVdpbmRvd3NQYXRoKCkKICAgICAqCiAgICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgZnJvbSBhIGxvY2FsIFdpbmRvd3MgcGF0aCBzdHJpbmcuCiAgICAgKi8KICAgICNbRGVwcmVjYXRlZChtZXNzYWdlOid1c2UgTGVhZ3VlXFVyaVxVcmk6OmZyb21XaW5kb3dzUGF0aCgpIGluc3RlYWQnLCBzaW5jZTonbGVhZ3VlL3VyaTo3LjAuMCcpXQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tV2luZG93c1BhdGgoc3RyaW5nICR1cmkgPSAnJyk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6ZnJvbVdpbmRvd3NQYXRoKCR1cmkpOwogICAgfQoKICAgIC8qKgogICAgICogREVQUkVDQVRJT04gV0FSTklORyEgVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHBvaW50IHJlbGVhc2UuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgU2luY2UgdmVyc2lvbiA3LjAuMAogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICogQHNlZSBVcmk6Om5ldygpCiAgICAgKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBVUkkgb2JqZWN0LgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcVXJpOjpuZXcoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVVyaShQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZSAkdXJpKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBzZWxmOjpuZXcoJHVyaSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBERVBSRUNBVElPTiBXQVJOSU5HISBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcG9pbnQgcmVsZWFzZS4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2ZXJzaW9uIDcuMC4wCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKiBAc2VlIFVyaTo6ZnJvbVNlcnZlcigpCiAgICAgKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gdGhlIGVudmlyb25tZW50LgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcVXJpOjpmcm9tU2VydmVyKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21TZXJ2ZXIoYXJyYXkgJHNlcnZlcik6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6ZnJvbVNlcnZlcigkc2VydmVyKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriInfo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgRGVwcmVjYXRlZDsKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlIGFzIFBzcjdVcmlJbnRlcmZhY2U7CgovKioKICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA3LjAuMAogKiBAY29kZUNvdmVyYWdlSWdub3JlCiAqIEBzZWUgQmFzZVVyaQogKi8KZmluYWwgY2xhc3MgVXJpSW5mbwp7CiAgICAvKioKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBVUkkgcmVwcmVzZW50cyBhbiBhYnNvbHV0ZSBVUkkuCiAgICAgKi8KICAgICNbRGVwcmVjYXRlZChtZXNzYWdlOid1c2UgTGVhZ3VlXFVyaVxCYXNlVXJpOjppc0Fic29sdXRlKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQWJzb2x1dGUoUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gQmFzZVVyaTo6ZnJvbSgkdXJpKS0+aXNBYnNvbHV0ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogVGVsbCB3aGV0aGVyIHRoZSBVUkkgcmVwcmVzZW50cyBhIG5ldHdvcmsgcGF0aC4KICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXEJhc2VVcmk6OmlzTmV0d29ya1BhdGgoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNOZXR3b3JrUGF0aChQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZSAkdXJpKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBCYXNlVXJpOjpmcm9tKCR1cmkpLT5pc05ldHdvcmtQYXRoKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBVUkkgcmVwcmVzZW50cyBhbiBhYnNvbHV0ZSBwYXRoLgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcQmFzZVVyaTo6aXNBYnNvbHV0ZVBhdGgoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBYnNvbHV0ZVBhdGgoUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gQmFzZVVyaTo6ZnJvbSgkdXJpKS0+aXNBYnNvbHV0ZVBhdGgoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGwgd2hldGhlciB0aGUgVVJJIHJlcHJlc2VudHMgYSByZWxhdGl2ZSBwYXRoLgogICAgICoKICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXEJhc2VVcmk6OmlzUmVsYXRpdmVQYXRoKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUmVsYXRpdmVQYXRoKFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlICR1cmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEJhc2VVcmk6OmZyb20oJHVyaSktPmlzUmVsYXRpdmVQYXRoKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIGJvdGggVVJJIHJlZmVycyB0byB0aGUgc2FtZSBkb2N1bWVudC4KICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXEJhc2VVcmk6OmlzU2FtZURvY3VtZW50KCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzU2FtZURvY3VtZW50KFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlICR1cmksIFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlICRiYXNlVXJpKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBCYXNlVXJpOjpmcm9tKCRiYXNlVXJpKS0+aXNTYW1lRG9jdW1lbnQoJHVyaSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBVUkkgb3JpZ2luIHByb3BlcnR5IGFzIGRlZmluZWQgYnkgV0hBVFdHIFVSTCBsaXZpbmcgc3RhbmRhcmQuCiAgICAgKgogICAgICoge0BzZWUgaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNvcmlnaW59CiAgICAgKgogICAgICogRm9yIFVSSSB3aXRob3V0IGEgc3BlY2lhbCBzY2hlbWUgdGhlIG1ldGhvZCByZXR1cm5zIG51bGwKICAgICAqIEZvciBVUkkgd2l0aCB0aGUgZmlsZSBzY2hlbWUgdGhlIG1ldGhvZCB3aWxsIHJldHVybiBudWxsIChhcyB0aGlzIGlzIGxlZnQgdG8gdGhlIGltcGxlbWVudGF0aW9uIGRlY2lzaW9uKQogICAgICogRm9yIFVSSSB3aXRoIGEgc3BlY2lhbCBzY2hlbWUgdGhlIG1ldGhvZCByZXR1cm5zIHRoZSBzY2hlbWUgZm9sbG93ZWQgYnkgaXRzIGF1dGhvcml0eSAod2l0aG91dCB0aGUgdXNlcmluZm8gcGFydCkKICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXEJhc2VVcmk6Om9yaWdpbigpIGluc3RlYWQnLCBzaW5jZTonbGVhZ3VlL3VyaTo3LjAuMCcpXQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRPcmlnaW4oUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UgJHVyaSk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gQmFzZVVyaTo6ZnJvbSgkdXJpKS0+b3JpZ2luKCk/LT5fX3RvU3RyaW5nKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZWxscyB3aGV0aGVyIHR3byBVUkkgZG8gbm90IHNoYXJlIHRoZSBzYW1lIG9yaWdpbi4KICAgICAqCiAgICAgKiBAc2VlIFVyaUluZm86OmdldE9yaWdpbigpCiAgICAgKi8KICAgICNbRGVwcmVjYXRlZChtZXNzYWdlOid1c2UgTGVhZ3VlXFVyaVxCYXNlVXJpOjppc0Nyb3NzT3JpZ2luKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQ3Jvc3NPcmlnaW4oUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UgJHVyaSwgUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UgJGJhc2VVcmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEJhc2VVcmk6OmZyb20oJGJhc2VVcmkpLT5pc0Nyb3NzT3JpZ2luKCR1cmkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriResolver.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgRGVwcmVjYXRlZDsKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlIGFzIFBzcjdVcmlJbnRlcmZhY2U7CgovKioKICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA3LjAuMAogKiBAY29kZUNvdmVyYWdlSWdub3JlCiAqIEBzZWUgQmFzZVVyaQogKi8KZmluYWwgY2xhc3MgVXJpUmVzb2x2ZXIKewogICAgLyoqCiAgICAgKiBSZXNvbHZlcyBhIFVSSSBhZ2FpbnN0IGEgYmFzZSBVUkkgdXNpbmcgUkZDMzk4NiBydWxlcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIHN1Ym1pdHRlZCBVUkkgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGEgVVJJIGluc3RhbmNlIG9mIHRoZSBzYW1lIHR5cGUgdGhhdCBjb250YWlucyB0aGUgYXBwbGllZCBtb2RpZmljYXRpb25zLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgdHJhbnNwYXJlbnQgd2hlbiBkZWFsaW5nIHdpdGggZXJyb3IgYW5kIGV4Y2VwdGlvbnMuCiAgICAgKiBJdCBNVVNUIG5vdCBhbHRlciBvciBzaWxlbmNlIHRoZW0gYXBhcnQgZnJvbSB2YWxpZGF0aW5nIGl0cyBvd24gcGFyYW1ldGVycy4KICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXEJhc2VVcmk6OnJlc29sdmUoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZShQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZSAkdXJpLCBQc3I3VXJpSW50ZXJmYWNlfFVyaUludGVyZmFjZSAkYmFzZVVyaSk6IFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIEJhc2VVcmk6OmZyb20oJGJhc2VVcmkpLT5yZXNvbHZlKCR1cmkpLT5nZXRVcmkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlbGF0aXZpemVzIGEgVVJJIGFjY29yZGluZyB0byBhIGJhc2UgVVJJLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgc3VibWl0dGVkIFVSSSBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYSBVUkkgaW5zdGFuY2Ugb2YgdGhlIHNhbWUgdHlwZSB0aGF0IGNvbnRhaW5zIHRoZSBhcHBsaWVkIG1vZGlmaWNhdGlvbnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSB0cmFuc3BhcmVudCB3aGVuIGRlYWxpbmcgd2l0aCBlcnJvciBhbmQgZXhjZXB0aW9ucy4KICAgICAqIEl0IE1VU1Qgbm90IGFsdGVyIG9yIHNpbGVuY2UgdGhlbSBhcGFydCBmcm9tIHZhbGlkYXRpbmcgaXRzIG93biBwYXJhbWV0ZXJzLgogICAgICovCiAgICAjW0RlcHJlY2F0ZWQobWVzc2FnZTondXNlIExlYWd1ZVxVcmlcQmFzZVVyaTo6cmVsYXRpdml6ZSgpIGluc3RlYWQnLCBzaW5jZTonbGVhZ3VlL3VyaTo3LjAuMCcpXQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWxhdGl2aXplKFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlICR1cmksIFBzcjdVcmlJbnRlcmZhY2V8VXJpSW50ZXJmYWNlICRiYXNlVXJpKTogUHNyN1VyaUludGVyZmFjZXxVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gQmFzZVVyaTo6ZnJvbSgkYmFzZVVyaSktPnJlbGF0aXZpemUoJHVyaSktPmdldFVyaSgpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriScheme.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgVmFsdWVFcnJvcjsKCi8qCiAqICBTdXBwb3J0ZWQgc2NoZW1lcyBhbmQgY29ycmVzcG9uZGluZyBkZWZhdWx0IHBvcnQuCiAqCiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1oeXBlci9oeXBlcmxpbmsvYmxvYi9tYXN0ZXIvc3JjL2h5cGVybGluay9fdXJsLnB5IGZvciB0aGUgY3VyYXRpbmcgbGlzdCBkZWZpbml0aW9uCiAqIEBzZWUgaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvdXJpLXNjaGVtZXMvdXJpLXNjaGVtZXMueGh0bWwKICogQHNlZSBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9zZXJ2aWNlLW5hbWVzLXBvcnQtbnVtYmVycy9zZXJ2aWNlLW5hbWVzLXBvcnQtbnVtYmVycy54aHRtbAogKi8KZW51bSBVcmlTY2hlbWU6IHN0cmluZwp7CiAgICBjYXNlIEFib3V0ID0gJ2Fib3V0JzsKICAgIGNhc2UgQWNhcCA9ICdhY2FwJzsKICAgIGNhc2UgQml0Y29pbiA9ICdiaXRjb2luJzsKICAgIGNhc2UgR2VvID0gJ2dlbyc7CiAgICBjYXNlIEJsb2IgPSAnYmxvYic7CiAgICBjYXNlIEFmcCA9ICdhZnAnOwogICAgY2FzZSBEYXRhID0gJ2RhdGEnOwogICAgY2FzZSBEaWN0ID0gJ2RpY3QnOwogICAgY2FzZSBEbnMgPSAnZG5zJzsKICAgIGNhc2UgRmlsZSA9ICdmaWxlJzsKICAgIGNhc2UgRnRwID0gJ2Z0cCc7CiAgICBjYXNlIEdpdCA9ICdnaXQnOwogICAgY2FzZSBHb3BoZXIgPSAnZ29waGVyJzsKICAgIGNhc2UgSHR0cCA9ICdodHRwJzsKICAgIGNhc2UgSHR0cHMgPSAnaHR0cHMnOwogICAgY2FzZSBJbWFwID0gJ2ltYXAnOwogICAgY2FzZSBJbWFwcyA9ICdpbWFwcyc7CiAgICBjYXNlIElwcCA9ICdpcHAnOwogICAgY2FzZSBJcHBzID0gJ2lwcHMnOwogICAgY2FzZSBJcmMgPSAnaXJjJzsKICAgIGNhc2UgSXJjcyA9ICdpcmNzJzsKICAgIGNhc2UgSmF2YXNjcmlwdCA9ICdqYXZhc2NyaXB0JzsKICAgIGNhc2UgTGRhcCA9ICdsZGFwJzsKICAgIGNhc2UgTGRhcHMgPSAnbGRhcHMnOwogICAgY2FzZSBNYWduZXQgPSAnbWFnbmV0JzsKICAgIGNhc2UgTWFpbHRvID0gJ21haWx0byc7CiAgICBjYXNlIE1tcyA9ICdtbXMnOwogICAgY2FzZSBNc3JwID0gJ21zcnAnOwogICAgY2FzZSBNc3JwcyA9ICdtc3Jwcyc7CiAgICBjYXNlIE10cXAgPSAnbXRxcCc7CiAgICBjYXNlIE5ld3MgPSAnbmV3cyc7CiAgICBjYXNlIE5mcyA9ICduZnMnOwogICAgY2FzZSBObnRwID0gJ25udHAnOwogICAgY2FzZSBObnRwcyA9ICdubnRwcyc7CiAgICBjYXNlIFBrY3MxMSA9ICdwa2NzMTEnOwogICAgY2FzZSBQb3AgPSAncG9wJzsKICAgIGNhc2UgUHJvc3Blcm8gPSAncHJvc3Blcm8nOwogICAgY2FzZSBSZWRpcyA9ICdyZWRpcyc7CiAgICBjYXNlIFJzeW5jID0gJ3JzeW5jJzsKICAgIGNhc2UgUnRzcCA9ICdydHNwJzsKICAgIGNhc2UgUnRzcHMgPSAncnRzcHMnOwogICAgY2FzZSBSdHNwdSA9ICdydHNwdSc7CiAgICBjYXNlIFNmdHAgPSAnc2Z0cCc7CiAgICBjYXNlIFdzcyA9ICd3c3MnOwogICAgY2FzZSBXcyA9ICd3cyc7CiAgICBjYXNlIFNpcCA9ICdzaXAnOwogICAgY2FzZSBTaXBzID0gJ3NpcHMnOwogICAgY2FzZSBTbWIgPSAnc21iJzsKICAgIGNhc2UgU210cCA9ICdzbXRwJzsKICAgIGNhc2UgU25tcCA9ICdzbm1wJzsKICAgIGNhc2UgU3NoID0gJ3NzaCc7CiAgICBjYXNlIFN0ZWFtID0gJ3N0ZWFtJzsKICAgIGNhc2UgU3ZuID0gJ3N2bic7CiAgICBjYXNlIFRlbCA9ICd0ZWwnOwogICAgY2FzZSBUZWxuZXQgPSAndGVsbmV0JzsKICAgIGNhc2UgVG4zMjcwID0gJ3RuMzI3MCc7CiAgICBjYXNlIFVybiA9ICd1cm4nOwogICAgY2FzZSBWZW50cmlsbyA9ICd2ZW50cmlsbyc7CiAgICBjYXNlIFZuYyA9ICd2bmMnOwogICAgY2FzZSBXYWlzID0gJ3dhaXMnOwogICAgY2FzZSBYbXBwID0gJ3htcHAnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBwb3J0KCk6ID9pbnQKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCR0aGlzKSB7CiAgICAgICAgICAgIHNlbGY6OkFjYXAgPT4gNjc0LAogICAgICAgICAgICBzZWxmOjpBZnAgPT4gNTQ4LAogICAgICAgICAgICBzZWxmOjpEaWN0ID0+IDI2MjgsCiAgICAgICAgICAgIHNlbGY6OkRucyA9PiA1MywKICAgICAgICAgICAgc2VsZjo6RnRwID0+IDIxLAogICAgICAgICAgICBzZWxmOjpIdHRwLCBzZWxmOjpXcyA9PiA4MCwKICAgICAgICAgICAgc2VsZjo6SHR0cHMsIHNlbGY6OldzcyA9PiA0NDMsCiAgICAgICAgICAgIHNlbGY6OkdpdCA9PiA5NDE4LAogICAgICAgICAgICBzZWxmOjpHb3BoZXIgPT4gNzAsCiAgICAgICAgICAgIHNlbGY6OkltYXAgPT4gMTQzLAogICAgICAgICAgICBzZWxmOjpJbWFwcyA9PiA5OTMsCiAgICAgICAgICAgIHNlbGY6OklwcCwgc2VsZjo6SXBwcyA9PiA2MzEsCiAgICAgICAgICAgIHNlbGY6OklyYyA9PiAxOTQsCiAgICAgICAgICAgIHNlbGY6OklyY3MgPT4gNjY5NywKICAgICAgICAgICAgc2VsZjo6TGRhcCA9PiAzODksCiAgICAgICAgICAgIHNlbGY6OkxkYXBzID0+IDYzNiwKICAgICAgICAgICAgc2VsZjo6TW1zID0+IDE3NTUsCiAgICAgICAgICAgIHNlbGY6Ok1zcnAsIHNlbGY6Ok1zcnBzID0+IDI4NTUsCiAgICAgICAgICAgIHNlbGY6Ok10cXAgPT4gMTAzOCwKICAgICAgICAgICAgc2VsZjo6TmZzID0+IDExMSwKICAgICAgICAgICAgc2VsZjo6Tm50cCA9PiAxMTksCiAgICAgICAgICAgIHNlbGY6Ok5udHBzID0+IDU2MywKICAgICAgICAgICAgc2VsZjo6UG9wID0+IDExMCwKICAgICAgICAgICAgc2VsZjo6UHJvc3Blcm8gPT4gMTUyNSwKICAgICAgICAgICAgc2VsZjo6UmVkaXMgPT4gNjM3OSwKICAgICAgICAgICAgc2VsZjo6UnN5bmMgPT4gODczLAogICAgICAgICAgICBzZWxmOjpSdHNwID0+IDU1NCwKICAgICAgICAgICAgc2VsZjo6UnRzcHMgPT4gMzIyLAogICAgICAgICAgICBzZWxmOjpSdHNwdSA9PiA1MDA1LAogICAgICAgICAgICBzZWxmOjpTZnRwLCBzZWxmOjpTc2ggPT4gMjIsCiAgICAgICAgICAgIHNlbGY6OlNtYiA9PiA0NDUsCiAgICAgICAgICAgIHNlbGY6OlNtdHAgPT4gMjUsCiAgICAgICAgICAgIHNlbGY6OlNubXAgPT4gMTYxLAogICAgICAgICAgICBzZWxmOjpTdm4gPT4gMzY5MCwKICAgICAgICAgICAgc2VsZjo6VGVsbmV0LCBzZWxmOjpUbjMyNzAgPT4gMjMsCiAgICAgICAgICAgIHNlbGY6OlZlbnRyaWxvID0+IDM3ODQsCiAgICAgICAgICAgIHNlbGY6OlZuYyA9PiA1OTAwLAogICAgICAgICAgICBzZWxmOjpXYWlzID0+IDIxMCwKICAgICAgICAgICAgc2VsZjo6WG1wcCA9PiA4MCwKICAgICAgICAgICAgZGVmYXVsdCA9PiBudWxsLAogICAgICAgIH07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHR5cGUoKTogU2NoZW1lVHlwZQogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMpIHsKICAgICAgICAgICAgc2VsZjo6VXJuLAogICAgICAgICAgICBzZWxmOjpBYm91dCwKICAgICAgICAgICAgc2VsZjo6Qml0Y29pbiwKICAgICAgICAgICAgc2VsZjo6QmxvYiwKICAgICAgICAgICAgc2VsZjo6RGF0YSwKICAgICAgICAgICAgc2VsZjo6R2VvLAogICAgICAgICAgICBzZWxmOjpKYXZhc2NyaXB0LAogICAgICAgICAgICBzZWxmOjpNYWduZXQsCiAgICAgICAgICAgIHNlbGY6Ok1haWx0bywKICAgICAgICAgICAgc2VsZjo6UGtjczExLAogICAgICAgICAgICBzZWxmOjpTaXAsCiAgICAgICAgICAgIHNlbGY6OlNpcHMsCiAgICAgICAgICAgIHNlbGY6OlRlbCA9PiBTY2hlbWVUeXBlOjpPcGFxdWUsCiAgICAgICAgICAgIHNlbGY6OkZpbGUgPT4gU2NoZW1lVHlwZTo6SGllcmFyY2hpY2FsLAogICAgICAgICAgICBzZWxmOjpOZXdzID0+IFNjaGVtZVR5cGU6OlVua25vd24sCiAgICAgICAgICAgIGRlZmF1bHQgPT4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgICAgIG51bGwgIT09ICR0aGlzLT5wb3J0KCkgPT4gU2NoZW1lVHlwZTo6SGllcmFyY2hpY2FsLAogICAgICAgICAgICAgICAgZGVmYXVsdCA9PiBTY2hlbWVUeXBlOjpVbmtub3duLAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzV2hhdFdnU3BlY2lhbCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcykgewogICAgICAgICAgICBzZWxmOjpGdHAsCiAgICAgICAgICAgIHNlbGY6Okh0dHAsCiAgICAgICAgICAgIHNlbGY6Okh0dHBzLAogICAgICAgICAgICBzZWxmOjpXcywKICAgICAgICAgICAgc2VsZjo6V3NzID0+IHRydWUsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gZmFsc2UsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxzZWxmPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21Qb3J0KD9pbnQgJHBvcnQpOiBhcnJheQogICAgewogICAgICAgIG51bGwgPT09ICRwb3J0IHx8IDAgPD0gJHBvcnQgfHwgdGhyb3cgbmV3IFZhbHVlRXJyb3IoJ1RoZSBzdWJtaXR0ZWQgcG9ydCBjYW5ub3QgYmUgbmVnYXRpdmUuJyk7CgogICAgICAgIHN0YXRpYyAkcmV2ZXJzZSA9IFtdOwogICAgICAgIGlmIChbXSA9PT0gJHJldmVyc2UpIHsKICAgICAgICAgICAgZm9yZWFjaCAoc2VsZjo6Y2FzZXMoKSBhcyAkY2FzZSkgewogICAgICAgICAgICAgICAgJGRlZmF1bHRQb3J0ID0gJGNhc2UtPnBvcnQoKTsKICAgICAgICAgICAgICAgIGlmIChudWxsID09PSAkZGVmYXVsdFBvcnQpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZXZlcnNlWyRkZWZhdWx0UG9ydF0gPz89IFtdOwogICAgICAgICAgICAgICAgJHJldmVyc2VbJGRlZmF1bHRQb3J0XVtdID0gJGNhc2U7CgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJldmVyc2VbJHBvcnRdID8/IFtdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBidWlsZGVyKCk6IEJ1aWxkZXIKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoc2NoZW1lOiAkdGhpcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriTemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIERlcHJlY2F0ZWQ7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlFeGNlcHRpb247CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcTWlzc2luZ0ZlYXR1cmU7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBMZWFndWVcVXJpXFVyaVRlbXBsYXRlXFRlbXBsYXRlOwp1c2UgTGVhZ3VlXFVyaVxVcmlUZW1wbGF0ZVxUZW1wbGF0ZUNhbk5vdEJlRXhwYW5kZWQ7CnVzZSBMZWFndWVcVXJpXFVyaVRlbXBsYXRlXFZhcmlhYmxlQmFnOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlGYWN0b3J5SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2UgYXMgUHNyN1VyaUludGVyZmFjZTsKdXNlIFN0cmluZ2FibGU7CnVzZSBVcmlcSW52YWxpZFVyaUV4Y2VwdGlvbjsKdXNlIFVyaVxSZmMzOTg2XFVyaSBhcyBSZmMzOTg2VXJpOwp1c2UgVXJpXFdoYXRXZ1xJbnZhbGlkVXJsRXhjZXB0aW9uOwp1c2UgVXJpXFdoYXRXZ1xVcmwgYXMgV2hhdFdnVXJsOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2ZpbGxfa2V5czsKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBmdW5jdGlvbiBjbGFzc19leGlzdHM7CgovKioKICogRGVmaW5lcyB0aGUgVVJJIFRlbXBsYXRlIHN5bnRheCBhbmQgdGhlIHByb2Nlc3MgZm9yIGV4cGFuZGluZyBhIFVSSSBUZW1wbGF0ZSBpbnRvIGEgVVJJIHJlZmVyZW5jZS4KICoKICogQGxpbmsgICAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1NzAKICogQHBhY2thZ2UgTGVhZ3VlXFVyaQogKiBAYXV0aG9yICBJZ25hY2UgTnlhbWFnYW5hIEJ1dGVyYSA8bnlhbXNwcm9kQGdtYWlsLmNvbT4KICogQHNpbmNlICAgNi4xLjAKICoKICogQHBocHN0YW4taW1wb3J0LXR5cGUgSW5wdXRWYWx1ZSBmcm9tIFZhcmlhYmxlQmFnCiAqLwpmaW5hbCBjbGFzcyBVcmlUZW1wbGF0ZSBpbXBsZW1lbnRzIFN0cmluZ2FibGUKewogICAgcHJpdmF0ZSByZWFkb25seSBUZW1wbGF0ZSAkdGVtcGxhdGU7CiAgICBwcml2YXRlIHJlYWRvbmx5IFZhcmlhYmxlQmFnICRkZWZhdWx0VmFyaWFibGVzOwoKICAgIC8qKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgdGVtcGxhdGUgc3ludGF4IGlzIGludmFsaWQKICAgICAqIEB0aHJvd3MgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkIGlmIHRoZSB0ZW1wbGF0ZSBvciB0aGUgdmFyaWFibGVzIGFyZSBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nICR0ZW1wbGF0ZSwgaXRlcmFibGUgJGRlZmF1bHRWYXJpYWJsZXMgPSBbXSkKICAgIHsKICAgICAgICAkdGhpcy0+dGVtcGxhdGUgPSAkdGVtcGxhdGUgaW5zdGFuY2VvZiBUZW1wbGF0ZSA/ICR0ZW1wbGF0ZSA6IFRlbXBsYXRlOjpuZXcoJHRlbXBsYXRlKTsKICAgICAgICAkdGhpcy0+ZGVmYXVsdFZhcmlhYmxlcyA9ICR0aGlzLT5maWx0ZXJWYXJpYWJsZXMoJGRlZmF1bHRWYXJpYWJsZXMpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZmlsdGVyVmFyaWFibGVzKGl0ZXJhYmxlICR2YXJpYWJsZXMpOiBWYXJpYWJsZUJhZwogICAgewogICAgICAgIGlmICghJHZhcmlhYmxlcyBpbnN0YW5jZW9mIFZhcmlhYmxlQmFnKSB7CiAgICAgICAgICAgICR2YXJpYWJsZXMgPSBuZXcgVmFyaWFibGVCYWcoJHZhcmlhYmxlcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhcmlhYmxlcwogICAgICAgICAgICAtPmZpbHRlcihmbiAoJHZhbHVlLCBzdHJpbmd8aW50ICRuYW1lKSA9PiBhcnJheV9rZXlfZXhpc3RzKAogICAgICAgICAgICAgICAgJG5hbWUsCiAgICAgICAgICAgICAgICBhcnJheV9maWxsX2tleXMoJHRoaXMtPnRlbXBsYXRlLT52YXJpYWJsZU5hbWVzLCAxKQogICAgICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgVXJpVGVtcGxhdGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGVtcGxhdGUtPnZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZGlzdGluY3QgdmFyaWFibGVzIHBsYWNlaG9sZGVycyB1c2VkIGluIHRoZSB0ZW1wbGF0ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhcmlhYmxlTmFtZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRlbXBsYXRlLT52YXJpYWJsZU5hbWVzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIElucHV0VmFsdWU+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZWZhdWx0VmFyaWFibGVzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3RvX2FycmF5KCR0aGlzLT5kZWZhdWx0VmFyaWFibGVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgdXBkYXRlZCBkZWZhdWx0IHZhcmlhYmxlcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIG1vZGlmaWVkIGRlZmF1bHQgdmFyaWFibGVzLgogICAgICoKICAgICAqIElmIHByZXNlbnQsIHZhcmlhYmxlcyB3aG9zZSBuYW1lIGlzIG5vdCBwYXJ0IG9mIHRoZSBjdXJyZW50IHRlbXBsYXRlCiAgICAgKiBwb3NzaWJsZSB2YXJpYWJsZSBuYW1lcyBhcmUgcmVtb3ZlZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFRlbXBsYXRlQ2FuTm90QmVFeHBhbmRlZCBpZiB0aGUgdmFyaWFibGVzIGFyZSBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoRGVmYXVsdFZhcmlhYmxlcyhpdGVyYWJsZSAkZGVmYXVsdFZhcmlhYmxlcyk6IHNlbGYKICAgIHsKICAgICAgICAkZGVmYXVsdFZhcmlhYmxlcyA9ICR0aGlzLT5maWx0ZXJWYXJpYWJsZXMoJGRlZmF1bHRWYXJpYWJsZXMpOwogICAgICAgIGlmICgkdGhpcy0+ZGVmYXVsdFZhcmlhYmxlcy0+ZXF1YWxzKCRkZWZhdWx0VmFyaWFibGVzKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHRoaXMtPnRlbXBsYXRlLCAkZGVmYXVsdFZhcmlhYmxlcyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB0ZW1wbGF0ZUV4cGFuZGVkKGl0ZXJhYmxlICR2YXJpYWJsZXMgPSBbXSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGVtcGxhdGUtPmV4cGFuZCgkdGhpcy0+ZmlsdGVyVmFyaWFibGVzKCR2YXJpYWJsZXMpLT5yZXBsYWNlKCR0aGlzLT5kZWZhdWx0VmFyaWFibGVzKSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB0ZW1wbGF0ZUV4cGFuZGVkT3JGYWlsKGl0ZXJhYmxlICR2YXJpYWJsZXMgPSBbXSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGVtcGxhdGUtPmV4cGFuZE9yRmFpbCgkdGhpcy0+ZmlsdGVyVmFyaWFibGVzKCR2YXJpYWJsZXMpLT5yZXBsYWNlKCR0aGlzLT5kZWZhdWx0VmFyaWFibGVzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFRlbXBsYXRlQ2FuTm90QmVFeHBhbmRlZCBpZiB0aGUgdmFyaWFibGVzIGFyZSBpbnZhbGlkCiAgICAgKiBAdGhyb3dzIFVyaUV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nIGV4cGFuc2lvbiBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgVXJpSW50ZXJmYWNlIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleHBhbmQoaXRlcmFibGUgJHZhcmlhYmxlcyA9IFtdLCBSZmMzOTg2VXJpfFdoYXRXZ1VybHxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmkgPSBudWxsKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGV4cGFuZGVkID0gJHRoaXMtPnRlbXBsYXRlRXhwYW5kZWQoJHZhcmlhYmxlcyk7CgogICAgICAgIHJldHVybiBudWxsID09PSAkYmFzZVVyaSA/IFVyaTo6bmV3KCRleHBhbmRlZCkgOiAoVXJpOjpwYXJzZSgkZXhwYW5kZWQsICRiYXNlVXJpKSA/PyB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1VuYWJsZSB0byBleHBhbmQgVVJJJykpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBNaXNzaW5nRmVhdHVyZSBpZiBubyBVcmlcUmZjMzk4NlxVcmkgY2xhc3MgaXMgZm91bmQKICAgICAqIEB0aHJvd3MgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkIGlmIHRoZSB2YXJpYWJsZXMgYXJlIGludmFsaWQKICAgICAqIEB0aHJvd3MgSW52YWxpZFVyaUV4Y2VwdGlvbiBpZiB0aGUgYmFzZSBVUkkgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIFVyaVxSZmMzOTg2XFVyaSBpbnN0YW5jZQogICAgICogQHRocm93cyBJbnZhbGlkVXJpRXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmcgZXhwYW5zaW9uIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVcmlcUmZjMzk4NlxVcmkgaW5zdGFuY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZFRvVXJpKGl0ZXJhYmxlICR2YXJpYWJsZXMgPSBbXSwgUmZjMzk4NlVyaXxXaGF0V2dVcmx8QmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRiYXNlVXJpID0gbnVsbCk6IFJmYzM5ODZVcmkKICAgIHsKICAgICAgICBjbGFzc19leGlzdHMoUmZjMzk4NlVyaTo6Y2xhc3MpIHx8IHRocm93IG5ldyBNaXNzaW5nRmVhdHVyZSgnU3VwcG9ydCBmb3IgJy5SZmMzOTg2VXJpOjpjbGFzcy4nIHJlcXVpcmVzIFBIUDguNSsgb3IgYSBwb2x5ZmlsbC4gUnVuICJjb21wb3NlciByZXF1aXJlIGxlYWd1ZS91cmktcG9seWZpbGwiIG9yIHVzZSB5b3Ugb3duIHBvbHlmaWxsLicpOwoKICAgICAgICByZXR1cm4gbmV3IFJmYzM5ODZVcmkoJHRoaXMtPnRlbXBsYXRlRXhwYW5kZWQoJHZhcmlhYmxlcyksICR0aGlzLT5uZXdSZmMzOTg2VXJpKCRiYXNlVXJpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIE1pc3NpbmdGZWF0dXJlIGlmIG5vIFVyaVxXaGF0d2dcVXJsIGNsYXNzIGlzIGZvdW5kCiAgICAgKiBAdGhyb3dzIFRlbXBsYXRlQ2FuTm90QmVFeHBhbmRlZCBpZiB0aGUgdmFyaWFibGVzIGFyZSBpbnZhbGlkCiAgICAgKiBAdGhyb3dzIEludmFsaWRVcmxFeGNlcHRpb24gaWYgdGhlIGJhc2UgVVJJIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVcmlcV2hhdHdnXFVybCBpbnN0YW5jZQogICAgICogQHRocm93cyBJbnZhbGlkVXJsRXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmcgZXhwYW5zaW9uIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVcmlcV2hhdHdnXFVybCBpbnN0YW5jZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwYW5kVG9VcmwoaXRlcmFibGUgJHZhcmlhYmxlcyA9IFtdLCBSZmMzOTg2VXJpfFdoYXRXZ1VybHxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmwgPSBudWxsLCBhcnJheXxudWxsICYkZXJyb3JzID0gW10pOiBXaGF0V2dVcmwKICAgIHsKICAgICAgICBjbGFzc19leGlzdHMoV2hhdFdnVXJsOjpjbGFzcykgfHwgdGhyb3cgbmV3IE1pc3NpbmdGZWF0dXJlKCdTdXBwb3J0IGZvciAnLldoYXRXZ1VybDo6Y2xhc3MuJyByZXF1aXJlcyBQSFA4LjUrIG9yIGEgcG9seWZpbGwuIFJ1biAiY29tcG9zZXIgcmVxdWlyZSBsZWFndWUvdXJpLXBvbHlmaWxsIiBvciB1c2UgeW91IG93biBwb2x5ZmlsbC4nKTsKCiAgICAgICAgcmV0dXJuIG5ldyBXaGF0V2dVcmwoJHRoaXMtPnRlbXBsYXRlRXhwYW5kZWQoJHZhcmlhYmxlcyksICR0aGlzLT5uZXdXaGF0V2dVcmwoJGJhc2VVcmwpLCAkZXJyb3JzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkIGlmIHRoZSB2YXJpYWJsZXMgYXJlIGludmFsaWQKICAgICAqIEB0aHJvd3MgVXJpRXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmcgZXhwYW5zaW9uIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVcmlJbnRlcmZhY2UgaW5zdGFuY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZFRvUHNyN1VyaSgKICAgICAgICBpdGVyYWJsZSAkdmFyaWFibGVzID0gW10sCiAgICAgICAgUmZjMzk4NlVyaXxXaGF0V2dVcmx8QmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRiYXNlVXJsID0gbnVsbCwKICAgICAgICBVcmlGYWN0b3J5SW50ZXJmYWNlICR1cmlGYWN0b3J5ID0gbmV3IEh0dHBGYWN0b3J5KCkKICAgICk6IFBzcjdVcmlJbnRlcmZhY2UgewogICAgICAgICR1cmlTdHJpbmcgPSAkdGhpcy0+dGVtcGxhdGVFeHBhbmRlZE9yRmFpbCgkdmFyaWFibGVzKTsKCiAgICAgICAgcmV0dXJuICR1cmlGYWN0b3J5LT5jcmVhdGVVcmkoCiAgICAgICAgICAgIG51bGwgPT09ICRiYXNlVXJsCiAgICAgICAgICAgID8gJHVyaVN0cmluZwogICAgICAgICAgICA6IFVyaVN0cmluZzo6cmVzb2x2ZSgkdXJpU3RyaW5nLCBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgJGJhc2VVcmwgaW5zdGFuY2VvZiBSZmMzOTg2VXJpID0+ICRiYXNlVXJsLT50b1Jhd1N0cmluZygpLAogICAgICAgICAgICAgICAgJGJhc2VVcmwgaW5zdGFuY2VvZiBXaGF0V2dVcmwgPT4gJGJhc2VVcmwtPnRvVW5pY29kZVN0cmluZygpLAogICAgICAgICAgICAgICAgZGVmYXVsdCA9PiAkYmFzZVVybCwKICAgICAgICAgICAgfSkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBUZW1wbGF0ZUNhbk5vdEJlRXhwYW5kZWQgaWYgdGhlIHZhcmlhYmxlcyBhcmUgaW52YWxpZCBvciBtaXNzaW5nCiAgICAgKiBAdGhyb3dzIFVyaUV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nIGV4cGFuc2lvbiBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgVXJpSW50ZXJmYWNlIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleHBhbmRPckZhaWwoaXRlcmFibGUgJHZhcmlhYmxlcyA9IFtdLCBSZmMzOTg2VXJpfFdoYXRXZ1VybHxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmkgPSBudWxsKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGV4cGFuZGVkID0gJHRoaXMtPnRlbXBsYXRlRXhwYW5kZWRPckZhaWwoJHZhcmlhYmxlcyk7CgogICAgICAgIHJldHVybiBudWxsID09PSAkYmFzZVVyaSA/IFVyaTo6bmV3KCRleHBhbmRlZCkgOiAoVXJpOjpwYXJzZSgkZXhwYW5kZWQsICRiYXNlVXJpKSA/PyB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1VuYWJsZSB0byBleHBhbmQgVVJJJykpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBNaXNzaW5nRmVhdHVyZSBpZiBubyBVcmlcUmZjMzk4NlxVcmkgY2xhc3MgaXMgZm91bmQKICAgICAqIEB0aHJvd3MgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkIGlmIHRoZSB2YXJpYWJsZXMgYXJlIGludmFsaWQKICAgICAqIEB0aHJvd3MgSW52YWxpZFVyaUV4Y2VwdGlvbiBpZiB0aGUgYmFzZSBVUkkgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIFVyaVxSZmMzOTg2XFVyaSBpbnN0YW5jZQogICAgICogQHRocm93cyBJbnZhbGlkVXJpRXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmcgZXhwYW5zaW9uIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVcmlcUmZjMzk4NlxVcmkgaW5zdGFuY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZFRvVXJpT3JGYWlsKGl0ZXJhYmxlICR2YXJpYWJsZXMgPSBbXSwgUmZjMzk4NlVyaXxXaGF0V2dVcmx8QmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRiYXNlVXJpID0gbnVsbCk6IFJmYzM5ODZVcmkKICAgIHsKICAgICAgICBjbGFzc19leGlzdHMoUmZjMzk4NlVyaTo6Y2xhc3MpIHx8IHRocm93IG5ldyBNaXNzaW5nRmVhdHVyZSgnU3VwcG9ydCBmb3IgJy5SZmMzOTg2VXJpOjpjbGFzcy4nIHJlcXVpcmVzIFBIUDguNSsgb3IgYSBwb2x5ZmlsbC4gUnVuICJjb21wb3NlciByZXF1aXJlIGxlYWd1ZS91cmktcG9seWZpbGwiIG9yIHVzZSB5b3Ugb3duIHBvbHlmaWxsLicpOwoKICAgICAgICByZXR1cm4gbmV3IFJmYzM5ODZVcmkoJHRoaXMtPnRlbXBsYXRlRXhwYW5kZWRPckZhaWwoJHZhcmlhYmxlcyksICR0aGlzLT5uZXdSZmMzOTg2VXJpKCRiYXNlVXJpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIE1pc3NpbmdGZWF0dXJlIGlmIG5vIFVyaVxXaGF0d2dcVXJsIGNsYXNzIGlzIGZvdW5kCiAgICAgKiBAdGhyb3dzIFRlbXBsYXRlQ2FuTm90QmVFeHBhbmRlZCBpZiB0aGUgdmFyaWFibGVzIGFyZSBpbnZhbGlkCiAgICAgKiBAdGhyb3dzIEludmFsaWRVcmxFeGNlcHRpb24gaWYgdGhlIGJhc2UgVVJJIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVcmlcV2hhdHdnXFVybCBpbnN0YW5jZQogICAgICogQHRocm93cyBJbnZhbGlkVXJsRXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmcgZXhwYW5zaW9uIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVcmlcV2hhdHdnXFVybCBpbnN0YW5jZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwYW5kVG9VcmxPckZhaWwoaXRlcmFibGUgJHZhcmlhYmxlcyA9IFtdLCBSZmMzOTg2VXJpfFdoYXRXZ1VybHxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGJhc2VVcmwgPSBudWxsLCBhcnJheXxudWxsICYkZXJyb3JzID0gW10pOiBXaGF0V2dVcmwKICAgIHsKICAgICAgICBjbGFzc19leGlzdHMoV2hhdFdnVXJsOjpjbGFzcykgfHwgdGhyb3cgbmV3IE1pc3NpbmdGZWF0dXJlKCdTdXBwb3J0IGZvciAnLldoYXRXZ1VybDo6Y2xhc3MuJyByZXF1aXJlcyBQSFA4LjUrIG9yIGEgcG9seWZpbGwuIFJ1biAiY29tcG9zZXIgcmVxdWlyZSBsZWFndWUvdXJpLXBvbHlmaWxsIiBvciB1c2UgeW91IG93biBwb2x5ZmlsbC4nKTsKCiAgICAgICAgcmV0dXJuIG5ldyBXaGF0V2dVcmwoJHRoaXMtPnRlbXBsYXRlRXhwYW5kZWRPckZhaWwoJHZhcmlhYmxlcyksICR0aGlzLT5uZXdXaGF0V2dVcmwoJGJhc2VVcmwpLCAkZXJyb3JzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkIGlmIHRoZSB2YXJpYWJsZXMgYXJlIGludmFsaWQKICAgICAqIEB0aHJvd3MgVXJpRXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmcgZXhwYW5zaW9uIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVcmlJbnRlcmZhY2UgaW5zdGFuY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZFRvUHNyN1VyaU9yRmFpbCgKICAgICAgICBpdGVyYWJsZSAkdmFyaWFibGVzID0gW10sCiAgICAgICAgUmZjMzk4NlVyaXxXaGF0V2dVcmx8QmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRiYXNlVXJsID0gbnVsbCwKICAgICAgICBVcmlGYWN0b3J5SW50ZXJmYWNlICR1cmlGYWN0b3J5ID0gbmV3IEh0dHBGYWN0b3J5KCkKICAgICk6IFBzcjdVcmlJbnRlcmZhY2UgewogICAgICAgICR1cmlTdHJpbmcgPSAkdGhpcy0+dGVtcGxhdGVFeHBhbmRlZE9yRmFpbCgkdmFyaWFibGVzKTsKCiAgICAgICAgcmV0dXJuICR1cmlGYWN0b3J5LT5jcmVhdGVVcmkoCiAgICAgICAgICAgIG51bGwgPT09ICRiYXNlVXJsCiAgICAgICAgICAgID8gJHVyaVN0cmluZwogICAgICAgICAgICA6IFVyaVN0cmluZzo6cmVzb2x2ZSgkdXJpU3RyaW5nLCBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgJGJhc2VVcmwgaW5zdGFuY2VvZiBSZmMzOTg2VXJpID0+ICRiYXNlVXJsLT50b1Jhd1N0cmluZygpLAogICAgICAgICAgICAgICAgJGJhc2VVcmwgaW5zdGFuY2VvZiBXaGF0V2dVcmwgPT4gJGJhc2VVcmwtPnRvVW5pY29kZVN0cmluZygpLAogICAgICAgICAgICAgICAgZGVmYXVsdCA9PiAkYmFzZVVybCwKICAgICAgICAgICAgfSkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkVXJsRXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbmV3V2hhdFdnVXJsKFJmYzM5ODZVcml8V2hhdFdnVXJsfEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkdXJsID0gbnVsbCk6ID9XaGF0V2dVcmwKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgbnVsbCA9PT0gJHVybCA9PiBudWxsLAogICAgICAgICAgICAkdXJsIGluc3RhbmNlb2YgV2hhdFdnVXJsID0+ICR1cmwsCiAgICAgICAgICAgICR1cmwgaW5zdGFuY2VvZiBSZmMzOTg2VXJpID0+IG5ldyBXaGF0V2dVcmwoJHVybC0+dG9SYXdTdHJpbmcoKSksCiAgICAgICAgICAgICR1cmwgaW5zdGFuY2VvZiBCYWNrZWRFbnVtID0+IG5ldyBXaGF0V2dVcmwoKHN0cmluZykgJHVybC0+dmFsdWUpLAogICAgICAgICAgICBkZWZhdWx0ID0+IG5ldyBXaGF0V2dVcmwoKHN0cmluZykgJHVybCksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZFVyaUV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG5ld1JmYzM5ODZVcmkoUmZjMzk4NlVyaXxXaGF0V2dVcmx8QmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICR1cmkgPSBudWxsKTogP1JmYzM5ODZVcmkKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgbnVsbCA9PT0gJHVyaSA9PiBudWxsLAogICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgUmZjMzk4NlVyaSA9PiAkdXJpLAogICAgICAgICAgICAkdXJpIGluc3RhbmNlb2YgV2hhdFdnVXJsID0+IG5ldyBSZmMzOTg2VXJpKCR1cmktPnRvQXNjaWlTdHJpbmcoKSksCiAgICAgICAgICAgICR1cmkgaW5zdGFuY2VvZiBCYWNrZWRFbnVtID0+IG5ldyBSZmMzOTg2VXJpKChzdHJpbmcpICR1cmktPnZhbHVlKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBuZXcgUmZjMzk4NlVyaSgoc3RyaW5nKSAkdXJpKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogREVQUkVDQVRJT04gV0FSTklORyEgVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHBvaW50IHJlbGVhc2UuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgU2luY2UgdmVyc2lvbiA3LjYuMAogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICogQHNlZSBVcmlUZW1wbGF0ZTo6dG9TdHJpbmcoKQogICAgICoKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXFVyaVRlbXBsYXRlOjpfX3RvU3RyaW5nKCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuNi4wJyldCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGVtcGxhdGUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fX3RvU3RyaW5nKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriTemplate/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriTemplate/Expression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcVXJpVGVtcGxhdGU7Cgp1c2UgRGVwcmVjYXRlZDsKdXNlIExlYWd1ZVxVcmlcRXhjZXB0aW9uc1xTeW50YXhFcnJvcjsKdXNlIFN0cmluZ2FibGU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfZmlsdGVyOwp1c2UgZnVuY3Rpb24gYXJyYXlfbWFwOwp1c2UgZnVuY3Rpb24gYXJyYXlfdW5pcXVlOwp1c2UgZnVuY3Rpb24gZXhwbG9kZTsKdXNlIGZ1bmN0aW9uIGltcGxvZGU7CgovKioKICogQGludGVybmFsIFRoZSBjbGFzcyBleHBvc2VzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhbiBFeHByZXNzaW9uIGFuZCBpdHMgdXNhZ2UKICogQGxpbmsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzY1NzAjc2VjdGlvbi0yLjIKICovCmZpbmFsIGNsYXNzIEV4cHJlc3Npb24KewogICAgLyoqIEB2YXIgYXJyYXk8VmFyU3BlY2lmaWVyPiAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkdmFyU3BlY2lmaWVyczsKICAgIC8qKiBAdmFyIGFycmF5PHN0cmluZz4gKi8KICAgIHB1YmxpYyByZWFkb25seSBhcnJheSAkdmFyaWFibGVOYW1lczsKICAgIHB1YmxpYyByZWFkb25seSBzdHJpbmcgJHZhbHVlOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QocHVibGljIHJlYWRvbmx5IE9wZXJhdG9yICRvcGVyYXRvciwgVmFyU3BlY2lmaWVyIC4uLiR2YXJTcGVjaWZpZXJzKQogICAgewogICAgICAgICR0aGlzLT52YXJTcGVjaWZpZXJzID0gJHZhclNwZWNpZmllcnM7CiAgICAgICAgJHRoaXMtPnZhcmlhYmxlTmFtZXMgPSBhcnJheV91bmlxdWUoCiAgICAgICAgICAgIGFycmF5X21hcCgKICAgICAgICAgICAgICAgIHN0YXRpYyBmbiAoVmFyU3BlY2lmaWVyICR2YXJTcGVjaWZpZXIpOiBzdHJpbmcgPT4gJHZhclNwZWNpZmllci0+bmFtZSwKICAgICAgICAgICAgICAgICR2YXJTcGVjaWZpZXJzCiAgICAgICAgICAgICkKICAgICAgICApOwogICAgICAgICR0aGlzLT52YWx1ZSA9ICd7Jy4kb3BlcmF0b3ItPnZhbHVlLmltcGxvZGUoJywnLCBhcnJheV9tYXAoCiAgICAgICAgICAgIHN0YXRpYyBmbiAoVmFyU3BlY2lmaWVyICR2YXJTcGVjaWZpZXIpOiBzdHJpbmcgPT4gJHZhclNwZWNpZmllci0+dG9TdHJpbmcoKSwKICAgICAgICAgICAgJHZhclNwZWNpZmllcnMKICAgICAgICApKS4nfSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSBleHByZXNzaW9uIGlzIGludmFsaWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXcoU3RyaW5nYWJsZXxzdHJpbmcgJGV4cHJlc3Npb24pOiBzZWxmCiAgICB7CiAgICAgICAgJHBhcnRzID0gT3BlcmF0b3I6OnBhcnNlRXhwcmVzc2lvbigkZXhwcmVzc2lvbik7CgogICAgICAgIHJldHVybiBuZXcgRXhwcmVzc2lvbigkcGFydHNbJ29wZXJhdG9yJ10sIC4uLmFycmF5X21hcCgKICAgICAgICAgICAgc3RhdGljIGZuIChzdHJpbmcgJHZhclNwZWMpOiBWYXJTcGVjaWZpZXIgPT4gVmFyU3BlY2lmaWVyOjpuZXcoJHZhclNwZWMpLAogICAgICAgICAgICBleHBsb2RlKCcsJywgJHBhcnRzWyd2YXJpYWJsZXMnXSkKICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIERFUFJFQ0FUSU9OIFdBUk5JTkchIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBwb2ludCByZWxlYXNlLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIGV4cHJlc3Npb24gaXMgaW52YWxpZAogICAgICogQHNlZSBFeHByZXNzaW9uOjpuZXcoKQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gNy4wLjAKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqLwogICAgI1tEZXByZWNhdGVkKG1lc3NhZ2U6J3VzZSBMZWFndWVcVXJpXFVyaVRlbXBsYXRlXEV4cHByZXNzaW9uOjpuZXcoKSBpbnN0ZWFkJywgc2luY2U6J2xlYWd1ZS91cmk6Ny4wLjAnKV0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVN0cmluZyhTdHJpbmdhYmxlfHN0cmluZyAkZXhwcmVzc2lvbik6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6bmV3KCRleHByZXNzaW9uKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwYW5kKFZhcmlhYmxlQmFnICR2YXJpYWJsZXMpOiBzdHJpbmcKICAgIHsKICAgICAgICAkZXhwYW5kZWQgPSBpbXBsb2RlKAogICAgICAgICAgICAkdGhpcy0+b3BlcmF0b3ItPnNlcGFyYXRvcigpLAogICAgICAgICAgICBhcnJheV9maWx0ZXIoCiAgICAgICAgICAgICAgICBhcnJheV9tYXAoCiAgICAgICAgICAgICAgICAgICAgZm4gKFZhclNwZWNpZmllciAkdmFyU3BlY2lmaWVyKTogc3RyaW5nID0+ICR0aGlzLT5vcGVyYXRvci0+ZXhwYW5kKCR2YXJTcGVjaWZpZXIsICR2YXJpYWJsZXMpLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT52YXJTcGVjaWZpZXJzCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgc3RhdGljIGZuICgkdmFsdWUpOiBib29sID0+ICcnICE9PSAkdmFsdWUKICAgICAgICAgICAgKQogICAgICAgICk7CgogICAgICAgIHJldHVybiBtYXRjaCAoJycpIHsKICAgICAgICAgICAgJGV4cGFuZGVkID0+ICcnLAogICAgICAgICAgICBkZWZhdWx0ID0+ICR0aGlzLT5vcGVyYXRvci0+Zmlyc3QoKS4kZXhwYW5kZWQsCiAgICAgICAgfTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriTemplate/Operator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcVXJpVGVtcGxhdGU7Cgp1c2UgTGVhZ3VlXFVyaVxFbmNvZGVyOwp1c2UgTGVhZ3VlXFVyaVxFeGNlcHRpb25zXFN5bnRheEVycm9yOwp1c2UgU3RyaW5nYWJsZTsKCnVzZSBmdW5jdGlvbiBpbXBsb2RlOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBmdW5jdGlvbiBwcmVnX21hdGNoOwp1c2UgZnVuY3Rpb24gcmF3dXJsZW5jb2RlOwp1c2UgZnVuY3Rpb24gc3RyX2NvbnRhaW5zOwp1c2UgZnVuY3Rpb24gc3Vic3RyOwoKLyoqCiAqIFByb2Nlc3NpbmcgYmVoYXZpb3IgYWNjb3JkaW5nIHRvIHRoZSBleHByZXNzaW9uIHR5cGUgb3BlcmF0b3IuCiAqCiAqIEBpbnRlcm5hbCBUaGUgY2xhc3MgZXhwb3NlcyB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gT3BlcmF0b3IgYW5kIGl0cyB1c2FnZQogKgogKiBAbGluayBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNjU3MCNzZWN0aW9uLTIuMgogKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjU3MCNhcHBlbmRpeC1BCiAqLwplbnVtIE9wZXJhdG9yOiBzdHJpbmcKewogICAgLyoqCiAgICAgKiBFeHByZXNzaW9uIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTcwI3NlY3Rpb24tMi4yCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX0VYUFJFU1NJT04gPSAnL15ceyg/Oig/PG9wZXJhdG9yPltcLlwvO1w/Jlw9LFwhQFx8XCsjXSk/KD88dmFyaWFibGVzPlteXH1dKikpXH0kLyc7CgogICAgLyoqCiAgICAgKiBSZXNlcnZlZCBPcGVyYXRvciBjaGFyYWN0ZXJzLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTcwI3NlY3Rpb24tMi4yCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVTRVJWRURfT1BFUkFUT1IgPSAnPSwhQHwnOwoKICAgIGNhc2UgTm9uZSA9ICcnOwogICAgY2FzZSBSZXNlcnZlZENoYXJzID0gJysnOwogICAgY2FzZSBMYWJlbCA9ICcuJzsKICAgIGNhc2UgUGF0aCA9ICcvJzsKICAgIGNhc2UgUGF0aFBhcmFtID0gJzsnOwogICAgY2FzZSBRdWVyeSA9ICc/JzsKICAgIGNhc2UgUXVlcnlQYWlyID0gJyYnOwogICAgY2FzZSBGcmFnbWVudCA9ICcjJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZmlyc3QoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcykgewogICAgICAgICAgICBzZWxmOjpOb25lLCBzZWxmOjpSZXNlcnZlZENoYXJzID0+ICcnLAogICAgICAgICAgICBkZWZhdWx0ID0+ICR0aGlzLT52YWx1ZSwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXBhcmF0b3IoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcykgewogICAgICAgICAgICBzZWxmOjpOb25lLCBzZWxmOjpSZXNlcnZlZENoYXJzLCBzZWxmOjpGcmFnbWVudCA9PiAnLCcsCiAgICAgICAgICAgIHNlbGY6OlF1ZXJ5LCBzZWxmOjpRdWVyeVBhaXIgPT4gJyYnLAogICAgICAgICAgICBkZWZhdWx0ID0+ICR0aGlzLT52YWx1ZSwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc05hbWVkKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCR0aGlzKSB7CiAgICAgICAgICAgIHNlbGY6OlF1ZXJ5LCBzZWxmOjpQYXRoUGFyYW0sIHNlbGY6OlF1ZXJ5UGFpciA9PiB0cnVlLAogICAgICAgICAgICBkZWZhdWx0ID0+IGZhbHNlLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIHBlcmNlbnQgZW5jb2Rpbmcgb24gcmVzZXJ2ZWQgY2hhcmFjdGVycyAodXNlZCB3aXRoICsgYW5kICMgbW9kaWZpZXJzKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY29kZShzdHJpbmcgJHZhcik6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMpIHsKICAgICAgICAgICAgT3BlcmF0b3I6OlJlc2VydmVkQ2hhcnMsIE9wZXJhdG9yOjpGcmFnbWVudCA9PiAoc3RyaW5nKSBFbmNvZGVyOjplbmNvZGVRdWVyeU9yRnJhZ21lbnQoJHZhciksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gcmF3dXJsZW5jb2RlKCR2YXIpLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSBleHByZXNzaW9uIGlzIGludmFsaWQKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIG9wZXJhdG9yIHVzZWQgaW4gdGhlIGV4cHJlc3Npb24gaXMgaW52YWxpZAogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiB0aGUgY29udGFpbmVkIHZhcmlhYmxlIHNwZWNpZmllcnMgYXJlIGludmFsaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e29wZXJhdG9yOk9wZXJhdG9yLCB2YXJpYWJsZXM6c3RyaW5nfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbihTdHJpbmdhYmxlfHN0cmluZyAkZXhwcmVzc2lvbik6IGFycmF5CiAgICB7CiAgICAgICAgJGV4cHJlc3Npb24gPSAoc3RyaW5nKSAkZXhwcmVzc2lvbjsKICAgICAgICBpZiAoMSAhPT0gcHJlZ19tYXRjaChzZWxmOjpSRUdFWFBfRVhQUkVTU0lPTiwgJGV4cHJlc3Npb24sICRwYXJ0cykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgZXhwcmVzc2lvbiAiJy4kZXhwcmVzc2lvbi4nIiBpcyBpbnZhbGlkLicpOwogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgYXJyYXl7b3BlcmF0b3I6c3RyaW5nLCB2YXJpYWJsZXM6c3RyaW5nfSAkcGFydHMgKi8KICAgICAgICAkcGFydHMgPSAkcGFydHMgKyBbJ29wZXJhdG9yJyA9PiAnJ107CiAgICAgICAgaWYgKCcnICE9PSAkcGFydHNbJ29wZXJhdG9yJ10gJiYgc3RyX2NvbnRhaW5zKHNlbGY6OlJFU0VSVkVEX09QRVJBVE9SLCAkcGFydHNbJ29wZXJhdG9yJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIG9wZXJhdG9yIHVzZWQgaW4gdGhlIGV4cHJlc3Npb24gIicuJGV4cHJlc3Npb24uJyIgaXMgcmVzZXJ2ZWQuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnb3BlcmF0b3InID0+IHNlbGY6OmZyb20oJHBhcnRzWydvcGVyYXRvciddKSwKICAgICAgICAgICAgJ3ZhcmlhYmxlcycgPT4gJHBhcnRzWyd2YXJpYWJsZXMnXSwKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogUmVwbGFjZXMgYW4gZXhwcmVzc2lvbiB3aXRoIHRoZSBnaXZlbiB2YXJpYWJsZXMuCiAgICAgKgogICAgICogQHRocm93cyBUZW1wbGF0ZUNhbk5vdEJlRXhwYW5kZWQgaWYgdGhlIHZhcmlhYmxlcyBpcyBhbiBhcnJheSBhbmQgYSAiOiIgbW9kaWZpZXIgbmVlZHMgdG8gYmUgYXBwbGllZAogICAgICogQHRocm93cyBUZW1wbGF0ZUNhbk5vdEJlRXhwYW5kZWQgaWYgdGhlIHZhcmlhYmxlcyBjb250YWlucyBuZXN0ZWQgYXJyYXkgdmFsdWVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleHBhbmQoVmFyU3BlY2lmaWVyICR2YXJTcGVjaWZpZXIsIFZhcmlhYmxlQmFnICR2YXJpYWJsZXMpOiBzdHJpbmcKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdmFyaWFibGVzLT5mZXRjaCgkdmFyU3BlY2lmaWVyLT5uYW1lKTsKICAgICAgICBpZiAobnVsbCA9PT0gJHZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIFskZXhwYW5kZWQsICRhY3R1YWxRdWVyeV0gPSAkdGhpcy0+aW5qZWN0KCR2YWx1ZSwgJHZhclNwZWNpZmllcik7CiAgICAgICAgaWYgKCEkYWN0dWFsUXVlcnkpIHsKICAgICAgICAgICAgcmV0dXJuICRleHBhbmRlZDsKICAgICAgICB9CgogICAgICAgIGlmICgnJicgIT09ICR0aGlzLT5zZXBhcmF0b3IoKSAmJiAnJyA9PT0gJGV4cGFuZGVkKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFyU3BlY2lmaWVyLT5uYW1lOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YXJTcGVjaWZpZXItPm5hbWUuJz0nLiRleHBhbmRlZDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmd8YXJyYXk8c3RyaW5nPiAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5ezA6c3RyaW5nLCAxOmJvb2x9CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaW5qZWN0KGFycmF5fHN0cmluZyAkdmFsdWUsIFZhclNwZWNpZmllciAkdmFyU3BlYyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yZXBsYWNlTGlzdCgkdmFsdWUsICR2YXJTcGVjKTsKICAgICAgICB9CgogICAgICAgIGlmICgnOicgPT09ICR2YXJTcGVjLT5tb2RpZmllcikgewogICAgICAgICAgICAkdmFsdWUgPSBzdWJzdHIoJHZhbHVlLCAwLCAkdmFyU3BlYy0+cG9zaXRpb24pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskdGhpcy0+ZGVjb2RlKCR2YWx1ZSksICR0aGlzLT5pc05hbWVkKCldOwogICAgfQoKICAgIC8qKgogICAgICogRXhwYW5kcyBhbiBleHByZXNzaW9uIHVzaW5nIGEgbGlzdCBvZiB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZz4gJHZhbHVlCiAgICAgKgogICAgICogQHRocm93cyBUZW1wbGF0ZUNhbk5vdEJlRXhwYW5kZWQgaWYgdGhlIHZhcmlhYmxlcyBpcyBhbiBhcnJheSBhbmQgYSAiOiIgbW9kaWZpZXIgbmVlZHMgdG8gYmUgYXBwbGllZAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7MDpzdHJpbmcsIDE6Ym9vbH0KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZXBsYWNlTGlzdChhcnJheSAkdmFsdWUsIFZhclNwZWNpZmllciAkdmFyU3BlYyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCc6JyA9PT0gJHZhclNwZWMtPm1vZGlmaWVyKSB7CiAgICAgICAgICAgIHRocm93IFRlbXBsYXRlQ2FuTm90QmVFeHBhbmRlZDo6ZHVlVG9VbmFibGVUb1Byb2Nlc3NWYWx1ZUxpc3RXaXRoUHJlZml4KCR2YXJTcGVjLT5uYW1lKTsKICAgICAgICB9CgogICAgICAgIGlmIChbXSA9PT0gJHZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiBbJycsIGZhbHNlXTsKICAgICAgICB9CgogICAgICAgICRwYWlycyA9IFtdOwogICAgICAgICRpc0xpc3QgPSBhcnJheV9pc19saXN0KCR2YWx1ZSk7CiAgICAgICAgJHVzZVF1ZXJ5ID0gJHRoaXMtPmlzTmFtZWQoKTsKICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJGtleSA9PiAkdmFyKSB7CiAgICAgICAgICAgIGlmICghJGlzTGlzdCkgewogICAgICAgICAgICAgICAgJGtleSA9IHJhd3VybGVuY29kZSgoc3RyaW5nKSAka2V5KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHZhciA9ICR0aGlzLT5kZWNvZGUoJHZhcik7CiAgICAgICAgICAgIGlmICgnKicgPT09ICR2YXJTcGVjLT5tb2RpZmllcikgewogICAgICAgICAgICAgICAgaWYgKCEkaXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJHZhciA9ICRrZXkuJz0nLiR2YXI7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGtleSA+IDAgJiYgJHVzZVF1ZXJ5KSB7CiAgICAgICAgICAgICAgICAgICAgJHZhciA9ICR2YXJTcGVjLT5uYW1lLic9Jy4kdmFyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGFpcnNbJGtleV0gPSAkdmFyOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcqJyA9PT0gJHZhclNwZWMtPm1vZGlmaWVyKSB7CiAgICAgICAgICAgIGlmICghJGlzTGlzdCkgewogICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJlcGVuZCB0aGUgdmFsdWUgbmFtZSB3aGVuIHVzaW5nIHRoZSBgZXhwbG9kZWAgbW9kaWZpZXIgd2l0aCBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KICAgICAgICAgICAgICAgICR1c2VRdWVyeSA9IGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gW2ltcGxvZGUoJHRoaXMtPnNlcGFyYXRvcigpLCAkcGFpcnMpLCAkdXNlUXVlcnldOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkaXNMaXN0KSB7CiAgICAgICAgICAgIC8vIFdoZW4gYW4gYXNzb2NpYXRpdmUgYXJyYXkgaXMgZW5jb3VudGVyZWQgYW5kIHRoZSBgZXhwbG9kZWAgbW9kaWZpZXIgaXMgbm90IHNldCwgdGhlbgogICAgICAgICAgICAvLyB0aGUgcmVzdWx0IG11c3QgYmUgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBrZXlzIGZvbGxvd2VkIGJ5IHRoZWlyIHJlc3BlY3RpdmUgdmFsdWVzLgogICAgICAgICAgICAkcmV0VmFsID0gW107CiAgICAgICAgICAgIGZvcmVhY2ggKCRwYWlycyBhcyAkb2Zmc2V0ID0+ICRkYXRhKSB7CiAgICAgICAgICAgICAgICAkcmV0VmFsWyRvZmZzZXRdID0gJG9mZnNldC4nLCcuJGRhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHBhaXJzID0gJHJldFZhbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbaW1wbG9kZSgnLCcsICRwYWlycyksICR1c2VRdWVyeV07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriTemplate/Template.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcVXJpVGVtcGxhdGU7Cgp1c2UgQmFja2VkRW51bTsKdXNlIERlcHJlY2F0ZWQ7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBTdHJpbmdhYmxlOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2ZpbHRlcjsKdXNlIGZ1bmN0aW9uIGFycmF5X21hcDsKdXNlIGZ1bmN0aW9uIGFycmF5X3JlZHVjZTsKdXNlIGZ1bmN0aW9uIGFycmF5X3VuaXF1ZTsKdXNlIGZ1bmN0aW9uIHByZWdfbWF0Y2hfYWxsOwp1c2UgZnVuY3Rpb24gcHJlZ19yZXBsYWNlOwp1c2UgZnVuY3Rpb24gc3RyX3JlcGxhY2U7CnVzZSBmdW5jdGlvbiBzdHJwYnJrOwoKdXNlIGNvbnN0IFBSRUdfU0VUX09SREVSOwoKLyoqCiAqIEBpbnRlcm5hbCBUaGUgY2xhc3MgZXhwb3NlcyB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYSBUZW1wbGF0ZSBhbmQgaXRzIHVzYWdlCiAqLwpmaW5hbCBjbGFzcyBUZW1wbGF0ZSBpbXBsZW1lbnRzIFN0cmluZ2FibGUKewogICAgLyoqCiAgICAgKiBFeHByZXNzaW9uIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLgogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFJFR0VYUF9FWFBSRVNTSU9OX0RFVEVDVE9SID0gJy8oPzxleHByZXNzaW9uPlx7W159XSp9KS94JzsKCiAgICAvKiogQHZhciBhcnJheTxFeHByZXNzaW9uPiAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkZXhwcmVzc2lvbnM7CiAgICAvKiogQHZhciBhcnJheTxzdHJpbmc+ICovCiAgICBwdWJsaWMgcmVhZG9ubHkgYXJyYXkgJHZhcmlhYmxlTmFtZXM7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChwdWJsaWMgcmVhZG9ubHkgc3RyaW5nICR2YWx1ZSwgRXhwcmVzc2lvbiAuLi4kZXhwcmVzc2lvbnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmV4cHJlc3Npb25zID0gJGV4cHJlc3Npb25zOwogICAgICAgICR0aGlzLT52YXJpYWJsZU5hbWVzID0gYXJyYXlfdW5pcXVlKAogICAgICAgICAgICBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgIC4uLmFycmF5X21hcCgKICAgICAgICAgICAgICAgICAgICBzdGF0aWMgZm4gKEV4cHJlc3Npb24gJGV4cHJlc3Npb24pOiBhcnJheSA9PiAkZXhwcmVzc2lvbi0+dmFyaWFibGVOYW1lcywKICAgICAgICAgICAgICAgICAgICAkZXhwcmVzc2lvbnMKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSB0ZW1wbGF0ZSBjb250YWlucyBpbnZhbGlkIGV4cHJlc3Npb25zCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSB0ZW1wbGF0ZSBjb250YWlucyBpbnZhbGlkIHZhcmlhYmxlIHNwZWNpZmljYXRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXcoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZyAkdGVtcGxhdGUpOiBzZWxmCiAgICB7CiAgICAgICAgaWYgKCR0ZW1wbGF0ZSBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJHRlbXBsYXRlID0gJHRlbXBsYXRlLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgICR0ZW1wbGF0ZSA9IChzdHJpbmcpICR0ZW1wbGF0ZTsKICAgICAgICAvKiogQHZhciBzdHJpbmcgJHJlbWFpbmRlciAqLwogICAgICAgICRyZW1haW5kZXIgPSBwcmVnX3JlcGxhY2Uoc2VsZjo6UkVHRVhQX0VYUFJFU1NJT05fREVURUNUT1IsICcnLCAkdGVtcGxhdGUpOwogICAgICAgIGZhbHNlID09PSBzdHJwYnJrKCRyZW1haW5kZXIsICd7fScpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIHRlbXBsYXRlICInLiR0ZW1wbGF0ZS4nIiBjb250YWlucyBpbnZhbGlkIGV4cHJlc3Npb25zLicpOwoKICAgICAgICBwcmVnX21hdGNoX2FsbChzZWxmOjpSRUdFWFBfRVhQUkVTU0lPTl9ERVRFQ1RPUiwgJHRlbXBsYXRlLCAkZm91bmRzLCBQUkVHX1NFVF9PUkRFUik7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdGVtcGxhdGUsIC4uLmFycmF5X3ZhbHVlcygKICAgICAgICAgICAgYXJyYXlfcmVkdWNlKCRmb3VuZHMsIGZ1bmN0aW9uIChhcnJheSAkY2FycnksIGFycmF5ICRmb3VuZCk6IGFycmF5IHsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJGNhcnJ5WyRmb3VuZFsnZXhwcmVzc2lvbiddXSkpIHsKICAgICAgICAgICAgICAgICAgICAkY2FycnlbJGZvdW5kWydleHByZXNzaW9uJ11dID0gRXhwcmVzc2lvbjo6bmV3KCRmb3VuZFsnZXhwcmVzc2lvbiddKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJGNhcnJ5OwogICAgICAgICAgICB9LCBbXSkKICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkIGlmIHRoZSB2YXJpYWJsZXMgYXJlIGludmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZChpdGVyYWJsZSAkdmFyaWFibGVzID0gW10pOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoISR2YXJpYWJsZXMgaW5zdGFuY2VvZiBWYXJpYWJsZUJhZykgewogICAgICAgICAgICAkdmFyaWFibGVzID0gbmV3IFZhcmlhYmxlQmFnKCR2YXJpYWJsZXMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5leHBhbmRBbGwoJHZhcmlhYmxlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFRlbXBsYXRlQ2FuTm90QmVFeHBhbmRlZCBpZiB0aGUgdmFyaWFibGVzIGFyZSBpbnZhbGlkIG9yIG1pc3NpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZE9yRmFpbChpdGVyYWJsZSAkdmFyaWFibGVzID0gW10pOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoISR2YXJpYWJsZXMgaW5zdGFuY2VvZiBWYXJpYWJsZUJhZykgewogICAgICAgICAgICAkdmFyaWFibGVzID0gbmV3IFZhcmlhYmxlQmFnKCR2YXJpYWJsZXMpOwogICAgICAgIH0KCiAgICAgICAgJG1pc3NpbmcgPSBhcnJheV9maWx0ZXIoJHRoaXMtPnZhcmlhYmxlTmFtZXMsIGZuIChzdHJpbmcgJG5hbWUpOiBib29sID0+ICFpc3NldCgkdmFyaWFibGVzWyRuYW1lXSkpOwogICAgICAgIGlmIChbXSAhPT0gJG1pc3NpbmcpIHsKICAgICAgICAgICAgdGhyb3cgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkOjpkdWVUb01pc3NpbmdWYXJpYWJsZXMoLi4uJG1pc3NpbmcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5leHBhbmRBbGwoJHZhcmlhYmxlcyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBleHBhbmRBbGwoVmFyaWFibGVCYWcgJHZhcmlhYmxlcyk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBhcnJheV9yZWR1Y2UoCiAgICAgICAgICAgICR0aGlzLT5leHByZXNzaW9ucywKICAgICAgICAgICAgZm4gKHN0cmluZyAkdXJpLCBFeHByZXNzaW9uICRleHByKTogc3RyaW5nID0+IHN0cl9yZXBsYWNlKCRleHByLT52YWx1ZSwgJGV4cHItPmV4cGFuZCgkdmFyaWFibGVzKSwgJHVyaSksCiAgICAgICAgICAgICR0aGlzLT52YWx1ZQogICAgICAgICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIERFUFJFQ0FUSU9OIFdBUk5JTkchIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciBwb2ludCByZWxlYXNlLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIHRlbXBsYXRlIGNvbnRhaW5zIGludmFsaWQgZXhwcmVzc2lvbnMKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIHRlbXBsYXRlIGNvbnRhaW5zIGludmFsaWQgdmFyaWFibGUgc3BlY2lmaWNhdGlvbgogICAgICogQGRlcHJlY2F0ZWQgU2luY2UgdmVyc2lvbiA3LjAuMAogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICogQHNlZSBUZW1wbGF0ZTo6bmV3KCkKICAgICAqCiAgICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgZnJvbSBhIHN0cmluZy4KICAgICAqCiAgICAgKi8KICAgICNbRGVwcmVjYXRlZChtZXNzYWdlOid1c2UgTGVhZ3VlXFVyaVxVcmlUZW1wbGF0ZVxUZW1wbGF0ZTo6bmV3KCkgaW5zdGVhZCcsIHNpbmNlOidsZWFndWUvdXJpOjcuMC4wJyldCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nYWJsZXxzdHJpbmcgJHRlbXBsYXRlKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBzZWxmOjpuZXcoJHRlbXBsYXRlKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriTemplate/TemplateCanNotBeExpanded.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcVXJpVGVtcGxhdGU7Cgp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpRXhjZXB0aW9uOwoKY2xhc3MgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkIGV4dGVuZHMgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGltcGxlbWVudHMgVXJpRXhjZXB0aW9uCnsKICAgIHB1YmxpYyByZWFkb25seSBhcnJheSAkdmFyaWFibGVzTmFtZXM7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkbWVzc2FnZSA9ICcnLCBzdHJpbmcgLi4uJHZhcmlhYmxlTmFtZXMpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgMCwgbnVsbCk7CgogICAgICAgICR0aGlzLT52YXJpYWJsZXNOYW1lcyA9ICR2YXJpYWJsZU5hbWVzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZHVlVG9VbmFibGVUb1Byb2Nlc3NWYWx1ZUxpc3RXaXRoUHJlZml4KHN0cmluZyAkdmFyaWFibGVOYW1lKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignVGhlICI6IiBtb2RpZmllciBjYW5ub3QgYmUgYXBwbGllZCBvbiAiJy4kdmFyaWFibGVOYW1lLiciIHNpbmNlIGl0IGlzIGEgbGlzdCBvZiB2YWx1ZXMuJywgJHZhcmlhYmxlTmFtZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkdWVUb05lc3RlZExpc3RPZlZhbHVlKHN0cmluZyAkdmFyaWFibGVOYW1lKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignVGhlICInLiR2YXJpYWJsZU5hbWUuJyIgY2Fubm90IGJlIGEgbmVzdGVkIGxpc3QuJywgJHZhcmlhYmxlTmFtZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkdWVUb01pc3NpbmdWYXJpYWJsZXMoc3RyaW5nIC4uLiR2YXJpYWJsZU5hbWVzKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignVGhlIGZvbGxvd2luZyByZXF1aXJlZCB2YXJpYWJsZXMgYXJlIG1pc3Npbmc6IGAnLmltcGxvZGUoJ2AsIGAnLCAkdmFyaWFibGVOYW1lcykuJ2AuJywgLi4uJHZhcmlhYmxlTmFtZXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriTemplate/VariableBag.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcVXJpVGVtcGxhdGU7Cgp1c2UgQXJyYXlBY2Nlc3M7CnVzZSBCYWNrZWRFbnVtOwp1c2UgQ2xvc3VyZTsKdXNlIENvdW50YWJsZTsKdXNlIEl0ZXJhdG9yQWdncmVnYXRlOwp1c2UgTGVhZ3VlXFVyaVxTdHJpbmdDb2VyY2lvbk1vZGU7CnVzZSBTdHJpbmdhYmxlOwp1c2UgVHJhdmVyc2FibGU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfZmlsdGVyOwp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIGZ1bmN0aW9uIGFycmF5X21hcDsKdXNlIGZ1bmN0aW9uIGNvdW50Owp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7Cgp1c2UgY29uc3QgQVJSQVlfRklMVEVSX1VTRV9CT1RIOwoKLyoqCiAqIEBpbnRlcm5hbCBUaGUgY2xhc3MgZXhwb3NlcyB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdmFyaWFibGUgYmFncwogKgogKiBAcGhwc3Rhbi10eXBlIElucHV0VmFsdWUgc3RyaW5nfGJvb2x8aW50fGZsb2F0fGFycmF5PHN0cmluZ3xib29sfGludHxmbG9hdD4KICoKICogQGltcGxlbWVudHMgQXJyYXlBY2Nlc3M8c3RyaW5nLCBJbnB1dFZhbHVlPgogKiBAaW1wbGVtZW50cyBJdGVyYXRvckFnZ3JlZ2F0ZTxzdHJpbmcsIElucHV0VmFsdWU+CiAqLwpmaW5hbCBjbGFzcyBWYXJpYWJsZUJhZyBpbXBsZW1lbnRzIEFycmF5QWNjZXNzLCBDb3VudGFibGUsIEl0ZXJhdG9yQWdncmVnYXRlCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsc3RyaW5nfGFycmF5PHN0cmluZz4+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJHZhcmlhYmxlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHBhcmFtIGl0ZXJhYmxlPGFycmF5LWtleSwgSW5wdXRWYWx1ZT4gJHZhcmlhYmxlcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoaXRlcmFibGUgJHZhcmlhYmxlcyA9IFtdKQogICAgewogICAgICAgIGZvcmVhY2ggKCR2YXJpYWJsZXMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICR0aGlzLT5hc3NpZ24oKHN0cmluZykgJG5hbWUsICR2YWx1ZSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VudCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gY291bnQoJHRoaXMtPnZhcmlhYmxlcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEl0ZXJhdG9yKCk6IFRyYXZlcnNhYmxlCiAgICB7CiAgICAgICAgeWllbGQgZnJvbSAkdGhpcy0+dmFyaWFibGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRFeGlzdHMobWl4ZWQgJG9mZnNldCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkb2Zmc2V0LCAkdGhpcy0+dmFyaWFibGVzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0VW5zZXQobWl4ZWQgJG9mZnNldCk6IHZvaWQKICAgIHsKICAgICAgICB1bnNldCgkdGhpcy0+dmFyaWFibGVzWyRvZmZzZXRdKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0U2V0KG1peGVkICRvZmZzZXQsIG1peGVkICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YXNzaWduKCRvZmZzZXQsICR2YWx1ZSk7IC8qIEBwaHBzdGFuLWlnbm9yZS1saW5lICovCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEdldChtaXhlZCAkb2Zmc2V0KTogbWl4ZWQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZldGNoKCRvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciB0aGUgYmFnIGlzIGVtcHR5IG9yIG5vdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRW1wdHkoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBbXSA9PT0gJHRoaXMtPnZhcmlhYmxlczsKICAgIH0KCiAgICAvKioKICAgICAqIFRlbGxzIHdoZXRoZXIgdGhlIGJhZyBpcyBlbXB0eSBvciBub3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc05vdEVtcHR5KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gW10gIT09ICR0aGlzLT52YXJpYWJsZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhtaXhlZCAkdmFsdWUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZSBpbnN0YW5jZW9mIHNlbGYKICAgICAgICAgICAgJiYgJHRoaXMtPnZhcmlhYmxlcyA9PT0gJHZhbHVlLT52YXJpYWJsZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBGZXRjaGVzIHRoZSB2YXJpYWJsZSB2YWx1ZSBpZiBub25lIGZvdW5kIHJldHVybnMgbnVsbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8c3RyaW5nfGFycmF5PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZldGNoKHN0cmluZyAkbmFtZSk6IG51bGx8c3RyaW5nfGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YXJpYWJsZXNbJG5hbWVdID8/IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RyaW5nYWJsZXxJbnB1dFZhbHVlICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzaWduKHN0cmluZyAkbmFtZSwgQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xib29sfGludHxmbG9hdHxhcnJheXxudWxsICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+dmFyaWFibGVzWyRuYW1lXSA9IHNlbGY6Om5vcm1hbGl6ZVZhbHVlKCR2YWx1ZSwgJG5hbWUsIGlzTmVzdGVkTGlzdEFsbG93ZWQ6IHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFN0cmluZ2FibGV8SW5wdXRWYWx1ZSAkdmFsdWUKICAgICAqCiAgICAgKiBAdGhyb3dzIFRlbXBsYXRlQ2FuTm90QmVFeHBhbmRlZCBpZiB0aGUgdmFsdWUgY29udGFpbnMgbmVzdGVkIGxpc3QKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUoCiAgICAgICAgQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xib29sfGludHxmbG9hdHxhcnJheXxudWxsICR2YWx1ZSwKICAgICAgICBzdHJpbmcgJG5hbWUsCiAgICAgICAgYm9vbCAkaXNOZXN0ZWRMaXN0QWxsb3dlZAogICAgKTogYXJyYXl8c3RyaW5nIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgIWlzX2FycmF5KCR2YWx1ZSkgPT4gKHN0cmluZykgU3RyaW5nQ29lcmNpb25Nb2RlOjpOYXRpdmUtPmNvZXJjZSgkdmFsdWUpLAogICAgICAgICAgICAhJGlzTmVzdGVkTGlzdEFsbG93ZWQgPT4gdGhyb3cgVGVtcGxhdGVDYW5Ob3RCZUV4cGFuZGVkOjpkdWVUb05lc3RlZExpc3RPZlZhbHVlKCRuYW1lKSwKICAgICAgICAgICAgZGVmYXVsdCA9PiBhcnJheV9tYXAoZm4gKCR2YXIpID0+IHNlbGY6Om5vcm1hbGl6ZVZhbHVlKCR2YXIsICRuYW1lLCBpc05lc3RlZExpc3RBbGxvd2VkOiBmYWxzZSksICR2YWx1ZSksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlcGxhY2VzIGVsZW1lbnRzIGZyb20gcGFzc2VkIHZhcmlhYmxlcyBpbnRvIHRoZSBjdXJyZW50IGluc3RhbmNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVwbGFjZShWYXJpYWJsZUJhZyAkdmFyaWFibGVzKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkdGhpcy0+dmFyaWFibGVzICsgJHZhcmlhYmxlcy0+dmFyaWFibGVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlcnMgZWxlbWVudHMgdXNpbmcgdGhlIGNsb3N1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmaWx0ZXIoQ2xvc3VyZSAkZm4pOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKGFycmF5X2ZpbHRlcigkdGhpcy0+dmFyaWFibGVzLCAkZm4sIEFSUkFZX0ZJTFRFUl9VU0VfQk9USCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/UriTemplate/VarSpecifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmlcVXJpVGVtcGxhdGU7Cgp1c2UgTGVhZ3VlXFVyaVxFeGNlcHRpb25zXFN5bnRheEVycm9yOwoKdXNlIGZ1bmN0aW9uIHByZWdfbWF0Y2g7CgovKioKICogQGludGVybmFsIFRoZSBjbGFzcyBleHBvc2VzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhIFZhciBTcGVjaWZpZXIKICogQGxpbmsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzY1NzAjc2VjdGlvbi0yLjMKICovCmZpbmFsIGNsYXNzIFZhclNwZWNpZmllcgp7CiAgICAvKioKICAgICAqIFZhcmlhYmxlcyBzcGVjaWZpY2F0aW9uIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTcwI3NlY3Rpb24tMi4zCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX1ZBUlNQRUMgPSAnL14oPzxuYW1lPig/OltBLXowLTlfXC5dfCVbMC05YS1mQS1GXXsyfSkrKSg/PG1vZGlmaWVyPlw6KD88cG9zaXRpb24+XGQrKXxcKik/JC8nOwoKICAgIHByaXZhdGUgY29uc3QgTU9ESUZJRVJfUE9TSVRJT05fTUFYX1BPU0lUSU9OID0gMTBfMDAwOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgcHVibGljIHJlYWRvbmx5IHN0cmluZyAkbmFtZSwKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RyaW5nICRtb2RpZmllciwKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgaW50ICRwb3NpdGlvbgogICAgKSB7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXcoc3RyaW5nICRzcGVjaWZpY2F0aW9uKTogc2VsZgogICAgewogICAgICAgIDEgPT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX1ZBUlNQRUMsICRzcGVjaWZpY2F0aW9uLCAkcGFyc2VkKSB8fCB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1RoZSB2YXJpYWJsZSBzcGVjaWZpY2F0aW9uICInLiRzcGVjaWZpY2F0aW9uLiciIGlzIGludmFsaWQuJyk7CiAgICAgICAgJHByb3BlcnRpZXMgPSBbJ25hbWUnID0+ICRwYXJzZWRbJ25hbWUnXSwgJ21vZGlmaWVyJyA9PiAkcGFyc2VkWydtb2RpZmllciddID8/ICcnLCAncG9zaXRpb24nID0+ICRwYXJzZWRbJ3Bvc2l0aW9uJ10gPz8gJyddOwoKICAgICAgICBpZiAoJycgIT09ICRwcm9wZXJ0aWVzWydwb3NpdGlvbiddKSB7CiAgICAgICAgICAgICRwcm9wZXJ0aWVzWydwb3NpdGlvbiddID0gKGludCkgJHByb3BlcnRpZXNbJ3Bvc2l0aW9uJ107CiAgICAgICAgICAgICRwcm9wZXJ0aWVzWydtb2RpZmllciddID0gJzonOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcnID09PSAkcHJvcGVydGllc1sncG9zaXRpb24nXSkgewogICAgICAgICAgICAkcHJvcGVydGllc1sncG9zaXRpb24nXSA9IDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoc2VsZjo6TU9ESUZJRVJfUE9TSVRJT05fTUFYX1BPU0lUSU9OIDw9ICRwcm9wZXJ0aWVzWydwb3NpdGlvbiddKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIHZhcmlhYmxlIHNwZWNpZmljYXRpb24gIicuJHNwZWNpZmljYXRpb24uJyIgaXMgaW52YWxpZCB0aGUgcG9zaXRpb24gbW9kaWZpZXIgbXVzdCBiZSBsb3dlciB0aGFuIDEwMDAwLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRwcm9wZXJ0aWVzWyduYW1lJ10sICRwcm9wZXJ0aWVzWydtb2RpZmllciddLCAkcHJvcGVydGllc1sncG9zaXRpb24nXSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZS4kdGhpcy0+bW9kaWZpZXIubWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgMCA8ICR0aGlzLT5wb3NpdGlvbiA9PiAkdGhpcy0+cG9zaXRpb24sCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJycsCiAgICAgICAgfTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/league/uri/Urn.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBMZWFndWUuVXJpIChodHRwczovL3VyaS50aGVwaHBsZWFndWUuY29tKQogKgogKiAoYykgSWduYWNlIE55YW1hZ2FuYSBCdXRlcmEgPG55YW1zcHJvZEBnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIExlYWd1ZVxVcmk7Cgp1c2UgQmFja2VkRW51bTsKdXNlIENsb3N1cmU7CnVzZSBKc29uU2VyaWFsaXphYmxlOwp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcQ29uZGl0aW9uYWJsZTsKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFRyYW5zZm9ybWFibGU7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlDb21wb25lbnRJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBMZWFndWVcVXJpXFVyaVRlbXBsYXRlXFRlbXBsYXRlOwp1c2UgU3RyaW5nYWJsZTsKdXNlIFVyaVxSZmMzOTg2XFVyaSBhcyBSZmMzOTg2VXJpOwp1c2UgVXJpXFdoYXRXZ1xVcmwgYXMgV2hhdFdnVXJsOwoKdXNlIGZ1bmN0aW9uIGlzX2Jvb2w7CnVzZSBmdW5jdGlvbiBwcmVnX21hdGNoOwp1c2UgZnVuY3Rpb24gc3RyX3JlcGxhY2U7CnVzZSBmdW5jdGlvbiBzdHJ0b2xvd2VyOwoKLyoqCiAqIEBwaHBzdGFuLXR5cGUgVXJuU2VyaWFsaXplIGFycmF5ezA6IGFycmF5e3Vybjogbm9uLWVtcHR5LXN0cmluZ30sIDE6IGFycmF5e319CiAqIEBwaHBzdGFuLWltcG9ydC10eXBlIElucHV0Q29tcG9uZW50TWFwIGZyb20gVXJpU3RyaW5nCiAqIEBwaHBzdGFuLXR5cGUgVXJuTWFwIGFycmF5ewogKiAgICAgIHNjaGVtZTogJ3VybicsCiAqICAgICAgbmlkOiBzdHJpbmcsCiAqICAgICAgbnNzOiBzdHJpbmcsCiAqICAgICAgcl9jb21wb25lbnQ6ID9zdHJpbmcsCiAqICAgICAgcV9jb21wb25lbnQ6ID9zdHJpbmcsCiAqICAgICAgZl9jb21wb25lbnQ6ID9zdHJpbmcsCiAqICB9CiAqLwpmaW5hbCBjbGFzcyBVcm4gaW1wbGVtZW50cyBDb25kaXRpb25hYmxlLCBTdHJpbmdhYmxlLCBKc29uU2VyaWFsaXphYmxlLCBUcmFuc2Zvcm1hYmxlCnsKICAgIC8qKgogICAgICogUkZDODE0MSByZWd1bGFyIGV4cHJlc3Npb24gVVJOIHNwbGl0dGVyLgogICAgICoKICAgICAqIFRoZSByZWdleHAgZG9lcyBub3QgcGVyZm9ybSBhbnkgbG9vay1haGVhZC4KICAgICAqIE5vdCBhbGwgaW52YWxpZCBVUk4gYXJlIGNhdWdodC4gU29tZQogICAgICogcG9zdC1yZWdleHAtdmFsaWRhdGlvbiBjaGVja3MKICAgICAqIGFyZSBtYW5kYXRvcnkuCiAgICAgKgogICAgICogQGxpbmsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4MTQxI3NlY3Rpb24tMgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhQX1VSTl9QQVJUUyA9ICcvXgogICAgICAgIHVybjoKICAgICAgICAoPzxuaWQ+W2EtejAtOV0oPzpbYS16MC05LV17MCwzMH1bYS16MC05XSk/KTogIyBOSUQKICAgICAgICAoPzxuc3M+Lio/KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOU1MKICAgICAgICAoPzxmcmM+XD9cKyg/PHJjb21wb25lbnQ+Lio/KSk/ICAgICAgICAgICAgICAgIyByLWNvbXBvbmVudAogICAgICAgICg/PGZxYz5cP1w9KD88cWNvbXBvbmVudD4uKj8pKT8gICAgICAgICAgICAgICAjIHEtY29tcG9uZW50CiAgICAgICAgKD86XCMoPzxmY29tcG9uZW50Pi4qKSk/ICAgICAgICAgICAgICAgICAgICAgICMgZi1jb21wb25lbnQKICAgICQveGknOwoKICAgIC8qKgogICAgICogUkZDODE0MSBuYW1lc3BhY2UgaWRlbnRpZmllciByZWd1bGFyIGV4cHJlc3Npb24uCiAgICAgKgogICAgICogQGxpbmsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4MTQxI3NlY3Rpb24tMgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgUkVHRVhfTklEX1NFUVVFTkNFID0gJy9eW2EtejAtOV0oW2EtejAtOS1dezAsMzB9KVthLXowLTldJC94aSc7CgogICAgLyoqIEB2YXIgbm9uLWVtcHR5LXN0cmluZyAqLwogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJHVyaVN0cmluZzsKICAgIC8qKiBAdmFyIG5vbi1lbXB0eS1zdHJpbmcgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuaWQ7CiAgICAvKiogQHZhciBub24tZW1wdHktc3RyaW5nICovCiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkbnNzOwogICAgLyoqIEB2YXIgbm9uLWVtcHR5LXN0cmluZ3xudWxsICovCiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJHJDb21wb25lbnQ7CiAgICAvKiogQHZhciBub24tZW1wdHktc3RyaW5nfG51bGwgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkcUNvbXBvbmVudDsKICAgIC8qKiBAdmFyIG5vbi1lbXB0eS1zdHJpbmd8bnVsbCAqLwogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICRmQ29tcG9uZW50OwoKICAgIC8qKgogICAgICogQHBhcmFtIFJmYzM5ODZVcml8V2hhdFdnVXJsfEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJHVybiB0aGUgcGVyY2VudC1lbmNvZGVkIFVSTgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFJmYzM5ODZVcml8V2hhdFdnVXJsfEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJHVybik6ID9Vcm4KICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZnJvbVN0cmluZygkdXJuKTsKICAgICAgICB9IGNhdGNoIChTeW50YXhFcnJvcikgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmZjMzk4NlVyaXxXaGF0V2dVcmx8U3RyaW5nYWJsZXxzdHJpbmcgJHVybiB0aGUgcGVyY2VudC1lbmNvZGVkIFVSTgogICAgICogQHNlZSBzZWxmOjpmcm9tU3RyaW5nKCkKICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSBVUk4gaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5ldyhSZmMzOTg2VXJpfFdoYXRXZ1VybHxTdHJpbmdhYmxlfHN0cmluZyAkdXJuKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBzZWxmOjpmcm9tU3RyaW5nKCR1cm4pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJmYzM5ODZVcml8V2hhdFdnVXJsfEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJHVybiB0aGUgcGVyY2VudC1lbmNvZGVkIFVSTgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgaWYgdGhlIFVSTiBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbVN0cmluZyhSZmMzOTg2VXJpfFdoYXRXZ1VybHxCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nICR1cm4pOiBzZWxmCiAgICB7CiAgICAgICAgJHVybiA9IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICR1cm4gaW5zdGFuY2VvZiBSZmMzOTg2VXJpID0+ICR1cm4tPnRvUmF3U3RyaW5nKCksCiAgICAgICAgICAgICR1cm4gaW5zdGFuY2VvZiBXaGF0V2dVcmwgPT4gJHVybi0+dG9Bc2NpaVN0cmluZygpLAogICAgICAgICAgICAkdXJuIGluc3RhbmNlb2YgQmFja2VkRW51bSA9PiAoc3RyaW5nKSAkdXJuLT52YWx1ZSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAoc3RyaW5nKSAkdXJuLAogICAgICAgIH07CgogICAgICAgIFVyaVN0cmluZzo6Y29udGFpbnNSZmMzOTg2Q2hhcnMoJHVybikgfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgVVJOIGlzIG1hbGZvcm1lZCwgaXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzLicpOwogICAgICAgIDEgPT09IHByZWdfbWF0Y2goc2VsZjo6UkVHRVhQX1VSTl9QQVJUUywgJHVybiwgJG1hdGNoZXMpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIFVSTiBzdHJpbmcgaXMgaW52YWxpZC4nKTsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKAogICAgICAgICAgICBuaWQ6ICRtYXRjaGVzWyduaWQnXSwKICAgICAgICAgICAgbnNzOiAkbWF0Y2hlc1snbnNzJ10sCiAgICAgICAgICAgIHJDb21wb25lbnQ6IChpc3NldCgkbWF0Y2hlc1snZnJjJ10pICYmICcnICE9PSAkbWF0Y2hlc1snZnJjJ10pID8gJG1hdGNoZXNbJ3Jjb21wb25lbnQnXSA6IG51bGwsCiAgICAgICAgICAgIHFDb21wb25lbnQ6IChpc3NldCgkbWF0Y2hlc1snZnFjJ10pICYmICcnICE9PSAkbWF0Y2hlc1snZnFjJ10pID8gJG1hdGNoZXNbJ3Fjb21wb25lbnQnXSA6IG51bGwsCiAgICAgICAgICAgIGZDb21wb25lbnQ6ICRtYXRjaGVzWydmY29tcG9uZW50J10gPz8gbnVsbCwKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGZyb20gYSBoYXNoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBVUkkgc2ltaWxhcgogICAgICogdG8gUEhQIHBhcnNlX3VybCBmdW5jdGlvbiByZXN1bHQuCiAgICAgKgogICAgICogQHBhcmFtIElucHV0Q29tcG9uZW50TWFwICRjb21wb25lbnRzIGEgaGFzaCByZXByZXNlbnRhdGlvbiBvZiB0aGUgVVJJIHNpbWlsYXIgdG8gUEhQIHBhcnNlX3VybCBmdW5jdGlvbiByZXN1bHQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQ29tcG9uZW50cyhhcnJheSAkY29tcG9uZW50cyA9IFtdKTogc2VsZgogICAgewogICAgICAgICRjb21wb25lbnRzICs9IFsKICAgICAgICAgICAgJ3NjaGVtZScgPT4gbnVsbCwgJ3VzZXInID0+IG51bGwsICdwYXNzJyA9PiBudWxsLCAnaG9zdCcgPT4gbnVsbCwKICAgICAgICAgICAgJ3BvcnQnID0+IG51bGwsICdwYXRoJyA9PiAnJywgJ3F1ZXJ5JyA9PiBudWxsLCAnZnJhZ21lbnQnID0+IG51bGwsCiAgICAgICAgXTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21TdHJpbmcoVXJpU3RyaW5nOjpidWlsZCgkY29tcG9uZW50cykpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFN0cmluZ2FibGV8c3RyaW5nICRuc3MgdGhlIHBlcmNlbnQtZW5jb2RlZCBOU1MKICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGlmIHRoZSBVUk4gaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21SZmMyMTQxKEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmcgJG5pZCwgQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZyAkbnNzKTogc2VsZgogICAgewogICAgICAgIGlmICgkbmlkIGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkbmlkID0gJG5pZC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5zcyBpbnN0YW5jZW9mIEJhY2tlZEVudW0pIHsKICAgICAgICAgICAgJG5zcyA9ICRuc3MtPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKChzdHJpbmcpICRuaWQsIChzdHJpbmcpICRuc3MpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbnNzIHRoZSBwZXJjZW50LWVuY29kZWQgTlNTCiAgICAgKiBAcGFyYW0gP3N0cmluZyAkckNvbXBvbmVudCB0aGUgcGVyY2VudC1lbmNvZGVkIHItY29tcG9uZW50CiAgICAgKiBAcGFyYW0gP3N0cmluZyAkcUNvbXBvbmVudCB0aGUgcGVyY2VudC1lbmNvZGVkIHEtY29tcG9uZW50CiAgICAgKiBAcGFyYW0gP3N0cmluZyAkZkNvbXBvbmVudCB0aGUgcGVyY2VudC1lbmNvZGVkIGYtY29tcG9uZW50CiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBpZiBvbmUgb2YgdGhlIFVSTiBwYXJ0IGlzIGludmFsaWQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBzdHJpbmcgJG5pZCwKICAgICAgICBzdHJpbmcgJG5zcywKICAgICAgICA/c3RyaW5nICRyQ29tcG9uZW50ID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRxQ29tcG9uZW50ID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRmQ29tcG9uZW50ID0gbnVsbCwKICAgICkgewogICAgICAgICgnJyAhPT0gJG5pZCAmJiAxID09PSBwcmVnX21hdGNoKHNlbGY6OlJFR0VYX05JRF9TRVFVRU5DRSwgJG5pZCkpIHx8IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIFVSTiBpcyBtYWxmb3JtZWQsIHRoZSBOSUQgaXMgaW52YWxpZC4nKTsKICAgICAgICAoJycgIT09ICRuc3MgJiYgRW5jb2Rlcjo6aXNQYXRoRW5jb2RlZCgkbnNzKSkgfHwgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgVVJOIGlzIG1hbGZvcm1lZCwgdGhlIE5TUyBpcyBpbnZhbGlkLicpOwoKICAgICAgICAvKiogQHBhcmFtIENsb3N1cmUoc3RyaW5nKTogP25vbi1lbXB0eS1zdHJpbmcgJGNsb3N1cmUgKi8KICAgICAgICAkdmFsaWRhdGVDb21wb25lbnQgPSBzdGF0aWMgZm4gKD9zdHJpbmcgJHZhbHVlLCBDbG9zdXJlICRjbG9zdXJlLCBzdHJpbmcgJG5hbWUpOiA/c3RyaW5nID0+IG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgIG51bGwgPT09ICR2YWx1ZSwKICAgICAgICAgICAgKCcnICE9PSAkdmFsdWUgJiYgMSAhPT0gcHJlZ19tYXRjaCgnL1sjP10vJywgJHZhbHVlKSAmJiAkY2xvc3VyZSgkdmFsdWUpKSA9PiAkdmFsdWUsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gdGhyb3cgbmV3IFN5bnRheEVycm9yKCdUaGUgVVJOIGlzIG1hbGZvcm1lZCwgdGhlIGAnLiRuYW1lLidgIGNvbXBvbmVudCBpcyBpbnZhbGlkLicpLAogICAgICAgIH07CgogICAgICAgICR0aGlzLT5uaWQgPSAkbmlkOwogICAgICAgICR0aGlzLT5uc3MgPSAkbnNzOwogICAgICAgICR0aGlzLT5yQ29tcG9uZW50ID0gJHZhbGlkYXRlQ29tcG9uZW50KCRyQ29tcG9uZW50LCBFbmNvZGVyOjppc1BhdGhFbmNvZGVkKC4uLiksICdyLWNvbXBvbmVudCcpOwogICAgICAgICR0aGlzLT5xQ29tcG9uZW50ID0gJHZhbGlkYXRlQ29tcG9uZW50KCRxQ29tcG9uZW50LCBFbmNvZGVyOjppc1F1ZXJ5RW5jb2RlZCguLi4pLCAncS1jb21wb25lbnQnKTsKICAgICAgICAkdGhpcy0+ZkNvbXBvbmVudCA9ICR2YWxpZGF0ZUNvbXBvbmVudCgkZkNvbXBvbmVudCwgRW5jb2Rlcjo6aXNGcmFnbWVudEVuY29kZWQoLi4uKSwgJ2YtY29tcG9uZW50Jyk7CiAgICAgICAgJHRoaXMtPnVyaVN0cmluZyA9ICR0aGlzLT5zZXRVcmlTdHJpbmcoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldFVyaVN0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICAkc3RyID0gJHRoaXMtPnRvUmZjMjE0MSgpOwogICAgICAgIGlmIChudWxsICE9PSAkdGhpcy0+ckNvbXBvbmVudCkgewogICAgICAgICAgICAkc3RyIC49ICc/KycuJHRoaXMtPnJDb21wb25lbnQ7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPnFDb21wb25lbnQpIHsKICAgICAgICAgICAgJHN0ciAuPSAnPz0nLiR0aGlzLT5xQ29tcG9uZW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5mQ29tcG9uZW50KSB7CiAgICAgICAgICAgICRzdHIgLj0gJyMnLiR0aGlzLT5mQ29tcG9uZW50OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzdHI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBOSUQuCiAgICAgKgogICAgICogQHJldHVybiBub24tZW1wdHktc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROaWQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBwZXJjZW50LWVuY29kZWQgTlNTLgogICAgICoKICAgICAqIEByZXR1cm4gbm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnNzKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnNzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcGVyY2VudC1lbmNvZGVkIHItY29tcG9uZW50IHN0cmluZyBvciBudWxsIGlmIGl0IGlzIG5vdCBzZXQuCiAgICAgKgogICAgICogQHJldHVybiA/bm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UkNvbXBvbmVudCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yQ29tcG9uZW50OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcGVyY2VudC1lbmNvZGVkIHEtY29tcG9uZW50IHN0cmluZyBvciBudWxsIGlmIGl0IGlzIG5vdCBzZXQuCiAgICAgKgogICAgICogQHJldHVybiA/bm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UUNvbXBvbmVudCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5xQ29tcG9uZW50OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcGVyY2VudC1lbmNvZGVkIGYtY29tcG9uZW50IHN0cmluZyBvciBudWxsIGlmIGl0IGlzIG5vdCBzZXQuCiAgICAgKgogICAgICogQHJldHVybiA/bm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RkNvbXBvbmVudCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mQ29tcG9uZW50OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgUkZDODE0MSBVUk4gc3RyaW5nIHJlcHJlc2VudGF0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gbm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmlTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBSRkMyMTQxIFVSTiBzdHJpbmcgcmVwcmVzZW50YXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBub24tZW1wdHktc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1JmYzIxNDEoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICd1cm46Jy4kdGhpcy0+bmlkLic6Jy4kdGhpcy0+bnNzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaHVtYW4tcmVhZGFibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBVUk4gYXMgYW4gSVJJLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg3CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0Rpc3BsYXlTdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFVyaVN0cmluZzo6dG9JcmlTdHJpbmcoJHRoaXMtPnVyaVN0cmluZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBSRkM4MTQxIFVSTiBzdHJpbmcgcmVwcmVzZW50YXRpb24uCiAgICAgKgogICAgICogQHNlZSBzZWxmOjp0b1N0cmluZygpCiAgICAgKgogICAgICogQHJldHVybiBub24tZW1wdHktc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dG9TdHJpbmcoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIFJGQzgxNDEgVVJOIHN0cmluZyByZXByZXNlbnRhdGlvbi4KICAgICAqIEBzZWUgc2VsZjo6dG9TdHJpbmcoKQogICAgICoKICAgICAqIEByZXR1cm4gbm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvU3RyaW5nKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBSRkMzOTg2IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IFVSTi4KICAgICAqCiAgICAgKiBJZiBhIHRlbXBsYXRlIFVSSSBpcyB1c2VkIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFzIHByZXNlbnQKICAgICAqIHtuaWR9IGZvciB0aGUgbmFtZXNwYWNlIGlkZW50aWZpZXIKICAgICAqIHtuc3N9IGZvciB0aGUgbmFtZXNwYWNlIHNwZWNpZmljIHN0cmluZwogICAgICoge3JfY29tcG9uZW50fSBmb3IgdGhlIHItY29tcG9uZW50IHdpdGhvdXQgaXRzIGRlbGltaXRlcgogICAgICoge3FfY29tcG9uZW50fSBmb3IgdGhlIHEtY29tcG9uZW50IHdpdGhvdXQgaXRzIGRlbGltaXRlcgogICAgICoge2ZfY29tcG9uZW50fSBmb3IgdGhlIGYtY29tcG9uZW50IHdpdGhvdXQgaXRzIGRlbGltaXRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzb2x2ZShVcmlUZW1wbGF0ZXxUZW1wbGF0ZXxCYWNrZWRFbnVtfHN0cmluZ3xudWxsICR0ZW1wbGF0ZSA9IG51bGwpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJHRlbXBsYXRlID8gVXJpOjpmcm9tVGVtcGxhdGUoJHRlbXBsYXRlLCAkdGhpcy0+dG9Db21wb25lbnRzKCkpIDogVXJpOjpuZXcoJHRoaXMtPnVyaVN0cmluZyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc1JDb21wb25lbnQoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBudWxsICE9PSAkdGhpcy0+ckNvbXBvbmVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzUUNvbXBvbmVudCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgIT09ICR0aGlzLT5xQ29tcG9uZW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNGQ29tcG9uZW50KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJHRoaXMtPmZDb21wb25lbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc09wdGlvbmFsQ29tcG9uZW50KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJHRoaXMtPnJDb21wb25lbnQKICAgICAgICAgICAgfHwgbnVsbCAhPT0gJHRoaXMtPnFDb21wb25lbnQKICAgICAgICAgICAgfHwgbnVsbCAhPT0gJHRoaXMtPmZDb21wb25lbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIE5JRC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBOSUQuCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBmb3IgaW52YWxpZCBjb21wb25lbnQgb3IgdHJhbnNmb3JtYXRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd291bGQgcmVzdWx0IGluIGFuIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aE5pZChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nICRuaWQpOiBzZWxmCiAgICB7CiAgICAgICAgaWYgKCRuaWQgaW5zdGFuY2VvZiBCYWNrZWRFbnVtKSB7CiAgICAgICAgICAgICRuaWQgPSAkbmlkLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgICRuaWQgPSAoc3RyaW5nKSAkbmlkOwoKICAgICAgICByZXR1cm4gJHRoaXMtPm5pZCA9PT0gJG5pZCA/ICR0aGlzIDogbmV3IHNlbGYoCiAgICAgICAgICAgIG5pZDogJG5pZCwKICAgICAgICAgICAgbnNzOiAkdGhpcy0+bnNzLAogICAgICAgICAgICByQ29tcG9uZW50OiAkdGhpcy0+ckNvbXBvbmVudCwKICAgICAgICAgICAgcUNvbXBvbmVudDogJHRoaXMtPnFDb21wb25lbnQsCiAgICAgICAgICAgIGZDb21wb25lbnQ6ICR0aGlzLT5mQ29tcG9uZW50LAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIE5TUy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBOU1MuCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBmb3IgaW52YWxpZCBjb21wb25lbnQgb3IgdHJhbnNmb3JtYXRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd291bGQgcmVzdWx0IGluIGFuIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aE5zcyhCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nICRuc3MpOiBzZWxmCiAgICB7CiAgICAgICAgJG5zcyA9IEVuY29kZXI6OmVuY29kZVBhdGgoJG5zcyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+bnNzID09PSAkbnNzID8gJHRoaXMgOiBuZXcgc2VsZigKICAgICAgICAgICAgbmlkOiAkdGhpcy0+bmlkLAogICAgICAgICAgICBuc3M6ICRuc3MsCiAgICAgICAgICAgIHJDb21wb25lbnQ6ICR0aGlzLT5yQ29tcG9uZW50LAogICAgICAgICAgICBxQ29tcG9uZW50OiAkdGhpcy0+cUNvbXBvbmVudCwKICAgICAgICAgICAgZkNvbXBvbmVudDogJHRoaXMtPmZDb21wb25lbnQsCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgci1jb21wb25lbnQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgci1jb21wb25lbnQuCiAgICAgKgogICAgICogVGhlIGNvbXBvbmVudCBpcyByZW1vdmVkIGlmIHRoZSB2YWx1ZSBpcyBudWxsLgogICAgICoKICAgICAqIEB0aHJvd3MgU3ludGF4RXJyb3IgZm9yIGludmFsaWQgY29tcG9uZW50IG9yIHRyYW5zZm9ybWF0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbiBvYmplY3QgaW4gaW52YWxpZCBzdGF0ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhSQ29tcG9uZW50KEJhY2tlZEVudW18U3RyaW5nYWJsZXxzdHJpbmd8bnVsbCAkY29tcG9uZW50KTogc2VsZgogICAgewogICAgICAgIGlmICgkY29tcG9uZW50IGluc3RhbmNlb2YgQmFja2VkRW51bSkgewogICAgICAgICAgICAkY29tcG9uZW50ID0gKHN0cmluZykgJGNvbXBvbmVudC0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbXBvbmVudCBpbnN0YW5jZW9mIFVyaUNvbXBvbmVudEludGVyZmFjZSkgewogICAgICAgICAgICAkY29tcG9uZW50ID0gJGNvbXBvbmVudC0+dmFsdWUoKTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICRjb21wb25lbnQgPSBzZWxmOjpmb3JtYXRDb21wb25lbnQoRW5jb2Rlcjo6ZW5jb2RlUGF0aCgkY29tcG9uZW50KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnJDb21wb25lbnQgPT09ICRjb21wb25lbnQgPyAkdGhpcyA6IG5ldyBzZWxmKAogICAgICAgICAgICBuaWQ6ICR0aGlzLT5uaWQsCiAgICAgICAgICAgIG5zczogJHRoaXMtPm5zcywKICAgICAgICAgICAgckNvbXBvbmVudDogJGNvbXBvbmVudCwKICAgICAgICAgICAgcUNvbXBvbmVudDogJHRoaXMtPnFDb21wb25lbnQsCiAgICAgICAgICAgIGZDb21wb25lbnQ6ICR0aGlzLT5mQ29tcG9uZW50LAogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZm9ybWF0Q29tcG9uZW50KD9zdHJpbmcgJGNvbXBvbmVudCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCA9PT0gJGNvbXBvbmVudCA/IG51bGwgOiBzdHJfcmVwbGFjZShbJz8nLCAnIyddLCBbJyUzRicsICclMjMnXSwgJGNvbXBvbmVudCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHEtY29tcG9uZW50LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHEtY29tcG9uZW50LgogICAgICoKICAgICAqIFRoZSBjb21wb25lbnQgaXMgcmVtb3ZlZCBpZiB0aGUgdmFsdWUgaXMgbnVsbC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFN5bnRheEVycm9yIGZvciBpbnZhbGlkIGNvbXBvbmVudCBvciB0cmFuc2Zvcm1hdGlvbnMKICAgICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCB3b3VsZCByZXN1bHQgaW4gYW4gb2JqZWN0IGluIGludmFsaWQgc3RhdGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUUNvbXBvbmVudChCYWNrZWRFbnVtfFN0cmluZ2FibGV8c3RyaW5nfG51bGwgJGNvbXBvbmVudCk6IHNlbGYKICAgIHsKICAgICAgICBpZiAoJGNvbXBvbmVudCBpbnN0YW5jZW9mIFVyaUNvbXBvbmVudEludGVyZmFjZSkgewogICAgICAgICAgICAkY29tcG9uZW50ID0gJGNvbXBvbmVudC0+dmFsdWUoKTsKICAgICAgICB9CgogICAgICAgICRjb21wb25lbnQgPSBzZWxmOjpmb3JtYXRDb21wb25lbnQoRW5jb2Rlcjo6ZW5jb2RlUXVlcnlPckZyYWdtZW50KCRjb21wb25lbnQpKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5xQ29tcG9uZW50ID09PSAkY29tcG9uZW50ID8gJHRoaXMgOiBuZXcgc2VsZigKICAgICAgICAgICAgbmlkOiAkdGhpcy0+bmlkLAogICAgICAgICAgICBuc3M6ICR0aGlzLT5uc3MsCiAgICAgICAgICAgIHJDb21wb25lbnQ6ICR0aGlzLT5yQ29tcG9uZW50LAogICAgICAgICAgICBxQ29tcG9uZW50OiAkY29tcG9uZW50LAogICAgICAgICAgICBmQ29tcG9uZW50OiAkdGhpcy0+ZkNvbXBvbmVudCwKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmLWNvbXBvbmVudC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBmLWNvbXBvbmVudC4KICAgICAqCiAgICAgKiBUaGUgY29tcG9uZW50IGlzIHJlbW92ZWQgaWYgdGhlIHZhbHVlIGlzIG51bGwuCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvciBmb3IgaW52YWxpZCBjb21wb25lbnQgb3IgdHJhbnNmb3JtYXRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd291bGQgcmVzdWx0IGluIGFuIG9iamVjdCBpbiBpbnZhbGlkIHN0YXRlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEZDb21wb25lbnQoQmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZ3xudWxsICRjb21wb25lbnQpOiBzZWxmCiAgICB7CiAgICAgICAgaWYgKCRjb21wb25lbnQgaW5zdGFuY2VvZiBVcmlDb21wb25lbnRJbnRlcmZhY2UpIHsKICAgICAgICAgICAgJGNvbXBvbmVudCA9ICRjb21wb25lbnQtPnZhbHVlKCk7CiAgICAgICAgfQoKICAgICAgICAkY29tcG9uZW50ID0gc2VsZjo6Zm9ybWF0Q29tcG9uZW50KEVuY29kZXI6OmVuY29kZVF1ZXJ5T3JGcmFnbWVudCgkY29tcG9uZW50KSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+ZkNvbXBvbmVudCA9PT0gJGNvbXBvbmVudCA/ICR0aGlzIDogbmV3IHNlbGYoCiAgICAgICAgICAgIG5pZDogJHRoaXMtPm5pZCwKICAgICAgICAgICAgbnNzOiAkdGhpcy0+bnNzLAogICAgICAgICAgICByQ29tcG9uZW50OiAkdGhpcy0+ckNvbXBvbmVudCwKICAgICAgICAgICAgcUNvbXBvbmVudDogJHRoaXMtPnFDb21wb25lbnQsCiAgICAgICAgICAgIGZDb21wb25lbnQ6ICRjb21wb25lbnQsCiAgICAgICAgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbm9ybWFsaXplKCk6IHNlbGYKICAgIHsKICAgICAgICAkY29weSA9IG5ldyBzZWxmKAogICAgICAgICAgICBuaWQ6IHN0cnRvbG93ZXIoJHRoaXMtPm5pZCksCiAgICAgICAgICAgIG5zczogKHN0cmluZykgRW5jb2Rlcjo6bm9ybWFsaXplUGF0aCgkdGhpcy0+bnNzKSwKICAgICAgICAgICAgckNvbXBvbmVudDogbnVsbCA9PT0gJHRoaXMtPnJDb21wb25lbnQgPyAkdGhpcy0+ckNvbXBvbmVudCA6IEVuY29kZXI6Om5vcm1hbGl6ZVBhdGgoJHRoaXMtPnJDb21wb25lbnQpLAogICAgICAgICAgICBxQ29tcG9uZW50OiBFbmNvZGVyOjpub3JtYWxpemVRdWVyeSgkdGhpcy0+cUNvbXBvbmVudCksCiAgICAgICAgICAgIGZDb21wb25lbnQ6IEVuY29kZXI6Om5vcm1hbGl6ZUZyYWdtZW50KCR0aGlzLT5mQ29tcG9uZW50KSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJGNvcHktPnVyaVN0cmluZyA9PT0gJHRoaXMtPnVyaVN0cmluZyA/ICR0aGlzIDogJGNvcHk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhVcm58UmZjMzk4NlVyaXxXaGF0V2dVcmx8QmFja2VkRW51bXxTdHJpbmdhYmxlfHN0cmluZyAkb3RoZXIsIFVybkNvbXBhcmlzb25Nb2RlICR1cm5Db21wYXJpc29uTW9kZSA9IFVybkNvbXBhcmlzb25Nb2RlOjpFeGNsdWRlQ29tcG9uZW50cyk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoISRvdGhlciBpbnN0YW5jZW9mIFVybikgewogICAgICAgICAgICAkb3RoZXIgPSBzZWxmOjpwYXJzZSgkb3RoZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChudWxsICE9PSAkb3RoZXIpICYmIG1hdGNoICgkdXJuQ29tcGFyaXNvbk1vZGUpIHsKICAgICAgICAgICAgVXJuQ29tcGFyaXNvbk1vZGU6OkV4Y2x1ZGVDb21wb25lbnRzID0+ICRvdGhlci0+bm9ybWFsaXplKCktPnRvUmZjMjE0MSgpID09PSAkdGhpcy0+bm9ybWFsaXplKCktPnRvUmZjMjE0MSgpLAogICAgICAgICAgICBVcm5Db21wYXJpc29uTW9kZTo6SW5jbHVkZUNvbXBvbmVudHMgPT4gJG90aGVyLT5ub3JtYWxpemUoKS0+dG9TdHJpbmcoKSA9PT0gJHRoaXMtPm5vcm1hbGl6ZSgpLT50b1N0cmluZygpLAogICAgICAgIH07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdoZW4oY2FsbGFibGV8Ym9vbCAkY29uZGl0aW9uLCBjYWxsYWJsZSAkb25TdWNjZXNzLCA/Y2FsbGFibGUgJG9uRmFpbCA9IG51bGwpOiBzdGF0aWMKICAgIHsKICAgICAgICBpZiAoIWlzX2Jvb2woJGNvbmRpdGlvbikpIHsKICAgICAgICAgICAgJGNvbmRpdGlvbiA9ICRjb25kaXRpb24oJHRoaXMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG1hdGNoICh0cnVlKSB7CiAgICAgICAgICAgICRjb25kaXRpb24gPT4gJG9uU3VjY2VzcygkdGhpcyksCiAgICAgICAgICAgIG51bGwgIT09ICRvbkZhaWwgPT4gJG9uRmFpbCgkdGhpcyksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJHRoaXMsCiAgICAgICAgfSA/PyAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdHJhbnNmb3JtKGNhbGxhYmxlICRjYWxsYmFjayk6IHN0YXRpYwogICAgewogICAgICAgIHJldHVybiAkY2FsbGJhY2soJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBVcm5TZXJpYWxpemUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fc2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFtbJ3VybicgPT4gJHRoaXMtPnRvU3RyaW5nKCldLCBbXV07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gVXJuU2VyaWFsaXplICRkYXRhCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX191bnNlcmlhbGl6ZShhcnJheSAkZGF0YSk6IHZvaWQKICAgIHsKICAgICAgICBbJHByb3BlcnRpZXNdID0gJGRhdGE7CiAgICAgICAgJHVyaSA9IHNlbGY6OmZyb21TdHJpbmcoJHByb3BlcnRpZXNbJ3VybiddID8/IHRocm93IG5ldyBTeW50YXhFcnJvcignVGhlIGB1cm5gIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSB0aGUgc2VyaWFsaXplZCBvYmplY3QuJykpOwoKICAgICAgICAkdGhpcy0+bmlkID0gJHVyaS0+bmlkOwogICAgICAgICR0aGlzLT5uc3MgPSAkdXJpLT5uc3M7CiAgICAgICAgJHRoaXMtPnJDb21wb25lbnQgPSAkdXJpLT5yQ29tcG9uZW50OwogICAgICAgICR0aGlzLT5xQ29tcG9uZW50ID0gJHVyaS0+cUNvbXBvbmVudDsKICAgICAgICAkdGhpcy0+ZkNvbXBvbmVudCA9ICR1cmktPmZDb21wb25lbnQ7CiAgICAgICAgJHRoaXMtPnVyaVN0cmluZyA9ICR1cmktPnVyaVN0cmluZzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gVXJuTWFwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0NvbXBvbmVudHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnc2NoZW1lJyA9PiAndXJuJywKICAgICAgICAgICAgJ25pZCcgPT4gJHRoaXMtPm5pZCwKICAgICAgICAgICAgJ25zcycgPT4gJHRoaXMtPm5zcywKICAgICAgICAgICAgJ3JfY29tcG9uZW50JyA9PiAkdGhpcy0+ckNvbXBvbmVudCwKICAgICAgICAgICAgJ3FfY29tcG9uZW50JyA9PiAkdGhpcy0+cUNvbXBvbmVudCwKICAgICAgICAgICAgJ2ZfY29tcG9uZW50JyA9PiAkdGhpcy0+ZkNvbXBvbmVudCwKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBVcm5NYXAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVidWdJbmZvKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0NvbXBvbmVudHMoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciIsCiAgICAiZGVzY3JpcHRpb24iOiAiQ1NTIEF1dG9wcmVmaXhlciB3cml0dGVuIGluIHB1cmUgUEhQLiIsCgkibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJKYXkgcGFkYWxpeWEiCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJzYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyIjogIioiCiAgICB9LAogICAgImF1dG9sb2FkIjp7CiAgICAgICAgICAgICJwc3ItNCI6IHsiUGFkYWxpeWFqYXlcXFBIUEF1dG9wcmVmaXhlclxcIjogInNyYyJ9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNpbnN0YWxsaW5nLWRlcGVuZGVuY2llcyIsCiAgICAgICAgIlRoaXMgZmlsZSBpcyBAZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkiCiAgICBdLAogICAgImNvbnRlbnQtaGFzaCI6ICI1N2E3NzE3ZDE4OTAzZmUxNmRhYmVkZWJlODVhZjkxOCIsCiAgICAicGFja2FnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiOC40LjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZTQxZDIxNDAwMzFkNTMzMzQ4YjIxOTJhODNmMDJkOGRkOGE3MWQzMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIvemlwYmFsbC9lNDFkMjE0MDAzMWQ1MzMzNDhiMjE5MmE4M2YwMmQ4ZGQ4YTcxZDMwIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZTQxZDIxNDAwMzFkNTMzMzQ4YjIxOTJhODNmMDJkOGRkOGE3MWQzMCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWljb252IjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuNi4yMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImNvZGFjeS9jb3ZlcmFnZSI6ICJeMS40IiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuOC4zNiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogImZvciBwYXJzaW5nIFVURi04IENTUyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU2FiYmVyd29ybVxcQ1NTXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlJhcGhhZWwgU2Nod2Vpa2VydCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhcnNlciBmb3IgQ1NTIEZpbGVzIHdyaXR0ZW4gaW4gUEhQIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vd3d3LnNhYmJlcndvcm0uY29tL2Jsb2cvMjAxMC82LzEwL3BocC1jc3MtcGFyc2VyIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNzcyIsCiAgICAgICAgICAgICAgICAicGFyc2VyIiwKICAgICAgICAgICAgICAgICJzdHlsZXNoZWV0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIvdHJlZS84LjQuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0xMi0xMVQxMzo0MDo1NCswMDowMCIKICAgICAgICB9CiAgICBdLAogICAgInBhY2thZ2VzLWRldiI6IFtdLAogICAgImFsaWFzZXMiOiBbXSwKICAgICJtaW5pbXVtLXN0YWJpbGl0eSI6ICJzdGFibGUiLAogICAgInN0YWJpbGl0eS1mbGFncyI6IFtdLAogICAgInByZWZlci1zdGFibGUiOiBmYWxzZSwKICAgICJwcmVmZXItbG93ZXN0IjogZmFsc2UsCiAgICAicGxhdGZvcm0iOiBbXSwKICAgICJwbGF0Zm9ybS1kZXYiOiBbXSwKICAgICJwbHVnaW4tYXBpLXZlcnNpb24iOiAiMi4xLjAiCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAxOSBKYXkgUGFkYWxpeWEKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBwaHAtYXV0b3ByZWZpeGVyCkNTUyBhdXRvcHJlZml4ZXIgd3JpdHRlbiBpbiBwdXJlIFBIUAoKIyMgSW5zdGFsbGF0aW9uClNpbXBseSBhZGQgYSBkZXBlbmRlbmN5IG9uIHBhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIgdG8geW91ciBjb21wb3Nlci5qc29uIGZpbGUgaWYgeW91IHVzZSBbQ29tcG9zZXJdKGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnLykgdG8gbWFuYWdlIHRoZSBkZXBlbmRlbmNpZXMgb2YgeW91ciBwcm9qZWN0OgpgYGAKY29tcG9zZXIgcmVxdWlyZSBwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyCmBgYApBbHRob3VnaCBpdCdzIHJlY29tbWVuZGVkIHRvIHVzZSBDb21wb3NlciwgeW91IGNhbiBhY3R1YWxseSBbaW5jbHVkZSB0aGVzZSBmaWxlc10oaHR0cHM6Ly9naXRodWIuY29tL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvd2lraS9JbnN0YWxsYXRpb24pIGFueXdheSB5b3Ugd2FudC4KCiMjIFVzYWdlCmBgYHBocAp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXEF1dG9wcmVmaXhlcjsKCiR1bnByZWZpeGVkX2NzcyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCdtYWluLmNzcycpOyAvLyBDU1MgY29kZQoKJGF1dG9wcmVmaXhlciA9IG5ldyBBdXRvcHJlZml4ZXIoJHVucHJlZml4ZWRfY3NzKTsKJHByZWZpeGVkX2NzcyA9ICRhdXRvcHJlZml4ZXItPmNvbXBpbGUoKTsKYGBgCgojIyBPcHRpb25zCgojIyMgYHByZXR0eU91dHB1dGAKCkV4YW1wbGU6CmBgYHBocAokYXV0b3ByZWZpeGVyLT5jb21waWxlKGZhbHNlKTsgLy8gT3V0cHV0IG1pbmlmaWVkIENTUwpgYGAKRGVmaW5lcyBpZiB0aGUgcHJlZml4ZWQgQ1NTIHdpbGwgYmUgYSB2ZXJib3NlL3ByZXR0aWZpZWQgb3V0cHV0LiBXaGVuIGBmYWxzZWAgdGhlIG91dHB1dCB3aWxsIGJlIG1pbmlmaWVkLiBZb3UgY2FuIHBhc3MgaXQgYXMgYW4gb3B0aW9uIHRvIHRoZSBgY29tcGlsZSgpYCBtZXRob2QuCgpEZWZhdWx0OiBgdHJ1ZWAKCiMjIyBgc2V0VmVuZG9yc2AKCkV4YW1wbGU6CmBgYHBocAokYXV0b3ByZWZpeGVyLT5zZXRWZW5kb3JzKGFycmF5KAogICAgLy8gT21pdCBwcmVmaXhlcyBmb3IgSUUKICAgIFxQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yXFdlYmtpdDo6Y2xhc3MsCiAgICBcUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxNb3ppbGxhOjpjbGFzcywKICAgIE15TmFtZXNwYWNlXEN1c3RvbVxPcGVyYTo6Y2xhc3MgLy8gVXNlIGN1c3RvbSB2ZW5kb3IgcHJlZml4ZXMKKSk7CgokYXV0b3ByZWZpeGVyLT5jb21waWxlKCk7CmBgYApEZWZpbmUgd2hpY2ggdmVuZG9yIGNsYXNzZXMgc2hvdWxkIGJlIHVzZWQgZm9yIHByZWZpeGluZy4gWW91IGNhbiBvbWl0IHVud2FudGVkIHZlbmRvcnMgbGlrZSBlLmcuIElFLiBJZiB1c2VkLCBvbmx5IHRoZSB2ZW5kb3IgY2xhc3NlcyBpbiB0aGUgZ2l2ZW4gYXJyYXkgd2lsbCB0YWtlIGVmZmVjdC4KCkRlZmF1bHQ6IApgYGBwaHAKYXJyYXkoCiAgICBcUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxJRTo6Y2xhc3MsCiAgICBcUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxXZWJraXQ6OmNsYXNzLAogICAgXFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3JcTW96aWxsYTo6Y2xhc3MsCikKYGBgCgojIyBMaWNlbnNlCgpbTUlUXShodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKSBsaWNlbnNlZC4KCgojIyBEb25hdGUgJiBTdXBwb3J0CltQYXlQYWwubWVdKGh0dHBzOi8vd3d3LnBheXBhbC5tZS9wYWRhbGl5YWpheS8pCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Autoprefixer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlcjsKCmNsYXNzIEF1dG9wcmVmaXhlciB7CgogICAgcHJpdmF0ZSAkY3NzX3BhcnNlcjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNzc19jb2RlKXsKICAgICAgICAkdGhpcy0+Y3NzX3BhcnNlciA9IG5ldyBcU2FiYmVyd29ybVxDU1NcUGFyc2VyKCRjc3NfY29kZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJldHR5T3V0cHV0CiAgICAgKiBAcmV0dXJuIHN0cmluZ3xmYWxzZQogICAgICogQHRocm93cyBcU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xTb3VyY2VFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJHByZXR0eU91dHB1dCA9IHRydWUpIHsKICAgICAgICBpZiAoISR0aGlzLT5jc3NfcGFyc2VyKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRjc3NfZG9jdW1lbnQgPSAkdGhpcy0+Y3NzX3BhcnNlci0+cGFyc2UoKTsKCiAgICAgICAgJHRoaXMtPmNvbXBpbGVDU1NMaXN0KCRjc3NfZG9jdW1lbnQpOwoKICAgICAgICAkb3V0cHV0Rm9ybWF0ID0gJHByZXR0eU91dHB1dCA/CiAgICAgICAgICAgIFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ6OmNyZWF0ZVByZXR0eSgpIDoKICAgICAgICAgICAgXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDo6Y3JlYXRlQ29tcGFjdCgpOwoKICAgICAgICByZXR1cm4gJGNzc19kb2N1bWVudC0+cmVuZGVyKCRvdXRwdXRGb3JtYXQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWZW5kb3JzKCR2ZW5kb3JzKSB7CiAgICAgICAgVmVuZG9yOjpzZXRWZW5kb3JzKCR2ZW5kb3JzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgQ1NTTGlzdAogICAgICogQHBhcmFtIFxTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XENTU0xpc3QgJGNzc19saXN0CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlQ1NTTGlzdCgkY3NzX2xpc3QpewogICAgICAgICRtX2NvbnRlbnRzID0gJGNzc19saXN0LT5nZXRDb250ZW50cygpOwogICAgICAgICR0b3RhbF9hZGRlZCA9IDA7CgogICAgICAgIGZvcmVhY2goJGNzc19saXN0LT5nZXRDb250ZW50cygpIGFzICRrZXkgPT4gJGNvbnRlbnQpewogICAgICAgICAgICAkdmVuZG9yX2NvbnRlbnRzID0gYXJyYXkoKTsKCiAgICAgICAgICAgIC8vIFJ1bGVTZXQKICAgICAgICAgICAgaWYoJGNvbnRlbnQgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcUnVsZVNldFxSdWxlU2V0KSB7CiAgICAgICAgICAgICAgICAkY29tcGlsZV9ydWxlU2V0ID0gbmV3IENvbXBpbGVcUnVsZVNldCgkY29udGVudCk7CiAgICAgICAgICAgICAgICAkY29tcGlsZV9ydWxlU2V0LT5jb21waWxlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIERlY2xhcmF0aW9uQmxvY2sKICAgICAgICAgICAgaWYgKCRjb250ZW50IGluc3RhbmNlb2YgXFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jayl7CiAgICAgICAgICAgICAgICAgJGNvbXBpbGVfZGVjbGFyYXRpb25CbG9jayA9IG5ldyBDb21waWxlXERlY2xhcmF0aW9uQmxvY2soJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgICRtX2RlY2xhcmF0aW9uQmxvY2sgPSAkY29tcGlsZV9kZWNsYXJhdGlvbkJsb2NrLT5jb21waWxlKCk7CgogICAgICAgICAgICAgICAgIGlmICgkbV9kZWNsYXJhdGlvbkJsb2NrKXsKICAgICAgICAgICAgICAgICAgICAgIC8vIFBzZXVkbyBzZWxjdG9ycyBtdXN0IGhhdmUgdGhlaXIgb3duIERlY2xhcmF0aW9uIEJsb2NrCiAgICAgICAgICAgICAgICAgICAgICAkdmVuZG9yX2NvbnRlbnRzID0gYXJyYXlfbWVyZ2UoJHZlbmRvcl9jb250ZW50cywgJG1fZGVjbGFyYXRpb25CbG9jayk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBBdFJ1bGUKICAgICAgICAgICAgaWYoJGNvbnRlbnQgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQXRSdWxlKXsKICAgICAgICAgICAgICAgICRjb21waWxlX2F0UnVsZSA9IG5ldyBDb21waWxlXEF0UnVsZSgkY29udGVudCk7CiAgICAgICAgICAgICAgICAkbV9hdFJ1bGVzID0gJGNvbXBpbGVfYXRSdWxlLT5jb21waWxlKCk7CgogICAgICAgICAgICAgICAgaWYoJG1fYXRSdWxlcyl7CiAgICAgICAgICAgICAgICAgICAgJHZlbmRvcl9jb250ZW50cyA9IGFycmF5X21lcmdlKCR2ZW5kb3JfY29udGVudHMsICRtX2F0UnVsZXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDU1NMaXN0CiAgICAgICAgICAgIGlmKCRjb250ZW50IGluc3RhbmNlb2YgXFNhYmJlcndvcm1cQ1NTXENTU0xpc3RcQ1NTTGlzdCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVDU1NMaXN0KCRjb250ZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gUmVtb3ZlIGFscmVhZHkgZXhpc3RpbmcgdmVuZG9yIGNvbnRlbnQKICAgICAgICAgICAgJHZlbmRvcl9jb250ZW50cyA9IGFycmF5X2ZpbHRlcigkdmVuZG9yX2NvbnRlbnRzLCBmdW5jdGlvbigkdmVuZG9yX2NvbnRlbnQpIHVzZSgkbV9jb250ZW50cyl7CiAgICAgICAgICAgICAgICBpZighaW5fYXJyYXkoKHN0cmluZykkdmVuZG9yX2NvbnRlbnQsIGFycmF5X21hcCgnc3RydmFsJywgJG1fY29udGVudHMpKSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBBZGQgdmVuZG9yIGNvbnRlbnQKICAgICAgICAgICAgaWYoJHZlbmRvcl9jb250ZW50cyl7CiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJG1fY29udGVudHMsICRrZXkgKyAkdG90YWxfYWRkZWQsIDAsICR2ZW5kb3JfY29udGVudHMpOwogICAgICAgICAgICAgICAgJHRvdGFsX2FkZGVkICs9IGNvdW50KCR2ZW5kb3JfY29udGVudHMpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkY3NzX2xpc3QtPnNldENvbnRlbnRzKCRtX2NvbnRlbnRzKTsKICAgIH0KCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Compile/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Compile/AtRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxDb21waWxlOwoKdXNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7CgovKioKICogQ29tcGlsZSBDU1MgQXRSdWxlCiAqIFRoaXMgY2xhc3MgdW5kZXIgY29uc3RydWN0aW9uCiAqLwpjbGFzcyBBdFJ1bGUgewogICAgLyoqCiAgICAgKiBAdHlwZSBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQXRSdWxlCiAgICAgKi8KICAgIHByaXZhdGUgJGF0UnVsZTsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhdFJ1bGUpewogICAgICAgIGlmKCRhdFJ1bGUgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQXRSdWxlKXsKICAgICAgICAgICAgJHRoaXMtPmF0UnVsZSA9ICRhdFJ1bGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ0ludmFsaWQgYXJndW1lbnQhIFJlcXVpcmUgaW5zdGFuY2Ugb2YgXFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZScpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBDb21waWxlIEF0UnVsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgpewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0VmVuZG9yc1J1bGUoKTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvcnNSdWxlKCl7CiAgICAgICAgJHZlbmRvcnNfcnVsZSA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaChWZW5kb3I6OmdldFZlbmRvcnMoKSBhcyAkdmVuZG9yKXsKICAgICAgICAgICAgJHZlbmRvcl9ydWxlX25hbWUgPSAkdGhpcy0+Z2V0VmVuZG9yUnVsZU5hbWUoJHZlbmRvcik7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkdmVuZG9yX3J1bGVfbmFtZSl7CiAgICAgICAgICAgICAgICAkdmVuZG9yc19ydWxlW10gPSAkdmVuZG9yX3J1bGVfbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHZlbmRvcnNfcnVsZTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvclJ1bGVOYW1lKCR2ZW5kb3IpewogICAgICAgICR2ZW5kb3JfcnVsZV9uYW1lcyA9IFZlbmRvcjo6Z2V0QVRSdWxlKCR2ZW5kb3IpOwogICAgICAgIAogICAgICAgICRnZW5lcmljX3J1bGVfbmFtZSA9ICR0aGlzLT5hdFJ1bGUtPmF0UnVsZU5hbWUoKTsKICAgICAgICAKICAgICAgICBpZihpc3NldCgkdmVuZG9yX3J1bGVfbmFtZXNbJGdlbmVyaWNfcnVsZV9uYW1lXSkpewogICAgICAgICAgICAkdmVuZG9yX2F0X3J1bGUgPSBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCR0aGlzLT5hdFJ1bGUgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcQ1NTTGlzdFxLZXlGcmFtZSl7CiAgICAgICAgICAgICAgICAkdmVuZG9yX2F0X3J1bGUgPSBjbG9uZSAkdGhpcy0+YXRSdWxlOwogICAgICAgICAgICAgICAgJHZlbmRvcl9hdF9ydWxlLT5zZXRWZW5kb3JLZXlGcmFtZSgkdmVuZG9yX3J1bGVfbmFtZXNbJGdlbmVyaWNfcnVsZV9uYW1lXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCR0aGlzLT5hdFJ1bGUgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcQ1NTTGlzdFxBdFJ1bGVCbG9ja0xpc3QpewogICAgICAgICAgICAgICAgJHZlbmRvcl9hdF9ydWxlID0gbmV3IFxTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XEF0UnVsZUJsb2NrTGlzdCgkdmVuZG9yX3J1bGVfbmFtZXNbJGdlbmVyaWNfcnVsZV9uYW1lXSwgJHRoaXMtPmF0UnVsZS0+YXRSdWxlQXJncygpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuICR2ZW5kb3JfYXRfcnVsZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgCi8vICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwYXJzZUFyZ3MoJGFyZ1N0cil7Ci8vICAgICAgICAkcGFyc2VBcmcgPSBhcnJheSgpOwovLyAgICAgICAgJHBhcnNlQXJnWyd0eXBlJ10gPSAnYm94JzsKLy8gICAgICAgICRwYXJzZUFyZ1sndmFsdWUnXSA9ICcnOwovLyAgICAgICAgCi8vICAgICAgICAkYXJnU3RyID0gbHRyaW0odHJpbSgkYXJnU3RyKSwgJygnKTsKLy8gICAgICAgIAovLyAgICAgICAgZm9yKCRpID0gMDsgJGkgPCBzdHJsZW4oJGFyZ1N0cik7ICRpKyspewovLyAgICAgICAgICAgIGlmKCRhcmdTdHJbJGldID09ICcoJyl7Ci8vICAgICAgICAgICAgICAgIAovLyAgICAgICAgICAgICAgICAKLy8gICAgICAgICAgICB9IGVsc2VpZigkYXJnU3RyWyRpXSA9PSAnKScpewovLyAgICAgICAgICAgICAgICBicmVhazsKLy8gICAgICAgICAgICB9Ci8vICAgICAgICB9Ci8vICAgICAgICAKLy8gICAgICAgIHJldHVybiAkcGFyc2VBcmc7Ci8vICAgIH0KfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Compile/DeclarationBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxDb21waWxlOwoKY2xhc3MgRGVjbGFyYXRpb25CbG9jayB7CiAgICAvKioKICAgICAqIEB0eXBlIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XERlY2xhcmF0aW9uQmxvY2sKICAgICAqLwogICAgcHJpdmF0ZSAkZGVjbGFyYXRpb25CbG9jazsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkZWNsYXJhdGlvbkJsb2NrKXsKICAgICAgICBpZigkZGVjbGFyYXRpb25CbG9jayBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XERlY2xhcmF0aW9uQmxvY2spewogICAgICAgICAgICAkdGhpcy0+ZGVjbGFyYXRpb25CbG9jayA9ICRkZWNsYXJhdGlvbkJsb2NrOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGFyZ3VtZW50ISBSZXF1aXJlIGluc3RhbmNlIG9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XERlY2xhcmF0aW9uQmxvY2snKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ29tcGlsZSBcU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CiAgICAgICAgJG1fc2VsZWN0b3JzID0gJHRoaXMtPmRlY2xhcmF0aW9uQmxvY2stPmdldFNlbGVjdG9ycygpOwogICAgICAgIAogICAgICAgICR0b3RhbF9hZGRlZCA9IDA7CiAgICAgICAgJF92ZW5kb3JzX3NlbGVjdG9yID0gW107CgogICAgICAgIGZvcmVhY2goJHRoaXMtPmRlY2xhcmF0aW9uQmxvY2stPmdldFNlbGVjdG9ycygpIGFzICRrZXkgPT4gJHNlbGVjdG9yKXsKICAgICAgICAgICAgJHBhcnNlX3NlbGVjdG9yID0gbmV3IFxQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcUGFyc2VcU2VsZWN0b3IoJHNlbGVjdG9yKTsKICAgICAgICAgICAgJHZlbmRvcnNfc2VsZWN0b3IgPSAkcGFyc2Vfc2VsZWN0b3ItPmdldFZlbmRvcnNTZWxlY3RvcigpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gUmVtb3ZlIGFscmVhZHkgZXhpc3RpbmcgdmFsdWUKICAgICAgICAgICAgJF92ZW5kb3JzX3NlbGVjdG9yID0gYXJyYXlfbWVyZ2UoJF92ZW5kb3JzX3NlbGVjdG9yLCBhcnJheV9maWx0ZXIoJHZlbmRvcnNfc2VsZWN0b3IsIGZ1bmN0aW9uICgkdmVuZG9yX3NlbGVjdG9yKSB1c2UgKCRtX3NlbGVjdG9ycykgewogICAgICAgICAgICAgICAgaWYoIWluX2FycmF5KChzdHJpbmcpJHZlbmRvcl9zZWxlY3RvciwgYXJyYXlfbWFwKCdzdHJ2YWwnLCAkbV9zZWxlY3RvcnMpKSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYoJF92ZW5kb3JzX3NlbGVjdG9yKXsKICAgICAgICAgICAgICAgIGFycmF5X3NwbGljZSgkbV9zZWxlY3RvcnMsICRrZXkgKyAkdG90YWxfYWRkZWQsIDAsICR2ZW5kb3JzX3NlbGVjdG9yKTsKICAgICAgICAgICAgICAgICR0b3RhbF9hZGRlZCArPSBjb3VudCgkX3ZlbmRvcnNfc2VsZWN0b3IpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgkdG90YWxfYWRkZWQpewogICAgICAgICAgICAgJHZlbmRvcl9jb250ZW50cyA9IFtdOwoKICAgICAgICAgICAgIGZvcmVhY2ggKCRfdmVuZG9yc19zZWxlY3RvciBhcyAka2V5ID0+ICRzZWxlY3Rvcil7CiAgICAgICAgICAgICAgICAgICRwX2RlY2xhcmF0aW9uQmxvY2sgPSBjbG9uZSAkdGhpcy0+ZGVjbGFyYXRpb25CbG9jazsKICAgICAgICAgICAgICAgICAgJHBfZGVjbGFyYXRpb25CbG9jay0+c2V0U2VsZWN0b3JzKCRzZWxlY3Rvci0+Z2V0U2VsZWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgICR2ZW5kb3JfY29udGVudHNbXSA9ICRwX2RlY2xhcmF0aW9uQmxvY2s7CiAgICAgICAgICAgICB9CgogICAgICAgICAgICAgcmV0dXJuICR2ZW5kb3JfY29udGVudHM7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGVjbGFyYXRpb25CbG9jay0+c2V0U2VsZWN0b3JzKCRtX3NlbGVjdG9ycyk7CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Compile/RuleSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxDb21waWxlOwoKY2xhc3MgUnVsZVNldCB7CiAgICAvKioKICAgICAqIEB0eXBlIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XFJ1bGVTZXQKICAgICAqLwogICAgcHJpdmF0ZSAkcnVsZVNldDsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRydWxlU2V0KXsKICAgICAgICBpZigkcnVsZVNldCBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XFJ1bGVTZXQpewogICAgICAgICAgICAkdGhpcy0+cnVsZVNldCA9ICRydWxlU2V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGFyZ3VtZW50ISBSZXF1aXJlIGluc3RhbmNlIG9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XFJ1bGVTZXQnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ29tcGlsZSBcU2FiYmVyd29ybVxDU1NcUnVsZVNldFxSdWxlU2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CiAgICAgICAgJG1fcnVsZXMgPSAkdGhpcy0+cnVsZVNldC0+Z2V0UnVsZXMoKTsKICAgICAgICAKICAgICAgICAkdG90YWxfYWRkZWQgPSAwOwogICAgICAgIGZvcmVhY2goJHRoaXMtPnJ1bGVTZXQtPmdldFJ1bGVzKCkgYXMgJGtleSA9PiAkcnVsZSl7CiAgICAgICAgICAgICRwYXJzZXJfcnVsZSA9IG5ldyBcUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFBhcnNlXFJ1bGUoJHJ1bGUpOwogICAgICAgICAgICAkdmVuZG9yX3J1bGVzID0gJHBhcnNlcl9ydWxlLT5nZXRWZW5kb3JSdWxlcygpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gUmVtb3ZlIGFscmVhZHkgZXhpc3RpbmcgdmFsdWUKICAgICAgICAgICAgJHZlbmRvcl9ydWxlcyA9IGFycmF5X2ZpbHRlcigkdmVuZG9yX3J1bGVzLCBmdW5jdGlvbigkdmVuZG9yX3J1bGUpIHVzZSgkbV9ydWxlcykgewogICAgICAgICAgICAgICAgaWYoIWluX2FycmF5KChzdHJpbmcpJHZlbmRvcl9ydWxlLCBhcnJheV9tYXAoJ3N0cnZhbCcsICRtX3J1bGVzKSkpewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYoJHZlbmRvcl9ydWxlcyl7CiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJG1fcnVsZXMsICRrZXkgKyAkdG90YWxfYWRkZWQsIDAsICR2ZW5kb3JfcnVsZXMpOwogICAgICAgICAgICAgICAgJHRvdGFsX2FkZGVkICs9IGNvdW50KCR2ZW5kb3JfcnVsZXMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5ydWxlU2V0LT5zZXRSdWxlcygkbV9ydWxlcyk7CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Parse/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Parse/Property.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxQYXJzZTsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yOwoKY2xhc3MgUHJvcGVydHkgewogICAgLyoqCiAgICAgKiBAdHlwZSBTdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkcE5hbWU7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcE5hbWUpewogICAgICAgICR0aGlzLT5wTmFtZSA9ICRwTmFtZTsKICAgIH0KICAgIAovLyAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmVuZG9yc1Byb3BlcnR5KCl7Ci8vICAgICAgICAkdmVuZG9yX3Byb3BlcnRpZXMgPSBhcnJheSgpOwovLyAgICAgICAgCi8vICAgICAgICBmb3JlYWNoKFZlbmRvcjo6Z2V0VmVuZG9ycygpIGFzICR2ZW5kb3IpewovLyAgICAgICAgICAgICR2ZW5kb3JfcHJvcGVydHlfc2V0ID0gVmVuZG9yOjpnZXRSdWxlUHJvcGVydHkoJHZlbmRvcik7Ci8vICAgICAgICAgICAgCi8vICAgICAgICAgICAgaWYoaXNzZXQoJHZlbmRvcl9wcm9wZXJ0eV9zZXRbJHRoaXMtPnBOYW1lXSkpIHsKLy8gICAgICAgICAgICAgICAgJHZlbmRvcl9wcm9wZXJ0aWVzW10gPSBuZXcgUHJvcGVydHkoJHZlbmRvcl9wcm9wZXJ0eV9zZXRbJHRoaXMtPnBOYW1lXSk7Ci8vICAgICAgICAgICAgfQovLyAgICAgICAgfQovLyAgICAgICAgCi8vICAgICAgICByZXR1cm4gJHZlbmRvcl9wcm9wZXJ0aWVzOwovLyAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWZW5kb3JQcm9wZXJ0eSgkdmVuZG9yKXsKICAgICAgICAkdmVuZG9yX3Byb3BlcnR5X3NldCA9IFZlbmRvcjo6Z2V0UnVsZVByb3BlcnR5KCR2ZW5kb3IpOwoKICAgICAgICBpZihpc3NldCgkdmVuZG9yX3Byb3BlcnR5X3NldFskdGhpcy0+cE5hbWVdKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFByb3BlcnR5KCR2ZW5kb3JfcHJvcGVydHlfc2V0WyR0aGlzLT5wTmFtZV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICAKLy8gICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvclZhbHVlKCRnZW5lcmljX3ZhbHVlLCAkdmVuZG9yKXsKLy8gICAgICAgICR2ZW5kb3JfdmFsdWVzID0gYXJyYXkoKTsKLy8gICAgICAgIAovLyAgICAgICAgLy8gR2V0IHZlbmRvciBsaXN0Ci8vICAgICAgICAkdmVuZG9ycyA9IGFycmF5KCk7Ci8vICAgICAgICBpZigkdmVuZG9yKXsKLy8gICAgICAgICAgICAkdmVuZG9yc1tdID0gJHZlbmRvcjsKLy8gICAgICAgIH0gZWxzZSB7Ci8vICAgICAgICAgICAgJHZlbmRvcnMgPSBWZW5kb3I6OmdldFZlbmRvcnMoKTsKLy8gICAgICAgIH0KLy8gICAgICAgIAovLyAgICAgICAgZm9yZWFjaCgkdmVuZG9ycyBhcyAkdmVuZG9yKXsKLy8gICAgICAgICAgICAkdmVuZG9yX3ZhbHVlX3NldCA9IFZlbmRvcjo6Z2V0UnVsZVZhbHVlKCR2ZW5kb3IpOwovLyAgICAgICAgICAgIAovLyAgICAgICAgICAgIGlmKGlzc2V0KCR2ZW5kb3JfdmFsdWVfc2V0WyR0aGlzLT5wTmFtZV1bJGdlbmVyaWNfdmFsdWVdKSkgewovLyAgICAgICAgICAgICAgICAkdmVuZG9yX3ZhbHVlc1tdID0gJHZlbmRvcl92YWx1ZV9zZXRbJHRoaXMtPnBOYW1lXVskZ2VuZXJpY192YWx1ZV07Ci8vICAgICAgICAgICAgfQovLyAgICAgICAgfQovLyAgICAgICAgCi8vICAgICAgICByZXR1cm4gJHZlbmRvcl92YWx1ZXM7Ci8vICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvclZhbHVlKCRnZW5lcmljX3ZhbHVlLCAkdmVuZG9yKXsKICAgICAgICAkdmVuZG9yX3ZhbHVlX3NldCA9IFZlbmRvcjo6Z2V0UnVsZVZhbHVlKCR2ZW5kb3IpOwoKICAgICAgICBpZihpc19zdHJpbmcoJGdlbmVyaWNfdmFsdWUpICYmIGlzc2V0KCR2ZW5kb3JfdmFsdWVfc2V0WyR0aGlzLT5wTmFtZV1bJGdlbmVyaWNfdmFsdWVdKSkgewogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuICR2ZW5kb3JfdmFsdWVfc2V0WyR0aGlzLT5wTmFtZV1bJGdlbmVyaWNfdmFsdWVdOwogICAgICAgIH0gZWxzZWlmKGlzX3N0cmluZygkZ2VuZXJpY192YWx1ZSkpIHsgLy8gcGFyc2UgdmFsdWUgYXMgcHJvcGVydHkKICAgICAgICAgICAgCiAgICAgICAgICAgICR2ZW5kb3JfcHJvcGVydHlfc2V0ID0gVmVuZG9yOjpnZXRSdWxlUHJvcGVydHkoJHZlbmRvcik7CiAgICAgICAgICAgIGlmKGlzc2V0KCR2ZW5kb3JfcHJvcGVydHlfc2V0WyRnZW5lcmljX3ZhbHVlXSkpewogICAgICAgICAgICAgICAgcmV0dXJuICR2ZW5kb3JfcHJvcGVydHlfc2V0WyRnZW5lcmljX3ZhbHVlXTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmKCRnZW5lcmljX3ZhbHVlIGluc3RhbmNlb2YgXFNhYmJlcndvcm1cQ1NTXFZhbHVlXFZhbHVlTGlzdCl7CiAgICAgICAgICAgIAogICAgICAgICAgICAkdmVuZG9yX3ZhbHVlID0gY2xvbmUgJGdlbmVyaWNfdmFsdWU7CiAgICAgICAgICAgIAogICAgICAgICAgICAkbGlzdF9jb21wb25lbnRzID0gJHZlbmRvcl92YWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKTsKICAgICAgICAgICAgZm9yZWFjaCgkbGlzdF9jb21wb25lbnRzIGFzICRrZXkgPT4gJGNvbXBvbmVudCl7CiAgICAgICAgICAgICAgICAkdmVuZG9yX2NvbXBvbmVudCA9ICR0aGlzLT5nZXRWZW5kb3JWYWx1ZSgkY29tcG9uZW50LCAkdmVuZG9yKTsKICAgICAgICAgICAgICAgIGlmKCR2ZW5kb3JfY29tcG9uZW50KXsKICAgICAgICAgICAgICAgICAgICAkbGlzdF9jb21wb25lbnRzWyRrZXldID0gJHZlbmRvcl9jb21wb25lbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHZlbmRvcl92YWx1ZS0+c2V0TGlzdENvbXBvbmVudHMoJGxpc3RfY29tcG9uZW50cyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkdmVuZG9yX3ZhbHVlICE9ICRnZW5lcmljX3ZhbHVlKXsKICAgICAgICAgICAgICAgIHJldHVybiAkdmVuZG9yX3ZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wTmFtZTsKICAgIH0KICAgIAp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Parse/Rule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxQYXJzZTsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yOwp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFBhcnNlXFByb3BlcnR5OwoKY2xhc3MgUnVsZSB7CiAgICAvKioKICAgICAqIEB0eXBlIFxTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUKICAgICAqLwogICAgcHJpdmF0ZSAkcnVsZTsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRydWxlKXsKICAgICAgICBpZigkcnVsZSBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUpewogICAgICAgICAgICAkdGhpcy0+cnVsZSA9ICRydWxlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGFyZ3VtZW50ISBSZXF1aXJlIGluc3RhbmNlIG9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ3JlYXRlIHZlbmRvciBydWxlcyBvZiBnZW5lcmljIHJ1bGUKICAgICAqIEByZXR1cm4gQXJyYXkgVmVuZG9yIHJ1bGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWZW5kb3JSdWxlcygpewogICAgICAgICR2ZW5kb3JfcnVsZXMgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIGZvcmVhY2goVmVuZG9yOjpnZXRWZW5kb3JzKCkgYXMgJHZlbmRvcil7CiAgICAgICAgICAgICRydWxlX3Byb3BlcnR5ID0gbmV3IFByb3BlcnR5KCR0aGlzLT5ydWxlLT5nZXRSdWxlKCkpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gVmVuZG9yIHByb3BlcnR5CiAgICAgICAgICAgICRydWxlX3ZlbmRvcl9wcm9wZXJ0eSA9ICRydWxlX3Byb3BlcnR5LT5nZXRWZW5kb3JQcm9wZXJ0eSgkdmVuZG9yKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCRydWxlX3ZlbmRvcl9wcm9wZXJ0eSl7CiAgICAgICAgICAgICAgICAkdmVuZG9yX3J1bGUgPSBjbG9uZSAkdGhpcy0+cnVsZTsKICAgICAgICAgICAgICAgICR2ZW5kb3JfcnVsZS0+c2V0UnVsZSgoc3RyaW5nKSRydWxlX3ZlbmRvcl9wcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR2ZW5kb3JfdmFsdWUgPSAkcnVsZV92ZW5kb3JfcHJvcGVydHktPmdldFZlbmRvclZhbHVlKCR0aGlzLT5ydWxlLT5nZXRWYWx1ZSgpLCAkdmVuZG9yKTsKICAgICAgICAgICAgICAgIGlmKCR2ZW5kb3JfdmFsdWUpewogICAgICAgICAgICAgICAgICAgICR2ZW5kb3JfcnVsZS0+c2V0VmFsdWUoJHZlbmRvcl92YWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR2ZW5kb3JfcnVsZXNbXSA9ICR2ZW5kb3JfcnVsZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gVmVuZG9yIHZhbHVlCiAgICAgICAgICAgICRydWxlX3ZlbmRvcl92YWx1ZSA9ICRydWxlX3Byb3BlcnR5LT5nZXRWZW5kb3JWYWx1ZSgkdGhpcy0+cnVsZS0+Z2V0VmFsdWUoKSwgJHZlbmRvcik7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkcnVsZV92ZW5kb3JfdmFsdWUpewogICAgICAgICAgICAgICAgJHZlbmRvcl9ydWxlID0gY2xvbmUgJHRoaXMtPnJ1bGU7CiAgICAgICAgICAgICAgICAkdmVuZG9yX3J1bGUtPnNldFZhbHVlKCRydWxlX3ZlbmRvcl92YWx1ZSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR2ZW5kb3JfcnVsZXNbXSA9ICR2ZW5kb3JfcnVsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHZlbmRvcl9ydWxlczsKICAgIH0KICAgIAogICAgCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Parse/Selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxQYXJzZTsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yOwoKY2xhc3MgU2VsZWN0b3IgewogICAgLyoqCiAgICAgKiBAdHlwZSBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcU2VsZWN0b3IKICAgICAqLwogICAgcHJpdmF0ZSAkc2VsZWN0b3I7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc2VsZWN0b3IpewogICAgICAgIGlmKCRzZWxlY3RvciBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3Rvcil7CiAgICAgICAgICAgICR0aGlzLT5zZWxlY3RvciA9ICRzZWxlY3RvcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignSW52YWxpZCBhcmd1bWVudCEgUmVxdWlyZSBpbnN0YW5jZSBvZiBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcU2VsZWN0b3InKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ3JlYXRlIGxpc3Qgb2YgdmVuZG9yIHByZWZpeGVkIHNlbGVjdG9ycwogICAgICogQHJldHVybiBBcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmVuZG9yc1NlbGVjdG9yKCl7CiAgICAgICAgJHZlbmRvcl9zZWxlY3RvcnMgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIGZvcmVhY2goVmVuZG9yOjpnZXRWZW5kb3JzKCkgYXMgJHZlbmRvcil7CiAgICAgICAgICAgICR2ZW5kb3Jfc2VsZWN0b3IgPSAkdGhpcy0+Z2V0VmVuZG9yU2VsZWN0b3IoJHZlbmRvcik7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkdmVuZG9yX3NlbGVjdG9yIGluc3RhbmNlb2YgXFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yKXsKICAgICAgICAgICAgICAgICR2ZW5kb3Jfc2VsZWN0b3JzW10gPSAkdmVuZG9yX3NlbGVjdG9yOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkdmVuZG9yX3NlbGVjdG9yczsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgdmVuZG9yIHNlbGVjdG9yIG9mIGdlbmVyaWMgc2VsZWN0b3IKICAgICAqIEByZXR1cm4gTWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvclNlbGVjdG9yKCR2ZW5kb3IpewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0VmVuZG9yUHNldWRvKCR2ZW5kb3IpOwogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmVuZG9yUHNldWRvKCR2ZW5kb3IpewogICAgICAgICR2ZW5kb3JfcHNldWRvcyA9IFZlbmRvcjo6Z2V0UHNldWRvKCR2ZW5kb3IpOwogICAgICAgIAogICAgICAgICRtX2dlbmVyaWNfc2VsZWN0b3IgPSAkdGhpcy0+c2VsZWN0b3ItPmdldFNlbGVjdG9yKCk7CiAgICAgICAgCiAgICAgICAgLy8gUHNldWRvCiAgICAgICAgZm9yZWFjaCgkdmVuZG9yX3BzZXVkb3MgYXMgJGdlbmVyaWNfcHNldWRvID0+ICR2ZW5kb3JfcHNldWRvKXsKICAgICAgICAgICAgaWYoc3RycG9zKCRtX2dlbmVyaWNfc2VsZWN0b3IsICRnZW5lcmljX3BzZXVkbykgIT09IGZhbHNlKXsKICAgICAgICAgICAgICAgICRtX2dlbmVyaWNfc2VsZWN0b3IgPSBzdHJfcmVwbGFjZSgkZ2VuZXJpY19wc2V1ZG8sICR2ZW5kb3JfcHNldWRvLCAkbV9nZW5lcmljX3NlbGVjdG9yKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZigkbV9nZW5lcmljX3NlbGVjdG9yICE9PSAkdGhpcy0+c2VsZWN0b3ItPmdldFNlbGVjdG9yKCkpewogICAgICAgICAgICAkbmV3X3NlbGVjdG9yID0gY2xvbmUgJHRoaXMtPnNlbGVjdG9yOwogICAgICAgICAgICAkbmV3X3NlbGVjdG9yLT5zZXRTZWxlY3RvcigkbV9nZW5lcmljX3NlbGVjdG9yKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiAkbmV3X3NlbGVjdG9yOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlcjsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yXElFOwp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxNb3ppbGxhOwp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxXZWJraXQ7CgpjbGFzcyBWZW5kb3IgewogICAgcHVibGljIHN0YXRpYyAkdmVuZG9ycyA9IGFycmF5KAogICAgICAgIElFOjpjbGFzcywKICAgICAgICBNb3ppbGxhOjpjbGFzcywKICAgICAgICBXZWJraXQ6OmNsYXNzCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0UnVsZVByb3BlcnR5KCR2ZW5kb3IpewogICAgICAgIHJldHVybiAkdmVuZG9yOjpnZXRSdWxlUHJvcGVydHkoKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFJ1bGVWYWx1ZSgkdmVuZG9yKXsKICAgICAgICByZXR1cm4gJHZlbmRvcjo6Z2V0UnVsZVZhbHVlKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQc2V1ZG8oJHZlbmRvcil7CiAgICAgICAgcmV0dXJuICR2ZW5kb3I6OmdldFBzZXVkbygpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QVRSdWxlKCR2ZW5kb3IpewogICAgICAgIHJldHVybiAkdmVuZG9yOjpnZXRBVFJ1bGUoKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFZlbmRvcnMoKXsKICAgICAgICByZXR1cm4gc2VsZjo6JHZlbmRvcnM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXRWZW5kb3JzKCR2ZW5kb3JzKXsKICAgICAgICBzZWxmOjokdmVuZG9ycyA9ICR2ZW5kb3JzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/IE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7Cgp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxWZW5kb3I7CgpjbGFzcyBJRSBleHRlbmRzIFZlbmRvciB7CiAgICBwcm90ZWN0ZWQgc3RhdGljICRSVUxFX1BST1BFUlRZID0gYXJyYXkoCiAgICAgICAgJ2ZsZXgnID0+ICctbXMtZmxleCcsCiAgICAgICAgJ2ZsZXgtd3JhcCcgPT4gJy1tcy1mbGV4LXdyYXAnLAogICAgICAgICdmbGV4LWJhc2lzJyA9PiAnLW1zLWZsZXgtcHJlZmVycmVkLXNpemUnLAogICAgICAgICdmbGV4LWdyb3cnID0+ICctbXMtZmxleC1wb3NpdGl2ZScsCiAgICAgICAgJ2ZsZXgtZmxvdycgPT4gJy1tcy1mbGV4LWZsb3cnLAogICAgICAgICdmbGV4LWRpcmVjdGlvbicgPT4gJy1tcy1mbGV4LWRpcmVjdGlvbicsCiAgICAgICAgJ2ZsZXgtc2hyaW5rJyA9PiAnLW1zLWZsZXgtbmVnYXRpdmUnLAogICAgICAgICdmbG93LWZyb20nID0+ICctbXMtZmxvdy1mcm9tJywKICAgICAgICAnZmxvdy1pbnRvJyA9PiAnLW1zLWZsb3ctaW50bycsCiAgICAgICAgJ2FsaWduLWl0ZW1zJyA9PiAnLW1zLWZsZXgtYWxpZ24nLAogICAgICAgICdhbGlnbi1jb250ZW50JyA9PiAnLW1zLWZsZXgtbGluZS1wYWNrJywKICAgICAgICAnYWxpZ24tc2VsZicgPT4gJy1tcy1mbGV4LWl0ZW0tYWxpZ24nLAogICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnID0+ICctbXMtZmxleC1wYWNrJywKICAgICAgICAnb3JkZXInID0+ICctbXMtZmxleC1vcmRlcicsCiAgICAgICAgJ3VzZXItc2VsZWN0JyA9PiAnLW1zLXVzZXItc2VsZWN0JywKICAgICAgICAnaHlwaGVucycgPT4gJy1tcy1oeXBoZW5zJywKICAgICAgICAnd29yZC1icmVhaycgPT4gJy1tcy13b3JkLWJyZWFrJywKICAgICAgICAndHJhbnNmb3JtJyAgPT4gJy1tcy10cmFuc2Zvcm0nLAogICAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJyAgPT4gJy1tcy10cmFuc2Zvcm0tb3JpZ2luJwogICAgKTsKICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyAkUlVMRV9WQUxVRSA9IGFycmF5KAogICAgICAgICdkaXNwbGF5JyA9PiBhcnJheSgKICAgICAgICAgICAgJ2ZsZXgnID0+ICctbXMtZmxleGJveCcsCiAgICAgICAgICAgICdpbmxpbmUtZmxleCcgPT4gJy1tcy1pbmxpbmUtZmxleGJveCcsCiAgICAgICAgICAgICdncmlkJyA9PiAnLW1zLWdyaWQnLAogICAgICAgICksCiAgICAgICAgJy1tcy1mbGV4LWFsaWduJyA9PiBhcnJheSgnZmxleC1zdGFydCcgPT4gJ3N0YXJ0JywgJ2ZsZXgtZW5kJyA9PiAnZW5kJyksCiAgICAgICAgJy1tcy1mbGV4LWxpbmUtcGFjaycgPT4gYXJyYXkoJ2ZsZXgtc3RhcnQnID0+ICdzdGFydCcsICdmbGV4LWVuZCcgPT4gJ2VuZCcsICdzcGFjZS1iZXR3ZWVuJyA9PiAnanVzdGlmeScsICdzcGFjZS1hcm91bmQnID0+ICdkaXN0cmlidXRlJyksCiAgICAgICAgJy1tcy1mbGV4LWl0ZW0tYWxpZ24nID0+IGFycmF5KCdmbGV4LXN0YXJ0JyA9PiAnc3RhcnQnLCAnZmxleC1lbmQnID0+ICdlbmQnLCAnc3BhY2UtYmV0d2VlbicgPT4gJ2p1c3RpZnknLCAnc3BhY2UtYXJvdW5kJyA9PiAnZGlzdHJpYnV0ZScpLAogICAgICAgICctbXMtZmxleC1wYWNrJyA9PiBhcnJheSgnc3BhY2UtYmV0d2VlbicgPT4gJ2p1c3RpZnknLCAnZmxleC1zdGFydCcgPT4gJ3N0YXJ0JywgJ2ZsZXgtZW5kJyA9PiAnZW5kJywgJ3NwYWNlLWFyb3VuZCcgPT4gJ2Rpc3RyaWJ1dGUnKSwKICAgICAgICAKICAgICk7CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgJFBTRVVETyA9IGFycmF5KAogICAgICAgICc6OnBsYWNlaG9sZGVyJyA9PiAnOjotbXMtaW5wdXQtcGxhY2Vob2xkZXInLAogICAgICAgICc6cGxhY2Vob2xkZXItc2hvd24nID0+ICc6LW1zLWlucHV0LXBsYWNlaG9sZGVyJywKICAgICk7Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/Mozilla.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7Cgp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxWZW5kb3I7CgpjbGFzcyBNb3ppbGxhIGV4dGVuZHMgVmVuZG9yIHsKICAgIHByb3RlY3RlZCBzdGF0aWMgJFJVTEVfUFJPUEVSVFkgPSBhcnJheSgKICAgICAgICAnY29sdW1uLWNvdW50JyA9PiAnLW1vei1jb2x1bW4tY291bnQnLAogICAgICAgICdjb2x1bW4tZ2FwJyA9PiAnLW1vei1jb2x1bW4tZ2FwJywKICAgICAgICAnY29sdW1uLXJ1bGUnID0+ICctbW96LWNvbHVtbi1ydWxlJywKICAgICAgICAndXNlci1zZWxlY3QnID0+ICctbW96LXVzZXItc2VsZWN0JywKICAgICAgICAnYXBwZWFyYW5jZScgPT4gJy1tb3otYXBwZWFyYW5jZScsCiAgICAgICAgJ2ZvbnQtZmVhdHVyZS1zZXR0aW5ncycgPT4gJy1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzJywKICAgICAgICAnaHlwaGVucycgPT4gJy1tb3otaHlwaGVucycsCiAgICAgICAgCiAgICApOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRQU0VVRE8gPSBhcnJheSgKICAgICAgICAnOjpwbGFjZWhvbGRlcicgPT4gJzo6LW1vei1wbGFjZWhvbGRlcicsCiAgICAgICAgJzpwbGFjZWhvbGRlci1zaG93bicgPT4gJzotbW96LXBsYWNlaG9sZGVyLXNob3duJywKICAgICk7Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/Vendor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7CgphYnN0cmFjdCBjbGFzcyBWZW5kb3IgewogICAgcHJvdGVjdGVkIHN0YXRpYyAkUlVMRV9QUk9QRVJUWSA9IGFycmF5KCk7CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgJFJVTEVfVkFMVUUgPSBhcnJheSgpOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRQU0VVRE8gPSBhcnJheSgpOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRBVF9SVUxFID0gYXJyYXkoKTsKICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSdWxlUHJvcGVydHkoKXsKICAgICAgICByZXR1cm4gc3RhdGljOjokUlVMRV9QUk9QRVJUWTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSdWxlVmFsdWUoKXsKICAgICAgICByZXR1cm4gc3RhdGljOjokUlVMRV9WQUxVRTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQc2V1ZG8oKXsKICAgICAgICByZXR1cm4gc3RhdGljOjokUFNFVURPOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEFUUnVsZSgpewogICAgICAgIHJldHVybiBzdGF0aWM6OiRBVF9SVUxFOwogICAgfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/Webkit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7Cgp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxWZW5kb3I7CgpjbGFzcyBXZWJraXQgZXh0ZW5kcyBWZW5kb3IgewogICAgcHJvdGVjdGVkIHN0YXRpYyAkUlVMRV9QUk9QRVJUWSA9IGFycmF5KAogICAgICAgICdib3gtcmVmbGVjdCcgPT4gJy13ZWJraXQtYm94LXJlZmxlY3QnLAogICAgICAgICdjb2x1bW4tY291bnQnID0+ICctd2Via2l0LWNvbHVtbi1jb3VudCcsCiAgICAgICAgJ2NvbHVtbi1nYXAnID0+ICctd2Via2l0LWNvbHVtbi1nYXAnLAogICAgICAgICdjb2x1bW4tcnVsZScgPT4gJy13ZWJraXQtY29sdW1uLXJ1bGUnLAogICAgICAgICdjbGlwLXBhdGgnID0+ICctd2Via2l0LWNsaXAtcGF0aCcsCiAgICAgICAgJ3VzZXItc2VsZWN0JyA9PiAnLXdlYmtpdC11c2VyLXNlbGVjdCcsCiAgICAgICAgJ2FwcGVhcmFuY2UnID0+ICctd2Via2l0LWFwcGVhcmFuY2UnLAogICAgICAgICdhbmltYXRpb24nID0+ICctd2Via2l0LWFuaW1hdGlvbicsCiAgICAgICAgJ3RyYW5zaXRpb24nID0+ICctd2Via2l0LXRyYW5zaXRpb24nLAogICAgICAgICd0cmFuc2Zvcm0nID0+ICctd2Via2l0LXRyYW5zZm9ybScsCiAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nID0+ICctd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4nLAogICAgICAgICdiYWNrZmFjZS12aXNpYmlsaXR5JyA9PiAnLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5JywKICAgICAgICAncGVyc3BlY3RpdmUnID0+ICctd2Via2l0LXBlcnNwZWN0aXZlJywKICAgICAgICAnYmFja2dyb3VuZC1jbGlwJyA9PiAnLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXAnLAogICAgICAgICdmaWx0ZXInID0+ICctd2Via2l0LWZpbHRlcicsCiAgICAgICAgJ2ZvbnQtZmVhdHVyZS1zZXR0aW5ncycgPT4gJy13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzJywKICAgICAgICAnZmxvdy1mcm9tJyA9PiAnLXdlYmtpdC1mbG93LWZyb20nLAogICAgICAgICdmbG93LWludG8nID0+ICctd2Via2l0LWZsb3ctaW50bycsCiAgICAgICAgJ2h5cGhlbnMnID0+ICctd2Via2l0LWh5cGhlbnMnLAogICAgICAgICdtYXNrLWltYWdlJyA9PiAnLXdlYmtpdC1tYXNrLWltYWdlJywKICAgICk7CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgJFJVTEVfVkFMVUUgPSBhcnJheSgKICAgICAgICAnZGlzcGxheScgPT4gYXJyYXkoCiAgICAgICAgICAgICdmbGV4JyA9PiAnLXdlYmtpdC1mbGV4JywKICAgICAgICAgICAgJ2lubGluZS1mbGV4JyA9PiAnLXdlYmtpdC1pbmxpbmUtZmxleCcsCiAgICAgICAgKSwKICAgICAgICAncG9zaXRpb24nID0+IGFycmF5KCdzdGlja3knID0+ICctd2Via2l0LXN0aWNreScpCiAgICApOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRQU0VVRE8gPSBhcnJheSgKICAgICAgICAnOjpwbGFjZWhvbGRlcicgPT4gJzo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcicsCiAgICAgICAgJzo6ZmlsZS1zZWxlY3Rvci1idXR0b24nID0+ICc6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uJywKICAgICk7CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgJEFUX1JVTEUgPSBhcnJheSgna2V5ZnJhbWVzJyA9PiAnLXdlYmtpdC1rZXlmcmFtZXMnKTsKfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiaHAvdGVzdCIsCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciI6ICJeMS4wIgogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/nbproject/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/nbproject/project.properties</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aW5jbHVkZS5wYXRoPSR7cGhwLmdsb2JhbC5pbmNsdWRlLnBhdGh9DQpwaHAudmVyc2lvbj1QSFBfNTYNCnNvdXJjZS5lbmNvZGluZz1VVEYtOA0Kc3JjLmRpcj0uDQp0YWdzLmFzcD1mYWxzZQ0KdGFncy5zaG9ydD1mYWxzZQ0Kd2ViLnJvb3Q9Lg0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/nbproject/project.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxwcm9qZWN0IHhtbG5zPSJodHRwOi8vd3d3Lm5ldGJlYW5zLm9yZy9ucy9wcm9qZWN0LzEiPg0KICAgIDx0eXBlPm9yZy5uZXRiZWFucy5tb2R1bGVzLnBocC5wcm9qZWN0PC90eXBlPg0KICAgIDxjb25maWd1cmF0aW9uPg0KICAgICAgICA8ZGF0YSB4bWxucz0iaHR0cDovL3d3dy5uZXRiZWFucy5vcmcvbnMvcGhwLXByb2plY3QvMSI+DQogICAgICAgICAgICA8bmFtZT50ZXN0PC9uYW1lPg0KICAgICAgICA8L2RhdGE+DQogICAgPC9jb25maWd1cmF0aW9uPg0KPC9wcm9qZWN0Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/orignal-bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2NC4xLjMgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pCiAqIENvcHlyaWdodCAyMDExLTIwMTggVGhlIEJvb3RzdHJhcCBBdXRob3JzCiAqIENvcHlyaWdodCAyMDExLTIwMTggVHdpdHRlciwgSW5jLgogKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKQogKi8KOnJvb3QgewogIC0tYmx1ZTogIzAwN2JmZjsKICAtLWluZGlnbzogIzY2MTBmMjsKICAtLXB1cnBsZTogIzZmNDJjMTsKICAtLXBpbms6ICNlODNlOGM7CiAgLS1yZWQ6ICNkYzM1NDU7CiAgLS1vcmFuZ2U6ICNmZDdlMTQ7CiAgLS15ZWxsb3c6ICNmZmMxMDc7CiAgLS1ncmVlbjogIzI4YTc0NTsKICAtLXRlYWw6ICMyMGM5OTc7CiAgLS1jeWFuOiAjMTdhMmI4OwogIC0td2hpdGU6ICNmZmY7CiAgLS1ncmF5OiAjNmM3NTdkOwogIC0tZ3JheS1kYXJrOiAjMzQzYTQwOwogIC0tcHJpbWFyeTogIzAwN2JmZjsKICAtLXNlY29uZGFyeTogIzZjNzU3ZDsKICAtLXN1Y2Nlc3M6ICMyOGE3NDU7CiAgLS1pbmZvOiAjMTdhMmI4OwogIC0td2FybmluZzogI2ZmYzEwNzsKICAtLWRhbmdlcjogI2RjMzU0NTsKICAtLWxpZ2h0OiAjZjhmOWZhOwogIC0tZGFyazogIzM0M2E0MDsKICAtLWJyZWFrcG9pbnQteHM6IDA7CiAgLS1icmVha3BvaW50LXNtOiA1NzZweDsKICAtLWJyZWFrcG9pbnQtbWQ6IDc2OHB4OwogIC0tYnJlYWtwb2ludC1sZzogOTkycHg7CiAgLS1icmVha3BvaW50LXhsOiAxMjAwcHg7CiAgLS1mb250LWZhbWlseS1zYW5zLXNlcmlmOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7CiAgLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkxpYmVyYXRpb24gTW9ubyIsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKfQoKKiwKKjo6YmVmb3JlLAoqOjphZnRlciB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKaHRtbCB7CiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CiAgbGluZS1oZWlnaHQ6IDEuMTU7CiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogc2Nyb2xsYmFyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQoKQC1tcy12aWV3cG9ydCB7CiAgd2lkdGg6IGRldmljZS13aWR0aDsKfQoKYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHsKICBkaXNwbGF5OiBibG9jazsKfQoKYm9keSB7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7CiAgZm9udC1zaXplOiAxcmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzIxMjUyOTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KClt0YWJpbmRleD0iLTEiXTpmb2N1cyB7CiAgb3V0bGluZTogMCAhaW1wb3J0YW50Owp9CgpociB7CiAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgaGVpZ2h0OiAwOwogIG92ZXJmbG93OiB2aXNpYmxlOwp9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKfQoKcCB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9CgphYmJyW3RpdGxlXSwKYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQgOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsKICBjdXJzb3I6IGhlbHA7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoKYWRkcmVzcyB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCm9sLAp1bCwKZGwgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKfQoKb2wgb2wsCnVsIHVsLApvbCB1bCwKdWwgb2wgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KCmR0IHsKICBmb250LXdlaWdodDogNzAwOwp9CgpkZCB7CiAgbWFyZ2luLWJvdHRvbTogLjVyZW07CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCmJsb2NrcXVvdGUgewogIG1hcmdpbjogMCAwIDFyZW07Cn0KCmRmbiB7CiAgZm9udC1zdHlsZTogaXRhbGljOwp9CgpiLApzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiBib2xkZXI7Cn0KCnNtYWxsIHsKICBmb250LXNpemU6IDgwJTsKfQoKc3ViLApzdXAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmb250LXNpemU6IDc1JTsKICBsaW5lLWhlaWdodDogMDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KCnN1YiB7CiAgYm90dG9tOiAtLjI1ZW07Cn0KCnN1cCB7CiAgdG9wOiAtLjVlbTsKfQoKYSB7CiAgY29sb3I6ICMwMDdiZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7Cn0KCmE6aG92ZXIgewogIGNvbG9yOiAjMDA1NmIzOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKSB7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpob3ZlciwgYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMgewogIGNvbG9yOiBpbmhlcml0OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMgewogIG91dGxpbmU6IDA7Cn0KCnByZSwKY29kZSwKa2JkLApzYW1wIHsKICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMWVtOwp9CgpwcmUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBvdmVyZmxvdzogYXV0bzsKICAtbXMtb3ZlcmZsb3ctc3R5bGU6IHNjcm9sbGJhcjsKfQoKZmlndXJlIHsKICBtYXJnaW46IDAgMCAxcmVtOwp9CgppbWcgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgYm9yZGVyLXN0eWxlOiBub25lOwp9CgpzdmcgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKdGFibGUgewogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Cn0KCmNhcHRpb24gewogIHBhZGRpbmctdG9wOiAwLjc1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIHRleHQtYWxpZ246IGxlZnQ7CiAgY2FwdGlvbi1zaWRlOiBib3R0b207Cn0KCnRoIHsKICB0ZXh0LWFsaWduOiBpbmhlcml0Owp9CgpsYWJlbCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKfQoKYnV0dG9uIHsKICBib3JkZXItcmFkaXVzOiAwOwp9CgpidXR0b246Zm9jdXMgewogIG91dGxpbmU6IDFweCBkb3R0ZWQ7CiAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yOwp9CgppbnB1dCwKYnV0dG9uLApzZWxlY3QsCm9wdGdyb3VwLAp0ZXh0YXJlYSB7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKfQoKYnV0dG9uLAppbnB1dCB7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmJ1dHRvbiwKc2VsZWN0IHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQoKYnV0dG9uLApodG1sIFt0eXBlPSJidXR0b24iXSwKW3R5cGU9InJlc2V0Il0sClt0eXBlPSJzdWJtaXQiXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247Cn0KCmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwKW3R5cGU9ImJ1dHRvbiJdOjotbW96LWZvY3VzLWlubmVyLApbdHlwZT0icmVzZXQiXTo6LW1vei1mb2N1cy1pbm5lciwKW3R5cGU9InN1Ym1pdCJdOjotbW96LWZvY3VzLWlubmVyIHsKICBwYWRkaW5nOiAwOwogIGJvcmRlci1zdHlsZTogbm9uZTsKfQoKaW5wdXRbdHlwZT0icmFkaW8iXSwKaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBwYWRkaW5nOiAwOwp9CgppbnB1dFt0eXBlPSJkYXRlIl0sCmlucHV0W3R5cGU9InRpbWUiXSwKaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSwKaW5wdXRbdHlwZT0ibW9udGgiXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94Owp9Cgp0ZXh0YXJlYSB7CiAgb3ZlcmZsb3c6IGF1dG87CiAgcmVzaXplOiB2ZXJ0aWNhbDsKfQoKZmllbGRzZXQgewogIG1pbi13aWR0aDogMDsKICBwYWRkaW5nOiAwOwogIG1hcmdpbjogMDsKICBib3JkZXI6IDA7Cn0KCmxlZ2VuZCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgbWF4LXdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLWJvdHRvbTogLjVyZW07CiAgZm9udC1zaXplOiAxLjVyZW07CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKcHJvZ3Jlc3MgewogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKW3R5cGU9Im51bWJlciJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLApbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogIGhlaWdodDogYXV0bzsKfQoKW3R5cGU9InNlYXJjaCJdIHsKICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KClt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwKW3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewogIGZvbnQ6IGluaGVyaXQ7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247Cn0KCm91dHB1dCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgpzdW1tYXJ5IHsKICBkaXNwbGF5OiBsaXN0LWl0ZW07CiAgY3Vyc29yOiBwb2ludGVyOwp9Cgp0ZW1wbGF0ZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKW2hpZGRlbl0gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwKLmgxLCAuaDIsIC5oMywgLmg0LCAuaDUsIC5oNiB7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKICBjb2xvcjogaW5oZXJpdDsKfQoKaDEsIC5oMSB7CiAgZm9udC1zaXplOiAyLjVyZW07Cn0KCmgyLCAuaDIgewogIGZvbnQtc2l6ZTogMnJlbTsKfQoKaDMsIC5oMyB7CiAgZm9udC1zaXplOiAxLjc1cmVtOwp9CgpoNCwgLmg0IHsKICBmb250LXNpemU6IDEuNXJlbTsKfQoKaDUsIC5oNSB7CiAgZm9udC1zaXplOiAxLjI1cmVtOwp9CgpoNiwgLmg2IHsKICBmb250LXNpemU6IDFyZW07Cn0KCi5sZWFkIHsKICBmb250LXNpemU6IDEuMjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKfQoKLmRpc3BsYXktMSB7CiAgZm9udC1zaXplOiA2cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQoKLmRpc3BsYXktMiB7CiAgZm9udC1zaXplOiA1LjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBsaW5lLWhlaWdodDogMS4yOwp9CgouZGlzcGxheS0zIHsKICBmb250LXNpemU6IDQuNXJlbTsKICBmb250LXdlaWdodDogMzAwOwogIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KCi5kaXNwbGF5LTQgewogIGZvbnQtc2l6ZTogMy41cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQoKaHIgewogIG1hcmdpbi10b3A6IDFyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoKc21hbGwsCi5zbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7CiAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKbWFyaywKLm1hcmsgewogIHBhZGRpbmc6IDAuMmVtOwogIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7Cn0KCi5saXN0LXVuc3R5bGVkIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lLWl0ZW0gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07Cn0KCi5pbml0aWFsaXNtIHsKICBmb250LXNpemU6IDkwJTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CgouYmxvY2txdW90ZSB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07Cn0KCi5ibG9ja3F1b3RlLWZvb3RlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiA4MCU7CiAgY29sb3I6ICM2Yzc1N2Q7Cn0KCi5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHsKICBjb250ZW50OiAiXDIwMTQgXDAwQTAiOwp9CgouaW1nLWZsdWlkIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9CgouaW1nLXRodW1ibmFpbCB7CiAgcGFkZGluZzogMC4yNXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9CgouZmlndXJlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5maWd1cmUtaW1nIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgbGluZS1oZWlnaHQ6IDE7Cn0KCi5maWd1cmUtY2FwdGlvbiB7CiAgZm9udC1zaXplOiA5MCU7CiAgY29sb3I6ICM2Yzc1N2Q7Cn0KCmNvZGUgewogIGZvbnQtc2l6ZTogODcuNSU7CiAgY29sb3I6ICNlODNlOGM7CiAgd29yZC1icmVhazogYnJlYWstd29yZDsKfQoKYSA+IGNvZGUgewogIGNvbG9yOiBpbmhlcml0Owp9CgprYmQgewogIHBhZGRpbmc6IDAuMnJlbSAwLjRyZW07CiAgZm9udC1zaXplOiA4Ny41JTsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQoKa2JkIGtiZCB7CiAgcGFkZGluZzogMDsKICBmb250LXNpemU6IDEwMCU7CiAgZm9udC13ZWlnaHQ6IDcwMDsKfQoKcHJlIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDg3LjUlOwogIGNvbG9yOiAjMjEyNTI5Owp9CgpwcmUgY29kZSB7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGNvbG9yOiBpbmhlcml0OwogIHdvcmQtYnJlYWs6IG5vcm1hbDsKfQoKLnByZS1zY3JvbGxhYmxlIHsKICBtYXgtaGVpZ2h0OiAzNDBweDsKICBvdmVyZmxvdy15OiBzY3JvbGw7Cn0KCi5jb250YWluZXIgewogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIG1hcmdpbi1yaWdodDogYXV0bzsKICBtYXJnaW4tbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDU0MHB4OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDcyMHB4OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDk2MHB4OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMTQwcHg7CiAgfQp9CgouY29udGFpbmVyLWZsdWlkIHsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5yb3cgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICBtYXJnaW4tbGVmdDogLTE1cHg7Cn0KCi5uby1ndXR0ZXJzIHsKICBtYXJnaW4tcmlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5uby1ndXR0ZXJzID4gLmNvbCwKLm5vLWd1dHRlcnMgPiBbY2xhc3MqPSJjb2wtIl0gewogIHBhZGRpbmctcmlnaHQ6IDA7CiAgcGFkZGluZy1sZWZ0OiAwOwp9CgouY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLAouY29sLWF1dG8sIC5jb2wtc20tMSwgLmNvbC1zbS0yLCAuY29sLXNtLTMsIC5jb2wtc20tNCwgLmNvbC1zbS01LCAuY29sLXNtLTYsIC5jb2wtc20tNywgLmNvbC1zbS04LCAuY29sLXNtLTksIC5jb2wtc20tMTAsIC5jb2wtc20tMTEsIC5jb2wtc20tMTIsIC5jb2wtc20sCi5jb2wtc20tYXV0bywgLmNvbC1tZC0xLCAuY29sLW1kLTIsIC5jb2wtbWQtMywgLmNvbC1tZC00LCAuY29sLW1kLTUsIC5jb2wtbWQtNiwgLmNvbC1tZC03LCAuY29sLW1kLTgsIC5jb2wtbWQtOSwgLmNvbC1tZC0xMCwgLmNvbC1tZC0xMSwgLmNvbC1tZC0xMiwgLmNvbC1tZCwKLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLAouY29sLWxnLWF1dG8sIC5jb2wteGwtMSwgLmNvbC14bC0yLCAuY29sLXhsLTMsIC5jb2wteGwtNCwgLmNvbC14bC01LCAuY29sLXhsLTYsIC5jb2wteGwtNywgLmNvbC14bC04LCAuY29sLXhsLTksIC5jb2wteGwtMTAsIC5jb2wteGwtMTEsIC5jb2wteGwtMTIsIC5jb2wteGwsCi5jb2wteGwtYXV0byB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKfQoKLmNvbCB7CiAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7CiAgZmxleC1iYXNpczogMDsKICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICBmbGV4LWdyb3c6IDE7CiAgbWF4LXdpZHRoOiAxMDAlOwp9CgouY29sLWF1dG8gewogIC1tcy1mbGV4OiAwIDAgYXV0bzsKICBmbGV4OiAwIDAgYXV0bzsKICB3aWR0aDogYXV0bzsKICBtYXgtd2lkdGg6IG5vbmU7Cn0KCi5jb2wtMSB7CiAgLW1zLWZsZXg6IDAgMCA4LjMzMzMzMyU7CiAgZmxleDogMCAwIDguMzMzMzMzJTsKICBtYXgtd2lkdGg6IDguMzMzMzMzJTsKfQoKLmNvbC0yIHsKICAtbXMtZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgbWF4LXdpZHRoOiAxNi42NjY2NjclOwp9CgouY29sLTMgewogIC1tcy1mbGV4OiAwIDAgMjUlOwogIGZsZXg6IDAgMCAyNSU7CiAgbWF4LXdpZHRoOiAyNSU7Cn0KCi5jb2wtNCB7CiAgLW1zLWZsZXg6IDAgMCAzMy4zMzMzMzMlOwogIGZsZXg6IDAgMCAzMy4zMzMzMzMlOwogIG1heC13aWR0aDogMzMuMzMzMzMzJTsKfQoKLmNvbC01IHsKICAtbXMtZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgbWF4LXdpZHRoOiA0MS42NjY2NjclOwp9CgouY29sLTYgewogIC1tcy1mbGV4OiAwIDAgNTAlOwogIGZsZXg6IDAgMCA1MCU7CiAgbWF4LXdpZHRoOiA1MCU7Cn0KCi5jb2wtNyB7CiAgLW1zLWZsZXg6IDAgMCA1OC4zMzMzMzMlOwogIGZsZXg6IDAgMCA1OC4zMzMzMzMlOwogIG1heC13aWR0aDogNTguMzMzMzMzJTsKfQoKLmNvbC04IHsKICAtbXMtZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgbWF4LXdpZHRoOiA2Ni42NjY2NjclOwp9CgouY29sLTkgewogIC1tcy1mbGV4OiAwIDAgNzUlOwogIGZsZXg6IDAgMCA3NSU7CiAgbWF4LXdpZHRoOiA3NSU7Cn0KCi5jb2wtMTAgewogIC1tcy1mbGV4OiAwIDAgODMuMzMzMzMzJTsKICBmbGV4OiAwIDAgODMuMzMzMzMzJTsKICBtYXgtd2lkdGg6IDgzLjMzMzMzMyU7Cn0KCi5jb2wtMTEgewogIC1tcy1mbGV4OiAwIDAgOTEuNjY2NjY3JTsKICBmbGV4OiAwIDAgOTEuNjY2NjY3JTsKICBtYXgtd2lkdGg6IDkxLjY2NjY2NyU7Cn0KCi5jb2wtMTIgewogIC1tcy1mbGV4OiAwIDAgMTAwJTsKICBmbGV4OiAwIDAgMTAwJTsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KCi5vcmRlci1maXJzdCB7CiAgLW1zLWZsZXgtb3JkZXI6IC0xOwogIG9yZGVyOiAtMTsKfQoKLm9yZGVyLWxhc3QgewogIC1tcy1mbGV4LW9yZGVyOiAxMzsKICBvcmRlcjogMTM7Cn0KCi5vcmRlci0wIHsKICAtbXMtZmxleC1vcmRlcjogMDsKICBvcmRlcjogMDsKfQoKLm9yZGVyLTEgewogIC1tcy1mbGV4LW9yZGVyOiAxOwogIG9yZGVyOiAxOwp9Cgoub3JkZXItMiB7CiAgLW1zLWZsZXgtb3JkZXI6IDI7CiAgb3JkZXI6IDI7Cn0KCi5vcmRlci0zIHsKICAtbXMtZmxleC1vcmRlcjogMzsKICBvcmRlcjogMzsKfQoKLm9yZGVyLTQgewogIC1tcy1mbGV4LW9yZGVyOiA0OwogIG9yZGVyOiA0Owp9Cgoub3JkZXItNSB7CiAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgb3JkZXI6IDU7Cn0KCi5vcmRlci02IHsKICAtbXMtZmxleC1vcmRlcjogNjsKICBvcmRlcjogNjsKfQoKLm9yZGVyLTcgewogIC1tcy1mbGV4LW9yZGVyOiA3OwogIG9yZGVyOiA3Owp9Cgoub3JkZXItOCB7CiAgLW1zLWZsZXgtb3JkZXI6IDg7CiAgb3JkZXI6IDg7Cn0KCi5vcmRlci05IHsKICAtbXMtZmxleC1vcmRlcjogOTsKICBvcmRlcjogOTsKfQoKLm9yZGVyLTEwIHsKICAtbXMtZmxleC1vcmRlcjogMTA7CiAgb3JkZXI6IDEwOwp9Cgoub3JkZXItMTEgewogIC1tcy1mbGV4LW9yZGVyOiAxMTsKICBvcmRlcjogMTE7Cn0KCi5vcmRlci0xMiB7CiAgLW1zLWZsZXgtb3JkZXI6IDEyOwogIG9yZGVyOiAxMjsKfQoKLm9mZnNldC0xIHsKICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlOwp9Cgoub2Zmc2V0LTIgewogIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjclOwp9Cgoub2Zmc2V0LTMgewogIG1hcmdpbi1sZWZ0OiAyNSU7Cn0KCi5vZmZzZXQtNCB7CiAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7Cn0KCi5vZmZzZXQtNSB7CiAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NyU7Cn0KCi5vZmZzZXQtNiB7CiAgbWFyZ2luLWxlZnQ6IDUwJTsKfQoKLm9mZnNldC03IHsKICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTsKfQoKLm9mZnNldC04IHsKICBtYXJnaW4tbGVmdDogNjYuNjY2NjY3JTsKfQoKLm9mZnNldC05IHsKICBtYXJnaW4tbGVmdDogNzUlOwp9Cgoub2Zmc2V0LTEwIHsKICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTsKfQoKLm9mZnNldC0xMSB7CiAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NyU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jb2wtc20gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7CiAgICBmbGV4LWJhc2lzOiAwOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDE7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtc20tYXV0byB7CiAgICAtbXMtZmxleDogMCAwIGF1dG87CiAgICBmbGV4OiAwIDAgYXV0bzsKICAgIHdpZHRoOiBhdXRvOwogICAgbWF4LXdpZHRoOiBub25lOwogIH0KICAuY29sLXNtLTEgewogICAgLW1zLWZsZXg6IDAgMCA4LjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgOC4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4LjMzMzMzMyU7CiAgfQogIC5jb2wtc20tMiB7CiAgICAtbXMtZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgMTYuNjY2NjY3JTsKICAgIG1heC13aWR0aDogMTYuNjY2NjY3JTsKICB9CiAgLmNvbC1zbS0zIHsKICAgIC1tcy1mbGV4OiAwIDAgMjUlOwogICAgZmxleDogMCAwIDI1JTsKICAgIG1heC13aWR0aDogMjUlOwogIH0KICAuY29sLXNtLTQgewogICAgLW1zLWZsZXg6IDAgMCAzMy4zMzMzMzMlOwogICAgZmxleDogMCAwIDMzLjMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMyU7CiAgfQogIC5jb2wtc20tNSB7CiAgICAtbXMtZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgNDEuNjY2NjY3JTsKICAgIG1heC13aWR0aDogNDEuNjY2NjY3JTsKICB9CiAgLmNvbC1zbS02IHsKICAgIC1tcy1mbGV4OiAwIDAgNTAlOwogICAgZmxleDogMCAwIDUwJTsKICAgIG1heC13aWR0aDogNTAlOwogIH0KICAuY29sLXNtLTcgewogICAgLW1zLWZsZXg6IDAgMCA1OC4zMzMzMzMlOwogICAgZmxleDogMCAwIDU4LjMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMyU7CiAgfQogIC5jb2wtc20tOCB7CiAgICAtbXMtZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgNjYuNjY2NjY3JTsKICAgIG1heC13aWR0aDogNjYuNjY2NjY3JTsKICB9CiAgLmNvbC1zbS05IHsKICAgIC1tcy1mbGV4OiAwIDAgNzUlOwogICAgZmxleDogMCAwIDc1JTsKICAgIG1heC13aWR0aDogNzUlOwogIH0KICAuY29sLXNtLTEwIHsKICAgIC1tcy1mbGV4OiAwIDAgODMuMzMzMzMzJTsKICAgIGZsZXg6IDAgMCA4My4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4My4zMzMzMzMlOwogIH0KICAuY29sLXNtLTExIHsKICAgIC1tcy1mbGV4OiAwIDAgOTEuNjY2NjY3JTsKICAgIGZsZXg6IDAgMCA5MS42NjY2NjclOwogICAgbWF4LXdpZHRoOiA5MS42NjY2NjclOwogIH0KICAuY29sLXNtLTEyIHsKICAgIC1tcy1mbGV4OiAwIDAgMTAwJTsKICAgIGZsZXg6IDAgMCAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAub3JkZXItc20tZmlyc3QgewogICAgLW1zLWZsZXgtb3JkZXI6IC0xOwogICAgb3JkZXI6IC0xOwogIH0KICAub3JkZXItc20tbGFzdCB7CiAgICAtbXMtZmxleC1vcmRlcjogMTM7CiAgICBvcmRlcjogMTM7CiAgfQogIC5vcmRlci1zbS0wIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAwOwogICAgb3JkZXI6IDA7CiAgfQogIC5vcmRlci1zbS0xIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxOwogICAgb3JkZXI6IDE7CiAgfQogIC5vcmRlci1zbS0yIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAyOwogICAgb3JkZXI6IDI7CiAgfQogIC5vcmRlci1zbS0zIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAzOwogICAgb3JkZXI6IDM7CiAgfQogIC5vcmRlci1zbS00IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgb3JkZXI6IDQ7CiAgfQogIC5vcmRlci1zbS01IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA1OwogICAgb3JkZXI6IDU7CiAgfQogIC5vcmRlci1zbS02IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA2OwogICAgb3JkZXI6IDY7CiAgfQogIC5vcmRlci1zbS03IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgb3JkZXI6IDc7CiAgfQogIC5vcmRlci1zbS04IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA4OwogICAgb3JkZXI6IDg7CiAgfQogIC5vcmRlci1zbS05IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA5OwogICAgb3JkZXI6IDk7CiAgfQogIC5vcmRlci1zbS0xMCB7CiAgICAtbXMtZmxleC1vcmRlcjogMTA7CiAgICBvcmRlcjogMTA7CiAgfQogIC5vcmRlci1zbS0xMSB7CiAgICAtbXMtZmxleC1vcmRlcjogMTE7CiAgICBvcmRlcjogMTE7CiAgfQogIC5vcmRlci1zbS0xMiB7CiAgICAtbXMtZmxleC1vcmRlcjogMTI7CiAgICBvcmRlcjogMTI7CiAgfQogIC5vZmZzZXQtc20tMCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLm9mZnNldC1zbS0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMyU7CiAgfQogIC5vZmZzZXQtc20tMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY3JTsKICB9CiAgLm9mZnNldC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAyNSU7CiAgfQogIC5vZmZzZXQtc20tNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzJTsKICB9CiAgLm9mZnNldC1zbS01IHsKICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjclOwogIH0KICAub2Zmc2V0LXNtLTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLm9mZnNldC1zbS03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTggewogICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtc20tOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlOwogIH0KICAub2Zmc2V0LXNtLTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjclOwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbC1tZCB7CiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKICAgIGZsZXgtYmFzaXM6IDA7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLmNvbC1tZC1hdXRvIHsKICAgIC1tcy1mbGV4OiAwIDAgYXV0bzsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQogIC5jb2wtbWQtMSB7CiAgICAtbXMtZmxleDogMCAwIDguMzMzMzMzJTsKICAgIGZsZXg6IDAgMCA4LjMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDguMzMzMzMzJTsKICB9CiAgLmNvbC1tZC0yIHsKICAgIC1tcy1mbGV4OiAwIDAgMTYuNjY2NjY3JTsKICAgIGZsZXg6IDAgMCAxNi42NjY2NjclOwogICAgbWF4LXdpZHRoOiAxNi42NjY2NjclOwogIH0KICAuY29sLW1kLTMgewogICAgLW1zLWZsZXg6IDAgMCAyNSU7CiAgICBmbGV4OiAwIDAgMjUlOwogICAgbWF4LXdpZHRoOiAyNSU7CiAgfQogIC5jb2wtbWQtNCB7CiAgICAtbXMtZmxleDogMCAwIDMzLjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzJTsKICAgIG1heC13aWR0aDogMzMuMzMzMzMzJTsKICB9CiAgLmNvbC1tZC01IHsKICAgIC1tcy1mbGV4OiAwIDAgNDEuNjY2NjY3JTsKICAgIGZsZXg6IDAgMCA0MS42NjY2NjclOwogICAgbWF4LXdpZHRoOiA0MS42NjY2NjclOwogIH0KICAuY29sLW1kLTYgewogICAgLW1zLWZsZXg6IDAgMCA1MCU7CiAgICBmbGV4OiAwIDAgNTAlOwogICAgbWF4LXdpZHRoOiA1MCU7CiAgfQogIC5jb2wtbWQtNyB7CiAgICAtbXMtZmxleDogMCAwIDU4LjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgNTguMzMzMzMzJTsKICAgIG1heC13aWR0aDogNTguMzMzMzMzJTsKICB9CiAgLmNvbC1tZC04IHsKICAgIC1tcy1mbGV4OiAwIDAgNjYuNjY2NjY3JTsKICAgIGZsZXg6IDAgMCA2Ni42NjY2NjclOwogICAgbWF4LXdpZHRoOiA2Ni42NjY2NjclOwogIH0KICAuY29sLW1kLTkgewogICAgLW1zLWZsZXg6IDAgMCA3NSU7CiAgICBmbGV4OiAwIDAgNzUlOwogICAgbWF4LXdpZHRoOiA3NSU7CiAgfQogIC5jb2wtbWQtMTAgewogICAgLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMlOwogICAgZmxleDogMCAwIDgzLjMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzMyU7CiAgfQogIC5jb2wtbWQtMTEgewogICAgLW1zLWZsZXg6IDAgMCA5MS42NjY2NjclOwogICAgZmxleDogMCAwIDkxLjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtMTIgewogICAgLW1zLWZsZXg6IDAgMCAxMDAlOwogICAgZmxleDogMCAwIDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5vcmRlci1tZC1maXJzdCB7CiAgICAtbXMtZmxleC1vcmRlcjogLTE7CiAgICBvcmRlcjogLTE7CiAgfQogIC5vcmRlci1tZC1sYXN0IHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxMzsKICAgIG9yZGVyOiAxMzsKICB9CiAgLm9yZGVyLW1kLTAgewogICAgLW1zLWZsZXgtb3JkZXI6IDA7CiAgICBvcmRlcjogMDsKICB9CiAgLm9yZGVyLW1kLTEgewogICAgLW1zLWZsZXgtb3JkZXI6IDE7CiAgICBvcmRlcjogMTsKICB9CiAgLm9yZGVyLW1kLTIgewogICAgLW1zLWZsZXgtb3JkZXI6IDI7CiAgICBvcmRlcjogMjsKICB9CiAgLm9yZGVyLW1kLTMgewogICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICBvcmRlcjogMzsKICB9CiAgLm9yZGVyLW1kLTQgewogICAgLW1zLWZsZXgtb3JkZXI6IDQ7CiAgICBvcmRlcjogNDsKICB9CiAgLm9yZGVyLW1kLTUgewogICAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgICBvcmRlcjogNTsKICB9CiAgLm9yZGVyLW1kLTYgewogICAgLW1zLWZsZXgtb3JkZXI6IDY7CiAgICBvcmRlcjogNjsKICB9CiAgLm9yZGVyLW1kLTcgewogICAgLW1zLWZsZXgtb3JkZXI6IDc7CiAgICBvcmRlcjogNzsKICB9CiAgLm9yZGVyLW1kLTggewogICAgLW1zLWZsZXgtb3JkZXI6IDg7CiAgICBvcmRlcjogODsKICB9CiAgLm9yZGVyLW1kLTkgewogICAgLW1zLWZsZXgtb3JkZXI6IDk7CiAgICBvcmRlcjogOTsKICB9CiAgLm9yZGVyLW1kLTEwIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgIG9yZGVyOiAxMDsKICB9CiAgLm9yZGVyLW1kLTExIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxMTsKICAgIG9yZGVyOiAxMTsKICB9CiAgLm9yZGVyLW1kLTEyIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxMjsKICAgIG9yZGVyOiAxMjsKICB9CiAgLm9mZnNldC1tZC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAub2Zmc2V0LW1kLTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzJTsKICB9CiAgLm9mZnNldC1tZC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjclOwogIH0KICAub2Zmc2V0LW1kLTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLm9mZnNldC1tZC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMlOwogIH0KICAub2Zmc2V0LW1kLTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbWQtNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlOwogIH0KICAub2Zmc2V0LW1kLTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY3JTsKICB9CiAgLm9mZnNldC1tZC05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5vZmZzZXQtbWQtMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtMTEgewogICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NyU7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuY29sLWxnIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwogICAgZmxleC1iYXNpczogMDsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAuY29sLWxnLWF1dG8gewogICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgZmxleDogMCAwIGF1dG87CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogbm9uZTsKICB9CiAgLmNvbC1sZy0xIHsKICAgIC1tcy1mbGV4OiAwIDAgOC4zMzMzMzMlOwogICAgZmxleDogMCAwIDguMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMlOwogIH0KICAuY29sLWxnLTIgewogICAgLW1zLWZsZXg6IDAgMCAxNi42NjY2NjclOwogICAgZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7CiAgfQogIC5jb2wtbGctMyB7CiAgICAtbXMtZmxleDogMCAwIDI1JTsKICAgIGZsZXg6IDAgMCAyNSU7CiAgICBtYXgtd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1sZy00IHsKICAgIC1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzJTsKICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlOwogIH0KICAuY29sLWxnLTUgewogICAgLW1zLWZsZXg6IDAgMCA0MS42NjY2NjclOwogICAgZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NyU7CiAgfQogIC5jb2wtbGctNiB7CiAgICAtbXMtZmxleDogMCAwIDUwJTsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1sZy03IHsKICAgIC1tcy1mbGV4OiAwIDAgNTguMzMzMzMzJTsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMlOwogIH0KICAuY29sLWxnLTggewogICAgLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjclOwogICAgZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NyU7CiAgfQogIC5jb2wtbGctOSB7CiAgICAtbXMtZmxleDogMCAwIDc1JTsKICAgIGZsZXg6IDAgMCA3NSU7CiAgICBtYXgtd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1sZy0xMCB7CiAgICAtbXMtZmxleDogMCAwIDgzLjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgODMuMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzJTsKICB9CiAgLmNvbC1sZy0xMSB7CiAgICAtbXMtZmxleDogMCAwIDkxLjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgOTEuNjY2NjY3JTsKICAgIG1heC13aWR0aDogOTEuNjY2NjY3JTsKICB9CiAgLmNvbC1sZy0xMiB7CiAgICAtbXMtZmxleDogMCAwIDEwMCU7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLWxnLWZpcnN0IHsKICAgIC1tcy1mbGV4LW9yZGVyOiAtMTsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLWxnLWxhc3QgewogICAgLW1zLWZsZXgtb3JkZXI6IDEzOwogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXItbGctMCB7CiAgICAtbXMtZmxleC1vcmRlcjogMDsKICAgIG9yZGVyOiAwOwogIH0KICAub3JkZXItbGctMSB7CiAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgIG9yZGVyOiAxOwogIH0KICAub3JkZXItbGctMiB7CiAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXItbGctMyB7CiAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgIG9yZGVyOiAzOwogIH0KICAub3JkZXItbGctNCB7CiAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgIG9yZGVyOiA0OwogIH0KICAub3JkZXItbGctNSB7CiAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXItbGctNiB7CiAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgIG9yZGVyOiA2OwogIH0KICAub3JkZXItbGctNyB7CiAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgIG9yZGVyOiA3OwogIH0KICAub3JkZXItbGctOCB7CiAgICAtbXMtZmxleC1vcmRlcjogODsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXItbGctOSB7CiAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgIG9yZGVyOiA5OwogIH0KICAub3JkZXItbGctMTAgewogICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgb3JkZXI6IDEwOwogIH0KICAub3JkZXItbGctMTEgewogICAgLW1zLWZsZXgtb3JkZXI6IDExOwogICAgb3JkZXI6IDExOwogIH0KICAub3JkZXItbGctMTIgewogICAgLW1zLWZsZXgtb3JkZXI6IDEyOwogICAgb3JkZXI6IDEyOwogIH0KICAub2Zmc2V0LWxnLTAgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5vZmZzZXQtbGctMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlOwogIH0KICAub2Zmc2V0LWxnLTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbGctMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LWxnLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbGctNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTsKICB9CiAgLm9mZnNldC1sZy02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5vZmZzZXQtbGctNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclOwogIH0KICAub2Zmc2V0LWxnLTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLm9mZnNldC1sZy0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuY29sLXhsIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwogICAgZmxleC1iYXNpczogMDsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAuY29sLXhsLWF1dG8gewogICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgZmxleDogMCAwIGF1dG87CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogbm9uZTsKICB9CiAgLmNvbC14bC0xIHsKICAgIC1tcy1mbGV4OiAwIDAgOC4zMzMzMzMlOwogICAgZmxleDogMCAwIDguMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMlOwogIH0KICAuY29sLXhsLTIgewogICAgLW1zLWZsZXg6IDAgMCAxNi42NjY2NjclOwogICAgZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7CiAgfQogIC5jb2wteGwtMyB7CiAgICAtbXMtZmxleDogMCAwIDI1JTsKICAgIGZsZXg6IDAgMCAyNSU7CiAgICBtYXgtd2lkdGg6IDI1JTsKICB9CiAgLmNvbC14bC00IHsKICAgIC1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzJTsKICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlOwogIH0KICAuY29sLXhsLTUgewogICAgLW1zLWZsZXg6IDAgMCA0MS42NjY2NjclOwogICAgZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NyU7CiAgfQogIC5jb2wteGwtNiB7CiAgICAtbXMtZmxleDogMCAwIDUwJTsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC14bC03IHsKICAgIC1tcy1mbGV4OiAwIDAgNTguMzMzMzMzJTsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMlOwogIH0KICAuY29sLXhsLTggewogICAgLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjclOwogICAgZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NyU7CiAgfQogIC5jb2wteGwtOSB7CiAgICAtbXMtZmxleDogMCAwIDc1JTsKICAgIGZsZXg6IDAgMCA3NSU7CiAgICBtYXgtd2lkdGg6IDc1JTsKICB9CiAgLmNvbC14bC0xMCB7CiAgICAtbXMtZmxleDogMCAwIDgzLjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgODMuMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzJTsKICB9CiAgLmNvbC14bC0xMSB7CiAgICAtbXMtZmxleDogMCAwIDkxLjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgOTEuNjY2NjY3JTsKICAgIG1heC13aWR0aDogOTEuNjY2NjY3JTsKICB9CiAgLmNvbC14bC0xMiB7CiAgICAtbXMtZmxleDogMCAwIDEwMCU7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLXhsLWZpcnN0IHsKICAgIC1tcy1mbGV4LW9yZGVyOiAtMTsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLXhsLWxhc3QgewogICAgLW1zLWZsZXgtb3JkZXI6IDEzOwogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXIteGwtMCB7CiAgICAtbXMtZmxleC1vcmRlcjogMDsKICAgIG9yZGVyOiAwOwogIH0KICAub3JkZXIteGwtMSB7CiAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgIG9yZGVyOiAxOwogIH0KICAub3JkZXIteGwtMiB7CiAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXIteGwtMyB7CiAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgIG9yZGVyOiAzOwogIH0KICAub3JkZXIteGwtNCB7CiAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgIG9yZGVyOiA0OwogIH0KICAub3JkZXIteGwtNSB7CiAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXIteGwtNiB7CiAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgIG9yZGVyOiA2OwogIH0KICAub3JkZXIteGwtNyB7CiAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgIG9yZGVyOiA3OwogIH0KICAub3JkZXIteGwtOCB7CiAgICAtbXMtZmxleC1vcmRlcjogODsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXIteGwtOSB7CiAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgIG9yZGVyOiA5OwogIH0KICAub3JkZXIteGwtMTAgewogICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgb3JkZXI6IDEwOwogIH0KICAub3JkZXIteGwtMTEgewogICAgLW1zLWZsZXgtb3JkZXI6IDExOwogICAgb3JkZXI6IDExOwogIH0KICAub3JkZXIteGwtMTIgewogICAgLW1zLWZsZXgtb3JkZXI6IDEyOwogICAgb3JkZXI6IDEyOwogIH0KICAub2Zmc2V0LXhsLTAgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5vZmZzZXQteGwtMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlOwogIH0KICAub2Zmc2V0LXhsLTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7CiAgfQogIC5vZmZzZXQteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LXhsLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7CiAgfQogIC5vZmZzZXQteGwtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTsKICB9CiAgLm9mZnNldC14bC02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5vZmZzZXQteGwtNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclOwogIH0KICAub2Zmc2V0LXhsLTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLm9mZnNldC14bC0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTsKICB9Cn0KCi50YWJsZSB7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLnRhYmxlIHRoLAoudGFibGUgdGQgewogIHBhZGRpbmc6IDAuNzVyZW07CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNjsKfQoKLnRhYmxlIHRoZWFkIHRoIHsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGJvZHkgKyB0Ym9keSB7CiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZSAudGFibGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi50YWJsZS1zbSB0aCwKLnRhYmxlLXNtIHRkIHsKICBwYWRkaW5nOiAwLjNyZW07Cn0KCi50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKfQoKLnRhYmxlLWJvcmRlcmVkIHRoLAoudGFibGUtYm9yZGVyZWQgdGQgewogIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aGVhZCB0aCwKLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRkIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KCi50YWJsZS1ib3JkZXJsZXNzIHRoLAoudGFibGUtYm9yZGVybGVzcyB0ZCwKLnRhYmxlLWJvcmRlcmxlc3MgdGhlYWQgdGgsCi50YWJsZS1ib3JkZXJsZXNzIHRib2R5ICsgdGJvZHkgewogIGJvcmRlcjogMDsKfQoKLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTsKfQoKLnRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoKLnRhYmxlLXByaW1hcnksCi50YWJsZS1wcmltYXJ5ID4gdGgsCi50YWJsZS1wcmltYXJ5ID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzlmY2RmZjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOwp9CgoudGFibGUtc2Vjb25kYXJ5LAoudGFibGUtc2Vjb25kYXJ5ID4gdGgsCi50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNjOGNiY2Y7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNjOGNiY2Y7Cn0KCi50YWJsZS1zdWNjZXNzLAoudGFibGUtc3VjY2VzcyA+IHRoLAoudGFibGUtc3VjY2VzcyA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlNmNiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNiMWRmYmI7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLnRhYmxlLWluZm8sCi50YWJsZS1pbmZvID4gdGgsCi50YWJsZS1pbmZvID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNiZWU1ZWI7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9CgoudGFibGUtd2FybmluZywKLnRhYmxlLXdhcm5pbmcgPiB0aCwKLnRhYmxlLXdhcm5pbmcgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmZmU4YTE7Cn0KCi50YWJsZS1kYW5nZXIsCi50YWJsZS1kYW5nZXIgPiB0aCwKLnRhYmxlLWRhbmdlciA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNzsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNzsKfQoKLnRhYmxlLWxpZ2h0LAoudGFibGUtbGlnaHQgPiB0aCwKLnRhYmxlLWxpZ2h0ID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNmZGZkZmU7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNlY2VjZjY7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2Owp9CgoudGFibGUtZGFyaywKLnRhYmxlLWRhcmsgPiB0aCwKLnRhYmxlLWRhcmsgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNiOWJiYmU7Cn0KCi50YWJsZS1hY3RpdmUsCi50YWJsZS1hY3RpdmUgPiB0aCwKLnRhYmxlLWFjdGl2ZSA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoKLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwogIGJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoKLnRhYmxlIC50aGVhZC1saWdodCB0aCB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KCi50YWJsZS1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5Owp9CgoudGFibGUtZGFyayB0aCwKLnRhYmxlLWRhcmsgdGQsCi50YWJsZS1kYXJrIHRoZWFkIHRoIHsKICBib3JkZXItY29sb3I6ICMzMjM4M2U7Cn0KCi50YWJsZS1kYXJrLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDA7Cn0KCi50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKfQoKLnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNzUpOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1zbSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1zbSA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1tZCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1sZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1sZyA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRhYmxlLXJlc3BvbnNpdmUteGwgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUteGwgPiAudGFibGUtYm9yZGVyZWQgewogICAgYm9yZGVyOiAwOwogIH0KfQoKLnRhYmxlLXJlc3BvbnNpdmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG92ZXJmbG93LXg6IGF1dG87CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwp9CgoudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAwOwp9CgouZm9ybS1jb250cm9sIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsKICBmb250LXNpemU6IDFyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwogIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mb3JtLWNvbnRyb2wgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmQgewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKfQoKLmZvcm0tY29udHJvbDpmb2N1cyB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICM4MGJkZmY7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KCi5mb3JtLWNvbnRyb2w6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjNmM3NTdkOwogIG9wYWNpdHk6IDE7Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjNmM3NTdkOwogIG9wYWNpdHk6IDE7Cn0KCi5mb3JtLWNvbnRyb2w6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzZjNzU3ZDsKICBvcGFjaXR5OiAxOwp9CgouZm9ybS1jb250cm9sOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjNmM3NTdkOwogIG9wYWNpdHk6IDE7Cn0KCi5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzZjNzU3ZDsKICBvcGFjaXR5OiAxOwp9CgouZm9ybS1jb250cm9sOmRpc2FibGVkLCAuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBvcGFjaXR5OiAxOwp9CgpzZWxlY3QuZm9ybS1jb250cm9sOmZvY3VzOjotbXMtdmFsdWUgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5mb3JtLWNvbnRyb2wtZmlsZSwKLmZvcm0tY29udHJvbC1yYW5nZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7Cn0KCi5jb2wtZm9ybS1sYWJlbCB7CiAgcGFkZGluZy10b3A6IGNhbGMoMC4zNzVyZW0gKyAxcHgpOwogIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuMzc1cmVtICsgMXB4KTsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBsaW5lLWhlaWdodDogMS41Owp9CgouY29sLWZvcm0tbGFiZWwtbGcgewogIHBhZGRpbmctdG9wOiBjYWxjKDAuNXJlbSArIDFweCk7CiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtICsgMXB4KTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKLmNvbC1mb3JtLWxhYmVsLXNtIHsKICBwYWRkaW5nLXRvcDogY2FsYygwLjI1cmVtICsgMXB4KTsKICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjI1cmVtICsgMXB4KTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLXRvcDogMC4zNzVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci13aWR0aDogMXB4IDA7Cn0KCi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1zbSwgLmZvcm0tY29udHJvbC1wbGFpbnRleHQuZm9ybS1jb250cm9sLWxnIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQoKLmZvcm0tY29udHJvbC1zbSB7CiAgaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQoKLmZvcm0tY29udHJvbC1sZyB7CiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAwLjNyZW07Cn0KCnNlbGVjdC5mb3JtLWNvbnRyb2xbc2l6ZV0sIHNlbGVjdC5mb3JtLWNvbnRyb2xbbXVsdGlwbGVdIHsKICBoZWlnaHQ6IGF1dG87Cn0KCnRleHRhcmVhLmZvcm0tY29udHJvbCB7CiAgaGVpZ2h0OiBhdXRvOwp9CgouZm9ybS1ncm91cCB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKfQoKLmZvcm0tdGV4dCB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLXRvcDogMC4yNXJlbTsKfQoKLmZvcm0tcm93IHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgZmxleC13cmFwOiB3cmFwOwogIG1hcmdpbi1yaWdodDogLTVweDsKICBtYXJnaW4tbGVmdDogLTVweDsKfQoKLmZvcm0tcm93ID4gLmNvbCwKLmZvcm0tcm93ID4gW2NsYXNzKj0iY29sLSJdIHsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7CiAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KCi5mb3JtLWNoZWNrIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAxLjI1cmVtOwp9CgouZm9ybS1jaGVjay1pbnB1dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIG1hcmdpbi10b3A6IDAuM3JlbTsKICBtYXJnaW4tbGVmdDogLTEuMjVyZW07Cn0KCi5mb3JtLWNoZWNrLWlucHV0OmRpc2FibGVkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjNmM3NTdkOwp9CgouZm9ybS1jaGVjay1sYWJlbCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmZvcm0tY2hlY2staW5saW5lIHsKICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07Cn0KCi5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1yaWdodDogMC4zMTI1cmVtOwogIG1hcmdpbi1sZWZ0OiAwOwp9CgoudmFsaWQtZmVlZGJhY2sgewogIGRpc3BsYXk6IG5vbmU7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLXRvcDogMC4yNXJlbTsKICBmb250LXNpemU6IDgwJTsKICBjb2xvcjogIzI4YTc0NTsKfQoKLnZhbGlkLXRvb2x0aXAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgei1pbmRleDogNTsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTsKICBtYXJnaW4tdG9wOiAuMXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MCwgMTY3LCA2OSwgMC45KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkLCAud2FzLXZhbGlkYXRlZAouY3VzdG9tLXNlbGVjdDp2YWxpZCwKLmN1c3RvbS1zZWxlY3QuaXMtdmFsaWQgewogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy12YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQKLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsCi5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi5mb3JtLWNvbnRyb2wuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLndhcy12YWxpZGF0ZWQKLmN1c3RvbS1zZWxlY3Q6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi53YXMtdmFsaWRhdGVkCi5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsCi5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouZm9ybS1jb250cm9sLWZpbGUuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjMjhhNzQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzcxZGQ4YTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICMzNGNlNTc7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwgLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTsKfQoKLmludmFsaWQtZmVlZGJhY2sgewogIGRpc3BsYXk6IG5vbmU7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLXRvcDogMC4yNXJlbTsKICBmb250LXNpemU6IDgwJTsKICBjb2xvcjogI2RjMzU0NTsKfQoKLmludmFsaWQtdG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICB6LWluZGV4OiA1OwogIGRpc3BsYXk6IG5vbmU7CiAgbWF4LXdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtOwogIG1hcmdpbi10b3A6IC4xcmVtOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyMCwgNTMsIDY5LCAwLjkpOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCwgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLCAud2FzLXZhbGlkYXRlZAouY3VzdG9tLXNlbGVjdDppbnZhbGlkLAouY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzLCAud2FzLXZhbGlkYXRlZAouY3VzdG9tLXNlbGVjdDppbnZhbGlkOmZvY3VzLAouY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuMjUpOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC53YXMtdmFsaWRhdGVkCi5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQKLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsCi5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNvbnRyb2wtZmlsZS5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi5mb3JtLWNvbnRyb2wtZmlsZS5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKICBjb2xvcjogI2RjMzU0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAouZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlZmEyYTk7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuMjUpOwp9CgouZm9ybS1pbmxpbmUgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CiAgZmxleC1mbG93OiByb3cgd3JhcDsKICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7CiAgd2lkdGg6IDEwMCU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5mb3JtLWlubGluZSBsYWJlbCB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwIHsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC1tcy1mbGV4OiAwIDAgYXV0bzsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogYXV0bzsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgfQogIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAsCiAgLmZvcm0taW5saW5lIC5jdXN0b20tc2VsZWN0IHsKICAgIHdpZHRoOiBhdXRvOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2sgewogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdpZHRoOiBhdXRvOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2staW5wdXQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbTsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmN1c3RvbS1jb250cm9sIHsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgfQogIC5mb3JtLWlubGluZSAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KCi5idG4gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXdlaWdodDogNDAwOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIGZvbnQtc2l6ZTogMXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5idG4gewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KCi5idG46aG92ZXIsIC5idG46Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmJ0bjpmb2N1cywgLmJ0bi5mb2N1cyB7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KCi5idG4uZGlzYWJsZWQsIC5idG46ZGlzYWJsZWQgewogIG9wYWNpdHk6IDAuNjU7Cn0KCi5idG46bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewogIGN1cnNvcjogcG9pbnRlcjsKfQoKYS5idG4uZGlzYWJsZWQsCmZpZWxkc2V0OmRpc2FibGVkIGEuYnRuIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmJ0bi1wcmltYXJ5IHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQoKLmJ0bi1wcmltYXJ5OmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OWQ5OwogIGJvcmRlci1jb2xvcjogIzAwNjJjYzsKfQoKLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9CgouYnRuLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYzsKICBib3JkZXItY29sb3I6ICMwMDVjYmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5IHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwogIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1zZWNvbmRhcnk6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM1YTYyNjg7CiAgYm9yZGVyLWNvbG9yOiAjNTQ1YjYyOwp9CgouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MjsKICBib3JkZXItY29sb3I6ICM0ZTU1NWI7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTA4LCAxMTcsIDEyNSwgMC41KTsKfQoKLmJ0bi1zdWNjZXNzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLmJ0bi1zdWNjZXNzOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE4ODM4OwogIGJvcmRlci1jb2xvcjogIzFlN2UzNDsKfQoKLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9CgouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tc3VjY2VzczpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNDsKICBib3JkZXItY29sb3I6ICMxYzc0MzA7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuNSk7Cn0KCi5idG4taW5mbyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4taW5mbzpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzEzODQ5NjsKICBib3JkZXItY29sb3I6ICMxMTdhOGI7Cn0KCi5idG4taW5mbzpmb2N1cywgLmJ0bi1pbmZvLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KCi5idG4taW5mby5kaXNhYmxlZCwgLmJ0bi1pbmZvOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiOwogIGJvcmRlci1jb2xvcjogIzEwNzA3ZjsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KCi5idG4td2FybmluZyB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KCi5idG4td2FybmluZzpob3ZlciB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwYTgwMDsKICBib3JkZXItY29sb3I6ICNkMzllMDA7Cn0KCi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQoKLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7CiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNkMzllMDA7CiAgYm9yZGVyLWNvbG9yOiAjYzY5NTAwOwp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOwp9CgouYnRuLWRhbmdlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tZGFuZ2VyOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzgyMzMzOwogIGJvcmRlci1jb2xvcjogI2JkMjEzMDsKfQoKLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQoKLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1OwogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwOwogIGJvcmRlci1jb2xvcjogI2IyMWYyZDsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQoKLmJ0bi1saWdodCB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tbGlnaHQ6aG92ZXIgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7CiAgYm9yZGVyLWNvbG9yOiAjZGFlMGU1Owp9CgouYnRuLWxpZ2h0OmZvY3VzLCAuYnRuLWxpZ2h0LmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9CgouYnRuLWxpZ2h0LmRpc2FibGVkLCAuYnRuLWxpZ2h0OmRpc2FibGVkIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwogIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1OwogIGJvcmRlci1jb2xvcjogI2QzZDlkZjsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9CgouYnRuLWRhcmsgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7CiAgYm9yZGVyLWNvbG9yOiAjMWQyMTI0Owp9CgouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQoKLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQ7CiAgYm9yZGVyLWNvbG9yOiAjMTcxYTFkOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5IHsKICBjb2xvcjogIzAwN2JmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQoKLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQgewogIGNvbG9yOiAjMDA3YmZmOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KCi5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzIHsKICBjb2xvcjogIzI4YTc0NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6ZGlzYWJsZWQgewogIGNvbG9yOiAjMjhhNzQ1OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtaW5mbyB7CiAgY29sb3I6ICMxN2EyYjg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4tb3V0bGluZS1pbmZvOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1vdXRsaW5lLWluZm86Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1pbmZvLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCB7CiAgY29sb3I6ICMxN2EyYjg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZyB7CiAgY29sb3I6ICNmZmMxMDc7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KCi5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsIC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmYzEwNzsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlciB7CiAgY29sb3I6ICNkYzM1NDU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9CgouYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZCB7CiAgY29sb3I6ICNkYzM1NDU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodCB7CiAgY29sb3I6ICNmOGY5ZmE7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpob3ZlciB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpmb2N1cywgLmJ0bi1vdXRsaW5lLWxpZ2h0LmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9CgouYnRuLW91dGxpbmUtbGlnaHQuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1saWdodDpkaXNhYmxlZCB7CiAgY29sb3I6ICNmOGY5ZmE7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhcmsgewogIGNvbG9yOiAjMzQzYTQwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLW91dGxpbmUtZGFyazpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KCi5idG4tb3V0bGluZS1kYXJrOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyay5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhcmsuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1kYXJrOmRpc2FibGVkIHsKICBjb2xvcjogIzM0M2E0MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwogIGJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpOwp9CgouYnRuLWxpbmsgewogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgY29sb3I6ICMwMDdiZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tbGluazpob3ZlciB7CiAgY29sb3I6ICMwMDU2YjM7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1saW5rOmZvY3VzLCAuYnRuLWxpbmsuZm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogbm9uZTsKfQoKLmJ0bi1saW5rOmRpc2FibGVkLCAuYnRuLWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7CiAgcGFkZGluZzogMC41cmVtIDFyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwp9CgouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQoKLmJ0bi1ibG9jayB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7Cn0KCi5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHsKICBtYXJnaW4tdG9wOiAwLjVyZW07Cn0KCmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywKaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssCmlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7CiAgd2lkdGg6IDEwMCU7Cn0KCi5mYWRlIHsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mYWRlIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgouZmFkZTpub3QoLnNob3cpIHsKICBvcGFjaXR5OiAwOwp9CgouY29sbGFwc2U6bm90KC5zaG93KSB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmNvbGxhcHNpbmcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zNXMgZWFzZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jb2xsYXBzaW5nIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgouZHJvcHVwLAouZHJvcHJpZ2h0LAouZHJvcGRvd24sCi5kcm9wbGVmdCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tbGVmdDogMC4yNTVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZDsKICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50Owp9CgouZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kcm9wZG93bi1tZW51IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMDAlOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAwMDsKICBkaXNwbGF5OiBub25lOwogIGZsb2F0OiBsZWZ0OwogIG1pbi13aWR0aDogMTByZW07CiAgcGFkZGluZzogMC41cmVtIDA7CiAgbWFyZ2luOiAwLjEyNXJlbSAwIDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgouZHJvcGRvd24tbWVudS1yaWdodCB7CiAgcmlnaHQ6IDA7CiAgbGVmdDogYXV0bzsKfQoKLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7CiAgdG9wOiBhdXRvOwogIGJvdHRvbTogMTAwJTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtOwp9CgouZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAwLjI1NWVtOwogIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtOwogIGNvbnRlbnQ6ICIiOwogIGJvcmRlci10b3A6IDA7CiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZDsKICBib3JkZXItbGVmdDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgewogIG1hcmdpbi1sZWZ0OiAwOwp9CgouZHJvcHJpZ2h0IC5kcm9wZG93bi1tZW51IHsKICB0b3A6IDA7CiAgcmlnaHQ6IGF1dG87CiAgbGVmdDogMTAwJTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1sZWZ0OiAwLjEyNXJlbTsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tbGVmdDogMC4yNTVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDA7CiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkOwp9CgouZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgdmVydGljYWwtYWxpZ246IDA7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tbWVudSB7CiAgdG9wOiAwOwogIHJpZ2h0OiAxMDAlOwogIGxlZnQ6IGF1dG87CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuMTI1cmVtOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmJlZm9yZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7CiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZDsKICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmJlZm9yZSB7CiAgdmVydGljYWwtYWxpZ246IDA7Cn0KCi5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0idG9wIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0icmlnaHQiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJib3R0b20iXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJsZWZ0Il0gewogIHJpZ2h0OiBhdXRvOwogIGJvdHRvbTogYXV0bzsKfQoKLmRyb3Bkb3duLWRpdmlkZXIgewogIGhlaWdodDogMDsKICBtYXJnaW46IDAuNXJlbSAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOWVjZWY7Cn0KCi5kcm9wZG93bi1pdGVtIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwLjI1cmVtIDEuNXJlbTsKICBjbGVhcjogYm90aDsKICBmb250LXdlaWdodDogNDAwOwogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDA7Cn0KCi5kcm9wZG93bi1pdGVtOmhvdmVyLCAuZHJvcGRvd24taXRlbTpmb2N1cyB7CiAgY29sb3I6ICMxNjE4MWI7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cn0KCi5kcm9wZG93bi1pdGVtLmFjdGl2ZSwgLmRyb3Bkb3duLWl0ZW06YWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoKLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsIC5kcm9wZG93bi1pdGVtOmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmRyb3Bkb3duLW1lbnUuc2hvdyB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi5kcm9wZG93bi1oZWFkZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuNXJlbSAxLjVyZW07CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5kcm9wZG93bi1pdGVtLXRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9CgouYnRuLWdyb3VwLAouYnRuLWdyb3VwLXZlcnRpY2FsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC1tcy1mbGV4OiAwIDEgYXV0bzsKICBmbGV4OiAwIDEgYXV0bzsKfQoKLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmhvdmVyIHsKICB6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmZvY3VzLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjphY3RpdmUsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7CiAgei1pbmRleDogMTsKfQoKLmJ0bi1ncm91cCAuYnRuICsgLmJ0biwKLmJ0bi1ncm91cCAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwICsgLmJ0biwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuICsgLmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3VwICsgLmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5idG4tdG9vbGJhciB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cn0KCi5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXAgewogIHdpZHRoOiBhdXRvOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLAouYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC41NjI1cmVtOwogIHBhZGRpbmctbGVmdDogMC41NjI1cmVtOwp9CgouZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwKLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjpiZWZvcmUgewogIG1hcmdpbi1yaWdodDogMDsKfQoKLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtc20gPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC4zNzVyZW07CiAgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbTsKfQoKLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtbGcgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC43NXJlbTsKICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW07Cn0KCi5idG4tZ3JvdXAtdmVydGljYWwgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgewogIHdpZHRoOiAxMDAlOwp9CgouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLAouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9CgouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwKLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuIGlucHV0W3R5cGU9ImNoZWNrYm94Il0sCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwKLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmlucHV0LWdyb3VwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICB3aWR0aDogMTAwJTsKfQoKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC1tcy1mbGV4OiAxIDEgYXV0bzsKICBmbGV4OiAxIDEgYXV0bzsKICB3aWR0aDogMSU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgKyAuY3VzdG9tLXNlbGVjdCwKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5jdXN0b20tZmlsZSwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tc2VsZWN0LAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tZmlsZSwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1zZWxlY3QsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tZmlsZSB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6Zm9jdXMsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0OmZvY3VzLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKICB6LWluZGV4OiAzOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHsKICB6LWluZGV4OiA0Owp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6bGFzdC1jaGlsZCksCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0Om5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpmaXJzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5pbnB1dC1ncm91cC1wcmVwZW5kLAouaW5wdXQtZ3JvdXAtYXBwZW5kIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4Owp9CgouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLAouaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwp9CgouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuICsgLmJ0biwKLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5idG4sCi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sCi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgewogIG1hcmdpbi1yaWdodDogLTFweDsKfQoKLmlucHV0LWdyb3VwLWFwcGVuZCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5pbnB1dC1ncm91cC10ZXh0IHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoKLmlucHV0LWdyb3VwLXRleHQgaW5wdXRbdHlwZT0icmFkaW8iXSwKLmlucHV0LWdyb3VwLXRleHQgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgbWFyZ2luLXRvcDogMDsKfQoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKICBoZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoKLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogMC4ycmVtOwp9CgouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4sCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bm90KDpsYXN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuaW5wdXQtZ3JvdXAtdGV4dDpub3QoOmxhc3QtY2hpbGQpIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmN1c3RvbS1jb250cm9sIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgbWluLWhlaWdodDogMS41cmVtOwogIHBhZGRpbmctbGVmdDogMS41cmVtOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5saW5lIHsKICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgbWFyZ2luLXJpZ2h0OiAxcmVtOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKICBvcGFjaXR5OiAwOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0OmFjdGl2ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogIGNvbG9yOiAjNmM3NTdkOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDAuMjVyZW07CiAgbGVmdDogLTEuNXJlbTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgY29udGVudDogIiI7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2Owp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwLjI1cmVtOwogIGxlZnQ6IC0xLjVyZW07CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDFyZW07CiAgaGVpZ2h0OiAxcmVtOwogIGNvbnRlbnQ6ICIiOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDUwJSA1MCU7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRSIpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCclM0UlM0NjaXJjbGUgcj0nMycgZmlsbD0nJTIzZmZmJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsKfQoKLmN1c3RvbS1zZWxlY3QgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4zNzVyZW0gMS43NXJlbSAwLjM3NXJlbSAwLjc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICM0OTUwNTc7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBiYWNrZ3JvdW5kOiAjZmZmIHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNCA1JyUzRSUzQ3BhdGggZmlsbD0nJTIzMzQzYTQwJyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8lM0UlM0Mvc3ZnJTNFIikgbm8tcmVwZWF0IHJpZ2h0IDAuNzVyZW0gY2VudGVyOwogIGJhY2tncm91bmQtc2l6ZTogOHB4IDEwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKfQoKLmN1c3RvbS1zZWxlY3Q6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzgwYmRmZjsKICBvdXRsaW5lOiAwOwogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEyOCwgMTg5LCAyNTUsIDAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5jdXN0b20tc2VsZWN0W211bHRpcGxlXSwgLmN1c3RvbS1zZWxlY3Rbc2l6ZV06bm90KFtzaXplPSIxIl0pIHsKICBoZWlnaHQ6IGF1dG87CiAgcGFkZGluZy1yaWdodDogMC43NXJlbTsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpkaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQoKLmN1c3RvbS1zZWxlY3Q6Oi1tcy1leHBhbmQgewogIG9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tc2VsZWN0LXNtIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKICBwYWRkaW5nLXRvcDogMC4zNzVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtOwogIGZvbnQtc2l6ZTogNzUlOwp9CgouY3VzdG9tLXNlbGVjdC1sZyB7CiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTsKICBwYWRkaW5nLXRvcDogMC4zNzVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtOwogIGZvbnQtc2l6ZTogMTI1JTsKfQoKLmN1c3RvbS1maWxlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBtYXJnaW4tYm90dG9tOiAwOwp9CgouY3VzdG9tLWZpbGUtaW5wdXQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBtYXJnaW46IDA7CiAgb3BhY2l0eTogMDsKfQoKLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKICBib3JkZXItY29sb3I6ICM4MGJkZmY7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9CgouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKICBib3JkZXItY29sb3I6ICM4MGJkZmY7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQoKLmN1c3RvbS1maWxlLWlucHV0OmxhbmcoZW4pIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgY29udGVudDogIkJyb3dzZSI7Cn0KCi5jdXN0b20tZmlsZS1sYWJlbCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDE7CiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoKLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgei1pbmRleDogMzsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDIuMjVyZW07CiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjNDk1MDU3OwogIGNvbnRlbnQ6ICJCcm93c2UiOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2VkNGRhOwogIGJvcmRlci1yYWRpdXM6IDAgMC4yNXJlbSAwLjI1cmVtIDA7Cn0KCi5jdXN0b20tcmFuZ2UgewogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctbGVmdDogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXMgewogIG91dGxpbmU6IG5vbmU7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9CgouY3VzdG9tLXJhbmdlOmZvY3VzOjotbW96LXJhbmdlLXRodW1iIHsKICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9CgouY3VzdG9tLXJhbmdlOmZvY3VzOjotbXMtdGh1bWIgewogIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otZm9jdXMtb3V0ZXIgewogIGJvcmRlcjogMDsKfQoKLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBtYXJnaW4tdG9wOiAtMC4yNXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlcjogMDsKICBib3JkZXItcmFkaXVzOiAxcmVtOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDAuNXJlbTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAxcmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iIHsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgouY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IzZDdmZjsKfQoKLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10cmFjayB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAwLjVyZW07CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iIHsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuMnJlbTsKICBtYXJnaW4tbGVmdDogMC4ycmVtOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1yYWRpdXM6IDFyZW07CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0OwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAwLjVyZW07CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci13aWR0aDogMC41cmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC1sb3dlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKICBib3JkZXItcmFkaXVzOiAxcmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC11cHBlciB7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsCi5jdXN0b20tZmlsZS1sYWJlbCwKLmN1c3RvbS1zZWxlY3QgewogIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLAogIC5jdXN0b20tZmlsZS1sYWJlbCwKICAuY3VzdG9tLXNlbGVjdCB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQoKLm5hdiB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2LWxpbmsgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwp9CgoubmF2LWxpbms6aG92ZXIsIC5uYXYtbGluazpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgoubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwp9CgoubmF2LXRhYnMgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoubmF2LXRhYnMgLm5hdi1pdGVtIHsKICBtYXJnaW4tYm90dG9tOiAtMXB4Owp9CgoubmF2LXRhYnMgLm5hdi1saW5rIHsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9CgoubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyLCAubmF2LXRhYnMgLm5hdi1saW5rOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICNlOWVjZWYgI2U5ZWNlZiAjZGVlMmU2Owp9CgoubmF2LXRhYnMgLm5hdi1saW5rLmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgoubmF2LXRhYnMgLm5hdi1saW5rLmFjdGl2ZSwKLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTYgI2RlZTJlNiAjZmZmOwp9CgoubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnUgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQoKLm5hdi1waWxscyAubmF2LWxpbmsgewogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KCi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwKLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoKLm5hdi1maWxsIC5uYXYtaXRlbSB7CiAgLW1zLWZsZXg6IDEgMSBhdXRvOwogIGZsZXg6IDEgMSBhdXRvOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIHsKICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKICBmbGV4LWJhc2lzOiAwOwogIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogIGZsZXgtZ3JvdzogMTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi50YWItY29udGVudCA+IC50YWItcGFuZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKLnRhYi1jb250ZW50ID4gLmFjdGl2ZSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi5uYXZiYXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgZmxleC13cmFwOiB3cmFwOwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKfQoKLm5hdmJhciA+IC5jb250YWluZXIsCi5uYXZiYXIgPiAuY29udGFpbmVyLWZsdWlkIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgZmxleC13cmFwOiB3cmFwOwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKfQoKLm5hdmJhci1icmFuZCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctdG9wOiAwLjMxMjVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzEyNXJlbTsKICBtYXJnaW4tcmlnaHQ6IDFyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLm5hdmJhci1uYXYgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2YmFyLW5hdiAubmF2LWxpbmsgewogIHBhZGRpbmctcmlnaHQ6IDA7CiAgcGFkZGluZy1sZWZ0OiAwOwp9CgoubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBmbG9hdDogbm9uZTsKfQoKLm5hdmJhci10ZXh0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy10b3A6IDAuNXJlbTsKICBwYWRkaW5nLWJvdHRvbTogMC41cmVtOwp9CgoubmF2YmFyLWNvbGxhcHNlIHsKICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICBmbGV4LWJhc2lzOiAxMDAlOwogIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogIGZsZXgtZ3JvdzogMTsKICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlciB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgoubmF2YmFyLXRvZ2dsZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewogIGN1cnNvcjogcG9pbnRlcjsKfQoKLm5hdmJhci10b2dnbGVyLWljb24gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMS41ZW07CiAgaGVpZ2h0OiAxLjVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGNvbnRlbnQ6ICIiOwogIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyOwogIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsCiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSB7CiAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lciwKICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIsCiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1tZCB7CiAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lciwKICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsCiAgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAubmF2YmFyLWV4cGFuZC1sZyB7CiAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwKICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItZmx1aWQgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLAogIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5uYXZiYXItZXhwYW5kLXhsIHsKICAgIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7CiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgfQogIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLAogIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CiAgICBmbGV4LWJhc2lzOiBhdXRvOwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLXRvZ2dsZXIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KCi5uYXZiYXItZXhwYW5kIHsKICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwogIGZsZXgtZmxvdzogcm93IG5vd3JhcDsKICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cn0KCi5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lciwKLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLWZsdWlkIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQoKLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogIGZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgcGFkZGluZy1yaWdodDogMC41cmVtOwogIHBhZGRpbmctbGVmdDogMC41cmVtOwp9CgoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsCi5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogIGZsZXgtd3JhcDogbm93cmFwOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLWNvbGxhcHNlIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKICBmbGV4LWJhc2lzOiBhdXRvOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXIgewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZCB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpob3ZlciwgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5zaG93ID4gLm5hdi1saW5rLAoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5hY3RpdmUgPiAubmF2LWxpbmssCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXIgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyLWljb24gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMwIDMwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBzdHJva2U9J3JnYmEoMCwgMCwgMCwgMC41KScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzRSUzQy9zdmclM0UiKTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIHsKICBjb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluazpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cyB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLAoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlciB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlci1pY29uIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPSdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYSB7CiAgY29sb3I6ICNmZmY7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKfQoKLmNhcmQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWluLXdpZHRoOiAwOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgouY2FyZCA+IGhyIHsKICBtYXJnaW4tcmlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKfQoKLmNhcmQgPiAubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKfQoKLmNhcmQtYm9keSB7CiAgLW1zLWZsZXg6IDEgMSBhdXRvOwogIGZsZXg6IDEgMSBhdXRvOwogIHBhZGRpbmc6IDEuMjVyZW07Cn0KCi5jYXJkLXRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwp9CgouY2FyZC1zdWJ0aXRsZSB7CiAgbWFyZ2luLXRvcDogLTAuMzc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5jYXJkLXRleHQ6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmNhcmQtbGluazpob3ZlciB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouY2FyZC1saW5rICsgLmNhcmQtbGluayB7CiAgbWFyZ2luLWxlZnQ6IDEuMjVyZW07Cn0KCi5jYXJkLWhlYWRlciB7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KCi5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpIDAgMDsKfQoKLmNhcmQtaGVhZGVyICsgLmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcDogMDsKfQoKLmNhcmQtZm9vdGVyIHsKICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KCi5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHsKICBib3JkZXItcmFkaXVzOiAwIDAgY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1oZWFkZXItdGFicyB7CiAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07CiAgbWFyZ2luLWJvdHRvbTogLTAuNzVyZW07CiAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTsKICBib3JkZXItYm90dG9tOiAwOwp9CgouY2FyZC1oZWFkZXItcGlsbHMgewogIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtOwogIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07Cn0KCi5jYXJkLWltZy1vdmVybGF5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHBhZGRpbmc6IDEuMjVyZW07Cn0KCi5jYXJkLWltZyB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtaW1nLXRvcCB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtaW1nLWJvdHRvbSB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtZGVjayB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgouY2FyZC1kZWNrIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY2FyZC1kZWNrIHsKICAgIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwOwogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgfQogIC5jYXJkLWRlY2sgLmNhcmQgewogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLW1zLWZsZXg6IDEgMCAwJTsKICAgIGZsZXg6IDEgMCAwJTsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICB9Cn0KCi5jYXJkLWdyb3VwIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWdyb3VwID4gLmNhcmQgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jYXJkLWdyb3VwIHsKICAgIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwOwogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CiAgICAtbXMtZmxleDogMSAwIDAlOwogICAgZmxleDogMSAwIDAlOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZCArIC5jYXJkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgYm9yZGVyLWxlZnQ6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1pbWctdG9wLAogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaGVhZGVyIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy10b3AsCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWhlYWRlciB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwKICAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtZm9vdGVyIHsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCB7CiAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaW1nLXRvcCwKICAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaGVhZGVyIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWZvb3RlciB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIC5jYXJkLWltZy10b3AsCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSwKICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1oZWFkZXIsCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtZm9vdGVyIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQp9CgouY2FyZC1jb2x1bW5zIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY2FyZC1jb2x1bW5zIHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOwogICAgLW1vei1jb2x1bW4tY291bnQ6IDM7CiAgICBjb2x1bW4tY291bnQ6IDM7CiAgICAtd2Via2l0LWNvbHVtbi1nYXA6IDEuMjVyZW07CiAgICAtbW96LWNvbHVtbi1nYXA6IDEuMjVyZW07CiAgICBjb2x1bW4tZ2FwOiAxLjI1cmVtOwogICAgb3JwaGFuczogMTsKICAgIHdpZG93czogMTsKICB9CiAgLmNhcmQtY29sdW1ucyAuY2FyZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KCi5hY2NvcmRpb24gLmNhcmQ6bm90KDpmaXJzdC1vZi10eXBlKTpub3QoOmxhc3Qtb2YtdHlwZSkgewogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpIC5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpmaXJzdC1vZi10eXBlIHsKICBib3JkZXItYm90dG9tOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5hY2NvcmRpb24gLmNhcmQ6bGFzdC1vZi10eXBlIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgouYnJlYWRjcnVtYiB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBsaXN0LXN0eWxlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW0gewogIHBhZGRpbmctbGVmdDogMC41cmVtOwp9CgouYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTo6YmVmb3JlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1yaWdodDogMC41cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIGNvbnRlbnQ6ICIvIjsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmUgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmJyZWFkY3J1bWItaXRlbS5hY3RpdmUgewogIGNvbG9yOiAjNmM3NTdkOwp9CgoucGFnaW5hdGlvbiB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgoucGFnZS1saW5rIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07CiAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgbGluZS1oZWlnaHQ6IDEuMjU7CiAgY29sb3I6ICMwMDdiZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoucGFnZS1saW5rOmhvdmVyIHsKICB6LWluZGV4OiAyOwogIGNvbG9yOiAjMDA1NmIzOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2UtbGluazpmb2N1cyB7CiAgei1pbmRleDogMjsKICBvdXRsaW5lOiAwOwogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQoKLnBhZ2UtbGluazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgoucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewogIG1hcmdpbi1sZWZ0OiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKfQoKLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9CgoucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHsKICB6LWluZGV4OiAxOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgoucGFnZS1pdGVtLmRpc2FibGVkIC5wYWdlLWxpbmsgewogIGNvbG9yOiAjNmM3NTdkOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIGN1cnNvcjogYXV0bzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7CiAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuM3JlbTsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjNyZW07CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuM3JlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41Owp9CgoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMnJlbTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjJyZW07Cn0KCi5wYWdpbmF0aW9uLXNtIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4ycmVtOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjJyZW07Cn0KCi5iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDAuMjVlbSAwLjRlbTsKICBmb250LXNpemU6IDc1JTsKICBmb250LXdlaWdodDogNzAwOwogIGxpbmUtaGVpZ2h0OiAxOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgouYmFkZ2U6ZW1wdHkgewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5idG4gLmJhZGdlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAtMXB4Owp9CgouYmFkZ2UtcGlsbCB7CiAgcGFkZGluZy1yaWdodDogMC42ZW07CiAgcGFkZGluZy1sZWZ0OiAwLjZlbTsKICBib3JkZXItcmFkaXVzOiAxMHJlbTsKfQoKLmJhZGdlLXByaW1hcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2UtcHJpbWFyeVtocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cn0KCi5iYWRnZS1zZWNvbmRhcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7Cn0KCi5iYWRnZS1zZWNvbmRhcnlbaHJlZl06aG92ZXIsIC5iYWRnZS1zZWNvbmRhcnlbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ1YjYyOwp9CgouYmFkZ2Utc3VjY2VzcyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKfQoKLmJhZGdlLXN1Y2Nlc3NbaHJlZl06aG92ZXIsIC5iYWRnZS1zdWNjZXNzW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNDsKfQoKLmJhZGdlLWluZm8gewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cn0KCi5iYWRnZS1pbmZvW2hyZWZdOmhvdmVyLCAuYmFkZ2UtaW5mb1tocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMxMTdhOGI7Cn0KCi5iYWRnZS13YXJuaW5nIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3Owp9CgouYmFkZ2Utd2FybmluZ1tocmVmXTpob3ZlciwgLmJhZGdlLXdhcm5pbmdbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwp9CgouYmFkZ2UtZGFuZ2VyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1Owp9CgouYmFkZ2UtZGFuZ2VyW2hyZWZdOmhvdmVyLCAuYmFkZ2UtZGFuZ2VyW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKfQoKLmJhZGdlLWxpZ2h0IHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIsIC5iYWRnZS1saWdodFtocmVmXTpmb2N1cyB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7Cn0KCi5iYWRnZS1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwp9CgouYmFkZ2UtZGFya1tocmVmXTpob3ZlciwgLmJhZGdlLWRhcmtbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0Owp9CgouanVtYm90cm9uIHsKICBwYWRkaW5nOiAycmVtIDFyZW07CiAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmp1bWJvdHJvbiB7CiAgICBwYWRkaW5nOiA0cmVtIDJyZW07CiAgfQp9CgouanVtYm90cm9uLWZsdWlkIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKICBib3JkZXItcmFkaXVzOiAwOwp9CgouYWxlcnQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgouYWxlcnQtaGVhZGluZyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KCi5hbGVydC1saW5rIHsKICBmb250LXdlaWdodDogNzAwOwp9CgouYWxlcnQtZGlzbWlzc2libGUgewogIHBhZGRpbmctcmlnaHQ6IDRyZW07Cn0KCi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2UgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIGNvbG9yOiBpbmhlcml0Owp9CgouYWxlcnQtcHJpbWFyeSB7CiAgY29sb3I6ICMwMDQwODU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZTVmZjsKICBib3JkZXItY29sb3I6ICNiOGRhZmY7Cn0KCi5hbGVydC1wcmltYXJ5IGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjOWZjZGZmOwp9CgouYWxlcnQtcHJpbWFyeSAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwMDI3NTI7Cn0KCi5hbGVydC1zZWNvbmRhcnkgewogIGNvbG9yOiAjMzgzZDQxOwogIGJhY2tncm91bmQtY29sb3I6ICNlMmUzZTU7CiAgYm9yZGVyLWNvbG9yOiAjZDZkOGRiOwp9CgouYWxlcnQtc2Vjb25kYXJ5IGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYzhjYmNmOwp9CgouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsKICBjb2xvcjogIzIwMjMyNjsKfQoKLmFsZXJ0LXN1Y2Nlc3MgewogIGNvbG9yOiAjMTU1NzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7CiAgYm9yZGVyLWNvbG9yOiAjYzNlNmNiOwp9CgouYWxlcnQtc3VjY2VzcyBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2IxZGZiYjsKfQoKLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjMGIyZTEzOwp9CgouYWxlcnQtaW5mbyB7CiAgY29sb3I6ICMwYzU0NjA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QxZWNmMTsKICBib3JkZXItY29sb3I6ICNiZWU1ZWI7Cn0KCi5hbGVydC1pbmZvIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYWJkZGU1Owp9CgouYWxlcnQtaW5mbyAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwNjJjMzM7Cn0KCi5hbGVydC13YXJuaW5nIHsKICBjb2xvcjogIzg1NjQwNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2NkOwogIGJvcmRlci1jb2xvcjogI2ZmZWViYTsKfQoKLmFsZXJ0LXdhcm5pbmcgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNmZmU4YTE7Cn0KCi5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzUzM2YwMzsKfQoKLmFsZXJ0LWRhbmdlciB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTsKICBib3JkZXItY29sb3I6ICNmNWM2Y2I7Cn0KCi5hbGVydC1kYW5nZXIgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNmMWIwYjc7Cn0KCi5hbGVydC1kYW5nZXIgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjNDkxMjE3Owp9CgouYWxlcnQtbGlnaHQgewogIGNvbG9yOiAjODE4MTgyOwogIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7CiAgYm9yZGVyLWNvbG9yOiAjZmRmZGZlOwp9CgouYWxlcnQtbGlnaHQgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNlY2VjZjY7Cn0KCi5hbGVydC1saWdodCAuYWxlcnQtbGluayB7CiAgY29sb3I6ICM2ODY4Njg7Cn0KCi5hbGVydC1kYXJrIHsKICBjb2xvcjogIzFiMWUyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGQ5OwogIGJvcmRlci1jb2xvcjogI2M2YzhjYTsKfQoKLmFsZXJ0LWRhcmsgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNiOWJiYmU7Cn0KCi5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzA0MDUwNTsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KfQoKQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxcmVtIDA7CiAgfQogIHRvIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9Cn0KCi5wcm9ncmVzcyB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICBoZWlnaHQ6IDFyZW07CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBmb250LXNpemU6IDAuNzVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgoucHJvZ3Jlc3MtYmFyIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLnByb2dyZXNzLWJhciB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQoKLnByb2dyZXNzLWJhci1zdHJpcGVkIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLXNpemU6IDFyZW0gMXJlbTsKfQoKLnByb2dyZXNzLWJhci1hbmltYXRlZCB7CiAgLXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKICBhbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKfQoKLm1lZGlhIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKfQoKLm1lZGlhLWJvZHkgewogIC1tcy1mbGV4OiAxOwogIGZsZXg6IDE7Cn0KCi5saXN0LWdyb3VwIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uIHsKICB3aWR0aDogMTAwJTsKICBjb2xvcjogIzQ5NTA1NzsKICB0ZXh0LWFsaWduOiBpbmhlcml0Owp9CgoubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjNDk1MDU3OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgoubGlzdC1ncm91cC1pdGVtLWFjdGlvbjphY3RpdmUgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOwp9CgoubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9CgoubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKfQoKLmxpc3QtZ3JvdXAtaXRlbTpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbTpmb2N1cyB7CiAgei1pbmRleDogMTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsIC5saXN0LWdyb3VwLWl0ZW06ZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsKICB6LWluZGV4OiAyOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgoubGlzdC1ncm91cC1mbHVzaCAubGlzdC1ncm91cC1pdGVtIHsKICBib3JkZXItcmlnaHQ6IDA7CiAgYm9yZGVyLWxlZnQ6IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoKLmxpc3QtZ3JvdXAtZmx1c2g6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcDogMDsKfQoKLmxpc3QtZ3JvdXAtZmx1c2g6bGFzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b206IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeSB7CiAgY29sb3I6ICMwMDQwODU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzAwNDA4NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOwp9CgoubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDQwODU7CiAgYm9yZGVyLWNvbG9yOiAjMDA0MDg1Owp9CgoubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeSB7CiAgY29sb3I6ICMzODNkNDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMzODNkNDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M4Y2JjZjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzODNkNDE7CiAgYm9yZGVyLWNvbG9yOiAjMzgzZDQxOwp9CgoubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MgewogIGNvbG9yOiAjMTU1NzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMxNTU3MjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU1NzI0OwogIGJvcmRlci1jb2xvcjogIzE1NTcyNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICBjb2xvcjogIzBjNTQ2MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmVlNWViOwp9CgoubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjMGM1NDYwOwogIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KCi5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzBjNTQ2MDsKICBib3JkZXItY29sb3I6ICMwYzU0NjA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0td2FybmluZyB7CiAgY29sb3I6ICM4NTY0MDQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzg1NjQwNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExOwp9CgoubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM4NTY0MDQ7CiAgYm9yZGVyLWNvbG9yOiAjODU2NDA0Owp9CgoubGlzdC1ncm91cC1pdGVtLWRhbmdlciB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1YzZjYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNzsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM3MjFjMjQ7CiAgYm9yZGVyLWNvbG9yOiAjNzIxYzI0Owp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0IHsKICBjb2xvcjogIzgxODE4MjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGZlOwp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM4MTgxODI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzgxODE4MjsKICBib3JkZXItY29sb3I6ICM4MTgxODI7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tZGFyayB7CiAgY29sb3I6ICMxYjFlMjE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzFiMWUyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlOwp9CgoubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxYjFlMjE7CiAgYm9yZGVyLWNvbG9yOiAjMWIxZTIxOwp9CgouY2xvc2UgewogIGZsb2F0OiByaWdodDsKICBmb250LXNpemU6IDEuNXJlbTsKICBmb250LXdlaWdodDogNzAwOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiAjMDAwOwogIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7CiAgb3BhY2l0eTogLjU7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgouY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpmb2N1cyB7CiAgY29sb3I6ICMwMDA7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIG9wYWNpdHk6IC43NTsKfQoKYnV0dG9uLmNsb3NlIHsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5tb2RhbC1vcGVuIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgoubW9kYWwtb3BlbiAubW9kYWwgewogIG92ZXJmbG93LXg6IGhpZGRlbjsKICBvdmVyZmxvdy15OiBhdXRvOwp9CgoubW9kYWwgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTA1MDsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBoaWRkZW47CiAgb3V0bGluZTogMDsKfQoKLm1vZGFsLWRpYWxvZyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiBhdXRvOwogIG1hcmdpbjogMC41cmVtOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgoubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTI1JSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTI1JSk7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgoubW9kYWwuc2hvdyAubW9kYWwtZGlhbG9nIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwp9CgoubW9kYWwtZGlhbG9nLWNlbnRlcmVkIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoMC41cmVtICogMikpOwp9CgoubW9kYWwtZGlhbG9nLWNlbnRlcmVkOjpiZWZvcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogY2FsYygxMDB2aCAtICgwLjVyZW0gKiAyKSk7CiAgY29udGVudDogIiI7Cn0KCi5tb2RhbC1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHdpZHRoOiAxMDAlOwogIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwogIG91dGxpbmU6IDA7Cn0KCi5tb2RhbC1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDQwOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDA7Cn0KCi5tb2RhbC1iYWNrZHJvcC5mYWRlIHsKICBvcGFjaXR5OiAwOwp9CgoubW9kYWwtYmFja2Ryb3Auc2hvdyB7CiAgb3BhY2l0eTogMC41Owp9CgoubW9kYWwtaGVhZGVyIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwYWRkaW5nOiAxcmVtOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTllY2VmOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuM3JlbTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4zcmVtOwp9CgoubW9kYWwtaGVhZGVyIC5jbG9zZSB7CiAgcGFkZGluZzogMXJlbTsKICBtYXJnaW46IC0xcmVtIC0xcmVtIC0xcmVtIGF1dG87Cn0KCi5tb2RhbC10aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaW5lLWhlaWdodDogMS41Owp9CgoubW9kYWwtYm9keSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC1tcy1mbGV4OiAxIDEgYXV0bzsKICBmbGV4OiAxIDEgYXV0bzsKICBwYWRkaW5nOiAxcmVtOwp9CgoubW9kYWwtZm9vdGVyIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICBwYWRkaW5nOiAxcmVtOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllY2VmOwp9CgoubW9kYWwtZm9vdGVyID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICBtYXJnaW4tbGVmdDogLjI1cmVtOwp9CgoubW9kYWwtZm9vdGVyID4gOm5vdCg6bGFzdC1jaGlsZCkgewogIG1hcmdpbi1yaWdodDogLjI1cmVtOwp9CgoubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC05OTk5cHg7CiAgd2lkdGg6IDUwcHg7CiAgaGVpZ2h0OiA1MHB4OwogIG92ZXJmbG93OiBzY3JvbGw7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5tb2RhbC1kaWFsb2cgewogICAgbWF4LXdpZHRoOiA1MDBweDsKICAgIG1hcmdpbjogMS43NXJlbSBhdXRvOwogIH0KICAubW9kYWwtZGlhbG9nLWNlbnRlcmVkIHsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtICgxLjc1cmVtICogMikpOwogIH0KICAubW9kYWwtZGlhbG9nLWNlbnRlcmVkOjpiZWZvcmUgewogICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKDEuNzVyZW0gKiAyKSk7CiAgfQogIC5tb2RhbC1zbSB7CiAgICBtYXgtd2lkdGg6IDMwMHB4OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLm1vZGFsLWxnIHsKICAgIG1heC13aWR0aDogODAwcHg7CiAgfQp9CgoudG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDEwNzA7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHRleHQtYWxpZ246IHN0YXJ0OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0ZXh0LXNoYWRvdzogbm9uZTsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogIHdvcmQtYnJlYWs6IG5vcm1hbDsKICB3b3JkLXNwYWNpbmc6IG5vcm1hbDsKICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogIGxpbmUtYnJlYWs6IGF1dG87CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgb3BhY2l0eTogMDsKfQoKLnRvb2x0aXAuc2hvdyB7CiAgb3BhY2l0eTogMC45Owp9CgoudG9vbHRpcCAuYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMC44cmVtOwogIGhlaWdodDogMC40cmVtOwp9CgoudG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGNvbnRlbnQ6ICIiOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoKLmJzLXRvb2x0aXAtdG9wLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gewogIHBhZGRpbmc6IDAuNHJlbSAwOwp9CgouYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKICBib3R0b206IDA7Cn0KCi5icy10b29sdGlwLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlIHsKICB0b3A6IDA7CiAgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMC40cmVtIDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoKLmJzLXRvb2x0aXAtcmlnaHQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKICBwYWRkaW5nOiAwIDAuNHJlbTsKfQoKLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3cgewogIGxlZnQ6IDA7CiAgd2lkdGg6IDAuNHJlbTsKICBoZWlnaHQ6IDAuOHJlbTsKfQoKLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlIHsKICByaWdodDogMDsKICBib3JkZXItd2lkdGg6IDAuNHJlbSAwLjRyZW0gMC40cmVtIDA7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDAwOwp9CgouYnMtdG9vbHRpcC1ib3R0b20sIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSB7CiAgcGFkZGluZzogMC40cmVtIDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewogIHRvcDogMDsKfQoKLmJzLXRvb2x0aXAtYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUgewogIGJvdHRvbTogMDsKICBib3JkZXItd2lkdGg6IDAgMC40cmVtIDAuNHJlbTsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9CgouYnMtdG9vbHRpcC1sZWZ0LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKICBwYWRkaW5nOiAwIDAuNHJlbTsKfQoKLmJzLXRvb2x0aXAtbGVmdCAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93IHsKICByaWdodDogMDsKICB3aWR0aDogMC40cmVtOwogIGhlaWdodDogMC44cmVtOwp9CgouYnMtdG9vbHRpcC1sZWZ0IC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YmVmb3JlIHsKICBsZWZ0OiAwOwogIGJvcmRlci13aWR0aDogMC40cmVtIDAgMC40cmVtIDAuNHJlbTsKICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDsKfQoKLnRvb2x0aXAtaW5uZXIgewogIG1heC13aWR0aDogMjAwcHg7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDA7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoKLnBvcG92ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDYwOwogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogMjc2cHg7CiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCIsICJOb3RvIENvbG9yIEVtb2ppIjsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMS41OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1hbGlnbjogc3RhcnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRleHQtc2hhZG93OiBub25lOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgd29yZC1icmVhazogbm9ybWFsOwogIHdvcmQtc3BhY2luZzogbm9ybWFsOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgbGluZS1icmVhazogYXV0bzsKICBmb250LXNpemU6IDAuODc1cmVtOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoKLnBvcG92ZXIgLmFycm93IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDFyZW07CiAgaGVpZ2h0OiAwLjVyZW07CiAgbWFyZ2luOiAwIDAuM3JlbTsKfQoKLnBvcG92ZXIgLmFycm93OjpiZWZvcmUsIC5wb3BvdmVyIC5hcnJvdzo6YWZ0ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICBjb250ZW50OiAiIjsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1zdHlsZTogc29saWQ7Cn0KCi5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KCi5icy1wb3BvdmVyLXRvcCAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3cgewogIGJvdHRvbTogY2FsYygoMC41cmVtICsgMXB4KSAqIC0xKTsKfQoKLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjphZnRlciB7CiAgYm9yZGVyLXdpZHRoOiAwLjVyZW0gMC41cmVtIDA7Cn0KCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlIHsKICBib3R0b206IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoKCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjphZnRlciB7CiAgYm90dG9tOiAxcHg7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjsKfQoKLmJzLXBvcG92ZXItcmlnaHQsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKICBtYXJnaW4tbGVmdDogMC41cmVtOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdyB7CiAgbGVmdDogY2FsYygoMC41cmVtICsgMXB4KSAqIC0xKTsKICB3aWR0aDogMC41cmVtOwogIGhlaWdodDogMXJlbTsKICBtYXJnaW46IDAuM3JlbSAwOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwLjVyZW0gMDsKfQoKLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlIHsKICBsZWZ0OiAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoKCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YWZ0ZXIgewogIGxlZnQ6IDFweDsKICBib3JkZXItcmlnaHQtY29sb3I6ICNmZmY7Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKICBtYXJnaW4tdG9wOiAwLjVyZW07Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewogIHRvcDogY2FsYygoMC41cmVtICsgMXB4KSAqIC0xKTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjphZnRlciB7CiAgYm9yZGVyLXdpZHRoOiAwIDAuNXJlbSAwLjVyZW0gMC41cmVtOwp9CgouYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7CiAgdG9wOiAwOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KCgouYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjphZnRlciwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YWZ0ZXIgewogIHRvcDogMXB4OwogIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDUwJTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBtYXJnaW4tbGVmdDogLTAuNXJlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y3ZjdmNzsKfQoKLmJzLXBvcG92ZXItbGVmdCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSB7CiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7CiAgcmlnaHQ6IGNhbGMoKDAuNXJlbSArIDFweCkgKiAtMSk7CiAgd2lkdGg6IDAuNXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgbWFyZ2luOiAwLjNyZW0gMDsKfQoKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSwKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAgMC41cmVtIDAuNXJlbTsKfQoKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSB7CiAgcmlnaHQ6IDA7CiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KCgouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjphZnRlciB7CiAgcmlnaHQ6IDFweDsKICBib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoKLnBvcG92ZXItaGVhZGVyIHsKICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMXJlbTsKICBjb2xvcjogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGNhbGMoMC4zcmVtIC0gMXB4KTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpOwp9CgoucG9wb3Zlci1oZWFkZXI6ZW1wdHkgewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5wb3BvdmVyLWJvZHkgewogIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9CgouY2Fyb3VzZWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmNhcm91c2VsLWlubmVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmNhcm91c2VsLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBub25lOwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB3aWR0aDogMTAwJTsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogMTAwMHB4OwogIHBlcnNwZWN0aXZlOiAxMDAwcHg7Cn0KCi5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKLmNhcm91c2VsLWl0ZW0tbmV4dCwKLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgZGlzcGxheTogYmxvY2s7CiAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC42cyBlYXNlOwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjZzIGVhc2U7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNnMgZWFzZSwgLXdlYmtpdC10cmFuc2Zvcm0gMC42cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmNhcm91c2VsLWl0ZW0uYWN0aXZlLAogIC5jYXJvdXNlbC1pdGVtLW5leHQsCiAgLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwKLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKfQoKLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQsCi5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwp9CgpAc3VwcG9ydHMgKCgtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIG9yICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSkgewogIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LAogIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogIH0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwKLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KCkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7CiAgLmNhcm91c2VsLWl0ZW0tbmV4dCwKICAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICB9Cn0KCi5jYXJvdXNlbC1pdGVtLXByZXYsCi5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKfQoKQHN1cHBvcnRzICgoLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSBvciAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkpIHsKICAuY2Fyb3VzZWwtaXRlbS1wcmV2LAogIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICB9Cn0KCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtIHsKICBvcGFjaXR5OiAwOwogIHRyYW5zaXRpb24tZHVyYXRpb246IC42czsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LAouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewogIG9wYWNpdHk6IDE7Cn0KCi5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LAouY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQgewogIG9wYWNpdHk6IDA7Cn0KCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLXByZXYsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsCi5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KCkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7CiAgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dCwKICAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LAogIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKICAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwKICAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogIH0KfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldiwKLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHdpZHRoOiAxNSU7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG9wYWNpdHk6IDAuNTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldjpob3ZlciwgLmNhcm91c2VsLWNvbnRyb2wtcHJldjpmb2N1cywKLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpob3ZlciwKLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIG91dGxpbmU6IDA7CiAgb3BhY2l0eTogLjk7Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYgewogIGxlZnQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLW5leHQgewogIHJpZ2h0OiAwOwp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sCi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzZmZmJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41eicvJTNFJTNDL3N2ZyUzRSIpOwp9CgouY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNMi43NSAwbC0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDQtNC00LTR6Jy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAxMHB4OwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTU7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbi1yaWdodDogMTUlOwogIG1hcmdpbi1sZWZ0OiAxNSU7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAtbXMtZmxleDogMCAxIGF1dG87CiAgZmxleDogMCAxIGF1dG87CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiAzcHg7CiAgbWFyZ2luLXJpZ2h0OiAzcHg7CiAgbWFyZ2luLWxlZnQ6IDNweDsKICB0ZXh0LWluZGVudDogLTk5OXB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC0xMHB4OwogIGxlZnQ6IDA7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTBweDsKICBjb250ZW50OiAiIjsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAtMTBweDsKICBsZWZ0OiAwOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwcHg7CiAgY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5jYXJvdXNlbC1jYXB0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDE1JTsKICBib3R0b206IDIwcHg7CiAgbGVmdDogMTUlOwogIHotaW5kZXg6IDEwOwogIHBhZGRpbmctdG9wOiAyMHB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmFsaWduLWJhc2VsaW5lIHsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKfQoKLmFsaWduLXRvcCB7CiAgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9CgouYWxpZ24tbWlkZGxlIHsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1ib3R0b20gewogIHZlcnRpY2FsLWFsaWduOiBib3R0b20gIWltcG9ydGFudDsKfQoKLmFsaWduLXRleHQtYm90dG9tIHsKICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsKfQoKLmFsaWduLXRleHQtdG9wIHsKICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudDsKfQoKLmJnLXByaW1hcnkgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsKfQoKYS5iZy1wcmltYXJ5OmhvdmVyLCBhLmJnLXByaW1hcnk6Zm9jdXMsCmJ1dHRvbi5iZy1wcmltYXJ5OmhvdmVyLApidXR0b24uYmctcHJpbWFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9CgouYmctc2Vjb25kYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7Cn0KCmEuYmctc2Vjb25kYXJ5OmhvdmVyLCBhLmJnLXNlY29uZGFyeTpmb2N1cywKYnV0dG9uLmJnLXNlY29uZGFyeTpob3ZlciwKYnV0dG9uLmJnLXNlY29uZGFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MiAhaW1wb3J0YW50Owp9CgouYmctc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CgphLmJnLXN1Y2Nlc3M6aG92ZXIsIGEuYmctc3VjY2Vzczpmb2N1cywKYnV0dG9uLmJnLXN1Y2Nlc3M6aG92ZXIsCmJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7Cn0KCi5iZy1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7Cn0KCmEuYmctaW5mbzpob3ZlciwgYS5iZy1pbmZvOmZvY3VzLApidXR0b24uYmctaW5mbzpob3ZlciwKYnV0dG9uLmJnLWluZm86Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoKLmJnLXdhcm5pbmcgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKYS5iZy13YXJuaW5nOmhvdmVyLCBhLmJnLXdhcm5pbmc6Zm9jdXMsCmJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLApidXR0b24uYmctd2FybmluZzpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50Owp9CgouYmctZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KCmEuYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cywKYnV0dG9uLmJnLWRhbmdlcjpob3ZlciwKYnV0dG9uLmJnLWRhbmdlcjpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMCAhaW1wb3J0YW50Owp9CgouYmctbGlnaHQgewogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQoKYS5iZy1saWdodDpob3ZlciwgYS5iZy1saWdodDpmb2N1cywKYnV0dG9uLmJnLWxpZ2h0OmhvdmVyLApidXR0b24uYmctbGlnaHQ6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoKLmJnLWRhcmsgewogIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKYS5iZy1kYXJrOmhvdmVyLCBhLmJnLWRhcms6Zm9jdXMsCmJ1dHRvbi5iZy1kYXJrOmhvdmVyLApidXR0b24uYmctZGFyazpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50Owp9CgouYmctd2hpdGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoKLmJnLXRyYW5zcGFyZW50IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouYm9yZGVyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItdG9wIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0IHsKICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItYm90dG9tIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWxlZnQgewogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLTAgewogIGJvcmRlcjogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXRvcC0wIHsKICBib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItcmlnaHQtMCB7CiAgYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItYm90dG9tLTAgewogIGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsKfQoKLmJvcmRlci1sZWZ0LTAgewogIGJvcmRlci1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItcHJpbWFyeSB7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItc2Vjb25kYXJ5IHsKICBib3JkZXItY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKLmJvcmRlci1zdWNjZXNzIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDsKfQoKLmJvcmRlci1pbmZvIHsKICBib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKLmJvcmRlci13YXJuaW5nIHsKICBib3JkZXItY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKLmJvcmRlci1kYW5nZXIgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWxpZ2h0IHsKICBib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQoKLmJvcmRlci1kYXJrIHsKICBib3JkZXItY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKLmJvcmRlci13aGl0ZSB7CiAgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLXRvcCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLXJpZ2h0IHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWJvdHRvbSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWxlZnQgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWNpcmNsZSB7CiAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLTAgewogIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKfQoKLmNsZWFyZml4OjphZnRlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgY2xlYXI6IGJvdGg7CiAgY29udGVudDogIiI7Cn0KCi5kLW5vbmUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLmQtaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWJsb2NrIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKfQoKLmQtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KCi5kLXRhYmxlIHsKICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9CgouZC10YWJsZS1yb3cgewogIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50Owp9CgouZC10YWJsZS1jZWxsIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cn0KCi5kLWZsZXggewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50Owp9CgouZC1pbmxpbmUtZmxleCB7CiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmQtc20tbm9uZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWlubGluZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKICB9CiAgLmQtc20taW5saW5lLWJsb2NrIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1ibG9jayB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICAuZC1zbS10YWJsZSB7CiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwogIH0KICAuZC1zbS10YWJsZS1yb3cgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLXRhYmxlLWNlbGwgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1mbGV4IHsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWlubGluZS1mbGV4IHsKICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5kLW1kLW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC1tZC10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuZC1sZy1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtbGctaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1sZy1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtbGctdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWZsZXggewogICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICB9CiAgLmQtbGctaW5saW5lLWZsZXggewogICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5kLXhsLW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC14bC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQteGwtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQteGwtdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQteGwtdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC14bC10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQteGwtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC14bC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgcHJpbnQgewogIC5kLXByaW50LW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgouZW1iZWQtcmVzcG9uc2l2ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmVtYmVkLXJlc3BvbnNpdmU6OmJlZm9yZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7Cn0KCi5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sCi5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwKLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsCi5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwKLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJvcmRlcjogMDsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMjFieTk6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDQyLjg1NzE0MyU7Cn0KCi5lbWJlZC1yZXNwb25zaXZlLTE2Ynk5OjpiZWZvcmUgewogIHBhZGRpbmctdG9wOiA1Ni4yNSU7Cn0KCi5lbWJlZC1yZXNwb25zaXZlLTRieTM6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDc1JTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMWJ5MTo6YmVmb3JlIHsKICBwYWRkaW5nLXRvcDogMTAwJTsKfQoKLmZsZXgtcm93IHsKICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKfQoKLmZsZXgtY29sdW1uIHsKICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKfQoKLmZsZXgtcm93LXJldmVyc2UgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtY29sdW1uLXJldmVyc2UgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcCB7CiAgLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50Owp9CgouZmxleC1ub3dyYXAgewogIC1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXdyYXAtcmV2ZXJzZSB7CiAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtZmlsbCB7CiAgLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKfQoKLmZsZXgtZ3Jvdy0wIHsKICAtbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwogIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50Owp9CgouZmxleC1ncm93LTEgewogIC1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CiAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXNocmluay0wIHsKICAtbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwogIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXNocmluay0xIHsKICAtbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwogIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtc3RhcnQgewogIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHsKICAtbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50Owp9CgouanVzdGlmeS1jb250ZW50LWJldHdlZW4gewogIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1hcm91bmQgewogIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24taXRlbXMtc3RhcnQgewogIC1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1pdGVtcy1lbmQgewogIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWNlbnRlciB7CiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWJhc2VsaW5lIHsKICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLXN0cmV0Y2ggewogIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtc3RhcnQgewogIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWVuZCB7CiAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1jZW50ZXIgewogIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWJldHdlZW4gewogIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwogIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtYXJvdW5kIHsKICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtc3RyZXRjaCB7CiAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1hdXRvIHsKICAtbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CiAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1zdGFydCB7CiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1zZWxmLWVuZCB7CiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CiAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtY2VudGVyIHsKICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtYmFzZWxpbmUgewogIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtc3RyZXRjaCB7CiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwogIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmZsZXgtc20tcm93IHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWNvbHVtbiB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1yb3ctcmV2ZXJzZSB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tY29sdW1uLXJldmVyc2UgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXdyYXAgewogICAgLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLW5vd3JhcCB7CiAgICAtbXMtZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXdyYXAtcmV2ZXJzZSB7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWZpbGwgewogICAgLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1ncm93LTAgewogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDAgIWltcG9ydGFudDsKICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1ncm93LTEgewogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDEgIWltcG9ydGFudDsKICAgIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1zaHJpbmstMCB7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tc2hyaW5rLTEgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDEgIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnQgewogICAgLW1zLWZsZXgtcGFjazogc3RhcnQgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLWVuZCB7CiAgICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIgewogICAgLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLWJldHdlZW4gewogICAgLW1zLWZsZXgtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tYXJvdW5kIHsKICAgIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1zdGFydCB7CiAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1lbmQgewogICAgLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1jZW50ZXIgewogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewogICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLXN0YXJ0IHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1zbS1jZW50ZXIgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1zbS1iZXR3ZWVuIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1zbS1hcm91bmQgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tc3RyZXRjaCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0cmV0Y2ggIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtc20tYXV0byB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLXN0YXJ0IHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWVuZCB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWNlbnRlciB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1zbS1iYXNlbGluZSB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtc20tc3RyZXRjaCB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZmxleC1tZC1yb3cgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtY29sdW1uIHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLXJvdy1yZXZlcnNlIHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1jb2x1bW4tcmV2ZXJzZSB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtd3JhcCB7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtbm93cmFwIHsKICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtd3JhcC1yZXZlcnNlIHsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtZmlsbCB7CiAgICAtbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLWdyb3ctMCB7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwogICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLWdyb3ctMSB7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwogICAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLXNocmluay0wIHsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1zaHJpbmstMSB7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1zdGFydCB7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtZW5kIHsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYmV0d2VlbiB7CiAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1hcm91bmQgewogICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHsKICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLWVuZCB7CiAgICAtbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLWNlbnRlciB7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1tZC1iYXNlbGluZSB7CiAgICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtc3RyZXRjaCB7CiAgICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbWQtc3RhcnQgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1lbmQgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWNlbnRlciB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWJldHdlZW4gewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1zdHJldGNoIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1hdXRvIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtc3RhcnQgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtZW5kIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtY2VudGVyIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1zdHJldGNoIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5mbGV4LWxnLXJvdyB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1jb2x1bW4gewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctcm93LXJldmVyc2UgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLWNvbHVtbi1yZXZlcnNlIHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy13cmFwIHsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1ub3dyYXAgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy13cmFwLXJldmVyc2UgewogICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1maWxsIHsKICAgIC1tcy1mbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctZ3Jvdy0wIHsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAwICFpbXBvcnRhbnQ7CiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctZ3Jvdy0xIHsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctc2hyaW5rLTAgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDAgIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLXNocmluay0xIHsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAxICFpbXBvcnRhbnQ7CiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LWxnLXN0YXJ0IHsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1lbmQgewogICAgLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVuIHsKICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LWxnLWFyb3VuZCB7CiAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctc3RhcnQgewogICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctZW5kIHsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctY2VudGVyIHsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHsKICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1sZy1zdHJldGNoIHsKICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1zdGFydCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LWxnLWVuZCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctY2VudGVyIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctYmV0d2VlbiB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LWxnLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLWF1dG8gewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1sZy1zdGFydCB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1sZy1lbmQgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1sZy1jZW50ZXIgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5mbGV4LXhsLXJvdyB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1jb2x1bW4gewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtcm93LXJldmVyc2UgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLWNvbHVtbi1yZXZlcnNlIHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC13cmFwIHsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1ub3dyYXAgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC13cmFwLXJldmVyc2UgewogICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1maWxsIHsKICAgIC1tcy1mbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtZ3Jvdy0wIHsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAwICFpbXBvcnRhbnQ7CiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtZ3Jvdy0xIHsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtc2hyaW5rLTAgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDAgIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLXNocmluay0xIHsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAxICFpbXBvcnRhbnQ7CiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0IHsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1lbmQgewogICAgLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1iZXR3ZWVuIHsKICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLWFyb3VuZCB7CiAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtc3RhcnQgewogICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtZW5kIHsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtY2VudGVyIHsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy14bC1zdHJldGNoIHsKICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1zdGFydCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLWVuZCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQteGwtY2VudGVyIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQteGwtYmV0d2VlbiB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQteGwtYXJvdW5kIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXhsLWF1dG8gewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1zdGFydCB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1lbmQgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1jZW50ZXIgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYteGwtYmFzZWxpbmUgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXhsLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KfQoKLmZsb2F0LWxlZnQgewogIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi5mbG9hdC1yaWdodCB7CiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KCi5mbG9hdC1ub25lIHsKICBmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuZmxvYXQtc20tbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtc20tcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1zbS1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZmxvYXQtbWQtbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtbWQtcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1tZC1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuZmxvYXQtbGctbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtbGctcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1sZy1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmZsb2F0LXhsLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LXhsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQteGwtbm9uZSB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKLnBvc2l0aW9uLXN0YXRpYyB7CiAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tcmVsYXRpdmUgewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tYWJzb2x1dGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tZml4ZWQgewogIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tc3RpY2t5IHsKICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RpY2t5ICFpbXBvcnRhbnQ7Cn0KCi5maXhlZC10b3AgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9CgouZml4ZWQtYm90dG9tIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAzMDsKfQoKQHN1cHBvcnRzICgocG9zaXRpb246IC13ZWJraXQtc3RpY2t5KSBvciAocG9zaXRpb246IHN0aWNreSkpIHsKICAuc3RpY2t5LXRvcCB7CiAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7CiAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgdG9wOiAwOwogICAgei1pbmRleDogMTAyMDsKICB9Cn0KCi5zci1vbmx5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDFweDsKICBoZWlnaHQ6IDFweDsKICBwYWRkaW5nOiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQoKLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICBwb3NpdGlvbjogc3RhdGljOwogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICBvdmVyZmxvdzogdmlzaWJsZTsKICBjbGlwOiBhdXRvOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KCi5zaGFkb3ctc20gewogIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDc1KSAhaW1wb3J0YW50Owp9Cgouc2hhZG93IHsKICBib3gtc2hhZG93OiAwIDAuNXJlbSAxcmVtIHJnYmEoMCwgMCwgMCwgMC4xNSkgIWltcG9ydGFudDsKfQoKLnNoYWRvdy1sZyB7CiAgYm94LXNoYWRvdzogMCAxcmVtIDNyZW0gcmdiYSgwLCAwLCAwLCAwLjE3NSkgIWltcG9ydGFudDsKfQoKLnNoYWRvdy1ub25lIHsKICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cn0KCi53LTI1IHsKICB3aWR0aDogMjUlICFpbXBvcnRhbnQ7Cn0KCi53LTUwIHsKICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7Cn0KCi53LTc1IHsKICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7Cn0KCi53LTEwMCB7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLnctYXV0byB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQoKLmgtMjUgewogIGhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5oLTUwIHsKICBoZWlnaHQ6IDUwJSAhaW1wb3J0YW50Owp9CgouaC03NSB7CiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQoKLmgtMTAwIHsKICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLmgtYXV0byB7CiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5tdy0xMDAgewogIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgoubWgtMTAwIHsKICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5tLTAgewogIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CgoubXQtMCwKLm15LTAgewogIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoKLm1yLTAsCi5teC0wIHsKICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLm1iLTAsCi5teS0wIHsKICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KCi5tbC0wLAoubXgtMCB7CiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKfQoKLm0tMSB7CiAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5tdC0xLAoubXktMSB7CiAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubXItMSwKLm14LTEgewogIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubWItMSwKLm15LTEgewogIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm1sLTEsCi5teC0xIHsKICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubS0yIHsKICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50Owp9CgoubXQtMiwKLm15LTIgewogIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50Owp9CgoubXItMiwKLm14LTIgewogIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi0yLAoubXktMiB7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tbC0yLAoubXgtMiB7CiAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50Owp9CgoubS0zIHsKICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsKfQoKLm10LTMsCi5teS0zIHsKICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0zLAoubXgtMyB7CiAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi0zLAoubXktMyB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMywKLm14LTMgewogIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTQgewogIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tdC00LAoubXktNCB7CiAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tci00LAoubXgtNCB7CiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTQsCi5teS00IHsKICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm1sLTQsCi5teC00IHsKICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTUgewogIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9CgoubXQtNSwKLm15LTUgewogIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKfQoKLm1yLTUsCi5teC01IHsKICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLm1iLTUsCi5teS01IHsKICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tbC01LAoubXgtNSB7CiAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLnAtMCB7CiAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9CgoucHQtMCwKLnB5LTAgewogIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5wci0wLAoucHgtMCB7CiAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgoucGItMCwKLnB5LTAgewogIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KCi5wbC0wLAoucHgtMCB7CiAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wLTEgewogIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTEsCi5weS0xIHsKICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoucHItMSwKLnB4LTEgewogIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTEsCi5weS0xIHsKICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMSwKLnB4LTEgewogIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoucC0yIHsKICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTIsCi5weS0yIHsKICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0yLAoucHgtMiB7CiAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wYi0yLAoucHktMiB7CiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMiwKLnB4LTIgewogIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTMgewogIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKfQoKLnB0LTMsCi5weS0zIHsKICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50Owp9CgoucHItMywKLnB4LTMgewogIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoKLnBiLTMsCi5weS0zIHsKICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMywKLnB4LTMgewogIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50Owp9CgoucC00IHsKICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTQsCi5weS00IHsKICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci00LAoucHgtNCB7CiAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wYi00LAoucHktNCB7CiAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtNCwKLnB4LTQgewogIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTUgewogIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKfQoKLnB0LTUsCi5weS01IHsKICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9CgoucHItNSwKLnB4LTUgewogIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLnBiLTUsCi5weS01IHsKICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50Owp9CgoucGwtNSwKLnB4LTUgewogIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9CgoubS1hdXRvIHsKICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsKfQoKLm10LWF1dG8sCi5teS1hdXRvIHsKICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5tci1hdXRvLAoubXgtYXV0byB7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5tYi1hdXRvLAoubXktYXV0byB7CiAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50Owp9CgoubWwtYXV0bywKLm14LWF1dG8gewogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5tLXNtLTAgewogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS0wLAogIC5teS1zbS0wIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTAsCiAgLm14LXNtLTAgewogICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS0wLAogIC5teS1zbS0wIHsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTAsCiAgLm14LXNtLTAgewogICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm0tc20tMSB7CiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTEsCiAgLm15LXNtLTEgewogICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tMSwKICAubXgtc20tMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTEsCiAgLm15LXNtLTEgewogICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tMSwKICAubXgtc20tMSB7CiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1zbS0yIHsKICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS0yLAogIC5teS1zbS0yIHsKICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tMiwKICAubXgtc20tMiB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMiwKICAubXktc20tMiB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTIsCiAgLm14LXNtLTIgewogICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1zbS0zIHsKICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtc20tMywKICAubXktc20tMyB7CiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS0zLAogIC5teC1zbS0zIHsKICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMywKICAubXktc20tMyB7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS0zLAogIC5teC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTQgewogICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTQsCiAgLm15LXNtLTQgewogICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS00LAogIC5teC1zbS00IHsKICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS00LAogIC5teS1zbS00IHsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tNCwKICAubXgtc20tNCB7CiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTUgewogICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS01LAogIC5teS1zbS01IHsKICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTUsCiAgLm14LXNtLTUgewogICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS01LAogIC5teS1zbS01IHsKICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTUsCiAgLm14LXNtLTUgewogICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtc20tMCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS0wLAogIC5weS1zbS0wIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS0wLAogIC5weC1zbS0wIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnBiLXNtLTAsCiAgLnB5LXNtLTAgewogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTAsCiAgLnB4LXNtLTAgewogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTEgewogICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tMSwKICAucHktc20tMSB7CiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tMSwKICAucHgtc20tMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS0xLAogIC5weS1zbS0xIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS0xLAogIC5weC1zbS0xIHsKICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS0yIHsKICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tMiwKICAucHktc20tMiB7CiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS0yLAogIC5weC1zbS0yIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItc20tMiwKICAucHktc20tMiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS0yLAogIC5weC1zbS0yIHsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTMgewogICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tMywKICAucHktc20tMyB7CiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tMywKICAucHgtc20tMyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS0zLAogIC5weS1zbS0zIHsKICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS0zLAogIC5weC1zbS0zIHsKICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS00IHsKICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tNCwKICAucHktc20tNCB7CiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS00LAogIC5weC1zbS00IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItc20tNCwKICAucHktc20tNCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS00LAogIC5weC1zbS00IHsKICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTUgewogICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tNSwKICAucHktc20tNSB7CiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tNSwKICAucHgtc20tNSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS01LAogIC5weS1zbS01IHsKICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS01LAogIC5weC1zbS01IHsKICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubS1zbS1hdXRvIHsKICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXQtc20tYXV0bywKICAubXktc20tYXV0byB7CiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS1hdXRvLAogIC5teC1zbS1hdXRvIHsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWItc20tYXV0bywKICAubXktc20tYXV0byB7CiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS1hdXRvLAogIC5teC1zbS1hdXRvIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubS1tZC0wIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtMCwKICAubXktbWQtMCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC0wLAogIC5teC1tZC0wIHsKICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAubWItbWQtMCwKICAubXktbWQtMCB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC0wLAogIC5teC1tZC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLTEgewogICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC0xLAogIC5teS1tZC0xIHsKICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTEsCiAgLm14LW1kLTEgewogICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC0xLAogIC5teS1tZC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTEsCiAgLm14LW1kLTEgewogICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtMiB7CiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtMiwKICAubXktbWQtMiB7CiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTIsCiAgLm14LW1kLTIgewogICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTIsCiAgLm15LW1kLTIgewogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC0yLAogIC5teC1tZC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtMyB7CiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTMsCiAgLm15LW1kLTMgewogICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtMywKICAubXgtbWQtMyB7CiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTMsCiAgLm15LW1kLTMgewogICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtMywKICAubXgtbWQtMyB7CiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC00IHsKICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC00LAogIC5teS1tZC00IHsKICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtNCwKICAubXgtbWQtNCB7CiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbWQtNCwKICAubXktbWQtNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTQsCiAgLm14LW1kLTQgewogICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC01IHsKICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtNSwKICAubXktbWQtNSB7CiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC01LAogIC5teC1tZC01IHsKICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWItbWQtNSwKICAubXktbWQtNSB7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC01LAogIC5teC1tZC01IHsKICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLW1kLTAgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogIH0KICAucHQtbWQtMCwKICAucHktbWQtMCB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAucHItbWQtMCwKICAucHgtbWQtMCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1tZC0wLAogIC5weS1tZC0wIHsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1tZC0wLAogIC5weC1tZC0wIHsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAucC1tZC0xIHsKICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTEsCiAgLnB5LW1kLTEgewogICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTEsCiAgLnB4LW1kLTEgewogICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtMSwKICAucHktbWQtMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMSwKICAucHgtbWQtMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtMiB7CiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTIsCiAgLnB5LW1kLTIgewogICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItbWQtMiwKICAucHgtbWQtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTIsCiAgLnB5LW1kLTIgewogICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMiwKICAucHgtbWQtMiB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1tZC0zIHsKICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTMsCiAgLnB5LW1kLTMgewogICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTMsCiAgLnB4LW1kLTMgewogICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtMywKICAucHktbWQtMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMywKICAucHgtbWQtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtNCB7CiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTQsCiAgLnB5LW1kLTQgewogICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItbWQtNCwKICAucHgtbWQtNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTQsCiAgLnB5LW1kLTQgewogICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtNCwKICAucHgtbWQtNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1tZC01IHsKICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTUsCiAgLnB5LW1kLTUgewogICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTUsCiAgLnB4LW1kLTUgewogICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtNSwKICAucHktbWQtNSB7CiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtNSwKICAucHgtbWQtNSB7CiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtYXV0byB7CiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLWF1dG8sCiAgLm15LW1kLWF1dG8gewogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXItbWQtYXV0bywKICAubXgtbWQtYXV0byB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLWF1dG8sCiAgLm15LW1kLWF1dG8gewogICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtYXV0bywKICAubXgtbWQtYXV0byB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLm0tbGctMCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTAsCiAgLm15LWxnLTAgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAubXItbGctMCwKICAubXgtbGctMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTAsCiAgLm15LWxnLTAgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAubWwtbGctMCwKICAubXgtbGctMCB7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAubS1sZy0xIHsKICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctMSwKICAubXktbGctMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy0xLAogIC5teC1sZy0xIHsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbGctMSwKICAubXktbGctMSB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy0xLAogIC5teC1sZy0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTIsCiAgLm15LWxnLTIgewogICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy0yLAogIC5teC1sZy0yIHsKICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0yLAogIC5teS1sZy0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbGctMiwKICAubXgtbGctMiB7CiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLTMgewogICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy0zLAogIC5teS1sZy0zIHsKICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTMsCiAgLm14LWxnLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0zLAogIC5teS1sZy0zIHsKICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLTMsCiAgLm14LWxnLTMgewogICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctNCB7CiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctNCwKICAubXktbGctNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTQsCiAgLm14LWxnLTQgewogICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTQsCiAgLm15LWxnLTQgewogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy00LAogIC5teC1sZy00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTUsCiAgLm15LWxnLTUgewogICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXItbGctNSwKICAubXgtbGctNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTUsCiAgLm15LWxnLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbGctNSwKICAubXgtbGctNSB7CiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucC1sZy0wIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICB9CiAgLnB0LWxnLTAsCiAgLnB5LWxnLTAgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTAsCiAgLnB4LWxnLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGItbGctMCwKICAucHktbGctMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAucGwtbGctMCwKICAucHgtbGctMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnAtbGctMSB7CiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0xLAogIC5weS1sZy0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy0xLAogIC5weC1sZy0xIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTEsCiAgLnB5LWxnLTEgewogICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTEsCiAgLnB4LWxnLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0yLAogIC5weS1sZy0yIHsKICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTIsCiAgLnB4LWxnLTIgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy0yLAogIC5weS1sZy0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTIsCiAgLnB4LWxnLTIgewogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbGctMyB7CiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0zLAogIC5weS1sZy0zIHsKICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy0zLAogIC5weC1sZy0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTMsCiAgLnB5LWxnLTMgewogICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTMsCiAgLnB4LWxnLTMgewogICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTQgewogICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy00LAogIC5weS1sZy00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTQsCiAgLnB4LWxnLTQgewogICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy00LAogIC5weS1sZy00IHsKICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTQsCiAgLnB4LWxnLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbGctNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy01LAogIC5weS1sZy01IHsKICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy01LAogIC5weC1sZy01IHsKICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTUsCiAgLnB5LWxnLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTUsCiAgLnB4LWxnLTUgewogICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLWF1dG8gewogICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy1hdXRvLAogIC5teS1sZy1hdXRvIHsKICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLWF1dG8sCiAgLm14LWxnLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy1hdXRvLAogIC5teS1sZy1hdXRvIHsKICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLWF1dG8sCiAgLm14LWxnLWF1dG8gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAubS14bC0wIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIH0KICAubXQteGwtMCwKICAubXkteGwtMCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC0wLAogIC5teC14bC0wIHsKICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAubWIteGwtMCwKICAubXkteGwtMCB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC0wLAogIC5teC14bC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tLXhsLTEgewogICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC0xLAogIC5teS14bC0xIHsKICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTEsCiAgLm14LXhsLTEgewogICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC0xLAogIC5teS14bC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTEsCiAgLm14LXhsLTEgewogICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0teGwtMiB7CiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQteGwtMiwKICAubXkteGwtMiB7CiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTIsCiAgLm14LXhsLTIgewogICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTIsCiAgLm15LXhsLTIgewogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC0yLAogIC5teC14bC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0teGwtMyB7CiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLTMsCiAgLm15LXhsLTMgewogICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtMywKICAubXgteGwtMyB7CiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTMsCiAgLm15LXhsLTMgewogICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwteGwtMywKICAubXgteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC00IHsKICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC00LAogIC5teS14bC00IHsKICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtNCwKICAubXgteGwtNCB7CiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWIteGwtNCwKICAubXkteGwtNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTQsCiAgLm14LXhsLTQgewogICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC01IHsKICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXQteGwtNSwKICAubXkteGwtNSB7CiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC01LAogIC5teC14bC01IHsKICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWIteGwtNSwKICAubXkteGwtNSB7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC01LAogIC5teC14bC01IHsKICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTAgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogIH0KICAucHQteGwtMCwKICAucHkteGwtMCB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAucHIteGwtMCwKICAucHgteGwtMCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wYi14bC0wLAogIC5weS14bC0wIHsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC0wLAogIC5weC14bC0wIHsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAucC14bC0xIHsKICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTEsCiAgLnB5LXhsLTEgewogICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTEsCiAgLnB4LXhsLTEgewogICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtMSwKICAucHkteGwtMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtMSwKICAucHgteGwtMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtMiB7CiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTIsCiAgLnB5LXhsLTIgewogICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtMiwKICAucHgteGwtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTIsCiAgLnB5LXhsLTIgewogICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtMiwKICAucHgteGwtMiB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC14bC0zIHsKICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTMsCiAgLnB5LXhsLTMgewogICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTMsCiAgLnB4LXhsLTMgewogICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtMywKICAucHkteGwtMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtMywKICAucHgteGwtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtNCB7CiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTQsCiAgLnB5LXhsLTQgewogICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtNCwKICAucHgteGwtNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTQsCiAgLnB5LXhsLTQgewogICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtNCwKICAucHgteGwtNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC14bC01IHsKICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTUsCiAgLnB5LXhsLTUgewogICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTUsCiAgLnB4LXhsLTUgewogICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtNSwKICAucHkteGwtNSB7CiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtNSwKICAucHgteGwtNSB7CiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm0teGwtYXV0byB7CiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLWF1dG8sCiAgLm15LXhsLWF1dG8gewogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXIteGwtYXV0bywKICAubXgteGwtYXV0byB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLWF1dG8sCiAgLm15LXhsLWF1dG8gewogICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWwteGwtYXV0bywKICAubXgteGwtYXV0byB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIH0KfQoKLnRleHQtbW9ub3NwYWNlIHsKICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9CgoudGV4dC1qdXN0aWZ5IHsKICB0ZXh0LWFsaWduOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LW5vd3JhcCB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50Owp9CgoudGV4dC10cnVuY2F0ZSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgoudGV4dC1sZWZ0IHsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXJpZ2h0IHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50Owp9CgoudGV4dC1jZW50ZXIgewogIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAudGV4dC1zbS1sZWZ0IHsKICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtc20tcmlnaHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtc20tY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLnRleHQtbWQtbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LW1kLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LW1kLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC50ZXh0LWxnLWxlZnQgewogICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwogIH0KICAudGV4dC1sZy1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwogIH0KICAudGV4dC1sZy1jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLnRleHQteGwtbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXhsLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXhsLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KCi50ZXh0LWxvd2VyY2FzZSB7CiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSAhaW1wb3J0YW50Owp9CgoudGV4dC11cHBlcmNhc2UgewogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtY2FwaXRhbGl6ZSB7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LWxpZ2h0IHsKICBmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnQ7Cn0KCi5mb250LXdlaWdodC1ub3JtYWwgewogIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LWJvbGQgewogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsKfQoKLmZvbnQtaXRhbGljIHsKICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsKfQoKLnRleHQtd2hpdGUgewogIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXByaW1hcnkgewogIGNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1wcmltYXJ5OmhvdmVyLCBhLnRleHQtcHJpbWFyeTpmb2N1cyB7CiAgY29sb3I6ICMwMDYyY2MgIWltcG9ydGFudDsKfQoKLnRleHQtc2Vjb25kYXJ5IHsKICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgphLnRleHQtc2Vjb25kYXJ5OmhvdmVyLCBhLnRleHQtc2Vjb25kYXJ5OmZvY3VzIHsKICBjb2xvcjogIzU0NWI2MiAhaW1wb3J0YW50Owp9CgoudGV4dC1zdWNjZXNzIHsKICBjb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CgphLnRleHQtc3VjY2Vzczpob3ZlciwgYS50ZXh0LXN1Y2Nlc3M6Zm9jdXMgewogIGNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWluZm8gewogIGNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1pbmZvOmhvdmVyLCBhLnRleHQtaW5mbzpmb2N1cyB7CiAgY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoKLnRleHQtd2FybmluZyB7CiAgY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKYS50ZXh0LXdhcm5pbmc6aG92ZXIsIGEudGV4dC13YXJuaW5nOmZvY3VzIHsKICBjb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50Owp9CgoudGV4dC1kYW5nZXIgewogIGNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1kYW5nZXI6aG92ZXIsIGEudGV4dC1kYW5nZXI6Zm9jdXMgewogIGNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWxpZ2h0IHsKICBjb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50Owp9CgphLnRleHQtbGlnaHQ6aG92ZXIsIGEudGV4dC1saWdodDpmb2N1cyB7CiAgY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoKLnRleHQtZGFyayB7CiAgY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKYS50ZXh0LWRhcms6aG92ZXIsIGEudGV4dC1kYXJrOmZvY3VzIHsKICBjb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50Owp9CgoudGV4dC1ib2R5IHsKICBjb2xvcjogIzIxMjUyOSAhaW1wb3J0YW50Owp9CgoudGV4dC1tdXRlZCB7CiAgY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKLnRleHQtYmxhY2stNTAgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSkgIWltcG9ydGFudDsKfQoKLnRleHQtd2hpdGUtNTAgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgIWltcG9ydGFudDsKfQoKLnRleHQtaGlkZSB7CiAgZm9udDogMC8wIGE7CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIHRleHQtc2hhZG93OiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKfQoKLnZpc2libGUgewogIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKfQoKLmludmlzaWJsZSB7CiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSBwcmludCB7CiAgKiwKICAqOjpiZWZvcmUsCiAgKjo6YWZ0ZXIgewogICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgYTpub3QoLmJ0bikgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQogIGFiYnJbdGl0bGVdOjphZnRlciB7CiAgICBjb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKICB9CiAgcHJlIHsKICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcCAhaW1wb3J0YW50OwogIH0KICBwcmUsCiAgYmxvY2txdW90ZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWRiNWJkOwogICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwogIH0KICB0aGVhZCB7CiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7CiAgfQogIHRyLAogIGltZyB7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgfQogIHAsCiAgaDIsCiAgaDMgewogICAgb3JwaGFuczogMzsKICAgIHdpZG93czogMzsKICB9CiAgaDIsCiAgaDMgewogICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgfQogIEBwYWdlIHsKICAgIHNpemU6IGEzOwogIH0KICBib2R5IHsKICAgIG1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDsKICB9CiAgLmNvbnRhaW5lciB7CiAgICBtaW4td2lkdGg6IDk5MnB4ICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLmJhZGdlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgfQogIC50YWJsZSB7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7CiAgfQogIC50YWJsZSB0ZCwKICAudGFibGUgdGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIH0KICAudGFibGUtYm9yZGVyZWQgdGgsCiAgLnRhYmxlLWJvcmRlcmVkIHRkIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWRhcmsgewogICAgY29sb3I6IGluaGVyaXQ7CiAgfQogIC50YWJsZS1kYXJrIHRoLAogIC50YWJsZS1kYXJrIHRkLAogIC50YWJsZS1kYXJrIHRoZWFkIHRoLAogIC50YWJsZS1kYXJrIHRib2R5ICsgdGJvZHkgewogICAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2OwogIH0KICAudGFibGUgLnRoZWFkLWRhcmsgdGggewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBib3JkZXItY29sb3I6ICNkZWUyZTY7CiAgfQp9Ci8qIyBzb3VyY2VNYXBwaW5nVVJMPWJvb3RzdHJhcC5jc3MubWFwICov]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/prefixed-bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjpyb290IHsKCS0tYmx1ZTogIzAwN2JmZjsKCS0taW5kaWdvOiAjNjYxMGYyOwoJLS1wdXJwbGU6ICM2ZjQyYzE7CgktLXBpbms6ICNlODNlOGM7CgktLXJlZDogI2RjMzU0NTsKCS0tb3JhbmdlOiAjZmQ3ZTE0OwoJLS15ZWxsb3c6ICNmZmMxMDc7CgktLWdyZWVuOiAjMjhhNzQ1OwoJLS10ZWFsOiAjMjBjOTk3OwoJLS1jeWFuOiAjMTdhMmI4OwoJLS13aGl0ZTogI2ZmZjsKCS0tZ3JheTogIzZjNzU3ZDsKCS0tZ3JheS1kYXJrOiAjMzQzYTQwOwoJLS1wcmltYXJ5OiAjMDA3YmZmOwoJLS1zZWNvbmRhcnk6ICM2Yzc1N2Q7CgktLXN1Y2Nlc3M6ICMyOGE3NDU7CgktLWluZm86ICMxN2EyYjg7CgktLXdhcm5pbmc6ICNmZmMxMDc7CgktLWRhbmdlcjogI2RjMzU0NTsKCS0tbGlnaHQ6ICNmOGY5ZmE7CgktLWRhcms6ICMzNDNhNDA7CgktLWJyZWFrcG9pbnQteHM6IDA7CgktLWJyZWFrcG9pbnQtc206IDU3NnB4OwoJLS1icmVha3BvaW50LW1kOiA3NjhweDsKCS0tYnJlYWtwb2ludC1sZzogOTkycHg7CgktLWJyZWFrcG9pbnQteGw6IDEyMDBweDsKCS0tZm9udC1mYW1pbHktc2Fucy1zZXJpZjogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBTZWdvZSBVSSwgUm9ib3RvLCBIZWx2ZXRpY2EgTmV1ZSwgQXJpYWwsIHNhbnMtc2VyaWYsIEFwcGxlIENvbG9yIEVtb2ppLCBTZWdvZSBVSSBFbW9qaSwgU2Vnb2UgVUkgU3ltYm9sLCBOb3RvIENvbG9yIEVtb2ppOwoJLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgTGliZXJhdGlvbiBNb25vLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlOwp9CgoqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCmh0bWwgewoJZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CglsaW5lLWhlaWdodDogMS4xNTsKCS13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKCS1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwoJLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7Cgktd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7Cn0KCkAtbXMtdmlld3BvcnQgewoJd2lkdGg6IGRldmljZS13aWR0aDsKfQoKYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgpib2R5IHsKCW1hcmdpbjogMDsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7Cglmb250LXNpemU6IDFyZW07Cglmb250LXdlaWdodDogNDAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjMjEyNTI5OwoJdGV4dC1hbGlnbjogbGVmdDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KClt0YWJpbmRleD0iLTEiXTpmb2N1cyB7CglvdXRsaW5lOiAwICFpbXBvcnRhbnQ7Cn0KCmhyIHsKCWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwoJaGVpZ2h0OiAwOwoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYgewoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgpwIHsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAxcmVtOwp9CgphYmJyW3RpdGxlXSwgYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsKCWN1cnNvcjogaGVscDsKCWJvcmRlci1ib3R0b206IDA7Cn0KCmFkZHJlc3MgewoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CgpvbCwgdWwsIGRsIHsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAxcmVtOwp9CgpvbCBvbCwgdWwgdWwsIG9sIHVsLCB1bCBvbCB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgpkdCB7Cglmb250LXdlaWdodDogNzAwOwp9CgpkZCB7CgltYXJnaW4tYm90dG9tOiAuNXJlbTsKCW1hcmdpbi1sZWZ0OiAwOwp9CgpibG9ja3F1b3RlIHsKCW1hcmdpbjogMCAwIDFyZW07Cn0KCmRmbiB7Cglmb250LXN0eWxlOiBpdGFsaWM7Cn0KCmIsIHN0cm9uZyB7Cglmb250LXdlaWdodDogYm9sZGVyOwp9CgpzbWFsbCB7Cglmb250LXNpemU6IDgwJTsKfQoKc3ViLCBzdXAgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZm9udC1zaXplOiA3NSU7CglsaW5lLWhlaWdodDogMDsKCXZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKc3ViIHsKCWJvdHRvbTogLS4yNWVtOwp9CgpzdXAgewoJdG9wOiAtLjVlbTsKfQoKYSB7Cgljb2xvcjogIzAwN2JmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsKfQoKYTpob3ZlciB7Cgljb2xvcjogIzAwNTZiMzsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKSB7Cgljb2xvcjogaW5oZXJpdDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXIsIGE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmZvY3VzIHsKCWNvbG9yOiBpbmhlcml0OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7CglvdXRsaW5lOiAwOwp9CgpwcmUsIGNvZGUsIGtiZCwgc2FtcCB7Cglmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwoJZm9udC1zaXplOiAxZW07Cn0KCnByZSB7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCW92ZXJmbG93OiBhdXRvOwoJLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7Cn0KCmZpZ3VyZSB7CgltYXJnaW46IDAgMCAxcmVtOwp9CgppbWcgewoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWJvcmRlci1zdHlsZTogbm9uZTsKfQoKc3ZnIHsKCW92ZXJmbG93OiBoaWRkZW47Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Cgp0YWJsZSB7Cglib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9CgpjYXB0aW9uIHsKCXBhZGRpbmctdG9wOiAuNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjc1cmVtOwoJY29sb3I6ICM2Yzc1N2Q7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJY2FwdGlvbi1zaWRlOiBib3R0b207Cn0KCnRoIHsKCXRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCmxhYmVsIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgpidXR0b24gewoJYm9yZGVyLXJhZGl1czogMDsKfQoKYnV0dG9uOmZvY3VzIHsKCW91dGxpbmU6IDFweCBkb3R0ZWQ7CglvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7Cn0KCmlucHV0LCBidXR0b24sIHNlbGVjdCwgb3B0Z3JvdXAsIHRleHRhcmVhIHsKCW1hcmdpbjogMDsKCWZvbnQtZmFtaWx5OiBpbmhlcml0OwoJZm9udC1zaXplOiBpbmhlcml0OwoJbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCmJ1dHRvbiwgaW5wdXQgewoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmJ1dHRvbiwgc2VsZWN0IHsKCXRleHQtdHJhbnNmb3JtOiBub25lOwp9CgpidXR0b24sIGh0bWwgW3R5cGU9ImJ1dHRvbiJdLCBbdHlwZT0icmVzZXQiXSwgW3R5cGU9InN1Ym1pdCJdIHsKCS13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CgpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsIFt0eXBlPSJidXR0b24iXTo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9InJlc2V0Il06Oi1tb3otZm9jdXMtaW5uZXIsIFt0eXBlPSJzdWJtaXQiXTo6LW1vei1mb2N1cy1pbm5lciB7CglwYWRkaW5nOiAwOwoJYm9yZGVyLXN0eWxlOiBub25lOwp9CgppbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7CglwYWRkaW5nOiAwOwp9CgppbnB1dFt0eXBlPSJkYXRlIl0sIGlucHV0W3R5cGU9InRpbWUiXSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSwgaW5wdXRbdHlwZT0ibW9udGgiXSB7Cgktd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7Cn0KCnRleHRhcmVhIHsKCW92ZXJmbG93OiBhdXRvOwoJcmVzaXplOiB2ZXJ0aWNhbDsKfQoKZmllbGRzZXQgewoJbWluLXdpZHRoOiAwOwoJcGFkZGluZzogMDsKCW1hcmdpbjogMDsKCWJvcmRlcjogMDsKfQoKbGVnZW5kIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7CgltYXgtd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAwOwoJbWFyZ2luLWJvdHRvbTogLjVyZW07Cglmb250LXNpemU6IDEuNXJlbTsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0OwoJY29sb3I6IGluaGVyaXQ7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Cgpwcm9ncmVzcyB7Cgl2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KClt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwgW3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKCWhlaWdodDogYXV0bzsKfQoKW3R5cGU9InNlYXJjaCJdIHsKCW91dGxpbmUtb2Zmc2V0OiAtMnB4OwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgpbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sIFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewoJZm9udDogaW5oZXJpdDsKCS13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CgpvdXRwdXQgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgpzdW1tYXJ5IHsKCWRpc3BsYXk6IGxpc3QtaXRlbTsKCWN1cnNvcjogcG9pbnRlcjsKfQoKdGVtcGxhdGUgewoJZGlzcGxheTogbm9uZTsKfQoKW2hpZGRlbl0gewoJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAuaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwoJZm9udC1mYW1pbHk6IGluaGVyaXQ7Cglmb250LXdlaWdodDogNTAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKCWNvbG9yOiBpbmhlcml0Owp9CgpoMSwgLmgxIHsKCWZvbnQtc2l6ZTogMi41cmVtOwp9CgpoMiwgLmgyIHsKCWZvbnQtc2l6ZTogMnJlbTsKfQoKaDMsIC5oMyB7Cglmb250LXNpemU6IDEuNzVyZW07Cn0KCmg0LCAuaDQgewoJZm9udC1zaXplOiAxLjVyZW07Cn0KCmg1LCAuaDUgewoJZm9udC1zaXplOiAxLjI1cmVtOwp9CgpoNiwgLmg2IHsKCWZvbnQtc2l6ZTogMXJlbTsKfQoKLmxlYWQgewoJZm9udC1zaXplOiAxLjI1cmVtOwoJZm9udC13ZWlnaHQ6IDMwMDsKfQoKLmRpc3BsYXktMSB7Cglmb250LXNpemU6IDZyZW07Cglmb250LXdlaWdodDogMzAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKfQoKLmRpc3BsYXktMiB7Cglmb250LXNpemU6IDUuNXJlbTsKCWZvbnQtd2VpZ2h0OiAzMDA7CglsaW5lLWhlaWdodDogMS4yOwp9CgouZGlzcGxheS0zIHsKCWZvbnQtc2l6ZTogNC41cmVtOwoJZm9udC13ZWlnaHQ6IDMwMDsKCWxpbmUtaGVpZ2h0OiAxLjI7Cn0KCi5kaXNwbGF5LTQgewoJZm9udC1zaXplOiAzLjVyZW07Cglmb250LXdlaWdodDogMzAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKfQoKaHIgewoJbWFyZ2luLXRvcDogMXJlbTsKCW1hcmdpbi1ib3R0b206IDFyZW07Cglib3JkZXI6IDA7Cglib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMSk7Cn0KCnNtYWxsLCAuc21hbGwgewoJZm9udC1zaXplOiA4MCU7Cglmb250LXdlaWdodDogNDAwOwp9CgptYXJrLCAubWFyayB7CglwYWRkaW5nOiAuMmVtOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoKLmxpc3QtdW5zdHlsZWQgewoJcGFkZGluZy1sZWZ0OiAwOwoJbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lIHsKCXBhZGRpbmctbGVmdDogMDsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5saXN0LWlubGluZS1pdGVtIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CgltYXJnaW4tcmlnaHQ6IC41cmVtOwp9CgouaW5pdGlhbGlzbSB7Cglmb250LXNpemU6IDkwJTsKCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi5ibG9ja3F1b3RlIHsKCW1hcmdpbi1ib3R0b206IDFyZW07Cglmb250LXNpemU6IDEuMjVyZW07Cn0KCi5ibG9ja3F1b3RlLWZvb3RlciB7CglkaXNwbGF5OiBibG9jazsKCWZvbnQtc2l6ZTogODAlOwoJY29sb3I6ICM2Yzc1N2Q7Cn0KCi5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHsKCWNvbnRlbnQ6ICLigJTCoCI7Cn0KCi5pbWctZmx1aWQgewoJbWF4LXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBhdXRvOwp9CgouaW1nLXRodW1ibmFpbCB7CglwYWRkaW5nOiAuMjVyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKCW1heC13aWR0aDogMTAwJTsKCWhlaWdodDogYXV0bzsKfQoKLmZpZ3VyZSB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5maWd1cmUtaW1nIHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwoJbGluZS1oZWlnaHQ6IDE7Cn0KCi5maWd1cmUtY2FwdGlvbiB7Cglmb250LXNpemU6IDkwJTsKCWNvbG9yOiAjNmM3NTdkOwp9Cgpjb2RlIHsKCWZvbnQtc2l6ZTogODcuNSU7Cgljb2xvcjogI2U4M2U4YzsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KCmEgPiBjb2RlIHsKCWNvbG9yOiBpbmhlcml0Owp9CgprYmQgewoJcGFkZGluZzogLjJyZW0gLjRyZW07Cglmb250LXNpemU6IDg3LjUlOwoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCmtiZCBrYmQgewoJcGFkZGluZzogMDsKCWZvbnQtc2l6ZTogMTAwJTsKCWZvbnQtd2VpZ2h0OiA3MDA7Cn0KCnByZSB7CglkaXNwbGF5OiBibG9jazsKCWZvbnQtc2l6ZTogODcuNSU7Cgljb2xvcjogIzIxMjUyOTsKfQoKcHJlIGNvZGUgewoJZm9udC1zaXplOiBpbmhlcml0OwoJY29sb3I6IGluaGVyaXQ7Cgl3b3JkLWJyZWFrOiBub3JtYWw7Cn0KCi5wcmUtc2Nyb2xsYWJsZSB7CgltYXgtaGVpZ2h0OiAzNDBweDsKCW92ZXJmbG93LXk6IHNjcm9sbDsKfQoKLmNvbnRhaW5lciB7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmctcmlnaHQ6IDE1cHg7CglwYWRkaW5nLWxlZnQ6IDE1cHg7CgltYXJnaW4tcmlnaHQ6IGF1dG87CgltYXJnaW4tbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY29udGFpbmVyIHsKCQltYXgtd2lkdGg6IDU0MHB4OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5jb250YWluZXIgewoJCW1heC13aWR0aDogNzIwcHg7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmNvbnRhaW5lciB7CgkJbWF4LXdpZHRoOiA5NjBweDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLmNvbnRhaW5lciB7CgkJbWF4LXdpZHRoOiAxMTQwcHg7Cgl9Cn0KCi5jb250YWluZXItZmx1aWQgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nLXJpZ2h0OiAxNXB4OwoJcGFkZGluZy1sZWZ0OiAxNXB4OwoJbWFyZ2luLXJpZ2h0OiBhdXRvOwoJbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5yb3cgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCW1hcmdpbi1yaWdodDogLTE1cHg7CgltYXJnaW4tbGVmdDogLTE1cHg7Cn0KCi5uby1ndXR0ZXJzIHsKCW1hcmdpbi1yaWdodDogMDsKCW1hcmdpbi1sZWZ0OiAwOwp9Cgoubm8tZ3V0dGVycyA+IC5jb2wsIC5uby1ndXR0ZXJzID4gW2NsYXNzKj0iY29sLSJdIHsKCXBhZGRpbmctcmlnaHQ6IDA7CglwYWRkaW5nLWxlZnQ6IDA7Cn0KCi5jb2wtMSwgLmNvbC0yLCAuY29sLTMsIC5jb2wtNCwgLmNvbC01LCAuY29sLTYsIC5jb2wtNywgLmNvbC04LCAuY29sLTksIC5jb2wtMTAsIC5jb2wtMTEsIC5jb2wtMTIsIC5jb2wsIC5jb2wtYXV0bywgLmNvbC1zbS0xLCAuY29sLXNtLTIsIC5jb2wtc20tMywgLmNvbC1zbS00LCAuY29sLXNtLTUsIC5jb2wtc20tNiwgLmNvbC1zbS03LCAuY29sLXNtLTgsIC5jb2wtc20tOSwgLmNvbC1zbS0xMCwgLmNvbC1zbS0xMSwgLmNvbC1zbS0xMiwgLmNvbC1zbSwgLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLCAuY29sLW1kLWF1dG8sIC5jb2wtbGctMSwgLmNvbC1sZy0yLCAuY29sLWxnLTMsIC5jb2wtbGctNCwgLmNvbC1sZy01LCAuY29sLWxnLTYsIC5jb2wtbGctNywgLmNvbC1sZy04LCAuY29sLWxnLTksIC5jb2wtbGctMTAsIC5jb2wtbGctMTEsIC5jb2wtbGctMTIsIC5jb2wtbGcsIC5jb2wtbGctYXV0bywgLmNvbC14bC0xLCAuY29sLXhsLTIsIC5jb2wteGwtMywgLmNvbC14bC00LCAuY29sLXhsLTUsIC5jb2wteGwtNiwgLmNvbC14bC03LCAuY29sLXhsLTgsIC5jb2wteGwtOSwgLmNvbC14bC0xMCwgLmNvbC14bC0xMSwgLmNvbC14bC0xMiwgLmNvbC14bCwgLmNvbC14bC1hdXRvIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXdpZHRoOiAxMDAlOwoJbWluLWhlaWdodDogMXB4OwoJcGFkZGluZy1yaWdodDogMTVweDsKCXBhZGRpbmctbGVmdDogMTVweDsKfQoKLmNvbCB7CgktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCWZsZXgtYmFzaXM6IDA7CgktbXMtZmxleC1wb3NpdGl2ZTogMTsKCWZsZXgtZ3JvdzogMTsKCW1heC13aWR0aDogMTAwJTsKfQoKLmNvbC1hdXRvIHsKCS1tcy1mbGV4OiAwIDAgYXV0bzsKCWZsZXg6IDAgMCBhdXRvOwoJd2lkdGg6IGF1dG87CgltYXgtd2lkdGg6IG5vbmU7Cn0KCi5jb2wtMSB7CgktbXMtZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CglmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCW1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKfQoKLmNvbC0yIHsKCS1tcy1mbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwp9CgouY29sLTMgewoJLW1zLWZsZXg6IDAgMCAyNSU7CglmbGV4OiAwIDAgMjUlOwoJbWF4LXdpZHRoOiAyNSU7Cn0KCi5jb2wtNCB7CgktbXMtZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKfQoKLmNvbC01IHsKCS1tcy1mbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwp9CgouY29sLTYgewoJLW1zLWZsZXg6IDAgMCA1MCU7CglmbGV4OiAwIDAgNTAlOwoJbWF4LXdpZHRoOiA1MCU7Cn0KCi5jb2wtNyB7CgktbXMtZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKfQoKLmNvbC04IHsKCS1tcy1mbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwp9CgouY29sLTkgewoJLW1zLWZsZXg6IDAgMCA3NSU7CglmbGV4OiAwIDAgNzUlOwoJbWF4LXdpZHRoOiA3NSU7Cn0KCi5jb2wtMTAgewoJLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCW1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7Cn0KCi5jb2wtMTEgewoJLW1zLWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCW1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7Cn0KCi5jb2wtMTIgewoJLW1zLWZsZXg6IDAgMCAxMDAlOwoJZmxleDogMCAwIDEwMCU7CgltYXgtd2lkdGg6IDEwMCU7Cn0KCi5vcmRlci1maXJzdCB7CgktbXMtZmxleC1vcmRlcjogLTE7CglvcmRlcjogLTE7Cn0KCi5vcmRlci1sYXN0IHsKCS1tcy1mbGV4LW9yZGVyOiAxMzsKCW9yZGVyOiAxMzsKfQoKLm9yZGVyLTAgewoJLW1zLWZsZXgtb3JkZXI6IDA7CglvcmRlcjogMDsKfQoKLm9yZGVyLTEgewoJLW1zLWZsZXgtb3JkZXI6IDE7CglvcmRlcjogMTsKfQoKLm9yZGVyLTIgewoJLW1zLWZsZXgtb3JkZXI6IDI7CglvcmRlcjogMjsKfQoKLm9yZGVyLTMgewoJLW1zLWZsZXgtb3JkZXI6IDM7CglvcmRlcjogMzsKfQoKLm9yZGVyLTQgewoJLW1zLWZsZXgtb3JkZXI6IDQ7CglvcmRlcjogNDsKfQoKLm9yZGVyLTUgewoJLW1zLWZsZXgtb3JkZXI6IDU7CglvcmRlcjogNTsKfQoKLm9yZGVyLTYgewoJLW1zLWZsZXgtb3JkZXI6IDY7CglvcmRlcjogNjsKfQoKLm9yZGVyLTcgewoJLW1zLWZsZXgtb3JkZXI6IDc7CglvcmRlcjogNzsKfQoKLm9yZGVyLTggewoJLW1zLWZsZXgtb3JkZXI6IDg7CglvcmRlcjogODsKfQoKLm9yZGVyLTkgewoJLW1zLWZsZXgtb3JkZXI6IDk7CglvcmRlcjogOTsKfQoKLm9yZGVyLTEwIHsKCS1tcy1mbGV4LW9yZGVyOiAxMDsKCW9yZGVyOiAxMDsKfQoKLm9yZGVyLTExIHsKCS1tcy1mbGV4LW9yZGVyOiAxMTsKCW9yZGVyOiAxMTsKfQoKLm9yZGVyLTEyIHsKCS1tcy1mbGV4LW9yZGVyOiAxMjsKCW9yZGVyOiAxMjsKfQoKLm9mZnNldC0xIHsKCW1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwp9Cgoub2Zmc2V0LTIgewoJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwp9Cgoub2Zmc2V0LTMgewoJbWFyZ2luLWxlZnQ6IDI1JTsKfQoKLm9mZnNldC00IHsKCW1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKfQoKLm9mZnNldC01IHsKCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKfQoKLm9mZnNldC02IHsKCW1hcmdpbi1sZWZ0OiA1MCU7Cn0KCi5vZmZzZXQtNyB7CgltYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cn0KCi5vZmZzZXQtOCB7CgltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cn0KCi5vZmZzZXQtOSB7CgltYXJnaW4tbGVmdDogNzUlOwp9Cgoub2Zmc2V0LTEwIHsKCW1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKfQoKLm9mZnNldC0xMSB7CgltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewoJLmNvbC1zbSB7CgkJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7CgkJZmxleC1iYXNpczogMDsKCQktbXMtZmxleC1wb3NpdGl2ZTogMTsKCQlmbGV4LWdyb3c6IDE7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkuY29sLXNtLWF1dG8gewoJCS1tcy1mbGV4OiAwIDAgYXV0bzsKCQlmbGV4OiAwIDAgYXV0bzsKCQl3aWR0aDogYXV0bzsKCQltYXgtd2lkdGg6IG5vbmU7Cgl9CgkKCS5jb2wtc20tMSB7CgkJLW1zLWZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS0yIHsKCQktbXMtZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTMgewoJCS1tcy1mbGV4OiAwIDAgMjUlOwoJCWZsZXg6IDAgMCAyNSU7CgkJbWF4LXdpZHRoOiAyNSU7Cgl9CgkKCS5jb2wtc20tNCB7CgkJLW1zLWZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS01IHsKCQktbXMtZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTYgewoJCS1tcy1mbGV4OiAwIDAgNTAlOwoJCWZsZXg6IDAgMCA1MCU7CgkJbWF4LXdpZHRoOiA1MCU7Cgl9CgkKCS5jb2wtc20tNyB7CgkJLW1zLWZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS04IHsKCQktbXMtZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTkgewoJCS1tcy1mbGV4OiAwIDAgNzUlOwoJCWZsZXg6IDAgMCA3NSU7CgkJbWF4LXdpZHRoOiA3NSU7Cgl9CgkKCS5jb2wtc20tMTAgewoJCS1tcy1mbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtc20tMTEgewoJCS1tcy1mbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtc20tMTIgewoJCS1tcy1mbGV4OiAwIDAgMTAwJTsKCQlmbGV4OiAwIDAgMTAwJTsKCQltYXgtd2lkdGg6IDEwMCU7Cgl9CgkKCS5vcmRlci1zbS1maXJzdCB7CgkJLW1zLWZsZXgtb3JkZXI6IC0xOwoJCW9yZGVyOiAtMTsKCX0KCQoJLm9yZGVyLXNtLWxhc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAxMzsKCQlvcmRlcjogMTM7Cgl9CgkKCS5vcmRlci1zbS0wIHsKCQktbXMtZmxleC1vcmRlcjogMDsKCQlvcmRlcjogMDsKCX0KCQoJLm9yZGVyLXNtLTEgewoJCS1tcy1mbGV4LW9yZGVyOiAxOwoJCW9yZGVyOiAxOwoJfQoJCgkub3JkZXItc20tMiB7CgkJLW1zLWZsZXgtb3JkZXI6IDI7CgkJb3JkZXI6IDI7Cgl9CgkKCS5vcmRlci1zbS0zIHsKCQktbXMtZmxleC1vcmRlcjogMzsKCQlvcmRlcjogMzsKCX0KCQoJLm9yZGVyLXNtLTQgewoJCS1tcy1mbGV4LW9yZGVyOiA0OwoJCW9yZGVyOiA0OwoJfQoJCgkub3JkZXItc20tNSB7CgkJLW1zLWZsZXgtb3JkZXI6IDU7CgkJb3JkZXI6IDU7Cgl9CgkKCS5vcmRlci1zbS02IHsKCQktbXMtZmxleC1vcmRlcjogNjsKCQlvcmRlcjogNjsKCX0KCQoJLm9yZGVyLXNtLTcgewoJCS1tcy1mbGV4LW9yZGVyOiA3OwoJCW9yZGVyOiA3OwoJfQoJCgkub3JkZXItc20tOCB7CgkJLW1zLWZsZXgtb3JkZXI6IDg7CgkJb3JkZXI6IDg7Cgl9CgkKCS5vcmRlci1zbS05IHsKCQktbXMtZmxleC1vcmRlcjogOTsKCQlvcmRlcjogOTsKCX0KCQoJLm9yZGVyLXNtLTEwIHsKCQktbXMtZmxleC1vcmRlcjogMTA7CgkJb3JkZXI6IDEwOwoJfQoJCgkub3JkZXItc20tMTEgewoJCS1tcy1mbGV4LW9yZGVyOiAxMTsKCQlvcmRlcjogMTE7Cgl9CgkKCS5vcmRlci1zbS0xMiB7CgkJLW1zLWZsZXgtb3JkZXI6IDEyOwoJCW9yZGVyOiAxMjsKCX0KCQoJLm9mZnNldC1zbS0wIHsKCQltYXJnaW4tbGVmdDogMDsKCX0KCQoJLm9mZnNldC1zbS0xIHsKCQltYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1zbS0yIHsKCQltYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtc20tMyB7CgkJbWFyZ2luLWxlZnQ6IDI1JTsKCX0KCQoJLm9mZnNldC1zbS00IHsKCQltYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtc20tNSB7CgkJbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LXNtLTYgewoJCW1hcmdpbi1sZWZ0OiA1MCU7Cgl9CgkKCS5vZmZzZXQtc20tNyB7CgkJbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXNtLTggewoJCW1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1zbS05IHsKCQltYXJnaW4tbGVmdDogNzUlOwoJfQoJCgkub2Zmc2V0LXNtLTEwIHsKCQltYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtc20tMTEgewoJCW1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkuY29sLW1kIHsKCQktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCQlmbGV4LWJhc2lzOiAwOwoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxOwoJCWZsZXgtZ3JvdzogMTsKCQltYXgtd2lkdGg6IDEwMCU7Cgl9CgkKCS5jb2wtbWQtYXV0byB7CgkJLW1zLWZsZXg6IDAgMCBhdXRvOwoJCWZsZXg6IDAgMCBhdXRvOwoJCXdpZHRoOiBhdXRvOwoJCW1heC13aWR0aDogbm9uZTsKCX0KCQoJLmNvbC1tZC0xIHsKCQktbXMtZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA4LjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTIgewoJCS1tcy1mbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogMTYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtMyB7CgkJLW1zLWZsZXg6IDAgMCAyNSU7CgkJZmxleDogMCAwIDI1JTsKCQltYXgtd2lkdGg6IDI1JTsKCX0KCQoJLmNvbC1tZC00IHsKCQktbXMtZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTUgewoJCS1tcy1mbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogNDEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtNiB7CgkJLW1zLWZsZXg6IDAgMCA1MCU7CgkJZmxleDogMCAwIDUwJTsKCQltYXgtd2lkdGg6IDUwJTsKCX0KCQoJLmNvbC1tZC03IHsKCQktbXMtZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDU4LjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTggewoJCS1tcy1mbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtOSB7CgkJLW1zLWZsZXg6IDAgMCA3NSU7CgkJZmxleDogMCAwIDc1JTsKCQltYXgtd2lkdGg6IDc1JTsKCX0KCQoJLmNvbC1tZC0xMCB7CgkJLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA4My4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1tZC0xMSB7CgkJLW1zLWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA5MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1tZC0xMiB7CgkJLW1zLWZsZXg6IDAgMCAxMDAlOwoJCWZsZXg6IDAgMCAxMDAlOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLm9yZGVyLW1kLWZpcnN0IHsKCQktbXMtZmxleC1vcmRlcjogLTE7CgkJb3JkZXI6IC0xOwoJfQoJCgkub3JkZXItbWQtbGFzdCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEzOwoJCW9yZGVyOiAxMzsKCX0KCQoJLm9yZGVyLW1kLTAgewoJCS1tcy1mbGV4LW9yZGVyOiAwOwoJCW9yZGVyOiAwOwoJfQoJCgkub3JkZXItbWQtMSB7CgkJLW1zLWZsZXgtb3JkZXI6IDE7CgkJb3JkZXI6IDE7Cgl9CgkKCS5vcmRlci1tZC0yIHsKCQktbXMtZmxleC1vcmRlcjogMjsKCQlvcmRlcjogMjsKCX0KCQoJLm9yZGVyLW1kLTMgewoJCS1tcy1mbGV4LW9yZGVyOiAzOwoJCW9yZGVyOiAzOwoJfQoJCgkub3JkZXItbWQtNCB7CgkJLW1zLWZsZXgtb3JkZXI6IDQ7CgkJb3JkZXI6IDQ7Cgl9CgkKCS5vcmRlci1tZC01IHsKCQktbXMtZmxleC1vcmRlcjogNTsKCQlvcmRlcjogNTsKCX0KCQoJLm9yZGVyLW1kLTYgewoJCS1tcy1mbGV4LW9yZGVyOiA2OwoJCW9yZGVyOiA2OwoJfQoJCgkub3JkZXItbWQtNyB7CgkJLW1zLWZsZXgtb3JkZXI6IDc7CgkJb3JkZXI6IDc7Cgl9CgkKCS5vcmRlci1tZC04IHsKCQktbXMtZmxleC1vcmRlcjogODsKCQlvcmRlcjogODsKCX0KCQoJLm9yZGVyLW1kLTkgewoJCS1tcy1mbGV4LW9yZGVyOiA5OwoJCW9yZGVyOiA5OwoJfQoJCgkub3JkZXItbWQtMTAgewoJCS1tcy1mbGV4LW9yZGVyOiAxMDsKCQlvcmRlcjogMTA7Cgl9CgkKCS5vcmRlci1tZC0xMSB7CgkJLW1zLWZsZXgtb3JkZXI6IDExOwoJCW9yZGVyOiAxMTsKCX0KCQoJLm9yZGVyLW1kLTEyIHsKCQktbXMtZmxleC1vcmRlcjogMTI7CgkJb3JkZXI6IDEyOwoJfQoJCgkub2Zmc2V0LW1kLTAgewoJCW1hcmdpbi1sZWZ0OiAwOwoJfQoJCgkub2Zmc2V0LW1kLTEgewoJCW1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LW1kLTIgewoJCW1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1tZC0zIHsKCQltYXJnaW4tbGVmdDogMjUlOwoJfQoJCgkub2Zmc2V0LW1kLTQgewoJCW1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1tZC01IHsKCQltYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtbWQtNiB7CgkJbWFyZ2luLWxlZnQ6IDUwJTsKCX0KCQoJLm9mZnNldC1tZC03IHsKCQltYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtbWQtOCB7CgkJbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LW1kLTkgewoJCW1hcmdpbi1sZWZ0OiA3NSU7Cgl9CgkKCS5vZmZzZXQtbWQtMTAgewoJCW1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1tZC0xMSB7CgkJbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclOwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKCS5jb2wtbGcgewoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwoJCWZsZXgtYmFzaXM6IDA7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDE7CgkJZmxleC1ncm93OiAxOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLmNvbC1sZy1hdXRvIHsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJd2lkdGg6IGF1dG87CgkJbWF4LXdpZHRoOiBub25lOwoJfQoJCgkuY29sLWxnLTEgewoJCS1tcy1mbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctMiB7CgkJLW1zLWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy0zIHsKCQktbXMtZmxleDogMCAwIDI1JTsKCQlmbGV4OiAwIDAgMjUlOwoJCW1heC13aWR0aDogMjUlOwoJfQoJCgkuY29sLWxnLTQgewoJCS1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctNSB7CgkJLW1zLWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy02IHsKCQktbXMtZmxleDogMCAwIDUwJTsKCQlmbGV4OiAwIDAgNTAlOwoJCW1heC13aWR0aDogNTAlOwoJfQoJCgkuY29sLWxnLTcgewoJCS1tcy1mbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctOCB7CgkJLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy05IHsKCQktbXMtZmxleDogMCAwIDc1JTsKCQlmbGV4OiAwIDAgNzUlOwoJCW1heC13aWR0aDogNzUlOwoJfQoJCgkuY29sLWxnLTEwIHsKCQktbXMtZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLWxnLTExIHsKCQktbXMtZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLWxnLTEyIHsKCQktbXMtZmxleDogMCAwIDEwMCU7CgkJZmxleDogMCAwIDEwMCU7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkub3JkZXItbGctZmlyc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAtMTsKCQlvcmRlcjogLTE7Cgl9CgkKCS5vcmRlci1sZy1sYXN0IHsKCQktbXMtZmxleC1vcmRlcjogMTM7CgkJb3JkZXI6IDEzOwoJfQoJCgkub3JkZXItbGctMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDA7CgkJb3JkZXI6IDA7Cgl9CgkKCS5vcmRlci1sZy0xIHsKCQktbXMtZmxleC1vcmRlcjogMTsKCQlvcmRlcjogMTsKCX0KCQoJLm9yZGVyLWxnLTIgewoJCS1tcy1mbGV4LW9yZGVyOiAyOwoJCW9yZGVyOiAyOwoJfQoJCgkub3JkZXItbGctMyB7CgkJLW1zLWZsZXgtb3JkZXI6IDM7CgkJb3JkZXI6IDM7Cgl9CgkKCS5vcmRlci1sZy00IHsKCQktbXMtZmxleC1vcmRlcjogNDsKCQlvcmRlcjogNDsKCX0KCQoJLm9yZGVyLWxnLTUgewoJCS1tcy1mbGV4LW9yZGVyOiA1OwoJCW9yZGVyOiA1OwoJfQoJCgkub3JkZXItbGctNiB7CgkJLW1zLWZsZXgtb3JkZXI6IDY7CgkJb3JkZXI6IDY7Cgl9CgkKCS5vcmRlci1sZy03IHsKCQktbXMtZmxleC1vcmRlcjogNzsKCQlvcmRlcjogNzsKCX0KCQoJLm9yZGVyLWxnLTggewoJCS1tcy1mbGV4LW9yZGVyOiA4OwoJCW9yZGVyOiA4OwoJfQoJCgkub3JkZXItbGctOSB7CgkJLW1zLWZsZXgtb3JkZXI6IDk7CgkJb3JkZXI6IDk7Cgl9CgkKCS5vcmRlci1sZy0xMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEwOwoJCW9yZGVyOiAxMDsKCX0KCQoJLm9yZGVyLWxnLTExIHsKCQktbXMtZmxleC1vcmRlcjogMTE7CgkJb3JkZXI6IDExOwoJfQoJCgkub3JkZXItbGctMTIgewoJCS1tcy1mbGV4LW9yZGVyOiAxMjsKCQlvcmRlcjogMTI7Cgl9CgkKCS5vZmZzZXQtbGctMCB7CgkJbWFyZ2luLWxlZnQ6IDA7Cgl9CgkKCS5vZmZzZXQtbGctMSB7CgkJbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtbGctMiB7CgkJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LWxnLTMgewoJCW1hcmdpbi1sZWZ0OiAyNSU7Cgl9CgkKCS5vZmZzZXQtbGctNCB7CgkJbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LWxnLTUgewoJCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1sZy02IHsKCQltYXJnaW4tbGVmdDogNTAlOwoJfQoJCgkub2Zmc2V0LWxnLTcgewoJCW1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1sZy04IHsKCQltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtbGctOSB7CgkJbWFyZ2luLWxlZnQ6IDc1JTsKCX0KCQoJLm9mZnNldC1sZy0xMCB7CgkJbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LWxnLTExIHsKCQltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKCS5jb2wteGwgewoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwoJCWZsZXgtYmFzaXM6IDA7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDE7CgkJZmxleC1ncm93OiAxOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLmNvbC14bC1hdXRvIHsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJd2lkdGg6IGF1dG87CgkJbWF4LXdpZHRoOiBub25lOwoJfQoJCgkuY29sLXhsLTEgewoJCS1tcy1mbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtMiB7CgkJLW1zLWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC0zIHsKCQktbXMtZmxleDogMCAwIDI1JTsKCQlmbGV4OiAwIDAgMjUlOwoJCW1heC13aWR0aDogMjUlOwoJfQoJCgkuY29sLXhsLTQgewoJCS1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtNSB7CgkJLW1zLWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC02IHsKCQktbXMtZmxleDogMCAwIDUwJTsKCQlmbGV4OiAwIDAgNTAlOwoJCW1heC13aWR0aDogNTAlOwoJfQoJCgkuY29sLXhsLTcgewoJCS1tcy1mbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtOCB7CgkJLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC05IHsKCQktbXMtZmxleDogMCAwIDc1JTsKCQlmbGV4OiAwIDAgNzUlOwoJCW1heC13aWR0aDogNzUlOwoJfQoJCgkuY29sLXhsLTEwIHsKCQktbXMtZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLXhsLTExIHsKCQktbXMtZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXhsLTEyIHsKCQktbXMtZmxleDogMCAwIDEwMCU7CgkJZmxleDogMCAwIDEwMCU7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkub3JkZXIteGwtZmlyc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAtMTsKCQlvcmRlcjogLTE7Cgl9CgkKCS5vcmRlci14bC1sYXN0IHsKCQktbXMtZmxleC1vcmRlcjogMTM7CgkJb3JkZXI6IDEzOwoJfQoJCgkub3JkZXIteGwtMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDA7CgkJb3JkZXI6IDA7Cgl9CgkKCS5vcmRlci14bC0xIHsKCQktbXMtZmxleC1vcmRlcjogMTsKCQlvcmRlcjogMTsKCX0KCQoJLm9yZGVyLXhsLTIgewoJCS1tcy1mbGV4LW9yZGVyOiAyOwoJCW9yZGVyOiAyOwoJfQoJCgkub3JkZXIteGwtMyB7CgkJLW1zLWZsZXgtb3JkZXI6IDM7CgkJb3JkZXI6IDM7Cgl9CgkKCS5vcmRlci14bC00IHsKCQktbXMtZmxleC1vcmRlcjogNDsKCQlvcmRlcjogNDsKCX0KCQoJLm9yZGVyLXhsLTUgewoJCS1tcy1mbGV4LW9yZGVyOiA1OwoJCW9yZGVyOiA1OwoJfQoJCgkub3JkZXIteGwtNiB7CgkJLW1zLWZsZXgtb3JkZXI6IDY7CgkJb3JkZXI6IDY7Cgl9CgkKCS5vcmRlci14bC03IHsKCQktbXMtZmxleC1vcmRlcjogNzsKCQlvcmRlcjogNzsKCX0KCQoJLm9yZGVyLXhsLTggewoJCS1tcy1mbGV4LW9yZGVyOiA4OwoJCW9yZGVyOiA4OwoJfQoJCgkub3JkZXIteGwtOSB7CgkJLW1zLWZsZXgtb3JkZXI6IDk7CgkJb3JkZXI6IDk7Cgl9CgkKCS5vcmRlci14bC0xMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEwOwoJCW9yZGVyOiAxMDsKCX0KCQoJLm9yZGVyLXhsLTExIHsKCQktbXMtZmxleC1vcmRlcjogMTE7CgkJb3JkZXI6IDExOwoJfQoJCgkub3JkZXIteGwtMTIgewoJCS1tcy1mbGV4LW9yZGVyOiAxMjsKCQlvcmRlcjogMTI7Cgl9CgkKCS5vZmZzZXQteGwtMCB7CgkJbWFyZ2luLWxlZnQ6IDA7Cgl9CgkKCS5vZmZzZXQteGwtMSB7CgkJbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQteGwtMiB7CgkJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LXhsLTMgewoJCW1hcmdpbi1sZWZ0OiAyNSU7Cgl9CgkKCS5vZmZzZXQteGwtNCB7CgkJbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXhsLTUgewoJCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC14bC02IHsKCQltYXJnaW4tbGVmdDogNTAlOwoJfQoJCgkub2Zmc2V0LXhsLTcgewoJCW1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC14bC04IHsKCQltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQteGwtOSB7CgkJbWFyZ2luLWxlZnQ6IDc1JTsKCX0KCQoJLm9mZnNldC14bC0xMCB7CgkJbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXhsLTExIHsKCQltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cgl9Cn0KCi50YWJsZSB7Cgl3aWR0aDogMTAwJTsKCW1hcmdpbi1ib3R0b206IDFyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLnRhYmxlIHRoLCAudGFibGUgdGQgewoJcGFkZGluZzogLjc1cmVtOwoJdmVydGljYWwtYWxpZ246IHRvcDsKCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGhlYWQgdGggewoJdmVydGljYWwtYWxpZ246IGJvdHRvbTsKCWJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGJvZHkgKyB0Ym9keSB7Cglib3JkZXItdG9wOiAycHggc29saWQgI2RlZTJlNjsKfQoKLnRhYmxlIC50YWJsZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoudGFibGUtc20gdGgsIC50YWJsZS1zbSB0ZCB7CglwYWRkaW5nOiAuM3JlbTsKfQoKLnRhYmxlLWJvcmRlcmVkIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRkIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRkIHsKCWJvcmRlci1ib3R0b20td2lkdGg6IDJweDsKfQoKLnRhYmxlLWJvcmRlcmxlc3MgdGgsIC50YWJsZS1ib3JkZXJsZXNzIHRkLCAudGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmxlc3MgdGJvZHkgKyB0Ym9keSB7Cglib3JkZXI6IDA7Cn0KCi50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDUpOwp9CgoudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDc1KTsKfQoKLnRhYmxlLXByaW1hcnksIC50YWJsZS1wcmltYXJ5ID4gdGgsIC50YWJsZS1wcmltYXJ5ID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOWVjZGZmOwp9CgoudGFibGUtc2Vjb25kYXJ5LCAudGFibGUtc2Vjb25kYXJ5ID4gdGgsIC50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGRiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzhjY2NmOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KCi50YWJsZS1zdWNjZXNzLCAudGFibGUtc3VjY2VzcyA+IHRoLCAudGFibGUtc3VjY2VzcyA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1zdWNjZXNzOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLnRhYmxlLWluZm8sIC50YWJsZS1pbmZvID4gdGgsIC50YWJsZS1pbmZvID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9CgoudGFibGUtd2FybmluZywgLnRhYmxlLXdhcm5pbmcgPiB0aCwgLnRhYmxlLXdhcm5pbmcgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZWJhOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmU3YTA7Cn0KCi50YWJsZS1kYW5nZXIsIC50YWJsZS1kYW5nZXIgPiB0aCwgLnRhYmxlLWRhbmdlciA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNmMWIxYjc7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoKLnRhYmxlLWxpZ2h0LCAudGFibGUtbGlnaHQgPiB0aCwgLnRhYmxlLWxpZ2h0ID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoudGFibGUtZGFyaywgLnRhYmxlLWRhcmsgPiB0aCwgLnRhYmxlLWRhcmsgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzZjOGNhOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNiOWJiYmQ7Cn0KCi50YWJsZS1hY3RpdmUsIC50YWJsZS1hY3RpdmUgPiB0aCwgLnRhYmxlLWFjdGl2ZSA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA3NSk7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA3NSk7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDc1KTsKfQoKLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKCWJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoKLnRhYmxlIC50aGVhZC1saWdodCB0aCB7Cgljb2xvcjogIzQ5NTA1NzsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KCi50YWJsZS1kYXJrIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKfQoKLnRhYmxlLWRhcmsgdGgsIC50YWJsZS1kYXJrIHRkLCAudGFibGUtZGFyayB0aGVhZCB0aCB7Cglib3JkZXItY29sb3I6ICMzMjM4M2U7Cn0KCi50YWJsZS1kYXJrLnRhYmxlLWJvcmRlcmVkIHsKCWJvcmRlcjogMDsKfQoKLnRhYmxlLWRhcmsudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA1KTsKfQoKLnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDc1KTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7CgkudGFibGUtcmVzcG9uc2l2ZS1zbSB7CgkJZGlzcGxheTogYmxvY2s7CgkJd2lkdGg6IDEwMCU7CgkJb3ZlcmZsb3cteDogYXV0bzsKCQktd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CgkJLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7Cgl9CgkKCS50YWJsZS1yZXNwb25zaXZlLXNtID4gLnRhYmxlLWJvcmRlcmVkIHsKCQlib3JkZXI6IDA7Cgl9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewoJLnRhYmxlLXJlc3BvbnNpdmUtbWQgewoJCWRpc3BsYXk6IGJsb2NrOwoJCXdpZHRoOiAxMDAlOwoJCW92ZXJmbG93LXg6IGF1dG87CgkJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoJCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwoJfQoJCgkudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7CgkJYm9yZGVyOiAwOwoJfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKCS50YWJsZS1yZXNwb25zaXZlLWxnIHsKCQlkaXNwbGF5OiBibG9jazsKCQl3aWR0aDogMTAwJTsKCQlvdmVyZmxvdy14OiBhdXRvOwoJCS13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCQktbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKCX0KCQoJLnRhYmxlLXJlc3BvbnNpdmUtbGcgPiAudGFibGUtYm9yZGVyZWQgewoJCWJvcmRlcjogMDsKCX0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewoJLnRhYmxlLXJlc3BvbnNpdmUteGwgewoJCWRpc3BsYXk6IGJsb2NrOwoJCXdpZHRoOiAxMDAlOwoJCW92ZXJmbG93LXg6IGF1dG87CgkJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoJCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwoJfQoJCgkudGFibGUtcmVzcG9uc2l2ZS14bCA+IC50YWJsZS1ib3JkZXJlZCB7CgkJYm9yZGVyOiAwOwoJfQp9CgoudGFibGUtcmVzcG9uc2l2ZSB7CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxMDAlOwoJb3ZlcmZsb3cteDogYXV0bzsKCS13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwp9CgoudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7Cglib3JkZXI6IDA7Cn0KCi5mb3JtLWNvbnRyb2wgewoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJZm9udC1zaXplOiAxcmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCS13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKCWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Cglib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmZvcm0tY29udHJvbCB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmQgewoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXI6IDA7Cn0KCi5mb3JtLWNvbnRyb2w6Zm9jdXMgewoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyLWNvbG9yOiAjODBiZGZmOwoJb3V0bGluZTogMDsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIgewoJY29sb3I6ICM2Yzc1N2Q7CglvcGFjaXR5OiAxOwp9CgouZm9ybS1jb250cm9sOmRpc2FibGVkLCAuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwoJb3BhY2l0eTogMTsKfQoKc2VsZWN0LmZvcm0tY29udHJvbDpmb2N1czo6LW1zLXZhbHVlIHsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmZvcm0tY29udHJvbC1maWxlLCAuZm9ybS1jb250cm9sLXJhbmdlIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7Cn0KCi5jb2wtZm9ybS1sYWJlbCB7CglwYWRkaW5nLXRvcDogY2FsYyguMzc1cmVtICsgMXB4KTsKCXBhZGRpbmctYm90dG9tOiBjYWxjKC4zNzVyZW0gKyAxcHgpOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogaW5oZXJpdDsKCWxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5jb2wtZm9ybS1sYWJlbC1sZyB7CglwYWRkaW5nLXRvcDogY2FsYyguNXJlbSArIDFweCk7CglwYWRkaW5nLWJvdHRvbTogY2FsYyguNXJlbSArIDFweCk7Cglmb250LXNpemU6IDEuMjVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgouY29sLWZvcm0tbGFiZWwtc20gewoJcGFkZGluZy10b3A6IGNhbGMoLjI1cmVtICsgMXB4KTsKCXBhZGRpbmctYm90dG9tOiBjYWxjKC4yNXJlbSArIDFweCk7Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgouZm9ybS1jb250cm9sLXBsYWludGV4dCB7CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxMDAlOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCW1hcmdpbi1ib3R0b206IDA7CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItd2lkdGg6IDFweCAwOwp9CgouZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc20sIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZyB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwp9CgouZm9ybS1jb250cm9sLXNtIHsKCWhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjI1cmVtIC41cmVtOwoJZm9udC1zaXplOiAuODc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4ycmVtOwp9CgouZm9ybS1jb250cm9sLWxnIHsKCWhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgpzZWxlY3QuZm9ybS1jb250cm9sW3NpemVdLCBzZWxlY3QuZm9ybS1jb250cm9sW211bHRpcGxlXSB7CgloZWlnaHQ6IGF1dG87Cn0KCnRleHRhcmVhLmZvcm0tY29udHJvbCB7CgloZWlnaHQ6IGF1dG87Cn0KCi5mb3JtLWdyb3VwIHsKCW1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5mb3JtLXRleHQgewoJZGlzcGxheTogYmxvY2s7CgltYXJnaW4tdG9wOiAuMjVyZW07Cn0KCi5mb3JtLXJvdyB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJbWFyZ2luLXJpZ2h0OiAtNXB4OwoJbWFyZ2luLWxlZnQ6IC01cHg7Cn0KCi5mb3JtLXJvdyA+IC5jb2wsIC5mb3JtLXJvdyA+IFtjbGFzcyo9ImNvbC0iXSB7CglwYWRkaW5nLXJpZ2h0OiA1cHg7CglwYWRkaW5nLWxlZnQ6IDVweDsKfQoKLmZvcm0tY2hlY2sgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nLWxlZnQ6IDEuMjVyZW07Cn0KCi5mb3JtLWNoZWNrLWlucHV0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCW1hcmdpbi10b3A6IC4zcmVtOwoJbWFyZ2luLWxlZnQ6IC0xLjI1cmVtOwp9CgouZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKCWNvbG9yOiAjNmM3NTdkOwp9CgouZm9ybS1jaGVjay1sYWJlbCB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouZm9ybS1jaGVjay1pbmxpbmUgewoJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKCWRpc3BsYXk6IGlubGluZS1mbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CglwYWRkaW5nLWxlZnQ6IDA7CgltYXJnaW4tcmlnaHQ6IC43NXJlbTsKfQoKLmZvcm0tY2hlY2staW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKCXBvc2l0aW9uOiBzdGF0aWM7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLXJpZ2h0OiAuMzEyNXJlbTsKCW1hcmdpbi1sZWZ0OiAwOwp9CgoudmFsaWQtZmVlZGJhY2sgewoJZGlzcGxheTogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogLjI1cmVtOwoJZm9udC1zaXplOiA4MCU7Cgljb2xvcjogIzI4YTc0NTsKfQoKLnZhbGlkLXRvb2x0aXAgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAxMDAlOwoJei1pbmRleDogNTsKCWRpc3BsYXk6IG5vbmU7CgltYXgtd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07CgltYXJnaW4tdG9wOiAuMXJlbTsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCWxpbmUtaGVpZ2h0OiAxLjU7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoNDAsIDE2NywgNjksIC45KTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewoJY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNzFkZDhhOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMzNGNlNTc7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cglib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjI1KTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjI1KTsKfQoKLmludmFsaWQtZmVlZGJhY2sgewoJZGlzcGxheTogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogLjI1cmVtOwoJZm9udC1zaXplOiA4MCU7Cgljb2xvcjogI2RjMzU0NTsKfQoKLmludmFsaWQtdG9vbHRpcCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDEwMCU7Cgl6LWluZGV4OiA1OwoJZGlzcGxheTogbm9uZTsKCW1heC13aWR0aDogMTAwJTsKCXBhZGRpbmc6IC4yNXJlbSAuNXJlbTsKCW1hcmdpbi10b3A6IC4xcmVtOwoJZm9udC1zaXplOiAuODc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDUzLCA2OSwgLjkpOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQsIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCwgLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLWZpbGUuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKCWNvbG9yOiAjZGMzNTQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2VmYTJhOTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAuMjUpOwp9CgouZm9ybS1pbmxpbmUgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CglmbGV4LWZsb3c6IHJvdyB3cmFwOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7Cgl3aWR0aDogMTAwJTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuZm9ybS1pbmxpbmUgbGFiZWwgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCQlkaXNwbGF5OiBmbGV4OwoJCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CgkJYWxpZ24taXRlbXM6IGNlbnRlcjsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXI7CgkJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CgkJZmxleC1mbG93OiByb3cgd3JhcDsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCQl3aWR0aDogYXV0bzsKCQl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJfQoJCgkuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbC1wbGFpbnRleHQgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCX0KCQoJLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCwgLmZvcm0taW5saW5lIC5jdXN0b20tc2VsZWN0IHsKCQl3aWR0aDogYXV0bzsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgkJLW1zLWZsZXgtcGFjazogY2VudGVyOwoJCWp1c3RpZnktY29udGVudDogY2VudGVyOwoJCXdpZHRoOiBhdXRvOwoJCXBhZGRpbmctbGVmdDogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKCQlwb3NpdGlvbjogcmVsYXRpdmU7CgkJbWFyZ2luLXRvcDogMDsKCQltYXJnaW4tcmlnaHQ6IC4yNXJlbTsKCQltYXJnaW4tbGVmdDogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbCB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCQlhbGlnbi1pdGVtczogY2VudGVyOwoJCS1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCX0KCQoJLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbC1sYWJlbCB7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KfQoKLmJ0biB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cglmb250LXdlaWdodDogNDAwOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgktbXMtdXNlci1zZWxlY3Q6IG5vbmU7CgktbW96LXVzZXItc2VsZWN0OiBub25lOwoJLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKCXVzZXItc2VsZWN0OiBub25lOwoJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CglwYWRkaW5nOiAuMzc1cmVtIC43NXJlbTsKCWZvbnQtc2l6ZTogMXJlbTsKCWxpbmUtaGVpZ2h0OiAxLjU7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cgktd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKCXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmJ0biB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5idG46aG92ZXIsIC5idG46Zm9jdXMgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouYnRuOmZvY3VzLCAuYnRuLmZvY3VzIHsKCW91dGxpbmU6IDA7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouYnRuLmRpc2FibGVkLCAuYnRuOmRpc2FibGVkIHsKCW9wYWNpdHk6IC42NTsKfQoKLmJ0bjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCmEuYnRuLmRpc2FibGVkLCBmaWVsZHNldDpkaXNhYmxlZCBhLmJ0biB7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmJ0bi1wcmltYXJ5IHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKCWJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQoKLmJ0bi1wcmltYXJ5OmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwNjlkOTsKCWJvcmRlci1jb2xvcjogIzAwNjJjYzsKfQoKLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouYnRuLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cglib3JkZXItY29sb3I6ICMwMDVjYmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5IHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1zZWNvbmRhcnk6aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNWE2MjY4OwoJYm9yZGVyLWNvbG9yOiAjNTQ1YjYyOwp9CgouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7Cglib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7Cglib3JkZXItY29sb3I6ICM0ZTU1NWI7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIC41KTsKfQoKLmJ0bi1zdWNjZXNzIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLmJ0bi1zdWNjZXNzOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODsKCWJvcmRlci1jb2xvcjogIzFlN2UzNDsKfQoKLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjUpOwp9CgouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tc3VjY2VzczpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cglib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7Cglib3JkZXItY29sb3I6ICMxYzc0MzA7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAuNSk7Cn0KCi5idG4taW5mbyB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cglib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4taW5mbzpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxMzg0OTY7Cglib3JkZXItY29sb3I6ICMxMTdhOGI7Cn0KCi5idG4taW5mbzpmb2N1cywgLmJ0bi1pbmZvLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAuNSk7Cn0KCi5idG4taW5mby5kaXNhYmxlZCwgLmJ0bi1pbmZvOmRpc2FibGVkIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKCWJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YjsKCWJvcmRlci1jb2xvcjogIzEwNzA3ZjsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAuNSk7Cn0KCi5idG4td2FybmluZyB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7Cglib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KCi5idG4td2FybmluZzpob3ZlciB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNlMGE4MDA7Cglib3JkZXItY29sb3I6ICNkMzllMDA7Cn0KCi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIC41KTsKfQoKLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwoJYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwoJYm9yZGVyLWNvbG9yOiAjYzY5NTAwOwp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgLjUpOwp9CgouYnRuLWRhbmdlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tZGFuZ2VyOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2M4MjMzMzsKCWJvcmRlci1jb2xvcjogI2JkMjEzMDsKfQoKLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC41KTsKfQoKLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKCWJvcmRlci1jb2xvcjogI2IyMWYyZDsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC41KTsKfQoKLmJ0bi1saWdodCB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cglib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tbGlnaHQ6aG92ZXIgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTJlNmVhOwoJYm9yZGVyLWNvbG9yOiAjZGFlMGU1Owp9CgouYnRuLWxpZ2h0OmZvY3VzLCAuYnRuLWxpZ2h0LmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgLjUpOwp9CgouYnRuLWxpZ2h0LmRpc2FibGVkLCAuYnRuLWxpZ2h0OmRpc2FibGVkIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNTsKCWJvcmRlci1jb2xvcjogI2QzZDlkZjsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgLjUpOwp9CgouYnRuLWRhcmsgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwoJYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiOwoJYm9yZGVyLWNvbG9yOiAjMWQyMTI0Owp9CgouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIC41KTsKfQoKLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwoJYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0OwoJYm9yZGVyLWNvbG9yOiAjMTcxYTFkOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5IHsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5OmZvY3VzLCAuYnRuLW91dGxpbmUtcHJpbWFyeS5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCB7Cgljb2xvcjogIzAwN2JmZjsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHsKCWNvbG9yOiAjNmM3NTdkOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwoJYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzIHsKCWNvbG9yOiAjMjhhNzQ1OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cglib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLCAuYnRuLW91dGxpbmUtc3VjY2Vzcy5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCB7Cgljb2xvcjogIzI4YTc0NTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjUpOwp9CgouYnRuLW91dGxpbmUtaW5mbyB7Cgljb2xvcjogIzE3YTJiODsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1vdXRsaW5lLWluZm86aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwoJYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9CgouYnRuLW91dGxpbmUtaW5mbzpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQsIC5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIHsKCWNvbG9yOiAjMTdhMmI4OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cglib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZyB7Cgljb2xvcjogI2ZmYzEwNzsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwoJYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQgewoJY29sb3I6ICNmZmMxMDc7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlciB7Cgljb2xvcjogI2RjMzU0NTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6Zm9jdXMsIC5idG4tb3V0bGluZS1kYW5nZXIuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgLjUpOwp9CgouYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkIHsKCWNvbG9yOiAjZGMzNTQ1OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodCB7Cgljb2xvcjogI2Y4ZjlmYTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVyIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHQuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWxpZ2h0OmRpc2FibGVkIHsKCWNvbG9yOiAjZjhmOWZhOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cglib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDI0OCwgMjQ5LCAyNTAsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhcmsgewoJY29sb3I6ICMzNDNhNDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cglib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KCi5idG4tb3V0bGluZS1kYXJrOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKCWJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6Zm9jdXMsIC5idG4tb3V0bGluZS1kYXJrLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgLjUpOwp9CgouYnRuLW91dGxpbmUtZGFyay5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhcms6ZGlzYWJsZWQgewoJY29sb3I6ICMzNDNhNDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKCWJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgLjUpOwp9CgouYnRuLWxpbmsgewoJZm9udC13ZWlnaHQ6IDQwMDsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tbGluazpob3ZlciB7Cgljb2xvcjogIzAwNTZiMzsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLWxpbms6Zm9jdXMsIC5idG4tbGluay5mb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3gtc2hhZG93OiBub25lOwp9CgouYnRuLWxpbms6ZGlzYWJsZWQsIC5idG4tbGluay5kaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCi5idG4tYmxvY2sgewoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKfQoKLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewoJbWFyZ2luLXRvcDogLjVyZW07Cn0KCmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywgaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssIGlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7Cgl3aWR0aDogMTAwJTsKfQoKLmZhZGUgewoJLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMgbGluZWFyOwoJdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzIGxpbmVhcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmZhZGUgewoJCS13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKCQl0cmFuc2l0aW9uOiBub25lOwoJfQp9CgouZmFkZTpub3QoLnNob3cpIHsKCW9wYWNpdHk6IDA7Cn0KCi5jb2xsYXBzZTpub3QoLnNob3cpIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5jb2xsYXBzaW5nIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWhlaWdodDogMDsKCW92ZXJmbG93OiBoaWRkZW47Cgktd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAuMzVzIGVhc2U7Cgl0cmFuc2l0aW9uOiBoZWlnaHQgLjM1cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY29sbGFwc2luZyB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5kcm9wdXAsIC5kcm9wcmlnaHQsIC5kcm9wZG93biwgLmRyb3BsZWZ0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogLjNlbSBzb2xpZDsKCWJvcmRlci1yaWdodDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b206IDA7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgewoJbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMTAwJTsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxMDAwOwoJZGlzcGxheTogbm9uZTsKCWZsb2F0OiBsZWZ0OwoJbWluLXdpZHRoOiAxMHJlbTsKCXBhZGRpbmc6IC41cmVtIDA7CgltYXJnaW46IC4xMjVyZW0gMCAwOwoJZm9udC1zaXplOiAxcmVtOwoJY29sb3I6ICMyMTI1Mjk7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJbGlzdC1zdHlsZTogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTUpOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgouZHJvcGRvd24tbWVudS1yaWdodCB7CglyaWdodDogMDsKCWxlZnQ6IGF1dG87Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLW1lbnUgewoJdG9wOiBhdXRvOwoJYm90dG9tOiAxMDAlOwoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IC4xMjVyZW07Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogMDsKCWJvcmRlci1yaWdodDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b206IC4zZW0gc29saWQ7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tbWVudSB7Cgl0b3A6IDA7CglyaWdodDogYXV0bzsKCWxlZnQ6IDEwMCU7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLWxlZnQ6IC4xMjVyZW07Cn0KCi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1yaWdodDogMDsKCWJvcmRlci1ib3R0b206IC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7Cgl2ZXJ0aWNhbC1hbGlnbjogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi1tZW51IHsKCXRvcDogMDsKCXJpZ2h0OiAxMDAlOwoJbGVmdDogYXV0bzsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tcmlnaHQ6IC4xMjVyZW07Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMDsKCWhlaWdodDogMDsKCW1hcmdpbi1sZWZ0OiAuMjU1ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogLjI1NWVtOwoJY29udGVudDogIiI7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CglkaXNwbGF5OiBub25lOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAwOwoJaGVpZ2h0OiAwOwoJbWFyZ2luLXJpZ2h0OiAuMjU1ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogLjI1NWVtOwoJY29udGVudDogIiI7Cglib3JkZXItdG9wOiAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJpZ2h0OiAuM2VtIHNvbGlkOwoJYm9yZGVyLWJvdHRvbTogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKCW1hcmdpbi1sZWZ0OiAwOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKCXZlcnRpY2FsLWFsaWduOiAwOwp9CgouZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InRvcCJdLCAuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InJpZ2h0Il0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0iYm90dG9tIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCXJpZ2h0OiBhdXRvOwoJYm90dG9tOiBhdXRvOwp9CgouZHJvcGRvd24tZGl2aWRlciB7CgloZWlnaHQ6IDA7CgltYXJnaW46IC41cmVtIDA7CglvdmVyZmxvdzogaGlkZGVuOwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOWVjZWY7Cn0KCi5kcm9wZG93bi1pdGVtIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAuMjVyZW0gMS41cmVtOwoJY2xlYXI6IGJvdGg7Cglmb250LXdlaWdodDogNDAwOwoJY29sb3I6ICMyMTI1Mjk7Cgl0ZXh0LWFsaWduOiBpbmhlcml0OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYm9yZGVyOiAwOwp9CgouZHJvcGRvd24taXRlbTpob3ZlciwgLmRyb3Bkb3duLWl0ZW06Zm9jdXMgewoJY29sb3I6ICMxNjE4MWI7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouZHJvcGRvd24taXRlbS5hY3RpdmUsIC5kcm9wZG93bi1pdGVtOmFjdGl2ZSB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5kcm9wZG93bi1pdGVtLmRpc2FibGVkLCAuZHJvcGRvd24taXRlbTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouZHJvcGRvd24tbWVudS5zaG93IHsKCWRpc3BsYXk6IGJsb2NrOwp9CgouZHJvcGRvd24taGVhZGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjVyZW0gMS41cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCWNvbG9yOiAjNmM3NTdkOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmRyb3Bkb3duLWl0ZW0tdGV4dCB7CglkaXNwbGF5OiBibG9jazsKCXBhZGRpbmc6IC4yNXJlbSAxLjVyZW07Cgljb2xvcjogIzIxMjUyOTsKfQoKLmJ0bi1ncm91cCwgLmJ0bi1ncm91cC12ZXJ0aWNhbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4OwoJZGlzcGxheTogaW5saW5lLWZsZXg7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgouYnRuLWdyb3VwID4gLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDAgMSBhdXRvOwoJZmxleDogMCAxIGF1dG87Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciB7Cgl6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsIC5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7Cgl6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouYnRuLXRvb2xiYXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CgouYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHsKCXdpZHRoOiBhdXRvOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5kcm9wZG93bi10b2dnbGUtc3BsaXQgewoJcGFkZGluZy1yaWdodDogLjU2MjVyZW07CglwYWRkaW5nLWxlZnQ6IC41NjI1cmVtOwp9CgouZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwgLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwgLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmJlZm9yZSB7CgltYXJnaW4tcmlnaHQ6IDA7Cn0KCi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLXNtID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQgewoJcGFkZGluZy1yaWdodDogLjM3NXJlbTsKCXBhZGRpbmctbGVmdDogLjM3NXJlbTsKfQoKLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtbGcgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CglwYWRkaW5nLXJpZ2h0OiAuNzVyZW07CglwYWRkaW5nLWxlZnQ6IC43NXJlbTsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgktbXMtZmxleC1hbGlnbjogc3RhcnQ7CglhbGlnbi1pdGVtczogZmxleC1zdGFydDsKCS1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4sIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCB7Cgl3aWR0aDogMTAwJTsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKCW1hcmdpbi10b3A6IC0xcHg7CgltYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmlucHV0LWdyb3VwIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LXdyYXA6IHdyYXA7CglmbGV4LXdyYXA6IHdyYXA7CgktbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKCWFsaWduLWl0ZW1zOiBzdHJldGNoOwoJd2lkdGg6IDEwMCU7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87Cgl3aWR0aDogMSU7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0ICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1maWxlLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tZmlsZSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1maWxlIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOmZvY3VzLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpmb2N1cywgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cgl6LWluZGV4OiAzOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHsKCXotaW5kZXg6IDQ7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpsYXN0LWNoaWxkKSB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQsIC5pbnB1dC1ncm91cC1hcHBlbmQgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4Owp9CgouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biB7CgltYXJnaW4tbGVmdDogLTFweDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgewoJbWFyZ2luLXJpZ2h0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAtYXBwZW5kIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAtdGV4dCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJYWxpZ24taXRlbXM6IGNlbnRlcjsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogMXJlbTsKCWZvbnQtd2VpZ2h0OiA0MDA7CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICM0OTUwNTc7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9InJhZGlvIl0sIC5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewoJbWFyZ2luLXRvcDogMDsKfQoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKCWhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgouaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4gewoJaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCkgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5jdXN0b20tY29udHJvbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiBibG9jazsKCW1pbi1oZWlnaHQ6IDEuNXJlbTsKCXBhZGRpbmctbGVmdDogMS41cmVtOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5saW5lIHsKCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CglkaXNwbGF5OiBpbmxpbmUtZmxleDsKCW1hcmdpbi1yaWdodDogMXJlbTsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IC0xOwoJb3BhY2l0eTogMDsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6YWN0aXZlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICM2Yzc1N2Q7Cn0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tY29udHJvbC1sYWJlbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC4yNXJlbTsKCWxlZnQ6IC0xLjVyZW07CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxcmVtOwoJaGVpZ2h0OiAxcmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cgljb250ZW50OiAiIjsKCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKCS1tb3otdXNlci1zZWxlY3Q6IG5vbmU7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJdXNlci1zZWxlY3Q6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2Owp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogLjI1cmVtOwoJbGVmdDogLTEuNXJlbTsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07Cgljb250ZW50OiAiIjsKCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwoJYmFja2dyb3VuZC1zaXplOiA1MCUgNTAlOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIHZpZXdCb3g9XCcwIDAgOCA4XCclM0UlM0NwYXRoIGZpbGw9XCclMjNmZmZcJyBkPVwnTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2IDIuOTc0IDcuMjUgOCAyLjE5M3pcJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPVwnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcJyB2aWV3Qm94PVwnMCAwIDQgNFwnJTNFJTNDcGF0aCBzdHJva2U9XCclMjNmZmZcJyBkPVwnTTAgMmg0XCcvJTNFJTNDL3N2ZyUzRSIpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIHZpZXdCb3g9XCctNCAtNCA4IDhcJyUzRSUzQ2NpcmNsZSByPVwnM1wnIGZpbGw9XCclMjNmZmZcJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0IHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjM3NXJlbSAxLjc1cmVtIC4zNzVyZW0gLjc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWJhY2tncm91bmQ6ICNmZmYgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz1cJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCcgdmlld0JveD1cJzAgMCA0IDVcJyUzRSUzQ3BhdGggZmlsbD1cJyUyMzM0M2E0MFwnIGQ9XCdNMiAwTDAgMmg0em0wIDVMMCAzaDR6XCcvJTNFJTNDL3N2ZyUzRSIpIG5vLXJlcGVhdCByaWdodCAuNzVyZW0gY2VudGVyOwoJYmFja2dyb3VuZC1zaXplOiA4cHggMTBweDsKCWJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpmb2N1cyB7Cglib3JkZXItY29sb3I6ICM4MGJkZmY7CglvdXRsaW5lOiAwOwoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMjgsIDE4OSwgMjU1LCAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUgewoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouY3VzdG9tLXNlbGVjdFttdWx0aXBsZV0sIC5jdXN0b20tc2VsZWN0W3NpemVdOm5vdChbc2l6ZT0iMSJdKSB7CgloZWlnaHQ6IGF1dG87CglwYWRkaW5nLXJpZ2h0OiAuNzVyZW07CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHsKCW9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tc2VsZWN0LXNtIHsKCWhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCWZvbnQtc2l6ZTogNzUlOwp9CgouY3VzdG9tLXNlbGVjdC1sZyB7CgloZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCWZvbnQtc2l6ZTogMTI1JTsKfQoKLmN1c3RvbS1maWxlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmN1c3RvbS1maWxlLWlucHV0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKCW1hcmdpbjogMDsKCW9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItY29sb3I6ICM4MGJkZmY7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogIzgwYmRmZjsKfQoKLmN1c3RvbS1maWxlLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpsYW5nKGVuKSB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewoJY29udGVudDogIkJyb3dzZSI7Cn0KCi5jdXN0b20tZmlsZS1sYWJlbCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjM3NXJlbSAuNzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCXotaW5kZXg6IDM7CglkaXNwbGF5OiBibG9jazsKCWhlaWdodDogMi4yNXJlbTsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJY29udGVudDogIkJyb3dzZSI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwoJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2VkNGRhOwoJYm9yZGVyLXJhZGl1czogMCAuMjVyZW0gLjI1cmVtIDA7Cn0KCi5jdXN0b20tcmFuZ2UgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nLWxlZnQ6IDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCS1tb3otYXBwZWFyYW5jZTogbm9uZTsKCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKCWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXMgewoJb3V0bGluZTogbm9uZTsKfQoKLmN1c3RvbS1yYW5nZTpmb2N1czo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tb3otcmFuZ2UtdGh1bWIgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tcy10aHVtYiB7Cglib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjI1KTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1vei1mb2N1cy1vdXRlciB7Cglib3JkZXI6IDA7Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKCXdpZHRoOiAxcmVtOwoJaGVpZ2h0OiAxcmVtOwoJbWFyZ2luLXRvcDogLS4yNXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXI6IDA7Cglib3JkZXItcmFkaXVzOiAxcmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7Cgl0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iOmFjdGl2ZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogLjVyZW07Cgljb2xvcjogdHJhbnNwYXJlbnQ7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1yYWRpdXM6IDFyZW07Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgewoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJYm9yZGVyOiAwOwoJYm9yZGVyLXJhZGl1czogMXJlbTsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJLW1vei1hcHBlYXJhbmNlOiBub25lOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwoJYXBwZWFyYW5jZTogbm9uZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYiB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWI6YWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdHJhY2sgewoJd2lkdGg6IDEwMCU7CgloZWlnaHQ6IC41cmVtOwoJY29sb3I6IHRyYW5zcGFyZW50OwoJY3Vyc29yOiBwb2ludGVyOwoJYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItcmFkaXVzOiAxcmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLXJpZ2h0OiAuMnJlbTsKCW1hcmdpbi1sZWZ0OiAuMnJlbTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXI6IDA7Cglib3JkZXItcmFkaXVzOiAxcmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7Cgl0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewoJCS13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKCQl0cmFuc2l0aW9uOiBub25lOwoJfQp9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWI6YWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogLjVyZW07Cgljb2xvcjogdHJhbnNwYXJlbnQ7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItd2lkdGg6IC41cmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC1sb3dlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwoJYm9yZGVyLXJhZGl1czogMXJlbTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtdXBwZXIgewoJbWFyZ2luLXJpZ2h0OiAxNXB4OwoJYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKCWJvcmRlci1yYWRpdXM6IDFyZW07Cn0KCi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tc2VsZWN0IHsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0Owp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5uYXYgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IDA7CglsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2LWxpbmsgewoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwp9CgoubmF2LWxpbms6aG92ZXIsIC5uYXYtbGluazpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXYtbGluay5kaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKfQoKLm5hdi10YWJzIHsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoubmF2LXRhYnMgLm5hdi1pdGVtIHsKCW1hcmdpbi1ib3R0b206IC0xcHg7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsgewoJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyLCAubmF2LXRhYnMgLm5hdi1saW5rOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsuZGlzYWJsZWQgewoJY29sb3I6ICM2Yzc1N2Q7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXRhYnMgLm5hdi1pdGVtLnNob3cgLm5hdi1saW5rIHsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNiAjZGVlMmU2ICNmZmY7Cn0KCi5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CgltYXJnaW4tdG9wOiAtMXB4OwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgoubmF2LXBpbGxzIC5uYXYtbGluayB7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5uYXYtZmlsbCAubmF2LWl0ZW0gewoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5uYXYtanVzdGlmaWVkIC5uYXYtaXRlbSB7CgktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCWZsZXgtYmFzaXM6IDA7CgktbXMtZmxleC1wb3NpdGl2ZTogMTsKCWZsZXgtZ3JvdzogMTsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi50YWItY29udGVudCA+IC5hY3RpdmUgewoJZGlzcGxheTogYmxvY2s7Cn0KCi5uYXZiYXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJLW1zLWZsZXgtcGFjazoganVzdGlmeTsKCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKCXBhZGRpbmc6IC41cmVtIDFyZW07Cn0KCi5uYXZiYXIgPiAuY29udGFpbmVyLCAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9CgoubmF2YmFyLWJyYW5kIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXBhZGRpbmctdG9wOiAuMzEyNXJlbTsKCXBhZGRpbmctYm90dG9tOiAuMzEyNXJlbTsKCW1hcmdpbi1yaWdodDogMXJlbTsKCWZvbnQtc2l6ZTogMS4yNXJlbTsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1icmFuZDpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXZiYXItbmF2IHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IDA7CglsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJcGFkZGluZy1yaWdodDogMDsKCXBhZGRpbmctbGVmdDogMDsKfQoKLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewoJcG9zaXRpb246IHN0YXRpYzsKCWZsb2F0OiBub25lOwp9CgoubmF2YmFyLXRleHQgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZy10b3A6IC41cmVtOwoJcGFkZGluZy1ib3R0b206IC41cmVtOwp9CgoubmF2YmFyLWNvbGxhcHNlIHsKCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwoJZmxleC1iYXNpczogMTAwJTsKCS1tcy1mbGV4LXBvc2l0aXZlOiAxOwoJZmxleC1ncm93OiAxOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlciB7CglwYWRkaW5nOiAuMjVyZW0gLjc1cmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDE7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXZiYXItdG9nZ2xlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlci1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxLjVlbTsKCWhlaWdodDogMS41ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJY29udGVudDogIiI7CgliYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKCWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKCS5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkIHsKCQlwYWRkaW5nLXJpZ2h0OiAwOwoJCXBhZGRpbmctbGVmdDogMDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkubmF2YmFyLWV4cGFuZC1zbSB7CgkJLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQlmbGV4LWZsb3c6IHJvdyBub3dyYXA7CgkJLW1zLWZsZXgtcGFjazogc3RhcnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CgkJZmxleC1kaXJlY3Rpb246IHJvdzsKCX0KCQoJLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewoJCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCX0KCQoJLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbTsKCQlwYWRkaW5nLWxlZnQ6IC41cmVtOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJLW1zLWZsZXgtd3JhcDogbm93cmFwOwoJCWZsZXgtd3JhcDogbm93cmFwOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLWNvbGxhcHNlIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCQktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKCQlmbGV4LWJhc2lzOiBhdXRvOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXIgewoJCWRpc3BsYXk6IG5vbmU7Cgl9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewoJLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewoJCXBhZGRpbmctcmlnaHQ6IDA7CgkJcGFkZGluZy1sZWZ0OiAwOwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5uYXZiYXItZXhwYW5kLW1kIHsKCQktbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwoJCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQktbXMtZmxleC1wYWNrOiBzdGFydDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCQlmbGV4LWRpcmVjdGlvbjogcm93OwoJfQoJCgkubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CgkJcG9zaXRpb246IGFic29sdXRlOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJCXBhZGRpbmctbGVmdDogLjVyZW07Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXA7CgkJZmxleC13cmFwOiBub3dyYXA7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2UgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwoJCWZsZXgtYmFzaXM6IGF1dG87Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItdG9nZ2xlciB7CgkJZGlzcGxheTogbm9uZTsKCX0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CgkubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJcGFkZGluZy1yaWdodDogMDsKCQlwYWRkaW5nLWxlZnQ6IDA7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLm5hdmJhci1leHBhbmQtbGcgewoJCS1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7CgkJZmxleC1mbG93OiByb3cgbm93cmFwOwoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwoJCWZsZXgtZGlyZWN0aW9uOiByb3c7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKCQlwb3NpdGlvbjogYWJzb2x1dGU7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CgkJcGFkZGluZy1yaWdodDogLjVyZW07CgkJcGFkZGluZy1sZWZ0OiAuNXJlbTsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItZmx1aWQgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKCQlmbGV4LXdyYXA6IG5vd3JhcDsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1jb2xsYXBzZSB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CgkJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CgkJZmxleC1iYXNpczogYXV0bzsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHsKCQlkaXNwbGF5OiBub25lOwoJfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CgkubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJcGFkZGluZy1yaWdodDogMDsKCQlwYWRkaW5nLWxlZnQ6IDA7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKCS5uYXZiYXItZXhwYW5kLXhsIHsKCQktbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwoJCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQktbXMtZmxleC1wYWNrOiBzdGFydDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCQlmbGV4LWRpcmVjdGlvbjogcm93OwoJfQoJCgkubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CgkJcG9zaXRpb246IGFic29sdXRlOwoJfQoJCgkubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJCXBhZGRpbmctbGVmdDogLjVyZW07Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXA7CgkJZmxleC13cmFwOiBub3dyYXA7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItY29sbGFwc2UgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwoJCWZsZXgtYmFzaXM6IGF1dG87Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlciB7CgkJZGlzcGxheTogbm9uZTsKCX0KfQoKLm5hdmJhci1leHBhbmQgewoJLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CgoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiB7CgktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCWZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJcGFkZGluZy1sZWZ0OiAuNXJlbTsKfQoKLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQgewoJLW1zLWZsZXgtd3JhcDogbm93cmFwOwoJZmxleC13cmFwOiBub3dyYXA7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItY29sbGFwc2UgewoJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CglmbGV4LWJhc2lzOiBhdXRvOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXIgewoJZGlzcGxheTogbm9uZTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC45KTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluayB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cyB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNyk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlciB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cglib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlci1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD1cJzAgMCAzMCAzMFwnIHhtbG5zPVwnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcJyUzRSUzQ3BhdGggc3Ryb2tlPVwncmdiYSgwLCAwLCAwLCAwLjUpXCcgc3Ryb2tlLXdpZHRoPVwnMlwnIHN0cm9rZS1saW5lY2FwPVwncm91bmRcJyBzdHJva2UtbWl0ZXJsaW1pdD1cJzEwXCcgZD1cJ000IDdoMjJNNCAxNWgyMk00IDIzaDIyXCcvJTNFJTNDL3N2ZyUzRSIpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmZvY3VzIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC45KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgewoJY29sb3I6ICNmZmY7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewoJY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjc1KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZCB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMjUpOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyIHsKCWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTsKCWJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXItaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9XCcwIDAgMzAgMzBcJyB4bWxucz1cJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCclM0UlM0NwYXRoIHN0cm9rZT1cJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwnIHN0cm9rZS13aWR0aD1cJzJcJyBzdHJva2UtbGluZWNhcD1cJ3JvdW5kXCcgc3Ryb2tlLW1pdGVybGltaXQ9XCcxMFwnIGQ9XCdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMlwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYSB7Cgljb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IGE6Zm9jdXMgewoJY29sb3I6ICNmZmY7Cn0KCi5jYXJkIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCW1pbi13aWR0aDogMDsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKCWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKCWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjEyNSk7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5jYXJkID4gaHIgewoJbWFyZ2luLXJpZ2h0OiAwOwoJbWFyZ2luLWxlZnQ6IDA7Cn0KCi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgouY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5jYXJkLWJvZHkgewoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87CglwYWRkaW5nOiAxLjI1cmVtOwp9CgouY2FyZC10aXRsZSB7CgltYXJnaW4tYm90dG9tOiAuNzVyZW07Cn0KCi5jYXJkLXN1YnRpdGxlIHsKCW1hcmdpbi10b3A6IC0uMzc1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmNhcmQtdGV4dDpsYXN0LWNoaWxkIHsKCW1hcmdpbi1ib3R0b206IDA7Cn0KCi5jYXJkLWxpbms6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouY2FyZC1saW5rICsgLmNhcmQtbGluayB7CgltYXJnaW4tbGVmdDogMS4yNXJlbTsKfQoKLmNhcmQtaGVhZGVyIHsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjAzKTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4xMjUpOwp9CgouY2FyZC1oZWFkZXI6Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXJhZGl1czogY2FsYyguMjVyZW0gLSAxcHgpIGNhbGMoLjI1cmVtIC0gMXB4KSAwIDA7Cn0KCi5jYXJkLWhlYWRlciArIC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXRvcDogMDsKfQoKLmNhcmQtZm9vdGVyIHsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDMpOwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjEyNSk7Cn0KCi5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHsKCWJvcmRlci1yYWRpdXM6IDAgMCBjYWxjKC4yNXJlbSAtIDFweCkgY2FsYyguMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1oZWFkZXItdGFicyB7CgltYXJnaW4tcmlnaHQ6IC0uNjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogLS43NXJlbTsKCW1hcmdpbi1sZWZ0OiAtLjYyNXJlbTsKCWJvcmRlci1ib3R0b206IDA7Cn0KCi5jYXJkLWhlYWRlci1waWxscyB7CgltYXJnaW4tcmlnaHQ6IC0uNjI1cmVtOwoJbWFyZ2luLWxlZnQ6IC0uNjI1cmVtOwp9CgouY2FyZC1pbWctb3ZlcmxheSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWxlZnQ6IDA7CglwYWRkaW5nOiAxLjI1cmVtOwp9CgouY2FyZC1pbWcgewoJd2lkdGg6IDEwMCU7Cglib3JkZXItcmFkaXVzOiBjYWxjKC4yNXJlbSAtIDFweCk7Cn0KCi5jYXJkLWltZy10b3AgewoJd2lkdGg6IDEwMCU7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKC4yNXJlbSAtIDFweCk7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYyguMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1pbWctYm90dG9tIHsKCXdpZHRoOiAxMDAlOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGNhbGMoLjI1cmVtIC0gMXB4KTsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IGNhbGMoLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtZGVjayB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWRlY2sgLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY2FyZC1kZWNrIHsKCQktbXMtZmxleC1mbG93OiByb3cgd3JhcDsKCQlmbGV4LWZsb3c6IHJvdyB3cmFwOwoJCW1hcmdpbi1yaWdodDogLTE1cHg7CgkJbWFyZ2luLWxlZnQ6IC0xNXB4OwoJfQoJCgkuY2FyZC1kZWNrIC5jYXJkIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleDogMSAwIDAlOwoJCWZsZXg6IDEgMCAwJTsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJCW1hcmdpbi1yaWdodDogMTVweDsKCQltYXJnaW4tYm90dG9tOiAwOwoJCW1hcmdpbi1sZWZ0OiAxNXB4OwoJfQp9CgouY2FyZC1ncm91cCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWdyb3VwID4gLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY2FyZC1ncm91cCB7CgkJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CgkJZmxleC1mbG93OiByb3cgd3JhcDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CgkJLW1zLWZsZXg6IDEgMCAwJTsKCQlmbGV4OiAxIDAgMCU7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZCArIC5jYXJkIHsKCQltYXJnaW4tbGVmdDogMDsKCQlib3JkZXItbGVmdDogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCB7CgkJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CgkJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewoJCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtZm9vdGVyIHsKCQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaGVhZGVyIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWZvb3RlciB7CgkJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIHsKCQlib3JkZXItcmFkaXVzOiAuMjVyZW07Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaGVhZGVyIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07CgkJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbTsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1mb290ZXIgewoJCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07CgkJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjI1cmVtOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSB7CgkJYm9yZGVyLXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaGVhZGVyLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1mb290ZXIgewoJCWJvcmRlci1yYWRpdXM6IDA7Cgl9Cn0KCi5jYXJkLWNvbHVtbnMgLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogLjc1cmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5jYXJkLWNvbHVtbnMgewoJCS1tb3otY29sdW1uLWNvdW50OiAzOwoJCS13ZWJraXQtY29sdW1uLWNvdW50OiAzOwoJCWNvbHVtbi1jb3VudDogMzsKCQktbW96LWNvbHVtbi1nYXA6IDEuMjVyZW07CgkJLXdlYmtpdC1jb2x1bW4tZ2FwOiAxLjI1cmVtOwoJCWNvbHVtbi1nYXA6IDEuMjVyZW07CgkJb3JwaGFuczogMTsKCQl3aWRvd3M6IDE7Cgl9CgkKCS5jYXJkLWNvbHVtbnMgLmNhcmQgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCQl3aWR0aDogMTAwJTsKCX0KfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpOm5vdCg6bGFzdC1vZi10eXBlKSB7Cglib3JkZXItYm90dG9tOiAwOwoJYm9yZGVyLXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpIC5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7Cglib3JkZXItcmFkaXVzOiAwOwp9CgouYWNjb3JkaW9uIC5jYXJkOmZpcnN0LW9mLXR5cGUgewoJYm9yZGVyLWJvdHRvbTogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpsYXN0LW9mLXR5cGUgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgouYnJlYWRjcnVtYiB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJcGFkZGluZzogLjc1cmVtIDFyZW07CgltYXJnaW4tYm90dG9tOiAxcmVtOwoJbGlzdC1zdHlsZTogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtIHsKCXBhZGRpbmctbGVmdDogLjVyZW07Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOjpiZWZvcmUgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZy1yaWdodDogLjVyZW07Cgljb2xvcjogIzZjNzU3ZDsKCWNvbnRlbnQ6ICIvIjsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5icmVhZGNydW1iLWl0ZW0uYWN0aXZlIHsKCWNvbG9yOiAjNmM3NTdkOwp9CgoucGFnaW5hdGlvbiB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CglwYWRkaW5nLWxlZnQ6IDA7CglsaXN0LXN0eWxlOiBub25lOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoucGFnZS1saW5rIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjVyZW0gLjc1cmVtOwoJbWFyZ2luLWxlZnQ6IC0xcHg7CglsaW5lLWhlaWdodDogMS4yNTsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi5wYWdlLWxpbms6aG92ZXIgewoJei1pbmRleDogMjsKCWNvbG9yOiAjMDA1NmIzOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2UtbGluazpmb2N1cyB7Cgl6LWluZGV4OiAyOwoJb3V0bGluZTogMDsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5wYWdlLWxpbms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewoJY3Vyc29yOiBwb2ludGVyOwp9CgoucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewoJbWFyZ2luLWxlZnQ6IDA7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHsKCXotaW5kZXg6IDE7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5wYWdlLWl0ZW0uZGlzYWJsZWQgLnBhZ2UtbGluayB7Cgljb2xvcjogIzZjNzU3ZDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwoJY3Vyc29yOiBhdXRvOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7CglwYWRkaW5nOiAuNzVyZW0gMS41cmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4zcmVtOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjNyZW07Cn0KCi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuM3JlbTsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuM3JlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjJyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMnJlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4ycmVtOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC4ycmVtOwp9CgouYmFkZ2UgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZzogLjI1ZW0gLjRlbTsKCWZvbnQtc2l6ZTogNzUlOwoJZm9udC13ZWlnaHQ6IDcwMDsKCWxpbmUtaGVpZ2h0OiAxOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCXZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmJhZGdlOmVtcHR5IHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5idG4gLmJhZGdlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRvcDogLTFweDsKfQoKLmJhZGdlLXBpbGwgewoJcGFkZGluZy1yaWdodDogLjZlbTsKCXBhZGRpbmctbGVmdDogLjZlbTsKCWJvcmRlci1yYWRpdXM6IDEwcmVtOwp9CgouYmFkZ2UtcHJpbWFyeSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2UtcHJpbWFyeVtocmVmXTpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cn0KCi5iYWRnZS1zZWNvbmRhcnkgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwp9CgouYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MjsKfQoKLmJhZGdlLXN1Y2Nlc3MgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1Owp9CgouYmFkZ2Utc3VjY2Vzc1tocmVmXTpob3ZlciwgLmJhZGdlLXN1Y2Nlc3NbaHJlZl06Zm9jdXMgewoJY29sb3I6ICNmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0Owp9CgouYmFkZ2UtaW5mbyB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cn0KCi5iYWRnZS1pbmZvW2hyZWZdOmhvdmVyLCAuYmFkZ2UtaW5mb1tocmVmXTpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMxMTdhOGI7Cn0KCi5iYWRnZS13YXJuaW5nIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKfQoKLmJhZGdlLXdhcm5pbmdbaHJlZl06aG92ZXIsIC5iYWRnZS13YXJuaW5nW2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjMjEyNTI5OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDsKfQoKLmJhZGdlLWRhbmdlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cn0KCi5iYWRnZS1kYW5nZXJbaHJlZl06aG92ZXIsIC5iYWRnZS1kYW5nZXJbaHJlZl06Zm9jdXMgewoJY29sb3I6ICNmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwOwp9CgouYmFkZ2UtbGlnaHQgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIsIC5iYWRnZS1saWdodFtocmVmXTpmb2N1cyB7Cgljb2xvcjogIzIxMjUyOTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7Cn0KCi5iYWRnZS1kYXJrIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKfQoKLmJhZGdlLWRhcmtbaHJlZl06aG92ZXIsIC5iYWRnZS1kYXJrW2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNDsKfQoKLmp1bWJvdHJvbiB7CglwYWRkaW5nOiAycmVtIDFyZW07CgltYXJnaW4tYm90dG9tOiAycmVtOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5qdW1ib3Ryb24gewoJCXBhZGRpbmc6IDRyZW0gMnJlbTsKCX0KfQoKLmp1bWJvdHJvbi1mbHVpZCB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwoJYm9yZGVyLXJhZGl1czogMDsKfQoKLmFsZXJ0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgouYWxlcnQtaGVhZGluZyB7Cgljb2xvcjogaW5oZXJpdDsKfQoKLmFsZXJ0LWxpbmsgewoJZm9udC13ZWlnaHQ6IDcwMDsKfQoKLmFsZXJ0LWRpc21pc3NpYmxlIHsKCXBhZGRpbmctcmlnaHQ6IDRyZW07Cn0KCi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2UgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJcmlnaHQ6IDA7CglwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsKCWNvbG9yOiBpbmhlcml0Owp9CgouYWxlcnQtcHJpbWFyeSB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICNjY2U1ZmY7Cglib3JkZXItY29sb3I6ICNiOGRhZmY7Cn0KCi5hbGVydC1wcmltYXJ5IGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICM5ZWNkZmY7Cn0KCi5hbGVydC1wcmltYXJ5IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDAyNzUyOwp9CgouYWxlcnQtc2Vjb25kYXJ5IHsKCWNvbG9yOiAjMzgzZDQxOwoJYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTsKCWJvcmRlci1jb2xvcjogI2Q2ZDhkYjsKfQoKLmFsZXJ0LXNlY29uZGFyeSBociB7Cglib3JkZXItdG9wLWNvbG9yOiAjYzhjY2NmOwp9CgouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMjEyMzI2Owp9CgouYWxlcnQtc3VjY2VzcyB7Cgljb2xvcjogIzE1NTcyNDsKCWJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7Cglib3JkZXItY29sb3I6ICNjM2U2Y2I7Cn0KCi5hbGVydC1zdWNjZXNzIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNiMWRmYmI7Cn0KCi5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMGIyZTEzOwp9CgouYWxlcnQtaW5mbyB7Cgljb2xvcjogIzBjNTQ2MDsKCWJhY2tncm91bmQtY29sb3I6ICNkMWVjZjE7Cglib3JkZXItY29sb3I6ICNiZWU1ZWI7Cn0KCi5hbGVydC1pbmZvIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7Cn0KCi5hbGVydC1pbmZvIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDYyYzMyOwp9CgouYWxlcnQtd2FybmluZyB7Cgljb2xvcjogIzg1NjQwNDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7Cglib3JkZXItY29sb3I6ICNmZmVlYmE7Cn0KCi5hbGVydC13YXJuaW5nIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNmZmU3YTA7Cn0KCi5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNTMzZjAyOwp9CgouYWxlcnQtZGFuZ2VyIHsKCWNvbG9yOiAjNzIxYzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTsKCWJvcmRlci1jb2xvcjogI2Y1YzZjYjsKfQoKLmFsZXJ0LWRhbmdlciBociB7Cglib3JkZXItdG9wLWNvbG9yOiAjZjFiMWI3Owp9CgouYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNDkxMjE3Owp9CgouYWxlcnQtbGlnaHQgewoJY29sb3I6ICM4MTgxODI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlOwoJYm9yZGVyLWNvbG9yOiAjZmRmZGZlOwp9CgouYWxlcnQtbGlnaHQgaHIgewoJYm9yZGVyLXRvcC1jb2xvcjogI2YxZjFmMTsKfQoKLmFsZXJ0LWxpZ2h0IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNjg2ODY4Owp9CgouYWxlcnQtZGFyayB7Cgljb2xvcjogIzFiMWUyMTsKCWJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7Cglib3JkZXItY29sb3I6ICNjNmM4Y2E7Cn0KCi5hbGVydC1kYXJrIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNiOWJiYmQ7Cn0KCi5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDQwNTA1Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewoJZnJvbSB7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjogMXJlbSAwOwoJfQoJCgl0byB7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwoJfQp9CgpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKCWZyb20gewoJCWJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsKCX0KCQoJdG8gewoJCWJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKCX0KfQoKLnByb2dyZXNzIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCWhlaWdodDogMXJlbTsKCW92ZXJmbG93OiBoaWRkZW47Cglmb250LXNpemU6IC43NXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5wcm9ncmVzcy1iYXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJLW1zLWZsZXgtcGFjazogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cgljb2xvcjogI2ZmZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKCXdoaXRlLXNwYWNlOiBub3dyYXA7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAuNnMgZWFzZTsKCXRyYW5zaXRpb246IHdpZHRoIC42cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkucHJvZ3Jlc3MtYmFyIHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLnByb2dyZXNzLWJhci1zdHJpcGVkIHsKCWJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiAxcmVtIDFyZW07Cn0KCi5wcm9ncmVzcy1iYXItYW5pbWF0ZWQgewoJLXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKCWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlOwp9CgoubWVkaWEgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Cn0KCi5tZWRpYS1ib2R5IHsKCS1tcy1mbGV4OiAxOwoJZmxleDogMTsKfQoKLmxpc3QtZ3JvdXAgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJcGFkZGluZy1sZWZ0OiAwOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gewoJd2lkdGg6IDEwMCU7Cgljb2xvcjogIzQ5NTA1NzsKCXRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzQ5NTA1NzsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmFjdGl2ZSB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsKCW1hcmdpbi1ib3R0b206IC0xcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTI1KTsKfQoKLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewoJbWFyZ2luLWJvdHRvbTogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5saXN0LWdyb3VwLWl0ZW06aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgewoJei1pbmRleDogMTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCwgLmxpc3QtZ3JvdXAtaXRlbTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsKCXotaW5kZXg6IDI7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5saXN0LWdyb3VwLWZsdXNoIC5saXN0LWdyb3VwLWl0ZW0gewoJYm9yZGVyLXJpZ2h0OiAwOwoJYm9yZGVyLWxlZnQ6IDA7Cglib3JkZXItcmFkaXVzOiAwOwp9CgoubGlzdC1ncm91cC1mbHVzaDpmaXJzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKCWJvcmRlci10b3A6IDA7Cn0KCi5saXN0LWdyb3VwLWZsdXNoOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKCWJvcmRlci1ib3R0b206IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeSB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDQwODU7Cglib3JkZXItY29sb3I6ICMwMDQwODU7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5IHsKCWNvbG9yOiAjMzgzZDQxOwoJYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzM4M2Q0MTsKCWJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM4M2Q0MTsKCWJvcmRlci1jb2xvcjogIzM4M2Q0MTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsKCWNvbG9yOiAjMTU1NzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMTU1NzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzE1NTcyNDsKCWJvcmRlci1jb2xvcjogIzE1NTcyNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKCWNvbG9yOiAjMGM1NDYwOwoJYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMGM1NDYwOwoJYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzBjNTQ2MDsKCWJvcmRlci1jb2xvcjogIzBjNTQ2MDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHsKCWNvbG9yOiAjODU2NDA0OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjODU2NDA0OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzg1NjQwNDsKCWJvcmRlci1jb2xvcjogIzg1NjQwNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewoJY29sb3I6ICM3MjFjMjQ7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiOwp9CgoubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjNzIxYzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNzIxYzI0OwoJYm9yZGVyLWNvbG9yOiAjNzIxYzI0Owp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0IHsKCWNvbG9yOiAjODE4MTgyOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewoJY29sb3I6ICM4MTgxODI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzgxODE4MjsKCWJvcmRlci1jb2xvcjogIzgxODE4MjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrIHsKCWNvbG9yOiAjMWIxZTIxOwoJYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMWIxZTIxOwoJYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzFiMWUyMTsKCWJvcmRlci1jb2xvcjogIzFiMWUyMTsKfQoKLmNsb3NlIHsKCWZsb2F0OiByaWdodDsKCWZvbnQtc2l6ZTogMS41cmVtOwoJZm9udC13ZWlnaHQ6IDcwMDsKCWxpbmUtaGVpZ2h0OiAxOwoJY29sb3I6ICMwMDA7Cgl0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwoJb3BhY2l0eTogLjU7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmNsb3NlOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmZvY3VzIHsKCWNvbG9yOiAjMDAwOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJb3BhY2l0eTogLjc1Owp9CgpidXR0b24uY2xvc2UgewoJcGFkZGluZzogMDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYm9yZGVyOiAwOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgoubW9kYWwtb3BlbiB7CglvdmVyZmxvdzogaGlkZGVuOwp9CgoubW9kYWwtb3BlbiAubW9kYWwgewoJb3ZlcmZsb3cteDogaGlkZGVuOwoJb3ZlcmZsb3cteTogYXV0bzsKfQoKLm1vZGFsIHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXJpZ2h0OiAwOwoJYm90dG9tOiAwOwoJbGVmdDogMDsKCXotaW5kZXg6IDEwNTA7CglkaXNwbGF5OiBub25lOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCW91dGxpbmU6IDA7Cn0KCi5tb2RhbC1kaWFsb2cgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJd2lkdGg6IGF1dG87CgltYXJnaW46IC41cmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewoJLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7Cgl0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0OwoJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZyB7Cgktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwoJdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7Cn0KCi5tb2RhbC1kaWFsb2ctY2VudGVyZWQgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgltaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoIC41cmVtICogMiApKTsKfQoKLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKCWRpc3BsYXk6IGJsb2NrOwoJaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKCAuNXJlbSAqIDIgKSk7Cgljb250ZW50OiAiIjsKfQoKLm1vZGFsLWNvbnRlbnQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJd2lkdGg6IDEwMCU7Cglwb2ludGVyLWV2ZW50czogYXV0bzsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMik7Cglib3JkZXItcmFkaXVzOiAuM3JlbTsKCW91dGxpbmU6IDA7Cn0KCi5tb2RhbC1iYWNrZHJvcCB7Cglwb3NpdGlvbjogZml4ZWQ7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxMDQwOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoKLm1vZGFsLWJhY2tkcm9wLmZhZGUgewoJb3BhY2l0eTogMDsKfQoKLm1vZGFsLWJhY2tkcm9wLnNob3cgewoJb3BhY2l0eTogLjU7Cn0KCi5tb2RhbC1oZWFkZXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwoJcGFkZGluZzogMXJlbTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTllY2VmOwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjNyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjNyZW07Cn0KCi5tb2RhbC1oZWFkZXIgLmNsb3NlIHsKCXBhZGRpbmc6IDFyZW07CgltYXJnaW46IC0xcmVtIC0xcmVtIC0xcmVtIGF1dG87Cn0KCi5tb2RhbC10aXRsZSB7CgltYXJnaW4tYm90dG9tOiAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKfQoKLm1vZGFsLWJvZHkgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87CglwYWRkaW5nOiAxcmVtOwp9CgoubW9kYWwtZm9vdGVyIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJLW1zLWZsZXgtcGFjazogZW5kOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCXBhZGRpbmc6IDFyZW07Cglib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsKfQoKLm1vZGFsLWZvb3RlciA+IDpub3QoOmZpcnN0LWNoaWxkKSB7CgltYXJnaW4tbGVmdDogLjI1cmVtOwp9CgoubW9kYWwtZm9vdGVyID4gOm5vdCg6bGFzdC1jaGlsZCkgewoJbWFyZ2luLXJpZ2h0OiAuMjVyZW07Cn0KCi5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC05OTk5cHg7Cgl3aWR0aDogNTBweDsKCWhlaWdodDogNTBweDsKCW92ZXJmbG93OiBzY3JvbGw7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewoJLm1vZGFsLWRpYWxvZyB7CgkJbWF4LXdpZHRoOiA1MDBweDsKCQltYXJnaW46IDEuNzVyZW0gYXV0bzsKCX0KCQoJLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CgkJbWluLWhlaWdodDogY2FsYygxMDAlIC0gKCAxLjc1cmVtICogMiApKTsKCX0KCQoJLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKCQloZWlnaHQ6IGNhbGMoMTAwdmggLSAoIDEuNzVyZW0gKiAyICkpOwoJfQoJCgkubW9kYWwtc20gewoJCW1heC13aWR0aDogMzAwcHg7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLm1vZGFsLWxnIHsKCQltYXgtd2lkdGg6IDgwMHB4OwoJfQp9CgoudG9vbHRpcCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAxMDcwOwoJZGlzcGxheTogYmxvY2s7CgltYXJnaW46IDA7Cglmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmLCAiQXBwbGUgQ29sb3IgRW1vamkiLCAiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIiwgIk5vdG8gQ29sb3IgRW1vamkiOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IDQwMDsKCWxpbmUtaGVpZ2h0OiAxLjU7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJdGV4dC1hbGlnbjogc3RhcnQ7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cgl0ZXh0LXNoYWRvdzogbm9uZTsKCXRleHQtdHJhbnNmb3JtOiBub25lOwoJbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsKCXdvcmQtYnJlYWs6IG5vcm1hbDsKCXdvcmQtc3BhY2luZzogbm9ybWFsOwoJd2hpdGUtc3BhY2U6IG5vcm1hbDsKCWxpbmUtYnJlYWs6IGF1dG87Cglmb250LXNpemU6IC44NzVyZW07Cgl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CglvcGFjaXR5OiAwOwp9CgoudG9vbHRpcC5zaG93IHsKCW9wYWNpdHk6IC45Owp9CgoudG9vbHRpcCAuYXJyb3cgewoJcG9zaXRpb246IGFic29sdXRlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogLjhyZW07CgloZWlnaHQ6IC40cmVtOwp9CgoudG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgljb250ZW50OiAiIjsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItc3R5bGU6IHNvbGlkOwp9CgouYnMtdG9vbHRpcC10b3AsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSB7CglwYWRkaW5nOiAuNHJlbSAwOwp9CgouYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKCWJvdHRvbTogMDsKfQoKLmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgewoJdG9wOiAwOwoJYm9yZGVyLXdpZHRoOiAuNHJlbSAuNHJlbSAwOwoJYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoKLmJzLXRvb2x0aXAtcmlnaHQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKCXBhZGRpbmc6IDAgLjRyZW07Cn0KCi5icy10b29sdGlwLXJpZ2h0IC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKCWxlZnQ6IDA7Cgl3aWR0aDogLjRyZW07CgloZWlnaHQ6IC44cmVtOwp9CgouYnMtdG9vbHRpcC1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUgewoJcmlnaHQ6IDA7Cglib3JkZXItd2lkdGg6IC40cmVtIC40cmVtIC40cmVtIDA7Cglib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKCXBhZGRpbmc6IC40cmVtIDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewoJdG9wOiAwOwp9CgouYnMtdG9vbHRpcC1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7Cglib3R0b206IDA7Cglib3JkZXItd2lkdGg6IDAgLjRyZW0gLjRyZW07Cglib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9CgouYnMtdG9vbHRpcC1sZWZ0LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCXBhZGRpbmc6IDAgLjRyZW07Cn0KCi5icy10b29sdGlwLWxlZnQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7CglyaWdodDogMDsKCXdpZHRoOiAuNHJlbTsKCWhlaWdodDogLjhyZW07Cn0KCi5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUgewoJbGVmdDogMDsKCWJvcmRlci13aWR0aDogLjRyZW0gMCAuNHJlbSAuNHJlbTsKCWJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9CgoudG9vbHRpcC1pbm5lciB7CgltYXgtd2lkdGg6IDIwMHB4OwoJcGFkZGluZzogLjI1cmVtIC41cmVtOwoJY29sb3I6ICNmZmY7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoucG9wb3ZlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJei1pbmRleDogMTA2MDsKCWRpc3BsYXk6IGJsb2NrOwoJbWF4LXdpZHRoOiAyNzZweDsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7Cglmb250LXN0eWxlOiBub3JtYWw7Cglmb250LXdlaWdodDogNDAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKCXRleHQtYWxpZ246IGxlZnQ7Cgl0ZXh0LWFsaWduOiBzdGFydDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXRleHQtc2hhZG93OiBub25lOwoJdGV4dC10cmFuc2Zvcm06IG5vbmU7CglsZXR0ZXItc3BhY2luZzogbm9ybWFsOwoJd29yZC1icmVhazogbm9ybWFsOwoJd29yZC1zcGFjaW5nOiBub3JtYWw7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwoJbGluZS1icmVhazogYXV0bzsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMik7Cglib3JkZXItcmFkaXVzOiAuM3JlbTsKfQoKLnBvcG92ZXIgLmFycm93IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IC41cmVtOwoJbWFyZ2luOiAwIC4zcmVtOwp9CgoucG9wb3ZlciAuYXJyb3c6OmJlZm9yZSwgLnBvcG92ZXIgLmFycm93OjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglkaXNwbGF5OiBibG9jazsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1zdHlsZTogc29saWQ7Cn0KCi5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgouYnMtcG9wb3Zlci10b3AgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHt9CgouYnMtcG9wb3Zlci10b3AgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmFmdGVyIHsKCWJvcmRlci13aWR0aDogLjVyZW0gLjVyZW0gMDsKfQoKLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgewoJYm90dG9tOiAwOwoJYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMjUpOwp9CgouYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewoJYm90dG9tOiAxcHg7Cglib3JkZXItdG9wLWNvbG9yOiAjZmZmOwp9CgouYnMtcG9wb3Zlci1yaWdodCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gewoJbWFyZ2luLWxlZnQ6IC41cmVtOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdyB7Cgl3aWR0aDogLjVyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW46IC4zcmVtIDA7Cn0KCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjphZnRlciB7Cglib3JkZXItd2lkdGg6IC41cmVtIC41cmVtIC41cmVtIDA7Cn0KCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmJlZm9yZSB7CglsZWZ0OiAwOwoJYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7Cn0KCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YWZ0ZXIgewoJbGVmdDogMXB4OwoJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmOwp9CgouYnMtcG9wb3Zlci1ib3R0b20sIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSB7CgltYXJnaW4tdG9wOiAuNXJlbTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdyB7fQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjphZnRlciB7Cglib3JkZXItd2lkdGg6IDAgLjVyZW0gLjVyZW0gLjVyZW07Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YmVmb3JlIHsKCXRvcDogMDsKCWJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgLjI1KTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmFmdGVyIHsKCXRvcDogMXB4OwoJYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLnBvcG92ZXItaGVhZGVyOjpiZWZvcmUgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJbGVmdDogNTAlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMXJlbTsKCW1hcmdpbi1sZWZ0OiAtLjVyZW07Cgljb250ZW50OiAiIjsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdmN2Y3Owp9CgouYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCW1hcmdpbi1yaWdodDogLjVyZW07Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7Cgl3aWR0aDogLjVyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW46IC4zcmVtIDA7Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmFmdGVyIHsKCWJvcmRlci13aWR0aDogLjVyZW0gMCAuNXJlbSAuNXJlbTsKfQoKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSB7CglyaWdodDogMDsKCWJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmFmdGVyIHsKCXJpZ2h0OiAxcHg7Cglib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoKLnBvcG92ZXItaGVhZGVyIHsKCXBhZGRpbmc6IC41cmVtIC43NXJlbTsKCW1hcmdpbi1ib3R0b206IDA7Cglmb250LXNpemU6IDFyZW07Cgljb2xvcjogaW5oZXJpdDsKCWJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7Cglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGNhbGMoLjNyZW0gLSAxcHgpOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGMoLjNyZW0gLSAxcHgpOwp9CgoucG9wb3Zlci1oZWFkZXI6ZW1wdHkgewoJZGlzcGxheTogbm9uZTsKfQoKLnBvcG92ZXItYm9keSB7CglwYWRkaW5nOiAuNXJlbSAuNzVyZW07Cgljb2xvcjogIzIxMjUyOTsKfQoKLmNhcm91c2VsIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmNhcm91c2VsLWlubmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXdpZHRoOiAxMDAlOwoJb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmNhcm91c2VsLWl0ZW0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogbm9uZTsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJd2lkdGg6IDEwMCU7Cgktd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKCWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKCS13ZWJraXQtcGVyc3BlY3RpdmU6IDEwMDBweDsKCXBlcnNwZWN0aXZlOiAxMDAwcHg7Cn0KCi5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwgLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7CglkaXNwbGF5OiBibG9jazsKCS13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UsIG1hcmdpbiAuNnMgZWFzZTsKCXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIC42cyBlYXNlLCBtYXJnaW4gLjZzIGVhc2U7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjZzIGVhc2UsIG1hcmdpbiAuNnMgZWFzZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7Cn0KCi5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewoJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cgl0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KCkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7CgkuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKCQktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CgkJdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKCX0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwoJdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwp9CgpAc3VwcG9ydHMgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIHsKCS5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CgkJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwoJCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1pdGVtLXByZXYsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IHsKCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7Cn0KCkBzdXBwb3J0cyAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgewoJLmNhcm91c2VsLWl0ZW0tcHJldiwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQgewoJCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CgkJdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtIHsKCW9wYWNpdHk6IDA7Cgl0cmFuc2l0aW9uLWR1cmF0aW9uOiAuNnM7Cgl0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewoJb3BhY2l0eTogMTsKfQoKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CglvcGFjaXR5OiAwOwp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7Cgktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKfQoKQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CgkuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7CgkJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwoJCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYsIC5jYXJvdXNlbC1jb250cm9sLW5leHQgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgktbXMtZmxleC1wYWNrOiBjZW50ZXI7CglqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCXdpZHRoOiAxNSU7Cgljb2xvcjogI2ZmZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW9wYWNpdHk6IC41Owp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJb3V0bGluZTogMDsKCW9wYWNpdHk6IC45Owp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2IHsKCWxlZnQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLW5leHQgewoJcmlnaHQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAyMHB4OwoJaGVpZ2h0OiAyMHB4OwoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7CgliYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIGZpbGw9XCclMjNmZmZcJyB2aWV3Qm94PVwnMCAwIDggOFwnJTNFJTNDcGF0aCBkPVwnTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41elwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIGZpbGw9XCclMjNmZmZcJyB2aWV3Qm94PVwnMCAwIDggOFwnJTNFJTNDcGF0aCBkPVwnTTIuNzUgMGwtMS41IDEuNSAyLjUgMi41LTIuNSAyLjUgMS41IDEuNSA0LTQtNC00elwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IDA7Cglib3R0b206IDEwcHg7CglsZWZ0OiAwOwoJei1pbmRleDogMTU7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1wYWNrOiBjZW50ZXI7CglqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1yaWdodDogMTUlOwoJbWFyZ2luLWxlZnQ6IDE1JTsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCS1tcy1mbGV4OiAwIDEgYXV0bzsKCWZsZXg6IDAgMSBhdXRvOwoJd2lkdGg6IDMwcHg7CgloZWlnaHQ6IDNweDsKCW1hcmdpbi1yaWdodDogM3B4OwoJbWFyZ2luLWxlZnQ6IDNweDsKCXRleHQtaW5kZW50OiAtOTk5cHg7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC0xMHB4OwoJbGVmdDogMDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMHB4OwoJY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cglib3R0b206IC0xMHB4OwoJbGVmdDogMDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMHB4OwoJY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmNhcm91c2VsLWNhcHRpb24gewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IDE1JTsKCWJvdHRvbTogMjBweDsKCWxlZnQ6IDE1JTsKCXotaW5kZXg6IDEwOwoJcGFkZGluZy10b3A6IDIwcHg7CglwYWRkaW5nLWJvdHRvbTogMjBweDsKCWNvbG9yOiAjZmZmOwoJdGV4dC1hbGlnbjogY2VudGVyOwp9CgouYWxpZ24tYmFzZWxpbmUgewoJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi10b3AgewoJdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9CgouYWxpZ24tbWlkZGxlIHsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDsKfQoKLmFsaWduLWJvdHRvbSB7Cgl2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi10ZXh0LWJvdHRvbSB7Cgl2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsKfQoKLmFsaWduLXRleHQtdG9wIHsKCXZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50Owp9CgouYmctcHJpbWFyeSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCmEuYmctcHJpbWFyeTpob3ZlciwgYnV0dG9uLmJnLXByaW1hcnk6aG92ZXIsIGEuYmctcHJpbWFyeTpmb2N1cywgYnV0dG9uLmJnLXByaW1hcnk6Zm9jdXMgewoJYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9CgouYmctc2Vjb25kYXJ5IHsKCWJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKYS5iZy1zZWNvbmRhcnk6aG92ZXIsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6aG92ZXIsIGEuYmctc2Vjb25kYXJ5OmZvY3VzLCBidXR0b24uYmctc2Vjb25kYXJ5OmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICM1NDViNjIgIWltcG9ydGFudDsKfQoKLmJnLXN1Y2Nlc3MgewoJYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CgphLmJnLXN1Y2Nlc3M6aG92ZXIsIGJ1dHRvbi5iZy1zdWNjZXNzOmhvdmVyLCBhLmJnLXN1Y2Nlc3M6Zm9jdXMsIGJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQgIWltcG9ydGFudDsKfQoKLmJnLWluZm8gewoJYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9CgphLmJnLWluZm86aG92ZXIsIGJ1dHRvbi5iZy1pbmZvOmhvdmVyLCBhLmJnLWluZm86Zm9jdXMsIGJ1dHRvbi5iZy1pbmZvOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoKLmJnLXdhcm5pbmcgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CgphLmJnLXdhcm5pbmc6aG92ZXIsIGJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLCBhLmJnLXdhcm5pbmc6Zm9jdXMsIGJ1dHRvbi5iZy13YXJuaW5nOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsKfQoKLmJnLWRhbmdlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KCmEuYmctZGFuZ2VyOmhvdmVyLCBidXR0b24uYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cywgYnV0dG9uLmJnLWRhbmdlcjpmb2N1cyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi5iZy1saWdodCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KCmEuYmctbGlnaHQ6aG92ZXIsIGJ1dHRvbi5iZy1saWdodDpob3ZlciwgYS5iZy1saWdodDpmb2N1cywgYnV0dG9uLmJnLWxpZ2h0OmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoKLmJnLWRhcmsgewoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CgphLmJnLWRhcms6aG92ZXIsIGJ1dHRvbi5iZy1kYXJrOmhvdmVyLCBhLmJnLWRhcms6Zm9jdXMsIGJ1dHRvbi5iZy1kYXJrOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsKfQoKLmJnLXdoaXRlIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoKLmJnLXRyYW5zcGFyZW50IHsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXIgewoJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXRvcCB7Cglib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0IHsKCWJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQoKLmJvcmRlci1ib3R0b20gewoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQoKLmJvcmRlci1sZWZ0IHsKCWJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLTAgewoJYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItdG9wLTAgewoJYm9yZGVyLXRvcDogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0LTAgewoJYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItYm90dG9tLTAgewoJYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWxlZnQtMCB7Cglib3JkZXItbGVmdDogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXByaW1hcnkgewoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItc2Vjb25kYXJ5IHsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXN1Y2Nlc3MgewoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItaW5mbyB7Cglib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKLmJvcmRlci13YXJuaW5nIHsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWRhbmdlciB7Cglib3JkZXItY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsKfQoKLmJvcmRlci1saWdodCB7Cglib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQoKLmJvcmRlci1kYXJrIHsKCWJvcmRlci1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXdoaXRlIHsKCWJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Cgoucm91bmRlZCB7Cglib3JkZXItcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnJvdW5kZWQtdG9wIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50OwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50Owp9Cgoucm91bmRlZC1yaWdodCB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWJvdHRvbSB7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnJvdW5kZWQtbGVmdCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50Owp9Cgoucm91bmRlZC1jaXJjbGUgewoJYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLTAgewoJYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50Owp9CgouY2xlYXJmaXg6OmFmdGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJY2xlYXI6IGJvdGg7Cgljb250ZW50OiAiIjsKfQoKLmQtbm9uZSB7CglkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5kLWlubGluZSB7CglkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWJsb2NrIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50Owp9CgouZC1ibG9jayB7CglkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgouZC10YWJsZSB7CglkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9CgouZC10YWJsZS1yb3cgewoJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KCi5kLXRhYmxlLWNlbGwgewoJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50Owp9CgouZC1mbGV4IHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWZsZXggewoJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5kLXNtLW5vbmUgewoJCWRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKCX0KCQoJLmQtc20taW5saW5lIHsKCQlkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmQtc20taW5saW5lLWJsb2NrIHsKCQlkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtc20tYmxvY2sgewoJCWRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXNtLXRhYmxlIHsKCQlkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS10YWJsZS1yb3cgewoJCWRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS10YWJsZS1jZWxsIHsKCQlkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXNtLWZsZXggewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS1pbmxpbmUtZmxleCB7CgkJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewoJLmQtbWQtbm9uZSB7CgkJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1pbmxpbmUgewoJCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1pbmxpbmUtYmxvY2sgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1ibG9jayB7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtbWQtdGFibGUgewoJCWRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLXRhYmxlLXJvdyB7CgkJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLXRhYmxlLWNlbGwgewoJCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKCX0KCQoJLmQtbWQtZmxleCB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLWlubGluZS1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkuZC1sZy1ub25lIHsKCQlkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWlubGluZSB7CgkJZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWlubGluZS1ibG9jayB7CgkJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWJsb2NrIHsKCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1sZy10YWJsZSB7CgkJZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKCX0KCQoJLmQtbGctdGFibGUtcm93IHsKCQlkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKCX0KCQoJLmQtbGctdGFibGUtY2VsbCB7CgkJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwoJfQoJCgkuZC1sZy1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCX0KCQoJLmQtbGctaW5saW5lLWZsZXggewoJCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CgkuZC14bC1ub25lIHsKCQlkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWlubGluZSB7CgkJZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWlubGluZS1ibG9jayB7CgkJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWJsb2NrIHsKCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC14bC10YWJsZSB7CgkJZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKCX0KCQoJLmQteGwtdGFibGUtcm93IHsKCQlkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKCX0KCQoJLmQteGwtdGFibGUtY2VsbCB7CgkJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwoJfQoJCgkuZC14bC1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCX0KCQoJLmQteGwtaW5saW5lLWZsZXggewoJCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgcHJpbnQgewoJLmQtcHJpbnQtbm9uZSB7CgkJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1pbmxpbmUgewoJCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1pbmxpbmUtYmxvY2sgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1ibG9jayB7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtcHJpbnQtdGFibGUgewoJCWRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LXRhYmxlLXJvdyB7CgkJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LXRhYmxlLWNlbGwgewoJCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKCX0KCQoJLmQtcHJpbnQtZmxleCB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LWlubGluZS1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKCX0KfQoKLmVtYmVkLXJlc3BvbnNpdmUgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmc6IDA7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouZW1iZWQtcmVzcG9uc2l2ZTo6YmVmb3JlIHsKCWRpc3BsYXk6IGJsb2NrOwoJY29udGVudDogIiI7Cn0KCi5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sIC5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwgLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsIC5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwgLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8gewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJbGVmdDogMDsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYm9yZGVyOiAwOwp9CgouZW1iZWQtcmVzcG9uc2l2ZS0yMWJ5OTo6YmVmb3JlIHsKCXBhZGRpbmctdG9wOiA0Mi44NTcxNDI4NTcxJTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7CglwYWRkaW5nLXRvcDogNTYuMjUlOwp9CgouZW1iZWQtcmVzcG9uc2l2ZS00YnkzOjpiZWZvcmUgewoJcGFkZGluZy10b3A6IDc1JTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMWJ5MTo6YmVmb3JlIHsKCXBhZGRpbmctdG9wOiAxMDAlOwp9CgouZmxleC1yb3cgewoJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKfQoKLmZsZXgtY29sdW1uIHsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXJvdy1yZXZlcnNlIHsKCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50Owp9CgouZmxleC1jb2x1bW4tcmV2ZXJzZSB7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcCB7CgktbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CglmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKfQoKLmZsZXgtbm93cmFwIHsKCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcC1yZXZlcnNlIHsKCS1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtZmlsbCB7CgktbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LWdyb3ctMCB7CgktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LWdyb3ctMSB7CgktbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwoJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXNocmluay0wIHsKCS1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CglmbGV4LXNocmluazogMCAhaW1wb3J0YW50Owp9CgouZmxleC1zaHJpbmstMSB7CgktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1zdGFydCB7CgktbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKCS1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9CgouanVzdGlmeS1jb250ZW50LWNlbnRlciB7CgktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCWp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CglqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1hcm91bmQgewoJLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLXN0YXJ0IHsKCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWVuZCB7CgktbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CglhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWNlbnRlciB7CgktbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CglhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1pdGVtcy1iYXNlbGluZSB7CgktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCWFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50Owp9CgouYWxpZ24taXRlbXMtc3RyZXRjaCB7CgktbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtc3RhcnQgewoJLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1lbmQgewoJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWNlbnRlciB7CgktbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWJldHdlZW4gewoJLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CglhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWFyb3VuZCB7CgktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1zdHJldGNoIHsKCS1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1hdXRvIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtc3RhcnQgewoJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtZW5kIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtY2VudGVyIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1zZWxmLWJhc2VsaW5lIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CglhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1zdHJldGNoIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuZmxleC1zbS1yb3cgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1jb2x1bW4gewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1yb3ctcmV2ZXJzZSB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1jb2x1bW4tcmV2ZXJzZSB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS13cmFwIHsKCQktbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXNtLW5vd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20td3JhcC1yZXZlcnNlIHsKCQktbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1maWxsIHsKCQktbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCQlmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1ncm93LTAgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAwICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXNtLWdyb3ctMSB7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDEgIWltcG9ydGFudDsKCQlmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20tc2hyaW5rLTAgewoJCS1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CgkJZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20tc2hyaW5rLTEgewoJCS1tcy1mbGV4LW5lZ2F0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1zdGFydCB7CgkJLW1zLWZsZXgtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1lbmQgewoJCS1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIgewoJCS1tcy1mbGV4LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiB7CgkJLW1zLWZsZXgtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZCB7CgkJLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1zbS1zdGFydCB7CgkJLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXNtLWVuZCB7CgkJLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tY2VudGVyIHsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewoJCS1tcy1mbGV4LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tc3RyZXRjaCB7CgkJLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1zdGFydCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1hcm91bmQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXNtLWF1dG8gewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXNtLXN0YXJ0IHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtc20tZW5kIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1jZW50ZXIgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1iYXNlbGluZSB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1zdHJldGNoIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5mbGV4LW1kLXJvdyB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWNvbHVtbiB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLXJvdy1yZXZlcnNlIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWNvbHVtbi1yZXZlcnNlIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLXdyYXAgewoJCS1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbWQtbm93cmFwIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC13cmFwLXJldmVyc2UgewoJCS1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWZpbGwgewoJCS1tcy1mbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwoJCWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWdyb3ctMCB7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDAgIWltcG9ydGFudDsKCQlmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbWQtZ3Jvdy0xIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC1zaHJpbmstMCB7CgkJLW1zLWZsZXgtbmVnYXRpdmU6IDAgIWltcG9ydGFudDsKCQlmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC1zaHJpbmstMSB7CgkJLW1zLWZsZXgtbmVnYXRpdmU6IDEgIWltcG9ydGFudDsKCQlmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0IHsKCQktbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLWVuZCB7CgkJLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CgkJLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVuIHsKCQktbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHsKCQktbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHsKCQktbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtbWQtZW5kIHsKCQktbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1jZW50ZXIgewoJCS1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1iYXNlbGluZSB7CgkJLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1zdHJldGNoIHsKCQktbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLXN0YXJ0IHsKCQktbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1tZC1lbmQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbWQtY2VudGVyIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1tZC1iZXR3ZWVuIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbWQtYXV0byB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbWQtc3RhcnQgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1tZC1lbmQgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLWNlbnRlciB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmZsZXgtbGctcm93IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctY29sdW1uIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctcm93LXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctY29sdW1uLXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1sZy1ub3dyYXAgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXdyYXAtcmV2ZXJzZSB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctZmlsbCB7CgkJLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CgkJZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctZ3Jvdy0wIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1sZy1ncm93LTEgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXNocmluay0wIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXNocmluay0xIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnQgewoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHsKCQktbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LWxnLWJldHdlZW4gewoJCS1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1sZy1hcm91bmQgewoJCS1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtbGctc3RhcnQgewoJCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1sZy1lbmQgewoJCS1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLWNlbnRlciB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHsKCQktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctc3RhcnQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LWxnLWVuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1sZy1jZW50ZXIgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LWxnLWJldHdlZW4gewoJCS1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctc3RyZXRjaCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1sZy1hdXRvIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1sZy1zdGFydCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLWxnLWVuZCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctY2VudGVyIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctc3RyZXRjaCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLmZsZXgteGwtcm93IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtY29sdW1uIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtcm93LXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtY29sdW1uLXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC14bC1ub3dyYXAgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtZmlsbCB7CgkJLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CgkJZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtZ3Jvdy0wIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC14bC1ncm93LTEgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXNocmluay0wIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXNocmluay0xIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgewoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtZW5kIHsKCQktbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW4gewoJCS1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC14bC1hcm91bmQgewoJCS1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMteGwtc3RhcnQgewoJCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy14bC1lbmQgewoJCS1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLWNlbnRlciB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKCQktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtc3RhcnQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXhsLWVuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC14bC1jZW50ZXIgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4gewoJCS1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtYXJvdW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi14bC1hdXRvIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi14bC1zdGFydCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXhsLWVuZCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtY2VudGVyIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtYmFzZWxpbmUgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtc3RyZXRjaCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KfQoKLmZsb2F0LWxlZnQgewoJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKfQoKLmZsb2F0LXJpZ2h0IHsKCWZsb2F0OiByaWdodCAhaW1wb3J0YW50Owp9CgouZmxvYXQtbm9uZSB7CglmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5mbG9hdC1zbS1sZWZ0IHsKCQlmbG9hdDogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkuZmxvYXQtc20tcmlnaHQgewoJCWZsb2F0OiByaWdodCAhaW1wb3J0YW50OwoJfQoJCgkuZmxvYXQtc20tbm9uZSB7CgkJZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkuZmxvYXQtbWQtbGVmdCB7CgkJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LW1kLXJpZ2h0IHsKCQlmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LW1kLW5vbmUgewoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmZsb2F0LWxnLWxlZnQgewoJCWZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbG9hdC1sZy1yaWdodCB7CgkJZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbG9hdC1sZy1ub25lIHsKCQlmbG9hdDogbm9uZSAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CgkuZmxvYXQteGwtbGVmdCB7CgkJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LXhsLXJpZ2h0IHsKCQlmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LXhsLW5vbmUgewoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9Cn0KCi5wb3NpdGlvbi1zdGF0aWMgewoJcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tcmVsYXRpdmUgewoJcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7Cn0KCi5wb3NpdGlvbi1hYnNvbHV0ZSB7Cglwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKfQoKLnBvc2l0aW9uLWZpeGVkIHsKCXBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tc3RpY2t5IHsKCXBvc2l0aW9uOiAtd2Via2l0LXN0aWNreSAhaW1wb3J0YW50OwoJcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50Owp9CgouZml4ZWQtdG9wIHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXJpZ2h0OiAwOwoJbGVmdDogMDsKCXotaW5kZXg6IDEwMzA7Cn0KCi5maXhlZC1ib3R0b20gewoJcG9zaXRpb246IGZpeGVkOwoJcmlnaHQ6IDA7Cglib3R0b206IDA7CglsZWZ0OiAwOwoJei1pbmRleDogMTAzMDsKfQoKQHN1cHBvcnRzIChwb3NpdGlvbjogc3RpY2t5KSB7Cgkuc3RpY2t5LXRvcCB7CgkJcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwoJCXBvc2l0aW9uOiBzdGlja3k7CgkJdG9wOiAwOwoJCXotaW5kZXg6IDEwMjA7Cgl9Cn0KCi5zci1vbmx5IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXdpZHRoOiAxcHg7CgloZWlnaHQ6IDFweDsKCXBhZGRpbmc6IDA7CglvdmVyZmxvdzogaGlkZGVuOwoJY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cglib3JkZXI6IDA7Cn0KCi5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsIC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7Cglwb3NpdGlvbjogc3RhdGljOwoJd2lkdGg6IGF1dG87CgloZWlnaHQ6IGF1dG87CglvdmVyZmxvdzogdmlzaWJsZTsKCWNsaXA6IGF1dG87Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Cgouc2hhZG93LXNtIHsKCWJveC1zaGFkb3c6IDAgLjEyNXJlbSAuMjVyZW0gcmdiYSgwLCAwLCAwLCAuMDc1KSAhaW1wb3J0YW50Owp9Cgouc2hhZG93IHsKCWJveC1zaGFkb3c6IDAgLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIC4xNSkgIWltcG9ydGFudDsKfQoKLnNoYWRvdy1sZyB7Cglib3gtc2hhZG93OiAwIDFyZW0gM3JlbSByZ2JhKDAsIDAsIDAsIC4xNzUpICFpbXBvcnRhbnQ7Cn0KCi5zaGFkb3ctbm9uZSB7Cglib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cn0KCi53LTI1IHsKCXdpZHRoOiAyNSUgIWltcG9ydGFudDsKfQoKLnctNTAgewoJd2lkdGg6IDUwJSAhaW1wb3J0YW50Owp9Cgoudy03NSB7Cgl3aWR0aDogNzUlICFpbXBvcnRhbnQ7Cn0KCi53LTEwMCB7Cgl3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Cgoudy1hdXRvIHsKCXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5oLTI1IHsKCWhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5oLTUwIHsKCWhlaWdodDogNTAlICFpbXBvcnRhbnQ7Cn0KCi5oLTc1IHsKCWhlaWdodDogNzUlICFpbXBvcnRhbnQ7Cn0KCi5oLTEwMCB7CgloZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLmgtYXV0byB7CgloZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLm13LTEwMCB7CgltYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLm1oLTEwMCB7CgltYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5tLTAgewoJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi5tdC0wLCAubXktMCB7CgltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5tci0wLCAubXgtMCB7CgltYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLm1iLTAsIC5teS0wIHsKCW1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKfQoKLm1sLTAsIC5teC0wIHsKCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5tLTEgewoJbWFyZ2luOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTEsIC5teS0xIHsKCW1hcmdpbi10b3A6IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubXItMSwgLm14LTEgewoJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTEsIC5teS0xIHsKCW1hcmdpbi1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMSwgLm14LTEgewoJbWFyZ2luLWxlZnQ6IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubS0yIHsKCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTIsIC5teS0yIHsKCW1hcmdpbi10b3A6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0yLCAubXgtMiB7CgltYXJnaW4tcmlnaHQ6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi0yLCAubXktMiB7CgltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMiwgLm14LTIgewoJbWFyZ2luLWxlZnQ6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTMgewoJbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tdC0zLCAubXktMyB7CgltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0zLCAubXgtMyB7CgltYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoKLm1iLTMsIC5teS0zIHsKCW1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoKLm1sLTMsIC5teC0zIHsKCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTQgewoJbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTQsIC5teS00IHsKCW1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubXItNCwgLm14LTQgewoJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTQsIC5teS00IHsKCW1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtNCwgLm14LTQgewoJbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubS01IHsKCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9CgoubXQtNSwgLm15LTUgewoJbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9CgoubXItNSwgLm14LTUgewoJbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi01LCAubXktNSB7CgltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tbC01LCAubXgtNSB7CgltYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9CgoucC0wIHsKCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoKLnB0LTAsIC5weS0wIHsKCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5wci0wLCAucHgtMCB7CglwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wYi0wLCAucHktMCB7CglwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgoucGwtMCwgLnB4LTAgewoJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wLTEgewoJcGFkZGluZzogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wdC0xLCAucHktMSB7CglwYWRkaW5nLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0xLCAucHgtMSB7CglwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTEsIC5weS0xIHsKCXBhZGRpbmctYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBsLTEsIC5weC0xIHsKCXBhZGRpbmctbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTIgewoJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTIsIC5weS0yIHsKCXBhZGRpbmctdG9wOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucHItMiwgLnB4LTIgewoJcGFkZGluZy1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTIsIC5weS0yIHsKCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMiwgLnB4LTIgewoJcGFkZGluZy1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucC0zIHsKCXBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKfQoKLnB0LTMsIC5weS0zIHsKCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0zLCAucHgtMyB7CglwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wYi0zLCAucHktMyB7CglwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMywgLnB4LTMgewoJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTQgewoJcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wdC00LCAucHktNCB7CglwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci00LCAucHgtNCB7CglwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTQsIC5weS00IHsKCXBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnBsLTQsIC5weC00IHsKCXBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTUgewoJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50Owp9CgoucHQtNSwgLnB5LTUgewoJcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKfQoKLnByLTUsIC5weC01IHsKCXBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLnBiLTUsIC5weS01IHsKCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5wbC01LCAucHgtNSB7CglwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLm0tYXV0byB7CgltYXJnaW46IGF1dG8gIWltcG9ydGFudDsKfQoKLm10LWF1dG8sIC5teS1hdXRvIHsKCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKfQoKLm1yLWF1dG8sIC5teC1hdXRvIHsKCW1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgoubWItYXV0bywgLm15LWF1dG8gewoJbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50Owp9CgoubWwtYXV0bywgLm14LWF1dG8gewoJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkubS1zbS0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTAsIC5teS1zbS0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0wLCAubXgtc20tMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1zbS0wLCAubXktc20tMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMCwgLm14LXNtLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1zbS0xLCAubXktc20tMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0xLCAubXgtc20tMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTEsIC5teS1zbS0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXNtLTEsIC5teC1zbS0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTIsIC5teS1zbS0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItc20tMiwgLm14LXNtLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTIsIC5teS1zbS0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMiwgLm14LXNtLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1zbS0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTMsIC5teS1zbS0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0zLCAubXgtc20tMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1zbS0zLCAubXktc20tMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMywgLm14LXNtLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1zbS00LCAubXktc20tNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS00LCAubXgtc20tNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTQsIC5teS1zbS00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXNtLTQsIC5teC1zbS00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtc20tNSwgLm15LXNtLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLXNtLTUsIC5teC1zbS01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTUsIC5teS1zbS01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1zbS01LCAubXgtc20tNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMCwgLnB5LXNtLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS0wLCAucHgtc20tMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMCwgLnB5LXNtLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0wLCAucHgtc20tMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXNtLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMSwgLnB5LXNtLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTEsIC5weC1zbS0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXNtLTEsIC5weS1zbS0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0xLCAucHgtc20tMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXNtLTIsIC5weS1zbS0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTIsIC5weC1zbS0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMiwgLnB5LXNtLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtc20tMiwgLnB4LXNtLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMywgLnB5LXNtLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS0zLCAucHgtc20tMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMywgLnB5LXNtLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0zLCAucHgtc20tMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXNtLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tNCwgLnB5LXNtLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTQsIC5weC1zbS00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXNtLTQsIC5weS1zbS00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS00LCAucHgtc20tNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tNSwgLnB5LXNtLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS01LCAucHgtc20tNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tNSwgLnB5LXNtLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS01LCAucHgtc20tNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtc20tYXV0bywgLm15LXNtLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLXNtLWF1dG8sIC5teC1zbS1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLWF1dG8sIC5teS1zbS1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1zbS1hdXRvLCAubXgtc20tYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkubS1tZC0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTAsIC5teS1tZC0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0wLCAubXgtbWQtMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1tZC0wLCAubXktbWQtMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMCwgLm14LW1kLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1tZC0xLCAubXktbWQtMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0xLCAubXgtbWQtMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTEsIC5teS1tZC0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLW1kLTEsIC5teC1tZC0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTIsIC5teS1tZC0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItbWQtMiwgLm14LW1kLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTIsIC5teS1tZC0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMiwgLm14LW1kLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1tZC0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTMsIC5teS1tZC0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0zLCAubXgtbWQtMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1tZC0zLCAubXktbWQtMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMywgLm14LW1kLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1tZC00LCAubXktbWQtNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC00LCAubXgtbWQtNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTQsIC5teS1tZC00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLW1kLTQsIC5teC1tZC00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtbWQtNSwgLm15LW1kLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLW1kLTUsIC5teC1tZC01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTUsIC5teS1tZC01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1tZC01LCAubXgtbWQtNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMCwgLnB5LW1kLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC0wLCAucHgtbWQtMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMCwgLnB5LW1kLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0wLCAucHgtbWQtMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLW1kLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMSwgLnB5LW1kLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTEsIC5weC1tZC0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLW1kLTEsIC5weS1tZC0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0xLCAucHgtbWQtMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LW1kLTIsIC5weS1tZC0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTIsIC5weC1tZC0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMiwgLnB5LW1kLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtbWQtMiwgLnB4LW1kLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMywgLnB5LW1kLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC0zLCAucHgtbWQtMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMywgLnB5LW1kLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0zLCAucHgtbWQtMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLW1kLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtNCwgLnB5LW1kLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTQsIC5weC1tZC00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLW1kLTQsIC5weS1tZC00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC00LCAucHgtbWQtNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtNSwgLnB5LW1kLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC01LCAucHgtbWQtNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtNSwgLnB5LW1kLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC01LCAucHgtbWQtNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtbWQtYXV0bywgLm15LW1kLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLW1kLWF1dG8sIC5teC1tZC1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLWF1dG8sIC5teS1tZC1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1tZC1hdXRvLCAubXgtbWQtYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkubS1sZy0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTAsIC5teS1sZy0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0wLCAubXgtbGctMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1sZy0wLCAubXktbGctMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMCwgLm14LWxnLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1sZy0xLCAubXktbGctMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0xLCAubXgtbGctMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTEsIC5teS1sZy0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLWxnLTEsIC5teC1sZy0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTIsIC5teS1sZy0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItbGctMiwgLm14LWxnLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTIsIC5teS1sZy0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMiwgLm14LWxnLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1sZy0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTMsIC5teS1sZy0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0zLCAubXgtbGctMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1sZy0zLCAubXktbGctMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMywgLm14LWxnLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1sZy00LCAubXktbGctNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy00LCAubXgtbGctNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTQsIC5teS1sZy00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLWxnLTQsIC5teC1sZy00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtbGctNSwgLm15LWxnLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLWxnLTUsIC5teC1sZy01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTUsIC5teS1sZy01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1sZy01LCAubXgtbGctNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMCwgLnB5LWxnLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy0wLCAucHgtbGctMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMCwgLnB5LWxnLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0wLCAucHgtbGctMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLWxnLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMSwgLnB5LWxnLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTEsIC5weC1sZy0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLWxnLTEsIC5weS1sZy0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0xLCAucHgtbGctMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LWxnLTIsIC5weS1sZy0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTIsIC5weC1sZy0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMiwgLnB5LWxnLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtbGctMiwgLnB4LWxnLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMywgLnB5LWxnLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy0zLCAucHgtbGctMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMywgLnB5LWxnLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0zLCAucHgtbGctMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLWxnLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctNCwgLnB5LWxnLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTQsIC5weC1sZy00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLWxnLTQsIC5weS1sZy00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy00LCAucHgtbGctNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctNSwgLnB5LWxnLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy01LCAucHgtbGctNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctNSwgLnB5LWxnLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy01LCAucHgtbGctNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtbGctYXV0bywgLm15LWxnLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLWxnLWF1dG8sIC5teC1sZy1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLWF1dG8sIC5teS1sZy1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1sZy1hdXRvLCAubXgtbGctYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLm0teGwtMCB7CgkJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0wLCAubXkteGwtMCB7CgkJbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMCwgLm14LXhsLTAgewoJCW1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkubWIteGwtMCwgLm15LXhsLTAgewoJCW1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTAsIC5teC14bC0wIHsKCQltYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwoJfQoJCgkubS14bC0xIHsKCQltYXJnaW46IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQteGwtMSwgLm15LXhsLTEgewoJCW1hcmdpbi10b3A6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMSwgLm14LXhsLTEgewoJCW1hcmdpbi1yaWdodDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC0xLCAubXkteGwtMSB7CgkJbWFyZ2luLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC14bC0xLCAubXgteGwtMSB7CgkJbWFyZ2luLWxlZnQ6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC0yIHsKCQltYXJnaW46IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0yLCAubXkteGwtMiB7CgkJbWFyZ2luLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLXhsLTIsIC5teC14bC0yIHsKCQltYXJnaW4tcmlnaHQ6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC0yLCAubXkteGwtMiB7CgkJbWFyZ2luLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTIsIC5teC14bC0yIHsKCQltYXJnaW4tbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm0teGwtMyB7CgkJbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0zLCAubXkteGwtMyB7CgkJbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMywgLm14LXhsLTMgewoJCW1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWIteGwtMywgLm15LXhsLTMgewoJCW1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTMsIC5teC14bC0zIHsKCQltYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC00IHsKCQltYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQteGwtNCwgLm15LXhsLTQgewoJCW1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtNCwgLm14LXhsLTQgewoJCW1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC00LCAubXkteGwtNCB7CgkJbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC14bC00LCAubXgteGwtNCB7CgkJbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC01IHsKCQltYXJnaW46IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXhsLTUsIC5teS14bC01IHsKCQltYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci14bC01LCAubXgteGwtNSB7CgkJbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC01LCAubXkteGwtNSB7CgkJbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwteGwtNSwgLm14LXhsLTUgewoJCW1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTAgewoJCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTAsIC5weS14bC0wIHsKCQlwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtMCwgLnB4LXhsLTAgewoJCXBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTAsIC5weS14bC0wIHsKCQlwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMCwgLnB4LXhsLTAgewoJCXBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwoJfQoJCgkucC14bC0xIHsKCQlwYWRkaW5nOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTEsIC5weS14bC0xIHsKCQlwYWRkaW5nLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC0xLCAucHgteGwtMSB7CgkJcGFkZGluZy1yaWdodDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wYi14bC0xLCAucHkteGwtMSB7CgkJcGFkZGluZy1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMSwgLnB4LXhsLTEgewoJCXBhZGRpbmctbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTIgewoJCXBhZGRpbmc6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wdC14bC0yLCAucHkteGwtMiB7CgkJcGFkZGluZy10b3A6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC0yLCAucHgteGwtMiB7CgkJcGFkZGluZy1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTIsIC5weS14bC0yIHsKCQlwYWRkaW5nLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBsLXhsLTIsIC5weC14bC0yIHsKCQlwYWRkaW5nLWxlZnQ6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTMgewoJCXBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTMsIC5weS14bC0zIHsKCQlwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtMywgLnB4LXhsLTMgewoJCXBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTMsIC5weS14bC0zIHsKCQlwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMywgLnB4LXhsLTMgewoJCXBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucC14bC00IHsKCQlwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTQsIC5weS14bC00IHsKCQlwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC00LCAucHgteGwtNCB7CgkJcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wYi14bC00LCAucHkteGwtNCB7CgkJcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtNCwgLnB4LXhsLTQgewoJCXBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTUgewoJCXBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTUsIC5weS14bC01IHsKCQlwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtNSwgLnB4LXhsLTUgewoJCXBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTUsIC5weS14bC01IHsKCQlwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtNSwgLnB4LXhsLTUgewoJCXBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC1hdXRvIHsKCQltYXJnaW46IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm10LXhsLWF1dG8sIC5teS14bC1hdXRvIHsKCQltYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci14bC1hdXRvLCAubXgteGwtYXV0byB7CgkJbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC1hdXRvLCAubXkteGwtYXV0byB7CgkJbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubWwteGwtYXV0bywgLm14LXhsLWF1dG8gewoJCW1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9Cn0KCi50ZXh0LW1vbm9zcGFjZSB7Cglmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9CgoudGV4dC1qdXN0aWZ5IHsKCXRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDsKfQoKLnRleHQtbm93cmFwIHsKCXdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKfQoKLnRleHQtdHJ1bmNhdGUgewoJb3ZlcmZsb3c6IGhpZGRlbjsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLnRleHQtbGVmdCB7Cgl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXJpZ2h0IHsKCXRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWNlbnRlciB7Cgl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkudGV4dC1zbS1sZWZ0IHsKCQl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS50ZXh0LXNtLXJpZ2h0IHsKCQl0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC1zbS1jZW50ZXIgewoJCXRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS50ZXh0LW1kLWxlZnQgewoJCXRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQtbWQtcmlnaHQgewoJCXRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cgl9CgkKCS50ZXh0LW1kLWNlbnRlciB7CgkJdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLnRleHQtbGctbGVmdCB7CgkJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC1sZy1yaWdodCB7CgkJdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQtbGctY2VudGVyIHsKCQl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLnRleHQteGwtbGVmdCB7CgkJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC14bC1yaWdodCB7CgkJdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQteGwtY2VudGVyIHsKCQl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KfQoKLnRleHQtbG93ZXJjYXNlIHsKCXRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtdXBwZXJjYXNlIHsKCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtY2FwaXRhbGl6ZSB7Cgl0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50Owp9CgouZm9udC13ZWlnaHQtbGlnaHQgewoJZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50Owp9CgouZm9udC13ZWlnaHQtbm9ybWFsIHsKCWZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LWJvbGQgewoJZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Owp9CgouZm9udC1pdGFsaWMgewoJZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlIHsKCWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXByaW1hcnkgewoJY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsKfQoKYS50ZXh0LXByaW1hcnk6aG92ZXIsIGEudGV4dC1wcmltYXJ5OmZvY3VzIHsKCWNvbG9yOiAjMDA2MmNjICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXNlY29uZGFyeSB7Cgljb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgphLnRleHQtc2Vjb25kYXJ5OmhvdmVyLCBhLnRleHQtc2Vjb25kYXJ5OmZvY3VzIHsKCWNvbG9yOiAjNTQ1YjYyICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXN1Y2Nlc3MgewoJY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDsKfQoKYS50ZXh0LXN1Y2Nlc3M6aG92ZXIsIGEudGV4dC1zdWNjZXNzOmZvY3VzIHsKCWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWluZm8gewoJY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKYS50ZXh0LWluZm86aG92ZXIsIGEudGV4dC1pbmZvOmZvY3VzIHsKCWNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdhcm5pbmcgewoJY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKYS50ZXh0LXdhcm5pbmc6aG92ZXIsIGEudGV4dC13YXJuaW5nOmZvY3VzIHsKCWNvbG9yOiAjZDM5ZTAwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWRhbmdlciB7Cgljb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50Owp9CgphLnRleHQtZGFuZ2VyOmhvdmVyLCBhLnRleHQtZGFuZ2VyOmZvY3VzIHsKCWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWxpZ2h0IHsKCWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1saWdodDpob3ZlciwgYS50ZXh0LWxpZ2h0OmZvY3VzIHsKCWNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWRhcmsgewoJY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKYS50ZXh0LWRhcms6aG92ZXIsIGEudGV4dC1kYXJrOmZvY3VzIHsKCWNvbG9yOiAjMWQyMTI0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWJvZHkgewoJY29sb3I6ICMyMTI1MjkgIWltcG9ydGFudDsKfQoKLnRleHQtbXV0ZWQgewoJY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKLnRleHQtYmxhY2stNTAgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlLTUwIHsKCWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KSAhaW1wb3J0YW50Owp9CgoudGV4dC1oaWRlIHsKCWZvbnQ6IDAvMCBhOwoJY29sb3I6IHRyYW5zcGFyZW50OwoJdGV4dC1zaGFkb3c6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogMDsKfQoKLnZpc2libGUgewoJdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9CgouaW52aXNpYmxlIHsKCXZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgpAbWVkaWEgcHJpbnQgewoJKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7CgkJdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKCQlib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCWE6bm90KC5idG4pIHsKCQl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCX0KCQoJYWJiclt0aXRsZV06OmFmdGVyIHsKCQljb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKCX0KCQoJcHJlIHsKCQl3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsKCX0KCQoJcHJlLCBibG9ja3F1b3RlIHsKCQlib3JkZXI6IDFweCBzb2xpZCAjYWRiNWJkOwoJCXBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKCX0KCQoJdGhlYWQgewoJCWRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKCX0KCQoJdHIsIGltZyB7CgkJcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwoJfQoJCglwLCBoMiwgaDMgewoJCW9ycGhhbnM6IDM7CgkJd2lkb3dzOiAzOwoJfQoJCgloMiwgaDMgewoJCXBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOwoJfQoJCglAcGFnZSB7CgkJc2l6ZTogYTM7Cgl9CgkKCWJvZHkgewoJCW1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDsKCX0KCQoJLmNvbnRhaW5lciB7CgkJbWluLXdpZHRoOiA5OTJweCAhaW1wb3J0YW50OwoJfQoJCgkubmF2YmFyIHsKCQlkaXNwbGF5OiBub25lOwoJfQoJCgkuYmFkZ2UgewoJCWJvcmRlcjogMXB4IHNvbGlkICMwMDA7Cgl9CgkKCS50YWJsZSB7CgkJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUgdGQsIC50YWJsZSB0aCB7CgkJYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUtYm9yZGVyZWQgdGgsIC50YWJsZS1ib3JkZXJlZCB0ZCB7CgkJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUtZGFyayB7CgkJY29sb3I6IGluaGVyaXQ7Cgl9CgkKCS50YWJsZS1kYXJrIHRoLCAudGFibGUtZGFyayB0ZCwgLnRhYmxlLWRhcmsgdGhlYWQgdGgsIC50YWJsZS1kYXJrIHRib2R5ICsgdGJvZHkgewoJCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKCX0KCQoJLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKCQljb2xvcjogaW5oZXJpdDsKCQlib3JkZXItY29sb3I6ICNkZWUyZTY7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/prefixed-bootstrap2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjpyb290IHsKCS0tYmx1ZTogIzAwN2JmZjsKCS0taW5kaWdvOiAjNjYxMGYyOwoJLS1wdXJwbGU6ICM2ZjQyYzE7CgktLXBpbms6ICNlODNlOGM7CgktLXJlZDogI2RjMzU0NTsKCS0tb3JhbmdlOiAjZmQ3ZTE0OwoJLS15ZWxsb3c6ICNmZmMxMDc7CgktLWdyZWVuOiAjMjhhNzQ1OwoJLS10ZWFsOiAjMjBjOTk3OwoJLS1jeWFuOiAjMTdhMmI4OwoJLS13aGl0ZTogI2ZmZjsKCS0tZ3JheTogIzZjNzU3ZDsKCS0tZ3JheS1kYXJrOiAjMzQzYTQwOwoJLS1wcmltYXJ5OiAjMDA3YmZmOwoJLS1zZWNvbmRhcnk6ICM2Yzc1N2Q7CgktLXN1Y2Nlc3M6ICMyOGE3NDU7CgktLWluZm86ICMxN2EyYjg7CgktLXdhcm5pbmc6ICNmZmMxMDc7CgktLWRhbmdlcjogI2RjMzU0NTsKCS0tbGlnaHQ6ICNmOGY5ZmE7CgktLWRhcms6ICMzNDNhNDA7CgktLWJyZWFrcG9pbnQteHM6IDA7CgktLWJyZWFrcG9pbnQtc206IDU3NnB4OwoJLS1icmVha3BvaW50LW1kOiA3NjhweDsKCS0tYnJlYWtwb2ludC1sZzogOTkycHg7CgktLWJyZWFrcG9pbnQteGw6IDEyMDBweDsKCS0tZm9udC1mYW1pbHktc2Fucy1zZXJpZjogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBTZWdvZSBVSSwgUm9ib3RvLCBIZWx2ZXRpY2EgTmV1ZSwgQXJpYWwsIHNhbnMtc2VyaWYsIEFwcGxlIENvbG9yIEVtb2ppLCBTZWdvZSBVSSBFbW9qaSwgU2Vnb2UgVUkgU3ltYm9sLCBOb3RvIENvbG9yIEVtb2ppOwoJLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgTGliZXJhdGlvbiBNb25vLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlOwp9CgoqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCmh0bWwgewoJZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CglsaW5lLWhlaWdodDogMS4xNTsKCS13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKCS1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwoJLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7Cgktd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7Cn0KCkAtbXMtdmlld3BvcnQgewoJd2lkdGg6IGRldmljZS13aWR0aDsKfQoKYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgpib2R5IHsKCW1hcmdpbjogMDsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7Cglmb250LXNpemU6IDFyZW07Cglmb250LXdlaWdodDogNDAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjMjEyNTI5OwoJdGV4dC1hbGlnbjogbGVmdDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KClt0YWJpbmRleD0iLTEiXTpmb2N1cyB7CglvdXRsaW5lOiAwICFpbXBvcnRhbnQ7Cn0KCmhyIHsKCWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwoJaGVpZ2h0OiAwOwoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYgewoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgpwIHsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAxcmVtOwp9CgphYmJyW3RpdGxlXSwgYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsKCWN1cnNvcjogaGVscDsKCWJvcmRlci1ib3R0b206IDA7Cn0KCmFkZHJlc3MgewoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CgpvbCwgdWwsIGRsIHsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAxcmVtOwp9CgpvbCBvbCwgdWwgdWwsIG9sIHVsLCB1bCBvbCB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgpkdCB7Cglmb250LXdlaWdodDogNzAwOwp9CgpkZCB7CgltYXJnaW4tYm90dG9tOiAuNXJlbTsKCW1hcmdpbi1sZWZ0OiAwOwp9CgpibG9ja3F1b3RlIHsKCW1hcmdpbjogMCAwIDFyZW07Cn0KCmRmbiB7Cglmb250LXN0eWxlOiBpdGFsaWM7Cn0KCmIsIHN0cm9uZyB7Cglmb250LXdlaWdodDogYm9sZGVyOwp9CgpzbWFsbCB7Cglmb250LXNpemU6IDgwJTsKfQoKc3ViLCBzdXAgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZm9udC1zaXplOiA3NSU7CglsaW5lLWhlaWdodDogMDsKCXZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKc3ViIHsKCWJvdHRvbTogLS4yNWVtOwp9CgpzdXAgewoJdG9wOiAtLjVlbTsKfQoKYSB7Cgljb2xvcjogIzAwN2JmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsKfQoKYTpob3ZlciB7Cgljb2xvcjogIzAwNTZiMzsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKSB7Cgljb2xvcjogaW5oZXJpdDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXIsIGE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmZvY3VzIHsKCWNvbG9yOiBpbmhlcml0OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7CglvdXRsaW5lOiAwOwp9CgpwcmUsIGNvZGUsIGtiZCwgc2FtcCB7Cglmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwoJZm9udC1zaXplOiAxZW07Cn0KCnByZSB7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCW92ZXJmbG93OiBhdXRvOwoJLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7Cn0KCmZpZ3VyZSB7CgltYXJnaW46IDAgMCAxcmVtOwp9CgppbWcgewoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWJvcmRlci1zdHlsZTogbm9uZTsKfQoKc3ZnIHsKCW92ZXJmbG93OiBoaWRkZW47Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Cgp0YWJsZSB7Cglib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9CgpjYXB0aW9uIHsKCXBhZGRpbmctdG9wOiAuNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjc1cmVtOwoJY29sb3I6ICM2Yzc1N2Q7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJY2FwdGlvbi1zaWRlOiBib3R0b207Cn0KCnRoIHsKCXRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCmxhYmVsIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgpidXR0b24gewoJYm9yZGVyLXJhZGl1czogMDsKfQoKYnV0dG9uOmZvY3VzIHsKCW91dGxpbmU6IDFweCBkb3R0ZWQ7CglvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7Cn0KCmlucHV0LCBidXR0b24sIHNlbGVjdCwgb3B0Z3JvdXAsIHRleHRhcmVhIHsKCW1hcmdpbjogMDsKCWZvbnQtZmFtaWx5OiBpbmhlcml0OwoJZm9udC1zaXplOiBpbmhlcml0OwoJbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCmJ1dHRvbiwgaW5wdXQgewoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmJ1dHRvbiwgc2VsZWN0IHsKCXRleHQtdHJhbnNmb3JtOiBub25lOwp9CgpidXR0b24sIGh0bWwgW3R5cGU9ImJ1dHRvbiJdLCBbdHlwZT0icmVzZXQiXSwgW3R5cGU9InN1Ym1pdCJdIHsKCS13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CgpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsIFt0eXBlPSJidXR0b24iXTo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9InJlc2V0Il06Oi1tb3otZm9jdXMtaW5uZXIsIFt0eXBlPSJzdWJtaXQiXTo6LW1vei1mb2N1cy1pbm5lciB7CglwYWRkaW5nOiAwOwoJYm9yZGVyLXN0eWxlOiBub25lOwp9CgppbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7CglwYWRkaW5nOiAwOwp9CgppbnB1dFt0eXBlPSJkYXRlIl0sIGlucHV0W3R5cGU9InRpbWUiXSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSwgaW5wdXRbdHlwZT0ibW9udGgiXSB7Cgktd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7Cn0KCnRleHRhcmVhIHsKCW92ZXJmbG93OiBhdXRvOwoJcmVzaXplOiB2ZXJ0aWNhbDsKfQoKZmllbGRzZXQgewoJbWluLXdpZHRoOiAwOwoJcGFkZGluZzogMDsKCW1hcmdpbjogMDsKCWJvcmRlcjogMDsKfQoKbGVnZW5kIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7CgltYXgtd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAwOwoJbWFyZ2luLWJvdHRvbTogLjVyZW07Cglmb250LXNpemU6IDEuNXJlbTsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0OwoJY29sb3I6IGluaGVyaXQ7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Cgpwcm9ncmVzcyB7Cgl2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KClt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwgW3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKCWhlaWdodDogYXV0bzsKfQoKW3R5cGU9InNlYXJjaCJdIHsKCW91dGxpbmUtb2Zmc2V0OiAtMnB4OwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgpbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sIFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewoJZm9udDogaW5oZXJpdDsKCS13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CgpvdXRwdXQgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgpzdW1tYXJ5IHsKCWRpc3BsYXk6IGxpc3QtaXRlbTsKCWN1cnNvcjogcG9pbnRlcjsKfQoKdGVtcGxhdGUgewoJZGlzcGxheTogbm9uZTsKfQoKW2hpZGRlbl0gewoJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAuaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwoJZm9udC1mYW1pbHk6IGluaGVyaXQ7Cglmb250LXdlaWdodDogNTAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKCWNvbG9yOiBpbmhlcml0Owp9CgpoMSwgLmgxIHsKCWZvbnQtc2l6ZTogMi41cmVtOwp9CgpoMiwgLmgyIHsKCWZvbnQtc2l6ZTogMnJlbTsKfQoKaDMsIC5oMyB7Cglmb250LXNpemU6IDEuNzVyZW07Cn0KCmg0LCAuaDQgewoJZm9udC1zaXplOiAxLjVyZW07Cn0KCmg1LCAuaDUgewoJZm9udC1zaXplOiAxLjI1cmVtOwp9CgpoNiwgLmg2IHsKCWZvbnQtc2l6ZTogMXJlbTsKfQoKLmxlYWQgewoJZm9udC1zaXplOiAxLjI1cmVtOwoJZm9udC13ZWlnaHQ6IDMwMDsKfQoKLmRpc3BsYXktMSB7Cglmb250LXNpemU6IDZyZW07Cglmb250LXdlaWdodDogMzAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKfQoKLmRpc3BsYXktMiB7Cglmb250LXNpemU6IDUuNXJlbTsKCWZvbnQtd2VpZ2h0OiAzMDA7CglsaW5lLWhlaWdodDogMS4yOwp9CgouZGlzcGxheS0zIHsKCWZvbnQtc2l6ZTogNC41cmVtOwoJZm9udC13ZWlnaHQ6IDMwMDsKCWxpbmUtaGVpZ2h0OiAxLjI7Cn0KCi5kaXNwbGF5LTQgewoJZm9udC1zaXplOiAzLjVyZW07Cglmb250LXdlaWdodDogMzAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKfQoKaHIgewoJbWFyZ2luLXRvcDogMXJlbTsKCW1hcmdpbi1ib3R0b206IDFyZW07Cglib3JkZXI6IDA7Cglib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMSk7Cn0KCnNtYWxsLCAuc21hbGwgewoJZm9udC1zaXplOiA4MCU7Cglmb250LXdlaWdodDogNDAwOwp9CgptYXJrLCAubWFyayB7CglwYWRkaW5nOiAuMmVtOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoKLmxpc3QtdW5zdHlsZWQgewoJcGFkZGluZy1sZWZ0OiAwOwoJbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lIHsKCXBhZGRpbmctbGVmdDogMDsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5saXN0LWlubGluZS1pdGVtIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CgltYXJnaW4tcmlnaHQ6IC41cmVtOwp9CgouaW5pdGlhbGlzbSB7Cglmb250LXNpemU6IDkwJTsKCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi5ibG9ja3F1b3RlIHsKCW1hcmdpbi1ib3R0b206IDFyZW07Cglmb250LXNpemU6IDEuMjVyZW07Cn0KCi5ibG9ja3F1b3RlLWZvb3RlciB7CglkaXNwbGF5OiBibG9jazsKCWZvbnQtc2l6ZTogODAlOwoJY29sb3I6ICM2Yzc1N2Q7Cn0KCi5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHsKCWNvbnRlbnQ6ICLigJTCoCI7Cn0KCi5pbWctZmx1aWQgewoJbWF4LXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBhdXRvOwp9CgouaW1nLXRodW1ibmFpbCB7CglwYWRkaW5nOiAuMjVyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKCW1heC13aWR0aDogMTAwJTsKCWhlaWdodDogYXV0bzsKfQoKLmZpZ3VyZSB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5maWd1cmUtaW1nIHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwoJbGluZS1oZWlnaHQ6IDE7Cn0KCi5maWd1cmUtY2FwdGlvbiB7Cglmb250LXNpemU6IDkwJTsKCWNvbG9yOiAjNmM3NTdkOwp9Cgpjb2RlIHsKCWZvbnQtc2l6ZTogODcuNSU7Cgljb2xvcjogI2U4M2U4YzsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KCmEgPiBjb2RlIHsKCWNvbG9yOiBpbmhlcml0Owp9CgprYmQgewoJcGFkZGluZzogLjJyZW0gLjRyZW07Cglmb250LXNpemU6IDg3LjUlOwoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCmtiZCBrYmQgewoJcGFkZGluZzogMDsKCWZvbnQtc2l6ZTogMTAwJTsKCWZvbnQtd2VpZ2h0OiA3MDA7Cn0KCnByZSB7CglkaXNwbGF5OiBibG9jazsKCWZvbnQtc2l6ZTogODcuNSU7Cgljb2xvcjogIzIxMjUyOTsKfQoKcHJlIGNvZGUgewoJZm9udC1zaXplOiBpbmhlcml0OwoJY29sb3I6IGluaGVyaXQ7Cgl3b3JkLWJyZWFrOiBub3JtYWw7Cn0KCi5wcmUtc2Nyb2xsYWJsZSB7CgltYXgtaGVpZ2h0OiAzNDBweDsKCW92ZXJmbG93LXk6IHNjcm9sbDsKfQoKLmNvbnRhaW5lciB7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmctcmlnaHQ6IDE1cHg7CglwYWRkaW5nLWxlZnQ6IDE1cHg7CgltYXJnaW4tcmlnaHQ6IGF1dG87CgltYXJnaW4tbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY29udGFpbmVyIHsKCQltYXgtd2lkdGg6IDU0MHB4OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5jb250YWluZXIgewoJCW1heC13aWR0aDogNzIwcHg7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmNvbnRhaW5lciB7CgkJbWF4LXdpZHRoOiA5NjBweDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLmNvbnRhaW5lciB7CgkJbWF4LXdpZHRoOiAxMTQwcHg7Cgl9Cn0KCi5jb250YWluZXItZmx1aWQgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nLXJpZ2h0OiAxNXB4OwoJcGFkZGluZy1sZWZ0OiAxNXB4OwoJbWFyZ2luLXJpZ2h0OiBhdXRvOwoJbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5yb3cgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCW1hcmdpbi1yaWdodDogLTE1cHg7CgltYXJnaW4tbGVmdDogLTE1cHg7Cn0KCi5uby1ndXR0ZXJzIHsKCW1hcmdpbi1yaWdodDogMDsKCW1hcmdpbi1sZWZ0OiAwOwp9Cgoubm8tZ3V0dGVycyA+IC5jb2wsIC5uby1ndXR0ZXJzID4gW2NsYXNzKj0iY29sLSJdIHsKCXBhZGRpbmctcmlnaHQ6IDA7CglwYWRkaW5nLWxlZnQ6IDA7Cn0KCi5jb2wtMSwgLmNvbC0yLCAuY29sLTMsIC5jb2wtNCwgLmNvbC01LCAuY29sLTYsIC5jb2wtNywgLmNvbC04LCAuY29sLTksIC5jb2wtMTAsIC5jb2wtMTEsIC5jb2wtMTIsIC5jb2wsIC5jb2wtYXV0bywgLmNvbC1zbS0xLCAuY29sLXNtLTIsIC5jb2wtc20tMywgLmNvbC1zbS00LCAuY29sLXNtLTUsIC5jb2wtc20tNiwgLmNvbC1zbS03LCAuY29sLXNtLTgsIC5jb2wtc20tOSwgLmNvbC1zbS0xMCwgLmNvbC1zbS0xMSwgLmNvbC1zbS0xMiwgLmNvbC1zbSwgLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLCAuY29sLW1kLWF1dG8sIC5jb2wtbGctMSwgLmNvbC1sZy0yLCAuY29sLWxnLTMsIC5jb2wtbGctNCwgLmNvbC1sZy01LCAuY29sLWxnLTYsIC5jb2wtbGctNywgLmNvbC1sZy04LCAuY29sLWxnLTksIC5jb2wtbGctMTAsIC5jb2wtbGctMTEsIC5jb2wtbGctMTIsIC5jb2wtbGcsIC5jb2wtbGctYXV0bywgLmNvbC14bC0xLCAuY29sLXhsLTIsIC5jb2wteGwtMywgLmNvbC14bC00LCAuY29sLXhsLTUsIC5jb2wteGwtNiwgLmNvbC14bC03LCAuY29sLXhsLTgsIC5jb2wteGwtOSwgLmNvbC14bC0xMCwgLmNvbC14bC0xMSwgLmNvbC14bC0xMiwgLmNvbC14bCwgLmNvbC14bC1hdXRvIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXdpZHRoOiAxMDAlOwoJbWluLWhlaWdodDogMXB4OwoJcGFkZGluZy1yaWdodDogMTVweDsKCXBhZGRpbmctbGVmdDogMTVweDsKfQoKLmNvbCB7CgktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCWZsZXgtYmFzaXM6IDA7CgktbXMtZmxleC1wb3NpdGl2ZTogMTsKCWZsZXgtZ3JvdzogMTsKCW1heC13aWR0aDogMTAwJTsKfQoKLmNvbC1hdXRvIHsKCS1tcy1mbGV4OiAwIDAgYXV0bzsKCWZsZXg6IDAgMCBhdXRvOwoJd2lkdGg6IGF1dG87CgltYXgtd2lkdGg6IG5vbmU7Cn0KCi5jb2wtMSB7CgktbXMtZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CglmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCW1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKfQoKLmNvbC0yIHsKCS1tcy1mbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwp9CgouY29sLTMgewoJLW1zLWZsZXg6IDAgMCAyNSU7CglmbGV4OiAwIDAgMjUlOwoJbWF4LXdpZHRoOiAyNSU7Cn0KCi5jb2wtNCB7CgktbXMtZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKfQoKLmNvbC01IHsKCS1tcy1mbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwp9CgouY29sLTYgewoJLW1zLWZsZXg6IDAgMCA1MCU7CglmbGV4OiAwIDAgNTAlOwoJbWF4LXdpZHRoOiA1MCU7Cn0KCi5jb2wtNyB7CgktbXMtZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKfQoKLmNvbC04IHsKCS1tcy1mbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwp9CgouY29sLTkgewoJLW1zLWZsZXg6IDAgMCA3NSU7CglmbGV4OiAwIDAgNzUlOwoJbWF4LXdpZHRoOiA3NSU7Cn0KCi5jb2wtMTAgewoJLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCW1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7Cn0KCi5jb2wtMTEgewoJLW1zLWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCW1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7Cn0KCi5jb2wtMTIgewoJLW1zLWZsZXg6IDAgMCAxMDAlOwoJZmxleDogMCAwIDEwMCU7CgltYXgtd2lkdGg6IDEwMCU7Cn0KCi5vcmRlci1maXJzdCB7CgktbXMtZmxleC1vcmRlcjogLTE7CglvcmRlcjogLTE7Cn0KCi5vcmRlci1sYXN0IHsKCS1tcy1mbGV4LW9yZGVyOiAxMzsKCW9yZGVyOiAxMzsKfQoKLm9yZGVyLTAgewoJLW1zLWZsZXgtb3JkZXI6IDA7CglvcmRlcjogMDsKfQoKLm9yZGVyLTEgewoJLW1zLWZsZXgtb3JkZXI6IDE7CglvcmRlcjogMTsKfQoKLm9yZGVyLTIgewoJLW1zLWZsZXgtb3JkZXI6IDI7CglvcmRlcjogMjsKfQoKLm9yZGVyLTMgewoJLW1zLWZsZXgtb3JkZXI6IDM7CglvcmRlcjogMzsKfQoKLm9yZGVyLTQgewoJLW1zLWZsZXgtb3JkZXI6IDQ7CglvcmRlcjogNDsKfQoKLm9yZGVyLTUgewoJLW1zLWZsZXgtb3JkZXI6IDU7CglvcmRlcjogNTsKfQoKLm9yZGVyLTYgewoJLW1zLWZsZXgtb3JkZXI6IDY7CglvcmRlcjogNjsKfQoKLm9yZGVyLTcgewoJLW1zLWZsZXgtb3JkZXI6IDc7CglvcmRlcjogNzsKfQoKLm9yZGVyLTggewoJLW1zLWZsZXgtb3JkZXI6IDg7CglvcmRlcjogODsKfQoKLm9yZGVyLTkgewoJLW1zLWZsZXgtb3JkZXI6IDk7CglvcmRlcjogOTsKfQoKLm9yZGVyLTEwIHsKCS1tcy1mbGV4LW9yZGVyOiAxMDsKCW9yZGVyOiAxMDsKfQoKLm9yZGVyLTExIHsKCS1tcy1mbGV4LW9yZGVyOiAxMTsKCW9yZGVyOiAxMTsKfQoKLm9yZGVyLTEyIHsKCS1tcy1mbGV4LW9yZGVyOiAxMjsKCW9yZGVyOiAxMjsKfQoKLm9mZnNldC0xIHsKCW1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwp9Cgoub2Zmc2V0LTIgewoJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwp9Cgoub2Zmc2V0LTMgewoJbWFyZ2luLWxlZnQ6IDI1JTsKfQoKLm9mZnNldC00IHsKCW1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKfQoKLm9mZnNldC01IHsKCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKfQoKLm9mZnNldC02IHsKCW1hcmdpbi1sZWZ0OiA1MCU7Cn0KCi5vZmZzZXQtNyB7CgltYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cn0KCi5vZmZzZXQtOCB7CgltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cn0KCi5vZmZzZXQtOSB7CgltYXJnaW4tbGVmdDogNzUlOwp9Cgoub2Zmc2V0LTEwIHsKCW1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKfQoKLm9mZnNldC0xMSB7CgltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewoJLmNvbC1zbSB7CgkJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7CgkJZmxleC1iYXNpczogMDsKCQktbXMtZmxleC1wb3NpdGl2ZTogMTsKCQlmbGV4LWdyb3c6IDE7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkuY29sLXNtLWF1dG8gewoJCS1tcy1mbGV4OiAwIDAgYXV0bzsKCQlmbGV4OiAwIDAgYXV0bzsKCQl3aWR0aDogYXV0bzsKCQltYXgtd2lkdGg6IG5vbmU7Cgl9CgkKCS5jb2wtc20tMSB7CgkJLW1zLWZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS0yIHsKCQktbXMtZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTMgewoJCS1tcy1mbGV4OiAwIDAgMjUlOwoJCWZsZXg6IDAgMCAyNSU7CgkJbWF4LXdpZHRoOiAyNSU7Cgl9CgkKCS5jb2wtc20tNCB7CgkJLW1zLWZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS01IHsKCQktbXMtZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTYgewoJCS1tcy1mbGV4OiAwIDAgNTAlOwoJCWZsZXg6IDAgMCA1MCU7CgkJbWF4LXdpZHRoOiA1MCU7Cgl9CgkKCS5jb2wtc20tNyB7CgkJLW1zLWZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS04IHsKCQktbXMtZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTkgewoJCS1tcy1mbGV4OiAwIDAgNzUlOwoJCWZsZXg6IDAgMCA3NSU7CgkJbWF4LXdpZHRoOiA3NSU7Cgl9CgkKCS5jb2wtc20tMTAgewoJCS1tcy1mbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtc20tMTEgewoJCS1tcy1mbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtc20tMTIgewoJCS1tcy1mbGV4OiAwIDAgMTAwJTsKCQlmbGV4OiAwIDAgMTAwJTsKCQltYXgtd2lkdGg6IDEwMCU7Cgl9CgkKCS5vcmRlci1zbS1maXJzdCB7CgkJLW1zLWZsZXgtb3JkZXI6IC0xOwoJCW9yZGVyOiAtMTsKCX0KCQoJLm9yZGVyLXNtLWxhc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAxMzsKCQlvcmRlcjogMTM7Cgl9CgkKCS5vcmRlci1zbS0wIHsKCQktbXMtZmxleC1vcmRlcjogMDsKCQlvcmRlcjogMDsKCX0KCQoJLm9yZGVyLXNtLTEgewoJCS1tcy1mbGV4LW9yZGVyOiAxOwoJCW9yZGVyOiAxOwoJfQoJCgkub3JkZXItc20tMiB7CgkJLW1zLWZsZXgtb3JkZXI6IDI7CgkJb3JkZXI6IDI7Cgl9CgkKCS5vcmRlci1zbS0zIHsKCQktbXMtZmxleC1vcmRlcjogMzsKCQlvcmRlcjogMzsKCX0KCQoJLm9yZGVyLXNtLTQgewoJCS1tcy1mbGV4LW9yZGVyOiA0OwoJCW9yZGVyOiA0OwoJfQoJCgkub3JkZXItc20tNSB7CgkJLW1zLWZsZXgtb3JkZXI6IDU7CgkJb3JkZXI6IDU7Cgl9CgkKCS5vcmRlci1zbS02IHsKCQktbXMtZmxleC1vcmRlcjogNjsKCQlvcmRlcjogNjsKCX0KCQoJLm9yZGVyLXNtLTcgewoJCS1tcy1mbGV4LW9yZGVyOiA3OwoJCW9yZGVyOiA3OwoJfQoJCgkub3JkZXItc20tOCB7CgkJLW1zLWZsZXgtb3JkZXI6IDg7CgkJb3JkZXI6IDg7Cgl9CgkKCS5vcmRlci1zbS05IHsKCQktbXMtZmxleC1vcmRlcjogOTsKCQlvcmRlcjogOTsKCX0KCQoJLm9yZGVyLXNtLTEwIHsKCQktbXMtZmxleC1vcmRlcjogMTA7CgkJb3JkZXI6IDEwOwoJfQoJCgkub3JkZXItc20tMTEgewoJCS1tcy1mbGV4LW9yZGVyOiAxMTsKCQlvcmRlcjogMTE7Cgl9CgkKCS5vcmRlci1zbS0xMiB7CgkJLW1zLWZsZXgtb3JkZXI6IDEyOwoJCW9yZGVyOiAxMjsKCX0KCQoJLm9mZnNldC1zbS0wIHsKCQltYXJnaW4tbGVmdDogMDsKCX0KCQoJLm9mZnNldC1zbS0xIHsKCQltYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1zbS0yIHsKCQltYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtc20tMyB7CgkJbWFyZ2luLWxlZnQ6IDI1JTsKCX0KCQoJLm9mZnNldC1zbS00IHsKCQltYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtc20tNSB7CgkJbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LXNtLTYgewoJCW1hcmdpbi1sZWZ0OiA1MCU7Cgl9CgkKCS5vZmZzZXQtc20tNyB7CgkJbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXNtLTggewoJCW1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1zbS05IHsKCQltYXJnaW4tbGVmdDogNzUlOwoJfQoJCgkub2Zmc2V0LXNtLTEwIHsKCQltYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtc20tMTEgewoJCW1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkuY29sLW1kIHsKCQktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCQlmbGV4LWJhc2lzOiAwOwoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxOwoJCWZsZXgtZ3JvdzogMTsKCQltYXgtd2lkdGg6IDEwMCU7Cgl9CgkKCS5jb2wtbWQtYXV0byB7CgkJLW1zLWZsZXg6IDAgMCBhdXRvOwoJCWZsZXg6IDAgMCBhdXRvOwoJCXdpZHRoOiBhdXRvOwoJCW1heC13aWR0aDogbm9uZTsKCX0KCQoJLmNvbC1tZC0xIHsKCQktbXMtZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA4LjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTIgewoJCS1tcy1mbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogMTYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtMyB7CgkJLW1zLWZsZXg6IDAgMCAyNSU7CgkJZmxleDogMCAwIDI1JTsKCQltYXgtd2lkdGg6IDI1JTsKCX0KCQoJLmNvbC1tZC00IHsKCQktbXMtZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTUgewoJCS1tcy1mbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogNDEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtNiB7CgkJLW1zLWZsZXg6IDAgMCA1MCU7CgkJZmxleDogMCAwIDUwJTsKCQltYXgtd2lkdGg6IDUwJTsKCX0KCQoJLmNvbC1tZC03IHsKCQktbXMtZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDU4LjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTggewoJCS1tcy1mbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtOSB7CgkJLW1zLWZsZXg6IDAgMCA3NSU7CgkJZmxleDogMCAwIDc1JTsKCQltYXgtd2lkdGg6IDc1JTsKCX0KCQoJLmNvbC1tZC0xMCB7CgkJLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA4My4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1tZC0xMSB7CgkJLW1zLWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA5MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1tZC0xMiB7CgkJLW1zLWZsZXg6IDAgMCAxMDAlOwoJCWZsZXg6IDAgMCAxMDAlOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLm9yZGVyLW1kLWZpcnN0IHsKCQktbXMtZmxleC1vcmRlcjogLTE7CgkJb3JkZXI6IC0xOwoJfQoJCgkub3JkZXItbWQtbGFzdCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEzOwoJCW9yZGVyOiAxMzsKCX0KCQoJLm9yZGVyLW1kLTAgewoJCS1tcy1mbGV4LW9yZGVyOiAwOwoJCW9yZGVyOiAwOwoJfQoJCgkub3JkZXItbWQtMSB7CgkJLW1zLWZsZXgtb3JkZXI6IDE7CgkJb3JkZXI6IDE7Cgl9CgkKCS5vcmRlci1tZC0yIHsKCQktbXMtZmxleC1vcmRlcjogMjsKCQlvcmRlcjogMjsKCX0KCQoJLm9yZGVyLW1kLTMgewoJCS1tcy1mbGV4LW9yZGVyOiAzOwoJCW9yZGVyOiAzOwoJfQoJCgkub3JkZXItbWQtNCB7CgkJLW1zLWZsZXgtb3JkZXI6IDQ7CgkJb3JkZXI6IDQ7Cgl9CgkKCS5vcmRlci1tZC01IHsKCQktbXMtZmxleC1vcmRlcjogNTsKCQlvcmRlcjogNTsKCX0KCQoJLm9yZGVyLW1kLTYgewoJCS1tcy1mbGV4LW9yZGVyOiA2OwoJCW9yZGVyOiA2OwoJfQoJCgkub3JkZXItbWQtNyB7CgkJLW1zLWZsZXgtb3JkZXI6IDc7CgkJb3JkZXI6IDc7Cgl9CgkKCS5vcmRlci1tZC04IHsKCQktbXMtZmxleC1vcmRlcjogODsKCQlvcmRlcjogODsKCX0KCQoJLm9yZGVyLW1kLTkgewoJCS1tcy1mbGV4LW9yZGVyOiA5OwoJCW9yZGVyOiA5OwoJfQoJCgkub3JkZXItbWQtMTAgewoJCS1tcy1mbGV4LW9yZGVyOiAxMDsKCQlvcmRlcjogMTA7Cgl9CgkKCS5vcmRlci1tZC0xMSB7CgkJLW1zLWZsZXgtb3JkZXI6IDExOwoJCW9yZGVyOiAxMTsKCX0KCQoJLm9yZGVyLW1kLTEyIHsKCQktbXMtZmxleC1vcmRlcjogMTI7CgkJb3JkZXI6IDEyOwoJfQoJCgkub2Zmc2V0LW1kLTAgewoJCW1hcmdpbi1sZWZ0OiAwOwoJfQoJCgkub2Zmc2V0LW1kLTEgewoJCW1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LW1kLTIgewoJCW1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1tZC0zIHsKCQltYXJnaW4tbGVmdDogMjUlOwoJfQoJCgkub2Zmc2V0LW1kLTQgewoJCW1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1tZC01IHsKCQltYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtbWQtNiB7CgkJbWFyZ2luLWxlZnQ6IDUwJTsKCX0KCQoJLm9mZnNldC1tZC03IHsKCQltYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtbWQtOCB7CgkJbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LW1kLTkgewoJCW1hcmdpbi1sZWZ0OiA3NSU7Cgl9CgkKCS5vZmZzZXQtbWQtMTAgewoJCW1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1tZC0xMSB7CgkJbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclOwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKCS5jb2wtbGcgewoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwoJCWZsZXgtYmFzaXM6IDA7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDE7CgkJZmxleC1ncm93OiAxOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLmNvbC1sZy1hdXRvIHsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJd2lkdGg6IGF1dG87CgkJbWF4LXdpZHRoOiBub25lOwoJfQoJCgkuY29sLWxnLTEgewoJCS1tcy1mbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctMiB7CgkJLW1zLWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy0zIHsKCQktbXMtZmxleDogMCAwIDI1JTsKCQlmbGV4OiAwIDAgMjUlOwoJCW1heC13aWR0aDogMjUlOwoJfQoJCgkuY29sLWxnLTQgewoJCS1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctNSB7CgkJLW1zLWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy02IHsKCQktbXMtZmxleDogMCAwIDUwJTsKCQlmbGV4OiAwIDAgNTAlOwoJCW1heC13aWR0aDogNTAlOwoJfQoJCgkuY29sLWxnLTcgewoJCS1tcy1mbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctOCB7CgkJLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy05IHsKCQktbXMtZmxleDogMCAwIDc1JTsKCQlmbGV4OiAwIDAgNzUlOwoJCW1heC13aWR0aDogNzUlOwoJfQoJCgkuY29sLWxnLTEwIHsKCQktbXMtZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLWxnLTExIHsKCQktbXMtZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLWxnLTEyIHsKCQktbXMtZmxleDogMCAwIDEwMCU7CgkJZmxleDogMCAwIDEwMCU7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkub3JkZXItbGctZmlyc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAtMTsKCQlvcmRlcjogLTE7Cgl9CgkKCS5vcmRlci1sZy1sYXN0IHsKCQktbXMtZmxleC1vcmRlcjogMTM7CgkJb3JkZXI6IDEzOwoJfQoJCgkub3JkZXItbGctMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDA7CgkJb3JkZXI6IDA7Cgl9CgkKCS5vcmRlci1sZy0xIHsKCQktbXMtZmxleC1vcmRlcjogMTsKCQlvcmRlcjogMTsKCX0KCQoJLm9yZGVyLWxnLTIgewoJCS1tcy1mbGV4LW9yZGVyOiAyOwoJCW9yZGVyOiAyOwoJfQoJCgkub3JkZXItbGctMyB7CgkJLW1zLWZsZXgtb3JkZXI6IDM7CgkJb3JkZXI6IDM7Cgl9CgkKCS5vcmRlci1sZy00IHsKCQktbXMtZmxleC1vcmRlcjogNDsKCQlvcmRlcjogNDsKCX0KCQoJLm9yZGVyLWxnLTUgewoJCS1tcy1mbGV4LW9yZGVyOiA1OwoJCW9yZGVyOiA1OwoJfQoJCgkub3JkZXItbGctNiB7CgkJLW1zLWZsZXgtb3JkZXI6IDY7CgkJb3JkZXI6IDY7Cgl9CgkKCS5vcmRlci1sZy03IHsKCQktbXMtZmxleC1vcmRlcjogNzsKCQlvcmRlcjogNzsKCX0KCQoJLm9yZGVyLWxnLTggewoJCS1tcy1mbGV4LW9yZGVyOiA4OwoJCW9yZGVyOiA4OwoJfQoJCgkub3JkZXItbGctOSB7CgkJLW1zLWZsZXgtb3JkZXI6IDk7CgkJb3JkZXI6IDk7Cgl9CgkKCS5vcmRlci1sZy0xMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEwOwoJCW9yZGVyOiAxMDsKCX0KCQoJLm9yZGVyLWxnLTExIHsKCQktbXMtZmxleC1vcmRlcjogMTE7CgkJb3JkZXI6IDExOwoJfQoJCgkub3JkZXItbGctMTIgewoJCS1tcy1mbGV4LW9yZGVyOiAxMjsKCQlvcmRlcjogMTI7Cgl9CgkKCS5vZmZzZXQtbGctMCB7CgkJbWFyZ2luLWxlZnQ6IDA7Cgl9CgkKCS5vZmZzZXQtbGctMSB7CgkJbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtbGctMiB7CgkJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LWxnLTMgewoJCW1hcmdpbi1sZWZ0OiAyNSU7Cgl9CgkKCS5vZmZzZXQtbGctNCB7CgkJbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LWxnLTUgewoJCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1sZy02IHsKCQltYXJnaW4tbGVmdDogNTAlOwoJfQoJCgkub2Zmc2V0LWxnLTcgewoJCW1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1sZy04IHsKCQltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtbGctOSB7CgkJbWFyZ2luLWxlZnQ6IDc1JTsKCX0KCQoJLm9mZnNldC1sZy0xMCB7CgkJbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LWxnLTExIHsKCQltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKCS5jb2wteGwgewoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwoJCWZsZXgtYmFzaXM6IDA7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDE7CgkJZmxleC1ncm93OiAxOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLmNvbC14bC1hdXRvIHsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJd2lkdGg6IGF1dG87CgkJbWF4LXdpZHRoOiBub25lOwoJfQoJCgkuY29sLXhsLTEgewoJCS1tcy1mbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtMiB7CgkJLW1zLWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC0zIHsKCQktbXMtZmxleDogMCAwIDI1JTsKCQlmbGV4OiAwIDAgMjUlOwoJCW1heC13aWR0aDogMjUlOwoJfQoJCgkuY29sLXhsLTQgewoJCS1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtNSB7CgkJLW1zLWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC02IHsKCQktbXMtZmxleDogMCAwIDUwJTsKCQlmbGV4OiAwIDAgNTAlOwoJCW1heC13aWR0aDogNTAlOwoJfQoJCgkuY29sLXhsLTcgewoJCS1tcy1mbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtOCB7CgkJLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC05IHsKCQktbXMtZmxleDogMCAwIDc1JTsKCQlmbGV4OiAwIDAgNzUlOwoJCW1heC13aWR0aDogNzUlOwoJfQoJCgkuY29sLXhsLTEwIHsKCQktbXMtZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLXhsLTExIHsKCQktbXMtZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXhsLTEyIHsKCQktbXMtZmxleDogMCAwIDEwMCU7CgkJZmxleDogMCAwIDEwMCU7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkub3JkZXIteGwtZmlyc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAtMTsKCQlvcmRlcjogLTE7Cgl9CgkKCS5vcmRlci14bC1sYXN0IHsKCQktbXMtZmxleC1vcmRlcjogMTM7CgkJb3JkZXI6IDEzOwoJfQoJCgkub3JkZXIteGwtMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDA7CgkJb3JkZXI6IDA7Cgl9CgkKCS5vcmRlci14bC0xIHsKCQktbXMtZmxleC1vcmRlcjogMTsKCQlvcmRlcjogMTsKCX0KCQoJLm9yZGVyLXhsLTIgewoJCS1tcy1mbGV4LW9yZGVyOiAyOwoJCW9yZGVyOiAyOwoJfQoJCgkub3JkZXIteGwtMyB7CgkJLW1zLWZsZXgtb3JkZXI6IDM7CgkJb3JkZXI6IDM7Cgl9CgkKCS5vcmRlci14bC00IHsKCQktbXMtZmxleC1vcmRlcjogNDsKCQlvcmRlcjogNDsKCX0KCQoJLm9yZGVyLXhsLTUgewoJCS1tcy1mbGV4LW9yZGVyOiA1OwoJCW9yZGVyOiA1OwoJfQoJCgkub3JkZXIteGwtNiB7CgkJLW1zLWZsZXgtb3JkZXI6IDY7CgkJb3JkZXI6IDY7Cgl9CgkKCS5vcmRlci14bC03IHsKCQktbXMtZmxleC1vcmRlcjogNzsKCQlvcmRlcjogNzsKCX0KCQoJLm9yZGVyLXhsLTggewoJCS1tcy1mbGV4LW9yZGVyOiA4OwoJCW9yZGVyOiA4OwoJfQoJCgkub3JkZXIteGwtOSB7CgkJLW1zLWZsZXgtb3JkZXI6IDk7CgkJb3JkZXI6IDk7Cgl9CgkKCS5vcmRlci14bC0xMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEwOwoJCW9yZGVyOiAxMDsKCX0KCQoJLm9yZGVyLXhsLTExIHsKCQktbXMtZmxleC1vcmRlcjogMTE7CgkJb3JkZXI6IDExOwoJfQoJCgkub3JkZXIteGwtMTIgewoJCS1tcy1mbGV4LW9yZGVyOiAxMjsKCQlvcmRlcjogMTI7Cgl9CgkKCS5vZmZzZXQteGwtMCB7CgkJbWFyZ2luLWxlZnQ6IDA7Cgl9CgkKCS5vZmZzZXQteGwtMSB7CgkJbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQteGwtMiB7CgkJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LXhsLTMgewoJCW1hcmdpbi1sZWZ0OiAyNSU7Cgl9CgkKCS5vZmZzZXQteGwtNCB7CgkJbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXhsLTUgewoJCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC14bC02IHsKCQltYXJnaW4tbGVmdDogNTAlOwoJfQoJCgkub2Zmc2V0LXhsLTcgewoJCW1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC14bC04IHsKCQltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQteGwtOSB7CgkJbWFyZ2luLWxlZnQ6IDc1JTsKCX0KCQoJLm9mZnNldC14bC0xMCB7CgkJbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXhsLTExIHsKCQltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cgl9Cn0KCi50YWJsZSB7Cgl3aWR0aDogMTAwJTsKCW1hcmdpbi1ib3R0b206IDFyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLnRhYmxlIHRoLCAudGFibGUgdGQgewoJcGFkZGluZzogLjc1cmVtOwoJdmVydGljYWwtYWxpZ246IHRvcDsKCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGhlYWQgdGggewoJdmVydGljYWwtYWxpZ246IGJvdHRvbTsKCWJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGJvZHkgKyB0Ym9keSB7Cglib3JkZXItdG9wOiAycHggc29saWQgI2RlZTJlNjsKfQoKLnRhYmxlIC50YWJsZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoudGFibGUtc20gdGgsIC50YWJsZS1zbSB0ZCB7CglwYWRkaW5nOiAuM3JlbTsKfQoKLnRhYmxlLWJvcmRlcmVkIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRkIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRkIHsKCWJvcmRlci1ib3R0b20td2lkdGg6IDJweDsKfQoKLnRhYmxlLWJvcmRlcmxlc3MgdGgsIC50YWJsZS1ib3JkZXJsZXNzIHRkLCAudGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmxlc3MgdGJvZHkgKyB0Ym9keSB7Cglib3JkZXI6IDA7Cn0KCi50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDUpOwp9CgoudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDc1KTsKfQoKLnRhYmxlLXByaW1hcnksIC50YWJsZS1wcmltYXJ5ID4gdGgsIC50YWJsZS1wcmltYXJ5ID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOWVjZGZmOwp9CgoudGFibGUtc2Vjb25kYXJ5LCAudGFibGUtc2Vjb25kYXJ5ID4gdGgsIC50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGRiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzhjY2NmOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KCi50YWJsZS1zdWNjZXNzLCAudGFibGUtc3VjY2VzcyA+IHRoLCAudGFibGUtc3VjY2VzcyA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1zdWNjZXNzOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLnRhYmxlLWluZm8sIC50YWJsZS1pbmZvID4gdGgsIC50YWJsZS1pbmZvID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9CgoudGFibGUtd2FybmluZywgLnRhYmxlLXdhcm5pbmcgPiB0aCwgLnRhYmxlLXdhcm5pbmcgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZWJhOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmU3YTA7Cn0KCi50YWJsZS1kYW5nZXIsIC50YWJsZS1kYW5nZXIgPiB0aCwgLnRhYmxlLWRhbmdlciA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNmMWIxYjc7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoKLnRhYmxlLWxpZ2h0LCAudGFibGUtbGlnaHQgPiB0aCwgLnRhYmxlLWxpZ2h0ID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoudGFibGUtZGFyaywgLnRhYmxlLWRhcmsgPiB0aCwgLnRhYmxlLWRhcmsgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzZjOGNhOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNiOWJiYmQ7Cn0KCi50YWJsZS1hY3RpdmUsIC50YWJsZS1hY3RpdmUgPiB0aCwgLnRhYmxlLWFjdGl2ZSA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA3NSk7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA3NSk7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDc1KTsKfQoKLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKCWJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoKLnRhYmxlIC50aGVhZC1saWdodCB0aCB7Cgljb2xvcjogIzQ5NTA1NzsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KCi50YWJsZS1kYXJrIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKfQoKLnRhYmxlLWRhcmsgdGgsIC50YWJsZS1kYXJrIHRkLCAudGFibGUtZGFyayB0aGVhZCB0aCB7Cglib3JkZXItY29sb3I6ICMzMjM4M2U7Cn0KCi50YWJsZS1kYXJrLnRhYmxlLWJvcmRlcmVkIHsKCWJvcmRlcjogMDsKfQoKLnRhYmxlLWRhcmsudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA1KTsKfQoKLnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDc1KTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7CgkudGFibGUtcmVzcG9uc2l2ZS1zbSB7CgkJZGlzcGxheTogYmxvY2s7CgkJd2lkdGg6IDEwMCU7CgkJb3ZlcmZsb3cteDogYXV0bzsKCQktd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CgkJLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7Cgl9CgkKCS50YWJsZS1yZXNwb25zaXZlLXNtID4gLnRhYmxlLWJvcmRlcmVkIHsKCQlib3JkZXI6IDA7Cgl9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewoJLnRhYmxlLXJlc3BvbnNpdmUtbWQgewoJCWRpc3BsYXk6IGJsb2NrOwoJCXdpZHRoOiAxMDAlOwoJCW92ZXJmbG93LXg6IGF1dG87CgkJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoJCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwoJfQoJCgkudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7CgkJYm9yZGVyOiAwOwoJfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKCS50YWJsZS1yZXNwb25zaXZlLWxnIHsKCQlkaXNwbGF5OiBibG9jazsKCQl3aWR0aDogMTAwJTsKCQlvdmVyZmxvdy14OiBhdXRvOwoJCS13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCQktbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKCX0KCQoJLnRhYmxlLXJlc3BvbnNpdmUtbGcgPiAudGFibGUtYm9yZGVyZWQgewoJCWJvcmRlcjogMDsKCX0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewoJLnRhYmxlLXJlc3BvbnNpdmUteGwgewoJCWRpc3BsYXk6IGJsb2NrOwoJCXdpZHRoOiAxMDAlOwoJCW92ZXJmbG93LXg6IGF1dG87CgkJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoJCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwoJfQoJCgkudGFibGUtcmVzcG9uc2l2ZS14bCA+IC50YWJsZS1ib3JkZXJlZCB7CgkJYm9yZGVyOiAwOwoJfQp9CgoudGFibGUtcmVzcG9uc2l2ZSB7CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxMDAlOwoJb3ZlcmZsb3cteDogYXV0bzsKCS13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwp9CgoudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7Cglib3JkZXI6IDA7Cn0KCi5mb3JtLWNvbnRyb2wgewoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJZm9udC1zaXplOiAxcmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCS13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKCWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Cglib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmZvcm0tY29udHJvbCB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmQgewoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXI6IDA7Cn0KCi5mb3JtLWNvbnRyb2w6Zm9jdXMgewoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyLWNvbG9yOiAjODBiZGZmOwoJb3V0bGluZTogMDsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIgewoJY29sb3I6ICM2Yzc1N2Q7CglvcGFjaXR5OiAxOwp9CgouZm9ybS1jb250cm9sOmRpc2FibGVkLCAuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwoJb3BhY2l0eTogMTsKfQoKc2VsZWN0LmZvcm0tY29udHJvbDpmb2N1czo6LW1zLXZhbHVlIHsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmZvcm0tY29udHJvbC1maWxlLCAuZm9ybS1jb250cm9sLXJhbmdlIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7Cn0KCi5jb2wtZm9ybS1sYWJlbCB7CglwYWRkaW5nLXRvcDogY2FsYyguMzc1cmVtICsgMXB4KTsKCXBhZGRpbmctYm90dG9tOiBjYWxjKC4zNzVyZW0gKyAxcHgpOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogaW5oZXJpdDsKCWxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5jb2wtZm9ybS1sYWJlbC1sZyB7CglwYWRkaW5nLXRvcDogY2FsYyguNXJlbSArIDFweCk7CglwYWRkaW5nLWJvdHRvbTogY2FsYyguNXJlbSArIDFweCk7Cglmb250LXNpemU6IDEuMjVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgouY29sLWZvcm0tbGFiZWwtc20gewoJcGFkZGluZy10b3A6IGNhbGMoLjI1cmVtICsgMXB4KTsKCXBhZGRpbmctYm90dG9tOiBjYWxjKC4yNXJlbSArIDFweCk7Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgouZm9ybS1jb250cm9sLXBsYWludGV4dCB7CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxMDAlOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCW1hcmdpbi1ib3R0b206IDA7CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItd2lkdGg6IDFweCAwOwp9CgouZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc20sIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZyB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwp9CgouZm9ybS1jb250cm9sLXNtIHsKCWhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjI1cmVtIC41cmVtOwoJZm9udC1zaXplOiAuODc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4ycmVtOwp9CgouZm9ybS1jb250cm9sLWxnIHsKCWhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgpzZWxlY3QuZm9ybS1jb250cm9sW3NpemVdLCBzZWxlY3QuZm9ybS1jb250cm9sW211bHRpcGxlXSB7CgloZWlnaHQ6IGF1dG87Cn0KCnRleHRhcmVhLmZvcm0tY29udHJvbCB7CgloZWlnaHQ6IGF1dG87Cn0KCi5mb3JtLWdyb3VwIHsKCW1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5mb3JtLXRleHQgewoJZGlzcGxheTogYmxvY2s7CgltYXJnaW4tdG9wOiAuMjVyZW07Cn0KCi5mb3JtLXJvdyB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJbWFyZ2luLXJpZ2h0OiAtNXB4OwoJbWFyZ2luLWxlZnQ6IC01cHg7Cn0KCi5mb3JtLXJvdyA+IC5jb2wsIC5mb3JtLXJvdyA+IFtjbGFzcyo9ImNvbC0iXSB7CglwYWRkaW5nLXJpZ2h0OiA1cHg7CglwYWRkaW5nLWxlZnQ6IDVweDsKfQoKLmZvcm0tY2hlY2sgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nLWxlZnQ6IDEuMjVyZW07Cn0KCi5mb3JtLWNoZWNrLWlucHV0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCW1hcmdpbi10b3A6IC4zcmVtOwoJbWFyZ2luLWxlZnQ6IC0xLjI1cmVtOwp9CgouZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKCWNvbG9yOiAjNmM3NTdkOwp9CgouZm9ybS1jaGVjay1sYWJlbCB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouZm9ybS1jaGVjay1pbmxpbmUgewoJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKCWRpc3BsYXk6IGlubGluZS1mbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CglwYWRkaW5nLWxlZnQ6IDA7CgltYXJnaW4tcmlnaHQ6IC43NXJlbTsKfQoKLmZvcm0tY2hlY2staW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKCXBvc2l0aW9uOiBzdGF0aWM7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLXJpZ2h0OiAuMzEyNXJlbTsKCW1hcmdpbi1sZWZ0OiAwOwp9CgoudmFsaWQtZmVlZGJhY2sgewoJZGlzcGxheTogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogLjI1cmVtOwoJZm9udC1zaXplOiA4MCU7Cgljb2xvcjogIzI4YTc0NTsKfQoKLnZhbGlkLXRvb2x0aXAgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAxMDAlOwoJei1pbmRleDogNTsKCWRpc3BsYXk6IG5vbmU7CgltYXgtd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07CgltYXJnaW4tdG9wOiAuMXJlbTsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCWxpbmUtaGVpZ2h0OiAxLjU7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoNDAsIDE2NywgNjksIC45KTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewoJY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNzFkZDhhOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMzNGNlNTc7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cglib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjI1KTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjI1KTsKfQoKLmludmFsaWQtZmVlZGJhY2sgewoJZGlzcGxheTogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogLjI1cmVtOwoJZm9udC1zaXplOiA4MCU7Cgljb2xvcjogI2RjMzU0NTsKfQoKLmludmFsaWQtdG9vbHRpcCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDEwMCU7Cgl6LWluZGV4OiA1OwoJZGlzcGxheTogbm9uZTsKCW1heC13aWR0aDogMTAwJTsKCXBhZGRpbmc6IC4yNXJlbSAuNXJlbTsKCW1hcmdpbi10b3A6IC4xcmVtOwoJZm9udC1zaXplOiAuODc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDUzLCA2OSwgLjkpOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQsIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCwgLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLWZpbGUuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKCWNvbG9yOiAjZGMzNTQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2VmYTJhOTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAuMjUpOwp9CgouZm9ybS1pbmxpbmUgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CglmbGV4LWZsb3c6IHJvdyB3cmFwOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7Cgl3aWR0aDogMTAwJTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuZm9ybS1pbmxpbmUgbGFiZWwgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCQlkaXNwbGF5OiBmbGV4OwoJCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CgkJYWxpZ24taXRlbXM6IGNlbnRlcjsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXI7CgkJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CgkJZmxleC1mbG93OiByb3cgd3JhcDsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCQl3aWR0aDogYXV0bzsKCQl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJfQoJCgkuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbC1wbGFpbnRleHQgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCX0KCQoJLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCwgLmZvcm0taW5saW5lIC5jdXN0b20tc2VsZWN0IHsKCQl3aWR0aDogYXV0bzsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgkJLW1zLWZsZXgtcGFjazogY2VudGVyOwoJCWp1c3RpZnktY29udGVudDogY2VudGVyOwoJCXdpZHRoOiBhdXRvOwoJCXBhZGRpbmctbGVmdDogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKCQlwb3NpdGlvbjogcmVsYXRpdmU7CgkJbWFyZ2luLXRvcDogMDsKCQltYXJnaW4tcmlnaHQ6IC4yNXJlbTsKCQltYXJnaW4tbGVmdDogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbCB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCQlhbGlnbi1pdGVtczogY2VudGVyOwoJCS1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCX0KCQoJLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbC1sYWJlbCB7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KfQoKLmJ0biB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cglmb250LXdlaWdodDogNDAwOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgktbXMtdXNlci1zZWxlY3Q6IG5vbmU7CgktbW96LXVzZXItc2VsZWN0OiBub25lOwoJLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKCXVzZXItc2VsZWN0OiBub25lOwoJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CglwYWRkaW5nOiAuMzc1cmVtIC43NXJlbTsKCWZvbnQtc2l6ZTogMXJlbTsKCWxpbmUtaGVpZ2h0OiAxLjU7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cgktd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKCXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmJ0biB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5idG46aG92ZXIsIC5idG46Zm9jdXMgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouYnRuOmZvY3VzLCAuYnRuLmZvY3VzIHsKCW91dGxpbmU6IDA7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouYnRuLmRpc2FibGVkLCAuYnRuOmRpc2FibGVkIHsKCW9wYWNpdHk6IC42NTsKfQoKLmJ0bjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCmEuYnRuLmRpc2FibGVkLCBmaWVsZHNldDpkaXNhYmxlZCBhLmJ0biB7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmJ0bi1wcmltYXJ5IHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKCWJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQoKLmJ0bi1wcmltYXJ5OmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwNjlkOTsKCWJvcmRlci1jb2xvcjogIzAwNjJjYzsKfQoKLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouYnRuLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cglib3JkZXItY29sb3I6ICMwMDVjYmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5IHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1zZWNvbmRhcnk6aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNWE2MjY4OwoJYm9yZGVyLWNvbG9yOiAjNTQ1YjYyOwp9CgouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7Cglib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7Cglib3JkZXItY29sb3I6ICM0ZTU1NWI7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIC41KTsKfQoKLmJ0bi1zdWNjZXNzIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLmJ0bi1zdWNjZXNzOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODsKCWJvcmRlci1jb2xvcjogIzFlN2UzNDsKfQoKLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjUpOwp9CgouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tc3VjY2VzczpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cglib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7Cglib3JkZXItY29sb3I6ICMxYzc0MzA7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAuNSk7Cn0KCi5idG4taW5mbyB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cglib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4taW5mbzpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxMzg0OTY7Cglib3JkZXItY29sb3I6ICMxMTdhOGI7Cn0KCi5idG4taW5mbzpmb2N1cywgLmJ0bi1pbmZvLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAuNSk7Cn0KCi5idG4taW5mby5kaXNhYmxlZCwgLmJ0bi1pbmZvOmRpc2FibGVkIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKCWJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YjsKCWJvcmRlci1jb2xvcjogIzEwNzA3ZjsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAuNSk7Cn0KCi5idG4td2FybmluZyB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7Cglib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KCi5idG4td2FybmluZzpob3ZlciB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNlMGE4MDA7Cglib3JkZXItY29sb3I6ICNkMzllMDA7Cn0KCi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIC41KTsKfQoKLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwoJYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwoJYm9yZGVyLWNvbG9yOiAjYzY5NTAwOwp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgLjUpOwp9CgouYnRuLWRhbmdlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tZGFuZ2VyOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2M4MjMzMzsKCWJvcmRlci1jb2xvcjogI2JkMjEzMDsKfQoKLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC41KTsKfQoKLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKCWJvcmRlci1jb2xvcjogI2IyMWYyZDsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC41KTsKfQoKLmJ0bi1saWdodCB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cglib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tbGlnaHQ6aG92ZXIgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTJlNmVhOwoJYm9yZGVyLWNvbG9yOiAjZGFlMGU1Owp9CgouYnRuLWxpZ2h0OmZvY3VzLCAuYnRuLWxpZ2h0LmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgLjUpOwp9CgouYnRuLWxpZ2h0LmRpc2FibGVkLCAuYnRuLWxpZ2h0OmRpc2FibGVkIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNTsKCWJvcmRlci1jb2xvcjogI2QzZDlkZjsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgLjUpOwp9CgouYnRuLWRhcmsgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwoJYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiOwoJYm9yZGVyLWNvbG9yOiAjMWQyMTI0Owp9CgouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIC41KTsKfQoKLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwoJYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0OwoJYm9yZGVyLWNvbG9yOiAjMTcxYTFkOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5IHsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5OmZvY3VzLCAuYnRuLW91dGxpbmUtcHJpbWFyeS5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCB7Cgljb2xvcjogIzAwN2JmZjsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHsKCWNvbG9yOiAjNmM3NTdkOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwoJYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzIHsKCWNvbG9yOiAjMjhhNzQ1OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cglib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLCAuYnRuLW91dGxpbmUtc3VjY2Vzcy5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCB7Cgljb2xvcjogIzI4YTc0NTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjUpOwp9CgouYnRuLW91dGxpbmUtaW5mbyB7Cgljb2xvcjogIzE3YTJiODsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1vdXRsaW5lLWluZm86aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwoJYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9CgouYnRuLW91dGxpbmUtaW5mbzpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQsIC5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIHsKCWNvbG9yOiAjMTdhMmI4OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cglib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZyB7Cgljb2xvcjogI2ZmYzEwNzsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwoJYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQgewoJY29sb3I6ICNmZmMxMDc7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlciB7Cgljb2xvcjogI2RjMzU0NTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6Zm9jdXMsIC5idG4tb3V0bGluZS1kYW5nZXIuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgLjUpOwp9CgouYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkIHsKCWNvbG9yOiAjZGMzNTQ1OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodCB7Cgljb2xvcjogI2Y4ZjlmYTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVyIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHQuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWxpZ2h0OmRpc2FibGVkIHsKCWNvbG9yOiAjZjhmOWZhOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cglib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDI0OCwgMjQ5LCAyNTAsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhcmsgewoJY29sb3I6ICMzNDNhNDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cglib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KCi5idG4tb3V0bGluZS1kYXJrOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKCWJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6Zm9jdXMsIC5idG4tb3V0bGluZS1kYXJrLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgLjUpOwp9CgouYnRuLW91dGxpbmUtZGFyay5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhcms6ZGlzYWJsZWQgewoJY29sb3I6ICMzNDNhNDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKCWJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgLjUpOwp9CgouYnRuLWxpbmsgewoJZm9udC13ZWlnaHQ6IDQwMDsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tbGluazpob3ZlciB7Cgljb2xvcjogIzAwNTZiMzsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLWxpbms6Zm9jdXMsIC5idG4tbGluay5mb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3gtc2hhZG93OiBub25lOwp9CgouYnRuLWxpbms6ZGlzYWJsZWQsIC5idG4tbGluay5kaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCi5idG4tYmxvY2sgewoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKfQoKLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewoJbWFyZ2luLXRvcDogLjVyZW07Cn0KCmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywgaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssIGlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7Cgl3aWR0aDogMTAwJTsKfQoKLmZhZGUgewoJLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMgbGluZWFyOwoJdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzIGxpbmVhcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmZhZGUgewoJCS13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKCQl0cmFuc2l0aW9uOiBub25lOwoJfQp9CgouZmFkZTpub3QoLnNob3cpIHsKCW9wYWNpdHk6IDA7Cn0KCi5jb2xsYXBzZTpub3QoLnNob3cpIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5jb2xsYXBzaW5nIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWhlaWdodDogMDsKCW92ZXJmbG93OiBoaWRkZW47Cgktd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAuMzVzIGVhc2U7Cgl0cmFuc2l0aW9uOiBoZWlnaHQgLjM1cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY29sbGFwc2luZyB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5kcm9wdXAsIC5kcm9wcmlnaHQsIC5kcm9wZG93biwgLmRyb3BsZWZ0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogLjNlbSBzb2xpZDsKCWJvcmRlci1yaWdodDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b206IDA7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgewoJbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMTAwJTsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxMDAwOwoJZGlzcGxheTogbm9uZTsKCWZsb2F0OiBsZWZ0OwoJbWluLXdpZHRoOiAxMHJlbTsKCXBhZGRpbmc6IC41cmVtIDA7CgltYXJnaW46IC4xMjVyZW0gMCAwOwoJZm9udC1zaXplOiAxcmVtOwoJY29sb3I6ICMyMTI1Mjk7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJbGlzdC1zdHlsZTogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTUpOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgouZHJvcGRvd24tbWVudS1yaWdodCB7CglyaWdodDogMDsKCWxlZnQ6IGF1dG87Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLW1lbnUgewoJdG9wOiBhdXRvOwoJYm90dG9tOiAxMDAlOwoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IC4xMjVyZW07Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogMDsKCWJvcmRlci1yaWdodDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b206IC4zZW0gc29saWQ7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tbWVudSB7Cgl0b3A6IDA7CglyaWdodDogYXV0bzsKCWxlZnQ6IDEwMCU7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLWxlZnQ6IC4xMjVyZW07Cn0KCi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1yaWdodDogMDsKCWJvcmRlci1ib3R0b206IC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7Cgl2ZXJ0aWNhbC1hbGlnbjogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi1tZW51IHsKCXRvcDogMDsKCXJpZ2h0OiAxMDAlOwoJbGVmdDogYXV0bzsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tcmlnaHQ6IC4xMjVyZW07Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMDsKCWhlaWdodDogMDsKCW1hcmdpbi1sZWZ0OiAuMjU1ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogLjI1NWVtOwoJY29udGVudDogIiI7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CglkaXNwbGF5OiBub25lOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAwOwoJaGVpZ2h0OiAwOwoJbWFyZ2luLXJpZ2h0OiAuMjU1ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogLjI1NWVtOwoJY29udGVudDogIiI7Cglib3JkZXItdG9wOiAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJpZ2h0OiAuM2VtIHNvbGlkOwoJYm9yZGVyLWJvdHRvbTogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKCW1hcmdpbi1sZWZ0OiAwOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKCXZlcnRpY2FsLWFsaWduOiAwOwp9CgouZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InRvcCJdLCAuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InJpZ2h0Il0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0iYm90dG9tIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCXJpZ2h0OiBhdXRvOwoJYm90dG9tOiBhdXRvOwp9CgouZHJvcGRvd24tZGl2aWRlciB7CgloZWlnaHQ6IDA7CgltYXJnaW46IC41cmVtIDA7CglvdmVyZmxvdzogaGlkZGVuOwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOWVjZWY7Cn0KCi5kcm9wZG93bi1pdGVtIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAuMjVyZW0gMS41cmVtOwoJY2xlYXI6IGJvdGg7Cglmb250LXdlaWdodDogNDAwOwoJY29sb3I6ICMyMTI1Mjk7Cgl0ZXh0LWFsaWduOiBpbmhlcml0OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYm9yZGVyOiAwOwp9CgouZHJvcGRvd24taXRlbTpob3ZlciwgLmRyb3Bkb3duLWl0ZW06Zm9jdXMgewoJY29sb3I6ICMxNjE4MWI7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouZHJvcGRvd24taXRlbS5hY3RpdmUsIC5kcm9wZG93bi1pdGVtOmFjdGl2ZSB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5kcm9wZG93bi1pdGVtLmRpc2FibGVkLCAuZHJvcGRvd24taXRlbTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouZHJvcGRvd24tbWVudS5zaG93IHsKCWRpc3BsYXk6IGJsb2NrOwp9CgouZHJvcGRvd24taGVhZGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjVyZW0gMS41cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCWNvbG9yOiAjNmM3NTdkOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmRyb3Bkb3duLWl0ZW0tdGV4dCB7CglkaXNwbGF5OiBibG9jazsKCXBhZGRpbmc6IC4yNXJlbSAxLjVyZW07Cgljb2xvcjogIzIxMjUyOTsKfQoKLmJ0bi1ncm91cCwgLmJ0bi1ncm91cC12ZXJ0aWNhbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4OwoJZGlzcGxheTogaW5saW5lLWZsZXg7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgouYnRuLWdyb3VwID4gLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDAgMSBhdXRvOwoJZmxleDogMCAxIGF1dG87Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciB7Cgl6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsIC5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7Cgl6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouYnRuLXRvb2xiYXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CgouYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHsKCXdpZHRoOiBhdXRvOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5kcm9wZG93bi10b2dnbGUtc3BsaXQgewoJcGFkZGluZy1yaWdodDogLjU2MjVyZW07CglwYWRkaW5nLWxlZnQ6IC41NjI1cmVtOwp9CgouZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwgLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwgLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmJlZm9yZSB7CgltYXJnaW4tcmlnaHQ6IDA7Cn0KCi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLXNtID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQgewoJcGFkZGluZy1yaWdodDogLjM3NXJlbTsKCXBhZGRpbmctbGVmdDogLjM3NXJlbTsKfQoKLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtbGcgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CglwYWRkaW5nLXJpZ2h0OiAuNzVyZW07CglwYWRkaW5nLWxlZnQ6IC43NXJlbTsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgktbXMtZmxleC1hbGlnbjogc3RhcnQ7CglhbGlnbi1pdGVtczogZmxleC1zdGFydDsKCS1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4sIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCB7Cgl3aWR0aDogMTAwJTsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKCW1hcmdpbi10b3A6IC0xcHg7CgltYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmlucHV0LWdyb3VwIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LXdyYXA6IHdyYXA7CglmbGV4LXdyYXA6IHdyYXA7CgktbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKCWFsaWduLWl0ZW1zOiBzdHJldGNoOwoJd2lkdGg6IDEwMCU7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87Cgl3aWR0aDogMSU7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0ICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1maWxlLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tZmlsZSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1maWxlIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOmZvY3VzLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpmb2N1cywgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cgl6LWluZGV4OiAzOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHsKCXotaW5kZXg6IDQ7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpsYXN0LWNoaWxkKSB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQsIC5pbnB1dC1ncm91cC1hcHBlbmQgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4Owp9CgouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biB7CgltYXJnaW4tbGVmdDogLTFweDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgewoJbWFyZ2luLXJpZ2h0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAtYXBwZW5kIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAtdGV4dCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJYWxpZ24taXRlbXM6IGNlbnRlcjsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogMXJlbTsKCWZvbnQtd2VpZ2h0OiA0MDA7CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICM0OTUwNTc7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9InJhZGlvIl0sIC5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewoJbWFyZ2luLXRvcDogMDsKfQoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKCWhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgouaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4gewoJaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCkgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5jdXN0b20tY29udHJvbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiBibG9jazsKCW1pbi1oZWlnaHQ6IDEuNXJlbTsKCXBhZGRpbmctbGVmdDogMS41cmVtOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5saW5lIHsKCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CglkaXNwbGF5OiBpbmxpbmUtZmxleDsKCW1hcmdpbi1yaWdodDogMXJlbTsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IC0xOwoJb3BhY2l0eTogMDsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6YWN0aXZlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICM2Yzc1N2Q7Cn0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tY29udHJvbC1sYWJlbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC4yNXJlbTsKCWxlZnQ6IC0xLjVyZW07CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxcmVtOwoJaGVpZ2h0OiAxcmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cgljb250ZW50OiAiIjsKCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKCS1tb3otdXNlci1zZWxlY3Q6IG5vbmU7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJdXNlci1zZWxlY3Q6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2Owp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogLjI1cmVtOwoJbGVmdDogLTEuNXJlbTsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07Cgljb250ZW50OiAiIjsKCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwoJYmFja2dyb3VuZC1zaXplOiA1MCUgNTAlOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIHZpZXdCb3g9XCcwIDAgOCA4XCclM0UlM0NwYXRoIGZpbGw9XCclMjNmZmZcJyBkPVwnTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2IDIuOTc0IDcuMjUgOCAyLjE5M3pcJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPVwnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcJyB2aWV3Qm94PVwnMCAwIDQgNFwnJTNFJTNDcGF0aCBzdHJva2U9XCclMjNmZmZcJyBkPVwnTTAgMmg0XCcvJTNFJTNDL3N2ZyUzRSIpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIHZpZXdCb3g9XCctNCAtNCA4IDhcJyUzRSUzQ2NpcmNsZSByPVwnM1wnIGZpbGw9XCclMjNmZmZcJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0IHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjM3NXJlbSAxLjc1cmVtIC4zNzVyZW0gLjc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWJhY2tncm91bmQ6ICNmZmYgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz1cJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCcgdmlld0JveD1cJzAgMCA0IDVcJyUzRSUzQ3BhdGggZmlsbD1cJyUyMzM0M2E0MFwnIGQ9XCdNMiAwTDAgMmg0em0wIDVMMCAzaDR6XCcvJTNFJTNDL3N2ZyUzRSIpIG5vLXJlcGVhdCByaWdodCAuNzVyZW0gY2VudGVyOwoJYmFja2dyb3VuZC1zaXplOiA4cHggMTBweDsKCWJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpmb2N1cyB7Cglib3JkZXItY29sb3I6ICM4MGJkZmY7CglvdXRsaW5lOiAwOwoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMjgsIDE4OSwgMjU1LCAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUgewoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouY3VzdG9tLXNlbGVjdFttdWx0aXBsZV0sIC5jdXN0b20tc2VsZWN0W3NpemVdOm5vdChbc2l6ZT0iMSJdKSB7CgloZWlnaHQ6IGF1dG87CglwYWRkaW5nLXJpZ2h0OiAuNzVyZW07CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHsKCW9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tc2VsZWN0LXNtIHsKCWhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCWZvbnQtc2l6ZTogNzUlOwp9CgouY3VzdG9tLXNlbGVjdC1sZyB7CgloZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCWZvbnQtc2l6ZTogMTI1JTsKfQoKLmN1c3RvbS1maWxlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmN1c3RvbS1maWxlLWlucHV0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKCW1hcmdpbjogMDsKCW9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItY29sb3I6ICM4MGJkZmY7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogIzgwYmRmZjsKfQoKLmN1c3RvbS1maWxlLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpsYW5nKGVuKSB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewoJY29udGVudDogIkJyb3dzZSI7Cn0KCi5jdXN0b20tZmlsZS1sYWJlbCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjM3NXJlbSAuNzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCXotaW5kZXg6IDM7CglkaXNwbGF5OiBibG9jazsKCWhlaWdodDogMi4yNXJlbTsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJY29udGVudDogIkJyb3dzZSI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwoJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2VkNGRhOwoJYm9yZGVyLXJhZGl1czogMCAuMjVyZW0gLjI1cmVtIDA7Cn0KCi5jdXN0b20tcmFuZ2UgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nLWxlZnQ6IDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCS1tb3otYXBwZWFyYW5jZTogbm9uZTsKCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKCWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXMgewoJb3V0bGluZTogbm9uZTsKfQoKLmN1c3RvbS1yYW5nZTpmb2N1czo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tb3otcmFuZ2UtdGh1bWIgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tcy10aHVtYiB7Cglib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjI1KTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1vei1mb2N1cy1vdXRlciB7Cglib3JkZXI6IDA7Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKCXdpZHRoOiAxcmVtOwoJaGVpZ2h0OiAxcmVtOwoJbWFyZ2luLXRvcDogLS4yNXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXI6IDA7Cglib3JkZXItcmFkaXVzOiAxcmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7Cgl0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iOmFjdGl2ZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogLjVyZW07Cgljb2xvcjogdHJhbnNwYXJlbnQ7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1yYWRpdXM6IDFyZW07Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgewoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJYm9yZGVyOiAwOwoJYm9yZGVyLXJhZGl1czogMXJlbTsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJLW1vei1hcHBlYXJhbmNlOiBub25lOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwoJYXBwZWFyYW5jZTogbm9uZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYiB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWI6YWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdHJhY2sgewoJd2lkdGg6IDEwMCU7CgloZWlnaHQ6IC41cmVtOwoJY29sb3I6IHRyYW5zcGFyZW50OwoJY3Vyc29yOiBwb2ludGVyOwoJYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItcmFkaXVzOiAxcmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLXJpZ2h0OiAuMnJlbTsKCW1hcmdpbi1sZWZ0OiAuMnJlbTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXI6IDA7Cglib3JkZXItcmFkaXVzOiAxcmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7Cgl0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewoJCS13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKCQl0cmFuc2l0aW9uOiBub25lOwoJfQp9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWI6YWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogLjVyZW07Cgljb2xvcjogdHJhbnNwYXJlbnQ7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItd2lkdGg6IC41cmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC1sb3dlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwoJYm9yZGVyLXJhZGl1czogMXJlbTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtdXBwZXIgewoJbWFyZ2luLXJpZ2h0OiAxNXB4OwoJYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKCWJvcmRlci1yYWRpdXM6IDFyZW07Cn0KCi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tc2VsZWN0IHsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0Owp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5uYXYgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IDA7CglsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2LWxpbmsgewoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwp9CgoubmF2LWxpbms6aG92ZXIsIC5uYXYtbGluazpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXYtbGluay5kaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKfQoKLm5hdi10YWJzIHsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoubmF2LXRhYnMgLm5hdi1pdGVtIHsKCW1hcmdpbi1ib3R0b206IC0xcHg7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsgewoJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyLCAubmF2LXRhYnMgLm5hdi1saW5rOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsuZGlzYWJsZWQgewoJY29sb3I6ICM2Yzc1N2Q7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXRhYnMgLm5hdi1pdGVtLnNob3cgLm5hdi1saW5rIHsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNiAjZGVlMmU2ICNmZmY7Cn0KCi5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CgltYXJnaW4tdG9wOiAtMXB4OwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgoubmF2LXBpbGxzIC5uYXYtbGluayB7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5uYXYtZmlsbCAubmF2LWl0ZW0gewoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5uYXYtanVzdGlmaWVkIC5uYXYtaXRlbSB7CgktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCWZsZXgtYmFzaXM6IDA7CgktbXMtZmxleC1wb3NpdGl2ZTogMTsKCWZsZXgtZ3JvdzogMTsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi50YWItY29udGVudCA+IC5hY3RpdmUgewoJZGlzcGxheTogYmxvY2s7Cn0KCi5uYXZiYXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJLW1zLWZsZXgtcGFjazoganVzdGlmeTsKCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKCXBhZGRpbmc6IC41cmVtIDFyZW07Cn0KCi5uYXZiYXIgPiAuY29udGFpbmVyLCAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9CgoubmF2YmFyLWJyYW5kIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXBhZGRpbmctdG9wOiAuMzEyNXJlbTsKCXBhZGRpbmctYm90dG9tOiAuMzEyNXJlbTsKCW1hcmdpbi1yaWdodDogMXJlbTsKCWZvbnQtc2l6ZTogMS4yNXJlbTsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1icmFuZDpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXZiYXItbmF2IHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IDA7CglsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJcGFkZGluZy1yaWdodDogMDsKCXBhZGRpbmctbGVmdDogMDsKfQoKLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewoJcG9zaXRpb246IHN0YXRpYzsKCWZsb2F0OiBub25lOwp9CgoubmF2YmFyLXRleHQgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZy10b3A6IC41cmVtOwoJcGFkZGluZy1ib3R0b206IC41cmVtOwp9CgoubmF2YmFyLWNvbGxhcHNlIHsKCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwoJZmxleC1iYXNpczogMTAwJTsKCS1tcy1mbGV4LXBvc2l0aXZlOiAxOwoJZmxleC1ncm93OiAxOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlciB7CglwYWRkaW5nOiAuMjVyZW0gLjc1cmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDE7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXZiYXItdG9nZ2xlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlci1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxLjVlbTsKCWhlaWdodDogMS41ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJY29udGVudDogIiI7CgliYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKCWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKCS5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkIHsKCQlwYWRkaW5nLXJpZ2h0OiAwOwoJCXBhZGRpbmctbGVmdDogMDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkubmF2YmFyLWV4cGFuZC1zbSB7CgkJLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQlmbGV4LWZsb3c6IHJvdyBub3dyYXA7CgkJLW1zLWZsZXgtcGFjazogc3RhcnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CgkJZmxleC1kaXJlY3Rpb246IHJvdzsKCX0KCQoJLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewoJCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCX0KCQoJLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbTsKCQlwYWRkaW5nLWxlZnQ6IC41cmVtOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJLW1zLWZsZXgtd3JhcDogbm93cmFwOwoJCWZsZXgtd3JhcDogbm93cmFwOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLWNvbGxhcHNlIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCQktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKCQlmbGV4LWJhc2lzOiBhdXRvOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXIgewoJCWRpc3BsYXk6IG5vbmU7Cgl9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewoJLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewoJCXBhZGRpbmctcmlnaHQ6IDA7CgkJcGFkZGluZy1sZWZ0OiAwOwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5uYXZiYXItZXhwYW5kLW1kIHsKCQktbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwoJCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQktbXMtZmxleC1wYWNrOiBzdGFydDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCQlmbGV4LWRpcmVjdGlvbjogcm93OwoJfQoJCgkubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CgkJcG9zaXRpb246IGFic29sdXRlOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJCXBhZGRpbmctbGVmdDogLjVyZW07Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXA7CgkJZmxleC13cmFwOiBub3dyYXA7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2UgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwoJCWZsZXgtYmFzaXM6IGF1dG87Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItdG9nZ2xlciB7CgkJZGlzcGxheTogbm9uZTsKCX0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CgkubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJcGFkZGluZy1yaWdodDogMDsKCQlwYWRkaW5nLWxlZnQ6IDA7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLm5hdmJhci1leHBhbmQtbGcgewoJCS1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7CgkJZmxleC1mbG93OiByb3cgbm93cmFwOwoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwoJCWZsZXgtZGlyZWN0aW9uOiByb3c7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKCQlwb3NpdGlvbjogYWJzb2x1dGU7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CgkJcGFkZGluZy1yaWdodDogLjVyZW07CgkJcGFkZGluZy1sZWZ0OiAuNXJlbTsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItZmx1aWQgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKCQlmbGV4LXdyYXA6IG5vd3JhcDsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1jb2xsYXBzZSB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CgkJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CgkJZmxleC1iYXNpczogYXV0bzsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHsKCQlkaXNwbGF5OiBub25lOwoJfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CgkubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJcGFkZGluZy1yaWdodDogMDsKCQlwYWRkaW5nLWxlZnQ6IDA7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKCS5uYXZiYXItZXhwYW5kLXhsIHsKCQktbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwoJCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQktbXMtZmxleC1wYWNrOiBzdGFydDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCQlmbGV4LWRpcmVjdGlvbjogcm93OwoJfQoJCgkubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CgkJcG9zaXRpb246IGFic29sdXRlOwoJfQoJCgkubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJCXBhZGRpbmctbGVmdDogLjVyZW07Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXA7CgkJZmxleC13cmFwOiBub3dyYXA7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItY29sbGFwc2UgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwoJCWZsZXgtYmFzaXM6IGF1dG87Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlciB7CgkJZGlzcGxheTogbm9uZTsKCX0KfQoKLm5hdmJhci1leHBhbmQgewoJLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CgoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiB7CgktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCWZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJcGFkZGluZy1sZWZ0OiAuNXJlbTsKfQoKLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQgewoJLW1zLWZsZXgtd3JhcDogbm93cmFwOwoJZmxleC13cmFwOiBub3dyYXA7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItY29sbGFwc2UgewoJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CglmbGV4LWJhc2lzOiBhdXRvOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXIgewoJZGlzcGxheTogbm9uZTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC45KTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluayB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cyB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNyk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlciB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cglib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlci1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD1cJzAgMCAzMCAzMFwnIHhtbG5zPVwnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcJyUzRSUzQ3BhdGggc3Ryb2tlPVwncmdiYSgwLCAwLCAwLCAwLjUpXCcgc3Ryb2tlLXdpZHRoPVwnMlwnIHN0cm9rZS1saW5lY2FwPVwncm91bmRcJyBzdHJva2UtbWl0ZXJsaW1pdD1cJzEwXCcgZD1cJ000IDdoMjJNNCAxNWgyMk00IDIzaDIyXCcvJTNFJTNDL3N2ZyUzRSIpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmZvY3VzIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC45KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgewoJY29sb3I6ICNmZmY7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewoJY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjc1KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZCB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMjUpOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyIHsKCWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTsKCWJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXItaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9XCcwIDAgMzAgMzBcJyB4bWxucz1cJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCclM0UlM0NwYXRoIHN0cm9rZT1cJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwnIHN0cm9rZS13aWR0aD1cJzJcJyBzdHJva2UtbGluZWNhcD1cJ3JvdW5kXCcgc3Ryb2tlLW1pdGVybGltaXQ9XCcxMFwnIGQ9XCdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMlwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYSB7Cgljb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IGE6Zm9jdXMgewoJY29sb3I6ICNmZmY7Cn0KCi5jYXJkIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCW1pbi13aWR0aDogMDsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKCWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKCWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjEyNSk7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5jYXJkID4gaHIgewoJbWFyZ2luLXJpZ2h0OiAwOwoJbWFyZ2luLWxlZnQ6IDA7Cn0KCi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgouY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5jYXJkLWJvZHkgewoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87CglwYWRkaW5nOiAxLjI1cmVtOwp9CgouY2FyZC10aXRsZSB7CgltYXJnaW4tYm90dG9tOiAuNzVyZW07Cn0KCi5jYXJkLXN1YnRpdGxlIHsKCW1hcmdpbi10b3A6IC0uMzc1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmNhcmQtdGV4dDpsYXN0LWNoaWxkIHsKCW1hcmdpbi1ib3R0b206IDA7Cn0KCi5jYXJkLWxpbms6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouY2FyZC1saW5rICsgLmNhcmQtbGluayB7CgltYXJnaW4tbGVmdDogMS4yNXJlbTsKfQoKLmNhcmQtaGVhZGVyIHsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjAzKTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4xMjUpOwp9CgouY2FyZC1oZWFkZXI6Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXJhZGl1czogY2FsYyguMjVyZW0gLSAxcHgpIGNhbGMoLjI1cmVtIC0gMXB4KSAwIDA7Cn0KCi5jYXJkLWhlYWRlciArIC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXRvcDogMDsKfQoKLmNhcmQtZm9vdGVyIHsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDMpOwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjEyNSk7Cn0KCi5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHsKCWJvcmRlci1yYWRpdXM6IDAgMCBjYWxjKC4yNXJlbSAtIDFweCkgY2FsYyguMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1oZWFkZXItdGFicyB7CgltYXJnaW4tcmlnaHQ6IC0uNjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogLS43NXJlbTsKCW1hcmdpbi1sZWZ0OiAtLjYyNXJlbTsKCWJvcmRlci1ib3R0b206IDA7Cn0KCi5jYXJkLWhlYWRlci1waWxscyB7CgltYXJnaW4tcmlnaHQ6IC0uNjI1cmVtOwoJbWFyZ2luLWxlZnQ6IC0uNjI1cmVtOwp9CgouY2FyZC1pbWctb3ZlcmxheSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWxlZnQ6IDA7CglwYWRkaW5nOiAxLjI1cmVtOwp9CgouY2FyZC1pbWcgewoJd2lkdGg6IDEwMCU7Cglib3JkZXItcmFkaXVzOiBjYWxjKC4yNXJlbSAtIDFweCk7Cn0KCi5jYXJkLWltZy10b3AgewoJd2lkdGg6IDEwMCU7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKC4yNXJlbSAtIDFweCk7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYyguMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1pbWctYm90dG9tIHsKCXdpZHRoOiAxMDAlOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGNhbGMoLjI1cmVtIC0gMXB4KTsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IGNhbGMoLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtZGVjayB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWRlY2sgLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY2FyZC1kZWNrIHsKCQktbXMtZmxleC1mbG93OiByb3cgd3JhcDsKCQlmbGV4LWZsb3c6IHJvdyB3cmFwOwoJCW1hcmdpbi1yaWdodDogLTE1cHg7CgkJbWFyZ2luLWxlZnQ6IC0xNXB4OwoJfQoJCgkuY2FyZC1kZWNrIC5jYXJkIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleDogMSAwIDAlOwoJCWZsZXg6IDEgMCAwJTsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJCW1hcmdpbi1yaWdodDogMTVweDsKCQltYXJnaW4tYm90dG9tOiAwOwoJCW1hcmdpbi1sZWZ0OiAxNXB4OwoJfQp9CgouY2FyZC1ncm91cCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWdyb3VwID4gLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY2FyZC1ncm91cCB7CgkJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CgkJZmxleC1mbG93OiByb3cgd3JhcDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CgkJLW1zLWZsZXg6IDEgMCAwJTsKCQlmbGV4OiAxIDAgMCU7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZCArIC5jYXJkIHsKCQltYXJnaW4tbGVmdDogMDsKCQlib3JkZXItbGVmdDogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCB7CgkJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CgkJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewoJCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtZm9vdGVyIHsKCQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaGVhZGVyIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWZvb3RlciB7CgkJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIHsKCQlib3JkZXItcmFkaXVzOiAuMjVyZW07Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaGVhZGVyIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07CgkJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbTsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1mb290ZXIgewoJCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07CgkJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjI1cmVtOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSB7CgkJYm9yZGVyLXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaGVhZGVyLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1mb290ZXIgewoJCWJvcmRlci1yYWRpdXM6IDA7Cgl9Cn0KCi5jYXJkLWNvbHVtbnMgLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogLjc1cmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5jYXJkLWNvbHVtbnMgewoJCS1tb3otY29sdW1uLWNvdW50OiAzOwoJCS13ZWJraXQtY29sdW1uLWNvdW50OiAzOwoJCWNvbHVtbi1jb3VudDogMzsKCQktbW96LWNvbHVtbi1nYXA6IDEuMjVyZW07CgkJLXdlYmtpdC1jb2x1bW4tZ2FwOiAxLjI1cmVtOwoJCWNvbHVtbi1nYXA6IDEuMjVyZW07CgkJb3JwaGFuczogMTsKCQl3aWRvd3M6IDE7Cgl9CgkKCS5jYXJkLWNvbHVtbnMgLmNhcmQgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCQl3aWR0aDogMTAwJTsKCX0KfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpOm5vdCg6bGFzdC1vZi10eXBlKSB7Cglib3JkZXItYm90dG9tOiAwOwoJYm9yZGVyLXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpIC5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7Cglib3JkZXItcmFkaXVzOiAwOwp9CgouYWNjb3JkaW9uIC5jYXJkOmZpcnN0LW9mLXR5cGUgewoJYm9yZGVyLWJvdHRvbTogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpsYXN0LW9mLXR5cGUgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgouYnJlYWRjcnVtYiB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJcGFkZGluZzogLjc1cmVtIDFyZW07CgltYXJnaW4tYm90dG9tOiAxcmVtOwoJbGlzdC1zdHlsZTogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtIHsKCXBhZGRpbmctbGVmdDogLjVyZW07Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOjpiZWZvcmUgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZy1yaWdodDogLjVyZW07Cgljb2xvcjogIzZjNzU3ZDsKCWNvbnRlbnQ6ICIvIjsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5icmVhZGNydW1iLWl0ZW0uYWN0aXZlIHsKCWNvbG9yOiAjNmM3NTdkOwp9CgoucGFnaW5hdGlvbiB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CglwYWRkaW5nLWxlZnQ6IDA7CglsaXN0LXN0eWxlOiBub25lOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoucGFnZS1saW5rIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjVyZW0gLjc1cmVtOwoJbWFyZ2luLWxlZnQ6IC0xcHg7CglsaW5lLWhlaWdodDogMS4yNTsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi5wYWdlLWxpbms6aG92ZXIgewoJei1pbmRleDogMjsKCWNvbG9yOiAjMDA1NmIzOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2UtbGluazpmb2N1cyB7Cgl6LWluZGV4OiAyOwoJb3V0bGluZTogMDsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5wYWdlLWxpbms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewoJY3Vyc29yOiBwb2ludGVyOwp9CgoucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewoJbWFyZ2luLWxlZnQ6IDA7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHsKCXotaW5kZXg6IDE7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5wYWdlLWl0ZW0uZGlzYWJsZWQgLnBhZ2UtbGluayB7Cgljb2xvcjogIzZjNzU3ZDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwoJY3Vyc29yOiBhdXRvOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7CglwYWRkaW5nOiAuNzVyZW0gMS41cmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4zcmVtOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjNyZW07Cn0KCi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuM3JlbTsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuM3JlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjJyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMnJlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4ycmVtOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC4ycmVtOwp9CgouYmFkZ2UgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZzogLjI1ZW0gLjRlbTsKCWZvbnQtc2l6ZTogNzUlOwoJZm9udC13ZWlnaHQ6IDcwMDsKCWxpbmUtaGVpZ2h0OiAxOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCXZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmJhZGdlOmVtcHR5IHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5idG4gLmJhZGdlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRvcDogLTFweDsKfQoKLmJhZGdlLXBpbGwgewoJcGFkZGluZy1yaWdodDogLjZlbTsKCXBhZGRpbmctbGVmdDogLjZlbTsKCWJvcmRlci1yYWRpdXM6IDEwcmVtOwp9CgouYmFkZ2UtcHJpbWFyeSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2UtcHJpbWFyeVtocmVmXTpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cn0KCi5iYWRnZS1zZWNvbmRhcnkgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwp9CgouYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MjsKfQoKLmJhZGdlLXN1Y2Nlc3MgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1Owp9CgouYmFkZ2Utc3VjY2Vzc1tocmVmXTpob3ZlciwgLmJhZGdlLXN1Y2Nlc3NbaHJlZl06Zm9jdXMgewoJY29sb3I6ICNmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0Owp9CgouYmFkZ2UtaW5mbyB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cn0KCi5iYWRnZS1pbmZvW2hyZWZdOmhvdmVyLCAuYmFkZ2UtaW5mb1tocmVmXTpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMxMTdhOGI7Cn0KCi5iYWRnZS13YXJuaW5nIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKfQoKLmJhZGdlLXdhcm5pbmdbaHJlZl06aG92ZXIsIC5iYWRnZS13YXJuaW5nW2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjMjEyNTI5OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDsKfQoKLmJhZGdlLWRhbmdlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cn0KCi5iYWRnZS1kYW5nZXJbaHJlZl06aG92ZXIsIC5iYWRnZS1kYW5nZXJbaHJlZl06Zm9jdXMgewoJY29sb3I6ICNmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwOwp9CgouYmFkZ2UtbGlnaHQgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIsIC5iYWRnZS1saWdodFtocmVmXTpmb2N1cyB7Cgljb2xvcjogIzIxMjUyOTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7Cn0KCi5iYWRnZS1kYXJrIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKfQoKLmJhZGdlLWRhcmtbaHJlZl06aG92ZXIsIC5iYWRnZS1kYXJrW2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNDsKfQoKLmp1bWJvdHJvbiB7CglwYWRkaW5nOiAycmVtIDFyZW07CgltYXJnaW4tYm90dG9tOiAycmVtOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5qdW1ib3Ryb24gewoJCXBhZGRpbmc6IDRyZW0gMnJlbTsKCX0KfQoKLmp1bWJvdHJvbi1mbHVpZCB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwoJYm9yZGVyLXJhZGl1czogMDsKfQoKLmFsZXJ0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgouYWxlcnQtaGVhZGluZyB7Cgljb2xvcjogaW5oZXJpdDsKfQoKLmFsZXJ0LWxpbmsgewoJZm9udC13ZWlnaHQ6IDcwMDsKfQoKLmFsZXJ0LWRpc21pc3NpYmxlIHsKCXBhZGRpbmctcmlnaHQ6IDRyZW07Cn0KCi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2UgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJcmlnaHQ6IDA7CglwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsKCWNvbG9yOiBpbmhlcml0Owp9CgouYWxlcnQtcHJpbWFyeSB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICNjY2U1ZmY7Cglib3JkZXItY29sb3I6ICNiOGRhZmY7Cn0KCi5hbGVydC1wcmltYXJ5IGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICM5ZWNkZmY7Cn0KCi5hbGVydC1wcmltYXJ5IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDAyNzUyOwp9CgouYWxlcnQtc2Vjb25kYXJ5IHsKCWNvbG9yOiAjMzgzZDQxOwoJYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTsKCWJvcmRlci1jb2xvcjogI2Q2ZDhkYjsKfQoKLmFsZXJ0LXNlY29uZGFyeSBociB7Cglib3JkZXItdG9wLWNvbG9yOiAjYzhjY2NmOwp9CgouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMjEyMzI2Owp9CgouYWxlcnQtc3VjY2VzcyB7Cgljb2xvcjogIzE1NTcyNDsKCWJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7Cglib3JkZXItY29sb3I6ICNjM2U2Y2I7Cn0KCi5hbGVydC1zdWNjZXNzIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNiMWRmYmI7Cn0KCi5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMGIyZTEzOwp9CgouYWxlcnQtaW5mbyB7Cgljb2xvcjogIzBjNTQ2MDsKCWJhY2tncm91bmQtY29sb3I6ICNkMWVjZjE7Cglib3JkZXItY29sb3I6ICNiZWU1ZWI7Cn0KCi5hbGVydC1pbmZvIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7Cn0KCi5hbGVydC1pbmZvIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDYyYzMyOwp9CgouYWxlcnQtd2FybmluZyB7Cgljb2xvcjogIzg1NjQwNDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7Cglib3JkZXItY29sb3I6ICNmZmVlYmE7Cn0KCi5hbGVydC13YXJuaW5nIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNmZmU3YTA7Cn0KCi5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNTMzZjAyOwp9CgouYWxlcnQtZGFuZ2VyIHsKCWNvbG9yOiAjNzIxYzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTsKCWJvcmRlci1jb2xvcjogI2Y1YzZjYjsKfQoKLmFsZXJ0LWRhbmdlciBociB7Cglib3JkZXItdG9wLWNvbG9yOiAjZjFiMWI3Owp9CgouYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNDkxMjE3Owp9CgouYWxlcnQtbGlnaHQgewoJY29sb3I6ICM4MTgxODI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlOwoJYm9yZGVyLWNvbG9yOiAjZmRmZGZlOwp9CgouYWxlcnQtbGlnaHQgaHIgewoJYm9yZGVyLXRvcC1jb2xvcjogI2YxZjFmMTsKfQoKLmFsZXJ0LWxpZ2h0IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNjg2ODY4Owp9CgouYWxlcnQtZGFyayB7Cgljb2xvcjogIzFiMWUyMTsKCWJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7Cglib3JkZXItY29sb3I6ICNjNmM4Y2E7Cn0KCi5hbGVydC1kYXJrIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNiOWJiYmQ7Cn0KCi5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDQwNTA1Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewoJZnJvbSB7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjogMXJlbSAwOwoJfQoJCgl0byB7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwoJfQp9CgpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKCWZyb20gewoJCWJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsKCX0KCQoJdG8gewoJCWJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKCX0KfQoKLnByb2dyZXNzIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCWhlaWdodDogMXJlbTsKCW92ZXJmbG93OiBoaWRkZW47Cglmb250LXNpemU6IC43NXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5wcm9ncmVzcy1iYXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJLW1zLWZsZXgtcGFjazogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cgljb2xvcjogI2ZmZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKCXdoaXRlLXNwYWNlOiBub3dyYXA7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAuNnMgZWFzZTsKCXRyYW5zaXRpb246IHdpZHRoIC42cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkucHJvZ3Jlc3MtYmFyIHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLnByb2dyZXNzLWJhci1zdHJpcGVkIHsKCWJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiAxcmVtIDFyZW07Cn0KCi5wcm9ncmVzcy1iYXItYW5pbWF0ZWQgewoJLXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKCWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlOwp9CgoubWVkaWEgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Cn0KCi5tZWRpYS1ib2R5IHsKCS1tcy1mbGV4OiAxOwoJZmxleDogMTsKfQoKLmxpc3QtZ3JvdXAgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJcGFkZGluZy1sZWZ0OiAwOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gewoJd2lkdGg6IDEwMCU7Cgljb2xvcjogIzQ5NTA1NzsKCXRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzQ5NTA1NzsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmFjdGl2ZSB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsKCW1hcmdpbi1ib3R0b206IC0xcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTI1KTsKfQoKLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewoJbWFyZ2luLWJvdHRvbTogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5saXN0LWdyb3VwLWl0ZW06aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgewoJei1pbmRleDogMTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCwgLmxpc3QtZ3JvdXAtaXRlbTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsKCXotaW5kZXg6IDI7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5saXN0LWdyb3VwLWZsdXNoIC5saXN0LWdyb3VwLWl0ZW0gewoJYm9yZGVyLXJpZ2h0OiAwOwoJYm9yZGVyLWxlZnQ6IDA7Cglib3JkZXItcmFkaXVzOiAwOwp9CgoubGlzdC1ncm91cC1mbHVzaDpmaXJzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKCWJvcmRlci10b3A6IDA7Cn0KCi5saXN0LWdyb3VwLWZsdXNoOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKCWJvcmRlci1ib3R0b206IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeSB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDQwODU7Cglib3JkZXItY29sb3I6ICMwMDQwODU7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5IHsKCWNvbG9yOiAjMzgzZDQxOwoJYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzM4M2Q0MTsKCWJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM4M2Q0MTsKCWJvcmRlci1jb2xvcjogIzM4M2Q0MTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsKCWNvbG9yOiAjMTU1NzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMTU1NzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzE1NTcyNDsKCWJvcmRlci1jb2xvcjogIzE1NTcyNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKCWNvbG9yOiAjMGM1NDYwOwoJYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMGM1NDYwOwoJYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzBjNTQ2MDsKCWJvcmRlci1jb2xvcjogIzBjNTQ2MDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHsKCWNvbG9yOiAjODU2NDA0OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjODU2NDA0OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzg1NjQwNDsKCWJvcmRlci1jb2xvcjogIzg1NjQwNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewoJY29sb3I6ICM3MjFjMjQ7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiOwp9CgoubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjNzIxYzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNzIxYzI0OwoJYm9yZGVyLWNvbG9yOiAjNzIxYzI0Owp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0IHsKCWNvbG9yOiAjODE4MTgyOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewoJY29sb3I6ICM4MTgxODI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzgxODE4MjsKCWJvcmRlci1jb2xvcjogIzgxODE4MjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrIHsKCWNvbG9yOiAjMWIxZTIxOwoJYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMWIxZTIxOwoJYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzFiMWUyMTsKCWJvcmRlci1jb2xvcjogIzFiMWUyMTsKfQoKLmNsb3NlIHsKCWZsb2F0OiByaWdodDsKCWZvbnQtc2l6ZTogMS41cmVtOwoJZm9udC13ZWlnaHQ6IDcwMDsKCWxpbmUtaGVpZ2h0OiAxOwoJY29sb3I6ICMwMDA7Cgl0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwoJb3BhY2l0eTogLjU7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmNsb3NlOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmZvY3VzIHsKCWNvbG9yOiAjMDAwOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJb3BhY2l0eTogLjc1Owp9CgpidXR0b24uY2xvc2UgewoJcGFkZGluZzogMDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYm9yZGVyOiAwOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgoubW9kYWwtb3BlbiB7CglvdmVyZmxvdzogaGlkZGVuOwp9CgoubW9kYWwtb3BlbiAubW9kYWwgewoJb3ZlcmZsb3cteDogaGlkZGVuOwoJb3ZlcmZsb3cteTogYXV0bzsKfQoKLm1vZGFsIHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXJpZ2h0OiAwOwoJYm90dG9tOiAwOwoJbGVmdDogMDsKCXotaW5kZXg6IDEwNTA7CglkaXNwbGF5OiBub25lOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCW91dGxpbmU6IDA7Cn0KCi5tb2RhbC1kaWFsb2cgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJd2lkdGg6IGF1dG87CgltYXJnaW46IC41cmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewoJLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7Cgl0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0OwoJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZyB7Cgktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwoJdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7Cn0KCi5tb2RhbC1kaWFsb2ctY2VudGVyZWQgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgltaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoIC41cmVtICogMiApKTsKfQoKLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKCWRpc3BsYXk6IGJsb2NrOwoJaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKCAuNXJlbSAqIDIgKSk7Cgljb250ZW50OiAiIjsKfQoKLm1vZGFsLWNvbnRlbnQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJd2lkdGg6IDEwMCU7Cglwb2ludGVyLWV2ZW50czogYXV0bzsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMik7Cglib3JkZXItcmFkaXVzOiAuM3JlbTsKCW91dGxpbmU6IDA7Cn0KCi5tb2RhbC1iYWNrZHJvcCB7Cglwb3NpdGlvbjogZml4ZWQ7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxMDQwOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoKLm1vZGFsLWJhY2tkcm9wLmZhZGUgewoJb3BhY2l0eTogMDsKfQoKLm1vZGFsLWJhY2tkcm9wLnNob3cgewoJb3BhY2l0eTogLjU7Cn0KCi5tb2RhbC1oZWFkZXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwoJcGFkZGluZzogMXJlbTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTllY2VmOwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjNyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjNyZW07Cn0KCi5tb2RhbC1oZWFkZXIgLmNsb3NlIHsKCXBhZGRpbmc6IDFyZW07CgltYXJnaW46IC0xcmVtIC0xcmVtIC0xcmVtIGF1dG87Cn0KCi5tb2RhbC10aXRsZSB7CgltYXJnaW4tYm90dG9tOiAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKfQoKLm1vZGFsLWJvZHkgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87CglwYWRkaW5nOiAxcmVtOwp9CgoubW9kYWwtZm9vdGVyIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJLW1zLWZsZXgtcGFjazogZW5kOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCXBhZGRpbmc6IDFyZW07Cglib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsKfQoKLm1vZGFsLWZvb3RlciA+IDpub3QoOmZpcnN0LWNoaWxkKSB7CgltYXJnaW4tbGVmdDogLjI1cmVtOwp9CgoubW9kYWwtZm9vdGVyID4gOm5vdCg6bGFzdC1jaGlsZCkgewoJbWFyZ2luLXJpZ2h0OiAuMjVyZW07Cn0KCi5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC05OTk5cHg7Cgl3aWR0aDogNTBweDsKCWhlaWdodDogNTBweDsKCW92ZXJmbG93OiBzY3JvbGw7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewoJLm1vZGFsLWRpYWxvZyB7CgkJbWF4LXdpZHRoOiA1MDBweDsKCQltYXJnaW46IDEuNzVyZW0gYXV0bzsKCX0KCQoJLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CgkJbWluLWhlaWdodDogY2FsYygxMDAlIC0gKCAxLjc1cmVtICogMiApKTsKCX0KCQoJLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKCQloZWlnaHQ6IGNhbGMoMTAwdmggLSAoIDEuNzVyZW0gKiAyICkpOwoJfQoJCgkubW9kYWwtc20gewoJCW1heC13aWR0aDogMzAwcHg7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLm1vZGFsLWxnIHsKCQltYXgtd2lkdGg6IDgwMHB4OwoJfQp9CgoudG9vbHRpcCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAxMDcwOwoJZGlzcGxheTogYmxvY2s7CgltYXJnaW46IDA7Cglmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmLCAiQXBwbGUgQ29sb3IgRW1vamkiLCAiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIiwgIk5vdG8gQ29sb3IgRW1vamkiOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IDQwMDsKCWxpbmUtaGVpZ2h0OiAxLjU7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJdGV4dC1hbGlnbjogc3RhcnQ7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cgl0ZXh0LXNoYWRvdzogbm9uZTsKCXRleHQtdHJhbnNmb3JtOiBub25lOwoJbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsKCXdvcmQtYnJlYWs6IG5vcm1hbDsKCXdvcmQtc3BhY2luZzogbm9ybWFsOwoJd2hpdGUtc3BhY2U6IG5vcm1hbDsKCWxpbmUtYnJlYWs6IGF1dG87Cglmb250LXNpemU6IC44NzVyZW07Cgl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CglvcGFjaXR5OiAwOwp9CgoudG9vbHRpcC5zaG93IHsKCW9wYWNpdHk6IC45Owp9CgoudG9vbHRpcCAuYXJyb3cgewoJcG9zaXRpb246IGFic29sdXRlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogLjhyZW07CgloZWlnaHQ6IC40cmVtOwp9CgoudG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgljb250ZW50OiAiIjsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItc3R5bGU6IHNvbGlkOwp9CgouYnMtdG9vbHRpcC10b3AsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSB7CglwYWRkaW5nOiAuNHJlbSAwOwp9CgouYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKCWJvdHRvbTogMDsKfQoKLmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgewoJdG9wOiAwOwoJYm9yZGVyLXdpZHRoOiAuNHJlbSAuNHJlbSAwOwoJYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoKLmJzLXRvb2x0aXAtcmlnaHQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKCXBhZGRpbmc6IDAgLjRyZW07Cn0KCi5icy10b29sdGlwLXJpZ2h0IC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKCWxlZnQ6IDA7Cgl3aWR0aDogLjRyZW07CgloZWlnaHQ6IC44cmVtOwp9CgouYnMtdG9vbHRpcC1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUgewoJcmlnaHQ6IDA7Cglib3JkZXItd2lkdGg6IC40cmVtIC40cmVtIC40cmVtIDA7Cglib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKCXBhZGRpbmc6IC40cmVtIDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewoJdG9wOiAwOwp9CgouYnMtdG9vbHRpcC1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7Cglib3R0b206IDA7Cglib3JkZXItd2lkdGg6IDAgLjRyZW0gLjRyZW07Cglib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9CgouYnMtdG9vbHRpcC1sZWZ0LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCXBhZGRpbmc6IDAgLjRyZW07Cn0KCi5icy10b29sdGlwLWxlZnQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7CglyaWdodDogMDsKCXdpZHRoOiAuNHJlbTsKCWhlaWdodDogLjhyZW07Cn0KCi5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUgewoJbGVmdDogMDsKCWJvcmRlci13aWR0aDogLjRyZW0gMCAuNHJlbSAuNHJlbTsKCWJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9CgoudG9vbHRpcC1pbm5lciB7CgltYXgtd2lkdGg6IDIwMHB4OwoJcGFkZGluZzogLjI1cmVtIC41cmVtOwoJY29sb3I6ICNmZmY7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoucG9wb3ZlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJei1pbmRleDogMTA2MDsKCWRpc3BsYXk6IGJsb2NrOwoJbWF4LXdpZHRoOiAyNzZweDsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7Cglmb250LXN0eWxlOiBub3JtYWw7Cglmb250LXdlaWdodDogNDAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKCXRleHQtYWxpZ246IGxlZnQ7Cgl0ZXh0LWFsaWduOiBzdGFydDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXRleHQtc2hhZG93OiBub25lOwoJdGV4dC10cmFuc2Zvcm06IG5vbmU7CglsZXR0ZXItc3BhY2luZzogbm9ybWFsOwoJd29yZC1icmVhazogbm9ybWFsOwoJd29yZC1zcGFjaW5nOiBub3JtYWw7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwoJbGluZS1icmVhazogYXV0bzsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMik7Cglib3JkZXItcmFkaXVzOiAuM3JlbTsKfQoKLnBvcG92ZXIgLmFycm93IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IC41cmVtOwoJbWFyZ2luOiAwIC4zcmVtOwp9CgoucG9wb3ZlciAuYXJyb3c6OmJlZm9yZSwgLnBvcG92ZXIgLmFycm93OjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglkaXNwbGF5OiBibG9jazsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1zdHlsZTogc29saWQ7Cn0KCi5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgouYnMtcG9wb3Zlci10b3AgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKCWJvdHRvbTogY2FsYygoIC41cmVtICsgMXB4ICkgKiAtMSk7Cn0KCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewoJYm9yZGVyLXdpZHRoOiAuNXJlbSAuNXJlbSAwOwp9CgouYnMtcG9wb3Zlci10b3AgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmJlZm9yZSB7Cglib3R0b206IDA7Cglib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7Cn0KCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjphZnRlciB7Cglib3R0b206IDFweDsKCWJvcmRlci10b3AtY29sb3I6ICNmZmY7Cn0KCi5icy1wb3BvdmVyLXJpZ2h0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSB7CgltYXJnaW4tbGVmdDogLjVyZW07Cn0KCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKCWxlZnQ6IGNhbGMoKCAuNXJlbSArIDFweCApICogLTEpOwoJd2lkdGg6IC41cmVtOwoJaGVpZ2h0OiAxcmVtOwoJbWFyZ2luOiAuM3JlbSAwOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YWZ0ZXIgewoJYm9yZGVyLXdpZHRoOiAuNXJlbSAuNXJlbSAuNXJlbSAwOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUgewoJbGVmdDogMDsKCWJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMjUpOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVyIHsKCWxlZnQ6IDFweDsKCWJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjsKfQoKLmJzLXBvcG92ZXItYm90dG9tLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gewoJbWFyZ2luLXRvcDogLjVyZW07Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewoJdG9wOiBjYWxjKCggLjVyZW0gKyAxcHggKSAqIC0xKTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjphZnRlciB7Cglib3JkZXItd2lkdGg6IDAgLjVyZW0gLjVyZW0gLjVyZW07Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YmVmb3JlIHsKCXRvcDogMDsKCWJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgLjI1KTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmFmdGVyIHsKCXRvcDogMXB4OwoJYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLnBvcG92ZXItaGVhZGVyOjpiZWZvcmUgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJbGVmdDogNTAlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMXJlbTsKCW1hcmdpbi1sZWZ0OiAtLjVyZW07Cgljb250ZW50OiAiIjsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdmN2Y3Owp9CgouYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCW1hcmdpbi1yaWdodDogLjVyZW07Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7CglyaWdodDogY2FsYygoIC41cmVtICsgMXB4ICkgKiAtMSk7Cgl3aWR0aDogLjVyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW46IC4zcmVtIDA7Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmFmdGVyIHsKCWJvcmRlci13aWR0aDogLjVyZW0gMCAuNXJlbSAuNXJlbTsKfQoKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSB7CglyaWdodDogMDsKCWJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmFmdGVyIHsKCXJpZ2h0OiAxcHg7Cglib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoKLnBvcG92ZXItaGVhZGVyIHsKCXBhZGRpbmc6IC41cmVtIC43NXJlbTsKCW1hcmdpbi1ib3R0b206IDA7Cglmb250LXNpemU6IDFyZW07Cgljb2xvcjogaW5oZXJpdDsKCWJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7Cglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGNhbGMoLjNyZW0gLSAxcHgpOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGMoLjNyZW0gLSAxcHgpOwp9CgoucG9wb3Zlci1oZWFkZXI6ZW1wdHkgewoJZGlzcGxheTogbm9uZTsKfQoKLnBvcG92ZXItYm9keSB7CglwYWRkaW5nOiAuNXJlbSAuNzVyZW07Cgljb2xvcjogIzIxMjUyOTsKfQoKLmNhcm91c2VsIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmNhcm91c2VsLWlubmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXdpZHRoOiAxMDAlOwoJb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmNhcm91c2VsLWl0ZW0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogbm9uZTsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJd2lkdGg6IDEwMCU7Cgktd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKCWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKCS13ZWJraXQtcGVyc3BlY3RpdmU6IDEwMDBweDsKCXBlcnNwZWN0aXZlOiAxMDAwcHg7Cn0KCi5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwgLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7CglkaXNwbGF5OiBibG9jazsKCS13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UsIG1hcmdpbiAuNnMgZWFzZTsKCXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIC42cyBlYXNlLCBtYXJnaW4gLjZzIGVhc2U7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjZzIGVhc2UsIG1hcmdpbiAuNnMgZWFzZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7Cn0KCi5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewoJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cgl0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KCkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7CgkuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKCQktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CgkJdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKCX0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwoJdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwp9CgpAc3VwcG9ydHMgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIHsKCS5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CgkJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwoJCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1pdGVtLXByZXYsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IHsKCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7Cn0KCkBzdXBwb3J0cyAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgewoJLmNhcm91c2VsLWl0ZW0tcHJldiwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQgewoJCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CgkJdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtIHsKCW9wYWNpdHk6IDA7Cgl0cmFuc2l0aW9uLWR1cmF0aW9uOiAuNnM7Cgl0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewoJb3BhY2l0eTogMTsKfQoKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CglvcGFjaXR5OiAwOwp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7Cgktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKfQoKQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CgkuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7CgkJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwoJCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYsIC5jYXJvdXNlbC1jb250cm9sLW5leHQgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgktbXMtZmxleC1wYWNrOiBjZW50ZXI7CglqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCXdpZHRoOiAxNSU7Cgljb2xvcjogI2ZmZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW9wYWNpdHk6IC41Owp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJb3V0bGluZTogMDsKCW9wYWNpdHk6IC45Owp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2IHsKCWxlZnQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLW5leHQgewoJcmlnaHQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAyMHB4OwoJaGVpZ2h0OiAyMHB4OwoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7CgliYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIGZpbGw9XCclMjNmZmZcJyB2aWV3Qm94PVwnMCAwIDggOFwnJTNFJTNDcGF0aCBkPVwnTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41elwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIGZpbGw9XCclMjNmZmZcJyB2aWV3Qm94PVwnMCAwIDggOFwnJTNFJTNDcGF0aCBkPVwnTTIuNzUgMGwtMS41IDEuNSAyLjUgMi41LTIuNSAyLjUgMS41IDEuNSA0LTQtNC00elwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IDA7Cglib3R0b206IDEwcHg7CglsZWZ0OiAwOwoJei1pbmRleDogMTU7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1wYWNrOiBjZW50ZXI7CglqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1yaWdodDogMTUlOwoJbWFyZ2luLWxlZnQ6IDE1JTsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCS1tcy1mbGV4OiAwIDEgYXV0bzsKCWZsZXg6IDAgMSBhdXRvOwoJd2lkdGg6IDMwcHg7CgloZWlnaHQ6IDNweDsKCW1hcmdpbi1yaWdodDogM3B4OwoJbWFyZ2luLWxlZnQ6IDNweDsKCXRleHQtaW5kZW50OiAtOTk5cHg7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC0xMHB4OwoJbGVmdDogMDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMHB4OwoJY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cglib3R0b206IC0xMHB4OwoJbGVmdDogMDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMHB4OwoJY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmNhcm91c2VsLWNhcHRpb24gewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IDE1JTsKCWJvdHRvbTogMjBweDsKCWxlZnQ6IDE1JTsKCXotaW5kZXg6IDEwOwoJcGFkZGluZy10b3A6IDIwcHg7CglwYWRkaW5nLWJvdHRvbTogMjBweDsKCWNvbG9yOiAjZmZmOwoJdGV4dC1hbGlnbjogY2VudGVyOwp9CgouYWxpZ24tYmFzZWxpbmUgewoJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi10b3AgewoJdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9CgouYWxpZ24tbWlkZGxlIHsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDsKfQoKLmFsaWduLWJvdHRvbSB7Cgl2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi10ZXh0LWJvdHRvbSB7Cgl2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsKfQoKLmFsaWduLXRleHQtdG9wIHsKCXZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50Owp9CgouYmctcHJpbWFyeSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCmEuYmctcHJpbWFyeTpob3ZlciwgYnV0dG9uLmJnLXByaW1hcnk6aG92ZXIsIGEuYmctcHJpbWFyeTpmb2N1cywgYnV0dG9uLmJnLXByaW1hcnk6Zm9jdXMgewoJYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9CgouYmctc2Vjb25kYXJ5IHsKCWJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKYS5iZy1zZWNvbmRhcnk6aG92ZXIsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6aG92ZXIsIGEuYmctc2Vjb25kYXJ5OmZvY3VzLCBidXR0b24uYmctc2Vjb25kYXJ5OmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICM1NDViNjIgIWltcG9ydGFudDsKfQoKLmJnLXN1Y2Nlc3MgewoJYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CgphLmJnLXN1Y2Nlc3M6aG92ZXIsIGJ1dHRvbi5iZy1zdWNjZXNzOmhvdmVyLCBhLmJnLXN1Y2Nlc3M6Zm9jdXMsIGJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQgIWltcG9ydGFudDsKfQoKLmJnLWluZm8gewoJYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9CgphLmJnLWluZm86aG92ZXIsIGJ1dHRvbi5iZy1pbmZvOmhvdmVyLCBhLmJnLWluZm86Zm9jdXMsIGJ1dHRvbi5iZy1pbmZvOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoKLmJnLXdhcm5pbmcgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CgphLmJnLXdhcm5pbmc6aG92ZXIsIGJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLCBhLmJnLXdhcm5pbmc6Zm9jdXMsIGJ1dHRvbi5iZy13YXJuaW5nOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsKfQoKLmJnLWRhbmdlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KCmEuYmctZGFuZ2VyOmhvdmVyLCBidXR0b24uYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cywgYnV0dG9uLmJnLWRhbmdlcjpmb2N1cyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi5iZy1saWdodCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KCmEuYmctbGlnaHQ6aG92ZXIsIGJ1dHRvbi5iZy1saWdodDpob3ZlciwgYS5iZy1saWdodDpmb2N1cywgYnV0dG9uLmJnLWxpZ2h0OmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoKLmJnLWRhcmsgewoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CgphLmJnLWRhcms6aG92ZXIsIGJ1dHRvbi5iZy1kYXJrOmhvdmVyLCBhLmJnLWRhcms6Zm9jdXMsIGJ1dHRvbi5iZy1kYXJrOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsKfQoKLmJnLXdoaXRlIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoKLmJnLXRyYW5zcGFyZW50IHsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXIgewoJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXRvcCB7Cglib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0IHsKCWJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQoKLmJvcmRlci1ib3R0b20gewoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQoKLmJvcmRlci1sZWZ0IHsKCWJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLTAgewoJYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItdG9wLTAgewoJYm9yZGVyLXRvcDogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0LTAgewoJYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItYm90dG9tLTAgewoJYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWxlZnQtMCB7Cglib3JkZXItbGVmdDogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXByaW1hcnkgewoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItc2Vjb25kYXJ5IHsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXN1Y2Nlc3MgewoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItaW5mbyB7Cglib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKLmJvcmRlci13YXJuaW5nIHsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWRhbmdlciB7Cglib3JkZXItY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsKfQoKLmJvcmRlci1saWdodCB7Cglib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQoKLmJvcmRlci1kYXJrIHsKCWJvcmRlci1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXdoaXRlIHsKCWJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Cgoucm91bmRlZCB7Cglib3JkZXItcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnJvdW5kZWQtdG9wIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50OwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50Owp9Cgoucm91bmRlZC1yaWdodCB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWJvdHRvbSB7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnJvdW5kZWQtbGVmdCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50Owp9Cgoucm91bmRlZC1jaXJjbGUgewoJYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLTAgewoJYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50Owp9CgouY2xlYXJmaXg6OmFmdGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJY2xlYXI6IGJvdGg7Cgljb250ZW50OiAiIjsKfQoKLmQtbm9uZSB7CglkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5kLWlubGluZSB7CglkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWJsb2NrIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50Owp9CgouZC1ibG9jayB7CglkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgouZC10YWJsZSB7CglkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9CgouZC10YWJsZS1yb3cgewoJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KCi5kLXRhYmxlLWNlbGwgewoJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50Owp9CgouZC1mbGV4IHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWZsZXggewoJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5kLXNtLW5vbmUgewoJCWRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKCX0KCQoJLmQtc20taW5saW5lIHsKCQlkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmQtc20taW5saW5lLWJsb2NrIHsKCQlkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtc20tYmxvY2sgewoJCWRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXNtLXRhYmxlIHsKCQlkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS10YWJsZS1yb3cgewoJCWRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS10YWJsZS1jZWxsIHsKCQlkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXNtLWZsZXggewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS1pbmxpbmUtZmxleCB7CgkJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewoJLmQtbWQtbm9uZSB7CgkJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1pbmxpbmUgewoJCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1pbmxpbmUtYmxvY2sgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1ibG9jayB7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtbWQtdGFibGUgewoJCWRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLXRhYmxlLXJvdyB7CgkJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLXRhYmxlLWNlbGwgewoJCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKCX0KCQoJLmQtbWQtZmxleCB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLWlubGluZS1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkuZC1sZy1ub25lIHsKCQlkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWlubGluZSB7CgkJZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWlubGluZS1ibG9jayB7CgkJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWJsb2NrIHsKCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1sZy10YWJsZSB7CgkJZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKCX0KCQoJLmQtbGctdGFibGUtcm93IHsKCQlkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKCX0KCQoJLmQtbGctdGFibGUtY2VsbCB7CgkJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwoJfQoJCgkuZC1sZy1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCX0KCQoJLmQtbGctaW5saW5lLWZsZXggewoJCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CgkuZC14bC1ub25lIHsKCQlkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWlubGluZSB7CgkJZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWlubGluZS1ibG9jayB7CgkJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWJsb2NrIHsKCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC14bC10YWJsZSB7CgkJZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKCX0KCQoJLmQteGwtdGFibGUtcm93IHsKCQlkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKCX0KCQoJLmQteGwtdGFibGUtY2VsbCB7CgkJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwoJfQoJCgkuZC14bC1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCX0KCQoJLmQteGwtaW5saW5lLWZsZXggewoJCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgcHJpbnQgewoJLmQtcHJpbnQtbm9uZSB7CgkJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1pbmxpbmUgewoJCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1pbmxpbmUtYmxvY2sgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1ibG9jayB7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtcHJpbnQtdGFibGUgewoJCWRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LXRhYmxlLXJvdyB7CgkJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LXRhYmxlLWNlbGwgewoJCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKCX0KCQoJLmQtcHJpbnQtZmxleCB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LWlubGluZS1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKCX0KfQoKLmVtYmVkLXJlc3BvbnNpdmUgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmc6IDA7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouZW1iZWQtcmVzcG9uc2l2ZTo6YmVmb3JlIHsKCWRpc3BsYXk6IGJsb2NrOwoJY29udGVudDogIiI7Cn0KCi5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sIC5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwgLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsIC5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwgLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8gewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJbGVmdDogMDsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYm9yZGVyOiAwOwp9CgouZW1iZWQtcmVzcG9uc2l2ZS0yMWJ5OTo6YmVmb3JlIHsKCXBhZGRpbmctdG9wOiA0Mi44NTcxNDI4NTcxJTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7CglwYWRkaW5nLXRvcDogNTYuMjUlOwp9CgouZW1iZWQtcmVzcG9uc2l2ZS00YnkzOjpiZWZvcmUgewoJcGFkZGluZy10b3A6IDc1JTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMWJ5MTo6YmVmb3JlIHsKCXBhZGRpbmctdG9wOiAxMDAlOwp9CgouZmxleC1yb3cgewoJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKfQoKLmZsZXgtY29sdW1uIHsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXJvdy1yZXZlcnNlIHsKCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50Owp9CgouZmxleC1jb2x1bW4tcmV2ZXJzZSB7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcCB7CgktbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CglmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKfQoKLmZsZXgtbm93cmFwIHsKCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcC1yZXZlcnNlIHsKCS1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtZmlsbCB7CgktbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LWdyb3ctMCB7CgktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LWdyb3ctMSB7CgktbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwoJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXNocmluay0wIHsKCS1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CglmbGV4LXNocmluazogMCAhaW1wb3J0YW50Owp9CgouZmxleC1zaHJpbmstMSB7CgktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1zdGFydCB7CgktbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKCS1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9CgouanVzdGlmeS1jb250ZW50LWNlbnRlciB7CgktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCWp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CglqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1hcm91bmQgewoJLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLXN0YXJ0IHsKCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWVuZCB7CgktbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CglhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWNlbnRlciB7CgktbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CglhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1pdGVtcy1iYXNlbGluZSB7CgktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCWFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50Owp9CgouYWxpZ24taXRlbXMtc3RyZXRjaCB7CgktbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtc3RhcnQgewoJLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1lbmQgewoJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWNlbnRlciB7CgktbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWJldHdlZW4gewoJLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CglhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWFyb3VuZCB7CgktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1zdHJldGNoIHsKCS1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1hdXRvIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtc3RhcnQgewoJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtZW5kIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtY2VudGVyIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1zZWxmLWJhc2VsaW5lIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CglhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1zdHJldGNoIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuZmxleC1zbS1yb3cgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1jb2x1bW4gewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1yb3ctcmV2ZXJzZSB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1jb2x1bW4tcmV2ZXJzZSB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS13cmFwIHsKCQktbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXNtLW5vd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20td3JhcC1yZXZlcnNlIHsKCQktbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1maWxsIHsKCQktbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCQlmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1ncm93LTAgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAwICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXNtLWdyb3ctMSB7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDEgIWltcG9ydGFudDsKCQlmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20tc2hyaW5rLTAgewoJCS1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CgkJZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20tc2hyaW5rLTEgewoJCS1tcy1mbGV4LW5lZ2F0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1zdGFydCB7CgkJLW1zLWZsZXgtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1lbmQgewoJCS1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIgewoJCS1tcy1mbGV4LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiB7CgkJLW1zLWZsZXgtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZCB7CgkJLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1zbS1zdGFydCB7CgkJLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXNtLWVuZCB7CgkJLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tY2VudGVyIHsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewoJCS1tcy1mbGV4LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tc3RyZXRjaCB7CgkJLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1zdGFydCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1hcm91bmQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXNtLWF1dG8gewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXNtLXN0YXJ0IHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtc20tZW5kIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1jZW50ZXIgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1iYXNlbGluZSB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1zdHJldGNoIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5mbGV4LW1kLXJvdyB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWNvbHVtbiB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLXJvdy1yZXZlcnNlIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWNvbHVtbi1yZXZlcnNlIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLXdyYXAgewoJCS1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbWQtbm93cmFwIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC13cmFwLXJldmVyc2UgewoJCS1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWZpbGwgewoJCS1tcy1mbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwoJCWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWdyb3ctMCB7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDAgIWltcG9ydGFudDsKCQlmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbWQtZ3Jvdy0xIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC1zaHJpbmstMCB7CgkJLW1zLWZsZXgtbmVnYXRpdmU6IDAgIWltcG9ydGFudDsKCQlmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC1zaHJpbmstMSB7CgkJLW1zLWZsZXgtbmVnYXRpdmU6IDEgIWltcG9ydGFudDsKCQlmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0IHsKCQktbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLWVuZCB7CgkJLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CgkJLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVuIHsKCQktbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHsKCQktbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHsKCQktbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtbWQtZW5kIHsKCQktbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1jZW50ZXIgewoJCS1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1iYXNlbGluZSB7CgkJLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1zdHJldGNoIHsKCQktbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLXN0YXJ0IHsKCQktbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1tZC1lbmQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbWQtY2VudGVyIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1tZC1iZXR3ZWVuIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbWQtYXV0byB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbWQtc3RhcnQgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1tZC1lbmQgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLWNlbnRlciB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmZsZXgtbGctcm93IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctY29sdW1uIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctcm93LXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctY29sdW1uLXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1sZy1ub3dyYXAgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXdyYXAtcmV2ZXJzZSB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctZmlsbCB7CgkJLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CgkJZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctZ3Jvdy0wIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1sZy1ncm93LTEgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXNocmluay0wIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXNocmluay0xIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnQgewoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHsKCQktbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LWxnLWJldHdlZW4gewoJCS1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1sZy1hcm91bmQgewoJCS1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtbGctc3RhcnQgewoJCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1sZy1lbmQgewoJCS1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLWNlbnRlciB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHsKCQktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctc3RhcnQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LWxnLWVuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1sZy1jZW50ZXIgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LWxnLWJldHdlZW4gewoJCS1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctc3RyZXRjaCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1sZy1hdXRvIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1sZy1zdGFydCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLWxnLWVuZCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctY2VudGVyIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctc3RyZXRjaCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLmZsZXgteGwtcm93IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtY29sdW1uIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtcm93LXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtY29sdW1uLXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC14bC1ub3dyYXAgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtZmlsbCB7CgkJLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CgkJZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtZ3Jvdy0wIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC14bC1ncm93LTEgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXNocmluay0wIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXNocmluay0xIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgewoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtZW5kIHsKCQktbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW4gewoJCS1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC14bC1hcm91bmQgewoJCS1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMteGwtc3RhcnQgewoJCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy14bC1lbmQgewoJCS1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLWNlbnRlciB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKCQktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtc3RhcnQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXhsLWVuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC14bC1jZW50ZXIgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4gewoJCS1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtYXJvdW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi14bC1hdXRvIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi14bC1zdGFydCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXhsLWVuZCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtY2VudGVyIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtYmFzZWxpbmUgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtc3RyZXRjaCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KfQoKLmZsb2F0LWxlZnQgewoJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKfQoKLmZsb2F0LXJpZ2h0IHsKCWZsb2F0OiByaWdodCAhaW1wb3J0YW50Owp9CgouZmxvYXQtbm9uZSB7CglmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5mbG9hdC1zbS1sZWZ0IHsKCQlmbG9hdDogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkuZmxvYXQtc20tcmlnaHQgewoJCWZsb2F0OiByaWdodCAhaW1wb3J0YW50OwoJfQoJCgkuZmxvYXQtc20tbm9uZSB7CgkJZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkuZmxvYXQtbWQtbGVmdCB7CgkJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LW1kLXJpZ2h0IHsKCQlmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LW1kLW5vbmUgewoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmZsb2F0LWxnLWxlZnQgewoJCWZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbG9hdC1sZy1yaWdodCB7CgkJZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbG9hdC1sZy1ub25lIHsKCQlmbG9hdDogbm9uZSAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CgkuZmxvYXQteGwtbGVmdCB7CgkJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LXhsLXJpZ2h0IHsKCQlmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LXhsLW5vbmUgewoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9Cn0KCi5wb3NpdGlvbi1zdGF0aWMgewoJcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tcmVsYXRpdmUgewoJcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7Cn0KCi5wb3NpdGlvbi1hYnNvbHV0ZSB7Cglwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKfQoKLnBvc2l0aW9uLWZpeGVkIHsKCXBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tc3RpY2t5IHsKCXBvc2l0aW9uOiAtd2Via2l0LXN0aWNreSAhaW1wb3J0YW50OwoJcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50Owp9CgouZml4ZWQtdG9wIHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXJpZ2h0OiAwOwoJbGVmdDogMDsKCXotaW5kZXg6IDEwMzA7Cn0KCi5maXhlZC1ib3R0b20gewoJcG9zaXRpb246IGZpeGVkOwoJcmlnaHQ6IDA7Cglib3R0b206IDA7CglsZWZ0OiAwOwoJei1pbmRleDogMTAzMDsKfQoKQHN1cHBvcnRzIChwb3NpdGlvbjogc3RpY2t5KSB7Cgkuc3RpY2t5LXRvcCB7CgkJcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwoJCXBvc2l0aW9uOiBzdGlja3k7CgkJdG9wOiAwOwoJCXotaW5kZXg6IDEwMjA7Cgl9Cn0KCi5zci1vbmx5IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXdpZHRoOiAxcHg7CgloZWlnaHQ6IDFweDsKCXBhZGRpbmc6IDA7CglvdmVyZmxvdzogaGlkZGVuOwoJY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cglib3JkZXI6IDA7Cn0KCi5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsIC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7Cglwb3NpdGlvbjogc3RhdGljOwoJd2lkdGg6IGF1dG87CgloZWlnaHQ6IGF1dG87CglvdmVyZmxvdzogdmlzaWJsZTsKCWNsaXA6IGF1dG87Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Cgouc2hhZG93LXNtIHsKCWJveC1zaGFkb3c6IDAgLjEyNXJlbSAuMjVyZW0gcmdiYSgwLCAwLCAwLCAuMDc1KSAhaW1wb3J0YW50Owp9Cgouc2hhZG93IHsKCWJveC1zaGFkb3c6IDAgLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIC4xNSkgIWltcG9ydGFudDsKfQoKLnNoYWRvdy1sZyB7Cglib3gtc2hhZG93OiAwIDFyZW0gM3JlbSByZ2JhKDAsIDAsIDAsIC4xNzUpICFpbXBvcnRhbnQ7Cn0KCi5zaGFkb3ctbm9uZSB7Cglib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cn0KCi53LTI1IHsKCXdpZHRoOiAyNSUgIWltcG9ydGFudDsKfQoKLnctNTAgewoJd2lkdGg6IDUwJSAhaW1wb3J0YW50Owp9Cgoudy03NSB7Cgl3aWR0aDogNzUlICFpbXBvcnRhbnQ7Cn0KCi53LTEwMCB7Cgl3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Cgoudy1hdXRvIHsKCXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5oLTI1IHsKCWhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5oLTUwIHsKCWhlaWdodDogNTAlICFpbXBvcnRhbnQ7Cn0KCi5oLTc1IHsKCWhlaWdodDogNzUlICFpbXBvcnRhbnQ7Cn0KCi5oLTEwMCB7CgloZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLmgtYXV0byB7CgloZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLm13LTEwMCB7CgltYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLm1oLTEwMCB7CgltYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5tLTAgewoJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi5tdC0wLCAubXktMCB7CgltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5tci0wLCAubXgtMCB7CgltYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLm1iLTAsIC5teS0wIHsKCW1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKfQoKLm1sLTAsIC5teC0wIHsKCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5tLTEgewoJbWFyZ2luOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTEsIC5teS0xIHsKCW1hcmdpbi10b3A6IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubXItMSwgLm14LTEgewoJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTEsIC5teS0xIHsKCW1hcmdpbi1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMSwgLm14LTEgewoJbWFyZ2luLWxlZnQ6IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubS0yIHsKCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTIsIC5teS0yIHsKCW1hcmdpbi10b3A6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0yLCAubXgtMiB7CgltYXJnaW4tcmlnaHQ6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi0yLCAubXktMiB7CgltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMiwgLm14LTIgewoJbWFyZ2luLWxlZnQ6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTMgewoJbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tdC0zLCAubXktMyB7CgltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0zLCAubXgtMyB7CgltYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoKLm1iLTMsIC5teS0zIHsKCW1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoKLm1sLTMsIC5teC0zIHsKCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTQgewoJbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTQsIC5teS00IHsKCW1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubXItNCwgLm14LTQgewoJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTQsIC5teS00IHsKCW1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtNCwgLm14LTQgewoJbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubS01IHsKCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9CgoubXQtNSwgLm15LTUgewoJbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9CgoubXItNSwgLm14LTUgewoJbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi01LCAubXktNSB7CgltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tbC01LCAubXgtNSB7CgltYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9CgoucC0wIHsKCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoKLnB0LTAsIC5weS0wIHsKCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5wci0wLCAucHgtMCB7CglwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wYi0wLCAucHktMCB7CglwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgoucGwtMCwgLnB4LTAgewoJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wLTEgewoJcGFkZGluZzogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wdC0xLCAucHktMSB7CglwYWRkaW5nLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0xLCAucHgtMSB7CglwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTEsIC5weS0xIHsKCXBhZGRpbmctYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBsLTEsIC5weC0xIHsKCXBhZGRpbmctbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTIgewoJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTIsIC5weS0yIHsKCXBhZGRpbmctdG9wOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucHItMiwgLnB4LTIgewoJcGFkZGluZy1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTIsIC5weS0yIHsKCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMiwgLnB4LTIgewoJcGFkZGluZy1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucC0zIHsKCXBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKfQoKLnB0LTMsIC5weS0zIHsKCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0zLCAucHgtMyB7CglwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wYi0zLCAucHktMyB7CglwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMywgLnB4LTMgewoJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTQgewoJcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wdC00LCAucHktNCB7CglwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci00LCAucHgtNCB7CglwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTQsIC5weS00IHsKCXBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnBsLTQsIC5weC00IHsKCXBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTUgewoJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50Owp9CgoucHQtNSwgLnB5LTUgewoJcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKfQoKLnByLTUsIC5weC01IHsKCXBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLnBiLTUsIC5weS01IHsKCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5wbC01LCAucHgtNSB7CglwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLm0tYXV0byB7CgltYXJnaW46IGF1dG8gIWltcG9ydGFudDsKfQoKLm10LWF1dG8sIC5teS1hdXRvIHsKCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKfQoKLm1yLWF1dG8sIC5teC1hdXRvIHsKCW1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgoubWItYXV0bywgLm15LWF1dG8gewoJbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50Owp9CgoubWwtYXV0bywgLm14LWF1dG8gewoJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkubS1zbS0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTAsIC5teS1zbS0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0wLCAubXgtc20tMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1zbS0wLCAubXktc20tMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMCwgLm14LXNtLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1zbS0xLCAubXktc20tMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0xLCAubXgtc20tMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTEsIC5teS1zbS0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXNtLTEsIC5teC1zbS0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTIsIC5teS1zbS0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItc20tMiwgLm14LXNtLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTIsIC5teS1zbS0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMiwgLm14LXNtLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1zbS0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTMsIC5teS1zbS0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0zLCAubXgtc20tMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1zbS0zLCAubXktc20tMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMywgLm14LXNtLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1zbS00LCAubXktc20tNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS00LCAubXgtc20tNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTQsIC5teS1zbS00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXNtLTQsIC5teC1zbS00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtc20tNSwgLm15LXNtLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLXNtLTUsIC5teC1zbS01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTUsIC5teS1zbS01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1zbS01LCAubXgtc20tNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMCwgLnB5LXNtLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS0wLCAucHgtc20tMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMCwgLnB5LXNtLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0wLCAucHgtc20tMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXNtLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMSwgLnB5LXNtLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTEsIC5weC1zbS0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXNtLTEsIC5weS1zbS0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0xLCAucHgtc20tMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXNtLTIsIC5weS1zbS0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTIsIC5weC1zbS0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMiwgLnB5LXNtLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtc20tMiwgLnB4LXNtLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMywgLnB5LXNtLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS0zLCAucHgtc20tMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMywgLnB5LXNtLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0zLCAucHgtc20tMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXNtLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tNCwgLnB5LXNtLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTQsIC5weC1zbS00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXNtLTQsIC5weS1zbS00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS00LCAucHgtc20tNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tNSwgLnB5LXNtLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS01LCAucHgtc20tNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tNSwgLnB5LXNtLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS01LCAucHgtc20tNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtc20tYXV0bywgLm15LXNtLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLXNtLWF1dG8sIC5teC1zbS1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLWF1dG8sIC5teS1zbS1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1zbS1hdXRvLCAubXgtc20tYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkubS1tZC0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTAsIC5teS1tZC0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0wLCAubXgtbWQtMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1tZC0wLCAubXktbWQtMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMCwgLm14LW1kLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1tZC0xLCAubXktbWQtMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0xLCAubXgtbWQtMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTEsIC5teS1tZC0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLW1kLTEsIC5teC1tZC0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTIsIC5teS1tZC0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItbWQtMiwgLm14LW1kLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTIsIC5teS1tZC0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMiwgLm14LW1kLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1tZC0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTMsIC5teS1tZC0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0zLCAubXgtbWQtMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1tZC0zLCAubXktbWQtMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMywgLm14LW1kLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1tZC00LCAubXktbWQtNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC00LCAubXgtbWQtNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTQsIC5teS1tZC00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLW1kLTQsIC5teC1tZC00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtbWQtNSwgLm15LW1kLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLW1kLTUsIC5teC1tZC01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTUsIC5teS1tZC01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1tZC01LCAubXgtbWQtNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMCwgLnB5LW1kLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC0wLCAucHgtbWQtMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMCwgLnB5LW1kLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0wLCAucHgtbWQtMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLW1kLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMSwgLnB5LW1kLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTEsIC5weC1tZC0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLW1kLTEsIC5weS1tZC0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0xLCAucHgtbWQtMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LW1kLTIsIC5weS1tZC0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTIsIC5weC1tZC0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMiwgLnB5LW1kLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtbWQtMiwgLnB4LW1kLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMywgLnB5LW1kLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC0zLCAucHgtbWQtMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMywgLnB5LW1kLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0zLCAucHgtbWQtMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLW1kLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtNCwgLnB5LW1kLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTQsIC5weC1tZC00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLW1kLTQsIC5weS1tZC00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC00LCAucHgtbWQtNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtNSwgLnB5LW1kLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC01LCAucHgtbWQtNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtNSwgLnB5LW1kLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC01LCAucHgtbWQtNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtbWQtYXV0bywgLm15LW1kLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLW1kLWF1dG8sIC5teC1tZC1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLWF1dG8sIC5teS1tZC1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1tZC1hdXRvLCAubXgtbWQtYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkubS1sZy0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTAsIC5teS1sZy0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0wLCAubXgtbGctMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1sZy0wLCAubXktbGctMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMCwgLm14LWxnLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1sZy0xLCAubXktbGctMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0xLCAubXgtbGctMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTEsIC5teS1sZy0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLWxnLTEsIC5teC1sZy0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTIsIC5teS1sZy0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItbGctMiwgLm14LWxnLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTIsIC5teS1sZy0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMiwgLm14LWxnLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1sZy0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTMsIC5teS1sZy0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0zLCAubXgtbGctMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1sZy0zLCAubXktbGctMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMywgLm14LWxnLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1sZy00LCAubXktbGctNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy00LCAubXgtbGctNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTQsIC5teS1sZy00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLWxnLTQsIC5teC1sZy00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtbGctNSwgLm15LWxnLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLWxnLTUsIC5teC1sZy01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTUsIC5teS1sZy01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1sZy01LCAubXgtbGctNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMCwgLnB5LWxnLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy0wLCAucHgtbGctMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMCwgLnB5LWxnLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0wLCAucHgtbGctMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLWxnLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMSwgLnB5LWxnLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTEsIC5weC1sZy0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLWxnLTEsIC5weS1sZy0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0xLCAucHgtbGctMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LWxnLTIsIC5weS1sZy0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTIsIC5weC1sZy0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMiwgLnB5LWxnLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtbGctMiwgLnB4LWxnLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMywgLnB5LWxnLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy0zLCAucHgtbGctMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMywgLnB5LWxnLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0zLCAucHgtbGctMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLWxnLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctNCwgLnB5LWxnLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTQsIC5weC1sZy00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLWxnLTQsIC5weS1sZy00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy00LCAucHgtbGctNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctNSwgLnB5LWxnLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy01LCAucHgtbGctNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctNSwgLnB5LWxnLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy01LCAucHgtbGctNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtbGctYXV0bywgLm15LWxnLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLWxnLWF1dG8sIC5teC1sZy1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLWF1dG8sIC5teS1sZy1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1sZy1hdXRvLCAubXgtbGctYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLm0teGwtMCB7CgkJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0wLCAubXkteGwtMCB7CgkJbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMCwgLm14LXhsLTAgewoJCW1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkubWIteGwtMCwgLm15LXhsLTAgewoJCW1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTAsIC5teC14bC0wIHsKCQltYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwoJfQoJCgkubS14bC0xIHsKCQltYXJnaW46IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQteGwtMSwgLm15LXhsLTEgewoJCW1hcmdpbi10b3A6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMSwgLm14LXhsLTEgewoJCW1hcmdpbi1yaWdodDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC0xLCAubXkteGwtMSB7CgkJbWFyZ2luLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC14bC0xLCAubXgteGwtMSB7CgkJbWFyZ2luLWxlZnQ6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC0yIHsKCQltYXJnaW46IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0yLCAubXkteGwtMiB7CgkJbWFyZ2luLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLXhsLTIsIC5teC14bC0yIHsKCQltYXJnaW4tcmlnaHQ6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC0yLCAubXkteGwtMiB7CgkJbWFyZ2luLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTIsIC5teC14bC0yIHsKCQltYXJnaW4tbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm0teGwtMyB7CgkJbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0zLCAubXkteGwtMyB7CgkJbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMywgLm14LXhsLTMgewoJCW1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWIteGwtMywgLm15LXhsLTMgewoJCW1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTMsIC5teC14bC0zIHsKCQltYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC00IHsKCQltYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQteGwtNCwgLm15LXhsLTQgewoJCW1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtNCwgLm14LXhsLTQgewoJCW1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC00LCAubXkteGwtNCB7CgkJbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC14bC00LCAubXgteGwtNCB7CgkJbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC01IHsKCQltYXJnaW46IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXhsLTUsIC5teS14bC01IHsKCQltYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci14bC01LCAubXgteGwtNSB7CgkJbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC01LCAubXkteGwtNSB7CgkJbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwteGwtNSwgLm14LXhsLTUgewoJCW1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTAgewoJCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTAsIC5weS14bC0wIHsKCQlwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtMCwgLnB4LXhsLTAgewoJCXBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTAsIC5weS14bC0wIHsKCQlwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMCwgLnB4LXhsLTAgewoJCXBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwoJfQoJCgkucC14bC0xIHsKCQlwYWRkaW5nOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTEsIC5weS14bC0xIHsKCQlwYWRkaW5nLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC0xLCAucHgteGwtMSB7CgkJcGFkZGluZy1yaWdodDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wYi14bC0xLCAucHkteGwtMSB7CgkJcGFkZGluZy1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMSwgLnB4LXhsLTEgewoJCXBhZGRpbmctbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTIgewoJCXBhZGRpbmc6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wdC14bC0yLCAucHkteGwtMiB7CgkJcGFkZGluZy10b3A6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC0yLCAucHgteGwtMiB7CgkJcGFkZGluZy1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTIsIC5weS14bC0yIHsKCQlwYWRkaW5nLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBsLXhsLTIsIC5weC14bC0yIHsKCQlwYWRkaW5nLWxlZnQ6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTMgewoJCXBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTMsIC5weS14bC0zIHsKCQlwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtMywgLnB4LXhsLTMgewoJCXBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTMsIC5weS14bC0zIHsKCQlwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMywgLnB4LXhsLTMgewoJCXBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucC14bC00IHsKCQlwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTQsIC5weS14bC00IHsKCQlwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC00LCAucHgteGwtNCB7CgkJcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wYi14bC00LCAucHkteGwtNCB7CgkJcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtNCwgLnB4LXhsLTQgewoJCXBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTUgewoJCXBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTUsIC5weS14bC01IHsKCQlwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtNSwgLnB4LXhsLTUgewoJCXBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTUsIC5weS14bC01IHsKCQlwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtNSwgLnB4LXhsLTUgewoJCXBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC1hdXRvIHsKCQltYXJnaW46IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm10LXhsLWF1dG8sIC5teS14bC1hdXRvIHsKCQltYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci14bC1hdXRvLCAubXgteGwtYXV0byB7CgkJbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC1hdXRvLCAubXkteGwtYXV0byB7CgkJbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubWwteGwtYXV0bywgLm14LXhsLWF1dG8gewoJCW1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9Cn0KCi50ZXh0LW1vbm9zcGFjZSB7Cglmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9CgoudGV4dC1qdXN0aWZ5IHsKCXRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDsKfQoKLnRleHQtbm93cmFwIHsKCXdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKfQoKLnRleHQtdHJ1bmNhdGUgewoJb3ZlcmZsb3c6IGhpZGRlbjsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLnRleHQtbGVmdCB7Cgl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXJpZ2h0IHsKCXRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWNlbnRlciB7Cgl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkudGV4dC1zbS1sZWZ0IHsKCQl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS50ZXh0LXNtLXJpZ2h0IHsKCQl0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC1zbS1jZW50ZXIgewoJCXRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS50ZXh0LW1kLWxlZnQgewoJCXRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQtbWQtcmlnaHQgewoJCXRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cgl9CgkKCS50ZXh0LW1kLWNlbnRlciB7CgkJdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLnRleHQtbGctbGVmdCB7CgkJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC1sZy1yaWdodCB7CgkJdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQtbGctY2VudGVyIHsKCQl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLnRleHQteGwtbGVmdCB7CgkJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC14bC1yaWdodCB7CgkJdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQteGwtY2VudGVyIHsKCQl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KfQoKLnRleHQtbG93ZXJjYXNlIHsKCXRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtdXBwZXJjYXNlIHsKCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtY2FwaXRhbGl6ZSB7Cgl0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50Owp9CgouZm9udC13ZWlnaHQtbGlnaHQgewoJZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50Owp9CgouZm9udC13ZWlnaHQtbm9ybWFsIHsKCWZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LWJvbGQgewoJZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Owp9CgouZm9udC1pdGFsaWMgewoJZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlIHsKCWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXByaW1hcnkgewoJY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsKfQoKYS50ZXh0LXByaW1hcnk6aG92ZXIsIGEudGV4dC1wcmltYXJ5OmZvY3VzIHsKCWNvbG9yOiAjMDA2MmNjICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXNlY29uZGFyeSB7Cgljb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgphLnRleHQtc2Vjb25kYXJ5OmhvdmVyLCBhLnRleHQtc2Vjb25kYXJ5OmZvY3VzIHsKCWNvbG9yOiAjNTQ1YjYyICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXN1Y2Nlc3MgewoJY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDsKfQoKYS50ZXh0LXN1Y2Nlc3M6aG92ZXIsIGEudGV4dC1zdWNjZXNzOmZvY3VzIHsKCWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWluZm8gewoJY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKYS50ZXh0LWluZm86aG92ZXIsIGEudGV4dC1pbmZvOmZvY3VzIHsKCWNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdhcm5pbmcgewoJY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKYS50ZXh0LXdhcm5pbmc6aG92ZXIsIGEudGV4dC13YXJuaW5nOmZvY3VzIHsKCWNvbG9yOiAjZDM5ZTAwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWRhbmdlciB7Cgljb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50Owp9CgphLnRleHQtZGFuZ2VyOmhvdmVyLCBhLnRleHQtZGFuZ2VyOmZvY3VzIHsKCWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWxpZ2h0IHsKCWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1saWdodDpob3ZlciwgYS50ZXh0LWxpZ2h0OmZvY3VzIHsKCWNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWRhcmsgewoJY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKYS50ZXh0LWRhcms6aG92ZXIsIGEudGV4dC1kYXJrOmZvY3VzIHsKCWNvbG9yOiAjMWQyMTI0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWJvZHkgewoJY29sb3I6ICMyMTI1MjkgIWltcG9ydGFudDsKfQoKLnRleHQtbXV0ZWQgewoJY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKLnRleHQtYmxhY2stNTAgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlLTUwIHsKCWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KSAhaW1wb3J0YW50Owp9CgoudGV4dC1oaWRlIHsKCWZvbnQ6IDAvMCBhOwoJY29sb3I6IHRyYW5zcGFyZW50OwoJdGV4dC1zaGFkb3c6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogMDsKfQoKLnZpc2libGUgewoJdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9CgouaW52aXNpYmxlIHsKCXZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgpAbWVkaWEgcHJpbnQgewoJKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7CgkJdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKCQlib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCWE6bm90KC5idG4pIHsKCQl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCX0KCQoJYWJiclt0aXRsZV06OmFmdGVyIHsKCQljb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKCX0KCQoJcHJlIHsKCQl3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsKCX0KCQoJcHJlLCBibG9ja3F1b3RlIHsKCQlib3JkZXI6IDFweCBzb2xpZCAjYWRiNWJkOwoJCXBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKCX0KCQoJdGhlYWQgewoJCWRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKCX0KCQoJdHIsIGltZyB7CgkJcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwoJfQoJCglwLCBoMiwgaDMgewoJCW9ycGhhbnM6IDM7CgkJd2lkb3dzOiAzOwoJfQoJCgloMiwgaDMgewoJCXBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOwoJfQoJCglAcGFnZSB7CgkJc2l6ZTogYTM7Cgl9CgkKCWJvZHkgewoJCW1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDsKCX0KCQoJLmNvbnRhaW5lciB7CgkJbWluLXdpZHRoOiA5OTJweCAhaW1wb3J0YW50OwoJfQoJCgkubmF2YmFyIHsKCQlkaXNwbGF5OiBub25lOwoJfQoJCgkuYmFkZ2UgewoJCWJvcmRlcjogMXB4IHNvbGlkICMwMDA7Cgl9CgkKCS50YWJsZSB7CgkJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUgdGQsIC50YWJsZSB0aCB7CgkJYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUtYm9yZGVyZWQgdGgsIC50YWJsZS1ib3JkZXJlZCB0ZCB7CgkJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUtZGFyayB7CgkJY29sb3I6IGluaGVyaXQ7Cgl9CgkKCS50YWJsZS1kYXJrIHRoLCAudGFibGUtZGFyayB0ZCwgLnRhYmxlLWRhcmsgdGhlYWQgdGgsIC50YWJsZS1kYXJrIHRib2R5ICsgdGJvZHkgewoJCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKCX0KCQoJLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKCQljb2xvcjogaW5oZXJpdDsKCQlib3JkZXItY29sb3I6ICNkZWUyZTY7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKcmVxdWlyZV9vbmNlICd2ZW5kb3IvYXV0b2xvYWQucGhwJzsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcQXV0b3ByZWZpeGVyOwoKLy8gQ29tbW9uCi8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUmVuZGVyYWJsZS5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1NldHRpbmdzLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvT3V0cHV0Rm9ybWF0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUGFyc2VyLnBocCc7Ci8vCi8vLy8gVmFsdWUKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9WYWx1ZS5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1ZhbHVlL1ByaW1pdGl2ZVZhbHVlLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvVVJMLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvVmFsdWVMaXN0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvQ1NTRnVuY3Rpb24ucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9DYWxjRnVuY3Rpb24ucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9SdWxlVmFsdWVMaXN0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvQ2FsY1J1bGVWYWx1ZUxpc3QucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9DU1NTdHJpbmcucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9MaW5lTmFtZS5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1ZhbHVlL0NvbG9yLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvU2l6ZS5waHAnOwovLwovLy8vIENvbW1lbnQKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9Db21tZW50L0NvbW1lbnRhYmxlLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvQ29tbWVudC9Db21tZW50LnBocCc7Ci8vCi8vLy8gUnVsZQovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1J1bGUvUnVsZS5waHAnOwovLwovLy8vIFByb3BlcnR5Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUHJvcGVydHkvU2VsZWN0b3IucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9Qcm9wZXJ0eS9BdFJ1bGUucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9Qcm9wZXJ0eS9DaGFyc2V0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUHJvcGVydHkvQ1NTTmFtZXNwYWNlLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUHJvcGVydHkvSW1wb3J0LnBocCc7Ci8vCi8vLy8gUnVsZVNldAovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1J1bGVTZXQvUnVsZVNldC5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1J1bGVTZXQvQXRSdWxlU2V0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUnVsZVNldC9EZWNsYXJhdGlvbkJsb2NrLnBocCc7Ci8vCi8vLy8gQ1NTTGlzdAovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL0NTU0xpc3QvQ1NTTGlzdC5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL0NTU0xpc3QvS2V5RnJhbWUucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9DU1NMaXN0L0NTU0Jsb2NrTGlzdC5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL0NTU0xpc3QvQXRSdWxlQmxvY2tMaXN0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvQ1NTTGlzdC9Eb2N1bWVudC5waHAnOwovLwovLy8vIFBhcnNpbmcKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9QYXJzaW5nL1NvdXJjZUV4Y2VwdGlvbi5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1BhcnNpbmcvT3V0cHV0RXhjZXB0aW9uLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUGFyc2luZy9VbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24ucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9QYXJzaW5nL1BhcnNlclN0YXRlLnBocCc7CgovLyBWZW5kb3IgY29tcGlsZSBhbmQgcGFyc2luZwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvYXV0b3ByZWZpeGVyLnBocCc7Ci8vCi8vcmVxdWlyZV9vbmNlICdwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyL3NyYy9WZW5kb3IucGhwJzsKLy9yZXF1aXJlX29uY2UgJ3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjL1ZlbmRvci9WZW5kb3IucGhwJzsKLy9yZXF1aXJlX29uY2UgJ3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjL1ZlbmRvci9JRS5waHAnOwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvVmVuZG9yL01vemlsbGEucGhwJzsKLy9yZXF1aXJlX29uY2UgJ3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjL1ZlbmRvci9XZWJraXQucGhwJzsKLy8KLy9yZXF1aXJlX29uY2UgJ3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjL1BhcnNlL1Byb3BlcnR5LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyL3NyYy9QYXJzZS9SdWxlLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyL3NyYy9QYXJzZS9TZWxlY3Rvci5waHAnOwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvQ29tcGlsZS9BdFJ1bGUucGhwJzsKLy9yZXF1aXJlX29uY2UgJ3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjL0NvbXBpbGUvUnVsZVNldC5waHAnOwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvQ29tcGlsZS9EZWNsYXJhdGlvbkJsb2NrLnBocCc7CgokYXV0b3ByZWZpeGVyID0gbmV3IEF1dG9wcmVmaXhlcihmaWxlX2dldF9jb250ZW50cygndW5wcmVmaXhlZC1ib290c3RyYXAuY3NzJykpOwpmaWxlX3B1dF9jb250ZW50cygncHJlZml4ZWQtYm9vdHN0cmFwLmNzcycsICRhdXRvcHJlZml4ZXItPmNvbXBpbGUoKSk7CgokY3NzX3BhcnNlciA9IG5ldyBTYWJiZXJ3b3JtXENTU1xQYXJzZXIoZmlsZV9nZXRfY29udGVudHMoJ29yaWduYWwtYm9vdHN0cmFwLmNzcycpKTsKZmlsZV9wdXRfY29udGVudHMoJ3BhcnNlZC1ib290c3RyYXAuY3NzJywgJGNzc19wYXJzZXItPnBhcnNlKCktPnJlbmRlcihTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ6OmNyZWF0ZVByZXR0eSgpKSk7CgoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/unprefixed-bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2NC4xLjMgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pCiAqIENvcHlyaWdodCAyMDExLTIwMTggVGhlIEJvb3RzdHJhcCBBdXRob3JzCiAqIENvcHlyaWdodCAyMDExLTIwMTggVHdpdHRlciwgSW5jLgogKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKQogKi8KOnJvb3QgewogIC0tYmx1ZTogIzAwN2JmZjsKICAtLWluZGlnbzogIzY2MTBmMjsKICAtLXB1cnBsZTogIzZmNDJjMTsKICAtLXBpbms6ICNlODNlOGM7CiAgLS1yZWQ6ICNkYzM1NDU7CiAgLS1vcmFuZ2U6ICNmZDdlMTQ7CiAgLS15ZWxsb3c6ICNmZmMxMDc7CiAgLS1ncmVlbjogIzI4YTc0NTsKICAtLXRlYWw6ICMyMGM5OTc7CiAgLS1jeWFuOiAjMTdhMmI4OwogIC0td2hpdGU6ICNmZmY7CiAgLS1ncmF5OiAjNmM3NTdkOwogIC0tZ3JheS1kYXJrOiAjMzQzYTQwOwogIC0tcHJpbWFyeTogIzAwN2JmZjsKICAtLXNlY29uZGFyeTogIzZjNzU3ZDsKICAtLXN1Y2Nlc3M6ICMyOGE3NDU7CiAgLS1pbmZvOiAjMTdhMmI4OwogIC0td2FybmluZzogI2ZmYzEwNzsKICAtLWRhbmdlcjogI2RjMzU0NTsKICAtLWxpZ2h0OiAjZjhmOWZhOwogIC0tZGFyazogIzM0M2E0MDsKICAtLWJyZWFrcG9pbnQteHM6IDA7CiAgLS1icmVha3BvaW50LXNtOiA1NzZweDsKICAtLWJyZWFrcG9pbnQtbWQ6IDc2OHB4OwogIC0tYnJlYWtwb2ludC1sZzogOTkycHg7CiAgLS1icmVha3BvaW50LXhsOiAxMjAwcHg7CiAgLS1mb250LWZhbWlseS1zYW5zLXNlcmlmOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFNlZ29lIFVJLCBSb2JvdG8sIEhlbHZldGljYSBOZXVlLCBBcmlhbCwgc2Fucy1zZXJpZiwgQXBwbGUgQ29sb3IgRW1vamksIFNlZ29lIFVJIEVtb2ppLCBTZWdvZSBVSSBTeW1ib2wsIE5vdG8gQ29sb3IgRW1vamk7CiAgLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgTGliZXJhdGlvbiBNb25vLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlOwp9CiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KaHRtbCB7CiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CiAgbGluZS1oZWlnaHQ6IDEuMTU7CiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogc2Nyb2xsYmFyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQpALW1zLXZpZXdwb3J0IHsKICB3aWR0aDogZGV2aWNlLXdpZHRoOwp9CmFydGljbGUsIGFzaWRlLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG5hdiwgc2VjdGlvbiB7CiAgZGlzcGxheTogYmxvY2s7Cn0KYm9keSB7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7CiAgZm9udC1zaXplOiAxcmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzIxMjUyOTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KW3RhYmluZGV4PSItMSJdOmZvY3VzIHsKICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7Cn0KaHIgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIGhlaWdodDogMDsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKfQpwIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KYWJiclt0aXRsZV0sIGFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0gewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsKICBjdXJzb3I6IGhlbHA7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQphZGRyZXNzIHsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKfQpvbCwgdWwsIGRsIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDFyZW07Cn0Kb2wgb2wsIHVsIHVsLCBvbCB1bCwgdWwgb2wgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KZHQgewogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KZGQgewogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBtYXJnaW4tbGVmdDogMDsKfQpibG9ja3F1b3RlIHsKICBtYXJnaW46IDAgMCAxcmVtOwp9CmRmbiB7CiAgZm9udC1zdHlsZTogaXRhbGljOwp9CmIsIHN0cm9uZyB7CiAgZm9udC13ZWlnaHQ6IGJvbGRlcjsKfQpzbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7Cn0Kc3ViLCBzdXAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmb250LXNpemU6IDc1JTsKICBsaW5lLWhlaWdodDogMDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0Kc3ViIHsKICBib3R0b206IC0wLjI1ZW07Cn0Kc3VwIHsKICB0b3A6IC0wLjVlbTsKfQphIHsKICBjb2xvcjogIzAwN2JmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsKfQphOmhvdmVyIHsKICBjb2xvcjogIzAwNTZiMzsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKSB7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmhvdmVyLCBhOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmZvY3VzIHsKICBvdXRsaW5lOiAwOwp9CnByZSwgY29kZSwga2JkLCBzYW1wIHsKICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMWVtOwp9CnByZSB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIG92ZXJmbG93OiBhdXRvOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogc2Nyb2xsYmFyOwp9CmZpZ3VyZSB7CiAgbWFyZ2luOiAwIDAgMXJlbTsKfQppbWcgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgYm9yZGVyLXN0eWxlOiBub25lOwp9CnN2ZyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CnRhYmxlIHsKICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9CmNhcHRpb24gewogIHBhZGRpbmctdG9wOiAwLjc1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIHRleHQtYWxpZ246IGxlZnQ7CiAgY2FwdGlvbi1zaWRlOiBib3R0b207Cn0KdGggewogIHRleHQtYWxpZ246IGluaGVyaXQ7Cn0KbGFiZWwgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KYnV0dG9uIHsKICBib3JkZXItcmFkaXVzOiAwOwp9CmJ1dHRvbjpmb2N1cyB7CiAgb3V0bGluZTogMXB4IGRvdHRlZDsKICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7Cn0KaW5wdXQsIGJ1dHRvbiwgc2VsZWN0LCBvcHRncm91cCwgdGV4dGFyZWEgewogIG1hcmdpbjogMDsKICBmb250LWZhbWlseTogaW5oZXJpdDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KYnV0dG9uLCBpbnB1dCB7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KYnV0dG9uLCBzZWxlY3QgewogIHRleHQtdHJhbnNmb3JtOiBub25lOwp9CmJ1dHRvbiwgaHRtbCBbdHlwZT0iYnV0dG9uIl0sIFt0eXBlPSJyZXNldCJdLCBbdHlwZT0ic3VibWl0Il0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9ImJ1dHRvbiJdOjotbW96LWZvY3VzLWlubmVyLCBbdHlwZT0icmVzZXQiXTo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9InN1Ym1pdCJdOjotbW96LWZvY3VzLWlubmVyIHsKICBwYWRkaW5nOiAwOwogIGJvcmRlci1zdHlsZTogbm9uZTsKfQppbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHBhZGRpbmc6IDA7Cn0KaW5wdXRbdHlwZT0iZGF0ZSJdLCBpbnB1dFt0eXBlPSJ0aW1lIl0sIGlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0sIGlucHV0W3R5cGU9Im1vbnRoIl0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdGJveDsKfQp0ZXh0YXJlYSB7CiAgb3ZlcmZsb3c6IGF1dG87CiAgcmVzaXplOiB2ZXJ0aWNhbDsKfQpmaWVsZHNldCB7CiAgbWluLXdpZHRoOiAwOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwogIGJvcmRlcjogMDsKfQpsZWdlbmQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1heC13aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBmb250LXNpemU6IDEuNXJlbTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICBjb2xvcjogaW5oZXJpdDsKICB3aGl0ZS1zcGFjZTogbm9ybWFsOwp9CnByb2dyZXNzIHsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KW3R5cGU9Im51bWJlciJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCBbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogIGhlaWdodDogYXV0bzsKfQpbdHlwZT0ic2VhcmNoIl0gewogIG91dGxpbmUtb2Zmc2V0OiAtMnB4OwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQpbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sIFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9Cjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewogIGZvbnQ6IGluaGVyaXQ7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247Cn0Kb3V0cHV0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0Kc3VtbWFyeSB7CiAgZGlzcGxheTogbGlzdC1pdGVtOwogIGN1cnNvcjogcG9pbnRlcjsKfQp0ZW1wbGF0ZSB7CiAgZGlzcGxheTogbm9uZTsKfQpbaGlkZGVuXSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIC5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYgewogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBmb250LWZhbWlseTogaW5oZXJpdDsKICBmb250LXdlaWdodDogNTAwOwogIGxpbmUtaGVpZ2h0OiAxLjI7CiAgY29sb3I6IGluaGVyaXQ7Cn0KaDEsIC5oMSB7CiAgZm9udC1zaXplOiAyLjVyZW07Cn0KaDIsIC5oMiB7CiAgZm9udC1zaXplOiAycmVtOwp9CmgzLCAuaDMgewogIGZvbnQtc2l6ZTogMS43NXJlbTsKfQpoNCwgLmg0IHsKICBmb250LXNpemU6IDEuNXJlbTsKfQpoNSwgLmg1IHsKICBmb250LXNpemU6IDEuMjVyZW07Cn0KaDYsIC5oNiB7CiAgZm9udC1zaXplOiAxcmVtOwp9Ci5sZWFkIHsKICBmb250LXNpemU6IDEuMjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKfQouZGlzcGxheS0xIHsKICBmb250LXNpemU6IDZyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBsaW5lLWhlaWdodDogMS4yOwp9Ci5kaXNwbGF5LTIgewogIGZvbnQtc2l6ZTogNS41cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQouZGlzcGxheS0zIHsKICBmb250LXNpemU6IDQuNXJlbTsKICBmb250LXdlaWdodDogMzAwOwogIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KLmRpc3BsYXktNCB7CiAgZm9udC1zaXplOiAzLjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBsaW5lLWhlaWdodDogMS4yOwp9CmhyIHsKICBtYXJnaW4tdG9wOiAxcmVtOwogIG1hcmdpbi1ib3R0b206IDFyZW07CiAgYm9yZGVyOiAwOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0Kc21hbGwsIC5zbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7CiAgZm9udC13ZWlnaHQ6IDQwMDsKfQptYXJrLCAubWFyayB7CiAgcGFkZGluZzogMC4yZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoubGlzdC11bnN0eWxlZCB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmxpc3QtaW5saW5lIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoubGlzdC1pbmxpbmUtaXRlbSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci5saXN0LWlubGluZS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogIG1hcmdpbi1yaWdodDogMC41cmVtOwp9Ci5pbml0aWFsaXNtIHsKICBmb250LXNpemU6IDkwJTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9Ci5ibG9ja3F1b3RlIHsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKfQouYmxvY2txdW90ZS1mb290ZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogODAlOwogIGNvbG9yOiAjNmM3NTdkOwp9Ci5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHsKICBjb250ZW50OiAiXDIwMTQgXDAwQTAiOwp9Ci5pbWctZmx1aWQgewogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87Cn0KLmltZy10aHVtYm5haWwgewogIHBhZGRpbmc6IDAuMjVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2OwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgbWF4LXdpZHRoOiAxMDAlOwogIGhlaWdodDogYXV0bzsKfQouZmlndXJlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLmZpZ3VyZS1pbWcgewogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBsaW5lLWhlaWdodDogMTsKfQouZmlndXJlLWNhcHRpb24gewogIGZvbnQtc2l6ZTogOTAlOwogIGNvbG9yOiAjNmM3NTdkOwp9CmNvZGUgewogIGZvbnQtc2l6ZTogODcuNSU7CiAgY29sb3I6ICNlODNlOGM7CiAgd29yZC1icmVhazogYnJlYWstd29yZDsKfQphID4gY29kZSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0Ka2JkIHsKICBwYWRkaW5nOiAwLjJyZW0gMC40cmVtOwogIGZvbnQtc2l6ZTogODcuNSU7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKICBib3JkZXItcmFkaXVzOiAwLjJyZW07Cn0Ka2JkIGtiZCB7CiAgcGFkZGluZzogMDsKICBmb250LXNpemU6IDEwMCU7CiAgZm9udC13ZWlnaHQ6IDcwMDsKfQpwcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogODcuNSU7CiAgY29sb3I6ICMyMTI1Mjk7Cn0KcHJlIGNvZGUgewogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBjb2xvcjogaW5oZXJpdDsKICB3b3JkLWJyZWFrOiBub3JtYWw7Cn0KLnByZS1zY3JvbGxhYmxlIHsKICBtYXgtaGVpZ2h0OiAzNDBweDsKICBvdmVyZmxvdy15OiBzY3JvbGw7Cn0KLmNvbnRhaW5lciB7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy1yaWdodDogMTVweDsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiA1NDBweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDcyMHB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogOTYwcHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogMTE0MHB4OwogIH0KfQouY29udGFpbmVyLWZsdWlkIHsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KLnJvdyB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICBtYXJnaW4tbGVmdDogLTE1cHg7Cn0KLm5vLWd1dHRlcnMgewogIG1hcmdpbi1yaWdodDogMDsKICBtYXJnaW4tbGVmdDogMDsKfQoubm8tZ3V0dGVycyA+IC5jb2wsIC5uby1ndXR0ZXJzID4gW2NsYXNzKj0iY29sLSJdIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQouY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLCAuY29sLWF1dG8sIC5jb2wtc20tMSwgLmNvbC1zbS0yLCAuY29sLXNtLTMsIC5jb2wtc20tNCwgLmNvbC1zbS01LCAuY29sLXNtLTYsIC5jb2wtc20tNywgLmNvbC1zbS04LCAuY29sLXNtLTksIC5jb2wtc20tMTAsIC5jb2wtc20tMTEsIC5jb2wtc20tMTIsIC5jb2wtc20sIC5jb2wtc20tYXV0bywgLmNvbC1tZC0xLCAuY29sLW1kLTIsIC5jb2wtbWQtMywgLmNvbC1tZC00LCAuY29sLW1kLTUsIC5jb2wtbWQtNiwgLmNvbC1tZC03LCAuY29sLW1kLTgsIC5jb2wtbWQtOSwgLmNvbC1tZC0xMCwgLmNvbC1tZC0xMSwgLmNvbC1tZC0xMiwgLmNvbC1tZCwgLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLCAuY29sLWxnLWF1dG8sIC5jb2wteGwtMSwgLmNvbC14bC0yLCAuY29sLXhsLTMsIC5jb2wteGwtNCwgLmNvbC14bC01LCAuY29sLXhsLTYsIC5jb2wteGwtNywgLmNvbC14bC04LCAuY29sLXhsLTksIC5jb2wteGwtMTAsIC5jb2wteGwtMTEsIC5jb2wteGwtMTIsIC5jb2wteGwsIC5jb2wteGwtYXV0byB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKfQouY29sIHsKICBmbGV4LWJhc2lzOiAwOwogIGZsZXgtZ3JvdzogMTsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KLmNvbC1hdXRvIHsKICBmbGV4OiAwIDAgYXV0bzsKICB3aWR0aDogYXV0bzsKICBtYXgtd2lkdGg6IG5vbmU7Cn0KLmNvbC0xIHsKICBmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKICBtYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cn0KLmNvbC0yIHsKICBmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CiAgbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKfQouY29sLTMgewogIGZsZXg6IDAgMCAyNSU7CiAgbWF4LXdpZHRoOiAyNSU7Cn0KLmNvbC00IHsKICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CiAgbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKfQouY29sLTUgewogIGZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKICBtYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwp9Ci5jb2wtNiB7CiAgZmxleDogMCAwIDUwJTsKICBtYXgtd2lkdGg6IDUwJTsKfQouY29sLTcgewogIGZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKICBtYXgtd2lkdGg6IDU4LjMzMzMzMzMzMzMlOwp9Ci5jb2wtOCB7CiAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwogIG1heC13aWR0aDogNjYuNjY2NjY2NjY2NyU7Cn0KLmNvbC05IHsKICBmbGV4OiAwIDAgNzUlOwogIG1heC13aWR0aDogNzUlOwp9Ci5jb2wtMTAgewogIGZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKICBtYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwp9Ci5jb2wtMTEgewogIGZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKICBtYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwp9Ci5jb2wtMTIgewogIGZsZXg6IDAgMCAxMDAlOwogIG1heC13aWR0aDogMTAwJTsKfQoub3JkZXItZmlyc3QgewogIG9yZGVyOiAtMTsKfQoub3JkZXItbGFzdCB7CiAgb3JkZXI6IDEzOwp9Ci5vcmRlci0wIHsKICBvcmRlcjogMDsKfQoub3JkZXItMSB7CiAgb3JkZXI6IDE7Cn0KLm9yZGVyLTIgewogIG9yZGVyOiAyOwp9Ci5vcmRlci0zIHsKICBvcmRlcjogMzsKfQoub3JkZXItNCB7CiAgb3JkZXI6IDQ7Cn0KLm9yZGVyLTUgewogIG9yZGVyOiA1Owp9Ci5vcmRlci02IHsKICBvcmRlcjogNjsKfQoub3JkZXItNyB7CiAgb3JkZXI6IDc7Cn0KLm9yZGVyLTggewogIG9yZGVyOiA4Owp9Ci5vcmRlci05IHsKICBvcmRlcjogOTsKfQoub3JkZXItMTAgewogIG9yZGVyOiAxMDsKfQoub3JkZXItMTEgewogIG9yZGVyOiAxMTsKfQoub3JkZXItMTIgewogIG9yZGVyOiAxMjsKfQoub2Zmc2V0LTEgewogIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwp9Ci5vZmZzZXQtMiB7CiAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwp9Ci5vZmZzZXQtMyB7CiAgbWFyZ2luLWxlZnQ6IDI1JTsKfQoub2Zmc2V0LTQgewogIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKfQoub2Zmc2V0LTUgewogIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKfQoub2Zmc2V0LTYgewogIG1hcmdpbi1sZWZ0OiA1MCU7Cn0KLm9mZnNldC03IHsKICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cn0KLm9mZnNldC04IHsKICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cn0KLm9mZnNldC05IHsKICBtYXJnaW4tbGVmdDogNzUlOwp9Ci5vZmZzZXQtMTAgewogIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKfQoub2Zmc2V0LTExIHsKICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmNvbC1zbSB7CiAgICBmbGV4LWJhc2lzOiAwOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAuY29sLXNtLWF1dG8gewogICAgZmxleDogMCAwIGF1dG87CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogbm9uZTsKICB9CiAgLmNvbC1zbS0xIHsKICAgIGZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4LjMzMzMzMzMzMzMlOwogIH0KICAuY29sLXNtLTIgewogICAgZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS0zIHsKICAgIGZsZXg6IDAgMCAyNSU7CiAgICBtYXgtd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1zbS00IHsKICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tNSB7CiAgICBmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwogIH0KICAuY29sLXNtLTYgewogICAgZmxleDogMCAwIDUwJTsKICAgIG1heC13aWR0aDogNTAlOwogIH0KICAuY29sLXNtLTcgewogICAgZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS04IHsKICAgIGZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogNjYuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tOSB7CiAgICBmbGV4OiAwIDAgNzUlOwogICAgbWF4LXdpZHRoOiA3NSU7CiAgfQogIC5jb2wtc20tMTAgewogICAgZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4My4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS0xMSB7CiAgICBmbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwogIH0KICAuY29sLXNtLTEyIHsKICAgIGZsZXg6IDAgMCAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAub3JkZXItc20tZmlyc3QgewogICAgb3JkZXI6IC0xOwogIH0KICAub3JkZXItc20tbGFzdCB7CiAgICBvcmRlcjogMTM7CiAgfQogIC5vcmRlci1zbS0wIHsKICAgIG9yZGVyOiAwOwogIH0KICAub3JkZXItc20tMSB7CiAgICBvcmRlcjogMTsKICB9CiAgLm9yZGVyLXNtLTIgewogICAgb3JkZXI6IDI7CiAgfQogIC5vcmRlci1zbS0zIHsKICAgIG9yZGVyOiAzOwogIH0KICAub3JkZXItc20tNCB7CiAgICBvcmRlcjogNDsKICB9CiAgLm9yZGVyLXNtLTUgewogICAgb3JkZXI6IDU7CiAgfQogIC5vcmRlci1zbS02IHsKICAgIG9yZGVyOiA2OwogIH0KICAub3JkZXItc20tNyB7CiAgICBvcmRlcjogNzsKICB9CiAgLm9yZGVyLXNtLTggewogICAgb3JkZXI6IDg7CiAgfQogIC5vcmRlci1zbS05IHsKICAgIG9yZGVyOiA5OwogIH0KICAub3JkZXItc20tMTAgewogICAgb3JkZXI6IDEwOwogIH0KICAub3JkZXItc20tMTEgewogICAgb3JkZXI6IDExOwogIH0KICAub3JkZXItc20tMTIgewogICAgb3JkZXI6IDEyOwogIH0KICAub2Zmc2V0LXNtLTAgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5vZmZzZXQtc20tMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1zbS0yIHsKICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAyNSU7CiAgfQogIC5vZmZzZXQtc20tNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtc20tNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtc20tNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlOwogIH0KICAub2Zmc2V0LXNtLTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTggewogICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclOwogIH0KICAub2Zmc2V0LXNtLTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLm9mZnNldC1zbS0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtc20tMTEgewogICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuY29sLW1kIHsKICAgIGZsZXgtYmFzaXM6IDA7CiAgICBmbGV4LWdyb3c6IDE7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtbWQtYXV0byB7CiAgICBmbGV4OiAwIDAgYXV0bzsKICAgIHdpZHRoOiBhdXRvOwogICAgbWF4LXdpZHRoOiBub25lOwogIH0KICAuY29sLW1kLTEgewogICAgZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtMiB7CiAgICBmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwogIH0KICAuY29sLW1kLTMgewogICAgZmxleDogMCAwIDI1JTsKICAgIG1heC13aWR0aDogMjUlOwogIH0KICAuY29sLW1kLTQgewogICAgZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC01IHsKICAgIGZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogNDEuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtNiB7CiAgICBmbGV4OiAwIDAgNTAlOwogICAgbWF4LXdpZHRoOiA1MCU7CiAgfQogIC5jb2wtbWQtNyB7CiAgICBmbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTggewogICAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC05IHsKICAgIGZsZXg6IDAgMCA3NSU7CiAgICBtYXgtd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1tZC0xMCB7CiAgICBmbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTExIHsKICAgIGZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtMTIgewogICAgZmxleDogMCAwIDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5vcmRlci1tZC1maXJzdCB7CiAgICBvcmRlcjogLTE7CiAgfQogIC5vcmRlci1tZC1sYXN0IHsKICAgIG9yZGVyOiAxMzsKICB9CiAgLm9yZGVyLW1kLTAgewogICAgb3JkZXI6IDA7CiAgfQogIC5vcmRlci1tZC0xIHsKICAgIG9yZGVyOiAxOwogIH0KICAub3JkZXItbWQtMiB7CiAgICBvcmRlcjogMjsKICB9CiAgLm9yZGVyLW1kLTMgewogICAgb3JkZXI6IDM7CiAgfQogIC5vcmRlci1tZC00IHsKICAgIG9yZGVyOiA0OwogIH0KICAub3JkZXItbWQtNSB7CiAgICBvcmRlcjogNTsKICB9CiAgLm9yZGVyLW1kLTYgewogICAgb3JkZXI6IDY7CiAgfQogIC5vcmRlci1tZC03IHsKICAgIG9yZGVyOiA3OwogIH0KICAub3JkZXItbWQtOCB7CiAgICBvcmRlcjogODsKICB9CiAgLm9yZGVyLW1kLTkgewogICAgb3JkZXI6IDk7CiAgfQogIC5vcmRlci1tZC0xMCB7CiAgICBvcmRlcjogMTA7CiAgfQogIC5vcmRlci1tZC0xMSB7CiAgICBvcmRlcjogMTE7CiAgfQogIC5vcmRlci1tZC0xMiB7CiAgICBvcmRlcjogMTI7CiAgfQogIC5vZmZzZXQtbWQtMCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLm9mZnNldC1tZC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LW1kLTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwogIH0KICAub2Zmc2V0LW1kLTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLm9mZnNldC1tZC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1tZC01IHsKICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1tZC02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5vZmZzZXQtbWQtNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbWQtOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlOwogIH0KICAub2Zmc2V0LW1kLTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1tZC0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5jb2wtbGcgewogICAgZmxleC1iYXNpczogMDsKICAgIGZsZXgtZ3JvdzogMTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLmNvbC1sZy1hdXRvIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQogIC5jb2wtbGctMSB7CiAgICBmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy0yIHsKICAgIGZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogMTYuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctMyB7CiAgICBmbGV4OiAwIDAgMjUlOwogICAgbWF4LXdpZHRoOiAyNSU7CiAgfQogIC5jb2wtbGctNCB7CiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLTUgewogICAgZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy02IHsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1sZy03IHsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctOCB7CiAgICBmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwogIH0KICAuY29sLWxnLTkgewogICAgZmxleDogMCAwIDc1JTsKICAgIG1heC13aWR0aDogNzUlOwogIH0KICAuY29sLWxnLTEwIHsKICAgIGZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctMTEgewogICAgZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA5MS42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy0xMiB7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLWxnLWZpcnN0IHsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLWxnLWxhc3QgewogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXItbGctMCB7CiAgICBvcmRlcjogMDsKICB9CiAgLm9yZGVyLWxnLTEgewogICAgb3JkZXI6IDE7CiAgfQogIC5vcmRlci1sZy0yIHsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXItbGctMyB7CiAgICBvcmRlcjogMzsKICB9CiAgLm9yZGVyLWxnLTQgewogICAgb3JkZXI6IDQ7CiAgfQogIC5vcmRlci1sZy01IHsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXItbGctNiB7CiAgICBvcmRlcjogNjsKICB9CiAgLm9yZGVyLWxnLTcgewogICAgb3JkZXI6IDc7CiAgfQogIC5vcmRlci1sZy04IHsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXItbGctOSB7CiAgICBvcmRlcjogOTsKICB9CiAgLm9yZGVyLWxnLTEwIHsKICAgIG9yZGVyOiAxMDsKICB9CiAgLm9yZGVyLWxnLTExIHsKICAgIG9yZGVyOiAxMTsKICB9CiAgLm9yZGVyLWxnLTEyIHsKICAgIG9yZGVyOiAxMjsKICB9CiAgLm9mZnNldC1sZy0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAub2Zmc2V0LWxnLTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbGctMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbGctMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LWxnLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LWxnLTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclOwogIH0KICAub2Zmc2V0LWxnLTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLm9mZnNldC1sZy03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1sZy05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5vZmZzZXQtbGctMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LWxnLTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5jb2wteGwgewogICAgZmxleC1iYXNpczogMDsKICAgIGZsZXgtZ3JvdzogMTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLmNvbC14bC1hdXRvIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQogIC5jb2wteGwtMSB7CiAgICBmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC14bC0yIHsKICAgIGZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogMTYuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wteGwtMyB7CiAgICBmbGV4OiAwIDAgMjUlOwogICAgbWF4LXdpZHRoOiAyNSU7CiAgfQogIC5jb2wteGwtNCB7CiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMlOwogIH0KICAuY29sLXhsLTUgewogICAgZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC14bC02IHsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC14bC03IHsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wteGwtOCB7CiAgICBmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwogIH0KICAuY29sLXhsLTkgewogICAgZmxleDogMCAwIDc1JTsKICAgIG1heC13aWR0aDogNzUlOwogIH0KICAuY29sLXhsLTEwIHsKICAgIGZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wteGwtMTEgewogICAgZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA5MS42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC14bC0xMiB7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLXhsLWZpcnN0IHsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLXhsLWxhc3QgewogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXIteGwtMCB7CiAgICBvcmRlcjogMDsKICB9CiAgLm9yZGVyLXhsLTEgewogICAgb3JkZXI6IDE7CiAgfQogIC5vcmRlci14bC0yIHsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXIteGwtMyB7CiAgICBvcmRlcjogMzsKICB9CiAgLm9yZGVyLXhsLTQgewogICAgb3JkZXI6IDQ7CiAgfQogIC5vcmRlci14bC01IHsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXIteGwtNiB7CiAgICBvcmRlcjogNjsKICB9CiAgLm9yZGVyLXhsLTcgewogICAgb3JkZXI6IDc7CiAgfQogIC5vcmRlci14bC04IHsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXIteGwtOSB7CiAgICBvcmRlcjogOTsKICB9CiAgLm9yZGVyLXhsLTEwIHsKICAgIG9yZGVyOiAxMDsKICB9CiAgLm9yZGVyLXhsLTExIHsKICAgIG9yZGVyOiAxMTsKICB9CiAgLm9yZGVyLXhsLTEyIHsKICAgIG9yZGVyOiAxMjsKICB9CiAgLm9mZnNldC14bC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAub2Zmc2V0LXhsLTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQteGwtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LXhsLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXhsLTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclOwogIH0KICAub2Zmc2V0LXhsLTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLm9mZnNldC14bC03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC14bC05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5vZmZzZXQteGwtMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXhsLTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTsKICB9Cn0KLnRhYmxlIHsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci50YWJsZSB0aCwgLnRhYmxlIHRkIHsKICBwYWRkaW5nOiAwLjc1cmVtOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZWUyZTY7Cn0KLnRhYmxlIHRoZWFkIHRoIHsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGVlMmU2Owp9Ci50YWJsZSB0Ym9keSArIHRib2R5IHsKICBib3JkZXItdG9wOiAycHggc29saWQgI2RlZTJlNjsKfQoudGFibGUgLnRhYmxlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci50YWJsZS1zbSB0aCwgLnRhYmxlLXNtIHRkIHsKICBwYWRkaW5nOiAwLjNyZW07Cn0KLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2Owp9Ci50YWJsZS1ib3JkZXJlZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2Owp9Ci50YWJsZS1ib3JkZXJlZCB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRkIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KLnRhYmxlLWJvcmRlcmxlc3MgdGgsIC50YWJsZS1ib3JkZXJsZXNzIHRkLCAudGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmxlc3MgdGJvZHkgKyB0Ym9keSB7CiAgYm9yZGVyOiAwOwp9Ci50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7Cn0KLnRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoudGFibGUtcHJpbWFyeSwgLnRhYmxlLXByaW1hcnkgPiB0aCwgLnRhYmxlLXByaW1hcnkgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsKfQoudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWVjZGZmOwp9Ci50YWJsZS1zZWNvbmRhcnksIC50YWJsZS1zZWNvbmRhcnkgPiB0aCwgLnRhYmxlLXNlY29uZGFyeSA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGRiOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhjY2NmOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KLnRhYmxlLXN1Y2Nlc3MsIC50YWJsZS1zdWNjZXNzID4gdGgsIC50YWJsZS1zdWNjZXNzID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1zdWNjZXNzOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoudGFibGUtaW5mbywgLnRhYmxlLWluZm8gPiB0aCwgLnRhYmxlLWluZm8gPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9Ci50YWJsZS13YXJuaW5nLCAudGFibGUtd2FybmluZyA+IHRoLCAudGFibGUtd2FybmluZyA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZWJhOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmZmU3YTA7Cn0KLnRhYmxlLWRhbmdlciwgLnRhYmxlLWRhbmdlciA+IHRoLCAudGFibGUtZGFuZ2VyID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmMWIxYjc7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoudGFibGUtbGlnaHQsIC50YWJsZS1saWdodCA+IHRoLCAudGFibGUtbGlnaHQgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9Ci50YWJsZS1kYXJrLCAudGFibGUtZGFyayA+IHRoLCAudGFibGUtZGFyayA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzZjOGNhOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNiOWJiYmQ7Cn0KLnRhYmxlLWFjdGl2ZSwgLnRhYmxlLWFjdGl2ZSA+IHRoLCAudGFibGUtYWN0aXZlID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoudGFibGUgLnRoZWFkLWRhcmsgdGggewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7CiAgYm9yZGVyLWNvbG9yOiAjMzIzODNlOwp9Ci50YWJsZSAudGhlYWQtbGlnaHQgdGggewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2Owp9Ci50YWJsZS1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5Owp9Ci50YWJsZS1kYXJrIHRoLCAudGFibGUtZGFyayB0ZCwgLnRhYmxlLWRhcmsgdGhlYWQgdGggewogIGJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoudGFibGUtZGFyay50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAwOwp9Ci50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKfQoudGFibGUtZGFyay50YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3NSk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7CiAgLnRhYmxlLXJlc3BvbnNpdmUtc20gewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUtc20gPiAudGFibGUtYm9yZGVyZWQgewogICAgYm9yZGVyOiAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1tZCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50YWJsZS1yZXNwb25zaXZlLWxnIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlLWxnID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50YWJsZS1yZXNwb25zaXZlLXhsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlLXhsID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICB9Cn0KLnRhYmxlLXJlc3BvbnNpdmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG92ZXJmbG93LXg6IGF1dG87CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwp9Ci50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDA7Cn0KLmZvcm0tY29udHJvbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07CiAgZm9udC1zaXplOiAxcmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mb3JtLWNvbnRyb2wgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmZvcm0tY29udHJvbDo6LW1zLWV4cGFuZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9Ci5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyLWNvbG9yOiAjODBiZGZmOwogIG91dGxpbmU6IDA7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9Ci5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzZjNzU3ZDsKICBvcGFjaXR5OiAxOwp9Ci5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQsIC5mb3JtLWNvbnRyb2xbcmVhZG9ubHldIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIG9wYWNpdHk6IDE7Cn0Kc2VsZWN0LmZvcm0tY29udHJvbDpmb2N1czo6LW1zLXZhbHVlIHsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5mb3JtLWNvbnRyb2wtZmlsZSwgLmZvcm0tY29udHJvbC1yYW5nZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7Cn0KLmNvbC1mb3JtLWxhYmVsIHsKICBwYWRkaW5nLXRvcDogY2FsYygwLjM3NXJlbSArIDFweCk7CiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC4zNzVyZW0gKyAxcHgpOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLmNvbC1mb3JtLWxhYmVsLWxnIHsKICBwYWRkaW5nLXRvcDogY2FsYygwLjVyZW0gKyAxcHgpOwogIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuNXJlbSArIDFweCk7CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLmNvbC1mb3JtLWxhYmVsLXNtIHsKICBwYWRkaW5nLXRvcDogY2FsYygwLjI1cmVtICsgMXB4KTsKICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjI1cmVtICsgMXB4KTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLmZvcm0tY29udHJvbC1wbGFpbnRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctdG9wOiAwLjM3NXJlbTsKICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXdpZHRoOiAxcHggMDsKfQouZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc20sIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZyB7CiAgcGFkZGluZy1yaWdodDogMDsKICBwYWRkaW5nLWxlZnQ6IDA7Cn0KLmZvcm0tY29udHJvbC1zbSB7CiAgaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQouZm9ybS1jb250cm9sLWxnIHsKICBoZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQpzZWxlY3QuZm9ybS1jb250cm9sW3NpemVdLCBzZWxlY3QuZm9ybS1jb250cm9sW211bHRpcGxlXSB7CiAgaGVpZ2h0OiBhdXRvOwp9CnRleHRhcmVhLmZvcm0tY29udHJvbCB7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5mb3JtLWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9Ci5mb3JtLXRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi10b3A6IDAuMjVyZW07Cn0KLmZvcm0tcm93IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBtYXJnaW4tcmlnaHQ6IC01cHg7CiAgbWFyZ2luLWxlZnQ6IC01cHg7Cn0KLmZvcm0tcm93ID4gLmNvbCwgLmZvcm0tcm93ID4gW2NsYXNzKj0iY29sLSJdIHsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7CiAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KLmZvcm0tY2hlY2sgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07Cn0KLmZvcm0tY2hlY2staW5wdXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtYXJnaW4tdG9wOiAwLjNyZW07CiAgbWFyZ2luLWxlZnQ6IC0xLjI1cmVtOwp9Ci5mb3JtLWNoZWNrLWlucHV0OmRpc2FibGVkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjNmM3NTdkOwp9Ci5mb3JtLWNoZWNrLWxhYmVsIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5mb3JtLWNoZWNrLWlubGluZSB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtOwp9Ci5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1yaWdodDogMC4zMTI1cmVtOwogIG1hcmdpbi1sZWZ0OiAwOwp9Ci52YWxpZC1mZWVkYmFjayB7CiAgZGlzcGxheTogbm9uZTsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tdG9wOiAwLjI1cmVtOwogIGZvbnQtc2l6ZTogODAlOwogIGNvbG9yOiAjMjhhNzQ1Owp9Ci52YWxpZC10b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMDAlOwogIHotaW5kZXg6IDU7CiAgZGlzcGxheTogbm9uZTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgbWFyZ2luLXRvcDogMC4xcmVtOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQwLCAxNjcsIDY5LCAwLjkpOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogIGNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzcxZGQ4YTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzRjZTU3Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewogIGJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpOwp9Ci5pbnZhbGlkLWZlZWRiYWNrIHsKICBkaXNwbGF5OiBub25lOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi10b3A6IDAuMjVyZW07CiAgZm9udC1zaXplOiA4MCU7CiAgY29sb3I6ICNkYzM1NDU7Cn0KLmludmFsaWQtdG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICB6LWluZGV4OiA1OwogIGRpc3BsYXk6IG5vbmU7CiAgbWF4LXdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtOwogIG1hcmdpbi10b3A6IDAuMXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDUzLCA2OSwgMC45KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCwgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkOmZvY3VzLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkOmZvY3VzLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQ6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jb250cm9sLWZpbGUuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNvbnRyb2wtZmlsZS5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjZGMzNTQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICNkYzM1NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VmYTJhOTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTsKfQouZm9ybS1pbmxpbmUgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1mbG93OiByb3cgd3JhcDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7CiAgd2lkdGg6IDEwMCU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmZvcm0taW5saW5lIGxhYmVsIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tZ3JvdXAgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogYXV0bzsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgfQogIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAsIC5mb3JtLWlubGluZSAuY3VzdG9tLXNlbGVjdCB7CiAgICB3aWR0aDogYXV0bzsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogYXV0bzsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbCB7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgfQogIC5mb3JtLWlubGluZSAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KLmJ0biB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIGZvbnQtc2l6ZTogMXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmJ0biB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQouYnRuOmhvdmVyLCAuYnRuOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmJ0bjpmb2N1cywgLmJ0bi5mb2N1cyB7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KLmJ0bi5kaXNhYmxlZCwgLmJ0bjpkaXNhYmxlZCB7CiAgb3BhY2l0eTogMC42NTsKfQouYnRuOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KYS5idG4uZGlzYWJsZWQsIGZpZWxkc2V0OmRpc2FibGVkIGEuYnRuIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouYnRuLXByaW1hcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5idG4tcHJpbWFyeTpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjlkOTsKICBib3JkZXItY29sb3I6ICMwMDYyY2M7Cn0KLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5idG4tcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1wcmltYXJ5OmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQouYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7CiAgYm9yZGVyLWNvbG9yOiAjMDA1Y2JmOwp9Ci5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KLmJ0bi1zZWNvbmRhcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9Ci5idG4tc2Vjb25kYXJ5OmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWE2MjY4OwogIGJvcmRlci1jb2xvcjogIzU0NWI2MjsKfQouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQsIC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwogIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQouYnRuLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7CiAgYm9yZGVyLWNvbG9yOiAjNGU1NTViOwp9Ci5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTA4LCAxMTcsIDEyNSwgMC41KTsKfQouYnRuLXN1Y2Nlc3MgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci5idG4tc3VjY2Vzczpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODsKICBib3JkZXItY29sb3I6ICMxZTdlMzQ7Cn0KLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9Ci5idG4tc3VjY2Vzcy5kaXNhYmxlZCwgLmJ0bi1zdWNjZXNzOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQouYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7CiAgYm9yZGVyLWNvbG9yOiAjMWM3NDMwOwp9Ci5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuNSk7Cn0KLmJ0bi1pbmZvIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQouYnRuLWluZm86aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxMzg0OTY7CiAgYm9yZGVyLWNvbG9yOiAjMTE3YThiOwp9Ci5idG4taW5mbzpmb2N1cywgLmJ0bi1pbmZvLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KLmJ0bi1pbmZvLmRpc2FibGVkLCAuYnRuLWluZm86ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7CiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9Ci5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YjsKICBib3JkZXItY29sb3I6ICMxMDcwN2Y7Cn0KLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KLmJ0bi13YXJuaW5nIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQouYnRuLXdhcm5pbmc6aG92ZXIgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNlMGE4MDA7CiAgYm9yZGVyLWNvbG9yOiAjZDM5ZTAwOwp9Ci5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQouYnRuLXdhcm5pbmcuZGlzYWJsZWQsIC5idG4td2FybmluZzpkaXNhYmxlZCB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KLmJ0bi13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwogIGJvcmRlci1jb2xvcjogI2M2OTUwMDsKfQouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOwp9Ci5idG4tZGFuZ2VyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1OwogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQouYnRuLWRhbmdlcjpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M4MjMzMzsKICBib3JkZXItY29sb3I6ICNiZDIxMzA7Cn0KLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQouYnRuLWRhbmdlci5kaXNhYmxlZCwgLmJ0bi1kYW5nZXI6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Ci5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKICBib3JkZXItY29sb3I6ICNiMjFmMmQ7Cn0KLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQouYnRuLWxpZ2h0IHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwogIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQouYnRuLWxpZ2h0OmhvdmVyIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlNmVhOwogIGJvcmRlci1jb2xvcjogI2RhZTBlNTsKfQouYnRuLWxpZ2h0OmZvY3VzLCAuYnRuLWxpZ2h0LmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9Ci5idG4tbGlnaHQuZGlzYWJsZWQsIC5idG4tbGlnaHQ6ZGlzYWJsZWQgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7CiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhOwp9Ci5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNTsKICBib3JkZXItY29sb3I6ICNkM2Q5ZGY7Cn0KLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9Ci5idG4tZGFyayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1kYXJrOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiOwogIGJvcmRlci1jb2xvcjogIzFkMjEyNDsKfQouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQouYnRuLWRhcmsuZGlzYWJsZWQsIC5idG4tZGFyazpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0OwogIGJvcmRlci1jb2xvcjogIzE3MWExZDsKfQouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXByaW1hcnkgewogIGNvbG9yOiAjMDA3YmZmOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5idG4tb3V0bGluZS1wcmltYXJ5OmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQouYnRuLW91dGxpbmUtcHJpbWFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCB7CiAgY29sb3I6ICMwMDdiZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1zZWNvbmRhcnkgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9Ci5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9Ci5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwogIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgewogIGNvbG9yOiAjMjhhNzQ1OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci5idG4tb3V0bGluZS1zdWNjZXNzOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQouYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCB7CiAgY29sb3I6ICMyOGE3NDU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1pbmZvIHsKICBjb2xvcjogIzE3YTJiODsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQouYnRuLW91dGxpbmUtaW5mbzpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KLmJ0bi1vdXRsaW5lLWluZm86Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQsIC5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIHsKICBjb2xvcjogIzE3YTJiODsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtaW5mby5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7CiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9Ci5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpOwp9Ci5idG4tb3V0bGluZS13YXJuaW5nIHsKICBjb2xvcjogI2ZmYzEwNzsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQouYnRuLW91dGxpbmUtd2FybmluZzpob3ZlciB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQouYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZjMTA3OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQouYnRuLW91dGxpbmUtZGFuZ2VyIHsKICBjb2xvcjogI2RjMzU0NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQouYnRuLW91dGxpbmUtZGFuZ2VyOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1OwogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQouYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQouYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkIHsKICBjb2xvcjogI2RjMzU0NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Ci5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLWxpZ2h0IHsKICBjb2xvcjogI2Y4ZjlmYTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQouYnRuLW91dGxpbmUtbGlnaHQ6aG92ZXIgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7CiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhOwp9Ci5idG4tb3V0bGluZS1saWdodDpmb2N1cywgLmJ0bi1vdXRsaW5lLWxpZ2h0LmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9Ci5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWxpZ2h0OmRpc2FibGVkIHsKICBjb2xvcjogI2Y4ZjlmYTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1saWdodC5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7CiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhOwp9Ci5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTsKfQouYnRuLW91dGxpbmUtZGFyayB7CiAgY29sb3I6ICMzNDNhNDA7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1vdXRsaW5lLWRhcms6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9Ci5idG4tb3V0bGluZS1kYXJrOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyay5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQouYnRuLW91dGxpbmUtZGFyay5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhcms6ZGlzYWJsZWQgewogIGNvbG9yOiAjMzQzYTQwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1kYXJrLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpOwp9Ci5idG4tbGluayB7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBjb2xvcjogIzAwN2JmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLWxpbms6aG92ZXIgewogIGNvbG9yOiAjMDA1NmIzOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1saW5rOmZvY3VzLCAuYnRuLWxpbmsuZm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogbm9uZTsKfQouYnRuLWxpbms6ZGlzYWJsZWQsIC5idG4tbGluay5kaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLmJ0bi1sZywgLmJ0bi1ncm91cC1sZyA+IC5idG4gewogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQouYnRuLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKfQouYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7CiAgbWFyZ2luLXRvcDogMC41cmVtOwp9CmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywgaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssIGlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7CiAgd2lkdGg6IDEwMCU7Cn0KLmZhZGUgewogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuZmFkZSB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQouZmFkZTpub3QoLnNob3cpIHsKICBvcGFjaXR5OiAwOwp9Ci5jb2xsYXBzZTpub3QoLnNob3cpIHsKICBkaXNwbGF5OiBub25lOwp9Ci5jb2xsYXBzaW5nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgaGVpZ2h0OiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jb2xsYXBzaW5nIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9Ci5kcm9wdXAsIC5kcm9wcmlnaHQsIC5kcm9wZG93biwgLmRyb3BsZWZ0IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7CiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQ7CiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiAwOwogIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQouZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmRyb3Bkb3duLW1lbnUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDAwOwogIGRpc3BsYXk6IG5vbmU7CiAgZmxvYXQ6IGxlZnQ7CiAgbWluLXdpZHRoOiAxMHJlbTsKICBwYWRkaW5nOiAwLjVyZW0gMDsKICBtYXJnaW46IDAuMTI1cmVtIDAgMDsKICBmb250LXNpemU6IDFyZW07CiAgY29sb3I6ICMyMTI1Mjk7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBsaXN0LXN0eWxlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmRyb3Bkb3duLW1lbnUtcmlnaHQgewogIHJpZ2h0OiAwOwogIGxlZnQ6IGF1dG87Cn0KLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7CiAgdG9wOiBhdXRvOwogIGJvdHRvbTogMTAwJTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtOwp9Ci5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7CiAgYm9yZGVyLXRvcDogMDsKICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDAuM2VtIHNvbGlkOwogIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQouZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQouZHJvcHJpZ2h0IC5kcm9wZG93bi1tZW51IHsKICB0b3A6IDA7CiAgcmlnaHQ6IGF1dG87CiAgbGVmdDogMTAwJTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1sZWZ0OiAwLjEyNXJlbTsKfQouZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAwLjI1NWVtOwogIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtOwogIGNvbnRlbnQ6ICIiOwogIGJvcmRlci10b3A6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogMDsKICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItbGVmdDogMC4zZW0gc29saWQ7Cn0KLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgdmVydGljYWwtYWxpZ246IDA7Cn0KLmRyb3BsZWZ0IC5kcm9wZG93bi1tZW51IHsKICB0b3A6IDA7CiAgcmlnaHQ6IDEwMCU7CiAgbGVmdDogYXV0bzsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1yaWdodDogMC4xMjVyZW07Cn0KLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAwLjI1NWVtOwogIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtOwogIGNvbnRlbnQ6ICIiOwp9Ci5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogbm9uZTsKfQouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1yaWdodDogMC4yNTVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkOwogIGJvcmRlci1ib3R0b206IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50Owp9Ci5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmJlZm9yZSB7CiAgdmVydGljYWwtYWxpZ246IDA7Cn0KLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJ0b3AiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJyaWdodCJdLCAuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49ImJvdHRvbSJdLCAuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49ImxlZnQiXSB7CiAgcmlnaHQ6IGF1dG87CiAgYm90dG9tOiBhdXRvOwp9Ci5kcm9wZG93bi1kaXZpZGVyIHsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luOiAwLjVyZW0gMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllY2VmOwp9Ci5kcm9wZG93bi1pdGVtIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwLjI1cmVtIDEuNXJlbTsKICBjbGVhcjogYm90aDsKICBmb250LXdlaWdodDogNDAwOwogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDA7Cn0KLmRyb3Bkb3duLWl0ZW06aG92ZXIsIC5kcm9wZG93bi1pdGVtOmZvY3VzIHsKICBjb2xvcjogIzE2MTgxYjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKfQouZHJvcGRvd24taXRlbS5hY3RpdmUsIC5kcm9wZG93bi1pdGVtOmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsIC5kcm9wZG93bi1pdGVtOmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouZHJvcGRvd24tbWVudS5zaG93IHsKICBkaXNwbGF5OiBibG9jazsKfQouZHJvcGRvd24taGVhZGVyIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAwLjVyZW0gMS41cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBjb2xvcjogIzZjNzU3ZDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5kcm9wZG93bi1pdGVtLXRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9Ci5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsZXg6IDAgMSBhdXRvOwp9Ci5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciB7CiAgei1pbmRleDogMTsKfQouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsIC5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7CiAgei1pbmRleDogMTsKfQouYnRuLWdyb3VwIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQouYnRuLXRvb2xiYXIgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQouYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHsKICB3aWR0aDogYXV0bzsKfQouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQouYnRuLWdyb3VwID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwgLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC41NjI1cmVtOwogIHBhZGRpbmctbGVmdDogMC41NjI1cmVtOwp9Ci5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLCAuZHJvcHVwIC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLCAuZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YmVmb3JlIHsKICBtYXJnaW4tcmlnaHQ6IDA7Cn0KLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtc20gPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC4zNzVyZW07CiAgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbTsKfQouYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCwgLmJ0bi1ncm91cC1sZyA+IC5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHsKICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtOwogIHBhZGRpbmctbGVmdDogMC43NXJlbTsKfQouYnRuLWdyb3VwLXZlcnRpY2FsIHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3VwIHsKICB3aWR0aDogMTAwJTsKfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4sIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuICsgLmJ0bi1ncm91cCwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIGlucHV0W3R5cGU9InJhZGlvIl0sIC5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5pbnB1dC1ncm91cCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogIHdpZHRoOiAxMDAlOwp9Ci5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbGV4OiAxIDEgYXV0bzsKICB3aWR0aDogMSU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0ICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1maWxlLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tZmlsZSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1maWxlIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOmZvY3VzLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpmb2N1cywgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgei1pbmRleDogMzsKfQouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHsKICB6LWluZGV4OiA0Owp9Ci5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpsYXN0LWNoaWxkKSB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpmaXJzdC1jaGlsZCkgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9Ci5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmZpcnN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQouaW5wdXQtZ3JvdXAtcHJlcGVuZCwgLmlucHV0LWdyb3VwLWFwcGVuZCB7CiAgZGlzcGxheTogZmxleDsKfQouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwp9Ci5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gKyAuYnRuLCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biwgLmlucHV0LWdyb3VwLWFwcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5idG4gewogIG1hcmdpbi1sZWZ0OiAtMXB4Owp9Ci5pbnB1dC1ncm91cC1wcmVwZW5kIHsKICBtYXJnaW4tcmlnaHQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLWFwcGVuZCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLXRleHQgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQouaW5wdXQtZ3JvdXAtdGV4dCBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuaW5wdXQtZ3JvdXAtdGV4dCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBtYXJnaW4tdG9wOiAwOwp9Ci5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmJ0biB7CiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAwLjNyZW07Cn0KLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogMC4ycmVtOwp9Ci5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9Ci5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6Zmlyc3QtY2hpbGQpIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KLmN1c3RvbS1jb250cm9sIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgbWluLWhlaWdodDogMS41cmVtOwogIHBhZGRpbmctbGVmdDogMS41cmVtOwp9Ci5jdXN0b20tY29udHJvbC1pbmxpbmUgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIG1hcmdpbi1yaWdodDogMXJlbTsKfQouY3VzdG9tLWNvbnRyb2wtaW5wdXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKICBvcGFjaXR5OiAwOwp9Ci5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KLmN1c3RvbS1jb250cm9sLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KLmN1c3RvbS1jb250cm9sLWlucHV0OmFjdGl2ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9Ci5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICM2Yzc1N2Q7Cn0KLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KLmN1c3RvbS1jb250cm9sLWxhYmVsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMC4yNXJlbTsKICBsZWZ0OiAtMS41cmVtOwogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBjb250ZW50OiAiIjsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2Owp9Ci5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDAuMjVyZW07CiAgbGVmdDogLTEuNXJlbTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgY29udGVudDogIiI7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogIGJhY2tncm91bmQtc2l6ZTogNTAlIDUwJTsKfQouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBmaWxsPSclMjNmZmYnIGQ9J002LjU2NC43NWwtMy41OSAzLjYxMi0xLjUzOC0xLjU1TDAgNC4yNiAyLjk3NCA3LjI1IDggMi4xOTN6Jy8lM0UlM0Mvc3ZnJTNFIik7Cn0KLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9Ci5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzRSUzQy9zdmclM0UiKTsKfQouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJvcmRlci1yYWRpdXM6IDUwJTsKfQouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyUyM2ZmZicvJTNFJTNDL3N2ZyUzRSIpOwp9Ci5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsKfQouY3VzdG9tLXNlbGVjdCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjM3NXJlbSAxLjc1cmVtIDAuMzc1cmVtIDAuNzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGJhY2tncm91bmQ6ICNmZmYgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUnJTNFJTNDcGF0aCBmaWxsPSclMjMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzRSUzQy9zdmclM0UiKSBuby1yZXBlYXQgcmlnaHQgMC43NXJlbSBjZW50ZXI7CiAgYmFja2dyb3VuZC1zaXplOiA4cHggMTBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgYXBwZWFyYW5jZTogbm9uZTsKfQouY3VzdG9tLXNlbGVjdDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjODBiZGZmOwogIG91dGxpbmU6IDA7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTI4LCAxODksIDI1NSwgMC41KTsKfQouY3VzdG9tLXNlbGVjdDpmb2N1czo6LW1zLXZhbHVlIHsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5jdXN0b20tc2VsZWN0W211bHRpcGxlXSwgLmN1c3RvbS1zZWxlY3Rbc2l6ZV06bm90KFtzaXplPSIxIl0pIHsKICBoZWlnaHQ6IGF1dG87CiAgcGFkZGluZy1yaWdodDogMC43NXJlbTsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5jdXN0b20tc2VsZWN0OmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwp9Ci5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHsKICBvcGFjaXR5OiAwOwp9Ci5jdXN0b20tc2VsZWN0LXNtIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKICBwYWRkaW5nLXRvcDogMC4zNzVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtOwogIGZvbnQtc2l6ZTogNzUlOwp9Ci5jdXN0b20tc2VsZWN0LWxnIHsKICBoZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwogIHBhZGRpbmctdG9wOiAwLjM3NXJlbTsKICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07CiAgZm9udC1zaXplOiAxMjUlOwp9Ci5jdXN0b20tZmlsZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY3VzdG9tLWZpbGUtaW5wdXQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBtYXJnaW46IDA7CiAgb3BhY2l0eTogMDsKfQouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci1jb2xvcjogIzgwYmRmZjsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLWNvbG9yOiAjODBiZGZmOwp9Ci5jdXN0b20tZmlsZS1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQouY3VzdG9tLWZpbGUtaW5wdXQ6bGFuZyhlbikgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKICBjb250ZW50OiAiQnJvd3NlIjsKfQouY3VzdG9tLWZpbGUtbGFiZWwgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgei1pbmRleDogMzsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDIuMjVyZW07CiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjNDk1MDU3OwogIGNvbnRlbnQ6ICJCcm93c2UiOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2VkNGRhOwogIGJvcmRlci1yYWRpdXM6IDAgMC4yNXJlbSAwLjI1cmVtIDA7Cn0KLmN1c3RvbS1yYW5nZSB7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KLmN1c3RvbS1yYW5nZTpmb2N1cyB7CiAgb3V0bGluZTogbm9uZTsKfQouY3VzdG9tLXJhbmdlOmZvY3VzOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQouY3VzdG9tLXJhbmdlOmZvY3VzOjotbW96LXJhbmdlLXRodW1iIHsKICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9Ci5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tcy10aHVtYiB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQouY3VzdG9tLXJhbmdlOjotbW96LWZvY3VzLW91dGVyIHsKICBib3JkZXI6IDA7Cn0KLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBtYXJnaW4tdG9wOiAtMC4yNXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlcjogMDsKICBib3JkZXItcmFkaXVzOiAxcmVtOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKICBhcHBlYXJhbmNlOiBub25lOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMC41cmVtOwogIGNvbG9yOiB0cmFuc3BhcmVudDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDFyZW07Cn0KLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYiB7CiAgd2lkdGg6IDFyZW07CiAgaGVpZ2h0OiAxcmVtOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1yYWRpdXM6IDFyZW07CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0OwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10cmFjayB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAwLjVyZW07CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1yaWdodDogMC4ycmVtOwogIG1hcmdpbi1sZWZ0OiAwLjJyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7CiAgYXBwZWFyYW5jZTogbm9uZTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9Ci5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KLmN1c3RvbS1yYW5nZTo6LW1zLXRyYWNrIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDAuNXJlbTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXdpZHRoOiAwLjVyZW07Cn0KLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtbG93ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC11cHBlciB7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0Owp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQoubmF2IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5uYXYtbGluayB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC41cmVtIDFyZW07Cn0KLm5hdi1saW5rOmhvdmVyLCAubmF2LWxpbms6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwp9Ci5uYXYtdGFicyB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTY7Cn0KLm5hdi10YWJzIC5uYXYtaXRlbSB7CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKfQoubmF2LXRhYnMgLm5hdi1saW5rIHsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5uYXYtdGFicyAubmF2LWxpbms6aG92ZXIsIC5uYXYtdGFicyAubmF2LWxpbms6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7Cn0KLm5hdi10YWJzIC5uYXYtbGluay5kaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoubmF2LXRhYnMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTYgI2RlZTJlNiAjZmZmOwp9Ci5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CiAgbWFyZ2luLXRvcDogLTFweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5uYXYtcGlsbHMgLm5hdi1saW5rIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoubmF2LWZpbGwgLm5hdi1pdGVtIHsKICBmbGV4OiAxIDEgYXV0bzsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIHsKICBmbGV4LWJhc2lzOiAwOwogIGZsZXgtZ3JvdzogMTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHsKICBkaXNwbGF5OiBub25lOwp9Ci50YWItY29udGVudCA+IC5hY3RpdmUgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5uYXZiYXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKfQoubmF2YmFyID4gLmNvbnRhaW5lciwgLm5hdmJhciA+IC5jb250YWluZXItZmx1aWQgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9Ci5uYXZiYXItYnJhbmQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXRvcDogMC4zMTI1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjMxMjVyZW07CiAgbWFyZ2luLXJpZ2h0OiAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoubmF2YmFyLW5hdiB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW4tYm90dG9tOiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQoubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBmbG9hdDogbm9uZTsKfQoubmF2YmFyLXRleHQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXRvcDogMC41cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjVyZW07Cn0KLm5hdmJhci1jb2xsYXBzZSB7CiAgZmxleC1iYXNpczogMTAwJTsKICBmbGV4LWdyb3c6IDE7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoubmF2YmFyLXRvZ2dsZXIgewogIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDE7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5uYXZiYXItdG9nZ2xlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5uYXZiYXItdG9nZ2xlci1pY29uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEuNWVtOwogIGhlaWdodDogMS41ZW07CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBjb250ZW50OiAiIjsKICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSB7CiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtOwogIH0KICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWJhc2lzOiBhdXRvOwogIH0KICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1leHBhbmQtbWQgewogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5uYXZiYXItZXhwYW5kLWxnIHsKICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgewogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIGZsZXgtd3JhcDogbm93cmFwOwogIH0KICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNlIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItdG9nZ2xlciB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItZmx1aWQgewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5uYXZiYXItZXhwYW5kLXhsIHsKICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgewogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIGZsZXgtd3JhcDogbm93cmFwOwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLWNvbGxhcHNlIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgfQogIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlciB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoubmF2YmFyLWV4cGFuZCB7CiAgZmxleC1mbG93OiByb3cgbm93cmFwOwogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgcGFkZGluZy1yaWdodDogMDsKICBwYWRkaW5nLWxlZnQ6IDA7Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgewogIGZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsKICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKfQoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgZmxleC13cmFwOiBub3dyYXA7Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci1jb2xsYXBzZSB7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIGZsZXgtYmFzaXM6IGF1dG87Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci10b2dnbGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZCB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpmb2N1cyB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpob3ZlciwgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXIgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXItaWNvbiB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgwLCAwLCAwLCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRSIpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYTpmb2N1cyB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZCB7CiAgY29sb3I6ICNmZmY7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5hY3RpdmUgPiAubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdywgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXIgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlci1pY29uIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPSdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IGEgewogIGNvbG9yOiAjZmZmOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKfQouY2FyZCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBtaW4td2lkdGg6IDA7CiAgd29yZC13cmFwOiBicmVhay13b3JkOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94OwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmNhcmQgPiBociB7CiAgbWFyZ2luLXJpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKfQouY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5jYXJkLWJvZHkgewogIGZsZXg6IDEgMSBhdXRvOwogIHBhZGRpbmc6IDEuMjVyZW07Cn0KLmNhcmQtdGl0bGUgewogIG1hcmdpbi1ib3R0b206IDAuNzVyZW07Cn0KLmNhcmQtc3VidGl0bGUgewogIG1hcmdpbi10b3A6IC0wLjM3NXJlbTsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5jYXJkLXRleHQ6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY2FyZC1saW5rOmhvdmVyIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmNhcmQtbGluayArIC5jYXJkLWxpbmsgewogIG1hcmdpbi1sZWZ0OiAxLjI1cmVtOwp9Ci5jYXJkLWhlYWRlciB7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KLmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxkIHsKICBib3JkZXItcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCkgMCAwOwp9Ci5jYXJkLWhlYWRlciArIC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3A6IDA7Cn0KLmNhcmQtZm9vdGVyIHsKICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KLmNhcmQtZm9vdGVyOmxhc3QtY2hpbGQgewogIGJvcmRlci1yYWRpdXM6IDAgMCBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCk7Cn0KLmNhcmQtaGVhZGVyLXRhYnMgewogIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtOwogIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtOwogIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07CiAgYm9yZGVyLWJvdHRvbTogMDsKfQouY2FyZC1oZWFkZXItcGlsbHMgewogIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtOwogIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07Cn0KLmNhcmQtaW1nLW92ZXJsYXkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgcGFkZGluZzogMS4yNXJlbTsKfQouY2FyZC1pbWcgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7Cn0KLmNhcmQtaW1nLXRvcCB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQouY2FyZC1pbWctYm90dG9tIHsKICB3aWR0aDogMTAwJTsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpOwp9Ci5jYXJkLWRlY2sgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQouY2FyZC1kZWNrIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jYXJkLWRlY2sgewogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgfQogIC5jYXJkLWRlY2sgLmNhcmQgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXg6IDEgMCAwJTsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgfQp9Ci5jYXJkLWdyb3VwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY2FyZC1ncm91cCB7CiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkIHsKICAgIGZsZXg6IDEgMCAwJTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQgKyAuY2FyZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIGJvcmRlci1sZWZ0OiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy10b3AsIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIHsKICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaGVhZGVyIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctYm90dG9tLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1oZWFkZXIsIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIC5jYXJkLWZvb3RlciB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQouY2FyZC1jb2x1bW5zIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jYXJkLWNvbHVtbnMgewogICAgY29sdW1uLWNvdW50OiAzOwogICAgY29sdW1uLWdhcDogMS4yNXJlbTsKICAgIG9ycGhhbnM6IDE7CiAgICB3aWRvd3M6IDE7CiAgfQogIC5jYXJkLWNvbHVtbnMgLmNhcmQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5hY2NvcmRpb24gLmNhcmQ6bm90KDpmaXJzdC1vZi10eXBlKTpub3QoOmxhc3Qtb2YtdHlwZSkgewogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouYWNjb3JkaW9uIC5jYXJkOm5vdCg6Zmlyc3Qtb2YtdHlwZSkgLmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxkIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5hY2NvcmRpb24gLmNhcmQ6Zmlyc3Qtb2YtdHlwZSB7CiAgYm9yZGVyLWJvdHRvbTogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5hY2NvcmRpb24gLmNhcmQ6bGFzdC1vZi10eXBlIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5icmVhZGNydW1iIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBsaXN0LXN0eWxlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQouYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbSB7CiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07Cn0KLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06OmJlZm9yZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsKICBjb2xvcjogIzZjNzU3ZDsKICBjb250ZW50OiAiLyI7Cn0KLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5icmVhZGNydW1iLWl0ZW0uYWN0aXZlIHsKICBjb2xvcjogIzZjNzU3ZDsKfQoucGFnaW5hdGlvbiB7CiAgZGlzcGxheTogZmxleDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5wYWdlLWxpbmsgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTsKICBtYXJnaW4tbGVmdDogLTFweDsKICBsaW5lLWhlaWdodDogMS4yNTsKICBjb2xvcjogIzAwN2JmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KLnBhZ2UtbGluazpob3ZlciB7CiAgei1pbmRleDogMjsKICBjb2xvcjogIzAwNTZiMzsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KLnBhZ2UtbGluazpmb2N1cyB7CiAgei1pbmRleDogMjsKICBvdXRsaW5lOiAwOwogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQoucGFnZS1saW5rOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHsKICBtYXJnaW4tbGVmdDogMDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07Cn0KLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5wYWdlLWl0ZW0uYWN0aXZlIC5wYWdlLWxpbmsgewogIHotaW5kZXg6IDE7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KLnBhZ2UtaXRlbS5kaXNhYmxlZCAucGFnZS1saW5rIHsKICBjb2xvcjogIzZjNzU3ZDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBjdXJzb3I6IGF1dG87CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7CiAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjNyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4zcmVtOwp9Ci5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4zcmVtOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjNyZW07Cn0KLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41Owp9Ci5wYWdpbmF0aW9uLXNtIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4ycmVtOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMnJlbTsKfQoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMnJlbTsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4ycmVtOwp9Ci5iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDAuMjVlbSAwLjRlbTsKICBmb250LXNpemU6IDc1JTsKICBmb250LXdlaWdodDogNzAwOwogIGxpbmUtaGVpZ2h0OiAxOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5iYWRnZTplbXB0eSB7CiAgZGlzcGxheTogbm9uZTsKfQouYnRuIC5iYWRnZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogLTFweDsKfQouYmFkZ2UtcGlsbCB7CiAgcGFkZGluZy1yaWdodDogMC42ZW07CiAgcGFkZGluZy1sZWZ0OiAwLjZlbTsKICBib3JkZXItcmFkaXVzOiAxMHJlbTsKfQouYmFkZ2UtcHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQouYmFkZ2UtcHJpbWFyeVtocmVmXTpob3ZlciwgLmJhZGdlLXByaW1hcnlbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjOwp9Ci5iYWRnZS1zZWNvbmRhcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7Cn0KLmJhZGdlLXNlY29uZGFyeVtocmVmXTpob3ZlciwgLmJhZGdlLXNlY29uZGFyeVtocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7Cn0KLmJhZGdlLXN1Y2Nlc3MgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cn0KLmJhZGdlLXN1Y2Nlc3NbaHJlZl06aG92ZXIsIC5iYWRnZS1zdWNjZXNzW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNDsKfQouYmFkZ2UtaW5mbyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKfQouYmFkZ2UtaW5mb1tocmVmXTpob3ZlciwgLmJhZGdlLWluZm9baHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiOwp9Ci5iYWRnZS13YXJuaW5nIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3Owp9Ci5iYWRnZS13YXJuaW5nW2hyZWZdOmhvdmVyLCAuYmFkZ2Utd2FybmluZ1tocmVmXTpmb2N1cyB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNkMzllMDA7Cn0KLmJhZGdlLWRhbmdlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKfQouYmFkZ2UtZGFuZ2VyW2hyZWZdOmhvdmVyLCAuYmFkZ2UtZGFuZ2VyW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKfQouYmFkZ2UtbGlnaHQgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cn0KLmJhZGdlLWxpZ2h0W2hyZWZdOmhvdmVyLCAuYmFkZ2UtbGlnaHRbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1Owp9Ci5iYWRnZS1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwp9Ci5iYWRnZS1kYXJrW2hyZWZdOmhvdmVyLCAuYmFkZ2UtZGFya1tocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQ7Cn0KLmp1bWJvdHJvbiB7CiAgcGFkZGluZzogMnJlbSAxcmVtOwogIG1hcmdpbi1ib3R0b206IDJyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBib3JkZXItcmFkaXVzOiAwLjNyZW07Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmp1bWJvdHJvbiB7CiAgICBwYWRkaW5nOiA0cmVtIDJyZW07CiAgfQp9Ci5qdW1ib3Ryb24tZmx1aWQgewogIHBhZGRpbmctcmlnaHQ6IDA7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmFsZXJ0IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIG1hcmdpbi1ib3R0b206IDFyZW07CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQouYWxlcnQtaGVhZGluZyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLmFsZXJ0LWxpbmsgewogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KLmFsZXJ0LWRpc21pc3NpYmxlIHsKICBwYWRkaW5nLXJpZ2h0OiA0cmVtOwp9Ci5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2UgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIGNvbG9yOiBpbmhlcml0Owp9Ci5hbGVydC1wcmltYXJ5IHsKICBjb2xvcjogIzAwNDA4NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NlNWZmOwogIGJvcmRlci1jb2xvcjogI2I4ZGFmZjsKfQouYWxlcnQtcHJpbWFyeSBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzllY2RmZjsKfQouYWxlcnQtcHJpbWFyeSAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwMDI3NTI7Cn0KLmFsZXJ0LXNlY29uZGFyeSB7CiAgY29sb3I6ICMzODNkNDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTsKICBib3JkZXItY29sb3I6ICNkNmQ4ZGI7Cn0KLmFsZXJ0LXNlY29uZGFyeSBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2M4Y2NjZjsKfQouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsKICBjb2xvcjogIzIxMjMyNjsKfQouYWxlcnQtc3VjY2VzcyB7CiAgY29sb3I6ICMxNTU3MjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTsKICBib3JkZXItY29sb3I6ICNjM2U2Y2I7Cn0KLmFsZXJ0LXN1Y2Nlc3MgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNiMWRmYmI7Cn0KLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjMGIyZTEzOwp9Ci5hbGVydC1pbmZvIHsKICBjb2xvcjogIzBjNTQ2MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFlY2YxOwogIGJvcmRlci1jb2xvcjogI2JlZTVlYjsKfQouYWxlcnQtaW5mbyBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2FiZGRlNTsKfQouYWxlcnQtaW5mbyAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwNjJjMzI7Cn0KLmFsZXJ0LXdhcm5pbmcgewogIGNvbG9yOiAjODU2NDA0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7CiAgYm9yZGVyLWNvbG9yOiAjZmZlZWJhOwp9Ci5hbGVydC13YXJuaW5nIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjZmZlN2EwOwp9Ci5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzUzM2YwMjsKfQouYWxlcnQtZGFuZ2VyIHsKICBjb2xvcjogIzcyMWMyNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhkN2RhOwogIGJvcmRlci1jb2xvcjogI2Y1YzZjYjsKfQouYWxlcnQtZGFuZ2VyIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjZjFiMWI3Owp9Ci5hbGVydC1kYW5nZXIgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjNDkxMjE3Owp9Ci5hbGVydC1saWdodCB7CiAgY29sb3I6ICM4MTgxODI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTsKICBib3JkZXItY29sb3I6ICNmZGZkZmU7Cn0KLmFsZXJ0LWxpZ2h0IGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjZjFmMWYxOwp9Ci5hbGVydC1saWdodCAuYWxlcnQtbGluayB7CiAgY29sb3I6ICM2ODY4Njg7Cn0KLmFsZXJ0LWRhcmsgewogIGNvbG9yOiAjMWIxZTIxOwogIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7CiAgYm9yZGVyLWNvbG9yOiAjYzZjOGNhOwp9Ci5hbGVydC1kYXJrIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYjliYmJkOwp9Ci5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzA0MDUwNTsKfQpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KfQoucHJvZ3Jlc3MgewogIGRpc3BsYXk6IGZsZXg7CiAgaGVpZ2h0OiAxcmVtOwogIG92ZXJmbG93OiBoaWRkZW47CiAgZm9udC1zaXplOiAwLjc1cmVtOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoucHJvZ3Jlc3MtYmFyIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICB0cmFuc2l0aW9uOiB3aWR0aCAwLjZzIGVhc2U7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5wcm9ncmVzcy1iYXIgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLnByb2dyZXNzLWJhci1zdHJpcGVkIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLXNpemU6IDFyZW0gMXJlbTsKfQoucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHsKICBhbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKfQoubWVkaWEgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Cn0KLm1lZGlhLWJvZHkgewogIGZsZXg6IDE7Cn0KLmxpc3QtZ3JvdXAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoubGlzdC1ncm91cC1pdGVtLWFjdGlvbiB7CiAgd2lkdGg6IDEwMCU7CiAgY29sb3I6ICM0OTUwNTc7CiAgdGV4dC1hbGlnbjogaW5oZXJpdDsKfQoubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjNDk1MDU3OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9Ci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmFjdGl2ZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQoubGlzdC1ncm91cC1pdGVtIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIG1hcmdpbi1ib3R0b206IC0xcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQoubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5saXN0LWdyb3VwLWl0ZW06aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgewogIHotaW5kZXg6IDE7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsIC5saXN0LWdyb3VwLWl0ZW06ZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgewogIHotaW5kZXg6IDI7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KLmxpc3QtZ3JvdXAtZmx1c2ggLmxpc3QtZ3JvdXAtaXRlbSB7CiAgYm9yZGVyLXJpZ2h0OiAwOwogIGJvcmRlci1sZWZ0OiAwOwogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmxpc3QtZ3JvdXAtZmx1c2g6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcDogMDsKfQoubGlzdC1ncm91cC1mbHVzaDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoubGlzdC1ncm91cC1pdGVtLXByaW1hcnkgewogIGNvbG9yOiAjMDA0MDg1OwogIGJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzAwNDA4NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWVjZGZmOwp9Ci5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDA4NTsKICBib3JkZXItY29sb3I6ICMwMDQwODU7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkgewogIGNvbG9yOiAjMzgzZDQxOwogIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZGI7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMzODNkNDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M4Y2NjZjsKfQoubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM4M2Q0MTsKICBib3JkZXItY29sb3I6ICMzODNkNDE7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsKICBjb2xvcjogIzE1NTcyNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlNmNiOwp9Ci5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMxNTU3MjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxNTU3MjQ7CiAgYm9yZGVyLWNvbG9yOiAjMTU1NzI0Owp9Ci5saXN0LWdyb3VwLWl0ZW0taW5mbyB7CiAgY29sb3I6ICMwYzU0NjA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjMGM1NDYwOwogIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGM1NDYwOwogIGJvcmRlci1jb2xvcjogIzBjNTQ2MDsKfQoubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgewogIGNvbG9yOiAjODU2NDA0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmVlYmE7Cn0KLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzg1NjQwNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlN2EwOwp9Ci5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzg1NjQwNDsKICBib3JkZXItY29sb3I6ICM4NTY0MDQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewogIGNvbG9yOiAjNzIxYzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzcyMWMyNDsKICBib3JkZXItY29sb3I6ICM3MjFjMjQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1saWdodCB7CiAgY29sb3I6ICM4MTgxODI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM4MTgxODI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKfQoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjODE4MTgyOwogIGJvcmRlci1jb2xvcjogIzgxODE4MjsKfQoubGlzdC1ncm91cC1pdGVtLWRhcmsgewogIGNvbG9yOiAjMWIxZTIxOwogIGJhY2tncm91bmQtY29sb3I6ICNjNmM4Y2E7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzFiMWUyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJkOwp9Ci5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFiMWUyMTsKICBib3JkZXItY29sb3I6ICMxYjFlMjE7Cn0KLmNsb3NlIHsKICBmbG9hdDogcmlnaHQ7CiAgZm9udC1zaXplOiAxLjVyZW07CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogIzAwMDsKICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwogIG9wYWNpdHk6IDAuNTsKfQouY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewogIGN1cnNvcjogcG9pbnRlcjsKfQouY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpmb2N1cyB7CiAgY29sb3I6ICMwMDA7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIG9wYWNpdHk6IDAuNzU7Cn0KYnV0dG9uLmNsb3NlIHsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KLm1vZGFsLW9wZW4gewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLm1vZGFsLW9wZW4gLm1vZGFsIHsKICBvdmVyZmxvdy14OiBoaWRkZW47CiAgb3ZlcmZsb3cteTogYXV0bzsKfQoubW9kYWwgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTA1MDsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBoaWRkZW47CiAgb3V0bGluZTogMDsKfQoubW9kYWwtZGlhbG9nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IGF1dG87CiAgbWFyZ2luOiAwLjVyZW07CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZyB7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTI1JSk7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZyB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7Cn0KLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtICgwLjVyZW0gKiAyKSk7Cn0KLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAoMC41cmVtICogMikpOwogIGNvbnRlbnQ6ICIiOwp9Ci5tb2RhbC1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHdpZHRoOiAxMDAlOwogIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwogIG91dGxpbmU6IDA7Cn0KLm1vZGFsLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwNDA7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoubW9kYWwtYmFja2Ryb3AuZmFkZSB7CiAgb3BhY2l0eTogMDsKfQoubW9kYWwtYmFja2Ryb3Auc2hvdyB7CiAgb3BhY2l0eTogMC41Owp9Ci5tb2RhbC1oZWFkZXIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHBhZGRpbmc6IDFyZW07CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOWVjZWY7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjNyZW07Cn0KLm1vZGFsLWhlYWRlciAuY2xvc2UgewogIHBhZGRpbmc6IDFyZW07CiAgbWFyZ2luOiAtMXJlbSAtMXJlbSAtMXJlbSBhdXRvOwp9Ci5tb2RhbC10aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaW5lLWhlaWdodDogMS41Owp9Ci5tb2RhbC1ib2R5IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxleDogMSAxIGF1dG87CiAgcGFkZGluZzogMXJlbTsKfQoubW9kYWwtZm9vdGVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICBwYWRkaW5nOiAxcmVtOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllY2VmOwp9Ci5tb2RhbC1mb290ZXIgPiA6bm90KDpmaXJzdC1jaGlsZCkgewogIG1hcmdpbi1sZWZ0OiAwLjI1cmVtOwp9Ci5tb2RhbC1mb290ZXIgPiA6bm90KDpsYXN0LWNoaWxkKSB7CiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtOwp9Ci5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTk5OTlweDsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgb3ZlcmZsb3c6IHNjcm9sbDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAubW9kYWwtZGlhbG9nIHsKICAgIG1heC13aWR0aDogNTAwcHg7CiAgICBtYXJnaW46IDEuNzVyZW0gYXV0bzsKICB9CiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoMS43NXJlbSAqIDIpKTsKICB9CiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKICAgIGhlaWdodDogY2FsYygxMDB2aCAtICgxLjc1cmVtICogMikpOwogIH0KICAubW9kYWwtc20gewogICAgbWF4LXdpZHRoOiAzMDBweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLm1vZGFsLWxnIHsKICAgIG1heC13aWR0aDogODAwcHg7CiAgfQp9Ci50b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogMTA3MDsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDA7CiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCIsICJOb3RvIENvbG9yIEVtb2ppIjsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMS41OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1hbGlnbjogc3RhcnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRleHQtc2hhZG93OiBub25lOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgd29yZC1icmVhazogbm9ybWFsOwogIHdvcmQtc3BhY2luZzogbm9ybWFsOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgbGluZS1icmVhazogYXV0bzsKICBmb250LXNpemU6IDAuODc1cmVtOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBvcGFjaXR5OiAwOwp9Ci50b29sdGlwLnNob3cgewogIG9wYWNpdHk6IDAuOTsKfQoudG9vbHRpcCAuYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMC44cmVtOwogIGhlaWdodDogMC40cmVtOwp9Ci50b29sdGlwIC5hcnJvdzo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgY29udGVudDogIiI7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci5icy10b29sdGlwLXRvcCwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKICBwYWRkaW5nOiAwLjRyZW0gMDsKfQouYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKICBib3R0b206IDA7Cn0KLmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgewogIHRvcDogMDsKICBib3JkZXItd2lkdGg6IDAuNHJlbSAwLjRyZW0gMDsKICBib3JkZXItdG9wLWNvbG9yOiAjMDAwOwp9Ci5icy10b29sdGlwLXJpZ2h0LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSB7CiAgcGFkZGluZzogMCAwLjRyZW07Cn0KLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3cgewogIGxlZnQ6IDA7CiAgd2lkdGg6IDAuNHJlbTsKICBoZWlnaHQ6IDAuOHJlbTsKfQouYnMtdG9vbHRpcC1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUgewogIHJpZ2h0OiAwOwogIGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwLjRyZW0gMDsKICBib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7Cn0KLmJzLXRvb2x0aXAtYm90dG9tLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gewogIHBhZGRpbmc6IDAuNHJlbSAwOwp9Ci5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewogIHRvcDogMDsKfQouYnMtdG9vbHRpcC1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7CiAgYm90dG9tOiAwOwogIGJvcmRlci13aWR0aDogMCAwLjRyZW0gMC40cmVtOwogIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7Cn0KLmJzLXRvb2x0aXAtbGVmdCwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSB7CiAgcGFkZGluZzogMCAwLjRyZW07Cn0KLmJzLXRvb2x0aXAtbGVmdCAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93IHsKICByaWdodDogMDsKICB3aWR0aDogMC40cmVtOwogIGhlaWdodDogMC44cmVtOwp9Ci5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUgewogIGxlZnQ6IDA7CiAgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMCAwLjRyZW0gMC40cmVtOwogIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLWlubmVyIHsKICBtYXgtd2lkdGg6IDIwMHB4OwogIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtOwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLnBvcG92ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDYwOwogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogMjc2cHg7CiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCIsICJOb3RvIENvbG9yIEVtb2ppIjsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMS41OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1hbGlnbjogc3RhcnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRleHQtc2hhZG93OiBub25lOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgd29yZC1icmVhazogbm9ybWFsOwogIHdvcmQtc3BhY2luZzogbm9ybWFsOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgbGluZS1icmVhazogYXV0bzsKICBmb250LXNpemU6IDAuODc1cmVtOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoucG9wb3ZlciAuYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDAuNXJlbTsKICBtYXJnaW46IDAgMC4zcmVtOwp9Ci5wb3BvdmVyIC5hcnJvdzo6YmVmb3JlLCAucG9wb3ZlciAuYXJyb3c6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KLmJzLXBvcG92ZXItdG9wIC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdyB7CiAgYm90dG9tOiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwp9Ci5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwOwp9Ci5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlIHsKICBib3R0b206IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvdHRvbTogMXB4OwogIGJvcmRlci10b3AtY29sb3I6ICNmZmY7Cn0KLmJzLXBvcG92ZXItcmlnaHQsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKICBtYXJnaW4tbGVmdDogMC41cmVtOwp9Ci5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKICBsZWZ0OiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwogIHdpZHRoOiAwLjVyZW07CiAgaGVpZ2h0OiAxcmVtOwogIG1hcmdpbjogMC4zcmVtIDA7Cn0KLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVyIHsKICBib3JkZXItd2lkdGg6IDAuNXJlbSAwLjVyZW0gMC41cmVtIDA7Cn0KLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlIHsKICBsZWZ0OiAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVyIHsKICBsZWZ0OiAxcHg7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKICBtYXJnaW4tdG9wOiAwLjVyZW07Cn0KLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdyB7CiAgdG9wOiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMCAwLjVyZW0gMC41cmVtIDAuNXJlbTsKfQouYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7CiAgdG9wOiAwOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmFmdGVyIHsKICB0b3A6IDFweDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDUwJTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBtYXJnaW4tbGVmdDogLTAuNXJlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y3ZjdmNzsKfQouYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3cgewogIHJpZ2h0OiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwogIHdpZHRoOiAwLjVyZW07CiAgaGVpZ2h0OiAxcmVtOwogIG1hcmdpbjogMC4zcmVtIDA7Cn0KLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAgMC41cmVtIDAuNXJlbTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YmVmb3JlIHsKICByaWdodDogMDsKICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjphZnRlciB7CiAgcmlnaHQ6IDFweDsKICBib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoucG9wb3Zlci1oZWFkZXIgewogIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGNvbG9yOiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7Cn0KLnBvcG92ZXItaGVhZGVyOmVtcHR5IHsKICBkaXNwbGF5OiBub25lOwp9Ci5wb3BvdmVyLWJvZHkgewogIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9Ci5jYXJvdXNlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5jYXJvdXNlbC1pbm5lciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmNhcm91c2VsLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBub25lOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogIHBlcnNwZWN0aXZlOiAxMDAwcHg7Cn0KLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICBkaXNwbGF5OiBibG9jazsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC42cyBlYXNlLCBtYXJnaW4gMC42cyBlYXNlOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1pdGVtLW5leHQsIC5jYXJvdXNlbC1pdGVtLXByZXYgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKfQouY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KQHN1cHBvcnRzICgoLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSBvciAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkpIHsKICAuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgfQp9Ci5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwp9CkBzdXBwb3J0cyAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgewogIC5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogIH0KfQouY2Fyb3VzZWwtaXRlbS1wcmV2LCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKfQpAc3VwcG9ydHMgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIHsKICAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICB9Cn0KLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0gewogIG9wYWNpdHk6IDA7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC42czsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9Ci5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgb3BhY2l0eTogMTsKfQouY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICBvcGFjaXR5OiAwOwp9Ci5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLXByZXYsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CiAgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tcHJldiwgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXByZXYgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB9Cn0KLmNhcm91c2VsLWNvbnRyb2wtcHJldiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHdpZHRoOiAxNSU7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG9wYWNpdHk6IDAuNTsKfQouY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgb3V0bGluZTogMDsKICBvcGFjaXR5OiAwLjk7Cn0KLmNhcm91c2VsLWNvbnRyb2wtcHJldiB7CiAgbGVmdDogMDsKfQouY2Fyb3VzZWwtY29udHJvbC1uZXh0IHsKICByaWdodDogMDsKfQouY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sIC5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQouY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNNS4yNSAwbC00IDQgNCA0IDEuNS0xLjUtMi41LTIuNSAyLjUtMi41LTEuNS0xLjV6Jy8lM0UlM0Mvc3ZnJTNFIik7Cn0KLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzZmZmJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTIuNzUgMGwtMS41IDEuNSAyLjUgMi41LTIuNSAyLjUgMS41IDEuNSA0LTQtNC00eicvJTNFJTNDL3N2ZyUzRSIpOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAxMHB4OwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTU7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLXJpZ2h0OiAxNSU7CiAgbWFyZ2luLWxlZnQ6IDE1JTsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxleDogMCAxIGF1dG87CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiAzcHg7CiAgbWFyZ2luLXJpZ2h0OiAzcHg7CiAgbWFyZ2luLWxlZnQ6IDNweDsKICB0ZXh0LWluZGVudDogLTk5OXB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmJlZm9yZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTEwcHg7CiAgbGVmdDogMDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbnRlbnQ6ICIiOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogLTEwcHg7CiAgbGVmdDogMDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbnRlbnQ6ICIiOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmNhcm91c2VsLWNhcHRpb24gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMTUlOwogIGJvdHRvbTogMjBweDsKICBsZWZ0OiAxNSU7CiAgei1pbmRleDogMTA7CiAgcGFkZGluZy10b3A6IDIwcHg7CiAgcGFkZGluZy1ib3R0b206IDIwcHg7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5hbGlnbi1iYXNlbGluZSB7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXRvcCB7CiAgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9Ci5hbGlnbi1taWRkbGUgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDsKfQouYWxpZ24tYm90dG9tIHsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXRleHQtYm90dG9tIHsKICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsKfQouYWxpZ24tdGV4dC10b3AgewogIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50Owp9Ci5iZy1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KYS5iZy1wcmltYXJ5OmhvdmVyLCBidXR0b24uYmctcHJpbWFyeTpob3ZlciwgYS5iZy1wcmltYXJ5OmZvY3VzLCBidXR0b24uYmctcHJpbWFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9Ci5iZy1zZWNvbmRhcnkgewogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQphLmJnLXNlY29uZGFyeTpob3ZlciwgYnV0dG9uLmJnLXNlY29uZGFyeTpob3ZlciwgYS5iZy1zZWNvbmRhcnk6Zm9jdXMsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICM1NDViNjIgIWltcG9ydGFudDsKfQouYmctc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CmEuYmctc3VjY2Vzczpob3ZlciwgYnV0dG9uLmJnLXN1Y2Nlc3M6aG92ZXIsIGEuYmctc3VjY2Vzczpmb2N1cywgYnV0dG9uLmJnLXN1Y2Nlc3M6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQgIWltcG9ydGFudDsKfQouYmctaW5mbyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9CmEuYmctaW5mbzpob3ZlciwgYnV0dG9uLmJnLWluZm86aG92ZXIsIGEuYmctaW5mbzpmb2N1cywgYnV0dG9uLmJnLWluZm86Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQouYmctd2FybmluZyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CmEuYmctd2FybmluZzpob3ZlciwgYnV0dG9uLmJnLXdhcm5pbmc6aG92ZXIsIGEuYmctd2FybmluZzpmb2N1cywgYnV0dG9uLmJnLXdhcm5pbmc6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsKfQouYmctZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KYS5iZy1kYW5nZXI6aG92ZXIsIGJ1dHRvbi5iZy1kYW5nZXI6aG92ZXIsIGEuYmctZGFuZ2VyOmZvY3VzLCBidXR0b24uYmctZGFuZ2VyOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KLmJnLWxpZ2h0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KYS5iZy1saWdodDpob3ZlciwgYnV0dG9uLmJnLWxpZ2h0OmhvdmVyLCBhLmJnLWxpZ2h0OmZvY3VzLCBidXR0b24uYmctbGlnaHQ6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQouYmctZGFyayB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CmEuYmctZGFyazpob3ZlciwgYnV0dG9uLmJnLWRhcms6aG92ZXIsIGEuYmctZGFyazpmb2N1cywgYnV0dG9uLmJnLWRhcms6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsKfQouYmctd2hpdGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQouYmctdHJhbnNwYXJlbnQgewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KLmJvcmRlciB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9Ci5ib3JkZXItdG9wIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9Ci5ib3JkZXItcmlnaHQgewogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQouYm9yZGVyLWJvdHRvbSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQouYm9yZGVyLWxlZnQgewogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9Ci5ib3JkZXItMCB7CiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci10b3AtMCB7CiAgYm9yZGVyLXRvcDogMCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItcmlnaHQtMCB7CiAgYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1ib3R0b20tMCB7CiAgYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItbGVmdC0wIHsKICBib3JkZXItbGVmdDogMCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItcHJpbWFyeSB7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1zZWNvbmRhcnkgewogIGJvcmRlci1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItc3VjY2VzcyB7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1pbmZvIHsKICBib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQouYm9yZGVyLXdhcm5pbmcgewogIGJvcmRlci1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9Ci5ib3JkZXItZGFuZ2VyIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsKfQouYm9yZGVyLWxpZ2h0IHsKICBib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQouYm9yZGVyLWRhcmsgewogIGJvcmRlci1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItd2hpdGUgewogIGJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Ci5yb3VuZGVkIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KLnJvdW5kZWQtdG9wIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucm91bmRlZC1yaWdodCB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5yb3VuZGVkLWJvdHRvbSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KLnJvdW5kZWQtbGVmdCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucm91bmRlZC1jaXJjbGUgewogIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50Owp9Ci5yb3VuZGVkLTAgewogIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKfQouY2xlYXJmaXg6OmFmdGVyIHsKICBkaXNwbGF5OiBibG9jazsKICBjbGVhcjogYm90aDsKICBjb250ZW50OiAiIjsKfQouZC1ub25lIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLmQtaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQouZC1pbmxpbmUtYmxvY2sgewogIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50Owp9Ci5kLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9Ci5kLXRhYmxlIHsKICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9Ci5kLXRhYmxlLXJvdyB7CiAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KLmQtdGFibGUtY2VsbCB7CiAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50Owp9Ci5kLWZsZXggewogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKfQouZC1pbmxpbmUtZmxleCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuZC1zbS1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtc20taW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtc20tdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZC1tZC1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuZC1sZy1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtbGctaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1sZy1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtbGctdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1sZy1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmQteGwtbm9uZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLWlubGluZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKICB9CiAgLmQteGwtaW5saW5lLWJsb2NrIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KICAuZC14bC1ibG9jayB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICAuZC14bC10YWJsZSB7CiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwogIH0KICAuZC14bC10YWJsZS1yb3cgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLXRhYmxlLWNlbGwgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAuZC14bC1mbGV4IHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICB9CiAgLmQteGwtaW5saW5lLWZsZXggewogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIHByaW50IHsKICAuZC1wcmludC1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQouZW1iZWQtcmVzcG9uc2l2ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouZW1iZWQtcmVzcG9uc2l2ZTo6YmVmb3JlIHsKICBkaXNwbGF5OiBibG9jazsKICBjb250ZW50OiAiIjsKfQouZW1iZWQtcmVzcG9uc2l2ZSAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLCAuZW1iZWQtcmVzcG9uc2l2ZSBpZnJhbWUsIC5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLCAuZW1iZWQtcmVzcG9uc2l2ZSBvYmplY3QsIC5lbWJlZC1yZXNwb25zaXZlIHZpZGVvIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBib3JkZXI6IDA7Cn0KLmVtYmVkLXJlc3BvbnNpdmUtMjFieTk6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDQyLjg1NzE0Mjg1NzElOwp9Ci5lbWJlZC1yZXNwb25zaXZlLTE2Ynk5OjpiZWZvcmUgewogIHBhZGRpbmctdG9wOiA1Ni4yNSU7Cn0KLmVtYmVkLXJlc3BvbnNpdmUtNGJ5Mzo6YmVmb3JlIHsKICBwYWRkaW5nLXRvcDogNzUlOwp9Ci5lbWJlZC1yZXNwb25zaXZlLTFieTE6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDEwMCU7Cn0KLmZsZXgtcm93IHsKICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7Cn0KLmZsZXgtY29sdW1uIHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KLmZsZXgtcm93LXJldmVyc2UgewogIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50Owp9Ci5mbGV4LWNvbHVtbi1yZXZlcnNlIHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQouZmxleC13cmFwIHsKICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKfQouZmxleC1ub3dyYXAgewogIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cn0KLmZsZXgtd3JhcC1yZXZlcnNlIHsKICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50Owp9Ci5mbGV4LWZpbGwgewogIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cn0KLmZsZXgtZ3Jvdy0wIHsKICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKfQouZmxleC1ncm93LTEgewogIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50Owp9Ci5mbGV4LXNocmluay0wIHsKICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50Owp9Ci5mbGV4LXNocmluay0xIHsKICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50Owp9Ci5qdXN0aWZ5LWNvbnRlbnQtc3RhcnQgewogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50Owp9Ci5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmp1c3RpZnktY29udGVudC1jZW50ZXIgewogIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KLmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQouanVzdGlmeS1jb250ZW50LWFyb3VuZCB7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQouYWxpZ24taXRlbXMtc3RhcnQgewogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLWVuZCB7CiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLWNlbnRlciB7CiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50Owp9Ci5hbGlnbi1pdGVtcy1iYXNlbGluZSB7CiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLXN0cmV0Y2ggewogIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtc3RhcnQgewogIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1lbmQgewogIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtY2VudGVyIHsKICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1iZXR3ZWVuIHsKICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtYXJvdW5kIHsKICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1zdHJldGNoIHsKICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtYXV0byB7CiAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50Owp9Ci5hbGlnbi1zZWxmLXN0YXJ0IHsKICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtZW5kIHsKICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9Ci5hbGlnbi1zZWxmLWNlbnRlciB7CiAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtYmFzZWxpbmUgewogIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtc3RyZXRjaCB7CiAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50Owp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5mbGV4LXNtLXJvdyB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWNvbHVtbiB7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXJvdy1yZXZlcnNlIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1jb2x1bW4tcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20td3JhcCB7CiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tbm93cmFwIHsKICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXdyYXAtcmV2ZXJzZSB7CiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1maWxsIHsKICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWdyb3ctMCB7CiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tZ3Jvdy0xIHsKICAgIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1zaHJpbmstMCB7CiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1zaHJpbmstMSB7CiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLXN0YXJ0IHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLWVuZCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tY2VudGVyIHsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1zbS1hcm91bmQgewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXNtLXN0YXJ0IHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1lbmQgewogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1jZW50ZXIgewogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewogICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1zdHJldGNoIHsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLXN0YXJ0IHsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7CiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLWFyb3VuZCB7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tc3RyZXRjaCB7CiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWF1dG8gewogICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1zbS1zdGFydCB7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWVuZCB7CiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1zbS1jZW50ZXIgewogICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWJhc2VsaW5lIHsKICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLXN0cmV0Y2ggewogICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZmxleC1tZC1yb3cgewogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1jb2x1bW4gewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1yb3ctcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtY29sdW1uLXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLXdyYXAgewogICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLW5vd3JhcCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC13cmFwLXJldmVyc2UgewogICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtZmlsbCB7CiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1ncm93LTAgewogICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLWdyb3ctMSB7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtc2hyaW5rLTAgewogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtc2hyaW5rLTEgewogICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1zdGFydCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1lbmQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW4gewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1tZC1zdGFydCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtZW5kIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtY2VudGVyIHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLWJhc2VsaW5lIHsKICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtc3RyZXRjaCB7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1zdGFydCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWVuZCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1jZW50ZXIgewogICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWJldHdlZW4gewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1hcm91bmQgewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2ggewogICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1hdXRvIHsKICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtc3RhcnQgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1lbmQgewogICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtY2VudGVyIHsKICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1iYXNlbGluZSB7CiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1zdHJldGNoIHsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmZsZXgtbGctcm93IHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctY29sdW1uIHsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctcm93LXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLWNvbHVtbi1yZXZlcnNlIHsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy13cmFwIHsKICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1ub3dyYXAgewogICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctd3JhcC1yZXZlcnNlIHsKICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLWZpbGwgewogICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctZ3Jvdy0wIHsKICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1ncm93LTEgewogICAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLXNocmluay0wIHsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLXNocmluay0xIHsKICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1jZW50ZXIgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVuIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LWxnLWFyb3VuZCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctc3RhcnQgewogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLWVuZCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLWNlbnRlciB7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1sZy1iYXNlbGluZSB7CiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2ggewogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctc3RhcnQgewogICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1lbmQgewogICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctY2VudGVyIHsKICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1iZXR3ZWVuIHsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1zdHJldGNoIHsKICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctYXV0byB7CiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLXN0YXJ0IHsKICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctZW5kIHsKICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLWNlbnRlciB7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewogICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctc3RyZXRjaCB7CiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuZmxleC14bC1yb3cgewogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1jb2x1bW4gewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1yb3ctcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtY29sdW1uLXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLXdyYXAgewogICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLW5vd3JhcCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC13cmFwLXJldmVyc2UgewogICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtZmlsbCB7CiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1ncm93LTAgewogICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLWdyb3ctMSB7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtc2hyaW5rLTAgewogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtc2hyaW5rLTEgewogICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1zdGFydCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1lbmQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLWNlbnRlciB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW4gewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQteGwtYXJvdW5kIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy14bC1zdGFydCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtZW5kIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtY2VudGVyIHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtc3RyZXRjaCB7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1zdGFydCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLWVuZCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1jZW50ZXIgewogICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4gewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1hcm91bmQgewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLXN0cmV0Y2ggewogICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1hdXRvIHsKICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYteGwtc3RhcnQgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1lbmQgewogICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYteGwtY2VudGVyIHsKICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1iYXNlbGluZSB7CiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1zdHJldGNoIHsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9Cn0KLmZsb2F0LWxlZnQgewogIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KLmZsb2F0LXJpZ2h0IHsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQouZmxvYXQtbm9uZSB7CiAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuZmxvYXQtc20tbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtc20tcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1zbS1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5mbG9hdC1tZC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1tZC1yaWdodCB7CiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LW1kLW5vbmUgewogICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmZsb2F0LWxnLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LWxnLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtbGctbm9uZSB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmZsb2F0LXhsLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LXhsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQteGwtbm9uZSB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoucG9zaXRpb24tc3RhdGljIHsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7Cn0KLnBvc2l0aW9uLXJlbGF0aXZlIHsKICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKfQoucG9zaXRpb24tYWJzb2x1dGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50Owp9Ci5wb3NpdGlvbi1maXhlZCB7CiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7Cn0KLnBvc2l0aW9uLXN0aWNreSB7CiAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50Owp9Ci5maXhlZC10b3AgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9Ci5maXhlZC1ib3R0b20gewogIHBvc2l0aW9uOiBmaXhlZDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9CkBzdXBwb3J0cyAocG9zaXRpb246IHN0aWNreSkgewogIC5zdGlja3ktdG9wIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IDA7CiAgICB6LWluZGV4OiAxMDIwOwogIH0KfQouc3Itb25seSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBib3JkZXI6IDA7Cn0KLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICBwb3NpdGlvbjogc3RhdGljOwogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICBvdmVyZmxvdzogdmlzaWJsZTsKICBjbGlwOiBhdXRvOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KLnNoYWRvdy1zbSB7CiAgYm94LXNoYWRvdzogMCAwLjEyNXJlbSAwLjI1cmVtIHJnYmEoMCwgMCwgMCwgMC4wNzUpICFpbXBvcnRhbnQ7Cn0KLnNoYWRvdyB7CiAgYm94LXNoYWRvdzogMCAwLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIDAuMTUpICFpbXBvcnRhbnQ7Cn0KLnNoYWRvdy1sZyB7CiAgYm94LXNoYWRvdzogMCAxcmVtIDNyZW0gcmdiYSgwLCAwLCAwLCAwLjE3NSkgIWltcG9ydGFudDsKfQouc2hhZG93LW5vbmUgewogIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoudy0yNSB7CiAgd2lkdGg6IDI1JSAhaW1wb3J0YW50Owp9Ci53LTUwIHsKICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7Cn0KLnctNzUgewogIHdpZHRoOiA3NSUgIWltcG9ydGFudDsKfQoudy0xMDAgewogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KLnctYXV0byB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQouaC0yNSB7CiAgaGVpZ2h0OiAyNSUgIWltcG9ydGFudDsKfQouaC01MCB7CiAgaGVpZ2h0OiA1MCUgIWltcG9ydGFudDsKfQouaC03NSB7CiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQouaC0xMDAgewogIGhlaWdodDogMTAwJSAhaW1wb3J0YW50Owp9Ci5oLWF1dG8gewogIGhlaWdodDogYXV0byAhaW1wb3J0YW50Owp9Ci5tdy0xMDAgewogIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5taC0xMDAgewogIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoubS0wIHsKICBtYXJnaW46IDAgIWltcG9ydGFudDsKfQoubXQtMCwgLm15LTAgewogIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoubXItMCwgLm14LTAgewogIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50Owp9Ci5tYi0wLCAubXktMCB7CiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9Ci5tbC0wLCAubXgtMCB7CiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKfQoubS0xIHsKICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubXQtMSwgLm15LTEgewogIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubXItMSwgLm14LTEgewogIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5tYi0xLCAubXktMSB7CiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5tbC0xLCAubXgtMSB7CiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubS0yIHsKICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5tdC0yLCAubXktMiB7CiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm1yLTIsIC5teC0yIHsKICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5tYi0yLCAubXktMiB7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm1sLTIsIC5teC0yIHsKICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm0tMyB7CiAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm10LTMsIC5teS0zIHsKICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm1yLTMsIC5teC0zIHsKICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoubWItMywgLm15LTMgewogIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoubWwtMywgLm14LTMgewogIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm0tNCB7CiAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKfQoubXQtNCwgLm15LTQgewogIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tci00LCAubXgtNCB7CiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoubWItNCwgLm15LTQgewogIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tbC00LCAubXgtNCB7CiAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tLTUgewogIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9Ci5tdC01LCAubXktNSB7CiAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9Ci5tci01LCAubXgtNSB7CiAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm1iLTUsIC5teS01IHsKICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm1sLTUsIC5teC01IHsKICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9Ci5wLTAgewogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoucHQtMCwgLnB5LTAgewogIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KLnByLTAsIC5weC0wIHsKICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KLnBiLTAsIC5weS0wIHsKICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9Ci5wbC0wLCAucHgtMCB7CiAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KLnAtMSB7CiAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5wdC0xLCAucHktMSB7CiAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucHItMSwgLnB4LTEgewogIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucGItMSwgLnB5LTEgewogIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KLnBsLTEsIC5weC0xIHsKICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucC0yIHsKICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKfQoucHQtMiwgLnB5LTIgewogIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKfQoucHItMiwgLnB4LTIgewogIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5wYi0yLCAucHktMiB7CiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5wbC0yLCAucHgtMiB7CiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKfQoucC0zIHsKICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLnB0LTMsIC5weS0zIHsKICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wci0zLCAucHgtMyB7CiAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wYi0zLCAucHktMyB7CiAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoucGwtMywgLnB4LTMgewogIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wLTQgewogIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wdC00LCAucHktNCB7CiAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wci00LCAucHgtNCB7CiAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KLnBiLTQsIC5weS00IHsKICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cn0KLnBsLTQsIC5weC00IHsKICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wLTUgewogIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKfQoucHQtNSwgLnB5LTUgewogIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cn0KLnByLTUsIC5weC01IHsKICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLnBiLTUsIC5weS01IHsKICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50Owp9Ci5wbC01LCAucHgtNSB7CiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm0tYXV0byB7CiAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7Cn0KLm10LWF1dG8sIC5teS1hdXRvIHsKICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cn0KLm1yLWF1dG8sIC5teC1hdXRvIHsKICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoubWItYXV0bywgLm15LWF1dG8gewogIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKfQoubWwtYXV0bywgLm14LWF1dG8gewogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLm0tc20tMCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTAsIC5teS1zbS0wIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTAsIC5teC1zbS0wIHsKICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAubWItc20tMCwgLm15LXNtLTAgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAubWwtc20tMCwgLm14LXNtLTAgewogICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm0tc20tMSB7CiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTEsIC5teS1zbS0xIHsKICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTEsIC5teC1zbS0xIHsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMSwgLm15LXNtLTEgewogICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tMSwgLm14LXNtLTEgewogICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tc20tMiB7CiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtc20tMiwgLm15LXNtLTIgewogICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS0yLCAubXgtc20tMiB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMiwgLm15LXNtLTIgewogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS0yLCAubXgtc20tMiB7CiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTMgewogICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS0zLCAubXktc20tMyB7CiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS0zLCAubXgtc20tMyB7CiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTMsIC5teS1zbS0zIHsKICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTMsIC5teC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTQgewogICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTQsIC5teS1zbS00IHsKICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tNCwgLm14LXNtLTQgewogICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTQsIC5teS1zbS00IHsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tNCwgLm14LXNtLTQgewogICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1zbS01IHsKICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXQtc20tNSwgLm15LXNtLTUgewogICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tNSwgLm14LXNtLTUgewogICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS01LCAubXktc20tNSB7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS01LCAubXgtc20tNSB7CiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS0wIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICB9CiAgLnB0LXNtLTAsIC5weS1zbS0wIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS0wLCAucHgtc20tMCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS0wLCAucHktc20tMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAucGwtc20tMCwgLnB4LXNtLTAgewogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTEgewogICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tMSwgLnB5LXNtLTEgewogICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXNtLTEsIC5weC1zbS0xIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXNtLTEsIC5weS1zbS0xIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS0xLCAucHgtc20tMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtc20tMiB7CiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXNtLTIsIC5weS1zbS0yIHsKICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXNtLTIsIC5weC1zbS0yIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItc20tMiwgLnB5LXNtLTIgewogICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtc20tMiwgLnB4LXNtLTIgewogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtc20tMyB7CiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS0zLCAucHktc20tMyB7CiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tMywgLnB4LXNtLTMgewogICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItc20tMywgLnB5LXNtLTMgewogICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTMsIC5weC1zbS0zIHsKICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS00IHsKICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tNCwgLnB5LXNtLTQgewogICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tNCwgLnB4LXNtLTQgewogICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS00LCAucHktc20tNCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS00LCAucHgtc20tNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS01IHsKICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXNtLTUsIC5weS1zbS01IHsKICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS01LCAucHgtc20tNSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS01LCAucHktc20tNSB7CiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGwtc20tNSwgLnB4LXNtLTUgewogICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLWF1dG8gewogICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS1hdXRvLCAubXktc20tYXV0byB7CiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS1hdXRvLCAubXgtc20tYXV0byB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLWF1dG8sIC5teS1zbS1hdXRvIHsKICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLWF1dG8sIC5teC1zbS1hdXRvIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5tLW1kLTAgewogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC0wLCAubXktbWQtMCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC0wLCAubXgtbWQtMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTAsIC5teS1tZC0wIHsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTAsIC5teC1tZC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLTEgewogICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC0xLCAubXktbWQtMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC0xLCAubXgtbWQtMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTEsIC5teS1tZC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTEsIC5teC1tZC0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTIsIC5teS1tZC0yIHsKICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtMiwgLm14LW1kLTIgewogICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTIsIC5teS1tZC0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtMiwgLm14LW1kLTIgewogICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC0zIHsKICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtMywgLm15LW1kLTMgewogICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtMywgLm14LW1kLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC0zLCAubXktbWQtMyB7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC0zLCAubXgtbWQtMyB7CiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC00IHsKICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC00LCAubXktbWQtNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTQsIC5teC1tZC00IHsKICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC00LCAubXktbWQtNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTQsIC5teC1tZC00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTUsIC5teS1tZC01IHsKICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTUsIC5teC1tZC01IHsKICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWItbWQtNSwgLm15LW1kLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtNSwgLm14LW1kLTUgewogICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtMCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC0wLCAucHktbWQtMCB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAucHItbWQtMCwgLnB4LW1kLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGItbWQtMCwgLnB5LW1kLTAgewogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTAsIC5weC1tZC0wIHsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAucC1tZC0xIHsKICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTEsIC5weS1tZC0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1tZC0xLCAucHgtbWQtMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1tZC0xLCAucHktbWQtMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMSwgLnB4LW1kLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLW1kLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC0yLCAucHktbWQtMiB7CiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1tZC0yLCAucHgtbWQtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTIsIC5weS1tZC0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTIsIC5weC1tZC0yIHsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLW1kLTMgewogICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtbWQtMywgLnB5LW1kLTMgewogICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTMsIC5weC1tZC0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTMsIC5weS1tZC0zIHsKICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1tZC0zLCAucHgtbWQtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtNCB7CiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTQsIC5weS1tZC00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTQsIC5weC1tZC00IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtNCwgLnB5LW1kLTQgewogICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtNCwgLnB4LW1kLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC01LCAucHktbWQtNSB7CiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHItbWQtNSwgLnB4LW1kLTUgewogICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtNSwgLnB5LW1kLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTUsIC5weC1tZC01IHsKICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC1hdXRvIHsKICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtYXV0bywgLm15LW1kLWF1dG8gewogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXItbWQtYXV0bywgLm14LW1kLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC1hdXRvLCAubXktbWQtYXV0byB7CiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC1hdXRvLCAubXgtbWQtYXV0byB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAubS1sZy0wIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIH0KICAubXQtbGctMCwgLm15LWxnLTAgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAubXItbGctMCwgLm14LWxnLTAgewogICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0wLCAubXktbGctMCB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy0wLCAubXgtbGctMCB7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAubS1sZy0xIHsKICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctMSwgLm15LWxnLTEgewogICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbGctMSwgLm14LWxnLTEgewogICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0xLCAubXktbGctMSB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy0xLCAubXgtbGctMSB7CiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1sZy0yIHsKICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy0yLCAubXktbGctMiB7CiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTIsIC5teC1sZy0yIHsKICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0yLCAubXktbGctMiB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLTIsIC5teC1sZy0yIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctMyB7CiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTMsIC5teS1sZy0zIHsKICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTMsIC5teC1sZy0zIHsKICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbGctMywgLm15LWxnLTMgewogICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbGctMywgLm14LWxnLTMgewogICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctNCB7CiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctNCwgLm15LWxnLTQgewogICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy00LCAubXgtbGctNCB7CiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbGctNCwgLm15LWxnLTQgewogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy00LCAubXgtbGctNCB7CiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLTUgewogICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy01LCAubXktbGctNSB7CiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy01LCAubXgtbGctNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTUsIC5teS1sZy01IHsKICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLTUsIC5teC1sZy01IHsKICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTAgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogIH0KICAucHQtbGctMCwgLnB5LWxnLTAgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTAsIC5weC1sZy0wIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTAsIC5weS1sZy0wIHsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1sZy0wLCAucHgtbGctMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnAtbGctMSB7CiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0xLCAucHktbGctMSB7CiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItbGctMSwgLnB4LWxnLTEgewogICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItbGctMSwgLnB5LWxnLTEgewogICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTEsIC5weC1sZy0xIHsKICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1sZy0yIHsKICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtbGctMiwgLnB5LWxnLTIgewogICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItbGctMiwgLnB4LWxnLTIgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy0yLCAucHktbGctMiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1sZy0yLCAucHgtbGctMiB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1sZy0zIHsKICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LWxnLTMsIC5weS1sZy0zIHsKICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy0zLCAucHgtbGctMyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy0zLCAucHktbGctMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbGctMywgLnB4LWxnLTMgewogICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTQgewogICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy00LCAucHktbGctNCB7CiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy00LCAucHgtbGctNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTQsIC5weS1sZy00IHsKICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTQsIC5weC1sZy00IHsKICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTUgewogICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHQtbGctNSwgLnB5LWxnLTUgewogICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTUsIC5weC1sZy01IHsKICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTUsIC5weS1sZy01IHsKICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1sZy01LCAucHgtbGctNSB7CiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctYXV0byB7CiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLWF1dG8sIC5teS1sZy1hdXRvIHsKICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLWF1dG8sIC5teC1sZy1hdXRvIHsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWItbGctYXV0bywgLm15LWxnLWF1dG8gewogICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWwtbGctYXV0bywgLm14LWxnLWF1dG8gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5tLXhsLTAgewogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC0wLCAubXkteGwtMCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC0wLCAubXgteGwtMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTAsIC5teS14bC0wIHsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTAsIC5teC14bC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tLXhsLTEgewogICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC0xLCAubXkteGwtMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC0xLCAubXgteGwtMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTEsIC5teS14bC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTEsIC5teC14bC0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXhsLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLTIsIC5teS14bC0yIHsKICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtMiwgLm14LXhsLTIgewogICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTIsIC5teS14bC0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwteGwtMiwgLm14LXhsLTIgewogICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC0zIHsKICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQteGwtMywgLm15LXhsLTMgewogICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtMywgLm14LXhsLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC0zLCAubXkteGwtMyB7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC0zLCAubXgteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC00IHsKICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC00LCAubXkteGwtNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTQsIC5teC14bC00IHsKICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC00LCAubXkteGwtNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTQsIC5teC14bC00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0teGwtNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLTUsIC5teS14bC01IHsKICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTUsIC5teC14bC01IHsKICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWIteGwtNSwgLm15LXhsLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwteGwtNSwgLm14LXhsLTUgewogICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtMCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wdC14bC0wLCAucHkteGwtMCB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAucHIteGwtMCwgLnB4LXhsLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGIteGwtMCwgLnB5LXhsLTAgewogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLnBsLXhsLTAsIC5weC14bC0wIHsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAucC14bC0xIHsKICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTEsIC5weS14bC0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci14bC0xLCAucHgteGwtMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi14bC0xLCAucHkteGwtMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtMSwgLnB4LXhsLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC14bC0yLCAucHkteGwtMiB7CiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci14bC0yLCAucHgteGwtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTIsIC5weS14bC0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXhsLTIsIC5weC14bC0yIHsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTMgewogICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQteGwtMywgLnB5LXhsLTMgewogICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTMsIC5weC14bC0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTMsIC5weS14bC0zIHsKICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC0zLCAucHgteGwtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtNCB7CiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTQsIC5weS14bC00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTQsIC5weC14bC00IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtNCwgLnB5LXhsLTQgewogICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtNCwgLnB4LXhsLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC14bC01LCAucHkteGwtNSB7CiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtNSwgLnB4LXhsLTUgewogICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtNSwgLnB5LXhsLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXhsLTUsIC5weC14bC01IHsKICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC1hdXRvIHsKICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXQteGwtYXV0bywgLm15LXhsLWF1dG8gewogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXIteGwtYXV0bywgLm14LXhsLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC1hdXRvLCAubXkteGwtYXV0byB7CiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC1hdXRvLCAubXgteGwtYXV0byB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIH0KfQoudGV4dC1tb25vc3BhY2UgewogIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICJMaWJlcmF0aW9uIE1vbm8iLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7Cn0KLnRleHQtanVzdGlmeSB7CiAgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50Owp9Ci50ZXh0LW5vd3JhcCB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50Owp9Ci50ZXh0LXRydW5jYXRlIHsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLnRleHQtbGVmdCB7CiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Owp9Ci50ZXh0LXJpZ2h0IHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50Owp9Ci50ZXh0LWNlbnRlciB7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLnRleHQtc20tbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXNtLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXNtLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLnRleHQtbWQtbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LW1kLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LW1kLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLnRleHQtbGctbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LWxnLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LWxnLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC50ZXh0LXhsLWxlZnQgewogICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwogIH0KICAudGV4dC14bC1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwogIH0KICAudGV4dC14bC1jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQp9Ci50ZXh0LWxvd2VyY2FzZSB7CiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSAhaW1wb3J0YW50Owp9Ci50ZXh0LXVwcGVyY2FzZSB7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50Owp9Ci50ZXh0LWNhcGl0YWxpemUgewogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnQ7Cn0KLmZvbnQtd2VpZ2h0LWxpZ2h0IHsKICBmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnQ7Cn0KLmZvbnQtd2VpZ2h0LW5vcm1hbCB7CiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50Owp9Ci5mb250LXdlaWdodC1ib2xkIHsKICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7Cn0KLmZvbnQtaXRhbGljIHsKICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsKfQoudGV4dC13aGl0ZSB7CiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoudGV4dC1wcmltYXJ5IHsKICBjb2xvcjogIzAwN2JmZiAhaW1wb3J0YW50Owp9CmEudGV4dC1wcmltYXJ5OmhvdmVyLCBhLnRleHQtcHJpbWFyeTpmb2N1cyB7CiAgY29sb3I6ICMwMDYyY2MgIWltcG9ydGFudDsKfQoudGV4dC1zZWNvbmRhcnkgewogIGNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LXNlY29uZGFyeTpob3ZlciwgYS50ZXh0LXNlY29uZGFyeTpmb2N1cyB7CiAgY29sb3I6ICM1NDViNjIgIWltcG9ydGFudDsKfQoudGV4dC1zdWNjZXNzIHsKICBjb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CmEudGV4dC1zdWNjZXNzOmhvdmVyLCBhLnRleHQtc3VjY2Vzczpmb2N1cyB7CiAgY29sb3I6ICMxZTdlMzQgIWltcG9ydGFudDsKfQoudGV4dC1pbmZvIHsKICBjb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9CmEudGV4dC1pbmZvOmhvdmVyLCBhLnRleHQtaW5mbzpmb2N1cyB7CiAgY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoudGV4dC13YXJuaW5nIHsKICBjb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CmEudGV4dC13YXJuaW5nOmhvdmVyLCBhLnRleHQtd2FybmluZzpmb2N1cyB7CiAgY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsKfQoudGV4dC1kYW5nZXIgewogIGNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LWRhbmdlcjpob3ZlciwgYS50ZXh0LWRhbmdlcjpmb2N1cyB7CiAgY29sb3I6ICNiZDIxMzAgIWltcG9ydGFudDsKfQoudGV4dC1saWdodCB7CiAgY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQphLnRleHQtbGlnaHQ6aG92ZXIsIGEudGV4dC1saWdodDpmb2N1cyB7CiAgY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoudGV4dC1kYXJrIHsKICBjb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CmEudGV4dC1kYXJrOmhvdmVyLCBhLnRleHQtZGFyazpmb2N1cyB7CiAgY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsKfQoudGV4dC1ib2R5IHsKICBjb2xvcjogIzIxMjUyOSAhaW1wb3J0YW50Owp9Ci50ZXh0LW11dGVkIHsKICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9Ci50ZXh0LWJsYWNrLTUwIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpICFpbXBvcnRhbnQ7Cn0KLnRleHQtd2hpdGUtNTAgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgIWltcG9ydGFudDsKfQoudGV4dC1oaWRlIHsKICBmb250OiAwLzAgYTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9Ci52aXNpYmxlIHsKICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7Cn0KLmludmlzaWJsZSB7CiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIHByaW50IHsKICAqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIGE6bm90KC5idG4pIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KICBhYmJyW3RpdGxlXTo6YWZ0ZXIgewogICAgY29udGVudDogIiAoIiBhdHRyKHRpdGxlKSAiKSI7CiAgfQogIHByZSB7CiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsKICB9CiAgcHJlLCBibG9ja3F1b3RlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNhZGI1YmQ7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgfQogIHRoZWFkIHsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKICB9CiAgdHIsIGltZyB7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgfQogIHAsIGgyLCBoMyB7CiAgICBvcnBoYW5zOiAzOwogICAgd2lkb3dzOiAzOwogIH0KICBoMiwgaDMgewogICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgfQogIEBwYWdlIHsKICAgIHNpemU6IGEzOwogIH0KICBib2R5IHsKICAgIG1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDsKICB9CiAgLmNvbnRhaW5lciB7CiAgICBtaW4td2lkdGg6IDk5MnB4ICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLmJhZGdlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgfQogIC50YWJsZSB7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7CiAgfQogIC50YWJsZSB0ZCwgLnRhYmxlIHRoIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWJvcmRlcmVkIHRoLCAudGFibGUtYm9yZGVyZWQgdGQgewogICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50OwogIH0KICAudGFibGUtZGFyayB7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9CiAgLnRhYmxlLWRhcmsgdGgsIC50YWJsZS1kYXJrIHRkLCAudGFibGUtZGFyayB0aGVhZCB0aCwgLnRhYmxlLWRhcmsgdGJvZHkgKyB0Ym9keSB7CiAgICBib3JkZXItY29sb3I6ICNkZWUyZTY7CiAgfQogIC50YWJsZSAudGhlYWQtZGFyayB0aCB7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGJvcmRlci1jb2xvcjogI2RlZTJlNjsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtZmFjdG9yeSIsCiAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTE3OiBDb21tb24gaW50ZXJmYWNlcyBmb3IgUFNSLTcgSFRUUCBtZXNzYWdlIGZhY3RvcmllcyIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgInBzciIsCiAgICAgICAgInBzci03IiwKICAgICAgICAicHNyLTE3IiwKICAgICAgICAiaHR0cCIsCiAgICAgICAgImZhY3RvcnkiLAogICAgICAgICJtZXNzYWdlIiwKICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgInJlc3BvbnNlIgogICAgXSwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgIH0KICAgIF0sCiAgICAic3VwcG9ydCI6IHsKICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtZmFjdG9yeSIKICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIj49Ny4xIiwKICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4wIHx8IF4yLjAiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIlBzclxcSHR0cFxcTWVzc2FnZVxcIjogInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAxOCBQSFAtRklHCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[SFRUUCBGYWN0b3JpZXMKPT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBob2xkcyBhbGwgaW50ZXJmYWNlcyByZWxhdGVkIHRvIFtQU1ItMTcgKEhUVFAgRmFjdG9yaWVzKV1bcHNyLXVybF0uCgpOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSBIVFRQIEZhY3RvcnkgaW1wbGVtZW50YXRpb24gb2YgaXRzIG93bi4gSXQgaXMgbWVyZWx5IGludGVyZmFjZXMgdGhhdCBkZXNjcmliZSB0aGUgY29tcG9uZW50cyBvZiBhIEhUVFAgRmFjdG9yeS4KClRoZSBpbnN0YWxsYWJsZSBbcGFja2FnZV1bcGFja2FnZS11cmxdIGFuZCBbaW1wbGVtZW50YXRpb25zXVtpbXBsZW1lbnRhdGlvbi11cmxdIGFyZSBsaXN0ZWQgb24gUGFja2FnaXN0LgoKW3Bzci11cmxdOiBodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTE3LwpbcGFja2FnZS11cmxdOiBodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvcHNyL2h0dHAtZmFjdG9yeQpbaW1wbGVtZW50YXRpb24tdXJsXTogaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3Byb3ZpZGVycy9wc3IvaHR0cC1mYWN0b3J5LWltcGxlbWVudGF0aW9uCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/src/RequestFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWV0aG9kIFRoZSBIVFRQIG1ldGhvZCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuCiAgICAgKiBAcGFyYW0gVXJpSW50ZXJmYWNlfHN0cmluZyAkdXJpIFRoZSBVUkkgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0LiBJZgogICAgICogICAgIHRoZSB2YWx1ZSBpcyBhIHN0cmluZywgdGhlIGZhY3RvcnkgTVVTVCBjcmVhdGUgYSBVcmlJbnRlcmZhY2UKICAgICAqICAgICBpbnN0YW5jZSBiYXNlZCBvbiBpdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmkpOiBSZXF1ZXN0SW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/src/ResponseFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFJlc3BvbnNlRmFjdG9yeUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyByZXNwb25zZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRjb2RlIEhUVFAgc3RhdHVzIGNvZGU7IGRlZmF1bHRzIHRvIDIwMAogICAgICogQHBhcmFtIHN0cmluZyAkcmVhc29uUGhyYXNlIFJlYXNvbiBwaHJhc2UgdG8gYXNzb2NpYXRlIHdpdGggc3RhdHVzIGNvZGUKICAgICAqICAgICBpbiBnZW5lcmF0ZWQgcmVzcG9uc2U7IGlmIG5vbmUgaXMgcHJvdmlkZWQgaW1wbGVtZW50YXRpb25zIE1BWSB1c2UKICAgICAqICAgICB0aGUgZGVmYXVsdHMgYXMgc3VnZ2VzdGVkIGluIHRoZSBIVFRQIHNwZWNpZmljYXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBSZXNwb25zZUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2UoaW50ICRjb2RlID0gMjAwLCBzdHJpbmcgJHJlYXNvblBocmFzZSA9ICcnKTogUmVzcG9uc2VJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/src/ServerRequestFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFNlcnZlclJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IHNlcnZlciByZXF1ZXN0LgogICAgICoKICAgICAqIE5vdGUgdGhhdCBzZXJ2ZXItcGFyYW1zIGFyZSB0YWtlbiBwcmVjaXNlbHkgYXMgZ2l2ZW4gLSBubyBwYXJzaW5nL3Byb2Nlc3NpbmcKICAgICAqIG9mIHRoZSBnaXZlbiB2YWx1ZXMgaXMgcGVyZm9ybWVkLCBhbmQsIGluIHBhcnRpY3VsYXIsIG5vIGF0dGVtcHQgaXMgbWFkZSB0bwogICAgICogZGV0ZXJtaW5lIHRoZSBIVFRQIG1ldGhvZCBvciBVUkksIHdoaWNoIG11c3QgYmUgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXRob2QgVGhlIEhUVFAgbWV0aG9kIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2V8c3RyaW5nICR1cmkgVGhlIFVSSSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuIElmCiAgICAgKiAgICAgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLCB0aGUgZmFjdG9yeSBNVVNUIGNyZWF0ZSBhIFVyaUludGVyZmFjZQogICAgICogICAgIGluc3RhbmNlIGJhc2VkIG9uIGl0LgogICAgICogQHBhcmFtIGFycmF5ICRzZXJ2ZXJQYXJhbXMgQXJyYXkgb2YgU0FQSSBwYXJhbWV0ZXJzIHdpdGggd2hpY2ggdG8gc2VlZAogICAgICogICAgIHRoZSBnZW5lcmF0ZWQgcmVxdWVzdCBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVNlcnZlclJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmksIGFycmF5ICRzZXJ2ZXJQYXJhbXMgPSBbXSk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/src/StreamFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFN0cmVhbUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgc3RyZWFtIGZyb20gYSBzdHJpbmcuCiAgICAgKgogICAgICogVGhlIHN0cmVhbSBTSE9VTEQgYmUgY3JlYXRlZCB3aXRoIGEgdGVtcG9yYXJ5IHJlc291cmNlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnQgU3RyaW5nIGNvbnRlbnQgd2l0aCB3aGljaCB0byBwb3B1bGF0ZSB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEByZXR1cm4gU3RyZWFtSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTdHJlYW0oc3RyaW5nICRjb250ZW50ID0gJycpOiBTdHJlYW1JbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBzdHJlYW0gZnJvbSBhbiBleGlzdGluZyBmaWxlLgogICAgICoKICAgICAqIFRoZSBmaWxlIE1VU1QgYmUgb3BlbmVkIHVzaW5nIHRoZSBnaXZlbiBtb2RlLCB3aGljaCBtYXkgYmUgYW55IG1vZGUKICAgICAqIHN1cHBvcnRlZCBieSB0aGUgYGZvcGVuYCBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBUaGUgYCRmaWxlbmFtZWAgTUFZIGJlIGFueSBzdHJpbmcgc3VwcG9ydGVkIGJ5IGBmb3BlbigpYC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBGaWxlbmFtZSBvciBzdHJlYW0gVVJJIHRvIHVzZSBhcyBiYXNpcyBvZiBzdHJlYW0uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2RlIE1vZGUgd2l0aCB3aGljaCB0byBvcGVuIHRoZSB1bmRlcmx5aW5nIGZpbGVuYW1lL3N0cmVhbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBJZiB0aGUgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBtb2RlIGlzIGludmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTdHJlYW1Gcm9tRmlsZShzdHJpbmcgJGZpbGVuYW1lLCBzdHJpbmcgJG1vZGUgPSAncicpOiBTdHJlYW1JbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgc3RyZWFtIGZyb20gYW4gZXhpc3RpbmcgcmVzb3VyY2UuCiAgICAgKgogICAgICogVGhlIHN0cmVhbSBNVVNUIGJlIHJlYWRhYmxlIGFuZCBtYXkgYmUgd3JpdGFibGUuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlICRyZXNvdXJjZSBQSFAgcmVzb3VyY2UgdG8gdXNlIGFzIGJhc2lzIG9mIHN0cmVhbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlU3RyZWFtRnJvbVJlc291cmNlKCRyZXNvdXJjZSk6IFN0cmVhbUludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/src/UploadedFileFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFVwbG9hZGVkRmlsZUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBJZiBhIHNpemUgaXMgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgc2l6ZSBvZgogICAgICogdGhlIGZpbGUuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZmVhdHVyZXMuZmlsZS11cGxvYWQucG9zdC1tZXRob2QucGhwCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L21hbnVhbC9mZWF0dXJlcy5maWxlLXVwbG9hZC5lcnJvcnMucGhwCiAgICAgKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtIFVuZGVybHlpbmcgc3RyZWFtIHJlcHJlc2VudGluZyB0aGUKICAgICAqICAgICB1cGxvYWRlZCBmaWxlIGNvbnRlbnQuCiAgICAgKiBAcGFyYW0gaW50fG51bGwgJHNpemUgaW4gYnl0ZXMKICAgICAqIEBwYXJhbSBpbnQgJGVycm9yIFBIUCBmaWxlIHVwbG9hZCBlcnJvcgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRjbGllbnRGaWxlbmFtZSBGaWxlbmFtZSBhcyBwcm92aWRlZCBieSB0aGUgY2xpZW50LCBpZiBhbnkuCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNsaWVudE1lZGlhVHlwZSBNZWRpYSB0eXBlIGFzIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQsIGlmIGFueS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFVwbG9hZGVkRmlsZUludGVyZmFjZQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgZmlsZSByZXNvdXJjZSBpcyBub3QgcmVhZGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVVcGxvYWRlZEZpbGUoCiAgICAgICAgU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sCiAgICAgICAgP2ludCAkc2l6ZSA9IG51bGwsCiAgICAgICAgaW50ICRlcnJvciA9IFxVUExPQURfRVJSX09LLAogICAgICAgID9zdHJpbmcgJGNsaWVudEZpbGVuYW1lID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRjbGllbnRNZWRpYVR5cGUgPSBudWxsCiAgICApOiBVcGxvYWRlZEZpbGVJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-factory/src/UriFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFVyaUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgVVJJLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVyaQogICAgICoKICAgICAqIEByZXR1cm4gVXJpSW50ZXJmYWNlCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBnaXZlbiBVUkkgY2Fubm90IGJlIHBhcnNlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVVyaShzdHJpbmcgJHVyaSA9ICcnKTogVXJpSW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUsIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciBieSByZWxlYXNlLgoKIyMgMS4wLjEgLSAyMDE2LTA4LTA2CgojIyMgQWRkZWQKCi0gTm90aGluZy4KCiMjIyBEZXByZWNhdGVkCgotIE5vdGhpbmcuCgojIyMgUmVtb3ZlZAoKLSBOb3RoaW5nLgoKIyMjIEZpeGVkCgotIFVwZGF0ZWQgYWxsIGBAcmV0dXJuIHNlbGZgIGFubm90YXRpb24gcmVmZXJlbmNlcyBpbiBpbnRlcmZhY2VzIHRvIHVzZQogIGBAcmV0dXJuIHN0YXRpY2AsIHdoaWNoIG1vcmUgY2xvc2VsbHkgZm9sbG93cyB0aGUgc2VtYW50aWNzIG9mIHRoZQogIHNwZWNpZmljYXRpb24uCi0gVXBkYXRlZCB0aGUgYE1lc3NhZ2VJbnRlcmZhY2U6OmdldEhlYWRlcnMoKWAgcmV0dXJuIGFubm90YXRpb24gdG8gdXNlIHRoZQogIHZhbHVlIGBzdHJpbmdbXVtdYCwgaW5kaWNhdGluZyB0aGUgZm9ybWF0IGlzIGEgbmVzdGVkIGFycmF5IG9mIHN0cmluZ3MuCi0gVXBkYXRlZCB0aGUgYEBsaW5rYCBhbm5vdGF0aW9uIGZvciBgUmVxdWVzdEludGVyZmFjZTo6d2l0aFJlcXVlc3RUYXJnZXQoKWAKICB0byBwb2ludCB0byB0aGUgY29ycmVjdCBzZWN0aW9uIG9mIFJGQyA3MjMwLgotIFVwZGF0ZWQgdGhlIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOjp3aXRoVXBsb2FkZWRGaWxlcygpYCBwYXJhbWV0ZXIgYW5ub3RhdGlvbgogIHRvIGFkZCB0aGUgcGFyYW1ldGVyIG5hbWUgKGAkdXBsb2FkZWRGaWxlc2ApLgotIFVwZGF0ZWQgYSBgQHRocm93c2AgYW5ub3RhdGlvbiBmb3IgdGhlIGBVcGxvYWRlZEZpbGVJbnRlcmZhY2U6Om1vdmVUbygpYAogIG1ldGhvZCB0byBjb3JyZWN0bHkgcmVmZXJlbmNlIHRoZSBtZXRob2QgcGFyYW1ldGVyIChpdCB3YXMgcmVmZXJlbmNpbmcgYW4KICBpbmNvcnJlY3QgcGFyYW1ldGVyIG5hbWUgcHJldmlvdXNseSkuCgojIyAxLjAuMCAtIDIwMTYtMDUtMTgKCkluaXRpYWwgc3RhYmxlIHJlbGVhc2U7IHJlZmxlY3RzIGFjY2VwdGVkIFBTUi03IHNwZWNpZmljYXRpb24uCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtbWVzc2FnZSIsCiAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAia2V5d29yZHMiOiBbInBzciIsICJwc3ItNyIsICJodHRwIiwgImh0dHAtbWVzc2FnZSIsICJyZXF1ZXN0IiwgInJlc3BvbnNlIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlIiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgIH0KICAgIF0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjIgfHwgXjguMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/docs/PSR7-Interfaces.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBJbnRlcmZhY2VzCgpUaGUgcHVycG9zZSBvZiB0aGlzIGxpc3QgaXMgdG8gaGVscCBpbiBmaW5kaW5nIHRoZSBtZXRob2RzIHdoZW4gd29ya2luZyB3aXRoIFBTUi03LiBUaGlzIGNhbiBiZSBjb25zaWRlcmVkIGFzIGEgY2hlYXRzaGVldCBmb3IgUFNSLTcgaW50ZXJmYWNlcy4KClRoZSBpbnRlcmZhY2VzIGRlZmluZWQgaW4gUFNSLTcgYXJlIHRoZSBmb2xsb3dpbmc6Cgp8IENsYXNzIE5hbWUgfCBEZXNjcmlwdGlvbiB8CnwtLS18LS0tfAp8IFtQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZW1lc3NhZ2VpbnRlcmZhY2UpIHwgUmVwcmVzZW50YXRpb24gb2YgYSBIVFRQIG1lc3NhZ2UgfAp8IFtQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXJlcXVlc3RpbnRlcmZhY2UpIHwgUmVwcmVzZW50YXRpb24gb2YgYW4gb3V0Z29pbmcsIGNsaWVudC1zaWRlIHJlcXVlc3QuIHwKfCBbUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlXShodHRwOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8jcHNyaHR0cG1lc3NhZ2VzZXJ2ZXJyZXF1ZXN0aW50ZXJmYWNlKSB8IFJlcHJlc2VudGF0aW9uIG9mIGFuIGluY29taW5nLCBzZXJ2ZXItc2lkZSBIVFRQIHJlcXVlc3QuIHwgCnwgW1BzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXJlc3BvbnNlaW50ZXJmYWNlKSB8IFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBzZXJ2ZXItc2lkZSByZXNwb25zZS4gfAp8IFtQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZV0oaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTcvI3Bzcmh0dHBtZXNzYWdlc3RyZWFtaW50ZXJmYWNlKSB8IERlc2NyaWJlcyBhIGRhdGEgc3RyZWFtIHwKfCBbUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXVyaWludGVyZmFjZSkgfCBWYWx1ZSBvYmplY3QgcmVwcmVzZW50aW5nIGEgVVJJLiB8CnwgW1BzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlXShodHRwOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8jcHNyaHR0cG1lc3NhZ2V1cGxvYWRlZGZpbGVpbnRlcmZhY2UpIHwgVmFsdWUgb2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgdXBsb2FkZWQgdGhyb3VnaCBhbiBIVFRQIHJlcXVlc3QuIHwKCiMjIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIE1ldGhvZHMKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0UHJvdG9jb2xWZXJzaW9uKClgICAgICAgICAgICAgIHwgUmV0cmlldmUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uICAgICAgICAgIHwgIDEuMCBvciAxLjEgfAp8IGB3aXRoUHJvdG9jb2xWZXJzaW9uKCR2ZXJzaW9uKWAgICAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBwcm90b2NvbCB2ZXJzaW9uICAgICAgICAgIHwgICAgICB8CnwgYGdldEhlYWRlcnMoKWAgICAgICAgICAgICAgICAgICAgICB8IFJldHJpZXZlIGFsbCBIVFRQIEhlYWRlcnMgICAgICAgICAgICAgICB8IFtSZXF1ZXN0IEhlYWRlciBMaXN0XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX0hUVFBfaGVhZGVyX2ZpZWxkcyNSZXF1ZXN0X2ZpZWxkcyksIFtSZXNwb25zZSBIZWFkZXIgTGlzdF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9IVFRQX2hlYWRlcl9maWVsZHMjUmVzcG9uc2VfZmllbGRzKSAgICAgIHwKfCBgaGFzSGVhZGVyKCRuYW1lKWAgICAgICAgICAgICAgICAgIHwgQ2hlY2tzIGlmIEhUVFAgSGVhZGVyIHdpdGggZ2l2ZW4gbmFtZSBleGlzdHMgIHwgfAp8IGBnZXRIZWFkZXIoJG5hbWUpYCAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgYSBhcnJheSB3aXRoIHRoZSB2YWx1ZXMgZm9yIGEgc2luZ2xlIGhlYWRlciB8IHwKfCBgZ2V0SGVhZGVyTGluZSgkbmFtZSlgICAgICAgICAgICAgIHwgUmV0cmlldmVzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBvZiB0aGUgdmFsdWVzIGZvciBhIHNpbmdsZSBoZWFkZXIgfCAgfAp8IGB3aXRoSGVhZGVyKCRuYW1lLCAkdmFsdWUpYCAgICAgICAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBIZWFkZXIgfCBpZiB0aGUgaGVhZGVyIGV4aXN0ZWQgaW4gdGhlIG9yaWdpbmFsIGluc3RhbmNlLCByZXBsYWNlcyB0aGUgaGVhZGVyIHZhbHVlIGZyb20gdGhlIG9yaWdpbmFsIG1lc3NhZ2Ugd2l0aCB0aGUgdmFsdWUgcHJvdmlkZWQgd2hlbiBjcmVhdGluZyB0aGUgbmV3IGluc3RhbmNlLiB8CnwgYHdpdGhBZGRlZEhlYWRlcigkbmFtZSwgJHZhbHVlKWAgICB8IFJldHVybnMgbmV3IG1lc3NhZ2UgaW5zdGFuY2Ugd2l0aCBhcHBlbmRlZCB2YWx1ZSB0byBnaXZlbiBoZWFkZXIgfCBJZiBoZWFkZXIgYWxyZWFkeSBleGlzdHMgdmFsdWUgd2lsbCBiZSBhcHBlbmRlZCwgaWYgbm90IGEgbmV3IGhlYWRlciB3aWxsIGJlIGNyZWF0ZWQgfAp8IGB3aXRob3V0SGVhZGVyKCRuYW1lKWAgICAgICAgICAgICAgfCBSZW1vdmVzIEhUVFAgSGVhZGVyIHdpdGggZ2l2ZW4gbmFtZXwgfAp8IGBnZXRCb2R5KClgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIEhUVFAgTWVzc2FnZSBCb2R5IHwgUmV0dXJucyBvYmplY3QgaW1wbGVtZW50aW5nIGBTdHJlYW1JbnRlcmZhY2VgfAp8IGB3aXRoQm9keShTdHJlYW1JbnRlcmZhY2UgJGJvZHkpYCAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBNZXNzYWdlIEJvZHkgfCB8CgoKIyMgYFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAgTWV0aG9kcwoKU2FtZSBtZXRob2RzIGFzIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgICArIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0UmVxdWVzdFRhcmdldCgpYCAgICAgICAgICAgICAgICB8IFJldHJpZXZlcyB0aGUgbWVzc2FnZSdzIHJlcXVlc3QgdGFyZ2V0ICAgICAgICAgICAgICB8IG9yaWdpbi1mb3JtLCBhYnNvbHV0ZS1mb3JtLCBhdXRob3JpdHktZm9ybSwgYXN0ZXJpc2stZm9ybSAoW1JGQzcyMzBdKGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM3MjMwLnR4dCkpIHwKfCBgd2l0aFJlcXVlc3RUYXJnZXQoJHJlcXVlc3RUYXJnZXQpYCB8IFJldHVybiBhIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmljIHJlcXVlc3QtdGFyZ2V0IHwgICAgICB8CnwgYGdldE1ldGhvZCgpYCAgICAgICAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIEhUVFAgbWV0aG9kIG9mIHRoZSByZXF1ZXN0LiAgfCAgR0VULCBIRUFELCBQT1NULCBQVVQsIERFTEVURSwgQ09OTkVDVCwgT1BUSU9OUywgVFJBQ0UgKGRlZmluZWQgaW4gW1JGQzcyMzFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxKSksIFBBVENIIChkZWZpbmVkIGluIFtSRkM1Nzg5XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTc4OSkpIHwKfCBgd2l0aE1ldGhvZCgkbWV0aG9kKWAgICAgICAgICAgICAgICB8IFJldHVybnMgYSBuZXcgbWVzc2FnZSBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBIVFRQIG1ldGhvZCAgfCB8CnwgYGdldFVyaSgpYCAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIFVSSSBpbnN0YW5jZSB8IHwKfCBgd2l0aFVyaShVcmlJbnRlcmZhY2UgJHVyaSwgJHByZXNlcnZlSG9zdCA9IGZhbHNlKWAgfCBSZXR1cm5zIGEgbmV3IG1lc3NhZ2UgaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgVVJJIHwgIHwKCgojIyBgUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCBNZXRob2RzCgpTYW1lIG1ldGhvZHMgYXMgYFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAgICsgdGhlIGZvbGxvd2luZyBtZXRob2RzOgoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTZXJ2ZXJQYXJhbXMoKSBgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZSBzZXJ2ZXIgcGFyYW1ldGVycyAgfCBUeXBpY2FsbHkgZGVyaXZlZCBmcm9tIGAkX1NFUlZFUmAgIHwKfCBgZ2V0Q29va2llUGFyYW1zKClgICAgICAgICAgICAgICAgIHwgUmV0cmlldmVzIGNvb2tpZXMgc2VudCBieSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIuIHwgVHlwaWNhbGx5IGRlcml2ZWQgZnJvbSBgJF9DT09LSUVTYCB8CnwgYHdpdGhDb29raWVQYXJhbXMoYXJyYXkgJGNvb2tpZXMpYCB8ICBSZXR1cm5zIGEgbmV3IHJlcXVlc3QgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGNvb2tpZXMgICAgICB8ICAgfCAKfCBgd2l0aFF1ZXJ5UGFyYW1zKGFycmF5ICRxdWVyeSlgIHwgUmV0dXJucyBhIG5ldyByZXF1ZXN0IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcgYXJndW1lbnRzICB8ICB8CnwgYGdldFVwbG9hZGVkRmlsZXMoKWAgfCBSZXRyaWV2ZSBub3JtYWxpemVkIGZpbGUgdXBsb2FkIGRhdGEgIHwgIHwKfCBgd2l0aFVwbG9hZGVkRmlsZXMoYXJyYXkgJHVwbG9hZGVkRmlsZXMpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXBsb2FkZWQgZmlsZXMgIHwgIHwKfCBgZ2V0UGFyc2VkQm9keSgpYCB8IFJldHJpZXZlIGFueSBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0IGJvZHkgIHwgIHwKfCBgd2l0aFBhcnNlZEJvZHkoJGRhdGEpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYm9keSBwYXJhbWV0ZXJzICB8ICB8CnwgYGdldEF0dHJpYnV0ZXMoKWAgfCBSZXRyaWV2ZSBhdHRyaWJ1dGVzIGRlcml2ZWQgZnJvbSB0aGUgcmVxdWVzdCAgfCAgfAp8IGBnZXRBdHRyaWJ1dGUoJG5hbWUsICRkZWZhdWx0ID0gbnVsbClgIHwgUmV0cmlldmUgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAp8IGB3aXRoQXR0cmlidXRlKCRuYW1lLCAkdmFsdWUpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAp8IGB3aXRob3V0QXR0cmlidXRlKCRuYW1lKWAgfCBSZXR1cm5zIGEgbmV3IHJlcXVlc3QgaW5zdGFuY2UgdGhhdCB3aXRob3V0IHRoZSBzcGVjaWZpZWQgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAoKIyMgYFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2VgIE1ldGhvZHM6CgpTYW1lIG1ldGhvZHMgYXMgYFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZWAgICsgdGhlIGZvbGxvd2luZyBtZXRob2RzOgoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTdGF0dXNDb2RlKClgIHwgR2V0cyB0aGUgcmVzcG9uc2Ugc3RhdHVzIGNvZGUuIHwgfAp8IGB3aXRoU3RhdHVzKCRjb2RlLCAkcmVhc29uUGhyYXNlID0gJycpYCB8IFJldHVybnMgYSBuZXcgcmVzcG9uc2UgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHN0YXR1cyBjb2RlIGFuZCwgb3B0aW9uYWxseSwgcmVhc29uIHBocmFzZS4gfCB8CnwgYGdldFJlYXNvblBocmFzZSgpYCB8IEdldHMgdGhlIHJlc3BvbnNlIHJlYXNvbiBwaHJhc2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGF0dXMgY29kZS4gfCB8CgojIyAgYFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlYCBNZXRob2RzCgp8IE1ldGhvZCBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8IE5vdGVzIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgLS0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgYF9fdG9TdHJpbmcoKWAgfCBSZWFkcyBhbGwgZGF0YSBmcm9tIHRoZSBzdHJlYW0gaW50byBhIHN0cmluZywgZnJvbSB0aGUgYmVnaW5uaW5nIHRvIGVuZC4gfCB8CnwgYGNsb3NlKClgIHwgQ2xvc2VzIHRoZSBzdHJlYW0gYW5kIGFueSB1bmRlcmx5aW5nIHJlc291cmNlcy4gfCB8CnwgYGRldGFjaCgpYCB8IFNlcGFyYXRlcyBhbnkgdW5kZXJseWluZyByZXNvdXJjZXMgZnJvbSB0aGUgc3RyZWFtLiB8IHwKfCBgZ2V0U2l6ZSgpYCB8IEdldCB0aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGlmIGtub3duLiB8IHwKfCBgZW9mKClgIHwgUmV0dXJucyB0cnVlIGlmIHRoZSBzdHJlYW0gaXMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLnwgfAp8IGBpc1NlZWthYmxlKClgIHwgIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyBzZWVrYWJsZS4gfCB8CnwgYHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKWAgfCBTZWVrIHRvIGEgcG9zaXRpb24gaW4gdGhlIHN0cmVhbS4gfCB8CnwgYHJld2luZCgpYCB8IFNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLiB8IHwKfCBgaXNXcml0YWJsZSgpYCB8IFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyB3cml0YWJsZS4gfCB8CnwgYHdyaXRlKCRzdHJpbmcpYCB8IFdyaXRlIGRhdGEgdG8gdGhlIHN0cmVhbS4gfCB8CnwgYGlzUmVhZGFibGUoKWAgfCBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJlYW0gaXMgcmVhZGFibGUuIHwgfAp8IGByZWFkKCRsZW5ndGgpYCB8IFJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0uIHwgfAp8IGBnZXRDb250ZW50cygpYCB8IFJldHVybnMgdGhlIHJlbWFpbmluZyBjb250ZW50cyBpbiBhIHN0cmluZyB8IHwKfCBgZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpKClgIHwgR2V0IHN0cmVhbSBtZXRhZGF0YSBhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvciByZXRyaWV2ZSBhIHNwZWNpZmljIGtleS4gfCB8CgojIyBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VgIE1ldGhvZHMKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0U2NoZW1lKClgIHwgUmV0cmlldmUgdGhlIHNjaGVtZSBjb21wb25lbnQgb2YgdGhlIFVSSS4gfCB8CnwgYGdldEF1dGhvcml0eSgpYCB8IFJldHJpZXZlIHRoZSBhdXRob3JpdHkgY29tcG9uZW50IG9mIHRoZSBVUkkuIHwgfAp8IGBnZXRVc2VySW5mbygpYCB8IFJldHJpZXZlIHRoZSB1c2VyIGluZm9ybWF0aW9uIGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0SG9zdCgpYCB8IFJldHJpZXZlIHRoZSBob3N0IGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UG9ydCgpYCB8IFJldHJpZXZlIHRoZSBwb3J0IGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UGF0aCgpYCB8IFJldHJpZXZlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UXVlcnkoKWAgfCBSZXRyaWV2ZSB0aGUgcXVlcnkgc3RyaW5nIG9mIHRoZSBVUkkuIHwgfAp8IGBnZXRGcmFnbWVudCgpYCB8IFJldHJpZXZlIHRoZSBmcmFnbWVudCBjb21wb25lbnQgb2YgdGhlIFVSSS4gfCB8CnwgYHdpdGhTY2hlbWUoJHNjaGVtZSlgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBzY2hlbWUuIHwgfAp8IGB3aXRoVXNlckluZm8oJHVzZXIsICRwYXNzd29yZCA9IG51bGwpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4gfCB8CnwgYHdpdGhIb3N0KCRob3N0KWAgfCBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuIHwgfAp8IGB3aXRoUG9ydCgkcG9ydClgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LiB8IHwKfCBgd2l0aFBhdGgoJHBhdGgpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4gfCB8CnwgYHdpdGhRdWVyeSgkcXVlcnkpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVlcnkgc3RyaW5nLiB8IHwKfCBgd2l0aEZyYWdtZW50KCRmcmFnbWVudClgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBVUkkgZnJhZ21lbnQuIHwgfAp8IGBfX3RvU3RyaW5nKClgIHwgUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYXMgYSBVUkkgcmVmZXJlbmNlLiB8IHwKCiMjIGBQc3JcSHR0cFxNZXNzYWdlXFVwbG9hZGVkRmlsZUludGVyZmFjZWAgTWV0aG9kcwoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTdHJlYW0oKWAgfCBSZXRyaWV2ZSBhIHN0cmVhbSByZXByZXNlbnRpbmcgdGhlIHVwbG9hZGVkIGZpbGUuIHwgfAp8IGBtb3ZlVG8oJHRhcmdldFBhdGgpYCB8IE1vdmUgdGhlIHVwbG9hZGVkIGZpbGUgdG8gYSBuZXcgbG9jYXRpb24uIHwgfAp8IGBnZXRTaXplKClgIHwgUmV0cmlldmUgdGhlIGZpbGUgc2l6ZS4gfCB8CnwgYGdldEVycm9yKClgIHwgUmV0cmlldmUgdGhlIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBsb2FkZWQgZmlsZS4gfCB8CnwgYGdldENsaWVudEZpbGVuYW1lKClgIHwgUmV0cmlldmUgdGhlIGZpbGVuYW1lIHNlbnQgYnkgdGhlIGNsaWVudC4gfCB8CnwgYGdldENsaWVudE1lZGlhVHlwZSgpYCB8IFJldHJpZXZlIHRoZSBtZWRpYSB0eXBlIHNlbnQgYnkgdGhlIGNsaWVudC4gfCB8Cgo+IGBSZXF1ZXN0SW50ZXJmYWNlYCwgYFNlcnZlclJlcXVlc3RJbnRlcmZhY2VgLCBgUmVzcG9uc2VJbnRlcmZhY2VgIGV4dGVuZCBgTWVzc2FnZUludGVyZmFjZWAgIGJlY2F1c2UgdGhlIGBSZXF1ZXN0YCBhbmQgdGhlIGBSZXNwb25zZWAgYXJlIGBIVFRQIE1lc3NhZ2VzYC4KPiBXaGVuIHVzaW5nIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCwgYm90aCBgUmVxdWVzdEludGVyZmFjZWAgYW5kIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIG1ldGhvZHMgYXJlIGNvbnNpZGVyZWQuCgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/docs/PSR7-Usage.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyMjIFBTUi03IFVzYWdlCgpBbGwgUFNSLTcgYXBwbGljYXRpb25zIGNvbXBseSB3aXRoIHRoZXNlIGludGVyZmFjZXMgClRoZXkgd2VyZSBjcmVhdGVkIHRvIGVzdGFibGlzaCBhIHN0YW5kYXJkIGJldHdlZW4gbWlkZGxld2FyZSBpbXBsZW1lbnRhdGlvbnMuCgo+IGBSZXF1ZXN0SW50ZXJmYWNlYCwgYFNlcnZlclJlcXVlc3RJbnRlcmZhY2VgLCBgUmVzcG9uc2VJbnRlcmZhY2VgIGV4dGVuZCBgTWVzc2FnZUludGVyZmFjZWAgIGJlY2F1c2UgdGhlIGBSZXF1ZXN0YCBhbmQgdGhlIGBSZXNwb25zZWAgYXJlIGBIVFRQIE1lc3NhZ2VzYC4KPiBXaGVuIHVzaW5nIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCwgYm90aCBgUmVxdWVzdEludGVyZmFjZWAgYW5kIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIG1ldGhvZHMgYXJlIGNvbnNpZGVyZWQuCgoKVGhlIGZvbGxvd2luZyBleGFtcGxlcyB3aWxsIGlsbHVzdHJhdGUgaG93IGJhc2ljIG9wZXJhdGlvbnMgYXJlIGRvbmUgaW4gUFNSLTcuCgojIyMjIyBFeGFtcGxlcwoKCkZvciB0aGlzIGV4YW1wbGVzIHRvIHdvcmsgKGF0IGxlYXN0KSBhIFBTUi03IGltcGxlbWVudGF0aW9uIHBhY2thZ2UgaXMgcmVxdWlyZWQuIChlZzogemVuZGZyYW1ld29yay96ZW5kLWRpYWN0b3JvcywgZ3V6emxlaHR0cC9wc3I3LCBzbGltL3NsaW0sIGV0YykKQWxsIFBTUi03IGltcGxlbWVudGF0aW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIuCgpUaGUgZm9sbG93aW5nIHdpbGwgYmUgYXNzdW1lZDogCmAkcmVxdWVzdGAgaXMgYW4gb2JqZWN0IG9mIGBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2VgIGFuZAoKYCRyZXNwb25zZWAgaXMgYW4gb2JqZWN0IGltcGxlbWVudGluZyBgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlYAoKCiMjIyBXb3JraW5nIHdpdGggSFRUUCBIZWFkZXJzCgojIyMjIEFkZGluZyBoZWFkZXJzIHRvIHJlc3BvbnNlOgoKYGBgcGhwCiRyZXNwb25zZS0+d2l0aEhlYWRlcignTXktQ3VzdG9tLUhlYWRlcicsICdNeSBDdXN0b20gTWVzc2FnZScpOwpgYGAKCiMjIyMgQXBwZW5kaW5nIHZhbHVlcyB0byBoZWFkZXJzCgpgYGBwaHAKJHJlc3BvbnNlLT53aXRoQWRkZWRIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInLCAnVGhlIHNlY29uZCBtZXNzYWdlJyk7CmBgYAoKIyMjIyBDaGVja2luZyBpZiBoZWFkZXIgZXhpc3RzOgoKYGBgcGhwCiRyZXF1ZXN0LT5oYXNIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInKTsgLy8gd2lsbCByZXR1cm4gZmFsc2UKJHJlc3BvbnNlLT5oYXNIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInKTsgLy8gd2lsbCByZXR1cm4gdHJ1ZQpgYGAKCj4gTm90ZTogTXktQ3VzdG9tLUhlYWRlciB3YXMgb25seSBhZGRlZCBpbiB0aGUgUmVzcG9uc2UKCiMjIyMgR2V0dGluZyBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIGZyb20gYSBoZWFkZXIgKGFsc28gYXBwbGllcyB0byByZXF1ZXN0KQoKYGBgcGhwCi8vIGdldHRpbmcgdmFsdWUgZnJvbSByZXF1ZXN0IGhlYWRlcnMKJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtVHlwZScpOyAvLyB3aWxsIHJldHVybjogInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIKLy8gZ2V0dGluZyB2YWx1ZSBmcm9tIHJlc3BvbnNlIGhlYWRlcnMKJHJlc3BvbnNlLT5nZXRIZWFkZXJMaW5lKCdNeS1DdXN0b20tSGVhZGVyJyk7IC8vIHdpbGwgcmV0dXJuOiAgIk15IEN1c3RvbSBNZXNzYWdlOyBUaGUgc2Vjb25kIG1lc3NhZ2UiCmBgYAoKIyMjIyBHZXR0aW5nIGFycmF5IG9mIHZhbHVlIGZyb20gYSBoZWFkZXIgKGFsc28gYXBwbGllcyB0byByZXF1ZXN0KQpgYGBwaHAKLy8gZ2V0dGluZyB2YWx1ZSBmcm9tIHJlcXVlc3QgaGVhZGVycwokcmVxdWVzdC0+Z2V0SGVhZGVyKCdDb250ZW50LVR5cGUnKTsgLy8gd2lsbCByZXR1cm46IFsidGV4dC9odG1sIiwgImNoYXJzZXQ9VVRGLTgiXQovLyBnZXR0aW5nIHZhbHVlIGZyb20gcmVzcG9uc2UgaGVhZGVycwokcmVzcG9uc2UtPmdldEhlYWRlcignTXktQ3VzdG9tLUhlYWRlcicpOyAvLyB3aWxsIHJldHVybjogIFsiTXkgQ3VzdG9tIE1lc3NhZ2UiLCAgIlRoZSBzZWNvbmQgbWVzc2FnZSJdCmBgYAoKIyMjIyBSZW1vdmluZyBoZWFkZXJzIGZyb20gSFRUUCBNZXNzYWdlcwpgYGBwaHAKLy8gcmVtb3ZpbmcgYSBoZWFkZXIgZnJvbSBSZXF1ZXN0LCByZW1vdmluZyBkZXByZWNhdGVkICJDb250ZW50LU1ENSIgaGVhZGVyCiRyZXF1ZXN0LT53aXRob3V0SGVhZGVyKCdDb250ZW50LU1ENScpOyAKCi8vIHJlbW92aW5nIGEgaGVhZGVyIGZyb20gUmVzcG9uc2UKLy8gZWZmZWN0OiB0aGUgYnJvd3NlciB3b24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdHJlYW0KLy8gdGhlIGJyb3dzZXIgd2lsbCBkb3dubG9hZCB0aGUgc3RyZWFtIHRpbGwgaXQgZW5kcwokcmVzcG9uc2UtPndpdGhvdXRIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJyk7CmBgYAoKIyMjIFdvcmtpbmcgd2l0aCBIVFRQIE1lc3NhZ2UgQm9keQoKV2hlbiB3b3JraW5nIHdpdGggdGhlIFBTUi03IHRoZXJlIGFyZSB0d28gbWV0aG9kcyBvZiBpbXBsZW1lbnRhdGlvbjoKIyMjIyAxLiBHZXR0aW5nIHRoZSBib2R5IHNlcGFyYXRlbHkKCj4gVGhpcyBtZXRob2QgbWFrZXMgdGhlIGJvZHkgaGFuZGxpbmcgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIGlzIHVzZWZ1bCB3aGVuIHJlcGVhdGVkbHkgY2FsbGluZyBib2R5IG1ldGhvZHMuIChZb3Ugb25seSBjYWxsIGBnZXRCb2R5KClgIG9uY2UpLiBVc2luZyB0aGlzIG1ldGhvZCBtaXN0YWtlcyBsaWtlIGAkcmVzcG9uc2UtPndyaXRlKClgIGFyZSBhbHNvIHByZXZlbnRlZC4KCmBgYHBocAokYm9keSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpOwovLyBvcGVyYXRpb25zIG9uIGJvZHksIGVnLiByZWFkLCB3cml0ZSwgc2VlawovLyAuLi4KLy8gcmVwbGFjaW5nIHRoZSBvbGQgYm9keQokcmVzcG9uc2UtPndpdGhCb2R5KCRib2R5KTsgCi8vIHRoaXMgbGFzdCBzdGF0ZW1lbnQgaXMgb3B0aW9uYWwgYXMgd2Ugd29ya2luZyB3aXRoIG9iamVjdHMKLy8gaW4gdGhpcyBjYXNlIHRoZSAibmV3IiBib2R5IGlzIHNhbWUgd2l0aCB0aGUgIm9sZCIgb25lCi8vIHRoZSAkYm9keSB2YXJpYWJsZSBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIG9uZSBpbiAkcmVxdWVzdCwgb25seSB0aGUgcmVmZXJlbmNlIGlzIHBhc3NlZApgYGAKCiMjIyMgMi4gV29ya2luZyBkaXJlY3RseSBvbiByZXNwb25zZQoKPiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgd2hlbiBvbmx5IHBlcmZvcm1pbmcgZmV3IG9wZXJhdGlvbnMgYXMgdGhlIGAkcmVxdWVzdC0+Z2V0Qm9keSgpYCBzdGF0ZW1lbnQgZnJhZ21lbnQgaXMgcmVxdWlyZWQKCmBgYHBocAokcmVzcG9uc2UtPmdldEJvZHkoKS0+d3JpdGUoJ2hlbGxvJyk7CmBgYAoKIyMjIEdldHRpbmcgdGhlIGJvZHkgY29udGVudHMKClRoZSBmb2xsb3dpbmcgc25pcHBldCBnZXRzIHRoZSBjb250ZW50cyBvZiBhIHN0cmVhbSBjb250ZW50cy4KPiBOb3RlOiBTdHJlYW1zIG11c3QgYmUgcmV3aW5kZWQsIGlmIGNvbnRlbnQgd2FzIHdyaXR0ZW4gaW50byBzdHJlYW1zLCBpdCB3aWxsIGJlIGlnbm9yZWQgd2hlbiBjYWxsaW5nIGBnZXRDb250ZW50cygpYCBiZWNhdXNlIHRoZSBzdHJlYW0gcG9pbnRlciBpcyBzZXQgdG8gdGhlIGxhc3QgY2hhcmFjdGVyLCB3aGljaCBpcyBgXDBgIC0gbWVhbmluZyBlbmQgb2Ygc3RyZWFtLgpgYGBwaHAgCiRib2R5ID0gJHJlc3BvbnNlLT5nZXRCb2R5KCk7CiRib2R5LT5yZXdpbmQoKTsgLy8gb3IgJGJvZHktPnNlZWsoMCk7CiRib2R5VGV4dCA9ICRib2R5LT5nZXRDb250ZW50cygpOwpgYGAKPiBOb3RlOiBJZiBgJGJvZHktPnNlZWsoMSlgIGlzIGNhbGxlZCBiZWZvcmUgYCRib2R5LT5nZXRDb250ZW50cygpYCwgdGhlIGZpcnN0IGNoYXJhY3RlciB3aWxsIGJlIG9tbWl0ZWQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50ZXIgaXMgc2V0IHRvIGAxYCwgbm90IGAwYC4gVGhpcyBpcyB3aHkgdXNpbmcgYCRib2R5LT5yZXdpbmQoKWAgaXMgcmVjb21tZW5kZWQuCgojIyMgQXBwZW5kIHRvIGJvZHkKCmBgYHBocAokcmVzcG9uc2UtPmdldEJvZHkoKS0+d3JpdGUoJ0hlbGxvJyk7IC8vIHdyaXRpbmcgZGlyZWN0bHkKJGJvZHkgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpOyAvLyB3aGljaCBpcyBhIGBTdHJlYW1JbnRlcmZhY2VgCiRib2R5LT53cml0ZSgneHh4eHgnKTsKYGBgCgojIyMgUHJlcGVuZCB0byBib2R5ClByZXBlbmRpbmcgaXMgZGlmZmVyZW50IHdoZW4gaXQgY29tZXMgdG8gc3RyZWFtcy4gVGhlIGNvbnRlbnQgbXVzdCBiZSBjb3BpZWQgYmVmb3JlIHdyaXRpbmcgdGhlIGNvbnRlbnQgdG8gYmUgcHJlcGVuZGVkLgpUaGUgZm9sbG93aW5nIGV4YW1wbGUgd2lsbCBleHBsYWluIHRoZSBiZWhhdmlvdXIgb2Ygc3RyZWFtcy4KCmBgYHBocAovLyBhc3N1bWluZyBvdXIgcmVzcG9uc2UgaXMgaW5pdGlhbGx5IGVtcHR5CiRib2R5ID0gJHJlcHNvbnNlLT5nZXRCb2R5KCk7Ci8vIHdyaXRpbmcgdGhlIHN0cmluZyAiYWJjZCIKJGJvZHktPndyaXRlKCdhYmNkJyk7CgovLyBzZWVraW5nIHRvIHN0YXJ0IG9mIHN0cmVhbQokYm9keS0+c2VlaygwKTsKLy8gd3JpdGluZyAnZWYnCiRib2R5LT53cml0ZSgnZWYnKTsgLy8gYXQgdGhpcyBwb2ludCB0aGUgc3RyZWFtIGNvbnRhaW5zICJlZmNkIgpgYGAKCiMjIyMgUHJlcGVuZGluZyBieSByZXdyaXRpbmcgc2VwYXJhdGVseQoKYGBgcGhwCi8vIGFzc3VtaW5nIG91ciByZXNwb25zZSBib2R5IHN0cmVhbSBvbmx5IGNvbnRhaW5zOiAiYWJjZCIKJGJvZHkgPSAkcmVzcG9uc2UtPmdldEJvZHkoKTsKJGJvZHktPnJld2luZCgpOwokY29udGVudHMgPSAkYm9keS0+Z2V0Q29udGVudHMoKTsgLy8gYWJjZAovLyBzZWVraW5nIHRoZSBzdHJlYW0gdG8gYmVnaW5uaW5nCiRib2R5LT5yZXdpbmQoKTsKJGJvZHktPndyaXRlKCdlZicpOyAvLyBzdHJlYW0gY29udGFpbnMgImVmY2QiCiRib2R5LT53cml0ZSgkY29udGVudHMpOyAvLyBzdHJlYW0gY29udGFpbnMgImVmYWJjZCIKYGBgCgo+IE5vdGU6IGBnZXRDb250ZW50cygpYCBzZWVrcyB0aGUgc3RyZWFtIHdoaWxlIHJlYWRpbmcgaXQsIHRoZXJlZm9yZSBpZiB0aGUgc2Vjb25kIGByZXdpbmQoKWAgbWV0aG9kIGNhbGwgd2FzIG5vdCBwcmVzZW50IHRoZSBzdHJlYW0gd291bGQgaGF2ZSByZXN1bHRlZCBpbiBgYWJjZGVmYWJjZGAgYmVjYXVzZSB0aGUgYHdyaXRlKClgIG1ldGhvZCBhcHBlbmRzIHRvIHN0cmVhbSBpZiBub3QgcHJlY2VlZGVkIGJ5IGByZXdpbmQoKWAgb3IgYHNlZWsoMClgLgoKIyMjIyBQcmVwZW5kaW5nIGJ5IHVzaW5nIGNvbnRlbnRzIGFzIGEgc3RyaW5nCmBgYHBocAokYm9keSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpOwokYm9keS0+cmV3aW5kKCk7CiRjb250ZW50cyA9ICRib2R5LT5nZXRDb250ZW50cygpOyAvLyBlZmFiY2QKJGNvbnRlbnRzID0gJ2VmJy4kY29udGVudHM7CiRib2R5LT5yZXdpbmQoKTsKJGJvZHktPndyaXRlKCRjb250ZW50cyk7CmBgYAo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE0IFBIUCBGcmFtZXdvcmsgSW50ZXJvcGVyYWJpbGl0eSBHcm91cAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSAKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyAKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIApmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UFNSIEh0dHAgTWVzc2FnZQo9PT09PT09PT09PT09PT09CgpUaGlzIHJlcG9zaXRvcnkgaG9sZHMgYWxsIGludGVyZmFjZXMvY2xhc3Nlcy90cmFpdHMgcmVsYXRlZCB0bwpbUFNSLTddKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LykuCgpOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSBIVFRQIG1lc3NhZ2UgaW1wbGVtZW50YXRpb24gb2YgaXRzIG93bi4gSXQgaXMgbWVyZWx5IGFuCmludGVyZmFjZSB0aGF0IGRlc2NyaWJlcyBhIEhUVFAgbWVzc2FnZS4gU2VlIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCgpVc2FnZQotLS0tLQoKQmVmb3JlIHJlYWRpbmcgdGhlIHVzYWdlIGd1aWRlIHdlIHJlY29tbWVuZCByZWFkaW5nIHRoZSBQU1ItNyBpbnRlcmZhY2VzIG1ldGhvZCBsaXN0OgoKKiBbYFBTUi03IEludGVyZmFjZXMgTWV0aG9kIExpc3RgXShkb2NzL1BTUjctSW50ZXJmYWNlcy5tZCkKKiBbYFBTUi03IFVzYWdlIEd1aWRlYF0oZG9jcy9QU1I3LVVzYWdlLm1kKQ==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/src/MessageInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIEhUVFAgbWVzc2FnZXMgY29uc2lzdCBvZiByZXF1ZXN0cyBmcm9tIGEgY2xpZW50IHRvIGEgc2VydmVyIGFuZCByZXNwb25zZXMKICogZnJvbSBhIHNlcnZlciB0byBhIGNsaWVudC4gVGhpcyBpbnRlcmZhY2UgZGVmaW5lcyB0aGUgbWV0aG9kcyBjb21tb24gdG8KICogZWFjaC4KICoKICogTWVzc2FnZXMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUCiAqIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqCiAqIEBsaW5rIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzcyMzAudHh0CiAqIEBsaW5rIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzcyMzEudHh0CiAqLwppbnRlcmZhY2UgTWVzc2FnZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uIGFzIGEgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBzdHJpbmcgTVVTVCBjb250YWluIG9ubHkgdGhlIEhUVFAgdmVyc2lvbiBudW1iZXIgKGUuZy4sICIxLjEiLCAiMS4wIikuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgSFRUUCBwcm90b2NvbCB2ZXJzaW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvdG9jb2xWZXJzaW9uKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgSFRUUCBwcm90b2NvbCB2ZXJzaW9uLgogICAgICoKICAgICAqIFRoZSB2ZXJzaW9uIHN0cmluZyBNVVNUIGNvbnRhaW4gb25seSB0aGUgSFRUUCB2ZXJzaW9uIG51bWJlciAoZS5nLiwKICAgICAqICIxLjEiLCAiMS4wIikuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IHByb3RvY29sIHZlcnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmVyc2lvbiBIVFRQIHByb3RvY29sIHZlcnNpb24KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUHJvdG9jb2xWZXJzaW9uKHN0cmluZyAkdmVyc2lvbik6IE1lc3NhZ2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYWxsIG1lc3NhZ2UgaGVhZGVyIHZhbHVlcy4KICAgICAqCiAgICAgKiBUaGUga2V5cyByZXByZXNlbnQgdGhlIGhlYWRlciBuYW1lIGFzIGl0IHdpbGwgYmUgc2VudCBvdmVyIHRoZSB3aXJlLCBhbmQKICAgICAqIGVhY2ggdmFsdWUgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhc3NvY2lhdGVkIHdpdGggdGhlIGhlYWRlci4KICAgICAqCiAgICAgKiAgICAgLy8gUmVwcmVzZW50IHRoZSBoZWFkZXJzIGFzIGEgc3RyaW5nCiAgICAgKiAgICAgZm9yZWFjaCAoJG1lc3NhZ2UtPmdldEhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgKiAgICAgICAgIGVjaG8gJG5hbWUgLiAiOiAiIC4gaW1wbG9kZSgiLCAiLCAkdmFsdWVzKTsKICAgICAqICAgICB9CiAgICAgKgogICAgICogICAgIC8vIEVtaXQgaGVhZGVycyBpdGVyYXRpdmVseToKICAgICAqICAgICBmb3JlYWNoICgkbWVzc2FnZS0+Z2V0SGVhZGVycygpIGFzICRuYW1lID0+ICR2YWx1ZXMpIHsKICAgICAqICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpIHsKICAgICAqICAgICAgICAgICAgIGhlYWRlcihzcHJpbnRmKCclczogJXMnLCAkbmFtZSwgJHZhbHVlKSwgZmFsc2UpOwogICAgICogICAgICAgICB9CiAgICAgKiAgICAgfQogICAgICoKICAgICAqIFdoaWxlIGhlYWRlciBuYW1lcyBhcmUgbm90IGNhc2Utc2Vuc2l0aXZlLCBnZXRIZWFkZXJzKCkgd2lsbCBwcmVzZXJ2ZSB0aGUKICAgICAqIGV4YWN0IGNhc2UgaW4gd2hpY2ggaGVhZGVycyB3ZXJlIG9yaWdpbmFsbHkgc3BlY2lmaWVkLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW11bXSBSZXR1cm5zIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIHRoZSBtZXNzYWdlJ3MgaGVhZGVycy4gRWFjaAogICAgICogICAgIGtleSBNVVNUIGJlIGEgaGVhZGVyIG5hbWUsIGFuZCBlYWNoIHZhbHVlIE1VU1QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncwogICAgICogICAgIGZvciB0aGF0IGhlYWRlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBDaGVja3MgaWYgYSBoZWFkZXIgZXhpc3RzIGJ5IHRoZSBnaXZlbiBjYXNlLWluc2Vuc2l0aXZlIG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBmaWVsZCBuYW1lLgogICAgICogQHJldHVybiBib29sIFJldHVybnMgdHJ1ZSBpZiBhbnkgaGVhZGVyIG5hbWVzIG1hdGNoIHRoZSBnaXZlbiBoZWFkZXIKICAgICAqICAgICBuYW1lIHVzaW5nIGEgY2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmcgY29tcGFyaXNvbi4gUmV0dXJucyBmYWxzZSBpZgogICAgICogICAgIG5vIG1hdGNoaW5nIGhlYWRlciBuYW1lIGlzIGZvdW5kIGluIHRoZSBtZXNzYWdlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSGVhZGVyKHN0cmluZyAkbmFtZSk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYSBtZXNzYWdlIGhlYWRlciB2YWx1ZSBieSB0aGUgZ2l2ZW4gY2FzZS1pbnNlbnNpdGl2ZSBuYW1lLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHRoZSBoZWFkZXIgdmFsdWVzIG9mIHRoZSBnaXZlbgogICAgICogY2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgbmFtZS4KICAgICAqCiAgICAgKiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWVzc2FnZSwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4KICAgICAqIGVtcHR5IGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgZmllbGQgbmFtZS4KICAgICAqIEByZXR1cm4gc3RyaW5nW10gQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcyBhcyBwcm92aWRlZCBmb3IgdGhlIGdpdmVuCiAgICAgKiAgICBoZWFkZXIuIElmIHRoZSBoZWFkZXIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBtZXNzYWdlLCB0aGlzIG1ldGhvZCBNVVNUCiAgICAgKiAgICByZXR1cm4gYW4gZW1wdHkgYXJyYXkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXIoc3RyaW5nICRuYW1lKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIG9mIHRoZSB2YWx1ZXMgZm9yIGEgc2luZ2xlIGhlYWRlci4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFsbCBvZiB0aGUgaGVhZGVyIHZhbHVlcyBvZiB0aGUgZ2l2ZW4KICAgICAqIGNhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIG5hbWUgYXMgYSBzdHJpbmcgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIHVzaW5nCiAgICAgKiBhIGNvbW1hLgogICAgICoKICAgICAqIE5PVEU6IE5vdCBhbGwgaGVhZGVyIHZhbHVlcyBtYXkgYmUgYXBwcm9wcmlhdGVseSByZXByZXNlbnRlZCB1c2luZwogICAgICogY29tbWEgY29uY2F0ZW5hdGlvbi4gRm9yIHN1Y2ggaGVhZGVycywgdXNlIGdldEhlYWRlcigpIGluc3RlYWQKICAgICAqIGFuZCBzdXBwbHkgeW91ciBvd24gZGVsaW1pdGVyIHdoZW4gY29uY2F0ZW5hdGluZy4KICAgICAqCiAgICAgKiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWVzc2FnZSwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4KICAgICAqIGFuIGVtcHR5IHN0cmluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUuCiAgICAgKiBAcmV0dXJuIHN0cmluZyBBIHN0cmluZyBvZiB2YWx1ZXMgYXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBoZWFkZXIKICAgICAqICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciB1c2luZyBhIGNvbW1hLiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbgogICAgICogICAgdGhlIG1lc3NhZ2UsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlckxpbmUoc3RyaW5nICRuYW1lKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlIHJlcGxhY2luZyB0aGUgc3BlY2lmaWVkIGhlYWRlci4KICAgICAqCiAgICAgKiBXaGlsZSBoZWFkZXIgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUsIHRoZSBjYXNpbmcgb2YgdGhlIGhlYWRlciB3aWxsCiAgICAgKiBiZSBwcmVzZXJ2ZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIHJldHVybmVkIGZyb20gZ2V0SGVhZGVycygpLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIG5ldyBhbmQvb3IgdXBkYXRlZCBoZWFkZXIgYW5kIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgZmllbGQgbmFtZS4KICAgICAqIEBwYXJhbSBzdHJpbmd8c3RyaW5nW10gJHZhbHVlIEhlYWRlciB2YWx1ZShzKS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgaGVhZGVyIG5hbWVzIG9yIHZhbHVlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhIZWFkZXIoc3RyaW5nICRuYW1lLCAkdmFsdWUpOiBNZXNzYWdlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBoZWFkZXIgYXBwZW5kZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogRXhpc3RpbmcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGhlYWRlciB3aWxsIGJlIG1haW50YWluZWQuIFRoZSBuZXcKICAgICAqIHZhbHVlKHMpIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5nIGxpc3QuIElmIHRoZSBoZWFkZXIgZGlkIG5vdAogICAgICogZXhpc3QgcHJldmlvdXNseSwgaXQgd2lsbCBiZSBhZGRlZC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBuZXcgaGVhZGVyIGFuZC9vciB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUgdG8gYWRkLgogICAgICogQHBhcmFtIHN0cmluZ3xzdHJpbmdbXSAkdmFsdWUgSGVhZGVyIHZhbHVlKHMpLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBoZWFkZXIgbmFtZXMgb3IgdmFsdWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGVkSGVhZGVyKHN0cmluZyAkbmFtZSwgJHZhbHVlKTogTWVzc2FnZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRob3V0IHRoZSBzcGVjaWZpZWQgaGVhZGVyLgogICAgICoKICAgICAqIEhlYWRlciByZXNvbHV0aW9uIE1VU1QgYmUgZG9uZSB3aXRob3V0IGNhc2Utc2Vuc2l0aXZpdHkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgcmVtb3ZlcwogICAgICogdGhlIG5hbWVkIGhlYWRlci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUgdG8gcmVtb3ZlLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRIZWFkZXIoc3RyaW5nICRuYW1lKTogTWVzc2FnZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIEdldHMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKgogICAgICogQHJldHVybiBTdHJlYW1JbnRlcmZhY2UgUmV0dXJucyB0aGUgYm9keSBhcyBhIHN0cmVhbS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvZHkoKTogU3RyZWFtSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlIGJvZHkuCiAgICAgKgogICAgICogVGhlIGJvZHkgTVVTVCBiZSBhIFN0cmVhbUludGVyZmFjZSBvYmplY3QuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGEgbmV3IGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IGJvZHkgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJGJvZHkgQm9keS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gV2hlbiB0aGUgYm9keSBpcyBub3QgdmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQm9keShTdHJlYW1JbnRlcmZhY2UgJGJvZHkpOiBNZXNzYWdlSW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/src/RequestInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBjbGllbnQtc2lkZSByZXF1ZXN0LgogKgogKiBQZXIgdGhlIEhUVFAgc3BlY2lmaWNhdGlvbiwgdGhpcyBpbnRlcmZhY2UgaW5jbHVkZXMgcHJvcGVydGllcyBmb3IKICogZWFjaCBvZiB0aGUgZm9sbG93aW5nOgogKgogKiAtIFByb3RvY29sIHZlcnNpb24KICogLSBIVFRQIG1ldGhvZAogKiAtIFVSSQogKiAtIEhlYWRlcnMKICogLSBNZXNzYWdlIGJvZHkKICoKICogRHVyaW5nIGNvbnN0cnVjdGlvbiwgaW1wbGVtZW50YXRpb25zIE1VU1QgYXR0ZW1wdCB0byBzZXQgdGhlIEhvc3QgaGVhZGVyIGZyb20KICogYSBwcm92aWRlZCBVUkkgaWYgbm8gSG9zdCBoZWFkZXIgaXMgcHJvdmlkZWQuCiAqCiAqIFJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGltbXV0YWJsZTsgYWxsIG1ldGhvZHMgdGhhdCBtaWdodCBjaGFuZ2Ugc3RhdGUgTVVTVAogKiBiZSBpbXBsZW1lbnRlZCBzdWNoIHRoYXQgdGhleSByZXRhaW4gdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBjdXJyZW50CiAqIG1lc3NhZ2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBjaGFuZ2VkIHN0YXRlLgogKi8KaW50ZXJmYWNlIFJlcXVlc3RJbnRlcmZhY2UgZXh0ZW5kcyBNZXNzYWdlSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlJ3MgcmVxdWVzdCB0YXJnZXQuCiAgICAgKgogICAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlJ3MgcmVxdWVzdC10YXJnZXQgZWl0aGVyIGFzIGl0IHdpbGwgYXBwZWFyIChmb3IKICAgICAqIGNsaWVudHMpLCBhcyBpdCBhcHBlYXJlZCBhdCByZXF1ZXN0IChmb3Igc2VydmVycyksIG9yIGFzIGl0IHdhcwogICAgICogc3BlY2lmaWVkIGZvciB0aGUgaW5zdGFuY2UgKHNlZSB3aXRoUmVxdWVzdFRhcmdldCgpKS4KICAgICAqCiAgICAgKiBJbiBtb3N0IGNhc2VzLCB0aGlzIHdpbGwgYmUgdGhlIG9yaWdpbi1mb3JtIG9mIHRoZSBjb21wb3NlZCBVUkksCiAgICAgKiB1bmxlc3MgYSB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIChzZWUKICAgICAqIHdpdGhSZXF1ZXN0VGFyZ2V0KCkgYmVsb3cpLgogICAgICoKICAgICAqIElmIG5vIFVSSSBpcyBhdmFpbGFibGUsIGFuZCBubyByZXF1ZXN0LXRhcmdldCBoYXMgYmVlbiBzcGVjaWZpY2FsbHkKICAgICAqIHByb3ZpZGVkLCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiB0aGUgc3RyaW5nICIvIi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdFRhcmdldCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWMgcmVxdWVzdC10YXJnZXQuCiAgICAgKgogICAgICogSWYgdGhlIHJlcXVlc3QgbmVlZHMgYSBub24tb3JpZ2luLWZvcm0gcmVxdWVzdC10YXJnZXQg4oCUIGUuZy4sIGZvcgogICAgICogc3BlY2lmeWluZyBhbiBhYnNvbHV0ZS1mb3JtLCBhdXRob3JpdHktZm9ybSwgb3IgYXN0ZXJpc2stZm9ybSDigJQKICAgICAqIHRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQKICAgICAqIHJlcXVlc3QtdGFyZ2V0LCB2ZXJiYXRpbS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBjaGFuZ2VkIHJlcXVlc3QgdGFyZ2V0LgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi01LjMgKGZvciB0aGUgdmFyaW91cwogICAgICogICAgIHJlcXVlc3QtdGFyZ2V0IGZvcm1zIGFsbG93ZWQgaW4gcmVxdWVzdCBtZXNzYWdlcykKICAgICAqIEBwYXJhbSBzdHJpbmcgJHJlcXVlc3RUYXJnZXQKICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUmVxdWVzdFRhcmdldChzdHJpbmcgJHJlcXVlc3RUYXJnZXQpOiBSZXF1ZXN0SW50ZXJmYWNlOwoKCiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgSFRUUCBtZXRob2Qgb2YgdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyB0aGUgcmVxdWVzdCBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRob2QoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIEhUVFAgbWV0aG9kLgogICAgICoKICAgICAqIFdoaWxlIEhUVFAgbWV0aG9kIG5hbWVzIGFyZSB0eXBpY2FsbHkgYWxsIHVwcGVyY2FzZSBjaGFyYWN0ZXJzLCBIVFRQCiAgICAgKiBtZXRob2QgbmFtZXMgYXJlIGNhc2Utc2Vuc2l0aXZlIGFuZCB0aHVzIGltcGxlbWVudGF0aW9ucyBTSE9VTEQgTk9UCiAgICAgKiBtb2RpZnkgdGhlIGdpdmVuIHN0cmluZy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBjaGFuZ2VkIHJlcXVlc3QgbWV0aG9kLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1ldGhvZCBDYXNlLXNlbnNpdGl2ZSBtZXRob2QuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvciBpbnZhbGlkIEhUVFAgbWV0aG9kcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhNZXRob2Qoc3RyaW5nICRtZXRob2QpOiBSZXF1ZXN0SW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0cmlldmVzIHRoZSBVUkkgaW5zdGFuY2UuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYSBVcmlJbnRlcmZhY2UgaW5zdGFuY2UuCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMwogICAgICogQHJldHVybiBVcmlJbnRlcmZhY2UgUmV0dXJucyBhIFVyaUludGVyZmFjZSBpbnN0YW5jZQogICAgICogICAgIHJlcHJlc2VudGluZyB0aGUgVVJJIG9mIHRoZSByZXF1ZXN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXJpKCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgVVJJLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgdXBkYXRlIHRoZSBIb3N0IGhlYWRlciBvZiB0aGUgcmV0dXJuZWQgcmVxdWVzdCBieQogICAgICogZGVmYXVsdCBpZiB0aGUgVVJJIGNvbnRhaW5zIGEgaG9zdCBjb21wb25lbnQuIElmIHRoZSBVUkkgZG9lcyBub3QKICAgICAqIGNvbnRhaW4gYSBob3N0IGNvbXBvbmVudCwgYW55IHByZS1leGlzdGluZyBIb3N0IGhlYWRlciBNVVNUIGJlIGNhcnJpZWQKICAgICAqIG92ZXIgdG8gdGhlIHJldHVybmVkIHJlcXVlc3QuCiAgICAgKgogICAgICogWW91IGNhbiBvcHQtaW4gdG8gcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgc3RhdGUgb2YgdGhlIEhvc3QgaGVhZGVyIGJ5CiAgICAgKiBzZXR0aW5nIGAkcHJlc2VydmVIb3N0YCB0byBgdHJ1ZWAuIFdoZW4gYCRwcmVzZXJ2ZUhvc3RgIGlzIHNldCB0bwogICAgICogYHRydWVgLCB0aGlzIG1ldGhvZCBpbnRlcmFjdHMgd2l0aCB0aGUgSG9zdCBoZWFkZXIgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgogICAgICoKICAgICAqIC0gSWYgdGhlIEhvc3QgaGVhZGVyIGlzIG1pc3Npbmcgb3IgZW1wdHksIGFuZCB0aGUgbmV3IFVSSSBjb250YWlucwogICAgICogICBhIGhvc3QgY29tcG9uZW50LCB0aGlzIG1ldGhvZCBNVVNUIHVwZGF0ZSB0aGUgSG9zdCBoZWFkZXIgaW4gdGhlIHJldHVybmVkCiAgICAgKiAgIHJlcXVlc3QuCiAgICAgKiAtIElmIHRoZSBIb3N0IGhlYWRlciBpcyBtaXNzaW5nIG9yIGVtcHR5LCBhbmQgdGhlIG5ldyBVUkkgZG9lcyBub3QgY29udGFpbiBhCiAgICAgKiAgIGhvc3QgY29tcG9uZW50LCB0aGlzIG1ldGhvZCBNVVNUIE5PVCB1cGRhdGUgdGhlIEhvc3QgaGVhZGVyIGluIHRoZSByZXR1cm5lZAogICAgICogICByZXF1ZXN0LgogICAgICogLSBJZiBhIEhvc3QgaGVhZGVyIGlzIHByZXNlbnQgYW5kIG5vbi1lbXB0eSwgdGhpcyBtZXRob2QgTVVTVCBOT1QgdXBkYXRlCiAgICAgKiAgIHRoZSBIb3N0IGhlYWRlciBpbiB0aGUgcmV0dXJuZWQgcmVxdWVzdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBuZXcgVXJpSW50ZXJmYWNlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjMKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaSBOZXcgcmVxdWVzdCBVUkkgdG8gdXNlLgogICAgICogQHBhcmFtIGJvb2wgJHByZXNlcnZlSG9zdCBQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RhdGUgb2YgdGhlIEhvc3QgaGVhZGVyLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVcmkoVXJpSW50ZXJmYWNlICR1cmksIGJvb2wgJHByZXNlcnZlSG9zdCA9IGZhbHNlKTogUmVxdWVzdEludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/src/ResponseInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBzZXJ2ZXItc2lkZSByZXNwb25zZS4KICoKICogUGVyIHRoZSBIVFRQIHNwZWNpZmljYXRpb24sIHRoaXMgaW50ZXJmYWNlIGluY2x1ZGVzIHByb3BlcnRpZXMgZm9yCiAqIGVhY2ggb2YgdGhlIGZvbGxvd2luZzoKICoKICogLSBQcm90b2NvbCB2ZXJzaW9uCiAqIC0gU3RhdHVzIGNvZGUgYW5kIHJlYXNvbiBwaHJhc2UKICogLSBIZWFkZXJzCiAqIC0gTWVzc2FnZSBib2R5CiAqCiAqIFJlc3BvbnNlcyBhcmUgY29uc2lkZXJlZCBpbW11dGFibGU7IGFsbCBtZXRob2RzIHRoYXQgbWlnaHQgY2hhbmdlIHN0YXRlIE1VU1QKICogYmUgaW1wbGVtZW50ZWQgc3VjaCB0aGF0IHRoZXkgcmV0YWluIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY3VycmVudAogKiBtZXNzYWdlIGFuZCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgY2hhbmdlZCBzdGF0ZS4KICovCmludGVyZmFjZSBSZXNwb25zZUludGVyZmFjZSBleHRlbmRzIE1lc3NhZ2VJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBHZXRzIHRoZSByZXNwb25zZSBzdGF0dXMgY29kZS4KICAgICAqCiAgICAgKiBUaGUgc3RhdHVzIGNvZGUgaXMgYSAzLWRpZ2l0IGludGVnZXIgcmVzdWx0IGNvZGUgb2YgdGhlIHNlcnZlcidzIGF0dGVtcHQKICAgICAqIHRvIHVuZGVyc3RhbmQgYW5kIHNhdGlzZnkgdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogQHJldHVybiBpbnQgU3RhdHVzIGNvZGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0dXNDb2RlKCk6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgc3RhdHVzIGNvZGUgYW5kLCBvcHRpb25hbGx5LCByZWFzb24gcGhyYXNlLgogICAgICoKICAgICAqIElmIG5vIHJlYXNvbiBwaHJhc2UgaXMgc3BlY2lmaWVkLCBpbXBsZW1lbnRhdGlvbnMgTUFZIGNob29zZSB0byBkZWZhdWx0CiAgICAgKiB0byB0aGUgUkZDIDcyMzEgb3IgSUFOQSByZWNvbW1lbmRlZCByZWFzb24gcGhyYXNlIGZvciB0aGUgcmVzcG9uc2UncwogICAgICogc3RhdHVzIGNvZGUuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBzdGF0dXMgYW5kIHJlYXNvbiBwaHJhc2UuCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1zdGF0dXMtY29kZXMvaHR0cC1zdGF0dXMtY29kZXMueGh0bWwKICAgICAqIEBwYXJhbSBpbnQgJGNvZGUgVGhlIDMtZGlnaXQgaW50ZWdlciByZXN1bHQgY29kZSB0byBzZXQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyZWFzb25QaHJhc2UgVGhlIHJlYXNvbiBwaHJhc2UgdG8gdXNlIHdpdGggdGhlCiAgICAgKiAgICAgcHJvdmlkZWQgc3RhdHVzIGNvZGU7IGlmIG5vbmUgaXMgcHJvdmlkZWQsIGltcGxlbWVudGF0aW9ucyBNQVkKICAgICAqICAgICB1c2UgdGhlIGRlZmF1bHRzIGFzIHN1Z2dlc3RlZCBpbiB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBGb3IgaW52YWxpZCBzdGF0dXMgY29kZSBhcmd1bWVudHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU3RhdHVzKGludCAkY29kZSwgc3RyaW5nICRyZWFzb25QaHJhc2UgPSAnJyk6IFJlc3BvbnNlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogR2V0cyB0aGUgcmVzcG9uc2UgcmVhc29uIHBocmFzZSBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXR1cyBjb2RlLgogICAgICoKICAgICAqIEJlY2F1c2UgYSByZWFzb24gcGhyYXNlIGlzIG5vdCBhIHJlcXVpcmVkIGVsZW1lbnQgaW4gYSByZXNwb25zZQogICAgICogc3RhdHVzIGxpbmUsIHRoZSByZWFzb24gcGhyYXNlIHZhbHVlIE1BWSBiZSBudWxsLiBJbXBsZW1lbnRhdGlvbnMgTUFZCiAgICAgKiBjaG9vc2UgdG8gcmV0dXJuIHRoZSBkZWZhdWx0IFJGQyA3MjMxIHJlY29tbWVuZGVkIHJlYXNvbiBwaHJhc2UgKG9yIHRob3NlCiAgICAgKiBsaXN0ZWQgaW4gdGhlIElBTkEgSFRUUCBTdGF0dXMgQ29kZSBSZWdpc3RyeSkgZm9yIHRoZSByZXNwb25zZSdzCiAgICAgKiBzdGF0dXMgY29kZS4KICAgICAqCiAgICAgKiBAbGluayBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNgogICAgICogQGxpbmsgaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9odHRwLXN0YXR1cy1jb2Rlcy9odHRwLXN0YXR1cy1jb2Rlcy54aHRtbAogICAgICogQHJldHVybiBzdHJpbmcgUmVhc29uIHBocmFzZTsgbXVzdCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIG5vbmUgcHJlc2VudC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlYXNvblBocmFzZSgpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/src/ServerRequestInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIGluY29taW5nLCBzZXJ2ZXItc2lkZSBIVFRQIHJlcXVlc3QuCiAqCiAqIFBlciB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uLCB0aGlzIGludGVyZmFjZSBpbmNsdWRlcyBwcm9wZXJ0aWVzIGZvcgogKiBlYWNoIG9mIHRoZSBmb2xsb3dpbmc6CiAqCiAqIC0gUHJvdG9jb2wgdmVyc2lvbgogKiAtIEhUVFAgbWV0aG9kCiAqIC0gVVJJCiAqIC0gSGVhZGVycwogKiAtIE1lc3NhZ2UgYm9keQogKgogKiBBZGRpdGlvbmFsbHksIGl0IGVuY2Fwc3VsYXRlcyBhbGwgZGF0YSBhcyBpdCBoYXMgYXJyaXZlZCB0byB0aGUKICogYXBwbGljYXRpb24gZnJvbSB0aGUgQ0dJIGFuZC9vciBQSFAgZW52aXJvbm1lbnQsIGluY2x1ZGluZzoKICoKICogLSBUaGUgdmFsdWVzIHJlcHJlc2VudGVkIGluICRfU0VSVkVSLgogKiAtIEFueSBjb29raWVzIHByb3ZpZGVkIChnZW5lcmFsbHkgdmlhICRfQ09PS0lFKQogKiAtIFF1ZXJ5IHN0cmluZyBhcmd1bWVudHMgKGdlbmVyYWxseSB2aWEgJF9HRVQsIG9yIGFzIHBhcnNlZCB2aWEgcGFyc2Vfc3RyKCkpCiAqIC0gVXBsb2FkIGZpbGVzLCBpZiBhbnkgKGFzIHJlcHJlc2VudGVkIGJ5ICRfRklMRVMpCiAqIC0gRGVzZXJpYWxpemVkIGJvZHkgcGFyYW1ldGVycyAoZ2VuZXJhbGx5IGZyb20gJF9QT1NUKQogKgogKiAkX1NFUlZFUiB2YWx1ZXMgTVVTVCBiZSB0cmVhdGVkIGFzIGltbXV0YWJsZSwgYXMgdGhleSByZXByZXNlbnQgYXBwbGljYXRpb24KICogc3RhdGUgYXQgdGhlIHRpbWUgb2YgcmVxdWVzdDsgYXMgc3VjaCwgbm8gbWV0aG9kcyBhcmUgcHJvdmlkZWQgdG8gYWxsb3cKICogbW9kaWZpY2F0aW9uIG9mIHRob3NlIHZhbHVlcy4gVGhlIG90aGVyIHZhbHVlcyBwcm92aWRlIHN1Y2ggbWV0aG9kcywgYXMgdGhleQogKiBjYW4gYmUgcmVzdG9yZWQgZnJvbSAkX1NFUlZFUiBvciB0aGUgcmVxdWVzdCBib2R5LCBhbmQgbWF5IG5lZWQgdHJlYXRtZW50CiAqIGR1cmluZyB0aGUgYXBwbGljYXRpb24gKGUuZy4sIGJvZHkgcGFyYW1ldGVycyBtYXkgYmUgZGVzZXJpYWxpemVkIGJhc2VkIG9uCiAqIGNvbnRlbnQgdHlwZSkuCiAqCiAqIEFkZGl0aW9uYWxseSwgdGhpcyBpbnRlcmZhY2UgcmVjb2duaXplcyB0aGUgdXRpbGl0eSBvZiBpbnRyb3NwZWN0aW5nIGEKICogcmVxdWVzdCB0byBkZXJpdmUgYW5kIG1hdGNoIGFkZGl0aW9uYWwgcGFyYW1ldGVycyAoZS5nLiwgdmlhIFVSSSBwYXRoCiAqIG1hdGNoaW5nLCBkZWNyeXB0aW5nIGNvb2tpZSB2YWx1ZXMsIGRlc2VyaWFsaXppbmcgbm9uLWZvcm0tZW5jb2RlZCBib2R5CiAqIGNvbnRlbnQsIG1hdGNoaW5nIGF1dGhvcml6YXRpb24gaGVhZGVycyB0byB1c2VycywgZXRjKS4gVGhlc2UgcGFyYW1ldGVycwogKiBhcmUgc3RvcmVkIGluIGFuICJhdHRyaWJ1dGVzIiBwcm9wZXJ0eS4KICoKICogUmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUCiAqIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqLwppbnRlcmZhY2UgU2VydmVyUmVxdWVzdEludGVyZmFjZSBleHRlbmRzIFJlcXVlc3RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBzZXJ2ZXIgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBSZXRyaWV2ZXMgZGF0YSByZWxhdGVkIHRvIHRoZSBpbmNvbWluZyByZXF1ZXN0IGVudmlyb25tZW50LAogICAgICogdHlwaWNhbGx5IGRlcml2ZWQgZnJvbSBQSFAncyAkX1NFUlZFUiBzdXBlcmdsb2JhbC4gVGhlIGRhdGEgSVMgTk9UCiAgICAgKiBSRVFVSVJFRCB0byBvcmlnaW5hdGUgZnJvbSAkX1NFUlZFUi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXJ2ZXJQYXJhbXMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBjb29raWVzLgogICAgICoKICAgICAqIFJldHJpZXZlcyBjb29raWVzIHNlbnQgYnkgdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLgogICAgICoKICAgICAqIFRoZSBkYXRhIE1VU1QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlICRfQ09PS0lFCiAgICAgKiBzdXBlcmdsb2JhbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb29raWVQYXJhbXMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGNvb2tpZXMuCiAgICAgKgogICAgICogVGhlIGRhdGEgSVMgTk9UIFJFUVVJUkVEIHRvIGNvbWUgZnJvbSB0aGUgJF9DT09LSUUgc3VwZXJnbG9iYWwsIGJ1dCBNVVNUCiAgICAgKiBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHN0cnVjdHVyZSBvZiAkX0NPT0tJRS4gVHlwaWNhbGx5LCB0aGlzIGRhdGEgd2lsbAogICAgICogYmUgaW5qZWN0ZWQgYXQgaW5zdGFudGlhdGlvbi4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIE5PVCB1cGRhdGUgdGhlIHJlbGF0ZWQgQ29va2llIGhlYWRlciBvZiB0aGUgcmVxdWVzdAogICAgICogaW5zdGFuY2UsIG5vciByZWxhdGVkIHZhbHVlcyBpbiB0aGUgc2VydmVyIHBhcmFtcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiB1cGRhdGVkIGNvb2tpZSB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjb29raWVzIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgY29va2llcy4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQ29va2llUGFyYW1zKGFycmF5ICRjb29raWVzKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHF1ZXJ5IHN0cmluZyBhcmd1bWVudHMuCiAgICAgKgogICAgICogUmV0cmlldmVzIHRoZSBkZXNlcmlhbGl6ZWQgcXVlcnkgc3RyaW5nIGFyZ3VtZW50cywgaWYgYW55LgogICAgICoKICAgICAqIE5vdGU6IHRoZSBxdWVyeSBwYXJhbXMgbWlnaHQgbm90IGJlIGluIHN5bmMgd2l0aCB0aGUgVVJJIG9yIHNlcnZlcgogICAgICogcGFyYW1zLiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgeW91IGFyZSBvbmx5IGdldHRpbmcgdGhlIG9yaWdpbmFsCiAgICAgKiB2YWx1ZXMsIHlvdSBtYXkgbmVlZCB0byBwYXJzZSB0aGUgcXVlcnkgc3RyaW5nIGZyb20gYGdldFVyaSgpLT5nZXRRdWVyeSgpYAogICAgICogb3IgZnJvbSB0aGUgYFFVRVJZX1NUUklOR2Agc2VydmVyIHBhcmFtLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFF1ZXJ5UGFyYW1zKCk6IGFycmF5OwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcgYXJndW1lbnRzLgogICAgICoKICAgICAqIFRoZXNlIHZhbHVlcyBTSE9VTEQgcmVtYWluIGltbXV0YWJsZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhlIGluY29taW5nCiAgICAgKiByZXF1ZXN0LiBUaGV5IE1BWSBiZSBpbmplY3RlZCBkdXJpbmcgaW5zdGFudGlhdGlvbiwgc3VjaCBhcyBmcm9tIFBIUCdzCiAgICAgKiAkX0dFVCBzdXBlcmdsb2JhbCwgb3IgTUFZIGJlIGRlcml2ZWQgZnJvbSBzb21lIG90aGVyIHZhbHVlIHN1Y2ggYXMgdGhlCiAgICAgKiBVUkkuIEluIGNhc2VzIHdoZXJlIHRoZSBhcmd1bWVudHMgYXJlIHBhcnNlZCBmcm9tIHRoZSBVUkksIHRoZSBkYXRhCiAgICAgKiBNVVNUIGJlIGNvbXBhdGlibGUgd2l0aCB3aGF0IFBIUCdzIHBhcnNlX3N0cigpIHdvdWxkIHJldHVybiBmb3IKICAgICAqIHB1cnBvc2VzIG9mIGhvdyBkdXBsaWNhdGUgcXVlcnkgcGFyYW1ldGVycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyBuZXN0ZWQKICAgICAqIHNldHMgYXJlIGhhbmRsZWQuCiAgICAgKgogICAgICogU2V0dGluZyBxdWVyeSBzdHJpbmcgYXJndW1lbnRzIE1VU1QgTk9UIGNoYW5nZSB0aGUgVVJJIHN0b3JlZCBieSB0aGUKICAgICAqIHJlcXVlc3QsIG5vciB0aGUgdmFsdWVzIGluIHRoZSBzZXJ2ZXIgcGFyYW1zLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIHVwZGF0ZWQgcXVlcnkgc3RyaW5nIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHF1ZXJ5IEFycmF5IG9mIHF1ZXJ5IHN0cmluZyBhcmd1bWVudHMsIHR5cGljYWxseSBmcm9tCiAgICAgKiAgICAgJF9HRVQuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFF1ZXJ5UGFyYW1zKGFycmF5ICRxdWVyeSk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBub3JtYWxpemVkIGZpbGUgdXBsb2FkIGRhdGEuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB1cGxvYWQgbWV0YWRhdGEgaW4gYSBub3JtYWxpemVkIHRyZWUsIHdpdGggZWFjaCBsZWFmCiAgICAgKiBhbiBpbnN0YW5jZSBvZiBQc3JcSHR0cFxNZXNzYWdlXFVwbG9hZGVkRmlsZUludGVyZmFjZS4KICAgICAqCiAgICAgKiBUaGVzZSB2YWx1ZXMgTUFZIGJlIHByZXBhcmVkIGZyb20gJF9GSUxFUyBvciB0aGUgbWVzc2FnZSBib2R5IGR1cmluZwogICAgICogaW5zdGFudGlhdGlvbiwgb3IgTUFZIGJlIGluamVjdGVkIHZpYSB3aXRoVXBsb2FkZWRGaWxlcygpLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQW4gYXJyYXkgdHJlZSBvZiBVcGxvYWRlZEZpbGVJbnRlcmZhY2UgaW5zdGFuY2VzOyBhbiBlbXB0eQogICAgICogICAgIGFycmF5IE1VU1QgYmUgcmV0dXJuZWQgaWYgbm8gZGF0YSBpcyBwcmVzZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXBsb2FkZWRGaWxlcygpOiBhcnJheTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXBsb2FkZWQgZmlsZXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBib2R5IHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR1cGxvYWRlZEZpbGVzIEFuIGFycmF5IHRyZWUgb2YgVXBsb2FkZWRGaWxlSW50ZXJmYWNlIGluc3RhbmNlcy4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gaW52YWxpZCBzdHJ1Y3R1cmUgaXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoVXBsb2FkZWRGaWxlcyhhcnJheSAkdXBsb2FkZWRGaWxlcyk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBhbnkgcGFyYW1ldGVycyBwcm92aWRlZCBpbiB0aGUgcmVxdWVzdCBib2R5LgogICAgICoKICAgICAqIElmIHRoZSByZXF1ZXN0IENvbnRlbnQtVHlwZSBpcyBlaXRoZXIgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCiAgICAgKiBvciBtdWx0aXBhcnQvZm9ybS1kYXRhLCBhbmQgdGhlIHJlcXVlc3QgbWV0aG9kIGlzIFBPU1QsIHRoaXMgbWV0aG9kIE1VU1QKICAgICAqIHJldHVybiB0aGUgY29udGVudHMgb2YgJF9QT1NULgogICAgICoKICAgICAqIE90aGVyd2lzZSwgdGhpcyBtZXRob2QgbWF5IHJldHVybiBhbnkgcmVzdWx0cyBvZiBkZXNlcmlhbGl6aW5nCiAgICAgKiB0aGUgcmVxdWVzdCBib2R5IGNvbnRlbnQ7IGFzIHBhcnNpbmcgcmV0dXJucyBzdHJ1Y3R1cmVkIGNvbnRlbnQsIHRoZQogICAgICogcG90ZW50aWFsIHR5cGVzIE1VU1QgYmUgYXJyYXlzIG9yIG9iamVjdHMgb25seS4gQSBudWxsIHZhbHVlIGluZGljYXRlcwogICAgICogdGhlIGFic2VuY2Ugb2YgYm9keSBjb250ZW50LgogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxhcnJheXxvYmplY3QgVGhlIGRlc2VyaWFsaXplZCBib2R5IHBhcmFtZXRlcnMsIGlmIGFueS4KICAgICAqICAgICBUaGVzZSB3aWxsIHR5cGljYWxseSBiZSBhbiBhcnJheSBvciBvYmplY3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXJzZWRCb2R5KCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGJvZHkgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBUaGVzZSBNQVkgYmUgaW5qZWN0ZWQgZHVyaW5nIGluc3RhbnRpYXRpb24uCiAgICAgKgogICAgICogSWYgdGhlIHJlcXVlc3QgQ29udGVudC1UeXBlIGlzIGVpdGhlciBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKICAgICAqIG9yIG11bHRpcGFydC9mb3JtLWRhdGEsIGFuZCB0aGUgcmVxdWVzdCBtZXRob2QgaXMgUE9TVCwgdXNlIHRoaXMgbWV0aG9kCiAgICAgKiBPTkxZIHRvIGluamVjdCB0aGUgY29udGVudHMgb2YgJF9QT1NULgogICAgICoKICAgICAqIFRoZSBkYXRhIElTIE5PVCBSRVFVSVJFRCB0byBjb21lIGZyb20gJF9QT1NULCBidXQgTVVTVCBiZSB0aGUgcmVzdWx0cyBvZgogICAgICogZGVzZXJpYWxpemluZyB0aGUgcmVxdWVzdCBib2R5IGNvbnRlbnQuIERlc2VyaWFsaXphdGlvbi9wYXJzaW5nIHJldHVybnMKICAgICAqIHN0cnVjdHVyZWQgZGF0YSwgYW5kLCBhcyBzdWNoLCB0aGlzIG1ldGhvZCBPTkxZIGFjY2VwdHMgYXJyYXlzIG9yIG9iamVjdHMsCiAgICAgKiBvciBhIG51bGwgdmFsdWUgaWYgbm90aGluZyB3YXMgYXZhaWxhYmxlIHRvIHBhcnNlLgogICAgICoKICAgICAqIEFzIGFuIGV4YW1wbGUsIGlmIGNvbnRlbnQgbmVnb3RpYXRpb24gZGV0ZXJtaW5lcyB0aGF0IHRoZSByZXF1ZXN0IGRhdGEKICAgICAqIGlzIGEgSlNPTiBwYXlsb2FkLCB0aGlzIG1ldGhvZCBjb3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlcXVlc3QKICAgICAqIGluc3RhbmNlIHdpdGggdGhlIGRlc2VyaWFsaXplZCBwYXJhbWV0ZXJzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIHVwZGF0ZWQgYm9keSBwYXJhbWV0ZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBudWxsfGFycmF5fG9iamVjdCAkZGF0YSBUaGUgZGVzZXJpYWxpemVkIGJvZHkgZGF0YS4gVGhpcyB3aWxsCiAgICAgKiAgICAgdHlwaWNhbGx5IGJlIGluIGFuIGFycmF5IG9yIG9iamVjdC4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gdW5zdXBwb3J0ZWQgYXJndW1lbnQgdHlwZSBpcwogICAgICogICAgIHByb3ZpZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhcnNlZEJvZHkoJGRhdGEpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgYXR0cmlidXRlcyBkZXJpdmVkIGZyb20gdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogVGhlIHJlcXVlc3QgImF0dHJpYnV0ZXMiIG1heSBiZSB1c2VkIHRvIGFsbG93IGluamVjdGlvbiBvZiBhbnkKICAgICAqIHBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIHRoZSByZXF1ZXN0OiBlLmcuLCB0aGUgcmVzdWx0cyBvZiBwYXRoCiAgICAgKiBtYXRjaCBvcGVyYXRpb25zOyB0aGUgcmVzdWx0cyBvZiBkZWNyeXB0aW5nIGNvb2tpZXM7IHRoZSByZXN1bHRzIG9mCiAgICAgKiBkZXNlcmlhbGl6aW5nIG5vbi1mb3JtLWVuY29kZWQgbWVzc2FnZSBib2RpZXM7IGV0Yy4gQXR0cmlidXRlcwogICAgICogd2lsbCBiZSBhcHBsaWNhdGlvbiBhbmQgcmVxdWVzdCBzcGVjaWZpYywgYW5kIENBTiBiZSBtdXRhYmxlLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQXR0cmlidXRlcyBkZXJpdmVkIGZyb20gdGhlIHJlcXVlc3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKCk6IGFycmF5OwoKICAgIC8qKgogICAgICogUmV0cmlldmUgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZS4KICAgICAqCiAgICAgKiBSZXRyaWV2ZXMgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSBhcyBkZXNjcmliZWQgaW4KICAgICAqIGdldEF0dHJpYnV0ZXMoKS4gSWYgdGhlIGF0dHJpYnV0ZSBoYXMgbm90IGJlZW4gcHJldmlvdXNseSBzZXQsIHJldHVybnMKICAgICAqIHRoZSBkZWZhdWx0IHZhbHVlIGFzIHByb3ZpZGVkLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIG9idmlhdGVzIHRoZSBuZWVkIGZvciBhIGhhc0F0dHJpYnV0ZSgpIG1ldGhvZCwgYXMgaXQgYWxsb3dzCiAgICAgKiBzcGVjaWZ5aW5nIGEgZGVmYXVsdCB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHBhcmFtIG1peGVkICRkZWZhdWx0IERlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QuCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUoc3RyaW5nICRuYW1lLCAkZGVmYXVsdCA9IG51bGwpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFsbG93cyBzZXR0aW5nIGEgc2luZ2xlIGRlcml2ZWQgcmVxdWVzdCBhdHRyaWJ1dGUgYXMKICAgICAqIGRlc2NyaWJlZCBpbiBnZXRBdHRyaWJ1dGVzKCkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQXR0cmlidXRlKHN0cmluZyAkbmFtZSwgJHZhbHVlKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB0aGF0IHJlbW92ZXMgdGhlIHNwZWNpZmllZCBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFsbG93cyByZW1vdmluZyBhIHNpbmdsZSBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlIGFzCiAgICAgKiBkZXNjcmliZWQgaW4gZ2V0QXR0cmlidXRlcygpLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IHJlbW92ZXMKICAgICAqIHRoZSBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRBdHRyaWJ1dGUoc3RyaW5nICRuYW1lKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/src/StreamInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIERlc2NyaWJlcyBhIGRhdGEgc3RyZWFtLgogKgogKiBUeXBpY2FsbHksIGFuIGluc3RhbmNlIHdpbGwgd3JhcCBhIFBIUCBzdHJlYW07IHRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzCiAqIGEgd3JhcHBlciBhcm91bmQgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uIG9mCiAqIHRoZSBlbnRpcmUgc3RyZWFtIHRvIGEgc3RyaW5nLgogKi8KaW50ZXJmYWNlIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJlYWRzIGFsbCBkYXRhIGZyb20gdGhlIHN0cmVhbSBpbnRvIGEgc3RyaW5nLCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gZW5kLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYXR0ZW1wdCB0byBzZWVrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbSBiZWZvcmUKICAgICAqIHJlYWRpbmcgZGF0YSBhbmQgcmVhZCB0aGUgc3RyZWFtIHVudGlsIHRoZSBlbmQgaXMgcmVhY2hlZC4KICAgICAqCiAgICAgKiBXYXJuaW5nOiBUaGlzIGNvdWxkIGF0dGVtcHQgdG8gbG9hZCBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIGludG8gbWVtb3J5LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgTk9UIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBvcmRlciB0byBjb25mb3JtIHdpdGggUEhQJ3MKICAgICAqIHN0cmluZyBjYXN0aW5nIG9wZXJhdGlvbnMuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5tYWdpYy5waHAjb2JqZWN0LnRvc3RyaW5nCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBDbG9zZXMgdGhlIHN0cmVhbSBhbmQgYW55IHVuZGVybHlpbmcgcmVzb3VyY2VzLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZDsKCiAgICAvKioKICAgICAqIFNlcGFyYXRlcyBhbnkgdW5kZXJseWluZyByZXNvdXJjZXMgZnJvbSB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEFmdGVyIHRoZSBzdHJlYW0gaGFzIGJlZW4gZGV0YWNoZWQsIHRoZSBzdHJlYW0gaXMgaW4gYW4gdW51c2FibGUgc3RhdGUuCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZXxudWxsIFVuZGVybHlpbmcgUEhQIHN0cmVhbSwgaWYgYW55CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKTsKCiAgICAvKioKICAgICAqIEdldCB0aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGlmIGtub3duLgogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwgUmV0dXJucyB0aGUgc2l6ZSBpbiBieXRlcyBpZiBrbm93biwgb3IgbnVsbCBpZiB1bmtub3duLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50OwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgZmlsZSByZWFkL3dyaXRlIHBvaW50ZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGludCBQb3NpdGlvbiBvZiB0aGUgZmlsZSBwb2ludGVyCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGVycm9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpOiBpbnQ7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHN0cmVhbSBpcyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyBzZWVrYWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFNlZWsgdG8gYSBwb3NpdGlvbiBpbiB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uZnNlZWsucGhwCiAgICAgKiBAcGFyYW0gaW50ICRvZmZzZXQgU3RyZWFtIG9mZnNldAogICAgICogQHBhcmFtIGludCAkd2hlbmNlIFNwZWNpZmllcyBob3cgdGhlIGN1cnNvciBwb3NpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQKICAgICAqICAgICBiYXNlZCBvbiB0aGUgc2VlayBvZmZzZXQuIFZhbGlkIHZhbHVlcyBhcmUgaWRlbnRpY2FsIHRvIHRoZSBidWlsdC1pbgogICAgICogICAgIFBIUCAkd2hlbmNlIHZhbHVlcyBmb3IgYGZzZWVrKClgLiAgU0VFS19TRVQ6IFNldCBwb3NpdGlvbiBlcXVhbCB0bwogICAgICogICAgIG9mZnNldCBieXRlcyBTRUVLX0NVUjogU2V0IHBvc2l0aW9uIHRvIGN1cnJlbnQgbG9jYXRpb24gcGx1cyBvZmZzZXQKICAgICAqICAgICBTRUVLX0VORDogU2V0IHBvc2l0aW9uIHRvIGVuZC1vZi1zdHJlYW0gcGx1cyBvZmZzZXQuCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGZhaWx1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKGludCAkb2Zmc2V0LCBpbnQgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZDsKCiAgICAvKioKICAgICAqIFNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIElmIHRoZSBzdHJlYW0gaXMgbm90IHNlZWthYmxlLCB0aGlzIG1ldGhvZCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbjsKICAgICAqIG90aGVyd2lzZSwgaXQgd2lsbCBwZXJmb3JtIGEgc2VlaygwKS4KICAgICAqCiAgICAgKiBAc2VlIHNlZWsoKQogICAgICogQGxpbmsgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5mc2Vlay5waHAKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZmFpbHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyZWFtIGlzIHdyaXRhYmxlLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpOiBib29sOwoKICAgIC8qKgogICAgICogV3JpdGUgZGF0YSB0byB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBUaGUgc3RyaW5nIHRoYXQgaXMgdG8gYmUgd3JpdHRlbi4KICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGZhaWx1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZShzdHJpbmcgJHN0cmluZyk6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyByZWFkYWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbGVuZ3RoIFJlYWQgdXAgdG8gJGxlbmd0aCBieXRlcyBmcm9tIHRoZSBvYmplY3QgYW5kIHJldHVybgogICAgICogICAgIHRoZW0uIEZld2VyIHRoYW4gJGxlbmd0aCBieXRlcyBtYXkgYmUgcmV0dXJuZWQgaWYgdW5kZXJseWluZyBzdHJlYW0KICAgICAqICAgICBjYWxsIHJldHVybnMgZmV3ZXIgYnl0ZXMuCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc3RyZWFtLCBvciBhbiBlbXB0eSBzdHJpbmcKICAgICAqICAgICBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBhbiBlcnJvciBvY2N1cnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKGludCAkbGVuZ3RoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVtYWluaW5nIGNvbnRlbnRzIGluIGEgc3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdW5hYmxlIHRvIHJlYWQgb3IgYW4gZXJyb3Igb2NjdXJzIHdoaWxlCiAgICAgKiAgICAgcmVhZGluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIEdldCBzdHJlYW0gbWV0YWRhdGEgYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb3IgcmV0cmlldmUgYSBzcGVjaWZpYyBrZXkuCiAgICAgKgogICAgICogVGhlIGtleXMgcmV0dXJuZWQgYXJlIGlkZW50aWNhbCB0byB0aGUga2V5cyByZXR1cm5lZCBmcm9tIFBIUCdzCiAgICAgKiBzdHJlYW1fZ2V0X21ldGFfZGF0YSgpIGZ1bmN0aW9uLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5zdHJlYW0tZ2V0LW1ldGEtZGF0YS5waHAKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAka2V5IFNwZWNpZmljIG1ldGFkYXRhIHRvIHJldHJpZXZlLgogICAgICogQHJldHVybiBhcnJheXxtaXhlZHxudWxsIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgaWYgbm8ga2V5IGlzCiAgICAgKiAgICAgcHJvdmlkZWQuIFJldHVybnMgYSBzcGVjaWZpYyBrZXkgdmFsdWUgaWYgYSBrZXkgaXMgcHJvdmlkZWQgYW5kIHRoZQogICAgICogICAgIHZhbHVlIGlzIGZvdW5kLCBvciBudWxsIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoP3N0cmluZyAka2V5ID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/src/UploadedFileInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFZhbHVlIG9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIHVwbG9hZGVkIHRocm91Z2ggYW4gSFRUUCByZXF1ZXN0LgogKgogKiBJbnN0YW5jZXMgb2YgdGhpcyBpbnRlcmZhY2UgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0CiAqIG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwKICogc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZQogKiBjaGFuZ2VkIHN0YXRlLgogKi8KaW50ZXJmYWNlIFVwbG9hZGVkRmlsZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlIGEgc3RyZWFtIHJlcHJlc2VudGluZyB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldHVybiBhIFN0cmVhbUludGVyZmFjZSBpbnN0YW5jZSwgcmVwcmVzZW50aW5nIHRoZQogICAgICogdXBsb2FkZWQgZmlsZS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gYWxsb3cgdXRpbGl6aW5nIG5hdGl2ZSBQSFAKICAgICAqIHN0cmVhbSBmdW5jdGlvbmFsaXR5IHRvIG1hbmlwdWxhdGUgdGhlIGZpbGUgdXBsb2FkLCBzdWNoIGFzCiAgICAgKiBzdHJlYW1fY29weV90b19zdHJlYW0oKSAodGhvdWdoIHRoZSByZXN1bHQgd2lsbCBuZWVkIHRvIGJlIGRlY29yYXRlZCBpbiBhCiAgICAgKiBuYXRpdmUgUEhQIHN0cmVhbSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBzdWNoIGZ1bmN0aW9ucykuCiAgICAgKgogICAgICogSWYgdGhlIG1vdmVUbygpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgcHJldmlvdXNseSwgdGhpcyBtZXRob2QgTVVTVCByYWlzZQogICAgICogYW4gZXhjZXB0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gU3RyZWFtSW50ZXJmYWNlIFN0cmVhbSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaW4gY2FzZXMgd2hlbiBubyBzdHJlYW0gaXMgYXZhaWxhYmxlIG9yIGNhbiBiZQogICAgICogICAgIGNyZWF0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJlYW0oKTogU3RyZWFtSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogTW92ZSB0aGUgdXBsb2FkZWQgZmlsZSB0byBhIG5ldyBsb2NhdGlvbi4KICAgICAqCiAgICAgKiBVc2UgdGhpcyBtZXRob2QgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gbW92ZV91cGxvYWRlZF9maWxlKCkuIFRoaXMgbWV0aG9kIGlzCiAgICAgKiBndWFyYW50ZWVkIHRvIHdvcmsgaW4gYm90aCBTQVBJIGFuZCBub24tU0FQSSBlbnZpcm9ubWVudHMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgbXVzdCBkZXRlcm1pbmUgd2hpY2ggZW52aXJvbm1lbnQgdGhleSBhcmUgaW4sIGFuZCB1c2UgdGhlCiAgICAgKiBhcHByb3ByaWF0ZSBtZXRob2QgKG1vdmVfdXBsb2FkZWRfZmlsZSgpLCByZW5hbWUoKSwgb3IgYSBzdHJlYW0KICAgICAqIG9wZXJhdGlvbikgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgogICAgICoKICAgICAqICR0YXJnZXRQYXRoIG1heSBiZSBhbiBhYnNvbHV0ZSBwYXRoLCBvciBhIHJlbGF0aXZlIHBhdGguIElmIGl0IGlzIGEKICAgICAqIHJlbGF0aXZlIHBhdGgsIHJlc29sdXRpb24gc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHVzZWQgYnkgUEhQJ3MgcmVuYW1lKCkKICAgICAqIGZ1bmN0aW9uLgogICAgICoKICAgICAqIFRoZSBvcmlnaW5hbCBmaWxlIG9yIHN0cmVhbSBNVVNUIGJlIHJlbW92ZWQgb24gY29tcGxldGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGFueSBzdWJzZXF1ZW50IGNhbGxzIE1VU1QgcmFpc2UKICAgICAqIGFuIGV4Y2VwdGlvbi4KICAgICAqCiAgICAgKiBXaGVuIHVzZWQgaW4gYW4gU0FQSSBlbnZpcm9ubWVudCB3aGVyZSAkX0ZJTEVTIGlzIHBvcHVsYXRlZCwgd2hlbiB3cml0aW5nCiAgICAgKiBmaWxlcyB2aWEgbW92ZVRvKCksIGlzX3VwbG9hZGVkX2ZpbGUoKSBhbmQgbW92ZV91cGxvYWRlZF9maWxlKCkgU0hPVUxEIGJlCiAgICAgKiB1c2VkIHRvIGVuc3VyZSBwZXJtaXNzaW9ucyBhbmQgdXBsb2FkIHN0YXR1cyBhcmUgdmVyaWZpZWQgY29ycmVjdGx5LgogICAgICoKICAgICAqIElmIHlvdSB3aXNoIHRvIG1vdmUgdG8gYSBzdHJlYW0sIHVzZSBnZXRTdHJlYW0oKSwgYXMgU0FQSSBvcGVyYXRpb25zCiAgICAgKiBjYW5ub3QgZ3VhcmFudGVlIHdyaXRpbmcgdG8gc3RyZWFtIGRlc3RpbmF0aW9ucy4KICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L2lzX3VwbG9hZGVkX2ZpbGUKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvbW92ZV91cGxvYWRlZF9maWxlCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0YXJnZXRQYXRoIFBhdGggdG8gd2hpY2ggdG8gbW92ZSB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgJHRhcmdldFBhdGggc3BlY2lmaWVkIGlzIGludmFsaWQuCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGFueSBlcnJvciBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLCBvciBvbgogICAgICogICAgIHRoZSBzZWNvbmQgb3Igc3Vic2VxdWVudCBjYWxsIHRvIHRoZSBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVG8oc3RyaW5nICR0YXJnZXRQYXRoKTogdm9pZDsKICAgIAogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZmlsZSBzaXplLgogICAgICoKICAgICAqIEltcGxlbWVudGF0aW9ucyBTSE9VTEQgcmV0dXJuIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlICJzaXplIiBrZXkgb2YKICAgICAqIHRoZSBmaWxlIGluIHRoZSAkX0ZJTEVTIGFycmF5IGlmIGF2YWlsYWJsZSwgYXMgUEhQIGNhbGN1bGF0ZXMgdGhpcyBiYXNlZAogICAgICogb24gdGhlIGFjdHVhbCBzaXplIHRyYW5zbWl0dGVkLgogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwgVGhlIGZpbGUgc2l6ZSBpbiBieXRlcyBvciBudWxsIGlmIHVua25vd24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQ7CiAgICAKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuIHZhbHVlIE1VU1QgYmUgb25lIG9mIFBIUCdzIFVQTE9BRF9FUlJfWFhYIGNvbnN0YW50cy4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlsZSB3YXMgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogVVBMT0FEX0VSUl9PSy4KICAgICAqCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgU0hPVUxEIHJldHVybiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSAiZXJyb3IiIGtleSBvZgogICAgICogdGhlIGZpbGUgaW4gdGhlICRfRklMRVMgYXJyYXkuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZmVhdHVyZXMuZmlsZS11cGxvYWQuZXJyb3JzLnBocAogICAgICogQHJldHVybiBpbnQgT25lIG9mIFBIUCdzIFVQTE9BRF9FUlJfWFhYIGNvbnN0YW50cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9yKCk6IGludDsKICAgIAogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZmlsZW5hbWUgc2VudCBieSB0aGUgY2xpZW50LgogICAgICoKICAgICAqIERvIG5vdCB0cnVzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIEEgY2xpZW50IGNvdWxkIHNlbmQKICAgICAqIGEgbWFsaWNpb3VzIGZpbGVuYW1lIHdpdGggdGhlIGludGVudGlvbiB0byBjb3JydXB0IG9yIGhhY2sgeW91cgogICAgICogYXBwbGljYXRpb24uCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIFNIT1VMRCByZXR1cm4gdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgIm5hbWUiIGtleSBvZgogICAgICogdGhlIGZpbGUgaW4gdGhlICRfRklMRVMgYXJyYXkuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBUaGUgZmlsZW5hbWUgc2VudCBieSB0aGUgY2xpZW50IG9yIG51bGwgaWYgbm9uZQogICAgICogICAgIHdhcyBwcm92aWRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENsaWVudEZpbGVuYW1lKCk6ID9zdHJpbmc7CiAgICAKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIG1lZGlhIHR5cGUgc2VudCBieSB0aGUgY2xpZW50LgogICAgICoKICAgICAqIERvIG5vdCB0cnVzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIEEgY2xpZW50IGNvdWxkIHNlbmQKICAgICAqIGEgbWFsaWNpb3VzIG1lZGlhIHR5cGUgd2l0aCB0aGUgaW50ZW50aW9uIHRvIGNvcnJ1cHQgb3IgaGFjayB5b3VyCiAgICAgKiBhcHBsaWNhdGlvbi4KICAgICAqCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgU0hPVUxEIHJldHVybiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSAidHlwZSIga2V5IG9mCiAgICAgKiB0aGUgZmlsZSBpbiB0aGUgJF9GSUxFUyBhcnJheS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIFRoZSBtZWRpYSB0eXBlIHNlbnQgYnkgdGhlIGNsaWVudCBvciBudWxsIGlmIG5vbmUKICAgICAqICAgICB3YXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGllbnRNZWRpYVR5cGUoKTogP3N0cmluZzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/psr/http-message/src/UriInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFZhbHVlIG9iamVjdCByZXByZXNlbnRpbmcgYSBVUkkuCiAqCiAqIFRoaXMgaW50ZXJmYWNlIGlzIG1lYW50IHRvIHJlcHJlc2VudCBVUklzIGFjY29yZGluZyB0byBSRkMgMzk4NiBhbmQgdG8KICogcHJvdmlkZSBtZXRob2RzIGZvciBtb3N0IGNvbW1vbiBvcGVyYXRpb25zLiBBZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgZm9yCiAqIHdvcmtpbmcgd2l0aCBVUklzIGNhbiBiZSBwcm92aWRlZCBvbiB0b3Agb2YgdGhlIGludGVyZmFjZSBvciBleHRlcm5hbGx5LgogKiBJdHMgcHJpbWFyeSB1c2UgaXMgZm9yIEhUVFAgcmVxdWVzdHMsIGJ1dCBtYXkgYWxzbyBiZSB1c2VkIGluIG90aGVyCiAqIGNvbnRleHRzLgogKgogKiBJbnN0YW5jZXMgb2YgdGhpcyBpbnRlcmZhY2UgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0CiAqIG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwKICogc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZQogKiBjaGFuZ2VkIHN0YXRlLgogKgogKiBUeXBpY2FsbHkgdGhlIEhvc3QgaGVhZGVyIHdpbGwgYmUgYWxzbyBiZSBwcmVzZW50IGluIHRoZSByZXF1ZXN0IG1lc3NhZ2UuCiAqIEZvciBzZXJ2ZXItc2lkZSByZXF1ZXN0cywgdGhlIHNjaGVtZSB3aWxsIHR5cGljYWxseSBiZSBkaXNjb3ZlcmFibGUgaW4gdGhlCiAqIHNlcnZlciBwYXJhbWV0ZXJzLgogKgogKiBAbGluayBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2ICh0aGUgVVJJIHNwZWNpZmljYXRpb24pCiAqLwppbnRlcmZhY2UgVXJpSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHNjaGVtZSBjb21wb25lbnQgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBzY2hlbWUgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlLCBwZXIgUkZDIDM5ODYKICAgICAqIFNlY3Rpb24gMy4xLgogICAgICoKICAgICAqIFRoZSB0cmFpbGluZyAiOiIgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBzY2hlbWUgYW5kIE1VU1QgTk9UIGJlCiAgICAgKiBhZGRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4xCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHNjaGVtZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNjaGVtZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgYXV0aG9yaXR5IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIGF1dGhvcml0eSBpbmZvcm1hdGlvbiBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eQogICAgICogc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBhdXRob3JpdHkgc3ludGF4IG9mIHRoZSBVUkkgaXM6CiAgICAgKgogICAgICogPHByZT4KICAgICAqIFt1c2VyLWluZm9AXWhvc3RbOnBvcnRdCiAgICAgKiA8L3ByZT4KICAgICAqCiAgICAgKiBJZiB0aGUgcG9ydCBjb21wb25lbnQgaXMgbm90IHNldCBvciBpcyB0aGUgc3RhbmRhcmQgcG9ydCBmb3IgdGhlIGN1cnJlbnQKICAgICAqIHNjaGVtZSwgaXQgU0hPVUxEIE5PVCBiZSBpbmNsdWRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIGF1dGhvcml0eSwgaW4gIlt1c2VyLWluZm9AXWhvc3RbOnBvcnRdIiBmb3JtYXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRob3JpdHkoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHVzZXIgaW5mb3JtYXRpb24gY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gdXNlciBpbmZvcm1hdGlvbiBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eQogICAgICogc3RyaW5nLgogICAgICoKICAgICAqIElmIGEgdXNlciBpcyBwcmVzZW50IGluIHRoZSBVUkksIHRoaXMgd2lsbCByZXR1cm4gdGhhdCB2YWx1ZTsKICAgICAqIGFkZGl0aW9uYWxseSwgaWYgdGhlIHBhc3N3b3JkIGlzIGFsc28gcHJlc2VudCwgaXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUKICAgICAqIHVzZXIgdmFsdWUsIHdpdGggYSBjb2xvbiAoIjoiKSBzZXBhcmF0aW5nIHRoZSB2YWx1ZXMuCiAgICAgKgogICAgICogVGhlIHRyYWlsaW5nICJAIiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHVzZXIgaW5mb3JtYXRpb24gYW5kIE1VU1QKICAgICAqIE5PVCBiZSBhZGRlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHVzZXIgaW5mb3JtYXRpb24sIGluICJ1c2VybmFtZVs6cGFzc3dvcmRdIiBmb3JtYXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VySW5mbygpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgaG9zdCBjb21wb25lbnQgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBob3N0IGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICAqCiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBub3JtYWxpemVkIHRvIGxvd2VyY2FzZSwgcGVyIFJGQyAzOTg2CiAgICAgKiBTZWN0aW9uIDMuMi4yLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMi4yCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIGhvc3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIb3N0KCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwb3J0IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIGEgcG9ydCBpcyBwcmVzZW50LCBhbmQgaXQgaXMgbm9uLXN0YW5kYXJkIGZvciB0aGUgY3VycmVudCBzY2hlbWUsCiAgICAgKiB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBpdCBhcyBhbiBpbnRlZ2VyLiBJZiB0aGUgcG9ydCBpcyB0aGUgc3RhbmRhcmQgcG9ydAogICAgICogdXNlZCB3aXRoIHRoZSBjdXJyZW50IHNjaGVtZSwgdGhpcyBtZXRob2QgU0hPVUxEIHJldHVybiBudWxsLgogICAgICoKICAgICAqIElmIG5vIHBvcnQgaXMgcHJlc2VudCwgYW5kIG5vIHNjaGVtZSBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogYSBudWxsIHZhbHVlLgogICAgICoKICAgICAqIElmIG5vIHBvcnQgaXMgcHJlc2VudCwgYnV0IGEgc2NoZW1lIGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1BWSByZXR1cm4KICAgICAqIHRoZSBzdGFuZGFyZCBwb3J0IGZvciB0aGF0IHNjaGVtZSwgYnV0IFNIT1VMRCByZXR1cm4gbnVsbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8aW50IFRoZSBVUkkgcG9ydC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvcnQoKTogP2ludDsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIE5vcm1hbGx5LCB0aGUgZW1wdHkgcGF0aCAiIiBhbmQgYWJzb2x1dGUgcGF0aCAiLyIgYXJlIGNvbnNpZGVyZWQgZXF1YWwgYXMKICAgICAqIGRlZmluZWQgaW4gUkZDIDcyMzAgU2VjdGlvbiAyLjcuMy4gQnV0IHRoaXMgbWV0aG9kIE1VU1QgTk9UIGF1dG9tYXRpY2FsbHkKICAgICAqIGRvIHRoaXMgbm9ybWFsaXphdGlvbiBiZWNhdXNlIGluIGNvbnRleHRzIHdpdGggYSB0cmltbWVkIGJhc2UgcGF0aCwgZS5nLgogICAgICogdGhlIGZyb250IGNvbnRyb2xsZXIsIHRoaXMgZGlmZmVyZW5jZSBiZWNvbWVzIHNpZ25pZmljYW50LiBJdCdzIHRoZSB0YXNrCiAgICAgKiBvZiB0aGUgdXNlciB0byBoYW5kbGUgYm90aCAiIiBhbmQgIi8iLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4NiwgU2VjdGlvbnMgMiBhbmQgMy4zLgogICAgICoKICAgICAqIEFzIGFuIGV4YW1wbGUsIGlmIHRoZSB2YWx1ZSBzaG91bGQgaW5jbHVkZSBhIHNsYXNoICgiLyIpIG5vdCBpbnRlbmRlZCBhcwogICAgICogZGVsaW1pdGVyIGJldHdlZW4gcGF0aCBzZWdtZW50cywgdGhhdCB2YWx1ZSBNVVNUIGJlIHBhc3NlZCBpbiBlbmNvZGVkCiAgICAgKiBmb3JtIChlLmcuLCAiJTJGIikgdG8gdGhlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4zCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXRoKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBxdWVyeSBzdHJpbmcgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBxdWVyeSBzdHJpbmcgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBsZWFkaW5nICI/IiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHF1ZXJ5IGFuZCBNVVNUIE5PVCBiZQogICAgICogYWRkZWQuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLCBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZQogICAgICogYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMgdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8KICAgICAqIFJGQyAzOTg2LCBTZWN0aW9ucyAyIGFuZCAzLjQuCiAgICAgKgogICAgICogQXMgYW4gZXhhbXBsZSwgaWYgYSB2YWx1ZSBpbiBhIGtleS92YWx1ZSBwYWlyIG9mIHRoZSBxdWVyeSBzdHJpbmcgc2hvdWxkCiAgICAgKiBpbmNsdWRlIGFuIGFtcGVyc2FuZCAoIiYiKSBub3QgaW50ZW5kZWQgYXMgYSBkZWxpbWl0ZXIgYmV0d2VlbiB2YWx1ZXMsCiAgICAgKiB0aGF0IHZhbHVlIE1VU1QgYmUgcGFzc2VkIGluIGVuY29kZWQgZm9ybSAoZS5nLiwgIiUyNiIpIHRvIHRoZSBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuNAogICAgICogQHJldHVybiBzdHJpbmcgVGhlIFVSSSBxdWVyeSBzdHJpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZnJhZ21lbnQgY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gZnJhZ21lbnQgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBsZWFkaW5nICIjIiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIGZyYWdtZW50IGFuZCBNVVNUIE5PVCBiZQogICAgICogYWRkZWQuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLCBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZQogICAgICogYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMgdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8KICAgICAqIFJGQyAzOTg2LCBTZWN0aW9ucyAyIGFuZCAzLjUuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjUKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBVUkkgZnJhZ21lbnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmFnbWVudCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHNjaGVtZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCB0aGUgc2NoZW1lcyAiaHR0cCIgYW5kICJodHRwcyIgY2FzZQogICAgICogaW5zZW5zaXRpdmVseSwgYW5kIE1BWSBhY2NvbW1vZGF0ZSBvdGhlciBzY2hlbWVzIGlmIHJlcXVpcmVkLgogICAgICoKICAgICAqIEFuIGVtcHR5IHNjaGVtZSBpcyBlcXVpdmFsZW50IHRvIHJlbW92aW5nIHRoZSBzY2hlbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc2NoZW1lIFRoZSBzY2hlbWUgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgb3IgdW5zdXBwb3J0ZWQgc2NoZW1lcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTY2hlbWUoc3RyaW5nICRzY2hlbWUpOiBVcmlJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBQYXNzd29yZCBpcyBvcHRpb25hbCwgYnV0IHRoZSB1c2VyIGluZm9ybWF0aW9uIE1VU1QgaW5jbHVkZSB0aGUKICAgICAqIHVzZXI7IGFuIGVtcHR5IHN0cmluZyBmb3IgdGhlIHVzZXIgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB1c2VyCiAgICAgKiBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VyIFRoZSB1c2VyIG5hbWUgdG8gdXNlIGZvciBhdXRob3JpdHkuCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkIFRoZSBwYXNzd29yZCBhc3NvY2lhdGVkIHdpdGggJHVzZXIuCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVc2VySW5mbyhzdHJpbmcgJHVzZXIsID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgaG9zdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBob3N0LgogICAgICoKICAgICAqIEFuIGVtcHR5IGhvc3QgdmFsdWUgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgaG9zdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRob3N0IFRoZSBob3N0bmFtZSB0byB1c2Ugd2l0aCB0aGUgbmV3IGluc3RhbmNlLgogICAgICogQHJldHVybiBzdGF0aWMgQSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgaG9zdG5hbWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhvc3Qoc3RyaW5nICRob3N0KTogVXJpSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHBvcnQuCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIE1VU1QgcmFpc2UgYW4gZXhjZXB0aW9uIGZvciBwb3J0cyBvdXRzaWRlIHRoZQogICAgICogZXN0YWJsaXNoZWQgVENQIGFuZCBVRFAgcG9ydCByYW5nZXMuCiAgICAgKgogICAgICogQSBudWxsIHZhbHVlIHByb3ZpZGVkIGZvciB0aGUgcG9ydCBpcyBlcXVpdmFsZW50IHRvIHJlbW92aW5nIHRoZSBwb3J0CiAgICAgKiBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgJHBvcnQgVGhlIHBvcnQgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZTsgYSBudWxsIHZhbHVlCiAgICAgKiAgICAgcmVtb3ZlcyB0aGUgcG9ydCBpbmZvcm1hdGlvbi4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvciBpbnZhbGlkIHBvcnRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBvcnQoP2ludCAkcG9ydCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBwYXRoLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIElmIHRoZSBwYXRoIGlzIGludGVuZGVkIHRvIGJlIGRvbWFpbi1yZWxhdGl2ZSByYXRoZXIgdGhhbiBwYXRoIHJlbGF0aXZlIHRoZW4KICAgICAqIGl0IG11c3QgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpLiBQYXRocyBub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoICgiLyIpCiAgICAgKiBhcmUgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byBzb21lIGJhc2UgcGF0aCBrbm93biB0byB0aGUgYXBwbGljYXRpb24gb3IKICAgICAqIGNvbnN1bWVyLgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBwYXRoIGNoYXJhY3RlcnMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgZW5zdXJlIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFzIG91dGxpbmVkIGluIGdldFBhdGgoKS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFRoZSBwYXRoIHRvIHVzZSB3aXRoIHRoZSBuZXcgaW5zdGFuY2UuCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBwYXRocy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXRoKHN0cmluZyAkcGF0aCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVlcnkgc3RyaW5nLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHF1ZXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBVc2VycyBjYW4gcHJvdmlkZSBib3RoIGVuY29kZWQgYW5kIGRlY29kZWQgcXVlcnkgY2hhcmFjdGVycy4KICAgICAqIEltcGxlbWVudGF0aW9ucyBlbnN1cmUgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYXMgb3V0bGluZWQgaW4gZ2V0UXVlcnkoKS4KICAgICAqCiAgICAgKiBBbiBlbXB0eSBxdWVyeSBzdHJpbmcgdmFsdWUgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgcXVlcnkgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5IFRoZSBxdWVyeSBzdHJpbmcgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgcXVlcnkgc3RyaW5ncy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeShzdHJpbmcgJHF1ZXJ5KTogVXJpSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBVUkkgZnJhZ21lbnQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgVVJJIGZyYWdtZW50LgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBmcmFnbWVudCBjaGFyYWN0ZXJzLgogICAgICogSW1wbGVtZW50YXRpb25zIGVuc3VyZSB0aGUgY29ycmVjdCBlbmNvZGluZyBhcyBvdXRsaW5lZCBpbiBnZXRGcmFnbWVudCgpLgogICAgICoKICAgICAqIEFuIGVtcHR5IGZyYWdtZW50IHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIGZyYWdtZW50LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZyYWdtZW50IFRoZSBmcmFnbWVudCB0byB1c2Ugd2l0aCB0aGUgbmV3IGluc3RhbmNlLgogICAgICogQHJldHVybiBzdGF0aWMgQSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGZyYWdtZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEZyYWdtZW50KHN0cmluZyAkZnJhZ21lbnQpOiBVcmlJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBhIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogRGVwZW5kaW5nIG9uIHdoaWNoIGNvbXBvbmVudHMgb2YgdGhlIFVSSSBhcmUgcHJlc2VudCwgdGhlIHJlc3VsdGluZwogICAgICogc3RyaW5nIGlzIGVpdGhlciBhIGZ1bGwgVVJJIG9yIHJlbGF0aXZlIHJlZmVyZW5jZSBhY2NvcmRpbmcgdG8gUkZDIDM5ODYsCiAgICAgKiBTZWN0aW9uIDQuMS4gVGhlIG1ldGhvZCBjb25jYXRlbmF0ZXMgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgVVJJLAogICAgICogdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGRlbGltaXRlcnM6CiAgICAgKgogICAgICogLSBJZiBhIHNjaGVtZSBpcyBwcmVzZW50LCBpdCBNVVNUIGJlIHN1ZmZpeGVkIGJ5ICI6Ii4KICAgICAqIC0gSWYgYW4gYXV0aG9yaXR5IGlzIHByZXNlbnQsIGl0IE1VU1QgYmUgcHJlZml4ZWQgYnkgIi8vIi4KICAgICAqIC0gVGhlIHBhdGggY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRob3V0IGRlbGltaXRlcnMuIEJ1dCB0aGVyZSBhcmUgdHdvCiAgICAgKiAgIGNhc2VzIHdoZXJlIHRoZSBwYXRoIGhhcyB0byBiZSBhZGp1c3RlZCB0byBtYWtlIHRoZSBVUkkgcmVmZXJlbmNlCiAgICAgKiAgIHZhbGlkIGFzIFBIUCBkb2VzIG5vdCBhbGxvdyB0byB0aHJvdyBhbiBleGNlcHRpb24gaW4gX190b1N0cmluZygpOgogICAgICogICAgIC0gSWYgdGhlIHBhdGggaXMgcm9vdGxlc3MgYW5kIGFuIGF1dGhvcml0eSBpcyBwcmVzZW50LCB0aGUgcGF0aCBNVVNUCiAgICAgKiAgICAgICBiZSBwcmVmaXhlZCBieSAiLyIuCiAgICAgKiAgICAgLSBJZiB0aGUgcGF0aCBpcyBzdGFydGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgIi8iIGFuZCBubyBhdXRob3JpdHkgaXMKICAgICAqICAgICAgIHByZXNlbnQsIHRoZSBzdGFydGluZyBzbGFzaGVzIE1VU1QgYmUgcmVkdWNlZCB0byBvbmUuCiAgICAgKiAtIElmIGEgcXVlcnkgaXMgcHJlc2VudCwgaXQgTVVTVCBiZSBwcmVmaXhlZCBieSAiPyIuCiAgICAgKiAtIElmIGEgZnJhZ21lbnQgaXMgcHJlc2VudCwgaXQgTVVTVCBiZSBwcmVmaXhlZCBieSAiIyIuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4xCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUuClRoaXMgcHJvamVjdCBhZGhlcmVzIHRvIFtTZW1hbnRpYyBWZXJzaW9uaW5nXShodHRwczovL3NlbXZlci5vcmcvKS4KCiMjIHgueS56CgojIyMgQWRkZWQKCiMjIyBDaGFuZ2VkCgojIyMgRGVwcmVjYXRlZAoKIyMjIFJlbW92ZWQKCiMjIyBGaXhlZAoKIyMgOC45LjA6IE5ldyBmZWF0dXJlcywgYnVnIGZpeGVzIGFuZCBkZXByZWNhdGlvbnMKCiMjIyBBZGRlZAoKLSBgUnVsZVNldDo6cmVtb3ZlTWF0Y2hpbmdSdWxlcygpYCBtZXRob2QKICAoZm9yIHRoZSBpbXBsZW1lbnRpbmcgY2xhc3NlcyBgQXRSdWxlU2V0YCBhbmQgYERlY2xhcmF0aW9uQmxvY2tgKSAoIzEyNDkpCi0gYFJ1bGVTZXQ6OnJlbW92ZUFsbFJ1bGVzKClgIG1ldGhvZAogIChmb3IgdGhlIGltcGxlbWVudGluZyBjbGFzc2VzIGBBdFJ1bGVTZXRgIGFuZCBgRGVjbGFyYXRpb25CbG9ja2ApICgjMTI0OSkKLSBBZGQgSW50ZXJmYWNlIGBDU1NFbGVtZW50YCAoIzEyMzEpCi0gTWV0aG9kcyBgZ2V0TGluZU51bWJlcmAgYW5kIGBnZXRDb2x1bW5OdW1iZXJgIHdoaWNoIHJldHVybiBhIG51bGxhYmxlIGBpbnRgCiAgZm9yIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKICBgQ29tbWVudGAsIGBDU1NMaXN0YCwgYFNvdXJjZUV4Y2VwdGlvbmAsIGBDaGFyc2V0YCwgYENTU05hbWVzcGFjZWAsIGBJbXBvcnRgLAogIGBSdWxlYCwgYERlY2xhcmF0aW9uQmxvY2tgLCBgUnVsZVNldGAsIGBDU1NGdW5jdGlvbmAsIGBWYWx1ZWAgKCMxMjI1LCAjMTI2MykKLSBgUG9zaXRpb25hYmxlYCBpbnRlcmZhY2UgZm9yIENTUyBpdGVtcyB0aGF0IG1heSBoYXZlIGEgcG9zaXRpb24KICAobGluZSBhbmQgcGVyaGFwcyBjb2x1bW4gbnVtYmVyKSBpbiB0aGUgcGFyc2VkIENTUyAoIzEyMjEpCgojIyMgQ2hhbmdlZAoKLSBQYXJhbWV0ZXJzIGZvciBgZ2V0QWxsVmFsdWVzKClgIGFyZSBkZWNvbmZsYXRlZCwgc28gaXQgbm93IHRha2VzIHRocmVlIChhbGwKICBvcHRpb25hbCksIGFsbG93aW5nIGAkZWxlbWVudGAgYW5kIGAkcnVsZVNlYXJjaFBhdHRlcm5gIHRvIGJlIHNwZWNpZmllZAogIHNlcGFyYXRlbHkgKCMxMjQxKQotIEltcGxlbWVudCBgUG9zaXRpb25hYmxlYCBpbiB0aGUgZm9sbG93aW5nIENTUyBpdGVtIGNsYXNzZXM6CiAgYENvbW1lbnRgLCBgQ1NTTGlzdGAsIGBTb3VyY2VFeGNlcHRpb25gLCBgQ2hhcnNldGAsIGBDU1NOYW1lc3BhY2VgLCBgSW1wb3J0YCwKICBgUnVsZWAsIGBEZWNsYXJhdGlvbkJsb2NrYCwgYFJ1bGVTZXRgLCBgQ1NTRnVuY3Rpb25gLCBgVmFsdWVgICgjMTIyNSkKCiMjIyBEZXByZWNhdGVkCgotIFN1cHBvcnQgZm9yIFBIUCA8IDcuMiBpcyBkZXByZWNhdGVkOyB2ZXJzaW9uIDkuMCB3aWxsIHJlcXVpcmUgUEhQIDcuMiBvciBsYXRlcgogICgjMTI2NCkKLSBQYXNzaW5nIGEgYHN0cmluZ2Agb3IgYG51bGxgIHRvIGBSdWxlU2V0OjpyZW1vdmVSdWxlKClgIGlzIGRlcHJlY2F0ZWQKICAoaW1wbGVtZW50aW5nIGNsYXNzZXMgYXJlIGBBdFJ1bGVTZXRgIGFuZCBgRGVjbGFyYXRpb25CbG9ja2ApOwogIHVzZSBgcmVtb3ZlTWF0Y2hpbmdSdWxlcygpYCBvciBgcmVtb3ZlQWxsUnVsZXMoKWAgaW5zdGVhZCAoIzEyNDkpCi0gUGFzc2luZyBhIGBSdWxlYCB0byBgUnVsZVNldDo6Z2V0UnVsZXMoKWAgb3IgYGdldFJ1bGVzQXNzb2MoKWAgaXMgZGVwcmVjYXRlZCwKICBhZmZlY3RpbmcgdGhlIGltcGxlbWVudGluZyBjbGFzc2VzIGBBdFJ1bGVTZXRgIGFuZCBgRGVjbGFyYXRpb25CbG9ja2AKICAoY2FsbCBlLmcuIGBnZXRSdWxlcygkcnVsZS0+Z2V0UnVsZSgpKWAgaW5zdGVhZCkgKCMxMjQ4KQotIFBhc3NpbmcgYSBzdHJpbmcgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGBnZXRBbGxWYWx1ZXMoKWAgaXMgZGVwcmVjYXRlZDsKICB0aGUgc2VhcmNoIHBhdHRlcm4gc2hvdWxkIG5vdyBiZSBwYXNzZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCAoIzEyNDEpCi0gUGFzc2luZyBhIEJvb2xlYW4gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBgZ2V0QWxsVmFsdWVzKClgIGlzIGRlcHJlY2F0ZWQ7CiAgdGhlIGZsYWcgZm9yIHNlYXJjaGluZyBpbiBmdW5jdGlvbiBhcmd1bWVudHMgc2hvdWxkIG5vdyBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgYXJndW1lbnQgKCMxMjQxKQotIGBnZXRMaW5lTm8oKWAgaXMgZGVwcmVjYXRlZCBpbiB0aGVzZSBjbGFzc2VzICh1c2UgYGdldExpbmVOdW1iZXIoKWAgaW5zdGVhZCk6CiAgYENvbW1lbnRgLCBgQ1NTTGlzdGAsIGBTb3VyY2VFeGNlcHRpb25gLCBgQ2hhcnNldGAsIGBDU1NOYW1lc3BhY2VgLCBgSW1wb3J0YCwKICBgUnVsZWAsIGBEZWNsYXJhdGlvbkJsb2NrYCwgYFJ1bGVTZXRgLCBgQ1NTRnVuY3Rpb25gLCBgVmFsdWVgICgjMTIyNSwgIzEyMzMpCi0gYFJ1bGU6OmdldENvbE5vKClgIGlzIGRlcHJlY2F0ZWQgKHVzZSBgZ2V0Q29sdW1uTnVtYmVyKClgIGluc3RlYWQpCiAgKCMxMjI1LCAjMTIzMykKLSBQcm92aWRpbmcgemVybyBhcyB0aGUgbGluZSBudW1iZXIgYXJndW1lbnQgdG8gYFJ1bGU6OnNldFBvc2l0aW9uKClgIGlzCiAgZGVwcmVjYXRlZCAocGFzcyBgbnVsbGAgaW5zdGVhZCBpZiB0aGVyZSBpcyBubyBsaW5lIG51bWJlcikgKCMxMjI1LCAjMTIzMykKCiMjIyBGaXhlZAoKLSBTZXQgbGluZSBudW1iZXIgd2hlbiBgUnVsZVNldDo6YWRkUnVsZSgpYCBjYWxsZWQgd2l0aCBvbmx5IGNvbHVtbiBudW1iZXIgc2V0CiAgKCMxMjY1KQotIEVuc3VyZSBmaXJzdCBydWxlIGFkZGVkIHdpdGggYFJ1bGVTZXQ6OmFkZFJ1bGUoKWAgaGFzIHZhbGlkIHBvc2l0aW9uICgjMTI2MikKCiMjIDguOC4wOiBCdWcgZml4ZXMgYW5kIGRlcHJlY2F0aW9ucwoKIyMjIEFkZGVkCgotIGBPdXRwdXRGb3JtYXRgIHByb3BlcnRpZXMgZm9yIHNwYWNlIGFyb3VuZCBzcGVjaWZpYyBsaXN0IHNlcGFyYXRvcnMgKCM4ODApCgojIyMgQ2hhbmdlZAoKLSBNYXJrIHRoZSBgT3V0cHV0Rm9ybWF0YCBjb25zdHJ1Y3RvciBhcyBgQGludGVybmFsYCAoIzExMzEpCi0gTWFyayBgT3V0cHV0Rm9ybWF0dGVyYCBhcyBgQGludGVybmFsYCAoIzg5NikKLSBNYXJrIGBTZWxlY3Rvcjo6aXNWYWxpZCgpYCBhcyBgQGludGVybmFsYCAoIzEwMzcpCi0gTWFyayBwYXJzaW5nLXJlbGF0ZWQgbWV0aG9kcyBvZiBtb3N0IENTUyBlbGVtZW50cyBhcyBgQGludGVybmFsYCAoIzkwOCkKLSBNYXJrIGBPdXRwdXRGb3JtYXQ6Om5leHRMZXZlbCgpYCBhcyBgQGludGVybmFsYCAoIzkwMSkKLSBNYWtlIGFsbCBub24tcHJpdmF0ZSBwcm9wZXJ0aWVzIGBAaW50ZXJuYWxgICgjODg2KQoKIyMjIERlcHJlY2F0ZWQKCi0gRGVwcmVjYXRlIGV4dGVuZGluZyBgT3V0cHV0Rm9ybWF0YCAoIzExMzEpCi0gRGVwcmVjYXRlIGBPdXRwdXRGb3JtYXQ6OmdldCgpYCBhbmQgYDo6c2V0KClgICgjMTEwNykKLSBEZXByZWNhdGUgc3VwcG9ydCBmb3IgYC13ZWJraXQtY2FsY2AgYW5kIGAtbW96LWNhbGNgICgjMTA4NikKLSBEZXByZWNhdGUgbWFnaWMgbWV0aG9kIGZvcndhcmRpbmcgZnJvbSBgT3V0cHV0Rm9ybWF0YCB0byBgT3V0cHV0Rm9ybWF0dGVyYAogICgjODk0KQotIERlcHJlY2F0ZSBgX190b1N0cmluZygpYCAoIzEwMDYpCi0gRGVwcmVjYXRlIGdyZWVkeSBjYWxjdWxhdGlvbiBvZiBzZWxlY3RvciBzcGVjaWZpY2l0eSAoIzEwMTgpCi0gRGVwcmVjYXRlIHRoZSBJRSBoYWNrIGluIGBSdWxlYCAoIzk5MywgIzEwMDMpCi0gYE91dHB1dEZvcm1hdGAgcHJvcGVydGllcyBmb3Igc3BhY2UgYXJvdW5kIGxpc3Qgc2VwYXJhdG9ycyBhcyBhbiBhcnJheSAoIzg4MCkKLSBEZXByZWNhdGUgYE91dHB1dEZvcm1hdDo6bGV2ZWwoKWAgKCM4NzApCgojIyMgRml4ZWQKCi0gSW5jbHVkZSBjb21tZW50cyBmb3IgYWxsIHJ1bGVzIGluIGRlY2xhcmF0aW9uIGJsb2NrICgjMTE2OSkKLSBSZW5kZXIgcnVsZXMgaW4gbGluZSBhbmQgY29sdW1uIG51bWJlciBvcmRlciAoIzEwNTkpCi0gQ3JlYXRlIGBTaXplYCB3aXRoIGNvcnJlY3QgdHlwZXMgaW4gYGV4cGFuZEJhY2tncm91bmRTaG9ydGhhbmRgICgjODE0KQotIFBhcnNlIGBAZm9udC1mYWNlYCBgc3JjYCBwcm9wZXJ0eSBhcyBjb21tYS1kZWxpbWl0ZWQgbGlzdCAoIzc5NCkKCiMjIDguNy4wOiBBZGQgc3VwcG9ydCBmb3IgUEhQIDguNAoKIyMjIEFkZGVkCgotIEFkZCBzdXBwb3J0IGZvciBQSFAgOC40ICgjNjc1LCAjNzAxLCAjNzQ2LCAjNzUxKQoKIyMjIENoYW5nZWQKCi0gTWFyayBwYXJzaW5nLWludGVybmFsIGNsYXNzZXMgYW5kIG1ldGhvZHMgYXMgYEBpbnRlcm5hbGAgKCM3MTEpCi0gQmxvY2sgaW5zdGFsbGF0aW9ucyBvbiB1bnN1cHBvcnRlZCBoaWdoZXIgUEhQIHZlcnNpb25zICgjNjkxKQoKIyMjIERlcHJlY2F0ZWQKCi0gRGVwcmVjYXRlIHRoZSBleHBhbnNpb24gb2Ygc2hvcnRoYW5kIHByb3BlcnRpZXMgKCM3MTkpCi0gRGVwcmVjYXRlIGBQYXJzZXI6OnNldENoYXJzZXQoKWAgYW5kIGBQYXJzZXI6OmdldENoYXJzZXQoKWAgKCM3MDMpCgojIyMgRml4ZWQKCi0gRml4IHR5cGUgZXJyb3JzIGluIFBIUCBzdHJpY3QgbW9kZSAoIzY5NSkKCiMjIDguNi4wCgojIyMgQWRkZWQKCi0gU3VwcG9ydCBhcml0aG1ldGljIG9wZXJhdG9ycyBpbiBDU1MgZnVuY3Rpb24gYXJndW1lbnRzICgjNjA3KQotIEFkZCBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYW4gaXRlbSBpbiBhIENTUyBsaXN0ICgjNTQ1KQotIEFkZCBzdXBwb3J0IGZvciB0aGUgYGR2aGAsIGBsdmhgIGFuZCBgc3ZoYCBsZW5ndGggdW5pdHMgKCM0MTUpCgojIyMgQ2hhbmdlZAoKLSBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIFZhbHVlOjpwYXJzZVZhbHVlIHdpdGggbWFueSBkZWxpbWl0ZXJzIGJ5IHJlZmFjdG9yaW5nCiAgdG8gcmVtb3ZlIGBhcnJheV9zZWFyY2goKWAgKCM0MTMpCgojIyA4LjUuMgoKIyMjIENoYW5nZWQKCi0gTWFyayBhbGwgY2xhc3MgY29uc3RhbnRzIGFzIGBAaW50ZXJuYWxgICgjNTAwKQoKIyMjIEZpeGVkCgotIEZpeCB1bmRlZmluZWQgbG9jYWwgdmFyaWFibGUgaW4gYENhbGNGdW5jdGlvbjo6cGFyc2UoKWAgKCM1OTMpCgojIyA4LjUuMQoKIyMjIEZpeGVkCgotIEZpeCBQSFAgbm90aWNlIGNhdXNlZCBieSBwYXJzaW5nIGludmFsaWQgY29sb3IgdmFsdWVzIGhhdmluZyBsZXNzIHRoYW4KICA2IGNoYXJhY3RlcnMgKCM0ODUpCi0gRml4IChyZWdyZXNzaW9uKSBmYWlsdXJlIHRvIHBhcnNlIGF0LXJ1bGVzIHdpdGggc3RyaWN0IHBhcnNpbmcgKCM0NTYpCgojIyA4LjUuMAoKIyMjIEFkZGVkCgotIEFkZCBhIG1ldGhvZCB0byBnZXQgYW4gaW1wb3J0J3MgbWVkaWEgcXVlcmllcyAoIzM4NCkKLSBBZGQgbW9yZSB1bml0IHRlc3RzICgjMzgxLCAjMzgyKQoKIyMjIEZpeGVkCgotIFJldGFpbiBDU1NMaXN0IGFuZCBSdWxlIGNvbW1lbnRzIHdoZW4gcmVuZGVyaW5nIENTUyAoIzM1MSkKLSBSZXBsYWNlIGludmFsaWQgYHR1cm5zYCB1bml0IHdpdGggYHR1cm5gICgjMzUwKQotIEFsc28gYWxsb3cgc3RyaW5nIHZhbHVlcyBmb3IgcnVsZXMgKCMzNDgpCi0gRml4IGludmFsaWQgY2FsYyBwYXJzaW5nICgjMTY5KQotIEhhbmRsZSBzY2llbnRpZmljIG5vdGF0aW9uIHdoZW4gcGFyc2luZyBzaXplcyAoIzE3OSkKLSBGaXggUEhQIDguMSBjb21wYXRpYmlsaXR5IGluIGBQYXJzZXJTdGF0ZTo6c3Ryc3BsaXQoKWAgKCMzNDQpCgojIyA4LjQuMAoKIyMjIEZlYXR1cmVzCgoqIFN1cHBvcnQgZm9yIFBIUCA4LngKKiBQSFBEb2MgYW5ub3RhdGlvbnMKKiBBbGxvdyB1c2FnZSBvZiBDU1MgdmFyaWFibGVzIGluc2lkZSBjb2xvciBmdW5jdGlvbnMgKGJ5IHBhcnNpbmcgdGhlbSBhcwogIHJlZ3VsYXIgZnVuY3Rpb25zKQoqIFVzZSBQU1ItMTIgY29kZSBzdHlsZQoqICpObyBkZXByZWNhdGlvbnMqCgojIyMgQnVnZml4ZXMKCiogSW1wcm92ZWQgaGFuZGxpbmcgb2Ygd2hpdGVzcGFjZSBpbiBgY2FsYygpYAoqIEZpeCBwYXJzaW5nIHVuaXRzIHdob3NlIHByZWZpeCBpcyBhbHNvIGEgdmFsaWQgdW5pdCwgbGlrZSBgdm1pbmAKKiBBbGxvdyBwYXNzaW5nIGFuIG9iamVjdCB0byBgQ1NTTGlzdCNyZXBsYWNlYAoqIEZpeCBQSFAgNy4zIHdhcm5pbmdzCiogQ29ycmVjdGx5IHBhcnNlIGtleWZyYW1lcyB3aXRoIGAlYAoqIERvbuKAmXQgY29udmVydCBsYXJnZSBudW1iZXJzIHRvIHNjaWVudGlmaWMgbm90YXRpb24KKiBBbGxvdyBhIGZpbGUgdG8gZW5kIGFmdGVyIGFuIGBAaW1wb3J0YAoqIFByZXNlcnZlIGNhc2Ugb2YgQ1NTIHZhcmlhYmxlcyBhcyBzcGVjY2VkCiogQWxsb3cgaWRlbnRpZmllcnMgdG8gdXNlIGVzY2FwZXMgdGhlIHNhbWUgd2F5IGFzIHN0cmluZ3MKKiBObyBsb25nZXIgdXNlIGBldmFsYCBmb3IgdGhlIGNvbXBhcmlzb24gaW4gYGdldFNlbGVjdG9yc0J5U3BlY2lmaWNpdHlgLCBpbgogIGNhc2UgaXQgZ2V0cyBwYXNzZWQgdW50cnVzdGVkIGlucHV0IChDVkUtMjAyMC0xMzc1NikuIEFsc28gZml4ZWQgaW4gOC4zLjEsCiAgOC4yLjEsIDguMS4xLCA4LjAuMSwgNy4wLjQsIDYuMC4yLCA1LjIuMSwgNS4xLjMsIDUuMC45LCA0LjAuMSwgMy4wLjEsIDIuMC4xLAogIDEuMC4xLgoqIFByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCB3aGVuIHBhcnNpbmcgaW52YWxpZCBncmlkIGxpbmUgbmFtZXMKKiBSZW1vdmUgaW52YWxpZCB1bml0IGB2bWAKKiBSZXRhaW4gcnVsZSBvcmRlciBhZnRlciBleHBhbmRpbmcgc2hvcnRoYW5kcwoKIyMjIEJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcwoKKiBQSFAg4omlIDUuNiBpcyBub3cgcmVxdWlyZWQKKiBISFZNIGNvbXBhdGliaWxpdHkgdGFyZ2V0IGRyb3BwZWQKCiMjIDguMy4wICgyMDE5LTAyLTIyKQoKKiBSZWZhY3RvciBwYXJzaW5nIGxvZ2ljIHRvIG1vc3RseSByZXNpZGUgaW4gdGhlIGNsYXNzIGZpbGVzIHdob3NlIGRhdGEKICBzdHJ1Y3R1cmUgaXMgdG8gYmUgcGFyc2VkICh0aGlzIHNob3VsZCBldmVudHVhbGx5IGFsbG93IHVzIHRvIHVuaXQtdGVzdAogIHNwZWNpZmljIHBhcnRzIG9mIHRoZSBwYXJzaW5nIGxvZ2ljIGluZGl2aWR1YWxseSkuCiogRml4IGVycm9yIGluIHBhcnNpbmcgYGNhbGNgIGV4cGVzc2lvbnMgd2hlbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBhIG5lZ2F0aXZlCiAgbnVtYmVyLCB0aGFua3MgdG8gQHJheGJnLgoqIFN1cHBvcnQgcGFyc2luZyBDU1M0IGNvbG9ycyBpbiBoZXggbm90YXRpb24gd2l0aCBhbHBoYSB2YWx1ZXMsIHRoYW5rcyB0bwogIEByYXhiZy4KKiBTd2FsbG93IG1vcmUgZXJyb3JzIGluIGxlbmllbnQgbW9kZSwgdGhhbmtzIHRvIEByYXhiZy4KKiBBbGxvdyBzcGVjaWZ5aW5nIGFyYml0cmFyeSBzdHJpbmdzIHRvIG91dHB1dCBiZWZvcmUgYW5kIGFmdGVyIGRlY2xhcmF0aW9uCiAgYmxvY2tzLCB0aGFua3MgdG8gQHdlc3RvbnJ1dGVyLgoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDguMi4wICgyMDE4LTA3LTEzKQoKKiBTdXBwb3J0IHBhcnNpbmcgYGNhbGMoKWAsIHRoYW5rcyB0byBAcmF4YmcuCiogU3VwcG9ydCBwYXJzaW5nIGdyaWQtbGluZXMsIGFnYWluIHRoYW5rcyB0byBAcmF4YmcuCiogU3VwcG9ydCBwYXJzaW5nIGxlZ2FjeSBJRSBmaWx0ZXJzIChgcHJvZ2lkOmApIGluIGxlbmllbnQgbW9kZSwgdGhhbmtzIHRvCiAgQEZNQ29yegoqIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBwYXJzaW5nIGxhcmdlIGZpbGVzLCBhZ2FpbiB0aGFua3MgdG8gQEZNQ29yegoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDguMS4wICgyMDE2LTA3LTE5KQoKKiBDb21tZW50cyBhcmUgbm8gbG9uZ2VyIHNpbGVudGx5IGlnbm9yZWQgYnV0IHN0b3JlZCB3aXRoIHRoZSBvYmplY3Qgd2l0aCB3aGljaAogIHRoZXkgYXBwZWFyIChubyByZW5kZXIgc3VwcG9ydCwgdGhvdWdoKS4gVGhhbmtzIHRvIEBGTUNvcnouCiogVGhlIElFIGhhY2tzIHVzaW5nIGBcMGAgYW5kIGBcOWAgY2FuIG5vdyBiZSBwYXJzZWQgKGFuZCByZW5kZXJlZCkgaW4gbGVuaWVudAogIG1vZGUuIFRoYW5rcyAoYWdhaW4pIHRvIEBGTUNvcnouCiogTWVkaWEgcXVlcmllcyB3aXRoIG9yIHdpdGhvdXQgc3BhY2VzIGJlZm9yZSB0aGUgcXVlcnkgYXJlIHBhcnNlZC4gU3RpbGwgbm8KICAqcmVhbCogcGFyc2luZyBzdXBwb3J0LCB0aG91Z2guIFNvcnJ54oCmCiogUEhQVW5pdCBpcyBub3cgbGlzdGVkIGFzIGEgZGV2LWRlcGVuZGVuY3kgaW4gY29tcG9zZXIuanNvbi4KKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyA4LjAuMCAoMjAxNi0wNi0zMCkKCiogU3RvcmUgc291cmNlIENTUyBsaW5lIG51bWJlcnMgaW4gdG9rZW5zIGFuZCBwYXJzaW5nIGV4Y2VwdGlvbnMuCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyBCYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMKCiogVW5yZWNvdmVyYWJsZSBwYXJzZXIgZXJyb3JzIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0eXBlCiAgYFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcU291cmNlRXhjZXB0aW9uYCBpbnN0ZWFkIG9mIGBcRXhjZXB0aW9uYC4KCiMjIDcuMC4zICgyMDE2LTA0LTI3KQoKKiBGaXhlZCBwYXJzaW5nIGVtcHR5IENTUyB3aGVuIG11bHRpYnl0ZSBpcyBvZmYKKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyA3LjAuMiAoMjAxNi0wMi0xMSkKCiogMTUwIHRpbWUgcGVyZm9ybWFuY2UgYm9vc3QgdGhhbmtzCiAgdG8gQFtvc3NpbmtpbmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vc3NpbmtpbmUpCiogKk5vIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcyoKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMgNy4wLjEgKDIwMTUtMTItMjUpCgoqIE5vIG1vcmUgc3VwcHJlc3NlZCBgRV9OT1RJQ0VgCiogKk5vIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcyoKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMgNy4wLjAgKDIwMTUtMDgtMjQpCgoqIENvbXBhdGliaWxpdHkgd2l0aCBQSFAgNy4gV2VsbCB0aW1lZCwgZWg/CiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyBCYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMKCiogVGhlIGBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxTdHJpbmdgIGNsYXNzIGhhcyBiZWVuIHJlbmFtZWQgdG8KICBgU2FiYmVyd29ybVxDU1NcVmFsdWVcQ1NTU3RyaW5nYC4KCiMjIDYuMC4xICgyMDE1LTA4LTI0KQoKKiBSZW1vdmUgc29tZSBkZWNsYXJhdGlvbnMgaW4gaW50ZXJmYWNlcyBpbmNvbXBhdGlibGUgd2l0aCBQSFAgNS4zICg8IDUuMy45KQoqICpObyBkZXByZWNhdGlvbnMqCgojIyA2LjAuMCAoMjAxNC0wNy0wMykKCiogRm9ybWF0IG91dHB1dCB1c2luZyBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQKKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoKIyMjIERlcHJlY2F0aW9ucwoKKiBUaGUgcGFyc2UoKSBtZXRob2QgcmVwbGFjZXMgX190b1N0cmluZyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IChpbnN0YW5jZSBvZgogIHRoZSBPdXRwdXRGb3JtYXQgY2xhc3MpCgojIyA1LjIuMCAoMjAxNC0wNi0zMCkKCiogU3VwcG9ydCByZW1vdmluZyBhIHNlbGVjdG9yIGZyb20gYSBkZWNsYXJhdGlvbiBibG9jayB1c2luZwogIGAkb0Jsb2NrLT5yZW1vdmVTZWxlY3RvcigkbVNlbGVjdG9yKWAKKiBJbnRyb2R1Y2UgYSBzcGVjaWFsaXplZCBleGNlcHRpb24gKFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcT3VwdXRFeGNlcHRpb24pIGZvcgogIGV4Y2VwdGlvbnMgZHVyaW5nIG91dHB1dCByZW5kZXJpbmcKCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyMgQmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzCgoqIE91dHB1dHRpbmcgYSBkZWNsYXJhdGlvbiBibG9jayB0aGF0IGhhcyBubyBzZWxlY3RvcnMgdGhyb3dzIGFuIE91cHV0RXhjZXB0aW9uCiAgaW5zdGVhZCBvZiBvdXRwdXR0aW5nIGFuIGludmFsaWQgYCB74oCmfWAgaW50byB0aGUgQ1NTIGRvY3VtZW50LgoKIyMgNS4xLjIgKDIwMTMtMTAtMzApCgoqIFJlbW92ZSB0aGUgdXNlIG9mIGNvbnN1bWVVbnRpbCBpbiBjb21tZW50IHBhcnNpbmcuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8KICBwYXJzZSBjb21tZW50cyBzdWNoIGFzIGAvKiogUGVyZmVjdGx5IHZhbGlkICoqL2AKKiBBZGQgZnIgcmVsYXRpdmUgc2l6ZSB1bml0CiogRml4IHNvbWUgaXNzdWVzIHdpdGggSEhWTQoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDUuMS4xICgyMDEzLTEwLTI4KQoKKiBVcGRhdGVkIENIQU5HRUxPRy5tZCB0byByZWZsZWN0IGNoYW5nZXMgc2luY2UgNS4wLjQKKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyA1LjEuMCAoMjAxMy0xMC0yNCkKCiogUGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzIGJ5IE1pY2hhZWwgTSBTbHVzYXJ6CiogTW9yZSByZXNjdWUgZW50cnkgcG9pbnRzIGZvciBsZW5pZW50IHBhcnNpbmcgKHVuZXhwZWN0ZWQgdG9rZW5zIGJldHdlZW4KICBkZWNsYXJhdGlvbiBibG9ja3MgYW5kIHVuY2xvc2VkIGNvbW1lbnRzKQoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDUuMC44ICgyMDEzLTA4LTE1KQoKKiBNYWtlIGRlZmF1bHQgc2V0dGluZ3PigJkgbXVsdGlieXRlIHBhcnNpbmcgb3B0aW9uIGRlcGVuZGVudCBvbiB3aGV0aGVyIG9yIG5vdAogIHRoZSBtYnN0cmluZyBleHRlbnNpb24gaXMgYWN0dWFsbHkgaW5zdGFsbGVkLgoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDUuMC43ICgyMDEzLTA4LTA0KQoKKiBGaXggYnJva2VuIGRlY2ltYWwgcG9pbnQgb3V0cHV0IG9wdGltaXphdGlvbgoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDUuMC42ICgyMDEzLTA1LTMxKQoKKiBGaXggYnJva2VuIHVuaXQgdGVzdAoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDUuMC41ICgyMDEzLTA0LTE3KQoKKiBJbml0aWFsIHN1cHBvcnQgZm9yIGxlbmllbnQgcGFyc2luZyAoc2V0dGluZyB0aGlzIHBhcnNlciBvcHRpb24gd2lsbCBjYXRjaAogIHNvbWUgZXhjZXB0aW9ucyBpbnRlcm5hbGx5IGFuZCByZWNvdmVyIHRoZSBwYXJzZXLigJlzIHN0YXRlIGFzIG5lYXRseSBhcwogIHBvc3NpYmxlKS4KKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyA1LjAuNCAoMjAxMy0wMy0yMSkKCiogRG9u4oCZdCBvdXRwdXQgZmxvYXRzIHdpdGggbG9jYWxlLWF3YXJlIHNlcGFyYXRvciBjaGFycwoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDUuMC4zICgyMDEzLTAzLTIxKQoKKiBNb3JlIHNpemUgdW5pdHMgcmVjb2duaXplZAoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDUuMC4yICgyMDEzLTAzLTIxKQoKKiBDSEFOR0VMT0cubWQgZmlsZSBhZGRlZCB0byBkaXN0cmlidXRpb24KKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyA1LjAuMSAoMjAxMy0wMy0yMCkKCiogSW50ZXJuYWwgY2xlYW51cAoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDUuMC4wICgyMDEzLTAzLTIwKQoKKiBDb3JyZWN0bHkgcGFyc2UgYWxsIGtub3duIENTUyAzIHVuaXRzIChpbmNsdWRpbmcgSHogYW5kIGtIeikuCiogT3V0cHV0IFJHQiBjb2xvcnMgaW4gc2hvcnQgKCNhYWEgb3IgI2FiYWJhYikgbm90YXRpb24KKiBCZSBjYXNlLWluc2Vuc2l0aXZlIHdoZW4gcGFyc2luZyBpZGVudGlmaWVycy4KKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMjIEJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcwoKKiBgU2FiYmVyd29ybVxDU1NcVmFsdWVcQ29sb3Jg4oCZcyBgX190b1N0cmluZ2AgbWV0aG9kIG92ZXJyaWRlcyBgQ1NTTGlzdGDigJlzIHRvCiAgbWF5YmUgcmV0dXJuIHNvbWV0aGluZyBvdGhlciB0aGFuIGB0eXBlKHZhbHVlLCDigKYpYCAoc2VlIGFib3ZlKS4KCiMjIDQuMC4wICgyMDEzLTAzLTE5KQoKKiBTdXBwb3J0IGZvciBtb3JlIEAtcnVsZXMKKiBHZW5lcmljIGludGVyZmFjZSBgU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQXRSdWxlYCwgaW1wbGVtZW50ZWQgYnkgYWxsIEAtcnVsZQogIGNsYXNzZXMKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMjIEJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcwoKKiBgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxBdFJ1bGVgIHJlbmFtZWQgdG8gYFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcQXRSdWxlU2V0YAoqIGBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XE1lZGlhUXVlcnlgIHJlbmFtZWQgdG8KICBgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxDU1NMaXN0XEF0UnVsZUJsb2NrTGlzdGAgd2l0aCBkaWZmZXJpbmcgc2VtYW50aWNzIGFuZAogIEFQSSAod2hpY2ggYWxzbyB3b3JrcyBmb3Igb3RoZXIgYmxvY2stbGlzdC1iYXNlZCBALXJ1bGVzIGxpa2UgYEBzdXBwb3J0c2ApLgoKIyMgMy4wLjAgKDIwMTMtMDMtMDYpCgoqIFN1cHBvcnQgZm9yIGxlbmllbnQgcGFyc2luZyAob24gYnkgZGVmYXVsdCkKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMjIEJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcwoKKiBBbGwgcHJvcGVydGllcyAobGlrZSB3aGV0aGVyIG9yIG5vdCB0byB1c2UgYG1iX2AtZnVuY3Rpb25zLCB3aGljaCBkZWZhdWx0CiAgY2hhcnNldCB0byB1c2UgYW5kIOKAkyBuZXcg4oCTIHdoZXRoZXIgb3Igbm90IHRvIGJlIGZvcmdpdmluZyB3aGVuIHBhcnNpbmcpIGFyZQogIG5vdyBlbmNhcHN1bGF0ZWQgaW4gYW4gaW5zdGFuY2Ugb2YgYFNhYmJlcndvcm1cQ1NTXFNldHRpbmdzYCB3aGljaCBjYW4gYmUKICBwYXNzZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBgU2FiYmVyd29ybVxDU1NcUGFyc2VyLT5fX2NvbnN0cnVjdCgpYC4KKiBTcGVjaWZ5aW5nIGEgY2hhcnNldCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCiAgYFNhYmJlcndvcm1cQ1NTXFBhcnNlci0+X19jb25zdHJ1Y3QoKWAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gVXNlCiAgYFNhYmJlcndvcm1cQ1NTXFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aERlZmF1bHRDaGFyc2V0KCdzb21lLWNoYXJzZXQnKWAKICBpbnN0ZWFkLgoqIFNldHRpbmcgYFNhYmJlcndvcm1cQ1NTXFBhcnNlci0+YlVzZU1iRnVuY3Rpb25zYCBoYXMgbm8gZWZmZWN0LiBVc2UKICBgU2FiYmVyd29ybVxDU1NcU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTXVsdGlieXRlU3VwcG9ydCh0cnVlL2ZhbHNlKWAgaW5zdGVhZC4KKiBgU2FiYmVyd29ybVxDU1NcUGFyc2VyLT5wYXJzZSgpYCBtYXkgdGhyb3cgYQogIGBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbmAgd2hlbiBpbiBzdHJpY3QgcGFyc2luZyBtb2RlLgoKIyMgMi4wLjAgKDIwMTMtMDEtMjkpCgoqIEFsbG93IG11bHRpcGxlIHJ1bGVzIG9mIHRoZSBzYW1lIHR5cGUgcGVyIHJ1bGUgc2V0CgojIyMgQmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzCgoqIGBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0LT5nZXRSdWxlcygpYCByZXR1cm5zIGFuIGluZGV4LWJhc2VkIGFycmF5IGluc3RlYWQgb2YKICBhbiBhc3NvY2lhdGl2ZSBhcnJheS4gVXNlIGBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0LT5nZXRSdWxlc0Fzc29jKClgICh3aGljaAogIGVsaW1pbmF0ZXMgZHVwbGljYXRlIHJ1bGVzIGFuZCBsZXRzIHRoZSBsYXRlciBydWxlIG9mIHRoZSBzYW1lIG5hbWUgd2luKS4KKiBgU2FiYmVyd29ybVxDU1NcUnVsZVNldC0+cmVtb3ZlUnVsZSgpYCB3b3JrcyBhcyBpdCBkaWQgYmVmb3JlIGV4Y2VwdCB3aGVuCiAgcGFzc2VkIGFuIGluc3RhbmNlIG9mIGBTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGVgLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkIG9ubHkKICByZW1vdmUgdGhlIGV4YWN0IHJ1bGUgZ2l2ZW4gaW5zdGVhZCBvZiBhbGwgdGhlIHJ1bGVzIG9mIHRoZSBzYW1lIHR5cGUuIFRvIGdldAogIHRoZSBvbGQgYmVoYXZpb3VyLCB1c2UgYFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXQtPnJlbW92ZVJ1bGUoJG9SdWxlLT5nZXRSdWxlKClgOwoKIyMgMS4wCgpJbml0aWFsIHJlbGVhc2Ugb2YgYSBzdGFibGUgcHVibGljIEFQSS4KCiMjIDAuOQoKTGFzdCB2ZXJzaW9uIG5vdCB0byB1c2UgUFNSLTAgcHJvamVjdCBvcmdhbml6YXRpb24gc2VtYW50aWNzLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic2FiYmVyd29ybS9waHAtY3NzLXBhcnNlciIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJQYXJzZXIgZm9yIENTUyBGaWxlcyB3cml0dGVuIGluIFBIUCIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgInBhcnNlciIsCiAgICAgICAgImNzcyIsCiAgICAgICAgInN0eWxlc2hlZXQiCiAgICBdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vd3d3LnNhYmJlcndvcm0uY29tL2Jsb2cvMjAxMC82LzEwL3BocC1jc3MtcGFyc2VyIiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlJhcGhhZWwgU2Nod2Vpa2VydCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiT2xpdmVyIEtsZWUiLAogICAgICAgICAgICAiZW1haWwiOiAiZ2l0aHViQG9saXZlcmtsZWUuZGUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkpha2UgSG90c29uIiwKICAgICAgICAgICAgImVtYWlsIjogImpha2UuZ2l0aHViQHF6ZGVzaWduLmNvLnVrIgogICAgICAgIH0KICAgIF0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl41LjYuMjAgfHwgXjcuMC4wIHx8IH44LjAuMCB8fCB+OC4xLjAgfHwgfjguMi4wIHx8IH44LjMuMCB8fCB+OC40LjAiLAogICAgICAgICJleHQtaWNvbnYiOiAiKiIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICI1LjcuMjcgfHwgNi41LjE0IHx8IDcuNS4yMCB8fCA4LjUuNDEiLAogICAgICAgICJyYXdyL2Nyb3NzLWRhdGEtcHJvdmlkZXJzIjogIl4yLjAuMCIKICAgIH0sCiAgICAic3VnZ2VzdCI6IHsKICAgICAgICAiZXh0LW1ic3RyaW5nIjogImZvciBwYXJzaW5nIFVURi04IENTUyIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiU2FiYmVyd29ybVxcQ1NTXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJTYWJiZXJ3b3JtXFxDU1NcXFRlc3RzXFwiOiAidGVzdHMvIgogICAgICAgIH0KICAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYWluIjogIjkuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAxMSBSYXBoYWVsIFNjaHdlaWtlcnQsIGh0dHBzOi8vd3d3LnNhYmJlcndvcm0uY29tLwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBQSFAgQ1NTIFBhcnNlcgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc2FiYmVyd29ybS9QSFAtQ1NTLVBhcnNlci93b3JrZmxvd3MvQ0kvYmFkZ2Uuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2dpdGh1Yi5jb20vc2FiYmVyd29ybS9QSFAtQ1NTLVBhcnNlci9hY3Rpb25zLykKCkEgUGFyc2VyIGZvciBDU1MgRmlsZXMgd3JpdHRlbiBpbiBQSFAuIEFsbG93cyBleHRyYWN0aW9uIG9mIENTUyBmaWxlcyBpbnRvIGEgZGF0YSBzdHJ1Y3R1cmUsIG1hbmlwdWxhdGlvbiBvZiBzYWlkIHN0cnVjdHVyZSBhbmQgb3V0cHV0IGFzIChvcHRpbWl6ZWQpIENTUy4KCiMjIFVzYWdlCgojIyMgSW5zdGFsbGF0aW9uIHVzaW5nIENvbXBvc2VyCgpgYGBiYXNoCmNvbXBvc2VyIHJlcXVpcmUgc2FiYmVyd29ybS9waHAtY3NzLXBhcnNlcgpgYGAKCiMjIyBFeHRyYWN0aW9uCgpUbyB1c2UgdGhlIENTUyBQYXJzZXIsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZS4gVGhlIGNvbnN0cnVjdG9yIHRha2VzIHRoZSBmb2xsb3dpbmcgZm9ybToKCmBgYHBocApuZXcgXFNhYmJlcndvcm1cQ1NTXFBhcnNlcigkY3NzKTsKYGBgCgpUbyByZWFkIGEgZmlsZSwgZm9yIGV4YW1wbGUsIHlvdeKAmWQgZG8gdGhlIGZvbGxvd2luZzoKCmBgYHBocAokcGFyc2VyID0gbmV3IFxTYWJiZXJ3b3JtXENTU1xQYXJzZXIoZmlsZV9nZXRfY29udGVudHMoJ3NvbWVmaWxlLmNzcycpKTsKJGNzc0RvY3VtZW50ID0gJHBhcnNlci0+cGFyc2UoKTsKYGBgCgpUaGUgcmVzdWx0aW5nIENTUyBkb2N1bWVudCBzdHJ1Y3R1cmUgY2FuIGJlIG1hbmlwdWxhdGVkIHByaW9yIHRvIGJlaW5nIG91dHB1dC4KCiMjIyBPcHRpb25zCgojIyMjIENoYXJzZXQKClRoZSBjaGFyc2V0IG9wdGlvbiB3aWxsIG9ubHkgYmUgdXNlZCBpZiB0aGUgQ1NTIGZpbGUgZG9lcyBub3QgY29udGFpbiBhbiBgQGNoYXJzZXRgIGRlY2xhcmF0aW9uLiBVVEYtOCBpcyB0aGUgZGVmYXVsdCwgc28geW91IHdvbuKAmXQgaGF2ZSB0byBjcmVhdGUgYSBzZXR0aW5ncyBvYmplY3QgYXQgYWxsIGlmIHlvdSBkb27igJl0IGludGVuZCB0byBjaGFuZ2UgdGhhdC4KCmBgYHBocAokc2V0dGluZ3MgPSBcU2FiYmVyd29ybVxDU1NcU2V0dGluZ3M6OmNyZWF0ZSgpCiAgICAtPndpdGhEZWZhdWx0Q2hhcnNldCgnd2luZG93cy0xMjUyJyk7CiRwYXJzZXIgPSBuZXcgXFNhYmJlcndvcm1cQ1NTXFBhcnNlcigkY3NzLCAkc2V0dGluZ3MpOwpgYGAKCiMjIyMgU3RyaWN0IHBhcnNpbmcKClRvIGhhdmUgdGhlIHBhcnNlciB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBlbmNvdW50ZXJpbmcgaW52YWxpZC91bmtub3duIGNvbnN0cnVjdHMgKGFzIG9wcG9zZWQgdG8gdHJ5aW5nIHRvIGlnbm9yZSB0aGVtIGFuZCBjYXJyeSBvbiBwYXJzaW5nKSwgc3VwcGx5IGEgdGh1c2x5IGNvbmZpZ3VyZWQgYFxTYWJiZXJ3b3JtXENTU1xTZXR0aW5nc2Agb2JqZWN0OgoKYGBgcGhwCiRwYXJzZXIgPSBuZXcgXFNhYmJlcndvcm1cQ1NTXFBhcnNlcigKICAgIGZpbGVfZ2V0X2NvbnRlbnRzKCdzb21lZmlsZS5jc3MnKSwKICAgIFxTYWJiZXJ3b3JtXENTU1xTZXR0aW5nczo6Y3JlYXRlKCktPmJlU3RyaWN0KCkKKTsKYGBgCgpOb3RlIHRoYXQgdGhpcyB3aWxsIGFsc28gZGlzYWJsZSBhIHdvcmthcm91bmQgZm9yIHBhcnNpbmcgdGhlIHVucXVvdGVkIHZhcmlhbnQgb2YgdGhlIGxlZ2FjeSBJRS1zcGVjaWZpYyBgZmlsdGVyYCBydWxlLgoKIyMjIyBEaXNhYmxlIG11bHRpYnl0ZSBmdW5jdGlvbnMKClRvIGFjaGlldmUgZmFzdGVyIHBhcnNpbmcsIHlvdSBjYW4gY2hvb3NlIHRvIGhhdmUgUEhQLUNTUy1QYXJzZXIgdXNlIHJlZ3VsYXIgc3RyaW5nIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGBtYl8qYCBmdW5jdGlvbnMuIFRoaXMgc2hvdWxkIHdvcmsgZmluZSBpbiBtb3N0IGNhc2VzLCBldmVuIGZvciBVVEYtOCBmaWxlcywgYXMgYWxsIHRoZSBtdWx0aWJ5dGUgY2hhcmFjdGVycyBhcmUgaW4gc3RyaW5nIGxpdGVyYWxzLiBTdGlsbCBpdOKAmXMgbm90IHJlY29tbWVuZGVkIHVzaW5nIHRoaXMgd2l0aCBpbnB1dCB5b3UgaGF2ZSBubyBjb250cm9sIG92ZXIgYXMgaXTigJlzIG5vdCB0aG9yb3VnaGx5IGNvdmVyZWQgYnkgdGVzdCBjYXNlcy4KCmBgYHBocAokc2V0dGluZ3MgPSBcU2FiYmVyd29ybVxDU1NcU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTXVsdGlieXRlU3VwcG9ydChmYWxzZSk7CiRwYXJzZXIgPSBuZXcgXFNhYmJlcndvcm1cQ1NTXFBhcnNlcigkY3NzLCAkc2V0dGluZ3MpOwpgYGAKCiMjIyBNYW5pcHVsYXRpb24KClRoZSByZXN1bHRpbmcgZGF0YSBzdHJ1Y3R1cmUgY29uc2lzdHMgbWFpbmx5IG9mIGZpdmUgYmFzaWMgdHlwZXM6IGBDU1NMaXN0YCwgYFJ1bGVTZXRgLCBgUnVsZWAsIGBTZWxlY3RvcmAgYW5kIGBWYWx1ZWAuIFRoZXJlIGFyZSB0d28gYWRkaXRpb25hbCB0eXBlcyB1c2VkOiBgSW1wb3J0YCBhbmQgYENoYXJzZXRgLCB3aGljaCB5b3Ugd29u4oCZdCB1c2Ugb2Z0ZW4uCgojIyMjIENTU0xpc3QKCmBDU1NMaXN0YCByZXByZXNlbnRzIGEgZ2VuZXJpYyBDU1MgY29udGFpbmVyLCBtb3N0IGxpa2VseSBjb250YWluaW5nIGRlY2xhcmF0aW9uIGJsb2NrcyAocnVsZSBzZXRzIHdpdGggYSBzZWxlY3RvciksIGJ1dCBpdCBtYXkgYWxzbyBjb250YWluIGF0LXJ1bGVzLCBjaGFyc2V0IGRlY2xhcmF0aW9ucywgZXRjLgoKVG8gYWNjZXNzIHRoZSBpdGVtcyBzdG9yZWQgaW4gYSBgQ1NTTGlzdGAg4oCTIGxpa2UgdGhlIGRvY3VtZW50IHlvdSBnb3QgYmFjayB3aGVuIGNhbGxpbmcgYCRwYXJzZXItPnBhcnNlKClgIOKAkywgdXNlIGBnZXRDb250ZW50cygpYCwgdGhlbiBpdGVyYXRlIG92ZXIgdGhhdCBjb2xsZWN0aW9uIGFuZCB1c2UgYGluc3RhbmNlb2ZgIHRvIGNoZWNrIHdoZXRoZXIgeW914oCZcmUgZGVhbGluZyB3aXRoIGFub3RoZXIgYENTU0xpc3RgLCBhIGBSdWxlU2V0YCwgYSBgSW1wb3J0YCBvciBhIGBDaGFyc2V0YC4KClRvIGFwcGVuZCBhIG5ldyBpdGVtIChzZWxlY3RvciwgbWVkaWEgcXVlcnksIGV0Yy4pIHRvIGFuIGV4aXN0aW5nIGBDU1NMaXN0YCwgY29uc3RydWN0IGl0IHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhpcyBjbGFzcyBhbmQgdXNlIHRoZSBgYXBwZW5kKCRvSXRlbSlgIG1ldGhvZC4KCiMjIyMgUnVsZVNldAoKYFJ1bGVTZXRgIGlzIGEgY29udGFpbmVyIGZvciBpbmRpdmlkdWFsIHJ1bGVzLiBUaGUgbW9zdCBjb21tb24gZm9ybSBvZiBhIHJ1bGUgc2V0IGlzIG9uZSBjb25zdHJhaW5lZCBieSBhIHNlbGVjdG9yLiBUaGUgZm9sbG93aW5nIGNvbmNyZXRlIHN1YnR5cGVzIGV4aXN0OgoKKiBgQXRSdWxlU2V0YCDigJMgZm9yIGdlbmVyaWMgYXQtcnVsZXMgZm9yIGdlbmVyaWMgYXQtcnVsZXMgd2hpY2ggYXJlIG5vdCBjb3ZlcmVkIGJ5IHNwZWNpZmljIGNsYXNzZXMsIGkuZS4sIG5vdCBgQGltcG9ydGAsIGBAY2hhcnNldGAgb3IgYEBtZWRpYWAuIEEgY29tbW9uIGV4YW1wbGUgZm9yIHRoaXMgaXMgYEBmb250LWZhY2VgLgoqIGBEZWNsYXJhdGlvbkJsb2NrYCDigJMgYSBgUnVsZVNldGAgY29uc3RyYWluZWQgYnkgYSBgU2VsZWN0b3JgOyBjb250YWlucyBhbiBhcnJheSBvZiBzZWxlY3RvciBvYmplY3RzIChjb21tYS1zZXBhcmF0ZWQgaW4gdGhlIENTUykgYXMgd2VsbCBhcyB0aGUgcnVsZXMgdG8gYmUgYXBwbGllZCB0byB0aGUgbWF0Y2hpbmcgZWxlbWVudHMuCgpOb3RlOiBBIGBDU1NMaXN0YCBjYW4gY29udGFpbiBvdGhlciBgQ1NTTGlzdGBzIChhbmQgYEltcG9ydGBzIGFzIHdlbGwgYXMgYSBgQ2hhcnNldGApLCB3aGlsZSBhIGBSdWxlU2V0YCBjYW4gb25seSBjb250YWluIGBSdWxlYHMuCgpJZiB5b3Ugd2FudCB0byBtYW5pcHVsYXRlIGEgYFJ1bGVTZXRgLCB1c2UgdGhlIG1ldGhvZHMgYGFkZFJ1bGUoUnVsZSAkcnVsZSlgLCBgZ2V0UnVsZXMoKWAgYW5kIGByZW1vdmVSdWxlKCRydWxlKWAgKHdoaWNoIGFjY2VwdHMgZWl0aGVyIGEgYFJ1bGVgIG9yIGEgcnVsZSBuYW1lOyBvcHRpb25hbGx5IHN1ZmZpeGVkIGJ5IGEgZGFzaCB0byByZW1vdmUgYWxsIHJlbGF0ZWQgcnVsZXMpLgoKIyMjIyBSdWxlCgpgUnVsZWBzIGp1c3QgaGF2ZSBhIHN0cmluZyBrZXkgKHRoZSBydWxlKSBhbmQgYSBgVmFsdWVgLgoKIyMjIyBWYWx1ZQoKYFZhbHVlYCBpcyBhbiBhYnN0cmFjdCBjbGFzcyB0aGF0IG9ubHkgZGVmaW5lcyB0aGUgYHJlbmRlcmAgbWV0aG9kLiBUaGUgY29uY3JldGUgc3ViY2xhc3NlcyBmb3IgYXRvbWljIHZhbHVlIHR5cGVzIGFyZToKCiogYFNpemVgIOKAkyBjb25zaXN0cyBvZiBhIG51bWVyaWMgYHNpemVgIHZhbHVlIGFuZCBhIHVuaXQuCiogYENvbG9yYCDigJMgY29sb3JzIGNhbiBiZSBpbnB1dCBpbiB0aGUgZm9ybSAjcnJnZ2JiLCAjcmdiIG9yIHNjaGVtYSh2YWwxLCB2YWwyLCDigKYpIGJ1dCBhcmUgYWx3YXlzIHN0b3JlZCBhcyBhbiBhcnJheSBvZiAoJ3MnID0+IHZhbDEsICdjJyA9PiB2YWwyLCAnaCcgPT4gdmFsMywg4oCmKSBhbmQgb3V0cHV0IGluIHRoZSBzZWNvbmQgZm9ybS4KKiBgQ1NTU3RyaW5nYCDigJMgdGhpcyBpcyBqdXN0IGEgd3JhcHBlciBmb3IgcXVvdGVkIHN0cmluZ3MgdG8gZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIGtleXdvcmRzOyBhbHdheXMgb3V0cHV0IHdpdGggZG91YmxlIHF1b3Rlcy4KKiBgVVJMYCDigJMgVVJMcyBpbiBDU1M7IGFsd2F5cyBvdXRwdXQgaW4gYFVSTCgiIilgIG5vdGF0aW9uLgoKVGhlcmUgaXMgYW5vdGhlciBhYnN0cmFjdCBzdWJjbGFzcyBvZiBgVmFsdWVgLCBgVmFsdWVMaXN0YDogQSBgVmFsdWVMaXN0YCByZXByZXNlbnRzIGEgbGlzdHMgb2YgYFZhbHVlYHMsIHNlcGFyYXRlZCBieSBzb21lIHNlcGFyYXRpb24gY2hhcmFjdGVyIChtb3N0bHkgYCxgLCB3aGl0ZXNwYWNlLCBvciBgL2ApLgoKVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBgVmFsdWVMaXN0YHM6CgoqIGBSdWxlVmFsdWVMaXN0YCDigJMgVGhlIGRlZmF1bHQgdHlwZSwgdXNlZCB0byByZXByZXNlbnQgYWxsIG11bHRpdmFsdWVkIHJ1bGVzIGxpa2UgYGZvbnQ6IGJvbGQgMTJweC8zIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjtgICh3aGVyZSB0aGUgdmFsdWUgd291bGQgYmUgYSB3aGl0ZXNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBwcmltaXRpdmUgdmFsdWUgYGJvbGRgLCBhIHNsYXNoLXNlcGFyYXRlZCBsaXN0IGFuZCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0KS4KKiBgQ1NTRnVuY3Rpb25gIOKAkyBBIHNwZWNpYWwga2luZCBvZiB2YWx1ZSB0aGF0IGFsc28gY29udGFpbnMgYSBmdW5jdGlvbiBuYW1lIGFuZCB3aGVyZSB0aGUgdmFsdWVzIGFyZSB0aGUgZnVuY3Rpb27igJlzIGFyZ3VtZW50cy4gQWxzbyBoYW5kbGVzIGVxdWFscy1zaWduLXNlcGFyYXRlZCBhcmd1bWVudCBsaXN0cyBsaWtlIGBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9OTApO2AuCgojIyMjIENvbnZlbmllbmNlIG1ldGhvZHMKClRoZXJlIGFyZSBhIGZldyBjb252ZW5pZW5jZSBtZXRob2RzIG9uIGBEb2N1bWVudGAgdG8gZWFzZSBmaW5kaW5nLCBtYW5pcHVsYXRpbmcgYW5kIGRlbGV0aW5nIHJ1bGVzOgoKKiBgZ2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKWAg4oCTIGRvZXMgd2hhdCBpdCBzYXlzOyBubyBtYXR0ZXIgaG93IGRlZXBseSBuZXN0ZWQgdGhlIHNlbGVjdG9ycyBhcmUuIEFsaWFzZWQgYXMgYGdldEFsbFNlbGVjdG9ycygpYC4KKiBgZ2V0QWxsUnVsZVNldHMoKWAg4oCTIGRvZXMgd2hhdCBpdCBzYXlzOyBubyBtYXR0ZXIgaG93IGRlZXBseSBuZXN0ZWQgdGhlIHJ1bGUgc2V0cyBhcmUuCiogYGdldEFsbFZhbHVlcygpYCDigJMgZmluZHMgYWxsIGBWYWx1ZWAgb2JqZWN0cyBpbnNpZGUgYFJ1bGVgcy4KCiMjIFRvLURvCgoqIE1vcmUgY29udmVuaWVuY2UgbWV0aG9kcyAobGlrZSBgc2VsZWN0b3JzV2l0aEVsZW1lbnQoJHNJZC9DbGFzcy9UYWdOYW1lKWAsIGBhdHRyaWJ1dGVzT2ZUeXBlKCR0eXBlKWAsIGByZW1vdmVBdHRyaWJ1dGVzT2ZUeXBlKCR0eXBlKWApCiogUmVhbCBtdWx0aWJ5dGUgc3VwcG9ydC4gQ3VycmVudGx5LCBvbmx5IG11bHRpYnl0ZSBjaGFyc2V0cyB3aG9zZSBmaXJzdCAyNTUgY29kZSBwb2ludHMgdGFrZSB1cCBvbmx5IG9uZSBieXRlIGFuZCBhcmUgaWRlbnRpY2FsIHdpdGggQVNDSUkgYXJlIHN1cHBvcnRlZCAoeWVzLCBVVEYtOCBmaXRzIHRoaXMgZGVzY3JpcHRpb24pLgoqIE5hbWVkIGNvbG9yIHN1cHBvcnQgKHVzaW5nIGBDb2xvcmAgaW5zdGVhZCBvZiBhbiBhbm9ueW1vdXMgc3RyaW5nIGxpdGVyYWwpCgojIyBVc2UgY2FzZXMKCiMjIyBVc2UgYFBhcnNlcmAgdG8gcHJlcGVuZCBhbiBJRCB0byBhbGwgc2VsZWN0b3JzCgpgYGBwaHAKJG15SWQgPSAiI215X2lkIjsKJHBhcnNlciA9IG5ldyBcU2FiYmVyd29ybVxDU1NcUGFyc2VyKCRjc3MpOwokY3NzRG9jdW1lbnQgPSAkcGFyc2VyLT5wYXJzZSgpOwpmb3JlYWNoICgkY3NzRG9jdW1lbnQtPmdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCkgYXMgJGJsb2NrKSB7CiAgICBmb3JlYWNoICgkYmxvY2stPmdldFNlbGVjdG9ycygpIGFzICRzZWxlY3RvcikgewogICAgICAgIC8vIExvb3Agb3ZlciBhbGwgc2VsZWN0b3IgcGFydHMgKHRoZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncyBpbiBhCiAgICAgICAgLy8gc2VsZWN0b3IpIGFuZCBwcmVwZW5kIHRoZSBJRC4KICAgICAgICAkc2VsZWN0b3ItPnNldFNlbGVjdG9yKCRteUlkLicgJy4kc2VsZWN0b3ItPmdldFNlbGVjdG9yKCkpOwogICAgfQp9CmBgYAoKIyMjIFNocmluayBhbGwgYWJzb2x1dGUgc2l6ZXMgdG8gaGFsZgoKYGBgcGhwCiRwYXJzZXIgPSBuZXcgXFNhYmJlcndvcm1cQ1NTXFBhcnNlcigkY3NzKTsKJGNzc0RvY3VtZW50ID0gJHBhcnNlci0+cGFyc2UoKTsKZm9yZWFjaCAoJGNzc0RvY3VtZW50LT5nZXRBbGxWYWx1ZXMoKSBhcyAkdmFsdWUpIHsKICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBDU1NTaXplICYmICEkdmFsdWUtPmlzUmVsYXRpdmUoKSkgewogICAgICAgICR2YWx1ZS0+c2V0U2l6ZSgkdmFsdWUtPmdldFNpemUoKSAvIDIpOwogICAgfQp9CmBgYAoKIyMjIFJlbW92ZSB1bndhbnRlZCBydWxlcwoKYGBgcGhwCiRwYXJzZXIgPSBuZXcgXFNhYmJlcndvcm1cQ1NTXFBhcnNlcigkY3NzKTsKJGNzc0RvY3VtZW50ID0gJHBhcnNlci0+cGFyc2UoKTsKZm9yZWFjaCgkY3NzRG9jdW1lbnQtPmdldEFsbFJ1bGVTZXRzKCkgYXMgJG9SdWxlU2V0KSB7CiAgICAvLyBOb3RlIHRoYXQgdGhlIGFkZGVkIGRhc2ggd2lsbCBtYWtlIHRoaXMgcmVtb3ZlIGFsbCBydWxlcyBzdGFydGluZyB3aXRoCiAgICAvLyBgZm9udC1gIChsaWtlIGBmb250LXNpemVgLCBgZm9udC13ZWlnaHRgLCBldGMuKSBhcyB3ZWxsIGFzIGEgcG90ZW50aWFsCiAgICAvLyBgZm9udGAgcnVsZS4KICAgICRvUnVsZVNldC0+cmVtb3ZlUnVsZSgnZm9udC0nKTsgCiAgICAkb1J1bGVTZXQtPnJlbW92ZVJ1bGUoJ2N1cnNvcicpOwp9CmBgYAoKIyMjIE91dHB1dAoKVG8gb3V0cHV0IHRoZSBlbnRpcmUgQ1NTIGRvY3VtZW50IGludG8gYSB2YXJpYWJsZSwganVzdCB1c2UgYC0+cmVuZGVyKClgOgoKYGBgcGhwCiRwYXJzZXIgPSBuZXcgXFNhYmJlcndvcm1cQ1NTXFBhcnNlcihmaWxlX2dldF9jb250ZW50cygnc29tZWZpbGUuY3NzJykpOwokY3NzRG9jdW1lbnQgPSAkcGFyc2VyLT5wYXJzZSgpOwpwcmludCAkY3NzRG9jdW1lbnQtPnJlbmRlcigpOwpgYGAKCklmIHlvdSB3YW50IHRvIGZvcm1hdCB0aGUgb3V0cHV0LCBwYXNzIGFuIGluc3RhbmNlIG9mIHR5cGUgYFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXRgOgoKYGBgcGhwCiRmb3JtYXQgPSBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0OjpjcmVhdGUoKQogICAgLT5pbmRlbnRXaXRoU3BhY2VzKDQpLT5zZXRTcGFjZUJldHdlZW5SdWxlcygiXG4iKTsKcHJpbnQgJGNzc0RvY3VtZW50LT5yZW5kZXIoJGZvcm1hdCk7CmBgYAoKT3IgdXNlIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBmb3JtYXRzOgoKYGBgcGhwCnByaW50ICRjc3NEb2N1bWVudC0+cmVuZGVyKFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDo6Y3JlYXRlUHJldHR5KCkpOwpwcmludCAkY3NzRG9jdW1lbnQtPnJlbmRlcihTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ6OmNyZWF0ZUNvbXBhY3QoKSk7CmBgYAoKVG8gc2VlIHdoYXQgeW91IGNhbiBkbyB3aXRoIG91dHB1dCBmb3JtYXR0aW5nLCBsb29rIGF0IHRoZSB0ZXN0cyBpbiBgdGVzdHMvT3V0cHV0Rm9ybWF0VGVzdC5waHBgLgoKIyMgRXhhbXBsZXMKCiMjIyBFeGFtcGxlIDEgKEF0LVJ1bGVzKQoKIyMjIyBJbnB1dAoKYGBgY3NzCkBjaGFyc2V0ICJ1dGYtOCI7CgpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogIkNyYXNzUm9vdHMiOwogIHNyYzogdXJsKCIuLi9tZWRpYS9jci50dGYiKTsKfQoKaHRtbCwgYm9keSB7CiAgICBmb250LXNpemU6IDEuNmVtOwp9CgpAa2V5ZnJhbWVzIG15bW92ZSB7CiAgICBmcm9tIHsgdG9wOiAwcHg7IH0KICAgIHRvIHsgdG9wOiAyMDBweDsgfQp9CgpgYGAKCjxkZXRhaWxzPgogIDxzdW1tYXJ5PjxiPlN0cnVjdHVyZSAoPGNvZGU+dmFyX2R1bXAoKTwvY29kZT4pPC9iPjwvc3VtbWFyeT4KCmBgYHBocApjbGFzcyBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XERvY3VtZW50IzQgKDIpIHsKICBwcm90ZWN0ZWQgJGFDb250ZW50cyA9PgogIGFycmF5KDQpIHsKICAgIFswXSA9PgogICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQ2hhcnNldCM2ICgyKSB7CiAgICAgIHByaXZhdGUgJHNDaGFyc2V0ID0+CiAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENTU1N0cmluZyM1ICgyKSB7CiAgICAgICAgcHJpdmF0ZSAkc1N0cmluZyA9PgogICAgICAgIHN0cmluZyg1KSAidXRmLTgiCiAgICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgICAgaW50KDEpCiAgICAgIH0KICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgIGludCgxKQogICAgfQogICAgWzFdID0+CiAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XEF0UnVsZVNldCM3ICg0KSB7CiAgICAgIHByaXZhdGUgJHNUeXBlID0+CiAgICAgIHN0cmluZyg5KSAiZm9udC1mYWNlIgogICAgICBwcml2YXRlICRzQXJncyA9PgogICAgICBzdHJpbmcoMCkgIiIKICAgICAgcHJpdmF0ZSAkYVJ1bGVzID0+CiAgICAgIGFycmF5KDIpIHsKICAgICAgICAnZm9udC1mYW1pbHknID0+CiAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgWzBdID0+CiAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUjOCAoNCkgewogICAgICAgICAgICBwcml2YXRlICRzUnVsZSA9PgogICAgICAgICAgICBzdHJpbmcoMTEpICJmb250LWZhbWlseSIKICAgICAgICAgICAgcHJpdmF0ZSAkbVZhbHVlID0+CiAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENTU1N0cmluZyM5ICgyKSB7CiAgICAgICAgICAgICAgcHJpdmF0ZSAkc1N0cmluZyA9PgogICAgICAgICAgICAgIHN0cmluZygxMCkgIkNyYXNzUm9vdHMiCiAgICAgICAgICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgICAgICAgICAgaW50KDQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJpdmF0ZSAkYklzSW1wb3J0YW50ID0+CiAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICBpbnQoNCkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJ3NyYycgPT4KICAgICAgICBhcnJheSgxKSB7CiAgICAgICAgICBbMF0gPT4KICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSMxMCAoNCkgewogICAgICAgICAgICBwcml2YXRlICRzUnVsZSA9PgogICAgICAgICAgICBzdHJpbmcoMykgInNyYyIKICAgICAgICAgICAgcHJpdmF0ZSAkbVZhbHVlID0+CiAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFVSTCMxMSAoMikgewogICAgICAgICAgICAgIHByaXZhdGUgJG9VUkwgPT4KICAgICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxDU1NTdHJpbmcjMTIgKDIpIHsKICAgICAgICAgICAgICAgIHByaXZhdGUgJHNTdHJpbmcgPT4KICAgICAgICAgICAgICAgIHN0cmluZygxNSkgIi4uL21lZGlhL2NyLnR0ZiIKICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgaW50KDUpCiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgIGludCg1KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaXZhdGUgJGJJc0ltcG9ydGFudCA9PgogICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgaW50KDUpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICBpbnQoMykKICAgIH0KICAgIFsyXSA9PgogICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrIzEzICgzKSB7CiAgICAgIHByaXZhdGUgJGFTZWxlY3RvcnMgPT4KICAgICAgYXJyYXkoMikgewogICAgICAgIFswXSA9PgogICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yIzE0ICgyKSB7CiAgICAgICAgICBwcml2YXRlICRzU2VsZWN0b3IgPT4KICAgICAgICAgIHN0cmluZyg0KSAiaHRtbCIKICAgICAgICAgIHByaXZhdGUgJGlTcGVjaWZpY2l0eSA9PgogICAgICAgICAgTlVMTAogICAgICAgIH0KICAgICAgICBbMV0gPT4KICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3RvciMxNSAoMikgewogICAgICAgICAgcHJpdmF0ZSAkc1NlbGVjdG9yID0+CiAgICAgICAgICBzdHJpbmcoNCkgImJvZHkiCiAgICAgICAgICBwcml2YXRlICRpU3BlY2lmaWNpdHkgPT4KICAgICAgICAgIE5VTEwKICAgICAgICB9CiAgICAgIH0KICAgICAgcHJpdmF0ZSAkYVJ1bGVzID0+CiAgICAgIGFycmF5KDEpIHsKICAgICAgICAnZm9udC1zaXplJyA9PgogICAgICAgIGFycmF5KDEpIHsKICAgICAgICAgIFswXSA9PgogICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUnVsZVxSdWxlIzE2ICg0KSB7CiAgICAgICAgICAgIHByaXZhdGUgJHNSdWxlID0+CiAgICAgICAgICAgIHN0cmluZyg5KSAiZm9udC1zaXplIgogICAgICAgICAgICBwcml2YXRlICRtVmFsdWUgPT4KICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcU2l6ZSMxNyAoNCkgewogICAgICAgICAgICAgIHByaXZhdGUgJGZTaXplID0+CiAgICAgICAgICAgICAgZG91YmxlKDEuNikKICAgICAgICAgICAgICBwcml2YXRlICRzVW5pdCA9PgogICAgICAgICAgICAgIHN0cmluZygyKSAiZW0iCiAgICAgICAgICAgICAgcHJpdmF0ZSAkYklzQ29sb3JDb21wb25lbnQgPT4KICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgIGludCg5KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaXZhdGUgJGJJc0ltcG9ydGFudCA9PgogICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgaW50KDkpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICBpbnQoOCkKICAgIH0KICAgIFszXSA9PgogICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcQ1NTTGlzdFxLZXlGcmFtZSMxOCAoNCkgewogICAgICBwcml2YXRlICR2ZW5kb3JLZXlGcmFtZSA9PgogICAgICBzdHJpbmcoOSkgImtleWZyYW1lcyIKICAgICAgcHJpdmF0ZSAkYW5pbWF0aW9uTmFtZSA9PgogICAgICBzdHJpbmcoNikgIm15bW92ZSIKICAgICAgcHJvdGVjdGVkICRhQ29udGVudHMgPT4KICAgICAgYXJyYXkoMikgewogICAgICAgIFswXSA9PgogICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jayMxOSAoMykgewogICAgICAgICAgcHJpdmF0ZSAkYVNlbGVjdG9ycyA9PgogICAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgICBbMF0gPT4KICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcU2VsZWN0b3IjMjAgKDIpIHsKICAgICAgICAgICAgICBwcml2YXRlICRzU2VsZWN0b3IgPT4KICAgICAgICAgICAgICBzdHJpbmcoNCkgImZyb20iCiAgICAgICAgICAgICAgcHJpdmF0ZSAkaVNwZWNpZmljaXR5ID0+CiAgICAgICAgICAgICAgTlVMTAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBwcml2YXRlICRhUnVsZXMgPT4KICAgICAgICAgIGFycmF5KDEpIHsKICAgICAgICAgICAgJ3RvcCcgPT4KICAgICAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgICAgIFswXSA9PgogICAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSMyMSAoNCkgewogICAgICAgICAgICAgICAgcHJpdmF0ZSAkc1J1bGUgPT4KICAgICAgICAgICAgICAgIHN0cmluZygzKSAidG9wIgogICAgICAgICAgICAgICAgcHJpdmF0ZSAkbVZhbHVlID0+CiAgICAgICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxTaXplIzIyICg0KSB7CiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGZTaXplID0+CiAgICAgICAgICAgICAgICAgIGRvdWJsZSgwKQogICAgICAgICAgICAgICAgICBwcml2YXRlICRzVW5pdCA9PgogICAgICAgICAgICAgICAgICBzdHJpbmcoMikgInB4IgogICAgICAgICAgICAgICAgICBwcml2YXRlICRiSXNDb2xvckNvbXBvbmVudCA9PgogICAgICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICAgICAgaW50KDEzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHJpdmF0ZSAkYklzSW1wb3J0YW50ID0+CiAgICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgICAgICAgICAgICBpbnQoMTMpCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgIGludCgxMykKICAgICAgICB9CiAgICAgICAgWzFdID0+CiAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrIzIzICgzKSB7CiAgICAgICAgICBwcml2YXRlICRhU2VsZWN0b3JzID0+CiAgICAgICAgICBhcnJheSgxKSB7CiAgICAgICAgICAgIFswXSA9PgogICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3RvciMyNCAoMikgewogICAgICAgICAgICAgIHByaXZhdGUgJHNTZWxlY3RvciA9PgogICAgICAgICAgICAgIHN0cmluZygyKSAidG8iCiAgICAgICAgICAgICAgcHJpdmF0ZSAkaVNwZWNpZmljaXR5ID0+CiAgICAgICAgICAgICAgTlVMTAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBwcml2YXRlICRhUnVsZXMgPT4KICAgICAgICAgIGFycmF5KDEpIHsKICAgICAgICAgICAgJ3RvcCcgPT4KICAgICAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgICAgIFswXSA9PgogICAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSMyNSAoNCkgewogICAgICAgICAgICAgICAgcHJpdmF0ZSAkc1J1bGUgPT4KICAgICAgICAgICAgICAgIHN0cmluZygzKSAidG9wIgogICAgICAgICAgICAgICAgcHJpdmF0ZSAkbVZhbHVlID0+CiAgICAgICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxTaXplIzI2ICg0KSB7CiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGZTaXplID0+CiAgICAgICAgICAgICAgICAgIGRvdWJsZSgyMDApCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJHNVbml0ID0+CiAgICAgICAgICAgICAgICAgIHN0cmluZygyKSAicHgiCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGJJc0NvbG9yQ29tcG9uZW50ID0+CiAgICAgICAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgICBpbnQoMTQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwcml2YXRlICRiSXNJbXBvcnRhbnQgPT4KICAgICAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICAgIGludCgxNCkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgaW50KDE0KQogICAgICAgIH0KICAgICAgfQogICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgaW50KDEyKQogICAgfQogIH0KICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICBpbnQoMSkKfQoKYGBgCjwvZGV0YWlscz4KCiMjIyMgT3V0cHV0IChgcmVuZGVyKClgKQoKYGBgY3NzCkBjaGFyc2V0ICJ1dGYtOCI7CkBmb250LWZhY2Uge2ZvbnQtZmFtaWx5OiAiQ3Jhc3NSb290cyI7c3JjOiB1cmwoIi4uL21lZGlhL2NyLnR0ZiIpO30KaHRtbCwgYm9keSB7Zm9udC1zaXplOiAxLjZlbTt9CkBrZXlmcmFtZXMgbXltb3ZlIHtmcm9tIHt0b3A6IDBweDt9IHRvIHt0b3A6IDIwMHB4O319CmBgYAoKIyMjIEV4YW1wbGUgMiAoVmFsdWVzKQoKIyMjIyBJbnB1dAoKYGBgY3NzCiNoZWFkZXIgewogICAgbWFyZ2luOiAxMHB4IDJlbSAxY20gMiU7CiAgICBmb250LWZhbWlseTogVmVyZGFuYSwgSGVsdmV0aWNhLCAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsKICAgIGNvbG9yOiByZWQgIWltcG9ydGFudDsKfQoKYGBgCgo8ZGV0YWlscz4KICA8c3VtbWFyeT48Yj5TdHJ1Y3R1cmUgKDxjb2RlPnZhcl9kdW1wKCk8L2NvZGU+KTwvYj48L3N1bW1hcnk+CgpgYGBwaHAKY2xhc3MgU2FiYmVyd29ybVxDU1NcQ1NTTGlzdFxEb2N1bWVudCM0ICgyKSB7CiAgcHJvdGVjdGVkICRhQ29udGVudHMgPT4KICBhcnJheSgxKSB7CiAgICBbMF0gPT4KICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jayM1ICgzKSB7CiAgICAgIHByaXZhdGUgJGFTZWxlY3RvcnMgPT4KICAgICAgYXJyYXkoMSkgewogICAgICAgIFswXSA9PgogICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yIzYgKDIpIHsKICAgICAgICAgIHByaXZhdGUgJHNTZWxlY3RvciA9PgogICAgICAgICAgc3RyaW5nKDcpICIjaGVhZGVyIgogICAgICAgICAgcHJpdmF0ZSAkaVNwZWNpZmljaXR5ID0+CiAgICAgICAgICBOVUxMCiAgICAgICAgfQogICAgICB9CiAgICAgIHByaXZhdGUgJGFSdWxlcyA9PgogICAgICBhcnJheSgzKSB7CiAgICAgICAgJ21hcmdpbicgPT4KICAgICAgICBhcnJheSgxKSB7CiAgICAgICAgICBbMF0gPT4KICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSM3ICg0KSB7CiAgICAgICAgICAgIHByaXZhdGUgJHNSdWxlID0+CiAgICAgICAgICAgIHN0cmluZyg2KSAibWFyZ2luIgogICAgICAgICAgICBwcml2YXRlICRtVmFsdWUgPT4KICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcUnVsZVZhbHVlTGlzdCMxMiAoMykgewogICAgICAgICAgICAgIHByb3RlY3RlZCAkYUNvbXBvbmVudHMgPT4KICAgICAgICAgICAgICBhcnJheSg0KSB7CiAgICAgICAgICAgICAgICBbMF0gPT4KICAgICAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFNpemUjOCAoNCkgewogICAgICAgICAgICAgICAgICBwcml2YXRlICRmU2l6ZSA9PgogICAgICAgICAgICAgICAgICBkb3VibGUoMTApCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJHNVbml0ID0+CiAgICAgICAgICAgICAgICAgIHN0cmluZygyKSAicHgiCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGJJc0NvbG9yQ29tcG9uZW50ID0+CiAgICAgICAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgICBpbnQoMikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFsxXSA9PgogICAgICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcU2l6ZSM5ICg0KSB7CiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGZTaXplID0+CiAgICAgICAgICAgICAgICAgIGRvdWJsZSgyKQogICAgICAgICAgICAgICAgICBwcml2YXRlICRzVW5pdCA9PgogICAgICAgICAgICAgICAgICBzdHJpbmcoMikgImVtIgogICAgICAgICAgICAgICAgICBwcml2YXRlICRiSXNDb2xvckNvbXBvbmVudCA9PgogICAgICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICAgICAgaW50KDIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBbMl0gPT4KICAgICAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFNpemUjMTAgKDQpIHsKICAgICAgICAgICAgICAgICAgcHJpdmF0ZSAkZlNpemUgPT4KICAgICAgICAgICAgICAgICAgZG91YmxlKDEpCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJHNVbml0ID0+CiAgICAgICAgICAgICAgICAgIHN0cmluZygyKSAiY20iCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGJJc0NvbG9yQ29tcG9uZW50ID0+CiAgICAgICAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgICBpbnQoMikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFszXSA9PgogICAgICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcU2l6ZSMxMSAoNCkgewogICAgICAgICAgICAgICAgICBwcml2YXRlICRmU2l6ZSA9PgogICAgICAgICAgICAgICAgICBkb3VibGUoMikKICAgICAgICAgICAgICAgICAgcHJpdmF0ZSAkc1VuaXQgPT4KICAgICAgICAgICAgICAgICAgc3RyaW5nKDEpICIlIgogICAgICAgICAgICAgICAgICBwcml2YXRlICRiSXNDb2xvckNvbXBvbmVudCA9PgogICAgICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICAgICAgaW50KDIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHByb3RlY3RlZCAkc1NlcGFyYXRvciA9PgogICAgICAgICAgICAgIHN0cmluZygxKSAiICIKICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICBpbnQoMikKICAgICAgICAgICAgfQogICAgICAgICAgICBwcml2YXRlICRiSXNJbXBvcnRhbnQgPT4KICAgICAgICAgICAgYm9vbChmYWxzZSkKICAgICAgICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgICAgICAgIGludCgyKQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAnZm9udC1mYW1pbHknID0+CiAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgWzBdID0+CiAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUjMTMgKDQpIHsKICAgICAgICAgICAgcHJpdmF0ZSAkc1J1bGUgPT4KICAgICAgICAgICAgc3RyaW5nKDExKSAiZm9udC1mYW1pbHkiCiAgICAgICAgICAgIHByaXZhdGUgJG1WYWx1ZSA9PgogICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxSdWxlVmFsdWVMaXN0IzE1ICgzKSB7CiAgICAgICAgICAgICAgcHJvdGVjdGVkICRhQ29tcG9uZW50cyA9PgogICAgICAgICAgICAgIGFycmF5KDQpIHsKICAgICAgICAgICAgICAgIFswXSA9PgogICAgICAgICAgICAgICAgc3RyaW5nKDcpICJWZXJkYW5hIgogICAgICAgICAgICAgICAgWzFdID0+CiAgICAgICAgICAgICAgICBzdHJpbmcoOSkgIkhlbHZldGljYSIKICAgICAgICAgICAgICAgIFsyXSA9PgogICAgICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcQ1NTU3RyaW5nIzE0ICgyKSB7CiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJHNTdHJpbmcgPT4KICAgICAgICAgICAgICAgICAgc3RyaW5nKDkpICJHaWxsIFNhbnMiCiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgICBpbnQoMykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFszXSA9PgogICAgICAgICAgICAgICAgc3RyaW5nKDEwKSAic2Fucy1zZXJpZiIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcHJvdGVjdGVkICRzU2VwYXJhdG9yID0+CiAgICAgICAgICAgICAgc3RyaW5nKDEpICIsIgogICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgIGludCgzKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaXZhdGUgJGJJc0ltcG9ydGFudCA9PgogICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgaW50KDMpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICdjb2xvcicgPT4KICAgICAgICBhcnJheSgxKSB7CiAgICAgICAgICBbMF0gPT4KICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSMxNiAoNCkgewogICAgICAgICAgICBwcml2YXRlICRzUnVsZSA9PgogICAgICAgICAgICBzdHJpbmcoNSkgImNvbG9yIgogICAgICAgICAgICBwcml2YXRlICRtVmFsdWUgPT4KICAgICAgICAgICAgc3RyaW5nKDMpICJyZWQiCiAgICAgICAgICAgIHByaXZhdGUgJGJJc0ltcG9ydGFudCA9PgogICAgICAgICAgICBib29sKHRydWUpCiAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICBpbnQoNCkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgIGludCgxKQogICAgfQogIH0KICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICBpbnQoMSkKfQoKYGBgCjwvZGV0YWlscz4KCiMjIyMgT3V0cHV0IChgcmVuZGVyKClgKQoKYGBgY3NzCiNoZWFkZXIge21hcmdpbjogMTBweCAyZW0gMWNtIDIlO2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEhlbHZldGljYSwiR2lsbCBTYW5zIixzYW5zLXNlcmlmO2NvbG9yOiByZWQgIWltcG9ydGFudDt9CmBgYAoKIyMgQ29udHJpYnV0b3JzL1RoYW5rcyB0bwoKKiBbb2xpdmVya2xlZV0oaHR0cHM6Ly9naXRodWIuY29tL29saXZlcmtsZWUpIGZvciBsb3RzIG9mIHJlZmFjdG9yaW5ncywgY29kZSBtb2Rlcm5pemF0aW9ucyBhbmQgQ0kgaW50ZWdyYXRpb25zCiogW3JheGJnXShodHRwczovL2dpdGh1Yi5jb20vcmF4YmcpIGZvciBjb250cmlidXRpb25zIHRvIHBhcnNlIGBjYWxjYCwgZ3JpZCBsaW5lcywgYW5kIHZhcmlvdXMgYnVnZml4ZXMuCiogW3dlc3RvbnJ1dGVyXShodHRwczovL2dpdGh1Yi5jb20vd2VzdG9ucnV0ZXIpIGZvciBidWdmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoqIFtGTUNvcnpdKGh0dHBzOi8vZ2l0aHViLmNvbS9GTUNvcnopIGZvciBtYW55IHBhdGNoZXMgYW5kIHN1Z2dlc3Rpb25zLCBmb3IgYmVpbmcgYWJsZSB0byBwYXJzZSBjb21tZW50cyBhbmQgSUUgaGFja3MgKGluIGxlbmllbnQgbW9kZSkuCiogW0x1bGxhYm90XShodHRwczovL2dpdGh1Yi5jb20vTHVsbGFib3QpIGZvciBhIHBhdGNoIHRoYXQgYWxsb3dzIHRvIGtub3cgdGhlIGxpbmUgbnVtYmVyIGZvciBlYWNoIHBhcnNlZCB0b2tlbi4KKiBbanUxaXVzXShodHRwczovL2dpdGh1Yi5jb20vanUxaXVzKSBmb3IgdGhlIHNwZWNpZmljaXR5IHBhcnNpbmcgY29kZSBhbmQgdGhlIGFiaWxpdHkgdG8gZXhwYW5kL2NvbXBhY3Qgc2hvcnRoYW5kIHByb3BlcnRpZXMuCiogW29zc2lua2luZV0oaHR0cHM6Ly9naXRodWIuY29tL29zc2lua2luZSkgZm9yIGEgMTUwIHRpbWUgcGVyZm9ybWFuY2UgYm9vc3QuCiogW0dhcnlKb25lc10oaHR0cHM6Ly9naXRodWIuY29tL0dhcnlKb25lcykgZm9yIGxvdHMgb2YgaW5wdXQgYW5kIFtodHRwczovL2Nzcy1zcGVjaWZpY2l0eS5pbmZvL10oaHR0cHM6Ly9jc3Mtc3BlY2lmaWNpdHkuaW5mby8pLgoqIFtkb2N0ZXVya2xlaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kb2N0ZXVya2xlaW4pIGZvciBvdXRwdXQgZm9ybWF0dGluZyBhbmQgYENTU0xpc3QtPnJlbW92ZSgpYCBpbnNwaXJhdGlvbi4KKiBbbmljb2xvcGlnbmF0ZWxsaV0oaHR0cHM6Ly9naXRodWIuY29tL25pY29sb3BpZ25hdGVsbGkpIGZvciBQU1ItMCBjb21wYXRpYmlsaXR5LgoqIFtkaWVnb2VtYmFyY2FkZXJvXShodHRwczovL2dpdGh1Yi5jb20vZGllZ29lbWJhcmNhZGVybykgZm9yIGtleWZyYW1lIGF0LXJ1bGUgcGFyc2luZy4KKiBbZ29ldGFzXShodHRwczovL2dpdGh1Yi5jb20vZ29ldGFzKSBmb3IgQG5hbWVzcGFjZSBhdC1ydWxlIHN1cHBvcnQuCiogW1ZpZXcgZnVsbCBsaXN0XShodHRwczovL2dpdGh1Yi5jb20vc2FiYmVyd29ybS9QSFAtQ1NTLVBhcnNlci9jb250cmlidXRvcnMpCgojIyBNaXNjCgoqIExlZ2FjeSBTdXBwb3J0OiBUaGUgbGF0ZXN0IHByZS1QU1ItMCB2ZXJzaW9uIG9mIHRoaXMgcHJvamVjdCBjYW4gYmUgY2hlY2tlZCB3aXRoIHRoZSBgMC45LjBgIHRhZy4KKiBSdW5uaW5nIFRlc3RzOiBUbyBydW4gYWxsIHVuaXQgdGVzdHMgZm9yIHRoaXMgcHJvamVjdCwgcnVuIGBjb21wb3NlciBpbnN0YWxsYCB0byBpbnN0YWxsIHBocHVuaXQgYW5kIHVzZSBgLi92ZW5kb3IvYmluL3BocHVuaXRgLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Comment/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Comment/Comment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50OwoKdXNlIFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDsKdXNlIFNhYmJlcndvcm1cQ1NTXFJlbmRlcmFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xQb3NpdGlvblxQb3NpdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uXFBvc2l0aW9uYWJsZTsKCmNsYXNzIENvbW1lbnQgaW1wbGVtZW50cyBQb3NpdGlvbmFibGUsIFJlbmRlcmFibGUKewogICAgdXNlIFBvc2l0aW9uOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAKICAgICAqLwogICAgcHJvdGVjdGVkICRzQ29tbWVudDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNDb21tZW50CiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc0NvbW1lbnQgPSAnJywgJGlMaW5lTm8gPSAwKQogICAgewogICAgICAgICR0aGlzLT5zQ29tbWVudCA9ICRzQ29tbWVudDsKICAgICAgICAkdGhpcy0+c2V0UG9zaXRpb24oJGlMaW5lTm8pOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c0NvbW1lbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzQ29tbWVudAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Q29tbWVudCgkc0NvbW1lbnQpCiAgICB7CiAgICAgICAgJHRoaXMtPnNDb21tZW50ID0gJHNDb21tZW50OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBpbiBWOC44LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiBWOS4wLjAuIFVzZSBgcmVuZGVyYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IE91dHB1dEZvcm1hdCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBPdXRwdXRGb3JtYXR8bnVsbCAkb091dHB1dEZvcm1hdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoJG9PdXRwdXRGb3JtYXQpCiAgICB7CiAgICAgICAgcmV0dXJuICcvKicgLiAkdGhpcy0+c0NvbW1lbnQgLiAnKi8nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Comment/Commentable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50OwoKaW50ZXJmYWNlIENvbW1lbnRhYmxlCnsKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4gJGFDb21tZW50cwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tbWVudHMoYXJyYXkgJGFDb21tZW50cyk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnRzKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBDb21tZW50PiAkYUNvbW1lbnRzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/CSSElement.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIFNhYmJlcndvcm1cQ1NTOwoKLyoqCiAqIFJlcHJlc2VudHMgYW55IGVudGl0eSBpbiB0aGUgQ1NTIHRoYXQgaXMgZW5jYXBzdWxhdGVkIGJ5IGEgY2xhc3MuCiAqCiAqIEl0cyBwcmltYXJ5IHB1cnBvc2UgaXMgdG8gcHJvdmlkZSBhIHR5cGUgZm9yIHVzZSB3aXRoIGBEb2N1bWVudDo6Z2V0QWxsVmFsdWVzKClgCiAqIHdoZW4gYSBzdWJzZXQgb2YgdmFsdWVzIGZyb20gYSBwYXJ0aWN1bGFyIHBhcnQgb2YgdGhlIGRvY3VtZW50IGlzIHJlcXVpcmVkLgogKgogKiBUaHVzLCBlbGVtZW50cyB3aGljaCBkb24ndCBjb250YWluIGBWYWx1ZWBzIChzdWNoIGFzIHN0YXRlbWVudCBhdC1ydWxlcykgZG9uJ3QgbmVlZCB0byBpbXBsZW1lbnQgdGhpcy4KICoKICogSXQgZXh0ZW5kcyBgUmVuZGVyYWJsZWAgYmVjYXVzZSBldmVyeSBlbGVtZW50IGlzIHJlbmRlcmFibGUuCiAqLwppbnRlcmZhY2UgQ1NTRWxlbWVudCBleHRlbmRzIFJlbmRlcmFibGUge30K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/CSSList/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/CSSList/AtRuleBlockList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZTsKCi8qKgogKiBBIGBCbG9ja0xpc3RgIGNvbnN0cnVjdGVkIGJ5IGFuIHVua25vd24gYXQtcnVsZS4gYEBtZWRpYWAgcnVsZXMgYXJlIHJlbmRlcmVkIGludG8gYEF0UnVsZUJsb2NrTGlzdGAgb2JqZWN0cy4KICovCmNsYXNzIEF0UnVsZUJsb2NrTGlzdCBleHRlbmRzIENTU0Jsb2NrTGlzdCBpbXBsZW1lbnRzIEF0UnVsZQp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNUeXBlOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkc0FyZ3M7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzVHlwZQogICAgICogQHBhcmFtIHN0cmluZyAkc0FyZ3MKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzVHlwZSwgJHNBcmdzID0gJycsICRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRpTGluZU5vKTsKICAgICAgICAkdGhpcy0+c1R5cGUgPSAkc1R5cGU7CiAgICAgICAgJHRoaXMtPnNBcmdzID0gJHNBcmdzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGF0UnVsZU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c1R5cGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXRSdWxlQXJncygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zQXJnczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgaW4gVjguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gVjkuMC4wLiBVc2UgYHJlbmRlcmAgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBPdXRwdXRGb3JtYXQoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gT3V0cHV0Rm9ybWF0fG51bGwgJG9PdXRwdXRGb3JtYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCRvT3V0cHV0Rm9ybWF0KQogICAgewogICAgICAgICRzUmVzdWx0ID0gJG9PdXRwdXRGb3JtYXQtPmNvbW1lbnRzKCR0aGlzKTsKICAgICAgICAkc1Jlc3VsdCAuPSAkb091dHB1dEZvcm1hdC0+c0JlZm9yZUF0UnVsZUJsb2NrOwogICAgICAgICRzQXJncyA9ICR0aGlzLT5zQXJnczsKICAgICAgICBpZiAoJHNBcmdzKSB7CiAgICAgICAgICAgICRzQXJncyA9ICcgJyAuICRzQXJnczsKICAgICAgICB9CiAgICAgICAgJHNSZXN1bHQgLj0gIkB7JHRoaXMtPnNUeXBlfSRzQXJnc3skb091dHB1dEZvcm1hdC0+c3BhY2VCZWZvcmVPcGVuaW5nQnJhY2UoKX17IjsKICAgICAgICAkc1Jlc3VsdCAuPSAkdGhpcy0+cmVuZGVyTGlzdENvbnRlbnRzKCRvT3V0cHV0Rm9ybWF0KTsKICAgICAgICAkc1Jlc3VsdCAuPSAnfSc7CiAgICAgICAgJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNBZnRlckF0UnVsZUJsb2NrOwogICAgICAgIHJldHVybiAkc1Jlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSb290TGlzdCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/CSSList/CSSBlockList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXENTU0VsZW1lbnQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3RvcjsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jazsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcUnVsZVNldDsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENTU0Z1bmN0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcVmFsdWU7CnVzZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxWYWx1ZUxpc3Q7CgovKioKICogQSBgQ1NTQmxvY2tMaXN0YCBpcyBhIGBDU1NMaXN0YCB3aG9zZSBgRGVjbGFyYXRpb25CbG9ja2BzIGFyZSBndWFyYW50ZWVkIHRvIGNvbnRhaW4gdmFsaWQgZGVjbGFyYXRpb24gYmxvY2tzIG9yCiAqIGF0LXJ1bGVzLgogKgogKiBNb3N0IGBDU1NMaXN0YHMgY29uZm9ybSB0byB0aGlzIGNhdGVnb3J5IGJ1dCBzb21lIGF0LXJ1bGVzIChzdWNoIGFzIGBAa2V5ZnJhbWVzYCkgZG8gbm90LgogKi8KYWJzdHJhY3QgY2xhc3MgQ1NTQmxvY2tMaXN0IGV4dGVuZHMgQ1NTTGlzdAp7CiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRpTGluZU5vKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIERlY2xhcmF0aW9uQmxvY2s+ICRhUmVzdWx0CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhbGxEZWNsYXJhdGlvbkJsb2NrcyhhcnJheSAmJGFSZXN1bHQpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFDb250ZW50cyBhcyAkbUNvbnRlbnQpIHsKICAgICAgICAgICAgaWYgKCRtQ29udGVudCBpbnN0YW5jZW9mIERlY2xhcmF0aW9uQmxvY2spIHsKICAgICAgICAgICAgICAgICRhUmVzdWx0W10gPSAkbUNvbnRlbnQ7CiAgICAgICAgICAgIH0gZWxzZWlmICgkbUNvbnRlbnQgaW5zdGFuY2VvZiBDU1NCbG9ja0xpc3QpIHsKICAgICAgICAgICAgICAgICRtQ29udGVudC0+YWxsRGVjbGFyYXRpb25CbG9ja3MoJGFSZXN1bHQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGludCwgUnVsZVNldD4gJGFSZXN1bHQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFsbFJ1bGVTZXRzKGFycmF5ICYkYVJlc3VsdCkKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+YUNvbnRlbnRzIGFzICRtQ29udGVudCkgewogICAgICAgICAgICBpZiAoJG1Db250ZW50IGluc3RhbmNlb2YgUnVsZVNldCkgewogICAgICAgICAgICAgICAgJGFSZXN1bHRbXSA9ICRtQ29udGVudDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRtQ29udGVudCBpbnN0YW5jZW9mIENTU0Jsb2NrTGlzdCkgewogICAgICAgICAgICAgICAgJG1Db250ZW50LT5hbGxSdWxlU2V0cygkYVJlc3VsdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFsbCBgVmFsdWVgIG9iamVjdHMgZm91bmQgcmVjdXJzaXZlbHkgaW4gYFJ1bGVgcyBpbiB0aGUgdHJlZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQ1NTRWxlbWVudHxzdHJpbmd8bnVsbCAkZWxlbWVudAogICAgICogICAgICAgIFRoaXMgaXMgdGhlIGBDU1NMaXN0YCBvciBgUnVsZVNldGAgdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tIChkZWZhdWx0cyB0byB0aGUgd2hvbGUgZG9jdW1lbnQpLgogICAgICogICAgICAgIElmIGEgc3RyaW5nIGlzIGdpdmVuLCBpdCBpcyB1c2VkIGFzIGEgcnVsZSBuYW1lIGZpbHRlci4KICAgICAqICAgICAgICBQYXNzaW5nIGEgc3RyaW5nIGZvciB0aGlzIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGluIHZlcnNpb24gOC45LjAsIGFuZCB3aWxsIG5vdCB3b3JrIGZyb20gdjkuMDsKICAgICAqICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXIgdG8gcGFzcyBhIHJ1bGUgbmFtZSBmaWx0ZXIgaW5zdGVhZC4KICAgICAqIEBwYXJhbSBzdHJpbmd8Ym9vbHxudWxsICRydWxlU2VhcmNoUGF0dGVybk9yU2VhcmNoSW5GdW5jdGlvbkFyZ3VtZW50cwogICAgICogICAgICAgIFRoaXMgYWxsb3dzIGZpbHRlcmluZyBydWxlcyBieSBwcm9wZXJ0eSBuYW1lCiAgICAgKiAgICAgICAgKGUuZy4gaWYgImNvbG9yIiBpcyBwYXNzZWQsIG9ubHkgYFZhbHVlYHMgZnJvbSBgY29sb3JgIHByb3BlcnRpZXMgd2lsbCBiZSByZXR1cm5lZCwKICAgICAqICAgICAgICBvciBpZiAiZm9udC0iIGlzIHByb3ZpZGVkLCBgVmFsdWVgcyBmcm9tIGFsbCBmb250IHJ1bGVzLCBsaWtlIGBmb250LXNpemVgLCBhbmQgaW5jbHVkaW5nIGBmb250YCBpdHNlbGYsCiAgICAgKiAgICAgICAgd2lsbCBiZSByZXR1cm5lZCkuCiAgICAgKiAgICAgICAgSWYgYSBCb29sZWFuIGlzIHByb3ZpZGVkLCBpdCBpcyB0cmVhdGVkIGFzIHRoZSBgJHNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHNgIGFyZ3VtZW50LgogICAgICogICAgICAgIFBhc3NpbmcgYSBCb29sZWFuIGZvciB0aGlzIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGluIHZlcnNpb24gOC45LjAsIGFuZCB3aWxsIG5vdCB3b3JrIGZyb20gdjkuMDsKICAgICAqICAgICAgICB1c2UgdGhlIGAkc2VhcmNoSW5GdW5jdGlvbkFyZ3VtZW50c2AgcGFyYW1ldGVyIGluc3RlYWQuCiAgICAgKiBAcGFyYW0gYm9vbCAkc2VhcmNoSW5GdW5jdGlvbkFyZ3VtZW50cyB3aGV0aGVyIHRvIGFsc28gcmV0dXJuIFZhbHVlIG9iamVjdHMgdXNlZCBhcyBGdW5jdGlvbiBhcmd1bWVudHMuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIFZhbHVlPgogICAgICoKICAgICAqIEBzZWUgUnVsZVNldC0+Z2V0UnVsZXMoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsVmFsdWVzKAogICAgICAgICRlbGVtZW50ID0gbnVsbCwKICAgICAgICAkcnVsZVNlYXJjaFBhdHRlcm5PclNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHMgPSBudWxsLAogICAgICAgICRzZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzID0gZmFsc2UKICAgICkgewogICAgICAgIGlmIChcaXNfYm9vbCgkcnVsZVNlYXJjaFBhdHRlcm5PclNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHMpKSB7CiAgICAgICAgICAgICRzZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzID0gJHJ1bGVTZWFyY2hQYXR0ZXJuT3JTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzOwogICAgICAgICAgICAkc2VhcmNoU3RyaW5nID0gbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc2VhcmNoU3RyaW5nID0gJHJ1bGVTZWFyY2hQYXR0ZXJuT3JTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRlbGVtZW50ID09PSBudWxsKSB7CiAgICAgICAgICAgICRlbGVtZW50ID0gJHRoaXM7CiAgICAgICAgfSBlbHNlaWYgKFxpc19zdHJpbmcoJGVsZW1lbnQpKSB7CiAgICAgICAgICAgICRzZWFyY2hTdHJpbmcgPSAkZWxlbWVudDsKICAgICAgICAgICAgJGVsZW1lbnQgPSAkdGhpczsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSBbXTsKICAgICAgICAkdGhpcy0+YWxsVmFsdWVzKCRlbGVtZW50LCAkcmVzdWx0LCAkc2VhcmNoU3RyaW5nLCAkc2VhcmNoSW5GdW5jdGlvbkFyZ3VtZW50cyk7CiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ1NTRWxlbWVudHxzdHJpbmcgJG9FbGVtZW50CiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCBWYWx1ZT4gJGFSZXN1bHQKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkc1NlYXJjaFN0cmluZwogICAgICogQHBhcmFtIGJvb2wgJGJTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhbGxWYWx1ZXMoJG9FbGVtZW50LCBhcnJheSAmJGFSZXN1bHQsICRzU2VhcmNoU3RyaW5nID0gbnVsbCwgJGJTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCRvRWxlbWVudCBpbnN0YW5jZW9mIENTU0Jsb2NrTGlzdCkgewogICAgICAgICAgICBmb3JlYWNoICgkb0VsZW1lbnQtPmdldENvbnRlbnRzKCkgYXMgJG9Db250ZW50KSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YWxsVmFsdWVzKCRvQ29udGVudCwgJGFSZXN1bHQsICRzU2VhcmNoU3RyaW5nLCAkYlNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHMpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRvRWxlbWVudCBpbnN0YW5jZW9mIFJ1bGVTZXQpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJG9FbGVtZW50LT5nZXRSdWxlcygkc1NlYXJjaFN0cmluZykgYXMgJG9SdWxlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YWxsVmFsdWVzKCRvUnVsZSwgJGFSZXN1bHQsICRzU2VhcmNoU3RyaW5nLCAkYlNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHMpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRvRWxlbWVudCBpbnN0YW5jZW9mIFJ1bGUpIHsKICAgICAgICAgICAgJHRoaXMtPmFsbFZhbHVlcygkb0VsZW1lbnQtPmdldFZhbHVlKCksICRhUmVzdWx0LCAkc1NlYXJjaFN0cmluZywgJGJTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzKTsKICAgICAgICB9IGVsc2VpZiAoJG9FbGVtZW50IGluc3RhbmNlb2YgVmFsdWVMaXN0KSB7CiAgICAgICAgICAgIGlmICgkYlNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHMgfHwgISgkb0VsZW1lbnQgaW5zdGFuY2VvZiBDU1NGdW5jdGlvbikpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRvRWxlbWVudC0+Z2V0TGlzdENvbXBvbmVudHMoKSBhcyAkbUNvbXBvbmVudCkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5hbGxWYWx1ZXMoJG1Db21wb25lbnQsICRhUmVzdWx0LCAkc1NlYXJjaFN0cmluZywgJGJTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIE5vbi1MaXN0IGBWYWx1ZWAgb3IgYENTU1N0cmluZ2AgKENTUyBpZGVudGlmaWVyKQogICAgICAgICAgICAkYVJlc3VsdFtdID0gJG9FbGVtZW50OwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFNlbGVjdG9yPiAkYVJlc3VsdAogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRzU3BlY2lmaWNpdHlTZWFyY2gKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFsbFNlbGVjdG9ycyhhcnJheSAmJGFSZXN1bHQsICRzU3BlY2lmaWNpdHlTZWFyY2ggPSBudWxsKQogICAgewogICAgICAgIC8qKiBAdmFyIGFycmF5PGludCwgRGVjbGFyYXRpb25CbG9jaz4gJGFEZWNsYXJhdGlvbkJsb2NrcyAqLwogICAgICAgICRhRGVjbGFyYXRpb25CbG9ja3MgPSBbXTsKICAgICAgICAkdGhpcy0+YWxsRGVjbGFyYXRpb25CbG9ja3MoJGFEZWNsYXJhdGlvbkJsb2Nrcyk7CiAgICAgICAgZm9yZWFjaCAoJGFEZWNsYXJhdGlvbkJsb2NrcyBhcyAkb0Jsb2NrKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRvQmxvY2stPmdldFNlbGVjdG9ycygpIGFzICRvU2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgIGlmICgkc1NwZWNpZmljaXR5U2VhcmNoID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgJGFSZXN1bHRbXSA9ICRvU2VsZWN0b3I7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRzQ29tcGFyYXRvciA9ICc9PT0nOwogICAgICAgICAgICAgICAgICAgICRhU3BlY2lmaWNpdHlTZWFyY2ggPSBleHBsb2RlKCcgJywgJHNTcGVjaWZpY2l0eVNlYXJjaCk7CiAgICAgICAgICAgICAgICAgICAgJGlUYXJnZXRTcGVjaWZpY2l0eSA9ICRhU3BlY2lmaWNpdHlTZWFyY2hbMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRhU3BlY2lmaWNpdHlTZWFyY2gpID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc0NvbXBhcmF0b3IgPSAkYVNwZWNpZmljaXR5U2VhcmNoWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAkaVRhcmdldFNwZWNpZmljaXR5ID0gJGFTcGVjaWZpY2l0eVNlYXJjaFsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGlUYXJnZXRTcGVjaWZpY2l0eSA9IChpbnQpJGlUYXJnZXRTcGVjaWZpY2l0eTsKICAgICAgICAgICAgICAgICAgICAkaVNlbGVjdG9yU3BlY2lmaWNpdHkgPSAkb1NlbGVjdG9yLT5nZXRTcGVjaWZpY2l0eSgpOwogICAgICAgICAgICAgICAgICAgICRiTWF0Y2hlcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoJHNDb21wYXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzw9JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiTWF0Y2hlcyA9ICRpU2VsZWN0b3JTcGVjaWZpY2l0eSA8PSAkaVRhcmdldFNwZWNpZmljaXR5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzwnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJNYXRjaGVzID0gJGlTZWxlY3RvclNwZWNpZmljaXR5IDwgJGlUYXJnZXRTcGVjaWZpY2l0eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc+PSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYk1hdGNoZXMgPSAkaVNlbGVjdG9yU3BlY2lmaWNpdHkgPj0gJGlUYXJnZXRTcGVjaWZpY2l0eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc+JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiTWF0Y2hlcyA9ICRpU2VsZWN0b3JTcGVjaWZpY2l0eSA+ICRpVGFyZ2V0U3BlY2lmaWNpdHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiTWF0Y2hlcyA9ICRpU2VsZWN0b3JTcGVjaWZpY2l0eSA9PT0gJGlUYXJnZXRTcGVjaWZpY2l0eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoJGJNYXRjaGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhUmVzdWx0W10gPSAkb1NlbGVjdG9yOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/CSSList/CSSList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudDsKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudGFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xDU1NFbGVtZW50Owp1c2UgU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0Owp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xQYXJzZXJTdGF0ZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcU291cmNlRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkRU9GRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQb3NpdGlvblxQb3NpdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uXFBvc2l0aW9uYWJsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XENoYXJzZXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxDU1NOYW1lc3BhY2U7CnVzZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxJbXBvcnQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3RvcjsKdXNlIFNhYmJlcndvcm1cQ1NTXFJlbmRlcmFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XEF0UnVsZVNldDsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jazsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcUnVsZVNldDsKdXNlIFNhYmJlcndvcm1cQ1NTXFNldHRpbmdzOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcQ1NTU3RyaW5nOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcVVJMOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcVmFsdWU7CgovKioKICogVGhpcyBpcyB0aGUgbW9zdCBnZW5lcmljIGNvbnRhaW5lciBhdmFpbGFibGUuIEl0IGNhbiBjb250YWluIGBEZWNsYXJhdGlvbkJsb2NrYHMgKHJ1bGUgc2V0cyB3aXRoIGEgc2VsZWN0b3IpLAogKiBgUnVsZVNldGBzIGFzIHdlbGwgYXMgb3RoZXIgYENTU0xpc3RgIG9iamVjdHMuCiAqCiAqIEl0IGNhbiBhbHNvIGNvbnRhaW4gYEltcG9ydGAgYW5kIGBDaGFyc2V0YCBvYmplY3RzIHN0ZW1taW5nIGZyb20gYXQtcnVsZXMuCiAqLwphYnN0cmFjdCBjbGFzcyBDU1NMaXN0IGltcGxlbWVudHMgQ29tbWVudGFibGUsIENTU0VsZW1lbnQsIFBvc2l0aW9uYWJsZQp7CiAgICB1c2UgUG9zaXRpb247CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAKICAgICAqLwogICAgcHJvdGVjdGVkICRhQ29tbWVudHM7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PGludCwgUnVsZVNldHxDU1NMaXN0fEltcG9ydHxDaGFyc2V0PgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMAogICAgICovCiAgICBwcm90ZWN0ZWQgJGFDb250ZW50czsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gW107CiAgICAgICAgJHRoaXMtPmFDb250ZW50cyA9IFtdOwogICAgICAgICR0aGlzLT5zZXRQb3NpdGlvbigkaUxpbmVObyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICogQHRocm93cyBTb3VyY2VFeGNlcHRpb24KICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgVjguOC4wCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VMaXN0KFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUsIENTU0xpc3QgJG9MaXN0KQogICAgewogICAgICAgICRiSXNSb290ID0gJG9MaXN0IGluc3RhbmNlb2YgRG9jdW1lbnQ7CiAgICAgICAgaWYgKGlzX3N0cmluZygkb1BhcnNlclN0YXRlKSkgewogICAgICAgICAgICAkb1BhcnNlclN0YXRlID0gbmV3IFBhcnNlclN0YXRlKCRvUGFyc2VyU3RhdGUsIFNldHRpbmdzOjpjcmVhdGUoKSk7CiAgICAgICAgfQogICAgICAgICRiTGVuaWVudFBhcnNpbmcgPSAkb1BhcnNlclN0YXRlLT5nZXRTZXR0aW5ncygpLT5iTGVuaWVudFBhcnNpbmc7CiAgICAgICAgJGFDb21tZW50cyA9IFtdOwogICAgICAgIHdoaWxlICghJG9QYXJzZXJTdGF0ZS0+aXNFbmQoKSkgewogICAgICAgICAgICAkYUNvbW1lbnRzID0gYXJyYXlfbWVyZ2UoJGFDb21tZW50cywgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKSk7CiAgICAgICAgICAgICRvTGlzdEl0ZW0gPSBudWxsOwogICAgICAgICAgICBpZiAoJGJMZW5pZW50UGFyc2luZykgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkb0xpc3RJdGVtID0gc2VsZjo6cGFyc2VMaXN0SXRlbSgkb1BhcnNlclN0YXRlLCAkb0xpc3QpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAgICAgJG9MaXN0SXRlbSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG9MaXN0SXRlbSA9IHNlbGY6OnBhcnNlTGlzdEl0ZW0oJG9QYXJzZXJTdGF0ZSwgJG9MaXN0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJG9MaXN0SXRlbSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy8gTGlzdCBwYXJzaW5nIGZpbmlzaGVkCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRvTGlzdEl0ZW0pIHsKICAgICAgICAgICAgICAgICRvTGlzdEl0ZW0tPmFkZENvbW1lbnRzKCRhQ29tbWVudHMpOwogICAgICAgICAgICAgICAgJG9MaXN0LT5hcHBlbmQoJG9MaXN0SXRlbSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGFDb21tZW50cyA9ICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgfQogICAgICAgICRvTGlzdC0+YWRkQ29tbWVudHMoJGFDb21tZW50cyk7CiAgICAgICAgaWYgKCEkYklzUm9vdCAmJiAhJGJMZW5pZW50UGFyc2luZykgewogICAgICAgICAgICB0aHJvdyBuZXcgU291cmNlRXhjZXB0aW9uKCJVbmV4cGVjdGVkIGVuZCBvZiBkb2N1bWVudCIsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQXRSdWxlQmxvY2tMaXN0fEtleUZyYW1lfENoYXJzZXR8Q1NTTmFtZXNwYWNlfEltcG9ydHxBdFJ1bGVTZXR8RGVjbGFyYXRpb25CbG9ja3xudWxsfGZhbHNlCiAgICAgKgogICAgICogQHRocm93cyBTb3VyY2VFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZEVPRkV4Y2VwdGlvbgogICAgICogQHRocm93cyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcGFyc2VMaXN0SXRlbShQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlLCBDU1NMaXN0ICRvTGlzdCkKICAgIHsKICAgICAgICAkYklzUm9vdCA9ICRvTGlzdCBpbnN0YW5jZW9mIERvY3VtZW50OwogICAgICAgIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygnQCcpKSB7CiAgICAgICAgICAgICRvQXRSdWxlID0gc2VsZjo6cGFyc2VBdFJ1bGUoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgICAgIGlmICgkb0F0UnVsZSBpbnN0YW5jZW9mIENoYXJzZXQpIHsKICAgICAgICAgICAgICAgIGlmICghJGJJc1Jvb3QpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAnQGNoYXJzZXQgbWF5IG9ubHkgb2NjdXIgaW4gcm9vdCBkb2N1bWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICAgICAnY3VzdG9tJywKICAgICAgICAgICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJG9MaXN0LT5nZXRDb250ZW50cygpKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAnQGNoYXJzZXQgbXVzdCBiZSB0aGUgZmlyc3QgcGFyc2VhYmxlIHRva2VuIGluIGEgZG9jdW1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2N1c3RvbScsCiAgICAgICAgICAgICAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+c2V0Q2hhcnNldCgkb0F0UnVsZS0+Z2V0Q2hhcnNldCgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJG9BdFJ1bGU7CiAgICAgICAgfSBlbHNlaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCd9JykpIHsKICAgICAgICAgICAgaWYgKCRiSXNSb290KSB7CiAgICAgICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Z2V0U2V0dGluZ3MoKS0+YkxlbmllbnRQYXJzaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlY2xhcmF0aW9uQmxvY2s6OnBhcnNlKCRvUGFyc2VyU3RhdGUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU291cmNlRXhjZXB0aW9uKCJVbm9wZW5lZCB7IiwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBFbmQgb2YgbGlzdAogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gRGVjbGFyYXRpb25CbG9jazo6cGFyc2UoJG9QYXJzZXJTdGF0ZSwgJG9MaXN0KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZQogICAgICoKICAgICAqIEByZXR1cm4gQXRSdWxlQmxvY2tMaXN0fEtleUZyYW1lfENoYXJzZXR8Q1NTTmFtZXNwYWNlfEltcG9ydHxBdFJ1bGVTZXR8bnVsbAogICAgICoKICAgICAqIEB0aHJvd3MgU291cmNlRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlQXRSdWxlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUpCiAgICB7CiAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnQCcpOwogICAgICAgICRzSWRlbnRpZmllciA9ICRvUGFyc2VyU3RhdGUtPnBhcnNlSWRlbnRpZmllcigpOwogICAgICAgICRpSWRlbnRpZmllckxpbmVOdW0gPSAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpOwogICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgaWYgKCRzSWRlbnRpZmllciA9PT0gJ2ltcG9ydCcpIHsKICAgICAgICAgICAgJG9Mb2NhdGlvbiA9IFVSTDo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgICRzTWVkaWFRdWVyeSA9IG51bGw7CiAgICAgICAgICAgIGlmICghJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJzsnKSkgewogICAgICAgICAgICAgICAgJHNNZWRpYVF1ZXJ5ID0gdHJpbSgkb1BhcnNlclN0YXRlLT5jb25zdW1lVW50aWwoWyc7JywgUGFyc2VyU3RhdGU6OkVPRl0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lVW50aWwoWyc7JywgUGFyc2VyU3RhdGU6OkVPRl0sIHRydWUsIHRydWUpOwogICAgICAgICAgICByZXR1cm4gbmV3IEltcG9ydCgkb0xvY2F0aW9uLCAkc01lZGlhUXVlcnkgPzogbnVsbCwgJGlJZGVudGlmaWVyTGluZU51bSk7CiAgICAgICAgfSBlbHNlaWYgKCRzSWRlbnRpZmllciA9PT0gJ2NoYXJzZXQnKSB7CiAgICAgICAgICAgICRvQ2hhcnNldFN0cmluZyA9IENTU1N0cmluZzo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVVbnRpbChbJzsnLCBQYXJzZXJTdGF0ZTo6RU9GXSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ2hhcnNldCgkb0NoYXJzZXRTdHJpbmcsICRpSWRlbnRpZmllckxpbmVOdW0pOwogICAgICAgIH0gZWxzZWlmIChzZWxmOjppZGVudGlmaWVySXMoJHNJZGVudGlmaWVyLCAna2V5ZnJhbWVzJykpIHsKICAgICAgICAgICAgJG9SZXN1bHQgPSBuZXcgS2V5RnJhbWUoJGlJZGVudGlmaWVyTGluZU51bSk7CiAgICAgICAgICAgICRvUmVzdWx0LT5zZXRWZW5kb3JLZXlGcmFtZSgkc0lkZW50aWZpZXIpOwogICAgICAgICAgICAkb1Jlc3VsdC0+c2V0QW5pbWF0aW9uTmFtZSh0cmltKCRvUGFyc2VyU3RhdGUtPmNvbnN1bWVVbnRpbCgneycsIGZhbHNlLCB0cnVlKSkpOwogICAgICAgICAgICBDU1NMaXN0OjpwYXJzZUxpc3QoJG9QYXJzZXJTdGF0ZSwgJG9SZXN1bHQpOwogICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJ30nKSkgewogICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnfScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkb1Jlc3VsdDsKICAgICAgICB9IGVsc2VpZiAoJHNJZGVudGlmaWVyID09PSAnbmFtZXNwYWNlJykgewogICAgICAgICAgICAkc1ByZWZpeCA9IG51bGw7CiAgICAgICAgICAgICRtVXJsID0gVmFsdWU6OnBhcnNlUHJpbWl0aXZlVmFsdWUoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgICAgIGlmICghJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJzsnKSkgewogICAgICAgICAgICAgICAgJHNQcmVmaXggPSAkbVVybDsKICAgICAgICAgICAgICAgICRtVXJsID0gVmFsdWU6OnBhcnNlUHJpbWl0aXZlVmFsdWUoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVVudGlsKFsnOycsIFBhcnNlclN0YXRlOjpFT0ZdLCB0cnVlLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCRzUHJlZml4ICE9PSBudWxsICYmICFpc19zdHJpbmcoJHNQcmVmaXgpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKCdXcm9uZyBuYW1lc3BhY2UgcHJlZml4JywgJHNQcmVmaXgsICdjdXN0b20nLCAkaUlkZW50aWZpZXJMaW5lTnVtKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoISgkbVVybCBpbnN0YW5jZW9mIENTU1N0cmluZyB8fCAkbVVybCBpbnN0YW5jZW9mIFVSTCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgJ1dyb25nIG5hbWVzcGFjZSB1cmwgb2YgaW52YWxpZCB0eXBlJywKICAgICAgICAgICAgICAgICAgICAkbVVybCwKICAgICAgICAgICAgICAgICAgICAnY3VzdG9tJywKICAgICAgICAgICAgICAgICAgICAkaUlkZW50aWZpZXJMaW5lTnVtCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTTmFtZXNwYWNlKCRtVXJsLCAkc1ByZWZpeCwgJGlJZGVudGlmaWVyTGluZU51bSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gVW5rbm93biBvdGhlciBhdCBydWxlIChmb250LWZhY2Ugb3Igc3VjaCkKICAgICAgICAgICAgJHNBcmdzID0gdHJpbSgkb1BhcnNlclN0YXRlLT5jb25zdW1lVW50aWwoJ3snLCBmYWxzZSwgdHJ1ZSkpOwogICAgICAgICAgICBpZiAoc3Vic3RyX2NvdW50KCRzQXJncywgIigiKSAhPSBzdWJzdHJfY291bnQoJHNBcmdzLCAiKSIpKSB7CiAgICAgICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Z2V0U2V0dGluZ3MoKS0+YkxlbmllbnRQYXJzaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTb3VyY2VFeGNlcHRpb24oIlVubWF0Y2hlZCBicmFjZSBjb3VudCBpbiBtZWRpYSBxdWVyeSIsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRiVXNlUnVsZVNldCA9IHRydWU7CiAgICAgICAgICAgIGZvcmVhY2ggKGV4cGxvZGUoJy8nLCBBdFJ1bGU6OkJMT0NLX1JVTEVTKSBhcyAkc0Jsb2NrUnVsZU5hbWUpIHsKICAgICAgICAgICAgICAgIGlmIChzZWxmOjppZGVudGlmaWVySXMoJHNJZGVudGlmaWVyLCAkc0Jsb2NrUnVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGJVc2VSdWxlU2V0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRiVXNlUnVsZVNldCkgewogICAgICAgICAgICAgICAgJG9BdFJ1bGUgPSBuZXcgQXRSdWxlU2V0KCRzSWRlbnRpZmllciwgJHNBcmdzLCAkaUlkZW50aWZpZXJMaW5lTnVtKTsKICAgICAgICAgICAgICAgIFJ1bGVTZXQ6OnBhcnNlUnVsZVNldCgkb1BhcnNlclN0YXRlLCAkb0F0UnVsZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb0F0UnVsZSA9IG5ldyBBdFJ1bGVCbG9ja0xpc3QoJHNJZGVudGlmaWVyLCAkc0FyZ3MsICRpSWRlbnRpZmllckxpbmVOdW0pOwogICAgICAgICAgICAgICAgQ1NTTGlzdDo6cGFyc2VMaXN0KCRvUGFyc2VyU3RhdGUsICRvQXRSdWxlKTsKICAgICAgICAgICAgICAgIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygnfScpKSB7CiAgICAgICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnfScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkb0F0UnVsZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0cyBhbiBpZGVudGlmaWVyIGZvciBhIGdpdmVuIHZhbHVlLiBTaW5jZSBpZGVudGlmaWVycyBhcmUgYWxsIGtleXdvcmRzLCB0aGV5IGNhbiBiZSB2ZW5kb3ItcHJlZml4ZWQuCiAgICAgKiBXZSBuZWVkIHRvIGNoZWNrIGZvciB0aGVzZSB2ZXJzaW9ucyB0b28uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc0lkZW50aWZpZXIKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNNYXRjaAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpZGVudGlmaWVySXMoJHNJZGVudGlmaWVyLCAkc01hdGNoKQogICAgewogICAgICAgIHJldHVybiAoc3RyY2FzZWNtcCgkc0lkZW50aWZpZXIsICRzTWF0Y2gpID09PSAwKQogICAgICAgICAgICA/OiBwcmVnX21hdGNoKCIvXigtXFx3Ky0pPyRzTWF0Y2gkL2kiLCAkc0lkZW50aWZpZXIpID09PSAxOwogICAgfQoKICAgIC8qKgogICAgICogUHJlcGVuZHMgYW4gaXRlbSB0byB0aGUgbGlzdCBvZiBjb250ZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gUnVsZVNldHxDU1NMaXN0fEltcG9ydHxDaGFyc2V0ICRvSXRlbQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJlcGVuZCgkb0l0ZW0pCiAgICB7CiAgICAgICAgYXJyYXlfdW5zaGlmdCgkdGhpcy0+YUNvbnRlbnRzLCAkb0l0ZW0pOwogICAgfQoKICAgIC8qKgogICAgICogQXBwZW5kcyBhbiBpdGVtIHRvIHRoZSBsaXN0IG9mIGNvbnRlbnRzLgogICAgICoKICAgICAqIEBwYXJhbSBSdWxlU2V0fENTU0xpc3R8SW1wb3J0fENoYXJzZXQgJG9JdGVtCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhcHBlbmQoJG9JdGVtKQogICAgewogICAgICAgICR0aGlzLT5hQ29udGVudHNbXSA9ICRvSXRlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGljZXMgdGhlIGxpc3Qgb2YgY29udGVudHMuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkaU9mZnNldAogICAgICogQHBhcmFtIGludCAkaUxlbmd0aAogICAgICogQHBhcmFtIGFycmF5PGludCwgUnVsZVNldHxDU1NMaXN0fEltcG9ydHxDaGFyc2V0PiAkbVJlcGxhY2VtZW50CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzcGxpY2UoJGlPZmZzZXQsICRpTGVuZ3RoID0gbnVsbCwgJG1SZXBsYWNlbWVudCA9IG51bGwpCiAgICB7CiAgICAgICAgYXJyYXlfc3BsaWNlKCR0aGlzLT5hQ29udGVudHMsICRpT2Zmc2V0LCAkaUxlbmd0aCwgJG1SZXBsYWNlbWVudCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBJbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIENTUyBsaXN0IGJlZm9yZSBpdHMgc2libGluZy4gSWYgdGhlIGRlc2lyZWQgc2libGluZyBjYW5ub3QgYmUgZm91bmQsCiAgICAgKiB0aGUgaXRlbSBpcyBhcHBlbmRlZCBhdCB0aGUgZW5kLgogICAgICoKICAgICAqIEBwYXJhbSBSdWxlU2V0fENTU0xpc3R8SW1wb3J0fENoYXJzZXQgJGl0ZW0KICAgICAqIEBwYXJhbSBSdWxlU2V0fENTU0xpc3R8SW1wb3J0fENoYXJzZXQgJHNpYmxpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGluc2VydEJlZm9yZSgkaXRlbSwgJHNpYmxpbmcpCiAgICB7CiAgICAgICAgaWYgKGluX2FycmF5KCRzaWJsaW5nLCAkdGhpcy0+YUNvbnRlbnRzLCB0cnVlKSkgewogICAgICAgICAgICAkdGhpcy0+cmVwbGFjZSgkc2libGluZywgWyRpdGVtLCAkc2libGluZ10pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoJGl0ZW0pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlbW92ZXMgYW4gaXRlbSBmcm9tIHRoZSBDU1MgbGlzdC4KICAgICAqCiAgICAgKiBAcGFyYW0gUnVsZVNldHxJbXBvcnR8Q2hhcnNldHxDU1NMaXN0ICRvSXRlbVRvUmVtb3ZlCiAgICAgKiAgICAgICAgTWF5IGJlIGEgUnVsZVNldCAobW9zdCBsaWtlbHkgYSBEZWNsYXJhdGlvbkJsb2NrKSwgYSBJbXBvcnQsCiAgICAgKiAgICAgICAgYSBDaGFyc2V0IG9yIGFub3RoZXIgQ1NTTGlzdCAobW9zdCBsaWtlbHkgYSBNZWRpYVF1ZXJ5KQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbCB3aGV0aGVyIHRoZSBpdGVtIHdhcyByZW1vdmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmUoJG9JdGVtVG9SZW1vdmUpCiAgICB7CiAgICAgICAgJGlLZXkgPSBhcnJheV9zZWFyY2goJG9JdGVtVG9SZW1vdmUsICR0aGlzLT5hQ29udGVudHMsIHRydWUpOwogICAgICAgIGlmICgkaUtleSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmFDb250ZW50c1skaUtleV0pOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmVwbGFjZXMgYW4gaXRlbSBmcm9tIHRoZSBDU1MgbGlzdC4KICAgICAqCiAgICAgKiBAcGFyYW0gUnVsZVNldHxJbXBvcnR8Q2hhcnNldHxDU1NMaXN0ICRvT2xkSXRlbQogICAgICogICAgICAgIE1heSBiZSBhIGBSdWxlU2V0YCAobW9zdCBsaWtlbHkgYSBgRGVjbGFyYXRpb25CbG9ja2ApLCBhbiBgSW1wb3J0YCwgYSBgQ2hhcnNldGAKICAgICAqICAgICAgICBvciBhbm90aGVyIGBDU1NMaXN0YCAobW9zdCBsaWtlbHkgYSBgTWVkaWFRdWVyeWApCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXBsYWNlKCRvT2xkSXRlbSwgJG1OZXdJdGVtKQogICAgewogICAgICAgICRpS2V5ID0gYXJyYXlfc2VhcmNoKCRvT2xkSXRlbSwgJHRoaXMtPmFDb250ZW50cywgdHJ1ZSk7CiAgICAgICAgaWYgKCRpS2V5ICE9PSBmYWxzZSkgewogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJG1OZXdJdGVtKSkgewogICAgICAgICAgICAgICAgYXJyYXlfc3BsaWNlKCR0aGlzLT5hQ29udGVudHMsICRpS2V5LCAxLCAkbU5ld0l0ZW0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYXJyYXlfc3BsaWNlKCR0aGlzLT5hQ29udGVudHMsICRpS2V5LCAxLCBbJG1OZXdJdGVtXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFJ1bGVTZXR8SW1wb3J0fENoYXJzZXR8Q1NTTGlzdD4gJGFDb250ZW50cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Q29udGVudHMoYXJyYXkgJGFDb250ZW50cykKICAgIHsKICAgICAgICAkdGhpcy0+YUNvbnRlbnRzID0gW107CiAgICAgICAgZm9yZWFjaCAoJGFDb250ZW50cyBhcyAkY29udGVudCkgewogICAgICAgICAgICAkdGhpcy0+YXBwZW5kKCRjb250ZW50KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIGEgZGVjbGFyYXRpb24gYmxvY2sgZnJvbSB0aGUgQ1NTIGxpc3QgaWYgaXQgbWF0Y2hlcyBhbGwgZ2l2ZW4gc2VsZWN0b3JzLgogICAgICoKICAgICAqIEBwYXJhbSBEZWNsYXJhdGlvbkJsb2NrfGFycmF5PGFycmF5LWtleSwgU2VsZWN0b3I+fHN0cmluZyAkbVNlbGVjdG9yIHRoZSBzZWxlY3RvcnMgdG8gbWF0Y2gKICAgICAqIEBwYXJhbSBib29sICRiUmVtb3ZlQWxsIHdoZXRoZXIgdG8gc3RvcCBhdCB0aGUgZmlyc3QgZGVjbGFyYXRpb24gYmxvY2sgZm91bmQgb3IgcmVtb3ZlIGFsbCBibG9ja3MKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZURlY2xhcmF0aW9uQmxvY2tCeVNlbGVjdG9yKCRtU2VsZWN0b3IsICRiUmVtb3ZlQWxsID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCRtU2VsZWN0b3IgaW5zdGFuY2VvZiBEZWNsYXJhdGlvbkJsb2NrKSB7CiAgICAgICAgICAgICRtU2VsZWN0b3IgPSAkbVNlbGVjdG9yLT5nZXRTZWxlY3RvcnMoKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc19hcnJheSgkbVNlbGVjdG9yKSkgewogICAgICAgICAgICAkbVNlbGVjdG9yID0gZXhwbG9kZSgnLCcsICRtU2VsZWN0b3IpOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkbVNlbGVjdG9yIGFzICRpS2V5ID0+ICYkbVNlbCkgewogICAgICAgICAgICBpZiAoISgkbVNlbCBpbnN0YW5jZW9mIFNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgaWYgKCFTZWxlY3Rvcjo6aXNWYWxpZCgkbVNlbCkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAiU2VsZWN0b3IgZGlkIG5vdCBtYXRjaCAnIiAuIFNlbGVjdG9yOjpTRUxFQ1RPUl9WQUxJREFUSU9OX1JYIC4gIicuIiwKICAgICAgICAgICAgICAgICAgICAgICAgJG1TZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRtU2VsID0gbmV3IFNlbGVjdG9yKCRtU2VsKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+YUNvbnRlbnRzIGFzICRpS2V5ID0+ICRtSXRlbSkgewogICAgICAgICAgICBpZiAoISgkbUl0ZW0gaW5zdGFuY2VvZiBEZWNsYXJhdGlvbkJsb2NrKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRtSXRlbS0+Z2V0U2VsZWN0b3JzKCkgPT0gJG1TZWxlY3RvcikgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmFDb250ZW50c1skaUtleV0pOwogICAgICAgICAgICAgICAgaWYgKCEkYlJlbW92ZUFsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgaW4gVjguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gVjkuMC4wLiBVc2UgYHJlbmRlcmAgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBPdXRwdXRGb3JtYXQoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVuZGVyTGlzdENvbnRlbnRzKE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkKICAgIHsKICAgICAgICAkc1Jlc3VsdCA9ICcnOwogICAgICAgICRiSXNGaXJzdCA9IHRydWU7CiAgICAgICAgJG9OZXh0TGV2ZWwgPSAkb091dHB1dEZvcm1hdDsKICAgICAgICBpZiAoISR0aGlzLT5pc1Jvb3RMaXN0KCkpIHsKICAgICAgICAgICAgJG9OZXh0TGV2ZWwgPSAkb091dHB1dEZvcm1hdC0+bmV4dExldmVsKCk7CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5hQ29udGVudHMgYXMgJG9Db250ZW50KSB7CiAgICAgICAgICAgICRzUmVuZGVyZWQgPSAkb091dHB1dEZvcm1hdC0+c2FmZWx5KGZ1bmN0aW9uICgpIHVzZSAoJG9OZXh0TGV2ZWwsICRvQ29udGVudCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRvQ29udGVudC0+cmVuZGVyKCRvTmV4dExldmVsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICgkc1JlbmRlcmVkID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGJJc0ZpcnN0KSB7CiAgICAgICAgICAgICAgICAkYklzRmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgICRzUmVzdWx0IC49ICRvTmV4dExldmVsLT5zcGFjZUJlZm9yZUJsb2NrcygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNSZXN1bHQgLj0gJG9OZXh0TGV2ZWwtPnNwYWNlQmV0d2VlbkJsb2NrcygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzUmVzdWx0IC49ICRzUmVuZGVyZWQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRiSXNGaXJzdCkgewogICAgICAgICAgICAvLyBIYWQgc29tZSBvdXRwdXQKICAgICAgICAgICAgJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNwYWNlQWZ0ZXJCbG9ja3MoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkc1Jlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBsaXN0IGNhbiBub3QgYmUgZnVydGhlciBvdXRkZW50ZWQuIE9ubHkgaW1wb3J0YW50IHdoZW4gcmVuZGVyaW5nLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gaXNSb290TGlzdCgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RvcmVkIGl0ZW1zLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LCBSdWxlU2V0fEltcG9ydHxDaGFyc2V0fENTU0xpc3Q+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hQ29udGVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBDb21tZW50PiAkYUNvbW1lbnRzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKQogICAgewogICAgICAgICR0aGlzLT5hQ29tbWVudHMgPSBhcnJheV9tZXJnZSgkdGhpcy0+YUNvbW1lbnRzLCAkYUNvbW1lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8YXJyYXkta2V5LCBDb21tZW50PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29tbWVudHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YUNvbW1lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4gJGFDb21tZW50cwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Q29tbWVudHMoYXJyYXkgJGFDb21tZW50cykKICAgIHsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gJGFDb21tZW50czsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/CSSList/Document.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcUGFyc2VyU3RhdGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFNvdXJjZUV4Y2VwdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yOwp1c2UgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrOwp1c2UgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxSdWxlU2V0OwoKLyoqCiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgcm9vdCBvZiBhIHBhcnNlZCBDU1MgZmlsZS4gSXQgY29udGFpbnMgYWxsIHRvcC1sZXZlbCBDU1MgY29udGVudHM6IG1vc3RseSBkZWNsYXJhdGlvbgogKiBibG9ja3MsIGJ1dCBhbHNvIGFueSBhdC1ydWxlcyBlbmNvdW50ZXJlZCAoYEltcG9ydGAgYW5kIGBDaGFyc2V0YCkuCiAqLwpjbGFzcyBEb2N1bWVudCBleHRlbmRzIENTU0Jsb2NrTGlzdAp7CiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRpTGluZU5vKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gRG9jdW1lbnQKICAgICAqCiAgICAgKiBAdGhyb3dzIFNvdXJjZUV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSBWOC44LjAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlKQogICAgewogICAgICAgICRvRG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQoJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CiAgICAgICAgQ1NTTGlzdDo6cGFyc2VMaXN0KCRvUGFyc2VyU3RhdGUsICRvRG9jdW1lbnQpOwogICAgICAgIHJldHVybiAkb0RvY3VtZW50OwogICAgfQoKICAgIC8qKgogICAgICogR2V0cyBhbGwgYERlY2xhcmF0aW9uQmxvY2tgIG9iamVjdHMgcmVjdXJzaXZlbHksIG5vIG1hdHRlciBob3cgZGVlcGx5IG5lc3RlZCB0aGUgc2VsZWN0b3JzIGFyZS4KICAgICAqIEFsaWFzZWQgYXMgYGdldEFsbFNlbGVjdG9ycygpYC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgRGVjbGFyYXRpb25CbG9jaz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCkKICAgIHsKICAgICAgICAvKiogQHZhciBhcnJheTxpbnQsIERlY2xhcmF0aW9uQmxvY2s+ICRhUmVzdWx0ICovCiAgICAgICAgJGFSZXN1bHQgPSBbXTsKICAgICAgICAkdGhpcy0+YWxsRGVjbGFyYXRpb25CbG9ja3MoJGFSZXN1bHQpOwogICAgICAgIHJldHVybiAkYVJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgYWxsIGBEZWNsYXJhdGlvbkJsb2NrYCBvYmplY3RzIHJlY3Vyc2l2ZWx5LgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LCBEZWNsYXJhdGlvbkJsb2NrPgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDkuMDsgdXNlIGBnZXRBbGxEZWNsYXJhdGlvbkJsb2NrcygpYCBpbnN0ZWFkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGxTZWxlY3RvcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIGBSdWxlU2V0YCBvYmplY3RzIHJlY3Vyc2l2ZWx5IGZvdW5kIGluIHRoZSB0cmVlLCBubyBtYXR0ZXIgaG93IGRlZXBseSBuZXN0ZWQgdGhlIHJ1bGUgc2V0cyBhcmUuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIFJ1bGVTZXQ+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGxSdWxlU2V0cygpCiAgICB7CiAgICAgICAgLyoqIEB2YXIgYXJyYXk8aW50LCBSdWxlU2V0PiAkYVJlc3VsdCAqLwogICAgICAgICRhUmVzdWx0ID0gW107CiAgICAgICAgJHRoaXMtPmFsbFJ1bGVTZXRzKCRhUmVzdWx0KTsKICAgICAgICByZXR1cm4gJGFSZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFsbCBgU2VsZWN0b3JgIG9iamVjdHMgd2l0aCB0aGUgcmVxdWVzdGVkIHNwZWNpZmljaXR5IGZvdW5kIHJlY3Vyc2l2ZWx5IGluIHRoZSB0cmVlLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHlpZWxkIHRoZSBmdWxsIGBEZWNsYXJhdGlvbkJsb2NrYCB0aGF0IHRoZSBzZWxlY3RvciBiZWxvbmdzIHRvCiAgICAgKiAoYW5kLCBjdXJyZW50bHksIHRoZXJlIGlzIG5vIHdheSB0byBnZXQgdG8gdGhhdCkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRzU3BlY2lmaWNpdHlTZWFyY2gKICAgICAqICAgICAgICBBbiBvcHRpb25hbCBmaWx0ZXIgYnkgc3BlY2lmaWNpdHkuCiAgICAgKiAgICAgICAgTWF5IGNvbnRhaW4gYSBjb21wYXJpc29uIG9wZXJhdG9yIGFuZCBhIG51bWJlciBvciBqdXN0IGEgbnVtYmVyIChkZWZhdWx0cyB0byAiPT0iKS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgU2VsZWN0b3I+CiAgICAgKiBAZXhhbXBsZSBgZ2V0U2VsZWN0b3JzQnlTcGVjaWZpY2l0eSgnPj0gMTAwJylgCiAgICAgKgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VsZWN0b3JzQnlTcGVjaWZpY2l0eSgkc1NwZWNpZmljaXR5U2VhcmNoID0gbnVsbCkKICAgIHsKICAgICAgICAvKiogQHZhciBhcnJheTxpbnQsIFNlbGVjdG9yPiAkYVJlc3VsdCAqLwogICAgICAgICRhUmVzdWx0ID0gW107CiAgICAgICAgJHRoaXMtPmFsbFNlbGVjdG9ycygkYVJlc3VsdCwgJHNTcGVjaWZpY2l0eVNlYXJjaCk7CiAgICAgICAgcmV0dXJuICRhUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogRXhwYW5kcyBhbGwgc2hvcnRoYW5kIHByb3BlcnRpZXMgdG8gdGhlaXIgbG9uZyB2YWx1ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSA4LjcuMCwgd2lsbCBiZSByZW1vdmVkIHdpdGhvdXQgc3Vic3RpdHV0aW9uIGluIHZlcnNpb24gOS4wIGluICM1MTEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZFNob3J0aGFuZHMoKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5nZXRBbGxEZWNsYXJhdGlvbkJsb2NrcygpIGFzICRvRGVjbGFyYXRpb24pIHsKICAgICAgICAgICAgJG9EZWNsYXJhdGlvbi0+ZXhwYW5kU2hvcnRoYW5kcygpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBzaG9ydGhhbmRzIHByb3BlcnRpZXMgd2hlbmV2ZXIgcG9zc2libGUuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgOC43LjAsIHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHN1YnN0aXR1dGlvbiBpbiB2ZXJzaW9uIDkuMCBpbiAjNTExCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTaG9ydGhhbmRzKCkKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKSBhcyAkb0RlY2xhcmF0aW9uKSB7CiAgICAgICAgICAgICRvRGVjbGFyYXRpb24tPmNyZWF0ZVNob3J0aGFuZHMoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBPdmVycmlkZXMgYHJlbmRlcigpYCB0byBtYWtlIGZvcm1hdCBhcmd1bWVudCBvcHRpb25hbC4KICAgICAqCiAgICAgKiBAcGFyYW0gT3V0cHV0Rm9ybWF0fG51bGwgJG9PdXRwdXRGb3JtYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCRvT3V0cHV0Rm9ybWF0ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJG9PdXRwdXRGb3JtYXQgPT09IG51bGwpIHsKICAgICAgICAgICAgJG9PdXRwdXRGb3JtYXQgPSBuZXcgT3V0cHV0Rm9ybWF0KCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb091dHB1dEZvcm1hdC0+Y29tbWVudHMoJHRoaXMpIC4gJHRoaXMtPnJlbmRlckxpc3RDb250ZW50cygkb091dHB1dEZvcm1hdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUm9vdExpc3QoKQogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/CSSList/KeyFrame.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZTsKCmNsYXNzIEtleUZyYW1lIGV4dGVuZHMgQ1NTTGlzdCBpbXBsZW1lbnRzIEF0UnVsZQp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkdmVuZG9yS2V5RnJhbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGFuaW1hdGlvbk5hbWU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaUxpbmVObyA9IDApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CiAgICAgICAgJHRoaXMtPnZlbmRvcktleUZyYW1lID0gbnVsbDsKICAgICAgICAkdGhpcy0+YW5pbWF0aW9uTmFtZSA9IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2ZW5kb3JLZXlGcmFtZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmVuZG9yS2V5RnJhbWUoJHZlbmRvcktleUZyYW1lKQogICAgewogICAgICAgICR0aGlzLT52ZW5kb3JLZXlGcmFtZSA9ICR2ZW5kb3JLZXlGcmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvcktleUZyYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZlbmRvcktleUZyYW1lOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYW5pbWF0aW9uTmFtZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0QW5pbWF0aW9uTmFtZSgkYW5pbWF0aW9uTmFtZSkKICAgIHsKICAgICAgICAkdGhpcy0+YW5pbWF0aW9uTmFtZSA9ICRhbmltYXRpb25OYW1lOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QW5pbWF0aW9uTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbmltYXRpb25OYW1lOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBpbiBWOC44LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiBWOS4wLjAuIFVzZSBgcmVuZGVyYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IE91dHB1dEZvcm1hdCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBPdXRwdXRGb3JtYXR8bnVsbCAkb091dHB1dEZvcm1hdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoJG9PdXRwdXRGb3JtYXQpCiAgICB7CiAgICAgICAgJHNSZXN1bHQgPSAkb091dHB1dEZvcm1hdC0+Y29tbWVudHMoJHRoaXMpOwogICAgICAgICRzUmVzdWx0IC49ICJAeyR0aGlzLT52ZW5kb3JLZXlGcmFtZX0geyR0aGlzLT5hbmltYXRpb25OYW1lfXskb091dHB1dEZvcm1hdC0+c3BhY2VCZWZvcmVPcGVuaW5nQnJhY2UoKX17IjsKICAgICAgICAkc1Jlc3VsdCAuPSAkdGhpcy0+cmVuZGVyTGlzdENvbnRlbnRzKCRvT3V0cHV0Rm9ybWF0KTsKICAgICAgICAkc1Jlc3VsdCAuPSAnfSc7CiAgICAgICAgcmV0dXJuICRzUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1Jvb3RMaXN0KCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZlbmRvcktleUZyYW1lOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXRSdWxlQXJncygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbmltYXRpb25OYW1lOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/OutputFormat.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCi8qKgogKiBFeHRlbmRpbmcgdGhpcyBjbGFzcyBpcyBkZXByZWNhdGVkIGluIHZlcnNpb24gOC44LjA7IGl0IHdpbGwgYmUgbWFkZSBgZmluYWxgIGluIHZlcnNpb24gOS4wLjAuCiAqCiAqIEBtZXRob2QgT3V0cHV0Rm9ybWF0IHNldFNlbWljb2xvbkFmdGVyTGFzdFJ1bGUoYm9vbCAkYlNlbWljb2xvbkFmdGVyTGFzdFJ1bGUpIFNldCB3aGV0aGVyIHNlbWljb2xvbnMgYXJlIGFkZGVkIGFmdGVyCiAqICAgICBsYXN0IHJ1bGUuCiAqLwpjbGFzcyBPdXRwdXRGb3JtYXQKewogICAgLyoqCiAgICAgKiBWYWx1ZSBmb3JtYXQ6IGAiYCBtZWFucyBkb3VibGUtcXVvdGUsIGAnYCBtZWFucyBzaW5nbGUtcXVvdGUKICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzU3RyaW5nUXVvdGluZ1R5cGUgPSAnIic7CgogICAgLyoqCiAgICAgKiBPdXRwdXQgUkdCIGNvbG9ycyBpbiBoYXNoIG5vdGF0aW9uIGlmIHBvc3NpYmxlCiAgICAgKgogICAgICogQHZhciBib29sCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wLCB3aWxsIGJlIG1hZGUgcHJpdmF0ZSBpbiA5LjAuMAogICAgICovCiAgICBwdWJsaWMgJGJSR0JIYXNoTm90YXRpb24gPSB0cnVlOwoKICAgIC8qKgogICAgICogRGVjbGFyYXRpb24gZm9ybWF0CiAgICAgKgogICAgICogU2VtaWNvbG9uIGFmdGVyIHRoZSBsYXN0IHJ1bGUgb2YgYSBkZWNsYXJhdGlvbiBibG9jayBjYW4gYmUgb21pdHRlZC4gVG8gZG8gdGhhdCwgc2V0IHRoaXMgZmFsc2UuCiAgICAgKgogICAgICogQHZhciBib29sCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wLCB3aWxsIGJlIG1hZGUgcHJpdmF0ZSBpbiA5LjAuMAogICAgICovCiAgICBwdWJsaWMgJGJTZW1pY29sb25BZnRlckxhc3RSdWxlID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIFNwYWNpbmcKICAgICAqIE5vdGUgdGhhdCB0aGVzZSBzdHJpbmdzIGFyZSBub3Qgc2FuaXR5LWNoZWNrZWQ6IHRoZSB2YWx1ZSBzaG91bGQgb25seSBjb25zaXN0IG9mIHdoaXRlc3BhY2UKICAgICAqIEFueSBuZXdsaW5lIGNoYXJhY3RlciB3aWxsIGJlIGluZGVudGVkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsZXZlbC4KICAgICAqIFRoZSB0cmlwbGVzIChBZnRlciwgQmVmb3JlLCBCZXR3ZWVuKSBjYW4gYmUgc2V0IHVzaW5nIGEgd2lsZGNhcmQgKGUuZy4gYCRvRm9ybWF0LT5zZXQoJ1NwYWNlKlJ1bGVzJywgIlxuIik7YCkKICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzU3BhY2VBZnRlclJ1bGVOYW1lID0gJyAnOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAsIHdpbGwgYmUgbWFkZSBwcml2YXRlIGluIDkuMC4wCiAgICAgKi8KICAgIHB1YmxpYyAkc1NwYWNlQmVmb3JlUnVsZXMgPSAnJzsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wLCB3aWxsIGJlIG1hZGUgcHJpdmF0ZSBpbiA5LjAuMAogICAgICovCiAgICBwdWJsaWMgJHNTcGFjZUFmdGVyUnVsZXMgPSAnJzsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wLCB3aWxsIGJlIG1hZGUgcHJpdmF0ZSBpbiA5LjAuMAogICAgICovCiAgICBwdWJsaWMgJHNTcGFjZUJldHdlZW5SdWxlcyA9ICcnOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAsIHdpbGwgYmUgbWFkZSBwcml2YXRlIGluIDkuMC4wCiAgICAgKi8KICAgIHB1YmxpYyAkc1NwYWNlQmVmb3JlQmxvY2tzID0gJyc7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzU3BhY2VBZnRlckJsb2NrcyA9ICcnOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAsIHdpbGwgYmUgbWFkZSBwcml2YXRlIGluIDkuMC4wCiAgICAgKi8KICAgIHB1YmxpYyAkc1NwYWNlQmV0d2VlbkJsb2NrcyA9ICJcbiI7CgogICAgLyoqCiAgICAgKiBDb250ZW50IGluamVjdGVkIGluIGFuZCBhcm91bmQgYXQtcnVsZSBibG9ja3MuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAsIHdpbGwgYmUgbWFkZSBwcml2YXRlIGluIDkuMC4wCiAgICAgKi8KICAgIHB1YmxpYyAkc0JlZm9yZUF0UnVsZUJsb2NrID0gJyc7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzQWZ0ZXJBdFJ1bGVCbG9jayA9ICcnOwoKICAgIC8qKgogICAgICogVGhpcyBpcyB3aGF04oCZcyBwcmludGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNvbW1hIGlmIGEgZGVjbGFyYXRpb24gYmxvY2sgY29udGFpbnMgbXVsdGlwbGUgc2VsZWN0b3JzLgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wLCB3aWxsIGJlIG1hZGUgcHJpdmF0ZSBpbiA5LjAuMAogICAgICovCiAgICBwdWJsaWMgJHNTcGFjZUJlZm9yZVNlbGVjdG9yU2VwYXJhdG9yID0gJyc7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzU3BhY2VBZnRlclNlbGVjdG9yU2VwYXJhdG9yID0gJyAnOwoKICAgIC8qKgogICAgICogVGhpcyBpcyB3aGF04oCZcyBpbnNlcnRlZCBiZWZvcmUgdGhlIHNlcGFyYXRvciBpbiB2YWx1ZSBsaXN0cywgYnkgZGVmYXVsdC4KICAgICAqCiAgICAgKiBgYXJyYXlgIGlzIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiA4LjguMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDkuMC4wLgogICAgICogVG8gc2V0IHRoZSBzcGFjaW5nIGZvciBzcGVjaWZpYyBzZXBhcmF0b3JzLCB1c2Uge0BzZWUgJGFTcGFjZUJlZm9yZUxpc3RBcmd1bWVudFNlcGFyYXRvcnN9IGluc3RlYWQuCiAgICAgKgogICAgICogQHZhciBzdHJpbmd8YXJyYXk8bm9uLWVtcHR5LXN0cmluZywgc3RyaW5nPgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzU3BhY2VCZWZvcmVMaXN0QXJndW1lbnRTZXBhcmF0b3IgPSAnJzsKCiAgICAvKioKICAgICAqIEtleXMgYXJlIHNlcGFyYXRvcnMgKGUuZy4gYCxgKS4gIFZhbHVlcyBhcmUgdGhlIHNwYWNlIHNlcXVlbmNlIHRvIGluc2VydCwgb3IgYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8bm9uLWVtcHR5LXN0cmluZywgc3RyaW5nPgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRhU3BhY2VCZWZvcmVMaXN0QXJndW1lbnRTZXBhcmF0b3JzID0gW107CgogICAgLyoqCiAgICAgKiBUaGlzIGlzIHdoYXTigJlzIGluc2VydGVkIGFmdGVyIHRoZSBzZXBhcmF0b3IgaW4gdmFsdWUgbGlzdHMsIGJ5IGRlZmF1bHQuCiAgICAgKgogICAgICogYGFycmF5YCBpcyBkZXByZWNhdGVkIGluIHZlcnNpb24gOC44LjAsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA5LjAuMC4KICAgICAqIFRvIHNldCB0aGUgc3BhY2luZyBmb3Igc3BlY2lmaWMgc2VwYXJhdG9ycywgdXNlIHtAc2VlICRhU3BhY2VBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvcnN9IGluc3RlYWQuCiAgICAgKgogICAgICogQHZhciBzdHJpbmd8YXJyYXk8bm9uLWVtcHR5LXN0cmluZywgc3RyaW5nPgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzU3BhY2VBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvciA9ICcnOwoKICAgIC8qKgogICAgICogS2V5cyBhcmUgc2VwYXJhdG9ycyAoZS5nLiBgLGApLiAgVmFsdWVzIGFyZSB0aGUgc3BhY2Ugc2VxdWVuY2UgdG8gaW5zZXJ0LCBvciBhbiBlbXB0eSBzdHJpbmcuCiAgICAgKgogICAgICogQHZhciBhcnJheTxub24tZW1wdHktc3RyaW5nLCBzdHJpbmc+CiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wLCB3aWxsIGJlIG1hZGUgcHJpdmF0ZSBpbiA5LjAuMAogICAgICovCiAgICBwdWJsaWMgJGFTcGFjZUFmdGVyTGlzdEFyZ3VtZW50U2VwYXJhdG9ycyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAsIHdpbGwgYmUgbWFkZSBwcml2YXRlIGluIDkuMC4wCiAgICAgKi8KICAgIHB1YmxpYyAkc1NwYWNlQmVmb3JlT3BlbmluZ0JyYWNlID0gJyAnOwoKICAgIC8qKgogICAgICogQ29udGVudCBpbmplY3RlZCBpbiBhbmQgYXJvdW5kIGRlY2xhcmF0aW9uIGJsb2Nrcy4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzQmVmb3JlRGVjbGFyYXRpb25CbG9jayA9ICcnOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAsIHdpbGwgYmUgbWFkZSBwcml2YXRlIGluIDkuMC4wCiAgICAgKi8KICAgIHB1YmxpYyAkc0FmdGVyRGVjbGFyYXRpb25CbG9ja1NlbGVjdG9ycyA9ICcnOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAsIHdpbGwgYmUgbWFkZSBwcml2YXRlIGluIDkuMC4wCiAgICAgKi8KICAgIHB1YmxpYyAkc0FmdGVyRGVjbGFyYXRpb25CbG9jayA9ICcnOwoKICAgIC8qKgogICAgICogSW5kZW50YXRpb24gY2hhcmFjdGVyKHMpIHBlciBsZXZlbC4gT25seSBhcHBsaWNhYmxlIGlmIG5ld2xpbmVzIGFyZSB1c2VkIGluIGFueSBvZiB0aGUgc3BhY2luZyBzZXR0aW5ncy4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzSW5kZW50YXRpb24gPSAiXHQiOwoKICAgIC8qKgogICAgICogT3V0cHV0IGV4Y2VwdGlvbnMuCiAgICAgKgogICAgICogQHZhciBib29sCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wLCB3aWxsIGJlIG1hZGUgcHJpdmF0ZSBpbiA5LjAuMAogICAgICovCiAgICBwdWJsaWMgJGJJZ25vcmVFeGNlcHRpb25zID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBSZW5kZXIgY29tbWVudHMgZm9yIGxpc3RzIGFuZCBSdWxlU2V0cwogICAgICoKICAgICAqIEB2YXIgYm9vbAogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRiUmVuZGVyQ29tbWVudHMgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIEB2YXIgT3V0cHV0Rm9ybWF0dGVyfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkb0Zvcm1hdHRlciA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIE91dHB1dEZvcm1hdHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJG9OZXh0TGV2ZWxGb3JtYXQgPSBudWxsOwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkaUluZGVudGF0aW9uTGV2ZWwgPSAwOwoKICAgIC8qKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMC4gVXNlIHRoZSBmYWN0b3J5IG1ldGhvZHMgYGNyZWF0ZSgpYCwgYGNyZWF0ZUNvbXBhY3QoKWAsIG9yIGBjcmVhdGVQcmV0dHkoKWAgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNOYW1lCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gOS4wLjAuIFVzZSBzcGVjaWZpYyBnZXR0ZXJzIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoJHNOYW1lKQogICAgewogICAgICAgICRhVmFyUHJlZml4ZXMgPSBbJ2EnLCAncycsICdtJywgJ2InLCAnZicsICdvJywgJ2MnLCAnaSddOwogICAgICAgIGZvcmVhY2ggKCRhVmFyUHJlZml4ZXMgYXMgJHNQcmVmaXgpIHsKICAgICAgICAgICAgJHNGaWVsZE5hbWUgPSAkc1ByZWZpeCAuIHVjZmlyc3QoJHNOYW1lKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT4kc0ZpZWxkTmFtZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JHNGaWVsZE5hbWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBzdHJpbmc+fHN0cmluZyAkYU5hbWVzCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG1WYWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gc2VsZnxmYWxzZQogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gOS4wLjAuIFVzZSBzcGVjaWZpYyBzZXR0ZXJzIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXQoJGFOYW1lcywgJG1WYWx1ZSkKICAgIHsKICAgICAgICAkYVZhclByZWZpeGVzID0gWydhJywgJ3MnLCAnbScsICdiJywgJ2YnLCAnbycsICdjJywgJ2knXTsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRhTmFtZXMpICYmIHN0cnBvcygkYU5hbWVzLCAnKicpICE9PSBmYWxzZSkgewogICAgICAgICAgICAkYU5hbWVzID0KICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICBzdHJfcmVwbGFjZSgnKicsICdCZWZvcmUnLCAkYU5hbWVzKSwKICAgICAgICAgICAgICAgICAgICBzdHJfcmVwbGFjZSgnKicsICdCZXR3ZWVuJywgJGFOYW1lcyksCiAgICAgICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoJyonLCAnQWZ0ZXInLCAkYU5hbWVzKSwKICAgICAgICAgICAgICAgIF07CiAgICAgICAgfSBlbHNlaWYgKCFpc19hcnJheSgkYU5hbWVzKSkgewogICAgICAgICAgICAkYU5hbWVzID0gWyRhTmFtZXNdOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkYVZhclByZWZpeGVzIGFzICRzUHJlZml4KSB7CiAgICAgICAgICAgICRiRGlkUmVwbGFjZSA9IGZhbHNlOwogICAgICAgICAgICBmb3JlYWNoICgkYU5hbWVzIGFzICRzTmFtZSkgewogICAgICAgICAgICAgICAgJHNGaWVsZE5hbWUgPSAkc1ByZWZpeCAuIHVjZmlyc3QoJHNOYW1lKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+JHNGaWVsZE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPiRzRmllbGROYW1lID0gJG1WYWx1ZTsKICAgICAgICAgICAgICAgICAgICAkYkRpZFJlcGxhY2UgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkYkRpZFJlcGxhY2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBCcmVhayB0aGUgY2hhaW4gc28gdGhlIHVzZXIga25vd3MgdGhpcyBvcHRpb24gaXMgaW52YWxpZAogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNNZXRob2ROYW1lCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGFBcmd1bWVudHMKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoJHNNZXRob2ROYW1lLCBhcnJheSAkYUFyZ3VtZW50cykKICAgIHsKICAgICAgICBpZiAoc3RycG9zKCRzTWV0aG9kTmFtZSwgJ3NldCcpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2V0KHN1YnN0cigkc01ldGhvZE5hbWUsIDMpLCAkYUFyZ3VtZW50c1swXSk7CiAgICAgICAgfSBlbHNlaWYgKHN0cnBvcygkc01ldGhvZE5hbWUsICdnZXQnKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldChzdWJzdHIoJHNNZXRob2ROYW1lLCAzKSk7CiAgICAgICAgfSBlbHNlaWYgKG1ldGhvZF9leGlzdHMoT3V0cHV0Rm9ybWF0dGVyOjpjbGFzcywgJHNNZXRob2ROYW1lKSkgewogICAgICAgICAgICAvLyBAZGVwcmVjYXRlZCBzaW5jZSA4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIDkuMC4wLiBDYWxsIHRoZSBtZXRob2Qgb24gdGhlIGZvcm1hdHRlciBkaXJlY3RseSBpbnN0ZWFkLgogICAgICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmNfYXJyYXkoWyR0aGlzLT5nZXRGb3JtYXR0ZXIoKSwgJHNNZXRob2ROYW1lXSwgJGFBcmd1bWVudHMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdVbmtub3duIE91dHB1dEZvcm1hdCBtZXRob2QgY2FsbGVkOiAnIC4gJHNNZXRob2ROYW1lKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpTnVtYmVyCiAgICAgKgogICAgICogQHJldHVybiBzZWxmCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbmRlbnRXaXRoVGFicygkaU51bWJlciA9IDEpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZXRJbmRlbnRhdGlvbihzdHJfcmVwZWF0KCJcdCIsICRpTnVtYmVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpTnVtYmVyCiAgICAgKgogICAgICogQHJldHVybiBzZWxmCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbmRlbnRXaXRoU3BhY2VzKCRpTnVtYmVyID0gMikKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNldEluZGVudGF0aW9uKHN0cl9yZXBlYXQoIiAiLCAkaU51bWJlcikpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBPdXRwdXRGb3JtYXQKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgVjguOC4wCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBuZXh0TGV2ZWwoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+b05leHRMZXZlbEZvcm1hdCA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+b05leHRMZXZlbEZvcm1hdCA9IGNsb25lICR0aGlzOwogICAgICAgICAgICAkdGhpcy0+b05leHRMZXZlbEZvcm1hdC0+aUluZGVudGF0aW9uTGV2ZWwrKzsKICAgICAgICAgICAgJHRoaXMtPm9OZXh0TGV2ZWxGb3JtYXQtPm9Gb3JtYXR0ZXIgPSBudWxsOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPm9OZXh0TGV2ZWxGb3JtYXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJlTGVuaWVudCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmJJZ25vcmVFeGNlcHRpb25zID0gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gT3V0cHV0Rm9ybWF0dGVyCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGb3JtYXR0ZXIoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+b0Zvcm1hdHRlciA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+b0Zvcm1hdHRlciA9IG5ldyBPdXRwdXRGb3JtYXR0ZXIoJHRoaXMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5vRm9ybWF0dGVyOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCAjODY5IHNpbmNlIHZlcnNpb24gVjguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gVjkuMC4wLiBVc2UgYGdldEluZGVudGF0aW9uTGV2ZWwoKWAgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxldmVsKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlJbmRlbnRhdGlvbkxldmVsOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHdpdGhvdXQgYW55IHBhcnRpY3VsYXIgZm9ybWF0dGluZyBzZXR0aW5ncy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHNlbGYKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoKQogICAgewogICAgICAgIHJldHVybiBuZXcgT3V0cHV0Rm9ybWF0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3Mgd2l0aCBhIHByZXNldCBmb3IgY29tcGFjdCBmb3JtYXR0aW5nLgogICAgICoKICAgICAqIEByZXR1cm4gc2VsZgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUNvbXBhY3QoKQogICAgewogICAgICAgICRmb3JtYXQgPSBzZWxmOjpjcmVhdGUoKTsKICAgICAgICAkZm9ybWF0LT5zZXQoJ1NwYWNlKlJ1bGVzJywgIiIpCiAgICAgICAgICAgIC0+c2V0KCdTcGFjZSpCbG9ja3MnLCAiIikKICAgICAgICAgICAgLT5zZXRTcGFjZUFmdGVyUnVsZU5hbWUoJycpCiAgICAgICAgICAgIC0+c2V0U3BhY2VCZWZvcmVPcGVuaW5nQnJhY2UoJycpCiAgICAgICAgICAgIC0+c2V0U3BhY2VBZnRlclNlbGVjdG9yU2VwYXJhdG9yKCcnKQogICAgICAgICAgICAtPnNldFJlbmRlckNvbW1lbnRzKGZhbHNlKTsKICAgICAgICByZXR1cm4gJGZvcm1hdDsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyB3aXRoIGEgcHJlc2V0IGZvciBwcmV0dHkgZm9ybWF0dGluZy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHNlbGYKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQcmV0dHkoKQogICAgewogICAgICAgICRmb3JtYXQgPSBzZWxmOjpjcmVhdGUoKTsKICAgICAgICAkZm9ybWF0LT5zZXQoJ1NwYWNlKlJ1bGVzJywgIlxuIikKICAgICAgICAgICAgLT5zZXQoJ1NwYWNlKkJsb2NrcycsICJcbiIpCiAgICAgICAgICAgIC0+c2V0U3BhY2VCZXR3ZWVuQmxvY2tzKCJcblxuIikKICAgICAgICAgICAgLT5zZXQoJ1NwYWNlQWZ0ZXJMaXN0QXJndW1lbnRTZXBhcmF0b3JzJywgWycsJyA9PiAnICddKQogICAgICAgICAgICAtPnNldFJlbmRlckNvbW1lbnRzKHRydWUpOwogICAgICAgIHJldHVybiAkZm9ybWF0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/OutputFormatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50XENvbW1lbnRhYmxlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xPdXRwdXRFeGNlcHRpb247CgovKioKICogQGludGVybmFsIHNpbmNlIDguOC4wCiAqLwpjbGFzcyBPdXRwdXRGb3JtYXR0ZXIKewogICAgLyoqCiAgICAgKiBAdmFyIE91dHB1dEZvcm1hdAogICAgICovCiAgICBwcml2YXRlICRvRm9ybWF0OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChPdXRwdXRGb3JtYXQgJG9Gb3JtYXQpCiAgICB7CiAgICAgICAgJHRoaXMtPm9Gb3JtYXQgPSAkb0Zvcm1hdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNOYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHNUeXBlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNwYWNlKCRzTmFtZSwgJHNUeXBlID0gbnVsbCkKICAgIHsKICAgICAgICAkc1NwYWNlU3RyaW5nID0gJHRoaXMtPm9Gb3JtYXQtPmdldCgiU3BhY2Ukc05hbWUiKTsKICAgICAgICAvLyBJZiAkc1NwYWNlU3RyaW5nIGlzIGFuIGFycmF5LCB3ZSBoYXZlIG11bHRpcGxlIHZhbHVlcyBjb25maWd1cmVkCiAgICAgICAgLy8gZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIG9iamVjdCB0aGUgc3BhY2UgYXBwbGllcyB0bwogICAgICAgIGlmIChpc19hcnJheSgkc1NwYWNlU3RyaW5nKSkgewogICAgICAgICAgICBpZiAoJHNUeXBlICE9PSBudWxsICYmIGlzc2V0KCRzU3BhY2VTdHJpbmdbJHNUeXBlXSkpIHsKICAgICAgICAgICAgICAgICRzU3BhY2VTdHJpbmcgPSAkc1NwYWNlU3RyaW5nWyRzVHlwZV07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc1NwYWNlU3RyaW5nID0gcmVzZXQoJHNTcGFjZVN0cmluZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmVwYXJlU3BhY2UoJHNTcGFjZVN0cmluZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BhY2VBZnRlclJ1bGVOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYWNlKCdBZnRlclJ1bGVOYW1lJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BhY2VCZWZvcmVSdWxlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFjZSgnQmVmb3JlUnVsZXMnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzcGFjZUFmdGVyUnVsZXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhY2UoJ0FmdGVyUnVsZXMnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzcGFjZUJldHdlZW5SdWxlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFjZSgnQmV0d2VlblJ1bGVzJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BhY2VCZWZvcmVCbG9ja3MoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhY2UoJ0JlZm9yZUJsb2NrcycpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNwYWNlQWZ0ZXJCbG9ja3MoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhY2UoJ0FmdGVyQmxvY2tzJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BhY2VCZXR3ZWVuQmxvY2tzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYWNlKCdCZXR3ZWVuQmxvY2tzJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BhY2VCZWZvcmVTZWxlY3RvclNlcGFyYXRvcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFjZSgnQmVmb3JlU2VsZWN0b3JTZXBhcmF0b3InKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzcGFjZUFmdGVyU2VsZWN0b3JTZXBhcmF0b3IoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhY2UoJ0FmdGVyU2VsZWN0b3JTZXBhcmF0b3InKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNTZXBhcmF0b3IKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BhY2VCZWZvcmVMaXN0QXJndW1lbnRTZXBhcmF0b3IoJHNTZXBhcmF0b3IpCiAgICB7CiAgICAgICAgJHNwYWNlRm9yU2VwYXJhdG9yID0gJHRoaXMtPm9Gb3JtYXQtPmdldFNwYWNlQmVmb3JlTGlzdEFyZ3VtZW50U2VwYXJhdG9ycygpOwogICAgICAgIGlmIChpc3NldCgkc3BhY2VGb3JTZXBhcmF0b3JbJHNTZXBhcmF0b3JdKSkgewogICAgICAgICAgICByZXR1cm4gJHNwYWNlRm9yU2VwYXJhdG9yWyRzU2VwYXJhdG9yXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c3BhY2UoJ0JlZm9yZUxpc3RBcmd1bWVudFNlcGFyYXRvcicsICRzU2VwYXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNTZXBhcmF0b3IKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BhY2VBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvcigkc1NlcGFyYXRvcikKICAgIHsKICAgICAgICAkc3BhY2VGb3JTZXBhcmF0b3IgPSAkdGhpcy0+b0Zvcm1hdC0+Z2V0U3BhY2VBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvcnMoKTsKICAgICAgICBpZiAoaXNzZXQoJHNwYWNlRm9yU2VwYXJhdG9yWyRzU2VwYXJhdG9yXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRzcGFjZUZvclNlcGFyYXRvclskc1NlcGFyYXRvcl07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYWNlKCdBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvcicsICRzU2VwYXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFjZSgnQmVmb3JlT3BlbmluZ0JyYWNlJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zIHRoZSBnaXZlbiBjb2RlLCBlaXRoZXIgc3dhbGxvd2luZyBvciBwYXNzaW5nIGV4Y2VwdGlvbnMsIGRlcGVuZGluZyBvbiB0aGUgYGJJZ25vcmVFeGNlcHRpb25zYCBzZXR0aW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNDb2RlIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBjYWxsCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2FmZWx5KCRjQ29kZSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPm9Gb3JtYXQtPmdldCgnSWdub3JlRXhjZXB0aW9ucycpKSB7CiAgICAgICAgICAgIC8vIElmIG91dHB1dCBleGNlcHRpb25zIGFyZSBpZ25vcmVkLCBydW4gdGhlIGNvZGUgd2l0aCBleGNlcHRpb24gZ3VhcmRzCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGNDb2RlKCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKE91dHB1dEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0gLy8gRG8gbm90aGluZwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFJ1biB0aGUgY29kZSBhcy1pcwogICAgICAgICAgICByZXR1cm4gJGNDb2RlKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2xvbmUgb2YgdGhlIGBpbXBsb2RlYCBmdW5jdGlvbiwgYnV0IGNhbGxzIGByZW5kZXJgIHdpdGggdGhlIGN1cnJlbnQgb3V0cHV0IGZvcm1hdCBpbnN0ZWFkIG9mIGBfX3RvU3RyaW5nKClgLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNTZXBhcmF0b3IKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIFJlbmRlcmFibGV8c3RyaW5nPiAkYVZhbHVlcwogICAgICogQHBhcmFtIGJvb2wgJGJJbmNyZWFzZUxldmVsCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGltcGxvZGUoJHNTZXBhcmF0b3IsIGFycmF5ICRhVmFsdWVzLCAkYkluY3JlYXNlTGV2ZWwgPSBmYWxzZSkKICAgIHsKICAgICAgICAkc1Jlc3VsdCA9ICcnOwogICAgICAgICRvRm9ybWF0ID0gJHRoaXMtPm9Gb3JtYXQ7CiAgICAgICAgaWYgKCRiSW5jcmVhc2VMZXZlbCkgewogICAgICAgICAgICAkb0Zvcm1hdCA9ICRvRm9ybWF0LT5uZXh0TGV2ZWwoKTsKICAgICAgICB9CiAgICAgICAgJGJJc0ZpcnN0ID0gdHJ1ZTsKICAgICAgICBmb3JlYWNoICgkYVZhbHVlcyBhcyAkbVZhbHVlKSB7CiAgICAgICAgICAgIGlmICgkYklzRmlyc3QpIHsKICAgICAgICAgICAgICAgICRiSXNGaXJzdCA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNSZXN1bHQgLj0gJHNTZXBhcmF0b3I7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRtVmFsdWUgaW5zdGFuY2VvZiBSZW5kZXJhYmxlKSB7CiAgICAgICAgICAgICAgICAkc1Jlc3VsdCAuPSAkbVZhbHVlLT5yZW5kZXIoJG9Gb3JtYXQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNSZXN1bHQgLj0gJG1WYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHNSZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzU3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUxhc3RTZW1pY29sb24oJHNTdHJpbmcpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5vRm9ybWF0LT5nZXQoJ1NlbWljb2xvbkFmdGVyTGFzdFJ1bGUnKSkgewogICAgICAgICAgICByZXR1cm4gJHNTdHJpbmc7CiAgICAgICAgfQogICAgICAgICRzU3RyaW5nID0gZXhwbG9kZSgnOycsICRzU3RyaW5nKTsKICAgICAgICBpZiAoY291bnQoJHNTdHJpbmcpIDwgMikgewogICAgICAgICAgICByZXR1cm4gJHNTdHJpbmdbMF07CiAgICAgICAgfQogICAgICAgICRzTGFzdCA9IGFycmF5X3BvcCgkc1N0cmluZyk7CiAgICAgICAgJHNOZXh0VG9MYXN0ID0gYXJyYXlfcG9wKCRzU3RyaW5nKTsKICAgICAgICBhcnJheV9wdXNoKCRzU3RyaW5nLCAkc05leHRUb0xhc3QgLiAkc0xhc3QpOwogICAgICAgIHJldHVybiBpbXBsb2RlKCc7JywgJHNTdHJpbmcpOwogICAgfQoKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxDb21tZW50YWJsZT4gJGFDb21tZW50cwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21tZW50cyhDb21tZW50YWJsZSAkb0NvbW1lbnRhYmxlKQogICAgewogICAgICAgIGlmICghJHRoaXMtPm9Gb3JtYXQtPmJSZW5kZXJDb21tZW50cykgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkc1Jlc3VsdCA9ICcnOwogICAgICAgICRhQ29tbWVudHMgPSAkb0NvbW1lbnRhYmxlLT5nZXRDb21tZW50cygpOwogICAgICAgICRpTGFzdENvbW1lbnRJbmRleCA9IGNvdW50KCRhQ29tbWVudHMpIC0gMTsKCiAgICAgICAgZm9yZWFjaCAoJGFDb21tZW50cyBhcyAkaSA9PiAkb0NvbW1lbnQpIHsKICAgICAgICAgICAgJHNSZXN1bHQgLj0gJG9Db21tZW50LT5yZW5kZXIoJHRoaXMtPm9Gb3JtYXQpOwogICAgICAgICAgICAkc1Jlc3VsdCAuPSAkaSA9PT0gJGlMYXN0Q29tbWVudEluZGV4ID8gJHRoaXMtPnNwYWNlQWZ0ZXJCbG9ja3MoKSA6ICR0aGlzLT5zcGFjZUJldHdlZW5CbG9ja3MoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRzUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1NwYWNlU3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcmVwYXJlU3BhY2UoJHNTcGFjZVN0cmluZykKICAgIHsKICAgICAgICByZXR1cm4gc3RyX3JlcGxhY2UoIlxuIiwgIlxuIiAuICR0aGlzLT5pbmRlbnQoKSwgJHNTcGFjZVN0cmluZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGluZGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cl9yZXBlYXQoJHRoaXMtPm9Gb3JtYXQtPnNJbmRlbnRhdGlvbiwgJHRoaXMtPm9Gb3JtYXQtPmdldEluZGVudGF0aW9uTGV2ZWwoKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XERvY3VtZW50Owp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xQYXJzZXJTdGF0ZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcU291cmNlRXhjZXB0aW9uOwoKLyoqCiAqIFRoaXMgY2xhc3MgcGFyc2VzIENTUyBmcm9tIHRleHQgaW50byBhIGRhdGEgc3RydWN0dXJlLgogKi8KY2xhc3MgUGFyc2VyCnsKICAgIC8qKgogICAgICogQHZhciBQYXJzZXJTdGF0ZQogICAgICovCiAgICBwcml2YXRlICRvUGFyc2VyU3RhdGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzVGV4dCB0aGUgY29tcGxldGUgQ1NTIGFzIHRleHQgKGkuZS4sIHVzdWFsbHkgdGhlIGNvbnRlbnRzIG9mIGEgQ1NTIGZpbGUpCiAgICAgKiBAcGFyYW0gU2V0dGluZ3N8bnVsbCAkb1BhcnNlclNldHRpbmdzCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vIHRoZSBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxLCBub3QgZnJvbSAwKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNUZXh0LCAkb1BhcnNlclNldHRpbmdzID0gbnVsbCwgJGlMaW5lTm8gPSAxKQogICAgewogICAgICAgIGlmICgkb1BhcnNlclNldHRpbmdzID09PSBudWxsKSB7CiAgICAgICAgICAgICRvUGFyc2VyU2V0dGluZ3MgPSBTZXR0aW5nczo6Y3JlYXRlKCk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5vUGFyc2VyU3RhdGUgPSBuZXcgUGFyc2VyU3RhdGUoJHNUZXh0LCAkb1BhcnNlclNldHRpbmdzLCAkaUxpbmVObyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXRzIHRoZSBjaGFyc2V0IHRvIGJlIHVzZWQgaWYgdGhlIENTUyBkb2VzIG5vdCBjb250YWluIGFuIGBAY2hhcnNldGAgZGVjbGFyYXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc0NoYXJzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSA4LjcuMCwgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gOS4wLjAgd2l0aCAjNjg3CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDaGFyc2V0KCRzQ2hhcnNldCkKICAgIHsKICAgICAgICAkdGhpcy0+b1BhcnNlclN0YXRlLT5zZXRDaGFyc2V0KCRzQ2hhcnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjaGFyc2V0IHRoYXQgaXMgdXNlZCBpZiB0aGUgQ1NTIGRvZXMgbm90IGNvbnRhaW4gYW4gYEBjaGFyc2V0YCBkZWNsYXJhdGlvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSA4LjcuMCwgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gOS4wLjAgd2l0aCAjNjg3CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDaGFyc2V0KCkKICAgIHsKICAgICAgICAvLyBOb3RlOiBUaGUgYHJldHVybmAgc3RhdGVtZW50IGlzIG1pc3NpbmcgaGVyZS4gVGhpcyBpcyBhIGJ1ZyB0aGF0IG5lZWRzIHRvIGJlIGZpeGVkLgogICAgICAgICR0aGlzLT5vUGFyc2VyU3RhdGUtPmdldENoYXJzZXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlcyB0aGUgQ1NTIHByb3ZpZGVkIHRvIHRoZSBjb25zdHJ1Y3RvciBhbmQgY3JlYXRlcyBhIGBEb2N1bWVudGAgZnJvbSBpdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIERvY3VtZW50CiAgICAgKgogICAgICogQHRocm93cyBTb3VyY2VFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlKCkKICAgIHsKICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OnBhcnNlKCR0aGlzLT5vUGFyc2VyU3RhdGUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Parsing/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Parsing/Anchor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKLyoqCiAqIEBpbnRlcm5hbCBzaW5jZSA4LjcuMAogKi8KY2xhc3MgQW5jaG9yCnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkaVBvc2l0aW9uOwoKICAgIC8qKgogICAgICogQHZhciBcU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xQYXJzZXJTdGF0ZQogICAgICovCiAgICBwcml2YXRlICRvUGFyc2VyU3RhdGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpUG9zaXRpb24KICAgICAqIEBwYXJhbSBcU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaVBvc2l0aW9uLCBQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlKQogICAgewogICAgICAgICR0aGlzLT5pUG9zaXRpb24gPSAkaVBvc2l0aW9uOwogICAgICAgICR0aGlzLT5vUGFyc2VyU3RhdGUgPSAkb1BhcnNlclN0YXRlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiYWNrdHJhY2soKQogICAgewogICAgICAgICR0aGlzLT5vUGFyc2VyU3RhdGUtPnNldFBvc2l0aW9uKCR0aGlzLT5pUG9zaXRpb24pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Parsing/OutputException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKLyoqCiAqIFRocm93biBpZiB0aGUgQ1NTIHBhcnNlciBhdHRlbXB0cyB0byBwcmludCBzb21ldGhpbmcgaW52YWxpZC4KICovCmNsYXNzIE91dHB1dEV4Y2VwdGlvbiBleHRlbmRzIFNvdXJjZUV4Y2VwdGlvbgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNNZXNzYWdlCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc01lc3NhZ2UsICRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRzTWVzc2FnZSwgJGlMaW5lTm8pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Parsing/ParserState.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudDsKdXNlIFNhYmJlcndvcm1cQ1NTXFNldHRpbmdzOwoKLyoqCiAqIEBpbnRlcm5hbCBzaW5jZSA4LjcuMAogKi8KY2xhc3MgUGFyc2VyU3RhdGUKewogICAgLyoqCiAgICAgKiBAdmFyIG51bGwKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC41LjIKICAgICAqLwogICAgY29uc3QgRU9GID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgU2V0dGluZ3MKICAgICAqLwogICAgcHJpdmF0ZSAkb1BhcnNlclNldHRpbmdzOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkc1RleHQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PGludCwgc3RyaW5nPgogICAgICovCiAgICBwcml2YXRlICRhVGV4dDsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGlDdXJyZW50UG9zaXRpb247CgogICAgLyoqCiAgICAgKiB3aWxsIG9ubHkgYmUgdXNlZCBpZiB0aGUgQ1NTIGRvZXMgbm90IGNvbnRhaW4gYW4gYEBjaGFyc2V0YCBkZWNsYXJhdGlvbgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNDaGFyc2V0OwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkaUxlbmd0aDsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGlMaW5lTm87CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzVGV4dCB0aGUgY29tcGxldGUgQ1NTIGFzIHRleHQgKGkuZS4sIHVzdWFsbHkgdGhlIGNvbnRlbnRzIG9mIGEgQ1NTIGZpbGUpCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc1RleHQsIFNldHRpbmdzICRvUGFyc2VyU2V0dGluZ3MsICRpTGluZU5vID0gMSkKICAgIHsKICAgICAgICAkdGhpcy0+b1BhcnNlclNldHRpbmdzID0gJG9QYXJzZXJTZXR0aW5nczsKICAgICAgICAkdGhpcy0+c1RleHQgPSAkc1RleHQ7CiAgICAgICAgJHRoaXMtPmlDdXJyZW50UG9zaXRpb24gPSAwOwogICAgICAgICR0aGlzLT5pTGluZU5vID0gJGlMaW5lTm87CiAgICAgICAgJHRoaXMtPnNldENoYXJzZXQoJHRoaXMtPm9QYXJzZXJTZXR0aW5ncy0+c0RlZmF1bHRDaGFyc2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldHMgdGhlIGNoYXJzZXQgdG8gYmUgdXNlZCBpZiB0aGUgQ1NTIGRvZXMgbm90IGNvbnRhaW4gYW4gYEBjaGFyc2V0YCBkZWNsYXJhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzQ2hhcnNldAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Q2hhcnNldCgkc0NoYXJzZXQpCiAgICB7CiAgICAgICAgJHRoaXMtPnNDaGFyc2V0ID0gJHNDaGFyc2V0OwogICAgICAgICR0aGlzLT5hVGV4dCA9ICR0aGlzLT5zdHJzcGxpdCgkdGhpcy0+c1RleHQpOwogICAgICAgIGlmIChpc19hcnJheSgkdGhpcy0+YVRleHQpKSB7CiAgICAgICAgICAgICR0aGlzLT5pTGVuZ3RoID0gY291bnQoJHRoaXMtPmFUZXh0KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjaGFyc2V0IHRoYXQgaXMgdXNlZCBpZiB0aGUgQ1NTIGRvZXMgbm90IGNvbnRhaW4gYW4gYEBjaGFyc2V0YCBkZWNsYXJhdGlvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2hhcnNldCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zQ2hhcnNldDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJyZW50TGluZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pTGluZU5vOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGN1cnJlbnRDb2x1bW4oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gU2V0dGluZ3MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNldHRpbmdzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9QYXJzZXJTZXR0aW5nczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcQW5jaG9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhbmNob3IoKQogICAgewogICAgICAgIHJldHVybiBuZXcgQW5jaG9yKCR0aGlzLT5pQ3VycmVudFBvc2l0aW9uLCAkdGhpcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpUG9zaXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFBvc2l0aW9uKCRpUG9zaXRpb24pCiAgICB7CiAgICAgICAgJHRoaXMtPmlDdXJyZW50UG9zaXRpb24gPSAkaVBvc2l0aW9uOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJGJJZ25vcmVDYXNlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSBWOC44LjAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlSWRlbnRpZmllcigkYklnbm9yZUNhc2UgPSB0cnVlKQogICAgewogICAgICAgIGlmICgkdGhpcy0+aXNFbmQoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEVPRkV4Y2VwdGlvbignJywgJycsICdpZGVudGlmaWVyJywgJHRoaXMtPmlMaW5lTm8pOwogICAgICAgIH0KICAgICAgICAkc1Jlc3VsdCA9ICR0aGlzLT5wYXJzZUNoYXJhY3Rlcih0cnVlKTsKICAgICAgICBpZiAoJHNSZXN1bHQgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbigkc1Jlc3VsdCwgJHRoaXMtPnBlZWsoNSksICdpZGVudGlmaWVyJywgJHRoaXMtPmlMaW5lTm8pOwogICAgICAgIH0KICAgICAgICAkc0NoYXJhY3RlciA9IG51bGw7CiAgICAgICAgd2hpbGUgKCEkdGhpcy0+aXNFbmQoKSAmJiAoJHNDaGFyYWN0ZXIgPSAkdGhpcy0+cGFyc2VDaGFyYWN0ZXIodHJ1ZSkpICE9PSBudWxsKSB7CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvW2EtekEtWjAtOVx4ezAwQTB9LVx4e0ZGRkZ9Xy1dL1N1eCcsICRzQ2hhcmFjdGVyKSkgewogICAgICAgICAgICAgICAgJHNSZXN1bHQgLj0gJHNDaGFyYWN0ZXI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc1Jlc3VsdCAuPSAnXFwnIC4gJHNDaGFyYWN0ZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRiSWdub3JlQ2FzZSkgewogICAgICAgICAgICAkc1Jlc3VsdCA9ICR0aGlzLT5zdHJ0b2xvd2VyKCRzUmVzdWx0KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRzUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJGJJc0ZvcklkZW50aWZpZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSBWOC44LjAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlQ2hhcmFjdGVyKCRiSXNGb3JJZGVudGlmaWVyKQogICAgewogICAgICAgIGlmICgkdGhpcy0+cGVlaygpID09PSAnXFwnKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRiSXNGb3JJZGVudGlmaWVyICYmICR0aGlzLT5vUGFyc2VyU2V0dGluZ3MtPmJMZW5pZW50UGFyc2luZwogICAgICAgICAgICAgICAgJiYgKCR0aGlzLT5jb21lcygnXDAnKSB8fCAkdGhpcy0+Y29tZXMoJ1w5JykpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgLy8gTm9uLXN0cmluZ3MgY2FuIGNvbnRhaW4gXDAgb3IgXDkgd2hpY2ggaXMgYW4gSUUgaGFjayBzdXBwb3J0ZWQgaW4gbGVuaWVudCBwYXJzaW5nLgogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmNvbnN1bWUoJ1xcJyk7CiAgICAgICAgICAgIGlmICgkdGhpcy0+Y29tZXMoJ1xuJykgfHwgJHRoaXMtPmNvbWVzKCdccicpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9bMC05YS1mQS1GXS9TdScsICR0aGlzLT5wZWVrKCkpID09PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnN1bWUoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNVbmljb2RlID0gJHRoaXMtPmNvbnN1bWVFeHByZXNzaW9uKCcvXlswLTlhLWZBLUZdezEsNn0vdScsIDYpOwogICAgICAgICAgICBpZiAoJHRoaXMtPnN0cmxlbigkc1VuaWNvZGUpIDwgNikgewogICAgICAgICAgICAgICAgLy8gQ29uc3VtZSB3aGl0ZXNwYWNlIGFmdGVyIGluY29tcGxldGUgdW5pY29kZSBlc2NhcGUKICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXFxzL2lzU3UnLCAkdGhpcy0+cGVlaygpKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Y29tZXMoJ1xyXG4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29uc3VtZSgyKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29uc3VtZSgxKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGlVbmljb2RlID0gaW50dmFsKCRzVW5pY29kZSwgMTYpOwogICAgICAgICAgICAkc1V0ZjMyID0gIiI7CiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IDQ7ICsrJGkpIHsKICAgICAgICAgICAgICAgICRzVXRmMzIgLj0gY2hyKCRpVW5pY29kZSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgJGlVbmljb2RlID0gJGlVbmljb2RlID4+IDg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGljb252KCd1dGYtMzJsZScsICR0aGlzLT5zQ2hhcnNldCwgJHNVdGYzMik7CiAgICAgICAgfQogICAgICAgIGlmICgkYklzRm9ySWRlbnRpZmllcikgewogICAgICAgICAgICAkcGVlayA9IG9yZCgkdGhpcy0+cGVlaygpKTsKICAgICAgICAgICAgLy8gUmFuZ2VzOiBhLXogQS1aIDAtOSAtIF8KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCRwZWVrID49IDk3ICYmICRwZWVrIDw9IDEyMikKICAgICAgICAgICAgICAgIHx8ICgkcGVlayA+PSA2NSAmJiAkcGVlayA8PSA5MCkKICAgICAgICAgICAgICAgIHx8ICgkcGVlayA+PSA0OCAmJiAkcGVlayA8PSA1NykKICAgICAgICAgICAgICAgIHx8ICgkcGVlayA9PT0gNDUpCiAgICAgICAgICAgICAgICB8fCAoJHBlZWsgPT09IDk1KQogICAgICAgICAgICAgICAgfHwgKCRwZWVrID4gMHhhMSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnN1bWUoMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnN1bWUoMSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIENvbW1lbnQ+fHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb25zdW1lV2hpdGVTcGFjZSgpCiAgICB7CiAgICAgICAgJGFDb21tZW50cyA9IFtdOwogICAgICAgIGRvIHsKICAgICAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goJy9cXHMvaXNTdScsICR0aGlzLT5wZWVrKCkpID09PSAxKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29uc3VtZSgxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHRoaXMtPm9QYXJzZXJTZXR0aW5ncy0+YkxlbmllbnRQYXJzaW5nKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICRvQ29tbWVudCA9ICR0aGlzLT5jb25zdW1lQ29tbWVudCgpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoVW5leHBlY3RlZEVPRkV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5pQ3VycmVudFBvc2l0aW9uID0gJHRoaXMtPmlMZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRhQ29tbWVudHM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb0NvbW1lbnQgPSAkdGhpcy0+Y29uc3VtZUNvbW1lbnQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJG9Db21tZW50ICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJGFDb21tZW50c1tdID0gJG9Db21tZW50OwogICAgICAgICAgICB9CiAgICAgICAgfSB3aGlsZSAoJG9Db21tZW50ICE9PSBmYWxzZSk7CiAgICAgICAgcmV0dXJuICRhQ29tbWVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzU3RyaW5nCiAgICAgKiBAcGFyYW0gYm9vbCAkYkNhc2VJbnNlbnNpdGl2ZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tZXMoJHNTdHJpbmcsICRiQ2FzZUluc2Vuc2l0aXZlID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHNQZWVrID0gJHRoaXMtPnBlZWsoc3RybGVuKCRzU3RyaW5nKSk7CiAgICAgICAgcmV0dXJuICgkc1BlZWsgPT0gJycpCiAgICAgICAgICAgID8gZmFsc2UKICAgICAgICAgICAgOiAkdGhpcy0+c3RyZXFsKCRzUGVlaywgJHNTdHJpbmcsICRiQ2FzZUluc2Vuc2l0aXZlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlMZW5ndGgKICAgICAqIEBwYXJhbSBpbnQgJGlPZmZzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGVlaygkaUxlbmd0aCA9IDEsICRpT2Zmc2V0ID0gMCkKICAgIHsKICAgICAgICAkaU9mZnNldCArPSAkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbjsKICAgICAgICBpZiAoJGlPZmZzZXQgPj0gJHRoaXMtPmlMZW5ndGgpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPnN1YnN0cigkaU9mZnNldCwgJGlMZW5ndGgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkbVZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb25zdW1lKCRtVmFsdWUgPSAxKQogICAgewogICAgICAgIGlmIChpc19zdHJpbmcoJG1WYWx1ZSkpIHsKICAgICAgICAgICAgJGlMaW5lQ291bnQgPSBzdWJzdHJfY291bnQoJG1WYWx1ZSwgIlxuIik7CiAgICAgICAgICAgICRpTGVuZ3RoID0gJHRoaXMtPnN0cmxlbigkbVZhbHVlKTsKICAgICAgICAgICAgaWYgKCEkdGhpcy0+c3RyZXFsKCR0aGlzLT5zdWJzdHIoJHRoaXMtPmlDdXJyZW50UG9zaXRpb24sICRpTGVuZ3RoKSwgJG1WYWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oJG1WYWx1ZSwgJHRoaXMtPnBlZWsobWF4KCRpTGVuZ3RoLCA1KSksICR0aGlzLT5pTGluZU5vKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+aUxpbmVObyArPSAkaUxpbmVDb3VudDsKICAgICAgICAgICAgJHRoaXMtPmlDdXJyZW50UG9zaXRpb24gKz0gJHRoaXMtPnN0cmxlbigkbVZhbHVlKTsKICAgICAgICAgICAgcmV0dXJuICRtVmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5pQ3VycmVudFBvc2l0aW9uICsgJG1WYWx1ZSA+ICR0aGlzLT5pTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEVPRkV4Y2VwdGlvbigkbVZhbHVlLCAkdGhpcy0+cGVlayg1KSwgJ2NvdW50JywgJHRoaXMtPmlMaW5lTm8pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzUmVzdWx0ID0gJHRoaXMtPnN1YnN0cigkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiwgJG1WYWx1ZSk7CiAgICAgICAgICAgICRpTGluZUNvdW50ID0gc3Vic3RyX2NvdW50KCRzUmVzdWx0LCAiXG4iKTsKICAgICAgICAgICAgJHRoaXMtPmlMaW5lTm8gKz0gJGlMaW5lQ291bnQ7CiAgICAgICAgICAgICR0aGlzLT5pQ3VycmVudFBvc2l0aW9uICs9ICRtVmFsdWU7CiAgICAgICAgICAgIHJldHVybiAkc1Jlc3VsdDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtRXhwcmVzc2lvbgogICAgICogQHBhcmFtIGludHxudWxsICRpTWF4TGVuZ3RoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb25zdW1lRXhwcmVzc2lvbigkbUV4cHJlc3Npb24sICRpTWF4TGVuZ3RoID0gbnVsbCkKICAgIHsKICAgICAgICAkYU1hdGNoZXMgPSBudWxsOwogICAgICAgICRzSW5wdXQgPSAkaU1heExlbmd0aCAhPT0gbnVsbCA/ICR0aGlzLT5wZWVrKCRpTWF4TGVuZ3RoKSA6ICR0aGlzLT5pbnB1dExlZnQoKTsKICAgICAgICBpZiAocHJlZ19tYXRjaCgkbUV4cHJlc3Npb24sICRzSW5wdXQsICRhTWF0Y2hlcywgUFJFR19PRkZTRVRfQ0FQVFVSRSkgPT09IDEpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jb25zdW1lKCRhTWF0Y2hlc1swXVswXSk7CiAgICAgICAgfQogICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oJG1FeHByZXNzaW9uLCAkdGhpcy0+cGVlayg1KSwgJ2V4cHJlc3Npb24nLCAkdGhpcy0+aUxpbmVObyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIENvbW1lbnR8ZmFsc2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbnN1bWVDb21tZW50KCkKICAgIHsKICAgICAgICAkbUNvbW1lbnQgPSBmYWxzZTsKICAgICAgICBpZiAoJHRoaXMtPmNvbWVzKCcvKicpKSB7CiAgICAgICAgICAgICRpTGluZU5vID0gJHRoaXMtPmlMaW5lTm87CiAgICAgICAgICAgICR0aGlzLT5jb25zdW1lKDEpOwogICAgICAgICAgICAkbUNvbW1lbnQgPSAnJzsKICAgICAgICAgICAgd2hpbGUgKCgkY2hhciA9ICR0aGlzLT5jb25zdW1lKDEpKSAhPT0gJycpIHsKICAgICAgICAgICAgICAgICRtQ29tbWVudCAuPSAkY2hhcjsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Y29tZXMoJyovJykpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29uc3VtZSgyKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRtQ29tbWVudCAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgLy8gV2Ugc2tpcCB0aGUgKiB3aGljaCB3YXMgaW5jbHVkZWQgaW4gdGhlIGNvbW1lbnQuCiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tbWVudChzdWJzdHIoJG1Db21tZW50LCAxKSwgJGlMaW5lTm8pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtQ29tbWVudDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbmQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiA+PSAkdGhpcy0+aUxlbmd0aDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIHN0cmluZz58c3RyaW5nICRhRW5kCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiSW5jbHVkZUVuZAogICAgICogQHBhcmFtIHN0cmluZyAkY29uc3VtZUVuZAogICAgICogQHBhcmFtIGFycmF5PGludCwgQ29tbWVudD4gJGNvbW1lbnRzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb25zdW1lVW50aWwoJGFFbmQsICRiSW5jbHVkZUVuZCA9IGZhbHNlLCAkY29uc3VtZUVuZCA9IGZhbHNlLCBhcnJheSAmJGNvbW1lbnRzID0gW10pCiAgICB7CiAgICAgICAgJGFFbmQgPSBpc19hcnJheSgkYUVuZCkgPyAkYUVuZCA6IFskYUVuZF07CiAgICAgICAgJG91dCA9ICcnOwogICAgICAgICRzdGFydCA9ICR0aGlzLT5pQ3VycmVudFBvc2l0aW9uOwoKICAgICAgICB3aGlsZSAoISR0aGlzLT5pc0VuZCgpKSB7CiAgICAgICAgICAgICRjaGFyID0gJHRoaXMtPmNvbnN1bWUoMSk7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkY2hhciwgJGFFbmQpKSB7CiAgICAgICAgICAgICAgICBpZiAoJGJJbmNsdWRlRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgJG91dCAuPSAkY2hhcjsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICghJGNvbnN1bWVFbmQpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiAtPSAkdGhpcy0+c3RybGVuKCRjaGFyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAkb3V0OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvdXQgLj0gJGNoYXI7CiAgICAgICAgICAgIGlmICgkY29tbWVudCA9ICR0aGlzLT5jb25zdW1lQ29tbWVudCgpKSB7CiAgICAgICAgICAgICAgICAkY29tbWVudHNbXSA9ICRjb21tZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaW5fYXJyYXkoc2VsZjo6RU9GLCAkYUVuZCkpIHsKICAgICAgICAgICAgcmV0dXJuICRvdXQ7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiA9ICRzdGFydDsKICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEVPRkV4Y2VwdGlvbigKICAgICAgICAgICAgJ09uZSBvZiAoIicgLiBpbXBsb2RlKCciLCInLCAkYUVuZCkgLiAnIiknLAogICAgICAgICAgICAkdGhpcy0+cGVlayg1KSwKICAgICAgICAgICAgJ3NlYXJjaCcsCiAgICAgICAgICAgICR0aGlzLT5pTGluZU5vCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaW5wdXRMZWZ0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN1YnN0cigkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiwgLTEpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1N0cmluZzEKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNTdHJpbmcyCiAgICAgKiBAcGFyYW0gYm9vbCAkYkNhc2VJbnNlbnNpdGl2ZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZXFsKCRzU3RyaW5nMSwgJHNTdHJpbmcyLCAkYkNhc2VJbnNlbnNpdGl2ZSA9IHRydWUpCiAgICB7CiAgICAgICAgaWYgKCRiQ2FzZUluc2Vuc2l0aXZlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RydG9sb3dlcigkc1N0cmluZzEpID09PSAkdGhpcy0+c3RydG9sb3dlcigkc1N0cmluZzIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkc1N0cmluZzEgPT09ICRzU3RyaW5nMjsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpQW1vdW50CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiYWNrdHJhY2soJGlBbW91bnQpCiAgICB7CiAgICAgICAgJHRoaXMtPmlDdXJyZW50UG9zaXRpb24gLT0gJGlBbW91bnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzU3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN0cmxlbigkc1N0cmluZykKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPm9QYXJzZXJTZXR0aW5ncy0+Yk11bHRpYnl0ZVN1cHBvcnQpIHsKICAgICAgICAgICAgcmV0dXJuIG1iX3N0cmxlbigkc1N0cmluZywgJHRoaXMtPnNDaGFyc2V0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gc3RybGVuKCRzU3RyaW5nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpU3RhcnQKICAgICAqIEBwYXJhbSBpbnQgJGlMZW5ndGgKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHN1YnN0cigkaVN0YXJ0LCAkaUxlbmd0aCkKICAgIHsKICAgICAgICBpZiAoJGlMZW5ndGggPCAwKSB7CiAgICAgICAgICAgICRpTGVuZ3RoID0gJHRoaXMtPmlMZW5ndGggLSAkaVN0YXJ0ICsgJGlMZW5ndGg7CiAgICAgICAgfQogICAgICAgIGlmICgkaVN0YXJ0ICsgJGlMZW5ndGggPiAkdGhpcy0+aUxlbmd0aCkgewogICAgICAgICAgICAkaUxlbmd0aCA9ICR0aGlzLT5pTGVuZ3RoIC0gJGlTdGFydDsKICAgICAgICB9CiAgICAgICAgJHNSZXN1bHQgPSAnJzsKICAgICAgICB3aGlsZSAoJGlMZW5ndGggPiAwKSB7CiAgICAgICAgICAgICRzUmVzdWx0IC49ICR0aGlzLT5hVGV4dFskaVN0YXJ0XTsKICAgICAgICAgICAgJGlTdGFydCsrOwogICAgICAgICAgICAkaUxlbmd0aC0tOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHNSZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzU3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzdHJ0b2xvd2VyKCRzU3RyaW5nKQogICAgewogICAgICAgIGlmICgkdGhpcy0+b1BhcnNlclNldHRpbmdzLT5iTXVsdGlieXRlU3VwcG9ydCkgewogICAgICAgICAgICByZXR1cm4gbWJfc3RydG9sb3dlcigkc1N0cmluZywgJHRoaXMtPnNDaGFyc2V0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gc3RydG9sb3dlcigkc1N0cmluZyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1N0cmluZwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LCBzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc3Ryc3BsaXQoJHNTdHJpbmcpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5vUGFyc2VyU2V0dGluZ3MtPmJNdWx0aWJ5dGVTdXBwb3J0KSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+c3RyZXFsKCR0aGlzLT5zQ2hhcnNldCwgJ3V0Zi04JykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcmVnX3NwbGl0KCcvL3UnLCAkc1N0cmluZywgLTEsIFBSRUdfU1BMSVRfTk9fRU1QVFkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGlMZW5ndGggPSBtYl9zdHJsZW4oJHNTdHJpbmcsICR0aGlzLT5zQ2hhcnNldCk7CiAgICAgICAgICAgICAgICAkYVJlc3VsdCA9IFtdOwogICAgICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGlMZW5ndGg7ICsrJGkpIHsKICAgICAgICAgICAgICAgICAgICAkYVJlc3VsdFtdID0gbWJfc3Vic3RyKCRzU3RyaW5nLCAkaSwgMSwgJHRoaXMtPnNDaGFyc2V0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAkYVJlc3VsdDsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgkc1N0cmluZyA9PT0gJycpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdHJfc3BsaXQoJHNTdHJpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1N0cmluZwogICAgICogQHBhcmFtIHN0cmluZyAkc05lZWRsZQogICAgICogQHBhcmFtIGludCAkaU9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gaW50fGZhbHNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc3RycG9zKCRzU3RyaW5nLCAkc05lZWRsZSwgJGlPZmZzZXQpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5vUGFyc2VyU2V0dGluZ3MtPmJNdWx0aWJ5dGVTdXBwb3J0KSB7CiAgICAgICAgICAgIHJldHVybiBtYl9zdHJwb3MoJHNTdHJpbmcsICRzTmVlZGxlLCAkaU9mZnNldCwgJHRoaXMtPnNDaGFyc2V0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gc3RycG9zKCRzU3RyaW5nLCAkc05lZWRsZSwgJGlPZmZzZXQpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Parsing/SourceException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKdXNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uXFBvc2l0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUG9zaXRpb25cUG9zaXRpb25hYmxlOwoKY2xhc3MgU291cmNlRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiBpbXBsZW1lbnRzIFBvc2l0aW9uYWJsZQp7CiAgICB1c2UgUG9zaXRpb247CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzTWVzc2FnZQogICAgICogQHBhcmFtIGludCAkaUxpbmVObwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNNZXNzYWdlLCAkaUxpbmVObyA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPnNldFBvc2l0aW9uKCRpTGluZU5vKTsKICAgICAgICBpZiAoIWVtcHR5KCRpTGluZU5vKSkgewogICAgICAgICAgICAkc01lc3NhZ2UgLj0gIiBbbGluZSBubzogJGlMaW5lTm9dIjsKICAgICAgICB9CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkc01lc3NhZ2UpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Parsing/UnexpectedEOFException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKLyoqCiAqIFRocm93biBpZiB0aGUgQ1NTIHBhcnNlciBlbmNvdW50ZXJzIGVuZCBvZiBmaWxlIGl0IGRpZCBub3QgZXhwZWN0LgogKgogKiBFeHRlbmRzIGBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb25gIGluIG9yZGVyIHRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogKi8KY2xhc3MgVW5leHBlY3RlZEVPRkV4Y2VwdGlvbiBleHRlbmRzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Parsing/UnexpectedTokenException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKLyoqCiAqIFRocm93biBpZiB0aGUgQ1NTIHBhcnNlciBlbmNvdW50ZXJzIGEgdG9rZW4gaXQgZGlkIG5vdCBleHBlY3QuCiAqLwpjbGFzcyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24gZXh0ZW5kcyBTb3VyY2VFeGNlcHRpb24KewogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzRXhwZWN0ZWQ7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzRm91bmQ7CgogICAgLyoqCiAgICAgKiBQb3NzaWJsZSB2YWx1ZXM6IGxpdGVyYWwsIGlkZW50aWZpZXIsIGNvdW50LCBleHByZXNzaW9uLCBzZWFyY2gKICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzTWF0Y2hUeXBlOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc0V4cGVjdGVkCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzRm91bmQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNNYXRjaFR5cGUKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzRXhwZWN0ZWQsICRzRm91bmQsICRzTWF0Y2hUeXBlID0gJ2xpdGVyYWwnLCAkaUxpbmVObyA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPnNFeHBlY3RlZCA9ICRzRXhwZWN0ZWQ7CiAgICAgICAgJHRoaXMtPnNGb3VuZCA9ICRzRm91bmQ7CiAgICAgICAgJHRoaXMtPnNNYXRjaFR5cGUgPSAkc01hdGNoVHlwZTsKICAgICAgICAkc01lc3NhZ2UgPSAiVG9rZW4g4oCceyRzRXhwZWN0ZWR94oCdICh7JHNNYXRjaFR5cGV9KSBub3QgZm91bmQuIEdvdCDigJx7JHNGb3VuZH3igJ0uIjsKICAgICAgICBpZiAoJHRoaXMtPnNNYXRjaFR5cGUgPT09ICdzZWFyY2gnKSB7CiAgICAgICAgICAgICRzTWVzc2FnZSA9ICJTZWFyY2ggZm9yIOKAnHskc0V4cGVjdGVkfeKAnSByZXR1cm5lZCBubyByZXN1bHRzLiBDb250ZXh0OiDigJx7JHNGb3VuZH3igJ0uIjsKICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPnNNYXRjaFR5cGUgPT09ICdjb3VudCcpIHsKICAgICAgICAgICAgJHNNZXNzYWdlID0gIk5leHQgdG9rZW4gd2FzIGV4cGVjdGVkIHRvIGhhdmUgeyRzRXhwZWN0ZWR9IGNoYXJzLiBDb250ZXh0OiDigJx7JHNGb3VuZH3igJ0uIjsKICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPnNNYXRjaFR5cGUgPT09ICdpZGVudGlmaWVyJykgewogICAgICAgICAgICAkc01lc3NhZ2UgPSAiSWRlbnRpZmllciBleHBlY3RlZC4gR290IOKAnHskc0ZvdW5kfeKAnSI7CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5zTWF0Y2hUeXBlID09PSAnY3VzdG9tJykgewogICAgICAgICAgICAkc01lc3NhZ2UgPSB0cmltKCIkc0V4cGVjdGVkICRzRm91bmQiKTsKICAgICAgICB9CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHNNZXNzYWdlLCAkaUxpbmVObyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Position/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Position/Position.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uOwoKLyoqCiAqIFByb3ZpZGVzIGEgc3RhbmRhcmQgcmV1c2FibGUgaW1wbGVtZW50YXRpb24gb2YgYFBvc2l0aW9uYWJsZWAuCiAqCiAqIEBpbnRlcm5hbAogKgogKiBAcGhwc3Rhbi1yZXF1aXJlLWltcGxlbWVudHMgUG9zaXRpb25hYmxlCiAqLwp0cmFpdCBQb3NpdGlvbgp7CiAgICAvKioKICAgICAqIEB2YXIgaW50PDEsIG1heD58bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgJGxpbmVOdW1iZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIGludDwwLCBtYXg+fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRjb2x1bW5OdW1iZXI7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludDwxLCBtYXg+fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldExpbmVOdW1iZXIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGluZU51bWJlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50PDAsIG1heD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldExpbmVObygpCiAgICB7CiAgICAgICAgJGxpbmVOdW1iZXIgPSAkdGhpcy0+Z2V0TGluZU51bWJlcigpOwoKICAgICAgICByZXR1cm4gJGxpbmVOdW1iZXIgIT09IG51bGwgPyAkbGluZU51bWJlciA6IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludDwwLCBtYXg+fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbHVtbk51bWJlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2x1bW5OdW1iZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludDwwLCBtYXg+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb2xObygpCiAgICB7CiAgICAgICAgJGNvbHVtbk51bWJlciA9ICR0aGlzLT5nZXRDb2x1bW5OdW1iZXIoKTsKCiAgICAgICAgcmV0dXJuICRjb2x1bW5OdW1iZXIgIT09IG51bGwgPyAkY29sdW1uTnVtYmVyIDogMDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQ8MCwgbWF4PnxudWxsICRsaW5lTnVtYmVyCiAgICAgKiBAcGFyYW0gaW50PDAsIG1heD58bnVsbCAkY29sdW1uTnVtYmVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRQb3NpdGlvbigkbGluZU51bWJlciwgJGNvbHVtbk51bWJlciA9IG51bGwpCiAgICB7CiAgICAgICAgLy8gVGhlIGNvbmRpdGlvbmFsIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAoYmFja2NvbXBhdCk7IGAwYCB3aWxsIG5vdCBiZSBhbGxvd2VkIGluIGZ1dHVyZS4KICAgICAgICAkdGhpcy0+bGluZU51bWJlciA9ICRsaW5lTnVtYmVyICE9PSAwID8gJGxpbmVOdW1iZXIgOiBudWxsOwogICAgICAgICR0aGlzLT5jb2x1bW5OdW1iZXIgPSAkY29sdW1uTnVtYmVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Position/Positionable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uOwoKLyoqCiAqIFJlcHJlc2VudHMgYSBDU1MgaXRlbSB0aGF0IG1heSBoYXZlIGEgcG9zaXRpb24gaW4gdGhlIHNvdXJjZSBDU1MgZG9jdW1lbnQgKGxpbmUgbnVtYmVyIGFuZCBwb3NzaWJseSBjb2x1bW4gbnVtYmVyKS4KICoKICogQSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIGBQb3NpdGlvbmAgdHJhaXQuCiAqLwppbnRlcmZhY2UgUG9zaXRpb25hYmxlCnsKICAgIC8qKgogICAgICogQHJldHVybiBpbnQ8MSwgbWF4PnxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMaW5lTnVtYmVyKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludDwwLCBtYXg+CiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiA4LjkuMCwgd2lsbCBiZSByZW1vdmVkIGluIHY5LjAuIFVzZSBgZ2V0TGluZU51bWJlcigpYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZU5vKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludDwwLCBtYXg+fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbHVtbk51bWJlcigpOwoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQ8MCwgbWF4PgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gOC45LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OS4wLiBVc2UgYGdldENvbHVtbk51bWJlcigpYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29sTm8oKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQ8MCwgbWF4PnxudWxsICRsaW5lTnVtYmVyCiAgICAgKiAgICAgICAgUHJvdmlkaW5nIHplcm8gZm9yIHRoaXMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiA4LjkuMCwgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBmcm9tIHY5LjAuCiAgICAgKiAgICAgICAgVXNlIGBudWxsYCBpbnN0ZWFkIHdoZW4gbm8gbGluZSBudW1iZXIgaXMgYXZhaWxhYmxlLgogICAgICogQHBhcmFtIGludDwwLCBtYXg+fG51bGwgJGNvbHVtbk51bWJlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UG9zaXRpb24oJGxpbmVOdW1iZXIsICRjb2x1bW5OdW1iZXIgPSBudWxsKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Property/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Property/AtRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50XENvbW1lbnRhYmxlOwp1c2UgU2FiYmVyd29ybVxDU1NcUmVuZGVyYWJsZTsKCmludGVyZmFjZSBBdFJ1bGUgZXh0ZW5kcyBSZW5kZXJhYmxlLCBDb21tZW50YWJsZQp7CiAgICAvKioKICAgICAqIFNpbmNlIHRoZXJlIGFyZSBtb3JlIHNldCBydWxlcyB0aGFuIGJsb2NrIHJ1bGVzLAogICAgICogd2XigJlyZSB3aGl0ZWxpc3RpbmcgdGhlIGJsb2NrIHJ1bGVzIGFuZCBoYXZlIGFueXRoaW5nIGVsc2UgYmUgdHJlYXRlZCBhcyBhIHNldCBydWxlLgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguNS4yCiAgICAgKi8KICAgIGNvbnN0IEJMT0NLX1JVTEVTID0gJ21lZGlhL2RvY3VtZW50L3N1cHBvcnRzL3JlZ2lvbi1zdHlsZS9mb250LWZlYXR1cmUtdmFsdWVzJzsKCiAgICAvKioKICAgICAqIOKApiBhbmQgbW9yZSBmb250LXNwZWNpZmljIG9uZXMgKHRvIGJlIHVzZWQgaW5zaWRlIGZvbnQtZmVhdHVyZS12YWx1ZXMpCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC41LjIKICAgICAqLwogICAgY29uc3QgU0VUX1JVTEVTID0gJ2ZvbnQtZmFjZS9jb3VudGVyLXN0eWxlL3BhZ2Uvc3dhc2gvc3R5bGVzZXQvYW5ub3RhdGlvbic7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVOYW1lKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVBcmdzKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Property/Charset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50XENvbW1lbnQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQb3NpdGlvblxQb3NpdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uXFBvc2l0aW9uYWJsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENTU1N0cmluZzsKCi8qKgogKiBDbGFzcyByZXByZXNlbnRpbmcgYW4gYEBjaGFyc2V0YCBydWxlLgogKgogKiBUaGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucyBhcHBseToKICogLSBNYXkgbm90IGJlIGZvdW5kIGluIGFueSBDU1NMaXN0IG90aGVyIHRoYW4gdGhlIERvY3VtZW50LgogKiAtIE1heSBvbmx5IGFwcGVhciBhdCB0aGUgdmVyeSB0b3Agb2YgYSBEb2N1bWVudOKAmXMgY29udGVudHMuCiAqIC0gTXVzdCBub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlLgogKi8KY2xhc3MgQ2hhcnNldCBpbXBsZW1lbnRzIEF0UnVsZSwgUG9zaXRpb25hYmxlCnsKICAgIHVzZSBQb3NpdGlvbjsKCiAgICAvKioKICAgICAqIEB2YXIgQ1NTU3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJG9DaGFyc2V0OwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC44LjAKICAgICAqLwogICAgcHJvdGVjdGVkICRpTGluZU5vOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxhcnJheS1rZXksIENvbW1lbnQ+CiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wCiAgICAgKi8KICAgIHByb3RlY3RlZCAkYUNvbW1lbnRzOwoKICAgIC8qKgogICAgICogQHBhcmFtIENTU1N0cmluZyAkb0NoYXJzZXQKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENTU1N0cmluZyAkb0NoYXJzZXQsICRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+b0NoYXJzZXQgPSAkb0NoYXJzZXQ7CiAgICAgICAgJHRoaXMtPnNldFBvc2l0aW9uKCRpTGluZU5vKTsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfENTU1N0cmluZyAkb0NoYXJzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldENoYXJzZXQoJHNDaGFyc2V0KQogICAgewogICAgICAgICRzQ2hhcnNldCA9ICRzQ2hhcnNldCBpbnN0YW5jZW9mIENTU1N0cmluZyA/ICRzQ2hhcnNldCA6IG5ldyBDU1NTdHJpbmcoJHNDaGFyc2V0KTsKICAgICAgICAkdGhpcy0+b0NoYXJzZXQgPSAkc0NoYXJzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2hhcnNldCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vQ2hhcnNldC0+Z2V0U3RyaW5nKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMC4gVXNlIGByZW5kZXJgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgT3V0cHV0Rm9ybWF0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE91dHB1dEZvcm1hdHxudWxsICRvT3V0cHV0Rm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigkb091dHB1dEZvcm1hdCkKICAgIHsKICAgICAgICByZXR1cm4gInskb091dHB1dEZvcm1hdC0+Y29tbWVudHMoJHRoaXMpfUBjaGFyc2V0IHskdGhpcy0+b0NoYXJzZXQtPnJlbmRlcigkb091dHB1dEZvcm1hdCl9OyI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXRSdWxlTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdjaGFyc2V0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVBcmdzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9DaGFyc2V0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4gJGFDb21tZW50cwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tbWVudHMoYXJyYXkgJGFDb21tZW50cykKICAgIHsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmFDb21tZW50cywgJGFDb21tZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFDb21tZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIENvbW1lbnQ+ICRhQ29tbWVudHMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldENvbW1lbnRzKGFycmF5ICRhQ29tbWVudHMpCiAgICB7CiAgICAgICAgJHRoaXMtPmFDb21tZW50cyA9ICRhQ29tbWVudHM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Property/CSSNamespace.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50XENvbW1lbnQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQb3NpdGlvblxQb3NpdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uXFBvc2l0aW9uYWJsZTsKCi8qKgogKiBgQ1NTTmFtZXNwYWNlYCByZXByZXNlbnRzIGFuIGBAbmFtZXNwYWNlYCBydWxlLgogKi8KY2xhc3MgQ1NTTmFtZXNwYWNlIGltcGxlbWVudHMgQXRSdWxlLCBQb3NpdGlvbmFibGUKewogICAgdXNlIFBvc2l0aW9uOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkbVVybDsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNQcmVmaXg7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRpTGluZU5vOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxhcnJheS1rZXksIENvbW1lbnQ+CiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wCiAgICAgKi8KICAgIHByb3RlY3RlZCAkYUNvbW1lbnRzOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbVVybAogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRzUHJlZml4CiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbVVybCwgJHNQcmVmaXggPSBudWxsLCAkaUxpbmVObyA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPm1VcmwgPSAkbVVybDsKICAgICAgICAkdGhpcy0+c1ByZWZpeCA9ICRzUHJlZml4OwogICAgICAgICR0aGlzLT5zZXRQb3NpdGlvbigkaUxpbmVObyk7CiAgICAgICAgJHRoaXMtPmFDb21tZW50cyA9IFtdOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBpbiBWOC44LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiBWOS4wLjAuIFVzZSBgcmVuZGVyYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IE91dHB1dEZvcm1hdCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBPdXRwdXRGb3JtYXR8bnVsbCAkb091dHB1dEZvcm1hdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoJG9PdXRwdXRGb3JtYXQpCiAgICB7CiAgICAgICAgcmV0dXJuICdAbmFtZXNwYWNlICcgLiAoJHRoaXMtPnNQcmVmaXggPT09IG51bGwgPyAnJyA6ICR0aGlzLT5zUHJlZml4IC4gJyAnKQogICAgICAgICAgICAuICR0aGlzLT5tVXJsLT5yZW5kZXIoJG9PdXRwdXRGb3JtYXQpIC4gJzsnOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVybCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tVXJsOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlZml4KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNQcmVmaXg7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtVXJsCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRVcmwoJG1VcmwpCiAgICB7CiAgICAgICAgJHRoaXMtPm1VcmwgPSAkbVVybDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNQcmVmaXgKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFByZWZpeCgkc1ByZWZpeCkKICAgIHsKICAgICAgICAkdGhpcy0+c1ByZWZpeCA9ICRzUHJlZml4OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGF0UnVsZU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnbmFtZXNwYWNlJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LCBzdHJpbmc+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVBcmdzKCkKICAgIHsKICAgICAgICAkYVJlc3VsdCA9IFskdGhpcy0+bVVybF07CiAgICAgICAgaWYgKCR0aGlzLT5zUHJlZml4KSB7CiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGFSZXN1bHQsICR0aGlzLT5zUHJlZml4KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRhUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4gJGFDb21tZW50cwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tbWVudHMoYXJyYXkgJGFDb21tZW50cykKICAgIHsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmFDb21tZW50cywgJGFDb21tZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFDb21tZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIENvbW1lbnQ+ICRhQ29tbWVudHMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldENvbW1lbnRzKGFycmF5ICRhQ29tbWVudHMpCiAgICB7CiAgICAgICAgJHRoaXMtPmFDb21tZW50cyA9ICRhQ29tbWVudHM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Property/Import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50XENvbW1lbnQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQb3NpdGlvblxQb3NpdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uXFBvc2l0aW9uYWJsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFVSTDsKCi8qKgogKiBDbGFzcyByZXByZXNlbnRpbmcgYW4gYEBpbXBvcnRgIHJ1bGUuCiAqLwpjbGFzcyBJbXBvcnQgaW1wbGVtZW50cyBBdFJ1bGUsIFBvc2l0aW9uYWJsZQp7CiAgICB1c2UgUG9zaXRpb247CgogICAgLyoqCiAgICAgKiBAdmFyIFVSTAogICAgICovCiAgICBwcml2YXRlICRvTG9jYXRpb247CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzTWVkaWFRdWVyeTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8YXJyYXkta2V5LCBDb21tZW50PgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMAogICAgICovCiAgICBwcm90ZWN0ZWQgJGFDb21tZW50czsKCiAgICAvKioKICAgICAqIEBwYXJhbSBVUkwgJG9Mb2NhdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAkc01lZGlhUXVlcnkKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFVSTCAkb0xvY2F0aW9uLCAkc01lZGlhUXVlcnksICRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+b0xvY2F0aW9uID0gJG9Mb2NhdGlvbjsKICAgICAgICAkdGhpcy0+c01lZGlhUXVlcnkgPSAkc01lZGlhUXVlcnk7CiAgICAgICAgJHRoaXMtPnNldFBvc2l0aW9uKCRpTGluZU5vKTsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gVVJMICRvTG9jYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldExvY2F0aW9uKCRvTG9jYXRpb24pCiAgICB7CiAgICAgICAgJHRoaXMtPm9Mb2NhdGlvbiA9ICRvTG9jYXRpb247CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFVSTAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9jYXRpb24oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b0xvY2F0aW9uOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBpbiBWOC44LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiBWOS4wLjAuIFVzZSBgcmVuZGVyYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IE91dHB1dEZvcm1hdCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBPdXRwdXRGb3JtYXR8bnVsbCAkb091dHB1dEZvcm1hdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoJG9PdXRwdXRGb3JtYXQpCiAgICB7CiAgICAgICAgcmV0dXJuICRvT3V0cHV0Rm9ybWF0LT5jb21tZW50cygkdGhpcykgLiAiQGltcG9ydCAiIC4gJHRoaXMtPm9Mb2NhdGlvbi0+cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KQogICAgICAgICAgICAuICgkdGhpcy0+c01lZGlhUXVlcnkgPT09IG51bGwgPyAnJyA6ICcgJyAuICR0aGlzLT5zTWVkaWFRdWVyeSkgLiAnOyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXRSdWxlTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdpbXBvcnQnOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIFVSTHxzdHJpbmc+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVBcmdzKCkKICAgIHsKICAgICAgICAkYVJlc3VsdCA9IFskdGhpcy0+b0xvY2F0aW9uXTsKICAgICAgICBpZiAoJHRoaXMtPnNNZWRpYVF1ZXJ5KSB7CiAgICAgICAgICAgIGFycmF5X3B1c2goJGFSZXN1bHQsICR0aGlzLT5zTWVkaWFRdWVyeSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkYVJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIENvbW1lbnQ+ICRhQ29tbWVudHMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZENvbW1lbnRzKGFycmF5ICRhQ29tbWVudHMpCiAgICB7CiAgICAgICAgJHRoaXMtPmFDb21tZW50cyA9IGFycmF5X21lcmdlKCR0aGlzLT5hQ29tbWVudHMsICRhQ29tbWVudHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxhcnJheS1rZXksIENvbW1lbnQ+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb21tZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hQ29tbWVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBDb21tZW50PiAkYUNvbW1lbnRzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKQogICAgewogICAgICAgICR0aGlzLT5hQ29tbWVudHMgPSAkYUNvbW1lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1lZGlhUXVlcnkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c01lZGlhUXVlcnk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Property/KeyframeSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCmNsYXNzIEtleWZyYW1lU2VsZWN0b3IgZXh0ZW5kcyBTZWxlY3Rvcgp7CiAgICAvKioKICAgICAqIHJlZ2V4cCBmb3Igc3BlY2lmaWNpdHkgY2FsY3VsYXRpb25zCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgOC41LjIKICAgICAqLwogICAgY29uc3QgU0VMRUNUT1JfVkFMSURBVElPTl9SWCA9ICcvCiAgICBeKAogICAgICAgICg/OgogICAgICAgICAgICBbYS16QS1aMC05XHh7MDBBMH0tXHh7RkZGRn1fXiR8Kj0iXCd+XFtcXSgpXC1cc1wuOiMrPl0qICMgYW55IHNlcXVlbmNlIG9mIHZhbGlkIHVuZXNjYXBlZCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICg/OlxcXFwuKT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIHNpbmdsZSBlc2NhcGVkIGNoYXJhY3RlcgogICAgICAgICAgICAoPzooW1wnIl0pLio/KD88IVxcXFwpXDIpPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBxdW90ZWQgdGV4dCBsaWtlIFtpZD0iZXhhbXBsZSJdCiAgICAgICAgKSoKICAgICl8CiAgICAoXGQrJSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBrZXlmcmFtZSBhbmltYXRpb24gcHJvZ3Jlc3MgcGVyY2VudGFnZSAoZS5nLiA1MCUpCiAgICAkCiAgICAvdXgnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Property/Selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCi8qKgogKiBDbGFzcyByZXByZXNlbnRpbmcgYSBzaW5nbGUgQ1NTIHNlbGVjdG9yLiBTZWxlY3RvcnMgaGF2ZSB0byBiZSBzcGxpdCBieSB0aGUgY29tbWEgcHJpb3IgdG8gYmVpbmcgcGFzc2VkIGludG8gdGhpcwogKiBjbGFzcy4KICovCmNsYXNzIFNlbGVjdG9yCnsKICAgIC8qKgogICAgICogcmVnZXhwIGZvciBzcGVjaWZpY2l0eSBjYWxjdWxhdGlvbnMKICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBOT05fSURfQVRUUklCVVRFU19BTkRfUFNFVURPX0NMQVNTRVNfUlggPSAnLwogICAgICAgIChcLltcd10rKSAgICAgICAgICAgICAgICAgICAjIGNsYXNzZXMKICAgICAgICB8CiAgICAgICAgXFsoXHcrKSAgICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlcwogICAgICAgIHwKICAgICAgICAoXDooICAgICAgICAgICAgICAgICAgICAgICAgIyBwc2V1ZG8gY2xhc3NlcwogICAgICAgICAgICBsaW5rfHZpc2l0ZWR8YWN0aXZlCiAgICAgICAgICAgIHxob3Zlcnxmb2N1cwogICAgICAgICAgICB8bGFuZwogICAgICAgICAgICB8dGFyZ2V0CiAgICAgICAgICAgIHxlbmFibGVkfGRpc2FibGVkfGNoZWNrZWR8aW5kZXRlcm1pbmF0ZQogICAgICAgICAgICB8cm9vdAogICAgICAgICAgICB8bnRoLWNoaWxkfG50aC1sYXN0LWNoaWxkfG50aC1vZi10eXBlfG50aC1sYXN0LW9mLXR5cGUKICAgICAgICAgICAgfGZpcnN0LWNoaWxkfGxhc3QtY2hpbGR8Zmlyc3Qtb2YtdHlwZXxsYXN0LW9mLXR5cGUKICAgICAgICAgICAgfG9ubHktY2hpbGR8b25seS1vZi10eXBlCiAgICAgICAgICAgIHxlbXB0eXxjb250YWlucwogICAgICAgICkpCiAgICAgICAgL2l4JzsKCiAgICAvKioKICAgICAqIHJlZ2V4cCBmb3Igc3BlY2lmaWNpdHkgY2FsY3VsYXRpb25zCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgRUxFTUVOVFNfQU5EX1BTRVVET19FTEVNRU5UU19SWCA9ICcvCiAgICAgICAgKChefFtcc1wrXD5cfl0rKVtcd10rICAgIyBlbGVtZW50cwogICAgICAgIHwKICAgICAgICBcOnsxLDJ9KCAgICAgICAgICAgICAgICAjIHBzZXVkby1lbGVtZW50cwogICAgICAgICAgICBhZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8c2VsZWN0aW9uCiAgICAgICAgKSkKICAgICAgICAvaXgnOwoKICAgIC8qKgogICAgICogcmVnZXhwIGZvciBzcGVjaWZpY2l0eSBjYWxjdWxhdGlvbnMKICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjUuMgogICAgICovCiAgICBjb25zdCBTRUxFQ1RPUl9WQUxJREFUSU9OX1JYID0gJy8KICAgICAgICBeKAogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgIFthLXpBLVowLTlceHswMEEwfS1ceHtGRkZGfV9eJHwqPSJcJ35cW1xdKClcLVxzXC46Iys+XSogIyBhbnkgc2VxdWVuY2Ugb2YgdmFsaWQgdW5lc2NhcGVkIGNoYXJhY3RlcnMKICAgICAgICAgICAgICAgICg/OlxcXFwuKT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIHNpbmdsZSBlc2NhcGVkIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgKD86KFtcJyJdKS4qPyg/PCFcXFxcKVwyKT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgcXVvdGVkIHRleHQgbGlrZSBbaWQ9ImV4YW1wbGUiXQogICAgICAgICAgICApKgogICAgICAgICkkCiAgICAgICAgL3V4JzsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNTZWxlY3RvcjsKCiAgICAvKioKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkaVNwZWNpZmljaXR5OwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1NlbGVjdG9yCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWQoJHNTZWxlY3RvcikKICAgIHsKICAgICAgICByZXR1cm4gcHJlZ19tYXRjaChzdGF0aWM6OlNFTEVDVE9SX1ZBTElEQVRJT05fUlgsICRzU2VsZWN0b3IpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1NlbGVjdG9yCiAgICAgKiBAcGFyYW0gYm9vbCAkYkNhbGN1bGF0ZVNwZWNpZmljaXR5IEBkZXByZWNhdGVkIHNpbmNlIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNTZWxlY3RvciwgJGJDYWxjdWxhdGVTcGVjaWZpY2l0eSA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5zZXRTZWxlY3Rvcigkc1NlbGVjdG9yKTsKICAgICAgICBpZiAoJGJDYWxjdWxhdGVTcGVjaWZpY2l0eSkgewogICAgICAgICAgICAkdGhpcy0+Z2V0U3BlY2lmaWNpdHkoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VsZWN0b3IoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c1NlbGVjdG9yOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1NlbGVjdG9yCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRTZWxlY3Rvcigkc1NlbGVjdG9yKQogICAgewogICAgICAgICR0aGlzLT5zU2VsZWN0b3IgPSB0cmltKCRzU2VsZWN0b3IpOwogICAgICAgICR0aGlzLT5pU3BlY2lmaWNpdHkgPSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBpbiBWOC44LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiBWOS4wLjAuIFVzZSBgcmVuZGVyYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTZWxlY3RvcigpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwZWNpZmljaXR5KCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmlTcGVjaWZpY2l0eSA9PT0gbnVsbCkgewogICAgICAgICAgICAkYSA9IDA7CiAgICAgICAgICAgIC8vLyBAdG9kbyBzaG91bGQgZXhjbHVkZSBcIyBhcyB3ZWxsIGFzICIjIgogICAgICAgICAgICAkYU1hdGNoZXMgPSBudWxsOwogICAgICAgICAgICAkYiA9IHN1YnN0cl9jb3VudCgkdGhpcy0+c1NlbGVjdG9yLCAnIycpOwogICAgICAgICAgICAkYyA9IHByZWdfbWF0Y2hfYWxsKHNlbGY6Ok5PTl9JRF9BVFRSSUJVVEVTX0FORF9QU0VVRE9fQ0xBU1NFU19SWCwgJHRoaXMtPnNTZWxlY3RvciwgJGFNYXRjaGVzKTsKICAgICAgICAgICAgJGQgPSBwcmVnX21hdGNoX2FsbChzZWxmOjpFTEVNRU5UU19BTkRfUFNFVURPX0VMRU1FTlRTX1JYLCAkdGhpcy0+c1NlbGVjdG9yLCAkYU1hdGNoZXMpOwogICAgICAgICAgICAkdGhpcy0+aVNwZWNpZmljaXR5ID0gKCRhICogMTAwMCkgKyAoJGIgKiAxMDApICsgKCRjICogMTApICsgJGQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdGhpcy0+aVNwZWNpZmljaXR5OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Renderable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCmludGVyZmFjZSBSZW5kZXJhYmxlCnsKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBpbiBWOC44LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiBWOS4wLjAuIFVzZSBgcmVuZGVyYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOwoKICAgIC8qKgogICAgICogQHBhcmFtIE91dHB1dEZvcm1hdHxudWxsICRvT3V0cHV0Rm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigkb091dHB1dEZvcm1hdCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZU5vKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Rule/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Rule/Rule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlOwoKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudDsKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudGFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xDU1NFbGVtZW50Owp1c2UgU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0Owp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xQYXJzZXJTdGF0ZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZEVPRkV4Y2VwdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUG9zaXRpb25cUG9zaXRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQb3NpdGlvblxQb3NpdGlvbmFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxSdWxlVmFsdWVMaXN0Owp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcVmFsdWU7CgovKioKICogYFJ1bGVgcyBqdXN0IGhhdmUgYSBzdHJpbmcga2V5ICh0aGUgcnVsZSkgYW5kIGEgJ1ZhbHVlJy4KICoKICogSW4gQ1NTLCBgUnVsZWBzIGFyZSBleHByZXNzZWQgYXMgZm9sbG93czog4oCca2V5OiB2YWx1ZVswXVswXSB2YWx1ZVswXVsxXSwgdmFsdWVbMV1bMF0gdmFsdWVbMV1bMV074oCdCiAqLwpjbGFzcyBSdWxlIGltcGxlbWVudHMgQ29tbWVudGFibGUsIENTU0VsZW1lbnQsIFBvc2l0aW9uYWJsZQp7CiAgICB1c2UgUG9zaXRpb247CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzUnVsZTsKCiAgICAvKioKICAgICAqIEB2YXIgUnVsZVZhbHVlTGlzdHxzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlICRtVmFsdWU7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSAkYklzSW1wb3J0YW50OwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxpbnQsIGludD4KICAgICAqLwogICAgcHJpdmF0ZSAkYUllSGFjazsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8YXJyYXkta2V5LCBDb21tZW50PgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMAogICAgICovCiAgICBwcm90ZWN0ZWQgJGFDb21tZW50czsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNSdWxlCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKiBAcGFyYW0gaW50ICRpQ29sTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzUnVsZSwgJGlMaW5lTm8gPSAwLCAkaUNvbE5vID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+c1J1bGUgPSAkc1J1bGU7CiAgICAgICAgJHRoaXMtPm1WYWx1ZSA9IG51bGw7CiAgICAgICAgJHRoaXMtPmJJc0ltcG9ydGFudCA9IGZhbHNlOwogICAgICAgICR0aGlzLT5hSWVIYWNrID0gW107CiAgICAgICAgJHRoaXMtPnNldFBvc2l0aW9uKCRpTGluZU5vLCAkaUNvbE5vKTsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCBDb21tZW50PiAkY29tbWVudHNCZWZvcmVSdWxlCiAgICAgKgogICAgICogQHJldHVybiBSdWxlCiAgICAgKgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSBWOC44LjAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlLCAkY29tbWVudHNCZWZvcmVSdWxlID0gW10pCiAgICB7CiAgICAgICAgJGFDb21tZW50cyA9IFxhcnJheV9tZXJnZSgkY29tbWVudHNCZWZvcmVSdWxlLCAkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpKTsKICAgICAgICAkb1J1bGUgPSBuZXcgUnVsZSgKICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+cGFyc2VJZGVudGlmaWVyKCEkb1BhcnNlclN0YXRlLT5jb21lcygiLS0iKSksCiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCksCiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRDb2x1bW4oKQogICAgICAgICk7CiAgICAgICAgJG9SdWxlLT5zZXRDb21tZW50cygkYUNvbW1lbnRzKTsKICAgICAgICAkb1J1bGUtPmFkZENvbW1lbnRzKCRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCkpOwogICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJzonKTsKICAgICAgICAkb1ZhbHVlID0gVmFsdWU6OnBhcnNlVmFsdWUoJG9QYXJzZXJTdGF0ZSwgc2VsZjo6bGlzdERlbGltaXRlckZvclJ1bGUoJG9SdWxlLT5nZXRSdWxlKCkpKTsKICAgICAgICAkb1J1bGUtPnNldFZhbHVlKCRvVmFsdWUpOwogICAgICAgIGlmICgkb1BhcnNlclN0YXRlLT5nZXRTZXR0aW5ncygpLT5iTGVuaWVudFBhcnNpbmcpIHsKICAgICAgICAgICAgd2hpbGUgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCdcXCcpKSB7CiAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCdcXCcpOwogICAgICAgICAgICAgICAgJG9SdWxlLT5hZGRJZUhhY2soJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgpKTsKICAgICAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJyEnKSkgewogICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCchJyk7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJ2ltcG9ydGFudCcpOwogICAgICAgICAgICAkb1J1bGUtPnNldElzSW1wb3J0YW50KHRydWUpOwogICAgICAgIH0KICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwogICAgICAgIHdoaWxlICgkb1BhcnNlclN0YXRlLT5jb21lcygnOycpKSB7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJzsnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb1J1bGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBkZWxpbWl0ZXJzIChvciBzZXBhcmF0b3JzKS4KICAgICAqIFRoZSBmaXJzdCBpdGVtIGlzIHRoZSBpbm5lcm1vc3Qgc2VwYXJhdG9yIChvciwgcHV0IGFub3RoZXIgd2F5LCB0aGUgaGlnaGVzdC1wcmVjZWRlbmNlIG9wZXJhdG9yKS4KICAgICAqIFRoZSBzZXF1ZW5jZSBjb250aW51ZXMgdG8gdGhlIG91dGVybW9zdCBzZXBhcmF0b3IgKG9yIGxvd2VzdC1wcmVjZWRlbmNlIG9wZXJhdG9yKS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzUnVsZQogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxub24tZW1wdHktc3RyaW5nPgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsaXN0RGVsaW1pdGVyRm9yUnVsZSgkc1J1bGUpCiAgICB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eZm9udCgkfC0pLycsICRzUnVsZSkpIHsKICAgICAgICAgICAgcmV0dXJuIFsnLCcsICcvJywgJyAnXTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoJHNSdWxlKSB7CiAgICAgICAgICAgIGNhc2UgJ3NyYyc6CiAgICAgICAgICAgICAgICByZXR1cm4gWycgJywgJywnXTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiBbJywnLCAnICcsICcvJ107CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1J1bGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFJ1bGUoJHNSdWxlKQogICAgewogICAgICAgICR0aGlzLT5zUnVsZSA9ICRzUnVsZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSdWxlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNSdWxlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBSdWxlVmFsdWVMaXN0fHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tVmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUnVsZVZhbHVlTGlzdHxzdHJpbmd8bnVsbCAkbVZhbHVlCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWx1ZSgkbVZhbHVlKQogICAgewogICAgICAgICR0aGlzLT5tVmFsdWUgPSAkbVZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgYXJyYXk8YXJyYXkta2V5LCBSdWxlVmFsdWVMaXN0Pj4gJGFTcGFjZVNlcGFyYXRlZFZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gUnVsZVZhbHVlTGlzdAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDkuMAogICAgICogICAgICAgICAgICAgT2xkLVN0eWxlIDItZGltZW5zaW9uYWwgYXJyYXkgZ2l2ZW4uIFJldGFpbmVkIGZvciAoc29tZSkgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkuCiAgICAgKiAgICAgICAgICAgICBVc2UgYHNldFZhbHVlKClgIGluc3RlYWQgYW5kIHdyYXAgdGhlIHZhbHVlIGluc2lkZSBhIFJ1bGVWYWx1ZUxpc3QgaWYgbmVjZXNzYXJ5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWVzKGFycmF5ICRhU3BhY2VTZXBhcmF0ZWRWYWx1ZXMpCiAgICB7CiAgICAgICAgJG9TcGFjZVNlcGFyYXRlZExpc3QgPSBudWxsOwogICAgICAgIGlmIChjb3VudCgkYVNwYWNlU2VwYXJhdGVkVmFsdWVzKSA+IDEpIHsKICAgICAgICAgICAgJG9TcGFjZVNlcGFyYXRlZExpc3QgPSBuZXcgUnVsZVZhbHVlTGlzdCgnICcsICR0aGlzLT5pTGluZU5vKTsKICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoJGFTcGFjZVNlcGFyYXRlZFZhbHVlcyBhcyAkYUNvbW1hU2VwYXJhdGVkVmFsdWVzKSB7CiAgICAgICAgICAgICRvQ29tbWFTZXBhcmF0ZWRMaXN0ID0gbnVsbDsKICAgICAgICAgICAgaWYgKGNvdW50KCRhQ29tbWFTZXBhcmF0ZWRWYWx1ZXMpID4gMSkgewogICAgICAgICAgICAgICAgJG9Db21tYVNlcGFyYXRlZExpc3QgPSBuZXcgUnVsZVZhbHVlTGlzdCgnLCcsICR0aGlzLT5pTGluZU5vKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3JlYWNoICgkYUNvbW1hU2VwYXJhdGVkVmFsdWVzIGFzICRtVmFsdWUpIHsKICAgICAgICAgICAgICAgIGlmICghJG9TcGFjZVNlcGFyYXRlZExpc3QgJiYgISRvQ29tbWFTZXBhcmF0ZWRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1WYWx1ZSA9ICRtVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRtVmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJG9Db21tYVNlcGFyYXRlZExpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkb0NvbW1hU2VwYXJhdGVkTGlzdC0+YWRkTGlzdENvbXBvbmVudCgkbVZhbHVlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJG9TcGFjZVNlcGFyYXRlZExpc3QtPmFkZExpc3RDb21wb25lbnQoJG1WYWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEkb1NwYWNlU2VwYXJhdGVkTGlzdCkgewogICAgICAgICAgICAgICAgJHRoaXMtPm1WYWx1ZSA9ICRvQ29tbWFTZXBhcmF0ZWRMaXN0OwogICAgICAgICAgICAgICAgcmV0dXJuICRvQ29tbWFTZXBhcmF0ZWRMaXN0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG9TcGFjZVNlcGFyYXRlZExpc3QtPmFkZExpc3RDb21wb25lbnQoJG9Db21tYVNlcGFyYXRlZExpc3QpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0aGlzLT5tVmFsdWUgPSAkb1NwYWNlU2VwYXJhdGVkTGlzdDsKICAgICAgICByZXR1cm4gJG9TcGFjZVNlcGFyYXRlZExpc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgYXJyYXk8aW50LCBSdWxlVmFsdWVMaXN0Pj4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA5LjAKICAgICAqICAgICAgICAgICAgIE9sZC1TdHlsZSAyLWRpbWVuc2lvbmFsIGFycmF5IHJldHVybmVkLiBSZXRhaW5lZCBmb3IgKHNvbWUpIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LgogICAgICogICAgICAgICAgICAgVXNlIGBnZXRWYWx1ZSgpYCBpbnN0ZWFkIGFuZCBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhIChuZXN0ZWQgc2V0IG9mKSBWYWx1ZUxpc3Qgb2JqZWN0KHMpLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVzKCkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5tVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CiAgICAgICAgICAgIHJldHVybiBbWyR0aGlzLT5tVmFsdWVdXTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5tVmFsdWUtPmdldExpc3RTZXBhcmF0b3IoKSA9PT0gJywnKSB7CiAgICAgICAgICAgIHJldHVybiBbJHRoaXMtPm1WYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKV07CiAgICAgICAgfQogICAgICAgICRhUmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm1WYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKSBhcyAkbVZhbHVlKSB7CiAgICAgICAgICAgIGlmICghJG1WYWx1ZSBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QgfHwgJG1WYWx1ZS0+Z2V0TGlzdFNlcGFyYXRvcigpICE9PSAnLCcpIHsKICAgICAgICAgICAgICAgICRhUmVzdWx0W10gPSBbJG1WYWx1ZV07CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHRoaXMtPm1WYWx1ZS0+Z2V0TGlzdFNlcGFyYXRvcigpID09PSAnICcgfHwgY291bnQoJGFSZXN1bHQpID09PSAwKSB7CiAgICAgICAgICAgICAgICAkYVJlc3VsdFtdID0gW107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yZWFjaCAoJG1WYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKSBhcyAkbVZhbHVlKSB7CiAgICAgICAgICAgICAgICAkYVJlc3VsdFtjb3VudCgkYVJlc3VsdCkgLSAxXVtdID0gJG1WYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJGFSZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIGEgdmFsdWUgdG8gdGhlIGV4aXN0aW5nIHZhbHVlLiBWYWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGlmIGEgYFJ1bGVWYWx1ZUxpc3RgIGV4aXN0cyBvZiB0aGUgZ2l2ZW4gdHlwZS4KICAgICAqIE90aGVyd2lzZSwgdGhlIGV4aXN0aW5nIHZhbHVlIHdpbGwgYmUgd3JhcHBlZCBieSBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIFJ1bGVWYWx1ZUxpc3R8YXJyYXk8aW50LCBSdWxlVmFsdWVMaXN0PiAkbVZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzVHlwZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkVmFsdWUoJG1WYWx1ZSwgJHNUeXBlID0gJyAnKQogICAgewogICAgICAgIGlmICghaXNfYXJyYXkoJG1WYWx1ZSkpIHsKICAgICAgICAgICAgJG1WYWx1ZSA9IFskbVZhbHVlXTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkdGhpcy0+bVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCB8fCAkdGhpcy0+bVZhbHVlLT5nZXRMaXN0U2VwYXJhdG9yKCkgIT09ICRzVHlwZSkgewogICAgICAgICAgICAkbUN1cnJlbnRWYWx1ZSA9ICR0aGlzLT5tVmFsdWU7CiAgICAgICAgICAgICR0aGlzLT5tVmFsdWUgPSBuZXcgUnVsZVZhbHVlTGlzdCgkc1R5cGUsICR0aGlzLT5nZXRMaW5lTnVtYmVyKCkpOwogICAgICAgICAgICBpZiAoJG1DdXJyZW50VmFsdWUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5tVmFsdWUtPmFkZExpc3RDb21wb25lbnQoJG1DdXJyZW50VmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKCRtVmFsdWUgYXMgJG1WYWx1ZUl0ZW0pIHsKICAgICAgICAgICAgJHRoaXMtPm1WYWx1ZS0+YWRkTGlzdENvbXBvbmVudCgkbVZhbHVlSXRlbSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkaU1vZGlmaWVyCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVjguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gVjkuMAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkSWVIYWNrKCRpTW9kaWZpZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmFJZUhhY2tbXSA9ICRpTW9kaWZpZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCBpbnQ+ICRhTW9kaWZpZXJzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVjguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gVjkuMAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SWVIYWNrKGFycmF5ICRhTW9kaWZpZXJzKQogICAgewogICAgICAgICR0aGlzLT5hSWVIYWNrID0gJGFNb2RpZmllcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgaW50PgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEllSGFjaygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hSWVIYWNrOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJGJJc0ltcG9ydGFudAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SXNJbXBvcnRhbnQoJGJJc0ltcG9ydGFudCkKICAgIHsKICAgICAgICAkdGhpcy0+YklzSW1wb3J0YW50ID0gJGJJc0ltcG9ydGFudDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXNJbXBvcnRhbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YklzSW1wb3J0YW50OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBpbiBWOC44LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiBWOS4wLjAuIFVzZSBgcmVuZGVyYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IE91dHB1dEZvcm1hdCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBPdXRwdXRGb3JtYXR8bnVsbCAkb091dHB1dEZvcm1hdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoJG9PdXRwdXRGb3JtYXQpCiAgICB7CiAgICAgICAgJHNSZXN1bHQgPSAieyRvT3V0cHV0Rm9ybWF0LT5jb21tZW50cygkdGhpcyl9eyR0aGlzLT5zUnVsZX06eyRvT3V0cHV0Rm9ybWF0LT5zcGFjZUFmdGVyUnVsZU5hbWUoKX0iOwogICAgICAgIGlmICgkdGhpcy0+bVZhbHVlIGluc3RhbmNlb2YgVmFsdWUpIHsgLy8gQ2FuIGFsc28gYmUgYSBWYWx1ZUxpc3QKICAgICAgICAgICAgJHNSZXN1bHQgLj0gJHRoaXMtPm1WYWx1ZS0+cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc1Jlc3VsdCAuPSAkdGhpcy0+bVZhbHVlOwogICAgICAgIH0KICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5hSWVIYWNrKSkgewogICAgICAgICAgICAkc1Jlc3VsdCAuPSAnIFxcJyAuIGltcGxvZGUoJ1xcJywgJHRoaXMtPmFJZUhhY2spOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPmJJc0ltcG9ydGFudCkgewogICAgICAgICAgICAkc1Jlc3VsdCAuPSAnICFpbXBvcnRhbnQnOwogICAgICAgIH0KICAgICAgICAkc1Jlc3VsdCAuPSAnOyc7CiAgICAgICAgcmV0dXJuICRzUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4gJGFDb21tZW50cwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tbWVudHMoYXJyYXkgJGFDb21tZW50cykKICAgIHsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmFDb21tZW50cywgJGFDb21tZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGFycmF5LWtleSwgQ29tbWVudD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFDb21tZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIENvbW1lbnQ+ICRhQ29tbWVudHMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldENvbW1lbnRzKGFycmF5ICRhQ29tbWVudHMpCiAgICB7CiAgICAgICAgJHRoaXMtPmFDb21tZW50cyA9ICRhQ29tbWVudHM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/RuleSet/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/RuleSet/AtRuleSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZTsKCi8qKgogKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgcnVsZSBzZXRzIGZvciBnZW5lcmljIGF0LXJ1bGVzIHdoaWNoIGFyZSBub3QgY292ZXJlZCBieSBzcGVjaWZpYyBjbGFzc2VzLCBpLmUuLCBub3QKICogYEBpbXBvcnRgLCBgQGNoYXJzZXRgIG9yIGBAbWVkaWFgLgogKgogKiBBIGNvbW1vbiBleGFtcGxlIGZvciB0aGlzIGlzIGBAZm9udC1mYWNlYC4KICovCmNsYXNzIEF0UnVsZVNldCBleHRlbmRzIFJ1bGVTZXQgaW1wbGVtZW50cyBBdFJ1bGUKewogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzVHlwZTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNBcmdzOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1R5cGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNBcmdzCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc1R5cGUsICRzQXJncyA9ICcnLCAkaUxpbmVObyA9IDApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CiAgICAgICAgJHRoaXMtPnNUeXBlID0gJHNUeXBlOwogICAgICAgICR0aGlzLT5zQXJncyA9ICRzQXJnczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNUeXBlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGF0UnVsZUFyZ3MoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c0FyZ3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMC4gVXNlIGByZW5kZXJgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgT3V0cHV0Rm9ybWF0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE91dHB1dEZvcm1hdHxudWxsICRvT3V0cHV0Rm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigkb091dHB1dEZvcm1hdCkKICAgIHsKICAgICAgICAkc1Jlc3VsdCA9ICRvT3V0cHV0Rm9ybWF0LT5jb21tZW50cygkdGhpcyk7CiAgICAgICAgJHNBcmdzID0gJHRoaXMtPnNBcmdzOwogICAgICAgIGlmICgkc0FyZ3MpIHsKICAgICAgICAgICAgJHNBcmdzID0gJyAnIC4gJHNBcmdzOwogICAgICAgIH0KICAgICAgICAkc1Jlc3VsdCAuPSAiQHskdGhpcy0+c1R5cGV9JHNBcmdzeyRvT3V0cHV0Rm9ybWF0LT5zcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSgpfXsiOwogICAgICAgICRzUmVzdWx0IC49ICR0aGlzLT5yZW5kZXJSdWxlcygkb091dHB1dEZvcm1hdCk7CiAgICAgICAgJHNSZXN1bHQgLj0gJ30nOwogICAgICAgIHJldHVybiAkc1Jlc3VsdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/RuleSet/DeclarationBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXENTU0xpc3RcQ1NTTGlzdDsKdXNlIFNhYmJlcndvcm1cQ1NTXENTU0xpc3RcS2V5RnJhbWU7CnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXE91dHB1dEV4Y2VwdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcUGFyc2VyU3RhdGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEtleWZyYW1lU2VsZWN0b3I7CnVzZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3RvcjsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENvbG9yOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcUnVsZVZhbHVlTGlzdDsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFNpemU7CnVzZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxVUkw7CnVzZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxWYWx1ZTsKCi8qKgogKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBgUnVsZVNldGAgY29uc3RyYWluZWQgYnkgYSBgU2VsZWN0b3JgLgogKgogKiBJdCBjb250YWlucyBhbiBhcnJheSBvZiBzZWxlY3RvciBvYmplY3RzIChjb21tYS1zZXBhcmF0ZWQgaW4gdGhlIENTUykgYXMgd2VsbCBhcyB0aGUgcnVsZXMgdG8gYmUgYXBwbGllZCB0byB0aGUKICogbWF0Y2hpbmcgZWxlbWVudHMuCiAqCiAqIERlY2xhcmF0aW9uIGJsb2NrcyB1c3VhbGx5IGFwcGVhciBkaXJlY3RseSBpbnNpZGUgYSBgRG9jdW1lbnRgIG9yIGFub3RoZXIgYENTU0xpc3RgIChtb3N0bHkgYSBgTWVkaWFRdWVyeWApLgogKi8KY2xhc3MgRGVjbGFyYXRpb25CbG9jayBleHRlbmRzIFJ1bGVTZXQKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PGludCwgU2VsZWN0b3J8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlICRhU2VsZWN0b3JzOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkaUxpbmVObwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlMaW5lTm8gPSAwKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGlMaW5lTm8pOwogICAgICAgICR0aGlzLT5hU2VsZWN0b3JzID0gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ1NTTGlzdHxudWxsICRvTGlzdAogICAgICoKICAgICAqIEByZXR1cm4gRGVjbGFyYXRpb25CbG9ja3xmYWxzZQogICAgICoKICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqCiAgICAgKiBAaW50ZXJuYWwgc2luY2UgVjguOC4wCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSwgJG9MaXN0ID0gbnVsbCkKICAgIHsKICAgICAgICAkYUNvbW1lbnRzID0gW107CiAgICAgICAgJG9SZXN1bHQgPSBuZXcgRGVjbGFyYXRpb25CbG9jaygkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkYVNlbGVjdG9yUGFydHMgPSBbXTsKICAgICAgICAgICAgJHNTdHJpbmdXcmFwcGVyQ2hhciA9IGZhbHNlOwogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkYVNlbGVjdG9yUGFydHNbXSA9ICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoMSkKICAgICAgICAgICAgICAgICAgICAuICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVVbnRpbChbJ3snLCAnfScsICdcJycsICciJ10sIGZhbHNlLCBmYWxzZSwgJGFDb21tZW50cyk7CiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJG9QYXJzZXJTdGF0ZS0+cGVlaygpLCBbJ1wnJywgJyInXSkgJiYgc3Vic3RyKGVuZCgkYVNlbGVjdG9yUGFydHMpLCAtMSkgIT0gIlxcIikgewogICAgICAgICAgICAgICAgICAgIGlmICgkc1N0cmluZ1dyYXBwZXJDaGFyID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc1N0cmluZ1dyYXBwZXJDaGFyID0gJG9QYXJzZXJTdGF0ZS0+cGVlaygpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkc1N0cmluZ1dyYXBwZXJDaGFyID09ICRvUGFyc2VyU3RhdGUtPnBlZWsoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc1N0cmluZ1dyYXBwZXJDaGFyID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IHdoaWxlICghaW5fYXJyYXkoJG9QYXJzZXJTdGF0ZS0+cGVlaygpLCBbJ3snLCAnfSddKSB8fCAkc1N0cmluZ1dyYXBwZXJDaGFyICE9PSBmYWxzZSk7CiAgICAgICAgICAgICRvUmVzdWx0LT5zZXRTZWxlY3RvcnMoaW1wbG9kZSgnJywgJGFTZWxlY3RvclBhcnRzKSwgJG9MaXN0KTsKICAgICAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCd7JykpIHsKICAgICAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPmdldFNldHRpbmdzKCktPmJMZW5pZW50UGFyc2luZykgewogICAgICAgICAgICAgICAgaWYgKCEkb1BhcnNlclN0YXRlLT5jb21lcygnfScpKSB7CiAgICAgICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVVudGlsKCd9JywgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJG9SZXN1bHQtPnNldENvbW1lbnRzKCRhQ29tbWVudHMpOwogICAgICAgIFJ1bGVTZXQ6OnBhcnNlUnVsZVNldCgkb1BhcnNlclN0YXRlLCAkb1Jlc3VsdCk7CiAgICAgICAgcmV0dXJuICRvUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGludCwgU2VsZWN0b3J8c3RyaW5nPnxzdHJpbmcgJG1TZWxlY3RvcgogICAgICogQHBhcmFtIENTU0xpc3R8bnVsbCAkb0xpc3QKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2VsZWN0b3JzKCRtU2VsZWN0b3IsICRvTGlzdCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCRtU2VsZWN0b3IpKSB7CiAgICAgICAgICAgICR0aGlzLT5hU2VsZWN0b3JzID0gJG1TZWxlY3RvcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+YVNlbGVjdG9ycyA9IGV4cGxvZGUoJywnLCAkbVNlbGVjdG9yKTsKICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFTZWxlY3RvcnMgYXMgJGlLZXkgPT4gJG1TZWxlY3RvcikgewogICAgICAgICAgICBpZiAoISgkbVNlbGVjdG9yIGluc3RhbmNlb2YgU2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAgICBpZiAoJG9MaXN0ID09PSBudWxsIHx8ICEoJG9MaXN0IGluc3RhbmNlb2YgS2V5RnJhbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFTZWxlY3Rvcjo6aXNWYWxpZCgkbVNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlbGVjdG9yIGRpZCBub3QgbWF0Y2ggJyIgLiBTZWxlY3Rvcjo6U0VMRUNUT1JfVkFMSURBVElPTl9SWCAuICInLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbVNlbGVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFTZWxlY3RvcnNbJGlLZXldID0gbmV3IFNlbGVjdG9yKCRtU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIUtleWZyYW1lU2VsZWN0b3I6OmlzVmFsaWQoJG1TZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWxlY3RvciBkaWQgbm90IG1hdGNoICciIC4gS2V5ZnJhbWVTZWxlY3Rvcjo6U0VMRUNUT1JfVkFMSURBVElPTl9SWCAuICInLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbVNlbGVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFTZWxlY3RvcnNbJGlLZXldID0gbmV3IEtleWZyYW1lU2VsZWN0b3IoJG1TZWxlY3Rvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmUgb25lIG9mIHRoZSBzZWxlY3RvcnMgb2YgdGhlIGJsb2NrLgogICAgICoKICAgICAqIEBwYXJhbSBTZWxlY3RvcnxzdHJpbmcgJG1TZWxlY3RvcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlU2VsZWN0b3IoJG1TZWxlY3RvcikKICAgIHsKICAgICAgICBpZiAoJG1TZWxlY3RvciBpbnN0YW5jZW9mIFNlbGVjdG9yKSB7CiAgICAgICAgICAgICRtU2VsZWN0b3IgPSAkbVNlbGVjdG9yLT5nZXRTZWxlY3RvcigpOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+YVNlbGVjdG9ycyBhcyAkaUtleSA9PiAkb1NlbGVjdG9yKSB7CiAgICAgICAgICAgIGlmICgkb1NlbGVjdG9yLT5nZXRTZWxlY3RvcigpID09PSAkbVNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+YVNlbGVjdG9yc1skaUtleV0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIFNlbGVjdG9yfHN0cmluZz4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA5LjA7IHVzZSBgZ2V0U2VsZWN0b3JzKClgIGluc3RlYWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlbGVjdG9yKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNlbGVjdG9ycygpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFNlbGVjdG9yfHN0cmluZyAkbVNlbGVjdG9yCiAgICAgKiBAcGFyYW0gQ1NTTGlzdHxudWxsICRvTGlzdAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDkuMDsgdXNlIGBzZXRTZWxlY3RvcnMoKWAgaW5zdGVhZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2VsZWN0b3IoJG1TZWxlY3RvciwgJG9MaXN0ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0U2VsZWN0b3JzKCRtU2VsZWN0b3IsICRvTGlzdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgU2VsZWN0b3J8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VsZWN0b3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFTZWxlY3RvcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBTcGxpdHMgc2hvcnRoYW5kIGRlY2xhcmF0aW9ucyAoZS5nLiBgbWFyZ2luYCBvciBgZm9udGApIGludG8gdGhlaXIgY29uc3RpdHVlbnQgcGFydHMuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgOC43LjAsIHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHN1YnN0aXR1dGlvbiBpbiB2ZXJzaW9uIDkuMCBpbiAjNTExCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleHBhbmRTaG9ydGhhbmRzKCkKICAgIHsKICAgICAgICAvLyBib3JkZXIgbXVzdCBiZSBleHBhbmRlZCBiZWZvcmUgZGltZW5zaW9ucwogICAgICAgICR0aGlzLT5leHBhbmRCb3JkZXJTaG9ydGhhbmQoKTsKICAgICAgICAkdGhpcy0+ZXhwYW5kRGltZW5zaW9uc1Nob3J0aGFuZCgpOwogICAgICAgICR0aGlzLT5leHBhbmRGb250U2hvcnRoYW5kKCk7CiAgICAgICAgJHRoaXMtPmV4cGFuZEJhY2tncm91bmRTaG9ydGhhbmQoKTsKICAgICAgICAkdGhpcy0+ZXhwYW5kTGlzdFN0eWxlU2hvcnRoYW5kKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIHNob3J0aGFuZCBkZWNsYXJhdGlvbnMgKGUuZy4gYG1hcmdpbmAgb3IgYGZvbnRgKSB3aGVuZXZlciBwb3NzaWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSA4LjcuMCwgd2lsbCBiZSByZW1vdmVkIHdpdGhvdXQgc3Vic3RpdHV0aW9uIGluIHZlcnNpb24gOS4wIGluICM1MTEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVNob3J0aGFuZHMoKQogICAgewogICAgICAgICR0aGlzLT5jcmVhdGVCYWNrZ3JvdW5kU2hvcnRoYW5kKCk7CiAgICAgICAgJHRoaXMtPmNyZWF0ZURpbWVuc2lvbnNTaG9ydGhhbmQoKTsKICAgICAgICAvLyBib3JkZXIgbXVzdCBiZSBzaG9ydGVuZWQgYWZ0ZXIgZGltZW5zaW9ucwogICAgICAgICR0aGlzLT5jcmVhdGVCb3JkZXJTaG9ydGhhbmQoKTsKICAgICAgICAkdGhpcy0+Y3JlYXRlRm9udFNob3J0aGFuZCgpOwogICAgICAgICR0aGlzLT5jcmVhdGVMaXN0U3R5bGVTaG9ydGhhbmQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0cyBzaG9ydGhhbmQgYm9yZGVyIGRlY2xhcmF0aW9ucyAoZS5nLiBgYm9yZGVyOiAxcHggcmVkO2ApLgogICAgICoKICAgICAqIEFkZGl0aW9uYWwgc3BsaXR0aW5nIGhhcHBlbnMgaW4gZXhwYW5kRGltZW5zaW9uc1Nob3J0aGFuZC4KICAgICAqCiAgICAgKiBNdWx0aXBsZSBib3JkZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBhcyBvZiAzLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguNy4wLCB3aWxsIGJlIHJlbW92ZWQgd2l0aG91dCBzdWJzdGl0dXRpb24gaW4gdmVyc2lvbiA5LjAgaW4gIzUxMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwYW5kQm9yZGVyU2hvcnRoYW5kKCkKICAgIHsKICAgICAgICAkYUJvcmRlclJ1bGVzID0gWwogICAgICAgICAgICAnYm9yZGVyJywKICAgICAgICAgICAgJ2JvcmRlci1sZWZ0JywKICAgICAgICAgICAgJ2JvcmRlci1yaWdodCcsCiAgICAgICAgICAgICdib3JkZXItdG9wJywKICAgICAgICAgICAgJ2JvcmRlci1ib3R0b20nLAogICAgICAgIF07CiAgICAgICAgJGFCb3JkZXJTaXplcyA9IFsKICAgICAgICAgICAgJ3RoaW4nLAogICAgICAgICAgICAnbWVkaXVtJywKICAgICAgICAgICAgJ3RoaWNrJywKICAgICAgICBdOwogICAgICAgICRhUnVsZXMgPSAkdGhpcy0+Z2V0UnVsZXNBc3NvYygpOwogICAgICAgIGZvcmVhY2ggKCRhQm9yZGVyUnVsZXMgYXMgJHNCb3JkZXJSdWxlKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJGFSdWxlc1skc0JvcmRlclJ1bGVdKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9SdWxlID0gJGFSdWxlc1skc0JvcmRlclJ1bGVdOwogICAgICAgICAgICAkbVJ1bGVWYWx1ZSA9ICRvUnVsZS0+Z2V0VmFsdWUoKTsKICAgICAgICAgICAgJGFWYWx1ZXMgPSBbXTsKICAgICAgICAgICAgaWYgKCEkbVJ1bGVWYWx1ZSBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QpIHsKICAgICAgICAgICAgICAgICRhVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRhVmFsdWVzID0gJG1SdWxlVmFsdWUtPmdldExpc3RDb21wb25lbnRzKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yZWFjaCAoJGFWYWx1ZXMgYXMgJG1WYWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKCRtVmFsdWUgaW5zdGFuY2VvZiBWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICRtTmV3VmFsdWUgPSBjbG9uZSAkbVZhbHVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbU5ld1ZhbHVlID0gJG1WYWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkbVZhbHVlIGluc3RhbmNlb2YgU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICRzTmV3UnVsZU5hbWUgPSAkc0JvcmRlclJ1bGUgLiAiLXdpZHRoIjsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkbVZhbHVlIGluc3RhbmNlb2YgQ29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAkc05ld1J1bGVOYW1lID0gJHNCb3JkZXJSdWxlIC4gIi1jb2xvciI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkbVZhbHVlLCAkYUJvcmRlclNpemVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc05ld1J1bGVOYW1lID0gJHNCb3JkZXJSdWxlIC4gIi13aWR0aCI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNOZXdSdWxlTmFtZSA9ICRzQm9yZGVyUnVsZSAuICItc3R5bGUiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvTmV3UnVsZSA9IG5ldyBSdWxlKCRzTmV3UnVsZU5hbWUsICRvUnVsZS0+Z2V0TGluZU5vKCksICRvUnVsZS0+Z2V0Q29sTm8oKSk7CiAgICAgICAgICAgICAgICAkb05ld1J1bGUtPnNldElzSW1wb3J0YW50KCRvUnVsZS0+Z2V0SXNJbXBvcnRhbnQoKSk7CiAgICAgICAgICAgICAgICAkb05ld1J1bGUtPmFkZFZhbHVlKFskbU5ld1ZhbHVlXSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+YWRkUnVsZSgkb05ld1J1bGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5yZW1vdmVSdWxlKCRzQm9yZGVyUnVsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU3BsaXRzIHNob3J0aGFuZCBkaW1lbnNpb25hbCBkZWNsYXJhdGlvbnMgKGUuZy4gYG1hcmdpbjogMHB4IGF1dG87YCkKICAgICAqIGludG8gdGhlaXIgY29uc3RpdHVlbnQgcGFydHMuCiAgICAgKgogICAgICogSGFuZGxlcyBgbWFyZ2luYCwgYHBhZGRpbmdgLCBgYm9yZGVyLWNvbG9yYCwgYGJvcmRlci1zdHlsZWAgYW5kIGBib3JkZXItd2lkdGhgLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguNy4wLCB3aWxsIGJlIHJlbW92ZWQgd2l0aG91dCBzdWJzdGl0dXRpb24gaW4gdmVyc2lvbiA5LjAgaW4gIzUxMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwYW5kRGltZW5zaW9uc1Nob3J0aGFuZCgpCiAgICB7CiAgICAgICAgJGFFeHBhbnNpb25zID0gWwogICAgICAgICAgICAnbWFyZ2luJyA9PiAnbWFyZ2luLSVzJywKICAgICAgICAgICAgJ3BhZGRpbmcnID0+ICdwYWRkaW5nLSVzJywKICAgICAgICAgICAgJ2JvcmRlci1jb2xvcicgPT4gJ2JvcmRlci0lcy1jb2xvcicsCiAgICAgICAgICAgICdib3JkZXItc3R5bGUnID0+ICdib3JkZXItJXMtc3R5bGUnLAogICAgICAgICAgICAnYm9yZGVyLXdpZHRoJyA9PiAnYm9yZGVyLSVzLXdpZHRoJywKICAgICAgICBdOwogICAgICAgICRhUnVsZXMgPSAkdGhpcy0+Z2V0UnVsZXNBc3NvYygpOwogICAgICAgIGZvcmVhY2ggKCRhRXhwYW5zaW9ucyBhcyAkc1Byb3BlcnR5ID0+ICRzRXhwYW5kZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkYVJ1bGVzWyRzUHJvcGVydHldKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9SdWxlID0gJGFSdWxlc1skc1Byb3BlcnR5XTsKICAgICAgICAgICAgJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CiAgICAgICAgICAgICRhVmFsdWVzID0gW107CiAgICAgICAgICAgIGlmICghJG1SdWxlVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CiAgICAgICAgICAgICAgICAkYVZhbHVlc1tdID0gJG1SdWxlVmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkYVZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0b3AgPSAkcmlnaHQgPSAkYm90dG9tID0gJGxlZnQgPSBudWxsOwogICAgICAgICAgICBzd2l0Y2ggKGNvdW50KCRhVmFsdWVzKSkgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICR0b3AgPSAkcmlnaHQgPSAkYm90dG9tID0gJGxlZnQgPSAkYVZhbHVlc1swXTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAkdG9wID0gJGJvdHRvbSA9ICRhVmFsdWVzWzBdOwogICAgICAgICAgICAgICAgICAgICRsZWZ0ID0gJHJpZ2h0ID0gJGFWYWx1ZXNbMV07CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgJHRvcCA9ICRhVmFsdWVzWzBdOwogICAgICAgICAgICAgICAgICAgICRsZWZ0ID0gJHJpZ2h0ID0gJGFWYWx1ZXNbMV07CiAgICAgICAgICAgICAgICAgICAgJGJvdHRvbSA9ICRhVmFsdWVzWzJdOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICR0b3AgPSAkYVZhbHVlc1swXTsKICAgICAgICAgICAgICAgICAgICAkcmlnaHQgPSAkYVZhbHVlc1sxXTsKICAgICAgICAgICAgICAgICAgICAkYm90dG9tID0gJGFWYWx1ZXNbMl07CiAgICAgICAgICAgICAgICAgICAgJGxlZnQgPSAkYVZhbHVlc1szXTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3JlYWNoIChbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddIGFzICRzUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICRvTmV3UnVsZSA9IG5ldyBSdWxlKHNwcmludGYoJHNFeHBhbmRlZCwgJHNQb3NpdGlvbiksICRvUnVsZS0+Z2V0TGluZU5vKCksICRvUnVsZS0+Z2V0Q29sTm8oKSk7CiAgICAgICAgICAgICAgICAkb05ld1J1bGUtPnNldElzSW1wb3J0YW50KCRvUnVsZS0+Z2V0SXNJbXBvcnRhbnQoKSk7CiAgICAgICAgICAgICAgICAkb05ld1J1bGUtPmFkZFZhbHVlKCR7JHNQb3NpdGlvbn0pOwogICAgICAgICAgICAgICAgJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+cmVtb3ZlUnVsZSgkc1Byb3BlcnR5KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBzaG9ydGhhbmQgZm9udCBkZWNsYXJhdGlvbnMKICAgICAqIChlLmcuIGBmb250OiAzMDAgaXRhbGljIDExcHgvMTRweCB2ZXJkYW5hLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7YCkKICAgICAqIGludG8gdGhlaXIgY29uc3RpdHVlbnQgcGFydHMuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgOC43LjAsIHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHN1YnN0aXR1dGlvbiBpbiB2ZXJzaW9uIDkuMCBpbiAjNTExCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleHBhbmRGb250U2hvcnRoYW5kKCkKICAgIHsKICAgICAgICAkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKICAgICAgICBpZiAoIWlzc2V0KCRhUnVsZXNbJ2ZvbnQnXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkb1J1bGUgPSAkYVJ1bGVzWydmb250J107CiAgICAgICAgLy8gcmVzZXQgcHJvcGVydGllcyB0byAnbm9ybWFsJyBwZXIgaHR0cDovL3d3dy53My5vcmcvVFIvMjEvZm9udHMuaHRtbCNmb250LXNob3J0aGFuZAogICAgICAgICRhRm9udFByb3BlcnRpZXMgPSBbCiAgICAgICAgICAgICdmb250LXN0eWxlJyA9PiAnbm9ybWFsJywKICAgICAgICAgICAgJ2ZvbnQtdmFyaWFudCcgPT4gJ25vcm1hbCcsCiAgICAgICAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsCiAgICAgICAgICAgICdmb250LXNpemUnID0+ICdub3JtYWwnLAogICAgICAgICAgICAnbGluZS1oZWlnaHQnID0+ICdub3JtYWwnLAogICAgICAgIF07CiAgICAgICAgJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CiAgICAgICAgJGFWYWx1ZXMgPSBbXTsKICAgICAgICBpZiAoISRtUnVsZVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCkgewogICAgICAgICAgICAkYVZhbHVlc1tdID0gJG1SdWxlVmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGFWYWx1ZXMgPSAkbVJ1bGVWYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKTsKICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoJGFWYWx1ZXMgYXMgJG1WYWx1ZSkgewogICAgICAgICAgICBpZiAoISRtVmFsdWUgaW5zdGFuY2VvZiBWYWx1ZSkgewogICAgICAgICAgICAgICAgJG1WYWx1ZSA9IG1iX3N0cnRvbG93ZXIoJG1WYWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGluX2FycmF5KCRtVmFsdWUsIFsnbm9ybWFsJywgJ2luaGVyaXQnXSkpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKFsnZm9udC1zdHlsZScsICdmb250LXdlaWdodCcsICdmb250LXZhcmlhbnQnXSBhcyAkc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkYUZvbnRQcm9wZXJ0aWVzWyRzUHJvcGVydHldKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYUZvbnRQcm9wZXJ0aWVzWyRzUHJvcGVydHldID0gJG1WYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmIChpbl9hcnJheSgkbVZhbHVlLCBbJ2l0YWxpYycsICdvYmxpcXVlJ10pKSB7CiAgICAgICAgICAgICAgICAkYUZvbnRQcm9wZXJ0aWVzWydmb250LXN0eWxlJ10gPSAkbVZhbHVlOwogICAgICAgICAgICB9IGVsc2VpZiAoJG1WYWx1ZSA9PSAnc21hbGwtY2FwcycpIHsKICAgICAgICAgICAgICAgICRhRm9udFByb3BlcnRpZXNbJ2ZvbnQtdmFyaWFudCddID0gJG1WYWx1ZTsKICAgICAgICAgICAgfSBlbHNlaWYgKAogICAgICAgICAgICAgICAgaW5fYXJyYXkoJG1WYWx1ZSwgWydib2xkJywgJ2JvbGRlcicsICdsaWdodGVyJ10pCiAgICAgICAgICAgICAgICB8fCAoJG1WYWx1ZSBpbnN0YW5jZW9mIFNpemUKICAgICAgICAgICAgICAgICAgICAmJiBpbl9hcnJheSgkbVZhbHVlLT5nZXRTaXplKCksIHJhbmdlKDEwMCwgOTAwLCAxMDApKSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkYUZvbnRQcm9wZXJ0aWVzWydmb250LXdlaWdodCddID0gJG1WYWx1ZTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRtVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0ICYmICRtVmFsdWUtPmdldExpc3RTZXBhcmF0b3IoKSA9PSAnLycpIHsKICAgICAgICAgICAgICAgIGxpc3QoJG9TaXplLCAkb0hlaWdodCkgPSAkbVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwogICAgICAgICAgICAgICAgJGFGb250UHJvcGVydGllc1snZm9udC1zaXplJ10gPSAkb1NpemU7CiAgICAgICAgICAgICAgICAkYUZvbnRQcm9wZXJ0aWVzWydsaW5lLWhlaWdodCddID0gJG9IZWlnaHQ7CiAgICAgICAgICAgIH0gZWxzZWlmICgkbVZhbHVlIGluc3RhbmNlb2YgU2l6ZSAmJiAkbVZhbHVlLT5nZXRVbml0KCkgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRhRm9udFByb3BlcnRpZXNbJ2ZvbnQtc2l6ZSddID0gJG1WYWx1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRhRm9udFByb3BlcnRpZXNbJ2ZvbnQtZmFtaWx5J10gPSAkbVZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKCRhRm9udFByb3BlcnRpZXMgYXMgJHNQcm9wZXJ0eSA9PiAkbVZhbHVlKSB7CiAgICAgICAgICAgICRvTmV3UnVsZSA9IG5ldyBSdWxlKCRzUHJvcGVydHksICRvUnVsZS0+Z2V0TGluZU5vKCksICRvUnVsZS0+Z2V0Q29sTm8oKSk7CiAgICAgICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJG1WYWx1ZSk7CiAgICAgICAgICAgICRvTmV3UnVsZS0+c2V0SXNJbXBvcnRhbnQoJG9SdWxlLT5nZXRJc0ltcG9ydGFudCgpKTsKICAgICAgICAgICAgJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnJlbW92ZVJ1bGUoJ2ZvbnQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHNob3J0aGFuZCBiYWNrZ3JvdW5kIGRlY2xhcmF0aW9ucwogICAgICogKGUuZy4gYGJhY2tncm91bmQ6IHVybCgiY2hlc3MucG5nIikgZ3JheSA1MCUgcmVwZWF0IGZpeGVkO2ApCiAgICAgKiBpbnRvIHRoZWlyIGNvbnN0aXR1ZW50IHBhcnRzLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjEvY29sb3JzLmh0bWwjcHJvcGRlZi1iYWNrZ3JvdW5kCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgOC43LjAsIHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHN1YnN0aXR1dGlvbiBpbiB2ZXJzaW9uIDkuMCBpbiAjNTExCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleHBhbmRCYWNrZ3JvdW5kU2hvcnRoYW5kKCkKICAgIHsKICAgICAgICAkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKICAgICAgICBpZiAoIWlzc2V0KCRhUnVsZXNbJ2JhY2tncm91bmQnXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkb1J1bGUgPSAkYVJ1bGVzWydiYWNrZ3JvdW5kJ107CiAgICAgICAgJGFCZ1Byb3BlcnRpZXMgPSBbCiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiBbJ3RyYW5zcGFyZW50J10sCiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWltYWdlJyA9PiBbJ25vbmUnXSwKICAgICAgICAgICAgJ2JhY2tncm91bmQtcmVwZWF0JyA9PiBbJ3JlcGVhdCddLAogICAgICAgICAgICAnYmFja2dyb3VuZC1hdHRhY2htZW50JyA9PiBbJ3Njcm9sbCddLAogICAgICAgICAgICAnYmFja2dyb3VuZC1wb3NpdGlvbicgPT4gWwogICAgICAgICAgICAgICAgbmV3IFNpemUoMCwgJyUnLCBmYWxzZSwgJHRoaXMtPmdldExpbmVObygpKSwKICAgICAgICAgICAgICAgIG5ldyBTaXplKDAsICclJywgZmFsc2UsICR0aGlzLT5nZXRMaW5lTm8oKSksCiAgICAgICAgICAgIF0sCiAgICAgICAgXTsKICAgICAgICAkbVJ1bGVWYWx1ZSA9ICRvUnVsZS0+Z2V0VmFsdWUoKTsKICAgICAgICAkYVZhbHVlcyA9IFtdOwogICAgICAgIGlmICghJG1SdWxlVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CiAgICAgICAgICAgICRhVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkYVZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwogICAgICAgIH0KICAgICAgICBpZiAoY291bnQoJGFWYWx1ZXMpID09IDEgJiYgJGFWYWx1ZXNbMF0gPT0gJ2luaGVyaXQnKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhQmdQcm9wZXJ0aWVzIGFzICRzUHJvcGVydHkgPT4gJG1WYWx1ZSkgewogICAgICAgICAgICAgICAgJG9OZXdSdWxlID0gbmV3IFJ1bGUoJHNQcm9wZXJ0eSwgJG9SdWxlLT5nZXRMaW5lTm8oKSwgJG9SdWxlLT5nZXRDb2xObygpKTsKICAgICAgICAgICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJ2luaGVyaXQnKTsKICAgICAgICAgICAgICAgICRvTmV3UnVsZS0+c2V0SXNJbXBvcnRhbnQoJG9SdWxlLT5nZXRJc0ltcG9ydGFudCgpKTsKICAgICAgICAgICAgICAgICR0aGlzLT5hZGRSdWxlKCRvTmV3UnVsZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnJlbW92ZVJ1bGUoJ2JhY2tncm91bmQnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkaU51bUJnUG9zID0gMDsKICAgICAgICBmb3JlYWNoICgkYVZhbHVlcyBhcyAkbVZhbHVlKSB7CiAgICAgICAgICAgIGlmICghJG1WYWx1ZSBpbnN0YW5jZW9mIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAkbVZhbHVlID0gbWJfc3RydG9sb3dlcigkbVZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJG1WYWx1ZSBpbnN0YW5jZW9mIFVSTCkgewogICAgICAgICAgICAgICAgJGFCZ1Byb3BlcnRpZXNbJ2JhY2tncm91bmQtaW1hZ2UnXSA9ICRtVmFsdWU7CiAgICAgICAgICAgIH0gZWxzZWlmICgkbVZhbHVlIGluc3RhbmNlb2YgQ29sb3IpIHsKICAgICAgICAgICAgICAgICRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAkbVZhbHVlOwogICAgICAgICAgICB9IGVsc2VpZiAoaW5fYXJyYXkoJG1WYWx1ZSwgWydzY3JvbGwnLCAnZml4ZWQnXSkpIHsKICAgICAgICAgICAgICAgICRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLWF0dGFjaG1lbnQnXSA9ICRtVmFsdWU7CiAgICAgICAgICAgIH0gZWxzZWlmIChpbl9hcnJheSgkbVZhbHVlLCBbJ3JlcGVhdCcsICduby1yZXBlYXQnLCAncmVwZWF0LXgnLCAncmVwZWF0LXknXSkpIHsKICAgICAgICAgICAgICAgICRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLXJlcGVhdCddID0gJG1WYWx1ZTsKICAgICAgICAgICAgfSBlbHNlaWYgKAogICAgICAgICAgICAgICAgaW5fYXJyYXkoJG1WYWx1ZSwgWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICd0b3AnLCAnYm90dG9tJ10pCiAgICAgICAgICAgICAgICB8fCAkbVZhbHVlIGluc3RhbmNlb2YgU2l6ZQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGlmICgkaU51bUJnUG9zID09IDApIHsKICAgICAgICAgICAgICAgICAgICAkYUJnUHJvcGVydGllc1snYmFja2dyb3VuZC1wb3NpdGlvbiddWzBdID0gJG1WYWx1ZTsKICAgICAgICAgICAgICAgICAgICAkYUJnUHJvcGVydGllc1snYmFja2dyb3VuZC1wb3NpdGlvbiddWzFdID0gJ2NlbnRlcic7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLXBvc2l0aW9uJ11bJGlOdW1CZ1Bvc10gPSAkbVZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGlOdW1CZ1BvcysrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKCRhQmdQcm9wZXJ0aWVzIGFzICRzUHJvcGVydHkgPT4gJG1WYWx1ZSkgewogICAgICAgICAgICAkb05ld1J1bGUgPSBuZXcgUnVsZSgkc1Byb3BlcnR5LCAkb1J1bGUtPmdldExpbmVObygpLCAkb1J1bGUtPmdldENvbE5vKCkpOwogICAgICAgICAgICAkb05ld1J1bGUtPnNldElzSW1wb3J0YW50KCRvUnVsZS0+Z2V0SXNJbXBvcnRhbnQoKSk7CiAgICAgICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJG1WYWx1ZSk7CiAgICAgICAgICAgICR0aGlzLT5hZGRSdWxlKCRvTmV3UnVsZSk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5yZW1vdmVSdWxlKCdiYWNrZ3JvdW5kJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSA4LjcuMCwgd2lsbCBiZSByZW1vdmVkIHdpdGhvdXQgc3Vic3RpdHV0aW9uIGluIHZlcnNpb24gOS4wIGluICM1MTEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZExpc3RTdHlsZVNob3J0aGFuZCgpCiAgICB7CiAgICAgICAgJGFMaXN0UHJvcGVydGllcyA9IFsKICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtdHlwZScgPT4gJ2Rpc2MnLAogICAgICAgICAgICAnbGlzdC1zdHlsZS1wb3NpdGlvbicgPT4gJ291dHNpZGUnLAogICAgICAgICAgICAnbGlzdC1zdHlsZS1pbWFnZScgPT4gJ25vbmUnLAogICAgICAgIF07CiAgICAgICAgJGFMaXN0U3R5bGVUeXBlcyA9IFsKICAgICAgICAgICAgJ25vbmUnLAogICAgICAgICAgICAnZGlzYycsCiAgICAgICAgICAgICdjaXJjbGUnLAogICAgICAgICAgICAnc3F1YXJlJywKICAgICAgICAgICAgJ2RlY2ltYWwtbGVhZGluZy16ZXJvJywKICAgICAgICAgICAgJ2RlY2ltYWwnLAogICAgICAgICAgICAnbG93ZXItcm9tYW4nLAogICAgICAgICAgICAndXBwZXItcm9tYW4nLAogICAgICAgICAgICAnbG93ZXItZ3JlZWsnLAogICAgICAgICAgICAnbG93ZXItYWxwaGEnLAogICAgICAgICAgICAnbG93ZXItbGF0aW4nLAogICAgICAgICAgICAndXBwZXItYWxwaGEnLAogICAgICAgICAgICAndXBwZXItbGF0aW4nLAogICAgICAgICAgICAnaGVicmV3JywKICAgICAgICAgICAgJ2FybWVuaWFuJywKICAgICAgICAgICAgJ2dlb3JnaWFuJywKICAgICAgICAgICAgJ2Nqay1pZGVvZ3JhcGhpYycsCiAgICAgICAgICAgICdoaXJhZ2FuYScsCiAgICAgICAgICAgICdoaXJhLWdhbmEtaXJvaGEnLAogICAgICAgICAgICAna2F0YWthbmEtaXJvaGEnLAogICAgICAgICAgICAna2F0YWthbmEnLAogICAgICAgIF07CiAgICAgICAgJGFMaXN0U3R5bGVQb3NpdGlvbnMgPSBbCiAgICAgICAgICAgICdpbnNpZGUnLAogICAgICAgICAgICAnb3V0c2lkZScsCiAgICAgICAgXTsKICAgICAgICAkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKICAgICAgICBpZiAoIWlzc2V0KCRhUnVsZXNbJ2xpc3Qtc3R5bGUnXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkb1J1bGUgPSAkYVJ1bGVzWydsaXN0LXN0eWxlJ107CiAgICAgICAgJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CiAgICAgICAgJGFWYWx1ZXMgPSBbXTsKICAgICAgICBpZiAoISRtUnVsZVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCkgewogICAgICAgICAgICAkYVZhbHVlc1tdID0gJG1SdWxlVmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGFWYWx1ZXMgPSAkbVJ1bGVWYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGNvdW50KCRhVmFsdWVzKSA9PSAxICYmICRhVmFsdWVzWzBdID09ICdpbmhlcml0JykgewogICAgICAgICAgICBmb3JlYWNoICgkYUxpc3RQcm9wZXJ0aWVzIGFzICRzUHJvcGVydHkgPT4gJG1WYWx1ZSkgewogICAgICAgICAgICAgICAgJG9OZXdSdWxlID0gbmV3IFJ1bGUoJHNQcm9wZXJ0eSwgJG9SdWxlLT5nZXRMaW5lTm8oKSwgJG9SdWxlLT5nZXRDb2xObygpKTsKICAgICAgICAgICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJ2luaGVyaXQnKTsKICAgICAgICAgICAgICAgICRvTmV3UnVsZS0+c2V0SXNJbXBvcnRhbnQoJG9SdWxlLT5nZXRJc0ltcG9ydGFudCgpKTsKICAgICAgICAgICAgICAgICR0aGlzLT5hZGRSdWxlKCRvTmV3UnVsZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnJlbW92ZVJ1bGUoJ2xpc3Qtc3R5bGUnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkYVZhbHVlcyBhcyAkbVZhbHVlKSB7CiAgICAgICAgICAgIGlmICghJG1WYWx1ZSBpbnN0YW5jZW9mIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAkbVZhbHVlID0gbWJfc3RydG9sb3dlcigkbVZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJG1WYWx1ZSBpbnN0YW5jZW9mIFVybCkgewogICAgICAgICAgICAgICAgJGFMaXN0UHJvcGVydGllc1snbGlzdC1zdHlsZS1pbWFnZSddID0gJG1WYWx1ZTsKICAgICAgICAgICAgfSBlbHNlaWYgKGluX2FycmF5KCRtVmFsdWUsICRhTGlzdFN0eWxlVHlwZXMpKSB7CiAgICAgICAgICAgICAgICAkYUxpc3RQcm9wZXJ0aWVzWydsaXN0LXN0eWxlLXR5cGVzJ10gPSAkbVZhbHVlOwogICAgICAgICAgICB9IGVsc2VpZiAoaW5fYXJyYXkoJG1WYWx1ZSwgJGFMaXN0U3R5bGVQb3NpdGlvbnMpKSB7CiAgICAgICAgICAgICAgICAkYUxpc3RQcm9wZXJ0aWVzWydsaXN0LXN0eWxlLXBvc2l0aW9uJ10gPSAkbVZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKCRhTGlzdFByb3BlcnRpZXMgYXMgJHNQcm9wZXJ0eSA9PiAkbVZhbHVlKSB7CiAgICAgICAgICAgICRvTmV3UnVsZSA9IG5ldyBSdWxlKCRzUHJvcGVydHksICRvUnVsZS0+Z2V0TGluZU5vKCksICRvUnVsZS0+Z2V0Q29sTm8oKSk7CiAgICAgICAgICAgICRvTmV3UnVsZS0+c2V0SXNJbXBvcnRhbnQoJG9SdWxlLT5nZXRJc0ltcG9ydGFudCgpKTsKICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkbVZhbHVlKTsKICAgICAgICAgICAgJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnJlbW92ZVJ1bGUoJ2xpc3Qtc3R5bGUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIHN0cmluZz4gJGFQcm9wZXJ0aWVzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzU2hvcnRoYW5kCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgOC43LjAsIHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHN1YnN0aXR1dGlvbiBpbiB2ZXJzaW9uIDkuMCBpbiAjNTExCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTaG9ydGhhbmRQcm9wZXJ0aWVzKGFycmF5ICRhUHJvcGVydGllcywgJHNTaG9ydGhhbmQpCiAgICB7CiAgICAgICAgJGFSdWxlcyA9ICR0aGlzLT5nZXRSdWxlc0Fzc29jKCk7CiAgICAgICAgJG9SdWxlID0gbnVsbDsKICAgICAgICAkYU5ld1ZhbHVlcyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRhUHJvcGVydGllcyBhcyAkc1Byb3BlcnR5KSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJGFSdWxlc1skc1Byb3BlcnR5XSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvUnVsZSA9ICRhUnVsZXNbJHNQcm9wZXJ0eV07CiAgICAgICAgICAgIGlmICghJG9SdWxlLT5nZXRJc0ltcG9ydGFudCgpKSB7CiAgICAgICAgICAgICAgICAkbVJ1bGVWYWx1ZSA9ICRvUnVsZS0+Z2V0VmFsdWUoKTsKICAgICAgICAgICAgICAgICRhVmFsdWVzID0gW107CiAgICAgICAgICAgICAgICBpZiAoISRtUnVsZVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCkgewogICAgICAgICAgICAgICAgICAgICRhVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGFWYWx1ZXMgPSAkbVJ1bGVWYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRhVmFsdWVzIGFzICRtVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAkYU5ld1ZhbHVlc1tdID0gJG1WYWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT5yZW1vdmVSdWxlKCRzUHJvcGVydHkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkYU5ld1ZhbHVlcyAhPT0gW10gJiYgJG9SdWxlIGluc3RhbmNlb2YgUnVsZSkgewogICAgICAgICAgICAkb05ld1J1bGUgPSBuZXcgUnVsZSgkc1Nob3J0aGFuZCwgJG9SdWxlLT5nZXRMaW5lTm8oKSwgJG9SdWxlLT5nZXRDb2xObygpKTsKICAgICAgICAgICAgZm9yZWFjaCAoJGFOZXdWYWx1ZXMgYXMgJG1WYWx1ZSkgewogICAgICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkbVZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+YWRkUnVsZSgkb05ld1J1bGUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguNy4wLCB3aWxsIGJlIHJlbW92ZWQgd2l0aG91dCBzdWJzdGl0dXRpb24gaW4gdmVyc2lvbiA5LjAgaW4gIzUxMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlQmFja2dyb3VuZFNob3J0aGFuZCgpCiAgICB7CiAgICAgICAgJGFQcm9wZXJ0aWVzID0gWwogICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsCiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWltYWdlJywKICAgICAgICAgICAgJ2JhY2tncm91bmQtcmVwZWF0JywKICAgICAgICAgICAgJ2JhY2tncm91bmQtcG9zaXRpb24nLAogICAgICAgICAgICAnYmFja2dyb3VuZC1hdHRhY2htZW50JywKICAgICAgICBdOwogICAgICAgICR0aGlzLT5jcmVhdGVTaG9ydGhhbmRQcm9wZXJ0aWVzKCRhUHJvcGVydGllcywgJ2JhY2tncm91bmQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguNy4wLCB3aWxsIGJlIHJlbW92ZWQgd2l0aG91dCBzdWJzdGl0dXRpb24gaW4gdmVyc2lvbiA5LjAgaW4gIzUxMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlTGlzdFN0eWxlU2hvcnRoYW5kKCkKICAgIHsKICAgICAgICAkYVByb3BlcnRpZXMgPSBbCiAgICAgICAgICAgICdsaXN0LXN0eWxlLXR5cGUnLAogICAgICAgICAgICAnbGlzdC1zdHlsZS1wb3NpdGlvbicsCiAgICAgICAgICAgICdsaXN0LXN0eWxlLWltYWdlJywKICAgICAgICBdOwogICAgICAgICR0aGlzLT5jcmVhdGVTaG9ydGhhbmRQcm9wZXJ0aWVzKCRhUHJvcGVydGllcywgJ2xpc3Qtc3R5bGUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbWJpbmVzIGBib3JkZXItY29sb3JgLCBgYm9yZGVyLXN0eWxlYCBhbmQgYGJvcmRlci13aWR0aGAgaW50byBgYm9yZGVyYC4KICAgICAqCiAgICAgKiBTaG91bGQgYmUgcnVuIGFmdGVyIGBjcmVhdGVfZGltZW5zaW9uc19zaG9ydGhhbmRgIQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguNy4wLCB3aWxsIGJlIHJlbW92ZWQgd2l0aG91dCBzdWJzdGl0dXRpb24gaW4gdmVyc2lvbiA5LjAgaW4gIzUxMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlQm9yZGVyU2hvcnRoYW5kKCkKICAgIHsKICAgICAgICAkYVByb3BlcnRpZXMgPSBbCiAgICAgICAgICAgICdib3JkZXItd2lkdGgnLAogICAgICAgICAgICAnYm9yZGVyLXN0eWxlJywKICAgICAgICAgICAgJ2JvcmRlci1jb2xvcicsCiAgICAgICAgXTsKICAgICAgICAkdGhpcy0+Y3JlYXRlU2hvcnRoYW5kUHJvcGVydGllcygkYVByb3BlcnRpZXMsICdib3JkZXInKTsKICAgIH0KCiAgICAvKioKICAgICAqIExvb2tzIGZvciBsb25nIGZvcm1hdCBDU1MgZGltZW5zaW9uYWwgcHJvcGVydGllcwogICAgICogKG1hcmdpbiwgcGFkZGluZywgYm9yZGVyLWNvbG9yLCBib3JkZXItc3R5bGUgYW5kIGJvcmRlci13aWR0aCkKICAgICAqIGFuZCBjb252ZXJ0cyB0aGVtIGludG8gc2hvcnRoYW5kIENTUyBwcm9wZXJ0aWVzLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguNy4wLCB3aWxsIGJlIHJlbW92ZWQgd2l0aG91dCBzdWJzdGl0dXRpb24gaW4gdmVyc2lvbiA5LjAgaW4gIzUxMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlRGltZW5zaW9uc1Nob3J0aGFuZCgpCiAgICB7CiAgICAgICAgJGFQb3NpdGlvbnMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddOwogICAgICAgICRhRXhwYW5zaW9ucyA9IFsKICAgICAgICAgICAgJ21hcmdpbicgPT4gJ21hcmdpbi0lcycsCiAgICAgICAgICAgICdwYWRkaW5nJyA9PiAncGFkZGluZy0lcycsCiAgICAgICAgICAgICdib3JkZXItY29sb3InID0+ICdib3JkZXItJXMtY29sb3InLAogICAgICAgICAgICAnYm9yZGVyLXN0eWxlJyA9PiAnYm9yZGVyLSVzLXN0eWxlJywKICAgICAgICAgICAgJ2JvcmRlci13aWR0aCcgPT4gJ2JvcmRlci0lcy13aWR0aCcsCiAgICAgICAgXTsKICAgICAgICAkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKICAgICAgICBmb3JlYWNoICgkYUV4cGFuc2lvbnMgYXMgJHNQcm9wZXJ0eSA9PiAkc0V4cGFuZGVkKSB7CiAgICAgICAgICAgICRhRm9sZGFibGUgPSBbXTsKICAgICAgICAgICAgZm9yZWFjaCAoJGFSdWxlcyBhcyAkc1J1bGVOYW1lID0+ICRvUnVsZSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFQb3NpdGlvbnMgYXMgJHNQb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgIGlmICgkc1J1bGVOYW1lID09IHNwcmludGYoJHNFeHBhbmRlZCwgJHNQb3NpdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFGb2xkYWJsZVskc1J1bGVOYW1lXSA9ICRvUnVsZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gQWxsIGZvdXIgZGltZW5zaW9ucyBtdXN0IGJlIHByZXNlbnQKICAgICAgICAgICAgaWYgKGNvdW50KCRhRm9sZGFibGUpID09IDQpIHsKICAgICAgICAgICAgICAgICRhVmFsdWVzID0gW107CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkYVBvc2l0aW9ucyBhcyAkc1Bvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgJG9SdWxlID0gJGFSdWxlc1tzcHJpbnRmKCRzRXhwYW5kZWQsICRzUG9zaXRpb24pXTsKICAgICAgICAgICAgICAgICAgICAkbVJ1bGVWYWx1ZSA9ICRvUnVsZS0+Z2V0VmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAkYVJ1bGVWYWx1ZXMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBpZiAoISRtUnVsZVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAkYVJ1bGVWYWx1ZXNbXSA9ICRtUnVsZVZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhUnVsZVZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkYVZhbHVlc1skc1Bvc2l0aW9uXSA9ICRhUnVsZVZhbHVlczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvTmV3UnVsZSA9IG5ldyBSdWxlKCRzUHJvcGVydHksICRvUnVsZS0+Z2V0TGluZU5vKCksICRvUnVsZS0+Z2V0Q29sTm8oKSk7CiAgICAgICAgICAgICAgICBpZiAoKHN0cmluZykkYVZhbHVlc1snbGVmdCddWzBdID09IChzdHJpbmcpJGFWYWx1ZXNbJ3JpZ2h0J11bMF0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKHN0cmluZykkYVZhbHVlc1sndG9wJ11bMF0gPT0gKHN0cmluZykkYVZhbHVlc1snYm90dG9tJ11bMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzdHJpbmcpJGFWYWx1ZXNbJ3RvcCddWzBdID09IChzdHJpbmcpJGFWYWx1ZXNbJ2xlZnQnXVswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsIDQgc2lkZXMgYXJlIGVxdWFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb05ld1J1bGUtPmFkZFZhbHVlKCRhVmFsdWVzWyd0b3AnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgYW5kIGJvdHRvbSBhcmUgZXF1YWwsIGxlZnQgYW5kIHJpZ2h0IGFyZSBlcXVhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1sndG9wJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1snbGVmdCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgbGVmdCBhbmQgcmlnaHQgYXJlIGVxdWFsCiAgICAgICAgICAgICAgICAgICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJGFWYWx1ZXNbJ3RvcCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1snbGVmdCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1snYm90dG9tJ10pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gTm8gc2lkZXMgYXJlIGVxdWFsCiAgICAgICAgICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1sndG9wJ10pOwogICAgICAgICAgICAgICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJGFWYWx1ZXNbJ2xlZnQnXSk7CiAgICAgICAgICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1snYm90dG9tJ10pOwogICAgICAgICAgICAgICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJGFWYWx1ZXNbJ3JpZ2h0J10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRhUG9zaXRpb25zIGFzICRzUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmVtb3ZlUnVsZShzcHJpbnRmKCRzRXhwYW5kZWQsICRzUG9zaXRpb24pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExvb2tzIGZvciBsb25nIGZvcm1hdCBDU1MgZm9udCBwcm9wZXJ0aWVzIChlLmcuIGBmb250LXdlaWdodGApIGFuZAogICAgICogdHJpZXMgdG8gY29udmVydCB0aGVtIGludG8gYSBzaG9ydGhhbmQgQ1NTIGBmb250YCBwcm9wZXJ0eS4KICAgICAqCiAgICAgKiBBdCBsZWFzdCBgZm9udC1zaXplYCBBTkQgYGZvbnQtZmFtaWx5YCBtdXN0IGJlIHByZXNlbnQgaW4gb3JkZXIgdG8gY3JlYXRlIGEgc2hvcnRoYW5kIGRlY2xhcmF0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDguNy4wLCB3aWxsIGJlIHJlbW92ZWQgd2l0aG91dCBzdWJzdGl0dXRpb24gaW4gdmVyc2lvbiA5LjAgaW4gIzUxMQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlRm9udFNob3J0aGFuZCgpCiAgICB7CiAgICAgICAgJGFGb250UHJvcGVydGllcyA9IFsKICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnLAogICAgICAgICAgICAnZm9udC12YXJpYW50JywKICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0JywKICAgICAgICAgICAgJ2ZvbnQtc2l6ZScsCiAgICAgICAgICAgICdsaW5lLWhlaWdodCcsCiAgICAgICAgICAgICdmb250LWZhbWlseScsCiAgICAgICAgXTsKICAgICAgICAkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKICAgICAgICBpZiAoIWlzc2V0KCRhUnVsZXNbJ2ZvbnQtc2l6ZSddKSB8fCAhaXNzZXQoJGFSdWxlc1snZm9udC1mYW1pbHknXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkb09sZFJ1bGUgPSBpc3NldCgkYVJ1bGVzWydmb250LXNpemUnXSkgPyAkYVJ1bGVzWydmb250LXNpemUnXSA6ICRhUnVsZXNbJ2ZvbnQtZmFtaWx5J107CiAgICAgICAgJG9OZXdSdWxlID0gbmV3IFJ1bGUoJ2ZvbnQnLCAkb09sZFJ1bGUtPmdldExpbmVObygpLCAkb09sZFJ1bGUtPmdldENvbE5vKCkpOwogICAgICAgIHVuc2V0KCRvT2xkUnVsZSk7CiAgICAgICAgZm9yZWFjaCAoWydmb250LXN0eWxlJywgJ2ZvbnQtdmFyaWFudCcsICdmb250LXdlaWdodCddIGFzICRzUHJvcGVydHkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRhUnVsZXNbJHNQcm9wZXJ0eV0pKSB7CiAgICAgICAgICAgICAgICAkb1J1bGUgPSAkYVJ1bGVzWyRzUHJvcGVydHldOwogICAgICAgICAgICAgICAgJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CiAgICAgICAgICAgICAgICAkYVZhbHVlcyA9IFtdOwogICAgICAgICAgICAgICAgaWYgKCEkbVJ1bGVWYWx1ZSBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkYVZhbHVlc1tdID0gJG1SdWxlVmFsdWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRhVmFsdWVzID0gJG1SdWxlVmFsdWUtPmdldExpc3RDb21wb25lbnRzKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJGFWYWx1ZXNbMF0gIT09ICdub3JtYWwnKSB7CiAgICAgICAgICAgICAgICAgICAgJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1swXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gR2V0IHRoZSBmb250LXNpemUgdmFsdWUKICAgICAgICAkb1J1bGUgPSAkYVJ1bGVzWydmb250LXNpemUnXTsKICAgICAgICAkbVJ1bGVWYWx1ZSA9ICRvUnVsZS0+Z2V0VmFsdWUoKTsKICAgICAgICAkYUZTVmFsdWVzID0gW107CiAgICAgICAgaWYgKCEkbVJ1bGVWYWx1ZSBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QpIHsKICAgICAgICAgICAgJGFGU1ZhbHVlc1tdID0gJG1SdWxlVmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGFGU1ZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwogICAgICAgIH0KICAgICAgICAvLyBCdXQgd2FpdCB0byBrbm93IGlmIHdlIGhhdmUgbGluZS1oZWlnaHQgdG8gYWRkIGl0CiAgICAgICAgaWYgKGlzc2V0KCRhUnVsZXNbJ2xpbmUtaGVpZ2h0J10pKSB7CiAgICAgICAgICAgICRvUnVsZSA9ICRhUnVsZXNbJ2xpbmUtaGVpZ2h0J107CiAgICAgICAgICAgICRtUnVsZVZhbHVlID0gJG9SdWxlLT5nZXRWYWx1ZSgpOwogICAgICAgICAgICAkYUxIVmFsdWVzID0gW107CiAgICAgICAgICAgIGlmICghJG1SdWxlVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CiAgICAgICAgICAgICAgICAkYUxIVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRhTEhWYWx1ZXMgPSAkbVJ1bGVWYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGFMSFZhbHVlc1swXSAhPT0gJ25vcm1hbCcpIHsKICAgICAgICAgICAgICAgICR2YWwgPSBuZXcgUnVsZVZhbHVlTGlzdCgnLycsICR0aGlzLT5nZXRMaW5lTm8oKSk7CiAgICAgICAgICAgICAgICAkdmFsLT5hZGRMaXN0Q29tcG9uZW50KCRhRlNWYWx1ZXNbMF0pOwogICAgICAgICAgICAgICAgJHZhbC0+YWRkTGlzdENvbXBvbmVudCgkYUxIVmFsdWVzWzBdKTsKICAgICAgICAgICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkb05ld1J1bGUtPmFkZFZhbHVlKCRhRlNWYWx1ZXNbMF0pOwogICAgICAgIH0KICAgICAgICAkb1J1bGUgPSAkYVJ1bGVzWydmb250LWZhbWlseSddOwogICAgICAgICRtUnVsZVZhbHVlID0gJG9SdWxlLT5nZXRWYWx1ZSgpOwogICAgICAgICRhRkZWYWx1ZXMgPSBbXTsKICAgICAgICBpZiAoISRtUnVsZVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCkgewogICAgICAgICAgICAkYUZGVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkYUZGVmFsdWVzID0gJG1SdWxlVmFsdWUtPmdldExpc3RDb21wb25lbnRzKCk7CiAgICAgICAgfQogICAgICAgICRvRkZWYWx1ZSA9IG5ldyBSdWxlVmFsdWVMaXN0KCcsJywgJHRoaXMtPmdldExpbmVObygpKTsKICAgICAgICAkb0ZGVmFsdWUtPnNldExpc3RDb21wb25lbnRzKCRhRkZWYWx1ZXMpOwogICAgICAgICRvTmV3UnVsZS0+YWRkVmFsdWUoJG9GRlZhbHVlKTsKCiAgICAgICAgJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKICAgICAgICBmb3JlYWNoICgkYUZvbnRQcm9wZXJ0aWVzIGFzICRzUHJvcGVydHkpIHsKICAgICAgICAgICAgJHRoaXMtPnJlbW92ZVJ1bGUoJHNQcm9wZXJ0eSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIE91dHB1dEV4Y2VwdGlvbgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMC4gVXNlIGByZW5kZXJgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgT3V0cHV0Rm9ybWF0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE91dHB1dEZvcm1hdHxudWxsICRvT3V0cHV0Rm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIE91dHB1dEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCRvT3V0cHV0Rm9ybWF0KQogICAgewogICAgICAgICRzUmVzdWx0ID0gJG9PdXRwdXRGb3JtYXQtPmNvbW1lbnRzKCR0aGlzKTsKICAgICAgICBpZiAoY291bnQoJHRoaXMtPmFTZWxlY3RvcnMpID09PSAwKSB7CiAgICAgICAgICAgIC8vIElmIGFsbCB0aGUgc2VsZWN0b3JzIGhhdmUgYmVlbiByZW1vdmVkLCB0aGlzIGRlY2xhcmF0aW9uIGJsb2NrIGJlY29tZXMgaW52YWxpZAogICAgICAgICAgICB0aHJvdyBuZXcgT3V0cHV0RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ0F0dGVtcHQgdG8gcHJpbnQgZGVjbGFyYXRpb24gYmxvY2sgd2l0aCBtaXNzaW5nIHNlbGVjdG9yJywKICAgICAgICAgICAgICAgICR0aGlzLT5nZXRMaW5lTnVtYmVyKCkKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNCZWZvcmVEZWNsYXJhdGlvbkJsb2NrOwogICAgICAgICRzUmVzdWx0IC49ICRvT3V0cHV0Rm9ybWF0LT5pbXBsb2RlKAogICAgICAgICAgICAkb091dHB1dEZvcm1hdC0+c3BhY2VCZWZvcmVTZWxlY3RvclNlcGFyYXRvcigpIC4gJywnIC4gJG9PdXRwdXRGb3JtYXQtPnNwYWNlQWZ0ZXJTZWxlY3RvclNlcGFyYXRvcigpLAogICAgICAgICAgICAkdGhpcy0+YVNlbGVjdG9ycwogICAgICAgICk7CiAgICAgICAgJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNBZnRlckRlY2xhcmF0aW9uQmxvY2tTZWxlY3RvcnM7CiAgICAgICAgJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNwYWNlQmVmb3JlT3BlbmluZ0JyYWNlKCkgLiAneyc7CiAgICAgICAgJHNSZXN1bHQgLj0gJHRoaXMtPnJlbmRlclJ1bGVzKCRvT3V0cHV0Rm9ybWF0KTsKICAgICAgICAkc1Jlc3VsdCAuPSAnfSc7CiAgICAgICAgJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNBZnRlckRlY2xhcmF0aW9uQmxvY2s7CiAgICAgICAgcmV0dXJuICRzUmVzdWx0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/RuleSet/RuleSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudDsKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudGFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xDU1NFbGVtZW50Owp1c2UgU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0Owp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xQYXJzZXJTdGF0ZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZEVPRkV4Y2VwdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUG9zaXRpb25cUG9zaXRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQb3NpdGlvblxQb3NpdGlvbmFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xSZW5kZXJhYmxlOwp1c2UgU2FiYmVyd29ybVxDU1NcUnVsZVxSdWxlOwoKLyoqCiAqIFRoaXMgY2xhc3MgaXMgYSBjb250YWluZXIgZm9yIGluZGl2aWR1YWwgJ1J1bGUncy4KICoKICogVGhlIG1vc3QgY29tbW9uIGZvcm0gb2YgYSBydWxlIHNldCBpcyBvbmUgY29uc3RyYWluZWQgYnkgYSBzZWxlY3RvciwgaS5lLiwgYSBgRGVjbGFyYXRpb25CbG9ja2AuCiAqIEhvd2V2ZXIsIHVua25vd24gYEF0UnVsZWBzIChsaWtlIGBAZm9udC1mYWNlYCkgYXJlIHJ1bGUgc2V0cyBhcyB3ZWxsLgogKgogKiBJZiB5b3Ugd2FudCB0byBtYW5pcHVsYXRlIGEgYFJ1bGVTZXRgLCB1c2UgdGhlIG1ldGhvZHMgYGFkZFJ1bGUoUnVsZSAkcnVsZSlgLCBgZ2V0UnVsZXMoKWAgYW5kIGByZW1vdmVSdWxlKCRydWxlKWAKICogKHdoaWNoIGFjY2VwdHMgZWl0aGVyIGEgYFJ1bGVgIG9yIGEgcnVsZSBuYW1lOyBvcHRpb25hbGx5IHN1ZmZpeGVkIGJ5IGEgZGFzaCB0byByZW1vdmUgYWxsIHJlbGF0ZWQgcnVsZXMpLgogKi8KYWJzdHJhY3QgY2xhc3MgUnVsZVNldCBpbXBsZW1lbnRzIENTU0VsZW1lbnQsIENvbW1lbnRhYmxlLCBQb3NpdGlvbmFibGUKewogICAgdXNlIFBvc2l0aW9uOwoKICAgIC8qKgogICAgICogdGhlIHJ1bGVzIGluIHRoaXMgcnVsZSBzZXQsIHVzaW5nIHRoZSBwcm9wZXJ0eSBuYW1lIGFzIHRoZSBrZXksCiAgICAgKiB3aXRoIHBvdGVudGlhbGx5IG11bHRpcGxlIHJ1bGVzIHBlciBwcm9wZXJ0eSBuYW1lLgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBhcnJheTxpbnQ8MCwgbWF4PiwgUnVsZT4+CiAgICAgKi8KICAgIHByaXZhdGUgJGFSdWxlczsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8YXJyYXkta2V5LCBDb21tZW50PgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMAogICAgICovCiAgICBwcm90ZWN0ZWQgJGFDb21tZW50czsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+YVJ1bGVzID0gW107CiAgICAgICAgJHRoaXMtPnNldFBvc2l0aW9uKCRpTGluZU5vKTsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUnVsZVNldChQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlLCBSdWxlU2V0ICRvUnVsZVNldCkKICAgIHsKICAgICAgICB3aGlsZSAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJzsnKSkgewogICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCc7Jyk7CiAgICAgICAgfQogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICRjb21tZW50c0JlZm9yZVJ1bGUgPSAkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwogICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJ30nKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9SdWxlID0gbnVsbDsKICAgICAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPmdldFNldHRpbmdzKCktPmJMZW5pZW50UGFyc2luZykgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkb1J1bGUgPSBSdWxlOjpwYXJzZSgkb1BhcnNlclN0YXRlLCAkY29tbWVudHNCZWZvcmVSdWxlKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzQ29uc3VtZSA9ICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVVbnRpbChbIlxuIiwgIjsiLCAnfSddLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byDigJx1bmZpbmTigJ0gdGhlIG1hdGNoZXMgdG8gdGhlIGVuZCBvZiB0aGUgcnVsZVNldCBhcyB0aGlzIHdpbGwgYmUgbWF0Y2hlZCBsYXRlcgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+c3RyZXFsKHN1YnN0cigkc0NvbnN1bWUsIC0xKSwgJ30nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+YmFja3RyYWNrKDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCc7JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCc7Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2XigJl2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LiBKdXN0IGNsb3NlIHRoZSBSdWxlU2V0LgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG9SdWxlID0gUnVsZTo6cGFyc2UoJG9QYXJzZXJTdGF0ZSwgJGNvbW1lbnRzQmVmb3JlUnVsZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRvUnVsZSkgewogICAgICAgICAgICAgICAgJG9SdWxlU2V0LT5hZGRSdWxlKCRvUnVsZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnfScpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJ1bGV8bnVsbCAkb1NpYmxpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFJ1bGUoUnVsZSAkb1J1bGUsICRvU2libGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgJHNSdWxlID0gJG9SdWxlLT5nZXRSdWxlKCk7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+YVJ1bGVzWyRzUnVsZV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5hUnVsZXNbJHNSdWxlXSA9IFtdOwogICAgICAgIH0KCiAgICAgICAgJGlQb3NpdGlvbiA9IGNvdW50KCR0aGlzLT5hUnVsZXNbJHNSdWxlXSk7CgogICAgICAgIGlmICgkb1NpYmxpbmcgIT09IG51bGwpIHsKICAgICAgICAgICAgJGlTaWJsaW5nUG9zID0gYXJyYXlfc2VhcmNoKCRvU2libGluZywgJHRoaXMtPmFSdWxlc1skc1J1bGVdLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCRpU2libGluZ1BvcyAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRpUG9zaXRpb24gPSAkaVNpYmxpbmdQb3M7CiAgICAgICAgICAgICAgICAkb1J1bGUtPnNldFBvc2l0aW9uKCRvU2libGluZy0+Z2V0TGluZU5vKCksICRvU2libGluZy0+Z2V0Q29sTm8oKSAtIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkb1J1bGUtPmdldExpbmVOdW1iZXIoKSA9PT0gbnVsbCkgewogICAgICAgICAgICAvL3RoaXMgbm9kZSBpcyBhZGRlZCBtYW51YWxseSwgZ2l2ZSBpdCB0aGUgbmV4dCBiZXN0IGxpbmUKICAgICAgICAgICAgJGNvbHVtbk51bWJlciA9ICRvUnVsZS0+Z2V0Q29sTm8oKTsKICAgICAgICAgICAgJHJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzKCk7CiAgICAgICAgICAgICRwb3MgPSBjb3VudCgkcnVsZXMpOwogICAgICAgICAgICBpZiAoJHBvcyA+IDApIHsKICAgICAgICAgICAgICAgICRsYXN0ID0gJHJ1bGVzWyRwb3MgLSAxXTsKICAgICAgICAgICAgICAgICRvUnVsZS0+c2V0UG9zaXRpb24oJGxhc3QtPmdldExpbmVObygpICsgMSwgJGNvbHVtbk51bWJlcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb1J1bGUtPnNldFBvc2l0aW9uKDEsICRjb2x1bW5OdW1iZXIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRvUnVsZS0+Z2V0Q29sdW1uTnVtYmVyKCkgPT09IG51bGwpIHsKICAgICAgICAgICAgJG9SdWxlLT5zZXRQb3NpdGlvbigkb1J1bGUtPmdldExpbmVOdW1iZXIoKSwgMCk7CiAgICAgICAgfQoKICAgICAgICBhcnJheV9zcGxpY2UoJHRoaXMtPmFSdWxlc1skc1J1bGVdLCAkaVBvc2l0aW9uLCAwLCBbJG9SdWxlXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFsbCBydWxlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcnVsZSBuYW1lCiAgICAgKgogICAgICogQGV4YW1wbGUgJG9SdWxlU2V0LT5nZXRSdWxlcygnZm9udCcpIC8vIHJldHVybnMgYXJyYXkoMCA9PiAkb1J1bGUsIOKApikgb3IgYXJyYXkoKS4KICAgICAqCiAgICAgKiBAZXhhbXBsZSAkb1J1bGVTZXQtPmdldFJ1bGVzKCdmb250LScpCiAgICAgKiAgICAgICAgICAvL3JldHVybnMgYW4gYXJyYXkgb2YgYWxsIHJ1bGVzIGVpdGhlciBiZWdpbm5pbmcgd2l0aCBmb250LSBvciBtYXRjaGluZyBmb250LgogICAgICoKICAgICAqIEBwYXJhbSBSdWxlfHN0cmluZ3xudWxsICRtUnVsZQogICAgICogICAgICAgIFBhdHRlcm4gdG8gc2VhcmNoIGZvci4gSWYgbnVsbCwgcmV0dXJucyBhbGwgcnVsZXMuCiAgICAgKiAgICAgICAgSWYgdGhlIHBhdHRlcm4gZW5kcyB3aXRoIGEgZGFzaCwgYWxsIHJ1bGVzIHN0YXJ0aW5nIHdpdGggdGhlIHBhdHRlcm4gYXJlIHJldHVybmVkCiAgICAgKiAgICAgICAgYXMgd2VsbCBhcyBvbmUgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gd2l0aCB0aGUgZGFzaCBleGNsdWRlZC4KICAgICAqICAgICAgICBQYXNzaW5nIGEgYFJ1bGVgIGZvciB0aGlzIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGluIHZlcnNpb24gOC45LjAsIGFuZCB3aWxsIG5vdCB3b3JrIGZyb20gdjkuMC4KICAgICAqICAgICAgICBDYWxsIGBnZXRSdWxlcygkcnVsZS0+Z2V0UnVsZSgpKWAgaW5zdGVhZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgUnVsZT4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJ1bGVzKCRtUnVsZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRtUnVsZSBpbnN0YW5jZW9mIFJ1bGUpIHsKICAgICAgICAgICAgJG1SdWxlID0gJG1SdWxlLT5nZXRSdWxlKCk7CiAgICAgICAgfQogICAgICAgIC8qKiBAdmFyIGFycmF5PGludCwgUnVsZT4gJGFSZXN1bHQgKi8KICAgICAgICAkYVJlc3VsdCA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5hUnVsZXMgYXMgJHNOYW1lID0+ICRhUnVsZXMpIHsKICAgICAgICAgICAgLy8gRWl0aGVyIG5vIHNlYXJjaCBydWxlIGlzIGdpdmVuIG9yIHRoZSBzZWFyY2ggcnVsZSBtYXRjaGVzIHRoZSBmb3VuZCBydWxlIGV4YWN0bHkKICAgICAgICAgICAgLy8gb3IgdGhlIHNlYXJjaCBydWxlIGVuZHMgaW4g4oCcLeKAnSBhbmQgdGhlIGZvdW5kIHJ1bGUgc3RhcnRzIHdpdGggdGhlIHNlYXJjaCBydWxlLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJG1SdWxlIHx8ICRzTmFtZSA9PT0gJG1SdWxlCiAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgc3RycnBvcygkbVJ1bGUsICctJykgPT09IHN0cmxlbigkbVJ1bGUpIC0gc3RybGVuKCctJykKICAgICAgICAgICAgICAgICAgICAmJiAoc3RycG9zKCRzTmFtZSwgJG1SdWxlKSA9PT0gMCB8fCAkc05hbWUgPT09IHN1YnN0cigkbVJ1bGUsIDAsIC0xKSkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkYVJlc3VsdCA9IGFycmF5X21lcmdlKCRhUmVzdWx0LCAkYVJ1bGVzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB1c29ydCgkYVJlc3VsdCwgZnVuY3Rpb24gKFJ1bGUgJGZpcnN0LCBSdWxlICRzZWNvbmQpIHsKICAgICAgICAgICAgaWYgKCRmaXJzdC0+Z2V0TGluZU5vKCkgPT09ICRzZWNvbmQtPmdldExpbmVObygpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZpcnN0LT5nZXRDb2xObygpIC0gJHNlY29uZC0+Z2V0Q29sTm8oKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJGZpcnN0LT5nZXRMaW5lTm8oKSAtICRzZWNvbmQtPmdldExpbmVObygpOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiAkYVJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIE92ZXJyaWRlcyBhbGwgdGhlIHJ1bGVzIG9mIHRoaXMgc2V0LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheS1rZXksIFJ1bGU+ICRhUnVsZXMgVGhlIHJ1bGVzIHRvIG92ZXJyaWRlIHdpdGguCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRSdWxlcyhhcnJheSAkYVJ1bGVzKQogICAgewogICAgICAgICR0aGlzLT5hUnVsZXMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkYVJ1bGVzIGFzICRydWxlKSB7CiAgICAgICAgICAgICR0aGlzLT5hZGRSdWxlKCRydWxlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFsbCBydWxlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0dGVybiBhbmQgcmV0dXJucyB0aGVtIGluIGFuIGFzc29jaWF0aXZlIGFycmF5IHdpdGggdGhlIHJ1bGXigJlzIG5hbWUKICAgICAqIGFzIGtleXMuIFRoaXMgbWV0aG9kIGV4aXN0cyBtYWlubHkgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGFuZCBpcyByZWFsbHkgb25seSBwYXJ0aWFsbHkgdXNlZnVsLgogICAgICoKICAgICAqIE5vdGU6IFRoaXMgbWV0aG9kIGxvc2VzIHNvbWUgaW5mb3JtYXRpb246IENhbGxpbmcgdGhpcyAod2l0aCBhbiBhcmd1bWVudCBvZiBgYmFja2dyb3VuZC1gKSBvbiBhIGRlY2xhcmF0aW9uIGJsb2NrCiAgICAgKiBsaWtlIGB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyBiYWNrZ3JvdW5kLWNvbG9yOyByZ2JhKDAsIDEyNywgMCwgMC43KTsgfWAgd2lsbCBvbmx5IHlpZWxkIGFuIGFzc29jaWF0aXZlIGFycmF5CiAgICAgKiBjb250YWluaW5nIHRoZSByZ2JhLXZhbHVlZCBydWxlIHdoaWxlIGBnZXRSdWxlcygpYCB3b3VsZCB5aWVsZCBhbiBpbmRleGVkIGFycmF5IGNvbnRhaW5pbmcgYm90aC4KICAgICAqCiAgICAgKiBAcGFyYW0gUnVsZXxzdHJpbmd8bnVsbCAkbVJ1bGUgJG1SdWxlCiAgICAgKiAgICAgICAgUGF0dGVybiB0byBzZWFyY2ggZm9yLiBJZiBudWxsLCByZXR1cm5zIGFsbCBydWxlcy4gSWYgdGhlIHBhdHRlcm4gZW5kcyB3aXRoIGEgZGFzaCwKICAgICAqICAgICAgICBhbGwgcnVsZXMgc3RhcnRpbmcgd2l0aCB0aGUgcGF0dGVybiBhcmUgcmV0dXJuZWQgYXMgd2VsbCBhcyBvbmUgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gd2l0aCB0aGUgZGFzaAogICAgICogICAgICAgIGV4Y2x1ZGVkLgogICAgICogICAgICAgIFBhc3NpbmcgYSBgUnVsZWAgZm9yIHRoaXMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiA4LjkuMCwgYW5kIHdpbGwgbm90IHdvcmsgZnJvbSB2OS4wLgogICAgICogICAgICAgIENhbGwgYGdldFJ1bGVzQXNzb2MoJHJ1bGUtPmdldFJ1bGUoKSlgIGluc3RlYWQuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIFJ1bGU+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSdWxlc0Fzc29jKCRtUnVsZSA9IG51bGwpCiAgICB7CiAgICAgICAgLyoqIEB2YXIgYXJyYXk8c3RyaW5nLCBSdWxlPiAkYVJlc3VsdCAqLwogICAgICAgICRhUmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmdldFJ1bGVzKCRtUnVsZSkgYXMgJG9SdWxlKSB7CiAgICAgICAgICAgICRhUmVzdWx0WyRvUnVsZS0+Z2V0UnVsZSgpXSA9ICRvUnVsZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRhUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlcyBhIGBSdWxlYCBmcm9tIHRoaXMgYFJ1bGVTZXRgIGJ5IGlkZW50aXR5LgogICAgICoKICAgICAqIEBwYXJhbSBSdWxlfHN0cmluZ3xudWxsICRtUnVsZQogICAgICogICAgICAgIGBSdWxlYCB0byByZW1vdmUuCiAgICAgKiAgICAgICAgUGFzc2luZyBhIGBzdHJpbmdgIG9yIGBudWxsYCBpcyBkZXByZWNhdGVkIGluIHZlcnNpb24gOC45LjAsIGFuZCB3aWxsIG5vIGxvbmdlciB3b3JrIGZyb20gdjkuMC4KICAgICAqICAgICAgICBVc2UgYHJlbW92ZU1hdGNoaW5nUnVsZXMoKWAgb3IgYHJlbW92ZUFsbFJ1bGVzKClgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVSdWxlKCRtUnVsZSkKICAgIHsKICAgICAgICBpZiAoJG1SdWxlIGluc3RhbmNlb2YgUnVsZSkgewogICAgICAgICAgICAkc1J1bGUgPSAkbVJ1bGUtPmdldFJ1bGUoKTsKICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+YVJ1bGVzWyRzUnVsZV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFSdWxlc1skc1J1bGVdIGFzICRpS2V5ID0+ICRvUnVsZSkgewogICAgICAgICAgICAgICAgaWYgKCRvUnVsZSA9PT0gJG1SdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmFSdWxlc1skc1J1bGVdWyRpS2V5XSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoJG1SdWxlICE9PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5yZW1vdmVNYXRjaGluZ1J1bGVzKCRtUnVsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnJlbW92ZUFsbFJ1bGVzKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlcyBydWxlcyBieSBwcm9wZXJ0eSBuYW1lIG9yIHNlYXJjaCBwYXR0ZXJuLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNlYXJjaFBhdHRlcm4KICAgICAqICAgICAgICBwYXR0ZXJuIHRvIHJlbW92ZS4KICAgICAqICAgICAgICBJZiB0aGUgcGF0dGVybiBlbmRzIGluIGEgZGFzaCwKICAgICAqICAgICAgICBhbGwgcnVsZXMgc3RhcnRpbmcgd2l0aCB0aGUgcGF0dGVybiBhcmUgcmVtb3ZlZCBhcyB3ZWxsIGFzIG9uZSBtYXRjaGluZyB0aGUgcGF0dGVybiB3aXRoIHRoZSBkYXNoCiAgICAgKiAgICAgICAgZXhjbHVkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVNYXRjaGluZ1J1bGVzKCRzZWFyY2hQYXR0ZXJuKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5hUnVsZXMgYXMgJHByb3BlcnR5TmFtZSA9PiAkcnVsZXMpIHsKICAgICAgICAgICAgLy8gRWl0aGVyIHRoZSBzZWFyY2ggcnVsZSBtYXRjaGVzIHRoZSBmb3VuZCBydWxlIGV4YWN0bHkKICAgICAgICAgICAgLy8gb3IgdGhlIHNlYXJjaCBydWxlIGVuZHMgaW4g4oCcLeKAnSBhbmQgdGhlIGZvdW5kIHJ1bGUgc3RhcnRzIHdpdGggdGhlIHNlYXJjaCBydWxlIG9yIGVxdWFscyBpdAogICAgICAgICAgICAvLyAod2l0aG91dCB0aGUgdHJhaWxpbmcgZGFzaCkuCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRwcm9wZXJ0eU5hbWUgPT09ICRzZWFyY2hQYXR0ZXJuCiAgICAgICAgICAgICAgICB8fCAoXHN0cnJwb3MoJHNlYXJjaFBhdHRlcm4sICctJykgPT09IFxzdHJsZW4oJHNlYXJjaFBhdHRlcm4pIC0gXHN0cmxlbignLScpCiAgICAgICAgICAgICAgICAgICAgJiYgKFxzdHJwb3MoJHByb3BlcnR5TmFtZSwgJHNlYXJjaFBhdHRlcm4pID09PSAwCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRwcm9wZXJ0eU5hbWUgPT09IFxzdWJzdHIoJHNlYXJjaFBhdHRlcm4sIDAsIC0xKSkpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmFSdWxlc1skcHJvcGVydHlOYW1lXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUFsbFJ1bGVzKCkKICAgIHsKICAgICAgICAkdGhpcy0+YVJ1bGVzID0gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMC4gVXNlIGByZW5kZXJgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgT3V0cHV0Rm9ybWF0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlbmRlclJ1bGVzKE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkKICAgIHsKICAgICAgICAkc1Jlc3VsdCA9ICcnOwogICAgICAgICRiSXNGaXJzdCA9IHRydWU7CiAgICAgICAgJG9OZXh0TGV2ZWwgPSAkb091dHB1dEZvcm1hdC0+bmV4dExldmVsKCk7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmdldFJ1bGVzKCkgYXMgJG9SdWxlKSB7CiAgICAgICAgICAgICRzUmVuZGVyZWQgPSAkb05leHRMZXZlbC0+c2FmZWx5KGZ1bmN0aW9uICgpIHVzZSAoJG9SdWxlLCAkb05leHRMZXZlbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRvUnVsZS0+cmVuZGVyKCRvTmV4dExldmVsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICgkc1JlbmRlcmVkID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGJJc0ZpcnN0KSB7CiAgICAgICAgICAgICAgICAkYklzRmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgICRzUmVzdWx0IC49ICRvTmV4dExldmVsLT5zcGFjZUJlZm9yZVJ1bGVzKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc1Jlc3VsdCAuPSAkb05leHRMZXZlbC0+c3BhY2VCZXR3ZWVuUnVsZXMoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc1Jlc3VsdCAuPSAkc1JlbmRlcmVkOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkYklzRmlyc3QpIHsKICAgICAgICAgICAgLy8gSGFkIHNvbWUgb3V0cHV0CiAgICAgICAgICAgICRzUmVzdWx0IC49ICRvT3V0cHV0Rm9ybWF0LT5zcGFjZUFmdGVyUnVsZXMoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb091dHB1dEZvcm1hdC0+cmVtb3ZlTGFzdFNlbWljb2xvbigkc1Jlc3VsdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBDb21tZW50PiAkYUNvbW1lbnRzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKQogICAgewogICAgICAgICR0aGlzLT5hQ29tbWVudHMgPSBhcnJheV9tZXJnZSgkdGhpcy0+YUNvbW1lbnRzLCAkYUNvbW1lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBDb21tZW50PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29tbWVudHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YUNvbW1lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgQ29tbWVudD4gJGFDb21tZW50cwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Q29tbWVudHMoYXJyYXkgJGFDb21tZW50cykKICAgIHsKICAgICAgICAkdGhpcy0+YUNvbW1lbnRzID0gJGFDb21tZW50czsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCi8qKgogKiBQYXJzZXIgc2V0dGluZ3MgY2xhc3MuCiAqCiAqIENvbmZpZ3VyZSBwYXJzZXIgYmVoYXZpb3VyIGhlcmUuCiAqLwpjbGFzcyBTZXR0aW5ncwp7CiAgICAvKioKICAgICAqIE11bHRpLWJ5dGUgc3RyaW5nIHN1cHBvcnQuCiAgICAgKgogICAgICogSWYgYHRydWVgIChgbWJzdHJpbmdgIGV4dGVuc2lvbiBtdXN0IGJlIGVuYWJsZWQpLCB3aWxsIHVzZSAoc2xvd2VyKSBgbWJfc3RybGVuYCwgYG1iX2NvbnZlcnRfY2FzZWAsIGBtYl9zdWJzdHJgCiAgICAgKiBhbmQgYG1iX3N0cnBvc2AgZnVuY3Rpb25zLiBPdGhlcndpc2UsIHRoZSBub3JtYWwgKEFTQ0lJLU9ubHkpIGZ1bmN0aW9ucyB3aWxsIGJlIHVzZWQuCiAgICAgKgogICAgICogQHZhciBib29sCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wLCB3aWxsIGJlIG1hZGUgcHJpdmF0ZSBpbiA5LjAuMAogICAgICovCiAgICBwdWJsaWMgJGJNdWx0aWJ5dGVTdXBwb3J0OwoKICAgIC8qKgogICAgICogVGhlIGRlZmF1bHQgY2hhcnNldCBmb3IgdGhlIENTUyBpZiBubyBgQGNoYXJzZXRgIGRlY2xhcmF0aW9uIGlzIGZvdW5kLiBEZWZhdWx0cyB0byB1dGYtOC4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRzRGVmYXVsdENoYXJzZXQgPSAndXRmLTgnOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgcGFyc2VyIHNpbGVudGx5IGlnbm9yZSBpbnZhbGlkIHJ1bGVzIGluc3RlYWQgb2YgY2hva2luZyBvbiB0aGVtLgogICAgICoKICAgICAqIEB2YXIgYm9vbAogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMCwgd2lsbCBiZSBtYWRlIHByaXZhdGUgaW4gOS4wLjAKICAgICAqLwogICAgcHVibGljICRiTGVuaWVudFBhcnNpbmcgPSB0cnVlOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgICR0aGlzLT5iTXVsdGlieXRlU3VwcG9ydCA9IGV4dGVuc2lvbl9sb2FkZWQoJ21ic3RyaW5nJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHNlbGYgbmV3IGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNldHRpbmdzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIG11bHRpLWJ5dGUgc3RyaW5nIHN1cHBvcnQuCiAgICAgKgogICAgICogSWYgYHRydWVgIChgbWJzdHJpbmdgIGV4dGVuc2lvbiBtdXN0IGJlIGVuYWJsZWQpLCB3aWxsIHVzZSAoc2xvd2VyKSBgbWJfc3RybGVuYCwgYG1iX2NvbnZlcnRfY2FzZWAsIGBtYl9zdWJzdHJgCiAgICAgKiBhbmQgYG1iX3N0cnBvc2AgZnVuY3Rpb25zLiBPdGhlcndpc2UsIHRoZSBub3JtYWwgKEFTQ0lJLU9ubHkpIGZ1bmN0aW9ucyB3aWxsIGJlIHVzZWQuCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJGJNdWx0aWJ5dGVTdXBwb3J0CiAgICAgKgogICAgICogQHJldHVybiBzZWxmIGZsdWVudCBpbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhNdWx0aWJ5dGVTdXBwb3J0KCRiTXVsdGlieXRlU3VwcG9ydCA9IHRydWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmJNdWx0aWJ5dGVTdXBwb3J0ID0gJGJNdWx0aWJ5dGVTdXBwb3J0OwogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFNldHMgdGhlIGNoYXJzZXQgdG8gYmUgdXNlZCBpZiB0aGUgQ1NTIGRvZXMgbm90IGNvbnRhaW4gYW4gYEBjaGFyc2V0YCBkZWNsYXJhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzRGVmYXVsdENoYXJzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHNlbGYgZmx1ZW50IGludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aERlZmF1bHRDaGFyc2V0KCRzRGVmYXVsdENoYXJzZXQpCiAgICB7CiAgICAgICAgJHRoaXMtPnNEZWZhdWx0Q2hhcnNldCA9ICRzRGVmYXVsdENoYXJzZXQ7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQ29uZmlndXJlcyB3aGV0aGVyIHRoZSBwYXJzZXIgc2hvdWxkIHNpbGVudGx5IGlnbm9yZSBpbnZhbGlkIHJ1bGVzLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICRiTGVuaWVudFBhcnNpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIHNlbGYgZmx1ZW50IGludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aExlbmllbnRQYXJzaW5nKCRiTGVuaWVudFBhcnNpbmcgPSB0cnVlKQogICAgewogICAgICAgICR0aGlzLT5iTGVuaWVudFBhcnNpbmcgPSAkYkxlbmllbnRQYXJzaW5nOwogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIENvbmZpZ3VyZXMgdGhlIHBhcnNlciB0byBjaG9rZSBvbiBpbnZhbGlkIHJ1bGVzLgogICAgICoKICAgICAqIEByZXR1cm4gc2VsZiBmbHVlbnQgaW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiZVN0cmljdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT53aXRoTGVuaWVudFBhcnNpbmcoZmFsc2UpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/CalcFunction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkRU9GRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CgovKioKICogU3VwcG9ydCBmb3IgYC13ZWJraXQtY2FsY2AgYW5kIGAtbW96LWNhbGNgIGlzIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiA4LjguMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDkuMC4wLgogKi8KY2xhc3MgQ2FsY0Z1bmN0aW9uIGV4dGVuZHMgQ1NTRnVuY3Rpb24KewogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX09QRVJBTkQgPSAxOwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9PUEVSQVRPUiA9IDI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZQogICAgICogQHBhcmFtIGJvb2wgJGJJZ25vcmVDYXNlCiAgICAgKgogICAgICogQHJldHVybiBDYWxjRnVuY3Rpb24KICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUsICRiSWdub3JlQ2FzZSA9IGZhbHNlKQogICAgewogICAgICAgICRhT3BlcmF0b3JzID0gWycrJywgJy0nLCAnKicsICcvJ107CiAgICAgICAgJHNGdW5jdGlvbiA9ICRvUGFyc2VyU3RhdGUtPnBhcnNlSWRlbnRpZmllcigpOwogICAgICAgIGlmICgkb1BhcnNlclN0YXRlLT5wZWVrKCkgIT0gJygnKSB7CiAgICAgICAgICAgIC8vIEZvdW5kIDsgb3IgZW5kIG9mIGxpbmUgYmVmb3JlIGFuIG9wZW5pbmcgYnJhY2tldAogICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKCcoJywgJG9QYXJzZXJTdGF0ZS0+cGVlaygpLCAnbGl0ZXJhbCcsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgICAgIH0gZWxzZWlmICghaW5fYXJyYXkoJHNGdW5jdGlvbiwgWydjYWxjJywgJy1tb3otY2FsYycsICctd2Via2l0LWNhbGMnXSkpIHsKICAgICAgICAgICAgLy8gRm91bmQgaW52YWxpZCBjYWxjIGRlZmluaXRpb24uIEV4YW1wbGUgY2FsYyAoLi4uCiAgICAgICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oJ2NhbGMnLCAkc0Z1bmN0aW9uLCAnbGl0ZXJhbCcsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgICAgIH0KICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCcoJyk7CiAgICAgICAgJG9DYWxjTGlzdCA9IG5ldyBDYWxjUnVsZVZhbHVlTGlzdCgkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKICAgICAgICAkb0xpc3QgPSBuZXcgUnVsZVZhbHVlTGlzdCgnLCcsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgICAgICRpTmVzdGluZ0xldmVsID0gMDsKICAgICAgICAkaUxhc3RDb21wb25lbnRUeXBlID0gbnVsbDsKICAgICAgICB3aGlsZSAoISRvUGFyc2VyU3RhdGUtPmNvbWVzKCcpJykgfHwgJGlOZXN0aW5nTGV2ZWwgPiAwKSB7CiAgICAgICAgICAgIGlmICgkb1BhcnNlclN0YXRlLT5pc0VuZCgpICYmICRpTmVzdGluZ0xldmVsID09PSAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCcoJykpIHsKICAgICAgICAgICAgICAgICRpTmVzdGluZ0xldmVsKys7CiAgICAgICAgICAgICAgICAkb0NhbGNMaXN0LT5hZGRMaXN0Q29tcG9uZW50KCRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoMSkpOwogICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9IGVsc2VpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJyknKSkgewogICAgICAgICAgICAgICAgJGlOZXN0aW5nTGV2ZWwtLTsKICAgICAgICAgICAgICAgICRvQ2FsY0xpc3QtPmFkZExpc3RDb21wb25lbnQoJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgxKSk7CiAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRpTGFzdENvbXBvbmVudFR5cGUgIT0gQ2FsY0Z1bmN0aW9uOjpUX09QRVJBTkQpIHsKICAgICAgICAgICAgICAgICRvVmFsID0gVmFsdWU6OnBhcnNlUHJpbWl0aXZlVmFsdWUoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgICAgICAgICAkb0NhbGNMaXN0LT5hZGRMaXN0Q29tcG9uZW50KCRvVmFsKTsKICAgICAgICAgICAgICAgICRpTGFzdENvbXBvbmVudFR5cGUgPSBDYWxjRnVuY3Rpb246OlRfT1BFUkFORDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkb1BhcnNlclN0YXRlLT5wZWVrKCksICRhT3BlcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0nKSB8fCAkb1BhcnNlclN0YXRlLT5jb21lcygnKycpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5wZWVrKDEsIC0xKSAhPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICEoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0gJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkb1BhcnNlclN0YXRlLT5jb21lcygnKyAnKSkKICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgeyRvUGFyc2VyU3RhdGUtPnBlZWsoKX0gIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5wZWVrKDEsIC0xKSAuICRvUGFyc2VyU3RhdGUtPnBlZWsoMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpdGVyYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJG9DYWxjTGlzdC0+YWRkTGlzdENvbXBvbmVudCgkb1BhcnNlclN0YXRlLT5jb25zdW1lKDEpKTsKICAgICAgICAgICAgICAgICAgICAkaUxhc3RDb21wb25lbnRUeXBlID0gQ2FsY0Z1bmN0aW9uOjpUX09QRVJBVE9SOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05leHQgdG9rZW4gd2FzIGV4cGVjdGVkIHRvIGJlIGFuIG9wZXJhbmQgb2YgdHlwZSAlcy4gSW5zdGVhZCAiJXMiIHdhcyBmb3VuZC4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbG9kZSgnLCAnLCAkYU9wZXJhdG9ycyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5wZWVrKCkKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICdjdXN0b20nLAogICAgICAgICAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwogICAgICAgIH0KICAgICAgICAkb0xpc3QtPmFkZExpc3RDb21wb25lbnQoJG9DYWxjTGlzdCk7CiAgICAgICAgaWYgKCEkb1BhcnNlclN0YXRlLT5pc0VuZCgpKSB7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJyknKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBDYWxjRnVuY3Rpb24oJHNGdW5jdGlvbiwgJG9MaXN0LCAnLCcsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/CalcRuleValueList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CgpjbGFzcyBDYWxjUnVsZVZhbHVlTGlzdCBleHRlbmRzIFJ1bGVWYWx1ZUxpc3QKewogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaUxpbmVObyA9IDApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgnLCcsICRpTGluZU5vKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBPdXRwdXRGb3JtYXR8bnVsbCAkb091dHB1dEZvcm1hdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoJG9PdXRwdXRGb3JtYXQpCiAgICB7CiAgICAgICAgcmV0dXJuICRvT3V0cHV0Rm9ybWF0LT5pbXBsb2RlKCcgJywgJHRoaXMtPmFDb21wb25lbnRzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/Color.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkRU9GRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CgovKioKICogYENvbG9yJ3MgY2FuIGJlIGlucHV0IGluIHRoZSBmb3JtICNycmdnYmIsICNyZ2Igb3Igc2NoZW1hKHZhbDEsIHZhbDIsIOKApikgYnV0IGFyZSBhbHdheXMgc3RvcmVkIGFzIGFuIGFycmF5IG9mCiAqICgncycgPT4gdmFsMSwgJ2MnID0+IHZhbDIsICdoJyA9PiB2YWwzLCDigKYpIGFuZCBvdXRwdXQgaW4gdGhlIHNlY29uZCBmb3JtLgogKi8KY2xhc3MgQ29sb3IgZXh0ZW5kcyBDU1NGdW5jdGlvbgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFJ1bGVWYWx1ZUxpc3R8Q1NTRnVuY3Rpb258Q1NTU3RyaW5nfExpbmVOYW1lfFNpemV8VVJMfHN0cmluZz4gJGFDb2xvcgogICAgICogQHBhcmFtIGludCAkaUxpbmVObwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGFDb2xvciwgJGlMaW5lTm8gPSAwKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoaW1wbG9kZSgnJywgYXJyYXlfa2V5cygkYUNvbG9yKSksICRhQ29sb3IsICcsJywgJGlMaW5lTm8pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUKICAgICAqIEBwYXJhbSBib29sICRiSWdub3JlQ2FzZQogICAgICoKICAgICAqIEByZXR1cm4gQ29sb3J8Q1NTRnVuY3Rpb24KICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUsICRiSWdub3JlQ2FzZSA9IGZhbHNlKQogICAgewogICAgICAgICRhQ29sb3IgPSBbXTsKICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJyMnKSkgewogICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCcjJyk7CiAgICAgICAgICAgICRzVmFsdWUgPSAkb1BhcnNlclN0YXRlLT5wYXJzZUlkZW50aWZpZXIoZmFsc2UpOwogICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+c3RybGVuKCRzVmFsdWUpID09PSAzKSB7CiAgICAgICAgICAgICAgICAkc1ZhbHVlID0gJHNWYWx1ZVswXSAuICRzVmFsdWVbMF0gLiAkc1ZhbHVlWzFdIC4gJHNWYWx1ZVsxXSAuICRzVmFsdWVbMl0gLiAkc1ZhbHVlWzJdOwogICAgICAgICAgICB9IGVsc2VpZiAoJG9QYXJzZXJTdGF0ZS0+c3RybGVuKCRzVmFsdWUpID09PSA0KSB7CiAgICAgICAgICAgICAgICAkc1ZhbHVlID0gJHNWYWx1ZVswXSAuICRzVmFsdWVbMF0gLiAkc1ZhbHVlWzFdIC4gJHNWYWx1ZVsxXSAuICRzVmFsdWVbMl0gLiAkc1ZhbHVlWzJdIC4gJHNWYWx1ZVszXQogICAgICAgICAgICAgICAgICAgIC4gJHNWYWx1ZVszXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPnN0cmxlbigkc1ZhbHVlKSA9PT0gOCkgewogICAgICAgICAgICAgICAgJGFDb2xvciA9IFsKICAgICAgICAgICAgICAgICAgICAncicgPT4gbmV3IFNpemUoaW50dmFsKCRzVmFsdWVbMF0gLiAkc1ZhbHVlWzFdLCAxNiksIG51bGwsIHRydWUsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpLAogICAgICAgICAgICAgICAgICAgICdnJyA9PiBuZXcgU2l6ZShpbnR2YWwoJHNWYWx1ZVsyXSAuICRzVmFsdWVbM10sIDE2KSwgbnVsbCwgdHJ1ZSwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSksCiAgICAgICAgICAgICAgICAgICAgJ2InID0+IG5ldyBTaXplKGludHZhbCgkc1ZhbHVlWzRdIC4gJHNWYWx1ZVs1XSwgMTYpLCBudWxsLCB0cnVlLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKSwKICAgICAgICAgICAgICAgICAgICAnYScgPT4gbmV3IFNpemUoCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kKHNlbGY6Om1hcFJhbmdlKGludHZhbCgkc1ZhbHVlWzZdIC4gJHNWYWx1ZVs3XSwgMTYpLCAwLCAyNTUsIDAsIDEpLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKQogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9IGVsc2VpZiAoJG9QYXJzZXJTdGF0ZS0+c3RybGVuKCRzVmFsdWUpID09PSA2KSB7CiAgICAgICAgICAgICAgICAkYUNvbG9yID0gWwogICAgICAgICAgICAgICAgICAgICdyJyA9PiBuZXcgU2l6ZShpbnR2YWwoJHNWYWx1ZVswXSAuICRzVmFsdWVbMV0sIDE2KSwgbnVsbCwgdHJ1ZSwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSksCiAgICAgICAgICAgICAgICAgICAgJ2cnID0+IG5ldyBTaXplKGludHZhbCgkc1ZhbHVlWzJdIC4gJHNWYWx1ZVszXSwgMTYpLCBudWxsLCB0cnVlLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKSwKICAgICAgICAgICAgICAgICAgICAnYicgPT4gbmV3IFNpemUoaW50dmFsKCRzVmFsdWVbNF0gLiAkc1ZhbHVlWzVdLCAxNiksIG51bGwsIHRydWUsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpLAogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgaGV4IGNvbG9yIHZhbHVlJywKICAgICAgICAgICAgICAgICAgICAkc1ZhbHVlLAogICAgICAgICAgICAgICAgICAgICdjdXN0b20nLAogICAgICAgICAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc0NvbG9yTW9kZSA9ICRvUGFyc2VyU3RhdGUtPnBhcnNlSWRlbnRpZmllcih0cnVlKTsKICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnKCcpOwoKICAgICAgICAgICAgJGJDb250YWluc1ZhciA9IGZhbHNlOwogICAgICAgICAgICAkaUxlbmd0aCA9ICRvUGFyc2VyU3RhdGUtPnN0cmxlbigkc0NvbG9yTW9kZSk7CiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRpTGVuZ3RoOyArKyRpKSB7CiAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwogICAgICAgICAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCd2YXInKSkgewogICAgICAgICAgICAgICAgICAgICRhQ29sb3JbJHNDb2xvck1vZGVbJGldXSA9IENTU0Z1bmN0aW9uOjpwYXJzZUlkZW50aWZpZXJPckZ1bmN0aW9uKCRvUGFyc2VyU3RhdGUpOwogICAgICAgICAgICAgICAgICAgICRiQ29udGFpbnNWYXIgPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkYUNvbG9yWyRzQ29sb3JNb2RlWyRpXV0gPSBTaXplOjpwYXJzZSgkb1BhcnNlclN0YXRlLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJGJDb250YWluc1ZhciAmJiAkb1BhcnNlclN0YXRlLT5jb21lcygnKScpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gV2l0aCBhIHZhciBhcmd1bWVudCB0aGUgZnVuY3Rpb24gY2FuIGhhdmUgZmV3ZXIgYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICAgICAgICAgIGlmICgkaSA8ICgkaUxlbmd0aCAtIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnLCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJyknKTsKCiAgICAgICAgICAgIGlmICgkYkNvbnRhaW5zVmFyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU0Z1bmN0aW9uKCRzQ29sb3JNb2RlLCBhcnJheV92YWx1ZXMoJGFDb2xvciksICcsJywgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBDb2xvcigkYUNvbG9yLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBmbG9hdCAkZlZhbAogICAgICogQHBhcmFtIGZsb2F0ICRmRnJvbU1pbgogICAgICogQHBhcmFtIGZsb2F0ICRmRnJvbU1heAogICAgICogQHBhcmFtIGZsb2F0ICRmVG9NaW4KICAgICAqIEBwYXJhbSBmbG9hdCAkZlRvTWF4CiAgICAgKgogICAgICogQHJldHVybiBmbG9hdAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBtYXBSYW5nZSgkZlZhbCwgJGZGcm9tTWluLCAkZkZyb21NYXgsICRmVG9NaW4sICRmVG9NYXgpCiAgICB7CiAgICAgICAgJGZGcm9tUmFuZ2UgPSAkZkZyb21NYXggLSAkZkZyb21NaW47CiAgICAgICAgJGZUb1JhbmdlID0gJGZUb01heCAtICRmVG9NaW47CiAgICAgICAgJGZNdWx0aXBsaWVyID0gJGZUb1JhbmdlIC8gJGZGcm9tUmFuZ2U7CiAgICAgICAgJGZOZXdWYWwgPSAkZlZhbCAtICRmRnJvbU1pbjsKICAgICAgICAkZk5ld1ZhbCAqPSAkZk11bHRpcGxpZXI7CiAgICAgICAgcmV0dXJuICRmTmV3VmFsICsgJGZUb01pbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LCBSdWxlVmFsdWVMaXN0fENTU0Z1bmN0aW9ufENTU1N0cmluZ3xMaW5lTmFtZXxTaXplfFVSTHxzdHJpbmc+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb2xvcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hQ29tcG9uZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFJ1bGVWYWx1ZUxpc3R8Q1NTRnVuY3Rpb258Q1NTU3RyaW5nfExpbmVOYW1lfFNpemV8VVJMfHN0cmluZz4gJGFDb2xvcgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Q29sb3IoYXJyYXkgJGFDb2xvcikKICAgIHsKICAgICAgICAkdGhpcy0+c2V0TmFtZShpbXBsb2RlKCcnLCBhcnJheV9rZXlzKCRhQ29sb3IpKSk7CiAgICAgICAgJHRoaXMtPmFDb21wb25lbnRzID0gJGFDb2xvcjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb2xvckRlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldE5hbWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgaW4gVjguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gVjkuMC4wLiBVc2UgYHJlbmRlcmAgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBPdXRwdXRGb3JtYXQoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gT3V0cHV0Rm9ybWF0fG51bGwgJG9PdXRwdXRGb3JtYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCRvT3V0cHV0Rm9ybWF0KQogICAgewogICAgICAgIC8vIFNob3J0aGFuZCBSR0IgY29sb3IgdmFsdWVzCiAgICAgICAgaWYgKCRvT3V0cHV0Rm9ybWF0LT5nZXRSR0JIYXNoTm90YXRpb24oKSAmJiBpbXBsb2RlKCcnLCBhcnJheV9rZXlzKCR0aGlzLT5hQ29tcG9uZW50cykpID09PSAncmdiJykgewogICAgICAgICAgICAkc1Jlc3VsdCA9IHNwcmludGYoCiAgICAgICAgICAgICAgICAnJTAyeCUwMnglMDJ4JywKICAgICAgICAgICAgICAgICR0aGlzLT5hQ29tcG9uZW50c1snciddLT5nZXRTaXplKCksCiAgICAgICAgICAgICAgICAkdGhpcy0+YUNvbXBvbmVudHNbJ2cnXS0+Z2V0U2l6ZSgpLAogICAgICAgICAgICAgICAgJHRoaXMtPmFDb21wb25lbnRzWydiJ10tPmdldFNpemUoKQogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJyMnIC4gKCgkc1Jlc3VsdFswXSA9PSAkc1Jlc3VsdFsxXSkgJiYgKCRzUmVzdWx0WzJdID09ICRzUmVzdWx0WzNdKSAmJiAoJHNSZXN1bHRbNF0gPT0gJHNSZXN1bHRbNV0pCiAgICAgICAgICAgICAgICAgICAgPyAiJHNSZXN1bHRbMF0kc1Jlc3VsdFsyXSRzUmVzdWx0WzRdIiA6ICRzUmVzdWx0KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBhcmVudDo6cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/CSSFunction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xTb3VyY2VFeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbjsKCi8qKgogKiBBIGBDU1NGdW5jdGlvbmAgcmVwcmVzZW50cyBhIHNwZWNpYWwga2luZCBvZiB2YWx1ZSB0aGF0IGFsc28gY29udGFpbnMgYSBmdW5jdGlvbiBuYW1lIGFuZCB3aGVyZSB0aGUgdmFsdWVzIGFyZSB0aGUKICogZnVuY3Rpb27igJlzIGFyZ3VtZW50cy4gSXQgYWxzbyBoYW5kbGVzIGVxdWFscy1zaWduLXNlcGFyYXRlZCBhcmd1bWVudCBsaXN0cyBsaWtlIGBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9OTApO2AuCiAqLwpjbGFzcyBDU1NGdW5jdGlvbiBleHRlbmRzIFZhbHVlTGlzdAp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wCiAgICAgKi8KICAgIHByb3RlY3RlZCAkc05hbWU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzTmFtZQogICAgICogQHBhcmFtIFJ1bGVWYWx1ZUxpc3R8YXJyYXk8aW50LCBSdWxlVmFsdWVMaXN0fENTU0Z1bmN0aW9ufENTU1N0cmluZ3xMaW5lTmFtZXxTaXplfFVSTHxzdHJpbmc+ICRhQXJndW1lbnRzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzU2VwYXJhdG9yCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc05hbWUsICRhQXJndW1lbnRzLCAkc1NlcGFyYXRvciA9ICcsJywgJGlMaW5lTm8gPSAwKQogICAgewogICAgICAgIGlmICgkYUFyZ3VtZW50cyBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QpIHsKICAgICAgICAgICAgJHNTZXBhcmF0b3IgPSAkYUFyZ3VtZW50cy0+Z2V0TGlzdFNlcGFyYXRvcigpOwogICAgICAgICAgICAkYUFyZ3VtZW50cyA9ICRhQXJndW1lbnRzLT5nZXRMaXN0Q29tcG9uZW50cygpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+c05hbWUgPSAkc05hbWU7CiAgICAgICAgJHRoaXMtPnNldFBvc2l0aW9uKCRpTGluZU5vKTsgLy8gVE9ETzogcmVkdW5kYW50PwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGFBcmd1bWVudHMsICRzU2VwYXJhdG9yLCAkaUxpbmVObyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZQogICAgICogQHBhcmFtIGJvb2wgJGJJZ25vcmVDYXNlCiAgICAgKgogICAgICogQHJldHVybiBDU1NGdW5jdGlvbgogICAgICoKICAgICAqIEB0aHJvd3MgU291cmNlRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUsICRiSWdub3JlQ2FzZSA9IGZhbHNlKQogICAgewogICAgICAgICRtUmVzdWx0ID0gJG9QYXJzZXJTdGF0ZS0+cGFyc2VJZGVudGlmaWVyKCRiSWdub3JlQ2FzZSk7CiAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnKCcpOwogICAgICAgICRhQXJndW1lbnRzID0gVmFsdWU6OnBhcnNlVmFsdWUoJG9QYXJzZXJTdGF0ZSwgWyc9JywgJyAnLCAnLCddKTsKICAgICAgICAkbVJlc3VsdCA9IG5ldyBDU1NGdW5jdGlvbigkbVJlc3VsdCwgJGFBcmd1bWVudHMsICcsJywgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CiAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnKScpOwogICAgICAgIHJldHVybiAkbVJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNOYW1lOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc05hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldE5hbWUoJHNOYW1lKQogICAgewogICAgICAgICR0aGlzLT5zTmFtZSA9ICRzTmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8aW50LCBSdWxlVmFsdWVMaXN0fENTU0Z1bmN0aW9ufENTU1N0cmluZ3xMaW5lTmFtZXxTaXplfFVSTHxzdHJpbmc+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcmd1bWVudHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YUNvbXBvbmVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMC4gVXNlIGByZW5kZXJgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgT3V0cHV0Rm9ybWF0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE91dHB1dEZvcm1hdHxudWxsICRvT3V0cHV0Rm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigkb091dHB1dEZvcm1hdCkKICAgIHsKICAgICAgICAkYUFyZ3VtZW50cyA9IHBhcmVudDo6cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KTsKICAgICAgICByZXR1cm4gInskdGhpcy0+c05hbWV9KHskYUFyZ3VtZW50c30pIjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/CSSString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xTb3VyY2VFeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbjsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIGEgd3JhcHBlciBmb3IgcXVvdGVkIHN0cmluZ3MgdG8gZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIGtleXdvcmRzLgogKgogKiBgQ1NTU3RyaW5nYHMgYWx3YXlzIG91dHB1dCB3aXRoIGRvdWJsZSBxdW90ZXMuCiAqLwpjbGFzcyBDU1NTdHJpbmcgZXh0ZW5kcyBQcmltaXRpdmVWYWx1ZQp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNTdHJpbmc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzU3RyaW5nCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc1N0cmluZywgJGlMaW5lTm8gPSAwKQogICAgewogICAgICAgICR0aGlzLT5zU3RyaW5nID0gJHNTdHJpbmc7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIENTU1N0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgU291cmNlRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUpCiAgICB7CiAgICAgICAgJHNCZWdpbiA9ICRvUGFyc2VyU3RhdGUtPnBlZWsoKTsKICAgICAgICAkc1F1b3RlID0gbnVsbDsKICAgICAgICBpZiAoJHNCZWdpbiA9PT0gIiciKSB7CiAgICAgICAgICAgICRzUXVvdGUgPSAiJyI7CiAgICAgICAgfSBlbHNlaWYgKCRzQmVnaW4gPT09ICciJykgewogICAgICAgICAgICAkc1F1b3RlID0gJyInOwogICAgICAgIH0KICAgICAgICBpZiAoJHNRdW90ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCRzUXVvdGUpOwogICAgICAgIH0KICAgICAgICAkc1Jlc3VsdCA9ICIiOwogICAgICAgICRzQ29udGVudCA9IG51bGw7CiAgICAgICAgaWYgKCRzUXVvdGUgPT09IG51bGwpIHsKICAgICAgICAgICAgLy8gVW5xdW90ZWQgc3RyaW5ncyBlbmQgaW4gd2hpdGVzcGFjZSBvciB3aXRoIGJyYWNlcywgYnJhY2tldHMsIHBhcmVudGhlc2VzCiAgICAgICAgICAgIHdoaWxlICghcHJlZ19tYXRjaCgnL1tcXHN7fSgpPD5cXFtcXF1dL2lzdScsICRvUGFyc2VyU3RhdGUtPnBlZWsoKSkpIHsKICAgICAgICAgICAgICAgICRzUmVzdWx0IC49ICRvUGFyc2VyU3RhdGUtPnBhcnNlQ2hhcmFjdGVyKGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdoaWxlICghJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJHNRdW90ZSkpIHsKICAgICAgICAgICAgICAgICRzQ29udGVudCA9ICRvUGFyc2VyU3RhdGUtPnBhcnNlQ2hhcmFjdGVyKGZhbHNlKTsKICAgICAgICAgICAgICAgIGlmICgkc0NvbnRlbnQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU291cmNlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAiTm9uLXdlbGwtZm9ybWVkIHF1b3RlZCBzdHJpbmcgeyRvUGFyc2VyU3RhdGUtPnBlZWsoMyl9IiwKICAgICAgICAgICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc1Jlc3VsdCAuPSAkc0NvbnRlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgkc1F1b3RlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBDU1NTdHJpbmcoJHNSZXN1bHQsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1N0cmluZwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U3RyaW5nKCRzU3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT5zU3RyaW5nID0gJHNTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMC4gVXNlIGByZW5kZXJgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgT3V0cHV0Rm9ybWF0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE91dHB1dEZvcm1hdHxudWxsICRvT3V0cHV0Rm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigkb091dHB1dEZvcm1hdCkKICAgIHsKICAgICAgICAkc1N0cmluZyA9IGFkZHNsYXNoZXMoJHRoaXMtPnNTdHJpbmcpOwogICAgICAgICRzU3RyaW5nID0gc3RyX3JlcGxhY2UoIlxuIiwgJ1xBJywgJHNTdHJpbmcpOwogICAgICAgIHJldHVybiAkb091dHB1dEZvcm1hdC0+Z2V0U3RyaW5nUXVvdGluZ1R5cGUoKSAuICRzU3RyaW5nIC4gJG9PdXRwdXRGb3JtYXQtPmdldFN0cmluZ1F1b3RpbmdUeXBlKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/LineName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkRU9GRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CgpjbGFzcyBMaW5lTmFtZSBleHRlbmRzIFZhbHVlTGlzdAp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFJ1bGVWYWx1ZUxpc3R8Q1NTRnVuY3Rpb258Q1NTU3RyaW5nfExpbmVOYW1lfFNpemV8VVJMfHN0cmluZz4gJGFDb21wb25lbnRzCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkYUNvbXBvbmVudHMgPSBbXSwgJGlMaW5lTm8gPSAwKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGFDb21wb25lbnRzLCAnICcsICRpTGluZU5vKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gTGluZU5hbWUKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUpCiAgICB7CiAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnWycpOwogICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgJGFOYW1lcyA9IFtdOwogICAgICAgIGRvIHsKICAgICAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPmdldFNldHRpbmdzKCktPmJMZW5pZW50UGFyc2luZykgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkYU5hbWVzW10gPSAkb1BhcnNlclN0YXRlLT5wYXJzZUlkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgIGlmICghJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJ10nKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkYU5hbWVzW10gPSAkb1BhcnNlclN0YXRlLT5wYXJzZUlkZW50aWZpZXIoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwogICAgICAgIH0gd2hpbGUgKCEkb1BhcnNlclN0YXRlLT5jb21lcygnXScpKTsKICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCddJyk7CiAgICAgICAgcmV0dXJuIG5ldyBMaW5lTmFtZSgkYU5hbWVzLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgaW4gVjguOC4wLCB3aWxsIGJlIHJlbW92ZWQgaW4gVjkuMC4wLiBVc2UgYHJlbmRlcmAgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBPdXRwdXRGb3JtYXQoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gT3V0cHV0Rm9ybWF0fG51bGwgJG9PdXRwdXRGb3JtYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCRvT3V0cHV0Rm9ybWF0KQogICAgewogICAgICAgIHJldHVybiAnWycgLiBwYXJlbnQ6OnJlbmRlcihPdXRwdXRGb3JtYXQ6OmNyZWF0ZUNvbXBhY3QoKSkgLiAnXSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/PrimitiveValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCmFic3RyYWN0IGNsYXNzIFByaW1pdGl2ZVZhbHVlIGV4dGVuZHMgVmFsdWUKewogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaUxpbmVObyA9IDApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/RuleValueList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGFsbCBtdWx0aXZhbHVlZCBydWxlcyBsaWtlIGBmb250OiBib2xkIDEycHgvMyBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNhbnMtc2VyaWY7YAogKiAod2hlcmUgdGhlIHZhbHVlIHdvdWxkIGJlIGEgd2hpdGVzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcHJpbWl0aXZlIHZhbHVlIGBib2xkYCwgYSBzbGFzaC1zZXBhcmF0ZWQgbGlzdAogKiBhbmQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCkuCiAqLwpjbGFzcyBSdWxlVmFsdWVMaXN0IGV4dGVuZHMgVmFsdWVMaXN0CnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc1NlcGFyYXRvcgogICAgICogQHBhcmFtIGludCAkaUxpbmVObwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNTZXBhcmF0b3IgPSAnLCcsICRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KFtdLCAkc1NlcGFyYXRvciwgJGlMaW5lTm8pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/Size.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkRU9GRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CgovKioKICogQSBgU2l6ZWAgY29uc2lzdHMgb2YgYSBudW1lcmljIGBzaXplYCB2YWx1ZSBhbmQgYSB1bml0LgogKi8KY2xhc3MgU2l6ZSBleHRlbmRzIFByaW1pdGl2ZVZhbHVlCnsKICAgIC8qKgogICAgICogdmgvdncvdm0oYXgpL3ZtaW4vcmVtIGFyZSBhYnNvbHV0ZSBpbnNvZmFyIGFzIHRoZXkgZG9u4oCZdCBzY2FsZSB0byB0aGUgaW1tZWRpYXRlIHBhcmVudCAob25seSB0aGUgdmlld3BvcnQpCiAgICAgKgogICAgICogQHZhciBhcnJheTxpbnQsIHN0cmluZz4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgQUJTT0xVVEVfU0laRV9VTklUUyA9IFsKICAgICAgICAncHgnLAogICAgICAgICdwdCcsCiAgICAgICAgJ3BjJywKICAgICAgICAnY20nLAogICAgICAgICdtbScsCiAgICAgICAgJ21vem1tJywKICAgICAgICAnaW4nLAogICAgICAgICd2aCcsCiAgICAgICAgJ2R2aCcsCiAgICAgICAgJ3N2aCcsCiAgICAgICAgJ2x2aCcsCiAgICAgICAgJ3Z3JywKICAgICAgICAndm1pbicsCiAgICAgICAgJ3ZtYXgnLAogICAgICAgICdyZW0nLAogICAgXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8aW50LCBzdHJpbmc+CiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFJFTEFUSVZFX1NJWkVfVU5JVFMgPSBbJyUnLCAnZW0nLCAnZXgnLCAnY2gnLCAnZnInXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8aW50LCBzdHJpbmc+CiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IE5PTl9TSVpFX1VOSVRTID0gWydkZWcnLCAnZ3JhZCcsICdyYWQnLCAncycsICdtcycsICd0dXJuJywgJ0h6JywgJ2tIeiddOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxpbnQsIGFycmF5PHN0cmluZywgc3RyaW5nPj58bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkU0laRV9VTklUUyA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIGZsb2F0CiAgICAgKi8KICAgIHByaXZhdGUgJGZTaXplOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlICRzVW5pdDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRiSXNDb2xvckNvbXBvbmVudDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBmbG9hdHxpbnR8c3RyaW5nICRmU2l6ZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRzVW5pdAogICAgICogQHBhcmFtIGJvb2wgJGJJc0NvbG9yQ29tcG9uZW50CiAgICAgKiBAcGFyYW0gaW50ICRpTGluZU5vCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZlNpemUsICRzVW5pdCA9IG51bGwsICRiSXNDb2xvckNvbXBvbmVudCA9IGZhbHNlLCAkaUxpbmVObyA9IDApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CiAgICAgICAgJHRoaXMtPmZTaXplID0gKGZsb2F0KSRmU2l6ZTsKICAgICAgICAkdGhpcy0+c1VuaXQgPSAkc1VuaXQ7CiAgICAgICAgJHRoaXMtPmJJc0NvbG9yQ29tcG9uZW50ID0gJGJJc0NvbG9yQ29tcG9uZW50OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJGJJc0NvbG9yQ29tcG9uZW50CiAgICAgKgogICAgICogQHJldHVybiBTaXplCiAgICAgKgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSBWOC44LjAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlLCAkYklzQ29sb3JDb21wb25lbnQgPSBmYWxzZSkKICAgIHsKICAgICAgICAkc1NpemUgPSAnJzsKICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0nKSkgewogICAgICAgICAgICAkc1NpemUgLj0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnLScpOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoaXNfbnVtZXJpYygkb1BhcnNlclN0YXRlLT5wZWVrKCkpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCcuJykgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJ2UnLCB0cnVlKSkgewogICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy4nKSkgewogICAgICAgICAgICAgICAgJHNTaXplIC49ICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJy4nKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCdlJywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICRzTG9va2FoZWFkID0gJG9QYXJzZXJTdGF0ZS0+cGVlaygxLCAxKTsKICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKCRzTG9va2FoZWFkKSB8fCAkc0xvb2thaGVhZCA9PT0gJysnIHx8ICRzTG9va2FoZWFkID09PSAnLScpIHsKICAgICAgICAgICAgICAgICAgICAkc1NpemUgLj0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgyKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFJlYWNoZWQgdGhlIHVuaXQgcGFydCBvZiB0aGUgbnVtYmVyIGxpa2UgImVtIiBvciAiZXgiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc1NpemUgLj0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHNVbml0ID0gbnVsbDsKICAgICAgICAkYVNpemVVbml0cyA9IHNlbGY6OmdldFNpemVVbml0cygpOwogICAgICAgIGZvcmVhY2ggKCRhU2l6ZVVuaXRzIGFzICRpTGVuZ3RoID0+ICYkYVZhbHVlcykgewogICAgICAgICAgICAkc0tleSA9IHN0cnRvbG93ZXIoJG9QYXJzZXJTdGF0ZS0+cGVlaygkaUxlbmd0aCkpOwogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkc0tleSwgJGFWYWx1ZXMpKSB7CiAgICAgICAgICAgICAgICBpZiAoKCRzVW5pdCA9ICRhVmFsdWVzWyRzS2V5XSkgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCRpTGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gbmV3IFNpemUoKGZsb2F0KSRzU2l6ZSwgJHNVbml0LCAkYklzQ29sb3JDb21wb25lbnQsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxpbnQsIGFycmF5PHN0cmluZywgc3RyaW5nPj4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0U2l6ZVVuaXRzKCkKICAgIHsKICAgICAgICBpZiAoIWlzX2FycmF5KHNlbGY6OiRTSVpFX1VOSVRTKSkgewogICAgICAgICAgICBzZWxmOjokU0laRV9VTklUUyA9IFtdOwogICAgICAgICAgICBmb3JlYWNoIChhcnJheV9tZXJnZShzZWxmOjpBQlNPTFVURV9TSVpFX1VOSVRTLCBzZWxmOjpSRUxBVElWRV9TSVpFX1VOSVRTLCBzZWxmOjpOT05fU0laRV9VTklUUykgYXMgJHZhbCkgewogICAgICAgICAgICAgICAgJGlTaXplID0gc3RybGVuKCR2YWwpOwogICAgICAgICAgICAgICAgaWYgKCFpc3NldChzZWxmOjokU0laRV9VTklUU1skaVNpemVdKSkgewogICAgICAgICAgICAgICAgICAgIHNlbGY6OiRTSVpFX1VOSVRTWyRpU2l6ZV0gPSBbXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNlbGY6OiRTSVpFX1VOSVRTWyRpU2l6ZV1bc3RydG9sb3dlcigkdmFsKV0gPSAkdmFsOwogICAgICAgICAgICB9CgogICAgICAgICAgICBrcnNvcnQoc2VsZjo6JFNJWkVfVU5JVFMsIFNPUlRfTlVNRVJJQyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JFNJWkVfVU5JVFM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzVW5pdAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VW5pdCgkc1VuaXQpCiAgICB7CiAgICAgICAgJHRoaXMtPnNVbml0ID0gJHNVbml0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VW5pdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zVW5pdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBmbG9hdHxpbnR8c3RyaW5nICRmU2l6ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2l6ZSgkZlNpemUpCiAgICB7CiAgICAgICAgJHRoaXMtPmZTaXplID0gKGZsb2F0KSRmU2l6ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gZmxvYXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZlNpemU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzQ29sb3JDb21wb25lbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YklzQ29sb3JDb21wb25lbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBzdG9yZWQgaW4gdGhpcyBTaXplIHJlYWxseSByZXByZXNlbnRzIGEgc2l6ZSAoYXMgaW4gYSBsZW5ndGggb2Ygc29tZXRoaW5nIG9uIHNjcmVlbikuCiAgICAgKgogICAgICogQHJldHVybiBmYWxzZSBpZiB0aGUgdW5pdCBhbiBhbmdsZSwgYSBkdXJhdGlvbiwgYSBmcmVxdWVuY3kgb3IgdGhlIG51bWJlciBpcyBhIGNvbXBvbmVudCBpbiBhIENvbG9yIG9iamVjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzU2l6ZSgpCiAgICB7CiAgICAgICAgaWYgKGluX2FycmF5KCR0aGlzLT5zVW5pdCwgc2VsZjo6Tk9OX1NJWkVfVU5JVFMsIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICEkdGhpcy0+aXNDb2xvckNvbXBvbmVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlbGF0aXZlKCkKICAgIHsKICAgICAgICBpZiAoaW5fYXJyYXkoJHRoaXMtPnNVbml0LCBzZWxmOjpSRUxBVElWRV9TSVpFX1VOSVRTLCB0cnVlKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5zVW5pdCA9PT0gbnVsbCAmJiAkdGhpcy0+ZlNpemUgIT0gMCkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBpbiBWOC44LjAsIHdpbGwgYmUgcmVtb3ZlZCBpbiBWOS4wLjAuIFVzZSBgcmVuZGVyYCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IE91dHB1dEZvcm1hdCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBPdXRwdXRGb3JtYXR8bnVsbCAkb091dHB1dEZvcm1hdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoJG9PdXRwdXRGb3JtYXQpCiAgICB7CiAgICAgICAgJGwgPSBsb2NhbGVjb252KCk7CiAgICAgICAgJHNQb2ludCA9IHByZWdfcXVvdGUoJGxbJ2RlY2ltYWxfcG9pbnQnXSwgJy8nKTsKICAgICAgICAkc1NpemUgPSBwcmVnX21hdGNoKCIvW1xkXC5dK2VbKy1dP1xkKy9pIiwgKHN0cmluZykkdGhpcy0+ZlNpemUpCiAgICAgICAgICAgID8gcHJlZ19yZXBsYWNlKCIvJHNQb2ludD8wKyQvIiwgIiIsIHNwcmludGYoIiVmIiwgJHRoaXMtPmZTaXplKSkgOiAoc3RyaW5nKSR0aGlzLT5mU2l6ZTsKICAgICAgICByZXR1cm4gcHJlZ19yZXBsYWNlKFsiLyRzUG9pbnQvIiwgIi9eKC0/KTBcLi8iXSwgWycuJywgJyQxLiddLCAkc1NpemUpCiAgICAgICAgICAgIC4gKCR0aGlzLT5zVW5pdCA9PT0gbnVsbCA/ICcnIDogJHRoaXMtPnNVbml0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/URL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xTb3VyY2VFeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbjsKCi8qKgogKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgVVJMcyBpbiBDU1MuIGBVUkxgcyBhbHdheXMgb3V0cHV0IGluIGBVUkwoIiIpYCBub3RhdGlvbi4KICovCmNsYXNzIFVSTCBleHRlbmRzIFByaW1pdGl2ZVZhbHVlCnsKICAgIC8qKgogICAgICogQHZhciBDU1NTdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkb1VSTDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENTU1N0cmluZyAkb1VSTCwgJGlMaW5lTm8gPSAwKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGlMaW5lTm8pOwogICAgICAgICR0aGlzLT5vVVJMID0gJG9VUkw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFVSTAogICAgICoKICAgICAqIEB0aHJvd3MgU291cmNlRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUpCiAgICB7CiAgICAgICAgJG9BbmNob3IgPSAkb1BhcnNlclN0YXRlLT5hbmNob3IoKTsKICAgICAgICAkc0lkZW50aWZpZXIgPSAnJzsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAzOyAkaSsrKSB7CiAgICAgICAgICAgICRzQ2hhciA9ICRvUGFyc2VyU3RhdGUtPnBhcnNlQ2hhcmFjdGVyKHRydWUpOwogICAgICAgICAgICBpZiAoJHNDaGFyID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc0lkZW50aWZpZXIgLj0gJHNDaGFyOwogICAgICAgIH0KICAgICAgICAkYlVzZVVybCA9ICRvUGFyc2VyU3RhdGUtPnN0cmVxbCgkc0lkZW50aWZpZXIsICd1cmwnKTsKICAgICAgICBpZiAoJGJVc2VVcmwpIHsKICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnKCcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRvQW5jaG9yLT5iYWNrdHJhY2soKTsKICAgICAgICB9CiAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICAkb1Jlc3VsdCA9IG5ldyBVUkwoQ1NTU3RyaW5nOjpwYXJzZSgkb1BhcnNlclN0YXRlKSwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CiAgICAgICAgaWYgKCRiVXNlVXJsKSB7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJyknKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvUmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRVUkwoQ1NTU3RyaW5nICRvVVJMKQogICAgewogICAgICAgICR0aGlzLT5vVVJMID0gJG9VUkw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIENTU1N0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VVJMKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9VUkw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMC4gVXNlIGByZW5kZXJgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgT3V0cHV0Rm9ybWF0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE91dHB1dEZvcm1hdHxudWxsICRvT3V0cHV0Rm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigkb091dHB1dEZvcm1hdCkKICAgIHsKICAgICAgICByZXR1cm4gInVybCh7JHRoaXMtPm9VUkwtPnJlbmRlcigkb091dHB1dEZvcm1hdCl9KSI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/Value.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDU1NFbGVtZW50Owp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xQYXJzZXJTdGF0ZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcU291cmNlRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkRU9GRXhjZXB0aW9uOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQb3NpdGlvblxQb3NpdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFBvc2l0aW9uXFBvc2l0aW9uYWJsZTsKCi8qKgogKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBzcGVjaWZpYyBjbGFzc2VzIG9mIENTUyB2YWx1ZXM6IGBTaXplYCwgYENvbG9yYCwgYENTU1N0cmluZ2AgYW5kIGBVUkxgLCBhbmQgYW5vdGhlcgogKiBhYnN0cmFjdCBzdWJjbGFzcyBgVmFsdWVMaXN0YC4KICovCmFic3RyYWN0IGNsYXNzIFZhbHVlIGltcGxlbWVudHMgQ1NTRWxlbWVudCwgUG9zaXRpb25hYmxlCnsKICAgIHVzZSBQb3NpdGlvbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpTGluZU5vID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0UG9zaXRpb24oJGlMaW5lTm8pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PGFycmF5LWtleSwgc3RyaW5nPiAkYUxpc3REZWxpbWl0ZXJzCiAgICAgKgogICAgICogQHJldHVybiBSdWxlVmFsdWVMaXN0fENTU0Z1bmN0aW9ufENTU1N0cmluZ3xMaW5lTmFtZXxTaXplfFVSTHxzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIFY4LjguMAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlVmFsdWUoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSwgYXJyYXkgJGFMaXN0RGVsaW1pdGVycyA9IFtdKQogICAgewogICAgICAgIC8qKiBAdmFyIGFycmF5PGludCwgUnVsZVZhbHVlTGlzdHxDU1NGdW5jdGlvbnxDU1NTdHJpbmd8TGluZU5hbWV8U2l6ZXxVUkx8c3RyaW5nPiAkYVN0YWNrICovCiAgICAgICAgJGFTdGFjayA9IFtdOwogICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgLy9CdWlsZCBhIGxpc3Qgb2YgZGVsaW1pdGVycyBhbmQgcGFyc2VkIHZhbHVlcwogICAgICAgIHdoaWxlICgKICAgICAgICAgICAgISgkb1BhcnNlclN0YXRlLT5jb21lcygnfScpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCc7JykgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJyEnKQogICAgICAgICAgICAgICAgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJyknKQogICAgICAgICAgICAgICAgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJ1xcJykKICAgICAgICAgICAgICAgIHx8ICRvUGFyc2VyU3RhdGUtPmlzRW5kKCkpCiAgICAgICAgKSB7CiAgICAgICAgICAgIGlmIChjb3VudCgkYVN0YWNrKSA+IDApIHsKICAgICAgICAgICAgICAgICRiRm91bmREZWxpbWl0ZXIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRhTGlzdERlbGltaXRlcnMgYXMgJHNEZWxpbWl0ZXIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJHNEZWxpbWl0ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGFTdGFjaywgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgkc0RlbGltaXRlcikpOwogICAgICAgICAgICAgICAgICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAkYkZvdW5kRGVsaW1pdGVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCEkYkZvdW5kRGVsaW1pdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgLy9XaGl0ZXNwYWNlIHdhcyB0aGUgbGlzdCBkZWxpbWl0ZXIKICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhU3RhY2ssICcgJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXJyYXlfcHVzaCgkYVN0YWNrLCBzZWxmOjpwYXJzZVByaW1pdGl2ZVZhbHVlKCRvUGFyc2VyU3RhdGUpKTsKICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICB9CiAgICAgICAgLy8gQ29udmVydCB0aGUgbGlzdCB0byBsaXN0IG9iamVjdHMKICAgICAgICBmb3JlYWNoICgkYUxpc3REZWxpbWl0ZXJzIGFzICRzRGVsaW1pdGVyKSB7CiAgICAgICAgICAgICRpU3RhY2tMZW5ndGggPSBjb3VudCgkYVN0YWNrKTsKICAgICAgICAgICAgaWYgKCRpU3RhY2tMZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYVN0YWNrWzBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRhTmV3U3RhY2sgPSBbXTsKICAgICAgICAgICAgZm9yICgkaVN0YXJ0UG9zaXRpb24gPSAwOyAkaVN0YXJ0UG9zaXRpb24gPCAkaVN0YWNrTGVuZ3RoOyArKyRpU3RhcnRQb3NpdGlvbikgewogICAgICAgICAgICAgICAgaWYgKCRpU3RhcnRQb3NpdGlvbiA9PT0gKCRpU3RhY2tMZW5ndGggLSAxKSB8fCAkc0RlbGltaXRlciAhPT0gJGFTdGFja1skaVN0YXJ0UG9zaXRpb24gKyAxXSkgewogICAgICAgICAgICAgICAgICAgICRhTmV3U3RhY2tbXSA9ICRhU3RhY2tbJGlTdGFydFBvc2l0aW9uXTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRpTGVuZ3RoID0gMjsgLy9OdW1iZXIgb2YgZWxlbWVudHMgdG8gYmUgam9pbmVkCiAgICAgICAgICAgICAgICBmb3IgKCRpID0gJGlTdGFydFBvc2l0aW9uICsgMzsgJGkgPCAkaVN0YWNrTGVuZ3RoOyAkaSArPSAyLCArKyRpTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRzRGVsaW1pdGVyICE9PSAkYVN0YWNrWyRpXSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb0xpc3QgPSBuZXcgUnVsZVZhbHVlTGlzdCgkc0RlbGltaXRlciwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CiAgICAgICAgICAgICAgICBmb3IgKCRpID0gJGlTdGFydFBvc2l0aW9uOyAkaSAtICRpU3RhcnRQb3NpdGlvbiA8ICRpTGVuZ3RoICogMjsgJGkgKz0gMikgewogICAgICAgICAgICAgICAgICAgICRvTGlzdC0+YWRkTGlzdENvbXBvbmVudCgkYVN0YWNrWyRpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkYU5ld1N0YWNrW10gPSAkb0xpc3Q7CiAgICAgICAgICAgICAgICAkaVN0YXJ0UG9zaXRpb24gKz0gJGlMZW5ndGggKiAyIC0gMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYVN0YWNrID0gJGFOZXdTdGFjazsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc3NldCgkYVN0YWNrWzBdKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgIiB7JG9QYXJzZXJTdGF0ZS0+cGVlaygpfSAiLAogICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+cGVlaygxLCAtMSkgLiAkb1BhcnNlclN0YXRlLT5wZWVrKDIpLAogICAgICAgICAgICAgICAgJ2xpdGVyYWwnLAogICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGFTdGFja1swXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBib29sICRiSWdub3JlQ2FzZQogICAgICoKICAgICAqIEByZXR1cm4gQ1NTRnVuY3Rpb258c3RyaW5nCiAgICAgKgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSBWOC44LjAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZUlkZW50aWZpZXJPckZ1bmN0aW9uKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUsICRiSWdub3JlQ2FzZSA9IGZhbHNlKQogICAgewogICAgICAgICRvQW5jaG9yID0gJG9QYXJzZXJTdGF0ZS0+YW5jaG9yKCk7CiAgICAgICAgJG1SZXN1bHQgPSAkb1BhcnNlclN0YXRlLT5wYXJzZUlkZW50aWZpZXIoJGJJZ25vcmVDYXNlKTsKCiAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCcoJykpIHsKICAgICAgICAgICAgJG9BbmNob3ItPmJhY2t0cmFjaygpOwogICAgICAgICAgICBpZiAoJG9QYXJzZXJTdGF0ZS0+c3RyZXFsKCd1cmwnLCAkbVJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICRtUmVzdWx0ID0gVVJMOjpwYXJzZSgkb1BhcnNlclN0YXRlKTsKICAgICAgICAgICAgfSBlbHNlaWYgKAogICAgICAgICAgICAgICAgJG9QYXJzZXJTdGF0ZS0+c3RyZXFsKCdjYWxjJywgJG1SZXN1bHQpCiAgICAgICAgICAgICAgICB8fCAkb1BhcnNlclN0YXRlLT5zdHJlcWwoJy13ZWJraXQtY2FsYycsICRtUmVzdWx0KQogICAgICAgICAgICAgICAgfHwgJG9QYXJzZXJTdGF0ZS0+c3RyZXFsKCctbW96LWNhbGMnLCAkbVJlc3VsdCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkbVJlc3VsdCA9IENhbGNGdW5jdGlvbjo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbVJlc3VsdCA9IENTU0Z1bmN0aW9uOjpwYXJzZSgkb1BhcnNlclN0YXRlLCAkYklnbm9yZUNhc2UpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1SZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIENTU0Z1bmN0aW9ufENTU1N0cmluZ3xMaW5lTmFtZXxTaXplfFVSTHxzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFNvdXJjZUV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSBWOC44LjAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZVByaW1pdGl2ZVZhbHVlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUpCiAgICB7CiAgICAgICAgJG9WYWx1ZSA9IG51bGw7CiAgICAgICAgJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKICAgICAgICBpZiAoCiAgICAgICAgICAgIGlzX251bWVyaWMoJG9QYXJzZXJTdGF0ZS0+cGVlaygpKQogICAgICAgICAgICB8fCAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0uJykKICAgICAgICAgICAgICAgICYmIGlzX251bWVyaWMoJG9QYXJzZXJTdGF0ZS0+cGVlaygxLCAyKSkpCiAgICAgICAgICAgIHx8ICgoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0nKSB8fCAkb1BhcnNlclN0YXRlLT5jb21lcygnLicpKSAmJiBpc19udW1lcmljKCRvUGFyc2VyU3RhdGUtPnBlZWsoMSwgMSkpKQogICAgICAgICkgewogICAgICAgICAgICAkb1ZhbHVlID0gU2l6ZTo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgfSBlbHNlaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCcjJykgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJ3JnYicsIHRydWUpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCdoc2wnLCB0cnVlKSkgewogICAgICAgICAgICAkb1ZhbHVlID0gQ29sb3I6OnBhcnNlKCRvUGFyc2VyU3RhdGUpOwogICAgICAgIH0gZWxzZWlmICgkb1BhcnNlclN0YXRlLT5jb21lcygiJyIpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCciJykpIHsKICAgICAgICAgICAgJG9WYWx1ZSA9IENTU1N0cmluZzo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CiAgICAgICAgfSBlbHNlaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCJwcm9naWQ6IikgJiYgJG9QYXJzZXJTdGF0ZS0+Z2V0U2V0dGluZ3MoKS0+YkxlbmllbnRQYXJzaW5nKSB7CiAgICAgICAgICAgICRvVmFsdWUgPSBzZWxmOjpwYXJzZU1pY3Jvc29mdEZpbHRlcigkb1BhcnNlclN0YXRlKTsKICAgICAgICB9IGVsc2VpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoIlsiKSkgewogICAgICAgICAgICAkb1ZhbHVlID0gTGluZU5hbWU6OnBhcnNlKCRvUGFyc2VyU3RhdGUpOwogICAgICAgIH0gZWxzZWlmICgkb1BhcnNlclN0YXRlLT5jb21lcygiVSsiKSkgewogICAgICAgICAgICAkb1ZhbHVlID0gc2VsZjo6cGFyc2VVbmljb2RlUmFuZ2VWYWx1ZSgkb1BhcnNlclN0YXRlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc05leHRDaGFyID0gJG9QYXJzZXJTdGF0ZS0+cGVlaygxKTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRvVmFsdWUgPSBzZWxmOjpwYXJzZUlkZW50aWZpZXJPckZ1bmN0aW9uKCRvUGFyc2VyU3RhdGUpOwogICAgICAgICAgICB9IGNhdGNoIChVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgIGlmIChcaW5fYXJyYXkoJHNOZXh0Q2hhciwgWycrJywgJy0nLCAnKicsICcvJ10sIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJG9WYWx1ZSA9ICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoMSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CiAgICAgICAgcmV0dXJuICRvVmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIENTU0Z1bmN0aW9uCiAgICAgKgogICAgICogQHRocm93cyBVbmV4cGVjdGVkRU9GRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwYXJzZU1pY3Jvc29mdEZpbHRlcihQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlKQogICAgewogICAgICAgICRzRnVuY3Rpb24gPSAkb1BhcnNlclN0YXRlLT5jb25zdW1lVW50aWwoJygnLCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgJGFBcmd1bWVudHMgPSBWYWx1ZTo6cGFyc2VWYWx1ZSgkb1BhcnNlclN0YXRlLCBbJywnLCAnPSddKTsKICAgICAgICByZXR1cm4gbmV3IENTU0Z1bmN0aW9uKCRzRnVuY3Rpb24sICRhQXJndW1lbnRzLCAnLCcsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFVuZXhwZWN0ZWRFT0ZFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlVW5pY29kZVJhbmdlVmFsdWUoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSkKICAgIHsKICAgICAgICAkaUNvZGVwb2ludE1heExlbmd0aCA9IDY7IC8vIENvZGUgcG9pbnRzIG91dHNpZGUgQk1QIGNhbiB1c2UgdXAgdG8gc2l4IGRpZ2l0cwogICAgICAgICRzUmFuZ2UgPSAiIjsKICAgICAgICAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCJVKyIpOwogICAgICAgIGRvIHsKICAgICAgICAgICAgaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCctJykpIHsKICAgICAgICAgICAgICAgICRpQ29kZXBvaW50TWF4TGVuZ3RoID0gMTM7IC8vIE1heCBsZW5ndGggaXMgMiBzaXggZGlnaXQgY29kZSBwb2ludHMgKyB0aGUgZGFzaCgtKSBiZXR3ZWVuIHRoZW0KICAgICAgICAgICAgfQogICAgICAgICAgICAkc1JhbmdlIC49ICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoMSk7CiAgICAgICAgfSB3aGlsZSAoc3RybGVuKCRzUmFuZ2UpIDwgJGlDb2RlcG9pbnRNYXhMZW5ndGggJiYgcHJlZ19tYXRjaCgiL1tBLUZhLWYwLTlcPy1dLyIsICRvUGFyc2VyU3RhdGUtPnBlZWsoKSkpOwogICAgICAgIHJldHVybiAiVSt7JHNSYW5nZX0iOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/src/Value/ValueList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CgovKioKICogQSBgVmFsdWVMaXN0YCByZXByZXNlbnRzIGEgbGlzdHMgb2YgYFZhbHVlYHMsIHNlcGFyYXRlZCBieSBzb21lIHNlcGFyYXRpb24gY2hhcmFjdGVyCiAqIChtb3N0bHkgYCxgLCB3aGl0ZXNwYWNlLCBvciBgL2ApLgogKgogKiBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGBWYWx1ZUxpc3RgczogYFJ1bGVWYWx1ZUxpc3RgIGFuZCBgQ1NTRnVuY3Rpb25gCiAqLwphYnN0cmFjdCBjbGFzcyBWYWx1ZUxpc3QgZXh0ZW5kcyBWYWx1ZQp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8aW50LCBSdWxlVmFsdWVMaXN0fENTU0Z1bmN0aW9ufENTU1N0cmluZ3xMaW5lTmFtZXxTaXplfFVSTHxzdHJpbmc+CiAgICAgKgogICAgICogQGludGVybmFsIHNpbmNlIDguOC4wCiAgICAgKi8KICAgIHByb3RlY3RlZCAkYUNvbXBvbmVudHM7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICoKICAgICAqIEBpbnRlcm5hbCBzaW5jZSA4LjguMAogICAgICovCiAgICBwcm90ZWN0ZWQgJHNTZXBhcmF0b3I7CgogICAgLyoqCiAgICAgKiBwaHBjczppZ25vcmUgR2VuZXJpYy5GaWxlcy5MaW5lTGVuZ3RoCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCBSdWxlVmFsdWVMaXN0fENTU0Z1bmN0aW9ufENTU1N0cmluZ3xMaW5lTmFtZXxTaXplfFVSTHxzdHJpbmc+fFJ1bGVWYWx1ZUxpc3R8Q1NTRnVuY3Rpb258Q1NTU3RyaW5nfExpbmVOYW1lfFNpemV8VVJMfHN0cmluZyAkYUNvbXBvbmVudHMKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNTZXBhcmF0b3IKICAgICAqIEBwYXJhbSBpbnQgJGlMaW5lTm8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhQ29tcG9uZW50cyA9IFtdLCAkc1NlcGFyYXRvciA9ICcsJywgJGlMaW5lTm8gPSAwKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGlMaW5lTm8pOwogICAgICAgIGlmICghaXNfYXJyYXkoJGFDb21wb25lbnRzKSkgewogICAgICAgICAgICAkYUNvbXBvbmVudHMgPSBbJGFDb21wb25lbnRzXTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmFDb21wb25lbnRzID0gJGFDb21wb25lbnRzOwogICAgICAgICR0aGlzLT5zU2VwYXJhdG9yID0gJHNTZXBhcmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUnVsZVZhbHVlTGlzdHxDU1NGdW5jdGlvbnxDU1NTdHJpbmd8TGluZU5hbWV8U2l6ZXxVUkx8c3RyaW5nICRtQ29tcG9uZW50CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRMaXN0Q29tcG9uZW50KCRtQ29tcG9uZW50KQogICAgewogICAgICAgICR0aGlzLT5hQ29tcG9uZW50c1tdID0gJG1Db21wb25lbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PGludCwgUnVsZVZhbHVlTGlzdHxDU1NGdW5jdGlvbnxDU1NTdHJpbmd8TGluZU5hbWV8U2l6ZXxVUkx8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGlzdENvbXBvbmVudHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YUNvbXBvbmVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCBSdWxlVmFsdWVMaXN0fENTU0Z1bmN0aW9ufENTU1N0cmluZ3xMaW5lTmFtZXxTaXplfFVSTHxzdHJpbmc+ICRhQ29tcG9uZW50cwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TGlzdENvbXBvbmVudHMoYXJyYXkgJGFDb21wb25lbnRzKQogICAgewogICAgICAgICR0aGlzLT5hQ29tcG9uZW50cyA9ICRhQ29tcG9uZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMaXN0U2VwYXJhdG9yKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNTZXBhcmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzU2VwYXJhdG9yCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRMaXN0U2VwYXJhdG9yKCRzU2VwYXJhdG9yKQogICAgewogICAgICAgICR0aGlzLT5zU2VwYXJhdG9yID0gJHNTZXBhcmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIGluIFY4LjguMCwgd2lsbCBiZSByZW1vdmVkIGluIFY5LjAuMC4gVXNlIGByZW5kZXJgIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgT3V0cHV0Rm9ybWF0KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE91dHB1dEZvcm1hdHxudWxsICRvT3V0cHV0Rm9ybWF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbmRlcigkb091dHB1dEZvcm1hdCkKICAgIHsKICAgICAgICByZXR1cm4gJG9PdXRwdXRGb3JtYXQtPmltcGxvZGUoCiAgICAgICAgICAgICRvT3V0cHV0Rm9ybWF0LT5zcGFjZUJlZm9yZUxpc3RBcmd1bWVudFNlcGFyYXRvcigkdGhpcy0+c1NlcGFyYXRvcikgLiAkdGhpcy0+c1NlcGFyYXRvcgogICAgICAgICAgICAuICRvT3V0cHV0Rm9ybWF0LT5zcGFjZUFmdGVyTGlzdEFyZ3VtZW50U2VwYXJhdG9yKCR0aGlzLT5zU2VwYXJhdG9yKSwKICAgICAgICAgICAgJHRoaXMtPmFDb21wb25lbnRzCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic2Nzc3BocC9zY3NzcGhwIiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImRlc2NyaXB0aW9uIjogInNjc3NwaHAgaXMgYSBjb21waWxlciBmb3IgU0NTUyB3cml0dGVuIGluIFBIUC4iLAogICAgImtleXdvcmRzIjogWyJjc3MiLCAic3R5bGVzaGVldCIsICJzY3NzIiwgInNhc3MiLCAibGVzcyJdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocC8iLAogICAgImxpY2Vuc2UiOiBbCiAgICAgICAgIk1JVCIKICAgIF0sCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkFudGhvbiBQYW5nIiwKICAgICAgICAgICAgImVtYWlsIjogImFwYW5nQHNvZnR3YXJlZGV2ZWxvcG1lbnQuY2EiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JvYm9jb2RlciIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQ8OpZHJpYyBNb3JpbiIsCiAgICAgICAgICAgICJlbWFpbCI6ICJjZWRyaWNAeXRlcml1bS5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NlcmRpYyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsgIlNjc3NQaHBcXFNjc3NQaHBcXCI6ICJzcmMvIiB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7ICJTY3NzUGhwXFxTY3NzUGhwXFxUZXN0c1xcIjogInRlc3RzLyIgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj04LjEiLAogICAgICAgICJleHQtY3R5cGUiOiAiKiIsCiAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICJleHQtbWJzdHJpbmciOiAiKiIsCiAgICAgICAgImxlYWd1ZS91cmkiOiAiXjcuNiIsCiAgICAgICAgImxlYWd1ZS91cmktaW50ZXJmYWNlcyI6ICJeNy42IiwKICAgICAgICAic2Nzc3BocC9zb3VyY2Utc3BhbiI6ICJeMS4xIiwKICAgICAgICAic3ltZm9ueS9maWxlc3lzdGVtIjogIl41LjQgfHwgXjYuMCB8fCBeNy4wIHx8IF44LjAiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJqZ3RobXMvYnVsbWEiOiAifjAuOS40IiwKICAgICAgICAiamlyaXB1ZGlsL3BocHN0YW4tc2VhbGVkLWNsYXNzZXMiOiAiXjEuMyIsCiAgICAgICAgInBocHN0YW4vcGhwc3RhbiI6ICJeMi4xLjMxIiwKICAgICAgICAicGhwc3Rhbi9waHBzdGFuLWRlcHJlY2F0aW9uLXJ1bGVzIjogIl4yLjAiLAogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjkuNS42IiwKICAgICAgICAic2Fzcy9zYXNzLXNwZWMiOiAiKiIsCiAgICAgICAgInNxdWl6bGFicy9waHBfY29kZXNuaWZmZXIiOiAiXjMuMTMiLAogICAgICAgICJzeW1mb255L3BocHVuaXQtYnJpZGdlIjogIl43LjMgfHwgXjguMCIsCiAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtcGhwODQiOiAiXjEuMzMiLAogICAgICAgICJzeW1mb255L3Zhci1kdW1wZXIiOiAiXjYuNCB8fCBeNy4zIHx8IF44LjAiLAogICAgICAgICJ0aG91Z2h0Ym90L2JvdXJib24iOiAiXjcuMCIsCiAgICAgICAgInR3YnMvYm9vdHN0cmFwIjogIl41LjMiLAogICAgICAgICJ0d2JzL2Jvb3RzdHJhcDQiOiAiNC42LjEiLAogICAgICAgICJ6dXJiL2ZvdW5kYXRpb24iOiAifjYuNy4wIgogICAgfSwKICAgICJyZXBvc2l0b3JpZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJwYWNrYWdlIiwKICAgICAgICAgICAgInBhY2thZ2UiOiB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJzYXNzL3Nhc3Mtc3BlYyIsCiAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyMDI0LjA2LjI0IiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3Mtc3BlYy5naXQiLAogICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiN2FjODA2NjE4ZGE3MjQzMzNjNjBhZDdiOWMxNmI5Njk0NzBiOTMwMiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zYXNzL3Nhc3Mtc3BlYy96aXBiYWxsLzdhYzgwNjYxOGRhNzI0MzMzYzYwYWQ3YjljMTZiOTY5NDcwYjkzMDIiLAogICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiN2FjODA2NjE4ZGE3MjQzMzNjNjBhZDdiOWMxNmI5Njk0NzBiOTMwMiIsCiAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicGFja2FnZSIsCiAgICAgICAgICAgICJwYWNrYWdlIjogewogICAgICAgICAgICAgICAgIm5hbWUiOiAidGhvdWdodGJvdC9ib3VyYm9uIiwKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogInY3LjAuMCIsCiAgICAgICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGhvdWdodGJvdC9ib3VyYm9uLmdpdCIsCiAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmYmUzMzhlZTY4MDdlN2Y3YWE5OTZkODJjOGExNmYyNDhiYjE0OWIzIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3Rob3VnaHRib3QvYm91cmJvbi96aXBiYWxsL2ZiZTMzOGVlNjgwN2U3ZjdhYTk5NmQ4MmM4YTE2ZjI0OGJiMTQ5YjMiLAogICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZmJlMzM4ZWU2ODA3ZTdmN2FhOTk2ZDgyYzhhMTZmMjQ4YmIxNDliMyIsCiAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicGFja2FnZSIsCiAgICAgICAgICAgICJwYWNrYWdlIjogewogICAgICAgICAgICAgICAgIm5hbWUiOiAiamd0aG1zL2J1bG1hIiwKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogInYwLjkuNCIsCiAgICAgICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamd0aG1zL2J1bG1hLmdpdCIsCiAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIzZTAwYThlNmQwZDBlNTY2ZDUwNzMyOGYwMTg1ZWY4NDg1NGVmZmJhIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2pndGhtcy9idWxtYS96aXBiYWxsLzNlMDBhOGU2ZDBkMGU1NjZkNTA3MzI4ZjAxODVlZjg0ODU0ZWZmYmEiLAogICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiM2UwMGE4ZTZkMGQwZTU2NmQ1MDczMjhmMDE4NWVmODQ4NTRlZmZiYSIsCiAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicGFja2FnZSIsCiAgICAgICAgICAgICJwYWNrYWdlIjogewogICAgICAgICAgICAgICAgIm5hbWUiOiAidHdicy9ib290c3RyYXA0IiwKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogInY0LjYuMSIsCiAgICAgICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAuZ2l0IiwKICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjA0M2EwM2M5NWEyYWQ2NzM4Zjg1YjY1ZTUzYjlkYmRmYjAzYjhkMTAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvdHdicy9ib290c3RyYXAvemlwYmFsbC8wNDNhMDNjOTVhMmFkNjczOGY4NWI2NWU1M2I5ZGJkZmIwM2I4ZDEwIiwKICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjA0M2EwM2M5NWEyYWQ2NzM4Zjg1YjY1ZTUzYjlkYmRmYjAzYjhkMTAiLAogICAgICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgXSwKICAgICJjb25maWciOiB7CiAgICAgICAgInNvcnQtcGFja2FnZXMiOiB0cnVlCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/LICENSE.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IExlYWYgQ29yY29yYW4sIGh0dHBzOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCmEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCndpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCnBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwp0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQppbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELApFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQpMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCk9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgpXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBzY3NzcGhwCiMjIyA8aHR0cHM6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwPgoKIVtCdWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL3Njc3NwaHAvc2Nzc3BocC93b3JrZmxvd3MvQ0kvYmFkZ2Uuc3ZnKQpbIVtMaWNlbnNlXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL3Njc3NwaHAvc2Nzc3BocC9saWNlbnNlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3Njc3NwaHAvc2Nzc3BocCkKCmBzY3NzcGhwYCBpcyBhIGNvbXBpbGVyIGZvciBTQ1NTIHdyaXR0ZW4gaW4gUEhQLgoKQ2hlY2tvdXQgdGhlIGhvbWVwYWdlLCA8aHR0cHM6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwPiwgZm9yIGRpcmVjdGlvbnMgb24gaG93IHRvIHVzZS4KCiMjIFJ1bm5pbmcgVGVzdHMKCmBzY3NzcGhwYCB1c2VzIFtQSFBVbml0XShodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdCkgZm9yIHRlc3RpbmcuCgpSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIHJ1biBldmVyeSB0ZXN0OgoKICAgIHZlbmRvci9iaW4vcGhwdW5pdCB0ZXN0cwoKVGhlcmUgYXJlIHNldmVyYWwgdGVzdHMgaW4gdGhlIGB0ZXN0cy9gIGRpcmVjdG9yeToKCiogYEFwaVRlc3QucGhwYCBjb250YWlucyB2YXJpb3VzIHVuaXQgdGVzdHMgdGhhdCB0ZXN0IHRoZSBQSFAgaW50ZXJmYWNlLgoqIGBFeGNlcHRpb25UZXN0LnBocGAgY29udGFpbnMgdW5pdCB0ZXN0cyB0aGF0IHRlc3QgZm9yIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZSBwYXJzZXIgYW5kIGNvbXBpbGVyLgoqIGBGYWlsaW5nVGVzdC5waHBgIGNvbnRhaW5zIHRlc3RzIHJlcG9ydGVkIGluIEdpdGh1YiBpc3N1ZXMgdGhhdCBkZW1vbnN0cmF0ZSBjb21wYXRpYmlsaXR5IGJ1Z3MuCiogYElucHV0VGVzdC5waHBgIGNvbXBpbGVzIGV2ZXJ5IGAuc2Nzc2AgZmlsZSBpbiB0aGUgYHRlc3RzL2lucHV0c2AgZGlyZWN0b3J5CiAgdGhlbiBjb21wYXJlcyB0byB0aGUgcmVzcGVjdGl2ZSBgLmNzc2AgZmlsZSBpbiB0aGUgYHRlc3RzL291dHB1dHNgIGRpcmVjdG9yeS4KKiBgU2Fzc1NwZWNUZXN0LnBocGAgZXh0cmFjdHMgdGVzdHMgZnJvbSB0aGUgYHNhc3Mvc2Fzcy1zcGVjYCByZXBvc2l0b3J5LgoKV2hlbiBjaGFuZ2luZyBhbnkgb2YgdGhlIHRlc3RzIGluIGB0ZXN0cy9pbnB1dHNgLCB0aGUgdGVzdHMgd2lsbCBtb3N0IGxpa2VseQpmYWlsIGJlY2F1c2UgdGhlIG91dHB1dCBoYXMgY2hhbmdlZC4gT25jZSB5b3UgdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBpcyBjb3JyZWN0CnlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byByZWJ1aWxkIGFsbCB0aGUgdGVzdHM6CgogICAgQlVJTEQ9MSB2ZW5kb3IvYmluL3BocHVuaXQgdGVzdHMKClRoaXMgd2lsbCBjb21waWxlIGFsbCB0aGUgdGVzdHMsIGFuZCBzYXZlIHJlc3VsdHMgaW50byBgdGVzdHMvb3V0cHV0c2AuIEl0IGFsc28KdXBkYXRlcyB0aGUgbGlzdCBvZiBleGNsdWRlZCBzcGVjcyBmcm9tIHNhc3Mtc3BlYy4KClRvIGVuYWJsZSB0aGUgZnVsbCBgc2Fzcy1zcGVjYCBjb21wYXRpYmlsaXR5IHRlc3RzOgoKICAgIFRFU1RfU0FTU19TUEVDPTEgdmVuZG9yL2Jpbi9waHB1bml0IHRlc3RzCgojIyBDb2RpbmcgU3RhbmRhcmQKCmBzY3NzcGhwYCBzb3VyY2UgY29uZm9ybXMgdG8gW1BTUjEyXShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTEyLykuCgpSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIGNoZWNrIHRoZSBjb2RlIGZvciAic25pZmZzIi4KCiAgICB2ZW5kb3IvYmluL3BocGNzIC0tc3RhbmRhcmQ9UFNSMTIgLS1leHRlbnNpb25zPXBocCBiaW4gc3JjIHRlc3RzCgojIyBTdGF0aWMgQW5hbHlzaXMKCmBzY3NzcGhwYCB1c2VzIFtwaHBzdGFuXShodHRwczovL3BocHN0YW4ub3JnLykgZm9yIHN0YXRpYyBhbmFseXNpcy4KClJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gYW5hbHlzZSB0aGUgY29kZWJhc2U6CgogICAgbWFrZSBwaHBzdGFuCgpBcyBtb3N0IG9mIHRoZSBjb2RlYmFzZSBpcyBjb21wb3NlZCBvZiBsZWdhY3kgY29kZSB3aGljaCBjYW5ub3QgYmUgdHlwZS1jaGVja2VkCmZ1bGx5LCB0aGUgc2V0dXAgY29udGFpbnMgYSBiYXNlbGluZSBmaWxlIHdpdGggYWxsIGVycm9ycyB3ZSB3YW50IHRvIGlnbm9yZS4gSW4KcGFydGljdWxhciwgd2UgaWdub3JlIGFsbCBlcnJvcnMgcmVsYXRlZCB0byBub3Qgc3BlY2lmeWluZyB0aGUgdHlwZXMgaW5zaWRlIGFycmF5cwp3aGVuIHRoZXNlIGFycmF5cyBjb3JyZXNwb25kIHRvIHRoZSByZXByZXNlbnRhdGlvbiBvZiBTYXNzIHZhbHVlcyBhbmQgU2FzcyBBU1Qgbm9kZXMKaW4gdGhlIHBhcnNlciBhbmQgY29tcGlsZXIuCldoZW4gY29udHJpYnV0aW5nLCB0aGUgcHJvcGVyIHByb2Nlc3MgdG8gZGVhbCB3aXRoIHN0YXRpYyBhbmFseXNpcyBpcyB0aGUgZm9sbG93aW5nOgoKMS4gTWFrZSB5b3VyIGNoYW5nZSBpbiB0aGUgY29kZWJhc2UKMi4gUnVuIGBtYWtlIHBocHN0YW5gCjMuIEZpeCBlcnJvcnMgcmVwb3J0ZWQgYnkgcGhwc3RhbiB3aGVuIHBvc3NpYmxlCjQuIFJlcGVhdCBzdGVwIDIgYW5kIDMgdW50aWwgbm90aGluZyBnZXRzIGZpeGVkIGFueW1vcmUgYXQgc3RlcCAzCjUuIFJ1biBgbWFrZSBwaHBzdGFuLWJhc2VsaW5lYCB0byByZWdlbmVyYXRlIHRoZSBwaHBzdGFuIGJhc2VsaW5lCgpBZGRpdGlvbnMgdG8gdGhlIGJhc2VsaW5lIHdpbGwgYmUgcmV2aWV3ZWQgdG8gYXZvaWQgaWdub3JpbmcgZXJyb3JzIHRoYXQgc2hvdWxkIGhhdmUKYmVlbiBmaXhlZC4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/AstNode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdDsKCnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgbm9kZSBpbiBhbiBhYnN0cmFjdCBzeW50YXggdHJlZS4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgQXN0Tm9kZSBleHRlbmRzIFxTdHJpbmdhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssAtRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQW4gdW5rbm93biBwbGFpbiBDU1MgYXQtcnVsZS4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgQ3NzQXRSdWxlIGV4dGVuZHMgQ3NzUGFyZW50Tm9kZQp7CiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoaXMgcnVsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIENzc1ZhbHVlPHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogQ3NzVmFsdWU7CgogICAgLyoqCiAgICAgKiBUaGUgdmFsdWUgb2YgdGhpcyBydWxlLgogICAgICoKICAgICAqIEByZXR1cm4gQ3NzVmFsdWU8c3RyaW5nPnxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpOiA/Q3NzVmFsdWU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssComment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQSBwbGFpbiBDU1MgY29tbWVudC4KICoKICogVGhpcyBpcyBhbHdheXMgYSBtdWx0aS1saW5lIGNvbW1lbnQuCiAqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIENzc0NvbW1lbnQgZXh0ZW5kcyBDc3NOb2RlCnsKICAgIC8qKgogICAgICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgY29tbWVudCwgaW5jbHVkaW5nIGAvKmAgYW5kIGAqIC9gLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGV4dCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgY29tbWVudCBzdGFydHMgd2l0aCBgLyohYCBhbmQgc28gc2hvdWxkIGJlIHByZXNlcnZlZCBldmVuIGluCiAgICAgKiBjb21wcmVzc2VkIG1vZGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ByZXNlcnZlZCgpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssDeclaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFN0YWNrVHJhY2VcVHJhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcVmFsdWU7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgcGxhaW4gQ1NTIGRlY2xhcmF0aW9uICh0aGF0IGlzLCBhIGBuYW1lOiB2YWx1ZWAgcGFpcikuCiAqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIENzc0RlY2xhcmF0aW9uIGV4dGVuZHMgQ3NzTm9kZQp7CiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoaXMgZGVjbGFyYXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBDc3NWYWx1ZTxzdHJpbmc+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IENzc1ZhbHVlOwoKICAgIC8qKgogICAgICogVGhlIHZhbHVlIG9mIHRoaXMgZGVjbGFyYXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBDc3NWYWx1ZTxWYWx1ZT4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCk6IENzc1ZhbHVlOwoKICAgIC8qKgogICAgICogQSBsaXN0IG9mIHN0eWxlIHJ1bGVzIHRoYXQgYXBwZWFyZWQgYmVmb3JlIHRoaXMgZGVjbGFyYXRpb24gaW4gdGhlIFNhc3MKICAgICAqIGlucHV0IGJ1dCBhZnRlciBpdCBpbiB0aGUgQ1NTIG91dHB1dC4KICAgICAqCiAgICAgKiBUaGVzZSBhcmUgdXNlZCB0byBlbWl0IG1peGVkIGRlY2xhcmF0aW9uIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGR1cmluZwogICAgICogc2VyaWFsaXphdGlvbiwgc28gd2UgY2FuIGNoZWNrIGJhc2VkIG9uIHNwZWNpZmljaXR5IHdoZXRoZXIgdGhlIHdhcm5pbmdzCiAgICAgKiBhcmUgcmVhbGx5IG5lY2Vzc2FyeSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IGBAZXh0ZW5kYCBwb3RlbnRpYWxseSBjaGFuZ2luZwogICAgICogdGhpbmdzIHVwLgogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxDc3NTdHlsZVJ1bGU+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnRlcmxlYXZlZFJ1bGVzKCk6IGFycmF5OwoKICAgIC8qKgogICAgICogVGhlIHN0YWNrIHRyYWNlIGluZGljYXRpbmcgd2hlcmUgdGhpcyBub2RlIHdhcyBjcmVhdGVkLgogICAgICoKICAgICAqIFRoaXMgaXMgdXNlZCB0byBlbWl0IGludGVybGVhdmVkIGRlY2xhcmF0aW9uIHdhcm5pbmdzLCBhbmQgb25seSBuZWVkcyB0byBiZSBzZXQgaWYKICAgICAqIHtAc2VlIGdldEludGVybGVhdmVkUnVsZXN9IGlzbid0IGVtcHR5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHJhY2UoKTogP1RyYWNlOwoKICAgIC8qKgogICAgICogVGhlIHNwYW4gZm9yIHtAc2VlIGdldFZhbHVlfSB0aGF0IHNob3VsZCBiZSBlbWl0dGVkIHRvIHRoZSBzb3VyY2UgbWFwLgogICAgICoKICAgICAqIFdoZW4gdGhlIGRlY2xhcmF0aW9uJ3MgZXhwcmVzc2lvbiBpcyBqdXN0IGEgdmFyaWFibGUsIHRoaXMgaXMgdGhlIHNwYW4KICAgICAqIHdoZXJlIHRoYXQgdmFyaWFibGUgd2FzIGRlY2xhcmVkIHdoZXJlYXMgYCR0aGlzLT5nZXRWYWx1ZSgpLT5nZXRTcGFuKClgIGlzIHRoZSBzcGFuIHdoZXJlCiAgICAgKiB0aGUgdmFyaWFibGUgd2FzIHVzZWQuIE90aGVyd2lzZSwgdGhpcyBpcyBpZGVudGljYWwgdG8gYCR0aGlzLT5nZXRWYWx1ZSgpLT5nZXRTcGFuKClgLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVTcGFuRm9yTWFwKCk6IEZpbGVTcGFuOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgaXMgYSBDU1MgQ3VzdG9tIFByb3BlcnR5IGRlY2xhcmF0aW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDdXN0b21Qcm9wZXJ0eSgpOiBib29sOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIHdhcyBvcmlnaW5hbGx5IHBhcnNlZCBhcyBhIGN1c3RvbSBwcm9wZXJ0eSBkZWNsYXJhdGlvbiwgYXMKICAgICAqIG9wcG9zZWQgdG8gdXNpbmcgc29tZXRoaW5nIGxpa2UgYCN7LS1mb299OiAuLi5gIHRvIGNhdXNlIGl0IHRvIGJlIHBhcnNlZAogICAgICogYXMgYSBub3JtYWwgU2FzcyBkZWNsYXJhdGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGlzIGlzIGB0cnVlYCwge0BzZWUgaXNDdXN0b21Qcm9wZXJ0eX0gd2lsbCBhbHNvIGJlIGB0cnVlYCBhbmQge0BzZWUgZ2V0VmFsdWV9IHdpbGwKICAgICAqIGNvbnRhaW4gYSB7QHNlZSBTYXNzU3RyaW5nfS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUGFyc2VkQXNDdXN0b21Qcm9wZXJ0eSgpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssImport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQSBwbGFpbiBDU1MgYEBpbXBvcnRgLgogKgogKiBAaW50ZXJuYWwKICovCmludGVyZmFjZSBDc3NJbXBvcnQgZXh0ZW5kcyBDc3NOb2RlCnsKICAgIC8qKgogICAgICogVGhlIFVSTCBiZWluZyBpbXBvcnRlZC4KICAgICAqCiAgICAgKiBUaGlzIGluY2x1ZGVzIHF1b3Rlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIENzc1ZhbHVlPHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVybCgpOiBDc3NWYWx1ZTsKCiAgICAvKioKICAgICAqIFRoZSBtb2RpZmllcnMgKHN1Y2ggYXMgbWVkaWEgb3Igc3VwcG9ydHMgcXVlcmllcykgYXR0YWNoZWQgdG8gdGhpcyBpbXBvcnQuCiAgICAgKgogICAgICogQHJldHVybiBDc3NWYWx1ZTxzdHJpbmc+fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZGlmaWVycygpOiA/Q3NzVmFsdWU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssKeyframeBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQSBibG9jayB3aXRoaW4gYSBgQGtleWZyYW1lc2AgcnVsZS4KICoKICogRm9yIGV4YW1wbGUsIGAxMCUge29wYWNpdHk6IDAuNX1gLgogKgogKiBAaW50ZXJuYWwKICovCmludGVyZmFjZSBDc3NLZXlmcmFtZUJsb2NrIGV4dGVuZHMgQ3NzUGFyZW50Tm9kZQp7CiAgICAvKioKICAgICAqIFRoZSBzZWxlY3RvciBmb3IgdGhpcyBibG9jay4KICAgICAqCiAgICAgKiBAcmV0dXJuIENzc1ZhbHVlPGxpc3Q8c3RyaW5nPj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlbGVjdG9yKCk6IENzc1ZhbHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssMediaQuery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpSW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzRm9ybWF0RXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxMb2dnZXJJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcUGFyc2VyXEludGVycG9sYXRpb25NYXA7CnVzZSBTY3NzUGhwXFNjc3NQaHBcUGFyc2VyXE1lZGlhUXVlcnlQYXJzZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGU7CgovKioKICogQSBwbGFpbiBDU1MgbWVkaWEgcXVlcnksIGFzIHVzZWQgaW4gYEBtZWRpYWAgYW5kIGBAaW1wb3J0YC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBDc3NNZWRpYVF1ZXJ5IGltcGxlbWVudHMgTWVkaWFRdWVyeU1lcmdlUmVzdWx0LCBFcXVhdGFibGUKewogICAgLyoqCiAgICAgKiBUaGUgbW9kaWZpZXIsIHByb2JhYmx5IGVpdGhlciAibm90IiBvciAib25seSIuCiAgICAgKgogICAgICogVGhpcyBtYXkgYmUgYG51bGxgIGlmIG5vIG1vZGlmaWVyIGlzIGluIHVzZS4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICRtb2RpZmllcjsKCiAgICAvKioKICAgICAqIFRoZSBtZWRpYSB0eXBlLCBmb3IgZXhhbXBsZSAic2NyZWVuIiBvciAicHJpbnQiLgogICAgICoKICAgICAqIFRoaXMgbWF5IGJlIGBudWxsYC4gSWYgc28sIHtAc2VlICRjb25kaXRpb25zfSB3aWxsIG5vdCBiZSBlbXB0eS4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICR0eXBlOwoKICAgIC8qKgogICAgICogV2hldGhlciB7QHNlZSAkY29uZGl0aW9uc30gaXMgYSBjb25qdW5jdGlvbiBvciBhIGRpc2p1bmN0aW9uLgogICAgICoKICAgICAqIEluIG90aGVyIHdvcmRzLCBpZiB0aGlzIGlzIGB0cnVlYCB0aGlzIHF1ZXJ5IG1hdGNoZXMgd2hlbiBfYWxsXwogICAgICoge0BzZWUgJGNvbmRpdGlvbnN9IGFyZSBtZXQsIGFuZCBpZiBpdCdzIGBmYWxzZWAgdGhpcyBxdWVyeSBtYXRjaGVzIHdoZW4gX2FueV8KICAgICAqIGNvbmRpdGlvbiBpbiB7QHNlZSAkY29uZGl0aW9uc30gaXMgbWV0LgogICAgICoKICAgICAqIElmIHRoaXMgaXMgYGZhbHNlYCwge0BzZWUgJG1vZGlmaWVyfSBhbmQge0BzZWUgJHR5cGV9IHdpbGwgYm90aCBiZSBgbnVsbGAuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkY29uanVuY3Rpb247CgogICAgLyoqCiAgICAgKiBNZWRpYSBjb25kaXRpb25zLCBpbmNsdWRpbmcgcGFyZW50aGVzZXMuCiAgICAgKgogICAgICogVGhpcyBpcyBhbnl0aGluZyB0aGF0IGNhbiBhcHBlYXIgaW4gdGhlIFtgPG1lZGlhLWluLXBhcmVucz5gXSBwcm9kdWN0aW9uLgogICAgICoKICAgICAqIFtgPG1lZGlhLWluLXBhcmVucz5gXTogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL21lZGlhcXVlcmllcy00LyN0eXBlZGVmLW1lZGlhLWluLXBhcmVucwogICAgICoKICAgICAqIEB2YXIgbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJGNvbmRpdGlvbnM7CgogICAgLyoqCiAgICAgKiBQYXJzZXMgYSBtZWRpYSBxdWVyeSBmcm9tICRjb250ZW50cy4KICAgICAqCiAgICAgKiBJZiBwYXNzZWQsICR1cmwgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAkY29udGVudHMgY29tZXMuCiAgICAgKgogICAgICogQHJldHVybiBsaXN0PENzc01lZGlhUXVlcnk+CiAgICAgKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uIGlmIHBhcnNpbmcgZmFpbHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZUxpc3Qoc3RyaW5nICRjb250ZW50cywgP0xvZ2dlckludGVyZmFjZSAkbG9nZ2VyID0gbnVsbCwgP1VyaUludGVyZmFjZSAkdXJsID0gbnVsbCwgP0ludGVycG9sYXRpb25NYXAgJGludGVycG9sYXRpb25NYXAgPSBudWxsKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gKG5ldyBNZWRpYVF1ZXJ5UGFyc2VyKCRjb250ZW50cywgJGxvZ2dlciwgJHVybCwgJGludGVycG9sYXRpb25NYXApKS0+cGFyc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJGNvbmRpdGlvbnMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkY29uZGl0aW9ucyA9IFtdLCBib29sICRjb25qdW5jdGlvbiA9IHRydWUsID9zdHJpbmcgJHR5cGUgPSBudWxsLCA/c3RyaW5nICRtb2RpZmllciA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZGlmaWVyID0gJG1vZGlmaWVyOwogICAgICAgICR0aGlzLT50eXBlID0gJHR5cGU7CiAgICAgICAgJHRoaXMtPmNvbmRpdGlvbnMgPSAkY29uZGl0aW9uczsKICAgICAgICAkdGhpcy0+Y29uanVuY3Rpb24gPSAkY29uanVuY3Rpb247CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbWVkaWEgcXVlcnkgc3BlY2lmaWVzIGEgdHlwZSBhbmQsIG9wdGlvbmFsbHksIGNvbmRpdGlvbnMuCiAgICAgKgogICAgICogVGhpcyBhbHdheXMgc2V0cyB7QHNlZSAkY29uanVuY3Rpb259IHRvIGB0cnVlYC4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRjb25kaXRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdHlwZSg/c3RyaW5nICR0eXBlLCA/c3RyaW5nICRtb2RpZmllciA9IG51bGwsIGFycmF5ICRjb25kaXRpb25zID0gW10pOiBDc3NNZWRpYVF1ZXJ5CiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBDc3NNZWRpYVF1ZXJ5KCRjb25kaXRpb25zLCB0cnVlLCAkdHlwZSwgJG1vZGlmaWVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBtZWRpYSBxdWVyeSB0aGF0IG1hdGNoZXMgJGNvbmRpdGlvbnMgYWNjb3JkaW5nIHRvCiAgICAgKiAkY29uanVuY3Rpb24uCiAgICAgKgogICAgICogVGhlICRjb25qdW5jdGlvbiBhcmd1bWVudCBtYXkgbm90IGJlIG51bGwgaWYgJGNvbmRpdGlvbnMgaXMgbG9uZ2VyIHRoYW4KICAgICAqIGEgc2luZ2xlIGVsZW1lbnQuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkY29uZGl0aW9ucwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbmRpdGlvbihhcnJheSAkY29uZGl0aW9ucywgP2Jvb2wgJGNvbmp1bmN0aW9uID0gbnVsbCk6IENzc01lZGlhUXVlcnkKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRjb25kaXRpb25zKSA+IDEgJiYgJGNvbmp1bmN0aW9uID09PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJZiBjb25kaXRpb25zIGlzIGxvbmdlciB0aGFuIG9uZSBlbGVtZW50LCBjb25qdW5jdGlvbiBtYXkgbm90IGJlIG51bGwuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IENzc01lZGlhUXVlcnkoJGNvbmRpdGlvbnMsICRjb25qdW5jdGlvbiA/PyB0cnVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kaWZpZXIoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kaWZpZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dHlwZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDb25qdW5jdGlvbigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb25qdW5jdGlvbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25kaXRpb25zKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb25kaXRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIG1lZGlhIHF1ZXJ5IG1hdGNoZXMgYWxsIG1lZGlhIHR5cGVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWF0Y2hlc0FsbFR5cGVzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnR5cGUgPT09IG51bGwgfHwgc3RydG9sb3dlcigkdGhpcy0+dHlwZSkgPT09ICdhbGwnOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2VzIHRoaXMgd2l0aCAkb3RoZXIgdG8gcmV0dXJuIGEgcXVlcnkgdGhhdCBtYXRjaGVzIHRoZSBpbnRlcnNlY3Rpb24KICAgICAqIG9mIGJvdGggaW5wdXRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWVyZ2UoQ3NzTWVkaWFRdWVyeSAkb3RoZXIpOiBNZWRpYVF1ZXJ5TWVyZ2VSZXN1bHQKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jb25qdW5jdGlvbiB8fCAhJG90aGVyLT5jb25qdW5jdGlvbikgewogICAgICAgICAgICByZXR1cm4gTWVkaWFRdWVyeVNpbmdsZXRvbk1lcmdlUmVzdWx0Ojp1bnJlcHJlc2VudGFibGU7CiAgICAgICAgfQoKICAgICAgICAkb3VyTW9kaWZpZXIgPSAkdGhpcy0+bW9kaWZpZXIgIT09IG51bGwgPyBzdHJ0b2xvd2VyKCR0aGlzLT5tb2RpZmllcikgOiBudWxsOwogICAgICAgICRvdXJUeXBlID0gJHRoaXMtPnR5cGUgIT09IG51bGwgPyBzdHJ0b2xvd2VyKCR0aGlzLT50eXBlKSA6IG51bGw7CiAgICAgICAgJHRoZWlyTW9kaWZpZXIgPSAkb3RoZXItPm1vZGlmaWVyICE9PSBudWxsID8gc3RydG9sb3dlcigkb3RoZXItPm1vZGlmaWVyKSA6IG51bGw7CiAgICAgICAgJHRoZWlyVHlwZSA9ICRvdGhlci0+dHlwZSAhPT0gbnVsbCA/IHN0cnRvbG93ZXIoJG90aGVyLT50eXBlKSA6IG51bGw7CgogICAgICAgIGlmICgkb3VyVHlwZSA9PT0gbnVsbCAmJiAkdGhlaXJUeXBlID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjb25kaXRpb24oYXJyYXlfbWVyZ2UoJHRoaXMtPmNvbmRpdGlvbnMsICRvdGhlci0+Y29uZGl0aW9ucyksIHRydWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCgkb3VyTW9kaWZpZXIgPT09ICdub3QnKSAhPT0gKCR0aGVpck1vZGlmaWVyID09PSAnbm90JykpIHsKICAgICAgICAgICAgaWYgKCRvdXJUeXBlID09PSAkdGhlaXJUeXBlKSB7CiAgICAgICAgICAgICAgICAkbmVnYXRpdmVDb25kaXRpb25zID0gJG91ck1vZGlmaWVyID09PSAnbm90JyA/ICR0aGlzLT5jb25kaXRpb25zIDogJG90aGVyLT5jb25kaXRpb25zOwogICAgICAgICAgICAgICAgJHBvc2l0aXZlQ29uZGl0aW9ucyA9ICRvdXJNb2RpZmllciA9PT0gJ25vdCcgPyAkb3RoZXItPmNvbmRpdGlvbnMgOiAkdGhpcy0+Y29uZGl0aW9uczsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmVnYXRpdmUgY29uZGl0aW9ucyBhcmUgYSBzdWJzZXQgb2YgdGhlIHBvc2l0aXZlIGNvbmRpdGlvbnMsIHRoZQogICAgICAgICAgICAgICAgLy8gcXVlcnkgaXMgZW1wdHkuIEZvciBleGFtcGxlLCBgbm90IHNjcmVlbiBhbmQgKGNvbG9yKWAgaGFzIG5vCiAgICAgICAgICAgICAgICAvLyBpbnRlcnNlY3Rpb24gd2l0aCBgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZClgLgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIGBub3Qgc2NyZWVuIGFuZCAoY29sb3IpYCAqZG9lcyogaW50ZXJzZWN0IHdpdGggYHNjcmVlbiBhbmQKICAgICAgICAgICAgICAgIC8vIChncmlkKWAsIGJlY2F1c2UgaXQgbWVhbnMgYG5vdCAoc2NyZWVuIGFuZCAoY29sb3IpKWAgYW5kIHNvIGl0IGFsbG93cwogICAgICAgICAgICAgICAgLy8gYSBzY3JlZW4gd2l0aCBubyBjb2xvciBidXQgd2l0aCBhIGdyaWQuCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoYXJyYXlfZGlmZigkbmVnYXRpdmVDb25kaXRpb25zLCAkcG9zaXRpdmVDb25kaXRpb25zKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWVkaWFRdWVyeVNpbmdsZXRvbk1lcmdlUmVzdWx0OjplbXB0eTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gTWVkaWFRdWVyeVNpbmdsZXRvbk1lcmdlUmVzdWx0Ojp1bnJlcHJlc2VudGFibGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hlc0FsbFR5cGVzKCkgfHwgJG90aGVyLT5tYXRjaGVzQWxsVHlwZXMoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIE1lZGlhUXVlcnlTaW5nbGV0b25NZXJnZVJlc3VsdDo6dW5yZXByZXNlbnRhYmxlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG91ck1vZGlmaWVyID09PSAnbm90JykgewogICAgICAgICAgICAgICAgJG1vZGlmaWVyID0gJHRoZWlyTW9kaWZpZXI7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGVpclR5cGU7CiAgICAgICAgICAgICAgICAkY29uZGl0aW9ucyA9ICRvdGhlci0+Y29uZGl0aW9uczsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRtb2RpZmllciA9ICRvdXJNb2RpZmllcjsKICAgICAgICAgICAgICAgICR0eXBlID0gJG91clR5cGU7CiAgICAgICAgICAgICAgICAkY29uZGl0aW9ucyA9ICR0aGlzLT5jb25kaXRpb25zOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRvdXJNb2RpZmllciA9PT0gJ25vdCcpIHsKICAgICAgICAgICAgLy8gQ1NTIGhhcyBubyB3YXkgb2YgcmVwcmVzZW50aW5nICJuZWl0aGVyIHNjcmVlbiBub3IgcHJpbnQiLgogICAgICAgICAgICBpZiAoJG91clR5cGUgIT09ICR0aGVpclR5cGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBNZWRpYVF1ZXJ5U2luZ2xldG9uTWVyZ2VSZXN1bHQ6OnVucmVwcmVzZW50YWJsZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1vcmVDb25kaXRpb25zID0gXGNvdW50KCR0aGlzLT5jb25kaXRpb25zKSA+IFxjb3VudCgkb3RoZXItPmNvbmRpdGlvbnMpID8gJHRoaXMtPmNvbmRpdGlvbnMgOiAkb3RoZXItPmNvbmRpdGlvbnM7CiAgICAgICAgICAgICRmZXdlckNvbmRpdGlvbnMgPSBcY291bnQoJHRoaXMtPmNvbmRpdGlvbnMpID4gXGNvdW50KCRvdGhlci0+Y29uZGl0aW9ucykgPyAkb3RoZXItPmNvbmRpdGlvbnMgOiAkdGhpcy0+Y29uZGl0aW9uczsKCiAgICAgICAgICAgIC8vIElmIG9uZSBzZXQgb2YgZmVhdHVyZXMgaXMgYSBzdXBlcnNldCBvZiB0aGUgb3RoZXIsIHVzZSB0aG9zZSBmZWF0dXJlcwogICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXkncmUgc3RyaWN0bHkgbmFycm93ZXIuCiAgICAgICAgICAgIGlmIChlbXB0eShhcnJheV9kaWZmKCRmZXdlckNvbmRpdGlvbnMsICRtb3JlQ29uZGl0aW9ucykpKSB7CiAgICAgICAgICAgICAgICAkbW9kaWZpZXIgPSAkb3VyTW9kaWZpZXI7IC8vICJub3QiCiAgICAgICAgICAgICAgICAkdHlwZSA9ICRvdXJUeXBlOwogICAgICAgICAgICAgICAgJGNvbmRpdGlvbnMgPSAkbW9yZUNvbmRpdGlvbnM7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoZXJlJ3Mgbm8gd2F5IHRvIHJlcHJlc2VudCB0aGUgaW50ZXJzZWN0aW9uLgogICAgICAgICAgICAgICAgcmV0dXJuIE1lZGlhUXVlcnlTaW5nbGV0b25NZXJnZVJlc3VsdDo6dW5yZXByZXNlbnRhYmxlOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5tYXRjaGVzQWxsVHlwZXMoKSkgewogICAgICAgICAgICAkbW9kaWZpZXIgPSAkdGhlaXJNb2RpZmllcjsKICAgICAgICAgICAgLy8gT21pdCB0aGUgdHlwZSBpZiBlaXRoZXIgaW5wdXQgcXVlcnkgZGlkLCBzaW5jZSB0aGF0IGluZGljYXRlcyB0aGF0IHRoZXkKICAgICAgICAgICAgLy8gYXJlbid0IHRhcmdldGluZyBhIGJyb3dzZXIgdGhhdCByZXF1aXJlcyAiYWxsIGFuZCIuCiAgICAgICAgICAgICR0eXBlID0gJG90aGVyLT5tYXRjaGVzQWxsVHlwZXMoKSAmJiAkb3VyVHlwZSA9PT0gbnVsbCA/IG51bGwgOiAkdGhlaXJUeXBlOwogICAgICAgICAgICAkY29uZGl0aW9ucyA9IGFycmF5X21lcmdlKCR0aGlzLT5jb25kaXRpb25zLCAkb3RoZXItPmNvbmRpdGlvbnMpOwogICAgICAgIH0gZWxzZWlmICgkb3RoZXItPm1hdGNoZXNBbGxUeXBlcygpKSB7CiAgICAgICAgICAgICRtb2RpZmllciA9ICRvdXJNb2RpZmllcjsKICAgICAgICAgICAgJHR5cGUgPSAkb3VyVHlwZTsKICAgICAgICAgICAgJGNvbmRpdGlvbnMgPSBhcnJheV9tZXJnZSgkdGhpcy0+Y29uZGl0aW9ucywgJG90aGVyLT5jb25kaXRpb25zKTsKICAgICAgICB9IGVsc2VpZiAoJG91clR5cGUgIT09ICR0aGVpclR5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIE1lZGlhUXVlcnlTaW5nbGV0b25NZXJnZVJlc3VsdDo6ZW1wdHk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG1vZGlmaWVyID0gJG91ck1vZGlmaWVyID8/ICR0aGVpck1vZGlmaWVyOwogICAgICAgICAgICAkdHlwZSA9ICRvdXJUeXBlOwogICAgICAgICAgICAkY29uZGl0aW9ucyA9IGFycmF5X21lcmdlKCR0aGlzLT5jb25kaXRpb25zLCAkb3RoZXItPmNvbmRpdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIENzc01lZGlhUXVlcnk6OnR5cGUoCiAgICAgICAgICAgICR0eXBlID09PSAkb3VyVHlwZSA/ICR0aGlzLT50eXBlIDogJG90aGVyLT50eXBlLAogICAgICAgICAgICAkbW9kaWZpZXIgPT09ICRvdXJNb2RpZmllciA/ICR0aGlzLT5tb2RpZmllciA6ICRvdGhlci0+bW9kaWZpZXIsCiAgICAgICAgICAgICRjb25kaXRpb25zCiAgICAgICAgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIENzc01lZGlhUXVlcnkgJiYgJG90aGVyLT5tb2RpZmllciA9PT0gJHRoaXMtPm1vZGlmaWVyICYmICRvdGhlci0+dHlwZSA9PT0gJHRoaXMtPnR5cGUgJiYgJG90aGVyLT5jb25kaXRpb25zID09PSAkdGhpcy0+Y29uZGl0aW9uczsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssMediaRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQSBwbGFpbiBDU1MgYEBtZWRpYWAgcnVsZS4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgQ3NzTWVkaWFSdWxlIGV4dGVuZHMgQ3NzUGFyZW50Tm9kZQp7CiAgICAvKioKICAgICAqIFRoZSBxdWVyaWVzIGZvciB0aGlzIHJ1bGUuCiAgICAgKgogICAgICogVGhpcyBpcyBuZXZlciBlbXB0eS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8Q3NzTWVkaWFRdWVyeT4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFF1ZXJpZXMoKTogYXJyYXk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssNode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxBc3ROb2RlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcQ3NzVmlzaXRvcjsKCi8qKgogKiBBIHN0YXRlbWVudCBpbiBhIHBsYWluIENTUyBzeW50YXggdHJlZS4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgQ3NzTm9kZSBleHRlbmRzIEFzdE5vZGUKewogICAgLyoqCiAgICAgKiBUaGUgbm9kZSB0aGF0IGNvbnRhaW5zIHRoaXMsIG9yIGBudWxsYCBmb3IgdGhlIHJvb3Qge0BzZWUgQ3NzU3R5bGVzaGVldH0gbm9kZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcmVudCgpOiA/Q3NzUGFyZW50Tm9kZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGxhc3Qgbm9kZSBpbiBhIG5lc3RlZCBTYXNzIHRyZWUgdGhhdAogICAgICogZ290IGZsYXR0ZW5lZCBkdXJpbmcgZXZhbHVhdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzR3JvdXBFbmQoKTogYm9vbDsKCiAgICAvKioKICAgICAqIENhbGxzIHRoZSBhcHByb3ByaWF0ZSB2aXNpdCBtZXRob2Qgb24gJHZpc2l0b3IuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gQ3NzVmlzaXRvcjxUPiAkdmlzaXRvcgogICAgICoKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KENzc1Zpc2l0b3IgJHZpc2l0b3IpOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGlzIGludmlzaWJsZSBhbmQgd29uJ3QgYmUgZW1pdHRlZCB0byB0aGUgY29tcGlsZWQgc3R5bGVzaGVldC4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IGNvbnNpZGVyIG5vZGVzIHRoYXQgY29udGFpbiBsb3VkIGNvbW1lbnRzIHRvIGJlCiAgICAgKiBpbnZpc2libGUgZXZlbiB0aG91Z2ggdGhleSdyZSBvbWl0dGVkIGluIGNvbXByZXNzZWQgbW9kZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzSW52aXNpYmxlKCk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgbm9kZSB3b3VsZCBiZSBpbnZpc2libGUgZXZlbiBpZiBzdHlsZSBydWxlIHNlbGVjdG9ycyB3aXRoaW4gaXQKICAgICAqIGRpZG4ndCBoYXZlIGJvZ3VzIGNvbWJpbmF0b3JzLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgY29uc2lkZXIgbm9kZXMgdGhhdCBjb250YWluIGxvdWQgY29tbWVudHMgdG8gYmUKICAgICAqIGludmlzaWJsZSBldmVuIHRob3VnaCB0aGV5J3JlIG9taXR0ZWQgaW4gY29tcHJlc3NlZCBtb2RlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNJbnZpc2libGVPdGhlclRoYW5Cb2d1c0NvbWJpbmF0b3JzKCk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgbm9kZSB3aWxsIGJlIGludmlzaWJsZSB3aGVuIGxvdWQgY29tbWVudHMgYXJlIHN0cmlwcGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNJbnZpc2libGVIaWRpbmdDb21tZW50cygpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssParentNode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQSB7QHNlZSBDc3NOb2RlfSB0aGF0IGNhbiBoYXZlIGNoaWxkIHN0YXRlbWVudHMuCiAqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIENzc1BhcmVudE5vZGUgZXh0ZW5kcyBDc3NOb2RlCnsKICAgIC8qKgogICAgICogVGhlIGNoaWxkIHN0YXRlbWVudHMgb2YgdGhpcyBub2RlLgogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxDc3NOb2RlPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2hpbGRyZW4oKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBydWxlIGhhcyBubyBjaGlsZHJlbiBhbmQgc2hvdWxkIGJlIGVtaXR0ZWQgd2l0aG91dCBjdXJseQogICAgICogYnJhY2VzLgogICAgICoKICAgICAqIFRoaXMgaW1wbGllcyBgY2hpbGRyZW4uaXNFbXB0eWAsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBub3QgdHJ1ZeKAlGZvciBhIHJ1bGUKICAgICAqIGxpa2UgYEBmb28ge31gLCB7QHNlZSBnZXRDaGlsZHJlbn0gaXMgZW1wdHkgYnV0IHtAc2VlIGlzQ2hpbGRsZXNzfSBpcyBgZmFsc2VgLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDaGlsZGxlc3MoKTogYm9vbDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssStyleRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3Rvckxpc3Q7CgovKioKICogQSBwbGFpbiBDU1Mgc3R5bGUgcnVsZS4KKiAgKgoqICAqIFRoaXMgYXBwbGllcyBzdHlsZSBkZWNsYXJhdGlvbnMgdG8gZWxlbWVudHMgdGhhdCBtYXRjaCBhIGdpdmVuIHNlbGVjdG9yLgoqICAqIE5vdGUgdGhhdCB0aGlzIGlzbid0ICpzdHJpY3RseSogcGxhaW4gQ1NTLCBzaW5jZSB7QHNlZSBnZXRTZWxlY3Rvcn0gbWF5IHN0aWxsCiogICogY29udGFpbiBwbGFjZWhvbGRlciBzZWxlY3RvcnMuCiAqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIENzc1N0eWxlUnVsZSBleHRlbmRzIENzc1BhcmVudE5vZGUKewogICAgLyoqCiAgICAgKiBUaGUgc2VsZWN0b3IgZm9yIHRoaXMgcnVsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlbGVjdG9yKCk6IFNlbGVjdG9yTGlzdDsKCiAgICAvKioKICAgICAqIFRoZSBzZWxlY3RvciBmb3IgdGhpcyBydWxlLCBiZWZvcmUgYW55IGV4dGVuc2lvbnMgd2VyZSBhcHBsaWVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JpZ2luYWxTZWxlY3RvcigpOiBTZWxlY3Rvckxpc3Q7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgc3R5bGUgcnVsZSB3YXMgb3JpZ2luYWxseSBkZWZpbmVkIGluIGEgcGxhaW4gQ1NTIHN0eWxlc2hlZXQuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0Zyb21QbGFpbkNzcygpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssStylesheet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQSBwbGFpbiBDU1Mgc3R5bGVzaGVldC4KICoKICogVGhpcyBpcyB0aGUgcm9vdCBwbGFpbiBDU1Mgbm9kZS4gSXQgY29udGFpbnMgdG9wLWxldmVsIHN0YXRlbWVudHMuCiAqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIENzc1N0eWxlc2hlZXQgZXh0ZW5kcyBDc3NQYXJlbnROb2RlCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssSupportsRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQSBwbGFpbiBDU1MgYEBzdXBwb3J0c2AgcnVsZS4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgQ3NzU3VwcG9ydHNSdWxlIGV4dGVuZHMgQ3NzUGFyZW50Tm9kZQp7CiAgICAvKioKICAgICAqIFRoZSBzdXBwb3J0cyBjb25kaXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBDc3NWYWx1ZTxzdHJpbmc+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25kaXRpb24oKTogQ3NzVmFsdWU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/CssValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxBc3ROb2RlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21iaW5hdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlVXRpbDsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSB2YWx1ZSBpbiBhIHBsYWluIENTUyB0cmVlLgogKgogKiBUaGlzIGlzIHVzZWQgdG8gYXNzb2NpYXRlIGEgc3BhbiB3aXRoIGEgdmFsdWUgdGhhdCBkb2Vzbid0IG90aGVyd2lzZSB0cmFjawogKiBpdHMgc3Bhbi4gSXQgaGFzIHZhbHVlIGVxdWFsaXR5IHNlbWFudGljcy4KICoKICogQHRlbXBsYXRlLWNvdmFyaWFudCBUIG9mIHN0cmluZ3xcU3RyaW5nYWJsZXxhcnJheTxzdHJpbmd8XFN0cmluZ2FibGU+fENvbWJpbmF0b3J8bnVsbAogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIENzc1ZhbHVlIGltcGxlbWVudHMgQXN0Tm9kZSwgRXF1YXRhYmxlCnsKICAgIC8qKgogICAgICogQHZhciBUCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgbWl4ZWQgJHZhbHVlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgLyoqCiAgICAgKiBAcGFyYW0gVCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KG1peGVkICR2YWx1ZSwgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCk6IG1peGVkCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIENzc1ZhbHVlICYmIEVxdWF0YWJsZVV0aWw6OmVxdWFscygkdGhpcy0+dmFsdWUsICRvdGhlci0+dmFsdWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgaW5zdGFuY2VvZiBDb21iaW5hdG9yKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmdldFRleHQoKTsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfYXJyYXkoJHRoaXMtPnZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gaW1wbG9kZSgkdGhpcy0+dmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChzdHJpbmcpICR0aGlzLT52YWx1ZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/IsInvisibleVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcRXZlcnlDc3NWaXNpdG9yOwoKLyoqCiAqIFRoZSB2aXNpdG9yIHVzZWQgdG8gaW1wbGVtZW50IHtAc2VlIENzc05vZGU6OmlzSW52aXNpYmxlfQogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIElzSW52aXNpYmxlVmlzaXRvciBleHRlbmRzIEV2ZXJ5Q3NzVmlzaXRvcgp7CiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8gY29uc2lkZXIgc2VsZWN0b3JzIHdpdGggYm9ndXMgY29tYmluYXRvcnMgaW52aXNpYmxlLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGluY2x1ZGVCb2d1czsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8gY29uc2lkZXIgY29tbWVudHMgaW52aXNpYmxlLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGluY2x1ZGVDb21tZW50czsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYm9vbCAkaW5jbHVkZUJvZ3VzLCBib29sICRpbmNsdWRlQ29tbWVudHMpCiAgICB7CiAgICAgICAgJHRoaXMtPmluY2x1ZGVCb2d1cyA9ICRpbmNsdWRlQm9ndXM7CiAgICAgICAgJHRoaXMtPmluY2x1ZGVDb21tZW50cyA9ICRpbmNsdWRlQ29tbWVudHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzQXRSdWxlKENzc0F0UnVsZSAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICAvLyBBbiB1bmtub3duIGF0LXJ1bGUgaXMgbmV2ZXIgaW52aXNpYmxlLiBCZWNhdXNlIHdlIGRvbid0IGtub3cgdGhlIHNlbWFudGljcwogICAgICAgIC8vIG9mIHVua25vd24gcnVsZXMsIHdlIGNhbid0IGd1YXJhbnRlZSB0aGF0IChmb3IgZXhhbXBsZSkgYEBmb28ge31gIGlzbid0CiAgICAgICAgLy8gbWVhbmluZ2Z1bC4KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzQ29tbWVudChDc3NDb21tZW50ICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aW5jbHVkZUNvbW1lbnRzICYmICEkbm9kZS0+aXNQcmVzZXJ2ZWQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdHlsZVJ1bGUoQ3NzU3R5bGVSdWxlICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPmluY2x1ZGVCb2d1cyA/ICRub2RlLT5nZXRTZWxlY3RvcigpLT5pc0ludmlzaWJsZSgpIDogJG5vZGUtPmdldFNlbGVjdG9yKCktPmlzSW52aXNpYmxlT3RoZXJUaGFuQm9ndXNDb21iaW5hdG9ycygpKSB8fCBwYXJlbnQ6OnZpc2l0Q3NzU3R5bGVSdWxlKCRub2RlKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/MediaQueryMergeResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgSmlyaVB1ZGlsXFNlYWxlZENsYXNzZXNcU2VhbGVkOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KI1tTZWFsZWQocGVybWl0czogW0Nzc01lZGlhUXVlcnk6OmNsYXNzLCBNZWRpYVF1ZXJ5U2luZ2xldG9uTWVyZ2VSZXN1bHQ6OmNsYXNzXSldCmludGVyZmFjZSBNZWRpYVF1ZXJ5TWVyZ2VSZXN1bHQKewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/MediaQuerySingletonMergeResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQGludGVybmFsCiAqLwplbnVtIE1lZGlhUXVlcnlTaW5nbGV0b25NZXJnZVJlc3VsdCBpbXBsZW1lbnRzIE1lZGlhUXVlcnlNZXJnZVJlc3VsdAp7CiAgICBjYXNlIGVtcHR5OwogICAgY2FzZSB1bnJlcHJlc2VudGFibGU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssAtRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXE1vZGlmaWFibGVDc3NWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIG1vZGlmaWFibGUgdmVyc2lvbiBvZiB7QHNlZSBDc3NBdFJ1bGV9IGZvciB1c2UgaW4gdGhlIGV2YWx1YXRpb24gc3RlcC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNb2RpZmlhYmxlQ3NzQXRSdWxlIGV4dGVuZHMgTW9kaWZpYWJsZUNzc1BhcmVudE5vZGUgaW1wbGVtZW50cyBDc3NBdFJ1bGUKewogICAgLyoqCiAgICAgKiBAdmFyIENzc1ZhbHVlPHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBDc3NWYWx1ZSAkbmFtZTsKCiAgICAvKioKICAgICAqIEB2YXIgQ3NzVmFsdWU8c3RyaW5nPnxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP0Nzc1ZhbHVlICR2YWx1ZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGNoaWxkbGVzczsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIENzc1ZhbHVlPHN0cmluZz4gJG5hbWUKICAgICAqIEBwYXJhbSBDc3NWYWx1ZTxzdHJpbmc+fG51bGwgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDc3NWYWx1ZSAkbmFtZSwgRmlsZVNwYW4gJHNwYW4sIGJvb2wgJGNoaWxkbGVzcyA9IGZhbHNlLCA/Q3NzVmFsdWUgJHZhbHVlID0gbnVsbCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgICAgICR0aGlzLT5uYW1lID0gJG5hbWU7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgICAgICR0aGlzLT5jaGlsZGxlc3MgPSAkY2hpbGRsZXNzOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogQ3NzVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCk6ID9Dc3NWYWx1ZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzQ2hpbGRsZXNzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkbGVzczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KE1vZGlmaWFibGVDc3NWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRDc3NBdFJ1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHNJZ25vcmluZ0NoaWxkcmVuKE1vZGlmaWFibGVDc3NOb2RlICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgTW9kaWZpYWJsZUNzc0F0UnVsZSAmJiBFcXVhdGFibGVVdGlsOjplcXVhbHMoJHRoaXMtPm5hbWUsICRvdGhlci0+bmFtZSkgJiYgRXF1YXRhYmxlVXRpbDo6ZXF1YWxzKCR0aGlzLT52YWx1ZSwgJG90aGVyLT52YWx1ZSkgJiYgJHRoaXMtPmNoaWxkbGVzcyA9PT0gJG90aGVyLT5jaGlsZGxlc3M7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvcHlXaXRob3V0Q2hpbGRyZW4oKTogTW9kaWZpYWJsZUNzc0F0UnVsZQogICAgewogICAgICAgIHJldHVybiBuZXcgTW9kaWZpYWJsZUNzc0F0UnVsZSgkdGhpcy0+bmFtZSwgJHRoaXMtPnNwYW4sICR0aGlzLT5jaGlsZGxlc3MsICR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZENoaWxkKE1vZGlmaWFibGVDc3NOb2RlICRjaGlsZCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNoaWxkbGVzcykgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgYWRkIGEgY2hpbGQgaW4gYSBjaGlsZGxlc3MgYXQtcnVsZS4nKTsKICAgICAgICB9CgogICAgICAgIHBhcmVudDo6YWRkQ2hpbGQoJGNoaWxkKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssComment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcTW9kaWZpYWJsZUNzc1Zpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgbW9kaWZpYWJsZSB2ZXJzaW9uIG9mIHtAc2VlIENzc0NvbW1lbnR9IGZvciB1c2UgaW4gdGhlIGV2YWx1YXRpb24gc3RlcC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNb2RpZmlhYmxlQ3NzQ29tbWVudCBleHRlbmRzIE1vZGlmaWFibGVDc3NOb2RlIGltcGxlbWVudHMgQ3NzQ29tbWVudAp7CiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkdGV4dDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJHRleHQsIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT50ZXh0ID0gJHRleHQ7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGV4dCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRleHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzUHJlc2VydmVkKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRleHRbMl0gPT09ICchJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KE1vZGlmaWFibGVDc3NWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRDc3NDb21tZW50KCR0aGlzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssDeclaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFN0YWNrVHJhY2VcVHJhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXE1vZGlmaWFibGVDc3NWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIG1vZGlmaWFibGUgdmVyc2lvbiBvZiB7QHNlZSBDc3NEZWNsYXJhdGlvbn0gZm9yIHVzZSBpbiB0aGUgZXZhbHVhdGlvbiBzdGVwLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE1vZGlmaWFibGVDc3NEZWNsYXJhdGlvbiBleHRlbmRzIE1vZGlmaWFibGVDc3NOb2RlIGltcGxlbWVudHMgQ3NzRGVjbGFyYXRpb24KewogICAgLyoqCiAgICAgKiBAdmFyIENzc1ZhbHVlPHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBDc3NWYWx1ZSAkbmFtZTsKCiAgICAvKioKICAgICAqIEB2YXIgQ3NzVmFsdWU8VmFsdWU+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgQ3NzVmFsdWUgJHZhbHVlOwoKICAgIC8qKgogICAgICogQHZhciBsaXN0PENzc1N0eWxlUnVsZT4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkaW50ZXJsZWF2ZWRSdWxlczsKCiAgICBwcml2YXRlIHJlYWRvbmx5ID9UcmFjZSAkdHJhY2U7CgogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRwYXJzZWRBc0N1c3RvbVByb3BlcnR5OwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHZhbHVlU3BhbkZvck1hcDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIENzc1ZhbHVlPHN0cmluZz4gJG5hbWUKICAgICAqIEBwYXJhbSBDc3NWYWx1ZTxWYWx1ZT4gJHZhbHVlCiAgICAgKiBAcGFyYW0gbGlzdDxDc3NTdHlsZVJ1bGU+ICRpbnRlcmxlYXZlZFJ1bGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDc3NWYWx1ZSAkbmFtZSwgQ3NzVmFsdWUgJHZhbHVlLCBGaWxlU3BhbiAkc3BhbiwgYm9vbCAkcGFyc2VkQXNDdXN0b21Qcm9wZXJ0eSwgYXJyYXkgJGludGVybGVhdmVkUnVsZXMgPSBbXSwgP1RyYWNlICR0cmFjZSA9IG51bGwsID9GaWxlU3BhbiAkdmFsdWVTcGFuRm9yTWFwID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgICAgICAkdGhpcy0+cGFyc2VkQXNDdXN0b21Qcm9wZXJ0eSA9ICRwYXJzZWRBc0N1c3RvbVByb3BlcnR5OwogICAgICAgICR0aGlzLT5pbnRlcmxlYXZlZFJ1bGVzID0gJGludGVybGVhdmVkUnVsZXM7CiAgICAgICAgJHRoaXMtPnRyYWNlID0gJHRyYWNlOwogICAgICAgICR0aGlzLT52YWx1ZVNwYW5Gb3JNYXAgPSAkdmFsdWVTcGFuRm9yTWFwID8/ICR2YWx1ZS0+Z2V0U3BhbigpOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CgogICAgICAgIGlmICgkcGFyc2VkQXNDdXN0b21Qcm9wZXJ0eSkgewogICAgICAgICAgICBpZiAoISR0aGlzLT5pc0N1c3RvbVByb3BlcnR5KCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdwYXJzZWRBc0N1c3RvbVByb3BlcnR5IG11c3QgYmUgZmFsc2UgaWYgbmFtZSBkb2VzblwndCBiZWdpbiB3aXRoICItLSIuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghJHZhbHVlLT5nZXRWYWx1ZSgpIGluc3RhbmNlb2YgU2Fzc1N0cmluZykgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignSWYgcGFyc2VkQXNDdXN0b21Qcm9wZXJ0eSBpcyB0cnVlLCB2YWx1ZSBtdXN0IGNvbnRhaW4gYSBTYXNzU3RyaW5nICh3YXMgJXMpLicsIGdldF9kZWJ1Z190eXBlKCR2YWx1ZS0+Z2V0VmFsdWUoKSkpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpOiBDc3NWYWx1ZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKTogQ3NzVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnRlcmxlYXZlZFJ1bGVzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pbnRlcmxlYXZlZFJ1bGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUcmFjZSgpOiA/VHJhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRyYWNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1BhcnNlZEFzQ3VzdG9tUHJvcGVydHkoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFyc2VkQXNDdXN0b21Qcm9wZXJ0eTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVTcGFuRm9yTWFwKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZVNwYW5Gb3JNYXA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzQ3VzdG9tUHJvcGVydHkoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBzdHJfc3RhcnRzX3dpdGgoJHRoaXMtPm5hbWUtPmdldFZhbHVlKCksICctLScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoTW9kaWZpYWJsZUNzc1Zpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdENzc0RlY2xhcmF0aW9uKCR0aGlzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssImport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcTW9kaWZpYWJsZUNzc1Zpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgbW9kaWZpYWJsZSB2ZXJzaW9uIG9mIHtAc2VlIENzc0ltcG9ydH0gZm9yIHVzZSBpbiB0aGUgZXZhbHVhdGlvbiBzdGVwLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE1vZGlmaWFibGVDc3NJbXBvcnQgZXh0ZW5kcyBNb2RpZmlhYmxlQ3NzTm9kZSBpbXBsZW1lbnRzIENzc0ltcG9ydAp7CiAgICAvKioKICAgICAqIFRoZSBVUkwgYmVpbmcgaW1wb3J0ZWQuCiAgICAgKgogICAgICogVGhpcyBpbmNsdWRlcyBxdW90ZXMuCiAgICAgKgogICAgICogQHZhciBDc3NWYWx1ZTxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgQ3NzVmFsdWUgJHVybDsKCiAgICAvKioKICAgICAqIEB2YXIgQ3NzVmFsdWU8c3RyaW5nPnxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP0Nzc1ZhbHVlICRtb2RpZmllcnM7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBDc3NWYWx1ZTxzdHJpbmc+ICR1cmwKICAgICAqIEBwYXJhbSBDc3NWYWx1ZTxzdHJpbmc+fG51bGwgJG1vZGlmaWVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ3NzVmFsdWUgJHVybCwgRmlsZVNwYW4gJHNwYW4sID9Dc3NWYWx1ZSAkbW9kaWZpZXJzID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+dXJsID0gJHVybDsKICAgICAgICAkdGhpcy0+bW9kaWZpZXJzID0gJG1vZGlmaWVyczsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVcmwoKTogQ3NzVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnVybDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kaWZpZXJzKCk6ID9Dc3NWYWx1ZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kaWZpZXJzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoTW9kaWZpYWJsZUNzc1Zpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdENzc0ltcG9ydCgkdGhpcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssKeyframeBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXE1vZGlmaWFibGVDc3NWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIG1vZGlmaWFibGUgdmVyc2lvbiBvZiB7QHNlZSBDc3NLZXlmcmFtZUJsb2NrfSBmb3IgdXNlIGluIHRoZSBldmFsdWF0aW9uIHN0ZXAuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTW9kaWZpYWJsZUNzc0tleWZyYW1lQmxvY2sgZXh0ZW5kcyBNb2RpZmlhYmxlQ3NzUGFyZW50Tm9kZSBpbXBsZW1lbnRzIENzc0tleWZyYW1lQmxvY2sKewogICAgLyoqCiAgICAgKiBAdmFyIENzc1ZhbHVlPGxpc3Q8c3RyaW5nPj4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBDc3NWYWx1ZSAkc2VsZWN0b3I7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBDc3NWYWx1ZTxsaXN0PHN0cmluZz4+ICRzZWxlY3RvcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ3NzVmFsdWUgJHNlbGVjdG9yLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAgICAgJHRoaXMtPnNlbGVjdG9yID0gJHNlbGVjdG9yOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlbGVjdG9yKCk6IENzc1ZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RvcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KE1vZGlmaWFibGVDc3NWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRDc3NLZXlmcmFtZUJsb2NrKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzSWdub3JpbmdDaGlsZHJlbihNb2RpZmlhYmxlQ3NzTm9kZSAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIE1vZGlmaWFibGVDc3NLZXlmcmFtZUJsb2NrICYmIEVxdWF0YWJsZVV0aWw6Omxpc3RFcXVhbHMoJHRoaXMtPnNlbGVjdG9yLT5nZXRWYWx1ZSgpLCAkb3RoZXItPnNlbGVjdG9yLT5nZXRWYWx1ZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29weVdpdGhvdXRDaGlsZHJlbigpOiBNb2RpZmlhYmxlQ3NzS2V5ZnJhbWVCbG9jawogICAgewogICAgICAgIHJldHVybiBuZXcgTW9kaWZpYWJsZUNzc0tleWZyYW1lQmxvY2soJHRoaXMtPnNlbGVjdG9yLCAkdGhpcy0+c3Bhbik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssMediaRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXE1vZGlmaWFibGVDc3NWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIG1vZGlmaWFibGUgdmVyc2lvbiBvZiB7QHNlZSBDc3NNZWRpYVJ1bGV9IGZvciB1c2UgaW4gdGhlIGV2YWx1YXRpb24gc3RlcC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNb2RpZmlhYmxlQ3NzTWVkaWFSdWxlIGV4dGVuZHMgTW9kaWZpYWJsZUNzc1BhcmVudE5vZGUgaW1wbGVtZW50cyBDc3NNZWRpYVJ1bGUKewogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8Q3NzTWVkaWFRdWVyeT4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkcXVlcmllczsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8Q3NzTWVkaWFRdWVyeT4gJHF1ZXJpZXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRxdWVyaWVzLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAgICAgJHRoaXMtPnF1ZXJpZXMgPSAkcXVlcmllczsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyaWVzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5xdWVyaWVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoTW9kaWZpYWJsZUNzc1Zpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdENzc01lZGlhUnVsZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFsc0lnbm9yaW5nQ2hpbGRyZW4oTW9kaWZpYWJsZUNzc05vZGUgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBNb2RpZmlhYmxlQ3NzTWVkaWFSdWxlICYmIEVxdWF0YWJsZVV0aWw6Omxpc3RFcXVhbHMoJHRoaXMtPnF1ZXJpZXMsICRvdGhlci0+cXVlcmllcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvcHlXaXRob3V0Q2hpbGRyZW4oKTogTW9kaWZpYWJsZUNzc01lZGlhUnVsZQogICAgewogICAgICAgIHJldHVybiBuZXcgTW9kaWZpYWJsZUNzc01lZGlhUnVsZSgkdGhpcy0+cXVlcmllcywgJHRoaXMtPnNwYW4pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssNode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFNlcmlhbGl6ZXJcU2VyaWFsaXplcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXE1vZGlmaWFibGVDc3NWaXNpdG9yOwoKLyoqCiAqIEEgbW9kaWZpYWJsZSB2ZXJzaW9uIG9mIHtAc2VlIENzc05vZGV9LgogKgogKiBBbG1vc3QgYWxsIENTUyBub2RlcyBhcmUgdGhlIG1vZGlmaWFibGUgY2xhc3NlcyB1bmRlciB0aGUgY292ZXJzLiBIb3dldmVyLAogKiBtb2RpZmljYXRpb24gc2hvdWxkIG9ubHkgYmUgZG9uZSB3aXRoaW4gdGhlIGV2YWx1YXRpb24gc3RlcCwgc28gdGhlCiAqIHVubW9kaWZpYWJsZSB0eXBlcyBhcmUgdXNlZCBlbHNld2hlcmUgdG8gZW5mb3JjZSB0aGF0IGNvbnN0cmFpbnQuCiAqCiAqIEBpbnRlcm5hbAogKi8KYWJzdHJhY3QgY2xhc3MgTW9kaWZpYWJsZUNzc05vZGUgaW1wbGVtZW50cyBDc3NOb2RlCnsKICAgIHByaXZhdGUgP01vZGlmaWFibGVDc3NQYXJlbnROb2RlICRwYXJlbnQgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIGluZGV4IG9mIGAkdGhpc2AgaW4gcGFyZW50J3MgY2hpbGRyZW4uCiAgICAgKgogICAgICogVGhpcyBtYWtlcyB7QHNlZSByZW1vdmV9IG1vcmUgZWZmaWNpZW50LgogICAgICovCiAgICBwcml2YXRlID9pbnQgJGluZGV4SW5QYXJlbnQgPSBudWxsOwoKICAgIHByaXZhdGUgYm9vbCAkZ3JvdXBFbmQgPSBmYWxzZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyZW50KCk6ID9Nb2RpZmlhYmxlQ3NzUGFyZW50Tm9kZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFyZW50OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZXRQYXJlbnQoTW9kaWZpYWJsZUNzc1BhcmVudE5vZGUgJHBhcmVudCwgaW50ICRpbmRleEluUGFyZW50KTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5wYXJlbnQgPSAkcGFyZW50OwogICAgICAgICR0aGlzLT5pbmRleEluUGFyZW50ID0gJGluZGV4SW5QYXJlbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzR3JvdXBFbmQoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z3JvdXBFbmQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldEdyb3VwRW5kKGJvb2wgJGdyb3VwRW5kKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5ncm91cEVuZCA9ICRncm91cEVuZDsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBub2RlIGhhcyBhIHZpc2libGUgc2libGluZyBhZnRlciBpdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0ZvbGxvd2luZ1NpYmxpbmcoKTogYm9vbAogICAgewogICAgICAgICRwYXJlbnQgPSAkdGhpcy0+cGFyZW50OwoKICAgICAgICBpZiAoJHBhcmVudCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBhc3NlcnQoJHRoaXMtPmluZGV4SW5QYXJlbnQgIT09IG51bGwpOwogICAgICAgICRzaWJsaW5ncyA9ICRwYXJlbnQtPmdldENoaWxkcmVuKCk7CgogICAgICAgIGZvciAoJGkgPSAkdGhpcy0+aW5kZXhJblBhcmVudCArIDE7ICRpIDwgXGNvdW50KCRzaWJsaW5ncyk7ICRpKyspIHsKICAgICAgICAgICAgJHNpYmxpbmcgPSAkc2libGluZ3NbJGldOwoKICAgICAgICAgICAgaWYgKCEkc2libGluZy0+aXNJbnZpc2libGUoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNJbnZpc2libGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWNjZXB0KG5ldyBJc0ludmlzaWJsZVZpc2l0b3IodHJ1ZSwgZmFsc2UpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNJbnZpc2libGVPdGhlclRoYW5Cb2d1c0NvbWJpbmF0b3JzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFjY2VwdChuZXcgSXNJbnZpc2libGVWaXNpdG9yKGZhbHNlLCBmYWxzZSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0ludmlzaWJsZUhpZGluZ0NvbW1lbnRzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFjY2VwdChuZXcgSXNJbnZpc2libGVWaXNpdG9yKHRydWUsIHRydWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGxzIHRoZSBhcHByb3ByaWF0ZSB2aXNpdCBtZXRob2Qgb24gJHZpc2l0b3IuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gTW9kaWZpYWJsZUNzc1Zpc2l0b3I8VD4gJHZpc2l0b3IKICAgICAqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChNb2RpZmlhYmxlQ3NzVmlzaXRvciAkdmlzaXRvcik7CgogICAgLyoqCiAgICAgKiBSZW1vdmVzICR0aGlzIGZyb20ge0BzZWUgcGFyZW50fSdzIGNoaWxkIGxpc3QuCiAgICAgKgogICAgICogQHRocm93cyBcTG9naWNFeGNlcHRpb24gaWYge0BzZWUgcGFyZW50fSBpcyBgbnVsbGAuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmUoKTogdm9pZAogICAgewogICAgICAgICRwYXJlbnQgPSAkdGhpcy0+cGFyZW50OwoKICAgICAgICBpZiAoJHBhcmVudCA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJDYW4ndCByZW1vdmUgYSBub2RlIHdpdGhvdXQgYSBwYXJlbnQuIik7CiAgICAgICAgfQoKICAgICAgICBhc3NlcnQoJHRoaXMtPmluZGV4SW5QYXJlbnQgIT09IG51bGwpOwoKICAgICAgICAkcGFyZW50LT5yZW1vdmVDaGlsZEF0KCR0aGlzLT5pbmRleEluUGFyZW50KTsKICAgICAgICAkY2hpbGRyZW4gPSAkcGFyZW50LT5nZXRDaGlsZHJlbigpOwoKICAgICAgICBmb3IgKCRpID0gJHRoaXMtPmluZGV4SW5QYXJlbnQ7ICRpIDwgXGNvdW50KCRjaGlsZHJlbik7ICRpKyspIHsKICAgICAgICAgICAgJGNoaWxkID0gJGNoaWxkcmVuWyRpXTsKICAgICAgICAgICAgYXNzZXJ0KCRjaGlsZC0+aW5kZXhJblBhcmVudCAhPT0gbnVsbCk7CiAgICAgICAgICAgICRjaGlsZC0+aW5kZXhJblBhcmVudCA9ICRjaGlsZC0+aW5kZXhJblBhcmVudCAtIDE7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5wYXJlbnQgPSBudWxsOwogICAgICAgICR0aGlzLT5pbmRleEluUGFyZW50ID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVzZXRQYXJlbnRSZWZlcmVuY2VzKCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+cGFyZW50ID0gbnVsbDsKICAgICAgICAkdGhpcy0+aW5kZXhJblBhcmVudCA9IG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgkdGhpcywgdHJ1ZSktPmNzczsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssParentNode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7CgovKioKICogQSBtb2RpZmlhYmxlIHZlcnNpb24gb2Yge0BzZWUgQ3NzUGFyZW50Tm9kZX0gZm9yIHVzZSBpbiB0aGUgZXZhbHVhdGlvbiBzdGVwLgogKgogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIE1vZGlmaWFibGVDc3NQYXJlbnROb2RlIGV4dGVuZHMgTW9kaWZpYWJsZUNzc05vZGUgaW1wbGVtZW50cyBDc3NQYXJlbnROb2RlCnsKICAgIC8qKgogICAgICogQHZhciBsaXN0PE1vZGlmaWFibGVDc3NOb2RlPgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICRjaGlsZHJlbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PE1vZGlmaWFibGVDc3NOb2RlPiAkY2hpbGRyZW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRjaGlsZHJlbiA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5jaGlsZHJlbiA9ICRjaGlsZHJlbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxNb2RpZmlhYmxlQ3NzTm9kZT4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENoaWxkcmVuKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jaGlsZHJlbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDaGlsZGxlc3MoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkdGhpcyBpcyBlcXVhbCB0byAkb3RoZXIsIGlnbm9yaW5nIHRoZWlyIGNoaWxkIG5vZGVzLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzSWdub3JpbmdDaGlsZHJlbihNb2RpZmlhYmxlQ3NzTm9kZSAkb3RoZXIpOiBib29sOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgJHRoaXMgd2l0aCBhbiBlbXB0eSB7QHNlZSBjaGlsZHJlbn0gbGlzdC4KICAgICAqCiAgICAgKiBUaGlzIGlzICpub3QqIGEgZGVlcCBjb3B5LiBJZiBvdGhlciBwYXJ0cyBvZiB0aGlzIG5vZGUgYXJlIG1vZGlmaWFibGUsCiAgICAgKiB0aGV5IGFyZSBzaGFyZWQgYmV0d2VlbiB0aGUgbmV3IGFuZCBvbGQgbm9kZXMuCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBjb3B5V2l0aG91dENoaWxkcmVuKCk6IE1vZGlmaWFibGVDc3NQYXJlbnROb2RlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDaGlsZChNb2RpZmlhYmxlQ3NzTm9kZSAkY2hpbGQpOiB2b2lkCiAgICB7CiAgICAgICAgJGNoaWxkLT5zZXRQYXJlbnQoJHRoaXMsIFxjb3VudCgkdGhpcy0+Y2hpbGRyZW4pKTsKICAgICAgICAkdGhpcy0+Y2hpbGRyZW5bXSA9ICRjaGlsZDsKICAgIH0KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRBdChpbnQgJGluZGV4KTogdm9pZAogICAgewogICAgICAgIGFycmF5X3NwbGljZSgkdGhpcy0+Y2hpbGRyZW4sICRpbmRleCwgMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXN0cnVjdGl2ZWx5IHJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20ge0BzZWUgY2hpbGRyZW59LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xlYXJDaGlsZHJlbigpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNoaWxkcmVuIGFzICRjaGlsZCkgewogICAgICAgICAgICAkY2hpbGQtPnJlc2V0UGFyZW50UmVmZXJlbmNlcygpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+Y2hpbGRyZW4gPSBbXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssStyleRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3Rvckxpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxCb3g7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGVVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcTW9kaWZpYWJsZUNzc1Zpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgbW9kaWZpYWJsZSB2ZXJzaW9uIG9mIHtAc2VlIENzc1N0eWxlUnVsZX0gZm9yIHVzZSBpbiB0aGUgZXZhbHVhdGlvbiBzdGVwLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE1vZGlmaWFibGVDc3NTdHlsZVJ1bGUgZXh0ZW5kcyBNb2RpZmlhYmxlQ3NzUGFyZW50Tm9kZSBpbXBsZW1lbnRzIENzc1N0eWxlUnVsZQp7CiAgICAvKioKICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBtb2RpZmlhYmxlIHNlbGVjdG9yIGxpc3QgcHJvdmlkZWQgYnkgdGhlIGV4dGVuc2lvbgogICAgICogc3RvcmUsIHdoaWNoIG1heSB1cGRhdGUgaXQgb3ZlciB0aW1lIGFzIG5ldyBleHRlbnNpb25zIGFyZSBhcHBsaWVkLgogICAgICoKICAgICAqIEB2YXIgQm94PFNlbGVjdG9yTGlzdD4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBCb3ggJHNlbGVjdG9yOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgU2VsZWN0b3JMaXN0ICRvcmlnaW5hbFNlbGVjdG9yOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRmcm9tUGxhaW5Dc3M7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQm94PFNlbGVjdG9yTGlzdD4gJHNlbGVjdG9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChCb3ggJHNlbGVjdG9yLCBGaWxlU3BhbiAkc3BhbiwgP1NlbGVjdG9yTGlzdCAkb3JpZ2luYWxTZWxlY3RvciA9IG51bGwsIGJvb2wgJGZyb21QbGFpbkNzcyA9IGZhbHNlKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsKICAgICAgICAkdGhpcy0+c2VsZWN0b3IgPSAkc2VsZWN0b3I7CiAgICAgICAgJHRoaXMtPm9yaWdpbmFsU2VsZWN0b3IgPSAkb3JpZ2luYWxTZWxlY3RvciA/PyAkc2VsZWN0b3ItPmdldFZhbHVlKCk7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgICAgICAkdGhpcy0+ZnJvbVBsYWluQ3NzID0gJGZyb21QbGFpbkNzczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VsZWN0b3IoKTogU2VsZWN0b3JMaXN0CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3Rvci0+Z2V0VmFsdWUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JpZ2luYWxTZWxlY3RvcigpOiBTZWxlY3Rvckxpc3QKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9yaWdpbmFsU2VsZWN0b3I7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzRnJvbVBsYWluQ3NzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21QbGFpbkNzczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KE1vZGlmaWFibGVDc3NWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRDc3NTdHlsZVJ1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHNJZ25vcmluZ0NoaWxkcmVuKE1vZGlmaWFibGVDc3NOb2RlICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgTW9kaWZpYWJsZUNzc1N0eWxlUnVsZSAmJiBFcXVhdGFibGVVdGlsOjplcXVhbHMoJHRoaXMtPnNlbGVjdG9yLCAkb3RoZXItPnNlbGVjdG9yKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29weVdpdGhvdXRDaGlsZHJlbigpOiBNb2RpZmlhYmxlQ3NzU3R5bGVSdWxlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBNb2RpZmlhYmxlQ3NzU3R5bGVSdWxlKCR0aGlzLT5zZWxlY3RvciwgJHRoaXMtPnNwYW4sICR0aGlzLT5vcmlnaW5hbFNlbGVjdG9yKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssStylesheet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcTW9kaWZpYWJsZUNzc1Zpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgbW9kaWZpYWJsZSB2ZXJzaW9uIG9mIHtAc2VlIENzc1N0eWxlc2hlZXR9IGZvciB1c2UgaW4gdGhlIGV2YWx1YXRpb24gc3RlcC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNb2RpZmlhYmxlQ3NzU3R5bGVzaGVldCBleHRlbmRzIE1vZGlmaWFibGVDc3NQYXJlbnROb2RlIGltcGxlbWVudHMgQ3NzU3R5bGVzaGVldAp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8TW9kaWZpYWJsZUNzc05vZGU+ICRjaGlsZHJlbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoRmlsZVNwYW4gJHNwYW4sIGFycmF5ICRjaGlsZHJlbiA9IFtdKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGNoaWxkcmVuKTsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoTW9kaWZpYWJsZUNzc1Zpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdENzc1N0eWxlc2hlZXQoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHNJZ25vcmluZ0NoaWxkcmVuKE1vZGlmaWFibGVDc3NOb2RlICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgTW9kaWZpYWJsZUNzc1N0eWxlc2hlZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvcHlXaXRob3V0Q2hpbGRyZW4oKTogTW9kaWZpYWJsZUNzc1N0eWxlc2hlZXQKICAgIHsKICAgICAgICByZXR1cm4gbmV3IE1vZGlmaWFibGVDc3NTdHlsZXNoZWV0KCR0aGlzLT5zcGFuKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Css/ModifiableCssSupportsRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3M7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXE1vZGlmaWFibGVDc3NWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIG1vZGlmaWFibGUgdmVyc2lvbiBvZiB7QHNlZSBDc3NTdXBwb3J0c1J1bGV9IGZvciB1c2UgaW4gdGhlIGV2YWx1YXRpb24gc3RlcC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNb2RpZmlhYmxlQ3NzU3VwcG9ydHNSdWxlIGV4dGVuZHMgTW9kaWZpYWJsZUNzc1BhcmVudE5vZGUgaW1wbGVtZW50cyBDc3NTdXBwb3J0c1J1bGUKewogICAgLyoqCiAgICAgKiBAdmFyIENzc1ZhbHVlPHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBDc3NWYWx1ZSAkY29uZGl0aW9uOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ3NzVmFsdWU8c3RyaW5nPiAkY29uZGl0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDc3NWYWx1ZSAkY29uZGl0aW9uLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAgICAgJHRoaXMtPmNvbmRpdGlvbiA9ICRjb25kaXRpb247CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29uZGl0aW9uKCk6IENzc1ZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb25kaXRpb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChNb2RpZmlhYmxlQ3NzVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0Q3NzU3VwcG9ydHNSdWxlKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzSWdub3JpbmdDaGlsZHJlbihNb2RpZmlhYmxlQ3NzTm9kZSAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIE1vZGlmaWFibGVDc3NTdXBwb3J0c1J1bGUgJiYgRXF1YXRhYmxlVXRpbDo6ZXF1YWxzKCR0aGlzLT5jb25kaXRpb24sICRvdGhlci0+Y29uZGl0aW9uKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29weVdpdGhvdXRDaGlsZHJlbigpOiBNb2RpZmlhYmxlQ3NzU3VwcG9ydHNSdWxlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBNb2RpZmlhYmxlQ3NzU3VwcG9ydHNSdWxlKCR0aGlzLT5jb25kaXRpb24sICR0aGlzLT5zcGFuKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/FakeAstNode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdDsKCnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEFuIHtAc2VlIEFzdE5vZGV9IHRoYXQganVzdCBleHBvc2VzIGEgc2luZ2xlIHNwYW4gZ2VuZXJhdGVkIGJ5IGEgY2FsbGJhY2suCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRmFrZUFzdE5vZGUgaW1wbGVtZW50cyBBc3ROb2RlCnsKICAgIC8qKgogICAgICogQHZhciBcQ2xvc3VyZSgpOiBGaWxlU3BhbgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IFxDbG9zdXJlICRjYWxsYmFjazsKCiAgICAvKioKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiBGaWxlU3BhbiAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRjYWxsYmFjaykKICAgIHsKICAgICAgICAkdGhpcy0+Y2FsbGJhY2sgPSAkY2FsbGJhY2soLi4uKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPmNhbGxiYWNrKSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Argument.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcU3BhblV0aWw7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEFuIGFyZ3VtZW50IGRlY2xhcmVkIGFzIHBhcnQgb2YgYW4ge0BzZWUgQXJndW1lbnREZWNsYXJhdGlvbn0uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQXJndW1lbnQgaW1wbGVtZW50cyBTYXNzTm9kZSwgU2Fzc0RlY2xhcmF0aW9uCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuYW1lOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgP0V4cHJlc3Npb24gJGRlZmF1bHRWYWx1ZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG5hbWUsIEZpbGVTcGFuICRzcGFuLCA/RXhwcmVzc2lvbiAkZGVmYXVsdFZhbHVlID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5kZWZhdWx0VmFsdWUgPSAkZGVmYXVsdFZhbHVlOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHZhcmlhYmxlIG5hbWUgYXMgd3JpdHRlbiBpbiB0aGUgZG9jdW1lbnQsIHdpdGhvdXQgdW5kZXJzY29yZXMKICAgICAqIGNvbnZlcnRlZCB0byBoeXBoZW5zIGFuZCBpbmNsdWRpbmcgdGhlIGxlYWRpbmcgYCRgLgogICAgICoKICAgICAqIFRoaXMgaXNuJ3QgcGFydGljdWxhcmx5IGVmZmljaWVudCwgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGVycm9yCiAgICAgKiBtZXNzYWdlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE9yaWdpbmFsTmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmRlZmF1bHRWYWx1ZSA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW4tPmdldFRleHQoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBVdGlsOjpkZWNsYXJhdGlvbk5hbWUoJHRoaXMtPnNwYW4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lU3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIGlmICgkdGhpcy0+ZGVmYXVsdFZhbHVlID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTcGFuVXRpbDo6aW5pdGlhbElkZW50aWZpZXIoJHRoaXMtPnNwYW4sIDEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZWZhdWx0VmFsdWUoKTogP0V4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRlZmF1bHRWYWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmRlZmF1bHRWYWx1ZSA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWUgLiAnOiAnIC4gJHRoaXMtPmRlZmF1bHRWYWx1ZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/ArgumentDeclaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cTXVsdGlTcGFuU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc0Zvcm1hdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlclxTY3NzUGFyc2VyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcQ2hhcmFjdGVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcU3BhblV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTdHJpbmdVdGlsOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBbiBhcmd1bWVudCBkZWNsYXJhdGlvbiwgYXMgZm9yIGEgZnVuY3Rpb24gb3IgbWl4aW4gZGVmaW5pdGlvbi4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBBcmd1bWVudERlY2xhcmF0aW9uIGltcGxlbWVudHMgU2Fzc05vZGUKewogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8QXJndW1lbnQ+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJGFyZ3VtZW50czsKCiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJHJlc3RBcmd1bWVudDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8QXJndW1lbnQ+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRhcmd1bWVudHMsIEZpbGVTcGFuICRzcGFuLCA/c3RyaW5nICRyZXN0QXJndW1lbnQgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5hcmd1bWVudHMgPSAkYXJndW1lbnRzOwogICAgICAgICR0aGlzLT5yZXN0QXJndW1lbnQgPSAkcmVzdEFyZ3VtZW50OwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVFbXB0eShGaWxlU3BhbiAkc3Bhbik6IEFyZ3VtZW50RGVjbGFyYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoW10sICRzcGFuKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlcyBhbiBhcmd1bWVudCBkZWNsYXJhdGlvbiBmcm9tICRjb250ZW50cywgd2hpY2ggc2hvdWxkIGJlIG9mIHRoZQogICAgICogZm9ybSBgQHJ1bGUgbmFtZShhcmdzKSB7YC4KICAgICAqCiAgICAgKiBJZiBwYXNzZWQsICR1cmwgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAkY29udGVudHMgY29tZXMuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uIGlmIHBhcnNpbmcgZmFpbHMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2Uoc3RyaW5nICRjb250ZW50cywgP0xvZ2dlckludGVyZmFjZSAkbG9nZ2VyID0gbnVsbCwgP1VyaUludGVyZmFjZSAkdXJsID0gbnVsbCk6IEFyZ3VtZW50RGVjbGFyYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gKG5ldyBTY3NzUGFyc2VyKCRjb250ZW50cywgJGxvZ2dlciwgJHVybCkpLT5wYXJzZUFyZ3VtZW50RGVjbGFyYXRpb24oKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+YXJndW1lbnRzKSA9PT0gMCAmJiAkdGhpcy0+cmVzdEFyZ3VtZW50ID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PEFyZ3VtZW50PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXJndW1lbnRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hcmd1bWVudHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3RBcmd1bWVudCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXN0QXJndW1lbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHtAc2VlICRzcGFufSBleHBhbmRlZCB0byBpbmNsdWRlIGFuIGlkZW50aWZpZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZQogICAgICogZGVjbGFyYXRpb24sIGlmIHBvc3NpYmxlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbldpdGhOYW1lKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgJHRleHQgPSAkdGhpcy0+c3Bhbi0+Z2V0RmlsZSgpLT5nZXRUZXh0KDApOwoKICAgICAgICAvLyBNb3ZlIGJhY2t3YXJkcyB0aHJvdWdoIGFueSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIG5hbWUgYW5kIHRoZSBhcmd1bWVudHMuCiAgICAgICAgJGkgPSAkdGhpcy0+c3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCkgLSAxOwogICAgICAgIHdoaWxlICgkaSA+IDAgJiYgQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJHRleHRbJGldKSkgewogICAgICAgICAgICAkaS0tOwogICAgICAgIH0KCiAgICAgICAgLy8gVGhlbiBtb3ZlIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSBuYW1lIGl0c2VsZi4KICAgICAgICBpZiAoIUNoYXJhY3Rlcjo6aXNOYW1lKCR0ZXh0WyRpXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgICAgIH0KICAgICAgICAkaS0tOwogICAgICAgIHdoaWxlICgkaSA+PSAwICYmIENoYXJhY3Rlcjo6aXNOYW1lKCR0ZXh0WyRpXSkpIHsKICAgICAgICAgICAgJGktLTsKICAgICAgICB9CgogICAgICAgIC8vIFRyaW0gYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBzcGFuIGlzIGVtcHR5IChmb3IgZXhhbXBsZSwgYSBtaXhpbgogICAgICAgIC8vIG1heSBiZSBkZWNsYXJlZCB3aXRob3V0IGFuIGFyZ3VtZW50IGxpc3QpLgogICAgICAgIHJldHVybiBTcGFuVXRpbDo6dHJpbSgkdGhpcy0+c3Bhbi0+Z2V0RmlsZSgpLT5zcGFuKCRpICsgMSwgJHRoaXMtPnNwYW4tPmdldEVuZCgpLT5nZXRPZmZzZXQoKSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgbWl4ZWQ+ICRuYW1lcyBPbmx5IGtleXMgYXJlIHJlbGV2YW50CiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmICRwb3NpdGlvbmFsIGFuZCAkbmFtZXMgYXJlbid0IHZhbGlkIGZvciB0aGlzIGFyZ3VtZW50IGRlY2xhcmF0aW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5KGludCAkcG9zaXRpb25hbCwgYXJyYXkgJG5hbWVzKTogdm9pZAogICAgewogICAgICAgICRuYW1lVXNlZCA9IDA7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5hcmd1bWVudHMgYXMgJGkgPT4gJGFyZ3VtZW50KSB7CiAgICAgICAgICAgIGlmICgkaSA8ICRwb3NpdGlvbmFsKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG5hbWVzWyRhcmd1bWVudC0+Z2V0TmFtZSgpXSkpIHsKICAgICAgICAgICAgICAgICAgICAkb3JpZ2luYWxOYW1lID0gJHRoaXMtPm9yaWdpbmFsQXJndW1lbnROYW1lKCRhcmd1bWVudC0+Z2V0TmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKCdBcmd1bWVudCAlcyB3YXMgcGFzc2VkIGJvdGggYnkgcG9zaXRpb24gYW5kIGJ5IG5hbWUuJywgJG9yaWdpbmFsTmFtZSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJG5hbWVzWyRhcmd1bWVudC0+Z2V0TmFtZSgpXSkpIHsKICAgICAgICAgICAgICAgICRuYW1lVXNlZCsrOwogICAgICAgICAgICB9IGVsc2VpZiAoJGFyZ3VtZW50LT5nZXREZWZhdWx0VmFsdWUoKSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgJG9yaWdpbmFsTmFtZSA9ICR0aGlzLT5vcmlnaW5hbEFyZ3VtZW50TmFtZSgkYXJndW1lbnQtPmdldE5hbWUoKSk7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTXVsdGlTcGFuU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKCdNaXNzaW5nIGFyZ3VtZW50ICVzLicsICRvcmlnaW5hbE5hbWUpLCAnaW52b2NhdGlvbicsIFsnZGVjbGFyYXRpb24nID0+ICR0aGlzLT5nZXRTcGFuV2l0aE5hbWUoKV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnJlc3RBcmd1bWVudCAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoJHBvc2l0aW9uYWwgPiBcY291bnQoJHRoaXMtPmFyZ3VtZW50cykpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgJ09ubHkgJWQgJXMlcyBhbGxvd2VkLCBidXQgJWQgJXMgcGFzc2VkLicsCiAgICAgICAgICAgICAgICBcY291bnQoJHRoaXMtPmFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICBlbXB0eSgkbmFtZXMpID8gJycgOiAncG9zaXRpb25hbCAnLAogICAgICAgICAgICAgICAgU3RyaW5nVXRpbDo6cGx1cmFsaXplKCdhcmd1bWVudCcsIFxjb3VudCgkdGhpcy0+YXJndW1lbnRzKSksCiAgICAgICAgICAgICAgICAkcG9zaXRpb25hbCwKICAgICAgICAgICAgICAgIFN0cmluZ1V0aWw6OnBsdXJhbGl6ZSgnd2FzJywgJHBvc2l0aW9uYWwsICd3ZXJlJykKICAgICAgICAgICAgKTsKICAgICAgICAgICAgdGhyb3cgbmV3IE11bHRpU3BhblNhc3NTY3JpcHRFeGNlcHRpb24oJG1lc3NhZ2UsICdpbnZvY2F0aW9uJywgWydkZWNsYXJhdGlvbicgPT4gJHRoaXMtPmdldFNwYW5XaXRoTmFtZSgpXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5hbWVVc2VkIDwgXGNvdW50KCRuYW1lcykpIHsKICAgICAgICAgICAgJHVua25vd25OYW1lcyA9IGFycmF5X3ZhbHVlcyhhcnJheV9kaWZmKGFycmF5X2tleXMoJG5hbWVzKSwgYXJyYXlfbWFwKGZuKCRhcmd1bWVudCkgPT4gJGFyZ3VtZW50LT5nZXROYW1lKCksICR0aGlzLT5hcmd1bWVudHMpKSk7CiAgICAgICAgICAgIFxhc3NlcnQoXGNvdW50KCR1bmtub3duTmFtZXMpID4gMCk7CiAgICAgICAgICAgICRtZXNzYWdlID0gc3ByaW50ZigKICAgICAgICAgICAgICAgICdObyAlcyBuYW1lZCAlcy4nLAogICAgICAgICAgICAgICAgU3RyaW5nVXRpbDo6cGx1cmFsaXplKCdhcmd1bWVudCcsIFxjb3VudCgkdW5rbm93bk5hbWVzKSksCiAgICAgICAgICAgICAgICBTdHJpbmdVdGlsOjp0b1NlbnRlbmNlKGFycmF5X21hcChmbiAoJG5hbWUpID0+ICckJyAuICRuYW1lLCAkdW5rbm93bk5hbWVzKSwgJ29yJykKICAgICAgICAgICAgKTsKICAgICAgICAgICAgdGhyb3cgbmV3IE11bHRpU3BhblNhc3NTY3JpcHRFeGNlcHRpb24oJG1lc3NhZ2UsICdpbnZvY2F0aW9uJywgWydkZWNsYXJhdGlvbicgPT4gJHRoaXMtPmdldFNwYW5XaXRoTmFtZSgpXSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gb3JpZ2luYWxBcmd1bWVudE5hbWUoc3RyaW5nICRuYW1lKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRuYW1lID09PSAkdGhpcy0+cmVzdEFyZ3VtZW50KSB7CiAgICAgICAgICAgICR0ZXh0ID0gJHRoaXMtPnNwYW4tPmdldFRleHQoKTsKICAgICAgICAgICAgJGxhc3REb2xsYXIgPSBzdHJycG9zKCR0ZXh0LCAnJCcpOwogICAgICAgICAgICBhc3NlcnQoJGxhc3REb2xsYXIgIT09IGZhbHNlKTsKICAgICAgICAgICAgJGZyb21Eb2xsYXIgPSBzdWJzdHIoJHRleHQsICRsYXN0RG9sbGFyKTsKICAgICAgICAgICAgJGRvdCA9IHN0cnJwb3MoJGZyb21Eb2xsYXIsICcuJyk7CiAgICAgICAgICAgIGFzc2VydCgkZG90ICE9PSBmYWxzZSk7CgogICAgICAgICAgICByZXR1cm4gc3Vic3RyKCRmcm9tRG9sbGFyLCAwLCAkZG90KTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5hcmd1bWVudHMgYXMgJGFyZ3VtZW50KSB7CiAgICAgICAgICAgIGlmICgkYXJndW1lbnQtPmdldE5hbWUoKSA9PT0gJG5hbWUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYXJndW1lbnQtPmdldE9yaWdpbmFsTmFtZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVGhpcyBkZWNsYXJhdGlvbiBoYXMgbm8gYXJndW1lbnQgbmFtZWQgXCJcJCRuYW1lXCIuIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJHBvc2l0aW9uYWwgYW5kICRuYW1lcyBhcmUgdmFsaWQgZm9yIHRoaXMgYXJndW1lbnQKICAgICAqIGRlY2xhcmF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPiAkbmFtZXMgT25seSBrZXlzIGFyZSByZWxldmFudAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWF0Y2hlcyhpbnQgJHBvc2l0aW9uYWwsIGFycmF5ICRuYW1lcyk6IGJvb2wKICAgIHsKICAgICAgICAkbmFtZVVzZWQgPSAwOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+YXJndW1lbnRzIGFzICRpID0+ICRhcmd1bWVudCkgewogICAgICAgICAgICBpZiAoJGkgPCAkcG9zaXRpb25hbCkgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRuYW1lc1skYXJndW1lbnQtPmdldE5hbWUoKV0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJG5hbWVzWyRhcmd1bWVudC0+Z2V0TmFtZSgpXSkpIHsKICAgICAgICAgICAgICAgICRuYW1lVXNlZCsrOwogICAgICAgICAgICB9IGVsc2VpZiAoJGFyZ3VtZW50LT5nZXREZWZhdWx0VmFsdWUoKSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnJlc3RBcmd1bWVudCAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcG9zaXRpb25hbCA+IFxjb3VudCgkdGhpcy0+YXJndW1lbnRzKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5hbWVVc2VkIDwgXGNvdW50KCRuYW1lcykpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHBhcnRzID0gW107CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFyZ3VtZW50cyBhcyAkYXJnKSB7CiAgICAgICAgICAgICRwYXJ0c1tdID0gIlwkJGFyZyI7CiAgICAgICAgfQogICAgICAgIGlmICgkdGhpcy0+cmVzdEFyZ3VtZW50ICE9PSBudWxsKSB7CiAgICAgICAgICAgICRwYXJ0c1tdID0gIlwkJHRoaXMtPnJlc3RBcmd1bWVudC4uLiI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLCAnLCAkcGFydHMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/ArgumentInvocation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXExpc3RFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXExpc3RTZXBhcmF0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgc2V0IG9mIGFyZ3VtZW50cyBwYXNzZWQgaW4gdG8gYSBmdW5jdGlvbiBvciBtaXhpbi4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBBcmd1bWVudEludm9jYXRpb24gaW1wbGVtZW50cyBTYXNzTm9kZQp7CiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxFeHByZXNzaW9uPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRwb3NpdGlvbmFsOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIEV4cHJlc3Npb24+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJG5hbWVkOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgP0V4cHJlc3Npb24gJHJlc3Q7CgogICAgcHJpdmF0ZSByZWFkb25seSA/RXhwcmVzc2lvbiAka2V5d29yZFJlc3Q7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PEV4cHJlc3Npb24+ICAgICAgICAgICRwb3NpdGlvbmFsCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBFeHByZXNzaW9uPiAkbmFtZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRwb3NpdGlvbmFsLCBhcnJheSAkbmFtZWQsIEZpbGVTcGFuICRzcGFuLCA/RXhwcmVzc2lvbiAkcmVzdCA9IG51bGwsID9FeHByZXNzaW9uICRrZXl3b3JkUmVzdCA9IG51bGwpCiAgICB7CiAgICAgICAgYXNzZXJ0KCRrZXl3b3JkUmVzdCA9PT0gbnVsbCB8fCAkcmVzdCAhPT0gbnVsbCk7CgogICAgICAgICR0aGlzLT5wb3NpdGlvbmFsID0gJHBvc2l0aW9uYWw7CiAgICAgICAgJHRoaXMtPm5hbWVkID0gJG5hbWVkOwogICAgICAgICR0aGlzLT5yZXN0ID0gJHJlc3Q7CiAgICAgICAgJHRoaXMtPmtleXdvcmRSZXN0ID0gJGtleXdvcmRSZXN0OwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVFbXB0eShGaWxlU3BhbiAkc3Bhbik6IEFyZ3VtZW50SW52b2NhdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZihbXSwgW10sICRzcGFuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+cG9zaXRpb25hbCkgPT09IDAgJiYgXGNvdW50KCR0aGlzLT5uYW1lZCkgPT09IDAgJiYgJHRoaXMtPnJlc3QgPT09IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8RXhwcmVzc2lvbj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvc2l0aW9uYWwoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBvc2l0aW9uYWw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgRXhwcmVzc2lvbj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVkKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVzdCgpOiA/RXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5d29yZFJlc3QoKTogP0V4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmtleXdvcmRSZXN0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgICRwYXJ0cyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wb3NpdGlvbmFsIGFzICRhcmd1bWVudCkgewogICAgICAgICAgICAkcGFydHNbXSA9ICR0aGlzLT5wYXJlbnRoZXNpemVBcmd1bWVudCgkYXJndW1lbnQpOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+bmFtZWQgYXMgJG5hbWUgPT4gJGFyZykgewogICAgICAgICAgICAkcGFydHNbXSA9ICJcJCRuYW1lOiB7JHRoaXMtPnBhcmVudGhlc2l6ZUFyZ3VtZW50KCRhcmcpfSI7CiAgICAgICAgfQogICAgICAgIGlmICgkdGhpcy0+cmVzdCAhPT0gbnVsbCkgewogICAgICAgICAgICAkcGFydHNbXSA9ICJ7JHRoaXMtPnBhcmVudGhlc2l6ZUFyZ3VtZW50KCR0aGlzLT5yZXN0KX0uLi4iOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPmtleXdvcmRSZXN0ICE9PSBudWxsKSB7CiAgICAgICAgICAgICRwYXJ0c1tdID0gInskdGhpcy0+cGFyZW50aGVzaXplQXJndW1lbnQoJHRoaXMtPmtleXdvcmRSZXN0KX0uLi4iOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICcoJyAuIGltcGxvZGUoJywgJywgJHBhcnRzKSAuICcpJzsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhcmVudGhlc2l6ZUFyZ3VtZW50KEV4cHJlc3Npb24gJGFyZ3VtZW50KTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRhcmd1bWVudCBpbnN0YW5jZW9mIExpc3RFeHByZXNzaW9uICYmICRhcmd1bWVudC0+Z2V0U2VwYXJhdG9yKCkgPT09IExpc3RTZXBhcmF0b3I6OkNPTU1BICYmICEkYXJndW1lbnQtPmhhc0JyYWNrZXRzKCkgJiYgXGNvdW50KCRhcmd1bWVudC0+Z2V0Q29udGVudHMoKSkgPiAxKSB7CiAgICAgICAgICAgIHJldHVybiAiKCRhcmd1bWVudCkiOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChzdHJpbmcpICRhcmd1bWVudDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/AtRootQuery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc0F0UnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc01lZGlhUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc1BhcmVudE5vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NTdHlsZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NTdXBwb3J0c1J1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NGb3JtYXRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcTG9nZ2VyXExvZ2dlckludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcQXRSb290UXVlcnlQYXJzZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcUGFyc2VyXEludGVycG9sYXRpb25NYXA7CgovKioKICogQSBxdWVyeSBmb3IgdGhlIGBAYXQtcm9vdGAgcnVsZS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBBdFJvb3RRdWVyeQp7CiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHF1ZXJ5IGluY2x1ZGVzIG9yIGV4Y2x1ZGVzIHJ1bGVzIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lcy4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRpbmNsdWRlOwoKICAgIC8qKgogICAgICogVGhlIG5hbWVzIG9mIHRoZSBydWxlcyBpbmNsdWRlZCBvciBleGNsdWRlZCBieSB0aGlzIHF1ZXJ5LgogICAgICoKICAgICAqIFRoZXJlIGFyZSB0d28gc3BlY2lhbCBuYW1lcy4gImFsbCIgaW5kaWNhdGVzIHRoYXQgYWxsIHJ1bGVzIGFyZSBpbmNsdWRlZAogICAgICogb3IgZXhjbHVkZWQsIGFuZCAicnVsZSIgaW5kaWNhdGVzIHN0eWxlIHJ1bGVzIGFyZSBpbmNsdWRlZCBvciBleGNsdWRlZC4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZ1tdCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJG5hbWVzOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGluY2x1ZGVzIG9yIGV4Y2x1ZGVzICphbGwqIHJ1bGVzLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGFsbDsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBpbmNsdWRlcyBvciBleGNsdWRlcyBzdHlsZSBydWxlcy4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRydWxlOwoKICAgIC8qKgogICAgICogUGFyc2VzIGFuIGF0LXJvb3QgcXVlcnkgZnJvbSAkY29udGVudHMuCiAgICAgKgogICAgICogSWYgcGFzc2VkLCAkdXJsIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggJGNvbnRlbnRzIGNvbWVzLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbiBpZiBwYXJzaW5nIGZhaWxzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2Uoc3RyaW5nICRjb250ZW50cywgP0xvZ2dlckludGVyZmFjZSAkbG9nZ2VyID0gbnVsbCwgP1VyaUludGVyZmFjZSAkdXJsID0gbnVsbCwgP0ludGVycG9sYXRpb25NYXAgJGludGVycG9sYXRpb25NYXAgPSBudWxsKTogQXRSb290UXVlcnkKICAgIHsKICAgICAgICByZXR1cm4gKG5ldyBBdFJvb3RRdWVyeVBhcnNlcigkY29udGVudHMsICRsb2dnZXIsICR1cmwsICRpbnRlcnBvbGF0aW9uTWFwKSktPnBhcnNlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG5hbWVzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKGFycmF5ICRuYW1lcywgYm9vbCAkaW5jbHVkZSk6IEF0Um9vdFF1ZXJ5CiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBBdFJvb3RRdWVyeSgkbmFtZXMsICRpbmNsdWRlLCBcaW5fYXJyYXkoJ2FsbCcsICRuYW1lcywgdHJ1ZSksIFxpbl9hcnJheSgncnVsZScsICRuYW1lcywgdHJ1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGRlZmF1bHQgYXQtcm9vdCBxdWVyeQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldERlZmF1bHQoKTogQXRSb290UXVlcnkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEF0Um9vdFF1ZXJ5KFtdLCBmYWxzZSwgZmFsc2UsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRuYW1lcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRuYW1lcywgYm9vbCAkaW5jbHVkZSwgYm9vbCAkYWxsLCBib29sICRydWxlKQogICAgewogICAgICAgICR0aGlzLT5pbmNsdWRlID0gJGluY2x1ZGU7CiAgICAgICAgJHRoaXMtPm5hbWVzID0gJG5hbWVzOwogICAgICAgICR0aGlzLT5hbGwgPSAkYWxsOwogICAgICAgICR0aGlzLT5ydWxlID0gJHJ1bGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEluY2x1ZGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aW5jbHVkZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lczsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBleGNsdWRlcyBzdHlsZSBydWxlcy4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgdGhpcyB0YWtlcyB7QHNlZSBpbmNsdWRlfSBpbnRvIGFjY291bnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleGNsdWRlc1N0eWxlUnVsZXMoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPmFsbCB8fCAkdGhpcy0+cnVsZSkgIT09ICR0aGlzLT5pbmNsdWRlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICR0aGlzIGV4Y2x1ZGVzICRub2RlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleGNsdWRlcyhDc3NQYXJlbnROb2RlICRub2RlKTogYm9vbAogICAgewogICAgICAgIGlmICgkdGhpcy0+YWxsKSB7CiAgICAgICAgICAgIHJldHVybiAhJHRoaXMtPmluY2x1ZGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5vZGUgaW5zdGFuY2VvZiBDc3NTdHlsZVJ1bGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5leGNsdWRlc1N0eWxlUnVsZXMoKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIENzc01lZGlhUnVsZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmV4Y2x1ZGVzTmFtZSgnbWVkaWEnKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIENzc1N1cHBvcnRzUnVsZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmV4Y2x1ZGVzTmFtZSgnc3VwcG9ydHMnKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIENzc0F0UnVsZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmV4Y2x1ZGVzTmFtZShzdHJ0b2xvd2VyKCRub2RlLT5nZXROYW1lKCktPmdldFZhbHVlKCkpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkdGhpcyBleGNsdWRlcyBhbiBhdC1ydWxlIHdpdGggdGhlIGdpdmVuICRuYW1lLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhjbHVkZXNOYW1lKHN0cmluZyAkbmFtZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5hbGwgfHwgXGluX2FycmF5KCRuYW1lLCAkdGhpcy0+bmFtZXMsIHRydWUpKSAhPT0gJHRoaXMtPmluY2x1ZGU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/CallableInvocation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIENhbGxhYmxlSW52b2NhdGlvbiBleHRlbmRzIFNhc3NOb2RlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcmd1bWVudHMoKTogQXJndW1lbnRJbnZvY2F0aW9uOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/ConfiguredVariable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFNwYW5VdGlsOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIHZhcmlhYmxlIGNvbmZpZ3VyZWQgYnkgYSBgd2l0aGAgY2xhdXNlIGluIGEgYEB1c2VgIG9yIGBAZm9yd2FyZGAgcnVsZS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBDb25maWd1cmVkVmFyaWFibGUgaW1wbGVtZW50cyBTYXNzTm9kZSwgU2Fzc0RlY2xhcmF0aW9uCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuYW1lOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRXhwcmVzc2lvbiAkZXhwcmVzc2lvbjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkZ3VhcmRlZDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRuYW1lLCBFeHByZXNzaW9uICRleHByZXNzaW9uLCBGaWxlU3BhbiAkc3BhbiwgYm9vbCAkZ3VhcmRlZCA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5uYW1lID0gJG5hbWU7CiAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24gPSAkZXhwcmVzc2lvbjsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgICR0aGlzLT5ndWFyZGVkID0gJGd1YXJkZWQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHByZXNzaW9uKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmV4cHJlc3Npb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzR3VhcmRlZCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5ndWFyZGVkOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lU3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiBTcGFuVXRpbDo6aW5pdGlhbElkZW50aWZpZXIoJHRoaXMtPnNwYW4sIDEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnJCcgLiAkdGhpcy0+bmFtZSAuICc6ICcgLiAkdGhpcy0+ZXhwcmVzc2lvbiAuICgkdGhpcy0+Z3VhcmRlZCA/ICcgIWRlZmF1bHQnIDogJycpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXEV4cHJlc3Npb25WaXNpdG9yOwoKLyoqCiAqIEEgU2Fzc1NjcmlwdCBleHByZXNzaW9uIGluIGEgU2FzcyBzeW50YXggdHJlZS4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgRXhwcmVzc2lvbiBleHRlbmRzIFNhc3NOb2RlCnsKICAgIC8qKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqIEBwYXJhbSBFeHByZXNzaW9uVmlzaXRvcjxUPiAkdmlzaXRvcgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoRXhwcmVzc2lvblZpc2l0b3IgJHZpc2l0b3IpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/BinaryOperationExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTcGFuVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXEV4cHJlc3Npb25WaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGJpbmFyeSBvcGVyYXRvciwgYXMgaW4gYDEgKyAyYCBvciBgJHRoaXMgYW5kICRvdGhlcmAuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiBpbXBsZW1lbnRzIEV4cHJlc3Npb24KewogICAgcHJpdmF0ZSByZWFkb25seSBCaW5hcnlPcGVyYXRvciAkb3BlcmF0b3I7CgogICAgcHJpdmF0ZSByZWFkb25seSBFeHByZXNzaW9uICRsZWZ0OwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRXhwcmVzc2lvbiAkcmlnaHQ7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgaXMgYSBkaXZpZGVkQnkgb3BlcmF0aW9uIHRoYXQgbWF5IGJlIGludGVycHJldGVkIGFzIHNsYXNoLXNlcGFyYXRlZCBudW1iZXJzLgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGFsbG93c1NsYXNoID0gZmFsc2U7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEJpbmFyeU9wZXJhdG9yICRvcGVyYXRvciwgRXhwcmVzc2lvbiAkbGVmdCwgRXhwcmVzc2lvbiAkcmlnaHQpCiAgICB7CiAgICAgICAgJHRoaXMtPm9wZXJhdG9yID0gJG9wZXJhdG9yOwogICAgICAgICR0aGlzLT5sZWZ0ID0gJGxlZnQ7CiAgICAgICAgJHRoaXMtPnJpZ2h0ID0gJHJpZ2h0OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGRpdmlkZWRCeSBvcGVyYXRpb24gdGhhdCBtYXkgYmUgaW50ZXJwcmV0ZWQgYXMgc2xhc2gtc2VwYXJhdGVkIG51bWJlcnMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2xhc2goRXhwcmVzc2lvbiAkbGVmdCwgRXhwcmVzc2lvbiAkcmlnaHQpOiBzZWxmCiAgICB7CiAgICAgICAgJG9wZXJhdGlvbiA9IG5ldyBzZWxmKEJpbmFyeU9wZXJhdG9yOjpESVZJREVEX0JZLCAkbGVmdCwgJHJpZ2h0KTsKICAgICAgICAkb3BlcmF0aW9uLT5hbGxvd3NTbGFzaCA9IHRydWU7CgogICAgICAgIHJldHVybiAkb3BlcmF0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcGVyYXRvcigpOiBCaW5hcnlPcGVyYXRvcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3BlcmF0b3I7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExlZnQoKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGVmdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmlnaHQoKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmlnaHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFsbG93c1NsYXNoKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFsbG93c1NsYXNoOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgJGxlZnQgPSAkdGhpcy0+bGVmdDsKCiAgICAgICAgd2hpbGUgKCRsZWZ0IGluc3RhbmNlb2YgQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbikgewogICAgICAgICAgICAkbGVmdCA9ICRsZWZ0LT5sZWZ0OwogICAgICAgIH0KCiAgICAgICAgJHJpZ2h0ID0gJHRoaXMtPnJpZ2h0OwoKICAgICAgICB3aGlsZSAoJHJpZ2h0IGluc3RhbmNlb2YgQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbikgewogICAgICAgICAgICAkcmlnaHQgPSAkcmlnaHQtPnJpZ2h0OwogICAgICAgIH0KCiAgICAgICAgJGxlZnRTcGFuID0gJGxlZnQtPmdldFNwYW4oKTsKICAgICAgICAkcmlnaHRTcGFuID0gJHJpZ2h0LT5nZXRTcGFuKCk7CgogICAgICAgIHJldHVybiAkbGVmdFNwYW4tPmV4cGFuZCgkcmlnaHRTcGFuKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNwYW4gdGhhdCBjb3ZlcnMgb25seSB7QHNlZSAkb3BlcmF0b3J9LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3BlcmF0b3JTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgJGxlZnRTcGFuID0gJHRoaXMtPmxlZnQtPmdldFNwYW4oKTsKICAgICAgICAkcmlnaHRTcGFuID0gJHRoaXMtPnJpZ2h0LT5nZXRTcGFuKCk7CgogICAgICAgIGlmICgkbGVmdFNwYW4tPmdldEZpbGUoKSA9PT0gJHJpZ2h0U3Bhbi0+Z2V0RmlsZSgpICYmICRsZWZ0U3Bhbi0+Z2V0RW5kKCktPmdldE9mZnNldCgpIDwgJHJpZ2h0U3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCkpIHsKICAgICAgICAgICAgcmV0dXJuIFNwYW5VdGlsOjp0cmltKCRsZWZ0U3Bhbi0+Z2V0RmlsZSgpLT5zcGFuKCRsZWZ0U3Bhbi0+Z2V0RW5kKCktPmdldE9mZnNldCgpLCAkcmlnaHRTcGFuLT5nZXRTdGFydCgpLT5nZXRPZmZzZXQoKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTcGFuKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0QmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICcnOwoKICAgICAgICAkbGVmdE5lZWRzUGFyZW5zID0gKCR0aGlzLT5sZWZ0IGluc3RhbmNlb2YgQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiAmJiAkdGhpcy0+bGVmdC0+Z2V0T3BlcmF0b3IoKS0+Z2V0UHJlY2VkZW5jZSgpIDwgJHRoaXMtPm9wZXJhdG9yLT5nZXRQcmVjZWRlbmNlKCkpIHx8ICgkdGhpcy0+bGVmdCBpbnN0YW5jZW9mIExpc3RFeHByZXNzaW9uICYmICEkdGhpcy0+bGVmdC0+aGFzQnJhY2tldHMoKSAmJiBcY291bnQoJHRoaXMtPmxlZnQtPmdldENvbnRlbnRzKCkpID4gMSk7CiAgICAgICAgaWYgKCRsZWZ0TmVlZHNQYXJlbnMpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAnKCc7CiAgICAgICAgfQogICAgICAgICRidWZmZXIgLj0gJHRoaXMtPmxlZnQ7CiAgICAgICAgaWYgKCRsZWZ0TmVlZHNQYXJlbnMpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAnKSc7CiAgICAgICAgfQoKICAgICAgICAkYnVmZmVyIC49ICcgJzsKICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5vcGVyYXRvci0+Z2V0T3BlcmF0b3IoKTsKICAgICAgICAkYnVmZmVyIC49ICcgJzsKCiAgICAgICAgJHJpZ2h0TmVlZHNQYXJlbnMgPSAoJHRoaXMtPnJpZ2h0IGluc3RhbmNlb2YgQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiAmJiAkdGhpcy0+cmlnaHQtPmdldE9wZXJhdG9yKCktPmdldFByZWNlZGVuY2UoKSA8PSAkdGhpcy0+b3BlcmF0b3ItPmdldFByZWNlZGVuY2UoKSAmJiAhKCR0aGlzLT5yaWdodC0+b3BlcmF0b3IgPT09ICR0aGlzLT5vcGVyYXRvciAmJiAkdGhpcy0+b3BlcmF0b3ItPmlzQXNzb2NpYXRpdmUoKSkpIHx8ICgkdGhpcy0+cmlnaHQgaW5zdGFuY2VvZiBMaXN0RXhwcmVzc2lvbiAmJiAhJHRoaXMtPnJpZ2h0LT5oYXNCcmFja2V0cygpICYmIFxjb3VudCgkdGhpcy0+cmlnaHQtPmdldENvbnRlbnRzKCkpID4gMSk7CiAgICAgICAgaWYgKCRyaWdodE5lZWRzUGFyZW5zKSB7CiAgICAgICAgICAgICRidWZmZXIgLj0gJygnOwogICAgICAgIH0KICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5yaWdodDsKICAgICAgICBpZiAoJHJpZ2h0TmVlZHNQYXJlbnMpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAnKSc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/BinaryOperator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CgovKioKICogQGludGVybmFsCiAqLwplbnVtIEJpbmFyeU9wZXJhdG9yCnsKICAgIGNhc2UgU0lOR0xFX0VRVUFMUzsKICAgIGNhc2UgT1I7CiAgICBjYXNlIEFORDsKICAgIGNhc2UgRVFVQUxTOwogICAgY2FzZSBOT1RfRVFVQUxTOwogICAgY2FzZSBHUkVBVEVSX1RIQU47CiAgICBjYXNlIEdSRUFURVJfVEhBTl9PUl9FUVVBTFM7CiAgICBjYXNlIExFU1NfVEhBTjsKICAgIGNhc2UgTEVTU19USEFOX09SX0VRVUFMUzsKICAgIGNhc2UgUExVUzsKICAgIGNhc2UgTUlOVVM7CiAgICBjYXNlIFRJTUVTOwogICAgY2FzZSBESVZJREVEX0JZOwogICAgY2FzZSBNT0RVTE87CgogICAgLyoqCiAgICAgKiBUaGUgU2FzcyBzeW50YXggZm9yIHRoaXMgb3BlcmF0b3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE9wZXJhdG9yKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMpIHsKICAgICAgICAgICAgc2VsZjo6U0lOR0xFX0VRVUFMUyA9PiAnPScsCiAgICAgICAgICAgIHNlbGY6Ok9SID0+ICdvcicsCiAgICAgICAgICAgIHNlbGY6OkFORCA9PiAnYW5kJywKICAgICAgICAgICAgc2VsZjo6RVFVQUxTID0+ICc9PScsCiAgICAgICAgICAgIHNlbGY6Ok5PVF9FUVVBTFMgPT4gJyE9JywKICAgICAgICAgICAgc2VsZjo6R1JFQVRFUl9USEFOID0+ICc+JywKICAgICAgICAgICAgc2VsZjo6R1JFQVRFUl9USEFOX09SX0VRVUFMUyA9PiAnPj0nLAogICAgICAgICAgICBzZWxmOjpMRVNTX1RIQU4gPT4gJzwnLAogICAgICAgICAgICBzZWxmOjpMRVNTX1RIQU5fT1JfRVFVQUxTID0+ICc8PScsCiAgICAgICAgICAgIHNlbGY6OlBMVVMgPT4gJysnLAogICAgICAgICAgICBzZWxmOjpNSU5VUyA9PiAnLScsCiAgICAgICAgICAgIHNlbGY6OlRJTUVTID0+ICcqJywKICAgICAgICAgICAgc2VsZjo6RElWSURFRF9CWSA9PiAnLycsCiAgICAgICAgICAgIHNlbGY6Ok1PRFVMTyA9PiAnJScsCiAgICAgICAgfTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlY2VkZW5jZSgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCR0aGlzKSB7CiAgICAgICAgICAgIHNlbGY6OlNJTkdMRV9FUVVBTFMgPT4gMCwKICAgICAgICAgICAgc2VsZjo6T1IgPT4gMSwKICAgICAgICAgICAgc2VsZjo6QU5EID0+IDIsCiAgICAgICAgICAgIHNlbGY6OkVRVUFMUywgc2VsZjo6Tk9UX0VRVUFMUyA9PiAzLAogICAgICAgICAgICBzZWxmOjpHUkVBVEVSX1RIQU4sIHNlbGY6OkdSRUFURVJfVEhBTl9PUl9FUVVBTFMsIHNlbGY6OkxFU1NfVEhBTiwgc2VsZjo6TEVTU19USEFOX09SX0VRVUFMUyA9PiA0LAogICAgICAgICAgICBzZWxmOjpQTFVTLCBzZWxmOjpNSU5VUyA9PiA1LAogICAgICAgICAgICBzZWxmOjpUSU1FUywgc2VsZjo6RElWSURFRF9CWSwgc2VsZjo6TU9EVUxPID0+IDYsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBvcGVyYXRpb24gaGFzIHRoZSBbYXNzb2NpYXRpdmUgcHJvcGVydHldLgogICAgICoKICAgICAqIFthc3NvY2lhdGl2ZSBwcm9wZXJ0eV06IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Fzc29jaWF0aXZlX3Byb3BlcnR5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0Fzc29jaWF0aXZlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCR0aGlzKSB7CiAgICAgICAgICAgIHNlbGY6Ok9SLCBzZWxmOjpBTkQsIHNlbGY6OlBMVVMsIHNlbGY6OlRJTUVTID0+IHRydWUsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gZmFsc2UsCiAgICAgICAgfTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/BooleanExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBib29sZWFuIGxpdGVyYWwsIGB0cnVlYCBvciBgZmFsc2VgLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEJvb2xlYW5FeHByZXNzaW9uIGltcGxlbWVudHMgRXhwcmVzc2lvbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJHZhbHVlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGJvb2wgJHZhbHVlLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0Qm9vbGVhbkV4cHJlc3Npb24oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/ColorExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0NvbG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcRXhwcmVzc2lvblZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgY29sb3IgbGl0ZXJhbC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBDb2xvckV4cHJlc3Npb24gaW1wbGVtZW50cyBFeHByZXNzaW9uCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgU2Fzc0NvbG9yICR2YWx1ZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTYXNzQ29sb3IgJHZhbHVlLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKTogU2Fzc0NvbG9yCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KEV4cHJlc3Npb25WaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRDb2xvckV4cHJlc3Npb24oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAoc3RyaW5nKSAkdGhpcy0+dmFsdWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/FunctionExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEFyZ3VtZW50SW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xDYWxsYWJsZUludm9jYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTYXNzUmVmZXJlbmNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcU3BhblV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBmdW5jdGlvbiBpbnZvY2F0aW9uLgogKgogKiBUaGlzIG1heSBiZSBhIHBsYWluIENTUyBmdW5jdGlvbiBvciBhIFNhc3MgZnVuY3Rpb24sICBidXQgbWF5IG5vdCBpbmNsdWRlCiAqIGludGVycG9sYXRpb24uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRnVuY3Rpb25FeHByZXNzaW9uIGltcGxlbWVudHMgRXhwcmVzc2lvbiwgQ2FsbGFibGVJbnZvY2F0aW9uLCBTYXNzUmVmZXJlbmNlCnsKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGJlaW5nIGludm9rZWQsIHdpdGggdW5kZXJzY29yZXMgY29udmVydGVkIHRvCiAgICAgKiBoeXBoZW5zLgogICAgICoKICAgICAqIElmIHRoaXMgZnVuY3Rpb24gaXMgYSBwbGFpbiBDU1MgZnVuY3Rpb24sIHVzZSB7QHNlZSAkb3JpZ2luYWxOYW1lfSBpbnN0ZWFkLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkbmFtZTsKCiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBiZWluZyBpbnZva2VkLCB3aXRoIHVuZGVyc2NvcmVzIGxlZnQgYXMtaXMuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRvcmlnaW5hbE5hbWU7CgogICAgLyoqCiAgICAgKiBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IEFyZ3VtZW50SW52b2NhdGlvbiAkYXJndW1lbnRzOwoKICAgIC8qKgogICAgICogVGhlIG5hbWVzcGFjZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgaW52b2tlZCwgb3IgYG51bGxgIGlmIGl0J3MgaW52b2tlZAogICAgICogd2l0aG91dCBhIG5hbWVzcGFjZS4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICRuYW1lc3BhY2U7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRvcmlnaW5hbE5hbWUsIEFyZ3VtZW50SW52b2NhdGlvbiAkYXJndW1lbnRzLCBGaWxlU3BhbiAkc3BhbiwgP3N0cmluZyAkbmFtZXNwYWNlID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgICR0aGlzLT5vcmlnaW5hbE5hbWUgPSAkb3JpZ2luYWxOYW1lOwogICAgICAgICR0aGlzLT5hcmd1bWVudHMgPSAkYXJndW1lbnRzOwogICAgICAgICR0aGlzLT5uYW1lc3BhY2UgPSAkbmFtZXNwYWNlOwogICAgICAgICR0aGlzLT5uYW1lID0gc3RyX3JlcGxhY2UoJ18nLCAnLScsICR0aGlzLT5vcmlnaW5hbE5hbWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmlnaW5hbE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vcmlnaW5hbE5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgaW52b2tlZCwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8KICAgICAqIGh5cGhlbnMuCiAgICAgKgogICAgICogSWYgdGhpcyBmdW5jdGlvbiBpcyBhIHBsYWluIENTUyBmdW5jdGlvbiwgdXNlIHtAc2VlIGdldE9yaWdpbmFsTmFtZX0gaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcmd1bWVudHMoKTogQXJndW1lbnRJbnZvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hcmd1bWVudHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVzcGFjZSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lc3BhY2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5uYW1lc3BhY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIFNwYW5VdGlsOjppbml0aWFsSWRlbnRpZmllcigkdGhpcy0+c3Bhbik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gU3BhblV0aWw6OmluaXRpYWxJZGVudGlmaWVyKFNwYW5VdGlsOjp3aXRob3V0TmFtZXNwYWNlKCR0aGlzLT5zcGFuKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVzcGFjZVNwYW4oKTogP0ZpbGVTcGFuCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5uYW1lc3BhY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gU3BhblV0aWw6OmluaXRpYWxJZGVudGlmaWVyKCR0aGlzLT5zcGFuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KEV4cHJlc3Npb25WaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRGdW5jdGlvbkV4cHJlc3Npb24oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgICRidWZmZXIgPSAnJzsKCiAgICAgICAgaWYgKCR0aGlzLT5uYW1lc3BhY2UgIT09IG51bGwpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+bmFtZXNwYWNlIC4gJy4nOwogICAgICAgIH0KCiAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+b3JpZ2luYWxOYW1lIC4gJHRoaXMtPmFyZ3VtZW50czsKCiAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/IfExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEFyZ3VtZW50RGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXJndW1lbnRJbnZvY2F0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXENhbGxhYmxlSW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcRXhwcmVzc2lvblZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgdGVybmFyeSBleHByZXNzaW9uLgogKgogKiBUaGlzIGlzIGRlZmluZWQgYXMgYSBzZXBhcmF0ZSBzeW50YWN0aWMgY29uc3RydWN0IHJhdGhlciB0aGFuIGEgbm9ybWFsCiAqIGZ1bmN0aW9uIGJlY2F1c2Ugb25seSBvbmUgb2YgdGhlIGAkaWYtdHJ1ZWAgYW5kIGAkaWYtZmFsc2VgIGFyZ3VtZW50cyBhcmUKICogZXZhbHVhdGVkLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIElmRXhwcmVzc2lvbiBpbXBsZW1lbnRzIEV4cHJlc3Npb24sIENhbGxhYmxlSW52b2NhdGlvbgp7CiAgICAvKioKICAgICAqIFRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIGBpZigpYC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBBcmd1bWVudEludm9jYXRpb24gJGFyZ3VtZW50czsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHByaXZhdGUgc3RhdGljID9Bcmd1bWVudERlY2xhcmF0aW9uICRkZWNsYXJhdGlvbiA9IG51bGw7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEFyZ3VtZW50SW52b2NhdGlvbiAkYXJndW1lbnRzLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgICR0aGlzLT5hcmd1bWVudHMgPSAkYXJndW1lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGRlY2xhcmF0aW9uIG9mIGBpZigpYCwgYXMgdGhvdWdoIGl0IHdlcmUgYSBub3JtYWwgZnVuY3Rpb24uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb24oKTogQXJndW1lbnREZWNsYXJhdGlvbgogICAgewogICAgICAgIGlmIChzZWxmOjokZGVjbGFyYXRpb24gPT09IG51bGwpIHsKICAgICAgICAgICAgc2VsZjo6JGRlY2xhcmF0aW9uID0gQXJndW1lbnREZWNsYXJhdGlvbjo6cGFyc2UoJ0BmdW5jdGlvbiBpZigkY29uZGl0aW9uLCAkaWYtdHJ1ZSwgJGlmLWZhbHNlKSB7Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JGRlY2xhcmF0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcmd1bWVudHMoKTogQXJndW1lbnRJbnZvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hcmd1bWVudHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0SWZFeHByZXNzaW9uKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ2lmJyAuICR0aGlzLT5hcmd1bWVudHM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/InterpolatedFunctionExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEFyZ3VtZW50SW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xDYWxsYWJsZUludm9jYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbnRlcnBvbGF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcRXhwcmVzc2lvblZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEFuIGludGVycG9sYXRlZCBmdW5jdGlvbiBpbnZvY2F0aW9uLgogKgogKiBUaGlzIGlzIGFsd2F5cyBhIHBsYWluIENTUyBmdW5jdGlvbi4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBJbnRlcnBvbGF0ZWRGdW5jdGlvbkV4cHJlc3Npb24gaW1wbGVtZW50cyBFeHByZXNzaW9uLCBDYWxsYWJsZUludm9jYXRpb24KewogICAgLyoqCiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgaW52b2tlZC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBJbnRlcnBvbGF0aW9uICRuYW1lOwoKICAgIC8qKgogICAgICogVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBmdW5jdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBBcmd1bWVudEludm9jYXRpb24gJGFyZ3VtZW50czsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChJbnRlcnBvbGF0aW9uICRuYW1lLCBBcmd1bWVudEludm9jYXRpb24gJGFyZ3VtZW50cywgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5hcmd1bWVudHMgPSAkYXJndW1lbnRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IEludGVycG9sYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFyZ3VtZW50cygpOiBBcmd1bWVudEludm9jYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFyZ3VtZW50czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KEV4cHJlc3Npb25WaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRJbnRlcnBvbGF0ZWRGdW5jdGlvbkV4cHJlc3Npb24oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZSAuICR0aGlzLT5hcmd1bWVudHM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/IsCalculationSafeVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxJdGVyYWJsZVV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcTGlzdFNlcGFyYXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXEV4cHJlc3Npb25WaXNpdG9yOwoKLyoqCiAqIEB0ZW1wbGF0ZS1pbXBsZW1lbnRzIEV4cHJlc3Npb25WaXNpdG9yPGJvb2w+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgSXNDYWxjdWxhdGlvblNhZmVWaXNpdG9yIGltcGxlbWVudHMgRXhwcmVzc2lvblZpc2l0b3IKewogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0QmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbihCaW5hcnlPcGVyYXRpb25FeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBcaW5fYXJyYXkoJG5vZGUtPmdldE9wZXJhdG9yKCksIFtCaW5hcnlPcGVyYXRvcjo6VElNRVMsIEJpbmFyeU9wZXJhdG9yOjpESVZJREVEX0JZLCBCaW5hcnlPcGVyYXRvcjo6UExVUywgQmluYXJ5T3BlcmF0b3I6Ok1JTlVTXSwgdHJ1ZSkgJiYgKCRub2RlLT5nZXRMZWZ0KCktPmFjY2VwdCgkdGhpcykgfHwgJG5vZGUtPmdldFJpZ2h0KCktPmFjY2VwdCgkdGhpcykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEJvb2xlYW5FeHByZXNzaW9uKEJvb2xlYW5FeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb2xvckV4cHJlc3Npb24oQ29sb3JFeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRGdW5jdGlvbkV4cHJlc3Npb24oRnVuY3Rpb25FeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEludGVycG9sYXRlZEZ1bmN0aW9uRXhwcmVzc2lvbihJbnRlcnBvbGF0ZWRGdW5jdGlvbkV4cHJlc3Npb24gJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SWZFeHByZXNzaW9uKElmRXhwcmVzc2lvbiAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRMaXN0RXhwcmVzc2lvbihMaXN0RXhwcmVzc2lvbiAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG5vZGUtPmdldFNlcGFyYXRvcigpID09PSBMaXN0U2VwYXJhdG9yOjpTUEFDRSAmJiAhJG5vZGUtPmhhc0JyYWNrZXRzKCkgJiYgXGNvdW50KCRub2RlLT5nZXRDb250ZW50cygpKSA+IDEgJiYgSXRlcmFibGVVdGlsOjpldmVyeSgkbm9kZS0+Z2V0Q29udGVudHMoKSwgZm4oRXhwcmVzc2lvbiAkZXhwcmVzc2lvbikgPT4gJGV4cHJlc3Npb24tPmFjY2VwdCgkdGhpcykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1hcEV4cHJlc3Npb24oTWFwRXhwcmVzc2lvbiAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TnVsbEV4cHJlc3Npb24oTnVsbEV4cHJlc3Npb24gJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE51bWJlckV4cHJlc3Npb24oTnVtYmVyRXhwcmVzc2lvbiAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihQYXJlbnRoZXNpemVkRXhwcmVzc2lvbiAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG5vZGUtPmdldEV4cHJlc3Npb24oKS0+YWNjZXB0KCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTZWxlY3RvckV4cHJlc3Npb24oU2VsZWN0b3JFeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTdHJpbmdFeHByZXNzaW9uKFN0cmluZ0V4cHJlc3Npb24gJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRub2RlLT5oYXNRdW90ZXMoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBFeGNsdWRlIG5vbi1pZGVudGlmaWVyIGNvbnN0cnVjdHMgdGhhdCBhcmUgcGFyc2VkIGFzIHtAc2VlIFN0cmluZ0V4cHJlc3Npb259cy4KICAgICAgICAgKiBXZSBjb3VsZCBqdXN0IGNoZWNrIGlmIHRoZXkgcGFyc2UgYXMgdmFsaWQgaWRlbnRpZmllcnMsIGJ1dCB0aGlzIGlzCiAgICAgICAgICogY2hlYXBlci4KICAgICAgICAgKi8KICAgICAgICAkdGV4dCA9ICRub2RlLT5nZXRUZXh0KCktPmdldEluaXRpYWxQbGFpbigpOwoKICAgICAgICAvLyAhaW1wb3J0YW50CiAgICAgICAgcmV0dXJuICFzdHJfc3RhcnRzX3dpdGgoJHRleHQsICchJykKICAgICAgICAgICAgLy8gSUQtc3R5bGUgaWRlbnRpZmllcnMKICAgICAgICAgICAgJiYgIXN0cl9zdGFydHNfd2l0aCgkdGV4dCwgJyMnKQogICAgICAgICAgICAvLyBVbmljb2RlIHJhbmdlcwogICAgICAgICAgICAmJiAoJHRleHRbMV0gPz8gbnVsbCkgIT09ICcrJwogICAgICAgICAgICAvLyB1cmwoKQogICAgICAgICAgICAmJiAoJHRleHRbM10gPz8gbnVsbCkgIT09ICcoJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTdXBwb3J0c0V4cHJlc3Npb24oU3VwcG9ydHNFeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRVbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRWYWx1ZUV4cHJlc3Npb24oVmFsdWVFeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRWYXJpYWJsZUV4cHJlc3Npb24oVmFyaWFibGVFeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/ListExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcTGlzdFNlcGFyYXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXEV4cHJlc3Npb25WaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGxpc3QgbGl0ZXJhbC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBMaXN0RXhwcmVzc2lvbiBpbXBsZW1lbnRzIEV4cHJlc3Npb24KewogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8RXhwcmVzc2lvbj4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkY29udGVudHM7CgogICAgcHJpdmF0ZSByZWFkb25seSBMaXN0U2VwYXJhdG9yICRzZXBhcmF0b3I7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGJyYWNrZXRzOwoKICAgIC8qKgogICAgICogTGlzdEV4cHJlc3Npb24gY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8RXhwcmVzc2lvbj4gJGNvbnRlbnRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkY29udGVudHMsIExpc3RTZXBhcmF0b3IgJHNlcGFyYXRvciwgRmlsZVNwYW4gJHNwYW4sIGJvb2wgJGJyYWNrZXRzID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHRoaXMtPmNvbnRlbnRzID0gJGNvbnRlbnRzOwogICAgICAgICR0aGlzLT5zZXBhcmF0b3IgPSAkc2VwYXJhdG9yOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgJHRoaXMtPmJyYWNrZXRzID0gJGJyYWNrZXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PEV4cHJlc3Npb24+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlcGFyYXRvcigpOiBMaXN0U2VwYXJhdG9yCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZXBhcmF0b3I7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0JyYWNrZXRzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmJyYWNrZXRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoRXhwcmVzc2lvblZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdExpc3RFeHByZXNzaW9uKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICAkYnVmZmVyID0gJyc7CiAgICAgICAgaWYgKCR0aGlzLT5oYXNCcmFja2V0cygpKSB7CiAgICAgICAgICAgICRidWZmZXIgLj0gJ1snOwogICAgICAgIH0gZWxzZWlmIChcY291bnQoJHRoaXMtPmNvbnRlbnRzKSA9PT0gMCB8fCAoXGNvdW50KCR0aGlzLT5jb250ZW50cykgPT09IDEgJiYgJHRoaXMtPnNlcGFyYXRvciA9PT0gTGlzdFNlcGFyYXRvcjo6Q09NTUEpKSB7CiAgICAgICAgICAgICRidWZmZXIgLj0gJygnOwogICAgICAgIH0KCiAgICAgICAgJGJ1ZmZlciAuPSBpbXBsb2RlKAogICAgICAgICAgICAkdGhpcy0+c2VwYXJhdG9yID09PSBMaXN0U2VwYXJhdG9yOjpDT01NQSA/ICcsICcgOiAnICcsCiAgICAgICAgICAgIGFycmF5X21hcChmbigkZWxlbWVudCkgPT4gJHRoaXMtPmVsZW1lbnROZWVkc1BhcmVucygkZWxlbWVudCkgPyAiKCRlbGVtZW50KSIgOiAoc3RyaW5nKSAkZWxlbWVudCwgJHRoaXMtPmNvbnRlbnRzKQogICAgICAgICk7CgogICAgICAgIGlmICgkdGhpcy0+aGFzQnJhY2tldHMoKSkgewogICAgICAgICAgICAkYnVmZmVyIC49ICddJzsKICAgICAgICB9IGVsc2VpZiAoXGNvdW50KCR0aGlzLT5jb250ZW50cykgPT09IDApIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAnKSc7CiAgICAgICAgfSBlbHNlaWYgKFxjb3VudCgkdGhpcy0+Y29udGVudHMpID09PSAxICYmICR0aGlzLT5zZXBhcmF0b3IgPT09IExpc3RTZXBhcmF0b3I6OkNPTU1BKSB7CiAgICAgICAgICAgICRidWZmZXIgLj0gJywpJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRleHByZXNzaW9uLCBjb250YWluZWQgaW4gJHRoaXMsIG5lZWRzIHBhcmVudGhlc2VzIHdoZW4KICAgICAqIHByaW50ZWQgYXMgU2FzcyBzb3VyY2UuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZWxlbWVudE5lZWRzUGFyZW5zKEV4cHJlc3Npb24gJGV4cHJlc3Npb24pOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRleHByZXNzaW9uIGluc3RhbmNlb2YgTGlzdEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgaWYgKFxjb3VudCgkZXhwcmVzc2lvbi0+Y29udGVudHMpIDwgMikgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGV4cHJlc3Npb24tPmJyYWNrZXRzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2VwYXJhdG9yID09PSBMaXN0U2VwYXJhdG9yOjpDT01NQSA/ICRleHByZXNzaW9uLT5zZXBhcmF0b3IgPT09IExpc3RTZXBhcmF0b3I6OkNPTU1BIDogJGV4cHJlc3Npb24tPnNlcGFyYXRvciAhPT0gTGlzdFNlcGFyYXRvcjo6VU5ERUNJREVEOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5zZXBhcmF0b3IgIT09IExpc3RTZXBhcmF0b3I6OlNQQUNFKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkZXhwcmVzc2lvbiBpbnN0YW5jZW9mIFVuYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbikgewogICAgICAgICAgICByZXR1cm4gJGV4cHJlc3Npb24tPmdldE9wZXJhdG9yKCkgPT09IFVuYXJ5T3BlcmF0b3I6OlBMVVMgfHwgJGV4cHJlc3Npb24tPmdldE9wZXJhdG9yKCkgPT09IFVuYXJ5T3BlcmF0b3I6Ok1JTlVTOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/MapExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBtYXAgbGl0ZXJhbC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNYXBFeHByZXNzaW9uIGltcGxlbWVudHMgRXhwcmVzc2lvbgp7CiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxhcnJheXtFeHByZXNzaW9uLCBFeHByZXNzaW9ufT4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkcGFpcnM7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PGFycmF5e0V4cHJlc3Npb24sIEV4cHJlc3Npb259PiAkcGFpcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRwYWlycywgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPnBhaXJzID0gJHBhaXJzOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8YXJyYXl7RXhwcmVzc2lvbiwgRXhwcmVzc2lvbn0+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYWlycygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFpcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0TWFwRXhwcmVzc2lvbigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICcoJyAuIGltcGxvZGUoJywgJywgYXJyYXlfbWFwKGZuKCRwYWlyKSA9PiAkcGFpclswXSAuICc6ICcgLiAkcGFpclsxXSwgJHRoaXMtPnBhaXJzKSkgLiAnKSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/NullExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBudWxsIGxpdGVyYWwuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTnVsbEV4cHJlc3Npb24gaW1wbGVtZW50cyBFeHByZXNzaW9uCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0TnVsbEV4cHJlc3Npb24oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnbnVsbCc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/NumberExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc051bWJlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXEV4cHJlc3Npb25WaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIG51bWJlciBsaXRlcmFsLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE51bWJlckV4cHJlc3Npb24gaW1wbGVtZW50cyBFeHByZXNzaW9uCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgZmxvYXQgJHZhbHVlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICR1bml0OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChmbG9hdCAkdmFsdWUsIEZpbGVTcGFuICRzcGFuLCA/c3RyaW5nICR1bml0ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgICAgICAkdGhpcy0+dW5pdCA9ICR1bml0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVuaXQoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dW5pdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KEV4cHJlc3Npb25WaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXROdW1iZXJFeHByZXNzaW9uKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gKHN0cmluZykgU2Fzc051bWJlcjo6Y3JlYXRlKCR0aGlzLT52YWx1ZSwgJHRoaXMtPnVuaXQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/ParenthesizedExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQW4gZXhwcmVzc2lvbiB3cmFwcGVkIGluIHBhcmVudGhlc2VzLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uIGltcGxlbWVudHMgRXhwcmVzc2lvbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEV4cHJlc3Npb24gJGV4cHJlc3Npb247CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoRXhwcmVzc2lvbiAkZXhwcmVzc2lvbiwgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24gPSAkZXhwcmVzc2lvbjsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHByZXNzaW9uKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmV4cHJlc3Npb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnKCcgLiAkdGhpcy0+ZXhwcmVzc2lvbiAuICcpJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/SelectorExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBwYXJlbnQgc2VsZWN0b3IgcmVmZXJlbmNlLCBgJmAuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU2VsZWN0b3JFeHByZXNzaW9uIGltcGxlbWVudHMgRXhwcmVzc2lvbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoRXhwcmVzc2lvblZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdFNlbGVjdG9yRXhwcmVzc2lvbigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICcmJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/StringExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcSW50ZXJwb2xhdGlvbkJ1ZmZlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXENoYXJhY3RlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXEV4cHJlc3Npb25WaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIHN0cmluZyBsaXRlcmFsLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFN0cmluZ0V4cHJlc3Npb24gaW1wbGVtZW50cyBFeHByZXNzaW9uCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgSW50ZXJwb2xhdGlvbiAkdGV4dDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJHF1b3RlczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoSW50ZXJwb2xhdGlvbiAkdGV4dCwgYm9vbCAkcXVvdGVzID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHRoaXMtPnRleHQgPSAkdGV4dDsKICAgICAgICAkdGhpcy0+cXVvdGVzID0gJHF1b3RlczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgZXhwcmVzc2lvbiB3aXRoIG5vIGludGVycG9sYXRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGxhaW4oc3RyaW5nICR0ZXh0LCBGaWxlU3BhbiAkc3BhbiwgYm9vbCAkcXVvdGVzID0gZmFsc2UpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKG5ldyBJbnRlcnBvbGF0aW9uKFskdGV4dF0sICRzcGFuKSwgJHF1b3Rlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIFNhc3Mgc291cmNlIGZvciBhIHF1b3RlZCBzdHJpbmcgdGhhdCwgd2hlbiBldmFsdWF0ZWQsIHdpbGwgaGF2ZQogICAgICogJHRleHQgYXMgaXRzIGNvbnRlbnRzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHF1b3RlVGV4dChzdHJpbmcgJHRleHQpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcXVvdGUgPSBzZWxmOjpiZXN0UXVvdGUoWyR0ZXh0XSk7CiAgICAgICAgJGJ1ZmZlciA9ICRxdW90ZTsKICAgICAgICAkYnVmZmVyIC49IHNlbGY6OnF1b3RlSW5uZXJUZXh0KCR0ZXh0LCAkcXVvdGUsIHRydWUpOwogICAgICAgICRidWZmZXIgLj0gJHF1b3RlOwoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEludGVycG9sYXRpb24gdGhhdCwgd2hlbiBldmFsdWF0ZWQsIHByb2R1Y2VzIHRoZSBjb250ZW50cyBvZiB0aGlzIHN0cmluZy4KICAgICAqCiAgICAgKiBVbmxpa2Uge0BzZWUgYXNJbnRlcnBvbGF0aW9ufSwgZXNjYXBlcyBhcmUgcmVzb2x2ZWQgYW5kIHF1b3RlcyBhcmUgbm90CiAgICAgKiBpbmNsdWRlZC4KICAgICAqIElmIHRoaXMgaXMgYSBxdW90ZWQgc3RyaW5nLCBlc2NhcGVzIGFyZSByZXNvbHZlZCBhbmQgcXVvdGVzIGFyZSBub3QKICAgICAqIGluY2x1ZGVkIGluIHRoaXMgdGV4dCAodW5saWtlIHtAc2VlIGFzSW50ZXJwb2xhdGlvbn0pLiBJZiBpdCdzIGFuIHVucXVvdGVkCiAgICAgKiBzdHJpbmcsIGVzY2FwZXMgYXJlICpub3QqIHJlc29sdmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGV4dCgpOiBJbnRlcnBvbGF0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZXh0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNRdW90ZXMoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cXVvdGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZXh0LT5nZXRTcGFuKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0U3RyaW5nRXhwcmVzc2lvbigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFzSW50ZXJwb2xhdGlvbihib29sICRzdGF0aWMgPSBmYWxzZSwgP3N0cmluZyAkcXVvdGUgPSBudWxsKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIGlmICghJHRoaXMtPnF1b3RlcykgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnRleHQ7CiAgICAgICAgfQoKICAgICAgICAkcXVvdGUgPSAkcXVvdGUgPz8gc2VsZjo6YmVzdFF1b3RlKCR0aGlzLT50ZXh0LT5nZXRDb250ZW50cygpKTsKICAgICAgICAkYnVmZmVyID0gbmV3IEludGVycG9sYXRpb25CdWZmZXIoKTsKCiAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHF1b3RlKTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnRleHQtPmdldENvbnRlbnRzKCkgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT5hZGQoJHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKHNlbGY6OnF1b3RlSW5uZXJUZXh0KCR2YWx1ZSwgJHF1b3RlLCAkc3RhdGljKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRidWZmZXItPndyaXRlKCRxdW90ZSk7CgogICAgICAgIHJldHVybiAkYnVmZmVyLT5idWlsZEludGVycG9sYXRpb24oJHRoaXMtPnRleHQtPmdldFNwYW4oKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcXVvdGVJbm5lclRleHQoc3RyaW5nICR2YWx1ZSwgc3RyaW5nICRxdW90ZSwgYm9vbCAkc3RhdGljID0gZmFsc2UpOiBzdHJpbmcKICAgIHsKICAgICAgICAkYnVmZmVyID0gJyc7CiAgICAgICAgJGxlbmd0aCA9IFxzdHJsZW4oJHZhbHVlKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkrKykgewogICAgICAgICAgICAkY2hhciA9ICR2YWx1ZVskaV07CgogICAgICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc05ld2xpbmUoJGNoYXIpKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICdcXGEnOwoKICAgICAgICAgICAgICAgIGlmICgkaSAhPT0gJGxlbmd0aCAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAkbmV4dCA9ICR2YWx1ZVskaSArIDFdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJG5leHQpIHx8IENoYXJhY3Rlcjo6aXNIZXgoJG5leHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJyAnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJHF1b3RlIHx8ICRjaGFyID09PSAnXFwnIHx8ICgkc3RhdGljICYmICRjaGFyID09PSAnIycgJiYgJGkgPCAkbGVuZ3RoIC0gMSAmJiAkdmFsdWVbJGkgKyAxXSA9PT0gJ3snKSkgewogICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJ1xcJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoXG9yZCgkY2hhcikgPCAweDgwKSB7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkY2hhcjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvLi91c0EnLCAkdmFsdWUsICRtLCAwLCAkaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oJ0ludmFsaWQgVVRGLTggY2hhcicpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkbVswXTsKICAgICAgICAgICAgICAgICAgICAkaSArPSBcc3RybGVuKCRtWzBdKSAtIDE7IC8vIHNraXAgb3ZlciB0aGUgZXh0cmEgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gcHJvY2Vzc2VkLgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmd8RXhwcmVzc2lvbj4gJHBhcnRzCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGJlc3RRdW90ZShhcnJheSAkcGFydHMpOiBzdHJpbmcKICAgIHsKICAgICAgICAkY29udGFpbnNEb3VibGVRdW90ZSA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkcGFydHMgYXMgJHBhcnQpIHsKICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRwYXJ0KSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzdHJfY29udGFpbnMoJHBhcnQsICInIikpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnIic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzdHJfY29udGFpbnMoJHBhcnQsICciJykpIHsKICAgICAgICAgICAgICAgICRjb250YWluc0RvdWJsZVF1b3RlID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjb250YWluc0RvdWJsZVF1b3RlID8gIiciIDogJyInOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAoc3RyaW5nKSAkdGhpcy0+YXNJbnRlcnBvbGF0aW9uKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/SupportsExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3VwcG9ydHNDb25kaXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQW4gZXhwcmVzc2lvbi1sZXZlbCBgQHN1cHBvcnRzYCBjb25kaXRpb24uCiAqCiAqIFRoaXMgYXBwZWFycyBvbmx5IGluIHRoZSBtb2RpZmllcnMgdGhhdCBjb21lIGFmdGVyIGEgcGxhaW4tQ1NTIGBAaW1wb3J0YC4gSXQKICogZG9lc24ndCBpbmNsdWRlIHRoZSBmdW5jdGlvbiBuYW1lIHdyYXBwaW5nIHRoZSBjb25kaXRpb24uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU3VwcG9ydHNFeHByZXNzaW9uIGltcGxlbWVudHMgRXhwcmVzc2lvbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IFN1cHBvcnRzQ29uZGl0aW9uICRjb25kaXRpb247CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFN1cHBvcnRzQ29uZGl0aW9uICRjb25kaXRpb24pCiAgICB7CiAgICAgICAgJHRoaXMtPmNvbmRpdGlvbiA9ICRjb25kaXRpb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbmRpdGlvbigpOiBTdXBwb3J0c0NvbmRpdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29uZGl0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb25kaXRpb24tPmdldFNwYW4oKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KEV4cHJlc3Npb25WaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRTdXBwb3J0c0V4cHJlc3Npb24oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAoc3RyaW5nKSAkdGhpcy0+Y29uZGl0aW9uOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/UnaryOperationExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSB1bmFyeSBvcGVyYXRvciwgYXMgaW4gYCskdmFyYCBvciBgbm90IGZuKClgLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFVuYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiBpbXBsZW1lbnRzIEV4cHJlc3Npb24KewogICAgcHJpdmF0ZSByZWFkb25seSBVbmFyeU9wZXJhdG9yICRvcGVyYXRvcjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEV4cHJlc3Npb24gJG9wZXJhbmQ7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoVW5hcnlPcGVyYXRvciAkb3BlcmF0b3IsIEV4cHJlc3Npb24gJG9wZXJhbmQsIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT5vcGVyYXRvciA9ICRvcGVyYXRvcjsKICAgICAgICAkdGhpcy0+b3BlcmFuZCA9ICRvcGVyYW5kOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9wZXJhdG9yKCk6IFVuYXJ5T3BlcmF0b3IKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9wZXJhdG9yOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcGVyYW5kKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9wZXJhbmQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0VW5hcnlPcGVyYXRpb25FeHByZXNzaW9uKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICAkYnVmZmVyID0gJHRoaXMtPm9wZXJhdG9yLT5nZXRPcGVyYXRvcigpOwogICAgICAgIGlmICgkdGhpcy0+b3BlcmF0b3IgPT09IFVuYXJ5T3BlcmF0b3I6Ok5PVCkgewogICAgICAgICAgICAkYnVmZmVyIC49ICcgJzsKICAgICAgICB9CgogICAgICAgICRuZWVkc1BhcmVucyA9ICR0aGlzLT5vcGVyYW5kIGluc3RhbmNlb2YgQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbgogICAgICAgICAgICB8fCAkdGhpcy0+b3BlcmFuZCBpbnN0YW5jZW9mIFVuYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbgogICAgICAgICAgICB8fCAoJHRoaXMtPm9wZXJhbmQgaW5zdGFuY2VvZiBMaXN0RXhwcmVzc2lvbiAmJiAhJHRoaXMtPm9wZXJhbmQtPmhhc0JyYWNrZXRzKCkgJiYgXGNvdW50KCR0aGlzLT5vcGVyYW5kLT5nZXRDb250ZW50cygpKSA+IDEpOwoKICAgICAgICBpZiAoJG5lZWRzUGFyZW5zKSB7CiAgICAgICAgICAgICRidWZmZXIgLj0gJygnOwogICAgICAgIH0KCiAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+b3BlcmFuZDsKCiAgICAgICAgaWYgKCRuZWVkc1BhcmVucykgewogICAgICAgICAgICAkYnVmZmVyIC49ICcpJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/UnaryOperator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CgovKioKICogQGludGVybmFsCiAqLwplbnVtIFVuYXJ5T3BlcmF0b3IKewogICAgY2FzZSBQTFVTOwogICAgY2FzZSBNSU5VUzsKICAgIGNhc2UgRElWSURFOwogICAgY2FzZSBOT1Q7CgogICAgLyoqCiAgICAgKiBUaGUgU2FzcyBzeW50YXggZm9yIHRoaXMgb3BlcmF0b3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE9wZXJhdG9yKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMpIHsKICAgICAgICAgICAgc2VsZjo6UExVUyA9PiAnKycsCiAgICAgICAgICAgIHNlbGY6Ok1JTlVTID0+ICctJywKICAgICAgICAgICAgc2VsZjo6RElWSURFID0+ICcvJywKICAgICAgICAgICAgc2VsZjo6Tk9UID0+ICdub3QnLAogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/ValueExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcVmFsdWU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxFeHByZXNzaW9uVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQW4gZXhwcmVzc2lvbiB0aGF0IGRpcmVjdGx5IGVtYmVkcyBhIHZhbHVlLgogKgogKiBUaGlzIGlzIG5ldmVyIGNvbnN0cnVjdGVkIGJ5IHRoZSBwYXJzZXIuIEl0J3Mgb25seSB1c2VkIHdoZW4gQVNUcyBhcmUKICogY29uc3RydWN0ZWQgZHluYW1pY2FsbHksIGFzIGZvciB0aGUgYGNhbGwoKWAgZnVuY3Rpb24uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgVmFsdWVFeHByZXNzaW9uIGltcGxlbWVudHMgRXhwcmVzc2lvbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IFZhbHVlICR2YWx1ZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChWYWx1ZSAkdmFsdWUsIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChFeHByZXNzaW9uVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0VmFsdWVFeHByZXNzaW9uKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gKHN0cmluZykgJHRoaXMtPnZhbHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Expression/VariableExpression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU2Fzc1JlZmVyZW5jZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFNwYW5VdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcRXhwcmVzc2lvblZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgU2FzcyB2YXJpYWJsZS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBWYXJpYWJsZUV4cHJlc3Npb24gaW1wbGVtZW50cyBFeHByZXNzaW9uLCBTYXNzUmVmZXJlbmNlCnsKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB2YXJpYWJsZSwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8gaHlwaGVucy4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG5hbWU7CgogICAgLyoqCiAgICAgKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSB2YXJpYWJsZSBiZWluZyByZWZlcmVuY2VkLCBvciBgbnVsbGAgaWYgaXQncwogICAgICogcmVmZXJlbmNlZCB3aXRob3V0IGEgbmFtZXNwYWNlLgogICAgICovCiAgICBwcml2YXRlID9zdHJpbmcgJG5hbWVzcGFjZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG5hbWUsIEZpbGVTcGFuICRzcGFuLCA/c3RyaW5nICRuYW1lc3BhY2UgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICAkdGhpcy0+bmFtZXNwYWNlID0gJG5hbWVzcGFjZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVzcGFjZSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lc3BhY2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5uYW1lc3BhY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFNwYW5VdGlsOjp3aXRob3V0TmFtZXNwYWNlKCR0aGlzLT5zcGFuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZXNwYWNlU3BhbigpOiA/RmlsZVNwYW4KICAgIHsKICAgICAgICBpZiAoJHRoaXMtPm5hbWVzcGFjZSA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTcGFuVXRpbDo6aW5pdGlhbElkZW50aWZpZXIoJHRoaXMtPnNwYW4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoRXhwcmVzc2lvblZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdFZhcmlhYmxlRXhwcmVzc2lvbigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuLT5nZXRUZXh0KCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKLyoqCiAqIEFuIGludGVyZmFjZSBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIGltcG9ydC4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgSW1wb3J0IGV4dGVuZHMgU2Fzc05vZGUKewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Import/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Import/DynamicImport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEltcG9ydDsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXFVyaTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFN0cmluZ0V4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW1wb3J0Owp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBbiBpbXBvcnQgdGhhdCB3aWxsIGxvYWQgYSBTYXNzIGZpbGUgYXQgcnVudGltZS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBEeW5hbWljSW1wb3J0IGltcGxlbWVudHMgSW1wb3J0CnsKICAgIC8qKgogICAgICogVGhlIFVSSSBvZiB0aGUgZmlsZSB0byBpbXBvcnQuCiAgICAgKgogICAgICogSWYgdGhpcyBpcyByZWxhdGl2ZSwgaXQncyByZWxhdGl2ZSB0byB0aGUgY29udGFpbmluZyBmaWxlLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkdXJsU3RyaW5nOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkdXJsU3RyaW5nLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+dXJsU3RyaW5nID0gJHVybFN0cmluZzsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVcmwoKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIFVyaTo6bmV3KCR0aGlzLT51cmxTdHJpbmcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVcmxTdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmxTdHJpbmc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFN0cmluZ0V4cHJlc3Npb246OnF1b3RlVGV4dCgkdGhpcy0+dXJsU3RyaW5nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Import/StaticImport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEltcG9ydDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW1wb3J0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEludGVycG9sYXRpb247CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEFuIGltcG9ydCB0aGF0IHByb2R1Y2VzIGEgcGxhaW4gQ1NTIGBAaW1wb3J0YCBydWxlLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFN0YXRpY0ltcG9ydCBpbXBsZW1lbnRzIEltcG9ydAp7CiAgICAvKioKICAgICAqIFRoZSBVUkwgZm9yIHRoaXMgaW1wb3J0LgogICAgICoKICAgICAqIFRoaXMgYWxyZWFkeSBjb250YWlucyBxdW90ZXMuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgSW50ZXJwb2xhdGlvbiAkdXJsOwoKICAgIC8qKgogICAgICogVGhlIG1vZGlmaWVycyAoc3VjaCBhcyBtZWRpYSBvciBzdXBwb3J0cyBxdWVyaWVzKSBhdHRhY2hlZCB0byB0aGlzIGltcG9ydCwKICAgICAqIG9yIGBudWxsYCBpZiBub25lIGFyZSBhdHRhY2hlZC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSA/SW50ZXJwb2xhdGlvbiAkbW9kaWZpZXJzOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEludGVycG9sYXRpb24gJHVybCwgRmlsZVNwYW4gJHNwYW4sID9JbnRlcnBvbGF0aW9uICRtb2RpZmllcnMgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT51cmwgPSAkdXJsOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgJHRoaXMtPm1vZGlmaWVycyA9ICRtb2RpZmllcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVybCgpOiBJbnRlcnBvbGF0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZGlmaWVycygpOiA/SW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kaWZpZXJzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgICRidWZmZXIgPSAoc3RyaW5nKSAkdGhpcy0+dXJsOwoKICAgICAgICBpZiAoJHRoaXMtPm1vZGlmaWVycyAhPT0gbnVsbCkgewogICAgICAgICAgICAkYnVmZmVyIC49ICcgJyAuICR0aGlzLT5tb2RpZmllcnM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Interpolation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcSW50ZXJwb2xhdGlvbkJ1ZmZlcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogUGxhaW4gdGV4dCBpbnRlcnBvbGF0ZWQgd2l0aCBTYXNzIGV4cHJlc3Npb25zLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEludGVycG9sYXRpb24gaW1wbGVtZW50cyBTYXNzTm9kZQp7CiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxzdHJpbmd8RXhwcmVzc2lvbj4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkY29udGVudHM7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZ3xFeHByZXNzaW9uPiAkY29udGVudHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRjb250ZW50cywgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgXGNvdW50KCRjb250ZW50cyk7ICRpKyspIHsKICAgICAgICAgICAgLy8gRGFydC1zYXNzIGhhcyBhIHZhbGlkYXRpb24gb24gdGhlIHR5cGUgb2YgZWxlbWVudHMgaGVyZS4gVGhpcyBpcyB1c2VsZXNzIGZvciB1cyBiZWNhdXNlIHBocHN0YW4gc3VwcG9ydHMgdW5pb24gdHlwZXMsIHVubGlrZSB0aGUgRGFydCB0eXBlIHN5c3RlbQoKICAgICAgICAgICAgaWYgKCRpICE9IDAgJiYgXGlzX3N0cmluZygkY29udGVudHNbJGldKSAmJiBcaXNfc3RyaW5nKCRjb250ZW50c1skaSAtIDFdKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBjb250ZW50cyBvZiBhbiBJbnRlcnBvbGF0aW9uIG1heSBub3QgY29udGFpbiBhZGphY2VudCBzdHJpbmdzLicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y29udGVudHMgPSAkY29udGVudHM7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxzdHJpbmd8RXhwcmVzc2lvbj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb250ZW50czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIGNvbnRhaW5zIG5vIGludGVycG9sYXRlZCBleHByZXNzaW9ucy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUGxhaW4oKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0QXNQbGFpbigpICE9PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogSWYgdGhpcyBjb250YWlucyBubyBpbnRlcnBvbGF0ZWQgZXhwcmVzc2lvbnMsIHJldHVybnMgaXRzIHRleHQgY29udGVudHMuCiAgICAgKgogICAgICogT3RoZXJ3aXNlLCByZXR1cm5zIGBudWxsYC4KICAgICAqCiAgICAgKiBAcHNhbG0tbXV0YXRpb24tZnJlZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXNQbGFpbigpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkdGhpcy0+Y29udGVudHMpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJHRoaXMtPmNvbnRlbnRzKSA+IDEpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX3N0cmluZygkdGhpcy0+Y29udGVudHNbMF0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudHNbMF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHBsYWluIHRleHQgYmVmb3JlIHRoZSBpbnRlcnBvbGF0aW9uLCBvciB0aGUgZW1wdHkgc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5pdGlhbFBsYWluKCk6IHN0cmluZwogICAgewogICAgICAgICRmaXJzdCA9ICR0aGlzLT5jb250ZW50c1swXSA/PyBudWxsOwoKICAgICAgICBpZiAoXGlzX3N0cmluZygkZmlyc3QpKSB7CiAgICAgICAgICAgIHJldHVybiAkZmlyc3Q7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJycsIGFycmF5X21hcChmbigkdmFsdWUpID0+IFxpc19zdHJpbmcoJHZhbHVlKSA/ICR2YWx1ZSA6ICcjeycgLiAkdmFsdWUgLiAnfScsICR0aGlzLT5jb250ZW50cykpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SassDeclaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBjb21tb24gaW50ZXJmYWNlIGZvciBhbnkgbm9kZSB0aGF0IGRlY2xhcmVzIGEgU2FzcyBtZW1iZXIuCiAqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIFNhc3NEZWNsYXJhdGlvbiBleHRlbmRzIFNhc3NOb2RlCnsKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhlIGRlY2xhcmF0aW9uLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBoeXBoZW5zLgogICAgICoKICAgICAqIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgYCRgIGZvciB2YXJpYWJsZXMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFRoZSBzcGFuIGNvbnRhaW5pbmcgdGhpcyBkZWNsYXJhdGlvbidzIG5hbWUuCiAgICAgKgogICAgICogVGhpcyBpbmNsdWRlcyB0aGUgYCRgIGZvciB2YXJpYWJsZXMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lU3BhbigpOiBGaWxlU3BhbjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SassNode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQXN0Tm9kZTsKCi8qKgogKiBBIG5vZGUgaW4gdGhlIGFic3RyYWN0IHN5bnRheCB0cmVlIGZvciBhbiB1bmV2YWx1YXRlZCBTYXNzIGZpbGUuCiAqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIFNhc3NOb2RlIGV4dGVuZHMgQXN0Tm9kZQp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SassReference.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBjb21tb24gaW50ZXJmYWNlIGZvciBhbnkgbm9kZSB0aGF0IHJlZmVyZW5jZXMgYSBTYXNzIG1lbWJlci4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgU2Fzc1JlZmVyZW5jZSBleHRlbmRzIFNhc3NOb2RlCnsKICAgIC8qKgogICAgICogVGhlIG5hbWVzcGFjZSBvZiB0aGUgbWVtYmVyIGJlaW5nIHJlZmVyZW5jZWQsIG9yIGBudWxsYCBpZiBpdCdzIHJlZmVyZW5jZWQKICAgICAqIHdpdGhvdXQgYSBuYW1lc3BhY2UuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lc3BhY2UoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgYmVpbmcgcmVmZXJlbmNlZCwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8KICAgICAqIGh5cGhlbnMuCiAgICAgKgogICAgICogVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBgJGAgZm9yIHZhcmlhYmxlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogVGhlIHNwYW4gY29udGFpbmluZyB0aGlzIHJlZmVyZW5jZSdzIG5hbWUuCiAgICAgKgogICAgICogRm9yIHZhcmlhYmxlcywgdGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYCRgLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZVNwYW4oKTogRmlsZVNwYW47CgogICAgLyoqCiAgICAgKiBUaGUgc3BhbiBjb250YWluaW5nIHRoaXMgcmVmZXJlbmNlJ3MgbmFtZXNwYWNlLCBudWxsIGlmIHtAc2VlIGdldE5hbWVzcGFjZX0gaXMKICAgICAqIG51bGwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lc3BhY2VTcGFuKCk6ID9GaWxlU3BhbjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFN0YXRlbWVudFZpc2l0b3I7CgovKioKICogQSBzdGF0ZW1lbnQgaW4gYSBTYXNzIHN5bnRheCB0cmVlLgogKgogKiBAaW50ZXJuYWwKICovCmludGVyZmFjZSBTdGF0ZW1lbnQgZXh0ZW5kcyBTYXNzTm9kZQp7CiAgICAvKioKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKiBAcGFyYW0gU3RhdGVtZW50VmlzaXRvcjxUPiAkdmlzaXRvcgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/AtRootRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGBAYXQtcm9vdGAgcnVsZS4KICoKICogVGhpcyBtb3ZlcyBpdCBjb250ZW50cyAidXAiIHRoZSB0cmVlIHRocm91Z2ggcGFyZW50IG5vZGVzLgogKgogKiBAZXh0ZW5kcyBQYXJlbnRTdGF0ZW1lbnQ8U3RhdGVtZW50W10+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQXRSb290UnVsZSBleHRlbmRzIFBhcmVudFN0YXRlbWVudAp7CiAgICBwcml2YXRlIHJlYWRvbmx5ID9JbnRlcnBvbGF0aW9uICRxdWVyeTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIFN0YXRlbWVudFtdICRjaGlsZHJlbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbiwgP0ludGVycG9sYXRpb24gJHF1ZXJ5ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+cXVlcnkgPSAkcXVlcnk7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRjaGlsZHJlbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgcXVlcnkgc3BlY2lmeWluZyB3aGljaCBzdGF0ZW1lbnRzIHRoaXMgc2hvdWxkIG1vdmUgaXRzIGNvbnRlbnRzIHRocm91Z2guCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeSgpOiA/SW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRBdFJvb3RSdWxlKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICAkYnVmZmVyID0gJ0BhdC1yb290ICc7CiAgICAgICAgaWYgKCR0aGlzLT5xdWVyeSAhPT0gbnVsbCkgewogICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5xdWVyeSAuICcgJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYnVmZmVyIC4gJ3snIC4gaW1wbG9kZSgnICcsICR0aGlzLT5nZXRDaGlsZHJlbigpKSAuICd9JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/AtRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBbiB1bmtub3duIGF0LXJ1bGUuCiAqCiAqIEBleHRlbmRzIFBhcmVudFN0YXRlbWVudDxTdGF0ZW1lbnRbXXxudWxsPgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEF0UnVsZSBleHRlbmRzIFBhcmVudFN0YXRlbWVudAp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEludGVycG9sYXRpb24gJG5hbWU7CgogICAgcHJpdmF0ZSByZWFkb25seSA/SW50ZXJwb2xhdGlvbiAkdmFsdWU7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdGF0ZW1lbnRbXXxudWxsICRjaGlsZHJlbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoSW50ZXJwb2xhdGlvbiAkbmFtZSwgRmlsZVNwYW4gJHNwYW4sID9JbnRlcnBvbGF0aW9uICR2YWx1ZSA9IG51bGwsID9hcnJheSAkY2hpbGRyZW4gPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5uYW1lID0gJG5hbWU7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkY2hpbGRyZW4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IEludGVycG9sYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCk6ID9JbnRlcnBvbGF0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFN0YXRlbWVudFZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdEF0UnVsZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICdAJyAuICR0aGlzLT5uYW1lOwogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgIT09IG51bGwpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAnICcgLiAkdGhpcy0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkY2hpbGRyZW4gPSAkdGhpcy0+Z2V0Q2hpbGRyZW4oKTsKCiAgICAgICAgaWYgKCRjaGlsZHJlbiA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJGJ1ZmZlciAuICc7JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYnVmZmVyIC4gJ3snIC4gaW1wbG9kZSgnICcsICRjaGlsZHJlbikgLiAnfSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/CallableDeclaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXJndW1lbnREZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEFuIGFic3RyYWN0IGNsYXNzIGZvciBjYWxsYWJsZXMgKGZ1bmN0aW9ucyBvciBtaXhpbnMpIHRoYXQgYXJlIGRlY2xhcmVkIGluCiAqIHVzZXIgY29kZS4KICoKICogQGV4dGVuZHMgUGFyZW50U3RhdGVtZW50PFN0YXRlbWVudFtdPgogKgogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIENhbGxhYmxlRGVjbGFyYXRpb24gZXh0ZW5kcyBQYXJlbnRTdGF0ZW1lbnQKewogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG5hbWU7CgogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG9yaWdpbmFsTmFtZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEFyZ3VtZW50RGVjbGFyYXRpb24gJGFyZ3VtZW50czsKCiAgICBwcml2YXRlIHJlYWRvbmx5ID9TaWxlbnRDb21tZW50ICRjb21tZW50OwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RhdGVtZW50W10gJGNoaWxkcmVuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG9yaWdpbmFsTmFtZSwgQXJndW1lbnREZWNsYXJhdGlvbiAkYXJndW1lbnRzLCBGaWxlU3BhbiAkc3BhbiwgYXJyYXkgJGNoaWxkcmVuLCA/U2lsZW50Q29tbWVudCAkY29tbWVudCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPm9yaWdpbmFsTmFtZSA9ICRvcmlnaW5hbE5hbWU7CiAgICAgICAgJHRoaXMtPm5hbWUgPSBzdHJfcmVwbGFjZSgnXycsICctJywgJG9yaWdpbmFsTmFtZSk7CiAgICAgICAgJHRoaXMtPmFyZ3VtZW50cyA9ICRhcmd1bWVudHM7CiAgICAgICAgJHRoaXMtPmNvbW1lbnQgPSAkY29tbWVudDsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGNoaWxkcmVuKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoaXMgY2FsbGFibGUsIHdpdGggdW5kZXJzY29yZXMgY29udmVydGVkIHRvIGh5cGhlbnMuCiAgICAgKi8KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBjYWxsYWJsZSdzIG9yaWdpbmFsIG5hbWUsIHdpdGhvdXQgdW5kZXJzY29yZXMgY29udmVydGVkIHRvIGh5cGhlbnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmlnaW5hbE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vcmlnaW5hbE5hbWU7CiAgICB9CgogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGdldEFyZ3VtZW50cygpOiBBcmd1bWVudERlY2xhcmF0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hcmd1bWVudHM7CiAgICB9CgogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnQoKTogP1NpbGVudENvbW1lbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbW1lbnQ7CiAgICB9CgogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ContentBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXJndW1lbnREZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBbiBhbm9ueW1vdXMgYmxvY2sgb2YgY29kZSB0aGF0J3MgaW52b2tlZCBmb3IgYSB7QHNlZSBDb250ZW50UnVsZX0uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ29udGVudEJsb2NrIGV4dGVuZHMgQ2FsbGFibGVEZWNsYXJhdGlvbgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBTdGF0ZW1lbnRbXSAkY2hpbGRyZW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEFyZ3VtZW50RGVjbGFyYXRpb24gJGFyZ3VtZW50cywgYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCdAY29udGVudCcsICRhcmd1bWVudHMsICRzcGFuLCAkY2hpbGRyZW4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0Q29udGVudEJsb2NrKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICAkYnVmZmVyID0gJHRoaXMtPmdldEFyZ3VtZW50cygpLT5pc0VtcHR5KCkgPyAnJyA6ICcgdXNpbmcgKCcgLiAkdGhpcy0+Z2V0QXJndW1lbnRzKCkgLiAnKSc7CgogICAgICAgIHJldHVybiAkYnVmZmVyIC4gJ3snIC4gaW1wbG9kZSgnICcsICR0aGlzLT5nZXRDaGlsZHJlbigpKSAuICd9JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ContentRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXJndW1lbnRJbnZvY2F0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFN0YXRlbWVudFZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgYEBjb250ZW50YCBydWxlLgogKgogKiBUaGlzIGlzIHVzZWQgaW4gYSBtaXhpbiB0byBpbmNsdWRlIHN0YXRlbWVudC1sZXZlbCBjb250ZW50IHBhc3NlZCBieSB0aGUKICogY2FsbGVyLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIENvbnRlbnRSdWxlIGltcGxlbWVudHMgU3RhdGVtZW50CnsKICAgIC8qKgogICAgICogVGhlIGFyZ3VtZW50cyBwYXNzIHRvIHRoaXMgYEBjb250ZW50YCBydWxlLgogICAgICoKICAgICAqIFRoaXMgd2lsbCBiZSBhbiBlbXB0eSBpbnZvY2F0aW9uIGlmIGBAY29udGVudGAgaGFzIG5vIGFyZ3VtZW50cy4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBBcmd1bWVudEludm9jYXRpb24gJGFyZ3VtZW50czsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChBcmd1bWVudEludm9jYXRpb24gJGFyZ3VtZW50cywgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPmFyZ3VtZW50cyA9ICRhcmd1bWVudHM7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXJndW1lbnRzKCk6IEFyZ3VtZW50SW52b2NhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXJndW1lbnRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0Q29udGVudFJ1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXJndW1lbnRzLT5pc0VtcHR5KCkgPyAnQGNvbnRlbnQ7JyA6ICJAY29udGVudCgkdGhpcy0+YXJndW1lbnRzKTsiOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/DebugRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGBAZGVidWdgIHJ1bGUuCiAqCiAqIFRoaXMgcHJpbnRzIGEgU2FzcyB2YWx1ZSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIERlYnVnUnVsZSBpbXBsZW1lbnRzIFN0YXRlbWVudAp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEV4cHJlc3Npb24gJGV4cHJlc3Npb247CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoRXhwcmVzc2lvbiAkZXhwcmVzc2lvbiwgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24gPSAkZXhwcmVzc2lvbjsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHByZXNzaW9uKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmV4cHJlc3Npb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXREZWJ1Z1J1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnQGRlYnVnICcgLiAkdGhpcy0+ZXhwcmVzc2lvbiAuICc7JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/Declaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFN0cmluZ0V4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGRlY2xhcmF0aW9uICh0aGF0IGlzLCBhIGBuYW1lOiB2YWx1ZWAgcGFpcikuCiAqCiAqIEBleHRlbmRzIFBhcmVudFN0YXRlbWVudDxTdGF0ZW1lbnRbXXxudWxsPgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIERlY2xhcmF0aW9uIGV4dGVuZHMgUGFyZW50U3RhdGVtZW50CnsKICAgIHByaXZhdGUgcmVhZG9ubHkgSW50ZXJwb2xhdGlvbiAkbmFtZTsKCiAgICAvKioKICAgICAqIFRoZSB2YWx1ZSBvZiB0aGlzIGRlY2xhcmF0aW9uLgogICAgICoKICAgICAqIElmIHtAc2VlIGdldENoaWxkcmVufSBpcyBgbnVsbGAsIHRoaXMgaXMgbmV2ZXIgYG51bGxgLiBPdGhlcndpc2UsIGl0IG1heSBvciBtYXkKICAgICAqIG5vdCBiZSBgbnVsbGAuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP0V4cHJlc3Npb24gJHZhbHVlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RhdGVtZW50W118bnVsbCAkY2hpbGRyZW4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChJbnRlcnBvbGF0aW9uICRuYW1lLCA/RXhwcmVzc2lvbiAkdmFsdWUsIEZpbGVTcGFuICRzcGFuLCA/YXJyYXkgJGNoaWxkcmVuID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGNoaWxkcmVuKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZShJbnRlcnBvbGF0aW9uICRuYW1lLCBFeHByZXNzaW9uICR2YWx1ZSwgRmlsZVNwYW4gJHNwYW4pOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRuYW1lLCAkdmFsdWUsICRzcGFuKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBTdGF0ZW1lbnRbXSAkY2hpbGRyZW4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXN0ZWQoSW50ZXJwb2xhdGlvbiAkbmFtZSwgYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbiwgP0V4cHJlc3Npb24gJHZhbHVlID0gbnVsbCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJG5hbWUsICR2YWx1ZSwgJHNwYW4sICRjaGlsZHJlbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKTogP0V4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgaXMgYSBDU1MgQ3VzdG9tIFByb3BlcnR5IGRlY2xhcmF0aW9uLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB0aGlzIGNhbiByZXR1cm4gYGZhbHNlYCBmb3IgZGVjbGFyYXRpb25zIHRoYXQgd2lsbCB1bHRpbWF0ZWx5IGJlCiAgICAgKiBzZXJpYWxpemVkIGFzIGN1c3RvbSBwcm9wZXJ0aWVzIGlmIHRoZXkgYXJlbid0ICpwYXJzZWQgYXMqIGN1c3RvbQogICAgICogcHJvcGVydGllcywgc3VjaCBhcyBgI3stLWZvb306IC4uLmAuCiAgICAgKgogICAgICogSWYgdGhpcyBpcyBgdHJ1ZWAsIHRoZW4gYHZhbHVlYCB3aWxsIGJlIGEge0BzZWUgU3RyaW5nRXhwcmVzc2lvbn0uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0N1c3RvbVByb3BlcnR5KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gc3RyX3N0YXJ0c193aXRoKCR0aGlzLT5uYW1lLT5nZXRJbml0aWFsUGxhaW4oKSwgJy0tJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXREZWNsYXJhdGlvbigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICR0aGlzLT5uYW1lIC4gJzonOwoKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgIGlmICghJHRoaXMtPmlzQ3VzdG9tUHJvcGVydHkoKSkgewogICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAnICc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkY2hpbGRyZW4gPSAkdGhpcy0+Z2V0Q2hpbGRyZW4oKTsKCiAgICAgICAgaWYgKCRjaGlsZHJlbiA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJGJ1ZmZlciAuICc7JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYnVmZmVyIC4gJ3snIC4gaW1wbG9kZSgnICcsICRjaGlsZHJlbikgLiAnfSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/EachRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBbiBgQGVhY2hgIHJ1bGUuCiAqCiAqIFRoaXMgaXRlcmF0ZXMgb3ZlciB2YWx1ZXMgaW4gYSBsaXN0IG9yIG1hcC4KICoKICogQGV4dGVuZHMgUGFyZW50U3RhdGVtZW50PFN0YXRlbWVudFtdPgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEVhY2hSdWxlIGV4dGVuZHMgUGFyZW50U3RhdGVtZW50CnsKICAgIC8qKgogICAgICogQHZhciBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkdmFyaWFibGVzOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRXhwcmVzc2lvbiAkbGlzdDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkdmFyaWFibGVzCiAgICAgKiBAcGFyYW0gU3RhdGVtZW50W10gJGNoaWxkcmVuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkdmFyaWFibGVzLCBFeHByZXNzaW9uICRsaXN0LCBhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT52YXJpYWJsZXMgPSAkdmFyaWFibGVzOwogICAgICAgICR0aGlzLT5saXN0ID0gJGxpc3Q7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRjaGlsZHJlbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFyaWFibGVzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YXJpYWJsZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExpc3QoKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGlzdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFN0YXRlbWVudFZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdEVhY2hSdWxlKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ0BlYWNoICcgLiBpbXBsb2RlKCcsICcsIGFycmF5X21hcChmbigkdmFyaWFibGUpID0+ICckJyAuICR2YXJpYWJsZSwgJHRoaXMtPnZhcmlhYmxlcykpIC4gJyBpbiAnIC4gJHRoaXMtPmxpc3QgLiAnIHsnIC4gaW1wbG9kZSgnICcsICR0aGlzLT5nZXRDaGlsZHJlbigpKSAuICd9JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ElseClause.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCi8qKgogKiBBbiBgQGVsc2VgIGNsYXVzZSBpbiBhbiBgQGlmYCBydWxlLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEVsc2VDbGF1c2UgZXh0ZW5kcyBJZlJ1bGVDbGF1c2UKewogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdAZWxzZSB7JyAuIGltcGxvZGUoJyAnLCAkdGhpcy0+Z2V0Q2hpbGRyZW4oKSkgLiAnfSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ErrorRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGBAZXJyb3JgIHJ1bGUuCiAqCiAqIFRoaXMgZW1pdHMgYW4gZXJyb3IgYW5kIHN0b3BzIGV4ZWN1dGlvbi4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBFcnJvclJ1bGUgaW1wbGVtZW50cyBTdGF0ZW1lbnQKewogICAgcHJpdmF0ZSByZWFkb25seSBFeHByZXNzaW9uICRleHByZXNzaW9uOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEV4cHJlc3Npb24gJGV4cHJlc3Npb24sIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT5leHByZXNzaW9uID0gJGV4cHJlc3Npb247CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RXhwcmVzc2lvbigpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5leHByZXNzaW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0RXJyb3JSdWxlKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ0BlcnJvciAnIC4gJHRoaXMtPmV4cHJlc3Npb24gLiAnOyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ExtendRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBbiBgQGV4dGVuZGAgcnVsZS4KICoKICogVGhpcyBnaXZlcyBvbmUgc2VsZWN0b3IgYWxsIHRoZSBzdHlsaW5nIG9mIGFub3RoZXIuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRXh0ZW5kUnVsZSBpbXBsZW1lbnRzIFN0YXRlbWVudAp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEludGVycG9sYXRpb24gJHNlbGVjdG9yOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRvcHRpb25hbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoSW50ZXJwb2xhdGlvbiAkc2VsZWN0b3IsIEZpbGVTcGFuICRzcGFuLCBib29sICRvcHRpb25hbCA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5zZWxlY3RvciA9ICRzZWxlY3RvcjsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgICR0aGlzLT5vcHRpb25hbCA9ICRvcHRpb25hbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VsZWN0b3IoKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2VsZWN0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgaXMgYW4gb3B0aW9uYWwgZXh0ZW5zaW9uLgogICAgICoKICAgICAqIElmIGFuIGV4dGVuc2lvbiBpc24ndCBvcHRpb25hbCwgaXQgd2lsbCBlbWl0IGFuIGVycm9yIGlmIGl0IGRvZXNuJ3QgbWF0Y2gKICAgICAqIGFueSBzZWxlY3RvcnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc09wdGlvbmFsKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9wdGlvbmFsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0RXh0ZW5kUnVsZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdAZXh0ZW5kICcgLiAkdGhpcy0+c2VsZWN0b3IgLiAoJHRoaXMtPm9wdGlvbmFsID8gJyAhb3B0aW9uYWwnIDogJycpIC4gJzsnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ForRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGBAZm9yYCBydWxlLgogKgogKiBUaGlzIGl0ZXJhdGVzIGEgc2V0IG51bWJlciBvZiB0aW1lcy4KICoKICogQGV4dGVuZHMgUGFyZW50U3RhdGVtZW50PFN0YXRlbWVudFtdPgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEZvclJ1bGUgZXh0ZW5kcyBQYXJlbnRTdGF0ZW1lbnQKewogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJHZhcmlhYmxlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRXhwcmVzc2lvbiAkZnJvbTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEV4cHJlc3Npb24gJHRvOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkZXhjbHVzaXZlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RhdGVtZW50W10gJGNoaWxkcmVuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJHZhcmlhYmxlLCBFeHByZXNzaW9uICRmcm9tLCBFeHByZXNzaW9uICR0bywgYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbiwgYm9vbCAkZXhjbHVzaXZlID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhcmlhYmxlID0gJHZhcmlhYmxlOwogICAgICAgICR0aGlzLT5mcm9tID0gJGZyb207CiAgICAgICAgJHRoaXMtPnRvID0gJHRvOwogICAgICAgICR0aGlzLT5leGNsdXNpdmUgPSAkZXhjbHVzaXZlOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkY2hpbGRyZW4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYXJpYWJsZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhcmlhYmxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcm9tKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZyb207CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRvKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB7QHNlZSBnZXRUb30gaXMgZXhjbHVzaXZlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFeGNsdXNpdmUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZXhjbHVzaXZlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0Rm9yUnVsZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdAZm9yICQnIC4gJHRoaXMtPnZhcmlhYmxlIC4gJyBmcm9tICcgLiAkdGhpcy0+ZnJvbSAuICgkdGhpcy0+ZXhjbHVzaXZlID8gJyB0byAnIDogJyB0aHJvdWdoICcpIC4gJHRoaXMtPnRvIC4gJ3snIC4gaW1wbG9kZSgnICcsICR0aGlzLT5nZXRDaGlsZHJlbigpKSAuICd9JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/FunctionRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU2Fzc0RlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcU3BhblV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgogKgogKiBUaGlzIGRlY2xhcmVzIGEgZnVuY3Rpb24gdGhhdCdzIGludm9rZWQgdXNpbmcgbm9ybWFsIENTUyBmdW5jdGlvbiBzeW50YXguCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRnVuY3Rpb25SdWxlIGV4dGVuZHMgQ2FsbGFibGVEZWNsYXJhdGlvbiBpbXBsZW1lbnRzIFNhc3NEZWNsYXJhdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZVNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gU3BhblV0aWw6OmluaXRpYWxJZGVudGlmaWVyKFNwYW5VdGlsOjp3aXRob3V0SW5pdGlhbEF0UnVsZSgkdGhpcy0+Z2V0U3BhbigpKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRGdW5jdGlvblJ1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnQGZ1bmN0aW9uICcgLiAkdGhpcy0+Z2V0TmFtZSgpIC4gJygnIC4gJHRoaXMtPmdldEFyZ3VtZW50cygpIC4gJykgeycgLiBpbXBsb2RlKCcgJywgJHRoaXMtPmdldENoaWxkcmVuKCkpIC4gJ30nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/HasContentVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRTZWFyY2hWaXNpdG9yOwoKLyoqCiAqIEEgdmlzaXRvciBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBhIHtAc2VlIE1peGluUnVsZX0gcmVjdXJzaXZlbHkgY29udGFpbnMgYQogKiB7QHNlZSBDb250ZW50UnVsZX0uCiAqCiAqIEBpbnRlcm5hbAogKgogKiBAZXh0ZW5kcyBTdGF0ZW1lbnRTZWFyY2hWaXNpdG9yPGJvb2w+CiAqLwpmaW5hbCBjbGFzcyBIYXNDb250ZW50VmlzaXRvciBleHRlbmRzIFN0YXRlbWVudFNlYXJjaFZpc2l0b3IKewogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29udGVudFJ1bGUoQ29udGVudFJ1bGUgJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/IfClause.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CgovKioKICogQW4gYEBpZmAgb3IgYEBlbHNlIGlmYCBjbGF1c2UgaW4gYW4gYEBpZmAgcnVsZS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBJZkNsYXVzZSBleHRlbmRzIElmUnVsZUNsYXVzZQp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEV4cHJlc3Npb24gJGV4cHJlc3Npb247CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RhdGVtZW50W10gJGNoaWxkcmVuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChFeHByZXNzaW9uICRleHByZXNzaW9uLCBhcnJheSAkY2hpbGRyZW4pCiAgICB7CiAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24gPSAkZXhwcmVzc2lvbjsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRjaGlsZHJlbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEV4cHJlc3Npb24oKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZXhwcmVzc2lvbjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/IfRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcU3RhdGVtZW50VmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQW4gYEBpZmAgcnVsZS4KICoKICogVGhpcyBjb25kaXRpb25hbGx5IGV4ZWN1dGVzIGEgYmxvY2sgb2YgY29kZS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBJZlJ1bGUgaW1wbGVtZW50cyBTdGF0ZW1lbnQKewogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8SWZDbGF1c2U+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJGNsYXVzZXM7CgogICAgcHJpdmF0ZSByZWFkb25seSA/RWxzZUNsYXVzZSAkbGFzdENsYXVzZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8SWZDbGF1c2U+ICRjbGF1c2VzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkY2xhdXNlcywgRmlsZVNwYW4gJHNwYW4sID9FbHNlQ2xhdXNlICRsYXN0Q2xhdXNlID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xhdXNlcyA9ICRjbGF1c2VzOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgJHRoaXMtPmxhc3RDbGF1c2UgPSAkbGFzdENsYXVzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBgQGlmYCBhbmQgYEBlbHNlIGlmYCBjbGF1c2VzLgogICAgICoKICAgICAqIFRoZSBmaXJzdCBjbGF1c2Ugd2hvc2UgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYHRydWVgIHdpbGwgaGF2ZSBpdHMKICAgICAqIHN0YXRlbWVudHMgZXhlY3V0ZWQuIElmIG5vIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYCwgYGxhc3RDbGF1c2VgCiAgICAgKiB3aWxsIGJlIGV4ZWN1dGVkIGlmIGl0J3Mgbm90IGBudWxsYC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8SWZDbGF1c2U+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGF1c2VzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGF1c2VzOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZpbmFsLCB1bmNvbmRpdGlvbmFsIGBAZWxzZWAgY2xhdXNlLgogICAgICoKICAgICAqIFRoaXMgaXMgYG51bGxgIGlmIHRoZXJlIGlzIG5vIHVuY29uZGl0aW9uYWwgYEBlbHNlYC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldExhc3RDbGF1c2UoKTogP0Vsc2VDbGF1c2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxhc3RDbGF1c2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRJZlJ1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y2xhdXNlcyBhcyAkaW5kZXggPT4gJGNsYXVzZSkgewogICAgICAgICAgICAkcGFydHNbXSA9ICgkaW5kZXggPT09IDAgPyAnQGlmICcgOiAnQGVsc2UgaWYgJykgLiAkY2xhdXNlLT5nZXRFeHByZXNzaW9uKCkgLiAneycgLiBpbXBsb2RlKCcgJywgJGNsYXVzZS0+Z2V0Q2hpbGRyZW4oKSkgLiAnfSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmxhc3RDbGF1c2UgIT09IG51bGwpIHsKICAgICAgICAgICAgJHBhcnRzW10gPSAkdGhpcy0+bGFzdENsYXVzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpbXBsb2RlKCcgJywgJHBhcnRzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/IfRuleClause.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW1wb3J0XER5bmFtaWNJbXBvcnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcSXRlcmFibGVVdGlsOwoKLyoqCiAqIFRoZSBzdXBlcmNsYXNzIG9mIGBAaWZgIGFuZCBgQGVsc2VgIGNsYXVzZXMuCiAqCiAqIEBpbnRlcm5hbAogKi8KYWJzdHJhY3QgY2xhc3MgSWZSdWxlQ2xhdXNlCnsKICAgIC8qKgogICAgICogQHZhciBTdGF0ZW1lbnRbXQogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRjaGlsZHJlbjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGRlY2xhcmF0aW9uczsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdGF0ZW1lbnRbXSAkY2hpbGRyZW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRjaGlsZHJlbikKICAgIHsKICAgICAgICAkdGhpcy0+Y2hpbGRyZW4gPSAkY2hpbGRyZW47CiAgICAgICAgJHRoaXMtPmRlY2xhcmF0aW9ucyA9IEl0ZXJhYmxlVXRpbDo6YW55KCRjaGlsZHJlbiwgZnVuY3Rpb24gKFN0YXRlbWVudCAkY2hpbGQpIHsKICAgICAgICAgICAgaWYgKCRjaGlsZCBpbnN0YW5jZW9mIFZhcmlhYmxlRGVjbGFyYXRpb24gfHwgJGNoaWxkIGluc3RhbmNlb2YgRnVuY3Rpb25SdWxlIHx8ICRjaGlsZCBpbnN0YW5jZW9mIE1peGluUnVsZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkY2hpbGQgaW5zdGFuY2VvZiBJbXBvcnRSdWxlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmFibGVVdGlsOjphbnkoJGNoaWxkLT5nZXRJbXBvcnRzKCksIGZuICgkaW1wb3J0KSA9PiAkaW1wb3J0IGluc3RhbmNlb2YgRHluYW1pY0ltcG9ydCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gU3RhdGVtZW50W10KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGdldENoaWxkcmVuKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jaGlsZHJlbjsKICAgIH0KCiAgICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gaGFzRGVjbGFyYXRpb25zKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRlY2xhcmF0aW9uczsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ImportRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW1wb3J0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFN0YXRlbWVudFZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEFuIGBAaW1wb3J0YCBydWxlLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEltcG9ydFJ1bGUgaW1wbGVtZW50cyBTdGF0ZW1lbnQKewogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8SW1wb3J0PgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRpbXBvcnRzOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxJbXBvcnQ+ICRpbXBvcnRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkaW1wb3J0cywgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPmltcG9ydHMgPSAkaW1wb3J0czsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PEltcG9ydD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEltcG9ydHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmltcG9ydHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRJbXBvcnRSdWxlKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ0BpbXBvcnQgJyAuIGltcGxvZGUoJywgJywgJHRoaXMtPmltcG9ydHMpIC4gJzsnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/IncludeRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXJndW1lbnRJbnZvY2F0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXENhbGxhYmxlSW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTYXNzUmVmZXJlbmNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFNwYW5VdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcU3RhdGVtZW50VmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBtaXhpbiBpbnZvY2F0aW9uLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEluY2x1ZGVSdWxlIGltcGxlbWVudHMgU3RhdGVtZW50LCBDYWxsYWJsZUludm9jYXRpb24sIFNhc3NSZWZlcmVuY2UKewogICAgcHJpdmF0ZSByZWFkb25seSA/c3RyaW5nICRuYW1lc3BhY2U7CgogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG5hbWU7CgogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG9yaWdpbmFsTmFtZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEFyZ3VtZW50SW52b2NhdGlvbiAkYXJndW1lbnRzOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgP0NvbnRlbnRCbG9jayAkY29udGVudDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG9yaWdpbmFsTmFtZSwgQXJndW1lbnRJbnZvY2F0aW9uICRhcmd1bWVudHMsIEZpbGVTcGFuICRzcGFuLCA/c3RyaW5nICRuYW1lc3BhY2UgPSBudWxsLCA/Q29udGVudEJsb2NrICRjb250ZW50ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+b3JpZ2luYWxOYW1lID0gJG9yaWdpbmFsTmFtZTsKICAgICAgICAkdGhpcy0+bmFtZSA9IHN0cl9yZXBsYWNlKCdfJywgJy0nLCAkb3JpZ2luYWxOYW1lKTsKICAgICAgICAkdGhpcy0+YXJndW1lbnRzID0gJGFyZ3VtZW50czsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgICR0aGlzLT5uYW1lc3BhY2UgPSAkbmFtZXNwYWNlOwogICAgICAgICR0aGlzLT5jb250ZW50ID0gJGNvbnRlbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVzcGFjZSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lc3BhY2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG9yaWdpbmFsIG5hbWUgb2YgdGhlIG1peGluIGJlaW5nIGludm9rZWQsIHdpdGhvdXQgdW5kZXJzY29yZXMKICAgICAqIGNvbnZlcnRlZCB0byBoeXBoZW5zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JpZ2luYWxOYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3JpZ2luYWxOYW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcmd1bWVudHMoKTogQXJndW1lbnRJbnZvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hcmd1bWVudHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKTogP0NvbnRlbnRCbG9jawogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbldpdGhvdXRDb250ZW50KCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jb250ZW50ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTcGFuVXRpbDo6dHJpbSgkdGhpcy0+c3Bhbi0+Z2V0RmlsZSgpLT5zcGFuKCR0aGlzLT5zcGFuLT5nZXRTdGFydCgpLT5nZXRPZmZzZXQoKSwgJHRoaXMtPmFyZ3VtZW50cy0+Z2V0U3BhbigpLT5nZXRFbmQoKS0+Z2V0T2Zmc2V0KCkpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZVNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICAkc3RhcnRTcGFuID0gJHRoaXMtPnNwYW4tPmdldFRleHQoKVswXSA9PT0gJysnID8gU3BhblV0aWw6OnRyaW1MZWZ0KCR0aGlzLT5zcGFuLT5zdWJzcGFuKDEpKSA6IFNwYW5VdGlsOjp3aXRob3V0SW5pdGlhbEF0UnVsZSgkdGhpcy0+c3Bhbik7CgogICAgICAgIGlmICgkdGhpcy0+bmFtZXNwYWNlICE9PSBudWxsKSB7CiAgICAgICAgICAgICRzdGFydFNwYW4gPSBTcGFuVXRpbDo6d2l0aG91dE5hbWVzcGFjZSgkc3RhcnRTcGFuKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTcGFuVXRpbDo6aW5pdGlhbElkZW50aWZpZXIoJHN0YXJ0U3Bhbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVzcGFjZVNwYW4oKTogP0ZpbGVTcGFuCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5uYW1lc3BhY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkc3RhcnRTcGFuID0gJHRoaXMtPnNwYW4tPmdldFRleHQoKVswXSA9PT0gJysnCiAgICAgICAgICAgID8gU3BhblV0aWw6OnRyaW1MZWZ0KCR0aGlzLT5zcGFuLT5zdWJzcGFuKDEpKQogICAgICAgICAgICA6IFNwYW5VdGlsOjp3aXRob3V0SW5pdGlhbEF0UnVsZSgkdGhpcy0+c3Bhbik7CgogICAgICAgIHJldHVybiBTcGFuVXRpbDo6aW5pdGlhbElkZW50aWZpZXIoJHN0YXJ0U3Bhbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRJbmNsdWRlUnVsZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICdAaW5jbHVkZSAnOwoKICAgICAgICBpZiAoJHRoaXMtPm5hbWVzcGFjZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5uYW1lc3BhY2UgLiAnLic7CiAgICAgICAgfQogICAgICAgICRidWZmZXIgLj0gJHRoaXMtPm5hbWU7CgogICAgICAgIGlmICghJHRoaXMtPmFyZ3VtZW50cy0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICRidWZmZXIgLj0gIigkdGhpcy0+YXJndW1lbnRzKSI7CiAgICAgICAgfQoKICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5jb250ZW50ID09PSBudWxsID8gJzsnIDogJyAnIC4gJHRoaXMtPmNvbnRlbnQ7CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/LoudComment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGxvdWQgQ1NTLXN0eWxlIGNvbW1lbnQuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTG91ZENvbW1lbnQgaW1wbGVtZW50cyBTdGF0ZW1lbnQKewogICAgcHJpdmF0ZSByZWFkb25seSBJbnRlcnBvbGF0aW9uICR0ZXh0OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChJbnRlcnBvbGF0aW9uICR0ZXh0KQogICAgewogICAgICAgICR0aGlzLT50ZXh0ID0gJHRleHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRleHQoKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGV4dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGV4dC0+Z2V0U3BhbigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0TG91ZENvbW1lbnQoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAoc3RyaW5nKSAkdGhpcy0+dGV4dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/MediaRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGBAbWVkaWFgIHJ1bGUuCiAqCiAqIEBleHRlbmRzIFBhcmVudFN0YXRlbWVudDxTdGF0ZW1lbnRbXT4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNZWRpYVJ1bGUgZXh0ZW5kcyBQYXJlbnRTdGF0ZW1lbnQKewogICAgcHJpdmF0ZSByZWFkb25seSBJbnRlcnBvbGF0aW9uICRxdWVyeTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIFN0YXRlbWVudFtdICRjaGlsZHJlbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoSW50ZXJwb2xhdGlvbiAkcXVlcnksIGFycmF5ICRjaGlsZHJlbiwgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPnF1ZXJ5ID0gJHF1ZXJ5OwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkY2hpbGRyZW4pOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHF1ZXJ5IHRoYXQgZGV0ZXJtaW5lcyBvbiB3aGljaCBwbGF0Zm9ybXMgdGhlIHN0eWxlcyB3aWxsIGJlIGluIGVmZmVjdC4KICAgICAqCiAgICAgKiBUaGlzIGlzIG9ubHkgcGFyc2VkIGFmdGVyIHRoZSBpbnRlcnBvbGF0aW9uIGhhcyBiZWVuIHJlc29sdmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UXVlcnkoKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRNZWRpYVJ1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnQG1lZGlhICcgLiAkdGhpcy0+cXVlcnkgLiAnIHsnIC4gaW1wbG9kZSgnICcsICR0aGlzLT5nZXRDaGlsZHJlbigpKSAuICd9JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/MixinRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXJndW1lbnREZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTYXNzRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcU3BhblV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIG1peGluIGRlY2xhcmF0aW9uLgogKgogKiBUaGlzIGRlY2xhcmVzIGEgbWl4aW4gdGhhdCdzIGludm9rZWQgdXNpbmcgYEBpbmNsdWRlYC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNaXhpblJ1bGUgZXh0ZW5kcyBDYWxsYWJsZURlY2xhcmF0aW9uIGltcGxlbWVudHMgU2Fzc0RlY2xhcmF0aW9uCnsKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgbWl4aW4gY29udGFpbnMgYSBgQGNvbnRlbnRgIHJ1bGUuCiAgICAgKi8KICAgIHByaXZhdGUgP2Jvb2wgJGNvbnRlbnQgPSBudWxsOwoKICAgIC8qKgogICAgICogQHBhcmFtIFN0YXRlbWVudFtdICRjaGlsZHJlbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRuYW1lLCBBcmd1bWVudERlY2xhcmF0aW9uICRhcmd1bWVudHMsIEZpbGVTcGFuICRzcGFuLCBhcnJheSAkY2hpbGRyZW4sID9TaWxlbnRDb21tZW50ICRjb21tZW50ID0gbnVsbCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRuYW1lLCAkYXJndW1lbnRzLCAkc3BhbiwgJGNoaWxkcmVuLCAkY29tbWVudCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NvbnRlbnQoKTogYm9vbAogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmNvbnRlbnQpKSB7CiAgICAgICAgICAgICR0aGlzLT5jb250ZW50ID0gKG5ldyBIYXNDb250ZW50VmlzaXRvcigpKS0+dmlzaXRNaXhpblJ1bGUoJHRoaXMpID09PSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5jb250ZW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lU3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgICRzdGFydFNwYW4gPSAkdGhpcy0+Z2V0U3BhbigpLT5nZXRUZXh0KClbMF0gPT09ICc9JwogICAgICAgICAgICA/IFNwYW5VdGlsOjp0cmltTGVmdCgkdGhpcy0+Z2V0U3BhbigpLT5zdWJzcGFuKDEpKQogICAgICAgICAgICA6IFNwYW5VdGlsOjp3aXRob3V0SW5pdGlhbEF0UnVsZSgkdGhpcy0+Z2V0U3BhbigpKTsKCiAgICAgICAgcmV0dXJuIFNwYW5VdGlsOjppbml0aWFsSWRlbnRpZmllcigkc3RhcnRTcGFuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFN0YXRlbWVudFZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdE1peGluUnVsZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICdAbWl4aW4gJyAuICR0aGlzLT5nZXROYW1lKCk7CgogICAgICAgIGlmICghJHRoaXMtPmdldEFyZ3VtZW50cygpLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAiKHskdGhpcy0+Z2V0QXJndW1lbnRzKCl9KSI7CiAgICAgICAgfQoKICAgICAgICAkYnVmZmVyIC49ICcgeycgLiBpbXBsb2RlKCcgJywgJHRoaXMtPmdldENoaWxkcmVuKCkpIC4gJ30nOwoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ParentStatement.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW1wb3J0XER5bmFtaWNJbXBvcnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50OwoKLyoqCiAqIEEge0BzZWUgU3RhdGVtZW50fSB0aGF0IGNhbiBoYXZlIGNoaWxkIHN0YXRlbWVudHMuCiAqCiAqIFRoaXMgaGFzIGEgZ2VuZXJpYyBwYXJhbWV0ZXIgc28gdGhhdCBpdHMgc3ViY2xhc3NlcyBjYW4gY2hvb3NlIHdoZXRoZXIgb3IKICogbm90IHRoZWlyIGNoaWxkcmVuIGxpc3RzIGFyZSBudWxsYWJsZS4KICoKICogQHRlbXBsYXRlIFQKICogQHBzYWxtLXRlbXBsYXRlIFQgb2YgKFN0YXRlbWVudFtdfG51bGwpCiAqCiAqIEBpbnRlcm5hbAogKi8KYWJzdHJhY3QgY2xhc3MgUGFyZW50U3RhdGVtZW50IGltcGxlbWVudHMgU3RhdGVtZW50CnsKICAgIC8qKgogICAgICogQHZhciBUCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP2FycmF5ICRjaGlsZHJlbjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGRlY2xhcmF0aW9uczsKCiAgICAvKioKICAgICAqIEBwYXJhbSBUICRjaGlsZHJlbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoP2FycmF5ICRjaGlsZHJlbikKICAgIHsKICAgICAgICAkdGhpcy0+Y2hpbGRyZW4gPSAkY2hpbGRyZW47CgogICAgICAgIGlmICgkY2hpbGRyZW4gPT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmRlY2xhcmF0aW9ucyA9IGZhbHNlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkY2hpbGRyZW4gYXMgJGNoaWxkKSB7CiAgICAgICAgICAgIGlmICgkY2hpbGQgaW5zdGFuY2VvZiBWYXJpYWJsZURlY2xhcmF0aW9uIHx8ICRjaGlsZCBpbnN0YW5jZW9mIEZ1bmN0aW9uUnVsZSB8fCAkY2hpbGQgaW5zdGFuY2VvZiBNaXhpblJ1bGUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5kZWNsYXJhdGlvbnMgPSB0cnVlOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNoaWxkIGluc3RhbmNlb2YgSW1wb3J0UnVsZSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNoaWxkLT5nZXRJbXBvcnRzKCkgYXMgJGltcG9ydCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaW1wb3J0IGluc3RhbmNlb2YgRHluYW1pY0ltcG9ydCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZGVjbGFyYXRpb25zID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmRlY2xhcmF0aW9ucyA9IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBnZXRDaGlsZHJlbigpOiA/YXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkcmVuOwogICAgfQoKICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBoYXNEZWNsYXJhdGlvbnMoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGVjbGFyYXRpb25zOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/ReturnRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGBAcmV0dXJuYCBydWxlLgogKgogKiBUaGlzIGV4aXRzIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gYm9keSB3aXRoIGEgcmV0dXJuIHZhbHVlLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFJldHVyblJ1bGUgaW1wbGVtZW50cyBTdGF0ZW1lbnQKewogICAgcHJpdmF0ZSByZWFkb25seSBFeHByZXNzaW9uICRleHByZXNzaW9uOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEV4cHJlc3Npb24gJGV4cHJlc3Npb24sIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT5leHByZXNzaW9uID0gJGV4cHJlc3Npb247CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RXhwcmVzc2lvbigpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5leHByZXNzaW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0UmV0dXJuUnVsZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdAcmV0dXJuICcgLiAkdGhpcy0+ZXhwcmVzc2lvbiAuICc7JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/SilentComment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcU3RhdGVtZW50VmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBzaWxlbnQgU2Fzcy1zdHlsZSBjb21tZW50LgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFNpbGVudENvbW1lbnQgaW1wbGVtZW50cyBTdGF0ZW1lbnQKewogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJHRleHQ7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICR0ZXh0LCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+dGV4dCA9ICR0ZXh0OwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRleHQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZXh0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU3RhdGVtZW50VmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0U2lsZW50Q29tbWVudCgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZXh0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/StyleRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIHN0eWxlIHJ1bGUuCiAqCiAqIFRoaXMgYXBwbGllcyBzdHlsZSBkZWNsYXJhdGlvbnMgdG8gZWxlbWVudHMgdGhhdCBtYXRjaCBhIGdpdmVuIHNlbGVjdG9yLgogKgogKiBAZXh0ZW5kcyBQYXJlbnRTdGF0ZW1lbnQ8U3RhdGVtZW50W10+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU3R5bGVSdWxlIGV4dGVuZHMgUGFyZW50U3RhdGVtZW50CnsKICAgIHByaXZhdGUgcmVhZG9ubHkgSW50ZXJwb2xhdGlvbiAkc2VsZWN0b3I7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdGF0ZW1lbnRbXSAkY2hpbGRyZW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEludGVycG9sYXRpb24gJHNlbGVjdG9yLCBhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT5zZWxlY3RvciA9ICRzZWxlY3RvcjsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGNoaWxkcmVuKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBzZWxlY3RvciB0byB3aGljaCB0aGUgZGVjbGFyYXRpb24gd2lsbCBiZSBhcHBsaWVkLgogICAgICoKICAgICAqIFRoaXMgaXMgb25seSBwYXJzZWQgYWZ0ZXIgdGhlIGludGVycG9sYXRpb24gaGFzIGJlZW4gcmVzb2x2ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZWxlY3RvcigpOiBJbnRlcnBvbGF0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RvcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFN0YXRlbWVudFZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdFN0eWxlUnVsZSgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RvciAuICcgeycgLiBpbXBsb2RlKCcgJywgJHRoaXMtPmdldENoaWxkcmVuKCkpIC4gJ30nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/Stylesheet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzRm9ybWF0RXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxMb2dnZXJJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcUGFyc2VyXENzc1BhcnNlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcU2Fzc1BhcnNlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcU2Nzc1BhcnNlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTeW50YXg7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIFNhc3Mgc3R5bGVzaGVldC4KICoKICogVGhpcyBpcyB0aGUgcm9vdCBTYXNzIG5vZGUuIEl0IGNvbnRhaW5zIHRvcC1sZXZlbCBzdGF0ZW1lbnRzLgogKgogKiBAZXh0ZW5kcyBQYXJlbnRTdGF0ZW1lbnQ8U3RhdGVtZW50W10+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU3R5bGVzaGVldCBleHRlbmRzIFBhcmVudFN0YXRlbWVudAp7CiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJHBsYWluQ3NzOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RhdGVtZW50W10gJGNoaWxkcmVuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuLCBib29sICRwbGFpbkNzcyA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgJHRoaXMtPnBsYWluQ3NzID0gJHBsYWluQ3NzOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGNoaWxkcmVuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQbGFpbkNzcygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wbGFpbkNzczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFN0YXRlbWVudFZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdFN0eWxlc2hlZXQoJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uIHdoZW4gcGFyc2luZyBmYWlscwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKHN0cmluZyAkY29udGVudHMsIFN5bnRheCAkc3ludGF4LCA/TG9nZ2VySW50ZXJmYWNlICRsb2dnZXIgPSBudWxsLCA/VXJpSW50ZXJmYWNlICRzb3VyY2VVcmwgPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHN5bnRheCkgewogICAgICAgICAgICBTeW50YXg6OlNBU1MgPT4gc2VsZjo6cGFyc2VTYXNzKCRjb250ZW50cywgJGxvZ2dlciwgJHNvdXJjZVVybCksCiAgICAgICAgICAgIFN5bnRheDo6U0NTUyA9PiBzZWxmOjpwYXJzZVNjc3MoJGNvbnRlbnRzLCAkbG9nZ2VyLCAkc291cmNlVXJsKSwKICAgICAgICAgICAgU3ludGF4OjpDU1MgPT4gc2VsZjo6cGFyc2VDc3MoJGNvbnRlbnRzLCAkbG9nZ2VyLCAkc291cmNlVXJsKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uIHdoZW4gcGFyc2luZyBmYWlscwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlU2FzcyhzdHJpbmcgJGNvbnRlbnRzLCA/TG9nZ2VySW50ZXJmYWNlICRsb2dnZXIgPSBudWxsLCA/VXJpSW50ZXJmYWNlICRzb3VyY2VVcmwgPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHJldHVybiAobmV3IFNhc3NQYXJzZXIoJGNvbnRlbnRzLCAkbG9nZ2VyLCAkc291cmNlVXJsKSktPnBhcnNlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFNhc3NGb3JtYXRFeGNlcHRpb24gd2hlbiBwYXJzaW5nIGZhaWxzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VTY3NzKHN0cmluZyAkY29udGVudHMsID9Mb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciA9IG51bGwsID9VcmlJbnRlcmZhY2UgJHNvdXJjZVVybCA9IG51bGwpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIChuZXcgU2Nzc1BhcnNlcigkY29udGVudHMsICRsb2dnZXIsICRzb3VyY2VVcmwpKS0+cGFyc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbiB3aGVuIHBhcnNpbmcgZmFpbHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZUNzcyhzdHJpbmcgJGNvbnRlbnRzLCA/TG9nZ2VySW50ZXJmYWNlICRsb2dnZXIgPSBudWxsLCA/VXJpSW50ZXJmYWNlICRzb3VyY2VVcmwgPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHJldHVybiAobmV3IENzc1BhcnNlcigkY29udGVudHMsICRsb2dnZXIsICRzb3VyY2VVcmwpKS0+cGFyc2UoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgnICcsICR0aGlzLT5nZXRDaGlsZHJlbigpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/SupportsRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcU3RhdGVtZW50VmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBgQHN1cHBvcnRzYCBydWxlLgogKgogKiBAZXh0ZW5kcyBQYXJlbnRTdGF0ZW1lbnQ8U3RhdGVtZW50W10+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU3VwcG9ydHNSdWxlIGV4dGVuZHMgUGFyZW50U3RhdGVtZW50CnsKICAgIHByaXZhdGUgcmVhZG9ubHkgU3VwcG9ydHNDb25kaXRpb24gJGNvbmRpdGlvbjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIFN0YXRlbWVudFtdICRjaGlsZHJlbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU3VwcG9ydHNDb25kaXRpb24gJGNvbmRpdGlvbiwgYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+Y29uZGl0aW9uID0gJGNvbmRpdGlvbjsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGNoaWxkcmVuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29uZGl0aW9uKCk6IFN1cHBvcnRzQ29uZGl0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb25kaXRpb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRTdXBwb3J0c1J1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnQHN1cHBvcnRzICcgLiAkdGhpcy0+Y29uZGl0aW9uIC4gJyB7JyAuIGltcGxvZGUoJyAnLCAkdGhpcy0+Z2V0Q2hpbGRyZW4oKSkgLiAnfSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/VariableDeclaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTYXNzRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTcGFuVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFN0YXRlbWVudFZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgdmFyaWFibGUgZGVjbGFyYXRpb24uCiAqCiAqIFRoaXMgZGVmaW5lcyBvciBzZXRzIGEgdmFyaWFibGUuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbiBpbXBsZW1lbnRzIFN0YXRlbWVudCwgU2Fzc0RlY2xhcmF0aW9uCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkbmFtZXNwYWNlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuYW1lOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgP1NpbGVudENvbW1lbnQgJGNvbW1lbnQ7CgogICAgcHJpdmF0ZSByZWFkb25seSBFeHByZXNzaW9uICRleHByZXNzaW9uOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkZ3VhcmRlZDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGdsb2JhbDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG5hbWUsIEV4cHJlc3Npb24gJGV4cHJlc3Npb24sIEZpbGVTcGFuICRzcGFuLCA/c3RyaW5nICRuYW1lc3BhY2UgPSBudWxsLCBib29sICRndWFyZGVkID0gZmFsc2UsIGJvb2wgJGdsb2JhbCA9IGZhbHNlLCA/U2lsZW50Q29tbWVudCAkY29tbWVudCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICAkdGhpcy0+ZXhwcmVzc2lvbiA9ICRleHByZXNzaW9uOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICAgICAgJHRoaXMtPm5hbWVzcGFjZSA9ICRuYW1lc3BhY2U7CiAgICAgICAgJHRoaXMtPmd1YXJkZWQgPSAkZ3VhcmRlZDsKICAgICAgICAkdGhpcy0+Z2xvYmFsID0gJGdsb2JhbDsKICAgICAgICAkdGhpcy0+Y29tbWVudCA9ICRjb21tZW50OwoKICAgICAgICBpZiAoJG5hbWVzcGFjZSAhPT0gbnVsbCAmJiAkZ2xvYmFsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJPdGhlciBtb2R1bGVzJyBtZW1iZXJzIGNhbid0IGJlIGRlZmluZWQgd2l0aCAhZ2xvYmFsLiIpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZXNwYWNlKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWVzcGFjZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8gaHlwaGVucy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHZhcmlhYmxlIG5hbWUgYXMgd3JpdHRlbiBpbiB0aGUgZG9jdW1lbnQsIHdpdGhvdXQgdW5kZXJzY29yZXMKICAgICAqIGNvbnZlcnRlZCB0byBoeXBoZW5zIGFuZCBpbmNsdWRpbmcgdGhlIGxlYWRpbmcgYCRgLgogICAgICoKICAgICAqIFRoaXMgaXNuJ3QgcGFydGljdWxhcmx5IGVmZmljaWVudCwgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGVycm9yCiAgICAgKiBtZXNzYWdlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE9yaWdpbmFsTmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gVXRpbDo6ZGVjbGFyYXRpb25OYW1lKCR0aGlzLT5zcGFuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29tbWVudCgpOiA/U2lsZW50Q29tbWVudAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tbWVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RXhwcmVzc2lvbigpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5leHByZXNzaW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0d1YXJkZWQoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z3VhcmRlZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNHbG9iYWwoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2xvYmFsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lU3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgICRzcGFuID0gJHRoaXMtPnNwYW47CgogICAgICAgIGlmICgkdGhpcy0+bmFtZXNwYWNlICE9PSBudWxsKSB7CiAgICAgICAgICAgICRzcGFuID0gU3BhblV0aWw6OndpdGhvdXROYW1lc3BhY2UoJHNwYW4pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFNwYW5VdGlsOjppbml0aWFsSWRlbnRpZmllcigkc3BhbiwgMSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVzcGFjZVNwYW4oKTogP0ZpbGVTcGFuCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5uYW1lc3BhY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gU3BhblV0aWw6OmluaXRpYWxJZGVudGlmaWVyKCR0aGlzLT5zcGFuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFN0YXRlbWVudFZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgICRidWZmZXIgPSAnJzsKICAgICAgICBpZiAoJHRoaXMtPm5hbWVzcGFjZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5uYW1lc3BhY2UgLiAnLic7CiAgICAgICAgfQogICAgICAgICRidWZmZXIgLj0gIlwkJHRoaXMtPm5hbWU6ICR0aGlzLT5leHByZXNzaW9uOyI7CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/WarnRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGBAd2FybmAgcnVsZS4KICoKICogVGhpcyBwcmludHMgYSBTYXNzIHZhbHVl4oCUdXN1YWxseSBhIHN0cmluZ+KAlHRvIHdhcm4gdGhlIHVzZXIgb2Ygc29tZXRoaW5nLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFdhcm5SdWxlIGltcGxlbWVudHMgU3RhdGVtZW50CnsKICAgIHByaXZhdGUgcmVhZG9ubHkgRXhwcmVzc2lvbiAkZXhwcmVzc2lvbjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChFeHByZXNzaW9uICRleHByZXNzaW9uLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+ZXhwcmVzc2lvbiA9ICRleHByZXNzaW9uOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEV4cHJlc3Npb24oKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZXhwcmVzc2lvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFN0YXRlbWVudFZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdFdhcm5SdWxlKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ0B3YXJuICcgLiAkdGhpcy0+ZXhwcmVzc2lvbiAuICc7JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/Statement/WhileRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTdGF0ZW1lbnRWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGBAd2hpbGVgIHJ1bGUuCiAqCiAqIFRoaXMgcmVwZWF0ZWRseSBleGVjdXRlcyBhIGJsb2NrIG9mIGNvZGUgYXMgbG9uZyBhcyBhIHN0YXRlbWVudCBldmFsdWF0ZXMgdG8KICogYHRydWVgLgogKgogKiBAZXh0ZW5kcyBQYXJlbnRTdGF0ZW1lbnQ8U3RhdGVtZW50W10+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgV2hpbGVSdWxlIGV4dGVuZHMgUGFyZW50U3RhdGVtZW50CnsKICAgIHByaXZhdGUgcmVhZG9ubHkgRXhwcmVzc2lvbiAkY29uZGl0aW9uOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RhdGVtZW50W10gJGNoaWxkcmVuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChFeHByZXNzaW9uICRjb25kaXRpb24sIGFycmF5ICRjaGlsZHJlbiwgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPmNvbmRpdGlvbiA9ICRjb25kaXRpb247CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRjaGlsZHJlbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbmRpdGlvbigpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb25kaXRpb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTdGF0ZW1lbnRWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRXaGlsZVJ1bGUoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnQHdoaWxlICcgLiAkdGhpcy0+Y29uZGl0aW9uIC4gJyB7JyAuIGltcGxvZGUoJyAnLCAkdGhpcy0+Z2V0Q2hpbGRyZW4oKSkgLiAnfSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SupportsCondition.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzOwoKLyoqCiAqIEFuIGludGVyZmFjZSBmb3IgZGVmaW5pbmcgdGhlIGNvbmRpdGlvbiBhIGBAc3VwcG9ydHNgIHJ1bGUgc2VsZWN0cy4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgU3VwcG9ydHNDb25kaXRpb24gZXh0ZW5kcyBTYXNzTm9kZQp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SupportsCondition/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsAnything.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbnRlcnBvbGF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIHN1cHBvcnRzIGNvbmRpdGlvbiB0aGF0IHJlcHJlc2VudHMgdGhlIGZvcndhcmRzLWNvbXBhdGlibGUKICogYDxnZW5lcmFsLWVuY2xvc2VkPmAgcHJvZHVjdGlvbi4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTdXBwb3J0c0FueXRoaW5nIGltcGxlbWVudHMgU3VwcG9ydHNDb25kaXRpb24KewogICAgLyoqCiAgICAgKiBUaGUgY29udGVudHMgb2YgdGhlIGNvbmRpdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBJbnRlcnBvbGF0aW9uICRjb250ZW50czsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChJbnRlcnBvbGF0aW9uICRjb250ZW50cywgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPmNvbnRlbnRzID0gJGNvbnRlbnRzOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IEludGVycG9sYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAiKCR0aGlzLT5jb250ZW50cykiOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsDeclaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cU3RyaW5nRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvbjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBjb25kaXRpb24gdGhhdCBzZWxlY3RzIGZvciBicm93c2VycyB3aGVyZSBhIGdpdmVuIGRlY2xhcmF0aW9uIGlzCiAqIHN1cHBvcnRlZC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTdXBwb3J0c0RlY2xhcmF0aW9uIGltcGxlbWVudHMgU3VwcG9ydHNDb25kaXRpb24KewogICAgLyoqCiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZGVjbGFyYXRpb24gYmVpbmcgdGVzdGVkLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IEV4cHJlc3Npb24gJG5hbWU7CgogICAgLyoqCiAgICAgKiBUaGUgdmFsdWUgb2YgdGhlIGRlY2xhcmF0aW9uIGJlaW5nIHRlc3RlZC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBFeHByZXNzaW9uICR2YWx1ZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChFeHByZXNzaW9uICRuYW1lLCBFeHByZXNzaW9uICR2YWx1ZSwgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIGlzIGEgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBkZWNsYXJhdGlvbi4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgdGhpcyBjYW4gcmV0dXJuIGBmYWxzZWAgZm9yIGRlY2xhcmF0aW9ucyB0aGF0IHdpbGwgdWx0aW1hdGVseSBiZQogICAgICogc2VyaWFsaXplZCBhcyBjdXN0b20gcHJvcGVydGllcyBpZiB0aGV5IGFyZW4ndCAqcGFyc2VkIGFzKiBjdXN0b20KICAgICAqIHByb3BlcnRpZXMsIHN1Y2ggYXMgYCN7LS1mb299OiAuLi5gLgogICAgICoKICAgICAqIElmIHRoaXMgaXMgYHRydWVgLCB0aGVuIGB2YWx1ZWAgd2lsbCBiZSBhIHtAc2VlIFN0cmluZ0V4cHJlc3Npb259LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDdXN0b21Qcm9wZXJ0eSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lIGluc3RhbmNlb2YgU3RyaW5nRXhwcmVzc2lvbiAmJiAhJHRoaXMtPm5hbWUtPmhhc1F1b3RlcygpICYmIHN0cl9zdGFydHNfd2l0aCgkdGhpcy0+bmFtZS0+Z2V0VGV4dCgpLT5nZXRJbml0aWFsUGxhaW4oKSwgJy0tJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICIoJHRoaXMtPm5hbWU6ICR0aGlzLT52YWx1ZSkiOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsFunction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbnRlcnBvbGF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGZ1bmN0aW9uLXN5bnRheCBjb25kaXRpb24uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU3VwcG9ydHNGdW5jdGlvbiBpbXBsZW1lbnRzIFN1cHBvcnRzQ29uZGl0aW9uCnsKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IEludGVycG9sYXRpb24gJG5hbWU7CgogICAgLyoqCiAgICAgKiBUaGUgYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBJbnRlcnBvbGF0aW9uICRhcmd1bWVudHM7CgogICAgcHJpdmF0ZSByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoSW50ZXJwb2xhdGlvbiAkbmFtZSwgSW50ZXJwb2xhdGlvbiAkYXJndW1lbnRzLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5hcmd1bWVudHMgPSAkYXJndW1lbnRzOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXJndW1lbnRzKCk6IEludGVycG9sYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFyZ3VtZW50czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gIiR0aGlzLT5uYW1lKCR0aGlzLT5hcmd1bWVudHMpIjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsInterpolation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBbiBpbnRlcnBvbGF0ZWQgY29uZGl0aW9uLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFN1cHBvcnRzSW50ZXJwb2xhdGlvbiBpbXBsZW1lbnRzIFN1cHBvcnRzQ29uZGl0aW9uCnsKICAgIC8qKgogICAgICogVGhlIGV4cHJlc3Npb24gaW4gdGhlIGludGVycG9sYXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgRXhwcmVzc2lvbiAkZXhwcmVzc2lvbjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChFeHByZXNzaW9uICRleHByZXNzaW9uLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+ZXhwcmVzc2lvbiA9ICRleHByZXNzaW9uOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEV4cHJlc3Npb24oKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZXhwcmVzc2lvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJyN7JyAuICR0aGlzLT5leHByZXNzaW9uIC4gJ30nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsNegation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvbjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBuZWdhdGVkIGNvbmRpdGlvbi4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTdXBwb3J0c05lZ2F0aW9uIGltcGxlbWVudHMgU3VwcG9ydHNDb25kaXRpb24KewogICAgLyoqCiAgICAgKiBUaGUgY29uZGl0aW9uIHRoYXQncyBiZWVuIG5lZ2F0ZWQuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgU3VwcG9ydHNDb25kaXRpb24gJGNvbmRpdGlvbjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdXBwb3J0c0NvbmRpdGlvbiAkY29uZGl0aW9uLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+Y29uZGl0aW9uID0gJGNvbmRpdGlvbjsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25kaXRpb24oKTogU3VwcG9ydHNDb25kaXRpb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbmRpdGlvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1cHBvcnRzTmVnYXRpb24gfHwgJHRoaXMtPmNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1cHBvcnRzT3BlcmF0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiAibm90ICgkdGhpcy0+Y29uZGl0aW9uKSI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ25vdCAnIC4gJHRoaXMtPmNvbmRpdGlvbjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsOperation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvbjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQW4gb3BlcmF0aW9uIGRlZmluaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0d28gY29uZGl0aW9ucy4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTdXBwb3J0c09wZXJhdGlvbiBpbXBsZW1lbnRzIFN1cHBvcnRzQ29uZGl0aW9uCnsKICAgIC8qKgogICAgICogVGhlIGxlZnQtaGFuZCBvcGVyYW5kLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IFN1cHBvcnRzQ29uZGl0aW9uICRsZWZ0OwoKICAgIC8qKgogICAgICogVGhlIHJpZ2h0LWhhbmQgb3BlcmFuZC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBTdXBwb3J0c0NvbmRpdGlvbiAkcmlnaHQ7CgogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG9wZXJhdG9yOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFN1cHBvcnRzQ29uZGl0aW9uICRsZWZ0LCBTdXBwb3J0c0NvbmRpdGlvbiAkcmlnaHQsIHN0cmluZyAkb3BlcmF0b3IsIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT5sZWZ0ID0gJGxlZnQ7CiAgICAgICAgJHRoaXMtPnJpZ2h0ID0gJHJpZ2h0OwogICAgICAgICR0aGlzLT5vcGVyYXRvciA9ICRvcGVyYXRvcjsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZWZ0KCk6IFN1cHBvcnRzQ29uZGl0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sZWZ0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSaWdodCgpOiBTdXBwb3J0c0NvbmRpdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmlnaHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9wZXJhdG9yKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3BlcmF0b3I7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJlbnRoZXNpemUoJHRoaXMtPmxlZnQpIC4gJyAnIC4gJHRoaXMtPm9wZXJhdG9yIC4gJyAnIC4gJHRoaXMtPnBhcmVudGhlc2l6ZSgkdGhpcy0+cmlnaHQpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcGFyZW50aGVzaXplKFN1cHBvcnRzQ29uZGl0aW9uICRjb25kaXRpb24pOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJGNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1cHBvcnRzTmVnYXRpb24gfHwgJGNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1cHBvcnRzT3BlcmF0aW9uICYmICRjb25kaXRpb24tPm9wZXJhdG9yID09PSAkdGhpcy0+b3BlcmF0b3IpIHsKICAgICAgICAgICAgcmV0dXJuICIoJGNvbmRpdGlvbikiOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChzdHJpbmcpICRjb25kaXRpb247CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/AttributeOperator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCi8qKgogKiBBbiBvcGVyYXRvciB0aGF0IGRlZmluZXMgdGhlIHNlbWFudGljcyBvZiBhbiB7QHNlZSBBdHRyaWJ1dGVTZWxlY3Rvcn0uCiAqCiAqIEBpbnRlcm5hbAogKi8KZW51bSBBdHRyaWJ1dGVPcGVyYXRvcgp7CiAgICAvKioKICAgICAqIFRoZSBhdHRyaWJ1dGUgdmFsdWUgZXhhY3RseSBlcXVhbHMgdGhlIGdpdmVuIHZhbHVlLgogICAgICovCiAgICBjYXNlIEVRVUFMOwoKICAgIC8qKgogICAgICogVGhlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBhIHdoaXRlc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMsIG9uZSBvZiB3aGljaAogICAgICogaXMgdGhlIGdpdmVuIHZhbHVlLgogICAgICovCiAgICBjYXNlIElOQ0xVREU7CgogICAgLyoqCiAgICAgKiBUaGUgYXR0cmlidXRlIHZhbHVlIGlzIGVpdGhlciBleGFjdGx5IHRoZSBnaXZlbiB2YWx1ZSwgb3Igc3RhcnRzIHdpdGggdGhlCiAgICAgKiBnaXZlbiB2YWx1ZSBmb2xsb3dlZCBieSBhIGRhc2guCiAgICAgKi8KICAgIGNhc2UgREFTSDsKCiAgICAvKioKICAgICAqIFRoZSBhdHRyaWJ1dGUgdmFsdWUgYmVnaW5zIHdpdGggdGhlIGdpdmVuIHZhbHVlLgogICAgICovCiAgICBjYXNlIFBSRUZJWDsKCiAgICAvKioKICAgICAqIFRoZSBhdHRyaWJ1dGUgdmFsdWUgZW5kcyB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqLwogICAgY2FzZSBTVUZGSVg7CgogICAgLyoqCiAgICAgKiBUaGUgYXR0cmlidXRlIHZhbHVlIGNvbnRhaW5zIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqLwogICAgY2FzZSBTVUJTVFJJTkc7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRleHQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcykgewogICAgICAgICAgICBzZWxmOjpFUVVBTCA9PiAnPScsCiAgICAgICAgICAgIHNlbGY6OklOQ0xVREUgPT4gJ349JywKICAgICAgICAgICAgc2VsZjo6REFTSCA9PiAnfD0nLAogICAgICAgICAgICBzZWxmOjpQUkVGSVggPT4gJ149JywKICAgICAgICAgICAgc2VsZjo6U1VGRklYID0+ICckPScsCiAgICAgICAgICAgIHNlbGY6OlNVQlNUUklORyA9PiAnKj0nLAogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/AttributeSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEFuIGF0dHJpYnV0ZSBzZWxlY3Rvci4KICoKICogVGhpcyBzZWxlY3RzIGZvciBlbGVtZW50cyB3aXRoIHRoZSBnaXZlbiBhdHRyaWJ1dGUsIGFuZCBvcHRpb25hbGx5IHdpdGggYQogKiB2YWx1ZSBtYXRjaGluZyBjZXJ0YWluIGNvbmRpdGlvbnMgYXMgd2VsbC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBBdHRyaWJ1dGVTZWxlY3RvciBleHRlbmRzIFNpbXBsZVNlbGVjdG9yCnsKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSBiZWluZyBzZWxlY3RlZCBmb3IuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgUXVhbGlmaWVkTmFtZSAkbmFtZTsKCiAgICAvKioKICAgICAqIFRoZSBvcGVyYXRvciB0aGF0IGRlZmluZXMgdGhlIHNlbWFudGljcyBvZiB7QHNlZSB2YWx1ZX0uCiAgICAgKgogICAgICogSWYgdGhpcyBpcyBgbnVsbGAsIHRoaXMgbWF0Y2hlcyBhbnkgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBwcm9wZXJ0eSwKICAgICAqIHJlZ2FyZGxlc3Mgb2YgdGhpcyB2YWx1ZS4gSXQncyBgbnVsbGAgaWYgYW5kIG9ubHkgaWYge0BzZWUgdmFsdWV9IGlzIGBudWxsYC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSA/QXR0cmlidXRlT3BlcmF0b3IgJG9wOwoKICAgIC8qKgogICAgICogQW4gYXNzZXJ0aW9uIGFib3V0IHRoZSB2YWx1ZSBvZiB7QHNlZSBuYW1lfS4KICAgICAqCiAgICAgKiBUaGUgcHJlY2lzZSBzZW1hbnRpY3Mgb2YgdGhpcyBzdHJpbmcgYXJlIGRlZmluZWQgYnkge0BzZWUgb3B9LgogICAgICoKICAgICAqIElmIHRoaXMgaXMgYG51bGxgLCB0aGlzIG1hdGNoZXMgYW55IGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gcHJvcGVydHksCiAgICAgKiByZWdhcmRsZXNzIG9mIHRoaXMgdmFsdWUuIEl0J3MgYG51bGxgIGlmIGFuZCBvbmx5IGlmIHtAc2VlIG9wfSBpcyBgbnVsbGAuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBUaGUgbW9kaWZpZXIgd2hpY2ggaW5kaWNhdGVzIGhvdyB0aGUgYXR0cmlidXRlIHNlbGVjdG9yIHNob3VsZCBiZQogICAgICogcHJvY2Vzc2VkLgogICAgICoKICAgICAqIFNlZSBmb3IgZXhhbXBsZSBbY2FzZS1zZW5zaXRpdml0eV1bXSBtb2RpZmllcnMuCiAgICAgKgogICAgICogW2Nhc2Utc2Vuc2l0aXZpdHldOiBodHRwczovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLTQvI2F0dHJpYnV0ZS1jYXNlCiAgICAgKgogICAgICogSWYge0BzZWUgb3B9IGlzIGBudWxsYCwgdGhpcyBpcyBhbHdheXMgYG51bGxgIGFzIHdlbGwuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkbW9kaWZpZXI7CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGFuIGF0dHJpYnV0ZSBzZWxlY3RvciB0aGF0IG1hdGNoZXMgYW55IGVsZW1lbnQgd2l0aCBhIHByb3BlcnR5IG9mCiAgICAgKiB0aGUgZ2l2ZW4gbmFtZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoUXVhbGlmaWVkTmFtZSAkbmFtZSwgRmlsZVNwYW4gJHNwYW4pOiBBdHRyaWJ1dGVTZWxlY3RvcgogICAgewogICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlU2VsZWN0b3IoJG5hbWUsICRzcGFuLCBudWxsLCBudWxsLCBudWxsKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYW4gYXR0cmlidXRlIHNlbGVjdG9yIHRoYXQgbWF0Y2hlcyBhbiBlbGVtZW50IHdpdGggYSBwcm9wZXJ0eQogICAgICogbmFtZWQgJG5hbWUsIHdob3NlIHZhbHVlIG1hdGNoZXMgJHZhbHVlIGJhc2VkIG9uIHRoZSBzZW1hbnRpY3Mgb2YgJG9wLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdpdGhPcGVyYXRvcihRdWFsaWZpZWROYW1lICRuYW1lLCA/QXR0cmlidXRlT3BlcmF0b3IgJG9wLCA/c3RyaW5nICR2YWx1ZSwgRmlsZVNwYW4gJHNwYW4sID9zdHJpbmcgJG1vZGlmaWVyID0gbnVsbCk6IEF0dHJpYnV0ZVNlbGVjdG9yCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVTZWxlY3RvcigkbmFtZSwgJHNwYW4sICRvcCwgJHZhbHVlLCAkbW9kaWZpZXIpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoUXVhbGlmaWVkTmFtZSAkbmFtZSwgRmlsZVNwYW4gJHNwYW4sID9BdHRyaWJ1dGVPcGVyYXRvciAkb3AsID9zdHJpbmcgJHZhbHVlLCA/c3RyaW5nICRtb2RpZmllcikKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5vcCA9ICRvcDsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgJHRoaXMtPm1vZGlmaWVyID0gJG1vZGlmaWVyOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHNwYW4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IFF1YWxpZmllZE5hbWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9wKCk6ID9BdHRyaWJ1dGVPcGVyYXRvcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3A7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2RpZmllcigpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tb2RpZmllcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFNlbGVjdG9yVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0QXR0cmlidXRlU2VsZWN0b3IoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgQXR0cmlidXRlU2VsZWN0b3IgJiYKICAgICAgICAgICAgJG90aGVyLT5uYW1lLT5lcXVhbHMoJHRoaXMtPm5hbWUpICYmCiAgICAgICAgICAgICRvdGhlci0+b3AgPT09ICR0aGlzLT5vcCAmJgogICAgICAgICAgICAkb3RoZXItPnZhbHVlID09PSAkdGhpcy0+dmFsdWUgJiYKICAgICAgICAgICAgJG90aGVyLT5tb2RpZmllciA9PT0gJHRoaXMtPm1vZGlmaWVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/ClassSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgY2xhc3Mgc2VsZWN0b3IuCiAqCiAqIFRoaXMgc2VsZWN0cyBlbGVtZW50cyB3aG9zZSBgY2xhc3NgIGF0dHJpYnV0ZSBjb250YWlucyBhbiBpZGVudGlmaWVyIHdpdGgKICogdGhlIGdpdmVuIG5hbWUuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ2xhc3NTZWxlY3RvciBleHRlbmRzIFNpbXBsZVNlbGVjdG9yCnsKICAgIC8qKgogICAgICogVGhlIGNsYXNzIG5hbWUgdGhpcyBzZWxlY3RzIGZvci4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG5hbWU7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkbmFtZSwgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRzcGFuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTZWxlY3RvclZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdENsYXNzU2VsZWN0b3IoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgQ2xhc3NTZWxlY3RvciAmJiAkb3RoZXItPm5hbWUgPT09ICR0aGlzLT5uYW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRTdWZmaXgoc3RyaW5nICRzdWZmaXgpOiBTaW1wbGVTZWxlY3RvcgogICAgewogICAgICAgIHJldHVybiBuZXcgQ2xhc3NTZWxlY3RvcigkdGhpcy0+bmFtZSAuICRzdWZmaXgsICR0aGlzLT5nZXRTcGFuKCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/Combinator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCi8qKgogKiBBIGNvbWJpbmF0b3IgdGhhdCBkZWZpbmVzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBzZWxlY3RvcnMgaW4gYQogKiB7QHNlZSBDb21wbGV4U2VsZWN0b3J9LgogKgogKiBAaW50ZXJuYWwKICovCmVudW0gQ29tYmluYXRvcgp7CiAgICAvKioKICAgICAqIE1hdGNoZXMgdGhlIHJpZ2h0LWhhbmQgc2VsZWN0b3IgaWYgaXQncyBpbW1lZGlhdGVseSBhZGphY2VudCB0byB0aGUKICAgICAqIGxlZnQtaGFuZCBzZWxlY3RvciBpbiB0aGUgRE9NIHRyZWUuCiAgICAgKi8KICAgIGNhc2UgTkVYVF9TSUJMSU5HOwoKICAgIC8qKgogICAgICogTWF0Y2hlcyB0aGUgcmlnaHQtaGFuZCBzZWxlY3RvciBpZiBpdCdzIGEgZGlyZWN0IGNoaWxkIG9mIHRoZSBsZWZ0LWhhbmQKICAgICAqIHNlbGVjdG9yIGluIHRoZSBET00gdHJlZS4KICAgICAqLwogICAgY2FzZSBDSElMRDsKCiAgICAvKioKICAgICAqIE1hdGNoZXMgdGhlIHJpZ2h0LWhhbmQgc2VsZWN0b3IgaWYgaXQgY29tZXMgYWZ0ZXIgdGhlIGxlZnQtaGFuZCBzZWxlY3RvcgogICAgICogaW4gdGhlIERPTSB0cmVlLgogICAgICovCiAgICBjYXNlIEZPTExPV0lOR19TSUJMSU5HOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZXh0KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMpIHsKICAgICAgICAgICAgc2VsZjo6TkVYVF9TSUJMSU5HID0+ICcrJywKICAgICAgICAgICAgc2VsZjo6Q0hJTEQgPT4gJz4nLAogICAgICAgICAgICBzZWxmOjpGT0xMT1dJTkdfU0lCTElORyA9PiAnficsCiAgICAgICAgfTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/ComplexSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc0Zvcm1hdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeHRlbmRcRXh0ZW5kVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlclxTZWxlY3RvclBhcnNlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVxdWF0YWJsZVV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxMaXN0VXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFNlbGVjdG9yVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBjb21wbGV4IHNlbGVjdG9yLgogKgogKiBBIGNvbXBsZXggc2VsZWN0b3IgaXMgY29tcG9zZWQgb2Yge0BzZWUgQ29tcG91bmRTZWxlY3Rvcn1zIHNlcGFyYXRlZCBieQogKiB7QHNlZSBDb21iaW5hdG9yfXMuIEl0IHNlbGVjdHMgZWxlbWVudHMgYmFzZWQgb24gdGhlaXIgcGFyZW50IHNlbGVjdG9ycy4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBDb21wbGV4U2VsZWN0b3IgZXh0ZW5kcyBTZWxlY3Rvcgp7CiAgICAvKioKICAgICAqIFRoaXMgc2VsZWN0b3IncyBsZWFkaW5nIGNvbWJpbmF0b3JzLgogICAgICoKICAgICAqIElmIHRoaXMgaXMgZW1wdHksIHRoYXQgaW5kaWNhdGVzIHRoYXQgaXQgaGFzIG5vIGxlYWRpbmcgY29tYmluYXRvci4gSWYKICAgICAqIGl0J3MgbW9yZSB0aGFuIG9uZSBlbGVtZW50LCB0aGF0IG1lYW5zIGl0J3MgaW52YWxpZCBDU1M7IGhvd2V2ZXIsIHdlIHN0aWxsCiAgICAgKiBzdXBwb3J0IHRoaXMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHB1cnBvc2VzLgogICAgICoKICAgICAqIEB2YXIgbGlzdDxDc3NWYWx1ZTxDb21iaW5hdG9yPj4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkbGVhZGluZ0NvbWJpbmF0b3JzOwoKICAgIC8qKgogICAgICogVGhlIGNvbXBvbmVudHMgb2YgdGhpcyBzZWxlY3Rvci4KICAgICAqCiAgICAgKiBUaGlzIGlzIG9ubHkgZW1wdHkgaWYge0BzZWUgJGxlYWRpbmdDb21iaW5hdG9yc30gaXMgbm90IGVtcHR5LgogICAgICoKICAgICAqIERlc2NlbmRhbnQgY29tYmluYXRvcnMgYXJlbid0IGV4cGxpY2l0bHkgcmVwcmVzZW50ZWQgaGVyZS4gSWYgdHdvCiAgICAgKiB7QHNlZSBDb21wb3VuZFNlbGVjdG9yfXMgYXJlIGFkamFjZW50IHRvIG9uZSBhbm90aGVyLCB0aGVyZSdzIGFuIGltcGxpY2l0CiAgICAgKiBkZXNjZW5kYW50IGNvbWJpbmF0b3IgYmV0d2VlbiB0aGVtLgogICAgICoKICAgICAqIEl0J3MgcG9zc2libGUgZm9yIG11bHRpcGxlIHtAc2VlIENvbWJpbmF0b3J9cyB0byBiZSBhZGphY2VudCB0byBvbmUgYW5vdGhlci4KICAgICAqIFRoaXMgaXNuJ3QgdmFsaWQgQ1NTLCBidXQgU2FzcyBzdXBwb3J0cyBpdCBmb3IgQ1NTIGhhY2sgcHVycG9zZXMuCiAgICAgKgogICAgICogQHZhciBsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkY29tcG9uZW50czsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgYSBsaW5lIGJyZWFrIHNob3VsZCBiZSBlbWl0dGVkICpiZWZvcmUqIHRoaXMgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkbGluZUJyZWFrOwoKICAgIHByaXZhdGUgP2ludCAkc3BlY2lmaWNpdHkgPSBudWxsOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8Q3NzVmFsdWU8Q29tYmluYXRvcj4+ICAgICAkbGVhZGluZ0NvbWJpbmF0b3JzCiAgICAgKiBAcGFyYW0gbGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+ICRjb21wb25lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkbGVhZGluZ0NvbWJpbmF0b3JzLCBhcnJheSAkY29tcG9uZW50cywgRmlsZVNwYW4gJHNwYW4sIGJvb2wgJGxpbmVCcmVhayA9IGZhbHNlKQogICAgewogICAgICAgIGlmICgkbGVhZGluZ0NvbWJpbmF0b3JzID09PSBbXSAmJiAkY29tcG9uZW50cyA9PT0gW10pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2xlYWRpbmdDb21iaW5hdG9ycyBhbmQgY29tcG9uZW50cyBtYXkgbm90IGJvdGggYmUgZW1wdHkuJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bGVhZGluZ0NvbWJpbmF0b3JzID0gJGxlYWRpbmdDb21iaW5hdG9yczsKICAgICAgICAkdGhpcy0+Y29tcG9uZW50cyA9ICRjb21wb25lbnRzOwogICAgICAgICR0aGlzLT5saW5lQnJlYWsgPSAkbGluZUJyZWFrOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHNwYW4pOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgY29tcGxleCBzZWxlY3RvciBmcm9tICRjb250ZW50cy4KICAgICAqCiAgICAgKiBJZiBwYXNzZWQsICR1cmwgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAkY29udGVudHMgY29tZXMuCiAgICAgKiAkYWxsb3dQYXJlbnQgY29udHJvbHMgd2hldGhlciBhIHtAc2VlIFBhcmVudFNlbGVjdG9yfSBpcyBhbGxvd2VkIGluIHRoaXMKICAgICAqIHNlbGVjdG9yLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbiBpZiBwYXJzaW5nIGZhaWxzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKHN0cmluZyAkY29udGVudHMsID9Mb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciA9IG51bGwsID9VcmlJbnRlcmZhY2UgJHVybCA9IG51bGwsIGJvb2wgJGFsbG93UGFyZW50ID0gdHJ1ZSk6IENvbXBsZXhTZWxlY3RvcgogICAgewogICAgICAgIHJldHVybiAobmV3IFNlbGVjdG9yUGFyc2VyKCRjb250ZW50cywgJGxvZ2dlciwgJHVybCwgJGFsbG93UGFyZW50KSktPnBhcnNlQ29tcGxleFNlbGVjdG9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8Q3NzVmFsdWU8Q29tYmluYXRvcj4+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZWFkaW5nQ29tYmluYXRvcnMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxlYWRpbmdDb21iaW5hdG9yczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb21wb25lbnRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wb25lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogSWYgdGhpcyBjb21wb3VuZCBzZWxlY3RvciBpcyBjb21wb3NlZCBvZiBhIHNpbmdsZSBjb21wb3VuZCBzZWxlY3RvciB3aXRoCiAgICAgKiBubyBjb21iaW5hdG9ycywgcmV0dXJucyBpdC4KICAgICAqCiAgICAgKiBPdGhlcndpc2UsIHJldHVybnMgbnVsbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIENvbXBvdW5kU2VsZWN0b3J8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2luZ2xlQ29tcG91bmQoKTogP0NvbXBvdW5kU2VsZWN0b3IKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5sZWFkaW5nQ29tYmluYXRvcnMpID09PSAwICYmIFxjb3VudCgkdGhpcy0+Y29tcG9uZW50cykgPT09IDEgJiYgXGNvdW50KCR0aGlzLT5jb21wb25lbnRzWzBdLT5nZXRDb21iaW5hdG9ycygpKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBvbmVudHNbMF0tPmdldFNlbGVjdG9yKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFzdENvbXBvbmVudCgpOiBDb21wbGV4U2VsZWN0b3JDb21wb25lbnQKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5jb21wb25lbnRzKSA9PT0gMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mQm91bmRzRXhjZXB0aW9uKCdDYW5ub3QgZ2V0IHRoZSBsYXN0IGNvbXBvbmVudCBvZiBhbiBlbXB0eSBsaXN0LicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wb25lbnRzW1xjb3VudCgkdGhpcy0+Y29tcG9uZW50cykgLSAxXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZUJyZWFrKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxpbmVCcmVhazsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgc2VsZWN0b3IncyBzcGVjaWZpY2l0eS4KICAgICAqCiAgICAgKiBTcGVjaWZpY2l0eSBpcyByZXByZXNlbnRlZCBpbiBiYXNlIDEwMDAuIFRoZSBzcGVjIHNheXMgdGhpcyBzaG91bGQgYmUKICAgICAqICJzdWZmaWNpZW50bHkgaGlnaCI7IGl0J3MgZXh0cmVtZWx5IHVubGlrZWx5IHRoYXQgYW55IHNpbmdsZSBzZWxlY3RvcgogICAgICogc2VxdWVuY2Ugd2lsbCBjb250YWluIDEwMDAgc2ltcGxlIHNlbGVjdG9ycy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwZWNpZmljaXR5KCk6IGludAogICAgewogICAgICAgIGlmICgkdGhpcy0+c3BlY2lmaWNpdHkgPT09IG51bGwpIHsKICAgICAgICAgICAgJHNwZWNpZmljaXR5ID0gMDsKCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb21wb25lbnRzIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgICAgICRzcGVjaWZpY2l0eSArPSAkY29tcG9uZW50LT5nZXRTZWxlY3RvcigpLT5nZXRTcGVjaWZpY2l0eSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c3BlY2lmaWNpdHkgPSAkc3BlY2lmaWNpdHk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnNwZWNpZmljaXR5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU2VsZWN0b3JWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRDb21wbGV4U2VsZWN0b3IoJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGlzIGEgc3VwZXJzZWxlY3RvciBvZiAkb3RoZXIuCiAgICAgKgogICAgICogVGhhdCBpcywgd2hldGhlciB0aGlzIG1hdGNoZXMgZXZlcnkgZWxlbWVudCB0aGF0ICRvdGhlciBtYXRjaGVzLCBhcyB3ZWxsCiAgICAgKiBhcyBwb3NzaWJseSBhZGRpdGlvbmFsIGVsZW1lbnRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdXBlcnNlbGVjdG9yKENvbXBsZXhTZWxlY3RvciAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+bGVhZGluZ0NvbWJpbmF0b3JzKSA9PT0gMCAmJiBcY291bnQoJG90aGVyLT5sZWFkaW5nQ29tYmluYXRvcnMpID09PSAwICYmIEV4dGVuZFV0aWw6OmNvbXBsZXhJc1N1cGVyc2VsZWN0b3IoJHRoaXMtPmNvbXBvbmVudHMsICRvdGhlci0+Y29tcG9uZW50cyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBDb21wbGV4U2VsZWN0b3IgJiYgRXF1YXRhYmxlVXRpbDo6bGlzdEVxdWFscygkdGhpcy0+bGVhZGluZ0NvbWJpbmF0b3JzLCAkb3RoZXItPmxlYWRpbmdDb21iaW5hdG9ycykgJiYgRXF1YXRhYmxlVXRpbDo6bGlzdEVxdWFscygkdGhpcy0+Y29tcG9uZW50cywgJG90aGVyLT5jb21wb25lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIGAkdGhpc2Agd2l0aCAkY29tYmluYXRvcnMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgZmluYWwKICAgICAqIGNvbXBvbmVudCBpbiB7QHNlZSBjb21wb25lbnRzfS4KICAgICAqCiAgICAgKiBJZiAkZm9yY2VMaW5lQnJlYWsgaXMgYHRydWVgLCB0aGlzIHdpbGwgbWFyayB0aGUgbmV3IGNvbXBsZXggc2VsZWN0b3IgYXMKICAgICAqIGhhdmluZyBhIGxpbmUgYnJlYWsuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8Q3NzVmFsdWU8Q29tYmluYXRvcj4+ICRjb21iaW5hdG9ycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGl0aW9uYWxDb21iaW5hdG9ycyhhcnJheSAkY29tYmluYXRvcnMsIGJvb2wgJGZvcmNlTGluZUJyZWFrID0gZmFsc2UpOiBDb21wbGV4U2VsZWN0b3IKICAgIHsKICAgICAgICBpZiAoJGNvbWJpbmF0b3JzID09PSBbXSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmNvbXBvbmVudHMgPT09IFtdKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleFNlbGVjdG9yKGFycmF5X21lcmdlKCR0aGlzLT5sZWFkaW5nQ29tYmluYXRvcnMsICRjb21iaW5hdG9ycyksIFtdLCAkdGhpcy0+Z2V0U3BhbigpLCAkdGhpcy0+bGluZUJyZWFrIHx8ICRmb3JjZUxpbmVCcmVhayk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IENvbXBsZXhTZWxlY3RvcigKICAgICAgICAgICAgJHRoaXMtPmxlYWRpbmdDb21iaW5hdG9ycywKICAgICAgICAgICAgYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICBMaXN0VXRpbDo6ZXhjZXB0TGFzdCgkdGhpcy0+Y29tcG9uZW50cyksCiAgICAgICAgICAgICAgICBbTGlzdFV0aWw6Omxhc3QoJHRoaXMtPmNvbXBvbmVudHMpLT53aXRoQWRkaXRpb25hbENvbWJpbmF0b3JzKCRjb21iaW5hdG9ycyldCiAgICAgICAgICAgICksCiAgICAgICAgICAgICR0aGlzLT5nZXRTcGFuKCksCiAgICAgICAgICAgICR0aGlzLT5saW5lQnJlYWsgfHwgJGZvcmNlTGluZUJyZWFrCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIGAkdGhpc2Agd2l0aCBhbiBhZGRpdGlvbmFsICRjb21wb25lbnQgYWRkZWQgdG8gdGhlIGVuZC4KICAgICAqCiAgICAgKiBJZiAkZm9yY2VMaW5lQnJlYWsgaXMgYHRydWVgLCB0aGlzIHdpbGwgbWFyayB0aGUgbmV3IGNvbXBsZXggc2VsZWN0b3IgYXMKICAgICAqIGhhdmluZyBhIGxpbmUgYnJlYWsuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQWRkaXRpb25hbENvbXBvbmVudChDb21wbGV4U2VsZWN0b3JDb21wb25lbnQgJGNvbXBvbmVudCwgRmlsZVNwYW4gJHNwYW4sIGJvb2wgJGZvcmNlTGluZUJyZWFrID0gZmFsc2UpOiBDb21wbGV4U2VsZWN0b3IKICAgIHsKICAgICAgICByZXR1cm4gbmV3IENvbXBsZXhTZWxlY3RvcigkdGhpcy0+bGVhZGluZ0NvbWJpbmF0b3JzLCBhcnJheV9tZXJnZSgkdGhpcy0+Y29tcG9uZW50cywgWyRjb21wb25lbnRdKSwgJHNwYW4sICR0aGlzLT5saW5lQnJlYWsgfHwgJGZvcmNlTGluZUJyZWFrKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIGB0aGlzYCB3aXRoICRjaGlsZCdzIGNvbWJpbmF0b3JzIGFkZGVkIHRvIHRoZSBlbmQuCiAgICAgKgogICAgICogSWYgJGNoaWxkIGhhcyB7QHNlZSBsZWFkaW5nQ29tYmluYXRvcnN9LCB0aGV5J3JlIGFwcGVuZGVkIHRvIGB0aGlzYCdzIGxhc3QKICAgICAqIGNvbWJpbmF0b3IuIFRoaXMgZG9lcyBfbm90XyByZXNvbHZlIHBhcmVudCBzZWxlY3RvcnMuCiAgICAgKgogICAgICogSWYgJGZvcmNlTGluZUJyZWFrIGlzIGB0cnVlYCwgdGhpcyB3aWxsIG1hcmsgdGhlIG5ldyBjb21wbGV4IHNlbGVjdG9yIGFzCiAgICAgKiBoYXZpbmcgYSBsaW5lIGJyZWFrLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29uY2F0ZW5hdGUoQ29tcGxleFNlbGVjdG9yICRjaGlsZCwgRmlsZVNwYW4gJHNwYW4sIGJvb2wgJGZvcmNlTGluZUJyZWFrID0gZmFsc2UpOiBDb21wbGV4U2VsZWN0b3IKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRjaGlsZC0+bGVhZGluZ0NvbWJpbmF0b3JzKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXhTZWxlY3RvcigKICAgICAgICAgICAgICAgICR0aGlzLT5sZWFkaW5nQ29tYmluYXRvcnMsCiAgICAgICAgICAgICAgICBhcnJheV9tZXJnZSgkdGhpcy0+Y29tcG9uZW50cywgJGNoaWxkLT5jb21wb25lbnRzKSwKICAgICAgICAgICAgICAgICRzcGFuLAogICAgICAgICAgICAgICAgJHRoaXMtPmxpbmVCcmVhayB8fCAkY2hpbGQtPmxpbmVCcmVhayB8fCAkZm9yY2VMaW5lQnJlYWsKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJHRoaXMtPmNvbXBvbmVudHMpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleFNlbGVjdG9yKAogICAgICAgICAgICAgICAgYXJyYXlfbWVyZ2UoJHRoaXMtPmxlYWRpbmdDb21iaW5hdG9ycywgJGNoaWxkLT5sZWFkaW5nQ29tYmluYXRvcnMpLAogICAgICAgICAgICAgICAgJGNoaWxkLT5jb21wb25lbnRzLAogICAgICAgICAgICAgICAgJHNwYW4sCiAgICAgICAgICAgICAgICAkdGhpcy0+bGluZUJyZWFrIHx8ICRjaGlsZC0+bGluZUJyZWFrIHx8ICRmb3JjZUxpbmVCcmVhawogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBDb21wbGV4U2VsZWN0b3IoCiAgICAgICAgICAgICR0aGlzLT5sZWFkaW5nQ29tYmluYXRvcnMsCiAgICAgICAgICAgIGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgTGlzdFV0aWw6OmV4Y2VwdExhc3QoJHRoaXMtPmNvbXBvbmVudHMpLAogICAgICAgICAgICAgICAgW0xpc3RVdGlsOjpsYXN0KCR0aGlzLT5jb21wb25lbnRzKS0+d2l0aEFkZGl0aW9uYWxDb21iaW5hdG9ycygkY2hpbGQtPmxlYWRpbmdDb21iaW5hdG9ycyldLAogICAgICAgICAgICAgICAgJGNoaWxkLT5jb21wb25lbnRzCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRzcGFuLAogICAgICAgICAgICAkdGhpcy0+bGluZUJyZWFrIHx8ICRjaGlsZC0+bGluZUJyZWFrIHx8ICRmb3JjZUxpbmVCcmVhawogICAgICAgICk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/ComplexSelectorComponent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVxdWF0YWJsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVxdWF0YWJsZVV0aWw7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgY29tcG9uZW50IG9mIGEge0BzZWUgQ29tcGxleFNlbGVjdG9yfS4KICoKICogVGhpcyBhIHtAc2VlIENvbXBvdW5kU2VsZWN0b3J9IHdpdGggb25lIG9yIG1vcmUgdHJhaWxpbmcge0BzZWUgQ29tYmluYXRvcn1zLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIENvbXBsZXhTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIEVxdWF0YWJsZQp7CiAgICAvKioKICAgICAqIFRoaXMgY29tcG9uZW50J3MgY29tcG91bmQgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgQ29tcG91bmRTZWxlY3RvciAkc2VsZWN0b3I7CgogICAgLyoqCiAgICAgKiBUaGlzIHNlbGVjdG9yJ3MgY29tYmluYXRvcnMuCiAgICAgKgogICAgICogSWYgdGhpcyBpcyBlbXB0eSwgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBoYXMgYW4gaW1wbGljaXQgZGVzY2VuZGVudAogICAgICogY29tYmluYXRvci4gSWYgaXQncyBtb3JlIHRoYW4gb25lIGVsZW1lbnQsIHRoYXQgbWVhbnMgaXQncyBpbnZhbGlkIENTUzsKICAgICAqIGhvd2V2ZXIsIHdlIHN0aWxsIHN1cHBvcnQgdGhpcyBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgcHVycG9zZXMuCiAgICAgKgogICAgICogQHZhciBsaXN0PENzc1ZhbHVlPENvbWJpbmF0b3I+PgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRjb21iaW5hdG9yczsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8Q3NzVmFsdWU8Q29tYmluYXRvcj4+ICRjb21iaW5hdG9ycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ29tcG91bmRTZWxlY3RvciAkc2VsZWN0b3IsIGFycmF5ICRjb21iaW5hdG9ycywgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPnNlbGVjdG9yID0gJHNlbGVjdG9yOwogICAgICAgICR0aGlzLT5jb21iaW5hdG9ycyA9ICRjb21iaW5hdG9yczsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZWxlY3RvcigpOiBDb21wb3VuZFNlbGVjdG9yCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RvcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxDc3NWYWx1ZTxDb21iaW5hdG9yPj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbWJpbmF0b3JzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21iaW5hdG9yczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIENvbXBsZXhTZWxlY3RvckNvbXBvbmVudCAmJiAkdGhpcy0+c2VsZWN0b3ItPmVxdWFscygkb3RoZXItPnNlbGVjdG9yKSAmJiBFcXVhdGFibGVVdGlsOjpsaXN0RXF1YWxzKCR0aGlzLT5jb21iaW5hdG9ycywgJG90aGVyLT5jb21iaW5hdG9ycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgY29weSBvZiAkdGhpcyB3aXRoICRjb21iaW5hdG9ycyBhZGRlZCB0byB0aGUgZW5kIG9mCiAgICAgKiBgJHRoaXMtPmNvbWJpbmF0b3JzYC4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxDc3NWYWx1ZTxDb21iaW5hdG9yPj4gJGNvbWJpbmF0b3JzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQWRkaXRpb25hbENvbWJpbmF0b3JzKGFycmF5ICRjb21iaW5hdG9ycyk6IENvbXBsZXhTZWxlY3RvckNvbXBvbmVudAogICAgewogICAgICAgIGlmICgkY29tYmluYXRvcnMgPT09IFtdKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KCR0aGlzLT5zZWxlY3RvciwgYXJyYXlfbWVyZ2UoJHRoaXMtPmNvbWJpbmF0b3JzLCAkY29tYmluYXRvcnMpLCAkdGhpcy0+c3Bhbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RvciAuIGltcGxvZGUoJycsIGFycmF5X21hcChmbiAoJGNvbWJpbmF0b3IpID0+ICcgJyAuICRjb21iaW5hdG9yLCAkdGhpcy0+Y29tYmluYXRvcnMpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/CompoundSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NGb3JtYXRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXh0ZW5kXEV4dGVuZFV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcTG9nZ2VyXExvZ2dlckludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcU2VsZWN0b3JQYXJzZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGVVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcSXRlcmFibGVVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcU2VsZWN0b3JWaXNpdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGNvbXBvdW5kIHNlbGVjdG9yLgogKgogKiBBIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGNvbXBvc2VkIG9mIHtAc2VlIFNpbXBsZVNlbGVjdG9yfXMuIEl0IG1hdGNoZXMgYW4gZWxlbWVudAogKiB0aGF0IG1hdGNoZXMgYWxsIG9mIHRoZSBjb21wb25lbnQgc2ltcGxlIHNlbGVjdG9ycy4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBDb21wb3VuZFNlbGVjdG9yIGV4dGVuZHMgU2VsZWN0b3IKewogICAgLyoqCiAgICAgKiBUaGUgY29tcG9uZW50cyBvZiB0aGlzIHNlbGVjdG9yLgogICAgICoKICAgICAqIFRoaXMgaXMgbmV2ZXIgZW1wdHkuCiAgICAgKgogICAgICogQHZhciBsaXN0PFNpbXBsZVNlbGVjdG9yPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRjb21wb25lbnRzOwoKICAgIHByaXZhdGUgP2ludCAkc3BlY2lmaWNpdHkgPSBudWxsOwoKICAgIHByaXZhdGUgP2Jvb2wgJGNvbXBsaWNhdGVkU3VwZXJzZWxlY3RvclNlbWFudGljcyA9IG51bGw7CgogICAgLyoqCiAgICAgKiBQYXJzZXMgYSBjb21wb3VuZCBzZWxlY3RvciBmcm9tICRjb250ZW50cy4KICAgICAqCiAgICAgKiBJZiBwYXNzZWQsICR1cmwgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAkY29udGVudHMgY29tZXMuCiAgICAgKiAkYWxsb3dQYXJlbnQgY29udHJvbHMgd2hldGhlciBhIHtAc2VlIFBhcmVudFNlbGVjdG9yfSBpcyBhbGxvd2VkIGluIHRoaXMKICAgICAqIHNlbGVjdG9yLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbiBpZiBwYXJzaW5nIGZhaWxzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKHN0cmluZyAkY29udGVudHMsID9Mb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciA9IG51bGwsID9VcmlJbnRlcmZhY2UgJHVybCA9IG51bGwsIGJvb2wgJGFsbG93UGFyZW50ID0gdHJ1ZSk6IENvbXBvdW5kU2VsZWN0b3IKICAgIHsKICAgICAgICByZXR1cm4gKG5ldyBTZWxlY3RvclBhcnNlcigkY29udGVudHMsICRsb2dnZXIsICR1cmwsICRhbGxvd1BhcmVudCkpLT5wYXJzZUNvbXBvdW5kU2VsZWN0b3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFNpbXBsZVNlbGVjdG9yPiAkY29tcG9uZW50cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGNvbXBvbmVudHMsIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgIGlmICgkY29tcG9uZW50cyA9PT0gW10pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2NvbXBvbmVudHMgbWF5IG5vdCBiZSBlbXB0eS4nKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jb21wb25lbnRzID0gJGNvbXBvbmVudHM7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkc3Bhbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8U2ltcGxlU2VsZWN0b3I+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb21wb25lbnRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wb25lbnRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXN0Q29tcG9uZW50KCk6IFNpbXBsZVNlbGVjdG9yCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wb25lbnRzW1xjb3VudCgkdGhpcy0+Y29tcG9uZW50cykgLSAxXTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgc2VsZWN0b3IncyBzcGVjaWZpY2l0eS4KICAgICAqCiAgICAgKiBTcGVjaWZpY2l0eSBpcyByZXByZXNlbnRlZCBpbiBiYXNlIDEwMDAuIFRoZSBzcGVjIHNheXMgdGhpcyBzaG91bGQgYmUKICAgICAqICJzdWZmaWNpZW50bHkgaGlnaCI7IGl0J3MgZXh0cmVtZWx5IHVubGlrZWx5IHRoYXQgYW55IHNpbmdsZSBzZWxlY3RvcgogICAgICogc2VxdWVuY2Ugd2lsbCBjb250YWluIDEwMDAgc2ltcGxlIHNlbGVjdG9ycy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwZWNpZmljaXR5KCk6IGludAogICAgewogICAgICAgIGlmICgkdGhpcy0+c3BlY2lmaWNpdHkgPT09IG51bGwpIHsKICAgICAgICAgICAgJHNwZWNpZmljaXR5ID0gMDsKCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb21wb25lbnRzIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgICAgICRzcGVjaWZpY2l0eSArPSAkY29tcG9uZW50LT5nZXRTcGVjaWZpY2l0eSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c3BlY2lmaWNpdHkgPSAkc3BlY2lmaWNpdHk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnNwZWNpZmljaXR5OwogICAgfQoKICAgIC8qKgogICAgICogSWYgdGhpcyBjb21wb3VuZCBzZWxlY3RvciBpcyBjb21wb3NlZCBvZiBhIHNpbmdsZSBzaW1wbGUgc2VsZWN0b3IsIHJldHVybnMKICAgICAqIGl0LgogICAgICoKICAgICAqIE90aGVyd2lzZSwgcmV0dXJucyBudWxsLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2luZ2xlU2ltcGxlKCk6ID9TaW1wbGVTZWxlY3RvcgogICAgewogICAgICAgIHJldHVybiBcY291bnQoJHRoaXMtPmNvbXBvbmVudHMpID09PSAxID8gJHRoaXMtPmNvbXBvbmVudHNbMF0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciBhbnkgc2ltcGxlIHNlbGVjdG9yIGluIHRoaXMgY29udGFpbnMgYSBzZWxlY3RvciB0aGF0IHJlcXVpcmVzCiAgICAgKiBjb21wbGV4IG5vbi1sb2NhbCByZWFzb25pbmcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBhIHN1cGVyLSBvcgogICAgICogc3ViLXNlbGVjdG9yLgogICAgICoKICAgICAqIFRoaXMgaW5jbHVkZXMgYm90aCBwc2V1ZG8tZWxlbWVudHMgYW5kIHBzZXVkby1zZWxlY3RvcnMgdGhhdCB0YWtlCiAgICAgKiBzZWxlY3RvcnMgYXMgYXJndW1lbnRzLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzQ29tcGxpY2F0ZWRTdXBlcnNlbGVjdG9yU2VtYW50aWNzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBsaWNhdGVkU3VwZXJzZWxlY3RvclNlbWFudGljcyA/Pz0gSXRlcmFibGVVdGlsOjphbnkoJHRoaXMtPmNvbXBvbmVudHMsIGZuIChTaW1wbGVTZWxlY3RvciAkY29tcG9uZW50KSA9PiAkY29tcG9uZW50LT5oYXNDb21wbGljYXRlZFN1cGVyc2VsZWN0b3JTZW1hbnRpY3MoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTZWxlY3RvclZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdENvbXBvdW5kU2VsZWN0b3IoJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGlzIGEgc3VwZXJzZWxlY3RvciBvZiAkb3RoZXIuCiAgICAgKgogICAgICogVGhhdCBpcywgd2hldGhlciB0aGlzIG1hdGNoZXMgZXZlcnkgZWxlbWVudCB0aGF0ICRvdGhlciBtYXRjaGVzLCBhcyB3ZWxsCiAgICAgKiBhcyBwb3NzaWJseSBhZGRpdGlvbmFsIGVsZW1lbnRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdXBlcnNlbGVjdG9yKENvbXBvdW5kU2VsZWN0b3IgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBFeHRlbmRVdGlsOjpjb21wb3VuZElzU3VwZXJzZWxlY3RvcigkdGhpcywgJG90aGVyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIENvbXBvdW5kU2VsZWN0b3IgJiYgRXF1YXRhYmxlVXRpbDo6bGlzdEVxdWFscygkdGhpcy0+Y29tcG9uZW50cywgJG90aGVyLT5jb21wb25lbnRzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/IDSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEFuIElEIHNlbGVjdG9yLgogKgogKiBUaGlzIHNlbGVjdHMgZWxlbWVudHMgd2hvc2UgYGlkYCBhdHRyaWJ1dGUgZXhhY3RseSBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIElEU2VsZWN0b3IgZXh0ZW5kcyBTaW1wbGVTZWxlY3Rvcgp7CiAgICAvKioKICAgICAqIFRoZSBJRCBuYW1lIHRoaXMgc2VsZWN0cyBmb3IuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuYW1lOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG5hbWUsIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT5uYW1lID0gJG5hbWU7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkc3Bhbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGVjaWZpY2l0eSgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gcGFyZW50OjpnZXRTcGVjaWZpY2l0eSgpICoqIDI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTZWxlY3RvclZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdElEU2VsZWN0b3IoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRTdWZmaXgoc3RyaW5nICRzdWZmaXgpOiBTaW1wbGVTZWxlY3RvcgogICAgewogICAgICAgIHJldHVybiBuZXcgSURTZWxlY3RvcigkdGhpcy0+bmFtZSAuICRzdWZmaXgsICR0aGlzLT5nZXRTcGFuKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmlmeShhcnJheSAkY29tcG91bmQpOiA/YXJyYXkKICAgIHsKICAgICAgICAvLyBBIGdpdmVuIGNvbXBvdW5kIHNlbGVjdG9yIG1heSBvbmx5IGNvbnRhaW4gb25lIElELgogICAgICAgIGZvcmVhY2ggKCRjb21wb3VuZCBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgIGlmICgkc2ltcGxlIGluc3RhbmNlb2YgSURTZWxlY3RvciAmJiAhJHNpbXBsZS0+ZXF1YWxzKCR0aGlzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6OnVuaWZ5KCRjb21wb3VuZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBJRFNlbGVjdG9yICYmICRvdGhlci0+bmFtZSA9PT0gJHRoaXMtPm5hbWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/IsBogusVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxBbnlTZWxlY3RvclZpc2l0b3I7CgovKioKICogVGhlIHZpc2l0b3IgdXNlZCB0byBpbXBsZW1lbnQge0BzZWUgU2VsZWN0b3I6OmlzQm9ndXN9LgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIElzQm9ndXNWaXNpdG9yIGV4dGVuZHMgQW55U2VsZWN0b3JWaXNpdG9yCnsKICAgIC8qKgogICAgICogV2hldGhlciB0byBjb25zaWRlciBzZWxlY3RvcnMgd2l0aCBsZWFkaW5nIGNvbWJpbmF0b3JzIGFzIGJvZ3VzLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGluY2x1ZGVMZWFkaW5nQ29tYmluYXRvcjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYm9vbCAkaW5jbHVkZUxlYWRpbmdDb21iaW5hdG9yKQogICAgewogICAgICAgICR0aGlzLT5pbmNsdWRlTGVhZGluZ0NvbWJpbmF0b3IgPSAkaW5jbHVkZUxlYWRpbmdDb21iaW5hdG9yOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENvbXBsZXhTZWxlY3RvcihDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpOiBib29sCiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkY29tcGxleC0+Z2V0Q29tcG9uZW50cygpKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gXGNvdW50KCRjb21wbGV4LT5nZXRMZWFkaW5nQ29tYmluYXRvcnMoKSkgPiAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxjb3VudCgkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCkpID4gKCR0aGlzLT5pbmNsdWRlTGVhZGluZ0NvbWJpbmF0b3IgPyAwIDogMSkgfHwgY291bnQoJGNvbXBsZXgtPmdldExhc3RDb21wb25lbnQoKS0+Z2V0Q29tYmluYXRvcnMoKSkgIT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkY29tcGxleC0+Z2V0Q29tcG9uZW50cygpIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgaWYgKFxjb3VudCgkY29tcG9uZW50LT5nZXRDb21iaW5hdG9ycygpKSA+IDEgfHwgJGNvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKS0+YWNjZXB0KCR0aGlzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRQc2V1ZG9TZWxlY3RvcihQc2V1ZG9TZWxlY3RvciAkcHNldWRvKTogYm9vbAogICAgewogICAgICAgICRzZWxlY3RvciA9ICRwc2V1ZG8tPmdldFNlbGVjdG9yKCk7CgogICAgICAgIGlmICgkc2VsZWN0b3IgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gVGhlIENTUyBzcGVjIHNwZWNpZmljYWxseSBhbGxvd3MgbGVhZGluZyBjb21iaW5hdG9ycyBpbiBgOmhhcygpYC4KICAgICAgICByZXR1cm4gJHBzZXVkby0+Z2V0TmFtZSgpID09PSAnaGFzJyA/ICRzZWxlY3Rvci0+aXNCb2d1c090aGVyVGhhbkxlYWRpbmdDb21iaW5hdG9yKCkgOiAkc2VsZWN0b3ItPmlzQm9ndXMoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/IsInvisibleVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxBbnlTZWxlY3RvclZpc2l0b3I7CgovKioKICogVGhlIHZpc2l0b3IgdXNlZCB0byBpbXBsZW1lbnQge0BzZWUgU2VsZWN0b3I6OmlzSW52aXNpYmxlfS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBJc0ludmlzaWJsZVZpc2l0b3IgZXh0ZW5kcyBBbnlTZWxlY3RvclZpc2l0b3IKewogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRvIGNvbnNpZGVyIHNlbGVjdG9ycyB3aXRoIGJvZ3VzIGNvbWJpbmF0b3JzIGludmlzaWJsZS4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRpbmNsdWRlQm9ndXM7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGJvb2wgJGluY2x1ZGVCb2d1cykKICAgIHsKICAgICAgICAkdGhpcy0+aW5jbHVkZUJvZ3VzID0gJGluY2x1ZGVCb2d1czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTZWxlY3Rvckxpc3QoU2VsZWN0b3JMaXN0ICRsaXN0KTogYm9vbAogICAgewogICAgICAgIGZvcmVhY2ggKCRsaXN0LT5nZXRDb21wb25lbnRzKCkgYXMgJGNvbXBsZXgpIHsKICAgICAgICAgICAgaWYgKCEkdGhpcy0+dmlzaXRDb21wbGV4U2VsZWN0b3IoJGNvbXBsZXgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENvbXBsZXhTZWxlY3RvcihDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHBhcmVudDo6dmlzaXRDb21wbGV4U2VsZWN0b3IoJGNvbXBsZXgpIHx8ICgkdGhpcy0+aW5jbHVkZUJvZ3VzICYmICRjb21wbGV4LT5pc0JvZ3VzT3RoZXJUaGFuTGVhZGluZ0NvbWJpbmF0b3IoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UGxhY2Vob2xkZXJTZWxlY3RvcihQbGFjZWhvbGRlclNlbGVjdG9yICRwbGFjZWhvbGRlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRQc2V1ZG9TZWxlY3RvcihQc2V1ZG9TZWxlY3RvciAkcHNldWRvKTogYm9vbAogICAgewogICAgICAgICRzZWxlY3RvciA9ICRwc2V1ZG8tPmdldFNlbGVjdG9yKCk7CgogICAgICAgIGlmICgkc2VsZWN0b3IgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gV2UgZG9uJ3QgY29uc2lkZXIgYDpub3QoJWZvbylgIHRvIGJlIGludmlzaWJsZSBiZWNhdXNlLCBzZW1hbnRpY2FsbHksIGl0CiAgICAgICAgLy8gbWVhbnMgImRvZXNuJ3QgbWF0Y2ggdGhpcyBzZWxlY3RvciB0aGF0IG1hdGNoZXMgbm90aGluZyIsIHNvIGl0J3MKICAgICAgICAvLyBlcXVpdmFsZW50IHRvICouIElmIHRoZSBlbnRpcmUgY29tcG91bmQgc2VsZWN0b3IgaXMgY29tcG9zZWQgb2YgYDpub3RgcwogICAgICAgIC8vIHdpdGggaW52aXNpYmxlIGxpc3RzLCB0aGUgc2VyaWFsaXplciBlbWl0cyBpdCBhcyBgKmAuCiAgICAgICAgcmV0dXJuICRwc2V1ZG8tPmdldE5hbWUoKSA9PT0gJ25vdCcgPyAoJHRoaXMtPmluY2x1ZGVCb2d1cyAmJiAkc2VsZWN0b3ItPmlzQm9ndXMoKSkgOiAkc2VsZWN0b3ItPmFjY2VwdCgkdGhpcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/IsUselessVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxBbnlTZWxlY3RvclZpc2l0b3I7CgovKioKICogVGhlIHZpc2l0b3IgdXNlZCB0byBpbXBsZW1lbnQge0BzZWUgU2VsZWN0b3I6OmlzVXNlbGVzc30uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgSXNVc2VsZXNzVmlzaXRvciBleHRlbmRzIEFueVNlbGVjdG9yVmlzaXRvcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb21wbGV4U2VsZWN0b3IoQ29tcGxleFNlbGVjdG9yICRjb21wbGV4KTogYm9vbAogICAgewogICAgICAgIGlmIChcY291bnQoJGNvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpKSA+IDEpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkY29tcGxleC0+Z2V0Q29tcG9uZW50cygpIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgaWYgKFxjb3VudCgkY29tcG9uZW50LT5nZXRDb21iaW5hdG9ycygpKSA+IDEgfHwgJGNvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKS0+YWNjZXB0KCR0aGlzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRQc2V1ZG9TZWxlY3RvcihQc2V1ZG9TZWxlY3RvciAkcHNldWRvKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkcHNldWRvLT5pc0JvZ3VzKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/ParentSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgc2VsZWN0b3IgdGhhdCBtYXRjaGVzIHRoZSBwYXJlbnQgaW4gdGhlIFNhc3Mgc3R5bGVzaGVldC4KICoKICogVGhpcyBpcyBub3QgYSBwbGFpbiBDU1Mgc2VsZWN0b3LigJRpdCBzaG91bGQgYmUgcmVtb3ZlZCBiZWZvcmUgZW1pdHRpbmcgYSBDU1MKICogZG9jdW1lbnQuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgUGFyZW50U2VsZWN0b3IgZXh0ZW5kcyBTaW1wbGVTZWxlY3Rvcgp7CiAgICAvKioKICAgICAqIFRoZSBzdWZmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBwYXJlbnQgc2VsZWN0b3IgYWZ0ZXIgaXQncyBiZWVuCiAgICAgKiByZXNvbHZlZC4KICAgICAqCiAgICAgKiBUaGlzIGlzIGFzc3VtZWQgdG8gYmUgYSB2YWxpZCBpZGVudGlmaWVyIHN1ZmZpeC4gSXQgbWF5IGJlIGBudWxsYCwKICAgICAqIGluZGljYXRpbmcgdGhhdCB0aGUgcGFyZW50IHNlbGVjdG9yIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJHN1ZmZpeDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoRmlsZVNwYW4gJHNwYW4sID9zdHJpbmcgJHN1ZmZpeCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnN1ZmZpeCA9ICRzdWZmaXg7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkc3Bhbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1ZmZpeCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdWZmaXg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgPT09ICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU2VsZWN0b3JWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRQYXJlbnRTZWxlY3RvcigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHVuaWZ5KGFycmF5ICRjb21wb3VuZCk6ID9hcnJheQogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIiYgZG9lc24ndCBzdXBwb3J0IHVuaWZpY2F0aW9uLiIpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/ParentSelectorVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFNlbGVjdG9yU2VhcmNoVmlzaXRvcjsKCi8qKgogKiBBIHZpc2l0b3IgZm9yIGZpbmRpbmcgdGhlIGZpcnN0IHtAc2VlIFBhcmVudFNlbGVjdG9yfSBpbiBhIGdpdmVuIHNlbGVjdG9yLgogKgogKiBAdGVtcGxhdGUtZXh0ZW5kcyBTZWxlY3RvclNlYXJjaFZpc2l0b3I8UGFyZW50U2VsZWN0b3I+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgUGFyZW50U2VsZWN0b3JWaXNpdG9yIGV4dGVuZHMgU2VsZWN0b3JTZWFyY2hWaXNpdG9yCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFBhcmVudFNlbGVjdG9yKFBhcmVudFNlbGVjdG9yICRzZWxlY3Rvcik6IFBhcmVudFNlbGVjdG9yCiAgICB7CiAgICAgICAgcmV0dXJuICRzZWxlY3RvcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/PlaceholderSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxDaGFyYWN0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgcGxhY2Vob2xkZXIgc2VsZWN0b3IuCiAqCiAqIFRoaXMgZG9lc24ndCBtYXRjaCBhbnkgZWxlbWVudHMuIEl0J3MgaW50ZW5kZWQgdG8gYmUgZXh0ZW5kZWQgdXNpbmcKICogYEBleHRlbmRgLiBJdCdzIG5vdCBhIHBsYWluIENTUyBzZWxlY3RvcuKAlGl0IHNob3VsZCBiZSByZW1vdmVkIGJlZm9yZQogKiBlbWl0dGluZyBhIENTUyBkb2N1bWVudC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBQbGFjZWhvbGRlclNlbGVjdG9yIGV4dGVuZHMgU2ltcGxlU2VsZWN0b3IKewogICAgLyoqCiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcGxhY2Vob2xkZXIuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuYW1lOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG5hbWUsIEZpbGVTcGFuICRzcGFuKQogICAgewogICAgICAgICR0aGlzLT5uYW1lID0gJG5hbWU7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkc3Bhbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgaXMgYSBwcml2YXRlIHNlbGVjdG9yICh0aGF0IGlzLCB3aGV0aGVyIGl0IGJlZ2lucwogICAgICogd2l0aCBgLWAgb3IgYF9gKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUHJpdmF0ZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIENoYXJhY3Rlcjo6aXNQcml2YXRlKCR0aGlzLT5uYW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFNlbGVjdG9yVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0UGxhY2Vob2xkZXJTZWxlY3RvcigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFN1ZmZpeChzdHJpbmcgJHN1ZmZpeCk6IFNpbXBsZVNlbGVjdG9yCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBQbGFjZWhvbGRlclNlbGVjdG9yKCR0aGlzLT5uYW1lIC4gJHN1ZmZpeCwgJHRoaXMtPmdldFNwYW4oKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBQbGFjZWhvbGRlclNlbGVjdG9yICYmICRvdGhlci0+bmFtZSA9PT0gJHRoaXMtPm5hbWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/PseudoSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVxdWF0YWJsZVV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgcHNldWRvLWNsYXNzIG9yIHBzZXVkby1lbGVtZW50IHNlbGVjdG9yLgogKgogKiBUaGUgc2VtYW50aWNzIG9mIGEgc3BlY2lmaWMgcHNldWRvIHNlbGVjdG9yIGRlcGVuZHMgb24gaXRzIG5hbWUuIFNvbWUKICogc2VsZWN0b3JzIHRha2UgYXJndW1lbnRzLCBpbmNsdWRpbmcgb3RoZXIgc2VsZWN0b3JzLiBTYXNzIG1hbnVhbGx5IGVuY29kZXMKICogbG9naWMgZm9yIGVhY2ggcHNldWRvIHNlbGVjdG9yIHRoYXQgdGFrZXMgYSBzZWxlY3RvciBhcyBhbiBhcmd1bWVudCwgdG8KICogZW5zdXJlIHRoYXQgZXh0ZW5zaW9uIGFuZCBvdGhlciBzZWxlY3RvciBvcGVyYXRpb25zIHdvcmsgcHJvcGVybHkuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgUHNldWRvU2VsZWN0b3IgZXh0ZW5kcyBTaW1wbGVTZWxlY3Rvcgp7CiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoaXMgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuYW1lOwoKICAgIC8qKgogICAgICogTGlrZSB7QHNlZSBuYW1lfSwgYnV0IHdpdGhvdXQgYW55IHZlbmRvciBwcmVmaXhlcy4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG5vcm1hbGl6ZWROYW1lOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkaXNDbGFzczsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGlzU3ludGFjdGljQ2xhc3M7CgogICAgLyoqCiAgICAgKiBUaGUgbm9uLXNlbGVjdG9yIGFyZ3VtZW50IHBhc3NlZCB0byB0aGlzIHNlbGVjdG9yLgogICAgICoKICAgICAqIFRoaXMgaXMgYG51bGxgIGlmIHRoZXJlJ3Mgbm8gYXJndW1lbnQuIElmIHtAc2VlIGFyZ3VtZW50fSBhbmQge0BzZWUgc2VsZWN0b3J9IGFyZQogICAgICogYm90aCBub24tYG51bGxgLCB0aGUgc2VsZWN0b3IgZm9sbG93cyB0aGUgYXJndW1lbnQuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkYXJndW1lbnQ7CgogICAgLyoqCiAgICAgKiBUaGUgc2VsZWN0b3IgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgc2VsZWN0b3IuCiAgICAgKgogICAgICogVGhpcyBpcyBgbnVsbGAgaWYgdGhlcmUncyBubyBzZWxlY3Rvci4gSWYge0BzZWUgYXJndW1lbnR9IGFuZCB7QHNlZSBzZWxlY3Rvcn0gYXJlCiAgICAgKiBib3RoIG5vbi1gbnVsbGAsIHRoZSBzZWxlY3RvciBmb2xsb3dzIHRoZSBhcmd1bWVudC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSA/U2VsZWN0b3JMaXN0ICRzZWxlY3RvcjsKCiAgICBwcml2YXRlID9pbnQgJHNwZWNpZmljaXR5ID0gbnVsbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRuYW1lLCBGaWxlU3BhbiAkc3BhbiwgYm9vbCAkZWxlbWVudCA9IGZhbHNlLCA/c3RyaW5nICRhcmd1bWVudCA9IG51bGwsID9TZWxlY3Rvckxpc3QgJHNlbGVjdG9yID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5pc0NsYXNzID0gISRlbGVtZW50ICYmICFzZWxmOjppc0Zha2VQc2V1ZG9FbGVtZW50KCRuYW1lKTsKICAgICAgICAkdGhpcy0+aXNTeW50YWN0aWNDbGFzcyA9ICEkZWxlbWVudDsKICAgICAgICAkdGhpcy0+YXJndW1lbnQgPSAkYXJndW1lbnQ7CiAgICAgICAgJHRoaXMtPnNlbGVjdG9yID0gJHNlbGVjdG9yOwogICAgICAgICR0aGlzLT5ub3JtYWxpemVkTmFtZSA9IFV0aWw6OnVudmVuZG9yKCRuYW1lKTsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRzcGFuKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkbmFtZSBpcyB0aGUgbmFtZSBvZiBhIHBzZXVkby1lbGVtZW50IHRoYXQgY2FuIGJlIHdyaXR0ZW4KICAgICAqIHdpdGggcHNldWRvLWNsYXNzIHN5bnRheCAoYDpiZWZvcmVgLCBgOmFmdGVyYCwgYDpmaXJzdC1saW5lYCwgb3IKICAgICAqIGA6Zmlyc3QtbGV0dGVyYCkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNGYWtlUHNldWRvRWxlbWVudChzdHJpbmcgJG5hbWUpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRuYW1lID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRuYW1lWzBdKSB7CiAgICAgICAgICAgIGNhc2UgJ2EnOgogICAgICAgICAgICBjYXNlICdBJzoKICAgICAgICAgICAgICAgIHJldHVybiBzdHJ0b2xvd2VyKCRuYW1lKSA9PT0gJ2FmdGVyJzsKCiAgICAgICAgICAgIGNhc2UgJ2InOgogICAgICAgICAgICBjYXNlICdCJzoKICAgICAgICAgICAgICAgIHJldHVybiBzdHJ0b2xvd2VyKCRuYW1lKSA9PT0gJ2JlZm9yZSc7CgogICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICAgICAkbG93ZXJDYXNlZE5hbWUgPSBzdHJ0b2xvd2VyKCRuYW1lKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGxvd2VyQ2FzZWROYW1lID09PSAnZmlyc3QtbGluZScgfHwgJGxvd2VyQ2FzZWROYW1lID09PSAnZmlyc3QtbGV0dGVyJzsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Tm9ybWFsaXplZE5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5ub3JtYWxpemVkTmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBpcyBhIHBzZXVkby1jbGFzcyBzZWxlY3Rvci4KICAgICAqCiAgICAgKiBUaGlzIGlzIGB0cnVlYCBpZiBhbmQgb25seSBpZiB7QHNlZSBpc0VsZW1lbnR9IGlzIGBmYWxzZWAuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0NsYXNzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlzQ2xhc3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgaXMgYSBwc2V1ZG8tZWxlbWVudCBzZWxlY3Rvci4KICAgICAqCiAgICAgKiBUaGlzIGlzIGB0cnVlYCBpZiBhbmQgb25seSBpZiB7QHNlZSBpc0NsYXNzfSBpcyBgZmFsc2VgLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbGVtZW50KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT5pc0NsYXNzOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGlzIHN5bnRhY3RpY2FsbHkgYSBwc2V1ZG8tY2xhc3Mgc2VsZWN0b3IuCiAgICAgKgogICAgICogVGhpcyBpcyB0aGUgc2FtZSBhcyB7QHNlZSBpc0NsYXNzfSB1bmxlc3MgdGhpcyBzZWxlY3RvciBpcyBhIHBzZXVkby1lbGVtZW50CiAgICAgKiB0aGF0IHdhcyB3cml0dGVuIHN5bnRhY3RpY2FsbHkgYXMgYSBwc2V1ZG8tY2xhc3MgKGA6YmVmb3JlYCwgYDphZnRlcmAsCiAgICAgKiBgOmZpcnN0LWxpbmVgLCBvciBgOmZpcnN0LWxldHRlcmApLgogICAgICoKICAgICAqIFRoaXMgaXMgYHRydWVgIGlmIGFuZCBvbmx5IGlmIHtAc2VlIGlzU3ludGFjdGljRWxlbWVudH0gaXMgYGZhbHNlYC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzU3ludGFjdGljQ2xhc3MoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNTeW50YWN0aWNDbGFzczsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBpcyBzeW50YWN0aWNhbGx5IGEgcHNldWRvLWVsZW1lbnQgc2VsZWN0b3IuCiAgICAgKgogICAgICogVGhpcyBpcyBgdHJ1ZWAgaWYgYW5kIG9ubHkgaWYge0BzZWUgaXNTeW50YWN0aWNDbGFzc30gaXMgYGZhbHNlYC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzU3ludGFjdGljRWxlbWVudCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+aXNTeW50YWN0aWNDbGFzczsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBpcyBhIHZhbGlkIGA6aG9zdGAgc2VsZWN0b3IuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0hvc3QoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNDbGFzcyAmJiAkdGhpcy0+bmFtZSA9PT0gJ2hvc3QnOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGlzIGEgdmFsaWQgYDpob3N0LWNvbnRleHRgIHNlbGVjdG9yLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNIb3N0Q29udGV4dCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pc0NsYXNzICYmICR0aGlzLT5uYW1lID09PSAnaG9zdC1jb250ZXh0JyAmJiAkdGhpcy0+c2VsZWN0b3IgIT09IG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFyZ3VtZW50KCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFyZ3VtZW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZWxlY3RvcigpOiA/U2VsZWN0b3JMaXN0CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWxlY3RvcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BlY2lmaWNpdHkoKTogaW50CiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zcGVjaWZpY2l0eSA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+c3BlY2lmaWNpdHkgPSAkdGhpcy0+Y29tcHV0ZVNwZWNpZmljaXR5KCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnNwZWNpZmljaXR5OwogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNDb21wbGljYXRlZFN1cGVyc2VsZWN0b3JTZW1hbnRpY3MoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNFbGVtZW50KCkgfHwgJHRoaXMtPnNlbGVjdG9yICE9PSBudWxsOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY29tcHV0ZVNwZWNpZmljaXR5KCk6IGludAogICAgewogICAgICAgIGlmICgkdGhpcy0+aXNFbGVtZW50KCkpIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICAkc2VsZWN0b3IgPSAkdGhpcy0+c2VsZWN0b3I7CgogICAgICAgIGlmICgkc2VsZWN0b3IgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6Z2V0U3BlY2lmaWNpdHkoKTsKICAgICAgICB9CgogICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMtNC8jc3BlY2lmaWNpdHktcnVsZXMKICAgICAgICBzd2l0Y2ggKCR0aGlzLT5ub3JtYWxpemVkTmFtZSkgewogICAgICAgICAgICBjYXNlICd3aGVyZSc6CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgY2FzZSAnaXMnOgogICAgICAgICAgICBjYXNlICdub3QnOgogICAgICAgICAgICBjYXNlICdoYXMnOgogICAgICAgICAgICBjYXNlICdtYXRjaGVzJzoKICAgICAgICAgICAgICAgICRtYXhTcGVjaWZpY2l0eSA9IDA7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHNlbGVjdG9yLT5nZXRDb21wb25lbnRzKCkgYXMgJGNvbXBsZXgpIHsKICAgICAgICAgICAgICAgICAgICAkbWF4U3BlY2lmaWNpdHkgPSBtYXgoJG1heFNwZWNpZmljaXR5LCAkY29tcGxleC0+Z2V0U3BlY2lmaWNpdHkoKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRtYXhTcGVjaWZpY2l0eTsKICAgICAgICAgICAgY2FzZSAnbnRoLWNoaWxkJzoKICAgICAgICAgICAgY2FzZSAnbnRoLWxhc3QtY2hpbGQnOgogICAgICAgICAgICAgICAgJG1heFNwZWNpZmljaXR5ID0gMDsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3ItPmdldENvbXBvbmVudHMoKSBhcyAkY29tcGxleCkgewogICAgICAgICAgICAgICAgICAgICRtYXhTcGVjaWZpY2l0eSA9IG1heCgkbWF4U3BlY2lmaWNpdHksICRjb21wbGV4LT5nZXRTcGVjaWZpY2l0eSgpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50OjpnZXRTcGVjaWZpY2l0eSgpICsgJG1heFNwZWNpZmljaXR5OwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6Z2V0U3BlY2lmaWNpdHkoKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTZWxlY3RvcihTZWxlY3Rvckxpc3QgJHNlbGVjdG9yKTogUHNldWRvU2VsZWN0b3IKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFBzZXVkb1NlbGVjdG9yKCR0aGlzLT5uYW1lLCAkdGhpcy0+Z2V0U3BhbigpLCAkdGhpcy0+aXNFbGVtZW50KCksICR0aGlzLT5hcmd1bWVudCwgJHNlbGVjdG9yKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3VmZml4KHN0cmluZyAkc3VmZml4KTogU2ltcGxlU2VsZWN0b3IKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmFyZ3VtZW50ICE9PSBudWxsIHx8ICR0aGlzLT5zZWxlY3RvciAhPT0gbnVsbCkgewogICAgICAgICAgICBwYXJlbnQ6OmFkZFN1ZmZpeCgkc3VmZml4KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgUHNldWRvU2VsZWN0b3IoJHRoaXMtPm5hbWUgLiAkc3VmZml4LCAkdGhpcy0+Z2V0U3BhbigpLCAkdGhpcy0+aXNFbGVtZW50KCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmlmeShhcnJheSAkY29tcG91bmQpOiA/YXJyYXkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPm5hbWUgPT09ICdob3N0JyB8fCAkdGhpcy0+bmFtZSA9PT0gJ2hvc3QtY29udGV4dCcpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGNvbXBvdW5kIGFzICRzaW1wbGUpIHsKICAgICAgICAgICAgICAgIGlmICghJHNpbXBsZSBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yIHx8ICghJHNpbXBsZS0+aXNIb3N0KCkgJiYgJHNpbXBsZS0+c2VsZWN0b3IgPT09IG51bGwpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoXGNvdW50KCRjb21wb3VuZCkgPT09IDEpIHsKICAgICAgICAgICAgJG90aGVyID0gJGNvbXBvdW5kWzBdOwoKICAgICAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFVuaXZlcnNhbFNlbGVjdG9yIHx8ICRvdGhlciBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yICYmICgkb3RoZXItPmlzSG9zdCgpIHx8ICRvdGhlci0+aXNIb3N0Q29udGV4dCgpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRvdGhlci0+dW5pZnkoWyR0aGlzXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChFcXVhdGFibGVVdGlsOjppdGVyYWJsZUNvbnRhaW5zKCRjb21wb3VuZCwgJHRoaXMpKSB7CiAgICAgICAgICAgIHJldHVybiAkY29tcG91bmQ7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgJGFkZGVkVGhpcyA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkY29tcG91bmQgYXMgJHNpbXBsZSkgewogICAgICAgICAgICBpZiAoJHNpbXBsZSBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yICYmICRzaW1wbGUtPmlzRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAvLyBBIGdpdmVuIGNvbXBvdW5kIHNlbGVjdG9yIG1heSBvbmx5IGNvbnRhaW4gb25lIHBzZXVkbyBlbGVtZW50LiBJZgogICAgICAgICAgICAgICAgLy8gJGNvbXBvdW5kIGhhcyBhIGRpZmZlcmVudCBvbmUgdGhhbiAkdGhpcywgdW5pZmljYXRpb24gZmFpbHMuCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmlzRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGlzIGEgcHNldWRvIHNlbGVjdG9yIGFuZCBzaG91bGQgY29tZSBiZWZvcmUgcHNldWRvCiAgICAgICAgICAgICAgICAvLyBlbGVtZW50cy4KICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICR0aGlzOwogICAgICAgICAgICAgICAgJGFkZGVkVGhpcyA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXN1bHRbXSA9ICRzaW1wbGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRhZGRlZFRoaXMpIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdXBlcnNlbGVjdG9yKFNpbXBsZVNlbGVjdG9yICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICBpZiAocGFyZW50Ojppc1N1cGVyc2VsZWN0b3IoJG90aGVyKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5zZWxlY3RvcjsKCiAgICAgICAgaWYgKCRzZWxlY3RvciA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMgPT09ICRvdGhlciB8fCAkdGhpcy0+ZXF1YWxzKCRvdGhlcik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IgJiYgJHRoaXMtPmlzRWxlbWVudCgpICYmICRvdGhlci0+aXNFbGVtZW50KCkgJiYgJHRoaXMtPm5vcm1hbGl6ZWROYW1lID09PSAnc2xvdHRlZCcgJiYgJG90aGVyLT5uYW1lID09PSAkdGhpcy0+bmFtZSkgewogICAgICAgICAgICBpZiAoJG90aGVyLT5nZXRTZWxlY3RvcigpICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGVjdG9yLT5pc1N1cGVyc2VsZWN0b3IoJG90aGVyLT5nZXRTZWxlY3RvcigpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSBsb2dpYyBkZWZpbmVkIGluIEV4dGVuZFV0aWwsIHdoaWNoIGtub3dzIGhvdyB0bwogICAgICAgIC8vIGNvbXBhcmUgc2VsZWN0b3IgcHNldWRvY2xhc3NlcyBhZ2FpbnN0IHJhdyBzZWxlY3RvcnMuCiAgICAgICAgcmV0dXJuIChuZXcgQ29tcG91bmRTZWxlY3RvcihbJHRoaXNdLCAkdGhpcy0+Z2V0U3BhbigpKSktPmlzU3VwZXJzZWxlY3RvcihuZXcgQ29tcG91bmRTZWxlY3RvcihbJG90aGVyXSwgJHRoaXMtPmdldFNwYW4oKSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU2VsZWN0b3JWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRQc2V1ZG9TZWxlY3RvcigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBQc2V1ZG9TZWxlY3RvciAmJgogICAgICAgICAgICAkb3RoZXItPm5hbWUgPT09ICR0aGlzLT5uYW1lICYmCiAgICAgICAgICAgICRvdGhlci0+aXNDbGFzcyA9PT0gJHRoaXMtPmlzQ2xhc3MgJiYKICAgICAgICAgICAgJG90aGVyLT5hcmd1bWVudCA9PT0gJHRoaXMtPmFyZ3VtZW50ICYmCiAgICAgICAgICAgICgkdGhpcy0+c2VsZWN0b3IgPT09ICRvdGhlci0+c2VsZWN0b3IgfHwgKCR0aGlzLT5zZWxlY3RvciAhPT0gbnVsbCAmJiAkb3RoZXItPnNlbGVjdG9yICE9PSBudWxsICYmICR0aGlzLT5zZWxlY3Rvci0+ZXF1YWxzKCRvdGhlci0+c2VsZWN0b3IpKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/QualifiedName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGU7CgovKioKICogQSBbcXVhbGlmaWVkIG5hbWVdW10uCiAqCiAqIFtxdWFsaWZpZWQgbmFtZV06IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MzLW5hbWVzcGFjZS8jY3NzLXFuYW1lcwogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFF1YWxpZmllZE5hbWUgaW1wbGVtZW50cyBFcXVhdGFibGUKewogICAgLyoqCiAgICAgKiBUaGUgaWRlbnRpZmllciBuYW1lLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkbmFtZTsKCiAgICAvKioKICAgICAqIFRoZSBuYW1lc3BhY2UgbmFtZS4KICAgICAqCiAgICAgKiBJZiB0aGlzIGlzIGBudWxsYCwge0BzZWUgbmFtZX0gYmVsb25ncyB0byB0aGUgZGVmYXVsdCBuYW1lc3BhY2UuIElmIGl0J3MgdGhlCiAgICAgKiBlbXB0eSBzdHJpbmcsIHtAc2VlIG5hbWV9IGJlbG9uZ3MgdG8gbm8gbmFtZXNwYWNlLiBJZiBpdCdzIGAqYCwge0BzZWUgbmFtZX0gYmVsb25ncwogICAgICogdG8gYW55IG5hbWVzcGFjZS4gT3RoZXJ3aXNlLCB7QHNlZSBuYW1lfSBiZWxvbmdzIHRvIHRoZSBnaXZlbiBuYW1lc3BhY2UuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkbmFtZXNwYWNlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG5hbWUsID9zdHJpbmcgJG5hbWVzcGFjZSA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICAkdGhpcy0+bmFtZXNwYWNlID0gJG5hbWVzcGFjZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVzcGFjZSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lc3BhY2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lc3BhY2UgPT09IG51bGwgPyAkdGhpcy0+bmFtZSA6ICR0aGlzLT5uYW1lc3BhY2UgLiAnfCcgLiAkdGhpcy0+bmFtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIFF1YWxpZmllZE5hbWUgJiYgJG90aGVyLT5uYW1lID09PSAkdGhpcy0+bmFtZSAmJiAkb3RoZXItPm5hbWVzcGFjZSA9PT0gJHRoaXMtPm5hbWVzcGFjZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/Selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XEFzdE5vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRGVwcmVjYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcU2VyaWFsaXplclxTZXJpYWxpemVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcU2VsZWN0b3JWaXNpdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFdhcm47CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgbm9kZSBpbiB0aGUgYWJzdHJhY3Qgc3ludGF4IHRyZWUgZm9yIGEgc2VsZWN0b3IuCiAqCiAqIFRoaXMgc2VsZWN0b3IgdHJlZSBpcyBtb3N0bHkgcGxhaW4gQ1NTLCBidXQgYWxzbyBtYXkgY29udGFpbiBhCiAqIHtAc2VlIFBhcmVudFNlbGVjdG9yfSBvciBhIHtAc2VlIFBsYWNlaG9sZGVyU2VsZWN0b3J9LgogKgogKiBTZWxlY3RvcnMgaGF2ZSBzdHJ1Y3R1cmFsIGVxdWFsaXR5IHNlbWFudGljcy4KICoKICogQGludGVybmFsCiAqLwphYnN0cmFjdCBjbGFzcyBTZWxlY3RvciBpbXBsZW1lbnRzIEFzdE5vZGUsIEVxdWF0YWJsZQp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIHNlbGVjdG9yLCBhbmQgY29tcGxleCBzZWxlY3RvcnMgY29udGFpbmluZyBpdCwgc2hvdWxkIG5vdCBiZQogICAgICogZW1pdHRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzSW52aXNpYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFjY2VwdChuZXcgSXNJbnZpc2libGVWaXNpdG9yKHRydWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBzZWxlY3RvciB3b3VsZCBiZSBpbnZpc2libGUgZXZlbiBpZiBpdCBkaWRuJ3QgaGF2ZSBib2d1cwogICAgICogY29tYmluYXRvcnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0ludmlzaWJsZU90aGVyVGhhbkJvZ3VzQ29tYmluYXRvcnMoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWNjZXB0KG5ldyBJc0ludmlzaWJsZVZpc2l0b3IoZmFsc2UpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBzZWxlY3RvciBpcyBub3QgdmFsaWQgQ1NTLgogICAgICoKICAgICAqIFRoaXMgaW5jbHVkZXMgYm90aCBzZWxlY3RvcnMgdGhhdCBhcmUgdXNlZnVsIGV4Y2x1c2l2ZWx5IGZvciBidWlsZC10aW1lCiAgICAgKiBuZXN0aW5nIChgPiAuZm9vKWAgYW5kIHNlbGVjdG9ycyB3aXRoIGludmFsaWQgY29tYmluYXRvcnMgdGhhdCBhcmUgc3RpbGwKICAgICAqIHN1cHBvcnRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgcmVhc29ucyAoYC5mb28gKyB+IC5iYXJgKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzQm9ndXMoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWNjZXB0KG5ldyBJc0JvZ3VzVmlzaXRvcih0cnVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgc2VsZWN0b3IgaXMgYm9ndXMgb3RoZXIgdGhhbiBoYXZpbmcgYSBsZWFkaW5nIGNvbWJpbmF0b3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0JvZ3VzT3RoZXJUaGFuTGVhZGluZ0NvbWJpbmF0b3IoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWNjZXB0KG5ldyBJc0JvZ3VzVmlzaXRvcihmYWxzZSkpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGlzIGEgdXNlbGVzcyBzZWxlY3RvciAodGhhdCBpcywgaXQncyBib2d1cyBfYW5kXyBpdCBjYW4ndCBiZQogICAgICogdHJhbnNmb3JtZWQgaW50byB2YWxpZCBDU1MgYnkgYEBleHRlbmRgIG9yIG5lc3RpbmcpLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNVc2VsZXNzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFjY2VwdChuZXcgSXNVc2VsZXNzVmlzaXRvcigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFByaW50cyBhIHdhcm5pbmcgaWYgJHRoaXMgaXMgYSBib2d1cyBzZWxlY3Rvci4KICAgICAqCiAgICAgKiBUaGlzIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhIGN1c3RvbSBTYXNzIGZ1bmN0aW9uLiBUaGlzIHdpbGwKICAgICAqIHRocm93IGEge0BzZWUgU2Fzc0V4Y2VwdGlvbn0gaW4gYSBmdXR1cmUgbWFqb3IgdmVyc2lvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE5vdEJvZ3VzKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogdm9pZAogICAgewogICAgICAgIGlmICghJHRoaXMtPmlzQm9ndXMoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBXYXJuOjpmb3JEZXByZWNhdGlvbigoJG5hbWUgPT09IG51bGwgPyAnJyA6ICJcJCRuYW1lOiAiKSAuICIkdGhpcyBpcyBub3QgdmFsaWQgQ1NTLlxuVGhpcyB3aWxsIGJlIGFuIGVycm9yIGluIERhcnQgU2FzcyAyLjAuMC5cblxuTW9yZSBpbmZvOiBodHRwczovL3Nhc3MtbGFuZy5jb20vZC9ib2d1cy1jb21iaW5hdG9ycyIsIERlcHJlY2F0aW9uOjpib2d1c0NvbWJpbmF0b3JzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGxzIHRoZSBhcHByb3ByaWF0ZSB2aXNpdCBtZXRob2Qgb24gJHZpc2l0b3IuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gU2VsZWN0b3JWaXNpdG9yPFQ+ICR2aXNpdG9yCiAgICAgKgogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU2VsZWN0b3JWaXNpdG9yICR2aXNpdG9yKTsKCiAgICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gU2VyaWFsaXplcjo6c2VyaWFsaXplU2VsZWN0b3IoJHRoaXMsIHRydWUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/SelectorList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cTXVsdGlTcGFuU2Fzc0V4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc0Zvcm1hdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2ltcGxlU2Fzc0V4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeHRlbmRcRXh0ZW5kVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlclxJbnRlcnBvbGF0aW9uTWFwOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlclxTZWxlY3RvclBhcnNlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVxdWF0YWJsZVV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxMaXN0VXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFNwYW5VdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXExpc3RTZXBhcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0xpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFNlbGVjdG9yVmlzaXRvcjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBzZWxlY3RvciBsaXN0LgogKgogKiBBIHNlbGVjdG9yIGxpc3QgaXMgY29tcG9zZWQgb2Yge0BzZWUgQ29tcGxleFNlbGVjdG9yfXMuIEl0IG1hdGNoZXMgYW55IGVsZW1lbnQKICogdGhhdCBtYXRjaGVzIGFueSBvZiB0aGUgY29tcG9uZW50IHNlbGVjdG9ycy4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTZWxlY3Rvckxpc3QgZXh0ZW5kcyBTZWxlY3Rvcgp7CiAgICAvKioKICAgICAqIFRoZSBjb21wb25lbnRzIG9mIHRoaXMgc2VsZWN0b3IuCiAgICAgKgogICAgICogVGhpcyBpcyBuZXZlciBlbXB0eS4KICAgICAqCiAgICAgKiBAdmFyIG5vbi1lbXB0eS1saXN0PENvbXBsZXhTZWxlY3Rvcj4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkY29tcG9uZW50czsKCiAgICAvKioKICAgICAqIFBhcnNlcyBhIHNlbGVjdG9yIGxpc3QgZnJvbSAkY29udGVudHMuCiAgICAgKgogICAgICogSWYgcGFzc2VkLCAkdXJsIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggJGNvbnRlbnRzIGNvbWVzLiBJZgogICAgICogJGFsbG93UGFyZW50IGlzIGZhbHNlLCB0aGlzIGRvZXNuJ3QgYWxsb3cge0BzZWUgUGFyZW50U2VsZWN0b3J9cy4gSWYKICAgICAqICRwbGFpbkNzcyBpcyB0cnVlLCB0aGlzIHBhcnNlcyB0aGUgc2VsZWN0b3IgYXMgcGxhaW4gQ1NTIHJhdGhlciB0aGFuCiAgICAgKiB1bnJlc29sdmVkIFNhc3MuCiAgICAgKgogICAgICogSWYgcGFzc2VkLCAkaW50ZXJwb2xhdGlvbk1hcCBtYXBzIHRoZSB0ZXh0IG9mICRjb250ZW50cyBiYWNrIHRvIHRoZQogICAgICogb3JpZ2luYWwgbG9jYXRpb24gb2YgdGhlIHNlbGVjdG9yIGluIHRoZSBzb3VyY2UgZmlsZS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NGb3JtYXRFeGNlcHRpb24gaWYgcGFyc2luZyBmYWlscy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShzdHJpbmcgJGNvbnRlbnRzLCA/TG9nZ2VySW50ZXJmYWNlICRsb2dnZXIgPSBudWxsLCA/SW50ZXJwb2xhdGlvbk1hcCAkaW50ZXJwb2xhdGlvbk1hcCA9IG51bGwsID9VcmlJbnRlcmZhY2UgJHVybCA9IG51bGwsIGJvb2wgJGFsbG93UGFyZW50ID0gdHJ1ZSwgYm9vbCAkcGxhaW5Dc3MgPSBmYWxzZSk6IFNlbGVjdG9yTGlzdAogICAgewogICAgICAgIHJldHVybiAobmV3IFNlbGVjdG9yUGFyc2VyKCRjb250ZW50cywgJGxvZ2dlciwgJHVybCwgJGFsbG93UGFyZW50LCAkaW50ZXJwb2xhdGlvbk1hcCwgJHBsYWluQ3NzKSktPnBhcnNlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxDb21wbGV4U2VsZWN0b3I+ICRjb21wb25lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkY29tcG9uZW50cywgRmlsZVNwYW4gJHNwYW4pCiAgICB7CiAgICAgICAgaWYgKCRjb21wb25lbnRzID09PSBbXSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignY29tcG9uZW50cyBtYXkgbm90IGJlIGVtcHR5LicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvbXBvbmVudHMgPSAkY29tcG9uZW50czsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRzcGFuKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbm9uLWVtcHR5LWxpc3Q8Q29tcGxleFNlbGVjdG9yPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29tcG9uZW50cygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcG9uZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBTYXNzU2NyaXB0IGxpc3QgdGhhdCByZXByZXNlbnRzIHRoaXMgc2VsZWN0b3IuCiAgICAgKgogICAgICogVGhpcyBoYXMgdGhlIHNhbWUgZm9ybWF0IGFzIGEgbGlzdCByZXR1cm5lZCBieSBgc2VsZWN0b3ItcGFyc2UoKWAuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc1Nhc3NMaXN0KCk6IFNhc3NMaXN0CiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTYXNzTGlzdChhcnJheV9tYXAoc3RhdGljIGZ1bmN0aW9uIChDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpIHsKICAgICAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgICAgICBmb3JlYWNoICgkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCkgYXMgJGNvbWJpbmF0b3IpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9IG5ldyBTYXNzU3RyaW5nKCRjb21iaW5hdG9yLCBmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yZWFjaCAoJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKSBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSBuZXcgU2Fzc1N0cmluZygoc3RyaW5nKSAkY29tcG9uZW50LT5nZXRTZWxlY3RvcigpLCBmYWxzZSk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbXBvbmVudC0+Z2V0Q29tYmluYXRvcnMoKSBhcyAkY29tYmluYXRvcikgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9IG5ldyBTYXNzU3RyaW5nKCRjb21iaW5hdG9yLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc0xpc3QoJHJlc3VsdCwgTGlzdFNlcGFyYXRvcjo6U1BBQ0UpOwogICAgICAgIH0sICR0aGlzLT5jb21wb25lbnRzKSwgTGlzdFNlcGFyYXRvcjo6Q09NTUEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU2VsZWN0b3JWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRTZWxlY3Rvckxpc3QoJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHtAc2VlIFNlbGVjdG9yTGlzdH0gdGhhdCBtYXRjaGVzIG9ubHkgZWxlbWVudHMgdGhhdCBhcmUgbWF0Y2hlZCBieQogICAgICogYm90aCB0aGlzIGFuZCAkb3RoZXIuCiAgICAgKgogICAgICogSWYgbm8gc3VjaCBsaXN0IGNhbiBiZSBwcm9kdWNlZCwgcmV0dXJucyBgbnVsbGAuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bmlmeShTZWxlY3Rvckxpc3QgJG90aGVyKTogP1NlbGVjdG9yTGlzdAogICAgewogICAgICAgICRjb250ZW50cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y29tcG9uZW50cyBhcyAkY29tcGxleDEpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJG90aGVyLT5jb21wb25lbnRzIGFzICRjb21wbGV4MikgewogICAgICAgICAgICAgICAgJHVuaWZpZWQgPSBFeHRlbmRVdGlsOjp1bmlmeUNvbXBsZXgoWyRjb21wbGV4MSwgJGNvbXBsZXgyXSwgJGNvbXBsZXgxLT5nZXRTcGFuKCkpOwoKICAgICAgICAgICAgICAgIGlmICgkdW5pZmllZCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR1bmlmaWVkIGFzICRjb21wbGV4KSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRzW10gPSAkY29tcGxleDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxjb3VudCgkY29udGVudHMpID09PSAwID8gbnVsbCA6IG5ldyBTZWxlY3Rvckxpc3QoJGNvbnRlbnRzLCAkdGhpcy0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBuZXcgc2VsZWN0b3IgbGlzdCB0aGF0IHJlcHJlc2VudHMgJHRoaXMgbmVzdGVkIHdpdGhpbiAkcGFyZW50LgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoaXMgcmVwbGFjZXMge0BzZWUgUGFyZW50U2VsZWN0b3J9cyBpbiAkdGhpcyB3aXRoICRwYXJlbnQuIElmCiAgICAgKiAkcHJlc2VydmVQYXJlbnRTZWxlY3RvcnMgaXMgdHJ1ZSwgdGhpcyBpbnN0ZWFkIHByZXNlcnZlcyB0aG9zZSBzZWxlY3RvcnMKICAgICAqIGFzIHBhcmVudCBzZWxlY3RvcnMuCiAgICAgKgogICAgICogSWYgJGltcGxpY2l0UGFyZW50IGlzIHRydWUsIHRoaXMgcHJlcGVuZHMgJHBhcmVudCB0byBhbnkKICAgICAqIHtAc2VlIENvbXBsZXhTZWxlY3Rvcn1zIGluIHRoaXMgdGhhdCBkb24ndCBjb250YWluIGV4cGxpY2l0IHtAc2VlIFBhcmVudFNlbGVjdG9yfXMsCiAgICAgKiBvciB0byBfYWxsXyB7QHNlZSBDb21wbGV4U2VsZWN0b3J9cyBpZiAkcHJlc2VydmVQYXJlbnRTZWxlY3RvcnMgaXMgdHJ1ZS4KICAgICAqCiAgICAgKiBUaGUgZ2l2ZW4gJHBhcmVudCBtYXkgYmUgYG51bGxgLCBpbmRpY2F0aW5nIHRoYXQgdGhpcyBoYXMgbm8gcGFyZW50cy4gSWYKICAgICAqIHNvLCB0aGlzIGxpc3QgaXMgcmV0dXJuZWQgYXMtaXMgaWYgaXQgZG9lc24ndCBjb250YWluIGFueSBleHBsaWNpdAogICAgICoge0BzZWUgUGFyZW50U2VsZWN0b3J9cyBvciBpZiAkcHJlc2VydmVQYXJlbnRTZWxlY3RvcnMgaXMgdHJ1ZS4gT3RoZXJ3aXNlLCB0aGlzCiAgICAgKiB0aHJvd3MgYSB7QHNlZSBTYXNzU2NyaXB0RXhjZXB0aW9ufS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5lc3RXaXRoaW4oP1NlbGVjdG9yTGlzdCAkcGFyZW50LCBib29sICRpbXBsaWNpdFBhcmVudCA9IHRydWUsIGJvb2wgJHByZXNlcnZlUGFyZW50U2VsZWN0b3JzID0gZmFsc2UpOiBTZWxlY3Rvckxpc3QKICAgIHsKICAgICAgICBpZiAoJHBhcmVudCA9PT0gbnVsbCkgewogICAgICAgICAgICBpZiAoJHByZXNlcnZlUGFyZW50U2VsZWN0b3JzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXJlbnRTZWxlY3RvciA9ICR0aGlzLT5hY2NlcHQobmV3IFBhcmVudFNlbGVjdG9yVmlzaXRvcigpKTsKICAgICAgICAgICAgaWYgKCRwYXJlbnRTZWxlY3RvciA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyBuZXcgU2ltcGxlU2Fzc0V4Y2VwdGlvbignVG9wLWxldmVsIHNlbGVjdG9ycyBtYXkgbm90IGNvbnRhaW4gdGhlIHBhcmVudCBzZWxlY3RvciAiJiIuJywgJHBhcmVudFNlbGVjdG9yLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBTZWxlY3Rvckxpc3QoTGlzdFV0aWw6OmZsYXR0ZW5WZXJ0aWNhbGx5KGFycmF5X21hcChmdW5jdGlvbiAoQ29tcGxleFNlbGVjdG9yICRjb21wbGV4KSB1c2UgKCRwYXJlbnQsICRpbXBsaWNpdFBhcmVudCwgJHByZXNlcnZlUGFyZW50U2VsZWN0b3JzKSB7CiAgICAgICAgICAgIGlmICgkcHJlc2VydmVQYXJlbnRTZWxlY3RvcnMgfHwgIXNlbGY6OmNvbnRhaW5zUGFyZW50U2VsZWN0b3IoJGNvbXBsZXgpKSB7CiAgICAgICAgICAgICAgICBpZiAoISRpbXBsaWNpdFBhcmVudCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbJGNvbXBsZXhdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheV9tYXAoZm4oQ29tcGxleFNlbGVjdG9yICRwYXJlbnRDb21wbGV4KSA9PiAkcGFyZW50Q29tcGxleC0+Y29uY2F0ZW5hdGUoJGNvbXBsZXgsICRjb21wbGV4LT5nZXRTcGFuKCkpLCAkcGFyZW50LT5nZXRDb21wb25lbnRzKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiogQHZhciBsaXN0PENvbXBsZXhTZWxlY3Rvcj4gJG5ld0NvbXBsZXhlcyAqLwogICAgICAgICAgICAkbmV3Q29tcGxleGVzID0gW107CgogICAgICAgICAgICBmb3JlYWNoICgkY29tcGxleC0+Z2V0Q29tcG9uZW50cygpIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgICAgICRyZXNvbHZlZCA9IHNlbGY6Om5lc3RXaXRoaW5Db21wb3VuZCgkY29tcG9uZW50LCAkcGFyZW50KTsKICAgICAgICAgICAgICAgIGlmICgkcmVzb2x2ZWQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXGNvdW50KCRuZXdDb21wbGV4ZXMpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdDb21wbGV4ZXNbXSA9IG5ldyBDb21wbGV4U2VsZWN0b3IoJGNvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpLCBbJGNvbXBvbmVudF0sICRjb21wbGV4LT5nZXRTcGFuKCksIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkbmV3Q29tcGxleGVzID0gYXJyYXlfbWFwKGZuICgkbmV3Q29tcGxleCkgPT4gJG5ld0NvbXBsZXgtPndpdGhBZGRpdGlvbmFsQ29tcG9uZW50KCRjb21wb25lbnQsICRjb21wbGV4LT5nZXRTcGFuKCkpLCAkbmV3Q29tcGxleGVzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoXGNvdW50KCRuZXdDb21wbGV4ZXMpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFxjb3VudCgkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCkpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdDb21wbGV4ZXMgPSAkcmVzb2x2ZWQ7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0NvbXBsZXhlcyA9IGFycmF5X21hcChmbiAoQ29tcGxleFNlbGVjdG9yICRyZXNvbHZlZENvbXBsZXgpID0+IG5ldyBDb21wbGV4U2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9tZXJnZSgkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCksICRyZXNvbHZlZENvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNvbHZlZENvbXBsZXgtPmdldENvbXBvbmVudHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21wbGV4LT5nZXRTcGFuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzb2x2ZWRDb21wbGV4LT5nZXRMaW5lQnJlYWsoKQogICAgICAgICAgICAgICAgICAgICAgICApLCAkcmVzb2x2ZWQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHByZXZpb3VzQ29tcGxleGVzID0gJG5ld0NvbXBsZXhlczsKICAgICAgICAgICAgICAgICAgICAkbmV3Q29tcGxleGVzID0gW107CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwcmV2aW91c0NvbXBsZXhlcyBhcyAkbmV3Q29tcGxleCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcmVzb2x2ZWQgYXMgJHJlc29sdmVkQ29tcGxleCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0NvbXBsZXhlc1tdID0gJG5ld0NvbXBsZXgtPmNvbmNhdGVuYXRlKCRyZXNvbHZlZENvbXBsZXgsICRuZXdDb21wbGV4LT5nZXRTcGFuKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJG5ld0NvbXBsZXhlczsKICAgICAgICB9LCAkdGhpcy0+Y29tcG9uZW50cykpLCAkdGhpcy0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBpcyBhIHN1cGVyc2VsZWN0b3Igb2YgJG90aGVyLgogICAgICoKICAgICAqIFRoYXQgaXMsIHdoZXRoZXIgdGhpcyBtYXRjaGVzIGV2ZXJ5IGVsZW1lbnQgdGhhdCAkb3RoZXIgbWF0Y2hlcywgYXMgd2VsbAogICAgICogYXMgcG9zc2libHkgYWRkaXRpb25hbCBlbGVtZW50cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzU3VwZXJzZWxlY3RvcihTZWxlY3Rvckxpc3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBFeHRlbmRVdGlsOjpsaXN0SXNTdXBlcnNlbGVjdG9yKCR0aGlzLT5jb21wb25lbnRzLCAkb3RoZXItPmNvbXBvbmVudHMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgU2VsZWN0b3JMaXN0ICYmIEVxdWF0YWJsZVV0aWw6Omxpc3RFcXVhbHMoJHRoaXMtPmNvbXBvbmVudHMsICRvdGhlci0+Y29tcG9uZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbmV3IHNlbGVjdG9yIGxpc3QgYmFzZWQgb24gJGNvbXBvbmVudCB3aXRoIGFsbAogICAgICoge0BzZWUgUGFyZW50U2VsZWN0b3J9cyByZXBsYWNlZCB3aXRoICRwYXJlbnQuCiAgICAgKgogICAgICogUmV0dXJucyBgbnVsbGAgaWYgJGNvbXBvbmVudCBkb2Vzbid0IGNvbnRhaW4gYW55IHtAc2VlIFBhcmVudFNlbGVjdG9yfXMuCiAgICAgKgogICAgICogQHJldHVybiBsaXN0PENvbXBsZXhTZWxlY3Rvcj58bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBuZXN0V2l0aGluQ29tcG91bmQoQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50ICRjb21wb25lbnQsIFNlbGVjdG9yTGlzdCAkcGFyZW50KTogP2FycmF5CiAgICB7CiAgICAgICAgJHNpbXBsZXMgPSAkY29tcG9uZW50LT5nZXRTZWxlY3RvcigpLT5nZXRDb21wb25lbnRzKCk7CiAgICAgICAgJGNvbnRhaW5zU2VsZWN0b3JQc2V1ZG8gPSBmYWxzZTsKICAgICAgICBmb3JlYWNoICgkc2ltcGxlcyBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgIGlmICghJHNpbXBsZSBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc2VsZWN0b3IgPSAkc2ltcGxlLT5nZXRTZWxlY3RvcigpOwoKICAgICAgICAgICAgaWYgKCRzZWxlY3RvciAhPT0gbnVsbCAmJiBzZWxmOjpjb250YWluc1BhcmVudFNlbGVjdG9yKCRzZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICRjb250YWluc1NlbGVjdG9yUHNldWRvID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoISRjb250YWluc1NlbGVjdG9yUHNldWRvICYmICEkc2ltcGxlc1swXSBpbnN0YW5jZW9mIFBhcmVudFNlbGVjdG9yKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb250YWluc1NlbGVjdG9yUHNldWRvKSB7CiAgICAgICAgICAgICRyZXNvbHZlZFNpbXBsZXMgPSBhcnJheV9tYXAoZnVuY3Rpb24gKFNpbXBsZVNlbGVjdG9yICRzaW1wbGUpIHVzZSAoJHBhcmVudCk6IFNpbXBsZVNlbGVjdG9yIHsKICAgICAgICAgICAgICAgIGlmICghJHNpbXBsZSBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRzaW1wbGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHNlbGVjdG9yID0gJHNpbXBsZS0+Z2V0U2VsZWN0b3IoKTsKICAgICAgICAgICAgICAgIGlmICgkc2VsZWN0b3IgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHNpbXBsZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghc2VsZjo6Y29udGFpbnNQYXJlbnRTZWxlY3Rvcigkc2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRzaW1wbGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRzaW1wbGUtPndpdGhTZWxlY3Rvcigkc2VsZWN0b3ItPm5lc3RXaXRoaW4oJHBhcmVudCwgZmFsc2UpKTsKICAgICAgICAgICAgfSwgJHNpbXBsZXMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyZXNvbHZlZFNpbXBsZXMgPSAkc2ltcGxlczsKICAgICAgICB9CgogICAgICAgICRwYXJlbnRTZWxlY3RvciA9ICRzaW1wbGVzWzBdOwoKICAgICAgICBpZiAoISRwYXJlbnRTZWxlY3RvciBpbnN0YW5jZW9mIFBhcmVudFNlbGVjdG9yKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBuZXcgQ29tcGxleFNlbGVjdG9yKFtdLCBbCiAgICAgICAgICAgICAgICAgICAgbmV3IENvbXBsZXhTZWxlY3RvckNvbXBvbmVudCgKICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENvbXBvdW5kU2VsZWN0b3IoJHJlc29sdmVkU2ltcGxlcywgJGNvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKS0+Z2V0U3BhbigpKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBvbmVudC0+Z2V0Q29tYmluYXRvcnMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBvbmVudC0+Z2V0U3BhbigpCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIF0sICRjb21wb25lbnQtPmdldFNwYW4oKSksCiAgICAgICAgICAgIF07CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCRzaW1wbGVzKSA9PT0gMSAmJiAkcGFyZW50U2VsZWN0b3ItPmdldFN1ZmZpeCgpID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkcGFyZW50LT53aXRoQWRkaXRpb25hbENvbWJpbmF0b3JzKCRjb21wb25lbnQtPmdldENvbWJpbmF0b3JzKCkpLT5nZXRDb21wb25lbnRzKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXlfbWFwKGZ1bmN0aW9uIChDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpIHVzZSAoJHBhcmVudFNlbGVjdG9yLCAkcmVzb2x2ZWRTaW1wbGVzLCAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICRsYXN0Q29tcG9uZW50ID0gJGNvbXBsZXgtPmdldExhc3RDb21wb25lbnQoKTsKCiAgICAgICAgICAgIGlmIChcY291bnQoJGxhc3RDb21wb25lbnQtPmdldENvbWJpbmF0b3JzKCkpICE9PSAwKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTXVsdGlTcGFuU2Fzc0V4Y2VwdGlvbigiU2VsZWN0b3IgXCIkY29tcGxleFwiIGNhbid0IGJlIHVzZWQgYXMgYSBwYXJlbnQgaW4gYSBjb21wb3VuZCBzZWxlY3Rvci4iLCBTcGFuVXRpbDo6dHJpbVJpZ2h0KCRsYXN0Q29tcG9uZW50LT5nZXRTcGFuKCkpLCAnb3V0ZXIgc2VsZWN0b3InLCBbJ3BhcmVudCBzZWxlY3RvcicgPT4gJHBhcmVudFNlbGVjdG9yLT5nZXRTcGFuKCldKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHN1ZmZpeCA9ICRwYXJlbnRTZWxlY3Rvci0+Z2V0U3VmZml4KCk7CiAgICAgICAgICAgICRsYXN0U2ltcGxlcyA9ICRsYXN0Q29tcG9uZW50LT5nZXRTZWxlY3RvcigpLT5nZXRDb21wb25lbnRzKCk7CgogICAgICAgICAgICBpZiAoJHN1ZmZpeCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGxhc3QgPSBuZXcgQ29tcG91bmRTZWxlY3RvcihhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICAgICBMaXN0VXRpbDo6ZXhjZXB0TGFzdCgkbGFzdFNpbXBsZXMpLAogICAgICAgICAgICAgICAgICAgIFtMaXN0VXRpbDo6bGFzdCgkbGFzdFNpbXBsZXMpLT5hZGRTdWZmaXgoJHN1ZmZpeCldLAogICAgICAgICAgICAgICAgICAgIGFycmF5X3NsaWNlKCRyZXNvbHZlZFNpbXBsZXMsIDEpCiAgICAgICAgICAgICAgICApLCAkY29tcG9uZW50LT5nZXRTZWxlY3RvcigpLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGxhc3QgPSBuZXcgQ29tcG91bmRTZWxlY3RvcihhcnJheV9tZXJnZSgkbGFzdFNpbXBsZXMsIGFycmF5X3NsaWNlKCRyZXNvbHZlZFNpbXBsZXMsIDEpKSwgJGNvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKS0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbXBvbmVudHMgPSBMaXN0VXRpbDo6ZXhjZXB0TGFzdCgkY29tcGxleC0+Z2V0Q29tcG9uZW50cygpKTsKICAgICAgICAgICAgJGNvbXBvbmVudHNbXSA9IG5ldyBDb21wbGV4U2VsZWN0b3JDb21wb25lbnQoJGxhc3QsICRjb21wb25lbnQtPmdldENvbWJpbmF0b3JzKCksICRjb21wb25lbnQtPmdldFNwYW4oKSk7CgogICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXhTZWxlY3RvcigkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCksICRjb21wb25lbnRzLCAkY29tcG9uZW50LT5nZXRTcGFuKCksICRjb21wbGV4LT5nZXRMaW5lQnJlYWsoKSk7CiAgICAgICAgfSwgJHBhcmVudC0+Z2V0Q29tcG9uZW50cygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIGB0aGlzYCB3aXRoICRjb21iaW5hdG9ycyBhZGRlZCB0byB0aGUgZW5kIG9mIGVhY2gKICAgICAqIGNvbXBsZXggc2VsZWN0b3IgaW4ge0BzZWUgY29tcG9uZW50c31dLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PENzc1ZhbHVlPENvbWJpbmF0b3I+PiAkY29tYmluYXRvcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhBZGRpdGlvbmFsQ29tYmluYXRvcnMoYXJyYXkgJGNvbWJpbmF0b3JzKTogU2VsZWN0b3JMaXN0CiAgICB7CiAgICAgICAgaWYgKCRjb21iaW5hdG9ycyA9PT0gW10pIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBTZWxlY3Rvckxpc3QoYXJyYXlfbWFwKGZuKENvbXBsZXhTZWxlY3RvciAkY29tcGxleCkgPT4gJGNvbXBsZXgtPndpdGhBZGRpdGlvbmFsQ29tYmluYXRvcnMoJGNvbWJpbmF0b3JzKSwgJHRoaXMtPmNvbXBvbmVudHMpLCAkdGhpcy0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkc2VsZWN0b3IgcmVjdXJzaXZlbHkgY29udGFpbnMgYSBwYXJlbnQgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnRhaW5zUGFyZW50U2VsZWN0b3IoU2VsZWN0b3IgJHNlbGVjdG9yKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkc2VsZWN0b3ItPmFjY2VwdChuZXcgUGFyZW50U2VsZWN0b3JWaXNpdG9yKCkpICE9PSBudWxsOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/SimpleSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXE11bHRpU3BhblNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NGb3JtYXRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcTG9nZ2VyXExvZ2dlckludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcU2VsZWN0b3JQYXJzZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGVVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcTGlzdFV0aWw7CgovKioKICogQW4gYWJzdHJhY3Qgc3VwZXJjbGFzcyBmb3Igc2ltcGxlIHNlbGVjdG9ycy4KICoKICogQGludGVybmFsCiAqLwphYnN0cmFjdCBjbGFzcyBTaW1wbGVTZWxlY3RvciBleHRlbmRzIFNlbGVjdG9yCnsKICAgIC8qKgogICAgICogTmFtZXMgb2YgcHNldWRvLWNsYXNzZXMgdGhhdCB0YWtlIHNlbGVjdG9ycyBhcyBhcmd1bWVudHMsIGFuZCB0aGF0IGFyZQogICAgICogc3Vic2VsZWN0b3JzIG9mIHRoZWlyIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBGb3IgZXhhbXBsZSwgYC5mb29gIGlzIGEgc3VwZXJzZWxlY3RvciBvZiBgOm1hdGNoZXMoLmZvbylgLgogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFNVQlNFTEVDVE9SX1BTRVVET1MgPSBbCiAgICAgICAgJ2lzJywKICAgICAgICAnbWF0Y2hlcycsCiAgICAgICAgJ3doZXJlJywKICAgICAgICAnYW55JywKICAgICAgICAnbnRoLWNoaWxkJywKICAgICAgICAnbnRoLWxhc3QtY2hpbGQnLAogICAgXTsKCiAgICAvKioKICAgICAqIFBhcnNlcyBhIHNpbXBsZSBzZWxlY3RvciBmcm9tICRjb250ZW50cy4KICAgICAqCiAgICAgKiBJZiBwYXNzZWQsICR1cmwgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAkY29udGVudHMgY29tZXMuCiAgICAgKiAkYWxsb3dQYXJlbnQgY29udHJvbHMgd2hldGhlciBhIHtAc2VlIFBhcmVudFNlbGVjdG9yfSBpcyBhbGxvd2VkIGluIHRoaXMKICAgICAqIHNlbGVjdG9yLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbiBpZiBwYXJzaW5nIGZhaWxzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKHN0cmluZyAkY29udGVudHMsID9Mb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciA9IG51bGwsID9VcmlJbnRlcmZhY2UgJHVybCA9IG51bGwsIGJvb2wgJGFsbG93UGFyZW50ID0gdHJ1ZSk6IFNpbXBsZVNlbGVjdG9yCiAgICB7CiAgICAgICAgcmV0dXJuIChuZXcgU2VsZWN0b3JQYXJzZXIoJGNvbnRlbnRzLCAkbG9nZ2VyLCAkdXJsLCAkYWxsb3dQYXJlbnQpKS0+cGFyc2VTaW1wbGVTZWxlY3RvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBzZWxlY3RvcidzIHNwZWNpZmljaXR5LgogICAgICoKICAgICAqIFNwZWNpZmljaXR5IGlzIHJlcHJlc2VudGVkIGluIGJhc2UgMTAwMC4gVGhlIHNwZWMgc2F5cyB0aGlzIHNob3VsZCBiZQogICAgICogInN1ZmZpY2llbnRseSBoaWdoIjsgaXQncyBleHRyZW1lbHkgdW5saWtlbHkgdGhhdCBhbnkgc2luZ2xlIHNlbGVjdG9yCiAgICAgKiBzZXF1ZW5jZSB3aWxsIGNvbnRhaW4gMTAwMCBzaW1wbGUgc2VsZWN0b3JzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BlY2lmaWNpdHkoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIDEwMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgcmVxdWlyZXMgY29tcGxleCBub24tbG9jYWwgcmVhc29uaW5nIHRvIGRldGVybWluZSB3aGV0aGVyCiAgICAgKiBpdCdzIGEgc3VwZXItIG9yIHN1Yi1zZWxlY3Rvci4KICAgICAqCiAgICAgKiBUaGlzIGluY2x1ZGVzIGJvdGggcHNldWRvLWVsZW1lbnRzIGFuZCBwc2V1ZG8tc2VsZWN0b3JzIHRoYXQgdGFrZQogICAgICogc2VsZWN0b3JzIGFzIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NvbXBsaWNhdGVkU3VwZXJzZWxlY3RvclNlbWFudGljcygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIG5ldyB7QHNlZSBTaW1wbGVTZWxlY3Rvcn0gYmFzZWQgb24gJHRoaXMsIGFzIHRob3VnaCBpdCBoYWQgYmVlbgogICAgICogd3JpdHRlbiB3aXRoICRzdWZmaXggYXQgdGhlIGVuZC4KICAgICAqCiAgICAgKiBBc3N1bWVzICRzdWZmaXggaXMgYSB2YWxpZCBpZGVudGlmaWVyIHN1ZmZpeC4gSWYgdGhpcyB3b3VsZG4ndCBwcm9kdWNlIGEKICAgICAqIHZhbGlkIFNpbXBsZVNlbGVjdG9yLCB0aHJvd3MgYW4gZXhjZXB0aW9uLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0V4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3VmZml4KHN0cmluZyAkc3VmZml4KTogU2ltcGxlU2VsZWN0b3IKICAgIHsKICAgICAgICB0aHJvdyBuZXcgTXVsdGlTcGFuU2Fzc0V4Y2VwdGlvbigiSW52YWxpZCBwYXJlbnQgc2VsZWN0b3IgXCIkdGhpc1wiIiwgJHRoaXMtPmdldFNwYW4oKSwgJ291dGVyIHNlbGVjdG9yJywgW10pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY29tcG9uZW50cyBvZiBhIHtAc2VlIENvbXBvdW5kU2VsZWN0b3J9IHRoYXQgbWF0Y2hlcyBvbmx5IGVsZW1lbnRzCiAgICAgKiBtYXRjaGVkIGJ5IGJvdGggdGhpcyBhbmQgJGNvbXBvdW5kLgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoaXMganVzdCByZXR1cm5zIGEgY29weSBvZiAkY29tcG91bmQgd2l0aCB0aGlzIHNlbGVjdG9yCiAgICAgKiBhZGRlZCB0byB0aGUgZW5kLCBvciByZXR1cm5zIHRoZSBvcmlnaW5hbCBhcnJheSBpZiB0aGlzIHNlbGVjdG9yIGFscmVhZHkKICAgICAqIGV4aXN0cyBpbiBpdC4KICAgICAqCiAgICAgKiBSZXR1cm5zIGBudWxsYCBpZiB1bmlmaWNhdGlvbiBpcyBpbXBvc3NpYmxl4oCUZm9yIGV4YW1wbGUsIGlmIHRoZXJlIGFyZQogICAgICogbXVsdGlwbGUgSUQgc2VsZWN0b3JzLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PFNpbXBsZVNlbGVjdG9yPiAkY29tcG91bmQKICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8U2ltcGxlU2VsZWN0b3I+fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuaWZ5KGFycmF5ICRjb21wb3VuZCk6ID9hcnJheQogICAgewogICAgICAgIGlmIChcY291bnQoJGNvbXBvdW5kKSA9PT0gMSkgewogICAgICAgICAgICAkb3RoZXIgPSAkY29tcG91bmRbMF07CgogICAgICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgVW5pdmVyc2FsU2VsZWN0b3IgfHwgJG90aGVyIGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IgJiYgKCRvdGhlci0+aXNIb3N0KCkgfHwgJG90aGVyLT5pc0hvc3RDb250ZXh0KCkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG90aGVyLT51bmlmeShbJHRoaXNdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKEVxdWF0YWJsZVV0aWw6Oml0ZXJhYmxlQ29udGFpbnMoJGNvbXBvdW5kLCAkdGhpcykpIHsKICAgICAgICAgICAgcmV0dXJuICRjb21wb3VuZDsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSBbXTsKICAgICAgICAkYWRkZWRUaGlzID0gZmFsc2U7CgogICAgICAgIGZvcmVhY2ggKCRjb21wb3VuZCBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBwc2V1ZG8gc2VsZWN0b3JzIGFsd2F5cyBjb21lIGxhc3QuCiAgICAgICAgICAgIGlmICghJGFkZGVkVGhpcyAmJiAkc2ltcGxlIGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICR0aGlzOwogICAgICAgICAgICAgICAgJGFkZGVkVGhpcyA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXN1bHRbXSA9ICRzaW1wbGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRhZGRlZFRoaXMpIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdXBlcnNlbGVjdG9yKFNpbXBsZVNlbGVjdG9yICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJHRoaXMgPT09ICRvdGhlciB8fCAkdGhpcy0+ZXF1YWxzKCRvdGhlcikpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IgJiYgJG90aGVyLT5pc0NsYXNzKCkpIHsKICAgICAgICAgICAgJGxpc3QgPSAkb3RoZXItPmdldFNlbGVjdG9yKCk7CgogICAgICAgICAgICBpZiAoJGxpc3QgIT09IG51bGwgJiYgXGluX2FycmF5KCRvdGhlci0+Z2V0Tm9ybWFsaXplZE5hbWUoKSwgc2VsZjo6U1VCU0VMRUNUT1JfUFNFVURPUywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0LT5nZXRDb21wb25lbnRzKCkgYXMgJGNvbXBsZXgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXGNvdW50KCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKExpc3RVdGlsOjpsYXN0KCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkpLT5nZXRTZWxlY3RvcigpLT5nZXRDb21wb25lbnRzKCkgYXMgJHNpbXBsZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmlzU3VwZXJzZWxlY3Rvcigkc2ltcGxlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/TypeSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRXh0ZW5kXEV4dGVuZFV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEEgdHlwZSBzZWxlY3Rvci4KICoKICogVGhpcyBzZWxlY3RzIGVsZW1lbnRzIHdob3NlIG5hbWUgZXF1YWxzIHRoZSBnaXZlbiBuYW1lLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFR5cGVTZWxlY3RvciBleHRlbmRzIFNpbXBsZVNlbGVjdG9yCnsKICAgIC8qKgogICAgICogVGhlIGVsZW1lbnQgbmFtZSBiZWluZyBzZWxlY3RlZC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBRdWFsaWZpZWROYW1lICRuYW1lOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChRdWFsaWZpZWROYW1lICRuYW1lLCBGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHNwYW4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IFF1YWxpZmllZE5hbWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwZWNpZmljaXR5KCk6IGludAogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoU2VsZWN0b3JWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRUeXBlU2VsZWN0b3IoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRTdWZmaXgoc3RyaW5nICRzdWZmaXgpOiBTaW1wbGVTZWxlY3RvcgogICAgewogICAgICAgIHJldHVybiBuZXcgVHlwZVNlbGVjdG9yKG5ldyBRdWFsaWZpZWROYW1lKCR0aGlzLT5uYW1lLT5nZXROYW1lKCkgLiAkc3VmZml4LCAkdGhpcy0+bmFtZS0+Z2V0TmFtZXNwYWNlKCkpLCAkdGhpcy0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5pZnkoYXJyYXkgJGNvbXBvdW5kKTogP2FycmF5CiAgICB7CiAgICAgICAgJGZpcnN0ID0gJGNvbXBvdW5kWzBdID8/IG51bGw7CgogICAgICAgIGlmICgkZmlyc3QgaW5zdGFuY2VvZiBVbml2ZXJzYWxTZWxlY3RvciB8fCAkZmlyc3QgaW5zdGFuY2VvZiBUeXBlU2VsZWN0b3IpIHsKICAgICAgICAgICAgJHVuaWZpZWQgPSBFeHRlbmRVdGlsOjp1bmlmeVVuaXZlcnNhbEFuZEVsZW1lbnQoJHRoaXMsICRmaXJzdCk7CgogICAgICAgICAgICBpZiAoJHVuaWZpZWQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29tcG91bmRbMF0gPSAkdW5pZmllZDsKCiAgICAgICAgICAgIHJldHVybiAkY29tcG91bmQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXlfbWVyZ2UoWyR0aGlzXSwgJGNvbXBvdW5kKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdXBlcnNlbGVjdG9yKFNpbXBsZVNlbGVjdG9yICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gcGFyZW50Ojppc1N1cGVyc2VsZWN0b3IoJG90aGVyKSB8fCAoJG90aGVyIGluc3RhbmNlb2YgVHlwZVNlbGVjdG9yICYmICR0aGlzLT5uYW1lLT5nZXROYW1lKCkgPT09ICRvdGhlci0+Z2V0TmFtZSgpLT5nZXROYW1lKCkgJiYgKCR0aGlzLT5uYW1lLT5nZXROYW1lc3BhY2UoKSA9PT0gJyonIHx8ICR0aGlzLT5uYW1lLT5nZXROYW1lc3BhY2UoKSA9PT0gJG90aGVyLT5nZXROYW1lKCktPmdldE5hbWVzcGFjZSgpKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBUeXBlU2VsZWN0b3IgJiYgJG90aGVyLT5uYW1lLT5lcXVhbHMoJHRoaXMtPm5hbWUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Ast/Selector/UniversalSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRXh0ZW5kXEV4dGVuZFV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIE1hdGNoZXMgYW55IGVsZW1lbnQgaW4gdGhlIGdpdmVuIG5hbWVzcGFjZS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBVbml2ZXJzYWxTZWxlY3RvciBleHRlbmRzIFNpbXBsZVNlbGVjdG9yCnsKICAgIC8qKgogICAgICogVGhlIHNlbGVjdG9yIG5hbWVzcGFjZS4KICAgICAqCiAgICAgKiBJZiB0aGlzIGlzIGBudWxsYCwgdGhpcyBtYXRjaGVzIGFsbCBlbGVtZW50cyBpbiB0aGUgZGVmYXVsdCBuYW1lc3BhY2UuIElmCiAgICAgKiBpdCdzIHRoZSBlbXB0eSBzdHJpbmcsIHRoaXMgbWF0Y2hlcyBhbGwgZWxlbWVudHMgdGhhdCBhcmVuJ3QgaW4gYW55CiAgICAgKiBuYW1lc3BhY2UuIElmIGl0J3MgYCpgLCB0aGlzIG1hdGNoZXMgYWxsIGVsZW1lbnRzIGluIGFueSBuYW1lc3BhY2UuCiAgICAgKiBPdGhlcndpc2UsIGl0IG1hdGNoZXMgYWxsIGVsZW1lbnRzIGluIHRoZSBnaXZlbiBuYW1lc3BhY2UuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkbmFtZXNwYWNlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChGaWxlU3BhbiAkc3BhbiwgP3N0cmluZyAkbmFtZXNwYWNlID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZXNwYWNlID0gJG5hbWVzcGFjZTsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRzcGFuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZXNwYWNlKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWVzcGFjZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BlY2lmaWNpdHkoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChTZWxlY3RvclZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdFVuaXZlcnNhbFNlbGVjdG9yKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5pZnkoYXJyYXkgJGNvbXBvdW5kKTogP2FycmF5CiAgICB7CiAgICAgICAgJGZpcnN0ID0gJGNvbXBvdW5kWzBdID8/IG51bGw7CgogICAgICAgIGlmICgkZmlyc3QgaW5zdGFuY2VvZiBVbml2ZXJzYWxTZWxlY3RvciB8fCAkZmlyc3QgaW5zdGFuY2VvZiBUeXBlU2VsZWN0b3IpIHsKICAgICAgICAgICAgJHVuaWZpZWQgPSBFeHRlbmRVdGlsOjp1bmlmeVVuaXZlcnNhbEFuZEVsZW1lbnQoJHRoaXMsICRmaXJzdCk7CgogICAgICAgICAgICBpZiAoJHVuaWZpZWQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29tcG91bmRbMF0gPSAkdW5pZmllZDsKCiAgICAgICAgICAgIHJldHVybiAkY29tcG91bmQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCRjb21wb3VuZCkgPT09IDEgJiYgJGZpcnN0IGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IgJiYgKCRmaXJzdC0+aXNIb3N0KCkgfHwgJGZpcnN0LT5pc0hvc3RDb250ZXh0KCkpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5uYW1lc3BhY2UgIT09IG51bGwgJiYgJHRoaXMtPm5hbWVzcGFjZSAhPT0gJyonKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheV9tZXJnZShbJHRoaXNdLCAkY29tcG91bmQpOwogICAgICAgIH0KCiAgICAgICAgLy8gTm90LWVtcHR5IGNvbXBvdW5kIGxpc3QKICAgICAgICBpZiAoJGZpcnN0ICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkY29tcG91bmQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyR0aGlzXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdXBlcnNlbGVjdG9yKFNpbXBsZVNlbGVjdG9yICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPm5hbWVzcGFjZSA9PT0gJyonKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFR5cGVTZWxlY3RvcikgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWVzcGFjZSA9PT0gJG90aGVyLT5nZXROYW1lKCktPmdldE5hbWVzcGFjZSgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFVuaXZlcnNhbFNlbGVjdG9yKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bmFtZXNwYWNlID09PSAkb3RoZXItPm5hbWVzcGFjZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZXNwYWNlID09PSBudWxsIHx8IHBhcmVudDo6aXNTdXBlcnNlbGVjdG9yKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBVbml2ZXJzYWxTZWxlY3RvciAmJiAkb3RoZXItPm5hbWVzcGFjZSA9PT0gJHRoaXMtPm5hbWVzcGFjZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Collection/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Collection/Map.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXENvbGxlY3Rpb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFZhbHVlOwoKLyoqCiAqIEEgbWFwIHVzaW5nIFNhc3MgdmFsdWVzIGFzIGtleXMgYmFzZWQgb24gVmFsdWU6OmVxdWFscy4KICoKICogVGhlIG1hcCBjYW4gYmUgZWl0aGVyIG1vZGlmaWFibGUgb3IgdW5tb2RpZmlhYmxlLiBGb3IgdW5tb2RpZmlhYmxlCiAqIG1hcHMsIGFsbCBtdXRhdG9ycyB3aWxsIHRocm93IGEgTG9naWNFeGNlcHRpb24uCiAqCiAqIEl0ZXJhdGlvbiBwcmVzZXJ2ZXMgdGhlIG9yZGVyIGluIHdoaWNoIGtleXMgaGF2ZSBiZWVuIGluc2VydGVkLgogKgogKiBAdGVtcGxhdGUgVAogKiBAdGVtcGxhdGUtaW1wbGVtZW50cyBcSXRlcmF0b3JBZ2dyZWdhdGU8VmFsdWUsIFQ+CiAqLwpmaW5hbCBjbGFzcyBNYXAgaW1wbGVtZW50cyBcQ291bnRhYmxlLCBcSXRlcmF0b3JBZ2dyZWdhdGUKewogICAgcHJpdmF0ZSBib29sICRtb2RpZmlhYmxlID0gdHJ1ZTsKCiAgICAvLyBUT0RPIGltcGxlbWVudCBhIGJldHRlciBpbnRlcm5hbCBzdG9yYWdlIHRvIGFsbG93IHJlYWRpbmcga2V5cyBpbiBPKDEpLgoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxpbnQsIGFycmF5e1ZhbHVlLCBUfT4KICAgICAqLwogICAgcHJpdmF0ZSBhcnJheSAkcGFpcnMgPSBbXTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYSBtb2RpZmlhYmxlIHZlcnNpb24gb2YgdGhlIE1hcC4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVgogICAgICogQHBhcmFtIE1hcDxWPiAkbWFwCiAgICAgKgogICAgICogQHJldHVybiBNYXA8Vj4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZihNYXAgJG1hcCk6IE1hcAogICAgewogICAgICAgICRtb2RpZmlhYmxlTWFwID0gY2xvbmUgJG1hcDsKICAgICAgICAkbW9kaWZpYWJsZU1hcC0+bW9kaWZpYWJsZSA9IHRydWU7CgogICAgICAgIHJldHVybiAkbW9kaWZpYWJsZU1hcDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gdW5tb2RpZmlhYmxlIHZlcnNpb24gb2YgdGhlIE1hcC4KICAgICAqCiAgICAgKiBBbGwgbXV0YXRvcnMgd2lsbCB0aHJvdyBhIExvZ2ljRXhjZXB0aW9uIHdoZW4gdHJ5aW5nIHRvIHVzZSB0aGVtLgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBWCiAgICAgKiBAcGFyYW0gTWFwPFY+ICRtYXAKICAgICAqCiAgICAgKiBAcmV0dXJuIE1hcDxWPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVubW9kaWZpYWJsZShNYXAgJG1hcCk6IE1hcAogICAgewogICAgICAgIGlmICghJG1hcC0+bW9kaWZpYWJsZSkgewogICAgICAgICAgICByZXR1cm4gJG1hcDsKICAgICAgICB9CgogICAgICAgICR1bm1vZGlmaWFibGVNYXAgPSBjbG9uZSAkbWFwOwogICAgICAgICR1bm1vZGlmaWFibGVNYXAtPm1vZGlmaWFibGUgPSBmYWxzZTsKCiAgICAgICAgcmV0dXJuICR1bm1vZGlmaWFibGVNYXA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEl0ZXJhdG9yKCk6IFxUcmF2ZXJzYWJsZQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYWlycyBhcyAkcGFpcikgewogICAgICAgICAgICB5aWVsZCAkcGFpclswXSA9PiAkcGFpclsxXTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCk6IGludAogICAgewogICAgICAgIHJldHVybiBcY291bnQoJHRoaXMtPnBhaXJzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIGtleSwgb3IgYG51bGxgIGlmICRrZXkgaXMgbm90IGluIHRoZSBtYXAuCiAgICAgKgogICAgICogQHJldHVybiBUfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldChWYWx1ZSAka2V5KQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYWlycyBhcyAkcGFpcikgewogICAgICAgICAgICBpZiAoJGtleS0+ZXF1YWxzKCRwYWlyWzBdKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRwYWlyWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29udGFpbnNLZXkoVmFsdWUgJGtleSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldCgka2V5KSAhPT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc29jaWF0ZXMgdGhlIGtleSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqCiAgICAgKiBJZiB0aGUga2V5IHdhcyBhbHJlYWR5IGluIHRoZSBtYXAsIGl0cyBhc3NvY2lhdGVkIHZhbHVlIGlzIGNoYW5nZWQuCiAgICAgKiBPdGhlcndpc2UgdGhlIGtleS92YWx1ZSBwYWlyIGlzIGFkZGVkIHRvIHRoZSBtYXAuCiAgICAgKgogICAgICogQHBhcmFtIFQgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwdXQoVmFsdWUgJGtleSwgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5hc3NlcnRNb2RpZmlhYmxlKCk7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYWlycyBhcyAkaSA9PiAkcGFpcikgewogICAgICAgICAgICBpZiAoJGtleS0+ZXF1YWxzKCRwYWlyWzBdKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnBhaXJzWyRpXVsxXSA9ICR2YWx1ZTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5wYWlyc1tdID0gWyRrZXksICR2YWx1ZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmVzICRrZXkgYW5kIGl0cyBhc3NvY2lhdGVkIHZhbHVlLCBpZiBwcmVzZW50LCBmcm9tIHRoZSBtYXAuCiAgICAgKgogICAgICogUmV0dXJucyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGBrZXlgIGJlZm9yZSBpdCB3YXMgcmVtb3ZlZC4KICAgICAqIFJldHVybnMgYG51bGxgIGlmIGBrZXlgIHdhcyBub3QgaW4gdGhlIG1hcC4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgc29tZSBtYXBzIGFsbG93IGBudWxsYCBhcyBhIHZhbHVlLAogICAgICogc28gYSByZXR1cm5lZCBgbnVsbGAgdmFsdWUgZG9lc24ndCBhbHdheXMgbWVhbiB0aGF0IHRoZSBrZXkgd2FzIGFic2VudC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFR8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlKFZhbHVlICRrZXkpCiAgICB7CiAgICAgICAgJHRoaXMtPmFzc2VydE1vZGlmaWFibGUoKTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhaXJzIGFzICRpID0+ICRwYWlyKSB7CiAgICAgICAgICAgIGlmICgka2V5LT5lcXVhbHMoJHBhaXJbMF0pKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+cGFpcnNbJGldKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJHBhaXJbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PFZhbHVlPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ga2V5cygpOiBhcnJheQogICAgewogICAgICAgICRrZXlzID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wYWlycyBhcyAkcGFpcikgewogICAgICAgICAgICAka2V5c1tdID0gJHBhaXJbMF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGtleXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8VD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbHVlcygpOiBhcnJheQogICAgewogICAgICAgICR2YWx1ZXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnBhaXJzIGFzICRwYWlyKSB7CiAgICAgICAgICAgICR2YWx1ZXNbXSA9ICRwYWlyWzFdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZXM7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhc3NlcnRNb2RpZmlhYmxlKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5tb2RpZmlhYmxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ011dGF0aW5nIGFuIHVubW9kaWZpYWJsZSBNYXAgaXMgbm90IHN1cHBvcnRlZC4gVXNlIE1hcDo6b2YgdG8gY3JlYXRlIGEgbW9kaWZpYWJsZSBjb3B5LicpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Colors.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQ29sb3I7CgovKioKICogQ1NTIENvbG9ycwogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ29sb3JzCnsKICAgIC8qKgogICAgICogQ1NTIENvbG9ycwogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1jb2xvcgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgQ1NTX0NPTE9SUyA9IFsKICAgICAgICAnYWxpY2VibHVlJyA9PiAnMjQwLDI0OCwyNTUnLAogICAgICAgICdhbnRpcXVld2hpdGUnID0+ICcyNTAsMjM1LDIxNScsCiAgICAgICAgJ2FxdWEnID0+ICcwLDI1NSwyNTUnLAogICAgICAgICdjeWFuJyA9PiAnMCwyNTUsMjU1JywKICAgICAgICAnYXF1YW1hcmluZScgPT4gJzEyNywyNTUsMjEyJywKICAgICAgICAnYXp1cmUnID0+ICcyNDAsMjU1LDI1NScsCiAgICAgICAgJ2JlaWdlJyA9PiAnMjQ1LDI0NSwyMjAnLAogICAgICAgICdiaXNxdWUnID0+ICcyNTUsMjI4LDE5NicsCiAgICAgICAgJ2JsYWNrJyA9PiAnMCwwLDAnLAogICAgICAgICdibGFuY2hlZGFsbW9uZCcgPT4gJzI1NSwyMzUsMjA1JywKICAgICAgICAnYmx1ZScgPT4gJzAsMCwyNTUnLAogICAgICAgICdibHVldmlvbGV0JyA9PiAnMTM4LDQzLDIyNicsCiAgICAgICAgJ2Jyb3duJyA9PiAnMTY1LDQyLDQyJywKICAgICAgICAnYnVybHl3b29kJyA9PiAnMjIyLDE4NCwxMzUnLAogICAgICAgICdjYWRldGJsdWUnID0+ICc5NSwxNTgsMTYwJywKICAgICAgICAnY2hhcnRyZXVzZScgPT4gJzEyNywyNTUsMCcsCiAgICAgICAgJ2Nob2NvbGF0ZScgPT4gJzIxMCwxMDUsMzAnLAogICAgICAgICdjb3JhbCcgPT4gJzI1NSwxMjcsODAnLAogICAgICAgICdjb3JuZmxvd2VyYmx1ZScgPT4gJzEwMCwxNDksMjM3JywKICAgICAgICAnY29ybnNpbGsnID0+ICcyNTUsMjQ4LDIyMCcsCiAgICAgICAgJ2NyaW1zb24nID0+ICcyMjAsMjAsNjAnLAogICAgICAgICdkYXJrYmx1ZScgPT4gJzAsMCwxMzknLAogICAgICAgICdkYXJrY3lhbicgPT4gJzAsMTM5LDEzOScsCiAgICAgICAgJ2Rhcmtnb2xkZW5yb2QnID0+ICcxODQsMTM0LDExJywKICAgICAgICAnZGFya2dyYXknID0+ICcxNjksMTY5LDE2OScsCiAgICAgICAgJ2RhcmtncmV5JyA9PiAnMTY5LDE2OSwxNjknLAogICAgICAgICdkYXJrZ3JlZW4nID0+ICcwLDEwMCwwJywKICAgICAgICAnZGFya2toYWtpJyA9PiAnMTg5LDE4MywxMDcnLAogICAgICAgICdkYXJrbWFnZW50YScgPT4gJzEzOSwwLDEzOScsCiAgICAgICAgJ2RhcmtvbGl2ZWdyZWVuJyA9PiAnODUsMTA3LDQ3JywKICAgICAgICAnZGFya29yYW5nZScgPT4gJzI1NSwxNDAsMCcsCiAgICAgICAgJ2RhcmtvcmNoaWQnID0+ICcxNTMsNTAsMjA0JywKICAgICAgICAnZGFya3JlZCcgPT4gJzEzOSwwLDAnLAogICAgICAgICdkYXJrc2FsbW9uJyA9PiAnMjMzLDE1MCwxMjInLAogICAgICAgICdkYXJrc2VhZ3JlZW4nID0+ICcxNDMsMTg4LDE0MycsCiAgICAgICAgJ2RhcmtzbGF0ZWJsdWUnID0+ICc3Miw2MSwxMzknLAogICAgICAgICdkYXJrc2xhdGVncmF5JyA9PiAnNDcsNzksNzknLAogICAgICAgICdkYXJrc2xhdGVncmV5JyA9PiAnNDcsNzksNzknLAogICAgICAgICdkYXJrdHVycXVvaXNlJyA9PiAnMCwyMDYsMjA5JywKICAgICAgICAnZGFya3Zpb2xldCcgPT4gJzE0OCwwLDIxMScsCiAgICAgICAgJ2RlZXBwaW5rJyA9PiAnMjU1LDIwLDE0NycsCiAgICAgICAgJ2RlZXBza3libHVlJyA9PiAnMCwxOTEsMjU1JywKICAgICAgICAnZGltZ3JheScgPT4gJzEwNSwxMDUsMTA1JywKICAgICAgICAnZGltZ3JleScgPT4gJzEwNSwxMDUsMTA1JywKICAgICAgICAnZG9kZ2VyYmx1ZScgPT4gJzMwLDE0NCwyNTUnLAogICAgICAgICdmaXJlYnJpY2snID0+ICcxNzgsMzQsMzQnLAogICAgICAgICdmbG9yYWx3aGl0ZScgPT4gJzI1NSwyNTAsMjQwJywKICAgICAgICAnZm9yZXN0Z3JlZW4nID0+ICczNCwxMzksMzQnLAogICAgICAgICdmdWNoc2lhJyA9PiAnMjU1LDAsMjU1JywKICAgICAgICAnbWFnZW50YScgPT4gJzI1NSwwLDI1NScsCiAgICAgICAgJ2dhaW5zYm9ybycgPT4gJzIyMCwyMjAsMjIwJywKICAgICAgICAnZ2hvc3R3aGl0ZScgPT4gJzI0OCwyNDgsMjU1JywKICAgICAgICAnZ29sZCcgPT4gJzI1NSwyMTUsMCcsCiAgICAgICAgJ2dvbGRlbnJvZCcgPT4gJzIxOCwxNjUsMzInLAogICAgICAgICdncmF5JyA9PiAnMTI4LDEyOCwxMjgnLAogICAgICAgICdncmV5JyA9PiAnMTI4LDEyOCwxMjgnLAogICAgICAgICdncmVlbicgPT4gJzAsMTI4LDAnLAogICAgICAgICdncmVlbnllbGxvdycgPT4gJzE3MywyNTUsNDcnLAogICAgICAgICdob25leWRldycgPT4gJzI0MCwyNTUsMjQwJywKICAgICAgICAnaG90cGluaycgPT4gJzI1NSwxMDUsMTgwJywKICAgICAgICAnaW5kaWFucmVkJyA9PiAnMjA1LDkyLDkyJywKICAgICAgICAnaW5kaWdvJyA9PiAnNzUsMCwxMzAnLAogICAgICAgICdpdm9yeScgPT4gJzI1NSwyNTUsMjQwJywKICAgICAgICAna2hha2knID0+ICcyNDAsMjMwLDE0MCcsCiAgICAgICAgJ2xhdmVuZGVyJyA9PiAnMjMwLDIzMCwyNTAnLAogICAgICAgICdsYXZlbmRlcmJsdXNoJyA9PiAnMjU1LDI0MCwyNDUnLAogICAgICAgICdsYXduZ3JlZW4nID0+ICcxMjQsMjUyLDAnLAogICAgICAgICdsZW1vbmNoaWZmb24nID0+ICcyNTUsMjUwLDIwNScsCiAgICAgICAgJ2xpZ2h0Ymx1ZScgPT4gJzE3MywyMTYsMjMwJywKICAgICAgICAnbGlnaHRjb3JhbCcgPT4gJzI0MCwxMjgsMTI4JywKICAgICAgICAnbGlnaHRjeWFuJyA9PiAnMjI0LDI1NSwyNTUnLAogICAgICAgICdsaWdodGdvbGRlbnJvZHllbGxvdycgPT4gJzI1MCwyNTAsMjEwJywKICAgICAgICAnbGlnaHRncmF5JyA9PiAnMjExLDIxMSwyMTEnLAogICAgICAgICdsaWdodGdyZXknID0+ICcyMTEsMjExLDIxMScsCiAgICAgICAgJ2xpZ2h0Z3JlZW4nID0+ICcxNDQsMjM4LDE0NCcsCiAgICAgICAgJ2xpZ2h0cGluaycgPT4gJzI1NSwxODIsMTkzJywKICAgICAgICAnbGlnaHRzYWxtb24nID0+ICcyNTUsMTYwLDEyMicsCiAgICAgICAgJ2xpZ2h0c2VhZ3JlZW4nID0+ICczMiwxNzgsMTcwJywKICAgICAgICAnbGlnaHRza3libHVlJyA9PiAnMTM1LDIwNiwyNTAnLAogICAgICAgICdsaWdodHNsYXRlZ3JheScgPT4gJzExOSwxMzYsMTUzJywKICAgICAgICAnbGlnaHRzbGF0ZWdyZXknID0+ICcxMTksMTM2LDE1MycsCiAgICAgICAgJ2xpZ2h0c3RlZWxibHVlJyA9PiAnMTc2LDE5NiwyMjInLAogICAgICAgICdsaWdodHllbGxvdycgPT4gJzI1NSwyNTUsMjI0JywKICAgICAgICAnbGltZScgPT4gJzAsMjU1LDAnLAogICAgICAgICdsaW1lZ3JlZW4nID0+ICc1MCwyMDUsNTAnLAogICAgICAgICdsaW5lbicgPT4gJzI1MCwyNDAsMjMwJywKICAgICAgICAnbWFyb29uJyA9PiAnMTI4LDAsMCcsCiAgICAgICAgJ21lZGl1bWFxdWFtYXJpbmUnID0+ICcxMDIsMjA1LDE3MCcsCiAgICAgICAgJ21lZGl1bWJsdWUnID0+ICcwLDAsMjA1JywKICAgICAgICAnbWVkaXVtb3JjaGlkJyA9PiAnMTg2LDg1LDIxMScsCiAgICAgICAgJ21lZGl1bXB1cnBsZScgPT4gJzE0NywxMTIsMjE5JywKICAgICAgICAnbWVkaXVtc2VhZ3JlZW4nID0+ICc2MCwxNzksMTEzJywKICAgICAgICAnbWVkaXVtc2xhdGVibHVlJyA9PiAnMTIzLDEwNCwyMzgnLAogICAgICAgICdtZWRpdW1zcHJpbmdncmVlbicgPT4gJzAsMjUwLDE1NCcsCiAgICAgICAgJ21lZGl1bXR1cnF1b2lzZScgPT4gJzcyLDIwOSwyMDQnLAogICAgICAgICdtZWRpdW12aW9sZXRyZWQnID0+ICcxOTksMjEsMTMzJywKICAgICAgICAnbWlkbmlnaHRibHVlJyA9PiAnMjUsMjUsMTEyJywKICAgICAgICAnbWludGNyZWFtJyA9PiAnMjQ1LDI1NSwyNTAnLAogICAgICAgICdtaXN0eXJvc2UnID0+ICcyNTUsMjI4LDIyNScsCiAgICAgICAgJ21vY2Nhc2luJyA9PiAnMjU1LDIyOCwxODEnLAogICAgICAgICduYXZham93aGl0ZScgPT4gJzI1NSwyMjIsMTczJywKICAgICAgICAnbmF2eScgPT4gJzAsMCwxMjgnLAogICAgICAgICdvbGRsYWNlJyA9PiAnMjUzLDI0NSwyMzAnLAogICAgICAgICdvbGl2ZScgPT4gJzEyOCwxMjgsMCcsCiAgICAgICAgJ29saXZlZHJhYicgPT4gJzEwNywxNDIsMzUnLAogICAgICAgICdvcmFuZ2UnID0+ICcyNTUsMTY1LDAnLAogICAgICAgICdvcmFuZ2VyZWQnID0+ICcyNTUsNjksMCcsCiAgICAgICAgJ29yY2hpZCcgPT4gJzIxOCwxMTIsMjE0JywKICAgICAgICAncGFsZWdvbGRlbnJvZCcgPT4gJzIzOCwyMzIsMTcwJywKICAgICAgICAncGFsZWdyZWVuJyA9PiAnMTUyLDI1MSwxNTInLAogICAgICAgICdwYWxldHVycXVvaXNlJyA9PiAnMTc1LDIzOCwyMzgnLAogICAgICAgICdwYWxldmlvbGV0cmVkJyA9PiAnMjE5LDExMiwxNDcnLAogICAgICAgICdwYXBheWF3aGlwJyA9PiAnMjU1LDIzOSwyMTMnLAogICAgICAgICdwZWFjaHB1ZmYnID0+ICcyNTUsMjE4LDE4NScsCiAgICAgICAgJ3BlcnUnID0+ICcyMDUsMTMzLDYzJywKICAgICAgICAncGluaycgPT4gJzI1NSwxOTIsMjAzJywKICAgICAgICAncGx1bScgPT4gJzIyMSwxNjAsMjIxJywKICAgICAgICAncG93ZGVyYmx1ZScgPT4gJzE3NiwyMjQsMjMwJywKICAgICAgICAncHVycGxlJyA9PiAnMTI4LDAsMTI4JywKICAgICAgICAncmVkJyA9PiAnMjU1LDAsMCcsCiAgICAgICAgJ3Jvc3licm93bicgPT4gJzE4OCwxNDMsMTQzJywKICAgICAgICAncm95YWxibHVlJyA9PiAnNjUsMTA1LDIyNScsCiAgICAgICAgJ3NhZGRsZWJyb3duJyA9PiAnMTM5LDY5LDE5JywKICAgICAgICAnc2FsbW9uJyA9PiAnMjUwLDEyOCwxMTQnLAogICAgICAgICdzYW5keWJyb3duJyA9PiAnMjQ0LDE2NCw5NicsCiAgICAgICAgJ3NlYWdyZWVuJyA9PiAnNDYsMTM5LDg3JywKICAgICAgICAnc2Vhc2hlbGwnID0+ICcyNTUsMjQ1LDIzOCcsCiAgICAgICAgJ3NpZW5uYScgPT4gJzE2MCw4Miw0NScsCiAgICAgICAgJ3NpbHZlcicgPT4gJzE5MiwxOTIsMTkyJywKICAgICAgICAnc2t5Ymx1ZScgPT4gJzEzNSwyMDYsMjM1JywKICAgICAgICAnc2xhdGVibHVlJyA9PiAnMTA2LDkwLDIwNScsCiAgICAgICAgJ3NsYXRlZ3JheScgPT4gJzExMiwxMjgsMTQ0JywKICAgICAgICAnc2xhdGVncmV5JyA9PiAnMTEyLDEyOCwxNDQnLAogICAgICAgICdzbm93JyA9PiAnMjU1LDI1MCwyNTAnLAogICAgICAgICdzcHJpbmdncmVlbicgPT4gJzAsMjU1LDEyNycsCiAgICAgICAgJ3N0ZWVsYmx1ZScgPT4gJzcwLDEzMCwxODAnLAogICAgICAgICd0YW4nID0+ICcyMTAsMTgwLDE0MCcsCiAgICAgICAgJ3RlYWwnID0+ICcwLDEyOCwxMjgnLAogICAgICAgICd0aGlzdGxlJyA9PiAnMjE2LDE5MSwyMTYnLAogICAgICAgICd0b21hdG8nID0+ICcyNTUsOTksNzEnLAogICAgICAgICd0dXJxdW9pc2UnID0+ICc2NCwyMjQsMjA4JywKICAgICAgICAndmlvbGV0JyA9PiAnMjM4LDEzMCwyMzgnLAogICAgICAgICd3aGVhdCcgPT4gJzI0NSwyMjIsMTc5JywKICAgICAgICAnd2hpdGUnID0+ICcyNTUsMjU1LDI1NScsCiAgICAgICAgJ3doaXRlc21va2UnID0+ICcyNDUsMjQ1LDI0NScsCiAgICAgICAgJ3llbGxvdycgPT4gJzI1NSwyNTUsMCcsCiAgICAgICAgJ3llbGxvd2dyZWVuJyA9PiAnMTU0LDIwNSw1MCcsCiAgICAgICAgJ3JlYmVjY2FwdXJwbGUnID0+ICcxMDIsNTEsMTUzJywKICAgICAgICAndHJhbnNwYXJlbnQnID0+ICcwLDAsMCwwJywKICAgIF07CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb2xvck5hbWVUb0NvbG9yKHN0cmluZyAkY29sb3JOYW1lKTogP1Nhc3NDb2xvcgogICAgewogICAgICAgICRyZ2JhID0gc2VsZjo6Y29sb3JOYW1lVG9SR0JhKCRjb2xvck5hbWUpOwoKICAgICAgICBpZiAoJHJnYmEgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gU2Fzc0NvbG9yOjpyZ2IoJHJnYmFbMF0sICRyZ2JhWzFdLCAkcmdiYVsyXSwgJHJnYmFbM10gPz8gMS4wKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgbmFtZWQgY29sb3IgaW4gYSBbcixnLGJbLGFdXSBhcnJheQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbG9yTmFtZQogICAgICoKICAgICAqIEByZXR1cm4gaW50W118bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb2xvck5hbWVUb1JHQmEoc3RyaW5nICRjb2xvck5hbWUpOiA/YXJyYXkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoc2VsZjo6Q1NTX0NPTE9SU1skY29sb3JOYW1lXSkpIHsKICAgICAgICAgICAgJHJnYmEgPSBleHBsb2RlKCcsJywgc2VsZjo6Q1NTX0NPTE9SU1skY29sb3JOYW1lXSk7CgogICAgICAgICAgICAvLyBvbmx5IGNhc2Ugd2l0aCBvcGFjaXR5IGlzIHRyYW5zcGFyZW50LCB3aXRoIG9wYWNpdHk9MCwgc28gd2UgY2FuIGludHZhbCBvbiBvcGFjaXR5IGFsc28KICAgICAgICAgICAgcmV0dXJuIGFycmF5X21hcCgnaW50dmFsJywgJHJnYmEpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXZlcnNlIGNvbnZlcnNpb246IGZyb20gUkdCQSB0byBhIGNvbG9yIG5hbWUgaWYgcG9zc2libGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBSR0JhVG9Db2xvck5hbWUoaW50ICRyLCBpbnQgJGcsIGludCAkYiwgZmxvYXQgJGEpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgc3RhdGljICRyZXZlcnNlQ29sb3JUYWJsZSA9IG51bGw7CgogICAgICAgIGlmICgkYSA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX251bGwoJHJldmVyc2VDb2xvclRhYmxlKSkgewogICAgICAgICAgICAkcmV2ZXJzZUNvbG9yVGFibGUgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKHNlbGY6OkNTU19DT0xPUlMgYXMgJG5hbWUgPT4gJHJnYl9zdHIpIHsKICAgICAgICAgICAgICAgICRyZ2Jfc3RyID0gZXhwbG9kZSgnLCcsICRyZ2Jfc3RyKTsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgXGNvdW50KCRyZ2Jfc3RyKSA9PT0gMyAmJgogICAgICAgICAgICAgICAgICAgICEgaXNzZXQoJHJldmVyc2VDb2xvclRhYmxlW1xpbnR2YWwoJHJnYl9zdHJbMF0pXVtcaW50dmFsKCRyZ2Jfc3RyWzFdKV1bXGludHZhbCgkcmdiX3N0clsyXSldKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHJldmVyc2VDb2xvclRhYmxlW1xpbnR2YWwoJHJnYl9zdHJbMF0pXVtcaW50dmFsKCRyZ2Jfc3RyWzFdKV1bXGludHZhbCgkcmdiX3N0clsyXSldID0gJG5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkcmV2ZXJzZUNvbG9yVGFibGVbJHJdWyRnXVskYl0pKSB7CiAgICAgICAgICAgIHJldHVybiAkcmV2ZXJzZUNvbG9yVGFibGVbJHJdWyRnXVskYl07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/CompilationResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKZmluYWwgY2xhc3MgQ29tcGlsYXRpb25SZXN1bHQKewogICAgcHJpdmF0ZSBzdHJpbmcgJGNzczsKCiAgICBwcml2YXRlID9zdHJpbmcgJHNvdXJjZU1hcDsKCiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJGluY2x1ZGVkRmlsZXM7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRpbmNsdWRlZEZpbGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJGNzcywgP3N0cmluZyAkc291cmNlTWFwLCBhcnJheSAkaW5jbHVkZWRGaWxlcykKICAgIHsKICAgICAgICAkdGhpcy0+Y3NzID0gJGNzczsKICAgICAgICAkdGhpcy0+c291cmNlTWFwID0gJHNvdXJjZU1hcDsKICAgICAgICAkdGhpcy0+aW5jbHVkZWRGaWxlcyA9ICRpbmNsdWRlZEZpbGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDc3MoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jc3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5jbHVkZWRGaWxlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aW5jbHVkZWRGaWxlczsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBzb3VyY2VNYXAgY29udGVudCwgaWYgaXQgd2FzIGdlbmVyYXRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U291cmNlTWFwKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZU1hcDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Compiler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIExlYWd1ZVxVcmlcVXJpOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzUGFyZW50Tm9kZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcU3R5bGVzaGVldDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb2xsZWN0aW9uXE1hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxMZWdhY3lWYWx1ZVZpc2l0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXZhbHVhdGlvblxFdmFsdWF0ZVZpc2l0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NTY3JpcHRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRnVuY3Rpb25cRnVuY3Rpb25SZWdpc3RyeTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxJbXBvcnRlclxGaWxlc3lzdGVtSW1wb3J0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcSW1wb3J0ZXJcSW1wb3J0Q2FjaGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcSW1wb3J0ZXJcSW1wb3J0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcSW1wb3J0ZXJcTGVnYWN5Q2FsbGJhY2tJbXBvcnRlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxJbXBvcnRlclxOb09wSW1wb3J0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcTG9nZ2VyXERlcHJlY2F0aW9uUHJvY2Vzc2luZ0xvZ2dlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxTdHJlYW1Mb2dnZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcTm9kZVxOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcU2Fzc0NhbGxhYmxlXEJ1aWx0SW5DYWxsYWJsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTZXJpYWxpemVyXFNlcmlhbGl6ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxQYXRoOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXExpc3RTZXBhcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0FyZ3VtZW50TGlzdDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQm9vbGVhbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQ29sb3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0xpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc01hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTnVsbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTnVtYmVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NTdHJpbmc7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcVmFsdWU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxDc3NWaXNpdG9yOwoKZmluYWwgY2xhc3MgQ29tcGlsZXIKewogICAgY29uc3QgU09VUkNFX01BUF9OT05FICAgPSAwOwogICAgY29uc3QgU09VUkNFX01BUF9JTkxJTkUgPSAxOwogICAgY29uc3QgU09VUkNFX01BUF9GSUxFICAgPSAyOwoKICAgIHB1YmxpYyBzdGF0aWMgJHRydWUgICAgICAgICA9IFtUeXBlOjpUX0tFWVdPUkQsICd0cnVlJ107CiAgICBwdWJsaWMgc3RhdGljICRmYWxzZSAgICAgICAgPSBbVHlwZTo6VF9LRVlXT1JELCAnZmFsc2UnXTsKICAgIHB1YmxpYyBzdGF0aWMgJG51bGwgICAgICAgICA9IFtUeXBlOjpUX05VTExdOwogICAgcHVibGljIHN0YXRpYyAkZW1wdHlMaXN0ICAgID0gW1R5cGU6OlRfTElTVCwgJycsIFtdXTsKICAgIHB1YmxpYyBzdGF0aWMgJGVtcHR5TWFwICAgICA9IFtUeXBlOjpUX01BUCwgW10sIFtdXTsKICAgIHB1YmxpYyBzdGF0aWMgJGVtcHR5U3RyaW5nICA9IFtUeXBlOjpUX1NUUklORywgJyInLCBbXV07CgogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8SW1wb3J0ZXI+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJGltcG9ydGVycyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxpbnQsIHN0cmluZ3xjYWxsYWJsZShzdHJpbmcpOiAoc3RyaW5nfG51bGwpPgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICRpbXBvcnRQYXRocyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGFycmF5ezA6IGNhbGxhYmxlLCAxOiBzdHJpbmdbXX0+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJHVzZXJGdW5jdGlvbnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBWYWx1ZT4KICAgICAqLwogICAgcHJpdmF0ZSBhcnJheSAkcmVnaXN0ZXJlZFZhcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgc2VsZjo6U09VUkNFX01BUF8qCiAgICAgKi8KICAgIHByaXZhdGUgaW50ICRzb3VyY2VNYXAgPSBzZWxmOjpTT1VSQ0VfTUFQX05PTkU7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5e3NvdXJjZVJvb3Q/OiBzdHJpbmcsIHNvdXJjZU1hcEZpbGVuYW1lPzogc3RyaW5nfG51bGwsIHNvdXJjZU1hcFVSTD86IHN0cmluZ3xudWxsLCBvdXRwdXRTb3VyY2VGaWxlcz86IGJvb2wsIHNvdXJjZU1hcFJvb3RwYXRoPzogc3RyaW5nLCBzb3VyY2VNYXBCYXNlcGF0aD86IHN0cmluZ30KICAgICAqLwogICAgcHJpdmF0ZSBhcnJheSAkc291cmNlTWFwT3B0aW9ucyA9IFtdOwoKICAgIHByaXZhdGUgYm9vbCAkY2hhcnNldCA9IHRydWU7CgogICAgcHJpdmF0ZSBib29sICRxdWlldERlcHMgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIERlcHJlY2F0aW9uIHdhcm5pbmdzIG9mIHRoZXNlIHR5cGVzIHdpbGwgYmUgaWdub3JlZC4KICAgICAqCiAgICAgKiBAdmFyIERlcHJlY2F0aW9uW10KICAgICAqLwogICAgcHJpdmF0ZSBhcnJheSAkc2lsZW5jZURlcHJlY2F0aW9ucyA9IFtdOwoKICAgIC8qKgogICAgICogRGVwcmVjYXRpb24gd2FybmluZ3Mgb2Ygb25lIG9mIHRoZXNlIHR5cGVzIHdpbGwgY2F1c2UgYW4gZXJyb3IgdG8gYmUKICAgICAqIHRocm93bi4KICAgICAqCiAgICAgKiBGdXR1cmUgZGVwcmVjYXRpb25zIGluIHRoaXMgbGlzdCB3aWxsIHN0aWxsIGNhdXNlIGFuIGVycm9yIGV2ZW4gaWYgdGhleQogICAgICogYXJlIG5vdCBhbHNvIGluIHtAc2VlICRmdXR1cmVEZXByZWNhdGlvbnN9LgogICAgICoKICAgICAqIEB2YXIgRGVwcmVjYXRpb25bXQogICAgICovCiAgICBwcml2YXRlIGFycmF5ICRmYXRhbERlcHJlY2F0aW9ucyA9IFtdOwoKICAgIC8qKgogICAgICogRnV0dXJlIGRlcHJlY2F0aW9ucyB0aGF0IHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IG9wdGVkIGludG8uCiAgICAgKgogICAgICogQHZhciBEZXByZWNhdGlvbltdCiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJGZ1dHVyZURlcHJlY2F0aW9ucyA9IFtdOwoKICAgIHByaXZhdGUgYm9vbCAkdmVyYm9zZSA9IGZhbHNlOwoKICAgIHByaXZhdGUgT3V0cHV0U3R5bGUgJG91dHB1dFN0eWxlID0gT3V0cHV0U3R5bGU6OkVYUEFOREVEOwoKICAgIHByaXZhdGUgTG9nZ2VySW50ZXJmYWNlICRsb2dnZXI7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+bG9nZ2VyID0gbmV3IFN0cmVhbUxvZ2dlcihmb3BlbigncGhwOi8vc3RkZXJyJywgJ3cnKSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXRzIGFuIGFsdGVybmF0aXZlIGxvZ2dlci4KICAgICAqCiAgICAgKiBDaGFuZ2luZyB0aGUgbG9nZ2VyIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNvbXBpbGF0aW9uIGlzIG5vdAogICAgICogc3VwcG9ydGVkIGFuZCB3aWxsIHJlc3VsdCBpbiBhbiB1bmRlZmluZWQgYmVoYXZpb3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRMb2dnZXIoTG9nZ2VySW50ZXJmYWNlICRsb2dnZXIpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmxvZ2dlciA9ICRsb2dnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXBsYWNlcyB2YXJpYWJsZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgVmFsdWU+ICR2YXJpYWJsZXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcGxhY2VWYXJpYWJsZXMoYXJyYXkgJHZhcmlhYmxlcyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+cmVnaXN0ZXJlZFZhcnMgPSBbXTsKICAgICAgICAkdGhpcy0+YWRkVmFyaWFibGVzKCR2YXJpYWJsZXMpOwogICAgfQoKICAgIC8qKgogICAgICogUmVwbGFjZXMgdmFyaWFibGVzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIFZhbHVlPiAkdmFyaWFibGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRWYXJpYWJsZXMoYXJyYXkgJHZhcmlhYmxlcyk6IHZvaWQKICAgIHsKICAgICAgICBmb3JlYWNoICgkdmFyaWFibGVzIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICAgICBpZiAoISR2YWx1ZSBpbnN0YW5jZW9mIFZhbHVlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignUGFzc2luZyByYXcgdmFsdWVzIHRvIGFzIGN1c3RvbSB2YXJpYWJsZXMgdG8gdGhlIENvbXBpbGVyIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZS4gVXNlICJcU2Nzc1BocFxTY3NzUGhwXFZhbHVlQ29udmVydGVyOjpwYXJzZVZhbHVlIiBvciAiXFNjc3NQaHBcU2Nzc1BocFxWYWx1ZUNvbnZlcnRlcjo6ZnJvbVBocCIgdG8gY29udmVydCB0aGVtIGluc3RlYWQuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlcmVkVmFyc1skbmFtZV0gPSAkdmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVW5zZXQgdmFyaWFibGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuc2V0VmFyaWFibGUoc3RyaW5nICRuYW1lKTogdm9pZAogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT5yZWdpc3RlcmVkVmFyc1skbmFtZV0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBsaXN0IG9mIHZhcmlhYmxlcwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBWYWx1ZT4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhcmlhYmxlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVnaXN0ZXJlZFZhcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZEltcG9ydGVyKEltcG9ydGVyICRpbXBvcnRlcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+aW1wb3J0ZXJzW10gPSAkaW1wb3J0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgaW1wb3J0IHBhdGgKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlKHN0cmluZyk6IChzdHJpbmd8bnVsbCkgJHBhdGgKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEltcG9ydFBhdGgoc3RyaW5nfGNhbGxhYmxlICRwYXRoKTogdm9pZAogICAgewogICAgICAgIGlmICghIFxpbl9hcnJheSgkcGF0aCwgJHRoaXMtPmltcG9ydFBhdGhzKSkgewogICAgICAgICAgICAkdGhpcy0+aW1wb3J0UGF0aHNbXSA9ICRwYXRoOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNldCBpbXBvcnQgcGF0aHMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGFycmF5PHN0cmluZ3xjYWxsYWJsZShzdHJpbmcpOiAoc3RyaW5nfG51bGwpPiAkcGF0aAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SW1wb3J0UGF0aHMoJHBhdGgpOiB2b2lkCiAgICB7CiAgICAgICAgJHBhdGhzID0gKGFycmF5KSAkcGF0aDsKICAgICAgICAkYWN0dWFsSW1wb3J0UGF0aHMgPSBhcnJheV9maWx0ZXIoJHBhdGhzLCBmdW5jdGlvbiAoJHBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuICRwYXRoICE9PSAnJzsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKFxjb3VudCgkYWN0dWFsSW1wb3J0UGF0aHMpICE9PSBcY291bnQoJHBhdGhzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignUGFzc2luZyBhbiBlbXB0eSBzdHJpbmcgaW4gdGhlIGltcG9ydCBwYXRocyB0byByZWZlciB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUuIElmIHRoYXRcJ3MgdGhlIGludGVuZGVkIGJlaGF2aW9yLCB0aGUgdmFsdWUgb2YgImdldGN3ZCgpIiBzaG91bGQgYmUgdXNlZCBkaXJlY3RseSBpbnN0ZWFkLiBJZiB0aGlzIHdhcyB1c2VkIGZvciByZXNvbHZpbmcgcmVsYXRpdmUgaW1wb3J0cyBvZiB0aGUgaW5wdXQgYWxvbmdzaWRlICJjaGRpciIgd2l0aCB0aGUgc291cmNlIGRpcmVjdG9yeSwgdGhlIHBhdGggb2YgdGhlIGlucHV0IGZpbGUgc2hvdWxkIGJlIHBhc3NlZCB0byAiY29tcGlsZVN0cmluZygpIiBpbnN0ZWFkLicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmltcG9ydFBhdGhzID0gJGFjdHVhbEltcG9ydFBhdGhzOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyB0aGUgb3V0cHV0IHN0eWxlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0T3V0cHV0U3R5bGUoT3V0cHV0U3R5bGUgJHN0eWxlKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5vdXRwdXRTdHlsZSA9ICRzdHlsZTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbmZpZ3VyZXMgdGhlIGhhbmRsaW5nIG9mIG5vbi1BU0NJSSBvdXRwdXRzLgogICAgICoKICAgICAqIElmICRjaGFyc2V0IGlzIGB0cnVlYCwgdGhpcyB3aWxsIGluY2x1ZGUgYSBgQGNoYXJzZXRgIGRlY2xhcmF0aW9uIG9yIGEKICAgICAqIFVURi04IFtieXRlLW9yZGVyIG1hcmtdW10gaWYgdGhlIHN0eWxlc2hlZXQgY29udGFpbnMgYW55IG5vbi1BU0NJSQogICAgICogY2hhcmFjdGVycy4gT3RoZXJ3aXNlLCBpdCB3aWxsIG5ldmVyIGluY2x1ZGUgYSBgQGNoYXJzZXRgIGRlY2xhcmF0aW9uIG9yIGEKICAgICAqIGJ5dGUtb3JkZXIgbWFyay4KICAgICAqCiAgICAgKiBbYnl0ZS1vcmRlciBtYXJrXTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnl0ZV9vcmRlcl9tYXJrI1VURi04CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDaGFyc2V0KGJvb2wgJGNoYXJzZXQpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmNoYXJzZXQgPSAkY2hhcnNldDsKICAgIH0KCiAgICAvKioKICAgICAqIElmIHNldCB0byBgdHJ1ZWAsIHRoaXMgd2lsbCBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmdzIGVtaXR0ZWQgZm9yIHN0eWxlc2hlZXRzIGxvYWRlZCB0aHJvdWdoIHtAc2VlICRpbXBvcnRlcnN9IG9yIHtAc2VlICRpbXBvcnRQYXRoc30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFF1aWV0RGVwcyhib29sICRxdWlldERlcHMpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnF1aWV0RGVwcyA9ICRxdWlldERlcHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25maWd1cmVzIHRoZSBkZXByZWNhdGlvbiB3YXJuaW5nIHR5cGVzIHRoYXQgd2lsbCBiZSBpZ25vcmVkLgogICAgICoKICAgICAqIEBwYXJhbSBEZXByZWNhdGlvbltdICRzaWxlbmNlRGVwcmVjYXRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRTaWxlbmNlRGVwcmVjYXRpb25zKGFycmF5ICRzaWxlbmNlRGVwcmVjYXRpb25zKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zaWxlbmNlRGVwcmVjYXRpb25zID0gJHNpbGVuY2VEZXByZWNhdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25maWd1cmVzIHRoZSBkZXByZWNhdGlvbiB3YXJuaW5nIHR5cGVzIHRoYXQgd2lsbCBjYXVzZSBhbiBlcnJvciB0byBiZSB0aHJvd24uCiAgICAgKgogICAgICogQHBhcmFtIERlcHJlY2F0aW9uW10gJGZhdGFsRGVwcmVjYXRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRGYXRhbERlcHJlY2F0aW9ucyhhcnJheSAkZmF0YWxEZXByZWNhdGlvbnMpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmZhdGFsRGVwcmVjYXRpb25zID0gJGZhdGFsRGVwcmVjYXRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogQ29uZmlndXJlcyB0aGUgb3B0LWluIGZvciBmdXR1cmUgZGVwcmVjYXRpb24gd2FybmluZyB0eXBlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gRGVwcmVjYXRpb25bXSAkZnV0dXJlRGVwcmVjYXRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRGdXR1cmVEZXByZWNhdGlvbnMoYXJyYXkgJGZ1dHVyZURlcHJlY2F0aW9ucyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+ZnV0dXJlRGVwcmVjYXRpb25zID0gJGZ1dHVyZURlcHJlY2F0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIENvbmZpZ3VyZXMgdGhlIHZlcmJvc2l0eSBvZiBkZXByZWNhdGlvbiB3YXJuaW5ncy4KICAgICAqCiAgICAgKiBJbiBub24tdmVyYm9zZSBtb2RlLCByZXBlYXRlZCBkZXByZWNhdGlvbnMgYXJlIGhpZGRlbiBvbmNlIHJlYWNoaW5nIHRoZQogICAgICogdGhyZXNob2xkLCB3aXRoIGEgc3VtbWFyeSBhdCB0aGUgZW5kLiBJbiB2ZXJib3NlIG1vZGUsIGFsbCBkZXByZWNhdGlvbgogICAgICogd2FybmluZ3MgYXJlIGVtaXR0ZWQgdG8gdGhlIGxvZ2dlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFZlcmJvc2UoYm9vbCAkdmVyYm9zZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+dmVyYm9zZSA9ICR2ZXJib3NlOwogICAgfQoKICAgIC8qKgogICAgICogRW5hYmxlL2Rpc2FibGUgc291cmNlIG1hcHMKICAgICAqCiAgICAgKiBAcGFyYW0gc2VsZjo6U09VUkNFX01BUF8qICRzb3VyY2VNYXAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFNvdXJjZU1hcChpbnQgJHNvdXJjZU1hcCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlTWFwID0gJHNvdXJjZU1hcDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBzb3VyY2UgbWFwIG9wdGlvbnMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl7c291cmNlUm9vdD86IHN0cmluZywgc291cmNlTWFwRmlsZW5hbWU/OiBzdHJpbmd8bnVsbCwgc291cmNlTWFwVVJMPzogc3RyaW5nfG51bGwsIG91dHB1dFNvdXJjZUZpbGVzPzogYm9vbCwgc291cmNlTWFwUm9vdHBhdGg/OiBzdHJpbmcsIHNvdXJjZU1hcEJhc2VwYXRoPzogc3RyaW5nfSAkc291cmNlTWFwT3B0aW9ucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U291cmNlTWFwT3B0aW9ucyhhcnJheSAkc291cmNlTWFwT3B0aW9ucyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlTWFwT3B0aW9ucyA9ICRzb3VyY2VNYXBPcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgY3VzdG9tIGZ1bmN0aW9uCiAgICAgKgogICAgICogQHBhcmFtIChjYWxsYWJsZShsaXN0PFZhbHVlPik6IFZhbHVlKXwoY2FsbGFibGUobGlzdDxhcnJheXxOdW1iZXI+KTogKGFycmF5fE51bWJlcikpICRjYWxsYmFjawogICAgICogQHBhcmFtIHN0cmluZ1tdICRhcmd1bWVudERlY2xhcmF0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWdpc3RlckZ1bmN0aW9uKHN0cmluZyAkbmFtZSwgY2FsbGFibGUgJGNhbGxiYWNrLCBhcnJheSAkYXJndW1lbnREZWNsYXJhdGlvbik6IHZvaWQKICAgIHsKICAgICAgICAkbm9ybWFsaXplZE5hbWUgPSAkdGhpcy0+bm9ybWFsaXplTmFtZSgkbmFtZSk7CiAgICAgICAgaWYgKEZ1bmN0aW9uUmVnaXN0cnk6OmlzQnVpbHRpbkZ1bmN0aW9uKCRub3JtYWxpemVkTmFtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlICIlcyIgZnVuY3Rpb24gaXMgYSBjb3JlIHNhc3MgZnVuY3Rpb24uIE92ZXJyaWRpbmcgaXQgd2l0aCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB0aHJvdWdoICIlcyIgaXMgbm90IHN1cHBvcnRlZCAuJywgJG5hbWUsIF9fTUVUSE9EX18pKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT51c2VyRnVuY3Rpb25zWyRub3JtYWxpemVkTmFtZV0gPSBbJGNhbGxiYWNrLCAkYXJndW1lbnREZWNsYXJhdGlvbl07CiAgICB9CgogICAgLyoqCiAgICAgKiBVbnJlZ2lzdGVycyBhIGN1c3RvbSBmdW5jdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5yZWdpc3RlckZ1bmN0aW9uKHN0cmluZyAkbmFtZSk6IHZvaWQKICAgIHsKICAgICAgICB1bnNldCgkdGhpcy0+dXNlckZ1bmN0aW9uc1skdGhpcy0+bm9ybWFsaXplTmFtZSgkbmFtZSldKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUoc3RyaW5nICRuYW1lKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cl9yZXBsYWNlKCctJywgJ18nLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlcyB0aGUgcHJvdmlkZWQgc2NzcyBmaWxlIGludG8gQ1NTLgogICAgICoKICAgICAqIEltcG9ydHMgYXJlIHJlc29sdmVkIGJ5IHRyeWluZywgaW4gb3JkZXI6CiAgICAgKgogICAgICogKiBMb2FkaW5nIGEgZmlsZSByZWxhdGl2ZSB0byAkcGF0aC4KICAgICAqCiAgICAgKiAqIEVhY2ggaW1wb3J0ZXIgaW4ge0BzZWUgJGltcG9ydGVyc30uCiAgICAgKgogICAgICogKiBFYWNoIGxvYWQgcGF0aCBpbiB7QHNlZSAkaW1wb3J0UGF0aHN9LiBOb3RlIHRoYXQgdGhpcyBpcyBhIHNob3J0aGFuZCBmb3IgYWRkaW5nCiAgICAgKiAgIHtAc2VlIEZpbGVzeXN0ZW1JbXBvcnRlcn1zIHRvIHtAc2VlICRpbXBvcnRlcnN9LgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0V4Y2VwdGlvbiB3aGVuIHRoZSBzb3VyY2UgZmFpbHMgdG8gY29tcGlsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZUZpbGUoc3RyaW5nICRwYXRoKTogQ29tcGlsYXRpb25SZXN1bHQKICAgIHsKICAgICAgICAvLyBGb3JjZSBsb2FkaW5nIHRoZSBDc3NQYXJlbnROb2RlIGFuZCBDc3NWaXNpdG9yIGJlZm9yZSB1c2luZyB0aGUgQVNUIGNsYXNzZXMgYmVjYXVzZSBvZiBhIHdlaXJkIFBIUCBiZWhhdmlvci4KICAgICAgICBjbGFzc19leGlzdHMoQ3NzUGFyZW50Tm9kZTo6Y2xhc3MpOwogICAgICAgIGNsYXNzX2V4aXN0cyhDc3NWaXNpdG9yOjpjbGFzcyk7CgogICAgICAgICRsb2dnZXIgPSBuZXcgRGVwcmVjYXRpb25Qcm9jZXNzaW5nTG9nZ2VyKCR0aGlzLT5sb2dnZXIsICR0aGlzLT5zaWxlbmNlRGVwcmVjYXRpb25zLCAkdGhpcy0+ZmF0YWxEZXByZWNhdGlvbnMsICR0aGlzLT5mdXR1cmVEZXByZWNhdGlvbnMsICEkdGhpcy0+dmVyYm9zZSk7CiAgICAgICAgJGxvZ2dlci0+dmFsaWRhdGUoKTsKICAgICAgICAkaW1wb3J0Q2FjaGUgPSAkdGhpcy0+Y3JlYXRlSW1wb3J0Q2FjaGUoJGxvZ2dlcik7CgogICAgICAgICRpbXBvcnRlciA9IG5ldyBGaWxlc3lzdGVtSW1wb3J0ZXIobnVsbCk7CgogICAgICAgICRzdHlsZXNoZWV0ID0gJGltcG9ydENhY2hlLT5pbXBvcnRDYW5vbmljYWwoJGltcG9ydGVyLCBQYXRoOjp0b1VyaShQYXRoOjpjYW5vbmljYWxpemUoJHBhdGgpKSwgUGF0aDo6dG9VcmkoJHBhdGgpKTsKCiAgICAgICAgXGFzc2VydCgkc3R5bGVzaGVldCAhPT0gbnVsbCwgJ1RoZSBmaWxlc3lzdGVtIGltcG9ydGVyIG5ldmVyIHJldHVybnMgbnVsbCB3aGVuIGxvYWRpbmcgYSBjYW5vbmljYWwgVVJMLiBJdCBlaXRoZXIgc3VjY2VlZHMgb3IgdGhyb3dzIGFuIGVycm9yLicpOwoKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmNvbXBpbGVTdHlsZXNoZWV0KCRzdHlsZXNoZWV0LCAkaW1wb3J0Q2FjaGUsICRsb2dnZXIsICRpbXBvcnRlcik7CgogICAgICAgICRsb2dnZXItPnN1bW1hcml6ZSgpOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGVzIHRoZSBwcm92aWRlZCBzY3NzIHNvdXJjZSBjb2RlIGludG8gQ1NTLgogICAgICoKICAgICAqIEltcG9ydHMgYXJlIHJlc29sdmVkIGJ5IHRyeWluZywgaW4gb3JkZXI6CiAgICAgKgogICAgICogKiBUaGUgZ2l2ZW4gJGltcG9ydGVyLCB3aXRoIHRoZSBpbXBvcnRlZCBVUkwgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gJHVybC4KICAgICAqCiAgICAgKiAqIEVhY2ggaW1wb3J0ZXIgaW4ge0BzZWUgJGltcG9ydGVyc30uCiAgICAgKgogICAgICogKiBFYWNoIGxvYWQgcGF0aCBpbiB7QHNlZSAkaW1wb3J0UGF0aHN9LiBOb3RlIHRoYXQgdGhpcyBpcyBhIHNob3J0aGFuZCBmb3IgYWRkaW5nCiAgICAgKiAgIHtAc2VlIEZpbGVzeXN0ZW1JbXBvcnRlcn1zIHRvIHtAc2VlICRpbXBvcnRlcnN9LgogICAgICoKICAgICAqIFRoZSAkdXJsIGluZGljYXRlcyB0aGUgbG9jYXRpb24gZnJvbSB3aGljaCAkc291cmNlIHdhcyBsb2FkZWQuIElmICRpbXBvcnRlciBpcwogICAgICogcGFzc2VkLCAkdXJsIG11c3QgYmUgcGFzc2VkIGFzIHdlbGwgYW5kIGAkaW1wb3J0ZXItPmxvYWQoJHVybClgIHNob3VsZAogICAgICogcmV0dXJuIGAkc291cmNlYC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NFeGNlcHRpb24gd2hlbiB0aGUgc291cmNlIGZhaWxzIHRvIGNvbXBpbGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGVTdHJpbmcoc3RyaW5nICRzb3VyY2UsIFVyaUludGVyZmFjZXxzdHJpbmd8bnVsbCAkdXJsID0gbnVsbCwgP0ltcG9ydGVyICRpbXBvcnRlciA9IG51bGwsIFN5bnRheCAkc3ludGF4ID0gU3ludGF4OjpTQ1NTKTogQ29tcGlsYXRpb25SZXN1bHQKICAgIHsKICAgICAgICAvLyBGb3JjZSBsb2FkaW5nIHRoZSBDc3NQYXJlbnROb2RlIGFuZCBDc3NWaXNpdG9yIGJlZm9yZSB1c2luZyB0aGUgQVNUIGNsYXNzZXMgYmVjYXVzZSBvZiBhIHdlaXJkIFBIUCBiZWhhdmlvci4KICAgICAgICBjbGFzc19leGlzdHMoQ3NzUGFyZW50Tm9kZTo6Y2xhc3MpOwogICAgICAgIGNsYXNzX2V4aXN0cyhDc3NWaXNpdG9yOjpjbGFzcyk7CgogICAgICAgICRsb2dnZXIgPSBuZXcgRGVwcmVjYXRpb25Qcm9jZXNzaW5nTG9nZ2VyKCR0aGlzLT5sb2dnZXIsICR0aGlzLT5zaWxlbmNlRGVwcmVjYXRpb25zLCAkdGhpcy0+ZmF0YWxEZXByZWNhdGlvbnMsICR0aGlzLT5mdXR1cmVEZXByZWNhdGlvbnMsICEkdGhpcy0+dmVyYm9zZSk7CiAgICAgICAgJGxvZ2dlci0+dmFsaWRhdGUoKTsKCiAgICAgICAgaWYgKFxpc19zdHJpbmcoJHVybCkpIHsKICAgICAgICAgICAgQHRyaWdnZXJfZXJyb3IoJ1Bhc3NpbmcgYSBwYXRoIHRvICJDb21waWxlcjo6Y29tcGlsZVN0cmluZyIgaXMgZGVwcmVjYXRlZC4gVXNlIGBDb21waWxlcjo6Y29tcGlsZUZpbGUiIG9yIHBhc3MgYSAiVXJpSW50ZXJmYWNlIiBpbnN0ZWFkLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKICAgICAgICAgICAgJHVybCA9IFBhdGg6OnRvVXJpKCR1cmwpOwogICAgICAgICAgICAkaW1wb3J0ZXIgPz89IG5ldyBGaWxlc3lzdGVtSW1wb3J0ZXIobnVsbCk7CiAgICAgICAgfQoKICAgICAgICAkaW1wb3J0Q2FjaGUgPSAkdGhpcy0+Y3JlYXRlSW1wb3J0Q2FjaGUoJGxvZ2dlcik7CiAgICAgICAgJHN0eWxlc2hlZXQgPSBTdHlsZXNoZWV0OjpwYXJzZSgkc291cmNlLCAkc3ludGF4LCAkbG9nZ2VyLCAkdXJsKTsKCiAgICAgICAgJGltcG9ydGVyID8/PSAkdXJsID09PSBudWxsID8gbmV3IE5vT3BJbXBvcnRlcigpIDogbmV3IEZpbGVzeXN0ZW1JbXBvcnRlcihudWxsKTsKCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5jb21waWxlU3R5bGVzaGVldCgkc3R5bGVzaGVldCwgJGltcG9ydENhY2hlLCAkbG9nZ2VyLCAkaW1wb3J0ZXIpOwoKICAgICAgICAkbG9nZ2VyLT5zdW1tYXJpemUoKTsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVJbXBvcnRDYWNoZShMb2dnZXJJbnRlcmZhY2UgJGxvZ2dlcik6IEltcG9ydENhY2hlCiAgICB7CiAgICAgICAgJGltcG9ydGVycyA9ICR0aGlzLT5pbXBvcnRlcnM7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5pbXBvcnRQYXRocyBhcyAkaW1wb3J0UGF0aCkgewogICAgICAgICAgICBpZiAoXGlzX3N0cmluZygkaW1wb3J0UGF0aCkpIHsKICAgICAgICAgICAgICAgICRpbXBvcnRlcnNbXSA9IG5ldyBGaWxlc3lzdGVtSW1wb3J0ZXIoJGltcG9ydFBhdGgpOwogICAgICAgICAgICB9IGVsc2VpZiAoaXNfY2FsbGFibGUoJGltcG9ydFBhdGgpKSB7CiAgICAgICAgICAgICAgICAkaW1wb3J0ZXJzW10gPSBuZXcgTGVnYWN5Q2FsbGJhY2tJbXBvcnRlcigkaW1wb3J0UGF0aCguLi4pKTsKICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVwb3J0IGRlcHJlY2F0aW9uCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgSW1wb3J0Q2FjaGUoJGltcG9ydGVycywgJGxvZ2dlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFNhc3NFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb21waWxlU3R5bGVzaGVldChTdHlsZXNoZWV0ICRzdHlsZXNoZWV0LCBJbXBvcnRDYWNoZSAkaW1wb3J0Q2FjaGUsIExvZ2dlckludGVyZmFjZSAkbG9nZ2VyLCBJbXBvcnRlciAkaW1wb3J0ZXIpOiBDb21waWxhdGlvblJlc3VsdAogICAgewogICAgICAgICR3YW50c1NvdXJjZU1hcCA9ICR0aGlzLT5zb3VyY2VNYXAgIT09IHNlbGY6OlNPVVJDRV9NQVBfTk9ORTsKCiAgICAgICAgJGZ1bmN0aW9ucyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT51c2VyRnVuY3Rpb25zIGFzICRuYW1lID0+ICR1c2VyRnVuY3Rpb24pIHsKICAgICAgICAgICAgJHJlZiA9IG5ldyBcUmVmbGVjdGlvbkZ1bmN0aW9uKCR1c2VyRnVuY3Rpb25bMF0oLi4uKSk7CiAgICAgICAgICAgICRzaWduYXR1cmUgPSBpbXBsb2RlKCcsICcsIGFycmF5X21hcChmbiAoc3RyaW5nICRhcmcpID0+ICckJyAuICRhcmcsICR1c2VyRnVuY3Rpb25bMV0pKTsKCiAgICAgICAgICAgIGlmICgkcmVmLT5oYXNSZXR1cm5UeXBlKCkgJiYgJHJlZi0+Z2V0UmV0dXJuVHlwZSgpIGluc3RhbmNlb2YgXFJlZmxlY3Rpb25OYW1lZFR5cGUgJiYgJHJlZi0+Z2V0UmV0dXJuVHlwZSgpLT5nZXROYW1lKCkgPT09IFZhbHVlOjpjbGFzcykgewogICAgICAgICAgICAgICAgJGNhbGxiYWNrID0gJHVzZXJGdW5jdGlvblswXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRsZWdhY3lDYWxsYmFjayA9ICR1c2VyRnVuY3Rpb25bMF07CiAgICAgICAgICAgICAgICAkY2FsbGJhY2sgPSBmdW5jdGlvbiAoYXJyYXkgJGFyZ3VtZW50cykgdXNlICgkbGVnYWN5Q2FsbGJhY2spOiBWYWx1ZSB7CiAgICAgICAgICAgICAgICAgICAgJGFyZ3MgPSBbXTsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ3VtZW50cyBhcyAkYXJndW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFyZ3NbXSA9ICR0aGlzLT52YWx1ZVRvTGVnYWN5VmFsdWUoJGFyZ3VtZW50KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkbGVnYWN5Q2FsbGJhY2soJGFyZ3MpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCBpbnN0YW5jZW9mIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5sZWdhY3lWYWx1ZVRvVmFsdWUoJHJlc3VsdCk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRmdW5jdGlvbnNbXSA9IEJ1aWx0SW5DYWxsYWJsZTo6ZnVuY3Rpb24oJG5hbWUsICRzaWduYXR1cmUsICRjYWxsYmFjayk7CiAgICAgICAgfQoKICAgICAgICAkaW5pdGlhbFZhcmlhYmxlcyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5yZWdpc3RlcmVkVmFycyBhcyAkdmFyaWFibGVOYW1lID0+ICR2YXJpYWJsZSkgewogICAgICAgICAgICBpZiAoJHZhcmlhYmxlTmFtZVswXSA9PT0gJyQnKSB7CiAgICAgICAgICAgICAgICAkdmFyaWFibGVOYW1lID0gc3Vic3RyKCR2YXJpYWJsZU5hbWUsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR2YXJpYWJsZU5hbWUgPSBzdHJfcmVwbGFjZSgnXycsICctJywgJHZhcmlhYmxlTmFtZSk7CiAgICAgICAgICAgICRpbml0aWFsVmFyaWFibGVzWyR2YXJpYWJsZU5hbWVdID0gJHZhcmlhYmxlOwogICAgICAgIH0KCiAgICAgICAgJGV2YWx1YXRlUmVzdWx0ID0gKG5ldyBFdmFsdWF0ZVZpc2l0b3IoJGltcG9ydENhY2hlLCAkZnVuY3Rpb25zLCAkbG9nZ2VyLCAkdGhpcy0+cXVpZXREZXBzLCBzb3VyY2VNYXA6ICR3YW50c1NvdXJjZU1hcCkpLT5ydW4oJGltcG9ydGVyLCAkc3R5bGVzaGVldCwgJGluaXRpYWxWYXJpYWJsZXMpOwoKICAgICAgICAkc2VyaWFsaXplUmVzdWx0ID0gU2VyaWFsaXplcjo6c2VyaWFsaXplKCRldmFsdWF0ZVJlc3VsdC0+Z2V0U3R5bGVzaGVldCgpLCBzdHlsZTogJHRoaXMtPm91dHB1dFN0eWxlLCBzb3VyY2VNYXA6ICR3YW50c1NvdXJjZU1hcCwgY2hhcnNldDogJHRoaXMtPmNoYXJzZXQsIGxvZ2dlcjogJGxvZ2dlcik7CgogICAgICAgICRjc3MgPSAkc2VyaWFsaXplUmVzdWx0LT5jc3M7CiAgICAgICAgJHNvdXJjZU1hcCA9IG51bGw7CgogICAgICAgIGlmICgkc2VyaWFsaXplUmVzdWx0LT5tYXBwaW5nICE9PSBudWxsKSB7CiAgICAgICAgICAgICRtYXBwaW5nID0gJHNlcmlhbGl6ZVJlc3VsdC0+bWFwcGluZzsKCiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c291cmNlTWFwT3B0aW9uc1snc291cmNlTWFwQmFzZXBhdGgnXSkgfHwgaXNzZXQoJHRoaXMtPnNvdXJjZU1hcE9wdGlvbnNbJ3NvdXJjZU1hcFJvb3RwYXRoJ10pKSB7CiAgICAgICAgICAgICAgICAkbWFwcGluZyA9ICRtYXBwaW5nLT5tYXBVcmxzKGZ1bmN0aW9uIChzdHJpbmcgJHVybCkgewogICAgICAgICAgICAgICAgICAgICR1cmkgPSBVcmk6Om5ldygkdXJsKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR1cmktPmdldFNjaGVtZSgpICE9PSBudWxsICYmICR1cmktPmdldFNjaGVtZSgpICE9PSAnZmlsZScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR1cmktPnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkcGF0aCA9IFBhdGg6OmZyb21VcmkoJHVyaSk7CgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c291cmNlTWFwT3B0aW9uc1snc291cmNlTWFwQmFzZXBhdGgnXSkgJiYgJHRoaXMtPnNvdXJjZU1hcE9wdGlvbnNbJ3NvdXJjZU1hcEJhc2VwYXRoJ10gIT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoID0gUGF0aDo6cmVsYXRpdmUoJHBhdGgsICR0aGlzLT5zb3VyY2VNYXBPcHRpb25zWydzb3VyY2VNYXBCYXNlcGF0aCddKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXRoOjpub3JtYWxpemUoUGF0aDo6am9pbigkdGhpcy0+c291cmNlTWFwT3B0aW9uc1snc291cmNlTWFwUm9vdHBhdGgnXSA/PyAnJywgJHBhdGgpKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNvdXJjZU1hcE9wdGlvbnNbJ3NvdXJjZU1hcEZpbGVuYW1lJ10pKSB7CiAgICAgICAgICAgICAgICAkbWFwcGluZy0+dGFyZ2V0VXJsID0gJHRoaXMtPnNvdXJjZU1hcE9wdGlvbnNbJ3NvdXJjZU1hcEZpbGVuYW1lJ107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c291cmNlTWFwT3B0aW9uc1snc291cmNlUm9vdCddKSkgewogICAgICAgICAgICAgICAgJG1hcHBpbmctPnNvdXJjZVJvb3QgPSAkdGhpcy0+c291cmNlTWFwT3B0aW9uc1snc291cmNlUm9vdCddOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc291cmNlTWFwID0ganNvbl9lbmNvZGUoJG1hcHBpbmctPnRvSnNvbigkdGhpcy0+c291cmNlTWFwT3B0aW9uc1snb3V0cHV0U291cmNlRmlsZXMnXSA/PyBmYWxzZSksIFxKU09OX1RIUk9XX09OX0VSUk9SKTsKCiAgICAgICAgICAgICRzb3VyY2VNYXBVcmwgPSBudWxsOwoKICAgICAgICAgICAgc3dpdGNoICgkdGhpcy0+c291cmNlTWFwKSB7CiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6OlNPVVJDRV9NQVBfSU5MSU5FOgogICAgICAgICAgICAgICAgICAgICRzb3VyY2VNYXBVcmwgPSAnZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgsJyAuIFV0aWw6OmVuY29kZVVSSUNvbXBvbmVudCgkc291cmNlTWFwKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6OlNPVVJDRV9NQVBfRklMRToKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNvdXJjZU1hcE9wdGlvbnNbJ3NvdXJjZU1hcFVSTCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc291cmNlTWFwVXJsID0gJHRoaXMtPnNvdXJjZU1hcE9wdGlvbnNbJ3NvdXJjZU1hcFVSTCddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRzb3VyY2VNYXBVcmwgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRlc2NhcGVkVXJsID0gc3RyX3JlcGxhY2UoJyovJywgJyUyQS8nLCAkc291cmNlTWFwVXJsKTsKCiAgICAgICAgICAgICAgICAkY3NzIC49ICgkdGhpcy0+b3V0cHV0U3R5bGUgPT09IE91dHB1dFN0eWxlOjpDT01QUkVTU0VEID8gJycgOiAiXG5cbiIpIC4gIi8qIyBzb3VyY2VNYXBwaW5nVVJMPSRlc2NhcGVkVXJsICovIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxhdGlvblJlc3VsdCgkY3NzLCAkc291cmNlTWFwLCAkZXZhbHVhdGVSZXN1bHQtPmdldExvYWRlZFVybHMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIFNhc3MgdmFsdWUgdG8gaXRzIGxlZ2FjeSByZXByZXNlbnRhdGlvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fE51bWJlcgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZhbHVlVG9MZWdhY3lWYWx1ZShWYWx1ZSAkdmFsdWUpCiAgICB7CiAgICAgICAgJHZpc2l0b3IgPSBuZXcgTGVnYWN5VmFsdWVWaXNpdG9yKCk7CgogICAgICAgIHJldHVybiAkdmFsdWUtPmFjY2VwdCgkdmlzaXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIGxlZ2FjeSBTYXNzIHZhbHVlIHRvIGl0cyBtb2Rlcm4gcmVwcmVzZW50YXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkbGVnYWN5VmFsdWUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsZWdhY3lWYWx1ZVRvVmFsdWUoJGxlZ2FjeVZhbHVlKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoJGxlZ2FjeVZhbHVlIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjp3aXRoVW5pdHMoJGxlZ2FjeVZhbHVlLT5nZXREaW1lbnNpb24oKSwgJGxlZ2FjeVZhbHVlLT5nZXROdW1lcmF0b3JVbml0cygpLCAkbGVnYWN5VmFsdWUtPmdldERlbm9taW5hdG9yVW5pdHMoKSk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRsZWdhY3lWYWx1ZVswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfS0VZV09SRDoKICAgICAgICAgICAgICAgIGlmICgkbGVnYWN5VmFsdWUgPT09IHNlbGY6OiR0cnVlIHx8ICRsZWdhY3lWYWx1ZSA9PT0gc2VsZjo6JGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoJGxlZ2FjeVZhbHVlID09PSBzZWxmOjokdHJ1ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIHZhbHVlIHVzaW5nIHRoZSAia2V5d29yZCIgdHlwZS4gT25seSBib29sZWFuIHZhbHVlcyBzaG91bGQgdXNlIGl0IGFzIHRoZWlyIHJlcHJlc2VudGF0aW9uLicpOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0NPTE9SOgogICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NDb2xvcjo6cmdiKCRsZWdhY3lWYWx1ZVsxXSwgJGxlZ2FjeVZhbHVlWzJdLCAkbGVnYWN5VmFsdWVbM10sICRsZWdhY3lWYWx1ZVs0XSA/PyAxLjApOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc1N0cmluZygkdGhpcy0+Z2V0U3RyaW5nVGV4dCgkbGVnYWN5VmFsdWUpLCAkbGVnYWN5VmFsdWVbMV0gIT09ICcnKTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9MSVNUOgogICAgICAgICAgICAgICAgJGl0ZW1zID0gW107CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbGVnYWN5VmFsdWVbMl0gYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbXNbXSA9ICR0aGlzLT5sZWdhY3lWYWx1ZVRvVmFsdWUoJGl0ZW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHNlcGFyYXRvciA9IG1hdGNoICgkbGVnYWN5VmFsdWVbMV0pIHsKICAgICAgICAgICAgICAgICAgICAnLCcgPT4gTGlzdFNlcGFyYXRvcjo6Q09NTUEsCiAgICAgICAgICAgICAgICAgICAgJyAnID0+IExpc3RTZXBhcmF0b3I6OlNQQUNFLAogICAgICAgICAgICAgICAgICAgICcvJyA9PiBMaXN0U2VwYXJhdG9yOjpTTEFTSCwKICAgICAgICAgICAgICAgICAgICAnJyA9PiBMaXN0U2VwYXJhdG9yOjpVTkRFQ0lERUQsCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9PiB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKFxzcHJpbnRmKCdVbnN1cHBvcnRlZCBsaXN0IHNlcGFyYXRvciAiJXMiLicsICRsZWdhY3lWYWx1ZVsxXSkpCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbGVnYWN5VmFsdWVbM10pICYmIFxpc19hcnJheSgkbGVnYWN5VmFsdWVbM10pKSB7CiAgICAgICAgICAgICAgICAgICAgJGtleXdvcmRzID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxlZ2FjeVZhbHVlWzNdIGFzICRuYW1lID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChcaXNfc3RyaW5nKCRuYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRrZXl3b3Jkc1skbmFtZV0gPSAkdGhpcy0+bGVnYWN5VmFsdWVUb1ZhbHVlKCRpdGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzQXJndW1lbnRMaXN0KCRpdGVtcywgJGtleXdvcmRzLCAkc2VwYXJhdG9yKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaGFzQnJhY2tldHMgPSAoJGxlZ2FjeVZhbHVlWydlbmNsb3NpbmcnXSA/PyBudWxsKSA9PT0gJ2JyYWNrZXQnOwoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc0xpc3QoJGl0ZW1zLCAkc2VwYXJhdG9yLCAkaGFzQnJhY2tldHMpOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX01BUDoKICAgICAgICAgICAgICAgICRtYXAgPSBuZXcgTWFwKCk7CiAgICAgICAgICAgICAgICAka2V5cyA9ICRsZWdhY3lWYWx1ZVsxXTsKICAgICAgICAgICAgICAgICR2YWx1ZXMgPSAkbGVnYWN5VmFsdWVbMl07CgogICAgICAgICAgICAgICAgZm9yICgkaSA9IDAsICRzID0gXGNvdW50KCRrZXlzKTsgJGkgPCAkczsgJGkrKykgewogICAgICAgICAgICAgICAgICAgICRtYXAtPnB1dCgkdGhpcy0+bGVnYWN5VmFsdWVUb1ZhbHVlKCRrZXlzWyRpXSksICR0aGlzLT5sZWdhY3lWYWx1ZVRvVmFsdWUoJHZhbHVlc1skaV0pKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gU2Fzc01hcDo6Y3JlYXRlKCRtYXApOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX05VTEw6CiAgICAgICAgICAgICAgICByZXR1cm4gU2Fzc051bGw6OmNyZWF0ZSgpOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcVW5leHBlY3RlZFZhbHVlRXhjZXB0aW9uKHNwcmludGYoJyJVbnN1cHBvcnRlZCB0eXBlICIlcyIgZm9yIHRoZSB2YWx1ZSBjb252ZXJzaW9uLicsICRsZWdhY3lWYWx1ZVswXSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIERldGVjdHMgd2hldGhlciB0aGUgaW1wb3J0IGlzIGEgQ1NTIGltcG9ydC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0Nzc0ltcG9ydChzdHJpbmcgJHVybCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gMSA9PT0gcHJlZ19tYXRjaCgnflwuY3NzJHxeaHR0cHM/Oi8vfF4vL34nLCAkdXJsKTsKICAgIH0KCiAgICAvKioKICAgICAqIElzIHRydXRoeT8KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNUcnV0aHkoJHZhbHVlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdmFsdWUgIT09IHNlbGY6OiRmYWxzZSAmJiAkdmFsdWUgIT09IHNlbGY6OiRudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQ2FzdCB0byBTYXNzIGJvb2xlYW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQm9vbChib29sICR0aGluZyk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGluZyA/IHNlbGY6OiR0cnVlIDogc2VsZjo6JGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0cyB0aGUgdGV4dCBvZiBhIFNhc3Mgc3RyaW5nCiAgICAgKgogICAgICogQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhbnl0aGluZyBlbHNlIHRoYW4gYSBTYXNzU3RyaW5nIGlzIHVuc3VwcG9ydGVkLiBVc2Uge0BzZWUgYXNzZXJ0U3RyaW5nfSBmaXJzdAogICAgICogdG8gZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGlzIGluZGVlZCBhIHN0cmluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0cmluZ1RleHQoYXJyYXkgJHZhbHVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZVswXSAhPT0gVHlwZTo6VF9TVFJJTkcpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBhcmd1bWVudCBpcyBub3QgYSBzYXNzIHN0cmluZy4gRGlkIHlvdSBmb3Jnb3QgdG8gdXNlICJhc3NlcnRTdHJpbmciPycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSBzdHJpbmcgY29udGVudAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbXBpbGVTdHJpbmdDb250ZW50KGFycmF5ICRzdHJpbmcpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcGFydHMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHN0cmluZ1syXSBhcyAkcGFydCkgewogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRwYXJ0KSB8fCAkcGFydCBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRwYXJ0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHBhcnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBpbXBsb2RlKCRwYXJ0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdmFsdWUgaXMgYSBzdHJpbmcKICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBkZWFscyB3aXRoIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIHZhbHVlCiAgICAgKiByZXByZXNlbnRhdGlvbiB3aGVyZSB1bnF1b3RlZCBzdHJpbmdzIGNhbiBzb21ldGltZXMgYmUgc3RvcmVkIHVuZGVyCiAgICAgKiBvdGhlciB0eXBlcy4KICAgICAqIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbHdheXMgdXNpbmcgdGhlIFRfU1RSSU5HIHR5cGUuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkdmFsdWUKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydFN0cmluZygkdmFsdWUsID9zdHJpbmcgJHZhck5hbWUgPSBudWxsKTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlWzBdID09PSBUeXBlOjpUX1NUUklORykgewogICAgICAgICAgICBhc3NlcnQoXGlzX2FycmF5KCR2YWx1ZSkpOwoKICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlKTsKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHZhbHVlIGlzIG5vdCBhIHN0cmluZy4iLCAkdmFyTmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdmFsdWUgaXMgYSBtYXAKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0TWFwKCR2YWx1ZSwgP3N0cmluZyAkdmFyTmFtZSA9IG51bGwpOiBhcnJheQogICAgewogICAgICAgICRtYXAgPSAkdGhpcy0+dHJ5TWFwKCR2YWx1ZSk7CgogICAgICAgIGlmICgkbWFwID09PSBudWxsKSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlKTsKCiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdmFsdWUgaXMgbm90IGEgbWFwLiIsICR2YXJOYW1lKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbWFwOwogICAgfQoKICAgIC8qKgogICAgICogVHJpZXMgdG8gY29udmVydCBhbiBpdGVtIHRvIGEgU2FzcyBtYXAKICAgICAqCiAgICAgKiBAcGFyYW0gTnVtYmVyfGFycmF5ICRpdGVtCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJ5TWFwKCRpdGVtKTogP2FycmF5CiAgICB7CiAgICAgICAgaWYgKCRpdGVtIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpdGVtWzBdID09PSBUeXBlOjpUX01BUCkgewogICAgICAgICAgICByZXR1cm4gJGl0ZW07CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRpdGVtWzBdID09PSBUeXBlOjpUX0xJU1QgJiYKICAgICAgICAgICAgJGl0ZW1bMl0gPT09IFtdCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokZW1wdHlNYXA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgdGhlIGtleXdvcmRzIG9mIGFuIGFyZ3VtZW50IGxpc3QuCiAgICAgKgogICAgICogS2V5cyBpbiB0aGUgcmV0dXJuZWQgYXJyYXkgYXJlIG5vcm1hbGl6ZWQgbmFtZXMgKHVuZGVyc2NvcmVzIGFyZSByZXBsYWNlZCB3aXRoIGRhc2hlcykKICAgICAqIHdpdGhvdXQgdGhlIGxlYWRpbmcgYCRgLgogICAgICogQ2FsbGluZyB0aGlzIGhlbHBlciB3aXRoIGFueXRoaW5nIHRoYXQgYW4gYXJndW1lbnQgbGlzdCByZWNlaXZlZCBmb3IgYSByZXN0IGFyZ3VtZW50CiAgICAgKiBvZiB0aGUgZnVuY3Rpb24gYXJndW1lbnQgZGVjbGFyYXRpb24gaXMgbm90IHN1cHBvcnRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBhcnJheXxOdW1iZXI+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcmd1bWVudExpc3RLZXl3b3JkcygkdmFsdWUpOiBhcnJheQogICAgewogICAgICAgIGlmICgkdmFsdWVbMF0gIT09IFR5cGU6OlRfTElTVCB8fCAhaXNzZXQoJHZhbHVlWzNdKSB8fCAhXGlzX2FycmF5KCR2YWx1ZVszXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBhcmd1bWVudCBpcyBub3QgYSBzYXNzIGFyZ3VtZW50IGxpc3QuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlWzNdOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHZhbHVlIGlzIGEgY29sb3IKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0Q29sb3IoJHZhbHVlLCA/c3RyaW5nICR2YXJOYW1lID0gbnVsbCk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9DT0xPUikgewogICAgICAgICAgICBhc3NlcnQoXGlzX2FycmF5KCR2YWx1ZSkpOwoKICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlKTsKCiAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoIiR2YWx1ZSBpcyBub3QgYSBjb2xvci4iLCAkdmFyTmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdmFsdWUgaXMgYSBudW1iZXIKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0TnVtYmVyKCR2YWx1ZSwgP3N0cmluZyAkdmFyTmFtZSA9IG51bGwpOiBOdW1iZXIKICAgIHsKICAgICAgICBpZiAoISR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdmFsdWUgaXMgbm90IGEgbnVtYmVyLiIsICR2YXJOYW1lKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdmFsdWUgaXMgYSBpbnRlZ2VyCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkdmFsdWUKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydEludGVnZXIoJHZhbHVlLCA/c3RyaW5nICR2YXJOYW1lID0gbnVsbCk6IGludAogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5hc3NlcnROdW1iZXIoJHZhbHVlLCAkdmFyTmFtZSktPmdldERpbWVuc2lvbigpOwogICAgICAgIGlmIChyb3VuZCgkdmFsdWUgLSBcaW50dmFsKCR2YWx1ZSksIE51bWJlcjo6UFJFQ0lTSU9OKSA+IDApIHsKICAgICAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoIiR2YWx1ZSBpcyBub3QgYW4gaW50ZWdlci4iLCAkdmFyTmFtZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW50dmFsKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlcyBhIHByaW1pdGl2ZSB2YWx1ZSBpbnRvIGEgc3RyaW5nIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCiAgICAgKgogICAgICogVmFsdWVzIGluIHNjc3NwaHAgYXJlIHR5cGVkIGJ5IGJlaW5nIHdyYXBwZWQgaW4gYXJyYXlzLCB0aGVpciBmb3JtYXQgaXMKICAgICAqIHR5cGljYWxseToKICAgICAqCiAgICAgKiAgICAgYXJyYXkodHlwZSwgY29udGVudHMgWywgYWRkaXRpb25hbF9jb250ZW50c10qKQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlVmFsdWUoJHZhbHVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpICR0aGlzLT5sZWdhY3lWYWx1ZVRvVmFsdWUoJHZhbHVlKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Compiler/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Compiler/LegacyValueVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxOb2RlXE51bWJlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcTnVtYmVyVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQXJndW1lbnRMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NCb29sZWFuOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NDYWxjdWxhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQ29sb3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0Z1bmN0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NNYXA7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc01peGluOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKCi8qKgogKiBDb252ZXJ0cyB2YWx1ZXMgdG8gdGhlIGxlZ2FjeSByZXByZXNlbnRhdGlvbi4KICoKICogQGludGVybmFsCiAqIEB0ZW1wbGF0ZS1pbXBsZW1lbnRzIFZhbHVlVmlzaXRvcjxhcnJheXxOdW1iZXI+CiAqLwpmaW5hbCBjbGFzcyBMZWdhY3lWYWx1ZVZpc2l0b3IgaW1wbGVtZW50cyBWYWx1ZVZpc2l0b3IKewogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Qm9vbGVhbihTYXNzQm9vbGVhbiAkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZS0+Z2V0VmFsdWUoKSA/IENvbXBpbGVyOjokdHJ1ZSA6IENvbXBpbGVyOjokZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q2FsY3VsYXRpb24oU2Fzc0NhbGN1bGF0aW9uICR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAnJywgJHZhbHVlLT50b0Nzc1N0cmluZygpXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb2xvcihTYXNzQ29sb3IgJHZhbHVlKQogICAgewogICAgICAgIGlmIChOdW1iZXJVdGlsOjpmdXp6eUVxdWFscygkdmFsdWUtPmdldEFscGhhKCksIDEpKSB7CiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9DT0xPUiwgJHZhbHVlLT5nZXRSZWQoKSwgJHZhbHVlLT5nZXRHcmVlbigpLCAkdmFsdWUtPmdldEJsdWUoKV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfQ09MT1IsICR2YWx1ZS0+Z2V0UmVkKCksICR2YWx1ZS0+Z2V0R3JlZW4oKSwgJHZhbHVlLT5nZXRCbHVlKCksICR2YWx1ZS0+Z2V0QWxwaGEoKV07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0RnVuY3Rpb24oU2Fzc0Z1bmN0aW9uICR2YWx1ZSkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignRnVuY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsZWdhY3kgdmFsdWUgQVBJLiBNaWdyYXRlIHlvdXIgY3VzdG9tIGZ1bmN0aW9uIHRvIHRoZSBuZXcgQVBJIHRvIGFjY2VwdCBtaXhpbnMgYXMgYXJndW1lbnRzLicpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1peGluKFNhc3NNaXhpbiAkdmFsdWUpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ01peGlucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgbGVnYWN5IHZhbHVlIEFQSS4gTWlncmF0ZSB5b3VyIGN1c3RvbSBmdW5jdGlvbiB0byB0aGUgbmV3IEFQSSB0byBhY2NlcHQgbWl4aW5zIGFzIGFyZ3VtZW50cy4nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRMaXN0KFNhc3NMaXN0ICR2YWx1ZSkKICAgIHsKICAgICAgICAkaXRlbXMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkdmFsdWUtPmFzTGlzdCgpIGFzICRpdGVtKSB7CiAgICAgICAgICAgICRpdGVtc1tdID0gJGl0ZW0tPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgfQogICAgICAgICRsaXN0ID0gW1R5cGU6OlRfTElTVCwgJHZhbHVlLT5nZXRTZXBhcmF0b3IoKS0+Z2V0U2VwYXJhdG9yKCkgPz8gJycsICRpdGVtc107CiAgICAgICAgaWYgKCR2YWx1ZS0+aGFzQnJhY2tldHMoKSkgewogICAgICAgICAgICAkbGlzdFsnZW5jbG9zaW5nJ10gPSAnYnJhY2tldCc7CiAgICAgICAgfQogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBTYXNzQXJndW1lbnRMaXN0KSB7CiAgICAgICAgICAgICRrZXl3b3JkcyA9IFtdOwogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUtPmdldEtleXdvcmRzKCkgYXMgJGtleXdvcmROYW1lID0+ICRrZXl3b3JkVmFsdWUpIHsKICAgICAgICAgICAgICAgICRrZXl3b3Jkc1ska2V5d29yZE5hbWVdID0gJGtleXdvcmRWYWx1ZS0+YWNjZXB0KCR0aGlzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbGlzdFszXSA9ICRrZXl3b3JkczsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGlzdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNYXAoU2Fzc01hcCAkdmFsdWUpCiAgICB7CiAgICAgICAgJGtleXMgPSBbXTsKICAgICAgICAkdmFsdWVzID0gW107CgogICAgICAgIGZvcmVhY2ggKCR2YWx1ZS0+Z2V0Q29udGVudHMoKSBhcyAka2V5ID0+ICRpdGVtKSB7CiAgICAgICAgICAgICRrZXlzW10gPSAka2V5LT5hY2NlcHQoJHRoaXMpOwogICAgICAgICAgICAkdmFsdWVzW10gPSAkaXRlbS0+YWNjZXB0KCR0aGlzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9NQVAsICRrZXlzLCAkdmFsdWVzXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXROdWxsKCkKICAgIHsKICAgICAgICByZXR1cm4gQ29tcGlsZXI6OiRudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE51bWJlcihTYXNzTnVtYmVyICR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigkdmFsdWUtPmdldFZhbHVlKCksICR2YWx1ZS0+Z2V0TnVtZXJhdG9yVW5pdHMoKSwgJHZhbHVlLT5nZXREZW5vbWluYXRvclVuaXRzKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFN0cmluZyhTYXNzU3RyaW5nICR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAkdmFsdWUtPmhhc1F1b3RlcygpID8gJyInIDogJycsIFskdmFsdWUtPmdldFRleHQoKV1dOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Deprecation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIEEgZGVwcmVjYXRlZCBmZWF0dXJlIGluIHRoZSBsYW5ndWFnZS4KICoKICogQ29kZSBjb25zdW1pbmcgdGhpcyBlbnVtIG91dHNpZGUgU2Nzc3BocCBtdXN0IG5vdCByZWx5IG9uIGV4aGF1c3RpdmVuZXNzIGNoZWNrcy4gTmV3IHZhbHVlcyB3aWxsIGJlIGFkZGVkCiAqIGluIHRoaXMgZW51bSBpbiBtaW5vciB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSB3aXRob3V0IGNvbnNpZGVyaW5nIHRoYXQgYXMgYSBCQyBicmVhay4KICovCmVudW0gRGVwcmVjYXRpb246IHN0cmluZwp7CiAgICAvKioKICAgICAqIERlcHJlY2F0aW9uIGZvciBwYXNzaW5nIGEgc3RyaW5nIGRpcmVjdGx5IHRvIG1ldGEuY2FsbCgpLgogICAgICovCiAgICBjYXNlIGNhbGxTdHJpbmcgPSAnY2FsbC1zdHJpbmcnOwoKICAgIC8qKgogICAgICogRGVwcmVjYXRpb24gZm9yIEBlbHNlaWYuCiAgICAgKi8KICAgIGNhc2UgZWxzZWlmID0gJ2Vsc2VpZic7CgogICAgLyoqCiAgICAgKiBEZXByZWNhdGlvbiBmb3IgQC1tb3otZG9jdW1lbnQuCiAgICAgKi8KICAgIGNhc2UgbW96RG9jdW1lbnQgPSAnbW96LWRvY3VtZW50JzsKCiAgICAvKioKICAgICAqIERlcHJlY2F0aW9uIGZvciBkZWNsYXJpbmcgbmV3IHZhcmlhYmxlcyB3aXRoICFnbG9iYWwuCiAgICAgKi8KICAgIGNhc2UgbmV3R2xvYmFsID0gJ25ldy1nbG9iYWwnOwoKICAgIC8qKgogICAgICogRGVwcmVjYXRpb24gZm9yIC8gb3BlcmF0b3IgZm9yIGRpdmlzaW9uLgogICAgICovCiAgICBjYXNlIHNsYXNoRGl2ID0gJ3NsYXNoLWRpdic7CgogICAgLyoqCiAgICAgKiBEZXByZWNhdGlvbiBmb3IgbGVhZGluZywgdHJhaWxpbmcsIGFuZCByZXBlYXRlZCBjb21iaW5hdG9ycy4KICAgICAqLwogICAgY2FzZSBib2d1c0NvbWJpbmF0b3JzID0gJ2JvZ3VzLWNvbWJpbmF0b3JzJzsKCiAgICAvKioKICAgICAqIERlcHJlY2F0aW9uIGZvciBhbWJpZ3VvdXMgKyBhbmQgLSBvcGVyYXRvcnMuCiAgICAgKi8KICAgIGNhc2Ugc3RyaWN0VW5hcnkgPSAnc3RyaWN0LXVuYXJ5JzsKCiAgICAvKioKICAgICAqIERlcHJlY2F0aW9uIGZvciBwYXNzaW5nIGludmFsaWQgdW5pdHMgdG8gYnVpbHQtaW4gZnVuY3Rpb25zLgogICAgICovCiAgICBjYXNlIGZ1bmN0aW9uVW5pdHMgPSAnZnVuY3Rpb24tdW5pdHMnOwoKICAgIC8qKgogICAgICogRGVwcmVjYXRpb24gZm9yIHVzaW5nICFkZWZhdWx0IG9yICFnbG9iYWwgbXVsdGlwbGUgdGltZXMgZm9yIG9uZSB2YXJpYWJsZS4KICAgICAqLwogICAgY2FzZSBkdXBsaWNhdGVWYXJGbGFncyA9ICdkdXBsaWNhdGUtdmFyLWZsYWdzJzsKCiAgICAvKioKICAgICAqIERlcHJlY2F0aW9uIGZvciBwYXNzaW5nIHBlcmNlbnRhZ2VzIHRvIHRoZSBTYXNzIGFicygpIGZ1bmN0aW9uLgogICAgICovCiAgICBjYXNlIGFic1BlcmNlbnQgPSAnYWJzLXBlcmNlbnQnOwoKICAgIC8qKgogICAgICogRGVwcmVjYXRpb24gZm9yIGZ1bmN0aW9uIGFuZCBtaXhpbiBuYW1lcyBiZWdpbm5pbmcgd2l0aCAtLS4KICAgICAqLwogICAgY2FzZSBjc3NGdW5jdGlvbk1peGluID0gJ2Nzcy1mdW5jdGlvbi1taXhpbic7CgogICAgLyoqCiAgICAgKiBEZXByZWNhdGlvbiBmb3IgZGVjbGFyYXRpb25zIGFmdGVyIG9yIGJldHdlZW4gbmVzdGVkIHJ1bGVzLgogICAgICovCiAgICBjYXNlIG1peGVkRGVjbHMgPSAnbWl4ZWQtZGVjbHMnOwoKICAgIC8qKgogICAgICogRGVwcmVjYXRpb24gZm9yIG1ldGEuZmVhdHVyZS1leGlzdHMuCiAgICAgKi8KICAgIGNhc2UgZmVhdHVyZUV4aXN0cyA9ICdmZWF0dXJlLWV4aXN0cyc7CgogICAgLyoqCiAgICAgKiBVc2VkIGZvciBkZXByZWNhdGlvbnMgY29taW5nIGZyb20gdXNlci1hdXRob3JlZCBjb2RlLgogICAgICovCiAgICBjYXNlIHVzZXJBdXRob3JlZCA9ICd1c2VyLWF1dGhvcmVkJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGVzY3JpcHRpb24oKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMpIHsKICAgICAgICAgICAgc2VsZjo6Y2FsbFN0cmluZyA9PiAnUGFzc2luZyBhIHN0cmluZyBkaXJlY3RseSB0byBtZXRhLmNhbGwoKS4nLAogICAgICAgICAgICBzZWxmOjplbHNlaWYgPT4gJ0BlbHNlaWYuJywKICAgICAgICAgICAgc2VsZjo6bW96RG9jdW1lbnQgPT4gJ0AtbW96LWRvY3VtZW50LicsCiAgICAgICAgICAgIHNlbGY6Om5ld0dsb2JhbCA9PiAnRGVjbGFyaW5nIG5ldyB2YXJpYWJsZXMgd2l0aCAhZ2xvYmFsLicsCiAgICAgICAgICAgIHNlbGY6OnNsYXNoRGl2ID0+ICcvIG9wZXJhdG9yIGZvciBkaXZpc2lvbi4nLAogICAgICAgICAgICBzZWxmOjpib2d1c0NvbWJpbmF0b3JzID0+ICdMZWFkaW5nLCB0cmFpbGluZywgYW5kIHJlcGVhdGVkIGNvbWJpbmF0b3JzLicsCiAgICAgICAgICAgIHNlbGY6OnN0cmljdFVuYXJ5ID0+ICdBbWJpZ3VvdXMgKyBhbmQgLSBvcGVyYXRvcnMuJywKICAgICAgICAgICAgc2VsZjo6ZnVuY3Rpb25Vbml0cyA9PiAnUGFzc2luZyBpbnZhbGlkIHVuaXRzIHRvIGJ1aWx0LWluIGZ1bmN0aW9ucy4nLAogICAgICAgICAgICBzZWxmOjpkdXBsaWNhdGVWYXJGbGFncyA9PiAnVXNpbmcgIWRlZmF1bHQgb3IgIWdsb2JhbCBtdWx0aXBsZSB0aW1lcyBmb3Igb25lIHZhcmlhYmxlLicsCiAgICAgICAgICAgIHNlbGY6OmFic1BlcmNlbnQgPT4gJ1Bhc3NpbmcgcGVyY2VudGFnZXMgdG8gdGhlIFNhc3MgYWJzKCkgZnVuY3Rpb24uJywKICAgICAgICAgICAgc2VsZjo6Y3NzRnVuY3Rpb25NaXhpbiA9PiAnRnVuY3Rpb24gYW5kIG1peGluIG5hbWVzIGJlZ2lubmluZyB3aXRoIC0tLicsCiAgICAgICAgICAgIHNlbGY6Om1peGVkRGVjbHMgPT4gJ0RlY2xhcmF0aW9ucyBhZnRlciBvciBiZXR3ZWVuIG5lc3RlZCBydWxlcy4nLAogICAgICAgICAgICBzZWxmOjpmZWF0dXJlRXhpc3RzID0+ICdtZXRhLmZlYXR1cmUtZXhpc3RzJywKICAgICAgICAgICAgc2VsZjo6dXNlckF1dGhvcmVkID0+IG51bGwsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSB2ZXJzaW9uIGluIHdoaWNoIHRoaXMgZmVhdHVyZSB3YXMgZmlyc3QgZGVwcmVjYXRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERlcHJlY2F0ZWRJbigpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcykgewogICAgICAgICAgICBzZWxmOjpjYWxsU3RyaW5nID0+ICcxLjIuMCcsCiAgICAgICAgICAgIHNlbGY6OmVsc2VpZiA9PiAnMi4wLjAnLAogICAgICAgICAgICBzZWxmOjptb3pEb2N1bWVudCA9PiAnMi4wLjAnLAogICAgICAgICAgICBzZWxmOjpuZXdHbG9iYWwgPT4gJzIuMC4wJywKICAgICAgICAgICAgc2VsZjo6c2xhc2hEaXYgPT4gbnVsbCwKICAgICAgICAgICAgc2VsZjo6Ym9ndXNDb21iaW5hdG9ycyA9PiAnMi4wLjAnLAogICAgICAgICAgICBzZWxmOjpzdHJpY3RVbmFyeSA9PiAnMi4wLjAnLAogICAgICAgICAgICBzZWxmOjpmdW5jdGlvblVuaXRzID0+ICcyLjAuMCcsCiAgICAgICAgICAgIHNlbGY6OmR1cGxpY2F0ZVZhckZsYWdzID0+ICcyLjAuMCcsCiAgICAgICAgICAgIHNlbGY6OmFic1BlcmNlbnQgPT4gJzIuMC4wJywKICAgICAgICAgICAgc2VsZjo6Y3NzRnVuY3Rpb25NaXhpbiA9PiAnMi4wLjAnLAogICAgICAgICAgICBzZWxmOjptaXhlZERlY2xzID0+ICcyLjAuMCcsCiAgICAgICAgICAgIHNlbGY6OmZlYXR1cmVFeGlzdHMgPT4gJzIuMC4wJywKICAgICAgICAgICAgc2VsZjo6dXNlckF1dGhvcmVkID0+IG51bGwsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSB2ZXJzaW9uIHRoaXMgZmVhdHVyZSB3YXMgZnVsbHkgcmVtb3ZlZCBpbiwgbWFraW5nIHRoZQogICAgICogZGVwcmVjYXRpb24gb2Jzb2xldGUuCiAgICAgKgogICAgICogRm9yIGRlcHJlY2F0aW9ucyB0aGF0IGFyZSBub3QgeWV0IG9ic29sZXRlLCB0aGlzIHNob3VsZCBiZSBudWxsLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T2Jzb2xldGVJbigpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7IC8vIEZvciBub3csIG5vIGRlcHJlY2F0aW9uIGlzIG9ic29sZXRlCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzRnV0dXJlKCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJHRoaXMgPT09IHNlbGY6OnVzZXJBdXRob3JlZCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldERlcHJlY2F0ZWRJbigpID09PSBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0dXMoKTogRGVwcmVjYXRpb25TdGF0dXMKICAgIHsKICAgICAgICBpZiAoJHRoaXMgPT09IHNlbGY6OnVzZXJBdXRob3JlZCkgewogICAgICAgICAgICByZXR1cm4gRGVwcmVjYXRpb25TdGF0dXM6OnVzZXI7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmlzRnV0dXJlKCkpIHsKICAgICAgICAgICAgcmV0dXJuIERlcHJlY2F0aW9uU3RhdHVzOjpmdXR1cmU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmdldE9ic29sZXRlSW4oKSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gRGVwcmVjYXRpb25TdGF0dXM6Om9ic29sZXRlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIERlcHJlY2F0aW9uU3RhdHVzOjphY3RpdmU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/DeprecationStatus.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7CgplbnVtIERlcHJlY2F0aW9uU3RhdHVzCnsKICAgIGNhc2UgYWN0aXZlOwogICAgY2FzZSB1c2VyOwogICAgY2FzZSBmdXR1cmU7CiAgICBjYXNlIG9ic29sZXRlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Evaluation/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Evaluation/ArgumentResults.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV2YWx1YXRpb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxBc3ROb2RlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXExpc3RTZXBhcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcVmFsdWU7CgovKioKICogVGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIGFyZ3VtZW50cyB0byBhIGZ1bmN0aW9uIG9yIG1peGluLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEFyZ3VtZW50UmVzdWx0cwp7CiAgICAvKioKICAgICAqIEFyZ3VtZW50cyBwYXNzZWQgYnkgcG9zaXRpb24uCiAgICAgKgogICAgICogQHZhciBsaXN0PFZhbHVlPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRwb3NpdGlvbmFsOwoKICAgIC8qKgogICAgICogVGhlIHtAc2VlIEFzdE5vZGV9cyB0aGF0IGhvbGQgdGhlIHNwYW5zIGZvciBlYWNoIHtAc2VlIHBvc2l0aW9uYWx9IGFyZ3VtZW50LgogICAgICoKICAgICAqIEB2YXIgbGlzdDxBc3ROb2RlPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRwb3NpdGlvbmFsTm9kZXM7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgVmFsdWU+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJG5hbWVkOwoKICAgIC8qKgogICAgICogVGhlIHtAc2VlIEFzdE5vZGV9cyB0aGF0IGhvbGQgdGhlIHNwYW5zIGZvciBlYWNoIHtAc2VlIG5hbWVkfSBhcmd1bWVudC4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgQXN0Tm9kZT4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkbmFtZWROb2RlczsKCiAgICBwcml2YXRlIHJlYWRvbmx5IExpc3RTZXBhcmF0b3IgJHNlcGFyYXRvcjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAgICAgICAgICAgICRwb3NpdGlvbmFsCiAgICAgKiBAcGFyYW0gbGlzdDxBc3ROb2RlPiAgICAgICAgICAkcG9zaXRpb25hbE5vZGVzCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBWYWx1ZT4gICAkbmFtZWQKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIEFzdE5vZGU+ICRuYW1lZE5vZGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkcG9zaXRpb25hbCwgYXJyYXkgJHBvc2l0aW9uYWxOb2RlcywgYXJyYXkgJG5hbWVkLCBhcnJheSAkbmFtZWROb2RlcywgTGlzdFNlcGFyYXRvciAkc2VwYXJhdG9yKQogICAgewogICAgICAgICR0aGlzLT5wb3NpdGlvbmFsID0gJHBvc2l0aW9uYWw7CiAgICAgICAgJHRoaXMtPnBvc2l0aW9uYWxOb2RlcyA9ICRwb3NpdGlvbmFsTm9kZXM7CiAgICAgICAgJHRoaXMtPm5hbWVkID0gJG5hbWVkOwogICAgICAgICR0aGlzLT5uYW1lZE5vZGVzID0gJG5hbWVkTm9kZXM7CiAgICAgICAgJHRoaXMtPnNlcGFyYXRvciA9ICRzZXBhcmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8VmFsdWU+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb3NpdGlvbmFsKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wb3NpdGlvbmFsOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PEFzdE5vZGU+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb3NpdGlvbmFsTm9kZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBvc2l0aW9uYWxOb2RlczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBWYWx1ZT4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVkKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lZDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBBc3ROb2RlPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZWROb2RlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZWROb2RlczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VwYXJhdG9yKCk6IExpc3RTZXBhcmF0b3IKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlcGFyYXRvcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Evaluation/Environment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV2YWx1YXRpb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxBc3ROb2RlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFNhc3NDYWxsYWJsZVxTYXNzQ2FsbGFibGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcU2Fzc0NhbGxhYmxlXFVzZXJEZWZpbmVkQ2FsbGFibGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcVmFsdWU7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIFRoZSBsZXhpY2FsIGVudmlyb25tZW50IGluIHdoaWNoIFNhc3MgaXMgZXhlY3V0ZWQuCiAqCiAqIFRoaXMgdHJhY2tzIGxleGljYWxseS1zY29wZWQgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdmFyaWFibGVzLCBmdW5jdGlvbnMsIGFuZAogKiBtaXhpbnMuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRW52aXJvbm1lbnQKewogICAgLyoqCiAgICAgKiBBIGxpc3Qgb2YgdmFyaWFibGVzIGRlZmluZWQgYXQgZWFjaCBsZXhpY2FsIHNjb3BlIGxldmVsLgogICAgICoKICAgICAqIEVhY2ggc2NvcGUgbWFwcyB0aGUgbmFtZXMgb2YgZGVjbGFyZWQgdmFyaWFibGVzIHRvIHRoZWlyIHZhbHVlcy4KICAgICAqCiAgICAgKiBUaGUgZmlyc3QgZWxlbWVudCBpcyB0aGUgZ2xvYmFsIHNjb3BlLCBhbmQgZWFjaCBzdWNjZXNzaXZlIGVsZW1lbnQgaXMKICAgICAqIGRlZXBlciBpbiB0aGUgdHJlZS4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PGludCwgXEFycmF5T2JqZWN0PHN0cmluZywgVmFsdWU+PgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICR2YXJpYWJsZXM7CgogICAgLyoqCiAgICAgKiBUaGUgbm9kZXMgd2hlcmUgZWFjaCB2YXJpYWJsZSBpbiB7QHNlZSB2YXJpYWJsZXN9IHdhcyBkZWZpbmVkLgogICAgICoKICAgICAqIFRoaXMgc3RvcmVzIHtAc2VlIEFzdE5vZGV9cyByYXRoZXIgdGhhbiB7QHNlZSBGaWxlU3Bhbn1zIHNvIGl0IGNhbiBhdm9pZCBjYWxsaW5nCiAgICAgKiB7QHNlZSBBc3ROb2RlOjpnZXRTc3Bhbn0gaWYgdGhlIHNwYW4gaXNuJ3QgcmVxdWlyZWQsIHNpbmNlIHNvbWUgbm9kZXMgbmVlZCB0byBkbwogICAgICogcmVhbCB3b3JrIHRvIG1hbnVmYWN0dXJlIGEgc291cmNlIHNwYW4uCiAgICAgKgogICAgICogQHZhciBhcnJheTxpbnQsIFxBcnJheU9iamVjdDxzdHJpbmcsIEFzdE5vZGU+PgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICR2YXJpYWJsZU5vZGVzOwoKICAgIC8qKgogICAgICogQSBtYXAgb2YgdmFyaWFibGUgbmFtZXMgdG8gdGhlaXIgaW5kaWNlcyBpbiB7QHNlZSB2YXJpYWJsZXN9LgogICAgICoKICAgICAqIFRoaXMgbWFwIGlzIGZpbGxlZCBpbiBhcy1uZWVkZWQsIGFuZCBtYXkgbm90IGJlIGNvbXBsZXRlLgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBpbnQ+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJHZhcmlhYmxlSW5kaWNlcyA9IFtdOwoKICAgIC8qKgogICAgICogQSBsaXN0IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGF0IGVhY2ggbGV4aWNhbCBzY29wZSBsZXZlbC4KICAgICAqCiAgICAgKiBFYWNoIHNjb3BlIG1hcHMgdGhlIG5hbWVzIG9mIGRlY2xhcmVkIGZ1bmN0aW9ucyB0byB0aGVpciB2YWx1ZXMuCiAgICAgKgogICAgICogVGhlIGZpcnN0IGVsZW1lbnQgaXMgdGhlIGdsb2JhbCBzY29wZSwgYW5kIGVhY2ggc3VjY2Vzc2l2ZSBlbGVtZW50IGlzCiAgICAgKiBkZWVwZXIgaW4gdGhlIHRyZWUuCiAgICAgKgogICAgICogQHZhciBhcnJheTxpbnQsIFxBcnJheU9iamVjdDxzdHJpbmcsIFNhc3NDYWxsYWJsZT4+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJGZ1bmN0aW9uczsKCiAgICAvKioKICAgICAqIEEgbWFwIG9mIGZ1bmN0aW9uIG5hbWVzIHRvIHRoZWlyIGluZGljZXMgaW4ge0BzZWUgZnVuY3Rpb25zfS4KICAgICAqCiAgICAgKiBUaGlzIG1hcCBpcyBmaWxsZWQgaW4gYXMtbmVlZGVkLCBhbmQgbWF5IG5vdCBiZSBjb21wbGV0ZS4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgaW50PgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICRmdW5jdGlvbkluZGljZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEEgbGlzdCBvZiBtaXhpbnMgZGVmaW5lZCBhdCBlYWNoIGxleGljYWwgc2NvcGUgbGV2ZWwuCiAgICAgKgogICAgICogRWFjaCBzY29wZSBtYXBzIHRoZSBuYW1lcyBvZiBkZWNsYXJlZCBtaXhpbnMgdG8gdGhlaXIgdmFsdWVzLgogICAgICoKICAgICAqIFRoZSBmaXJzdCBlbGVtZW50IGlzIHRoZSBnbG9iYWwgc2NvcGUsIGFuZCBlYWNoIHN1Y2Nlc3NpdmUgZWxlbWVudCBpcwogICAgICogZGVlcGVyIGluIHRoZSB0cmVlLgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8aW50LCBcQXJyYXlPYmplY3Q8c3RyaW5nLCBTYXNzQ2FsbGFibGU+PgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICRtaXhpbnM7CgogICAgLyoqCiAgICAgKiBBIG1hcCBvZiBtaXhpbiBuYW1lcyB0byB0aGVpciBpbmRpY2VzIGluIHtAc2VlIG1peGluc30uCiAgICAgKgogICAgICogVGhpcyBtYXAgaXMgZmlsbGVkIGluIGFzLW5lZWRlZCwgYW5kIG1heSBub3QgYmUgY29tcGxldGUuCiAgICAgKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGludD4KICAgICAqLwogICAgcHJpdmF0ZSBhcnJheSAkbWl4aW5JbmRpY2VzID0gW107CgogICAgLyoqCiAgICAgKiBUaGUgY29udGVudCBibG9jayBwYXNzZWQgdG8gdGhlIGxleGljYWxseS1lbmNsb3NpbmcgbWl4aW4sIG9yIGBudWxsYCBpZgogICAgICogdGhpcyBpcyBub3QgaW4gYSBtaXhpbiwgb3IgaWYgbm8gY29udGVudCBibG9jayB3YXMgcGFzc2VkLgogICAgICovCiAgICBwcml2YXRlID9Vc2VyRGVmaW5lZENhbGxhYmxlICRjb250ZW50OwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgZW52aXJvbm1lbnQgaXMgbGV4aWNhbGx5IHdpdGhpbiBhIG1peGluLgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGluTWl4aW4gPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIGVudmlyb25tZW50IGlzIGN1cnJlbnRseSBpbiBhIGdsb2JhbCBvciBzZW1pLWdsb2JhbCBzY29wZS4KICAgICAqCiAgICAgKiBBIHNlbWktZ2xvYmFsIHNjb3BlIGNhbiBhc3NpZ24gdG8gZ2xvYmFsIHZhcmlhYmxlcywgYnV0IGl0IGRvZXNuJ3QgZGVjbGFyZQogICAgICogdGhlbSBieSBkZWZhdWx0LgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGluU2VtaUdsb2JhbFNjb3BlID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoZSBsYXN0IHZhcmlhYmxlIHRoYXQgd2FzIGFjY2Vzc2VkLgogICAgICoKICAgICAqIFRoaXMgaXMgY2FjaGVkIHRvIHNwZWVkIHVwIHJlcGVhdGVkIHJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgdmFyaWFibGUsIGFzCiAgICAgKiB3ZWxsIGFzIHJlZmVyZW5jZXMgdG8gdGhlIGxhc3QgdmFyaWFibGUncyB7QHNlZSBGaWxlU3Bhbn0uCiAgICAgKi8KICAgIHByaXZhdGUgP3N0cmluZyAkbGFzdFZhcmlhYmxlTmFtZSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBUaGUgaW5kZXggaW4ge0BzZWUgdmFyaWFibGVzfSBvZiB0aGUgbGFzdCB2YXJpYWJsZSB0aGF0IHdhcyBhY2Nlc3NlZC4KICAgICAqLwogICAgcHJpdmF0ZSA/aW50ICRsYXN0VmFyaWFibGVJbmRleCA9IG51bGw7CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoKTogRW52aXJvbm1lbnQKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEVudmlyb25tZW50KFtuZXcgXEFycmF5T2JqZWN0KCldLCBbbmV3IFxBcnJheU9iamVjdCgpXSwgW25ldyBcQXJyYXlPYmplY3QoKV0sIFtuZXcgXEFycmF5T2JqZWN0KCldKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFxBcnJheU9iamVjdDxzdHJpbmcsIFZhbHVlPj4gICAgICAgICR2YXJpYWJsZXMKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIFxBcnJheU9iamVjdDxzdHJpbmcsIEFzdE5vZGU+PiAgICAgICR2YXJpYWJsZU5vZGVzCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCBcQXJyYXlPYmplY3Q8c3RyaW5nLCBTYXNzQ2FsbGFibGU+PiAkZnVuY3Rpb25zCiAgICAgKiBAcGFyYW0gYXJyYXk8aW50LCBcQXJyYXlPYmplY3Q8c3RyaW5nLCBTYXNzQ2FsbGFibGU+PiAkbWl4aW5zCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJHZhcmlhYmxlcywgYXJyYXkgJHZhcmlhYmxlTm9kZXMsIGFycmF5ICRmdW5jdGlvbnMsIGFycmF5ICRtaXhpbnMsID9Vc2VyRGVmaW5lZENhbGxhYmxlICRjb250ZW50ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+dmFyaWFibGVzID0gJHZhcmlhYmxlczsKICAgICAgICAkdGhpcy0+dmFyaWFibGVOb2RlcyA9ICR2YXJpYWJsZU5vZGVzOwogICAgICAgICR0aGlzLT5mdW5jdGlvbnMgPSAkZnVuY3Rpb25zOwogICAgICAgICR0aGlzLT5taXhpbnMgPSAkbWl4aW5zOwogICAgICAgICR0aGlzLT5jb250ZW50ID0gJGNvbnRlbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKTogP1VzZXJEZWZpbmVkQ2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBlbnZpcm9ubWVudCBpcyBsZXhpY2FsbHkgYXQgdGhlIHJvb3Qgb2YgdGhlIGRvY3VtZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXRSb290KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gXGNvdW50KCR0aGlzLT52YXJpYWJsZXMpID09PSAxOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0luTWl4aW4oKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aW5NaXhpbjsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBjbG9zdXJlIGJhc2VkIG9uIHRoaXMgZW52aXJvbm1lbnQuCiAgICAgKgogICAgICogQW55IHNjb3BlIGNoYW5nZXMgaW4gdGhpcyBlbnZpcm9ubWVudCB3aWxsIG5vdCBhZmZlY3QgdGhlIGNsb3N1cmUuCiAgICAgKiBIb3dldmVyLCBhbnkgbmV3IGRlY2xhcmF0aW9ucyBvciBhc3NpZ25tZW50cyBpbiBzY29wZXMgdGhhdCBhcmUgdmlzaWJsZQogICAgICogd2hlbiB0aGUgY2xvc3VyZSB3YXMgY3JlYXRlZCB3aWxsIGJlIHJlZmxlY3RlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNsb3N1cmUoKTogRW52aXJvbm1lbnQKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEVudmlyb25tZW50KCR0aGlzLT52YXJpYWJsZXMsICR0aGlzLT52YXJpYWJsZU5vZGVzLCAkdGhpcy0+ZnVuY3Rpb25zLCAkdGhpcy0+bWl4aW5zLCAkdGhpcy0+Y29udGVudCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbmV3IGVudmlyb25tZW50IHRvIHVzZSBmb3IgYW4gaW1wb3J0ZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuZWQgZW52aXJvbm1lbnQgc2hhcmVzIHRoaXMgZW52aXJvbm1lbnQncyB2YXJpYWJsZXMsIGZ1bmN0aW9ucywKICAgICAqIGFuZCBtaXhpbnMsIGJ1dCBleGNsdWRlcyBtb3N0IG1vZHVsZXMgKGV4Y2VwdCBmb3IgZ2xvYmFsIG1vZHVsZXMgdGhhdAogICAgICogcmVzdWx0IGZyb20gaW1wb3J0aW5nIGEgZmlsZSB3aXRoIGZvcndhcmRzKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZvckltcG9ydCgpOiBFbnZpcm9ubWVudAogICAgewogICAgICAgIHJldHVybiBuZXcgRW52aXJvbm1lbnQoJHRoaXMtPnZhcmlhYmxlcywgJHRoaXMtPnZhcmlhYmxlTm9kZXMsICR0aGlzLT5mdW5jdGlvbnMsICR0aGlzLT5taXhpbnMsICR0aGlzLT5jb250ZW50KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFyaWFibGUoc3RyaW5nICRuYW1lKTogP1ZhbHVlCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5sYXN0VmFyaWFibGVOYW1lID09PSAkbmFtZSkgewogICAgICAgICAgICBhc3NlcnQoJHRoaXMtPmxhc3RWYXJpYWJsZUluZGV4ICE9PSBudWxsKTsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFyaWFibGVzWyR0aGlzLT5sYXN0VmFyaWFibGVJbmRleF1bJG5hbWVdID8/IG51bGw7CiAgICAgICAgfQoKICAgICAgICAkaW5kZXggPSAkdGhpcy0+dmFyaWFibGVJbmRpY2VzWyRuYW1lXSA/PyBudWxsOwoKICAgICAgICBpZiAoJGluZGV4ICE9PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5sYXN0VmFyaWFibGVOYW1lID0gJG5hbWU7CiAgICAgICAgICAgICR0aGlzLT5sYXN0VmFyaWFibGVJbmRleCA9ICRpbmRleDsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFyaWFibGVzWyRpbmRleF1bJG5hbWVdID8/IG51bGw7CiAgICAgICAgfQoKICAgICAgICAkaW5kZXggPSAkdGhpcy0+dmFyaWFibGVJbmRleCgkbmFtZSk7CgogICAgICAgIGlmICgkaW5kZXggPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bGFzdFZhcmlhYmxlTmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5sYXN0VmFyaWFibGVJbmRleCA9ICRpbmRleDsKICAgICAgICAkdGhpcy0+dmFyaWFibGVJbmRpY2VzWyRuYW1lXSA9ICRpbmRleDsKCiAgICAgICAgcmV0dXJuICR0aGlzLT52YXJpYWJsZXNbJGluZGV4XVskbmFtZV0gPz8gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFyaWFibGVOb2RlKHN0cmluZyAkbmFtZSk6ID9Bc3ROb2RlCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5sYXN0VmFyaWFibGVOYW1lID09PSAkbmFtZSkgewogICAgICAgICAgICBhc3NlcnQoJHRoaXMtPmxhc3RWYXJpYWJsZUluZGV4ICE9PSBudWxsKTsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFyaWFibGVOb2Rlc1skdGhpcy0+bGFzdFZhcmlhYmxlSW5kZXhdWyRuYW1lXSA/PyBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGluZGV4ID0gJHRoaXMtPnZhcmlhYmxlSW5kaWNlc1skbmFtZV0gPz8gbnVsbDsKCiAgICAgICAgaWYgKCRpbmRleCAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+bGFzdFZhcmlhYmxlTmFtZSA9ICRuYW1lOwogICAgICAgICAgICAkdGhpcy0+bGFzdFZhcmlhYmxlSW5kZXggPSAkaW5kZXg7CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZhcmlhYmxlTm9kZXNbJGluZGV4XVskbmFtZV0gPz8gbnVsbDsKICAgICAgICB9CgogICAgICAgICRpbmRleCA9ICR0aGlzLT52YXJpYWJsZUluZGV4KCRuYW1lKTsKCiAgICAgICAgaWYgKCRpbmRleCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5sYXN0VmFyaWFibGVOYW1lID0gJG5hbWU7CiAgICAgICAgJHRoaXMtPmxhc3RWYXJpYWJsZUluZGV4ID0gJGluZGV4OwogICAgICAgICR0aGlzLT52YXJpYWJsZUluZGljZXNbJG5hbWVdID0gJGluZGV4OwoKICAgICAgICByZXR1cm4gJHRoaXMtPnZhcmlhYmxlTm9kZXNbJGluZGV4XVskbmFtZV0gPz8gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBhIHZhcmlhYmxlIG5hbWVkICRuYW1lIGV4aXN0cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhcmlhYmxlRXhpc3RzKHN0cmluZyAkbmFtZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFZhcmlhYmxlKCRuYW1lKSAhPT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBhIGdsb2JhbCB2YXJpYWJsZSBuYW1lZCAkbmFtZSBleGlzdHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnbG9iYWxWYXJpYWJsZUV4aXN0cyhzdHJpbmcgJG5hbWUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGlzc2V0KCR0aGlzLT52YXJpYWJsZXNbMF1bJG5hbWVdKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG1hcCBpbiB7QHNlZSB2YXJpYWJsZXN9IHRoYXQgaGFzIGEgJG5hbWUga2V5LAogICAgICogb3IgYG51bGxgIGlmIG5vbmUgZXhpc3RzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZhcmlhYmxlSW5kZXgoc3RyaW5nICRuYW1lKTogP2ludAogICAgewogICAgICAgIGZvciAoJGkgPSBcY291bnQoJHRoaXMtPnZhcmlhYmxlcykgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dmFyaWFibGVzWyRpXVskbmFtZV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyB0aGUgdmFyaWFibGUgbmFtZWQgJG5hbWUgdG8gJHZhbHVlLgogICAgICoKICAgICAqIElmICRnbG9iYWwgaXMgYHRydWVgLCB0aGlzIHNldHMgdGhlIHZhcmlhYmxlIGF0IHRoZSB0b3AtbGV2ZWwgc2NvcGUuCiAgICAgKiBPdGhlcndpc2UsIGlmIHRoZSB2YXJpYWJsZSB3YXMgYWxyZWFkeSBkZWZpbmVkLCBpdCdsbCBzZXQgaXQgaW4gdGhlCiAgICAgKiBwcmV2aW91cyBzY29wZS4gSWYgaXQncyB1bmRlZmluZWQsIGl0J2xsIHNldCBpdCBpbiB0aGUgY3VycmVudCBzY29wZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFZhcmlhYmxlKHN0cmluZyAkbmFtZSwgVmFsdWUgJHZhbHVlLCBBc3ROb2RlICRub2RlV2l0aFNwYW4sIGJvb2wgJGdsb2JhbCA9IGZhbHNlKTogdm9pZAogICAgewogICAgICAgIGlmICgkZ2xvYmFsIHx8ICR0aGlzLT5hdFJvb3QoKSkgewogICAgICAgICAgICAvLyBEb24ndCBzZXQgdGhlIGluZGV4IGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHZhcmlhYmxlIHdpdGggdGhlIGdpdmVuIG5hbWUsCiAgICAgICAgICAgIC8vIHNpbmNlIGxvY2FsIGFjY2Vzc2VzIHNob3VsZCBzdGlsbCByZXR1cm4gdGhlIGxvY2FsIHZhcmlhYmxlLgogICAgICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT52YXJpYWJsZUluZGljZXNbJG5hbWVdKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmxhc3RWYXJpYWJsZU5hbWUgPSAkbmFtZTsKICAgICAgICAgICAgICAgICR0aGlzLT5sYXN0VmFyaWFibGVJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAkdGhpcy0+dmFyaWFibGVJbmRpY2VzWyRuYW1lXSA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT52YXJpYWJsZXNbMF1bJG5hbWVdID0gJHZhbHVlOwogICAgICAgICAgICAkdGhpcy0+dmFyaWFibGVOb2Rlc1swXVskbmFtZV0gPSAkbm9kZVdpdGhTcGFuOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmxhc3RWYXJpYWJsZU5hbWUgPT09ICRuYW1lKSB7CiAgICAgICAgICAgIGFzc2VydCgkdGhpcy0+bGFzdFZhcmlhYmxlSW5kZXggIT09IG51bGwpOwogICAgICAgICAgICAkaW5kZXggPSAkdGhpcy0+bGFzdFZhcmlhYmxlSW5kZXg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+dmFyaWFibGVJbmRpY2VzWyRuYW1lXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT52YXJpYWJsZUluZGljZXNbJG5hbWVdID0gJHRoaXMtPnZhcmlhYmxlSW5kZXgoJG5hbWUpID8/IFxjb3VudCgkdGhpcy0+dmFyaWFibGVzKSAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGluZGV4ID0gJHRoaXMtPnZhcmlhYmxlSW5kaWNlc1skbmFtZV07CiAgICAgICAgfQoKICAgICAgICBpZiAoISR0aGlzLT5pblNlbWlHbG9iYWxTY29wZSAmJiAkaW5kZXggPT09IDApIHsKICAgICAgICAgICAgJGluZGV4ID0gXGNvdW50KCR0aGlzLT52YXJpYWJsZXMpIC0gMTsKICAgICAgICAgICAgJHRoaXMtPnZhcmlhYmxlSW5kaWNlc1skbmFtZV0gPSAkaW5kZXg7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bGFzdFZhcmlhYmxlTmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5sYXN0VmFyaWFibGVJbmRleCA9ICRpbmRleDsKICAgICAgICAkdGhpcy0+dmFyaWFibGVzWyRpbmRleF1bJG5hbWVdID0gJHZhbHVlOwogICAgICAgICR0aGlzLT52YXJpYWJsZU5vZGVzWyRpbmRleF1bJG5hbWVdID0gJG5vZGVXaXRoU3BhbjsKICAgIH0KCiAgICAvKioKICAgICAqIFNldHMgdGhlIHZhcmlhYmxlIG5hbWVkICRuYW1lIHRvICR2YWx1ZS4KICAgICAqCiAgICAgKiBVbmxpa2Uge0BzZWUgc2V0VmFyaWFibGV9LCB0aGlzIHdpbGwgZGVjbGFyZSB0aGUgdmFyaWFibGUgaW4gdGhlIGN1cnJlbnQgc2NvcGUKICAgICAqIGV2ZW4gaWYgYSBkZWNsYXJhdGlvbiBhbHJlYWR5IGV4aXN0cyBpbiBhbiBvdXRlciBzY29wZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldExvY2FsVmFyaWFibGUoc3RyaW5nICRuYW1lLCBWYWx1ZSAkdmFsdWUsIEFzdE5vZGUgJG5vZGVXaXRoU3Bhbik6IHZvaWQKICAgIHsKICAgICAgICAkaW5kZXggPSBcY291bnQoJHRoaXMtPnZhcmlhYmxlcykgLSAxOwogICAgICAgICR0aGlzLT5sYXN0VmFyaWFibGVOYW1lID0gJG5hbWU7CiAgICAgICAgJHRoaXMtPmxhc3RWYXJpYWJsZUluZGV4ID0gJGluZGV4OwogICAgICAgICR0aGlzLT52YXJpYWJsZUluZGljZXNbJG5hbWVdID0gJGluZGV4OwogICAgICAgICR0aGlzLT52YXJpYWJsZXNbJGluZGV4XVskbmFtZV0gPSAkdmFsdWU7CiAgICAgICAgJHRoaXMtPnZhcmlhYmxlTm9kZXNbJGluZGV4XVskbmFtZV0gPSAkbm9kZVdpdGhTcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGdW5jdGlvbihzdHJpbmcgJG5hbWUpOiA/U2Fzc0NhbGxhYmxlCiAgICB7CiAgICAgICAgJGluZGV4ID0gJHRoaXMtPmZ1bmN0aW9uSW5kaWNlc1skbmFtZV0gPz8gbnVsbDsKCiAgICAgICAgaWYgKCRpbmRleCAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZ1bmN0aW9uc1skaW5kZXhdWyRuYW1lXSA/PyBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGluZGV4ID0gJHRoaXMtPmZ1bmN0aW9uSW5kZXgoJG5hbWUpOwogICAgICAgIGlmICgkaW5kZXggPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZnVuY3Rpb25JbmRpY2VzWyRuYW1lXSA9ICRpbmRleDsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5mdW5jdGlvbnNbJGluZGV4XVskbmFtZV0gPz8gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG1hcCBpbiB7QHNlZSBmdW5jdGlvbnN9IHRoYXQgaGFzIGEgJG5hbWUga2V5LAogICAgICogb3IgYG51bGxgIGlmIG5vbmUgZXhpc3RzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZ1bmN0aW9uSW5kZXgoc3RyaW5nICRuYW1lKTogP2ludAogICAgewogICAgICAgIGZvciAoJGkgPSBcY291bnQoJHRoaXMtPmZ1bmN0aW9ucykgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZnVuY3Rpb25zWyRpXVskbmFtZV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIGEgZnVuY3Rpb24gbmFtZWQgJG5hbWUgZXhpc3RzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZnVuY3Rpb25FeGlzdHMoc3RyaW5nICRuYW1lKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RnVuY3Rpb24oJG5hbWUpICE9PSBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRGdW5jdGlvbihTYXNzQ2FsbGFibGUgJGNhbGxhYmxlKTogdm9pZAogICAgewogICAgICAgICRpbmRleCA9IFxjb3VudCgkdGhpcy0+ZnVuY3Rpb25zKSAtIDE7CiAgICAgICAgJG5hbWUgPSAkY2FsbGFibGUtPmdldE5hbWUoKTsKICAgICAgICAkdGhpcy0+ZnVuY3Rpb25JbmRpY2VzWyRuYW1lXSA9ICRpbmRleDsKICAgICAgICAkdGhpcy0+ZnVuY3Rpb25zWyRpbmRleF1bJG5hbWVdID0gJGNhbGxhYmxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNaXhpbihzdHJpbmcgJG5hbWUpOiA/U2Fzc0NhbGxhYmxlCiAgICB7CiAgICAgICAgJGluZGV4ID0gJHRoaXMtPm1peGluSW5kaWNlc1skbmFtZV0gPz8gbnVsbDsKCiAgICAgICAgaWYgKCRpbmRleCAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1peGluc1skaW5kZXhdWyRuYW1lXSA/PyBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGluZGV4ID0gJHRoaXMtPm1peGluSW5kZXgoJG5hbWUpOwogICAgICAgIGlmICgkaW5kZXggPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bWl4aW5JbmRpY2VzWyRuYW1lXSA9ICRpbmRleDsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5taXhpbnNbJGluZGV4XVskbmFtZV0gPz8gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG1hcCBpbiB7QHNlZSBtaXhpbnN9IHRoYXQgaGFzIGEgJG5hbWUga2V5LAogICAgICogb3IgYG51bGxgIGlmIG5vbmUgZXhpc3RzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1peGluSW5kZXgoc3RyaW5nICRuYW1lKTogP2ludAogICAgewogICAgICAgIGZvciAoJGkgPSBcY291bnQoJHRoaXMtPm1peGlucykgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+bWl4aW5zWyRpXVskbmFtZV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIGEgbWl4aW4gbmFtZWQgJG5hbWUgZXhpc3RzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWl4aW5FeGlzdHMoc3RyaW5nICRuYW1lKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0TWl4aW4oJG5hbWUpICE9PSBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRNaXhpbihTYXNzQ2FsbGFibGUgJGNhbGxhYmxlKTogdm9pZAogICAgewogICAgICAgICRpbmRleCA9IFxjb3VudCgkdGhpcy0+bWl4aW5zKSAtIDE7CiAgICAgICAgJG5hbWUgPSAkY2FsbGFibGUtPmdldE5hbWUoKTsKICAgICAgICAkdGhpcy0+bWl4aW5JbmRpY2VzWyRuYW1lXSA9ICRpbmRleDsKICAgICAgICAkdGhpcy0+bWl4aW5zWyRpbmRleF1bJG5hbWVdID0gJGNhbGxhYmxlOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyAkY29udGVudCBhcyB7QHNlZSBjb250ZW50fSBmb3IgdGhlIGR1cmF0aW9uIG9mICRjYWxsYmFjay4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogdm9pZCAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhDb250ZW50KD9Vc2VyRGVmaW5lZENhbGxhYmxlICRjb250ZW50LCBjYWxsYWJsZSAkY2FsbGJhY2spOiB2b2lkCiAgICB7CiAgICAgICAgJG9sZENvbnRlbnQgPSAkdGhpcy0+Y29udGVudDsKICAgICAgICAkdGhpcy0+Y29udGVudCA9ICRjb250ZW50OwogICAgICAgICRjYWxsYmFjaygpOwogICAgICAgICR0aGlzLT5jb250ZW50ID0gJG9sZENvbnRlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXRzIHtAc2VlIGluTWl4aW59IHRvIGB0cnVlYCBmb3IgdGhlIGR1cmF0aW9uIG9mICRjYWxsYmFjay4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogdm9pZCAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzTWl4aW4oY2FsbGFibGUgJGNhbGxiYWNrKTogdm9pZAogICAgewogICAgICAgICRvbGRJbk1peGluID0gJHRoaXMtPmluTWl4aW47CiAgICAgICAgJHRoaXMtPmluTWl4aW4gPSB0cnVlOwogICAgICAgICRjYWxsYmFjaygpOwogICAgICAgICR0aGlzLT5pbk1peGluID0gJG9sZEluTWl4aW47CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zICRjYWxsYmFjayBpbiBhIG5ldyBzY29wZS4KICAgICAqCiAgICAgKiBWYXJpYWJsZXMsIGZ1bmN0aW9ucywgYW5kIG1peGlucyBkZWNsYXJlZCBpbiBhIGdpdmVuIHNjb3BlIGFyZQogICAgICogaW5hY2Nlc3NpYmxlIG91dHNpZGUgb2YgaXQuIElmICRzZW1pR2xvYmFsIGlzIHBhc3NlZCwgdGhpcyBzY29wZSBjYW4KICAgICAqIGFzc2lnbiB0byBnbG9iYWwgdmFyaWFibGVzIHdpdGhvdXQgYSBgIWdsb2JhbGAgZGVjbGFyYXRpb24uCiAgICAgKgogICAgICogSWYgJHdoZW4gaXMgZmFsc2UsIHRoaXMgZG9lc24ndCBjcmVhdGUgYSBuZXcgc2NvcGUgYW5kIGluc3RlYWQganVzdAogICAgICogZXhlY3V0ZXMgJGNhbGxiYWNrIGFuZCByZXR1cm5zIGl0cyByZXN1bHQuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNjb3BlKGNhbGxhYmxlICRjYWxsYmFjaywgYm9vbCAkd2hlbiA9IHRydWUsIGJvb2wgJHNlbWlHbG9iYWwgPSBmYWxzZSkKICAgIHsKICAgICAgICAvLyBXZSBoYXZlIHRvIHRyYWNrIHNlbWktZ2xvYmFsbmVzcyBldmVuIGlmIGAhJHdoZW5gIHNvIHRoYXQKICAgICAgICAvLwogICAgICAgIC8vICAgICBkaXYgewogICAgICAgIC8vICAgICAgIEBpZiAuLi4gewogICAgICAgIC8vICAgICAgICAgJHg6IHk7CiAgICAgICAgLy8gICAgICAgfQogICAgICAgIC8vICAgICB9CiAgICAgICAgLy8KICAgICAgICAvLyBkb2Vzbid0IGFzc2lnbiB0byB0aGUgZ2xvYmFsIHNjb3BlLgogICAgICAgICRzZW1pR2xvYmFsID0gJHNlbWlHbG9iYWwgJiYgJHRoaXMtPmluU2VtaUdsb2JhbFNjb3BlOwogICAgICAgICR3YXNJblNlbWlHbG9iYWxTY29wZSA9ICR0aGlzLT5pblNlbWlHbG9iYWxTY29wZTsKICAgICAgICAkdGhpcy0+aW5TZW1pR2xvYmFsU2NvcGUgPSAkc2VtaUdsb2JhbDsKCiAgICAgICAgaWYgKCEkd2hlbikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuICRjYWxsYmFjaygpOwogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgJHRoaXMtPmluU2VtaUdsb2JhbFNjb3BlID0gJHdhc0luU2VtaUdsb2JhbFNjb3BlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFyaWFibGVzW10gPSBuZXcgXEFycmF5T2JqZWN0KCk7CiAgICAgICAgJHRoaXMtPnZhcmlhYmxlTm9kZXNbXSA9IG5ldyBcQXJyYXlPYmplY3QoKTsKICAgICAgICAkdGhpcy0+ZnVuY3Rpb25zW10gPSBuZXcgXEFycmF5T2JqZWN0KCk7CiAgICAgICAgJHRoaXMtPm1peGluc1tdID0gbmV3IFxBcnJheU9iamVjdCgpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCk7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgJHRoaXMtPmluU2VtaUdsb2JhbFNjb3BlID0gJHdhc0luU2VtaUdsb2JhbFNjb3BlOwogICAgICAgICAgICAkdGhpcy0+bGFzdFZhcmlhYmxlTmFtZSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5sYXN0VmFyaWFibGVJbmRleCA9IG51bGw7CgogICAgICAgICAgICAkcmVtb3ZlZFZhcmlhYmxlcyA9IGFycmF5X3BvcCgkdGhpcy0+dmFyaWFibGVzKTsKICAgICAgICAgICAgYXNzZXJ0KCRyZW1vdmVkVmFyaWFibGVzICE9PSBudWxsKTsKICAgICAgICAgICAgZm9yZWFjaCAoJHJlbW92ZWRWYXJpYWJsZXMgYXMgJG5hbWUgPT4gJF8pIHsKICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT52YXJpYWJsZUluZGljZXNbJG5hbWVdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBhcnJheV9wb3AoJHRoaXMtPnZhcmlhYmxlTm9kZXMpOwoKICAgICAgICAgICAgJHJlbW92ZWRGdW5jdGlvbnMgPSBhcnJheV9wb3AoJHRoaXMtPmZ1bmN0aW9ucyk7CiAgICAgICAgICAgIGFzc2VydCgkcmVtb3ZlZEZ1bmN0aW9ucyAhPT0gbnVsbCk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRyZW1vdmVkRnVuY3Rpb25zIGFzICRuYW1lID0+ICRfKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+ZnVuY3Rpb25JbmRpY2VzWyRuYW1lXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZW1vdmVkTWl4aW5zID0gYXJyYXlfcG9wKCR0aGlzLT5taXhpbnMpOwogICAgICAgICAgICBhc3NlcnQoJHJlbW92ZWRNaXhpbnMgIT09IG51bGwpOwogICAgICAgICAgICBmb3JlYWNoICgkcmVtb3ZlZE1peGlucyBhcyAkbmFtZSA9PiAkXykgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPm1peGluSW5kaWNlc1skbmFtZV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Evaluation/EvaluateResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV2YWx1YXRpb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzU3R5bGVzaGVldDsKCi8qKgogKiBUaGUgcmVzdWx0IG9mIGNvbXBpbGluZyBhIFNhc3MgZG9jdW1lbnQgdG8gYSBDU1MgdHJlZSwgYWxvbmcgd2l0aCBtZXRhZGF0YQogKiBhYm91dCB0aGUgY29tcGlsYXRpb24gcHJvY2Vzcy4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBFdmFsdWF0ZVJlc3VsdAp7CiAgICBwcml2YXRlIHJlYWRvbmx5IENzc1N0eWxlc2hlZXQgJHN0eWxlc2hlZXQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRsb2FkZWRVcmxzOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkbG9hZGVkVXJscwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ3NzU3R5bGVzaGVldCAkc3R5bGVzaGVldCwgYXJyYXkgJGxvYWRlZFVybHMpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0eWxlc2hlZXQgPSAkc3R5bGVzaGVldDsKICAgICAgICAkdGhpcy0+bG9hZGVkVXJscyA9ICRsb2FkZWRVcmxzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHlsZXNoZWV0KCk6IENzc1N0eWxlc2hlZXQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0eWxlc2hlZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9hZGVkVXJscygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZGVkVXJsczsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Evaluation/EvaluateVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV2YWx1YXRpb247Cgp1c2UgTGVhZ3VlXFVyaVxVcmk7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XEFzdE5vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NBdFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NDb21tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzS2V5ZnJhbWVCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc01lZGlhUXVlcnk7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NNZWRpYVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NOb2RlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzU3R5bGVSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzU3R5bGVzaGVldDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc1ZhbHVlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTWVkaWFRdWVyeVNpbmdsZXRvbk1lcmdlUmVzdWx0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc0F0UnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXE1vZGlmaWFibGVDc3NDb21tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc0RlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc0ltcG9ydDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXE1vZGlmaWFibGVDc3NLZXlmcmFtZUJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc01lZGlhUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXE1vZGlmaWFibGVDc3NOb2RlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc1BhcmVudE5vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xNb2RpZmlhYmxlQ3NzU3R5bGVSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc1N0eWxlc2hlZXQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xNb2RpZmlhYmxlQ3NzU3VwcG9ydHNSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxGYWtlQXN0Tm9kZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xBcmd1bWVudERlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEFyZ3VtZW50SW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xBdFJvb3RRdWVyeTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xDYWxsYWJsZUludm9jYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxCaW5hcnlPcGVyYXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXEJvb2xlYW5FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cQ29sb3JFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cRnVuY3Rpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cSWZFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cSW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cSXNDYWxjdWxhdGlvblNhZmVWaXNpdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cTGlzdEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxNYXBFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cTnVsbEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxOdW1iZXJFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cUGFyZW50aGVzaXplZEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxTZWxlY3RvckV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxTdHJpbmdFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cU3VwcG9ydHNFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVW5hcnlPcGVyYXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFZhbHVlRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFZhcmlhYmxlRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbXBvcnRcRHluYW1pY0ltcG9ydDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbXBvcnRcU3RhdGljSW1wb3J0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEludGVycG9sYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxBdFJvb3RSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxBdFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XENvbnRlbnRCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcQ29udGVudFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XERlYnVnUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEVhY2hSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxFcnJvclJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEV4dGVuZFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEZvclJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEZ1bmN0aW9uUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcSWZSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxJbXBvcnRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxJbmNsdWRlUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcTG91ZENvbW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XE1lZGlhUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcTWl4aW5SdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxSZXR1cm5SdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTaWxlbnRDb21tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTdHlsZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFN0eWxlc2hlZXQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFN1cHBvcnRzUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcVmFyaWFibGVEZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcV2FyblJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFdoaWxlUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvblxTdXBwb3J0c0FueXRoaW5nOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uXFN1cHBvcnRzRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3VwcG9ydHNDb25kaXRpb25cU3VwcG9ydHNGdW5jdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvblxTdXBwb3J0c0ludGVycG9sYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3VwcG9ydHNDb25kaXRpb25cU3VwcG9ydHNOZWdhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvblxTdXBwb3J0c09wZXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcU2VsZWN0b3JMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTaW1wbGVTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb2xsZWN0aW9uXE1hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb2xvcnM7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRGVwcmVjYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXE11bHRpU3BhblNhc3NSdW50aW1lRXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzRXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzUnVudGltZUV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2ltcGxlU2Fzc0V4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2ltcGxlU2Fzc0Zvcm1hdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2ltcGxlU2Fzc1J1bnRpbWVFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXh0ZW5kXENvbmNyZXRlRXh0ZW5zaW9uU3RvcmU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXh0ZW5kXEV4dGVuc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeHRlbmRcRXh0ZW5zaW9uU3RvcmU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRnVuY3Rpb25cRnVuY3Rpb25SZWdpc3RyeTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxJbXBvcnRlclxJbXBvcnRDYWNoZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxJbXBvcnRlclxJbXBvcnRlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlclxJbnRlcnBvbGF0aW9uTWFwOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlclxLZXlmcmFtZVNlbGVjdG9yUGFyc2VyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFNhc3NDYWxsYWJsZVxCdWlsdEluQ2FsbGFibGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcU2Fzc0NhbGxhYmxlXFBsYWluQ3NzQ2FsbGFibGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcU2Fzc0NhbGxhYmxlXFNhc3NDYWxsYWJsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTYXNzQ2FsbGFibGVcVXNlckRlZmluZWRDYWxsYWJsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VTcGFuXE11bHRpU3BhbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTdGFja1RyYWNlXEZyYW1lOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFN0YWNrVHJhY2VcVHJhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEFzdFV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxDaGFyYWN0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGVVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcSXRlcmFibGVVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcTGlzdFV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxMb2dnZXJVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcU3BhblV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTdHJpbmdVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXENhbGN1bGF0aW9uT3BlcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXENhbGN1bGF0aW9uT3BlcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcTGlzdFNlcGFyYXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQXJndW1lbnRMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NCb29sZWFuOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NDYWxjdWxhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQ29sb3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0Z1bmN0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NNYXA7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc01peGluOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdWxsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXEV4cHJlc3Npb25WaXNpdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcU3RhdGVtZW50VmlzaXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxXYXJuOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKdXNlIFNvdXJjZVNwYW5cU291cmNlRmlsZTsKdXNlIFNvdXJjZVNwYW5cU2ltcGxlU291cmNlTG9jYXRpb247CgovKioKICogQSB2aXNpdG9yIHRoYXQgZXhlY3V0ZXMgU2FzcyBjb2RlIHRvIHByb2R1Y2UgYSBDU1MgdHJlZS4KICoKICogQHRlbXBsYXRlLWltcGxlbWVudHMgU3RhdGVtZW50VmlzaXRvcjxWYWx1ZXxudWxsPgogKiBAdGVtcGxhdGUtaW1wbGVtZW50cyBFeHByZXNzaW9uVmlzaXRvcjxWYWx1ZT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBFdmFsdWF0ZVZpc2l0b3IgaW1wbGVtZW50cyBTdGF0ZW1lbnRWaXNpdG9yLCBFeHByZXNzaW9uVmlzaXRvcgp7CiAgICAvKioKICAgICAqIFRoZSBpbXBvcnQgY2FjaGUgdXNlZCB0byBpbXBvcnQgb3RoZXIgc3R5bGVzaGVldHMuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgSW1wb3J0Q2FjaGUgJGltcG9ydENhY2hlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIFNhc3NDYWxsYWJsZT4KICAgICAqLwogICAgcHJpdmF0ZSBhcnJheSAkYnVpbHRJbkZ1bmN0aW9ucyA9IFtdOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgTG9nZ2VySW50ZXJmYWNlICRsb2dnZXI7CgogICAgLyoqCiAgICAgKiBBIHNldCBvZiBtZXNzYWdlL2xvY2F0aW9uIHBhaXJzIGZvciB3YXJuaW5ncyB0aGF0IGhhdmUgYmVlbiBlbWl0dGVkIHZpYQogICAgICoge0BzZWUgd2Fybn0uCiAgICAgKgogICAgICogV2Ugb25seSB3YW50IHRvIGVtaXQgb25lIHdhcm5pbmcgcGVyIGxvY2F0aW9uLCB0byBhdm9pZCBibG93aW5nIHVwIHVzZXJzJwogICAgICogY29uc29sZXMgd2l0aCByZWR1bmRhbnQgd2FybmluZ3MuCiAgICAgKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGFycmF5PHN0cmluZywgdHJ1ZT4+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJHdhcm5pbmdzRW1pdHRlZCA9IFtdOwoKICAgIC8qKgogICAgICogV2hldGhlciB0byBhdm9pZCBlbWl0dGluZyB3YXJuaW5ncyBmb3IgZmlsZXMgbG9hZGVkIGZyb20gZGVwZW5kZW5jaWVzLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJHF1aWV0RGVwczsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8gdHJhY2sgc291cmNlIG1hcCBpbmZvcm1hdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRzb3VyY2VNYXA7CgogICAgLyoqCiAgICAgKiBUaGUgY3VycmVudCBsZXhpY2FsIGVudmlyb25tZW50LgogICAgICovCiAgICBwcml2YXRlIEVudmlyb25tZW50ICRlbnZpcm9ubWVudDsKCiAgICAvKioKICAgICAqIFRoZSBzdHlsZSBydWxlIHRoYXQgZGVmaW5lcyB0aGUgY3VycmVudCBwYXJlbnQgc2VsZWN0b3IsIGlmIGFueS4KICAgICAqCiAgICAgKiBUaGlzIGRvZXNuJ3QgdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gYW55IGludGVybWVkaWF0ZSBgQGF0LXJvb3RgIHJ1bGVzLiBJbgogICAgICogdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHRob3NlIHJ1bGVzIGFyZSByZWxldmFudCwgdXNlIHtAc2VlIGdldFN0eWxlUnVsZX0gaW5zdGVhZC4KICAgICAqLwogICAgcHJpdmF0ZSA/TW9kaWZpYWJsZUNzc1N0eWxlUnVsZSAkc3R5bGVSdWxlSWdub3JpbmdBdFJvb3QgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIGN1cnJlbnQgbWVkaWEgcXVlcmllcywgaWYgYW55LgogICAgICoKICAgICAqIEB2YXIgbGlzdDxDc3NNZWRpYVF1ZXJ5PnxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgP2FycmF5ICRtZWRpYVF1ZXJpZXMgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIHNldCBvZiBtZWRpYSBxdWVyaWVzIHRoYXQgd2VyZSBtZXJnZWQgdG9nZXRoZXIgdG8gY3JlYXRlCiAgICAgKiB7QHNlZSAkbWVkaWFRdWVyaWVzfS4KICAgICAqCiAgICAgKiBUaGlzIHdpbGwgYmUgbm9uLW51bGwgaWYgYW5kIG9ubHkgaWYge0BzZWUgJG1lZGlhUXVlcmllc30gaXMgbm9uLW51bGwsIGJ1dCBpdAogICAgICogd2lsbCBiZSBlbXB0eSBpZiB7QHNlZSAkbWVkaWFRdWVyaWVzfSBpc24ndCB0aGUgcmVzdWx0IG9mIGEgbWVyZ2UuCiAgICAgKgogICAgICogQHZhciBDc3NNZWRpYVF1ZXJ5W118bnVsbAogICAgICovCiAgICBwcml2YXRlID9hcnJheSAkbWVkaWFRdWVyeVNvdXJjZXMgPSBudWxsOwoKICAgIHByaXZhdGUgP01vZGlmaWFibGVDc3NQYXJlbnROb2RlICRwYXJlbnQgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZGVjbGFyYXRpb24gcGFyZW50LgogICAgICovCiAgICBwcml2YXRlID9zdHJpbmcgJGRlY2xhcmF0aW9uTmFtZSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGUgY3VycmVudCBzdGFjayBmcmFtZS4KICAgICAqLwogICAgcHJpdmF0ZSBzdHJpbmcgJG1lbWJlciA9ICJyb290IHN0eWxlc2hlZXQiOwoKICAgIC8qKgogICAgICogVGhlIGlubmVybW9zdCB1c2VyLWRlZmluZWQgY2FsbGFibGUgdGhhdCdzIGJlaW5nIGludm9rZWQuCiAgICAgKi8KICAgIHByaXZhdGUgP1VzZXJEZWZpbmVkQ2FsbGFibGUgJGN1cnJlbnRDYWxsYWJsZSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBUaGUgbm9kZSBmb3IgdGhlIGlubmVybW9zdCBjYWxsYWJsZSB0aGF0J3MgYmVpbmcgaW52b2tlZC4KICAgICAqCiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gcHJvZHVjZSB3YXJuaW5ncyBmb3IgZnVuY3Rpb24gY2FsbHMuIEl0J3Mgc3RvcmVkIGFzIGFuCiAgICAgKiB7QHNlZSBBc3ROb2RlfSByYXRoZXIgdGhhbiBhIHtAc2VlIEZpbGVTcGFufSBzbyB3ZSBjYW4gYXZvaWQgY2FsbGluZyB7QHNlZSBBc3ROb2RlOjpnZXRTcGFufQogICAgICogaWYgdGhlIHNwYW4gaXNuJ3QgcmVxdWlyZWQsIHNpbmNlIHNvbWUgbm9kZXMgbmVlZCB0byBkbyByZWFsIHdvcmsgdG8KICAgICAqIG1hbnVmYWN0dXJlIGEgc291cmNlIHNwYW4uCiAgICAgKi8KICAgIHByaXZhdGUgP0FzdE5vZGUgJGNhbGxhYmxlTm9kZSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBUaGUgc3BhbiBmb3IgdGhlIGN1cnJlbnQgaW1wb3J0IHRoYXQncyBiZWluZyByZXNvbHZlZC4KICAgICAqCiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gcHJvZHVjZSB3YXJuaW5ncyBmb3IgaW1wb3J0ZXJzLgogICAgICovCiAgICBwcml2YXRlID9GaWxlU3BhbiAkaW1wb3J0U3BhbiA9IG51bGw7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHdlJ3JlIGN1cnJlbnRseSBleGVjdXRpbmcgYSBmdW5jdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBib29sICRpbkZ1bmN0aW9uID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHdlJ3JlIGN1cnJlbnRseSBidWlsZGluZyB0aGUgb3V0cHV0IG9mIGFuIHVua25vd24gYXQgcnVsZS4KICAgICAqLwogICAgcHJpdmF0ZSBib29sICRpblVua25vd25BdFJ1bGUgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgd2UncmUgZGlyZWN0bHkgd2l0aGluIGFuIGBAYXQtcm9vdGAgcnVsZSB0aGF0IGV4Y2x1ZGVzIHN0eWxlIHJ1bGVzLgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGF0Um9vdEV4Y2x1ZGluZ1N0eWxlUnVsZSA9IGZhbHNlOwoKICAgIC8qKgogICAgICogV2hldGhlciB3ZSdyZSBjdXJyZW50bHkgYnVpbGRpbmcgdGhlIG91dHB1dCBvZiBhIGBAa2V5ZnJhbWVzYCBydWxlLgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGluS2V5RnJhbWVzID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHdlJ3JlIGN1cnJlbnRseSBldmFsdWF0aW5nIGEge0BzZWUgU3VwcG9ydHNEZWNsYXJhdGlvbn0uCiAgICAgKgogICAgICogV2hlbiB0aGlzIGlzIHRydWUsIGNhbGN1bGF0aW9ucyB3aWxsIG5vdCBiZSBzaW1wbGlmaWVkLgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGluU3VwcG9ydHNEZWNsYXJhdGlvbiA9IGZhbHNlOwoKICAgIC8qKgogICAgICogVGhlIGNhbm9uaWNhbCBVUkxzIG9mIGFsbCBzdHlsZXNoZWV0cyBsb2FkZWQgZHVyaW5nIGNvbXBpbGF0aW9uLgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCB0cnVlPgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICRsb2FkZWRVcmxzID0gW107CgogICAgLyoqCiAgICAgKiBBIG1hcCBmcm9tIGNhbm9uaWNhbCBVUkxzIGZvciBtb2R1bGVzIChvciBpbXBvcnRlZCBmaWxlcykgdGhhdCBhcmUKICAgICAqIGN1cnJlbnRseSBiZWluZyBldmFsdWF0ZWQgdG8gQVNUIG5vZGVzIHdob3NlIHNwYW5zIGluZGljYXRlIHRoZSBvcmlnaW5hbAogICAgICogbG9hZHMgZm9yIHRob3NlIG1vZHVsZXMuCiAgICAgKgogICAgICogTWFwIHZhbHVlcyBtYXkgYmUgYG51bGxgLCB3aGljaCBpbmRpY2F0ZXMgYW4gYWN0aXZlIG1vZHVsZSB0aGF0IGRvZXNuJ3QKICAgICAqIGhhdmUgYSBzb3VyY2Ugc3BhbiBhc3NvY2lhdGVkIHdpdGggaXRzIG9yaWdpbmFsIGxvYWQgKHN1Y2ggYXMgdGhlCiAgICAgKiBlbnRyeXBvaW50IG1vZHVsZSkuCiAgICAgKgogICAgICogVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGdldCBpbnRvIGFuIGluZmluaXRlIGxvYWQgbG9vcC4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgQXN0Tm9kZXxudWxsPgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICRhY3RpdmVNb2R1bGVzID0gW107CgogICAgLyoqCiAgICAgKiBUaGUgZHluYW1pYyBjYWxsIHN0YWNrIHJlcHJlc2VudGluZyBmdW5jdGlvbiBpbnZvY2F0aW9ucywgbWl4aW4KICAgICAqIGludm9jYXRpb25zLCBhbmQgaW1wb3J0cyBzdXJyb3VuZGluZyB0aGUgY3VycmVudCBjb250ZXh0LgogICAgICoKICAgICAqIEVhY2ggbWVtYmVyIGlzIGEgdHVwbGUgb2YgdGhlIHNwYW4gd2hlcmUgdGhlIHN0YWNrIHRyYWNlIHN0YXJ0cyBhbmQgdGhlCiAgICAgKiBuYW1lIG9mIHRoZSBtZW1iZXIgYmVpbmcgaW52b2tlZC4KICAgICAqCiAgICAgKiBUaGlzIHN0b3JlcyB7QHNlZSBBc3ROb2RlfXMgcmF0aGVyIHRoYW4ge0BzZWUgRmlsZVNwYW59cyBzbyBpdCBjYW4gYXZvaWQgY2FsbGluZwogICAgICoge0BzZWUgQXN0Tm9kZTo6Z2V0U3Bhbn0gaWYgdGhlIHNwYW4gaXNuJ3QgcmVxdWlyZWQsIHNpbmNlIHNvbWUgbm9kZXMgbmVlZCB0byBkbwogICAgICogcmVhbCB3b3JrIHRvIG1hbnVmYWN0dXJlIGEgc291cmNlIHNwYW4uCiAgICAgKgogICAgICogQHZhciBsaXN0PGFycmF5e3N0cmluZywgQXN0Tm9kZX0+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJHN0YWNrID0gW107CgogICAgLyoqCiAgICAgKiBUaGUgaW1wb3J0ZXIgdGhhdCdzIGN1cnJlbnRseSBiZWluZyB1c2VkIHRvIHJlc29sdmUgcmVsYXRpdmUgaW1wb3J0cy4KICAgICAqCiAgICAgKiBJZiB0aGlzIGlzIGBudWxsYCwgcmVsYXRpdmUgaW1wb3J0cyBhcmVuJ3Qgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50CiAgICAgKiBzdHlsZXNoZWV0LgogICAgICovCiAgICBwcml2YXRlID9JbXBvcnRlciAkaW1wb3J0ZXIgPSBudWxsOwoKICAgIC8qKgogICAgICogV2hldGhlciB3ZSdyZSBpbiBhIGRlcGVuZGVuY3kuCiAgICAgKgogICAgICogQSBkZXBlbmRlbmN5IGlzIGRlZmluZWQgYXMgYSBzdHlsZXNoZWV0IGltcG9ydGVkIGJ5IGFuIGltcG9ydGVyIG90aGVyIHRoYW4KICAgICAqIHRoZSBvcmlnaW5hbC4KICAgICAqLwogICAgcHJpdmF0ZSBib29sICRpbkRlcGVuZGVuY3kgPSBmYWxzZTsKCiAgICBwcml2YXRlID9TdHlsZXNoZWV0ICRzdHlsZXNoZWV0ID0gbnVsbDsKCiAgICBwcml2YXRlID9Nb2RpZmlhYmxlQ3NzU3R5bGVzaGVldCAkcm9vdCA9IG51bGw7CgogICAgcHJpdmF0ZSA/aW50ICRlbmRPZkltcG9ydHMgPSBudWxsOwoKICAgIC8qKgogICAgICogUGxhaW4tQ1NTIGltcG9ydHMgdGhhdCBkaWRuJ3QgYXBwZWFyIGluIHRoZSBpbml0aWFsIGJsb2NrIG9mIENTUyBpbXBvcnRzLgogICAgICoKICAgICAqIFRoZXNlIGFyZSBhZGRlZCB0byB0aGUgaW5pdGlhbCBDU1MgaW1wb3J0IGJsb2NrIGJ5IHtAc2VlIHZpc2l0U3R5bGVzaGVldH0gYWZ0ZXIKICAgICAqIHRoZSBzdHlsZXNoZWV0IGhhcyBiZWVuIGZ1bGx5IHBlcmZvcm1lZC4KICAgICAqCiAgICAgKiBUaGlzIGlzIGBudWxsYCB1bmxlc3MgdGhlcmUgYXJlIGFueSBvdXQtb2Ytb3JkZXIgaW1wb3J0cyBpbiB0aGUgY3VycmVudAogICAgICogc3R5bGVzaGVldC4KICAgICAqCiAgICAgKiBAdmFyIGxpc3Q8TW9kaWZpYWJsZUNzc0ltcG9ydD58bnVsbAogICAgICovCiAgICBwcml2YXRlID9hcnJheSAkb3V0T2ZPcmRlckltcG9ydHMgPSBudWxsOwoKICAgIHByaXZhdGUgP0V4dGVuc2lvblN0b3JlICRleHRlbnNpb25TdG9yZSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU2Fzc0NhbGxhYmxlW10gJGZ1bmN0aW9ucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoSW1wb3J0Q2FjaGUgJGltcG9ydENhY2hlLCBhcnJheSAkZnVuY3Rpb25zLCBMb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciwgYm9vbCAkcXVpZXREZXBzID0gZmFsc2UsIGJvb2wgJHNvdXJjZU1hcCA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5pbXBvcnRDYWNoZSA9ICRpbXBvcnRDYWNoZTsKICAgICAgICAkdGhpcy0+bG9nZ2VyID0gJGxvZ2dlcjsKICAgICAgICAkdGhpcy0+cXVpZXREZXBzID0gJHF1aWV0RGVwczsKICAgICAgICAkdGhpcy0+c291cmNlTWFwID0gJHNvdXJjZU1hcDsKICAgICAgICAkdGhpcy0+ZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudDo6Y3JlYXRlKCk7CgogICAgICAgICRzYXNzTWV0YVVyaSA9IFVyaTo6bmV3KCdzYXNzOm1ldGEnKTsKICAgICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGV2YWx1YXRvciBiZWNhdXNlCiAgICAgICAgLy8gdGhleSBuZWVkIGFjY2VzcyB0byB0aGUgZW52aXJvbm1lbnQgb3Igb3RoZXIgbG9jYWwgc3RhdGUuCiAgICAgICAgLy8gV2hlbiBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gaGVyZSwgaXRzIG5hbWUgbXVzdCBhbHNvIGJlIGFkZGVkIGluIHtAc2VlIEZ1bmN0aW9uUmVnaXN0cnk6OlNQRUNJQUxfTUVUQV9HTE9CQUxfRlVOQ1RJT05TfS4KICAgICAgICAkbWV0YUZ1bmN0aW9ucyA9IFsKICAgICAgICAgICAgQnVpbHRJbkNhbGxhYmxlOjpmdW5jdGlvbignZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cycsICckbmFtZSwgJG1vZHVsZTogbnVsbCcsIGZ1bmN0aW9uICgkYXJndW1lbnRzKSB7CiAgICAgICAgICAgICAgICAkdmFyaWFibGUgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTdHJpbmcoJ25hbWUnKTsKICAgICAgICAgICAgICAgICRtb2R1bGUgPSAkYXJndW1lbnRzWzFdLT5yZWFsTnVsbCgpPy0+YXNzZXJ0U3RyaW5nKCdtb2R1bGUnKTsKCiAgICAgICAgICAgICAgICBpZiAoJG1vZHVsZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgd2hlbiBpbXBsZW1lbnRpbmcgbW9kdWxlcwogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdTYXNzIG1vZHVsZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoJHRoaXMtPmVudmlyb25tZW50LT5nbG9iYWxWYXJpYWJsZUV4aXN0cyhzdHJfcmVwbGFjZSgnXycsICctJywgJHZhcmlhYmxlLT5nZXRUZXh0KCkpKSk7CiAgICAgICAgICAgIH0sICRzYXNzTWV0YVVyaSksCiAgICAgICAgICAgIEJ1aWx0SW5DYWxsYWJsZTo6ZnVuY3Rpb24oJ3ZhcmlhYmxlLWV4aXN0cycsICckbmFtZScsIGZ1bmN0aW9uICgkYXJndW1lbnRzKSB7CiAgICAgICAgICAgICAgICAkdmFyaWFibGUgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTdHJpbmcoJ25hbWUnKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gU2Fzc0Jvb2xlYW46OmNyZWF0ZSgkdGhpcy0+ZW52aXJvbm1lbnQtPnZhcmlhYmxlRXhpc3RzKHN0cl9yZXBsYWNlKCdfJywgJy0nLCAkdmFyaWFibGUtPmdldFRleHQoKSkpKTsKICAgICAgICAgICAgfSwgJHNhc3NNZXRhVXJpKSwKICAgICAgICAgICAgQnVpbHRJbkNhbGxhYmxlOjpmdW5jdGlvbignZnVuY3Rpb24tZXhpc3RzJywgJyRuYW1lLCAkbW9kdWxlOiBudWxsJywgZnVuY3Rpb24gKCRhcmd1bWVudHMpIHsKICAgICAgICAgICAgICAgICR2YXJpYWJsZSA9ICRhcmd1bWVudHNbMF0tPmFzc2VydFN0cmluZygnbmFtZScpOwogICAgICAgICAgICAgICAgJG1vZHVsZSA9ICRhcmd1bWVudHNbMV0tPnJlYWxOdWxsKCk/LT5hc3NlcnRTdHJpbmcoJ21vZHVsZScpOwoKICAgICAgICAgICAgICAgIGlmICgkbW9kdWxlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyByZW1vdmUgdGhpcyB3aGVuIGltcGxlbWVudGluZyBtb2R1bGVzCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ1Nhc3MgbW9kdWxlcyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gU2Fzc0Jvb2xlYW46OmNyZWF0ZSgkdGhpcy0+ZW52aXJvbm1lbnQtPmZ1bmN0aW9uRXhpc3RzKHN0cl9yZXBsYWNlKCdfJywgJy0nLCAkdmFyaWFibGUtPmdldFRleHQoKSkpIHx8IGlzc2V0KCR0aGlzLT5idWlsdEluRnVuY3Rpb25zWyR2YXJpYWJsZS0+Z2V0VGV4dCgpXSkgfHwgRnVuY3Rpb25SZWdpc3RyeTo6aGFzKCR2YXJpYWJsZS0+Z2V0VGV4dCgpKSk7CiAgICAgICAgICAgIH0sICRzYXNzTWV0YVVyaSksCiAgICAgICAgICAgIEJ1aWx0SW5DYWxsYWJsZTo6ZnVuY3Rpb24oJ21peGluLWV4aXN0cycsICckbmFtZSwgJG1vZHVsZTogbnVsbCcsIGZ1bmN0aW9uICgkYXJndW1lbnRzKSB7CiAgICAgICAgICAgICAgICAkdmFyaWFibGUgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTdHJpbmcoJ25hbWUnKTsKICAgICAgICAgICAgICAgICRtb2R1bGUgPSAkYXJndW1lbnRzWzFdLT5yZWFsTnVsbCgpPy0+YXNzZXJ0U3RyaW5nKCdtb2R1bGUnKTsKCiAgICAgICAgICAgICAgICBpZiAoJG1vZHVsZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgd2hlbiBpbXBsZW1lbnRpbmcgbW9kdWxlcwogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdTYXNzIG1vZHVsZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoJHRoaXMtPmVudmlyb25tZW50LT5taXhpbkV4aXN0cyhzdHJfcmVwbGFjZSgnXycsICctJywgJHZhcmlhYmxlLT5nZXRUZXh0KCkpKSk7CiAgICAgICAgICAgIH0sICRzYXNzTWV0YVVyaSksCiAgICAgICAgICAgIEJ1aWx0SW5DYWxsYWJsZTo6ZnVuY3Rpb24oJ2NvbnRlbnQtZXhpc3RzJywgJycsIGZ1bmN0aW9uICgkYXJndW1lbnRzKSB7CiAgICAgICAgICAgICAgICBpZiAoISAkdGhpcy0+ZW52aXJvbm1lbnQtPmlzSW5NaXhpbigpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ2NvbnRlbnQtZXhpc3RzKCkgbWF5IG9ubHkgYmUgY2FsbGVkIHdpdGhpbiBhIG1peGluLicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBTYXNzQm9vbGVhbjo6Y3JlYXRlKCR0aGlzLT5lbnZpcm9ubWVudC0+Z2V0Q29udGVudCgpICE9PSBudWxsKTsKICAgICAgICAgICAgfSwgJHNhc3NNZXRhVXJpKSwKICAgICAgICAgICAgQnVpbHRJbkNhbGxhYmxlOjpmdW5jdGlvbignZ2V0LWZ1bmN0aW9uJywgJyRuYW1lLCAkY3NzOiBmYWxzZSwgJG1vZHVsZTogbnVsbCcsIGZ1bmN0aW9uICgkYXJndW1lbnRzKSB7CiAgICAgICAgICAgICAgICAkbmFtZSA9ICRhcmd1bWVudHNbMF0tPmFzc2VydFN0cmluZygnbmFtZScpOwogICAgICAgICAgICAgICAgJGNzcyA9ICRhcmd1bWVudHNbMV0tPmlzVHJ1dGh5KCk7CiAgICAgICAgICAgICAgICAkbW9kdWxlID0gJGFyZ3VtZW50c1syXS0+cmVhbE51bGwoKT8tPmFzc2VydFN0cmluZygnbW9kdWxlJyk7CgogICAgICAgICAgICAgICAgaWYgKCRjc3MpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJG1vZHVsZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignJGNzcyBhbmQgJG1vZHVsZSBtYXkgbm90IGJvdGggYmUgcGFzc2VkIGF0IG9uY2UuJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NGdW5jdGlvbihuZXcgUGxhaW5Dc3NDYWxsYWJsZSgkbmFtZS0+Z2V0VGV4dCgpKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgXGFzc2VydCgkdGhpcy0+Y2FsbGFibGVOb2RlICE9PSBudWxsKTsKICAgICAgICAgICAgICAgICRjYWxsYWJsZSA9ICR0aGlzLT5hZGRFeGNlcHRpb25TcGFuKCR0aGlzLT5jYWxsYWJsZU5vZGUsIGZ1bmN0aW9uICgpIHVzZSAoJG5hbWUsICRtb2R1bGUpIHsKICAgICAgICAgICAgICAgICAgICAkbm9ybWFsaXplZE5hbWUgPSBzdHJfcmVwbGFjZSgnXycsICctJywgJG5hbWUtPmdldFRleHQoKSk7CiAgICAgICAgICAgICAgICAgICAgJG5hbWVzcGFjZSA9ICRtb2R1bGU/LT5nZXRUZXh0KCk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkbmFtZXNwYWNlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgd2hlbiBpbXBsZW1lbnRpbmcgbW9kdWxlcwogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignU2FzcyBtb2R1bGVzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0LicpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGxvY2FsID0gJHRoaXMtPmVudmlyb25tZW50LT5nZXRGdW5jdGlvbigkbm9ybWFsaXplZE5hbWUpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJGxvY2FsICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkbG9jYWw7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldEJ1aWx0aW5GdW5jdGlvbigkbm9ybWFsaXplZE5hbWUpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgaWYgKCRjYWxsYWJsZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJGdW5jdGlvbiBub3QgZm91bmQ6ICRuYW1lIik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzRnVuY3Rpb24oJGNhbGxhYmxlKTsKICAgICAgICAgICAgfSwgJHNhc3NNZXRhVXJpKSwKICAgICAgICAgICAgQnVpbHRJbkNhbGxhYmxlOjpmdW5jdGlvbignZ2V0LW1peGluJywgJyRuYW1lLCAkbW9kdWxlOiBudWxsJywgZnVuY3Rpb24gKCRhcmd1bWVudHMpIHsKICAgICAgICAgICAgICAgICRuYW1lID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0U3RyaW5nKCduYW1lJyk7CiAgICAgICAgICAgICAgICAkbW9kdWxlID0gJGFyZ3VtZW50c1sxXS0+cmVhbE51bGwoKT8tPmFzc2VydFN0cmluZygnbW9kdWxlJyk7CgogICAgICAgICAgICAgICAgXGFzc2VydCgkdGhpcy0+Y2FsbGFibGVOb2RlICE9PSBudWxsKTsKICAgICAgICAgICAgICAgICRjYWxsYWJsZSA9ICR0aGlzLT5hZGRFeGNlcHRpb25TcGFuKCR0aGlzLT5jYWxsYWJsZU5vZGUsIGZ1bmN0aW9uICgpIHVzZSAoJG5hbWUsICRtb2R1bGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJG1vZHVsZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIHJlbW92ZSB0aGlzIHdoZW4gaW1wbGVtZW50aW5nIG1vZHVsZXMKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ1Nhc3MgbW9kdWxlcyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4nKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZW52aXJvbm1lbnQtPmdldE1peGluKHN0cl9yZXBsYWNlKCdfJywgJy0nLCAkbmFtZS0+Z2V0VGV4dCgpKSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAoJGNhbGxhYmxlID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIk1peGluIG5vdCBmb3VuZDogJG5hbWUiKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NNaXhpbigkY2FsbGFibGUpOwogICAgICAgICAgICB9LCAkc2Fzc01ldGFVcmkpLAogICAgICAgICAgICBCdWlsdEluQ2FsbGFibGU6OmZ1bmN0aW9uKCdjYWxsJywgJyRmdW5jdGlvbiwgJGFyZ3MuLi4nLCBmdW5jdGlvbiAoJGFyZ3VtZW50cykgewogICAgICAgICAgICAgICAgJGZ1bmN0aW9uID0gJGFyZ3VtZW50c1swXTsKICAgICAgICAgICAgICAgICRhcmdzID0gJGFyZ3VtZW50c1sxXTsKICAgICAgICAgICAgICAgIFxhc3NlcnQoJGFyZ3MgaW5zdGFuY2VvZiBTYXNzQXJndW1lbnRMaXN0KTsKCiAgICAgICAgICAgICAgICAkY2FsbGFibGVOb2RlID0gJHRoaXMtPmNhbGxhYmxlTm9kZTsKICAgICAgICAgICAgICAgIFxhc3NlcnQoJGNhbGxhYmxlTm9kZSAhPT0gbnVsbCk7CgogICAgICAgICAgICAgICAgaWYgKFxjb3VudCgkYXJncy0+Z2V0S2V5d29yZHMoKSkgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAka2V5d29yZFJlc3QgPSBudWxsOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAka2V5d29yZEFyZ3MgPSBuZXcgTWFwKCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ3MtPmdldEtleXdvcmRzKCkgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRrZXl3b3JkQXJncy0+cHV0KG5ldyBTYXNzU3RyaW5nKCRuYW1lLCBmYWxzZSksICR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAka2V5d29yZFJlc3QgPSBuZXcgVmFsdWVFeHByZXNzaW9uKFNhc3NNYXA6OmNyZWF0ZSgka2V5d29yZEFyZ3MpLCAkY2FsbGFibGVOb2RlLT5nZXRTcGFuKCkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRpbnZvY2F0aW9uID0gbmV3IEFyZ3VtZW50SW52b2NhdGlvbihbXSwgW10sICRjYWxsYWJsZU5vZGUtPmdldFNwYW4oKSwgbmV3IFZhbHVlRXhwcmVzc2lvbigkYXJncywgJGNhbGxhYmxlTm9kZS0+Z2V0U3BhbigpKSwgJGtleXdvcmRSZXN0KTsKCiAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uIGluc3RhbmNlb2YgU2Fzc1N0cmluZykgewogICAgICAgICAgICAgICAgICAgIFdhcm46OmZvckRlcHJlY2F0aW9uKCJQYXNzaW5nIGEgc3RyaW5nIHRvIGNhbGwoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIGlsbGVnYWwgaW4gRGFydCBTYXNzIDIuMC4wLlxuXG5SZWNvbW1lbmRhdGlvbjogY2FsbChnZXQtZnVuY3Rpb24oJGZ1bmN0aW9uKSkiLCBEZXByZWNhdGlvbjo6Y2FsbFN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgJGV4cHJlc3Npb24gPSBuZXcgRnVuY3Rpb25FeHByZXNzaW9uKCRmdW5jdGlvbi0+Z2V0VGV4dCgpLCAkaW52b2NhdGlvbiwgJGNhbGxhYmxlTm9kZS0+Z2V0U3BhbigpKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRleHByZXNzaW9uLT5hY2NlcHQoJHRoaXMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjYWxsYWJsZSA9ICRmdW5jdGlvbi0+YXNzZXJ0RnVuY3Rpb24oJ2Z1bmN0aW9uJyktPmdldENhbGxhYmxlKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5ydW5GdW5jdGlvbkNhbGxhYmxlKCRpbnZvY2F0aW9uLCAkY2FsbGFibGUsICRjYWxsYWJsZU5vZGUpOwogICAgICAgICAgICB9LCAkc2Fzc01ldGFVcmkpLAogICAgICAgIF07CgogICAgICAgIGZvcmVhY2ggKCRmdW5jdGlvbnMgYXMgJGZ1bmN0aW9uKSB7CiAgICAgICAgICAgICR0aGlzLT5idWlsdEluRnVuY3Rpb25zW3N0cl9yZXBsYWNlKCdfJywgJy0nLCAkZnVuY3Rpb24tPmdldE5hbWUoKSldID0gJGZ1bmN0aW9uOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkbWV0YUZ1bmN0aW9ucyBhcyAkZnVuY3Rpb24pIHsKICAgICAgICAgICAgJHRoaXMtPmJ1aWx0SW5GdW5jdGlvbnNbJGZ1bmN0aW9uLT5nZXROYW1lKCldID0gJGZ1bmN0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2FsbGFibGVOb2RlKCk6ID9Bc3ROb2RlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jYWxsYWJsZU5vZGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEltcG9ydFNwYW4oKTogP0ZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pbXBvcnRTcGFuOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGN1cnJlbnQgcGFyZW50IG5vZGUgaW4gdGhlIG91dHB1dCBDU1MgdHJlZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRQYXJlbnQoKTogTW9kaWZpYWJsZUNzc1BhcmVudE5vZGUKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnBhcmVudCA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgYWNjZXNzICJnZXRQYXJlbnQiIG91dHNpZGUgb2YgYSBtb2R1bGUuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcmVudDsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFN0eWxlUnVsZSgpOiA/TW9kaWZpYWJsZUNzc1N0eWxlUnVsZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXRSb290RXhjbHVkaW5nU3R5bGVSdWxlID8gbnVsbCA6ICR0aGlzLT5zdHlsZVJ1bGVJZ25vcmluZ0F0Um9vdDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBzdHlsZXNoZWV0IHRoYXQncyBjdXJyZW50bHkgYmVpbmcgZXZhbHVhdGVkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFN0eWxlc2hlZXQoKTogU3R5bGVzaGVldAogICAgewogICAgICAgIGlmICgkdGhpcy0+c3R5bGVzaGVldCA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgYWNjZXNzICJnZXRTdHlsZXNoZWV0IiBvdXRzaWRlIG9mIGEgbW9kdWxlLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHlsZXNoZWV0OwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHJvb3Qgc3R5bGVzaGVldCBub2RlLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFJvb3QoKTogTW9kaWZpYWJsZUNzc1N0eWxlc2hlZXQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnJvb3QgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IGFjY2VzcyAiZ2V0Um9vdCIgb3V0c2lkZSBvZiBhIG1vZHVsZS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+cm9vdDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBmaXJzdCBpbmRleCBpbiBgJHRoaXMtPmdldFJvb3QoKS0+Z2V0Q2hpbGRyZW4oKWAgYWZ0ZXIgdGhlIGluaXRpYWwgYmxvY2sgb2YgQ1NTIGltcG9ydHMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0RW5kT2ZJbXBvcnRzKCk6IGludAogICAgewogICAgICAgIGlmICgkdGhpcy0+ZW5kT2ZJbXBvcnRzID09PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCBhY2Nlc3MgImdldEVuZE9mSW1wb3J0cyIgb3V0c2lkZSBvZiBhIG1vZHVsZS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+ZW5kT2ZJbXBvcnRzOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGV4dGVuc2lvbiBzdG9yZSB0aGF0IHRyYWNrcyBleHRlbnNpb25zIGFuZCBzdHlsZSBydWxlcyBmb3IgdGhlIGN1cnJlbnQKICAgICAqIG1vZHVsZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRFeHRlbnNpb25TdG9yZSgpOiBFeHRlbnNpb25TdG9yZQogICAgewogICAgICAgIGlmICgkdGhpcy0+ZXh0ZW5zaW9uU3RvcmUgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IGFjY2VzcyAiZ2V0RXh0ZW5zaW9uU3RvcmUiIG91dHNpZGUgb2YgYSBtb2R1bGUuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmV4dGVuc2lvblN0b3JlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgVmFsdWU+ICRpbml0aWFsVmFyaWFibGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBydW4oP0ltcG9ydGVyICRpbXBvcnRlciwgU3R5bGVzaGVldCAkbm9kZSwgYXJyYXkgJGluaXRpYWxWYXJpYWJsZXMgPSBbXSk6IEV2YWx1YXRlUmVzdWx0CiAgICB7CiAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25Db250ZXh0Ojp3aXRoRXZhbHVhdGlvbkNvbnRleHQobmV3IFZpc2l0b3JFdmFsdWF0aW9uQ29udGV4dCgkdGhpcywgJG5vZGUpLCBmdW5jdGlvbiAoKSB1c2UgKCRpbXBvcnRlciwgJG5vZGUsICRpbml0aWFsVmFyaWFibGVzKSB7CiAgICAgICAgICAgICR1cmwgPSAkbm9kZS0+Z2V0U3BhbigpLT5nZXRTb3VyY2VVcmwoKTsKCiAgICAgICAgICAgIGlmICgkdXJsICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdXJsU3RyaW5nID0gKHN0cmluZykgJHVybDsKICAgICAgICAgICAgICAgICR0aGlzLT5hY3RpdmVNb2R1bGVzWyR1cmxTdHJpbmddID0gbnVsbDsKICAgICAgICAgICAgICAgIC8vIFRPRE8gY2hlY2sgaG93IHRvIGhhbmRsZSBzdGRpbgogICAgICAgICAgICAgICAgJHRoaXMtPmxvYWRlZFVybHNbJHVybFN0cmluZ10gPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiogQHZhciBFeHRlbnNpb25TdG9yZSAkZXh0ZW5zaW9uU3RvcmUgKi8KICAgICAgICAgICAgWyRjc3MsICRleHRlbnNpb25TdG9yZV0gPSAkdGhpcy0+YWRkRXhjZXB0aW9uVHJhY2UoZm4oKSA9PiAkdGhpcy0+ZXhlY3V0ZSgkaW1wb3J0ZXIsICRub2RlLCAkaW5pdGlhbFZhcmlhYmxlcykpOwogICAgICAgICAgICAkc2VsZWN0b3JzID0gJGV4dGVuc2lvblN0b3JlLT5nZXRTaW1wbGVTZWxlY3RvcnMoKTsKICAgICAgICAgICAgJHVuc2F0aXNmaWVkRXh0ZW5zaW9uID0gSXRlcmFibGVVdGlsOjpmaXJzdE9yTnVsbCgkZXh0ZW5zaW9uU3RvcmUtPmV4dGVuc2lvbnNXaGVyZVRhcmdldChmbiAoU2ltcGxlU2VsZWN0b3IgJHRhcmdldCkgPT4gIUVxdWF0YWJsZVV0aWw6Oml0ZXJhYmxlQ29udGFpbnMoJHNlbGVjdG9ycywgJHRhcmdldCkpKTsKICAgICAgICAgICAgaWYgKCR1bnNhdGlzZmllZEV4dGVuc2lvbiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPnRocm93Rm9yVW5zYXRpc2ZpZWRFeHRlbnNpb24oJHVuc2F0aXNmaWVkRXh0ZW5zaW9uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG5ldyBFdmFsdWF0ZVJlc3VsdCgkY3NzLCBhcnJheV9rZXlzKCR0aGlzLT5sb2FkZWRVcmxzKSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBWYWx1ZT4gJGluaXRpYWxWYXJpYWJsZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e0Nzc1N0eWxlc2hlZXQsIEV4dGVuc2lvblN0b3JlfQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4ZWN1dGUoP0ltcG9ydGVyICRpbXBvcnRlciwgU3R5bGVzaGVldCAkc3R5bGVzaGVldCwgYXJyYXkgJGluaXRpYWxWYXJpYWJsZXMgPSBbXSk6IGFycmF5CiAgICB7CiAgICAgICAgJGVudmlyb25tZW50ID0gRW52aXJvbm1lbnQ6OmNyZWF0ZSgpOwogICAgICAgIGZvcmVhY2ggKCRpbml0aWFsVmFyaWFibGVzIGFzICR2YXJpYWJsZU5hbWUgPT4gJGluaXRpYWxWYXJpYWJsZSkgewogICAgICAgICAgICAkZW52aXJvbm1lbnQtPnNldFZhcmlhYmxlKCR2YXJpYWJsZU5hbWUsICRpbml0aWFsVmFyaWFibGUsIG5ldyBGYWtlQXN0Tm9kZShmbiAoKSA9PiBTb3VyY2VGaWxlOjpmcm9tU3RyaW5nKCcnKS0+c3BhbigwKSkpOwogICAgICAgIH0KCiAgICAgICAgJGNzcyA9IG51bGw7CgogICAgICAgICRleHRlbnNpb25TdG9yZSA9IENvbmNyZXRlRXh0ZW5zaW9uU3RvcmU6OmNyZWF0ZSgpOwoKICAgICAgICAkdGhpcy0+d2l0aEVudmlyb25tZW50KCRlbnZpcm9ubWVudCwgZnVuY3Rpb24gKCkgdXNlICgkaW1wb3J0ZXIsICRzdHlsZXNoZWV0LCAkZXh0ZW5zaW9uU3RvcmUsICYkY3NzKSB7CiAgICAgICAgICAgICRvbGRJbXBvcnRlciA9ICR0aGlzLT5pbXBvcnRlcjsKICAgICAgICAgICAgJG9sZFN0eWxlc2hlZXQgPSAkdGhpcy0+c3R5bGVzaGVldDsKICAgICAgICAgICAgJG9sZFJvb3QgPSAkdGhpcy0+cm9vdDsKICAgICAgICAgICAgJG9sZFBhcmVudCA9ICR0aGlzLT5wYXJlbnQ7CiAgICAgICAgICAgICRvbGRFbmRPZkltcG9ydHMgPSAkdGhpcy0+ZW5kT2ZJbXBvcnRzOwogICAgICAgICAgICAkb2xkT3V0T2ZPcmRlckltcG9ydHMgPSAkdGhpcy0+b3V0T2ZPcmRlckltcG9ydHM7CiAgICAgICAgICAgICRvbGRFeHRlbnNpb25TdG9yZSA9ICR0aGlzLT5leHRlbnNpb25TdG9yZTsKICAgICAgICAgICAgJG9sZFN0eWxlUnVsZSA9ICR0aGlzLT5nZXRTdHlsZVJ1bGUoKTsKICAgICAgICAgICAgJG9sZE1lZGlhUXVlcmllcyA9ICR0aGlzLT5tZWRpYVF1ZXJpZXM7CiAgICAgICAgICAgICRvbGREZWNsYXJhdGlvbk5hbWUgPSAkdGhpcy0+ZGVjbGFyYXRpb25OYW1lOwogICAgICAgICAgICAkb2xkSW5Vbmtub3duQXRSdWxlID0gJHRoaXMtPmluVW5rbm93bkF0UnVsZTsKICAgICAgICAgICAgJG9sZEF0Um9vdEV4Y2x1ZGluZ1N0eWxlUnVsZSA9ICR0aGlzLT5hdFJvb3RFeGNsdWRpbmdTdHlsZVJ1bGU7CiAgICAgICAgICAgICRvbGRJbktleWZyYW1lcyA9ICR0aGlzLT5pbktleUZyYW1lczsKCiAgICAgICAgICAgICR0aGlzLT5pbXBvcnRlciA9ICRpbXBvcnRlcjsKICAgICAgICAgICAgJHRoaXMtPnN0eWxlc2hlZXQgPSAkc3R5bGVzaGVldDsKICAgICAgICAgICAgJHRoaXMtPnJvb3QgPSAkcm9vdCA9IG5ldyBNb2RpZmlhYmxlQ3NzU3R5bGVzaGVldCgkc3R5bGVzaGVldC0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgJHRoaXMtPnBhcmVudCA9ICRyb290OwogICAgICAgICAgICAkdGhpcy0+ZW5kT2ZJbXBvcnRzID0gMDsKICAgICAgICAgICAgJHRoaXMtPm91dE9mT3JkZXJJbXBvcnRzID0gbnVsbDsKICAgICAgICAgICAgJHRoaXMtPmV4dGVuc2lvblN0b3JlID0gJGV4dGVuc2lvblN0b3JlOwogICAgICAgICAgICAkdGhpcy0+c3R5bGVSdWxlSWdub3JpbmdBdFJvb3QgPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+bWVkaWFRdWVyaWVzID0gbnVsbDsKICAgICAgICAgICAgJHRoaXMtPmRlY2xhcmF0aW9uTmFtZSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5pblVua25vd25BdFJ1bGUgPSBmYWxzZTsKICAgICAgICAgICAgJHRoaXMtPmF0Um9vdEV4Y2x1ZGluZ1N0eWxlUnVsZSA9IGZhbHNlOwogICAgICAgICAgICAkdGhpcy0+aW5LZXlGcmFtZXMgPSBmYWxzZTsKCiAgICAgICAgICAgICR0aGlzLT52aXNpdFN0eWxlc2hlZXQoJHN0eWxlc2hlZXQpOwogICAgICAgICAgICAkY3NzID0gJHRoaXMtPm91dE9mT3JkZXJJbXBvcnRzID09PSBudWxsID8gJHJvb3QgOiBuZXcgTW9kaWZpYWJsZUNzc1N0eWxlc2hlZXQoJHN0eWxlc2hlZXQtPmdldFNwYW4oKSwgJHRoaXMtPmFkZE91dE9mT3JkZXJJbXBvcnRzKCkpOwoKICAgICAgICAgICAgJHRoaXMtPmltcG9ydGVyID0gJG9sZEltcG9ydGVyOwogICAgICAgICAgICAkdGhpcy0+c3R5bGVzaGVldCA9ICRvbGRTdHlsZXNoZWV0OwogICAgICAgICAgICAkdGhpcy0+cm9vdCA9ICRvbGRSb290OwogICAgICAgICAgICAkdGhpcy0+cGFyZW50ID0gJG9sZFBhcmVudDsKICAgICAgICAgICAgJHRoaXMtPmVuZE9mSW1wb3J0cyA9ICRvbGRFbmRPZkltcG9ydHM7CiAgICAgICAgICAgICR0aGlzLT5vdXRPZk9yZGVySW1wb3J0cyA9ICRvbGRPdXRPZk9yZGVySW1wb3J0czsKICAgICAgICAgICAgJHRoaXMtPmV4dGVuc2lvblN0b3JlID0gJG9sZEV4dGVuc2lvblN0b3JlOwogICAgICAgICAgICAkdGhpcy0+c3R5bGVSdWxlSWdub3JpbmdBdFJvb3QgPSAkb2xkU3R5bGVSdWxlOwogICAgICAgICAgICAkdGhpcy0+bWVkaWFRdWVyaWVzID0gJG9sZE1lZGlhUXVlcmllczsKICAgICAgICAgICAgJHRoaXMtPmRlY2xhcmF0aW9uTmFtZSA9ICRvbGREZWNsYXJhdGlvbk5hbWU7CiAgICAgICAgICAgICR0aGlzLT5pblVua25vd25BdFJ1bGUgPSAkb2xkSW5Vbmtub3duQXRSdWxlOwogICAgICAgICAgICAkdGhpcy0+YXRSb290RXhjbHVkaW5nU3R5bGVSdWxlID0gJG9sZEF0Um9vdEV4Y2x1ZGluZ1N0eWxlUnVsZTsKICAgICAgICAgICAgJHRoaXMtPmluS2V5RnJhbWVzID0gJG9sZEluS2V5ZnJhbWVzOwogICAgICAgIH0pOwoKICAgICAgICBhc3NlcnQoJGNzcyBpbnN0YW5jZW9mIENzc1N0eWxlc2hlZXQpOwoKICAgICAgICByZXR1cm4gWyRjc3MsICRleHRlbnNpb25TdG9yZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgY29weSBvZiBgJHRoaXMtPmdldFJvb3QoKS0+Z2V0Q2hpbGRyZW5gIHdpdGgge0BzZWUgb3V0T2ZPcmRlckltcG9ydHN9IGluc2VydGVkCiAgICAgKiBhZnRlciB7QHNlZSBlbmRPZkltcG9ydHN9LCBpZiBuZWNlc3NhcnkuCiAgICAgKgogICAgICogQHJldHVybiBsaXN0PE1vZGlmaWFibGVDc3NOb2RlPgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZE91dE9mT3JkZXJJbXBvcnRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5vdXRPZk9yZGVySW1wb3J0cyA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldFJvb3QoKS0+Z2V0Q2hpbGRyZW4oKTsKICAgICAgICB9CgogICAgICAgICRjaGlsZHJlbiA9ICR0aGlzLT5nZXRSb290KCktPmdldENoaWxkcmVuKCk7CgogICAgICAgIGFycmF5X3NwbGljZSgkY2hpbGRyZW4sICR0aGlzLT5nZXRFbmRPZkltcG9ydHMoKSwgMCwgJHRoaXMtPm91dE9mT3JkZXJJbXBvcnRzKTsKCiAgICAgICAgcmV0dXJuIGFycmF5X3ZhbHVlcygkY2hpbGRyZW4pOwogICAgfQoKICAgIC8qKgogICAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpbmRpY2F0aW5nIHRoYXQgJGV4dGVuc2lvbiBpcyB1bnNhdGlzZmllZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0aHJvd0ZvclVuc2F0aXNmaWVkRXh0ZW5zaW9uKEV4dGVuc2lvbiAkZXh0ZW5zaW9uKTogbmV2ZXIKICAgIHsKICAgICAgICB0aHJvdyBuZXcgU2ltcGxlU2Fzc0V4Y2VwdGlvbigKICAgICAgICAgICAgIlRoZSB0YXJnZXQgc2VsZWN0b3Igd2FzIG5vdCBmb3VuZC5cblVzZSBcIkBleHRlbmQgJGV4dGVuc2lvbi0+dGFyZ2V0ICFvcHRpb25hbFwiIHRvIGF2b2lkIHRoaXMgZXJyb3IuIiwKICAgICAgICAgICAgJGV4dGVuc2lvbi0+c3BhbiwKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHBocHN0YW4taW1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFN0eWxlc2hlZXQoU3R5bGVzaGVldCAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDaGlsZHJlbigpIGFzICRjaGlsZCkgewogICAgICAgICAgICAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRBdFJvb3RSdWxlKEF0Um9vdFJ1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICAkdW5wYXJzZWRRdWVyeSA9ICRub2RlLT5nZXRRdWVyeSgpOwoKICAgICAgICBpZiAoJHVucGFyc2VkUXVlcnkgIT09IG51bGwpIHsKICAgICAgICAgICAgWyRyZXNvbHZlZCwgJG1hcF0gPSAkdGhpcy0+cGVyZm9ybUludGVycG9sYXRpb25XaXRoTWFwKCR1bnBhcnNlZFF1ZXJ5LCB0cnVlKTsKICAgICAgICAgICAgJHF1ZXJ5ID0gQXRSb290UXVlcnk6OnBhcnNlKCRyZXNvbHZlZCwgJHRoaXMtPmxvZ2dlciwgbnVsbCwgJG1hcCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gQXRSb290UXVlcnk6OmdldERlZmF1bHQoKTsKICAgICAgICB9CgogICAgICAgICRwYXJlbnQgPSAkdGhpcy0+Z2V0UGFyZW50KCk7CiAgICAgICAgLyoqIEB2YXIgTW9kaWZpYWJsZUNzc1BhcmVudE5vZGVbXSAkaW5jbHVkZWQgKi8KICAgICAgICAkaW5jbHVkZWQgPSBbXTsKCiAgICAgICAgd2hpbGUgKCEkcGFyZW50IGluc3RhbmNlb2YgQ3NzU3R5bGVzaGVldCkgewogICAgICAgICAgICBpZiAoISRxdWVyeS0+ZXhjbHVkZXMoJHBhcmVudCkpIHsKICAgICAgICAgICAgICAgICRpbmNsdWRlZFtdID0gJHBhcmVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGdyYW5kUGFyZW50ID0gJHBhcmVudC0+Z2V0UGFyZW50KCk7CiAgICAgICAgICAgIGlmICgkZ3JhbmRQYXJlbnQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nzc05vZGVzIG11c3QgaGF2ZSBhIENzc1N0eWxlc2hlZXQgdHJhbnNpdGl2ZSBwYXJlbnQgbm9kZS4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBhcmVudCA9ICRncmFuZFBhcmVudDsKICAgICAgICB9CgogICAgICAgICRyb290ID0gJHRoaXMtPnRyaW1JbmNsdWRlZCgkaW5jbHVkZWQpOwoKICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZXhjbHVkZSBhbnkgcnVsZXMsIHdlIGRvbid0IG5lZWQgdG8gdXNlIHRoZSBjb3BpZXMgd2UgbWlnaHQKICAgICAgICAvLyBoYXZlIGNyZWF0ZWQuCiAgICAgICAgaWYgKCRyb290ID09PSAkdGhpcy0+Z2V0UGFyZW50KCkpIHsKICAgICAgICAgICAgJHRoaXMtPmVudmlyb25tZW50LT5zY29wZShmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbm9kZS0+Z2V0Q2hpbGRyZW4oKSBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgICAgICAgICAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sICRub2RlLT5oYXNEZWNsYXJhdGlvbnMoKSk7CgogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRpbm5lckNvcHkgPSAkcm9vdDsKICAgICAgICBpZiAoIWVtcHR5KCRpbmNsdWRlZCkpIHsKICAgICAgICAgICAgJGlubmVyQ29weSA9ICRpbmNsdWRlZFswXS0+Y29weVdpdGhvdXRDaGlsZHJlbigpOwogICAgICAgICAgICAkb3V0ZXJDb3B5ID0gJGlubmVyQ29weTsKCiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3NsaWNlKCRpbmNsdWRlZCwgMSkgYXMgJGluY2x1ZGVkTm9kZSkgewogICAgICAgICAgICAgICAgJGNvcHkgPSAkaW5jbHVkZWROb2RlLT5jb3B5V2l0aG91dENoaWxkcmVuKCk7CiAgICAgICAgICAgICAgICAkY29weS0+YWRkQ2hpbGQoJG91dGVyQ29weSk7CiAgICAgICAgICAgICAgICAkb3V0ZXJDb3B5ID0gJGNvcHk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyb290LT5hZGRDaGlsZCgkb3V0ZXJDb3B5KTsKICAgICAgICB9CgogICAgICAgICRzY29wZSA9ICR0aGlzLT5zY29wZUZvckF0Um9vdCgkbm9kZSwgJGlubmVyQ29weSwgJHF1ZXJ5LCAkaW5jbHVkZWQpOwogICAgICAgICRzY29wZShmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDaGlsZHJlbigpIGFzICRjaGlsZCkgewogICAgICAgICAgICAgICAgJGNoaWxkLT5hY2NlcHQoJHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHNjb3BlIGNhbGxiYWNrIGZvciAkcXVlcnkuCiAgICAgKgogICAgICogVGhpcyByZXR1cm5zIGEgY2FsbGJhY2sgdGhhdCBhZGp1c3RzIHZhcmlvdXMgaW5zdGFuY2UgdmFyaWFibGVzIGZvciBpdHMKICAgICAqIGR1cmF0aW9uLCBiYXNlZCBvbiB3aGljaCBydWxlcyBhcmUgZXhjbHVkZWQgYnkgJHF1ZXJ5LiBJdCBhbHdheXMgYXNzaWducwogICAgICoge0BzZWUgcGFyZW50fSB0byAkbmV3UGFyZW50LgogICAgICoKICAgICAqIEBwYXJhbSBNb2RpZmlhYmxlQ3NzUGFyZW50Tm9kZVtdICRpbmNsdWRlZAogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUoKGNhbGxhYmxlKCk6IHZvaWQpKTogdm9pZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNjb3BlRm9yQXRSb290KEF0Um9vdFJ1bGUgJG5vZGUsIE1vZGlmaWFibGVDc3NQYXJlbnROb2RlICRuZXdQYXJlbnQsIEF0Um9vdFF1ZXJ5ICRxdWVyeSwgYXJyYXkgJGluY2x1ZGVkKTogY2FsbGFibGUKICAgIHsKICAgICAgICAkc2NvcGUgPSBmdW5jdGlvbiAoY2FsbGFibGUgJGNhbGxiYWNrKSB1c2UgKCRuZXdQYXJlbnQsICRub2RlKSB7CiAgICAgICAgICAgIC8vIFdlIGNhbid0IHVzZSAgKnJlbnQgaGVyZSBiZWNhdXNlIGl0J2xsIGFkZCB0aGUgbm9kZSB0byB0aGUgdHJlZQogICAgICAgICAgICAvLyBpbiB0aGUgd3JvbmcgcGxhY2UuCiAgICAgICAgICAgICRvbGRQYXJlbnQgPSAkdGhpcy0+cGFyZW50OwogICAgICAgICAgICAkdGhpcy0+cGFyZW50ID0gJG5ld1BhcmVudDsKICAgICAgICAgICAgJHRoaXMtPmVudmlyb25tZW50LT5zY29wZSgkY2FsbGJhY2ssICRub2RlLT5oYXNEZWNsYXJhdGlvbnMoKSk7CiAgICAgICAgICAgICR0aGlzLT5wYXJlbnQgPSAkb2xkUGFyZW50OwogICAgICAgIH07CgogICAgICAgIGlmICgkcXVlcnktPmV4Y2x1ZGVzU3R5bGVSdWxlcygpKSB7CiAgICAgICAgICAgICRpbm5lclNjb3BlID0gJHNjb3BlOwogICAgICAgICAgICAkc2NvcGUgPSBmdW5jdGlvbiAoY2FsbGFibGUgJGNhbGxiYWNrKSB1c2UgKCRpbm5lclNjb3BlKSB7CiAgICAgICAgICAgICAgICAkb2xkQXRSb290RXhjbHVkaW5nU3R5bGVSdWxlID0gJHRoaXMtPmF0Um9vdEV4Y2x1ZGluZ1N0eWxlUnVsZTsKICAgICAgICAgICAgICAgICR0aGlzLT5hdFJvb3RFeGNsdWRpbmdTdHlsZVJ1bGUgPSB0cnVlOwogICAgICAgICAgICAgICAgJGlubmVyU2NvcGUoJGNhbGxiYWNrKTsKICAgICAgICAgICAgICAgICR0aGlzLT5hdFJvb3RFeGNsdWRpbmdTdHlsZVJ1bGUgPSAkb2xkQXRSb290RXhjbHVkaW5nU3R5bGVSdWxlOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5tZWRpYVF1ZXJpZXMgIT09IG51bGwgJiYgJHF1ZXJ5LT5leGNsdWRlc05hbWUoJ21lZGlhJykpIHsKICAgICAgICAgICAgJGlubmVyU2NvcGUgPSAkc2NvcGU7CiAgICAgICAgICAgICRzY29wZSA9IGZ1bmN0aW9uIChjYWxsYWJsZSAkY2FsbGJhY2spIHVzZSAoJGlubmVyU2NvcGUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aXRoTWVkaWFRdWVyaWVzKG51bGwsIG51bGwsIGZ1bmN0aW9uICgpIHVzZSAoJGlubmVyU2NvcGUsICRjYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAgICRpbm5lclNjb3BlKCRjYWxsYmFjayk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+aW5LZXlGcmFtZXMgJiYgJHF1ZXJ5LT5leGNsdWRlc05hbWUoJ2tleWZyYW1lcycpKSB7CiAgICAgICAgICAgICRpbm5lclNjb3BlID0gJHNjb3BlOwogICAgICAgICAgICAkc2NvcGUgPSBmdW5jdGlvbiAoY2FsbGFibGUgJGNhbGxiYWNrKSB1c2UgKCRpbm5lclNjb3BlKSB7CiAgICAgICAgICAgICAgICAkd2FzSW5LZXlmcmFtZXMgPSAkdGhpcy0+aW5LZXlGcmFtZXM7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW5LZXlGcmFtZXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICRpbm5lclNjb3BlKCRjYWxsYmFjayk7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW5LZXlGcmFtZXMgPSAkd2FzSW5LZXlmcmFtZXM7CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmluVW5rbm93bkF0UnVsZSAmJiAhSXRlcmFibGVVdGlsOjphbnkoJGluY2x1ZGVkLCBmbigkcGFyZW50KSA9PiAkcGFyZW50IGluc3RhbmNlb2YgQ3NzQXRSdWxlKSkgewogICAgICAgICAgICAkaW5uZXJTY29wZSA9ICRzY29wZTsKICAgICAgICAgICAgJHNjb3BlID0gZnVuY3Rpb24gKGNhbGxhYmxlICRjYWxsYmFjaykgdXNlICgkaW5uZXJTY29wZSkgewogICAgICAgICAgICAgICAgJHdhc0luVW5rbm93bkF0UnVsZSA9ICR0aGlzLT5pblVua25vd25BdFJ1bGU7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW5Vbmtub3duQXRSdWxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkaW5uZXJTY29wZSgkY2FsbGJhY2spOwogICAgICAgICAgICAgICAgJHRoaXMtPmluVW5rbm93bkF0UnVsZSA9ICR3YXNJblVua25vd25BdFJ1bGU7CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNjb3BlOwogICAgfQoKICAgIC8qKgogICAgICogRGVzdHJ1Y3RpdmVseSB0cmltcyBhIHRyYWlsaW5nIHN1Ymxpc3QgZnJvbSAkbm9kZXMgdGhhdCBtYXRjaGVzIHRoZQogICAgICogY3VycmVudCBsaXN0IG9mIHBhcmVudHMuCiAgICAgKgogICAgICogJG5vZGVzIHNob3VsZCBiZSBhIGxpc3Qgb2YgcGFyZW50cyBpbmNsdWRlZCBieSBhbiBgQGF0LXJvb3RgIHJ1bGUsIGZyb20KICAgICAqIGlubmVybW9zdCB0byBvdXRlcm1vc3QuIElmIGl0IGNvbnRhaW5zIGEgdHJhaWxpbmcgc3VibGlzdCB0aGF0J3MKICAgICAqIGNvbnRpZ3VvdXPigJRtZWFuaW5nIHRoYXQgZWFjaCBub2RlIGlzIGEgZGlyZWN0IHBhcmVudCBvZiB0aGUgbm9kZSBiZWZvcmUKICAgICAqIGl04oCUYW5kIHdob3NlIGZpbmFsIG5vZGUgaXMgYSBkaXJlY3QgY2hpbGQgb2Yge0BzZWUgZ2V0Um9vdH0sIHRoaXMgcmVtb3ZlcyB0aGF0CiAgICAgKiBzdWJsaXN0IGFuZCByZXR1cm5zIHRoZSBpbm5lcm1vc3QgcmVtb3ZlZCBwYXJlbnQuCiAgICAgKgogICAgICogT3RoZXJ3aXNlLCB0aGlzIGxlYXZlcyAkbm9kZXMgYXMtaXMgYW5kIHJldHVybnMge0BzZWUgZ2V0Um9vdH0uCiAgICAgKgogICAgICogQHBhcmFtIE1vZGlmaWFibGVDc3NQYXJlbnROb2RlW10gJG5vZGVzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJpbUluY2x1ZGVkKGFycmF5ICYkbm9kZXMpOiBNb2RpZmlhYmxlQ3NzUGFyZW50Tm9kZQogICAgewogICAgICAgIGlmIChlbXB0eSgkbm9kZXMpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Um9vdCgpOwogICAgICAgIH0KCiAgICAgICAgJHBhcmVudCA9ICR0aGlzLT5nZXRQYXJlbnQoKTsKICAgICAgICAkaW5uZXJtb3N0Q29udGlndW91cyA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCRub2RlcyBhcyAkaSA9PiAkbm9kZSkgewogICAgICAgICAgICB3aGlsZSAoJHBhcmVudCAhPT0gJG5vZGUpIHsKICAgICAgICAgICAgICAgICRpbm5lcm1vc3RDb250aWd1b3VzID0gbnVsbDsKCiAgICAgICAgICAgICAgICAkZ3JhbmRQYXJlbnQgPSAkcGFyZW50LT5nZXRQYXJlbnQoKTsKICAgICAgICAgICAgICAgIGlmICgkZ3JhbmRQYXJlbnQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdFeHBlY3RlZCB0aGUgbm9kZSB0byBiZSBhbiBhbmNlc3Rvci4nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcGFyZW50ID0gJGdyYW5kUGFyZW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaW5uZXJtb3N0Q29udGlndW91cyA9ICRpbm5lcm1vc3RDb250aWd1b3VzID8/ICRpOwoKICAgICAgICAgICAgJGdyYW5kUGFyZW50ID0gJHBhcmVudC0+Z2V0UGFyZW50KCk7CiAgICAgICAgICAgIGlmICgkZ3JhbmRQYXJlbnQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0V4cGVjdGVkIHRoZSBub2RlIHRvIGJlIGFuIGFuY2VzdG9yLicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGFyZW50ID0gJGdyYW5kUGFyZW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwYXJlbnQgIT09ICR0aGlzLT5nZXRSb290KCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRSb290KCk7CiAgICAgICAgfQoKICAgICAgICAkcm9vdCA9ICRub2Rlc1skaW5uZXJtb3N0Q29udGlndW91c107CiAgICAgICAgYXJyYXlfc3BsaWNlKCRub2RlcywgJGlubmVybW9zdENvbnRpZ3VvdXMpOwoKICAgICAgICByZXR1cm4gJHJvb3Q7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29udGVudEJsb2NrKENvbnRlbnRCbG9jayAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbignRXZhbHVhdGlvbiBoYW5kbGVzIEBpbmNsdWRlIGFuZCBpdHMgY29udGVudCBibG9jayB0b2dldGhlci4nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb250ZW50UnVsZShDb250ZW50UnVsZSAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgICRjb250ZW50ID0gJHRoaXMtPmVudmlyb25tZW50LT5nZXRDb250ZW50KCk7CgogICAgICAgIGlmICgkY29udGVudCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5ydW5Vc2VyRGVmaW5lZENhbGxhYmxlKCRub2RlLT5nZXRBcmd1bWVudHMoKSwgJGNvbnRlbnQsICRub2RlLCBmdW5jdGlvbiAoKSB1c2UgKCRjb250ZW50KSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRjb250ZW50LT5nZXREZWNsYXJhdGlvbigpLT5nZXRDaGlsZHJlbigpIGFzICRzdGF0ZW1lbnQpIHsKICAgICAgICAgICAgICAgICRzdGF0ZW1lbnQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXREZWJ1Z1J1bGUoRGVidWdSdWxlICRub2RlKTogP1ZhbHVlCiAgICB7CiAgICAgICAgJHZhbHVlID0gJG5vZGUtPmdldEV4cHJlc3Npb24oKS0+YWNjZXB0KCR0aGlzKTsKICAgICAgICAkdGhpcy0+bG9nZ2VyLT5kZWJ1ZygkdmFsdWUgaW5zdGFuY2VvZiBTYXNzU3RyaW5nID8gJHZhbHVlLT5nZXRUZXh0KCkgOiAoc3RyaW5nKSAkdmFsdWUsICRub2RlLT5nZXRTcGFuKCkpOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXREZWNsYXJhdGlvbihEZWNsYXJhdGlvbiAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgIGlmICgkdGhpcy0+Z2V0U3R5bGVSdWxlKCkgPT09IG51bGwgJiYgISR0aGlzLT5pblVua25vd25BdFJ1bGUgJiYgISR0aGlzLT5pbktleUZyYW1lcykgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCdEZWNsYXJhdGlvbnMgbWF5IG9ubHkgYmUgdXNlZCB3aXRoaW4gc3R5bGUgcnVsZXMuJywgJG5vZGUtPmdldFNwYW4oKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmRlY2xhcmF0aW9uTmFtZSAhPT0gbnVsbCAmJiAkbm9kZS0+aXNDdXN0b21Qcm9wZXJ0eSgpKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oJ0RlY2xhcmF0aW9ucyB3aG9zZSBuYW1lcyBiZWdpbiB3aXRoICItLSIgbWF5IG5vdCBiZSBuZXN0ZWQuJywgJG5vZGUtPmdldFNwYW4oKSk7CiAgICAgICAgfQoKICAgICAgICBcYXNzZXJ0KCR0aGlzLT5nZXRQYXJlbnQoKS0+Z2V0UGFyZW50KCkgIT09IG51bGwpOwogICAgICAgICRzaWJsaW5ncyA9ICR0aGlzLT5nZXRQYXJlbnQoKS0+Z2V0UGFyZW50KCktPmdldENoaWxkcmVuKCk7CiAgICAgICAgJGludGVybGVhdmVkUnVsZXMgPSBbXTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICBMaXN0VXRpbDo6bGFzdCgkc2libGluZ3MpICE9PSAkdGhpcy0+Z2V0UGFyZW50KCkKICAgICAgICAgICAgLy8gUmVwcm9kdWNlIHRoaXMgY29uZGl0aW9uIGZyb20ge0BzZWUgd2Fybn0gc28gdGhhdCB3ZSBkb24ndCBhZGQgYW55dGhpbmcgdG8KICAgICAgICAgICAgLy8gJGludGVybGVhdmVkUnVsZXMgZm9yIGRlY2xhcmF0aW9ucyBpbiBkZXBlbmRlbmNpZXMuCiAgICAgICAgICAgICYmICEoJHRoaXMtPnF1aWV0RGVwcyAmJiAoJHRoaXMtPmluRGVwZW5kZW5jeSB8fCAoJHRoaXMtPmN1cnJlbnRDYWxsYWJsZT8tPmlzSW5EZXBlbmRlbmN5KCkgPz8gZmFsc2UpKSkKICAgICAgICApIHsKICAgICAgICAgICAgJHBhcmVudE9mZnNldCA9IGFycmF5X3NlYXJjaCgkdGhpcy0+Z2V0UGFyZW50KCksICRzaWJsaW5ncywgdHJ1ZSk7CiAgICAgICAgICAgIGlmICgkcGFyZW50T2Zmc2V0ID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJHBhcmVudE9mZnNldCA9IC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3NsaWNlKCRzaWJsaW5ncywgJHBhcmVudE9mZnNldCArIDEpIGFzICRzaWJsaW5nKSB7CiAgICAgICAgICAgICAgICBpZiAoJHNpYmxpbmcgaW5zdGFuY2VvZiBDc3NDb21tZW50KSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRzaWJsaW5nIGluc3RhbmNlb2YgQ3NzU3R5bGVSdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgJGludGVybGVhdmVkUnVsZXNbXSA9ICRzaWJsaW5nOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEFsd2F5cyB3YXJuIGZvciBzaWJsaW5ncyB0aGF0IGFyZW4ndCBzdHlsZSBydWxlcywgYmVjYXVzZSB0aGV5CiAgICAgICAgICAgICAgICAvLyBhZGQgbm8gc3BlY2lmaWNpdHkgYW5kIHRoZXkncmUgbmVzdGVkIGluIHRoZSBzYW1lIHBhcmVudCBhcyB0aGlzCiAgICAgICAgICAgICAgICAvLyBkZWNsYXJhdGlvbi4KICAgICAgICAgICAgICAgICR0aGlzLT53YXJuKAogICAgICAgICAgICAgICAgICAgIDw8PCdNRVNTQUdFJwogICAgICAgICAgICAgICAgICAgIFNhc3MncyBiZWhhdmlvciBmb3IgZGVjbGFyYXRpb25zIHRoYXQgYXBwZWFyIGFmdGVyIG5lc3RlZAogICAgICAgICAgICAgICAgICAgIHJ1bGVzIHdpbGwgYmUgY2hhbmdpbmcgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIHNwZWNpZmllZCBieSBDU1MgaW4gYW4gdXBjb21pbmcKICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLiBUbyBrZWVwIHRoZSBleGlzdGluZyBiZWhhdmlvciwgbW92ZSB0aGUgZGVjbGFyYXRpb24gYWJvdmUgdGhlIG5lc3RlZAogICAgICAgICAgICAgICAgICAgIHJ1bGUuIFRvIG9wdCBpbnRvIHRoZSBuZXcgYmVoYXZpb3IsIHdyYXAgdGhlIGRlY2xhcmF0aW9uIGluIGAmIHt9YC4KCiAgICAgICAgICAgICAgICAgICAgTW9yZSBpbmZvOiBodHRwczovL3Nhc3MtbGFuZy5jb20vZC9taXhlZC1kZWNscwogICAgICAgICAgICAgICAgICAgIE1FU1NBR0UsCiAgICAgICAgICAgICAgICAgICAgbmV3IE11bHRpU3Bhbigkbm9kZS0+Z2V0U3BhbigpLCAnZGVjbGFyYXRpb24nLCBbCiAgICAgICAgICAgICAgICAgICAgICAgICduZXN0ZWQgcnVsZScgPT4gJHNpYmxpbmctPmdldFNwYW4oKSwKICAgICAgICAgICAgICAgICAgICBdKSwKICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbjo6bWl4ZWREZWNscwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRpbnRlcmxlYXZlZFJ1bGVzID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRuYW1lID0gJHRoaXMtPmludGVycG9sYXRpb25Ub1ZhbHVlKCRub2RlLT5nZXROYW1lKCksIHRydWUpOwoKICAgICAgICBpZiAoJHRoaXMtPmRlY2xhcmF0aW9uTmFtZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkbmFtZSA9IG5ldyBDc3NWYWx1ZSgkdGhpcy0+ZGVjbGFyYXRpb25OYW1lIC4gJy0nIC4gJG5hbWUtPmdldFZhbHVlKCksICRuYW1lLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgJGV4cHJlc3Npb24gPSAkbm9kZS0+Z2V0VmFsdWUoKTsKICAgICAgICBpZiAoJGV4cHJlc3Npb24gIT09IG51bGwpIHsKICAgICAgICAgICAgJHZhbHVlID0gJGV4cHJlc3Npb24tPmFjY2VwdCgkdGhpcyk7CgogICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgYW4gZW1wdHkgbGlzdCwgcHJlc2VydmUgaXQsIGJlY2F1c2UgY29udmVydGluZyBpdCB0byBDU1MKICAgICAgICAgICAgLy8gd2lsbCB0aHJvdyBhbiBlcnJvciB0aGF0IHdlIHdhbnQgdGhlIHVzZXIgdG8gc2VlLgoKICAgICAgICAgICAgaWYgKCEkdmFsdWUtPmlzQmxhbmsoKSB8fCBlbXB0eSgkdmFsdWUtPmFzTGlzdCgpKSkgewogICAgICAgICAgICAgICAgJHZhbHVlU3BhbkZvck1hcCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNvdXJjZU1hcCAmJiAkbm9kZS0+Z2V0VmFsdWUoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICR2YWx1ZVNwYW5Gb3JNYXAgPSAkdGhpcy0+ZXhwcmVzc2lvbk5vZGUoJG5vZGUtPmdldFZhbHVlKCkpLT5nZXRTcGFuKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPmdldFBhcmVudCgpLT5hZGRDaGlsZChuZXcgTW9kaWZpYWJsZUNzc0RlY2xhcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICRuYW1lLAogICAgICAgICAgICAgICAgICAgIG5ldyBDc3NWYWx1ZSgkdmFsdWUsICRleHByZXNzaW9uLT5nZXRTcGFuKCkpLAogICAgICAgICAgICAgICAgICAgICRub2RlLT5nZXRTcGFuKCksCiAgICAgICAgICAgICAgICAgICAgJG5vZGUtPmlzQ3VzdG9tUHJvcGVydHkoKSwKICAgICAgICAgICAgICAgICAgICAkaW50ZXJsZWF2ZWRSdWxlcywKICAgICAgICAgICAgICAgICAgICAkaW50ZXJsZWF2ZWRSdWxlcyA9PT0gW10gPyBudWxsIDogJHRoaXMtPnN0YWNrVHJhY2UoJG5vZGUtPmdldFNwYW4oKSksCiAgICAgICAgICAgICAgICAgICAgJHZhbHVlU3BhbkZvck1hcCwKICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICB9IGVsc2VpZiAoc3RyX3N0YXJ0c193aXRoKCRuYW1lLT5nZXRWYWx1ZSgpLCAnLS0nKSkgewogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbignQ3VzdG9tIHByb3BlcnR5IHZhbHVlcyBtYXkgbm90IGJlIGVtcHR5LicsICRleHByZXNzaW9uLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkY2hpbGRyZW4gPSAkbm9kZS0+Z2V0Q2hpbGRyZW4oKTsKICAgICAgICBpZiAoJGNoaWxkcmVuICE9PSBudWxsKSB7CiAgICAgICAgICAgICRvbGREZWNsYXJhdGlvbk5hbWUgPSAkdGhpcy0+ZGVjbGFyYXRpb25OYW1lOwogICAgICAgICAgICAkdGhpcy0+ZGVjbGFyYXRpb25OYW1lID0gJG5hbWUtPmdldFZhbHVlKCk7CiAgICAgICAgICAgICR0aGlzLT5lbnZpcm9ubWVudC0+c2NvcGUoZnVuY3Rpb24gKCkgdXNlICgkY2hpbGRyZW4pIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjaGlsZHJlbiBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgICAgICAgICAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sICRub2RlLT5oYXNEZWNsYXJhdGlvbnMoKSk7CiAgICAgICAgICAgICR0aGlzLT5kZWNsYXJhdGlvbk5hbWUgPSAkb2xkRGVjbGFyYXRpb25OYW1lOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0RWFjaFJ1bGUoRWFjaFJ1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICAkbGlzdCA9ICRub2RlLT5nZXRMaXN0KCktPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgJG5vZGVXaXRoU3BhbiA9ICR0aGlzLT5leHByZXNzaW9uTm9kZSgkbm9kZS0+Z2V0TGlzdCgpKTsKCiAgICAgICAgaWYgKFxjb3VudCgkbm9kZS0+Z2V0VmFyaWFibGVzKCkpID09PSAxKSB7CiAgICAgICAgICAgICR2YXJpYWJsZU5hbWUgPSAkbm9kZS0+Z2V0VmFyaWFibGVzKClbMF07CiAgICAgICAgICAgICRzZXRWYXJpYWJsZXMgPSBmdW5jdGlvbiAoVmFsdWUgJHZhbHVlKSB1c2UgKCR2YXJpYWJsZU5hbWUsICRub2RlV2l0aFNwYW4pIHsKICAgICAgICAgICAgICAgICR0aGlzLT5lbnZpcm9ubWVudC0+c2V0TG9jYWxWYXJpYWJsZSgkdmFyaWFibGVOYW1lLCAkdGhpcy0+d2l0aG91dFNsYXNoKCR2YWx1ZSwgJG5vZGVXaXRoU3BhbiksICRub2RlV2l0aFNwYW4pOwogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR2YXJpYWJsZXMgPSAkbm9kZS0+Z2V0VmFyaWFibGVzKCk7CiAgICAgICAgICAgICRzZXRWYXJpYWJsZXMgPSBmdW5jdGlvbiAoVmFsdWUgJHZhbHVlKSB1c2UgKCR2YXJpYWJsZXMsICRub2RlV2l0aFNwYW4pIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRNdWx0aXBsZVZhcmlhYmxlcygkdmFyaWFibGVzLCAkdmFsdWUsICRub2RlV2l0aFNwYW4pOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5lbnZpcm9ubWVudC0+c2NvcGUoZnVuY3Rpb24gKCkgdXNlICgkbGlzdCwgJHNldFZhcmlhYmxlcywgJG5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVSZXR1cm4oJGxpc3QtPmFzTGlzdCgpLCBmdW5jdGlvbiAoJGVsZW1lbnQpIHVzZSAoJHNldFZhcmlhYmxlcywgJG5vZGUpIHsKICAgICAgICAgICAgICAgICRzZXRWYXJpYWJsZXMoJGVsZW1lbnQpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGFuZGxlUmV0dXJuKCRub2RlLT5nZXRDaGlsZHJlbigpLCBmbihTdGF0ZW1lbnQgJGNoaWxkKSA9PiAkY2hpbGQtPmFjY2VwdCgkdGhpcykpOwogICAgICAgICAgICB9KTsKICAgICAgICB9LCB0cnVlLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIERlc3RydWN0dXJlcyAkdmFsdWUgYW5kIGFzc2lnbnMgaXQgdG8gJHZhcmlhYmxlcywgYXMgaW4gYW4gYEBlYWNoYAogICAgICogc3RhdGVtZW50LgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJHZhcmlhYmxlcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldE11bHRpcGxlVmFyaWFibGVzKGFycmF5ICR2YXJpYWJsZXMsIFZhbHVlICR2YWx1ZSwgQXN0Tm9kZSAkbm9kZVdpdGhTcGFuKTogdm9pZAogICAgewogICAgICAgICRsaXN0ID0gJHZhbHVlLT5hc0xpc3QoKTsKICAgICAgICAkbWluTGVuZ3RoID0gbWluKFxjb3VudCgkdmFyaWFibGVzKSwgXGNvdW50KCRsaXN0KSk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRtaW5MZW5ndGg7ICRpKyspIHsKICAgICAgICAgICAgJHRoaXMtPmVudmlyb25tZW50LT5zZXRMb2NhbFZhcmlhYmxlKCR2YXJpYWJsZXNbJGldLCAkdGhpcy0+d2l0aG91dFNsYXNoKCRsaXN0WyRpXSwgJG5vZGVXaXRoU3BhbiksICRub2RlV2l0aFNwYW4pOwogICAgICAgIH0KCiAgICAgICAgZm9yICgkaSA9ICRtaW5MZW5ndGg7ICRpIDwgXGNvdW50KCR2YXJpYWJsZXMpOyAkaSsrKSB7CiAgICAgICAgICAgICR0aGlzLT5lbnZpcm9ubWVudC0+c2V0TG9jYWxWYXJpYWJsZSgkdmFyaWFibGVzWyRpXSwgU2Fzc051bGw6OmNyZWF0ZSgpLCAkbm9kZVdpdGhTcGFuKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0RXJyb3JSdWxlKEVycm9yUnVsZSAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oKHN0cmluZykgJG5vZGUtPmdldEV4cHJlc3Npb24oKS0+YWNjZXB0KCR0aGlzKSwgJG5vZGUtPmdldFNwYW4oKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0RXh0ZW5kUnVsZShFeHRlbmRSdWxlICRub2RlKTogP1ZhbHVlCiAgICB7CiAgICAgICAgJHN0eWxlUnVsZSA9ICR0aGlzLT5nZXRTdHlsZVJ1bGUoKTsKICAgICAgICBpZiAoJHN0eWxlUnVsZSA9PT0gbnVsbCB8fCAkdGhpcy0+ZGVjbGFyYXRpb25OYW1lICE9PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oJ0BleHRlbmQgbWF5IG9ubHkgYmUgdXNlZCB3aXRoaW4gc3R5bGUgcnVsZXMuJywgJG5vZGUtPmdldFNwYW4oKSk7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkc3R5bGVSdWxlLT5nZXRPcmlnaW5hbFNlbGVjdG9yKCktPmdldENvbXBvbmVudHMoKSBhcyAkY29tcGxleCkgewogICAgICAgICAgICBpZiAoISRjb21wbGV4LT5pc0JvZ3VzKCkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2VsZWN0b3JTdHJpbmcgPSB0cmltKCRjb21wbGV4KTsKICAgICAgICAgICAgJHZlcmIgPSAkY29tcGxleC0+aXNVc2VsZXNzKCkgPyAiY2FuJ3QiIDogInNob3VsZG4ndCI7CgogICAgICAgICAgICAkdGhpcy0+d2FybigKICAgICAgICAgICAgICAgICJUaGUgc2VsZWN0b3IgXCIkc2VsZWN0b3JTdHJpbmdcIiBpcyBpbnZhbGlkIENTUyBhbmQgJHZlcmIgYmUgYW4gZXh0ZW5kZXIuXG5UaGlzIHdpbGwgYmUgYW4gZXJyb3IgaW4gRGFydCBTYXNzIDIuMC4wLlxuXG5Nb3JlIGluZm86IGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL2JvZ3VzLWNvbWJpbmF0b3JzIiwKICAgICAgICAgICAgICAgIG5ldyBNdWx0aVNwYW4oU3BhblV0aWw6OnRyaW1SaWdodCgkY29tcGxleC0+Z2V0U3BhbigpKSwgJ2ludmFsaWQgc2VsZWN0b3InLCBbCiAgICAgICAgICAgICAgICAgICAgJ0BleHRlbmQgcnVsZScgPT4gJG5vZGUtPmdldFNwYW4oKSwKICAgICAgICAgICAgICAgIF0pLAogICAgICAgICAgICAgICAgRGVwcmVjYXRpb246OmJvZ3VzQ29tYmluYXRvcnMKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIFskdGFyZ2V0VGV4dCwgJHRhcmdldE1hcF0gPSAkdGhpcy0+cGVyZm9ybUludGVycG9sYXRpb25XaXRoTWFwKCRub2RlLT5nZXRTZWxlY3RvcigpLCB0cnVlKTsKICAgICAgICAkbGlzdCA9IFNlbGVjdG9yTGlzdDo6cGFyc2UoU3RyaW5nVXRpbDo6dHJpbUFzY2lpKCR0YXJnZXRUZXh0LCB0cnVlKSwgJHRoaXMtPmxvZ2dlciwgJHRhcmdldE1hcCwgbnVsbCwgZmFsc2UpOwoKICAgICAgICBmb3JlYWNoICgkbGlzdC0+Z2V0Q29tcG9uZW50cygpIGFzICRjb21wbGV4KSB7CiAgICAgICAgICAgICRjb21wb3VuZCA9ICRjb21wbGV4LT5nZXRTaW5nbGVDb21wb3VuZCgpOwogICAgICAgICAgICBpZiAoJGNvbXBvdW5kID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0b3Igd2FzIGEgY29tcG91bmQgc2VsZWN0b3IgYnV0IG5vdCBhIHNpbXBsZQogICAgICAgICAgICAgICAgLy8gc2VsZWN0b3IsIGVtaXQgYSBtb3JlIGV4cGxpY2l0IGVycm9yLgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNpbXBsZVNhc3NGb3JtYXRFeGNlcHRpb24oJ2NvbXBsZXggc2VsZWN0b3JzIG1heSBub3QgYmUgZXh0ZW5kZWQuJywgJGNvbXBsZXgtPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzaW1wbGUgPSAkY29tcG91bmQtPmdldFNpbmdsZVNpbXBsZSgpOwogICAgICAgICAgICBpZiAoJHNpbXBsZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGFsdGVybmF0aXZlU3RyaW5nID0gaW1wbG9kZSgnLCAnLCAkY29tcG91bmQtPmdldENvbXBvbmVudHMoKSk7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2ltcGxlU2Fzc0Zvcm1hdEV4Y2VwdGlvbigiY29tcG91bmQgc2VsZWN0b3JzIG1heSBubyBsb25nZXIgYmUgZXh0ZW5kZWQuXG5Db25zaWRlciBgQGV4dGVuZCAkYWx0ZXJuYXRpdmVTdHJpbmdgIGluc3RlYWQuXG5TZWUgaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2QvZXh0ZW5kLWNvbXBvdW5kIGZvciBkZXRhaWxzLlxuIiwgJGNvbXBvdW5kLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+Z2V0RXh0ZW5zaW9uU3RvcmUoKS0+YWRkRXh0ZW5zaW9uKCRzdHlsZVJ1bGUtPmdldFNlbGVjdG9yKCksICRzaW1wbGUsICRub2RlLCAkdGhpcy0+bWVkaWFRdWVyaWVzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEF0UnVsZShBdFJ1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmRlY2xhcmF0aW9uTmFtZSAhPT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCdBdC1ydWxlcyBtYXkgbm90IGJlIHVzZWQgd2l0aGluIG5lc3RlZCBkZWNsYXJhdGlvbnMuJywgJG5vZGUtPmdldFNwYW4oKSk7CiAgICAgICAgfQoKICAgICAgICAkbmFtZSA9ICR0aGlzLT5pbnRlcnBvbGF0aW9uVG9WYWx1ZSgkbm9kZS0+Z2V0TmFtZSgpKTsKICAgICAgICAkdmFsdWUgPSAkbm9kZS0+Z2V0VmFsdWUoKSAhPT0gbnVsbCA/ICR0aGlzLT5pbnRlcnBvbGF0aW9uVG9WYWx1ZSgkbm9kZS0+Z2V0VmFsdWUoKSwgdHJ1ZSwgdHJ1ZSkgOiBudWxsOwogICAgICAgICRjaGlsZHJlbiA9ICRub2RlLT5nZXRDaGlsZHJlbigpOwoKICAgICAgICBpZiAoJGNoaWxkcmVuID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5nZXRQYXJlbnQoKS0+YWRkQ2hpbGQobmV3IE1vZGlmaWFibGVDc3NBdFJ1bGUoJG5hbWUsICRub2RlLT5nZXRTcGFuKCksIHRydWUsICR2YWx1ZSkpOwoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkd2FzSW5LZXlmcmFtZXMgPSAkdGhpcy0+aW5LZXlGcmFtZXM7CiAgICAgICAgJHdhc0luVW5rbm93bkF0UnVsZSA9ICR0aGlzLT5pblVua25vd25BdFJ1bGU7CgogICAgICAgIGlmIChVdGlsOjp1bnZlbmRvcigkbmFtZS0+Z2V0VmFsdWUoKSkgPT09ICdrZXlmcmFtZXMnKSB7CiAgICAgICAgICAgICR0aGlzLT5pbktleUZyYW1lcyA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmluVW5rbm93bkF0UnVsZSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2l0aFBhcmVudCgKICAgICAgICAgICAgbmV3IE1vZGlmaWFibGVDc3NBdFJ1bGUoJG5hbWUsICRub2RlLT5nZXRTcGFuKCksIGZhbHNlLCAkdmFsdWUpLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB1c2UgKCRjaGlsZHJlbiwgJG5hbWUpIHsKICAgICAgICAgICAgICAgICRzdHlsZVJ1bGUgPSAkdGhpcy0+Z2V0U3R5bGVSdWxlKCk7CgogICAgICAgICAgICAgICAgaWYgKCRzdHlsZVJ1bGUgPT09IG51bGwgfHwgJHRoaXMtPmluS2V5RnJhbWVzIHx8ICRuYW1lLT5nZXRWYWx1ZSgpID09PSAnZm9udC1mYWNlJykgewogICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwtY2FzZWQgYXQtcnVsZXMgd2l0aGluIHN0eWxlIGJsb2NrcyBhcmUgcHVsbGVkIG91dCB0byB0aGUKICAgICAgICAgICAgICAgICAgICAvLyByb290LiBFcXVpdmFsZW50IHRvIHByZXBlbmRpbmcgIkBhdC1yb290IiBvbiB0aGVtLgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjaGlsZHJlbiBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkLT5hY2NlcHQoJHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gYSBzdHlsZSBydWxlLCBjb3B5IGl0IGludG8gdGhlIGF0LXJ1bGUgc28gdGhhdAogICAgICAgICAgICAgICAgICAgIC8vIGRlY2xhcmF0aW9ucyBpbW1lZGlhdGVseSBpbnNpZGUgaXQgaGF2ZSBzb21ld2hlcmUgdG8gZ28uCiAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgImEge0Bmb28ge2I6IGN9fSIgc2hvdWxkIHByb2R1Y2UgIkBmb28ge2Ege2I6IGN9fSIuCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndpdGhQYXJlbnQoJHN0eWxlUnVsZS0+Y29weVdpdGhvdXRDaGlsZHJlbigpLCBmdW5jdGlvbiAoKSB1c2UgKCRjaGlsZHJlbikgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkY2hpbGRyZW4gYXMgJGNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCBudWxsLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uICgkbm9kZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRub2RlIGluc3RhbmNlb2YgQ3NzU3R5bGVSdWxlOwogICAgICAgICAgICB9LAogICAgICAgICAgICAkbm9kZS0+aGFzRGVjbGFyYXRpb25zKCkKICAgICAgICApOwoKICAgICAgICAkdGhpcy0+aW5Vbmtub3duQXRSdWxlID0gJHdhc0luVW5rbm93bkF0UnVsZTsKICAgICAgICAkdGhpcy0+aW5LZXlGcmFtZXMgPSAkd2FzSW5LZXlmcmFtZXM7CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEZvclJ1bGUoRm9yUnVsZSAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgIC8qKiBAdmFyIFNhc3NOdW1iZXIgJGZyb21OdW1iZXIgKi8KICAgICAgICAkZnJvbU51bWJlciA9ICR0aGlzLT5hZGRFeGNlcHRpb25TcGFuKCRub2RlLT5nZXRGcm9tKCksIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuICRub2RlLT5nZXRGcm9tKCktPmFjY2VwdCgkdGhpcyktPmFzc2VydE51bWJlcigpOwogICAgICAgIH0pOwogICAgICAgIC8qKiBAdmFyIFNhc3NOdW1iZXIgJHRvTnVtYmVyICovCiAgICAgICAgJHRvTnVtYmVyID0gJHRoaXMtPmFkZEV4Y2VwdGlvblNwYW4oJG5vZGUtPmdldFRvKCksIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuICRub2RlLT5nZXRUbygpLT5hY2NlcHQoJHRoaXMpLT5hc3NlcnROdW1iZXIoKTsKICAgICAgICB9KTsKCiAgICAgICAgJGZyb20gPSAkdGhpcy0+YWRkRXhjZXB0aW9uU3Bhbigkbm9kZS0+Z2V0RnJvbSgpLCBmdW5jdGlvbiAoKSB1c2UgKCRmcm9tTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkZnJvbU51bWJlci0+YXNzZXJ0SW50KCk7CiAgICAgICAgfSk7CiAgICAgICAgJHRvID0gJHRoaXMtPmFkZEV4Y2VwdGlvblNwYW4oJG5vZGUtPmdldFRvKCksIGZ1bmN0aW9uICgpIHVzZSAoJHRvTnVtYmVyLCAkZnJvbU51bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHRvTnVtYmVyLT5jb2VyY2UoJGZyb21OdW1iZXItPmdldE51bWVyYXRvclVuaXRzKCksICRmcm9tTnVtYmVyLT5nZXREZW5vbWluYXRvclVuaXRzKCkpLT5hc3NlcnRJbnQoKTsKICAgICAgICB9KTsKCiAgICAgICAgJGRpcmVjdGlvbiA9ICRmcm9tID4gJHRvID8gLTEgOiAxOwogICAgICAgIGlmICghJG5vZGUtPmlzRXhjbHVzaXZlKCkpIHsKICAgICAgICAgICAgJHRvICs9ICRkaXJlY3Rpb247CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZyb20gPT09ICR0bykgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+ZW52aXJvbm1lbnQtPnNjb3BlKGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUsICRmcm9tLCAkdG8sICRkaXJlY3Rpb24sICRmcm9tTnVtYmVyKSB7CiAgICAgICAgICAgICRub2RlV2l0aFNwYW4gPSAkdGhpcy0+ZXhwcmVzc2lvbk5vZGUoJG5vZGUtPmdldEZyb20oKSk7CgogICAgICAgICAgICBmb3IgKCRpID0gJGZyb207ICRpICE9PSAkdG87ICRpICs9ICRkaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICR0aGlzLT5lbnZpcm9ubWVudC0+c2V0TG9jYWxWYXJpYWJsZSgkbm9kZS0+Z2V0VmFyaWFibGUoKSwgU2Fzc051bWJlcjo6d2l0aFVuaXRzKCRpLCAkZnJvbU51bWJlci0+Z2V0TnVtZXJhdG9yVW5pdHMoKSwgJGZyb21OdW1iZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSksICRub2RlV2l0aFNwYW4pOwogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5oYW5kbGVSZXR1cm4oJG5vZGUtPmdldENoaWxkcmVuKCksIGZ1bmN0aW9uIChTdGF0ZW1lbnQgJGNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjaGlsZC0+YWNjZXB0KCR0aGlzKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGlmICgkcmVzdWx0ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0sIHRydWUsIHRydWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEZ1bmN0aW9uUnVsZShGdW5jdGlvblJ1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICAkdGhpcy0+ZW52aXJvbm1lbnQtPnNldEZ1bmN0aW9uKG5ldyBVc2VyRGVmaW5lZENhbGxhYmxlKCRub2RlLCAkdGhpcy0+ZW52aXJvbm1lbnQtPmNsb3N1cmUoKSwgJHRoaXMtPmluRGVwZW5kZW5jeSkpOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRJZlJ1bGUoSWZSdWxlICRub2RlKTogP1ZhbHVlCiAgICB7CiAgICAgICAgJGNsYXVzZSA9ICRub2RlLT5nZXRMYXN0Q2xhdXNlKCk7CgogICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDbGF1c2VzKCkgYXMgJGNsYXVzZVRvQ2hlY2spIHsKICAgICAgICAgICAgaWYgKCRjbGF1c2VUb0NoZWNrLT5nZXRFeHByZXNzaW9uKCktPmFjY2VwdCgkdGhpcyktPmlzVHJ1dGh5KCkpIHsKICAgICAgICAgICAgICAgICRjbGF1c2UgPSAkY2xhdXNlVG9DaGVjazsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNsYXVzZSA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+ZW52aXJvbm1lbnQtPnNjb3BlKGZ1bmN0aW9uICgpIHVzZSAoJGNsYXVzZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmhhbmRsZVJldHVybigkY2xhdXNlLT5nZXRDaGlsZHJlbigpLCBmdW5jdGlvbiAoU3RhdGVtZW50ICRjaGlsZCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRjaGlsZC0+YWNjZXB0KCR0aGlzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwgJGNsYXVzZS0+aGFzRGVjbGFyYXRpb25zKCksIHRydWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEltcG9ydFJ1bGUoSW1wb3J0UnVsZSAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRJbXBvcnRzKCkgYXMgJGltcG9ydCkgewogICAgICAgICAgICBpZiAoJGltcG9ydCBpbnN0YW5jZW9mIER5bmFtaWNJbXBvcnQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT52aXNpdER5bmFtaWNJbXBvcnQoJGltcG9ydCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGltcG9ydCBpbnN0YW5jZW9mIFN0YXRpY0ltcG9ydCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+dmlzaXRTdGF0aWNJbXBvcnQoJGltcG9ydCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyB0aGUgc3R5bGVzaGVldCBpbXBvcnRlZCBieSAkaW1wb3J0IHRvIHRoZSBjdXJyZW50IGRvY3VtZW50LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZpc2l0RHluYW1pY0ltcG9ydChEeW5hbWljSW1wb3J0ICRpbXBvcnQpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPndpdGhTdGFja0ZyYW1lKCdAaW1wb3J0JywgJGltcG9ydCwgZnVuY3Rpb24gKCkgdXNlICgkaW1wb3J0KSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+bG9hZFN0eWxlc2hlZXQoJGltcG9ydC0+Z2V0VXJsU3RyaW5nKCksICRpbXBvcnQtPmdldFNwYW4oKSwgdHJ1ZSk7CiAgICAgICAgICAgICRzdHlsZXNoZWV0ID0gJHJlc3VsdC0+Z2V0U3R5bGVzaGVldCgpOwoKICAgICAgICAgICAgJHVybCA9ICRzdHlsZXNoZWV0LT5nZXRTcGFuKCktPmdldFNvdXJjZVVybCgpOwoKICAgICAgICAgICAgaWYgKCR1cmwgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICR1cmxTdHJpbmcgPSAoc3RyaW5nKSAkdXJsOwogICAgICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHVybFN0cmluZywgJHRoaXMtPmFjdGl2ZU1vZHVsZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgJHByZXZpb3VzTG9hZCA9ICR0aGlzLT5hY3RpdmVNb2R1bGVzWyR1cmxTdHJpbmddOwogICAgICAgICAgICAgICAgICAgIGlmICgkcHJldmlvdXNMb2FkICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5tdWx0aVNwYW5FeGNlcHRpb24oJ1RoaXMgZmlsZSBpcyBhbHJlYWR5IGJlaW5nIGxvYWRlZC4nLCAnbmV3IGxvYWQnLCBbJ29yaWdpbmFsIGxvYWQnID0+ICRwcmV2aW91c0xvYWQtPmdldFNwYW4oKV0pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbignVGhpcyBmaWxlIGlzIGFscmVhZHkgYmVpbmcgbG9hZGVkLicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5hY3RpdmVNb2R1bGVzWyR1cmxTdHJpbmddID0gJGltcG9ydDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG9sZEltcG9ydGVyID0gJHRoaXMtPmltcG9ydGVyOwogICAgICAgICAgICAkb2xkU3R5bGVzaGVldCA9ICR0aGlzLT5zdHlsZXNoZWV0OwogICAgICAgICAgICAkb2xkSW5EZXBlbmRlbmN5ID0gJHRoaXMtPmluRGVwZW5kZW5jeTsKICAgICAgICAgICAgJHRoaXMtPmltcG9ydGVyID0gJHJlc3VsdC0+Z2V0SW1wb3J0ZXIoKTsKICAgICAgICAgICAgJHRoaXMtPnN0eWxlc2hlZXQgPSAkc3R5bGVzaGVldDsKICAgICAgICAgICAgJHRoaXMtPmluRGVwZW5kZW5jeSA9ICRyZXN1bHQtPmlzRGVwZW5kZW5jeSgpOwogICAgICAgICAgICAkdGhpcy0+dmlzaXRTdHlsZXNoZWV0KCRzdHlsZXNoZWV0KTsKICAgICAgICAgICAgJHRoaXMtPmltcG9ydGVyID0gJG9sZEltcG9ydGVyOwogICAgICAgICAgICAkdGhpcy0+c3R5bGVzaGVldCA9ICRvbGRTdHlsZXNoZWV0OwogICAgICAgICAgICAkdGhpcy0+aW5EZXBlbmRlbmN5ID0gJG9sZEluRGVwZW5kZW5jeTsKCiAgICAgICAgICAgIGlmICgkdXJsICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+YWN0aXZlTW9kdWxlc1soc3RyaW5nKSAkdXJsXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRTdHlsZXNoZWV0KHN0cmluZyAkdXJsLCBGaWxlU3BhbiAkc3BhbiwgYm9vbCAkZm9ySW1wb3J0ID0gZmFsc2UpOiBMb2FkZWRTdHlsZXNoZWV0CiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgYXNzZXJ0KCR0aGlzLT5pbXBvcnRTcGFuID09PSBudWxsKTsKICAgICAgICAgICAgJHRoaXMtPmltcG9ydFNwYW4gPSAkc3BhbjsKCiAgICAgICAgICAgICRiYXNlVXJsU3RyaW5nID0gJHRoaXMtPmdldFN0eWxlc2hlZXQoKS0+Z2V0U3BhbigpLT5nZXRTb3VyY2VVcmwoKTsKICAgICAgICAgICAgJGJhc2VVcmwgPSAkYmFzZVVybFN0cmluZyA9PT0gbnVsbCA/IG51bGwgOiBVcmk6Om5ldygkYmFzZVVybFN0cmluZyk7CgogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmltcG9ydENhY2hlLT5jYW5vbmljYWxpemUoVXJpOjpuZXcoJHVybCksICR0aGlzLT5pbXBvcnRlciwgJGJhc2VVcmwsICRmb3JJbXBvcnQpOwogICAgICAgICAgICBpZiAoJHJlc3VsdCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGNhbm9uaWNhbFVybCA9ICRyZXN1bHQtPmNhbm9uaWNhbFVybDsKICAgICAgICAgICAgICAgICRpbXBvcnRlciA9ICRyZXN1bHQtPmltcG9ydGVyOwogICAgICAgICAgICAgICAgJG9yaWdpbmFsVXJsID0gJHJlc3VsdC0+b3JpZ2luYWxVcmw7CgogICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHJlY29yZCB0aGUgY2Fub25pY2FsIFVSTCBhcyAibG9hZGVkIiBldmVuIGlmIHRoZQogICAgICAgICAgICAgICAgLy8gYWN0dWFsIGxvYWQgZmFpbHMsIGJlY2F1c2Ugd2F0Y2hlcnMgc2hvdWxkIHdhdGNoIGl0IHRvIHNlZSBpZiBpdAogICAgICAgICAgICAgICAgLy8gY2hhbmdlcyBpbiBhIHdheSB0aGF0IGFsbG93cyB0aGUgbG9hZCB0byBzdWNjZWVkLgogICAgICAgICAgICAgICAgJHRoaXMtPmxvYWRlZFVybHNbJGNhbm9uaWNhbFVybC0+dG9TdHJpbmcoKV0gPSB0cnVlOwoKICAgICAgICAgICAgICAgICRpc0RlcGVuZGVuY3kgPSAkdGhpcy0+aW5EZXBlbmRlbmN5IHx8ICRpbXBvcnRlciAhPT0gJHRoaXMtPmltcG9ydGVyOwoKICAgICAgICAgICAgICAgICRzdHlsZXNoZWV0ID0gJHRoaXMtPmltcG9ydENhY2hlLT5pbXBvcnRDYW5vbmljYWwoJGltcG9ydGVyLCAkY2Fub25pY2FsVXJsLCAkb3JpZ2luYWxVcmwsICR0aGlzLT5xdWlldERlcHMgJiYgJGlzRGVwZW5kZW5jeSk7CgogICAgICAgICAgICAgICAgaWYgKCRzdHlsZXNoZWV0ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMb2FkZWRTdHlsZXNoZWV0KCRzdHlsZXNoZWV0LCAkaW1wb3J0ZXIsICRpc0RlcGVuZGVuY3kpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbigiQ2FuJ3QgZmluZCBzdHlsZXNoZWV0IHRvIGltcG9ydC4iKTsKICAgICAgICB9IGNhdGNoIChTYXNzRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpLCBudWxsLCAkZSk7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgJHRoaXMtPmltcG9ydFNwYW4gPSBudWxsOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgYSBDU1MgaW1wb3J0IGZvciAkaW1wb3J0LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZpc2l0U3RhdGljSW1wb3J0KFN0YXRpY0ltcG9ydCAkaW1wb3J0KTogdm9pZAogICAgewogICAgICAgICR1cmwgPSAkdGhpcy0+aW50ZXJwb2xhdGlvblRvVmFsdWUoJGltcG9ydC0+Z2V0VXJsKCkpOwogICAgICAgICRtb2RpZmllcnMgPSAkaW1wb3J0LT5nZXRNb2RpZmllcnMoKSAhPT0gbnVsbCA/ICR0aGlzLT5pbnRlcnBvbGF0aW9uVG9WYWx1ZSgkaW1wb3J0LT5nZXRNb2RpZmllcnMoKSkgOiBudWxsOwoKICAgICAgICAkbm9kZSA9IG5ldyBNb2RpZmlhYmxlQ3NzSW1wb3J0KCR1cmwsICRpbXBvcnQtPmdldFNwYW4oKSwgJG1vZGlmaWVycyk7CgogICAgICAgIGlmICgkdGhpcy0+Z2V0UGFyZW50KCkgIT09ICR0aGlzLT5nZXRSb290KCkpIHsKICAgICAgICAgICAgJHRoaXMtPmdldFBhcmVudCgpLT5hZGRDaGlsZCgkbm9kZSk7CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5nZXRFbmRPZkltcG9ydHMoKSA9PT0gXGNvdW50KCR0aGlzLT5nZXRSb290KCktPmdldENoaWxkcmVuKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5nZXRSb290KCktPmFkZENoaWxkKCRub2RlKTsKICAgICAgICAgICAgJHRoaXMtPmVuZE9mSW1wb3J0cysrOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5vdXRPZk9yZGVySW1wb3J0c1tdID0gJG5vZGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGUgYSBnaXZlbiAkbWl4aW4gd2l0aCAkYXJndW1lbnRzIGFuZCAkY29udGVudENhbGxhYmxlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlNaXhpbig/U2Fzc0NhbGxhYmxlICRtaXhpbiwgP1VzZXJEZWZpbmVkQ2FsbGFibGUgJGNvbnRlbnRDYWxsYWJsZSwgQXJndW1lbnRJbnZvY2F0aW9uICRhcmd1bWVudHMsIEFzdE5vZGUgJG5vZGVXaXRoU3BhbiwgQXN0Tm9kZSAkbm9kZVdpdGhTcGFuV2l0aG91dENvbnRlbnQpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCRtaXhpbiA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCdVbmRlZmluZWQgbWl4aW4uJywgJG5vZGVXaXRoU3Bhbi0+Z2V0U3BhbigpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbWl4aW4gaW5zdGFuY2VvZiBCdWlsdEluQ2FsbGFibGUgJiYgISRtaXhpbi0+YWNjZXB0c0NvbnRlbnQoKSAmJiAkY29udGVudENhbGxhYmxlICE9PSBudWxsKSB7CiAgICAgICAgICAgICRldmFsdWF0ZWQgPSAkdGhpcy0+ZXZhbHVhdGVBcmd1bWVudHMoJGFyZ3VtZW50cyk7CiAgICAgICAgICAgIC8qKiBAdmFyIEFyZ3VtZW50RGVjbGFyYXRpb24gJG92ZXJsb2FkICovCiAgICAgICAgICAgIFskb3ZlcmxvYWQsXSA9ICRtaXhpbi0+Y2FsbGJhY2tGb3IoXGNvdW50KCRldmFsdWF0ZWQtPmdldFBvc2l0aW9uYWwoKSksICRldmFsdWF0ZWQtPmdldE5hbWVkKCkpOwogICAgICAgICAgICB0aHJvdyBuZXcgTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAiTWl4aW4gZG9lc24ndCBhY2NlcHQgYSBjb250ZW50IGJsb2NrLiIsCiAgICAgICAgICAgICAgICAkbm9kZVdpdGhTcGFuV2l0aG91dENvbnRlbnQtPmdldFNwYW4oKSwKICAgICAgICAgICAgICAgICdpbnZvY2F0aW9uJywKICAgICAgICAgICAgICAgIFsnZGVjbGFyYXRpb24nID0+ICRvdmVybG9hZC0+Z2V0U3BhbldpdGhOYW1lKCldLAogICAgICAgICAgICAgICAgJHRoaXMtPnN0YWNrVHJhY2UoJG5vZGVXaXRoU3BhbldpdGhvdXRDb250ZW50LT5nZXRTcGFuKCkpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG1peGluIGluc3RhbmNlb2YgQnVpbHRJbkNhbGxhYmxlKSB7CiAgICAgICAgICAgICR0aGlzLT5lbnZpcm9ubWVudC0+d2l0aENvbnRlbnQoJGNvbnRlbnRDYWxsYWJsZSwgZm4oKSA9PiAkdGhpcy0+ZW52aXJvbm1lbnQtPmFzTWl4aW4oZnVuY3Rpb24gKCkgdXNlICgkYXJndW1lbnRzLCAkbWl4aW4sICRub2RlV2l0aFNwYW5XaXRob3V0Q29udGVudCkgewogICAgICAgICAgICAgICAgJHRoaXMtPnJ1bkJ1aWx0SW5DYWxsYWJsZSgkYXJndW1lbnRzLCAkbWl4aW4sICRub2RlV2l0aFNwYW5XaXRob3V0Q29udGVudCk7CiAgICAgICAgICAgIH0pKTsKICAgICAgICB9IGVsc2VpZiAoJG1peGluIGluc3RhbmNlb2YgVXNlckRlZmluZWRDYWxsYWJsZSkgewogICAgICAgICAgICAkZGVjbGFyYXRpb24gPSAkbWl4aW4tPmdldERlY2xhcmF0aW9uKCk7CiAgICAgICAgICAgIGFzc2VydCgkZGVjbGFyYXRpb24gaW5zdGFuY2VvZiBNaXhpblJ1bGUpOwoKICAgICAgICAgICAgaWYgKCRjb250ZW50Q2FsbGFibGUgIT09IG51bGwgJiYgISRkZWNsYXJhdGlvbi0+aGFzQ29udGVudCgpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIk1peGluIGRvZXNuJ3QgYWNjZXB0IGEgY29udGVudCBibG9jay4iLAogICAgICAgICAgICAgICAgICAgICRub2RlV2l0aFNwYW5XaXRob3V0Q29udGVudC0+Z2V0U3BhbigpLAogICAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9uJywKICAgICAgICAgICAgICAgICAgICBbJ2RlY2xhcmF0aW9uJyA9PiAkbWl4aW4tPmdldERlY2xhcmF0aW9uKCktPmdldEFyZ3VtZW50cygpLT5nZXRTcGFuV2l0aE5hbWUoKV0sCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0YWNrVHJhY2UoJG5vZGVXaXRoU3BhbldpdGhvdXRDb250ZW50LT5nZXRTcGFuKCkpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+cnVuVXNlckRlZmluZWRDYWxsYWJsZSgkYXJndW1lbnRzLCAkbWl4aW4sICRub2RlV2l0aFNwYW5XaXRob3V0Q29udGVudCwgZnVuY3Rpb24gKCkgdXNlICgkY29udGVudENhbGxhYmxlLCAkZGVjbGFyYXRpb24sICRub2RlV2l0aFNwYW5XaXRob3V0Q29udGVudCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmVudmlyb25tZW50LT53aXRoQ29udGVudCgkY29udGVudENhbGxhYmxlLCBmbigpID0+ICR0aGlzLT5lbnZpcm9ubWVudC0+YXNNaXhpbihmdW5jdGlvbiAoKSB1c2UgKCRkZWNsYXJhdGlvbiwgJG5vZGVXaXRoU3BhbldpdGhvdXRDb250ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRlY2xhcmF0aW9uLT5nZXRDaGlsZHJlbigpIGFzICRzdGF0ZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFkZEVycm9yU3Bhbigkbm9kZVdpdGhTcGFuV2l0aG91dENvbnRlbnQsIGZuKCkgPT4gJHN0YXRlbWVudC0+YWNjZXB0KCR0aGlzKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdVbmtub3duIGNhbGxhYmxlIHR5cGUgJyAuIGdldF9jbGFzcygkbWl4aW4pKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SW5jbHVkZVJ1bGUoSW5jbHVkZVJ1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICAkbWl4aW4gPSAkdGhpcy0+YWRkRXhjZXB0aW9uU3Bhbigkbm9kZSwgZnVuY3Rpb24gKCkgdXNlICgkbm9kZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmVudmlyb25tZW50LT5nZXRNaXhpbigkbm9kZS0+Z2V0TmFtZSgpKTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkbm9kZS0+Z2V0T3JpZ2luYWxOYW1lKCksICctLScpICYmICRtaXhpbiBpbnN0YW5jZW9mIFVzZXJEZWZpbmVkQ2FsbGFibGUgJiYgIXN0cl9zdGFydHNfd2l0aCgkbWl4aW4tPmdldERlY2xhcmF0aW9uKCktPmdldE9yaWdpbmFsTmFtZSgpLCAnLS0nKSkgewogICAgICAgICAgICAkdGhpcy0+d2FybigiU2FzcyBAbWl4aW4gbmFtZXMgYmVnaW5uaW5nIHdpdGggLS0gYXJlIGRlcHJlY2F0ZWQgZm9yIGZvcndhcmQtY29tcGF0aWJpbGl0eSB3aXRoIHBsYWluIENTUyBtaXhpbnMuXG5cbkZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2QvY3NzLWZ1bmN0aW9uLW1peGluIiwgJG5vZGUtPmdldE5hbWVTcGFuKCksIERlcHJlY2F0aW9uOjpjc3NGdW5jdGlvbk1peGluKTsKICAgICAgICB9CgogICAgICAgICRjb250ZW50Q2FsbGFibGUgPSBudWxsOwogICAgICAgIGlmICgkbm9kZS0+Z2V0Q29udGVudCgpICE9PSBudWxsKSB7CiAgICAgICAgICAgICRjb250ZW50Q2FsbGFibGUgPSBuZXcgVXNlckRlZmluZWRDYWxsYWJsZSgkbm9kZS0+Z2V0Q29udGVudCgpLCAkdGhpcy0+ZW52aXJvbm1lbnQtPmNsb3N1cmUoKSwgJHRoaXMtPmluRGVwZW5kZW5jeSk7CiAgICAgICAgfQoKICAgICAgICAkbm9kZVdpdGhTcGFuV2l0aG91dENvbnRlbnQgPSBuZXcgRmFrZUFzdE5vZGUoZnVuY3Rpb24gKCkgdXNlICgkbm9kZSkgewogICAgICAgICAgICByZXR1cm4gJG5vZGUtPmdldFNwYW5XaXRob3V0Q29udGVudCgpOwogICAgICAgIH0pOwoKICAgICAgICAkdGhpcy0+YXBwbHlNaXhpbigkbWl4aW4sICRjb250ZW50Q2FsbGFibGUsICRub2RlLT5nZXRBcmd1bWVudHMoKSwgJG5vZGUsICRub2RlV2l0aFNwYW5XaXRob3V0Q29udGVudCk7CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1peGluUnVsZShNaXhpblJ1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICAkdGhpcy0+ZW52aXJvbm1lbnQtPnNldE1peGluKG5ldyBVc2VyRGVmaW5lZENhbGxhYmxlKCRub2RlLCAkdGhpcy0+ZW52aXJvbm1lbnQtPmNsb3N1cmUoKSwgJHRoaXMtPmluRGVwZW5kZW5jeSkpOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRMb3VkQ29tbWVudChMb3VkQ29tbWVudCAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgIGlmICgkdGhpcy0+aW5GdW5jdGlvbikgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vIENvbW1lbnRzIGFyZSBhbGxvd2VkIHRvIGFwcGVhciBiZXR3ZWVuIENTUyBpbXBvcnRzLgogICAgICAgIGlmICgkdGhpcy0+Z2V0UGFyZW50KCkgPT09ICR0aGlzLT5nZXRSb290KCkgJiYgJHRoaXMtPmdldEVuZE9mSW1wb3J0cygpID09PSBcY291bnQoJHRoaXMtPmdldFJvb3QoKS0+Z2V0Q2hpbGRyZW4oKSkpIHsKICAgICAgICAgICAgJHRoaXMtPmVuZE9mSW1wb3J0cysrOwogICAgICAgIH0KCiAgICAgICAgJHRleHQgPSAkdGhpcy0+cGVyZm9ybUludGVycG9sYXRpb24oJG5vZGUtPmdldFRleHQoKSk7CiAgICAgICAgLy8gSW5kZW50ZWQgc3ludGF4IGRvZXNuJ3QgcmVxdWlyZSAqLwogICAgICAgIGlmICghc3RyX2VuZHNfd2l0aCgkdGV4dCwgJyovJykpIHsKICAgICAgICAgICAgJHRleHQgLj0gJyAqLyc7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Z2V0UGFyZW50KCktPmFkZENoaWxkKG5ldyBNb2RpZmlhYmxlQ3NzQ29tbWVudCgkdGV4dCwgJG5vZGUtPmdldFNwYW4oKSkpOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNZWRpYVJ1bGUoTWVkaWFSdWxlICRub2RlKTogP1ZhbHVlCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5kZWNsYXJhdGlvbk5hbWUgIT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbignTWVkaWEgcnVsZXMgbWF5IG5vdCBiZSB1c2VkIHdpdGhpbiBuZXN0ZWQgZGVjbGFyYXRpb25zLicsICRub2RlLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgJHF1ZXJpZXMgPSAkdGhpcy0+dmlzaXRNZWRpYVF1ZXJpZXMoJG5vZGUtPmdldFF1ZXJ5KCkpOwogICAgICAgICRtZXJnZWRRdWVyaWVzID0gJHRoaXMtPm1lZGlhUXVlcmllcyAhPT0gbnVsbCA/ICR0aGlzLT5tZXJnZU1lZGlhUXVlcmllcygkdGhpcy0+bWVkaWFRdWVyaWVzLCAkcXVlcmllcykgOiBudWxsOwoKICAgICAgICBpZiAoJG1lcmdlZFF1ZXJpZXMgPT09IFtdKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtZXJnZWRRdWVyaWVzID09PSBudWxsKSB7CiAgICAgICAgICAgICRtZXJnZWRTb3VyY2VzID0gW107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYXNzZXJ0KCR0aGlzLT5tZWRpYVF1ZXJ5U291cmNlcyAhPT0gbnVsbCk7CiAgICAgICAgICAgIGFzc2VydCgkdGhpcy0+bWVkaWFRdWVyaWVzICE9PSBudWxsKTsKCiAgICAgICAgICAgICRtZXJnZWRTb3VyY2VzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPm1lZGlhUXVlcnlTb3VyY2VzLCAkdGhpcy0+bWVkaWFRdWVyaWVzLCAkcXVlcmllcyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2l0aFBhcmVudCgKICAgICAgICAgICAgbmV3IE1vZGlmaWFibGVDc3NNZWRpYVJ1bGUoJG1lcmdlZFF1ZXJpZXMgPz8gJHF1ZXJpZXMsICRub2RlLT5nZXRTcGFuKCkpLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB1c2UgKCRtZXJnZWRRdWVyaWVzLCAkbWVyZ2VkU291cmNlcywgJHF1ZXJpZXMsICRub2RlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2l0aE1lZGlhUXVlcmllcygkbWVyZ2VkUXVlcmllcyA/PyAkcXVlcmllcywgJG1lcmdlZFNvdXJjZXMsIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAkc3R5bGVSdWxlID0gJHRoaXMtPmdldFN0eWxlUnVsZSgpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHN0eWxlUnVsZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiBhIHN0eWxlIHJ1bGUsIGNvcHkgaXQgaW50byB0aGUgbWVkaWEgcXVlcnkgc28gdGhhdAogICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWNsYXJhdGlvbnMgaW1tZWRpYXRlbHkgaW5zaWRlIEBtZWRpYSBoYXZlIHNvbWV3aGVyZSB0byBnby4KICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICJhIHtAbWVkaWEgc2NyZWVuIHtiOiBjfX0iIHNob3VsZCBwcm9kdWNlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vICJAbWVkaWEgc2NyZWVuIHthIHtiOiBjfX0iLgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2l0aFBhcmVudCgkc3R5bGVSdWxlLT5jb3B5V2l0aG91dENoaWxkcmVuKCksIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDaGlsZHJlbigpIGFzICRjaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGlsZC0+YWNjZXB0KCR0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDaGlsZHJlbigpIGFzICRjaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkLT5hY2NlcHQoJHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uICgkbm9kZSkgdXNlICgkbWVyZ2VkU291cmNlcykgewogICAgICAgICAgICAgICAgaWYgKCRub2RlIGluc3RhbmNlb2YgQ3NzU3R5bGVSdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRtZXJnZWRTb3VyY2VzICE9PSBbXSAmJiAkbm9kZSBpbnN0YW5jZW9mIENzc01lZGlhUnVsZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYWJsZVV0aWw6OmV2ZXJ5KCRub2RlLT5nZXRRdWVyaWVzKCksIGZ1bmN0aW9uIChDc3NNZWRpYVF1ZXJ5ICRxdWVyeSkgdXNlICgkbWVyZ2VkU291cmNlcykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXGluX2FycmF5KCRxdWVyeSwgJG1lcmdlZFNvdXJjZXMsIHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJG5vZGUtPmhhc0RlY2xhcmF0aW9ucygpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gSW50ZXJwb2xhdGlvbiAkaW50ZXJwb2xhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxDc3NNZWRpYVF1ZXJ5PgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZpc2l0TWVkaWFRdWVyaWVzKEludGVycG9sYXRpb24gJGludGVycG9sYXRpb24pOiBhcnJheQogICAgewogICAgICAgIFskcmVzb2x2ZWQsICRtYXBdID0gJHRoaXMtPnBlcmZvcm1JbnRlcnBvbGF0aW9uV2l0aE1hcCgkaW50ZXJwb2xhdGlvbiwgdHJ1ZSk7CgogICAgICAgIHJldHVybiBDc3NNZWRpYVF1ZXJ5OjpwYXJzZUxpc3QoJHJlc29sdmVkLCAkdGhpcy0+bG9nZ2VyLCBudWxsLCAkbWFwKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBsaXN0IG9mIHF1ZXJpZXMgdGhhdCBzZWxlY3RzIGZvciBjb250ZXh0cyB0aGF0IG1hdGNoIGJvdGgKICAgICAqICRxdWVyaWVzMSBhbmQgJHF1ZXJpZXMyLgogICAgICoKICAgICAqIFJldHVybnMgdGhlIGVtcHR5IGxpc3QgaWYgdGhlcmUgYXJlIG5vIGNvbnRleHRzIHRoYXQgbWF0Y2ggYm90aCAkcXVlcmllczEKICAgICAqIGFuZCAkcXVlcmllczIsIG9yIGBudWxsYCBpZiB0aGVyZSBhcmUgY29udGV4dHMgdGhhdCBjYW4ndCBiZSByZXByZXNlbnRlZAogICAgICogYnkgbWVkaWEgcXVlcmllcy4KICAgICAqCiAgICAgKiBAcGFyYW0gQ3NzTWVkaWFRdWVyeVtdICRxdWVyaWVzMQogICAgICogQHBhcmFtIENzc01lZGlhUXVlcnlbXSAkcXVlcmllczIKICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8Q3NzTWVkaWFRdWVyeT58bnVsbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1lcmdlTWVkaWFRdWVyaWVzKGFycmF5ICRxdWVyaWVzMSwgYXJyYXkgJHF1ZXJpZXMyKTogP2FycmF5CiAgICB7CiAgICAgICAgJHF1ZXJpZXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHF1ZXJpZXMxIGFzICRxdWVyeTEpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHF1ZXJpZXMyIGFzICRxdWVyeTIpIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcXVlcnkxLT5tZXJnZSgkcXVlcnkyKTsKCiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCA9PT0gTWVkaWFRdWVyeVNpbmdsZXRvbk1lcmdlUmVzdWx0OjplbXB0eSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkcmVzdWx0ID09PSBNZWRpYVF1ZXJ5U2luZ2xldG9uTWVyZ2VSZXN1bHQ6OnVucmVwcmVzZW50YWJsZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEFsd2F5cyB0cnVlIGJ1dCBub3QgZGV0ZWN0ZWQgZHVlIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9qaXJpcHVkaWwvcGhwc3Rhbi1zZWFsZWQtY2xhc3Nlcy9pc3N1ZXMvMgogICAgICAgICAgICAgICAgXGFzc2VydCgkcmVzdWx0IGluc3RhbmNlb2YgQ3NzTWVkaWFRdWVyeSk7CgogICAgICAgICAgICAgICAgJHF1ZXJpZXNbXSA9ICRyZXN1bHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcXVlcmllczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRSZXR1cm5SdWxlKFJldHVyblJ1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhvdXRTbGFzaCgkbm9kZS0+Z2V0RXhwcmVzc2lvbigpLT5hY2NlcHQoJHRoaXMpLCAkbm9kZS0+Z2V0RXhwcmVzc2lvbigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTaWxlbnRDb21tZW50KFNpbGVudENvbW1lbnQgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTdHlsZVJ1bGUoU3R5bGVSdWxlICRub2RlKTogP1ZhbHVlCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5kZWNsYXJhdGlvbk5hbWUgIT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbignU3R5bGUgcnVsZXMgbWF5IG5vdCBiZSB1c2VkIHdpdGhpbiBuZXN0ZWQgZGVjbGFyYXRpb25zLicsICRub2RlLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5pbktleUZyYW1lcyAmJiAkdGhpcy0+Z2V0UGFyZW50KCkgaW5zdGFuY2VvZiBDc3NLZXlmcmFtZUJsb2NrKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oJ1N0eWxlIHJ1bGVzIG1heSBub3QgYmUgdXNlZCB3aXRoaW4ga2V5ZnJhbWUgYmxvY2tzLicsICRub2RlLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgWyRzZWxlY3RvclRleHQsICRzZWxlY3Rvck1hcF0gPSAkdGhpcy0+cGVyZm9ybUludGVycG9sYXRpb25XaXRoTWFwKCRub2RlLT5nZXRTZWxlY3RvcigpLCB0cnVlKTsKCiAgICAgICAgaWYgKCR0aGlzLT5pbktleUZyYW1lcykgewogICAgICAgICAgICAkcGFyc2VkU2VsZWN0b3IgPSAobmV3IEtleWZyYW1lU2VsZWN0b3JQYXJzZXIoJHNlbGVjdG9yVGV4dCwgJHRoaXMtPmxvZ2dlciwgbnVsbCwgJHNlbGVjdG9yTWFwKSktPnBhcnNlKCk7CiAgICAgICAgICAgICRydWxlID0gbmV3IE1vZGlmaWFibGVDc3NLZXlmcmFtZUJsb2NrKG5ldyBDc3NWYWx1ZSgkcGFyc2VkU2VsZWN0b3IsICRub2RlLT5nZXRTZWxlY3RvcigpLT5nZXRTcGFuKCkpLCAkbm9kZS0+Z2V0U3BhbigpKTsKCiAgICAgICAgICAgICR0aGlzLT53aXRoUGFyZW50KAogICAgICAgICAgICAgICAgJHJ1bGUsCiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJG5vZGUtPmdldENoaWxkcmVuKCkgYXMgJGNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGlsZC0+YWNjZXB0KCR0aGlzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRub2RlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRub2RlIGluc3RhbmNlb2YgQ3NzU3R5bGVSdWxlOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICRub2RlLT5oYXNEZWNsYXJhdGlvbnMoKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkU2VsZWN0b3IgPSBTZWxlY3Rvckxpc3Q6OnBhcnNlKCRzZWxlY3RvclRleHQsICR0aGlzLT5sb2dnZXIsICRzZWxlY3Rvck1hcCwgcGxhaW5Dc3M6ICR0aGlzLT5nZXRTdHlsZXNoZWV0KCktPmlzUGxhaW5Dc3MoKSk7CiAgICAgICAgJG5lc3QgPSAhKCR0aGlzLT5nZXRTdHlsZVJ1bGUoKT8tPmlzRnJvbVBsYWluQ3NzKCkgPz8gZmFsc2UpOwogICAgICAgIGlmICgkbmVzdCkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmdldFN0eWxlc2hlZXQoKS0+aXNQbGFpbkNzcygpKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyc2VkU2VsZWN0b3ItPmdldENvbXBvbmVudHMoKSBhcyAkY29tcGxleCkgewogICAgICAgICAgICAgICAgICAgIGlmIChcY291bnQoJGNvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigiVG9wLWxldmVsIGxlYWRpbmcgY29tYmluYXRvcnMgYXJlbid0IGFsbG93ZWQgaW4gcGxhaW4gQ1NTLiIsICRjb21wbGV4LT5nZXRMZWFkaW5nQ29tYmluYXRvcnMoKVswXS0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXJzZWRTZWxlY3RvciA9ICRwYXJzZWRTZWxlY3Rvci0+bmVzdFdpdGhpbigKICAgICAgICAgICAgICAgICR0aGlzLT5zdHlsZVJ1bGVJZ25vcmluZ0F0Um9vdD8tPmdldE9yaWdpbmFsU2VsZWN0b3IoKSwKICAgICAgICAgICAgICAgICEkdGhpcy0+YXRSb290RXhjbHVkaW5nU3R5bGVSdWxlLAogICAgICAgICAgICAgICAgJHRoaXMtPmdldFN0eWxlc2hlZXQoKS0+aXNQbGFpbkNzcygpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkc2VsZWN0b3IgPSAkdGhpcy0+Z2V0RXh0ZW5zaW9uU3RvcmUoKS0+YWRkU2VsZWN0b3IoJHBhcnNlZFNlbGVjdG9yLCAkdGhpcy0+bWVkaWFRdWVyaWVzKTsKICAgICAgICAkcnVsZSA9IG5ldyBNb2RpZmlhYmxlQ3NzU3R5bGVSdWxlKCRzZWxlY3RvciwgJG5vZGUtPmdldFNwYW4oKSwgJHBhcnNlZFNlbGVjdG9yLCAkdGhpcy0+Z2V0U3R5bGVzaGVldCgpLT5pc1BsYWluQ3NzKCkpOwogICAgICAgICRvbGRBdFJvb3RFeGNsdWRpbmdTdHlsZVJ1bGUgPSAkdGhpcy0+YXRSb290RXhjbHVkaW5nU3R5bGVSdWxlOwogICAgICAgICR0aGlzLT5hdFJvb3RFeGNsdWRpbmdTdHlsZVJ1bGUgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+d2l0aFBhcmVudCgKICAgICAgICAgICAgJHJ1bGUsCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHVzZSAoJHJ1bGUsICRub2RlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2l0aFN0eWxlUnVsZSgkcnVsZSwgZnVuY3Rpb24gKCkgdXNlICgkbm9kZSkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDaGlsZHJlbigpIGFzICRjaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICRuZXN0ID8gZm4oJG5vZGUpID0+ICRub2RlIGluc3RhbmNlb2YgQ3NzU3R5bGVSdWxlIDogbnVsbCwKICAgICAgICAgICAgJG5vZGUtPmhhc0RlY2xhcmF0aW9ucygpCiAgICAgICAgKTsKICAgICAgICAkdGhpcy0+YXRSb290RXhjbHVkaW5nU3R5bGVSdWxlID0gJG9sZEF0Um9vdEV4Y2x1ZGluZ1N0eWxlUnVsZTsKCiAgICAgICAgJHRoaXMtPndhcm5Gb3JCb2d1c0NvbWJpbmF0b3JzKCRydWxlKTsKCiAgICAgICAgaWYgKCR0aGlzLT5nZXRTdHlsZVJ1bGUoKSA9PT0gbnVsbCAmJiBcY291bnQoJHRoaXMtPmdldFBhcmVudCgpLT5nZXRDaGlsZHJlbigpKSA+IDApIHsKICAgICAgICAgICAgJGxhc3RDaGlsZCA9IExpc3RVdGlsOjpsYXN0KCR0aGlzLT5nZXRQYXJlbnQoKS0+Z2V0Q2hpbGRyZW4oKSk7CiAgICAgICAgICAgICRsYXN0Q2hpbGQtPnNldEdyb3VwRW5kKHRydWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB3YXJuRm9yQm9ndXNDb21iaW5hdG9ycyhDc3NTdHlsZVJ1bGUgJHJ1bGUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkcnVsZS0+aXNJbnZpc2libGVPdGhlclRoYW5Cb2d1c0NvbWJpbmF0b3JzKCkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHJ1bGUtPmdldFNlbGVjdG9yKCktPmdldENvbXBvbmVudHMoKSBhcyAkY29tcGxleCkgewogICAgICAgICAgICAgICAgaWYgKCEkY29tcGxleC0+aXNCb2d1cygpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHNlbGVjdG9yU3RyaW5nID0gdHJpbSgkY29tcGxleCk7CgogICAgICAgICAgICAgICAgaWYgKCRjb21wbGV4LT5pc1VzZWxlc3MoKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT53YXJuKAogICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHNlbGVjdG9yIFwiJHNlbGVjdG9yU3RyaW5nXCIgaXMgaW52YWxpZCBDU1MuIEl0IHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSBnZW5lcmF0ZWQgQ1NTLlxuVGhpcyB3aWxsIGJlIGFuIGVycm9yIGluIERhcnQgU2FzcyAyLjAuMC5cblxuTW9yZSBpbmZvOiBodHRwczovL3Nhc3MtbGFuZy5jb20vZC9ib2d1cy1jb21iaW5hdG9ycyIsCiAgICAgICAgICAgICAgICAgICAgICAgIFNwYW5VdGlsOjp0cmltUmlnaHQoJGNvbXBsZXgtPmdldFNwYW4oKSksCiAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uOjpib2d1c0NvbWJpbmF0b3JzCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChcY291bnQoJGNvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5nZXRTdHlsZXNoZWV0KCktPmlzUGxhaW5Dc3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2FybigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc2VsZWN0b3IgXCIkc2VsZWN0b3JTdHJpbmdcIiBpcyBpbnZhbGlkIENTUy5cblRoaXMgd2lsbCBiZSBhbiBlcnJvciBpbiBEYXJ0IFNhc3MgMi4wLjAuXG5cbk1vcmUgaW5mbzogaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2QvYm9ndXMtY29tYmluYXRvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BhblV0aWw6OnRyaW1SaWdodCgkY29tcGxleC0+Z2V0U3BhbigpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uOjpib2d1c0NvbWJpbmF0b3JzCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkb21pdHRlZE1lc3NhZ2UgPSAkY29tcGxleC0+aXNCb2d1c090aGVyVGhhbkxlYWRpbmdDb21iaW5hdG9yKCkgPyAnIEl0IHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSBnZW5lcmF0ZWQgQ1NTLicgOiAnJzsKICAgICAgICAgICAgICAgICAgICAkc3VmZml4ID0gSXRlcmFibGVVdGlsOjpldmVyeSgkcnVsZS0+Z2V0Q2hpbGRyZW4oKSwgZm4gKENzc05vZGUgJGNoaWxkKSA9PiAkY2hpbGQgaW5zdGFuY2VvZiBDc3NDb21tZW50KSA/ICJcbih0cnkgY29udmVydGluZyB0byBhIC8vLXN0eWxlIGNvbW1lbnQpIiA6ICcnOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT53YXJuKAogICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHNlbGVjdG9yIFwiJHNlbGVjdG9yU3RyaW5nXCIgaXMgb25seSB2YWxpZCBmb3IgbmVzdGluZyBhbmQgc2hvdWxkbid0XG5oYXZlIGNoaWxkcmVuIG90aGVyIHRoYW4gc3R5bGUgcnVsZXMuJG9taXR0ZWRNZXNzYWdlXG5UaGlzIHdpbGwgYmUgYW4gZXJyb3IgaW4gRGFydCBTYXNzIDIuMC4wLlxuXG5Nb3JlIGluZm86IGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL2JvZ3VzLWNvbWJpbmF0b3JzIiwKICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE11bHRpU3BhbihTcGFuVXRpbDo6dHJpbVJpZ2h0KCRjb21wbGV4LT5nZXRTcGFuKCkpLCAnaW52YWxpZCBzZWxlY3RvcicsIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIG5vdCBhIHN0eWxlIHJ1bGUnIC4gJHN1ZmZpeCA9PiAkcnVsZS0+Z2V0Q2hpbGRyZW4oKVswXS0+Z2V0U3BhbigpLAogICAgICAgICAgICAgICAgICAgICAgICBdKSwKICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb246OmJvZ3VzQ29tYmluYXRvcnMKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFN1cHBvcnRzUnVsZShTdXBwb3J0c1J1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmRlY2xhcmF0aW9uTmFtZSAhPT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCdTdXBwb3J0cyBydWxlcyBtYXkgbm90IGJlIHVzZWQgd2l0aGluIG5lc3RlZCBkZWNsYXJhdGlvbnMuJywgJG5vZGUtPmdldFNwYW4oKSk7CiAgICAgICAgfQoKICAgICAgICAkY29uZGl0aW9uID0gbmV3IENzc1ZhbHVlKCR0aGlzLT52aXNpdFN1cHBvcnRzQ29uZGl0aW9uKCRub2RlLT5nZXRDb25kaXRpb24oKSksICRub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0U3BhbigpKTsKCiAgICAgICAgJHRoaXMtPndpdGhQYXJlbnQoCiAgICAgICAgICAgIG5ldyBNb2RpZmlhYmxlQ3NzU3VwcG9ydHNSdWxlKCRjb25kaXRpb24sICRub2RlLT5nZXRTcGFuKCkpLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgICAgICAkc3R5bGVSdWxlID0gJHRoaXMtPmdldFN0eWxlUnVsZSgpOwoKICAgICAgICAgICAgICAgIGlmICgkc3R5bGVSdWxlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gYSBzdHlsZSBydWxlLCBjb3B5IGl0IGludG8gdGhlIHN1cHBvcnRzIHJ1bGUgc28gdGhhdAogICAgICAgICAgICAgICAgICAgIC8vIGRlY2xhcmF0aW9ucyBpbW1lZGlhdGVseSBpbnNpZGUgQHN1cHBvcnRzIGhhdmUgc29tZXdoZXJlIHRvIGdvLgogICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICJhIHtAc3VwcG9ydHMgKGE6IGIpIHtiOiBjfX0iIHNob3VsZCBwcm9kdWNlICJAc3VwcG9ydHMKICAgICAgICAgICAgICAgICAgICAvLyAoYTogYikge2Ege2I6IGN9fSIuCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndpdGhQYXJlbnQoJHN0eWxlUnVsZS0+Y29weVdpdGhvdXRDaGlsZHJlbigpLCBmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDaGlsZHJlbigpIGFzICRjaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkLT5hY2NlcHQoJHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDaGlsZHJlbigpIGFzICRjaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBmdW5jdGlvbiAoJG5vZGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkbm9kZSBpbnN0YW5jZW9mIENzc1N0eWxlUnVsZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJG5vZGUtPmhhc0RlY2xhcmF0aW9ucygpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB2aXNpdFN1cHBvcnRzQ29uZGl0aW9uKFN1cHBvcnRzQ29uZGl0aW9uICRjb25kaXRpb24pOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJGNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1cHBvcnRzT3BlcmF0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBzcHJpbnRmKCclcyAlcyAlcycsICR0aGlzLT5wYXJlbnRoZXNpemUoJGNvbmRpdGlvbi0+Z2V0TGVmdCgpLCAkY29uZGl0aW9uLT5nZXRPcGVyYXRvcigpKSwgJGNvbmRpdGlvbi0+Z2V0T3BlcmF0b3IoKSwgJHRoaXMtPnBhcmVudGhlc2l6ZSgkY29uZGl0aW9uLT5nZXRSaWdodCgpLCAkY29uZGl0aW9uLT5nZXRPcGVyYXRvcigpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1cHBvcnRzTmVnYXRpb24pIHsKICAgICAgICAgICAgcmV0dXJuICdub3QgJyAuICR0aGlzLT5wYXJlbnRoZXNpemUoJGNvbmRpdGlvbi0+Z2V0Q29uZGl0aW9uKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb25kaXRpb24gaW5zdGFuY2VvZiBTdXBwb3J0c0ludGVycG9sYXRpb24pIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5ldmFsdWF0ZVRvQ3NzKCRjb25kaXRpb24tPmdldEV4cHJlc3Npb24oKSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb25kaXRpb24gaW5zdGFuY2VvZiBTdXBwb3J0c0RlY2xhcmF0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFN1cHBvcnRzRGVjbGFyYXRpb24oZnVuY3Rpb24gKCkgdXNlICgkY29uZGl0aW9uKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3ByaW50ZignKCVzOiVzJXMpJywgJHRoaXMtPmV2YWx1YXRlVG9Dc3MoJGNvbmRpdGlvbi0+Z2V0TmFtZSgpKSwgJGNvbmRpdGlvbi0+aXNDdXN0b21Qcm9wZXJ0eSgpID8gJycgOiAnICcsICR0aGlzLT5ldmFsdWF0ZVRvQ3NzKCRjb25kaXRpb24tPmdldFZhbHVlKCkpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbmRpdGlvbiBpbnN0YW5jZW9mIFN1cHBvcnRzRnVuY3Rpb24pIHsKICAgICAgICAgICAgcmV0dXJuIHNwcmludGYoJyVzKCVzKScsICR0aGlzLT5wZXJmb3JtSW50ZXJwb2xhdGlvbigkY29uZGl0aW9uLT5nZXROYW1lKCkpLCAkdGhpcy0+cGVyZm9ybUludGVycG9sYXRpb24oJGNvbmRpdGlvbi0+Z2V0QXJndW1lbnRzKCkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkY29uZGl0aW9uIGluc3RhbmNlb2YgU3VwcG9ydHNBbnl0aGluZykgewogICAgICAgICAgICByZXR1cm4gJygnIC4gJHRoaXMtPnBlcmZvcm1JbnRlcnBvbGF0aW9uKCRjb25kaXRpb24tPmdldENvbnRlbnRzKCkpIC4gJyknOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vua25vd24gc3VwcG9ydHMgY29uZGl0aW9uIHR5cGUgJyAuIGdldF9jbGFzcygkY29uZGl0aW9uKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zICRjYWxsYmFjayBpbiBhIGNvbnRleHQgd2hlcmUge0BzZWUgJGluU3VwcG9ydHNEZWNsYXJhdGlvbn0gaXMgdHJ1ZS4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiBUICRjYWxsYmFjawogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNhbGxiYWNrCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd2l0aFN1cHBvcnRzRGVjbGFyYXRpb24oY2FsbGFibGUgJGNhbGxiYWNrKQogICAgewogICAgICAgICRvbGRJblN1cHBvcnRzRGVjbGFyYXRpb24gPSAkdGhpcy0+aW5TdXBwb3J0c0RlY2xhcmF0aW9uOwogICAgICAgICR0aGlzLT5pblN1cHBvcnRzRGVjbGFyYXRpb24gPSB0cnVlOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiAkY2FsbGJhY2soKTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAkdGhpcy0+aW5TdXBwb3J0c0RlY2xhcmF0aW9uID0gJG9sZEluU3VwcG9ydHNEZWNsYXJhdGlvbjsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwYXJlbnRoZXNpemUoU3VwcG9ydHNDb25kaXRpb24gJGNvbmRpdGlvbiwgP3N0cmluZyAkb3BlcmF0b3IgPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRjb25kaXRpb24gaW5zdGFuY2VvZiBTdXBwb3J0c05lZ2F0aW9uIHx8ICRjb25kaXRpb24gaW5zdGFuY2VvZiBTdXBwb3J0c09wZXJhdGlvbiAmJiAkb3BlcmF0b3IgIT09ICRjb25kaXRpb24tPmdldE9wZXJhdG9yKCkpIHsKICAgICAgICAgICAgcmV0dXJuICcoJyAuICR0aGlzLT52aXNpdFN1cHBvcnRzQ29uZGl0aW9uKCRjb25kaXRpb24pIC4gJyknOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT52aXNpdFN1cHBvcnRzQ29uZGl0aW9uKCRjb25kaXRpb24pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oVmFyaWFibGVEZWNsYXJhdGlvbiAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgIGlmICgkbm9kZS0+aXNHdWFyZGVkKCkpIHsKICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmFkZEV4Y2VwdGlvblNwYW4oJG5vZGUsIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZW52aXJvbm1lbnQtPmdldFZhcmlhYmxlKCRub2RlLT5nZXROYW1lKCkpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmICgkdmFsdWUgIT09IG51bGwgJiYgJHZhbHVlICE9PSBTYXNzTnVsbDo6Y3JlYXRlKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5vZGUtPmlzR2xvYmFsKCkgJiYgISR0aGlzLT5lbnZpcm9ubWVudC0+Z2xvYmFsVmFyaWFibGVFeGlzdHMoJG5vZGUtPmdldE5hbWUoKSkpIHsKICAgICAgICAgICAgJHRoaXMtPndhcm4oCiAgICAgICAgICAgICAgICAkdGhpcy0+ZW52aXJvbm1lbnQtPmF0Um9vdCgpCiAgICAgICAgICAgICAgICAgICAgPyAiQXMgb2YgRGFydCBTYXNzIDIuMC4wLCAhZ2xvYmFsIGFzc2lnbm1lbnRzIHdvbid0IGJlIGFibGUgdG8gZGVjbGFyZSBuZXcgdmFyaWFibGVzLlxuXG5TaW5jZSB0aGlzIGFzc2lnbm1lbnQgaXMgYXQgdGhlIHJvb3Qgb2YgdGhlIHN0eWxlc2hlZXQsIHRoZSAhZ2xvYmFsIGZsYWcgaXNcbnVubmVjZXNzYXJ5IGFuZCBjYW4gc2FmZWx5IGJlIHJlbW92ZWQuIgogICAgICAgICAgICAgICAgICAgIDogIkFzIG9mIERhcnQgU2FzcyAyLjAuMCwgIWdsb2JhbCBhc3NpZ25tZW50cyB3b24ndCBiZSBhYmxlIHRvIGRlY2xhcmUgbmV3IHZhcmlhYmxlcy5cblxuUmVjb21tZW5kYXRpb246IGFkZCBgeyRub2RlLT5nZXRPcmlnaW5hbE5hbWUoKX06IG51bGxgIGF0IHRoZSBzdHlsZXNoZWV0IHJvb3QuIiwKICAgICAgICAgICAgICAgICRub2RlLT5nZXRTcGFuKCksCiAgICAgICAgICAgICAgICBEZXByZWNhdGlvbjo6bmV3R2xvYmFsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+d2l0aG91dFNsYXNoKCRub2RlLT5nZXRFeHByZXNzaW9uKCktPmFjY2VwdCgkdGhpcyksICRub2RlLT5nZXRFeHByZXNzaW9uKCkpOwogICAgICAgICR0aGlzLT5hZGRFeGNlcHRpb25TcGFuKCRub2RlLCBmdW5jdGlvbiAoKSB1c2UgKCR2YWx1ZSwgJG5vZGUpIHsKICAgICAgICAgICAgJHRoaXMtPmVudmlyb25tZW50LT5zZXRWYXJpYWJsZSgkbm9kZS0+Z2V0TmFtZSgpLCAkdmFsdWUsICR0aGlzLT5leHByZXNzaW9uTm9kZSgkbm9kZS0+Z2V0RXhwcmVzc2lvbigpKSwgJG5vZGUtPmlzR2xvYmFsKCkpOwogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRXYXJuUnVsZShXYXJuUnVsZSAkbm9kZSk6ID9WYWx1ZQogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5hZGRFeGNlcHRpb25TcGFuKCRub2RlLCBmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgIHJldHVybiAkbm9kZS0+Z2V0RXhwcmVzc2lvbigpLT5hY2NlcHQoJHRoaXMpOwogICAgICAgIH0pOwogICAgICAgICR0aGlzLT5sb2dnZXItPndhcm4oJHZhbHVlIGluc3RhbmNlb2YgU2Fzc1N0cmluZyA/ICR2YWx1ZS0+Z2V0VGV4dCgpIDogJHRoaXMtPnNlcmlhbGl6ZSgkdmFsdWUsICRub2RlLT5nZXRFeHByZXNzaW9uKCkpLCBudWxsLCBudWxsLCAkdGhpcy0+c3RhY2tUcmFjZSgkbm9kZS0+Z2V0U3BhbigpKSk7CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFdoaWxlUnVsZShXaGlsZVJ1bGUgJG5vZGUpOiA/VmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVudmlyb25tZW50LT5zY29wZShmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgIHdoaWxlICgkbm9kZS0+Z2V0Q29uZGl0aW9uKCktPmFjY2VwdCgkdGhpcyktPmlzVHJ1dGh5KCkpIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+aGFuZGxlUmV0dXJuKCRub2RlLT5nZXRDaGlsZHJlbigpLCBmdW5jdGlvbiAoU3RhdGVtZW50ICRjaGlsZCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9LCAkbm9kZS0+aGFzRGVjbGFyYXRpb25zKCksIHRydWUpOwogICAgfQoKICAgIC8vICMjIEV4cHJlc3Npb25zCgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0QmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbihCaW5hcnlPcGVyYXRpb25FeHByZXNzaW9uICRub2RlKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmdldFN0eWxlc2hlZXQoKS0+aXNQbGFpbkNzcygpICYmICRub2RlLT5nZXRPcGVyYXRvcigpICE9PSBCaW5hcnlPcGVyYXRvcjo6U0lOR0xFX0VRVUFMUyAgJiYgJG5vZGUtPmdldE9wZXJhdG9yKCkgIT09IEJpbmFyeU9wZXJhdG9yOjpESVZJREVEX0JZKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oIk9wZXJhdG9ycyBhcmVuJ3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MuIiwgJG5vZGUtPmdldE9wZXJhdG9yU3BhbigpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+YWRkRXhjZXB0aW9uU3Bhbigkbm9kZSwgZnVuY3Rpb24gKCkgdXNlICgkbm9kZSkgewogICAgICAgICAgICAkbGVmdCA9ICRub2RlLT5nZXRMZWZ0KCktPmFjY2VwdCgkdGhpcyk7CgogICAgICAgICAgICByZXR1cm4gbWF0Y2ggKCRub2RlLT5nZXRPcGVyYXRvcigpKSB7CiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6U0lOR0xFX0VRVUFMUyA9PiAkbGVmdC0+c2luZ2xlRXF1YWxzKCRub2RlLT5nZXRSaWdodCgpLT5hY2NlcHQoJHRoaXMpKSwKICAgICAgICAgICAgICAgIEJpbmFyeU9wZXJhdG9yOjpPUiA9PiAkbGVmdC0+aXNUcnV0aHkoKSA/ICRsZWZ0IDogJG5vZGUtPmdldFJpZ2h0KCktPmFjY2VwdCgkdGhpcyksCiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6QU5EID0+ICRsZWZ0LT5pc1RydXRoeSgpID8gJG5vZGUtPmdldFJpZ2h0KCktPmFjY2VwdCgkdGhpcykgOiAkbGVmdCwKICAgICAgICAgICAgICAgIEJpbmFyeU9wZXJhdG9yOjpFUVVBTFMgPT4gU2Fzc0Jvb2xlYW46OmNyZWF0ZSgkbGVmdC0+ZXF1YWxzKCRub2RlLT5nZXRSaWdodCgpLT5hY2NlcHQoJHRoaXMpKSksCiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6Tk9UX0VRVUFMUyA9PiBTYXNzQm9vbGVhbjo6Y3JlYXRlKCEkbGVmdC0+ZXF1YWxzKCRub2RlLT5nZXRSaWdodCgpLT5hY2NlcHQoJHRoaXMpKSksCiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6R1JFQVRFUl9USEFOID0+ICRsZWZ0LT5ncmVhdGVyVGhhbigkbm9kZS0+Z2V0UmlnaHQoKS0+YWNjZXB0KCR0aGlzKSksCiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6R1JFQVRFUl9USEFOX09SX0VRVUFMUyA9PiAkbGVmdC0+Z3JlYXRlclRoYW5PckVxdWFscygkbm9kZS0+Z2V0UmlnaHQoKS0+YWNjZXB0KCR0aGlzKSksCiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6TEVTU19USEFOID0+ICRsZWZ0LT5sZXNzVGhhbigkbm9kZS0+Z2V0UmlnaHQoKS0+YWNjZXB0KCR0aGlzKSksCiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6TEVTU19USEFOX09SX0VRVUFMUyA9PiAkbGVmdC0+bGVzc1RoYW5PckVxdWFscygkbm9kZS0+Z2V0UmlnaHQoKS0+YWNjZXB0KCR0aGlzKSksCiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6UExVUyA9PiAkbGVmdC0+cGx1cygkbm9kZS0+Z2V0UmlnaHQoKS0+YWNjZXB0KCR0aGlzKSksCiAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6TUlOVVMgPT4gJGxlZnQtPm1pbnVzKCRub2RlLT5nZXRSaWdodCgpLT5hY2NlcHQoJHRoaXMpKSwKICAgICAgICAgICAgICAgIEJpbmFyeU9wZXJhdG9yOjpUSU1FUyA9PiAkbGVmdC0+dGltZXMoJG5vZGUtPmdldFJpZ2h0KCktPmFjY2VwdCgkdGhpcykpLAogICAgICAgICAgICAgICAgQmluYXJ5T3BlcmF0b3I6OkRJVklERURfQlkgPT4gJHRoaXMtPnNsYXNoKCRsZWZ0LCAkbm9kZS0+Z2V0UmlnaHQoKS0+YWNjZXB0KCR0aGlzKSwgJG5vZGUpLAogICAgICAgICAgICAgICAgQmluYXJ5T3BlcmF0b3I6Ok1PRFVMTyA9PiAkbGVmdC0+bW9kdWxvKCRub2RlLT5nZXRSaWdodCgpLT5hY2NlcHQoJHRoaXMpKSwKICAgICAgICAgICAgfTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgU2Fzc1NjcmlwdCBgL2Agb3BlcmF0aW9uIGJldHdlZW4gJGxlZnQgYW5kCiAgICAgKiAkcmlnaHQgaW4gJG5vZGUuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2xhc2goVmFsdWUgJGxlZnQsIFZhbHVlICRyaWdodCwgQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiAkbm9kZSk6IFZhbHVlCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICRsZWZ0LT5kaXZpZGVkQnkoJHJpZ2h0KTsKCiAgICAgICAgaWYgKCRsZWZ0IGluc3RhbmNlb2YgU2Fzc051bWJlciAmJiAkcmlnaHQgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICRub2RlLT5hbGxvd3NTbGFzaCgpICYmICR0aGlzLT5vcGVyYW5kQWxsb3dzU2xhc2goJG5vZGUtPmdldExlZnQoKSkgJiYgJHRoaXMtPm9wZXJhbmRBbGxvd3NTbGFzaCgkbm9kZS0+Z2V0UmlnaHQoKSkpIHsKICAgICAgICAgICAgYXNzZXJ0KCRyZXN1bHQgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKTsKCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0LT53aXRoU2xhc2goJGxlZnQsICRyaWdodCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGxlZnQgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICRyaWdodCBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgJHJlY29tbWVuZGF0aW9uID0gZnVuY3Rpb24gKEV4cHJlc3Npb24gJGV4cHJlc3Npb24pIHVzZSAoJiRyZWNvbW1lbmRhdGlvbik6IHN0cmluZyB7CiAgICAgICAgICAgICAgICBpZiAoJGV4cHJlc3Npb24gaW5zdGFuY2VvZiBCaW5hcnlPcGVyYXRpb25FeHByZXNzaW9uICYmICRleHByZXNzaW9uLT5nZXRPcGVyYXRvcigpID09PSBCaW5hcnlPcGVyYXRvcjo6RElWSURFRF9CWSkgewogICAgICAgICAgICAgICAgICAgICRsZWZ0UmVjb21tZW5kYXRpb24gPSAkcmVjb21tZW5kYXRpb24oJGV4cHJlc3Npb24tPmdldExlZnQoKSk7CiAgICAgICAgICAgICAgICAgICAgJHJpZ2h0UmVjb21tZW5kYXRpb24gPSAkcmVjb21tZW5kYXRpb24oJGV4cHJlc3Npb24tPmdldFJpZ2h0KCkpOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm1hdGguZGl2KCRsZWZ0UmVjb21tZW5kYXRpb24sICRyaWdodFJlY29tbWVuZGF0aW9uKSI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRleHByZXNzaW9uIGluc3RhbmNlb2YgUGFyZW50aGVzaXplZEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0cmluZykgJGV4cHJlc3Npb24tPmdldEV4cHJlc3Npb24oKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cmluZykgJGV4cHJlc3Npb247CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAkY2FsY1JlY29tbWVuZGF0aW9uID0gQXN0VXRpbDo6ZXhwcmVzc2lvblRvQ2FsYygkbm9kZSk7CgogICAgICAgICAgICAkbWVzc2FnZSA9IDw8PFdBUk5JTkcKVXNpbmcgLyBmb3IgZGl2aXNpb24gb3V0c2lkZSBvZiBjYWxjKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIERhcnQgU2FzcyAyLjAuMC4KClJlY29tbWVuZGF0aW9uOiB7JHJlY29tbWVuZGF0aW9uKCRub2RlKX0gb3IgJGNhbGNSZWNvbW1lbmRhdGlvbgoKTW9yZSBpbmZvIGFuZCBhdXRvbWF0ZWQgbWlncmF0b3I6IGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL3NsYXNoLWRpdgpXQVJOSU5HOwoKICAgICAgICAgICAgJHRoaXMtPndhcm4oJG1lc3NhZ2UsICRub2RlLT5nZXRTcGFuKCksIERlcHJlY2F0aW9uOjpzbGFzaERpdik7CgogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRub2RlIGNhbiBiZSB1c2VkIGFzIGEgY29tcG9uZW50IG9mIGEgc2xhc2gtc2VwYXJhdGVkCiAgICAgKiBudW1iZXIuCiAgICAgKgogICAgICogQWx0aG91Z2ggdGhpcyBsb2dpYyBpcyBtb3N0bHkgcmVzb2x2ZWQgYXQgcGFyc2UtdGltZSwgd2UgY2FuJ3QgdGVsbAogICAgICogd2hldGhlciBvcGVyYW5kcyB3aWxsIGJlIGV2YWx1YXRlZCBhcyBjYWxjdWxhdGlvbnMgdW50aWwgZXZhbHVhdGlvbi10aW1lLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG9wZXJhbmRBbGxvd3NTbGFzaChFeHByZXNzaW9uICRub2RlKTogYm9vbAogICAgewogICAgICAgIGlmICghJG5vZGUgaW5zdGFuY2VvZiBGdW5jdGlvbkV4cHJlc3Npb24pIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5vZGUtPmdldE5hbWVzcGFjZSgpICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcaW5fYXJyYXkoc3RydG9sb3dlcigkbm9kZS0+Z2V0TmFtZSgpKSwgWydjYWxjJywgJ2NsYW1wJywgJ2h5cG90JywgJ3NpbicsICdjb3MnLCAndGFuJywgJ2FzaW4nLCAnYWNvcycsICdhdGFuJywgJ3NxcnQnLCAnZXhwJywgJ3NpZ24nLCAnbW9kJywgJ3JlbScsICdhdGFuMicsICdwb3cnLCAnbG9nJ10sIHRydWUpICYmICR0aGlzLT5lbnZpcm9ubWVudC0+Z2V0RnVuY3Rpb24oJG5vZGUtPmdldE5hbWUoKSkgPT09IG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VmFsdWVFeHByZXNzaW9uKFZhbHVlRXhwcmVzc2lvbiAkbm9kZSk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuICRub2RlLT5nZXRWYWx1ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFZhcmlhYmxlRXhwcmVzc2lvbihWYXJpYWJsZUV4cHJlc3Npb24gJG5vZGUpOiBWYWx1ZQogICAgewogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+YWRkRXhjZXB0aW9uU3Bhbigkbm9kZSwgZnVuY3Rpb24gKCkgdXNlICgkbm9kZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmVudmlyb25tZW50LT5nZXRWYXJpYWJsZSgkbm9kZS0+Z2V0TmFtZSgpKTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKCRyZXN1bHQgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCdVbmRlZmluZWQgdmFyaWFibGUuJywgJG5vZGUtPmdldFNwYW4oKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VW5hcnlPcGVyYXRpb25FeHByZXNzaW9uKFVuYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiAkbm9kZSk6IFZhbHVlCiAgICB7CiAgICAgICAgJG9wZXJhbmQgPSAkbm9kZS0+Z2V0T3BlcmFuZCgpLT5hY2NlcHQoJHRoaXMpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmFkZEV4Y2VwdGlvblNwYW4oJG5vZGUsIGZuKCkgPT4gbWF0Y2ggKCRub2RlLT5nZXRPcGVyYXRvcigpKSB7CiAgICAgICAgICAgIFVuYXJ5T3BlcmF0b3I6OlBMVVMgPT4gJG9wZXJhbmQtPnVuYXJ5UGx1cygpLAogICAgICAgICAgICBVbmFyeU9wZXJhdG9yOjpNSU5VUyA9PiAkb3BlcmFuZC0+dW5hcnlNaW51cygpLAogICAgICAgICAgICBVbmFyeU9wZXJhdG9yOjpESVZJREUgPT4gJG9wZXJhbmQtPnVuYXJ5RGl2aWRlKCksCiAgICAgICAgICAgIFVuYXJ5T3BlcmF0b3I6Ok5PVCA9PiAkb3BlcmFuZC0+dW5hcnlOb3QoKSwKICAgICAgICB9KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRCb29sZWFuRXhwcmVzc2lvbihCb29sZWFuRXhwcmVzc2lvbiAkbm9kZSk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoJG5vZGUtPmdldFZhbHVlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdElmRXhwcmVzc2lvbihJZkV4cHJlc3Npb24gJG5vZGUpOiBWYWx1ZQogICAgewogICAgICAgIFskcG9zaXRpb25hbCwgJG5hbWVkXSA9ICR0aGlzLT5ldmFsdWF0ZU1hY3JvQXJndW1lbnRzKCRub2RlKTsKCiAgICAgICAgJHRoaXMtPnZlcmlmeUFyZ3VtZW50cyhcY291bnQoJHBvc2l0aW9uYWwpLCAkbmFtZWQsIElmRXhwcmVzc2lvbjo6Z2V0RGVjbGFyYXRpb24oKSwgJG5vZGUpOwoKICAgICAgICAkY29uZGl0aW9uID0gJHBvc2l0aW9uYWxbMF0gPz8gJG5hbWVkWydjb25kaXRpb24nXTsKICAgICAgICAkaWZUcnVlID0gJHBvc2l0aW9uYWxbMV0gPz8gJG5hbWVkWydpZi10cnVlJ107CiAgICAgICAgJGlmRmFsc2UgPSAkcG9zaXRpb25hbFsyXSA/PyAkbmFtZWRbJ2lmLWZhbHNlJ107CgogICAgICAgICRyZXN1bHQgPSAkY29uZGl0aW9uLT5hY2NlcHQoJHRoaXMpLT5pc1RydXRoeSgpID8gJGlmVHJ1ZSA6ICRpZkZhbHNlOwoKICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhvdXRTbGFzaCgkcmVzdWx0LT5hY2NlcHQoJHRoaXMpLCAkdGhpcy0+ZXhwcmVzc2lvbk5vZGUoJHJlc3VsdCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE51bGxFeHByZXNzaW9uKE51bGxFeHByZXNzaW9uICRub2RlKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gU2Fzc051bGw6OmNyZWF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE51bWJlckV4cHJlc3Npb24oTnVtYmVyRXhwcmVzc2lvbiAkbm9kZSk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZSgkbm9kZS0+Z2V0VmFsdWUoKSwgJG5vZGUtPmdldFVuaXQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oUGFyZW50aGVzaXplZEV4cHJlc3Npb24gJG5vZGUpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkdGhpcy0+Z2V0U3R5bGVzaGVldCgpLT5pc1BsYWluQ3NzKCkpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigiUGFyZW50aGVzZXMgYXJlbid0IGFsbG93ZWQgaW4gcGxhaW4gQ1NTLiIsICRub2RlLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRub2RlLT5nZXRFeHByZXNzaW9uKCktPmFjY2VwdCgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29sb3JFeHByZXNzaW9uKENvbG9yRXhwcmVzc2lvbiAkbm9kZSk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuICRub2RlLT5nZXRWYWx1ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdExpc3RFeHByZXNzaW9uKExpc3RFeHByZXNzaW9uICRub2RlKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KGFycmF5X21hcChmdW5jdGlvbiAoRXhwcmVzc2lvbiAkZXhwcmVzc2lvbikgewogICAgICAgICAgICByZXR1cm4gJGV4cHJlc3Npb24tPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgfSwgJG5vZGUtPmdldENvbnRlbnRzKCkpLCAkbm9kZS0+Z2V0U2VwYXJhdG9yKCksICRub2RlLT5oYXNCcmFja2V0cygpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNYXBFeHByZXNzaW9uKE1hcEV4cHJlc3Npb24gJG5vZGUpOiBWYWx1ZQogICAgewogICAgICAgIC8qKiBAdmFyIE1hcDxWYWx1ZT4gJG1hcCAqLwogICAgICAgICRtYXAgPSBuZXcgTWFwKCk7CiAgICAgICAgLyoqIEB2YXIgTWFwPEFzdE5vZGU+ICRrZXlOb2RlcyAqLwogICAgICAgICRrZXlOb2RlcyA9IG5ldyBNYXAoKTsKCiAgICAgICAgZm9yZWFjaCAoJG5vZGUtPmdldFBhaXJzKCkgYXMgJHBhaXIpIHsKICAgICAgICAgICAgJGtleVZhbHVlID0gJHBhaXJbMF0tPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICR2YWx1ZVZhbHVlID0gJHBhaXJbMV0tPmFjY2VwdCgkdGhpcyk7CgogICAgICAgICAgICAkb2xkVmFsdWUgPSAkbWFwLT5nZXQoJGtleVZhbHVlKTsKCiAgICAgICAgICAgIGlmICgkb2xkVmFsdWUgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRvbGRWYWx1ZVNwYW4gPSAka2V5Tm9kZXMtPmdldCgka2V5VmFsdWUpPy0+Z2V0U3BhbigpOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IE11bHRpU3BhblNhc3NSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICdEdXBsaWNhdGUga2V5LicsCiAgICAgICAgICAgICAgICAgICAgJHBhaXJbMF0tPmdldFNwYW4oKSwKICAgICAgICAgICAgICAgICAgICAnc2Vjb25kIGtleScsCiAgICAgICAgICAgICAgICAgICAgJG9sZFZhbHVlU3BhbiAhPT0gbnVsbCA/IFsnZmlyc3Qga2V5JyA9PiAkb2xkVmFsdWVTcGFuXSA6IFtdLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zdGFja1RyYWNlKCRwYWlyWzBdLT5nZXRTcGFuKCkpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWFwLT5wdXQoJGtleVZhbHVlLCAkdmFsdWVWYWx1ZSk7CiAgICAgICAgICAgICRrZXlOb2Rlcy0+cHV0KCRrZXlWYWx1ZSwgJHBhaXJbMF0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZSgkbWFwKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEJ1aWx0aW5GdW5jdGlvbihzdHJpbmcgJG5hbWUpOiA/U2Fzc0NhbGxhYmxlCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+YnVpbHRJbkZ1bmN0aW9uc1skbmFtZV0pICYmIEZ1bmN0aW9uUmVnaXN0cnk6OmhhcygkbmFtZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1aWx0SW5GdW5jdGlvbnNbJG5hbWVdID0gRnVuY3Rpb25SZWdpc3RyeTo6Z2V0KCRuYW1lKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+YnVpbHRJbkZ1bmN0aW9uc1skbmFtZV0gPz8gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRGdW5jdGlvbkV4cHJlc3Npb24oRnVuY3Rpb25FeHByZXNzaW9uICRub2RlKTogVmFsdWUKICAgIHsKICAgICAgICAkZnVuY3Rpb24gPSAkdGhpcy0+Z2V0U3R5bGVzaGVldCgpLT5pc1BsYWluQ3NzKCkgPyBudWxsIDogJHRoaXMtPmFkZEV4Y2VwdGlvblNwYW4oJG5vZGUsIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5lbnZpcm9ubWVudC0+Z2V0RnVuY3Rpb24oJG5vZGUtPmdldE5hbWUoKSk7CiAgICAgICAgfSk7CgogICAgICAgIGlmICgkZnVuY3Rpb24gPT09IG51bGwpIHsKICAgICAgICAgICAgaWYgKCRub2RlLT5nZXROYW1lc3BhY2UoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbignVW5kZWZpbmVkIGZ1bmN0aW9uLicsICRub2RlLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJG5vZGUtPmdldE5hbWUoKSkpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ21pbic6CiAgICAgICAgICAgICAgICBjYXNlICdtYXgnOgogICAgICAgICAgICAgICAgY2FzZSAncm91bmQnOgogICAgICAgICAgICAgICAgY2FzZSAnYWJzJzoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLT5nZXRBcmd1bWVudHMoKS0+Z2V0TmFtZWQoKSA9PT0gW10KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG5vZGUtPmdldEFyZ3VtZW50cygpLT5nZXRSZXN0KCkgPT09IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgJiYgSXRlcmFibGVVdGlsOjpldmVyeSgkbm9kZS0+Z2V0QXJndW1lbnRzKCktPmdldFBvc2l0aW9uYWwoKSwgZnVuY3Rpb24gKEV4cHJlc3Npb24gJGFyZ3VtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGFyZ3VtZW50LT5hY2NlcHQobmV3IElzQ2FsY3VsYXRpb25TYWZlVmlzaXRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52aXNpdENhbGN1bGF0aW9uKCRub2RlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnY2FsYyc6CiAgICAgICAgICAgICAgICBjYXNlICdjbGFtcCc6CiAgICAgICAgICAgICAgICBjYXNlICdoeXBvdCc6CiAgICAgICAgICAgICAgICBjYXNlICdzaW4nOgogICAgICAgICAgICAgICAgY2FzZSAnY29zJzoKICAgICAgICAgICAgICAgIGNhc2UgJ3Rhbic6CiAgICAgICAgICAgICAgICBjYXNlICdhc2luJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2Fjb3MnOgogICAgICAgICAgICAgICAgY2FzZSAnYXRhbic6CiAgICAgICAgICAgICAgICBjYXNlICdzcXJ0JzoKICAgICAgICAgICAgICAgIGNhc2UgJ2V4cCc6CiAgICAgICAgICAgICAgICBjYXNlICdzaWduJzoKICAgICAgICAgICAgICAgIGNhc2UgJ21vZCc6CiAgICAgICAgICAgICAgICBjYXNlICdyZW0nOgogICAgICAgICAgICAgICAgY2FzZSAnYXRhbjInOgogICAgICAgICAgICAgICAgY2FzZSAncG93JzoKICAgICAgICAgICAgICAgIGNhc2UgJ2xvZyc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52aXNpdENhbGN1bGF0aW9uKCRub2RlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGZ1bmN0aW9uID0gKCR0aGlzLT5nZXRTdHlsZXNoZWV0KCktPmlzUGxhaW5Dc3MoKSA/IG51bGwgOiAkdGhpcy0+Z2V0QnVpbHRpbkZ1bmN0aW9uKCRub2RlLT5nZXROYW1lKCkpKSA/PyBuZXcgUGxhaW5Dc3NDYWxsYWJsZSgkbm9kZS0+Z2V0T3JpZ2luYWxOYW1lKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkbm9kZS0+Z2V0T3JpZ2luYWxOYW1lKCksICctLScpICYmICRmdW5jdGlvbiBpbnN0YW5jZW9mIFVzZXJEZWZpbmVkQ2FsbGFibGUgJiYgIXN0cl9zdGFydHNfd2l0aCgkZnVuY3Rpb24tPmdldERlY2xhcmF0aW9uKCktPmdldE9yaWdpbmFsTmFtZSgpLCAnLS0nKSkgewogICAgICAgICAgICAkdGhpcy0+d2FybigiU2FzcyBAZnVuY3Rpb24gbmFtZXMgYmVnaW5uaW5nIHdpdGggLS0gYXJlIGRlcHJlY2F0ZWQgZm9yIGZvcndhcmQtY29tcGF0aWJpbGl0eSB3aXRoIHBsYWluIENTUyBmdW5jdGlvbnMuXG5cbkZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2QvY3NzLWZ1bmN0aW9uLW1peGluIiwgJG5vZGUtPmdldE5hbWVTcGFuKCksIERlcHJlY2F0aW9uOjpjc3NGdW5jdGlvbk1peGluKTsKICAgICAgICB9CgogICAgICAgICRvbGRJbkZ1bmN0aW9uID0gJHRoaXMtPmluRnVuY3Rpb247CiAgICAgICAgJHRoaXMtPmluRnVuY3Rpb24gPSB0cnVlOwogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+YWRkRXJyb3JTcGFuKCRub2RlLCBmdW5jdGlvbiAoKSB1c2UgKCRmdW5jdGlvbiwgJG5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5ydW5GdW5jdGlvbkNhbGxhYmxlKCRub2RlLT5nZXRBcmd1bWVudHMoKSwgJGZ1bmN0aW9uLCAkbm9kZSk7CiAgICAgICAgfSk7CiAgICAgICAgJHRoaXMtPmluRnVuY3Rpb24gPSAkb2xkSW5GdW5jdGlvbjsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB2aXNpdENhbGN1bGF0aW9uKEZ1bmN0aW9uRXhwcmVzc2lvbiAkbm9kZSwgYm9vbCAkaW5MZWdhY3lTYXNzRnVuY3Rpb24gPSBmYWxzZSk6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCRub2RlLT5nZXRBcmd1bWVudHMoKS0+Z2V0TmFtZWQoKSAhPT0gW10pIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigiS2V5d29yZCBhcmd1bWVudHMgY2FuJ3QgYmUgdXNlZCB3aXRoIGNhbGN1bGF0aW9ucy4iLCAkbm9kZS0+Z2V0U3BhbigpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbm9kZS0+Z2V0QXJndW1lbnRzKCktPmdldFJlc3QoKSAhPT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCJSZXN0IGFyZ3VtZW50cyBjYW4ndCBiZSB1c2VkIHdpdGggY2FsY3VsYXRpb25zLiIsICRub2RlLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNoZWNrQ2FsY3VsYXRpb25Bcmd1bWVudHMoJG5vZGUpOwogICAgICAgICRhcmd1bWVudHMgPSBhcnJheV9tYXAoZnVuY3Rpb24gKCRhcmd1bWVudCkgdXNlICgkaW5MZWdhY3lTYXNzRnVuY3Rpb24pIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52aXNpdENhbGN1bGF0aW9uRXhwcmVzc2lvbigkYXJndW1lbnQsICRpbkxlZ2FjeVNhc3NGdW5jdGlvbik7CiAgICAgICAgfSwgJG5vZGUtPmdldEFyZ3VtZW50cygpLT5nZXRQb3NpdGlvbmFsKCkpOwoKICAgICAgICBpZiAoJHRoaXMtPmluU3VwcG9ydHNEZWNsYXJhdGlvbikgewogICAgICAgICAgICByZXR1cm4gU2Fzc0NhbGN1bGF0aW9uOjp1bnNpbXBsaWZpZWQoJG5vZGUtPmdldE5hbWUoKSwgJGFyZ3VtZW50cyk7CiAgICAgICAgfQoKICAgICAgICAkb2xkQ2FsbGFibGVOb2RlID0gJHRoaXMtPmNhbGxhYmxlTm9kZTsKICAgICAgICAkdGhpcy0+Y2FsbGFibGVOb2RlID0gJG5vZGU7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBtYXRjaCAoc3RydG9sb3dlcigkbm9kZS0+Z2V0TmFtZSgpKSkgewogICAgICAgICAgICAgICAgJ2NhbGMnID0+IFNhc3NDYWxjdWxhdGlvbjo6Y2FsYygkYXJndW1lbnRzWzBdKSwKICAgICAgICAgICAgICAgICdzcXJ0JyA9PiBTYXNzQ2FsY3VsYXRpb246OnNxcnQoJGFyZ3VtZW50c1swXSksCiAgICAgICAgICAgICAgICAnc2luJyA9PiBTYXNzQ2FsY3VsYXRpb246OnNpbigkYXJndW1lbnRzWzBdKSwKICAgICAgICAgICAgICAgICdjb3MnID0+IFNhc3NDYWxjdWxhdGlvbjo6Y29zKCRhcmd1bWVudHNbMF0pLAogICAgICAgICAgICAgICAgJ3RhbicgPT4gU2Fzc0NhbGN1bGF0aW9uOjp0YW4oJGFyZ3VtZW50c1swXSksCiAgICAgICAgICAgICAgICAnYXNpbicgPT4gU2Fzc0NhbGN1bGF0aW9uOjphc2luKCRhcmd1bWVudHNbMF0pLAogICAgICAgICAgICAgICAgJ2Fjb3MnID0+IFNhc3NDYWxjdWxhdGlvbjo6YWNvcygkYXJndW1lbnRzWzBdKSwKICAgICAgICAgICAgICAgICdhdGFuJyA9PiBTYXNzQ2FsY3VsYXRpb246OmF0YW4oJGFyZ3VtZW50c1swXSksCiAgICAgICAgICAgICAgICAnYWJzJyA9PiBTYXNzQ2FsY3VsYXRpb246OmFicygkYXJndW1lbnRzWzBdKSwKICAgICAgICAgICAgICAgICdleHAnID0+IFNhc3NDYWxjdWxhdGlvbjo6ZXhwKCRhcmd1bWVudHNbMF0pLAogICAgICAgICAgICAgICAgJ3NpZ24nID0+IFNhc3NDYWxjdWxhdGlvbjo6c2lnbigkYXJndW1lbnRzWzBdKSwKICAgICAgICAgICAgICAgICdtaW4nID0+IFNhc3NDYWxjdWxhdGlvbjo6bWluKCRhcmd1bWVudHMpLAogICAgICAgICAgICAgICAgJ21heCcgPT4gU2Fzc0NhbGN1bGF0aW9uOjptYXgoJGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAnaHlwb3QnID0+IFNhc3NDYWxjdWxhdGlvbjo6aHlwb3QoJGFyZ3VtZW50cyksCiAgICAgICAgICAgICAgICAncG93JyA9PiBTYXNzQ2FsY3VsYXRpb246OnBvdygkYXJndW1lbnRzWzBdLCAkYXJndW1lbnRzWzFdID8/IG51bGwpLAogICAgICAgICAgICAgICAgJ2F0YW4yJyA9PiBTYXNzQ2FsY3VsYXRpb246OmF0YW4yKCRhcmd1bWVudHNbMF0sICRhcmd1bWVudHNbMV0gPz8gbnVsbCksCiAgICAgICAgICAgICAgICAnbG9nJyA9PiBTYXNzQ2FsY3VsYXRpb246OmxvZygkYXJndW1lbnRzWzBdLCAkYXJndW1lbnRzWzFdID8/IG51bGwpLAogICAgICAgICAgICAgICAgJ21vZCcgPT4gU2Fzc0NhbGN1bGF0aW9uOjptb2QoJGFyZ3VtZW50c1swXSwgJGFyZ3VtZW50c1sxXSA/PyBudWxsKSwKICAgICAgICAgICAgICAgICdyZW0nID0+IFNhc3NDYWxjdWxhdGlvbjo6cmVtKCRhcmd1bWVudHNbMF0sICRhcmd1bWVudHNbMV0gPz8gbnVsbCksCiAgICAgICAgICAgICAgICAncm91bmQnID0+IFNhc3NDYWxjdWxhdGlvbjo6cm91bmQoJGFyZ3VtZW50c1swXSwgJGFyZ3VtZW50c1sxXSA/PyBudWxsLCAkYXJndW1lbnRzWzJdID8/IG51bGwpLAogICAgICAgICAgICAgICAgJ2NsYW1wJyA9PiBTYXNzQ2FsY3VsYXRpb246OmNsYW1wKCRhcmd1bWVudHNbMF0sICRhcmd1bWVudHNbMV0gPz8gbnVsbCwgJGFyZ3VtZW50c1syXSA/PyBudWxsKSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oc3ByaW50ZignVW5rbm93biBjYWxjdWxhdGlvbiBuYW1lICIlcyIuJywgJG5vZGUtPmdldE5hbWUoKSkpLAogICAgICAgICAgICB9OwogICAgICAgIH0gY2F0Y2ggKFNhc3NTY3JpcHRFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgLy8gVGhlIHNpbXBsaWZpY2F0aW9uIGxvZ2ljIGluIHRoZSBTYXNzQ2FsY3VsYXRpb24gc3RhdGljIG1ldGhvZHMgd2lsbAogICAgICAgICAgICAvLyB0aHJvdyBhbiBlcnJvciBpZiB0aGUgYXJndW1lbnRzIGFyZW4ndCBjb21wYXRpYmxlLCBidXQgd2UgaGF2ZSBhY2Nlc3MKICAgICAgICAgICAgLy8gdG8gdGhlIG9yaWdpbmFsIHNwYW5zIHNvIHdlIGNhbiB0aHJvdyBhIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IuCiAgICAgICAgICAgIGlmIChzdHJfY29udGFpbnMoJGUtPmdldE1lc3NhZ2UoKSwgJ2NvbXBhdGlibGUnKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnZlcmlmeUNvbXBhdGlibGVOdW1iZXJzKCRhcmd1bWVudHMsICRub2RlLT5nZXRBcmd1bWVudHMoKS0+Z2V0UG9zaXRpb25hbCgpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpLCAkbm9kZS0+Z2V0U3BhbigpLCAkZSk7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgJHRoaXMtPmNhbGxhYmxlTm9kZSA9ICRvbGRDYWxsYWJsZU5vZGU7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tDYWxjdWxhdGlvbkFyZ3VtZW50cyhGdW5jdGlvbkV4cHJlc3Npb24gJG5vZGUpOiB2b2lkCiAgICB7CiAgICAgICAgJGNoZWNrID0gZnVuY3Rpb24gKD9pbnQgJG1heEFyZ3MgPSBudWxsKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgIGlmICgkbm9kZS0+Z2V0QXJndW1lbnRzKCktPmdldFBvc2l0aW9uYWwoKSA9PT0gW10pIHsKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oJ01pc3NpbmcgYXJndW1lbnQuJywgJG5vZGUtPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbWF4QXJncyAhPT0gbnVsbCAmJiBcY291bnQoJG5vZGUtPmdldEFyZ3VtZW50cygpLT5nZXRQb3NpdGlvbmFsKCkpID4gJG1heEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnT25seSAlZCAlcyBhbGxvd2VkLCBidXQgJWQgJXMgcGFzc2VkLicsCiAgICAgICAgICAgICAgICAgICAgJG1heEFyZ3MsCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nVXRpbDo6cGx1cmFsaXplKCdhcmd1bWVudCcsICRtYXhBcmdzKSwKICAgICAgICAgICAgICAgICAgICBcY291bnQoJG5vZGUtPmdldEFyZ3VtZW50cygpLT5nZXRQb3NpdGlvbmFsKCkpLAogICAgICAgICAgICAgICAgICAgIFN0cmluZ1V0aWw6OnBsdXJhbGl6ZSgnd2FzJywgXGNvdW50KCRub2RlLT5nZXRBcmd1bWVudHMoKS0+Z2V0UG9zaXRpb25hbCgpKSwgJ3dlcmUnKQogICAgICAgICAgICAgICAgKSwgJG5vZGUtPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJG5vZGUtPmdldE5hbWUoKSkpIHsKICAgICAgICAgICAgY2FzZSAnY2FsYyc6CiAgICAgICAgICAgIGNhc2UgJ3NxcnQnOgogICAgICAgICAgICBjYXNlICdzaW4nOgogICAgICAgICAgICBjYXNlICdjb3MnOgogICAgICAgICAgICBjYXNlICd0YW4nOgogICAgICAgICAgICBjYXNlICdhc2luJzoKICAgICAgICAgICAgY2FzZSAnYWNvcyc6CiAgICAgICAgICAgIGNhc2UgJ2F0YW4nOgogICAgICAgICAgICBjYXNlICdhYnMnOgogICAgICAgICAgICBjYXNlICdleHAnOgogICAgICAgICAgICBjYXNlICdzaWduJzoKICAgICAgICAgICAgICAgICRjaGVjaygxKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdtaW4nOgogICAgICAgICAgICBjYXNlICdtYXgnOgogICAgICAgICAgICBjYXNlICdoeXBvdCc6CiAgICAgICAgICAgICAgICAkY2hlY2soKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdwb3cnOgogICAgICAgICAgICBjYXNlICdhdGFuMic6CiAgICAgICAgICAgIGNhc2UgJ2xvZyc6CiAgICAgICAgICAgIGNhc2UgJ21vZCc6CiAgICAgICAgICAgIGNhc2UgJ3JlbSc6CiAgICAgICAgICAgICAgICAkY2hlY2soMik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAncm91bmQnOgogICAgICAgICAgICBjYXNlICdjbGFtcCc6CiAgICAgICAgICAgICAgICAkY2hlY2soMyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcVW5leHBlY3RlZFZhbHVlRXhjZXB0aW9uKHNwcmludGYoJ1Vua25vd24gY2FsY3VsYXRpb24gbmFtZSAiJXMiLicsICRub2RlLT5nZXROYW1lKCkpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBWZXJpZmllcyB0aGF0ICRhcmdzIGFsbCBoYXZlIGNvbXBhdGlibGUgdW5pdHMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgQ1NTCiAgICAgKiBjYWxjdWxhdGlvbnMsIGFuZCB0aHJvd3MgYSB7QHNlZSBTYXNzRXhjZXB0aW9ufSBpZiBub3QuCiAgICAgKgogICAgICogVGhlICRub2Rlc1dpdGhTcGFucyBzaG91bGQgY29ycmVzcG9uZCB0byB0aGUgc3BhbnMgZm9yICRhcmdzLgogICAgICoKICAgICAqIEBwYXJhbSBvYmplY3RbXSAgJGFyZ3MKICAgICAqIEBwYXJhbSBBc3ROb2RlW10gJG5vZGVzV2l0aFNwYW5zCiAgICAgKgogICAgICogQHRocm93cyBTYXNzRXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5Q29tcGF0aWJsZU51bWJlcnMoYXJyYXkgJGFyZ3MsIGFycmF5ICRub2Rlc1dpdGhTcGFucyk6IHZvaWQKICAgIHsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBcY291bnQoJGFyZ3MpOyAkaSsrKSB7CiAgICAgICAgICAgICRhcmcgPSAkYXJnc1skaV07CiAgICAgICAgICAgIGlmICgkYXJnIGluc3RhbmNlb2YgU2Fzc051bWJlciAmJiAkYXJnLT5oYXNDb21wbGV4VW5pdHMoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigiTnVtYmVyICRhcmcgaXNuJ3QgY29tcGF0aWJsZSB3aXRoIENTUyBjYWxjdWxhdGlvbnMuIiwgJG5vZGVzV2l0aFNwYW5zWyRpXS0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgXGNvdW50KCRhcmdzKTsgJGkrKykgewogICAgICAgICAgICAkbnVtYmVyMSA9ICRhcmdzWyRpXTsKCiAgICAgICAgICAgIGlmICghJG51bWJlcjEgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yICgkaiA9ICRpICsgMTsgJGogPCBcY291bnQoJGFyZ3MpOyAkaisrKSB7CiAgICAgICAgICAgICAgICAkbnVtYmVyMiA9ICRhcmdzWyRqXTsKCiAgICAgICAgICAgICAgICBpZiAoISRudW1iZXIyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkbnVtYmVyMS0+aGFzUG9zc2libHlDb21wYXRpYmxlVW5pdHMoJG51bWJlcjIpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IE11bHRpU3BhblNhc3NSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICIkbnVtYmVyMSBhbmQgJG51bWJlcjIgYXJlIGluY29tcGF0aWJsZS4iLAogICAgICAgICAgICAgICAgICAgICRub2Rlc1dpdGhTcGFuc1skaV0tPmdldFNwYW4oKSwKICAgICAgICAgICAgICAgICAgICAoc3RyaW5nKSAkbnVtYmVyMSwKICAgICAgICAgICAgICAgICAgICBbKHN0cmluZykgJG51bWJlcjIgPT4gJG5vZGVzV2l0aFNwYW5zWyRqXS0+Z2V0U3BhbigpXSwKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c3RhY2tUcmFjZSgkbm9kZXNXaXRoU3BhbnNbJGldLT5nZXRTcGFuKCkpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGVzICRub2RlIGFzIGEgY29tcG9uZW50IG9mIGEgY2FsY3VsYXRpb24uCiAgICAgKgogICAgICogSWYgJGluTGVnYWN5U2Fzc0Z1bmN0aW9uIGlzIGB0cnVlYCwgdGhpcyBhbGxvd3MgdW5pdGxlc3MgbnVtYmVycyB0byBiZSBhZGRlZCBhbmQKICAgICAqIHN1YnRyYWN0ZWQgd2l0aCBudW1iZXJzIHdpdGggdW5pdHMsIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSB3aXRoIHRoZQogICAgICogb2xkIGdsb2JhbCBgbWluKClgLCBgbWF4KClgLCBgcm91bmQoKWAgYW5kIGBhYnMoKWAgZnVuY3Rpb25zLgogICAgICoKICAgICAqIEByZXR1cm4gU2Fzc051bWJlcnxDYWxjdWxhdGlvbk9wZXJhdGlvbnxTYXNzU3RyaW5nfFNhc3NDYWxjdWxhdGlvbnxWYWx1ZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZpc2l0Q2FsY3VsYXRpb25FeHByZXNzaW9uKEV4cHJlc3Npb24gJG5vZGUsIGJvb2wgJGluTGVnYWN5U2Fzc0Z1bmN0aW9uKTogb2JqZWN0CiAgICB7CiAgICAgICAgaWYgKCRub2RlIGluc3RhbmNlb2YgUGFyZW50aGVzaXplZEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT52aXNpdENhbGN1bGF0aW9uRXhwcmVzc2lvbigkbm9kZS0+Z2V0RXhwcmVzc2lvbigpLCAkaW5MZWdhY3lTYXNzRnVuY3Rpb24pOwoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQgaW5zdGFuY2VvZiBTYXNzU3RyaW5nCiAgICAgICAgICAgICAgICA/IG5ldyBTYXNzU3RyaW5nKCcoJyAuICRyZXN1bHQtPmdldFRleHQoKSAuICcpJywgZmFsc2UpCiAgICAgICAgICAgICAgICA6ICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5vZGUgaW5zdGFuY2VvZiBTdHJpbmdFeHByZXNzaW9uKSB7CiAgICAgICAgICAgIGlmICghJG5vZGUtPmFjY2VwdChuZXcgSXNDYWxjdWxhdGlvblNhZmVWaXNpdG9yKCkpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCJUaGlzIGV4cHJlc3Npb24gY2FuJ3QgYmUgdXNlZCBpbiBhIGNhbGN1bGF0aW9uLiIsICRub2RlLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBhc3NlcnQoISRub2RlLT5oYXNRdW90ZXMoKSk7CgogICAgICAgICAgICAkdGV4dCA9ICRub2RlLT5nZXRUZXh0KCktPmdldEFzUGxhaW4oKTsKICAgICAgICAgICAgaWYgKCR0ZXh0ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoJHRoaXMtPnBlcmZvcm1JbnRlcnBvbGF0aW9uKCRub2RlLT5nZXRUZXh0KCkpLCBmYWxzZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBtYXRjaCAoc3RydG9sb3dlcigkdGV4dCkpIHsKICAgICAgICAgICAgICAgICdwaScgPT4gU2Fzc051bWJlcjo6Y3JlYXRlKE1fUEkpLAogICAgICAgICAgICAgICAgJ2UnID0+IFNhc3NOdW1iZXI6OmNyZWF0ZShNX0UpLAogICAgICAgICAgICAgICAgJ2luZmluaXR5JyA9PiBTYXNzTnVtYmVyOjpjcmVhdGUoSU5GKSwKICAgICAgICAgICAgICAgICctaW5maW5pdHknID0+IFNhc3NOdW1iZXI6OmNyZWF0ZSgtSU5GKSwKICAgICAgICAgICAgICAgICduYW4nID0+IFNhc3NOdW1iZXI6OmNyZWF0ZShOQU4pLAogICAgICAgICAgICAgICAgZGVmYXVsdCA9PiBuZXcgU2Fzc1N0cmluZygkdGV4dCwgZmFsc2UpLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRub2RlIGluc3RhbmNlb2YgQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbikgewogICAgICAgICAgICAkdGhpcy0+Y2hlY2tXaGl0ZXNwYWNlQXJvdW5kQ2FsY3VsYXRpb25PcGVyYXRvcigkbm9kZSk7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YWRkRXhjZXB0aW9uU3Bhbigkbm9kZSwgZnVuY3Rpb24gKCkgdXNlICgkbm9kZSwgJGluTGVnYWN5U2Fzc0Z1bmN0aW9uKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gU2Fzc0NhbGN1bGF0aW9uOjpvcGVyYXRlSW50ZXJuYWwoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJpbmFyeU9wZXJhdG9yVG9DYWxjdWxhdGlvbk9wZXJhdG9yKCRub2RlLT5nZXRPcGVyYXRvcigpLCAkbm9kZSksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnZpc2l0Q2FsY3VsYXRpb25FeHByZXNzaW9uKCRub2RlLT5nZXRMZWZ0KCksICRpbkxlZ2FjeVNhc3NGdW5jdGlvbiksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnZpc2l0Q2FsY3VsYXRpb25FeHByZXNzaW9uKCRub2RlLT5nZXRSaWdodCgpLCAkaW5MZWdhY3lTYXNzRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICRpbkxlZ2FjeVNhc3NGdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAhJHRoaXMtPmluU3VwcG9ydHNEZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5vZGUgaW5zdGFuY2VvZiBOdW1iZXJFeHByZXNzaW9uIHx8ICRub2RlIGluc3RhbmNlb2YgVmFyaWFibGVFeHByZXNzaW9uIHx8ICRub2RlIGluc3RhbmNlb2YgRnVuY3Rpb25FeHByZXNzaW9uIHx8ICRub2RlIGluc3RhbmNlb2YgSWZFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAkbm9kZS0+YWNjZXB0KCR0aGlzKTsKCiAgICAgICAgICAgIGlmICgkcmVzdWx0IGluc3RhbmNlb2YgU2Fzc051bWJlciB8fCAkcmVzdWx0IGluc3RhbmNlb2YgU2Fzc0NhbGN1bGF0aW9uKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRyZXN1bHQgaW5zdGFuY2VvZiBTYXNzU3RyaW5nICYmICEkcmVzdWx0LT5oYXNRdW90ZXMoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oIlZhbHVlICRyZXN1bHQgY2FuJ3QgYmUgdXNlZCBpbiBhIGNhbGN1bGF0aW9uLiIsICRub2RlLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRub2RlIGluc3RhbmNlb2YgTGlzdEV4cHJlc3Npb24gJiYgISRub2RlLT5oYXNCcmFja2V0cygpICYmICRub2RlLT5nZXRTZXBhcmF0b3IoKSA9PT0gTGlzdFNlcGFyYXRvcjo6U1BBQ0UgJiYgXGNvdW50KCRub2RlLT5nZXRDb250ZW50cygpKSA+IDEpIHsKICAgICAgICAgICAgJGVsZW1lbnRzID0gW107CiAgICAgICAgICAgIGZvcmVhY2ggKCRub2RlLT5nZXRDb250ZW50cygpIGFzICRlbGVtZW50KSB7CiAgICAgICAgICAgICAgICAkZWxlbWVudHNbXSA9ICR0aGlzLT52aXNpdENhbGN1bGF0aW9uRXhwcmVzc2lvbigkZWxlbWVudCwgJGluTGVnYWN5U2Fzc0Z1bmN0aW9uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmNoZWNrQWRqYWNlbnRDYWxjdWxhdGlvblZhbHVlcygkZWxlbWVudHMsICRub2RlKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRlbGVtZW50cyBhcyAkaSA9PiAkZWxlbWVudCkgewogICAgICAgICAgICAgICAgaWYgKCRlbGVtZW50IGluc3RhbmNlb2YgQ2FsY3VsYXRpb25PcGVyYXRpb24gJiYgJG5vZGUtPmdldENvbnRlbnRzKClbJGldIGluc3RhbmNlb2YgUGFyZW50aGVzaXplZEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkZWxlbWVudHNbJGldID0gbmV3IFNhc3NTdHJpbmcoIigkZWxlbWVudCkiLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc1N0cmluZyhpbXBsb2RlKCcgJywgJGVsZW1lbnRzKSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgXGFzc2VydCghJG5vZGUtPmFjY2VwdChuZXcgSXNDYWxjdWxhdGlvblNhZmVWaXNpdG9yKCkpKTsKCiAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigiVGhpcyBleHByZXNzaW9uIGNhbid0IGJlIHVzZWQgaW4gYSBjYWxjdWxhdGlvbi4iLCAkbm9kZS0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRocm93cyBhbiBlcnJvciBpZiAkbm9kZSByZXF1aXJlcyB3aGl0ZXNwYWNlIGFyb3VuZCBpdHMgb3BlcmF0b3IgaW4gYQogICAgICogY2FsY3VsYXRpb24gYnV0IGRvZXNuJ3QgaGF2ZSBpdC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja1doaXRlc3BhY2VBcm91bmRDYWxjdWxhdGlvbk9wZXJhdG9yKEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24gJG5vZGUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCRub2RlLT5nZXRPcGVyYXRvcigpICE9PSBCaW5hcnlPcGVyYXRvcjo6UExVUyAmJiAkbm9kZS0+Z2V0T3BlcmF0b3IoKSAhPT0gQmluYXJ5T3BlcmF0b3I6Ok1JTlVTKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIFdlIF9zaG91bGRfIG5ldmVyIGJlIGFibGUgdG8gdmlvbGF0ZSB0aGVzZSBjb25kaXRpb25zIHNpbmNlIHdlIGFsd2F5cwogICAgICAgIC8vIHBhcnNlIGJpbmFyeSBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgZmlsZSwgYnV0IGl0J3MgYmV0dGVyIHRvIGJlIHNhZmUKICAgICAgICAvLyB0aGFuIGhhdmUgdGhpcyBjcmFzaCBiaXphcnJlbHkuCiAgICAgICAgaWYgKCRub2RlLT5nZXRMZWZ0KCktPmdldFNwYW4oKS0+Z2V0RmlsZSgpICE9PSAkbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0U3BhbigpLT5nZXRGaWxlKCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoJG5vZGUtPmdldExlZnQoKS0+Z2V0U3BhbigpLT5nZXRFbmQoKS0+Z2V0T2Zmc2V0KCkgPj0gJG5vZGUtPmdldFJpZ2h0KCktPmdldFNwYW4oKS0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkdGV4dEJldHdlZW5PcGVyYW5kcyA9ICRub2RlLT5nZXRMZWZ0KCktPmdldFNwYW4oKS0+Z2V0RmlsZSgpLT5nZXRUZXh0KCRub2RlLT5nZXRMZWZ0KCktPmdldFNwYW4oKS0+Z2V0RW5kKCktPmdldE9mZnNldCgpLCAkbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0U3BhbigpLT5nZXRTdGFydCgpLT5nZXRPZmZzZXQoKSk7CgogICAgICAgICRmaXJzdCA9ICR0ZXh0QmV0d2Vlbk9wZXJhbmRzWzBdOwogICAgICAgICRsYXN0ID0gJHRleHRCZXR3ZWVuT3BlcmFuZHNbXHN0cmxlbigkdGV4dEJldHdlZW5PcGVyYW5kcykgLSAxXTsKCiAgICAgICAgaWYgKCEoQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJGZpcnN0KSB8fCAkZmlyc3QgPT09ICcvJykgfHwgIShDaGFyYWN0ZXI6OmlzV2hpdGVzcGFjZSgkbGFzdCkgfHwgJGxhc3QgPT09ICcvJykpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbignIisiIGFuZCAiLSIgbXVzdCBiZSBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UgaW4gY2FsY3VsYXRpb25zLicsICRub2RlLT5nZXRPcGVyYXRvclNwYW4oKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUge0BzZWUgQ2FsY3VsYXRpb25PcGVyYXRvcn0gdGhhdCBjb3JyZXNwb25kcyB0byAkb3BlcmF0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYmluYXJ5T3BlcmF0b3JUb0NhbGN1bGF0aW9uT3BlcmF0b3IoQmluYXJ5T3BlcmF0b3IgJG9wZXJhdG9yLCBCaW5hcnlPcGVyYXRpb25FeHByZXNzaW9uICRub2RlKTogQ2FsY3VsYXRpb25PcGVyYXRvcgogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJG9wZXJhdG9yKSB7CiAgICAgICAgICAgIEJpbmFyeU9wZXJhdG9yOjpQTFVTID0+IENhbGN1bGF0aW9uT3BlcmF0b3I6OlBMVVMsCiAgICAgICAgICAgIEJpbmFyeU9wZXJhdG9yOjpNSU5VUyA9PiBDYWxjdWxhdGlvbk9wZXJhdG9yOjpNSU5VUywKICAgICAgICAgICAgQmluYXJ5T3BlcmF0b3I6OlRJTUVTID0+IENhbGN1bGF0aW9uT3BlcmF0b3I6OlRJTUVTLAogICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6RElWSURFRF9CWSA9PiBDYWxjdWxhdGlvbk9wZXJhdG9yOjpESVZJREVEX0JZLAogICAgICAgICAgICBkZWZhdWx0ID0+IHRocm93ICR0aGlzLT5leGNlcHRpb24oIlRoaXMgb3BlcmF0aW9uIGNhbid0IGJlIHVzZWQgaW4gYSBjYWxjdWxhdGlvbi4iLCAkbm9kZS0+Z2V0T3BlcmF0b3JTcGFuKCkpLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxvYmplY3Q+ICRlbGVtZW50cwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrQWRqYWNlbnRDYWxjdWxhdGlvblZhbHVlcyhhcnJheSAkZWxlbWVudHMsIExpc3RFeHByZXNzaW9uICRub2RlKTogdm9pZAogICAgewogICAgICAgIFxhc3NlcnQoXGNvdW50KCRlbGVtZW50cykgPiAxKTsKCiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgXGNvdW50KCRlbGVtZW50cyk7ICRpKyspIHsKICAgICAgICAgICAgJHByZXZpb3VzID0gJGVsZW1lbnRzWyRpIC0gMV07CiAgICAgICAgICAgICRjdXJyZW50ID0gJGVsZW1lbnRzWyRpXTsKCiAgICAgICAgICAgIGlmICgkcHJldmlvdXMgaW5zdGFuY2VvZiBTYXNzU3RyaW5nIHx8ICRjdXJyZW50IGluc3RhbmNlb2YgU2Fzc1N0cmluZykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwcmV2aW91c05vZGUgPSAkbm9kZS0+Z2V0Q29udGVudHMoKVskaSAtIDFdOwogICAgICAgICAgICAkY3VycmVudE5vZGUgPSAkbm9kZS0+Z2V0Q29udGVudHMoKVskaV07CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkY3VycmVudE5vZGUgaW5zdGFuY2VvZiBVbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24gJiYgKCRjdXJyZW50Tm9kZS0+Z2V0T3BlcmF0b3IoKSA9PT0gVW5hcnlPcGVyYXRvcjo6TUlOVVMgfHwgJGN1cnJlbnROb2RlLT5nZXRPcGVyYXRvcigpID09PSBVbmFyeU9wZXJhdG9yOjpQTFVTKQogICAgICAgICAgICAgICAgfHwgJGN1cnJlbnROb2RlIGluc3RhbmNlb2YgTnVtYmVyRXhwcmVzc2lvbiAmJiAkY3VycmVudE5vZGUtPmdldFZhbHVlKCkgPCAwCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgLy8gYGNhbGMoMSAtMilgIHBhcnNlcyBhcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IHdob3NlIHNlY29uZCB2YWx1ZSBpcyBhCiAgICAgICAgICAgICAgICAvLyB1bmFyeSBvcGVyYXRvciBvciBhIG5lZ2F0aXZlIG51bWJlciwgYnV0IGp1c3Qgc2F5aW5nIGl0J3MgYW4gaW52YWxpZAogICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiBkb2Vzbid0IGhlbHAgdGhlIHVzZXIgdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgd3JvbmcuIFdlCiAgICAgICAgICAgICAgICAvLyBhZGQgc3BlY2lhbCBjYXNlIGVycm9yIGhhbmRsaW5nIHRvIGhlbHAgY2xhcmlmeSB0aGUgaXNzdWUuCiAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCciKyIgYW5kICItIiBtdXN0IGJlIHN1cnJvdW5kZWQgYnkgd2hpdGVzcGFjZSBpbiBjYWxjdWxhdGlvbnMuJywgJGN1cnJlbnROb2RlLT5nZXRTcGFuKCktPnN1YnNwYW4oMCwgMSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCdNaXNzaW5nIG1hdGggb3BlcmF0b3IuJywgJHByZXZpb3VzTm9kZS0+Z2V0U3BhbigpLT5leHBhbmQoJGN1cnJlbnROb2RlLT5nZXRTcGFuKCkpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uKEludGVycG9sYXRlZEZ1bmN0aW9uRXhwcmVzc2lvbiAkbm9kZSk6IFZhbHVlCiAgICB7CiAgICAgICAgJGZ1bmN0aW9uID0gbmV3IFBsYWluQ3NzQ2FsbGFibGUoJHRoaXMtPnBlcmZvcm1JbnRlcnBvbGF0aW9uKCRub2RlLT5nZXROYW1lKCkpKTsKCiAgICAgICAgJG9sZEluRnVuY3Rpb24gPSAkdGhpcy0+aW5GdW5jdGlvbjsKICAgICAgICAkdGhpcy0+aW5GdW5jdGlvbiA9IHRydWU7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5hZGRFcnJvclNwYW4oJG5vZGUsIGZ1bmN0aW9uICgpIHVzZSAoJGZ1bmN0aW9uLCAkbm9kZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJ1bkZ1bmN0aW9uQ2FsbGFibGUoJG5vZGUtPmdldEFyZ3VtZW50cygpLCAkZnVuY3Rpb24sICRub2RlKTsKICAgICAgICB9KTsKICAgICAgICAkdGhpcy0+aW5GdW5jdGlvbiA9ICRvbGRJbkZ1bmN0aW9uOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEB0ZW1wbGF0ZSBWIG9mIFZhbHVlfG51bGwKICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogViAkcnVuCiAgICAgKgogICAgICogQHJldHVybiBWCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJHJ1bgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJ1blVzZXJEZWZpbmVkQ2FsbGFibGUoQXJndW1lbnRJbnZvY2F0aW9uICRhcmd1bWVudHMsIFVzZXJEZWZpbmVkQ2FsbGFibGUgJGNhbGxhYmxlLCBBc3ROb2RlICRub2RlV2l0aFNwYW4sIGNhbGxhYmxlICRydW4pOiA/VmFsdWUKICAgIHsKICAgICAgICAkZXZhbHVhdGVkID0gJHRoaXMtPmV2YWx1YXRlQXJndW1lbnRzKCRhcmd1bWVudHMpOwogICAgICAgICRuYW1lID0gJGNhbGxhYmxlLT5nZXROYW1lKCk7CgogICAgICAgIGlmICgkbmFtZSAhPT0gJ0Bjb250ZW50JykgewogICAgICAgICAgICAkbmFtZSAuPSAnKCknOwogICAgICAgIH0KCiAgICAgICAgJG9sZENhbGxhYmxlID0gJHRoaXMtPmN1cnJlbnRDYWxsYWJsZTsKICAgICAgICAkdGhpcy0+Y3VycmVudENhbGxhYmxlID0gJGNhbGxhYmxlOwoKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPndpdGhTdGFja0ZyYW1lKCRuYW1lLCAkbm9kZVdpdGhTcGFuLCBmdW5jdGlvbiAoKSB1c2UgKCRjYWxsYWJsZSwgJGV2YWx1YXRlZCwgJG5vZGVXaXRoU3BhbiwgJHJ1bikgewogICAgICAgICAgICAvLyBBZGQgYW4gZXh0cmEgY2xvc3VyZSgpIGNhbGwgc28gdGhhdCBtb2RpZmljYXRpb25zIHRvIHRoZSBlbnZpcm9ubWVudAogICAgICAgICAgICAvLyBkb24ndCBhZmZlY3QgdGhlIHVuZGVybHlpbmcgZW52aXJvbm1lbnQgY2xvc3VyZS4KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aXRoRW52aXJvbm1lbnQoJGNhbGxhYmxlLT5nZXRFbnZpcm9ubWVudCgpLT5jbG9zdXJlKCksIGZ1bmN0aW9uICgpIHVzZSAoJGNhbGxhYmxlLCAkZXZhbHVhdGVkLCAkbm9kZVdpdGhTcGFuLCAkcnVuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmVudmlyb25tZW50LT5zY29wZShmdW5jdGlvbiAoKSB1c2UgKCRjYWxsYWJsZSwgJGV2YWx1YXRlZCwgJG5vZGVXaXRoU3BhbiwgJHJ1bikgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT52ZXJpZnlBcmd1bWVudHMoXGNvdW50KCRldmFsdWF0ZWQtPmdldFBvc2l0aW9uYWwoKSksICRldmFsdWF0ZWQtPmdldE5hbWVkKCksICRjYWxsYWJsZS0+Z2V0RGVjbGFyYXRpb24oKS0+Z2V0QXJndW1lbnRzKCksICRub2RlV2l0aFNwYW4pOwoKICAgICAgICAgICAgICAgICAgICAkZGVjbGFyZWRBcmd1bWVudHMgPSAkY2FsbGFibGUtPmdldERlY2xhcmF0aW9uKCktPmdldEFyZ3VtZW50cygpLT5nZXRBcmd1bWVudHMoKTsKICAgICAgICAgICAgICAgICAgICAkbWluTGVuZ3RoID0gbWluKFxjb3VudCgkZXZhbHVhdGVkLT5nZXRQb3NpdGlvbmFsKCkpLCBcY291bnQoJGRlY2xhcmVkQXJndW1lbnRzKSk7CgogICAgICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRtaW5MZW5ndGg7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVudmlyb25tZW50LT5zZXRMb2NhbFZhcmlhYmxlKCRkZWNsYXJlZEFyZ3VtZW50c1skaV0tPmdldE5hbWUoKSwgJGV2YWx1YXRlZC0+Z2V0UG9zaXRpb25hbCgpWyRpXSwgJGV2YWx1YXRlZC0+Z2V0UG9zaXRpb25hbE5vZGVzKClbJGldKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRuYW1lZCA9ICRldmFsdWF0ZWQtPmdldE5hbWVkKCk7CiAgICAgICAgICAgICAgICAgICAgJG5hbWVkTm9kZXMgPSAkZXZhbHVhdGVkLT5nZXROYW1lZE5vZGVzKCk7CgogICAgICAgICAgICAgICAgICAgIGZvciAoJGkgPSBcY291bnQoJGV2YWx1YXRlZC0+Z2V0UG9zaXRpb25hbCgpKTsgJGkgPCBcY291bnQoJGRlY2xhcmVkQXJndW1lbnRzKTsgJGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAkYXJndW1lbnQgPSAkZGVjbGFyZWRBcmd1bWVudHNbJGldOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRuYW1lZFskYXJndW1lbnQtPmdldE5hbWUoKV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAkbmFtZWRbJGFyZ3VtZW50LT5nZXROYW1lKCldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJG5hbWVkWyRhcmd1bWVudC0+Z2V0TmFtZSgpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZUZvclNwYW4gPSAkbmFtZWROb2Rlc1skYXJndW1lbnQtPmdldE5hbWUoKV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoJGFyZ3VtZW50LT5nZXREZWZhdWx0VmFsdWUoKSAhPT0gbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+d2l0aG91dFNsYXNoKCRhcmd1bWVudC0+Z2V0RGVmYXVsdFZhbHVlKCktPmFjY2VwdCgkdGhpcyksICR0aGlzLT5leHByZXNzaW9uTm9kZSgkYXJndW1lbnQtPmdldERlZmF1bHRWYWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZUZvclNwYW4gPSAkdGhpcy0+ZXhwcmVzc2lvbk5vZGUoJGFyZ3VtZW50LT5nZXREZWZhdWx0VmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5lbnZpcm9ubWVudC0+c2V0TG9jYWxWYXJpYWJsZSgkYXJndW1lbnQtPmdldE5hbWUoKSwgJHZhbHVlLCAkbm9kZUZvclNwYW4pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50TGlzdCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgJHJlc3RBcmd1bWVudCA9ICRjYWxsYWJsZS0+Z2V0RGVjbGFyYXRpb24oKS0+Z2V0QXJndW1lbnRzKCktPmdldFJlc3RBcmd1bWVudCgpOwogICAgICAgICAgICAgICAgICAgIGlmICgkcmVzdEFyZ3VtZW50ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN0ID0gYXJyYXlfdmFsdWVzKGFycmF5X3NsaWNlKCRldmFsdWF0ZWQtPmdldFBvc2l0aW9uYWwoKSwgXGNvdW50KCRkZWNsYXJlZEFyZ3VtZW50cykpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50TGlzdCA9IG5ldyBTYXNzQXJndW1lbnRMaXN0KCRyZXN0LCAkbmFtZWQsICRldmFsdWF0ZWQtPmdldFNlcGFyYXRvcigpID09PSBMaXN0U2VwYXJhdG9yOjpVTkRFQ0lERUQgPyBMaXN0U2VwYXJhdG9yOjpDT01NQSA6ICRldmFsdWF0ZWQtPmdldFNlcGFyYXRvcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVudmlyb25tZW50LT5zZXRMb2NhbFZhcmlhYmxlKCRyZXN0QXJndW1lbnQsICRhcmd1bWVudExpc3QsICRub2RlV2l0aFNwYW4pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRydW4oKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhcmd1bWVudExpc3QgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgkbmFtZWQgPT09IFtdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoJGFyZ3VtZW50TGlzdC0+d2VyZUtleXdvcmRBY2Nlc3NlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHVua25vd25OYW1lcyA9IGFycmF5X2tleXMoJG5hbWVkKTsKICAgICAgICAgICAgICAgICAgICAkbGFzdE5hbWUgPSBhcnJheV9wb3AoJHVua25vd25OYW1lcyk7CiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAnTm8gYXJndW1lbnQlcyBuYW1lZCAkJXMlcy4nLAogICAgICAgICAgICAgICAgICAgICAgICAkdW5rbm93bk5hbWVzID8gJ3MnIDogJycsCiAgICAgICAgICAgICAgICAgICAgICAgICR1bmtub3duTmFtZXMgPyBpbXBsb2RlKCcsICQnLCAkdW5rbm93bk5hbWVzKSAuICcgb3IgJCcgOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3ROYW1lCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE11bHRpU3BhblNhc3NSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGVXaXRoU3Bhbi0+Z2V0U3BhbigpLAogICAgICAgICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbicsCiAgICAgICAgICAgICAgICAgICAgICAgIFsnZGVjbGFyYXRpb24nID0+ICRjYWxsYWJsZS0+Z2V0RGVjbGFyYXRpb24oKS0+Z2V0QXJndW1lbnRzKCktPmdldFNwYW5XaXRoTmFtZSgpXSwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0YWNrVHJhY2UoJG5vZGVXaXRoU3Bhbi0+Z2V0U3BhbigpKQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgICR0aGlzLT5jdXJyZW50Q2FsbGFibGUgPSAkb2xkQ2FsbGFibGU7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcnVuRnVuY3Rpb25DYWxsYWJsZShBcmd1bWVudEludm9jYXRpb24gJGFyZ3VtZW50cywgP1Nhc3NDYWxsYWJsZSAkY2FsbGFibGUsIEFzdE5vZGUgJG5vZGVXaXRoU3Bhbik6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCRjYWxsYWJsZSBpbnN0YW5jZW9mIEJ1aWx0SW5DYWxsYWJsZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhvdXRTbGFzaCgkdGhpcy0+cnVuQnVpbHRJbkNhbGxhYmxlKCRhcmd1bWVudHMsICRjYWxsYWJsZSwgJG5vZGVXaXRoU3BhbiksICRub2RlV2l0aFNwYW4pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjYWxsYWJsZSBpbnN0YW5jZW9mIFVzZXJEZWZpbmVkQ2FsbGFibGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5ydW5Vc2VyRGVmaW5lZENhbGxhYmxlKCRhcmd1bWVudHMsICRjYWxsYWJsZSwgJG5vZGVXaXRoU3BhbiwgZnVuY3Rpb24gKCkgdXNlICgkY2FsbGFibGUpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjYWxsYWJsZS0+Z2V0RGVjbGFyYXRpb24oKS0+Z2V0Q2hpbGRyZW4oKSBhcyAkc3RhdGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJHJldHVyblZhbHVlID0gJHN0YXRlbWVudC0+YWNjZXB0KCR0aGlzKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmV0dXJuVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oJ0Z1bmN0aW9uIGZpbmlzaGVkIHdpdGhvdXQgQHJldHVybi4nLCAkY2FsbGFibGUtPmdldERlY2xhcmF0aW9uKCktPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjYWxsYWJsZSBpbnN0YW5jZW9mIFBsYWluQ3NzQ2FsbGFibGUpIHsKICAgICAgICAgICAgaWYgKFxjb3VudCgkYXJndW1lbnRzLT5nZXROYW1lZCgpKSA+IDAgfHwgJGFyZ3VtZW50cy0+Z2V0S2V5d29yZFJlc3QoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigiUGxhaW4gQ1NTIGZ1bmN0aW9ucyBkb24ndCBzdXBwb3J0IGtleXdvcmQgYXJndW1lbnRzLiIsICRub2RlV2l0aFNwYW4tPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRidWZmZXIgPSAkY2FsbGFibGUtPmdldE5hbWUoKSAuICcoJzsKCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkZmlyc3QgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRhcmd1bWVudHMtPmdldFBvc2l0aW9uYWwoKSBhcyAkYXJndW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpcnN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaXJzdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJywgJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPmV2YWx1YXRlVG9Dc3MoJGFyZ3VtZW50KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcmVzdEFyZyA9ICRhcmd1bWVudHMtPmdldFJlc3QoKTsKICAgICAgICAgICAgICAgIGlmICgkcmVzdEFyZyAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICRyZXN0ID0gJHJlc3RBcmctPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkZmlyc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAnLCAnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2VyaWFsaXplKCRyZXN0LCAkcmVzdEFyZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKFNhc3NSdW50aW1lRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICBpZiAoIXN0cl9lbmRzX3dpdGgoJGUtPmdldE9yaWdpbmFsTWVzc2FnZSgpLCAiaXNuJ3QgYSB2YWxpZCBDU1MgdmFsdWUuIikpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgJGUtPmdldE9yaWdpbmFsTWVzc2FnZSgpLAogICAgICAgICAgICAgICAgICAgICRlLT5nZXRTcGFuKCksCiAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJywKICAgICAgICAgICAgICAgICAgICBbJ3Vua25vd24gZnVuY3Rpb24gdHJlYXRlZCBhcyBwbGFpbiBDU1MnID0+ICRub2RlV2l0aFNwYW4tPmdldFNwYW4oKV0sCiAgICAgICAgICAgICAgICAgICAgJGUtPmdldFNhc3NUcmFjZSgpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYnVmZmVyIC49ICcpJzsKCiAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc1N0cmluZygkYnVmZmVyLCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5rbm93biBjYWxsYWJsZSB0eXBlICcgLiAoXGlzX29iamVjdCgkY2FsbGFibGUpID8gZ2V0X2NsYXNzKCRjYWxsYWJsZSkgOiBnZXR0eXBlKCRjYWxsYWJsZSkgKSAuICcuJyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBydW5CdWlsdEluQ2FsbGFibGUoQXJndW1lbnRJbnZvY2F0aW9uICRhcmd1bWVudHMsIEJ1aWx0SW5DYWxsYWJsZSAkY2FsbGFibGUsIEFzdE5vZGUgJG5vZGVXaXRoU3Bhbik6IFZhbHVlCiAgICB7CiAgICAgICAgJGV2YWx1YXRlZCA9ICR0aGlzLT5ldmFsdWF0ZUFyZ3VtZW50cygkYXJndW1lbnRzKTsKICAgICAgICAkb2xkQ2FsbGFibGVOb2RlID0gJHRoaXMtPmNhbGxhYmxlTm9kZTsKICAgICAgICAkdGhpcy0+Y2FsbGFibGVOb2RlID0gJG5vZGVXaXRoU3BhbjsKCiAgICAgICAgLyoqIEB2YXIgQXJndW1lbnREZWNsYXJhdGlvbiAkb3ZlcmxvYWQgKi8KICAgICAgICBbJG92ZXJsb2FkLCAkY2FsbGJhY2tdID0gJGNhbGxhYmxlLT5jYWxsYmFja0ZvcihcY291bnQoJGV2YWx1YXRlZC0+Z2V0UG9zaXRpb25hbCgpKSwgJGV2YWx1YXRlZC0+Z2V0TmFtZWQoKSk7CgogICAgICAgICR0aGlzLT5hZGRFeGNlcHRpb25TcGFuKCRub2RlV2l0aFNwYW4sIGZ1bmN0aW9uICgpIHVzZSAoJG92ZXJsb2FkLCAkZXZhbHVhdGVkKSB7CiAgICAgICAgICAgICRvdmVybG9hZC0+dmVyaWZ5KFxjb3VudCgkZXZhbHVhdGVkLT5nZXRQb3NpdGlvbmFsKCkpLCAkZXZhbHVhdGVkLT5nZXROYW1lZCgpKTsKICAgICAgICB9KTsKCiAgICAgICAgJGRlY2xhcmVkQXJndW1lbnRzID0gJG92ZXJsb2FkLT5nZXRBcmd1bWVudHMoKTsKCiAgICAgICAgJHBvc2l0aW9uYWwgPSAkZXZhbHVhdGVkLT5nZXRQb3NpdGlvbmFsKCk7CiAgICAgICAgJG5hbWVkID0gJGV2YWx1YXRlZC0+Z2V0TmFtZWQoKTsKCiAgICAgICAgZm9yICgkaSA9IFxjb3VudCgkcG9zaXRpb25hbCk7ICRpIDwgXGNvdW50KCRkZWNsYXJlZEFyZ3VtZW50cyk7ICRpKyspIHsKICAgICAgICAgICAgJGFyZ3VtZW50ID0gJGRlY2xhcmVkQXJndW1lbnRzWyRpXTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkbmFtZWRbJGFyZ3VtZW50LT5nZXROYW1lKCldKSkgewogICAgICAgICAgICAgICAgJHBvc2l0aW9uYWxbXSA9ICRuYW1lZFskYXJndW1lbnQtPmdldE5hbWUoKV07CiAgICAgICAgICAgICAgICB1bnNldCgkbmFtZWRbJGFyZ3VtZW50LT5nZXROYW1lKCldKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGFzc2VydCgkYXJndW1lbnQtPmdldERlZmF1bHRWYWx1ZSgpICE9PSBudWxsKTsKICAgICAgICAgICAgICAgICRwb3NpdGlvbmFsW10gPSAkdGhpcy0+d2l0aG91dFNsYXNoKCRhcmd1bWVudC0+Z2V0RGVmYXVsdFZhbHVlKCktPmFjY2VwdCgkdGhpcyksICRhcmd1bWVudC0+Z2V0RGVmYXVsdFZhbHVlKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkYXJndW1lbnRMaXN0ID0gbnVsbDsKICAgICAgICBpZiAoJG92ZXJsb2FkLT5nZXRSZXN0QXJndW1lbnQoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAkcmVzdCA9IGFycmF5X3ZhbHVlcyhhcnJheV9zcGxpY2UoJHBvc2l0aW9uYWwsIFxjb3VudCgkZGVjbGFyZWRBcmd1bWVudHMpKSk7CiAgICAgICAgICAgIFxhc3NlcnQoYXJyYXlfaXNfbGlzdCgkcG9zaXRpb25hbCkpOwogICAgICAgICAgICAkYXJndW1lbnRMaXN0ID0gbmV3IFNhc3NBcmd1bWVudExpc3QoJHJlc3QsICRuYW1lZCwgJGV2YWx1YXRlZC0+Z2V0U2VwYXJhdG9yKCkgPT09IExpc3RTZXBhcmF0b3I6OlVOREVDSURFRCA/IExpc3RTZXBhcmF0b3I6OkNPTU1BIDogJGV2YWx1YXRlZC0+Z2V0U2VwYXJhdG9yKCkpOwogICAgICAgICAgICAkcG9zaXRpb25hbFtdID0gJGFyZ3VtZW50TGlzdDsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+YWRkRXhjZXB0aW9uU3Bhbigkbm9kZVdpdGhTcGFuLCBmdW5jdGlvbiAoKSB1c2UgKCRjYWxsYmFjaywgJHBvc2l0aW9uYWwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY2FsbGJhY2soJHBvc2l0aW9uYWwpOwogICAgICAgICAgICB9KTsKICAgICAgICB9IGNhdGNoIChTYXNzRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpLCAkbm9kZVdpdGhTcGFuLT5nZXRTcGFuKCksICRlKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jYWxsYWJsZU5vZGUgPSAkb2xkQ2FsbGFibGVOb2RlOwoKICAgICAgICBpZiAoJGFyZ3VtZW50TGlzdCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CiAgICAgICAgaWYgKCRuYW1lZCA9PT0gW10pIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQogICAgICAgIGlmICgkYXJndW1lbnRMaXN0LT53ZXJlS2V5d29yZEFjY2Vzc2VkKCkpIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICAkdW5rbm93bk5hbWVzID0gYXJyYXlfa2V5cygkbmFtZWQpOwogICAgICAgICRsYXN0TmFtZSA9IGFycmF5X3BvcCgkdW5rbm93bk5hbWVzKTsKICAgICAgICAkbWVzc2FnZSA9IHNwcmludGYoCiAgICAgICAgICAgICdObyBhcmd1bWVudCVzIG5hbWVkICQlcyVzLicsCiAgICAgICAgICAgICR1bmtub3duTmFtZXMgPyAncycgOiAnJywKICAgICAgICAgICAgJHVua25vd25OYW1lcyA/IGltcGxvZGUoJywgJCcsICR1bmtub3duTmFtZXMpIC4gJyBvciAkJyA6ICcnLAogICAgICAgICAgICAkbGFzdE5hbWUKICAgICAgICApOwoKICAgICAgICB0aHJvdyBuZXcgTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgICRtZXNzYWdlLAogICAgICAgICAgICAkbm9kZVdpdGhTcGFuLT5nZXRTcGFuKCksCiAgICAgICAgICAgICdpbnZvY2F0aW9uJywKICAgICAgICAgICAgWydkZWNsYXJhdGlvbicgPT4gJG92ZXJsb2FkLT5nZXRTcGFuV2l0aE5hbWUoKV0sCiAgICAgICAgICAgICR0aGlzLT5zdGFja1RyYWNlKCRub2RlV2l0aFNwYW4tPmdldFNwYW4oKSkKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZXZhbHVhdGVBcmd1bWVudHMoQXJndW1lbnRJbnZvY2F0aW9uICRhcmd1bWVudHMpOiBBcmd1bWVudFJlc3VsdHMKICAgIHsKICAgICAgICAkcG9zaXRpb25hbCA9IFtdOwogICAgICAgICRwb3NpdGlvbmFsTm9kZXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGFyZ3VtZW50cy0+Z2V0UG9zaXRpb25hbCgpIGFzICRleHByZXNzaW9uKSB7CiAgICAgICAgICAgICRub2RlRm9yU3BhbiA9ICR0aGlzLT5leHByZXNzaW9uTm9kZSgkZXhwcmVzc2lvbik7CiAgICAgICAgICAgICRwb3NpdGlvbmFsW10gPSAkdGhpcy0+d2l0aG91dFNsYXNoKCRleHByZXNzaW9uLT5hY2NlcHQoJHRoaXMpLCAkbm9kZUZvclNwYW4pOwogICAgICAgICAgICAkcG9zaXRpb25hbE5vZGVzW10gPSAkbm9kZUZvclNwYW47CiAgICAgICAgfQoKICAgICAgICAkbmFtZWQgPSBbXTsKICAgICAgICAkbmFtZWROb2RlcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkYXJndW1lbnRzLT5nZXROYW1lZCgpIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICRub2RlRm9yU3BhbiA9ICR0aGlzLT5leHByZXNzaW9uTm9kZSgkdmFsdWUpOwogICAgICAgICAgICAkbmFtZWRbJGtleV0gPSAkdGhpcy0+d2l0aG91dFNsYXNoKCR2YWx1ZS0+YWNjZXB0KCR0aGlzKSwgJG5vZGVGb3JTcGFuKTsKICAgICAgICAgICAgJG5hbWVkTm9kZXNbJGtleV0gPSAkbm9kZUZvclNwYW47CiAgICAgICAgfQoKICAgICAgICAkcmVzdEFyZ3MgPSAkYXJndW1lbnRzLT5nZXRSZXN0KCk7CiAgICAgICAgaWYgKCRyZXN0QXJncyA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbmV3IEFyZ3VtZW50UmVzdWx0cygkcG9zaXRpb25hbCwgJHBvc2l0aW9uYWxOb2RlcywgJG5hbWVkLCAkbmFtZWROb2RlcywgTGlzdFNlcGFyYXRvcjo6VU5ERUNJREVEKTsKICAgICAgICB9CgogICAgICAgICRyZXN0ID0gJHJlc3RBcmdzLT5hY2NlcHQoJHRoaXMpOwogICAgICAgICRyZXN0Tm9kZUZvclNwYW4gPSAkdGhpcy0+ZXhwcmVzc2lvbk5vZGUoJHJlc3RBcmdzKTsKICAgICAgICAkc2VwYXJhdG9yID0gTGlzdFNlcGFyYXRvcjo6VU5ERUNJREVEOwoKICAgICAgICBpZiAoJHJlc3QgaW5zdGFuY2VvZiBTYXNzTWFwKSB7CiAgICAgICAgICAgICR0aGlzLT5hZGRSZXN0TWFwKCRuYW1lZCwgJHJlc3QsICRyZXN0QXJncywgZm4oJHZhbHVlKSA9PiAkdmFsdWUpOwogICAgICAgICAgICBmb3JlYWNoICgkcmVzdC0+Z2V0Q29udGVudHMoKSBhcyAka2V5ID0+ICRfKSB7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGtleSBpbnN0YW5jZW9mIFNhc3NTdHJpbmcpOwogICAgICAgICAgICAgICAgJG5hbWVkTm9kZXNbJGtleS0+Z2V0VGV4dCgpXSA9ICRyZXN0Tm9kZUZvclNwYW47CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoJHJlc3QgaW5zdGFuY2VvZiBTYXNzTGlzdCkgewogICAgICAgICAgICBmb3JlYWNoICgkcmVzdC0+YXNMaXN0KCkgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkcG9zaXRpb25hbFtdID0gJHRoaXMtPndpdGhvdXRTbGFzaCgkdmFsdWUsICRyZXN0Tm9kZUZvclNwYW4pOwogICAgICAgICAgICAgICAgJHBvc2l0aW9uYWxOb2Rlc1tdID0gJHJlc3ROb2RlRm9yU3BhbjsKICAgICAgICAgICAgICAgICRzZXBhcmF0b3IgPSAkcmVzdC0+Z2V0U2VwYXJhdG9yKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcmVzdCBpbnN0YW5jZW9mIFNhc3NBcmd1bWVudExpc3QpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRyZXN0LT5nZXRLZXl3b3JkcygpIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgJG5hbWVkWyRrZXldID0gJHRoaXMtPndpdGhvdXRTbGFzaCgkdmFsdWUsICRyZXN0Tm9kZUZvclNwYW4pOwogICAgICAgICAgICAgICAgICAgICRuYW1lZE5vZGVzWyRrZXldID0gJHJlc3ROb2RlRm9yU3BhbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwb3NpdGlvbmFsW10gPSAkdGhpcy0+d2l0aG91dFNsYXNoKCRyZXN0LCAkcmVzdE5vZGVGb3JTcGFuKTsKICAgICAgICAgICAgJHBvc2l0aW9uYWxOb2Rlc1tdID0gJHJlc3ROb2RlRm9yU3BhbjsKICAgICAgICB9CgogICAgICAgICRrZXl3b3JkUmVzdEFyZ3MgPSAkYXJndW1lbnRzLT5nZXRLZXl3b3JkUmVzdCgpOwogICAgICAgIGlmICgka2V5d29yZFJlc3RBcmdzID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQXJndW1lbnRSZXN1bHRzKCRwb3NpdGlvbmFsLCAkcG9zaXRpb25hbE5vZGVzLCAkbmFtZWQsICRuYW1lZE5vZGVzLCAkc2VwYXJhdG9yKTsKICAgICAgICB9CgogICAgICAgICRrZXl3b3JkUmVzdCA9ICRrZXl3b3JkUmVzdEFyZ3MtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgJGtleXdvcmRSZXN0Tm9kZUZvclNwYW4gPSAkdGhpcy0+ZXhwcmVzc2lvbk5vZGUoJGtleXdvcmRSZXN0QXJncyk7CgogICAgICAgIGlmICgka2V5d29yZFJlc3QgaW5zdGFuY2VvZiBTYXNzTWFwKSB7CiAgICAgICAgICAgICR0aGlzLT5hZGRSZXN0TWFwKCRuYW1lZCwgJGtleXdvcmRSZXN0LCAka2V5d29yZFJlc3RBcmdzLCBmbigkdmFsdWUpID0+ICR2YWx1ZSk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRrZXl3b3JkUmVzdC0+Z2V0Q29udGVudHMoKSBhcyAka2V5ID0+ICRfKSB7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGtleSBpbnN0YW5jZW9mIFNhc3NTdHJpbmcpOwogICAgICAgICAgICAgICAgJG5hbWVkTm9kZXNbJGtleS0+Z2V0VGV4dCgpXSA9ICRrZXl3b3JkUmVzdE5vZGVGb3JTcGFuOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbmV3IEFyZ3VtZW50UmVzdWx0cygkcG9zaXRpb25hbCwgJHBvc2l0aW9uYWxOb2RlcywgJG5hbWVkLCAkbmFtZWROb2RlcywgJHNlcGFyYXRvcik7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCJWYXJpYWJsZSBrZXl3b3JkIGFyZ3VtZW50cyBtdXN0IGJlIGEgbWFwICh3YXMgJGtleXdvcmRSZXN0KS4iLCAka2V5d29yZFJlc3RBcmdzLT5nZXRTcGFuKCkpOwogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGVzIHRoZSBhcmd1bWVudHMgaW4gW2FyZ3VtZW50c10gb25seSBhcyBtdWNoIGFzIG5lY2Vzc2FyeSB0bwogICAgICogc2VwYXJhdGUgb3V0IHBvc2l0aW9uYWwgYW5kIG5hbWVkIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBSZXR1cm5zIHRoZSBhcmd1bWVudHMgYXMgZXhwcmVzc2lvbnMgc28gdGhhdCB0aGV5IGNhbiBiZSBsYXppbHkgZXZhbHVhdGVkCiAgICAgKiBmb3IgbWFjcm9zIHN1Y2ggYXMgYGlmKClgLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7bGlzdDxFeHByZXNzaW9uPiwgYXJyYXk8c3RyaW5nLCBFeHByZXNzaW9uPn0KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBldmFsdWF0ZU1hY3JvQXJndW1lbnRzKENhbGxhYmxlSW52b2NhdGlvbiAkaW52b2NhdGlvbik6IGFycmF5CiAgICB7CiAgICAgICAgJHJlc3RBcmdzID0gJGludm9jYXRpb24tPmdldEFyZ3VtZW50cygpLT5nZXRSZXN0KCk7CiAgICAgICAgaWYgKCRyZXN0QXJncyA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gWyRpbnZvY2F0aW9uLT5nZXRBcmd1bWVudHMoKS0+Z2V0UG9zaXRpb25hbCgpLCAkaW52b2NhdGlvbi0+Z2V0QXJndW1lbnRzKCktPmdldE5hbWVkKCldOwogICAgICAgIH0KCiAgICAgICAgJHBvc2l0aW9uYWwgPSAkaW52b2NhdGlvbi0+Z2V0QXJndW1lbnRzKCktPmdldFBvc2l0aW9uYWwoKTsKICAgICAgICAkbmFtZWQgPSAkaW52b2NhdGlvbi0+Z2V0QXJndW1lbnRzKCktPmdldE5hbWVkKCk7CiAgICAgICAgJHJlc3QgPSAkcmVzdEFyZ3MtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgJHJlc3ROb2RlRm9yU3BhbiA9ICR0aGlzLT5leHByZXNzaW9uTm9kZSgkcmVzdEFyZ3MpOwoKICAgICAgICBpZiAoJHJlc3QgaW5zdGFuY2VvZiBTYXNzTWFwKSB7CiAgICAgICAgICAgICR0aGlzLT5hZGRSZXN0TWFwKCRuYW1lZCwgJHJlc3QsICRyZXN0QXJncywgZnVuY3Rpb24gKCR2YWx1ZSkgdXNlICgkcmVzdEFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVmFsdWVFeHByZXNzaW9uKCR2YWx1ZSwgJHJlc3RBcmdzLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2VpZiAoJHJlc3QgaW5zdGFuY2VvZiBTYXNzTGlzdCkgewogICAgICAgICAgICBmb3JlYWNoICgkcmVzdC0+YXNMaXN0KCkgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkcG9zaXRpb25hbFtdID0gbmV3IFZhbHVlRXhwcmVzc2lvbigkdGhpcy0+d2l0aG91dFNsYXNoKCR2YWx1ZSwgJHJlc3ROb2RlRm9yU3BhbiksICRyZXN0QXJncy0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRyZXN0IGluc3RhbmNlb2YgU2Fzc0FyZ3VtZW50TGlzdCkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJlc3QtPmdldEtleXdvcmRzKCkgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAkbmFtZWRbJGtleV0gPSBuZXcgVmFsdWVFeHByZXNzaW9uKCR0aGlzLT53aXRob3V0U2xhc2goJHZhbHVlLCAkcmVzdE5vZGVGb3JTcGFuKSwgJHJlc3RBcmdzLT5nZXRTcGFuKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHBvc2l0aW9uYWxbXSA9IG5ldyBWYWx1ZUV4cHJlc3Npb24oJHRoaXMtPndpdGhvdXRTbGFzaCgkcmVzdCwgJHJlc3ROb2RlRm9yU3BhbiksICRyZXN0QXJncy0+Z2V0U3BhbigpKTsKICAgICAgICB9CgogICAgICAgICRrZXl3b3JkUmVzdEFyZ3MgPSAkaW52b2NhdGlvbi0+Z2V0QXJndW1lbnRzKCktPmdldEtleXdvcmRSZXN0KCk7CiAgICAgICAgaWYgKCRrZXl3b3JkUmVzdEFyZ3MgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIFskcG9zaXRpb25hbCwgJG5hbWVkXTsKICAgICAgICB9CgogICAgICAgICRrZXl3b3JkUmVzdCA9ICRrZXl3b3JkUmVzdEFyZ3MtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgJGtleXdvcmRSZXN0Tm9kZUZvclNwYW4gPSAkdGhpcy0+ZXhwcmVzc2lvbk5vZGUoJGtleXdvcmRSZXN0QXJncyk7CgogICAgICAgIGlmICgka2V5d29yZFJlc3QgaW5zdGFuY2VvZiBTYXNzTWFwKSB7CiAgICAgICAgICAgICR0aGlzLT5hZGRSZXN0TWFwKCRuYW1lZCwgJGtleXdvcmRSZXN0LCAka2V5d29yZFJlc3RBcmdzLCBmdW5jdGlvbiAoJHZhbHVlKSB1c2UgKCRrZXl3b3JkUmVzdEFyZ3MsICRrZXl3b3JkUmVzdE5vZGVGb3JTcGFuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFZhbHVlRXhwcmVzc2lvbigkdGhpcy0+d2l0aG91dFNsYXNoKCR2YWx1ZSwgJGtleXdvcmRSZXN0Tm9kZUZvclNwYW4pLCAka2V5d29yZFJlc3RBcmdzLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJldHVybiBbJHBvc2l0aW9uYWwsICRuYW1lZF07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyAkdGhpcy0+ZXhjZXB0aW9uKCJWYXJpYWJsZSBrZXl3b3JkIGFyZ3VtZW50cyBtdXN0IGJlIGEgbWFwICh3YXMgJGtleXdvcmRSZXN0KS4iLCAka2V5d29yZFJlc3RBcmdzLT5nZXRTcGFuKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyB0aGUgdmFsdWVzIGluICRtYXAgdG8gJHZhbHVlcy4KICAgICAqCiAgICAgKiBUaHJvd3MgYSB7QHNlZSBTYXNzUnVudGltZUV4Y2VwdGlvbn0gYXNzb2NpYXRlZCB3aXRoICRub2RlV2l0aFNwYW4ncyBzb3VyY2UKICAgICAqIHNwYW4gaWYgYW55ICRtYXAga2V5cyBhcmVuJ3Qgc3RyaW5ncy4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIFQ+ICAgJHZhbHVlcwogICAgICogQHBhcmFtIGNhbGxhYmxlKFZhbHVlKTogVCAkY29udmVydAogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjb252ZXJ0CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkUmVzdE1hcChhcnJheSAmJHZhbHVlcywgU2Fzc01hcCAkbWFwLCBBc3ROb2RlICRub2RlV2l0aFNwYW4sIGNhbGxhYmxlICRjb252ZXJ0KTogdm9pZAogICAgewogICAgICAgICRleHByZXNzaW9uTm9kZSA9ICR0aGlzLT5leHByZXNzaW9uTm9kZSgkbm9kZVdpdGhTcGFuKTsKCiAgICAgICAgZm9yZWFjaCAoJG1hcC0+Z2V0Q29udGVudHMoKSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICBpZiAoJGtleSBpbnN0YW5jZW9mIFNhc3NTdHJpbmcpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJGtleS0+Z2V0VGV4dCgpXSA9ICRjb252ZXJ0KCR0aGlzLT53aXRob3V0U2xhc2goJHZhbHVlLCAkZXhwcmVzc2lvbk5vZGUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5leGNlcHRpb24oIlZhcmlhYmxlIGtleXdvcmQgYXJndW1lbnQgbWFwIG11c3QgaGF2ZSBzdHJpbmcga2V5cy5cbiRrZXkgaXMgbm90IGEgc3RyaW5nIGluICRtYXAuIiwgJG5vZGVXaXRoU3Bhbi0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPiAkbmFtZWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NSdW50aW1lRXhjZXB0aW9uIGlmICRwb3NpdGlvbmFsIGFuZCAkbmFtZWQgYXJlbid0IHZhbGlkIHdoZW4gYXBwbGllZCB0byAkYXJndW1lbnRzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZlcmlmeUFyZ3VtZW50cyhpbnQgJHBvc2l0aW9uYWwsIGFycmF5ICRuYW1lZCwgQXJndW1lbnREZWNsYXJhdGlvbiAkYXJndW1lbnRzLCBBc3ROb2RlICRub2RlV2l0aFNwYW4pOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmFkZEV4Y2VwdGlvblNwYW4oJG5vZGVXaXRoU3BhbiwgZnVuY3Rpb24gKCkgdXNlICgkcG9zaXRpb25hbCwgJG5hbWVkLCAkYXJndW1lbnRzKSB7CiAgICAgICAgICAgICRhcmd1bWVudHMtPnZlcmlmeSgkcG9zaXRpb25hbCwgJG5hbWVkKTsKICAgICAgICB9KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTZWxlY3RvckV4cHJlc3Npb24oU2VsZWN0b3JFeHByZXNzaW9uICRub2RlKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnN0eWxlUnVsZUlnbm9yaW5nQXRSb290ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBTYXNzTnVsbDo6Y3JlYXRlKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0eWxlUnVsZUlnbm9yaW5nQXRSb290LT5nZXRPcmlnaW5hbFNlbGVjdG9yKCktPmFzU2Fzc0xpc3QoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTdHJpbmdFeHByZXNzaW9uKFN0cmluZ0V4cHJlc3Npb24gJG5vZGUpOiBWYWx1ZQogICAgewogICAgICAgIC8vIERvbid0IHVzZSBbcGVyZm9ybUludGVycG9sYXRpb25dIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIHRvIGdldCB0aGUgcmF3IHRleHQKICAgICAgICAvLyBmcm9tIHN0cmluZ3MsIHJhdGhlciB0aGFuIHRoZSBzZW1hbnRpYyB2YWx1ZS4KICAgICAgICAkb2xkSW5TdXBwb3J0c0RlY2xhcmF0aW9uID0gJHRoaXMtPmluU3VwcG9ydHNEZWNsYXJhdGlvbjsKICAgICAgICAkdGhpcy0+aW5TdXBwb3J0c0RlY2xhcmF0aW9uID0gZmFsc2U7CgogICAgICAgICRyZXN1bHQgPSBuZXcgU2Fzc1N0cmluZyhpbXBsb2RlKCcnLCBhcnJheV9tYXAoZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgICAgICAgICBpZiAoXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZXhwcmVzc2lvbiA9ICR2YWx1ZTsKICAgICAgICAgICAgJHJlc3VsdCA9ICRleHByZXNzaW9uLT5hY2NlcHQoJHRoaXMpOwoKICAgICAgICAgICAgaWYgKCRyZXN1bHQgaW5zdGFuY2VvZiBTYXNzU3RyaW5nKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdC0+Z2V0VGV4dCgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNlcmlhbGl6ZSgkcmVzdWx0LCAkZXhwcmVzc2lvbiwgZmFsc2UpOwogICAgICAgIH0sICRub2RlLT5nZXRUZXh0KCktPmdldENvbnRlbnRzKCkpKSwgJG5vZGUtPmhhc1F1b3RlcygpKTsKCiAgICAgICAgJHRoaXMtPmluU3VwcG9ydHNEZWNsYXJhdGlvbiA9ICRvbGRJblN1cHBvcnRzRGVjbGFyYXRpb247CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFN1cHBvcnRzRXhwcmVzc2lvbihTdXBwb3J0c0V4cHJlc3Npb24gJG5vZGUpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBuZXcgU2Fzc1N0cmluZygkdGhpcy0+dmlzaXRTdXBwb3J0c0NvbmRpdGlvbigkbm9kZS0+Z2V0Q29uZGl0aW9uKCkpLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zICRjYWxsYmFjayBmb3IgZWFjaCB2YWx1ZSBpbiAkbGlzdCB1bnRpbCBpdCByZXR1cm5zIGEge0BzZWUgVmFsdWV9LgogICAgICoKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIHJldHVybmVkIGJ5ICRjYWxsYmFjaywgb3IgYG51bGxgIGlmIGl0IG9ubHkgZXZlcgogICAgICogcmV0dXJuZWQgYG51bGxgLgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKgogICAgICogQHBhcmFtIFRbXSAgICAgICAgICAgICAgICAgJGxpc3QKICAgICAqIEBwYXJhbSBjYWxsYWJsZShUKTogP1ZhbHVlICRjYWxsYmFjawogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGhhbmRsZVJldHVybihhcnJheSAkbGlzdCwgY2FsbGFibGUgJGNhbGxiYWNrKTogP1ZhbHVlCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAkY2FsbGJhY2soJHZhbHVlKTsKCiAgICAgICAgICAgIGlmICgkcmVzdWx0ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zICRjYWxsYmFjayB3aXRoICRlbnZpcm9ubWVudCBhcyB0aGUgY3VycmVudCBlbnZpcm9ubWVudC4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBFbnZpcm9ubWVudCAgICRlbnZpcm9ubWVudAogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFQgJGNhbGxiYWNrCiAgICAgKgogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNhbGxiYWNrCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd2l0aEVudmlyb25tZW50KEVudmlyb25tZW50ICRlbnZpcm9ubWVudCwgY2FsbGFibGUgJGNhbGxiYWNrKQogICAgewogICAgICAgICRvbGRFbnZpcm9ubWVudCA9ICR0aGlzLT5lbnZpcm9ubWVudDsKICAgICAgICAkdGhpcy0+ZW52aXJvbm1lbnQgPSAkZW52aXJvbm1lbnQ7CiAgICAgICAgJHJlc3VsdCA9ICRjYWxsYmFjaygpOwogICAgICAgICR0aGlzLT5lbnZpcm9ubWVudCA9ICRvbGRFbnZpcm9ubWVudDsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIENzc1ZhbHVlPHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbnRlcnBvbGF0aW9uVG9WYWx1ZShJbnRlcnBvbGF0aW9uICRpbnRlcnBvbGF0aW9uLCBib29sICR3YXJuRm9yQ29sb3IgPSBmYWxzZSwgYm9vbCAkdHJpbSA9IGZhbHNlKTogQ3NzVmFsdWUKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnBlcmZvcm1JbnRlcnBvbGF0aW9uKCRpbnRlcnBvbGF0aW9uLCAkd2FybkZvckNvbG9yKTsKCiAgICAgICAgcmV0dXJuIG5ldyBDc3NWYWx1ZSgkdHJpbSA/IFN0cmluZ1V0aWw6OnRyaW1Bc2NpaSgkcmVzdWx0LCB0cnVlKSA6ICRyZXN1bHQsICRpbnRlcnBvbGF0aW9uLT5nZXRTcGFuKCkpOwogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGVzICRpbnRlcnBvbGF0aW9uLgogICAgICoKICAgICAqIElmICR3YXJuRm9yQ29sb3IgaXMgYHRydWVgLCB0aGlzIHdpbGwgZW1pdCBhIHdhcm5pbmcgZm9yIGFueSBuYW1lZCBjb2xvcgogICAgICogdmFsdWVzIHBhc3NlZCBpbnRvIHRoZSBpbnRlcnBvbGF0aW9uLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBlcmZvcm1JbnRlcnBvbGF0aW9uKEludGVycG9sYXRpb24gJGludGVycG9sYXRpb24sIGJvb2wgJHdhcm5Gb3JDb2xvciA9IGZhbHNlKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHR1cGxlID0gJHRoaXMtPnBlcmZvcm1JbnRlcnBvbGF0aW9uSGVscGVyKCRpbnRlcnBvbGF0aW9uLCBmYWxzZSwgJHdhcm5Gb3JDb2xvcik7CgogICAgICAgIHJldHVybiAkdHVwbGVbMF07CiAgICB9CgogICAgLyoqCiAgICAgKiBMaWtlIHtAc2VlIHBlcmZvcm1JbnRlcnBvbGF0aW9ufSwgYnV0IGFsc28gcmV0dXJucyBhIHtAc2VlIEludGVycG9sYXRpb25NYXB9IHRoYXQKICAgICAqIGNhbiBtYXAgc3BhbnMgZnJvbSB0aGUgcmVzdWx0aW5nIHN0cmluZyBiYWNrIHRvIHRoZSBvcmlnaW5hbAogICAgICogJGludGVycG9sYXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXtzdHJpbmcsIEludGVycG9sYXRpb25NYXB9CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcGVyZm9ybUludGVycG9sYXRpb25XaXRoTWFwKEludGVycG9sYXRpb24gJGludGVycG9sYXRpb24sIGJvb2wgJHdhcm5Gb3JDb2xvciA9IGZhbHNlKTogYXJyYXkKICAgIHsKICAgICAgICAkdHVwbGUgPSAkdGhpcy0+cGVyZm9ybUludGVycG9sYXRpb25IZWxwZXIoJGludGVycG9sYXRpb24sIHRydWUsICR3YXJuRm9yQ29sb3IpOwogICAgICAgIFxhc3NlcnQoJHR1cGxlWzFdICE9PSBudWxsKTsKCiAgICAgICAgcmV0dXJuICR0dXBsZTsKICAgIH0KCiAgICAvKioKICAgICAqIEEgaGVscGVyIHRoYXQgaW1wbGVtZW50cyB0aGUgY29yZSBsb2dpYyBvZiBib3RoIHtAc2VlIHBlcmZvcm1JbnRlcnBvbGF0aW9ufQogICAgICogYW5kIHtAc2VlIHBlcmZvcm1JbnRlcnBvbGF0aW9uV2l0aE1hcH0uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXtzdHJpbmcsIEludGVycG9sYXRpb25NYXB8bnVsbH0KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwZXJmb3JtSW50ZXJwb2xhdGlvbkhlbHBlcihJbnRlcnBvbGF0aW9uICRpbnRlcnBvbGF0aW9uLCBib29sICRzb3VyY2VNYXAsIGJvb2wgJHdhcm5Gb3JDb2xvciA9IGZhbHNlKTogYXJyYXkKICAgIHsKICAgICAgICAkdGFyZ2V0TG9jYXRpb25zID0gJHNvdXJjZU1hcCA/IFtdIDogbnVsbDsKCiAgICAgICAgJG9sZEluU3VwcG9ydHNEZWNsYXJhdGlvbiA9ICR0aGlzLT5pblN1cHBvcnRzRGVjbGFyYXRpb247CiAgICAgICAgJHRoaXMtPmluU3VwcG9ydHNEZWNsYXJhdGlvbiA9IGZhbHNlOwoKICAgICAgICAkYnVmZmVyID0gJyc7CiAgICAgICAgJGZpcnN0ID0gdHJ1ZTsKCiAgICAgICAgZm9yZWFjaCAoJGludGVycG9sYXRpb24tPmdldENvbnRlbnRzKCkgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICghJGZpcnN0ICYmICR0YXJnZXRMb2NhdGlvbnMgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICR0YXJnZXRMb2NhdGlvbnNbXSA9IG5ldyBTaW1wbGVTb3VyY2VMb2NhdGlvbihcc3RybGVuKCRidWZmZXIpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGZpcnN0ID0gZmFsc2U7CgogICAgICAgICAgICBpZiAoXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICR2YWx1ZTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZXhwcmVzc2lvbiA9ICR2YWx1ZTsKICAgICAgICAgICAgJHJlc3VsdCA9ICRleHByZXNzaW9uLT5hY2NlcHQoJHRoaXMpOwoKICAgICAgICAgICAgaWYgKCR3YXJuRm9yQ29sb3IgJiYgJHJlc3VsdCBpbnN0YW5jZW9mIFNhc3NDb2xvciAmJiBudWxsICE9PSAkY29sb3JOYW1lID0gQ29sb3JzOjpSR0JhVG9Db2xvck5hbWUoJHJlc3VsdC0+Z2V0UmVkKCksICRyZXN1bHQtPmdldEdyZWVuKCksICRyZXN1bHQtPmdldEJsdWUoKSwgJHJlc3VsdC0+Z2V0QWxwaGEoKSkpIHsKICAgICAgICAgICAgICAgICRhbHRlcm5hdGl2ZSA9IG5ldyBCaW5hcnlPcGVyYXRpb25FeHByZXNzaW9uKAogICAgICAgICAgICAgICAgICAgIEJpbmFyeU9wZXJhdG9yOjpQTFVTLAogICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdFeHByZXNzaW9uKG5ldyBJbnRlcnBvbGF0aW9uKFsnJ10sICRpbnRlcnBvbGF0aW9uLT5nZXRTcGFuKCkpLCB0cnVlKSwKICAgICAgICAgICAgICAgICAgICAkZXhwcmVzc2lvbgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICR0aGlzLT53YXJuKCJZb3UgcHJvYmFibHkgZG9uJ3QgbWVhbiB0byB1c2UgdGhlIGNvbG9yIHZhbHVlICRjb2xvck5hbWUgaW4gaW50ZXJwb2xhdGlvbiBoZXJlLlxuSXQgbWF5IGVuZCB1cCByZXByZXNlbnRlZCBhcyAkcmVzdWx0LCB3aGljaCB3aWxsIGxpa2VseSBwcm9kdWNlIGludmFsaWQgQ1NTLlxuQWx3YXlzIHF1b3RlIGNvbG9yIG5hbWVzIHdoZW4gdXNpbmcgdGhlbSBhcyBzdHJpbmdzIG9yIG1hcCBrZXlzIChmb3IgZXhhbXBsZSwgXCIkY29sb3JOYW1lXCIpLlxuSWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSB0aGUgY29sb3IgdmFsdWUgaGVyZSwgdXNlICckYWx0ZXJuYXRpdmUnLiIsICRleHByZXNzaW9uLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5zZXJpYWxpemUoJHJlc3VsdCwgJGV4cHJlc3Npb24sIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pblN1cHBvcnRzRGVjbGFyYXRpb24gPSAkb2xkSW5TdXBwb3J0c0RlY2xhcmF0aW9uOwoKICAgICAgICByZXR1cm4gWyRidWZmZXIsICR0YXJnZXRMb2NhdGlvbnMgPT09IG51bGwgPyBudWxsIDogbmV3IEludGVycG9sYXRpb25NYXAoJGludGVycG9sYXRpb24sICR0YXJnZXRMb2NhdGlvbnMpXTsKICAgIH0KCiAgICAvKioKICAgICAqIEV2YWx1YXRlcyAkZXhwcmVzc2lvbiBhbmQgY2FsbHMgYHRvQ3NzU3RyaW5nKClgIGFuZCB3cmFwcyBhCiAgICAgKiB7QHNlZSBTYXNzU2NyaXB0RXhjZXB0aW9ufSB0byBhc3NvY2lhdGUgaXQgd2l0aCBpdHMgc3Bhbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBldmFsdWF0ZVRvQ3NzKEV4cHJlc3Npb24gJGV4cHJlc3Npb24sIGJvb2wgJHF1b3RlID0gdHJ1ZSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2VyaWFsaXplKCRleHByZXNzaW9uLT5hY2NlcHQoJHRoaXMpLCAkZXhwcmVzc2lvbiwgJHF1b3RlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGxzIGB2YWx1ZS0+dG9Dc3NTdHJpbmcoKWAgYW5kIHdyYXBzIGEge0BzZWUgU2Fzc1NjcmlwdEV4Y2VwdGlvbn0gdG8gYXNzb2NpYXRlCiAgICAgKiBpdCB3aXRoICRub2RlV2l0aFNwYW4ncyBzb3VyY2Ugc3Bhbi4KICAgICAqCiAgICAgKiBUaGlzIHRha2VzIGFuIHtAc2VlIEFzdE5vZGV9IHJhdGhlciB0aGFuIGEge0BzZWUgRmlsZVNwYW59IHNvIGl0IGNhbiBhdm9pZCBjYWxsaW5nCiAgICAgKiB7QHNlZSBBc3ROb2RlOjpnZXRTcGFufSBpZiB0aGUgc3BhbiBpc24ndCByZXF1aXJlZCwgc2luY2Ugc29tZSBub2RlcyBuZWVkIHRvIGRvCiAgICAgKiByZWFsIHdvcmsgdG8gbWFudWZhY3R1cmUgYSBzb3VyY2Ugc3Bhbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXJpYWxpemUoVmFsdWUgJHZhbHVlLCBBc3ROb2RlICRub2RlV2l0aFNwYW4sIGJvb2wgJHF1b3RlID0gdHJ1ZSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRkRXhjZXB0aW9uU3Bhbigkbm9kZVdpdGhTcGFuLCBmdW5jdGlvbiAoKSB1c2UgKCR2YWx1ZSwgJHF1b3RlKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFsdWUtPnRvQ3NzU3RyaW5nKCRxdW90ZSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zICRjYWxsYmFjayB3aXRoICRydWxlIGFzIHRoZSBjdXJyZW50IHN0eWxlIHJ1bGUuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gTW9kaWZpYWJsZUNzc1N0eWxlUnVsZSAkcnVsZQogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFQgICAgICAgICAgJGNhbGxiYWNrCiAgICAgKgogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNhbGxiYWNrCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd2l0aFN0eWxlUnVsZShNb2RpZmlhYmxlQ3NzU3R5bGVSdWxlICRydWxlLCBjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgJG9sZFJ1bGUgPSAkdGhpcy0+c3R5bGVSdWxlSWdub3JpbmdBdFJvb3Q7CiAgICAgICAgJHRoaXMtPnN0eWxlUnVsZUlnbm9yaW5nQXRSb290ID0gJHJ1bGU7CiAgICAgICAgJHJlc3VsdCA9ICRjYWxsYmFjaygpOwogICAgICAgICR0aGlzLT5zdHlsZVJ1bGVJZ25vcmluZ0F0Um9vdCA9ICRvbGRSdWxlOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJ1bnMgJGNhbGxiYWNrIHdpdGggJHF1ZXJpZXMgYXMgdGhlIGN1cnJlbnQgbWVkaWEgcXVlcmllcy4KICAgICAqCiAgICAgKiBUaGlzIGFsc28gc2V0cyAkc291cmNlcyBhcyB0aGUgY3VycmVudCBzZXQgb2YgbWVkaWEgcXVlcmllcyB0aGF0IHdlcmUKICAgICAqIG1lcmdlZCB0b2dldGhlciB0byBjcmVhdGUgJHF1ZXJpZXMuIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hlbiBpdCdzCiAgICAgKiBzYWZlIHRvIGJ1YmJsZSBvbmUgcXVlcnkgdGhyb3VnaCBhbm90aGVyLgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8Q3NzTWVkaWFRdWVyeT58bnVsbCAkcXVlcmllcwogICAgICogQHBhcmFtIENzc01lZGlhUXVlcnlbXXxudWxsICAgICAkc291cmNlcwogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFQgICAgICAgICAgICAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3aXRoTWVkaWFRdWVyaWVzKD9hcnJheSAkcXVlcmllcywgP2FycmF5ICRzb3VyY2VzLCBjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgJG9sZE1lZGlhUXVlcmllcyA9ICR0aGlzLT5tZWRpYVF1ZXJpZXM7CiAgICAgICAgJG9sZFNvdXJjZXMgPSAkdGhpcy0+bWVkaWFRdWVyeVNvdXJjZXM7CiAgICAgICAgJHRoaXMtPm1lZGlhUXVlcmllcyA9ICRxdWVyaWVzOwogICAgICAgICR0aGlzLT5tZWRpYVF1ZXJ5U291cmNlcyA9ICRzb3VyY2VzOwogICAgICAgICRyZXN1bHQgPSAkY2FsbGJhY2soKTsKICAgICAgICAkdGhpcy0+bWVkaWFRdWVyaWVzID0gJG9sZE1lZGlhUXVlcmllczsKICAgICAgICAkdGhpcy0+bWVkaWFRdWVyeVNvdXJjZXMgPSAkb2xkU291cmNlczsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB7QHNlZSBBc3ROb2RlfSB3aG9zZSBzcGFuIHNob3VsZCBiZSB1c2VkIGZvciAkZXhwcmVzc2lvbi4KICAgICAqCiAgICAgKiBJZiAkZXhwcmVzc2lvbiBpcyBhIHZhcmlhYmxlIHJlZmVyZW5jZSwge0BzZWUgQXN0Tm9kZX0ncyBzcGFuIHdpbGwgYmUgdGhlIHNwYW4KICAgICAqIHdoZXJlIHRoYXQgdmFyaWFibGUgd2FzIG9yaWdpbmFsbHkgZGVjbGFyZWQuIE90aGVyd2lzZSwgdGhpcyB3aWxsIGp1c3QKICAgICAqIHJldHVybiAkZXhwcmVzc2lvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBleHByZXNzaW9uTm9kZShBc3ROb2RlICRleHByZXNzaW9uKTogQXN0Tm9kZQogICAgewogICAgICAgIGlmICgkZXhwcmVzc2lvbiBpbnN0YW5jZW9mIFZhcmlhYmxlRXhwcmVzc2lvbikgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmFkZEV4Y2VwdGlvblNwYW4oJGV4cHJlc3Npb24sIGZ1bmN0aW9uICgpIHVzZSAoJGV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZW52aXJvbm1lbnQtPmdldFZhcmlhYmxlTm9kZSgkZXhwcmVzc2lvbi0+Z2V0TmFtZSgpKSA/PyAkZXhwcmVzc2lvbjsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGV4cHJlc3Npb247CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzICRub2RlIGFzIGEgY2hpbGQgb2YgdGhlIGN1cnJlbnQgcGFyZW50LCB0aGVuIHJ1bnMgJGNhbGxiYWNrIHdpdGgKICAgICAqICRub2RlIGFzIHRoZSBjdXJyZW50IHBhcmVudC4KICAgICAqCiAgICAgKiBJZiAkdGhyb3VnaCBpcyBwYXNzZWQsICRub2RlIGlzIGFkZGVkIGFzIGEgY2hpbGQgb2YgdGhlIGZpcnN0IHBhcmVudCBmb3IKICAgICAqIHdoaWNoICR0aHJvdWdoIHJldHVybnMgYGZhbHNlYC4gVGhhdCBwYXJlbnQgaXMgY29waWVkIHVubGVzcyBpdCdzIHRoZQogICAgICogbGF0dGVybW9zdCBjaGlsZCBvZiBpdHMgcGFyZW50LgogICAgICoKICAgICAqIFJ1bnMgJGNhbGxiYWNrIGluIGEgbmV3IGVudmlyb25tZW50IHNjb3BlIHVubGVzcyAkc2NvcGVXaGVuIGlzIGZhbHNlLgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBTIG9mIE1vZGlmaWFibGVDc3NQYXJlbnROb2RlCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBTICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAgICAgICAgICAgICAgICAkY2FsbGJhY2sKICAgICAqIEBwYXJhbSBudWxsfGNhbGxhYmxlKENzc05vZGUpOiBib29sICR0aHJvdWdoCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGVXaGVuCiAgICAgKgogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNhbGxiYWNrCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkdGhyb3VnaAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdpdGhQYXJlbnQoTW9kaWZpYWJsZUNzc1BhcmVudE5vZGUgJG5vZGUsIGNhbGxhYmxlICRjYWxsYmFjaywgP2NhbGxhYmxlICR0aHJvdWdoID0gbnVsbCwgYm9vbCAkc2NvcGVXaGVuID0gdHJ1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJG5vZGUsICR0aHJvdWdoKTsKCiAgICAgICAgJG9sZFBhcmVudCA9ICR0aGlzLT5wYXJlbnQ7CiAgICAgICAgJHRoaXMtPnBhcmVudCA9ICRub2RlOwogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+ZW52aXJvbm1lbnQtPnNjb3BlKCRjYWxsYmFjaywgJHNjb3BlV2hlbik7CiAgICAgICAgJHRoaXMtPnBhcmVudCA9ICRvbGRQYXJlbnQ7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyAkbm9kZSBhcyBhIGNoaWxkIG9mIHRoZSBjdXJyZW50IHBhcmVudC4KICAgICAqCiAgICAgKiBJZiAkdGhyb3VnaCBpcyBwYXNzZWQsICRub2RlIGlzIGFkZGVkIGFzIGEgY2hpbGQgb2YgdGhlIGZpcnN0IHBhcmVudCBmb3IKICAgICAqIHdoaWNoICR0aHJvdWdoIHJldHVybnMgYGZhbHNlYCBpbnN0ZWFkLiBUaGF0IHBhcmVudCBpcyBjb3BpZWQgdW5sZXNzIGl0J3MgdGhlCiAgICAgKiBsYXR0ZXJtb3N0IGNoaWxkIG9mIGl0cyBwYXJlbnQuCiAgICAgKgogICAgICogQHBhcmFtIG51bGx8Y2FsbGFibGUoQ3NzTm9kZSk6IGJvb2wgJHRocm91Z2gKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkdGhyb3VnaAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZENoaWxkKE1vZGlmaWFibGVDc3NOb2RlICRub2RlLCA/Y2FsbGFibGUgJHRocm91Z2ggPSBudWxsKTogdm9pZAogICAgewogICAgICAgIC8vIEdvIHVwIHRocm91Z2ggcGFyZW50cyB0aGF0IG1hdGNoIFt0aHJvdWdoXS4KICAgICAgICAkcGFyZW50ID0gJHRoaXMtPmdldFBhcmVudCgpOwogICAgICAgIGlmICgkdGhyb3VnaCAhPT0gbnVsbCkgewogICAgICAgICAgICB3aGlsZSAoJHRocm91Z2goJHBhcmVudCkpIHsKICAgICAgICAgICAgICAgICRncmFuZFBhcmVudCA9ICRwYXJlbnQtPmdldFBhcmVudCgpOwoKICAgICAgICAgICAgICAgIGlmICgkZ3JhbmRQYXJlbnQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignJHRocm91Z2goKSBtdXN0IHJldHVybiBmYWxzZSBmb3IgYXQgbGVhc3Qgb25lIHBhcmVudCBvZiB0aGUgbm9kZS4nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcGFyZW50ID0gJGdyYW5kUGFyZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBJZiB0aGUgcGFyZW50IGhhcyBhICh2aXNpYmxlKSBmb2xsb3dpbmcgc2libGluZywgd2Ugc2hvdWxkbid0IGFkZCB0bwogICAgICAgIC8vIHRoZSBwYXJlbnQuIEluc3RlYWQsIHdlIHNob3VsZCBjcmVhdGUgYSBjb3B5IGFuZCBhZGQgaXQgYWZ0ZXIgdGhlCiAgICAgICAgLy8gaW50ZXJzdGl0aWFsIHNpYmxpbmcuCiAgICAgICAgaWYgKCRwYXJlbnQtPmhhc0ZvbGxvd2luZ1NpYmxpbmcoKSkgewogICAgICAgICAgICAkZ3JhbmRQYXJlbnQgPSAkcGFyZW50LT5nZXRQYXJlbnQoKTsKICAgICAgICAgICAgLy8gQSBub2RlIHdpdGggc2libGluZ3MgbXVzdCBoYXZlIGEgcGFyZW50CiAgICAgICAgICAgIGFzc2VydCgkZ3JhbmRQYXJlbnQgIT09IG51bGwpOwogICAgICAgICAgICAkbGFzdENoaWxkID0gTGlzdFV0aWw6Omxhc3QoJGdyYW5kUGFyZW50LT5nZXRDaGlsZHJlbigpKTsKICAgICAgICAgICAgaWYgKCRwYXJlbnQtPmVxdWFsc0lnbm9yaW5nQ2hpbGRyZW4oJGxhc3RDaGlsZCkpIHsKICAgICAgICAgICAgICAgIFxhc3NlcnQoJGxhc3RDaGlsZCBpbnN0YW5jZW9mIE1vZGlmaWFibGVDc3NQYXJlbnROb2RlKTsKICAgICAgICAgICAgICAgICRwYXJlbnQgPSAkbGFzdENoaWxkOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHBhcmVudCA9ICRwYXJlbnQtPmNvcHlXaXRob3V0Q2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICRncmFuZFBhcmVudC0+YWRkQ2hpbGQoJHBhcmVudCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRwYXJlbnQtPmFkZENoaWxkKCRub2RlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgYSBmcmFtZSB0byB0aGUgc3RhY2sgd2l0aCB0aGUgZ2l2ZW4gJG1lbWJlciBuYW1lLCBhbmQgJG5vZGVXaXRoU3BhbgogICAgICogYXMgdGhlIHNpdGUgb2YgdGhlIG5ldyBmcmFtZS4KICAgICAqCiAgICAgKiBSdW5zICRjYWxsYmFjayB3aXRoIHRoZSBuZXcgc3RhY2suCiAgICAgKgogICAgICogVGhpcyB0YWtlcyBhbiB7QHNlZSBBc3ROb2RlfSByYXRoZXIgdGhhbiBhIHtAc2VlIEZpbGVTcGFufSBzbyBpdCBjYW4gYXZvaWQgY2FsbGluZwogICAgICoge0BzZWUgQXN0Tm9kZTo6Z2V0U3Bhbn0gaWYgdGhlIHNwYW4gaXNuJ3QgcmVxdWlyZWQsIHNpbmNlIHNvbWUgbm9kZXMgbmVlZCB0byBkbwogICAgICogcmVhbCB3b3JrIHRvIG1hbnVmYWN0dXJlIGEgc291cmNlIHNwYW4uCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3aXRoU3RhY2tGcmFtZShzdHJpbmcgJG1lbWJlciwgQXN0Tm9kZSAkbm9kZVdpdGhTcGFuLCBjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgJHRoaXMtPnN0YWNrW10gPSBbJHRoaXMtPm1lbWJlciwgJG5vZGVXaXRoU3Bhbl07CiAgICAgICAgJG9sZE1lbWJlciA9ICR0aGlzLT5tZW1iZXI7CiAgICAgICAgJHRoaXMtPm1lbWJlciA9ICRtZW1iZXI7CiAgICAgICAgJHJlc3VsdCA9ICRjYWxsYmFjaygpOwogICAgICAgICR0aGlzLT5tZW1iZXIgPSAkb2xkTWVtYmVyOwogICAgICAgIGFycmF5X3BvcCgkdGhpcy0+c3RhY2spOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgVmFsdWU6OndpdGhvdXRTbGFzaH0sIGJ1dCBwcm9kdWNlcyBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgaWYgJHZhbHVlCiAgICAgKiB3YXMgYSBzbGFzaC1zZXBhcmF0ZWQgbnVtYmVyLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdpdGhvdXRTbGFzaChWYWx1ZSAkdmFsdWUsIEFzdE5vZGUgJG5vZGVGb3JTcGFuKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgU2Fzc051bWJlciAmJiAkdmFsdWUtPmdldEFzU2xhc2goKSAhPT0gbnVsbCkgewogICAgICAgICAgICAkcmVjb21tZW5kYXRpb24gPSBmdW5jdGlvbiAoU2Fzc051bWJlciAkbnVtYmVyKSB1c2UgKCYkcmVjb21tZW5kYXRpb24pOiBzdHJpbmcgewogICAgICAgICAgICAgICAgaWYgKCRudW1iZXItPmdldEFzU2xhc2goKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIFskYmVmb3JlLCAkYWZ0ZXJdID0gJG51bWJlci0+Z2V0QXNTbGFzaCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAibWF0aC5kaXYoeyRyZWNvbW1lbmRhdGlvbigkYmVmb3JlKX0sIHskcmVjb21tZW5kYXRpb24oJGFmdGVyKX0pIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cmluZykgJG51bWJlcjsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICRtZXNzYWdlID0gPDw8V0FSTklORwpVc2luZyAvIGZvciBkaXZpc2lvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gRGFydCBTYXNzIDIuMC4wLgoKUmVjb21tZW5kYXRpb246IHskcmVjb21tZW5kYXRpb24oJHZhbHVlKX0KCk1vcmUgaW5mbyBhbmQgYXV0b21hdGVkIG1pZ3JhdG9yOiBodHRwczovL3Nhc3MtbGFuZy5jb20vZC9zbGFzaC1kaXYKV0FSTklORzsKICAgICAgICAgICAgJHRoaXMtPndhcm4oJG1lc3NhZ2UsICRub2RlRm9yU3Bhbi0+Z2V0U3BhbigpLCBEZXByZWNhdGlvbjo6c2xhc2hEaXYpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZS0+d2l0aG91dFNsYXNoKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IHN0YWNrIGZyYW1lIHdpdGggbG9jYXRpb24gaW5mb3JtYXRpb24gZnJvbSAkbWVtYmVyJCBhbmQKICAgICAqICRzcGFuLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHN0YWNrRnJhbWUoc3RyaW5nICRtZW1iZXIsIEZpbGVTcGFuICRzcGFuKTogRnJhbWUKICAgIHsKICAgICAgICAkdXJsID0gJHNwYW4tPmdldFNvdXJjZVVybCgpOwoKICAgICAgICBpZiAoJHVybCAhPT0gbnVsbCkgewogICAgICAgICAgICAkdXJsID0gJHRoaXMtPmltcG9ydENhY2hlLT5odW1hbml6ZSgkdXJsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBVdGlsOjpmcmFtZUZvclNwYW4oJHNwYW4sICRtZW1iZXIsICR1cmwpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0YWNrIHRyYWNlIGF0IHRoZSBjdXJyZW50IHBvaW50LgogICAgICoKICAgICAqIElmICRzcGFuIGlzIHBhc3NlZCwgaXQncyB1c2VkIGZvciB0aGUgaW5uZXJtb3N0IHN0YWNrIGZyYW1lLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHN0YWNrVHJhY2UoP0ZpbGVTcGFuICRzcGFuID0gbnVsbCk6IFRyYWNlCiAgICB7CiAgICAgICAgJGZyYW1lcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c3RhY2sgYXMgWyRtZW1iZXIsICRub2RlV2l0aFNwYW5dKSB7CiAgICAgICAgICAgICRmcmFtZXNbXSA9ICR0aGlzLT5zdGFja0ZyYW1lKCRtZW1iZXIsICRub2RlV2l0aFNwYW4tPmdldFNwYW4oKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNwYW4gIT09IG51bGwpIHsKICAgICAgICAgICAgJGZyYW1lc1tdID0gJHRoaXMtPnN0YWNrRnJhbWUoJHRoaXMtPm1lbWJlciwgJHNwYW4pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBUcmFjZShhcnJheV9yZXZlcnNlKCRmcmFtZXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FybihzdHJpbmcgJG1lc3NhZ2UsIEZpbGVTcGFuICRzcGFuLCA/RGVwcmVjYXRpb24gJGRlcHJlY2F0aW9uID0gbnVsbCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnF1aWV0RGVwcyAmJiAoJHRoaXMtPmluRGVwZW5kZW5jeSB8fCAoJHRoaXMtPmN1cnJlbnRDYWxsYWJsZSAhPT0gbnVsbCAmJiAkdGhpcy0+Y3VycmVudENhbGxhYmxlLT5pc0luRGVwZW5kZW5jeSgpKSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHNwYW5TdHJpbmcgPSAoJHNwYW4tPmdldFNvdXJjZVVybCgpID8/ICcnKSAuICJcMCIgLiAkc3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCkgLiAiXDAiIC4gJHNwYW4tPmdldEVuZCgpLT5nZXRPZmZzZXQoKTsKCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT53YXJuaW5nc0VtaXR0ZWRbJG1lc3NhZ2VdWyRzcGFuU3RyaW5nXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+d2FybmluZ3NFbWl0dGVkWyRtZXNzYWdlXVskc3BhblN0cmluZ10gPSB0cnVlOwoKICAgICAgICAkdHJhY2UgPSAkdGhpcy0+c3RhY2tUcmFjZSgkc3Bhbik7CgogICAgICAgIGlmICgkZGVwcmVjYXRpb24gPT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmxvZ2dlci0+d2FybigkbWVzc2FnZSwgbnVsbCwgJHNwYW4sICR0cmFjZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgTG9nZ2VyVXRpbDo6d2FybkZvckRlcHJlY2F0aW9uKCR0aGlzLT5sb2dnZXIsICRkZXByZWNhdGlvbiwgJG1lc3NhZ2UsICRzcGFuLCAkdHJhY2UpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSB7QHNlZSBTYXNzUnVudGltZUV4Y2VwdGlvbn0gd2l0aCB0aGUgZ2l2ZW4gJG1lc3NhZ2UuCiAgICAgKgogICAgICogSWYgJHNwYW4gaXMgcGFzc2VkLCBpdCdzIHVzZWQgZm9yIHRoZSBpbm5lcm1vc3Qgc3RhY2sgZnJhbWUuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXhjZXB0aW9uKHN0cmluZyAkbWVzc2FnZSwgP0ZpbGVTcGFuICRzcGFuID0gbnVsbCwgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCk6IFNhc3NSdW50aW1lRXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVTYXNzUnVudGltZUV4Y2VwdGlvbigkbWVzc2FnZSwgJHNwYW4gPz8gTGlzdFV0aWw6Omxhc3QoJHRoaXMtPnN0YWNrKVsxXS0+Z2V0U3BhbigpLCAkdGhpcy0+c3RhY2tUcmFjZSgkc3BhbiksICRwcmV2aW91cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEge0BzZWUgTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb259IHdpdGggdGhlIGdpdmVuICRtZXNzYWdlLAogICAgICogJHByaW1hcnlMYWJlbCwgYW5kICRzZWNvbmRhcnlMYWJlbHMuCiAgICAgKgogICAgICogVGhlIHByaW1hcnkgc3BhbiBpcyB0YWtlbiBmcm9tIHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIHNwYW4uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgRmlsZVNwYW4+ICRzZWNvbmRhcnlTcGFucwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG11bHRpU3BhbkV4Y2VwdGlvbihzdHJpbmcgJG1lc3NhZ2UsIHN0cmluZyAkcHJpbWFyeUxhYmVsLCBhcnJheSAkc2Vjb25kYXJ5U3BhbnMpOiBTYXNzUnVudGltZUV4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb24oJG1lc3NhZ2UsIExpc3RVdGlsOjpsYXN0KCR0aGlzLT5zdGFjaylbMV0tPmdldFNwYW4oKSwgJHByaW1hcnlMYWJlbCwgJHNlY29uZGFyeVNwYW5zLCAkdGhpcy0+c3RhY2tUcmFjZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJ1bnMgJGNhbGxiYWNrLCBhbmQgY29udmVydHMgYW55IHtAc2VlIFNhc3NTY3JpcHRFeGNlcHRpb259cyBpdCB0aHJvd3MgdG8KICAgICAqIHtAc2VlIFNhc3NSdW50aW1lRXhjZXB0aW9ufXMgd2l0aCAkbm9kZVdpdGhTcGFuJ3Mgc291cmNlIHNwYW4uCiAgICAgKgogICAgICogVGhpcyB0YWtlcyBhbiB7QHNlZSBBc3ROb2RlfSByYXRoZXIgdGhhbiBhIHtAc2VlIEZpbGVTcGFufSBzbyBpdCBjYW4gYXZvaWQgY2FsbGluZwogICAgICoge0BzZWUgQXN0Tm9kZTo6Z2V0U3Bhbn0gaWYgdGhlIHNwYW4gaXNuJ3QgcmVxdWlyZWQsIHNpbmNlIHNvbWUgbm9kZXMgbmVlZCB0byBkbwogICAgICogcmVhbCB3b3JrIHRvIG1hbnVmYWN0dXJlIGEgc291cmNlIHNwYW4uCiAgICAgKgogICAgICogSWYgJGFkZFN0YWNrRnJhbWUgaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGlzIHdpbGwgYWRkIGFuIGlubmVybW9zdCBzdGFjawogICAgICogZnJhbWUgZm9yICRub2RlV2l0aFNwYW4uIE90aGVyd2lzZSwgaXQgd2lsbCB1c2UgdGhlIGV4aXN0aW5nIHN0YWNrIGFzLWlzLgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFQgJGNhbGxiYWNrCiAgICAgKgogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQHRocm93cyBTYXNzUnVudGltZUV4Y2VwdGlvbgogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZEV4Y2VwdGlvblNwYW4oQXN0Tm9kZSAkbm9kZVdpdGhTcGFuLCBjYWxsYWJsZSAkY2FsbGJhY2ssIGJvb2wgJGFkZFN0YWNrRnJhbWUgPSB0cnVlKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiAkY2FsbGJhY2soKTsKICAgICAgICB9IGNhdGNoIChTYXNzU2NyaXB0RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93ICRlLT53aXRoU3Bhbigkbm9kZVdpdGhTcGFuLT5nZXRTcGFuKCkpLT53aXRoVHJhY2UoJHRoaXMtPnN0YWNrVHJhY2UoJGFkZFN0YWNrRnJhbWUgPyAkbm9kZVdpdGhTcGFuLT5nZXRTcGFuKCkgOiBudWxsKSwgJGUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJ1bnMgJGNhbGxiYWNrLCBhbmQgY29udmVydHMgYW55IHtAc2VlIFNhc3NFeGNlcHRpb259cyB0aGF0IGFyZW4ndCBhbHJlYWR5CiAgICAgKiB7QHNlZSBTYXNzUnVudGltZUV4Y2VwdGlvbn1zIHRvIHtAc2VlIFNhc3NSdW50aW1lRXhjZXB0aW9ufXMgd2l0aCB0aGUgY3VycmVudCBzdGFjawogICAgICogdHJhY2UuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqIEByZXR1cm4gVAogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZEV4Y2VwdGlvblRyYWNlKGNhbGxhYmxlICRjYWxsYmFjaykKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCk7CiAgICAgICAgfSBjYXRjaCAoU2Fzc1J1bnRpbWVFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfSBjYXRjaCAoU2Fzc0V4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICB0aHJvdyAkZS0+d2l0aFRyYWNlKCR0aGlzLT5zdGFja1RyYWNlKCRlLT5nZXRTcGFuKCkpLCAkZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUnVucyAkY2FsbGJhY2ssIGFuZCBjb252ZXJ0cyBhbnkge0BzZWUgU2Fzc1J1bnRpbWVFeGNlcHRpb259cyBjb250YWluaW5nIGFuCiAgICAgKiBgQGVycm9yYCB0byB0aHJvdyBhIG1vcmUgcmVsZXZhbnQge0BzZWUgU2Fzc1J1bnRpbWVFeGNlcHRpb259cyB3aXRoICRub2RlV2l0aFNwYW4ncwogICAgICogc291cmNlIHNwYW4uCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gQXN0Tm9kZSAgICAgICAkbm9kZVdpdGhTcGFuCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRFcnJvclNwYW4oQXN0Tm9kZSAkbm9kZVdpdGhTcGFuLCBjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuICRjYWxsYmFjaygpOwogICAgICAgIH0gY2F0Y2ggKFNhc3NSdW50aW1lRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIGlmICghc3RyX3N0YXJ0c193aXRoKCRlLT5nZXRTcGFuKCktPmdldFRleHQoKSwgJ0BlcnJvcicpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhyb3cgbmV3IFNpbXBsZVNhc3NSdW50aW1lRXhjZXB0aW9uKCRlLT5nZXRPcmlnaW5hbE1lc3NhZ2UoKSwgJG5vZGVXaXRoU3Bhbi0+Z2V0U3BhbigpLCAkdGhpcy0+c3RhY2tUcmFjZSgpLCAkZSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Evaluation/EvaluationContext.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV2YWx1YXRpb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXERlcHJlY2F0aW9uOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIEV2YWx1YXRpb25Db250ZXh0CnsKICAgIHByaXZhdGUgc3RhdGljID9FdmFsdWF0aW9uQ29udGV4dCAkZXZhbHVhdGlvbkNvbnRleHQgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIGN1cnJlbnQgZXZhbHVhdGlvbiBjb250ZXh0LgogICAgICoKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uIGlmIHRoZXJlIGlzbid0IGEgU2FzcyBzdHlsZXNoZWV0IGN1cnJlbnRseSBiZWluZwogICAgICogZXZhbHVhdGVkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEN1cnJlbnQoKTogRXZhbHVhdGlvbkNvbnRleHQKICAgIHsKICAgICAgICBpZiAoc2VsZjo6JGV2YWx1YXRpb25Db250ZXh0ICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokZXZhbHVhdGlvbkNvbnRleHQ7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdObyBTYXNzIHN0eWxlc2hlZXQgaXMgY3VycmVudGx5IGJlaW5nIGV2YWx1YXRlZC4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJ1bnMgJGNhbGxiYWNrIHdpdGggJGNvbnRleHQgYXMge0BzZWUgRXZhbHVhdGlvbkNvbnRleHQ6OmdldEN1cnJlbnQoKX0uCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRoRXZhbHVhdGlvbkNvbnRleHQoRXZhbHVhdGlvbkNvbnRleHQgJGNvbnRleHQsIGNhbGxhYmxlICRjYWxsYmFjaykKICAgIHsKICAgICAgICAkb2xkQ29udGV4dCA9IHNlbGY6OiRldmFsdWF0aW9uQ29udGV4dDsKICAgICAgICBzZWxmOjokZXZhbHVhdGlvbkNvbnRleHQgPSAkY29udGV4dDsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuICRjYWxsYmFjaygpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIHNlbGY6OiRldmFsdWF0aW9uQ29udGV4dCA9ICRvbGRDb250ZXh0OwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNwYW4gZm9yIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNhbGxhYmxlLgogICAgICoKICAgICAqIEZvciBub3JtYWwgZXhjZXB0aW9uIHJlcG9ydGluZywgdGhpcyBzaG91bGQgYmUgYXZvaWRlZCBpbiBmYXZvciBvZgogICAgICogdGhyb3dpbmcge0BzZWUgU2Fzc1NjcmlwdEV4Y2VwdGlvbn1zLiBJdCBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gY2FsbGluZyBBUElzCiAgICAgKiB0aGF0IHJlcXVpcmUgc3BhbnMuCiAgICAgKgogICAgICogQHRocm93cyBcTG9naWNFeGNlcHRpb24gaWYgdGhlcmUgaXNuJ3QgYSBjYWxsYWJsZSBiZWluZyBpbnZva2VkLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0Q3VycmVudENhbGxhYmxlU3BhbigpOiBGaWxlU3BhbjsKCiAgICAvKioKICAgICAqIFByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYEBpbXBvcnRgIG9yIGZ1bmN0aW9uCiAgICAgKiBjYWxsLgogICAgICoKICAgICAqIElmICRkZXByZWNhdGlvbiBpcyBub24tbnVsbGAsIHRoZSB3YXJuaW5nIGlzIGVtaXR0ZWQgYXMgYSBkZXByZWNhdGlvbgogICAgICogd2FybmluZyBvZiB0aGF0IHR5cGUuCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiB3YXJuKHN0cmluZyAkbWVzc2FnZSwgP0RlcHJlY2F0aW9uICRkZXByZWNhdGlvbiA9IG51bGwpOiB2b2lkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Evaluation/LoadedStylesheet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV2YWx1YXRpb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTdHlsZXNoZWV0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyXEltcG9ydGVyOwoKLyoqCiAqIFRoZSByZXN1bHQgb2YgbG9hZGluZyBhIHN0eWxlc2hlZXQgdmlhIHtAc2VlIEV2YWx1YXRlVmlzaXRvcjo6bG9hZFN0eWxlc2hlZXR9LgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIExvYWRlZFN0eWxlc2hlZXQKewogICAgLyoqCiAgICAgKiBUaGUgc3R5bGVzaGVldCBpdHNlbGYuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgU3R5bGVzaGVldCAkc3R5bGVzaGVldDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IEltcG9ydGVyICRpbXBvcnRlcjsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBsb2FkIGNvdW50cyBhcyBhIGRlcGVuZGVuY3kuCiAgICAgKgogICAgICogVGhhdCBpcywgd2hldGhlciB0aGlzIHdhcyAodHJhbnNpdGl2ZWx5KSBsb2FkZWQgdGhyb3VnaCBhIGxvYWQgcGF0aCBvcgogICAgICogaW1wb3J0ZXIgcmF0aGVyIHRoYW4gcmVsYXRpdmUgdG8gdGhlIGVudHJ5cG9pbnQuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkZGVwZW5kZW5jeTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU3R5bGVzaGVldCAkc3R5bGVzaGVldCwgSW1wb3J0ZXIgJGltcG9ydGVyLCBib29sICRkZXBlbmRlbmN5KQogICAgewogICAgICAgICR0aGlzLT5zdHlsZXNoZWV0ID0gJHN0eWxlc2hlZXQ7CiAgICAgICAgJHRoaXMtPmltcG9ydGVyID0gJGltcG9ydGVyOwogICAgICAgICR0aGlzLT5kZXBlbmRlbmN5ID0gJGRlcGVuZGVuY3k7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0eWxlc2hlZXQoKTogU3R5bGVzaGVldAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3R5bGVzaGVldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW1wb3J0ZXIoKTogSW1wb3J0ZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmltcG9ydGVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0RlcGVuZGVuY3koKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGVwZW5kZW5jeTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Evaluation/VisitorEvaluationContext.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV2YWx1YXRpb247Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxBc3ROb2RlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXERlcHJlY2F0aW9uOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFZpc2l0b3JFdmFsdWF0aW9uQ29udGV4dCBleHRlbmRzIEV2YWx1YXRpb25Db250ZXh0CnsKICAgIHByaXZhdGUgcmVhZG9ubHkgRXZhbHVhdGVWaXNpdG9yICR2aXNpdG9yOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgQXN0Tm9kZSAkZGVmYXVsdFdhcm5Ob2RlV2l0aFNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEV2YWx1YXRlVmlzaXRvciAkdmlzaXRvciwgQXN0Tm9kZSAkZGVmYXVsdFdhcm5Ob2RlV2l0aFNwYW4pCiAgICB7CiAgICAgICAgJHRoaXMtPnZpc2l0b3IgPSAkdmlzaXRvcjsKICAgICAgICAkdGhpcy0+ZGVmYXVsdFdhcm5Ob2RlV2l0aFNwYW4gPSAkZGVmYXVsdFdhcm5Ob2RlV2l0aFNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEN1cnJlbnRDYWxsYWJsZVNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICAkY2FsbGFibGVOb2RlID0gJHRoaXMtPnZpc2l0b3ItPmdldENhbGxhYmxlTm9kZSgpOwoKICAgICAgICBpZiAoJGNhbGxhYmxlTm9kZSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJGNhbGxhYmxlTm9kZS0+Z2V0U3BhbigpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignTm8gU2FzcyBjYWxsYWJsZSBpcyBjdXJyZW50bHkgYmVpbmcgZXZhbHVhdGVkLicpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YXJuKHN0cmluZyAkbWVzc2FnZSwgP0RlcHJlY2F0aW9uICRkZXByZWNhdGlvbiA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgJHNwYW4gPSAkdGhpcy0+dmlzaXRvci0+Z2V0SW1wb3J0U3BhbigpID8/ICR0aGlzLT5tYXliZUN1cnJlbnRDYWxsYWJsZVNwYW4oKSA/PyAkdGhpcy0+ZGVmYXVsdFdhcm5Ob2RlV2l0aFNwYW4tPmdldFNwYW4oKTsKCiAgICAgICAgJHRoaXMtPnZpc2l0b3ItPndhcm4oJG1lc3NhZ2UsICRzcGFuLCAkZGVwcmVjYXRpb24pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gbWF5YmVDdXJyZW50Q2FsbGFibGVTcGFuKCk6ID9GaWxlU3BhbgogICAgewogICAgICAgICRjYWxsYWJsZU5vZGUgPSAkdGhpcy0+dmlzaXRvci0+Z2V0Q2FsbGFibGVOb2RlKCk7CgogICAgICAgIGlmICgkY2FsbGFibGVOb2RlICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkY2FsbGFibGVOb2RlLT5nZXRTcGFuKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/MultiSpanSassException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXJyb3JVdGlsOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIE11bHRpU3BhblNhc3NFeGNlcHRpb24gZXh0ZW5kcyBcRXhjZXB0aW9uIGltcGxlbWVudHMgU2Fzc0V4Y2VwdGlvbgp7CiAgICBwdWJsaWMgcmVhZG9ubHkgc3RyaW5nICRwcmltYXJ5TGFiZWw7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBGaWxlU3Bhbj4KICAgICAqLwogICAgcHVibGljIHJlYWRvbmx5IGFycmF5ICRzZWNvbmRhcnlTcGFuczsKICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRvcmlnaW5hbE1lc3NhZ2U7CiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgRmlsZVNwYW4+ICRzZWNvbmRhcnlTcGFucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRtZXNzYWdlLCBGaWxlU3BhbiAkc3Bhbiwgc3RyaW5nICRwcmltYXJ5TGFiZWwsIGFycmF5ICRzZWNvbmRhcnlTcGFucywgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+b3JpZ2luYWxNZXNzYWdlID0gJG1lc3NhZ2U7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgICAgICAkdGhpcy0+cHJpbWFyeUxhYmVsID0gJHByaW1hcnlMYWJlbDsKICAgICAgICAkdGhpcy0+c2Vjb25kYXJ5U3BhbnMgPSAkc2Vjb25kYXJ5U3BhbnM7CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoRXJyb3JVdGlsOjpmb3JtYXRFcnJvck1lc3NhZ2VNdWx0aXBsZSgkbWVzc2FnZSwgJHNwYW4sICRwcmltYXJ5TGFiZWwsICRzZWNvbmRhcnlTcGFucywgJHRoaXMtPmdldFNhc3NUcmFjZSgpKSwgMCwgJHByZXZpb3VzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgdGhlIG9yaWdpbmFsIG1lc3NhZ2Ugd2l0aG91dCB0aGUgbG9jYXRpb24gaW5mbyBpbiBpdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE9yaWdpbmFsTWVzc2FnZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9yaWdpbmFsTWVzc2FnZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2Fzc1RyYWNlKCk6IFRyYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBUcmFjZShbVXRpbDo6ZnJhbWVGb3JTcGFuKCR0aGlzLT5zcGFuLCAncm9vdCBzdHlsZXNoZWV0JyldKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGl0aW9uYWxTcGFuKEZpbGVTcGFuICRzcGFuLCBzdHJpbmcgJGxhYmVsLCA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsKTogTXVsdGlTcGFuU2Fzc0V4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkdGhpcy0+b3JpZ2luYWxNZXNzYWdlLCAkdGhpcy0+c3BhbiwgJHRoaXMtPnByaW1hcnlMYWJlbCwgJHRoaXMtPnNlY29uZGFyeVNwYW5zICsgWyRsYWJlbCA9PiAkc3Bhbl0sICRwcmV2aW91cyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhUcmFjZShUcmFjZSAkdHJhY2UsID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpOiBNdWx0aVNwYW5TYXNzUnVudGltZUV4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb24oJHRoaXMtPm9yaWdpbmFsTWVzc2FnZSwgJHRoaXMtPnNwYW4sICR0aGlzLT5wcmltYXJ5TGFiZWwsICR0aGlzLT5zZWNvbmRhcnlTcGFucywgJHRyYWNlLCAkcHJldmlvdXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/MultiSpanSassFormatException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTXVsdGlTcGFuU2Fzc0Zvcm1hdEV4Y2VwdGlvbiBleHRlbmRzIE11bHRpU3BhblNhc3NFeGNlcHRpb24gaW1wbGVtZW50cyBTYXNzRm9ybWF0RXhjZXB0aW9uCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQWRkaXRpb25hbFNwYW4oRmlsZVNwYW4gJHNwYW4sIHN0cmluZyAkbGFiZWwsID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpOiBNdWx0aVNwYW5TYXNzRm9ybWF0RXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR0aGlzLT5nZXRPcmlnaW5hbE1lc3NhZ2UoKSwgJHRoaXMtPmdldFNwYW4oKSwgJHRoaXMtPnByaW1hcnlMYWJlbCwgJHRoaXMtPnNlY29uZGFyeVNwYW5zICsgWyRsYWJlbCA9PiAkc3Bhbl0sICRwcmV2aW91cyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/MultiSpanSassRuntimeException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBNdWx0aVNwYW5TYXNzUnVudGltZUV4Y2VwdGlvbiBleHRlbmRzIE11bHRpU3BhblNhc3NFeGNlcHRpb24gaW1wbGVtZW50cyBTYXNzUnVudGltZUV4Y2VwdGlvbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IFRyYWNlICRzYXNzVHJhY2U7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBGaWxlU3Bhbj4gJHNlY29uZGFyeVNwYW5zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG1lc3NhZ2UsIEZpbGVTcGFuICRzcGFuLCBzdHJpbmcgJHByaW1hcnlMYWJlbCwgYXJyYXkgJHNlY29uZGFyeVNwYW5zLCBUcmFjZSAkc2Fzc1RyYWNlLCA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5zYXNzVHJhY2UgPSAkc2Fzc1RyYWNlOwoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlLCAkc3BhbiwgJHByaW1hcnlMYWJlbCwgJHNlY29uZGFyeVNwYW5zLCAkcHJldmlvdXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTYXNzVHJhY2UoKTogVHJhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNhc3NUcmFjZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGl0aW9uYWxTcGFuKEZpbGVTcGFuICRzcGFuLCBzdHJpbmcgJGxhYmVsLCA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsKTogTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHRoaXMtPmdldE9yaWdpbmFsTWVzc2FnZSgpLCAkdGhpcy0+Z2V0U3BhbigpLCAkdGhpcy0+cHJpbWFyeUxhYmVsLCAkdGhpcy0+c2Vjb25kYXJ5U3BhbnMgKyBbJGxhYmVsID0+ICRzcGFuXSwgJHRoaXMtPnNhc3NUcmFjZSwgJHByZXZpb3VzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/MultiSpanSassScriptException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTXVsdGlTcGFuU2Fzc1NjcmlwdEV4Y2VwdGlvbiBleHRlbmRzIFNhc3NTY3JpcHRFeGNlcHRpb24KewogICAgLyoqCiAgICAgKiB7QHNlZSBNdWx0aVNwYW5TYXNzRXhjZXB0aW9uOjokcHJpbWFyeUxhYmVsfQogICAgICovCiAgICBwdWJsaWMgcmVhZG9ubHkgc3RyaW5nICRwcmltYXJ5TGFiZWw7CiAgICAvKioKICAgICAqIHtAc2VlIE11bHRpU3BhblNhc3NFeGNlcHRpb246OiRzZWNvbmRhcnlTcGFuc30KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgRmlsZVNwYW4+CiAgICAgKi8KICAgIHB1YmxpYyByZWFkb25seSBhcnJheSAkc2Vjb25kYXJ5U3BhbnM7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBGaWxlU3Bhbj4gJHNlY29uZGFyeVNwYW5zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG1lc3NhZ2UsIHN0cmluZyAkcHJpbWFyeUxhYmVsLCBhcnJheSAkc2Vjb25kYXJ5U3BhbnMsID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnByaW1hcnlMYWJlbCA9ICRwcmltYXJ5TGFiZWw7CiAgICAgICAgJHRoaXMtPnNlY29uZGFyeVNwYW5zID0gJHNlY29uZGFyeVNwYW5zOwoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlLCAwLCAkcHJldmlvdXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU3BhbihGaWxlU3BhbiAkc3Bhbik6IE11bHRpU3BhblNhc3NFeGNlcHRpb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IE11bHRpU3BhblNhc3NFeGNlcHRpb24oJHRoaXMtPm1lc3NhZ2UsICRzcGFuLCAkdGhpcy0+cHJpbWFyeUxhYmVsLCAkdGhpcy0+c2Vjb25kYXJ5U3BhbnMsICR0aGlzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/SassException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgppbnRlcmZhY2UgU2Fzc0V4Y2VwdGlvbiBleHRlbmRzIFxUaHJvd2FibGUKewogICAgLyoqCiAgICAgKiBUaGUgc3BhbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBleGNlcHRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuOwoKICAgIC8qKgogICAgICogR2V0cyB0aGUgb3JpZ2luYWwgbWVzc2FnZSB3aXRob3V0IHRoZSBsb2NhdGlvbiBpbmZvIGluIGl0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JpZ2luYWxNZXNzYWdlKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFRoZSBTYXNzIHN0YWNrIHRyYWNlIGF0IHRoZSBwb2ludCB0aGlzIGV4Y2VwdGlvbiB3YXMgdGhyb3duLgogICAgICoKICAgICAqIFRoaXMgaW5jbHVkZXMge0BzZWUgZ2V0U3Bhbn0uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTYXNzVHJhY2UoKTogVHJhY2U7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGlzIHRvIGEge0BzZWUgTXVsdGlTcGFuU2Fzc0V4Y2VwdGlvbn0gd2l0aCB0aGUgYWRkaXRpb25hbCAkc3BhbiBhbmQKICAgICAqICRsYWJlbC4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhBZGRpdGlvbmFsU3BhbihGaWxlU3BhbiAkc3Bhbiwgc3RyaW5nICRsYWJlbCwgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCk6IE11bHRpU3BhblNhc3NFeGNlcHRpb247CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgY29weSBvZiB0aGlzIGFzIGEge0BzZWUgU2Fzc1J1bnRpbWVFeGNlcHRpb259IHdpdGggJHRyYWNlIGFzIGl0cwogICAgICogU2FzcyBzdGFjayB0cmFjZS4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhUcmFjZShUcmFjZSAkdHJhY2UsID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpOiBTYXNzUnVudGltZUV4Y2VwdGlvbjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/SassFormatException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmludGVyZmFjZSBTYXNzRm9ybWF0RXhjZXB0aW9uIGV4dGVuZHMgU2Fzc0V4Y2VwdGlvbgp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/SassRuntimeException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIFNhc3NSdW50aW1lRXhjZXB0aW9uIGV4dGVuZHMgU2Fzc0V4Y2VwdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGl0aW9uYWxTcGFuKEZpbGVTcGFuICRzcGFuLCBzdHJpbmcgJGxhYmVsLCA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsKTogTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb247Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/SassScriptException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uOwoKdXNlIEppcmlQdWRpbFxTZWFsZWRDbGFzc2VzXFNlYWxlZDsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQW4gZXhjZXB0aW9uIHRocm93biBieSBTYXNzU2NyaXB0LgogKgogKiBUaGlzIGNsYXNzIGRvZXMgbm90IGltcGxlbWVudCBTYXNzRXhjZXB0aW9uIG9uIHB1cnBvc2UsIGFzIGl0IHNob3VsZAogKiBuZXZlciBiZSByZXR1cm5lZCB0byB0aGUgb3V0c2lkZSBjb2RlLiBUaGUgY29tcGlsYXRpb24gd2lsbCBjYXRjaCBpdAogKiBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgU2Fzc0V4Y2VwdGlvbiByZXBvcnRpbmcgdGhlIGxvY2F0aW9uIG9mIHRoZQogKiBlcnJvci4KICovCiNbU2VhbGVkKFtNdWx0aVNwYW5TYXNzU2NyaXB0RXhjZXB0aW9uOjpjbGFzc10pXQpjbGFzcyBTYXNzU2NyaXB0RXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbgp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBTYXNzU2NyaXB0RXhjZXB0aW9uIHdpdGggc3VwcG9ydCBmb3IgYW4gYXJndW1lbnQgbmFtZS4KICAgICAqCiAgICAgKiBUaGlzIGhlbHBlciBlbnN1cmVzIGEgY29uc2lzdGVudCBoYW5kbGluZyBvZiBhcmd1bWVudCBuYW1lcyBpbiB0aGUKICAgICAqIGVycm9yIG1lc3NhZ2UsIHdpdGhvdXQgZHVwbGljYXRpbmcgaXQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRuYW1lIFRoZSBhcmd1bWVudCBuYW1lLCB3aXRob3V0ICQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmb3JBcmd1bWVudChzdHJpbmcgJG1lc3NhZ2UsID9zdHJpbmcgJG5hbWUgPSBudWxsLCA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsKTogU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgewogICAgICAgICR2YXJEaXNwbGF5ID0gIVxpc19udWxsKCRuYW1lKSA/ICJcJHskbmFtZX06ICIgOiAnJzsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YXJEaXNwbGF5IC4gJG1lc3NhZ2UsIDAsICRwcmV2aW91cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGlzIHRvIGEge0BzZWUgU2Fzc0V4Y2VwdGlvbn0gd2l0aCB0aGUgZ2l2ZW4gJHNwYW4uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU3BhbihGaWxlU3BhbiAkc3Bhbik6IFNhc3NFeGNlcHRpb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVNhc3NFeGNlcHRpb24oJHRoaXMtPm1lc3NhZ2UsICRzcGFuLCAkdGhpcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/SimpleSassException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXJyb3JVdGlsOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFNpbXBsZVNhc3NFeGNlcHRpb24gZXh0ZW5kcyBcRXhjZXB0aW9uIGltcGxlbWVudHMgU2Fzc0V4Y2VwdGlvbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkb3JpZ2luYWxNZXNzYWdlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkbWVzc2FnZSwgRmlsZVNwYW4gJHNwYW4sID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPm9yaWdpbmFsTWVzc2FnZSA9ICRtZXNzYWdlOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoRXJyb3JVdGlsOjpmb3JtYXRFcnJvck1lc3NhZ2UoJG1lc3NhZ2UsICRzcGFuLCAkdGhpcy0+Z2V0U2Fzc1RyYWNlKCkpLCAwLCAkcHJldmlvdXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmlnaW5hbE1lc3NhZ2UoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vcmlnaW5hbE1lc3NhZ2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNhc3NUcmFjZSgpOiBUcmFjZQogICAgewogICAgICAgIHJldHVybiBuZXcgVHJhY2UoW1V0aWw6OmZyYW1lRm9yU3BhbigkdGhpcy0+c3BhbiwgJ3Jvb3Qgc3R5bGVzaGVldCcpXSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhBZGRpdGlvbmFsU3BhbihGaWxlU3BhbiAkc3Bhbiwgc3RyaW5nICRsYWJlbCwgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCk6IE11bHRpU3BhblNhc3NFeGNlcHRpb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IE11bHRpU3BhblNhc3NFeGNlcHRpb24oJHRoaXMtPm9yaWdpbmFsTWVzc2FnZSwgJHRoaXMtPnNwYW4sICcnLCBbJGxhYmVsID0+ICRzcGFuXSwgJHByZXZpb3VzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFRyYWNlKFRyYWNlICR0cmFjZSwgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCk6IFNhc3NSdW50aW1lRXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVTYXNzUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+b3JpZ2luYWxNZXNzYWdlLCAkdGhpcy0+c3BhbiwgJHRyYWNlLCAkcHJldmlvdXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/SimpleSassFormatException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXJyb3JVdGlsOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFNpbXBsZVNhc3NGb3JtYXRFeGNlcHRpb24gZXh0ZW5kcyBcRXhjZXB0aW9uIGltcGxlbWVudHMgU2Fzc0Zvcm1hdEV4Y2VwdGlvbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkb3JpZ2luYWxNZXNzYWdlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkbWVzc2FnZSwgRmlsZVNwYW4gJHNwYW4sID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPm9yaWdpbmFsTWVzc2FnZSA9ICRtZXNzYWdlOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoRXJyb3JVdGlsOjpmb3JtYXRFcnJvck1lc3NhZ2UoJG1lc3NhZ2UsICRzcGFuLCAkdGhpcy0+Z2V0U2Fzc1RyYWNlKCkpLCAwLCAkcHJldmlvdXMpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0cyB0aGUgb3JpZ2luYWwgbWVzc2FnZSB3aXRob3V0IHRoZSBsb2NhdGlvbiBpbmZvIGluIGl0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JpZ2luYWxNZXNzYWdlKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3JpZ2luYWxNZXNzYWdlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTYXNzVHJhY2UoKTogVHJhY2UKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFRyYWNlKFtVdGlsOjpmcmFtZUZvclNwYW4oJHRoaXMtPnNwYW4sICdyb290IHN0eWxlc2hlZXQnKV0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQWRkaXRpb25hbFNwYW4oRmlsZVNwYW4gJHNwYW4sIHN0cmluZyAkbGFiZWwsID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpOiBNdWx0aVNwYW5TYXNzRm9ybWF0RXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBNdWx0aVNwYW5TYXNzRm9ybWF0RXhjZXB0aW9uKCR0aGlzLT5vcmlnaW5hbE1lc3NhZ2UsICR0aGlzLT5zcGFuLCAnJywgWyRsYWJlbCA9PiAkc3Bhbl0sICRwcmV2aW91cyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhUcmFjZShUcmFjZSAkdHJhY2UsID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpOiBTYXNzUnVudGltZUV4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgU2ltcGxlU2Fzc1J1bnRpbWVFeGNlcHRpb24oJHRoaXMtPm9yaWdpbmFsTWVzc2FnZSwgJHRoaXMtPnNwYW4sICR0cmFjZSwgJHByZXZpb3VzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Exception/SimpleSassRuntimeException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVycm9yVXRpbDsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTaW1wbGVTYXNzUnVudGltZUV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24gaW1wbGVtZW50cyBTYXNzUnVudGltZUV4Y2VwdGlvbgp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAcmVhZG9ubHkKICAgICAqLwogICAgcHJpdmF0ZSAkb3JpZ2luYWxNZXNzYWdlOwoKICAgIC8qKgogICAgICogQHZhciBGaWxlU3BhbgogICAgICogQHJlYWRvbmx5CiAgICAgKi8KICAgIHByaXZhdGUgJHNwYW47CgogICAgcHJpdmF0ZSByZWFkb25seSBUcmFjZSAkc2Fzc1RyYWNlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG1lc3NhZ2UsIEZpbGVTcGFuICRzcGFuLCBUcmFjZSAkc2Fzc1RyYWNlLCA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5vcmlnaW5hbE1lc3NhZ2UgPSAkbWVzc2FnZTsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgICAgICR0aGlzLT5zYXNzVHJhY2UgPSAkc2Fzc1RyYWNlOwoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KEVycm9yVXRpbDo6Zm9ybWF0RXJyb3JNZXNzYWdlKCRtZXNzYWdlLCAkc3BhbiwgJHRoaXMtPnNhc3NUcmFjZSksIDAsICRwcmV2aW91cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIHRoZSBvcmlnaW5hbCBtZXNzYWdlIHdpdGhvdXQgdGhlIGxvY2F0aW9uIGluZm8gaW4gaXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmlnaW5hbE1lc3NhZ2UoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vcmlnaW5hbE1lc3NhZ2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNhc3NUcmFjZSgpOiBUcmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2Fzc1RyYWNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQWRkaXRpb25hbFNwYW4oRmlsZVNwYW4gJHNwYW4sIHN0cmluZyAkbGFiZWwsID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpOiBNdWx0aVNwYW5TYXNzUnVudGltZUV4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgTXVsdGlTcGFuU2Fzc1J1bnRpbWVFeGNlcHRpb24oJHRoaXMtPm9yaWdpbmFsTWVzc2FnZSwgJHRoaXMtPnNwYW4sICcnLCBbJGxhYmVsID0+ICRzcGFuXSwgJHRoaXMtPnNhc3NUcmFjZSwgJHByZXZpb3VzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFRyYWNlKFRyYWNlICR0cmFjZSwgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCk6IFNhc3NSdW50aW1lRXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVTYXNzUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+b3JpZ2luYWxNZXNzYWdlLCAkdGhpcy0+c3BhbiwgJHRyYWNlLCAkcHJldmlvdXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/ComplexSelectorMap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXENvbXBsZXhTZWxlY3RvcjsKCi8qKgogKiBAdGVtcGxhdGUgVAogKiBAdGVtcGxhdGUtZXh0ZW5kcyBcU3BsT2JqZWN0U3RvcmFnZTxDb21wbGV4U2VsZWN0b3IsIFQ+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ29tcGxleFNlbGVjdG9yTWFwIGV4dGVuZHMgXFNwbE9iamVjdFN0b3JhZ2UKewogICAgcHVibGljIGZ1bmN0aW9uIGdldEhhc2gob2JqZWN0ICRvYmplY3QpOiBzdHJpbmcKICAgIHsKICAgICAgICBcYXNzZXJ0KCRvYmplY3QgaW5zdGFuY2VvZiBDb21wbGV4U2VsZWN0b3IpOwogICAgICAgIC8vIEZvciBDb21wbGV4U2VsZWN0b3IsIHNlbGVjdG9ycyB0aGF0IGFyZSBlcXVhbCBieSB2YWx1ZSBzZW1hbnRpYyBhcmUgZXhhY3RseSB0aGUgb25lcyB0aGF0IGhhdmUgdGhlIHNhbWUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgogICAgICAgIHJldHVybiAoc3RyaW5nKSAkb2JqZWN0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpdGVyYWJsZTxUPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVzKCk6IGl0ZXJhYmxlCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMgYXMgJHNlbGVjdG9yKSB7CiAgICAgICAgICAgIHlpZWxkICR0aGlzWyRzZWxlY3Rvcl07CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/ConcreteExtensionStore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NNZWRpYVF1ZXJ5Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxFeHRlbmRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXENvbXBsZXhTZWxlY3RvckNvbXBvbmVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tcG91bmRTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcUGxhY2Vob2xkZXJTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcUHNldWRvU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNlbGVjdG9yTGlzdDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcU2ltcGxlU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NTY3JpcHRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNpbXBsZVNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEJveDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVxdWF0YWJsZVV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxJdGVyYWJsZVV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxMaXN0VXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXE1vZGlmaWFibGVCb3g7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ29uY3JldGVFeHRlbnNpb25TdG9yZSBpbXBsZW1lbnRzIEV4dGVuc2lvblN0b3JlCnsKICAgIC8qKgogICAgICogQSBtYXAgZnJvbSBhbGwgc2ltcGxlIHNlbGVjdG9ycyBpbiB0aGUgc3R5bGVzaGVldCB0byB0aGUgc2VsZWN0b3IgbGlzdHMKICAgICAqIHRoYXQgY29udGFpbiB0aGVtLgogICAgICoKICAgICAqIFRoaXMgaXMgdXNlZCB0byBmaW5kIHdoaWNoIHNlbGVjdG9ycyBhbiBgQGV4dGVuZGAgYXBwbGllcyB0byBhbmQgYWRqdXN0CiAgICAgKiB0aGVtLgogICAgICoKICAgICAqIEB2YXIgU2ltcGxlU2VsZWN0b3JNYXA8T2JqZWN0U2V0PE1vZGlmaWFibGVCb3g8U2VsZWN0b3JMaXN0Pj4+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgU2ltcGxlU2VsZWN0b3JNYXAgJHNlbGVjdG9yczsKICAgIC8qKgogICAgICogQSBtYXAgZnJvbSBhbGwgZXh0ZW5kZWQgc2ltcGxlIHNlbGVjdG9ycyB0byB0aGUgc291cmNlcyBvZiB0aG9zZQogICAgICogZXh0ZW5zaW9ucy4KICAgICAqCiAgICAgKiBAdmFyIFNpbXBsZVNlbGVjdG9yTWFwPENvbXBsZXhTZWxlY3Rvck1hcDxFeHRlbnNpb24+PgogICAgICovCiAgICBwcml2YXRlIFNpbXBsZVNlbGVjdG9yTWFwICRleHRlbnNpb25zOwogICAgLyoqCiAgICAgKiBBIG1hcCBmcm9tIGFsbCBzaW1wbGUgc2VsZWN0b3JzIGluIGV4dGVuZGVycyB0byB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRob3NlCiAgICAgKiBleHRlbmRlcnMgZGVmaW5lLgogICAgICoKICAgICAqIEB2YXIgU2ltcGxlU2VsZWN0b3JNYXA8bGlzdDxFeHRlbnNpb24+PgogICAgICovCiAgICBwcml2YXRlIFNpbXBsZVNlbGVjdG9yTWFwICRleHRlbnNpb25zQnlFeHRlbmRlcjsKICAgIC8qKgogICAgICogQSBtYXAgZnJvbSBDU1Mgc2VsZWN0b3JzIHRvIHRoZSBtZWRpYSBxdWVyeSBjb250ZXh0cyB0aGV5J3JlIGRlZmluZWQgaW4uCiAgICAgKgogICAgICogVGhpcyB0cmFja3MgdGhlIGNvbnRleHRzIGluIHdoaWNoIGVhY2ggc2VsZWN0b3IncyBzdHlsZSBydWxlIGlzIGRlZmluZWQuCiAgICAgKiBJZiBhIHJ1bGUgaXMgZGVmaW5lZCBhdCB0aGUgdG9wIGxldmVsLCBpdCBkb2Vzbid0IGhhdmUgYW4gZW50cnkuCiAgICAgKgogICAgICogQHZhciBcU3BsT2JqZWN0U3RvcmFnZTxNb2RpZmlhYmxlQm94PFNlbGVjdG9yTGlzdD4sIGxpc3Q8Q3NzTWVkaWFRdWVyeT4+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgXFNwbE9iamVjdFN0b3JhZ2UgJG1lZGlhQ29udGV4dHM7CiAgICAvKioKICAgICAqIEB2YXIgXFNwbE9iamVjdFN0b3JhZ2U8U2ltcGxlU2VsZWN0b3IsIGludD4KICAgICAqLwogICAgcHJpdmF0ZSBcU3BsT2JqZWN0U3RvcmFnZSAkc291cmNlU3BlY2lmaWNpdHk7CiAgICAvKioKICAgICAqIEB2YXIgXFNwbE9iamVjdFN0b3JhZ2U8Q29tcGxleFNlbGVjdG9yLCBtaXhlZD4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBcU3BsT2JqZWN0U3RvcmFnZSAkb3JpZ2luYWxzOwogICAgcHJpdmF0ZSByZWFkb25seSBFeHRlbmRNb2RlICRtb2RlOwoKICAgIC8qKgogICAgICogRXh0ZW5kcyAkc2VsZWN0b3Igd2l0aCAkc291cmNlIGV4dGVuZGVyIGFuZCAkdGFyZ2V0cyBleHRlbmRlZXMuCiAgICAgKgogICAgICogVGhpcyB3b3JrcyBhcyB0aG91Z2ggYHNvdXJjZSB7QGV4dGVuZCB0YXJnZXR9YCB3ZXJlIHdyaXR0ZW4gaW4gdGhlCiAgICAgKiBzdHlsZXNoZWV0LCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCAkdGFyZ2V0IGNhbiBjb250YWluIGNvbXBvdW5kCiAgICAgKiBzZWxlY3RvcnMgd2hpY2ggbXVzdCBiZSBleHRlbmRlZCBhcyBhIHVuaXQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXh0ZW5kKFNlbGVjdG9yTGlzdCAkc2VsZWN0b3IsIFNlbGVjdG9yTGlzdCAkc291cmNlLCBTZWxlY3Rvckxpc3QgJHRhcmdldHMsIEZpbGVTcGFuICRzcGFuKTogU2VsZWN0b3JMaXN0CiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmV4dGVuZE9yUmVwbGFjZSgkc2VsZWN0b3IsICRzb3VyY2UsICR0YXJnZXRzLCBFeHRlbmRNb2RlOjphbGxUYXJnZXRzLCAkc3Bhbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgY29weSBvZiAkc2VsZWN0b3Igd2l0aCAkdGFyZ2V0cyByZXBsYWNlZCBieSAkc291cmNlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlcGxhY2UoU2VsZWN0b3JMaXN0ICRzZWxlY3RvciwgU2VsZWN0b3JMaXN0ICRzb3VyY2UsIFNlbGVjdG9yTGlzdCAkdGFyZ2V0cywgRmlsZVNwYW4gJHNwYW4pOiBTZWxlY3Rvckxpc3QKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6ZXh0ZW5kT3JSZXBsYWNlKCRzZWxlY3RvciwgJHNvdXJjZSwgJHRhcmdldHMsIEV4dGVuZE1vZGU6OnJlcGxhY2UsICRzcGFuKTsKICAgIH0KCiAgICAvKioKICAgICAqIEEgaGVscGVyIGZ1bmN0aW9uIGZvciB7QHNlZSBleHRlbmR9IGFuZCB7QHNlZSByZXBsYWNlfS4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZXh0ZW5kT3JSZXBsYWNlKFNlbGVjdG9yTGlzdCAkc2VsZWN0b3IsIFNlbGVjdG9yTGlzdCAkc291cmNlLCBTZWxlY3Rvckxpc3QgJHRhcmdldHMsIEV4dGVuZE1vZGUgJG1vZGUsIEZpbGVTcGFuICRzcGFuKTogU2VsZWN0b3JMaXN0CiAgICB7CiAgICAgICAgJGV4dGVuZGVyID0gQ29uY3JldGVFeHRlbnNpb25TdG9yZTo6Y3JlYXRlRm9yTW9kZSgkbW9kZSk7CgogICAgICAgIGlmICghJHNlbGVjdG9yLT5pc0ludmlzaWJsZSgpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3Rvci0+Z2V0Q29tcG9uZW50cygpIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgICAgICRleHRlbmRlci0+b3JpZ2luYWxzLT5vZmZzZXRTZXQoJGNvbXBvbmVudCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0YXJnZXRzLT5nZXRDb21wb25lbnRzKCkgYXMgJGNvbXBsZXgpIHsKICAgICAgICAgICAgJGNvbXBvdW5kID0gJGNvbXBsZXgtPmdldFNpbmdsZUNvbXBvdW5kKCk7CgogICAgICAgICAgICBpZiAoJGNvbXBvdW5kID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiQ2FuJ3QgZXh0ZW5kIGNvbXBsZXggc2VsZWN0b3IgJGNvbXBsZXguIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRleHRlbnNpb25zID0gbmV3IFNpbXBsZVNlbGVjdG9yTWFwKCk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRjb21wb3VuZC0+Z2V0Q29tcG9uZW50cygpIGFzICRzaW1wbGUpIHsKICAgICAgICAgICAgICAgICRleHRlbnNpb25NYXAgPSBuZXcgQ29tcGxleFNlbGVjdG9yTWFwKCk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHNvdXJjZS0+Z2V0Q29tcG9uZW50cygpIGFzICRzb3VyY2VDb21wbGV4KSB7CiAgICAgICAgICAgICAgICAgICAgJGV4dGVuc2lvbk1hcFskc291cmNlQ29tcGxleF0gPSBuZXcgRXh0ZW5zaW9uKCRzb3VyY2VDb21wbGV4LCAkc2ltcGxlLCAkc3Bhbiwgb3B0aW9uYWw6IHRydWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRleHRlbnNpb25zWyRzaW1wbGVdID0gJGV4dGVuc2lvbk1hcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHNlbGVjdG9yID0gJGV4dGVuZGVyLT5leHRlbmRMaXN0KCRzZWxlY3RvciwgJGV4dGVuc2lvbnMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzZWxlY3RvcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBTaW1wbGVTZWxlY3Rvck1hcDxPYmplY3RTZXQ8TW9kaWZpYWJsZUJveDxTZWxlY3Rvckxpc3Q+Pj4gJHNlbGVjdG9ycwogICAgICogQHBhcmFtIFNpbXBsZVNlbGVjdG9yTWFwPENvbXBsZXhTZWxlY3Rvck1hcDxFeHRlbnNpb24+PiAkZXh0ZW5zaW9ucwogICAgICogQHBhcmFtIFNpbXBsZVNlbGVjdG9yTWFwPGxpc3Q8RXh0ZW5zaW9uPj4gJGV4dGVuc2lvbnNCeUV4dGVuZGVyCiAgICAgKiBAcGFyYW0gXFNwbE9iamVjdFN0b3JhZ2U8TW9kaWZpYWJsZUJveDxTZWxlY3Rvckxpc3Q+LCBsaXN0PENzc01lZGlhUXVlcnk+PiAkbWVkaWFDb250ZXh0cwogICAgICogQHBhcmFtIFxTcGxPYmplY3RTdG9yYWdlPFNpbXBsZVNlbGVjdG9yLCBpbnQ+ICRzb3VyY2VTcGVjaWZpY2l0eQogICAgICogQHBhcmFtIFxTcGxPYmplY3RTdG9yYWdlPENvbXBsZXhTZWxlY3RvciwgbWl4ZWQ+ICRvcmlnaW5hbHMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBTaW1wbGVTZWxlY3Rvck1hcCAkc2VsZWN0b3JzLAogICAgICAgIFNpbXBsZVNlbGVjdG9yTWFwICRleHRlbnNpb25zLAogICAgICAgIFNpbXBsZVNlbGVjdG9yTWFwICRleHRlbnNpb25zQnlFeHRlbmRlciwKICAgICAgICBcU3BsT2JqZWN0U3RvcmFnZSAkbWVkaWFDb250ZXh0cywKICAgICAgICBcU3BsT2JqZWN0U3RvcmFnZSAkc291cmNlU3BlY2lmaWNpdHksCiAgICAgICAgXFNwbE9iamVjdFN0b3JhZ2UgJG9yaWdpbmFscywKICAgICAgICBFeHRlbmRNb2RlICRtb2RlLAogICAgKSB7CiAgICAgICAgJHRoaXMtPnNlbGVjdG9ycyA9ICRzZWxlY3RvcnM7CiAgICAgICAgJHRoaXMtPmV4dGVuc2lvbnMgPSAkZXh0ZW5zaW9uczsKICAgICAgICAkdGhpcy0+ZXh0ZW5zaW9uc0J5RXh0ZW5kZXIgPSAkZXh0ZW5zaW9uc0J5RXh0ZW5kZXI7CiAgICAgICAgJHRoaXMtPm1lZGlhQ29udGV4dHMgPSAkbWVkaWFDb250ZXh0czsKICAgICAgICAkdGhpcy0+c291cmNlU3BlY2lmaWNpdHkgPSAkc291cmNlU3BlY2lmaWNpdHk7CiAgICAgICAgJHRoaXMtPm9yaWdpbmFscyA9ICRvcmlnaW5hbHM7CiAgICAgICAgJHRoaXMtPm1vZGUgPSAkbW9kZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZSgpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZvck1vZGUoRXh0ZW5kTW9kZTo6bm9ybWFsKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGb3JNb2RlKEV4dGVuZE1vZGUgJG1vZGUpOiBzZWxmCiAgICB7CiAgICAgICAgLyoqIEB2YXIgXFNwbE9iamVjdFN0b3JhZ2U8TW9kaWZpYWJsZUJveDxTZWxlY3Rvckxpc3Q+LCBsaXN0PENzc01lZGlhUXVlcnk+PiAkbWVkaWFDb250ZXh0cyAqLwogICAgICAgICRtZWRpYUNvbnRleHRzID0gbmV3IFxTcGxPYmplY3RTdG9yYWdlKCk7CiAgICAgICAgLyoqIEB2YXIgXFNwbE9iamVjdFN0b3JhZ2U8U2ltcGxlU2VsZWN0b3IsIGludD4gJHNvdXJjZVNwZWNpZmljaXR5ICovCiAgICAgICAgJHNvdXJjZVNwZWNpZmljaXR5ID0gbmV3IFxTcGxPYmplY3RTdG9yYWdlKCk7CiAgICAgICAgLyoqIEB2YXIgXFNwbE9iamVjdFN0b3JhZ2U8Q29tcGxleFNlbGVjdG9yLCBtaXhlZD4gJG9yaWdpbmFscyAqLwogICAgICAgICRvcmlnaW5hbHMgPSBuZXcgXFNwbE9iamVjdFN0b3JhZ2UoKTsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKAogICAgICAgICAgICBuZXcgU2ltcGxlU2VsZWN0b3JNYXAoKSwKICAgICAgICAgICAgbmV3IFNpbXBsZVNlbGVjdG9yTWFwKCksCiAgICAgICAgICAgIG5ldyBTaW1wbGVTZWxlY3Rvck1hcCgpLAogICAgICAgICAgICAkbWVkaWFDb250ZXh0cywKICAgICAgICAgICAgJHNvdXJjZVNwZWNpZmljaXR5LAogICAgICAgICAgICAkb3JpZ2luYWxzLAogICAgICAgICAgICAkbW9kZSwKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VtcHR5KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gXGNvdW50KCR0aGlzLT5leHRlbnNpb25zKSA9PT0gMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2ltcGxlU2VsZWN0b3JzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3RvX2FycmF5KCR0aGlzLT5zZWxlY3RvcnMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleHRlbnNpb25zV2hlcmVUYXJnZXQoY2FsbGFibGUgJGNhbGxiYWNrKTogaXRlcmFibGUKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZXh0ZW5zaW9ucyBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgIGlmICghJGNhbGxiYWNrKCRzaW1wbGUpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHNvdXJjZXMgPSAkdGhpcy0+ZXh0ZW5zaW9uc1skc2ltcGxlXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRzb3VyY2VzLT5nZXRWYWx1ZXMoKSBhcyAkZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgICAgICBpZiAoJGV4dGVuc2lvbiBpbnN0YW5jZW9mIE1lcmdlZEV4dGVuc2lvbikgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRleHRlbnNpb24tPnVubWVyZ2UoKSBhcyAkbGVhZkV4dGVuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRsZWFmRXh0ZW5zaW9uLT5pc09wdGlvbmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAkbGVhZkV4dGVuc2lvbjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICghJGV4dGVuc2lvbi0+aXNPcHRpb25hbCkgewogICAgICAgICAgICAgICAgICAgIHlpZWxkICRleHRlbnNpb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNlbGVjdG9yKFNlbGVjdG9yTGlzdCAkc2VsZWN0b3IsID9hcnJheSAkbWVkaWFDb250ZXh0KTogQm94CiAgICB7CiAgICAgICAgJG9yaWdpbmFsU2VsZWN0b3IgPSAkc2VsZWN0b3I7CgogICAgICAgIGlmICghJG9yaWdpbmFsU2VsZWN0b3ItPmlzSW52aXNpYmxlKCkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJG9yaWdpbmFsU2VsZWN0b3ItPmdldENvbXBvbmVudHMoKSBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+b3JpZ2luYWxzLT5vZmZzZXRTZXQoJGNvbXBvbmVudCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJHRoaXMtPmV4dGVuc2lvbnMpICE9PSAwKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkc2VsZWN0b3IgPSAkdGhpcy0+ZXh0ZW5kTGlzdCgkb3JpZ2luYWxTZWxlY3RvciwgJHRoaXMtPmV4dGVuc2lvbnMsICRtZWRpYUNvbnRleHQpOwogICAgICAgICAgICB9IGNhdGNoIChTYXNzRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2ltcGxlU2Fzc0V4Y2VwdGlvbigiRnJvbSB7JGUtPmdldFNwYW4oKS0+bWVzc2FnZSgnJyl9XG4iIC4gJGUtPmdldE9yaWdpbmFsTWVzc2FnZSgpLCAkZS0+Z2V0U3BhbigpLCAkZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRtb2RpZmlhYmxlU2VsZWN0b3IgPSBuZXcgTW9kaWZpYWJsZUJveCgkc2VsZWN0b3IpOwoKICAgICAgICBpZiAoJG1lZGlhQ29udGV4dCAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+bWVkaWFDb250ZXh0cy0+b2Zmc2V0U2V0KCRtb2RpZmlhYmxlU2VsZWN0b3IsICRtZWRpYUNvbnRleHQpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnJlZ2lzdGVyU2VsZWN0b3IoJHNlbGVjdG9yLCAkbW9kaWZpYWJsZVNlbGVjdG9yKTsKCiAgICAgICAgcmV0dXJuICRtb2RpZmlhYmxlU2VsZWN0b3ItPnNlYWwoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyB0aGUge0BzZWUgU2ltcGxlU2VsZWN0b3J9cyBpbiAkbGlzdCB0byBwb2ludCB0byAkc2VsZWN0b3IgaW4KICAgICAqIHtAc2VlIHNlbGVjdG9yc30uCiAgICAgKgogICAgICogQHBhcmFtIE1vZGlmaWFibGVCb3g8U2VsZWN0b3JMaXN0PiAkc2VsZWN0b3IKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWdpc3RlclNlbGVjdG9yKFNlbGVjdG9yTGlzdCAkbGlzdCwgTW9kaWZpYWJsZUJveCAkc2VsZWN0b3IpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGxpc3QtPmdldENvbXBvbmVudHMoKSBhcyAkY29tcGxleCkgewogICAgICAgICAgICBmb3JlYWNoICgkY29tcGxleC0+Z2V0Q29tcG9uZW50cygpIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjb21wb25lbnQtPmdldFNlbGVjdG9yKCktPmdldENvbXBvbmVudHMoKSBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+c2VsZWN0b3JzWyRzaW1wbGVdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAvKiogQHZhciBPYmplY3RTZXQ8TW9kaWZpYWJsZUJveDxTZWxlY3Rvckxpc3Q+PiAkc2V0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICRzZXQgPSBuZXcgT2JqZWN0U2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZWxlY3RvcnMtPm9mZnNldFNldCgkc2ltcGxlLCAkc2V0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlbGVjdG9yc1skc2ltcGxlXS0+YWRkKCRzZWxlY3Rvcik7CgogICAgICAgICAgICAgICAgICAgIGlmICgkc2ltcGxlIGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IgJiYgJHNpbXBsZS0+Z2V0U2VsZWN0b3IoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmVnaXN0ZXJTZWxlY3Rvcigkc2ltcGxlLT5nZXRTZWxlY3RvcigpLCAkc2VsZWN0b3IpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRXh0ZW5zaW9uKFNlbGVjdG9yTGlzdCAkZXh0ZW5kZXIsIFNpbXBsZVNlbGVjdG9yICR0YXJnZXQsIEV4dGVuZFJ1bGUgJGV4dGVuZCwgP2FycmF5ICRtZWRpYUNvbnRleHQpOiB2b2lkCiAgICB7CiAgICAgICAgJHNlbGVjdG9ycyA9ICR0aGlzLT5zZWxlY3RvcnNbJHRhcmdldF0gPz8gbnVsbDsKICAgICAgICAkZXhpc3RpbmdFeHRlbnNpb25zID0gJHRoaXMtPmV4dGVuc2lvbnNCeUV4dGVuZGVyWyR0YXJnZXRdID8/IG51bGw7CgogICAgICAgICRuZXdFeHRlbnNpb25zID0gbnVsbDsKICAgICAgICAkc291cmNlcyA9ICR0aGlzLT5leHRlbnNpb25zWyR0YXJnZXRdID8/PSBuZXcgQ29tcGxleFNlbGVjdG9yTWFwKCk7CgogICAgICAgIGZvcmVhY2ggKCRleHRlbmRlci0+Z2V0Q29tcG9uZW50cygpIGFzICRjb21wbGV4KSB7CiAgICAgICAgICAgIGlmICgkY29tcGxleC0+aXNVc2VsZXNzKCkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZXh0ZW5zaW9uID0gbmV3IEV4dGVuc2lvbigkY29tcGxleCwgJHRhcmdldCwgJGV4dGVuZC0+Z2V0U3BhbigpLCAkbWVkaWFDb250ZXh0LCAkZXh0ZW5kLT5pc09wdGlvbmFsKCkpOwoKICAgICAgICAgICAgJGV4aXN0aW5nRXh0ZW5zaW9uID0gJHNvdXJjZXNbJGNvbXBsZXhdID8/IG51bGw7CgogICAgICAgICAgICBpZiAoJGV4aXN0aW5nRXh0ZW5zaW9uICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFscmVhZHkgYW4gZXh0ZW5kIGZyb20gJGV4dGVuZGVyIHRvICR0YXJnZXQsIHdlIGRvbid0IG5lZWQKICAgICAgICAgICAgICAgIC8vIHRvIHJlLXJ1biB0aGUgZXh0ZW5zaW9uLiBXZSBtYXkgbmVlZCB0byBtYXJrIHRoZSBleHRlbnNpb24gYXMKICAgICAgICAgICAgICAgIC8vIG1hbmRhdG9yeSwgdGhvdWdoLgogICAgICAgICAgICAgICAgJHNvdXJjZXNbJGNvbXBsZXhdID0gTWVyZ2VkRXh0ZW5zaW9uOjptZXJnZSgkZXhpc3RpbmdFeHRlbnNpb24sICRleHRlbnNpb24pOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzb3VyY2VzWyRjb21wbGV4XSA9ICRleHRlbnNpb247CgogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+c2ltcGxlU2VsZWN0b3JzKCRjb21wbGV4KSBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgICAgICAkZXh0ZW5zaW9uc0J5RXh0ZW5kZXIgPSAkdGhpcy0+ZXh0ZW5zaW9uc0J5RXh0ZW5kZXJbJHNpbXBsZV0gPz8gW107CiAgICAgICAgICAgICAgICAkZXh0ZW5zaW9uc0J5RXh0ZW5kZXJbXSA9ICRleHRlbnNpb247CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXh0ZW5zaW9uc0J5RXh0ZW5kZXJbJHNpbXBsZV0gPSAkZXh0ZW5zaW9uc0J5RXh0ZW5kZXI7CgogICAgICAgICAgICAgICAgLy8gT25seSBzb3VyY2Ugc3BlY2lmaWNpdHkgZm9yIHRoZSBvcmlnaW5hbCBzZWxlY3RvciBpcyByZWxldmFudC4KICAgICAgICAgICAgICAgIC8vIFNlbGVjdG9ycyBnZW5lcmF0ZWQgYnkgYEBleHRlbmRgIGRvbid0IGdldCBuZXcgc3BlY2lmaWNpdHkuCiAgICAgICAgICAgICAgICAkdGhpcy0+c291cmNlU3BlY2lmaWNpdHlbJHNpbXBsZV0gPz89ICRjb21wbGV4LT5nZXRTcGVjaWZpY2l0eSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNlbGVjdG9ycyAhPT0gbnVsbCB8fCAkZXhpc3RpbmdFeHRlbnNpb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAvKiogQHZhciBDb21wbGV4U2VsZWN0b3JNYXA8RXh0ZW5zaW9uPiAkbmV3RXh0ZW5zaW9ucyAqLwogICAgICAgICAgICAgICAgJG5ld0V4dGVuc2lvbnMgPz89IG5ldyBDb21wbGV4U2VsZWN0b3JNYXAoKTsKICAgICAgICAgICAgICAgICRuZXdFeHRlbnNpb25zWyRjb21wbGV4XSA9ICRleHRlbnNpb247CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkbmV3RXh0ZW5zaW9ucyA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBTaW1wbGVTZWxlY3Rvck1hcDxDb21wbGV4U2VsZWN0b3JNYXA8RXh0ZW5zaW9uPj4gJG5ld0V4dGVuc2lvbnNCeVRhcmdldCAqLwogICAgICAgICRuZXdFeHRlbnNpb25zQnlUYXJnZXQgPSBuZXcgU2ltcGxlU2VsZWN0b3JNYXAoKTsKICAgICAgICAkbmV3RXh0ZW5zaW9uc0J5VGFyZ2V0WyR0YXJnZXRdID0gJG5ld0V4dGVuc2lvbnM7CgogICAgICAgIGlmICgkZXhpc3RpbmdFeHRlbnNpb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgIC8vIFJlbG9hZCB0aGUgbGlzdCBvZiBleGlzdGluZyBleHRlbnNpb25zIGFzIGl0IGlzIGFuIGFycmF5LCBub3QgYW4gb2JqZWN0LgogICAgICAgICAgICAkZXhpc3RpbmdFeHRlbnNpb25zID0gJHRoaXMtPmV4dGVuc2lvbnNCeUV4dGVuZGVyWyR0YXJnZXRdOwogICAgICAgICAgICAkYWRkaXRpb25hbEV4dGVuc2lvbnMgPSAkdGhpcy0+ZXh0ZW5kRXhpc3RpbmdFeHRlbnNpb25zKCRleGlzdGluZ0V4dGVuc2lvbnMsICRuZXdFeHRlbnNpb25zQnlUYXJnZXQpOwoKICAgICAgICAgICAgaWYgKCRhZGRpdGlvbmFsRXh0ZW5zaW9ucyAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgVXRpbDo6bWFwQWRkQWxsMigkbmV3RXh0ZW5zaW9uc0J5VGFyZ2V0LCAkYWRkaXRpb25hbEV4dGVuc2lvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNlbGVjdG9ycyAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+ZXh0ZW5kRXhpc3RpbmdTZWxlY3RvcnMoJHNlbGVjdG9ycywgJG5ld0V4dGVuc2lvbnNCeVRhcmdldCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpdGVyYWJsZSBvZiBhbGwgc2ltcGxlIHNlbGVjdG9ycyBpbiAkY29tcGxleC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGl0ZXJhYmxlPFNpbXBsZVNlbGVjdG9yPgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNpbXBsZVNlbGVjdG9ycyhDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpOiBpdGVyYWJsZQogICAgewogICAgICAgIGZvcmVhY2ggKCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkgYXMgJGNvbXBvbmVudCkgewogICAgICAgICAgICBmb3JlYWNoICgkY29tcG9uZW50LT5nZXRTZWxlY3RvcigpLT5nZXRDb21wb25lbnRzKCkgYXMgJHNpbXBsZSkgewogICAgICAgICAgICAgICAgeWllbGQgJHNpbXBsZTsKCiAgICAgICAgICAgICAgICBpZiAoJHNpbXBsZSBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yICYmICRzaW1wbGUtPmdldFNlbGVjdG9yKCkgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2ltcGxlLT5nZXRTZWxlY3RvcigpLT5nZXRDb21wb25lbnRzKCkgYXMgJHBzZXVkb0NvbXBsZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSAkdGhpcy0+c2ltcGxlU2VsZWN0b3JzKCRwc2V1ZG9Db21wbGV4KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHRlbmQgJGV4dGVuc2lvbnMgdXNpbmcgJG5ld0V4dGVuc2lvbnMuCiAgICAgKgogICAgICogTm90ZSB0aGF0IHRoaXMgZG9lcyBkdXBsaWNhdGUgc29tZSB3b3JrIGRvbmUgYnkKICAgICAqIHtAc2VlIGV4dGVuZEV4aXN0aW5nU2VsZWN0b3JzfSwgYnV0IGl0J3MgbmVjZXNzYXJ5IHRvIGV4cGFuZCBlYWNoIGV4dGVuc2lvbidzCiAgICAgKiBleHRlbmRlciBzZXBhcmF0ZWx5IHdpdGhvdXQgcmVmZXJlbmNlIHRvIHRoZSBmdWxsIHNlbGVjdG9yIGxpc3QsIHNvIHRoYXQKICAgICAqIHJlbGV2YW50IHJlc3VsdHMgZG9uJ3QgZ2V0IHRyaW1tZWQgdG9vIGVhcmx5LgogICAgICoKICAgICAqIFJldHVybnMgZXh0ZW5zaW9ucyB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byAkbmV3RXh0ZW5zaW9ucyBiZWZvcmUKICAgICAqIGV4dGVuZGluZyBzZWxlY3RvcnMgaW4gb3JkZXIgdG8gcHJvcGVybHkgaGFuZGxlIGV4dGVuc2lvbiBsb29wcyBzdWNoIGFzOgogICAgICoKICAgICAqICAgICAuYyB7eDogeTsgQGV4dGVuZCAuYX0KICAgICAqICAgICAueC55LmEge0BleHRlbmQgLmJ9CiAgICAgKiAgICAgLnouYiB7QGV4dGVuZCAuY30KICAgICAqCiAgICAgKiBSZXR1cm5zIGBudWxsYCBpZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyB0byBhZGQuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8RXh0ZW5zaW9uPiAkZXh0ZW5zaW9ucwogICAgICogQHBhcmFtIFNpbXBsZVNlbGVjdG9yTWFwPENvbXBsZXhTZWxlY3Rvck1hcDxFeHRlbnNpb24+PiAkbmV3RXh0ZW5zaW9ucwogICAgICogQHJldHVybiBTaW1wbGVTZWxlY3Rvck1hcDxDb21wbGV4U2VsZWN0b3JNYXA8RXh0ZW5zaW9uPj58bnVsbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4dGVuZEV4aXN0aW5nRXh0ZW5zaW9ucyhhcnJheSAkZXh0ZW5zaW9ucywgU2ltcGxlU2VsZWN0b3JNYXAgJG5ld0V4dGVuc2lvbnMpOiA/U2ltcGxlU2VsZWN0b3JNYXAKICAgIHsKICAgICAgICAkYWRkaXRpb25hbEV4dGVuc2lvbnMgPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkZXh0ZW5zaW9ucyBhcyAkZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgICRzb3VyY2VzID0gJHRoaXMtPmV4dGVuc2lvbnNbJGV4dGVuc2lvbi0+dGFyZ2V0XTsKCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkc2VsZWN0b3JzID0gJHRoaXMtPmV4dGVuZENvbXBsZXgoJGV4dGVuc2lvbi0+ZXh0ZW5kZXItPnNlbGVjdG9yLCAkbmV3RXh0ZW5zaW9ucywgJGV4dGVuc2lvbi0+bWVkaWFDb250ZXh0KTsKCiAgICAgICAgICAgICAgICBpZiAoJHNlbGVjdG9ycyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChTYXNzRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkZS0+d2l0aEFkZGl0aW9uYWxTcGFuKCRleHRlbnNpb24tPmV4dGVuZGVyLT5zZWxlY3Rvci0+Z2V0U3BhbigpLCAndGFyZ2V0IHNlbGVjdG9yJywgJGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgb3V0cHV0IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBjb21wbGV4IHNlbGVjdG9yLCB0aGVyZSdzIG5vIG5lZWQKICAgICAgICAgICAgLy8gdG8gcmVjcmVhdGUgaXQuCiAgICAgICAgICAgICRjb250YWluc0V4dGVuc2lvbiA9IEVxdWF0YWJsZVV0aWw6OmVxdWFscygkc2VsZWN0b3JzWzBdLCAkZXh0ZW5zaW9uLT5leHRlbmRlci0+c2VsZWN0b3IpOwogICAgICAgICAgICBpZiAoJGNvbnRhaW5zRXh0ZW5zaW9uKSB7CiAgICAgICAgICAgICAgICAkc2VsZWN0b3JzID0gYXJyYXlfc2xpY2UoJHNlbGVjdG9ycywgMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJGNvbXBsZXgpIHsKICAgICAgICAgICAgICAgICR3aXRoRXh0ZW5kZXIgPSAkZXh0ZW5zaW9uLT53aXRoRXh0ZW5kZXIoJGNvbXBsZXgpOwoKICAgICAgICAgICAgICAgICRleGlzdGluZ0V4dGVuc2lvbiA9ICRzb3VyY2VzWyRjb21wbGV4XSA/PyBudWxsOwogICAgICAgICAgICAgICAgaWYgKCRleGlzdGluZ0V4dGVuc2lvbiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICRzb3VyY2VzWyRjb21wbGV4XSA9IE1lcmdlZEV4dGVuc2lvbjo6bWVyZ2UoJGV4aXN0aW5nRXh0ZW5zaW9uLCAkd2l0aEV4dGVuZGVyKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHNvdXJjZXNbJGNvbXBsZXhdID0gJHdpdGhFeHRlbmRlcjsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKSBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjb21wb25lbnQtPmdldFNlbGVjdG9yKCktPmdldENvbXBvbmVudHMoKSBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXh0ZW5zaW9uc0J5RXh0ZW5kZXIgPSAkdGhpcy0+ZXh0ZW5zaW9uc0J5RXh0ZW5kZXJbJHNpbXBsZV0gPz8gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXh0ZW5zaW9uc0J5RXh0ZW5kZXJbXSA9ICR3aXRoRXh0ZW5kZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZXh0ZW5zaW9uc0J5RXh0ZW5kZXJbJHNpbXBsZV0gPSAkZXh0ZW5zaW9uc0J5RXh0ZW5kZXI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkbmV3RXh0ZW5zaW9ucy0+b2Zmc2V0RXhpc3RzKCRleHRlbnNpb24tPnRhcmdldCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB2YXIgU2ltcGxlU2VsZWN0b3JNYXA8Q29tcGxleFNlbGVjdG9yTWFwPEV4dGVuc2lvbj4+ICRhZGRpdGlvbmFsRXh0ZW5zaW9ucyAqLwogICAgICAgICAgICAgICAgICAgICAgICAkYWRkaXRpb25hbEV4dGVuc2lvbnMgPz89IG5ldyBTaW1wbGVTZWxlY3Rvck1hcCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkYWRkaXRpb25hbEV4dGVuc2lvbnNbJGV4dGVuc2lvbi0+dGFyZ2V0XSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdmFyIENvbXBsZXhTZWxlY3Rvck1hcDxFeHRlbnNpb24+ICRhZGRpdGlvbmFsU291cmNlcyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFkZGl0aW9uYWxTb3VyY2VzID0gbmV3IENvbXBsZXhTZWxlY3Rvck1hcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFkZGl0aW9uYWxFeHRlbnNpb25zWyRleHRlbnNpb24tPnRhcmdldF0gPSAkYWRkaXRpb25hbFNvdXJjZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWRkaXRpb25hbFNvdXJjZXMgPSAkYWRkaXRpb25hbEV4dGVuc2lvbnNbJGV4dGVuc2lvbi0+dGFyZ2V0XTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZGl0aW9uYWxTb3VyY2VzWyRjb21wbGV4XSA9ICR3aXRoRXh0ZW5kZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGFkZGl0aW9uYWxFeHRlbnNpb25zOwogICAgfQoKICAgIC8qKgogICAgICogRXh0ZW5kICRzZWxlY3RvcnMgdXNpbmcgJG5ld0V4dGVuc2lvbnMuCiAgICAgKgogICAgICogQHBhcmFtIE9iamVjdFNldDxNb2RpZmlhYmxlQm94PFNlbGVjdG9yTGlzdD4+ICRzZWxlY3RvcnMKICAgICAqIEBwYXJhbSBTaW1wbGVTZWxlY3Rvck1hcDxDb21wbGV4U2VsZWN0b3JNYXA8RXh0ZW5zaW9uPj4gJG5ld0V4dGVuc2lvbnMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBleHRlbmRFeGlzdGluZ1NlbGVjdG9ycyhPYmplY3RTZXQgJHNlbGVjdG9ycywgU2ltcGxlU2VsZWN0b3JNYXAgJG5ld0V4dGVuc2lvbnMpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHNlbGVjdG9ycyBhcyAkc2VsZWN0b3IpIHsKICAgICAgICAgICAgJG9sZFZhbHVlID0gJHNlbGVjdG9yLT5nZXRWYWx1ZSgpOwoKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRzZWxlY3Rvci0+c2V0VmFsdWUoJHRoaXMtPmV4dGVuZExpc3QoJHNlbGVjdG9yLT5nZXRWYWx1ZSgpLCAkbmV3RXh0ZW5zaW9ucywgJHRoaXMtPm1lZGlhQ29udGV4dHNbJHNlbGVjdG9yXSA/PyBudWxsKSk7CiAgICAgICAgICAgIH0gY2F0Y2ggKFNhc3NFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBTaW1wbGVTYXNzRXhjZXB0aW9uKCJGcm9tIHskb2xkVmFsdWUtPmdldFNwYW4oKS0+bWVzc2FnZSgnJyl9XG4iIC4gJGUtPmdldE9yaWdpbmFsTWVzc2FnZSgpLCAkZS0+Z2V0U3BhbigpLCAkZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIG5vIGV4dGVuZHMgYWN0dWFsbHkgaGFwcGVuZWQgKGZvciBleGFtcGxlIGJlY2F1c2UgdW5pZmljYXRpb24KICAgICAgICAgICAgLy8gZmFpbGVkKSwgd2UgZG9uJ3QgbmVlZCB0byByZS1yZWdpc3RlciB0aGUgc2VsZWN0b3IuCiAgICAgICAgICAgIGlmICgkb2xkVmFsdWUgPT09ICRzZWxlY3Rvci0+Z2V0VmFsdWUoKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnJlZ2lzdGVyU2VsZWN0b3IoJHNlbGVjdG9yLT5nZXRWYWx1ZSgpLCAkc2VsZWN0b3IpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpdGVyYWJsZTxFeHRlbnNpb25TdG9yZT4gJGV4dGVuc2lvblN0b3JlcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRXh0ZW5zaW9ucyhpdGVyYWJsZSAkZXh0ZW5zaW9uU3RvcmVzKTogdm9pZAogICAgewogICAgICAgIC8qKiBAdmFyIGxpc3Q8RXh0ZW5zaW9uPnxudWxsICRleHRlbnNpb25zVG9FeHRlbmQgKi8KICAgICAgICAkZXh0ZW5zaW9uc1RvRXh0ZW5kID0gbnVsbDsKICAgICAgICAkc2VsZWN0b3JzVG9FeHRlbmQgPSBudWxsOwogICAgICAgICRuZXdFeHRlbnNpb25zID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJGV4dGVuc2lvblN0b3JlcyBhcyAkZXh0ZW5zaW9uU3RvcmUpIHsKICAgICAgICAgICAgaWYgKCRleHRlbnNpb25TdG9yZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBcYXNzZXJ0KCRleHRlbnNpb25TdG9yZSBpbnN0YW5jZW9mIENvbmNyZXRlRXh0ZW5zaW9uU3RvcmUpOwogICAgICAgICAgICAkdGhpcy0+c291cmNlU3BlY2lmaWNpdHktPmFkZEFsbCgkZXh0ZW5zaW9uU3RvcmUtPnNvdXJjZVNwZWNpZmljaXR5KTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRleHRlbnNpb25TdG9yZS0+ZXh0ZW5zaW9ucyBhcyAkdGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAkbmV3U291cmNlcyA9ICRleHRlbnNpb25TdG9yZS0+ZXh0ZW5zaW9ucy0+Z2V0SW5mbygpOwoKICAgICAgICAgICAgICAgIC8vIFByaXZhdGUgc2VsZWN0b3JzIGNhbid0IGJlIGV4dGVuZGVkIGFjcm9zcyBtb2R1bGUgYm91bmRhcmllcy4KICAgICAgICAgICAgICAgIGlmICgkdGFyZ2V0IGluc3RhbmNlb2YgUGxhY2Vob2xkZXJTZWxlY3RvciAmJiAkdGFyZ2V0LT5pc1ByaXZhdGUoKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRleHRlbnNpb25zRm9yVGFyZ2V0ID0gJHRoaXMtPmV4dGVuc2lvbnNCeUV4dGVuZGVyWyR0YXJnZXRdID8/IG51bGw7CiAgICAgICAgICAgICAgICBpZiAoJGV4dGVuc2lvbnNGb3JUYXJnZXQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkZXh0ZW5zaW9uc1RvRXh0ZW5kID8/PSBbXTsKICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRleHRlbnNpb25zVG9FeHRlbmQsIC4uLiRleHRlbnNpb25zRm9yVGFyZ2V0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBGaW5kIGV4aXN0aW5nIHNlbGVjdG9ycyB0byBleHRlbmQuCiAgICAgICAgICAgICAgICAkc2VsZWN0b3JzRm9yVGFyZ2V0ID0gJHRoaXMtPnNlbGVjdG9yc1skdGFyZ2V0XSA/PyBudWxsOwogICAgICAgICAgICAgICAgaWYgKCRzZWxlY3RvcnNGb3JUYXJnZXQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHNlbGVjdG9yc1RvRXh0ZW5kID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdmFyIE9iamVjdFNldDxNb2RpZmlhYmxlQm94PFNlbGVjdG9yTGlzdD4+ICRzZWxlY3RvcnNUb0V4dGVuZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3JzVG9FeHRlbmQgPSBuZXcgT2JqZWN0U2V0KCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRzZWxlY3RvcnNUb0V4dGVuZC0+YWRkQWxsKCRzZWxlY3RvcnNGb3JUYXJnZXQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRleGlzdGluZ1NvdXJjZXMgPSAkdGhpcy0+ZXh0ZW5zaW9uc1skdGFyZ2V0XSA/PyBudWxsOwogICAgICAgICAgICAgICAgaWYgKCRleGlzdGluZ1NvdXJjZXMgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkbmV3U291cmNlcyBhcyAkZXh0ZW5kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGV4dGVuc2lvbiA9ICRuZXdTb3VyY2VzLT5nZXRJbmZvKCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGV4aXN0aW5nU291cmNlc1skZXh0ZW5kZXJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV4dGVuc2lvbiA9IE1lcmdlZEV4dGVuc2lvbjo6bWVyZ2UoJGV4aXN0aW5nU291cmNlc1skZXh0ZW5kZXJdLCAkZXh0ZW5zaW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkZXhpc3RpbmdTb3VyY2VzWyRleHRlbmRlcl0gPSAkZXh0ZW5zaW9uOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRleHRlbnNpb25zRm9yVGFyZ2V0ICE9PSBudWxsIHx8ICRzZWxlY3RvcnNGb3JUYXJnZXQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBAdmFyIFNpbXBsZVNlbGVjdG9yTWFwPENvbXBsZXhTZWxlY3Rvck1hcDxFeHRlbnNpb24+PiAkbmV3RXh0ZW5zaW9ucyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0V4dGVuc2lvbnMgPz89IG5ldyBTaW1wbGVTZWxlY3Rvck1hcCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJG5ld0V4dGVuc2lvbnNbJHRhcmdldF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB2YXIgQ29tcGxleFNlbGVjdG9yTWFwPEV4dGVuc2lvbj4gJG5ld01hcCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdNYXAgPSBuZXcgQ29tcGxleFNlbGVjdG9yTWFwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0V4dGVuc2lvbnNbJHRhcmdldF0gPSAkbmV3TWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0V4dGVuc2lvbnNbJHRhcmdldF1bJGV4dGVuZGVyXSA9ICRleHRlbnNpb247CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5leHRlbnNpb25zWyR0YXJnZXRdID0gY2xvbmUgJG5ld1NvdXJjZXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRleHRlbnNpb25zRm9yVGFyZ2V0ICE9PSBudWxsIHx8ICRzZWxlY3RvcnNGb3JUYXJnZXQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB2YXIgU2ltcGxlU2VsZWN0b3JNYXA8Q29tcGxleFNlbGVjdG9yTWFwPEV4dGVuc2lvbj4+ICRuZXdFeHRlbnNpb25zICovCiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdFeHRlbnNpb25zID8/PSBuZXcgU2ltcGxlU2VsZWN0b3JNYXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0V4dGVuc2lvbnNbJHRhcmdldF0gPSBjbG9uZSAkbmV3U291cmNlczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkbmV3RXh0ZW5zaW9ucyAhPT0gbnVsbCkgewogICAgICAgICAgICAvLyBXZSBjYW4gaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgaGVyZSBiZWNhdXNlIGl0J3Mgb25seSB1c2VmdWwgZm9yIGV4dGVuZAogICAgICAgICAgICAvLyBsb29wcywgd2hpY2ggY2FuJ3QgZXhpc3QgYWNyb3NzIG1vZHVsZSBib3VuZGFyaWVzLgogICAgICAgICAgICBpZiAoJGV4dGVuc2lvbnNUb0V4dGVuZCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmV4dGVuZEV4aXN0aW5nRXh0ZW5zaW9ucygkZXh0ZW5zaW9uc1RvRXh0ZW5kLCAkbmV3RXh0ZW5zaW9ucyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkc2VsZWN0b3JzVG9FeHRlbmQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5leHRlbmRFeGlzdGluZ1NlbGVjdG9ycygkc2VsZWN0b3JzVG9FeHRlbmQsICRuZXdFeHRlbnNpb25zKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEV4dGVuZHMgJGxpc3QgdXNpbmcgJGV4dGVuc2lvbnMuCiAgICAgKgogICAgICogQHBhcmFtIFNpbXBsZVNlbGVjdG9yTWFwPENvbXBsZXhTZWxlY3Rvck1hcDxFeHRlbnNpb24+PiAkZXh0ZW5zaW9ucwogICAgICogQHBhcmFtIGxpc3Q8Q3NzTWVkaWFRdWVyeT58bnVsbCAkbWVkaWFRdWVyeUNvbnRleHQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBleHRlbmRMaXN0KFNlbGVjdG9yTGlzdCAkbGlzdCwgU2ltcGxlU2VsZWN0b3JNYXAgJGV4dGVuc2lvbnMsID9hcnJheSAkbWVkaWFRdWVyeUNvbnRleHQgPSBudWxsKTogU2VsZWN0b3JMaXN0CiAgICB7CiAgICAgICAgJGV4dGVuZGVkID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJGxpc3QtPmdldENvbXBvbmVudHMoKSBhcyAkaSA9PiAkY29tcGxleCkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmV4dGVuZENvbXBsZXgoJGNvbXBsZXgsICRleHRlbnNpb25zLCAkbWVkaWFRdWVyeUNvbnRleHQpOwoKICAgICAgICAgICAgXGFzc2VydCgkcmVzdWx0ID09PSBudWxsIHx8IFxjb3VudCgkcmVzdWx0KSA+IDAsICJleHRlbmRDb21wbGV4KCRjb21wbGV4KSBzaG91bGQgcmV0dXJuIG51bGwgcmF0aGVyIHRoYW4gW10gaWYgZXh0ZW5zaW9uIGZhaWxzLiIpOwoKICAgICAgICAgICAgaWYgKCRyZXN1bHQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmICgkZXh0ZW5kZWQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkZXh0ZW5kZWRbXSA9ICRjb21wbGV4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGV4dGVuZGVkID8/PSAkaSA9PT0gMCA/IFtdIDogYXJyYXlfc2xpY2UoJGxpc3QtPmdldENvbXBvbmVudHMoKSwgMCwgJGkpOwogICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkZXh0ZW5kZWQsIC4uLiRyZXN1bHQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGV4dGVuZGVkID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbGlzdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgU2VsZWN0b3JMaXN0KCR0aGlzLT50cmltKCRleHRlbmRlZCwgJHRoaXMtPm9yaWdpbmFscy0+b2Zmc2V0RXhpc3RzKC4uLikpLCAkbGlzdC0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEV4dGVuZHMgJGNvbXBsZXggdXNpbmcgJGV4dGVuc2lvbnMsIGFuZCByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBhCiAgICAgKiB7QHNlZSBTZWxlY3Rvckxpc3R9LgogICAgICoKICAgICAqIEBwYXJhbSBTaW1wbGVTZWxlY3Rvck1hcDxDb21wbGV4U2VsZWN0b3JNYXA8RXh0ZW5zaW9uPj4gJGV4dGVuc2lvbnMKICAgICAqIEBwYXJhbSBsaXN0PENzc01lZGlhUXVlcnk+fG51bGwgJG1lZGlhUXVlcnlDb250ZXh0CiAgICAgKiBAcmV0dXJuIGxpc3Q8Q29tcGxleFNlbGVjdG9yPnxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXh0ZW5kQ29tcGxleChDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgsIFNpbXBsZVNlbGVjdG9yTWFwICRleHRlbnNpb25zLCA/YXJyYXkgJG1lZGlhUXVlcnlDb250ZXh0KTogP2FycmF5CiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCkpID4gMSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vIFRoZSBjb21wbGV4IHNlbGVjdG9ycyB0aGF0IGVhY2ggY29tcG91bmQgc2VsZWN0b3IgaW4gJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKQogICAgICAgIC8vIGNhbiBleHBhbmQgdG8uCiAgICAgICAgLy8KICAgICAgICAvLyBGb3IgZXhhbXBsZSwgZ2l2ZW4KICAgICAgICAvLwogICAgICAgIC8vICAgICAuYSAuYiB7Li4ufQogICAgICAgIC8vICAgICAueCAueSB7QGV4dGVuZCAuYn0KICAgICAgICAvLwogICAgICAgIC8vIHRoaXMgd2lsbCBjb250YWluCiAgICAgICAgLy8KICAgICAgICAvLyAgICAgWwogICAgICAgIC8vICAgICAgIFsuYV0sCiAgICAgICAgLy8gICAgICAgWy5iLCAueCAueV0KICAgICAgICAvLyAgICAgXQogICAgICAgIC8vCiAgICAgICAgJGV4dGVuZGVkTm90RXhwYW5kZWQgPSBudWxsOwogICAgICAgICRpc09yaWdpbmFsID0gJHRoaXMtPm9yaWdpbmFscy0+b2Zmc2V0RXhpc3RzKCRjb21wbGV4KTsKCiAgICAgICAgZm9yZWFjaCAoJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKSBhcyAkaSA9PiAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICRleHRlbmRlZCA9ICR0aGlzLT5leHRlbmRDb21wb3VuZCgkY29tcG9uZW50LCAkZXh0ZW5zaW9ucywgJG1lZGlhUXVlcnlDb250ZXh0LCAkaXNPcmlnaW5hbCk7CgogICAgICAgICAgICBcYXNzZXJ0KCRleHRlbmRlZCA9PT0gbnVsbCB8fCBcY291bnQoJGV4dGVuZGVkKSA+IDAsICJleHRlbmRDb21wb3VuZCgkY29tcG9uZW50KSBzaG91bGQgcmV0dXJuIG51bGwgcmF0aGVyIHRoYW4gW10gaWYgZXh0ZW5zaW9uIGZhaWxzLiIpOwoKICAgICAgICAgICAgaWYgKCRleHRlbmRlZCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKCRleHRlbmRlZE5vdEV4cGFuZGVkICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgJGV4dGVuZGVkTm90RXhwYW5kZWRbXSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENvbXBsZXhTZWxlY3RvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyRjb21wb25lbnRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXgtPmdldFNwYW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21wbGV4LT5nZXRMaW5lQnJlYWsoKQogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkZXh0ZW5kZWROb3RFeHBhbmRlZCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGV4dGVuZGVkTm90RXhwYW5kZWRbXSA9ICRleHRlbmRlZDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRpICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkZXh0ZW5kZWROb3RFeHBhbmRlZCA9IFsKICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDb21wbGV4U2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9zbGljZSgkY29tcGxleC0+Z2V0Q29tcG9uZW50cygpLCAwLCAkaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tcGxleC0+Z2V0U3BhbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXgtPmdldExpbmVCcmVhaygpLAogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgJGV4dGVuZGVkLAogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfSBlbHNlaWYgKFxjb3VudCgkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCkpID09PSAwKSB7CiAgICAgICAgICAgICAgICAkZXh0ZW5kZWROb3RFeHBhbmRlZCA9IFskZXh0ZW5kZWRdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG5ld0V4dGVuZGVkID0gW107CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGV4dGVuZGVkIGFzICRuZXdDb21wbGV4KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBcY291bnQoJG5ld0NvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpKSA9PT0gMAogICAgICAgICAgICAgICAgICAgICAgICB8fCBFcXVhdGFibGVVdGlsOjpsaXN0RXF1YWxzKCRjb21wbGV4LT5nZXRMZWFkaW5nQ29tYmluYXRvcnMoKSwgJG5ld0NvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkbmV3RXh0ZW5kZWRbXSA9IG5ldyBDb21wbGV4U2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3Q29tcGxleC0+Z2V0Q29tcG9uZW50cygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXgtPmdldFNwYW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21wbGV4LT5nZXRMaW5lQnJlYWsoKSB8fCAkbmV3Q29tcGxleC0+Z2V0TGluZUJyZWFrKCksCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRleHRlbmRlZE5vdEV4cGFuZGVkID0gWyRuZXdFeHRlbmRlZF07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkZXh0ZW5kZWROb3RFeHBhbmRlZCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRmaXJzdCA9IHRydWU7CgogICAgICAgIHJldHVybiBpdGVyYXRvcl90b19hcnJheShzZWxmOjpleHBhbmRJdGVyYWJsZShFeHRlbmRVdGlsOjpwYXRocygkZXh0ZW5kZWROb3RFeHBhbmRlZCksIGZ1bmN0aW9uICgkcGF0aCkgdXNlICgmJGZpcnN0LCAkY29tcGxleCkgewogICAgICAgICAgICByZXR1cm4gYXJyYXlfbWFwKGZ1bmN0aW9uIChDb21wbGV4U2VsZWN0b3IgJG91dHB1dENvbXBsZXgpIHVzZSAoJiRmaXJzdCwgJGNvbXBsZXgpIHsKICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGNvcGllcyBvZiAkY29tcGxleCByZXRhaW4gdGhlaXIgc3RhdHVzIGFzICJvcmlnaW5hbCIKICAgICAgICAgICAgICAgIC8vIHNlbGVjdG9ycy4gVGhpcyBpbmNsdWRlcyBzZWxlY3RvcnMgdGhhdCBhcmUgbW9kaWZpZWQgYmVjYXVzZSBhIDpub3QoKQogICAgICAgICAgICAgICAgLy8gd2FzIGV4dGVuZGVkIGludG8uCiAgICAgICAgICAgICAgICBpZiAoJGZpcnN0ICYmICR0aGlzLT5vcmlnaW5hbHMtPm9mZnNldEV4aXN0cygkY29tcGxleCkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+b3JpZ2luYWxzLT5vZmZzZXRTZXQoJG91dHB1dENvbXBsZXgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRmaXJzdCA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIHJldHVybiAkb3V0cHV0Q29tcGxleDsKICAgICAgICAgICAgfSwgRXh0ZW5kVXRpbDo6d2VhdmUoJHBhdGgsICRjb21wbGV4LT5nZXRTcGFuKCksICRjb21wbGV4LT5nZXRMaW5lQnJlYWsoKSkpOwogICAgICAgIH0pLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHRlbmRzICRjb21wb25lbnQgdXNpbmcgJGV4dGVuc2lvbnMsIGFuZCByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBhCiAgICAgKiB7QHNlZSBTZWxlY3Rvckxpc3R9LgogICAgICoKICAgICAqIFRoZSAkaW5PcmlnaW5hbCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBpcyBpbiBhbiBvcmlnaW5hbAogICAgICogY29tcGxleCBzZWxlY3RvciwgbWVhbmluZyB0aGF0IHRoZSBjb21wb3VuZCBzaG91bGQgbm90IGJlIHRyaW1tZWQgb3V0LgogICAgICoKICAgICAqIEBwYXJhbSBTaW1wbGVTZWxlY3Rvck1hcDxDb21wbGV4U2VsZWN0b3JNYXA8RXh0ZW5zaW9uPj4gJGV4dGVuc2lvbnMKICAgICAqIEBwYXJhbSBsaXN0PENzc01lZGlhUXVlcnk+fG51bGwgJG1lZGlhUXVlcnlDb250ZXh0CiAgICAgKiBAcmV0dXJuIGxpc3Q8Q29tcGxleFNlbGVjdG9yPnxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXh0ZW5kQ29tcG91bmQoQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50ICRjb21wb25lbnQsIFNpbXBsZVNlbGVjdG9yTWFwICRleHRlbnNpb25zLCA/YXJyYXkgJG1lZGlhUXVlcnlDb250ZXh0LCBib29sICRpbk9yaWdpbmFsKTogP2FycmF5CiAgICB7CiAgICAgICAgLy8gSWYgdGhlcmUncyBtb3JlIHRoYW4gb25lIHRhcmdldCBhbmQgdGhleSBhbGwgbmVlZCB0byBtYXRjaCwgd2UgdHJhY2sKICAgICAgICAvLyB3aGljaCB0YXJnZXRzIGFyZSBhY3R1YWxseSBleHRlbmRlZC4KICAgICAgICAkdGFyZ2V0c1VzZWQgPSAkdGhpcy0+bW9kZSA9PT0gRXh0ZW5kTW9kZTo6bm9ybWFsIHx8IFxjb3VudCgkZXh0ZW5zaW9ucykgPCAyID8gbnVsbCA6IG5ldyBTaW1wbGVTZWxlY3Rvck1hcCgpOwoKICAgICAgICAkc2ltcGxlcyA9ICRjb21wb25lbnQtPmdldFNlbGVjdG9yKCktPmdldENvbXBvbmVudHMoKTsKCiAgICAgICAgLy8gVGhlIGNvbXBsZXggc2VsZWN0b3JzIHByb2R1Y2VkIGZyb20gZWFjaCBzaW1wbGUgc2VsZWN0b3IgaW4gdGhlIGNvbXBvdW5kIHNlbGVjdG9yLgogICAgICAgICRvcHRpb25zID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJHNpbXBsZXMgYXMgJGkgPT4gJHNpbXBsZSkgewogICAgICAgICAgICAkZXh0ZW5kZWQgPSAkdGhpcy0+ZXh0ZW5kU2ltcGxlKCRzaW1wbGUsICRleHRlbnNpb25zLCAkbWVkaWFRdWVyeUNvbnRleHQsICR0YXJnZXRzVXNlZCk7CgogICAgICAgICAgICBcYXNzZXJ0KCRleHRlbmRlZCA9PT0gbnVsbCB8fCBcY291bnQoJGV4dGVuZGVkKSA+IDAsICJleHRlbmRTaW1wbGUoJHNpbXBsZSkgc2hvdWxkIHJldHVybiBudWxsIHJhdGhlciB0aGFuIFtdIGlmIGV4dGVuc2lvbiBmYWlscy4iKTsKCiAgICAgICAgICAgIGlmICgkZXh0ZW5kZWQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmICgkb3B0aW9ucyAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICRvcHRpb25zW10gPSBbJHRoaXMtPmV4dGVuZGVyRm9yU2ltcGxlKCRzaW1wbGUpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkb3B0aW9ucyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gW107CgogICAgICAgICAgICAgICAgICAgIGlmICgkaSAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1tdID0gWyR0aGlzLT5leHRlbmRlckZvckNvbXBvdW5kKGFycmF5X3NsaWNlKCRzaW1wbGVzLCAwLCAkaSksICRjb21wb25lbnQtPmdldFNwYW4oKSldOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRvcHRpb25zLCAuLi4kZXh0ZW5kZWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9wdGlvbnMgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBJZiB7QHNlZSBtb2RlfSBpc24ndCB7QHNlZSBFeHRlbmRNb2RlOjpub3JtYWx9IGFuZCB3ZSBkaWRuJ3QgdXNlIGFsbCB0aGUgdGFyZ2V0cyBpbgogICAgICAgICAqICRleHRlbnNpb25zLCBleHRlbnNpb24gZmFpbHMgZm9yICRjb21wb25lbnQuCiAgICAgICAgICovCiAgICAgICAgaWYgKCR0YXJnZXRzVXNlZCAhPT0gbnVsbCAmJiBcY291bnQoJHRhcmdldHNVc2VkKSAhPT0gXGNvdW50KCRleHRlbnNpb25zKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vIE9wdGltaXplIGZvciB0aGUgc2ltcGxlIGNhc2Ugb2YgYSBzaW5nbGUgc2ltcGxlIHNlbGVjdG9yIHRoYXQgZG9lc24ndAogICAgICAgIC8vIG5lZWQgYW55IHVuaWZpY2F0aW9uLgogICAgICAgIGlmIChcY291bnQoJG9wdGlvbnMpID09PSAxKSB7CiAgICAgICAgICAgICRleHRlbmRlcnMgPSAkb3B0aW9uc1swXTsKICAgICAgICAgICAgJHJlc3VsdCA9IG51bGw7CiAgICAgICAgICAgIGZvcmVhY2ggKCRleHRlbmRlcnMgYXMgJGV4dGVuZGVyKSB7CiAgICAgICAgICAgICAgICAkZXh0ZW5kZXItPmFzc2VydENvbXBhdGlibGVNZWRpYUNvbnRleHQoJG1lZGlhUXVlcnlDb250ZXh0KTsKCiAgICAgICAgICAgICAgICAkY29tcGxleCA9ICRleHRlbmRlci0+c2VsZWN0b3ItPndpdGhBZGRpdGlvbmFsQ29tYmluYXRvcnMoJGNvbXBvbmVudC0+Z2V0Q29tYmluYXRvcnMoKSk7CiAgICAgICAgICAgICAgICBpZiAoJGNvbXBsZXgtPmlzVXNlbGVzcygpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHJlc3VsdCA/Pz0gW107CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29tcGxleDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICAvLyBGaW5kIGFsbCBwYXRocyB0aHJvdWdoICRvcHRpb25zLiBJbiB0aGlzIGNhc2UsIGVhY2ggcGF0aCByZXByZXNlbnRzIGEKICAgICAgICAvLyBkaWZmZXJlbnQgdW5pZmljYXRpb24gb2YgdGhlIGJhc2Ugc2VsZWN0b3IuIEZvciBleGFtcGxlLCBpZiB3ZSBoYXZlOgogICAgICAgIC8vCiAgICAgICAgLy8gICAgIC5hLmIgey4uLn0KICAgICAgICAvLyAgICAgLncgLngge0BleHRlbmQgLmF9CiAgICAgICAgLy8gICAgIC55IC56IHtAZXh0ZW5kIC5ifQogICAgICAgIC8vCiAgICAgICAgLy8gdGhlbiAkb3B0aW9ucyBpcyBgW1suYSwgLncgLnhdLCBbLmIsIC55IC56XV1gIGFuZCBgcGF0aHMoJG9wdGlvbnMpYCBpcwogICAgICAgIC8vCiAgICAgICAgLy8gICAgIFsKICAgICAgICAvLyAgICAgICBbLmEsIC5iXSwKICAgICAgICAvLyAgICAgICBbLmEsIC55IC56XSwKICAgICAgICAvLyAgICAgICBbLncgLngsIC5iXSwKICAgICAgICAvLyAgICAgICBbLncgLngsIC55IC56XQogICAgICAgIC8vICAgICBdCiAgICAgICAgLy8KICAgICAgICAvLyBXZSB0aGVuIHVuaWZ5IGVhY2ggcGF0aCB0byBnZXQgYSBsaXN0IG9mIGNvbXBsZXggc2VsZWN0b3JzOgogICAgICAgIC8vCiAgICAgICAgLy8gICAgIFsKICAgICAgICAvLyAgICAgICBbLmEuYl0sCiAgICAgICAgLy8gICAgICAgWy55IC5hLnpdLAogICAgICAgIC8vICAgICAgIFsudyAueC5iXSwKICAgICAgICAvLyAgICAgICBbLncgLnkgLngueiwgLnkgLncgLnguel0KICAgICAgICAvLyAgICAgXQogICAgICAgIC8vCiAgICAgICAgLy8gQW5kIGZpbmFsbHkgZmxhdHRlbiB0aGVtIHRvIGdldDoKICAgICAgICAvLwogICAgICAgIC8vICAgICBbCiAgICAgICAgLy8gICAgICAgLmEuYiwKICAgICAgICAvLyAgICAgICAueSAuYS56LAogICAgICAgIC8vICAgICAgIC53IC54LmIsCiAgICAgICAgLy8gICAgICAgLncgLnkgLngueiwKICAgICAgICAvLyAgICAgICAueSAudyAueC56CiAgICAgICAgLy8gICAgIF0KICAgICAgICAkZXh0ZW5kZXJQYXRocyA9IEV4dGVuZFV0aWw6OnBhdGhzKCRvcHRpb25zKTsKCiAgICAgICAgJHJlc3VsdCA9IFtdOwoKICAgICAgICBpZiAoJHRoaXMtPm1vZGUgIT09IEV4dGVuZE1vZGU6OnJlcGxhY2UpIHsKICAgICAgICAgICAgLy8gVGhlIGZpcnN0IHBhdGggaXMgYWx3YXlzIHRoZSBvcmlnaW5hbCBzZWxlY3Rvci4gV2UgY2FuJ3QganVzdCByZXR1cm4KICAgICAgICAgICAgLy8gJGNvbXBvbmVudCBkaXJlY3RseSBiZWNhdXNlIHNlbGVjdG9yIHBzZXVkb3MgbWF5IGJlIG1vZGlmaWVkLCBidXQgd2UKICAgICAgICAgICAgLy8gZG9uJ3QgaGF2ZSB0byBkbyBhbnkgdW5pZmljYXRpb24uCiAgICAgICAgICAgICRyZXN1bHRbXSA9IG5ldyBDb21wbGV4U2VsZWN0b3IoW10sIFtuZXcgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KAogICAgICAgICAgICAgICAgbmV3IENvbXBvdW5kU2VsZWN0b3IoaXRlcmF0b3JfdG9fYXJyYXkoc2VsZjo6ZXhwYW5kSXRlcmFibGUoJGV4dGVuZGVyUGF0aHNbMF0sIGZ1bmN0aW9uIChFeHRlbmRlciAkZXh0ZW5kZXIpIHsKICAgICAgICAgICAgICAgICAgICBcYXNzZXJ0KFxjb3VudCgkZXh0ZW5kZXItPnNlbGVjdG9yLT5nZXRDb21wb25lbnRzKCkpID09PSAxKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGlzdFV0aWw6Omxhc3QoJGV4dGVuZGVyLT5zZWxlY3Rvci0+Z2V0Q29tcG9uZW50cygpKS0+Z2V0U2VsZWN0b3IoKS0+Z2V0Q29tcG9uZW50cygpOwogICAgICAgICAgICAgICAgfSksIGZhbHNlKSwgJGNvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKS0+Z2V0U3BhbigpKSwKICAgICAgICAgICAgICAgICRjb21wb25lbnQtPmdldENvbWJpbmF0b3JzKCksCiAgICAgICAgICAgICAgICAkY29tcG9uZW50LT5nZXRTcGFuKCksCiAgICAgICAgICAgICldLCAkY29tcG9uZW50LT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfc2xpY2UoJGV4dGVuZGVyUGF0aHMsICR0aGlzLT5tb2RlID09PSBFeHRlbmRNb2RlOjpyZXBsYWNlID8gMCA6IDEpIGFzICRwYXRoKSB7CiAgICAgICAgICAgICRleHRlbmRlZCA9ICR0aGlzLT51bmlmeUV4dGVuZGVycygkcGF0aCwgJG1lZGlhUXVlcnlDb250ZXh0LCAkY29tcG9uZW50LT5nZXRTcGFuKCkpOwoKICAgICAgICAgICAgaWYgKCRleHRlbmRlZCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRleHRlbmRlZCBhcyAkY29tcGxleCkgewogICAgICAgICAgICAgICAgJHdpdGhDb21iaW5hdG9ycyA9ICRjb21wbGV4LT53aXRoQWRkaXRpb25hbENvbWJpbmF0b3JzKCRjb21wb25lbnQtPmdldENvbWJpbmF0b3JzKCkpOwoKICAgICAgICAgICAgICAgIGlmICghJHdpdGhDb21iaW5hdG9ycy0+aXNVc2VsZXNzKCkpIHsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkd2l0aENvbWJpbmF0b3JzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBJZiB3ZSdyZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCBzZWxlY3RvciwgbWFyayB0aGUgZmlyc3QgdW5pZmljYXRpb24gYXMKICAgICAgICAvLyBzdWNoIHNvIHtAc2VlIHRyaW19IGRvZXNuJ3QgZ2V0IHJpZCBvZiBpdC4KICAgICAgICAkaXNPcmlnaW5hbCA9IGZuIChDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpID0+IGZhbHNlOwogICAgICAgIGlmICgkaW5PcmlnaW5hbCAmJiAkdGhpcy0+bW9kZSAhPT0gRXh0ZW5kTW9kZTo6cmVwbGFjZSkgewogICAgICAgICAgICAkb3JpZ2luYWwgPSAkcmVzdWx0WzBdOwogICAgICAgICAgICAkaXNPcmlnaW5hbCA9IGZuIChDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpID0+IEVxdWF0YWJsZVV0aWw6OmVxdWFscygkY29tcGxleCwgJG9yaWdpbmFsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dHJpbSgkcmVzdWx0LCAkaXNPcmlnaW5hbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiB7QHNlZSBDb21wbGV4U2VsZWN0b3J9cyB0aGF0IG1hdGNoIHRoZSBpbnRlcnNlY3Rpb24gb2YKICAgICAqIGVsZW1lbnRzIG1hdGNoZWQgYnkgYWxsIG9mICRleHRlbmRlcnMnIHNlbGVjdG9ycy4KICAgICAqCiAgICAgKiBUaGUgJHNwYW4gd2lsbCBiZSB1c2VkIGZvciB0aGUgbmV3IHNlbGVjdG9ycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxFeHRlbmRlcj4gJGV4dGVuZGVycwogICAgICogQHBhcmFtIGxpc3Q8Q3NzTWVkaWFRdWVyeT58bnVsbCAkbWVkaWFRdWVyeUNvbnRleHQKICAgICAqIEByZXR1cm4gbGlzdDxDb21wbGV4U2VsZWN0b3I+fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB1bmlmeUV4dGVuZGVycyhhcnJheSAkZXh0ZW5kZXJzLCA/YXJyYXkgJG1lZGlhUXVlcnlDb250ZXh0LCBGaWxlU3BhbiAkc3Bhbik6ID9hcnJheQogICAgewogICAgICAgICR0b1VuaWZ5ID0gW107CiAgICAgICAgJG9yaWdpbmFscyA9IG51bGw7CiAgICAgICAgJG9yaWdpbmFsc0xpbmVCcmVhayA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkZXh0ZW5kZXJzIGFzICRleHRlbmRlcikgewogICAgICAgICAgICBpZiAoJGV4dGVuZGVyLT5pc09yaWdpbmFsKSB7CiAgICAgICAgICAgICAgICAkb3JpZ2luYWxzID8/PSBbXTsKICAgICAgICAgICAgICAgICRmaW5hbEV4dGVuZGVyQ29tcG9uZW50ID0gTGlzdFV0aWw6Omxhc3QoJGV4dGVuZGVyLT5zZWxlY3Rvci0+Z2V0Q29tcG9uZW50cygpKTsKICAgICAgICAgICAgICAgIFxhc3NlcnQoXGNvdW50KCRmaW5hbEV4dGVuZGVyQ29tcG9uZW50LT5nZXRDb21iaW5hdG9ycygpKSA9PT0gMCk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZpbmFsRXh0ZW5kZXJDb21wb25lbnQtPmdldFNlbGVjdG9yKCktPmdldENvbXBvbmVudHMoKSBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJG9yaWdpbmFsc1tdID0gJGNvbXBvbmVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvcmlnaW5hbHNMaW5lQnJlYWsgPSAkb3JpZ2luYWxzTGluZUJyZWFrIHx8ICRleHRlbmRlci0+c2VsZWN0b3ItPmdldExpbmVCcmVhaygpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGV4dGVuZGVyLT5zZWxlY3Rvci0+aXNVc2VsZXNzKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRvVW5pZnlbXSA9ICRleHRlbmRlci0+c2VsZWN0b3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkb3JpZ2luYWxzICE9PSBudWxsKSB7CiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHRvVW5pZnksIG5ldyBDb21wbGV4U2VsZWN0b3IoW10sIFsKICAgICAgICAgICAgICAgIG5ldyBDb21wbGV4U2VsZWN0b3JDb21wb25lbnQobmV3IENvbXBvdW5kU2VsZWN0b3IoJG9yaWdpbmFscywgJHNwYW4pLCBbXSwgJHNwYW4pLAogICAgICAgICAgICBdLCAkc3BhbiwgJG9yaWdpbmFsc0xpbmVCcmVhaykpOwogICAgICAgIH0KCiAgICAgICAgJGNvbXBsZXhlcyA9IEV4dGVuZFV0aWw6OnVuaWZ5Q29tcGxleCgkdG9VbmlmeSwgJHNwYW4pOwogICAgICAgIGlmICgkY29tcGxleGVzID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGV4dGVuZGVycyBhcyAkZXh0ZW5kZXIpIHsKICAgICAgICAgICAgJGV4dGVuZGVyLT5hc3NlcnRDb21wYXRpYmxlTWVkaWFDb250ZXh0KCRtZWRpYVF1ZXJ5Q29udGV4dCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbXBsZXhlczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBTaW1wbGVTZWxlY3Rvck1hcDxDb21wbGV4U2VsZWN0b3JNYXA8RXh0ZW5zaW9uPj4gJGV4dGVuc2lvbnMKICAgICAqIEBwYXJhbSBsaXN0PENzc01lZGlhUXVlcnk+fG51bGwgJG1lZGlhUXVlcnlDb250ZXh0CiAgICAgKiBAcGFyYW0gU2ltcGxlU2VsZWN0b3JNYXA8bWl4ZWQ+fG51bGwgJHRhcmdldHNVc2VkCiAgICAgKiBAcmV0dXJuIGxpc3Q8bGlzdDxFeHRlbmRlcj4+fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBleHRlbmRTaW1wbGUoU2ltcGxlU2VsZWN0b3IgJHNpbXBsZSwgU2ltcGxlU2VsZWN0b3JNYXAgJGV4dGVuc2lvbnMsID9hcnJheSAkbWVkaWFRdWVyeUNvbnRleHQsID9TaW1wbGVTZWxlY3Rvck1hcCAkdGFyZ2V0c1VzZWQpOiA/YXJyYXkKICAgIHsKICAgICAgICAvLyBFeHRlbmRzICRzaW1wbGUgd2l0aG91dCBleHRlbmRpbmcgdGhlIGNvbnRlbnRzIG9mIGFueSBzZWxlY3RvciBwc2V1ZG9zCiAgICAgICAgLy8gaXQgY29udGFpbnMuCiAgICAgICAgJHdpdGhvdXRQc2V1ZG8gPSBmdW5jdGlvbiAoU2ltcGxlU2VsZWN0b3IgJHNpbXBsZSkgdXNlICgkZXh0ZW5zaW9ucywgJHRhcmdldHNVc2VkKSB7CiAgICAgICAgICAgICRleHRlbnNpb25zRm9yU2ltcGxlID0gJGV4dGVuc2lvbnNbJHNpbXBsZV0gPz8gbnVsbDsKCiAgICAgICAgICAgIGlmICgkZXh0ZW5zaW9uc0ZvclNpbXBsZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRhcmdldHNVc2VkPy0+b2Zmc2V0U2V0KCRzaW1wbGUpOwoKICAgICAgICAgICAgJHJlc3VsdCA9IFtdOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5tb2RlICE9PSBFeHRlbmRNb2RlOjpyZXBsYWNlKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkdGhpcy0+ZXh0ZW5kZXJGb3JTaW1wbGUoJHNpbXBsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qKiBAdmFyIEV4dGVuc2lvbiAkZXh0ZW5zaW9uICovCiAgICAgICAgICAgIGZvcmVhY2ggKCRleHRlbnNpb25zRm9yU2ltcGxlLT5nZXRWYWx1ZXMoKSBhcyAkZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkZXh0ZW5zaW9uLT5leHRlbmRlcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfTsKCiAgICAgICAgaWYgKCRzaW1wbGUgaW5zdGFuY2VvZiBQc2V1ZG9TZWxlY3RvciAmJiAkc2ltcGxlLT5nZXRTZWxlY3RvcigpICE9PSBudWxsKSB7CiAgICAgICAgICAgICRleHRlbmRlZCA9ICR0aGlzLT5leHRlbmRQc2V1ZG8oJHNpbXBsZSwgJGV4dGVuc2lvbnMsICRtZWRpYVF1ZXJ5Q29udGV4dCk7CgogICAgICAgICAgICBpZiAoJGV4dGVuZGVkICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlfbWFwKGZuICgkcHNldWRvKSA9PiAkd2l0aG91dFBzZXVkbygkcHNldWRvKSA/PyBbJHRoaXMtPmV4dGVuZGVyRm9yU2ltcGxlKCRwc2V1ZG8pXSwgJGV4dGVuZGVkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9ICR3aXRob3V0UHNldWRvKCRzaW1wbGUpOwoKICAgICAgICBpZiAoJHJlc3VsdCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHJlc3VsdF07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIHtAc2VlIEV4dGVuZGVyfSBjb21wb3NlZCBzb2xlbHkgb2YgYSBjb21wb3VuZCBzZWxlY3RvciBjb250YWluaW5nCiAgICAgKiAkc2ltcGxlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxTaW1wbGVTZWxlY3Rvcj4gJHNpbXBsZXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBleHRlbmRlckZvckNvbXBvdW5kKGFycmF5ICRzaW1wbGVzLCBGaWxlU3BhbiAkc3Bhbik6IEV4dGVuZGVyCiAgICB7CiAgICAgICAgJGNvbXBvdW5kID0gbmV3IENvbXBvdW5kU2VsZWN0b3IoJHNpbXBsZXMsICRzcGFuKTsKCiAgICAgICAgcmV0dXJuIEV4dGVuZGVyOjpjcmVhdGUoCiAgICAgICAgICAgIG5ldyBDb21wbGV4U2VsZWN0b3IoW10sIFtuZXcgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KCRjb21wb3VuZCwgW10sICRzcGFuKV0sICRzcGFuKSwKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZVNwZWNpZmljaXR5Rm9yKCRjb21wb3VuZCksCiAgICAgICAgICAgIHRydWUsCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4ge0BzZWUgRXh0ZW5kZXJ9IGNvbXBvc2VkIHNvbGVseSBvZiAkc2ltcGxlLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4dGVuZGVyRm9yU2ltcGxlKFNpbXBsZVNlbGVjdG9yICRzaW1wbGUpOiBFeHRlbmRlcgogICAgewogICAgICAgIHJldHVybiBFeHRlbmRlcjo6Y3JlYXRlKAogICAgICAgICAgICBuZXcgQ29tcGxleFNlbGVjdG9yKFtdLCBbbmV3IENvbXBsZXhTZWxlY3RvckNvbXBvbmVudCgKICAgICAgICAgICAgICAgIG5ldyBDb21wb3VuZFNlbGVjdG9yKFskc2ltcGxlXSwgJHNpbXBsZS0+Z2V0U3BhbigpKSwKICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgJHNpbXBsZS0+Z2V0U3BhbigpLAogICAgICAgICAgICApXSwgJHNpbXBsZS0+Z2V0U3BhbigpKSwKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZVNwZWNpZmljaXR5WyRzaW1wbGVdID8/IDAsCiAgICAgICAgICAgIHRydWUsCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEV4dGVuZHMgJHBzZXVkbyB1c2luZyAkZXh0ZW5zaW9ucywgYW5kIHJldHVybnMgYSBsaXN0IG9mIHJlc3VsdGluZwogICAgICogcHNldWRvIHNlbGVjdG9ycy4KICAgICAqCiAgICAgKiBUaGlzIHJlcXVpcmVzIHRoYXQgJHBzZXVkbyBoYXZlIGEgc2VsZWN0b3IgYXJndW1lbnQuCiAgICAgKgogICAgICogQHBhcmFtIFNpbXBsZVNlbGVjdG9yTWFwPENvbXBsZXhTZWxlY3Rvck1hcDxFeHRlbnNpb24+PiAkZXh0ZW5zaW9ucwogICAgICogQHBhcmFtIGxpc3Q8Q3NzTWVkaWFRdWVyeT58bnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAkbWVkaWFRdWVyeUNvbnRleHQKICAgICAqIEByZXR1cm4gbGlzdDxQc2V1ZG9TZWxlY3Rvcj58bnVsbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4dGVuZFBzZXVkbyhQc2V1ZG9TZWxlY3RvciAkcHNldWRvLCBTaW1wbGVTZWxlY3Rvck1hcCAkZXh0ZW5zaW9ucywgP2FycmF5ICRtZWRpYVF1ZXJ5Q29udGV4dCk6ID9hcnJheQogICAgewogICAgICAgICRzZWxlY3RvciA9ICRwc2V1ZG8tPmdldFNlbGVjdG9yKCk7CgogICAgICAgIGlmICgkc2VsZWN0b3IgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIlNlbGVjdG9yICRwc2V1ZG8gbXVzdCBoYXZlIGEgc2VsZWN0b3IgYXJndW1lbnQuIik7CiAgICAgICAgfQoKICAgICAgICAkZXh0ZW5kZWQgPSAkdGhpcy0+ZXh0ZW5kTGlzdCgkc2VsZWN0b3IsICRleHRlbnNpb25zLCAkbWVkaWFRdWVyeUNvbnRleHQpOwoKICAgICAgICBpZiAoJGV4dGVuZGVkID09PSAkc2VsZWN0b3IpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBGb3IgYDpub3QoKWAsIHdlIHVzdWFsbHkgd2FudCB0byBnZXQgcmlkIG9mIGFueSBjb21wbGV4IHNlbGVjdG9ycyBiZWNhdXNlCiAgICAgICAgLy8gdGhhdCB3aWxsIGNhdXNlIHRoZSBzZWxlY3RvciB0byBmYWlsIHRvIHBhcnNlIG9uIGFsbCBicm93c2VycyBhdCB0aW1lIG9mCiAgICAgICAgLy8gd3JpdGluZy4gV2UgY2FuIGtlZXAgdGhlbSBpZiBlaXRoZXIgdGhlIG9yaWdpbmFsIHNlbGVjdG9yIGhhZCBhIGNvbXBsZXgKICAgICAgICAvLyBzZWxlY3Rvciwgb3IgdGhlIHJlc3VsdCBvZiBleHRlbmRpbmcgaGFzIG9ubHkgY29tcGxleCBzZWxlY3RvcnMsIGJlY2F1c2UKICAgICAgICAvLyBlaXRoZXIgd2F5IHdlIGFyZW4ndCBicmVha2luZyBhbnl0aGluZyB0aGF0IGlzbid0IGFscmVhZHkgYnJva2VuLgogICAgICAgICRjb21wbGV4ZXMgPSAkZXh0ZW5kZWQtPmdldENvbXBvbmVudHMoKTsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRwc2V1ZG8tPmdldE5vcm1hbGl6ZWROYW1lKCkgPT09ICdub3QnCiAgICAgICAgICAgICYmICFJdGVyYWJsZVV0aWw6OmFueSgkc2VsZWN0b3ItPmdldENvbXBvbmVudHMoKSwgZm4gKCRjb21wbGV4KSA9PiBcY291bnQoJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKSkgPiAxKQogICAgICAgICAgICAmJiBJdGVyYWJsZVV0aWw6OmFueSgkZXh0ZW5kZWQtPmdldENvbXBvbmVudHMoKSwgZm4gKCRjb21wbGV4KSA9PiBcY291bnQoJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKSkgPT09IDEpCiAgICAgICAgKSB7CiAgICAgICAgICAgICRjb21wbGV4ZXMgPSBhcnJheV9maWx0ZXIoJGV4dGVuZGVkLT5nZXRDb21wb25lbnRzKCksIGZuICgkY29tcGxleCkgPT4gXGNvdW50KCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkpIDw9IDEpOwogICAgICAgIH0KCiAgICAgICAgJGNvbXBsZXhlcyA9IGl0ZXJhdG9yX3RvX2FycmF5KHNlbGY6OmV4cGFuZEl0ZXJhYmxlKCRjb21wbGV4ZXMsIGZ1bmN0aW9uIChDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpIHVzZSAoJHBzZXVkbykgewogICAgICAgICAgICAkaW5uZXJQc2V1ZG8gPSAkY29tcGxleC0+Z2V0U2luZ2xlQ29tcG91bmQoKT8tPmdldFNpbmdsZVNpbXBsZSgpOwogICAgICAgICAgICBpZiAoISRpbm5lclBzZXVkbyBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWyRjb21wbGV4XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGlubmVyU2VsZWN0b3IgPSAkaW5uZXJQc2V1ZG8tPmdldFNlbGVjdG9yKCk7CiAgICAgICAgICAgIGlmICgkaW5uZXJTZWxlY3RvciA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFskY29tcGxleF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHN3aXRjaCAoJHBzZXVkby0+Z2V0Tm9ybWFsaXplZE5hbWUoKSkgewogICAgICAgICAgICAgICAgY2FzZSAnbm90JzoKICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGVvcnksIGlmIHRoZXJlJ3MgYSBgOm5vdGAgbmVzdGVkIHdpdGhpbiBhbm90aGVyIGA6bm90YCwgdGhlCiAgICAgICAgICAgICAgICAgICAgLy8gaW5uZXIgYDpub3RgJ3MgY29udGVudHMgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCB0aGUgcmV0dXJuIHZhbHVlLgogICAgICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCBpZiBgOm5vdCguZm9vKWAgZXh0ZW5kcyBgLmJhcmAsIGA6bm90KC5iYXIpYCBzaG91bGQKICAgICAgICAgICAgICAgICAgICAvLyBiZWNvbWUgYC5mb286bm90KC5iYXIpYC4gSG93ZXZlciwgdGhpcyBpcyBhIG5hcnJvdyBlZGdlIGNhc2UgYW5kCiAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9ydGluZyBpdCBwcm9wZXJseSB3b3VsZCBtYWtlIHRoaXMgY29kZSBhbmQgdGhlIGNvZGUgY2FsbGluZyBpdAogICAgICAgICAgICAgICAgICAgIC8vIGEgbG90IG1vcmUgY29tcGxpY2F0ZWQsIHNvIGl0J3Mgbm90IHN1cHBvcnRlZCBmb3Igbm93LgogICAgICAgICAgICAgICAgICAgIGlmICghXGluX2FycmF5KCRpbm5lclBzZXVkby0+Z2V0Tm9ybWFsaXplZE5hbWUoKSwgWydpcycsICdtYXRjaGVzJywgJ3doZXJlJ10sIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkaW5uZXJTZWxlY3Rvci0+Z2V0Q29tcG9uZW50cygpOwoKICAgICAgICAgICAgICAgIGNhc2UgJ2lzJzoKICAgICAgICAgICAgICAgIGNhc2UgJ21hdGNoZXMnOgogICAgICAgICAgICAgICAgY2FzZSAnd2hlcmUnOgogICAgICAgICAgICAgICAgY2FzZSAnYW55JzoKICAgICAgICAgICAgICAgIGNhc2UgJ2N1cnJlbnQnOgogICAgICAgICAgICAgICAgY2FzZSAnbnRoLWNoaWxkJzoKICAgICAgICAgICAgICAgIGNhc2UgJ250aC1sYXN0LWNoaWxkJzoKICAgICAgICAgICAgICAgICAgICAvLyBBcyBhYm92ZSwgd2UgY291bGQgdGhlb3JldGljYWxseSBzdXBwb3J0IDpub3Qgd2l0aGluIDptYXRjaGVzLCBidXQKICAgICAgICAgICAgICAgICAgICAvLyBkb2luZyBzbyB3b3VsZCByZXF1aXJlIHRoaXMgbWV0aG9kIGFuZCBpdHMgY2FsbGVycyB0byBoYW5kbGUgbXVjaAogICAgICAgICAgICAgICAgICAgIC8vIG1vcmUgY29tcGxleCBjYXNlcyB0aGF0IGxpa2VseSBhcmVuJ3Qgd29ydGggdGhlIHBhaW4uCiAgICAgICAgICAgICAgICAgICAgaWYgKCRpbm5lclBzZXVkby0+Z2V0TmFtZSgpICE9PSAkcHNldWRvLT5nZXROYW1lKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoJGlubmVyUHNldWRvLT5nZXRBcmd1bWVudCgpICE9PSAkcHNldWRvLT5nZXRBcmd1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkaW5uZXJTZWxlY3Rvci0+Z2V0Q29tcG9uZW50cygpOwoKICAgICAgICAgICAgICAgIGNhc2UgJ2hhcyc6CiAgICAgICAgICAgICAgICBjYXNlICdob3N0JzoKICAgICAgICAgICAgICAgIGNhc2UgJ2hvc3QtY29udGV4dCc6CiAgICAgICAgICAgICAgICBjYXNlICdzbG90dGVkJzoKICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBleHBhbmQgbmVzdGVkIHNlbGVjdG9ycyBoZXJlLCBiZWNhdXNlIGVhY2ggbGF5ZXIgYWRkcyBhbgogICAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgbGF5ZXIgb2Ygc2VtYW50aWNzLiBGb3IgZXhhbXBsZSwgYDpoYXMoOmhhcyhpbWcpKWAKICAgICAgICAgICAgICAgICAgICAvLyBkb2Vzbid0IG1hdGNoIGA8ZGl2PjxpbWc+PC9kaXY+YCBidXQgYDpoYXMoaW1nKWAgZG9lcy4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyRjb21wbGV4XTsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfQogICAgICAgIH0pLCBmYWxzZSk7CgogICAgICAgIC8vIE9sZGVyIGJyb3dzZXJzIHN1cHBvcnQgYDpub3RgLCBidXQgb25seSB3aXRoIGEgc2luZ2xlIGNvbXBsZXggc2VsZWN0b3IuCiAgICAgICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCB0aG9zZSBicm93c2Vycywgd2UgYnJlYWsgdXAgdGhlIGNvbnRlbnRzIG9mIGEgYDpub3RgCiAgICAgICAgLy8gdW5sZXNzIGl0IG9yaWdpbmFsbHkgY29udGFpbmVkIGEgc2VsZWN0b3IgbGlzdC4KICAgICAgICBpZiAoJHBzZXVkby0+Z2V0Tm9ybWFsaXplZE5hbWUoKSA9PT0gJ25vdCcgJiYgXGNvdW50KCRzZWxlY3Rvci0+Z2V0Q29tcG9uZW50cygpKSA9PT0gMSkgewogICAgICAgICAgICAkcmVzdWx0ID0gYXJyYXlfbWFwKGZuIChDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpID0+ICRwc2V1ZG8tPndpdGhTZWxlY3RvcihuZXcgU2VsZWN0b3JMaXN0KFskY29tcGxleF0sICRzZWxlY3Rvci0+Z2V0U3BhbigpKSksICRjb21wbGV4ZXMpOwoKICAgICAgICAgICAgcmV0dXJuIFxjb3VudCgkcmVzdWx0KSA9PT0gMCA/IG51bGwgOiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskcHNldWRvLT53aXRoU2VsZWN0b3IobmV3IFNlbGVjdG9yTGlzdCgkY29tcGxleGVzLCAkc2VsZWN0b3ItPmdldFNwYW4oKSkpXTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0ZW1wbGF0ZSBFCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICogQHBhcmFtIGl0ZXJhYmxlPEU+ICRlbGVtZW50cwogICAgICogQHBhcmFtIGNhbGxhYmxlKEUpOiBpdGVyYWJsZTxUPiAkY2FsbGJhY2sKICAgICAqIEByZXR1cm4gXFRyYXZlcnNhYmxlPFQ+CiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNhbGxiYWNrCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGV4cGFuZEl0ZXJhYmxlKGl0ZXJhYmxlICRlbGVtZW50cywgY2FsbGFibGUgJGNhbGxiYWNrKTogXFRyYXZlcnNhYmxlCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGVsZW1lbnRzIGFzICRlbGVtZW50KSB7CiAgICAgICAgICAgIHlpZWxkIGZyb20gJGNhbGxiYWNrKCRlbGVtZW50KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIGVsZW1lbnRzIGZyb20gJHNlbGVjdG9ycyBpZiB0aGV5J3JlIHN1YnNlbGVjdG9ycyBvZiBvdGhlcgogICAgICogZWxlbWVudHMuCiAgICAgKgogICAgICogVGhlICRpc09yaWdpbmFsIGNhbGxiYWNrIGluZGljYXRlcyB3aGljaCBzZWxlY3RvcnMgYXJlIG9yaWdpbmFsIHRvIHRoZQogICAgICogZG9jdW1lbnQsIGFuZCB0aHVzIHNob3VsZCBuZXZlciBiZSB0cmltbWVkLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3Rvcj4gJHNlbGVjdG9ycwogICAgICogQHBhcmFtIGNhbGxhYmxlKENvbXBsZXhTZWxlY3Rvcik6IGJvb2wgJGlzT3JpZ2luYWwKICAgICAqIEByZXR1cm4gbGlzdDxDb21wbGV4U2VsZWN0b3I+CiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGlzT3JpZ2luYWwKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmltKGFycmF5ICRzZWxlY3RvcnMsIGNhbGxhYmxlICRpc09yaWdpbmFsKTogYXJyYXkKICAgIHsKICAgICAgICAvLyBBdm9pZCB0cnVseSBob3JyaWZpYyBxdWFkcmF0aWMgYmVoYXZpb3IuCiAgICAgICAgaWYgKFxjb3VudCgkc2VsZWN0b3JzKSA+IDEwMCkgewogICAgICAgICAgICByZXR1cm4gJHNlbGVjdG9yczsKICAgICAgICB9CgogICAgICAgIC8vIFRoaXMgaXMgbsKyIG9uIHRoZSBzZXF1ZW5jZXMsIGJ1dCBvbmx5IGNvbXBhcmluZyBiZXR3ZWVuIHNlcGFyYXRlCiAgICAgICAgLy8gc2VxdWVuY2VzIHNob3VsZCBsaW1pdCB0aGUgcXVhZHJhdGljIGJlaGF2aW9yLiBXZSBpdGVyYXRlIGZyb20gbGFzdCB0bwogICAgICAgIC8vIGZpcnN0IGFuZCByZXZlcnNlIHRoZSByZXN1bHQgc28gdGhhdCwgaWYgdHdvIHNlbGVjdG9ycyBhcmUgaWRlbnRpY2FsLCB3ZQogICAgICAgIC8vIGtlZXAgdGhlIGZpcnN0IG9uZS4KICAgICAgICAvKiogQHZhciBsaXN0PENvbXBsZXhTZWxlY3Rvcj4gJHJlc3VsdCAqLwogICAgICAgICRyZXN1bHQgPSBbXTsKICAgICAgICAkbnVtT3JpZ2luYWxzID0gMDsKCiAgICAgICAgZm9yICgkaSA9IFxjb3VudCgkc2VsZWN0b3JzKSAtIDE7ICRpID49IDA7ICRpLS0pIHsKICAgICAgICAgICAgJGNvbXBsZXgxID0gJHNlbGVjdG9yc1skaV07CgogICAgICAgICAgICBpZiAoJGlzT3JpZ2luYWwoJGNvbXBsZXgxKSkgewogICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGluY2x1ZGUgZHVwbGljYXRlIG9yaWdpbmFscywgd2hpY2ggY291bGQgaGFwcGVuIGlmCiAgICAgICAgICAgICAgICAvLyBhIHN0eWxlIHJ1bGUgZXh0ZW5kcyBhIGNvbXBvbmVudCBvZiBpdHMgb3duIHNlbGVjdG9yLgogICAgICAgICAgICAgICAgZm9yICgkaiA9IDA7ICRqIDwgJG51bU9yaWdpbmFsczsgJGorKykgewogICAgICAgICAgICAgICAgICAgIGlmIChFcXVhdGFibGVVdGlsOjplcXVhbHMoJHJlc3VsdFskal0sICRjb21wbGV4MSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUm90YXRlcyB0aGUgc2xpY2Ugb25lIGluZGV4IGhpZ2hlcgogICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudCA9ICRyZXN1bHRbJGpdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCRrID0gMDsgJGsgPD0gJGo7ICRrKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXh0ID0gJHJlc3VsdFska107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0WyRrXSA9ICRlbGVtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQgPSAkbmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyBSb3RhdGluZyB0aGUgc2xpY2UgcHJlc2VydmVzIHRoZSBsaXN0IHN0YXR1cyBvZiB0aGUgYXJyYXksIGJ1dCBwaHBzdGFuIGRvZXMgbm90IHJlY29nbml6ZSBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgXGFzc2VydChhcnJheV9pc19saXN0KCRyZXN1bHQpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRudW1PcmlnaW5hbHMrKzsKICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHJlc3VsdCwgJGNvbXBsZXgxKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBUaGUgbWF4aW11bSBzcGVjaWZpY2l0eSBvZiB0aGUgc291cmNlcyB0aGF0IGNhdXNlZCAkY29tcGxleDEgdG8gYmUKICAgICAgICAgICAgLy8gZ2VuZXJhdGVkLiBJbiBvcmRlciBmb3IgJGNvbXBsZXgxIHRvIGJlIHJlbW92ZWQsIHRoZXJlIG11c3QgYmUgYW5vdGhlcgogICAgICAgICAgICAvLyBzZWxlY3RvciB0aGF0J3MgYSBzdXBlcnNlbGVjdG9yIG9mIGl0ICphbmQqIHRoYXQgaGFzIHNwZWNpZmljaXR5CiAgICAgICAgICAgIC8vIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhpcy4KICAgICAgICAgICAgJG1heFNwZWNpZmljaXR5ID0gMDsKICAgICAgICAgICAgZm9yZWFjaCAoJGNvbXBsZXgxLT5nZXRDb21wb25lbnRzKCkgYXMgJGNvbXBvbmVudCkgewogICAgICAgICAgICAgICAgJG1heFNwZWNpZmljaXR5ID0gbWF4KCRtYXhTcGVjaWZpY2l0eSwgJHRoaXMtPnNvdXJjZVNwZWNpZmljaXR5Rm9yKCRjb21wb25lbnQtPmdldFNlbGVjdG9yKCkpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gTG9vayBpbiAkcmVzdWx0IHJhdGhlciB0aGFuICRzZWxlY3RvcnMgZm9yIHNlbGVjdG9ycyBhZnRlciAkaS4gVGhpcwogICAgICAgICAgICAvLyBlbnN1cmVzIHRoYXQgd2UgYXJlbid0IGNvbXBhcmluZyBhZ2FpbnN0IGEgc2VsZWN0b3IgdGhhdCdzIGFscmVhZHkgYmVlbgogICAgICAgICAgICAvLyB0cmltbWVkLCBhbmQgdGh1cyB0aGF0IGlmIHRoZXJlIGFyZSB0d28gaWRlbnRpY2FsIHNlbGVjdG9ycyBvbmx5IG9uZSBpcwogICAgICAgICAgICAvLyB0cmltbWVkLgogICAgICAgICAgICBpZiAoSXRlcmFibGVVdGlsOjphbnkoJHJlc3VsdCwgZm4gKENvbXBsZXhTZWxlY3RvciAkY29tcGxleDIpID0+ICRjb21wbGV4Mi0+Z2V0U3BlY2lmaWNpdHkoKSA+PSAkbWF4U3BlY2lmaWNpdHkgJiYgJGNvbXBsZXgyLT5pc1N1cGVyc2VsZWN0b3IoJGNvbXBsZXgxKSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoSXRlcmFibGVVdGlsOjphbnkoYXJyYXlfc2xpY2UoJHNlbGVjdG9ycywgMCwgJGkpLCBmbiAoQ29tcGxleFNlbGVjdG9yICRjb21wbGV4MikgPT4gJGNvbXBsZXgyLT5nZXRTcGVjaWZpY2l0eSgpID49ICRtYXhTcGVjaWZpY2l0eSAmJiAkY29tcGxleDItPmlzU3VwZXJzZWxlY3RvcigkY29tcGxleDEpKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHJlc3VsdCwgJGNvbXBsZXgxKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbWF4aW11bSBzcGVjaWZpY2l0eSBmb3Igc291cmNlcyB0aGF0IHdlbnQgaW50byBwcm9kdWNpbmcKICAgICAqICRjb21wb3VuZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzb3VyY2VTcGVjaWZpY2l0eUZvcihDb21wb3VuZFNlbGVjdG9yICRjb21wb3VuZCk6IGludAogICAgewogICAgICAgICRzcGVjaWZpY2l0eSA9IDA7CgogICAgICAgIGZvcmVhY2ggKCRjb21wb3VuZC0+Z2V0Q29tcG9uZW50cygpIGFzICRzaW1wbGUpIHsKICAgICAgICAgICAgJHNwZWNpZmljaXR5ID0gbWF4KCRzcGVjaWZpY2l0eSwgJHRoaXMtPnNvdXJjZVNwZWNpZmljaXR5WyRzaW1wbGVdID8/IDApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzcGVjaWZpY2l0eTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvbmUoKTogYXJyYXkKICAgIHsKICAgICAgICAvKiogQHZhciBTaW1wbGVTZWxlY3Rvck1hcDxPYmplY3RTZXQ8TW9kaWZpYWJsZUJveDxTZWxlY3Rvckxpc3Q+Pj4gJG5ld1NlbGVjdG9ycyAqLwogICAgICAgICRuZXdTZWxlY3RvcnMgPSBuZXcgU2ltcGxlU2VsZWN0b3JNYXAoKTsKICAgICAgICAvKiogQHZhciBcU3BsT2JqZWN0U3RvcmFnZTxNb2RpZmlhYmxlQm94PFNlbGVjdG9yTGlzdD4sIGxpc3Q8Q3NzTWVkaWFRdWVyeT4+ICRuZXdNZWRpYUNvbnRleHRzICovCiAgICAgICAgJG5ld01lZGlhQ29udGV4dHMgPSBuZXcgXFNwbE9iamVjdFN0b3JhZ2UoKTsKICAgICAgICAvKiogQHZhciBcU3BsT2JqZWN0U3RvcmFnZTxTZWxlY3Rvckxpc3QsIEJveDxTZWxlY3Rvckxpc3Q+PiAkb2xkVG9OZXdTZWxlY3RvcnMgKi8KICAgICAgICAkb2xkVG9OZXdTZWxlY3RvcnMgPSBuZXcgXFNwbE9iamVjdFN0b3JhZ2UoKTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnNlbGVjdG9ycyBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgICRzZWxlY3RvcnMgPSAkdGhpcy0+c2VsZWN0b3JzLT5nZXRJbmZvKCk7CgogICAgICAgICAgICAvKiogQHZhciBPYmplY3RTZXQ8TW9kaWZpYWJsZUJveDxTZWxlY3Rvckxpc3Q+PiAkbmV3U2VsZWN0b3JTZXQgKi8KICAgICAgICAgICAgJG5ld1NlbGVjdG9yU2V0ID0gbmV3IE9iamVjdFNldCgpOwogICAgICAgICAgICAkbmV3U2VsZWN0b3JzWyRzaW1wbGVdID0gJG5ld1NlbGVjdG9yU2V0OwoKICAgICAgICAgICAgZm9yZWFjaCAoJHNlbGVjdG9ycyBhcyAkc2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgICRuZXdTZWxlY3RvciA9IG5ldyBNb2RpZmlhYmxlQm94KCRzZWxlY3Rvci0+Z2V0VmFsdWUoKSk7CiAgICAgICAgICAgICAgICAkbmV3U2VsZWN0b3JTZXQtPmFkZCgkbmV3U2VsZWN0b3IpOwogICAgICAgICAgICAgICAgJG9sZFRvTmV3U2VsZWN0b3JzWyRzZWxlY3Rvci0+Z2V0VmFsdWUoKV0gPSAkbmV3U2VsZWN0b3ItPnNlYWwoKTsKCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPm1lZGlhQ29udGV4dHNbJHNlbGVjdG9yXSkpIHsKICAgICAgICAgICAgICAgICAgICAkbmV3TWVkaWFDb250ZXh0c1skbmV3U2VsZWN0b3JdID0gJHRoaXMtPm1lZGlhQ29udGV4dHNbJHNlbGVjdG9yXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgU2ltcGxlU2VsZWN0b3JNYXA8Q29tcGxleFNlbGVjdG9yTWFwPEV4dGVuc2lvbj4+ICRuZXdFeHRlbnNpb25zICovCiAgICAgICAgJG5ld0V4dGVuc2lvbnMgPSBuZXcgU2ltcGxlU2VsZWN0b3JNYXAoKTsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZXh0ZW5zaW9ucyBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgICRuZXdFeHRlbnNpb25zWyRzaW1wbGVdID0gY2xvbmUgJHRoaXMtPmV4dGVuc2lvbnMtPmdldEluZm8oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbbmV3IENvbmNyZXRlRXh0ZW5zaW9uU3RvcmUoCiAgICAgICAgICAgICRuZXdTZWxlY3RvcnMsCiAgICAgICAgICAgICRuZXdFeHRlbnNpb25zLAogICAgICAgICAgICBjbG9uZSAkdGhpcy0+ZXh0ZW5zaW9uc0J5RXh0ZW5kZXIsCiAgICAgICAgICAgICRuZXdNZWRpYUNvbnRleHRzLAogICAgICAgICAgICBjbG9uZSAkdGhpcy0+c291cmNlU3BlY2lmaWNpdHksCiAgICAgICAgICAgIGNsb25lICR0aGlzLT5vcmlnaW5hbHMsCiAgICAgICAgICAgIEV4dGVuZE1vZGU6Om5vcm1hbCwKICAgICAgICApLCAkb2xkVG9OZXdTZWxlY3RvcnNdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/EmptyExtensionStore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEV4dGVuZFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNlbGVjdG9yTGlzdDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcU2ltcGxlU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXh0ZW5kXEV4dGVuc2lvblN0b3JlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcQm94OwoKLyoqCiAqIEFuIHtAc2VlIEV4dGVuc2lvblN0b3JlfSB0aGF0IGNvbnRhaW5zIG5vIGV4dGVuc2lvbnMgYW5kIGNhbiBoYXZlIG5vIGV4dGVuc2lvbnMKICogYWRkZWQuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRW1wdHlFeHRlbnNpb25TdG9yZSBpbXBsZW1lbnRzIEV4dGVuc2lvblN0b3JlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VtcHR5KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2ltcGxlU2VsZWN0b3JzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleHRlbnNpb25zV2hlcmVUYXJnZXQoY2FsbGFibGUgJGNhbGxiYWNrKTogaXRlcmFibGUKICAgIHsKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNlbGVjdG9yKFNlbGVjdG9yTGlzdCAkc2VsZWN0b3IsID9hcnJheSAkbWVkaWFDb250ZXh0KTogQm94CiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCJhZGRTZWxlY3RvcigpIGNhbid0IGJlIGNhbGxlZCBmb3IgYSBjb25zdCBFeHRlbnNpb25TdG9yZS4iKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRXh0ZW5zaW9uKFNlbGVjdG9yTGlzdCAkZXh0ZW5kZXIsIFNpbXBsZVNlbGVjdG9yICR0YXJnZXQsIEV4dGVuZFJ1bGUgJGV4dGVuZCwgP2FycmF5ICRtZWRpYUNvbnRleHQpOiB2b2lkCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCJhZGRFeHRlbnNpb24oKSBjYW4ndCBiZSBjYWxsZWQgZm9yIGEgY29uc3QgRXh0ZW5zaW9uU3RvcmUuIik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZEV4dGVuc2lvbnMoaXRlcmFibGUgJGV4dGVuc2lvblN0b3Jlcyk6IHZvaWQKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oImFkZEV4dGVuc2lvbnMoKSBjYW4ndCBiZSBjYWxsZWQgZm9yIGEgY29uc3QgRXh0ZW5zaW9uU3RvcmUuIik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNsb25lKCk6IGFycmF5CiAgICB7CiAgICAgICAgLyoqIEB2YXIgXFNwbE9iamVjdFN0b3JhZ2U8U2VsZWN0b3JMaXN0LCBCb3g8U2VsZWN0b3JMaXN0Pj4gJG1hcCAqLwogICAgICAgICRtYXAgPSBuZXcgXFNwbE9iamVjdFN0b3JhZ2UoKTsKCiAgICAgICAgcmV0dXJuIFtuZXcgRW1wdHlFeHRlbnNpb25TdG9yZSgpLCAkbWFwXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/Extender.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NNZWRpYVF1ZXJ5Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNpbXBsZVNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGVVdGlsOwoKLyoqCiAqIEEgc2VsZWN0b3IgdGhhdCdzIGV4dGVuZGluZyBhbm90aGVyIHNlbGVjdG9yLCBzdWNoIGFzIGBBYCBpbiBgQSB7QGV4dGVuZCBCfWAuCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRXh0ZW5kZXIKewogICAgcHVibGljIHJlYWRvbmx5IENvbXBsZXhTZWxlY3RvciAkc2VsZWN0b3I7CgogICAgLyoqCiAgICAgKiBUaGUgbWluaW11bSBzcGVjaWZpY2l0eSByZXF1aXJlZCBmb3IgYW55IHNlbGVjdG9yIGdlbmVyYXRlZCBmcm9tIHRoaXMKICAgICAqIGV4dGVuZGVyLgogICAgICovCiAgICBwdWJsaWMgcmVhZG9ubHkgaW50ICRzcGVjaWZpY2l0eTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBleHRlbmRlciByZXByZXNlbnRzIGEgc2VsZWN0b3IgdGhhdCB3YXMgb3JpZ2luYWxseSBpbiB0aGUKICAgICAqIGRvY3VtZW50LCByYXRoZXIgdGhhbiBvbmUgZGVmaW5lZCB3aXRoIGBAZXh0ZW5kYC4KICAgICAqLwogICAgcHVibGljIHJlYWRvbmx5IGJvb2wgJGlzT3JpZ2luYWw7CgogICAgLyoqCiAgICAgKiBUaGUgZXh0ZW5zaW9uIHRoYXQgY3JlYXRlZCB0aGlzIEV4dGVuZGVyLgogICAgICoKICAgICAqIE5vdCBhbGwge0BzZWUgRXh0ZW5kZXJ9cyBhcmUgY3JlYXRlZCBieSBleHRlbnNpb25zLiBTb21lIHNpbXBseSByZXByZXNlbnQgdGhlCiAgICAgKiBvcmlnaW5hbCBzZWxlY3RvcnMgdGhhdCBleGlzdCBpbiB0aGUgZG9jdW1lbnQuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP0V4dGVuc2lvbiAkZXh0ZW5zaW9uOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ29tcGxleFNlbGVjdG9yICRzZWxlY3RvciwgP2ludCAkc3BlY2lmaWNpdHkgPSBudWxsLCBib29sICRvcmlnaW5hbCA9IGZhbHNlLCA/RXh0ZW5zaW9uICRleHRlbnNpb24gPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5zZWxlY3RvciA9ICRzZWxlY3RvcjsKICAgICAgICAkdGhpcy0+c3BlY2lmaWNpdHkgPSAkc3BlY2lmaWNpdHkgPz8gJHNlbGVjdG9yLT5nZXRTcGVjaWZpY2l0eSgpOwogICAgICAgICR0aGlzLT5pc09yaWdpbmFsID0gJG9yaWdpbmFsOwogICAgICAgICR0aGlzLT5leHRlbnNpb24gPSAkZXh0ZW5zaW9uOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKENvbXBsZXhTZWxlY3RvciAkc2VsZWN0b3IsID9pbnQgJHNwZWNpZmljaXR5ID0gbnVsbCwgYm9vbCAkb3JpZ2luYWwgPSBmYWxzZSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEV4dGVuZGVyKCRzZWxlY3RvciwgJHNwZWNpZmljaXR5LCAkb3JpZ2luYWwpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZm9yRXh0ZW5zaW9uKENvbXBsZXhTZWxlY3RvciAkc2VsZWN0b3IsIEV4dGVuc2lvbiAkZXh0ZW5zaW9uKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgRXh0ZW5kZXIoJHNlbGVjdG9yLCBleHRlbnNpb246ICRleHRlbnNpb24pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8Q3NzTWVkaWFRdWVyeT58bnVsbCAkbWVkaWFDb250ZXh0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRDb21wYXRpYmxlTWVkaWFDb250ZXh0KD9hcnJheSAkbWVkaWFDb250ZXh0KTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+ZXh0ZW5zaW9uID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRleHBlY3RlZE1lZGlhQ29udGV4dCA9ICR0aGlzLT5leHRlbnNpb24tPm1lZGlhQ29udGV4dDsKICAgICAgICBpZiAoJGV4cGVjdGVkTWVkaWFDb250ZXh0ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICgkbWVkaWFDb250ZXh0ICE9PSBudWxsICYmIEVxdWF0YWJsZVV0aWw6Omxpc3RFcXVhbHMoJGV4cGVjdGVkTWVkaWFDb250ZXh0LCAkbWVkaWFDb250ZXh0KSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgU2ltcGxlU2Fzc0V4Y2VwdGlvbignWW91IG1heSBub3QgQGV4dGVuZCBzZWxlY3RvcnMgYWNyb3NzIG1lZGlhIHF1ZXJpZXMuJywgJHRoaXMtPmV4dGVuc2lvbi0+c3Bhbik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/ExtendMode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCi8qKgogKiBEaWZmZXJlbnQgbW9kZXMgaW4gd2hpY2ggZXh0ZW5zaW9uIGNhbiBydW4uCiAqCiAqIEBpbnRlcm5hbAogKi8KZW51bSBFeHRlbmRNb2RlCnsKICAgIC8qKgogICAgICogTm9ybWFsIG1vZGUsIHVzZWQgd2l0aCB0aGUgYEBleHRlbmRgIHJ1bGUuCiAgICAgKgogICAgICogVGhpcyBwcmVzZXJ2ZXMgZXhpc3Rpbmcgc2VsZWN0b3JzIGFuZCBleHRlbmRzIGVhY2ggdGFyZ2V0IGluZGl2aWR1YWxseS4KICAgICAqLwogICAgY2FzZSBub3JtYWw7CgogICAgLyoqCiAgICAgKiBSZXBsYWNlIG1vZGUsIHVzZWQgYnkgdGhlIGBzZWxlY3Rvci1yZXBsYWNlKClgIGZ1bmN0aW9uLgogICAgICoKICAgICAqIFRoaXMgcmVwbGFjZXMgZXhpc3Rpbmcgc2VsZWN0b3JzIGFuZCByZXF1aXJlcyBldmVyeSB0YXJnZXQgdG8gbWF0Y2ggdG8KICAgICAqIGV4dGVuZCBhIGdpdmVuIGNvbXBvdW5kIHNlbGVjdG9yLgogICAgICovCiAgICBjYXNlIHJlcGxhY2U7CgogICAgLyoqCiAgICAgKiBBbGwtdGFyZ2V0cyBtb2RlLCB1c2VkIGJ5IHRoZSBgc2VsZWN0b3ItZXh0ZW5kKClgIGZ1bmN0aW9uLgogICAgICoKICAgICAqIFRoaXMgcHJlc2VydmVzIGV4aXN0aW5nIHNlbGVjdG9ycyBidXQgcmVxdWlyZXMgZXZlcnkgdGFyZ2V0IHRvIG1hdGNoIHRvCiAgICAgKiBleHRlbmQgYSBnaXZlbiBjb21wb3VuZCBzZWxlY3Rvci4KICAgICAqLwogICAgY2FzZSBhbGxUYXJnZXRzOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/ExtendUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tYmluYXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tcGxleFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXENvbXBvdW5kU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXElEU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBsYWNlaG9sZGVyU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBzZXVkb1NlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxRdWFsaWZpZWROYW1lOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3Rvckxpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNpbXBsZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxUeXBlU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFVuaXZlcnNhbFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEl0ZXJhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXExpc3RVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcU3BhblV0aWw7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRXh0ZW5kVXRpbAp7CiAgICAvKioKICAgICAqIFBzZXVkby1zZWxlY3RvcnMgdGhhdCBjYW4gb25seSBtZWFuaW5nZnVsbHkgYXBwZWFyIGluIHRoZSBmaXJzdCBjb21wb25lbnQgb2YKICAgICAqIGEgY29tcGxleCBzZWxlY3Rvci4KICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBST09USVNIX1BTRVVET19DTEFTU0VTID0gWydyb290JywgJ3Njb3BlJywgJ2hvc3QnLCAnaG9zdC1jb250ZXh0J107CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb250ZW50cyBvZiBhIHtAc2VlIFNlbGVjdG9yTGlzdH0gdGhhdCBtYXRjaGVzIG9ubHkgZWxlbWVudHMgdGhhdCBhcmUKICAgICAqIG1hdGNoZWQgYnkgZXZlcnkgY29tcGxleCBzZWxlY3RvciBpbiAkY29tcGxleGVzLgogICAgICoKICAgICAqIElmIG5vIHN1Y2ggbGlzdCBjYW4gYmUgcHJvZHVjZWQsIHJldHVybnMgYG51bGxgLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3Rvcj4gJGNvbXBsZXhlcwogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxDb21wbGV4U2VsZWN0b3I+fG51bGwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1bmlmeUNvbXBsZXgoYXJyYXkgJGNvbXBsZXhlcywgRmlsZVNwYW4gJHNwYW4pOiA/YXJyYXkKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRjb21wbGV4ZXMpID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkY29tcGxleGVzOwogICAgICAgIH0KCiAgICAgICAgJHVuaWZpZWRCYXNlID0gbnVsbDsKICAgICAgICAkbGVhZGluZ0NvbWJpbmF0b3IgPSBudWxsOwogICAgICAgICR0cmFpbGluZ0NvbWJpbmF0b3IgPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkY29tcGxleGVzIGFzICRjb21wbGV4KSB7CiAgICAgICAgICAgIGlmICgkY29tcGxleC0+aXNVc2VsZXNzKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXGNvdW50KCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkpID09PSAxICYmIFxjb3VudCgkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCkpICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkbmV3TGVhZGluZ0NvbWJpbmF0b3IgPSBcY291bnQoJGNvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpKSA9PT0gMSA/ICRjb21wbGV4LT5nZXRMZWFkaW5nQ29tYmluYXRvcnMoKVswXSA6IG51bGw7CiAgICAgICAgICAgICAgICBpZiAoJGxlYWRpbmdDb21iaW5hdG9yICE9PSBudWxsICYmICFFcXVhdGFibGVVdGlsOjplcXVhbHMoJG5ld0xlYWRpbmdDb21iaW5hdG9yLCAkbGVhZGluZ0NvbWJpbmF0b3IpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxlYWRpbmdDb21iaW5hdG9yID0gJG5ld0xlYWRpbmdDb21iaW5hdG9yOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYmFzZSA9ICRjb21wbGV4LT5nZXRMYXN0Q29tcG9uZW50KCk7CgogICAgICAgICAgICBpZiAoXGNvdW50KCRiYXNlLT5nZXRDb21iaW5hdG9ycygpKSAhPT0gMCkgewogICAgICAgICAgICAgICAgJG5ld1RyYWlsaW5nQ29tYmluYXRvciA9IFxjb3VudCgkYmFzZS0+Z2V0Q29tYmluYXRvcnMoKSkgPT09IDEgPyAkYmFzZS0+Z2V0Q29tYmluYXRvcnMoKVswXSA6IG51bGw7CgogICAgICAgICAgICAgICAgaWYgKCR0cmFpbGluZ0NvbWJpbmF0b3IgIT09IG51bGwgJiYgJG5ld1RyYWlsaW5nQ29tYmluYXRvciAhPT0gJHRyYWlsaW5nQ29tYmluYXRvcikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0cmFpbGluZ0NvbWJpbmF0b3IgPSAkbmV3VHJhaWxpbmdDb21iaW5hdG9yOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHVuaWZpZWRCYXNlID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdW5pZmllZEJhc2UgPSAkYmFzZS0+Z2V0U2VsZWN0b3IoKS0+Z2V0Q29tcG9uZW50cygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGJhc2UtPmdldFNlbGVjdG9yKCktPmdldENvbXBvbmVudHMoKSBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgICAgICAgICAgJHVuaWZpZWRCYXNlID0gJHNpbXBsZS0+dW5pZnkoJHVuaWZpZWRCYXNlKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR1bmlmaWVkQmFzZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR3aXRob3V0QmFzZXMgPSBbXTsKICAgICAgICAkaGFzTGluZUJyZWFrID0gZmFsc2U7CiAgICAgICAgZm9yZWFjaCAoJGNvbXBsZXhlcyBhcyAkY29tcGxleCkgewogICAgICAgICAgICBpZiAoXGNvdW50KCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkpID4gMSkgewogICAgICAgICAgICAgICAgJHdpdGhvdXRCYXNlc1tdID0gbmV3IENvbXBsZXhTZWxlY3RvcigkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCksIGFycmF5X3NsaWNlKCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCksIDAsIFxjb3VudCgkY29tcGxleC0+Z2V0Q29tcG9uZW50cygpKSAtIDEpLCAkY29tcGxleC0+Z2V0U3BhbigpLCAkY29tcGxleC0+Z2V0TGluZUJyZWFrKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNvbXBsZXgtPmdldExpbmVCcmVhaygpKSB7CiAgICAgICAgICAgICAgICAkaGFzTGluZUJyZWFrID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgXGFzc2VydCgkdW5pZmllZEJhc2UgIT09IG51bGwpOwoKICAgICAgICAkYmFzZSA9IG5ldyBDb21wbGV4U2VsZWN0b3IoCiAgICAgICAgICAgICRsZWFkaW5nQ29tYmluYXRvciA9PT0gbnVsbCA/IFtdIDogWyRsZWFkaW5nQ29tYmluYXRvcl0sCiAgICAgICAgICAgIFtuZXcgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KG5ldyBDb21wb3VuZFNlbGVjdG9yKCR1bmlmaWVkQmFzZSwgJHNwYW4pLCAkdHJhaWxpbmdDb21iaW5hdG9yID09PSBudWxsID8gW10gOiBbJHRyYWlsaW5nQ29tYmluYXRvcl0sICRzcGFuKV0sCiAgICAgICAgICAgICRzcGFuLAogICAgICAgICAgICAkaGFzTGluZUJyZWFrCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OndlYXZlKCR3aXRob3V0QmFzZXMgPT09IFtdID8gWyRiYXNlXSA6IGFycmF5X21lcmdlKExpc3RVdGlsOjpleGNlcHRMYXN0KCR3aXRob3V0QmFzZXMpLCBbTGlzdFV0aWw6Omxhc3QoJHdpdGhvdXRCYXNlcyktPmNvbmNhdGVuYXRlKCRiYXNlLCAkc3BhbildKSwgJHNwYW4pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHtAc2VlIENvbXBvdW5kU2VsZWN0b3J9IHRoYXQgbWF0Y2hlcyBvbmx5IGVsZW1lbnRzIHRoYXQgYXJlIG1hdGNoZWQgYnkKICAgICAqIGJvdGggJGNvbXBvdW5kMSBhbmQgJGNvbXBvdW5kMi4KICAgICAqCiAgICAgKiBJZiBubyBzdWNoIHNlbGVjdG9yIGNhbiBiZSBwcm9kdWNlZCwgcmV0dXJucyBgbnVsbGAuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdW5pZnlDb21wb3VuZChDb21wb3VuZFNlbGVjdG9yICRjb21wb3VuZDEsIENvbXBvdW5kU2VsZWN0b3IgJGNvbXBvdW5kMik6ID9Db21wb3VuZFNlbGVjdG9yCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICRjb21wb3VuZDItPmdldENvbXBvbmVudHMoKTsKCiAgICAgICAgZm9yZWFjaCAoJGNvbXBvdW5kMS0+Z2V0Q29tcG9uZW50cygpIGFzICRzaW1wbGUpIHsKICAgICAgICAgICAgJHVuaWZpZWQgPSAkc2ltcGxlLT51bmlmeSgkcmVzdWx0KTsKCiAgICAgICAgICAgIGlmICgkdW5pZmllZCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXN1bHQgPSAkdW5pZmllZDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQ29tcG91bmRTZWxlY3RvcigkcmVzdWx0LCAkY29tcG91bmQxLT5nZXRTcGFuKCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHtAc2VlIFNpbXBsZVNlbGVjdG9yfSB0aGF0IG1hdGNoZXMgb25seSBlbGVtZW50cyB0aGF0IGFyZSBtYXRjaGVkIGJ5CiAgICAgKiBib3RoICRzZWxlY3RvcjEgYW5kICRzZWxlY3RvcjIsIHdoaWNoIG11c3QgYm90aCBiZSBlaXRoZXIKICAgICAqIHtAc2VlIFVuaXZlcnNhbFNlbGVjdG9yfXMgb3Ige0BzZWUgVHlwZVNlbGVjdG9yfXMuCiAgICAgKgogICAgICogSWYgbm8gc3VjaCBzZWxlY3RvciBjYW4gYmUgcHJvZHVjZWQsIHJldHVybnMgYG51bGxgLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVuaWZ5VW5pdmVyc2FsQW5kRWxlbWVudChTaW1wbGVTZWxlY3RvciAkc2VsZWN0b3IxLCBTaW1wbGVTZWxlY3RvciAkc2VsZWN0b3IyKTogP1NpbXBsZVNlbGVjdG9yCiAgICB7CiAgICAgICAgWyRuYW1lc3BhY2UxLCAkbmFtZTFdID0gc2VsZjo6bmFtZXNwYWNlQW5kTmFtZSgkc2VsZWN0b3IxLCAnc2VsZWN0b3IxJyk7CiAgICAgICAgWyRuYW1lc3BhY2UyLCAkbmFtZTJdID0gc2VsZjo6bmFtZXNwYWNlQW5kTmFtZSgkc2VsZWN0b3IyLCAnc2VsZWN0b3IyJyk7CgogICAgICAgIGlmICgkbmFtZXNwYWNlMSA9PT0gJG5hbWVzcGFjZTIgfHwgJG5hbWVzcGFjZTIgPT09ICcqJykgewogICAgICAgICAgICAkbmFtZXNwYWNlID0gJG5hbWVzcGFjZTE7CiAgICAgICAgfSBlbHNlaWYgKCRuYW1lc3BhY2UxID09PSAnKicpIHsKICAgICAgICAgICAgJG5hbWVzcGFjZSA9ICRuYW1lc3BhY2UyOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuYW1lMSA9PT0gJG5hbWUyIHx8ICRuYW1lMiA9PT0gbnVsbCkgewogICAgICAgICAgICAkbmFtZSA9ICRuYW1lMTsKICAgICAgICB9IGVsc2VpZiAoJG5hbWUxID09PSBudWxsKSB7CiAgICAgICAgICAgICRuYW1lID0gJG5hbWUyOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuYW1lID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgVW5pdmVyc2FsU2VsZWN0b3IoJHNlbGVjdG9yMS0+Z2V0U3BhbigpLCAkbmFtZXNwYWNlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgVHlwZVNlbGVjdG9yKG5ldyBRdWFsaWZpZWROYW1lKCRuYW1lLCAkbmFtZXNwYWNlKSwgJHNlbGVjdG9yMS0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG5hbWVzcGFjZSBhbmQgbmFtZSBmb3IgJHNlbGVjdG9yLCB3aGljaCBtdXN0IGJlIGEKICAgICAqIHtAc2VlIFVuaXZlcnNhbFNlbGVjdG9yfSBvciBhIHtAc2VlIFR5cGVTZWxlY3Rvcn0uCiAgICAgKgogICAgICogVGhlICRuYW1lIHBhcmFtZXRlciBpcyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXtzdHJpbmd8bnVsbCwgc3RyaW5nfG51bGx9IFRoZSBuYW1lc3BhY2UgYW5kIHRoZSBuYW1lCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5hbWVzcGFjZUFuZE5hbWUoU2ltcGxlU2VsZWN0b3IgJHNlbGVjdG9yLCBzdHJpbmcgJG5hbWUpOiBhcnJheQogICAgewogICAgICAgIGlmICgkc2VsZWN0b3IgaW5zdGFuY2VvZiBVbml2ZXJzYWxTZWxlY3RvcikgewogICAgICAgICAgICByZXR1cm4gWyRzZWxlY3Rvci0+Z2V0TmFtZXNwYWNlKCksIG51bGxdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzZWxlY3RvciBpbnN0YW5jZW9mIFR5cGVTZWxlY3RvcikgewogICAgICAgICAgICByZXR1cm4gWyRzZWxlY3Rvci0+Z2V0TmFtZSgpLT5nZXROYW1lc3BhY2UoKSwgJHNlbGVjdG9yLT5nZXROYW1lKCktPmdldE5hbWUoKV07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiQXJndW1lbnQgJG5hbWUgbXVzdCBiZSBhIFVuaXZlcnNhbFNlbGVjdG9yIG9yIGEgVHlwZVNlbGVjdG9yLiIpOwogICAgfQoKICAgIC8qKgogICAgICogRXhwYW5kcyAicGFyZW50aGVzaXplZCBzZWxlY3RvcnMiIGluICRjb21wbGV4ZXMuCiAgICAgKgogICAgICogVGhhdCBpcywgaWYgd2UgaGF2ZSBgLkEgLkIge0BleHRlbmQgLkN9YCBhbmQgYC5EIC5DIHsuLi59YCwgdGhpcwogICAgICogY29uY2VwdHVhbGx5IGV4cGFuZHMgaW50byBgLkQgLkMsIC5EICguQSAuQilgLCBhbmQgdGhpcyBmdW5jdGlvbiB0cmFuc2xhdGVzCiAgICAgKiBgLkQgKC5BIC5CKWAgaW50byBgLkQgLkEgLkIsIC5BIC5EIC5CYC4gRm9yIHRob3JvdWdobmVzcywgYC5BLkQgLkJgIHdvdWxkCiAgICAgKiBhbHNvIGJlIHJlcXVpcmVkLCBidXQgaW5jbHVkaW5nIG1lcmdlZCBzZWxlY3RvcnMgcmVzdWx0cyBpbiBleHBvbmVudGlhbAogICAgICogb3V0cHV0IGZvciB2ZXJ5IGxpdHRsZSBnYWluLgogICAgICoKICAgICAqIFRoZSBzZWxlY3RvciBgLkQgKC5BIC5CKWAgaXMgcmVwcmVzZW50ZWQgYXMgdGhlIGxpc3QgYFsuRCwgLkEgLkJdYC4KICAgICAqCiAgICAgKiBUaGUgJHNwYW4gd2lsbCBiZSB1c2VkIGZvciBhbnkgbmV3IGNvbWJpbmVkIHNlbGVjdG9ycy4KICAgICAqCiAgICAgKiBJZiAkZm9yY2VMaW5lQnJlYWsgaXMgYHRydWVgLCB0aGlzIHdpbGwgbWFyayBhbGwgcmV0dXJuZWQgY29tcGxleCBzZWxlY3RvcnMKICAgICAqIGFzIGhhdmluZyBsaW5lIGJyZWFrcy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxDb21wbGV4U2VsZWN0b3I+ICRjb21wbGV4ZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8Q29tcGxleFNlbGVjdG9yPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdlYXZlKGFycmF5ICRjb21wbGV4ZXMsIEZpbGVTcGFuICRzcGFuLCBib29sICRmb3JjZUxpbmVCcmVhayA9IGZhbHNlKTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRjb21wbGV4ZXMpID09PSAxKSB7CiAgICAgICAgICAgICRjb21wbGV4ID0gJGNvbXBsZXhlc1swXTsKCiAgICAgICAgICAgIGlmICghJGZvcmNlTGluZUJyZWFrIHx8ICRjb21wbGV4LT5nZXRMaW5lQnJlYWsoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRjb21wbGV4ZXM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBuZXcgQ29tcGxleFNlbGVjdG9yKCRjb21wbGV4LT5nZXRMZWFkaW5nQ29tYmluYXRvcnMoKSwgJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKSwgJGNvbXBsZXgtPmdldFNwYW4oKSwgdHJ1ZSksCiAgICAgICAgICAgIF07CiAgICAgICAgfQoKICAgICAgICAkcHJlZml4ZXMgPSBbJGNvbXBsZXhlc1swXV07CgogICAgICAgIGZvcmVhY2ggKGFycmF5X3NsaWNlKCRjb21wbGV4ZXMsIDEpIGFzICRjb21wbGV4KSB7CiAgICAgICAgICAgIGlmIChcY291bnQoJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKSkgPT09IDEpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwcmVmaXhlcyBhcyAkaSA9PiAkcHJlZml4KSB7CiAgICAgICAgICAgICAgICAgICAgJHByZWZpeGVzWyRpXSA9ICRwcmVmaXgtPmNvbmNhdGVuYXRlKCRjb21wbGV4LCAkc3BhbiwgJGZvcmNlTGluZUJyZWFrKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5ld1ByZWZpeGVzID0gW107CgogICAgICAgICAgICBmb3JlYWNoICgkcHJlZml4ZXMgYXMgJHByZWZpeCkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoc2VsZjo6d2VhdmVQYXJlbnRzKCRwcmVmaXgsICRjb21wbGV4LCAkc3BhbikgPz8gW10gYXMgJHBhcmVudFByZWZpeCkgewogICAgICAgICAgICAgICAgICAgICRuZXdQcmVmaXhlc1tdID0gJHBhcmVudFByZWZpeC0+d2l0aEFkZGl0aW9uYWxDb21wb25lbnQoTGlzdFV0aWw6Omxhc3QoJGNvbXBsZXgtPmdldENvbXBvbmVudHMoKSksICRzcGFuLCAkZm9yY2VMaW5lQnJlYWspOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkcHJlZml4ZXMgPSAkbmV3UHJlZml4ZXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHByZWZpeGVzOwogICAgfQoKICAgIC8qKgogICAgICogSW50ZXJ3ZWF2ZXMgJHByZWZpeCdzIGNvbXBvbmVudHMgd2l0aCAkYmFzZSdzIGNvbXBvbmVudHMgX290aGVyIHRoYW4KICAgICAqIHRoZSBsYXN0Xy4KICAgICAqCiAgICAgKiBSZXR1cm5zIGFsbCBwb3NzaWJsZSBvcmRlcmluZ3Mgb2YgdGhlIHNlbGVjdG9ycyBpbiB0aGUgaW5wdXRzIChpbmNsdWRpbmcKICAgICAqIHVzaW5nIHVuaWZpY2F0aW9uKSB0aGF0IG1haW50YWluIHRoZSByZWxhdGl2ZSBvcmRlcmluZyBvZiB0aGUgaW5wdXQuIEZvcgogICAgICogZXhhbXBsZSwgZ2l2ZW4gYC5mb28gLmJhcmAgYW5kIGAuYmF6IC5iYW5nIGRpdmAsIHRoaXMgd291bGQgcmV0dXJuIGAuZm9vCiAgICAgKiAuYmFyIC5iYXogLmJhbmcgZGl2YCwgYC5mb28gLmJhci5iYXogLmJhbmcgZGl2YCwgYC5mb28gLmJheiAuYmFyIC5iYW5nIGRpdmAsCiAgICAgKiBgLmZvbyAuYmF6IC5iYXIuYmFuZyBkaXZgLCBgLmZvbyAuYmF6IC5iYW5nIC5iYXIgZGl2YCwgYW5kIHNvIG9uIHVudGlsIGAuYmF6CiAgICAgKiAuYmFuZyAuZm9vIC5iYXIgZGl2YC4KICAgICAqCiAgICAgKiBTZW1hbnRpY2FsbHksIGZvciBzZWxlY3RvcnMgYFBgIGFuZCBgQ2AsIHRoaXMgcmV0dXJucyBhbGwgc2VsZWN0b3JzIGBQQ19pYAogICAgICogc3VjaCB0aGF0IHRoZSB1bmlvbiBvdmVyIGFsbCBgaWAgb2YgZWxlbWVudHMgbWF0Y2hlZCBieSBgUENfaWAgaXMgaWRlbnRpY2FsCiAgICAgKiB0byB0aGUgaW50ZXJzZWN0aW9uIG9mIGFsbCBlbGVtZW50cyBtYXRjaGVkIGJ5IGBDYCBhbmQgYWxsIGRlc2NlbmRhbnRzIG9mCiAgICAgKiBlbGVtZW50cyBtYXRjaGVkIGJ5IGBQYC4gU29tZSBgUENfaWAgYXJlIGVsaWRlZCB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhlCiAgICAgKiBvdXRwdXQuCiAgICAgKgogICAgICogVGhlICRzcGFuIHdpbGwgYmUgdXNlZCBmb3IgYW55IG5ldyBjb21iaW5lZCBzZWxlY3RvcnMuCiAgICAgKgogICAgICogUmV0dXJucyBgbnVsbGAgaWYgdGhpcyBpbnRlcnNlY3Rpb24gaXMgZW1wdHkuCiAgICAgKgogICAgICogQHJldHVybiBsaXN0PENvbXBsZXhTZWxlY3Rvcj58bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB3ZWF2ZVBhcmVudHMoQ29tcGxleFNlbGVjdG9yICRwcmVmaXgsIENvbXBsZXhTZWxlY3RvciAkYmFzZSwgRmlsZVNwYW4gJHNwYW4pOiA/YXJyYXkKICAgIHsKICAgICAgICAkbGVhZGluZ0NvbWJpbmF0b3JzID0gc2VsZjo6bWVyZ2VMZWFkaW5nQ29tYmluYXRvcnMoJHByZWZpeC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCksICRiYXNlLT5nZXRMZWFkaW5nQ29tYmluYXRvcnMoKSk7CiAgICAgICAgaWYgKCRsZWFkaW5nQ29tYmluYXRvcnMgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBNYWtlIHF1ZXVlcyBvZiBfb25seV8gdGhlIHBhcmVudCBzZWxlY3RvcnMuIFRoZSBwcmVmaXggb25seSBjb250YWlucwogICAgICAgIC8vIHBhcmVudHMsIGJ1dCB0aGUgY29tcGxleCBzZWxlY3RvciBoYXMgYSB0YXJnZXQgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHdlYXZlCiAgICAgICAgLy8gaW4uCiAgICAgICAgJHF1ZXVlMSA9ICRwcmVmaXgtPmdldENvbXBvbmVudHMoKTsKICAgICAgICAkcXVldWUyID0gTGlzdFV0aWw6OmV4Y2VwdExhc3QoJGJhc2UtPmdldENvbXBvbmVudHMoKSk7CgogICAgICAgICRmaW5hbENvbWJpbmF0b3JzID0gc2VsZjo6bWVyZ2VUcmFpbGluZ0NvbWJpbmF0b3JzKCRxdWV1ZTEsICRxdWV1ZTIsICRzcGFuKTsKICAgICAgICBpZiAoJGZpbmFsQ29tYmluYXRvcnMgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBNYWtlIHN1cmUgYWxsIHNlbGVjdG9ycyB0aGF0IGFyZSByZXF1aXJlZCB0byBiZSBhdCB0aGUgcm9vdCBhcmUgdW5pZmllZAogICAgICAgIC8vIHdpdGggb25lIGFub3RoZXIuCiAgICAgICAgJHJvb3Rpc2gxID0gc2VsZjo6Zmlyc3RJZlJvb3Rpc2goJHF1ZXVlMSk7CiAgICAgICAgJHJvb3Rpc2gyID0gc2VsZjo6Zmlyc3RJZlJvb3Rpc2goJHF1ZXVlMik7CgogICAgICAgIGlmICgkcm9vdGlzaDEgIT09IG51bGwgJiYgJHJvb3Rpc2gyICE9PSBudWxsKSB7CiAgICAgICAgICAgICRyb290aXNoID0gc2VsZjo6dW5pZnlDb21wb3VuZCgkcm9vdGlzaDEtPmdldFNlbGVjdG9yKCksICRyb290aXNoMi0+Z2V0U2VsZWN0b3IoKSk7CgogICAgICAgICAgICBpZiAoJHJvb3Rpc2ggPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRxdWV1ZTEsIG5ldyBDb21wbGV4U2VsZWN0b3JDb21wb25lbnQoJHJvb3Rpc2gsICRyb290aXNoMS0+Z2V0Q29tYmluYXRvcnMoKSwgJHJvb3Rpc2gxLT5nZXRTcGFuKCkpKTsKICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcXVldWUyLCBuZXcgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KCRyb290aXNoLCAkcm9vdGlzaDItPmdldENvbWJpbmF0b3JzKCksICRyb290aXNoMi0+Z2V0U3BhbigpKSk7CiAgICAgICAgfSBlbHNlaWYgKCRyb290aXNoMSAhPT0gbnVsbCB8fCAkcm9vdGlzaDIgIT09IG51bGwpIHsKICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IG9uZSByb290aXNoIHNlbGVjdG9yLCBpdCBzaG91bGQgb25seSBhcHBlYXIgaW4gdGhlIGZpcnN0CiAgICAgICAgICAgIC8vIHBvc2l0aW9uIG9mIHRoZSByZXN1bHRpbmcgc2VsZWN0b3IuIFdlIGNhbiBlbnN1cmUgdGhhdCBoYXBwZW5zIGJ5IGFkZGluZwogICAgICAgICAgICAvLyBpdCB0byB0aGUgYmVnaW5uaW5nIG9mIF9ib3RoXyBxdWV1ZXMuCiAgICAgICAgICAgICRyb290aXNoID0gJHJvb3Rpc2gxID8/ICRyb290aXNoMjsKICAgICAgICAgICAgXGFzc2VydCgkcm9vdGlzaCAhPT0gbnVsbCk7CiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHF1ZXVlMSwgJHJvb3Rpc2gpOwogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRxdWV1ZTIsICRyb290aXNoKTsKICAgICAgICB9CgogICAgICAgICRncm91cHMxID0gc2VsZjo6Z3JvdXBTZWxlY3RvcnMoJHF1ZXVlMSk7CiAgICAgICAgJGdyb3VwczIgPSBzZWxmOjpncm91cFNlbGVjdG9ycygkcXVldWUyKTsKCiAgICAgICAgLyoqIEB2YXIgbGlzdDxsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4+ICRsY3MgKi8KICAgICAgICAkbGNzID0gTGlzdFV0aWw6Omxvbmdlc3RDb21tb25TdWJzZXF1ZW5jZSgkZ3JvdXBzMiwgJGdyb3VwczEsIGZ1bmN0aW9uICgkZ3JvdXAxLCAkZ3JvdXAyKSB1c2UgKCRzcGFuKSB7CiAgICAgICAgICAgIGlmIChFcXVhdGFibGVVdGlsOjpsaXN0RXF1YWxzKCRncm91cDEsICRncm91cDIpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGdyb3VwMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHNlbGY6OmNvbXBsZXhJc1BhcmVudFN1cGVyc2VsZWN0b3IoJGdyb3VwMSwgJGdyb3VwMikpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZ3JvdXAyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc2VsZjo6Y29tcGxleElzUGFyZW50U3VwZXJzZWxlY3RvcigkZ3JvdXAyLCAkZ3JvdXAxKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRncm91cDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghc2VsZjo6bXVzdFVuaWZ5KCRncm91cDEsICRncm91cDIpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHVuaWZpZWQgPSBzZWxmOjp1bmlmeUNvbXBsZXgoW25ldyBDb21wbGV4U2VsZWN0b3IoW10sICRncm91cDEsICRzcGFuKSwgbmV3IENvbXBsZXhTZWxlY3RvcihbXSwgJGdyb3VwMiwgJHNwYW4pXSwgJHNwYW4pOwoKICAgICAgICAgICAgaWYgKCR1bmlmaWVkID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoXGNvdW50KCR1bmlmaWVkKSA+IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHVuaWZpZWRbMF0tPmdldENvbXBvbmVudHMoKTsKICAgICAgICB9KTsKCiAgICAgICAgJGNob2ljZXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGxjcyBhcyAkZ3JvdXApIHsKICAgICAgICAgICAgJG5ld0Nob2ljZSA9IFtdOwogICAgICAgICAgICAvKiogQHZhciBsaXN0PGxpc3Q8bGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+Pj4gJGNodW5rcyAqLwogICAgICAgICAgICAkY2h1bmtzID0gc2VsZjo6Y2h1bmtzKCRncm91cHMxLCAkZ3JvdXBzMiwgZm4oJHNlcXVlbmNlKSA9PiBzZWxmOjpjb21wbGV4SXNQYXJlbnRTdXBlcnNlbGVjdG9yKCRzZXF1ZW5jZVswXSwgJGdyb3VwKSk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRjaHVua3MgYXMgJGNodW5rKSB7CiAgICAgICAgICAgICAgICAkZmxhdHRlbmVkID0gW107CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkY2h1bmsgYXMgJGNodW5rR3JvdXApIHsKICAgICAgICAgICAgICAgICAgICAkZmxhdHRlbmVkID0gYXJyYXlfbWVyZ2UoJGZsYXR0ZW5lZCwgJGNodW5rR3JvdXApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG5ld0Nob2ljZVtdID0gJGZsYXR0ZW5lZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyoqIEB2YXIgbGlzdDxsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4+ICRncm91cHMxICovCiAgICAgICAgICAgIC8qKiBAdmFyIGxpc3Q8bGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+PiAkZ3JvdXBzMiAqLwogICAgICAgICAgICAkY2hvaWNlc1tdID0gJG5ld0Nob2ljZTsKICAgICAgICAgICAgJGNob2ljZXNbXSA9IFskZ3JvdXBdOwogICAgICAgICAgICBhcnJheV9zaGlmdCgkZ3JvdXBzMSk7CiAgICAgICAgICAgIGFycmF5X3NoaWZ0KCRncm91cHMyKTsKICAgICAgICB9CgogICAgICAgICRuZXdDaG9pY2UgPSBbXTsKICAgICAgICAvKiogQHZhciBsaXN0PGxpc3Q8bGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+Pj4gJGNodW5rcyAqLwogICAgICAgICRjaHVua3MgPSBzZWxmOjpjaHVua3MoJGdyb3VwczEsICRncm91cHMyLCBmbigkc2VxdWVuY2UpID0+IGNvdW50KCRzZXF1ZW5jZSkgPT09IDApOwogICAgICAgIGZvcmVhY2ggKCRjaHVua3MgYXMgJGNodW5rKSB7CiAgICAgICAgICAgICRmbGF0dGVuZWQgPSBbXTsKICAgICAgICAgICAgZm9yZWFjaCAoJGNodW5rIGFzICRjaHVua0dyb3VwKSB7CiAgICAgICAgICAgICAgICAkZmxhdHRlbmVkID0gYXJyYXlfbWVyZ2UoJGZsYXR0ZW5lZCwgJGNodW5rR3JvdXApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRuZXdDaG9pY2VbXSA9ICRmbGF0dGVuZWQ7CiAgICAgICAgfQoKICAgICAgICAkY2hvaWNlc1tdID0gJG5ld0Nob2ljZTsKCiAgICAgICAgZm9yZWFjaCAoJGZpbmFsQ29tYmluYXRvcnMgYXMgJGZpbmFsQ29tYmluYXRvcikgewogICAgICAgICAgICAkY2hvaWNlc1tdID0gJGZpbmFsQ29tYmluYXRvcjsKICAgICAgICB9CgogICAgICAgICRjaG9pY2VzID0gYXJyYXlfZmlsdGVyKCRjaG9pY2VzLCBmbigkY2hvaWNlKSA9PiAkY2hvaWNlICE9PSBbXSk7CgogICAgICAgICRwYXRocyA9IHNlbGY6OnBhdGhzKCRjaG9pY2VzKTsKCiAgICAgICAgcmV0dXJuIGFycmF5X21hcChmdW5jdGlvbiAoYXJyYXkgJHBhdGgpIHVzZSAoJGxlYWRpbmdDb21iaW5hdG9ycywgJHByZWZpeCwgJGJhc2UsICRzcGFuKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXRoIGFzICRncm91cCkgewogICAgICAgICAgICAgICAgJHJlc3VsdCA9IGFycmF5X21lcmdlKCRyZXN1bHQsICRncm91cCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleFNlbGVjdG9yKCRsZWFkaW5nQ29tYmluYXRvcnMsICRyZXN1bHQsICRzcGFuLCAkcHJlZml4LT5nZXRMaW5lQnJlYWsoKSB8fCAkYmFzZS0+Z2V0TGluZUJyZWFrKCkpOwogICAgICAgIH0sICRwYXRocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiB0aGUgZmlyc3QgZWxlbWVudCBvZiAkcXVldWUgaGFzIGEgYDpyb290YCBzZWxlY3RvciwgcmVtb3ZlcyBhbmQgcmV0dXJucwogICAgICogdGhhdCBlbGVtZW50LgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4gJHF1ZXVlCiAgICAgKgogICAgICogQHJldHVybiBDb21wbGV4U2VsZWN0b3JDb21wb25lbnR8bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmaXJzdElmUm9vdGlzaChhcnJheSAmJHF1ZXVlKTogP0NvbXBsZXhTZWxlY3RvckNvbXBvbmVudAogICAgewogICAgICAgIGlmIChlbXB0eSgkcXVldWUpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGZpcnN0ID0gJHF1ZXVlWzBdOwoKICAgICAgICBmb3JlYWNoICgkZmlyc3QtPmdldFNlbGVjdG9yKCktPmdldENvbXBvbmVudHMoKSBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgIGlmICgkc2ltcGxlIGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IgJiYgJHNpbXBsZS0+aXNDbGFzcygpICYmIFxpbl9hcnJheSgkc2ltcGxlLT5nZXROb3JtYWxpemVkTmFtZSgpLCBzZWxmOjpST09USVNIX1BTRVVET19DTEFTU0VTLCB0cnVlKSkgewogICAgICAgICAgICAgICAgYXJyYXlfc2hpZnQoJHF1ZXVlKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGZpcnN0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBsZWFkaW5nIGNvbWJpbmF0b3IgbGlzdCB0aGF0J3MgY29tcGF0aWJsZSB3aXRoIGJvdGggJGNvbWJpbmF0b3JzMQogICAgICogYW5kICRjb21iaW5hdG9yczIuCiAgICAgKgogICAgICogUmV0dXJucyBgbnVsbGAgaWYgdGhlIGNvbWJpbmF0b3IgbGlzdHMgY2FuJ3QgYmUgdW5pZmllZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxDc3NWYWx1ZTxDb21iaW5hdG9yPj58bnVsbCAkY29tYmluYXRvcnMxCiAgICAgKiBAcGFyYW0gbGlzdDxDc3NWYWx1ZTxDb21iaW5hdG9yPj58bnVsbCAkY29tYmluYXRvcnMyCiAgICAgKgogICAgICogQHJldHVybiBsaXN0PENzc1ZhbHVlPENvbWJpbmF0b3I+PnxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG1lcmdlTGVhZGluZ0NvbWJpbmF0b3JzKD9hcnJheSAkY29tYmluYXRvcnMxLCA/YXJyYXkgJGNvbWJpbmF0b3JzMik6ID9hcnJheQogICAgewogICAgICAgIGlmICgkY29tYmluYXRvcnMxID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb21iaW5hdG9yczIgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCRjb21iaW5hdG9yczEpID4gMSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJGNvbWJpbmF0b3JzMikgPiAxKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxjb3VudCgkY29tYmluYXRvcnMxKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJGNvbWJpbmF0b3JzMjsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJGNvbWJpbmF0b3JzMikgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICRjb21iaW5hdG9yczE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbWJpbmF0b3JzMSA9PT0gJGNvbWJpbmF0b3JzMiA/ICRjb21iaW5hdG9yczEgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogRXh0cmFjdHMgdHJhaWxpbmcge0BzZWUgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50fXMgd2l0aCB0cmFpbGluZyBjb21iaW5hdG9ycyBmcm9tCiAgICAgKiAkY29tcG9uZW50czEgYW5kICRjb21wb25lbnRzMiBhbmQgbWVyZ2VzIHRoZW0gdG9nZXRoZXIgaW50byBhIHNpbmdsZSBsaXN0LgogICAgICoKICAgICAqICBFYWNoIGVsZW1lbnQgaW4gdGhlIHJldHVybmVkIGxpc3QgaXMgYSBzZXQgb2YgY2hvaWNlcyBmb3IgYSBwYXJ0aWN1bGFyCiAgICAgKiBwb3NpdGlvbiBpbiBhIGNvbXBsZXggc2VsZWN0b3IuIEVhY2ggY2hvaWNlIGlzIHRoZSBjb250ZW50cyBvZiBhIGNvbXBsZXgKICAgICAqIHNlbGVjdG9yLCB3aGljaCBpcyB0byBzYXkgYSBsaXN0IG9mIGNvbXBsZXggc2VsZWN0b3IgY29tcG9uZW50cy4gVGhlIHVuaW9uCiAgICAgKiBvZiBlYWNoIHBhdGggdGhyb3VnaCB0aGVzZSBjaG9pY2VzIHdpbGwgbWF0Y2ggdGhlIGZ1bGwgc2V0IG9mIG5lY2Vzc2FyeQogICAgICogZWxlbWVudHMuCiAgICAgKgogICAgICogSWYgdGhlcmUgYXJlIG5vIGNvbWJpbmF0b3JzIHRvIGJlIG1lcmdlZCwgcmV0dXJucyBhbiBlbXB0eSBsaXN0LiBJZiB0aGUKICAgICAqIHNlcXVlbmNlcyBjYW4ndCBiZSBtZXJnZWQsIHJldHVybnMgYG51bGxgLgogICAgICoKICAgICAqIFRoZSAkc3BhbiB3aWxsIGJlIHVzZWQgZm9yIGFueSBuZXcgY29tYmluZWQgc2VsZWN0b3JzLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4gICAgICAgICAgICAgJGNvbXBvbmVudHMxCiAgICAgKiBAcGFyYW0gbGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+ICAgICAgICAgICAgICRjb21wb25lbnRzMgogICAgICogQHBhcmFtIGxpc3Q8bGlzdDxsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4+PiAkcmVzdWx0CiAgICAgKgogICAgICogQHJldHVybiBsaXN0PGxpc3Q8bGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+Pj58bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBtZXJnZVRyYWlsaW5nQ29tYmluYXRvcnMoYXJyYXkgJiRjb21wb25lbnRzMSwgYXJyYXkgJiRjb21wb25lbnRzMiwgRmlsZVNwYW4gJHNwYW4sIGFycmF5ICRyZXN1bHQgPSBbXSk6ID9hcnJheQogICAgewogICAgICAgICRjb21iaW5hdG9yczEgPSBcY291bnQoJGNvbXBvbmVudHMxKSA9PT0gMCA/IFtdIDogTGlzdFV0aWw6Omxhc3QoJGNvbXBvbmVudHMxKS0+Z2V0Q29tYmluYXRvcnMoKTsKICAgICAgICAkY29tYmluYXRvcnMyID0gXGNvdW50KCRjb21wb25lbnRzMikgPT09IDAgPyBbXSA6IExpc3RVdGlsOjpsYXN0KCRjb21wb25lbnRzMiktPmdldENvbWJpbmF0b3JzKCk7CgogICAgICAgIGlmIChcY291bnQoJGNvbWJpbmF0b3JzMSkgPT09IDAgJiYgXGNvdW50KCRjb21iaW5hdG9yczIpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvdW50KCRjb21iaW5hdG9yczEpID4gMSB8fCBjb3VudCgkY29tYmluYXRvcnMyKSA+IDEpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGlzIGNvZGUgbG9va3MgY29tcGxpY2F0ZWQsIGJ1dCBpdCdzIGFjdHVhbGx5IGp1c3QgYSBidW5jaCBvZiBzcGVjaWFsCiAgICAgICAgLy8gY2FzZXMgZm9yIGludGVyYWN0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBjb21iaW5hdG9ycy4KICAgICAgICAkY29tYmluYXRvcjEgPSAkY29tYmluYXRvcnMxWzBdID8/IG51bGw7CiAgICAgICAgJGNvbWJpbmF0b3IyID0gJGNvbWJpbmF0b3JzMlswXSA/PyBudWxsOwoKICAgICAgICBpZiAoJGNvbWJpbmF0b3IxICE9PSBudWxsICYmICRjb21iaW5hdG9yMiAhPT0gbnVsbCkgewogICAgICAgICAgICAkY29tcG9uZW50MSA9IGFycmF5X3BvcCgkY29tcG9uZW50czEpOwogICAgICAgICAgICBhc3NlcnQoJGNvbXBvbmVudDEgaW5zdGFuY2VvZiBDb21wbGV4U2VsZWN0b3JDb21wb25lbnQpOwogICAgICAgICAgICAkY29tcG9uZW50MiA9IGFycmF5X3BvcCgkY29tcG9uZW50czIpOwogICAgICAgICAgICBhc3NlcnQoJGNvbXBvbmVudDIgaW5zdGFuY2VvZiBDb21wbGV4U2VsZWN0b3JDb21wb25lbnQpOwoKICAgICAgICAgICAgaWYgKCRjb21iaW5hdG9yMS0+Z2V0VmFsdWUoKSA9PT0gQ29tYmluYXRvcjo6Rk9MTE9XSU5HX1NJQkxJTkcgJiYgJGNvbWJpbmF0b3IyLT5nZXRWYWx1ZSgpID09PSBDb21iaW5hdG9yOjpGT0xMT1dJTkdfU0lCTElORykgewogICAgICAgICAgICAgICAgaWYgKCRjb21wb25lbnQxLT5nZXRTZWxlY3RvcigpLT5pc1N1cGVyc2VsZWN0b3IoJGNvbXBvbmVudDItPmdldFNlbGVjdG9yKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcmVzdWx0LCBbWyRjb21wb25lbnQyXV0pOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRjb21wb25lbnQyLT5nZXRTZWxlY3RvcigpLT5pc1N1cGVyc2VsZWN0b3IoJGNvbXBvbmVudDEtPmdldFNlbGVjdG9yKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcmVzdWx0LCBbWyRjb21wb25lbnQxXV0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY2hvaWNlcyA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgWyRjb21wb25lbnQxLCAkY29tcG9uZW50Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgIFskY29tcG9uZW50MiwgJGNvbXBvbmVudDFdLAogICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgICR1bmlmaWVkID0gc2VsZjo6dW5pZnlDb21wb3VuZCgkY29tcG9uZW50MS0+Z2V0U2VsZWN0b3IoKSwgJGNvbXBvbmVudDItPmdldFNlbGVjdG9yKCkpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHVuaWZpZWQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNob2ljZXNbXSA9IFtuZXcgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KCR1bmlmaWVkLCBbJGNvbWJpbmF0b3IxXSwgJHNwYW4pXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHJlc3VsdCwgJGNob2ljZXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoKCRjb21iaW5hdG9yMS0+Z2V0VmFsdWUoKSA9PT0gQ29tYmluYXRvcjo6Rk9MTE9XSU5HX1NJQkxJTkcgJiYgJGNvbWJpbmF0b3IyLT5nZXRWYWx1ZSgpID09PSBDb21iaW5hdG9yOjpORVhUX1NJQkxJTkcpIHx8ICgkY29tYmluYXRvcjEtPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6Ok5FWFRfU0lCTElORyAmJiAkY29tYmluYXRvcjItPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6OkZPTExPV0lOR19TSUJMSU5HKSkgewogICAgICAgICAgICAgICAgJGZvbGxvd2luZ1NpYmxpbmdDb21wb25lbnQgPSAkY29tYmluYXRvcjEtPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6OkZPTExPV0lOR19TSUJMSU5HID8gJGNvbXBvbmVudDEgOiAkY29tcG9uZW50MjsKICAgICAgICAgICAgICAgICRuZXh0U2libGluZ0NvbXBvbmVudCA9ICRjb21iaW5hdG9yMS0+Z2V0VmFsdWUoKSA9PT0gQ29tYmluYXRvcjo6Rk9MTE9XSU5HX1NJQkxJTkcgPyAkY29tcG9uZW50MiA6ICRjb21wb25lbnQxOwoKICAgICAgICAgICAgICAgIGlmICgkZm9sbG93aW5nU2libGluZ0NvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKS0+aXNTdXBlcnNlbGVjdG9yKCRuZXh0U2libGluZ0NvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKSkpIHsKICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRyZXN1bHQsIFtbJG5leHRTaWJsaW5nQ29tcG9uZW50XV0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdW5pZmllZCA9IHNlbGY6OnVuaWZ5Q29tcG91bmQoJGZvbGxvd2luZ1NpYmxpbmdDb21wb25lbnQtPmdldFNlbGVjdG9yKCksICRuZXh0U2libGluZ0NvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKSk7CgogICAgICAgICAgICAgICAgICAgICRjaG9pY2VzID0gWwogICAgICAgICAgICAgICAgICAgICAgICBbJGZvbGxvd2luZ1NpYmxpbmdDb21wb25lbnQsICRuZXh0U2libGluZ0NvbXBvbmVudF0sCiAgICAgICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR1bmlmaWVkICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaG9pY2VzW10gPSBbbmV3IENvbXBsZXhTZWxlY3RvckNvbXBvbmVudCgkdW5pZmllZCwgJG5leHRTaWJsaW5nQ29tcG9uZW50LT5nZXRDb21iaW5hdG9ycygpLCAkc3BhbildOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcmVzdWx0LCAkY2hvaWNlcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkY29tYmluYXRvcjEtPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6OkNISUxEICYmICgkY29tYmluYXRvcjItPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6Ok5FWFRfU0lCTElORyB8fCAkY29tYmluYXRvcjItPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6OkZPTExPV0lOR19TSUJMSU5HKSkgewogICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcmVzdWx0LCBbWyRjb21wb25lbnQyXV0pOwogICAgICAgICAgICAgICAgJGNvbXBvbmVudHMxW10gPSAkY29tcG9uZW50MTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRjb21iaW5hdG9yMi0+Z2V0VmFsdWUoKSA9PT0gQ29tYmluYXRvcjo6Q0hJTEQgJiYgKCRjb21iaW5hdG9yMS0+Z2V0VmFsdWUoKSA9PT0gQ29tYmluYXRvcjo6TkVYVF9TSUJMSU5HIHx8ICRjb21iaW5hdG9yMS0+Z2V0VmFsdWUoKSA9PT0gQ29tYmluYXRvcjo6Rk9MTE9XSU5HX1NJQkxJTkcpKSB7CiAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRyZXN1bHQsIFtbJGNvbXBvbmVudDFdXSk7CiAgICAgICAgICAgICAgICAkY29tcG9uZW50czJbXSA9ICRjb21wb25lbnQyOwogICAgICAgICAgICB9IGVsc2VpZiAoRXF1YXRhYmxlVXRpbDo6ZXF1YWxzKCRjb21iaW5hdG9yMSwgJGNvbWJpbmF0b3IyKSkgewogICAgICAgICAgICAgICAgJHVuaWZpZWQgPSBzZWxmOjp1bmlmeUNvbXBvdW5kKCRjb21wb25lbnQxLT5nZXRTZWxlY3RvcigpLCAkY29tcG9uZW50Mi0+Z2V0U2VsZWN0b3IoKSk7CgogICAgICAgICAgICAgICAgaWYgKCR1bmlmaWVkID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcmVzdWx0LCBbW25ldyBDb21wbGV4U2VsZWN0b3JDb21wb25lbnQoJHVuaWZpZWQsIFskY29tYmluYXRvcjFdLCAkc3BhbildXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1lcmdlVHJhaWxpbmdDb21iaW5hdG9ycygkY29tcG9uZW50czEsICRjb21wb25lbnRzMiwgJHNwYW4sICRyZXN1bHQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb21iaW5hdG9yMSAhPT0gbnVsbCkgewogICAgICAgICAgICAkY29tcG9uZW50MSA9IGFycmF5X3BvcCgkY29tcG9uZW50czEpOwogICAgICAgICAgICBcYXNzZXJ0KCRjb21wb25lbnQxIGluc3RhbmNlb2YgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KTsKCiAgICAgICAgICAgIGlmICgkY29tYmluYXRvcjEtPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6OkNISUxEICYmIFxjb3VudCgkY29tcG9uZW50czIpID4gMCAmJiBMaXN0VXRpbDo6bGFzdCgkY29tcG9uZW50czIpLT5nZXRTZWxlY3RvcigpLT5pc1N1cGVyc2VsZWN0b3IoJGNvbXBvbmVudDEtPmdldFNlbGVjdG9yKCkpKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGNvbXBvbmVudHMyKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcmVzdWx0LCBbWyRjb21wb25lbnQxXV0pOwoKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1lcmdlVHJhaWxpbmdDb21iaW5hdG9ycygkY29tcG9uZW50czEsICRjb21wb25lbnRzMiwgJHNwYW4sICRyZXN1bHQpOwogICAgICAgIH0KCiAgICAgICAgJGNvbXBvbmVudDIgPSBhcnJheV9wb3AoJGNvbXBvbmVudHMyKTsKICAgICAgICBcYXNzZXJ0KCRjb21wb25lbnQyIGluc3RhbmNlb2YgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KTsKICAgICAgICBhc3NlcnQoJGNvbWJpbmF0b3IyICE9PSBudWxsKTsKCiAgICAgICAgaWYgKCRjb21iaW5hdG9yMi0+Z2V0VmFsdWUoKSA9PT0gQ29tYmluYXRvcjo6Q0hJTEQgJiYgXGNvdW50KCRjb21wb25lbnRzMSkgPiAwICYmIExpc3RVdGlsOjpsYXN0KCRjb21wb25lbnRzMSktPmdldFNlbGVjdG9yKCktPmlzU3VwZXJzZWxlY3RvcigkY29tcG9uZW50Mi0+Z2V0U2VsZWN0b3IoKSkpIHsKICAgICAgICAgICAgYXJyYXlfcG9wKCRjb21wb25lbnRzMSk7CiAgICAgICAgfQoKICAgICAgICBhcnJheV91bnNoaWZ0KCRyZXN1bHQsIFtbJGNvbXBvbmVudDJdXSk7CgogICAgICAgIHJldHVybiBzZWxmOjptZXJnZVRyYWlsaW5nQ29tYmluYXRvcnMoJGNvbXBvbmVudHMxLCAkY29tcG9uZW50czIsICRzcGFuLCAkcmVzdWx0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkY29tcGxleDEgYW5kICRjb21wbGV4MiBuZWVkIHRvIGJlIHVuaWZpZWQgdG8gcHJvZHVjZSBhCiAgICAgKiB2YWxpZCBjb21iaW5lZCBzZWxlY3Rvci4KICAgICAqCiAgICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSB3aGVuIGJvdGggc2VsZWN0b3JzIGNvbnRhaW4gdGhlIHNhbWUgdW5pcXVlIHNpbXBsZQogICAgICogc2VsZWN0b3IsIHN1Y2ggYXMgYW4gSUQuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8Q29tcGxleFNlbGVjdG9yQ29tcG9uZW50PiAkY29tcGxleDEKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4gJGNvbXBsZXgyCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG11c3RVbmlmeShhcnJheSAkY29tcGxleDEsIGFycmF5ICRjb21wbGV4Mik6IGJvb2wKICAgIHsKICAgICAgICAkdW5pcXVlU2VsZWN0b3JzID0gW107CiAgICAgICAgZm9yZWFjaCAoJGNvbXBsZXgxIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGNvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKS0+Z2V0Q29tcG9uZW50cygpIGFzICRzaW1wbGUpIHsKICAgICAgICAgICAgICAgIGlmIChzZWxmOjppc1VuaXF1ZSgkc2ltcGxlKSkgewogICAgICAgICAgICAgICAgICAgICR1bmlxdWVTZWxlY3RvcnNbXSA9ICRzaW1wbGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJHVuaXF1ZVNlbGVjdG9ycykgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGNvbXBsZXgyIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGNvbXBvbmVudC0+Z2V0U2VsZWN0b3IoKS0+Z2V0Q29tcG9uZW50cygpIGFzICRzaW1wbGUpIHsKICAgICAgICAgICAgICAgIGlmIChzZWxmOjppc1VuaXF1ZSgkc2ltcGxlKSAmJiBFcXVhdGFibGVVdGlsOjppdGVyYWJsZUNvbnRhaW5zKCR1bmlxdWVTZWxlY3RvcnMsICRzaW1wbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBhIHtAc2VlIENvbXBvdW5kU2VsZWN0b3J9IG1heSBjb250YWluIG9ubHkgb25lIHNpbXBsZSBzZWxlY3RvciBvZgogICAgICogdGhlIHNhbWUgdHlwZSBhcyAkc2ltcGxlLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpc1VuaXF1ZShTaW1wbGVTZWxlY3RvciAkc2ltcGxlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkc2ltcGxlIGluc3RhbmNlb2YgSURTZWxlY3RvciB8fCAoJHNpbXBsZSBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yICYmICRzaW1wbGUtPmlzRWxlbWVudCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIG9yZGVyaW5ncyBvZiBpbml0aWFsIHN1YnNlcXVlbmNlcyBvZiAkcXVldWUxIGFuZCAkcXVldWUyLgogICAgICoKICAgICAqIFRoZSAkZG9uZSBjYWxsYmFjayBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgZXh0ZW50IG9mIHRoZSBpbml0aWFsCiAgICAgKiBzdWJzZXF1ZW5jZXMuIEl0J3MgY2FsbGVkIHdpdGggZWFjaCBxdWV1ZSB1bnRpbCBpdCByZXR1cm5zIGB0cnVlYC4KICAgICAqCiAgICAgKiBUaGlzIGRlc3RydWN0aXZlbHkgcmVtb3ZlcyB0aGUgaW5pdGlhbCBzdWJzZXF1ZW5jZXMgb2YgJHF1ZXVlMSBhbmQKICAgICAqICRxdWV1ZTIuCiAgICAgKgogICAgICogRm9yIGV4YW1wbGUsIGdpdmVuIGAoQSBCIEMgfCBEIEUpYCBhbmQgYCgxIDIgfCAzIDQgNSlgICh3aXRoIGB8YCBkZW5vdGluZwogICAgICogdGhlIGJvdW5kYXJ5IG9mIHRoZSBpbml0aWFsIHN1YnNlcXVlbmNlKSwgdGhpcyB3b3VsZCByZXR1cm4gYFsoQSBCIEMgMSAyKSwKICAgICAqICgxIDIgQSBCIEMpXWAuIFRoZSBxdWV1ZXMgd291bGQgdGhlbiBjb250YWluIGAoRCBFKWAgYW5kIGAoMyA0IDUpYC4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PFQ+ICAgICAgICAgICAgICAgICAkcXVldWUxCiAgICAgKiBAcGFyYW0gbGlzdDxUPiAgICAgICAgICAgICAgICAgJHF1ZXVlMgogICAgICogQHBhcmFtIGNhbGxhYmxlKGxpc3Q8VD4pOiBib29sICRkb25lCiAgICAgKgogICAgICogQHJldHVybiBsaXN0PGxpc3Q8VD4+CiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGRvbmUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2h1bmtzKGFycmF5ICYkcXVldWUxLCBhcnJheSAmJHF1ZXVlMiwgY2FsbGFibGUgJGRvbmUpOiBhcnJheQogICAgewogICAgICAgICRjaHVuazEgPSBbXTsKICAgICAgICB3aGlsZSAoISRkb25lKCRxdWV1ZTEpKSB7CiAgICAgICAgICAgICRlbGVtZW50ID0gYXJyYXlfc2hpZnQoJHF1ZXVlMSk7CiAgICAgICAgICAgIGlmICgkZWxlbWVudCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHJlbW92ZSBhbiBlbGVtZW50IGZyb20gYW4gZW1wdHkgcXVldWUnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNodW5rMVtdID0gJGVsZW1lbnQ7CiAgICAgICAgfQoKICAgICAgICAkY2h1bmsyID0gW107CiAgICAgICAgd2hpbGUgKCEkZG9uZSgkcXVldWUyKSkgewogICAgICAgICAgICAkZWxlbWVudCA9IGFycmF5X3NoaWZ0KCRxdWV1ZTIpOwogICAgICAgICAgICBpZiAoJGVsZW1lbnQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZW1vdmUgYW4gZWxlbWVudCBmcm9tIGFuIGVtcHR5IHF1ZXVlJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjaHVuazJbXSA9ICRlbGVtZW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKGVtcHR5KCRjaHVuazEpICYmIGVtcHR5KCRjaHVuazIpKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkY2h1bmsxKSkgewogICAgICAgICAgICByZXR1cm4gWyRjaHVuazJdOwogICAgICAgIH0KCiAgICAgICAgaWYgKGVtcHR5KCRjaHVuazIpKSB7CiAgICAgICAgICAgIHJldHVybiBbJGNodW5rMV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBhcnJheV9tZXJnZSgkY2h1bmsxLCAkY2h1bmsyKSwKICAgICAgICAgICAgYXJyYXlfbWVyZ2UoJGNodW5rMiwgJGNodW5rMSksCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCBwb3NzaWJsZSBwYXRocyB0aHJvdWdoIHRoZSBnaXZlbiBsaXN0cy4KICAgICAqCiAgICAgKiBGb3IgZXhhbXBsZSwgZ2l2ZW4gYFtbMSwgMl0sIFszLCA0XSwgWzVdXWAsIHRoaXMgcmV0dXJuczoKICAgICAqCiAgICAgKiBgYGAKICAgICAqIFtbMSwgMywgNV0sCiAgICAgKiAgWzIsIDMsIDVdLAogICAgICogIFsxLCA0LCA1XSwKICAgICAqICBbMiwgNCwgNV1dCiAgICAgKiBgYGAKICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxsaXN0PFQ+PiAkY2hvaWNlcwogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxsaXN0PFQ+PgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhdGhzKGFycmF5ICRjaG9pY2VzKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfcmVkdWNlKCRjaG9pY2VzLCBmdW5jdGlvbiAoYXJyYXkgJHBhdGhzLCBhcnJheSAkY2hvaWNlKSB7CiAgICAgICAgICAgICRuZXdQYXRocyA9IFtdOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGNob2ljZSBhcyAkb3B0aW9uKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGF0aHMgYXMgJHBhdGgpIHsKICAgICAgICAgICAgICAgICAgICAkcGF0aFtdID0gJG9wdGlvbjsKICAgICAgICAgICAgICAgICAgICAkbmV3UGF0aHNbXSA9ICRwYXRoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJG5ld1BhdGhzOwogICAgICAgIH0sIFtbXV0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyAkY29tcGxleCwgZ3JvdXBlZCBpbnRvIHRoZSBsb25nZXN0IHBvc3NpYmxlIHN1Yi1saXN0cyBzdWNoIHRoYXQKICAgICAqIHtAc2VlIENvbXBsZXhTZWxlY3RvckNvbXBvbmVudH1zIHdpdGhvdXQgY29tYmluYXRvcnMgb25seSBhcHBlYXIgYXQgdGhlIGVuZCBvZgogICAgICogc3ViLWxpc3RzLgogICAgICoKICAgICAqIEZvciBleGFtcGxlLCBgKEEgQiA+IEMgRCArIEUgfiBHKWAgaXMgZ3JvdXBlZCBpbnRvCiAgICAgKiBgWyhBKSAoQiA+IEMpIChEICsgRSB+IEcpXWAuCiAgICAgKgogICAgICogQHBhcmFtIGl0ZXJhYmxlPENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4gJGNvbXBsZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8bGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+PgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBncm91cFNlbGVjdG9ycyhpdGVyYWJsZSAkY29tcGxleCk6IGFycmF5CiAgICB7CiAgICAgICAgJGdyb3VwcyA9IFtdOwogICAgICAgICRncm91cCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkY29tcGxleCBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICRncm91cFtdID0gJGNvbXBvbmVudDsKCiAgICAgICAgICAgIGlmIChcY291bnQoJGNvbXBvbmVudC0+Z2V0Q29tYmluYXRvcnMoKSkgPT09IDApIHsKICAgICAgICAgICAgICAgICRncm91cHNbXSA9ICRncm91cDsKICAgICAgICAgICAgICAgICRncm91cCA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGdyb3VwICE9PSBbXSkgewogICAgICAgICAgICAkZ3JvdXBzW10gPSAkZ3JvdXA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGdyb3VwczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkbGlzdDEgaXMgYSBzdXBlcnNlbGVjdG9yIG9mICRsaXN0Mi4KICAgICAqCiAgICAgKiBUaGF0IGlzLCB3aGV0aGVyICRsaXN0MSBtYXRjaGVzIGV2ZXJ5IGVsZW1lbnQgdGhhdCAkbGlzdDIgbWF0Y2hlcywgYXMgd2VsbAogICAgICogYXMgcG9zc2libHkgYWRkaXRpb25hbCBlbGVtZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxDb21wbGV4U2VsZWN0b3I+ICRsaXN0MQogICAgICogQHBhcmFtIGxpc3Q8Q29tcGxleFNlbGVjdG9yPiAkbGlzdDIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsaXN0SXNTdXBlcnNlbGVjdG9yKGFycmF5ICRsaXN0MSwgYXJyYXkgJGxpc3QyKTogYm9vbAogICAgewogICAgICAgIGZvcmVhY2ggKCRsaXN0MiBhcyAkY29tcGxleDEpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3QxIGFzICRjb21wbGV4MikgewogICAgICAgICAgICAgICAgaWYgKCRjb21wbGV4Mi0+aXNTdXBlcnNlbGVjdG9yKCRjb21wbGV4MSkpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgY29tcGxleElzU3VwZXJzZWxlY3Rvcn0sIGJ1dCBjb21wYXJlcyAkY29tcGxleDEgYW5kICRjb21wbGV4MiBhcwogICAgICogdGhvdWdoIHRoZXkgc2hhcmVkIGFuIGltcGxpY2l0IGJhc2Uge0BzZWUgU2ltcGxlU2VsZWN0b3J9LgogICAgICoKICAgICAqIEZvciBleGFtcGxlLCBgQmAgaXMgbm90IG5vcm1hbGx5IGEgc3VwZXJzZWxlY3RvciBvZiBgQiBBYCwgc2luY2UgaXQgZG9lc24ndAogICAgICogbWF0Y2ggZWxlbWVudHMgdGhhdCBtYXRjaCBgQWAuIEhvd2V2ZXIsIGl0ICppcyogYSBwYXJlbnQgc3VwZXJzZWxlY3RvciwKICAgICAqIHNpbmNlIGBCIFhgIGlzIGEgc3VwZXJzZWxlY3RvciBvZiBgQiBBIFhgLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4gJGNvbXBsZXgxCiAgICAgKiBAcGFyYW0gbGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+ICRjb21wbGV4MgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb21wbGV4SXNQYXJlbnRTdXBlcnNlbGVjdG9yKGFycmF5ICRjb21wbGV4MSwgYXJyYXkgJGNvbXBsZXgyKTogYm9vbAogICAgewogICAgICAgIGlmIChcY291bnQoJGNvbXBsZXgxKSA+IFxjb3VudCgkY29tcGxleDIpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRib2d1c1NwYW4gPSBTcGFuVXRpbDo6Ym9ndXNTcGFuKCk7CgogICAgICAgICRiYXNlID0gbmV3IENvbXBsZXhTZWxlY3RvckNvbXBvbmVudChuZXcgQ29tcG91bmRTZWxlY3RvcihbbmV3IFBsYWNlaG9sZGVyU2VsZWN0b3IoJzx0ZW1wPicsICRib2d1c1NwYW4pXSwgJGJvZ3VzU3BhbiksIFtdLCAkYm9ndXNTcGFuKTsKICAgICAgICAkY29tcGxleDFbXSA9ICRiYXNlOwogICAgICAgICRjb21wbGV4MltdID0gJGJhc2U7CgogICAgICAgIHJldHVybiBzZWxmOjpjb21wbGV4SXNTdXBlcnNlbGVjdG9yKCRjb21wbGV4MSwgJGNvbXBsZXgyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkY29tcGxleDEgaXMgYSBzdXBlcnNlbGVjdG9yIG9mICRjb21wbGV4Mi4KICAgICAqCiAgICAgKiBUaGF0IGlzLCB3aGV0aGVyICRjb21wbGV4MSBtYXRjaGVzIGV2ZXJ5IGVsZW1lbnQgdGhhdCAkY29tcGxleDIgbWF0Y2hlcywgYXMgd2VsbAogICAgICogYXMgcG9zc2libHkgYWRkaXRpb25hbCBlbGVtZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+ICRjb21wbGV4MQogICAgICogQHBhcmFtIGxpc3Q8Q29tcGxleFNlbGVjdG9yQ29tcG9uZW50PiAkY29tcGxleDIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wbGV4SXNTdXBlcnNlbGVjdG9yKGFycmF5ICRjb21wbGV4MSwgYXJyYXkgJGNvbXBsZXgyKTogYm9vbAogICAgewogICAgICAgIC8vIFNlbGVjdG9ycyB3aXRoIHRyYWlsaW5nIG9wZXJhdG9ycyBhcmUgbmVpdGhlciBzdXBlcnNlbGVjdG9ycyBub3IKICAgICAgICAvLyBzdWJzZWxlY3RvcnMuCiAgICAgICAgaWYgKFxjb3VudChMaXN0VXRpbDo6bGFzdCgkY29tcGxleDEpLT5nZXRDb21iaW5hdG9ycygpKSAhPT0gMCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmIChcY291bnQoTGlzdFV0aWw6Omxhc3QoJGNvbXBsZXgyKS0+Z2V0Q29tYmluYXRvcnMoKSkgIT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJGkxID0gMDsKICAgICAgICAkaTIgPSAwOwogICAgICAgICRwcmV2aW91c0NvbWJpbmF0b3IgPSBudWxsOwoKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAkcmVtYWluaW5nMSA9IFxjb3VudCgkY29tcGxleDEpIC0gJGkxOwogICAgICAgICAgICAkcmVtYWluaW5nMiA9IFxjb3VudCgkY29tcGxleDIpIC0gJGkyOwoKICAgICAgICAgICAgaWYgKCRyZW1haW5pbmcxID09PSAwIHx8ICRyZW1haW5pbmcyID09PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIE1vcmUgY29tcGxleCBzZWxlY3RvcnMgYXJlIG5ldmVyIHN1cGVyc2VsZWN0b3JzIG9mIGxlc3MgY29tcGxleCBvbmVzLgogICAgICAgICAgICBpZiAoJHJlbWFpbmluZzEgPiAkcmVtYWluaW5nMikgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29tcG9uZW50MSA9ICRjb21wbGV4MVskaTFdOwogICAgICAgICAgICBpZiAoXGNvdW50KCRjb21wb25lbnQxLT5nZXRDb21iaW5hdG9ycygpKSA+IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHJlbWFpbmluZzEgPT09IDEpIHsKICAgICAgICAgICAgICAgIGlmIChJdGVyYWJsZVV0aWw6OmFueSgkY29tcGxleDIsIGZuIChDb21wbGV4U2VsZWN0b3JDb21wb25lbnQgJHBhcmVudCkgPT4gXGNvdW50KCRwYXJlbnQtPmdldENvbWJpbmF0b3JzKCkpID4gMSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNvbXBvdW5kSXNTdXBlcnNlbGVjdG9yKAogICAgICAgICAgICAgICAgICAgICRjb21wb25lbnQxLT5nZXRTZWxlY3RvcigpLAogICAgICAgICAgICAgICAgICAgIExpc3RVdGlsOjpsYXN0KCRjb21wbGV4MiktPmdldFNlbGVjdG9yKCksCiAgICAgICAgICAgICAgICAgICAgJGNvbXBvbmVudDEtPmdldFNlbGVjdG9yKCktPmhhc0NvbXBsaWNhdGVkU3VwZXJzZWxlY3RvclNlbWFudGljcygpID8gYXJyYXlfc2xpY2UoJGNvbXBsZXgyLCAkaTIsIC0xKSA6IG51bGwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGluZGV4ICRlbmRPZlN1YnNlbGVjdG9yIGluICRjb21wbGV4MiBzdWNoIHRoYXQKICAgICAgICAgICAgLy8gYGNvbXBsZXgyLnN1Ymxpc3QoaTIsIGVuZE9mU3Vic2VsZWN0b3IgKyAxKWAgaXMgYSBzdWJzZWxlY3RvciBvZgogICAgICAgICAgICAvLyBgJGNvbXBvbmVudDEtPmdldFNlbGVjdG9yKClgLgogICAgICAgICAgICAkZW5kT2ZTdWJzZWxlY3RvciA9ICRpMjsKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICRjb21wb25lbnQyID0gJGNvbXBsZXgyWyRlbmRPZlN1YnNlbGVjdG9yXTsKICAgICAgICAgICAgICAgIGlmIChcY291bnQoJGNvbXBvbmVudDItPmdldENvbWJpbmF0b3JzKCkpID4gMSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChzZWxmOjpjb21wb3VuZElzU3VwZXJzZWxlY3RvcigkY29tcG9uZW50MS0+Z2V0U2VsZWN0b3IoKSwgJGNvbXBvbmVudDItPmdldFNlbGVjdG9yKCksICRjb21wb25lbnQxLT5nZXRTZWxlY3RvcigpLT5oYXNDb21wbGljYXRlZFN1cGVyc2VsZWN0b3JTZW1hbnRpY3MoKSA/IGFycmF5X3NsaWNlKCRjb21wbGV4MiwgJGkyLCAkZW5kT2ZTdWJzZWxlY3RvciAtICRpMikgOiBudWxsKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRlbmRPZlN1YnNlbGVjdG9yKys7CgogICAgICAgICAgICAgICAgaWYgKCRlbmRPZlN1YnNlbGVjdG9yID09PSBcY291bnQoJGNvbXBsZXgyKSAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAvLyBTdG9wIGJlZm9yZSB0aGUgc3VwZXJzZWxlY3RvciB3b3VsZCBlbmNvbXBhc3MgYWxsIG9mICRjb21wbGV4MgogICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2Uga25vdyAkY29tcGxleDEgaGFzIG1vcmUgdGhhbiBvbmUgZWxlbWVudCwgYW5kIGNvbnN1bWluZwogICAgICAgICAgICAgICAgICAgIC8vIGFsbCBvZiAkY29tcGxleDIgd291bGRuJ3QgbGVhdmUgYW55dGhpbmcgZm9yIHRoZSByZXN0IG9mICRjb21wbGV4MQogICAgICAgICAgICAgICAgICAgIC8vIHRvIG1hdGNoLgogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFzZWxmOjpjb21wYXRpYmxlV2l0aFByZXZpb3VzQ29tYmluYXRvcigkcHJldmlvdXNDb21iaW5hdG9yLCBhcnJheV9zbGljZSgkY29tcGxleDIsICRpMiwgJGVuZE9mU3Vic2VsZWN0b3IgLSAkaTIpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29tcG9uZW50MiA9ICRjb21wbGV4MlskZW5kT2ZTdWJzZWxlY3Rvcl07CiAgICAgICAgICAgICRjb21iaW5hdG9yMSA9ICRjb21wb25lbnQxLT5nZXRDb21iaW5hdG9ycygpWzBdID8/IG51bGw7CiAgICAgICAgICAgICRjb21iaW5hdG9yMiA9ICRjb21wb25lbnQyLT5nZXRDb21iaW5hdG9ycygpWzBdID8/IG51bGw7CgogICAgICAgICAgICBpZiAoIXNlbGY6OmlzU3VwZXJjb21iaW5hdG9yKCRjb21iaW5hdG9yMSwgJGNvbWJpbmF0b3IyKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaTErKzsKICAgICAgICAgICAgJGkyID0gJGVuZE9mU3Vic2VsZWN0b3IgKyAxOwogICAgICAgICAgICAkcHJldmlvdXNDb21iaW5hdG9yID0gJGNvbWJpbmF0b3IxOwoKICAgICAgICAgICAgaWYgKFxjb3VudCgkY29tcGxleDEpIC0gJGkxID09PSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoJGNvbWJpbmF0b3IxICE9PSBudWxsICYmICRjb21iaW5hdG9yMS0+Z2V0VmFsdWUoKSA9PT0gQ29tYmluYXRvcjo6Rk9MTE9XSU5HX1NJQkxJTkcpIHsKICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc2VsZWN0b3IgYC5mb28gfiAuYmFyYCBpcyBvbmx5IGEgc3VwZXJzZWxlY3RvciBvZiBzZWxlY3RvcnMgdGhhdAogICAgICAgICAgICAgICAgICAgIC8vICpleGNsdXNpdmVseSogY29udGFpbiBzdWJjb21iaW5hdG9ycyBvZiBgfmAuCiAgICAgICAgICAgICAgICAgICAgZm9yICgkaW5kZXggPSAkaTI7ICRpbmRleCA8IFxjb3VudCgkY29tcGxleDIpIC0gMTsgJGluZGV4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBvbmVudCA9ICRjb21wbGV4MlskaW5kZXhdOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxmOjppc1N1cGVyY29tYmluYXRvcigkY29tYmluYXRvcjEsICRjb21wb25lbnQtPmdldENvbWJpbmF0b3JzKClbMF0gPz8gbnVsbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkY29tYmluYXRvcjEgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAvLyBgLmZvbyA+IC5iYXJgIGFuZCBgLmZvbyArIGJhcmAgYXJlbid0IHN1cGVyc2VsZWN0b3JzIG9mIGFueSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIG1vcmUgdGhhbiBvbmUgY29tYmluYXRvci4KICAgICAgICAgICAgICAgICAgICBpZiAoXGNvdW50KCRjb21wbGV4MikgLSAkaTIgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ3NzVmFsdWU8Q29tYmluYXRvcj58bnVsbCAkcHJldmlvdXMKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD4gJHBhcmVudHMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29tcGF0aWJsZVdpdGhQcmV2aW91c0NvbWJpbmF0b3IoP0Nzc1ZhbHVlICRwcmV2aW91cywgYXJyYXkgJHBhcmVudHMpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRwYXJlbnRzID09PSBbXSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcHJldmlvdXMgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgY2hpbGQgYW5kIG5leHQgc2libGluZyBjb21iaW5hdG9ycyByZXF1aXJlIHRoYXQgdGhlICppbW1lZGlhdGUqCiAgICAgICAgLy8gZm9sbG93aW5nIGNvbXBvbmVudCBiZSBhIHN1cGVyc2VsZWN0b3IuCiAgICAgICAgaWYgKCRwcmV2aW91cy0+Z2V0VmFsdWUoKSAhPT0gQ29tYmluYXRvcjo6Rk9MTE9XSU5HX1NJQkxJTkcpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBzaWJsaW5nIGNvbWJpbmF0b3IgZG9lcyBhbGxvdyBpbnRlcm1lZGlhdGUgY29tcG9uZW50cywgYnV0CiAgICAgICAgLy8gb25seSBpZiB0aGV5J3JlIGFsbCBzaWJsaW5ncy4KICAgICAgICBmb3JlYWNoICgkcGFyZW50cyBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICRmaXJzdENvbWJpbmF0b3IgPSAkY29tcG9uZW50LT5nZXRDb21iaW5hdG9ycygpWzBdID8/IG51bGw7CiAgICAgICAgICAgICRmaXJzdENvbWJpbmF0b3JWYWx1ZSA9ICRmaXJzdENvbWJpbmF0b3I/LT5nZXRWYWx1ZSgpOwoKICAgICAgICAgICAgaWYgKCRmaXJzdENvbWJpbmF0b3JWYWx1ZSAhPT0gQ29tYmluYXRvcjo6Rk9MTE9XSU5HX1NJQkxJTkcgJiYgJGZpcnN0Q29tYmluYXRvclZhbHVlICE9PSBDb21iaW5hdG9yOjpORVhUX1NJQkxJTkcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJGNvbWJpbmF0b3IxIGlzIGEgc3VwZXJjb21iaW5hdG9yIG9mICRjb21iaW5hdG9yMi4KICAgICAqCiAgICAgKiBUaGF0IGlzLCB3aGV0aGVyIGBYICRjb21iaW5hdG9yMSBZYCBpcyBhIHN1cGVyc2VsZWN0b3Igb2YgYFggJGNvbWJpbmF0b3IyIFlgLgogICAgICoKICAgICAqIEBwYXJhbSBDc3NWYWx1ZTxDb21iaW5hdG9yPnxudWxsICRjb21iaW5hdG9yMQogICAgICogQHBhcmFtIENzc1ZhbHVlPENvbWJpbmF0b3I+fG51bGwgJGNvbWJpbmF0b3IyCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlzU3VwZXJjb21iaW5hdG9yKD9Dc3NWYWx1ZSAkY29tYmluYXRvcjEsID9Dc3NWYWx1ZSAkY29tYmluYXRvcjIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEVxdWF0YWJsZVV0aWw6OmVxdWFscygkY29tYmluYXRvcjEsICRjb21iaW5hdG9yMikgfHwgKCRjb21iaW5hdG9yMSA9PT0gbnVsbCAmJiAkY29tYmluYXRvcjIgIT09IG51bGwgJiYgJGNvbWJpbmF0b3IyLT5nZXRWYWx1ZSgpID09PSBDb21iaW5hdG9yOjpDSElMRCkgfHwgKCRjb21iaW5hdG9yMSAhPT0gbnVsbCAmJiAkY29tYmluYXRvcjEtPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6OkZPTExPV0lOR19TSUJMSU5HICYmICRjb21iaW5hdG9yMiAhPT0gbnVsbCAmJiAkY29tYmluYXRvcjItPmdldFZhbHVlKCkgPT09IENvbWJpbmF0b3I6Ok5FWFRfU0lCTElORyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJGNvbXBvdW5kMSBpcyBhIHN1cGVyc2VsZWN0b3Igb2YgJGNvbXBvdW5kMi4KICAgICAqCiAgICAgKiBUaGF0IGlzLCB3aGV0aGVyICRjb21wb3VuZDEgbWF0Y2hlcyBldmVyeSBlbGVtZW50IHRoYXQgJGNvbXBvdW5kMiBtYXRjaGVzLCBhcyB3ZWxsCiAgICAgKiBhcyBwb3NzaWJseSBhZGRpdGlvbmFsIGVsZW1lbnRzLgogICAgICoKICAgICAqIElmICRwYXJlbnRzIGlzIHBhc3NlZCwgaXQgcmVwcmVzZW50cyB0aGUgcGFyZW50cyBvZiAkY29tcG91bmQyLiBUaGlzIGlzCiAgICAgKiByZWxldmFudCBmb3IgcHNldWRvIHNlbGVjdG9ycyB3aXRoIHNlbGVjdG9yIGFyZ3VtZW50cywgd2hlcmUgd2UgbWF5IG5lZWQgdG8KICAgICAqIGtub3cgaWYgdGhlIHBhcmVudCBzZWxlY3RvcnMgaW4gdGhlIHNlbGVjdG9yIGFyZ3VtZW50IG1hdGNoICRwYXJlbnRzLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD58bnVsbCAkcGFyZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbXBvdW5kSXNTdXBlcnNlbGVjdG9yKENvbXBvdW5kU2VsZWN0b3IgJGNvbXBvdW5kMSwgQ29tcG91bmRTZWxlY3RvciAkY29tcG91bmQyLCA/YXJyYXkgJHBhcmVudHMgPSBudWxsKTogYm9vbAogICAgewogICAgICAgIGlmICghJGNvbXBvdW5kMS0+aGFzQ29tcGxpY2F0ZWRTdXBlcnNlbGVjdG9yU2VtYW50aWNzKCkgJiYgISRjb21wb3VuZDItPmhhc0NvbXBsaWNhdGVkU3VwZXJzZWxlY3RvclNlbWFudGljcygpKSB7CiAgICAgICAgICAgIGlmIChcY291bnQoJGNvbXBvdW5kMS0+Z2V0Q29tcG9uZW50cygpKSA+IFxjb3VudCgkY29tcG91bmQyLT5nZXRDb21wb25lbnRzKCkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBJdGVyYWJsZVV0aWw6OmV2ZXJ5KAogICAgICAgICAgICAgICAgJGNvbXBvdW5kMS0+Z2V0Q29tcG9uZW50cygpLAogICAgICAgICAgICAgICAgZm4gKFNpbXBsZVNlbGVjdG9yICRzaW1wbGUxKSA9PiBJdGVyYWJsZVV0aWw6OmFueSgkY29tcG91bmQyLT5nZXRDb21wb25lbnRzKCksICRzaW1wbGUxLT5pc1N1cGVyc2VsZWN0b3IoLi4uKSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8vIFBzZXVkbyBlbGVtZW50cyBlZmZlY3RpdmVseSBjaGFuZ2UgdGhlIHRhcmdldCBvZiBhIGNvbXBvdW5kIHNlbGVjdG9yIHJhdGhlcgogICAgICAgIC8vIHRoYW4gbmFycm93aW5nIHRoZSBzZXQgb2YgZWxlbWVudHMgdG8gd2hpY2ggaXQgYXBwbGllcyBsaWtlIG90aGVyCiAgICAgICAgLy8gc2VsZWN0b3JzLiBBcyBzdWNoLCBpZiBlaXRoZXIgc2VsZWN0b3IgaGFzIGEgcHNldWRvIGVsZW1lbnQsIHRoZXkgYm90aCBtdXN0CiAgICAgICAgLy8gaGF2ZSB0aGUgX3NhbWVfIHBzZXVkbyBlbGVtZW50LgogICAgICAgIC8vCiAgICAgICAgLy8gSW4gYWRkaXRpb24sIG9yZGVyIG1hdHRlcnMgd2hlbiBwc2V1ZG8tZWxlbWVudHMgYXJlIGludm9sdmVkLiBUaGUgc2VsZWN0b3JzCiAgICAgICAgLy8gYmVmb3JlIHRoZW0gbXVzdAogICAgICAgICR0dXBsZTEgPSBzZWxmOjpmaW5kUHNldWRvRWxlbWVudEluZGV4ZWQoJGNvbXBvdW5kMSk7CiAgICAgICAgJHR1cGxlMiA9IHNlbGY6OmZpbmRQc2V1ZG9FbGVtZW50SW5kZXhlZCgkY29tcG91bmQyKTsKCiAgICAgICAgaWYgKCR0dXBsZTEgIT09IG51bGwgJiYgJHR1cGxlMiAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHR1cGxlMVswXS0+aXNTdXBlcnNlbGVjdG9yKCR0dXBsZTJbMF0pICYmCiAgICAgICAgICAgICAgICBzZWxmOjpjb21wb3VuZENvbXBvbmVudHNJc1N1cGVyc2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgICAgYXJyYXlfc2xpY2UoJGNvbXBvdW5kMS0+Z2V0Q29tcG9uZW50cygpLCAwLCAkdHVwbGUxWzFdKSwKICAgICAgICAgICAgICAgICAgICBhcnJheV9zbGljZSgkY29tcG91bmQyLT5nZXRDb21wb25lbnRzKCksIDAsICR0dXBsZTJbMV0pLAogICAgICAgICAgICAgICAgICAgICRwYXJlbnRzCiAgICAgICAgICAgICAgICApICYmCiAgICAgICAgICAgICAgICBzZWxmOjpjb21wb3VuZENvbXBvbmVudHNJc1N1cGVyc2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgICAgYXJyYXlfc2xpY2UoJGNvbXBvdW5kMS0+Z2V0Q29tcG9uZW50cygpLCAkdHVwbGUxWzFdICsgMSksCiAgICAgICAgICAgICAgICAgICAgYXJyYXlfc2xpY2UoJGNvbXBvdW5kMi0+Z2V0Q29tcG9uZW50cygpLCAkdHVwbGUyWzFdICsgMSksCiAgICAgICAgICAgICAgICAgICAgJHBhcmVudHMKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfSBlbHNlaWYgKCR0dXBsZTEgIT09IG51bGwgfHwgJHR1cGxlMiAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBFdmVyeSBzZWxlY3RvciBpbiBgJGNvbXBvdW5kMS0+Z2V0Q29tcG9uZW50cygpYCBtdXN0IGhhdmUgYSBtYXRjaGluZyBzZWxlY3RvciBpbgogICAgICAgIC8vIGAkY29tcG91bmQyLT5nZXRDb21wb25lbnRzKClgLgogICAgICAgIGZvcmVhY2ggKCRjb21wb3VuZDEtPmdldENvbXBvbmVudHMoKSBhcyAkc2ltcGxlMSkgewogICAgICAgICAgICBpZiAoJHNpbXBsZTEgaW5zdGFuY2VvZiBQc2V1ZG9TZWxlY3RvciAmJiAkc2ltcGxlMS0+Z2V0U2VsZWN0b3IoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKCFzZWxmOjpzZWxlY3RvclBzZXVkb0lzU3VwZXJzZWxlY3Rvcigkc2ltcGxlMSwgJGNvbXBvdW5kMiwgJHBhcmVudHMpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbXBvdW5kMi0+Z2V0Q29tcG9uZW50cygpIGFzICRzaW1wbGUyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRzaW1wbGUxLT5pc1N1cGVyc2VsZWN0b3IoJHNpbXBsZTIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiAkY29tcG91bmQgY29udGFpbnMgYSBwc2V1ZG8tZWxlbWVudCwgcmV0dXJucyBpdCBhbmQgaXRzIGluZGV4IGluCiAgICAgKiBgJGNvbXBvdW5kLT5nZXRDb21wb25lbnRzKClgLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7UHNldWRvU2VsZWN0b3IsIGludH18bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmaW5kUHNldWRvRWxlbWVudEluZGV4ZWQoQ29tcG91bmRTZWxlY3RvciAkY29tcG91bmQpOiA/YXJyYXkKICAgIHsKICAgICAgICBmb3JlYWNoICgkY29tcG91bmQtPmdldENvbXBvbmVudHMoKSBhcyAkaSA9PiAkc2ltcGxlKSB7CiAgICAgICAgICAgIGlmICgkc2ltcGxlIGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IgJiYgJHNpbXBsZS0+aXNFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbJHNpbXBsZSwgJGldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgY29tcG91bmRJc1N1cGVyc2VsZWN0b3J9IGJ1dCBvcGVyYXRlcyBvbiB0aGUgdW5kZXJseWluZyBsaXN0cyBvZgogICAgICogc2ltcGxlIHNlbGVjdG9ycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxTaW1wbGVTZWxlY3Rvcj4gICAgICAgICAgICAgICAgJGNvbXBvdW5kMQogICAgICogQHBhcmFtIGxpc3Q8U2ltcGxlU2VsZWN0b3I+ICAgICAgICAgICAgICAgICRjb21wb3VuZDIKICAgICAqIEBwYXJhbSBsaXN0PENvbXBsZXhTZWxlY3RvckNvbXBvbmVudD58bnVsbCAkcGFyZW50cwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb21wb3VuZENvbXBvbmVudHNJc1N1cGVyc2VsZWN0b3IoYXJyYXkgJGNvbXBvdW5kMSwgYXJyYXkgJGNvbXBvdW5kMiwgP2FycmF5ICRwYXJlbnRzID0gbnVsbCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRjb21wb3VuZDEpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJGJvZ3VzU3BhbiA9IFNwYW5VdGlsOjpib2d1c1NwYW4oKTsKCiAgICAgICAgaWYgKFxjb3VudCgkY29tcG91bmQyKSA9PT0gMCkgewogICAgICAgICAgICAkY29tcG91bmQyID0gW25ldyBVbml2ZXJzYWxTZWxlY3RvcigkYm9ndXNTcGFuLCAnKicpXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjb21wb3VuZElzU3VwZXJzZWxlY3RvcihuZXcgQ29tcG91bmRTZWxlY3RvcigkY29tcG91bmQxLCAkYm9ndXNTcGFuKSwgbmV3IENvbXBvdW5kU2VsZWN0b3IoJGNvbXBvdW5kMiwgJGJvZ3VzU3BhbiksICRwYXJlbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkcHNldWRvMSBpcyBhIHN1cGVyc2VsZWN0b3Igb2YgJGNvbXBvdW5kMi4KICAgICAqCiAgICAgKiBUaGF0IGlzLCB3aGV0aGVyICRwc2V1ZG8xIG1hdGNoZXMgZXZlcnkgZWxlbWVudCB0aGF0ICRjb21wb3VuZDIgbWF0Y2hlcywgYXMgd2VsbAogICAgICogYXMgcG9zc2libHkgYWRkaXRpb25hbCBlbGVtZW50cy4KICAgICAqCiAgICAgKiBUaGlzIGFzc3VtZXMgdGhhdCAkcHNldWRvMSdzIGBzZWxlY3RvcmAgYXJndW1lbnQgaXMgbm90IGBudWxsYC4KICAgICAqCiAgICAgKiBJZiAkcGFyZW50cyBpcyBwYXNzZWQsIGl0IHJlcHJlc2VudHMgdGhlIHBhcmVudHMgb2YgJGNvbXBvdW5kMi4gVGhpcyBpcwogICAgICogcmVsZXZhbnQgZm9yIHBzZXVkbyBzZWxlY3RvcnMgd2l0aCBzZWxlY3RvciBhcmd1bWVudHMsIHdoZXJlIHdlIG1heSBuZWVkIHRvCiAgICAgKiBrbm93IGlmIHRoZSBwYXJlbnQgc2VsZWN0b3JzIGluIHRoZSBzZWxlY3RvciBhcmd1bWVudCBtYXRjaCAkcGFyZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ+fG51bGwgJHBhcmVudHMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2VsZWN0b3JQc2V1ZG9Jc1N1cGVyc2VsZWN0b3IoUHNldWRvU2VsZWN0b3IgJHBzZXVkbzEsIENvbXBvdW5kU2VsZWN0b3IgJGNvbXBvdW5kMiwgP2FycmF5ICRwYXJlbnRzKTogYm9vbAogICAgewogICAgICAgICRzZWxlY3RvcjEgPSAkcHNldWRvMS0+Z2V0U2VsZWN0b3IoKTsKCiAgICAgICAgaWYgKCRzZWxlY3RvcjEgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIlNlbGVjdG9yICRwc2V1ZG8xIG11c3QgaGF2ZSBhIHNlbGVjdG9yIGFyZ3VtZW50LiIpOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkcHNldWRvMS0+Z2V0Tm9ybWFsaXplZE5hbWUoKSkgewogICAgICAgICAgICBjYXNlICdpcyc6CiAgICAgICAgICAgIGNhc2UgJ21hdGNoZXMnOgogICAgICAgICAgICBjYXNlICdhbnknOgogICAgICAgICAgICBjYXNlICd3aGVyZSc6CiAgICAgICAgICAgICAgICAkc2VsZWN0b3JzID0gc2VsZjo6c2VsZWN0b3JQc2V1ZG9BcmdzKCRjb21wb3VuZDIsICRwc2V1ZG8xLT5nZXROYW1lKCkpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yMikgewogICAgICAgICAgICAgICAgICAgIGlmICgkc2VsZWN0b3IxLT5pc1N1cGVyc2VsZWN0b3IoJHNlbGVjdG9yMikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjb21wb25lbnRXaXRoUGFyZW50cyA9ICRwYXJlbnRzOwogICAgICAgICAgICAgICAgJGNvbXBvbmVudFdpdGhQYXJlbnRzW10gPSBuZXcgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KCRjb21wb3VuZDIsIFtdLCAkY29tcG91bmQyLT5nZXRTcGFuKCkpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcjEtPmdldENvbXBvbmVudHMoKSBhcyAkY29tcGxleDEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXGNvdW50KCRjb21wbGV4MS0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCkpID09PSAwICYmIHNlbGY6OmNvbXBsZXhJc1N1cGVyc2VsZWN0b3IoJGNvbXBsZXgxLT5nZXRDb21wb25lbnRzKCksICRjb21wb25lbnRXaXRoUGFyZW50cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgICAgIGNhc2UgJ2hhcyc6CiAgICAgICAgICAgIGNhc2UgJ2hvc3QnOgogICAgICAgICAgICBjYXNlICdob3N0LWNvbnRleHQnOgogICAgICAgICAgICAgICAgJHNlbGVjdG9ycyA9IHNlbGY6OnNlbGVjdG9yUHNldWRvQXJncygkY29tcG91bmQyLCAkcHNldWRvMS0+Z2V0TmFtZSgpKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3JzIGFzICRzZWxlY3RvcjIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHNlbGVjdG9yMS0+aXNTdXBlcnNlbGVjdG9yKCRzZWxlY3RvcjIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgICAgICBjYXNlICdzbG90dGVkJzoKICAgICAgICAgICAgICAgICRzZWxlY3RvcnMgPSBzZWxmOjpzZWxlY3RvclBzZXVkb0FyZ3MoJGNvbXBvdW5kMiwgJHBzZXVkbzEtPmdldE5hbWUoKSwgZmFsc2UpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yMikgewogICAgICAgICAgICAgICAgICAgIGlmICgkc2VsZWN0b3IxLT5pc1N1cGVyc2VsZWN0b3IoJHNlbGVjdG9yMikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgICAgIGNhc2UgJ25vdCc6CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3IxLT5nZXRDb21wb25lbnRzKCkgYXMgJGNvbXBsZXgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbXBsZXgtPmlzQm9ndXMoKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkY29tcG91bmQyLT5nZXRDb21wb25lbnRzKCkgYXMgJHNpbXBsZTIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzaW1wbGUyIGluc3RhbmNlb2YgVHlwZVNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkY29tcGxleC0+Z2V0TGFzdENvbXBvbmVudCgpLT5nZXRTZWxlY3RvcigpLT5nZXRDb21wb25lbnRzKCkgYXMgJHNpbXBsZTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNpbXBsZTEgaW5zdGFuY2VvZiBUeXBlU2VsZWN0b3IgJiYgISRzaW1wbGUxLT5lcXVhbHMoJHNpbXBsZTIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHNpbXBsZTIgaW5zdGFuY2VvZiBJRFNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkY29tcGxleC0+Z2V0TGFzdENvbXBvbmVudCgpLT5nZXRTZWxlY3RvcigpLT5nZXRDb21wb25lbnRzKCkgYXMgJHNpbXBsZTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNpbXBsZTEgaW5zdGFuY2VvZiBJRFNlbGVjdG9yICYmICEkc2ltcGxlMS0+ZXF1YWxzKCRzaW1wbGUyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzaW1wbGUyIGluc3RhbmNlb2YgUHNldWRvU2VsZWN0b3IgJiYgJHNpbXBsZTItPmdldE5hbWUoKSA9PT0gJHBzZXVkbzEtPmdldE5hbWUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGVjdG9yMiA9ICRzaW1wbGUyLT5nZXRTZWxlY3RvcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxlY3RvcjIgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZjo6bGlzdElzU3VwZXJzZWxlY3Rvcigkc2VsZWN0b3IyLT5nZXRDb21wb25lbnRzKCksIFskY29tcGxleF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwoKICAgICAgICAgICAgY2FzZSAnY3VycmVudCc6CiAgICAgICAgICAgICAgICAkc2VsZWN0b3JzID0gc2VsZjo6c2VsZWN0b3JQc2V1ZG9BcmdzKCRjb21wb3VuZDIsICRwc2V1ZG8xLT5nZXROYW1lKCkpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yMikgewogICAgICAgICAgICAgICAgICAgIGlmICgkc2VsZWN0b3IxLT5lcXVhbHMoJHNlbGVjdG9yMikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgICAgIGNhc2UgJ250aC1jaGlsZCc6CiAgICAgICAgICAgIGNhc2UgJ250aC1sYXN0LWNoaWxkJzoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjb21wb3VuZDItPmdldENvbXBvbmVudHMoKSBhcyAkcHNldWRvMikgewogICAgICAgICAgICAgICAgICAgIGlmICghJHBzZXVkbzIgaW5zdGFuY2VvZiBQc2V1ZG9TZWxlY3RvcikgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkcHNldWRvMi0+Z2V0TmFtZSgpICE9PSAkcHNldWRvMS0+Z2V0TmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCRwc2V1ZG8yLT5nZXRBcmd1bWVudCgpICE9PSAkcHNldWRvMS0+Z2V0QXJndW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRzZWxlY3RvcjIgPSAkcHNldWRvMi0+Z2V0U2VsZWN0b3IoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxlY3RvcjIgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJHNlbGVjdG9yMS0+aXNTdXBlcnNlbGVjdG9yKCRzZWxlY3RvcjIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigndW5yZWFjaGFjaGUnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFsbCB0aGUgc2VsZWN0b3IgYXJndW1lbnRzIG9mIHBzZXVkbyBzZWxlY3RvcnMgaW4gJGNvbXBvdW5kIHdpdGgKICAgICAqIHRoZSBnaXZlbiAkbmFtZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFNlbGVjdG9yTGlzdFtdCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHNlbGVjdG9yUHNldWRvQXJncyhDb21wb3VuZFNlbGVjdG9yICRjb21wb3VuZCwgc3RyaW5nICRuYW1lLCBib29sICRpc0NsYXNzID0gdHJ1ZSk6IGFycmF5CiAgICB7CiAgICAgICAgJHNlbGVjdG9ycyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkY29tcG91bmQtPmdldENvbXBvbmVudHMoKSBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgIGlmICghJHNpbXBsZSBpbnN0YW5jZW9mIFBzZXVkb1NlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRzaW1wbGUtPmlzQ2xhc3MoKSAhPT0gJGlzQ2xhc3MgfHwgJHNpbXBsZS0+Z2V0TmFtZSgpICE9PSAkbmFtZSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkc2ltcGxlLT5nZXRTZWxlY3RvcigpID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHNlbGVjdG9yc1tdID0gJHNpbXBsZS0+Z2V0U2VsZWN0b3IoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2VsZWN0b3JzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/Extension.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NNZWRpYVF1ZXJ5Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNpbXBsZVNlbGVjdG9yOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBUaGUgc3RhdGUgb2YgYW4gZXh0ZW5zaW9uIGZvciBhIGdpdmVuIGV4dGVuZGVyLgogKgogKiBUaGUgdGFyZ2V0IG9mIHRoZSBleHRlbnNpb24gaXMgcmVwcmVzZW50ZWQgZXh0ZXJuYWxseSwgaW4gdGhlIG1hcCB0aGF0CiAqIGNvbnRhaW5zIHRoaXMgZXh0ZW5kZXIuCiAqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRXh0ZW5zaW9uCnsKICAgIC8qKgogICAgICogVGhlIGV4dGVuZGVyIChzdWNoIGFzIGBBYCBpbiBgQSB7QGV4dGVuZCBCfWApLgogICAgICovCiAgICBwdWJsaWMgcmVhZG9ubHkgRXh0ZW5kZXIgJGV4dGVuZGVyOwoKICAgIC8qKgogICAgICogVGhlIHNlbGVjdG9yIHRoYXQncyBiZWluZyBleHRlbmRlZC4KICAgICAqLwogICAgcHVibGljIHJlYWRvbmx5IFNpbXBsZVNlbGVjdG9yICR0YXJnZXQ7CgogICAgLyoqCiAgICAgKiBUaGUgbWVkaWEgcXVlcnkgY29udGV4dCB0byB3aGljaCB0aGlzIGV4dGVuc2lvbiBpcyByZXN0cmljdGVkLCBvciBgbnVsbGAKICAgICAqIGlmIGl0IGNhbiBhcHBseSB3aXRoaW4gYW55IGNvbnRleHQuCiAgICAgKgogICAgICogQHZhciBsaXN0PENzc01lZGlhUXVlcnk+fG51bGwKICAgICAqLwogICAgcHVibGljIHJlYWRvbmx5ID9hcnJheSAkbWVkaWFDb250ZXh0OwoKICAgIHB1YmxpYyByZWFkb25seSBib29sICRpc09wdGlvbmFsOwoKICAgIHB1YmxpYyByZWFkb25seSBGaWxlU3BhbiAkc3BhbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PENzc01lZGlhUXVlcnk+fG51bGwgJG1lZGlhQ29udGV4dAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ29tcGxleFNlbGVjdG9yICRleHRlbmRlciwgU2ltcGxlU2VsZWN0b3IgJHRhcmdldCwgRmlsZVNwYW4gJHNwYW4sID9hcnJheSAkbWVkaWFDb250ZXh0ID0gbnVsbCwgYm9vbCAkb3B0aW9uYWwgPSBmYWxzZSkKICAgIHsKICAgICAgICAkdGhpcy0+ZXh0ZW5kZXIgPSBFeHRlbmRlcjo6Zm9yRXh0ZW5zaW9uKCRleHRlbmRlciwgJHRoaXMpOwogICAgICAgICR0aGlzLT50YXJnZXQgPSAkdGFyZ2V0OwogICAgICAgICR0aGlzLT5tZWRpYUNvbnRleHQgPSAkbWVkaWFDb250ZXh0OwogICAgICAgICR0aGlzLT5pc09wdGlvbmFsID0gJG9wdGlvbmFsOwogICAgICAgICR0aGlzLT5zcGFuID0gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhFeHRlbmRlcihDb21wbGV4U2VsZWN0b3IgJG5ld0V4dGVuZGVyKTogRXh0ZW5zaW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBFeHRlbnNpb24oJG5ld0V4dGVuZGVyLCAkdGhpcy0+dGFyZ2V0LCAkdGhpcy0+c3BhbiwgJHRoaXMtPm1lZGlhQ29udGV4dCwgJHRoaXMtPmlzT3B0aW9uYWwpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/ExtensionStore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NNZWRpYVF1ZXJ5Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxFeHRlbmRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3Rvckxpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNpbXBsZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcQm94OwoKLyoqCiAqIFRyYWNrcyBzZWxlY3RvcnMgYW5kIGV4dGVuc2lvbnMsIGFuZCBhcHBsaWVzIHRoZSBsYXR0ZXIgdG8gdGhlIGZvcm1lci4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgRXh0ZW5zaW9uU3RvcmUKewogICAgcHVibGljIGZ1bmN0aW9uIGlzRW1wdHkoKTogYm9vbDsKCiAgICAvKioKICAgICAqIEByZXR1cm4gU2ltcGxlU2VsZWN0b3JbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2ltcGxlU2VsZWN0b3JzKCk6IGFycmF5OyAvLyBUT0RPIGNoZWNrIHRoZSByaWdodCByZXByZXNlbnRhdGlvbiBmb3IgdGhpcwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFNpbXBsZVNlbGVjdG9yKTogYm9vbCAkY2FsbGJhY2sKICAgICAqIEByZXR1cm4gaXRlcmFibGU8RXh0ZW5zaW9uPgogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXh0ZW5zaW9uc1doZXJlVGFyZ2V0KGNhbGxhYmxlICRjYWxsYmFjayk6IGl0ZXJhYmxlOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8Q3NzTWVkaWFRdWVyeT58bnVsbCAkbWVkaWFDb250ZXh0CiAgICAgKiBAcmV0dXJuIEJveDxTZWxlY3Rvckxpc3Q+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRTZWxlY3RvcihTZWxlY3Rvckxpc3QgJHNlbGVjdG9yLCA/YXJyYXkgJG1lZGlhQ29udGV4dCk6IEJveDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PENzc01lZGlhUXVlcnk+fG51bGwgJG1lZGlhQ29udGV4dAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRXh0ZW5zaW9uKFNlbGVjdG9yTGlzdCAkZXh0ZW5kZXIsIFNpbXBsZVNlbGVjdG9yICR0YXJnZXQsIEV4dGVuZFJ1bGUgJGV4dGVuZCwgP2FycmF5ICRtZWRpYUNvbnRleHQpOiB2b2lkOwoKICAgIC8qKgogICAgICogQHBhcmFtIGl0ZXJhYmxlPEV4dGVuc2lvblN0b3JlPiAkZXh0ZW5zaW9uU3RvcmVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRFeHRlbnNpb25zKGl0ZXJhYmxlICRleHRlbnNpb25TdG9yZXMpOiB2b2lkOwoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheXtFeHRlbnNpb25TdG9yZSwgXFNwbE9iamVjdFN0b3JhZ2U8U2VsZWN0b3JMaXN0LCBCb3g8U2VsZWN0b3JMaXN0Pj59CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9uZSgpOiBhcnJheTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/MergedExtension.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNpbXBsZVNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGVVdGlsOwoKLyoqCiAqIEFuIHtAc2VlIEV4dGVuc2lvbn0gY3JlYXRlZCBieSBtZXJnaW5nIHR3byB7QHNlZSBFeHRlbnNpb259cyB3aXRoIHRoZSBzYW1lIGV4dGVuZGVyCiAqIGFuZCB0YXJnZXQuCiAqCiAqIFRoaXMgaXMgdXNlZCB3aGVuIG11bHRpcGxlIG1hbmRhdG9yeSBleHRlbnNpb25zIGV4aXN0IHRvIGVuc3VyZSB0aGF0IGJvdGggb2YKICogdGhlbSBhcmUgbWFya2VkIGFzIHJlc29sdmVkLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE1lcmdlZEV4dGVuc2lvbiBleHRlbmRzIEV4dGVuc2lvbgp7CiAgICBwdWJsaWMgcmVhZG9ubHkgRXh0ZW5zaW9uICRsZWZ0OwogICAgcHVibGljIHJlYWRvbmx5IEV4dGVuc2lvbiAkcmlnaHQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChFeHRlbnNpb24gJGxlZnQsIEV4dGVuc2lvbiAkcmlnaHQpCiAgICB7CiAgICAgICAgJHRoaXMtPmxlZnQgPSAkbGVmdDsKICAgICAgICAkdGhpcy0+cmlnaHQgPSAkcmlnaHQ7CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGxlZnQtPmV4dGVuZGVyLT5zZWxlY3RvciwgJGxlZnQtPnRhcmdldCwgJGxlZnQtPnNwYW4sICRsZWZ0LT5tZWRpYUNvbnRleHQgPz8gJHJpZ2h0LT5tZWRpYUNvbnRleHQsIHRydWUpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWVyZ2UoRXh0ZW5zaW9uICRsZWZ0LCBFeHRlbnNpb24gJHJpZ2h0KTogRXh0ZW5zaW9uCiAgICB7CiAgICAgICAgaWYgKCFFcXVhdGFibGVVdGlsOjplcXVhbHMoJGxlZnQtPmV4dGVuZGVyLT5zZWxlY3RvciwgJHJpZ2h0LT5leHRlbmRlci0+c2VsZWN0b3IpIHx8ICFFcXVhdGFibGVVdGlsOjplcXVhbHMoJGxlZnQtPnRhcmdldCwgJHJpZ2h0LT50YXJnZXQpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCckbGVmdCBhbmQgJHJpZ2h0IGFyZW5cJ3QgdGhlIHNhbWUgZXh0ZW5zaW9uLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsZWZ0LT5tZWRpYUNvbnRleHQgIT09IG51bGwgJiYgJHJpZ2h0LT5tZWRpYUNvbnRleHQgIT09IG51bGwgJiYgIUVxdWF0YWJsZVV0aWw6Omxpc3RFcXVhbHMoJGxlZnQtPm1lZGlhQ29udGV4dCwgJHJpZ2h0LT5tZWRpYUNvbnRleHQpKSB7CiAgICAgICAgICAgICRsb2NhdGlvbiA9ICRsZWZ0LT5zcGFuLT5tZXNzYWdlKCcnKTsKCiAgICAgICAgICAgIHRocm93IG5ldyBTaW1wbGVTYXNzRXhjZXB0aW9uKCJGcm9tICRsb2NhdGlvblxuWW91IG1heSBub3QgQGV4dGVuZCB0aGUgc2FtZSBzZWxlY3RvciBmcm9tIHdpdGhpbiBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy4iLCAkcmlnaHQtPnNwYW4pOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgb25lIGV4dGVuc2lvbiBpcyBvcHRpb25hbCBhbmQgZG9lc24ndCBhZGQgYSBzcGVjaWFsIG1lZGlhIGNvbnRleHQsIGl0CiAgICAgICAgLy8gZG9lc24ndCBuZWVkIHRvIGJlIG1lcmdlZC4KICAgICAgICBpZiAoJHJpZ2h0LT5pc09wdGlvbmFsICYmICRyaWdodC0+bWVkaWFDb250ZXh0ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbGVmdDsKICAgICAgICB9CiAgICAgICAgaWYgKCRsZWZ0LT5pc09wdGlvbmFsICYmICRsZWZ0LT5tZWRpYUNvbnRleHQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRyaWdodDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgTWVyZ2VkRXh0ZW5zaW9uKCRsZWZ0LCAkcmlnaHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbGwgbGVhZi1ub2RlIFtFeHRlbnNpb25dcyBpbiB0aGUgdHJlZSBvZiBbTWVyZ2VkRXh0ZW5zaW9uXXMuCiAgICAgKgogICAgICogQHJldHVybiBcVHJhdmVyc2FibGU8RXh0ZW5zaW9uPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5tZXJnZSgpOiBcVHJhdmVyc2FibGUKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmxlZnQgaW5zdGFuY2VvZiBNZXJnZWRFeHRlbnNpb24pIHsKICAgICAgICAgICAgeWllbGQgZnJvbSAkdGhpcy0+bGVmdC0+dW5tZXJnZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHlpZWxkICR0aGlzLT5sZWZ0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5yaWdodCBpbnN0YW5jZW9mIE1lcmdlZEV4dGVuc2lvbikgewogICAgICAgICAgICB5aWVsZCBmcm9tICR0aGlzLT5yaWdodC0+dW5tZXJnZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHlpZWxkICR0aGlzLT5yaWdodDsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/ObjectSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCi8qKgogKiBAdGVtcGxhdGUgVCBvZiBvYmplY3QKICogQHRlbXBsYXRlLWltcGxlbWVudHMgXEl0ZXJhdG9yQWdncmVnYXRlPGludCwgVD4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBPYmplY3RTZXQgaW1wbGVtZW50cyBcSXRlcmF0b3JBZ2dyZWdhdGUKewogICAgLyoqCiAgICAgKiBAdmFyIFxTcGxPYmplY3RTdG9yYWdlPFQsIG1peGVkPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IFxTcGxPYmplY3RTdG9yYWdlICRzdG9yYWdlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0b3JhZ2UgPSBuZXcgXFNwbE9iamVjdFN0b3JhZ2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBUICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29udGFpbnMob2JqZWN0ICR2YWx1ZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0b3JhZ2UtPm9mZnNldEV4aXN0cygkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFQgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQob2JqZWN0ICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c3RvcmFnZS0+b2Zmc2V0U2V0KCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gT2JqZWN0U2V0PFQ+ICRzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEFsbChzZWxmICRzZXQpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnN0b3JhZ2UtPmFkZEFsbCgkc2V0LT5zdG9yYWdlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXRlcmF0b3IoKTogXFRyYXZlcnNhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdG9yYWdlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Extend/SimpleSelectorMap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4dGVuZDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNpbXBsZVNlbGVjdG9yOwoKLyoqCiAqIEB0ZW1wbGF0ZSBUCiAqIEB0ZW1wbGF0ZS1leHRlbmRzIFxTcGxPYmplY3RTdG9yYWdlPFNpbXBsZVNlbGVjdG9yLCBUPgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFNpbXBsZVNlbGVjdG9yTWFwIGV4dGVuZHMgXFNwbE9iamVjdFN0b3JhZ2UKewogICAgcHVibGljIGZ1bmN0aW9uIGdldEhhc2gob2JqZWN0ICRvYmplY3QpOiBzdHJpbmcKICAgIHsKICAgICAgICBcYXNzZXJ0KCRvYmplY3QgaW5zdGFuY2VvZiBTaW1wbGVTZWxlY3Rvcik7CiAgICAgICAgLy8gRm9yIFNpbXBsZVNlbGVjdG9yLCBzZWxlY3RvcnMgdGhhdCBhcmUgZXF1YWwgYnkgdmFsdWUgc2VtYW50aWMgYXJlIGV4YWN0bHkgdGhlIG9uZXMgdGhhdCBoYXZlIHRoZSBzYW1lIHN0cmluZyByZXByZXNlbnRhdGlvbi4KICAgICAgICByZXR1cm4gKHN0cmluZykgJG9iamVjdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/ColorFunctions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZ1bmN0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxEZXByZWNhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEl0ZXJhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXE51bWJlclV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTdHJpbmdVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXENvbG9yRm9ybWF0RW51bTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxMaXN0U2VwYXJhdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NBcmd1bWVudExpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0NvbG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxXYXJuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgQ29sb3JGdW5jdGlvbnMKewogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJnYihhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6cmdiSW1wbCgncmdiJywgJGFyZ3VtZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJnYlR3b0FyZ3MoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OnJnYlR3b0FyZ3NJbXBsKCdyZ2InLCAkYXJndW1lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmdiT25lQXJncyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkcGFyc2VkID0gc2VsZjo6cGFyc2VDaGFubmVscygncmdiJywgWyckcmVkJywgJyRncmVlbicsICckYmx1ZSddLCAkYXJndW1lbnRzWzBdKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWQgaW5zdGFuY2VvZiBTYXNzU3RyaW5nID8gJHBhcnNlZCA6IHNlbGY6OnJnYkltcGwoJ3JnYicsICRwYXJzZWQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZ2JhKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpyZ2JJbXBsKCdyZ2JhJywgJGFyZ3VtZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJnYmFUd29BcmdzKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpyZ2JUd29BcmdzSW1wbCgncmdiYScsICRhcmd1bWVudHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZ2JhT25lQXJncyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkcGFyc2VkID0gc2VsZjo6cGFyc2VDaGFubmVscygncmdiYScsIFsnJHJlZCcsICckZ3JlZW4nLCAnJGJsdWUnXSwgJGFyZ3VtZW50c1swXSk7CgogICAgICAgIHJldHVybiAkcGFyc2VkIGluc3RhbmNlb2YgU2Fzc1N0cmluZyA/ICRwYXJzZWQgOiBzZWxmOjpyZ2JJbXBsKCdyZ2JhJywgJHBhcnNlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludmVydChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkd2VpZ2h0ID0gJGFyZ3VtZW50c1sxXS0+YXNzZXJ0TnVtYmVyKCd3ZWlnaHQnKTsKICAgICAgICBpZiAoJGFyZ3VtZW50c1swXSBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgfHwgJGFyZ3VtZW50c1swXS0+aXNTcGVjaWFsTnVtYmVyKCkpIHsKICAgICAgICAgICAgaWYgKCR3ZWlnaHQtPmdldFZhbHVlKCkgIT09IDEwMC4wIHx8ICEkd2VpZ2h0LT5oYXNVbml0KCclJykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdPbmx5IG9uZSBhcmd1bWVudCBtYXkgYmUgcGFzc2VkIHRvIHRoZSBwbGFpbi1DU1MgaW52ZXJ0KCkgZnVuY3Rpb24uJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFVzZSB0aGUgbmF0aXZlIENTUyBgaW52ZXJ0YCBmaWx0ZXIgZnVuY3Rpb24uCiAgICAgICAgICAgIHJldHVybiBzZWxmOjpmdW5jdGlvblN0cmluZygnaW52ZXJ0JywgWyRhcmd1bWVudHNbMF1dKTsKICAgICAgICB9CgogICAgICAgICRjb2xvciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpOwogICAgICAgICRpbnZlcnNlID0gJGNvbG9yLT5jaGFuZ2VSZ2IoMjU1IC0gJGNvbG9yLT5nZXRSZWQoKSwgMjU1IC0gJGNvbG9yLT5nZXRHcmVlbigpLCAyNTUgLSAkY29sb3ItPmdldEJsdWUoKSk7CgogICAgICAgIHJldHVybiBzZWxmOjptaXhDb2xvcnMoJGludmVyc2UsICRjb2xvciwgJHdlaWdodCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhzbChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6aHNsSW1wbCgnaHNsJywgJGFyZ3VtZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhzbFR3b0FyZ3MoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgLy8gaHNsKDEyMywgdmFyKC0tZm9vKSkgaXMgdmFsaWQgQ1NTIGJlY2F1c2UgLS1mb28gbWlnaHQgYmUgYDEwJSwgMjAlYCBhbmQKICAgICAgICAvLyBmdW5jdGlvbnMgYXJlIHBhcnNlZCBhZnRlciB2YXJpYWJsZSBzdWJzdGl0dXRpb24uCiAgICAgICAgaWYgKCRhcmd1bWVudHNbMF0tPmlzVmFyKCkgfHwgJGFyZ3VtZW50c1sxXS0+aXNWYXIoKSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZnVuY3Rpb25TdHJpbmcoJ2hzbCcsICRhcmd1bWVudHMpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ01pc3NpbmcgYXJndW1lbnQgJGxpZ2h0bmVzcy4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaHNsT25lQXJncyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkcGFyc2VkID0gc2VsZjo6cGFyc2VDaGFubmVscygnaHNsJywgWyckaHVlJywgJyRzYXR1cmF0aW9uJywgJyRsaWdodG5lc3MnXSwgJGFyZ3VtZW50c1swXSk7CgogICAgICAgIHJldHVybiAkcGFyc2VkIGluc3RhbmNlb2YgU2Fzc1N0cmluZyA/ICRwYXJzZWQgOiBzZWxmOjpoc2xJbXBsKCdoc2wnLCAkcGFyc2VkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaHNsYShhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6aHNsSW1wbCgnaHNsYScsICRhcmd1bWVudHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoc2xhVHdvQXJncyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAvLyBoc2woMTIzLCB2YXIoLS1mb28pKSBpcyB2YWxpZCBDU1MgYmVjYXVzZSAtLWZvbyBtaWdodCBiZSBgMTAlLCAyMCVgIGFuZAogICAgICAgIC8vIGZ1bmN0aW9ucyBhcmUgcGFyc2VkIGFmdGVyIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4KICAgICAgICBpZiAoJGFyZ3VtZW50c1swXS0+aXNWYXIoKSB8fCAkYXJndW1lbnRzWzFdLT5pc1ZhcigpKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpmdW5jdGlvblN0cmluZygnaHNsYScsICRhcmd1bWVudHMpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ01pc3NpbmcgYXJndW1lbnQgJGxpZ2h0bmVzcy4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaHNsYU9uZUFyZ3MoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJHBhcnNlZCA9IHNlbGY6OnBhcnNlQ2hhbm5lbHMoJ2hzbGEnLCBbJyRodWUnLCAnJHNhdHVyYXRpb24nLCAnJGxpZ2h0bmVzcyddLCAkYXJndW1lbnRzWzBdKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWQgaW5zdGFuY2VvZiBTYXNzU3RyaW5nID8gJHBhcnNlZCA6IHNlbGY6OmhzbEltcGwoJ2hzbGEnLCAkcGFyc2VkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ3JheXNjYWxlKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkYXJndW1lbnRzWzBdIGluc3RhbmNlb2YgU2Fzc051bWJlciB8fCAkYXJndW1lbnRzWzBdLT5pc1NwZWNpYWxOdW1iZXIoKSkgewogICAgICAgICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBDU1MgYGdyYXlzY2FsZWAgZmlsdGVyIGZ1bmN0aW9uLgogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZnVuY3Rpb25TdHJpbmcoJ2dyYXlzY2FsZScsICRhcmd1bWVudHMpOwogICAgICAgIH0KCiAgICAgICAgJGNvbG9yID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0Q29sb3IoJ2NvbG9yJyk7CgogICAgICAgIHJldHVybiAkY29sb3ItPmNoYW5nZUhzbChzYXR1cmF0aW9uOiAwKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWRqdXN0SHVlKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRjb2xvciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpOwogICAgICAgICRkZWdyZWVzID0gc2VsZjo6YW5nbGVWYWx1ZSgkYXJndW1lbnRzWzFdLCAnZGVncmVlcycpOwoKICAgICAgICByZXR1cm4gJGNvbG9yLT5jaGFuZ2VIc2woaHVlOiAkY29sb3ItPmdldEh1ZSgpICsgJGRlZ3JlZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsaWdodGVuKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRjb2xvciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpOwogICAgICAgICRhbW91bnQgPSAkYXJndW1lbnRzWzFdLT5hc3NlcnROdW1iZXIoJ2Ftb3VudCcpOwoKICAgICAgICByZXR1cm4gJGNvbG9yLT5jaGFuZ2VIc2wobGlnaHRuZXNzOiBOdW1iZXJVdGlsOjpjbGFtcCgkY29sb3ItPmdldExpZ2h0bmVzcygpICsgJGFtb3VudC0+dmFsdWVJblJhbmdlKDAsIDEwMCwgJ2Ftb3VudCcpLCAwLCAxMDApKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGFya2VuKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRjb2xvciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpOwogICAgICAgICRhbW91bnQgPSAkYXJndW1lbnRzWzFdLT5hc3NlcnROdW1iZXIoJ2Ftb3VudCcpOwoKICAgICAgICByZXR1cm4gJGNvbG9yLT5jaGFuZ2VIc2wobGlnaHRuZXNzOiBOdW1iZXJVdGlsOjpjbGFtcCgkY29sb3ItPmdldExpZ2h0bmVzcygpIC0gJGFtb3VudC0+dmFsdWVJblJhbmdlKDAsIDEwMCwgJ2Ftb3VudCcpLCAwLCAxMDApKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F0dXJhdGVDc3MoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCRhcmd1bWVudHNbMF0gaW5zdGFuY2VvZiBTYXNzTnVtYmVyIHx8ICRhcmd1bWVudHNbMF0tPmlzU3BlY2lhbE51bWJlcigpKSB7CiAgICAgICAgICAgIC8vIFVzZSB0aGUgbmF0aXZlIENTUyBgc2F0dXJhdGVgIGZpbHRlciBmdW5jdGlvbi4KICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZ1bmN0aW9uU3RyaW5nKCdzYXR1cmF0ZScsICRhcmd1bWVudHMpOwogICAgICAgIH0KCiAgICAgICAgJG51bWJlciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydE51bWJlcignYW1vdW50Jyk7CgogICAgICAgIHJldHVybiBuZXcgU2Fzc1N0cmluZygnc2F0dXJhdGUoJyAuICRudW1iZXItPnRvQ3NzU3RyaW5nKCkgLiAnKScsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F0dXJhdGUoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGNvbG9yID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0Q29sb3IoJ2NvbG9yJyk7CiAgICAgICAgJGFtb3VudCA9ICRhcmd1bWVudHNbMV0tPmFzc2VydE51bWJlcignYW1vdW50Jyk7CgogICAgICAgIHJldHVybiAkY29sb3ItPmNoYW5nZUhzbChzYXR1cmF0aW9uOiBOdW1iZXJVdGlsOjpjbGFtcCgkY29sb3ItPmdldFNhdHVyYXRpb24oKSArICRhbW91bnQtPnZhbHVlSW5SYW5nZSgwLCAxMDAsICdhbW91bnQnKSwgMCwgMTAwKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlc2F0dXJhdGUoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGNvbG9yID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0Q29sb3IoJ2NvbG9yJyk7CiAgICAgICAgJGFtb3VudCA9ICRhcmd1bWVudHNbMV0tPmFzc2VydE51bWJlcignYW1vdW50Jyk7CgogICAgICAgIHJldHVybiAkY29sb3ItPmNoYW5nZUhzbChzYXR1cmF0aW9uOiBOdW1iZXJVdGlsOjpjbGFtcCgkY29sb3ItPmdldFNhdHVyYXRpb24oKSAtICRhbW91bnQtPnZhbHVlSW5SYW5nZSgwLCAxMDAsICdhbW91bnQnKSwgMCwgMTAwKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFscGhhKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRhcmd1bWVudCA9ICRhcmd1bWVudHNbMF07CiAgICAgICAgaWYgKCRhcmd1bWVudCBpbnN0YW5jZW9mIFNhc3NTdHJpbmcgJiYgISRhcmd1bWVudC0+aGFzUXVvdGVzKCkgJiYgcHJlZ19tYXRjaCgnL15bYS16QS1aXStccyo9LycsICRhcmd1bWVudC0+Z2V0VGV4dCgpKSkgewogICAgICAgICAgICAvLyBTdXBwb3J0IHRoZSBwcm9wcmlldGFyeSBNaWNyb3NvZnQgYWxwaGEoKSBmdW5jdGlvbi4KICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZ1bmN0aW9uU3RyaW5nKCdhbHBoYScsICRhcmd1bWVudHMpOwogICAgICAgIH0KCiAgICAgICAgJGNvbG9yID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0Q29sb3IoJ2NvbG9yJyk7CgogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjpjcmVhdGUoJGNvbG9yLT5nZXRBbHBoYSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWxwaGFNaWNyb3NvZnQoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGFyZ0xpc3QgPSAkYXJndW1lbnRzWzBdLT5hc0xpc3QoKTsKICAgICAgICAkYXJndW1lbnRDb3VudCA9IFxjb3VudCgkYXJnTGlzdCk7CgogICAgICAgIGlmICgkYXJndW1lbnRDb3VudCA+IDAgJiYgSXRlcmFibGVVdGlsOjpldmVyeSgkYXJnTGlzdCwgZm4oJGFyZ3VtZW50KSA9PiAkYXJndW1lbnQgaW5zdGFuY2VvZiBTYXNzU3RyaW5nICYmICEkYXJndW1lbnQtPmhhc1F1b3RlcygpICYmIHByZWdfbWF0Y2goJy9eW2EtekEtWl0rXHMqPS8nLCAkYXJndW1lbnQtPmdldFRleHQoKSkpKSB7CiAgICAgICAgICAgIC8vIFN1cHBvcnQgdGhlIHByb3ByaWV0YXJ5IE1pY3Jvc29mdCBhbHBoYSgpIGZ1bmN0aW9uLgogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZnVuY3Rpb25TdHJpbmcoJ2FscGhhJywgJGFyZ3VtZW50cyk7CiAgICAgICAgfQoKICAgICAgICBcYXNzZXJ0KCRhcmd1bWVudENvdW50ICE9PSAxKTsKCiAgICAgICAgaWYgKCRhcmd1bWVudENvdW50ID09PSAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdNaXNzaW5nIGFyZ3VtZW50ICRjb2xvci4nKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJPbmx5IDEgYXJndW1lbnQgYWxsb3dlZCwgYnV0ICRhcmd1bWVudENvdW50IHdlcmUgcGFzc2VkLiIpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvcGFjaXR5KGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkYXJndW1lbnRzWzBdIGluc3RhbmNlb2YgU2Fzc051bWJlciB8fCAkYXJndW1lbnRzWzBdLT5pc1NwZWNpYWxOdW1iZXIoKSkgewogICAgICAgICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBDU1MgYG9wYWNpdHlgIGZpbHRlciBmdW5jdGlvbi4KICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZ1bmN0aW9uU3RyaW5nKCdvcGFjaXR5JywgJGFyZ3VtZW50cyk7CiAgICAgICAgfQoKICAgICAgICAkY29sb3IgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRDb2xvcignY29sb3InKTsKCiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZSgkY29sb3ItPmdldEFscGhhKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWQoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZSgkYXJndW1lbnRzWzBdLT5hc3NlcnRDb2xvcignY29sb3InKS0+Z2V0UmVkKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBncmVlbihhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gU2Fzc051bWJlcjo6Y3JlYXRlKCRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpLT5nZXRHcmVlbigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYmx1ZShhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gU2Fzc051bWJlcjo6Y3JlYXRlKCRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpLT5nZXRCbHVlKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtaXgoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGNvbG9yMSA9ICRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcjEnKTsKICAgICAgICAkY29sb3IyID0gJGFyZ3VtZW50c1sxXS0+YXNzZXJ0Q29sb3IoJ2NvbG9yMicpOwogICAgICAgICR3ZWlnaHQgPSAkYXJndW1lbnRzWzJdLT5hc3NlcnROdW1iZXIoJ3dlaWdodCcpOwoKICAgICAgICByZXR1cm4gc2VsZjo6bWl4Q29sb3JzKCRjb2xvcjEsICRjb2xvcjIsICR3ZWlnaHQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBodWUoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZSgkYXJndW1lbnRzWzBdLT5hc3NlcnRDb2xvcignY29sb3InKS0+Z2V0SHVlKCksICdkZWcnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F0dXJhdGlvbihhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gU2Fzc051bWJlcjo6Y3JlYXRlKCRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpLT5nZXRTYXR1cmF0aW9uKCksICclJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxpZ2h0bmVzcyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gU2Fzc051bWJlcjo6Y3JlYXRlKCRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpLT5nZXRMaWdodG5lc3MoKSwgJyUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29tcGxlbWVudChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkY29sb3IgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRDb2xvcignY29sb3InKTsKCiAgICAgICAgcmV0dXJuICRjb2xvci0+Y2hhbmdlSHNsKGh1ZTogJGNvbG9yLT5nZXRIdWUoKSArIDE4MCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFkanVzdChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6dXBkYXRlQ29tcG9uZW50cygkYXJndW1lbnRzLCBhZGp1c3Q6IHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzY2FsZShhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6dXBkYXRlQ29tcG9uZW50cygkYXJndW1lbnRzLCBzY2FsZTogdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoYW5nZShhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6dXBkYXRlQ29tcG9uZW50cygkYXJndW1lbnRzLCBjaGFuZ2U6IHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpZUhleFN0cihhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkY29sb3IgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRDb2xvcignY29sb3InKTsKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoJyMnIC4gc2VsZjo6aGV4U3RyaW5nKE51bWJlclV0aWw6OmZ1enp5Um91bmQoJGNvbG9yLT5nZXRBbHBoYSgpICogMjU1KSkgLiBzZWxmOjpoZXhTdHJpbmcoJGNvbG9yLT5nZXRSZWQoKSkgLiBzZWxmOjpoZXhTdHJpbmcoJGNvbG9yLT5nZXRHcmVlbigpKSAuIHNlbGY6OmhleFN0cmluZygkY29sb3ItPmdldEJsdWUoKSksIGZhbHNlKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBoZXhTdHJpbmcoaW50ICRjb21wb25lbnQpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc3RydG91cHBlcihzdHJfcGFkKGRlY2hleCgkY29tcG9uZW50KSwgMiwgJzAnLCBTVFJfUEFEX0xFRlQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHVwZGF0ZUNvbXBvbmVudHMoYXJyYXkgJGFyZ3VtZW50cywgYm9vbCAkY2hhbmdlID0gZmFsc2UsIGJvb2wgJGFkanVzdCA9IGZhbHNlLCBib29sICRzY2FsZSA9IGZhbHNlKTogU2Fzc0NvbG9yCiAgICB7CiAgICAgICAgXGFzc2VydChcY291bnQoYXJyYXlfZmlsdGVyKFskY2hhbmdlLCAkYWRqdXN0LCAkc2NhbGVdKSkgPT09IDEpOwoKICAgICAgICAkY29sb3IgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRDb2xvcignY29sb3InKTsKICAgICAgICAkYXJndW1lbnRMaXN0ID0gJGFyZ3VtZW50c1sxXTsKICAgICAgICBcYXNzZXJ0KCRhcmd1bWVudExpc3QgaW5zdGFuY2VvZiBTYXNzQXJndW1lbnRMaXN0KTsKCiAgICAgICAgaWYgKFxjb3VudCgkYXJndW1lbnRMaXN0LT5hc0xpc3QoKSkgPiAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdPbmx5IG9uZSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGFsbG93ZWQuIEFsbCBvdGhlciBhcmd1bWVudHMgbXVzdCBiZSBwYXNzZWQgYnkgbmFtZS4nKTsKICAgICAgICB9CgogICAgICAgICRrZXl3b3JkcyA9ICRhcmd1bWVudExpc3QtPmdldEtleXdvcmRzKCk7CgogICAgICAgICRnZXRQYXJhbSA9IGZ1bmN0aW9uIChzdHJpbmcgJG5hbWUsIGZsb2F0ICRtYXgsIGJvb2wgJGNoZWNrUGVyY2VudCA9IGZhbHNlLCBib29sICRhc3NlcnRQZXJjZW50ID0gZmFsc2UsIGJvb2wgJGNoZWNrVW5pdGxlc3MgPSBmYWxzZSkgdXNlICgmJGtleXdvcmRzLCAkY2hhbmdlLCAkc2NhbGUpOiA/ZmxvYXQgewogICAgICAgICAgICAkbnVtYmVyID0gKCRrZXl3b3Jkc1skbmFtZV0gPz8gbnVsbCk/LT5hc3NlcnROdW1iZXIoJG5hbWUpOwogICAgICAgICAgICB1bnNldCgka2V5d29yZHNbJG5hbWVdKTsKCiAgICAgICAgICAgIGlmICgkbnVtYmVyID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEkc2NhbGUgJiYgJGNoZWNrVW5pdGxlc3MpIHsKICAgICAgICAgICAgICAgIGlmICgkbnVtYmVyLT5oYXNVbml0cygpKSB7CiAgICAgICAgICAgICAgICAgICAgV2Fybjo6Zm9yRGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgIDw8PFRYVApcJCRuYW1lOiBQYXNzaW5nIGEgbnVtYmVyIHdpdGggdW5pdCB7JG51bWJlci0+Z2V0VW5pdFN0cmluZygpfSBpcyBkZXByZWNhdGVkLgoKVG8gcHJlc2VydmUgY3VycmVudCBiZWhhdmlvcjogeyRudW1iZXItPnVuaXRTdWdnZXN0aW9uKCRuYW1lKX0KCk1vcmUgaW5mbzogaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2QvZnVuY3Rpb24tdW5pdHMKVFhULAogICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbjo6ZnVuY3Rpb25Vbml0cwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEkc2NhbGUgJiYgJGNoZWNrUGVyY2VudCkgewogICAgICAgICAgICAgICAgc2VsZjo6Y2hlY2tQZXJjZW50KCRudW1iZXIsICRuYW1lKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHNjYWxlIHx8ICRhc3NlcnRQZXJjZW50KSB7CiAgICAgICAgICAgICAgICAkbnVtYmVyLT5hc3NlcnRVbml0KCclJywgJG5hbWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkc2NhbGUpIHsKICAgICAgICAgICAgICAgICRtYXggPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkc2NhbGUgfHwgJGFzc2VydFBlcmNlbnQKICAgICAgICAgICAgICAgID8gJG51bWJlci0+dmFsdWVJblJhbmdlKCRjaGFuZ2UgPyAwIDogLSRtYXgsICRtYXgsICRuYW1lKQogICAgICAgICAgICAgICAgOiAkbnVtYmVyLT52YWx1ZUluUmFuZ2VXaXRoVW5pdCgkY2hhbmdlID8gMCA6IC0kbWF4LCAkbWF4LCAkbmFtZSwgJGNoZWNrUGVyY2VudCA/ICclJyA6ICcnKTsKICAgICAgICB9OwoKICAgICAgICAkYWxwaGEgPSAkZ2V0UGFyYW0oJ2FscGhhJywgMSwgY2hlY2tVbml0bGVzczogdHJ1ZSk7CiAgICAgICAgJHJlZCA9ICRnZXRQYXJhbSgncmVkJywgMjU1KTsKICAgICAgICAkZ3JlZW4gPSAkZ2V0UGFyYW0oJ2dyZWVuJywgMjU1KTsKICAgICAgICAkYmx1ZSA9ICRnZXRQYXJhbSgnYmx1ZScsIDI1NSk7CgogICAgICAgIGlmICgkc2NhbGUpIHsKICAgICAgICAgICAgJGh1ZSA9IG51bGw7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGh1ZVZhbHVlID0gJGtleXdvcmRzWydodWUnXSA/PyBudWxsOwogICAgICAgICAgICB1bnNldCgka2V5d29yZHNbJ2h1ZSddKTsKICAgICAgICAgICAgJGh1ZSA9ICRodWVWYWx1ZSA9PT0gbnVsbCA/IG51bGwgOiBzZWxmOjphbmdsZVZhbHVlKCRodWVWYWx1ZSwgJ2h1ZScpOwogICAgICAgIH0KCiAgICAgICAgJHNhdHVyYXRpb24gPSAkZ2V0UGFyYW0oJ3NhdHVyYXRpb24nLCAxMDAsIGNoZWNrUGVyY2VudDogdHJ1ZSk7CiAgICAgICAgJGxpZ2h0bmVzcyA9ICRnZXRQYXJhbSgnbGlnaHRuZXNzJywgMTAwLCBjaGVja1BlcmNlbnQ6IHRydWUpOwogICAgICAgICR3aGl0ZW5lc3MgPSAkZ2V0UGFyYW0oJ3doaXRlbmVzcycsIDEwMCwgYXNzZXJ0UGVyY2VudDogdHJ1ZSk7CiAgICAgICAgJGJsYWNrbmVzcyA9ICRnZXRQYXJhbSgnYmxhY2tuZXNzJywgMTAwLCBhc3NlcnRQZXJjZW50OiB0cnVlKTsKCiAgICAgICAgaWYgKFxjb3VudCgka2V5d29yZHMpID4gMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAgICAgJ05vICVzIG5hbWVkICVzLicsCiAgICAgICAgICAgICAgICBTdHJpbmdVdGlsOjpwbHVyYWxpemUoJ2FyZ3VtZW50JywgXGNvdW50KCRrZXl3b3JkcykpLAogICAgICAgICAgICAgICAgU3RyaW5nVXRpbDo6dG9TZW50ZW5jZShhcnJheV9tYXAoZm4oJG5hbWUpID0+ICJcJCRuYW1lIiwgYXJyYXlfa2V5cygka2V5d29yZHMpKSwgJ29yJykKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICAkaGFzUmdiID0gJHJlZCAhPT0gbnVsbCB8fCAkZ3JlZW4gIT09IG51bGwgfHwgJGJsdWUgIT09IG51bGw7CiAgICAgICAgJGhhc1NMID0gJHNhdHVyYXRpb24gIT09IG51bGwgfHwgJGxpZ2h0bmVzcyAhPT0gbnVsbDsKICAgICAgICAkaGFzV0IgPSAkd2hpdGVuZXNzICE9PSBudWxsIHx8ICRibGFja25lc3MgIT09IG51bGw7CgogICAgICAgIGlmICgkaGFzUmdiICYmICgkaGFzU0wgfHwgJGhhc1dCIHx8ICRodWUgIT09IG51bGwpKSB7CiAgICAgICAgICAgICRmb3JtYXQgPSAkaGFzV0IgPyAnSFdCJyA6ICdIU0wnOwogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiUkdCIHBhcmFtZXRlcnMgbWF5IG5vdCBiZSBwYXNzZWQgYWxvbmcgd2l0aCAkZm9ybWF0IHBhcmFtZXRlcnMuIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGhhc1NMICYmICRoYXNXQikgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignSFNMIHBhcmFtZXRlcnMgbWF5IG5vdCBiZSBwYXNzZWQgYWxvbmcgd2l0aCBIV0IgcGFyYW1ldGVycy4nKTsKICAgICAgICB9CgogICAgICAgICR1cGRhdGVWYWx1ZSA9IGZ1bmN0aW9uIChmbG9hdCAkY3VycmVudCwgP2Zsb2F0ICRwYXJhbSwgZmxvYXQgJG1heCkgdXNlICgkY2hhbmdlLCAkYWRqdXN0KTogZmxvYXQgewogICAgICAgICAgICBpZiAoJHBhcmFtID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGN1cnJlbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkY2hhbmdlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHBhcmFtOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGFkanVzdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlclV0aWw6OmNsYW1wKCRjdXJyZW50ICsgJHBhcmFtLCAwLCAkbWF4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRjdXJyZW50ICsgKCRwYXJhbSA+IDAgPyAkbWF4IC0gJGN1cnJlbnQgOiAkY3VycmVudCkgKiAkcGFyYW0gLyAxMDA7CiAgICAgICAgfTsKCiAgICAgICAgJHVwZGF0ZVJnYiA9IGZ1bmN0aW9uIChpbnQgJGN1cnJlbnQsID9mbG9hdCAkcGFyYW0pIHVzZSAoJHVwZGF0ZVZhbHVlKTogaW50IHsKICAgICAgICAgICAgcmV0dXJuIE51bWJlclV0aWw6OmZ1enp5Um91bmQoJHVwZGF0ZVZhbHVlKCRjdXJyZW50LCAkcGFyYW0sIDI1NSkpOwogICAgICAgIH07CgogICAgICAgIGlmICgkaGFzUmdiKSB7CiAgICAgICAgICAgIHJldHVybiAkY29sb3ItPmNoYW5nZVJnYigKICAgICAgICAgICAgICAgICR1cGRhdGVSZ2IoJGNvbG9yLT5nZXRSZWQoKSwgJHJlZCksCiAgICAgICAgICAgICAgICAkdXBkYXRlUmdiKCRjb2xvci0+Z2V0R3JlZW4oKSwgJGdyZWVuKSwKICAgICAgICAgICAgICAgICR1cGRhdGVSZ2IoJGNvbG9yLT5nZXRCbHVlKCksICRibHVlKSwKICAgICAgICAgICAgICAgICR1cGRhdGVWYWx1ZSgkY29sb3ItPmdldEFscGhhKCksICRhbHBoYSwgMSkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkaGFzV0IpIHsKICAgICAgICAgICAgcmV0dXJuICRjb2xvci0+Y2hhbmdlSHdiKAogICAgICAgICAgICAgICAgJGNoYW5nZSA/ICRodWUgOiAkY29sb3ItPmdldEh1ZSgpICsgKCRodWUgPz8gMCksCiAgICAgICAgICAgICAgICAkdXBkYXRlVmFsdWUoJGNvbG9yLT5nZXRXaGl0ZW5lc3MoKSwgJHdoaXRlbmVzcywgMTAwKSwKICAgICAgICAgICAgICAgICR1cGRhdGVWYWx1ZSgkY29sb3ItPmdldEJsYWNrbmVzcygpLCAkYmxhY2tuZXNzLCAxMDApLAogICAgICAgICAgICAgICAgJHVwZGF0ZVZhbHVlKCRjb2xvci0+Z2V0QWxwaGEoKSwgJGFscGhhLCAxKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRodWUgIT09IG51bGwgfHwgJGhhc1NMKSB7CiAgICAgICAgICAgIHJldHVybiAkY29sb3ItPmNoYW5nZUhzbCgKICAgICAgICAgICAgICAgICRjaGFuZ2UgPyAkaHVlIDogJGNvbG9yLT5nZXRIdWUoKSArICgkaHVlID8/IDApLAogICAgICAgICAgICAgICAgJHVwZGF0ZVZhbHVlKCRjb2xvci0+Z2V0U2F0dXJhdGlvbigpLCAkc2F0dXJhdGlvbiwgMTAwKSwKICAgICAgICAgICAgICAgICR1cGRhdGVWYWx1ZSgkY29sb3ItPmdldExpZ2h0bmVzcygpLCAkbGlnaHRuZXNzLCAxMDApLAogICAgICAgICAgICAgICAgJHVwZGF0ZVZhbHVlKCRjb2xvci0+Z2V0QWxwaGEoKSwgJGFscGhhLCAxKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhbHBoYSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJGNvbG9yLT5jaGFuZ2VBbHBoYSgkdXBkYXRlVmFsdWUoJGNvbG9yLT5nZXRBbHBoYSgpLCAkYWxwaGEsIDEpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29sb3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICRuYW1lIGNhbGxlZCB3aXRoICRhcmd1bWVudHMsIGFzIHRob3VnaAogICAgICogaXQgd2VyZSBhIHBsYWluIENTUyBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gVmFsdWVbXSAkYXJndW1lbnRzCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZ1bmN0aW9uU3RyaW5nKHN0cmluZyAkbmFtZSwgYXJyYXkgJGFyZ3VtZW50cyk6IFNhc3NTdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoJG5hbWUgLiAnKCcgLiBpbXBsb2RlKCcsICcsIGFycmF5X21hcChmbihWYWx1ZSAkYXJndW1lbnQpID0+ICRhcmd1bWVudC0+dG9Dc3NTdHJpbmcoKSwgJGFyZ3VtZW50cykpIC4gJyknLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZ2JJbXBsKHN0cmluZyAkbmFtZSwgYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGFscGhhID0gJGFyZ3VtZW50c1szXSA/PyBudWxsOwoKICAgICAgICBpZiAoJGFyZ3VtZW50c1swXS0+aXNTcGVjaWFsTnVtYmVyKCkgfHwgJGFyZ3VtZW50c1sxXS0+aXNTcGVjaWFsTnVtYmVyKCkgfHwgJGFyZ3VtZW50c1syXS0+aXNTcGVjaWFsTnVtYmVyKCkgfHwgKCRhbHBoYT8tPmlzU3BlY2lhbE51bWJlcigpID8/IGZhbHNlKSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZnVuY3Rpb25TdHJpbmcoJG5hbWUsICRhcmd1bWVudHMpOwogICAgICAgIH0KCiAgICAgICAgJHJlZCA9ICRhcmd1bWVudHNbMF0tPmFzc2VydE51bWJlcigncmVkJyk7CiAgICAgICAgJGdyZWVuID0gJGFyZ3VtZW50c1sxXS0+YXNzZXJ0TnVtYmVyKCdncmVlbicpOwogICAgICAgICRibHVlID0gJGFyZ3VtZW50c1syXS0+YXNzZXJ0TnVtYmVyKCdibHVlJyk7CgogICAgICAgIHJldHVybiBTYXNzQ29sb3I6OnJnYkludGVybmFsKAogICAgICAgICAgICBOdW1iZXJVdGlsOjpmdXp6eVJvdW5kKHNlbGY6OnBlcmNlbnRhZ2VPclVuaXRsZXNzKCRyZWQsIDI1NSwgJ3JlZCcpKSwKICAgICAgICAgICAgTnVtYmVyVXRpbDo6ZnV6enlSb3VuZChzZWxmOjpwZXJjZW50YWdlT3JVbml0bGVzcygkZ3JlZW4sIDI1NSwgJ2dyZWVuJykpLAogICAgICAgICAgICBOdW1iZXJVdGlsOjpmdXp6eVJvdW5kKHNlbGY6OnBlcmNlbnRhZ2VPclVuaXRsZXNzKCRibHVlLCAyNTUsICdibHVlJykpLAogICAgICAgICAgICAkYWxwaGEgIT09IG51bGwgPyBzZWxmOjpwZXJjZW50YWdlT3JVbml0bGVzcygkYWxwaGEtPmFzc2VydE51bWJlcignYWxwaGEnKSwgMSwgJ2FscGhhJykgOiAxLAogICAgICAgICAgICBDb2xvckZvcm1hdEVudW06OnJnYkZ1bmN0aW9uCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJnYlR3b0FyZ3NJbXBsKHN0cmluZyAkbmFtZSwgYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgLy8gcmdiYSh2YXIoLS1mb28pLCAwLjUpIGlzIHZhbGlkIENTUyBiZWNhdXNlIC0tZm9vIG1pZ2h0IGJlIGAxMjMsIDQ1NiwgNzg5YAogICAgICAgIC8vIGFuZCBmdW5jdGlvbnMgYXJlIHBhcnNlZCBhZnRlciB2YXJpYWJsZSBzdWJzdGl0dXRpb24uCiAgICAgICAgaWYgKCRhcmd1bWVudHNbMF0tPmlzVmFyKCkgfHwgKCEkYXJndW1lbnRzWzBdIGluc3RhbmNlb2YgU2Fzc0NvbG9yICYmICRhcmd1bWVudHNbMV0tPmlzVmFyKCkpKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpmdW5jdGlvblN0cmluZygkbmFtZSwgJGFyZ3VtZW50cyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGFyZ3VtZW50c1sxXS0+aXNTcGVjaWFsTnVtYmVyKCkpIHsKICAgICAgICAgICAgJGNvbG9yID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0Q29sb3IoJ2NvbG9yJyk7CgogICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoIiRuYW1lKHskY29sb3ItPmdldFJlZCgpfSwgeyRjb2xvci0+Z2V0R3JlZW4oKX0sIHskY29sb3ItPmdldEJsdWUoKX0sIHskYXJndW1lbnRzWzFdLT50b0Nzc1N0cmluZygpfSkiLCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICAkY29sb3IgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRDb2xvcignY29sb3InKTsKICAgICAgICAkYWxwaGEgPSAkYXJndW1lbnRzWzFdLT5hc3NlcnROdW1iZXIoJ2FscGhhJyk7CgogICAgICAgIHJldHVybiAkY29sb3ItPmNoYW5nZUFscGhhKHNlbGY6OnBlcmNlbnRhZ2VPclVuaXRsZXNzKCRhbHBoYSwgMSwgJ2FscGhhJykpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaHNsSW1wbChzdHJpbmcgJG5hbWUsIGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRhbHBoYSA9ICRhcmd1bWVudHNbM10gPz8gbnVsbDsKCiAgICAgICAgaWYgKCRhcmd1bWVudHNbMF0tPmlzU3BlY2lhbE51bWJlcigpIHx8ICRhcmd1bWVudHNbMV0tPmlzU3BlY2lhbE51bWJlcigpIHx8ICRhcmd1bWVudHNbMl0tPmlzU3BlY2lhbE51bWJlcigpIHx8ICgkYWxwaGE/LT5pc1NwZWNpYWxOdW1iZXIoKSA/PyBmYWxzZSkpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZ1bmN0aW9uU3RyaW5nKCRuYW1lLCAkYXJndW1lbnRzKTsKICAgICAgICB9CgogICAgICAgICRodWUgPSBzZWxmOjphbmdsZVZhbHVlKCRhcmd1bWVudHNbMF0sICdodWUnKTsKICAgICAgICAkc2F0dXJhdGlvbiA9ICRhcmd1bWVudHNbMV0tPmFzc2VydE51bWJlcignc2F0dXJhdGlvbicpOwogICAgICAgICRsaWdodG5lc3MgPSAkYXJndW1lbnRzWzJdLT5hc3NlcnROdW1iZXIoJ2xpZ2h0bmVzcycpOwoKICAgICAgICBzZWxmOjpjaGVja1BlcmNlbnQoJHNhdHVyYXRpb24sICdzYXR1cmF0aW9uJyk7CiAgICAgICAgc2VsZjo6Y2hlY2tQZXJjZW50KCRsaWdodG5lc3MsICdsaWdodG5lc3MnKTsKCiAgICAgICAgcmV0dXJuIFNhc3NDb2xvcjo6aHNsSW50ZXJuYWwoCiAgICAgICAgICAgICRodWUsCiAgICAgICAgICAgIE51bWJlclV0aWw6OmNsYW1wKCRzYXR1cmF0aW9uLT5nZXRWYWx1ZSgpLCAwLCAxMDApLAogICAgICAgICAgICBOdW1iZXJVdGlsOjpjbGFtcCgkbGlnaHRuZXNzLT5nZXRWYWx1ZSgpLCAwLCAxMDApLAogICAgICAgICAgICAkYWxwaGEgIT09IG51bGwgPyBzZWxmOjpwZXJjZW50YWdlT3JVbml0bGVzcygkYWxwaGEtPmFzc2VydE51bWJlcignYWxwaGEnKSwgMSwgJ2FscGhhJykgOiAxLAogICAgICAgICAgICBDb2xvckZvcm1hdEVudW06OmhzbEZ1bmN0aW9uCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydHMgdGhhdCAkYW5nbGUgaXMgYSBudW1iZXIgYW5kIHJldHVybnMgaXRzIHZhbHVlIGluIGRlZ3JlZXMuCiAgICAgKgogICAgICogUHJpbnRzIGEgZGVwcmVjYXRpb24gd2FybmluZyBpZiAkYW5nbGUgaGFzIGEgbm9uLWFuZ2xlIHVuaXQuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGFuZ2xlVmFsdWUoVmFsdWUgJGFuZ2xlVmFsdWUsIHN0cmluZyAkbmFtZSk6IGZsb2F0CiAgICB7CiAgICAgICAgJGFuZ2xlID0gJGFuZ2xlVmFsdWUtPmFzc2VydE51bWJlcigkbmFtZSk7CgogICAgICAgIGlmICgkYW5nbGUtPmNvbXBhdGlibGVXaXRoVW5pdCgnZGVnJykpIHsKICAgICAgICAgICAgcmV0dXJuICRhbmdsZS0+Y29lcmNlVmFsdWVUb1VuaXQoJ2RlZycpOwogICAgICAgIH0KCiAgICAgICAgV2Fybjo6Zm9yRGVwcmVjYXRpb24oCiAgICAgICAgICAgIDw8PFRYVApcJCRuYW1lOiBQYXNzaW5nIGEgdW5pdCBvdGhlciB0aGFuIGRlZyAoJGFuZ2xlKSBpcyBkZXByZWNhdGVkLgoKVG8gcHJlc2VydmUgY3VycmVudCBiZWhhdmlvcjogeyRhbmdsZS0+dW5pdFN1Z2dlc3Rpb24oJG5hbWUpfQoKU2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL2Z1bmN0aW9uLXVuaXRzClRYVCwKICAgICAgICAgICAgRGVwcmVjYXRpb246OmZ1bmN0aW9uVW5pdHMKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJGFuZ2xlLT5nZXRWYWx1ZSgpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNoZWNrUGVyY2VudChTYXNzTnVtYmVyICRudW1iZXIsIHN0cmluZyAkbmFtZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJG51bWJlci0+aGFzVW5pdCgnJScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIFdhcm46OmZvckRlcHJlY2F0aW9uKAogICAgICAgICAgICA8PDxUWFQKXCQkbmFtZTogUGFzc2luZyBhIG51bWJlciB3aXRob3V0IHVuaXQgJSAoJG51bWJlcikgaXMgZGVwcmVjYXRlZC4KClRvIHByZXNlcnZlIGN1cnJlbnQgYmVoYXZpb3I6IHskbnVtYmVyLT51bml0U3VnZ2VzdGlvbigkbmFtZSwgJyUnKX0KCk1vcmUgaW5mbzogaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2QvZnVuY3Rpb24tdW5pdHMKVFhULAogICAgICAgICAgICBEZXByZWNhdGlvbjo6ZnVuY3Rpb25Vbml0cwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRhcmd1bWVudE5hbWVzCiAgICAgKgogICAgICogQHJldHVybiBTYXNzU3RyaW5nfGxpc3Q8VmFsdWU+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlQ2hhbm5lbHMoc3RyaW5nICRuYW1lLCBhcnJheSAkYXJndW1lbnROYW1lcywgVmFsdWUgJGNoYW5uZWxzKTogU2Fzc1N0cmluZ3xhcnJheQogICAgewogICAgICAgIGlmICgkY2hhbm5lbHMtPmlzVmFyKCkpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZ1bmN0aW9uU3RyaW5nKCRuYW1lLCBbJGNoYW5uZWxzXSk7CiAgICAgICAgfQoKICAgICAgICAkb3JpZ2luYWxDaGFubmVscyA9ICRjaGFubmVsczsKICAgICAgICAkYWxwaGFGcm9tU2xhc2hMaXN0ID0gbnVsbDsKCiAgICAgICAgaWYgKCRjaGFubmVscy0+Z2V0U2VwYXJhdG9yKCkgPT09IExpc3RTZXBhcmF0b3I6OlNMQVNIKSB7CiAgICAgICAgICAgICRsaXN0ID0gJGNoYW5uZWxzLT5hc0xpc3QoKTsKCiAgICAgICAgICAgIGlmIChcY291bnQoJGxpc3QpICE9PSAyKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICdPbmx5IDIgc2xhc2gtc2VwYXJhdGVkIGVsZW1lbnRzIGFsbG93ZWQsIGJ1dCAlcyAlcyBwYXNzZWQuJywKICAgICAgICAgICAgICAgICAgICBcY291bnQoJGxpc3QpLAogICAgICAgICAgICAgICAgICAgIFN0cmluZ1V0aWw6OnBsdXJhbGl6ZSgnd2FzJywgXGNvdW50KCRsaXN0KSwgJ3dlcmUnKQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjaGFubmVscyA9ICRsaXN0WzBdOwogICAgICAgICAgICAkYWxwaGFGcm9tU2xhc2hMaXN0ID0gJGxpc3RbMV07CgogICAgICAgICAgICBpZiAoISRhbHBoYUZyb21TbGFzaExpc3QtPmlzU3BlY2lhbE51bWJlcigpKSB7CiAgICAgICAgICAgICAgICAkYWxwaGFGcm9tU2xhc2hMaXN0LT5hc3NlcnROdW1iZXIoJ2FscGhhJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbGlzdFswXS0+aXNWYXIoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZ1bmN0aW9uU3RyaW5nKCRuYW1lLCBbJG9yaWdpbmFsQ2hhbm5lbHNdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGlzQ29tbWFTZXBhcmF0ZWQgPSAkY2hhbm5lbHMtPmdldFNlcGFyYXRvcigpID09PSBMaXN0U2VwYXJhdG9yOjpDT01NQTsKICAgICAgICAkaXNCcmFja2V0ZWQgPSAkY2hhbm5lbHMtPmhhc0JyYWNrZXRzKCk7CgogICAgICAgIGlmICgkaXNDb21tYVNlcGFyYXRlZCB8fCAkaXNCcmFja2V0ZWQpIHsKICAgICAgICAgICAgJGJ1ZmZlciA9ICckY2hhbm5lbHMgbXVzdCBiZSc7CiAgICAgICAgICAgIGlmICgkaXNCcmFja2V0ZWQpIHsKICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJyBhbiB1bmJyYWNrZXRlZCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRpc0NvbW1hU2VwYXJhdGVkKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICRpc0JyYWNrZXRlZCA/ICcsJyA6ICcgYSc7CiAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICcgc3BhY2Utc2VwYXJhdGVkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGJ1ZmZlciAuPSAnIGxpc3QuJzsKCiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCRidWZmZXIpOwogICAgICAgIH0KCiAgICAgICAgJGxpc3QgPSAkY2hhbm5lbHMtPmFzTGlzdCgpOwoKICAgICAgICBpZiAoXGNvdW50KCRsaXN0KSA+PSAyICYmICRsaXN0WzBdIGluc3RhbmNlb2YgU2Fzc1N0cmluZyAmJiAhJGxpc3RbMF0tPmhhc1F1b3RlcygpICYmIFN0cmluZ1V0aWw6OmVxdWFsc0lnbm9yZUNhc2UoJGxpc3RbMF0tPmdldFRleHQoKSwgJ2Zyb20nKSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZnVuY3Rpb25TdHJpbmcoJG5hbWUsIFskb3JpZ2luYWxDaGFubmVsc10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxjb3VudCgkbGlzdCkgPiAzKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKHNwcmludGYoCiAgICAgICAgICAgICAgICAnT25seSAzIGVsZW1lbnRzIGFsbG93ZWQsIGJ1dCAlcyB3ZXJlIHBhc3NlZC4nLAogICAgICAgICAgICAgICAgXGNvdW50KCRsaXN0KQogICAgICAgICAgICApKTsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJGxpc3QpIDwgMykgewogICAgICAgICAgICBpZiAoSXRlcmFibGVVdGlsOjphbnkoJGxpc3QsIGZuIChWYWx1ZSAkdmFsdWUpID0+ICR2YWx1ZS0+aXNWYXIoKSkgfHwgKFxjb3VudCgkbGlzdCkgPiAwICYmIHNlbGY6OmlzVmFyU2xhc2goJGxpc3RbMF0pKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZ1bmN0aW9uU3RyaW5nKCRuYW1lLCBbJG9yaWdpbmFsQ2hhbm5lbHNdKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGFyZ3VtZW50ID0gJGFyZ3VtZW50TmFtZXNbXGNvdW50KCRsaXN0KV07CgogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiTWlzc2luZyBlbGVtZW50ICRhcmd1bWVudC4iKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYWxwaGFGcm9tU2xhc2hMaXN0ICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBbLi4uJGxpc3QsICRhbHBoYUZyb21TbGFzaExpc3RdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsaXN0WzJdIGluc3RhbmNlb2YgU2Fzc051bWJlciAmJiAkbGlzdFsyXS0+Z2V0QXNTbGFzaCgpICE9PSBudWxsKSB7CiAgICAgICAgICAgIFskY2hhbm5lbDMsICRhbHBoYV0gPSAkbGlzdFsyXS0+Z2V0QXNTbGFzaCgpOwoKICAgICAgICAgICAgcmV0dXJuIFskbGlzdFswXSwgJGxpc3RbMV0sICRjaGFubmVsMywgJGFscGhhXTsKICAgICAgICB9CgogICAgICAgIGlmICgkbGlzdFsyXSBpbnN0YW5jZW9mIFNhc3NTdHJpbmcgJiYgISRsaXN0WzJdLT5oYXNRdW90ZXMoKSAmJiBzdHJfY29udGFpbnMoJGxpc3RbMl0tPmdldFRleHQoKSwgJy8nKSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZnVuY3Rpb25TdHJpbmcoJG5hbWUsIFskY2hhbm5lbHNdKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGlzdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkdmFsdWUgaXMgYW4gdW5xdW90ZWQgc3RyaW5nIHRoYXQgc3RhcnQgd2l0aCBgdmFyKGAgYW5kCiAgICAgKiBjb250YWlucyBgL2AuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlzVmFyU2xhc2goVmFsdWUgJHZhbHVlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdmFsdWUgaW5zdGFuY2VvZiBTYXNzU3RyaW5nICYmICR2YWx1ZS0+aGFzUXVvdGVzKCkgJiYgU3RyaW5nVXRpbDo6c3RhcnRzV2l0aElnbm9yZUNhc2UoJHZhbHVlLT5nZXRUZXh0KCksICd2YXIoJykgJiYgc3RyX2NvbnRhaW5zKCR2YWx1ZS0+Z2V0VGV4dCgpLCAnLycpOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0cyB0aGF0ICRudW1iZXIgaXMgYSBwZXJjZW50YWdlIG9yIGhhcyBubyB1bml0cywgYW5kIG5vcm1hbGl6ZXMgdGhlCiAgICAgKiB2YWx1ZS4KICAgICAqCiAgICAgKiBJZiAkbnVtYmVyIGhhcyBubyB1bml0cywgaXRzIHZhbHVlIGlzIGNsYW1wZWQgdG8gYmUgZ3JlYXRlciB0aGFuIGAwYCBvcgogICAgICogbGVzcyB0aGFuICRtYXggYW5kIHJldHVybmVkLiBJZiAkbnVtYmVyIGlzIGEgcGVyY2VudGFnZSwgaXQncyBzY2FsZWQgdG8gYmUKICAgICAqIHdpdGhpbiBgMGAgYW5kICRtYXguIE90aGVyd2lzZSwgdGhpcyB0aHJvd3MgYSB7QHNlZSBTYXNzU2NyaXB0RXhjZXB0aW9ufS4KICAgICAqCiAgICAgKiAkbmFtZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBhcmd1bWVudCBpbiB0aGUgZXJyb3IgbWVzc2FnZS4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcGVyY2VudGFnZU9yVW5pdGxlc3MoU2Fzc051bWJlciAkbnVtYmVyLCBmbG9hdCAkbWF4LCBzdHJpbmcgJG5hbWUpOiBmbG9hdAogICAgewogICAgICAgIGlmICghJG51bWJlci0+aGFzVW5pdHMoKSkgewogICAgICAgICAgICAkdmFsdWUgPSAkbnVtYmVyLT5nZXRWYWx1ZSgpOwogICAgICAgIH0gZWxzZWlmICgkbnVtYmVyLT5oYXNVbml0KCclJykpIHsKICAgICAgICAgICAgJHZhbHVlID0gJG1heCAqICRudW1iZXItPmdldFZhbHVlKCkgLyAxMDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlwkJG5hbWU6IEV4cGVjdGVkICRudW1iZXIgdG8gaGF2ZSB1bml0IFwiJVwiIG9yIG5vIHVuaXRzLiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIE51bWJlclV0aWw6OmNsYW1wKCR2YWx1ZSwgMCwgJG1heCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbWl4Q29sb3JzKFNhc3NDb2xvciAkY29sb3IxLCBTYXNzQ29sb3IgJGNvbG9yMiwgU2Fzc051bWJlciAkd2VpZ2h0KTogU2Fzc0NvbG9yCiAgICB7CiAgICAgICAgc2VsZjo6Y2hlY2tQZXJjZW50KCR3ZWlnaHQsICd3ZWlnaHQnKTsKCiAgICAgICAgLy8gVGhpcyBhbGdvcml0aG0gZmFjdG9ycyBpbiBib3RoIHRoZSB1c2VyLXByb3ZpZGVkIHdlaWdodCAodykgYW5kIHRoZQogICAgICAgIC8vIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYWxwaGEgdmFsdWVzIG9mIHRoZSB0d28gY29sb3JzIChhKSB0byBkZWNpZGUgaG93CiAgICAgICAgLy8gdG8gcGVyZm9ybSB0aGUgd2VpZ2h0ZWQgYXZlcmFnZSBvZiB0aGUgdHdvIFJHQiB2YWx1ZXMuCiAgICAgICAgLy8KICAgICAgICAvLyBJdCB3b3JrcyBieSBmaXJzdCBub3JtYWxpemluZyBib3RoIHBhcmFtZXRlcnMgdG8gYmUgd2l0aGluIFstMSwgMV0sIHdoZXJlCiAgICAgICAgLy8gMSBpbmRpY2F0ZXMgIm9ubHkgdXNlIGNvbG9yMSIsIC0xIGluZGljYXRlcyAib25seSB1c2UgY29sb3IyIiwgYW5kIGFsbAogICAgICAgIC8vIHZhbHVlcyBpbiBiZXR3ZWVuIGluZGljYXRlZCBhIHByb3BvcnRpb25hdGVseSB3ZWlnaHRlZCBhdmVyYWdlLgogICAgICAgIC8vCiAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHRoZSBub3JtYWxpemVkIHZhcmlhYmxlcyB3IGFuZCBhLCB3ZSBhcHBseSB0aGUgZm9ybXVsYQogICAgICAgIC8vICh3ICsgYSkvKDEgKyB3KmEpIHRvIGdldCB0aGUgY29tYmluZWQgd2VpZ2h0IChpbiBbLTEsIDFdKSBvZiBjb2xvcjEuIFRoaXMKICAgICAgICAvLyBmb3JtdWxhIGhhcyB0d28gZXNwZWNpYWxseSBuaWNlIHByb3BlcnRpZXM6CiAgICAgICAgLy8KICAgICAgICAvLyAgICogV2hlbiBlaXRoZXIgdyBvciBhIGFyZSAtMSBvciAxLCB0aGUgY29tYmluZWQgd2VpZ2h0IGlzIGFsc28gdGhhdAogICAgICAgIC8vICAgICBudW1iZXIgKGNhc2VzIHdoZXJlIHcgKiBhID09IC0xIGFyZSB1bmRlZmluZWQsIGFuZCBoYW5kbGVkIGFzIGEKICAgICAgICAvLyAgICAgc3BlY2lhbCBjYXNlKS4KICAgICAgICAvLwogICAgICAgIC8vICAgKiBXaGVuIGEgaXMgMCwgdGhlIGNvbWJpbmVkIHdlaWdodCBpcyB3LCBhbmQgdmljZSB2ZXJzYS4KICAgICAgICAvLwogICAgICAgIC8vIEZpbmFsbHksIHRoZSB3ZWlnaHQgb2YgY29sb3IxIGlzIHJlbm9ybWFsaXplZCB0byBiZSB3aXRoaW4gWzAsIDFdIGFuZCB0aGUKICAgICAgICAvLyB3ZWlnaHQgb2YgY29sb3IyIGlzIGdpdmVuIGJ5IDEgbWludXMgdGhlIHdlaWdodCBvZiBjb2xvcjEuCgogICAgICAgICR3ZWlnaHRTY2FsZSA9ICR3ZWlnaHQtPnZhbHVlSW5SYW5nZSgwLCAxMDAsICd3ZWlnaHQnKSAvIDEwMDsKICAgICAgICAkbm9ybWFsaXplZFdlaWdodCA9ICR3ZWlnaHRTY2FsZSAqIDIgLSAxOwogICAgICAgICRhbHBoYURpc3RhbmNlID0gJGNvbG9yMS0+Z2V0QWxwaGEoKSAtICRjb2xvcjItPmdldEFscGhhKCk7CgogICAgICAgICRjb21iaW5lZFdlaWdodDEgPSAkbm9ybWFsaXplZFdlaWdodCAqICRhbHBoYURpc3RhbmNlID09IC0xCiAgICAgICAgICAgID8gJG5vcm1hbGl6ZWRXZWlnaHQKICAgICAgICAgICAgOiAoJG5vcm1hbGl6ZWRXZWlnaHQgKyAkYWxwaGFEaXN0YW5jZSkgLyAoMSArICRub3JtYWxpemVkV2VpZ2h0ICogJGFscGhhRGlzdGFuY2UpOwoKICAgICAgICAkd2VpZ2h0MSA9ICgkY29tYmluZWRXZWlnaHQxICsgMSkgLyAyOwogICAgICAgICR3ZWlnaHQyID0gMSAtICR3ZWlnaHQxOwoKICAgICAgICByZXR1cm4gU2Fzc0NvbG9yOjpyZ2IoCiAgICAgICAgICAgIE51bWJlclV0aWw6OmZ1enp5Um91bmQoJGNvbG9yMS0+Z2V0UmVkKCkgKiAkd2VpZ2h0MSArICRjb2xvcjItPmdldFJlZCgpICogJHdlaWdodDIpLAogICAgICAgICAgICBOdW1iZXJVdGlsOjpmdXp6eVJvdW5kKCRjb2xvcjEtPmdldEdyZWVuKCkgKiAkd2VpZ2h0MSArICRjb2xvcjItPmdldEdyZWVuKCkgKiAkd2VpZ2h0MiksCiAgICAgICAgICAgIE51bWJlclV0aWw6OmZ1enp5Um91bmQoJGNvbG9yMS0+Z2V0Qmx1ZSgpICogJHdlaWdodDEgKyAkY29sb3IyLT5nZXRCbHVlKCkgKiAkd2VpZ2h0MiksCiAgICAgICAgICAgICRjb2xvcjEtPmdldEFscGhhKCkgKiAkd2VpZ2h0U2NhbGUgKyAkY29sb3IyLT5nZXRBbHBoYSgpICogKDEgLSAgJHdlaWdodFNjYWxlKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9wYWNpZnkoYXJyYXkgJGFyZ3VtZW50cyk6IFNhc3NDb2xvcgogICAgewogICAgICAgICRjb2xvciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydENvbG9yKCdjb2xvcicpOwogICAgICAgICRhbW91bnQgPSAkYXJndW1lbnRzWzFdLT5hc3NlcnROdW1iZXIoJ2Ftb3VudCcpOwoKICAgICAgICByZXR1cm4gJGNvbG9yLT5jaGFuZ2VBbHBoYShOdW1iZXJVdGlsOjpjbGFtcCgkY29sb3ItPmdldEFscGhhKCkgKyAkYW1vdW50LT52YWx1ZUluUmFuZ2VXaXRoVW5pdCgwLCAxLCAnYW1vdW50JywgJycpLCAwLCAxKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRyYW5zcGFyZW50aXplKGFycmF5ICRhcmd1bWVudHMpOiBTYXNzQ29sb3IKICAgIHsKICAgICAgICAkY29sb3IgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRDb2xvcignY29sb3InKTsKICAgICAgICAkYW1vdW50ID0gJGFyZ3VtZW50c1sxXS0+YXNzZXJ0TnVtYmVyKCdhbW91bnQnKTsKCiAgICAgICAgcmV0dXJuICRjb2xvci0+Y2hhbmdlQWxwaGEoTnVtYmVyVXRpbDo6Y2xhbXAoJGNvbG9yLT5nZXRBbHBoYSgpIC0gJGFtb3VudC0+dmFsdWVJblJhbmdlV2l0aFVuaXQoMCwgMSwgJ2Ftb3VudCcsICcnKSwgMCwgMSkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/FunctionRegistry.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZ1bmN0aW9uOwoKdXNlIExlYWd1ZVxVcmlcVXJpOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFNhc3NDYWxsYWJsZVxCdWlsdEluQ2FsbGFibGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcVmFsdWU7CgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBGdW5jdGlvblJlZ2lzdHJ5CnsKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGFycmF5e292ZXJsb2FkczogYXJyYXk8c3RyaW5nLCBjYWxsYWJsZShsaXN0PFZhbHVlPik6IFZhbHVlPiwgdXJsPzogc3RyaW5nLCBjYW5vbmljYWxfbmFtZT86IHN0cmluZ30+CiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgQlVJTFRJTl9GVU5DVElPTlMgPSBbCiAgICAgICAgLy8gc2Fzczpjb2xvcgogICAgICAgICdyZWQnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRjb2xvcicgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ3JlZCddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InXSwKICAgICAgICAnZ3JlZW4nID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRjb2xvcicgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ2dyZWVuJ11dLCAndXJsJyA9PiAnc2Fzczpjb2xvciddLAogICAgICAgICdibHVlJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3InID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdibHVlJ11dLCAndXJsJyA9PiAnc2Fzczpjb2xvciddLAogICAgICAgICdtaXgnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRjb2xvcjEsICRjb2xvcjIsICR3ZWlnaHQ6IDUwJScgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ21peCddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InXSwKICAgICAgICAncmdiJyA9PiBbJ292ZXJsb2FkcycgPT4gWwogICAgICAgICAgICAnJHJlZCwgJGdyZWVuLCAkYmx1ZSwgJGFscGhhJyA9PiBbQ29sb3JGdW5jdGlvbnM6OmNsYXNzLCAncmdiJ10sCiAgICAgICAgICAgICckcmVkLCAkZ3JlZW4sICRibHVlJyA9PiBbQ29sb3JGdW5jdGlvbnM6OmNsYXNzLCAncmdiJ10sCiAgICAgICAgICAgICckY29sb3IsICRhbHBoYScgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ3JnYlR3b0FyZ3MnXSwKICAgICAgICAgICAgJyRjaGFubmVscycgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ3JnYk9uZUFyZ3MnXSwKICAgICAgICBdXSwKICAgICAgICAncmdiYScgPT4gWydvdmVybG9hZHMnID0+IFsKICAgICAgICAgICAgJyRyZWQsICRncmVlbiwgJGJsdWUsICRhbHBoYScgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ3JnYmEnXSwKICAgICAgICAgICAgJyRyZWQsICRncmVlbiwgJGJsdWUnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdyZ2JhJ10sCiAgICAgICAgICAgICckY29sb3IsICRhbHBoYScgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ3JnYmFUd29BcmdzJ10sCiAgICAgICAgICAgICckY2hhbm5lbHMnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdyZ2JhT25lQXJncyddLAogICAgICAgIF1dLAogICAgICAgICdpbnZlcnQnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRjb2xvciwgJHdlaWdodDogMTAwJScgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ2ludmVydCddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InXSwKICAgICAgICAnaHVlJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3InID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdodWUnXV0sICd1cmwnID0+ICdzYXNzOmNvbG9yJ10sCiAgICAgICAgJ3NhdHVyYXRpb24nID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRjb2xvcicgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ3NhdHVyYXRpb24nXV0sICd1cmwnID0+ICdzYXNzOmNvbG9yJ10sCiAgICAgICAgJ2xpZ2h0bmVzcycgPT4gWydvdmVybG9hZHMnID0+IFsnJGNvbG9yJyA9PiBbQ29sb3JGdW5jdGlvbnM6OmNsYXNzLCAnbGlnaHRuZXNzJ11dLCAndXJsJyA9PiAnc2Fzczpjb2xvciddLAogICAgICAgICdjb21wbGVtZW50JyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3InID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdjb21wbGVtZW50J11dLCAndXJsJyA9PiAnc2Fzczpjb2xvciddLAogICAgICAgICdoc2wnID0+IFsnb3ZlcmxvYWRzJyA9PiBbCiAgICAgICAgICAgICckaHVlLCAkc2F0dXJhdGlvbiwgJGxpZ2h0bmVzcywgJGFscGhhJyA9PiBbQ29sb3JGdW5jdGlvbnM6OmNsYXNzLCAnaHNsJ10sCiAgICAgICAgICAgICckaHVlLCAkc2F0dXJhdGlvbiwgJGxpZ2h0bmVzcycgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ2hzbCddLAogICAgICAgICAgICAnJGh1ZSwgJHNhdHVyYXRpb24nID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdoc2xUd29BcmdzJ10sCiAgICAgICAgICAgICckY2hhbm5lbHMnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdoc2xPbmVBcmdzJ10sCiAgICAgICAgXV0sCiAgICAgICAgJ2hzbGEnID0+IFsnb3ZlcmxvYWRzJyA9PiBbCiAgICAgICAgICAgICckaHVlLCAkc2F0dXJhdGlvbiwgJGxpZ2h0bmVzcywgJGFscGhhJyA9PiBbQ29sb3JGdW5jdGlvbnM6OmNsYXNzLCAnaHNsYSddLAogICAgICAgICAgICAnJGh1ZSwgJHNhdHVyYXRpb24sICRsaWdodG5lc3MnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdoc2xhJ10sCiAgICAgICAgICAgICckaHVlLCAkc2F0dXJhdGlvbicgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ2hzbGFUd29BcmdzJ10sCiAgICAgICAgICAgICckY2hhbm5lbHMnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdoc2xhT25lQXJncyddLAogICAgICAgIF1dLAogICAgICAgICdncmF5c2NhbGUnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRjb2xvcicgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ2dyYXlzY2FsZSddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InXSwKICAgICAgICAnYWRqdXN0LWh1ZScgPT4gWydvdmVybG9hZHMnID0+IFsnJGNvbG9yLCAkZGVncmVlcycgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ2FkanVzdEh1ZSddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InXSwKICAgICAgICAnbGlnaHRlbicgPT4gWydvdmVybG9hZHMnID0+IFsnJGNvbG9yLCAkYW1vdW50JyA9PiBbQ29sb3JGdW5jdGlvbnM6OmNsYXNzLCAnbGlnaHRlbiddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InXSwKICAgICAgICAnZGFya2VuJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3IsICRhbW91bnQnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdkYXJrZW4nXV0sICd1cmwnID0+ICdzYXNzOmNvbG9yJ10sCiAgICAgICAgJ3NhdHVyYXRlJyA9PiBbJ292ZXJsb2FkcycgPT4gWwogICAgICAgICAgICAnJGFtb3VudCcgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ3NhdHVyYXRlQ3NzJ10sCiAgICAgICAgICAgICckY29sb3IsICRhbW91bnQnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdzYXR1cmF0ZSddLAogICAgICAgIF1dLAogICAgICAgICdkZXNhdHVyYXRlJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3IsICRhbW91bnQnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdkZXNhdHVyYXRlJ11dLCAndXJsJyA9PiAnc2Fzczpjb2xvciddLAogICAgICAgICdvcGFjaWZ5JyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3IsICRhbW91bnQnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdvcGFjaWZ5J11dLCAndXJsJyA9PiAnc2Fzczpjb2xvciddLAogICAgICAgICdmYWRlLWluJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3IsICRhbW91bnQnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdvcGFjaWZ5J11dLCAndXJsJyA9PiAnc2Fzczpjb2xvciddLAogICAgICAgICd0cmFuc3BhcmVudGl6ZScgPT4gWydvdmVybG9hZHMnID0+IFsnJGNvbG9yLCAkYW1vdW50JyA9PiBbQ29sb3JGdW5jdGlvbnM6OmNsYXNzLCAndHJhbnNwYXJlbnRpemUnXV0sICd1cmwnID0+ICdzYXNzOmNvbG9yJ10sCiAgICAgICAgJ2ZhZGUtb3V0JyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3IsICRhbW91bnQnID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICd0cmFuc3BhcmVudGl6ZSddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InXSwKICAgICAgICAnYWxwaGEnID0+IFsnb3ZlcmxvYWRzJyA9PiBbCiAgICAgICAgICAgICckY29sb3InID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdhbHBoYSddLAogICAgICAgICAgICAnJGFyZ3MuLi4nID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdhbHBoYU1pY3Jvc29mdCddLAogICAgICAgIF1dLAogICAgICAgICdvcGFjaXR5JyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3InID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdvcGFjaXR5J11dLCAndXJsJyA9PiAnc2Fzczpjb2xvciddLAogICAgICAgICdpZS1oZXgtc3RyJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3InID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdpZUhleFN0ciddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InXSwKICAgICAgICAnYWRqdXN0LWNvbG9yJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3IsICRrd2FyZ3MuLi4nID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdhZGp1c3QnXV0sICd1cmwnID0+ICdzYXNzOmNvbG9yJywgJ2Nhbm9uaWNhbF9uYW1lJyA9PiAnYWRqdXN0J10sCiAgICAgICAgJ3NjYWxlLWNvbG9yJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckY29sb3IsICRrd2FyZ3MuLi4nID0+IFtDb2xvckZ1bmN0aW9uczo6Y2xhc3MsICdzY2FsZSddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InLCAnY2Fub25pY2FsX25hbWUnID0+ICdzY2FsZSddLAogICAgICAgICdjaGFuZ2UtY29sb3InID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRjb2xvciwgJGt3YXJncy4uLicgPT4gW0NvbG9yRnVuY3Rpb25zOjpjbGFzcywgJ2NoYW5nZSddXSwgJ3VybCcgPT4gJ3Nhc3M6Y29sb3InLCAnY2Fub25pY2FsX25hbWUnID0+ICdjaGFuZ2UnXSwKICAgICAgICAvLyBzYXNzOmxpc3QKICAgICAgICAnbGVuZ3RoJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbGlzdCcgPT4gW0xpc3RGdW5jdGlvbnM6OmNsYXNzLCAnbGVuZ3RoJ11dLCAndXJsJyA9PiAnc2FzczpsaXN0J10sCiAgICAgICAgJ250aCcgPT4gWydvdmVybG9hZHMnID0+IFsnJGxpc3QsICRuJyA9PiBbTGlzdEZ1bmN0aW9uczo6Y2xhc3MsICdudGgnXV0sICd1cmwnID0+ICdzYXNzOmxpc3QnXSwKICAgICAgICAnc2V0LW50aCcgPT4gWydvdmVybG9hZHMnID0+IFsnJGxpc3QsICRuLCAkdmFsdWUnID0+IFtMaXN0RnVuY3Rpb25zOjpjbGFzcywgJ3NldE50aCddXSwgJ3VybCcgPT4gJ3Nhc3M6bGlzdCddLAogICAgICAgICdqb2luJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbGlzdDEsICRsaXN0MiwgJHNlcGFyYXRvcjogYXV0bywgJGJyYWNrZXRlZDogYXV0bycgPT4gW0xpc3RGdW5jdGlvbnM6OmNsYXNzLCAnam9pbiddXSwgJ3VybCcgPT4gJ3Nhc3M6bGlzdCddLAogICAgICAgICdhcHBlbmQnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRsaXN0LCAkdmFsLCAkc2VwYXJhdG9yOiBhdXRvJyA9PiBbTGlzdEZ1bmN0aW9uczo6Y2xhc3MsICdhcHBlbmQnXV0sICd1cmwnID0+ICdzYXNzOmxpc3QnXSwKICAgICAgICAnemlwJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbGlzdHMuLi4nID0+IFtMaXN0RnVuY3Rpb25zOjpjbGFzcywgJ3ppcCddXSwgJ3VybCcgPT4gJ3Nhc3M6bGlzdCddLAogICAgICAgICdpbmRleCcgPT4gWydvdmVybG9hZHMnID0+IFsnJGxpc3QsICR2YWx1ZScgPT4gW0xpc3RGdW5jdGlvbnM6OmNsYXNzLCAnaW5kZXgnXV0sICd1cmwnID0+ICdzYXNzOmxpc3QnXSwKICAgICAgICAnaXMtYnJhY2tldGVkJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbGlzdCcgPT4gW0xpc3RGdW5jdGlvbnM6OmNsYXNzLCAnaXNCcmFja2V0ZWQnXV0sICd1cmwnID0+ICdzYXNzOmxpc3QnXSwKICAgICAgICAnbGlzdC1zZXBhcmF0b3InID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRsaXN0JyA9PiBbTGlzdEZ1bmN0aW9uczo6Y2xhc3MsICdzZXBhcmF0b3InXV0sICd1cmwnID0+ICdzYXNzOmxpc3QnLCAnY2Fub25pY2FsX25hbWUnID0+ICdzZXBhcmF0b3InXSwKICAgICAgICAvLyBzYXNzOm1hcAogICAgICAgICdtYXAtZ2V0JyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbWFwLCAka2V5LCAka2V5cy4uLicgPT4gW01hcEZ1bmN0aW9uczo6Y2xhc3MsICdnZXQnXV0sICd1cmwnID0+ICdzYXNzOm1hcCcsICdjYW5vbmljYWxfbmFtZScgPT4gJ2dldCddLAogICAgICAgICdtYXAtbWVyZ2UnID0+IFsnb3ZlcmxvYWRzJyA9PiBbCiAgICAgICAgICAgICckbWFwMSwgJG1hcDInID0+IFtNYXBGdW5jdGlvbnM6OmNsYXNzLCAnbWVyZ2VUd29BcmdzJ10sCiAgICAgICAgICAgICckbWFwMSwgJGFyZ3MuLi4nID0+IFtNYXBGdW5jdGlvbnM6OmNsYXNzLCAnbWVyZ2VWYXJpYWRpYyddLAogICAgICAgIF0sICdjYW5vbmljYWxfbmFtZScgPT4gJ21lcmdlJ10sCiAgICAgICAgJ21hcC1yZW1vdmUnID0+IFsnb3ZlcmxvYWRzJyA9PiBbCiAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIHNpZ25hdHVyZSBiZWxvdyBoYXMgYW4gZXhwbGljaXQgYCRrZXlgIGFyZ3VtZW50LCBpdCBkb2Vzbid0CiAgICAgICAgICAgIC8vIGFsbG93IHplcm8ga2V5cyB0byBiZSBwYXNzZWQuIFdlIHdhbnQgdG8gYWxsb3cgdGhhdCBjYXNlLCBzbyB3ZSBhZGQgYW4KICAgICAgICAgICAgLy8gZXhwbGljaXQgb3ZlcmxvYWQgZm9yIGl0LgogICAgICAgICAgICAnJG1hcCcgPT4gW01hcEZ1bmN0aW9uczo6Y2xhc3MsICdyZW1vdmVOb0tleXMnXSwKICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGFyZ3VtZW50IGhhcyBzcGVjaWFsIGhhbmRsaW5nIHNvIHRoYXQgdGhlICRrZXkgcGFyYW1ldGVyIGNhbiBiZQogICAgICAgICAgICAvLyBwYXNzZWQgYnkgbmFtZS4KICAgICAgICAgICAgJyRtYXAsICRrZXksICRrZXlzLi4uJyA9PiBbTWFwRnVuY3Rpb25zOjpjbGFzcywgJ3JlbW92ZSddLAogICAgICAgIF0sICdjYW5vbmljYWxfbmFtZScgPT4gJ3JlbW92ZSddLAogICAgICAgICdtYXAta2V5cycgPT4gWydvdmVybG9hZHMnID0+IFsnJG1hcCcgPT4gW01hcEZ1bmN0aW9uczo6Y2xhc3MsICdrZXlzJ11dLCAndXJsJyA9PiAnc2FzczptYXAnLCAnY2Fub25pY2FsX25hbWUnID0+ICdrZXlzJ10sCiAgICAgICAgJ21hcC12YWx1ZXMnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRtYXAnID0+IFtNYXBGdW5jdGlvbnM6OmNsYXNzLCAndmFsdWVzJ11dLCAndXJsJyA9PiAnc2FzczptYXAnLCAnY2Fub25pY2FsX25hbWUnID0+ICd2YWx1ZXMnXSwKICAgICAgICAnbWFwLWhhcy1rZXknID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRtYXAsICRrZXksICRrZXlzLi4uJyA9PiBbTWFwRnVuY3Rpb25zOjpjbGFzcywgJ2hhc0tleSddXSwgJ3VybCcgPT4gJ3Nhc3M6bWFwJywgJ2Nhbm9uaWNhbF9uYW1lJyA9PiAnaGFzLWtleSddLAogICAgICAgIC8vIHNhc3M6bWF0aAogICAgICAgICdhYnMnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRudW1iZXInID0+IFtNYXRoRnVuY3Rpb25zOjpjbGFzcywgJ2FicyddXSwgJ3VybCcgPT4gJ3Nhc3M6bWF0aCddLAogICAgICAgICdjZWlsJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbnVtYmVyJyA9PiBbTWF0aEZ1bmN0aW9uczo6Y2xhc3MsICdjZWlsJ11dLCAndXJsJyA9PiAnc2FzczptYXRoJ10sCiAgICAgICAgJ2Zsb29yJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbnVtYmVyJyA9PiBbTWF0aEZ1bmN0aW9uczo6Y2xhc3MsICdmbG9vciddXSwgJ3VybCcgPT4gJ3Nhc3M6bWF0aCddLAogICAgICAgICdtYXgnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRudW1iZXJzLi4uJyA9PiBbTWF0aEZ1bmN0aW9uczo6Y2xhc3MsICdtYXgnXV0sICd1cmwnID0+ICdzYXNzOm1hdGgnXSwKICAgICAgICAnbWluJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbnVtYmVycy4uLicgPT4gW01hdGhGdW5jdGlvbnM6OmNsYXNzLCAnbWluJ11dLCAndXJsJyA9PiAnc2FzczptYXRoJ10sCiAgICAgICAgJ3JhbmRvbScgPT4gWydvdmVybG9hZHMnID0+IFsnJGxpbWl0OiBudWxsJyA9PiBbTWF0aEZ1bmN0aW9uczo6Y2xhc3MsICdyYW5kb20nXV0sICd1cmwnID0+ICdzYXNzOm1hdGgnXSwKICAgICAgICAncGVyY2VudGFnZScgPT4gWydvdmVybG9hZHMnID0+IFsnJG51bWJlcicgPT4gW01hdGhGdW5jdGlvbnM6OmNsYXNzLCAncGVyY2VudGFnZSddXSwgJ3VybCcgPT4gJ3Nhc3M6bWF0aCddLAogICAgICAgICdyb3VuZCcgPT4gWydvdmVybG9hZHMnID0+IFsnJG51bWJlcicgPT4gW01hdGhGdW5jdGlvbnM6OmNsYXNzLCAncm91bmQnXV0sICd1cmwnID0+ICdzYXNzOm1hdGgnXSwKICAgICAgICAndW5pdCcgPT4gWydvdmVybG9hZHMnID0+IFsnJG51bWJlcicgPT4gW01hdGhGdW5jdGlvbnM6OmNsYXNzLCAndW5pdCddXSwgJ3VybCcgPT4gJ3Nhc3M6bWF0aCddLAogICAgICAgICdjb21wYXJhYmxlJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbnVtYmVyMSwgJG51bWJlcjInID0+IFtNYXRoRnVuY3Rpb25zOjpjbGFzcywgJ2NvbXBhdGlibGUnXV0sICd1cmwnID0+ICdzYXNzOm1hdGgnLCAnY2Fub25pY2FsX25hbWUnID0+ICdjb21wYXRpYmxlJ10sCiAgICAgICAgJ3VuaXRsZXNzJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckbnVtYmVyJyA9PiBbTWF0aEZ1bmN0aW9uczo6Y2xhc3MsICdpc1VuaXRsZXNzJ11dLCAndXJsJyA9PiAnc2FzczptYXRoJywgJ2Nhbm9uaWNhbF9uYW1lJyA9PiAnaXMtdW5pdGxlc3MnXSwKICAgICAgICAvLyBzYXNzOm1ldGEKICAgICAgICAnZmVhdHVyZS1leGlzdHMnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRmZWF0dXJlJyA9PiBbTWV0YUZ1bmN0aW9uczo6Y2xhc3MsICdmZWF0dXJlRXhpc3RzJ11dLCAndXJsJyA9PiAnc2FzczptZXRhJ10sCiAgICAgICAgJ2luc3BlY3QnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyR2YWx1ZScgPT4gW01ldGFGdW5jdGlvbnM6OmNsYXNzLCAnaW5zcGVjdCddXSwgJ3VybCcgPT4gJ3Nhc3M6bWV0YSddLAogICAgICAgICd0eXBlLW9mJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckdmFsdWUnID0+IFtNZXRhRnVuY3Rpb25zOjpjbGFzcywgJ3R5cGVvZiddXSwgJ3VybCcgPT4gJ3Nhc3M6bWV0YSddLAogICAgICAgICdrZXl3b3JkcycgPT4gWydvdmVybG9hZHMnID0+IFsnJGFyZ3MnID0+IFtNZXRhRnVuY3Rpb25zOjpjbGFzcywgJ2tleXdvcmRzJ11dLCAndXJsJyA9PiAnc2FzczptZXRhJ10sCiAgICAgICAgLy8gc2FzczpzZWxlY3RvcgogICAgICAgICdpcy1zdXBlcnNlbGVjdG9yJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckc3VwZXIsICRzdWInID0+IFtTZWxlY3RvckZ1bmN0aW9uczo6Y2xhc3MsICdpc1N1cGVyc2VsZWN0b3InXV0sICd1cmwnID0+ICdzYXNzOnNlbGVjdG9yJ10sCiAgICAgICAgJ3NpbXBsZS1zZWxlY3RvcnMnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzZWxlY3RvcicgPT4gW1NlbGVjdG9yRnVuY3Rpb25zOjpjbGFzcywgJ3NpbXBsZVNlbGVjdG9ycyddXSwgJ3VybCcgPT4gJ3Nhc3M6c2VsZWN0b3InXSwKICAgICAgICAnc2VsZWN0b3ItcGFyc2UnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzZWxlY3RvcicgPT4gW1NlbGVjdG9yRnVuY3Rpb25zOjpjbGFzcywgJ3BhcnNlJ11dLCAndXJsJyA9PiAnc2FzczpzZWxlY3RvcicsICdjYW5vbmljYWxfbmFtZScgPT4gJ3BhcnNlJ10sCiAgICAgICAgJ3NlbGVjdG9yLW5lc3QnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzZWxlY3RvcnMuLi4nID0+IFtTZWxlY3RvckZ1bmN0aW9uczo6Y2xhc3MsICduZXN0J11dLCAndXJsJyA9PiAnc2FzczpzZWxlY3RvcicsICdjYW5vbmljYWxfbmFtZScgPT4gJ25lc3QnXSwKICAgICAgICAnc2VsZWN0b3ItYXBwZW5kJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckc2VsZWN0b3JzLi4uJyA9PiBbU2VsZWN0b3JGdW5jdGlvbnM6OmNsYXNzLCAnYXBwZW5kJ11dLCAndXJsJyA9PiAnc2FzczpzZWxlY3RvcicsICdjYW5vbmljYWxfbmFtZScgPT4gJ2FwcGVuZCddLAogICAgICAgICdzZWxlY3Rvci1leHRlbmQnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzZWxlY3RvciwgJGV4dGVuZGVlLCAkZXh0ZW5kZXInID0+IFtTZWxlY3RvckZ1bmN0aW9uczo6Y2xhc3MsICdleHRlbmQnXV0sICd1cmwnID0+ICdzYXNzOnNlbGVjdG9yJywgJ2Nhbm9uaWNhbF9uYW1lJyA9PiAnZXh0ZW5kJ10sCiAgICAgICAgJ3NlbGVjdG9yLXJlcGxhY2UnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzZWxlY3RvciwgJG9yaWdpbmFsLCAkcmVwbGFjZW1lbnQnID0+IFtTZWxlY3RvckZ1bmN0aW9uczo6Y2xhc3MsICdyZXBsYWNlJ11dLCAndXJsJyA9PiAnc2FzczpzZWxlY3RvcicsICdjYW5vbmljYWxfbmFtZScgPT4gJ3JlcGxhY2UnXSwKICAgICAgICAnc2VsZWN0b3ItdW5pZnknID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzZWxlY3RvcjEsICRzZWxlY3RvcjInID0+IFtTZWxlY3RvckZ1bmN0aW9uczo6Y2xhc3MsICd1bmlmeSddXSwgJ3VybCcgPT4gJ3Nhc3M6c2VsZWN0b3InLCAnY2Fub25pY2FsX25hbWUnID0+ICd1bmlmeSddLAogICAgICAgIC8vIHNhc3M6c3RyaW5nCiAgICAgICAgJ3VucXVvdGUnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzdHJpbmcnID0+IFtTdHJpbmdGdW5jdGlvbnM6OmNsYXNzLCAndW5xdW90ZSddXSwgJ3VybCcgPT4gJ3Nhc3M6c3RyaW5nJ10sCiAgICAgICAgJ3F1b3RlJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckc3RyaW5nJyA9PiBbU3RyaW5nRnVuY3Rpb25zOjpjbGFzcywgJ3F1b3RlJ11dLCAndXJsJyA9PiAnc2FzczpzdHJpbmcnXSwKICAgICAgICAndG8tdXBwZXItY2FzZScgPT4gWydvdmVybG9hZHMnID0+IFsnJHN0cmluZycgPT4gW1N0cmluZ0Z1bmN0aW9uczo6Y2xhc3MsICd0b1VwcGVyQ2FzZSddXSwgJ3VybCcgPT4gJ3Nhc3M6c3RyaW5nJ10sCiAgICAgICAgJ3RvLWxvd2VyLWNhc2UnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzdHJpbmcnID0+IFtTdHJpbmdGdW5jdGlvbnM6OmNsYXNzLCAndG9Mb3dlckNhc2UnXV0sICd1cmwnID0+ICdzYXNzOnN0cmluZyddLAogICAgICAgICd1bmlxdWUtaWQnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJycgPT4gW1N0cmluZ0Z1bmN0aW9uczo6Y2xhc3MsICd1bmlxdWVJZCddXSwgJ3VybCcgPT4gJ3Nhc3M6c3RyaW5nJ10sCiAgICAgICAgJ3N0ci1sZW5ndGgnID0+IFsnb3ZlcmxvYWRzJyA9PiBbJyRzdHJpbmcnID0+IFtTdHJpbmdGdW5jdGlvbnM6OmNsYXNzLCAnbGVuZ3RoJ11dLCAndXJsJyA9PiAnc2FzczpzdHJpbmcnLCAnY2Fub25pY2FsX25hbWUnID0+ICdsZW5ndGgnXSwKICAgICAgICAnc3RyLWluc2VydCcgPT4gWydvdmVybG9hZHMnID0+IFsnJHN0cmluZywgJGluc2VydCwgJGluZGV4JyA9PiBbU3RyaW5nRnVuY3Rpb25zOjpjbGFzcywgJ2luc2VydCddXSwgJ3VybCcgPT4gJ3Nhc3M6c3RyaW5nJywgJ2Nhbm9uaWNhbF9uYW1lJyA9PiAnaW5zZXJ0J10sCiAgICAgICAgJ3N0ci1pbmRleCcgPT4gWydvdmVybG9hZHMnID0+IFsnJHN0cmluZywgJHN1YnN0cmluZycgPT4gW1N0cmluZ0Z1bmN0aW9uczo6Y2xhc3MsICdpbmRleCddXSwgJ3VybCcgPT4gJ3Nhc3M6c3RyaW5nJywgJ2Nhbm9uaWNhbF9uYW1lJyA9PiAnaW5kZXgnXSwKICAgICAgICAnc3RyLXNsaWNlJyA9PiBbJ292ZXJsb2FkcycgPT4gWyckc3RyaW5nLCAkc3RhcnQtYXQsICRlbmQtYXQ6IC0xJyA9PiBbU3RyaW5nRnVuY3Rpb25zOjpjbGFzcywgJ3NsaWNlJ11dLCAndXJsJyA9PiAnc2FzczpzdHJpbmcnLCAnY2Fub25pY2FsX25hbWUnID0+ICdzbGljZSddLAogICAgICAgIC8vIHNwZWNpYWwKICAgICAgICAvLyBUaGlzIGlzIG9ubHkgaW52b2tlZCB1c2luZyBgY2FsbCgpYC4gSGFuZC1hdXRob3JlZCBgaWYoKWBzIGFyZSBwYXJzZWQgYXMgSWZFeHByZXNzaW9uLgogICAgICAgICdpZicgPT4gWydvdmVybG9hZHMnID0+IFsnJGNvbmRpdGlvbiwgJGlmLXRydWUsICRpZi1mYWxzZScgPT4gW3NlbGY6OmNsYXNzLCAnaWYnXV1dLAogICAgXTsKCiAgICAvKioKICAgICAqIFNwZWNpYWwgbWV0YSBmdW5jdGlvbnMgZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUge0BzZWUgRXZhbHVhdGVWaXNpdG9yfSBjb25zdHJ1Y3RvcgogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFNQRUNJQUxfTUVUQV9HTE9CQUxfRlVOQ1RJT05TID0gWwogICAgICAgICdnbG9iYWwtdmFyaWFibGUtZXhpc3RzJywKICAgICAgICAndmFyaWFibGUtZXhpc3RzJywKICAgICAgICAnZnVuY3Rpb24tZXhpc3RzJywKICAgICAgICAnbWl4aW4tZXhpc3RzJywKICAgICAgICAnY29udGVudC1leGlzdHMnLAogICAgICAgICdnZXQtZnVuY3Rpb24nLAogICAgICAgICdnZXQtbWl4aW4nLAogICAgICAgICdjYWxsJywKICAgIF07CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoYXMoc3RyaW5nICRuYW1lKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBpc3NldChzZWxmOjpCVUlMVElOX0ZVTkNUSU9OU1skbmFtZV0pOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0KHN0cmluZyAkbmFtZSk6IEJ1aWx0SW5DYWxsYWJsZQogICAgewogICAgICAgIGlmICghaXNzZXQoc2VsZjo6QlVJTFRJTl9GVU5DVElPTlNbJG5hbWVdKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVGhlcmUgaXMgbm8gYnVpbHRpbiBmdW5jdGlvbiBuYW1lZCAkbmFtZS4iKTsKICAgICAgICB9CgogICAgICAgICR1cmwgPSBpc3NldChzZWxmOjpCVUlMVElOX0ZVTkNUSU9OU1skbmFtZV1bJ3VybCddKSA/IFVyaTo6bmV3KHNlbGY6OkJVSUxUSU5fRlVOQ1RJT05TWyRuYW1lXVsndXJsJ10pIDogbnVsbDsKCiAgICAgICAgJGNhbGxhYmxlID0gQnVpbHRJbkNhbGxhYmxlOjpvdmVybG9hZGVkRnVuY3Rpb24oc2VsZjo6QlVJTFRJTl9GVU5DVElPTlNbJG5hbWVdWydjYW5vbmljYWxfbmFtZSddID8/ICRuYW1lLCBzZWxmOjpCVUlMVElOX0ZVTkNUSU9OU1skbmFtZV1bJ292ZXJsb2FkcyddLCAkdXJsKTsKCiAgICAgICAgaWYgKGlzc2V0KHNlbGY6OkJVSUxUSU5fRlVOQ1RJT05TWyRuYW1lXVsnY2Fub25pY2FsX25hbWUnXSkpIHsKICAgICAgICAgICAgJGNhbGxhYmxlID0gJGNhbGxhYmxlLT53aXRoTmFtZSgkbmFtZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNhbGxhYmxlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNCdWlsdGluRnVuY3Rpb24oc3RyaW5nICRuYW1lKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBpc3NldChzZWxmOjpCVUlMVElOX0ZVTkNUSU9OU1skbmFtZV0pIHx8IFxpbl9hcnJheSgkbmFtZSwgc2VsZjo6U1BFQ0lBTF9NRVRBX0dMT0JBTF9GVU5DVElPTlMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpZihhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gJGFyZ3VtZW50c1swXS0+aXNUcnV0aHkoKSA/ICRhcmd1bWVudHNbMV0gOiAkYXJndW1lbnRzWzJdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/ListFunctions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZ1bmN0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEl0ZXJhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxMaXN0U2VwYXJhdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NCb29sZWFuOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdWxsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIExpc3RGdW5jdGlvbnMKewogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxlbmd0aChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gU2Fzc051bWJlcjo6Y3JlYXRlKFxjb3VudCgkYXJndW1lbnRzWzBdLT5hc0xpc3QoKSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBudGgoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGxpc3QgPSAkYXJndW1lbnRzWzBdOwogICAgICAgICRpbmRleCA9ICRhcmd1bWVudHNbMV07CgogICAgICAgIHJldHVybiAkbGlzdC0+YXNMaXN0KClbJGxpc3QtPnNhc3NJbmRleFRvTGlzdEluZGV4KCRpbmRleCwgJ24nKV07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldE50aChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkbGlzdCA9ICRhcmd1bWVudHNbMF07CiAgICAgICAgJGluZGV4ID0gJGFyZ3VtZW50c1sxXTsKICAgICAgICAkdmFsdWUgPSAkYXJndW1lbnRzWzJdOwoKICAgICAgICAkbmV3TGlzdCA9ICRsaXN0LT5hc0xpc3QoKTsKICAgICAgICAkbmV3TGlzdFskbGlzdC0+c2Fzc0luZGV4VG9MaXN0SW5kZXgoJGluZGV4LCAnbicpXSA9ICR2YWx1ZTsKICAgICAgICBcYXNzZXJ0KGFycmF5X2lzX2xpc3QoJG5ld0xpc3QpLCAnVGhlIG11dGF0aW9uIGlzIGd1YXJhbnRlZWQgdG8gYWZmZWN0IGFuIGV4aXN0aW5nIGluZGV4Jyk7CgogICAgICAgIHJldHVybiAkbGlzdC0+d2l0aExpc3RDb250ZW50cygkbmV3TGlzdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGpvaW4oYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGxpc3QxID0gJGFyZ3VtZW50c1swXTsKICAgICAgICAkbGlzdDIgPSAkYXJndW1lbnRzWzFdOwogICAgICAgICRzZXBhcmF0b3JQYXJhbSA9ICRhcmd1bWVudHNbMl0tPmFzc2VydFN0cmluZygnc2VwYXJhdG9yJyk7CiAgICAgICAgJGJyYWNrZXRlZFBhcmFtID0gJGFyZ3VtZW50c1szXTsKCiAgICAgICAgJHNlcGFyYXRvciA9IG1hdGNoICgkc2VwYXJhdG9yUGFyYW0tPmdldFRleHQoKSkgewogICAgICAgICAgICAnYXV0bycgPT4gc2VsZjo6Z2V0QXV0b0pvaW5TZXBhcmF0b3IoJGxpc3QxLT5nZXRTZXBhcmF0b3IoKSwgJGxpc3QyLT5nZXRTZXBhcmF0b3IoKSksCiAgICAgICAgICAgICdzcGFjZScgPT4gTGlzdFNlcGFyYXRvcjo6U1BBQ0UsCiAgICAgICAgICAgICdjb21tYScgPT4gTGlzdFNlcGFyYXRvcjo6Q09NTUEsCiAgICAgICAgICAgICdzbGFzaCcgPT4gTGlzdFNlcGFyYXRvcjo6U0xBU0gsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJyRzZXBhcmF0b3I6IE11c3QgYmUgInNwYWNlIiwgImNvbW1hIiwgInNsYXNoIiwgb3IgImF1dG8iLicpCiAgICAgICAgfTsKCiAgICAgICAgJGJyYWNrZXRlZCA9ICRicmFja2V0ZWRQYXJhbSBpbnN0YW5jZW9mIFNhc3NTdHJpbmcgJiYgJGJyYWNrZXRlZFBhcmFtLT5nZXRUZXh0KCkgPT09ICdhdXRvJyA/ICRsaXN0MS0+aGFzQnJhY2tldHMoKSA6ICRicmFja2V0ZWRQYXJhbS0+aXNUcnV0aHkoKTsKCiAgICAgICAgJG5ld0xpc3QgPSBbLi4uJGxpc3QxLT5hc0xpc3QoKSwgLi4uJGxpc3QyLT5hc0xpc3QoKV07CgogICAgICAgIHJldHVybiBuZXcgU2Fzc0xpc3QoJG5ld0xpc3QsICRzZXBhcmF0b3IsICRicmFja2V0ZWQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhcHBlbmQoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGxpc3QgPSAkYXJndW1lbnRzWzBdOwogICAgICAgICR2YWx1ZSA9ICRhcmd1bWVudHNbMV07CiAgICAgICAgJHNlcGFyYXRvclBhcmFtID0gJGFyZ3VtZW50c1syXS0+YXNzZXJ0U3RyaW5nKCdzZXBhcmF0b3InKTsKCiAgICAgICAgJHNlcGFyYXRvciA9IG1hdGNoICgkc2VwYXJhdG9yUGFyYW0tPmdldFRleHQoKSkgewogICAgICAgICAgICAnYXV0bycgPT4gJGxpc3QtPmdldFNlcGFyYXRvcigpID09PSBMaXN0U2VwYXJhdG9yOjpVTkRFQ0lERUQgPyBMaXN0U2VwYXJhdG9yOjpTUEFDRSA6ICRsaXN0LT5nZXRTZXBhcmF0b3IoKSwKICAgICAgICAgICAgJ3NwYWNlJyA9PiBMaXN0U2VwYXJhdG9yOjpTUEFDRSwKICAgICAgICAgICAgJ2NvbW1hJyA9PiBMaXN0U2VwYXJhdG9yOjpDT01NQSwKICAgICAgICAgICAgJ3NsYXNoJyA9PiBMaXN0U2VwYXJhdG9yOjpTTEFTSCwKICAgICAgICAgICAgZGVmYXVsdCA9PiB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignJHNlcGFyYXRvcjogTXVzdCBiZSAic3BhY2UiLCAiY29tbWEiLCAic2xhc2giLCBvciAiYXV0byIuJykKICAgICAgICB9OwoKICAgICAgICAkbmV3TGlzdCA9IFsuLi4kbGlzdC0+YXNMaXN0KCksICR2YWx1ZV07CgogICAgICAgIHJldHVybiAkbGlzdC0+d2l0aExpc3RDb250ZW50cygkbmV3TGlzdCwgJHNlcGFyYXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHppcChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkbGlzdHMgPSBhcnJheV9tYXAoZm4gKFZhbHVlICRsaXN0KSA9PiAkbGlzdC0+YXNMaXN0KCksICRhcmd1bWVudHNbMF0tPmFzTGlzdCgpKTsKCiAgICAgICAgaWYgKFxjb3VudCgkbGlzdHMpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBTYXNzTGlzdDo6Y3JlYXRlRW1wdHkoTGlzdFNlcGFyYXRvcjo6Q09NTUEpOwogICAgICAgIH0KCiAgICAgICAgJGkgPSAwOwogICAgICAgICRyZXN1bHRzID0gW107CgogICAgICAgIHdoaWxlIChJdGVyYWJsZVV0aWw6OmV2ZXJ5KCRsaXN0cywgZm4gKCRsaXN0KSA9PiAkaSAhPT0gXGNvdW50KCRsaXN0KSkpIHsKICAgICAgICAgICAgJHJlc3VsdHNbXSA9IG5ldyBTYXNzTGlzdChhcnJheV9tYXAoZm4gKCRsaXN0KSA9PiAkbGlzdFskaV0sICRsaXN0cyksIExpc3RTZXBhcmF0b3I6OlNQQUNFKTsKICAgICAgICAgICAgJGkrKzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgU2Fzc0xpc3QoJHJlc3VsdHMsIExpc3RTZXBhcmF0b3I6OkNPTU1BKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5kZXgoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGxpc3QgPSAkYXJndW1lbnRzWzBdLT5hc0xpc3QoKTsKICAgICAgICAkdmFsdWUgPSAkYXJndW1lbnRzWzFdOwoKICAgICAgICBmb3JlYWNoICgkbGlzdCBhcyAkaW5kZXggPT4gJGl0ZW0pIHsKICAgICAgICAgICAgaWYgKCRpdGVtLT5lcXVhbHMoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZSgkaW5kZXggKyAxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFNhc3NOdWxsOjpjcmVhdGUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2VwYXJhdG9yKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJGFyZ3VtZW50c1swXS0+Z2V0U2VwYXJhdG9yKCkpIHsKICAgICAgICAgICAgTGlzdFNlcGFyYXRvcjo6Q09NTUEgPT4gbmV3IFNhc3NTdHJpbmcoJ2NvbW1hJywgZmFsc2UpLAogICAgICAgICAgICBMaXN0U2VwYXJhdG9yOjpTTEFTSCA9PiBuZXcgU2Fzc1N0cmluZygnc2xhc2gnLCBmYWxzZSksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gbmV3IFNhc3NTdHJpbmcoJ3NwYWNlJywgZmFsc2UpLAogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQnJhY2tldGVkKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBTYXNzQm9vbGVhbjo6Y3JlYXRlKCRhcmd1bWVudHNbMF0tPmhhc0JyYWNrZXRzKCkpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEF1dG9Kb2luU2VwYXJhdG9yKExpc3RTZXBhcmF0b3IgJHNlcGFyYXRvcjEsIExpc3RTZXBhcmF0b3IgJHNlcGFyYXRvcjIpOiBMaXN0U2VwYXJhdG9yCiAgICB7CiAgICAgICAgaWYgKCRzZXBhcmF0b3IxID09PSBMaXN0U2VwYXJhdG9yOjpVTkRFQ0lERUQgJiYgJHNlcGFyYXRvcjIgPT09IExpc3RTZXBhcmF0b3I6OlVOREVDSURFRCkgewogICAgICAgICAgICByZXR1cm4gTGlzdFNlcGFyYXRvcjo6U1BBQ0U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNlcGFyYXRvcjEgPT09IExpc3RTZXBhcmF0b3I6OlVOREVDSURFRCkgewogICAgICAgICAgICByZXR1cm4gJHNlcGFyYXRvcjI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNlcGFyYXRvcjE7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/MapFunctions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZ1bmN0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb2xsZWN0aW9uXE1hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXExpc3RVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXExpc3RTZXBhcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0Jvb2xlYW47CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0xpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc01hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTnVsbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIE1hcEZ1bmN0aW9ucwp7CiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0KGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRtYXAgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRNYXAoJ21hcCcpOwogICAgICAgICRrZXlzID0gWyRhcmd1bWVudHNbMV0sIC4uLiRhcmd1bWVudHNbMl0tPmFzTGlzdCgpXTsKCiAgICAgICAgZm9yZWFjaCAoTGlzdFV0aWw6OmV4Y2VwdExhc3QoJGtleXMpIGFzICRrZXkpIHsKICAgICAgICAgICAgJHZhbHVlID0gJG1hcC0+Z2V0Q29udGVudHMoKS0+Z2V0KCRrZXkpOwoKICAgICAgICAgICAgaWYgKCEkdmFsdWUgaW5zdGFuY2VvZiBTYXNzTWFwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gU2Fzc051bGw6OmNyZWF0ZSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWFwID0gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtYXAtPmdldENvbnRlbnRzKCktPmdldChMaXN0VXRpbDo6bGFzdCgka2V5cykpID8/IFNhc3NOdWxsOjpjcmVhdGUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWVyZ2VUd29BcmdzKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRtYXAxID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0TWFwKCdtYXAxJyk7CiAgICAgICAgJG1hcDIgPSAkYXJndW1lbnRzWzFdLT5hc3NlcnRNYXAoJ21hcDInKTsKCiAgICAgICAgJHJlc3VsdCA9IE1hcDo6b2YoJG1hcDEtPmdldENvbnRlbnRzKCkpOwoKICAgICAgICBmb3JlYWNoICgkbWFwMi0+Z2V0Q29udGVudHMoKSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkcmVzdWx0LT5wdXQoJGtleSwgJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTYXNzTWFwOjpjcmVhdGUoJHJlc3VsdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1lcmdlVmFyaWFkaWMoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJG1hcDEgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRNYXAoJ21hcDEnKTsKICAgICAgICAkYXJncyA9ICRhcmd1bWVudHNbMV0tPmFzTGlzdCgpOwoKICAgICAgICBpZiAoJGFyZ3MgPT09IFtdKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdFeHBlY3RlZCAkYXJncyB0byBjb250YWluIGEga2V5LicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxjb3VudCgkYXJncykgPT09IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ0V4cGVjdGVkICRhcmdzIHRvIGNvbnRhaW4gYSBtYXAuJyk7CiAgICAgICAgfQoKICAgICAgICAka2V5cyA9IExpc3RVdGlsOjpleGNlcHRMYXN0KCRhcmdzKTsKICAgICAgICAkbWFwMiA9IExpc3RVdGlsOjpsYXN0KCRhcmdzKS0+YXNzZXJ0TWFwKCdtYXAyJyk7CgogICAgICAgIHJldHVybiBzZWxmOjptb2RpZnkoJG1hcDEsICRrZXlzLCBmdW5jdGlvbiAoVmFsdWUgJG9sZFZhbHVlKSB1c2UgKCRtYXAyKSB7CiAgICAgICAgICAgICRuZXN0ZWRNYXAgPSAkb2xkVmFsdWUtPnRyeU1hcCgpOwogICAgICAgICAgICBpZiAoJG5lc3RlZE1hcCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRtYXAyOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzdWx0ID0gTWFwOjpvZigkbmVzdGVkTWFwLT5nZXRDb250ZW50cygpKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRtYXAyLT5nZXRDb250ZW50cygpIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0LT5wdXQoJGtleSwgJHZhbHVlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZSgkcmVzdWx0KTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlTm9LZXlzKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiAkYXJndW1lbnRzWzBdLT5hc3NlcnRNYXAoJ21hcCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZW1vdmUoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJG1hcCA9ICRhcmd1bWVudHNbMF0tPmFzc2VydE1hcCgnbWFwJyk7CiAgICAgICAgJGtleXMgPSBbJGFyZ3VtZW50c1sxXSwgLi4uJGFyZ3VtZW50c1syXS0+YXNMaXN0KCldOwoKICAgICAgICAkbXV0YWJsZU1hcCA9IE1hcDo6b2YoJG1hcC0+Z2V0Q29udGVudHMoKSk7CgogICAgICAgIGZvcmVhY2ggKCRrZXlzIGFzICRrZXkpIHsKICAgICAgICAgICAgJG11dGFibGVNYXAtPnJlbW92ZSgka2V5KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTYXNzTWFwOjpjcmVhdGUoJG11dGFibGVNYXApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBrZXlzKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBuZXcgU2Fzc0xpc3QoJGFyZ3VtZW50c1swXS0+YXNzZXJ0TWFwKCdtYXAnKS0+Z2V0Q29udGVudHMoKS0+a2V5cygpLCBMaXN0U2VwYXJhdG9yOjpDT01NQSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbHVlcyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KCRhcmd1bWVudHNbMF0tPmFzc2VydE1hcCgnbWFwJyktPmdldENvbnRlbnRzKCktPnZhbHVlcygpLCBMaXN0U2VwYXJhdG9yOjpDT01NQSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhc0tleShhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkbWFwID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0TWFwKCdtYXAnKTsKICAgICAgICAka2V5cyA9IFskYXJndW1lbnRzWzFdLCAuLi4kYXJndW1lbnRzWzJdLT5hc0xpc3QoKV07CgogICAgICAgIGZvcmVhY2ggKExpc3RVdGlsOjpleGNlcHRMYXN0KCRrZXlzKSBhcyAka2V5KSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICRtYXAtPmdldENvbnRlbnRzKCktPmdldCgka2V5KTsKCiAgICAgICAgICAgIGlmICghJHZhbHVlIGluc3RhbmNlb2YgU2Fzc01hcCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoZmFsc2UpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWFwID0gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoJG1hcC0+Z2V0Q29udGVudHMoKS0+Y29udGFpbnNLZXkoTGlzdFV0aWw6Omxhc3QoJGtleXMpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBVcGRhdGVzIHRoZSBzcGVjaWZpZWQgdmFsdWUgaW4gJG1hcCBieSBhcHBseWluZyB0aGUgJG1vZGlmeSBjYWxsYmFjayB0bwogICAgICogaXQsIHRoZW4gcmV0dXJucyB0aGUgcmVzdWx0aW5nIG1hcC4KICAgICAqCiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIGtleSBpcyBwcm92aWRlZCwgdGhpcyBtZWFucyB0aGUgbWFwIHRhcmdldGVkIGZvciB1cGRhdGUgaXMKICAgICAqIG5lc3RlZCB3aXRoaW4gJG1hcC4gVGhlIG11bHRpcGxlICRrZXlzIGZvcm0gYSBwYXRoIG9mIG5lc3RlZCBtYXBzIHRoYXQKICAgICAqIGxlYWRzIHRvIHRoZSB0YXJnZXRlZCB2YWx1ZSwgd2hpY2ggaXMgcGFzc2VkIHRvICRtb2RpZnkuCiAgICAgKgogICAgICogSWYgYW55IHZhbHVlIGFsb25nIHRoZSBwYXRoIChvdGhlciB0aGFuIHRoZSBsYXN0IG9uZSkgaXMgbm90IGEgbWFwIGFuZAogICAgICogJGFkZE5lc3RpbmcgaXMgYHRydWVgLCB0aGlzIGNyZWF0ZXMgbmVzdGVkIG1hcHMgdG8gbWF0Y2ggJGtleXMgYW5kIHBhc3NlcwogICAgICoge0BzZWUgU2Fzc051bGx9IHRvICRtb2RpZnkuIE90aGVyd2lzZSwgdGhpcyBmYWlscyBhbmQgcmV0dXJucyAkbWFwIHdpdGggbm8KICAgICAqIGNoYW5nZXMuCiAgICAgKgogICAgICogSWYgbm8ga2V5cyBhcmUgcHJvdmlkZWQsIHRoaXMgcGFzc2VzICRtYXAgZGlyZWN0bHkgdG8gbW9kaWZ5IGFuZCByZXR1cm5zCiAgICAgKiB0aGUgcmVzdWx0LgogICAgICoKICAgICAqIEBwYXJhbSBWYWx1ZVtdICRrZXlzCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoVmFsdWUgJG9sZCk6IFZhbHVlICRtb2RpZnkKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkbW9kaWZ5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG1vZGlmeShTYXNzTWFwICRtYXAsIGFycmF5ICRrZXlzLCBjYWxsYWJsZSAkbW9kaWZ5LCBib29sICRhZGROZXN0aW5nID0gdHJ1ZSk6IFZhbHVlCiAgICB7CiAgICAgICAgJGl0ZXJhdG9yID0gbmV3IFxBcnJheUl0ZXJhdG9yKCRrZXlzKTsKCiAgICAgICAgJG1vZGlmeU5lc3RlZE1hcCA9IGZ1bmN0aW9uIChTYXNzTWFwICRtYXApIHVzZSAoJGl0ZXJhdG9yLCAkbW9kaWZ5LCAkYWRkTmVzdGluZywgJiRtb2RpZnlOZXN0ZWRNYXApOiBTYXNzTWFwIHsKICAgICAgICAgICAgJG11dGFibGVNYXAgPSBNYXA6Om9mKCRtYXAtPmdldENvbnRlbnRzKCkpOwogICAgICAgICAgICAka2V5ID0gJGl0ZXJhdG9yLT5jdXJyZW50KCk7CgogICAgICAgICAgICAkaXRlcmF0b3ItPm5leHQoKTsKICAgICAgICAgICAgaWYgKCEkaXRlcmF0b3ItPnZhbGlkKCkpIHsKICAgICAgICAgICAgICAgICRtdXRhYmxlTWFwLT5wdXQoJGtleSwgJG1vZGlmeSgkbXV0YWJsZU1hcC0+Z2V0KCRrZXkpID8/IFNhc3NOdWxsOjpjcmVhdGUoKSkpOwogICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZSgkbXV0YWJsZU1hcCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRuZXN0ZWRNYXAgPSAkbXV0YWJsZU1hcC0+Z2V0KCRrZXkpPy0+dHJ5TWFwKCk7CiAgICAgICAgICAgIGlmICgkbmVzdGVkTWFwID09PSBudWxsICYmICEkYWRkTmVzdGluZykgewogICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZSgkbXV0YWJsZU1hcCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRtdXRhYmxlTWFwLT5wdXQoJGtleSwgJG1vZGlmeU5lc3RlZE1hcCgkbmVzdGVkTWFwID8/IFNhc3NNYXA6OmNyZWF0ZUVtcHR5KCkpKTsKICAgICAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZSgkbXV0YWJsZU1hcCk7CiAgICAgICAgfTsKCiAgICAgICAgJGl0ZXJhdG9yLT5yZXdpbmQoKTsKCiAgICAgICAgcmV0dXJuICRpdGVyYXRvci0+dmFsaWQoKSA/ICRtb2RpZnlOZXN0ZWRNYXAoJG1hcCkgOiAkbW9kaWZ5KCRtYXApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/MathFunctions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZ1bmN0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxEZXByZWNhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQm9vbGVhbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTnVsbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTnVtYmVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NTdHJpbmc7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcVmFsdWU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcV2FybjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE1hdGhGdW5jdGlvbnMKewogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFicyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkbnVtYmVyID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0TnVtYmVyKCdudW1iZXInKTsKICAgICAgICAvLyBUT0RPIGltcGxlbWVudCB0aGUgZGVwcmVjYXRpb24gZm9yIHRoZSAlIHVuaXQgb25jZSBtb2R1bGVzIGFyZSBpbXBsZW1lbnRlZCB0byBwcm92aWRlZCB0aGUgcmVwbGFjZW1lbnQKCiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OndpdGhVbml0cyhhYnMoJG51bWJlci0+Z2V0VmFsdWUoKSksICRudW1iZXItPmdldE51bWVyYXRvclVuaXRzKCksICRudW1iZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNlaWwoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om51bWJlckZ1bmN0aW9uKCRhcmd1bWVudHMsIGNlaWwoLi4uKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZsb29yKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpudW1iZXJGdW5jdGlvbigkYXJndW1lbnRzLCBmbG9vciguLi4pKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWF4KGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRtYXggPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkYXJndW1lbnRzWzBdLT5hc0xpc3QoKSBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgJG51bWJlciA9ICR2YWx1ZS0+YXNzZXJ0TnVtYmVyKCk7CgogICAgICAgICAgICBpZiAoJG1heCA9PT0gbnVsbCB8fCAkbWF4LT5sZXNzVGhhbigkbnVtYmVyKS0+aXNUcnV0aHkoKSkgewogICAgICAgICAgICAgICAgJG1heCA9ICRudW1iZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkbWF4ICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbWF4OwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ0F0IGxlYXN0IG9uZSBhcmd1bWVudCBtdXN0IGJlIHBhc3NlZC4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWluKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRtaW4gPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkYXJndW1lbnRzWzBdLT5hc0xpc3QoKSBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgJG51bWJlciA9ICR2YWx1ZS0+YXNzZXJ0TnVtYmVyKCk7CgogICAgICAgICAgICBpZiAoJG1pbiA9PT0gbnVsbCB8fCAkbWluLT5ncmVhdGVyVGhhbigkbnVtYmVyKS0+aXNUcnV0aHkoKSkgewogICAgICAgICAgICAgICAgJG1pbiA9ICRudW1iZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkbWluICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbWluOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ0F0IGxlYXN0IG9uZSBhcmd1bWVudCBtdXN0IGJlIHBhc3NlZC4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcm91bmQoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om51bWJlckZ1bmN0aW9uKCRhcmd1bWVudHMsIHJvdW5kKC4uLikpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wYXRpYmxlKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRudW1iZXIxID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0TnVtYmVyKCdudW1iZXIxJyk7CiAgICAgICAgJG51bWJlcjIgPSAkYXJndW1lbnRzWzFdLT5hc3NlcnROdW1iZXIoJ251bWJlcjInKTsKCiAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoJG51bWJlcjEtPmlzQ29tcGFyYWJsZVRvKCRudW1iZXIyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVW5pdGxlc3MoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJG51bWJlciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydE51bWJlcignbnVtYmVyJyk7CgogICAgICAgIHJldHVybiBTYXNzQm9vbGVhbjo6Y3JlYXRlKCEkbnVtYmVyLT5oYXNVbml0cygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdW5pdChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkbnVtYmVyID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0TnVtYmVyKCdudW1iZXInKTsKCiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKCRudW1iZXItPmdldFVuaXRTdHJpbmcoKSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBlcmNlbnRhZ2UoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJG51bWJlciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydE51bWJlcignbnVtYmVyJyk7CiAgICAgICAgJG51bWJlci0+YXNzZXJ0Tm9Vbml0cygnbnVtYmVyJyk7CgogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjpjcmVhdGUoJG51bWJlci0+Z2V0VmFsdWUoKSAqIDEwMCwgJyUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmFuZG9tKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkYXJndW1lbnRzWzBdIGluc3RhbmNlb2YgU2Fzc051bGwpIHsKICAgICAgICAgICAgLy8gVE9ETyB1c2UgYSBiZXR0ZXIgYWxnb3JpdGhtIHRvIGdlbmVyYXRlIGEgcmFuZG9tIGZsb2F0LgogICAgICAgICAgICAkbWF4ID0gbXRfZ2V0cmFuZG1heCgpOwoKICAgICAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZShtdF9yYW5kKDAsICRtYXggLSAxKSAvICRtYXgpOwogICAgICAgIH0KCiAgICAgICAgJGxpbWl0ID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0TnVtYmVyKCdsaW1pdCcpOwoKICAgICAgICBpZiAoJGxpbWl0LT5oYXNVbml0cygpKSB7CiAgICAgICAgICAgICR1bml0U3RyaW5nID0gJGxpbWl0LT5nZXRVbml0U3RyaW5nKCk7CgogICAgICAgICAgICAvLyBUT0RPIHVwZGF0ZSB0aGUgbWVzc2FnZSB3aGVuIGltcGxlbWVudGluZyBtb2R1bGVzIGFuZCBkZXByZWNhdGluZyBkaXZpc2lvbi4KICAgICAgICAgICAgV2Fybjo6Zm9yRGVwcmVjYXRpb24oCiAgICAgICAgICAgICAgICA8PDxUWFQKICAgICAgICAgICAgICAgIHJhbmRvbSgpIHdpbGwgbm8gbG9uZ2VyIGlnbm9yZSBcJGxpbWl0IHVuaXRzICgkbGltaXQpIGluIGEgZnV0dXJlIHJlbGVhc2UuCgogICAgICAgICAgICAgICAgUmVjb21tZW5kYXRpb246IHJhbmRvbShcJGxpbWl0IC8gMSR1bml0U3RyaW5nKSAqIDEkdW5pdFN0cmluZwoKICAgICAgICAgICAgICAgIFRvIHByZXNlcnZlIGN1cnJlbnQgYmVoYXZpb3I6IHJhbmRvbShcJGxpbWl0IC8gMSR1bml0U3RyaW5nKQoKICAgICAgICAgICAgICAgIE1vcmUgaW5mbzogaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2QvZnVuY3Rpb24tdW5pdHMKICAgICAgICAgICAgICAgIFRYVCwKICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uOjpmdW5jdGlvblVuaXRzCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkbGltaXRTY2FsYXIgPSAkbGltaXQtPmFzc2VydEludCgnbGltaXQnKTsKICAgICAgICBpZiAoJGxpbWl0U2NhbGFyIDwgMSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiXCRsaW1pdDogTXVzdCBiZSBncmVhdGVyIHRoYW4gMCwgd2FzICRsaW1pdC4iKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjpjcmVhdGUobXRfcmFuZCgxLCAkbGltaXRTY2FsYXIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEltcGxlbWVudHMgYSBjYWxsYWJsZSB0aGF0IHRyYW5zZm9ybXMgYSBudW1iZXIncyB2YWx1ZQogICAgICogdXNpbmcgJHRyYW5zZm9ybSBhbmQgcHJlc2VydmVzIGl0cyB1bml0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICogQHBhcmFtIGNhbGxhYmxlKGZsb2F0KTogZmxvYXQgJHRyYW5zZm9ybQogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICR0cmFuc2Zvcm0KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbnVtYmVyRnVuY3Rpb24oYXJyYXkgJGFyZ3VtZW50cywgY2FsbGFibGUgJHRyYW5zZm9ybSk6IFZhbHVlCiAgICB7CiAgICAgICAgJG51bWJlciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydE51bWJlcignbnVtYmVyJyk7CgogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjp3aXRoVW5pdHMoJHRyYW5zZm9ybSgkbnVtYmVyLT5nZXRWYWx1ZSgpKSwgJG51bWJlci0+Z2V0TnVtZXJhdG9yVW5pdHMoKSwgJG51bWJlci0+Z2V0RGVub21pbmF0b3JVbml0cygpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/MetaFunctions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZ1bmN0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb2xsZWN0aW9uXE1hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxEZXByZWNhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQXJndW1lbnRMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NCb29sZWFuOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NDYWxjdWxhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQ29sb3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0Z1bmN0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NNYXA7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc01peGluOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdWxsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxXYXJuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTWV0YUZ1bmN0aW9ucwp7CiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmVhdHVyZUV4aXN0cyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICBXYXJuOjpmb3JEZXByZWNhdGlvbigiVGhlIGZlYXR1cmUtZXhpc3RzKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC5cblxuTW9yZSBpbmZvOiBodHRwczovL3Nhc3MtbGFuZy5jb20vZC9mZWF0dXJlLWV4aXN0cyIsIERlcHJlY2F0aW9uOjpmZWF0dXJlRXhpc3RzKTsKCiAgICAgICAgJGZlYXR1cmUgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTdHJpbmcoJ2ZlYXR1cmUnKTsKCiAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoXGluX2FycmF5KCRmZWF0dXJlLT5nZXRUZXh0KCksIFsnZ2xvYmFsLXZhcmlhYmxlLXNoYWRvd2luZycsICdleHRlbmQtc2VsZWN0b3ItcHNldWRvY2xhc3MnLCAndW5pdHMtbGV2ZWwtMycsICdhdC1lcnJvcicsICdjdXN0b20tcHJvcGVydHknXSwgdHJ1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnNwZWN0KGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBuZXcgU2Fzc1N0cmluZygoc3RyaW5nKSAkYXJndW1lbnRzWzBdLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHR5cGVvZihhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJndW1lbnRzWzBdOwoKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcobWF0Y2ggKHRydWUpIHsKICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgU2Fzc0FyZ3VtZW50TGlzdCA9PiAnYXJnbGlzdCcsCiAgICAgICAgICAgICR2YWx1ZSBpbnN0YW5jZW9mIFNhc3NCb29sZWFuID0+ICdib29sJywKICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgU2Fzc0NvbG9yID0+ICdjb2xvcicsCiAgICAgICAgICAgICR2YWx1ZSBpbnN0YW5jZW9mIFNhc3NMaXN0ID0+ICdsaXN0JywKICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgU2Fzc01hcCA9PiAnbWFwJywKICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgU2Fzc051bGwgPT4gJ251bGwnLAogICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBTYXNzTnVtYmVyID0+ICdudW1iZXInLAogICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBTYXNzRnVuY3Rpb24gPT4gJ2Z1bmN0aW9uJywKICAgICAgICAgICAgJHZhbHVlIGluc3RhbmNlb2YgU2Fzc01peGluID0+ICdtaXhpbicsCiAgICAgICAgICAgICR2YWx1ZSBpbnN0YW5jZW9mIFNhc3NDYWxjdWxhdGlvbiA9PiAnY2FsY3VsYXRpb24nLAogICAgICAgICAgICAkdmFsdWUgaW5zdGFuY2VvZiBTYXNzU3RyaW5nID0+ICdzdHJpbmcnLAogICAgICAgICAgICBkZWZhdWx0ID0+IHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJbQlVHXSBVbmtub3duIHZhbHVlIHR5cGUgJHZhbHVlIiksCiAgICAgICAgfSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBrZXl3b3JkcyhhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoJGFyZ3VtZW50c1swXSBpbnN0YW5jZW9mIFNhc3NBcmd1bWVudExpc3QpIHsKICAgICAgICAgICAgJG1hcCA9IG5ldyBNYXAoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ3VtZW50c1swXS0+Z2V0S2V5d29yZHMoKSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgJG1hcC0+cHV0KG5ldyBTYXNzU3RyaW5nKCRrZXksIGZhbHNlKSwgJHZhbHVlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZSgkbWFwKTsKICAgICAgICB9CgogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkYXJndW1lbnRzWzBdIGlzIG5vdCBhbiBhcmd1bWVudCBsaXN0LiIsICdhcmdzJyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/SelectorFunctions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZ1bmN0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tcGxleFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXENvbXBvdW5kU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBhcmVudFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3Rvckxpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNpbXBsZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxUeXBlU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFVuaXZlcnNhbFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV2YWx1YXRpb25cRXZhbHVhdGlvbkNvbnRleHQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NTY3JpcHRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXh0ZW5kXENvbmNyZXRlRXh0ZW5zaW9uU3RvcmU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxBcnJheVV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcTGlzdFNlcGFyYXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQm9vbGVhbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTGlzdDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTnVsbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzU3RyaW5nOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFZhbHVlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU2VsZWN0b3JGdW5jdGlvbnMKewogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5lc3QoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJHNlbGVjdG9ycyA9ICRhcmd1bWVudHNbMF0tPmFzTGlzdCgpOwoKICAgICAgICBpZiAoXGNvdW50KCRzZWxlY3RvcnMpID09PSAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCckc2VsZWN0b3JzOiBBdCBsZWFzdCBvbmUgc2VsZWN0b3IgbXVzdCBiZSBwYXNzZWQuJyk7CiAgICAgICAgfQoKICAgICAgICAkZmlyc3QgPSB0cnVlOwoKICAgICAgICByZXR1cm4gQXJyYXlVdGlsOjpyZWR1Y2UoYXJyYXlfbWFwKGZ1bmN0aW9uIChWYWx1ZSAkc2VsZWN0b3IpIHVzZSAoJiRmaXJzdCkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHNlbGVjdG9yLT5hc3NlcnRTZWxlY3RvcihhbGxvd1BhcmVudDogISRmaXJzdCk7CiAgICAgICAgICAgICRmaXJzdCA9IGZhbHNlOwoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfSwgJHNlbGVjdG9ycyksIGZuIChTZWxlY3Rvckxpc3QgJHBhcmVudCwgU2VsZWN0b3JMaXN0ICRjaGlsZCkgPT4gJGNoaWxkLT5uZXN0V2l0aGluKCRwYXJlbnQpKS0+YXNTYXNzTGlzdCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhcHBlbmQoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJHNlbGVjdG9ycyA9ICRhcmd1bWVudHNbMF0tPmFzTGlzdCgpOwoKICAgICAgICBpZiAoXGNvdW50KCRzZWxlY3RvcnMpID09PSAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCckc2VsZWN0b3JzOiBBdCBsZWFzdCBvbmUgc2VsZWN0b3IgbXVzdCBiZSBwYXNzZWQuJyk7CiAgICAgICAgfQoKICAgICAgICAkc3BhbiA9IEV2YWx1YXRpb25Db250ZXh0OjpnZXRDdXJyZW50KCktPmdldEN1cnJlbnRDYWxsYWJsZVNwYW4oKTsKCiAgICAgICAgcmV0dXJuIEFycmF5VXRpbDo6cmVkdWNlKGFycmF5X21hcChmbihWYWx1ZSAkc2VsZWN0b3IpID0+ICRzZWxlY3Rvci0+YXNzZXJ0U2VsZWN0b3IoKSwgJHNlbGVjdG9ycyksIGZ1bmN0aW9uIChTZWxlY3Rvckxpc3QgJHBhcmVudCwgU2VsZWN0b3JMaXN0ICRjaGlsZCkgdXNlICgkc3BhbikgewogICAgICAgICAgICByZXR1cm4gKG5ldyBTZWxlY3Rvckxpc3QoYXJyYXlfbWFwKGZ1bmN0aW9uIChDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpIHVzZSAoJHNwYW4sICRwYXJlbnQpIHsKICAgICAgICAgICAgICAgIGlmIChcY291bnQoJGNvbXBsZXgtPmdldExlYWRpbmdDb21iaW5hdG9ycygpKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiQ2FuJ3QgYXBwZW5kICRjb21wbGV4IHRvICRwYXJlbnQuIik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGNvbXBvbmVudCA9ICRjb21wbGV4LT5nZXRDb21wb25lbnRzKClbMF07CiAgICAgICAgICAgICAgICAkcmVzdCA9IGFycmF5X3NsaWNlKCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCksIDEpOwogICAgICAgICAgICAgICAgJG5ld0NvbXBvdW5kID0gc2VsZjo6cHJlcGVuZFBhcmVudCgkY29tcG9uZW50LT5nZXRTZWxlY3RvcigpKTsKCiAgICAgICAgICAgICAgICBpZiAoJG5ld0NvbXBvdW5kID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIkNhbid0IGFwcGVuZCAkY29tcGxleCB0byAkcGFyZW50LiIpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleFNlbGVjdG9yKFtdLCBbCiAgICAgICAgICAgICAgICAgICAgbmV3IENvbXBsZXhTZWxlY3RvckNvbXBvbmVudCgkbmV3Q29tcG91bmQsICRjb21wb25lbnQtPmdldENvbWJpbmF0b3JzKCksICRzcGFuKSwKICAgICAgICAgICAgICAgICAgICAuLi4kcmVzdCwKICAgICAgICAgICAgICAgIF0sICRzcGFuKTsKICAgICAgICAgICAgfSwgJGNoaWxkLT5nZXRDb21wb25lbnRzKCkpLCAkc3BhbikpLT5uZXN0V2l0aGluKCRwYXJlbnQpOwogICAgICAgIH0pLT5hc1Nhc3NMaXN0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV4dGVuZChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkc2VsZWN0b3IgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTZWxlY3Rvcignc2VsZWN0b3InKTsKICAgICAgICAkc2VsZWN0b3ItPmFzc2VydE5vdEJvZ3VzKCdzZWxlY3RvcicpOwogICAgICAgICR0YXJnZXQgPSAkYXJndW1lbnRzWzFdLT5hc3NlcnRTZWxlY3RvcignZXh0ZW5kZWUnKTsKICAgICAgICAkdGFyZ2V0LT5hc3NlcnROb3RCb2d1cygnZXh0ZW5kZWUnKTsKICAgICAgICAkc291cmNlID0gJGFyZ3VtZW50c1syXS0+YXNzZXJ0U2VsZWN0b3IoJ2V4dGVuZGVyJyk7CiAgICAgICAgJHNvdXJjZS0+YXNzZXJ0Tm90Qm9ndXMoJ2V4dGVuZGVyJyk7CgogICAgICAgIHJldHVybiBDb25jcmV0ZUV4dGVuc2lvblN0b3JlOjpleHRlbmQoJHNlbGVjdG9yLCAkc291cmNlLCAkdGFyZ2V0LCBFdmFsdWF0aW9uQ29udGV4dDo6Z2V0Q3VycmVudCgpLT5nZXRDdXJyZW50Q2FsbGFibGVTcGFuKCkpLT5hc1Nhc3NMaXN0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlcGxhY2UoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJHNlbGVjdG9yID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0U2VsZWN0b3IoJ3NlbGVjdG9yJyk7CiAgICAgICAgJHNlbGVjdG9yLT5hc3NlcnROb3RCb2d1cygnc2VsZWN0b3InKTsKICAgICAgICAkdGFyZ2V0ID0gJGFyZ3VtZW50c1sxXS0+YXNzZXJ0U2VsZWN0b3IoJ29yaWdpbmFsJyk7CiAgICAgICAgJHRhcmdldC0+YXNzZXJ0Tm90Qm9ndXMoJ29yaWdpbmFsJyk7CiAgICAgICAgJHNvdXJjZSA9ICRhcmd1bWVudHNbMl0tPmFzc2VydFNlbGVjdG9yKCdyZXBsYWNlbWVudCcpOwogICAgICAgICRzb3VyY2UtPmFzc2VydE5vdEJvZ3VzKCdyZXBsYWNlbWVudCcpOwoKICAgICAgICByZXR1cm4gQ29uY3JldGVFeHRlbnNpb25TdG9yZTo6cmVwbGFjZSgkc2VsZWN0b3IsICRzb3VyY2UsICR0YXJnZXQsIEV2YWx1YXRpb25Db250ZXh0OjpnZXRDdXJyZW50KCktPmdldEN1cnJlbnRDYWxsYWJsZVNwYW4oKSktPmFzU2Fzc0xpc3QoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdW5pZnkoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJHNlbGVjdG9yMSA9ICRhcmd1bWVudHNbMF0tPmFzc2VydFNlbGVjdG9yKCdzZWxlY3RvcjEnKTsKICAgICAgICAkc2VsZWN0b3IxLT5hc3NlcnROb3RCb2d1cygnc2VsZWN0b3IxJyk7CgogICAgICAgICRzZWxlY3RvcjIgPSAkYXJndW1lbnRzWzFdLT5hc3NlcnRTZWxlY3Rvcignc2VsZWN0b3IyJyk7CiAgICAgICAgJHNlbGVjdG9yMi0+YXNzZXJ0Tm90Qm9ndXMoJ3NlbGVjdG9yMicpOwoKICAgICAgICByZXR1cm4gJHNlbGVjdG9yMS0+dW5pZnkoJHNlbGVjdG9yMik/LT5hc1Nhc3NMaXN0KCkgPz8gU2Fzc051bGw6OmNyZWF0ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1N1cGVyc2VsZWN0b3IoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJHNlbGVjdG9yMSA9ICRhcmd1bWVudHNbMF0tPmFzc2VydFNlbGVjdG9yKCdzdXBlcicpOwogICAgICAgICRzZWxlY3RvcjEtPmFzc2VydE5vdEJvZ3VzKCdzdXBlcicpOwoKICAgICAgICAkc2VsZWN0b3IyID0gJGFyZ3VtZW50c1sxXS0+YXNzZXJ0U2VsZWN0b3IoJ3N1YicpOwogICAgICAgICRzZWxlY3RvcjItPmFzc2VydE5vdEJvZ3VzKCdzdWInKTsKCiAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoJHNlbGVjdG9yMS0+aXNTdXBlcnNlbGVjdG9yKCRzZWxlY3RvcjIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2ltcGxlU2VsZWN0b3JzKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRzZWxlY3RvciA9ICRhcmd1bWVudHNbMF0tPmFzc2VydENvbXBvdW5kU2VsZWN0b3IoJ3NlbGVjdG9yJyk7CgogICAgICAgIHJldHVybiBuZXcgU2Fzc0xpc3QoCiAgICAgICAgICAgIGFycmF5X21hcChmbiAoU2ltcGxlU2VsZWN0b3IgJHNpbXBsZSkgPT4gbmV3IFNhc3NTdHJpbmcoKHN0cmluZykgJHNpbXBsZSwgZmFsc2UpLCAkc2VsZWN0b3ItPmdldENvbXBvbmVudHMoKSksCiAgICAgICAgICAgIExpc3RTZXBhcmF0b3I6OkNPTU1BCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuICRhcmd1bWVudHNbMF0tPmFzc2VydFNlbGVjdG9yKCdzZWxlY3RvcicpLT5hc1Nhc3NMaXN0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIGEge0BzZWUgUGFyZW50U2VsZWN0b3J9IHRvIHRoZSBiZWdpbm5pbmcgb2YgJGNvbXBvdW5kLCBvciByZXR1cm5zIGBudWxsYCBpZgogICAgICogdGhhdCB3b3VsZG4ndCBwcm9kdWNlIGEgdmFsaWQgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHByZXBlbmRQYXJlbnQoQ29tcG91bmRTZWxlY3RvciAkY29tcG91bmQpOiA/Q29tcG91bmRTZWxlY3RvcgogICAgewogICAgICAgICRzcGFuID0gRXZhbHVhdGlvbkNvbnRleHQ6OmdldEN1cnJlbnQoKS0+Z2V0Q3VycmVudENhbGxhYmxlU3BhbigpOwoKICAgICAgICAkZmlyc3RDb21wb25lbnQgPSAkY29tcG91bmQtPmdldENvbXBvbmVudHMoKVswXTsKCiAgICAgICAgaWYgKCRmaXJzdENvbXBvbmVudCBpbnN0YW5jZW9mIFVuaXZlcnNhbFNlbGVjdG9yKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmaXJzdENvbXBvbmVudCBpbnN0YW5jZW9mIFR5cGVTZWxlY3RvciAmJiAkZmlyc3RDb21wb25lbnQtPmdldE5hbWUoKS0+Z2V0TmFtZXNwYWNlKCkgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZpcnN0Q29tcG9uZW50IGluc3RhbmNlb2YgVHlwZVNlbGVjdG9yKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcG91bmRTZWxlY3RvcihbCiAgICAgICAgICAgICAgICBuZXcgUGFyZW50U2VsZWN0b3IoJHNwYW4sICRmaXJzdENvbXBvbmVudC0+Z2V0TmFtZSgpLT5nZXROYW1lKCkpLAogICAgICAgICAgICAgICAgLi4uYXJyYXlfc2xpY2UoJGNvbXBvdW5kLT5nZXRDb21wb25lbnRzKCksIDEpLAogICAgICAgICAgICBdLCAkc3Bhbik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IENvbXBvdW5kU2VsZWN0b3IoWwogICAgICAgICAgICBuZXcgUGFyZW50U2VsZWN0b3IoJHNwYW4pLAogICAgICAgICAgICAuLi4kY29tcG91bmQtPmdldENvbXBvbmVudHMoKSwKICAgICAgICBdLCAkc3Bhbik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Function/StringFunctions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZ1bmN0aW9uOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFN0cmluZ1V0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc051bGw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc051bWJlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzU3RyaW5nOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFZhbHVlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU3RyaW5nRnVuY3Rpb25zCnsKICAgIHByaXZhdGUgc3RhdGljID9pbnQgJHByZXZpb3VzSWQgPSBudWxsOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1bnF1b3RlKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRzdHJpbmcgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTdHJpbmcoJ3N0cmluZycpOwoKICAgICAgICBpZiAoISRzdHJpbmctPmhhc1F1b3RlcygpKSB7CiAgICAgICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKCRzdHJpbmctPmdldFRleHQoKSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBxdW90ZShhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkc3RyaW5nID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0U3RyaW5nKCdzdHJpbmcnKTsKCiAgICAgICAgaWYgKCRzdHJpbmctPmhhc1F1b3RlcygpKSB7CiAgICAgICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKCRzdHJpbmctPmdldFRleHQoKSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxlbmd0aChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkc3RyaW5nID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0U3RyaW5nKCdzdHJpbmcnKTsKCiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZSgkc3RyaW5nLT5nZXRTYXNzTGVuZ3RoKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnNlcnQoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICRhcmd1bWVudHNbMF0tPmFzc2VydFN0cmluZygnc3RyaW5nJyk7CiAgICAgICAgJGluc2VydCA9ICRhcmd1bWVudHNbMV0tPmFzc2VydFN0cmluZygnaW5zZXJ0Jyk7CiAgICAgICAgJGluZGV4ID0gJGFyZ3VtZW50c1syXS0+YXNzZXJ0TnVtYmVyKCdpbmRleCcpOwogICAgICAgICRpbmRleC0+YXNzZXJ0Tm9Vbml0cygnaW5kZXgnKTsKCiAgICAgICAgJGluZGV4SW50ID0gJGluZGV4LT5hc3NlcnRJbnQoJ2luZGV4Jyk7CgogICAgICAgIC8vIHN0ci1pbnNlcnQgaGFzIHVudXN1YWwgYmVoYXZpb3IgZm9yIG5lZ2F0aXZlIGlucHV0cy4gSXQgZ3VhcmFudGVlcyB0aGF0CiAgICAgICAgLy8gdGhlIGAkaW5zZXJ0YCBzdHJpbmcgaXMgYXQgYCRpbmRleGAgaW4gdGhlIHJlc3VsdCwgd2hpY2ggbWVhbnMgdGhhdCB3ZQogICAgICAgIC8vIHdhbnQgdG8gaW5zZXJ0IGJlZm9yZSBgJGluZGV4YCBpZiBpdCdzIHBvc2l0aXZlIGFuZCBhZnRlciBpZiBpdCdzCiAgICAgICAgLy8gbmVnYXRpdmUuCiAgICAgICAgaWYgKCRpbmRleEludCA8IDApIHsKICAgICAgICAgICAgLy8gKzEgYmVjYXVzZSBuZWdhdGl2ZSBpbmRleGVzIHN0YXJ0IGNvdW50aW5nIGZyb20gLTEgcmF0aGVyIHRoYW4gMCwgYW5kCiAgICAgICAgICAgIC8vIGFub3RoZXIgKzEgYmVjYXVzZSB3ZSB3YW50IHRvIGluc2VydCAqYWZ0ZXIqIHRoYXQgaW5kZXguCiAgICAgICAgICAgICRpbmRleEludCA9IG1heCgkc3RyaW5nLT5nZXRTYXNzTGVuZ3RoKCkgKyAkaW5kZXhJbnQgKyAyLCAwKTsKICAgICAgICB9CgogICAgICAgICRjb2RlcG9pbnRJbmRleCA9IHNlbGY6OmNvZGVwb2ludEZvckluZGV4KCRpbmRleEludCwgJHN0cmluZy0+Z2V0U2Fzc0xlbmd0aCgpKTsKCiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKAogICAgICAgICAgICBtYl9zdWJzdHIoJHN0cmluZy0+Z2V0VGV4dCgpLCAwLCAkY29kZXBvaW50SW5kZXgpIC4gJGluc2VydC0+Z2V0VGV4dCgpIC4gbWJfc3Vic3RyKCRzdHJpbmctPmdldFRleHQoKSwgJGNvZGVwb2ludEluZGV4KSwKICAgICAgICAgICAgJHN0cmluZy0+aGFzUXVvdGVzKCkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbmRleChhcnJheSAkYXJndW1lbnRzKTogVmFsdWUKICAgIHsKICAgICAgICAkc3RyaW5nID0gJGFyZ3VtZW50c1swXS0+YXNzZXJ0U3RyaW5nKCdzdHJpbmcnKTsKICAgICAgICAkc3Vic3RyaW5nID0gJGFyZ3VtZW50c1sxXS0+YXNzZXJ0U3RyaW5nKCdzdWJzdHJpbmcnKTsKCiAgICAgICAgJGNvZGVwb2ludEluZGV4ID0gbWJfc3RycG9zKCRzdHJpbmctPmdldFRleHQoKSwgJHN1YnN0cmluZy0+Z2V0VGV4dCgpKTsKCiAgICAgICAgaWYgKCRjb2RlcG9pbnRJbmRleCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIFNhc3NOdWxsOjpjcmVhdGUoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjpjcmVhdGUoJGNvZGVwb2ludEluZGV4ICsgMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNsaWNlKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRzdHJpbmcgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTdHJpbmcoJ3N0cmluZycpOwogICAgICAgICRzdGFydCA9ICRhcmd1bWVudHNbMV0tPmFzc2VydE51bWJlcignc3RhcnQtYXQnKTsKICAgICAgICAkZW5kID0gJGFyZ3VtZW50c1syXS0+YXNzZXJ0TnVtYmVyKCdlbmQtYXQnKTsKICAgICAgICAkc3RhcnQtPmFzc2VydE5vVW5pdHMoJ3N0YXJ0LWF0Jyk7CiAgICAgICAgJGVuZC0+YXNzZXJ0Tm9Vbml0cygnZW5kLWF0Jyk7CgogICAgICAgICRsZW5ndGhJbkNvZGVwb2ludHMgPSAkc3RyaW5nLT5nZXRTYXNzTGVuZ3RoKCk7CgogICAgICAgIC8vIE5vIG1hdHRlciB3aGF0IHRoZSBzdGFydCBpbmRleCBpcywgYW4gZW5kIGluZGV4IG9mIDAgd2lsbCBwcm9kdWNlIGFuCiAgICAgICAgLy8gZW1wdHkgc3RyaW5nLgogICAgICAgICRlbmRJbnQgPSAkZW5kLT5hc3NlcnRJbnQoKTsKICAgICAgICBpZiAoJGVuZEludCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoJycsICRzdHJpbmctPmhhc1F1b3RlcygpKTsKICAgICAgICB9CgogICAgICAgICRzdGFydENvZGVwb2ludCA9IHNlbGY6OmNvZGVwb2ludEZvckluZGV4KCRzdGFydC0+YXNzZXJ0SW50KCksICRsZW5ndGhJbkNvZGVwb2ludHMpOwogICAgICAgICRlbmRDb2RlcG9pbnQgPSBzZWxmOjpjb2RlcG9pbnRGb3JJbmRleCgkZW5kSW50LCAkbGVuZ3RoSW5Db2RlcG9pbnRzLCB0cnVlKTsKCiAgICAgICAgaWYgKCRlbmRDb2RlcG9pbnQgPT09ICRsZW5ndGhJbkNvZGVwb2ludHMpIHsKICAgICAgICAgICAgJGVuZENvZGVwb2ludC0tOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRlbmRDb2RlcG9pbnQgPCAkc3RhcnRDb2RlcG9pbnQpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKCcnLCAkc3RyaW5nLT5oYXNRdW90ZXMoKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoCiAgICAgICAgICAgIG1iX3N1YnN0cigkc3RyaW5nLT5nZXRUZXh0KCksICRzdGFydENvZGVwb2ludCwgJGVuZENvZGVwb2ludCArIDEgLSAkc3RhcnRDb2RlcG9pbnQpLAogICAgICAgICAgICAkc3RyaW5nLT5oYXNRdW90ZXMoKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvVXBwZXJDYXNlKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRzdHJpbmcgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTdHJpbmcoJ3N0cmluZycpOwoKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoU3RyaW5nVXRpbDo6dG9Bc2NpaVVwcGVyQ2FzZSgkc3RyaW5nLT5nZXRUZXh0KCkpLCAkc3RyaW5nLT5oYXNRdW90ZXMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvTG93ZXJDYXNlKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRzdHJpbmcgPSAkYXJndW1lbnRzWzBdLT5hc3NlcnRTdHJpbmcoJ3N0cmluZycpOwoKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoU3RyaW5nVXRpbDo6dG9Bc2NpaUxvd2VyQ2FzZSgkc3RyaW5nLT5nZXRUZXh0KCkpLCAkc3RyaW5nLT5oYXNRdW90ZXMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxWYWx1ZT4gJGFyZ3VtZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVuaXF1ZUlkKGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgIGlmIChzZWxmOjokcHJldmlvdXNJZCA9PT0gbnVsbCkgewogICAgICAgICAgICBzZWxmOjokcHJldmlvdXNJZCA9IHJhbmRvbV9pbnQoMCwgMzYgKiogNik7CiAgICAgICAgfQoKICAgICAgICAvLyBNYWtlIGl0IGRpZmZpY3VsdCB0byBndWVzcyB0aGUgbmV4dCBJRCBieSByYW5kb21pemluZyB0aGUgaW5jcmVhc2UuCiAgICAgICAgc2VsZjo6JHByZXZpb3VzSWQgKz0gcmFuZG9tX2ludCgwLCAzNikgKyAxOwoKICAgICAgICBpZiAoc2VsZjo6JHByZXZpb3VzSWQgPiAzNiAqKiA2KSB7CiAgICAgICAgICAgIHNlbGY6OiRwcmV2aW91c0lkICU9IDM2ICoqIDY7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgbGVhZGluZyAidSIgZW5zdXJlcyB0aGF0IHRoZSByZXN1bHQgaXMgYSB2YWxpZCBpZGVudGlmaWVyLgogICAgICAgIHJldHVybiBuZXcgU2Fzc1N0cmluZygndScgLiBzdHJfcGFkKGJhc2VfY29udmVydCgoc3RyaW5nKSBzZWxmOjokcHJldmlvdXNJZCwgMTAsIDM2KSwgNiwgJzAnLCBTVFJfUEFEX0xFRlQpLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIFNhc3Mgc3RyaW5nIGluZGV4IGludG8gYSBjb2RlcG9pbnQgaW5kZXggaW50byBhIHN0cmluZyB3aGljaAogICAgICogaGFzIGxlbmd0aCAkbGVuZ3RoSW5Db2RlcG9pbnRzIG1lYXN1cmVkIGluIGNvZGVwb2ludHMgKHdpdGggYG1iX3N0cmxlbmApLgogICAgICoKICAgICAqIEEgU2FzcyBzdHJpbmcgaW5kZXggaXMgb25lLWJhc2VkLCBhbmQgdXNlcyBuZWdhdGl2ZSBudW1iZXJzIHRvIGNvdW50CiAgICAgKiBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCiAgICAgKgogICAgICogSWYgJGluZGV4IGlzIG5lZ2F0aXZlIGFuZCBpdCBwb2ludHMgYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YKICAgICAqICRsZW5ndGhJbkNvZGVwb2ludHMsIHRoaXMgd2lsbCByZXR1cm4gYDBgIGlmICRhbGxvd05lZ2F0aXZlIGlzIGBmYWxzZWAgYW5kCiAgICAgKiB0aGUgaW5kZXggaWYgaXQncyBgdHJ1ZWAuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvZGVwb2ludEZvckluZGV4KGludCAkaW5kZXgsIGludCAkbGVuZ3RoSW5Db2RlcG9pbnRzLCBib29sICRhbGxvd05lZ2F0aXZlID0gZmFsc2UpOiBpbnQKICAgIHsKICAgICAgICBpZiAoJGluZGV4ID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpbmRleCA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIG1pbigkaW5kZXggLSAxLCAkbGVuZ3RoSW5Db2RlcG9pbnRzKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSAkbGVuZ3RoSW5Db2RlcG9pbnRzICsgJGluZGV4OwoKICAgICAgICBpZiAoJHJlc3VsdCA8IDAgJiYgISRhbGxvd05lZ2F0aXZlKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/CanonicalizeContext.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIENhbm9uaWNhbGl6ZUNvbnRleHQKewogICAgcHJpdmF0ZSByZWFkb25seSA/VXJpSW50ZXJmYWNlICRjb250YWluaW5nVXJsOwogICAgcHJpdmF0ZSBib29sICRmcm9tSW1wb3J0OwogICAgcHJpdmF0ZSBib29sICRjb250YWluaW5nVXJsQWNjZXNzZWQgPSBmYWxzZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoP1VyaUludGVyZmFjZSAkY29udGFpbmluZ1VybCwgYm9vbCAkZnJvbUltcG9ydCkKICAgIHsKICAgICAgICAkdGhpcy0+Y29udGFpbmluZ1VybCA9ICRjb250YWluaW5nVXJsOwogICAgICAgICR0aGlzLT5mcm9tSW1wb3J0ID0gJGZyb21JbXBvcnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBTYXNzIGNvbXBpbGVyIGlzIGN1cnJlbnRseSBldmFsdWF0aW5nIGFuIGBAaW1wb3J0YCBydWxlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNGcm9tSW1wb3J0KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21JbXBvcnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiBUICRjYWxsYmFjawogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNhbGxiYWNrCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoRnJvbUltcG9ydChib29sICRmcm9tSW1wb3J0LCBjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgJG9sZEZyb21JbXBvcnQgPSAkdGhpcy0+ZnJvbUltcG9ydDsKICAgICAgICAkdGhpcy0+ZnJvbUltcG9ydCA9ICRmcm9tSW1wb3J0OwoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCk7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgJHRoaXMtPmZyb21JbXBvcnQgPSAkb2xkRnJvbUltcG9ydDsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRhaW5pbmdVcmwoKTogP1VyaUludGVyZmFjZQogICAgewogICAgICAgICR0aGlzLT5jb250YWluaW5nVXJsQWNjZXNzZWQgPSB0cnVlOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRhaW5pbmdVcmw7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHtAc2VlIGdldENvbnRhaW5pbmdVcmx9IGhhcyBiZWVuIGFjY2Vzc2VkLgogICAgICoKICAgICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBjYW5vbmljYWxpemUgcmVzdWx0IGlzIGNhY2hlYWJsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdhc0NvbnRhaW5pbmdVcmxBY2Nlc3NlZCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb250YWluaW5nVXJsQWNjZXNzZWQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/CanonicalizeResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIENhbm9uaWNhbGl6ZVJlc3VsdAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgcHVibGljIHJlYWRvbmx5IEltcG9ydGVyICRpbXBvcnRlciwKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgVXJpSW50ZXJmYWNlICRjYW5vbmljYWxVcmwsCiAgICAgICAgcHVibGljIHJlYWRvbmx5IFVyaUludGVyZmFjZSAkb3JpZ2luYWxVcmwsCiAgICApIHsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/FilesystemImporter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTeW50YXg7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxQYXRoOwoKLyoqCiAqIEFuIGltcG9ydGVyIHRoYXQgbG9hZHMgZmlsZXMgZnJvbSBhIGxvYWQgcGF0aCBvbiB0aGUgZmlsZXN5c3RlbS4KICovCmZpbmFsIGNsYXNzIEZpbGVzeXN0ZW1JbXBvcnRlciBleHRlbmRzIEltcG9ydGVyCnsKICAgIC8qKgogICAgICogVGhlIHBhdGggcmVsYXRpdmUgdG8gd2hpY2ggdGhpcyBpbXBvcnRlciBsb29rcyBmb3IgZmlsZXMuCiAgICAgKgogICAgICogSWYgdGhpcyBpcyBgbnVsbGAsIHRoaXMgaW1wb3J0ZXIgd2lsbCBfb25seV8gbG9hZCBhYnNvbHV0ZSBgZmlsZTpgIFVSTHMKICAgICAqIGFuZCBVUkxzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGZpbGUuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgP3N0cmluZyAkbG9hZFBhdGg7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KD9zdHJpbmcgJGxvYWRQYXRoKQogICAgewogICAgICAgICR0aGlzLT5sb2FkUGF0aCA9ICRsb2FkUGF0aCAhPT0gbnVsbCA/IFBhdGg6OmFic29sdXRlKCRsb2FkUGF0aCkgOiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjYW5vbmljYWxpemUoVXJpSW50ZXJmYWNlICR1cmwpOiA/VXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCR1cmwtPmdldFNjaGVtZSgpID09PSAnZmlsZScpIHsKICAgICAgICAgICAgJHJlc29sdmVkID0gSW1wb3J0VXRpbDo6cmVzb2x2ZUltcG9ydFBhdGgoUGF0aDo6ZnJvbVVyaSgkdXJsKSk7CiAgICAgICAgfSBlbHNlaWYgKCR1cmwtPmdldFNjaGVtZSgpICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+bG9hZFBhdGggIT09IG51bGwpIHsKICAgICAgICAgICAgJHJlc29sdmVkID0gSW1wb3J0VXRpbDo6cmVzb2x2ZUltcG9ydFBhdGgoUGF0aDo6am9pbigkdGhpcy0+bG9hZFBhdGgsIFBhdGg6OmZyb21VcmkoJHVybCkpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICgkcmVzb2x2ZWQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUGF0aDo6dG9VcmkoUGF0aDo6Y2Fub25pY2FsaXplKCRyZXNvbHZlZCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkKFVyaUludGVyZmFjZSAkdXJsKTogP0ltcG9ydGVyUmVzdWx0CiAgICB7CiAgICAgICAgJHBhdGggPSBQYXRoOjpmcm9tVXJpKCR1cmwpOwogICAgICAgICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHBhdGgpOwoKICAgICAgICBpZiAoJGNvbnRlbnQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCJDb3VsZCBub3QgcmVhZCBmaWxlICRwYXRoIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEltcG9ydGVyUmVzdWx0KCRjb250ZW50LCBTeW50YXg6OmZvclBhdGgoJHBhdGgpLCAkdXJsKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bGRDYW5vbmljYWxpemUoVXJpSW50ZXJmYWNlICR1cmwsIFVyaUludGVyZmFjZSAkY2Fub25pY2FsVXJsKTogYm9vbAogICAgewogICAgICAgIGlmICgkdXJsLT5nZXRTY2hlbWUoKSAhPT0gJ2ZpbGUnICYmICR1cmwtPmdldFNjaGVtZSgpICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkY2Fub25pY2FsVXJsLT5nZXRTY2hlbWUoKSAhPT0gJ2ZpbGUnKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRiYXNlbmFtZSA9IGJhc2VuYW1lKChzdHJpbmcpICR1cmwpOwogICAgICAgICRjYW5vbmljYWxCYXNlbmFtZSA9IGJhc2VuYW1lKChzdHJpbmcpICRjYW5vbmljYWxVcmwpOwoKICAgICAgICBpZiAoIXN0cl9zdGFydHNfd2l0aCgkYmFzZW5hbWUsICdfJykgJiYgc3RyX3N0YXJ0c193aXRoKCRjYW5vbmljYWxCYXNlbmFtZSwgJ18nKSkgewogICAgICAgICAgICAkY2Fub25pY2FsQmFzZW5hbWUgPSBzdWJzdHIoJGNhbm9uaWNhbEJhc2VuYW1lLCAxKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYmFzZW5hbWUgPT09ICRjYW5vbmljYWxCYXNlbmFtZSB8fCAkYmFzZW5hbWUgPT09IFBhdGg6OndpdGhvdXRFeHRlbnNpb24oJGNhbm9uaWNhbEJhc2VuYW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxvYWRQYXRoID8/ICc8YWJzb2x1dGUgZmlsZSBpbXBvcnRlcj4nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/ImportCache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcU3R5bGVzaGVldDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxRdWlldExvZ2dlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFVyaVV0aWw7CgovKioKICogQW4gaW4tbWVtb3J5IGNhY2hlIG9mIHBhcnNlZCBzdHlsZXNoZWV0cyB0aGF0IGhhdmUgYmVlbiBpbXBvcnRlZCBieSBTYXNzLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEltcG9ydENhY2hlCnsKICAgIC8qKgogICAgICogQHZhciBsaXN0PEltcG9ydGVyPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRpbXBvcnRlcnM7CgogICAgcHJpdmF0ZSByZWFkb25seSBMb2dnZXJJbnRlcmZhY2UgJGxvZ2dlcjsKCiAgICAvKioKICAgICAqIFRoZSBjYW5vbmljYWxpemVkIFVSTHMgZm9yIGVhY2ggbm9uLWNhbm9uaWNhbCBVUkwuCiAgICAgKgogICAgICogVGhlIGBmb3JJbXBvcnRgIGluIGVhY2gga2V5IGlzIHRydWUgd2hlbiB0aGlzIGNhbm9uaWNhbGl6YXRpb24gaXMgZm9yIGFuCiAgICAgKiBgQGltcG9ydGAgcnVsZS4gT3RoZXJ3aXNlLCBpdCdzIGZvciBhIGBAdXNlYCBvciBgQGZvcndhcmRgIHJ1bGUuCiAgICAgKgogICAgICogVGhpcyBjYWNoZSBjb3ZlcnMgbG9hZHMgdGhhdCBnbyB0aHJvdWdoIHRoZSBlbnRpcmUgY2hhaW4gb2Yge0BzZWUgJGltcG9ydGVyc30sCiAgICAgKiBidXQgaXQgZG9lc24ndCBjb3ZlciBpbmRpdmlkdWFsIGxvYWRzIG9yIGxvYWRzIGluIHdoaWNoIGFueSBpbXBvcnRlcgogICAgICogYWNjZXNzZXMgYGNvbnRhaW5pbmdVcmxgLiBTZWUgYWxzbyB7QHNlZSAkcGVySW1wb3J0ZXJDYW5vbmljYWxpemVDYWNoZX0uCiAgICAgKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGFycmF5PDB8MSwgQ2Fub25pY2FsaXplUmVzdWx0fFNwZWNpYWxDYWNoZVZhbHVlPj4KICAgICAqLwogICAgcHJpdmF0ZSBhcnJheSAkY2Fub25pY2FsaXplQ2FjaGUgPSBbXTsKCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgJGNhbm9uaWNhbGl6ZUNhY2hlfSBidXQgYWxzbyBpbmNsdWRlcyB0aGUgc3BlY2lmaWMgaW1wb3J0ZXIgaW4gdGhlCiAgICAgKiBrZXkuCiAgICAgKgogICAgICogVGhpcyBpcyB1c2VkIHRvIGNhY2hlIGJvdGggcmVsYXRpdmUgaW1wb3J0cyBmcm9tIHRoZSBiYXNlIGltcG9ydGVyIGFuZAogICAgICogaW5kaXZpZHVhbCBpbXBvcnRlciByZXN1bHRzIGluIHRoZSBjYXNlIHdoZXJlIHNvbWUgb3RoZXIgY29tcG9uZW50IG9mIHRoZQogICAgICogaW1wb3J0ZXIgY2hhaW4gaXNuJ3QgY2FjaGVhYmxlLgogICAgICoKICAgICAqIEB2YXIgXFNwbE9iamVjdFN0b3JhZ2U8SW1wb3J0ZXIsIGFycmF5PHN0cmluZywgYXJyYXk8MHwxLCBDYW5vbmljYWxpemVSZXN1bHR8U3BlY2lhbENhY2hlVmFsdWU+Pj4KICAgICAqLwogICAgcHJpdmF0ZSBcU3BsT2JqZWN0U3RvcmFnZSAkcGVySW1wb3J0ZXJDYW5vbmljYWxpemVDYWNoZTsKCiAgICAvKioKICAgICAqIFRoZSBwYXJzZWQgc3R5bGVzaGVldHMgZm9yIGVhY2ggY2Fub25pY2FsaXplZCBpbXBvcnQgVVJMLgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBTdHlsZXNoZWV0fFNwZWNpYWxDYWNoZVZhbHVlPgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICRpbXBvcnRDYWNoZSA9IFtdOwoKICAgIC8qKgogICAgICogVGhlIGltcG9ydCByZXN1bHRzIGZvciBlYWNoIGNhbm9uaWNhbGl6ZWQgaW1wb3J0IFVSTC4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgSW1wb3J0ZXJSZXN1bHQ+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJHJlc3VsdHNDYWNoZSA9IFtdOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8SW1wb3J0ZXI+ICRpbXBvcnRlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRpbXBvcnRlcnMsIExvZ2dlckludGVyZmFjZSAkbG9nZ2VyKQogICAgewogICAgICAgICR0aGlzLT5pbXBvcnRlcnMgPSAkaW1wb3J0ZXJzOwogICAgICAgICR0aGlzLT5sb2dnZXIgPSAkbG9nZ2VyOwogICAgICAgICR0aGlzLT5wZXJJbXBvcnRlckNhbm9uaWNhbGl6ZUNhY2hlID0gbmV3IFxTcGxPYmplY3RTdG9yYWdlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShVcmlJbnRlcmZhY2UgJHVybCwgP0ltcG9ydGVyICRiYXNlSW1wb3J0ZXIgPSBudWxsLCA/VXJpSW50ZXJmYWNlICRiYXNlVXJsID0gbnVsbCwgYm9vbCAkZm9ySW1wb3J0ID0gZmFsc2UpOiA/Q2Fub25pY2FsaXplUmVzdWx0CiAgICB7CiAgICAgICAgJHVybENhY2hlS2V5ID0gKHN0cmluZykgJHVybDsKICAgICAgICAkZm9ySW1wb3J0Q2FjaGVLZXkgPSAoaW50KSAkZm9ySW1wb3J0OwoKICAgICAgICBpZiAoJGJhc2VJbXBvcnRlciAhPT0gbnVsbCAmJiAkdXJsLT5nZXRTY2hlbWUoKSA9PT0gbnVsbCkgewogICAgICAgICAgICAkcmVzb2x2ZWRVcmwgPSBzZWxmOjpyZXNvbHZlVXJpKCRiYXNlVXJsLCAkdXJsKTsKICAgICAgICAgICAgJHJlc29sdmVkVXJsQ2FjaGVLZXkgPSAoc3RyaW5nKSAkcmVzb2x2ZWRVcmw7CgogICAgICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5wZXJJbXBvcnRlckNhbm9uaWNhbGl6ZUNhY2hlWyRiYXNlSW1wb3J0ZXJdWyRyZXNvbHZlZFVybENhY2hlS2V5XVskZm9ySW1wb3J0Q2FjaGVLZXldKSkgewogICAgICAgICAgICAgICAgWyRyZXN1bHQsICRjYWNoZWFibGVdID0gJHRoaXMtPmRvQ2Fub25pY2FsaXplKCRiYXNlSW1wb3J0ZXIsICRyZXNvbHZlZFVybCwgJGJhc2VVcmwsICRmb3JJbXBvcnQpOwogICAgICAgICAgICAgICAgXGFzc2VydCgkY2FjaGVhYmxlLCAnUmVsYXRpdmUgbG9hZHMgc2hvdWxkIGFsd2F5cyBiZSBjYWNoZWFibGUgYmVjYXVzZSB0aGV5IG5ldmVyIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBjb250YWluaW5nIFVSTC4nKTsKCiAgICAgICAgICAgICAgICAkaW1wb3J0ZXJDYWNoZSA9ICR0aGlzLT5wZXJJbXBvcnRlckNhbm9uaWNhbGl6ZUNhY2hlWyRiYXNlSW1wb3J0ZXJdID8/IFtdOwogICAgICAgICAgICAgICAgJGltcG9ydGVyQ2FjaGVbJHJlc29sdmVkVXJsQ2FjaGVLZXldWyRmb3JJbXBvcnRDYWNoZUtleV0gPSAkcmVzdWx0ID8/IFNwZWNpYWxDYWNoZVZhbHVlOjpudWxsOwogICAgICAgICAgICAgICAgJHRoaXMtPnBlckltcG9ydGVyQ2Fub25pY2FsaXplQ2FjaGVbJGJhc2VJbXBvcnRlcl0gPSAkaW1wb3J0ZXJDYWNoZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlbGF0aXZlUmVzdWx0ID0gJHRoaXMtPnBlckltcG9ydGVyQ2Fub25pY2FsaXplQ2FjaGVbJGJhc2VJbXBvcnRlcl1bJHJlc29sdmVkVXJsQ2FjaGVLZXldWyRmb3JJbXBvcnRDYWNoZUtleV07CgogICAgICAgICAgICBpZiAoJHJlbGF0aXZlUmVzdWx0ICE9PSBTcGVjaWFsQ2FjaGVWYWx1ZTo6bnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRyZWxhdGl2ZVJlc3VsdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5jYW5vbmljYWxpemVDYWNoZVskdXJsQ2FjaGVLZXldWyRmb3JJbXBvcnRDYWNoZUtleV0pKSB7CiAgICAgICAgICAgICRjYWNoZVJlc3VsdCA9ICR0aGlzLT5jYW5vbmljYWxpemVDYWNoZVskdXJsQ2FjaGVLZXldWyRmb3JJbXBvcnRDYWNoZUtleV07CgogICAgICAgICAgICBpZiAoJGNhY2hlUmVzdWx0ICE9PSBTcGVjaWFsQ2FjaGVWYWx1ZTo6bnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRjYWNoZVJlc3VsdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBFYWNoIGluZGl2aWR1YWwgY2FsbCB0byBhIGBjYW5vbmljYWxpemUoKWAgb3ZlcnJpZGUgbWF5IG5vdCBiZSBjYWNoZWFibGUKICAgICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpZiBpdCBoYXMgYWNjZXNzIHRvIGBjb250YWluaW5nVXJsYCBpdCdzIHRvbwogICAgICAgIC8vIGNvbnRleHQtc2Vuc2l0aXZlIHRvIHVzZWZ1bGx5IGNhY2hlKS4gV2Ugd2FudCB0byBjYWNoZSBhIGdpdmVuIFVSTCBhY3Jvc3MKICAgICAgICAvLyB0aGUgX2VudGlyZV8gaW1wb3J0ZXIgY2hhaW4sIHNvIHdlIHVzZSAkY2FjaGVhYmxlIHRvIHRyYWNrIHdoZXRoZXIgX2FsbF8KICAgICAgICAvLyBgY2Fub25pY2FsaXplKClgIGNhbGxzIHdlJ3ZlIGF0dGVtcHRlZCBhcmUgY2FjaGVhYmxlLiBPbmx5IGlmIHRoZXkgYXJlLCBkbwogICAgICAgIC8vIHdlIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlIGNhY2hlLgogICAgICAgICRjYWNoZWFibGUgPSB0cnVlOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5pbXBvcnRlcnMgYXMgJGkgPT4gJGltcG9ydGVyKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+cGVySW1wb3J0ZXJDYW5vbmljYWxpemVDYWNoZVskaW1wb3J0ZXJdWyR1cmxDYWNoZUtleV1bJGZvckltcG9ydENhY2hlS2V5XSkpIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+cGVySW1wb3J0ZXJDYW5vbmljYWxpemVDYWNoZVskaW1wb3J0ZXJdWyR1cmxDYWNoZUtleV1bJGZvckltcG9ydENhY2hlS2V5XTsKCiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCAhPT0gU3BlY2lhbENhY2hlVmFsdWU6Om51bGwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgWyRyZXN1bHQsICRpbXBvcnRlckNhY2hlYWJsZV0gPSAkdGhpcy0+ZG9DYW5vbmljYWxpemUoJGltcG9ydGVyLCAkdXJsLCAkYmFzZVVybCwgJGZvckltcG9ydCk7CgogICAgICAgICAgICBpZiAoJHJlc3VsdCAhPT0gbnVsbCAmJiAkaW1wb3J0ZXJDYWNoZWFibGUgJiYgJGNhY2hlYWJsZSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmNhbm9uaWNhbGl6ZUNhY2hlWyR1cmxDYWNoZUtleV1bJGZvckltcG9ydENhY2hlS2V5XSA9ICRyZXN1bHQ7CgogICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRpbXBvcnRlckNhY2hlYWJsZSAmJiAhJGNhY2hlYWJsZSkgewogICAgICAgICAgICAgICAgJGltcG9ydGVyQ2FjaGUgPSAkdGhpcy0+cGVySW1wb3J0ZXJDYW5vbmljYWxpemVDYWNoZVskaW1wb3J0ZXJdID8/IFtdOwogICAgICAgICAgICAgICAgJGltcG9ydGVyQ2FjaGVbJHVybENhY2hlS2V5XVskZm9ySW1wb3J0Q2FjaGVLZXldID0gJHJlc3VsdCA/PyBTcGVjaWFsQ2FjaGVWYWx1ZTo6bnVsbDsKICAgICAgICAgICAgICAgICR0aGlzLT5wZXJJbXBvcnRlckNhbm9uaWNhbGl6ZUNhY2hlWyRpbXBvcnRlcl0gPSAkaW1wb3J0ZXJDYWNoZTsKCiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghJGltcG9ydGVyQ2FjaGVhYmxlKSB7CiAgICAgICAgICAgICAgICBpZiAoJGNhY2hlYWJsZSkgewogICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IHVuY2FjaGVhYmxlIHJlc3VsdCwgYWRkIGFsbCBwcmV2aW91cyByZXN1bHRzCiAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHBlci1pbXBvcnRlciBjYWNoZSBzbyB3ZSBkb24ndCBoYXZlIHRvIHJlLXJ1biB0aGVtIGZvcgogICAgICAgICAgICAgICAgICAgIC8vIGZ1dHVyZSB1c2VzIG9mIHRoaXMgaW1wb3J0ZXIuCiAgICAgICAgICAgICAgICAgICAgZm9yICgkaiA9IDA7ICRqIDwgJGk7ICsrJGopIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGltcG9ydGVyQ2FjaGUgPSAkdGhpcy0+cGVySW1wb3J0ZXJDYW5vbmljYWxpemVDYWNoZVskdGhpcy0+aW1wb3J0ZXJzWyRqXV0gPz8gW107CiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBvcnRlckNhY2hlWyR1cmxDYWNoZUtleV1bJGZvckltcG9ydENhY2hlS2V5XSA9IFNwZWNpYWxDYWNoZVZhbHVlOjpudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cGVySW1wb3J0ZXJDYW5vbmljYWxpemVDYWNoZVskdGhpcy0+aW1wb3J0ZXJzWyRqXV0gPSAkaW1wb3J0ZXJDYWNoZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGNhY2hlYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkcmVzdWx0ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICR0aGlzLT5jYW5vbmljYWxpemVDYWNoZVskdXJsQ2FjaGVLZXldWyRmb3JJbXBvcnRDYWNoZUtleV0gPSBTcGVjaWFsQ2FjaGVWYWx1ZTo6bnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmVVcmkoP1VyaUludGVyZmFjZSAkYmFzZVVybCwgVXJpSW50ZXJmYWNlICR1cmwpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJGJhc2VVcmwgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICR1cmw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVXJpVXRpbDo6cmVzb2x2ZVVyaSgkYmFzZVVybCwgJHVybCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDYWxscyB7QHNlZSBJbXBvcnRlcjo6Y2Fub25pY2FsaXplfSBhbmQgcHJpbnRzIGEgZGVwcmVjYXRpb24gd2FybmluZyBpZiBpdAogICAgICogcmV0dXJucyBhIHJlbGF0aXZlIFVSTC4KICAgICAqCiAgICAgKiBUaGlzIHJldHVybnMgYm90aCB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIGBjYW5vbmljYWxpemUoKWAgYW5kIHdoZXRoZXIKICAgICAqIHRoYXQgcmVzdWx0IGlzIGNhY2hlYWJsZSBhdCBhbGwuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXtDYW5vbmljYWxpemVSZXN1bHR8bnVsbCwgYm9vbH0KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb0Nhbm9uaWNhbGl6ZShJbXBvcnRlciAkaW1wb3J0ZXIsIFVyaUludGVyZmFjZSAkdXJsLCA/VXJpSW50ZXJmYWNlICRiYXNlVXJsLCBib29sICRmb3JJbXBvcnQpOiBhcnJheQogICAgewogICAgICAgICRwYXNzQ29udGFpbmluZ1VybCA9ICRiYXNlVXJsICE9PSBudWxsICYmICgkdXJsLT5nZXRTY2hlbWUoKSA9PT0gbnVsbCB8fCAkaW1wb3J0ZXItPmlzTm9uQ2Fub25pY2FsU2NoZW1lKCR1cmwtPmdldFNjaGVtZSgpKSk7CiAgICAgICAgJGNhbm9uaWNhbGl6ZUNvbnRleHQgPSBuZXcgQ2Fub25pY2FsaXplQ29udGV4dCgkcGFzc0NvbnRhaW5pbmdVcmwgPyAkYmFzZVVybCA6IG51bGwsICRmb3JJbXBvcnQpOwoKICAgICAgICAkcmVzdWx0ID0gSW1wb3J0Q29udGV4dDo6d2l0aENhbm9uaWNhbGl6ZUNvbnRleHQoJGNhbm9uaWNhbGl6ZUNvbnRleHQsIGZuICgpID0+ICRpbXBvcnRlci0+Y2Fub25pY2FsaXplKCR1cmwpKTsKCiAgICAgICAgJGNhY2hlYWJsZSA9ICEkcGFzc0NvbnRhaW5pbmdVcmwgfHwgISRjYW5vbmljYWxpemVDb250ZXh0LT53YXNDb250YWluaW5nVXJsQWNjZXNzZWQoKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIFtudWxsLCAkY2FjaGVhYmxlXTsKICAgICAgICB9CgogICAgICAgIGlmICgkcmVzdWx0LT5nZXRTY2hlbWUoKSA9PT0gbnVsbCkgewogICAgICAgICAgICAvLyBkYXJ0LXNhc3MgdHJpZ2dlcnMgYSBkZXByZWNhdGlvbiBoZXJlLiBBcyB3ZSBuZXZlciBzdXBwb3J0ZWQgdGhlIG9sZCBiZWhhdmlvciwgd2UgZm9yYmlkIGl0IGRpcmVjdGx5LgogICAgICAgICAgICB0aHJvdyBuZXcgXFVuZXhwZWN0ZWRWYWx1ZUV4Y2VwdGlvbigiSW1wb3J0ZXIgJGltcG9ydGVyIGNhbm9uaWNhbGl6ZWQgJHVybCB0byAkcmVzdWx0IGJ1dCBjYW5vbmljYWwgVVJMcyBtdXN0IGJlIGFic29sdXRlLiIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpbXBvcnRlci0+aXNOb25DYW5vbmljYWxTY2hlbWUoJHJlc3VsdC0+Z2V0U2NoZW1lKCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcVW5leHBlY3RlZFZhbHVlRXhjZXB0aW9uKCJJbXBvcnRlciAkaW1wb3J0ZXIgY2Fub25pY2FsaXplZCAkdXJsIHRvICRyZXN1bHQsIHdoaWNoIHVzZXMgYSBzY2hlbWUgZGVjbGFyZWQgYXMgbm9uLWNhbm9uaWNhbC4iKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbbmV3IENhbm9uaWNhbGl6ZVJlc3VsdCgkaW1wb3J0ZXIsICRyZXN1bHQsICR1cmwpLCAkY2FjaGVhYmxlXTsKICAgIH0KCiAgICAvKioKICAgICAqIFRyaWVzIHRvIGxvYWQgdGhlIGNhbm9uaWNhbGl6ZWQgJGNhbm9uaWNhbFVybCB1c2luZyAkaW1wb3J0ZXIuCiAgICAgKgogICAgICogSWYgJGltcG9ydGVyIGNhbiBpbXBvcnQgJGNhbm9uaWNhbFVybCwgcmV0dXJucyB0aGUgaW1wb3J0ZWQge0BzZWUgU3R5bGVzaGVldH0uCiAgICAgKiBPdGhlcndpc2UgcmV0dXJucyBgbnVsbGAuCiAgICAgKgogICAgICogSWYgcGFzc2VkLCB0aGUgJG9yaWdpbmFsVXJsIHJlcHJlc2VudHMgdGhlIFVSTCB0aGF0IHdhcyBjYW5vbmljYWxpemVkCiAgICAgKiBpbnRvICRjYW5vbmljYWxVcmwuIEl0J3MgdXNlZCB0byByZXNvbHZlIGEgcmVsYXRpdmUgY2Fub25pY2FsIFVSTCwgd2hpY2gKICAgICAqIGltcG9ydGVycyBtYXkgcmV0dXJuIGZvciBsZWdhY3kgcmVhc29ucy4KICAgICAqCiAgICAgKiBJZiAkcXVpZXQgaXMgYHRydWVgLCB0aGlzIHdpbGwgZGlzYWJsZSBsb2dnaW5nIHdhcm5pbmdzIHdoZW4gcGFyc2luZyB0aGUKICAgICAqIG5ld2x5IGltcG9ydGVkIHN0eWxlc2hlZXQuCiAgICAgKgogICAgICogQ2FjaGVzIHRoZSByZXN1bHQgb2YgdGhlIGltcG9ydCBhbmQgdXNlcyBjYWNoZWQgcmVzdWx0cyBpZiBwb3NzaWJsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGltcG9ydENhbm9uaWNhbChJbXBvcnRlciAkaW1wb3J0ZXIsIFVyaUludGVyZmFjZSAkY2Fub25pY2FsVXJsLCA/VXJpSW50ZXJmYWNlICRvcmlnaW5hbFVybCA9IG51bGwsIGJvb2wgJHF1aWV0ID0gZmFsc2UpOiA/U3R5bGVzaGVldAogICAgewogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+aW1wb3J0Q2FjaGVbKHN0cmluZykgJGNhbm9uaWNhbFVybF0gPz89ICR0aGlzLT5kb0ltcG9ydENhbm9uaWNhbCgkaW1wb3J0ZXIsICRjYW5vbmljYWxVcmwsICRvcmlnaW5hbFVybCwgJHF1aWV0KSA/PyBTcGVjaWFsQ2FjaGVWYWx1ZTo6bnVsbDsKCiAgICAgICAgaWYgKCRyZXN1bHQgIT09IFNwZWNpYWxDYWNoZVZhbHVlOjpudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb0ltcG9ydENhbm9uaWNhbChJbXBvcnRlciAkaW1wb3J0ZXIsIFVyaUludGVyZmFjZSAkY2Fub25pY2FsVXJsLCA/VXJpSW50ZXJmYWNlICRvcmlnaW5hbFVybCA9IG51bGwsIGJvb2wgJHF1aWV0ID0gZmFsc2UpOiA/U3R5bGVzaGVldAogICAgewogICAgICAgICRyZXN1bHQgPSAkaW1wb3J0ZXItPmxvYWQoJGNhbm9uaWNhbFVybCk7CgogICAgICAgIGlmICgkcmVzdWx0ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnJlc3VsdHNDYWNoZVsoc3RyaW5nKSAkY2Fub25pY2FsVXJsXSA9ICRyZXN1bHQ7CgogICAgICAgIHJldHVybiBTdHlsZXNoZWV0OjpwYXJzZSgkcmVzdWx0LT5nZXRDb250ZW50cygpLCAkcmVzdWx0LT5nZXRTeW50YXgoKSwgJHF1aWV0ID8gbmV3IFF1aWV0TG9nZ2VyKCkgOiAkdGhpcy0+bG9nZ2VyLCBzZWxmOjpyZXNvbHZlVXJpKCRvcmlnaW5hbFVybCwgJGNhbm9uaWNhbFVybCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBodW1hbml6ZShVcmlJbnRlcmZhY2UgJGNhbm9uaWNhbFVybCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRzaG9ydGVzdFVybCA9IG51bGw7CiAgICAgICAgJHNob3J0ZXN0TGVuZ3RoID0gXFBIUF9JTlRfTUFYOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y2Fub25pY2FsaXplQ2FjaGUgYXMgJGNhY2hlVmFsdWVzKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRjYWNoZVZhbHVlcyBhcyAkY2FjaGVWYWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKCRjYWNoZVZhbHVlID09PSBTcGVjaWFsQ2FjaGVWYWx1ZTo6bnVsbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkY2FjaGVWYWx1ZS0+Y2Fub25pY2FsVXJsLT50b1N0cmluZygpICE9PSAkY2Fub25pY2FsVXJsLT50b1N0cmluZygpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG9yaWdpbmFsVXJsTGVuZ3RoID0gXHN0cmxlbigkY2FjaGVWYWx1ZS0+b3JpZ2luYWxVcmwtPmdldFBhdGgoKSk7CgogICAgICAgICAgICAgICAgaWYgKCRzaG9ydGVzdFVybCA9PT0gbnVsbCB8fCAkb3JpZ2luYWxVcmxMZW5ndGggPCAkc2hvcnRlc3RMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkc2hvcnRlc3RVcmwgPSAkY2FjaGVWYWx1ZS0+b3JpZ2luYWxVcmw7CiAgICAgICAgICAgICAgICAgICAgJHNob3J0ZXN0TGVuZ3RoID0gJG9yaWdpbmFsVXJsTGVuZ3RoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNob3J0ZXN0VXJsICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBVcmlVdGlsOjpyZXNvbHZlKCRzaG9ydGVzdFVybCwgYmFzZW5hbWUoJGNhbm9uaWNhbFVybC0+Z2V0UGF0aCgpKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNhbm9uaWNhbFVybDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc291cmNlTWFwVXJsKFVyaUludGVyZmFjZSAkY2Fub25pY2FsVXJsKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+cmVzdWx0c0NhY2hlWyhzdHJpbmcpICRjYW5vbmljYWxVcmxdID8/IG51bGwpPy0+Z2V0U291cmNlTWFwVXJsKCkgPz8gJGNhbm9uaWNhbFVybDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/ImportContext.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgSW1wb3J0Q29udGV4dAp7CiAgICBwcml2YXRlIHN0YXRpYyA/Q2Fub25pY2FsaXplQ29udGV4dCAkY29udGV4dCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBTYXNzIGNvbXBpbGVyIGlzIGN1cnJlbnRseSBldmFsdWF0aW5nIGFuIGBAaW1wb3J0YCBydWxlLgogICAgICoKICAgICAqIFdoZW4gZXZhbHVhdGluZyBgQGltcG9ydGAgcnVsZXMsIFVSTHMgc2hvdWxkIGNhbm9uaWNhbGl6ZSB0byBhbiBpbXBvcnQtb25seQogICAgICogZmlsZSBpZiBvbmUgZXhpc3RzIGZvciB0aGUgVVJMIGJlaW5nIGNhbm9uaWNhbGl6ZWQuIE90aGVyd2lzZSwKICAgICAqIGNhbm9uaWNhbGl6YXRpb24gc2hvdWxkIGJlIGlkZW50aWNhbCBmb3IgYEBpbXBvcnRgIGFuZCBgQHVzZWAgcnVsZXMuIEl0J3MKICAgICAqIGFkbWl0dGVkbHkgaGFja3kgdG8gc2V0IHRoaXMgZ2xvYmFsbHksIGJ1dCBgQGltcG9ydGAgd2lsbCBldmVudHVhbGx5IGJlCiAgICAgKiByZW1vdmVkLCBhdCB3aGljaCBwb2ludCB3ZSBjYW4gZGVsZXRlIHRoaXMgYW5kIGhhdmUgb25lIGNvbnNpc3RlbnQgYmVoYXZpb3IuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNGcm9tSW1wb3J0KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6JGNvbnRleHQ/LT5pc0Zyb21JbXBvcnQoKSA/PyBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFQgJGNhbGxiYWNrCiAgICAgKiBAcmV0dXJuIFQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbkltcG9ydFJ1bGUoY2FsbGFibGUgJGNhbGxiYWNrKQogICAgewogICAgICAgIGlmIChzZWxmOjokY29udGV4dCAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6JGNvbnRleHQtPndpdGhGcm9tSW1wb3J0KHRydWUsICRjYWxsYmFjayk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6d2l0aENhbm9uaWNhbGl6ZUNvbnRleHQobmV3IENhbm9uaWNhbGl6ZUNvbnRleHQobnVsbCwgdHJ1ZSksICRjYWxsYmFjayk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDYW5vbmljYWxpemVDb250ZXh0KCk6IENhbm9uaWNhbGl6ZUNvbnRleHQKICAgIHsKICAgICAgICBpZiAoc2VsZjo6JGNvbnRleHQgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignY2Fub25pY2FsaXplQ29udGV4dCBtYXkgb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gYSBjYWxsIHRvIGNhbm9uaWNhbGl6ZSgpLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OiRjb250ZXh0OwogICAgfQoKICAgIC8qKgogICAgICogUnVucyAkY2FsbGJhY2sgaW4gdGhlIGdpdmVuIGNvbnRleHQuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqIEByZXR1cm4gVAogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdpdGhDYW5vbmljYWxpemVDb250ZXh0KD9DYW5vbmljYWxpemVDb250ZXh0ICRjYW5vbmljYWxpemVDb250ZXh0LCBjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgJG9sZENhbm9uaWNhbGl6ZUNvbnRleHQgPSBzZWxmOjokY29udGV4dDsKCiAgICAgICAgc2VsZjo6JGNvbnRleHQgPSAkY2Fub25pY2FsaXplQ29udGV4dDsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuICRjYWxsYmFjaygpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIHNlbGY6OiRjb250ZXh0ID0gJG9sZENhbm9uaWNhbGl6ZUNvbnRleHQ7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/Importer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCi8qKgogKiBBIGJhc2UgY2xhc3MgZm9yIGltcG9ydGVycyB0aGF0IHJlc29sdmVzIFVSTHMgaW4gYEBpbXBvcnRgcyB0byB0aGUgY29udGVudHMKICogb2YgU2FzcyBmaWxlcy4KICoKICogSW1wb3J0ZXJzIHNob3VsZCBpbXBsZW1lbnQge0BzZWUgX190b1N0cmluZ30gdG8gcHJvdmlkZSBhIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uCiAqIG9mIHRoZSBpbXBvcnRlci4gRm9yIGV4YW1wbGUsIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gaW1wb3J0ZXIgcmV0dXJucyBpdHMKICogbG9hZCBwYXRoLgogKi8KYWJzdHJhY3QgY2xhc3MgSW1wb3J0ZXIgaW1wbGVtZW50cyBcU3RyaW5nYWJsZQp7CiAgICAvKioKICAgICAqIElmICR1cmwgaXMgcmVjb2duaXplZCBieSB0aGlzIGltcG9ydGVyLCByZXR1cm5zIGl0cyBjYW5vbmljYWwgZm9ybWF0LgogICAgICoKICAgICAqIE5vdGUgdGhhdCBjYW5vbmljYWwgVVJMcyAqbXVzdCogYmUgYWJzb2x1dGUsIGluY2x1ZGluZyBhIHNjaGVtZS4gUmV0dXJuaW5nCiAgICAgKiBgZmlsZTpgIFVSTHMgaXMgZW5jb3VyYWdlZCBpZiB0aGUgaW1wb3J0ZWQgc3R5bGVzaGVldCBjb21lcyBmcm9tIGEgZmlsZSBvbgogICAgICogZGlzay4KICAgICAqCiAgICAgKiBJZiBTYXNzIGhhcyBhbHJlYWR5IGxvYWRlZCBhIHN0eWxlc2hlZXQgd2l0aCB0aGUgcmV0dXJuZWQgY2Fub25pY2FsIFVSTCwKICAgICAqIGl0IHJlLXVzZXMgdGhlIGV4aXN0aW5nIHBhcnNlIHRyZWUuIFRoaXMgbWVhbnMgdGhhdCBpbXBvcnRlcnMgKiptdXN0CiAgICAgKiBlbnN1cmUqKiB0aGF0IHRoZSBzYW1lIGNhbm9uaWNhbCBVUkwgYWx3YXlzIHJlZmVycyB0byB0aGUgc2FtZSBzdHlsZXNoZWV0LAogICAgICogKmV2ZW4gYWNyb3NzIGRpZmZlcmVudCBpbXBvcnRlcnMqLgogICAgICoKICAgICAqIFRoaXMgbWF5IHJldHVybiBgbnVsbGAgaWYgJHVybCBpc24ndCByZWNvZ25pemVkIGJ5IHRoaXMgaW1wb3J0ZXIuCiAgICAgKgogICAgICogSWYgdGhpcyBpbXBvcnRlcidzIFVSTCBmb3JtYXQgc3VwcG9ydHMgZmlsZSBleHRlbnNpb25zLCBpdCBzaG91bGQKICAgICAqIGNhbm9uaWNhbGl6ZSB0aGVtIHRoZSBzYW1lIHdheSBhcyB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGltcG9ydGVyOgogICAgICoKICAgICAqICogVGhlIGltcG9ydGVyIHNob3VsZCBsb29rIGZvciBzdHlsZXNoZWV0cyBieSBhZGRpbmcgdGhlIHByZWZpeCBgX2AgdG8gdGhlCiAgICAgKiAgIFVSTCdzIGJhc2VuYW1lLCBhbmQgYnkgYWRkaW5nIHRoZSBleHRlbnNpb25zIGAuc2Fzc2AgYW5kIGAuc2Nzc2AgaWYgdGhlCiAgICAgKiAgIFVSTCBkb2Vzbid0IGFscmVhZHkgaGF2ZSBvbmUgb2YgdGhvc2UgZXh0ZW5zaW9ucy4gRm9yIGV4YW1wbGUsIGlmIHRoZQogICAgICogICBVUkwgd2FzIGBmb28vYmFyL2JhemAsIHRoZSBpbXBvcnRlciB3b3VsZCBsb29rIGZvcjoKICAgICAqICAgKiBgZm9vL2Jhci9iYXouc2Fzc2AKICAgICAqICAgKiBgZm9vL2Jhci9iYXouc2Nzc2AKICAgICAqICAgKiBgZm9vL2Jhci9fYmF6LnNhc3NgCiAgICAgKiAgICogYGZvby9iYXIvX2Jhei5zY3NzYAogICAgICoKICAgICAqICAgSWYgdGhlIFVSTCB3YXMgYGZvby9iYXIvYmF6LnNjc3NgLCB0aGUgaW1wb3J0ZXIgd291bGQganVzdCBsb29rIGZvcjoKICAgICAqICAgKiBgZm9vL2Jhci9iYXouc2Nzc2AKICAgICAqICAgKiBgZm9vL2Jhci9fYmF6LnNjc3NgCiAgICAgKgogICAgICogICBJZiB0aGUgaW1wb3J0ZXIgZmluZHMgYSBzdHlsZXNoZWV0IGF0IG1vcmUgdGhhbiBvbmUgb2YgdGhlc2UgVVJMcywgaXQKICAgICAqICAgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBpbmRpY2F0aW5nIHRoYXQgdGhlIGltcG9ydCBpcyBhbWJpZ3VvdXMuIE5vdGUKICAgICAqICAgdGhhdCBpZiB0aGUgZXh0ZW5zaW9uIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLCBhIHN0eWxlc2hlZXQgd2l0aCB0aGUKICAgICAqICAgb3Bwb3NpdGUgZXh0ZW5zaW9uIG1heSBleGlzdC4KICAgICAqCiAgICAgKiAqIElmIG5vbmUgb2YgdGhlIHBvc3NpYmxlIHBhdGhzIGlzIHZhbGlkLCB0aGUgaW1wb3J0ZXIgc2hvdWxkIHBlcmZvcm0gdGhlCiAgICAgKiAgIHNhbWUgcmVzb2x1dGlvbiBvbiB0aGUgVVJMIGZvbGxvd2VkIGJ5IGAvaW5kZXhgLiBJbiB0aGUgZXhhbXBsZSBhYm92ZSwKICAgICAqICAgaXQgd291bGQgbG9vayBmb3I6CiAgICAgKiAgICogYGZvby9iYXIvYmF6L19pbmRleC5zYXNzYAogICAgICogICAqIGBmb28vYmFyL2Jhei9pbmRleC5zYXNzYAogICAgICogICAqIGBmb28vYmFyL2Jhei9faW5kZXguc2Nzc2AKICAgICAqICAgKiBgZm9vL2Jhci9iYXovaW5kZXguc2Nzc2AKICAgICAqCiAgICAgKiAgIEFzIGFib3ZlLCBpZiB0aGUgaW1wb3J0ZXIgZmluZHMgYSBzdHlsZXNoZWV0IGF0IG1vcmUgdGhhbiBvbmUgb2YgdGhlc2UKICAgICAqICAgVVJMcywgaXQgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBpbmRpY2F0aW5nIHRoYXQgdGhlIGltcG9ydCBpcwogICAgICogICBhbWJpZ3VvdXMuCiAgICAgKgogICAgICogSWYgbm8gc3R5bGVzaGVldHMgYXJlIGZvdW5kLCB0aGUgaW1wb3J0ZXIgc2hvdWxkIHJldHVybiBgbnVsbGAuCiAgICAgKgogICAgICogQ2FsbGluZyB7QHNlZSBjYW5vbmljYWxpemV9IG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUgVVJMIG11c3QgcmV0dXJuIHRoZQogICAgICogc2FtZSByZXN1bHQuIENhbGxpbmcge0BzZWUgY2Fub25pY2FsaXplfSB3aXRoIGEgVVJMIHJldHVybmVkIGJ5IHtAc2VlIGNhbm9uaWNhbGl6ZX0KICAgICAqIG11c3QgcmV0dXJuIHRoYXQgVVJMLiBDYWxsaW5nIHtAc2VlIGNhbm9uaWNhbGl6ZX0gd2l0aCBhIFVSTCByZWxhdGl2ZSB0byBvbmUKICAgICAqIHJldHVybmVkIGJ5IHtAc2VlIGNhbm9uaWNhbGl6ZX0gbXVzdCByZXR1cm4gYSBtZWFuaW5nZnVsIHJlc3VsdC4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShVcmlJbnRlcmZhY2UgJHVybCk6ID9VcmlJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBMb2FkcyB0aGUgU2FzcyB0ZXh0IGZvciB0aGUgZ2l2ZW4gJHVybCwgb3IgcmV0dXJucyBgbnVsbGAgaWYKICAgICAqIHRoaXMgaW1wb3J0ZXIgY2FuJ3QgZmluZCB0aGUgc3R5bGVzaGVldCBpdCByZWZlcnMgdG8uCiAgICAgKgogICAgICogVGhlICR1cmwgY29tZXMgZnJvbSBhIGNhbGwgdG8ge0BzZWUgY2Fub25pY2FsaXplfSBmb3IgdGhpcyBpbXBvcnRlci4KICAgICAqCiAgICAgKiBXaGVuIFNhc3MgZW5jb3VudGVycyBhbiBgQGltcG9ydGAgcnVsZSBpbiBhIHN0eWxlc2hlZXQsIGl0IGZpcnN0IGNhbGxzCiAgICAgKiB7QHNlZSBjYW5vbmljYWxpemV9IGFuZCB7QHNlZSBsb2FkfSBvbiB0aGUgaW1wb3J0ZXIgdGhhdCBmaXJzdCBsb2FkZWQgdGhhdAogICAgICogc3R5bGVzaGVldCB3aXRoIHRoZSBpbXBvcnRlZCBVUkwgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gdGhlIHN0eWxlc2hlZXQncwogICAgICogb3JpZ2luYWwgVVJMLiBJZiBlaXRoZXIgb2YgdGhvc2UgcmV0dXJucyBgbnVsbGAsIGl0IHRoZW4gY2FsbHMKICAgICAqIHtAc2VlIGNhbm9uaWNhbGl6ZX0gYW5kIHtAc2VlIGxvYWR9IG9uIGVhY2ggaW1wb3J0ZXIgaW4gb3JkZXIgd2l0aCB0aGUgVVJMIGFzIGl0CiAgICAgKiBhcHBlYXJzIGluIHRoZSBgQGltcG9ydGAgcnVsZS4KICAgICAqCiAgICAgKiBJZiB0aGUgaW1wb3J0ZXIgZmluZHMgYSBzdHlsZXNoZWV0IGF0ICR1cmwgYnV0IGl0IGZhaWxzIHRvIGxvYWQgZm9yIHNvbWUKICAgICAqIHJlYXNvbiwgb3IgaWYgJHVybCBpcyB1bmlxdWVseSBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbXBvcnRlciBidXQgZG9lc24ndAogICAgICogcmVmZXIgdG8gYSByZWFsIHN0eWxlc2hlZXQsIHRoZSBpbXBvcnRlciBtYXkgdGhyb3cgYW4gZXhjZXB0aW9uIHRoYXQgd2lsbAogICAgICogYmUgd3JhcHBlZCBieSBTYXNzLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gbG9hZChVcmlJbnRlcmZhY2UgJHVybCk6ID9JbXBvcnRlclJlc3VsdDsKCiAgICAvKioKICAgICAqIFdpdGhvdXQgYWNjZXNzaW5nIHRoZSBmaWxlc3lzdGVtLCByZXR1cm5zIHdoZXRoZXIgcGFzc2luZyAkdXJsIHRvCiAgICAgKiB7QHNlZSBjYW5vbmljYWxpemV9IGNvdWxkIHBvc3NpYmx5IHJldHVybiAkY2Fub25pY2FsVXJsLgogICAgICoKICAgICAqIFRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgdmVyeSBlZmZpY2llbnQsIGFuZCBzdWJjbGFzc2VzIGFyZSBhbGxvd2VkIHRvCiAgICAgKiByZXR1cm4gZmFsc2UgcG9zaXRpdmVzIGlmIGl0IHdvdWxkIGJlIGluZWZmaWNpZW50IHRvIGRldGVybWluZSB3aGV0aGVyCiAgICAgKiAkdXJsIHdvdWxkIGFjdHVhbGx5IHJlc29sdmUgdG8gJGNhbm9uaWNhbFVybC4gU3ViY2xhc3NlcyBhcmUgbm90IGFsbG93ZWQKICAgICAqIHRvIHJldHVybiBmYWxzZSBuZWdhdGl2ZXMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VsZENhbm9uaWNhbGl6ZShVcmlJbnRlcmZhY2UgJHVybCwgVXJpSW50ZXJmYWNlICRjYW5vbmljYWxVcmwpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIFVSTCBzY2hlbWUgKHdpdGhvdXQgYDpgKSBzaG91bGQgYmUgY29uc2lkZXJlZAogICAgICogIm5vbi1jYW5vbmljYWwiIGZvciB0aGlzIGltcG9ydGVyLgogICAgICoKICAgICAqIEFuIGltcG9ydGVyIG1heSBub3QgcmV0dXJuIGEgVVJMIHdpdGggYSBub24tY2Fub25pY2FsIHNjaGVtZSBmcm9tCiAgICAgKiB7QHNlZSBjYW5vbmljYWxpemV9LiBJbiBleGNoYW5nZSwge0BzZWUgZ2V0Q29udGFpbmluZ1VybH0gaXMgYXZhaWxhYmxlIHdpdGhpbgogICAgICoge0BzZWUgY2Fub25pY2FsaXplfSBmb3IgYWJzb2x1dGUgVVJMcyB3aXRoIG5vbi1jYW5vbmljYWwgc2NoZW1lcyBzbyB0aGF0IHRoZQogICAgICogaW1wb3J0ZXIgY2FuIHJlc29sdmUgdGhvc2UgVVJMcyBkaWZmZXJlbnRseSBiYXNlZCBvbiB3aGVyZSB0aGV5J3JlIGxvYWRlZC4KICAgICAqCiAgICAgKiBUaGlzIG11c3QgYWx3YXlzIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBmb3IgdGhlIHNhbWUgJHNjaGVtZS4gSXQgaXMKICAgICAqIGV4cGVjdGVkIHRvIGJlIHZlcnkgZWZmaWNpZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNOb25DYW5vbmljYWxTY2hlbWUoc3RyaW5nICRzY2hlbWUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgY3VycmVudCB7QHNlZSBjYW5vbmljYWxpemV9IGludm9jYXRpb24gY29tZXMgZnJvbSBhbiBgQGltcG9ydGAKICAgICAqIHJ1bGUuCiAgICAgKgogICAgICogV2hlbiBldmFsdWF0aW5nIGBAaW1wb3J0YCBydWxlcywgVVJMcyBzaG91bGQgY2Fub25pY2FsaXplIHRvIGFuCiAgICAgKiBbaW1wb3J0LW9ubHkgZmlsZV0gaWYgb25lIGV4aXN0cyBmb3IgdGhlIFVSTCBiZWluZyBjYW5vbmljYWxpemVkLgogICAgICogT3RoZXJ3aXNlLCBjYW5vbmljYWxpemF0aW9uIHNob3VsZCBiZSBpZGVudGljYWwgZm9yIGBAaW1wb3J0YCBhbmQgYEB1c2VgCiAgICAgKiBydWxlcy4KICAgICAqCiAgICAgKiBbaW1wb3J0LW9ubHkgZmlsZV06IGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL2ltcG9ydCNpbXBvcnQtb25seS1maWxlcwogICAgICoKICAgICAqIFN1YmNsYXNzZXMgc2hvdWxkIG9ubHkgYWNjZXNzIHRoaXMgZnJvbSB3aXRoaW4gY2FsbHMgdG8ge0BzZWUgY2Fub25pY2FsaXplfS4KICAgICAqIE91dHNpZGUgb2YgdGhhdCBjb250ZXh0LCBpdHMgdmFsdWUgaXMgdW5kZWZpbmVkIGFuZCBzdWJqZWN0IHRvIGNoYW5nZS4KICAgICAqLwogICAgZmluYWwgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzRnJvbUltcG9ydCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEltcG9ydENvbnRleHQ6OmlzRnJvbUltcG9ydCgpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGNhbm9uaWNhbCBVUkwgb2YgdGhlIHN0eWxlc2hlZXQgdGhhdCBjYXVzZWQgdGhlIGN1cnJlbnQge0BzZWUgY2Fub25pY2FsaXplfQogICAgICogaW52b2NhdGlvbi4KICAgICAqCiAgICAgKiBUaGlzIGlzIG9ubHkgc2V0IHdoZW4gdGhlIGNvbnRhaW5pbmcgc3R5bGVzaGVldCBoYXMgYSBjYW5vbmljYWwgVVJMLCBhbmQKICAgICAqIHdoZW4gdGhlIFVSTCBiZWluZyBjYW5vbmljYWxpemVkIGlzIGVpdGhlciByZWxhdGl2ZSBvciBoYXMgYSBzY2hlbWUgZm9yCiAgICAgKiB3aGljaCB7QHNlZSBpc05vbkNhbm9uaWNhbFNjaGVtZX0gcmV0dXJucyBgdHJ1ZWAuIFRoaXMgcmVzdHJpY3Rpb24gZW5zdXJlcyB0aGF0CiAgICAgKiBjYW5vbmljYWwgVVJMcyBhcmUgYWx3YXlzIGludGVycHJldGVkIHRoZSBzYW1lIHdheSByZWdhcmRsZXNzIG9mIHRoZWlyCiAgICAgKiBjb250ZXh0LgogICAgICoKICAgICAqIFN1YmNsYXNzZXMgc2hvdWxkIG9ubHkgYWNjZXNzIHRoaXMgZnJvbSB3aXRoaW4gY2FsbHMgdG8ge0BzZWUgY2Fub25pY2FsaXplfS4KICAgICAqIE91dHNpZGUgb2YgdGhhdCBjb250ZXh0LCBpdHMgdmFsdWUgaXMgdW5kZWZpbmVkIGFuZCBzdWJqZWN0IHRvIGNoYW5nZS4KICAgICAqLwogICAgZmluYWwgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldENvbnRhaW5pbmdVcmwoKTogP1VyaUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiBJbXBvcnRDb250ZXh0OjpnZXRDYW5vbmljYWxpemVDb250ZXh0KCktPmdldENvbnRhaW5pbmdVcmwoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/ImporterResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIExlYWd1ZVxVcmlcVXJpOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFN5bnRheDsKCmZpbmFsIGNsYXNzIEltcG9ydGVyUmVzdWx0CnsKICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRjb250ZW50czsKCiAgICBwcml2YXRlIHJlYWRvbmx5ID9VcmlJbnRlcmZhY2UgJHNvdXJjZU1hcFVybDsKCiAgICBwcml2YXRlIHJlYWRvbmx5IFN5bnRheCAkc3ludGF4OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJGNvbnRlbnRzLCBTeW50YXggJHN5bnRheCwgP1VyaUludGVyZmFjZSAkc291cmNlTWFwVXJsID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+Y29udGVudHMgPSAkY29udGVudHM7CiAgICAgICAgJHRoaXMtPnN5bnRheCA9ICRzeW50YXg7CiAgICAgICAgJHRoaXMtPnNvdXJjZU1hcFVybCA9ICRzb3VyY2VNYXBVcmw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBBbiBhYnNvbHV0ZSwgYnJvd3Nlci1hY2Nlc3NpYmxlIFVSTCBpbmRpY2F0aW5nIHRoZSByZXNvbHZlZCBsb2NhdGlvbiBvZgogICAgICogdGhlIGltcG9ydGVkIHN0eWxlc2hlZXQuCiAgICAgKgogICAgICogVGhpcyBzaG91bGQgYmUgYSBgZmlsZTpgIFVSTCBpZiBvbmUgaXMgYXZhaWxhYmxlLCBidXQgYW4gYGh0dHA6YCBVUkwgaXMKICAgICAqIGFjY2VwdGFibGUgYXMgd2VsbC4gSWYgbm8gVVJMIGlzIHN1cHBsaWVkLCBhIGBkYXRhOmAgVVJMIGlzIGdlbmVyYXRlZAogICAgICogYXV0b21hdGljYWxseSBmcm9tIHtAc2VlIGNvbnRlbnRzfS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNvdXJjZU1hcFVybCgpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZU1hcFVybCA/PyBVcmk6OmZyb21EYXRhKCR0aGlzLT5jb250ZW50cywgJycsICdjaGFyc2V0PXV0Zi04Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgc3ludGF4IHRvIHVzZSB0byBwYXJzZSB0aGUgc3R5bGVzaGVldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN5bnRheCgpOiBTeW50YXgKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN5bnRheDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/ImportUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFBhdGg7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBJbXBvcnRVdGlsCnsKICAgIC8qKgogICAgICogUmVzb2x2ZXMgYW4gaW1wb3J0ZWQgcGF0aCB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyB0aGUgZmlsZXN5c3RlbSBpbXBvcnRlci4KICAgICAqCiAgICAgKiBUaGlzIHRyaWVzIHRvIGZpbGwgaW4gZXh0ZW5zaW9ucyBhbmQgcGFydGlhbCBwcmVmaXhlcyBhbmQgY2hlY2sgZm9yIGEKICAgICAqIGRpcmVjdG9yeSBkZWZhdWx0LiBJZiBubyBmaWxlIGNhbiBiZSBmb3VuZCwgaXQgcmV0dXJucyBgbnVsbGAuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZUltcG9ydFBhdGgoc3RyaW5nICRwYXRoKTogP3N0cmluZwogICAgewogICAgICAgICRleHRlbnNpb24gPSBQYXRoOjpleHRlbnNpb24oJHBhdGgpOwoKICAgICAgICBpZiAoJGV4dGVuc2lvbiA9PT0gJy5zYXNzJyB8fCAkZXh0ZW5zaW9uID09PSAnLnNjc3MnIHx8ICRleHRlbnNpb24gPT09ICcuY3NzJykgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6aWZJbkltcG9ydChmbiAoKSA9PiBzZWxmOjpleGFjdGx5T25lKHNlbGY6OnRyeVBhdGgoUGF0aDo6d2l0aG91dEV4dGVuc2lvbigkcGF0aCkgLiAnLmltcG9ydCcgLiAkZXh0ZW5zaW9uKSkpCiAgICAgICAgICAgICAgICA/PyBzZWxmOjpleGFjdGx5T25lKHNlbGY6OnRyeVBhdGgoJHBhdGgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjppZkluSW1wb3J0KGZuICgpID0+IHNlbGY6OmV4YWN0bHlPbmUoc2VsZjo6dHJ5UGF0aFdpdGhFeHRlbnNpb25zKCRwYXRoIC4gJy5pbXBvcnQnKSkpCiAgICAgICAgICAgID8/IHNlbGY6OmV4YWN0bHlPbmUoc2VsZjo6dHJ5UGF0aFdpdGhFeHRlbnNpb25zKCRwYXRoKSkKICAgICAgICAgICAgPz8gc2VsZjo6dHJ5UGF0aEFzRGlyZWN0b3J5KCRwYXRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgdHJ5UGF0aH0sIGJ1dCBjaGVja3MgYC5zYXNzYCwgYC5zY3NzYCwgYW5kIGAuY3NzYCBleHRlbnNpb25zLgogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHRyeVBhdGhXaXRoRXh0ZW5zaW9ucyhzdHJpbmcgJHBhdGgpOiBhcnJheQogICAgewogICAgICAgICRyZXN1bHQgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgc2VsZjo6dHJ5UGF0aCgkcGF0aCAuICcuc2FzcycpLAogICAgICAgICAgICBzZWxmOjp0cnlQYXRoKCRwYXRoIC4gJy5zY3NzJyksCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgIT09IFtdKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OnRyeVBhdGgoJHBhdGggLiAnLmNzcycpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgJHBhdGggYW5kL29yIHRoZSBwYXJ0aWFsIHdpdGggdGhlIHNhbWUgbmFtZSwgaWYgZWl0aGVyIG9yIGJvdGgKICAgICAqIGV4aXN0cy4KICAgICAqCiAgICAgKiBJZiBuZWl0aGVyIGV4aXN0cywgcmV0dXJucyBhbiBlbXB0eSBsaXN0LgogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHRyeVBhdGgoc3RyaW5nICRwYXRoKTogYXJyYXkKICAgIHsKICAgICAgICAkcGFydGlhbCA9IFBhdGg6OmpvaW4oZGlybmFtZSgkcGF0aCksICdfJyAuIGJhc2VuYW1lKCRwYXRoKSk7CiAgICAgICAgJGNhbmRpZGF0ZXMgPSBbXTsKCiAgICAgICAgaWYgKGlzX2ZpbGUoJHBhcnRpYWwpKSB7CiAgICAgICAgICAgICRjYW5kaWRhdGVzW10gPSAkcGFydGlhbDsKICAgICAgICB9CgogICAgICAgIGlmIChpc19maWxlKCRwYXRoKSkgewogICAgICAgICAgICAkY2FuZGlkYXRlc1tdID0gJHBhdGg7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNhbmRpZGF0ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBpbmRleCBmaWxlIGZvciAkcGF0aCBpZiAkcGF0aCBpcyBhIGRpcmVjdG9yeSBhbmQgdGhlCiAgICAgKiBpbmRleCBmaWxlIGV4aXN0cy4KICAgICAqCiAgICAgKiBPdGhlcndpc2UsIHJldHVybnMgYG51bGxgLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0cnlQYXRoQXNEaXJlY3Rvcnkoc3RyaW5nICRwYXRoKTogP3N0cmluZwogICAgewogICAgICAgIGlmICghaXNfZGlyKCRwYXRoKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjppZkluSW1wb3J0KGZuICgpID0+IHNlbGY6OmV4YWN0bHlPbmUoc2VsZjo6dHJ5UGF0aFdpdGhFeHRlbnNpb25zKFBhdGg6OmpvaW4oJHBhdGgsICdpbmRleC5pbXBvcnQnKSkpKQogICAgICAgICAgICA/PyBzZWxmOjpleGFjdGx5T25lKHNlbGY6OnRyeVBhdGhXaXRoRXh0ZW5zaW9ucyhQYXRoOjpqb2luKCRwYXRoLCAnaW5kZXgnKSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkcGF0aHMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZXhhY3RseU9uZShhcnJheSAkcGF0aHMpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkcGF0aHMpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxjb3VudCgkcGF0aHMpID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkcGF0aHNbMF07CiAgICAgICAgfQoKICAgICAgICAkZm9ybWF0dGVkUHJldHR5UGF0aHMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHBhdGhzIGFzICRwYXRoKSB7CiAgICAgICAgICAgICRmb3JtYXR0ZWRQcmV0dHlQYXRoc1tdID0gJyAgJyAuIFBhdGg6OnByZXR0eVVyaSgkcGF0aCk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbigiSXQncyBub3QgY2xlYXIgd2hpY2ggZmlsZSB0byBpbXBvcnQuIEZvdW5kOlxuIiAuIGltcGxvZGUoIlxuIiwgJGZvcm1hdHRlZFByZXR0eVBhdGhzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiB7QHNlZSBJbXBvcnRDb250ZXh0Ojppc0Zyb21JbXBvcnR9IGlzIGB0cnVlYCwgaW52b2tlcyBjYWxsYmFjayBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LgogICAgICoKICAgICAqIE90aGVyd2lzZSwgcmV0dXJucyBgbnVsbGAuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqIEByZXR1cm4gVHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlmSW5JbXBvcnQoY2FsbGFibGUgJGNhbGxiYWNrKQogICAgewogICAgICAgIGlmIChJbXBvcnRDb250ZXh0Ojppc0Zyb21JbXBvcnQoKSkgewogICAgICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/LegacyCallbackImporter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFBhdGg7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBMZWdhY3lDYWxsYmFja0ltcG9ydGVyIGV4dGVuZHMgSW1wb3J0ZXIKewogICAgcHJpdmF0ZSByZWFkb25seSBcQ2xvc3VyZSAkY2FsbGJhY2s7CiAgICBwcml2YXRlIHJlYWRvbmx5IEltcG9ydGVyICRmaWxlc3lzdGVtSW1wb3J0ZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXENsb3N1cmUoc3RyaW5nKTogKHN0cmluZ3xudWxsKSAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFxDbG9zdXJlICRjYWxsYmFjaykKICAgIHsKICAgICAgICAkdGhpcy0+Y2FsbGJhY2sgPSAkY2FsbGJhY2s7CiAgICAgICAgJHRoaXMtPmZpbGVzeXN0ZW1JbXBvcnRlciA9IG5ldyBGaWxlc3lzdGVtSW1wb3J0ZXIobnVsbCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShVcmlJbnRlcmZhY2UgJHVybCk6ID9VcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHVybC0+Z2V0U2NoZW1lKCkgPT09ICdmaWxlJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZpbGVzeXN0ZW1JbXBvcnRlci0+Y2Fub25pY2FsaXplKCR1cmwpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9ICgkdGhpcy0+Y2FsbGJhY2spKChzdHJpbmcpICR1cmwpOwoKICAgICAgICBpZiAoJHJlc3VsdCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRyZXN1bHRVcmwgPSBQYXRoOjp0b1VyaSgkcmVzdWx0KTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5maWxlc3lzdGVtSW1wb3J0ZXItPmNhbm9uaWNhbGl6ZSgkcmVzdWx0VXJsKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZChVcmlJbnRlcmZhY2UgJHVybCk6ID9JbXBvcnRlclJlc3VsdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmlsZXN5c3RlbUltcG9ydGVyLT5sb2FkKCR1cmwpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VsZENhbm9uaWNhbGl6ZShVcmlJbnRlcmZhY2UgJHVybCwgVXJpSW50ZXJmYWNlICRjYW5vbmljYWxVcmwpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5maWxlc3lzdGVtSW1wb3J0ZXItPmNvdWxkQ2Fub25pY2FsaXplKCR1cmwsICRjYW5vbmljYWxVcmwpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnTGVnYWN5Q2FsbGJhY2tJbXBvcnRlcic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/NoOpImporter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCi8qKgogKiBBbiBpbXBvcnRlciB0aGF0IG5ldmVyIGltcG9ydHMgYW55IHN0eWxlc2hlZXRzLgogKgogKiBUaGlzIGlzIHVzZWQgZm9yIHN0eWxlc2hlZXRzIHdoaWNoIGRvbid0IHN1cHBvcnQgcmVsYXRpdmUgaW1wb3J0cywgc3VjaCBhcwogKiB0aG9zZSBjcmVhdGVkIGZyb20gUEhQIGNvZGUgd2l0aCBwbGFpbiBzdHJpbmdzLgogKi8KZmluYWwgY2xhc3MgTm9PcEltcG9ydGVyIGV4dGVuZHMgSW1wb3J0ZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShVcmlJbnRlcmZhY2UgJHVybCk6ID9VcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZChVcmlJbnRlcmZhY2UgJHVybCk6ID9JbXBvcnRlclJlc3VsdAogICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VsZENhbm9uaWNhbGl6ZShVcmlJbnRlcmZhY2UgJHVybCwgVXJpSW50ZXJmYWNlICRjYW5vbmljYWxVcmwpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnKHVua25vd24pJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Importer/SpecialCacheValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEltcG9ydGVyOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZW51bSBTcGVjaWFsQ2FjaGVWYWx1ZQp7CiAgICBjYXNlIG51bGw7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Logger/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Logger/DeprecationProcessingLogger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRGVwcmVjYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NTY3JpcHRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNpbXBsZVNhc3NFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNpbXBsZVNhc3NSdW50aW1lRXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFN0YWNrVHJhY2VcVHJhY2U7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwp1c2UgU291cmNlU3BhblxTb3VyY2VTcGFuOwoKLyoqCiAqIEEgbG9nZ2VyIHRoYXQgd3JhcHMgYW4gaW5uZXIgbG9nZ2VyIHRvIGhhdmUgc3BlY2lhbCBoYW5kbGluZyBmb3IKICogZGVwcmVjYXRpb24gd2FybmluZ3MsIHNpbGVuY2luZywgbWFraW5nIGZhdGFsLCBlbmFibGluZyBmdXR1cmUsIGFuZC9vcgogKiBsaW1pdGluZyByZXBldGl0aW9uIGJhc2VkIG9uIGl0cyBpbnB1dHMuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRGVwcmVjYXRpb25Qcm9jZXNzaW5nTG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VySW50ZXJmYWNlCnsKICAgIHByaXZhdGUgY29uc3QgTUFYX1JFUEVUSVRJT05TID0gNTsKCiAgICAvKioKICAgICAqIEEgbWFwIG9mIGhvdyBtYW55IHRpbWVzIGVhY2ggZGVwcmVjYXRpb24gaGFzIGJlZW4gZW1pdHRlZCBieSB0aGlzIGxvZ2dlci4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHZhbHVlLW9mPERlcHJlY2F0aW9uPiwgaW50PgogICAgICovCiAgICBwcml2YXRlIGFycmF5ICR3YXJuaW5nQ291bnRzID0gW107CgogICAgLyoqCiAgICAgKiBEZXByZWNhdGlvbiB3YXJuaW5ncyBvZiB0aGVzZSB0eXBlcyB3aWxsIGJlIGlnbm9yZWQuCiAgICAgKgogICAgICogQHZhciBEZXByZWNhdGlvbltdCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJHNpbGVuY2VEZXByZWNhdGlvbnM7CgogICAgLyoqCiAgICAgKiBEZXByZWNhdGlvbiB3YXJuaW5ncyBvZiBvbmUgb2YgdGhlc2UgdHlwZXMgd2lsbCBjYXVzZSBhbiBlcnJvciB0byBiZQogICAgICogdGhyb3duLgogICAgICoKICAgICAqIEZ1dHVyZSBkZXByZWNhdGlvbnMgaW4gdGhpcyBsaXN0IHdpbGwgc3RpbGwgY2F1c2UgYW4gZXJyb3IgZXZlbiBpZiB0aGV5CiAgICAgKiBhcmUgbm90IGFsc28gaW4ge0BzZWUgJGZ1dHVyZURlcHJlY2F0aW9uc30uCiAgICAgKgogICAgICogQHZhciBEZXByZWNhdGlvbltdCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJGZhdGFsRGVwcmVjYXRpb25zOwoKICAgIC8qKgogICAgICogRnV0dXJlIGRlcHJlY2F0aW9ucyB0aGF0IHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IG9wdGVkIGludG8uCiAgICAgKgogICAgICogQHZhciBEZXByZWNhdGlvbltdCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJGZ1dHVyZURlcHJlY2F0aW9uczsKCiAgICAvKioKICAgICAqIEBwYXJhbSBEZXByZWNhdGlvbltdICRzaWxlbmNlRGVwcmVjYXRpb25zCiAgICAgKiBAcGFyYW0gRGVwcmVjYXRpb25bXSAkZmF0YWxEZXByZWNhdGlvbnMKICAgICAqIEBwYXJhbSBEZXByZWNhdGlvbltdICRmdXR1cmVEZXByZWNhdGlvbnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgTG9nZ2VySW50ZXJmYWNlICRpbm5lciwKICAgICAgICBhcnJheSAkc2lsZW5jZURlcHJlY2F0aW9ucywKICAgICAgICBhcnJheSAkZmF0YWxEZXByZWNhdGlvbnMsCiAgICAgICAgYXJyYXkgJGZ1dHVyZURlcHJlY2F0aW9ucywKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGxpbWl0UmVwZXRpdGlvbiA9IHRydWUsCiAgICApIHsKICAgICAgICAkdGhpcy0+c2lsZW5jZURlcHJlY2F0aW9ucyA9ICRzaWxlbmNlRGVwcmVjYXRpb25zOwogICAgICAgICR0aGlzLT5mdXR1cmVEZXByZWNhdGlvbnMgPSAkZnV0dXJlRGVwcmVjYXRpb25zOwogICAgICAgICR0aGlzLT5mYXRhbERlcHJlY2F0aW9ucyA9ICRmYXRhbERlcHJlY2F0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIFdhcm5zIGlmIGFueSBvZiB0aGUgZGVwcmVjYXRpb25zIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZSBvciB1bm5lY2Vzc2FyeS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCk6IHZvaWQKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZmF0YWxEZXByZWNhdGlvbnMgYXMgJGRlcHJlY2F0aW9uKSB7CiAgICAgICAgICAgIGlmICgkZGVwcmVjYXRpb24tPmlzRnV0dXJlKCkgJiYgIVxpbl9hcnJheSgkZGVwcmVjYXRpb24sICR0aGlzLT5mdXR1cmVEZXByZWNhdGlvbnMsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2FybigiRnV0dXJlICRkZXByZWNhdGlvbi0+dmFsdWUgZGVwcmVjYXRpb24gbXVzdCBiZSBlbmFibGVkIGJlZm9yZSBpdCBjYW4gYmUgbWFkZSBmYXRhbC4iKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRkZXByZWNhdGlvbi0+Z2V0T2Jzb2xldGVJbigpICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2FybigiJGRlcHJlY2F0aW9uLT52YWx1ZSBkZXByZWNhdGlvbiBpcyBvYnNvbGV0ZSwgc28gZG9lcyBub3QgbmVlZCB0byBiZSBtYWRlIGZhdGFsLiIpOwogICAgICAgICAgICB9IGVsc2VpZiAoXGluX2FycmF5KCRkZXByZWNhdGlvbiwgJHRoaXMtPnNpbGVuY2VEZXByZWNhdGlvbnMsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2FybigiSWdub3Jpbmcgc2V0dGluZyB0byBzaWxlbmNlICRkZXByZWNhdGlvbi0+dmFsdWUgZGVwcmVjYXRpb24sIHNpbmNlIGl0IGhhcyBhbHNvIGJlZW4gbWFkZSBmYXRhbC4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnNpbGVuY2VEZXByZWNhdGlvbnMgYXMgJGRlcHJlY2F0aW9uKSB7CiAgICAgICAgICAgIGlmICgkZGVwcmVjYXRpb24gPT09IERlcHJlY2F0aW9uOjp1c2VyQXV0aG9yZWQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53YXJuKCdVc2VyLWF1dGhvcmVkIGRlcHJlY2F0aW9ucyBzaG91bGQgbm90IGJlIHNpbGVuY2VkLicpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGRlcHJlY2F0aW9uLT5nZXRPYnNvbGV0ZUluKCkgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53YXJuKCIkZGVwcmVjYXRpb24tPnZhbHVlIGRlcHJlY2F0aW9uIGlzIG9ic29sZXRlLiBJZiB5b3Ugd2VyZSBwcmV2aW91c2x5IHNpbGVuY2luZyBpdCwgeW91ciBjb2RlIG1heSBub3cgYmVoYXZlIGluIHVuZXhwZWN0ZWQgd2F5cy4iKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRkZXByZWNhdGlvbi0+aXNGdXR1cmUoKSAmJiBcaW5fYXJyYXkoJGRlcHJlY2F0aW9uLCAkdGhpcy0+ZnV0dXJlRGVwcmVjYXRpb25zLCB0cnVlKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndhcm4oIkNvbmZsaWN0aW5nIG9wdGlvbnMgZm9yIGZ1dHVyZSAkZGVwcmVjYXRpb24tPnZhbHVlIGRlcHJlY2F0aW9uIGNhbmNlbCBlYWNoIG90aGVyIG91dC4iKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRkZXByZWNhdGlvbi0+aXNGdXR1cmUoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndhcm4oIkZ1dHVyZSAkZGVwcmVjYXRpb24tPnZhbHVlIGRlcHJlY2F0aW9uIGlzIG5vdCB5ZXQgYWN0aXZlLCBzbyBzaWxlbmNpbmcgaXQgaXMgdW5uZWNlc3NhcnkuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mdXR1cmVEZXByZWNhdGlvbnMgYXMgJGRlcHJlY2F0aW9uKSB7CiAgICAgICAgICAgIGlmICghJGRlcHJlY2F0aW9uLT5pc0Z1dHVyZSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2FybigiJGRlcHJlY2F0aW9uLT52YWx1ZSBpcyBub3QgYSBmdXR1cmUgZGVwcmVjYXRpb24sIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgZXhwbGljaXRseSBlbmFibGVkLiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YXJuKHN0cmluZyAkbWVzc2FnZSwgP0RlcHJlY2F0aW9uICRkZXByZWNhdGlvbiA9IG51bGwsID9GaWxlU3BhbiAkc3BhbiA9IG51bGwsID9UcmFjZSAkdHJhY2UgPSBudWxsKTogdm9pZAogICAgewogICAgICAgIGlmICgkZGVwcmVjYXRpb24gIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmhhbmRsZURlcHJlY2F0aW9uKCRkZXByZWNhdGlvbiwgJG1lc3NhZ2UsICRzcGFuLCAkdHJhY2UpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5pbm5lci0+d2FybigkbWVzc2FnZSwgJGRlcHJlY2F0aW9uLCAkc3BhbiwgJHRyYWNlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBQcm9jZXNzZXMgYSBkZXByZWNhdGlvbiB3YXJuaW5nLgogICAgICoKICAgICAqIElmICRkZXByZWNhdGlvbiBpcyBpbiB7QHNlZSAkZmF0YWxEZXByZWNhdGlvbnN9LCB0aGlzIHNob3dzIGFuIGVycm9yLgogICAgICoKICAgICAqIElmIGl0J3MgYSBmdXR1cmUgZGVwcmVjYXRpb24gdGhhdCBoYXNuJ3QgYmVlbiBvcHRlZCBpbnRvIG9yIGl0J3MgYQogICAgICogZGVwcmVjYXRpb24gdGhhdCdzIGFscmVhZHkgYmVlbiB3YXJuZWQgZm9yIHtAc2VlIHNlbGY6Ok1BWF9SRVBFVElUSU9OU30gdGltZXMgYW5kCiAgICAgKiB7QHNlZSBsaW1pdFJlcGV0aXRpb25zfSBpcyB0cnVlLCB0aGUgd2FybmluZyBpcyBkcm9wcGVkLgogICAgICoKICAgICAqIE90aGVyd2lzZSwgdGhpcyBpcyBwYXNzZWQgb24gdG8ge0BzZWUgd2Fybn0uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaGFuZGxlRGVwcmVjYXRpb24oRGVwcmVjYXRpb24gJGRlcHJlY2F0aW9uLCBzdHJpbmcgJG1lc3NhZ2UsID9GaWxlU3BhbiAkc3BhbiA9IG51bGwsID9UcmFjZSAkdHJhY2UgPSBudWxsKTogdm9pZAogICAgewogICAgICAgIGlmICgkZGVwcmVjYXRpb24tPmlzRnV0dXJlKCkgJiYgIVxpbl9hcnJheSgkZGVwcmVjYXRpb24sICR0aGlzLT5mdXR1cmVEZXByZWNhdGlvbnMsIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmIChcaW5fYXJyYXkoJGRlcHJlY2F0aW9uLCAkdGhpcy0+ZmF0YWxEZXByZWNhdGlvbnMsIHRydWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlIC49ICJcblxuVGhpcyBpcyBvbmx5IGFuIGVycm9yIGJlY2F1c2UgeW91J3ZlIHNldCB0aGUgeyRkZXByZWNhdGlvbi0+dmFsdWV9IGRlcHJlY2F0aW9uIHRvIGJlIGZhdGFsLlxuUmVtb3ZlIHRoaXMgc2V0dGluZyBpZiB5b3UgbmVlZCB0byBrZWVwIHVzaW5nIHRoaXMgZmVhdHVyZS4iOwoKICAgICAgICAgICAgaWYgKCRzcGFuICE9PSBudWxsICYmICR0cmFjZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNpbXBsZVNhc3NSdW50aW1lRXhjZXB0aW9uKCRtZXNzYWdlLCAkc3BhbiwgJHRyYWNlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRzcGFuICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2ltcGxlU2Fzc0V4Y2VwdGlvbigkbWVzc2FnZSwgJHNwYW4pOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigkbWVzc2FnZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGluX2FycmF5KCRkZXByZWNhdGlvbiwgJHRoaXMtPnNpbGVuY2VEZXByZWNhdGlvbnMsIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+bGltaXRSZXBldGl0aW9uKSB7CiAgICAgICAgICAgICRjb3VudCA9ICR0aGlzLT53YXJuaW5nQ291bnRzWyRkZXByZWNhdGlvbi0+dmFsdWVdID0gKCR0aGlzLT53YXJuaW5nQ291bnRzWyRkZXByZWNhdGlvbi0+dmFsdWVdID8/IDApICsgMTsKCiAgICAgICAgICAgIGlmICgkY291bnQgPiBzZWxmOjpNQVhfUkVQRVRJVElPTlMpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmlubmVyLT53YXJuKCRtZXNzYWdlLCAkZGVwcmVjYXRpb24sICRzcGFuLCAkdHJhY2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZWJ1ZyhzdHJpbmcgJG1lc3NhZ2UsIFNvdXJjZVNwYW4gJHNwYW4pOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmlubmVyLT5kZWJ1ZygkbWVzc2FnZSwgJHNwYW4pOwogICAgfQoKICAgIC8qKgogICAgICogUHJpbnRzIGEgd2FybmluZyBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZGVwcmVjYXRpb24gd2FybmluZ3MgdGhhdCB3ZXJlCiAgICAgKiBvbWl0dGVkIGR1ZSB0byByZXBldGl0aW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3VtbWFyaXplKCk6IHZvaWQKICAgIHsKICAgICAgICAkdG90YWwgPSAwOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+d2FybmluZ0NvdW50cyBhcyAkY291bnQpIHsKICAgICAgICAgICAgaWYgKCRjb3VudCA+IHNlbGY6Ok1BWF9SRVBFVElUSU9OUykgewogICAgICAgICAgICAgICAgJHRvdGFsICs9ICRjb3VudCAtIHNlbGY6Ok1BWF9SRVBFVElUSU9OUzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCR0b3RhbCA+IDApIHsKICAgICAgICAgICAgJHRoaXMtPmlubmVyLT53YXJuKCIkdG90YWwgcmVwZXRpdGl2ZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBvbWl0dGVkLlxuUnVuIGluIHZlcmJvc2UgbW9kZSB0byBzZWUgYWxsIHdhcm5pbmdzLiIpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Logger/LoggerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRGVwcmVjYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CnVzZSBTb3VyY2VTcGFuXFNvdXJjZVNwYW47CgovKioKICogSW50ZXJmYWNlIGltcGxlbWVudGVkIGJ5IGxvZ2dlcnMgZm9yIHdhcm5pbmdzIGFuZCBkZWJ1ZyBtZXNzYWdlcy4KICoKICogVGhlIG9mZmljaWFsIFNhc3MgaW1wbGVtZW50YXRpb24gcmVjb21tZW5kcyB0aGF0IGxvZ2dlcnMgcmVwb3J0IHRoZQogKiBtZXNzYWdlcyBpbW1lZGlhdGVseSByYXRoZXIgdGhhbiB3YWl0aW5nIGZvciB0aGUgZW5kIG9mIHRoZQogKiBjb21waWxhdGlvbiwgdG8gcHJvdmlkZSBhIGJldHRlciBkZWJ1Z2dpbmcgZXhwZXJpZW5jZSB3aGVuIHRoZQogKiBjb21waWxhdGlvbiBkb2VzIG5vdCBlbmQgKGVycm9yIG9yIGluZmluaXRlIGxvb3AgYWZ0ZXIgdGhlIHdhcm5pbmcKICogZm9yIGluc3RhbmNlKS4KICovCmludGVyZmFjZSBMb2dnZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBFbWl0cyBhIHdhcm5pbmcgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS4KICAgICAqCiAgICAgKiBJZiAkc3BhbiBpcyBwYXNzZWQsIGl0J3MgdGhlIGxvY2F0aW9uIGluIHRoZSBTYXNzIHNvdXJjZSB0aGF0IGdlbmVyYXRlZAogICAgICogdGhlIHdhcm5pbmcuIElmICR0cmFjZSBpcyBwYXNzZWQsIGl0J3MgdGhlIFNhc3Mgc3RhY2sgdHJhY2Ugd2hlbiB0aGUKICAgICAqIHdhcm5pbmcgd2FzIGlzc3VlZC4KICAgICAqIElmICRkZXByZWNhdGlvbiBpcyBub24tbnVsbCwgaXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBhIGRlcHJlY2F0aW9uCiAgICAgKiB3YXJuaW5nLiBJbXBsZW1lbnRhdGlvbnMgc2hvdWxkIHN1cmZhY2UgYWxsIHRoaXMgaW5mb3JtYXRpb24gdG8KICAgICAqIHRoZSBlbmQgdXNlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdhcm4oc3RyaW5nICRtZXNzYWdlLCA/RGVwcmVjYXRpb24gJGRlcHJlY2F0aW9uID0gbnVsbCwgP0ZpbGVTcGFuICRzcGFuID0gbnVsbCwgP1RyYWNlICR0cmFjZSA9IG51bGwpOiB2b2lkOwoKICAgIC8qKgogICAgICogRW1pdHMgYSBkZWJ1Z2dpbmcgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHNwYW4uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWJ1ZyhzdHJpbmcgJG1lc3NhZ2UsIFNvdXJjZVNwYW4gJHNwYW4pOiB2b2lkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Logger/QuietLogger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRGVwcmVjYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CnVzZSBTb3VyY2VTcGFuXFNvdXJjZVNwYW47CgovKioKICogQSBsb2dnZXIgdGhhdCBzaWxlbnRseSBpZ25vcmVzIGFsbCBtZXNzYWdlcy4KICovCmZpbmFsIGNsYXNzIFF1aWV0TG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VySW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB3YXJuKHN0cmluZyAkbWVzc2FnZSwgP0RlcHJlY2F0aW9uICRkZXByZWNhdGlvbiA9IG51bGwsID9GaWxlU3BhbiAkc3BhbiA9IG51bGwsID9UcmFjZSAkdHJhY2UgPSBudWxsKTogdm9pZAogICAgewogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZWJ1ZyhzdHJpbmcgJG1lc3NhZ2UsIFNvdXJjZVNwYW4gJHNwYW4pOiB2b2lkCiAgICB7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Logger/StreamLogger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRGVwcmVjYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcU3RhY2tUcmFjZVxUcmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcUGF0aDsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CnVzZSBTb3VyY2VTcGFuXFNvdXJjZVNwYW47CgovKioKICogQSBsb2dnZXIgdGhhdCBwcmludHMgdG8gYSBQSFAgc3RyZWFtIChmb3IgaW5zdGFuY2Ugc3RkZXJyKQogKi8KZmluYWwgY2xhc3MgU3RyZWFtTG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciByZXNvdXJjZQogICAgICovCiAgICBwcml2YXRlICRzdHJlYW07CiAgICBwcml2YXRlIGJvb2wgJGNsb3NlT25EZXN0cnVjdDsKCiAgICAvKioKICAgICAqIEBwYXJhbSByZXNvdXJjZSAkc3RyZWFtICAgICAgICAgIEEgc3RyZWFtIHJlc291cmNlCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgJGNsb3NlT25EZXN0cnVjdCBJZiB0cnVlLCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHN0cmVhbSBhbmQgY2xvc2UgaXQgb24gZGVzdHJ1Y3QgdG8gYXZvaWQgbGVha3MuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyZWFtLCBib29sICRjbG9zZU9uRGVzdHJ1Y3QgPSBmYWxzZSkKICAgIHsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHN0cmVhbTsKICAgICAgICAkdGhpcy0+Y2xvc2VPbkRlc3RydWN0ID0gJGNsb3NlT25EZXN0cnVjdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jbG9zZU9uRGVzdHJ1Y3QpIHsKICAgICAgICAgICAgZmNsb3NlKCR0aGlzLT5zdHJlYW0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FybihzdHJpbmcgJG1lc3NhZ2UsID9EZXByZWNhdGlvbiAkZGVwcmVjYXRpb24gPSBudWxsLCA/RmlsZVNwYW4gJHNwYW4gPSBudWxsLCA/VHJhY2UgJHRyYWNlID0gbnVsbCk6IHZvaWQKICAgIHsKICAgICAgICAkcHJlZml4ID0gKCRkZXByZWNhdGlvbiAhPT0gbnVsbCA/ICdERVBSRUNBVElPTiAnIDogJycpIC4gJ1dBUk5JTkcnOwoKICAgICAgICBpZiAoJHNwYW4gPT09IG51bGwpIHsKICAgICAgICAgICAgJGZvcm1hdHRlZE1lc3NhZ2UgPSAnOiAnIC4gJG1lc3NhZ2U7CiAgICAgICAgfSBlbHNlaWYgKCR0cmFjZSAhPT0gbnVsbCkgewogICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGEgc3BhbiBhbmQgYSB0cmFjZSwgdGhlIHNwYW4ncyBsb2NhdGlvbiBpbmZvcm1hdGlvbiBpcwogICAgICAgICAgICAvLyBwcm9iYWJseSBkdXBsaWNhdGVkIGluIHRoZSB0cmFjZSwgc28gd2UganVzdCB1c2UgaXQgZm9yIGhpZ2hsaWdodGluZy4KICAgICAgICAgICAgJGZvcm1hdHRlZE1lc3NhZ2UgPSAnOiAnIC4gJG1lc3NhZ2UgLiAiXG5cbiIgLiAkc3Bhbi0+aGlnaGxpZ2h0KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGZvcm1hdHRlZE1lc3NhZ2UgPSAnIG9uICcgLiAkc3Bhbi0+bWVzc2FnZSgiXG4iIC4gJG1lc3NhZ2UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0cmFjZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkZm9ybWF0dGVkTWVzc2FnZSAuPSAiXG4iIC4gVXRpbDo6aW5kZW50KHJ0cmltKCR0cmFjZS0+Z2V0Rm9ybWF0dGVkVHJhY2UoKSksIDQpOwogICAgICAgIH0KCiAgICAgICAgZndyaXRlKCR0aGlzLT5zdHJlYW0sICRwcmVmaXggLiAkZm9ybWF0dGVkTWVzc2FnZSAuICJcblxuIik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlYnVnKHN0cmluZyAkbWVzc2FnZSwgU291cmNlU3BhbiAkc3Bhbik6IHZvaWQKICAgIHsKICAgICAgICAkdXJsID0gJHNwYW4tPmdldFN0YXJ0KCktPmdldFNvdXJjZVVybCgpID09PSBudWxsID8gJy0nIDogUGF0aDo6cHJldHR5VXJpKCRzcGFuLT5nZXRTdGFydCgpLT5nZXRTb3VyY2VVcmwoKSk7CiAgICAgICAgJGxpbmUgPSAkc3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0TGluZSgpICsgMTsKICAgICAgICAkbG9jYXRpb24gPSAiJHVybDokbGluZSAiOwoKICAgICAgICBmd3JpdGUoJHRoaXMtPnN0cmVhbSwgXHNwcmludGYoIiVzREVCVUc6ICVzIiwgJGxvY2F0aW9uLCAkbWVzc2FnZSkgLiAiXG4iKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Node.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIEJhc2Ugbm9kZQogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KYWJzdHJhY3QgY2xhc3MgTm9kZQp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkdHlwZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHB1YmxpYyAkc291cmNlSW5kZXg7CgogICAgLyoqCiAgICAgKiBAdmFyIGludHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkc291cmNlTGluZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHVibGljICRzb3VyY2VDb2x1bW47Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Node/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Node/Number.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXE5vZGU7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzU2NyaXB0RXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXE5vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVHlwZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXE51bWJlclV0aWw7CgovKioKICogRGltZW5zaW9uICsgb3B0aW9uYWwgdW5pdHMKICoKICoge0BpbnRlcm5hbAogKiAgICAgVGhpcyBpcyBhIHdvcmstaW4tcHJvZ3Jlc3MuCiAqCiAqICAgICBUaGUgXEFycmF5QWNjZXNzIGludGVyZmFjZSBpcyB0ZW1wb3JhcnkgdW50aWwgdGhlIG1pZ3JhdGlvbiBpcyBjb21wbGV0ZS4KICogfX0KICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKgogKiBAdGVtcGxhdGUtaW1wbGVtZW50cyBcQXJyYXlBY2Nlc3M8aW50LCBtaXhlZD4KICovCmZpbmFsIGNsYXNzIE51bWJlciBleHRlbmRzIE5vZGUgaW1wbGVtZW50cyBcQXJyYXlBY2Nlc3MsIFxKc29uU2VyaWFsaXphYmxlCnsKICAgIGNvbnN0IFBSRUNJU0lPTiA9IDEwOwoKICAgIC8qKgogICAgICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEyL1dELWNzczMtdmFsdWVzLTIwMTIwMzA4LwogICAgICoKICAgICAqIEB2YXIgYXJyYXkKICAgICAqIEBwaHBzdGFuLXZhciBhcnJheTxzdHJpbmcsIGFycmF5PHN0cmluZywgZmxvYXR8aW50Pj4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJHVuaXRUYWJsZSA9IFsKICAgICAgICAnaW4nID0+IFsKICAgICAgICAgICAgJ2luJyA9PiAxLAogICAgICAgICAgICAncGMnID0+IDYsCiAgICAgICAgICAgICdwdCcgPT4gNzIsCiAgICAgICAgICAgICdweCcgPT4gOTYsCiAgICAgICAgICAgICdjbScgPT4gMi41NCwKICAgICAgICAgICAgJ21tJyA9PiAyNS40LAogICAgICAgICAgICAncScgID0+IDEwMS42LAogICAgICAgIF0sCiAgICAgICAgJ3R1cm4nID0+IFsKICAgICAgICAgICAgJ2RlZycgID0+IDM2MCwKICAgICAgICAgICAgJ2dyYWQnID0+IDQwMCwKICAgICAgICAgICAgJ3JhZCcgID0+IDYuMjgzMTg1MzA3MTc5NTg2NDc2OTI1Mjg2NzYsIC8vIDIgKiBNX1BJCiAgICAgICAgICAgICd0dXJuJyA9PiAxLAogICAgICAgIF0sCiAgICAgICAgJ3MnID0+IFsKICAgICAgICAgICAgJ3MnICA9PiAxLAogICAgICAgICAgICAnbXMnID0+IDEwMDAsCiAgICAgICAgXSwKICAgICAgICAnSHonID0+IFsKICAgICAgICAgICAgJ0h6JyAgPT4gMSwKICAgICAgICAgICAgJ2tIeicgPT4gMC4wMDEsCiAgICAgICAgXSwKICAgICAgICAnZHBpJyA9PiBbCiAgICAgICAgICAgICdkcGknICA9PiAxLAogICAgICAgICAgICAnZHBjbScgPT4gMSAvIDIuNTQsCiAgICAgICAgICAgICdkcHB4JyA9PiAxIC8gOTYsCiAgICAgICAgXSwKICAgIF07CgogICAgLyoqCiAgICAgKiBAdmFyIGludHxmbG9hdAogICAgICovCiAgICBwcml2YXRlICRkaW1lbnNpb247CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ1tdCiAgICAgKiBAcGhwc3Rhbi12YXIgbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgJG51bWVyYXRvclVuaXRzOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmdbXQogICAgICogQHBocHN0YW4tdmFyIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlICRkZW5vbWluYXRvclVuaXRzOwoKICAgIC8qKgogICAgICogSW5pdGlhbGl6ZSBudW1iZXIKICAgICAqCiAgICAgKiBAcGFyYW0gaW50fGZsb2F0ICAgICAgICRkaW1lbnNpb24KICAgICAqIEBwYXJhbSBzdHJpbmdbXXxzdHJpbmcgJG51bWVyYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gICAgICAgICRkZW5vbWluYXRvclVuaXRzCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxzdHJpbmc+fHN0cmluZyAkbnVtZXJhdG9yVW5pdHMKICAgICAqIEBwaHBzdGFuLXBhcmFtIGxpc3Q8c3RyaW5nPiAgICAgICAgJGRlbm9taW5hdG9yVW5pdHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkaW1lbnNpb24sICRudW1lcmF0b3JVbml0cywgYXJyYXkgJGRlbm9taW5hdG9yVW5pdHMgPSBbXSkKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRudW1lcmF0b3JVbml0cykpIHsKICAgICAgICAgICAgJG51bWVyYXRvclVuaXRzID0gJG51bWVyYXRvclVuaXRzID8gWyRudW1lcmF0b3JVbml0c10gOiBbXTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJG51bWVyYXRvclVuaXRzWydudW1lcmF0b3JfdW5pdHMnXSwgJG51bWVyYXRvclVuaXRzWydkZW5vbWluYXRvcl91bml0cyddKSkgewogICAgICAgICAgICAkZGVub21pbmF0b3JVbml0cyA9ICRudW1lcmF0b3JVbml0c1snZGVub21pbmF0b3JfdW5pdHMnXTsKICAgICAgICAgICAgJG51bWVyYXRvclVuaXRzID0gJG51bWVyYXRvclVuaXRzWydudW1lcmF0b3JfdW5pdHMnXTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5kaW1lbnNpb24gPSAkZGltZW5zaW9uOwogICAgICAgICR0aGlzLT5udW1lcmF0b3JVbml0cyA9ICRudW1lcmF0b3JVbml0czsKICAgICAgICAkdGhpcy0+ZGVub21pbmF0b3JVbml0cyA9ICRkZW5vbWluYXRvclVuaXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBmbG9hdHxpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERpbWVuc2lvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kaW1lbnNpb247CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtZXJhdG9yVW5pdHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yVW5pdHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGVub21pbmF0b3JVbml0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kZW5vbWluYXRvclVuaXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCkKICAgIHsKICAgICAgICAvLyBQYXNzaW5nIGEgY29tcGlsZXIgaW5zdGFuY2UgbWFrZXMgdGhlIG1ldGhvZCBvdXRwdXQgYSBTYXNzIHJlcHJlc2VudGF0aW9uIGluc3RlYWQgb2YgYSBDU1Mgb25lLCBzdXBwb3J0aW5nIGZ1bGwgdW5pdHMuCiAgICAgICAgcmV0dXJuICR0aGlzLT5vdXRwdXQobmV3IENvbXBpbGVyKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEV4aXN0cygkb2Zmc2V0KQogICAgewogICAgICAgIGlmICgkb2Zmc2V0ID09PSAtMykgewogICAgICAgICAgICByZXR1cm4gISBcaXNfbnVsbCgkdGhpcy0+c291cmNlQ29sdW1uKTsKICAgICAgICB9CgogICAgICAgIGlmICgkb2Zmc2V0ID09PSAtMikgewogICAgICAgICAgICByZXR1cm4gISBcaXNfbnVsbCgkdGhpcy0+c291cmNlTGluZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRvZmZzZXQgPT09IC0xIHx8CiAgICAgICAgICAgICRvZmZzZXQgPT09IDAgfHwKICAgICAgICAgICAgJG9mZnNldCA9PT0gMSB8fAogICAgICAgICAgICAkb2Zmc2V0ID09PSAyCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRHZXQoJG9mZnNldCkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRvZmZzZXQpIHsKICAgICAgICAgICAgY2FzZSAtMzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlQ29sdW1uOwoKICAgICAgICAgICAgY2FzZSAtMjoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlTGluZTsKCiAgICAgICAgICAgIGNhc2UgLTE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZUluZGV4OwoKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgcmV0dXJuIFR5cGU6OlRfTlVNQkVSOwoKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kaW1lbnNpb247CgogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkoJ251bWVyYXRvcl91bml0cycgPT4gJHRoaXMtPm51bWVyYXRvclVuaXRzLCAnZGVub21pbmF0b3JfdW5pdHMnID0+ICR0aGlzLT5kZW5vbWluYXRvclVuaXRzKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0U2V0KCRvZmZzZXQsICR2YWx1ZSkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oJ051bWJlciBpcyBpbW11dGFibGUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRVbnNldCgkb2Zmc2V0KQogICAgewogICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbignTnVtYmVyIGlzIGltbXV0YWJsZScpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgaXMgdW5pdGxlc3MKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuaXRsZXNzKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNvdW50KCR0aGlzLT5udW1lcmF0b3JVbml0cykgPT09IDAgJiYgXGNvdW50KCR0aGlzLT5kZW5vbWluYXRvclVuaXRzKSA9PT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgbnVtYmVyIGhhcyBhbnkgdW5pdHMKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1VuaXRzKCkKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT51bml0bGVzcygpOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIG51bWJlciBoYXMgZXhhY3RseSB0aGlzIHVuaXQKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNVbml0KCR1bml0KQogICAgewogICAgICAgIHJldHVybiBcY291bnQoJHRoaXMtPm51bWVyYXRvclVuaXRzKSA9PT0gMSAmJiBcY291bnQoJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpID09PSAwICYmICR0aGlzLT5udW1lcmF0b3JVbml0c1swXSA9PT0gJHVuaXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHVuaXQocykgYXMgdGhlIHByb2R1Y3Qgb2YgbnVtZXJhdG9yIHVuaXRzIGRpdmlkZWQgYnkgdGhlIHByb2R1Y3Qgb2YgZGVub21pbmF0b3IgdW5pdHMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5pdFN0cigpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpnZXRVbml0U3RyaW5nKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGZsb2F0fGludCAkbWluCiAgICAgKiBAcGFyYW0gZmxvYXR8aW50ICRtYXgKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsdWVJblJhbmdlKCRtaW4sICRtYXgsICRuYW1lID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gTnVtYmVyVXRpbDo6ZnV6enlDaGVja1JhbmdlKCR0aGlzLT5kaW1lbnNpb24sICRtaW4sICRtYXgpID8/IHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KHNwcmludGYoJ0V4cGVjdGVkICVzIHRvIGJlIHdpdGhpbiAlcyVzIGFuZCAlcyUzJHMuJywgJHRoaXMsICRtaW4sICR0aGlzLT51bml0U3RyKCksICRtYXgpLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gZmxvYXR8aW50ICRtaW4KICAgICAqIEBwYXJhbSBmbG9hdHxpbnQgJG1heAogICAgICogQHBhcmFtIHN0cmluZyAgICAkbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAgICAkdW5pdAogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsdWVJblJhbmdlV2l0aFVuaXQoJG1pbiwgJG1heCwgJG5hbWUsICR1bml0KQogICAgewogICAgICAgIHJldHVybiBOdW1iZXJVdGlsOjpmdXp6eUNoZWNrUmFuZ2UoJHRoaXMtPmRpbWVuc2lvbiwgJG1pbiwgJG1heCkgPz8gdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoc3ByaW50ZignRXhwZWN0ZWQgJXMgdG8gYmUgd2l0aGluICVzJXMgYW5kICVzJTMkcy4nLCAkdGhpcywgJG1pbiwgJHVuaXQsICRtYXgpLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHZhck5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE5vVW5pdHMoJHZhck5hbWUgPSBudWxsKQogICAgewogICAgICAgIGlmICgkdGhpcy0+dW5pdGxlc3MoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudChzcHJpbnRmKCdFeHBlY3RlZCAlcyB0byBoYXZlIG5vIHVuaXRzLicsICR0aGlzKSwgJHZhck5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICR1bml0CiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHZhck5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydFVuaXQoJHVuaXQsICR2YXJOYW1lID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmhhc1VuaXQoJHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KHNwcmludGYoJ0V4cGVjdGVkICVzIHRvIGhhdmUgdW5pdCAiJXMiLicsICR0aGlzLCAkdW5pdCksICR2YXJOYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBOdW1iZXIgJG90aGVyCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRTYW1lVW5pdE9yVW5pdGxlc3MoTnVtYmVyICRvdGhlcikKICAgIHsKICAgICAgICBpZiAoJG90aGVyLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+bnVtZXJhdG9yVW5pdHMgPT09ICRvdGhlci0+bnVtZXJhdG9yVW5pdHMgJiYgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMgPT09ICRvdGhlci0+ZGVub21pbmF0b3JVbml0cykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAnSW5jb21wYXRpYmxlIHVuaXRzICVzIGFuZCAlcy4nLAogICAgICAgICAgICBzZWxmOjpnZXRVbml0U3RyaW5nKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpLAogICAgICAgICAgICBzZWxmOjpnZXRVbml0U3RyaW5nKCRvdGhlci0+bnVtZXJhdG9yVW5pdHMsICRvdGhlci0+ZGVub21pbmF0b3JVbml0cykKICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIHRoaXMgbnVtYmVyLCBjb252ZXJ0ZWQgdG8gdGhlIHVuaXRzIHJlcHJlc2VudGVkIGJ5ICRuZXdOdW1lcmF0b3JVbml0cyBhbmQgJG5ld0Rlbm9taW5hdG9yVW5pdHMuCiAgICAgKgogICAgICogVGhpcyBkb2VzIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGlzIG51bWJlciBpcyB1bml0bGVzcyBhbmQKICAgICAqICRuZXdOdW1lcmF0b3JVbml0cy8kbmV3RGVub21pbmF0b3JVbml0cyBhcmUgbm90IGVtcHR5LCBvciB2aWNlIHZlcnNhLiBJbnN0ZWFkLAogICAgICogaXQgdHJlYXRzIGFsbCB1bml0bGVzcyBudW1iZXJzIGFzIGNvbnZlcnRpYmxlIHRvIGFuZCBmcm9tIGFsbCB1bml0cyB3aXRob3V0CiAgICAgKiBjaGFuZ2luZyB0aGUgdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRuZXdOdW1lcmF0b3JVbml0cwogICAgICogQHBhcmFtIHN0cmluZ1tdICRuZXdEZW5vbWluYXRvclVuaXRzCiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXIKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJG5ld051bWVyYXRvclVuaXRzCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJG5ld0Rlbm9taW5hdG9yVW5pdHMKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhpcyBudW1iZXIncyB1bml0cyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCAkbmV3TnVtZXJhdG9yVW5pdHMgYW5kICRuZXdEZW5vbWluYXRvclVuaXRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb2VyY2UoYXJyYXkgJG5ld051bWVyYXRvclVuaXRzLCBhcnJheSAkbmV3RGVub21pbmF0b3JVbml0cykKICAgIHsKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigkdGhpcy0+dmFsdWVJblVuaXRzKCRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMpLCAkbmV3TnVtZXJhdG9yVW5pdHMsICRuZXdEZW5vbWluYXRvclVuaXRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBOdW1iZXIgJG90aGVyCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0NvbXBhcmFibGVUbyhOdW1iZXIgJG90aGVyKQogICAgewogICAgICAgIGlmICgkdGhpcy0+dW5pdGxlc3MoKSB8fCAkb3RoZXItPnVuaXRsZXNzKCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+Z3JlYXRlclRoYW4oJG90aGVyKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBjYXRjaCAoU2Fzc1NjcmlwdEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxlc3NUaGFuKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIGZ1bmN0aW9uICgkbnVtMSwgJG51bTIpIHsKICAgICAgICAgICAgcmV0dXJuICRudW0xIDwgJG51bTI7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGVzc1RoYW5PckVxdWFsKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIGZ1bmN0aW9uICgkbnVtMSwgJG51bTIpIHsKICAgICAgICAgICAgcmV0dXJuICRudW0xIDw9ICRudW0yOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdyZWF0ZXJUaGFuKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIGZ1bmN0aW9uICgkbnVtMSwgJG51bTIpIHsKICAgICAgICAgICAgcmV0dXJuICRudW0xID4gJG51bTI7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ3JlYXRlclRoYW5PckVxdWFsKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIGZ1bmN0aW9uICgkbnVtMSwgJG51bTIpIHsKICAgICAgICAgICAgcmV0dXJuICRudW0xID49ICRudW0yOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGx1cyhOdW1iZXIgJG90aGVyKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29lcmNlTnVtYmVyKCRvdGhlciwgZnVuY3Rpb24gKCRudW0xLCAkbnVtMikgewogICAgICAgICAgICByZXR1cm4gJG51bTEgKyAkbnVtMjsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBOdW1iZXIgJG90aGVyCiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1pbnVzKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2VyY2VOdW1iZXIoJG90aGVyLCBmdW5jdGlvbiAoJG51bTEsICRudW0yKSB7CiAgICAgICAgICAgIHJldHVybiAkbnVtMSAtICRudW0yOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBOdW1iZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuYXJ5TWludXMoKQogICAgewogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKC0kdGhpcy0+ZGltZW5zaW9uLCAkdGhpcy0+bnVtZXJhdG9yVW5pdHMsICR0aGlzLT5kZW5vbWluYXRvclVuaXRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBOdW1iZXIgJG90aGVyCiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZHVsbyhOdW1iZXIgJG90aGVyKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29lcmNlTnVtYmVyKCRvdGhlciwgZnVuY3Rpb24gKCRudW0xLCAkbnVtMikgewogICAgICAgICAgICBpZiAoJG51bTIgPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIE5BTjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlc3VsdCA9IGZtb2QoJG51bTEsICRudW0yKTsKCiAgICAgICAgICAgIGlmICgkcmVzdWx0ID09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG51bTIgPCAwIHhvciAkbnVtMSA8IDApIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgKz0gJG51bTI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGltZXMoTnVtYmVyICRvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm11bHRpcGx5VW5pdHMoJHRoaXMtPmRpbWVuc2lvbiAqICRvdGhlci0+ZGltZW5zaW9uLCAkdGhpcy0+bnVtZXJhdG9yVW5pdHMsICR0aGlzLT5kZW5vbWluYXRvclVuaXRzLCAkb3RoZXItPm51bWVyYXRvclVuaXRzLCAkb3RoZXItPmRlbm9taW5hdG9yVW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2aWRlZEJ5KE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgaWYgKCRvdGhlci0+ZGltZW5zaW9uID09IDApIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5kaW1lbnNpb24gPT0gMCkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gTkFOOwogICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPmRpbWVuc2lvbiA+IDApIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IElORjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IC1JTkY7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+ZGltZW5zaW9uIC8gJG90aGVyLT5kaW1lbnNpb247CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm11bHRpcGx5VW5pdHMoJHZhbHVlLCAkdGhpcy0+bnVtZXJhdG9yVW5pdHMsICR0aGlzLT5kZW5vbWluYXRvclVuaXRzLCAkb3RoZXItPmRlbm9taW5hdG9yVW5pdHMsICRvdGhlci0+bnVtZXJhdG9yVW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhOdW1iZXIgJG90aGVyKQogICAgewogICAgICAgIC8vIFVuaXRsZXNzIG51bWJlcnMgYXJlIGNvbnZlcnRhYmxlIHRvIHVuaXQgbnVtYmVycywgYnV0IG5vdCBlcXVhbCwgc28gd2Ugc3BlY2lhbC1jYXNlIHVuaXRsZXNzIGhlcmUuCiAgICAgICAgaWYgKCR0aGlzLT51bml0bGVzcygpICE9PSAkb3RoZXItPnVuaXRsZXNzKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gSW4gU2FzcywgbmVpdGhlciBOYU4gbm9yIEluZmluaXR5IGFyZSBlcXVhbCB0byB0aGVtc2VsdmVzLCB3aGlsZSBQSFAgZGVmaW5lcyBJTkY9PUlORgogICAgICAgIGlmIChpc19uYW4oJHRoaXMtPmRpbWVuc2lvbikgfHwgaXNfbmFuKCRvdGhlci0+ZGltZW5zaW9uKSB8fCAhaXNfZmluaXRlKCR0aGlzLT5kaW1lbnNpb24pIHx8ICFpc19maW5pdGUoJG90aGVyLT5kaW1lbnNpb24pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dW5pdGxlc3MoKSkgewogICAgICAgICAgICByZXR1cm4gcm91bmQoJHRoaXMtPmRpbWVuc2lvbiwgc2VsZjo6UFJFQ0lTSU9OKSA9PSByb3VuZCgkb3RoZXItPmRpbWVuc2lvbiwgc2VsZjo6UFJFQ0lTSU9OKTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29lcmNlVW5pdHMoJG90aGVyLCBmdW5jdGlvbiAoJG51bTEsICRudW0yKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcm91bmQoJG51bTEsIHNlbGY6OlBSRUNJU0lPTikgPT0gcm91bmQoJG51bTIsIHNlbGY6OlBSRUNJU0lPTik7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gY2F0Y2ggKFNhc3NTY3JpcHRFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIE91dHB1dCBudW1iZXIKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlciAkY29tcGlsZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb3V0cHV0KD9Db21waWxlciAkY29tcGlsZXIgPSBudWxsKQogICAgewogICAgICAgICRkaW1lbnNpb24gPSByb3VuZCgkdGhpcy0+ZGltZW5zaW9uLCBzZWxmOjpQUkVDSVNJT04pOwoKICAgICAgICBpZiAoaXNfbmFuKCRkaW1lbnNpb24pKSB7CiAgICAgICAgICAgIHJldHVybiAnTmFOJzsKICAgICAgICB9CgogICAgICAgIGlmICgkZGltZW5zaW9uID09PSBJTkYpIHsKICAgICAgICAgICAgcmV0dXJuICdJbmZpbml0eSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRpbWVuc2lvbiA9PT0gLUlORikgewogICAgICAgICAgICByZXR1cm4gJy1JbmZpbml0eSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbXBpbGVyKSB7CiAgICAgICAgICAgICR1bml0ID0gJHRoaXMtPnVuaXRTdHIoKTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPm51bWVyYXRvclVuaXRzWzBdKSkgewogICAgICAgICAgICAkdW5pdCA9ICR0aGlzLT5udW1lcmF0b3JVbml0c1swXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdW5pdCA9ICcnOwogICAgICAgIH0KCiAgICAgICAgJGRpbWVuc2lvbiA9IG51bWJlcl9mb3JtYXQoJGRpbWVuc2lvbiwgc2VsZjo6UFJFQ0lTSU9OLCAnLicsICcnKTsKCiAgICAgICAgcmV0dXJuIHJ0cmltKHJ0cmltKCRkaW1lbnNpb24sICcwJyksICcuJykgLiAkdW5pdDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3V0cHV0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICAgJG90aGVyCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG9wZXJhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gTnVtYmVyCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gY2FsbGFibGUoaW50fGZsb2F0LCBpbnR8ZmxvYXQpOiAoaW50fGZsb2F0KSAkb3BlcmF0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29lcmNlTnVtYmVyKE51bWJlciAkb3RoZXIsICRvcGVyYXRpb24pCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsICRvcGVyYXRpb24pOwoKICAgICAgICBpZiAoISR0aGlzLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCRyZXN1bHQsICR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXIoJHJlc3VsdCwgJG90aGVyLT5udW1lcmF0b3JVbml0cywgJG90aGVyLT5kZW5vbWluYXRvclVuaXRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBOdW1iZXIgJG90aGVyCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG9wZXJhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqCiAgICAgKiBAcGhwc3Rhbi10ZW1wbGF0ZSBUCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBjYWxsYWJsZShpbnR8ZmxvYXQsIGludHxmbG9hdCk6IFQgJG9wZXJhdGlvbgogICAgICogQHBocHN0YW4tcmV0dXJuIFQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb2VyY2VVbml0cyhOdW1iZXIgJG90aGVyLCAkb3BlcmF0aW9uKQogICAgewogICAgICAgIGlmICghJHRoaXMtPnVuaXRsZXNzKCkpIHsKICAgICAgICAgICAgJG51bTEgPSAkdGhpcy0+ZGltZW5zaW9uOwogICAgICAgICAgICAkbnVtMiA9ICRvdGhlci0+dmFsdWVJblVuaXRzKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRudW0xID0gJHRoaXMtPnZhbHVlSW5Vbml0cygkb3RoZXItPm51bWVyYXRvclVuaXRzLCAkb3RoZXItPmRlbm9taW5hdG9yVW5pdHMpOwogICAgICAgICAgICAkbnVtMiA9ICRvdGhlci0+ZGltZW5zaW9uOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxjYWxsX3VzZXJfZnVuYygkb3BlcmF0aW9uLCAkbnVtMSwgJG51bTIpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRudW1lcmF0b3JVbml0cwogICAgICogQHBhcmFtIHN0cmluZ1tdICRkZW5vbWluYXRvclVuaXRzCiAgICAgKgogICAgICogQHJldHVybiBpbnR8ZmxvYXQKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJG51bWVyYXRvclVuaXRzCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJGRlbm9taW5hdG9yVW5pdHMKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhpcyBudW1iZXIncyB1bml0cyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCAkbnVtZXJhdG9yVW5pdHMgYW5kICRkZW5vbWluYXRvclVuaXRzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsdWVJblVuaXRzKGFycmF5ICRudW1lcmF0b3JVbml0cywgYXJyYXkgJGRlbm9taW5hdG9yVW5pdHMpCiAgICB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+dW5pdGxlc3MoKQogICAgICAgICAgICB8fCAoXGNvdW50KCRudW1lcmF0b3JVbml0cykgPT09IDAgJiYgXGNvdW50KCRkZW5vbWluYXRvclVuaXRzKSA9PT0gMCkKICAgICAgICAgICAgfHwgKCR0aGlzLT5udW1lcmF0b3JVbml0cyA9PT0gJG51bWVyYXRvclVuaXRzICYmICR0aGlzLT5kZW5vbWluYXRvclVuaXRzID09PSAkZGVub21pbmF0b3JVbml0cykKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kaW1lbnNpb247CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+ZGltZW5zaW9uOwogICAgICAgICRvbGROdW1lcmF0b3JzID0gJHRoaXMtPm51bWVyYXRvclVuaXRzOwoKICAgICAgICBmb3JlYWNoICgkbnVtZXJhdG9yVW5pdHMgYXMgJG5ld051bWVyYXRvcikgewogICAgICAgICAgICBmb3JlYWNoICgkb2xkTnVtZXJhdG9ycyBhcyAka2V5ID0+ICRvbGROdW1lcmF0b3IpIHsKICAgICAgICAgICAgICAgICRjb252ZXJzaW9uRmFjdG9yID0gc2VsZjo6Z2V0Q29udmVyc2lvbkZhY3RvcigkbmV3TnVtZXJhdG9yLCAkb2xkTnVtZXJhdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAoXGlzX251bGwoJGNvbnZlcnNpb25GYWN0b3IpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhbHVlICo9ICRjb252ZXJzaW9uRmFjdG9yOwogICAgICAgICAgICAgICAgdW5zZXQoJG9sZE51bWVyYXRvcnNbJGtleV0pOwogICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdJbmNvbXBhdGlibGUgdW5pdHMgJXMgYW5kICVzLicsCiAgICAgICAgICAgICAgICBzZWxmOjpnZXRVbml0U3RyaW5nKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpLAogICAgICAgICAgICAgICAgc2VsZjo6Z2V0VW5pdFN0cmluZygkbnVtZXJhdG9yVW5pdHMsICRkZW5vbWluYXRvclVuaXRzKQogICAgICAgICAgICApKTsKICAgICAgICB9CgogICAgICAgICRvbGREZW5vbWluYXRvcnMgPSAkdGhpcy0+ZGVub21pbmF0b3JVbml0czsKCiAgICAgICAgZm9yZWFjaCAoJGRlbm9taW5hdG9yVW5pdHMgYXMgJG5ld0Rlbm9taW5hdG9yKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRvbGREZW5vbWluYXRvcnMgYXMgJGtleSA9PiAkb2xkRGVub21pbmF0b3IpIHsKICAgICAgICAgICAgICAgICRjb252ZXJzaW9uRmFjdG9yID0gc2VsZjo6Z2V0Q29udmVyc2lvbkZhY3RvcigkbmV3RGVub21pbmF0b3IsICRvbGREZW5vbWluYXRvcik7CgogICAgICAgICAgICAgICAgaWYgKFxpc19udWxsKCRjb252ZXJzaW9uRmFjdG9yKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR2YWx1ZSAvPSAkY29udmVyc2lvbkZhY3RvcjsKICAgICAgICAgICAgICAgIHVuc2V0KCRvbGREZW5vbWluYXRvcnNbJGtleV0pOwogICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdJbmNvbXBhdGlibGUgdW5pdHMgJXMgYW5kICVzLicsCiAgICAgICAgICAgICAgICBzZWxmOjpnZXRVbml0U3RyaW5nKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpLAogICAgICAgICAgICAgICAgc2VsZjo6Z2V0VW5pdFN0cmluZygkbnVtZXJhdG9yVW5pdHMsICRkZW5vbWluYXRvclVuaXRzKQogICAgICAgICAgICApKTsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJG9sZE51bWVyYXRvcnMpIHx8IFxjb3VudCgkb2xkRGVub21pbmF0b3JzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAgICAgJ0luY29tcGF0aWJsZSB1bml0cyAlcyBhbmQgJXMuJywKICAgICAgICAgICAgICAgIHNlbGY6OmdldFVuaXRTdHJpbmcoJHRoaXMtPm51bWVyYXRvclVuaXRzLCAkdGhpcy0+ZGVub21pbmF0b3JVbml0cyksCiAgICAgICAgICAgICAgICBzZWxmOjpnZXRVbml0U3RyaW5nKCRudW1lcmF0b3JVbml0cywgJGRlbm9taW5hdG9yVW5pdHMpCiAgICAgICAgICAgICkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnR8ZmxvYXQgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG51bWVyYXRvcnMxCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJGRlbm9taW5hdG9yczEKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkbnVtZXJhdG9yczIKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkZGVub21pbmF0b3JzMgogICAgICoKICAgICAqIEByZXR1cm4gTnVtYmVyCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxzdHJpbmc+ICRudW1lcmF0b3JzMQogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxzdHJpbmc+ICRkZW5vbWluYXRvcnMxCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJG51bWVyYXRvcnMyCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJGRlbm9taW5hdG9yczIKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBtdWx0aXBseVVuaXRzKCR2YWx1ZSwgYXJyYXkgJG51bWVyYXRvcnMxLCBhcnJheSAkZGVub21pbmF0b3JzMSwgYXJyYXkgJG51bWVyYXRvcnMyLCBhcnJheSAkZGVub21pbmF0b3JzMikKICAgIHsKICAgICAgICAkbmV3TnVtZXJhdG9ycyA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCRudW1lcmF0b3JzMSBhcyAkbnVtZXJhdG9yKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkZW5vbWluYXRvcnMyIGFzICRrZXkgPT4gJGRlbm9taW5hdG9yKSB7CiAgICAgICAgICAgICAgICAkY29udmVyc2lvbkZhY3RvciA9IHNlbGY6OmdldENvbnZlcnNpb25GYWN0b3IoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAoXGlzX251bGwoJGNvbnZlcnNpb25GYWN0b3IpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhbHVlIC89ICRjb252ZXJzaW9uRmFjdG9yOwogICAgICAgICAgICAgICAgdW5zZXQoJGRlbm9taW5hdG9yczJbJGtleV0pOwogICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5ld051bWVyYXRvcnNbXSA9ICRudW1lcmF0b3I7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkbnVtZXJhdG9yczIgYXMgJG51bWVyYXRvcikgewogICAgICAgICAgICBmb3JlYWNoICgkZGVub21pbmF0b3JzMSBhcyAka2V5ID0+ICRkZW5vbWluYXRvcikgewogICAgICAgICAgICAgICAgJGNvbnZlcnNpb25GYWN0b3IgPSBzZWxmOjpnZXRDb252ZXJzaW9uRmFjdG9yKCRudW1lcmF0b3IsICRkZW5vbWluYXRvcik7CgogICAgICAgICAgICAgICAgaWYgKFxpc19udWxsKCRjb252ZXJzaW9uRmFjdG9yKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR2YWx1ZSAvPSAkY29udmVyc2lvbkZhY3RvcjsKICAgICAgICAgICAgICAgIHVuc2V0KCRkZW5vbWluYXRvcnMxWyRrZXldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRuZXdOdW1lcmF0b3JzW10gPSAkbnVtZXJhdG9yOwogICAgICAgIH0KCiAgICAgICAgJG5ld0Rlbm9taW5hdG9ycyA9IGFycmF5X3ZhbHVlcyhhcnJheV9tZXJnZSgkZGVub21pbmF0b3JzMSwgJGRlbm9taW5hdG9yczIpKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXIoJHZhbHVlLCAkbmV3TnVtZXJhdG9ycywgJG5ld0Rlbm9taW5hdG9ycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgW3VuaXQxXXMgcGVyIFt1bml0Ml0uCiAgICAgKgogICAgICogRXF1aXZhbGVudGx5LCBgMXVuaXQxICogY29udmVyc2lvbkZhY3Rvcih1bml0MSwgdW5pdDIpID0gMXVuaXQyYC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0MQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdDIKICAgICAqCiAgICAgKiBAcmV0dXJuIGZsb2F0fGludHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldENvbnZlcnNpb25GYWN0b3IoJHVuaXQxLCAkdW5pdDIpCiAgICB7CiAgICAgICAgaWYgKCR1bml0MSA9PT0gJHVuaXQyKSB7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoc2VsZjo6JHVuaXRUYWJsZSBhcyAkdW5pdFZhcmlhbnRzKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdW5pdFZhcmlhbnRzWyR1bml0MV0pICYmIGlzc2V0KCR1bml0VmFyaWFudHNbJHVuaXQyXSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdW5pdFZhcmlhbnRzWyR1bml0MV0gLyAkdW5pdFZhcmlhbnRzWyR1bml0Ml07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB1bml0KHMpIGFzIHRoZSBwcm9kdWN0IG9mIG51bWVyYXRvciB1bml0cyBkaXZpZGVkIGJ5IHRoZSBwcm9kdWN0IG9mIGRlbm9taW5hdG9yIHVuaXRzCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRudW1lcmF0b3JzCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJGRlbm9taW5hdG9ycwogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIGxpc3Q8c3RyaW5nPiAkbnVtZXJhdG9ycwogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxzdHJpbmc+ICRkZW5vbWluYXRvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRVbml0U3RyaW5nKGFycmF5ICRudW1lcmF0b3JzLCBhcnJheSAkZGVub21pbmF0b3JzKQogICAgewogICAgICAgIGlmICghXGNvdW50KCRudW1lcmF0b3JzKSkgewogICAgICAgICAgICBpZiAoXGNvdW50KCRkZW5vbWluYXRvcnMpID09PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ25vIHVuaXRzJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKFxjb3VudCgkZGVub21pbmF0b3JzKSA9PT0gMSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRkZW5vbWluYXRvcnNbMF0gLiAnXi0xJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICcoJyAuIGltcGxvZGUoJyonLCAkZGVub21pbmF0b3JzKSAuICcpXi0xJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpbXBsb2RlKCcqJywgJG51bWVyYXRvcnMpIC4gKFxjb3VudCgkZGVub21pbmF0b3JzKSA/ICcvJyAuIGltcGxvZGUoJyonLCAkZGVub21pbmF0b3JzKSA6ICcnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/OutputStyle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKZW51bSBPdXRwdXRTdHlsZTogc3RyaW5nCnsKICAgIGNhc2UgRVhQQU5ERUQgPSAnZXhwYW5kZWQnOwogICAgY2FzZSBDT01QUkVTU0VEID0gJ2NvbXByZXNzZWQnOwoKICAgIC8qKgogICAgICogQ29udmVydHMgYSBzdHJpbmcgdG8gYW4gb3V0cHV0IHN0eWxlLgogICAgICoKICAgICAqIFVzaW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0byB3cml0ZSBjb2RlIHdoaWNoIHdpbGwgc3VwcG9ydCBib3RoCiAgICAgKiB2ZXJzaW9ucyAxLjEyKyBhbmQgMi4wIG9mIFNjc3NwaHAuIEluIDEueCwgT3V0cHV0U3R5bGUgd2FzIHVzaW5nCiAgICAgKiBzdHJpbmcgY29uc3RhbnRzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21TdHJpbmcoc3RyaW5nICRzdHJpbmcpOiBPdXRwdXRTdHlsZQogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHN0cmluZykgewogICAgICAgICAgICAnZXhwYW5kZWQnID0+IHNlbGY6OkVYUEFOREVELAogICAgICAgICAgICAnY29tcHJlc3NlZCcgPT4gc2VsZjo6Q09NUFJFU1NFRCwKICAgICAgICAgICAgZGVmYXVsdCA9PiB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBvdXRwdXQgc3R5bGUnKSwKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYW4gb3V0cHV0IHN0eWxlIHRvIGEgc3RyaW5nIHN1cHBvcnRlZCBieSB7QHNlZSBPdXRwdXRTdHlsZTo6ZnJvbVN0cmluZygpfS4KICAgICAqCiAgICAgKiBVc2luZyB0aGlzIG1ldGhvZCBhbGxvd3MgdG8gd3JpdGUgY29kZSB3aGljaCB3aWxsIHN1cHBvcnQgYm90aAogICAgICogdmVyc2lvbnMgMS4xMisgYW5kIDIuMCBvZiBTY3NzcGhwLgogICAgICogVGhlIHJldHVybmVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBpcyBndWFyYW50ZWVkIHRvIGJlIGNvbXBhdGlibGUKICAgICAqIGJldHdlZW4gMS4xMiBhbmQgMi4wLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvU3RyaW5nKE91dHB1dFN0eWxlICRvdXRwdXRTdHlsZSk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkb3V0cHV0U3R5bGUtPnZhbHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/AtRootQueryParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXRSb290UXVlcnk7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NGb3JtYXRFeGNlcHRpb247CgovKioKICogQSBwYXJzZXIgZm9yIGBAYXQtcm9vdGAgcXVlcmllcy4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBBdFJvb3RRdWVyeVBhcnNlciBleHRlbmRzIFBhcnNlcgp7CiAgICAvKioKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoKTogQXRSb290UXVlcnkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndyYXBTcGFuRm9ybWF0RXhjZXB0aW9uKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJygnKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJGluY2x1ZGUgPSAkdGhpcy0+c2NhbklkZW50aWZpZXIoJ3dpdGgnKTsKICAgICAgICAgICAgaWYgKCEkaW5jbHVkZSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmV4cGVjdElkZW50aWZpZXIoJ3dpdGhvdXQnLCAnIndpdGgiIG9yICJ3aXRob3V0IicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCc6Jyk7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICAkYXRSdWxlcyA9IFtdOwoKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgJGF0UnVsZXNbXSA9IHN0cnRvbG93ZXIoJHRoaXMtPmlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICB9IHdoaWxlICgkdGhpcy0+bG9va2luZ0F0SWRlbnRpZmllcigpKTsKCiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3REb25lKCk7CgogICAgICAgICAgICByZXR1cm4gQXRSb290UXVlcnk6OmNyZWF0ZSgkYXRSdWxlcywgJGluY2x1ZGUpOwogICAgICAgIH0pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/CssParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXJndW1lbnRJbnZvY2F0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxGdW5jdGlvbkV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxQYXJlbnRoZXNpemVkRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFN0cmluZ0V4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW1wb3J0XFN0YXRpY0ltcG9ydDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbnRlcnBvbGF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcSW1wb3J0UnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxGdW5jdGlvblxGdW5jdGlvblJlZ2lzdHJ5OwoKLyoqCiAqIEEgcGFyc2VyIGZvciBpbXBvcnRlZCBDU1MgZmlsZXMuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ3NzUGFyc2VyIGV4dGVuZHMgU2Nzc1BhcnNlcgp7CiAgICAvKioKICAgICAqIFNhc3MgZ2xvYmFsIGZ1bmN0aW9ucyB3aGljaCBhcmUgc2hhZG93aW5nIGEgQ1NTIGZ1bmN0aW9uIGFyZSBhbGxvd2VkIGluIENTUyBmaWxlcy4KICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBDU1NfQUxMT1dFRF9GVU5DVElPTlMgPSBbCiAgICAgICAgJ3JnYicgPT4gdHJ1ZSwgJ3JnYmEnID0+IHRydWUsICdoc2wnID0+IHRydWUsICdoc2xhJyA9PiB0cnVlLCAnZ3JheXNjYWxlJyA9PiB0cnVlLAogICAgICAgICdpbnZlcnQnID0+IHRydWUsICdhbHBoYScgPT4gdHJ1ZSwgJ29wYWNpdHknID0+IHRydWUsICdzYXR1cmF0ZScgPT4gdHJ1ZSwKICAgICAgICAnbWluJyA9PiB0cnVlLCAnbWF4JyA9PiB0cnVlLCAncm91bmQnID0+IHRydWUsICdhYnMnID0+IHRydWUsCiAgICBdOwoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc1BsYWluQ3NzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2lsZW50Q29tbWVudCgpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5pbkV4cHJlc3Npb24oKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICBwYXJlbnQ6OnNpbGVudENvbW1lbnQoKTsKICAgICAgICAkdGhpcy0+ZXJyb3IoIlNpbGVudCBjb21tZW50cyBhcmVuJ3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MuIiwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhdFJ1bGUoY2FsbGFibGUgJGNoaWxkLCBib29sICRyb290ID0gZmFsc2UpOiBTdGF0ZW1lbnQKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJ0AnKTsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgcmV0dXJuIG1hdGNoICgkbmFtZS0+Z2V0QXNQbGFpbigpKSB7CiAgICAgICAgICAgICdhdC1yb290JywKICAgICAgICAgICAgJ2NvbnRlbnQnLAogICAgICAgICAgICAnZGVidWcnLAogICAgICAgICAgICAnZWFjaCcsCiAgICAgICAgICAgICdlcnJvcicsCiAgICAgICAgICAgICdleHRlbmQnLAogICAgICAgICAgICAnZm9yJywKICAgICAgICAgICAgJ2Z1bmN0aW9uJywKICAgICAgICAgICAgJ2lmJywKICAgICAgICAgICAgJ2luY2x1ZGUnLAogICAgICAgICAgICAnbWl4aW4nLAogICAgICAgICAgICAncmV0dXJuJywKICAgICAgICAgICAgJ3dhcm4nLAogICAgICAgICAgICAnd2hpbGUnID0+ICR0aGlzLT5mb3JiaWRkZW5BdFJ1bGUoJHN0YXJ0KSwKICAgICAgICAgICAgJ2ltcG9ydCcgPT4gJHRoaXMtPmNzc0ltcG9ydFJ1bGUoJHN0YXJ0KSwKICAgICAgICAgICAgJ21lZGlhJyA9PiAkdGhpcy0+bWVkaWFSdWxlKCRzdGFydCksCiAgICAgICAgICAgICctbW96LWRvY3VtZW50JyA9PiAkdGhpcy0+bW96RG9jdW1lbnRSdWxlKCRzdGFydCwgJG5hbWUpLAogICAgICAgICAgICAnc3VwcG9ydHMnID0+ICR0aGlzLT5zdXBwb3J0c1J1bGUoJHN0YXJ0KSwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkdGhpcy0+dW5rbm93bkF0UnVsZSgkc3RhcnQsICRuYW1lKSwKICAgICAgICB9OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZm9yYmlkZGVuQXRSdWxlKGludCAkc3RhcnQpOiBuZXZlcgogICAgewogICAgICAgICR0aGlzLT5hbG1vc3RBbnlWYWx1ZSgpOwogICAgICAgICR0aGlzLT5lcnJvcigiVGhpcyBhdC1ydWxlIGlzbid0IGFsbG93ZWQgaW4gcGxhaW4gQ1NTLiIsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNzc0ltcG9ydFJ1bGUoaW50ICRzdGFydCk6IEltcG9ydFJ1bGUKICAgIHsKICAgICAgICAkdXJsU3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICBpZiAoJG5leHQgPT09ICd1JyB8fCAkbmV4dCA9PT0gJ1UnKSB7CiAgICAgICAgICAgICR1cmwgPSAkdGhpcy0+ZHluYW1pY1VybCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR1cmwgPSBuZXcgU3RyaW5nRXhwcmVzc2lvbigkdGhpcy0+aW50ZXJwb2xhdGVkU3RyaW5nKCktPmFzSW50ZXJwb2xhdGlvbih0cnVlKSk7CiAgICAgICAgfQogICAgICAgICR1cmxTcGFuID0gJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCR1cmxTdGFydCk7CgogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgJG1vZGlmaWVycyA9ICR0aGlzLT50cnlJbXBvcnRNb2RpZmllcnMoKTsKICAgICAgICAkdGhpcy0+ZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKCdAaW1wb3J0IHJ1bGUnKTsKCiAgICAgICAgcmV0dXJuIG5ldyBJbXBvcnRSdWxlKFsKICAgICAgICAgICAgbmV3IFN0YXRpY0ltcG9ydChuZXcgSW50ZXJwb2xhdGlvbihbJHVybF0sICR1cmxTcGFuKSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCksICRtb2RpZmllcnMpLAogICAgICAgIF0sICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFyZW50aGVzZXMoKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIC8vIEV4cHJlc3Npb25zIGFyZSBvbmx5IGFsbG93ZWQgd2l0aGluIGNhbGN1bGF0aW9ucywgYnV0IHdlIHZlcmlmeSB0aGlzIGF0CiAgICAgICAgLy8gZXZhbHVhdGlvbiB0aW1lLgogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcoJyk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAkZXhwcmVzc2lvbiA9ICR0aGlzLT5leHByZXNzaW9uVW50aWxDb21tYSgpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CgogICAgICAgIHJldHVybiBuZXcgUGFyZW50aGVzaXplZEV4cHJlc3Npb24oJGV4cHJlc3Npb24sICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaWRlbnRpZmllckxpa2UoKTogRXhwcmVzc2lvbgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRpZGVudGlmaWVyID0gJHRoaXMtPmludGVycG9sYXRlZElkZW50aWZpZXIoKTsKICAgICAgICAkcGxhaW4gPSAkaWRlbnRpZmllci0+Z2V0QXNQbGFpbigpOwogICAgICAgIGFzc2VydCgkcGxhaW4gIT09IG51bGwpOyAvLyBDU1MgZG9lc24ndCBhbGxvdyBub24tcGxhaW4gaWRlbnRpZmllcnMKCiAgICAgICAgJGxvd2VyID0gc3RydG9sb3dlcigkcGxhaW4pOwogICAgICAgICRzcGVjaWFsRnVuY3Rpb24gPSAkdGhpcy0+dHJ5U3BlY2lhbEZ1bmN0aW9uKCRsb3dlciwgJHN0YXJ0KTsKCiAgICAgICAgaWYgKCRzcGVjaWFsRnVuY3Rpb24gIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRzcGVjaWFsRnVuY3Rpb247CiAgICAgICAgfQoKICAgICAgICAkYmVmb3JlQXJndW1lbnRzID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgLy8gYG5hbWVzcGFjZWRFeHByZXNzaW9uKClgIGlzIGp1c3QgaGVyZSB0byB0aHJvdyBhIGNsZWFyZXIgZXJyb3IuCiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignLicpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bmFtZXNwYWNlZEV4cHJlc3Npb24oJHBsYWluLCAkc3RhcnQpOwogICAgICAgIH0KICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignKCcpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nRXhwcmVzc2lvbigkaWRlbnRpZmllcik7CiAgICAgICAgfQoKICAgICAgICAkYWxsb3dFbXB0eVNlY29uZEFyZyA9ICRsb3dlciA9PT0gJ3Zhcic7CiAgICAgICAgJGFyZ3VtZW50cyA9IFtdOwoKICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignKScpKSB7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICAgICAgaWYgKCRhbGxvd0VtcHR5U2Vjb25kQXJnICYmIFxjb3VudCgkYXJndW1lbnRzKSA9PT0gMSAmJiAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSA9PT0gJyknKSB7CiAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50c1tdID0gU3RyaW5nRXhwcmVzc2lvbjo6cGxhaW4oJycsICR0aGlzLT5zY2FubmVyLT5nZXRFbXB0eVNwYW4oKSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGFyZ3VtZW50c1tdID0gJHRoaXMtPmV4cHJlc3Npb25VbnRpbENvbW1hKHRydWUpOwogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgfSB3aGlsZSAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcsJykpOwogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignKScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwbGFpbiA9PT0gJ2lmJyB8fCAoIWlzc2V0KHNlbGY6OkNTU19BTExPV0VEX0ZVTkNUSU9OU1skcGxhaW5dKSAmJiBGdW5jdGlvblJlZ2lzdHJ5Ojppc0J1aWx0aW5GdW5jdGlvbigkcGxhaW4pKSkgewogICAgICAgICAgICAkdGhpcy0+ZXJyb3IoIlRoaXMgZnVuY3Rpb24gaXNuJ3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MuIiwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkV4cHJlc3Npb24oCiAgICAgICAgICAgICRwbGFpbiwKICAgICAgICAgICAgbmV3IEFyZ3VtZW50SW52b2NhdGlvbigkYXJndW1lbnRzLCBbXSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRiZWZvcmVBcmd1bWVudHMpKSwKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkKICAgICAgICApOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBuYW1lc3BhY2VkRXhwcmVzc2lvbihzdHJpbmcgJG5hbWVzcGFjZSwgaW50ICRzdGFydCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICAkZXhwcmVzc2lvbiA9IHBhcmVudDo6bmFtZXNwYWNlZEV4cHJlc3Npb24oJG5hbWVzcGFjZSwgJHN0YXJ0KTsKCiAgICAgICAgJHRoaXMtPmVycm9yKCJNb2R1bGUgbmFtZXNwYWNlcyBhcmVuJ3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MuIiwgJGV4cHJlc3Npb24tPmdldFNwYW4oKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/FormatException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBKaXJpUHVkaWxcU2VhbGVkQ2xhc3Nlc1xTZWFsZWQ7CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KI1tTZWFsZWQoW011bHRpU291cmNlRm9ybWF0RXhjZXB0aW9uOjpjbGFzc10pXQpjbGFzcyBGb3JtYXRFeGNlcHRpb24gZXh0ZW5kcyBcRXhjZXB0aW9uCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgRmlsZVNwYW4gJHNwYW47CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkbWVzc2FnZSwgRmlsZVNwYW4gJHNwYW4sID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnNwYW4gPSAkc3BhbjsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlLCAwLCAkcHJldmlvdXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zcGFuOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/InterpolationBuffer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbnRlcnBvbGF0aW9uOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBBIGJ1ZmZlciB0aGF0IGl0ZXJhdGl2ZWx5IGJ1aWxkcyB1cCBhbiB7QHNlZSBJbnRlcnBvbGF0aW9ufS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBJbnRlcnBvbGF0aW9uQnVmZmVyCnsKICAgIHByaXZhdGUgc3RyaW5nICR0ZXh0ID0gJyc7CgogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8c3RyaW5nfEV4cHJlc3Npb24+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJGNvbnRlbnRzID0gW107CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdWJzdHJpbmcgb2YgdGhlIGJ1ZmZlciBzdHJpbmcgYWZ0ZXIgdGhlIGxhc3QgaW50ZXJwb2xhdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFRyYWlsaW5nU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGV4dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZXh0ID09PSAnJyAmJiBcY291bnQoJHRoaXMtPmNvbnRlbnRzKSA9PT0gMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoc3RyaW5nICRzdHJpbmcpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnRleHQgLj0gJHN0cmluZzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKEV4cHJlc3Npb24gJGV4cHJlc3Npb24pOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmZsdXNoVGV4dCgpOwogICAgICAgICR0aGlzLT5jb250ZW50c1tdID0gJGV4cHJlc3Npb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZEludGVycG9sYXRpb24oSW50ZXJwb2xhdGlvbiAkaW50ZXJwb2xhdGlvbik6IHZvaWQKICAgIHsKICAgICAgICAkY29udGVudHMgPSAkaW50ZXJwb2xhdGlvbi0+Z2V0Q29udGVudHMoKTsKCiAgICAgICAgaWYgKGVtcHR5KCRjb250ZW50cykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX3N0cmluZygkY29udGVudHNbMF0pKSB7CiAgICAgICAgICAgICR0aGlzLT50ZXh0IC49ICRjb250ZW50c1swXTsKCiAgICAgICAgICAgIGFycmF5X3NoaWZ0KCRjb250ZW50cyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Zmx1c2hUZXh0KCk7CgogICAgICAgIGZvcmVhY2ggKCRjb250ZW50cyBhcyAkY29udGVudCkgewogICAgICAgICAgICAkdGhpcy0+Y29udGVudHNbXSA9ICRjb250ZW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19zdHJpbmcoJHRoaXMtPmNvbnRlbnRzW1xjb3VudCgkdGhpcy0+Y29udGVudHMpIC0gMV0pKSB7CiAgICAgICAgICAgICR0aGlzLT50ZXh0ID0gJHRoaXMtPmNvbnRlbnRzW1xjb3VudCgkdGhpcy0+Y29udGVudHMpIC0gMV07CiAgICAgICAgICAgIGFycmF5X3BvcCgkdGhpcy0+Y29udGVudHMpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYnVpbGRJbnRlcnBvbGF0aW9uKEZpbGVTcGFuICRzcGFuKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgICRjb250ZW50cyA9ICR0aGlzLT5jb250ZW50czsKCiAgICAgICAgaWYgKCR0aGlzLT50ZXh0ICE9PSAnJykgewogICAgICAgICAgICAkY29udGVudHNbXSA9ICR0aGlzLT50ZXh0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnBvbGF0aW9uKCRjb250ZW50cywgJHNwYW4pOwogICAgfQoKICAgIC8qKgogICAgICogRmx1c2hlcyB7QHNlZSBzZWxmOjokdGV4dH0gdG8ge0BzZWUgc2VsZjo6JGNvbnRlbnRzfSBpZiBuZWNlc3NhcnkuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmx1c2hUZXh0KCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnRleHQgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jb250ZW50c1tdID0gJHRoaXMtPnRleHQ7CiAgICAgICAgJHRoaXMtPnRleHQgPSAnJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/InterpolationMap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbnRlcnBvbGF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcQ2hhcmFjdGVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcSXRlcmFibGVVdGlsOwp1c2UgU291cmNlU3BhblxGaWxlTG9jYXRpb247CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwp1c2UgU291cmNlU3BhblxTb3VyY2VMb2NhdGlvbjsKCi8qKgogKiBBIGNsYXNzIHRoYXQgY2FuIG1hcCBsb2NhdGlvbnMgaW4gYSBzdHJpbmcgZ2VuZXJhdGVkIGZyb20gYW4ge0BzZWUgSW50ZXJwb2xhdGlvbn0KICogdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlIGluIHRoZSBpbnRlcnBvbGF0aW9uLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEludGVycG9sYXRpb25NYXAKewogICAgcHJpdmF0ZSByZWFkb25seSBJbnRlcnBvbGF0aW9uICRpbnRlcnBvbGF0aW9uOwoKICAgIC8qKgogICAgICogTG9jYXRpb25zIGluIHRoZSBnZW5lcmF0ZWQgc3RyaW5nLgogICAgICoKICAgICAqIEVhY2ggb2YgdGhlc2UgaW5kaWNhdGVzIHRoZSBsb2NhdGlvbiBpbiB0aGUgZ2VuZXJhdGVkIHN0cmluZyB0aGF0CiAgICAgKiBjb3JyZXNwb25kcyB0byB0aGUgZW5kIG9mIHRoZSBjb21wb25lbnQgYXQgdGhlIHNhbWUgaW5kZXggb2YKICAgICAqIHtAc2VlICRpbnRlcnBvbGF0aW9uLT5nZXRDb250ZW50cygpfS4gSXRzIGxlbmd0aCBpcyBhbHdheXMgb25lIGxlc3MgdGhhbgogICAgICoge0BzZWUgJGludGVycG9sYXRpb24tPmdldENvbnRlbnRzKCl9IGJlY2F1c2UgdGhlIGxhc3QgZWxlbWVudCBhbHdheXMgZW5kcyB0aGUgc3RyaW5nLgogICAgICoKICAgICAqIEB2YXIgbGlzdDxTb3VyY2VMb2NhdGlvbj4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkdGFyZ2V0TG9jYXRpb25zOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8U291cmNlTG9jYXRpb24+ICR0YXJnZXRMb2NhdGlvbnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEludGVycG9sYXRpb24gJGludGVycG9sYXRpb24sIGFycmF5ICR0YXJnZXRMb2NhdGlvbnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmludGVycG9sYXRpb24gPSAkaW50ZXJwb2xhdGlvbjsKICAgICAgICAkdGhpcy0+dGFyZ2V0TG9jYXRpb25zID0gJHRhcmdldExvY2F0aW9uczsKCiAgICAgICAgJGV4cGVjdGVkTG9jYXRpb25zID0gbWF4KDAsIFxjb3VudCgkaW50ZXJwb2xhdGlvbi0+Z2V0Q29udGVudHMoKSkgLSAxKTsKICAgICAgICBpZiAoXGNvdW50KCR0YXJnZXRMb2NhdGlvbnMpICE9PSAkZXhwZWN0ZWRMb2NhdGlvbnMpIHsKICAgICAgICAgICAgJGludGVycG9sYXRpb25QYXJ0cyA9IFxjb3VudCgkaW50ZXJwb2xhdGlvbi0+Z2V0Q29udGVudHMoKSk7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJJbnRlcnBvbGF0aW9uTWFwIG11c3QgaGF2ZSAkZXhwZWN0ZWRMb2NhdGlvbnMgdGFyZ2V0TG9jYXRpb25zIGlmIHRoZSBpbnRlcnBvbGF0aW9uIGhhcyAkaW50ZXJwb2xhdGlvblBhcnRzIGNvbXBvbmVudHMuIik7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtYXBFeGNlcHRpb24oRm9ybWF0RXhjZXB0aW9uICRlcnJvcik6IEZvcm1hdEV4Y2VwdGlvbgogICAgewogICAgICAgIGlmIChcY291bnQoJHRoaXMtPmludGVycG9sYXRpb24tPmdldENvbnRlbnRzKCkpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybWF0RXhjZXB0aW9uKCRlcnJvci0+Z2V0TWVzc2FnZSgpLCAkdGhpcy0+aW50ZXJwb2xhdGlvbi0+Z2V0U3BhbigpLCAkZXJyb3IpOwogICAgICAgIH0KCiAgICAgICAgJHRhcmdldCA9ICRlcnJvci0+Z2V0U3BhbigpOwogICAgICAgICRzb3VyY2UgPSAkdGhpcy0+bWFwU3BhbigkdGFyZ2V0KTsKICAgICAgICAkc3RhcnRJbmRleCA9ICR0aGlzLT5pbmRleEluQ29udGVudHMoJHRhcmdldC0+Z2V0U3RhcnQoKSk7CiAgICAgICAgJGVuZEluZGV4ID0gJHRoaXMtPmluZGV4SW5Db250ZW50cygkdGFyZ2V0LT5nZXRFbmQoKSk7CgogICAgICAgIGlmICghSXRlcmFibGVVdGlsOjphbnkoYXJyYXlfc2xpY2UoJHRoaXMtPmludGVycG9sYXRpb24tPmdldENvbnRlbnRzKCksICRzdGFydEluZGV4LCAkZW5kSW5kZXggLSAkc3RhcnRJbmRleCArIDEpLCBmbiAoJGNvbnRlbnQpID0+ICRjb250ZW50IGluc3RhbmNlb2YgRXhwcmVzc2lvbikpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtYXRFeGNlcHRpb24oJGVycm9yLT5nZXRNZXNzYWdlKCksICRzb3VyY2UsICRlcnJvcik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IE11bHRpU291cmNlRm9ybWF0RXhjZXB0aW9uKCRlcnJvci0+Z2V0TWVzc2FnZSgpLCAkc291cmNlLCAnJywgWydlcnJvciBpbiBpbnRlcnBvbGF0ZWQgb3V0cHV0JyA9PiAkdGFyZ2V0XSwgJGVycm9yKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbWFwU3BhbihGaWxlU3BhbiAkdGFyZ2V0KTogRmlsZVNwYW4KICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+bWFwTG9jYXRpb24oJHRhcmdldC0+Z2V0U3RhcnQoKSk7CiAgICAgICAgJGVuZCAgPSAkdGhpcy0+bWFwTG9jYXRpb24oJHRhcmdldC0+Z2V0RW5kKCkpOwoKICAgICAgICBpZiAoJHN0YXJ0IGluc3RhbmNlb2YgRmlsZVNwYW4pIHsKICAgICAgICAgICAgaWYgKCRlbmQgaW5zdGFuY2VvZiBGaWxlU3BhbikgewogICAgICAgICAgICAgICAgcmV0dXJuICRzdGFydC0+ZXhwYW5kKCRlbmQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmludGVycG9sYXRpb24tPmdldFNwYW4oKS0+Z2V0RmlsZSgpLT5zcGFuKCR0aGlzLT5leHBhbmRJbnRlcnBvbGF0aW9uU3BhbkxlZnQoJHN0YXJ0LT5nZXRTdGFydCgpKSwgJGVuZC0+Z2V0T2Zmc2V0KCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRlbmQgaW5zdGFuY2VvZiBGaWxlU3BhbikgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmludGVycG9sYXRpb24tPmdldFNwYW4oKS0+Z2V0RmlsZSgpLT5zcGFuKCRzdGFydC0+Z2V0T2Zmc2V0KCksICR0aGlzLT5leHBhbmRJbnRlcnBvbGF0aW9uU3BhblJpZ2h0KCRlbmQtPmdldEVuZCgpKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmludGVycG9sYXRpb24tPmdldFNwYW4oKS0+Z2V0RmlsZSgpLT5zcGFuKCRzdGFydC0+Z2V0T2Zmc2V0KCksICRlbmQtPmdldE9mZnNldCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gRmlsZVNwYW58RmlsZUxvY2F0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWFwTG9jYXRpb24oU291cmNlTG9jYXRpb24gJHRhcmdldCk6IG9iamVjdAogICAgewogICAgICAgIGlmIChcY291bnQoJHRoaXMtPmludGVycG9sYXRpb24tPmdldENvbnRlbnRzKCkpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aW50ZXJwb2xhdGlvbi0+Z2V0U3BhbigpOwogICAgICAgIH0KCiAgICAgICAgJGluZGV4ID0gJHRoaXMtPmluZGV4SW5Db250ZW50cygkdGFyZ2V0KTsKCiAgICAgICAgJGNvbXBvbmVudHMgPSAkdGhpcy0+aW50ZXJwb2xhdGlvbi0+Z2V0Q29udGVudHMoKTsKCiAgICAgICAgaWYgKCRjb21wb25lbnRzWyRpbmRleF0gaW5zdGFuY2VvZiBFeHByZXNzaW9uKSB7CiAgICAgICAgICAgIHJldHVybiAkY29tcG9uZW50c1skaW5kZXhdLT5nZXRTcGFuKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGluZGV4ID09PSAwKSB7CiAgICAgICAgICAgICRwcmV2aW91c0xvY2F0aW9uID0gJHRoaXMtPmludGVycG9sYXRpb24tPmdldFNwYW4oKS0+Z2V0U3RhcnQoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcHJldmlvdXNDb21wb25lbnQgPSAkY29tcG9uZW50c1skaW5kZXggLSAxXTsKICAgICAgICAgICAgXGFzc2VydCgkcHJldmlvdXNDb21wb25lbnQgaW5zdGFuY2VvZiBFeHByZXNzaW9uKTsKICAgICAgICAgICAgJHByZXZpb3VzTG9jYXRpb24gPSAkdGhpcy0+aW50ZXJwb2xhdGlvbi0+Z2V0U3BhbigpLT5nZXRGaWxlKCktPmxvY2F0aW9uKCR0aGlzLT5leHBhbmRJbnRlcnBvbGF0aW9uU3BhblJpZ2h0KCRwcmV2aW91c0NvbXBvbmVudC0+Z2V0U3BhbigpLT5nZXRFbmQoKSkpOwogICAgICAgIH0KCiAgICAgICAgJG9mZnNldEluU3RyaW5nID0gJHRhcmdldC0+Z2V0T2Zmc2V0KCkgLSAoJGluZGV4ID09PSAwID8gMCA6ICR0aGlzLT50YXJnZXRMb2NhdGlvbnNbJGluZGV4IC0gMV0tPmdldE9mZnNldCgpKTsKCiAgICAgICAgcmV0dXJuICRwcmV2aW91c0xvY2F0aW9uLT5nZXRGaWxlKCktPmxvY2F0aW9uKCRwcmV2aW91c0xvY2F0aW9uLT5nZXRPZmZzZXQoKSArICRvZmZzZXRJblN0cmluZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludDwwLCBtYXg+CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaW5kZXhJbkNvbnRlbnRzKFNvdXJjZUxvY2F0aW9uICR0YXJnZXQpOiBpbnQKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+dGFyZ2V0TG9jYXRpb25zIGFzICRpID0+ICRsb2NhdGlvbikgewogICAgICAgICAgICBpZiAoJHRhcmdldC0+Z2V0T2Zmc2V0KCkgPCAkbG9jYXRpb24tPmdldE9mZnNldCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFxhc3NlcnQoXGNvdW50KCR0aGlzLT5pbnRlcnBvbGF0aW9uLT5nZXRDb250ZW50cygpKSA+IDApOwoKICAgICAgICByZXR1cm4gXGNvdW50KCR0aGlzLT5pbnRlcnBvbGF0aW9uLT5nZXRDb250ZW50cygpKSAtIDE7CiAgICB9CgogICAgLyoqCiAgICAgKiBHaXZlbiB0aGUgc3RhcnQgb2YgYSB7QHNlZSBGaWxlU3Bhbn0gY292ZXJpbmcgYW4gaW50ZXJwb2xhdGVkIGV4cHJlc3Npb24sIHJldHVybnMKICAgICAqIHRoZSBvZmZzZXQgb2YgdGhlIGludGVycG9sYXRpb24ncyBvcGVuaW5nIGAjYC4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgdGhpcyBjYW4gYmUgdHJpY2tlZCBieSBhIGAje2AgdGhhdCBhcHBlYXJzIHdpdGhpbiBhIHNpbmdsZS1saW5lCiAgICAgKiBjb21tZW50IGJlZm9yZSB0aGUgZXhwcmVzc2lvbiwgYnV0IHNpbmNlIGl0J3Mgb25seSB1c2VkIGZvciBlcnJvcgogICAgICogcmVwb3J0aW5nIHRoYXQncyBwcm9iYWJseSBmaW5lLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4cGFuZEludGVycG9sYXRpb25TcGFuTGVmdChGaWxlTG9jYXRpb24gJHN0YXJ0KTogaW50CiAgICB7CiAgICAgICAgJHNvdXJjZSA9ICRzdGFydC0+Z2V0RmlsZSgpLT5nZXRTdHJpbmcoKTsKICAgICAgICAkaSA9ICRzdGFydC0+Z2V0T2Zmc2V0KCkgLSAxOwoKICAgICAgICB3aGlsZSAoJGkgPj0gMCkgewogICAgICAgICAgICAkcHJldiA9ICRzb3VyY2VbJGktLV07CgogICAgICAgICAgICBpZiAoJHByZXYgPT09ICd7JykgewogICAgICAgICAgICAgICAgaWYgKCRzb3VyY2VbJGldID09PSAnIycpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRwcmV2ID09PSAnLycpIHsKICAgICAgICAgICAgICAgICRzZWNvbmQgPSAkc291cmNlWyRpLS1dOwoKICAgICAgICAgICAgICAgIGlmICgkc2Vjb25kID09PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJGkgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2hhciA9ICRzb3VyY2VbJGktLV07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNoYXIgIT09ICcqJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyID0gJHNvdXJjZVskaS0tXTsKICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoJGNoYXIgPT09ICcqJyAmJiAkaSA+PSAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpOwogICAgfQoKICAgIC8qKgogICAgICogR2l2ZW4gdGhlIGVuZCBvZiBhIHtAc2VlIEZpbGVTcGFufSBjb3ZlcmluZyBhbiBpbnRlcnBvbGF0ZWQgZXhwcmVzc2lvbiwgcmV0dXJucwogICAgICogdGhlIG9mZnNldCBvZiB0aGUgaW50ZXJwb2xhdGlvbidzIGNsb3NpbmcgYH1gLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4cGFuZEludGVycG9sYXRpb25TcGFuUmlnaHQoRmlsZUxvY2F0aW9uICRlbmQpOiBpbnQKICAgIHsKICAgICAgICAkc291cmNlID0gJGVuZC0+Z2V0RmlsZSgpLT5nZXRTdHJpbmcoKTsKICAgICAgICAkaSA9ICRlbmQtPmdldE9mZnNldCgpOwoKICAgICAgICB3aGlsZSAoJGkgPCBcc3RybGVuKCRzb3VyY2UpKSB7CiAgICAgICAgICAgICRuZXh0ID0gJHNvdXJjZVskaSsrXTsKCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJ30nKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZXh0ID09PSAnLycpIHsKICAgICAgICAgICAgICAgICRzZWNvbmQgPSAkc291cmNlWyRpKytdOwogICAgICAgICAgICAgICAgaWYgKCRzZWNvbmQgPT09ICcvJykgewogICAgICAgICAgICAgICAgICAgIHdoaWxlICghQ2hhcmFjdGVyOjppc05ld2xpbmUoJHNvdXJjZVskaSsrXSA/PyBudWxsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlIGZvcndhcmQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHNlY29uZCA9PT0gJyonKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXIgPSAkc291cmNlWyRpKytdID8/IG51bGw7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNoYXIgIT09ICcqJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyID0gJHNvdXJjZVskaSsrXSA/PyBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgkY2hhciA9PT0gJyonKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/KeyframeSelectorParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NGb3JtYXRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxDaGFyYWN0ZXI7CgovKioKICogQSBwYXJzZXIgZm9yIGBAa2V5ZnJhbWVzYCBibG9jayBzZWxlY3RvcnMuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgS2V5ZnJhbWVTZWxlY3RvclBhcnNlciBleHRlbmRzIFBhcnNlcgp7CiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxzdHJpbmc+CiAgICAgKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d3JhcFNwYW5Gb3JtYXRFeGNlcHRpb24oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkc2VsZWN0b3JzID0gW107CgogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdmcm9tJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGVjdG9yc1tdID0gJ2Zyb20nOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RJZGVudGlmaWVyKCd0bycsICcidG8iIG9yICJmcm9tIicpOwogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3JzW10gPSAndG8nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGVjdG9yc1tdID0gJHRoaXMtPnBlcmNlbnRhZ2UoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgIH0gd2hpbGUgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignLCcpKTsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdERvbmUoKTsKCiAgICAgICAgICAgIHJldHVybiAkc2VsZWN0b3JzOwogICAgICAgIH0pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcGVyY2VudGFnZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkYnVmZmVyID0gJyc7CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJysnKSkgewogICAgICAgICAgICAkYnVmZmVyIC49ICcrJzsKICAgICAgICB9CgogICAgICAgICRzZWNvbmQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgaWYgKCFDaGFyYWN0ZXI6OmlzRGlnaXQoJHNlY29uZCkgJiYgJHNlY29uZCAhPT0gJy4nKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgbnVtYmVyLicpOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKENoYXJhY3Rlcjo6aXNEaWdpdCgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSA9PT0gJy4nKSB7CiAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgICAgICB3aGlsZSAoQ2hhcmFjdGVyOjppc0RpZ2l0KCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSkgewogICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5zY2FuSWRlbnRDaGFyKCdlJykpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAnZSc7CiAgICAgICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgICAgICBpZiAoJG5leHQgPT09ICcrJyB8fCAkbmV4dCA9PT0gJy0nKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIUNoYXJhY3Rlcjo6aXNEaWdpdCgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgZGlnaXQuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHdoaWxlIChDaGFyYWN0ZXI6OmlzRGlnaXQoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignJScpOwogICAgICAgICRidWZmZXIgLj0gJyUnOwoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/LineScanner.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCi8qKgogKiBBIHN1YmNsYXNzIG9mIHtAc2VlIFN0cmluZ1NjYW5uZXJ9IHRoYXQgdHJhY2tzIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbi4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBMaW5lU2Nhbm5lciBleHRlbmRzIFN0cmluZ1NjYW5uZXIKewogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlIGludCAkbGluZSA9IDA7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlIGludCAkY29sdW1uID0gMDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZSgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxpbmU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbHVtbigpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbHVtbjsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYmV0d2VlbiBhIENSIGNoYXJhY3RlciBhbmQgYW4gTEYKICAgICAqIGNoYXJhY3Rlci4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBiZXR3ZWVuQ1JMRigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wZWVrQ2hhcigtMSkgPT09ICJcciIgJiYgJHRoaXMtPnBlZWtDaGFyKCkgPT09ICJcbiI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFBvc2l0aW9uKGludCAkcG9zaXRpb24pOiB2b2lkCiAgICB7CiAgICAgICAgJG5ld1Bvc2l0aW9uID0gJHBvc2l0aW9uOwogICAgICAgICRvbGRQb3NpdGlvbiA9ICR0aGlzLT5nZXRQb3NpdGlvbigpOwogICAgICAgIHBhcmVudDo6c2V0UG9zaXRpb24oJHBvc2l0aW9uKTsKCiAgICAgICAgaWYgKCRuZXdQb3NpdGlvbiA+ICRvbGRQb3NpdGlvbikgewogICAgICAgICAgICAkbmV3bGluZXMgPSAkdGhpcy0+bmV3bGluZXNJbigkdGhpcy0+c3Vic3RyaW5nKCRvbGRQb3NpdGlvbiwgJG5ld1Bvc2l0aW9uKSk7CiAgICAgICAgICAgICR0aGlzLT5saW5lICs9IFxjb3VudCgkbmV3bGluZXMpOwoKICAgICAgICAgICAgaWYgKCRuZXdsaW5lcyA9PT0gW10pIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jb2x1bW4gKz0gJG5ld1Bvc2l0aW9uIC0gJG9sZFBvc2l0aW9uOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGxhc3QgPSAkbmV3bGluZXNbXGNvdW50KCRuZXdsaW5lcykgLSAxXTsKICAgICAgICAgICAgICAgICRlbmQgPSAkbGFzdFsxXSArIFxzdHJsZW4oJGxhc3RbMF0pOwoKICAgICAgICAgICAgICAgICR0aGlzLT5jb2x1bW4gPSAkbmV3UG9zaXRpb24gLSAkZW5kOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG5ld2xpbmVzID0gJHRoaXMtPm5ld2xpbmVzSW4oJHRoaXMtPnN1YnN0cmluZygkbmV3UG9zaXRpb24sICRvbGRQb3NpdGlvbikpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5iZXR3ZWVuQ1JMRigpKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJG5ld2xpbmVzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+bGluZSAtPSBcY291bnQoJG5ld2xpbmVzKTsKCiAgICAgICAgICAgIGlmICgkbmV3bGluZXMgPT09IFtdKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29sdW1uIC09ICRvbGRQb3NpdGlvbiAtICRuZXdQb3NpdGlvbjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRsYXN0Q3JsZlBvc2l0aW9uID0gc3RycnBvcygkdGhpcy0+Z2V0U3RyaW5nKCksICJcclxuIiwgJG5ld1Bvc2l0aW9uKTsKICAgICAgICAgICAgICAgIGlmICgkbGFzdENybGZQb3NpdGlvbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkbGFzdENybGZQb3NpdGlvbiA9IC0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGxhc3RMZlBvc2l0aW9uID0gc3RycnBvcygkdGhpcy0+Z2V0U3RyaW5nKCksICJcbiIsICRuZXdQb3NpdGlvbik7CiAgICAgICAgICAgICAgICBpZiAoJGxhc3RMZlBvc2l0aW9uID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRsYXN0TGZQb3NpdGlvbiA9IC0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGxhc3ROZXdMaW5lUG9zaXRpb24gPSBtYXgoJGxhc3RDcmxmUG9zaXRpb24sICRsYXN0TGZQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29sdW1uID0gJG5ld1Bvc2l0aW9uIC0gJGxhc3ROZXdMaW5lUG9zaXRpb24gLSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBocHN0YW4taW1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzY2FuQ2hhcihzdHJpbmcgJGNoYXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCFwYXJlbnQ6OnNjYW5DaGFyKCRjaGFyKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+YWRqdXN0TGluZUFuZENvbHVtbigkY2hhcik7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGhwc3Rhbi1pbXB1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlYWRDaGFyKCk6IHN0cmluZwogICAgewogICAgICAgICRjaGFyYWN0ZXIgPSBwYXJlbnQ6OnJlYWRDaGFyKCk7CiAgICAgICAgJHRoaXMtPmFkanVzdExpbmVBbmRDb2x1bW4oJGNoYXJhY3Rlcik7CgogICAgICAgIHJldHVybiAkY2hhcmFjdGVyOwogICAgfQoKICAgIC8qKgogICAgICogQHBocHN0YW4taW1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkVXRmOENoYXIoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGNoYXJhY3RlciA9IHBhcmVudDo6cmVhZFV0ZjhDaGFyKCk7CiAgICAgICAgJHRoaXMtPmFkanVzdExpbmVBbmRDb2x1bW4oJGNoYXJhY3Rlcik7CgogICAgICAgIHJldHVybiAkY2hhcmFjdGVyOwogICAgfQoKICAgIC8qKgogICAgICogQWRqdXN0cyB7QHNlZSBsaW5lfSBhbmQge0BzZWUgY29sdW1ufSBhZnRlciBoYXZpbmcgY29uc3VtZWQgJGNoYXJhY3Rlci4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGp1c3RMaW5lQW5kQ29sdW1uKHN0cmluZyAkY2hhcmFjdGVyKTogdm9pZAogICAgewogICAgICAgIGlmICgkY2hhcmFjdGVyID09PSAiXG4iIHx8ICgkY2hhcmFjdGVyID09PSAiXHIiICYmICR0aGlzLT5wZWVrQ2hhcigpICE9PSAiXG4iKSkgewogICAgICAgICAgICAkdGhpcy0+bGluZSArPSAxOwogICAgICAgICAgICAkdGhpcy0+Y29sdW1uID0gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+Y29sdW1uICs9IFxzdHJsZW4oJGNoYXJhY3Rlcik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBocHN0YW4taW1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzY2FuKHN0cmluZyAkc3RyaW5nKTogYm9vbAogICAgewogICAgICAgIGlmICghcGFyZW50OjpzY2FuKCRzdHJpbmcpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRuZXdsaW5lcyA9ICR0aGlzLT5uZXdsaW5lc0luKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5saW5lICs9IFxjb3VudCgkbmV3bGluZXMpOwoKICAgICAgICBpZiAoJG5ld2xpbmVzID09PSBbXSkgewogICAgICAgICAgICAkdGhpcy0+Y29sdW1uICs9IFxzdHJsZW4oJHN0cmluZyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGxhc3QgPSAkbmV3bGluZXNbXGNvdW50KCRuZXdsaW5lcykgLSAxXTsKICAgICAgICAgICAgJGVuZCA9ICRsYXN0WzFdICsgXHN0cmxlbigkbGFzdFswXSk7CgogICAgICAgICAgICAkdGhpcy0+Y29sdW1uID0gXHN0cmxlbigkc3RyaW5nKSAtICRlbmQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxhcnJheXtzdHJpbmcsIGludH0+CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbmV3bGluZXNJbihzdHJpbmcgJHRleHQpOiBhcnJheQogICAgewogICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvXHJcbj98XG4vJywgJHRleHQsICRtYXRjaGVzLCBQUkVHX09GRlNFVF9DQVBUVVJFKTsKCiAgICAgICAgJG5ld2xpbmVzID0gJG1hdGNoZXNbMF07CgogICAgICAgIGlmICgkdGhpcy0+YmV0d2VlbkNSTEYoKSkgewogICAgICAgICAgICBhcnJheV9wb3AoJG5ld2xpbmVzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmV3bGluZXM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/MediaQueryParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NNZWRpYVF1ZXJ5Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzRm9ybWF0RXhjZXB0aW9uOwoKLyoqCiAqIEEgcGFyc2VyIGZvciBgQG1lZGlhYCBxdWVyaWVzLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE1lZGlhUXVlcnlQYXJzZXIgZXh0ZW5kcyBQYXJzZXIKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8Q3NzTWVkaWFRdWVyeT4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NGb3JtYXRFeGNlcHRpb24gd2hlbiBwYXJzaW5nIGZhaWxzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d3JhcFNwYW5Gb3JtYXRFeGNlcHRpb24oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkcXVlcmllcyA9IFtdOwoKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICRxdWVyaWVzW10gPSAkdGhpcy0+bWVkaWFRdWVyeSgpOwogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgfSB3aGlsZSAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcsJykpOwogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0RG9uZSgpOwoKICAgICAgICAgICAgcmV0dXJuICRxdWVyaWVzOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBzaW5nbGUgbWVkaWEgcXVlcnkuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWVkaWFRdWVyeSgpOiBDc3NNZWRpYVF1ZXJ5CiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpID09PSAnKCcpIHsKICAgICAgICAgICAgJGNvbmRpdGlvbnMgPSBbJHRoaXMtPm1lZGlhSW5QYXJlbnMoKV07CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICAkY29uanVuY3Rpb24gPSB0cnVlOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FuSWRlbnRpZmllcignYW5kJykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAkY29uZGl0aW9ucyA9IGFycmF5X21lcmdlKCRjb25kaXRpb25zLCAkdGhpcy0+bWVkaWFMb2dpY1NlcXVlbmNlKCdhbmQnKSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkdGhpcy0+c2NhbklkZW50aWZpZXIoJ29yJykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAkY29uanVuY3Rpb24gPSBmYWxzZTsKICAgICAgICAgICAgICAgICRjb25kaXRpb25zID0gYXJyYXlfbWVyZ2UoJGNvbmRpdGlvbnMsICR0aGlzLT5tZWRpYUxvZ2ljU2VxdWVuY2UoJ29yJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gQ3NzTWVkaWFRdWVyeTo6Y29uZGl0aW9uKCRjb25kaXRpb25zLCAkY29uanVuY3Rpb24pOwogICAgICAgIH0KICAgICAgICAkbW9kaWZpZXIgPSBudWxsOwogICAgICAgICR0eXBlID0gbnVsbDsKCiAgICAgICAgJGlkZW50aWZpZXIxID0gJHRoaXMtPmlkZW50aWZpZXIoKTsKCiAgICAgICAgaWYgKHN0cnRvbG93ZXIoJGlkZW50aWZpZXIxKSA9PT0gJ25vdCcpIHsKICAgICAgICAgICAgJHRoaXMtPmV4cGVjdFdoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIGlmICghJHRoaXMtPmxvb2tpbmdBdElkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICJAbWVkaWEgbm90ICguLi4pIHsiCiAgICAgICAgICAgICAgICByZXR1cm4gQ3NzTWVkaWFRdWVyeTo6Y29uZGl0aW9uKFsnKG5vdCAnIC4gJHRoaXMtPm1lZGlhSW5QYXJlbnMoKSAuICcpJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICJAbWVkaWEgc2NyZWVuIHsiCiAgICAgICAgICAgIHJldHVybiBDc3NNZWRpYVF1ZXJ5Ojp0eXBlKCRpZGVudGlmaWVyMSk7CiAgICAgICAgfQoKICAgICAgICAkaWRlbnRpZmllcjIgPSAkdGhpcy0+aWRlbnRpZmllcigpOwoKICAgICAgICBpZiAoc3RydG9sb3dlcigkaWRlbnRpZmllcjIpID09PSAnYW5kJykgewogICAgICAgICAgICAkdGhpcy0+ZXhwZWN0V2hpdGVzcGFjZSgpOwogICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgIkBtZWRpYSBzY3JlZW4gYW5kIC4uLiIKICAgICAgICAgICAgJHR5cGUgPSAkaWRlbnRpZmllcjE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJG1vZGlmaWVyID0gJGlkZW50aWZpZXIxOwogICAgICAgICAgICAkdHlwZSA9ICRpZGVudGlmaWVyMjsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2NhbklkZW50aWZpZXIoJ2FuZCcpKSB7CiAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgIkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgLi4uIgogICAgICAgICAgICAgICAgJHRoaXMtPmV4cGVjdFdoaXRlc3BhY2UoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCAiQG1lZGlhIG9ubHkgc2NyZWVuIHsiCiAgICAgICAgICAgICAgICByZXR1cm4gQ3NzTWVkaWFRdWVyeTo6dHlwZSgkdHlwZSwgJG1vZGlmaWVyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gV2UndmUgY29uc3VtZWQgZWl0aGVyIGBJREVOVElGSUVSICJhbmQiYCBvcgogICAgICAgIC8vIGBJREVOVElGSUVSIElERU5USUZJRVIgImFuZCJgLgoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdub3QnKSkgewogICAgICAgICAgICAkdGhpcy0+ZXhwZWN0V2hpdGVzcGFjZSgpOwogICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgIkBtZWRpYSBzY3JlZW4gYW5kIG5vdCAoLi4uKSB7IgogICAgICAgICAgICByZXR1cm4gQ3NzTWVkaWFRdWVyeTo6dHlwZSgkdHlwZSwgJG1vZGlmaWVyLCBbJyhub3QgJyAuICR0aGlzLT5tZWRpYUluUGFyZW5zKCkgLiAnKSddKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBDc3NNZWRpYVF1ZXJ5Ojp0eXBlKCR0eXBlLCAkbW9kaWZpZXIsICR0aGlzLT5tZWRpYUxvZ2ljU2VxdWVuY2UoJ2FuZCcpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIG9uZSBvciBtb3JlIGA8bWVkaWEtaW4tcGFyZW5zPmAgZXhwcmVzc2lvbnMgc2VwYXJhdGVkIGJ5CiAgICAgKiAkb3BlcmF0b3IgYW5kIHJldHVybnMgdGhlbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1lZGlhTG9naWNTZXF1ZW5jZShzdHJpbmcgJG9wZXJhdG9yKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJHRoaXMtPm1lZGlhSW5QYXJlbnMoKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIGlmICghJHRoaXMtPnNjYW5JZGVudGlmaWVyKCRvcGVyYXRvcikpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5leHBlY3RXaGl0ZXNwYWNlKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgPG1lZGlhLWluLXBhcmVucz5gIGV4cHJlc3Npb24gYW5kIHJldHVybnMgaXQsIHBhcmVudGhlc2VzCiAgICAgKiBpbmNsdWRlZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBtZWRpYUluUGFyZW5zKCk6IHN0cmluZwogICAgewogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcoJywgJ21lZGlhIGNvbmRpdGlvbiBpbiBwYXJlbnRoZXNlcycpOwogICAgICAgICRyZXN1bHQgPSAnKCcgLiAkdGhpcy0+ZGVjbGFyYXRpb25WYWx1ZSgpIC4gJyknOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/MultiSourceFormatException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTXVsdGlTb3VyY2VGb3JtYXRFeGNlcHRpb24gZXh0ZW5kcyBGb3JtYXRFeGNlcHRpb24KewogICAgLyoqCiAgICAgKiB7QHNlZSBNdWx0aVNwYW5TYXNzRXhjZXB0aW9uOjokcHJpbWFyeUxhYmVsfQogICAgICovCiAgICBwdWJsaWMgcmVhZG9ubHkgc3RyaW5nICRwcmltYXJ5TGFiZWw7CiAgICAvKioKICAgICAqIHtAc2VlIE11bHRpU3BhblNhc3NFeGNlcHRpb246OiRzZWNvbmRhcnlTcGFuc30KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgRmlsZVNwYW4+CiAgICAgKi8KICAgIHB1YmxpYyByZWFkb25seSBhcnJheSAkc2Vjb25kYXJ5U3BhbnM7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBGaWxlU3Bhbj4gJHNlY29uZGFyeVNwYW5zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG1lc3NhZ2UsIEZpbGVTcGFuICRzcGFuLCBzdHJpbmcgJHByaW1hcnlMYWJlbCwgYXJyYXkgJHNlY29uZGFyeVNwYW5zLCA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5wcmltYXJ5TGFiZWwgPSAkcHJpbWFyeUxhYmVsOwogICAgICAgICR0aGlzLT5zZWNvbmRhcnlTcGFucyA9ICRzZWNvbmRhcnlTcGFuczsKCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJHNwYW4sICRwcmV2aW91cyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXE11bHRpU3BhblNhc3NGb3JtYXRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NGb3JtYXRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNpbXBsZVNhc3NGb3JtYXRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcTG9nZ2VyXExvZ2dlckludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcUXVpZXRMb2dnZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcU291cmNlU3BhblxMYXp5RmlsZVNwYW47CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxDaGFyYWN0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxQYXJzZXJVdGlsOwp1c2UgU291cmNlU3BhblxGaWxlTG9jYXRpb247CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgUGFyc2VyCnsKICAgIHByb3RlY3RlZCByZWFkb25seSBTdHJpbmdTY2FubmVyICRzY2FubmVyOwoKICAgIHByb3RlY3RlZCByZWFkb25seSBMb2dnZXJJbnRlcmZhY2UgJGxvZ2dlcjsKCiAgICAvKioKICAgICAqIEEgbWFwIHVzZWQgdG8gbWFwIHNvdXJjZSBzcGFucyBpbiB0aGUgdGV4dCBiZWluZyBwYXJzZWQgYmFjayB0byB0aGVpcgogICAgICogb3JpZ2luYWwgbG9jYXRpb25zIGluIHRoZSBzb3VyY2UgZmlsZSwgaWYgdGhpcyBpc24ndCBiZWluZyBwYXJzZWQgZGlyZWN0bHkKICAgICAqIGZyb20gc291cmNlLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5ID9JbnRlcnBvbGF0aW9uTWFwICRpbnRlcnBvbGF0aW9uTWFwOwoKICAgIC8qKgogICAgICogUGFyc2VzICR0ZXh0IGFzIGEgQ1NTIGlkZW50aWZpZXIgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NGb3JtYXRFeGNlcHRpb24gaWYgcGFyc2luZyBmYWlscy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZUlkZW50aWZpZXIoc3RyaW5nICR0ZXh0LCA/TG9nZ2VySW50ZXJmYWNlICRsb2dnZXIgPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIChuZXcgUGFyc2VyKCR0ZXh0LCAkbG9nZ2VyKSktPmRvUGFyc2VJZGVudGlmaWVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJHRleHQgaXMgYSB2YWxpZCBDU1MgaWRlbnRpZmllci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0lkZW50aWZpZXIoc3RyaW5nICR0ZXh0LCA/TG9nZ2VySW50ZXJmYWNlICRsb2dnZXIgPSBudWxsKTogYm9vbAogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkdGV4dCwgJGxvZ2dlcik7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChTYXNzRm9ybWF0RXhjZXB0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkY29udGVudHMsID9Mb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciA9IG51bGwsID9VcmlJbnRlcmZhY2UgJHNvdXJjZVVybCA9IG51bGwsID9JbnRlcnBvbGF0aW9uTWFwICRpbnRlcnBvbGF0aW9uTWFwID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+c2Nhbm5lciA9IG5ldyBTdHJpbmdTY2FubmVyKCRjb250ZW50cywgJHNvdXJjZVVybCk7CiAgICAgICAgJHRoaXMtPmxvZ2dlciA9ICRsb2dnZXIgPz8gbmV3IFF1aWV0TG9nZ2VyKCk7CiAgICAgICAgJHRoaXMtPmludGVycG9sYXRpb25NYXAgPSAkaW50ZXJwb2xhdGlvbk1hcDsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRvUGFyc2VJZGVudGlmaWVyKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d3JhcFNwYW5Gb3JtYXRFeGNlcHRpb24oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdERvbmUoKTsKCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGFueSBjb21tZW50cy4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHdoaXRlc3BhY2UoKTogdm9pZAogICAgewogICAgICAgIGRvIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2VXaXRob3V0Q29tbWVudHMoKTsKICAgICAgICB9IHdoaWxlICgkdGhpcy0+c2NhbkNvbW1lbnQoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyB3aGl0ZXNwYWNlLCBidXQgbm90IGNvbW1lbnRzLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gd2hpdGVzcGFjZVdpdGhvdXRDb21tZW50cygpOiB2b2lkCiAgICB7CiAgICAgICAgd2hpbGUgKCEkdGhpcy0+c2Nhbm5lci0+aXNEb25lKCkgJiYgQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIHNwYWNlcyBhbmQgdGFicy4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNwYWNlcygpOiB2b2lkCiAgICB7CiAgICAgICAgd2hpbGUgKCEkdGhpcy0+c2Nhbm5lci0+aXNEb25lKCkgJiYgQ2hhcmFjdGVyOjppc1NwYWNlT3JUYWIoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuZCBpZ25vcmVzIGEgY29tbWVudCBpZiBwb3NzaWJsZS4KICAgICAqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGNvbW1lbnQgd2FzIGNvbnN1bWVkLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2NhbkNvbW1lbnQoKTogYm9vbAogICAgewogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSAhPT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpOwoKICAgICAgICBpZiAoJG5leHQgPT09ICcvJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNpbGVudENvbW1lbnQoKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbmV4dCA9PT0gJyonKSB7CiAgICAgICAgICAgICR0aGlzLT5sb3VkQ29tbWVudCgpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgd2hpdGVzcGFjZX0sIGJ1dCB0aHJvd3MgYW4gZXJyb3IgaWYgbm8gd2hpdGVzcGFjZSBpcyBjb25zdW1lZC4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4cGVjdFdoaXRlc3BhY2UoKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+aXNEb25lKCkgfHwgIShDaGFyYWN0ZXI6OmlzV2hpdGVzcGFjZSgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkgfHwgJHRoaXMtPnNjYW5Db21tZW50KCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgd2hpdGVzcGFjZS4nKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhbmQgaWdub3JlcyBhIHNpbmdsZSBzaWxlbnQgKFNhc3Mtc3R5bGUpIGNvbW1lbnQsIG5vdCBpbmNsdWRpbmcKICAgICAqIHRoZSB0cmFpbGluZyBuZXdsaW5lLgogICAgICoKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgY29tbWVudCB3YXMgY29uc3VtZWQuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzaWxlbnRDb21tZW50KCk6IGJvb2wKICAgIHsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0KCcvLycpOwoKICAgICAgICB3aGlsZSAoISR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSAmJiAhQ2hhcmFjdGVyOjppc05ld2xpbmUoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhbmQgaWdub3JlcyBhIGxvdWQgKENTUy1zdHlsZSkgY29tbWVudC4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxvdWRDb21tZW50KCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0KCcvKicpOwoKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwoKICAgICAgICAgICAgaWYgKCRuZXh0ICE9PSAnKicpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICB9IHdoaWxlICgkbmV4dCA9PT0gJyonKTsKCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJy8nKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgcGxhaW4gQ1NTIGlkZW50aWZpZXIuCiAgICAgKgogICAgICogSWYgJG5vcm1hbGl6ZSBpcyBgdHJ1ZWAsIHRoaXMgY29udmVydHMgdW5kZXJzY29yZXMgaW50byBoeXBoZW5zLgogICAgICoKICAgICAqIElmICR1bml0IGlzIGB0cnVlYCwgdGhpcyBkb2Vzbid0IHBhcnNlIGEgYC1gIGZvbGxvd2VkIGJ5IGEgZGlnaXQuIFRoaXMKICAgICAqIGVuc3VyZXMgdGhhdCBgMXB4LTJweGAgcGFyc2VzIGFzIHN1YnRyYWN0aW9uIHJhdGhlciB0aGFuIHRoZSB1bml0CiAgICAgKiBgcHgtMnB4YC4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlkZW50aWZpZXIoYm9vbCAkbm9ybWFsaXplID0gZmFsc2UsIGJvb2wgJHVuaXQgPSBmYWxzZSk6IHN0cmluZwogICAgewogICAgICAgICR0ZXh0ID0gJyc7CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJy0nKSkgewogICAgICAgICAgICAkdGV4dCAuPSAnLSc7CgoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignLScpKSB7CiAgICAgICAgICAgICAgICAkdGV4dCAuPSAnLSc7CiAgICAgICAgICAgICAgICAkdGV4dCAuPSAkdGhpcy0+Y29uc3VtZUlkZW50aWZpZXJCb2R5KCRub3JtYWxpemUsICR1bml0KTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJHRleHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRmaXJzdCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICBpZiAoJGZpcnN0ID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgaWRlbnRpZmllci4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbm9ybWFsaXplICYmICRmaXJzdCA9PT0gJ18nKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAkdGV4dCAuPSAnLSc7CiAgICAgICAgfSBlbHNlaWYgKENoYXJhY3Rlcjo6aXNOYW1lU3RhcnQoJGZpcnN0KSkgewogICAgICAgICAgICAkdGV4dCAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZFV0ZjhDaGFyKCk7CiAgICAgICAgfSBlbHNlaWYgKCRmaXJzdCA9PT0gJ1xcJykgewogICAgICAgICAgICAkdGV4dCAuPSAkdGhpcy0+ZXNjYXBlKHRydWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgaWRlbnRpZmllci4nKTsKICAgICAgICB9CgogICAgICAgICR0ZXh0IC49ICR0aGlzLT5jb25zdW1lSWRlbnRpZmllckJvZHkoJG5vcm1hbGl6ZSwgJHVuaXQpOwoKICAgICAgICByZXR1cm4gJHRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGNodW5rIG9mIGEgcGxhaW4gQ1NTIGlkZW50aWZpZXIgYWZ0ZXIgdGhlIG5hbWUgc3RhcnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpZGVudGlmaWVyQm9keSgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkdGV4dCA9ICR0aGlzLT5jb25zdW1lSWRlbnRpZmllckJvZHkoKTsKCiAgICAgICAgaWYgKCR0ZXh0ID09PSAnJykgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGlkZW50aWZpZXIgYm9keS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnN1bWVJZGVudGlmaWVyQm9keShib29sICRub3JtYWxpemUgPSBmYWxzZSwgYm9vbCAkdW5pdCA9IGZhbHNlKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHRleHQgPSAnJzsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdW5pdCAmJiAkbmV4dCA9PT0gJy0nKSB7CiAgICAgICAgICAgICAgICAkc2Vjb25kID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpOwoKICAgICAgICAgICAgICAgIGlmICgkc2Vjb25kICE9PSBudWxsICYmICgkc2Vjb25kID09PSAnLicgfHwgQ2hhcmFjdGVyOjppc0RpZ2l0KCRzZWNvbmQpKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0ZXh0IC49ICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICB9IGVsc2VpZiAoJG5vcm1hbGl6ZSAmJiAkbmV4dCA9PT0gJ18nKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICR0ZXh0IC49ICctJzsKICAgICAgICAgICAgfSBlbHNlaWYgKENoYXJhY3Rlcjo6aXNOYW1lKCRuZXh0KSkgewogICAgICAgICAgICAgICAgJHRleHQgLj0gJHRoaXMtPnNjYW5uZXItPnJlYWRVdGY4Q2hhcigpOwogICAgICAgICAgICB9IGVsc2VpZiAoJG5leHQgPT09ICdcXCcpIHsKICAgICAgICAgICAgICAgICR0ZXh0IC49ICR0aGlzLT5lc2NhcGUoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIHBsYWluIENTUyBzdHJpbmcuCiAgICAgKgogICAgICogVGhpcyByZXR1cm5zIHRoZSBwYXJzZWQgY29udGVudHMgb2YgdGhlIHN0cmluZ+KAlHRoYXQgaXMsIGl0IGRvZXNuJ3QgaW5jbHVkZQogICAgICogcXVvdGVzIGFuZCBpdHMgZXNjYXBlcyBhcmUgcmVzb2x2ZWQuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHF1b3RlID0gJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgIGlmICgkcXVvdGUgIT09ICciJyAmJiAkcXVvdGUgIT09ICInIikgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIHN0cmluZy4nKTsKICAgICAgICB9CgogICAgICAgICRidWZmZXIgPSAnJzsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJHF1b3RlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG5leHQgPT09IG51bGwgfHwgQ2hhcmFjdGVyOjppc05ld2xpbmUoJG5leHQpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoIkV4cGVjdGVkICRxdW90ZS4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZXh0ID09PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAkc2Vjb25kID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpOwoKICAgICAgICAgICAgICAgIGlmICgkc2Vjb25kICE9PSBudWxsICYmIENoYXJhY3Rlcjo6aXNOZXdsaW5lKCRzZWNvbmQpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPmVzY2FwZUNoYXJhY3RlcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZFV0ZjhDaGFyKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW5kIHJldHVybnMgYSBuYXR1cmFsIG51bWJlciAodGhhdCBpcywgYSBub24tbmVnYXRpdmUgaW50ZWdlcikgYXMgYSBkb3VibGUuCiAgICAgKgogICAgICogRG9lc24ndCBzdXBwb3J0IHNjaWVudGlmaWMgbm90YXRpb24uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBuYXR1cmFsTnVtYmVyKCk6IGZsb2F0CiAgICB7CiAgICAgICAgJGZpcnN0ID0gJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgIGlmICghQ2hhcmFjdGVyOjppc0RpZ2l0KCRmaXJzdCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCBkaWdpdC4nLCAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKSAtIDEpOwogICAgICAgIH0KCiAgICAgICAgJG51bWJlciA9IChmbG9hdCkgaW50dmFsKCRmaXJzdCk7CgogICAgICAgIHdoaWxlIChDaGFyYWN0ZXI6OmlzRGlnaXQoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpKSB7CiAgICAgICAgICAgICRudW1iZXIgKj0gMTA7CiAgICAgICAgICAgICRudW1iZXIgKz0gaW50dmFsKCR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgdG9rZW5zIHVudGlsIGl0IHJlYWNoZXMgYSB0b3AtbGV2ZWwgYCI7ImAsIGAiKSJgLCBgIl0iYCwKICAgICAqIG9yIGAifSJgIGFuZCByZXR1cm5zIHRoZWlyIGNvbnRlbnRzIGFzIGEgc3RyaW5nLgogICAgICoKICAgICAqIElmICRhbGxvd0VtcHR5IGlzIGBmYWxzZWAgKHRoZSBkZWZhdWx0KSwgdGhpcyByZXF1aXJlcyBhdCBsZWFzdCBvbmUgdG9rZW4uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBkZWNsYXJhdGlvblZhbHVlKGJvb2wgJGFsbG93RW1wdHkgPSBmYWxzZSk6IHN0cmluZwogICAgewogICAgICAgICRidWZmZXIgPSAnJzsKICAgICAgICAkYnJhY2tldHMgPSBbXTsKICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgICAgICBpZiAoJG5leHQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBzd2l0Y2ggKCRuZXh0KSB7CiAgICAgICAgICAgICAgICBjYXNlICdcXCc6CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+ZXNjYXBlKHRydWUpOwogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICciJzoKICAgICAgICAgICAgICAgIGNhc2UgIiciOgogICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPnJhd1RleHQoJHRoaXMtPnN0cmluZyguLi4pKTsKICAgICAgICAgICAgICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKSA9PT0gJyonKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPnJhd1RleHQoJHRoaXMtPmxvdWRDb21tZW50KC4uLikpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcgJzoKICAgICAgICAgICAgICAgIGNhc2UgIlx0IjoKICAgICAgICAgICAgICAgICAgICAkc2Vjb25kID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpOwogICAgICAgICAgICAgICAgICAgIGlmICgkd3JvdGVOZXdsaW5lIHx8ICRzZWNvbmQgPT09IG51bGwgfHwgIUNoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCRzZWNvbmQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJyAnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICJcbiI6CiAgICAgICAgICAgICAgICBjYXNlICJcciI6CiAgICAgICAgICAgICAgICBjYXNlICJcZiI6CiAgICAgICAgICAgICAgICAgICAgJHByZXYgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoLTEpOwogICAgICAgICAgICAgICAgICAgIGlmICgkcHJldiA9PT0gbnVsbCB8fCAhQ2hhcmFjdGVyOjppc05ld2xpbmUoJHByZXYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gIlxuIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgJHdyb3RlTmV3bGluZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnKCc6CiAgICAgICAgICAgICAgICBjYXNlICd7JzoKICAgICAgICAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJG5leHQ7CiAgICAgICAgICAgICAgICAgICAgJGJyYWNrZXRzW10gPSBDaGFyYWN0ZXI6Om9wcG9zaXRlKCR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpKTsKICAgICAgICAgICAgICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnKSc6CiAgICAgICAgICAgICAgICBjYXNlICd9JzoKICAgICAgICAgICAgICAgIGNhc2UgJ10nOgogICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkYnJhY2tldHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIDI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICRuZXh0OwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKGFycmF5X3BvcCgkYnJhY2tldHMpKTsKICAgICAgICAgICAgICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnOyc6CiAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRicmFja2V0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgICAgICAgICAkdXJsID0gJHRoaXMtPnRyeVVybCgpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHVybCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICR1cmw7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bG9va2luZ0F0SWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5zY2FubmVyLT5yZWFkVXRmOENoYXIoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHdyb3RlTmV3bGluZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRicmFja2V0cykpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoYXJyYXlfcG9wKCRicmFja2V0cykpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkYWxsb3dFbXB0eSAmJiAkYnVmZmVyID09PSAnJykgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIHRva2VuLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGB1cmwoKWAgdG9rZW4gaWYgcG9zc2libGUsIGFuZCByZXR1cm5zIGBudWxsYCBvdGhlcndpc2UuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB0cnlVcmwoKTogP3N0cmluZwogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwoKICAgICAgICBpZiAoISR0aGlzLT5zY2FuSWRlbnRpZmllcigndXJsJykpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignKCcpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5zZXRQb3NpdGlvbigkc3RhcnQpOwoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkYnVmZmVyID0gJ3VybCgnOwoKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICAgICAgaWYgKCRuZXh0ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5leHRDaGFyQ29kZSA9IFxvcmQoJG5leHQpOwoKICAgICAgICAgICAgaWYgKCRuZXh0ID09PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5lc2NhcGUoKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRuZXh0ID09PSAnJScgfHwgJG5leHQgPT09ICcmJyB8fCAkbmV4dCA9PT0gJyMnIHx8ICgkbmV4dENoYXJDb2RlID49IFxvcmQoJyonKSAmJiAkbmV4dENoYXJDb2RlIDw9IFxvcmQoJ34nKSkgfHwgJG5leHRDaGFyQ29kZSA+PSAweDgwKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5zY2FubmVyLT5yZWFkVXRmOENoYXIoKTsKICAgICAgICAgICAgfSBlbHNlaWYgKENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCRuZXh0KSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgIT09ICcpJykgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJG5leHQgPT09ICcpJykgewogICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHN0YXJ0KTsKCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIFNhc3MgdmFyaWFibGUgbmFtZSwgYW5kIHJldHVybnMgaXRzIG5hbWUgd2l0aG91dCB0aGUgZG9sbGFyIHNpZ24uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB2YXJpYWJsZU5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyQnKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5pZGVudGlmaWVyKHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gZXNjYXBlIHNlcXVlbmNlIGFuZCByZXR1cm5zIHRoZSB0ZXh0IHRoYXQgZGVmaW5lcyBpdC4KICAgICAqCiAgICAgKiBJZiAkaWRlbnRpZmllclN0YXJ0IGlzIHRydWUsIHRoaXMgbm9ybWFsaXplcyB0aGUgZXNjYXBlIHNlcXVlbmNlIGFzCiAgICAgKiB0aG91Z2ggaXQgd2VyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50aWZpZXIuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBlc2NhcGUoYm9vbCAkaWRlbnRpZmllclN0YXJ0ID0gZmFsc2UpOiBzdHJpbmcKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJ1xcJyk7CgogICAgICAgICRmaXJzdCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICBpZiAoJGZpcnN0ID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgZXNjYXBlIHNlcXVlbmNlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKENoYXJhY3Rlcjo6aXNOZXdsaW5lKCRmaXJzdCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCBlc2NhcGUgc2VxdWVuY2UuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc0hleCgkZmlyc3QpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IDA7CiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IDY7ICRpKyspIHsKICAgICAgICAgICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgICAgICAgICAgaWYgKCRuZXh0ID09PSBudWxsIHx8ICFDaGFyYWN0ZXI6OmlzSGV4KCRuZXh0KSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR2YWx1ZSAqPSAxNjsKICAgICAgICAgICAgICAgICR2YWx1ZSArPSBoZXhkZWMoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgYXNzZXJ0KFxpc19pbnQoJHZhbHVlKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zY2FuQ2hhcklmKENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKC4uLikpOwogICAgICAgICAgICAkdmFsdWVUZXh0ID0gbWJfY2hyKCR2YWx1ZSwgJ1VURi04Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHZhbHVlVGV4dCA9ICR0aGlzLT5zY2FubmVyLT5yZWFkVXRmOENoYXIoKTsKICAgICAgICAgICAgJHZhbHVlID0gbWJfb3JkKCR2YWx1ZVRleHQsICdVVEYtOCcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZVRleHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignSW52YWxpZCBVbmljb2RlIGNvZGUgcG9pbnQuJywgJHN0YXJ0LCAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKSAtICRzdGFydCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGlkZW50aWZpZXJTdGFydCA/IENoYXJhY3Rlcjo6aXNOYW1lU3RhcnQoJHZhbHVlVGV4dCkgOiBDaGFyYWN0ZXI6OmlzTmFtZSgkdmFsdWVUZXh0KSkgewogICAgICAgICAgICBpZiAoJHZhbHVlID4gMHgxMGZmZmYpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignSW52YWxpZCBVbmljb2RlIGNvZGUgcG9pbnQuJywgJHN0YXJ0LCAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKSAtICRzdGFydCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdmFsdWVUZXh0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSA8PSAweDFmIHx8ICR2YWx1ZVRleHQgPT09ICJceDdmIiB8fCAoJGlkZW50aWZpZXJTdGFydCAmJiBDaGFyYWN0ZXI6OmlzRGlnaXQoJHZhbHVlVGV4dCkpKSB7CiAgICAgICAgICAgICRoZXhWYWx1ZVRleHQgPSAkdmFsdWUgPT09IDAgPyAnMCcgOiBsdHJpbShiaW4yaGV4KCR2YWx1ZVRleHQpLCAnMCcpOwogICAgICAgICAgICByZXR1cm4gJ1xcJyAuICRoZXhWYWx1ZVRleHQgLiAnICc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ1xcJyAuICR2YWx1ZVRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhbiBlc2NhcGUgc2VxdWVuY2UgYW5kIHJldHVybnMgdGhlIGNoYXJhY3RlciBpdCByZXByZXNlbnRzLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXNjYXBlQ2hhcmFjdGVyKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBQYXJzZXJVdGlsOjpjb25zdW1lRXNjYXBlZENoYXJhY3RlcigkdGhpcy0+c2Nhbm5lcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoc3RyaW5nKTogYm9vbCAkY29uZGl0aW9uCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNvbmRpdGlvbgogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2NhbkNoYXJJZihjYWxsYWJsZSAkY29uZGl0aW9uKTogYm9vbAogICAgewogICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgIGlmICgkbmV4dCA9PT0gbnVsbCB8fCAhJGNvbmRpdGlvbigkbmV4dCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgdGhlIG5leHQgY2hhcmFjdGVyIG9yIGVzY2FwZSBzZXF1ZW5jZSBpZiBpdCBtYXRjaGVzICRjaGFyYWN0ZXIuCiAgICAgKgogICAgICogTWF0Y2hpbmcgd2lsbCBiZSBjYXNlLWluc2Vuc2l0aXZlIHVubGVzcyAkY2FzZVNlbnNpdGl2ZSBpcyB0cnVlLgogICAgICogV2hlbiBtYXRjaGluZyBjYXNlLWluc2Vuc2l0aXZlbHksICRjaGFyYWN0ZXIgbXVzdCBiZSBwYXNzZWQgaW4gbG93ZXJjYXNlLgogICAgICoKICAgICAqIFRoaXMgb25seSBzdXBwb3J0cyBBU0NJSSBpZGVudGlmaWVyIGNoYXJhY3RlcnMuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzY2FuSWRlbnRDaGFyKHN0cmluZyAkY2hhcmFjdGVyLCBib29sICRjYXNlU2Vuc2l0aXZlID0gZmFsc2UpOiBib29sCiAgICB7CiAgICAgICAgJG1hdGNoZXMgPSBmdW5jdGlvbiAoc3RyaW5nICRhY3R1YWwpIHVzZSAoJGNoYXJhY3RlciwgJGNhc2VTZW5zaXRpdmUpOiBib29sIHsKICAgICAgICAgICAgaWYgKCRjYXNlU2Vuc2l0aXZlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGFjdHVhbCA9PT0gJGNoYXJhY3RlcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFxzdHJ0b2xvd2VyKCRhY3R1YWwpID09PSAkY2hhcmFjdGVyOwogICAgICAgIH07CgogICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgIGlmICgkbmV4dCAhPT0gbnVsbCAmJiAkbWF0Y2hlcygkbmV4dCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkbmV4dCA9PT0gJ1xcJykgewogICAgICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgICAgIGlmICgkbWF0Y2hlcygkdGhpcy0+ZXNjYXBlQ2hhcmFjdGVyKCkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNldFBvc2l0aW9uKCRzdGFydCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyB0aGUgbmV4dCBjaGFyYWN0ZXIgb3IgZXNjYXBlIHNlcXVlbmNlIGFuZCBhc3NlcnRzIGl0IG1hdGNoZXMgJGNoYXIuCiAgICAgKgogICAgICogTWF0Y2hpbmcgd2lsbCBiZSBjYXNlLWluc2Vuc2l0aXZlIHVubGVzcyAkY2FzZVNlbnNpdGl2ZSBpcyB0cnVlLgogICAgICogV2hlbiBtYXRjaGluZyBjYXNlLWluc2Vuc2l0aXZlbHksICRjaGFyIG11c3QgYmUgcGFzc2VkIGluIGxvd2VyY2FzZS4KICAgICAqCiAgICAgKiBUaGlzIG9ubHkgc3VwcG9ydHMgQVNDSUkgaWRlbnRpZmllciBjaGFyYWN0ZXJzLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXhwZWN0SWRlbnRDaGFyKHN0cmluZyAkY2hhciwgYm9vbCAkY2FzZVNlbnNpdGl2ZSA9IGZhbHNlKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+c2NhbklkZW50Q2hhcigkY2hhciwgJGNhc2VTZW5zaXRpdmUpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcigiRXhwZWN0ZWQgXCIkY2hhclwiLiIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBzY2FubmVyIGlzIGltbWVkaWF0ZWx5IGJlZm9yZSBhIG51bWJlci4KICAgICAqCiAgICAgKiBUaGlzIGZvbGxvd3MgW3RoZSBDU1MgYWxnb3JpdGhtXVtdLgogICAgICoKICAgICAqIFt0aGUgQ1NTIGFsZ29yaXRobV06IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LTMvI3N0YXJ0cy13aXRoLWEtbnVtYmVyCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsb29raW5nQXROdW1iZXIoKTogYm9vbAogICAgewogICAgICAgICRmaXJzdCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICBpZiAoJGZpcnN0ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChDaGFyYWN0ZXI6OmlzRGlnaXQoJGZpcnN0KSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmlyc3QgPT09ICcuJykgewogICAgICAgICAgICAkc2Vjb25kID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpOwoKICAgICAgICAgICAgcmV0dXJuICRzZWNvbmQgIT09IG51bGwgJiYgQ2hhcmFjdGVyOjppc0RpZ2l0KCRzZWNvbmQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmaXJzdCA9PT0gJysnIHx8ICRmaXJzdCA9PT0gJy0nKSB7CiAgICAgICAgICAgICRzZWNvbmQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSk7CgogICAgICAgICAgICBpZiAoJHNlY29uZCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc0RpZ2l0KCRzZWNvbmQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRzZWNvbmQgIT09ICcuJykgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcmQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMik7CgogICAgICAgICAgICByZXR1cm4gJHRoaXJkICE9PSBudWxsICYmIENoYXJhY3Rlcjo6aXNEaWdpdCgkdGhpcmQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBzY2FubmVyIGlzIGltbWVkaWF0ZWx5IGJlZm9yZSBhIHBsYWluIENTUyBpZGVudGlmaWVyLgogICAgICoKICAgICAqIElmICRmb3J3YXJkIGlzIHBhc3NlZCwgdGhpcyBsb29rcyB0aGF0IG1hbnkgY2hhcmFjdGVycyBmb3J3YXJkIGluc3RlYWQuCiAgICAgKgogICAgICogVGhpcyBpcyBiYXNlZCBvbiBbdGhlIENTUyBhbGdvcml0aG1dW10sIGJ1dCBpdCBhc3N1bWVzIGFsbCBiYWNrc2xhc2hlcwogICAgICogc3RhcnQgZXNjYXBlcy4KICAgICAqCiAgICAgKiBbdGhlIENTUyBhbGdvcml0aG1dOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXN5bnRheC0zLyN3b3VsZC1zdGFydC1hbi1pZGVudGlmaWVyCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsb29raW5nQXRJZGVudGlmaWVyKGludCAkZm9yd2FyZCA9IDApOiBib29sCiAgICB7CiAgICAgICAgJGZpcnN0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCRmb3J3YXJkKTsKCiAgICAgICAgaWYgKCRmaXJzdCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZpcnN0ID09PSAnXFwnIHx8IENoYXJhY3Rlcjo6aXNOYW1lU3RhcnQoJGZpcnN0KSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmlyc3QgIT09ICctJykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkc2Vjb25kID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCRmb3J3YXJkICsgMSk7CgogICAgICAgIGlmICgkc2Vjb25kID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2Vjb25kID09PSAnXFwnIHx8ICRzZWNvbmQgPT09ICctJyB8fCBDaGFyYWN0ZXI6OmlzTmFtZVN0YXJ0KCRzZWNvbmQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBzY2FubmVyIGlzIGltbWVkaWF0ZWx5IGJlZm9yZSBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMKICAgICAqIHRoYXQgY291bGQgYmUgcGFydCBvZiBhIHBsYWluIENTUyBpZGVudGlmaWVyIGJvZHkuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsb29raW5nQXRJZGVudGlmaWVyQm9keSgpOiBib29sCiAgICB7CiAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgcmV0dXJuICRuZXh0ICE9PSBudWxsICYmICgkbmV4dCA9PT0gJ1xcJyB8fCBDaGFyYWN0ZXI6OmlzTmFtZSgkbmV4dCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gaWRlbnRpZmllciBpZiBpdHMgbmFtZSBleGFjdGx5IG1hdGNoZXMgJHRleHQuCiAgICAgKgogICAgICogV2hlbiBtYXRjaGluZyBjYXNlLWluc2Vuc2l0aXZlbHksICR0ZXh0IG11c3QgYmUgcGFzc2VkIGluIGxvd2VyY2FzZS4KICAgICAqCiAgICAgKiBUaGlzIG9ubHkgc3VwcG9ydHMgQVNDSUkgaWRlbnRpZmllcnMuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzY2FuSWRlbnRpZmllcihzdHJpbmcgJHRleHQsIGJvb2wgJGNhc2VTZW5zaXRpdmUgPSBmYWxzZSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgIGlmICgkdGhpcy0+Y29uc3VtZUlkZW50aWZpZXIoJHRleHQsICRjYXNlU2Vuc2l0aXZlKSAmJiAhJHRoaXMtPmxvb2tpbmdBdElkZW50aWZpZXJCb2R5KCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHN0YXJ0KTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIGFuIGlkZW50aWZpZXIgd2hvc2UgbmFtZSBleGFjdGx5IG1hdGNoZXMgJHRleHQgaXMgYXQgdGhlCiAgICAgKiBjdXJyZW50IHNjYW5uZXIgcG9zaXRpb24uCiAgICAgKgogICAgICogVGhpcyBkb2Vzbid0IG1vdmUgdGhlIHNjYW4gcG9pbnRlciBmb3J3YXJkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtYXRjaGVzSWRlbnRpZmllcihzdHJpbmcgJHRleHQsIGJvb2wgJGNhc2VTZW5zaXRpdmUgPSBmYWxzZSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5jb25zdW1lSWRlbnRpZmllcigkdGV4dCwgJGNhc2VTZW5zaXRpdmUpICYmICEkdGhpcy0+bG9va2luZ0F0SWRlbnRpZmllckJvZHkoKTsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHN0YXJ0KTsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyAkdGV4dCBhcyBhbiBpZGVudGlmaWVyLCBidXQgZG9lc24ndCB2ZXJpZnkgd2hldGhlciB0aGVyZSdzCiAgICAgKiBhZGRpdGlvbmFsIGlkZW50aWZpZXIgdGV4dCBhZnRlcndhcmRzLgogICAgICoKICAgICAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBmdWxsICR0ZXh0IGlzIGNvbnN1bWVkIGFuZCBgZmFsc2VgIG90aGVyd2lzZSwgYnV0CiAgICAgKiBkb2Vzbid0IHJlc2V0IHRoZSBzY2FuIHBvaW50ZXIuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29uc3VtZUlkZW50aWZpZXIoc3RyaW5nICR0ZXh0LCBib29sICRjYXNlU2Vuc2l0aXZlKTogYm9vbAogICAgewogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IFxzdHJsZW4oJHRleHQpOyAkaSsrKSB7CiAgICAgICAgICAgIGlmICghJHRoaXMtPnNjYW5JZGVudENoYXIoJHRleHRbJGldLCAkY2FzZVNlbnNpdGl2ZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhbiBpZGVudGlmaWVyIGFzc2VydHMgdGhhdCBpdHMgbmFtZSBleGFjdGx5IG1hdGNoZXMgJHRleHQuCiAgICAgKgogICAgICogV2hlbiBtYXRjaGluZyBjYXNlLWluc2Vuc2l0aXZlbHksICR0ZXh0IG11c3QgYmUgcGFzc2VkIGluIGxvd2VyY2FzZS4KICAgICAqCiAgICAgKiBUaGlzIG9ubHkgc3VwcG9ydHMgQVNDSUkgaWRlbnRpZmllcnMuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBleHBlY3RJZGVudGlmaWVyKHN0cmluZyAkdGV4dCwgP3N0cmluZyAkbmFtZSA9IG51bGwsIGJvb2wgJGNhc2VTZW5zaXRpdmUgPSBmYWxzZSk6IHZvaWQKICAgIHsKICAgICAgICAkbmFtZSA/Pz0gIlwiJHRleHRcIiI7CgogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBcc3RybGVuKCR0ZXh0KTsgJGkrKykgewogICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5JZGVudENoYXIoJHRleHRbJGldLCAkY2FzZVNlbnNpdGl2ZSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoIkV4cGVjdGVkICRuYW1lLiIsICRzdGFydCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyQm9keSgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcigiRXhwZWN0ZWQgJG5hbWUuIiwgJHN0YXJ0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJ1bnMgJGNvbnN1bWVyIGFuZCByZXR1cm5zIHRoZSBzb3VyY2UgdGV4dCB0aGF0IGl0IGNvbnN1bWVzLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiAobWl4ZWR8dm9pZCkgJGNvbnN1bWVyCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNvbnN1bWVyCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiByYXdUZXh0KGNhbGxhYmxlICRjb25zdW1lcik6IHN0cmluZwogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRjb25zdW1lcigpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnNjYW5uZXItPnN1YnN0cmluZygkc3RhcnQpOwogICAgfQoKICAgIC8qKgogICAgICogTGlrZSB7QHNlZSBTdHJpbmdTY2FubmVyOjpzcGFuRnJvbSgpfSBidXQgcGFzc2VzIHRoZSBzcGFuIHRocm91Z2gge0BzZWUgJGludGVycG9sYXRpb25NYXB9IGlmIGl0J3MgYXZhaWxhYmxlLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3BhbkZyb20oaW50ICRwb3NpdGlvbik6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgJHNwYW4gPSAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHBvc2l0aW9uKTsKCiAgICAgICAgaWYgKCR0aGlzLT5pbnRlcnBvbGF0aW9uTWFwID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkc3BhbjsKICAgICAgICB9CgogICAgICAgICRpbnRlcnBvbGF0aW9uTWFwID0gJHRoaXMtPmludGVycG9sYXRpb25NYXA7CgogICAgICAgIHJldHVybiBuZXcgTGF6eUZpbGVTcGFuKHN0YXRpYyBmbigpID0+ICRpbnRlcnBvbGF0aW9uTWFwLT5tYXBTcGFuKCRzcGFuKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQcmludHMgYSB3YXJuaW5nIHRvIHN0YW5kYXJkIGVycm9yLCBhc3NvY2lhdGVkIHdpdGggJHNwYW4uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB3YXJuKHN0cmluZyAkbWVzc2FnZSwgRmlsZVNwYW4gJHNwYW4pOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmxvZ2dlci0+d2FybigkbWVzc2FnZSwgbnVsbCwgJHNwYW4pOwogICAgfQoKICAgIC8qKgogICAgICogVGhyb3dzIGFuIGVycm9yIGFzc29jaWF0ZWQgd2l0aCAkcG9zaXRpb24uCiAgICAgKgogICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGVycm9yKHN0cmluZyAkbWVzc2FnZSwgRmlsZVNwYW4gJHNwYW4sID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwpOiBuZXZlcgogICAgewogICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb24oJG1lc3NhZ2UsICRzcGFuLCAkcHJldmlvdXMpOwogICAgfQoKICAgIC8qKgogICAgICogUnVucyAkY2FsbGJhY2sgYW5kIHdyYXBzIGFueSB7QHNlZSBGb3JtYXRFeGNlcHRpb259IGl0IHRocm93cyBpbiBhCiAgICAgKiB7QHNlZSBTYXNzRm9ybWF0RXhjZXB0aW9ufQogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqIEByZXR1cm4gVAogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gd3JhcFNwYW5Gb3JtYXRFeGNlcHRpb24oY2FsbGFibGUgJGNhbGxiYWNrKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pbnRlcnBvbGF0aW9uTWFwID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmludGVycG9sYXRpb25NYXAtPm1hcEV4Y2VwdGlvbigkZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChNdWx0aVNvdXJjZUZvcm1hdEV4Y2VwdGlvbiAkZXJyb3IpIHsKICAgICAgICAgICAgJHNwYW4gPSAkZXJyb3ItPmdldFNwYW4oKTsKICAgICAgICAgICAgJHNlY29uZGFyeVNwYW5zID0gJGVycm9yLT5zZWNvbmRhcnlTcGFuczsKCiAgICAgICAgICAgIGlmICgwID09PSBzdHJpcG9zKCRlcnJvci0+Z2V0TWVzc2FnZSgpLCAnZXhwZWN0ZWQnKSkgewogICAgICAgICAgICAgICAgJHNwYW4gPSAkdGhpcy0+YWRqdXN0RXhjZXB0aW9uU3Bhbigkc3Bhbik7CiAgICAgICAgICAgICAgICAkc2Vjb25kYXJ5U3BhbnMgPSBhcnJheV9tYXAoZm4gKEZpbGVTcGFuICRzcGFuKSA9PiAkdGhpcy0+YWRqdXN0RXhjZXB0aW9uU3Bhbigkc3BhbiksICRzZWNvbmRhcnlTcGFucyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRocm93IG5ldyBNdWx0aVNwYW5TYXNzRm9ybWF0RXhjZXB0aW9uKCRlcnJvci0+Z2V0TWVzc2FnZSgpLCAkc3BhbiwgJGVycm9yLT5wcmltYXJ5TGFiZWwsICRzZWNvbmRhcnlTcGFucywgJGVycm9yKTsKICAgICAgICB9IGNhdGNoIChGb3JtYXRFeGNlcHRpb24gJGVycm9yKSB7CiAgICAgICAgICAgICRzcGFuID0gJGVycm9yLT5nZXRTcGFuKCk7CgogICAgICAgICAgICBpZiAoMCA9PT0gc3RyaXBvcygkZXJyb3ItPmdldE1lc3NhZ2UoKSwgJ2V4cGVjdGVkJykpIHsKICAgICAgICAgICAgICAgICRzcGFuID0gJHRoaXMtPmFkanVzdEV4Y2VwdGlvblNwYW4oJHNwYW4pOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyBuZXcgU2ltcGxlU2Fzc0Zvcm1hdEV4Y2VwdGlvbigkZXJyb3ItPmdldE1lc3NhZ2UoKSwgJHNwYW4sICRlcnJvcik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogTW92ZXMgc3BhbiB0byB7QHNlZSBmaXJzdE5ld2xpbmVCZWZvcmV9IGlmIG5lY2Vzc2FyeS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGp1c3RFeGNlcHRpb25TcGFuKEZpbGVTcGFuICRzcGFuKTogRmlsZVNwYW4KICAgIHsKICAgICAgICBpZiAoJHNwYW4tPmdldExlbmd0aCgpID4gMCkgewogICAgICAgICAgICByZXR1cm4gJHNwYW47CiAgICAgICAgfQoKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+Zmlyc3ROZXdsaW5lQmVmb3JlKCRzcGFuLT5nZXRTdGFydCgpKTsKCiAgICAgICAgaWYgKCRzdGFydCA9PT0gJHNwYW4tPmdldFN0YXJ0KCkpIHsKICAgICAgICAgICAgcmV0dXJuICRzcGFuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzdGFydC0+cG9pbnRTcGFuKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiAkbG9jYXRpb24gaXMgc2VwYXJhdGVkIGZyb20gdGhlIHByZXZpb3VzIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciBpbgogICAgICogYCRzY2FubmVyLT5nZXRTdHJpbmcoKWAgYnkgb25lIG9yIG1vcmUgbmV3bGluZXMsIHJldHVybnMgdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0CiAgICAgKiBzZXBhcmF0aW5nIG5ld2xpbmUuCiAgICAgKgogICAgICogT3RoZXJ3aXNlIHJldHVybnMgJGxvY2F0aW9uLgogICAgICoKICAgICAqIFRoaXMgaGVscHMgYXZvaWQgbWlzc2luZyB0b2tlbiBlcnJvcnMgcG9pbnRpbmcgYXQgdGhlIG5leHQgY2xvc2luZyBicmFja2V0CiAgICAgKiByYXRoZXIgdGhhbiB0aGUgbGluZSB3aGVyZSB0aGUgcHJvYmxlbSBhY3R1YWxseSBvY2N1cnJlZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaXJzdE5ld2xpbmVCZWZvcmUoRmlsZUxvY2F0aW9uICRsb2NhdGlvbik6IEZpbGVMb2NhdGlvbgogICAgewogICAgICAgICR0ZXh0ID0gJGxvY2F0aW9uLT5nZXRGaWxlKCktPmdldFRleHQoMCwgJGxvY2F0aW9uLT5nZXRPZmZzZXQoKSk7CiAgICAgICAgJGluZGV4ID0gJGxvY2F0aW9uLT5nZXRPZmZzZXQoKSAtIDE7CiAgICAgICAgJGxhc3ROZXdsaW5lID0gbnVsbDsKCiAgICAgICAgd2hpbGUgKCRpbmRleCA+PSAwKSB7CiAgICAgICAgICAgICRjaGFyID0gJHRleHRbJGluZGV4XTsKCiAgICAgICAgICAgIGlmICghQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJGNoYXIpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGxhc3ROZXdsaW5lID09PSBudWxsID8gJGxvY2F0aW9uIDogJGxvY2F0aW9uLT5nZXRGaWxlKCktPmxvY2F0aW9uKCRsYXN0TmV3bGluZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChDaGFyYWN0ZXI6OmlzTmV3bGluZSgkY2hhcikpIHsKICAgICAgICAgICAgICAgICRsYXN0TmV3bGluZSA9ICRpbmRleDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaW5kZXgtLTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBkb2N1bWVudCAqb25seSogY29udGFpbnMgd2hpdGVzcGFjZSBiZWZvcmUgJGxvY2F0aW9uLCBhbHdheXMKICAgICAgICAvLyByZXR1cm4gJGxvY2F0aW9uLgoKICAgICAgICByZXR1cm4gJGxvY2F0aW9uOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/SassParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW1wb3J0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEltcG9ydFxEeW5hbWljSW1wb3J0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEltcG9ydFxTdGF0aWNJbXBvcnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XExvdWRDb21tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTaWxlbnRDb21tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcQ2hhcmFjdGVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NTdHJpbmc7CgovKioKICogQSBwYXJzZXIgZm9yIHRoZSBpbmRlbnRlZCBzeW50YXguCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU2Fzc1BhcnNlciBleHRlbmRzIFN0eWxlc2hlZXRQYXJzZXIKewogICAgcHJpdmF0ZSBpbnQgJGN1cnJlbnRJbmRlbnRhdGlvbiA9IDA7CgogICAgLyoqCiAgICAgKiBUaGUgaW5kZW50YXRpb24gbGV2ZWwgb2YgdGhlIG5leHQgc291cmNlIGxpbmUgYWZ0ZXIgdGhlIHNjYW5uZXIncwogICAgICogcG9zaXRpb24sIG9yIGBudWxsYCBpZiB0aGF0IGhhc24ndCBiZWVuIGNvbXB1dGVkIHlldC4KICAgICAqCiAgICAgKiBBIHNvdXJjZSBsaW5lIGlzIGFueSBsaW5lIHRoYXQncyBub3QgZW50aXJlbHkgd2hpdGVzcGFjZS4KICAgICAqLwogICAgcHJpdmF0ZSA/aW50ICRuZXh0SW5kZW50YXRpb24gPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBzb3VyY2UgbGluZSBhZnRlciB0aGUgc2Nhbm5lcidzIHBvc2l0aW9uLCBvcgogICAgICogYG51bGxgIGlmIHRoZSBuZXh0IGluZGVudGF0aW9uIGhhc24ndCBiZWVuIGNvbXB1dGVkIHlldC4KICAgICAqCiAgICAgKiBBIHNvdXJjZSBsaW5lIGlzIGFueSBsaW5lIHRoYXQncyBub3QgZW50aXJlbHkgd2hpdGVzcGFjZS4KICAgICAqLwogICAgcHJpdmF0ZSA/aW50ICRuZXh0SW5kZW50YXRpb25FbmQgPSBudWxsOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgZG9jdW1lbnQgaXMgaW5kZW50ZWQgdXNpbmcgc3BhY2VzIG9yIHRhYnMuCiAgICAgKgogICAgICogSWYgdGhpcyBpcyBgdHJ1ZWAsIHRoZSBkb2N1bWVudCBpcyBpbmRlbnRlZCB1c2luZyBzcGFjZXMuIElmIGl0J3MgYGZhbHNlYCwKICAgICAqIHRoZSBkb2N1bWVudCBpcyBpbmRlbnRlZCB1c2luZyB0YWJzLiBJZiBpdCdzIGBudWxsYCwgd2UgaGF2ZW4ndCB5ZXQgc2VlbgogICAgICogdGhlIGluZGVudGF0aW9uIGNoYXJhY3RlciB1c2VkIGJ5IHRoZSBkb2N1bWVudC4KICAgICAqLwogICAgcHJpdmF0ZSA/Ym9vbCAkc3BhY2VzID0gbnVsbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q3VycmVudEluZGVudGF0aW9uKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y3VycmVudEluZGVudGF0aW9uOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc0luZGVudGVkKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3R5bGVSdWxlU2VsZWN0b3IoKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwoKICAgICAgICAkYnVmZmVyID0gbmV3IEludGVycG9sYXRpb25CdWZmZXIoKTsKCiAgICAgICAgZG8gewogICAgICAgICAgICAkYnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5hbG1vc3RBbnlWYWx1ZShvbWl0Q29tbWVudHM6IHRydWUpKTsKICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoIlxuIik7CiAgICAgICAgfSB3aGlsZSAoc3RyX2VuZHNfd2l0aChydHJpbSgkYnVmZmVyLT5nZXRUcmFpbGluZ1N0cmluZygpKSwgJywnKSAmJiAkdGhpcy0+c2NhbkNoYXJJZihmbiAoJGNoYXIpID0+IENoYXJhY3Rlcjo6aXNOZXdsaW5lKCRjaGFyKSkpOwoKICAgICAgICByZXR1cm4gJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogdm9pZAogICAgewogICAgICAgIGlmICghJHRoaXMtPmF0RW5kT2ZTdGF0ZW1lbnQoKSkgewogICAgICAgICAgICAkdGhpcy0+ZXhwZWN0TmV3bGluZSgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5wZWVrSW5kZW50YXRpb24oKSA8PSAkdGhpcy0+Y3VycmVudEluZGVudGF0aW9uKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIFxhc3NlcnQoJHRoaXMtPm5leHRJbmRlbnRhdGlvbkVuZCAhPT0gbnVsbCk7CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcihcc3ByaW50ZignTm90aGluZyBtYXkgYmUgaW5kZW50ZWQgJXMuJywgJG5hbWUgPT09IG51bGwgPyAnaGVyZScgOiAiYmVuZWF0aCBhICRuYW1lIiksICR0aGlzLT5uZXh0SW5kZW50YXRpb25FbmQpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhdEVuZE9mU3RhdGVtZW50KCk6IGJvb2wKICAgIHsKICAgICAgICAkbmV4dENoYXIgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgcmV0dXJuICRuZXh0Q2hhciA9PT0gbnVsbCB8fCBDaGFyYWN0ZXI6OmlzTmV3bGluZSgkbmV4dENoYXIpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsb29raW5nQXRDaGlsZHJlbigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hdEVuZE9mU3RhdGVtZW50KCkgJiYgJHRoaXMtPnBlZWtJbmRlbnRhdGlvbigpID4gJHRoaXMtPmN1cnJlbnRJbmRlbnRhdGlvbjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW1wb3J0QXJndW1lbnQoKTogSW1wb3J0CiAgICB7CiAgICAgICAgc3dpdGNoICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkgewogICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgY2FzZSAnVSc6CiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2NhbklkZW50aWZpZXIoJ3VybCcpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignKCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5zZXRQb3NpdGlvbigkc3RhcnQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6aW1wb3J0QXJndW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgIiciOgogICAgICAgICAgICBjYXNlICciJzoKICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6OmltcG9ydEFyZ3VtZW50KCk7CiAgICAgICAgfQoKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICB3aGlsZSAoJG5leHQgIT09IG51bGwgJiYgJG5leHQgIT09ICcsJyAmJiAkbmV4dCAhPT0gJzsnICYmICFDaGFyYWN0ZXI6OmlzTmV3bGluZSgkbmV4dCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRVdGY4Q2hhcigpOwogICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgIH0KCiAgICAgICAgJHVybCA9ICR0aGlzLT5zY2FubmVyLT5zdWJzdHJpbmcoJHN0YXJ0KTsKICAgICAgICAkc3BhbiA9ICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpOwoKICAgICAgICBpZiAoJHRoaXMtPmlzUGxhaW5JbXBvcnRVcmwoJHVybCkpIHsKICAgICAgICAgICAgLy8gU2VyaWFsaXplICR1cmwgYXMgYSBTYXNzIHN0cmluZyBiZWNhdXNlIFN0YXRpY0ltcG9ydCBleHBlY3RzIGl0IHRvCiAgICAgICAgICAgIC8vIGluY2x1ZGUgcXVvdGVzLgogICAgICAgICAgICByZXR1cm4gbmV3IFN0YXRpY0ltcG9ydChuZXcgSW50ZXJwb2xhdGlvbihbKHN0cmluZykgbmV3IFNhc3NTdHJpbmcoJHVybCldLCAkc3BhbiksICRzcGFuKTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgRHluYW1pY0ltcG9ydCgkdGhpcy0+cGFyc2VJbXBvcnRVcmwoJHVybCksICRzcGFuKTsKICAgICAgICB9IGNhdGNoIChTeW50YXhFcnJvciAkZSkgewogICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJ0ludmFsaWQgVVJMOiAnIC4gJGUtPmdldE1lc3NhZ2UoKSwgJHNwYW4sICRlKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNjYW5FbHNlKGludCAkaWZJbmRlbnRhdGlvbik6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnBlZWtJbmRlbnRhdGlvbigpICE9PSAkaWZJbmRlbnRhdGlvbikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkc3RhcnRJbmRlbnRhdGlvbiA9ICR0aGlzLT5jdXJyZW50SW5kZW50YXRpb247CiAgICAgICAgJHN0YXJ0TmV4dEluZGVudGF0aW9uID0gJHRoaXMtPm5leHRJbmRlbnRhdGlvbjsKICAgICAgICAkc3RhcnROZXh0SW5kZW50YXRpb25FbmQgPSAkdGhpcy0+bmV4dEluZGVudGF0aW9uRW5kOwogICAgICAgICR0aGlzLT5yZWFkSW5kZW50YXRpb24oKTsKCiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignQCcpICYmICR0aGlzLT5zY2FuSWRlbnRpZmllcignZWxzZScpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNldFBvc2l0aW9uKCRzdGFydCk7CiAgICAgICAgJHRoaXMtPmN1cnJlbnRJbmRlbnRhdGlvbiA9ICRzdGFydEluZGVudGF0aW9uOwogICAgICAgICR0aGlzLT5uZXh0SW5kZW50YXRpb24gPSAkc3RhcnROZXh0SW5kZW50YXRpb247CiAgICAgICAgJHRoaXMtPm5leHRJbmRlbnRhdGlvbkVuZCA9ICRzdGFydE5leHRJbmRlbnRhdGlvbkVuZDsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjaGlsZHJlbihjYWxsYWJsZSAkY2hpbGQpOiBhcnJheQogICAgewogICAgICAgICRjaGlsZHJlbiA9IFtdOwoKICAgICAgICAkdGhpcy0+d2hpbGVJbmRlbnRlZExvd2VyKGZ1bmN0aW9uICgpIHVzZSAoJGNoaWxkLCAmJGNoaWxkcmVuKSB7CiAgICAgICAgICAgICRwYXJzZWRDaGlsZCA9ICR0aGlzLT5jaGlsZCgkY2hpbGQpOwoKICAgICAgICAgICAgaWYgKCRwYXJzZWRDaGlsZCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkcGFyc2VkQ2hpbGQ7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuICRjaGlsZHJlbjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3RhdGVtZW50cyhjYWxsYWJsZSAkc3RhdGVtZW50KTogYXJyYXkKICAgIHsKICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgIGlmICgkbmV4dCA9PT0gIlx0IiB8fCAkbmV4dCA9PT0gJyAnKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignSW5kZW50aW5nIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50IGlzIGlsbGVnYWwuJywgMCwgJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCkpOwogICAgICAgIH0KCiAgICAgICAgJHN0YXRlbWVudHMgPSBbXTsKCiAgICAgICAgd2hpbGUgKCEkdGhpcy0+c2Nhbm5lci0+aXNEb25lKCkpIHsKICAgICAgICAgICAgJGNoaWxkID0gJHRoaXMtPmNoaWxkKCRzdGF0ZW1lbnQpOwoKICAgICAgICAgICAgaWYgKCRjaGlsZCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHN0YXRlbWVudHNbXSA9ICRjaGlsZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJHRoaXMtPnJlYWRJbmRlbnRhdGlvbigpOwogICAgICAgICAgICBcYXNzZXJ0KCRpbmRlbnRhdGlvbiA9PT0gMCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN0YXRlbWVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGNoaWxkIG9mIHRoZSBjdXJyZW50IHN0YXRlbWVudC4KICAgICAqCiAgICAgKiBUaGlzIGNvbnN1bWVzIGNoaWxkcmVuIHRoYXQgYXJlIGFsbG93ZWQgYXQgYWxsIGxldmVscyBvZiB0aGUgZG9jdW1lbnQ7IHRoZQogICAgICogJGNoaWxkIHBhcmFtZXRlciBpcyBjYWxsZWQgdG8gY29uc3VtZSBhbnkgY2hpbGRyZW4gdGhhdCBhcmUgc3BlY2lmaWNhbGx5CiAgICAgKiBhbGxvd2VkIGluIHRoZSBjYWxsZXIncyBjb250ZXh0LgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiAoU3RhdGVtZW50fG51bGwpICRjaGlsZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoaWxkKGNhbGxhYmxlICRjaGlsZCk6ID9TdGF0ZW1lbnQKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSB7CiAgICAgICAgICAgIC8vIElnbm9yZSBlbXB0eSBsaW5lcy4KICAgICAgICAgICAgIlxyIiwgIlxuIiwgIlxmIiA9PiBudWxsLAogICAgICAgICAgICAnJCcgPT4gJHRoaXMtPnZhcmlhYmxlRGVjbGFyYXRpb25XaXRob3V0TmFtZXNwYWNlKCksCiAgICAgICAgICAgICcvJyA9PiBtYXRjaCAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpKSB7CiAgICAgICAgICAgICAgICAnLycgPT4gJHRoaXMtPnNpbGVudENvbW1lbnRTdGF0ZW1lbnQoKSwKICAgICAgICAgICAgICAgICcqJyA9PiAkdGhpcy0+bG91ZENvbW1lbnRTdGF0ZW1lbnQoKSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gJGNoaWxkKCksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJGNoaWxkKCksCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGluZGVudGVkLXN0eWxlIHNpbGVudCBjb21tZW50LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNpbGVudENvbW1lbnRTdGF0ZW1lbnQoKTogU2lsZW50Q29tbWVudAogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3QoJy8vJyk7CgogICAgICAgICRidWZmZXIgPSAnJzsKICAgICAgICAkcGFyZW50SW5kZW50YXRpb24gPSAkdGhpcy0+Y3VycmVudEluZGVudGF0aW9uOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICRjb21tZW50UHJlZml4ID0gJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcvJykgPyAnLy8vJyA6ICcvLyc7CgogICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkY29tbWVudFByZWZpeDsKCiAgICAgICAgICAgICAgICAvLyBTa2lwIHRoZSBpbml0aWFsIGNoYXJhY3RlcnMgYmVjYXVzZSB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgdGhlCiAgICAgICAgICAgICAgICAvLyBzbGFzaGVzLgogICAgICAgICAgICAgICAgZm9yICgkaSA9IFxzdHJsZW4oJGNvbW1lbnRQcmVmaXgpOyAkaSA8ICR0aGlzLT5jdXJyZW50SW5kZW50YXRpb24gLSAkcGFyZW50SW5kZW50YXRpb247ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyIC49ICcgJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB3aGlsZSAoISR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSAmJiAhQ2hhcmFjdGVyOjppc05ld2xpbmUoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZFV0ZjhDaGFyKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAiXG4iOwoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+cGVla0luZGVudGF0aW9uKCkgPCAkcGFyZW50SW5kZW50YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICBicmVhayAyOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+cGVla0luZGVudGF0aW9uKCkgPT09ICRwYXJlbnRJbmRlbnRhdGlvbikgewogICAgICAgICAgICAgICAgICAgIC8vIExvb2sgYWhlYWQgdG8gdGhlIG5leHQgbGluZSB0byBzZWUgaWYgaXQgc3RhcnRzIGFub3RoZXIgY29tbWVudC4KICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEgKyAkcGFyZW50SW5kZW50YXRpb24pID09PSAnLycgJiYgJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDIgKyAkcGFyZW50SW5kZW50YXRpb24pID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJlYWRJbmRlbnRhdGlvbigpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+cmVhZEluZGVudGF0aW9uKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IHdoaWxlICgkdGhpcy0+c2Nhbm5lci0+c2NhbignLy8nKSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+bGFzdFNpbGVudENvbW1lbnQgPSBuZXcgU2lsZW50Q29tbWVudCgkYnVmZmVyLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhbiBpbmRlbnRlZC1zdHlsZSBsb3VkIGNvbnRleHQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG91ZENvbW1lbnRTdGF0ZW1lbnQoKTogTG91ZENvbW1lbnQKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0KCcvKicpOwoKICAgICAgICAkZmlyc3QgPSB0cnVlOwogICAgICAgICRidWZmZXIgPSBuZXcgSW50ZXJwb2xhdGlvbkJ1ZmZlcigpOwogICAgICAgICRidWZmZXItPndyaXRlKCcvKicpOwogICAgICAgICRwYXJlbnRJbmRlbnRhdGlvbiA9ICR0aGlzLT5jdXJyZW50SW5kZW50YXRpb247CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgIGlmICgkZmlyc3QpIHsKICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCBsaW5lIGlzIGVtcHR5LCBpZ25vcmUgaXQuCiAgICAgICAgICAgICAgICAkYmVnaW5uaW5nT2ZDb21tZW50ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+c3BhY2VzKCk7CiAgICAgICAgICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc05ld2xpbmUoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJlYWRJbmRlbnRhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcgJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5zY2FubmVyLT5zdWJzdHJpbmcoJGJlZ2lubmluZ09mQ29tbWVudCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoIlxuICogIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRmaXJzdCA9IGZhbHNlOwoKICAgICAgICAgICAgZm9yICgkaSA9IDM7ICRpIDwgJHRoaXMtPmN1cnJlbnRJbmRlbnRhdGlvbiAtICRwYXJlbnRJbmRlbnRhdGlvbjsgJGkrKykgewogICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJyAnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgd2hpbGUgKCEkdGhpcy0+c2Nhbm5lci0+aXNEb25lKCkpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICJcbiI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiXHIiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIlxmIjoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnIyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICd7JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+YWRkKCR0aGlzLT5zaW5nbGVJbnRlcnBvbGF0aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZFV0ZjhDaGFyKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPnBlZWtJbmRlbnRhdGlvbigpIDw9ICRwYXJlbnRJbmRlbnRhdGlvbikgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFByZXNlcnZlIGVtcHR5IGxpbmVzLgogICAgICAgICAgICB3aGlsZSAoJHRoaXMtPmxvb2tpbmdBdERvdWJsZU5ld2xpbmUoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmV4cGVjdE5ld2xpbmUoKTsKICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCJcbiAqIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5yZWFkSW5kZW50YXRpb24oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgTG91ZENvbW1lbnQoJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHdoaXRlc3BhY2VXaXRob3V0Q29tbWVudHMoKTogdm9pZAogICAgewogICAgICAgIC8vIFRoaXMgb3ZlcnJpZGVzIHdoaXRlc3BhY2UgY29uc3VtcHRpb24gc28gdGhhdCBpdCBkb2Vzbid0IGNvbnN1bWUKICAgICAgICAvLyBuZXdsaW5lcy4KICAgICAgICB3aGlsZSAoISR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgICAgICBpZiAoJG5leHQgIT09ICJcdCIgJiYgJG5leHQgIT09ICcgJykgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsb3VkQ29tbWVudCgpOiB2b2lkCiAgICB7CiAgICAgICAgLy8gVGhpcyBvdmVycmlkZXMgbG91ZCBjb21tZW50IGNvbnN1bXB0aW9uIHNvIHRoYXQgaXQgZG9lc24ndCBjb25zdW1lCiAgICAgICAgLy8gbXVsdGktbGluZSBjb21tZW50cy4KICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0KCcvKicpOwogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnJlYWRVdGY4Q2hhcigpOwoKICAgICAgICAgICAgaWYgKENoYXJhY3Rlcjo6aXNOZXdsaW5lKCRuZXh0KSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdleHBlY3RlZCAqLy4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZXh0ICE9PSAnKicpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5yZWFkVXRmOENoYXIoKTsKICAgICAgICAgICAgfSB3aGlsZSAoJG5leHQgPT09ICcqJyk7CgogICAgICAgICAgICBpZiAoJG5leHQgPT09ICcvJykgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHBlY3QgYW5kIGNvbnN1bWUgYSBzaW5nbGUgbmV3bGluZSBjaGFyYWN0ZXIuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXhwZWN0TmV3bGluZSgpOiB2b2lkCiAgICB7CiAgICAgICAgc3dpdGNoICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkgewogICAgICAgICAgICBjYXNlICc7JzoKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcigic2VtaWNvbG9ucyBhcmVuJ3QgYWxsb3dlZCBpbiB0aGUgaW5kZW50ZWQgc3ludGF4LiIpOwoKICAgICAgICAgICAgY2FzZSAiXHIiOgogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICJcbiIpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAiXG4iOgogICAgICAgICAgICBjYXNlICJcZiI6CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignZXhwZWN0ZWQgbmV3bGluZS4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHNjYW5uZXIgaXMgaW1tZWRpYXRlbHkgYmVmb3JlICp0d28qIG5ld2xpbmVzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvb2tpbmdBdERvdWJsZU5ld2xpbmUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpIHsKICAgICAgICAgICAgIlxyIiA9PiBtYXRjaCAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpKSB7CiAgICAgICAgICAgICAgICAiXG4iID0+IENoYXJhY3Rlcjo6aXNOZXdsaW5lKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigyKSksCiAgICAgICAgICAgICAgICAiXHIiLCAiXGYiID0+IHRydWUsCiAgICAgICAgICAgICAgICBkZWZhdWx0ID0+IGZhbHNlLAogICAgICAgICAgICB9LAogICAgICAgICAgICAiXG4iLCAiXGYiID0+IENoYXJhY3Rlcjo6aXNOZXdsaW5lKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKSksCiAgICAgICAgICAgIGRlZmF1bHQgPT4gZmFsc2UsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzIGxvbmcgYXMgdGhlIHNjYW5uZXIncyBwb3NpdGlvbiBpcyBpbmRlbnRlZCBiZW5lYXRoIHRoZSBzdGFydGluZyBsaW5lLAogICAgICogcnVucyAkYm9keSB0byBjb25zdW1lIHRoZSBuZXh0IHN0YXRlbWVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogdm9pZCAkYm9keQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdoaWxlSW5kZW50ZWRMb3dlcihjYWxsYWJsZSAkYm9keSk6IHZvaWQKICAgIHsKICAgICAgICAkcGFyZW50SW5kZW50YXRpb24gPSAkdGhpcy0+Y3VycmVudEluZGVudGF0aW9uOwogICAgICAgICRjaGlsZEluZGVudGF0aW9uID0gbnVsbDsKCiAgICAgICAgd2hpbGUgKCR0aGlzLT5wZWVrSW5kZW50YXRpb24oKSA+ICRwYXJlbnRJbmRlbnRhdGlvbikgewogICAgICAgICAgICAkaW5kZW50YXRpb24gPSAkdGhpcy0+cmVhZEluZGVudGF0aW9uKCk7CiAgICAgICAgICAgICRjaGlsZEluZGVudGF0aW9uID8/PSAkaW5kZW50YXRpb247CgogICAgICAgICAgICBpZiAoJGNoaWxkSW5kZW50YXRpb24gIT09ICRpbmRlbnRhdGlvbikgewogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKAogICAgICAgICAgICAgICAgICAgICJJbmNvbnNpc3RlbnQgaW5kZW50YXRpb24sIGV4cGVjdGVkICRjaGlsZEluZGVudGF0aW9uIHNwYWNlcy4iLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpIC0gJHRoaXMtPnNjYW5uZXItPmdldENvbHVtbigpLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5nZXRDb2x1bW4oKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGJvZHkoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBpbmRlbnRhdGlvbiB3aGl0ZXNwYWNlIGFuZCByZXR1cm5zIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCBvZiB0aGUKICAgICAqIG5leHQgbGluZS4KICAgICAqCiAgICAgKiBAcGhwc3Rhbi1pbXB1cmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWFkSW5kZW50YXRpb24oKTogaW50CiAgICB7CiAgICAgICAgJGN1cnJlbnRJbmRlbnRhdGlvbiA9ICR0aGlzLT5jdXJyZW50SW5kZW50YXRpb24gPSAkdGhpcy0+bmV4dEluZGVudGF0aW9uID8/PSAkdGhpcy0+cGVla0luZGVudGF0aW9uKCk7CiAgICAgICAgXGFzc2VydCgkdGhpcy0+bmV4dEluZGVudGF0aW9uRW5kICE9PSBudWxsKTsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHRoaXMtPm5leHRJbmRlbnRhdGlvbkVuZCk7CiAgICAgICAgJHRoaXMtPm5leHRJbmRlbnRhdGlvbiA9IG51bGw7CiAgICAgICAgJHRoaXMtPm5leHRJbmRlbnRhdGlvbkVuZCA9IG51bGw7CgogICAgICAgIHJldHVybiAkY3VycmVudEluZGVudGF0aW9uOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5kZW50YXRpb24gbGV2ZWwgb2YgdGhlIG5leHQgbGluZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwZWVrSW5kZW50YXRpb24oKTogaW50CiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5uZXh0SW5kZW50YXRpb24gIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5uZXh0SW5kZW50YXRpb247CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPmlzRG9uZSgpKSB7CiAgICAgICAgICAgICR0aGlzLT5uZXh0SW5kZW50YXRpb24gPSAwOwogICAgICAgICAgICAkdGhpcy0+bmV4dEluZGVudGF0aW9uRW5kID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICRjb250YWluc1RhYiA9IGZhbHNlOwogICAgICAgICAgICAkY29udGFpbnNTcGFjZSA9IGZhbHNlOwogICAgICAgICAgICAkbmV4dEluZGVudGF0aW9uID0gMDsKCiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnICc6CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluc1NwYWNlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgIlx0IjoKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5zVGFiID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIDI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG5leHRJbmRlbnRhdGlvbisrOwogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+aXNEb25lKCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5uZXh0SW5kZW50YXRpb24gPSAwOwogICAgICAgICAgICAgICAgJHRoaXMtPm5leHRJbmRlbnRhdGlvbkVuZCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNldFBvc2l0aW9uKCRzdGFydCk7CgogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICB9IHdoaWxlICgkdGhpcy0+c2NhbkNoYXJJZihmbiAoJGNoYXIpID0+IENoYXJhY3Rlcjo6aXNOZXdsaW5lKCRjaGFyKSkpOwoKICAgICAgICAkdGhpcy0+Y2hlY2tJbmRlbnRhdGlvbkNvbnNpc3RlbmN5KCRjb250YWluc1RhYiwgJGNvbnRhaW5zU3BhY2UpOwoKICAgICAgICAkdGhpcy0+bmV4dEluZGVudGF0aW9uID0gJG5leHRJbmRlbnRhdGlvbjsKICAgICAgICBpZiAoJG5leHRJbmRlbnRhdGlvbiA+IDApIHsKICAgICAgICAgICAgJHRoaXMtPnNwYWNlcyA/Pz0gJGNvbnRhaW5zU3BhY2U7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5uZXh0SW5kZW50YXRpb25FbmQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHN0YXJ0KTsKCiAgICAgICAgcmV0dXJuICRuZXh0SW5kZW50YXRpb247CiAgICB9CgogICAgLyoqCiAgICAgKiBFbnN1cmVzIHRoYXQgdGhlIGRvY3VtZW50IHVzZXMgY29uc2lzdGVudCBjaGFyYWN0ZXJzIGZvciBpbmRlbnRhdGlvbi4KICAgICAqCiAgICAgKiBUaGUgJGNvbnRhaW5zVGFiIGFuZCAkY29udGFpbnNTcGFjZSBwYXJhbWV0ZXJzIHJlZmVyIHRvIGEgc2luZ2xlIGxpbmUgb2YKICAgICAqIGluZGVudGF0aW9uIHRoYXQgaGFzIGp1c3QgYmVlbiBwYXJzZWQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tJbmRlbnRhdGlvbkNvbnNpc3RlbmN5KGJvb2wgJGNvbnRhaW5zVGFiLCBib29sICRjb250YWluc1NwYWNlKTogdm9pZAogICAgewogICAgICAgIGlmICgkY29udGFpbnNUYWIpIHsKICAgICAgICAgICAgaWYgKCRjb250YWluc1NwYWNlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ1RhYnMgYW5kIHNwYWNlcyBtYXkgbm90IGJlIG1peGVkLicsICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpIC0gJHRoaXMtPnNjYW5uZXItPmdldENvbHVtbigpLCAkdGhpcy0+c2Nhbm5lci0+Z2V0Q29sdW1uKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPnNwYWNlcyA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCBzcGFjZXMsIHdhcyB0YWJzLicsICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpIC0gJHRoaXMtPnNjYW5uZXItPmdldENvbHVtbigpLCAkdGhpcy0+c2Nhbm5lci0+Z2V0Q29sdW1uKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRjb250YWluc1NwYWNlICYmICR0aGlzLT5zcGFjZXMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgdGFicywgd2FzIHNwYWNlcy4nLCAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKSAtICR0aGlzLT5zY2FubmVyLT5nZXRDb2x1bW4oKSwgJHRoaXMtPnNjYW5uZXItPmdldENvbHVtbigpKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/ScssParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcSW50ZXJwb2xhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcTG91ZENvbW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFNpbGVudENvbW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRGVwcmVjYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxDaGFyYWN0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxMb2dnZXJVdGlsOwoKLyoqCiAqIEEgcGFyc2VyIGZvciB0aGUgQ1NTLWNvbXBhdGlibGUgc3ludGF4LgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIFNjc3NQYXJzZXIgZXh0ZW5kcyBTdHlsZXNoZWV0UGFyc2VyCnsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc0luZGVudGVkKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEN1cnJlbnRJbmRlbnRhdGlvbigpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3R5bGVSdWxlU2VsZWN0b3IoKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWxtb3N0QW55VmFsdWUoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlV2l0aG91dENvbW1lbnRzKCk7CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+aXNEb25lKCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgaWYgKCRuZXh0ID09PSAnOycgfHwgJG5leHQgPT09ICd9JykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignOycpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhdEVuZE9mU3RhdGVtZW50KCk6IGJvb2wKICAgIHsKICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICByZXR1cm4gJG5leHQgPT09IG51bGwgfHwgJG5leHQgPT09ICc7JyB8fCAkbmV4dCA9PT0gJ30nIHx8ICRuZXh0ID09PSAneyc7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxvb2tpbmdBdENoaWxkcmVuKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICd7JzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2NhbkVsc2UoaW50ICRpZkluZGVudGF0aW9uKTogYm9vbAogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgJGJlZm9yZUF0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJ0AnKSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdlbHNlJywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdlbHNlaWYnLCB0cnVlKSkgewogICAgICAgICAgICAgICAgTG9nZ2VyVXRpbDo6d2FybkZvckRlcHJlY2F0aW9uKCR0aGlzLT5sb2dnZXIsIERlcHJlY2F0aW9uOjplbHNlaWYsICJAZWxzZWlmIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgU2FzcyB2ZXJzaW9ucy5cblxuUmVjb21tZW5kYXRpb246IEBlbHNlIGlmIiwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRiZWZvcmVBdCkpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5zZXRQb3NpdGlvbigkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKSAtIDIpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHN0YXJ0KTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjaGlsZHJlbihjYWxsYWJsZSAkY2hpbGQpOiBhcnJheQogICAgewogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCd7Jyk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2VXaXRob3V0Q29tbWVudHMoKTsKICAgICAgICAkY2hpbGRyZW4gPSBbXTsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgc3dpdGNoICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkgewogICAgICAgICAgICAgICAgY2FzZSAnJCc6CiAgICAgICAgICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkdGhpcy0+dmFyaWFibGVEZWNsYXJhdGlvbldpdGhvdXROYW1lc3BhY2UoKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcvJzoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGlsZHJlbltdID0gJHRoaXMtPnNpbGVudENvbW1lbnRTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlV2l0aG91dENvbW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJyonOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkdGhpcy0+bG91ZENvbW1lbnRTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlV2l0aG91dENvbW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hpbGRyZW5bXSA9ICRjaGlsZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJzsnOgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlV2l0aG91dENvbW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnfSc6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJ30nKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjaGlsZHJlbjsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICRjaGlsZHJlbltdID0gJGNoaWxkKCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHN0YXRlbWVudHMoY2FsbGFibGUgJHN0YXRlbWVudCk6IGFycmF5CiAgICB7CiAgICAgICAgJHN0YXRlbWVudHMgPSBbXTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZVdpdGhvdXRDb21tZW50cygpOwoKICAgICAgICB3aGlsZSAoISR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICBzd2l0Y2ggKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSB7CiAgICAgICAgICAgICAgICBjYXNlICckJzoKICAgICAgICAgICAgICAgICAgICAkc3RhdGVtZW50c1tdID0gJHRoaXMtPnZhcmlhYmxlRGVjbGFyYXRpb25XaXRob3V0TmFtZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGVtZW50c1tdID0gJHRoaXMtPnNpbGVudENvbW1lbnRTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlV2l0aG91dENvbW1lbnRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJyonOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlbWVudHNbXSA9ICR0aGlzLT5sb3VkQ29tbWVudFN0YXRlbWVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2VXaXRob3V0Q29tbWVudHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGlsZCA9ICRzdGF0ZW1lbnQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNoaWxkICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlbWVudHNbXSA9ICRjaGlsZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICc7JzoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZVdpdGhvdXRDb21tZW50cygpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgJGNoaWxkID0gJHN0YXRlbWVudCgpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJGNoaWxkICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRzW10gPSAkY2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN0YXRlbWVudHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIHN0YXRlbWVudC1sZXZlbCBzaWxlbnQgY29tbWVudCBibG9jay4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzaWxlbnRDb21tZW50U3RhdGVtZW50KCk6IFNpbGVudENvbW1lbnQKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdCgnLy8nKTsKCiAgICAgICAgZG8gewogICAgICAgICAgICB3aGlsZSAoISR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSAmJiAhQ2hhcmFjdGVyOjppc05ld2xpbmUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpKSB7CiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1lbnQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zcGFjZXMoKTsKICAgICAgICB9IHdoaWxlICgkdGhpcy0+c2Nhbm5lci0+c2NhbignLy8nKSk7CgogICAgICAgIGlmICgkdGhpcy0+aXNQbGFpbkNzcygpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcignU2lsZW50IGNvbW1lbnRzIGFyZW5cJ3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmxhc3RTaWxlbnRDb21tZW50ID0gbmV3IFNpbGVudENvbW1lbnQoJHRoaXMtPnNjYW5uZXItPnN1YnN0cmluZygkc3RhcnQpLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+bGFzdFNpbGVudENvbW1lbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIHN0YXRlbWVudC1sZXZlbCBsb3VkIGNvbW1lbnQgYmxvY2suCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG91ZENvbW1lbnRTdGF0ZW1lbnQoKTogTG91ZENvbW1lbnQKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdCgnLyonKTsKCiAgICAgICAgJGJ1ZmZlciA9IG5ldyBJbnRlcnBvbGF0aW9uQnVmZmVyKCk7CiAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJy8qJyk7CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgIHN3aXRjaCAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpIHsKICAgICAgICAgICAgICAgIGNhc2UgJyMnOgogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICd7JykgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT5hZGQoJHRoaXMtPnNpbmdsZUludGVycG9sYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcqJzoKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSAhPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IExvdWRDb21tZW50KCRidWZmZXItPmJ1aWxkSW50ZXJwb2xhdGlvbigkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSkpOwoKICAgICAgICAgICAgICAgIGNhc2UgIlxyIjoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpICE9PSAiXG4iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCJcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICJcZiI6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZFV0ZjhDaGFyKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/SelectorParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQXR0cmlidXRlT3BlcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXEF0dHJpYnV0ZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDbGFzc1NlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21iaW5hdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXENvbXBsZXhTZWxlY3RvckNvbXBvbmVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tcG91bmRTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcSURTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcUGFyZW50U2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBsYWNlaG9sZGVyU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBzZXVkb1NlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxRdWFsaWZpZWROYW1lOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3Rvckxpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNpbXBsZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxUeXBlU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFVuaXZlcnNhbFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzRm9ybWF0RXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxMb2dnZXJJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXENoYXJhY3RlcjsKCi8qKgogKiBBIHBhcnNlciBmb3Igc2VsZWN0b3JzLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFNlbGVjdG9yUGFyc2VyIGV4dGVuZHMgUGFyc2VyCnsKICAgIC8qKgogICAgICogUHNldWRvLWNsYXNzIHNlbGVjdG9ycyB0aGF0IHRha2UgdW5hZG9ybmVkIHNlbGVjdG9ycyBhcyBhcmd1bWVudHMuCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgU0VMRUNUT1JfUFNFVURPX0NMQVNTRVMgPSBbJ25vdCcsICdpcycsICdtYXRjaGVzJywgJ3doZXJlJywgJ2N1cnJlbnQnLCAnYW55JywgJ2hhcycsICdob3N0JywgJ2hvc3QtY29udGV4dCddOwoKICAgIC8qKgogICAgICogUHNldWRvLWVsZW1lbnQgc2VsZWN0b3JzIHRoYXQgdGFrZSB1bmFkb3JuZWQgc2VsZWN0b3JzIGFzIGFyZ3VtZW50cy4KICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBTRUxFQ1RPUl9QU0VVRE9fRUxFTUVOVFMgPSBbJ3Nsb3R0ZWQnXTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGFsbG93UGFyZW50OwoKICAgIC8qKgogICAgICogV2hldGhlciB0byBwYXJzZSB0aGUgc2VsZWN0b3IgYXMgcGxhaW4gQ1NTLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJHBsYWluQ3NzOwoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIHBhcnNlciB0aGF0IHBhcnNlcyBDU1Mgc2VsZWN0b3JzLgogICAgICoKICAgICAqIElmICRhbGxvd1BhcmVudCBpcyBgZmFsc2VgLCB0aGlzIHdpbGwgdGhyb3cgYSBAc2VlIFNhc3NGb3JtYXRFeGNlcHRpb259IGlmCiAgICAgKiB0aGUgc2VsZWN0b3IgaW5jbHVkZXMgdGhlIHBhcmVudCBzZWxlY3RvciBgJmAuCiAgICAgKgogICAgICogSWYgJHBsYWluQ3NzIGlzIGB0cnVlYCwgdGhpcyB3aWxsIHBhcnNlIHRoZSBzZWxlY3RvciBhcyBhIHBsYWluIENTUwogICAgICogc2VsZWN0b3IgcmF0aGVyIHRoYW4gYSBTYXNzIHNlbGVjdG9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRjb250ZW50cywgP0xvZ2dlckludGVyZmFjZSAkbG9nZ2VyID0gbnVsbCwgP1VyaUludGVyZmFjZSAkdXJsID0gbnVsbCwgYm9vbCAkYWxsb3dQYXJlbnQgPSB0cnVlLCA/SW50ZXJwb2xhdGlvbk1hcCAkaW50ZXJwb2xhdGlvbk1hcCA9IG51bGwsIGJvb2wgJHBsYWluQ3NzID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsbG93UGFyZW50ID0gJGFsbG93UGFyZW50OwogICAgICAgICR0aGlzLT5wbGFpbkNzcyA9ICRwbGFpbkNzczsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRjb250ZW50cywgJGxvZ2dlciwgJHVybCwgJGludGVycG9sYXRpb25NYXApOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZSgpOiBTZWxlY3Rvckxpc3QKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndyYXBTcGFuRm9ybWF0RXhjZXB0aW9uKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJHNlbGVjdG9yID0gJHRoaXMtPnNlbGVjdG9yTGlzdCgpOwoKICAgICAgICAgICAgaWYgKCEkdGhpcy0+c2Nhbm5lci0+aXNEb25lKCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignZXhwZWN0ZWQgc2VsZWN0b3IuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkc2VsZWN0b3I7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlQ29tcGxleFNlbGVjdG9yKCk6IENvbXBsZXhTZWxlY3RvcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d3JhcFNwYW5Gb3JtYXRFeGNlcHRpb24oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkY29tcGxleCA9ICR0aGlzLT5jb21wbGV4U2VsZWN0b3IoKTsKCiAgICAgICAgICAgIGlmICghJHRoaXMtPnNjYW5uZXItPmlzRG9uZSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ2V4cGVjdGVkIHNlbGVjdG9yLicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGNvbXBsZXg7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlQ29tcG91bmRTZWxlY3RvcigpOiBDb21wb3VuZFNlbGVjdG9yCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT53cmFwU3BhbkZvcm1hdEV4Y2VwdGlvbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICRjb21wb3VuZCA9ICR0aGlzLT5jb21wb3VuZFNlbGVjdG9yKCk7CgogICAgICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdleHBlY3RlZCBzZWxlY3Rvci4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRjb21wb3VuZDsKICAgICAgICB9KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VTaW1wbGVTZWxlY3RvcigpOiBTaW1wbGVTZWxlY3RvcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d3JhcFNwYW5Gb3JtYXRFeGNlcHRpb24oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkc2ltcGxlID0gJHRoaXMtPnNpbXBsZVNlbGVjdG9yKCk7CgogICAgICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCd1bmV4cGVjdGVkIHRva2VuLicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHNpbXBsZTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgc2VsZWN0b3IgbGlzdC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZWxlY3Rvckxpc3QoKTogU2VsZWN0b3JMaXN0CiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHByZXZpb3VzTGluZSA9ICR0aGlzLT5zY2FubmVyLT5nZXRMaW5lKCk7CiAgICAgICAgJGNvbXBvbmVudHMgPSBbJHRoaXMtPmNvbXBsZXhTZWxlY3RvcigpXTsKCiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICB3aGlsZSAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcsJykpIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJywnKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRsaW5lQnJlYWsgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0TGluZSgpICE9PSAkcHJldmlvdXNMaW5lOwoKICAgICAgICAgICAgaWYgKCRsaW5lQnJlYWspIHsKICAgICAgICAgICAgICAgICRwcmV2aW91c0xpbmUgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0TGluZSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29tcG9uZW50c1tdID0gJHRoaXMtPmNvbXBsZXhTZWxlY3RvcigkbGluZUJyZWFrKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgU2VsZWN0b3JMaXN0KCRjb21wb25lbnRzLCAkdGhpcy0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGNvbXBsZXggc2VsZWN0b3IuCiAgICAgKgogICAgICogSWYgJGxpbmVCcmVhayBpcyBgdHJ1ZWAsIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlcmUgd2FzIGEgbGluZSBicmVhawogICAgICogYmVmb3JlIHRoaXMgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29tcGxleFNlbGVjdG9yKGJvb2wgJGxpbmVCcmVhayA9IGZhbHNlKTogQ29tcGxleFNlbGVjdG9yCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgICRjb21wb25lbnRTdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRsYXN0Q29tcG91bmQgPSBudWxsOwogICAgICAgIC8qKiBAdmFyIGxpc3Q8Q3NzVmFsdWU8Q29tYmluYXRvcj4+ICRjb21iaW5hdG9ycyAqLwogICAgICAgICRjb21iaW5hdG9ycyA9IFtdOwoKICAgICAgICAkaW5pdGlhbENvbWJpbmF0b3JzID0gbnVsbDsKICAgICAgICAkY29tcG9uZW50cyA9IFtdOwoKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgIHN3aXRjaCAoJG5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgJysnOgogICAgICAgICAgICAgICAgICAgICRjb21iaW5hdG9yU3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAkY29tYmluYXRvcnNbXSA9IG5ldyBDc3NWYWx1ZShDb21iaW5hdG9yOjpORVhUX1NJQkxJTkcsICR0aGlzLT5zcGFuRnJvbSgkY29tYmluYXRvclN0YXJ0KSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnPic6CiAgICAgICAgICAgICAgICAgICAgJGNvbWJpbmF0b3JTdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICRjb21iaW5hdG9yc1tdID0gbmV3IENzc1ZhbHVlKENvbWJpbmF0b3I6OkNISUxELCAkdGhpcy0+c3BhbkZyb20oJGNvbWJpbmF0b3JTdGFydCkpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ34nOgogICAgICAgICAgICAgICAgICAgICRjb21iaW5hdG9yU3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAkY29tYmluYXRvcnNbXSA9IG5ldyBDc3NWYWx1ZShDb21iaW5hdG9yOjpGT0xMT1dJTkdfU0lCTElORywgJHRoaXMtPnNwYW5Gcm9tKCRjb21iaW5hdG9yU3RhcnQpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gbnVsbCB8fCAoIVxpbl9hcnJheSgkbmV4dCwgWydbJywgJy4nLCAnIycsICclJywgJzonLCAnJicsICcqJywgJ3wnXSwgdHJ1ZSkgJiYgISR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIDI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJGxhc3RDb21wb3VuZCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29tcG9uZW50c1tdID0gbmV3IENvbXBsZXhTZWxlY3RvckNvbXBvbmVudCgkbGFzdENvbXBvdW5kLCAkY29tYmluYXRvcnMsICR0aGlzLT5zcGFuRnJvbSgkY29tcG9uZW50U3RhcnQpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoXGNvdW50KCRjb21iaW5hdG9ycykgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgXGFzc2VydCgkaW5pdGlhbENvbWJpbmF0b3JzID09PSBudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGluaXRpYWxDb21iaW5hdG9ycyA9ICRjb21iaW5hdG9yczsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBvbmVudFN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRsYXN0Q29tcG91bmQgPSAkdGhpcy0+Y29tcG91bmRTZWxlY3RvcigpOwogICAgICAgICAgICAgICAgICAgICRjb21iaW5hdG9ycyA9IFtdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcmJykgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJyImIiBtYXkgb25seSB1c2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjb21wb3VuZCBzZWxlY3Rvci4nKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJGNvbWJpbmF0b3JzKSA+IDAgJiYgJHRoaXMtPnBsYWluQ3NzKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignZXhwZWN0ZWQgc2VsZWN0b3IuJyk7CiAgICAgICAgfQogICAgICAgIGlmICgkbGFzdENvbXBvdW5kICE9PSBudWxsKSB7CiAgICAgICAgICAgICRjb21wb25lbnRzW10gPSBuZXcgQ29tcGxleFNlbGVjdG9yQ29tcG9uZW50KCRsYXN0Q29tcG91bmQsICRjb21iaW5hdG9ycywgJHRoaXMtPnNwYW5Gcm9tKCRjb21wb25lbnRTdGFydCkpOwogICAgICAgIH0gZWxzZWlmIChcY291bnQoJGNvbWJpbmF0b3JzKSAhPT0gMCkgewogICAgICAgICAgICAkaW5pdGlhbENvbWJpbmF0b3JzID0gJGNvbWJpbmF0b3JzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignZXhwZWN0ZWQgc2VsZWN0b3IuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IENvbXBsZXhTZWxlY3RvcigkaW5pdGlhbENvbWJpbmF0b3JzID8/IFtdLCAkY29tcG9uZW50cywgJHRoaXMtPnNwYW5Gcm9tKCRzdGFydCksICRsaW5lQnJlYWspOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBjb21wb3VuZCBzZWxlY3Rvci4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb21wb3VuZFNlbGVjdG9yKCk6IENvbXBvdW5kU2VsZWN0b3IKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkY29tcG9uZW50cyA9IFskdGhpcy0+c2ltcGxlU2VsZWN0b3IoKV07CgogICAgICAgIHdoaWxlICgkdGhpcy0+aXNTaW1wbGVTZWxlY3RvclN0YXJ0KCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSkgewogICAgICAgICAgICAkY29tcG9uZW50c1tdID0gJHRoaXMtPnNpbXBsZVNlbGVjdG9yKGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQ29tcG91bmRTZWxlY3RvcigkY29tcG9uZW50cywgJHRoaXMtPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBzaW1wbGUgc2VsZWN0b3IuCiAgICAgKgogICAgICogSWYgJGFsbG93UGFyZW50IGlzIHBhc3NlZCwgaXQgY29udHJvbHMgd2hldGhlciB0aGUgcGFyZW50IHNlbGVjdG9yIGAmYCBpcwogICAgICogYWxsb3dlZC4gT3RoZXJ3aXNlLCBpdCBkZWZhdWx0cyB0byB7QHNlZSBhbGxvd1BhcmVudH0uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2ltcGxlU2VsZWN0b3IoP2Jvb2wgJGFsbG93UGFyZW50ID0gbnVsbCk6IFNpbXBsZVNlbGVjdG9yCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJGFsbG93UGFyZW50ID8/PSAkdGhpcy0+YWxsb3dQYXJlbnQ7CgogICAgICAgIHN3aXRjaCAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkpIHsKICAgICAgICAgICAgY2FzZSAnWyc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmF0dHJpYnV0ZVNlbGVjdG9yKCk7CgogICAgICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y2xhc3NTZWxlY3RvcigpOwoKICAgICAgICAgICAgY2FzZSAnIyc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmlkU2VsZWN0b3IoKTsKCiAgICAgICAgICAgIGNhc2UgJyUnOgogICAgICAgICAgICAgICAgJHNlbGVjdG9yID0gJHRoaXMtPnBsYWNlaG9sZGVyU2VsZWN0b3IoKTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+cGxhaW5Dc3MpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3IoIlBsYWNlaG9sZGVyIHNlbGVjdG9ycyBhcmVuJ3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MuIiwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICRzZWxlY3RvcjsKCiAgICAgICAgICAgIGNhc2UgJzonOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5wc2V1ZG9TZWxlY3RvcigpOwoKICAgICAgICAgICAgY2FzZSAnJic6CiAgICAgICAgICAgICAgICAkc2VsZWN0b3IgPSAkdGhpcy0+cGFyZW50U2VsZWN0b3IoKTsKICAgICAgICAgICAgICAgIGlmICghJGFsbG93UGFyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yKCJQYXJlbnQgc2VsZWN0b3JzIGFyZW4ndCBhbGxvd2VkIGhlcmUuIiwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICRzZWxlY3RvcjsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnR5cGVPclVuaXZlcnNhbFNlbGVjdG9yKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gYXR0cmlidXRlIHNlbGVjdG9yLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGF0dHJpYnV0ZVNlbGVjdG9yKCk6IEF0dHJpYnV0ZVNlbGVjdG9yCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJ1snKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkbmFtZSA9ICR0aGlzLT5hdHRyaWJ1dGVOYW1lKCk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignXScpKSB7CiAgICAgICAgICAgIHJldHVybiBBdHRyaWJ1dGVTZWxlY3Rvcjo6Y3JlYXRlKCRuYW1lLCAkdGhpcy0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfQoKICAgICAgICAkb3BlcmF0b3IgPSAkdGhpcy0+YXR0cmlidXRlT3BlcmF0b3IoKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgICR2YWx1ZSA9ICRuZXh0ID09PSAiJyIgfHwgJG5leHQgPT09ICciJyA/ICR0aGlzLT5zdHJpbmcoKSA6ICR0aGlzLT5pZGVudGlmaWVyKCk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKICAgICAgICAkbW9kaWZpZXIgPSAkbmV4dCAhPT0gbnVsbCAmJiBDaGFyYWN0ZXI6OmlzQWxwaGFiZXRpYygkbmV4dCkgPyAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSA6IG51bGw7CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCddJyk7CgogICAgICAgIHJldHVybiBBdHRyaWJ1dGVTZWxlY3Rvcjo6d2l0aE9wZXJhdG9yKCRuYW1lLCAkb3BlcmF0b3IsICR2YWx1ZSwgJHRoaXMtPnNwYW5Gcm9tKCRzdGFydCksICRtb2RpZmllcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIHF1YWxpZmllZCBuYW1lIGFzIHBhcnQgb2YgYW4gYXR0cmlidXRlIHNlbGVjdG9yLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGF0dHJpYnV0ZU5hbWUoKTogUXVhbGlmaWVkTmFtZQogICAgewogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJyonKSkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignfCcpOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBRdWFsaWZpZWROYW1lKCR0aGlzLT5pZGVudGlmaWVyKCksICcqJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCd8JykpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBRdWFsaWZpZWROYW1lKCR0aGlzLT5pZGVudGlmaWVyKCksICcnKTsKICAgICAgICB9CgogICAgICAgICRuYW1lT3JOYW1lc3BhY2UgPSAkdGhpcy0+aWRlbnRpZmllcigpOwoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgIT09ICd8JyB8fCAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICc9JykgewogICAgICAgICAgICByZXR1cm4gbmV3IFF1YWxpZmllZE5hbWUoJG5hbWVPck5hbWVzcGFjZSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKCiAgICAgICAgcmV0dXJuIG5ldyBRdWFsaWZpZWROYW1lKCR0aGlzLT5pZGVudGlmaWVyKCksICRuYW1lT3JOYW1lc3BhY2UpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gYXR0cmlidXRlIHNlbGVjdG9yJ3Mgb3BlcmF0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXR0cmlidXRlT3BlcmF0b3IoKTogQXR0cmlidXRlT3BlcmF0b3IKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgc3dpdGNoICgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSkgewogICAgICAgICAgICBjYXNlICc9JzoKICAgICAgICAgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPcGVyYXRvcjo6RVFVQUw7CgogICAgICAgICAgICBjYXNlICd+JzoKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCc9Jyk7CiAgICAgICAgICAgICAgICByZXR1cm4gQXR0cmlidXRlT3BlcmF0b3I6OklOQ0xVREU7CgogICAgICAgICAgICBjYXNlICd8JzoKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCc9Jyk7CiAgICAgICAgICAgICAgICByZXR1cm4gQXR0cmlidXRlT3BlcmF0b3I6OkRBU0g7CgogICAgICAgICAgICBjYXNlICdeJzoKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCc9Jyk7CiAgICAgICAgICAgICAgICByZXR1cm4gQXR0cmlidXRlT3BlcmF0b3I6OlBSRUZJWDsKCiAgICAgICAgICAgIGNhc2UgJyQnOgogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJz0nKTsKICAgICAgICAgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPcGVyYXRvcjo6U1VGRklYOwoKICAgICAgICAgICAgY2FzZSAnKic6CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignPScpOwogICAgICAgICAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU9wZXJhdG9yOjpTVUJTVFJJTkc7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCAiXSIuJywgJHN0YXJ0KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGNsYXNzIHNlbGVjdG9yLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNsYXNzU2VsZWN0b3IoKTogQ2xhc3NTZWxlY3RvcgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcuJyk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+aWRlbnRpZmllcigpOwoKICAgICAgICByZXR1cm4gbmV3IENsYXNzU2VsZWN0b3IoJG5hbWUsICR0aGlzLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIElEIHNlbGVjdG9yLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlkU2VsZWN0b3IoKTogSURTZWxlY3RvcgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcjJyk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+aWRlbnRpZmllcigpOwoKICAgICAgICByZXR1cm4gbmV3IElEU2VsZWN0b3IoJG5hbWUsICR0aGlzLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgcGxhY2Vob2xkZXIgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcGxhY2Vob2xkZXJTZWxlY3RvcigpOiBQbGFjZWhvbGRlclNlbGVjdG9yCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyUnKTsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5pZGVudGlmaWVyKCk7CgogICAgICAgIHJldHVybiBuZXcgUGxhY2Vob2xkZXJTZWxlY3RvcigkbmFtZSwgJHRoaXMtPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBwYXJlbnQgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcGFyZW50U2VsZWN0b3IoKTogUGFyZW50U2VsZWN0b3IKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignJicpOwogICAgICAgICRzdWZmaXggPSAkdGhpcy0+bG9va2luZ0F0SWRlbnRpZmllckJvZHkoKSA/ICR0aGlzLT5pZGVudGlmaWVyQm9keSgpIDogbnVsbDsKCiAgICAgICAgaWYgKCR0aGlzLT5wbGFpbkNzcyAmJiAkc3VmZml4ICE9PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcigiUGFyZW50IHNlbGVjdG9ycyBjYW4ndCBoYXZlIHN1ZmZpeGVzIGluIHBsYWluIENTUy4iLCAkc3RhcnQsICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpIC0gJHN0YXJ0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgUGFyZW50U2VsZWN0b3IoJHRoaXMtPnNwYW5Gcm9tKCRzdGFydCksICRzdWZmaXgpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBwc2V1ZG8gc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcHNldWRvU2VsZWN0b3IoKTogUHNldWRvU2VsZWN0b3IKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignOicpOwogICAgICAgICRlbGVtZW50ID0gJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCc6Jyk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+aWRlbnRpZmllcigpOwoKICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignKCcpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUHNldWRvU2VsZWN0b3IoJG5hbWUsICR0aGlzLT5zcGFuRnJvbSgkc3RhcnQpLCAkZWxlbWVudCk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICR1bnZlbmRvcmVkID0gVXRpbDo6dW52ZW5kb3IoJG5hbWUpOwogICAgICAgICRhcmd1bWVudCA9IG51bGw7CiAgICAgICAgJHNlbGVjdG9yID0gbnVsbDsKCiAgICAgICAgaWYgKCRlbGVtZW50KSB7CiAgICAgICAgICAgIGlmIChcaW5fYXJyYXkoJHVudmVuZG9yZWQsIHNlbGY6OlNFTEVDVE9SX1BTRVVET19FTEVNRU5UUywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRhcmd1bWVudCA9ICR0aGlzLT5kZWNsYXJhdGlvblZhbHVlKHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKFxpbl9hcnJheSgkdW52ZW5kb3JlZCwgc2VsZjo6U0VMRUNUT1JfUFNFVURPX0NMQVNTRVMsIHRydWUpKSB7CiAgICAgICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICB9IGVsc2VpZiAoJHVudmVuZG9yZWQgPT09ICdudGgtY2hpbGQnIHx8ICR1bnZlbmRvcmVkID09PSAnbnRoLWxhc3QtY2hpbGQnKSB7CiAgICAgICAgICAgICRhcmd1bWVudCA9ICR0aGlzLT5hTlBsdXNCKCk7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKC0xKSkgJiYgJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgIT09ICcpJykgewogICAgICAgICAgICAgICAgJHRoaXMtPmV4cGVjdElkZW50aWZpZXIoJ29mJyk7CiAgICAgICAgICAgICAgICAkYXJndW1lbnQgLj0gJyBvZic7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRhcmd1bWVudCA9IHJ0cmltKCR0aGlzLT5kZWNsYXJhdGlvblZhbHVlKHRydWUpKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CgogICAgICAgIHJldHVybiBuZXcgUHNldWRvU2VsZWN0b3IoJG5hbWUsICR0aGlzLT5zcGFuRnJvbSgkc3RhcnQpLCAkZWxlbWVudCwgJGFyZ3VtZW50LCAkc2VsZWN0b3IpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gW2BBbitCYCBwcm9kdWN0aW9uXVtBbitCXSBhbmQgcmV0dXJucyBpdHMgdGV4dC4KICAgICAqCiAgICAgKiBbQW4rQl06IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc3ludGF4LTMvI2FuYi1taWNyb3N5bnRheAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFOUGx1c0IoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICcnOwoKICAgICAgICBzd2l0Y2ggKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSB7CiAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICBjYXNlICdFJzoKICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RJZGVudGlmaWVyKCdldmVuJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gJ2V2ZW4nOwoKICAgICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgIGNhc2UgJ08nOgogICAgICAgICAgICAgICAgJHRoaXMtPmV4cGVjdElkZW50aWZpZXIoJ29kZCcpOwogICAgICAgICAgICAgICAgcmV0dXJuICdvZGQnOwoKICAgICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJGZpcnN0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgIGlmICgkZmlyc3QgIT09IG51bGwgJiYgQ2hhcmFjdGVyOjppc0RpZ2l0KCRmaXJzdCkpIHsKICAgICAgICAgICAgd2hpbGUgKENoYXJhY3Rlcjo6aXNEaWdpdCgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkpIHsKICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIGlmICghJHRoaXMtPnNjYW5JZGVudENoYXIoJ24nKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+ZXhwZWN0SWRlbnRDaGFyKCduJyk7CiAgICAgICAgfQogICAgICAgICRidWZmZXIgLj0gJ24nOwogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CiAgICAgICAgaWYgKCRuZXh0ICE9PSAnKycgJiYgJG5leHQgIT09ICctJykgewogICAgICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgICAgICB9CiAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkbGFzdCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgIGlmICgkbGFzdCA9PT0gbnVsbCB8fCAhQ2hhcmFjdGVyOjppc0RpZ2l0KCRsYXN0KSkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGEgbnVtYmVyLicpOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoQ2hhcmFjdGVyOjppc0RpZ2l0KCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSkgewogICAgICAgICAgICAkYnVmZmVyIC49ICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIHR5cGUgc2VsZWN0b3Igb3IgYSB1bml2ZXJzYWwgc2VsZWN0b3IuCiAgICAgKgogICAgICogVGhlc2UgYXJlIGNvbWJpbmVkIGJlY2F1c2UgZWl0aGVyIG9uZSBjb3VsZCBzdGFydCB3aXRoIGAqYC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0eXBlT3JVbml2ZXJzYWxTZWxlY3RvcigpOiBTaW1wbGVTZWxlY3RvcgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRmaXJzdCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICBpZiAoJGZpcnN0ID09PSAnKicpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignfCcpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVuaXZlcnNhbFNlbGVjdG9yKCR0aGlzLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignKicpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVuaXZlcnNhbFNlbGVjdG9yKCR0aGlzLT5zcGFuRnJvbSgkc3RhcnQpLCAnKicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbmV3IFR5cGVTZWxlY3RvcihuZXcgUXVhbGlmaWVkTmFtZSgkdGhpcy0+aWRlbnRpZmllcigpLCAnKicpLCAkdGhpcy0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZpcnN0ID09PSAnfCcpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcqJykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVW5pdmVyc2FsU2VsZWN0b3IoJHRoaXMtPnNwYW5Gcm9tKCRzdGFydCksICcnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG5ldyBUeXBlU2VsZWN0b3IobmV3IFF1YWxpZmllZE5hbWUoJHRoaXMtPmlkZW50aWZpZXIoKSwgJycpLCAkdGhpcy0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfQoKICAgICAgICAkbmFtZU9yTmFtZXNwYWNlID0gJHRoaXMtPmlkZW50aWZpZXIoKTsKCiAgICAgICAgaWYgKCEkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJ3wnKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFR5cGVTZWxlY3RvcihuZXcgUXVhbGlmaWVkTmFtZSgkbmFtZU9yTmFtZXNwYWNlKSwgJHRoaXMtPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignKicpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgVW5pdmVyc2FsU2VsZWN0b3IoJHRoaXMtPnNwYW5Gcm9tKCRzdGFydCksICRuYW1lT3JOYW1lc3BhY2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBUeXBlU2VsZWN0b3IobmV3IFF1YWxpZmllZE5hbWUoJHRoaXMtPmlkZW50aWZpZXIoKSwgJG5hbWVPck5hbWVzcGFjZSksICR0aGlzLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqICBSZXR1cm5zIHdoZXRoZXIgJGNoYXJhY3RlciBjYW4gc3RhcnQgYSBzaW1wbGUgc2VsZWN0b3IgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbXBvdW5kIHNlbGVjdG9yLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzU2ltcGxlU2VsZWN0b3JTdGFydCg/c3RyaW5nICRjaGFyYWN0ZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkY2hhcmFjdGVyKSB7CiAgICAgICAgICAgICcqJywgJ1snLCAnLicsICcjJywgJyUnLCAnOicgPT4gdHJ1ZSwKICAgICAgICAgICAgJyYnID0+ICR0aGlzLT5wbGFpbkNzcywKICAgICAgICAgICAgZGVmYXVsdCA9PiBmYWxzZSwKICAgICAgICB9OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/StringScanner.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTb3VyY2VTcGFuXEZpbGVMb2NhdGlvbjsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CnVzZSBTb3VyY2VTcGFuXFNvdXJjZUZpbGU7CgovKioKICogQSBwb3J0IG9mIERhcnQncyBzdHJpbmdfc2Nhbm5lciBwYWNrYWdlIHRvIGJlIHVzZWQgYnkgdGhlIHBhcnNlci4KICoKICogVGhlIHNjYW5uZXIgb25seSBzdXBwb3J0cyBVVEYtOCBzdHJpbmdzLgogKgogKiBEaWZmZXJlbmNlcyB3aXRoIERhcnQ6CiAqIC0gcmVhZGluZyBhIGNoYXJhY3RlciBpcyByZWFkaW5nIGEgYnl0ZSwgbm90IGEgVVRGLTE2IGNvZGUgdW5pdCAoYXMgUEhQIHN0cmluZ3MgYXJlIG5vdCBVVEYtMTYpLiBUaGUKICogICB7QHNlZSByZWFkVXRmOENoYXJ9IG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjb25zdW1lIGEgVVRGLTggY2hhci4KICogLSBjaGFyYWN0ZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHNpbmdsZS1jaGFyIHN0cmluZywgbm90IGFzIGFuIGludGVnZXIgd2l0aCB0aGVpciBVVEYtMTYgY2hhciBjb2RlCiAqIC0gb2Zmc2V0cyBhcmUgYmFzZWQgb24gYnl0ZXMsIG5vdCBvbiBVVEYtMTYgY29kZSB1bml0cy4gSW4gcHJhY3RpY2UsIHBhcnNpbmcgU2FzcyBnZW5lcmFsbHkgbmVlZHMKICogICB0byBwZWFrIGZvbGxvd2luZyBjaGFycyBvbmx5IHdoZW4gYWxyZWFkeSBrbm93aW5nIHRoYXQgdGhlIGN1cnJlbnQgY2hhciBpcyBhbiBBU0NJSSBvbmUsIHdoaWNoCiAqICAgbWFrZXMgdGhpcyBzYWZlLiBXaGVuIHRoaXMgYXNzdW1wdGlvbiBkb2VzIG5vdCBob2xkIGFueW1vcmUsIGEgZGlmZmVyZW50IGxvZ2ljIHNob3VsZCBiZSB1c2VkCiAqIC0gYXMgc3RyaW5ncyBhbmQgcmVnZXhwIGNhbm5vdCBiZSB1c2VkIGludGVyY2hhbmdlYWJseSBpbiBQSFAgKGluIERhcnQsIHJlZ2V4cHMgYXJlIGEgZGlmZmVyZW50CiAqICAgb2JqZWN0LCBhbmQgYm90aCBTdHJpbmcgYW5kIFJlZ2V4cCBhcmUgaW1wbGVtZW50aW5nIGEgUGF0dGVybiBpbnRlcmZhY2UgZm9yIG1hdGNoaW5nKSwgdGhlIHNjYW5uZXIKICogICBleHBvc2VzIHN1cHBvcnRzIG9ubHkgc3RyaW5ncyBpbiBzY2FuKCkgYW5kIGV4cGVjdCgpLiBTaG91bGQgd2UgbmVlZCBzdXBwb3J0IGZvciByZWdleHBzLCBhCiAqICAgc2VwYXJhdGUgbWV0aG9kIHdpbGwgYmUgYWRkZWQuCiAqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgU3RyaW5nU2Nhbm5lcgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkc3RyaW5nOwoKICAgIHByaXZhdGUgaW50ICRwb3NpdGlvbiA9IDA7CgogICAgcHJpdmF0ZSByZWFkb25seSBTb3VyY2VGaWxlICRzb3VyY2VGaWxlOwoKICAgIHByaXZhdGUgP2ludCAkbGFzdE1hdGNoU3RhcnQgPSBudWxsOwoKICAgIHByaXZhdGUgP2ludCAkbGFzdE1hdGNoUG9zaXRpb24gPSBudWxsOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJGNvbnRlbnQsID9VcmlJbnRlcmZhY2UgJHNvdXJjZVVybCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmluZyA9ICRjb250ZW50OwogICAgICAgICR0aGlzLT5zb3VyY2VGaWxlID0gU291cmNlRmlsZTo6ZnJvbVN0cmluZygkY29udGVudCwgJHNvdXJjZVVybCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmluZzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG9zaXRpb24oKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wb3NpdGlvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UG9zaXRpb24oaW50ICRwb3NpdGlvbik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+cG9zaXRpb24gPSAkcG9zaXRpb247CiAgICAgICAgJHRoaXMtPmxhc3RNYXRjaFN0YXJ0ID0gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BhbkZyb20oaW50ICRzdGFydCwgP2ludCAkZW5kID0gbnVsbCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2VGaWxlLT5zcGFuKCRzdGFydCwgJGVuZCA/PyAkdGhpcy0+cG9zaXRpb24pOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGN1cnJlbnQgbG9jYXRpb24gb2YgdGhlIHNjYW5uZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2NhdGlvbigpOiBGaWxlTG9jYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZUZpbGUtPmxvY2F0aW9uKCR0aGlzLT5wb3NpdGlvbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGVtcHR5IHNwYW4gYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbXB0eVNwYW4oKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZUZpbGUtPnNwYW4oJHRoaXMtPnBvc2l0aW9uLCAkdGhpcy0+cG9zaXRpb24pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0RvbmUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9zaXRpb24gPT09IFxzdHJsZW4oJHRoaXMtPnN0cmluZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgaXMgcmVhY2hlZAogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZENoYXIoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5wb3NpdGlvbiA9PT0gXHN0cmxlbigkdGhpcy0+c3RyaW5nKSkgewogICAgICAgICAgICAkdGhpcy0+ZmFpbCgnbW9yZSBpbnB1dCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJpbmdbJHRoaXMtPnBvc2l0aW9uKytdOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGlzIHJlYWNoZWQKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1pbXB1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlYWRVdGY4Q2hhcigpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnBvc2l0aW9uID09PSBcc3RybGVuKCR0aGlzLT5zdHJpbmcpKSB7CiAgICAgICAgICAgICR0aGlzLT5mYWlsKCdtb3JlIGlucHV0Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXG9yZCgkdGhpcy0+c3RyaW5nWyR0aGlzLT5wb3NpdGlvbl0pIDwgMHg4MCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmluZ1skdGhpcy0+cG9zaXRpb24rK107CiAgICAgICAgfQoKICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy8uL3VzQScsICR0aGlzLT5zdHJpbmcsICRtLCAwLCAkdGhpcy0+cG9zaXRpb24pKSB7CiAgICAgICAgICAgICR0aGlzLT5mYWlsKCd1dGYtOCBjaGFyJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cG9zaXRpb24gKz0gXHN0cmxlbigkbVswXSk7CgogICAgICAgIHJldHVybiAkbVswXTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIGlmIGl0IGlzIHRoZSBwcm92aWRlZCBjaGFyYWN0ZXIuCiAgICAgKgogICAgICogQHJldHVybiBib29sIFdoZXRoZXIgdGhlIGNoYXJhY3RlciB3YXMgY29uc3VtZWQuCiAgICAgKgogICAgICogQHBocHN0YW4taW1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzY2FuQ2hhcihzdHJpbmcgJGNoYXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5wb3NpdGlvbiA9PT0gXHN0cmxlbigkdGhpcy0+c3RyaW5nKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnN0cmluZ1skdGhpcy0+cG9zaXRpb25dICE9PSAkY2hhcikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICArKyR0aGlzLT5wb3NpdGlvbjsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyB0aGUgcHJvdmlkZWQgc3RyaW5nIGlmIGl0IGFwcGVhcnMgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBib29sIFdoZXRoZXIgdGhlIHN0cmluZyB3YXMgY29uc3VtZWQuCiAgICAgKgogICAgICogQHBocHN0YW4taW1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzY2FuKHN0cmluZyAkc3RyaW5nKTogYm9vbAogICAgewogICAgICAgIGlmICghJHRoaXMtPm1hdGNoZXMoJHN0cmluZykpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnBvc2l0aW9uICs9IFxzdHJsZW4oJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmxhc3RNYXRjaFBvc2l0aW9uID0gJHRoaXMtPnBvc2l0aW9uOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHByb3ZpZGVkIHN0cmluZyBhcHBlYXJzIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLgogICAgICoKICAgICAqIFRoaXMgZG9lc24ndCBtb3ZlIHRoZSBzY2FuIHBvaW50ZXIgZm9yd2FyZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1hdGNoZXMoc3RyaW5nICRzdHJpbmcpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5wb3NpdGlvbiAtIDEgKyBcc3RybGVuKCRzdHJpbmcpID49IFxzdHJsZW4oJHRoaXMtPnN0cmluZykpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN1YnN0cigkdGhpcy0+c3RyaW5nLCAkdGhpcy0+cG9zaXRpb24sIFxzdHJsZW4oJHN0cmluZykpID09PSAkc3RyaW5nKSB7CiAgICAgICAgICAgICR0aGlzLT5sYXN0TWF0Y2hTdGFydCA9ICR0aGlzLT5wb3NpdGlvbjsKICAgICAgICAgICAgJHRoaXMtPmxhc3RNYXRjaFBvc2l0aW9uID0gJHRoaXMtPnBvc2l0aW9uOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBpcyAkY2hhcmFjdGVyLCBjb25zdW1lcyBpdC4KICAgICAqCiAgICAgKiBJZiAkY2hhcmFjdGVyIGNvdWxkIG5vdCBiZSBjb25zdW1lZCwgdGhyb3dzIGFuIGV4Y2VwdGlvbgogICAgICogZGVzY3JpYmluZyB0aGUgcG9zaXRpb24gb2YgdGhlIGZhaWx1cmUuICRuYW1lIGlzIHVzZWQgaW4gdGhpcyBlcnJvciBhcwogICAgICogdGhlIGV4cGVjdGVkIG5hbWUgb2YgdGhlIGNoYXJhY3RlciBiZWluZyBtYXRjaGVkOyBpZiBpdCdzIGBudWxsYCwgdGhlCiAgICAgKiBjaGFyYWN0ZXIgaXRzZWxmIGlzIHVzZWQgaW5zdGVhZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbgogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwZWN0Q2hhcihzdHJpbmcgJGNoYXJhY3RlciwgP3N0cmluZyAkbmFtZSA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zY2FuQ2hhcigkY2hhcmFjdGVyKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoJG5hbWUgPT09IG51bGwpIHsKICAgICAgICAgICAgJG5hbWUgPSAnIicgLiAkY2hhcmFjdGVyIC4gJyInOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmZhaWwoJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcGhwc3Rhbi1pbXB1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGVjdChzdHJpbmcgJHN0cmluZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNjYW4oJHN0cmluZykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmZhaWwoJyInIC4gJHN0cmluZyAuICciJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwZWN0RG9uZSgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5pc0RvbmUoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZmFpbCgnbm8gbW9yZSBpbnB1dCcpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0IHRoZSBnaXZlbiBvZmZzZXQgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24uCiAgICAgKgogICAgICogVGhlIG9mZnNldCBjYW4gYmUgbmVnYXRpdmUgdG8gcGVlayBhbHJlYWR5IHNlZW4gY2hhcmFjdGVycy4KICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGUgb2Zmc2V0IGdvZXMgb3V0IG9mIHJhbmdlLgogICAgICogVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIHBvc2l0aW9uIG9yIHRoZSBsYXN0IG1hdGNoLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGVla0NoYXIoaW50ICRvZmZzZXQgPSAwKTogP3N0cmluZwogICAgewogICAgICAgICRwb3MgPSAkdGhpcy0+cG9zaXRpb24gKyAkb2Zmc2V0OwoKICAgICAgICBpZiAoJHBvcyA8IDAgfHwgJHBvcyA+PSBcc3RybGVuKCR0aGlzLT5zdHJpbmcpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJpbmdbJHBvc107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdWJzdHJpbmcgb2YgdGhlIHN0cmluZyBiZXR3ZWVuICRzdGFydCBhbmQgJGVuZCAoZXhjbHVkZWQpLgogICAgICoKICAgICAqICRlbmQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdWJzdHJpbmcoaW50ICRzdGFydCwgP2ludCAkZW5kID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgkZW5kID09PSBudWxsKSB7CiAgICAgICAgICAgICRlbmQgPSAkdGhpcy0+cG9zaXRpb247CiAgICAgICAgfQoKICAgICAgICBpZiAoJGVuZCA8ICRzdGFydCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3Vic3RyKCR0aGlzLT5zdHJpbmcsICRzdGFydCwgJGVuZCAtICRzdGFydCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgc2Nhbm5lcidzIGN1cnJlbnQgKHplcm8tYmFzZWQpIGxpbmUgbnVtYmVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZSgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZUZpbGUtPmdldExpbmUoJHRoaXMtPnBvc2l0aW9uKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBzY2FubmVyJ3MgY3VycmVudCAoemVyby1iYXNlZCkgY29sdW1uIG51bWJlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbHVtbigpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZUZpbGUtPmdldENvbHVtbigkdGhpcy0+cG9zaXRpb24pOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVycm9yKHN0cmluZyAkbWVzc2FnZSwgP2ludCAkcG9zaXRpb24gPSBudWxsLCA/aW50ICRsZW5ndGggPSBudWxsKTogbmV2ZXIKICAgIHsKICAgICAgICBpZiAoJHBvc2l0aW9uID09PSBudWxsICYmICRsZW5ndGggPT09IG51bGwgJiYgJHRoaXMtPmdldExhc3RNYXRjaFN0YXJ0KCkgIT09IG51bGwpIHsKICAgICAgICAgICAgXGFzc2VydCgkdGhpcy0+bGFzdE1hdGNoU3RhcnQgIT09IG51bGwpOwogICAgICAgICAgICAkcG9zaXRpb24gPSAkdGhpcy0+bGFzdE1hdGNoU3RhcnQ7CiAgICAgICAgICAgICRsZW5ndGggPSAkdGhpcy0+cG9zaXRpb24gLSAkcG9zaXRpb247CiAgICAgICAgfQoKICAgICAgICAkcG9zaXRpb24gPz89ICR0aGlzLT5wb3NpdGlvbjsKICAgICAgICAkbGVuZ3RoID8/PSAwOwoKICAgICAgICAkc3BhbiA9ICR0aGlzLT5zb3VyY2VGaWxlLT5zcGFuKCRwb3NpdGlvbiwgJHBvc2l0aW9uICsgJGxlbmd0aCk7CgogICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb24oJG1lc3NhZ2UsICRzcGFuKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldExhc3RNYXRjaFN0YXJ0KCk6ID9pbnQKICAgIHsKICAgICAgICAvLyBMYXppbHkgdW5zZXQgJHRoaXMtPmxhc3RNYXRjaFN0YXJ0IHNvIHRoYXQgd2UgYXZvaWQgZXh0cmEgYXNzaWdubWVudHMgaW4KICAgICAgICAvLyBjaGFyYWN0ZXItYnktY2hhcmFjdGVyIG1ldGhvZHMgdGhhdCBhcmUgdXNlZCBpbiBjb3JlIGxvb3BzLgogICAgICAgIGlmICgkdGhpcy0+bGFzdE1hdGNoUG9zaXRpb24gIT09ICR0aGlzLT5wb3NpdGlvbikgewogICAgICAgICAgICAkdGhpcy0+bGFzdE1hdGNoU3RhcnQgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXN0TWF0Y2hTdGFydDsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmFpbChzdHJpbmcgJG1lc3NhZ2UpOiBuZXZlcgogICAgewogICAgICAgICR0aGlzLT5lcnJvcigiZXhwZWN0ZWQgJG1lc3NhZ2UuIik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Parser/StylesheetParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXEV4Y2VwdGlvbnNcU3ludGF4RXJyb3I7CnVzZSBMZWFndWVcVXJpXFVyaTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xBcmd1bWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xBcmd1bWVudERlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEFyZ3VtZW50SW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXEJpbmFyeU9wZXJhdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cQm9vbGVhbkV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxDb2xvckV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxGdW5jdGlvbkV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxJZkV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxJbnRlcnBvbGF0ZWRGdW5jdGlvbkV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxMaXN0RXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXE1hcEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxOdWxsRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXE51bWJlckV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxQYXJlbnRoZXNpemVkRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFNlbGVjdG9yRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFN0cmluZ0V4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxTdXBwb3J0c0V4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxVbmFyeU9wZXJhdGlvbkV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxVbmFyeU9wZXJhdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVmFyaWFibGVFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEltcG9ydDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbXBvcnRcRHluYW1pY0ltcG9ydDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xJbXBvcnRcU3RhdGljSW1wb3J0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEludGVycG9sYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxBdFJvb3RSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxBdFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XENvbnRlbnRCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcQ29udGVudFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XERlYnVnUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEVhY2hSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxFbHNlQ2xhdXNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxFcnJvclJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEV4dGVuZFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEZvclJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEZ1bmN0aW9uUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcSWZDbGF1c2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XElmUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcSW1wb3J0UnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcSW5jbHVkZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XE1lZGlhUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcTWl4aW5SdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxSZXR1cm5SdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTaWxlbnRDb21tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTdHlsZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFN0eWxlc2hlZXQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFN1cHBvcnRzUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcVmFyaWFibGVEZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcV2FyblJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFdoaWxlUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvblxTdXBwb3J0c0FueXRoaW5nOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN1cHBvcnRzQ29uZGl0aW9uXFN1cHBvcnRzRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3VwcG9ydHNDb25kaXRpb25cU3VwcG9ydHNGdW5jdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvblxTdXBwb3J0c0ludGVycG9sYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3VwcG9ydHNDb25kaXRpb25cU3VwcG9ydHNOZWdhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvblxTdXBwb3J0c09wZXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb2xvcnM7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRGVwcmVjYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFNhc3NGb3JtYXRFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcTG9nZ2VyXExvZ2dlckludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcQ2hhcmFjdGVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcTG9nZ2VyVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXFBhdGg7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTdHJpbmdVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXExpc3RTZXBhcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0NvbG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNwYW5Db2xvckZvcm1hdDsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQGludGVybmFsCiAqLwphYnN0cmFjdCBjbGFzcyBTdHlsZXNoZWV0UGFyc2VyIGV4dGVuZHMgUGFyc2VyCnsKICAgIC8qKgogICAgICogVGhlIHNpbGVudCBjb21tZW50IHRoaXMgcGFyc2VyIGVuY291bnRlcmVkIHByZXZpb3VzbHkuCiAgICAgKi8KICAgIHByb3RlY3RlZCA/U2lsZW50Q29tbWVudCAkbGFzdFNpbGVudENvbW1lbnQgPSBudWxsOwoKICAgIC8qKgogICAgICogV2hldGhlciB3ZSd2ZSBjb25zdW1lZCBhIHJ1bGUgb3RoZXIgdGhhbiBgQGNoYXJzZXRgLCBgQGZvcndhcmRgLCBvciBgQHVzZWAuCiAgICAgKi8KICAgIHByaXZhdGUgYm9vbCAkaXNVc2VBbGxvd2VkID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHBhcnNlciBpcyBjdXJyZW50bHkgcGFyc2luZyB0aGUgY29udGVudHMgb2YgYSBtaXhpbiBkZWNsYXJhdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBib29sICRpbk1peGluID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBwYXJzZXIgaXMgY3VycmVudGx5IHBhcnNpbmcgYSBjb250ZW50IGJsb2NrIHBhc3NlZCB0byBhIG1peGluLgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGluQ29udGVudEJsb2NrID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBwYXJzZXIgaXMgY3VycmVudGx5IHBhcnNpbmcgYSBjb250cm9sIGRpcmVjdGl2ZSBzdWNoIGFzIGBAaWZgCiAgICAgKiBvciBgQGVhY2hgLgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGluQ29udHJvbERpcmVjdGl2ZSA9IGZhbHNlOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgcGFyc2VyIGlzIGN1cnJlbnRseSBwYXJzaW5nIGFuIHVua25vd24gcnVsZS4KICAgICAqLwogICAgcHJpdmF0ZSBib29sICRpblVua25vd25BdFJ1bGUgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHBhcnNlciBpcyBjdXJyZW50bHkgcGFyc2luZyBhIHN0eWxlIHJ1bGUuCiAgICAgKi8KICAgIHByaXZhdGUgYm9vbCAkaW5TdHlsZVJ1bGUgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHBhcnNlciBpcyBjdXJyZW50bHkgd2l0aGluIGEgcGFyZW50aGVzaXplZCBleHByZXNzaW9uLgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGluUGFyZW50aGVzZXMgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHBhcnNlciBpcyBjdXJyZW50bHkgd2l0aGluIGFuIGV4cHJlc3Npb24uCiAgICAgKi8KICAgIHByaXZhdGUgYm9vbCAkaW5FeHByZXNzaW9uID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBBIG1hcCBmcm9tIGFsbCB2YXJpYWJsZSBuYW1lcyB0aGF0IGFyZSBhc3NpZ25lZCB3aXRoIGAhZ2xvYmFsYCBpbiB0aGUKICAgICAqIGN1cnJlbnQgc3R5bGVzaGVldCB0byB0aGUgbm9kZXMgd2hlcmUgdGhleSdyZSBkZWZpbmVkLgogICAgICoKICAgICAqIFRoZXNlIGFyZSBjb2xsZWN0ZWQgYXQgcGFyc2UgdGltZSBiZWNhdXNlIHRoZXkgYWZmZWN0IHRoZSB2YXJpYWJsZXMKICAgICAqIGV4cG9zZWQgYnkgdGhlIG1vZHVsZSBnZW5lcmF0ZWQgZm9yIHRoaXMgc3R5bGVzaGVldCwgKmV2ZW4gaWYgdGhleSBhcmVuJ3QKICAgICAqIGV2YWx1YXRlZCouIFRoaXMgYWxsb3dzIHVzIHRvIGVuc3VyZSB0aGF0IHRoZSBzdHlsZXNoZWV0IGFsd2F5cyBleHBvc2VzCiAgICAgKiB0aGUgc2FtZSBzZXQgb2YgdmFyaWFibGUgbmFtZXMgbm8gbWF0dGVyIGhvdyBpdCdzIGV2YWx1YXRlZC4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgVmFyaWFibGVEZWNsYXJhdGlvbj4KICAgICAqLwogICAgcHJpdmF0ZSBhcnJheSAkZ2xvYmFsVmFyaWFibGVzID0gW107CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkY29udGVudHMsID9Mb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciA9IG51bGwsID9VcmlJbnRlcmZhY2UgJHNvdXJjZVVybCA9IG51bGwpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkY29udGVudHMsICRsb2dnZXIsICRzb3VyY2VVcmwpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbkV4cHJlc3Npb24oKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aW5FeHByZXNzaW9uOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uIHdoZW4gcGFyc2luZyBmYWlscwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoKTogU3R5bGVzaGVldAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d3JhcFNwYW5Gb3JtYXRFeGNlcHRpb24oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgICAgIC8vIEFsbG93IGEgYnl0ZS1vcmRlciBtYXJrIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50LgogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2NhbigiXHV7RkVGRn0iKTsKCiAgICAgICAgICAgICRzdGF0ZW1lbnRzID0gJHRoaXMtPnN0YXRlbWVudHMoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoaXMgc3BlY2lhbGx5IHNvIHRoYXQge0BzZWUgYXRSdWxlfSBhbHdheXMgcmV0dXJucyBhIG5vbi1udWxsYWJsZSBTdGF0ZW1lbnQuCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnNjYW4oJ0BjaGFyc2V0JykpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zdHJpbmcoKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zdGF0ZW1lbnQodHJ1ZSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdERvbmUoKTsKCiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IGFsbCBnbG9iYWwgdmFyaWFibGUgYXNzaWdubWVudHMgcHJvZHVjZSBhIHZhcmlhYmxlIGluIHRoaXMKICAgICAgICAgICAgLy8gc3R5bGVzaGVldCwgZXZlbiBpZiB0aGV5IGFyZW4ndCBldmFsdWF0ZWQuIFNlZSBzYXNzL2xhbmd1YWdlIzUwLgogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+Z2xvYmFsVmFyaWFibGVzIGFzICRkZWNsYXJhdGlvbikgewogICAgICAgICAgICAgICAgJHN0YXRlbWVudHNbXSA9IG5ldyBWYXJpYWJsZURlY2xhcmF0aW9uKCRkZWNsYXJhdGlvbi0+Z2V0TmFtZSgpLCBuZXcgTnVsbEV4cHJlc3Npb24oJGRlY2xhcmF0aW9uLT5nZXRFeHByZXNzaW9uKCktPmdldFNwYW4oKSksICRkZWNsYXJhdGlvbi0+Z2V0U3BhbigpLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHlsZXNoZWV0KCRzdGF0ZW1lbnRzLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSwgJHRoaXMtPmlzUGxhaW5Dc3MoKSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlQXJndW1lbnREZWNsYXJhdGlvbigpOiBBcmd1bWVudERlY2xhcmF0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT53cmFwU3BhbkZvcm1hdEV4Y2VwdGlvbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCdAJywgJ0AtcnVsZScpOwogICAgICAgICAgICAkdGhpcy0+aWRlbnRpZmllcigpOwogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAkdGhpcy0+aWRlbnRpZmllcigpOwogICAgICAgICAgICAkYXJndW1lbnRzID0gJHRoaXMtPmFyZ3VtZW50RGVjbGFyYXRpb24oKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJ3snKTsKCiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3REb25lKCk7CgogICAgICAgICAgICByZXR1cm4gJGFyZ3VtZW50czsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgc3RhdGVtZW50IHRoYXQncyBhbGxvd2VkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHN0eWxlc2hlZXQgb3IKICAgICAqIHdpdGhpbiBuZXN0ZWQgc3R5bGUgYW5kIGF0IHJ1bGVzLgogICAgICoKICAgICAqIElmICRyb290IGlzIGB0cnVlYCwgdGhpcyBwYXJzZXMgYXQtcnVsZXMgdGhhdCBhcmUgYWxsb3dlZCBvbmx5IGF0IHRoZQogICAgICogcm9vdCBvZiB0aGUgc3R5bGVzaGVldC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzdGF0ZW1lbnQoYm9vbCAkcm9vdCA9IGZhbHNlKTogU3RhdGVtZW50CiAgICB7CiAgICAgICAgc3dpdGNoICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkgewogICAgICAgICAgICBjYXNlICdAJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YXRSdWxlKCR0aGlzLT5zdGF0ZW1lbnQoLi4uKSwgJHJvb3QpOwoKICAgICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5pc0luZGVudGVkKCkgfHwgISR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyKDEpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zdHlsZVJ1bGUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+aXNVc2VBbGxvd2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aW5jbHVkZVJ1bGUoJHN0YXJ0KTsKCiAgICAgICAgICAgIGNhc2UgJz0nOgogICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+aXNJbmRlbnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zdHlsZVJ1bGUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+aXNVc2VBbGxvd2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1peGluUnVsZSgkc3RhcnQpOwoKICAgICAgICAgICAgY2FzZSAnfSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ3VubWF0Y2hlZCAifSIuJyk7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pblN0eWxlUnVsZSB8fCAkdGhpcy0+aW5Vbmtub3duQXRSdWxlIHx8ICR0aGlzLT5pbk1peGluIHx8ICR0aGlzLT5pbkNvbnRlbnRCbG9jaykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGVjbGFyYXRpb25PclN0eWxlUnVsZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFyaWFibGVEZWNsYXJhdGlvbk9yU3R5bGVSdWxlKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBuYW1lc3BhY2VkIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgogICAgICoKICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFyaWFibGVEZWNsYXJhdGlvbldpdGhOYW1lc3BhY2UoKTogVmFyaWFibGVEZWNsYXJhdGlvbgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRuYW1lc3BhY2UgPSAkdGhpcy0+aWRlbnRpZmllcigpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcuJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dmFyaWFibGVEZWNsYXJhdGlvbldpdGhvdXROYW1lc3BhY2UoJG5hbWVzcGFjZSwgJHN0YXJ0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9uV2l0aG91dE5hbWVzcGFjZSg/c3RyaW5nICRuYW1lc3BhY2UgPSBudWxsLCA/aW50ICRzdGFydCA9IG51bGwpOiBWYXJpYWJsZURlY2xhcmF0aW9uCiAgICB7CiAgICAgICAgJHByZWNlZGluZ0NvbW1lbnQgPSAkdGhpcy0+bGFzdFNpbGVudENvbW1lbnQ7CiAgICAgICAgJHRoaXMtPmxhc3RTaWxlbnRDb21tZW50ID0gbnVsbDsKICAgICAgICAkc3RhcnQgPSAkc3RhcnQgPz8gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgICRuYW1lID0gJHRoaXMtPnZhcmlhYmxlTmFtZSgpOwoKICAgICAgICBpZiAoJG5hbWVzcGFjZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0UHVibGljKCRuYW1lLCBmbigpID0+ICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+aXNQbGFpbkNzcygpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcignU2FzcyB2YXJpYWJsZXMgYXJlblwndCBhbGxvd2VkIGluIHBsYWluIENTUy4nLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCc6Jyk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmV4cHJlc3Npb24oKTsKCiAgICAgICAgJGd1YXJkZWQgPSBmYWxzZTsKICAgICAgICAkZ2xvYmFsID0gZmFsc2U7CiAgICAgICAgJGZsYWdTdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCchJykpIHsKICAgICAgICAgICAgJGZsYWcgPSAkdGhpcy0+aWRlbnRpZmllcigpOwogICAgICAgICAgICBpZiAoJGZsYWcgPT09ICdkZWZhdWx0JykgewogICAgICAgICAgICAgICAgaWYgKCRndWFyZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyVXRpbDo6d2FybkZvckRlcHJlY2F0aW9uKCR0aGlzLT5sb2dnZXIsIERlcHJlY2F0aW9uOjpkdXBsaWNhdGVWYXJGbGFncywgIiFkZWZhdWx0IHNob3VsZCBvbmx5IGJlIHdyaXR0ZW4gb25jZSBmb3IgZWFjaCB2YXJpYWJsZS5cblRoaXMgd2lsbCBiZSBhbiBlcnJvciBpbiBEYXJ0IFNhc3MgMi4wLjAuIiwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRmbGFnU3RhcnQpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZ3VhcmRlZCA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZWlmICgkZmxhZyA9PT0gJ2dsb2JhbCcpIHsKICAgICAgICAgICAgICAgIGlmICgkbmFtZXNwYWNlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yKCIhZ2xvYmFsIGlzbid0IGFsbG93ZWQgZm9yIHZhcmlhYmxlcyBpbiBvdGhlciBtb2R1bGVzLiIsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkZmxhZ1N0YXJ0KSk7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGdsb2JhbCkgewogICAgICAgICAgICAgICAgICAgIExvZ2dlclV0aWw6Ondhcm5Gb3JEZXByZWNhdGlvbigkdGhpcy0+bG9nZ2VyLCBEZXByZWNhdGlvbjo6ZHVwbGljYXRlVmFyRmxhZ3MsICIhZ2xvYmFsIHNob3VsZCBvbmx5IGJlIHdyaXR0ZW4gb25jZSBmb3IgZWFjaCB2YXJpYWJsZS5cblRoaXMgd2lsbCBiZSBhbiBlcnJvciBpbiBEYXJ0IFNhc3MgMi4wLjAuIiwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRmbGFnU3RhcnQpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZ2xvYmFsID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvcignSW52YWxpZCBmbGFnIG5hbWUuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRmbGFnU3RhcnQpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJGZsYWdTdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmV4cGVjdFN0YXRlbWVudFNlcGFyYXRvcigndmFyaWFibGUgZGVjbGFyYXRpb24nKTsKCiAgICAgICAgLy8gVE9ETyByZW1vdmUgdGhpcyB3aGVuIGltcGxlbWVudGluZyBtb2R1bGVzCiAgICAgICAgaWYgKCRuYW1lc3BhY2UgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdTYXNzIG1vZHVsZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgJGRlY2xhcmF0aW9uID0gbmV3IFZhcmlhYmxlRGVjbGFyYXRpb24oJG5hbWUsICR2YWx1ZSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCksICRuYW1lc3BhY2UsICRndWFyZGVkLCAkZ2xvYmFsLCAkcHJlY2VkaW5nQ29tbWVudCk7CgogICAgICAgIGlmICgkZ2xvYmFsICYmICFpc3NldCgkdGhpcy0+Z2xvYmFsVmFyaWFibGVzWyRuYW1lXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmdsb2JhbFZhcmlhYmxlc1skbmFtZV0gPSAkZGVjbGFyYXRpb247CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRlY2xhcmF0aW9uOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdmFyaWFibGVEZWNsYXJhdGlvbk9yU3R5bGVSdWxlKCk6IFN0YXRlbWVudAogICAgewogICAgICAgIGlmICgkdGhpcy0+aXNQbGFpbkNzcygpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3R5bGVSdWxlKCk7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgaW5kZW50ZWQgc3ludGF4IGFsbG93cyBhIHNpbmdsZSBiYWNrc2xhc2ggdG8gZGlzdGluZ3Vpc2ggYSBzdHlsZSBydWxlCiAgICAgICAgLy8gZnJvbSBvbGQtc3R5bGUgcHJvcGVydHkgc3ludGF4LiBXZSBkb24ndCBzdXBwb3J0IG9sZCBwcm9wZXJ0eSBzeW50YXgsIGJ1dAogICAgICAgIC8vIHdlIGRvIHN1cHBvcnQgdGhlIGJhY2tzbGFzaCBiZWNhdXNlIGl0J3MgZWFzeSB0byBkby4KICAgICAgICBpZiAoJHRoaXMtPmlzSW5kZW50ZWQoKSAmJiAkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJ1xcJykpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zdHlsZVJ1bGUoKTsKICAgICAgICB9CgogICAgICAgIGlmICghJHRoaXMtPmxvb2tpbmdBdElkZW50aWZpZXIoKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0eWxlUnVsZSgpOwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHZhcmlhYmxlT3JJbnRlcnBvbGF0aW9uID0gJHRoaXMtPnZhcmlhYmxlRGVjbGFyYXRpb25PckludGVycG9sYXRpb24oKTsKCiAgICAgICAgaWYgKCR2YXJpYWJsZU9ySW50ZXJwb2xhdGlvbiBpbnN0YW5jZW9mIFZhcmlhYmxlRGVjbGFyYXRpb24pIHsKICAgICAgICAgICAgcmV0dXJuICR2YXJpYWJsZU9ySW50ZXJwb2xhdGlvbjsKICAgICAgICB9CgogICAgICAgICRidWZmZXIgPSBuZXcgSW50ZXJwb2xhdGlvbkJ1ZmZlcigpOwogICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJHZhcmlhYmxlT3JJbnRlcnBvbGF0aW9uKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHlsZVJ1bGUoJGJ1ZmZlciwgJHN0YXJ0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEge0BzZWUgVmFyaWFibGVEZWNsYXJhdGlvbn0sIGEge0BzZWUgRGVjbGFyYXRpb259LCBvciBhIHtAc2VlIFN0eWxlUnVsZX0uCiAgICAgKgogICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbk9yU3R5bGVSdWxlKCk6IFN0YXRlbWVudAogICAgewogICAgICAgIC8vIFRoZSBpbmRlbnRlZCBzeW50YXggYWxsb3dzIGEgc2luZ2xlIGJhY2tzbGFzaCB0byBkaXN0aW5ndWlzaCBhIHN0eWxlIHJ1bGUKICAgICAgICAvLyBmcm9tIG9sZC1zdHlsZSBwcm9wZXJ0eSBzeW50YXguIFdlIGRvbid0IHN1cHBvcnQgb2xkIHByb3BlcnR5IHN5bnRheCwgYnV0CiAgICAgICAgLy8gd2UgZG8gc3VwcG9ydCB0aGUgYmFja3NsYXNoIGJlY2F1c2UgaXQncyBlYXN5IHRvIGRvLgogICAgICAgIGlmICgkdGhpcy0+aXNJbmRlbnRlZCgpICYmICR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignXFwnKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0eWxlUnVsZSgpOwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgICRkZWNsYXJhdGlvbkJ1ZmZlciA9ICR0aGlzLT5kZWNsYXJhdGlvbk9yQnVmZmVyKCk7CgogICAgICAgIGlmICgkZGVjbGFyYXRpb25CdWZmZXIgaW5zdGFuY2VvZiBTdGF0ZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuICRkZWNsYXJhdGlvbkJ1ZmZlcjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c3R5bGVSdWxlKCRkZWNsYXJhdGlvbkJ1ZmZlciwgJHN0YXJ0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFRyaWVzIHRvIHBhcnNlIGEgdmFyaWFibGUgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24sIGFuZCByZXR1cm5zIHRoZSB2YWx1ZQogICAgICogcGFyc2VkIHNvIGZhciBpZiBpdCBmYWlscy4KICAgICAqCiAgICAgKiBUaGlzIGNhbiByZXR1cm4gZWl0aGVyIGFuIHtAc2VlIEludGVycG9sYXRpb25CdWZmZXJ9LCBpbmRpY2F0aW5nIHRoYXQgaXQKICAgICAqIGNvdWxkbid0IGNvbnN1bWUgYSBkZWNsYXJhdGlvbiBhbmQgdGhhdCBzZWxlY3RvciBwYXJzaW5nIHNob3VsZCBiZQogICAgICogYXR0ZW1wdGVkOyBvciBpdCBjYW4gcmV0dXJuIGEge0BzZWUgRGVjbGFyYXRpb259IG9yIGEge0BzZWUgVmFyaWFibGVEZWNsYXJhdGlvbn0sCiAgICAgKiBpbmRpY2F0aW5nIHRoYXQgaXQgc3VjY2Vzc2Z1bGx5IGNvbnN1bWVkIGEgZGVjbGFyYXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZGVjbGFyYXRpb25PckJ1ZmZlcigpOiBTdGF0ZW1lbnR8SW50ZXJwb2xhdGlvbkJ1ZmZlcgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRuYW1lQnVmZmVyID0gbmV3IEludGVycG9sYXRpb25CdWZmZXIoKTsKICAgICAgICAkZmlyc3QgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKICAgICAgICAkc3RhcnRzV2l0aFB1bmN0dWF0aW9uID0gZmFsc2U7CgogICAgICAgIC8vIEFsbG93IHRoZSAiKnByb3A6IHZhbCIsICI6cHJvcDogdmFsIiwgIiNwcm9wOiB2YWwiLCBhbmQgIi5wcm9wOiB2YWwiCiAgICAgICAgLy8gaGFja3MuCiAgICAgICAgaWYgKCRmaXJzdCA9PT0gJzonIHx8ICRmaXJzdCA9PT0gJyonIHx8ICRmaXJzdCA9PT0gJy4nIHx8ICgkZmlyc3QgPT09ICcjJyAmJiAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgIT09ICd7JykpIHsKICAgICAgICAgICAgJHN0YXJ0c1dpdGhQdW5jdHVhdGlvbiA9IHRydWU7CiAgICAgICAgICAgICRuYW1lQnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICRuYW1lQnVmZmVyLT53cml0ZSgkdGhpcy0+cmF3VGV4dCgkdGhpcy0+d2hpdGVzcGFjZSguLi4pKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgcmV0dXJuICRuYW1lQnVmZmVyOwogICAgICAgIH0KCiAgICAgICAgJHZhcmlhYmxlT3JJbnRlcnBvbGF0aW9uID0gJHN0YXJ0c1dpdGhQdW5jdHVhdGlvbiA/ICR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCkgOiAkdGhpcy0+dmFyaWFibGVEZWNsYXJhdGlvbk9ySW50ZXJwb2xhdGlvbigpOwoKICAgICAgICBpZiAoJHZhcmlhYmxlT3JJbnRlcnBvbGF0aW9uIGluc3RhbmNlb2YgVmFyaWFibGVEZWNsYXJhdGlvbikgewogICAgICAgICAgICByZXR1cm4gJHZhcmlhYmxlT3JJbnRlcnBvbGF0aW9uOwogICAgICAgIH0KCiAgICAgICAgJG5hbWVCdWZmZXItPmFkZEludGVycG9sYXRpb24oJHZhcmlhYmxlT3JJbnRlcnBvbGF0aW9uKTsKCiAgICAgICAgJHRoaXMtPmlzVXNlQWxsb3dlZCA9IGZhbHNlOwoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPm1hdGNoZXMoJy8qJykpIHsKICAgICAgICAgICAgJG5hbWVCdWZmZXItPndyaXRlKCR0aGlzLT5yYXdUZXh0KCR0aGlzLT5sb3VkQ29tbWVudCguLi4pKSk7CiAgICAgICAgfQoKICAgICAgICAkbWlkQnVmZmVyID0gJHRoaXMtPnJhd1RleHQoJHRoaXMtPndoaXRlc3BhY2UoLi4uKSk7CiAgICAgICAgJGJlZm9yZUNvbG9uID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgIGlmICghJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCc6JykpIHsKICAgICAgICAgICAgaWYgKCRtaWRCdWZmZXIgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAkbmFtZUJ1ZmZlci0+d3JpdGUoJyAnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRuYW1lQnVmZmVyOwogICAgICAgIH0KCiAgICAgICAgJG1pZEJ1ZmZlciAuPSAnOic7CgogICAgICAgIC8vIFBhcnNlIGN1c3RvbSBwcm9wZXJ0aWVzIGFzIGRlY2xhcmF0aW9ucyBubyBtYXR0ZXIgd2hhdC4KICAgICAgICAkbmFtZSA9ICRuYW1lQnVmZmVyLT5idWlsZEludGVycG9sYXRpb24oJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCwgJGJlZm9yZUNvbG9uKSk7CgogICAgICAgIGlmIChzdHJfc3RhcnRzX3dpdGgoJG5hbWUtPmdldEluaXRpYWxQbGFpbigpLCAnLS0nKSkgewogICAgICAgICAgICAkdmFsdWUgPSBuZXcgU3RyaW5nRXhwcmVzc2lvbigkdGhpcy0+aW50ZXJwb2xhdGVkRGVjbGFyYXRpb25WYWx1ZShzaWxlbnRDb21tZW50czogZmFsc2UpKTsKICAgICAgICAgICAgJHRoaXMtPmV4cGVjdFN0YXRlbWVudFNlcGFyYXRvcignY3VzdG9tIHByb3BlcnR5Jyk7CgogICAgICAgICAgICByZXR1cm4gRGVjbGFyYXRpb246OmNyZWF0ZSgkbmFtZSwgJHZhbHVlLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCc6JykpIHsKICAgICAgICAgICAgJG5hbWVCdWZmZXItPndyaXRlKCRtaWRCdWZmZXIpOwogICAgICAgICAgICAkbmFtZUJ1ZmZlci0+d3JpdGUoJzonKTsKCiAgICAgICAgICAgIHJldHVybiAkbmFtZUJ1ZmZlcjsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+aXNJbmRlbnRlZCgpICYmICR0aGlzLT5sb29raW5nQXRJbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgLy8gSW4gdGhlIGluZGVudGVkIHN5bnRheCwgYGZvbzpiYXJgIGlzIGFsd2F5cyBjb25zaWRlcmVkIGEgc2VsZWN0b3IKICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gYSBwcm9wZXJ0eS4KICAgICAgICAgICAgJG5hbWVCdWZmZXItPndyaXRlKCRtaWRCdWZmZXIpOwoKICAgICAgICAgICAgcmV0dXJuICRuYW1lQnVmZmVyOwogICAgICAgIH0KCiAgICAgICAgJHBvc3RDb2xvbldoaXRlc3BhY2UgPSAkdGhpcy0+cmF3VGV4dCgkdGhpcy0+d2hpdGVzcGFjZSguLi4pKTsKCiAgICAgICAgJG5lc3RlZCA9ICR0aGlzLT50cnlEZWNsYXJhdGlvbkNoaWxkcmVuKCRuYW1lLCAkc3RhcnQpOwogICAgICAgIGlmICgkbmVzdGVkICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbmVzdGVkOwogICAgICAgIH0KCiAgICAgICAgJG1pZEJ1ZmZlciAuPSAkcG9zdENvbG9uV2hpdGVzcGFjZTsKICAgICAgICAkY291bGRCZVNlbGVjdG9yID0gJHBvc3RDb2xvbldoaXRlc3BhY2UgPT09ICcnICYmICR0aGlzLT5sb29raW5nQXRJbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCk7CgogICAgICAgICRiZWZvcmVEZWNsYXJhdGlvbiA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+ZXhwcmVzc2lvbigpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5sb29raW5nQXRDaGlsZHJlbigpKSB7CiAgICAgICAgICAgICAgICAvLyBQcm9wZXJ0aWVzIHRoYXQgYXJlIGFtYmlndW91cyB3aXRoIHNlbGVjdG9ycyBjYW4ndCBoYXZlIGFkZGl0aW9uYWwKICAgICAgICAgICAgICAgIC8vIHByb3BlcnRpZXMgbmVzdGVkIGJlbmVhdGggdGhlbSwgc28gd2UgZm9yY2UgYW4gZXJyb3IuIFRoaXMgd2lsbCBiZQogICAgICAgICAgICAgICAgLy8gY2F1Z2h0IGJlbG93IGFuZCBjYXVzZSB0aGUgdGV4dCB0byBiZSByZXBhcnNlZCBhcyBhIHNlbGVjdG9yLgogICAgICAgICAgICAgICAgaWYgKCRjb3VsZEJlU2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICghJHRoaXMtPmF0RW5kT2ZTdGF0ZW1lbnQoKSkgewogICAgICAgICAgICAgICAgLy8gRm9yY2UgYW4gZXhjZXB0aW9uIGlmIHRoZXJlIGlzbid0IGEgdmFsaWQgZW5kLW9mLXByb3BlcnR5IGNoYXJhY3RlcgogICAgICAgICAgICAgICAgLy8gYnV0IGRvbid0IGNvbnN1bWUgdGhhdCBjaGFyYWN0ZXIuIFRoaXMgd2lsbCBhbHNvIGNhdXNlIHRoZSB0ZXh0IHRvIGJlCiAgICAgICAgICAgICAgICAvLyByZXBhcnNlZC4KICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RTdGF0ZW1lbnRTZXBhcmF0b3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICBpZiAoISRjb3VsZEJlU2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgd291bGQgYmUgZm9sbG93ZWQgYnkgYSBzZW1pY29sb24sIGl0J3MgZGVmaW5pdGVseSBzdXBwb3NlZAogICAgICAgICAgICAvLyB0byBiZSBhIHByb3BlcnR5LCBub3QgYSBzZWxlY3Rvci4KICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNldFBvc2l0aW9uKCRiZWZvcmVEZWNsYXJhdGlvbik7CgogICAgICAgICAgICAkYWRkaXRpb25hbCA9ICR0aGlzLT5hbG1vc3RBbnlWYWx1ZSgpOwoKICAgICAgICAgICAgaWYgKCEkdGhpcy0+aXNJbmRlbnRlZCgpICYmICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpID09PSAnOycpIHsKICAgICAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbmFtZUJ1ZmZlci0+d3JpdGUoJG1pZEJ1ZmZlcik7CiAgICAgICAgICAgICRuYW1lQnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCRhZGRpdGlvbmFsKTsKCiAgICAgICAgICAgIHJldHVybiAkbmFtZUJ1ZmZlcjsKICAgICAgICB9CgogICAgICAgICRuZXN0ZWQgPSAkdGhpcy0+dHJ5RGVjbGFyYXRpb25DaGlsZHJlbigkbmFtZSwgJHN0YXJ0LCAkdmFsdWUpOwogICAgICAgIGlmICgkbmVzdGVkICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbmVzdGVkOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmV4cGVjdFN0YXRlbWVudFNlcGFyYXRvcigpOwoKICAgICAgICByZXR1cm4gRGVjbGFyYXRpb246OmNyZWF0ZSgkbmFtZSwgJHZhbHVlLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmllcyB0byBwYXJzZSBhIG5hbWVzcGFjZWQge0BzZWUgVmFyaWFibGVEZWNsYXJhdGlvbn0sIGFuZCByZXR1cm5zIHRoZSB2YWx1ZQogICAgICogcGFyc2VkIHNvIGZhciBpZiBpdCBmYWlscy4KICAgICAqCiAgICAgKiBUaGlzIGNhbiByZXR1cm4gZWl0aGVyIGFuIHtAc2VlIEludGVycG9sYXRpb259LCBpbmRpY2F0aW5nIHRoYXQgaXQgY291bGRuJ3QKICAgICAqIGNvbnN1bWUgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBhbmQgdGhhdCBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBvciBzZWxlY3RvcgogICAgICogcGFyc2luZyBzaG91bGQgYmUgYXR0ZW1wdGVkOyBvciBpdCBjYW4gcmV0dXJuIGEge0BzZWUgVmFyaWFibGVEZWNsYXJhdGlvbn0sCiAgICAgKiBpbmRpY2F0aW5nIHRoYXQgaXQgc3VjY2Vzc2Z1bGx5IGNvbnN1bWVkIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFyaWFibGVEZWNsYXJhdGlvbk9ySW50ZXJwb2xhdGlvbigpOiBJbnRlcnBvbGF0aW9ufFZhcmlhYmxlRGVjbGFyYXRpb24KICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCk7CiAgICAgICAgfQoKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkaWRlbnRpZmllciA9ICR0aGlzLT5pZGVudGlmaWVyKCk7CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+bWF0Y2hlcygnLiQnKSkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFyaWFibGVEZWNsYXJhdGlvbldpdGhvdXROYW1lc3BhY2UoJGlkZW50aWZpZXIsICRzdGFydCk7CiAgICAgICAgfQoKICAgICAgICAkYnVmZmVyID0gbmV3IEludGVycG9sYXRpb25CdWZmZXIoKTsKICAgICAgICAkYnVmZmVyLT53cml0ZSgkaWRlbnRpZmllcik7CgogICAgICAgIC8vIFBhcnNlIHRoZSByZXN0IG9mIGFuIGludGVycG9sYXRlZCBpZGVudGlmaWVyIGlmIG9uZSBleGlzdHMsIHNvIGNhbGxlcnMKICAgICAgICAvLyBkb24ndCBoYXZlIHRvLgogICAgICAgIGlmICgkdGhpcy0+bG9va2luZ0F0SW50ZXJwb2xhdGVkSWRlbnRpZmllckJvZHkoKSkgewogICAgICAgICAgICAkYnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRidWZmZXItPmJ1aWxkSW50ZXJwb2xhdGlvbigkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIFN0eWxlUnVsZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHN0eWxlUnVsZSg/SW50ZXJwb2xhdGlvbkJ1ZmZlciAkYnVmZmVyID0gbnVsbCwgP2ludCAkc3RhcnQgPSBudWxsKTogU3R5bGVSdWxlCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHN0YXJ0ID8/ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRpbnRlcnBvbGF0aW9uID0gJHRoaXMtPnN0eWxlUnVsZVNlbGVjdG9yKCk7CgogICAgICAgIGlmICgkYnVmZmVyICE9PSBudWxsKSB7CiAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJGludGVycG9sYXRpb24pOwogICAgICAgICAgICAkaW50ZXJwb2xhdGlvbiA9ICRidWZmZXItPmJ1aWxkSW50ZXJwb2xhdGlvbigkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRpbnRlcnBvbGF0aW9uLT5nZXRDb250ZW50cygpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignZXhwZWN0ZWQgIn0iLicpOwogICAgICAgIH0KCiAgICAgICAgJHdhc0luU3R5bGVSdWxlID0gJHRoaXMtPmluU3R5bGVSdWxlOwogICAgICAgICR0aGlzLT5pblN0eWxlUnVsZSA9IHRydWU7CgogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aENoaWxkcmVuKCR0aGlzLT5zdGF0ZW1lbnQoLi4uKSwgJHN0YXJ0LCBmdW5jdGlvbiAoYXJyYXkgJGNoaWxkcmVuKSB1c2UgKCR3YXNJblN0eWxlUnVsZSwgJHN0YXJ0LCAkaW50ZXJwb2xhdGlvbikgewogICAgICAgICAgICBpZiAoJHRoaXMtPmlzSW5kZW50ZWQoKSAmJiAkY2hpbGRyZW4gPT09IFtdKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2FybigiVGhpcyBzZWxlY3RvciBkb2Vzbid0IGhhdmUgYW55IHByb3BlcnRpZXMgYW5kIHdvbid0IGJlIHJlbmRlcmVkLiIsICRpbnRlcnBvbGF0aW9uLT5nZXRTcGFuKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+aW5TdHlsZVJ1bGUgPSAkd2FzSW5TdHlsZVJ1bGU7CgogICAgICAgICAgICByZXR1cm4gbmV3IFN0eWxlUnVsZSgkaW50ZXJwb2xhdGlvbiwgJGNoaWxkcmVuLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBlaXRoZXIgYSBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBvciBhIG5hbWVzcGFjZWQgdmFyaWFibGUgZGVjbGFyYXRpb24uCiAgICAgKgogICAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gY29udGV4dHMgd2hlcmUgZGVjbGFyYXRpb25zIGFyZSBhbGxvd2VkIGJ1dCBzdHlsZQogICAgICogcnVsZXMgYXJlIG5vdCwgc3VjaCBhcyBuZXN0ZWQgZGVjbGFyYXRpb25zLiBPdGhlcndpc2UsCiAgICAgKiB7QHNlZSBkZWNsYXJhdGlvbk9yU3R5bGVSdWxlfSBpcyB1c2VkIGluc3RlYWQuCiAgICAgKgogICAgICogSWYgJHBhcnNlQ3VzdG9tUHJvcGVydGllcyBpcyBgdHJ1ZWAsIHByb3BlcnRpZXMgdGhhdCBiZWdpbiB3aXRoIGAtLWAgd2lsbAogICAgICogYmUgcGFyc2VkIHVzaW5nIGN1c3RvbSBwcm9wZXJ0eSBwYXJzaW5nIHJ1bGVzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHByb3BlcnR5T3JWYXJpYWJsZURlY2xhcmF0aW9uKGJvb2wgJHBhcnNlQ3VzdG9tUHJvcGVydGllcyA9IHRydWUpOiBTdGF0ZW1lbnQKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgLy8gQWxsb3cgdGhlICIqcHJvcDogdmFsIiwgIjpwcm9wOiB2YWwiLCAiI3Byb3A6IHZhbCIsIGFuZCAiLnByb3A6IHZhbCIKICAgICAgICAvLyBoYWNrcy4KICAgICAgICAkZmlyc3QgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKICAgICAgICBpZiAoJGZpcnN0ID09PSAnOicgfHwgJGZpcnN0ID09PSAnKicgfHwgJGZpcnN0ID09PSAnLicgfHwgKCRmaXJzdCA9PT0gJyMnICYmICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKSAhPT0gJ3snKSkgewogICAgICAgICAgICAkbmFtZUJ1ZmZlciA9IG5ldyBJbnRlcnBvbGF0aW9uQnVmZmVyKCk7CiAgICAgICAgICAgICRuYW1lQnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICRuYW1lQnVmZmVyLT53cml0ZSgkdGhpcy0+cmF3VGV4dCgkdGhpcy0+d2hpdGVzcGFjZSguLi4pKSk7CiAgICAgICAgICAgICRuYW1lQnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAkbmFtZSA9ICRuYW1lQnVmZmVyLT5idWlsZEludGVycG9sYXRpb24oJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0gZWxzZWlmICghJHRoaXMtPmlzUGxhaW5Dc3MoKSkgewogICAgICAgICAgICAkdmFyaWFibGVPckludGVycG9sYXRpb24gPSAkdGhpcy0+dmFyaWFibGVEZWNsYXJhdGlvbk9ySW50ZXJwb2xhdGlvbigpOwoKICAgICAgICAgICAgaWYgKCR2YXJpYWJsZU9ySW50ZXJwb2xhdGlvbiBpbnN0YW5jZW9mIFZhcmlhYmxlRGVjbGFyYXRpb24pIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdmFyaWFibGVPckludGVycG9sYXRpb247CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRuYW1lID0gJHZhcmlhYmxlT3JJbnRlcnBvbGF0aW9uOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPmludGVycG9sYXRlZElkZW50aWZpZXIoKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJzonKTsKCiAgICAgICAgaWYgKCRwYXJzZUN1c3RvbVByb3BlcnRpZXMgJiYgc3RyX3N0YXJ0c193aXRoKCRuYW1lLT5nZXRJbml0aWFsUGxhaW4oKSwgJy0tJykpIHsKICAgICAgICAgICAgJHZhbHVlID0gbmV3IFN0cmluZ0V4cHJlc3Npb24oJHRoaXMtPmludGVycG9sYXRlZERlY2xhcmF0aW9uVmFsdWUoc2lsZW50Q29tbWVudHM6IGZhbHNlKSk7CiAgICAgICAgICAgICR0aGlzLT5leHBlY3RTdGF0ZW1lbnRTZXBhcmF0b3IoJ2N1c3RvbSBwcm9wZXJ0eScpOwoKICAgICAgICAgICAgcmV0dXJuIERlY2xhcmF0aW9uOjpjcmVhdGUoJG5hbWUsICR2YWx1ZSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgJG5lc3RlZCA9ICR0aGlzLT50cnlEZWNsYXJhdGlvbkNoaWxkcmVuKCRuYW1lLCAkc3RhcnQpOwogICAgICAgIGlmICgkbmVzdGVkICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbmVzdGVkOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmV4cHJlc3Npb24oKTsKCiAgICAgICAgJG5lc3RlZCA9ICR0aGlzLT50cnlEZWNsYXJhdGlvbkNoaWxkcmVuKCRuYW1lLCAkc3RhcnQsICR2YWx1ZSk7CiAgICAgICAgaWYgKCRuZXN0ZWQgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRuZXN0ZWQ7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKCk7CgogICAgICAgIHJldHVybiBEZWNsYXJhdGlvbjo6Y3JlYXRlKCRuYW1lLCAkdmFsdWUsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRyaWVzIHBhcnNpbmcgbmVzdGVkIGNoaWxkcmVuIG9mIGEgZGVjbGFyYXRpb24gd2hvc2UgJG5hbWUgaGFzIGFscmVhZHkKICAgICAqIGJlZW4gcGFyc2VkLCBhbmQgcmV0dXJucyBgbnVsbGAgaWYgaXQgZG9lc24ndCBoYXZlIGFueS4KICAgICAqCiAgICAgKiBJZiAkdmFsdWUgaXMgcGFzc2VkLCBpdCdzIHVzZWQgYXMgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB3aXRob3V0CiAgICAgKiBuZXN0aW5nLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRyeURlY2xhcmF0aW9uQ2hpbGRyZW4oSW50ZXJwb2xhdGlvbiAkbmFtZSwgaW50ICRzdGFydCwgP0V4cHJlc3Npb24gJHZhbHVlID0gbnVsbCk6ID9EZWNsYXJhdGlvbgogICAgewogICAgICAgIGlmICghJHRoaXMtPmxvb2tpbmdBdENoaWxkcmVuKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmlzUGxhaW5Dc3MoKSkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoIk5lc3RlZCBkZWNsYXJhdGlvbnMgYXJlbid0IGFsbG93ZWQgaW4gcGxhaW4gQ1NTLiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT53aXRoQ2hpbGRyZW4oJHRoaXMtPmRlY2xhcmF0aW9uQ2hpbGQoLi4uKSwgJHN0YXJ0LCBmbihhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuKSA9PiBEZWNsYXJhdGlvbjo6bmVzdGVkKCRuYW1lLCAkY2hpbGRyZW4sICRzcGFuLCAkdmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgc3RhdGVtZW50IHRoYXQncyBhbGxvd2VkIHdpdGhpbiBhIGRlY2xhcmF0aW9uLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uQ2hpbGQoKTogU3RhdGVtZW50CiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpID09PSAnQCcpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kZWNsYXJhdGlvbkF0UnVsZSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5wcm9wZXJ0eU9yVmFyaWFibGVEZWNsYXJhdGlvbihmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhbiBhdC1ydWxlLgogICAgICoKICAgICAqIFRoaXMgY29uc3VtZXMgYXQtcnVsZXMgdGhhdCBhcmUgYWxsb3dlZCBhdCBhbGwgbGV2ZWxzIG9mIHRoZSBkb2N1bWVudDsgdGhlCiAgICAgKiAkY2hpbGQgcGFyYW1ldGVyIGlzIGNhbGxlZCB0byBjb25zdW1lIGFueSBhdC1ydWxlcyB0aGF0IGFyZSBzcGVjaWZpY2FsbHkKICAgICAqIGFsbG93ZWQgaW4gdGhlIGNhbGxlcidzIGNvbnRleHQuCiAgICAgKgogICAgICogSWYgJHJvb3QgaXMgYHRydWVgLCB0aGlzIHBhcnNlcyBhdC1ydWxlcyB0aGF0IGFyZSBhbGxvd2VkIG9ubHkgYXQgdGhlCiAgICAgKiByb290IG9mIHRoZSBzdHlsZXNoZWV0LgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiBTdGF0ZW1lbnQgJGNoaWxkCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNoaWxkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhdFJ1bGUoY2FsbGFibGUgJGNoaWxkLCBib29sICRyb290ID0gZmFsc2UpOiBTdGF0ZW1lbnQKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignQCcsICdALXJ1bGUnKTsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgJHdhc1VzZUFsbG93ZWQgPSAkdGhpcy0+aXNVc2VBbGxvd2VkOwogICAgICAgICR0aGlzLT5pc1VzZUFsbG93ZWQgPSBmYWxzZTsKCiAgICAgICAgc3dpdGNoICgkbmFtZS0+Z2V0QXNQbGFpbigpKSB7CiAgICAgICAgICAgIGNhc2UgJ2F0LXJvb3QnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5hdFJvb3RSdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jb250ZW50UnVsZSgkc3RhcnQpOwogICAgICAgICAgICBjYXNlICdkZWJ1Zyc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmRlYnVnUnVsZSgkc3RhcnQpOwogICAgICAgICAgICBjYXNlICdlYWNoJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZWFjaFJ1bGUoJHN0YXJ0LCAkY2hpbGQpOwogICAgICAgICAgICBjYXNlICdlbHNlJzoKICAgICAgICAgICAgICAgICR0aGlzLT5kaXNhbGxvd2VkQXRSdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZXJyb3JSdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ2V4dGVuZCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmV4dGVuZFJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnZm9yJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Zm9yUnVsZSgkc3RhcnQsICRjaGlsZCk7CiAgICAgICAgICAgIGNhc2UgJ2ZvcndhcmQnOgogICAgICAgICAgICAgICAgJHRoaXMtPmlzVXNlQWxsb3dlZCA9ICR3YXNVc2VBbGxvd2VkOwoKICAgICAgICAgICAgICAgIGlmICghJHJvb3QpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZGlzYWxsb3dlZEF0UnVsZSgkc3RhcnQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgd2hlbiBpbXBsZW1lbnRpbmcgbW9kdWxlcwogICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdTYXNzIG1vZHVsZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZ1bmN0aW9uUnVsZSgkc3RhcnQpOwogICAgICAgICAgICBjYXNlICdpZic6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmlmUnVsZSgkc3RhcnQsICRjaGlsZCk7CiAgICAgICAgICAgIGNhc2UgJ2ltcG9ydCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmltcG9ydFJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnaW5jbHVkZSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmluY2x1ZGVSdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ21lZGlhJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bWVkaWFSdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ21peGluJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bWl4aW5SdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJy1tb3otZG9jdW1lbnQnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5tb3pEb2N1bWVudFJ1bGUoJHN0YXJ0LCAkbmFtZSk7CiAgICAgICAgICAgIGNhc2UgJ3JldHVybic6CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGlzYWxsb3dlZEF0UnVsZSgkc3RhcnQpOwogICAgICAgICAgICBjYXNlICdzdXBwb3J0cyc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN1cHBvcnRzUnVsZSgkc3RhcnQpOwogICAgICAgICAgICBjYXNlICd1c2UnOgogICAgICAgICAgICAgICAgJHRoaXMtPmlzVXNlQWxsb3dlZCA9ICR3YXNVc2VBbGxvd2VkOwoKICAgICAgICAgICAgICAgIGlmICghJHJvb3QpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZGlzYWxsb3dlZEF0UnVsZSgkc3RhcnQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgd2hlbiBpbXBsZW1lbnRpbmcgbW9kdWxlcwogICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdTYXNzIG1vZHVsZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICBjYXNlICd3YXJuJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2FyblJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnd2hpbGUnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aGlsZVJ1bGUoJHN0YXJ0LCAkY2hpbGQpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT51bmtub3duQXRSdWxlKCRzdGFydCwgJG5hbWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGF0LXJ1bGUgYWxsb3dlZCB3aXRoaW4gYSBwcm9wZXJ0eSBkZWNsYXJhdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbkF0UnVsZSgpOiBTdGF0ZW1lbnQKICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5wbGFpbkF0UnVsZU5hbWUoKTsKCiAgICAgICAgc3dpdGNoICgkbmFtZSkgewogICAgICAgICAgICBjYXNlICdjb250ZW50JzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudFJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnZGVidWcnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kZWJ1Z1J1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnZWFjaCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmVhY2hSdWxlKCRzdGFydCwgJHRoaXMtPmRlY2xhcmF0aW9uQ2hpbGQoLi4uKSk7CiAgICAgICAgICAgIGNhc2UgJ2Vsc2UnOgogICAgICAgICAgICAgICAgJHRoaXMtPmRpc2FsbG93ZWRBdFJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnZXJyb3InOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5lcnJvclJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnZm9yJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Zm9yUnVsZSgkc3RhcnQsICR0aGlzLT5kZWNsYXJhdGlvbkNoaWxkKC4uLikpOwogICAgICAgICAgICBjYXNlICdpZic6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmlmUnVsZSgkc3RhcnQsICR0aGlzLT5kZWNsYXJhdGlvbkNoaWxkKC4uLikpOwogICAgICAgICAgICBjYXNlICdpbmNsdWRlJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aW5jbHVkZVJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnd2Fybic6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPndhcm5SdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ3doaWxlJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2hpbGVSdWxlKCRzdGFydCwgJHRoaXMtPmRlY2xhcmF0aW9uQ2hpbGQoLi4uKSk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGlzYWxsb3dlZEF0UnVsZSgkc3RhcnQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgc3RhdGVtZW50IGFsbG93ZWQgd2l0aGluIGEgZnVuY3Rpb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZnVuY3Rpb25DaGlsZCgpOiBTdGF0ZW1lbnQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgIT09ICdAJykgewogICAgICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZhcmlhYmxlRGVjbGFyYXRpb25XaXRoTmFtZXNwYWNlKCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbiAkdmFyaWFibGVEZWNsYXJhdGlvbkVycm9yKSB7CiAgICAgICAgICAgICAgICAvLyBUT0RPIHJlbW92ZSB0aGlzIHdoZW4gaW1wbGVtZW50aW5nIG1vZHVsZXMKICAgICAgICAgICAgICAgIGlmICgkdmFyaWFibGVEZWNsYXJhdGlvbkVycm9yLT5nZXRNZXNzYWdlKCkgPT09ICdTYXNzIG1vZHVsZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJykgewogICAgICAgICAgICAgICAgICAgIHRocm93ICR2YXJpYWJsZURlY2xhcmF0aW9uRXJyb3I7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNldFBvc2l0aW9uKCRzdGFydCk7CgogICAgICAgICAgICAgICAgLy8gSWYgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBmYWlsZWQgdG8gcGFyc2UsIGl0J3MgcG9zc2libGUgdGhlIHVzZXIKICAgICAgICAgICAgICAgIC8vIHRob3VnaHQgdGhleSBjb3VsZCB3cml0ZSBhIHN0eWxlIHJ1bGUgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24gaW4gYQogICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24uIElmIHNvLCB0aHJvdyBhIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlLgogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkc3RhdGVtZW50ID0gJHRoaXMtPmRlY2xhcmF0aW9uT3JTdHlsZVJ1bGUoKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgICAgIHRocm93ICR2YXJpYWJsZURlY2xhcmF0aW9uRXJyb3I7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdAZnVuY3Rpb24gcnVsZXMgbWF5IG5vdCBjb250YWluICcgLiAoJHN0YXRlbWVudCBpbnN0YW5jZW9mIFN0eWxlUnVsZSA/ICdzdHlsZSBydWxlcy4nIDogJ2RlY2xhcmF0aW9ucy4nKSwgJHN0YXRlbWVudC0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgIHN3aXRjaCAoJHRoaXMtPnBsYWluQXRSdWxlTmFtZSgpKSB7CiAgICAgICAgICAgIGNhc2UgJ2RlYnVnJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGVidWdSdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ2VhY2gnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5lYWNoUnVsZSgkc3RhcnQsICR0aGlzLT5mdW5jdGlvbkNoaWxkKC4uLikpOwogICAgICAgICAgICBjYXNlICdlbHNlJzoKICAgICAgICAgICAgICAgICR0aGlzLT5kaXNhbGxvd2VkQXRSdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZXJyb3JSdWxlKCRzdGFydCk7CiAgICAgICAgICAgIGNhc2UgJ2Zvcic6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZvclJ1bGUoJHN0YXJ0LCAkdGhpcy0+ZnVuY3Rpb25DaGlsZCguLi4pKTsKICAgICAgICAgICAgY2FzZSAnaWYnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5pZlJ1bGUoJHN0YXJ0LCAkdGhpcy0+ZnVuY3Rpb25DaGlsZCguLi4pKTsKICAgICAgICAgICAgY2FzZSAncmV0dXJuJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmV0dXJuUnVsZSgkc3RhcnQpOwogICAgICAgICAgICBjYXNlICd3YXJuJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2FyblJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgY2FzZSAnd2hpbGUnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aGlsZVJ1bGUoJHN0YXJ0LCAkdGhpcy0+ZnVuY3Rpb25DaGlsZCguLi4pKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICR0aGlzLT5kaXNhbGxvd2VkQXRSdWxlKCRzdGFydCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gYXQtcnVsZSdzIG5hbWUsIHdpdGggaW50ZXJwb2xhdGlvbiBkaXNhbGxvd2VkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBsYWluQXRSdWxlTmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignQCcsICdALXJ1bGUnKTsKCiAgICAgICAgJG5hbWUgPSAkdGhpcy0+aWRlbnRpZmllcigpOwogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgIHJldHVybiAkbmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGBAYXQtcm9vdGAgcnVsZS4KICAgICAqCiAgICAgKiAkc3RhcnQgc2hvdWxkIHBvaW50IGJlZm9yZSB0aGUgYEBgLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGF0Um9vdFJ1bGUoaW50ICRzdGFydCk6IEF0Um9vdFJ1bGUKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcoJykgewogICAgICAgICAgICAkcXVlcnkgPSAkdGhpcy0+YXRSb290UXVlcnkoKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2l0aENoaWxkcmVuKCR0aGlzLT5zdGF0ZW1lbnQoLi4uKSwgJHN0YXJ0LCBmbihhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuKSA9PiBuZXcgQXRSb290UnVsZSgkY2hpbGRyZW4sICRzcGFuLCAkcXVlcnkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+bG9va2luZ0F0Q2hpbGRyZW4oKSB8fCAoJHRoaXMtPmlzSW5kZW50ZWQoKSAmJiAkdGhpcy0+YXRFbmRPZlN0YXRlbWVudCgpKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhDaGlsZHJlbigkdGhpcy0+c3RhdGVtZW50KC4uLiksICRzdGFydCwgZm4oYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbikgPT4gbmV3IEF0Um9vdFJ1bGUoJGNoaWxkcmVuLCAkc3BhbikpOwogICAgICAgIH0KCiAgICAgICAgJGNoaWxkID0gJHRoaXMtPnN0eWxlUnVsZSgpOwoKICAgICAgICByZXR1cm4gbmV3IEF0Um9vdFJ1bGUoWyRjaGlsZF0sICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgcXVlcnkgZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgKGZvbzogYmFyKWAuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXRSb290UXVlcnkoKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRidWZmZXIgPSBuZXcgSW50ZXJwb2xhdGlvbkJ1ZmZlcigpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcoJyk7CiAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJygnKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkdGhpcy0+YWRkT3JJbmplY3QoJGJ1ZmZlciwgJHRoaXMtPmV4cHJlc3Npb24oKSk7CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJzonKSkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnOiAnKTsKICAgICAgICAgICAgJHRoaXMtPmFkZE9ySW5qZWN0KCRidWZmZXIsICR0aGlzLT5leHByZXNzaW9uKCkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICRidWZmZXItPndyaXRlKCcpJyk7CgogICAgICAgIHJldHVybiAkYnVmZmVyLT5idWlsZEludGVycG9sYXRpb24oJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgQGNvbnRlbnRgIHJ1bGUuCiAgICAgKgogICAgICogJHN0YXJ0IHNob3VsZCBwb2ludCBiZWZvcmUgdGhlIGBAYC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb250ZW50UnVsZShpbnQgJHN0YXJ0KTogQ29udGVudFJ1bGUKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5pbk1peGluKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcignQGNvbnRlbnQgaXMgb25seSBhbGxvd2VkIHdpdGhpbiBtaXhpbiBkZWNsYXJhdGlvbnMuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgJGJlZm9yZVdoaXRlc3BhY2UgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0TG9jYXRpb24oKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcoJykgewogICAgICAgICAgICAkYXJndW1lbnRzID0gJHRoaXMtPmFyZ3VtZW50SW52b2NhdGlvbih0cnVlKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkYXJndW1lbnRzID0gQXJndW1lbnRJbnZvY2F0aW9uOjpjcmVhdGVFbXB0eSgkYmVmb3JlV2hpdGVzcGFjZS0+cG9pbnRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmV4cGVjdFN0YXRlbWVudFNlcGFyYXRvcignQGNvbnRlbnQgcnVsZScpOwoKICAgICAgICByZXR1cm4gbmV3IENvbnRlbnRSdWxlKCRhcmd1bWVudHMsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgYEBkZWJ1Z2AgcnVsZS4KICAgICAqCiAgICAgKiAkc3RhcnQgc2hvdWxkIHBvaW50IGJlZm9yZSB0aGUgYEBgLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRlYnVnUnVsZShpbnQgJHN0YXJ0KTogRGVidWdSdWxlCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmV4cHJlc3Npb24oKTsKICAgICAgICAkdGhpcy0+ZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKCdAZGVidWcgcnVsZScpOwoKICAgICAgICByZXR1cm4gbmV3IERlYnVnUnVsZSgkdmFsdWUsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgYEBlYWNoYCBydWxlLgogICAgICoKICAgICAqICRzdGFydCBzaG91bGQgcG9pbnQgYmVmb3JlIHRoZSBgQGAuICRjaGlsZCBpcyBjYWxsZWQgdG8gY29uc3VtZSBhbnkKICAgICAqIGNoaWxkcmVuIHRoYXQgYXJlIHNwZWNpZmljYWxseSBhbGxvd2VkIGluIHRoZSBjYWxsZXIncyBjb250ZXh0LgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiBTdGF0ZW1lbnQgJGNoaWxkCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNoaWxkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZWFjaFJ1bGUoaW50ICRzdGFydCwgY2FsbGFibGUgJGNoaWxkKTogRWFjaFJ1bGUKICAgIHsKICAgICAgICAkd2FzSW5Db250cm9sRGlyZWN0aXZlID0gJHRoaXMtPmluQ29udHJvbERpcmVjdGl2ZTsKICAgICAgICAkdGhpcy0+aW5Db250cm9sRGlyZWN0aXZlID0gdHJ1ZTsKCiAgICAgICAgJHZhcmlhYmxlcyA9IFskdGhpcy0+dmFyaWFibGVOYW1lKCldOwogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgIHdoaWxlICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJywnKSkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAkdmFyaWFibGVzW10gPSAkdGhpcy0+dmFyaWFibGVOYW1lKCk7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZXhwZWN0SWRlbnRpZmllcignaW4nKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkbGlzdCA9ICR0aGlzLT5leHByZXNzaW9uKCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aENoaWxkcmVuKCRjaGlsZCwgJHN0YXJ0LCBmdW5jdGlvbiAoYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbikgdXNlICgkdmFyaWFibGVzLCAkd2FzSW5Db250cm9sRGlyZWN0aXZlLCAkbGlzdCkgewogICAgICAgICAgICAkdGhpcy0+aW5Db250cm9sRGlyZWN0aXZlID0gJHdhc0luQ29udHJvbERpcmVjdGl2ZTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgRWFjaFJ1bGUoJHZhcmlhYmxlcywgJGxpc3QsICRjaGlsZHJlbiwgJHNwYW4pOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgQGVycm9yYCBydWxlLgogICAgICoKICAgICAqICRzdGFydCBzaG91bGQgcG9pbnQgYmVmb3JlIHRoZSBgQGAuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXJyb3JSdWxlKGludCAkc3RhcnQpOiBFcnJvclJ1bGUKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+ZXhwcmVzc2lvbigpOwogICAgICAgICR0aGlzLT5leHBlY3RTdGF0ZW1lbnRTZXBhcmF0b3IoJ0BlcnJvciBydWxlJyk7CgogICAgICAgIHJldHVybiBuZXcgRXJyb3JSdWxlKCR2YWx1ZSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgQGV4dGVuZGAgcnVsZS4KICAgICAqCiAgICAgKiAkc3RhcnQgc2hvdWxkIHBvaW50IGJlZm9yZSB0aGUgYEBgLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4dGVuZFJ1bGUoaW50ICRzdGFydCk6IEV4dGVuZFJ1bGUKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5pblN0eWxlUnVsZSAmJiAhJHRoaXMtPmluTWl4aW4gJiYgISR0aGlzLT5pbkNvbnRlbnRCbG9jaykgewogICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJ0BleHRlbmQgbWF5IG9ubHkgYmUgdXNlZCB3aXRoaW4gc3R5bGUgcnVsZXMuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmFsbW9zdEFueVZhbHVlKCk7CiAgICAgICAgJG9wdGlvbmFsID0gJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCchJyk7CgogICAgICAgIGlmICgkb3B0aW9uYWwpIHsKICAgICAgICAgICAgJHRoaXMtPmV4cGVjdElkZW50aWZpZXIoJ29wdGlvbmFsJyk7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKCdAZXh0ZW5kIHJ1bGUnKTsKCiAgICAgICAgcmV0dXJuIG5ldyBFeHRlbmRSdWxlKCR2YWx1ZSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCksICRvcHRpb25hbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgogICAgICoKICAgICAqICRzdGFydCBzaG91bGQgcG9pbnQgYmVmb3JlIHRoZSBgQGAuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZnVuY3Rpb25SdWxlKGludCAkc3RhcnQpOiBGdW5jdGlvblJ1bGUKICAgIHsKICAgICAgICAkcHJlY2VkaW5nQ29tbWVudCA9ICR0aGlzLT5sYXN0U2lsZW50Q29tbWVudDsKICAgICAgICAkdGhpcy0+bGFzdFNpbGVudENvbW1lbnQgPSBudWxsOwoKICAgICAgICAkYmVmb3JlTmFtZSA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRuYW1lID0gJHRoaXMtPmlkZW50aWZpZXIoKTsKCiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkbmFtZSwgJy0tJykpIHsKICAgICAgICAgICAgTG9nZ2VyVXRpbDo6d2FybkZvckRlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJHRoaXMtPmxvZ2dlciwKICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uOjpjc3NGdW5jdGlvbk1peGluLAogICAgICAgICAgICAgICAgIlNhc3MgQGZ1bmN0aW9uIG5hbWVzIGJlZ2lubmluZyB3aXRoIC0tIGFyZSBkZXByZWNhdGVkIGZvciBmb3J3YXJkLWNvbXBhdGliaWxpdHkgd2l0aCBwbGFpbiBDU1MgbWl4aW5zLlxuXG5Gb3IgZGV0YWlscywgc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL2Nzcy1mdW5jdGlvbi1taXhpbiIsCiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJGJlZm9yZU5hbWUpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICRhcmd1bWVudHMgPSAkdGhpcy0+YXJndW1lbnREZWNsYXJhdGlvbigpOwoKICAgICAgICBpZiAoJHRoaXMtPmluTWl4aW4gfHwgJHRoaXMtPmluQ29udGVudEJsb2NrKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcignTWl4aW5zIG1heSBub3QgY29udGFpbiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5pbkNvbnRyb2xEaXJlY3RpdmUpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdGdW5jdGlvbnMgbWF5IG5vdCBiZSBkZWNsYXJlZCBpbiBjb250cm9sIGRpcmVjdGl2ZXMuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoIChVdGlsOjp1bnZlbmRvcigkbmFtZSkpIHsKICAgICAgICAgICAgY2FzZSAnY2FsYyc6CiAgICAgICAgICAgIGNhc2UgJ2VsZW1lbnQnOgogICAgICAgICAgICBjYXNlICdleHByZXNzaW9uJzoKICAgICAgICAgICAgY2FzZSAndXJsJzoKICAgICAgICAgICAgY2FzZSAnYW5kJzoKICAgICAgICAgICAgY2FzZSAnb3InOgogICAgICAgICAgICBjYXNlICdub3QnOgogICAgICAgICAgICBjYXNlICdjbGFtcCc6CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJ0ludmFsaWQgZnVuY3Rpb24gbmFtZS4nLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhDaGlsZHJlbigKICAgICAgICAgICAgJHRoaXMtPmZ1bmN0aW9uQ2hpbGQoLi4uKSwKICAgICAgICAgICAgJHN0YXJ0LAogICAgICAgICAgICBmbihhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuKSA9PiBuZXcgRnVuY3Rpb25SdWxlKCRuYW1lLCAkYXJndW1lbnRzLCAkc3BhbiwgJGNoaWxkcmVuLCAkcHJlY2VkaW5nQ29tbWVudCkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgQGZvcmAgcnVsZS4KICAgICAqCiAgICAgKiAkc3RhcnQgc2hvdWxkIHBvaW50IGJlZm9yZSB0aGUgYEBgLiAkY2hpbGQgaXMgY2FsbGVkIHRvIGNvbnN1bWUgYW55CiAgICAgKiBjaGlsZHJlbiB0aGF0IGFyZSBzcGVjaWZpY2FsbHkgYWxsb3dlZCBpbiB0aGUgY2FsbGVyJ3MgY29udGV4dC4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogU3RhdGVtZW50ICRjaGlsZAogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjaGlsZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZvclJ1bGUoaW50ICRzdGFydCwgY2FsbGFibGUgJGNoaWxkKTogRm9yUnVsZQogICAgewogICAgICAgICR3YXNJbkNvbnRyb2xEaXJlY3RpdmUgPSAkdGhpcy0+aW5Db250cm9sRGlyZWN0aXZlOwogICAgICAgICR0aGlzLT5pbkNvbnRyb2xEaXJlY3RpdmUgPSB0cnVlOwoKICAgICAgICAkdmFyaWFibGUgPSAkdGhpcy0+dmFyaWFibGVOYW1lKCk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgJHRoaXMtPmV4cGVjdElkZW50aWZpZXIoJ2Zyb20nKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkZXhjbHVzaXZlID0gbnVsbDsKICAgICAgICAkZnJvbSA9ICR0aGlzLT5leHByZXNzaW9uKGZ1bmN0aW9uICgpIHVzZSAoJiRleGNsdXNpdmUpIHsKICAgICAgICAgICAgaWYgKCEkdGhpcy0+bG9va2luZ0F0SWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2NhbklkZW50aWZpZXIoJ3RvJykpIHsKICAgICAgICAgICAgICAgICRleGNsdXNpdmUgPSB0cnVlOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCd0aHJvdWdoJykpIHsKICAgICAgICAgICAgICAgICRleGNsdXNpdmUgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICBpZiAoJGV4Y2x1c2l2ZSA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkICJ0byIgb3IgInRocm91Z2giLicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAkdG8gPSAkdGhpcy0+ZXhwcmVzc2lvbigpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhDaGlsZHJlbigkY2hpbGQsICRzdGFydCwgZnVuY3Rpb24gKGFycmF5ICRjaGlsZHJlbiwgRmlsZVNwYW4gJHNwYW4pIHVzZSAoJHZhcmlhYmxlLCAkZnJvbSwgJHRvLCAkZXhjbHVzaXZlLCAkd2FzSW5Db250cm9sRGlyZWN0aXZlKSB7CiAgICAgICAgICAgICR0aGlzLT5pbkNvbnRyb2xEaXJlY3RpdmUgPSAkd2FzSW5Db250cm9sRGlyZWN0aXZlOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JSdWxlKCR2YXJpYWJsZSwgJGZyb20sICR0bywgJGNoaWxkcmVuLCAkc3BhbiwgJGV4Y2x1c2l2ZSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGBAaWZgIHJ1bGUuCiAgICAgKgogICAgICogJHN0YXJ0IHNob3VsZCBwb2ludCBiZWZvcmUgdGhlIGBAYC4gJGNoaWxkIGlzIGNhbGxlZCB0byBjb25zdW1lIGFueQogICAgICogY2hpbGRyZW4gdGhhdCBhcmUgc3BlY2lmaWNhbGx5IGFsbG93ZWQgaW4gdGhlIGNhbGxlcidzIGNvbnRleHQuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFN0YXRlbWVudCAkY2hpbGQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2hpbGQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpZlJ1bGUoaW50ICRzdGFydCwgY2FsbGFibGUgJGNoaWxkKTogSWZSdWxlCiAgICB7CiAgICAgICAgJGlmSW5kZW50YXRpb24gPSAkdGhpcy0+Z2V0Q3VycmVudEluZGVudGF0aW9uKCk7CiAgICAgICAgJHdhc0luQ29udHJvbERpcmVjdGl2ZSA9ICR0aGlzLT5pbkNvbnRyb2xEaXJlY3RpdmU7CiAgICAgICAgJHRoaXMtPmluQ29udHJvbERpcmVjdGl2ZSA9IHRydWU7CgogICAgICAgICRjb25kaXRpb24gPSAkdGhpcy0+ZXhwcmVzc2lvbigpOwogICAgICAgICRjaGlsZHJlbiA9ICR0aGlzLT5jaGlsZHJlbigkY2hpbGQpOwogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlV2l0aG91dENvbW1lbnRzKCk7CgogICAgICAgICRjbGF1c2VzID0gW25ldyBJZkNsYXVzZSgkY29uZGl0aW9uLCAkY2hpbGRyZW4pXTsKICAgICAgICAkbGFzdENsYXVzZSA9IG51bGw7CgogICAgICAgIHdoaWxlICgkdGhpcy0+c2NhbkVsc2UoJGlmSW5kZW50YXRpb24pKSB7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdpZicpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgJGNsYXVzZXNbXSA9IG5ldyBJZkNsYXVzZSgkdGhpcy0+ZXhwcmVzc2lvbigpLCAkdGhpcy0+Y2hpbGRyZW4oJGNoaWxkKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbGFzdENsYXVzZSA9IG5ldyBFbHNlQ2xhdXNlKCR0aGlzLT5jaGlsZHJlbigkY2hpbGQpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+aW5Db250cm9sRGlyZWN0aXZlID0gJHdhc0luQ29udHJvbERpcmVjdGl2ZTsKICAgICAgICAkc3BhbiA9ICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpOwogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlV2l0aG91dENvbW1lbnRzKCk7CgogICAgICAgIHJldHVybiBuZXcgSWZSdWxlKCRjbGF1c2VzLCAkc3BhbiwgJGxhc3RDbGF1c2UpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gYEBpbXBvcnRgIHJ1bGUuCiAgICAgKgogICAgICogJHN0YXJ0IHNob3VsZCBwb2ludCBiZWZvcmUgdGhlIGBAYC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbXBvcnRSdWxlKGludCAkc3RhcnQpOiBJbXBvcnRSdWxlCiAgICB7CiAgICAgICAgJGltcG9ydHMgPSBbXTsKCiAgICAgICAgZG8gewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAkYXJndW1lbnQgPSAkdGhpcy0+aW1wb3J0QXJndW1lbnQoKTsKCiAgICAgICAgICAgIGlmICgoJHRoaXMtPmluQ29udHJvbERpcmVjdGl2ZSB8fCAkdGhpcy0+aW5NaXhpbikgJiYgJGFyZ3VtZW50IGluc3RhbmNlb2YgRHluYW1pY0ltcG9ydCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmRpc2FsbG93ZWRBdFJ1bGUoJHN0YXJ0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGltcG9ydHNbXSA9ICRhcmd1bWVudDsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICB9IHdoaWxlICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJywnKSk7CgogICAgICAgICR0aGlzLT5leHBlY3RTdGF0ZW1lbnRTZXBhcmF0b3IoJ0BpbXBvcnQgcnVsZScpOwoKICAgICAgICByZXR1cm4gbmV3IEltcG9ydFJ1bGUoJGltcG9ydHMsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGFyZ3VtZW50IHRvIGFuIGBAaW1wb3J0YCBydWxlLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW1wb3J0QXJndW1lbnQoKTogSW1wb3J0CiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgaWYgKCRuZXh0ID09PSAndScgfHwgJG5leHQgPT09ICdVJykgewogICAgICAgICAgICAkdXJsID0gJHRoaXMtPmR5bmFtaWNVcmwoKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJG1vZGlmaWVycyA9ICR0aGlzLT50cnlJbXBvcnRNb2RpZmllcnMoKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdGljSW1wb3J0KG5ldyBJbnRlcnBvbGF0aW9uKFskdXJsXSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSwgJG1vZGlmaWVycyk7CiAgICAgICAgfQoKICAgICAgICAkdXJsID0gJHRoaXMtPnN0cmluZygpOwogICAgICAgICR1cmxTcGFuID0gJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAkbW9kaWZpZXJzID0gJHRoaXMtPnRyeUltcG9ydE1vZGlmaWVycygpOwoKICAgICAgICBpZiAoJHRoaXMtPmlzUGxhaW5JbXBvcnRVcmwoJHVybCkgfHwgJG1vZGlmaWVycyAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbmV3IFN0YXRpY0ltcG9ydChuZXcgSW50ZXJwb2xhdGlvbihbJHVybFNwYW4tPmdldFRleHQoKV0sICR1cmxTcGFuKSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCksICRtb2RpZmllcnMpOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljSW1wb3J0KCR0aGlzLT5wYXJzZUltcG9ydFVybCgkdXJsKSwgJHVybFNwYW4pOwogICAgICAgIH0gY2F0Y2ggKFN5bnRheEVycm9yICRlKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcignSW52YWxpZCBVUkw6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpLCAkdXJsU3BhbiwgJGUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlcyAkdXJsIGFzIGFuIGltcG9ydCBVUkwuCiAgICAgKgogICAgICogQHRocm93cyBTeW50YXhFcnJvcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFyc2VJbXBvcnRVcmwoc3RyaW5nICR1cmwpOiBzdHJpbmcKICAgIHsKICAgICAgICAvLyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IgaW1wbGVtZW50YXRpb25zIHRoYXQgYWxsb3cgYWJzb2x1dGUgV2luZG93cwogICAgICAgIC8vIHBhdGhzIGluIGltcG9ydHMuCiAgICAgICAgaWYgKFBhdGg6OmlzV2luZG93c0Fic29sdXRlKCR1cmwpICYmICFzZWxmOjppc1Jvb3RSZWxhdGl2ZVVybCgkdXJsKSkgewogICAgICAgICAgICByZXR1cm4gKHN0cmluZykgVXJpOjpmcm9tV2luZG93c1BhdGgoJHVybCk7CiAgICAgICAgfQoKICAgICAgICBVcmk6Om5ldygkdXJsKTsKICAgICAgICByZXR1cm4gJHVybDsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpc1Jvb3RSZWxhdGl2ZVVybChzdHJpbmcgJHBhdGgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRwYXRoICE9PSAnJyAmJiAkcGF0aFswXSA9PT0gJy8nOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICR1cmwgaW5kaWNhdGVzIHRoYXQgYW4gYEBpbXBvcnRgIGlzIGEgcGxhaW4gQ1NTIGltcG9ydC4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzUGxhaW5JbXBvcnRVcmwoc3RyaW5nICR1cmwpOiBib29sCiAgICB7CiAgICAgICAgaWYgKFxzdHJsZW4oJHVybCkgPCA1KSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChzdHJfZW5kc193aXRoKCR1cmwsICcuY3NzJykpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVybFswXSA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiAkdXJsWzFdID09PSAnLyc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVybFswXSAhPT0gJ2gnKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdHJfc3RhcnRzX3dpdGgoJHVybCwgJ2h0dHA6Ly8nKSB8fCBzdHJfc3RhcnRzX3dpdGgoJHVybCwgJ2h0dHBzOi8vJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGBudWxsYCBpZiB0aGVyZSBhcmUgbm8gbW9kaWZpZXJzLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdHJ5SW1wb3J0TW9kaWZpZXJzKCk6ID9JbnRlcnBvbGF0aW9uCiAgICB7CiAgICAgICAgLy8gRXhpdCBiZWZvcmUgYWxsb2NhdGluZyBhbnl0aGluZyBpZiB3ZSdyZSBub3QgbG9va2luZyBhdCBhbnkgbW9kaWZpZXJzLCBhcwogICAgICAgIC8vIGlzIHRoZSBtb3N0IGNvbW1vbiBjYXNlLgogICAgICAgIGlmICghJHRoaXMtPmxvb2tpbmdBdEludGVycG9sYXRlZElkZW50aWZpZXIoKSAmJiAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSAhPT0gJygnKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJGJ1ZmZlciA9IG5ldyBJbnRlcnBvbGF0aW9uQnVmZmVyKCk7CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+bG9va2luZ0F0SW50ZXJwb2xhdGVkSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICBpZiAoISRidWZmZXItPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcgJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgPSAkdGhpcy0+aW50ZXJwb2xhdGVkSWRlbnRpZmllcigpOwogICAgICAgICAgICAgICAgJGJ1ZmZlci0+YWRkSW50ZXJwb2xhdGlvbigkaWRlbnRpZmllcik7CgogICAgICAgICAgICAgICAgJG5hbWUgPSAkaWRlbnRpZmllci0+Z2V0QXNQbGFpbigpICE9PSBudWxsID8gc3RydG9sb3dlcigkaWRlbnRpZmllci0+Z2V0QXNQbGFpbigpKSA6IG51bGw7CgogICAgICAgICAgICAgICAgaWYgKCRuYW1lICE9PSAnYW5kJyAmJiAkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJygnKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkbmFtZSA9PT0gJ3N1cHBvcnRzJykgewogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAkdGhpcy0+aW1wb3J0U3VwcG9ydHNRdWVyeSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkcXVlcnkgaW5zdGFuY2VvZiBTdXBwb3J0c0RlY2xhcmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnKCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT5hZGQobmV3IFN1cHBvcnRzRXhwcmVzc2lvbigkcXVlcnkpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHF1ZXJ5IGluc3RhbmNlb2YgU3VwcG9ydHNEZWNsYXJhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJyknKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcoJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJHRoaXMtPmludGVycG9sYXRlZERlY2xhcmF0aW9uVmFsdWUodHJ1ZSwgdHJ1ZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnKScpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJywnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnLCAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+YWRkSW50ZXJwb2xhdGlvbigkdGhpcy0+bWVkaWFRdWVyeUxpc3QoKSk7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSA9PT0gJygnKSB7CiAgICAgICAgICAgICAgICBpZiAoISRidWZmZXItPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcgJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkYnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5tZWRpYVF1ZXJ5TGlzdCgpKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYnVmZmVyLT5idWlsZEludGVycG9sYXRpb24oJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgdGhlIGNvbnRlbnRzIG9mIGEgYHN1cHBvcnRzKClgIGZ1bmN0aW9uIGFmdGVyIGFuIGBAaW1wb3J0YCBydWxlCiAgICAgKiAoYnV0IG5vdCB0aGUgZnVuY3Rpb24gbmFtZSBvciBwYXJlbnRoZXNlcykuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaW1wb3J0U3VwcG9ydHNRdWVyeSgpOiBTdXBwb3J0c0NvbmRpdGlvbgogICAgewogICAgICAgIGlmICgkdGhpcy0+c2NhbklkZW50aWZpZXIoJ25vdCcpKSB7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBTdXBwb3J0c05lZ2F0aW9uKCR0aGlzLT5zdXBwb3J0c0NvbmRpdGlvbkluUGFyZW5zKCksICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSA9PT0gJygnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3VwcG9ydHNDb25kaXRpb24oKTsKICAgICAgICB9CgogICAgICAgICRmdW5jdGlvbiA9ICR0aGlzLT50cnlJbXBvcnRTdXBwb3J0c0Z1bmN0aW9uKCk7CgogICAgICAgIGlmICgkZnVuY3Rpb24gIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRmdW5jdGlvbjsKICAgICAgICB9CgogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRuYW1lID0gJHRoaXMtPmV4cHJlc3Npb24oKTsKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignOicpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnN1cHBvcnRzRGVjbGFyYXRpb25WYWx1ZSgkbmFtZSwgJHN0YXJ0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoaW4gYSBgc3VwcG9ydHMoKWAgZnVuY3Rpb24gYWZ0ZXIgYW4KICAgICAqIGBAaW1wb3J0YCBpZiBhdmFpbGFibGUuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJ5SW1wb3J0U3VwcG9ydHNGdW5jdGlvbigpOiA/U3VwcG9ydHNDb25kaXRpb24KICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCk7CiAgICAgICAgYXNzZXJ0KCRuYW1lLT5nZXRBc1BsYWluKCkgIT09ICdub3QnKTsKCiAgICAgICAgaWYgKCEkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJygnKSkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHN0YXJ0KTsKCiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmludGVycG9sYXRlZERlY2xhcmF0aW9uVmFsdWUodHJ1ZSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKCiAgICAgICAgcmV0dXJuIG5ldyBTdXBwb3J0c0Z1bmN0aW9uKCRuYW1lLCAkdmFsdWUsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgYEBpbmNsdWRlYCBydWxlLgogICAgICoKICAgICAqICRzdGFydCBzaG91bGQgcG9pbnQgYmVmb3JlIHRoZSBgQGAuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaW5jbHVkZVJ1bGUoaW50ICRzdGFydCk6IEluY2x1ZGVSdWxlCiAgICB7CiAgICAgICAgJG5hbWVzcGFjZSA9IG51bGw7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+aWRlbnRpZmllcigpOwoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcuJykpIHsKICAgICAgICAgICAgJG5hbWVzcGFjZSA9ICRuYW1lOwogICAgICAgICAgICAkbmFtZSA9ICR0aGlzLT5wdWJsaWNJZGVudGlmaWVyKCk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkYXJndW1lbnRzID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcoJyA/ICR0aGlzLT5hcmd1bWVudEludm9jYXRpb24odHJ1ZSkgOiBBcmd1bWVudEludm9jYXRpb246OmNyZWF0ZUVtcHR5KCR0aGlzLT5zY2FubmVyLT5nZXRFbXB0eVNwYW4oKSk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgJGNvbnRlbnRBcmd1bWVudHMgPSBudWxsOwogICAgICAgIGlmICgkdGhpcy0+c2NhbklkZW50aWZpZXIoJ3VzaW5nJykpIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJGNvbnRlbnRBcmd1bWVudHMgPSAkdGhpcy0+YXJndW1lbnREZWNsYXJhdGlvbigpOwogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgIH0KCiAgICAgICAgJGNvbnRlbnQgPSBudWxsOwogICAgICAgIGlmICgkY29udGVudEFyZ3VtZW50cyAhPT0gbnVsbCB8fCAkdGhpcy0+bG9va2luZ0F0Q2hpbGRyZW4oKSkgewogICAgICAgICAgICAkY29udGVudEFyZ3VtZW50cyA9ICRjb250ZW50QXJndW1lbnRzID8/IEFyZ3VtZW50RGVjbGFyYXRpb246OmNyZWF0ZUVtcHR5KCR0aGlzLT5zY2FubmVyLT5nZXRFbXB0eVNwYW4oKSk7CiAgICAgICAgICAgICR3YXNJbkNvbnRlbnRCbG9jayA9ICR0aGlzLT5pbkNvbnRlbnRCbG9jazsKICAgICAgICAgICAgJHRoaXMtPmluQ29udGVudEJsb2NrID0gdHJ1ZTsKCiAgICAgICAgICAgICRjb250ZW50ID0gJHRoaXMtPndpdGhDaGlsZHJlbigkdGhpcy0+c3RhdGVtZW50KC4uLiksICRzdGFydCwgZm4oYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbikgPT4gbmV3IENvbnRlbnRCbG9jaygkY29udGVudEFyZ3VtZW50cywgJGNoaWxkcmVuLCAkc3BhbikpOwoKICAgICAgICAgICAgJHRoaXMtPmluQ29udGVudEJsb2NrID0gJHdhc0luQ29udGVudEJsb2NrOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5leHBlY3RTdGF0ZW1lbnRTZXBhcmF0b3IoKTsKICAgICAgICB9CgogICAgICAgICRzcGFuID0gJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCwgJHN0YXJ0KS0+ZXhwYW5kKCgkY29udGVudCA/PyAkYXJndW1lbnRzKS0+Z2V0U3BhbigpKTsKCiAgICAgICAgLy8gVE9ETyByZW1vdmUgdGhpcyB3aGVuIGltcGxlbWVudGluZyBtb2R1bGVzCiAgICAgICAgaWYgKCRuYW1lc3BhY2UgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdTYXNzIG1vZHVsZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBJbmNsdWRlUnVsZSgkbmFtZSwgJGFyZ3VtZW50cywgJHNwYW4sICRuYW1lc3BhY2UsICRjb250ZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgYEBtZWRpYWAgcnVsZS4KICAgICAqCiAgICAgKiAkc3RhcnQgc2hvdWxkIHBvaW50IGJlZm9yZSB0aGUgYEBgLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWVkaWFSdWxlKGludCAkc3RhcnQpOiBNZWRpYVJ1bGUKICAgIHsKICAgICAgICAkcXVlcnkgPSAkdGhpcy0+bWVkaWFRdWVyeUxpc3QoKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT53aXRoQ2hpbGRyZW4oJHRoaXMtPnN0YXRlbWVudCguLi4pLCAkc3RhcnQsIGZuKGFycmF5ICRjaGlsZHJlbiwgRmlsZVNwYW4gJHNwYW4pID0+IG5ldyBNZWRpYVJ1bGUoJHF1ZXJ5LCAkY2hpbGRyZW4sICRzcGFuKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIG1peGluIGRlY2xhcmF0aW9uLgogICAgICoKICAgICAqICRzdGFydCBzaG91bGQgcG9pbnQgYmVmb3JlIHRoZSBgQGAuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWl4aW5SdWxlKGludCAkc3RhcnQpOiBNaXhpblJ1bGUKICAgIHsKICAgICAgICAkcHJlY2VkaW5nQ29tbWVudCA9ICR0aGlzLT5sYXN0U2lsZW50Q29tbWVudDsKICAgICAgICAkdGhpcy0+bGFzdFNpbGVudENvbW1lbnQgPSBudWxsOwoKICAgICAgICAkYmVmb3JlTmFtZSA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRuYW1lID0gJHRoaXMtPmlkZW50aWZpZXIoKTsKCiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkbmFtZSwgJy0tJykpIHsKICAgICAgICAgICAgTG9nZ2VyVXRpbDo6d2FybkZvckRlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgJHRoaXMtPmxvZ2dlciwKICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uOjpjc3NGdW5jdGlvbk1peGluLAogICAgICAgICAgICAgICAgIlNhc3MgQG1peGluIG5hbWVzIGJlZ2lubmluZyB3aXRoIC0tIGFyZSBkZXByZWNhdGVkIGZvciBmb3J3YXJkLWNvbXBhdGliaWxpdHkgd2l0aCBwbGFpbiBDU1MgbWl4aW5zLlxuXG5Gb3IgZGV0YWlscywgc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL2Nzcy1mdW5jdGlvbi1taXhpbiIsCiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJGJlZm9yZU5hbWUpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkYXJndW1lbnRzID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcoJyA/ICR0aGlzLT5hcmd1bWVudERlY2xhcmF0aW9uKCkgOiBBcmd1bWVudERlY2xhcmF0aW9uOjpjcmVhdGVFbXB0eSgkdGhpcy0+c2Nhbm5lci0+Z2V0RW1wdHlTcGFuKCkpOwoKICAgICAgICBpZiAoJHRoaXMtPmluTWl4aW4gfHwgJHRoaXMtPmluQ29udGVudEJsb2NrKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcignTWl4aW5zIG1heSBub3QgY29udGFpbiBtaXhpbiBkZWNsYXJhdGlvbnMuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5pbkNvbnRyb2xEaXJlY3RpdmUpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdNaXhpbnMgbWF5IG5vdCBiZSBkZWNsYXJlZCBpbiBjb250cm9sIGRpcmVjdGl2ZXMuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAkdGhpcy0+aW5NaXhpbiA9IHRydWU7CgogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aENoaWxkcmVuKCR0aGlzLT5zdGF0ZW1lbnQoLi4uKSwgJHN0YXJ0LCBmdW5jdGlvbiAoYXJyYXkgJGNoaWxkcmVuLCBGaWxlU3BhbiAkc3BhbikgdXNlICgkbmFtZSwgJGFyZ3VtZW50cywgJHByZWNlZGluZ0NvbW1lbnQpIHsKICAgICAgICAgICAgJHRoaXMtPmluTWl4aW4gPSBmYWxzZTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgTWl4aW5SdWxlKCRuYW1lLCAkYXJndW1lbnRzLCAkc3BhbiwgJGNoaWxkcmVuLCAkcHJlY2VkaW5nQ29tbWVudCk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGBAbW96LWRvY3VtZW50YCBydWxlLgogICAgICoKICAgICAqIEdlY2tvJ3MgYEAtbW96LWRvY3VtZW50YCBkaXZlcmdlcyBmcm9tIFt0aGUgc3BlY2lmaWNhdGlvbl1bXSBhbGxvd3MgdGhlCiAgICAgKiBgdXJsLXByZWZpeGAgYW5kIGBkb21haW5gIGZ1bmN0aW9ucyB0byBvbWl0IHF1b3RhdGlvbiBtYXJrcywgY29udHJhcnkgdG8KICAgICAqIHRoZSBzdGFuZGFyZC4KICAgICAqCiAgICAgKiBbdGhlIHNwZWNpZmljYXRpb25dOiBodHRwczovL3d3dy53My5vcmcvVFIvY3NzMy1jb25kaXRpb25hbC8KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1vekRvY3VtZW50UnVsZShpbnQgJHN0YXJ0LCBJbnRlcnBvbGF0aW9uICRuYW1lKTogQXRSdWxlCiAgICB7CiAgICAgICAgJHZhbHVlU3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkYnVmZmVyID0gbmV3IEludGVycG9sYXRpb25CdWZmZXIoKTsKICAgICAgICAkbmVlZHNEZXByZWNhdGlvbldhcm5pbmcgPSBmYWxzZTsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpID09PSAnIycpIHsKICAgICAgICAgICAgICAgICRidWZmZXItPmFkZCgkdGhpcy0+c2luZ2xlSW50ZXJwb2xhdGlvbigpKTsKICAgICAgICAgICAgICAgICRuZWVkc0RlcHJlY2F0aW9uV2FybmluZyA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllclN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciA9ICR0aGlzLT5pZGVudGlmaWVyKCk7CgogICAgICAgICAgICAgICAgc3dpdGNoICgkaWRlbnRpZmllcikgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VybCc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndXJsLXByZWZpeCc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZG9tYWluJzoKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRzID0gJHRoaXMtPnRyeVVybENvbnRlbnRzKCRpZGVudGlmaWVyU3RhcnQsICRpZGVudGlmaWVyKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29udGVudHMgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJGNvbnRlbnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcoJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50ID0gJHRoaXMtPmludGVycG9sYXRlZFN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnKCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+YWRkSW50ZXJwb2xhdGlvbigkYXJndW1lbnQtPmFzSW50ZXJwb2xhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgdXJsLXByZWZpeCB3aXRoIG5vIGFyZ3VtZW50LCBvciB3aXRoIGFuIGVtcHR5IHN0cmluZyBhcyBhbgogICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmd1bWVudCwgaXMgbm90ICh5ZXQpIGRlcHJlY2F0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICR0cmFpbGluZyA9ICRidWZmZXItPmdldFRyYWlsaW5nU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RyX2VuZHNfd2l0aCgkdHJhaWxpbmcsICd1cmwtcHJlZml4KCknKSAmJiAhc3RyX2VuZHNfd2l0aCgkdHJhaWxpbmcsICJ1cmwtcHJlZml4KCcnKSIpICYmICFzdHJfZW5kc193aXRoKCR0cmFpbGluZywgJ3VybC1wcmVmaXgoIiIpJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZWVkc0RlcHJlY2F0aW9uV2FybmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlZ2V4cCc6CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCdyZWdleHAoJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcoJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJHRoaXMtPmludGVycG9sYXRlZFN0cmluZygpLT5hc0ludGVycG9sYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZWVkc0RlcHJlY2F0aW9uV2FybmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJ0ludmFsaWQgZnVuY3Rpb24gbmFtZS4nLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJGlkZW50aWZpZXJTdGFydCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgaWYgKCEkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJywnKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcsJyk7CiAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5yYXdUZXh0KCR0aGlzLT53aGl0ZXNwYWNlKC4uLikpKTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICRidWZmZXItPmJ1aWxkSW50ZXJwb2xhdGlvbigkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHZhbHVlU3RhcnQpKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT53aXRoQ2hpbGRyZW4oJHRoaXMtPnN0YXRlbWVudCguLi4pLCAkc3RhcnQsIGZ1bmN0aW9uIChhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuKSB1c2UgKCRuYW1lLCAkdmFsdWUsICRuZWVkc0RlcHJlY2F0aW9uV2FybmluZykgewogICAgICAgICAgICBpZiAoJG5lZWRzRGVwcmVjYXRpb25XYXJuaW5nKSB7CiAgICAgICAgICAgICAgICBMb2dnZXJVdGlsOjp3YXJuRm9yRGVwcmVjYXRpb24oJHRoaXMtPmxvZ2dlciwgRGVwcmVjYXRpb246Om1vekRvY3VtZW50LCAiQC1tb3otZG9jdW1lbnQgaXMgZGVwcmVjYXRlZCBhbmQgc3VwcG9ydCB3aWxsIGJlIHJlbW92ZWQgaW4gRGFydCBTYXNzIDIuMC4wLlxuXG5Gb3IgZGV0YWlscywgc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL21vei1kb2N1bWVudC4iLCAkc3Bhbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBuZXcgQXRSdWxlKCRuYW1lLCAkc3BhbiwgJHZhbHVlLCAkY2hpbGRyZW4pOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgQHJldHVybmAgcnVsZS4KICAgICAqCiAgICAgKiAkc3RhcnQgc2hvdWxkIHBvaW50IGJlZm9yZSB0aGUgYEBgLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJldHVyblJ1bGUoaW50ICRzdGFydCk6IFJldHVyblJ1bGUKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+ZXhwcmVzc2lvbigpOwogICAgICAgICR0aGlzLT5leHBlY3RTdGF0ZW1lbnRTZXBhcmF0b3IoJ0ByZXR1cm4gcnVsZScpOwoKICAgICAgICByZXR1cm4gbmV3IFJldHVyblJ1bGUoJHZhbHVlLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGBAc3VwcG9ydHNgIHJ1bGUuCiAgICAgKgogICAgICogJHN0YXJ0IHNob3VsZCBwb2ludCBiZWZvcmUgdGhlIGBAYC4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHN1cHBvcnRzUnVsZShpbnQgJHN0YXJ0KTogU3VwcG9ydHNSdWxlCiAgICB7CiAgICAgICAgJGNvbmRpdGlvbiA9ICR0aGlzLT5zdXBwb3J0c0NvbmRpdGlvbigpOwogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aENoaWxkcmVuKCR0aGlzLT5zdGF0ZW1lbnQoLi4uKSwgJHN0YXJ0LCBmbihhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuKSA9PiBuZXcgU3VwcG9ydHNSdWxlKCRjb25kaXRpb24sICRjaGlsZHJlbiwgJHNwYW4pKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgYEB3YXJuYCBydWxlLgogICAgICoKICAgICAqICRzdGFydCBzaG91bGQgcG9pbnQgYmVmb3JlIHRoZSBgQGAuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd2FyblJ1bGUoaW50ICRzdGFydCk6IFdhcm5SdWxlCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmV4cHJlc3Npb24oKTsKICAgICAgICAkdGhpcy0+ZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKCdAd2FybiBydWxlJyk7CgogICAgICAgIHJldHVybiBuZXcgV2FyblJ1bGUoJHZhbHVlLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGBAd2hpbGVgIHJ1bGUuCiAgICAgKgogICAgICogJHN0YXJ0IHNob3VsZCBwb2ludCBiZWZvcmUgdGhlIGBAYC4gJGNoaWxkIGlzIGNhbGxlZCB0byBjb25zdW1lIGFueQogICAgICogY2hpbGRyZW4gdGhhdCBhcmUgc3BlY2lmaWNhbGx5IGFsbG93ZWQgaW4gdGhlIGNhbGxlcidzIGNvbnRleHQuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFN0YXRlbWVudCAkY2hpbGQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2hpbGQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3aGlsZVJ1bGUoaW50ICRzdGFydCwgY2FsbGFibGUgJGNoaWxkKTogV2hpbGVSdWxlCiAgICB7CiAgICAgICAgJHdhc0luQ29udHJvbERpcmVjdGl2ZSA9ICR0aGlzLT5pbkNvbnRyb2xEaXJlY3RpdmU7CiAgICAgICAgJHRoaXMtPmluQ29udHJvbERpcmVjdGl2ZSA9IHRydWU7CgogICAgICAgICRjb25kaXRpb24gPSAkdGhpcy0+ZXhwcmVzc2lvbigpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhDaGlsZHJlbigkY2hpbGQsICRzdGFydCwgZnVuY3Rpb24gKGFycmF5ICRjaGlsZHJlbiwgRmlsZVNwYW4gJHNwYW4pIHVzZSAoJGNvbmRpdGlvbiwgJHdhc0luQ29udHJvbERpcmVjdGl2ZSkgewogICAgICAgICAgICAkdGhpcy0+aW5Db250cm9sRGlyZWN0aXZlID0gJHdhc0luQ29udHJvbERpcmVjdGl2ZTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgV2hpbGVSdWxlKCRjb25kaXRpb24sICRjaGlsZHJlbiwgJHNwYW4pOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gYXQtcnVsZSB0aGF0J3Mgbm90IGV4cGxpY2l0bHkgc3VwcG9ydGVkIGJ5IFNhc3MuCiAgICAgKgogICAgICogJHN0YXJ0IHNob3VsZCBwb2ludCBiZWZvcmUgdGhlIGBAYC4gJG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGF0LXJ1bGUuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB1bmtub3duQXRSdWxlKGludCAkc3RhcnQsIEludGVycG9sYXRpb24gJG5hbWUpOiBBdFJ1bGUKICAgIHsKICAgICAgICAkd2FzSW5Vbmtub3duQXRSdWxlID0gJHRoaXMtPmluVW5rbm93bkF0UnVsZTsKICAgICAgICAkdGhpcy0+aW5Vbmtub3duQXRSdWxlID0gdHJ1ZTsKCiAgICAgICAgJHZhbHVlID0gbnVsbDsKICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgIGlmICgkbmV4dCAhPT0gJyEnICYmICEkdGhpcy0+YXRFbmRPZlN0YXRlbWVudCgpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5pbnRlcnBvbGF0ZWREZWNsYXJhdGlvblZhbHVlKGFsbG93T3BlbkJyYWNlOiBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmxvb2tpbmdBdENoaWxkcmVuKCkpIHsKICAgICAgICAgICAgJHJ1bGUgPSAkdGhpcy0+d2l0aENoaWxkcmVuKCR0aGlzLT5zdGF0ZW1lbnQoLi4uKSwgJHN0YXJ0LCBmbihhcnJheSAkY2hpbGRyZW4sIEZpbGVTcGFuICRzcGFuKSA9PiBuZXcgQXRSdWxlKCRuYW1lLCAkc3BhbiwgJHZhbHVlLCAkY2hpbGRyZW4pKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+ZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKCk7CiAgICAgICAgICAgICRydWxlID0gbmV3IEF0UnVsZSgkbmFtZSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCksICR2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+aW5Vbmtub3duQXRSdWxlID0gJHdhc0luVW5rbm93bkF0UnVsZTsKCiAgICAgICAgcmV0dXJuICRydWxlOwogICAgfQoKICAgIC8qKgogICAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpbmRpY2F0aW5nIHRoYXQgdGhlIGF0LXJ1bGUgc3RhcnRpbmcgYXQgJHN0YXJ0IGlzCiAgICAgKiBub3QgYWxsb3dlZCBpbiB0aGUgY3VycmVudCBjb250ZXh0LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRpc2FsbG93ZWRBdFJ1bGUoaW50ICRzdGFydCk6IG5ldmVyCiAgICB7CiAgICAgICAgJHRoaXMtPmludGVycG9sYXRlZERlY2xhcmF0aW9uVmFsdWUoYWxsb3dFbXB0eTogdHJ1ZSwgYWxsb3dPcGVuQnJhY2U6IGZhbHNlKTsKICAgICAgICAkdGhpcy0+ZXJyb3IoJ1RoaXMgYXQtcnVsZSBpcyBub3QgYWxsb3dlZCBoZXJlLicsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGFyZ3VtZW50IGRlY2xhcmF0aW9uLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFyZ3VtZW50RGVjbGFyYXRpb24oKTogQXJndW1lbnREZWNsYXJhdGlvbgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcoJyk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgJGFyZ3VtZW50cyA9IFtdOwogICAgICAgICRuYW1lZCA9IFtdOwogICAgICAgICRyZXN0QXJndW1lbnQgPSBudWxsOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICckJykgewogICAgICAgICAgICAkdmFyaWFibGVTdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICAgICAkbmFtZSA9ICR0aGlzLT52YXJpYWJsZU5hbWUoKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICRkZWZhdWx0VmFsdWUgPSBudWxsOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignOicpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICR0aGlzLT5leHByZXNzaW9uVW50aWxDb21tYSgpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcuJykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcuJyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignLicpOwogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICRyZXN0QXJndW1lbnQgPSAkbmFtZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYXJndW1lbnQgPSBuZXcgQXJndW1lbnQoJG5hbWUsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkdmFyaWFibGVTdGFydCksICRkZWZhdWx0VmFsdWUpOwogICAgICAgICAgICAkYXJndW1lbnRzW10gPSAkYXJndW1lbnQ7CgogICAgICAgICAgICBpZiAoaXNzZXQoJG5hbWVkWyRuYW1lXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvcignRHVwbGljYXRlIGFyZ3VtZW50LicsICRhcmd1bWVudC0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbmFtZWRbJG5hbWVdID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmICghJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcsJykpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignKScpOwoKICAgICAgICByZXR1cm4gbmV3IEFyZ3VtZW50RGVjbGFyYXRpb24oJGFyZ3VtZW50cywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCksICRyZXN0QXJndW1lbnQpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gYXJndW1lbnQgaW52b2NhdGlvbi4KICAgICAqCiAgICAgKiBJZiAkbWl4aW4gaXMgYHRydWVgLCB0aGlzIGlzIHBhcnNlZCBhcyBhIG1peGluIGludm9jYXRpb24uIE1peGluCiAgICAgKiBpbnZvY2F0aW9ucyBkb24ndCBhbGxvdyB0aGUgTWljcm9zb2Z0LXN0eWxlIGA9YCBvcGVyYXRvciBhdCB0aGUgdG9wIGxldmVsLAogICAgICogYnV0IGZ1bmN0aW9uIGludm9jYXRpb25zIGRvLgogICAgICoKICAgICAqIElmICRhbGxvd0VtcHR5U2Vjb25kQXJnIGlzIGB0cnVlYCwgdGhpcyBhbGxvd3MgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZQogICAgICogb21pdHRlZCwgaW4gd2hpY2ggY2FzZSBhbiB1bnF1b3RlZCBlbXB0eSBzdHJpbmcgd2lsbCBiZSBwYXNzZWQgaW4gaXRzCiAgICAgKiBwbGFjZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhcmd1bWVudEludm9jYXRpb24oYm9vbCAkbWl4aW4gPSBmYWxzZSwgYm9vbCAkYWxsb3dFbXB0eVNlY29uZEFyZyA9IGZhbHNlKTogQXJndW1lbnRJbnZvY2F0aW9uCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJygnKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAkcG9zaXRpb25hbCA9IFtdOwogICAgICAgICRuYW1lZCA9IFtdOwogICAgICAgICRyZXN0ID0gbnVsbDsKICAgICAgICAka2V5d29yZFJlc3QgPSBudWxsOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPmxvb2tpbmdBdEV4cHJlc3Npb24oKSkgewogICAgICAgICAgICAkZXhwcmVzc2lvbiA9ICR0aGlzLT5leHByZXNzaW9uVW50aWxDb21tYSghJG1peGluKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIGlmICgkZXhwcmVzc2lvbiBpbnN0YW5jZW9mIFZhcmlhYmxlRXhwcmVzc2lvbiAmJiAkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJzonKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG5hbWVkWyRleHByZXNzaW9uLT5nZXROYW1lKCldKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvcignRHVwbGljYXRlIGFyZ3VtZW50LicsICRleHByZXNzaW9uLT5nZXRTcGFuKCkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRuYW1lZFskZXhwcmVzc2lvbi0+Z2V0TmFtZSgpXSA9ICR0aGlzLT5leHByZXNzaW9uVW50aWxDb21tYSghJG1peGluKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignLicpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignLicpOwogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJy4nKTsKCiAgICAgICAgICAgICAgICBpZiAoJHJlc3QgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkcmVzdCA9ICRleHByZXNzaW9uOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAka2V5d29yZFJlc3QgPSAkZXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJG5hbWVkKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJ1Bvc2l0aW9uYWwgYXJndW1lbnRzIG11c3QgY29tZSBiZWZvcmUga2V5d29yZCBhcmd1bWVudHMuJywgJGV4cHJlc3Npb24tPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcG9zaXRpb25hbFtdID0gJGV4cHJlc3Npb247CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignLCcpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgaWYgKCRhbGxvd0VtcHR5U2Vjb25kQXJnICYmIFxjb3VudCgkcG9zaXRpb25hbCkgPT09IDEgJiYgXGNvdW50KCRuYW1lZCkgPT09IDAgJiYgJHJlc3QgPT09IG51bGwgJiYgJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcpJykgewogICAgICAgICAgICAgICAgJHBvc2l0aW9uYWxbXSA9IFN0cmluZ0V4cHJlc3Npb246OnBsYWluKCcnLCAkdGhpcy0+c2Nhbm5lci0+Z2V0RW1wdHlTcGFuKCkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CgogICAgICAgIHJldHVybiBuZXcgQXJndW1lbnRJbnZvY2F0aW9uKCRwb3NpdGlvbmFsLCAkbmFtZWQsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpLCAkcmVzdCwgJGtleXdvcmRSZXN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGV4cHJlc3Npb24uCiAgICAgKgogICAgICogQHBhcmFtIChjYWxsYWJsZSgpOiBib29sKXxudWxsICR1bnRpbAogICAgICogQHBocHN0YW4taW1wdXJlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXhwcmVzc2lvbig/Y2FsbGFibGUgJHVudGlsID0gbnVsbCwgYm9vbCAkc2luZ2xlRXF1YWxzID0gZmFsc2UsIGJvb2wgJGJyYWNrZXRMaXN0ID0gZmFsc2UpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgaWYgKCR1bnRpbCAhPT0gbnVsbCAmJiAkdW50aWwoKSkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGV4cHJlc3Npb24uJyk7CiAgICAgICAgfQoKICAgICAgICAkYmVmb3JlQnJhY2tldCA9IG51bGw7CgogICAgICAgIGlmICgkYnJhY2tldExpc3QpIHsKICAgICAgICAgICAgJGJlZm9yZUJyYWNrZXQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJ1snKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJ10nKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMaXN0RXhwcmVzc2lvbihbXSwgTGlzdFNlcGFyYXRvcjo6VU5ERUNJREVELCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJGJlZm9yZUJyYWNrZXQpLCB0cnVlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHdhc0luRXhwcmVzc2lvbiA9ICR0aGlzLT5pbkV4cHJlc3Npb247CiAgICAgICAgJHdhc0luUGFyZW50aGVzZXMgPSAkdGhpcy0+aW5QYXJlbnRoZXNlczsKICAgICAgICAkdGhpcy0+aW5FeHByZXNzaW9uID0gdHJ1ZTsKCiAgICAgICAgLyoqCiAgICAgICAgICogQHZhciBsaXN0PEV4cHJlc3Npb24+fG51bGwgJGNvbW1hRXhwcmVzc2lvbnMKICAgICAgICAgKi8KICAgICAgICAkY29tbWFFeHByZXNzaW9ucyA9IG51bGw7CiAgICAgICAgLyoqCiAgICAgICAgICogQHZhciBsaXN0PEV4cHJlc3Npb24+fG51bGwgJHNwYWNlRXhwcmVzc2lvbnMKICAgICAgICAgKi8KICAgICAgICAkc3BhY2VFeHByZXNzaW9ucyA9IG51bGw7CiAgICAgICAgLyoqCiAgICAgICAgICogT3BlcmF0b3JzIHdob3NlIHJpZ2h0LWhhbmQgJG9wZXJhbmRzIGFyZSBub3QgZnVsbHkgcGFyc2VkIHlldCwgaW4gb3JkZXIgb2YKICAgICAgICAgKiBhcHBlYXJhbmNlIGluIHRoZSBkb2N1bWVudC4gQmVjYXVzZSBhIGxvdy1wcmVjZWRlbmNlIG9wZXJhdG9yIHdpbGwgY2F1c2UKICAgICAgICAgKiBwYXJzaW5nIHRvIGZpbmlzaCBmb3IgYWxsIHByZWNlZGluZyBoaWdoZXItcHJlY2VkZW5jZSAkb3BlcmF0b3JzLCB0aGlzIGlzCiAgICAgICAgICogbmF0dXJhbGx5IG9yZGVyZWQgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCBwcmVjZWRlbmNlLgogICAgICAgICAqCiAgICAgICAgICogQHZhciBsaXN0PEJpbmFyeU9wZXJhdG9yPnxudWxsICRvcGVyYXRvcnMKICAgICAgICAgKi8KICAgICAgICAkb3BlcmF0b3JzID0gbnVsbDsKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgbGVmdC1oYW5kIHNpZGVzIG9mICRvcGVyYXRvcnMuIGAkb3BlcmFuZHNbbl1gIGlzIHRoZSBsZWZ0LWhhbmQgc2lkZQogICAgICAgICAqIG9mIGAkb3BlcmF0b3JzW25dYC4KICAgICAgICAgKgogICAgICAgICAqIEB2YXIgbGlzdDxFeHByZXNzaW9uPnxudWxsICRvcGVyYW5kcwogICAgICAgICAqLwogICAgICAgICRvcGVyYW5kcyA9IG51bGw7CgogICAgICAgIC8qKgogICAgICAgICAqIFdoZXRoZXIgdGhlIHNpbmdsZSBleHByZXNzaW9uIHBhcnNlZCBzbyBmYXIgbWF5IGJlIGludGVycHJldGVkIGFzCiAgICAgICAgICogc2xhc2gtc2VwYXJhdGVkIG51bWJlcnMuCiAgICAgICAgICovCiAgICAgICAgJGFsbG93U2xhc2ggPSB0cnVlOwoKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgbGVmdG1vc3QgZXhwcmVzc2lvbiB0aGF0J3MgYmVlbiBmdWxseS1wYXJzZWQuIFRoaXMgY2FuIGJlIG51bGwgaW4KICAgICAgICAgKiBzcGVjaWFsIGNhc2VzIHdoZXJlIHRoZSBleHByZXNzaW9uIGJlZ2lucyB3aXRoIGEgc3ViLWV4cHJlc3Npb24gYnV0IGhhcwogICAgICAgICAqIGEgbGF0ZXIgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlIG91dGVyIGV4cHJlc3Npb24gaXNuJ3QgZG9uZSwKICAgICAgICAgKiBhcyBoZXJlOgogICAgICAgICAqCiAgICAgICAgICogICAgIGZvbywgYmFyCiAgICAgICAgICogICAgICAgICBeCiAgICAgICAgICoKICAgICAgICAgKiBAdmFyIEV4cHJlc3Npb258bnVsbCAkc2luZ2xlRXhwcmVzc2lvbgogICAgICAgICAqLwogICAgICAgICRzaW5nbGVFeHByZXNzaW9uID0gJHRoaXMtPnNpbmdsZUV4cHJlc3Npb24oKTsKCiAgICAgICAgLyoqCiAgICAgICAgICogUmVzZXRzIHRoZSBzY2FubmVyIHN0YXRlIHRvIHRoZSBzdGF0ZSBpdCB3YXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKICAgICAgICAgKiBleHByZXNzaW9uLCBleGNlcHQgZm9yIHtAc2VlICRpblBhcmVudGhlc2VzfS4KICAgICAgICAgKi8KICAgICAgICAkcmVzZXRTdGF0ZSA9IGZ1bmN0aW9uICgpIHVzZSAoJiRjb21tYUV4cHJlc3Npb25zLCAmJHNwYWNlRXhwcmVzc2lvbnMsICYkb3BlcmF0b3JzLCAmJG9wZXJhbmRzLCAmJGFsbG93U2xhc2gsICYkc2luZ2xlRXhwcmVzc2lvbiwgJHN0YXJ0KTogdm9pZCB7CiAgICAgICAgICAgICRjb21tYUV4cHJlc3Npb25zID0gbnVsbDsKICAgICAgICAgICAgJHNwYWNlRXhwcmVzc2lvbnMgPSBudWxsOwogICAgICAgICAgICAkb3BlcmF0b3JzID0gbnVsbDsKICAgICAgICAgICAgJG9wZXJhbmRzID0gbnVsbDsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNldFBvc2l0aW9uKCRzdGFydCk7CiAgICAgICAgICAgICRhbGxvd1NsYXNoID0gdHJ1ZTsKICAgICAgICAgICAgJHNpbmdsZUV4cHJlc3Npb24gPSAkdGhpcy0+c2luZ2xlRXhwcmVzc2lvbigpOwogICAgICAgIH07CgogICAgICAgICRyZXNvbHZlT25lT3BlcmF0aW9uID0gZnVuY3Rpb24gKCkgdXNlICgmJG9wZXJhbmRzLCAmJG9wZXJhdG9ycywgJiRzaW5nbGVFeHByZXNzaW9uLCAmJGFsbG93U2xhc2gpOiB2b2lkIHsKICAgICAgICAgICAgYXNzZXJ0KCRvcGVyYW5kcyAhPT0gbnVsbCk7CiAgICAgICAgICAgIGFzc2VydCgkb3BlcmF0b3JzICE9PSBudWxsKTsKICAgICAgICAgICAgJG9wZXJhdG9yID0gYXJyYXlfcG9wKCRvcGVyYXRvcnMpOwogICAgICAgICAgICBhc3NlcnQoJG9wZXJhdG9yICE9PSBudWxsLCAnVGhlIGxpc3Qgb2Ygb3BlcmF0b3JzIG11c3Qgbm90IGJlIGVtcHR5Jyk7CgogICAgICAgICAgICAkbGVmdCA9IGFycmF5X3BvcCgkb3BlcmFuZHMpOwogICAgICAgICAgICBhc3NlcnQoJGxlZnQgIT09IG51bGwsICdUaGUgbGlzdCBvZiBvcGVyYW5kcyBtdXN0IG5vdCBiZSBlbXB0eScpOwoKICAgICAgICAgICAgJHJpZ2h0ID0gJHNpbmdsZUV4cHJlc3Npb247CgogICAgICAgICAgICBpZiAoJHJpZ2h0ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGV4cHJlc3Npb24uJywgJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCkgLSBcc3RybGVuKCRvcGVyYXRvci0+Z2V0T3BlcmF0b3IoKSksIFxzdHJsZW4oJG9wZXJhdG9yLT5nZXRPcGVyYXRvcigpKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkYWxsb3dTbGFzaCAmJiAhJHRoaXMtPmluUGFyZW50aGVzZXMgJiYgJG9wZXJhdG9yID09PSBCaW5hcnlPcGVyYXRvcjo6RElWSURFRF9CWSAmJiBzZWxmOjppc1NsYXNoT3BlcmFuZCgkbGVmdCkgJiYgc2VsZjo6aXNTbGFzaE9wZXJhbmQoJHJpZ2h0KSkgewogICAgICAgICAgICAgICAgJHNpbmdsZUV4cHJlc3Npb24gPSBCaW5hcnlPcGVyYXRpb25FeHByZXNzaW9uOjpzbGFzaCgkbGVmdCwgJHJpZ2h0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzaW5nbGVFeHByZXNzaW9uID0gbmV3IEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oJG9wZXJhdG9yLCAkbGVmdCwgJHJpZ2h0KTsKICAgICAgICAgICAgICAgICRhbGxvd1NsYXNoID0gZmFsc2U7CgogICAgICAgICAgICAgICAgaWYgKCRvcGVyYXRvciA9PT0gQmluYXJ5T3BlcmF0b3I6OlBMVVMgfHwgJG9wZXJhdG9yID09PSBCaW5hcnlPcGVyYXRvcjo6TUlOVVMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5zdWJzdHJpbmcoJHJpZ2h0LT5nZXRTcGFuKCktPmdldFN0YXJ0KCktPmdldE9mZnNldCgpIC0gMSwgJHJpZ2h0LT5nZXRTcGFuKCktPmdldFN0YXJ0KCktPmdldE9mZnNldCgpKSA9PT0gJG9wZXJhdG9yLT5nZXRPcGVyYXRvcigpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCR0aGlzLT5zY2FubmVyLT5nZXRTdHJpbmcoKVskbGVmdC0+Z2V0U3BhbigpLT5nZXRFbmQoKS0+Z2V0T2Zmc2V0KCldKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkb3BlcmF0b3JUZXh0ID0gJG9wZXJhdG9yLT5nZXRPcGVyYXRvcigpOwogICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9IDw8PFdBUk5JTkcKVGhpcyBvcGVyYXRpb24gaXMgcGFyc2VkIGFzOgoKICAgICRsZWZ0ICRvcGVyYXRvclRleHQgJHJpZ2h0CgpidXQgeW91IG1heSBoYXZlIGludGVuZGVkIGl0IHRvIG1lYW46CgogICAgJGxlZnQgKCRvcGVyYXRvclRleHQkcmlnaHQpCgpBZGQgYSBzcGFjZSBhZnRlciAkb3BlcmF0b3JUZXh0IHRvIGNsYXJpZnkgdGhhdCBpdCdzIG1lYW50IHRvIGJlIGEgYmluYXJ5IG9wZXJhdGlvbiwgb3Igd3JhcAppdCBpbiBwYXJlbnRoZXNlcyB0byBtYWtlIGl0IGEgdW5hcnkgb3BlcmF0aW9uLiBUaGlzIHdpbGwgYmUgYW4gZXJyb3IgaW4gZnV0dXJlCnZlcnNpb25zIG9mIFNhc3MuCgpNb3JlIGluZm8gYW5kIGF1dG9tYXRlZCBtaWdyYXRvcjogaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2Qvc3RyaWN0LXVuYXJ5CldBUk5JTkc7CgogICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJVdGlsOjp3YXJuRm9yRGVwcmVjYXRpb24oJHRoaXMtPmxvZ2dlciwgRGVwcmVjYXRpb246OnN0cmljdFVuYXJ5LCAkbWVzc2FnZSwgJHNpbmdsZUV4cHJlc3Npb24tPmdldFNwYW4oKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgJHJlc29sdmVPcGVyYXRpb25zID0gZnVuY3Rpb24gKCkgdXNlICgmJG9wZXJhdG9ycywgJHJlc29sdmVPbmVPcGVyYXRpb24pOiB2b2lkIHsKICAgICAgICAgICAgaWYgKCRvcGVyYXRvcnMgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgd2hpbGUgKCRvcGVyYXRvcnMpIHsKICAgICAgICAgICAgICAgICRyZXNvbHZlT25lT3BlcmF0aW9uKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChFeHByZXNzaW9uICRleHByZXNzaW9uKSB1c2UgKCYkc2luZ2xlRXhwcmVzc2lvbiwgJiRhbGxvd1NsYXNoLCAmJHNwYWNlRXhwcmVzc2lvbnMsICRyZXNldFN0YXRlLCAkcmVzb2x2ZU9wZXJhdGlvbnMpOiB2b2lkIHsKICAgICAgICAgICAgaWYgKCRzaW5nbGVFeHByZXNzaW9uICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkaXNjb3ZlciB3ZSdyZSBwYXJzaW5nIGEgbGlzdCB3aG9zZSBmaXJzdCBlbGVtZW50IGlzIGEgZGl2aXNpb24KICAgICAgICAgICAgICAgIC8vIG9wZXJhdGlvbiwgYW5kIHdlJ3JlIGluIHBhcmVudGhlc2VzLCByZXBhcnNlIG91dHNpZGUgb2YgYSBwYXJlbgogICAgICAgICAgICAgICAgLy8gY29udGV4dC4gVGhpcyBlbnN1cmVzIHRoYXQgYCgxLzIgMSlgIGRvZXNuJ3QgcGVyZm9ybSBkaXZpc2lvbiBvbiBpdHMKICAgICAgICAgICAgICAgIC8vIGZpcnN0IGVsZW1lbnQuCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmluUGFyZW50aGVzZXMpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW5QYXJlbnRoZXNlcyA9IGZhbHNlOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJGFsbG93U2xhc2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc2V0U3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkc3BhY2VFeHByZXNzaW9ucyA9ICRzcGFjZUV4cHJlc3Npb25zID8/IFtdOwogICAgICAgICAgICAgICAgJHJlc29sdmVPcGVyYXRpb25zKCk7CgogICAgICAgICAgICAgICAgJHNwYWNlRXhwcmVzc2lvbnNbXSA9ICRzaW5nbGVFeHByZXNzaW9uOwogICAgICAgICAgICAgICAgJGFsbG93U2xhc2ggPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2luZ2xlRXhwcmVzc2lvbiA9ICRleHByZXNzaW9uOwogICAgICAgIH07CgogICAgICAgICRhZGRPcGVyYXRvciA9IGZ1bmN0aW9uIChCaW5hcnlPcGVyYXRvciAkb3BlcmF0b3IpIHVzZSAoJiRhbGxvd1NsYXNoLCAmJG9wZXJhdG9ycywgJiRvcGVyYW5kcywgJiRzaW5nbGVFeHByZXNzaW9uLCAkcmVzb2x2ZU9uZU9wZXJhdGlvbik6IHZvaWQgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+aXNQbGFpbkNzcygpCiAgICAgICAgICAgICAgICAmJiAkb3BlcmF0b3IgIT09IEJpbmFyeU9wZXJhdG9yOjpTSU5HTEVfRVFVQUxTCiAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgYWxsb3dlZCBpbiBjYWxjdWxhdGlvbnMsIHNvIHdlIGhhdmUgdG8gY2hlY2sgdGhlbSBhdAogICAgICAgICAgICAgICAgLy8gZXZhbHVhdGlvbiB0aW1lLgogICAgICAgICAgICAgICAgJiYgJG9wZXJhdG9yICE9PSBCaW5hcnlPcGVyYXRvcjo6UExVUwogICAgICAgICAgICAgICAgJiYgJG9wZXJhdG9yICE9PSBCaW5hcnlPcGVyYXRvcjo6TUlOVVMKICAgICAgICAgICAgICAgICYmICRvcGVyYXRvciAhPT0gQmluYXJ5T3BlcmF0b3I6OlRJTUVTCiAgICAgICAgICAgICAgICAmJiAkb3BlcmF0b3IgIT09IEJpbmFyeU9wZXJhdG9yOjpESVZJREVEX0JZCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCJPcGVyYXRvcnMgYXJlbid0IGFsbG93ZWQgaW4gcGxhaW4gQ1NTLiIsICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpIC0gXHN0cmxlbigkb3BlcmF0b3ItPmdldE9wZXJhdG9yKCkpLCBcc3RybGVuKCRvcGVyYXRvci0+Z2V0T3BlcmF0b3IoKSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYWxsb3dTbGFzaCA9ICRhbGxvd1NsYXNoICYmICRvcGVyYXRvciA9PT0gQmluYXJ5T3BlcmF0b3I6OkRJVklERURfQlk7CgogICAgICAgICAgICAkb3BlcmF0b3JzID0gJG9wZXJhdG9ycyA/PyBbXTsKICAgICAgICAgICAgJG9wZXJhbmRzID0gJG9wZXJhbmRzID8/IFtdOwoKICAgICAgICAgICAgJHByZWNlZGVuY2UgPSAkb3BlcmF0b3ItPmdldFByZWNlZGVuY2UoKTsKCiAgICAgICAgICAgIHdoaWxlICgkb3BlcmF0b3JzICYmICRvcGVyYXRvcnNbXGNvdW50KCRvcGVyYXRvcnMpIC0gMV0tPmdldFByZWNlZGVuY2UoKSA+PSAkcHJlY2VkZW5jZSkgewogICAgICAgICAgICAgICAgJHJlc29sdmVPbmVPcGVyYXRpb24oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG9wZXJhdG9yc1tdID0gJG9wZXJhdG9yOwoKICAgICAgICAgICAgaWYgKCRzaW5nbGVFeHByZXNzaW9uID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGV4cHJlc3Npb24uJywgJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCkgLSBcc3RybGVuKCRvcGVyYXRvci0+Z2V0T3BlcmF0b3IoKSksIFxzdHJsZW4oJG9wZXJhdG9yLT5nZXRPcGVyYXRvcigpKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRvcGVyYW5kc1tdID0gJHNpbmdsZUV4cHJlc3Npb247CgogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAkc2luZ2xlRXhwcmVzc2lvbiA9ICR0aGlzLT5zaW5nbGVFeHByZXNzaW9uKCk7CiAgICAgICAgfTsKCiAgICAgICAgJHJlc29sdmVTcGFjZUV4cHJlc3Npb25zID0gZnVuY3Rpb24gKCkgdXNlICgmJHNwYWNlRXhwcmVzc2lvbnMsICYkc2luZ2xlRXhwcmVzc2lvbiwgJHJlc29sdmVPcGVyYXRpb25zKTogdm9pZCB7CiAgICAgICAgICAgICRyZXNvbHZlT3BlcmF0aW9ucygpOwoKICAgICAgICAgICAgaWYgKCRzcGFjZUV4cHJlc3Npb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBpZiAoJHNpbmdsZUV4cHJlc3Npb24gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGV4cHJlc3Npb24uJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHNwYWNlRXhwcmVzc2lvbnNbXSA9ICRzaW5nbGVFeHByZXNzaW9uOwogICAgICAgICAgICAgICAgJHNpbmdsZUV4cHJlc3Npb24gPSBuZXcgTGlzdEV4cHJlc3Npb24oCiAgICAgICAgICAgICAgICAgICAgJHNwYWNlRXhwcmVzc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgTGlzdFNlcGFyYXRvcjo6U1BBQ0UsCiAgICAgICAgICAgICAgICAgICAgJHNwYWNlRXhwcmVzc2lvbnNbMF0tPmdldFNwYW4oKS0+ZXhwYW5kKCRzcGFjZUV4cHJlc3Npb25zW1xjb3VudCgkc3BhY2VFeHByZXNzaW9ucykgLSAxXS0+Z2V0U3BhbigpKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRzcGFjZUV4cHJlc3Npb25zID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICBpZiAoJHVudGlsICE9PSBudWxsICYmICR1bnRpbCgpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGZpcnN0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgICAgICBzd2l0Y2ggKCRmaXJzdCkgewogICAgICAgICAgICAgICAgY2FzZSAnKCc6CiAgICAgICAgICAgICAgICAgICAgLy8gUGFyZW50aGVzaXplZCBudW1iZXJzIGNhbid0IGJlIHNsYXNoLXNlcGFyYXRlZC4KICAgICAgICAgICAgICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbigkdGhpcy0+cGFyZW50aGVzZXMoKSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnWyc6CiAgICAgICAgICAgICAgICAgICAgJGFkZFNpbmdsZUV4cHJlc3Npb24oJHRoaXMtPmV4cHJlc3Npb24obnVsbCwgZmFsc2UsIHRydWUpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICckJzoKICAgICAgICAgICAgICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbigkdGhpcy0+dmFyaWFibGUoKSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnJic6CiAgICAgICAgICAgICAgICAgICAgJGFkZFNpbmdsZUV4cHJlc3Npb24oJHRoaXMtPnNlbGVjdG9yKCkpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgIiciOgogICAgICAgICAgICAgICAgY2FzZSAnIic6CiAgICAgICAgICAgICAgICAgICAgJGFkZFNpbmdsZUV4cHJlc3Npb24oJHRoaXMtPmludGVycG9sYXRlZFN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcjJzoKICAgICAgICAgICAgICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbigkdGhpcy0+aGFzaEV4cHJlc3Npb24oKSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnPSc6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRzaW5nbGVFcXVhbHMgJiYgJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgIT09ICc9JykgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkT3BlcmF0b3IoQmluYXJ5T3BlcmF0b3I6OlNJTkdMRV9FUVVBTFMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCc9Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRPcGVyYXRvcihCaW5hcnlPcGVyYXRvcjo6RVFVQUxTKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnISc6CiAgICAgICAgICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZE9wZXJhdG9yKEJpbmFyeU9wZXJhdG9yOjpOT1RfRVFVQUxTKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJG5leHQgPT09IG51bGwgfHwgJG5leHQgPT09ICdpJyB8fCAkbmV4dCA9PT0gJ0knIHx8IENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCRuZXh0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbigkdGhpcy0+aW1wb3J0YW50RXhwcmVzc2lvbigpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhayAyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICc8JzoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAkYWRkT3BlcmF0b3IoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCc9JykgPyBCaW5hcnlPcGVyYXRvcjo6TEVTU19USEFOX09SX0VRVUFMUyA6IEJpbmFyeU9wZXJhdG9yOjpMRVNTX1RIQU4pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJz4nOgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICRhZGRPcGVyYXRvcigkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJz0nKSA/IEJpbmFyeU9wZXJhdG9yOjpHUkVBVEVSX1RIQU5fT1JfRVFVQUxTIDogQmluYXJ5T3BlcmF0b3I6OkdSRUFURVJfVEhBTik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnKic6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgJGFkZE9wZXJhdG9yKEJpbmFyeU9wZXJhdG9yOjpUSU1FUyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgICAgICAgICAgaWYgKCRzaW5nbGVFeHByZXNzaW9uID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRTaW5nbGVFeHByZXNzaW9uKCR0aGlzLT51bmFyeU9wZXJhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZE9wZXJhdG9yKEJpbmFyeU9wZXJhdG9yOjpQTFVTKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSk7CiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGAxLTJgIHBhcnNlcyBhcyBgMSAtIDJgLCBub3QgYDEgKC0yKWAuCiAgICAgICAgICAgICAgICAgICAgaWYgKChDaGFyYWN0ZXI6OmlzRGlnaXQoJG5leHQpIHx8ICRuZXh0ID09PSAnLicpICYmICgkc2luZ2xlRXhwcmVzc2lvbiA9PT0gbnVsbCB8fCBDaGFyYWN0ZXI6OmlzV2hpdGVzcGFjZSgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoLTEpKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZFNpbmdsZUV4cHJlc3Npb24oJHRoaXMtPm51bWJlcigpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPmxvb2tpbmdBdEludGVycG9sYXRlZElkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbigkdGhpcy0+aWRlbnRpZmllckxpa2UoKSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzaW5nbGVFeHByZXNzaW9uID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRTaW5nbGVFeHByZXNzaW9uKCR0aGlzLT51bmFyeU9wZXJhdGlvbigpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZE9wZXJhdG9yKEJpbmFyeU9wZXJhdG9yOjpNSU5VUyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJy8nOgogICAgICAgICAgICAgICAgICAgIGlmICgkc2luZ2xlRXhwcmVzc2lvbiA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbigkdGhpcy0+dW5hcnlPcGVyYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRPcGVyYXRvcihCaW5hcnlPcGVyYXRvcjo6RElWSURFRF9CWSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJyUnOgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICRhZGRPcGVyYXRvcihCaW5hcnlPcGVyYXRvcjo6TU9EVUxPKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcwJzoKICAgICAgICAgICAgICAgIGNhc2UgJzEnOgogICAgICAgICAgICAgICAgY2FzZSAnMic6CiAgICAgICAgICAgICAgICBjYXNlICczJzoKICAgICAgICAgICAgICAgIGNhc2UgJzQnOgogICAgICAgICAgICAgICAgY2FzZSAnNSc6CiAgICAgICAgICAgICAgICBjYXNlICc2JzoKICAgICAgICAgICAgICAgIGNhc2UgJzcnOgogICAgICAgICAgICAgICAgY2FzZSAnOCc6CiAgICAgICAgICAgICAgICBjYXNlICc5JzoKICAgICAgICAgICAgICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbigkdGhpcy0+bnVtYmVyKCkpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJy4nOgogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICcuJykgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhayAyOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGFkZFNpbmdsZUV4cHJlc3Npb24oJHRoaXMtPm51bWJlcigpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdhJzoKICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5pc1BsYWluQ3NzKCkgJiYgJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdhbmQnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkT3BlcmF0b3IoQmluYXJ5T3BlcmF0b3I6OkFORCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZFNpbmdsZUV4cHJlc3Npb24oJHRoaXMtPmlkZW50aWZpZXJMaWtlKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5pc1BsYWluQ3NzKCkgJiYgJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdvcicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRPcGVyYXRvcihCaW5hcnlPcGVyYXRvcjo6T1IpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRTaW5nbGVFeHByZXNzaW9uKCR0aGlzLT5pZGVudGlmaWVyTGlrZSgpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpID09PSAnKycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZFNpbmdsZUV4cHJlc3Npb24oJHRoaXMtPnVuaWNvZGVSYW5nZSgpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkU2luZ2xlRXhwcmVzc2lvbigkdGhpcy0+aWRlbnRpZmllckxpa2UoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ2InOgogICAgICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2gnOgogICAgICAgICAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICAgICBjYXNlICdqJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2snOgogICAgICAgICAgICAgICAgY2FzZSAnbCc6CiAgICAgICAgICAgICAgICBjYXNlICdtJzoKICAgICAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgY2FzZSAncCc6CiAgICAgICAgICAgICAgICBjYXNlICdxJzoKICAgICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICBjYXNlICd0JzoKICAgICAgICAgICAgICAgIGNhc2UgJ3YnOgogICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgIGNhc2UgJ3knOgogICAgICAgICAgICAgICAgY2FzZSAneic6CiAgICAgICAgICAgICAgICBjYXNlICdBJzoKICAgICAgICAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICAgICAgY2FzZSAnQyc6CiAgICAgICAgICAgICAgICBjYXNlICdEJzoKICAgICAgICAgICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICAgICBjYXNlICdHJzoKICAgICAgICAgICAgICAgIGNhc2UgJ0gnOgogICAgICAgICAgICAgICAgY2FzZSAnSSc6CiAgICAgICAgICAgICAgICBjYXNlICdKJzoKICAgICAgICAgICAgICAgIGNhc2UgJ0snOgogICAgICAgICAgICAgICAgY2FzZSAnTCc6CiAgICAgICAgICAgICAgICBjYXNlICdNJzoKICAgICAgICAgICAgICAgIGNhc2UgJ04nOgogICAgICAgICAgICAgICAgY2FzZSAnTyc6CiAgICAgICAgICAgICAgICBjYXNlICdQJzoKICAgICAgICAgICAgICAgIGNhc2UgJ1EnOgogICAgICAgICAgICAgICAgY2FzZSAnUic6CiAgICAgICAgICAgICAgICBjYXNlICdTJzoKICAgICAgICAgICAgICAgIGNhc2UgJ1QnOgogICAgICAgICAgICAgICAgY2FzZSAnVic6CiAgICAgICAgICAgICAgICBjYXNlICdXJzoKICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgogICAgICAgICAgICAgICAgY2FzZSAnWSc6CiAgICAgICAgICAgICAgICBjYXNlICdaJzoKICAgICAgICAgICAgICAgIGNhc2UgJ18nOgogICAgICAgICAgICAgICAgY2FzZSAnXFwnOgogICAgICAgICAgICAgICAgICAgICRhZGRTaW5nbGVFeHByZXNzaW9uKCR0aGlzLT5pZGVudGlmaWVyTGlrZSgpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcsJzoKICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkaXNjb3ZlciB3ZSdyZSBwYXJzaW5nIGEgbGlzdCB3aG9zZSBmaXJzdCBlbGVtZW50IGlzIGEKICAgICAgICAgICAgICAgICAgICAvLyBkaXZpc2lvbiBvcGVyYXRpb24sIGFuZCB3ZSdyZSBpbiBwYXJlbnRoZXNlcywgcmVwYXJzZSBvdXRzaWRlIG9mIGEKICAgICAgICAgICAgICAgICAgICAvLyBwYXJlbiBjb250ZXh0LiBUaGlzIGVuc3VyZXMgdGhhdCBgKDEvMiwgMSlgIGRvZXNuJ3QgcGVyZm9ybSBkaXZpc2lvbgogICAgICAgICAgICAgICAgICAgIC8vIG9uIGl0cyBmaXJzdCBlbGVtZW50LgogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+aW5QYXJlbnRoZXNlcykgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW5QYXJlbnRoZXNlcyA9IGZhbHNlOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhbGxvd1NsYXNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzZXRTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRjb21tYUV4cHJlc3Npb25zID0gJGNvbW1hRXhwcmVzc2lvbnMgPz8gW107CgogICAgICAgICAgICAgICAgICAgIGlmICgkc2luZ2xlRXhwcmVzc2lvbiA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGV4cHJlc3Npb24uJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRyZXNvbHZlU3BhY2VFeHByZXNzaW9ucygpOwoKICAgICAgICAgICAgICAgICAgICAkY29tbWFFeHByZXNzaW9uc1tdID0gJHNpbmdsZUV4cHJlc3Npb247CgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICRhbGxvd1NsYXNoID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAkc2luZ2xlRXhwcmVzc2lvbiA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpcnN0ICE9PSBudWxsICYmIFxvcmQoJGZpcnN0KSA+PSAweDgwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRTaW5nbGVFeHByZXNzaW9uKCR0aGlzLT5pZGVudGlmaWVyTGlrZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBicmVhayAyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJyYWNrZXRMaXN0KSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCddJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbW1hRXhwcmVzc2lvbnMgIT09IG51bGwpIHsKICAgICAgICAgICAgJHJlc29sdmVTcGFjZUV4cHJlc3Npb25zKCk7CiAgICAgICAgICAgICR0aGlzLT5pblBhcmVudGhlc2VzID0gJHdhc0luUGFyZW50aGVzZXM7CgogICAgICAgICAgICBpZiAoJHNpbmdsZUV4cHJlc3Npb24gIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRjb21tYUV4cHJlc3Npb25zW10gPSAkc2luZ2xlRXhwcmVzc2lvbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmluRXhwcmVzc2lvbiA9ICR3YXNJbkV4cHJlc3Npb247CgogICAgICAgICAgICByZXR1cm4gbmV3IExpc3RFeHByZXNzaW9uKCRjb21tYUV4cHJlc3Npb25zLCBMaXN0U2VwYXJhdG9yOjpDT01NQSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRiZWZvcmVCcmFja2V0ID8/ICRzdGFydCksICRicmFja2V0TGlzdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJyYWNrZXRMaXN0ICYmICRzcGFjZUV4cHJlc3Npb25zICE9PSBudWxsKSB7CiAgICAgICAgICAgICRyZXNvbHZlT3BlcmF0aW9ucygpOwogICAgICAgICAgICAkdGhpcy0+aW5FeHByZXNzaW9uID0gJHdhc0luRXhwcmVzc2lvbjsKICAgICAgICAgICAgYXNzZXJ0KCRzaW5nbGVFeHByZXNzaW9uICE9PSBudWxsKTsKICAgICAgICAgICAgJHNwYWNlRXhwcmVzc2lvbnNbXSA9ICRzaW5nbGVFeHByZXNzaW9uOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBMaXN0RXhwcmVzc2lvbigkc3BhY2VFeHByZXNzaW9ucywgTGlzdFNlcGFyYXRvcjo6U1BBQ0UsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkYmVmb3JlQnJhY2tldCksIHRydWUpOwogICAgICAgIH0KCiAgICAgICAgJHJlc29sdmVTcGFjZUV4cHJlc3Npb25zKCk7CiAgICAgICAgYXNzZXJ0KCRzaW5nbGVFeHByZXNzaW9uICE9PSBudWxsKTsKCiAgICAgICAgaWYgKCRicmFja2V0TGlzdCkgewogICAgICAgICAgICBhc3NlcnQoJGJlZm9yZUJyYWNrZXQgIT09IG51bGwpOwogICAgICAgICAgICAkc2luZ2xlRXhwcmVzc2lvbiA9IG5ldyBMaXN0RXhwcmVzc2lvbihbJHNpbmdsZUV4cHJlc3Npb25dLCBMaXN0U2VwYXJhdG9yOjpVTkRFQ0lERUQsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkYmVmb3JlQnJhY2tldCksIHRydWUpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+aW5FeHByZXNzaW9uID0gJHdhc0luRXhwcmVzc2lvbjsKCiAgICAgICAgcmV0dXJuICRzaW5nbGVFeHByZXNzaW9uOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gZXhwcmVzc2lvbiB1bnRpbCBpdCByZWFjaGVzIGEgdG9wLWxldmVsIGNvbW1hLgogICAgICoKICAgICAqIElmICRzaW5nbGVFcXVhbHMgaXMgdHJ1ZSwgdGhpcyB3aWxsIGFsbG93IHRoZSBNaWNyb3NvZnQtc3R5bGUgYD1gCiAgICAgKiBvcGVyYXRvciBhdCB0aGUgdG9wIGxldmVsLgogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXhwcmVzc2lvblVudGlsQ29tbWEoYm9vbCAkc2luZ2xlRXF1YWxzID0gZmFsc2UpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5leHByZXNzaW9uKGZuKCkgPT4gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcsJywgJHNpbmdsZUVxdWFscyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyICRleHByZXNzaW9uIGlzIGFsbG93ZWQgYXMgYW4gb3BlcmFuZCBvZiBhIGAvYCBleHByZXNzaW9uIHRoYXQKICAgICAqIHByb2R1Y2VzIGEgcG90ZW50aWFsbHkgc2xhc2gtc2VwYXJhdGVkIG51bWJlci4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNTbGFzaE9wZXJhbmQoRXhwcmVzc2lvbiAkZXhwcmVzc2lvbik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJGV4cHJlc3Npb24gaW5zdGFuY2VvZiBOdW1iZXJFeHByZXNzaW9uIHx8ICRleHByZXNzaW9uIGluc3RhbmNlb2YgRnVuY3Rpb25FeHByZXNzaW9uIHx8ICgkZXhwcmVzc2lvbiBpbnN0YW5jZW9mIEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24gJiYgJGV4cHJlc3Npb24tPmFsbG93c1NsYXNoKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gZXhwcmVzc2lvbiB0aGF0IGRvZXNuJ3QgY29udGFpbiBhbnkgdG9wLWxldmVsIHdoaXRlc3BhY2UuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2luZ2xlRXhwcmVzc2lvbigpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgJGZpcnN0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgIHN3aXRjaCAoJGZpcnN0KSB7CiAgICAgICAgICAgIGNhc2UgJygnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJlbnRoZXNlcygpOwogICAgICAgICAgICBjYXNlICcvJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dW5hcnlPcGVyYXRpb24oKTsKICAgICAgICAgICAgY2FzZSAnLic6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPm51bWJlcigpOwogICAgICAgICAgICBjYXNlICdbJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZXhwcmVzc2lvbihudWxsLCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgJyQnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52YXJpYWJsZSgpOwogICAgICAgICAgICBjYXNlICcmJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2VsZWN0b3IoKTsKCiAgICAgICAgICAgIGNhc2UgIiciOgogICAgICAgICAgICBjYXNlICciJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aW50ZXJwb2xhdGVkU3RyaW5nKCk7CgogICAgICAgICAgICBjYXNlICcjJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGFzaEV4cHJlc3Npb24oKTsKCiAgICAgICAgICAgIGNhc2UgJysnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5wbHVzRXhwcmVzc2lvbigpOwoKICAgICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1pbnVzRXhwcmVzc2lvbigpOwoKICAgICAgICAgICAgY2FzZSAnISc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmltcG9ydGFudEV4cHJlc3Npb24oKTsKCiAgICAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICcrJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dW5pY29kZVJhbmdlKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5pZGVudGlmaWVyTGlrZSgpOwoKICAgICAgICAgICAgY2FzZSAnMCc6CiAgICAgICAgICAgIGNhc2UgJzEnOgogICAgICAgICAgICBjYXNlICcyJzoKICAgICAgICAgICAgY2FzZSAnMyc6CiAgICAgICAgICAgIGNhc2UgJzQnOgogICAgICAgICAgICBjYXNlICc1JzoKICAgICAgICAgICAgY2FzZSAnNic6CiAgICAgICAgICAgIGNhc2UgJzcnOgogICAgICAgICAgICBjYXNlICc4JzoKICAgICAgICAgICAgY2FzZSAnOSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPm51bWJlcigpOwoKICAgICAgICAgICAgY2FzZSAnYSc6CiAgICAgICAgICAgIGNhc2UgJ2InOgogICAgICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgY2FzZSAnZCc6CiAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgIGNhc2UgJ2gnOgogICAgICAgICAgICBjYXNlICdpJzoKICAgICAgICAgICAgY2FzZSAnaic6CiAgICAgICAgICAgIGNhc2UgJ2snOgogICAgICAgICAgICBjYXNlICdsJzoKICAgICAgICAgICAgY2FzZSAnbSc6CiAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgY2FzZSAncCc6CiAgICAgICAgICAgIGNhc2UgJ3EnOgogICAgICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgIGNhc2UgJ3QnOgogICAgICAgICAgICBjYXNlICd2JzoKICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICBjYXNlICd5JzoKICAgICAgICAgICAgY2FzZSAneic6CiAgICAgICAgICAgIGNhc2UgJ0EnOgogICAgICAgICAgICBjYXNlICdCJzoKICAgICAgICAgICAgY2FzZSAnQyc6CiAgICAgICAgICAgIGNhc2UgJ0QnOgogICAgICAgICAgICBjYXNlICdFJzoKICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgIGNhc2UgJ0cnOgogICAgICAgICAgICBjYXNlICdIJzoKICAgICAgICAgICAgY2FzZSAnSSc6CiAgICAgICAgICAgIGNhc2UgJ0onOgogICAgICAgICAgICBjYXNlICdLJzoKICAgICAgICAgICAgY2FzZSAnTCc6CiAgICAgICAgICAgIGNhc2UgJ00nOgogICAgICAgICAgICBjYXNlICdOJzoKICAgICAgICAgICAgY2FzZSAnTyc6CiAgICAgICAgICAgIGNhc2UgJ1AnOgogICAgICAgICAgICBjYXNlICdRJzoKICAgICAgICAgICAgY2FzZSAnUic6CiAgICAgICAgICAgIGNhc2UgJ1MnOgogICAgICAgICAgICBjYXNlICdUJzoKICAgICAgICAgICAgY2FzZSAnVic6CiAgICAgICAgICAgIGNhc2UgJ1cnOgogICAgICAgICAgICBjYXNlICdYJzoKICAgICAgICAgICAgY2FzZSAnWSc6CiAgICAgICAgICAgIGNhc2UgJ1onOgogICAgICAgICAgICBjYXNlICdfJzoKICAgICAgICAgICAgY2FzZSAnXFwnOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5pZGVudGlmaWVyTGlrZSgpOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGlmICgkZmlyc3QgIT09IG51bGwgJiYgXG9yZCgkZmlyc3QpID49IDB4ODApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmlkZW50aWZpZXJMaWtlKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCBleHByZXNzaW9uLicpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgcGFyZW50aGVzaXplZCBleHByZXNzaW9uLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFyZW50aGVzZXMoKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIGlmICgkdGhpcy0+aXNQbGFpbkNzcygpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcigiUGFyZW50aGVzZXMgYXJlbid0IGFsbG93ZWQgaW4gcGxhaW4gQ1NTLiIpOwogICAgICAgIH0KCiAgICAgICAgJHdhc0luUGFyZW50aGVzZXMgPSAkdGhpcy0+aW5QYXJlbnRoZXNlczsKICAgICAgICAkdGhpcy0+aW5QYXJlbnRoZXNlcyA9IHRydWU7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignKCcpOwogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgaWYgKCEkdGhpcy0+bG9va2luZ0F0RXhwcmVzc2lvbigpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignKScpOwoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTGlzdEV4cHJlc3Npb24oW10sIExpc3RTZXBhcmF0b3I6OlVOREVDSURFRCwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZmlyc3QgPSAkdGhpcy0+ZXhwcmVzc2lvblVudGlsQ29tbWEoKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJzonKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1hcCgkZmlyc3QsICRzdGFydCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCcsJykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbigkZmlyc3QsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICRleHByZXNzaW9ucyA9IFskZmlyc3RdOwoKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPmxvb2tpbmdBdEV4cHJlc3Npb24oKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRleHByZXNzaW9uc1tdID0gJHRoaXMtPmV4cHJlc3Npb25VbnRpbENvbW1hKCk7CgogICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJywnKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CgogICAgICAgICAgICByZXR1cm4gbmV3IExpc3RFeHByZXNzaW9uKCRleHByZXNzaW9ucywgTGlzdFNlcGFyYXRvcjo6Q09NTUEsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAkdGhpcy0+aW5QYXJlbnRoZXNlcyA9ICR3YXNJblBhcmVudGhlc2VzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgbWFwIGV4cHJlc3Npb24uCiAgICAgKgogICAgICogVGhpcyBleHBlY3RzIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgZmlyc3QgY29sb24gaW4gdGhlIG1hcCwgd2l0aCAkZmlyc3QKICAgICAqIGFzIHRoZSBleHByZXNzaW9uIGJlZm9yZSB0aGUgY29sb24gYW5kICRzdGFydCB0aGUgcG9pbnQgYmVmb3JlIHRoZQogICAgICogb3BlbmluZyBwYXJlbnRoZXNpcy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBtYXAoRXhwcmVzc2lvbiAkZmlyc3QsIGludCAkc3RhcnQpOiBNYXBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgJHBhaXJzID0gWwogICAgICAgICAgICBbJGZpcnN0LCAkdGhpcy0+ZXhwcmVzc2lvblVudGlsQ29tbWEoKV0sCiAgICAgICAgXTsKCiAgICAgICAgd2hpbGUgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignLCcpKSB7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgIGlmICghJHRoaXMtPmxvb2tpbmdBdEV4cHJlc3Npb24oKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRrZXkgPSAkdGhpcy0+ZXhwcmVzc2lvblVudGlsQ29tbWEoKTsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJzonKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmV4cHJlc3Npb25VbnRpbENvbW1hKCk7CgogICAgICAgICAgICAkcGFpcnNbXSA9IFska2V5LCAkdmFsdWVdOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKCiAgICAgICAgcmV0dXJuIG5ldyBNYXBFeHByZXNzaW9uKCRwYWlycywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gZXhwcmVzc2lvbiB0aGF0IHN0YXJ0cyB3aXRoIGEgYCNgLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGhhc2hFeHByZXNzaW9uKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICBhc3NlcnQoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcjJyk7CiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKSA9PT0gJ3snKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aWRlbnRpZmllckxpa2UoKTsKICAgICAgICB9CgogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcjJyk7CgogICAgICAgICRmaXJzdCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgIGlmICgkZmlyc3QgIT09IG51bGwgJiYgQ2hhcmFjdGVyOjppc0RpZ2l0KCRmaXJzdCkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvckV4cHJlc3Npb24oJHRoaXMtPmhleENvbG9yQ29udGVudHMoJHN0YXJ0KSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgJGFmdGVySGFzaCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRpZGVudGlmaWVyID0gJHRoaXMtPmludGVycG9sYXRlZElkZW50aWZpZXIoKTsKICAgICAgICBpZiAoJHRoaXMtPmlzSGV4Q29sb3IoJGlkZW50aWZpZXIpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5zZXRQb3NpdGlvbigkYWZ0ZXJIYXNoKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgQ29sb3JFeHByZXNzaW9uKCR0aGlzLT5oZXhDb2xvckNvbnRlbnRzKCRzdGFydCksICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICB9CgogICAgICAgICRidWZmZXIgPSBuZXcgSW50ZXJwb2xhdGlvbkJ1ZmZlcigpOwogICAgICAgICRidWZmZXItPndyaXRlKCcjJyk7CiAgICAgICAgJGJ1ZmZlci0+YWRkSW50ZXJwb2xhdGlvbigkaWRlbnRpZmllcik7CgogICAgICAgIHJldHVybiBuZXcgU3RyaW5nRXhwcmVzc2lvbigkYnVmZmVyLT5idWlsZEludGVycG9sYXRpb24oJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIHRoZSBjb250ZW50cyBvZiBhIGhleCBjb2xvciwgYWZ0ZXIgdGhlIGAjYC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBoZXhDb2xvckNvbnRlbnRzKGludCAkc3RhcnQpOiBTYXNzQ29sb3IKICAgIHsKICAgICAgICAkZGlnaXQxID0gJHRoaXMtPmhleERpZ2l0KCk7CiAgICAgICAgJGRpZ2l0MiA9ICR0aGlzLT5oZXhEaWdpdCgpOwogICAgICAgICRkaWdpdDMgPSAkdGhpcy0+aGV4RGlnaXQoKTsKCiAgICAgICAgJGFscGhhID0gbnVsbDsKCiAgICAgICAgaWYgKCFDaGFyYWN0ZXI6OmlzSGV4KCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSkgewogICAgICAgICAgICAvLyAjYWJjCiAgICAgICAgICAgICRyZWQgPSAoJGRpZ2l0MSA8PCA0KSArICRkaWdpdDE7CiAgICAgICAgICAgICRncmVlbiA9ICgkZGlnaXQyIDw8IDQpICsgJGRpZ2l0MjsKICAgICAgICAgICAgJGJsdWUgPSAoJGRpZ2l0MyA8PCA0KSArICRkaWdpdDM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGRpZ2l0NCA9ICR0aGlzLT5oZXhEaWdpdCgpOwoKICAgICAgICAgICAgaWYgKCFDaGFyYWN0ZXI6OmlzSGV4KCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSkgewogICAgICAgICAgICAgICAgI2FiY2QKICAgICAgICAgICAgICAgICRyZWQgPSAoJGRpZ2l0MSA8PCA0KSArICRkaWdpdDE7CiAgICAgICAgICAgICAgICAkZ3JlZW4gPSAoJGRpZ2l0MiA8PCA0KSArICRkaWdpdDI7CiAgICAgICAgICAgICAgICAkYmx1ZSA9ICgkZGlnaXQzIDw8IDQpICsgJGRpZ2l0MzsKICAgICAgICAgICAgICAgICRhbHBoYSA9ICgoJGRpZ2l0NCA8PCA0KSArICRkaWdpdDQpIC8gMHhmZjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRyZWQgPSAoJGRpZ2l0MSA8PCA0KSArICRkaWdpdDI7CiAgICAgICAgICAgICAgICAkZ3JlZW4gPSAoJGRpZ2l0MyA8PCA0KSArICRkaWdpdDQ7CiAgICAgICAgICAgICAgICAkYmx1ZSA9ICgkdGhpcy0+aGV4RGlnaXQoKSA8PCA0KSArICR0aGlzLT5oZXhEaWdpdCgpOwoKICAgICAgICAgICAgICAgIGlmIChDaGFyYWN0ZXI6OmlzSGV4KCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSkgewogICAgICAgICAgICAgICAgICAgICRhbHBoYSA9ICgoJHRoaXMtPmhleERpZ2l0KCkgPDwgNCkgKyAkdGhpcy0+aGV4RGlnaXQoKSkgLyAweGZmOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBEb24ndCBlbWl0IGZvdXItIG9yIGVpZ2h0LWRpZ2l0IGhleCBjb2xvcnMgYXMgaGV4LCBzaW5jZSB0aGF0J3Mgbm90CiAgICAgICAgLy8geWV0IHdlbGwtc3VwcG9ydGVkIGluIGJyb3dzZXJzLgogICAgICAgIHJldHVybiBTYXNzQ29sb3I6OnJnYkludGVybmFsKCRyZWQsICRncmVlbiwgJGJsdWUsICRhbHBoYSA/PyAxLjAsICRhbHBoYSA9PT0gbnVsbCA/IG5ldyBTcGFuQ29sb3JGb3JtYXQoJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpIDogbnVsbCk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc0hleENvbG9yKEludGVycG9sYXRpb24gJGludGVycG9sYXRpb24pOiBib29sCiAgICB7CiAgICAgICAgJHBsYWluID0gJGludGVycG9sYXRpb24tPmdldEFzUGxhaW4oKTsKCiAgICAgICAgaWYgKCRwbGFpbiA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkbGVuZ3RoID0gXHN0cmxlbigkcGxhaW4pOwoKICAgICAgICBpZiAoJGxlbmd0aCAhPT0gMyAmJiAkbGVuZ3RoICE9PSA0ICYmICRsZW5ndGggIT09IDYgJiYgJGxlbmd0aCAhPT0gOCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgICAgIGlmICghQ2hhcmFjdGVyOjppc0hleCgkcGxhaW5bJGldKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgc2luZ2xlIGhleGFkZWNpbWFsIGRpZ2l0LgogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGhleERpZ2l0KCk6IGludAogICAgewogICAgICAgICRjaGFyID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgIGlmICgkY2hhciA9PT0gbnVsbCB8fCAhQ2hhcmFjdGVyOjppc0hleCgkY2hhcikpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCBoZXggZGlnaXQuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKGludCkgaGV4ZGVjKCR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGV4cHJlc3Npb24gdGhhdCBzdGFydHMgd2l0aCBhIGArYC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwbHVzRXhwcmVzc2lvbigpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgYXNzZXJ0KCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpID09PSAnKycpOwogICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpOwoKICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc0RpZ2l0KCRuZXh0KSB8fCAkbmV4dCA9PT0gJy4nKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bnVtYmVyKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnVuYXJ5T3BlcmF0aW9uKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhbiBleHByZXNzaW9uIHRoYXQgc3RhcnRzIHdpdGggYSBgLWAuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWludXNFeHByZXNzaW9uKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICBhc3NlcnQoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICctJyk7CiAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSk7CgogICAgICAgIGlmIChDaGFyYWN0ZXI6OmlzRGlnaXQoJG5leHQpIHx8ICRuZXh0ID09PSAnLicpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5udW1iZXIoKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+bG9va2luZ0F0SW50ZXJwb2xhdGVkSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aWRlbnRpZmllckxpa2UoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dW5hcnlPcGVyYXRpb24oKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGAhaW1wb3J0YW50YCBleHByZXNzaW9uLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGltcG9ydGFudEV4cHJlc3Npb24oKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIGFzc2VydCgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSA9PT0gJyEnKTsKCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAkdGhpcy0+ZXhwZWN0SWRlbnRpZmllcignaW1wb3J0YW50Jyk7CgogICAgICAgIHJldHVybiBTdHJpbmdFeHByZXNzaW9uOjpwbGFpbignIWltcG9ydGFudCcsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgdW5hcnkgb3BlcmF0aW9uIGV4cHJlc3Npb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdW5hcnlPcGVyYXRpb24oKTogVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJG9wZXJhdG9yID0gJHRoaXMtPnVuYXJ5T3BlcmF0b3JGb3IoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwoKICAgICAgICBpZiAoJG9wZXJhdG9yID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgdW5hcnkgb3BlcmF0b3IuJywgJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCkgLSAxKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+aXNQbGFpbkNzcygpICYmICRvcGVyYXRvciAhPT0gVW5hcnlPcGVyYXRvcjo6RElWSURFKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcigiT3BlcmF0b3JzIGFyZW4ndCBhbGxvd2VkIGluIHBsYWluIENTUy4iLCAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKSAtIDEsIDEpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAkb3BlcmFuZCA9ICR0aGlzLT5zaW5nbGVFeHByZXNzaW9uKCk7CgogICAgICAgIHJldHVybiBuZXcgVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uKCRvcGVyYXRvciwgJG9wZXJhbmQsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHVuYXJ5IG9wZXJhdG9yIGNvcnJlc3BvbmRpbmcgdG8gJGNoYXJhY3Rlciwgb3IgYG51bGxgIGlmCiAgICAgKiB0aGUgY2hhcmFjdGVyIGlzIG5vdCBhIHVuYXJ5IG9wZXJhdG9yLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHVuYXJ5T3BlcmF0b3JGb3Ioc3RyaW5nICRjaGFyYWN0ZXIpOiA/VW5hcnlPcGVyYXRvcgogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJGNoYXJhY3RlcikgewogICAgICAgICAgICAnKycgPT4gVW5hcnlPcGVyYXRvcjo6UExVUywKICAgICAgICAgICAgJy0nID0+IFVuYXJ5T3BlcmF0b3I6Ok1JTlVTLAogICAgICAgICAgICAnLycgPT4gVW5hcnlPcGVyYXRvcjo6RElWSURFLAogICAgICAgICAgICBkZWZhdWx0ID0+IG51bGwsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgbnVtYmVyIGV4cHJlc3Npb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbnVtYmVyKCk6IE51bWJlckV4cHJlc3Npb24KICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkZmlyc3QgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgaWYgKCRmaXJzdCA9PT0gJysnIHx8ICRmaXJzdCA9PT0gJy0nKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpICE9PSAnLicpIHsKICAgICAgICAgICAgJHRoaXMtPmNvbnN1bWVOYXR1cmFsTnVtYmVyKCk7CiAgICAgICAgfQoKICAgICAgICAvLyBEb24ndCBjb21wbGFpbiBhYm91dCBhIGRvdCBhZnRlciBhIG51bWJlciB1bmxlc3MgdGhlIG51bWJlciBzdGFydHMgd2l0aCBhCiAgICAgICAgLy8gZG90LiBXZSBkb24ndCBhbGxvdyBhIHBsYWluICIuIiwgYnV0IHdlIG5lZWQgdG8gYWxsb3cgIjEuIiBzbyB0aGF0CiAgICAgICAgLy8gIjEuLi4iIHdpbGwgd29yayBhcyBhIHJlc3QgYXJndW1lbnQuCiAgICAgICAgJHRoaXMtPnRyeURlY2ltYWwoJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCkgIT09ICRzdGFydCAmJiAkZmlyc3QgIT09ICcrJyAmJiAkZmlyc3QgIT09ICctJyk7CiAgICAgICAgJHRoaXMtPnRyeUV4cG9uZW50KCk7CgogICAgICAgIC8vIFVzZSBQSFAncyBidWlsdC1pbiBkb3VibGUgcGFyc2luZyBzbyB0aGF0IHdlIGRvbid0IGFjY3VtdWxhdGUKICAgICAgICAvLyBmbG9hdGluZy1wb2ludCBlcnJvcnMgZm9yIG51bWJlcnMgd2l0aCBsb3RzIG9mIGRpZ2l0cy4KICAgICAgICAkbnVtYmVyID0gZmxvYXR2YWwoJHRoaXMtPnNjYW5uZXItPnN1YnN0cmluZygkc3RhcnQpKTsKCiAgICAgICAgJHVuaXQgPSBudWxsOwogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJyUnKSkgewogICAgICAgICAgICAkdW5pdCA9ICclJzsKICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPmxvb2tpbmdBdElkZW50aWZpZXIoKSAmJiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgIT09ICctJyB8fCAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgIT09ICctJykpIHsKICAgICAgICAgICAgJHVuaXQgPSAkdGhpcy0+aWRlbnRpZmllcihmYWxzZSwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IE51bWJlckV4cHJlc3Npb24oJG51bWJlciwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCksICR1bml0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgbmF0dXJhbCBudW1iZXIgKHRoYXQgaXMsIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIpLgogICAgICoKICAgICAqIERvZXNuJ3Qgc3VwcG9ydCBzY2llbnRpZmljIG5vdGF0aW9uLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnN1bWVOYXR1cmFsTnVtYmVyKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIUNoYXJhY3Rlcjo6aXNEaWdpdCgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCBkaWdpdC4nLCAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKSAtIDEpOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKENoYXJhY3Rlcjo6aXNEaWdpdCgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgdGhlIGRlY2ltYWwgY29tcG9uZW50IG9mIGEgbnVtYmVyIGlmIGl0IGV4aXN0cy4KICAgICAqCiAgICAgKiBJZiAkYWxsb3dUcmFpbGluZ0RvdCBpcyBgZmFsc2VgLCB0aGlzIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlcmUncyBhCiAgICAgKiBkb3Qgd2l0aG91dCBhbnkgbnVtYmVycyBmb2xsb3dpbmcgaXQuIE90aGVyd2lzZSwgaXQgd2lsbCBpZ25vcmUgdGhlIGRvdAogICAgICogd2l0aG91dCBjb25zdW1pbmcgaXQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJ5RGVjaW1hbChib29sICRhbGxvd1RyYWlsaW5nRG90ID0gZmFsc2UpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpICE9PSAnLicpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFDaGFyYWN0ZXI6OmlzRGlnaXQoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpKSkgewogICAgICAgICAgICBpZiAoJGFsbG93VHJhaWxpbmdEb3QpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCBkaWdpdC4nLCAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKSArIDEpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgd2hpbGUgKENoYXJhY3Rlcjo6aXNEaWdpdCgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgdGhlIGV4cG9uZW50IGNvbXBvbmVudCBvZiBhIG51bWJlciBpZiBpdCBleGlzdHMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJ5RXhwb25lbnQoKTogdm9pZAogICAgewogICAgICAgICRmaXJzdCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICBpZiAoJGZpcnN0ICE9PSAnZScgJiYgJGZpcnN0ICE9PSAnRScpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSk7CgogICAgICAgIGlmICghQ2hhcmFjdGVyOjppc0RpZ2l0KCRuZXh0KSAmJiAkbmV4dCAhPT0gJy0nICYmICRuZXh0ICE9PSAnKycpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgaWYgKCRuZXh0ID09PSAnKycgfHwgJG5leHQgPT09ICctJykgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICB9CgogICAgICAgIGlmICghQ2hhcmFjdGVyOjppc0RpZ2l0KCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpKSkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGRpZ2l0LicpOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKENoYXJhY3Rlcjo6aXNEaWdpdCgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSB1bmljb2RlIHJhbmdlIGV4cHJlc3Npb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdW5pY29kZVJhbmdlKCk6IFN0cmluZ0V4cHJlc3Npb24KICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkdGhpcy0+ZXhwZWN0SWRlbnRDaGFyKCd1Jyk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJysnKTsKCiAgICAgICAgJGZpcnN0UmFuZ2VMZW5ndGggPSAwOwogICAgICAgIHdoaWxlICgkdGhpcy0+c2NhbkNoYXJJZihDaGFyYWN0ZXI6OmlzSGV4KC4uLikpKSB7CiAgICAgICAgICAgICRmaXJzdFJhbmdlTGVuZ3RoKys7CiAgICAgICAgfQoKICAgICAgICAkaGFzUXVlc3Rpb25NYXJrID0gZmFsc2U7CgogICAgICAgIHdoaWxlICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJz8nKSkgewogICAgICAgICAgICAkaGFzUXVlc3Rpb25NYXJrID0gdHJ1ZTsKICAgICAgICAgICAgJGZpcnN0UmFuZ2VMZW5ndGgrKzsKICAgICAgICB9CgogICAgICAgIGlmICgkZmlyc3RSYW5nZUxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGhleCBkaWdpdCBvciAiPyIuJyk7CiAgICAgICAgfSBlbHNlaWYgKCRmaXJzdFJhbmdlTGVuZ3RoID4gNikgewogICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJ0V4cGVjdGVkIGF0IG1vc3QgNiBkaWdpdHMuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0gZWxzZWlmICgkaGFzUXVlc3Rpb25NYXJrKSB7CiAgICAgICAgICAgIHJldHVybiBTdHJpbmdFeHByZXNzaW9uOjpwbGFpbigkdGhpcy0+c2Nhbm5lci0+c3Vic3RyaW5nKCRzdGFydCksICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJy0nKSkgewogICAgICAgICAgICAkc2Vjb25kUmFuZ2VTdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICAgICAkc2Vjb25kUmFuZ2VMZW5ndGggPSAwOwogICAgICAgICAgICB3aGlsZSAoJHRoaXMtPnNjYW5DaGFySWYoQ2hhcmFjdGVyOjppc0hleCguLi4pKSkgewogICAgICAgICAgICAgICAgJHNlY29uZFJhbmdlTGVuZ3RoKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkc2Vjb25kUmFuZ2VMZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgaGV4IGRpZ2l0LicpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHNlY29uZFJhbmdlTGVuZ3RoID4gNikgewogICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdFeHBlY3RlZCBhdCBtb3N0IDYgZGlnaXRzLicsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc2Vjb25kUmFuZ2VTdGFydCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmxvb2tpbmdBdEludGVycG9sYXRlZElkZW50aWZpZXJCb2R5KCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCdFeHBlY3RlZCBlbmQgb2YgaWRlbnRpZmllci4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTdHJpbmdFeHByZXNzaW9uOjpwbGFpbigkdGhpcy0+c2Nhbm5lci0+c3Vic3RyaW5nKCRzdGFydCksICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgdmFyaWFibGUgZXhwcmVzc2lvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB2YXJpYWJsZSgpOiBWYXJpYWJsZUV4cHJlc3Npb24KICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkbmFtZSA9ICR0aGlzLT52YXJpYWJsZU5hbWUoKTsKCiAgICAgICAgaWYgKCR0aGlzLT5pc1BsYWluQ3NzKCkpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yKCdTYXNzIHZhcmlhYmxlcyBhcmVuXCd0IGFsbG93ZWQgaW4gcGxhaW4gQ1NTLicsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgVmFyaWFibGVFeHByZXNzaW9uKCRuYW1lLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIHNlbGVjdG9yIGV4cHJlc3Npb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2VsZWN0b3IoKTogU2VsZWN0b3JFeHByZXNzaW9uCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5pc1BsYWluQ3NzKCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmVycm9yKCJUaGUgcGFyZW50IHNlbGVjdG9yIGlzbid0IGFsbG93ZWQgaW4gcGxhaW4gQ1NTLiIsIG51bGwsIDEpOwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyYnKTsKCiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignJicpKSB7CiAgICAgICAgICAgICR0aGlzLT53YXJuKCdJbiBTYXNzLCAiJiYiIG1lYW5zIHR3byBjb3BpZXMgb2YgdGhlIHBhcmVudCBzZWxlY3Rvci4gWW91IHByb2JhYmx5IHdhbnQgdG8gdXNlICJhbmQiIGluc3RlYWQuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2V0UG9zaXRpb24oJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCkgLSAxKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgU2VsZWN0b3JFeHByZXNzaW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgcXVvdGVkIHN0cmluZyBleHByZXNzaW9uLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW50ZXJwb2xhdGVkU3RyaW5nKCk6IFN0cmluZ0V4cHJlc3Npb24KICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkcXVvdGUgPSAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKCiAgICAgICAgaWYgKCRxdW90ZSAhPT0gIiciICYmICRxdW90ZSAhPT0gJyInKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgc3RyaW5nLicsICRzdGFydCk7CiAgICAgICAgfQoKICAgICAgICAkYnVmZmVyID0gbmV3IEludGVycG9sYXRpb25CdWZmZXIoKTsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJHF1b3RlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG5leHQgPT09IG51bGwgfHwgQ2hhcmFjdGVyOjppc05ld2xpbmUoJG5leHQpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoIkV4cGVjdGVkICRxdW90ZS4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZXh0ID09PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAkc2Vjb25kID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpOwoKICAgICAgICAgICAgICAgIGlmIChDaGFyYWN0ZXI6OmlzTmV3bGluZSgkc2Vjb25kKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHNlY29uZCA9PT0gIlxyIikgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+ZXNjYXBlQ2hhcmFjdGVyKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJG5leHQgPT09ICcjJykgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKSA9PT0gJ3snKSB7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+YWRkKCR0aGlzLT5zaW5nbGVJbnRlcnBvbGF0aW9uKCkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZFV0ZjhDaGFyKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFN0cmluZ0V4cHJlc3Npb24oJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhbiBleHByZXNzaW9uIHRoYXQgc3RhcnRzIGxpa2UgYW4gaWRlbnRpZmllci4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlkZW50aWZpZXJMaWtlKCk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkaWRlbnRpZmllciA9ICR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCk7CiAgICAgICAgJHBsYWluID0gJGlkZW50aWZpZXItPmdldEFzUGxhaW4oKTsKCiAgICAgICAgaWYgKCRwbGFpbiAhPT0gbnVsbCkgewogICAgICAgICAgICBpZiAoJHBsYWluID09PSAnaWYnICYmICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpID09PSAnKCcpIHsKICAgICAgICAgICAgICAgICRpbnZvY2F0aW9uID0gJHRoaXMtPmFyZ3VtZW50SW52b2NhdGlvbigpOwoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSWZFeHByZXNzaW9uKCRpbnZvY2F0aW9uLCAkaWRlbnRpZmllci0+Z2V0U3BhbigpLT5leHBhbmQoJGludm9jYXRpb24tPmdldFNwYW4oKSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHBsYWluID09PSAnbm90JykgewogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICAgICAkZXhwcmVzc2lvbiA9ICR0aGlzLT5zaW5nbGVFeHByZXNzaW9uKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oVW5hcnlPcGVyYXRvcjo6Tk9ULCAkZXhwcmVzc2lvbiwgJGlkZW50aWZpZXItPmdldFNwYW4oKS0+ZXhwYW5kKCRleHByZXNzaW9uLT5nZXRTcGFuKCkpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxvd2VyID0gc3RydG9sb3dlcigkcGxhaW4pOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpICE9PSAnKCcpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJHBsYWluKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFsc2UnOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJvb2xlYW5FeHByZXNzaW9uKGZhbHNlLCAkaWRlbnRpZmllci0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICdudWxsJzoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOdWxsRXhwcmVzc2lvbigkaWRlbnRpZmllci0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgICAgICAgICBjYXNlICd0cnVlJzoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCb29sZWFuRXhwcmVzc2lvbih0cnVlLCAkaWRlbnRpZmllci0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkY29sb3IgPSBDb2xvcnM6OmNvbG9yTmFtZVRvQ29sb3IoJGxvd2VyKTsKCiAgICAgICAgICAgICAgICBpZiAoJGNvbG9yICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvckV4cHJlc3Npb24oCiAgICAgICAgICAgICAgICAgICAgICAgIFNhc3NDb2xvcjo6cmdiSW50ZXJuYWwoJGNvbG9yLT5nZXRSZWQoKSwgJGNvbG9yLT5nZXRHcmVlbigpLCAkY29sb3ItPmdldEJsdWUoKSwgJGNvbG9yLT5nZXRBbHBoYSgpLCBuZXcgU3BhbkNvbG9yRm9ybWF0KCRpZGVudGlmaWVyLT5nZXRTcGFuKCkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXItPmdldFNwYW4oKQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzcGVjaWFsRnVuY3Rpb24gPSAkdGhpcy0+dHJ5U3BlY2lhbEZ1bmN0aW9uKCRsb3dlciwgJHN0YXJ0KTsKCiAgICAgICAgICAgIGlmICgkc3BlY2lhbEZ1bmN0aW9uICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHNwZWNpYWxGdW5jdGlvbjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSkgewogICAgICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICcuJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nRXhwcmVzc2lvbigkaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgICAgICAgICAgaWYgKCRwbGFpbiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bmFtZXNwYWNlZEV4cHJlc3Npb24oJHBsYWluLCAkc3RhcnQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvcigiSW50ZXJwb2xhdGlvbiBpc24ndCBhbGxvd2VkIGluIG5hbWVzcGFjZXMuIiwgJGlkZW50aWZpZXItPmdldFNwYW4oKSk7CgogICAgICAgICAgICBjYXNlICcoJzoKICAgICAgICAgICAgICAgIGlmICgkcGxhaW4gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEludGVycG9sYXRlZEZ1bmN0aW9uRXhwcmVzc2lvbigkaWRlbnRpZmllciwgJHRoaXMtPmFyZ3VtZW50SW52b2NhdGlvbigpLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkV4cHJlc3Npb24oJHBsYWluLCAkdGhpcy0+YXJndW1lbnRJbnZvY2F0aW9uKGZhbHNlLCAkbG93ZXIgPT09ICd2YXInKSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nRXhwcmVzc2lvbigkaWRlbnRpZmllcik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gZXhwcmVzc2lvbiBhZnRlciBhIG5hbWVzcGFjZS4KICAgICAqCiAgICAgKiBUaGlzIGFzc3VtZXMgdGhlIHNjYW5uZXIgaXMgcG9zaXRpb25lZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgYC5gLiBUaGUKICAgICAqICRzdGFydCBzaG91bGQgcmVmZXIgdG8gdGhlIHN0YXRlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5hbWVzcGFjZS4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG5hbWVzcGFjZWRFeHByZXNzaW9uKHN0cmluZyAkbmFtZXNwYWNlLCBpbnQgJHN0YXJ0KTogRXhwcmVzc2lvbgogICAgewogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSA9PT0gJyQnKSB7CiAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPnZhcmlhYmxlTmFtZSgpOwogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0UHVibGljKCRuYW1lLCBmbigpID0+ICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKCiAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgd2hlbiBpbXBsZW1lbnRpbmcgbW9kdWxlcwogICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJ1Nhc3MgbW9kdWxlcyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4nLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgICAgIC8vIHJldHVybiBuZXcgVmFyaWFibGVFeHByZXNzaW9uKCRuYW1lLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSwgJHBsYWluKTsKICAgICAgICB9CgogICAgICAgIC8vIFRPRE8gcmVtb3ZlIHRoaXMgd2hlbiBpbXBsZW1lbnRpbmcgbW9kdWxlcwogICAgICAgICR0aGlzLT5wdWJsaWNJZGVudGlmaWVyKCk7CiAgICAgICAgJHRoaXMtPmVycm9yKCdTYXNzIG1vZHVsZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIC8vIHJldHVybiBuZXcgRnVuY3Rpb25FeHByZXNzaW9uKCR0aGlzLT5wdWJsaWNJZGVudGlmaWVyKCksICR0aGlzLT5hcmd1bWVudEludm9jYXRpb24oKSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCksICRwbGFpbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiAkbmFtZSBpcyB0aGUgbmFtZSBvZiBhIGZ1bmN0aW9uIHdpdGggc3BlY2lhbCBzeW50YXgsIGNvbnN1bWVzIGl0LgogICAgICoKICAgICAqIE90aGVyd2lzZSwgcmV0dXJucyBgbnVsbGAuICRzdGFydCBpcyB0aGUgbG9jYXRpb24gYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgJG5hbWUuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB0cnlTcGVjaWFsRnVuY3Rpb24oc3RyaW5nICRuYW1lLCBpbnQgJHN0YXJ0KTogP0V4cHJlc3Npb24KICAgIHsKICAgICAgICAkbm9ybWFsaXplZCA9IFV0aWw6OnVudmVuZG9yKCRuYW1lKTsKCiAgICAgICAgc3dpdGNoICgkbm9ybWFsaXplZCkgewogICAgICAgICAgICBjYXNlICdjYWxjJzoKICAgICAgICAgICAgICAgIGlmICgkbm9ybWFsaXplZCA9PT0gJG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBmYWxsIHRocm91Z2gKICAgICAgICAgICAgY2FzZSAnZWxlbWVudCc6CiAgICAgICAgICAgIGNhc2UgJ2V4cHJlc3Npb24nOgogICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJygnKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRidWZmZXIgPSBuZXcgSW50ZXJwb2xhdGlvbkJ1ZmZlcigpOwogICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJG5hbWUpOwogICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJygnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAncHJvZ2lkJzoKICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCc6JykpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYnVmZmVyID0gbmV3IEludGVycG9sYXRpb25CdWZmZXIoKTsKICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCRuYW1lKTsKICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCc6Jyk7CgogICAgICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoJG5leHQgIT09IG51bGwgJiYgKENoYXJhY3Rlcjo6aXNBbHBoYWJldGljKCRuZXh0KSB8fCAkbmV4dCA9PT0gJy4nKSkgewogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpKTsKICAgICAgICAgICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcoJyk7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnKCcpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICd1cmwnOgogICAgICAgICAgICAgICAgJGNvbnRlbnRzID0gJHRoaXMtPnRyeVVybENvbnRlbnRzKCRzdGFydCk7CgogICAgICAgICAgICAgICAgaWYgKCRjb250ZW50cyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nRXhwcmVzc2lvbigkY29udGVudHMpOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGJ1ZmZlci0+YWRkSW50ZXJwb2xhdGlvbigkdGhpcy0+aW50ZXJwb2xhdGVkRGVjbGFyYXRpb25WYWx1ZSh0cnVlKSk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKICAgICAgICAkYnVmZmVyLT53cml0ZSgnKScpOwoKICAgICAgICByZXR1cm4gbmV3IFN0cmluZ0V4cHJlc3Npb24oJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cnlVcmxDb250ZW50cyhpbnQgJHN0YXJ0LCA/c3RyaW5nICRuYW1lID0gbnVsbCk6ID9JbnRlcnBvbGF0aW9uCiAgICB7CiAgICAgICAgJGJlZ2lubmluZ09mQ29udGVudHMgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgaWYgKCEkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJygnKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2VXaXRob3V0Q29tbWVudHMoKTsKCiAgICAgICAgJGJ1ZmZlciA9IG5ldyBJbnRlcnBvbGF0aW9uQnVmZmVyKCk7CiAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJG5hbWUgPz8gJ3VybCcpOwogICAgICAgICRidWZmZXItPndyaXRlKCcoJyk7CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgICAgICBpZiAoJG5leHQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG5leHQgPT09ICdcXCcpIHsKICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5lc2NhcGUoKSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkbmV4dCA9PT0gJyEnIHx8ICRuZXh0ID09PSAnJScgfHwgJG5leHQgPT09ICcmJyB8fCAoXG9yZCgkbmV4dCkgPj0gXG9yZCgnKicpICYmIFxvcmQoJG5leHQpIDw9IFxvcmQoJ34nKSkgfHwgXG9yZCgkbmV4dCkgPj0gMHg4MCkgewogICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRVdGY4Q2hhcigpKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRuZXh0ID09PSAnIycpIHsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICd7JykgewogICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZCgkdGhpcy0+c2luZ2xlSW50ZXJwb2xhdGlvbigpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJG5leHQpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZVdpdGhvdXRDb21tZW50cygpOwoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSAhPT0gJyknKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkbmV4dCA9PT0gJyknKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRidWZmZXItPmJ1aWxkSW50ZXJwb2xhdGlvbigkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNldFBvc2l0aW9uKCRiZWdpbm5pbmdPZkNvbnRlbnRzKTsKCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGB1cmxgIHRva2VuIHRoYXQncyBhbGxvd2VkIHRvIGNvbnRhaW4gU2Fzc1NjcmlwdC4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGR5bmFtaWNVcmwoKTogRXhwcmVzc2lvbgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICR0aGlzLT5leHBlY3RJZGVudGlmaWVyKCd1cmwnKTsKCiAgICAgICAgJGNvbnRlbnRzID0gJHRoaXMtPnRyeVVybENvbnRlbnRzKCRzdGFydCk7CgogICAgICAgIGlmICgkY29udGVudHMgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdFeHByZXNzaW9uKCRjb250ZW50cyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEludGVycG9sYXRlZEZ1bmN0aW9uRXhwcmVzc2lvbihuZXcgSW50ZXJwb2xhdGlvbihbJ3VybCddLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSksICR0aGlzLT5hcmd1bWVudEludm9jYXRpb24oKSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgdG9rZW5zIHVwIHRvICJ7IiwgIn0iLCAiOyIsIG9yICIhIi4KICAgICAqCiAgICAgKiBUaGlzIHJlc3BlY3RzIHN0cmluZyBhbmQgY29tbWVudCBib3VuZGFyaWVzIGFuZCBzdXBwb3J0cyBpbnRlcnBvbGF0aW9uLgogICAgICogT25jZSB0aGlzIGludGVycG9sYXRpb24gaXMgZXZhbHVhdGVkLCBpdCdzIGV4cGVjdGVkIHRvIGJlIHJlLXBhcnNlZC4KICAgICAqCiAgICAgKiBJZiAkb21pdENvbW1lbnRzIGlzIHRydWUsIGNvbW1lbnRzIHdpbGwgc3RpbGwgYmUgY29uc3VtZWQsIGJ1dCB0aGV5IHdpbGwKICAgICAqIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgaW50ZXJwb2xhdGlvbi4KICAgICAqCiAgICAgKiBEaWZmZXJlbmNlcyBmcm9tIHtAc2VlIGludGVycG9sYXRlZERlY2xhcmF0aW9uVmFsdWV9IGluY2x1ZGU6CiAgICAgKgogICAgICogLSBUaGlzIGFsd2F5cyBzdG9wcyBhdCBjdXJseSBicmFjZXMuCiAgICAgKiAtIFRoaXMgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLCBzaW5jZSB0aGUgdGV4dCBpcyBleHBlY3RlZCB0byBiZQogICAgICogICByZS1wYXJzZWQuCiAgICAgKiAtIFRoaXMgZG9lcyBub3QgY29tcHJlc3MgYWRqYWNlbnQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxtb3N0QW55VmFsdWUoYm9vbCAkb21pdENvbW1lbnRzID0gZmFsc2UpOiBJbnRlcnBvbGF0aW9uCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJGJ1ZmZlciA9IG5ldyBJbnRlcnBvbGF0aW9uQnVmZmVyKCk7CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgICAgICBzd2l0Y2ggKCRuZXh0KSB7CiAgICAgICAgICAgICAgICBjYXNlICdcXCc6CiAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGUgYSBsaXRlcmFsIGJhY2tzbGFzaCBiZWNhdXNlIHRoaXMgdGV4dCB3aWxsIGJlIHJlLXBhcnNlZC4KICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRVdGY4Q2hhcigpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICciJzoKICAgICAgICAgICAgICAgIGNhc2UgIiciOgogICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJHRoaXMtPmludGVycG9sYXRlZFN0cmluZygpLT5hc0ludGVycG9sYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnKic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRvbWl0Q29tbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+cmF3VGV4dCgkdGhpcy0+bG91ZENvbW1lbnQoLi4uKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bG91ZENvbW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRvbWl0Q29tbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+cmF3VGV4dCgkdGhpcy0+c2lsZW50Q29tbWVudCguLi4pKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zaWxlbnRDb21tZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJyMnOgogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICd7JykgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgYSBmdWxsIGludGVycG9sYXRlZCBpZGVudGlmaWVyIHRvIGhhbmRsZSBjYXNlcyBsaWtlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vICIjey4uLn0tLTEiLCBzaW5jZSAiLS0xIiBpc24ndCBhIHZhbGlkIGlkZW50aWZpZXIgb24gaXRzIG93bi4KICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+YWRkSW50ZXJwb2xhdGlvbigkdGhpcy0+aW50ZXJwb2xhdGVkSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgIlxyIjoKICAgICAgICAgICAgICAgIGNhc2UgIlxuIjoKICAgICAgICAgICAgICAgIGNhc2UgIlxmIjoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmlzSW5kZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhayAyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnISc6CiAgICAgICAgICAgICAgICBjYXNlICc7JzoKICAgICAgICAgICAgICAgIGNhc2UgJ3snOgogICAgICAgICAgICAgICAgY2FzZSAnfSc6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKCiAgICAgICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgICAgIGNhc2UgJ1UnOgogICAgICAgICAgICAgICAgICAgICRiZWZvcmVVcmwgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciA9ICR0aGlzLT5pZGVudGlmaWVyKCk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgIT09ICd1cmwnCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXNuJ3QgYWN0dWFsbHkgYSBzdGFuZGFyZCBDU1MgZmVhdHVyZSwgYnV0IGl0IHdhcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBzdXBwb3J0ZWQgYnkgdGhlIG9sZCBgQGRvY3VtZW50YCBydWxlLCBzbyB3ZSBjb250aW51ZSB0byBzdXBwb3J0CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS4KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlkZW50aWZpZXIgIT09ICd1cmwtcHJlZml4JwogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkY29udGVudHMgPSAkdGhpcy0+dHJ5VXJsQ29udGVudHMoJGJlZm9yZVVybCwgJGlkZW50aWZpZXIpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbnRlbnRzID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5zZXRQb3NpdGlvbigkYmVmb3JlVXJsKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJGNvbnRlbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpZiAoJG5leHQgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bG9va2luZ0F0SWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5zY2FubmVyLT5yZWFkVXRmOENoYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIHRva2VucyB1bnRpbCBpdCByZWFjaGVzIGEgdG9wLWxldmVsIGAiOyJgLCBgIikiYCwgYCJdImAsCiAgICAgKiBvciBgIn0iYCBhbmQgcmV0dXJucyB0aGVpciBjb250ZW50cyBhcyBhIHN0cmluZy4KICAgICAqCiAgICAgKiBJZiAkYWxsb3dFbXB0eSBpcyBgZmFsc2VgICh0aGUgZGVmYXVsdCksIHRoaXMgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHRva2VuLgogICAgICoKICAgICAqIElmICRhbGxvd1NlbWljb2xvbiBpcyBgdHJ1ZWAsIHRoaXMgZG9lc24ndCBzdG9wIGF0IHNlbWljb2xvbnMgYW5kIGluc3RlYWQKICAgICAqIGluY2x1ZGVzIHRoZW0gaW4gdGhlIGludGVycG9sYXRlZCBvdXRwdXQuCiAgICAgKgogICAgICogSWYgJGFsbG93Q29sb24gaXMgYGZhbHNlYCwgdGhpcyBzdG9wcyBhdCB0b3AtbGV2ZWwgY29sb25zLgogICAgICoKICAgICAqIElmICRhbGxvd09wZW5CcmFjZSBpcyBgZmFsc2VgLCB0aGlzIHN0b3BzIGF0IG9wZW5pbmcgY3VybHkgYnJhY2VzLgogICAgICoKICAgICAqIElmICRzaWxlbnRDb21tZW50cyBpcyBgdHJ1ZWAsIHRoaXMgd2lsbCBwYXJzZSBzaWxlbnQgY29tbWVudHMgYXMKICAgICAqIGNvbW1lbnRzLiBPdGhlcndpc2UsIGl0IHdpbGwgcHJlc2VydmUgdHdvIGFkamFjZW50IHNsYXNoZXMgYW5kIGVtaXQgdGhlbQogICAgICogdG8gQ1NTLgogICAgICoKICAgICAqIFVubGlrZSB7QHNlZSBkZWNsYXJhdGlvblZhbHVlfSwgdGhpcyBhbGxvd3MgaW50ZXJwb2xhdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbnRlcnBvbGF0ZWREZWNsYXJhdGlvblZhbHVlKGJvb2wgJGFsbG93RW1wdHkgPSBmYWxzZSwgYm9vbCAkYWxsb3dTZW1pY29sb24gPSBmYWxzZSwgYm9vbCAkYWxsb3dDb2xvbiA9IHRydWUsIGJvb2wgJGFsbG93T3BlbkJyYWNlID0gdHJ1ZSwgYm9vbCAkc2lsZW50Q29tbWVudHMgPSB0cnVlKTogSW50ZXJwb2xhdGlvbgogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRidWZmZXIgPSBuZXcgSW50ZXJwb2xhdGlvbkJ1ZmZlcigpOwogICAgICAgICRicmFja2V0cyA9IFtdOwogICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHN3aXRjaCAoJG5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ1xcJzoKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+ZXNjYXBlKHRydWUpKTsKICAgICAgICAgICAgICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnIic6CiAgICAgICAgICAgICAgICBjYXNlICInIjoKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5pbnRlcnBvbGF0ZWRTdHJpbmcoKS0+YXNJbnRlcnBvbGF0aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcvJzoKICAgICAgICAgICAgICAgICAgICAkcGVla2VkQ2hhciA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRwZWVrZWRDaGFyID09PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnJhd1RleHQoJHRoaXMtPmxvdWRDb21tZW50KC4uLikpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHBlZWtlZENoYXIgPT09ICcvJyAmJiAkc2lsZW50Q29tbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNpbGVudENvbW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcjJzoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpID09PSAneycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEgZnVsbCBpbnRlcnBvbGF0ZWQgaWRlbnRpZmllciB0byBoYW5kbGUgY2FzZXMgbGlrZQogICAgICAgICAgICAgICAgICAgICAgICAvLyAiI3suLi59LS0xIiwgc2luY2UgIi0tMSIgaXNuJ3QgYSB2YWxpZCBpZGVudGlmaWVyIG9uIGl0cyBvd24uCiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJHRoaXMtPmludGVycG9sYXRlZElkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnICc6CiAgICAgICAgICAgICAgICBjYXNlICJcdCI6CiAgICAgICAgICAgICAgICAgICAgJHNlY29uZCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJHdyb3RlTmV3bGluZSB8fCAkc2Vjb25kID09PSBudWxsIHx8ICFDaGFyYWN0ZXI6OmlzV2hpdGVzcGFjZSgkc2Vjb25kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+c2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgIlxuIjoKICAgICAgICAgICAgICAgIGNhc2UgIlxyIjoKICAgICAgICAgICAgICAgIGNhc2UgIlxmIjoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmlzSW5kZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhayAyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcHJldiA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigtMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRwcmV2ID09PSBudWxsIHx8ICFDaGFyYWN0ZXI6OmlzTmV3bGluZSgkcHJldikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3snOgogICAgICAgICAgICAgICAgICAgIGlmICghJGFsbG93T3BlbkJyYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIDI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyBGYWxsdGhyb3VnaAogICAgICAgICAgICAgICAgY2FzZSAnKCc6CiAgICAgICAgICAgICAgICBjYXNlICdbJzoKICAgICAgICAgICAgICAgICAgICAkYnJhY2tldCA9ICR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCRicmFja2V0KTsKICAgICAgICAgICAgICAgICAgICAkYnJhY2tldHNbXSA9IENoYXJhY3Rlcjo6b3Bwb3NpdGUoJGJyYWNrZXQpOwogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcpJzoKICAgICAgICAgICAgICAgIGNhc2UgJ30nOgogICAgICAgICAgICAgICAgY2FzZSAnXSc6CiAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRicmFja2V0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRicmFja2V0ID0gYXJyYXlfcG9wKCRicmFja2V0cyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJGJyYWNrZXQpOwogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCRicmFja2V0KTsKICAgICAgICAgICAgICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnOyc6CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkYWxsb3dTZW1pY29sb24gJiYgZW1wdHkoJGJyYWNrZXRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhayAyOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICc6JzoKICAgICAgICAgICAgICAgICAgICBpZiAoISRhbGxvd0NvbG9uICYmIGVtcHR5KCRicmFja2V0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5zY2FubmVyLT5yZWFkQ2hhcigpKTsKICAgICAgICAgICAgICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgICAgICAgICAkYmVmb3JlVXJsID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgPSAkdGhpcy0+aWRlbnRpZmllcigpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRpZGVudGlmaWVyICE9PSAndXJsJwogICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzbid0IGFjdHVhbGx5IGEgc3RhbmRhcmQgQ1NTIGZlYXR1cmUsIGJ1dCBpdCB3YXMKICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9ydGVkIGJ5IHRoZSBvbGQgYEBkb2N1bWVudGAgcnVsZSwgc28gd2UgY29udGludWUgdG8gc3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkuCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpZGVudGlmaWVyICE9PSAndXJsLXByZWZpeCcKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJGlkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAkd3JvdGVOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkY29udGVudHMgPSAkdGhpcy0+dHJ5VXJsQ29udGVudHMoJGJlZm9yZVVybCwgJGlkZW50aWZpZXIpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbnRlbnRzID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5zZXRQb3NpdGlvbigkYmVmb3JlVXJsKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJGNvbnRlbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bG9va2luZ0F0SWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5zY2FubmVyLT5yZWFkVXRmOENoYXIoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3cm90ZU5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkYnJhY2tldHMpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKGFycmF5X3BvcCgkYnJhY2tldHMpKTsKICAgICAgICB9CgogICAgICAgIGlmICghJGFsbG93RW1wdHkgJiYgJGJ1ZmZlci0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgdG9rZW4uJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGlkZW50aWZpZXIgdGhhdCBtYXkgY29udGFpbiBpbnRlcnBvbGF0aW9uLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW50ZXJwb2xhdGVkSWRlbnRpZmllcigpOiBJbnRlcnBvbGF0aW9uCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJGJ1ZmZlciA9IG5ldyBJbnRlcnBvbGF0aW9uQnVmZmVyKCk7CgogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJy0nKSkgewogICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnLScpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignLScpKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnLScpOwogICAgICAgICAgICAgICAgJHRoaXMtPmludGVycG9sYXRlZElkZW50aWZpZXJCb2R5KCRidWZmZXIpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkYnVmZmVyLT5idWlsZEludGVycG9sYXRpb24oJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkZmlyc3QgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgaWYgKCRmaXJzdCA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGlkZW50aWZpZXIuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc05hbWVTdGFydCgkZmlyc3QpKSB7CiAgICAgICAgICAgICRidWZmZXItPndyaXRlKCR0aGlzLT5zY2FubmVyLT5yZWFkVXRmOENoYXIoKSk7CiAgICAgICAgfSBlbHNlaWYgKCRmaXJzdCA9PT0gJ1xcJykgewogICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+ZXNjYXBlKHRydWUpKTsKICAgICAgICB9IGVsc2VpZiAoJGZpcnN0ID09PSAnIycgJiYgJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpID09PSAneycpIHsKICAgICAgICAgICAgJGJ1ZmZlci0+YWRkKCR0aGlzLT5zaW5nbGVJbnRlcnBvbGF0aW9uKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5lcnJvcignRXhwZWN0ZWQgaWRlbnRpZmllci4nKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyQm9keSgkYnVmZmVyKTsKCiAgICAgICAgcmV0dXJuICRidWZmZXItPmJ1aWxkSW50ZXJwb2xhdGlvbigkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBhIGNodW5rIG9mIGEgcG9zc2libHktaW50ZXJwb2xhdGVkIENTUyBpZGVudGlmaWVyIGFmdGVyIHRoZSBuYW1lCiAgICAgKiBzdGFydCwgYW5kIGFkZHMgdGhlIGNvbnRlbnRzIHRvIHRoZSAkYnVmZmVyIGJ1ZmZlci4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbnRlcnBvbGF0ZWRJZGVudGlmaWVyQm9keShJbnRlcnBvbGF0aW9uQnVmZmVyICRidWZmZXIpOiB2b2lkCiAgICB7CiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJ18nIHx8ICRuZXh0ID09PSAnLScgfHwgQ2hhcmFjdGVyOjppc0FscGhhbnVtZXJpYygkbmV4dCkgfHwgXG9yZCgkbmV4dCkgPj0gMHg4MCkgewogICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRVdGY4Q2hhcigpKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRuZXh0ID09PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgkdGhpcy0+ZXNjYXBlKCkpOwogICAgICAgICAgICB9IGVsc2VpZiAoJG5leHQgPT09ICcjJyAmJiAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICd7JykgewogICAgICAgICAgICAgICAgJGJ1ZmZlci0+YWRkKCR0aGlzLT5zaW5nbGVJbnRlcnBvbGF0aW9uKCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdW1lcyBpbnRlcnBvbGF0aW9uLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2luZ2xlSW50ZXJwb2xhdGlvbigpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3QoJyN7Jyk7CgogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICRjb250ZW50cyA9ICR0aGlzLT5leHByZXNzaW9uKCk7CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCd9Jyk7CgogICAgICAgIGlmICgkdGhpcy0+aXNQbGFpbkNzcygpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcignSW50ZXJwb2xhdGlvbiBpc25cJ3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MuJywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjb250ZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgbGlzdCBvZiBtZWRpYSBxdWVyaWVzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1lZGlhUXVlcnlMaXN0KCk6IEludGVycG9sYXRpb24KICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkYnVmZmVyID0gbmV3IEludGVycG9sYXRpb25CdWZmZXIoKTsKCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJHRoaXMtPm1lZGlhUXVlcnkoJGJ1ZmZlcik7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICBpZiAoISR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignLCcpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJywgJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJ1ZmZlci0+YnVpbGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgc2luZ2xlIG1lZGlhIHF1ZXJ5LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1lZGlhUXVlcnkoSW50ZXJwb2xhdGlvbkJ1ZmZlciAkYnVmZmVyKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSA9PT0gJygnKSB7CiAgICAgICAgICAgICR0aGlzLT5tZWRpYUluUGFyZW5zKCRidWZmZXIpOwogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FuSWRlbnRpZmllcignYW5kJykpIHsKICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcgYW5kICcpOwogICAgICAgICAgICAgICAgJHRoaXMtPmV4cGVjdFdoaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICR0aGlzLT5tZWRpYUxvZ2ljU2VxdWVuY2UoJGJ1ZmZlciwgJ2FuZCcpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdvcicpKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnIG9yICcpOwogICAgICAgICAgICAgICAgJHRoaXMtPmV4cGVjdFdoaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICR0aGlzLT5tZWRpYUxvZ2ljU2VxdWVuY2UoJGJ1ZmZlciwgJ29yJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRpZGVudGlmaWVyMSA9ICR0aGlzLT5pbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCk7CgogICAgICAgIGlmIChTdHJpbmdVdGlsOjplcXVhbHNJZ25vcmVDYXNlKCRpZGVudGlmaWVyMS0+Z2V0QXNQbGFpbigpLCAnbm90JykpIHsKICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICJAbWVkaWEgbm90ICguLi4pIHsiCiAgICAgICAgICAgICR0aGlzLT5leHBlY3RXaGl0ZXNwYWNlKCk7CgogICAgICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCdub3QgJyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+bWVkaWFPckludGVycCgkYnVmZmVyKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgJGJ1ZmZlci0+YWRkSW50ZXJwb2xhdGlvbigkaWRlbnRpZmllcjEpOwoKICAgICAgICBpZiAoISR0aGlzLT5sb29raW5nQXRJbnRlcnBvbGF0ZWRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICJAbWVkaWEgc2NyZWVuIHsiLgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkYnVmZmVyLT53cml0ZSgnICcpOwoKICAgICAgICAkaWRlbnRpZmllcjIgPSAkdGhpcy0+aW50ZXJwb2xhdGVkSWRlbnRpZmllcigpOwoKICAgICAgICBpZiAoU3RyaW5nVXRpbDo6ZXF1YWxzSWdub3JlQ2FzZSgkaWRlbnRpZmllcjItPmdldEFzUGxhaW4oKSwgJ2FuZCcpKSB7CiAgICAgICAgICAgICR0aGlzLT5leHBlY3RXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCAiQG1lZGlhIHNjcmVlbiBhbmQgLi4uIgogICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnIGFuZCAnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAkYnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCRpZGVudGlmaWVyMik7CgogICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdhbmQnKSkgewogICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICJAbWVkaWEgb25seSBzY3JlZW4gYW5kIC4uLiIKICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnIGFuZCAnKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCAiQG1lZGlhIG9ubHkgc2NyZWVuIHsiCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFdlJ3ZlIGNvbnN1bWVkIGVpdGhlciBgSURFTlRJRklFUiAiYW5kImAgb3IKICAgICAgICAvLyBgSURFTlRJRklFUiBJREVOVElGSUVSICJhbmQiYC4KCiAgICAgICAgaWYgKCR0aGlzLT5zY2FuSWRlbnRpZmllcignbm90JykpIHsKICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICJAbWVkaWEgc2NyZWVuIGFuZCBub3QgKC4uLikgeyIKICAgICAgICAgICAgJHRoaXMtPmV4cGVjdFdoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJ25vdCAnKTsKICAgICAgICAgICAgJHRoaXMtPm1lZGlhT3JJbnRlcnAoJGJ1ZmZlcik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5tZWRpYUxvZ2ljU2VxdWVuY2UoJGJ1ZmZlciwgJ2FuZCcpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgb25lIG9yIG1vcmUgYE1lZGlhT3JJbnRlcnBgIGV4cHJlc3Npb25zIHNlcGFyYXRlZCBieSAkb3BlcmF0b3IKICAgICAqIGFuZCB3cml0ZXMgdGhlbSB0byAkYnVmZmVyLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1lZGlhTG9naWNTZXF1ZW5jZShJbnRlcnBvbGF0aW9uQnVmZmVyICRidWZmZXIsIHN0cmluZyAkb3BlcmF0b3IpOiB2b2lkCiAgICB7CiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgJHRoaXMtPm1lZGlhT3JJbnRlcnAoJGJ1ZmZlcik7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICBpZiAoISR0aGlzLT5zY2FuSWRlbnRpZmllcigkb3BlcmF0b3IpKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmV4cGVjdFdoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcgJyk7CiAgICAgICAgICAgICRidWZmZXItPndyaXRlKCRvcGVyYXRvcik7CiAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcgJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgTWVkaWFPckludGVycGAgZXhwcmVzc2lvbiBhbmQgd3JpdGVzIGl0IHRvICRidWZmZXIuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWVkaWFPckludGVycChJbnRlcnBvbGF0aW9uQnVmZmVyICRidWZmZXIpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpID09PSAnIycpIHsKICAgICAgICAgICAgJGludGVycG9sYXRpb24gPSAkdGhpcy0+c2luZ2xlSW50ZXJwb2xhdGlvbigpOwoKICAgICAgICAgICAgJGJ1ZmZlci0+YWRkSW50ZXJwb2xhdGlvbihuZXcgSW50ZXJwb2xhdGlvbihbJGludGVycG9sYXRpb25dLCAkaW50ZXJwb2xhdGlvbi0+Z2V0U3BhbigpKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPm1lZGlhSW5QYXJlbnMoJGJ1ZmZlcik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgTWVkaWFJblBhcmVuc2AgZXhwcmVzc2lvbiBhbmQgd3JpdGVzIGl0IHRvICRidWZmZXIuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWVkaWFJblBhcmVucyhJbnRlcnBvbGF0aW9uQnVmZmVyICRidWZmZXIpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJygnLCAnbWVkaWEgY29uZGl0aW9uIGluIHBhcmVudGhlc2VzJyk7CiAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJygnKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCkgPT09ICcoJykgewogICAgICAgICAgICAkdGhpcy0+bWVkaWFJblBhcmVucygkYnVmZmVyKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2NhbklkZW50aWZpZXIoJ2FuZCcpKSB7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnIGFuZCAnKTsKICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+bWVkaWFMb2dpY1NlcXVlbmNlKCRidWZmZXIsICdhbmQnKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5zY2FuSWRlbnRpZmllcignb3InKSkgewogICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJyBvciAnKTsKICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+bWVkaWFMb2dpY1NlcXVlbmNlKCRidWZmZXIsICdvcicpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5zY2FuSWRlbnRpZmllcignbm90JykpIHsKICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJ25vdCAnKTsKICAgICAgICAgICAgJHRoaXMtPmV4cGVjdFdoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJHRoaXMtPm1lZGlhT3JJbnRlcnAoJGJ1ZmZlcik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGJ1ZmZlci0+YWRkKCR0aGlzLT5leHByZXNzaW9uVW50aWxDb21wYXJpc29uKCkpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignOicpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJzogJyk7CiAgICAgICAgICAgICAgICAkYnVmZmVyLT5hZGQoJHRoaXMtPmV4cHJlc3Npb24oKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJzwnIHx8ICRuZXh0ID09PSAnPicgfHwgJG5leHQgPT09ICc9JykgewogICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCcgJyk7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJHRoaXMtPnNjYW5uZXItPnJlYWRDaGFyKCkpOwogICAgICAgICAgICAgICAgICAgIGlmICgoJG5leHQgPT09ICc8JyB8fCAkbmV4dCA9PT0gJz4nKSAmJiAkdGhpcy0+c2Nhbm5lci0+c2NhbkNoYXIoJz0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnPScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkYnVmZmVyLT53cml0ZSgnICcpOwoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZCgkdGhpcy0+ZXhwcmVzc2lvblVudGlsQ29tcGFyaXNvbigpKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCgkbmV4dCA9PT0gJzwnIHx8ICRuZXh0ID09PSAnPicpICYmICR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcigkbmV4dCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJyAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJG5leHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNjYW5uZXItPnNjYW5DaGFyKCc9JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPndyaXRlKCc9Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlci0+d3JpdGUoJyAnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXItPmFkZCgkdGhpcy0+ZXhwcmVzc2lvblVudGlsQ29tcGFyaXNvbigpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAkYnVmZmVyLT53cml0ZSgnKScpOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYW4gZXhwcmVzc2lvbiB1bnRpbCBpdCByZWFjaGVzIGEgdG9wLWxldmVsIGA8YCwgYD5gLCBvciBhIGA9YAogICAgICogdGhhdCdzIG5vdCBgPT1gLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4cHJlc3Npb25VbnRpbENvbXBhcmlzb24oKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZXhwcmVzc2lvbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICRuZXh0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgICAgICBpZiAoJG5leHQgPT09ICc9JykgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKSAhPT0gJz0nOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJG5leHQgPT09ICc8JyB8fCAkbmV4dCA9PT0gJz4nOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBgQHN1cHBvcnRzYCBjb25kaXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc3VwcG9ydHNDb25kaXRpb24oKTogU3VwcG9ydHNDb25kaXRpb24KICAgIHsKICAgICAgICAkc3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKCiAgICAgICAgaWYgKCR0aGlzLT5zY2FuSWRlbnRpZmllcignbm90JykpIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgU3VwcG9ydHNOZWdhdGlvbigkdGhpcy0+c3VwcG9ydHNDb25kaXRpb25JblBhcmVucygpLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgfQoKICAgICAgICAkY29uZGl0aW9uID0gJHRoaXMtPnN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnMoKTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICRvcGVyYXRvciA9IG51bGw7CgogICAgICAgIHdoaWxlICgkdGhpcy0+bG9va2luZ0F0SWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgIGlmICgkb3BlcmF0b3IgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5leHBlY3RJZGVudGlmaWVyKCRvcGVyYXRvcik7CiAgICAgICAgICAgIH0gZWxzZWlmICgkdGhpcy0+c2NhbklkZW50aWZpZXIoJ29yJykpIHsKICAgICAgICAgICAgICAgICRvcGVyYXRvciA9ICdvcic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXhwZWN0SWRlbnRpZmllcignYW5kJyk7CiAgICAgICAgICAgICAgICAkb3BlcmF0b3IgPSAnYW5kJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJHJpZ2h0ID0gJHRoaXMtPnN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnMoKTsKCiAgICAgICAgICAgICRjb25kaXRpb24gPSBuZXcgU3VwcG9ydHNPcGVyYXRpb24oJGNvbmRpdGlvbiwgJHJpZ2h0LCAkb3BlcmF0b3IsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29uZGl0aW9uOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZXMgYSBwYXJlbnRoZXNpemVkIHN1cHBvcnRzIGNvbmRpdGlvbiwgb3IgYW4gaW50ZXJwb2xhdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzdXBwb3J0c0NvbmRpdGlvbkluUGFyZW5zKCk6IFN1cHBvcnRzQ29uZGl0aW9uCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CgogICAgICAgIGlmICgkdGhpcy0+bG9va2luZ0F0SW50ZXJwb2xhdGVkSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICRpZGVudGlmaWVyID0gJHRoaXMtPmludGVycG9sYXRlZElkZW50aWZpZXIoKTsKCiAgICAgICAgICAgIGlmICgkaWRlbnRpZmllci0+Z2V0QXNQbGFpbigpICE9PSBudWxsICYmIHN0cnRvbG93ZXIoJGlkZW50aWZpZXItPmdldEFzUGxhaW4oKSkgPT09ICdub3QnKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJyJub3QiIGlzIG5vdCBhIHZhbGlkIGlkZW50aWZpZXIgaGVyZS4nLCAkaWRlbnRpZmllci0+Z2V0U3BhbigpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5zY2FuQ2hhcignKCcpKSB7CiAgICAgICAgICAgICAgICAkYXJndW1lbnRzID0gJHRoaXMtPmludGVycG9sYXRlZERlY2xhcmF0aW9uVmFsdWUodHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignKScpOwoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3VwcG9ydHNGdW5jdGlvbigkaWRlbnRpZmllciwgJGFyZ3VtZW50cywgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXGNvdW50KCRpZGVudGlmaWVyLT5nZXRDb250ZW50cygpKSAhPT0gMSB8fCAhJGlkZW50aWZpZXItPmdldENvbnRlbnRzKClbMF0gaW5zdGFuY2VvZiBFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3IoJ0V4cGVjdGVkIEBzdXBwb3J0cyBjb25kaXRpb24uJywgJGlkZW50aWZpZXItPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN1cHBvcnRzSW50ZXJwb2xhdGlvbigkaWRlbnRpZmllci0+Z2V0Q29udGVudHMoKVswXSwgJGlkZW50aWZpZXItPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcoJyk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgaWYgKCR0aGlzLT5zY2FuSWRlbnRpZmllcignbm90JykpIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJGNvbmRpdGlvbiA9ICR0aGlzLT5zdXBwb3J0c0NvbmRpdGlvbkluUGFyZW5zKCk7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCcpJyk7CgogICAgICAgICAgICByZXR1cm4gbmV3IFN1cHBvcnRzTmVnYXRpb24oJGNvbmRpdGlvbiwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpID09PSAnKCcpIHsKICAgICAgICAgICAgJGNvbmRpdGlvbiA9ICR0aGlzLT5zdXBwb3J0c0NvbmRpdGlvbigpOwogICAgICAgICAgICAkdGhpcy0+c2Nhbm5lci0+ZXhwZWN0Q2hhcignKScpOwoKICAgICAgICAgICAgcmV0dXJuICRjb25kaXRpb247CiAgICAgICAgfQoKICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBtYXkgaGF2ZSB0byBiYWNrdHJhY2sgaGVyZS4gVGhlIGdyYW1tYXIgaXM6CiAgICAgICAgLy8KICAgICAgICAvLyAgICAgICBFeHByZXNzaW9uICI6IiBFeHByZXNzaW9uCiAgICAgICAgLy8gICAgIHwgSW50ZXJwb2xhdGVkSWRlbnRpZmllciBJbnRlcnBvbGF0ZWRBbnlWYWx1ZT8KICAgICAgICAvLwogICAgICAgIC8vIFRoZXNlIGFyZW4ndCBhbWJpZ3VvdXMgYmVjYXVzZSB0aGlzIGBJbnRlcnBvbGF0ZWRBbnlWYWx1ZWAgaXMgZm9yYmlkZGVuCiAgICAgICAgLy8gZnJvbSBjb250YWluaW5nIGEgdG9wLWxldmVsIGNvbG9uLCBidXQgd2Ugc3RpbGwgaGF2ZSB0byBwYXJzZSB0aGUgZnVsbAogICAgICAgIC8vIGV4cHJlc3Npb24gdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgY29sb24gYWZ0ZXIgaXQuCiAgICAgICAgLy8KICAgICAgICAvLyBXZSBjb3VsZCBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgYSBmdWxsIGV4cHJlc3Npb24gcGFyc2UgYnkgbG9va2luZyBhaGVhZAogICAgICAgIC8vIGZvciBhIGNvbG9uIChvdXRzaWRlIG9mIGJhbGFuY2VkIGJyYWNrZXRzKSwgYnV0IGluIHByYWN0aWNlIHdlIGV4cGVjdCB0aGUKICAgICAgICAvLyB2YXN0IG1ham9yaXR5IG9mIHJlYWwgdXNlcyB0byBiZSBgRXhwcmVzc2lvbiAiOiIgRXhwcmVzc2lvbmAsIHNvIGl0IG1ha2VzCiAgICAgICAgLy8gc2Vuc2UgdG8gcGFyc2UgdGhhdCBjYXNlIGZhc3RlciBpbiBleGNoYW5nZSBmb3IgbGVzcyBjb2RlIGNvbXBsZXhpdHkgYW5kCiAgICAgICAgLy8gYSBzbG93ZXIgYmFja3RyYWNraW5nIGNhc2UuCgogICAgICAgICRuYW1lU3RhcnQgPSAkdGhpcy0+c2Nhbm5lci0+Z2V0UG9zaXRpb24oKTsKICAgICAgICAkd2FzSW5QYXJlbnRoZXNlcyA9ICR0aGlzLT5pblBhcmVudGhlc2VzOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkbmFtZSA9ICR0aGlzLT5leHByZXNzaW9uKCk7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5leHBlY3RDaGFyKCc6Jyk7CiAgICAgICAgfSBjYXRjaCAoRm9ybWF0RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2FubmVyLT5zZXRQb3NpdGlvbigkbmFtZVN0YXJ0KTsKICAgICAgICAgICAgJHRoaXMtPmluUGFyZW50aGVzZXMgPSAkd2FzSW5QYXJlbnRoZXNlczsKCiAgICAgICAgICAgICRpZGVudGlmaWVyID0gJHRoaXMtPmludGVycG9sYXRlZElkZW50aWZpZXIoKTsKICAgICAgICAgICAgJG9wZXJhdGlvbiA9ICR0aGlzLT50cnlTdXBwb3J0c09wZXJhdGlvbigkaWRlbnRpZmllciwgJG5hbWVTdGFydCk7CgogICAgICAgICAgICBpZiAoJG9wZXJhdGlvbiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJG9wZXJhdGlvbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gSWYgcGFyc2luZyBhbiBleHByZXNzaW9uIGZhaWxzLCB0cnkgdG8gcGFyc2UgYW4KICAgICAgICAgICAgLy8gYEludGVycG9sYXRlZEFueVZhbHVlYCBpbnN0ZWFkLiBCdXQgaWYgdGhhdCB2YWx1ZSBydW5zIGludG8gYQogICAgICAgICAgICAvLyB0b3AtbGV2ZWwgY29sb24sIHRoZW4gdGhpcyBpcyBwcm9iYWJseSBpbnRlbmRlZCB0byBiZSBhIGRlY2xhcmF0aW9uCiAgICAgICAgICAgIC8vIGFmdGVyIGFsbCwgc28gd2UgcmV0aHJvdyB0aGUgZGVjbGFyYXRpb24tcGFyc2luZyBlcnJvci4KICAgICAgICAgICAgJGJ1ZmZlciA9IG5ldyBJbnRlcnBvbGF0aW9uQnVmZmVyKCk7CiAgICAgICAgICAgICRidWZmZXItPmFkZEludGVycG9sYXRpb24oJGlkZW50aWZpZXIpOwogICAgICAgICAgICAkYnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCR0aGlzLT5pbnRlcnBvbGF0ZWREZWNsYXJhdGlvblZhbHVlKHRydWUsIHRydWUsIGZhbHNlKSk7CgogICAgICAgICAgICAkY29udGVudHMgPSAkYnVmZmVyLT5idWlsZEludGVycG9sYXRpb24oJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRuYW1lU3RhcnQpKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoKSA9PT0gJzonKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgU3VwcG9ydHNBbnl0aGluZygkY29udGVudHMsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICB9CgogICAgICAgICRkZWNsYXJhdGlvbiA9ICR0aGlzLT5zdXBwb3J0c0RlY2xhcmF0aW9uVmFsdWUoJG5hbWUsICRzdGFydCk7CiAgICAgICAgJHRoaXMtPnNjYW5uZXItPmV4cGVjdENoYXIoJyknKTsKCiAgICAgICAgcmV0dXJuICRkZWNsYXJhdGlvbjsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHN1cHBvcnRzRGVjbGFyYXRpb25WYWx1ZShFeHByZXNzaW9uICRuYW1lLCBpbnQgJHN0YXJ0KTogU3VwcG9ydHNEZWNsYXJhdGlvbgogICAgewogICAgICAgIGlmICgkbmFtZSBpbnN0YW5jZW9mIFN0cmluZ0V4cHJlc3Npb24gJiYgISRuYW1lLT5oYXNRdW90ZXMoKSAmJiBzdHJfc3RhcnRzX3dpdGgoJG5hbWUtPmdldFRleHQoKS0+Z2V0SW5pdGlhbFBsYWluKCksICctLScpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBTdHJpbmdFeHByZXNzaW9uKCR0aGlzLT5pbnRlcnBvbGF0ZWREZWNsYXJhdGlvblZhbHVlKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5leHByZXNzaW9uKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFN1cHBvcnRzRGVjbGFyYXRpb24oJG5hbWUsICR2YWx1ZSwgJHRoaXMtPnNjYW5uZXItPnNwYW5Gcm9tKCRzdGFydCkpOwogICAgfQoKICAgIC8qKgogICAgICogSWYgJGludGVycG9sYXRpb24gaXMgZm9sbG93ZWQgYnkgYCJhbmQiYCBvciBgIm9yImAsIHBhcnNlIGl0IGFzIGEgc3VwcG9ydHMgb3BlcmF0aW9uLgogICAgICoKICAgICAqIE90aGVyd2lzZSwgcmV0dXJuIGBudWxsYCB3aXRob3V0IG1vdmluZyB0aGUgc2Nhbm5lciBwb3NpdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cnlTdXBwb3J0c09wZXJhdGlvbihJbnRlcnBvbGF0aW9uICRpbnRlcnBvbGF0aW9uLCBpbnQgJHN0YXJ0KTogP1N1cHBvcnRzT3BlcmF0aW9uCiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkaW50ZXJwb2xhdGlvbi0+Z2V0Q29udGVudHMoKSkgIT09IDEpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkZXhwcmVzc2lvbiA9ICRpbnRlcnBvbGF0aW9uLT5nZXRDb250ZW50cygpWzBdOwoKICAgICAgICBpZiAoISRleHByZXNzaW9uIGluc3RhbmNlb2YgRXhwcmVzc2lvbikgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRiZWZvcmVXaGl0ZXNwYWNlID0gJHRoaXMtPnNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgJG9wZXJhdGlvbiA9IG51bGw7CiAgICAgICAgJG9wZXJhdG9yID0gbnVsbDsKCiAgICAgICAgd2hpbGUgKCR0aGlzLT5sb29raW5nQXRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgaWYgKCRvcGVyYXRvciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmV4cGVjdElkZW50aWZpZXIoJG9wZXJhdG9yKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5zY2FuSWRlbnRpZmllcignYW5kJykpIHsKICAgICAgICAgICAgICAgICRvcGVyYXRvciA9ICdhbmQnOwogICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPnNjYW5JZGVudGlmaWVyKCdvcicpKSB7CiAgICAgICAgICAgICAgICAkb3BlcmF0b3IgPSAnb3InOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPnNjYW5uZXItPnNldFBvc2l0aW9uKCRiZWZvcmVXaGl0ZXNwYWNlKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgJHJpZ2h0ID0gJHRoaXMtPnN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnMoKTsKCiAgICAgICAgICAgICRvcGVyYXRpb24gPSBuZXcgU3VwcG9ydHNPcGVyYXRpb24oJG9wZXJhdGlvbiA/PyBuZXcgU3VwcG9ydHNJbnRlcnBvbGF0aW9uKCRleHByZXNzaW9uLCAkaW50ZXJwb2xhdGlvbi0+Z2V0U3BhbigpKSwgJHJpZ2h0LCAkb3BlcmF0b3IsICR0aGlzLT5zY2FubmVyLT5zcGFuRnJvbSgkc3RhcnQpKTsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb3BlcmF0aW9uOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBzY2FubmVyIGlzIGltbWVkaWF0ZWx5IGJlZm9yZSBhbiBpZGVudGlmaWVyIHRoYXQgbWF5CiAgICAgKiBjb250YWluIGludGVycG9sYXRpb24uCiAgICAgKgogICAgICogVGhpcyBpcyBiYXNlZCBvbiBbdGhlIENTUyBhbGdvcml0aG1dW10sIGJ1dCBpdCBhc3N1bWVzIGFsbCBiYWNrc2xhc2hlcwogICAgICogc3RhcnQgZXNjYXBlcyBhbmQgaXQgY29uc2lkZXJzIGludGVycG9sYXRpb24gdG8gYmUgdmFsaWQgaW4gYW4gaWRlbnRpZmllci4KICAgICAqCiAgICAgKiBbdGhlIENTUyBhbGdvcml0aG1dOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXN5bnRheC0zLyN3b3VsZC1zdGFydC1hbi1pZGVudGlmaWVyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9va2luZ0F0SW50ZXJwb2xhdGVkSWRlbnRpZmllcigpOiBib29sCiAgICB7CiAgICAgICAgJGZpcnN0ID0gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgIGlmICgkZmlyc3QgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmaXJzdCA9PT0gJ1xcJyB8fCBDaGFyYWN0ZXI6OmlzTmFtZVN0YXJ0KCRmaXJzdCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZpcnN0ID09PSAnIycgJiYgJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDEpID09PSAneycpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZpcnN0ICE9PSAnLScpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHNlY29uZCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigxKTsKCiAgICAgICAgaWYgKCRzZWNvbmQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzZWNvbmQgPT09ICcjJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNjYW5uZXItPnBlZWtDaGFyKDIpID09PSAneyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNlY29uZCA9PT0gJ1xcJyB8fCAkc2Vjb25kID09PSAnLScgfHwgQ2hhcmFjdGVyOjppc05hbWVTdGFydCgkc2Vjb25kKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgc2Nhbm5lciBpcyBpbW1lZGlhdGVseSBiZWZvcmUgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzCiAgICAgKiB0aGF0IGNvdWxkIGJlIHBhcnQgb2YgYW4gQ1NTIGlkZW50aWZpZXIgYm9keS4KICAgICAqCiAgICAgKiBUaGUgaWRlbnRpZmllciBib2R5IG1heSBpbmNsdWRlIGludGVycG9sYXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9va2luZ0F0SW50ZXJwb2xhdGVkSWRlbnRpZmllckJvZHkoKTogYm9vbAogICAgewogICAgICAgICRmaXJzdCA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICBpZiAoJGZpcnN0ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmlyc3QgPT09ICdcXCcgfHwgQ2hhcmFjdGVyOjppc05hbWUoJGZpcnN0KSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZmlyc3QgPT09ICcjJyAmJiAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgPT09ICd7JzsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgc2Nhbm5lciBpcyBpbW1lZGlhdGVseSBiZWZvcmUgYSBTYXNzU2NyaXB0IGV4cHJlc3Npb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9va2luZ0F0RXhwcmVzc2lvbigpOiBib29sCiAgICB7CiAgICAgICAgJGNoYXJhY3RlciA9ICR0aGlzLT5zY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICBpZiAoJGNoYXJhY3RlciA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNoYXJhY3RlciA9PT0gJy4nKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSkgIT09ICcuJzsKICAgICAgICB9CgogICAgICAgIGlmICgkY2hhcmFjdGVyID09PSAnIScpIHsKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+c2Nhbm5lci0+cGVla0NoYXIoMSk7CgogICAgICAgICAgICByZXR1cm4gJG5leHQgPT09IG51bGwgfHwgJG5leHQgPT09ICdpJyB8fCAkbmV4dCA9PT0gJ0knIHx8IENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCRuZXh0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY2hhcmFjdGVyID09PSAnKCcgfHwKICAgICAgICAgICAgJGNoYXJhY3RlciA9PT0gJy8nIHx8CiAgICAgICAgICAgICRjaGFyYWN0ZXIgPT09ICdbJyB8fAogICAgICAgICAgICAkY2hhcmFjdGVyID09PSAiJyIgfHwKICAgICAgICAgICAgJGNoYXJhY3RlciA9PT0gJyInIHx8CiAgICAgICAgICAgICRjaGFyYWN0ZXIgPT09ICcjJyB8fAogICAgICAgICAgICAkY2hhcmFjdGVyID09PSAnKycgfHwKICAgICAgICAgICAgJGNoYXJhY3RlciA9PT0gJy0nIHx8CiAgICAgICAgICAgICRjaGFyYWN0ZXIgPT09ICdcXCcgfHwKICAgICAgICAgICAgJGNoYXJhY3RlciA9PT0gJyQnIHx8CiAgICAgICAgICAgICRjaGFyYWN0ZXIgPT09ICcmJyB8fAogICAgICAgICAgICBDaGFyYWN0ZXI6OmlzTmFtZVN0YXJ0KCRjaGFyYWN0ZXIpIHx8CiAgICAgICAgICAgIENoYXJhY3Rlcjo6aXNEaWdpdCgkY2hhcmFjdGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgYmxvY2sgb2YgJGNoaWxkIHN0YXRlbWVudHMgYW5kIHBhc3NlcyB0aGVtLCBhcyB3ZWxsIGFzIHRoZQogICAgICogc3BhbiBmcm9tICRzdGFydCB0byB0aGUgZW5kIG9mIHRoZSBjaGlsZCBibG9jaywgdG8gJGNyZWF0ZS4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFN0YXRlbWVudCAkY2hpbGQKICAgICAqIEBwYXJhbSBjYWxsYWJsZShTdGF0ZW1lbnRbXSwgRmlsZVNwYW4pOiBUICRjcmVhdGUKICAgICAqIEByZXR1cm4gVAogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjaGlsZAogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNyZWF0ZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdpdGhDaGlsZHJlbihjYWxsYWJsZSAkY2hpbGQsIGludCAkc3RhcnQsIGNhbGxhYmxlICRjcmVhdGUpCiAgICB7CiAgICAgICAgJGNoaWxkcmVuID0gJHRoaXMtPmNoaWxkcmVuKCRjaGlsZCk7CiAgICAgICAgJHJlc3VsdCA9ICRjcmVhdGUoJGNoaWxkcmVuLCAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2VXaXRob3V0Q29tbWVudHMoKTsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBMaWtlIHtAc2VlIGlkZW50aWZpZXJ9LCBidXQgcmVqZWN0cyBpZGVudGlmaWVycyB0aGF0IGJlZ2luIHdpdGggYF9gIG9yIGAtYC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwdWJsaWNJZGVudGlmaWVyKCk6IHN0cmluZwogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5zY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+aWRlbnRpZmllcigpOwogICAgICAgICR0aGlzLT5hc3NlcnRQdWJsaWMoJHJlc3VsdCwgZm4oKSA9PiAkdGhpcy0+c2Nhbm5lci0+c3BhbkZyb20oJHN0YXJ0KSk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogVGhyb3dzIGFuIGVycm9yIGlmICRpZGVudGlmaWVyIGlzbid0IHB1YmxpYy4KICAgICAqCiAgICAgKiBDYWxscyAkc3BhbiB0byBwcm92aWRlIHRoZSBzcGFuIGZvciBhbiBlcnJvciBpZiBvbmUgb2NjdXJzLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiBGaWxlU3BhbiAkc3BhbgogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRzcGFuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXNzZXJ0UHVibGljKHN0cmluZyAkaWRlbnRpZmllciwgY2FsbGFibGUgJHNwYW4pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFDaGFyYWN0ZXI6OmlzUHJpdmF0ZSgkaWRlbnRpZmllcikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVycm9yKCJQcml2YXRlIG1lbWJlcnMgY2FuJ3QgYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIHRoZWlyIG1vZHVsZXMuIiwgJHNwYW4oKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzICRleHByZXNzaW9uIHRvICRidWZmZXIsIG9yIGlmIGl0J3MgYW4gdW5xdW90ZWQgc3RyaW5nIGFkZHMgdGhlCiAgICAgKiBpbnRlcnBvbGF0aW9uIGl0IGNvbnRhaW5zIGluc3RlYWQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkT3JJbmplY3QoSW50ZXJwb2xhdGlvbkJ1ZmZlciAkYnVmZmVyLCBFeHByZXNzaW9uICRleHByZXNzaW9uKTogdm9pZAogICAgewogICAgICAgIGlmICgkZXhwcmVzc2lvbiBpbnN0YW5jZW9mIFN0cmluZ0V4cHJlc3Npb24gJiYgISRleHByZXNzaW9uLT5oYXNRdW90ZXMoKSkgewogICAgICAgICAgICAkYnVmZmVyLT5hZGRJbnRlcnBvbGF0aW9uKCRleHByZXNzaW9uLT5nZXRUZXh0KCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRidWZmZXItPmFkZCgkZXhwcmVzc2lvbik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGlzIHBhcnNpbmcgdGhlIGluZGVudGVkIHN5bnRheC4KICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzSW5kZW50ZWQoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyBpcyBhIHBsYWluIENTUyBzdHlsZXNoZWV0LgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNQbGFpbkNzcygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGluZGVudGF0aW9uIGxldmVsIGF0IHRoZSBjdXJyZW50IHNjYW5uZXIgcG9zaXRpb24uCiAgICAgKgogICAgICogVGhpcyB2YWx1ZSBpc24ndCB1c2VkIGRpcmVjdGx5IGJ5IFN0eWxlc2hlZXRQYXJzZXI7IGl0J3MganVzdCBwYXNzZWQgdG8KICAgICAqIHtAc2VlIHNjYW5FbHNlfS4KICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEN1cnJlbnRJbmRlbnRhdGlvbigpOiBpbnQ7CgogICAgLyoqCiAgICAgKiBQYXJzZXMgYW5kIHJldHVybnMgYSBzZWxlY3RvciB1c2VkIGluIGEgc3R5bGUgcnVsZS4KICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIHN0eWxlUnVsZVNlbGVjdG9yKCk6IEludGVycG9sYXRpb247CgogICAgLyoqCiAgICAgKiBBc3NlcnRzIHRoYXQgdGhlIHNjYW5uZXIgaXMgcG9zaXRpb25lZCBiZWZvcmUgYSBzdGF0ZW1lbnQgc2VwYXJhdG9yLCBvciBhdAogICAgICogdGhlIGVuZCBvZiBhIGxpc3Qgb2Ygc3RhdGVtZW50cy4KICAgICAqCiAgICAgKiBJZiB0aGUgbmFtZSBvZiB0aGUgcGFyZW50IHJ1bGUgaXMgcGFzc2VkLCBpdCdzIHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZy4KICAgICAqCiAgICAgKiBUaGlzIGNvbnN1bWVzIHdoaXRlc3BhY2UsIGJ1dCBub3RoaW5nIGVsc2UsIGluY2x1ZGluZyBjb21tZW50cy4KICAgICAqCiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbgogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZXhwZWN0U3RhdGVtZW50U2VwYXJhdG9yKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogdm9pZDsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHNjYW5uZXIgaXMgcG9zaXRpb25lZCBhdCB0aGUgZW5kIG9mIGEgc3RhdGVtZW50LgogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gYXRFbmRPZlN0YXRlbWVudCgpOiBib29sOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgc2Nhbm5lciBpcyBwb3NpdGlvbmVkIGJlZm9yZSBhIGJsb2NrIG9mIGNoaWxkcmVuIHRoYXQgY2FuIGJlCiAgICAgKiBwYXJzZWQgd2l0aCB7QHNlZSBjaGlsZHJlbn0uCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBsb29raW5nQXRDaGlsZHJlbigpOiBib29sOwoKICAgIC8qKgogICAgICogVHJpZXMgdG8gc2NhbiBhbiBgQGVsc2VgIHJ1bGUgYWZ0ZXIgYW4gYEBpZmAgYmxvY2ssIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhhdCBzdWNjZWVkZWQuCiAgICAgKgogICAgICogVGhpcyBzaG91bGQganVzdCBzY2FuIHRoZSBydWxlIG5hbWUsIG5vdCBhbnl0aGluZyBhZnRlcndhcmRzLgogICAgICogJGlmSW5kZW50YXRpb24gaXMgdGhlIHJlc3VsdCBvZiB7QHNlZSBnZXRDdXJyZW50SW5kZW50YXRpb259IGZyb20gYmVmb3JlIHRoZQogICAgICogY29ycmVzcG9uZGluZyBgQGlmYCB3YXMgcGFyc2VkLgogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gc2NhbkVsc2UoaW50ICRpZkluZGVudGF0aW9uKTogYm9vbDsKCiAgICAvKioKICAgICAqIENvbnN1bWVzIGEgYmxvY2sgb2YgY2hpbGQgc3RhdGVtZW50cy4KICAgICAqCiAgICAgKiBVbmxpa2UgbW9zdCBwcm9kdWN0aW9uIGNvbnN1bWVycywgdGhpcyBkb2VzICpub3QqIGNvbnN1bWUgdHJhaWxpbmcKICAgICAqIHdoaXRlc3BhY2UuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZSBzb3VyY2Ugc3BhbiBmb3IgdGhlCiAgICAgKiBwYXJlbnQgcnVsZSBkb2Vzbid0IGNvdmVyIHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHJ1bGUuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKCk6IFN0YXRlbWVudCAkY2hpbGQKICAgICAqCiAgICAgKiBAcmV0dXJuIFN0YXRlbWVudFtdCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNoaWxkCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBjaGlsZHJlbihjYWxsYWJsZSAkY2hpbGQpOiBhcnJheTsKCiAgICAvKioKICAgICAqIENvbnN1bWVzIHRvcC1sZXZlbCBzdGF0ZW1lbnRzLgogICAgICoKICAgICAqIFRoZSAkc3RhdGVtZW50IGNhbGxiYWNrIG1heSByZXR1cm4gYG51bGxgLCBpbmRpY2F0aW5nIHRoYXQgYSBzdGF0ZW1lbnQKICAgICAqIHdhcyBjb25zdW1lZCB0aGF0IHNob3VsZG4ndCBiZSBhZGRlZCB0byB0aGUgQVNULgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiA/U3RhdGVtZW50ICRzdGF0ZW1lbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIFN0YXRlbWVudFtdCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJHN0YXRlbWVudAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gc3RhdGVtZW50cyhjYWxsYWJsZSAkc3RhdGVtZW50KTogYXJyYXk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SassCallable/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SassCallable/BuiltInCallable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNhc3NDYWxsYWJsZTsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcQXJndW1lbnREZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc0Zvcm1hdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTnVsbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKCi8qKgogKiBBIGNhbGxhYmxlIGRlZmluZWQgaW4gUEhQIGNvZGUuCiAqCiAqIFVubGlrZSB1c2VyLWRlZmluZWQgY2FsbGFibGVzLCBidWlsdC1pbiBjYWxsYWJsZXMgc3VwcG9ydCBvdmVybG9hZHMuIFRoZXkKICogbWF5IGRlY2xhcmUgbXVsdGlwbGUgZGlmZmVyZW50IGNhbGxiYWNrcyB3aXRoIG11bHRpcGxlIGRpZmZlcmVudCBzZXRzIG9mCiAqIGFyZ3VtZW50cy4gV2hlbiB0aGUgY2FsbGFibGUgaXMgaW52b2tlZCwgdGhlIGZpcnN0IGNhbGxiYWNrIHdpdGggbWF0Y2hpbmcKICogYXJndW1lbnRzIGlzIGludm9rZWQuCiAqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgQnVpbHRJbkNhbGxhYmxlIGltcGxlbWVudHMgU2Fzc0NhbGxhYmxlCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuYW1lOwoKICAgIC8qKgogICAgICogQHZhciBsaXN0PGFycmF5e0FyZ3VtZW50RGVjbGFyYXRpb24sIGNhbGxhYmxlKGxpc3Q8VmFsdWU+KTogVmFsdWV9PgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRvdmVybG9hZHM7CgogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRhY2NlcHRzQ29udGVudDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB3aXRoIGEgc2luZ2xlICRhcmd1bWVudHMgZGVjbGFyYXRpb24gYW5kIGEgc2luZ2xlCiAgICAgKiAkY2FsbGJhY2suCiAgICAgKgogICAgICogVGhlIGFyZ3VtZW50IGRlY2xhcmF0aW9uIGlzIHBhcnNlZCBmcm9tICRhcmd1bWVudHMsIHdoaWNoIHNob3VsZCBub3QKICAgICAqIGluY2x1ZGUgcGFyZW50aGVzZXMuIFRocm93cyBhIHtAc2VlIFNhc3NGb3JtYXRFeGNlcHRpb259IGlmIHBhcnNpbmcgZmFpbHMuCiAgICAgKgogICAgICogSWYgcGFzc2VkLCAkdXJsIGlzIHRoZSBVUkwgb2YgdGhlIG1vZHVsZSBpbiB3aGljaCB0aGUgZnVuY3Rpb24gaXMKICAgICAqIGRlZmluZWQuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKGxpc3Q8VmFsdWU+KTogVmFsdWUgJGNhbGxiYWNrCiAgICAgKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnVuY3Rpb24oc3RyaW5nICRuYW1lLCBzdHJpbmcgJGFyZ3VtZW50cywgY2FsbGFibGUgJGNhbGxiYWNrLCA/VXJpSW50ZXJmYWNlICR1cmwgPSBudWxsKTogQnVpbHRJbkNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OnBhcnNlZCgKICAgICAgICAgICAgJG5hbWUsCiAgICAgICAgICAgIEFyZ3VtZW50RGVjbGFyYXRpb246OnBhcnNlKCJAZnVuY3Rpb24gJG5hbWUoJGFyZ3VtZW50cykgeyIsIHVybDogJHVybCksCiAgICAgICAgICAgICRjYWxsYmFjawogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbWl4aW4gd2l0aCBhIHNpbmdsZSAkYXJndW1lbnRzIGRlY2xhcmF0aW9uIGFuZCBhIHNpbmdsZQogICAgICogJGNhbGxiYWNrLgogICAgICoKICAgICAqIFRoZSBhcmd1bWVudCBkZWNsYXJhdGlvbiBpcyBwYXJzZWQgZnJvbSAkYXJndW1lbnRzLCB3aGljaCBzaG91bGQgbm90CiAgICAgKiBpbmNsdWRlIHBhcmVudGhlc2VzLiBUaHJvd3MgYSB7QHNlZSBTYXNzRm9ybWF0RXhjZXB0aW9ufSBpZiBwYXJzaW5nIGZhaWxzLgogICAgICoKICAgICAqIElmIHBhc3NlZCwgJHVybCBpcyB0aGUgVVJMIG9mIHRoZSBtb2R1bGUgaW4gd2hpY2ggdGhlIG1peGluIGlzCiAgICAgKiBkZWZpbmVkLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZShsaXN0PFZhbHVlPik6IHZvaWQgJGNhbGxiYWNrCiAgICAgKgogICAgICogQHRocm93cyBTYXNzRm9ybWF0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWl4aW4oc3RyaW5nICRuYW1lLCBzdHJpbmcgJGFyZ3VtZW50cywgY2FsbGFibGUgJGNhbGxiYWNrLCA/VXJpSW50ZXJmYWNlICR1cmwgPSBudWxsLCBib29sICRhY2NlcHRzQ29udGVudCA9IGZhbHNlKTogQnVpbHRJbkNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OnBhcnNlZCgKICAgICAgICAgICAgJG5hbWUsCiAgICAgICAgICAgIEFyZ3VtZW50RGVjbGFyYXRpb246OnBhcnNlKCJAbWl4aW4gJG5hbWUoJGFyZ3VtZW50cykgeyIsIHVybDogJHVybCksCiAgICAgICAgICAgIGZ1bmN0aW9uICgkYXJndW1lbnRzKSB1c2UgKCRjYWxsYmFjaykgewogICAgICAgICAgICAgICAgJGNhbGxiYWNrKCRhcmd1bWVudHMpOwoKICAgICAgICAgICAgICAgIHJldHVybiBTYXNzTnVsbDo6Y3JlYXRlKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICRhY2NlcHRzQ29udGVudAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gd2l0aCBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgKgogICAgICogRWFjaCBrZXkvdmFsdWUgcGFpciBpbiAkb3ZlcmxvYWRzIGRlZmluZXMgdGhlIGFyZ3VtZW50IGRlY2xhcmF0aW9uIGZvcgogICAgICogdGhlIG92ZXJsb2FkICh3aGljaCBzaG91bGQgbm90IGluY2x1ZGUgcGFyZW50aGVzZXMpLCBhbmQgdGhlIGNhbGxiYWNrIHRvCiAgICAgKiBleGVjdXRlIGlmIHRoYXQgYXJndW1lbnQgZGVjbGFyYXRpb24gbWF0Y2hlcy4gVGhyb3dzIGEKICAgICAqIHtAc2VlIFNhc3NGb3JtYXRFeGNlcHRpb259IGlmIHBhcnNpbmcgZmFpbHMuCiAgICAgKgogICAgICogSWYgcGFzc2VkLCAkdXJsIGlzIHRoZSBVUkwgb2YgdGhlIG1vZHVsZSBpbiB3aGljaCB0aGUgZnVuY3Rpb24gaXMKICAgICAqIGRlZmluZWQuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgY2FsbGFibGUobGlzdDxWYWx1ZT4pOiBWYWx1ZT4gJG92ZXJsb2FkcwogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0Zvcm1hdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG92ZXJsb2FkZWRGdW5jdGlvbihzdHJpbmcgJG5hbWUsIGFycmF5ICRvdmVybG9hZHMsID9VcmlJbnRlcmZhY2UgJHVybCA9IG51bGwpOiBCdWlsdEluQ2FsbGFibGUKICAgIHsKICAgICAgICAkcHJvY2Vzc2VkT3ZlcmxvYWRzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRvdmVybG9hZHMgYXMgJGFyZ3MgPT4gJGNhbGxiYWNrKSB7CiAgICAgICAgICAgICRwcm9jZXNzZWRPdmVybG9hZHNbXSA9IFsKICAgICAgICAgICAgICAgIEFyZ3VtZW50RGVjbGFyYXRpb246OnBhcnNlKCJAZnVuY3Rpb24gJG5hbWUoJGFyZ3MpIHsiLCB1cmw6ICR1cmwpLAogICAgICAgICAgICAgICAgJGNhbGxiYWNrLAogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBCdWlsdEluQ2FsbGFibGUoJG5hbWUsICRwcm9jZXNzZWRPdmVybG9hZHMsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBjYWxsYWJsZSB3aXRoIGEgc2luZ2xlICRhcmd1bWVudHMgZGVjbGFyYXRpb24gYW5kIGEgc2luZ2xlICRjYWxsYmFjay4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUobGlzdDxWYWx1ZT4pOiBWYWx1ZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcGFyc2VkKHN0cmluZyAkbmFtZSwgQXJndW1lbnREZWNsYXJhdGlvbiAkYXJndW1lbnRzLCBjYWxsYWJsZSAkY2FsbGJhY2ssIGJvb2wgJGFjY2VwdHNDb250ZW50ID0gZmFsc2UpOiBCdWlsdEluQ2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEJ1aWx0SW5DYWxsYWJsZSgkbmFtZSwgW1skYXJndW1lbnRzLCAkY2FsbGJhY2tdXSwgJGFjY2VwdHNDb250ZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PGFycmF5e0FyZ3VtZW50RGVjbGFyYXRpb24sIGNhbGxhYmxlKGxpc3Q8VmFsdWU+KTogVmFsdWV9PiAkb3ZlcmxvYWRzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRuYW1lLCBhcnJheSAkb3ZlcmxvYWRzLCBib29sICRhY2NlcHRzQ29udGVudCkKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5vdmVybG9hZHMgPSAkb3ZlcmxvYWRzOwogICAgICAgICR0aGlzLT5hY2NlcHRzQ29udGVudCA9ICRhY2NlcHRzQ29udGVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdHNDb250ZW50KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFjY2VwdHNDb250ZW50OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYXJndW1lbnQgZGVjbGFyYXRpb24gYW5kIFBIUCBjYWxsYmFjayBmb3IgdGhlIGdpdmVuCiAgICAgKiBwb3NpdGlvbmFsIGFuZCBuYW1lZCBhcmd1bWVudHMuCiAgICAgKgogICAgICogSWYgbm8gZXhhY3QgbWF0Y2ggaXMgZm91bmQsIGZpbmRzIHRoZSBjbG9zZXN0IGFwcHJveGltYXRpb24uIE5vdGUgdGhhdCB0aGlzCiAgICAgKiBkb2Vzbid0IGd1YXJhbnRlZSB0aGF0ICRwb3NpdGlvbmFsIGFuZCAkbmFtZXMgYXJlIHZhbGlkIGZvciB0aGUgcmV0dXJuZWQKICAgICAqIHtAc2VlIEFyZ3VtZW50RGVjbGFyYXRpb259LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPiAkbmFtZXMgT25seSB0aGUga2V5cyBhcmUgcmVsZXZhbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e0FyZ3VtZW50RGVjbGFyYXRpb24sIGNhbGxhYmxlKGxpc3Q8VmFsdWU+KTogVmFsdWV9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjYWxsYmFja0ZvcihpbnQgJHBvc2l0aW9uYWwsIGFycmF5ICRuYW1lcyk6IGFycmF5CiAgICB7CiAgICAgICAgJGZ1enp5TWF0Y2ggPSBudWxsOwogICAgICAgICRtaW5NaXNtYXRjaERpc3RhbmNlID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm92ZXJsb2FkcyBhcyAkb3ZlcmxvYWQpIHsKICAgICAgICAgICAgLy8gSWRlYWxseSwgZmluZCBhbiBleGFjdCBtYXRjaC4KICAgICAgICAgICAgaWYgKCRvdmVybG9hZFswXS0+bWF0Y2hlcygkcG9zaXRpb25hbCwgJG5hbWVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRvdmVybG9hZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1pc21hdGNoRGlzdGFuY2UgPSBcY291bnQoJG92ZXJsb2FkWzBdLT5nZXRBcmd1bWVudHMoKSkgLSAkcG9zaXRpb25hbDsKCiAgICAgICAgICAgIGlmICgkbWluTWlzbWF0Y2hEaXN0YW5jZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKGFicygkbWlzbWF0Y2hEaXN0YW5jZSkgPiBhYnMoJG1pbk1pc21hdGNoRGlzdGFuY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSWYgdHdvIG92ZXJsb2FkcyBoYXZlIHRoZSBzYW1lIG1pc21hdGNoIGRpc3RhbmNlLCBmYXZvciB0aGUgb3ZlcmxvYWQKICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIG1vcmUgYXJndW1lbnRzLgogICAgICAgICAgICAgICAgaWYgKGFicygkbWlzbWF0Y2hEaXN0YW5jZSkgPT09IGFicygkbWluTWlzbWF0Y2hEaXN0YW5jZSkgJiYgJG1pc21hdGNoRGlzdGFuY2UgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRtaW5NaXNtYXRjaERpc3RhbmNlID0gJG1pc21hdGNoRGlzdGFuY2U7CiAgICAgICAgICAgICRmdXp6eU1hdGNoID0gJG92ZXJsb2FkOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmdXp6eU1hdGNoICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkZnV6enlNYXRjaDsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIkJ1aWx0SW5DYWxsYWJsZSB7JHRoaXMtPm5hbWV9IG1heSBub3QgaGF2ZSBlbXB0eSBvdmVybG9hZHMuIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgY29weSBvZiB0aGlzIGNhbGxhYmxlIHdpdGggdGhlIGdpdmVuICRuYW1lLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aE5hbWUoc3RyaW5nICRuYW1lKTogQnVpbHRJbkNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBCdWlsdEluQ2FsbGFibGUoJG5hbWUsICR0aGlzLT5vdmVybG9hZHMsICR0aGlzLT5hY2NlcHRzQ29udGVudCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SassCallable/PlainCssCallable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNhc3NDYWxsYWJsZTsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGU7CgovKioKICogQSBjYWxsYWJsZSB0aGF0IGVtaXRzIGEgcGxhaW4gQ1NTIGZ1bmN0aW9uLgogKgogKiBUaGlzIGNhbid0IGJlIHVzZWQgZm9yIG1peGlucy4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBQbGFpbkNzc0NhbGxhYmxlIGltcGxlbWVudHMgU2Fzc0NhbGxhYmxlLCBFcXVhdGFibGUKewogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJG5hbWU7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkbmFtZSkKICAgIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIFBsYWluQ3NzQ2FsbGFibGUgJiYgJHRoaXMtPm5hbWUgPT09ICRvdGhlci0+bmFtZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SassCallable/SassCallable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNhc3NDYWxsYWJsZTsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc051bWJlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKCi8qKgogKiBBbiBpbnRlcmZhY2UgZm9yIGZ1bmN0aW9ucyBhbmQgbWl4aW5zIHRoYXQgY2FuIGJlIGludm9rZWQgZnJvbSBTYXNzIGJ5CiAqIHBhc3NpbmcgaW4gYXJndW1lbnRzLgogKgogKiBXaGVuIHdyaXRpbmcgY3VzdG9tIGZ1bmN0aW9ucywgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSB0aGVtIGFzIHVzZXItZnJpZW5kbHkKICogYW5kIGFzIGNsb3NlIHRvIHRoZSBzdGFuZGFyZHMgc2V0IGJ5IFNhc3MncyBjb3JlIGZ1bmN0aW9ucyBhcyBwb3NzaWJsZS4gU29tZQogKiBnb29kIGd1aWRlbGluZXMgdG8gZm9sbG93IGluY2x1ZGU6CiAqCiAqICogVXNlIGBWYWx1ZS5hc3NlcnQqYCBtZXRob2RzLCBsaWtlIHtAc2VlIFZhbHVlOjphc3NlcnRTdHJpbmd9LCB0byBjYXN0IHVudHlwZWQKICogICB7QHNlZSBWYWx1ZX0gb2JqZWN0cyB0byBtb3JlIHNwZWNpZmljIHR5cGVzLiBGb3IgdmFsdWVzIGZyb20gdGhlIGFyZ3VtZW50IGxpc3QsCiAqICAgcGFzcyBpbiB0aGUgYXJndW1lbnQgbmFtZSBhcyB3ZWxsLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdXNlciBnZXRzIGdvb2QKICogICBlcnJvciBtZXNzYWdlcyB3aGVuIHRoZXkgcGFzcyBpbiB0aGUgd3JvbmcgdHlwZSB0byB5b3VyIGZ1bmN0aW9uLgogKgogKiAqIEluZGl2aWR1YWwgY2xhc3NlcyBtYXkgaGF2ZSBtb3JlIHNwZWNpZmljIGBhc3NlcnQqYCBtZXRob2RzLCBsaWtlCiAqICAge0BzZWUgU2Fzc051bWJlcjo6YXNzZXJ0SW50fSwgd2hpY2ggc2hvdWxkIGJlIHVzZWQgd2hlbiBwb3NzaWJsZS4KICoKICogKiBJbiBTYXNzLCBldmVyeSB2YWx1ZSBjb3VudHMgYXMgYSBsaXN0LiBGdW5jdGlvbnMgc2hvdWxkIGF2b2lkIGNhc3RpbmcKICogICB2YWx1ZXMgdG8gdGhlIGBTYXNzTGlzdGAgdHlwZSwgYW5kIHNob3VsZCB1c2UgdGhlIHtAc2VlIFZhbHVlOjphc0xpc3R9IG1ldGhvZAogKiAgIGluc3RlYWQuCiAqCiAqICogV2hlbiBtYW5pcHVsYXRpbmcgdmFsdWVzIGxpa2UgbGlzdHMsIHN0cmluZ3MsIGFuZCBudW1iZXJzIHRoYXQgaGF2ZQogKiAgIG1ldGFkYXRhIChjb21tYSB2ZXJzdXMgc3BhY2Ugc2VwYXJhdGVkLCBicmFja2V0ZWQgdmVyc3VzIHVuYnJhY2tldGVkLAogKiAgIHF1b3RlZCB2ZXJzdXMgdW5xdW90ZWQsIHVuaXRzKSwgdGhlIG91dHB1dCBtZXRhZGF0YSBzaG91bGQgbWF0Y2ggdGhlIGlucHV0CiAqICAgbWV0YWRhdGEuIEZvciBsaXN0cywgdGhlIHtAc2VlIFZhbHVlOjp3aXRoTGlzdENvbnRlbnRzfSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gZG8KICogICB0aGlzIGF1dG9tYXRpY2FsbHkuCiAqCiAqICogV2hlbiBpbiBkb3VidCwgbGlzdHMgc2hvdWxkIGRlZmF1bHQgdG8gY29tbWEtc2VwYXJhdGVkLCBzdHJpbmdzIHNob3VsZAogKiAgIGRlZmF1bHQgdG8gcXVvdGVkLCBhbmQgbnVtYmVyIHNob3VsZCBkZWZhdWx0IHRvIHVuaXRsZXNzLgogKgogKiAqIEluIFNhc3MsIGxpc3RzIGFuZCBzdHJpbmdzIHVzZSBvbmUtYmFzZWQgaW5kZXhpbmcgYW5kIHVzZSBuZWdhdGl2ZSBpbmRpY2VzCiAqICAgdG8gaW5kZXggZnJvbSB0aGUgZW5kIG9mIHZhbHVlLiBGdW5jdGlvbnMgc2hvdWxkIGZvbGxvdyB0aGVzZSBjb252ZW50aW9ucy4KICogICBUaGUge0BzZWUgVmFsdWU6OnNhc3NJbmRleFRvTGlzdEluZGV4fSBhbmQge0BzZWUgU2Fzc1N0cmluZzo6c2Fzc0luZGV4VG9TdHJpbmdJbmRleH0KICogICBtZXRob2RzIGNhbiBiZSB1c2VkIHRvIGRvIHRoaXMgYXV0b21hdGljYWxseS4KICoKICogKiBTdHJpbmcgaW5kZXhlcyBpbiBTYXNzIHJlZmVyIHRvIFVuaWNvZGUgY29kZSBwb2ludHMgd2hpbGUgUEhQIHN0cmluZwogKiAgIGluZGljZXMgcmVmZXIgdG8gYnl0ZXMuIEZvciBleGFtcGxlLCB0aGUgY2hhcmFjdGVyIFUrMUY2MEEsCiAqICAgU21pbGluZyBGYWNlIFdpdGggU21pbGluZyBFeWVzLCBpcyBhIHNpbmdsZSBVbmljb2RlIGNvZGUgcG9pbnQgYnV0IGlzCiAqICAgcmVwcmVzZW50ZWQgaW4gVVRGLTggYXMgc2V2ZXJhbCBieXRlcyAoYDB4RjBgLCBgMHg5RmAsIGAweDk4YCBhbmQgYDB4OEFgKS4gU28gaW4KICogICBQSFAsIGBzdWJzdHIoImHwn5iKYiIsIDEsIDEpYCByZXR1cm5zIGAiXHhGMCJgLCB3aGVyZWFzIGluIFNhc3MKICogICBgc3RyLXNsaWNlKCJh8J+YimIiLCAxLCAxKWAgcmV0dXJucyBgIvCfmIoiYC4gRnVuY3Rpb25zIHNob3VsZCBmb2xsb3cgdGhpcwogKiAgIGNvbnZlbnRpb24uIFRoZSB7QHNlZSBTYXNzU3RyaW5nOjpzYXNzSW5kZXhUb1N0cmluZ0luZGV4fSBhbmQKICogICB7QHNlZSBTYXNzU3RyaW5nOjpzYXNzSW5kZXhUb0NvZGVQb2ludEluZGV4fSBtZXRob2RzIGNhbiBiZSB1c2VkIHRvIGRvIHRoaXMKICogICBhdXRvbWF0aWNhbGx5LCBhbmQgdGhlIHtAc2VlIFNhc3NTdHJpbmc6OmdldFNhc3NMZW5ndGh9IGdldHRlciBjYW4gYmUgdXNlZCB0bwogKiAgIGFjY2VzcyBhIHN0cmluZydzIGxlbmd0aCBpbiBjb2RlIHBvaW50cy4KICoKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgU2Fzc0NhbGxhYmxlCnsKICAgIC8qKgogICAgICogVGhlIGNhbGxhYmxlJ3MgbmFtZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SassCallable/UserDefinedCallable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNhc3NDYWxsYWJsZTsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XENhbGxhYmxlRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXZhbHVhdGlvblxFbnZpcm9ubWVudDsKCi8qKgogKiBBIGNhbGxiYWNrIGRlZmluZWQgaW4gdGhlIHVzZXIncyBTYXNzIHN0eWxlc2hlZXQuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgVXNlckRlZmluZWRDYWxsYWJsZSBpbXBsZW1lbnRzIFNhc3NDYWxsYWJsZQp7CiAgICBwcml2YXRlIHJlYWRvbmx5IENhbGxhYmxlRGVjbGFyYXRpb24gJGRlY2xhcmF0aW9uOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgRW52aXJvbm1lbnQgJGVudmlyb25tZW50OwoKICAgIHByaXZhdGUgcmVhZG9ubHkgYm9vbCAkaW5EZXBlbmRlbmN5OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDYWxsYWJsZURlY2xhcmF0aW9uICRkZWNsYXJhdGlvbiwgRW52aXJvbm1lbnQgJGVudmlyb25tZW50LCBib29sICRpbkRlcGVuZGVuY3kpCiAgICB7CiAgICAgICAgJHRoaXMtPmRlY2xhcmF0aW9uID0gJGRlY2xhcmF0aW9uOwogICAgICAgICR0aGlzLT5lbnZpcm9ubWVudCA9ICRlbnZpcm9ubWVudDsKICAgICAgICAkdGhpcy0+aW5EZXBlbmRlbmN5ID0gJGluRGVwZW5kZW5jeTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb24oKTogQ2FsbGFibGVEZWNsYXJhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGVjbGFyYXRpb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEVudmlyb25tZW50KCk6IEVudmlyb25tZW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbnZpcm9ubWVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNJbkRlcGVuZGVuY3koKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aW5EZXBlbmRlbmN5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGVjbGFyYXRpb24tPmdldE5hbWUoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Serializer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Serializer/Serializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTZXJpYWxpemVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc05vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NQYXJlbnROb2RlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXE91dHB1dFN0eWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFZhbHVlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcQ3NzVmlzaXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXE1vZGlmaWFibGVDc3NWaXNpdG9yOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU2VyaWFsaXplcgp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNlcmlhbGl6ZShDc3NOb2RlICRub2RlLCBib29sICRpbnNwZWN0ID0gZmFsc2UsIE91dHB1dFN0eWxlICRzdHlsZSA9IE91dHB1dFN0eWxlOjpFWFBBTkRFRCwgYm9vbCAkc291cmNlTWFwID0gZmFsc2UsIGJvb2wgJGNoYXJzZXQgPSB0cnVlLCA/TG9nZ2VySW50ZXJmYWNlICRsb2dnZXIgPSBudWxsKTogU2VyaWFsaXplUmVzdWx0CiAgICB7CiAgICAgICAgJHZpc2l0b3IgPSBuZXcgU2VyaWFsaXplVmlzaXRvcigkaW5zcGVjdCwgdHJ1ZSwgJHN0eWxlLCAkc291cmNlTWFwLCAkbG9nZ2VyKTsKICAgICAgICAkbm9kZS0+YWNjZXB0KCR2aXNpdG9yKTsKICAgICAgICAkY3NzID0gKHN0cmluZykgJHZpc2l0b3ItPmdldEJ1ZmZlcigpOwoKICAgICAgICAkcHJlZml4ID0gJyc7CgogICAgICAgIGlmICgkY2hhcnNldCAmJiBzdHJsZW4oJGNzcykgIT09IG1iX3N0cmxlbigkY3NzLCAnVVRGLTgnKSkgewogICAgICAgICAgICBpZiAoJHN0eWxlID09PSBPdXRwdXRTdHlsZTo6Q09NUFJFU1NFRCkgewogICAgICAgICAgICAgICAgJHByZWZpeCA9ICJcdXtGRUZGfSI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcHJlZml4ID0gJ0BjaGFyc2V0ICJVVEYtOCI7JyAuICJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgU2VyaWFsaXplUmVzdWx0KAogICAgICAgICAgICAkcHJlZml4IC4gJGNzcywKICAgICAgICAgICAgJHNvdXJjZU1hcCA/ICR2aXNpdG9yLT5nZXRCdWZmZXIoKS0+YnVpbGRTb3VyY2VNYXAoJHByZWZpeCkgOiBudWxsLAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyAkdmFsdWUgdG8gYSBDU1Mgc3RyaW5nLgogICAgICoKICAgICAqIElmICRpbnNwZWN0IGlzIGB0cnVlYCwgdGhpcyB3aWxsIGVtaXQgYW4gdW5hbWJpZ3VvdXMgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBzb3VyY2Ugc3RydWN0dXJlLiBOb3RlIGhvd2V2ZXIgdGhhdCwgYWx0aG91Z2ggdGhpcyB3aWxsIGJlIHZhbGlkIFNDU1MsIGl0CiAgICAgKiBtYXkgbm90IGJlIHZhbGlkIENTUy4gSWYgJGluc3BlY3QgaXMgYGZhbHNlYCBhbmQgJHZhbHVlIGNhbid0IGJlCiAgICAgKiByZXByZXNlbnRlZCBpbiBwbGFpbiBDU1MsIHRocm93cyBhIHtAc2VlIFNhc3NTY3JpcHRFeGNlcHRpb259LgogICAgICoKICAgICAqIElmICRxdW90ZSBpcyBgZmFsc2VgLCBxdW90ZWQgc3RyaW5ncyBhcmUgZW1pdHRlZCB3aXRob3V0IHF1b3Rlcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXJpYWxpemVWYWx1ZShWYWx1ZSAkdmFsdWUsIGJvb2wgJGluc3BlY3QgPSBmYWxzZSwgYm9vbCAkcXVvdGUgPSB0cnVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgLy8gRm9yY2UgbG9hZGluZyB0aGUgQ3NzUGFyZW50Tm9kZSBhbmQgQ3NzVmlzaXRvciBiZWZvcmUgdXNpbmcgdGhlIHZpc2l0b3IgYmVjYXVzZSBvZiBhIHdlaXJkIFBIUCBiZWhhdmlvci4KICAgICAgICBjbGFzc19leGlzdHMoQ3NzUGFyZW50Tm9kZTo6Y2xhc3MpOwogICAgICAgIGNsYXNzX2V4aXN0cyhDc3NWaXNpdG9yOjpjbGFzcyk7CgogICAgICAgICR2aXNpdG9yID0gbmV3IFNlcmlhbGl6ZVZpc2l0b3IoJGluc3BlY3QsICRxdW90ZSk7CiAgICAgICAgJHZhbHVlLT5hY2NlcHQoJHZpc2l0b3IpOwoKICAgICAgICByZXR1cm4gKHN0cmluZykgJHZpc2l0b3ItPmdldEJ1ZmZlcigpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgJHNlbGVjdG9yIHRvIGEgQ1NTIHN0cmluZy4KICAgICAqCiAgICAgKiBJZiAkaW5zcGVjdCBpcyBgdHJ1ZWAsIHRoaXMgd2lsbCBlbWl0IGFuIHVuYW1iaWd1b3VzIHJlcHJlc2VudGF0aW9uIG9mIHRoZQogICAgICogc291cmNlIHN0cnVjdHVyZS4gTm90ZSBob3dldmVyIHRoYXQsIGFsdGhvdWdoIHRoaXMgd2lsbCBiZSB2YWxpZCBTQ1NTLCBpdAogICAgICogbWF5IG5vdCBiZSB2YWxpZCBDU1MuIElmICRpbnNwZWN0IGlzIGBmYWxzZWAgYW5kICRzZWxlY3RvciBjYW4ndCBiZQogICAgICogcmVwcmVzZW50ZWQgaW4gcGxhaW4gQ1NTLCB0aHJvd3MgYSB7QHNlZSBTYXNzU2NyaXB0RXhjZXB0aW9ufS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXJpYWxpemVTZWxlY3RvcihTZWxlY3RvciAkc2VsZWN0b3IsIGJvb2wgJGluc3BlY3QgPSBmYWxzZSk6IHN0cmluZwogICAgewogICAgICAgIC8vIEZvcmNlIGxvYWRpbmcgdGhlIENzc1BhcmVudE5vZGUgYW5kIENzc1Zpc2l0b3IgYmVmb3JlIHVzaW5nIHRoZSB2aXNpdG9yIGJlY2F1c2Ugb2YgYSB3ZWlyZCBQSFAgYmVoYXZpb3IuCiAgICAgICAgY2xhc3NfZXhpc3RzKENzc1BhcmVudE5vZGU6OmNsYXNzKTsKICAgICAgICBjbGFzc19leGlzdHMoQ3NzVmlzaXRvcjo6Y2xhc3MpOwoKICAgICAgICAkdmlzaXRvciA9IG5ldyBTZXJpYWxpemVWaXNpdG9yKCRpbnNwZWN0KTsKICAgICAgICAkc2VsZWN0b3ItPmFjY2VwdCgkdmlzaXRvcik7CgogICAgICAgIHJldHVybiAoc3RyaW5nKSAkdmlzaXRvci0+Z2V0QnVmZmVyKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Serializer/SerializeResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNlcmlhbGl6ZXI7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcFxTaW5nbGVNYXBwaW5nOwoKLyoqCiAqIFRoZSByZXN1bHQgb2YgY29udmVydGluZyBhIENTUyBBU1QgdG8gQ1NTIHRleHQuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU2VyaWFsaXplUmVzdWx0CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RyaW5nICRjc3MsCiAgICAgICAgcHVibGljIHJlYWRvbmx5ID9TaW5nbGVNYXBwaW5nICRtYXBwaW5nLAogICAgKSB7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Serializer/SerializeVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTZXJpYWxpemVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQXN0Tm9kZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc0F0UnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc0NvbW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NEZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc0ltcG9ydDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc0tleWZyYW1lQmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NNZWRpYVF1ZXJ5Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzTWVkaWFSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzTm9kZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc1BhcmVudE5vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NTdHlsZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NTdHlsZXNoZWV0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzU3VwcG9ydHNSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzVmFsdWU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXEF0dHJpYnV0ZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDbGFzc1NlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21iaW5hdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXENvbXBvdW5kU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXElEU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBhcmVudFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxQbGFjZWhvbGRlclNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxQc2V1ZG9TZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcU2VsZWN0b3JMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxUeXBlU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFVuaXZlcnNhbFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXENvbG9yczsKdXNlIFNjc3NQaHBcU2Nzc1BocFxEZXByZWNhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxRdWlldExvZ2dlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxPdXRwdXRTdHlsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcTGluZVNjYW5uZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcUGFyc2VyXFBhcnNlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxQYXJzZXJcU3RyaW5nU2Nhbm5lcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VTcGFuXE11bHRpU3BhbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXENoYXJhY3RlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEl0ZXJhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXExvZ2dlclV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxOdW1iZXJVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcU3BhblV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTdHJpbmdVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXENhbGN1bGF0aW9uT3BlcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXENhbGN1bGF0aW9uT3BlcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcQ29sb3JGb3JtYXRFbnVtOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXExpc3RTZXBhcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0Jvb2xlYW47CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0NhbGN1bGF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NDb2xvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzRnVuY3Rpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0xpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc01hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTWl4aW47CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc051bWJlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzU3RyaW5nOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNwYW5Db2xvckZvcm1hdDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXENzc1Zpc2l0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxTZWxlY3RvclZpc2l0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxWYWx1ZVZpc2l0b3I7CgovKioKICogQGludGVybmFsCiAqCiAqIEB0ZW1wbGF0ZS1pbXBsZW1lbnRzIENzc1Zpc2l0b3I8dm9pZD4KICogQHRlbXBsYXRlLWltcGxlbWVudHMgVmFsdWVWaXNpdG9yPHZvaWQ+CiAqIEB0ZW1wbGF0ZS1pbXBsZW1lbnRzIFNlbGVjdG9yVmlzaXRvcjx2b2lkPgogKi8KZmluYWwgY2xhc3MgU2VyaWFsaXplVmlzaXRvciBpbXBsZW1lbnRzIENzc1Zpc2l0b3IsIFZhbHVlVmlzaXRvciwgU2VsZWN0b3JWaXNpdG9yCnsKICAgIHByaXZhdGUgcmVhZG9ubHkgU291cmNlTWFwQnVmZmVyICRidWZmZXI7CgogICAgLyoqCiAgICAgKiBUaGUgY3VycmVudCBpbmRlbnRhdGlvbiBvZiB0aGUgQ1NTIG91dHB1dC4KICAgICAqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlIGludCAkaW5kZW50YXRpb24gPSAwOwoKICAgIC8qKgogICAgICogV2hldGhlciB3ZSdyZSBlbWl0dGluZyBhbiB1bmFtYmlndW91cyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc291cmNlCiAgICAgKiBzdHJ1Y3R1cmUsIGFzIG9wcG9zZWQgdG8gdmFsaWQgQ1NTLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGluc3BlY3Q7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHF1b3RlZCBzdHJpbmdzIHNob3VsZCBiZSBlbWl0dGVkIHdpdGggcXVvdGVzLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJHF1b3RlOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgTG9nZ2VySW50ZXJmYWNlICRsb2dnZXI7CgogICAgcHJpdmF0ZSByZWFkb25seSBib29sICRjb21wcmVzc2VkOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChib29sICRpbnNwZWN0ID0gZmFsc2UsIGJvb2wgJHF1b3RlID0gdHJ1ZSwgT3V0cHV0U3R5bGUgJHN0eWxlID0gT3V0cHV0U3R5bGU6OkVYUEFOREVELCBib29sICRzb3VyY2VNYXAgPSBmYWxzZSwgP0xvZ2dlckludGVyZmFjZSAkbG9nZ2VyID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyID0gJHNvdXJjZU1hcCA/IG5ldyBUcmFja2luZ1NvdXJjZU1hcEJ1ZmZlcigpIDogbmV3IFNpbXBsZVN0cmluZ0J1ZmZlcigpOwogICAgICAgICR0aGlzLT5pbnNwZWN0ID0gJGluc3BlY3Q7CiAgICAgICAgJHRoaXMtPnF1b3RlID0gJHF1b3RlOwogICAgICAgICR0aGlzLT5sb2dnZXIgPSAkbG9nZ2VyID8/IG5ldyBRdWlldExvZ2dlcigpOwogICAgICAgICR0aGlzLT5jb21wcmVzc2VkID0gJHN0eWxlID09PSBPdXRwdXRTdHlsZTo6Q09NUFJFU1NFRDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QnVmZmVyKCk6IFNvdXJjZU1hcEJ1ZmZlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YnVmZmVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENzc1N0eWxlc2hlZXQoQ3NzU3R5bGVzaGVldCAkbm9kZSk6IHZvaWQKICAgIHsKICAgICAgICAkcHJldmlvdXMgPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkbm9kZS0+Z2V0Q2hpbGRyZW4oKSBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0ludmlzaWJsZSgkY2hpbGQpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRwcmV2aW91cyAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5yZXF1aXJlc1NlbWljb2xvbigkcHJldmlvdXMpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCc7Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pc1RyYWlsaW5nQ29tbWVudCgkY2hpbGQsICRwcmV2aW91cykpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUxpbmVGZWVkKCk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkcHJldmlvdXMtPmlzR3JvdXBFbmQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVMaW5lRmVlZCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHByZXZpb3VzID0gJGNoaWxkOwogICAgICAgICAgICAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHByZXZpb3VzICE9PSBudWxsICYmICR0aGlzLT5yZXF1aXJlc1NlbWljb2xvbigkcHJldmlvdXMpICYmICEkdGhpcy0+Y29tcHJlc3NlZCkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJzsnKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzQ29tbWVudChDc3NDb21tZW50ICRub2RlKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5mb3IoJG5vZGUsIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgLy8gUHJlc2VydmUgY29tbWVudHMgdGhhdCBzdGFydCB3aXRoIGAvKiFgLgogICAgICAgICAgICBpZiAoJHRoaXMtPmNvbXByZXNzZWQgJiYgISRub2RlLT5pc1ByZXNlcnZlZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElnbm9yZSBzb3VyY2VNYXBwaW5nVVJMIGFuZCBzb3VyY2VVUkwgY29tbWVudHMuCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCd7Xi9cKiMgc291cmNlKE1hcHBpbmcpP1VSTD19JywgJG5vZGUtPmdldFRleHQoKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1pbmltdW1JbmRlbnRhdGlvbiA9ICR0aGlzLT5taW5pbXVtSW5kZW50YXRpb24oJG5vZGUtPmdldFRleHQoKSk7CiAgICAgICAgICAgIGFzc2VydCgkbWluaW11bUluZGVudGF0aW9uICE9PSAtMSk7CgogICAgICAgICAgICBpZiAoJG1pbmltdW1JbmRlbnRhdGlvbiA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlSW5kZW50YXRpb24oKTsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCRub2RlLT5nZXRUZXh0KCkpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWluaW11bUluZGVudGF0aW9uID0gbWluKCRtaW5pbXVtSW5kZW50YXRpb24sICRub2RlLT5nZXRTcGFuKCktPmdldFN0YXJ0KCktPmdldENvbHVtbigpKTsKICAgICAgICAgICAgJHRoaXMtPndyaXRlSW5kZW50YXRpb24oKTsKICAgICAgICAgICAgJHRoaXMtPndyaXRlV2l0aEluZGVudCgkbm9kZS0+Z2V0VGV4dCgpLCAkbWluaW11bUluZGVudGF0aW9uKTsKICAgICAgICB9KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NBdFJ1bGUoQ3NzQXRSdWxlICRub2RlKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT53cml0ZUluZGVudGF0aW9uKCk7CgogICAgICAgICR0aGlzLT5mb3IoJG5vZGUsIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCdAJyk7CiAgICAgICAgICAgICR0aGlzLT53cml0ZSgkbm9kZS0+Z2V0TmFtZSgpKTsKCiAgICAgICAgICAgICR2YWx1ZSA9ICRub2RlLT5nZXRWYWx1ZSgpOwoKICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcgJyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGUoJHZhbHVlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEkbm9kZS0+aXNDaGlsZGxlc3MoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlT3B0aW9uYWxTcGFjZSgpOwogICAgICAgICAgICAgICAgJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzTWVkaWFSdWxlKENzc01lZGlhUnVsZSAkbm9kZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+d3JpdGVJbmRlbnRhdGlvbigpOwoKICAgICAgICAkdGhpcy0+Zm9yKCRub2RlLCBmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCdAbWVkaWEnKTsKCiAgICAgICAgICAgICRmaXJzdFF1ZXJ5ID0gJG5vZGUtPmdldFF1ZXJpZXMoKVswXTsKCiAgICAgICAgICAgIGlmICghJHRoaXMtPmNvbXByZXNzZWQgfHwgJGZpcnN0UXVlcnktPmdldE1vZGlmaWVyKCkgIT09IG51bGwgfHwgJGZpcnN0UXVlcnktPmdldFR5cGUoKSAhPT0gbnVsbCB8fCAoXGNvdW50KCRmaXJzdFF1ZXJ5LT5nZXRDb25kaXRpb25zKCkpID09PSAxKSAmJiBzdHJfc3RhcnRzX3dpdGgoJGZpcnN0UXVlcnktPmdldENvbmRpdGlvbnMoKVswXSwgJyhub3QgJykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignICcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+d3JpdGVCZXR3ZWVuKCRub2RlLT5nZXRRdWVyaWVzKCksICR0aGlzLT5nZXRDb21tYVNlcGFyYXRvcigpLCAkdGhpcy0+dmlzaXRNZWRpYVF1ZXJ5KC4uLikpOwogICAgICAgIH0pOwoKICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENzc0ltcG9ydChDc3NJbXBvcnQgJG5vZGUpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPndyaXRlSW5kZW50YXRpb24oKTsKCiAgICAgICAgJHRoaXMtPmZvcigkbm9kZSwgZnVuY3Rpb24gKCkgdXNlICgkbm9kZSkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgnQGltcG9ydCcpOwogICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICR0aGlzLT5mb3IoJG5vZGUtPmdldFVybCgpLCBmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVJbXBvcnRVcmwoJG5vZGUtPmdldFVybCgpLT5nZXRWYWx1ZSgpKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoJG5vZGUtPmdldE1vZGlmaWVycygpICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGUoJG5vZGUtPmdldE1vZGlmaWVycygpKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogV3JpdGVzICR1cmwsIHdoaWNoIGlzIGFuIGltcG9ydCdzIFVSTCwgdG8gdGhlIGJ1ZmZlci4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZUltcG9ydFVybChzdHJpbmcgJHVybCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jb21wcmVzc2VkIHx8ICR1cmxbMF0gIT09ICd1JykgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdXJsKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhpcyBpcyB1cmwoLi4uKSwgcmVtb3ZlIHRoZSBzdXJyb3VuZGluZyBmdW5jdGlvbi4gVGhpcyBpcyB0ZXJzZXIgYW5kCiAgICAgICAgLy8gaXQgYWxsb3dzIHVzIHRvIHJlbW92ZSB3aGl0ZXNwYWNlIGJldHdlZW4gYEBpbXBvcnRgIGFuZCB0aGUgVVJMLgogICAgICAgICR1cmxDb250ZW50cyA9IHN1YnN0cigkdXJsLCA0LCBcc3RybGVuKCR1cmwpIC0gNSk7CgogICAgICAgICRtYXliZVF1b3RlID0gJHVybENvbnRlbnRzWzBdOwogICAgICAgIGlmICgkbWF5YmVRdW90ZSA9PT0gIiciIHx8ICRtYXliZVF1b3RlID09PSAnIicpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHVybENvbnRlbnRzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBJZiB0aGUgVVJMIGRpZG4ndCBjb250YWluIHF1b3Rlcywgd3JpdGUgdGhlbSBtYW51YWxseS4KICAgICAgICAgICAgJHRoaXMtPnZpc2l0UXVvdGVkU3RyaW5nKCR1cmxDb250ZW50cyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENzc0tleWZyYW1lQmxvY2soQ3NzS2V5ZnJhbWVCbG9jayAkbm9kZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+d3JpdGVJbmRlbnRhdGlvbigpOwoKICAgICAgICAkdGhpcy0+Zm9yKCRub2RlLT5nZXRTZWxlY3RvcigpLCBmdW5jdGlvbiAoKSB1c2UgKCRub2RlKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZUJldHdlZW4oJG5vZGUtPmdldFNlbGVjdG9yKCktPmdldFZhbHVlKCksICR0aGlzLT5nZXRDb21tYVNlcGFyYXRvcigpLCAkdGhpcy0+YnVmZmVyLT53cml0ZSguLi4pKTsKICAgICAgICB9KTsKICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdmlzaXRNZWRpYVF1ZXJ5KENzc01lZGlhUXVlcnkgJHF1ZXJ5KTogdm9pZAogICAgewogICAgICAgIGlmICgkcXVlcnktPmdldE1vZGlmaWVyKCkgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHF1ZXJ5LT5nZXRNb2RpZmllcigpKTsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcgJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHF1ZXJ5LT5nZXRUeXBlKCkgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHF1ZXJ5LT5nZXRUeXBlKCkpOwoKICAgICAgICAgICAgaWYgKFxjb3VudCgkcXVlcnktPmdldENvbmRpdGlvbnMoKSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCcgYW5kICcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCRxdWVyeS0+Z2V0Q29uZGl0aW9ucygpKSA9PT0gMSAmJiBzdHJfc3RhcnRzX3dpdGgoJHF1ZXJ5LT5nZXRDb25kaXRpb25zKClbMF0sICcobm90ICcpKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCdub3QgJyk7CiAgICAgICAgICAgICRjb25kaXRpb24gPSAkcXVlcnktPmdldENvbmRpdGlvbnMoKVswXTsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoc3Vic3RyKCRjb25kaXRpb24sIFxzdHJsZW4oJyhub3QgJyksIFxzdHJsZW4oJGNvbmRpdGlvbikgLSAoXHN0cmxlbignKG5vdCAnKSArIDEpKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG9wZXJhdG9yID0gJHF1ZXJ5LT5pc0Nvbmp1bmN0aW9uKCkgPyAnYW5kJyA6ICdvcic7CgogICAgICAgICAgICAkdGhpcy0+d3JpdGVCZXR3ZWVuKCRxdWVyeS0+Z2V0Q29uZGl0aW9ucygpLCAkdGhpcy0+Y29tcHJlc3NlZCA/ICIkb3BlcmF0b3IgIiA6ICIgJG9wZXJhdG9yICIsICR0aGlzLT5idWZmZXItPndyaXRlKC4uLikpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdHlsZVJ1bGUoQ3NzU3R5bGVSdWxlICRub2RlKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT53cml0ZUluZGVudGF0aW9uKCk7CgogICAgICAgICR0aGlzLT5mb3IoJG5vZGUtPmdldFNlbGVjdG9yKCksIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgJG5vZGUtPmdldFNlbGVjdG9yKCktPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgfSk7CiAgICAgICAgJHRoaXMtPndyaXRlT3B0aW9uYWxTcGFjZSgpOwogICAgICAgICR0aGlzLT52aXNpdENoaWxkcmVuKCRub2RlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdXBwb3J0c1J1bGUoQ3NzU3VwcG9ydHNSdWxlICRub2RlKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT53cml0ZUluZGVudGF0aW9uKCk7CgogICAgICAgICR0aGlzLT5mb3IoJG5vZGUsIGZ1bmN0aW9uICgpIHVzZSAoJG5vZGUpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJ0BzdXBwb3J0cycpOwoKICAgICAgICAgICAgaWYgKCEoJHRoaXMtPmNvbXByZXNzZWQgJiYgJG5vZGUtPmdldENvbmRpdGlvbigpLT5nZXRWYWx1ZSgpWzBdID09PSAnKCcpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyAnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCRub2RlLT5nZXRDb25kaXRpb24oKSk7CiAgICAgICAgfSk7CiAgICAgICAgJHRoaXMtPndyaXRlT3B0aW9uYWxTcGFjZSgpOwogICAgICAgICR0aGlzLT52aXNpdENoaWxkcmVuKCRub2RlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NEZWNsYXJhdGlvbihDc3NEZWNsYXJhdGlvbiAkbm9kZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJG5vZGUtPmdldEludGVybGVhdmVkUnVsZXMoKSAhPT0gW10pIHsKICAgICAgICAgICAgXGFzc2VydCgkbm9kZS0+Z2V0UGFyZW50KCkgIT09IG51bGwpOwogICAgICAgICAgICAkZGVjbFNwZWNpZmljaXRpZXMgPSAkdGhpcy0+c3BlY2lmaWNpdGllcygkbm9kZS0+Z2V0UGFyZW50KCkpOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG5vZGUtPmdldEludGVybGVhdmVkUnVsZXMoKSBhcyAkcnVsZSkgewogICAgICAgICAgICAgICAgJHJ1bGVTcGVjaWZpY2l0aWVzID0gJHRoaXMtPnNwZWNpZmljaXRpZXMoJHJ1bGUpOwoKICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkZWNsYXJhdGlvbiBjYW4gbmV2ZXIgbWF0Y2ggd2l0aCB0aGUgc2FtZSBzcGVjaWZpY2l0eSBhcyBvbmUKICAgICAgICAgICAgICAgIC8vIG9mIGl0cyBzaWJsaW5nIHJ1bGVzLCB0aGVuIG9yZGVyaW5nIHdpbGwgbmV2ZXIgbWF0dGVyIGFuZCB0aGVyZSdzIG5vCiAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIHdhcm4gYWJvdXQgdGhlIGRlY2xhcmF0aW9uIGJlaW5nIHJlLW9yZGVyZWQuCiAgICAgICAgICAgICAgICBpZiAoIUl0ZXJhYmxlVXRpbDo6YW55KCRkZWNsU3BlY2lmaWNpdGllcywgZm4gKCRzKSA9PiBcaW5fYXJyYXkoJHMsICRydWxlU3BlY2lmaWNpdGllcywgdHJ1ZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTG9nZ2VyVXRpbDo6d2FybkZvckRlcHJlY2F0aW9uKAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5sb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb246Om1peGVkRGVjbHMsCiAgICAgICAgICAgICAgICAgICAgPDw8J01FU1NBR0UnCiAgICAgICAgICAgICAgICAgICAgU2FzcydzIGJlaGF2aW9yIGZvciBkZWNsYXJhdGlvbnMgdGhhdCBhcHBlYXIgYWZ0ZXIgbmVzdGVkCiAgICAgICAgICAgICAgICAgICAgcnVsZXMgd2lsbCBiZSBjaGFuZ2luZyB0byBtYXRjaCB0aGUgYmVoYXZpb3Igc3BlY2lmaWVkIGJ5IENTUyBpbiBhbiB1cGNvbWluZwogICAgICAgICAgICAgICAgICAgIHZlcnNpb24uIFRvIGtlZXAgdGhlIGV4aXN0aW5nIGJlaGF2aW9yLCBtb3ZlIHRoZSBkZWNsYXJhdGlvbiBhYm92ZSB0aGUgbmVzdGVkCiAgICAgICAgICAgICAgICAgICAgcnVsZS4gVG8gb3B0IGludG8gdGhlIG5ldyBiZWhhdmlvciwgd3JhcCB0aGUgZGVjbGFyYXRpb24gaW4gYCYge31gLgoKICAgICAgICAgICAgICAgICAgICBNb3JlIGluZm86IGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL21peGVkLWRlY2xzCiAgICAgICAgICAgICAgICAgICAgTUVTU0FHRSwKICAgICAgICAgICAgICAgICAgICBuZXcgTXVsdGlTcGFuKCRub2RlLT5nZXRTcGFuKCksICdkZWNsYXJhdGlvbicsIFsKICAgICAgICAgICAgICAgICAgICAgICAgJ25lc3RlZCBydWxlJyA9PiAkcnVsZS0+Z2V0U3BhbigpLAogICAgICAgICAgICAgICAgICAgIF0pLAogICAgICAgICAgICAgICAgICAgICRub2RlLT5nZXRUcmFjZSgpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d3JpdGVJbmRlbnRhdGlvbigpOwogICAgICAgICR0aGlzLT53cml0ZSgkbm9kZS0+Z2V0TmFtZSgpKTsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJzonKTsKCiAgICAgICAgLy8gSWYgYG5vZGVgIGlzIGEgY3VzdG9tIHByb3BlcnR5IHRoYXQgd2FzIHBhcnNlZCBhcyBhIG5vcm1hbCBTYXNzLXN5bnRheAogICAgICAgIC8vIHByb3BlcnR5IChzdWNoIGFzIGAjey0tZm9vfTogLi4uYCksIHdlIHNlcmlhbGl6ZSBpdHMgdmFsdWUgdXNpbmcgdGhlCiAgICAgICAgLy8gbm9ybWFsIFNhc3MgcHJvcGVydHkgbG9naWMgYXMgd2VsbC4KICAgICAgICBpZiAoJG5vZGUtPmlzQ3VzdG9tUHJvcGVydHkoKSAmJiAkbm9kZS0+aXNQYXJzZWRBc0N1c3RvbVByb3BlcnR5KCkpIHsKICAgICAgICAgICAgJHRoaXMtPmZvcigkbm9kZS0+Z2V0VmFsdWUoKSwgZnVuY3Rpb24gKCkgdXNlICgkbm9kZSkgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5jb21wcmVzc2VkKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlRm9sZGVkVmFsdWUoJG5vZGUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVSZWluZGVudGVkVmFsdWUoJG5vZGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+Zm9yU3Bhbigkbm9kZS0+Z2V0VmFsdWVTcGFuRm9yTWFwKCksIGZuICgpID0+ICRub2RlLT5nZXRWYWx1ZSgpLT5nZXRWYWx1ZSgpLT5hY2NlcHQoJHRoaXMpKTsKICAgICAgICAgICAgfSBjYXRjaCAoU2Fzc1NjcmlwdEV4Y2VwdGlvbiAkZXJyb3IpIHsKICAgICAgICAgICAgICAgIHRocm93ICRlcnJvci0+d2l0aFNwYW4oJG5vZGUtPmdldFZhbHVlKCktPmdldFNwYW4oKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgcG9zc2libGUgc3BlY2lmaWNpdGllcyB3aXRoIHdoaWNoICRub2RlIG1pZ2h0IG1hdGNoLgogICAgICoKICAgICAqIEByZXR1cm4gbm9uLWVtcHR5LWFycmF5PGludD4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzcGVjaWZpY2l0aWVzKENzc1BhcmVudE5vZGUgJG5vZGUpOiBhcnJheQogICAgewogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIENzc1N0eWxlUnVsZSkgewogICAgICAgICAgICAvLyBQbGFpbiBDU1Mgc3R5bGUgcnVsZSBuZXN0aW5nIGltcGxpY2l0bHkgd3JhcHMgcGFyZW50IHNlbGVjdG9ycyBpbgogICAgICAgICAgICAvLyBgOmlzKClgLCBzbyB0aGV5IGFsbCBtYXRjaCB3aXRoIHRoZSBoaWdoZXN0IHNwZWNpZmljaXR5IGFtb25nIGFueSBvZgogICAgICAgICAgICAvLyB0aGVtLgogICAgICAgICAgICBpZiAoJG5vZGUtPmdldFBhcmVudCgpICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkcGFyZW50ID0gbWF4KCR0aGlzLT5zcGVjaWZpY2l0aWVzKCRub2RlLT5nZXRQYXJlbnQoKSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHBhcmVudCA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBhcnJheV9tYXAoZm4gKENvbXBsZXhTZWxlY3RvciAkc2VsZWN0b3IpID0+ICRwYXJlbnQgKyAkc2VsZWN0b3ItPmdldFNwZWNpZmljaXR5KCksICRub2RlLT5nZXRTZWxlY3RvcigpLT5nZXRDb21wb25lbnRzKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRub2RlLT5nZXRQYXJlbnQoKSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNwZWNpZmljaXRpZXMoJG5vZGUtPmdldFBhcmVudCgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbMF07CiAgICB9CgogICAgLyoqCiAgICAgKiBFbWl0cyB0aGUgdmFsdWUgb2YgJG5vZGUsIHdpdGggYWxsIG5ld2xpbmVzIGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZUZvbGRlZFZhbHVlKENzc0RlY2xhcmF0aW9uICRub2RlKTogdm9pZAogICAgewogICAgICAgICR2YWx1ZSA9ICRub2RlLT5nZXRWYWx1ZSgpLT5nZXRWYWx1ZSgpOwogICAgICAgIGFzc2VydCgkdmFsdWUgaW5zdGFuY2VvZiBTYXNzU3RyaW5nKTsKICAgICAgICAkc2Nhbm5uZXIgPSBuZXcgU3RyaW5nU2Nhbm5lcigkdmFsdWUtPmdldFRleHQoKSk7CgogICAgICAgIHdoaWxlICghJHNjYW5ubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICAkbmV4dCA9ICRzY2Fubm5lci0+cmVhZFV0ZjhDaGFyKCk7CiAgICAgICAgICAgIGlmICgkbmV4dCAhPT0gIlxuIikgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCRuZXh0KTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyAnKTsKICAgICAgICAgICAgd2hpbGUgKENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCRzY2Fubm5lci0+cGVla0NoYXIoKSkpIHsKICAgICAgICAgICAgICAgICRzY2Fubm5lci0+cmVhZENoYXIoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiAkbm9kZSwgcmUtaW5kZW50ZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgaW5kZW50YXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd3JpdGVSZWluZGVudGVkVmFsdWUoQ3NzRGVjbGFyYXRpb24gJG5vZGUpOiB2b2lkCiAgICB7CiAgICAgICAgJG5vZGVWYWx1ZSA9ICRub2RlLT5nZXRWYWx1ZSgpLT5nZXRWYWx1ZSgpOwogICAgICAgIGFzc2VydCgkbm9kZVZhbHVlIGluc3RhbmNlb2YgU2Fzc1N0cmluZyk7CiAgICAgICAgJHZhbHVlID0gJG5vZGVWYWx1ZS0+Z2V0VGV4dCgpOwoKICAgICAgICAkbWluaW11bUluZGVudGF0aW9uID0gJHRoaXMtPm1pbmltdW1JbmRlbnRhdGlvbigkdmFsdWUpOwogICAgICAgIGlmICgkbWluaW11bUluZGVudGF0aW9uID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR2YWx1ZSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICgkbWluaW11bUluZGVudGF0aW9uID09PSAtMSkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZShTdHJpbmdVdGlsOjp0cmltQXNjaWlSaWdodCgkdmFsdWUsIHRydWUpKTsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcgJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRtaW5pbXVtSW5kZW50YXRpb24gPSBtaW4oJG1pbmltdW1JbmRlbnRhdGlvbiwgJG5vZGUtPmdldE5hbWUoKS0+Z2V0U3BhbigpLT5nZXRTdGFydCgpLT5nZXRDb2x1bW4oKSk7CiAgICAgICAgJHRoaXMtPndyaXRlV2l0aEluZGVudCgkdmFsdWUsICRtaW5pbXVtSW5kZW50YXRpb24pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5kZW50YXRpb24gbGV2ZWwgb2YgdGhlIGxlYXN0LWluZGVudGVkIG5vbi1lbXB0eSBsaW5lIGluCiAgICAgKiAkdGV4dCBhZnRlciB0aGUgZmlyc3QuCiAgICAgKgogICAgICogUmV0dXJucyBgbnVsbGAgaWYgJHRleHQgY29udGFpbnMgbm8gbmV3bGluZXMsIGFuZCAtMSBpZiBpdCBjb250YWlucwogICAgICogbmV3bGluZXMgYnV0IG5vIGxpbmVzIGFyZSBpbmRlbnRlZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBtaW5pbXVtSW5kZW50YXRpb24oc3RyaW5nICR0ZXh0KTogP2ludAogICAgewogICAgICAgICRzY2FubmVyID0gbmV3IExpbmVTY2FubmVyKCR0ZXh0KTsKICAgICAgICB3aGlsZSAoISRzY2FubmVyLT5pc0RvbmUoKSAmJiAkc2Nhbm5lci0+cmVhZENoYXIoKSAhPT0gIlxuIikgewogICAgICAgIH0KCiAgICAgICAgaWYgKCRzY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICByZXR1cm4gJHNjYW5uZXItPnBlZWtDaGFyKC0xKSA9PT0gIlxuIiA/IC0xIDogbnVsbDsKICAgICAgICB9CgogICAgICAgICRtaW4gPSBudWxsOwogICAgICAgIHdoaWxlICghJHNjYW5uZXItPmlzRG9uZSgpKSB7CiAgICAgICAgICAgIHdoaWxlICghJHNjYW5uZXItPmlzRG9uZSgpKSB7CiAgICAgICAgICAgICAgICAkbmV4dCA9ICRzY2FubmVyLT5wZWVrQ2hhcigpOwogICAgICAgICAgICAgICAgaWYgKCRuZXh0ICE9PSAnICcgJiYgJG5leHQgIT09ICJcdCIpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNjYW5uZXItPmlzRG9uZSgpIHx8ICRzY2FubmVyLT5zY2FuQ2hhcigiXG4iKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRtaW4gPSAkbWluID09PSBudWxsID8gJHNjYW5uZXItPmdldENvbHVtbigpIDogbWluKCRtaW4sICRzY2FubmVyLT5nZXRDb2x1bW4oKSk7CgogICAgICAgICAgICB3aGlsZSAoISRzY2FubmVyLT5pc0RvbmUoKSAmJiAkc2Nhbm5lci0+cmVhZENoYXIoKSAhPT0gIlxuIikgewogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1pbiA/PyAtMTsKICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyAkdGV4dCB0byB7QHNlZSBidWZmZXJ9LCByZXBsYWNpbmcgJG1pbmltdW1JbmRlbnRhdGlvbiB3aXRoCiAgICAgKiB7QHNlZSBpbmRlbnRhdGlvbn0gZm9yIGVhY2ggbm9uLWVtcHR5IGxpbmUgYWZ0ZXIgdGhlIGZpcnN0LgogICAgICoKICAgICAqIENvbXByZXNzZXMgdHJhaWxpbmcgZW1wdHkgbGluZXMgb2YgJHRleHQgaW50byBhIHNpbmdsZSB0cmFpbGluZyBzcGFjZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZVdpdGhJbmRlbnQoc3RyaW5nICR0ZXh0LCBpbnQgJG1pbmltdW1JbmRlbnRhdGlvbik6IHZvaWQKICAgIHsKICAgICAgICAkc2Nhbm5lciA9IG5ldyBMaW5lU2Nhbm5lcigkdGV4dCk7CgogICAgICAgIHdoaWxlICghJHNjYW5uZXItPmlzRG9uZSgpKSB7CiAgICAgICAgICAgICRuZXh0ID0gJHNjYW5uZXItPnJlYWRDaGFyKCk7CgogICAgICAgICAgICBpZiAoJG5leHQgPT09ICJcbiIpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcigkbmV4dCk7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICBhc3NlcnQoQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJHNjYW5uZXItPnBlZWtDaGFyKC0xKSkpOwogICAgICAgICAgICAvLyBTY2FuIGZvcndhcmQgdW50aWwgd2UgaGl0IG5vbi13aGl0ZXNwYWNlIG9yIHRoZSBlbmQgb2YgW3RleHRdLgogICAgICAgICAgICAkbGluZVN0YXJ0ID0gJHNjYW5uZXItPmdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgICRuZXdsaW5lcyA9IDE7CgogICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgLy8gSWYgd2UgaGl0IHRoZSBlbmQgb2YgJHRleHQsIHdlIHN0aWxsIG5lZWQgdG8gcHJlc2VydmUgdGhlIGZhY3QgdGhhdAogICAgICAgICAgICAgICAgLy8gd2hpdGVzcGFjZSBleGlzdHMgYmVjYXVzZSBpdCBjb3VsZCBtYXR0ZXIgZm9yIGN1c3RvbSBwcm9wZXJ0aWVzLgogICAgICAgICAgICAgICAgaWYgKCRzY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignICcpOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkbmV4dCA9ICRzY2FubmVyLT5yZWFkQ2hhcigpOwoKICAgICAgICAgICAgICAgIGlmICgkbmV4dCA9PT0gJyAnIHx8ICRuZXh0ID09PSAiXHQiKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRuZXh0ICE9PSAiXG4iKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxpbmVTdGFydCA9ICRzY2FubmVyLT5nZXRQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgJG5ld2xpbmVzKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT53cml0ZVRpbWVzKCJcbiIsICRuZXdsaW5lcyk7CiAgICAgICAgICAgICR0aGlzLT53cml0ZUluZGVudGF0aW9uKCk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCRzY2FubmVyLT5zdWJzdHJpbmcoJGxpbmVTdGFydCArICRtaW5pbXVtSW5kZW50YXRpb24pKTsKCiAgICAgICAgICAgIC8vIFNjYW4gYW5kIHdyaXRlIHVudGlsIHdlIGhpdCBhIG5ld2xpbmUgb3IgdGhlIGVuZCBvZiAkdGV4dC4KICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgIGlmICgkc2Nhbm5lci0+aXNEb25lKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbmV4dCA9ICRzY2FubmVyLT5yZWFkQ2hhcigpOwogICAgICAgICAgICAgICAgaWYgKCRuZXh0ID09PSAiXG4iKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJG5leHQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8vICMjIFZhbHVlcwoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEJvb2xlYW4oU2Fzc0Jvb2xlYW4gJHZhbHVlKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR2YWx1ZS0+Z2V0VmFsdWUoKSA/ICd0cnVlJyA6ICdmYWxzZScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENhbGN1bGF0aW9uKFNhc3NDYWxjdWxhdGlvbiAkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHZhbHVlLT5nZXROYW1lKCkpOwogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignKCcpOwoKICAgICAgICAkaXNGaXJzdCA9IHRydWU7CgogICAgICAgIGZvcmVhY2ggKCR2YWx1ZS0+Z2V0QXJndW1lbnRzKCkgYXMgJGFyZ3VtZW50KSB7CiAgICAgICAgICAgIGlmICgkaXNGaXJzdCkgewogICAgICAgICAgICAgICAgJGlzRmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR0aGlzLT5nZXRDb21tYVNlcGFyYXRvcigpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndyaXRlQ2FsY3VsYXRpb25WYWx1ZSgkYXJndW1lbnQpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyknKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlQ2FsY3VsYXRpb25WYWx1ZShvYmplY3QgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICR2YWx1ZS0+aGFzQ29tcGxleFVuaXRzKCkgJiYgISR0aGlzLT5pbnNwZWN0KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCIkdmFsdWUgaXNuJ3QgYSB2YWxpZCBDU1MgdmFsdWUuIik7CiAgICAgICAgfQogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICFpc19maW5pdGUoJHZhbHVlLT5nZXRWYWx1ZSgpKSkgewogICAgICAgICAgICBpZiAoaXNfbmFuKCR2YWx1ZS0+Z2V0VmFsdWUoKSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCdOYU4nKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCR2YWx1ZS0+Z2V0VmFsdWUoKSA+IDApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCdpbmZpbml0eScpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJy1pbmZpbml0eScpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+d3JpdGVDYWxjdWxhdGlvblVuaXRzKCR2YWx1ZS0+Z2V0TnVtZXJhdG9yVW5pdHMoKSwgJHZhbHVlLT5nZXREZW5vbWluYXRvclVuaXRzKCkpOwogICAgICAgIH0gZWxzZWlmICgkdmFsdWUgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICR2YWx1ZS0+aGFzQ29tcGxleFVuaXRzKCkpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlTnVtYmVyKCR2YWx1ZS0+Z2V0VmFsdWUoKSk7CgogICAgICAgICAgICAkZmlyc3RVbml0ID0gJHZhbHVlLT5nZXROdW1lcmF0b3JVbml0cygpWzBdID8/IG51bGw7CgogICAgICAgICAgICBpZiAoJGZpcnN0VW5pdCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJGZpcnN0VW5pdCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVDYWxjdWxhdGlvblVuaXRzKGFycmF5X3NsaWNlKCR2YWx1ZS0+Z2V0TnVtZXJhdG9yVW5pdHMoKSwgMSksICR2YWx1ZS0+Z2V0RGVub21pbmF0b3JVbml0cygpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUNhbGN1bGF0aW9uVW5pdHMoW10sICR2YWx1ZS0+Z2V0RGVub21pbmF0b3JVbml0cygpKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkdmFsdWUgaW5zdGFuY2VvZiBWYWx1ZSkgewogICAgICAgICAgICAkdmFsdWUtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgfSBlbHNlaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIENhbGN1bGF0aW9uT3BlcmF0aW9uKSB7CiAgICAgICAgICAgICRsZWZ0ID0gJHZhbHVlLT5nZXRMZWZ0KCk7CiAgICAgICAgICAgICRwYXJlbnRoZXNpemVMZWZ0ID0gJGxlZnQgaW5zdGFuY2VvZiBDYWxjdWxhdGlvbk9wZXJhdGlvbiAmJiAkbGVmdC0+Z2V0T3BlcmF0b3IoKS0+Z2V0UHJlY2VkZW5jZSgpIDwgJHZhbHVlLT5nZXRPcGVyYXRvcigpLT5nZXRQcmVjZWRlbmNlKCk7CgogICAgICAgICAgICBpZiAoJHBhcmVudGhlc2l6ZUxlZnQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignKCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT53cml0ZUNhbGN1bGF0aW9uVmFsdWUoJGxlZnQpOwogICAgICAgICAgICBpZiAoJHBhcmVudGhlc2l6ZUxlZnQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignKScpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkb3BlcmF0b3JXaGl0ZXNwYWNlID0gISR0aGlzLT5jb21wcmVzc2VkIHx8ICR2YWx1ZS0+Z2V0T3BlcmF0b3IoKS0+Z2V0UHJlY2VkZW5jZSgpID09PSAxOwogICAgICAgICAgICBpZiAoJG9wZXJhdG9yV2hpdGVzcGFjZSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcgJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHZhbHVlLT5nZXRPcGVyYXRvcigpLT5nZXRPcGVyYXRvcigpKTsKICAgICAgICAgICAgaWYgKCRvcGVyYXRvcldoaXRlc3BhY2UpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignICcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmlnaHQgPSAkdmFsdWUtPmdldFJpZ2h0KCk7CiAgICAgICAgICAgICRwYXJlbnRoZXNpemVSaWdodCA9ICgkcmlnaHQgaW5zdGFuY2VvZiBDYWxjdWxhdGlvbk9wZXJhdGlvbiAmJiAkdGhpcy0+cGFyZW50aGVzaXplQ2FsY3VsYXRpb25SaHMoJHZhbHVlLT5nZXRPcGVyYXRvcigpLCAkcmlnaHQtPmdldE9wZXJhdG9yKCkpKQogICAgICAgICAgICAgICAgfHwgKCR2YWx1ZS0+Z2V0T3BlcmF0b3IoKSA9PT0gQ2FsY3VsYXRpb25PcGVyYXRvcjo6RElWSURFRF9CWSAmJiAkcmlnaHQgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmIChpc19maW5pdGUoJHJpZ2h0LT5nZXRWYWx1ZSgpKSA/ICRyaWdodC0+aGFzQ29tcGxleFVuaXRzKCkgOiAkcmlnaHQtPmhhc1VuaXRzKCkpKTsKCiAgICAgICAgICAgIGlmICgkcGFyZW50aGVzaXplUmlnaHQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignKCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT53cml0ZUNhbGN1bGF0aW9uVmFsdWUoJHJpZ2h0KTsKICAgICAgICAgICAgaWYgKCRwYXJlbnRoZXNpemVSaWdodCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcpJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBXcml0ZXMgdGhlIGNvbXBsZXggbnVtZXJhdG9yIGFuZCBkZW5vbWluYXRvciB1bml0cyBiZXlvbmQgdGhlIGZpcnN0CiAgICAgKiBudW1lcmF0b3IgdW5pdCBmb3IgYSBudW1iZXIgYXMgdGhleSBhcHBlYXIgaW4gYSBjYWxjdWxhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRudW1lcmF0b3JVbml0cwogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkZGVub21pbmF0b3JVbml0cwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlQ2FsY3VsYXRpb25Vbml0cyhhcnJheSAkbnVtZXJhdG9yVW5pdHMsIGFycmF5ICRkZW5vbWluYXRvclVuaXRzKTogdm9pZAogICAgewogICAgICAgIGZvcmVhY2ggKCRudW1lcmF0b3JVbml0cyBhcyAkdW5pdCkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignKicpOwogICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignMScpOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdW5pdCk7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkZGVub21pbmF0b3JVbml0cyBhcyAkdW5pdCkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignLycpOwogICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignMScpOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdW5pdCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSByaWdodC1oYW5kIG9wZXJhdGlvbiBvZiBhIGNhbGN1bGF0aW9uIHNob3VsZCBiZQogICAgICogcGFyZW50aGVzaXplZC4KICAgICAqCiAgICAgKiBJbiBgYSA/IChiICMgYylgLCBgb3V0ZXJgIGlzIGA/YCBhbmQgYHJpZ2h0YCBpcyBgI2AuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcGFyZW50aGVzaXplQ2FsY3VsYXRpb25SaHMoQ2FsY3VsYXRpb25PcGVyYXRvciAkb3V0ZXIsIENhbGN1bGF0aW9uT3BlcmF0b3IgJHJpZ2h0KTogYm9vbAogICAgewogICAgICAgIGlmICgkb3V0ZXIgPT09IENhbGN1bGF0aW9uT3BlcmF0b3I6OkRJVklERURfQlkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG91dGVyID09PSBDYWxjdWxhdGlvbk9wZXJhdG9yOjpQTFVTKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmlnaHQgPT09IENhbGN1bGF0aW9uT3BlcmF0b3I6OlBMVVMgfHwgJHJpZ2h0ID09PSBDYWxjdWxhdGlvbk9wZXJhdG9yOjpNSU5VUzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb2xvcihTYXNzQ29sb3IgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgICRuYW1lID0gQ29sb3JzOjpSR0JhVG9Db2xvck5hbWUoJHZhbHVlLT5nZXRSZWQoKSwgJHZhbHVlLT5nZXRHcmVlbigpLCAkdmFsdWUtPmdldEJsdWUoKSwgJHZhbHVlLT5nZXRBbHBoYSgpKTsKCiAgICAgICAgLy8gSW4gY29tcHJlc3NlZCBtb2RlLCBlbWl0IGNvbG9ycyBpbiB0aGUgc2hvcnRlc3QgcmVwcmVzZW50YXRpb24gcG9zc2libGUuCiAgICAgICAgaWYgKCR0aGlzLT5jb21wcmVzc2VkKSB7CiAgICAgICAgICAgIGlmICghTnVtYmVyVXRpbDo6ZnV6enlFcXVhbHMoJHZhbHVlLT5nZXRBbHBoYSgpLCAxKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlUmdiKCR2YWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY2FuVXNlU2hvcnRIZXggPSAkdGhpcy0+Y2FuVXNlU2hvcnRIZXgoJHZhbHVlKTsKICAgICAgICAgICAgICAgICRoZXhMZW5ndGggPSAkY2FuVXNlU2hvcnRIZXggPyA0IDogNzsKCiAgICAgICAgICAgICAgICBpZiAoJG5hbWUgIT09IG51bGwgJiYgXHN0cmxlbigkbmFtZSkgPD0gJGhleExlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCRuYW1lKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkY2FuVXNlU2hvcnRIZXgpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyMnKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoZGVjaGV4KCR2YWx1ZS0+Z2V0UmVkKCkgJiAweEYpKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoZGVjaGV4KCR2YWx1ZS0+Z2V0R3JlZW4oKSAmIDB4RikpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcihkZWNoZXgoJHZhbHVlLT5nZXRCbHVlKCkgJiAweEYpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcjJyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlSGV4Q29tcG9uZW50KCR2YWx1ZS0+Z2V0UmVkKCkpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUhleENvbXBvbmVudCgkdmFsdWUtPmdldEdyZWVuKCkpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUhleENvbXBvbmVudCgkdmFsdWUtPmdldEJsdWUoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRmb3JtYXQgPSAkdmFsdWUtPmdldEZvcm1hdCgpOwoKICAgICAgICBpZiAoJGZvcm1hdCAhPT0gbnVsbCkgewogICAgICAgICAgICBpZiAoJGZvcm1hdCA9PT0gQ29sb3JGb3JtYXRFbnVtOjpyZ2JGdW5jdGlvbikgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlUmdiKCR2YWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkZm9ybWF0ID09PSBDb2xvckZvcm1hdEVudW06OmhzbEZ1bmN0aW9uKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVIc2woJHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRmb3JtYXQgaW5zdGFuY2VvZiBTcGFuQ29sb3JGb3JtYXQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCRmb3JtYXQtPmdldE9yaWdpbmFsKCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBoYXBwZW4gYXMgb3VyIGludGVyZmFjZSBpcyBzZWFsZWQuCiAgICAgICAgICAgICAgICBcYXNzZXJ0KGZhbHNlLCAndW5rbm93biBmb3JtYXQnKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgKICAgICAgICAgICAgJG5hbWUgIT09IG51bGwgJiYKICAgICAgICAgICAgLy8gQWx3YXlzIGVtaXQgZ2VuZXJhdGVkIHRyYW5zcGFyZW50IGNvbG9ycyBpbiByZ2JhIGZvcm1hdC4gVGhpcyB3b3JrcwogICAgICAgICAgICAvLyBhcm91bmQgYW4gSUUgYnVnLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3Mvc2Fzcy9pc3N1ZXMvMTc4Mi4KICAgICAgICAgICAgIU51bWJlclV0aWw6OmZ1enp5RXF1YWxzKCR2YWx1ZS0+Z2V0QWxwaGEoKSwgMCkKICAgICAgICApIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJG5hbWUpOwogICAgICAgIH0gZWxzZWlmIChOdW1iZXJVdGlsOjpmdXp6eUVxdWFscygkdmFsdWUtPmdldEFscGhhKCksIDEpKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignIycpOwogICAgICAgICAgICAkdGhpcy0+d3JpdGVIZXhDb21wb25lbnQoJHZhbHVlLT5nZXRSZWQoKSk7CiAgICAgICAgICAgICR0aGlzLT53cml0ZUhleENvbXBvbmVudCgkdmFsdWUtPmdldEdyZWVuKCkpOwogICAgICAgICAgICAkdGhpcy0+d3JpdGVIZXhDb21wb25lbnQoJHZhbHVlLT5nZXRCbHVlKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZVJnYigkdmFsdWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyAkdmFsdWUgYXMgYW4gYHJnYmAgb3IgYHJnYmFgIGZ1bmN0aW9uLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlUmdiKFNhc3NDb2xvciAkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgJG9wYXF1ZSA9IE51bWJlclV0aWw6OmZ1enp5RXF1YWxzKCR2YWx1ZS0+Z2V0QWxwaGEoKSwgMSk7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJG9wYXF1ZSA/ICdyZ2IoJyA6ICdyZ2JhKCcpOwogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKChzdHJpbmcpICR2YWx1ZS0+Z2V0UmVkKCkpOwogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR0aGlzLT5nZXRDb21tYVNlcGFyYXRvcigpKTsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgoc3RyaW5nKSAkdmFsdWUtPmdldEdyZWVuKCkpOwogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR0aGlzLT5nZXRDb21tYVNlcGFyYXRvcigpKTsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgoc3RyaW5nKSAkdmFsdWUtPmdldEJsdWUoKSk7CgogICAgICAgIGlmICghJG9wYXF1ZSkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdGhpcy0+Z2V0Q29tbWFTZXBhcmF0b3IoKSk7CiAgICAgICAgICAgICR0aGlzLT53cml0ZU51bWJlcigkdmFsdWUtPmdldEFscGhhKCkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcpJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBXcml0ZXMgJHZhbHVlIGFzIGFuIGBoc2xgIG9yIGBoc2xhYCBmdW5jdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZUhzbChTYXNzQ29sb3IgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgICRvcGFxdWUgPSBOdW1iZXJVdGlsOjpmdXp6eUVxdWFscygkdmFsdWUtPmdldEFscGhhKCksIDEpOwogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCRvcGFxdWUgPyAnaHNsKCcgOiAnaHNsYSgnKTsKICAgICAgICAkdGhpcy0+d3JpdGVOdW1iZXIoJHZhbHVlLT5nZXRIdWUoKSk7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHRoaXMtPmdldENvbW1hU2VwYXJhdG9yKCkpOwogICAgICAgICR0aGlzLT53cml0ZU51bWJlcigkdmFsdWUtPmdldFNhdHVyYXRpb24oKSk7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCclJyk7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHRoaXMtPmdldENvbW1hU2VwYXJhdG9yKCkpOwogICAgICAgICR0aGlzLT53cml0ZU51bWJlcigkdmFsdWUtPmdldExpZ2h0bmVzcygpKTsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyUnKTsKCiAgICAgICAgaWYgKCEkb3BhcXVlKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR0aGlzLT5nZXRDb21tYVNlcGFyYXRvcigpKTsKICAgICAgICAgICAgJHRoaXMtPndyaXRlTnVtYmVyKCR2YWx1ZS0+Z2V0QWxwaGEoKSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyknKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkY29sb3IncyBoZXggcGFpciByZXByZXNlbnRhdGlvbiBpcyBzeW1tZXRyaWNhbCAoZS5nLiBgRkZgKS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc1N5bW1ldHJpY2FsSGV4KGludCAkY29sb3IpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICgkY29sb3IgJiAweEYpID09PSAkY29sb3IgPj4gNDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkY29sb3IgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgc2hvcnQgaGV4YWRlY2ltYWwgY29sb3IKICAgICAqIChlLmcuIGAjZmZmYCkuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2FuVXNlU2hvcnRIZXgoU2Fzc0NvbG9yICRjb2xvcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlzU3ltbWV0cmljYWxIZXgoJGNvbG9yLT5nZXRSZWQoKSkgJiYgJHRoaXMtPmlzU3ltbWV0cmljYWxIZXgoJGNvbG9yLT5nZXRHcmVlbigpKSAmJiAkdGhpcy0+aXNTeW1tZXRyaWNhbEhleCgkY29sb3ItPmdldEJsdWUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbWl0cyAkY29sb3IgYXMgYSBoZXggY2hhcmFjdGVyIHBhaXIuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd3JpdGVIZXhDb21wb25lbnQoaW50ICRjb2xvcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZShzdHJfcGFkKGRlY2hleCgkY29sb3IpLCAyLCAnMCcsIFNUUl9QQURfTEVGVCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEZ1bmN0aW9uKFNhc3NGdW5jdGlvbiAkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+aW5zcGVjdCkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiJHZhbHVlIGlzbid0IGEgdmFsaWQgQ1NTIHZhbHVlLiIpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJ2dldC1mdW5jdGlvbignKTsKICAgICAgICAkdGhpcy0+dmlzaXRRdW90ZWRTdHJpbmcoJHZhbHVlLT5nZXRDYWxsYWJsZSgpLT5nZXROYW1lKCkpOwogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignKScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1peGluKFNhc3NNaXhpbiAkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+aW5zcGVjdCkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiJHZhbHVlIGlzbid0IGEgdmFsaWQgQ1NTIHZhbHVlLiIpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJ2dldC1taXhpbignKTsKICAgICAgICAkdGhpcy0+dmlzaXRRdW90ZWRTdHJpbmcoJHZhbHVlLT5nZXRDYWxsYWJsZSgpLT5nZXROYW1lKCkpOwogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignKScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdExpc3QoU2Fzc0xpc3QgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIGlmICgkdmFsdWUtPmhhc0JyYWNrZXRzKCkpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCdbJyk7CiAgICAgICAgfSBlbHNlaWYgKFxjb3VudCgkdmFsdWUtPmFzTGlzdCgpKSA9PT0gMCkgewogICAgICAgICAgICBpZiAoISR0aGlzLT5pbnNwZWN0KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiKCkgaXNuJ3QgYSB2YWxpZCBDU1MgdmFsdWUuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCcoKScpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkc2luZ2xldG9uID0gJHRoaXMtPmluc3BlY3QgJiYgXGNvdW50KCR2YWx1ZS0+YXNMaXN0KCkpID09PSAxICYmICgkdmFsdWUtPmdldFNlcGFyYXRvcigpID09PSBMaXN0U2VwYXJhdG9yOjpDT01NQSB8fCAkdmFsdWUtPmdldFNlcGFyYXRvcigpID09PSBMaXN0U2VwYXJhdG9yOjpTTEFTSCk7CgogICAgICAgIGlmICgkc2luZ2xldG9uICYmICEkdmFsdWUtPmhhc0JyYWNrZXRzKCkpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcoJyk7CiAgICAgICAgfQoKICAgICAgICAkc2VwYXJhdG9yID0gJHRoaXMtPnNlcGFyYXRvclN0cmluZygkdmFsdWUtPmdldFNlcGFyYXRvcigpKTsKCiAgICAgICAgJGlzRmlyc3QgPSB0cnVlOwoKICAgICAgICBmb3JlYWNoICgkdmFsdWUtPmFzTGlzdCgpIGFzICRlbGVtZW50KSB7CiAgICAgICAgICAgIGlmICghJHRoaXMtPmluc3BlY3QgJiYgJGVsZW1lbnQtPmlzQmxhbmsoKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkaXNGaXJzdCkgewogICAgICAgICAgICAgICAgJGlzRmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCRzZXBhcmF0b3IpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbmVlZHNQYXJlbnMgPSAkdGhpcy0+aW5zcGVjdCAmJiBzZWxmOjplbGVtZW50TmVlZHNQYXJlbnMoJHZhbHVlLT5nZXRTZXBhcmF0b3IoKSwgJGVsZW1lbnQpOwoKICAgICAgICAgICAgaWYgKCRuZWVkc1BhcmVucykgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcoJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRlbGVtZW50LT5hY2NlcHQoJHRoaXMpOwoKICAgICAgICAgICAgaWYgKCRuZWVkc1BhcmVucykgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcpJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkc2luZ2xldG9uKSB7CiAgICAgICAgICAgIFxhc3NlcnQoJHZhbHVlLT5nZXRTZXBhcmF0b3IoKS0+Z2V0U2VwYXJhdG9yKCkgIT09IG51bGwsICdUaGUgbGlzdCBzZXBhcmF0b3IgaXMgbm90IHVuZGVjaWRlZCBhdCB0aGF0IHBvaW50LicpOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdmFsdWUtPmdldFNlcGFyYXRvcigpLT5nZXRTZXBhcmF0b3IoKSk7CgogICAgICAgICAgICBpZiAoISR2YWx1ZS0+aGFzQnJhY2tldHMoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcpJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUtPmhhc0JyYWNrZXRzKCkpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCddJyk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gc2VwYXJhdG9yU3RyaW5nKExpc3RTZXBhcmF0b3IgJHNlcGFyYXRvcik6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJHNlcGFyYXRvcikgewogICAgICAgICAgICBMaXN0U2VwYXJhdG9yOjpDT01NQSA9PiAkdGhpcy0+Z2V0Q29tbWFTZXBhcmF0b3IoKSwKICAgICAgICAgICAgTGlzdFNlcGFyYXRvcjo6U0xBU0ggPT4gJHRoaXMtPmNvbXByZXNzZWQgPyAnLycgOiAnIC8gJywKICAgICAgICAgICAgTGlzdFNlcGFyYXRvcjo6U1BBQ0UgPT4gJyAnLAogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogVGhpcyBzaG91bGQgbmV2ZXIgYmUgdXNlZCwgYnV0IGl0IG1heSBzdGlsbCBiZSByZXR1cm5lZCBzaW5jZQogICAgICAgICAgICAgKiB7QHNlZSBzZXBhcmF0b3JTdHJpbmd9IGlzIGludm9rZWQgZWFnZXJseSBieSB7QHNlZSB3cml0ZUxpc3R9IGV2ZW4gZm9yIGxpc3RzCiAgICAgICAgICAgICAqIHdpdGggb25seSBvbmUgZWxlbWVudC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGRlZmF1bHQgPT4gJycsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgdmFsdWUgbmVlZHMgcGFyZW50aGVzZXMgYXMgYW4gZWxlbWVudCBpbiBhIGxpc3Qgd2l0aCB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBlbGVtZW50TmVlZHNQYXJlbnMoTGlzdFNlcGFyYXRvciAkc2VwYXJhdG9yLCBWYWx1ZSAkdmFsdWUpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCEkdmFsdWUgaW5zdGFuY2VvZiBTYXNzTGlzdCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoY291bnQoJHZhbHVlLT5hc0xpc3QoKSkgPCAyKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUtPmhhc0JyYWNrZXRzKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG1hdGNoICgkc2VwYXJhdG9yKSB7CiAgICAgICAgICAgIExpc3RTZXBhcmF0b3I6OkNPTU1BID0+ICR2YWx1ZS0+Z2V0U2VwYXJhdG9yKCkgPT09IExpc3RTZXBhcmF0b3I6OkNPTU1BLAogICAgICAgICAgICBMaXN0U2VwYXJhdG9yOjpTTEFTSCA9PiAkdmFsdWUtPmdldFNlcGFyYXRvcigpID09PSBMaXN0U2VwYXJhdG9yOjpDT01NQSB8fCAkdmFsdWUtPmdldFNlcGFyYXRvcigpID09PSBMaXN0U2VwYXJhdG9yOjpTTEFTSCwKICAgICAgICAgICAgZGVmYXVsdCA9PiAkdmFsdWUtPmdldFNlcGFyYXRvcigpICE9PSBMaXN0U2VwYXJhdG9yOjpVTkRFQ0lERUQsCiAgICAgICAgfTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNYXAoU2Fzc01hcCAkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+aW5zcGVjdCkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiJHZhbHVlIGlzbid0IGEgdmFsaWQgQ1NTIHZhbHVlLiIpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcoJyk7CgogICAgICAgICRpc0ZpcnN0ID0gdHJ1ZTsKCiAgICAgICAgZm9yZWFjaCAoJHZhbHVlLT5nZXRDb250ZW50cygpIGFzICRrZXkgPT4gJGVsZW1lbnQpIHsKICAgICAgICAgICAgaWYgKCRpc0ZpcnN0KSB7CiAgICAgICAgICAgICAgICAkaXNGaXJzdCA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJywgJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT53cml0ZU1hcEVsZW1lbnQoJGtleSk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCc6ICcpOwogICAgICAgICAgICAkdGhpcy0+d3JpdGVNYXBFbGVtZW50KCRlbGVtZW50KTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcpJyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZU1hcEVsZW1lbnQoVmFsdWUgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgICRuZWVkc1BhcmVucyA9ICR2YWx1ZSBpbnN0YW5jZW9mIFNhc3NMaXN0CiAgICAgICAgICAgICYmIExpc3RTZXBhcmF0b3I6OkNPTU1BID09PSAkdmFsdWUtPmdldFNlcGFyYXRvcigpCiAgICAgICAgICAgICYmICEkdmFsdWUtPmhhc0JyYWNrZXRzKCk7CgogICAgICAgIGlmICgkbmVlZHNQYXJlbnMpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcoJyk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUtPmFjY2VwdCgkdGhpcyk7CgogICAgICAgIGlmICgkbmVlZHNQYXJlbnMpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcpJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE51bGwoKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+aW5zcGVjdCkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgnbnVsbCcpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXROdW1iZXIoU2Fzc051bWJlciAkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgJGFzU2xhc2ggPSAkdmFsdWUtPmdldEFzU2xhc2goKTsKCiAgICAgICAgaWYgKCRhc1NsYXNoICE9PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT52aXNpdE51bWJlcigkYXNTbGFzaFswXSk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignLycpOwogICAgICAgICAgICAkdGhpcy0+dmlzaXROdW1iZXIoJGFzU2xhc2hbMV0pOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc19maW5pdGUoJHZhbHVlLT5nZXRWYWx1ZSgpKSkgewogICAgICAgICAgICAkdGhpcy0+dmlzaXRDYWxjdWxhdGlvbihTYXNzQ2FsY3VsYXRpb246OnVuc2ltcGxpZmllZCgnY2FsYycsIFskdmFsdWVdKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUtPmhhc0NvbXBsZXhVbml0cygpKSB7CiAgICAgICAgICAgIGlmICghJHRoaXMtPmluc3BlY3QpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCIkdmFsdWUgaXNuJ3QgYSB2YWxpZCBDU1MgdmFsdWUuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT52aXNpdENhbGN1bGF0aW9uKFNhc3NDYWxjdWxhdGlvbjo6dW5zaW1wbGlmaWVkKCdjYWxjJywgWyR2YWx1ZV0pKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+d3JpdGVOdW1iZXIoJHZhbHVlLT5nZXRWYWx1ZSgpKTsKCiAgICAgICAgICAgIGlmIChcY291bnQoJHZhbHVlLT5nZXROdW1lcmF0b3JVbml0cygpKSA+IDApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR2YWx1ZS0+Z2V0TnVtZXJhdG9yVW5pdHMoKVswXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBXcml0ZXMgJG51bWJlciB3aXRob3V0IGV4cG9uZW50IG5vdGF0aW9uIGFuZCB3aXRoIGF0IG1vc3QKICAgICAqIHtAc2VlIFNhc3NOdW1iZXI6OlBSRUNJU0lPTn0gZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlTnVtYmVyKGZsb2F0ICRudW1iZXIpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGlzX25hbigkbnVtYmVyKSkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgnTmFOJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICgkbnVtYmVyID09PSBJTkYpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJ0luZmluaXR5Jyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICgkbnVtYmVyID09PSAtSU5GKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCctSW5maW5pdHknKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGludCA9IE51bWJlclV0aWw6OmZ1enp5QXNJbnQoJG51bWJlcik7CgogICAgICAgIGlmICgkaW50ICE9PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKChzdHJpbmcpICRpbnQpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCiAgICAgICAgJHRleHQgPSAkdGhpcy0+cmVtb3ZlRXhwb25lbnQoKHN0cmluZykgJG51bWJlcik7CgogICAgICAgIC8vIEFueSBkb3VibGUgdGhhdCdzIGxlc3MgdGhhbiBgU2Fzc051bWJlci5wcmVjaXNpb24gKyAyYCBkaWdpdHMgbG9uZyBpcwogICAgICAgIC8vIGd1YXJhbnRlZWQgdG8gYmUgc2FmZSB0byBlbWl0IGRpcmVjdGx5LCBzaW5jZSBpdCdsbCBjb250YWluIGF0IG1vc3QgYDAuYAogICAgICAgIC8vIGZvbGxvd2VkIGJ5IFtTYXNzTnVtYmVyLnByZWNpc2lvbl0gZGlnaXRzLgogICAgICAgICRjYW5Xcml0ZURpcmVjdGx5ID0gXHN0cmxlbigkdGV4dCkgPCBTYXNzTnVtYmVyOjpQUkVDSVNJT04gKyAyOwoKICAgICAgICBpZiAoJGNhbldyaXRlRGlyZWN0bHkpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5jb21wcmVzc2VkICYmICR0ZXh0WzBdID09PSAnMCcpIHsKICAgICAgICAgICAgICAgICR0ZXh0ID0gc3Vic3RyKCR0ZXh0LCAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHRleHQpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d3JpdGVSb3VuZGVkKCR0ZXh0KTsKICAgIH0KCiAgICAvKioKICAgICAqIElmICR0ZXh0IGlzIHdyaXR0ZW4gaW4gZXhwb25lbnQgbm90YXRpb24sIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24KICAgICAqIG9mIGl0IHdpdGhvdXQgZXhwb25lbnQgbm90YXRpb24uCiAgICAgKgogICAgICogT3RoZXJ3aXNlLCByZXR1cm5zICR0ZXh0IGFzLWlzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlbW92ZUV4cG9uZW50KHN0cmluZyAkdGV4dCk6IHN0cmluZwogICAgewogICAgICAgICRleHBvbmVudERlbGltaXRlclBvc2l0aW9uID0gc3RycG9zKCR0ZXh0LCAnRScpOwoKICAgICAgICBpZiAoJGV4cG9uZW50RGVsaW1pdGVyUG9zaXRpb24gPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGV4dDsKICAgICAgICB9CgogICAgICAgICRuZWdhdGl2ZSA9ICR0ZXh0WzBdID09PSAnLSc7CgogICAgICAgICRidWZmZXIgPSAkdGV4dFswXTsKCiAgICAgICAgLy8gSWYgdGhlIG51bWJlciBoYXMgbW9yZSB0aGFuIG9uZSBzaWduaWZpY2FudCBkaWdpdCwgdGhlIHNlY29uZAogICAgICAgIC8vIGNoYXJhY3RlciB3aWxsIGJlIGEgZGVjaW1hbCBwb2ludCB0aGF0IHdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSBpbgogICAgICAgIC8vIHRoZSBnZW5lcmF0ZWQgbnVtYmVyLgogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGV4dFsxXTsKCiAgICAgICAgICAgIGlmICgkZXhwb25lbnREZWxpbWl0ZXJQb3NpdGlvbiA+IDMpIHsKICAgICAgICAgICAgICAgICRidWZmZXIgLj0gc3Vic3RyKCR0ZXh0LCAzLCAkZXhwb25lbnREZWxpbWl0ZXJQb3NpdGlvbiAtIDMpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRleHBvbmVudERlbGltaXRlclBvc2l0aW9uID4gMikgewogICAgICAgICAgICAkYnVmZmVyIC49IHN1YnN0cigkdGV4dCwgMiwgJGV4cG9uZW50RGVsaW1pdGVyUG9zaXRpb24gLSAyKTsKICAgICAgICB9CgogICAgICAgICRleHBvbmVudCA9IGludHZhbChzdWJzdHIoJHRleHQsICRleHBvbmVudERlbGltaXRlclBvc2l0aW9uICsgMSkpOwoKICAgICAgICBpZiAoJGV4cG9uZW50ID4gMCkgewogICAgICAgICAgICAvLyBXcml0ZSBhbiBhZGRpdGlvbmFsIHplcm8gZm9yIGVhY2ggZXhwb25lbnQgZGlnaXRzIG90aGVyIHRoYW4gdGhvc2UKICAgICAgICAgICAgLy8gYWxyZWFkeSB3cml0dGVuIHRvIHRoZSBidWZmZXIuIFdlIHN1YnRyYWN0IDEgZnJvbSBgYnVmZmVyLmxlbmd0aGAKICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgZmlyc3QgZGlnaXQgZG9lc24ndCBjb3VudCB0b3dhcmRzIHRoZSBleHBvbmVudC4gU3VidHJhY3QgMQogICAgICAgICAgICAvLyBtb3JlIGZvciBuZWdhdGl2ZSBudW1iZXJzIGJlY2F1c2Ugb2YgdGhlIGAtYCB3cml0dGVuIHRvIHRoZSBidWZmZXIuCiAgICAgICAgICAgICRhZGRpdGlvbmFsWmVyb2VzID0gJGV4cG9uZW50IC0gKFxzdHJsZW4oJGJ1ZmZlcikgLSAxIC0gKCRuZWdhdGl2ZSA/IDEgOiAwKSk7CiAgICAgICAgICAgICRidWZmZXIgLj0gc3RyX3JlcGVhdCgnMCcsICRhZGRpdGlvbmFsWmVyb2VzKTsKCiAgICAgICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9ICcnOwogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAnLSc7CiAgICAgICAgfQogICAgICAgICRyZXN1bHQgLj0gJzAuJzsKICAgICAgICBmb3IgKCRpID0gLTE7ICRpID4gJGV4cG9uZW50OyAtLSRpKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gJzAnOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCAuPSAkbmVnYXRpdmUgPyBzdWJzdHIoJGJ1ZmZlciwgMSkgOiAkYnVmZmVyOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc3VtaW5nICR0ZXh0IGlzIGEgbnVtYmVyIHdyaXR0ZW4gd2l0aG91dCBleHBvbmVudCBub3RhdGlvbiwgcm91bmRzIGl0CiAgICAgKiB0byB7QHNlZSBTYXNzTnVtYmVyOjpQUkVDSVNJT059IGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBhbmQgd3JpdGVzIHRoZSByZXN1bHQKICAgICAqIHRvIHtAc2VlICRidWZmZXJ9LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlUm91bmRlZChzdHJpbmcgJHRleHQpOiB2b2lkCiAgICB7CiAgICAgICAgXGFzc2VydChwcmVnX21hdGNoKCcvXi0/XGQrKFwuXGQrKT8kL0QnLCAkdGV4dCkgPT09IDEsICJcIiR0ZXh0XCIgc2hvdWxkIGJlIGEgbnVtYmVyIHdyaXR0ZW4gd2l0aG91dCBleHBvbmVudCBub3RhdGlvbi4iKTsKCiAgICAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSB3cml0ZSBhdCBtb3N0IFtTYXNzTnVtYmVyLnByZWNpc2lvbl0gZGlnaXRzCiAgICAgICAgLy8gYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQsIGFuZCB0aGF0IHdlIHJvdW5kIGFwcHJvcHJpYXRlbHkgaWYgbmVjZXNzYXJ5LiBUbwogICAgICAgIC8vIGRvIHRoaXMsIHdlIG1haW50YWluIGFuIGludGVybWVkaWF0ZSBidWZmZXIgb2YgZGlnaXRzIChib3RoIGJlZm9yZSBhbmQKICAgICAgICAvLyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCksIHdoaWNoIHdlIHRoZW4gd3JpdGUgdG8gW19idWZmZXJdIGFzIHRleHQuIFdlCiAgICAgICAgLy8gc3RhcnQgd3JpdGluZyBhZnRlciB0aGUgZmlyc3QgZGlnaXQgdG8gZ2l2ZSB1cyByb29tIHRvIHJvdW5kIHVwIHRvIGEKICAgICAgICAvLyBoaWdoZXIgZGVjaW1hbCBwbGFjZSB0aGFuIHdhcyByZXByZXNlbnRlZCBpbiB0aGUgb3JpZ2luYWwgbnVtYmVyLgogICAgICAgICRkaWdpdHMgPSBhcnJheV9maWxsKDAsIFxzdHJsZW4oJHRleHQpICsgMSwgMCk7CiAgICAgICAgJGRpZ2l0c0luZGV4ID0gMTsKCiAgICAgICAgLy8gV3JpdGUgdGhlIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWwgdG8gJGRpZ2l0cy4KICAgICAgICAkdGV4dEluZGV4ID0gMDsKICAgICAgICAkbmVnYXRpdmUgPSAkdGV4dFswXSA9PT0gJy0nOwogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgJHRleHRJbmRleCsrOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgaWYgKCR0ZXh0SW5kZXggPT09IFxzdHJsZW4oJHRleHQpKSB7CiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgJHRleHQgaGFzIG5vIGRlY2ltYWwgcG9pbnQuIEl0IGRlZmluaXRlbHkgZG9lc24ndAogICAgICAgICAgICAgICAgLy8gbmVlZCB0byBiZSByb3VuZGVkOyB3ZSBjYW4gd3JpdGUgaXQgYXMtaXMuCiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdGV4dCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjb2RlVW5pdCA9ICR0ZXh0WyR0ZXh0SW5kZXgrK107CiAgICAgICAgICAgIGlmICgkY29kZVVuaXQgPT09ICcuJykgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRkaWdpdHNbJGRpZ2l0c0luZGV4KytdID0gaW50dmFsKCRjb2RlVW5pdCk7CiAgICAgICAgfQoKICAgICAgICAkZmlyc3RGcmFjdGlvbmFsRGlnaXQgPSAkZGlnaXRzSW5kZXg7CgogICAgICAgIC8vIE9ubHkgd3JpdGUgYXQgbW9zdCBQUkVDSVNJT04gZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsLiBJZiB0aGVyZSBhcmVuJ3QKICAgICAgICAvLyB0aGF0IG1hbnkgZGlnaXRzIGxlZnQgaW4gdGhlIG51bWJlciwgd3JpdGUgaXQgYXMtaXMgc2luY2Ugbm8gcm91bmRpbmcgb3IKICAgICAgICAvLyB0cnVuY2F0aW9uIGlzIG5lZWRlZC4KICAgICAgICAkaW5kZXhBZnRlclByZWNpc2lvbiA9ICR0ZXh0SW5kZXggKyBTYXNzTnVtYmVyOjpQUkVDSVNJT047CiAgICAgICAgaWYgKCRpbmRleEFmdGVyUHJlY2lzaW9uID49IFxzdHJsZW4oJHRleHQpKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR0ZXh0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gV3JpdGUgdGhlIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCB0byAkZGlnaXRzLgogICAgICAgIHdoaWxlICgkdGV4dEluZGV4IDwgJGluZGV4QWZ0ZXJQcmVjaXNpb24pIHsKICAgICAgICAgICAgJGRpZ2l0c1skZGlnaXRzSW5kZXgrK10gPSBpbnR2YWwoJHRleHRbJHRleHRJbmRleCsrXSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSb3VuZCB0aGUgdHJhaWxpbmcgZGlnaXRzIGluICRkaWdpdHMgdXAgaWYgbmVjZXNzYXJ5LgogICAgICAgIGlmIChpbnR2YWwoJHRleHRbJHRleHRJbmRleF0pID49IDUpIHsKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgIC8vICRkaWdpdHNJbmRleCBpcyBndWFyYW50ZWVkIHRvIGJlID4wIGhlcmUgYmVjYXVzZSB3ZSBhZGRlZCBhIGxlYWRpbmcKICAgICAgICAgICAgICAgIC8vIDAgdG8gJGRpZ2l0cyB3aGVuIHdlIGNvbnN0cnVjdGVkIGl0LCBzbyBldmVuIGlmIHdlIHJvdW5kIGV2ZXJ5dGhpbmcKICAgICAgICAgICAgICAgIC8vIHVwICRuZXdEaWdpdCB3aWxsIGFsd2F5cyBiZSAxIHdoZW4gJGRpZ2l0c0luZGV4IGlzIDEuCiAgICAgICAgICAgICAgICAkbmV3RGlnaXQgPSArKyRkaWdpdHNbJGRpZ2l0c0luZGV4IC0gMV07CgogICAgICAgICAgICAgICAgaWYgKCRuZXdEaWdpdCAhPT0gMTApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRkaWdpdHNJbmRleC0tOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBdCBtb3N0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGxvb3BzIHdpbGwgYWN0dWFsbHkgZXhlY3V0ZS4gSWYgd2Ugcm91bmRlZAogICAgICAgIC8vIGRpZ2l0cyB1cCBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQsIHRoZSBmaXJzdCBsb29wIHdpbGwgc2V0IHRob3NlIGRpZ2l0cwogICAgICAgIC8vIHRvIDAgKHJhdGhlciB0aGFuIDEwLCB3aGljaCBpcyBub3QgYSB2YWxpZCBkZWNpbWFsIGRpZ2l0KS4gT24gdGhlIG90aGVyCiAgICAgICAgLy8gaGFuZCwgaWYgd2UgaGF2ZSB0cmFpbGluZyB6ZXJvcyBsZWZ0IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LCB0aGUgc2Vjb25kCiAgICAgICAgLy8gbG9vcCB3aWxsIG1vdmUgJGRpZ2l0c0luZGV4IGJlZm9yZSB0aGVtIGFuZCBjYXVzZSB0aGVtIG5vdCB0byBiZQogICAgICAgIC8vIHdyaXR0ZW4uIEVpdGhlciB3YXksICRkaWdpdHNJbmRleCB3aWxsIGVuZCB1cCA+PSAkZmlyc3RGcmFjdGlvbmFsRGlnaXQuCiAgICAgICAgZm9yICg7ICRkaWdpdHNJbmRleCA8ICRmaXJzdEZyYWN0aW9uYWxEaWdpdDsgJGRpZ2l0c0luZGV4KyspIHsKICAgICAgICAgICAgJGRpZ2l0c1skZGlnaXRzSW5kZXhdID0gMDsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKCRkaWdpdHNJbmRleCA+ICRmaXJzdEZyYWN0aW9uYWxEaWdpdCAmJiAkZGlnaXRzWyRkaWdpdHNJbmRleCAtIDFdID09PSAwKSB7CiAgICAgICAgICAgICRkaWdpdHNJbmRleC0tOwogICAgICAgIH0KCiAgICAgICAgLy8gT21pdCB0aGUgbWludXMgc2lnbiBpZiB0aGUgbnVtYmVyIGVuZGVkIHVwIGJlaW5nIHJvdW5kZWQgdG8gZXhhY3RseSB6ZXJvLAogICAgICAgIC8vIHdyaXRlICIwIiBleHBsaWNpdCB0byBhdm9pZCBhZGRpbmcgYSBtaW51cyBzaWduIG9yIG9taXR0aW5nIHRoZSBudW1iZXIKICAgICAgICAvLyBlbnRpcmVseSBpbiBjb21wcmVzc2VkIG1vZGUuCiAgICAgICAgaWYgKCRkaWdpdHNJbmRleCA9PT0gMiAmJiAkZGlnaXRzWzBdID09PSAwICYmICRkaWdpdHNbMV0gPT0gMCkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJzAnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuZWdhdGl2ZSkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJy0nKTsKICAgICAgICB9CgogICAgICAgIC8vIFdyaXRlIHRoZSBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50IHRvICRidWZmZXIuIE9taXQgdGhlIGxlYWRpbmcKICAgICAgICAvLyAwIHRoYXQncyBhZGRlZCB0byAkZGlnaXRzIHRvIGFjY29tbW9kYXRlIHJvdW5kaW5nLCBhbmQgaW4gY29tcHJlc3NlZAogICAgICAgIC8vIG1vZGUgb21pdCB0aGUgMCBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQgYXMgd2VsbC4KICAgICAgICAkd3JpdHRlbkluZGV4ID0gMDsKCiAgICAgICAgaWYgKCRkaWdpdHNbMF0gPT09IDApIHsKICAgICAgICAgICAgJHdyaXR0ZW5JbmRleCsrOwogICAgICAgICAgICBpZiAoJHRoaXMtPmNvbXByZXNzZWQgJiYgJGRpZ2l0c1sxXSA9PT0gMCkgewogICAgICAgICAgICAgICAgJHdyaXR0ZW5JbmRleCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgKDsgJHdyaXR0ZW5JbmRleCA8ICRmaXJzdEZyYWN0aW9uYWxEaWdpdDsgJHdyaXR0ZW5JbmRleCsrKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcigoc3RyaW5nKSAkZGlnaXRzWyR3cml0dGVuSW5kZXhdKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZGlnaXRzSW5kZXggPiAkZmlyc3RGcmFjdGlvbmFsRGlnaXQpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcuJyk7CgogICAgICAgICAgICBmb3IgKDsgJHdyaXR0ZW5JbmRleCA8ICRkaWdpdHNJbmRleDsgJHdyaXR0ZW5JbmRleCsrKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoKHN0cmluZykgJGRpZ2l0c1skd3JpdHRlbkluZGV4XSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U3RyaW5nKFNhc3NTdHJpbmcgJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+cXVvdGUgJiYgJHZhbHVlLT5oYXNRdW90ZXMoKSkgewogICAgICAgICAgICAkdGhpcy0+dmlzaXRRdW90ZWRTdHJpbmcoJHZhbHVlLT5nZXRUZXh0KCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT52aXNpdFVucXVvdGVkU3RyaW5nKCR2YWx1ZS0+Z2V0VGV4dCgpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB2aXNpdFF1b3RlZFN0cmluZyhzdHJpbmcgJHN0cmluZyk6IHZvaWQKICAgIHsKICAgICAgICAkaW5jbHVkZXNEb3VibGVRdW90ZSA9IHN0cl9jb250YWlucygkc3RyaW5nLCAnIicpOwogICAgICAgICRpbmNsdWRlc1NpbmdsZVF1b3RlID0gc3RyX2NvbnRhaW5zKCRzdHJpbmcsICdcJycpOwogICAgICAgICRmb3JjZURvdWJsZVF1b3RlcyA9ICRpbmNsdWRlc1NpbmdsZVF1b3RlICYmICRpbmNsdWRlc0RvdWJsZVF1b3RlOwogICAgICAgICRxdW90ZSA9ICRmb3JjZURvdWJsZVF1b3RlcyB8fCAhJGluY2x1ZGVzRG91YmxlUXVvdGUgPyAnIicgOiAiJyI7CgogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcigkcXVvdGUpOwoKICAgICAgICAkbGVuZ3RoID0gXHN0cmxlbigkc3RyaW5nKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkrKykgewogICAgICAgICAgICAkY2hhciA9ICRzdHJpbmdbJGldOwoKICAgICAgICAgICAgc3dpdGNoICgkY2hhcikgewogICAgICAgICAgICAgICAgY2FzZSAiJyI6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCInIik7IC8vIHN1Y2ggc3RyaW5nIGlzIGFsd2F5cyByZW5kZXJlZCBkb3VibGUtcXVvdGVkCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnIic6CiAgICAgICAgICAgICAgICAgICAgaWYgKCRmb3JjZURvdWJsZVF1b3RlcykgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJ1xcJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignIicpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgIlwwIjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4MSI6CiAgICAgICAgICAgICAgICBjYXNlICJceDIiOgogICAgICAgICAgICAgICAgY2FzZSAiXHgzIjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4NCI6CiAgICAgICAgICAgICAgICBjYXNlICJceDUiOgogICAgICAgICAgICAgICAgY2FzZSAiXHg2IjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4NyI6CiAgICAgICAgICAgICAgICBjYXNlICJceDgiOgogICAgICAgICAgICAgICAgY2FzZSAiXHhBIjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4QiI6CiAgICAgICAgICAgICAgICBjYXNlICJceEMiOgogICAgICAgICAgICAgICAgY2FzZSAiXHhEIjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4RSI6CiAgICAgICAgICAgICAgICBjYXNlICJceEYiOgogICAgICAgICAgICAgICAgY2FzZSAiXHgxMCI6CiAgICAgICAgICAgICAgICBjYXNlICJceDExIjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4MTIiOgogICAgICAgICAgICAgICAgY2FzZSAiXHgxMyI6CiAgICAgICAgICAgICAgICBjYXNlICJceDE0IjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4MTUiOgogICAgICAgICAgICAgICAgY2FzZSAiXHgxNiI6CiAgICAgICAgICAgICAgICBjYXNlICJceDE3IjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4MTgiOgogICAgICAgICAgICAgICAgY2FzZSAiXHgxOSI6CiAgICAgICAgICAgICAgICBjYXNlICJceDFBIjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4MUIiOgogICAgICAgICAgICAgICAgY2FzZSAiXHgxQyI6CiAgICAgICAgICAgICAgICBjYXNlICJceDFEIjoKICAgICAgICAgICAgICAgIGNhc2UgIlx4MUUiOgogICAgICAgICAgICAgICAgY2FzZSAiXHgxRiI6CiAgICAgICAgICAgICAgICBjYXNlICJceDdGIjoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVFc2NhcGUoJHRoaXMtPmJ1ZmZlciwgJGNoYXIsICRzdHJpbmcsICRpKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdcXCc6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCdcXCcpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignXFwnKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICRuZXdJbmRleCA9ICR0aGlzLT50cnlQcml2YXRlVXNlQ2hhcmFjdGVyKCR0aGlzLT5idWZmZXIsICRjaGFyLCAkc3RyaW5nLCAkaSk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkbmV3SW5kZXggIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAkbmV3SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCRjaGFyKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCRxdW90ZSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB2aXNpdFVucXVvdGVkU3RyaW5nKHN0cmluZyAkc3RyaW5nKTogdm9pZAogICAgewogICAgICAgICRhZnRlck5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAkbGVuZ3RoID0gXHN0cmxlbigkc3RyaW5nKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgKyskaSkgewogICAgICAgICAgICAkY2hhciA9ICRzdHJpbmdbJGldOwoKICAgICAgICAgICAgc3dpdGNoICgkY2hhcikgewogICAgICAgICAgICAgICAgY2FzZSAiXG4iOgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignICcpOwogICAgICAgICAgICAgICAgICAgICRhZnRlck5ld2xpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJyAnOgogICAgICAgICAgICAgICAgICAgIGlmICghJGFmdGVyTmV3bGluZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyAnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkYWZ0ZXJOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgJG5ld0luZGV4ID0gJHRoaXMtPnRyeVByaXZhdGVVc2VDaGFyYWN0ZXIoJHRoaXMtPmJ1ZmZlciwgJGNoYXIsICRzdHJpbmcsICRpKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRuZXdJbmRleCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkaSA9ICRuZXdJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJGNoYXIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogSWYgJGNoYXIgaXMgdGhlIGJlZ2lubmluZyBvZiBhIHByaXZhdGUtdXNlIGNoYXJhY3RlciBhbmQgU2FzcyBpc24ndAogICAgICogZW1pdHRpbmcgY29tcHJlc3NlZCBDU1MsIHdyaXRlcyB0aGF0IGNoYXJhY3RlciBhcyBhbiBlc2NhcGUgdG8gJGJ1ZmZlci4KICAgICAqCiAgICAgKiBUaGUgJHN0cmluZyBpcyB0aGUgc3RyaW5nIGZyb20gd2hpY2ggJGNoYXIgd2FzIHJlYWQsIGFuZCAkaSBpcyB0aGUKICAgICAqIGluZGV4IGl0IHdhcyByZWFkIGZyb20uIElmIHRoaXMgc3VjY2Vzc2Z1bGx5IHdyaXRlcyB0aGUgY2hhcmFjdGVyLCByZXR1cm5zCiAgICAgKiB0aGUgaW5kZXggb2YgdGhlICpsYXN0KiBieXRlIHRoYXQgd2FzIGNvbnN1bWVkIGZvciBpdC4gT3RoZXJ3aXNlLAogICAgICogcmV0dXJucyBgbnVsbGAuCiAgICAgKgogICAgICogSW4gZXhwYW5kZWQgbW9kZSwgd2UgcHJpbnQgYWxsIGNoYXJhY3RlcnMgaW4gUHJpdmF0ZSBVc2UgQXJlYXMgYXMgZXNjYXBlCiAgICAgKiBjb2RlcyBzaW5jZSB0aGVyZSdzIG5vIHVzZWZ1bCB3YXkgdG8gcmVuZGVyIHRoZW0gZGlyZWN0bHkuIFRoZXNlCiAgICAgKiBjaGFyYWN0ZXJzIGFyZSBvZnRlbiB1c2VkIGZvciBnbHlwaCBmb250cywgd2hlcmUgaXQncyB1c2VmdWwgZm9yIHJlYWRlcnMKICAgICAqIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtIGluIHRoZSByZW5kZXJlZCBzdHlsZXNoZWV0LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRyeVByaXZhdGVVc2VDaGFyYWN0ZXIoU291cmNlTWFwQnVmZmVyICRidWZmZXIsIHN0cmluZyAkY2hhciwgc3RyaW5nICRzdHJpbmcsIGludCAkaSk6ID9pbnQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNvbXByZXNzZWQpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkZmlyc3RCeXRlQ29kZSA9IFxvcmQoJGNoYXIpOwogICAgICAgIGlmICgkZmlyc3RCeXRlQ29kZSA+PSAweEYwKSB7CiAgICAgICAgICAgICRleHRyYUJ5dGVzID0gMzsgLy8gNC1ieXRlcyBjaGFycwogICAgICAgIH0gZWxzZWlmICgkZmlyc3RCeXRlQ29kZSA+PSAweEUwKSB7CiAgICAgICAgICAgICRleHRyYUJ5dGVzID0gMjsgLy8gMy1ieXRlcyBjaGFycwogICAgICAgIH0gZWxzZWlmICgkZmlyc3RCeXRlQ29kZSA+PSAweEMyKSB7CiAgICAgICAgICAgICRleHRyYUJ5dGVzID0gMTsgLy8gMi1ieXRlcyBjaGFycwogICAgICAgIH0gZWxzZWlmICgkZmlyc3RCeXRlQ29kZSA+PSAweDgwICYmICRmaXJzdEJ5dGVDb2RlIDw9IDB4OEYpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIENvbnRpbnVhdGlvbiBvZiBhIFVURi04IGNoYXIgc3RhcnRlZCBpbiBhIHByZXZpb3VzIGJ5dGUKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZXh0cmFCeXRlcyA9IDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoXHN0cmxlbigkc3RyaW5nKSA8PSAkaSArICRleHRyYUJ5dGVzKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOyAvLyBJbnZhbGlkIFVURi04IGNoYXJzCiAgICAgICAgfQoKICAgICAgICBpZiAoJGV4dHJhQnl0ZXMpIHsKICAgICAgICAgICAgJGZ1bGxDaGFyID0gc3Vic3RyKCRzdHJpbmcsICRpLCAkZXh0cmFCeXRlcyArIDEpOwogICAgICAgICAgICAkY2hhckNvZGUgPSBtYl9vcmQoJGZ1bGxDaGFyLCAnVVRGLTgnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZnVsbENoYXIgPSAkY2hhcjsKICAgICAgICAgICAgJGNoYXJDb2RlID0gJGZpcnN0Qnl0ZUNvZGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRjaGFyQ29kZSA+PSAweEUwMDAgJiYgJGNoYXJDb2RlIDw9IDB4RjhGRiB8fCAvLyBQVUEgb2YgdGhlIEJNUAogICAgICAgICAgICAkY2hhckNvZGUgPj0gMHhGMDAwMCAmJiAkY2hhckNvZGUgPD0gMHgxMEZGRkYgLy8gU3VwcGxlbWVudGFyeSBQVUFzIG9mIHRoZSBwbGFuZXMgMTUgYW5kIDE2CiAgICAgICAgKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZUVzY2FwZSgkYnVmZmVyLCAkZnVsbENoYXIsICRzdHJpbmcsICRpICsgJGV4dHJhQnl0ZXMpOwoKICAgICAgICAgICAgcmV0dXJuICRpICsgJGV4dHJhQnl0ZXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyAkY2hhcmFjdGVyIGFzIGEgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlIHRvICRidWZmZXIuCiAgICAgKgogICAgICogVGhlICRzdHJpbmcgaXMgdGhlIHN0cmluZyBmcm9tIHdoaWNoIHRoZSBlc2NhcGUgaXMgYmVpbmcgd3JpdHRlbiwgYW5kICRpCiAgICAgKiBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgYnl0ZSBvZiAkY2hhcmFjdGVyIGluIHRoYXQgc3RyaW5nLiBUaGVzZQogICAgICogYXJlIHVzZWQgdG8gd3JpdGUgYSB0cmFpbGluZyBzcGFjZSBhZnRlciB0aGUgZXNjYXBlIGlmIG5lY2Vzc2FyeSB0bwogICAgICogZGlzYW1iaWd1YXRlIGl0IGZyb20gdGhlIG5leHQgY2hhcmFjdGVyLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlRXNjYXBlKFNvdXJjZU1hcEJ1ZmZlciAkYnVmZmVyLCBzdHJpbmcgJGNoYXJhY3Rlciwgc3RyaW5nICRzdHJpbmcsIGludCAkaSk6IHZvaWQKICAgIHsKICAgICAgICAkYnVmZmVyLT53cml0ZUNoYXIoJ1xcJyk7CiAgICAgICAgJGJ1ZmZlci0+d3JpdGUoZGVjaGV4KG1iX29yZCgkY2hhcmFjdGVyLCAnVVRGLTgnKSkpOwoKICAgICAgICBpZiAoXHN0cmxlbigkc3RyaW5nKSA9PT0gJGkgKyAxKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRuZXh0ID0gJHN0cmluZ1skaSArIDFdOwoKICAgICAgICBpZiAoJG5leHQgPT09ICcgJyB8fCAkbmV4dCA9PT0gIlx0IiB8fCBDaGFyYWN0ZXI6OmlzSGV4KCRuZXh0KSkgewogICAgICAgICAgICAkYnVmZmVyLT53cml0ZUNoYXIoJyAnKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gIyMgU2VsZWN0b3JzCgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0QXR0cmlidXRlU2VsZWN0b3IoQXR0cmlidXRlU2VsZWN0b3IgJGF0dHJpYnV0ZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJ1snKTsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkYXR0cmlidXRlLT5nZXROYW1lKCkpOwoKICAgICAgICAkdmFsdWUgPSAkYXR0cmlidXRlLT5nZXRWYWx1ZSgpOwoKICAgICAgICBpZiAoJHZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgIGFzc2VydCgkYXR0cmlidXRlLT5nZXRPcCgpICE9PSBudWxsKTsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJGF0dHJpYnV0ZS0+Z2V0T3AoKS0+Z2V0VGV4dCgpKTsKCiAgICAgICAgICAgIC8vIEVtaXQgaWRlbnRpZmllcnMgdGhhdCBzdGFydCB3aXRoIGAtLWAgd2l0aCBxdW90ZXMsIGJlY2F1c2UgSUUxMQogICAgICAgICAgICAvLyBkb2Vzbid0IGNvbnNpZGVyIHRoZW0gdG8gYmUgdmFsaWQgaWRlbnRpZmllcnMuCiAgICAgICAgICAgIGlmIChQYXJzZXI6OmlzSWRlbnRpZmllcigkdmFsdWUpICYmICFzdHJfc3RhcnRzX3dpdGgoJHZhbHVlLCAnLS0nKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHZhbHVlKTsKCiAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+Z2V0TW9kaWZpZXIoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignICcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPnZpc2l0UXVvdGVkU3RyaW5nKCR2YWx1ZSk7CgogICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmdldE1vZGlmaWVyKCkgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5nZXRNb2RpZmllcigpICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkYXR0cmlidXRlLT5nZXRNb2RpZmllcigpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCddJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q2xhc3NTZWxlY3RvcihDbGFzc1NlbGVjdG9yICRrbGFzcyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJy4nKTsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgka2xhc3MtPmdldE5hbWUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29tcGxleFNlbGVjdG9yKENvbXBsZXhTZWxlY3RvciAkY29tcGxleCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+d3JpdGVDb21iaW5hdG9ycygkY29tcGxleC0+Z2V0TGVhZGluZ0NvbWJpbmF0b3JzKCkpOwoKICAgICAgICBpZiAoXGNvdW50KCRjb21wbGV4LT5nZXRMZWFkaW5nQ29tYmluYXRvcnMoKSkgIT09IDAgJiYgXGNvdW50KCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkpICE9PSAwKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZU9wdGlvbmFsU3BhY2UoKTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkgYXMgJGkgPT4gJGNvbXBvbmVudCkgewogICAgICAgICAgICAkdGhpcy0+dmlzaXRDb21wb3VuZFNlbGVjdG9yKCRjb21wb25lbnQtPmdldFNlbGVjdG9yKCkpOwoKICAgICAgICAgICAgaWYgKFxjb3VudCgkY29tcG9uZW50LT5nZXRDb21iaW5hdG9ycygpKSAhPT0gMCkgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlT3B0aW9uYWxTcGFjZSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+d3JpdGVDb21iaW5hdG9ycygkY29tcG9uZW50LT5nZXRDb21iaW5hdG9ycygpKTsKCiAgICAgICAgICAgIGlmICgkaSAhPT0gXGNvdW50KCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCkpIC0gMSAmJiAoISR0aGlzLT5jb21wcmVzc2VkIHx8IFxjb3VudCgkY29tcG9uZW50LT5nZXRDb21iaW5hdG9ycygpKSA9PT0gMCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignICcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogV3JpdGVzICRjb21iaW5hdG9ycyB0byB7QHNlZSBidWZmZXJ9LCB3aXRoIHNwYWNlcyBpbiBiZXR3ZWVuIGluIGV4cGFuZGVkCiAgICAgKiBtb2RlLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PENzc1ZhbHVlPENvbWJpbmF0b3I+PiAkY29tYmluYXRvcnMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZUNvbWJpbmF0b3JzKGFycmF5ICRjb21iaW5hdG9ycyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+d3JpdGVCZXR3ZWVuKCRjb21iaW5hdG9ycywgJHRoaXMtPmNvbXByZXNzZWQgPyAnJyA6ICcgJywgZnVuY3Rpb24gKCR0ZXh0KSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCR0ZXh0KTsKICAgICAgICB9KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb21wb3VuZFNlbGVjdG9yKENvbXBvdW5kU2VsZWN0b3IgJGNvbXBvdW5kKTogdm9pZAogICAgewogICAgICAgICRzdGFydCA9ICR0aGlzLT5idWZmZXItPmdldExlbmd0aCgpOwoKICAgICAgICBmb3JlYWNoICgkY29tcG91bmQtPmdldENvbXBvbmVudHMoKSBhcyAkc2ltcGxlKSB7CiAgICAgICAgICAgICRzaW1wbGUtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgfQoKICAgICAgICAvLyBJZiB3ZSBlbWl0IGFuIGVtcHR5IGNvbXBvdW5kLCBpdCdzIGJlY2F1c2UgYWxsIG9mIHRoZSBjb21wb25lbnRzIGdvdAogICAgICAgIC8vIG9wdGltaXplZCBvdXQgYmVjYXVzZSB0aGV5IG1hdGNoIGFsbCBzZWxlY3RvcnMsIHNvIHdlIGp1c3QgZW1pdCB0aGUKICAgICAgICAvLyB1bml2ZXJzYWwgc2VsZWN0b3IuCiAgICAgICAgaWYgKCR0aGlzLT5idWZmZXItPmdldExlbmd0aCgpID09PSAkc3RhcnQpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcqJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdElEU2VsZWN0b3IoSURTZWxlY3RvciAkaWQpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcjJyk7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJGlkLT5nZXROYW1lKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFNlbGVjdG9yTGlzdChTZWxlY3Rvckxpc3QgJGxpc3QpOiB2b2lkCiAgICB7CiAgICAgICAgJGZpcnN0ID0gdHJ1ZTsKCiAgICAgICAgZm9yZWFjaCAoJGxpc3QtPmdldENvbXBvbmVudHMoKSBhcyAkY29tcGxleCkgewogICAgICAgICAgICBpZiAoISR0aGlzLT5pbnNwZWN0ICYmICRjb21wbGV4LT5pc0ludmlzaWJsZSgpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRmaXJzdCkgewogICAgICAgICAgICAgICAgJGZpcnN0ID0gZmFsc2U7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJywnKTsKCiAgICAgICAgICAgICAgICBpZiAoJGNvbXBsZXgtPmdldExpbmVCcmVhaygpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlTGluZUZlZWQoKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVJbmRlbnRhdGlvbigpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVPcHRpb25hbFNwYWNlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT52aXNpdENvbXBsZXhTZWxlY3RvcigkY29tcGxleCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFBhcmVudFNlbGVjdG9yKFBhcmVudFNlbGVjdG9yICRwYXJlbnQpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcmJyk7CgogICAgICAgIGlmICgkcGFyZW50LT5nZXRTdWZmaXgoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkcGFyZW50LT5nZXRTdWZmaXgoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFBsYWNlaG9sZGVyU2VsZWN0b3IoUGxhY2Vob2xkZXJTZWxlY3RvciAkcGxhY2Vob2xkZXIpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCclJyk7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHBsYWNlaG9sZGVyLT5nZXROYW1lKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFBzZXVkb1NlbGVjdG9yKFBzZXVkb1NlbGVjdG9yICRwc2V1ZG8pOiB2b2lkCiAgICB7CiAgICAgICAgJGlubmVyU2VsZWN0b3IgPSAkcHNldWRvLT5nZXRTZWxlY3RvcigpOwoKICAgICAgICAvLyBgOm5vdCglYSlgIGlzIHNlbWFudGljYWxseSBpZGVudGljYWwgdG8gYCpgLgogICAgICAgIGlmICgkaW5uZXJTZWxlY3RvciAhPT0gbnVsbCAmJiAkcHNldWRvLT5nZXROYW1lKCkgPT09ICdub3QnICYmICRpbm5lclNlbGVjdG9yLT5pc0ludmlzaWJsZSgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignOicpOwogICAgICAgIGlmICgkcHNldWRvLT5pc1N5bnRhY3RpY0VsZW1lbnQoKSkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJzonKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHBzZXVkby0+Z2V0TmFtZSgpKTsKCiAgICAgICAgaWYgKCRwc2V1ZG8tPmdldEFyZ3VtZW50KCkgPT09IG51bGwgJiYgJHBzZXVkby0+Z2V0U2VsZWN0b3IoKSA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJygnKTsKCiAgICAgICAgaWYgKCRwc2V1ZG8tPmdldEFyZ3VtZW50KCkgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHBzZXVkby0+Z2V0QXJndW1lbnQoKSk7CgogICAgICAgICAgICBpZiAoJHBzZXVkby0+Z2V0U2VsZWN0b3IoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcgJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkaW5uZXJTZWxlY3RvciAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+dmlzaXRTZWxlY3Rvckxpc3QoJGlubmVyU2VsZWN0b3IpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCcpJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VHlwZVNlbGVjdG9yKFR5cGVTZWxlY3RvciAkdHlwZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdHlwZS0+Z2V0TmFtZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRVbml2ZXJzYWxTZWxlY3RvcihVbml2ZXJzYWxTZWxlY3RvciAkdW5pdmVyc2FsKTogdm9pZAogICAgewogICAgICAgIGlmICgkdW5pdmVyc2FsLT5nZXROYW1lc3BhY2UoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdW5pdmVyc2FsLT5nZXROYW1lc3BhY2UoKSk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignfCcpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyonKTsKICAgIH0KCiAgICAvLyAjIyBVdGlsaXRpZXMKCiAgICAvKioKICAgICAqIFJ1bnMgJGNhbGxiYWNrIGFuZCBhc3NvY2lhdGVzIGFsbCB0ZXh0IHdyaXR0ZW4gd2l0aGluIGl0IHdpdGggdGhlIHNwYW4gb2YgJG5vZGUKICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiBUICRjYWxsYmFjawogICAgICoKICAgICAqIEByZXR1cm4gVAogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZvcihBc3ROb2RlICRub2RlLCBjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5idWZmZXItPmZvclNwYW4oJG5vZGUtPmdldFNwYW4oKSwgJGNhbGxiYWNrKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBDc3NWYWx1ZTxzdHJpbmc+ICR2YWx1ZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlKENzc1ZhbHVlICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+Zm9yKCR2YWx1ZSwgZnVuY3Rpb24gKCkgdXNlICgkdmFsdWUpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGUoJHZhbHVlLT5nZXRWYWx1ZSgpKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEVtaXRzIGAkcGFyZW50LT5nZXRDaGlsZHJlbigpYCBpbiBhIGJsb2NrCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmlzaXRDaGlsZHJlbihDc3NQYXJlbnROb2RlICRwYXJlbnQpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCd7Jyk7CgogICAgICAgICRwcmVQcmV2aW91cyA9IG51bGw7CiAgICAgICAgJHByZXZpb3VzID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJHBhcmVudC0+Z2V0Q2hpbGRyZW4oKSBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0ludmlzaWJsZSgkY2hpbGQpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRwcmV2aW91cyAhPT0gbnVsbCAmJiAkdGhpcy0+cmVxdWlyZXNTZW1pY29sb24oJHByZXZpb3VzKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCc7Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNUcmFpbGluZ0NvbW1lbnQoJGNoaWxkLCAkcHJldmlvdXMgPz8gJHBhcmVudCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZU9wdGlvbmFsU3BhY2UoKTsKICAgICAgICAgICAgICAgICR0aGlzLT53aXRob3V0SW5kZW50YXRpb24oZnVuY3Rpb24gKCkgdXNlICgkY2hpbGQpIHsKICAgICAgICAgICAgICAgICAgICAkY2hpbGQtPmFjY2VwdCgkdGhpcyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUxpbmVGZWVkKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW5kZW50KGZ1bmN0aW9uICgpIHVzZSAoJGNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgJGNoaWxkLT5hY2NlcHQoJHRoaXMpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwcmVQcmV2aW91cyA9ICRwcmV2aW91czsKICAgICAgICAgICAgJHByZXZpb3VzID0gJGNoaWxkOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwcmV2aW91cyAhPT0gbnVsbCkgewogICAgICAgICAgICBpZiAoJHRoaXMtPnJlcXVpcmVzU2VtaWNvbG9uKCRwcmV2aW91cykgJiYgISR0aGlzLT5jb21wcmVzc2VkKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJzsnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRwcmVQcmV2aW91cyA9PT0gbnVsbCAmJiAkdGhpcy0+aXNUcmFpbGluZ0NvbW1lbnQoJHByZXZpb3VzLCAkcGFyZW50KSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlT3B0aW9uYWxTcGFjZSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlTGluZUZlZWQoKTsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUluZGVudGF0aW9uKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcignfScpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciAkbm9kZSByZXF1aXJlcyBhIHNlbWljb2xvbiB0byBiZSB3cml0dGVuIGFmdGVyIGl0LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlcXVpcmVzU2VtaWNvbG9uKENzc05vZGUgJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRub2RlIGluc3RhbmNlb2YgQ3NzUGFyZW50Tm9kZSkgewogICAgICAgICAgICByZXR1cm4gJG5vZGUtPmlzQ2hpbGRsZXNzKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gISRub2RlIGluc3RhbmNlb2YgQ3NzQ29tbWVudDsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzVHJhaWxpbmdDb21tZW50KENzc05vZGUgJG5vZGUsIENzc05vZGUgJHByZXZpb3VzKTogYm9vbAogICAgewogICAgICAgIC8vIFNob3J0LWNpcmN1aXQgaW4gY29tcHJlc3NlZCBtb2RlIHRvIGF2b2lkIGV4cGVuc2l2ZSBzcGFuIHNoZW5hbmlnYW5zCiAgICAgICAgLy8gKHNoZXNwYW5pZ2Fucz8pLCBzaW5jZSB3ZSdyZSBjb21wcmVzc2luZyBhbGwgd2hpdGVzcGFjZSBhbnl3YXkuCiAgICAgICAgaWYgKCR0aGlzLT5jb21wcmVzc2VkKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICghJG5vZGUgaW5zdGFuY2VvZiBDc3NDb21tZW50KSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkbm9kZS0+Z2V0U3BhbigpLT5nZXRTb3VyY2VVcmwoKSAhPT0gJHByZXZpb3VzLT5nZXRTcGFuKCktPmdldFNvdXJjZVVybCgpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICghU3BhblV0aWw6OmNvbnRhaW5zKCRwcmV2aW91cy0+Z2V0U3BhbigpLCAkbm9kZS0+Z2V0U3BhbigpKSkgewogICAgICAgICAgICByZXR1cm4gJG5vZGUtPmdldFNwYW4oKS0+Z2V0U3RhcnQoKS0+Z2V0TGluZSgpID09PSAkcHJldmlvdXMtPmdldFNwYW4oKS0+Z2V0RW5kKCktPmdldExpbmUoKTsKICAgICAgICB9CgogICAgICAgIC8vIFdhbGsgYmFjayBmcm9tIGp1c3QgYmVmb3JlIHRoZSBjdXJyZW50IG5vZGUgc3RhcnRzIGxvb2tpbmcgZm9yIHRoZQogICAgICAgIC8vIHBhcmVudCdzIGxlZnQgYnJhY2UgKHRvIG9wZW4gdGhlIGNoaWxkIGJsb2NrKS4gVGhpcyBpcyBzYWZlciB0aGFuIGEKICAgICAgICAvLyBzaW1wbGUgZm9yd2FyZCBzZWFyY2ggb2YgdGhlIHByZXZpb3VzLnNwYW4udGV4dCBhcyB0aGF0IG1pZ2h0IGNvbnRhaW4KICAgICAgICAvLyBvdGhlciBsZWZ0IGJyYWNlcy4KICAgICAgICAkc2VhcmNoRnJvbSA9ICRub2RlLT5nZXRTcGFuKCktPmdldFN0YXJ0KCktPmdldE9mZnNldCgpIC0gJHByZXZpb3VzLT5nZXRTcGFuKCktPmdldFN0YXJ0KCktPmdldE9mZnNldCgpIC0gMTsKCiAgICAgICAgLy8gSW1wb3J0cyBjYW4gY2F1c2UgYSBub2RlIHRvIGJlICJjb250YWluZWQiIGJ5IGFub3RoZXIgbm9kZSB3aGVuIHRoZXkgYXJlCiAgICAgICAgLy8gYWN0dWFsbHkgdGhlIHNhbWUgbm9kZSB0d2ljZSBpbiBhIHJvdy4KICAgICAgICBpZiAoJHNlYXJjaEZyb20gPCAwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRwcmV2aW91c1NwYW5UZXh0ID0gJHByZXZpb3VzLT5nZXRTcGFuKCktPmdldFRleHQoKTsKICAgICAgICAkZW5kT2Zmc2V0ID0gc3RycnBvcygkcHJldmlvdXNTcGFuVGV4dCwgJ3snLCAkc2VhcmNoRnJvbSAtIFxzdHJsZW4oJHByZXZpb3VzU3BhblRleHQpKTsKICAgICAgICBpZiAoJGVuZE9mZnNldCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJGVuZE9mZnNldCA9IDA7CiAgICAgICAgfQoKICAgICAgICAkc3BhbiA9ICRwcmV2aW91cy0+Z2V0U3BhbigpLT5nZXRGaWxlKCktPnNwYW4oJHByZXZpb3VzLT5nZXRTcGFuKCktPmdldFN0YXJ0KCktPmdldE9mZnNldCgpLCAkcHJldmlvdXMtPmdldFNwYW4oKS0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCkgKyAkZW5kT2Zmc2V0KTsKCiAgICAgICAgcmV0dXJuICRub2RlLT5nZXRTcGFuKCktPmdldFN0YXJ0KCktPmdldExpbmUoKSA9PT0gJHNwYW4tPmdldEVuZCgpLT5nZXRMaW5lKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBXcml0ZXMgYSBsaW5lIGZlZWQsIHVubGVzcyB0aGlzIGVtaXR0aW5nIGNvbXByZXNzZWQgQ1NTLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlTGluZUZlZWQoKTogdm9pZAogICAgewogICAgICAgIGlmICghJHRoaXMtPmNvbXByZXNzZWQpIHsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlci0+d3JpdGVDaGFyKCJcbiIpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlT3B0aW9uYWxTcGFjZSgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+Y29tcHJlc3NlZCkgewogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJyAnKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZUluZGVudGF0aW9uKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jb21wcmVzc2VkKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZVRpbWVzKCcgJywgJHRoaXMtPmluZGVudGF0aW9uICogMik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogV3JpdGVzICRjaGFyIHRvIHtAc2VlIGJ1ZmZlcn0gd2l0aCAkdGltZXMgcmVwZXRpdGlvbnMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd3JpdGVUaW1lcyhzdHJpbmcgJGNoYXIsIGludCAkdGltZXMpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHRpbWVzOyAkaSsrKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlQ2hhcigkY2hhcik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2FsbHMgJGNhbGxiYWNrIHRvIHdyaXRlIGVhY2ggdmFsdWUgaW4gJGl0ZXJhYmxlLCBhbmQgd3JpdGVzICR0ZXh0CiAgICAgKiBiZXR3ZWVuIGVhY2ggb25lLgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKgogICAgICogQHBhcmFtIGl0ZXJhYmxlPFQ+ICAgICAgICRpdGVyYWJsZQogICAgICogQHBhcmFtIGNhbGxhYmxlKFQpOiB2b2lkICRjYWxsYmFjawogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlQmV0d2VlbihpdGVyYWJsZSAkaXRlcmFibGUsIHN0cmluZyAkdGV4dCwgY2FsbGFibGUgJGNhbGxiYWNrKTogdm9pZAogICAgewogICAgICAgICRmaXJzdCA9IHRydWU7CgogICAgICAgIGZvcmVhY2ggKCRpdGVyYWJsZSBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKCRmaXJzdCkgewogICAgICAgICAgICAgICAgJGZpcnN0ID0gZmFsc2U7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkdGV4dCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjYWxsYmFjaygkdmFsdWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb21tYSB1c2VkIHRvIHNlcGFyYXRlIHZhbHVlcyBpbiBsaXN0cy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRDb21tYVNlcGFyYXRvcigpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXByZXNzZWQgPyAnLCcgOiAnLCAnOwogICAgfQoKICAgIC8qKgogICAgICogUnVucyAkY2FsbGJhY2sgd2l0aCBpbmRlbnRhdGlvbiBpbmNyZWFzZWQgb25lIGxldmVsLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSgpOiB2b2lkICRjYWxsYmFjawogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRjYWxsYmFjawogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGluZGVudChjYWxsYWJsZSAkY2FsbGJhY2spOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmluZGVudGF0aW9uKys7CiAgICAgICAgJGNhbGxiYWNrKCk7CiAgICAgICAgJHRoaXMtPmluZGVudGF0aW9uLS07CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zICRjYWxsYmFjayB3aXRob3V0IGFueSBpbmRlbnRhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogdm9pZCAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3aXRob3V0SW5kZW50YXRpb24oY2FsbGFibGUgJGNhbGxiYWNrKTogdm9pZAogICAgewogICAgICAgICRzYXZlZEluZGVudGF0aW9uID0gJHRoaXMtPmluZGVudGF0aW9uOwogICAgICAgICR0aGlzLT5pbmRlbnRhdGlvbiA9IDA7CiAgICAgICAgJGNhbGxiYWNrKCk7CiAgICAgICAgJHRoaXMtPmluZGVudGF0aW9uID0gJHNhdmVkSW5kZW50YXRpb247CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJG5vZGUgaXMgaW52aXNpYmxlLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzSW52aXNpYmxlKENzc05vZGUgJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+aW5zcGVjdCAmJiAoJHRoaXMtPmNvbXByZXNzZWQgPyAkbm9kZS0+aXNJbnZpc2libGVIaWRpbmdDb21tZW50cygpIDogJG5vZGUtPmlzSW52aXNpYmxlKCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Serializer/SimpleStringBuffer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTZXJpYWxpemVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcU2luZ2xlTWFwcGluZzsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQSBidWZmZXIgdGhhdCBkb2Vzbid0IGFjdHVhbGx5IGJ1aWxkIGEgc291cmNlIG1hcC4KICoKICogV2UgaW1wbGVtZW50IHtAc2VlIFNvdXJjZU1hcEJ1ZmZlcn0gZGlyZWN0bHkgb24gU2ltcGxlU3RyaW5nQnVmZmVyIHRvIGF2b2lkCiAqIGFuIHVubmVjZXNzYXJ5IHdyYXBwZXIgZm9yIE5vU291cmNlTWFwQnVmZmVyIChkYXJ0LXNhc3MgaGFzIHRvIG1ha2UgYSB3cmFwcGVyCiAqIGJlY2F1c2UgU3RyaW5nQnVmZmVyIGNvbWVzIGZyb20gZGFydCBjb3JlKS4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTaW1wbGVTdHJpbmdCdWZmZXIgaW1wbGVtZW50cyBTb3VyY2VNYXBCdWZmZXIKewogICAgcHJpdmF0ZSBzdHJpbmcgJHRleHQgPSAnJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGVuZ3RoKCk6IGludAogICAgewogICAgICAgIHJldHVybiBcc3RybGVuKCR0aGlzLT50ZXh0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoc3RyaW5nICRzdHJpbmcpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnRleHQgLj0gJHN0cmluZzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGVDaGFyKHN0cmluZyAkY2hhcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+dGV4dCAuPSAkY2hhcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRleHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGZvclNwYW4oRmlsZVNwYW4gJHNwYW4sIGNhbGxhYmxlICRjYWxsYmFjaykKICAgIHsKICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGJ1aWxkU291cmNlTWFwKD9zdHJpbmcgJHByZWZpeCk6IFNpbmdsZU1hcHBpbmcKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oX19NRVRIT0RfXyAuICcgaXMgbm90IHN1cHBvcnRlZC4nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Serializer/SourceMapBuffer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTZXJpYWxpemVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcU2luZ2xlTWFwcGluZzsKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgU291cmNlTWFwQnVmZmVyIGV4dGVuZHMgU3RyaW5nQnVmZmVyCnsKICAgIC8qKgogICAgICogUnVucyAkY2FsbGJhY2sgYW5kIGFzc29jaWF0ZXMgYWxsIHRleHQgd3JpdHRlbiB3aXRoaW4gaXQgd2l0aCAkc3Bhbi4KICAgICAqCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoaXMgYXNzb2NpYXRlcyB0aGUgcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgd3JpdHRlbgogICAgICogdGV4dCB3aXRoIHtAc2VlIEZpbGVTcGFuOjpnZXRTdGFydCgpfSBhbmQgdGhlIHBvaW50IGF0IHRoZSBlbmQgb2YgdGhlCiAgICAgKiB3cml0dGVuIHRleHQgd2l0aCB7QHNlZSBGaWxlU3Bhbjo6Z2V0RW5kKCl9LgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoKTogVCAkY2FsbGJhY2sKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZm9yU3BhbihGaWxlU3BhbiAkc3BhbiwgY2FsbGFibGUgJGNhbGxiYWNrKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNvdXJjZSBtYXAgZm9yIHRoZSBmaWxlIGJlaW5nIHdyaXR0ZW4uCiAgICAgKgogICAgICogSWYgJHByZWZpeCBpcyBwYXNzZWQsIGFsbCB0aGUgZW50cmllcyBpbiB0aGUgc291cmNlIG1hcCB3aWxsIGJlIG1vdmVkCiAgICAgKiBmb3J3YXJkIGJ5IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBhbmQgbGluZXMgaW4gJHByZWZpeC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJ1aWxkU291cmNlTWFwKD9zdHJpbmcgJHByZWZpeCk6IFNpbmdsZU1hcHBpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Serializer/StringBuffer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTZXJpYWxpemVyOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KaW50ZXJmYWNlIFN0cmluZ0J1ZmZlciBleHRlbmRzIFxTdHJpbmdhYmxlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBjb250ZW50IHRoYXQgaGFzIGJlZW4gYWNjdW11bGF0ZWQgc28gZmFyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGVuZ3RoKCk6IGludDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoc3RyaW5nICRzdHJpbmcpOiB2b2lkOwoKICAgIC8qKgogICAgICogV3JpdGVzIGEgc2luZ2xlIGNoYXIgdG8gdGhlIGJ1ZmZlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlQ2hhcihzdHJpbmcgJGNoYXIpOiB2b2lkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Serializer/TrackingSourceMapBuffer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTZXJpYWxpemVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcQnVpbGRlclxFbnRyeTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcU2luZ2xlTWFwcGluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXExpc3RVdGlsOwp1c2UgU291cmNlU3BhblxGaWxlTG9jYXRpb247CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwp1c2UgU291cmNlU3BhblxTaW1wbGVTb3VyY2VMb2NhdGlvbjsKdXNlIFNvdXJjZVNwYW5cU291cmNlTG9jYXRpb247CnVzZSBTb3VyY2VTcGFuXFNvdXJjZVNwYW47CgovKioKICogQSB7QHNlZSBTb3VyY2VNYXBCdWZmZXJ9IHRoYXQgYnVpbGRzIGEgc291cmNlIG1hcC4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBUcmFja2luZ1NvdXJjZU1hcEJ1ZmZlciBpbXBsZW1lbnRzIFNvdXJjZU1hcEJ1ZmZlcgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IFN0cmluZ0J1ZmZlciAkYnVmZmVyOwogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8RW50cnk+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJGVudHJpZXMgPSBbXTsKICAgIC8qKgogICAgICogVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGxpbmUgaW4ge0BzZWUgJGJ1ZmZlcn0uCiAgICAgKi8KICAgIHByaXZhdGUgaW50ICRsaW5lID0gMDsKICAgIC8qKgogICAgICogVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGNvbHVtbiBpbiB7QHNlZSAkYnVmZmVyfS4KICAgICAqLwogICAgcHJpdmF0ZSBpbnQgJGNvbHVtbiA9IDA7CiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHRleHQgY3VycmVudGx5IGJlaW5nIHdyaXR0ZW4gc2hvdWxkIGJlIGVuY29tcGFzc2VkIGJ5IGEKICAgICAqIHtAc2VlIFNvdXJjZVNwYW59LgogICAgICovCiAgICBwcml2YXRlIGJvb2wgJGluU3BhbiA9IGZhbHNlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlciA9IG5ldyBTaW1wbGVTdHJpbmdCdWZmZXIoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGVuZ3RoKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YnVmZmVyLT5nZXRMZW5ndGgoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBjdXJyZW50IGxvY2F0aW9uIGluIHtAc2VlICRidWZmZXJ9LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFRhcmdldExvY2F0aW9uKCk6IFNvdXJjZUxvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVTb3VyY2VMb2NhdGlvbigkdGhpcy0+YnVmZmVyLT5nZXRMZW5ndGgoKSwgbGluZTogJHRoaXMtPmxpbmUsIGNvbHVtbjogJHRoaXMtPmNvbHVtbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGZvclNwYW4oRmlsZVNwYW4gJHNwYW4sIGNhbGxhYmxlICRjYWxsYmFjaykKICAgIHsKICAgICAgICAkd2FzSW5TcGFuID0gJHRoaXMtPmluU3BhbjsKICAgICAgICAkdGhpcy0+aW5TcGFuID0gdHJ1ZTsKICAgICAgICAkdGhpcy0+YWRkRW50cnkoJHNwYW4tPmdldFN0YXJ0KCksICR0aGlzLT5nZXRUYXJnZXRMb2NhdGlvbigpKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuICRjYWxsYmFjaygpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIC8vIFdlIGNvdWxkIG1hcCAkc3Bhbi0+Z2V0RW5kKCkgdG8gJHRoaXMtPmdldFRhcmdldExvY2F0aW9uKCkgaGVyZSwgYnV0IGluIHByYWN0aWNlCiAgICAgICAgICAgIC8vIGJyb3dzZXJzIGRvbid0IGNhcmUgYWJvdXQgd2hlcmUgYSBzcGFuIGVuZHMgYXMgbG9uZyBhcyBpdCBjb3ZlcnMgYXQKICAgICAgICAgICAgLy8gbGVhc3QgdGhlIGVudGl0eSB0aGF0IHRoZXkncmUgbG9va2luZyB1cC4gQXZvaWRpbmcgZW5kIG1hcHBpbmdzIGhhbHZlcwogICAgICAgICAgICAvLyB0aGUgc2l6ZSBvZiB0aGUgc291cmNlIG1hcHMgd2UgZ2VuZXJhdGUuCgogICAgICAgICAgICAkdGhpcy0+aW5TcGFuID0gJHdhc0luU3BhbjsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIGFuIGVudHJ5IHRvIHtAc2VlICRlbnRyaWVzfSB1bmxlc3MgaXQncyByZWR1bmRhbnQgd2l0aCB0aGUgbGFzdCBlbnRyeS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRFbnRyeShGaWxlTG9jYXRpb24gJHNvdXJjZSwgU291cmNlTG9jYXRpb24gJHRhcmdldCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmVudHJpZXMgIT09IFtdKSB7CiAgICAgICAgICAgICRlbnRyeSA9IExpc3RVdGlsOjpsYXN0KCR0aGlzLT5lbnRyaWVzKTsKCiAgICAgICAgICAgIC8vIEJyb3dzZXJzIGRvbid0IGNhcmUgYWJvdXQgdGhlIHBvc2l0aW9uIG9mIGEgdmFsdWUgd2l0aGluIGEgbGluZSwgc28KICAgICAgICAgICAgLy8gaXQncyByZWR1bmRhbnQgdG8gaGF2ZSB0d28gZW50cmllcyBvbiB0aGUgc2FtZSB0YXJnZXQgbGluZSB0aGF0IGJvdGgKICAgICAgICAgICAgLy8gcG9pbnQgdG8gdGhlIHNhbWUgc291cmNlIGxpbmUsIGV2ZW4gaWYgdGhleSBwb2ludCB0byBkaWZmZXJlbnQKICAgICAgICAgICAgLy8gY29sdW1ucyBpbiB0aGF0IGxpbmUuCiAgICAgICAgICAgIGlmICgkZW50cnktPnNvdXJjZS0+Z2V0TGluZSgpID09PSAkc291cmNlLT5nZXRMaW5lKCkgJiYgJGVudHJ5LT50YXJnZXQtPmdldExpbmUoKSA9PT0gJHRhcmdldC0+Z2V0TGluZSgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFNpbmNlIHNvdXJjZSBtYXBzIGFyZSBvbmx5IHVzZWQgdG8gbG9vayB1cCB0aGUgc291cmNlIGZyb20gdGhlIHRhcmdldAogICAgICAgICAgICAvLyBhbmQgbm90IHZpY2UgdmVyc2EsIHdlIGRvbid0IG5lZWQgbXVsdGlwbGUgbWFwcGluZ3MgdG8gdGhlIHNhbWUgdGFyZ2V0LgogICAgICAgICAgICBpZiAoJGVudHJ5LT50YXJnZXQtPmdldE9mZnNldCgpID09PSAkdGFyZ2V0LT5nZXRPZmZzZXQoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZW50cmllc1tdID0gbmV3IEVudHJ5KCRzb3VyY2UsICR0YXJnZXQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZShzdHJpbmcgJHN0cmluZyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkc3RyaW5nKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgXHN0cmxlbigkc3RyaW5nKTsgKyskaSkgewogICAgICAgICAgICBpZiAoJHN0cmluZ1skaV0gPT09ICJcbiIpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUxpbmUoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jb2x1bW4rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGVDaGFyKHN0cmluZyAkY2hhcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZUNoYXIoJGNoYXIpOwoKICAgICAgICBpZiAoJGNoYXIgPT09ICJcbiIpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlTGluZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5jb2x1bW4rKzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWNvcmRzIHRoYXQgYSBsaW5lIGhhcyBiZWVuIHBhc3NlZC4KICAgICAqCiAgICAgKiBJZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgc291cmNlIHNwYW4sIGluZGljYXRlIHRoYXQgYXQgdGhlIGJlZ2lubmluZyBvZgogICAgICogdGhlIG5ldyBsaW5lLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHNvdXJjZSBtYXBzIGNvbnNpZGVyIGVhY2ggbGluZQogICAgICogc2VwYXJhdGVseS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZUxpbmUoKTogdm9pZAogICAgewogICAgICAgICRsYXN0RW50cnkgPSBMaXN0VXRpbDo6bGFzdCgkdGhpcy0+ZW50cmllcyk7CgogICAgICAgIC8vIFRyaW0gdXNlbGVzcyBlbnRyaWVzLgogICAgICAgIGlmICgkbGFzdEVudHJ5LT50YXJnZXQtPmdldExpbmUoKSA9PT0gJHRoaXMtPmxpbmUgJiYgJGxhc3RFbnRyeS0+dGFyZ2V0LT5nZXRDb2x1bW4oKSA9PT0gJHRoaXMtPmNvbHVtbikgewogICAgICAgICAgICBhcnJheV9wb3AoJHRoaXMtPmVudHJpZXMpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmxpbmUrKzsKICAgICAgICAkdGhpcy0+Y29sdW1uID0gMDsKCiAgICAgICAgaWYgKCR0aGlzLT5pblNwYW4pIHsKICAgICAgICAgICAgJHRoaXMtPmVudHJpZXNbXSA9IG5ldyBFbnRyeSgkbGFzdEVudHJ5LT5zb3VyY2UsICR0aGlzLT5nZXRUYXJnZXRMb2NhdGlvbigpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpICR0aGlzLT5idWZmZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGJ1aWxkU291cmNlTWFwKD9zdHJpbmcgJHByZWZpeCk6IFNpbmdsZU1hcHBpbmcKICAgIHsKICAgICAgICBpZiAoJHByZWZpeCA9PT0gbnVsbCB8fCAkcHJlZml4ID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gU2luZ2xlTWFwcGluZzo6ZnJvbUVudHJpZXMoJHRoaXMtPmVudHJpZXMpOwogICAgICAgIH0KCiAgICAgICAgJHByZWZpeExlbmd0aCA9IFxzdHJsZW4oJHByZWZpeCk7CiAgICAgICAgJHByZWZpeExpbmVzID0gMDsKICAgICAgICAkcHJlZml4Q29sdW1uID0gMDsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBcc3RybGVuKCRwcmVmaXgpOyArKyRpKSB7CiAgICAgICAgICAgIGlmICgkcHJlZml4WyRpXSA9PT0gIlxuIikgewogICAgICAgICAgICAgICAgJHByZWZpeExpbmVzKys7CiAgICAgICAgICAgICAgICAkcHJlZml4Q29sdW1uID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwcmVmaXhDb2x1bW4rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFNpbmdsZU1hcHBpbmc6OmZyb21FbnRyaWVzKGFycmF5X21hcChmbiAoRW50cnkgJGVudHJ5KSA9PiBuZXcgRW50cnkoCiAgICAgICAgICAgICRlbnRyeS0+c291cmNlLAogICAgICAgICAgICBuZXcgU2ltcGxlU291cmNlTG9jYXRpb24oCiAgICAgICAgICAgICAgICAkZW50cnktPnRhcmdldC0+Z2V0T2Zmc2V0KCkgKyAkcHJlZml4TGVuZ3RoLAogICAgICAgICAgICAgICAgbGluZTogJGVudHJ5LT50YXJnZXQtPmdldExpbmUoKSArICRwcmVmaXhMaW5lcywKICAgICAgICAgICAgICAgIC8vIE9ubHkgYWRqdXN0IHRoZSBjb2x1bW4gZm9yIGVudHJpZXMgdGhhdCBhcmUgb24gdGhlIHNhbWUgbGluZSBhcwogICAgICAgICAgICAgICAgLy8gdGhlIGxhc3QgY2h1bmsgb2YgdGhlIHByZWZpeC4KICAgICAgICAgICAgICAgIGNvbHVtbjogJGVudHJ5LT50YXJnZXQtPmdldENvbHVtbigpICsgKCRlbnRyeS0+dGFyZ2V0LT5nZXRMaW5lKCkgPT09IDAgPyAkcHJlZml4Q29sdW1uIDogMCkKICAgICAgICAgICAgKQogICAgICAgICksICR0aGlzLT5lbnRyaWVzKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceMap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceMap/Base64.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcDsKCi8qKgogKiBCYXNlIDY0IEVuY29kZS9EZWNvZGUKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEJhc2U2NAp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8aW50LCBzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgRU5DT0RJTkdfTUFQID0gWwogICAgICAgIDAgPT4gJ0EnLAogICAgICAgIDEgPT4gJ0InLAogICAgICAgIDIgPT4gJ0MnLAogICAgICAgIDMgPT4gJ0QnLAogICAgICAgIDQgPT4gJ0UnLAogICAgICAgIDUgPT4gJ0YnLAogICAgICAgIDYgPT4gJ0cnLAogICAgICAgIDcgPT4gJ0gnLAogICAgICAgIDggPT4gJ0knLAogICAgICAgIDkgPT4gJ0onLAogICAgICAgIDEwID0+ICdLJywKICAgICAgICAxMSA9PiAnTCcsCiAgICAgICAgMTIgPT4gJ00nLAogICAgICAgIDEzID0+ICdOJywKICAgICAgICAxNCA9PiAnTycsCiAgICAgICAgMTUgPT4gJ1AnLAogICAgICAgIDE2ID0+ICdRJywKICAgICAgICAxNyA9PiAnUicsCiAgICAgICAgMTggPT4gJ1MnLAogICAgICAgIDE5ID0+ICdUJywKICAgICAgICAyMCA9PiAnVScsCiAgICAgICAgMjEgPT4gJ1YnLAogICAgICAgIDIyID0+ICdXJywKICAgICAgICAyMyA9PiAnWCcsCiAgICAgICAgMjQgPT4gJ1knLAogICAgICAgIDI1ID0+ICdaJywKICAgICAgICAyNiA9PiAnYScsCiAgICAgICAgMjcgPT4gJ2InLAogICAgICAgIDI4ID0+ICdjJywKICAgICAgICAyOSA9PiAnZCcsCiAgICAgICAgMzAgPT4gJ2UnLAogICAgICAgIDMxID0+ICdmJywKICAgICAgICAzMiA9PiAnZycsCiAgICAgICAgMzMgPT4gJ2gnLAogICAgICAgIDM0ID0+ICdpJywKICAgICAgICAzNSA9PiAnaicsCiAgICAgICAgMzYgPT4gJ2snLAogICAgICAgIDM3ID0+ICdsJywKICAgICAgICAzOCA9PiAnbScsCiAgICAgICAgMzkgPT4gJ24nLAogICAgICAgIDQwID0+ICdvJywKICAgICAgICA0MSA9PiAncCcsCiAgICAgICAgNDIgPT4gJ3EnLAogICAgICAgIDQzID0+ICdyJywKICAgICAgICA0NCA9PiAncycsCiAgICAgICAgNDUgPT4gJ3QnLAogICAgICAgIDQ2ID0+ICd1JywKICAgICAgICA0NyA9PiAndicsCiAgICAgICAgNDggPT4gJ3cnLAogICAgICAgIDQ5ID0+ICd4JywKICAgICAgICA1MCA9PiAneScsCiAgICAgICAgNTEgPT4gJ3onLAogICAgICAgIDUyID0+ICcwJywKICAgICAgICA1MyA9PiAnMScsCiAgICAgICAgNTQgPT4gJzInLAogICAgICAgIDU1ID0+ICczJywKICAgICAgICA1NiA9PiAnNCcsCiAgICAgICAgNTcgPT4gJzUnLAogICAgICAgIDU4ID0+ICc2JywKICAgICAgICA1OSA9PiAnNycsCiAgICAgICAgNjAgPT4gJzgnLAogICAgICAgIDYxID0+ICc5JywKICAgICAgICA2MiA9PiAnKycsCiAgICAgICAgNjMgPT4gJy8nLAogICAgXTsKCiAgICAvKioKICAgICAqIENvbnZlcnQgdG8gYmFzZTY0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5jb2RlKGludCAkdmFsdWUpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6RU5DT0RJTkdfTUFQWyR2YWx1ZV07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceMap/Base64VLQ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcDsKCi8qKgogKiBCYXNlIDY0IFZMUQogKgogKiBCYXNlZCBvbiB0aGUgQmFzZSA2NCBWTFEgaW1wbGVtZW50YXRpb24gaW4gQ2xvc3VyZSBDb21waWxlcjoKICogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWNvbXBpbGVyL2Jsb2IvbWFzdGVyL3NyYy9jb20vZ29vZ2xlL2RlYnVnZ2luZy9zb3VyY2VtYXAvQmFzZTY0VkxRLmphdmEKICoKICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4KICoKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqCiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICoKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICoKICogQGF1dGhvciBKb2huIExlbnogPGpvaG5sZW56QGdvb2dsZS5jb20+CiAqIEBhdXRob3IgQW50aG9uIFBhbmcgPGFudGhvbi5wYW5nQGdtYWlsLmNvbT4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBCYXNlNjRWTFEKewogICAgLy8gQSBCYXNlNjQgVkxRIGRpZ2l0IGNhbiByZXByZXNlbnQgNSBiaXRzLCBzbyBpdCBpcyBiYXNlLTMyLgogICAgY29uc3QgVkxRX0JBU0VfU0hJRlQgPSA1OwoKICAgIC8vIEEgbWFzayBvZiBiaXRzIGZvciBhIFZMUSBkaWdpdCAoMTExMTEpLCAzMSBkZWNpbWFsLgogICAgY29uc3QgVkxRX0JBU0VfTUFTSyA9IDMxOwoKICAgIC8vIFRoZSBjb250aW51YXRpb24gYml0IGlzIHRoZSA2dGggYml0LgogICAgY29uc3QgVkxRX0NPTlRJTlVBVElPTl9CSVQgPSAzMjsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIFZMUSBlbmNvZGVkIHZhbHVlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZShpbnQgJHZhbHVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGVuY29kZWQgPSAnJzsKICAgICAgICAkdmxxID0gc2VsZjo6dG9WTFFTaWduZWQoJHZhbHVlKTsKCiAgICAgICAgZG8gewogICAgICAgICAgICAkZGlnaXQgPSAkdmxxICYgc2VsZjo6VkxRX0JBU0VfTUFTSzsKCiAgICAgICAgICAgIC8vJHZscSA+Pj49IHNlbGY6OlZMUV9CQVNFX1NISUZUOyAvLyB1bnNpZ25lZCByaWdodCBzaGlmdAogICAgICAgICAgICAkdmxxID0gKCgkdmxxID4+IDEpICYgUEhQX0lOVF9NQVgpID4+IChzZWxmOjpWTFFfQkFTRV9TSElGVCAtIDEpOwoKICAgICAgICAgICAgaWYgKCR2bHEgPiAwKSB7CiAgICAgICAgICAgICAgICAkZGlnaXQgfD0gc2VsZjo6VkxRX0NPTlRJTlVBVElPTl9CSVQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRlbmNvZGVkIC49IEJhc2U2NDo6ZW5jb2RlKCRkaWdpdCk7CiAgICAgICAgfSB3aGlsZSAoJHZscSA+IDApOwoKICAgICAgICByZXR1cm4gJGVuY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBmcm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXMKICAgICAqIGlzIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiAgRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOgogICAgICogICAxIGJlY29tZXMgMiAoMTAgYmluYXJ5KSwgLTEgYmVjb21lcyAzICgxMSBiaW5hcnkpCiAgICAgKiAgIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0b1ZMUVNpZ25lZChpbnQgJHZhbHVlKTogaW50CiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA8IDApIHsKICAgICAgICAgICAgcmV0dXJuICgoLSR2YWx1ZSkgPDwgMSkgKyAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZSA8PCAxOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceMap/Builder/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceMap/Builder/Entry.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcQnVpbGRlcjsKCnVzZSBTb3VyY2VTcGFuXFNvdXJjZUxvY2F0aW9uOwoKLyoqCiAqIEFuIGVudHJ5IGluIHRoZSBzb3VyY2UgbWFwIGJ1aWxkZXIuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgRW50cnkKewogICAgLyoqCiAgICAgKiBTcGFuIGRlbm90aW5nIHRoZSBvcmlnaW5hbCBsb2NhdGlvbiBpbiB0aGUgaW5wdXQgc291cmNlIGZpbGUKICAgICAqLwogICAgcHVibGljIHJlYWRvbmx5IFNvdXJjZUxvY2F0aW9uICRzb3VyY2U7CgogICAgLyoqCiAgICAgKiBTcGFuIGluZGljYXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbG9jYXRpb24gaW4gdGhlIHRhcmdldCBmaWxlLgogICAgICovCiAgICBwdWJsaWMgcmVhZG9ubHkgU291cmNlTG9jYXRpb24gJHRhcmdldDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU291cmNlTG9jYXRpb24gJHNvdXJjZSwgU291cmNlTG9jYXRpb24gJHRhcmdldCkKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlID0gJHNvdXJjZTsKICAgICAgICAkdGhpcy0+dGFyZ2V0ID0gJHRhcmdldDsKICAgIH0KCiAgICAvKioKICAgICAqIEltcGxlbWVudHMgY29tcGFyaXNvbiB0byBlbnN1cmUgdGhhdCBlbnRyaWVzIGFyZSBvcmRlcmVkIGJ5IHRoZWlyCiAgICAgKiBsb2NhdGlvbiBpbiB0aGUgdGFyZ2V0IGZpbGUuIFdlIHNvcnQgcHJpbWFyaWx5IGJ5IHRoZSB0YXJnZXQgb2Zmc2V0CiAgICAgKiBiZWNhdXNlIHNvdXJjZSBtYXAgZmlsZXMgYXJlIGVuY29kZWQgYnkgcHJpbnRpbmcgZWFjaCBtYXBwaW5nIGluIG9yZGVyIGFzCiAgICAgKiB0aGV5IGFwcGVhciBpbiB0aGUgdGFyZ2V0IGZpbGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlVG8oRW50cnkgJG90aGVyKTogaW50CiAgICB7CiAgICAgICAgJHJlcyA9ICR0aGlzLT50YXJnZXQtPmNvbXBhcmVUbygkb3RoZXItPnRhcmdldCk7CgogICAgICAgIGlmICgkcmVzICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzOwogICAgICAgIH0KCiAgICAgICAgJHJlcyA9IChzdHJpbmcpICR0aGlzLT5zb3VyY2UtPmdldFNvdXJjZVVybCgpIDw9PiAoc3RyaW5nKSAkb3RoZXItPnNvdXJjZS0+Z2V0U291cmNlVXJsKCk7CgogICAgICAgIGlmICgkcmVzICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2UtPmNvbXBhcmVUbygkb3RoZXItPnNvdXJjZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceMap/SingleMapping.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXA7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcFxCdWlsZGVyXEVudHJ5Owp1c2UgU291cmNlU3BhblxGaWxlTG9jYXRpb247CnVzZSBTb3VyY2VTcGFuXFNvdXJjZUZpbGU7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTaW5nbGVNYXBwaW5nCnsKICAgIC8qKgogICAgICogQHZhciBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIHJlYWRvbmx5IGFycmF5ICR1cmxzOwoKICAgIC8qKgogICAgICogVGhlIHtAc2VlIFNvdXJjZUZpbGV9cyB0byB3aGljaCB0aGUgZW50cmllcyBpbiB7QHNlZSAkbGluZXN9IHJlZmVyLgogICAgICoKICAgICAqIFRoaXMgaXMgaW4gdGhlIHNhbWUgb3JkZXIgYXMge0BzZWUgJHVybHN9LiBJZiB0aGlzIHdhcyBjb25zdHJ1Y3RlZCB1c2luZwogICAgICoge0BzZWUgU2luZ2xlTWFwcGluZzo6ZnJvbUVudHJpZXMoKX0sIHRoaXMgY29udGFpbnMgZmlsZXMgZnJvbSBhbnkge0BzZWUgRmlsZUxvY2F0aW9ufXMKICAgICAqIHVzZWQgdG8gYnVpbGQgdGhlIG1hcHBpbmcuCiAgICAgKgogICAgICogRmlsZXMgd2hvc2UgY29udGVudHMgYXJlbid0IGF2YWlsYWJsZSBhcmUgYG51bGxgLgogICAgICoKICAgICAqIEB2YXIgbGlzdDxTb3VyY2VGaWxlfG51bGw+CiAgICAgKi8KICAgIHB1YmxpYyByZWFkb25seSBhcnJheSAkZmlsZXM7CgogICAgLyoqCiAgICAgKiBFbnRyaWVzIGluZGljYXRpbmcgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHNwYW4uCiAgICAgKgogICAgICogQHZhciBsaXN0PFRhcmdldExpbmVFbnRyeT4KICAgICAqLwogICAgcHVibGljIHJlYWRvbmx5IGFycmF5ICRsaW5lczsKCiAgICAvKioKICAgICAqIFVybCBvZiB0aGUgdGFyZ2V0IGZpbGUuCiAgICAgKi8KICAgIHB1YmxpYyA/c3RyaW5nICR0YXJnZXRVcmwgPSBudWxsOwoKICAgIC8qKgogICAgICogU291cmNlIHJvb3QgcHJlcGVuZGVkIHRvIGFsbCBlbnRyaWVzIGluIHtAc2VlICR1cmxzfS4KICAgICAqLwogICAgcHVibGljID9zdHJpbmcgJHNvdXJjZVJvb3QgPSBudWxsOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8U291cmNlRmlsZXxudWxsPiAkZmlsZXMKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJHVybHMKICAgICAqIEBwYXJhbSBsaXN0PFRhcmdldExpbmVFbnRyeT4gJGxpbmVzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGZpbGVzLCBhcnJheSAkdXJscywgYXJyYXkgJGxpbmVzKQogICAgewogICAgICAgICR0aGlzLT51cmxzID0gJHVybHM7CiAgICAgICAgJHRoaXMtPmZpbGVzID0gJGZpbGVzOwogICAgICAgICR0aGlzLT5saW5lcyA9ICRsaW5lczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBFbnRyeVtdICRzb3VyY2VFbnRyaWVzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUVudHJpZXMoYXJyYXkgJHNvdXJjZUVudHJpZXMpOiBzZWxmCiAgICB7CiAgICAgICAgdXNvcnQoJHNvdXJjZUVudHJpZXMsIGZuIChFbnRyeSAkYSwgRW50cnkgJGIpID0+ICRhLT5jb21wYXJlVG8oJGIpKTsKCiAgICAgICAgJGxpbmVzID0gW107CiAgICAgICAgLy8gSW5kaWNlcyBhc3NvY2lhdGVkIHdpdGggZmlsZSB1cmxzIHRoYXQgd2lsbCBiZSBwYXJ0IG9mIHRoZSBzb3VyY2UgbWFwLiBXZQogICAgICAgIC8vIHJlbHkgb24gbWFwIG9yZGVyIHNvIHRoYXQgYGFycmF5X2tleXMoJHVybClbJHVybHNbJHVdXSA9PT0gJHVgCiAgICAgICAgJHVybHMgPSBbXTsKICAgICAgICAvLyBUaGUgZmlsZSBmb3IgZWFjaCBVUkwsIGluZGV4ZWQgYnkgJHVybHMnIHZhbHVlcy4KICAgICAgICAkZmlsZXMgPSBbXTsKICAgICAgICAkbGluZU51bSA9IG51bGw7CiAgICAgICAgJHRhcmdldEVudHJpZXMgPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkc291cmNlRW50cmllcyBhcyAkc291cmNlRW50cnkpIHsKICAgICAgICAgICAgaWYgKCRsaW5lTnVtID09PSBudWxsIHx8ICRzb3VyY2VFbnRyeS0+dGFyZ2V0LT5nZXRMaW5lKCkgPiAkbGluZU51bSkgewogICAgICAgICAgICAgICAgJGxpbmVOdW0gPSAkc291cmNlRW50cnktPnRhcmdldC0+Z2V0TGluZSgpOwogICAgICAgICAgICAgICAgJHRhcmdldEVudHJpZXMgPSBuZXcgXEFycmF5T2JqZWN0KCk7CiAgICAgICAgICAgICAgICAkbGluZXNbXSA9IG5ldyBUYXJnZXRMaW5lRW50cnkoJGxpbmVOdW0sICR0YXJnZXRFbnRyaWVzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHNvdXJjZVVybCA9ICRzb3VyY2VFbnRyeS0+c291cmNlLT5nZXRTb3VyY2VVcmwoKTsKICAgICAgICAgICAgJHVybElkID0gJHVybHNbJHNvdXJjZVVybD8tPnRvU3RyaW5nKCkgPz8gJyddID8/PSBcY291bnQoJHVybHMpOwoKICAgICAgICAgICAgaWYgKCRzb3VyY2VFbnRyeS0+c291cmNlIGluc3RhbmNlb2YgRmlsZUxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICAkZmlsZXNbJHVybElkXSA/Pz0gJHNvdXJjZUVudHJ5LT5zb3VyY2UtPmdldEZpbGUoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRhcmdldEVudHJpZXNbXSA9IG5ldyBUYXJnZXRFbnRyeSgkc291cmNlRW50cnktPnRhcmdldC0+Z2V0Q29sdW1uKCksICR1cmxJZCwgJHNvdXJjZUVudHJ5LT5zb3VyY2UtPmdldExpbmUoKSwgJHNvdXJjZUVudHJ5LT5zb3VyY2UtPmdldENvbHVtbigpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgc2VsZihhcnJheV92YWx1ZXMoYXJyYXlfbWFwKGZuIChpbnQgJGkpID0+ICRmaWxlc1skaV0gPz8gbnVsbCwgJHVybHMpKSwgYXJyYXlfa2V5cygkdXJscyksICRsaW5lcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGVzIHRoZSBNYXBwaW5nIG1hcHBpbmdzIGFzIGEganNvbiBtYXAuCiAgICAgKgogICAgICogSWYgJGluY2x1ZGVTb3VyY2VDb250ZW50cyBpcyBgdHJ1ZWAsIHRoaXMgaW5jbHVkZXMgdGhlIHNvdXJjZSBmaWxlCiAgICAgKiBjb250ZW50cyBmcm9tIHtAc2VlICRmaWxlc30gaW4gdGhlIG1hcCBpZiBwb3NzaWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgbWl4ZWQ+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0pzb24oYm9vbCAkaW5jbHVkZVNvdXJjZUNvbnRlbnRzID0gZmFsc2UpOiBhcnJheQogICAgewogICAgICAgICRidWZmID0gJyc7CiAgICAgICAgJGxpbmUgPSAwOwogICAgICAgICRjb2x1bW4gPSAwOwogICAgICAgICRzcmNMaW5lID0gMDsKICAgICAgICAkc3JjQ29sdW1uID0gMDsKICAgICAgICAkc3JjVXJsSWQgPSAwOwogICAgICAgICRmaXJzdCA9IHRydWU7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5saW5lcyBhcyAkZW50cnkpIHsKICAgICAgICAgICAgJG5leHRMaW5lID0gJGVudHJ5LT5saW5lOwoKICAgICAgICAgICAgaWYgKCRuZXh0TGluZSA+ICRsaW5lKSB7CiAgICAgICAgICAgICAgICBmb3IgKCRpID0gJGxpbmU7ICRpIDwgJG5leHRMaW5lOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmYgLj0gJzsnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGxpbmUgPSAkbmV4dExpbmU7CiAgICAgICAgICAgICAgICAkY29sdW1uID0gMDsKICAgICAgICAgICAgICAgICRmaXJzdCA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRlbnRyeS0+ZW50cmllcyBhcyAkc2VnbWVudCkgewogICAgICAgICAgICAgICAgaWYgKCEkZmlyc3QpIHsKICAgICAgICAgICAgICAgICAgICAkYnVmZiAuPSAnLCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgICRidWZmIC49IEJhc2U2NFZMUTo6ZW5jb2RlKCRzZWdtZW50LT5jb2x1bW4gLSAkY29sdW1uKTsKICAgICAgICAgICAgICAgICRjb2x1bW4gPSAkc2VnbWVudC0+Y29sdW1uOwoKICAgICAgICAgICAgICAgIC8vIEVuY29kaW5nIGNhbiBiZSBqdXN0IHRoZSBjb2x1bW4gb2Zmc2V0IGlmIHRoZXJlIGlzIG5vIHNvdXJjZQogICAgICAgICAgICAgICAgLy8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAkbmV3VXJsSWQgPSAkc2VnbWVudC0+c291cmNlVXJsSWQ7CiAgICAgICAgICAgICAgICBpZiAoJG5ld1VybElkID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBcYXNzZXJ0KCRzZWdtZW50LT5zb3VyY2VMaW5lICE9PSBudWxsKTsKICAgICAgICAgICAgICAgIFxhc3NlcnQoJHNlZ21lbnQtPnNvdXJjZUNvbHVtbiAhPT0gbnVsbCk7CgogICAgICAgICAgICAgICAgJGJ1ZmYgLj0gQmFzZTY0VkxROjplbmNvZGUoJG5ld1VybElkIC0gJHNyY1VybElkKTsKICAgICAgICAgICAgICAgICRzcmNVcmxJZCA9ICRuZXdVcmxJZDsKICAgICAgICAgICAgICAgICRidWZmIC49IEJhc2U2NFZMUTo6ZW5jb2RlKCRzZWdtZW50LT5zb3VyY2VMaW5lIC0gJHNyY0xpbmUpOwogICAgICAgICAgICAgICAgJHNyY0xpbmUgPSAkc2VnbWVudC0+c291cmNlTGluZTsKICAgICAgICAgICAgICAgICRidWZmIC49IEJhc2U2NFZMUTo6ZW5jb2RlKCRzZWdtZW50LT5zb3VyY2VDb2x1bW4gLSAkc3JjQ29sdW1uKTsKICAgICAgICAgICAgICAgICRzcmNDb2x1bW4gPSAkc2VnbWVudC0+c291cmNlQ29sdW1uOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gWwogICAgICAgICAgICAndmVyc2lvbicgPT4gMywKICAgICAgICAgICAgJ3NvdXJjZVJvb3QnID0+ICR0aGlzLT5zb3VyY2VSb290ID8/ICcnLAogICAgICAgICAgICAnc291cmNlcycgPT4gJHRoaXMtPnVybHMsCiAgICAgICAgICAgICduYW1lcycgPT4gW10sCiAgICAgICAgICAgICdtYXBwaW5ncycgPT4gJGJ1ZmYsCiAgICAgICAgXTsKCiAgICAgICAgaWYgKCR0aGlzLT50YXJnZXRVcmwgIT09IG51bGwpIHsKICAgICAgICAgICAgJHJlc3VsdFsnZmlsZSddID0gJHRoaXMtPnRhcmdldFVybDsKICAgICAgICB9CgogICAgICAgIGlmICgkaW5jbHVkZVNvdXJjZUNvbnRlbnRzKSB7CiAgICAgICAgICAgICRyZXN1bHRbJ3NvdXJjZXNDb250ZW50J10gPSBhcnJheV9tYXAoZm4gKD9Tb3VyY2VGaWxlICRmaWxlKSA9PiAkZmlsZT8tPmdldFRleHQoMCksICR0aGlzLT5maWxlcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBuZXcgbWFwcGluZyB3aXRoIHtAc2VlICR1cmxzfSB0cmFuc2Zvcm1lZCBieSAkY2FsbGJhY2suCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKHN0cmluZyk6IHN0cmluZyAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1hcFVybHMoY2FsbGFibGUgJGNhbGxiYWNrKTogc2VsZgogICAgewogICAgICAgICRuZXdVcmxzID0gYXJyYXlfbWFwKCRjYWxsYmFjaywgJHRoaXMtPnVybHMpOwoKICAgICAgICAkbmV3ID0gbmV3IHNlbGYoJHRoaXMtPmZpbGVzLCAkbmV3VXJscywgJHRoaXMtPmxpbmVzKTsKICAgICAgICAkbmV3LT50YXJnZXRVcmwgPSAkdGhpcy0+dGFyZ2V0VXJsOwogICAgICAgICRuZXctPnNvdXJjZVJvb3QgPSAkdGhpcy0+c291cmNlUm9vdDsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceMap/TargetEntry.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXA7CgovKioKICogQSB0YXJnZXQgc2VnbWVudCBlbnRyeSByZWFkIGZyb20gYSBzb3VyY2UgbWFwCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgVGFyZ2V0RW50cnkKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIHB1YmxpYyByZWFkb25seSBpbnQgJGNvbHVtbiwKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgP2ludCAkc291cmNlVXJsSWQgPSBudWxsLAogICAgICAgIHB1YmxpYyByZWFkb25seSA/aW50ICRzb3VyY2VMaW5lID0gbnVsbCwKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgP2ludCAkc291cmNlQ29sdW1uID0gbnVsbCwKICAgICkgewogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceMap/TargetLineEntry.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXA7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBUYXJnZXRMaW5lRW50cnkKewogICAgLyoqCiAgICAgKiBAcGFyYW0gXEFycmF5T2JqZWN0PGludCwgVGFyZ2V0RW50cnk+ICRlbnRyaWVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgaW50ICRsaW5lLAogICAgICAgIHB1YmxpYyByZWFkb25seSBcQXJyYXlPYmplY3QgJGVudHJpZXMsCiAgICApIHsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceSpan/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceSpan/LazyFileSpan.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZVNwYW47Cgp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpSW50ZXJmYWNlOwp1c2UgU291cmNlU3BhblxGaWxlTG9jYXRpb247CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwp1c2UgU291cmNlU3BhblxTb3VyY2VGaWxlOwp1c2UgU291cmNlU3BhblxTb3VyY2VTcGFuOwoKLyoqCiAqIEEgd3JhcHBlciBmb3Ige0BzZWUgRmlsZVNwYW59IHRoYXQgYWxsb3dzIGFuIGV4cGVuc2l2ZSBjcmVhdGlvbiBwcm9jZXNzIHRvIGJlCiAqIGRlZmVycmVkIHVudGlsIHRoZSBzcGFuIGlzIGFjdHVhbGx5IG5lZWRlZC4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBMYXp5RmlsZVNwYW4gaW1wbGVtZW50cyBGaWxlU3Bhbgp7CiAgICAvKioKICAgICAqIEB2YXIgXENsb3N1cmUoKTogRmlsZVNwYW4KICAgICAqIEByZWFkb25seQogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IFxDbG9zdXJlICRidWlsZGVyOwoKICAgIC8qKgogICAgICogQHZhciBGaWxlU3BhbnxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgP0ZpbGVTcGFuICRzcGFuID0gbnVsbDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcQ2xvc3VyZSgpOiBGaWxlU3BhbiAkYnVpbGRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoXENsb3N1cmUgJGJ1aWxkZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1aWxkZXIgPSAkYnVpbGRlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3BhbigpOiBGaWxlU3BhbgogICAgewogICAgICAgIGlmICgkdGhpcy0+c3BhbiA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+c3BhbiA9ICgkdGhpcy0+YnVpbGRlcikoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c3BhbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RmlsZSgpOiBTb3VyY2VGaWxlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTcGFuKCktPmdldEZpbGUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U291cmNlVXJsKCk6ID9VcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNwYW4oKS0+Z2V0U291cmNlVXJsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExlbmd0aCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNwYW4oKS0+Z2V0TGVuZ3RoKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXJ0KCk6IEZpbGVMb2NhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0U3BhbigpLT5nZXRTdGFydCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmQoKTogRmlsZUxvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTcGFuKCktPmdldEVuZCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZXh0KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0U3BhbigpLT5nZXRUZXh0KCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHVuaW9uKFNvdXJjZVNwYW4gJG90aGVyKTogU291cmNlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0U3BhbigpLT51bmlvbigkb3RoZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlVG8oU291cmNlU3BhbiAkb3RoZXIpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNwYW4oKS0+Y29tcGFyZVRvKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZChGaWxlU3BhbiAkb3RoZXIpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0U3BhbigpLT5leHBhbmQoJG90aGVyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbWVzc2FnZShzdHJpbmcgJG1lc3NhZ2UpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNwYW4oKS0+bWVzc2FnZSgkbWVzc2FnZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1lc3NhZ2VNdWx0aXBsZShzdHJpbmcgJG1lc3NhZ2UsIHN0cmluZyAkbGFiZWwsIGFycmF5ICRzZWNvbmRhcnlTcGFucyk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0U3BhbigpLT5tZXNzYWdlTXVsdGlwbGUoJG1lc3NhZ2UsICRsYWJlbCwgJHNlY29uZGFyeVNwYW5zKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlnaGxpZ2h0KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0U3BhbigpLT5oaWdobGlnaHQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlnaGxpZ2h0TXVsdGlwbGUoc3RyaW5nICRsYWJlbCwgYXJyYXkgJHNlY29uZGFyeVNwYW5zKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTcGFuKCktPmhpZ2hsaWdodE11bHRpcGxlKCRsYWJlbCwgJHNlY29uZGFyeVNwYW5zKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3Vic3BhbihpbnQgJHN0YXJ0LCA/aW50ICRlbmQgPSBudWxsKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNwYW4oKS0+c3Vic3Bhbigkc3RhcnQsICRlbmQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZXh0KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0U3BhbigpLT5nZXRDb250ZXh0KCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/SourceSpan/MultiSpan.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZVNwYW47Cgp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpSW50ZXJmYWNlOwp1c2UgU291cmNlU3BhblxGaWxlTG9jYXRpb247CnVzZSBTb3VyY2VTcGFuXEZpbGVTcGFuOwp1c2UgU291cmNlU3BhblxTb3VyY2VGaWxlOwp1c2UgU291cmNlU3BhblxTb3VyY2VTcGFuOwoKLyoqCiAqIEEgRmlsZVNwYW4gd3JhcHBlciB0aGF0IHdpdGggc2Vjb25kYXJ5IHNwYW5zIGF0dGFjaGVkLCBzbyB0aGF0CiAqIHtAc2VlIE11bHRpU3Bhbjo6bWVzc2FnZX0gY2FuIGZvcndhcmQgdG8ge0BzZWUgU291cmNlU3Bhbjo6bWVzc2FnZU11bHRpcGxlfS4KICoKICogVGhpcyBpcyB1c2VkIHRvIHRyYW5zcGFyZW50bHkgc3VwcG9ydCBtdWx0aS1zcGFuIG1lc3NhZ2VzIGluIHNpdHVhdGlvbnMgdGhhdAogKiBuZWVkIHRvIGJlIGJhY2t3YXJkcy1jb21wYXRpYmxlIHdpdGggc2luZ2xlIHNwYW5zLCBzdWNoIGFzIGxvZ2dlcgogKiBpbnZvY2F0aW9ucy4gVG8gbWF0Y2ggdGhlIGBzb3VyY2Vfc3BhbmAgcGFja2FnZSwgc2VwYXJhdGUgQVBJcyBzaG91bGQKICogZ2VuZXJhbGx5IGJlIHByZWZlcnJlZCBvdmVyIHRoaXMgY2xhc3Mgd2hlcmV2ZXIgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICogaXNuJ3QgYSBjb25jZXJuLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE11bHRpU3BhbiBpbXBsZW1lbnRzIEZpbGVTcGFuCnsKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgU291cmNlU3Bhbj4gJHNlY29uZGFyeVNwYW5zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRwcmltYXJ5LAogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRwcmltYXJ5TGFiZWwsCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkc2Vjb25kYXJ5U3BhbnMsCiAgICApIHsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhcnQoKTogRmlsZUxvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltYXJ5LT5nZXRTdGFydCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmQoKTogRmlsZUxvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltYXJ5LT5nZXRFbmQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGV4dCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaW1hcnktPmdldFRleHQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGV4dCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaW1hcnktPmdldENvbnRleHQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RmlsZSgpOiBTb3VyY2VGaWxlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltYXJ5LT5nZXRGaWxlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExlbmd0aCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaW1hcnktPmdldExlbmd0aCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTb3VyY2VVcmwoKTogP1VyaUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJpbWFyeS0+Z2V0U291cmNlVXJsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbyhTb3VyY2VTcGFuICRvdGhlcik6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJpbWFyeS0+Y29tcGFyZVRvKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZChGaWxlU3BhbiAkb3RoZXIpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFByaW1hcnkoJHRoaXMtPnByaW1hcnktPmV4cGFuZCgkb3RoZXIpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5pb24oU291cmNlU3BhbiAkb3RoZXIpOiBTb3VyY2VTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltYXJ5LT51bmlvbigkb3RoZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdWJzcGFuKGludCAkc3RhcnQsID9pbnQgJGVuZCA9IG51bGwpOiBGaWxlU3BhbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFByaW1hcnkoJHRoaXMtPnByaW1hcnktPnN1YnNwYW4oJHN0YXJ0LCAkZW5kKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhpZ2hsaWdodCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaW1hcnktPmhpZ2hsaWdodE11bHRpcGxlKCR0aGlzLT5wcmltYXJ5TGFiZWwsICR0aGlzLT5zZWNvbmRhcnlTcGFucyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1lc3NhZ2Uoc3RyaW5nICRtZXNzYWdlKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltYXJ5LT5tZXNzYWdlTXVsdGlwbGUoJG1lc3NhZ2UsICR0aGlzLT5wcmltYXJ5TGFiZWwsICR0aGlzLT5zZWNvbmRhcnlTcGFucyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhpZ2hsaWdodE11bHRpcGxlKHN0cmluZyAkbGFiZWwsIGFycmF5ICRzZWNvbmRhcnlTcGFucyk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJpbWFyeS0+aGlnaGxpZ2h0TXVsdGlwbGUoJGxhYmVsLCBhcnJheV9tZXJnZSgkdGhpcy0+c2Vjb25kYXJ5U3BhbnMsICRzZWNvbmRhcnlTcGFucykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtZXNzYWdlTXVsdGlwbGUoc3RyaW5nICRtZXNzYWdlLCBzdHJpbmcgJGxhYmVsLCBhcnJheSAkc2Vjb25kYXJ5U3BhbnMpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaW1hcnktPm1lc3NhZ2VNdWx0aXBsZSgkbWVzc2FnZSwgJGxhYmVsLCBhcnJheV9tZXJnZSgkdGhpcy0+c2Vjb25kYXJ5U3BhbnMsICRzZWNvbmRhcnlTcGFucykpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgJHRoaXMgd2l0aCAkbmV3UHJpbWFyeSBhcyBpdHMgcHJpbWFyeSBzcGFuLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdpdGhQcmltYXJ5KEZpbGVTcGFuICRuZXdQcmltYXJ5KTogTXVsdGlTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBNdWx0aVNwYW4oJG5ld1ByaW1hcnksICR0aGlzLT5wcmltYXJ5TGFiZWwsICR0aGlzLT5zZWNvbmRhcnlTcGFucyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/StackTrace/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/StackTrace/Frame.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFN0YWNrVHJhY2U7Cgp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpSW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcUGF0aDsKCi8qKgogKiBBIHNpbmdsZSBzdGFjayBmcmFtZS4gRWFjaCBmcmFtZSBwb2ludHMgdG8gYSBwcmVjaXNlIGxvY2F0aW9uIGluIFNhc3MgY29kZS4KICovCmZpbmFsIGNsYXNzIEZyYW1lCnsKICAgIC8qKgogICAgICogVGhlIFVSSSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgY29kZSBpcyBsb2NhdGVkLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IFVyaUludGVyZmFjZSAkdXJsOwoKICAgIC8qKgogICAgICogVGhlIGxpbmUgbnVtYmVyIG9uIHdoaWNoIHRoZSBjb2RlIGxvY2F0aW9uIGlzIGxvY2F0ZWQuCiAgICAgKgogICAgICogVGhpcyBjYW4gYmUgbnVsbCwgaW5kaWNhdGluZyB0aGF0IHRoZSBsaW5lIG51bWJlciBpcyB1bmtub3duIG9yCiAgICAgKiB1bmltcG9ydGFudC4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSA/aW50ICRsaW5lOwoKICAgIC8qKgogICAgICogVGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIGNvZGUgbG9jYXRpb24uCiAgICAgKgogICAgICogVGhpcyBjYW4gYmUgbnVsbCwgaW5kaWNhdGluZyB0aGF0IHRoZSBjb2x1bW4gbnVtYmVyIGlzIHVua25vd24gb3IKICAgICAqIHVuaW1wb3J0YW50LgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5ID9pbnQgJGNvbHVtbjsKCiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgaW4gd2hpY2ggdGhlIGNvZGUgbG9jYXRpb24gb2NjdXJzLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5ID9zdHJpbmcgJG1lbWJlcjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoVXJpSW50ZXJmYWNlICR1cmwsID9pbnQgJGxpbmUsID9pbnQgJGNvbHVtbiwgP3N0cmluZyAkbWVtYmVyKQogICAgewogICAgICAgICR0aGlzLT51cmwgPSAkdXJsOwogICAgICAgICR0aGlzLT5saW5lID0gJGxpbmU7CiAgICAgICAgJHRoaXMtPmNvbHVtbiA9ICRjb2x1bW47CiAgICAgICAgJHRoaXMtPm1lbWJlciA9ICRtZW1iZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgVVJJIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBjb2RlIGlzIGxvY2F0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVcmwoKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmw7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgbGluZSBudW1iZXIgb24gd2hpY2ggdGhlIGNvZGUgbG9jYXRpb24gaXMgbG9jYXRlZC4KICAgICAqCiAgICAgKiBUaGlzIGNhbiBiZSBudWxsLCBpbmRpY2F0aW5nIHRoYXQgdGhlIGxpbmUgbnVtYmVyIGlzIHVua25vd24gb3IKICAgICAqIHVuaW1wb3J0YW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZSgpOiA/aW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5saW5lOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIGNvZGUgbG9jYXRpb24uCiAgICAgKgogICAgICogVGhpcyBjYW4gYmUgbnVsbCwgaW5kaWNhdGluZyB0aGF0IHRoZSBjb2x1bW4gbnVtYmVyIGlzIHVua25vd24gb3IKICAgICAqIHVuaW1wb3J0YW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29sdW1uKCk6ID9pbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbHVtbjsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgaW4gd2hpY2ggdGhlIGNvZGUgbG9jYXRpb24gb2NjdXJzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWVtYmVyKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1lbWJlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEEgaHVtYW4tZnJpZW5kbHkgZGVzY3JpcHRpb24gb2YgdGhlIGNvZGUgbG9jYXRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2NhdGlvbigpOiBzdHJpbmcKICAgIHsKICAgICAgICAkbGlicmFyeSA9IFBhdGg6OnByZXR0eVVyaSgkdGhpcy0+dXJsKTsKCiAgICAgICAgaWYgKCR0aGlzLT5saW5lID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbGlicmFyeTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+Y29sdW1uID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbGlicmFyeSAuICcgJyAuICR0aGlzLT5saW5lOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsaWJyYXJ5IC4gJyAnIC4gJHRoaXMtPmxpbmUgLiAnOicgLiAkdGhpcy0+Y29sdW1uOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/StackTrace/Trace.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFN0YWNrVHJhY2U7CgovKioKICogQSBzdGFjayB0cmFjZSwgY29tcHJpc2VkIG9mIGEgbGlzdCBvZiBzdGFjayBmcmFtZXMuCiAqLwpmaW5hbCBjbGFzcyBUcmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxGcmFtZT4KICAgICAqIEByZWFkb25seQogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRmcmFtZXM7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxGcmFtZT4gJGZyYW1lcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGZyYW1lcykKICAgIHsKICAgICAgICAkdGhpcy0+ZnJhbWVzID0gJGZyYW1lczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbGlzdDxGcmFtZT4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZyYW1lcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZnJhbWVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRUcmFjZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkbG9uZ2VzdCA9IDA7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mcmFtZXMgYXMgJGZyYW1lKSB7CiAgICAgICAgICAgICRsZW5ndGggPSBcc3RybGVuKCRmcmFtZS0+Z2V0TG9jYXRpb24oKSk7CiAgICAgICAgICAgICRsb25nZXN0ID0gbWF4KCRsb25nZXN0LCAkbGVuZ3RoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpbXBsb2RlKGFycmF5X21hcChmbihGcmFtZSAkZnJhbWUpID0+IHN0cl9wYWQoJGZyYW1lLT5nZXRMb2NhdGlvbigpLCAkbG9uZ2VzdCkgLiAnICAnIC4gJGZyYW1lLT5nZXRNZW1iZXIoKSAuICJcbiIsICR0aGlzLT5mcmFtZXMpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Syntax.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKZW51bSBTeW50YXgKewogICAgLyoqCiAgICAgKiBUaGUgQ1NTLXN1cGVyc2V0IFNDU1Mgc3ludGF4LgogICAgICovCiAgICBjYXNlIFNDU1M7CgogICAgLyoqCiAgICAgKiBUaGUgd2hpdGVzcGFjZS1zZW5zaXRpdmUgaW5kZW50ZWQgc3ludGF4LgogICAgICovCiAgICBjYXNlIFNBU1M7CgogICAgLyoqCiAgICAgKiBUaGUgcGxhaW4gQ1NTIHN5bnRheCwgd2hpY2ggZGlzYWxsb3dzIHNwZWNpYWwgU2FzcyBmZWF0dXJlcy4KICAgICAqLwogICAgY2FzZSBDU1M7CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmb3JQYXRoKHN0cmluZyAkcGF0aCk6IHNlbGYKICAgIHsKICAgICAgICBpZiAoc3RyX2VuZHNfd2l0aCgkcGF0aCwgJy5zYXNzJykpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OlNBU1M7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyX2VuZHNfd2l0aCgkcGF0aCwgJy5jc3MnKSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6Q1NTOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OlNDU1M7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Type.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIEJsb2NrL25vZGUgdHlwZXMKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKi8KZmluYWwgY2xhc3MgVHlwZQp7CiAgICBjb25zdCBUX0NPTE9SID0gJ2NvbG9yJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfS0VZV09SRCA9ICdrZXl3b3JkJzsKICAgIGNvbnN0IFRfTElTVCA9ICdsaXN0JzsKICAgIGNvbnN0IFRfTUFQID0gJ21hcCc7CiAgICBjb25zdCBUX05VTEwgPSAnbnVsbCc7CiAgICBjb25zdCBUX05VTUJFUiA9ICdudW1iZXInOwogICAgY29uc3QgVF9TVFJJTkcgPSAnc3RyaW5nJzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIExlYWd1ZVxVcmlcVXJpOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFN0YWNrVHJhY2VcRnJhbWU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTdHJpbmdVdGlsOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBVdGlsaXR5IGZ1bmN0aW9ucwogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgVXRpbAp7CiAgICAvKioKICAgICAqIFJldHVybnMgJHN0cmluZyB3aXRoIGV2ZXJ5IGxpbmUgaW5kZW50ZWQgJGluZGVudGF0aW9uIHNwYWNlcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbmRlbnQoc3RyaW5nICRzdHJpbmcsIGludCAkaW5kZW50YXRpb24pOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgiXG4iLCBhcnJheV9tYXAoZnVuY3Rpb24gKCRsaW5lKSB1c2UgKCRpbmRlbnRhdGlvbikgewogICAgICAgICAgICByZXR1cm4gc3RyX3JlcGVhdCgnICcsICRpbmRlbnRhdGlvbikgLiAkbGluZTsKICAgICAgICB9LCBleHBsb2RlKCJcbiIsICRzdHJpbmcpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgVVJJIGNvbXBvbmVudAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmcgJHN0cmluZyk6IHN0cmluZwogICAgewogICAgICAgICRyZXZlcnQgPSBbJyUyMScgPT4gJyEnLCAnJTJBJyA9PiAnKicsICclMjcnID0+ICInIiwgJyUyOCcgPT4gJygnLCAnJTI5JyA9PiAnKSddOwoKICAgICAgICByZXR1cm4gc3RydHIocmF3dXJsZW5jb2RlKCRzdHJpbmcpLCAkcmV2ZXJ0KTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyYW1lRm9yU3BhbihGaWxlU3BhbiAkc3Bhbiwgc3RyaW5nICRtZW1iZXIsID9VcmlJbnRlcmZhY2UgJHVybCA9IG51bGwpOiBGcmFtZQogICAgewogICAgICAgIHJldHVybiBuZXcgRnJhbWUoCiAgICAgICAgICAgICR1cmwgPz8gJHNwYW4tPmdldFNvdXJjZVVybCgpID8/IFVyaTo6bmV3KCctJyksCiAgICAgICAgICAgICRzcGFuLT5nZXRTdGFydCgpLT5nZXRMaW5lKCkgKyAxLAogICAgICAgICAgICAkc3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0Q29sdW1uKCkgKyAxLAogICAgICAgICAgICAkbWVtYmVyCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhcmlhYmxlIG5hbWUgKGluY2x1ZGluZyB0aGUgbGVhZGluZyBgJGApIGZyb20gYSAkc3BhbiB0aGF0CiAgICAgKiBjb3ZlcnMgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiwgd2hpY2ggaW5jbHVkZXMgdGhlIHZhcmlhYmxlIG5hbWUgYXMgd2VsbCBhcwogICAgICogdGhlIGNvbG9uIGFuZCBleHByZXNzaW9uIGZvbGxvd2luZyBpdC4KICAgICAqCiAgICAgKiBUaGlzIGlzbid0IHBhcnRpY3VsYXJseSBlZmZpY2llbnQsIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBlcnJvcgogICAgICogbWVzc2FnZXMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjbGFyYXRpb25OYW1lKEZpbGVTcGFuICRzcGFuKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHRleHQgPSAkc3Bhbi0+Z2V0VGV4dCgpOwogICAgICAgICRwb3MgPSBzdHJwb3MoJHRleHQsICc6Jyk7CgogICAgICAgIHJldHVybiBTdHJpbmdVdGlsOjp0cmltQXNjaWlSaWdodChzdWJzdHIoJHRleHQsIDAsICRwb3MgPT09IGZhbHNlID8gbnVsbCA6ICRwb3MpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgJG5hbWUgd2l0aG91dCBhIHZlbmRvciBwcmVmaXguCiAgICAgKgogICAgICogSWYgJG5hbWUgaGFzIG5vIHZlbmRvciBwcmVmaXgsIGl0J3MgcmV0dXJuZWQgYXMtaXMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdW52ZW5kb3Ioc3RyaW5nICRuYW1lKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGxlbmd0aCA9IFxzdHJsZW4oJG5hbWUpOwoKICAgICAgICBpZiAoJGxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgcmV0dXJuICRuYW1lOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuYW1lWzBdICE9PSAnLScpIHsKICAgICAgICAgICAgcmV0dXJuICRuYW1lOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuYW1lWzFdID09PSAnLScpIHsKICAgICAgICAgICAgcmV0dXJuICRuYW1lOwogICAgICAgIH0KCiAgICAgICAgZm9yICgkaSA9IDI7ICRpIDwgJGxlbmd0aDsgJGkrKykgewogICAgICAgICAgICBpZiAoJG5hbWVbJGldID09PSAnLScpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdWJzdHIoJG5hbWUsICRpICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgXFNwbE9iamVjdFN0b3JhZ2U6OmFkZEFsbCgpfSwgYnV0IGZvciB0d28tbGF5ZXIgbWFwcy4KICAgICAqCiAgICAgKiBUaGlzIGF2b2lkcyBjb3B5aW5nIGlubmVyIG1hcHMgZnJvbSAkc291cmNlIGlmIHBvc3NpYmxlLgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBLMSBvZiBvYmplY3QKICAgICAqIEB0ZW1wbGF0ZSBLMiBvZiBvYmplY3QKICAgICAqIEB0ZW1wbGF0ZSBWCiAgICAgKiBAdGVtcGxhdGUgSW5uZXIgb2YgXFNwbE9iamVjdFN0b3JhZ2U8SzIsIFY+CiAgICAgKgogICAgICogQHBhcmFtIFxTcGxPYmplY3RTdG9yYWdlPEsxLCBJbm5lcj4gJGRlc3RpbmF0aW9uCiAgICAgKiBAcGFyYW0gXFNwbE9iamVjdFN0b3JhZ2U8SzEsIElubmVyPiAkc291cmNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFwQWRkQWxsMihcU3BsT2JqZWN0U3RvcmFnZSAkZGVzdGluYXRpb24sIFxTcGxPYmplY3RTdG9yYWdlICRzb3VyY2UpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHNvdXJjZSBhcyAka2V5KSB7CiAgICAgICAgICAgICRpbm5lciA9ICRzb3VyY2UtPmdldEluZm8oKTsKCiAgICAgICAgICAgICRpbm5lckRlc3RpbmF0aW9uID0gJGRlc3RpbmF0aW9uWyRrZXldID8/IG51bGw7CgogICAgICAgICAgICBpZiAoJGlubmVyRGVzdGluYXRpb24gIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRpbm5lckRlc3RpbmF0aW9uLT5hZGRBbGwoJGlubmVyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRkZXN0aW5hdGlvblska2V5XSA9ICRpbm5lcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/ArrayUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBBcnJheVV0aWwKewogICAgLyoqCiAgICAgKiBSZWR1Y2VzIGEgY29sbGVjdGlvbiB0byBhIHNpbmdsZSB2YWx1ZSBieSBpdGVyYXRpdmVseSBjb21iaW5pbmcgZWxlbWVudHMKICAgICAqIG9mIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBUaGUgYXJyYXkgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50LgogICAgICogSWYgaXQgaGFzIG9ubHkgb25lIGVsZW1lbnQsIHRoYXQgZWxlbWVudCBpcyByZXR1cm5lZC4KICAgICAqCiAgICAgKiBPdGhlcndpc2UgdGhpcyBtZXRob2Qgc3RhcnRzIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSB0aGUgYXJyYXksCiAgICAgKiBhbmQgdGhlbiBjb21iaW5lcyBpdCB3aXRoIHRoZSByZW1haW5pbmcgZWxlbWVudHMgaW4gaXRlcmF0aW9uIG9yZGVyLgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKgogICAgICogQHBhcmFtIG5vbi1lbXB0eS1hcnJheTxUPiAkaXRlbXMKICAgICAqIEBwYXJhbSBjYWxsYWJsZShULCBUKTogVCAkY29tYmluZQogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNvbWJpbmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWR1Y2UoYXJyYXkgJGl0ZW1zLCBjYWxsYWJsZSAkY29tYmluZSkKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRpdGVtcykgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHJlZHVjZSBhbiBlbXB0eSBhcnJheScpOwogICAgICAgIH0KCiAgICAgICAgJGZpcnN0ID0gYXJyYXlfc2hpZnQoJGl0ZW1zKTsKCiAgICAgICAgcmV0dXJuIGFycmF5X3JlZHVjZSgkaXRlbXMsICRjb21iaW5lLCAkZmlyc3QpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/AstUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEFyZ3VtZW50SW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cRnVuY3Rpb25FeHByZXNzaW9uOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQXN0VXRpbAp7CiAgICAvKioKICAgICAqIENvbnZlcnRzICRleHByZXNzaW9uIHRvIGFuIGVxdWl2YWxlbnQgYGNhbGMoKWAuCiAgICAgKgogICAgICogVGhpcyBhc3N1bWVzIHRoYXQgJGV4cHJlc3Npb24gYWxyZWFkeSByZXR1cm5zIGEgbnVtYmVyLiBJdCdzIGludGVuZGVkIGZvcgogICAgICogdXNlIGluIGVuZC11c2VyIG1lc3NhZ2luZywgYW5kIG1heSBub3QgcHJvZHVjZSBkaXJlY3RseSBldmFsdWFibGUKICAgICAqIGV4cHJlc3Npb25zLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV4cHJlc3Npb25Ub0NhbGMoRXhwcmVzc2lvbiAkZXhwcmVzc2lvbik6IEZ1bmN0aW9uRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb25FeHByZXNzaW9uKAogICAgICAgICAgICAnY2FsYycsCiAgICAgICAgICAgIG5ldyBBcmd1bWVudEludm9jYXRpb24oWyRleHByZXNzaW9uLT5hY2NlcHQobmV3IE1ha2VFeHByZXNzaW9uQ2FsY3VsYXRpb25TYWZlKCkpXSwgW10sICRleHByZXNzaW9uLT5nZXRTcGFuKCkpLAogICAgICAgICAgICAkZXhwcmVzc2lvbi0+Z2V0U3BhbigpCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/Box.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CgovKioKICogQW4gdW5tb2RpZmlhYmxlIHJlZmVyZW5jZSB0byBhIHZhbHVlIHRoYXQgbWF5IGJlIG11dGF0ZWQgZWxzZXdoZXJlLgogKgogKiBUaGlzIHVzZXMgcmVmZXJlbmNlIGVxdWFsaXR5IGJhc2VkIG9uIHRoZSB1bmRlcmx5aW5nIHtAc2VlIE1vZGlmaWFibGVCb3h9LCBldmVuCiAqIHdoZW4gdGhlIHVuZGVybHlpbmcgdHlwZSB1c2VzIHZhbHVlIGVxdWFsaXR5LgogKgogKiBAdGVtcGxhdGUgVAogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEJveCBpbXBsZW1lbnRzIEVxdWF0YWJsZQp7CiAgICAvKioKICAgICAqIEB2YXIgTW9kaWZpYWJsZUJveDxUPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IE1vZGlmaWFibGVCb3ggJGlubmVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIE1vZGlmaWFibGVCb3g8VD4gJGlubmVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChNb2RpZmlhYmxlQm94ICRpbm5lcikKICAgIHsKICAgICAgICAkdGhpcy0+aW5uZXIgPSAkaW5uZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlubmVyLT5nZXRWYWx1ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgQm94ICYmICR0aGlzLT5pbm5lciA9PT0gJG90aGVyLT5pbm5lcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/Character.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBDaGFyYWN0ZXIKewogICAgLyoqCiAgICAgKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHVwcGVyLSBhbmQgbG93ZXJjYXNlIEFTQ0lJIGxldHRlcnMuCiAgICAgKgogICAgICogYDBiMTAwMDAwYCBjYW4gYmUgYml0d2lzZS1PUmVkIHdpdGggdXBwZXJjYXNlIEFTQ0lJIGxldHRlcnMgdG8gZ2V0IHRoZWlyCiAgICAgKiBsb3dlcmNhc2UgZXF1aXZhbGVudHMuCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgQVNDSUlfQ0FTRV9CSVQgPSAweDIwOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRjaGFyYWN0ZXIgaXMgYW4gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKD9zdHJpbmcgJGNoYXJhY3Rlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJGNoYXJhY3RlciA9PT0gJyAnIHx8ICRjaGFyYWN0ZXIgPT09ICJcdCIgfHwgJGNoYXJhY3RlciA9PT0gIlxuIiB8fCAkY2hhcmFjdGVyID09PSAiXHIiIHx8ICRjaGFyYWN0ZXIgPT09ICJcZiI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJGNoYXJhY3RlciBpcyBhIHNwYWNlIG9yIGEgdGFiIGNoYXJhY3Rlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1NwYWNlT3JUYWIoP3N0cmluZyAkY2hhcmFjdGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkY2hhcmFjdGVyID09PSAnICcgfHwgJGNoYXJhY3RlciA9PT0gIlx0IjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkY2hhcmFjdGVyIGlzIGFuIEFTQ0lJIG5ld2xpbmUgY2hhcmFjdGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzTmV3bGluZSg/c3RyaW5nICRjaGFyYWN0ZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRjaGFyYWN0ZXIgPT09ICJcbiIgfHwgJGNoYXJhY3RlciA9PT0gIlxyIiB8fCAkY2hhcmFjdGVyID09PSAiXGYiOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRjaGFyYWN0ZXIgaXMgYSBsZXR0ZXIgb3IgYSBudW1iZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBbHBoYW51bWVyaWMoc3RyaW5nICRjaGFyYWN0ZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmlzQWxwaGFiZXRpYygkY2hhcmFjdGVyKSB8fCBzZWxmOjppc0RpZ2l0KCRjaGFyYWN0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRjaGFyYWN0ZXIgaXMgYSBsZXR0ZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBbHBoYWJldGljKHN0cmluZyAkY2hhcmFjdGVyKTogYm9vbAogICAgewogICAgICAgICRjaGFyQ29kZSA9IFxvcmQoJGNoYXJhY3RlclswXSk7CgogICAgICAgIHJldHVybiAoJGNoYXJDb2RlID49IFxvcmQoJ2EnKSAmJiAkY2hhckNvZGUgPD0gXG9yZCgneicpKSB8fCAoJGNoYXJDb2RlID49IFxvcmQoJ0EnKSAmJiAkY2hhckNvZGUgPD0gXG9yZCgnWicpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkY2hhcmFjdGVyIGlzIGEgZGlnaXQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNEaWdpdCg/c3RyaW5nICRjaGFyYWN0ZXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRjaGFyYWN0ZXIgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJGNoYXJDb2RlID0gXG9yZCgkY2hhcmFjdGVyWzBdKTsKCiAgICAgICAgcmV0dXJuICRjaGFyQ29kZSA+PSBcb3JkKCcwJykgJiYgJGNoYXJDb2RlIDw9IFxvcmQoJzknKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkY2hhcmFjdGVyIGlzIGxlZ2FsIGFzIHRoZSBzdGFydCBvZiBhIFNhc3MgaWRlbnRpZmllci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc05hbWVTdGFydChzdHJpbmcgJGNoYXJhY3Rlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJGNoYXJhY3RlciA9PT0gJ18nIHx8IHNlbGY6OmlzQWxwaGFiZXRpYygkY2hhcmFjdGVyKSB8fCBcb3JkKCRjaGFyYWN0ZXJbMF0pID49IDB4ODA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJGNoYXJhY3RlciBpcyBsZWdhbCBpbiB0aGUgYm9keSBvZiBhIFNhc3MgaWRlbnRpZmllci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc05hbWUoc3RyaW5nICRjaGFyYWN0ZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmlzTmFtZVN0YXJ0KCRjaGFyYWN0ZXIpIHx8IHNlbGY6OmlzRGlnaXQoJGNoYXJhY3RlcikgfHwgJGNoYXJhY3RlciA9PT0gJy0nOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRjaGFyYWN0ZXIgaXMgYSBoZXhhZGVjaW1hbCBkaWdpdC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0hleCg/c3RyaW5nICRjaGFyYWN0ZXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRjaGFyYWN0ZXIgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNlbGY6OmlzRGlnaXQoJGNoYXJhY3RlcikpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkY2hhckNvZGUgPSBcb3JkKCRjaGFyYWN0ZXJbMF0pOwoKICAgICAgICBpZiAoJGNoYXJDb2RlID49IFxvcmQoJ2EnKSAmJiAkY2hhckNvZGUgPD0gXG9yZCgnZicpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjaGFyQ29kZSA+PSBcb3JkKCdBJykgJiYgJGNoYXJDb2RlIDw9IFxvcmQoJ0YnKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkaWRlbnRpZmllciBpcyBtb2R1bGUtcHJpdmF0ZS4KICAgICAqCiAgICAgKiBBc3N1bWVzICRpZGVudGlmaWVyIGlzIGEgdmFsaWQgU2FzcyBpZGVudGlmaWVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUHJpdmF0ZShzdHJpbmcgJGlkZW50aWZpZXIpOiBib29sCiAgICB7CiAgICAgICAgJGZpcnN0ID0gJGlkZW50aWZpZXJbMF07CgogICAgICAgIHJldHVybiAkZmlyc3QgPT09ICctJyB8fCAkZmlyc3QgPT09ICdfJzsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc3VtZXMgdGhhdCAkY2hhcmFjdGVyIGlzIGEgbGVmdC1oYW5kIGJyYWNlLWxpa2UgY2hhcmFjdGVyLCBhbmQgcmV0dXJucwogICAgICogdGhlIHJpZ2h0LWhhbmQgdmVyc2lvbi4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvcHBvc2l0ZShzdHJpbmcgJGNoYXJhY3Rlcik6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBtYXRjaCAoJGNoYXJhY3RlcikgewogICAgICAgICAgICAnKCcgPT4gJyknLAogICAgICAgICAgICAneycgPT4gJ30nLAogICAgICAgICAgICAnWycgPT4gJ10nLAogICAgICAgICAgICBkZWZhdWx0ID0+IHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ0V4cGVjdGVkIGEgYnJhY2UgY2hhcmFjdGVyLiBHb3QgIiVzIicsICRjaGFyYWN0ZXIpKSwKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXF1YWxzSWdub3JlQ2FzZShzdHJpbmcgJGNoYXJhY3RlcjEsIHN0cmluZyAkY2hhcmFjdGVyMik6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJGNoYXJhY3RlcjEgPT09ICRjaGFyYWN0ZXIyKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhpcyBjaGVjayBmYWlscywgdGhlIGNoYXJhY3RlcnMgYXJlIGRlZmluaXRlbHkgZGlmZmVyZW50LiBJZiBpdAogICAgICAgIC8vIHN1Y2NlZWRzICphbmQqIGVpdGhlciBjaGFyYWN0ZXIgaXMgYW4gQVNDSUkgbGV0dGVyLCB0aGV5J3JlIGVxdWl2YWxlbnQuCiAgICAgICAgaWYgKChcb3JkKCRjaGFyYWN0ZXIxWzBdKSBeIFxvcmQoJGNoYXJhY3RlcjJbMF0pKSAhPT0gc2VsZjo6QVNDSUlfQ0FTRV9CSVQpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gTm93IHdlIGp1c3QgbmVlZCB0byB2ZXJpZnkgdGhhdCBvbmUgb2YgdGhlIGNoYXJhY3RlcnMgaXMgYW4gQVNDSUkgbGV0dGVyLgogICAgICAgICR1cHBlckNhc2UxID0gXG9yZCgkY2hhcmFjdGVyMVswXSkgJiB+c2VsZjo6QVNDSUlfQ0FTRV9CSVQ7CgogICAgICAgIHJldHVybiAkdXBwZXJDYXNlMSA+PSBcb3JkKCdBJykgJiYgJHVwcGVyQ2FzZTEgPD0gXG9yZCgnWicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/Equatable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CgovKioKICogQGludGVybmFsCiAqLwppbnRlcmZhY2UgRXF1YXRhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2w7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/EquatableUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBFcXVhdGFibGVVdGlsCnsKICAgIC8qKgogICAgICogQHBhcmFtIGl0ZXJhYmxlPG1peGVkPiAkbGlzdAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGl0ZXJhYmxlQ29udGFpbnMoaXRlcmFibGUgJGxpc3QsIEVxdWF0YWJsZSAkaXRlbSk6IGJvb2wKICAgIHsKICAgICAgICBmb3JlYWNoICgkbGlzdCBhcyAkbGlzdEl0ZW0pIHsKICAgICAgICAgICAgaWYgKCFcaXNfb2JqZWN0KCRsaXN0SXRlbSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGl0ZW0gPT09ICRsaXN0SXRlbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkaXRlbS0+ZXF1YWxzKCRsaXN0SXRlbSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3Mgd2hldGhlciAyIHZhbHVlcyBhcmUgZXF1YWxzLCB1c2luZyB0aGUgRXF1YXRhYmxlIHNlbWFudGljIHRvIGNvbXBhcmUgb2JqZWN0cyBpZiBwb3NzaWJsZS4KICAgICAqCiAgICAgKiBXaGVuIGNvbXBhcmVkIHZhbHVlcyBkb24ndCBpbXBsZW1lbnQge0BzZWUgRXF1YXRhYmxlfSwgdGhleSBhcmUgY29tcGFyZWQKICAgICAqIHVzaW5nIGA9PT1gLgogICAgICogVmFsdWVzIGltcGxlbWVudGluZyB7QHNlZSBFcXVhdGFibGV9IGFyZSBzdGlsbCBjb21wYXJlZCB3aXRoIGA9PT1gIGZpcnN0IHRvCiAgICAgKiBvcHRpbWl6ZSBjb21wYXJpc29ucyB0byB0aGUgc2FtZSBvYmplY3QsIGFzIGFuIG9iamVjdCBpcyBhbHdheXMgZXhwZWN0ZWQgdG8KICAgICAqIGJlIGVxdWFsIHRvIGl0c2VsZi4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlcXVhbHMobWl4ZWQgJGl0ZW0xLCBtaXhlZCAkaXRlbTIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRpdGVtMSA9PT0gJGl0ZW0yKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpdGVtMSBpbnN0YW5jZW9mIEVxdWF0YWJsZSAmJiAkaXRlbTIgaW5zdGFuY2VvZiBFcXVhdGFibGUpIHsKICAgICAgICAgICAgcmV0dXJuICRpdGVtMS0+ZXF1YWxzKCRpdGVtMik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3Mgd2hldGhlciAyIGxpc3RzIGFyZSBlcXVhbHMsIHVzaW5nIHRoZSBFcXVhdGFibGUgc2VtYW50aWMgdG8gY29tcGFyZSBvYmplY3RzIGlmIHBvc3NpYmxlLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PG1peGVkPiAkbGlzdDEKICAgICAqIEBwYXJhbSBsaXN0PG1peGVkPiAkbGlzdDIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsaXN0RXF1YWxzKGFycmF5ICRsaXN0MSwgYXJyYXkgJGxpc3QyKTogYm9vbAogICAgewogICAgICAgIGlmIChcY291bnQoJGxpc3QxKSAhPT0gXGNvdW50KCRsaXN0MikpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGxpc3QxIGFzICRpID0+ICRpdGVtMSkgewogICAgICAgICAgICAkaXRlbTIgPSAkbGlzdDJbJGldOwoKICAgICAgICAgICAgaWYgKHNlbGY6OmVxdWFscygkaXRlbTEsICRpdGVtMikpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/ErrorUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxTdGFja1RyYWNlXFRyYWNlOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEVycm9yVXRpbAp7CiAgICAvKioKICAgICAqIEB0aHJvd3MgXE91dE9mUmFuZ2VFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja0ludEluSW50ZXJ2YWwoaW50ICR2YWx1ZSwgaW50ICRtaW5WYWx1ZSwgaW50ICRtYXhWYWx1ZSwgP3N0cmluZyAkbmFtZSA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA8ICRtaW5WYWx1ZSB8fCAkdmFsdWUgPiAkbWF4VmFsdWUpIHsKICAgICAgICAgICAgJG5hbWVEaXNwbGF5ID0gJG5hbWUgPyAiICRuYW1lIiA6ICcnOwoKICAgICAgICAgICAgdGhyb3cgbmV3IFxPdXRPZlJhbmdlRXhjZXB0aW9uKCJJbnZhbGlkIHZhbHVlOiRuYW1lRGlzcGxheSBtdXN0IGJlIGJldHdlZW4gJG1pblZhbHVlIGFuZCAkbWF4VmFsdWU6ICR2YWx1ZS4iKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmb3JtYXRFcnJvck1lc3NhZ2Uoc3RyaW5nICRtZXNzYWdlLCBGaWxlU3BhbiAkc3BhbiwgVHJhY2UgJHNhc3NUcmFjZSk6IHN0cmluZwogICAgewogICAgICAgICRmb3JtYXR0ZWRNZXNzYWdlID0gJG1lc3NhZ2UgLiAiXG4iIC4gJHNwYW4tPmhpZ2hsaWdodCgpOwoKICAgICAgICBmb3JlYWNoIChleHBsb2RlKCJcbiIsICRzYXNzVHJhY2UtPmdldEZvcm1hdHRlZFRyYWNlKCkpIGFzICRmcmFtZSkgewogICAgICAgICAgICBpZiAoJGZyYW1lID09PSAnJykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZvcm1hdHRlZE1lc3NhZ2UgLj0gIlxuIjsKICAgICAgICAgICAgJGZvcm1hdHRlZE1lc3NhZ2UgLj0gJyAgJyAuICRmcmFtZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZm9ybWF0dGVkTWVzc2FnZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIEZpbGVTcGFuPiAkc2Vjb25kYXJ5U3BhbnMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmb3JtYXRFcnJvck1lc3NhZ2VNdWx0aXBsZShzdHJpbmcgJG1lc3NhZ2UsIEZpbGVTcGFuICRzcGFuLCBzdHJpbmcgJHByaW1hcnlMYWJlbCwgYXJyYXkgJHNlY29uZGFyeVNwYW5zLCBUcmFjZSAkc2Fzc1RyYWNlKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGZvcm1hdHRlZE1lc3NhZ2UgPSAkbWVzc2FnZSAuICJcbiIgLiAkc3Bhbi0+aGlnaGxpZ2h0TXVsdGlwbGUoJHByaW1hcnlMYWJlbCwgJHNlY29uZGFyeVNwYW5zKTsKCiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgiXG4iLCAkc2Fzc1RyYWNlLT5nZXRGb3JtYXR0ZWRUcmFjZSgpKSBhcyAkZnJhbWUpIHsKICAgICAgICAgICAgaWYgKCRmcmFtZSA9PT0gJycpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRmb3JtYXR0ZWRNZXNzYWdlIC49ICJcbiI7CiAgICAgICAgICAgICRmb3JtYXR0ZWRNZXNzYWdlIC49ICcgICcgLiAkZnJhbWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGZvcm1hdHRlZE1lc3NhZ2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/IterableUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgSXRlcmFibGVVdGlsCnsKICAgIC8qKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gaXRlcmFibGU8VD4gICAgICAgJGxpc3QKICAgICAqIEBwYXJhbSBjYWxsYWJsZShUKTogYm9vbCAkY2FsbGJhY2sKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhbnkoaXRlcmFibGUgJGxpc3QsIGNhbGxhYmxlICRjYWxsYmFjayk6IGJvb2wKICAgIHsKICAgICAgICBmb3JlYWNoICgkbGlzdCBhcyAkaXRlbSkgewogICAgICAgICAgICBpZiAoJGNhbGxiYWNrKCRpdGVtKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKgogICAgICogQHBhcmFtIGl0ZXJhYmxlPFQ+ICAgICAgICRsaXN0CiAgICAgKiBAcGFyYW0gY2FsbGFibGUoVCk6IGJvb2wgJGNhbGxiYWNrCiAgICAgKgogICAgICogQHBhcmFtLWltbWVkaWF0ZWx5LWludm9rZWQtY2FsbGFibGUgJGNhbGxiYWNrCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXZlcnkoaXRlcmFibGUgJGxpc3QsIGNhbGxhYmxlICRjYWxsYmFjayk6IGJvb2wKICAgIHsKICAgICAgICBmb3JlYWNoICgkbGlzdCBhcyAkaXRlbSkgewogICAgICAgICAgICBpZiAoISRjYWxsYmFjaygkaXRlbSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBpdGVyYWJsZTxUPiAkaXRlcmFibGUKICAgICAqIEByZXR1cm4gVHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmlyc3RPck51bGwoaXRlcmFibGUgJGl0ZXJhYmxlKTogbWl4ZWQKICAgIHsKICAgICAgICBmb3JlYWNoICgkaXRlcmFibGUgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgcmV0dXJuICRpdGVtOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBgVGAgcmV0dXJuZWQgYnkgJGNhbGxiYWNrIGZvciBhbiBlbGVtZW50IG9mICRpdGVyYWJsZSwKICAgICAqIG9yIGBudWxsYCBpZiBpdCByZXR1cm5zIGBudWxsYCBmb3IgZXZlcnkgZWxlbWVudC4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICogQHRlbXBsYXRlIEUKICAgICAqIEBwYXJhbSBpdGVyYWJsZTxFPiAkaXRlcmFibGUKICAgICAqIEBwYXJhbSBjYWxsYWJsZShFKTogKFR8bnVsbCkgJGNhbGxiYWNrCiAgICAgKgogICAgICogQHJldHVybiBUfG51bGwKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZWFyY2goaXRlcmFibGUgJGl0ZXJhYmxlLCBjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGl0ZXJhYmxlIGFzICRlbGVtZW50KSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICRjYWxsYmFjaygkZWxlbWVudCk7CgogICAgICAgICAgICBpZiAoJHZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/ListUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTGlzdFV0aWwKewogICAgLyoqCiAgICAgKiBGbGF0dGVucyB0aGUgZmlyc3QgbGV2ZWwgb2YgbmVzdGVkIGFycmF5cyBpbiAkcXVldWVzLgogICAgICoKICAgICAqIFRoZSByZXR1cm4gdmFsdWUgaXMgb3JkZXJlZCBmaXJzdCBieSBpbmRleCBpbiB0aGUgbmVzdGVkIGl0ZXJhYmxlLCB0aGVuIGJ5CiAgICAgKiB0aGUgaW5kZXggKm9mKiB0aGF0IGl0ZXJhYmxlIGluICRxdWV1ZXMuIEZvciBleGFtcGxlLAogICAgICogYGZsYXR0ZW5WZXJ0aWNhbGx5KFtbIjFhIiwgIjFiIl0sIFsiMmEiLCAiMmIiXV0pYCByZXR1cm5zIGBbIjFhIiwgIjJhIiwKICAgICAqICIxYiIsICIyYiJdYC4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PGxpc3Q8VD4+ICRxdWV1ZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8VD4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmbGF0dGVuVmVydGljYWxseShhcnJheSAkcXVldWVzKTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRxdWV1ZXMpID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkcXVldWVzWzBdOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IFtdOwoKICAgICAgICB3aGlsZSAoIWVtcHR5KCRxdWV1ZXMpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRxdWV1ZXMgYXMgJGkgPT4gJiRxdWV1ZSkgewogICAgICAgICAgICAgICAgJGl0ZW0gPSBhcnJheV9zaGlmdCgkcXVldWUpOwoKICAgICAgICAgICAgICAgIGlmICgkaXRlbSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRxdWV1ZXNbJGldKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJGl0ZW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5zZXQoJHF1ZXVlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gc3Vic2VxdWVuY2UgYmV0d2VlbiAkbGlzdDEgYW5kICRsaXN0Mi4KICAgICAqCiAgICAgKiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBlcXVhbGx5IGxvbmcgY29tbW9uIHN1YnNlcXVlbmNlLCByZXR1cm5zIHRoZSBvbmUKICAgICAqIHdoaWNoIHN0YXJ0cyBmaXJzdCBpbiAkbGlzdDEuCiAgICAgKgogICAgICogSWYgJHNlbGVjdCBpcyBwYXNzZWQsIGl0J3MgdXNlZCB0byBjaGVjayBlcXVhbGl0eSBiZXR3ZWVuIGVsZW1lbnRzIGluIGVhY2gKICAgICAqIGxpc3QuIElmIGl0IHJldHVybnMgYG51bGxgLCB0aGUgZWxlbWVudHMgYXJlIGNvbnNpZGVyZWQgdW5lcXVhbDsgb3RoZXJ3aXNlLAogICAgICogaXQgc2hvdWxkIHJldHVybiB0aGUgZWxlbWVudCB0byBpbmNsdWRlIGluIHRoZSByZXR1cm4gdmFsdWUuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxUPiAgICAgICAgICAgICAgICAgICAgICAgICAkbGlzdDEKICAgICAqIEBwYXJhbSBsaXN0PFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICRsaXN0MgogICAgICogQHBhcmFtIChjYWxsYWJsZShULCBUKTogKFR8bnVsbCkpfG51bGwgJHNlbGVjdAogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxUPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvbmdlc3RDb21tb25TdWJzZXF1ZW5jZShhcnJheSAkbGlzdDEsIGFycmF5ICRsaXN0MiwgP2NhbGxhYmxlICRzZWxlY3QgPSBudWxsKTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoJHNlbGVjdCA9PT0gbnVsbCkgewogICAgICAgICAgICAkc2VsZWN0ID0gZm4oJGVsZW1lbnQxLCAkZWxlbWVudDIpID0+IEVxdWF0YWJsZVV0aWw6OmVxdWFscygkZWxlbWVudDEsICRlbGVtZW50MikgPyAkZWxlbWVudDEgOiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGxlbmd0aHMgPSBhcnJheV9maWxsKDAsIFxjb3VudCgkbGlzdDEpICsgMSwgYXJyYXlfZmlsbCgwLCBcY291bnQoJGxpc3QyKSArIDEsIDApKTsKICAgICAgICAkc2VsZWN0aW9ucyA9IGFycmF5X2ZpbGwoMCwgXGNvdW50KCRsaXN0MSkgKyAxLCBhcnJheV9maWxsKDAsIFxjb3VudCgkbGlzdDIpICsgMSwgbnVsbCkpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBcY291bnQoJGxpc3QxKTsgJGkrKykgewogICAgICAgICAgICBmb3IgKCRqID0gMDsgJGogPCBcY291bnQoJGxpc3QyKTsgJGorKykgewogICAgICAgICAgICAgICAgJHNlbGVjdGlvbiA9ICRzZWxlY3QoJGxpc3QxWyRpXSwgJGxpc3QyWyRqXSk7CiAgICAgICAgICAgICAgICAkc2VsZWN0aW9uc1skaV1bJGpdID0gJHNlbGVjdGlvbjsKICAgICAgICAgICAgICAgICRsZW5ndGhzWyRpICsgMV1bJGogKyAxXSA9ICRzZWxlY3Rpb24gPT09IG51bGwKICAgICAgICAgICAgICAgICAgICA/IG1heCgkbGVuZ3Roc1skaSArIDFdWyRqXSwgJGxlbmd0aHNbJGldWyRqICsgMV0pCiAgICAgICAgICAgICAgICAgICAgOiAkbGVuZ3Roc1skaV1bJGpdICsgMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQHBhcmFtIGludDwtMSwgbWF4PiAkaQogICAgICAgICAqIEBwYXJhbSBpbnQ8LTEsIG1heD4gJGoKICAgICAgICAgKiBAcmV0dXJuIGxpc3Q8VD4KICAgICAgICAgKi8KICAgICAgICAkYmFja3RyYWNrID0gZnVuY3Rpb24gKGludCAkaSwgaW50ICRqKSB1c2UgKCRzZWxlY3Rpb25zLCAkbGVuZ3RocywgJiRiYWNrdHJhY2spIHsKICAgICAgICAgICAgaWYgKCRpID09PSAtMSB8fCAkaiA9PT0gLTEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgXGFzc2VydCgkaSA+PSAwKTsKICAgICAgICAgICAgXGFzc2VydCgkaiA+PSAwKTsKCiAgICAgICAgICAgICRzZWxlY3Rpb24gPSAkc2VsZWN0aW9uc1skaV1bJGpdOwoKICAgICAgICAgICAgaWYgKCRzZWxlY3Rpb24gIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRzZWxlY3RlZCA9ICRiYWNrdHJhY2soJGkgLSAxLCAkaiAtIDEpOwogICAgICAgICAgICAgICAgJHNlbGVjdGVkW10gPSAkc2VsZWN0aW9uOwoKICAgICAgICAgICAgICAgIHJldHVybiAkc2VsZWN0ZWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkbGVuZ3Roc1skaSArIDFdWyRqXSA+ICRsZW5ndGhzWyRpXVskaiArIDFdCiAgICAgICAgICAgICAgICA/ICRiYWNrdHJhY2soJGksICRqIC0gMSkKICAgICAgICAgICAgICAgIDogJGJhY2t0cmFjaygkaSAtIDEsICRqKTsKICAgICAgICB9OwoKICAgICAgICByZXR1cm4gJGJhY2t0cmFjayhcY291bnQoJGxpc3QxKSAtIDEsIFxjb3VudCgkbGlzdDIpIC0gMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PFQ+ICRsaXN0CiAgICAgKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGFzdChhcnJheSAkbGlzdCkKICAgIHsKICAgICAgICAkY291bnQgPSBjb3VudCgkbGlzdCk7CgogICAgICAgIGlmICgkY291bnQgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignVGhlIGxpc3QgbWF5IG5vdCBiZSBlbXB0eS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGlzdFskY291bnQgLSAxXTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8VD4gJGxpc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8VD4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleGNlcHRMYXN0KGFycmF5ICRsaXN0KTogYXJyYXkKICAgIHsKICAgICAgICAkY291bnQgPSBjb3VudCgkbGlzdCk7CgogICAgICAgIGlmICgkY291bnQgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignVGhlIGxpc3QgbWF5IG5vdCBiZSBlbXB0eS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBhcnJheV9zbGljZSgkbGlzdCwgMCwgJGNvdW50IC0gMSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/LoggerUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXERlcHJlY2F0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxEZXByZWNhdGlvblByb2Nlc3NpbmdMb2dnZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcTG9nZ2VyXExvZ2dlckludGVyZmFjZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTdGFja1RyYWNlXFRyYWNlOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIExvZ2dlclV0aWwKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3YXJuRm9yRGVwcmVjYXRpb24oTG9nZ2VySW50ZXJmYWNlICRsb2dnZXIsIERlcHJlY2F0aW9uICRkZXByZWNhdGlvbiwgc3RyaW5nICRtZXNzYWdlLCA/RmlsZVNwYW4gJHNwYW4gPSBudWxsLCA/VHJhY2UgJHRyYWNlID0gbnVsbCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJGRlcHJlY2F0aW9uLT5pc0Z1dHVyZSgpICYmICEkbG9nZ2VyIGluc3RhbmNlb2YgRGVwcmVjYXRpb25Qcm9jZXNzaW5nTG9nZ2VyKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRsb2dnZXItPndhcm4oJG1lc3NhZ2UsICRkZXByZWNhdGlvbiwgJHNwYW4sICR0cmFjZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/MakeExpressionCalculationSafe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEFyZ3VtZW50SW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXEJpbmFyeU9wZXJhdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cRnVuY3Rpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cSW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cTnVtYmVyRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFVuYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXFVuYXJ5T3BlcmF0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxSZXBsYWNlRXhwcmVzc2lvblZpc2l0b3I7CgovKioKICogQSB2aXNpdG9yIHRoYXQgcmVwbGFjZXMgY29uc3RydWN0cyB0aGF0IGNhbid0IGJlIHVzZWQgaW4gYSBjYWxjdWxhdGlvbiB3aXRoCiAqIHRob3NlIHRoYXQgY2FuLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE1ha2VFeHByZXNzaW9uQ2FsY3VsYXRpb25TYWZlIGV4dGVuZHMgUmVwbGFjZUV4cHJlc3Npb25WaXNpdG9yCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICAvLyBgY2FsYygpYCBkb2Vzbid0IHN1cHBvcnQgYCVgIGZvciBtb2R1bG8gYnV0IFNhc3MgZG9lc24ndCB5ZXQgc3VwcG9ydCB0aGUKICAgICAgICAvLyBgbW9kKClgIGNhbGN1bGF0aW9uIGZ1bmN0aW9uIGJlY2F1c2UgdGhlcmUncyBubyBicm93c2VyIHN1cHBvcnQsIHNvIHdlIGhhdmUKICAgICAgICAvLyB0byB3b3JrIGFyb3VuZCBpdCBieSB3cmFwcGluZyB0aGUgY2FsbCBpbiBhIFNhc3MgZnVuY3Rpb24uCiAgICAgICAgaWYgKCRub2RlLT5nZXRPcGVyYXRvcigpID09PSBCaW5hcnlPcGVyYXRvcjo6TU9EVUxPKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb25FeHByZXNzaW9uKCdtYXgnLCBuZXcgQXJndW1lbnRJbnZvY2F0aW9uKFskbm9kZV0sIFtdLCAkbm9kZS0+Z2V0U3BhbigpKSwgJG5vZGUtPmdldFNwYW4oKSwgJ21hdGgnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6OnZpc2l0QmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbigkbm9kZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uKEludGVycG9sYXRlZEZ1bmN0aW9uRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJG5vZGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VW5hcnlPcGVyYXRpb25FeHByZXNzaW9uKFVuYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICBzd2l0Y2ggKCRub2RlLT5nZXRPcGVyYXRvcigpKSB7CiAgICAgICAgICAgIC8vIGBjYWxjKClgIGRvZXNuJ3Qgc3VwcG9ydCB1bmFyeSBvcGVyYXRpb25zLgogICAgICAgICAgICBjYXNlIFVuYXJ5T3BlcmF0b3I6OlBMVVM6CiAgICAgICAgICAgICAgICByZXR1cm4gJG5vZGUtPmdldE9wZXJhbmQoKTsKCiAgICAgICAgICAgIGNhc2UgVW5hcnlPcGVyYXRvcjo6TUlOVVM6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oCiAgICAgICAgICAgICAgICAgICAgQmluYXJ5T3BlcmF0b3I6OlRJTUVTLAogICAgICAgICAgICAgICAgICAgIG5ldyBOdW1iZXJFeHByZXNzaW9uKC0xLCAkbm9kZS0+Z2V0U3BhbigpKSwKICAgICAgICAgICAgICAgICAgICAkbm9kZS0+Z2V0T3BlcmFuZCgpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgLy8gT3RoZXIgdW5hcnkgb3BlcmF0aW9ucyBkb24ndCBwcm9kdWNlIG51bWJlcnMsIHNvIGtlZXAgdGhlbSBhcy1pcyB0bwogICAgICAgICAgICAvLyBnaXZlIHRoZSB1c2VyIGEgbW9yZSB1c2VmdWwgc3ludGF4IGVycm9yIGFmdGVyIHNlcmlhbGl6YXRpb24uCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50Ojp2aXNpdFVuYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbigkbm9kZSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/ModifiableBox.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CgovKioKICogQSBtdXRhYmxlIHJlZmVyZW5jZSB0byBhIChwcmVzdW1hYmx5IGltbXV0YWJsZSkgdmFsdWUuCiAqCiAqIFRoaXMgYWx3YXlzIHVzZXMgcmVmZXJlbmNlIGVxdWFsaXR5LCBldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgdHlwZSB1c2VzCiAqIHZhbHVlIGVxdWFsaXR5LgogKgogKiBAdGVtcGxhdGUgVAogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIE1vZGlmaWFibGVCb3gKewogICAgLyoqCiAgICAgKiBAdmFyIFQKICAgICAqLwogICAgcHJpdmF0ZSBtaXhlZCAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gVCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KG1peGVkICR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFQgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWx1ZShtaXhlZCAkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiB1bm1vZGlmaWFibGUgcmVmZXJlbmNlIHRvIHRoaXMgYm94LgogICAgICoKICAgICAqIFRoZSB1bmRlcmx5aW5nIG1vZGlmaWFibGUgYm94IG1heSBzdGlsbCBiZSBtb2RpZmllZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJveDxUPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VhbCgpOiBCb3gKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEJveCgkdGhpcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/NumberUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxOC0yMDIwIEFudGhvbiBQYW5nCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKbmFtZXNwYWNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTnVtYmVyOwoKLyoqCiAqIFV0aWxpdGllcyB0byBkZWFsIHdpdGggbnVtYmVycyB3aXRoIGZ1enppbmVzcyBmb3IgdGhlIFNhc3MgcHJlY2lzaW9uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTnVtYmVyVXRpbAp7CiAgICAvKioKICAgICAqIFRoZSBwb3dlciBvZiB0ZW4gdG8gd2hpY2ggdG8gcm91bmQgU2FzcyBudW1iZXJzIHRvIGRldGVybWluZSBpZiB0aGV5J3JlCiAgICAgKiBmdXp6eSBlcXVhbCB0byBvbmUgYW5vdGhlcgogICAgICoKICAgICAqIFRoaXMgaXMgYWxzbyB0aGUgbWluaW11bSBkaXN0YW5jZSBzdWNoIHRoYXQgYGEgLSBiID4gRVBTSUxPTmAgaW1wbGllcyB0aGF0CiAgICAgKiBgYWAgaXNuJ3QgZnV6enktZXF1YWwgdG8gYGJgLiBOb3RlIHRoYXQgdGhlIGludmVyc2UgaW1wbGljYXRpb24gaXMgbm90CiAgICAgKiBuZWNlc3NhcmlseSB0cnVlISBGb3IgZXhhbXBsZSwgaWYgYGEgPSA1LjFlLTExYCBhbmQgYGIgPSA0LjRlLTExYCwgdGhlbgogICAgICogYGEgLSBiIDwgMWUtMTFgIGJ1dCBgYWAgZnV6enktZXF1YWxzIDVlLTExIGFuZCBiIGZ1enp5LWVxdWFscyA0ZS0xMS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvYmxvYi9tYWluL3NwZWMvdHlwZXMvbnVtYmVyLm1kI2Z1enp5LWVxdWFsaXR5CiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgRVBTSUxPTiA9IDEwICoqICgtU2Fzc051bWJlcjo6UFJFQ0lTSU9OIC0gMSk7CiAgICBwcml2YXRlIGNvbnN0IElOVkVSU0VfRVBTSUxPTiA9IDEwICoqIChTYXNzTnVtYmVyOjpQUkVDSVNJT04gKyAxKTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNsYW1wKGZsb2F0ICR2YWx1ZSwgZmxvYXQgJGxvd2VyTGltaXQsIGZsb2F0ICR1cHBlckxpbWl0KTogZmxvYXQKICAgIHsKICAgICAgICBpZiAoJHZhbHVlIDwgJGxvd2VyTGltaXQpIHsKICAgICAgICAgICAgcmV0dXJuICRsb3dlckxpbWl0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSA+ICR1cHBlckxpbWl0KSB7CiAgICAgICAgICAgIHJldHVybiAkdXBwZXJMaW1pdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmdXp6eUVxdWFscyhmbG9hdCAkbnVtYmVyMSwgZmxvYXQgJG51bWJlcjIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRudW1iZXIxID09ICRudW1iZXIyKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYWJzKCRudW1iZXIxIC0gJG51bWJlcjIpIDw9IHNlbGY6OkVQU0lMT04gJiYgcm91bmQoJG51bWJlcjEgKiBzZWxmOjpJTlZFUlNFX0VQU0lMT04pID09PSByb3VuZCgkbnVtYmVyMiAqIHNlbGY6OklOVkVSU0VfRVBTSUxPTik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmdXp6eUxlc3NUaGFuKGZsb2F0ICRudW1iZXIxLCBmbG9hdCAkbnVtYmVyMik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG51bWJlcjEgPCAkbnVtYmVyMiAmJiAhc2VsZjo6ZnV6enlFcXVhbHMoJG51bWJlcjEsICRudW1iZXIyKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZ1enp5TGVzc1RoYW5PckVxdWFscyhmbG9hdCAkbnVtYmVyMSwgZmxvYXQgJG51bWJlcjIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRudW1iZXIxIDw9ICRudW1iZXIyIHx8IHNlbGY6OmZ1enp5RXF1YWxzKCRudW1iZXIxLCAkbnVtYmVyMik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmdXp6eUdyZWF0ZXJUaGFuKGZsb2F0ICRudW1iZXIxLCBmbG9hdCAkbnVtYmVyMik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG51bWJlcjEgPiAkbnVtYmVyMiAmJiAhc2VsZjo6ZnV6enlFcXVhbHMoJG51bWJlcjEsICRudW1iZXIyKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZ1enp5R3JlYXRlclRoYW5PckVxdWFscyhmbG9hdCAkbnVtYmVyMSwgZmxvYXQgJG51bWJlcjIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRudW1iZXIxID49ICRudW1iZXIyIHx8IHNlbGY6OmZ1enp5RXF1YWxzKCRudW1iZXIxLCAkbnVtYmVyMik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmdXp6eUlzSW50KGZsb2F0ICRudW1iZXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKGlzX2luZmluaXRlKCRudW1iZXIpIHx8IGlzX25hbigkbnVtYmVyKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6ZnV6enlFcXVhbHMoJG51bWJlciwgcm91bmQoJG51bWJlcikpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnV6enlBc0ludChmbG9hdCAkbnVtYmVyKTogP2ludAogICAgewogICAgICAgIGlmIChpc19pbmZpbml0ZSgkbnVtYmVyKSB8fCBpc19uYW4oJG51bWJlcikpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG51bWJlciA+IFxQSFBfSU5UX01BWCB8fCAkbnVtYmVyIDwgXFBIUF9JTlRfTUlOKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHJvdW5kZWQgPSAoaW50KSByb3VuZCgkbnVtYmVyKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmZ1enp5RXF1YWxzKCRudW1iZXIsICRyb3VuZGVkKSA/ICRyb3VuZGVkIDogbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZ1enp5Um91bmQoZmxvYXQgJG51bWJlcik6IGludAogICAgewogICAgICAgIGlmICgkbnVtYmVyID4gMCkgewogICAgICAgICAgICByZXR1cm4gaW50dmFsKHNlbGY6OmZ1enp5TGVzc1RoYW4oZm1vZCgkbnVtYmVyLCAxKSwgMC41KSA/IGZsb29yKCRudW1iZXIpIDogY2VpbCgkbnVtYmVyKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW50dmFsKHNlbGY6OmZ1enp5TGVzc1RoYW5PckVxdWFscyhmbW9kKCRudW1iZXIsIDEpLCAwLjUpID8gZmxvb3IoJG51bWJlcikgOiBjZWlsKCRudW1iZXIpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZ1enp5Q2hlY2tSYW5nZShmbG9hdCAkbnVtYmVyLCBmbG9hdCAkbWluLCBmbG9hdCAkbWF4KTogP2Zsb2F0CiAgICB7CiAgICAgICAgaWYgKHNlbGY6OmZ1enp5RXF1YWxzKCRudW1iZXIsICRtaW4pKSB7CiAgICAgICAgICAgIHJldHVybiAkbWluOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNlbGY6OmZ1enp5RXF1YWxzKCRudW1iZXIsICRtYXgpKSB7CiAgICAgICAgICAgIHJldHVybiAkbWF4OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRudW1iZXIgPiAkbWluICYmICRudW1iZXIgPCAkbWF4KSB7CiAgICAgICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFxPdXRPZlJhbmdlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnV6enlBc3NlcnRSYW5nZShmbG9hdCAkbnVtYmVyLCBmbG9hdCAkbWluLCBmbG9hdCAkbWF4LCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IGZsb2F0CiAgICB7CiAgICAgICAgJHJlc3VsdCA9IHNlbGY6OmZ1enp5Q2hlY2tSYW5nZSgkbnVtYmVyLCAkbWluLCAkbWF4KTsKCiAgICAgICAgaWYgKCFcaXNfbnVsbCgkcmVzdWx0KSkgewogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CgogICAgICAgICRuYW1lRGlzcGxheSA9ICRuYW1lID8gIiAkbmFtZSIgOiAnJzsKCiAgICAgICAgdGhyb3cgbmV3IFxPdXRPZlJhbmdlRXhjZXB0aW9uKCJJbnZhbGlkIHZhbHVlOiRuYW1lRGlzcGxheSBtdXN0IGJlIGJldHdlZW4gJG1pbiBhbmQgJG1heDogJG51bWJlci4iKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgJG51bTEgLyAkbnVtMiwgdXNpbmcgU2FzcydzIGRpdmlzaW9uIHNlbWFudGljLgogICAgICoKICAgICAqIFNhc3MgYWxsb3dzIGRpdmlkaW5nIGJ5IDAuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGl2aWRlTGlrZVNhc3MoZmxvYXQgJG51bTEsIGZsb2F0ICRudW0yKTogZmxvYXQKICAgIHsKICAgICAgICBpZiAoJG51bTIgPT0gMCkgewogICAgICAgICAgICBpZiAoJG51bTEgPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIE5BTjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRudW0xID4gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIElORjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIC1JTkY7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG51bTEgLyAkbnVtMjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiAkbnVtMSBtb2R1bG8gJG51bTIsIHVzaW5nIFNhc3MncyBbZmxvb3JlZCBkaXZpc2lvbl0gbW9kdWxvCiAgICAgKiBzZW1hbnRpY3MsIHdoaWNoIGl0IGluaGVyaXRlZCBmcm9tIFJ1YnkgYW5kIHdoaWNoIGRpZmZlciBmcm9tIERhcnQncy4KICAgICAqCiAgICAgKiBbZmxvb3JlZCBkaXZpc2lvbl06IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01vZHVsb19vcGVyYXRpb24jVmFyaWFudHNfb2ZfdGhlX2RlZmluaXRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtb2R1bG9MaWtlU2FzcyhmbG9hdCAkbnVtMSwgZmxvYXQgJG51bTIpOiBmbG9hdAogICAgewogICAgICAgIGlmIChpc19pbmZpbml0ZSgkbnVtMSkpIHsKICAgICAgICAgICAgcmV0dXJuIE5BTjsKICAgICAgICB9CgogICAgICAgIGlmIChpc19pbmZpbml0ZSgkbnVtMikpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OnNpZ25JbmNsdWRpbmdaZXJvKCRudW0xKSA9PT0gc2VsZjo6c2lnbigkbnVtMikgPyAkbnVtMSA6IE5BTjsKICAgICAgICB9CgogICAgICAgIGlmICgkbnVtMiA9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBOQU47CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gZm1vZCgkbnVtMSwgJG51bTIpOwoKICAgICAgICBpZiAoJHJlc3VsdCA9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgLy8gUEhQJ3MgZmRpdiBoYXMgYSBkaWZmZXJlbnQgc2VtYW50aWMgd2hlbiB0aGUgMiBudW1iZXJzIGhhdmUgYSBkaWZmZXJlbnQgc2lnbi4KICAgICAgICBpZiAoJG51bTIgPCAwIHhvciAkbnVtMSA8IDApIHsKICAgICAgICAgICAgJHJlc3VsdCArPSAkbnVtMjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3FydChTYXNzTnVtYmVyICRudW1iZXIpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgJG51bWJlci0+YXNzZXJ0Tm9Vbml0cygnbnVtYmVyJyk7CgogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjpjcmVhdGUoc3FydCgkbnVtYmVyLT5nZXRWYWx1ZSgpKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaW4oU2Fzc051bWJlciAkbnVtYmVyKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjpjcmVhdGUoc2luKCRudW1iZXItPmNvZXJjZVZhbHVlVG9Vbml0KCdyYWQnLCAnbnVtYmVyJykpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvcyhTYXNzTnVtYmVyICRudW1iZXIpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZShjb3MoJG51bWJlci0+Y29lcmNlVmFsdWVUb1VuaXQoJ3JhZCcsICdudW1iZXInKSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGFuKFNhc3NOdW1iZXIgJG51bWJlcik6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gU2Fzc051bWJlcjo6Y3JlYXRlKHRhbigkbnVtYmVyLT5jb2VyY2VWYWx1ZVRvVW5pdCgncmFkJywgJ251bWJlcicpKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhdGFuKFNhc3NOdW1iZXIgJG51bWJlcik6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICAkbnVtYmVyLT5hc3NlcnROb1VuaXRzKCdudW1iZXInKTsKICAgICAgICByZXR1cm4gc2VsZjo6cmFkaWFuc1RvRGVncmVlcyhhdGFuKCRudW1iZXItPmdldFZhbHVlKCkpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFzaW4oU2Fzc051bWJlciAkbnVtYmVyKTogU2Fzc051bWJlcgogICAgewogICAgICAgICRudW1iZXItPmFzc2VydE5vVW5pdHMoJ251bWJlcicpOwogICAgICAgIHJldHVybiBzZWxmOjpyYWRpYW5zVG9EZWdyZWVzKGFzaW4oJG51bWJlci0+Z2V0VmFsdWUoKSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWNvcyhTYXNzTnVtYmVyICRudW1iZXIpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgJG51bWJlci0+YXNzZXJ0Tm9Vbml0cygnbnVtYmVyJyk7CiAgICAgICAgcmV0dXJuIHNlbGY6OnJhZGlhbnNUb0RlZ3JlZXMoYWNvcygkbnVtYmVyLT5nZXRWYWx1ZSgpKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhYnMoU2Fzc051bWJlciAkbnVtYmVyKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjpjcmVhdGUoYWJzKCRudW1iZXItPmdldFZhbHVlKCkpKS0+Y29lcmNlVG9NYXRjaCgkbnVtYmVyKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvZyhTYXNzTnVtYmVyICRudW1iZXIsID9TYXNzTnVtYmVyICRiYXNlKTogU2Fzc051bWJlcgogICAgewogICAgICAgIGlmICgkYmFzZSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gU2Fzc051bWJlcjo6Y3JlYXRlKHNlbGY6OmRpdmlkZUxpa2VTYXNzKGxvZygkbnVtYmVyLT5nZXRWYWx1ZSgpKSwgbG9nKCRiYXNlLT5nZXRWYWx1ZSgpKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZShsb2coJG51bWJlci0+Z2V0VmFsdWUoKSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcG93KFNhc3NOdW1iZXIgJGJhc2UsIFNhc3NOdW1iZXIgJGV4cG9uZW50KTogU2Fzc051bWJlcgogICAgewogICAgICAgICRiYXNlLT5hc3NlcnROb1VuaXRzKCdiYXNlJyk7CiAgICAgICAgJGV4cG9uZW50LT5hc3NlcnROb1VuaXRzKCdleHBvbmVudCcpOwoKICAgICAgICBpZiAoXFBIUF9WRVJTSU9OX0lEID49IDgwNDAwKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IGZwb3coJGJhc2UtPmdldFZhbHVlKCksICRleHBvbmVudC0+Z2V0VmFsdWUoKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHZhbHVlID0gJGJhc2UtPmdldFZhbHVlKCkgKiogJGV4cG9uZW50LT5nZXRWYWx1ZSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZSgkdmFsdWUpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXRhbjIoU2Fzc051bWJlciAkeSwgU2Fzc051bWJlciAkeCk6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6cmFkaWFuc1RvRGVncmVlcyhhdGFuMigkeS0+Z2V0VmFsdWUoKSwgJHgtPmNvbnZlcnRWYWx1ZVRvTWF0Y2goJHksICd4JywgJ3knKSkpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJhZGlhbnNUb0RlZ3JlZXMoZmxvYXQgJHJhZGlhbnMpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OndpdGhVbml0cygkcmFkaWFucyAqICgxODAgLyBcTV9QSSksIFsnZGVnJ10pOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2lnbihmbG9hdCAkbnVtKTogaW50CiAgICB7CiAgICAgICAgaWYgKCRudW0gPiAwKSB7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRudW0gPCAwKSB7CiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2lnbkluY2x1ZGluZ1plcm8oZmxvYXQgJG51bSk6IGludAogICAgewogICAgICAgIC8vIEluIFBIUCwgbmVnYXRpdmUgMCBhbmQgcG9zaXRpdmUgMCBhcmUgZXF1YWwgZXZlbiBmb3Igc3RyaWN0IGVxdWFsaXR5LCBzbyB3ZSBuZWVkIGEgZGlmZmVyZW50IGRldGVjdGlvbgogICAgICAgIGlmICgkbnVtID09PSAwLjApIHsKICAgICAgICAgICAgaWYgKCctMCcgPT09IChzdHJpbmcpICRudW0pIHsKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6c2lnbigkbnVtKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/ParserUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlclxTdHJpbmdTY2FubmVyOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgUGFyc2VyVXRpbAp7CiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGVzY2FwZSBzZXF1ZW5jZSBmcm9tICRzY2FubmVyIGFuZCByZXR1cm5zIHRoZSBjaGFyYWN0ZXIgaXQKICAgICAqIHJlcHJlc2VudHMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29uc3VtZUVzY2FwZWRDaGFyYWN0ZXIoU3RyaW5nU2Nhbm5lciAkc2Nhbm5lcik6IHN0cmluZwogICAgewogICAgICAgIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXN5bnRheC0zLyNjb25zdW1lLWVzY2FwZWQtY29kZS1wb2ludC4KICAgICAgICAkc2Nhbm5lci0+ZXhwZWN0Q2hhcignXFwnKTsKCiAgICAgICAgJGZpcnN0ID0gJHNjYW5uZXItPnBlZWtDaGFyKCk7CgogICAgICAgIGlmICgkZmlyc3QgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICJcdXtGRkZEfSI7CiAgICAgICAgfQoKICAgICAgICBpZiAoQ2hhcmFjdGVyOjppc05ld2xpbmUoJGZpcnN0KSkgewogICAgICAgICAgICAkc2Nhbm5lci0+ZXJyb3IoJ0V4cGVjdGVkIGVzY2FwZSBzZXF1ZW5jZS4nKTsKICAgICAgICB9CgogICAgICAgIGlmIChDaGFyYWN0ZXI6OmlzSGV4KCRmaXJzdCkpIHsKICAgICAgICAgICAgJHZhbHVlID0gMDsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgNjsgJGkrKykgewogICAgICAgICAgICAgICAgJG5leHQgPSAkc2Nhbm5lci0+cGVla0NoYXIoKTsKCiAgICAgICAgICAgICAgICBpZiAoJG5leHQgPT09IG51bGwgfHwgIUNoYXJhY3Rlcjo6aXNIZXgoJG5leHQpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhbHVlICo9IDE2OwogICAgICAgICAgICAgICAgJHZhbHVlICs9IGhleGRlYygkc2Nhbm5lci0+cmVhZENoYXIoKSk7CiAgICAgICAgICAgICAgICBhc3NlcnQoXGlzX2ludCgkdmFsdWUpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCRzY2FubmVyLT5wZWVrQ2hhcigpKSkgewogICAgICAgICAgICAgICAgJHNjYW5uZXItPnJlYWRDaGFyKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdmFsdWUgPT09IDAgfHwgKCR2YWx1ZSA+PSAweEQ4MDAgJiYgJHZhbHVlIDw9IDB4REZGRikgfHwgJHZhbHVlID49IDB4MTBGRkZGKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIlx1e0ZGRkR9IjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG1iX2NocigkdmFsdWUsICdVVEYtOCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzY2FubmVyLT5yZWFkVXRmOENoYXIoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/Path.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcVXRpbDsKCnVzZSBMZWFndWVcVXJpXENvbnRyYWN0c1xVcmlJbnRlcmZhY2U7CnVzZSBMZWFndWVcVXJpXFVyaTsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEZpbGVzeXN0ZW1cRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEZpbGVzeXN0ZW1cUGF0aCBhcyBTeW1mb255UGF0aDsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFBhdGgKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgc3RyaW5nPgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBhcnJheSAkcmVhbENhc2VDYWNoZSA9IFtdOwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1VyaShzdHJpbmcgJHBhdGgpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoXERJUkVDVE9SWV9TRVBBUkFUT1IgPT09ICdcXCcpIHsKICAgICAgICAgICAgcmV0dXJuIFVyaTo6ZnJvbVdpbmRvd3NQYXRoKCRwYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBVcmk6OmZyb21Vbml4UGF0aCgkcGF0aCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tVXJpKFVyaUludGVyZmFjZSAkdXJpKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEkdXJpIGluc3RhbmNlb2YgVXJpKSB7CiAgICAgICAgICAgICR1cmkgPSBVcmk6Om5ldygkdXJpKTsKICAgICAgICB9CgogICAgICAgIGlmIChcRElSRUNUT1JZX1NFUEFSQVRPUiA9PT0gJ1xcJykgewogICAgICAgICAgICByZXR1cm4gJHVyaS0+dG9XaW5kb3dzUGF0aCgpID8/IHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJVcmkgJHVyaSBtdXN0IGhhdmUgc2NoZW1lICdmaWxlOicuIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVyaS0+dG9Vbml4UGF0aCgpID8/IHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJVcmkgJHVyaSBtdXN0IGhhdmUgc2NoZW1lICdmaWxlOicuIik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0Fic29sdXRlKHN0cmluZyAkcGF0aCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJHBhdGggPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcGF0aFswXSA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxESVJFQ1RPUllfU0VQQVJBVE9SID09PSAnXFwnKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjppc1dpbmRvd3NBYnNvbHV0ZSgkcGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDYW5vbmljYWxpemVzICRwYXRoLgogICAgICoKICAgICAqIFRoaXMgaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gdGhlIHNhbWUgcGF0aCBmb3IgdHdvIGRpZmZlcmVudCBpbnB1dCBwYXRocwogICAgICogaWYgYW5kIG9ubHkgaWYgYm90aCBpbnB1dCBwYXRocyBwb2ludCB0byB0aGUgc2FtZSBsb2NhdGlvbi4gVW5saWtlCiAgICAgKiB7QHNlZSBub3JtYWxpemV9LCBpdCByZXR1cm5zIGFic29sdXRlIHBhdGhzIHdoZW4gcG9zc2libGUgYW5kIGNhbm9uaWNhbGl6ZXMKICAgICAqIEFTQ0lJIGNhc2Ugb24gV2luZG93cy4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCByZXNvbHZlIHN5bWxpbmtzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShzdHJpbmcgJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6cmVhbENhc2VQYXRoKHNlbGY6Om5vcm1hbGl6ZShzZWxmOjphYnNvbHV0ZSgkcGF0aCkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZXMgJHBhdGgsIHNpbXBsaWZ5aW5nIGl0IGJ5IGhhbmRsaW5nIGAuLmAsIGFuZCBgLmAsIGFuZAogICAgICogcmVtb3ZpbmcgcmVkdW5kYW50IHBhdGggc2VwYXJhdG9ycyB3aGVuZXZlciBwb3NzaWJsZS4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQgdGhpcyBpcyAqbm90KiBndWFyYW50ZWVkIHRvIHJldHVybiB0aGUgc2FtZSByZXN1bHQgZm9yIHR3bwogICAgICogZXF1aXZhbGVudCBpbnB1dCBwYXRocy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJG5vcm1hbGl6ZWQgPSBTeW1mb255UGF0aDo6Y2Fub25pY2FsaXplKCRwYXRoKTsKCiAgICAgICAgLy8gVGhlIFN5bWZvbnkgUGF0aCBjbGFzcyBhbHdheXMgdXNlcyAvIGFzIHNlcGFyYXRvciwgd2hpbGUgd2Ugd2FudCB0byB1c2UgdGhlIHBsYXRmb3JtIG9uZSB0byBnZXQgYSByZWFsIHBhdGgKICAgICAgICBpZiAoXERJUkVDVE9SWV9TRVBBUkFUT1IgPT09ICdcXCcpIHsKICAgICAgICAgICAgJG5vcm1hbGl6ZWQgPSBzdHJfcmVwbGFjZSgnLycsICdcXCcsICRub3JtYWxpemVkKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbm9ybWFsaXplZDsKICAgIH0KCiAgICAvKioKICAgICAqIEF0dGVtcHRzIHRvIGNvbnZlcnQgJHBhdGggdG8gYW4gZXF1aXZhbGVudCByZWxhdGl2ZSBwYXRoIGZyb20gJGZyb20uCiAgICAgKgogICAgICogU2luY2UgdGhlcmUgaXMgbm8gcmVsYXRpdmUgcGF0aCBmcm9tIG9uZSBkcml2ZSBsZXR0ZXIgdG8gYW5vdGhlciBvbiBXaW5kb3dzLAogICAgICogdGhpcyB3aWxsIHJldHVybiBhbiBhYnNvbHV0ZSBwYXRoIGluIHRob3NlIGNhc2VzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbGF0aXZlKHN0cmluZyAkcGF0aCwgc3RyaW5nICRmcm9tKTogc3RyaW5nCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHJlbGF0aXZlUGF0aCA9IFN5bWZvbnlQYXRoOjptYWtlUmVsYXRpdmUoJHBhdGgsICRmcm9tKTsKICAgICAgICB9IGNhdGNoIChJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24pIHsKICAgICAgICAgICAgcmV0dXJuICRwYXRoOwogICAgICAgIH0KCiAgICAgICAgLy8gVGhlIFN5bWZvbnkgUGF0aCBjbGFzcyBhbHdheXMgdXNlcyAvIGFzIHNlcGFyYXRvciwgd2hpbGUgd2Ugd2FudCB0byB1c2UgdGhlIHBsYXRmb3JtIG9uZSB0byBnZXQgYSByZWFsIHBhdGgKICAgICAgICBpZiAoXERJUkVDVE9SWV9TRVBBUkFUT1IgPT09ICdcXCcpIHsKICAgICAgICAgICAgJHJlbGF0aXZlUGF0aCA9IHN0cl9yZXBsYWNlKCcvJywgJ1xcJywgJHJlbGF0aXZlUGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlbGF0aXZlUGF0aDsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZWFsQ2FzZVBhdGgoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEoXFBIUF9PU19GQU1JTFkgPT09ICdXaW5kb3dzJyB8fCBcUEhQX09TX0ZBTUlMWSA9PT0gJ0RhcndpbicpKSB7CiAgICAgICAgICAgIHJldHVybiAkcGF0aDsKICAgICAgICB9CgogICAgICAgIGlmIChcUEhQX09TX0ZBTUlMWSA9PT0gJ1dpbmRvd3MnKSB7CiAgICAgICAgICAgIC8vIERyaXZlIG5hbWVzIGFyZSAqYWx3YXlzKiBjYXNlLWluc2Vuc2l0aXZlLCBzbyBjb252ZXJ0IHRoZW0gdG8gdXBwZXJjYXNlLgogICAgICAgICAgICBpZiAoc2VsZjo6aXNBYnNvbHV0ZSgkcGF0aCkgJiYgQ2hhcmFjdGVyOjppc0FscGhhYmV0aWMoJHBhdGhbMF0pKSB7CiAgICAgICAgICAgICAgICAkcGF0aCA9IHN0cnRvdXBwZXIoc3Vic3RyKCRwYXRoLCAwLCAzKSkgLiBzdWJzdHIoJHBhdGgsIDMpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6cmVhbENhc2VQYXRoSGVscGVyKCRwYXRoKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZWFsQ2FzZVBhdGhIZWxwZXIoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGRpcm5hbWUgPSBkaXJuYW1lKCRwYXRoKTsKCiAgICAgICAgaWYgKCRkaXJuYW1lID09PSAkcGF0aCB8fCAkZGlybmFtZSA9PT0gJy4nKSB7CiAgICAgICAgICAgIHJldHVybiAkcGF0aDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjokcmVhbENhc2VDYWNoZVskcGF0aF0gPz89IHNlbGY6OmNvbXB1dGVSZWFsQ2FzZVBhdGgoJHBhdGgpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbXB1dGVSZWFsQ2FzZVBhdGgoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlYWxEaXJuYW1lID0gc2VsZjo6cmVhbENhc2VQYXRoSGVscGVyKGRpcm5hbWUoJHBhdGgpKTsKICAgICAgICAkYmFzZW5hbWUgPSBiYXNlbmFtZSgkcGF0aCk7CgogICAgICAgICRmaWxlcyA9IEBzY2FuZGlyKCRyZWFsRGlybmFtZSk7CgogICAgICAgIGlmICgkZmlsZXMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXJyb3IgbGlzdGluZyBhIGRpcmVjdG9yeSwgaXQncyBsaWtlbHkgYmVjYXVzZSB3ZSdyZQogICAgICAgICAgICAvLyB0cnlpbmcgdG8gcmVhY2ggdG9vIGZhciBvdXQgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGludG8gc29tZXRoaW5nCiAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgcGVybWlzc2lvbnMgZm9yLiBJbiB0aGF0IGNhc2UsIGp1c3QgYXNzdW1lIHdlIGhhdmUgdGhlCiAgICAgICAgICAgIC8vIHJlYWwgcGF0aC4KICAgICAgICAgICAgcmV0dXJuICRwYXRoOwogICAgICAgIH0KCiAgICAgICAgJG1hdGNoZXMgPSBhcnJheV92YWx1ZXMoYXJyYXlfZmlsdGVyKCRmaWxlcywgZm4gKCRyZWFsUGF0aCkgPT4gU3RyaW5nVXRpbDo6ZXF1YWxzSWdub3JlQ2FzZShiYXNlbmFtZSgkcmVhbFBhdGgpLCAkYmFzZW5hbWUpKSk7CgogICAgICAgIGlmIChcY291bnQoJG1hdGNoZXMpID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpqb2luKCRyZWFsRGlybmFtZSwgJG1hdGNoZXNbMF0pOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgb3IgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9wdGlvbnMKICAgICAgICAvLyAobWVhbmluZyB0aGUgZmlsZXN5c3RlbSBpc24ndCBhY3R1YWxseSBjYXNlLWluc2Vuc2l0aXZlKSwgdXNlCiAgICAgICAgLy8gYGJhc2VuYW1lYCBhcy1pcy4KICAgICAgICByZXR1cm4gc2VsZjo6am9pbigkcmVhbERpcm5hbWUsICRiYXNlbmFtZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1dpbmRvd3NBYnNvbHV0ZShzdHJpbmcgJHBhdGgpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRwYXRoID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHBhdGhbMF0gPT09ICcvJykgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcGF0aFswXSA9PT0gJ1xcJykgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChcc3RybGVuKCRwYXRoKSA8IDMpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwYXRoWzFdICE9PSAnOicpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwYXRoWzJdICE9PSAnLycgJiYgJHBhdGhbMl0gIT09ICdcXCcpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXltBLVphLXpdJC8nLCAkcGF0aFswXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBqb2luKHN0cmluZyAkcGFydDEsIHN0cmluZyAkcGFydDIpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHBhcnQxID09PSAnJyB8fCBzZWxmOjppc0Fic29sdXRlKCRwYXJ0MikpIHsKICAgICAgICAgICAgcmV0dXJuICRwYXJ0MjsKICAgICAgICB9CgogICAgICAgIGlmICgkcGFydDIgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAkcGFydDE7CiAgICAgICAgfQoKICAgICAgICAkbGFzdCA9ICRwYXJ0MVtcc3RybGVuKCRwYXJ0MSkgLSAxXTsKICAgICAgICAkc2VwYXJhdG9yID0gXERJUkVDVE9SWV9TRVBBUkFUT1I7CgogICAgICAgIGlmICgkbGFzdCA9PT0gJy8nIHx8ICRsYXN0ID09PSBcRElSRUNUT1JZX1NFUEFSQVRPUikgewogICAgICAgICAgICAkc2VwYXJhdG9yID0gJyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBhcnQxIC4gJHNlcGFyYXRvciAuICRwYXJ0MjsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFic29sdXRlKHN0cmluZyAkcGF0aCk6IHN0cmluZwogICAgewogICAgICAgICRjd2QgPSBnZXRjd2QoKTsKCiAgICAgICAgaWYgKCRjd2QgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiAkcGF0aDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpqb2luKCRjd2QsICRwYXRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mICRwYXRoOiB0aGUgcG9ydGlvbiBvZiBiYXNlbmFtZSBmcm9tIHRoZSBsYXN0CiAgICAgKiBgLmAgdG8gdGhlIGVuZCAoaW5jbHVkaW5nIHRoZSBgLmAgaXRzZWxmKS4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlsZSBuYW1lIHN0YXJ0cyB3aXRoIGEgYC5gLCB0aGVuIHRoYXQgaXMgbm90IGNvbnNpZGVyZWQgdGhlCiAgICAgKiBleHRlbnNpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHRlbnNpb24oc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJhc2VuYW1lID0gYmFzZW5hbWUoJHBhdGgpOwoKICAgICAgICAkbGFzdERvdCA9IHN0cnJwb3MoJGJhc2VuYW1lLCAnLicpOwoKICAgICAgICBpZiAoJGxhc3REb3QgPT09IGZhbHNlIHx8ICRsYXN0RG90ID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdWJzdHIoJGJhc2VuYW1lLCAkbGFzdERvdCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRob3V0RXh0ZW5zaW9uKHN0cmluZyAkcGF0aCk6IHN0cmluZwogICAgewogICAgICAgICRleHRlbnNpb24gPSBzZWxmOjpleHRlbnNpb24oJHBhdGgpOwoKICAgICAgICBpZiAoJGV4dGVuc2lvbiA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuICRwYXRoOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN1YnN0cigkcGF0aCwgMCwgLVxzdHJsZW4oJGV4dGVuc2lvbikpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHByZXR0eSBVUkkgZm9yIGEgcGF0aAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHByZXR0eVVyaShzdHJpbmd8VXJpSW50ZXJmYWNlICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRwYXRoIGluc3RhbmNlb2YgVXJpSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIGlmICgkcGF0aC0+Z2V0U2NoZW1lKCkgIT09ICdmaWxlJykgewogICAgICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpICRwYXRoOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGF0aCA9IHNlbGY6OmZyb21VcmkoJHBhdGgpOwogICAgICAgIH0KCiAgICAgICAgJG5vcm1hbGl6ZWRQYXRoID0gJHBhdGg7CiAgICAgICAgJG5vcm1hbGl6ZWRSb290RGlyZWN0b3J5ID0gZ2V0Y3dkKCkgLiAnLyc7CgogICAgICAgIGlmIChcRElSRUNUT1JZX1NFUEFSQVRPUiA9PT0gJ1xcJykgewogICAgICAgICAgICAkbm9ybWFsaXplZFJvb3REaXJlY3RvcnkgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRub3JtYWxpemVkUm9vdERpcmVjdG9yeSk7CiAgICAgICAgICAgICRub3JtYWxpemVkUGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHBhdGgpOwogICAgICAgIH0KCiAgICAgICAgLy8gVE9ETyBhZGQgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIGEgcmVsYXRpdmUgcGF0aCB1c2luZyAuLi8gaW4gc29tZSBjYXNlcywgbGlrZSBEYXJ0J3MgcGF0aC5wcmV0dHlVcmkgbWV0aG9kCgogICAgICAgIGlmIChzdHJfc3RhcnRzX3dpdGgoJG5vcm1hbGl6ZWRQYXRoLCAkbm9ybWFsaXplZFJvb3REaXJlY3RvcnkpKSB7CiAgICAgICAgICAgIHJldHVybiBzdWJzdHIoJHBhdGgsIFxzdHJsZW4oJG5vcm1hbGl6ZWRSb290RGlyZWN0b3J5KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBhdGg7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/SpanUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlclxTdHJpbmdTY2FubmVyOwp1c2UgU291cmNlU3BhblxGaWxlU3BhbjsKdXNlIFNvdXJjZVNwYW5cU291cmNlRmlsZTsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFNwYW5VdGlsCnsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYm9ndXNTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuIFNvdXJjZUZpbGU6OmZyb21TdHJpbmcoJycpLT5zcGFuKDApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGlzIHNwYW4gd2l0aCBhbGwgd2hpdGVzcGFjZSB0cmltbWVkIGZyb20gYm90aCBzaWRlcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cmltKEZpbGVTcGFuICRzcGFuKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6dHJpbVJpZ2h0KHNlbGY6OnRyaW1MZWZ0KCRzcGFuKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoaXMgc3BhbiB3aXRoIGFsbCBsZWFkaW5nIHdoaXRlc3BhY2UgdHJpbW1lZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cmltTGVmdChGaWxlU3BhbiAkc3Bhbik6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gMDsKICAgICAgICAkdGV4dCA9ICRzcGFuLT5nZXRUZXh0KCk7CiAgICAgICAgJHRleHRMZW5ndGggPSBcc3RybGVuKCR0ZXh0KTsKCiAgICAgICAgd2hpbGUgKCRzdGFydCA8ICR0ZXh0TGVuZ3RoICYmIENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCR0ZXh0WyRzdGFydF0pKSB7CiAgICAgICAgICAgICRzdGFydCsrOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzcGFuLT5zdWJzcGFuKCRzdGFydCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoaXMgc3BhbiB3aXRoIGFsbCB0cmFpbGluZyB3aGl0ZXNwYWNlIHRyaW1tZWQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdHJpbVJpZ2h0KEZpbGVTcGFuICRzcGFuKTogRmlsZVNwYW4KICAgIHsKICAgICAgICAkdGV4dCA9ICRzcGFuLT5nZXRUZXh0KCk7CiAgICAgICAgJGVuZCA9IFxzdHJsZW4oJHRleHQpIC0gMTsKCiAgICAgICAgd2hpbGUgKCRlbmQgPj0gMCAmJiBDaGFyYWN0ZXI6OmlzV2hpdGVzcGFjZSgkdGV4dFskZW5kXSkpIHsKICAgICAgICAgICAgJGVuZC0tOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzcGFuLT5zdWJzcGFuKDAsICRlbmQgKyAxKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNwYW4gb2YgdGhlIGlkZW50aWZpZXIgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgc3Bhbi4KICAgICAqCiAgICAgKiBJZiAkaW5jbHVkZUxlYWRpbmcgaXMgZ3JlYXRlciB0aGFuIDAsIHRoYXQgbWFueSBhZGRpdGlvbmFsIGNoYXJhY3RlcnMKICAgICAqIHdpbGwgYmUgaW5jbHVkZWQgZnJvbSB0aGUgc3RhcnQgb2YgdGhpcyBzcGFuIGJlZm9yZSBsb29raW5nIGZvciBhbgogICAgICogaWRlbnRpZmllci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbml0aWFsSWRlbnRpZmllcihGaWxlU3BhbiAkc3BhbiwgaW50ICRpbmNsdWRlTGVhZGluZyA9IDApOiBGaWxlU3BhbgogICAgewogICAgICAgICRzY2FubmVyID0gbmV3IFN0cmluZ1NjYW5uZXIoJHNwYW4tPmdldFRleHQoKSk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRpbmNsdWRlTGVhZGluZzsgJGkrKykgewogICAgICAgICAgICAkc2Nhbm5lci0+cmVhZFV0ZjhDaGFyKCk7CiAgICAgICAgfQoKICAgICAgICBzZWxmOjpzY2FuSWRlbnRpZmllcigkc2Nhbm5lcik7CgogICAgICAgIHJldHVybiAkc3Bhbi0+c3Vic3BhbigwLCAkc2Nhbm5lci0+Z2V0UG9zaXRpb24oKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3Vic3BhbiBleGNsdWRpbmcgdGhlIGlkZW50aWZpZXIgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgc3Bhbi4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRob3V0SW5pdGlhbElkZW50aWZpZXIoRmlsZVNwYW4gJHNwYW4pOiBGaWxlU3BhbgogICAgewogICAgICAgICRzY2FubmVyID0gbmV3IFN0cmluZ1NjYW5uZXIoJHNwYW4tPmdldFRleHQoKSk7CiAgICAgICAgc2VsZjo6c2NhbklkZW50aWZpZXIoJHNjYW5uZXIpOwoKICAgICAgICByZXR1cm4gJHNwYW4tPnN1YnNwYW4oJHNjYW5uZXItPmdldFBvc2l0aW9uKCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN1YnNwYW4gZXhjbHVkaW5nIGEgbmFtZXNwYWNlIGFuZCBgLmAgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgc3Bhbi4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRob3V0TmFtZXNwYWNlKEZpbGVTcGFuICRzcGFuKTogRmlsZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6d2l0aG91dEluaXRpYWxJZGVudGlmaWVyKCRzcGFuKS0+c3Vic3BhbigxKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdWJzcGFuIGV4Y2x1ZGluZyBhbiBpbml0aWFsIGF0LXJ1bGUgYW5kIGFueSB3aGl0ZXNwYWNlIGFmdGVyCiAgICAgKiBpdC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRob3V0SW5pdGlhbEF0UnVsZShGaWxlU3BhbiAkc3Bhbik6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgJHNjYW5uZXIgPSBuZXcgU3RyaW5nU2Nhbm5lcigkc3Bhbi0+Z2V0VGV4dCgpKTsKICAgICAgICAkc2Nhbm5lci0+ZXhwZWN0Q2hhcignQCcpOwogICAgICAgIHNlbGY6OnNjYW5JZGVudGlmaWVyKCRzY2FubmVyKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OnRyaW1MZWZ0KCRzcGFuLT5zdWJzcGFuKCRzY2FubmVyLT5nZXRQb3NpdGlvbigpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyICRzcGFuIGNvbnRhaW5zIHRoZSAkdGFyZ2V0IEZpbGVTcGFuLgogICAgICoKICAgICAqIFZhbGlkYXRlcyB0aGUgRmlsZVNwYW5zIHRvIGJlIGluIHRoZSBzYW1lIGZpbGUgYW5kIGZvciB0aGUgJHRhcmdldCB0byBiZQogICAgICogd2l0aGluICRzcGFuIEZpbGVTcGFuIGluY2x1c2l2ZSByYW5nZSBbc3RhcnQsZW5kXS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb250YWlucyhGaWxlU3BhbiAkc3BhbiwgRmlsZVNwYW4gJHRhcmdldCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHNwYW4tPmdldEZpbGUoKSA9PT0gJHRhcmdldC0+Z2V0RmlsZSgpICYmICRzcGFuLT5nZXRTdGFydCgpLT5nZXRPZmZzZXQoKSA8PSAkdGFyZ2V0LT5nZXRTdGFydCgpLT5nZXRPZmZzZXQoKSAmJiAkc3Bhbi0+Z2V0RW5kKCktPmdldE9mZnNldCgpID49ICR0YXJnZXQtPmdldEVuZCgpLT5nZXRPZmZzZXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN1bWVzIGFuIGlkZW50aWZpZXIgZnJvbSAkc2Nhbm5lci4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2NhbklkZW50aWZpZXIoU3RyaW5nU2Nhbm5lciAkc2Nhbm5lcik6IHZvaWQKICAgIHsKICAgICAgICB3aGlsZSAoISRzY2FubmVyLT5pc0RvbmUoKSkgewogICAgICAgICAgICAkY2hhciA9ICRzY2FubmVyLT5wZWVrQ2hhcigpOwoKICAgICAgICAgICAgaWYgKCRjaGFyID09PSAnXFwnKSB7CiAgICAgICAgICAgICAgICBQYXJzZXJVdGlsOjpjb25zdW1lRXNjYXBlZENoYXJhY3Rlcigkc2Nhbm5lcik7CiAgICAgICAgICAgIH0gZWxzZWlmICgkY2hhciAhPT0gbnVsbCAmJiBDaGFyYWN0ZXI6OmlzTmFtZSgkY2hhcikpIHsKICAgICAgICAgICAgICAgICRzY2FubmVyLT5yZWFkVXRmOENoYXIoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/StringUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTdHJpbmdVdGlsCnsKICAgIC8qKgogICAgICogQHBhcmFtIG5vbi1lbXB0eS1hcnJheTxzdHJpbmc+ICRpdGVyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdG9TZW50ZW5jZShhcnJheSAkaXRlciwgc3RyaW5nICRjb25qdW5jdGlvbiA9ICdhbmQnKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkaXRlcikgPT09IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRpdGVyW2FycmF5X2tleV9maXJzdCgkaXRlcildOwogICAgICAgIH0KCiAgICAgICAgJGxhc3QgPSBhcnJheV9wb3AoJGl0ZXIpOwoKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLCAnLCAkaXRlcikgLiAnICcgLiAkY29uanVuY3Rpb24gLiAnICcgLiAkbGFzdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgJG5hbWUgaWYgJG51bWJlciBpcyAxLCBvciB0aGUgcGx1cmFsIG9mICRuYW1lIG90aGVyd2lzZS4KICAgICAqCiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGp1c3QgYWRkcyAicyIgdG8gdGhlIGVuZCBvZiAkbmFtZSB0byBnZXQgdGhlIHBsdXJhbC4gSWYKICAgICAqICRwbHVyYWwgaXMgcGFzc2VkLCB0aGF0J3MgdXNlZCBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBsdXJhbGl6ZShzdHJpbmcgJG5hbWUsIGludCAkbnVtYmVyLCA/c3RyaW5nICRwbHVyYWwgPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRudW1iZXIgPT09IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRuYW1lOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwbHVyYWwgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRwbHVyYWw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5hbWUgLiAncyc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cmltQXNjaWkoc3RyaW5nICRzdHJpbmcsIGJvb2wgJGV4Y2x1ZGVFc2NhcGUgPSBmYWxzZSk6IHN0cmluZwogICAgewogICAgICAgICRzdGFydCA9IHNlbGY6OmZpcnN0Tm9uV2hpdGVzcGFjZSgkc3RyaW5nKTsKCiAgICAgICAgaWYgKCRzdGFydCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkZW5kID0gc2VsZjo6bGFzdE5vbldoaXRlc3BhY2UoJHN0cmluZywgJGV4Y2x1ZGVFc2NhcGUpOwogICAgICAgIGFzc2VydCgkZW5kICE9PSBudWxsKTsKCiAgICAgICAgcmV0dXJuIHN1YnN0cigkc3RyaW5nLCAkc3RhcnQsICRlbmQgKyAxKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRyaW1Bc2NpaVJpZ2h0KHN0cmluZyAkc3RyaW5nLCBib29sICRleGNsdWRlRXNjYXBlID0gZmFsc2UpOiBzdHJpbmcKICAgIHsKICAgICAgICAkZW5kID0gc2VsZjo6bGFzdE5vbldoaXRlc3BhY2UoJHN0cmluZywgJGV4Y2x1ZGVFc2NhcGUpOwoKICAgICAgICBpZiAoJGVuZCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3Vic3RyKCRzdHJpbmcsIDAsICRlbmQgKyAxKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gJHN0cmluZyB0aGF0J3Mgbm90IEFTQ0lJCiAgICAgKiB3aGl0ZXNwYWNlLCBvciBgbnVsbGAgaWYgJHN0cmluZyBpcyBlbnRpcmVseSBzcGFjZXMuCiAgICAgKgogICAgICogSWYgJGV4Y2x1ZGVFc2NhcGUgaXMgYHRydWVgLCB0aGlzIGRvZXNuJ3QgbW92ZSBwYXN0IHdoaXRlc3BhY2UgdGhhdCdzCiAgICAgKiBpbmNsdWRlZCBpbiBhIENTUyBlc2NhcGUuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZpcnN0Tm9uV2hpdGVzcGFjZShzdHJpbmcgJHN0cmluZyk6ID9pbnQKICAgIHsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBcc3RybGVuKCRzdHJpbmcpOyAkaSsrKSB7CiAgICAgICAgICAgICRjaGFyID0gJHN0cmluZ1skaV07CgogICAgICAgICAgICBpZiAoIUNoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCRjaGFyKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGNoYXJhY3RlciBpbiAkc3RyaW5nIHRoYXQncyBub3QgQVNDSUkKICAgICAqIHdoaXRlc3BhY2UsIG9yIGBudWxsYCBpZiAkc3RyaW5nIGlzIGVudGlyZWx5IHNwYWNlcy4KICAgICAqCiAgICAgKiBJZiAkZXhjbHVkZUVzY2FwZSBpcyBgdHJ1ZWAsIHRoaXMgZG9lc24ndCBtb3ZlIHBhc3Qgd2hpdGVzcGFjZSB0aGF0J3MKICAgICAqIGluY2x1ZGVkIGluIGEgQ1NTIGVzY2FwZS4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbGFzdE5vbldoaXRlc3BhY2Uoc3RyaW5nICRzdHJpbmcsIGJvb2wgJGV4Y2x1ZGVFc2NhcGUgPSBmYWxzZSk6ID9pbnQKICAgIHsKICAgICAgICBmb3IgKCRpID0gXHN0cmxlbigkc3RyaW5nKSAtIDE7ICRpID49IDA7ICRpLS0pIHsKICAgICAgICAgICAgJGNoYXIgPSAkc3RyaW5nWyRpXTsKCiAgICAgICAgICAgIGlmICghQ2hhcmFjdGVyOjppc1doaXRlc3BhY2UoJGNoYXIpKSB7CiAgICAgICAgICAgICAgICBpZiAoJGV4Y2x1ZGVFc2NhcGUgJiYgJGkgIT09IDAgJiYgJGkgIT09IFxzdHJsZW4oJHN0cmluZykgJiYgJGNoYXIgPT09ICdcXCcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGkgKyAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkaTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJHN0cmluZzEgYW5kICRzdHJpbmcyIGFyZSBlcXVhbCwgaWdub3JpbmcgQVNDSUkgY2FzZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlcXVhbHNJZ25vcmVDYXNlKD9zdHJpbmcgJHN0cmluZzEsIHN0cmluZyAkc3RyaW5nMik6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJHN0cmluZzEgPT09ICRzdHJpbmcyKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzdHJpbmcxID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjp0b0FzY2lpTG93ZXJDYXNlKCRzdHJpbmcxKSA9PT0gc2VsZjo6dG9Bc2NpaUxvd2VyQ2FzZSgkc3RyaW5nMik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJHN0cmluZyBzdGFydHMgd2l0aCAkcHJlZml4LCBpZ25vcmluZyBBU0NJSSBjYXNlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN0YXJ0c1dpdGhJZ25vcmVDYXNlKHN0cmluZyAkc3RyaW5nLCBzdHJpbmcgJHByZWZpeCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoXHN0cmxlbigkc3RyaW5nKSA8IFxzdHJsZW4oJHByZWZpeCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgXHN0cmxlbigkcHJlZml4KTsgJGkrKykgewogICAgICAgICAgICBpZiAoIUNoYXJhY3Rlcjo6ZXF1YWxzSWdub3JlQ2FzZSgkc3RyaW5nWyRpXSwgJHByZWZpeFskaV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYWxsIEFTQ0lJIGNoYXJzIHRvIGxvd2VyY2FzZSBpbiB0aGUgaW5wdXQgc3RyaW5nLgogICAgICoKICAgICAqIFRoaXMgZG9lcyBub3QgdXNlIGBzdHJ0b2xvd2VyYCBiZWNhdXNlIGBzdHJ0b2xvd2VyYCBpcyBsb2NhbGUtZGVwZW5kYW50CiAgICAgKiByYXRoZXIgdGhhbiBvcGVyYXRpbmcgb24gQVNDSUkuCiAgICAgKiBQYXNzaW5nIGFuIGlucHV0IHN0cmluZyBpbiBhbiBlbmNvZGluZyB0aGF0IGl0IGlzIG5vdCBBU0NJSSBjb21wYXRpYmxlIGlzCiAgICAgKiB1bnN1cHBvcnRlZCwgYW5kIHdpbGwgcHJvYmFibHkgZ2VuZXJhdGUgZ2FyYmFnZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b0FzY2lpTG93ZXJDYXNlKHN0cmluZyAkc3RyaW5nKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cnRyKCRzdHJpbmcsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicsICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYWxsIEFTQ0lJIGNoYXJzIHRvIHVwcGVyY2FzZSBpbiB0aGUgaW5wdXQgc3RyaW5nLgogICAgICoKICAgICAqIFRoaXMgZG9lcyBub3QgdXNlIGBzdHJ0b3VwcGVyYCBiZWNhdXNlIGBzdHJ0b3VwcGVyYCBpcyBsb2NhbGUtZGVwZW5kYW50CiAgICAgKiByYXRoZXIgdGhhbiBvcGVyYXRpbmcgb24gQVNDSUkuCiAgICAgKiBQYXNzaW5nIGFuIGlucHV0IHN0cmluZyBpbiBhbiBlbmNvZGluZyB0aGF0IGl0IGlzIG5vdCBBU0NJSSBjb21wYXRpYmxlIGlzCiAgICAgKiB1bnN1cHBvcnRlZCwgYW5kIHdpbGwgcHJvYmFibHkgZ2VuZXJhdGUgZ2FyYmFnZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b0FzY2lpVXBwZXJDYXNlKHN0cmluZyAkc3RyaW5nKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cnRyKCRzdHJpbmcsICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Util/UriUtil.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7Cgp1c2UgTGVhZ3VlXFVyaVxDb250cmFjdHNcVXJpSW50ZXJmYWNlOwp1c2UgTGVhZ3VlXFVyaVxVcmk7CnVzZSBMZWFndWVcVXJpXFVyaVN0cmluZzsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFVyaVV0aWwKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlKFVyaUludGVyZmFjZSAkYmFzZVVybCwgc3RyaW5nICRyZWZlcmVuY2UpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6cmVzb2x2ZVVyaSgkYmFzZVVybCwgVXJpOjpuZXcoJHJlZmVyZW5jZSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZVVyaShVcmlJbnRlcmZhY2UgJGJhc2VVcmwsIFVyaUludGVyZmFjZSAkdXJsKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCRiYXNlVXJsLT5nZXRTY2hlbWUoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAvLyBub24tUkZDMzk4NiBiZWhhdmlvciBpbiBEYXJ0LVNhc3Mgd2hlbiByZXNvbHZpbmcgcmVsYXRpdmUgcmVmZXJlbmNlIHdpdGggYSBiYXNlIHVybCB3aXRoIG5vIGF1dGhvcml0eSBhbmQgYSByZWxhdGl2ZSBwYXRoICh3aGVyZSB0aGV5IGNvbnNpZGVyIHRoZSBiYXNlIHBhdGggYXMgYWJzb2x1dGUpCiAgICAgICAgICAgIGlmICgkYmFzZVVybC0+Z2V0QXV0aG9yaXR5KCkgPT09IG51bGwgJiYgJGJhc2VVcmwtPmdldFBhdGgoKSAhPT0gJycgJiYgJGJhc2VVcmwtPmdldFBhdGgoKVswXSAhPT0gJy8nICYmICR1cmwtPmdldFNjaGVtZSgpID09PSBudWxsICYmICR1cmwtPmdldEF1dGhvcml0eSgpID09PSBudWxsICYmICR1cmwtPmdldFBhdGgoKSAhPT0gJycgJiYgJHVybC0+Z2V0UGF0aCgpWzBdICE9PSAnLycpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjpyZXNvbHZlTGVhZ3VlVXJpKCRiYXNlVXJsLT53aXRoUGF0aCgnLycgLiAkYmFzZVVybC0+Z2V0UGF0aCgpKSwgJHVybCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBzZWxmOjpyZXNvbHZlTGVhZ3VlVXJpKCRiYXNlVXJsLCAkdXJsKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdXJsLT5nZXRTY2hlbWUoKSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHVybC0+d2l0aFBhdGgoVXJpU3RyaW5nOjpyZW1vdmVEb3RTZWdtZW50cygkdXJsLT5nZXRQYXRoKCkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYmFzZVVybC0+Z2V0QXV0aG9yaXR5KCkgIT09IG51bGwgfHwgJHVybC0+Z2V0QXV0aG9yaXR5KCkgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OnJlc29sdmVMZWFndWVVcmkoJGJhc2VVcmwtPndpdGhTY2hlbWUoJ3Njc3NwaHAtcmVzb2x2ZScpLCAkdXJsKS0+d2l0aFNjaGVtZShudWxsKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdXJsLT5nZXRQYXRoKCkgPT09ICcnKSB7CiAgICAgICAgICAgIGlmICgkdXJsLT5nZXRRdWVyeSgpICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJhc2VVcmwtPndpdGhRdWVyeSgkdXJsLT5nZXRRdWVyeSgpKS0+d2l0aEZyYWdtZW50KCR1cmwtPmdldEZyYWdtZW50KCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHVybC0+Z2V0RnJhZ21lbnQoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRiYXNlVXJsLT53aXRoRnJhZ21lbnQoJHVybC0+Z2V0RnJhZ21lbnQoKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkYmFzZVVybDsKICAgICAgICB9CgogICAgICAgIGlmICgkdXJsLT5nZXRQYXRoKClbMF0gPT09ICcvJykgewogICAgICAgICAgICByZXR1cm4gJHVybC0+d2l0aFBhdGgoVXJpU3RyaW5nOjpyZW1vdmVEb3RTZWdtZW50cygkdXJsLT5nZXRQYXRoKCkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYmFzZVVybC0+Z2V0UGF0aCgpID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gJHVybDsKICAgICAgICB9CgogICAgICAgIGlmICgkYmFzZVVybC0+Z2V0UGF0aCgpWzBdICE9PSAnLycpIHsKICAgICAgICAgICAgLy8gUHVyZSBwYXRoIHJlc29sdXRpb24gYmV0d2VlbiAyIHJlbGF0aXZlIHBhdGggVVJMcwogICAgICAgICAgICAkbWVyZ2VkUGF0aCA9IHNlbGY6Om5vcm1hbGl6ZVJlbGF0aXZlUGF0aChzZWxmOjptZXJnZVBhdGhzKCRiYXNlVXJsLT5nZXRQYXRoKCksICR1cmwtPmdldFBhdGgoKSkpOwoKICAgICAgICAgICAgcmV0dXJuICR1cmwtPndpdGhQYXRoKCRtZXJnZWRQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpyZXNvbHZlTGVhZ3VlVXJpKCRiYXNlVXJsLT53aXRoU2NoZW1lKCdzY3NzcGhwLXJlc29sdmUnKS0+d2l0aEhvc3QoJ2xvY2FsaG9zdCcpLCAkdXJsKS0+d2l0aFNjaGVtZShudWxsKS0+d2l0aEhvc3QobnVsbCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZUxlYWd1ZVVyaShVcmlJbnRlcmZhY2UgJGJhc2VVcmwsIFVyaUludGVyZmFjZSAkdXJsKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gQ3VzdG9tIGltcGxlbWVudGF0aW9ucyBvZiBVcmlJbnRlcmZhY2UgbWlnaHQgbm90IGltcGxlbWVudCB0aGUgcmVzb2x2ZSBtZXRob2QgeWV0LCB1bnRpbCB2ZXJzaW9uIDguMCBvZiB0aGUgaW50ZXJmYWNlLgogICAgICAgIGlmICghJGJhc2VVcmwgaW5zdGFuY2VvZiBVcmkgJiYgIW1ldGhvZF9leGlzdHMoJGJhc2VVcmwsICdyZXNvbHZlJykpIHsKICAgICAgICAgICAgJGJhc2VVcmwgPSBVcmk6Om5ldygkYmFzZVVybCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJhc2VVcmwtPnJlc29sdmUoJHVybCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbm9uLWVtcHR5LXN0cmluZyAkYmFzZQogICAgICogQHBhcmFtIG5vbi1lbXB0eS1zdHJpbmcgJHJlZmVyZW5jZQogICAgICoKICAgICAqIEByZXR1cm4gbm9uLWVtcHR5LXN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBtZXJnZVBhdGhzKHN0cmluZyAkYmFzZSwgc3RyaW5nICRyZWZlcmVuY2UpOiBzdHJpbmcKICAgIHsKICAgICAgICBcYXNzZXJ0KCRyZWZlcmVuY2VbMF0gIT09ICcvJyk7CgogICAgICAgICRiYXNlRW5kID0gc3RycnBvcygkYmFzZSwgJy8nKTsKCiAgICAgICAgaWYgKCRiYXNlRW5kID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gJHJlZmVyZW5jZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdWJzdHIoJGJhc2UsIDAsICRiYXNlRW5kICsgMSkgLiAkcmVmZXJlbmNlOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlcyBhbGwgYC5gIHNlZ21lbnRzIGFuZCBhbnkgbm9uLWxlYWRpbmcgYC4uYCBzZWdtZW50cy4KICAgICAqCiAgICAgKiBSZW1vdmluZyB0aGUgIi4uIiBmcm9tIGEgImJhci9mb28vLi4iIHNlcXVlbmNlIHJlc3VsdHMgaW4gImJhci8iCiAgICAgKiAodHJhaWxpbmcgIi8iKS4gSWYgdGhlIGVudGlyZSBwYXRoIGlzIHJlbW92ZWQgKGJlY2F1c2UgaXQgY29udGFpbnMgYXMKICAgICAqIG1hbnkgIi4uIiBzZWdtZW50cyBhcyByZWFsIHNlZ21lbnRzKSwgdGhlIHJlc3VsdCBpcyAiLi8iLgogICAgICogVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcsIHdoaWNoIHJlcHJlc2VudHMgIm5vIHBhdGgiCiAgICAgKiB3aGVuIHlvdSByZXNvbHZlIGl0IGFnYWluc3QgYSBiYXNlIFVSSSB3aXRoIGEgcGF0aCB3aXRoIGEgbm9uLWVtcHR5CiAgICAgKiBmaW5hbCBzZWdtZW50LgogICAgICoKICAgICAqIEBwYXJhbSBub24tZW1wdHktc3RyaW5nICRwYXRoCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChzdHJpbmcgJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBcYXNzZXJ0KCRwYXRoWzBdICE9PSAnLycpOwoKICAgICAgICBpZiAoJHBhdGhbMF0gIT09ICcuJyAmJiAhc3RyX2NvbnRhaW5zKCRwYXRoLCAnLy4nKSkgewogICAgICAgICAgICByZXR1cm4gJHBhdGg7CiAgICAgICAgfQoKICAgICAgICAkb3V0cHV0ID0gW107CiAgICAgICAgJGFwcGVuZFNsYXNoID0gZmFsc2U7CgogICAgICAgIGZvcmVhY2ggKGV4cGxvZGUoJy8nLCAkcGF0aCkgYXMgJHNlZ21lbnQpIHsKICAgICAgICAgICAgJGFwcGVuZFNsYXNoID0gZmFsc2U7CgogICAgICAgICAgICBpZiAoJy4uJyA9PT0gJHNlZ21lbnQpIHsKICAgICAgICAgICAgICAgIGlmICgkb3V0cHV0ICE9PSBbXSAmJiBMaXN0VXRpbDo6bGFzdCgkb3V0cHV0KSAhPT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkb3V0cHV0KTsKICAgICAgICAgICAgICAgICAgICAkYXBwZW5kU2xhc2ggPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkb3V0cHV0W10gPSAnLi4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJy4nID09PSAkc2VnbWVudCkgewogICAgICAgICAgICAgICAgJGFwcGVuZFNsYXNoID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRvdXRwdXRbXSA9ICRzZWdtZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJG91dHB1dCA9PT0gW10gfHwgJG91dHB1dCA9PT0gWycnXSkgewogICAgICAgICAgICByZXR1cm4gJy4vJzsKICAgICAgICB9CgogICAgICAgIGlmICgkYXBwZW5kU2xhc2ggfHwgTGlzdFV0aWw6Omxhc3QoJG91dHB1dCkgPT09ICcuLicpIHsKICAgICAgICAgICAgJG91dHB1dFtdID0gJyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLycsICRvdXRwdXQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/CalculationOperation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxTZXJpYWxpemVyXFNlcmlhbGl6ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxFcXVhdGFibGU7CgovKioKICogQSBiaW5hcnkgb3BlcmF0aW9uIHRoYXQgY2FuIGFwcGVhciBpbiBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0uCiAqLwpmaW5hbCBjbGFzcyBDYWxjdWxhdGlvbk9wZXJhdGlvbiBpbXBsZW1lbnRzIEVxdWF0YWJsZSwgXFN0cmluZ2FibGUKewogICAgcHJpdmF0ZSByZWFkb25seSBDYWxjdWxhdGlvbk9wZXJhdG9yICRvcGVyYXRvcjsKCiAgICAvKioKICAgICAqIFRoZSBsZWZ0LWhhbmQgb3BlcmFuZC4KICAgICAqCiAgICAgKiBUaGlzIGlzIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuIHVucXVvdGVkCiAgICAgKiB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0ICRsZWZ0OwoKICAgIC8qKgogICAgICogVGhlIHJpZ2h0LWhhbmQgb3BlcmFuZC4KICAgICAqCiAgICAgKiBUaGlzIGlzIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuIHVucXVvdGVkCiAgICAgKiB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0ICRyaWdodDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ2FsY3VsYXRpb25PcGVyYXRvciAkb3BlcmF0b3IsIG9iamVjdCAkbGVmdCwgb2JqZWN0ICRyaWdodCkKICAgIHsKICAgICAgICAkdGhpcy0+b3BlcmF0b3IgPSAkb3BlcmF0b3I7CiAgICAgICAgJHRoaXMtPmxlZnQgPSAkbGVmdDsKICAgICAgICAkdGhpcy0+cmlnaHQgPSAkcmlnaHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9wZXJhdG9yKCk6IENhbGN1bGF0aW9uT3BlcmF0b3IKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9wZXJhdG9yOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZWZ0KCk6IG9iamVjdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGVmdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmlnaHQoKTogb2JqZWN0CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yaWdodDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgYXNzZXJ0KCR0aGlzLT5sZWZ0IGluc3RhbmNlb2YgRXF1YXRhYmxlKTsKICAgICAgICBhc3NlcnQoJHRoaXMtPnJpZ2h0IGluc3RhbmNlb2YgRXF1YXRhYmxlKTsKCiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIENhbGN1bGF0aW9uT3BlcmF0aW9uICYmICR0aGlzLT5vcGVyYXRvciA9PT0gJG90aGVyLT5vcGVyYXRvciAmJiAkdGhpcy0+bGVmdC0+ZXF1YWxzKCRvdGhlci0+bGVmdCkgJiYgJHRoaXMtPnJpZ2h0LT5lcXVhbHMoJG90aGVyLT5yaWdodCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHBhcmVudGhlc2l6ZWQgPSBTZXJpYWxpemVyOjpzZXJpYWxpemVWYWx1ZShTYXNzQ2FsY3VsYXRpb246OnVuc2ltcGxpZmllZCgnJywgWyR0aGlzXSksIHRydWUpOwoKICAgICAgICByZXR1cm4gc3Vic3RyKCRwYXJlbnRoZXNpemVkLCAxLCBcc3RybGVuKCRwYXJlbnRoZXNpemVkKSAtIDIpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/CalculationOperator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKLyoqCiAqIEFuIGVudW1lcmF0aW9uIG9mIHBvc3NpYmxlIG9wZXJhdG9ycyBmb3Ige0BzZWUgQ2FsY3VsYXRpb25PcGVyYXRpb259LgogKi8KZW51bSBDYWxjdWxhdGlvbk9wZXJhdG9yCnsKICAgIGNhc2UgUExVUzsKICAgIGNhc2UgTUlOVVM7CiAgICBjYXNlIFRJTUVTOwogICAgY2FzZSBESVZJREVEX0JZOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcGVyYXRvcigpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gbWF0Y2ggKCR0aGlzKSB7CiAgICAgICAgICAgIHNlbGY6OlBMVVMgPT4gJysnLAogICAgICAgICAgICBzZWxmOjpNSU5VUyA9PiAnLScsCiAgICAgICAgICAgIHNlbGY6OlRJTUVTID0+ICcqJywKICAgICAgICAgICAgc2VsZjo6RElWSURFRF9CWSA9PiAnLycsCiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBwcmVjZWRlbmNlIG9mIHRoZSBvcGVyYXRvcgogICAgICoKICAgICAqIEFuIG9wZXJhdG9yIHdpdGggaGlnaGVyIHByZWNlZGVuY2UgYmluZHMgdGlnaHRlci4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByZWNlZGVuY2UoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcykgewogICAgICAgICAgICBzZWxmOjpQTFVTLCBzZWxmOjpNSU5VUyA9PiAxLAogICAgICAgICAgICBzZWxmOjpUSU1FUywgc2VsZjo6RElWSURFRF9CWSA9PiAyLAogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/ColorFormat.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIEppcmlQdWRpbFxTZWFsZWRDbGFzc2VzXFNlYWxlZDsKCi8qKgogKiBAaW50ZXJuYWwKICovCiNbU2VhbGVkKHBlcm1pdHM6IFtDb2xvckZvcm1hdEVudW06OmNsYXNzLCBTcGFuQ29sb3JGb3JtYXQ6OmNsYXNzXSldCmludGVyZmFjZSBDb2xvckZvcm1hdAp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/ColorFormatEnum.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZW51bSBDb2xvckZvcm1hdEVudW0gaW1wbGVtZW50cyBDb2xvckZvcm1hdAp7CiAgICAvKioKICAgICAqIEEgY29sb3IgZGVmaW5lZCB1c2luZyB0aGUgYHJnYigpYCBvciBgcmdiYSgpYCBmdW5jdGlvbnMuCiAgICAgKi8KICAgIGNhc2UgcmdiRnVuY3Rpb247CiAgICAvKioKICAgICAqIEEgY29sb3IgZGVmaW5lZCB1c2luZyB0aGUgYGhzbCgpYCBvciBgaHNsYSgpYCBmdW5jdGlvbnMuCiAgICAgKi8KICAgIGNhc2UgaHNsRnVuY3Rpb247Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/ComplexSassNumber.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKLyoqCiAqIEEgc3BlY2lhbGl6ZWQgc3ViY2xhc3Mgb2Yge0BzZWUgU2Fzc051bWJlcn0gZm9yIG51bWJlcnMgdGhhdCBhcmUgbmVpdGhlciB7QHNlZSBVbml0bGVzc1Nhc3NOdW1iZXJ9IG5vciB7QHNlZSBTaW5nbGVVbml0U2Fzc051bWJlcn0uCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ29tcGxleFNhc3NOdW1iZXIgZXh0ZW5kcyBTYXNzTnVtYmVyCnsKICAgIC8qKgogICAgICogQHZhciBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAkbnVtZXJhdG9yVW5pdHM7CgogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRkZW5vbWluYXRvclVuaXRzOwoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgJG51bWVyYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAkZGVub21pbmF0b3JVbml0cwogICAgICogQHBhcmFtIGFycmF5e1Nhc3NOdW1iZXIsIFNhc3NOdW1iZXJ9fG51bGwgJGFzU2xhc2gKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGZsb2F0ICR2YWx1ZSwgYXJyYXkgJG51bWVyYXRvclVuaXRzLCBhcnJheSAkZGVub21pbmF0b3JVbml0cywgP2FycmF5ICRhc1NsYXNoID0gbnVsbCkKICAgIHsKICAgICAgICBhc3NlcnQoXGNvdW50KCRudW1lcmF0b3JVbml0cykgPiAxIHx8IFxjb3VudCgkZGVub21pbmF0b3JVbml0cykgPiAwKTsKCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkdmFsdWUsICRhc1NsYXNoKTsKICAgICAgICAkdGhpcy0+bnVtZXJhdG9yVW5pdHMgPSAkbnVtZXJhdG9yVW5pdHM7CiAgICAgICAgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMgPSAkZGVub21pbmF0b3JVbml0czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtZXJhdG9yVW5pdHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bWVyYXRvclVuaXRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZW5vbWluYXRvclVuaXRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kZW5vbWluYXRvclVuaXRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNVbml0cygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NvbXBsZXhVbml0cygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc1VuaXQoc3RyaW5nICR1bml0KTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGF0aWJsZVdpdGhVbml0KHN0cmluZyAkdW5pdCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Bvc3NpYmx5Q29tcGF0aWJsZVVuaXRzKFNhc3NOdW1iZXIgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIC8vIFRoaXMgbG9naWMgaXMgd2VsbC1kZWZpbmVkLCBhbmQgd2UgY291bGQgaW1wbGVtZW50IGl0IGluIHByaW5jaXBsZS4KICAgICAgICAvLyBIb3dldmVyLCBpdCB3b3VsZCBiZSBmYWlybHkgY29tcGxleCBhbmQgdGhlcmUncyBubyBjbGVhciBuZWVkIGZvciBpdCB5ZXQuCiAgICAgICAgdGhyb3cgbmV3IFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uKF9fTUVUSE9EX18gLiAnaXMgbm90IGltcGxlbWVudGVkLicpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB3aXRoVmFsdWUoZmxvYXQgJHZhbHVlKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUsICR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU2xhc2goU2Fzc051bWJlciAkbnVtZXJhdG9yLCBTYXNzTnVtYmVyICRkZW5vbWluYXRvcik6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHRoaXMtPmdldFZhbHVlKCksICR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMsIGFycmF5KCRudW1lcmF0b3IsICRkZW5vbWluYXRvcikpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/ListSeparator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKLyoqCiAqIEFuIGVudW0gb2YgbGlzdCBzZXBhcmF0b3IgdHlwZXMuCiAqLwplbnVtIExpc3RTZXBhcmF0b3IKewogICAgY2FzZSBDT01NQTsKICAgIGNhc2UgU1BBQ0U7CiAgICBjYXNlIFNMQVNIOwogICAgY2FzZSBVTkRFQ0lERUQ7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlcGFyYXRvcigpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIG1hdGNoICgkdGhpcykgewogICAgICAgICAgICBzZWxmOjpDT01NQSA9PiAnLCcsCiAgICAgICAgICAgIHNlbGY6OlNQQUNFID0+ICcgJywKICAgICAgICAgICAgc2VsZjo6U0xBU0ggPT4gJy8nLAogICAgICAgICAgICBzZWxmOjpVTkRFQ0lERUQgPT4gbnVsbCwKICAgICAgICB9OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassArgumentList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKLyoqCiAqIEEgU2Fzc1NjcmlwdCBhcmd1bWVudCBsaXN0LgogKgogKiBBbiBhcmd1bWVudCBsaXN0IGNvbWVzIGZyb20gYSByZXN0IGFyZ3VtZW50LiBJdCdzIGRpc3RpbmN0IGZyb20gYSBub3JtYWwKICoge0BzZWUgU2Fzc0xpc3R9IGluIHRoYXQgaXQgbWF5IGNvbnRhaW4gYSBrZXl3b3JkIG1hcCBhcyB3ZWxsIGFzIHRoZSBwb3NpdGlvbmFsCiAqIGFyZ3VtZW50cy4KICovCmZpbmFsIGNsYXNzIFNhc3NBcmd1bWVudExpc3QgZXh0ZW5kcyBTYXNzTGlzdAp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBWYWx1ZT4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBhcnJheSAka2V5d29yZHM7CgogICAgcHJpdmF0ZSBib29sICRrZXl3b3JkQWNjZXNzZWQgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFNhc3NBcmd1bWVudExpc3QgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRjb250ZW50cwogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgVmFsdWU+ICRrZXl3b3JkcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGNvbnRlbnRzLCBhcnJheSAka2V5d29yZHMsIExpc3RTZXBhcmF0b3IgJHNlcGFyYXRvcikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRjb250ZW50cywgJHNlcGFyYXRvcik7CiAgICAgICAgJHRoaXMtPmtleXdvcmRzID0gJGtleXdvcmRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIFZhbHVlPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5d29yZHMoKTogYXJyYXkKICAgIHsKICAgICAgICAkdGhpcy0+a2V5d29yZEFjY2Vzc2VkID0gdHJ1ZTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5rZXl3b3JkczsKICAgIH0KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2VyZUtleXdvcmRBY2Nlc3NlZCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5rZXl3b3JkQWNjZXNzZWQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassBoolean.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKCi8qKgogKiBBIFNhc3NTY3JpcHQgYm9vbGVhbiB2YWx1ZS4KICovCmZpbmFsIGNsYXNzIFNhc3NCb29sZWFuIGV4dGVuZHMgVmFsdWUKewogICAgcHJpdmF0ZSBzdGF0aWMgU2Fzc0Jvb2xlYW4gJHRydWVJbnN0YW5jZTsKCiAgICBwcml2YXRlIHN0YXRpYyBTYXNzQm9vbGVhbiAkZmFsc2VJbnN0YW5jZTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJHZhbHVlOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKGJvb2wgJHZhbHVlKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICBpZiAoJHZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokdHJ1ZUluc3RhbmNlID8/PSBuZXcgc2VsZih0cnVlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjokZmFsc2VJbnN0YW5jZSA/Pz0gbmV3IHNlbGYoZmFsc2UpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYm9vbCAkdmFsdWUpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNUcnV0aHkoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChWYWx1ZVZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdEJvb2xlYW4oJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRCb29sZWFuKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHVuYXJ5Tm90KCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZSghJHRoaXMtPnZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCEkb3RoZXIgaW5zdGFuY2VvZiBTYXNzQm9vbGVhbikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlID09PSAkb3RoZXItPnZhbHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassCalculation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxEZXByZWNhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXENoYXJhY3RlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVxdWF0YWJsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXE51bWJlclV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTdHJpbmdVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcVmFsdWVWaXNpdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFdhcm47CgovKioKICogQSBTYXNzU2NyaXB0IGNhbGN1bGF0aW9uLgogKgogKiBBbHRob3VnaCBjYWxjdWxhdGlvbnMgY2FuIGluIHByaW5jaXBsZSBoYXZlIGFueSBuYW1lIG9yIGFueSBudW1iZXIgb2YKICogYXJndW1lbnRzLCB0aGlzIGNsYXNzIG9ubHkgZXhwb3NlcyB0aGUgc3BlY2lmaWMgY2FsY3VsYXRpb25zIHRoYXQgYXJlCiAqIHN1cHBvcnRlZCBieSB0aGUgU2FzcyBzcGVjLiBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgY2FsY3VsYXRpb25zIHRoYXQgdGhlIHVzZXIKICogd29ya3Mgd2l0aCBhcmUgYWx3YXlzIGZ1bGx5IHNpbXBsaWZpZWQuCiAqLwpmaW5hbCBjbGFzcyBTYXNzQ2FsY3VsYXRpb24gZXh0ZW5kcyBWYWx1ZQp7CiAgICAvKioKICAgICAqIFRoZSBjYWxjdWxhdGlvbidzIG5hbWUsIHN1Y2ggYXMgYCJjYWxjImAuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICRuYW1lOwoKICAgIC8qKgogICAgICogVGhlIGNhbGN1bGF0aW9uJ3MgYXJndW1lbnRzLgogICAgICoKICAgICAqIEVhY2ggYXJndW1lbnQgaXMgZWl0aGVyIGEge0BzZWUgU2Fzc051bWJlcn0sIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufSwgYW4gdW5xdW90ZWQKICAgICAqIHtAc2VlIFNhc3NTdHJpbmd9LCBvciBhIHtAc2VlIENhbGN1bGF0aW9uT3BlcmF0aW9ufS4KICAgICAqCiAgICAgKiBAdmFyIGxpc3Q8b2JqZWN0PgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRhcmd1bWVudHM7CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IGNhbGN1bGF0aW9uIHdpdGggdGhlIGdpdmVuICRuYW1lIGFuZCAkYXJndW1lbnRzCiAgICAgKiB0aGF0IHdpbGwgbm90IGJlIHNpbXBsaWZpZWQuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8b2JqZWN0PiAkYXJndW1lbnRzCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdW5zaW1wbGlmaWVkKHN0cmluZyAkbmFtZSwgYXJyYXkgJGFyZ3VtZW50cyk6IFNhc3NDYWxjdWxhdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgU2Fzc0NhbGN1bGF0aW9uKCRuYW1lLCAkYXJndW1lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBgY2FsYygpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnQuCiAgICAgKgogICAgICogVGhlICRhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWxjKG9iamVjdCAkYXJndW1lbnQpOiBWYWx1ZQogICAgewogICAgICAgICRhcmd1bWVudCA9IHNlbGY6OnNpbXBsaWZ5KCRhcmd1bWVudCk7CgogICAgICAgIGlmICgkYXJndW1lbnQgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkYXJndW1lbnQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGFyZ3VtZW50IGluc3RhbmNlb2YgU2Fzc0NhbGN1bGF0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiAkYXJndW1lbnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbignY2FsYycsIFskYXJndW1lbnRdKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBgbWluKClgIGNhbGN1bGF0aW9uIHdpdGggdGhlIGdpdmVuICRhcmd1bWVudHMuCiAgICAgKgogICAgICogRWFjaCBhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uIEl0IG11c3QgYmUgcGFzc2VkIGF0CiAgICAgKiBsZWFzdCBvbmUgYXJndW1lbnQuCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxvYmplY3Q+ICRhcmd1bWVudHMKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtaW4oYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGFyZ3MgPSBzZWxmOjpzaW1wbGlmeUFyZ3VtZW50cygkYXJndW1lbnRzKTsKCiAgICAgICAgaWYgKCEkYXJncykgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignbWluKCkgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4nKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIFNhc3NOdW1iZXJ8bnVsbCAkbWluaW11bSAqLwogICAgICAgICRtaW5pbXVtID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJGFyZ3MgYXMgJGFyZykgewogICAgICAgICAgICBpZiAoISRhcmcgaW5zdGFuY2VvZiBTYXNzTnVtYmVyIHx8ICRtaW5pbXVtICE9PSBudWxsICYmICEkbWluaW11bS0+aXNDb21wYXJhYmxlVG8oJGFyZykpIHsKICAgICAgICAgICAgICAgICRtaW5pbXVtID0gbnVsbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG1pbmltdW0gPT09IG51bGwgfHwgJG1pbmltdW0tPmdyZWF0ZXJUaGFuKCRhcmcpLT5pc1RydXRoeSgpKSB7CiAgICAgICAgICAgICAgICAkbWluaW11bSA9ICRhcmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkbWluaW11bSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJG1pbmltdW07CiAgICAgICAgfQoKICAgICAgICBzZWxmOjp2ZXJpZnlDb21wYXRpYmxlTnVtYmVycygkYXJncyk7CgogICAgICAgIHJldHVybiBuZXcgU2Fzc0NhbGN1bGF0aW9uKCdtaW4nLCAkYXJncyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgYG1heCgpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnRzLgogICAgICoKICAgICAqIEVhY2ggYXJndW1lbnQgbXVzdCBiZSBlaXRoZXIgYSB7QHNlZSBTYXNzTnVtYmVyfSwgYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LCBhbgogICAgICogdW5xdW90ZWQge0BzZWUgU2Fzc1N0cmluZ30sIG9yIGEge0BzZWUgQ2FsY3VsYXRpb25PcGVyYXRpb259LiBJdCBtdXN0IGJlIHBhc3NlZCBhdAogICAgICogbGVhc3Qgb25lIGFyZ3VtZW50LgogICAgICoKICAgICAqIFRoaXMgYXV0b21hdGljYWxseSBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiwgc28gaXQgbWF5IHJldHVybiBhCiAgICAgKiB7QHNlZSBTYXNzTnVtYmVyfSByYXRoZXIgdGhhbiBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0uIEl0IHRocm93cyBhbiBleGNlcHRpb24gaWYgaXQKICAgICAqIGNhbiBkZXRlcm1pbmUgdGhhdCB0aGUgY2FsY3VsYXRpb24gd2lsbCBkZWZpbml0ZWx5IHByb2R1Y2UgaW52YWxpZCBDU1MuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8b2JqZWN0PiAkYXJndW1lbnRzCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWF4KGFycmF5ICRhcmd1bWVudHMpOiBWYWx1ZQogICAgewogICAgICAgICRhcmdzID0gc2VsZjo6c2ltcGxpZnlBcmd1bWVudHMoJGFyZ3VtZW50cyk7CgogICAgICAgIGlmICghJGFyZ3MpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ21heCgpIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYXJndW1lbnQuJyk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBTYXNzTnVtYmVyfG51bGwgJG1heGltdW0gKi8KICAgICAgICAkbWF4aW11bSA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCRhcmdzIGFzICRhcmcpIHsKICAgICAgICAgICAgaWYgKCEkYXJnIGluc3RhbmNlb2YgU2Fzc051bWJlciB8fCAkbWF4aW11bSAhPT0gbnVsbCAmJiAhJG1heGltdW0tPmlzQ29tcGFyYWJsZVRvKCRhcmcpKSB7CiAgICAgICAgICAgICAgICAkbWF4aW11bSA9IG51bGw7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRtYXhpbXVtID09PSBudWxsIHx8ICRtYXhpbXVtLT5sZXNzVGhhbigkYXJnKS0+aXNUcnV0aHkoKSkgewogICAgICAgICAgICAgICAgJG1heGltdW0gPSAkYXJnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJG1heGltdW0gIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRtYXhpbXVtOwogICAgICAgIH0KCiAgICAgICAgc2VsZjo6dmVyaWZ5Q29tcGF0aWJsZU51bWJlcnMoJGFyZ3MpOwoKICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbignbWF4JywgJGFyZ3MpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGBoeXBvdCgpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnRzLgogICAgICoKICAgICAqIEVhY2ggYXJndW1lbnQgbXVzdCBiZSBlaXRoZXIgYSB7QHNlZSBTYXNzTnVtYmVyfSwgYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LCBhbgogICAgICogdW5xdW90ZWQge0BzZWUgU2Fzc1N0cmluZ30sIG9yIGEge0BzZWUgQ2FsY3VsYXRpb25PcGVyYXRpb259LiBJdCBtdXN0IGJlIHBhc3NlZCBhdAogICAgICogbGVhc3Qgb25lIGFyZ3VtZW50LgogICAgICoKICAgICAqIFRoaXMgYXV0b21hdGljYWxseSBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiwgc28gaXQgbWF5IHJldHVybiBhCiAgICAgKiB7QHNlZSBTYXNzTnVtYmVyfSByYXRoZXIgdGhhbiBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0uIEl0IHRocm93cyBhbiBleGNlcHRpb24gaWYgaXQKICAgICAqIGNhbiBkZXRlcm1pbmUgdGhhdCB0aGUgY2FsY3VsYXRpb24gd2lsbCBkZWZpbml0ZWx5IHByb2R1Y2UgaW52YWxpZCBDU1MuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8b2JqZWN0PiAkYXJndW1lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaHlwb3QoYXJyYXkgJGFyZ3VtZW50cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGFyZ3MgPSBzZWxmOjpzaW1wbGlmeUFyZ3VtZW50cygkYXJndW1lbnRzKTsKCiAgICAgICAgaWYgKCEkYXJncykgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignaHlwb3QoKSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LicpOwogICAgICAgIH0KCiAgICAgICAgc2VsZjo6dmVyaWZ5Q29tcGF0aWJsZU51bWJlcnMoJGFyZ3MpOwoKICAgICAgICAkc3ViVG90YWwgPSAwLjA7CiAgICAgICAgJGZpcnN0ID0gJGFyZ3NbMF07CgogICAgICAgIGlmICghJGZpcnN0IGluc3RhbmNlb2YgU2Fzc051bWJlciB8fCAkZmlyc3QtPmhhc1VuaXQoJyUnKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbignaHlwb3QnLCAkYXJncyk7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkYXJncyBhcyAkaSA9PiAkbnVtYmVyKSB7CiAgICAgICAgICAgIGlmICghJG51bWJlciBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgfHwgISRudW1iZXItPmhhc0NvbXBhdGlibGVVbml0cygkZmlyc3QpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbignaHlwb3QnLCAkYXJncyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzYXNzSW5kZXggPSAkaSArIDE7CiAgICAgICAgICAgICR2YWx1ZSA9ICRudW1iZXItPmNvbnZlcnRWYWx1ZVRvTWF0Y2goJGZpcnN0LCAibnVtYmVyWyRzYXNzSW5kZXhdIiwgJ251bWJlcnNbMV0nKTsKICAgICAgICAgICAgJHN1YlRvdGFsICs9ICR2YWx1ZSAqICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjp3aXRoVW5pdHMoc3FydCgkc3ViVG90YWwpLCAkZmlyc3QtPmdldE51bWVyYXRvclVuaXRzKCksICRmaXJzdC0+Z2V0RGVub21pbmF0b3JVbml0cygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBgc3FydCgpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnQuCiAgICAgKgogICAgICogVGhlICRhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzcXJ0KG9iamVjdCAkYXJndW1lbnQpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpzaW5nbGVBcmd1bWVudCgnc3FydCcsICRhcmd1bWVudCwgTnVtYmVyVXRpbDo6Y2xhc3MgLiAnOjpzcXJ0JywgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgYHNpbigpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnQuCiAgICAgKgogICAgICogVGhlICRhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaW4ob2JqZWN0ICRhcmd1bWVudCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OnNpbmdsZUFyZ3VtZW50KCdzaW4nLCAkYXJndW1lbnQsIE51bWJlclV0aWw6OmNsYXNzIC4gJzo6c2luJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgYGNvcygpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnQuCiAgICAgKgogICAgICogVGhlICRhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb3Mob2JqZWN0ICRhcmd1bWVudCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OnNpbmdsZUFyZ3VtZW50KCdjb3MnLCAkYXJndW1lbnQsIE51bWJlclV0aWw6OmNsYXNzIC4gJzo6Y29zJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgYHRhbigpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnQuCiAgICAgKgogICAgICogVGhlICRhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0YW4ob2JqZWN0ICRhcmd1bWVudCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OnNpbmdsZUFyZ3VtZW50KCd0YW4nLCAkYXJndW1lbnQsIE51bWJlclV0aWw6OmNsYXNzIC4gJzo6dGFuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGFuIGBhdGFuKClgIGNhbGN1bGF0aW9uIHdpdGggdGhlIGdpdmVuICRhcmd1bWVudC4KICAgICAqCiAgICAgKiBUaGUgJGFyZ3VtZW50IG11c3QgYmUgZWl0aGVyIGEge0BzZWUgU2Fzc051bWJlcn0sIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufSwgYW4KICAgICAqIHVucXVvdGVkIHtAc2VlIFNhc3NTdHJpbmd9LCBvciBhIHtAc2VlIENhbGN1bGF0aW9uT3BlcmF0aW9ufS4KICAgICAqCiAgICAgKiBUaGlzIGF1dG9tYXRpY2FsbHkgc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24sIHNvIGl0IG1heSByZXR1cm4gYQogICAgICoge0BzZWUgU2Fzc051bWJlcn0gcmF0aGVyIHRoYW4gYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LiBJdCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGl0CiAgICAgKiBjYW4gZGV0ZXJtaW5lIHRoYXQgdGhlIGNhbGN1bGF0aW9uIHdpbGwgZGVmaW5pdGVseSBwcm9kdWNlIGludmFsaWQgQ1NTLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGF0YW4ob2JqZWN0ICRhcmd1bWVudCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OnNpbmdsZUFyZ3VtZW50KCdhdGFuJywgJGFyZ3VtZW50LCBOdW1iZXJVdGlsOjpjbGFzcyAuICc6OmF0YW4nLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYW4gYGFzaW4oKWAgY2FsY3VsYXRpb24gd2l0aCB0aGUgZ2l2ZW4gJGFyZ3VtZW50LgogICAgICoKICAgICAqIFRoZSAkYXJndW1lbnQgbXVzdCBiZSBlaXRoZXIgYSB7QHNlZSBTYXNzTnVtYmVyfSwgYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LCBhbgogICAgICogdW5xdW90ZWQge0BzZWUgU2Fzc1N0cmluZ30sIG9yIGEge0BzZWUgQ2FsY3VsYXRpb25PcGVyYXRpb259LgogICAgICoKICAgICAqIFRoaXMgYXV0b21hdGljYWxseSBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiwgc28gaXQgbWF5IHJldHVybiBhCiAgICAgKiB7QHNlZSBTYXNzTnVtYmVyfSByYXRoZXIgdGhhbiBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0uIEl0IHRocm93cyBhbiBleGNlcHRpb24gaWYgaXQKICAgICAqIGNhbiBkZXRlcm1pbmUgdGhhdCB0aGUgY2FsY3VsYXRpb24gd2lsbCBkZWZpbml0ZWx5IHByb2R1Y2UgaW52YWxpZCBDU1MuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXNpbihvYmplY3QgJGFyZ3VtZW50KTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6c2luZ2xlQXJndW1lbnQoJ2FzaW4nLCAkYXJndW1lbnQsIE51bWJlclV0aWw6OmNsYXNzIC4gJzo6YXNpbicsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhbiBgYWNvcygpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnQuCiAgICAgKgogICAgICogVGhlICRhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhY29zKG9iamVjdCAkYXJndW1lbnQpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpzaW5nbGVBcmd1bWVudCgnYWNvcycsICRhcmd1bWVudCwgTnVtYmVyVXRpbDo6Y2xhc3MgLiAnOjphY29zJywgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGFuIGBhYnMoKWAgY2FsY3VsYXRpb24gd2l0aCB0aGUgZ2l2ZW4gJGFyZ3VtZW50LgogICAgICoKICAgICAqIFRoZSAkYXJndW1lbnQgbXVzdCBiZSBlaXRoZXIgYSB7QHNlZSBTYXNzTnVtYmVyfSwgYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LCBhbgogICAgICogdW5xdW90ZWQge0BzZWUgU2Fzc1N0cmluZ30sIG9yIGEge0BzZWUgQ2FsY3VsYXRpb25PcGVyYXRpb259LgogICAgICoKICAgICAqIFRoaXMgYXV0b21hdGljYWxseSBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiwgc28gaXQgbWF5IHJldHVybiBhCiAgICAgKiB7QHNlZSBTYXNzTnVtYmVyfSByYXRoZXIgdGhhbiBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0uIEl0IHRocm93cyBhbiBleGNlcHRpb24gaWYgaXQKICAgICAqIGNhbiBkZXRlcm1pbmUgdGhhdCB0aGUgY2FsY3VsYXRpb24gd2lsbCBkZWZpbml0ZWx5IHByb2R1Y2UgaW52YWxpZCBDU1MuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWJzKG9iamVjdCAkYXJndW1lbnQpOiBWYWx1ZQogICAgewogICAgICAgICRhcmd1bWVudCA9IHNlbGY6OnNpbXBsaWZ5KCRhcmd1bWVudCk7CgogICAgICAgIGlmICghJGFyZ3VtZW50IGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbignYWJzJywgWyRhcmd1bWVudF0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhcmd1bWVudC0+aGFzVW5pdCgnJScpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gPDw8V0FSTklORwpQYXNzaW5nIHBlcmNlbnRhZ2UgdW5pdHMgdG8gdGhlIGdsb2JhbCBhYnMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgpJbiB0aGUgZnV0dXJlLCB0aGlzIHdpbGwgZW1pdCBhIENTUyBhYnMoKSBmdW5jdGlvbiB0byBiZSByZXNvbHZlZCBieSB0aGUgYnJvd3Nlci4KVG8gcHJlc2VydmUgY3VycmVudCBiZWhhdmlvcjogbWF0aC5hYnMoJGFyZ3VtZW50KQoKVG8gZW1pdCBhIENTUyBhYnMoKSBub3c6IGFicygje3skYXJndW1lbnR9fSkKTW9yZSBpbmZvOiBodHRwczovL3Nhc3MtbGFuZy5jb20vZC9hYnMtcGVyY2VudApXQVJOSU5HOwoKICAgICAgICAgICAgV2Fybjo6Zm9yRGVwcmVjYXRpb24oJG1lc3NhZ2UsIERlcHJlY2F0aW9uOjphYnNQZXJjZW50KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBOdW1iZXJVdGlsOjphYnMoJGFyZ3VtZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYW4gYGV4cCgpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnQuCiAgICAgKgogICAgICogVGhlICRhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHAob2JqZWN0ICRhcmd1bWVudCk6IFZhbHVlCiAgICB7CiAgICAgICAgJGFyZ3VtZW50ID0gc2VsZjo6c2ltcGxpZnkoJGFyZ3VtZW50KTsKCiAgICAgICAgaWYgKCEkYXJndW1lbnQgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc0NhbGN1bGF0aW9uKCdleHAnLCBbJGFyZ3VtZW50XSk7CiAgICAgICAgfQoKICAgICAgICAkYXJndW1lbnQtPmFzc2VydE5vVW5pdHMoKTsKCiAgICAgICAgcmV0dXJuIE51bWJlclV0aWw6OnBvdyhTYXNzTnVtYmVyOjpjcmVhdGUoTV9FKSwgJGFyZ3VtZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBgc2lnbigpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkYXJndW1lbnQuCiAgICAgKgogICAgICogVGhlICRhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaWduKG9iamVjdCAkYXJndW1lbnQpOiBWYWx1ZQogICAgewogICAgICAgICRhcmd1bWVudCA9IHNlbGY6OnNpbXBsaWZ5KCRhcmd1bWVudCk7CgogICAgICAgIGlmICghJGFyZ3VtZW50IGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbignc2lnbicsIFskYXJndW1lbnRdKTsKICAgICAgICB9CgogICAgICAgIGlmICghJGFyZ3VtZW50LT5oYXNVbml0cygpICYmIChpc19uYW4oJGFyZ3VtZW50LT5nZXRWYWx1ZSgpKSB8fCAkYXJndW1lbnQtPmdldFZhbHVlKCkgPT09IDAuMCkpIHsKICAgICAgICAgICAgcmV0dXJuICRhcmd1bWVudDsKICAgICAgICB9CgogICAgICAgIGlmICghJGFyZ3VtZW50LT5oYXNVbml0KCclJykpIHsKICAgICAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZShOdW1iZXJVdGlsOjpzaWduKCRhcmd1bWVudC0+Z2V0VmFsdWUoKSkpLT5jb2VyY2VUb01hdGNoKCRhcmd1bWVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbignc2lnbicsIFskYXJndW1lbnRdKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBgY2xhbXAoKWAgY2FsY3VsYXRpb24gd2l0aCB0aGUgZ2l2ZW4gJG1pbiwgJHZhbHVlLCBhbmQgJG1heC4KICAgICAqCiAgICAgKiBFYWNoIGFyZ3VtZW50IG11c3QgYmUgZWl0aGVyIGEge0BzZWUgU2Fzc051bWJlcn0sIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufSwgYW4KICAgICAqIHVucXVvdGVkIHtAc2VlIFNhc3NTdHJpbmd9LCBvciBhIHtAc2VlIENhbGN1bGF0aW9uT3BlcmF0aW9ufS4KICAgICAqCiAgICAgKiBUaGlzIGF1dG9tYXRpY2FsbHkgc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24sIHNvIGl0IG1heSByZXR1cm4gYQogICAgICoge0BzZWUgU2Fzc051bWJlcn0gcmF0aGVyIHRoYW4gYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LiBJdCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGl0CiAgICAgKiBjYW4gZGV0ZXJtaW5lIHRoYXQgdGhlIGNhbGN1bGF0aW9uIHdpbGwgZGVmaW5pdGVseSBwcm9kdWNlIGludmFsaWQgQ1NTLgogICAgICoKICAgICAqIFRoaXMgbWF5IGJlIHBhc3NlZCBmZXdlciB0aGFuIHRocmVlIGFyZ3VtZW50cywgYnV0IG9ubHkgaWYgb25lIG9mIHRoZQogICAgICogYXJndW1lbnRzIGlzIGFuIHVucXVvdGVkIGB2YXIoKWAgc3RyaW5nLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNsYW1wKG9iamVjdCAkbWluLCA/b2JqZWN0ICR2YWx1ZSA9IG51bGwsID9vYmplY3QgJG1heCA9IG51bGwpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkdmFsdWUgPT09IG51bGwgJiYgJG1heCAhPT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSWYgdmFsdWUgaXMgbnVsbCwgbWF4IG11c3QgYWxzbyBiZSBudWxsLicpOwogICAgICAgIH0KCiAgICAgICAgJG1pbiA9IHNlbGY6OnNpbXBsaWZ5KCRtaW4pOwoKICAgICAgICBpZiAoJHZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IHNlbGY6OnNpbXBsaWZ5KCR2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG1heCAhPT0gbnVsbCkgewogICAgICAgICAgICAkbWF4ID0gc2VsZjo6c2ltcGxpZnkoJG1heCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG1pbiBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgJiYgJHZhbHVlIGluc3RhbmNlb2YgU2Fzc051bWJlciAmJiAkbWF4IGluc3RhbmNlb2YgU2Fzc051bWJlciAmJiAkbWluLT5oYXNDb21wYXRpYmxlVW5pdHMoJHZhbHVlKSAmJiAkbWluLT5oYXNDb21wYXRpYmxlVW5pdHMoJG1heCkpIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZS0+bGVzc1RoYW5PckVxdWFscygkbWluKS0+aXNUcnV0aHkoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRtaW47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdmFsdWUtPmdyZWF0ZXJUaGFuT3JFcXVhbHMoJG1heCktPmlzVHJ1dGh5KCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkbWF4OwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgJGFyZ3MgPSBhcnJheV92YWx1ZXMoYXJyYXlfZmlsdGVyKFskbWluLCAkdmFsdWUsICRtYXhdKSk7CiAgICAgICAgc2VsZjo6dmVyaWZ5Q29tcGF0aWJsZU51bWJlcnMoJGFyZ3MpOwogICAgICAgIHNlbGY6OnZlcmlmeUxlbmd0aCgkYXJncywgMyk7CgogICAgICAgIHJldHVybiBuZXcgU2Fzc0NhbGN1bGF0aW9uKCdjbGFtcCcsICRhcmdzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBgcG93KClgIGNhbGN1bGF0aW9uIHdpdGggdGhlIGdpdmVuICRiYXNlIGFuZCAkZXhwb25lbnQuCiAgICAgKgogICAgICogRWFjaCBhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqCiAgICAgKiBUaGlzIG1heSBiZSBwYXNzZWQgZmV3ZXIgdGhhbiB0d28gYXJndW1lbnRzLCBidXQgb25seSBpZiBvbmUgb2YgdGhlCiAgICAgKiBhcmd1bWVudHMgaXMgYW4gdW5xdW90ZWQgYHZhcigpYCBzdHJpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcG93KG9iamVjdCAkYmFzZSwgP29iamVjdCAkZXhwb25lbnQpOiBWYWx1ZQogICAgewogICAgICAgICRhcmdzID0gWyRiYXNlXTsKICAgICAgICBpZiAoJGV4cG9uZW50ICE9PSBudWxsKSB7CiAgICAgICAgICAgICRhcmdzW10gPSAkZXhwb25lbnQ7CiAgICAgICAgfQogICAgICAgIHNlbGY6OnZlcmlmeUxlbmd0aCgkYXJncywgMik7CiAgICAgICAgJGJhc2UgPSBzZWxmOjpzaW1wbGlmeSgkYmFzZSk7CiAgICAgICAgaWYgKCRleHBvbmVudCAhPT0gbnVsbCkgewogICAgICAgICAgICAkZXhwb25lbnQgPSBzZWxmOjpzaW1wbGlmeSgkZXhwb25lbnQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkYmFzZSBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgfHwgISRleHBvbmVudCBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzQ2FsY3VsYXRpb24oJ3BvdycsICRhcmdzKTsKICAgICAgICB9CgogICAgICAgICRiYXNlLT5hc3NlcnROb1VuaXRzKCk7CiAgICAgICAgJGV4cG9uZW50LT5hc3NlcnROb1VuaXRzKCk7CgogICAgICAgIHJldHVybiBOdW1iZXJVdGlsOjpwb3coJGJhc2UsICRleHBvbmVudCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgYGxvZygpYCBjYWxjdWxhdGlvbiB3aXRoIHRoZSBnaXZlbiAkbnVtYmVyIGFuZCAkYmFzZS4KICAgICAqCiAgICAgKiBFYWNoIGFyZ3VtZW50IG11c3QgYmUgZWl0aGVyIGEge0BzZWUgU2Fzc051bWJlcn0sIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufSwgYW4KICAgICAqIHVucXVvdGVkIHtAc2VlIFNhc3NTdHJpbmd9LCBvciBhIHtAc2VlIENhbGN1bGF0aW9uT3BlcmF0aW9ufS4KICAgICAqCiAgICAgKiBUaGlzIGF1dG9tYXRpY2FsbHkgc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24sIHNvIGl0IG1heSByZXR1cm4gYQogICAgICoge0BzZWUgU2Fzc051bWJlcn0gcmF0aGVyIHRoYW4gYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LiBJdCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGl0CiAgICAgKiBjYW4gZGV0ZXJtaW5lIHRoYXQgdGhlIGNhbGN1bGF0aW9uIHdpbGwgZGVmaW5pdGVseSBwcm9kdWNlIGludmFsaWQgQ1NTLgogICAgICoKICAgICAqIElmIGFyZ3VtZW50cyBjb250YWlucyBleGFjdGx5IGEgc2luZ2xlIGFyZ3VtZW50LCB0aGUgYmFzZSBpcyBzZXQgdG8KICAgICAqIGBtYXRoLmVgIGJ5IGRlZmF1bHQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9nKG9iamVjdCAkbnVtYmVyLCA/b2JqZWN0ICRiYXNlKTogVmFsdWUKICAgIHsKICAgICAgICAkbnVtYmVyID0gc2VsZjo6c2ltcGxpZnkoJG51bWJlcik7CiAgICAgICAgJGFyZ3MgPSBbJG51bWJlcl07CiAgICAgICAgaWYgKCRiYXNlICE9PSBudWxsKSB7CiAgICAgICAgICAgICRiYXNlID0gc2VsZjo6c2ltcGxpZnkoJGJhc2UpOwogICAgICAgICAgICAkYXJnc1tdID0gJGJhc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRudW1iZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyIHx8ICgkYmFzZSAhPT0gbnVsbCAmJiAhJGJhc2UgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbignbG9nJywgJGFyZ3MpOwogICAgICAgIH0KCiAgICAgICAgJG51bWJlci0+YXNzZXJ0Tm9Vbml0cygpOwoKICAgICAgICBpZiAoJGJhc2UgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgICRiYXNlLT5hc3NlcnROb1VuaXRzKCk7CgogICAgICAgICAgICByZXR1cm4gTnVtYmVyVXRpbDo6bG9nKCRudW1iZXIsICRiYXNlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBOdW1iZXJVdGlsOjpsb2coJG51bWJlciwgbnVsbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgYGF0YW4yKClgIGNhbGN1bGF0aW9uIGZvciAkeSBhbmQgJHguCiAgICAgKgogICAgICogRWFjaCBhcmd1bWVudCBtdXN0IGJlIGVpdGhlciBhIHtAc2VlIFNhc3NOdW1iZXJ9LCBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0sIGFuCiAgICAgKiB1bnF1b3RlZCB7QHNlZSBTYXNzU3RyaW5nfSwgb3IgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0uCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIGNhbGN1bGF0aW9uLCBzbyBpdCBtYXkgcmV0dXJuIGEKICAgICAqIHtAc2VlIFNhc3NOdW1iZXJ9IHJhdGhlciB0aGFuIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufS4gSXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBpdAogICAgICogY2FuIGRldGVybWluZSB0aGF0IHRoZSBjYWxjdWxhdGlvbiB3aWxsIGRlZmluaXRlbHkgcHJvZHVjZSBpbnZhbGlkIENTUy4KICAgICAqCiAgICAgKiBUaGlzIG1heSBiZSBwYXNzZWQgZmV3ZXIgdGhhbiB0d28gYXJndW1lbnRzLCBidXQgb25seSBpZiBvbmUgb2YgdGhlCiAgICAgKiBhcmd1bWVudHMgaXMgYW4gdW5xdW90ZWQgYHZhcigpYCBzdHJpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXRhbjIob2JqZWN0ICR5LCA/b2JqZWN0ICR4KTogVmFsdWUKICAgIHsKICAgICAgICAkeSA9IHNlbGY6OnNpbXBsaWZ5KCR5KTsKICAgICAgICAkYXJncyA9IFskeV07CgogICAgICAgIGlmICgkeCAhPT0gbnVsbCkgewogICAgICAgICAgICAkeCA9IHNlbGY6OnNpbXBsaWZ5KCR4KTsKICAgICAgICAgICAgJGFyZ3NbXSA9ICR4OwogICAgICAgIH0KICAgICAgICBzZWxmOjp2ZXJpZnlMZW5ndGgoJGFyZ3MsIDIpOwogICAgICAgIHNlbGY6OnZlcmlmeUNvbXBhdGlibGVOdW1iZXJzKCRhcmdzKTsKCiAgICAgICAgaWYgKCEkeSBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgfHwgISR4IGluc3RhbmNlb2YgU2Fzc051bWJlciB8fCAkeS0+aGFzVW5pdCgnJScpIHx8ICR4LT5oYXNVbml0KCclJykgfHwgISR5LT5oYXNDb21wYXRpYmxlVW5pdHMoJHgpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc0NhbGN1bGF0aW9uKCdhdGFuMicsICRhcmdzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBOdW1iZXJVdGlsOjphdGFuMigkeSwgJHgpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGByZW0oKWAgY2FsY3VsYXRpb24gd2l0aCB0aGUgZ2l2ZW4gJGRpdmlkZW5kIGFuZCAkbW9kdWx1cy4KICAgICAqCiAgICAgKiBFYWNoIGFyZ3VtZW50IG11c3QgYmUgZWl0aGVyIGEge0BzZWUgU2Fzc051bWJlcn0sIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufSwgYW4KICAgICAqIHVucXVvdGVkIHtAc2VlIFNhc3NTdHJpbmd9LCBvciBhIHtAc2VlIENhbGN1bGF0aW9uT3BlcmF0aW9ufS4KICAgICAqCiAgICAgKiBUaGlzIGF1dG9tYXRpY2FsbHkgc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24sIHNvIGl0IG1heSByZXR1cm4gYQogICAgICoge0BzZWUgU2Fzc051bWJlcn0gcmF0aGVyIHRoYW4gYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LiBJdCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGl0CiAgICAgKiBjYW4gZGV0ZXJtaW5lIHRoYXQgdGhlIGNhbGN1bGF0aW9uIHdpbGwgZGVmaW5pdGVseSBwcm9kdWNlIGludmFsaWQgQ1NTLgogICAgICoKICAgICAqIFRoaXMgbWF5IGJlIHBhc3NlZCBmZXdlciB0aGFuIHR3byBhcmd1bWVudHMsIGJ1dCBvbmx5IGlmIG9uZSBvZiB0aGUKICAgICAqIGFyZ3VtZW50cyBpcyBhbiB1bnF1b3RlZCBgdmFyKClgIHN0cmluZy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZW0ob2JqZWN0ICRkaXZpZGVuZCwgP29iamVjdCAkbW9kdWx1cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGRpdmlkZW5kID0gc2VsZjo6c2ltcGxpZnkoJGRpdmlkZW5kKTsKICAgICAgICAkYXJncyA9IFskZGl2aWRlbmRdOwoKICAgICAgICBpZiAoJG1vZHVsdXMgIT09IG51bGwpIHsKICAgICAgICAgICAgJG1vZHVsdXMgPSBzZWxmOjpzaW1wbGlmeSgkbW9kdWx1cyk7CiAgICAgICAgICAgICRhcmdzW10gPSAkbW9kdWx1czsKICAgICAgICB9CiAgICAgICAgc2VsZjo6dmVyaWZ5TGVuZ3RoKCRhcmdzLCAyKTsKICAgICAgICBzZWxmOjp2ZXJpZnlDb21wYXRpYmxlTnVtYmVycygkYXJncyk7CgogICAgICAgIGlmICghJGRpdmlkZW5kIGluc3RhbmNlb2YgU2Fzc051bWJlciB8fCAhJG1vZHVsdXMgaW5zdGFuY2VvZiBTYXNzTnVtYmVyIHx8ICEkZGl2aWRlbmQtPmhhc0NvbXBhdGlibGVVbml0cygkbW9kdWx1cykpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzQ2FsY3VsYXRpb24oJ3JlbScsICRhcmdzKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSAkZGl2aWRlbmQtPm1vZHVsbygkbW9kdWx1cyk7CgogICAgICAgIGlmIChOdW1iZXJVdGlsOjpzaWduSW5jbHVkaW5nWmVybygkbW9kdWx1cy0+Z2V0VmFsdWUoKSkgIT09IE51bWJlclV0aWw6OnNpZ25JbmNsdWRpbmdaZXJvKCRkaXZpZGVuZC0+Z2V0VmFsdWUoKSkpIHsKICAgICAgICAgICAgaWYgKGlzX2luZmluaXRlKCRtb2R1bHVzLT5nZXRWYWx1ZSgpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRkaXZpZGVuZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRyZXN1bHQtPmdldFZhbHVlKCkgPT09IDAuMCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQtPnVuYXJ5TWludXMoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQtPm1pbnVzKCRtb2R1bHVzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGBtb2QoKWAgY2FsY3VsYXRpb24gd2l0aCB0aGUgZ2l2ZW4gJGRpdmlkZW5kIGFuZCAkbW9kdWx1cy4KICAgICAqCiAgICAgKiBFYWNoIGFyZ3VtZW50IG11c3QgYmUgZWl0aGVyIGEge0BzZWUgU2Fzc051bWJlcn0sIGEge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufSwgYW4KICAgICAqIHVucXVvdGVkIHtAc2VlIFNhc3NTdHJpbmd9LCBvciBhIHtAc2VlIENhbGN1bGF0aW9uT3BlcmF0aW9ufS4KICAgICAqCiAgICAgKiBUaGlzIGF1dG9tYXRpY2FsbHkgc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24sIHNvIGl0IG1heSByZXR1cm4gYQogICAgICoge0BzZWUgU2Fzc051bWJlcn0gcmF0aGVyIHRoYW4gYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LiBJdCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGl0CiAgICAgKiBjYW4gZGV0ZXJtaW5lIHRoYXQgdGhlIGNhbGN1bGF0aW9uIHdpbGwgZGVmaW5pdGVseSBwcm9kdWNlIGludmFsaWQgQ1NTLgogICAgICoKICAgICAqIFRoaXMgbWF5IGJlIHBhc3NlZCBmZXdlciB0aGFuIHR3byBhcmd1bWVudHMsIGJ1dCBvbmx5IGlmIG9uZSBvZiB0aGUKICAgICAqIGFyZ3VtZW50cyBpcyBhbiB1bnF1b3RlZCBgdmFyKClgIHN0cmluZy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtb2Qob2JqZWN0ICRkaXZpZGVuZCwgP29iamVjdCAkbW9kdWx1cyk6IFZhbHVlCiAgICB7CiAgICAgICAgJGRpdmlkZW5kID0gc2VsZjo6c2ltcGxpZnkoJGRpdmlkZW5kKTsKICAgICAgICAkYXJncyA9IFskZGl2aWRlbmRdOwoKICAgICAgICBpZiAoJG1vZHVsdXMgIT09IG51bGwpIHsKICAgICAgICAgICAgJG1vZHVsdXMgPSBzZWxmOjpzaW1wbGlmeSgkbW9kdWx1cyk7CiAgICAgICAgICAgICRhcmdzW10gPSAkbW9kdWx1czsKICAgICAgICB9CiAgICAgICAgc2VsZjo6dmVyaWZ5TGVuZ3RoKCRhcmdzLCAyKTsKICAgICAgICBzZWxmOjp2ZXJpZnlDb21wYXRpYmxlTnVtYmVycygkYXJncyk7CgogICAgICAgIGlmICghJGRpdmlkZW5kIGluc3RhbmNlb2YgU2Fzc051bWJlciB8fCAhJG1vZHVsdXMgaW5zdGFuY2VvZiBTYXNzTnVtYmVyIHx8ICEkZGl2aWRlbmQtPmhhc0NvbXBhdGlibGVVbml0cygkbW9kdWx1cykpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzQ2FsY3VsYXRpb24oJ21vZCcsICRhcmdzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGl2aWRlbmQtPm1vZHVsbygkbW9kdWx1cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgYHJvdW5kKClgIGNhbGN1bGF0aW9uIHdpdGggdGhlIGdpdmVuICRzdHJhdGVneU9yTnVtYmVyLAogICAgICogJG51bWJlck9yU3RlcCwgYW5kICRzdGVwLiBTdHJhdGVneSBtdXN0IGJlIGVpdGhlciBuZWFyZXN0LCB1cCwgZG93biBvcgogICAgICogdG8temVyby4KICAgICAqCiAgICAgKiBOdW1iZXIgYW5kIHN0ZXAgbXVzdCBiZSBlaXRoZXIgYSB7QHNlZSBTYXNzTnVtYmVyfSwgYSB7QHNlZSBTYXNzQ2FsY3VsYXRpb259LCBhbgogICAgICogdW5xdW90ZWQge0BzZWUgU2Fzc1N0cmluZ30sIG9yIGEge0BzZWUgQ2FsY3VsYXRpb25PcGVyYXRpb259LgogICAgICoKICAgICAqIFRoaXMgYXV0b21hdGljYWxseSBzaW1wbGlmaWVzIHRoZSBjYWxjdWxhdGlvbiwgc28gaXQgbWF5IHJldHVybiBhCiAgICAgKiB7QHNlZSBTYXNzTnVtYmVyfSByYXRoZXIgdGhhbiBhIHtAc2VlIFNhc3NDYWxjdWxhdGlvbn0uIEl0IHRocm93cyBhbiBleGNlcHRpb24gaWYgaXQKICAgICAqIGNhbiBkZXRlcm1pbmUgdGhhdCB0aGUgY2FsY3VsYXRpb24gd2lsbCBkZWZpbml0ZWx5IHByb2R1Y2UgaW52YWxpZCBDU1MuCiAgICAgKgogICAgICogVGhpcyBtYXkgYmUgcGFzc2VkIGZld2VyIHRoYW4gdHdvIGFyZ3VtZW50cywgYnV0IG9ubHkgaWYgb25lIG9mIHRoZQogICAgICogYXJndW1lbnRzIGlzIGFuIHVucXVvdGVkIGB2YXIoKWAgc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJvdW5kKG9iamVjdCAkc3RyYXRlZ3lPck51bWJlciwgP29iamVjdCAkbnVtYmVyT3JTdGVwID0gbnVsbCwgP29iamVjdCAkc3RlcCA9IG51bGwpOiBWYWx1ZQogICAgewogICAgICAgICRzdHJhdGVneU9yTnVtYmVyID0gc2VsZjo6c2ltcGxpZnkoJHN0cmF0ZWd5T3JOdW1iZXIpOwogICAgICAgIGlmICgkbnVtYmVyT3JTdGVwICE9PSBudWxsKSB7CiAgICAgICAgICAgICRudW1iZXJPclN0ZXAgPSBzZWxmOjpzaW1wbGlmeSgkbnVtYmVyT3JTdGVwKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRzdGVwICE9PSBudWxsKSB7CiAgICAgICAgICAgICRzdGVwID0gc2VsZjo6c2ltcGxpZnkoJHN0ZXApOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICh0cnVlKSB7CiAgICAgICAgICAgIGNhc2UgJHN0cmF0ZWd5T3JOdW1iZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICRudW1iZXJPclN0ZXAgPT09IG51bGwgJiYgJHN0ZXAgPT09IG51bGw6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZjo6bWF0Y2hVbml0cyhyb3VuZCgkc3RyYXRlZ3lPck51bWJlci0+Z2V0VmFsdWUoKSksICRzdHJhdGVneU9yTnVtYmVyKTsKCiAgICAgICAgICAgIGNhc2UgJHN0cmF0ZWd5T3JOdW1iZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICRudW1iZXJPclN0ZXAgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICRzdGVwID09PSBudWxsOgogICAgICAgICAgICAgICAgc2VsZjo6dmVyaWZ5Q29tcGF0aWJsZU51bWJlcnMoWyRzdHJhdGVneU9yTnVtYmVyLCAkbnVtYmVyT3JTdGVwXSk7CgogICAgICAgICAgICAgICAgaWYgKCEkc3RyYXRlZ3lPck51bWJlci0+aGFzQ29tcGF0aWJsZVVuaXRzKCRudW1iZXJPclN0ZXApKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzQ2FsY3VsYXRpb24oJ3JvdW5kJywgWyRzdHJhdGVneU9yTnVtYmVyLCAkbnVtYmVyT3JTdGVwXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OnJvdW5kV2l0aFN0ZXAoJ25lYXJlc3QnLCAkc3RyYXRlZ3lPck51bWJlciwgJG51bWJlck9yU3RlcCk7CgogICAgICAgICAgICBjYXNlICRzdHJhdGVneU9yTnVtYmVyIGluc3RhbmNlb2YgU2Fzc1N0cmluZyAmJiBcaW5fYXJyYXkoJHN0cmF0ZWd5T3JOdW1iZXItPmdldFRleHQoKSwgWyduZWFyZXN0JywgJ3VwJywgJ2Rvd24nLCAndG8temVybyddLCB0cnVlKSAmJiAkbnVtYmVyT3JTdGVwIGluc3RhbmNlb2YgU2Fzc051bWJlciAmJiAkc3RlcCBpbnN0YW5jZW9mIFNhc3NOdW1iZXI6CiAgICAgICAgICAgICAgICBzZWxmOjp2ZXJpZnlDb21wYXRpYmxlTnVtYmVycyhbJG51bWJlck9yU3RlcCwgJHN0ZXBdKTsKCiAgICAgICAgICAgICAgICBpZiAoISRudW1iZXJPclN0ZXAtPmhhc0NvbXBhdGlibGVVbml0cygkc3RlcCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbigncm91bmQnLCBbJHN0cmF0ZWd5T3JOdW1iZXIsICRudW1iZXJPclN0ZXAsICRzdGVwXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OnJvdW5kV2l0aFN0ZXAoJHN0cmF0ZWd5T3JOdW1iZXItPmdldFRleHQoKSwgJG51bWJlck9yU3RlcCwgJHN0ZXApOwoKICAgICAgICAgICAgY2FzZSAkc3RyYXRlZ3lPck51bWJlciBpbnN0YW5jZW9mIFNhc3NTdHJpbmcgJiYgXGluX2FycmF5KCRzdHJhdGVneU9yTnVtYmVyLT5nZXRUZXh0KCksIFsnbmVhcmVzdCcsICd1cCcsICdkb3duJywgJ3RvLXplcm8nXSwgdHJ1ZSkgJiYgJG51bWJlck9yU3RlcCBpbnN0YW5jZW9mIFNhc3NTdHJpbmcgJiYgJHN0ZXAgPT09IG51bGw6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbigncm91bmQnLCBbJHN0cmF0ZWd5T3JOdW1iZXIsICRudW1iZXJPclN0ZXBdKTsKCiAgICAgICAgICAgIGNhc2UgJHN0cmF0ZWd5T3JOdW1iZXIgaW5zdGFuY2VvZiBTYXNzU3RyaW5nICYmIFxpbl9hcnJheSgkc3RyYXRlZ3lPck51bWJlci0+Z2V0VGV4dCgpLCBbJ25lYXJlc3QnLCAndXAnLCAnZG93bicsICd0by16ZXJvJ10sIHRydWUpICYmICRudW1iZXJPclN0ZXAgIT09IG51bGwgJiYgJHN0ZXAgPT09IG51bGw6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignSWYgc3RyYXRlZ3kgaXMgbm90IG51bGwsIHN0ZXAgaXMgcmVxdWlyZWQuJyk7CgogICAgICAgICAgICBjYXNlICRzdHJhdGVneU9yTnVtYmVyIGluc3RhbmNlb2YgU2Fzc1N0cmluZyAmJiBcaW5fYXJyYXkoJHN0cmF0ZWd5T3JOdW1iZXItPmdldFRleHQoKSwgWyduZWFyZXN0JywgJ3VwJywgJ2Rvd24nLCAndG8temVybyddLCB0cnVlKSAmJiAkbnVtYmVyT3JTdGVwID09PSBudWxsICYmICRzdGVwID09PSBudWxsOgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ051bWJlciB0byByb3VuZCBhbmQgc3RlcCBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLicpOwoKICAgICAgICAgICAgY2FzZSAkc3RyYXRlZ3lPck51bWJlciBpbnN0YW5jZW9mIFNhc3NTdHJpbmcgJiYgJG51bWJlck9yU3RlcCA9PT0gbnVsbCAmJiAkc3RlcCA9PT0gbnVsbDoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc0NhbGN1bGF0aW9uKCdyb3VuZCcsIFskc3RyYXRlZ3lPck51bWJlcl0pOwoKICAgICAgICAgICAgY2FzZSAkbnVtYmVyT3JTdGVwID09PSBudWxsICYmICRzdGVwID09PSBudWxsOgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlNpbmdsZSBhcmd1bWVudCAkc3RyYXRlZ3lPck51bWJlciBleHBlY3RlZCB0byBiZSBzaW1wbGlmaWFibGUuIik7CgogICAgICAgICAgICBjYXNlICRzdGVwID09PSBudWxsOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzQ2FsY3VsYXRpb24oJ3JvdW5kJywgWyRzdHJhdGVneU9yTnVtYmVyLCAkbnVtYmVyT3JTdGVwXSk7CgogICAgICAgICAgICBjYXNlICRzdHJhdGVneU9yTnVtYmVyIGluc3RhbmNlb2YgU2Fzc1N0cmluZyAmJiAoXGluX2FycmF5KCRzdHJhdGVneU9yTnVtYmVyLT5nZXRUZXh0KCksIFsnbmVhcmVzdCcsICd1cCcsICdkb3duJywgJ3RvLXplcm8nXSwgdHJ1ZSkgfHwgJHN0cmF0ZWd5T3JOdW1iZXItPmlzVmFyKCkpICYmICRudW1iZXJPclN0ZXAgIT09IG51bGw6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NDYWxjdWxhdGlvbigncm91bmQnLCBbJHN0cmF0ZWd5T3JOdW1iZXIsICRudW1iZXJPclN0ZXAsICRzdGVwXSk7CgogICAgICAgICAgICBjYXNlICRudW1iZXJPclN0ZXAgIT09IG51bGw6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiJHN0cmF0ZWd5T3JOdW1iZXIgbXVzdCBiZSBlaXRoZXIgbmVhcmVzdCwgdXAsIGRvd24gb3IgdG8temVyby4iKTsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignSW52YWxpZCBwYXJhbWV0ZXJzLicpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYW5kIHNpbXBsaWZpZXMgYSB7QHNlZSBDYWxjdWxhdGlvbk9wZXJhdGlvbn0gd2l0aCB0aGUgZ2l2ZW4gJG9wZXJhdG9yLAogICAgICogJGxlZnQsIGFuZCAkcmlnaHQuCiAgICAgKgogICAgICogVGhpcyBhdXRvbWF0aWNhbGx5IHNpbXBsaWZpZXMgdGhlIG9wZXJhdGlvbiwgc28gaXQgbWF5IHJldHVybiBhCiAgICAgKiB7QHNlZSBTYXNzTnVtYmVyfSByYXRoZXIgdGhhbiBhIHtAc2VlIENhbGN1bGF0aW9uT3BlcmF0aW9ufS4KICAgICAqCiAgICAgKiBFYWNoIG9mICRsZWZ0IGFuZCAkcmlnaHQgbXVzdCBiZSBlaXRoZXIgYSB7QHNlZSBTYXNzTnVtYmVyfSwgYQogICAgICoge0BzZWUgU2Fzc0NhbGN1bGF0aW9ufSwgYW4gdW5xdW90ZWQge0BzZWUgU2Fzc1N0cmluZ30sIG9yIGEge0BzZWUgQ2FsY3VsYXRpb25PcGVyYXRpb259LgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9wZXJhdGUoQ2FsY3VsYXRpb25PcGVyYXRvciAkb3BlcmF0b3IsIG9iamVjdCAkbGVmdCwgb2JqZWN0ICRyaWdodCk6IG9iamVjdAogICAgewogICAgICAgIHJldHVybiBzZWxmOjpvcGVyYXRlSW50ZXJuYWwoJG9wZXJhdG9yLCAkbGVmdCwgJHJpZ2h0LCBmYWxzZSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMaWtlIHtAc2VlIG9wZXJhdGV9LCBidXQgd2l0aCB0aGUgaW50ZXJuYWwtb25seSAkaW5MZWdhY3lTYXNzRnVuY3Rpb24gcGFyYW1ldGVyLgogICAgICoKICAgICAqIElmICRpbkxlZ2FjeVNhc3NGdW5jdGlvbiBpcyBgdHJ1ZWAsIHRoaXMgYWxsb3dzIHVuaXRsZXNzIG51bWJlcnMgdG8gYmUgYWRkZWQgYW5kCiAgICAgKiBzdWJ0cmFjdGVkIHdpdGggbnVtYmVycyB3aXRoIHVuaXRzLCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgd2l0aCB0aGUKICAgICAqIG9sZCBnbG9iYWwgYG1pbigpYCBhbmQgYG1heCgpYCBmdW5jdGlvbnMuCiAgICAgKgogICAgICogSWYgJHNpbXBsaWZ5IGlzIGBmYWxzZWAsIG5vIHNpbXBsaWZpY2F0aW9uIHdpbGwgYmUgZG9uZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFNhc3NOdW1iZXJ8Q2FsY3VsYXRpb25PcGVyYXRpb258U2Fzc1N0cmluZ3xTYXNzQ2FsY3VsYXRpb258VmFsdWUKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvcGVyYXRlSW50ZXJuYWwoQ2FsY3VsYXRpb25PcGVyYXRvciAkb3BlcmF0b3IsIG9iamVjdCAkbGVmdCwgb2JqZWN0ICRyaWdodCwgYm9vbCAkaW5MZWdhY3lTYXNzRnVuY3Rpb24sIGJvb2wgJHNpbXBsaWZ5KTogb2JqZWN0CiAgICB7CiAgICAgICAgaWYgKCEkc2ltcGxpZnkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWxjdWxhdGlvbk9wZXJhdGlvbigkb3BlcmF0b3IsICRsZWZ0LCAkcmlnaHQpOwogICAgICAgIH0KCiAgICAgICAgJGxlZnQgPSBzZWxmOjpzaW1wbGlmeSgkbGVmdCk7CiAgICAgICAgJHJpZ2h0ID0gc2VsZjo6c2ltcGxpZnkoJHJpZ2h0KTsKCiAgICAgICAgaWYgKCRvcGVyYXRvciA9PT0gQ2FsY3VsYXRpb25PcGVyYXRvcjo6UExVUyB8fCAkb3BlcmF0b3IgPT09IENhbGN1bGF0aW9uT3BlcmF0b3I6Ok1JTlVTKSB7CiAgICAgICAgICAgIGlmICgkbGVmdCBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgJiYgJHJpZ2h0IGluc3RhbmNlb2YgU2Fzc051bWJlciAmJiAoJGluTGVnYWN5U2Fzc0Z1bmN0aW9uID8gJGxlZnQtPmlzQ29tcGFyYWJsZVRvKCRyaWdodCkgOiAkbGVmdC0+aGFzQ29tcGF0aWJsZVVuaXRzKCRyaWdodCkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG9wZXJhdG9yID09PSBDYWxjdWxhdGlvbk9wZXJhdG9yOjpQTFVTID8gJGxlZnQtPnBsdXMoJHJpZ2h0KSA6ICRsZWZ0LT5taW51cygkcmlnaHQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBzZWxmOjp2ZXJpZnlDb21wYXRpYmxlTnVtYmVycyhbJGxlZnQsICRyaWdodF0pOwoKICAgICAgICAgICAgaWYgKCRyaWdodCBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgJiYgTnVtYmVyVXRpbDo6ZnV6enlMZXNzVGhhbigkcmlnaHQtPmdldFZhbHVlKCksIDApKSB7CiAgICAgICAgICAgICAgICAkcmlnaHQgPSAkcmlnaHQtPnRpbWVzKFNhc3NOdW1iZXI6OmNyZWF0ZSgtMSkpOwogICAgICAgICAgICAgICAgJG9wZXJhdG9yID0gJG9wZXJhdG9yID09PSBDYWxjdWxhdGlvbk9wZXJhdG9yOjpQTFVTID8gQ2FsY3VsYXRpb25PcGVyYXRvcjo6TUlOVVMgOiBDYWxjdWxhdGlvbk9wZXJhdG9yOjpQTFVTOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbmV3IENhbGN1bGF0aW9uT3BlcmF0aW9uKCRvcGVyYXRvciwgJGxlZnQsICRyaWdodCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGxlZnQgaW5zdGFuY2VvZiBTYXNzTnVtYmVyICYmICRyaWdodCBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuICRvcGVyYXRvciA9PT0gQ2FsY3VsYXRpb25PcGVyYXRvcjo6VElNRVMgPyAkbGVmdC0+dGltZXMoJHJpZ2h0KSA6ICRsZWZ0LT5kaXZpZGVkQnkoJHJpZ2h0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQ2FsY3VsYXRpb25PcGVyYXRpb24oJG9wZXJhdG9yLCAkbGVmdCwgJHJpZ2h0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEFuIGludGVybmFsIGNvbnN0cnVjdG9yIHRoYXQgZG9lc24ndCBwZXJmb3JtIGFueSB2YWxpZGF0aW9uIG9yCiAgICAgKiBzaW1wbGlmaWNhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxvYmplY3Q+ICRhcmd1bWVudHMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJG5hbWUsIGFycmF5ICRhcmd1bWVudHMpCiAgICB7CiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICAkdGhpcy0+YXJndW1lbnRzID0gJGFyZ3VtZW50czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU3BlY2lhbE51bWJlcigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGxpc3Q8b2JqZWN0PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXJndW1lbnRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hcmd1bWVudHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChWYWx1ZVZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdENhbGN1bGF0aW9uKCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0Q2FsY3VsYXRpb24oP3N0cmluZyAkbmFtZSA9IG51bGwpOiBTYXNzQ2FsY3VsYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHBsdXMoVmFsdWUgJG90aGVyKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2Fzc1N0cmluZykgewogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpwbHVzKCRvdGhlcik7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVW5kZWZpbmVkIG9wZXJhdGlvbiBcIiR0aGlzICsgJG90aGVyXCIuIik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1pbnVzKFZhbHVlICRvdGhlcik6IFZhbHVlCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlVuZGVmaW5lZCBvcGVyYXRpb24gXCIkdGhpcyAtICRvdGhlclwiLiIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmFyeVBsdXMoKTogVmFsdWUKICAgIHsKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVW5kZWZpbmVkIG9wZXJhdGlvbiBcIiskdGhpc1wiLiIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmFyeU1pbnVzKCk6IFZhbHVlCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlVuZGVmaW5lZCBvcGVyYXRpb24gXCItJHRoaXNcIi4iKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCEkb3RoZXIgaW5zdGFuY2VvZiBTYXNzQ2FsY3VsYXRpb24gfHwgJHRoaXMtPm5hbWUgIT09ICRvdGhlci0+bmFtZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5hcmd1bWVudHMpICE9PSBcY291bnQoJG90aGVyLT5hcmd1bWVudHMpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5hcmd1bWVudHMgYXMgJGkgPT4gJGFyZ3VtZW50KSB7CiAgICAgICAgICAgIGFzc2VydCgkYXJndW1lbnQgaW5zdGFuY2VvZiBFcXVhdGFibGUpOwogICAgICAgICAgICAkb3RoZXJBcmd1bWVudCA9ICRvdGhlci0+YXJndW1lbnRzWyRpXTsKCiAgICAgICAgICAgIGlmICghJGFyZ3VtZW50LT5lcXVhbHMoJG90aGVyQXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyAkdmFsdWUgY29lcmNlZCB0byAkbnVtYmVyJ3MgdW5pdHMuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG1hdGNoVW5pdHMoZmxvYXQgJHZhbHVlLCBTYXNzTnVtYmVyICRudW1iZXIpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OndpdGhVbml0cygkdmFsdWUsICRudW1iZXItPmdldE51bWVyYXRvclVuaXRzKCksICRudW1iZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgcm91bmRlZCAkbnVtYmVyIGJhc2VkIG9uIGEgc2VsZWN0ZWQgcm91bmRpbmcgJHN0cmF0ZWd5LAogICAgICogdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBtdWx0aXBsZSBvZiAkc3RlcC4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcm91bmRXaXRoU3RlcChzdHJpbmcgJHN0cmF0ZWd5LCBTYXNzTnVtYmVyICRudW1iZXIsIFNhc3NOdW1iZXIgJHN0ZXApOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgaWYgKCFcaW5fYXJyYXkoJHN0cmF0ZWd5LCBbJ25lYXJlc3QnLCAndXAnLCAnZG93bicsICd0by16ZXJvJ10sIHRydWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCckc3RyYXRlZ3kgbXVzdCBiZSBlaXRoZXIgbmVhcmVzdCwgdXAsIGRvd24gb3IgdG8temVyby4nKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc19pbmZpbml0ZSgkbnVtYmVyLT5nZXRWYWx1ZSgpKSAmJiBpc19pbmZpbml0ZSgkc3RlcC0+Z2V0VmFsdWUoKSkgfHwgJHN0ZXAtPmdldFZhbHVlKCkgPT09IDAuMCB8fCBpc19uYW4oJG51bWJlci0+Z2V0VmFsdWUoKSkgfHwgaXNfbmFuKCRzdGVwLT5nZXRWYWx1ZSgpKSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6bWF0Y2hVbml0cyhOQU4sICRudW1iZXIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX2luZmluaXRlKCRudW1iZXItPmdldFZhbHVlKCkpKSB7CiAgICAgICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX2luZmluaXRlKCRzdGVwLT5nZXRWYWx1ZSgpKSkgewogICAgICAgICAgICBpZiAoJG51bWJlci0+Z2V0VmFsdWUoKSA9PT0gMC4wKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG51bWJlcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3dpdGNoICgkc3RyYXRlZ3kpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ25lYXJlc3QnOgogICAgICAgICAgICAgICAgY2FzZSAndG8temVybyc6CiAgICAgICAgICAgICAgICAgICAgaWYgKCRudW1iZXItPmdldFZhbHVlKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjptYXRjaFVuaXRzKDAuMCwgJG51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZjo6bWF0Y2hVbml0cygtMC4wLCAkbnVtYmVyKTsKCiAgICAgICAgICAgICAgICBjYXNlICd1cCc6CiAgICAgICAgICAgICAgICAgICAgaWYgKCRudW1iZXItPmdldFZhbHVlKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjptYXRjaFVuaXRzKElORiwgJG51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZjo6bWF0Y2hVbml0cygtMC4wLCAkbnVtYmVyKTsKCiAgICAgICAgICAgICAgICBjYXNlICdkb3duJzoKICAgICAgICAgICAgICAgICAgICBpZiAoJG51bWJlci0+Z2V0VmFsdWUoKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1hdGNoVW5pdHMoLUlORiwgJG51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZjo6bWF0Y2hVbml0cygwLjAsICRudW1iZXIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkc3RlcFdpdGhOdW1iZXJVbml0ID0gJHN0ZXAtPmNvbnZlcnRWYWx1ZVRvTWF0Y2goJG51bWJlcik7CgogICAgICAgIHN3aXRjaCAoJHN0cmF0ZWd5KSB7CiAgICAgICAgICAgIGNhc2UgJ25lYXJlc3QnOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1hdGNoVW5pdHMocm91bmQoJG51bWJlci0+Z2V0VmFsdWUoKSAvICRzdGVwV2l0aE51bWJlclVuaXQpICogJHN0ZXBXaXRoTnVtYmVyVW5pdCwgJG51bWJlcik7CiAgICAgICAgICAgIGNhc2UgJ3VwJzoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjptYXRjaFVuaXRzKCgkc3RlcC0+Z2V0VmFsdWUoKSA8IDAgPyBmbG9vcigkbnVtYmVyLT5nZXRWYWx1ZSgpIC8gJHN0ZXBXaXRoTnVtYmVyVW5pdCkgOiBjZWlsKCRudW1iZXItPmdldFZhbHVlKCkgLyAkc3RlcFdpdGhOdW1iZXJVbml0KSkgKiAkc3RlcFdpdGhOdW1iZXJVbml0LCAkbnVtYmVyKTsKICAgICAgICAgICAgY2FzZSAnZG93bic6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZjo6bWF0Y2hVbml0cygoJHN0ZXAtPmdldFZhbHVlKCkgPCAwID8gY2VpbCgkbnVtYmVyLT5nZXRWYWx1ZSgpIC8gJHN0ZXBXaXRoTnVtYmVyVW5pdCkgOiBmbG9vcigkbnVtYmVyLT5nZXRWYWx1ZSgpIC8gJHN0ZXBXaXRoTnVtYmVyVW5pdCkpICogJHN0ZXBXaXRoTnVtYmVyVW5pdCwgJG51bWJlcik7CiAgICAgICAgICAgIGNhc2UgJ3RvLXplcm8nOgogICAgICAgICAgICAgICAgaWYgKCRudW1iZXItPmdldFZhbHVlKCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1hdGNoVW5pdHMoY2VpbCgkbnVtYmVyLT5nZXRWYWx1ZSgpIC8gJHN0ZXBXaXRoTnVtYmVyVW5pdCkgKiAkc3RlcFdpdGhOdW1iZXJVbml0LCAkbnVtYmVyKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZjo6bWF0Y2hVbml0cyhmbG9vcigkbnVtYmVyLT5nZXRWYWx1ZSgpIC8gJHN0ZXBXaXRoTnVtYmVyVW5pdCkgKiAkc3RlcFdpdGhOdW1iZXJVbml0LCAkbnVtYmVyKTsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZjo6bWF0Y2hVbml0cyhOQU4sICRudW1iZXIpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PG9iamVjdD4gJGFyZ3MKICAgICAqCiAgICAgKiBAcmV0dXJuIGxpc3Q8b2JqZWN0PgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzaW1wbGlmeUFyZ3VtZW50cyhhcnJheSAkYXJncyk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X21hcChbc2VsZjo6Y2xhc3MsICdzaW1wbGlmeSddLCAkYXJncyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFNhc3NOdW1iZXJ8Q2FsY3VsYXRpb25PcGVyYXRpb258U2Fzc1N0cmluZ3xTYXNzQ2FsY3VsYXRpb24KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2ltcGxpZnkob2JqZWN0ICRhcmcpOiBvYmplY3QKICAgIHsKICAgICAgICBpZiAoJGFyZyBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgfHwgJGFyZyBpbnN0YW5jZW9mIENhbGN1bGF0aW9uT3BlcmF0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiAkYXJnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhcmcgaW5zdGFuY2VvZiBTYXNzU3RyaW5nKSB7CiAgICAgICAgICAgIGlmICghJGFyZy0+aGFzUXVvdGVzKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYXJnOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiUXVvdGVkIHN0cmluZyAkYXJnIGNhbid0IGJlIHVzZWQgaW4gYSBjYWxjdWxhdGlvbi4iKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYXJnIGluc3RhbmNlb2YgU2Fzc0NhbGN1bGF0aW9uKSB7CiAgICAgICAgICAgIGlmICgkYXJnLT5nZXROYW1lKCkgPT09ICdjYWxjJykgewogICAgICAgICAgICAgICAgJGFyZ3VtZW50ID0gJGFyZy0+Z2V0QXJndW1lbnRzKClbMF07CgogICAgICAgICAgICAgICAgaWYgKCRhcmd1bWVudCBpbnN0YW5jZW9mIFNhc3NTdHJpbmcgJiYgISRhcmd1bWVudC0+aGFzUXVvdGVzKCkgJiYgc2VsZjo6bmVlZHNQYXJlbnRoZXNlcygkYXJndW1lbnQtPmdldFRleHQoKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoIih7JGFyZ3VtZW50LT5nZXRUZXh0KCl9KSIsIGZhbHNlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBcYXNzZXJ0KCRhcmd1bWVudCBpbnN0YW5jZW9mIFNhc3NOdW1iZXIgfHwgJGFyZ3VtZW50IGluc3RhbmNlb2YgU2Fzc1N0cmluZyB8fCAkYXJndW1lbnQgaW5zdGFuY2VvZiBTYXNzQ2FsY3VsYXRpb24gfHwgJGFyZ3VtZW50IGluc3RhbmNlb2YgQ2FsY3VsYXRpb25PcGVyYXRpb24pOwoKICAgICAgICAgICAgICAgIHJldHVybiAkYXJndW1lbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkYXJnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhcmcgaW5zdGFuY2VvZiBWYWx1ZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVmFsdWUgJGFyZyBjYW4ndCBiZSB1c2VkIGluIGEgY2FsY3VsYXRpb24uIik7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdVbmV4cGVjdGVkIGNhbGN1bGF0aW9uIGFyZ3VtZW50ICVzLicsIGdldF9kZWJ1Z190eXBlKCRhcmcpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgJHRleHQgbmVlZHMgcGFyZW50aGVzZXMgaWYgaXQncyB0aGUgY29udGVudHMgb2YgYQogICAgICogYGNhbGMoKWAgYmVpbmcgZW1iZWRkZWQgaW4gYW5vdGhlciBjYWxjdWxhdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbmVlZHNQYXJlbnRoZXNlcyhzdHJpbmcgJHRleHQpOiBib29sCiAgICB7CiAgICAgICAgJGZpcnN0ID0gJHRleHRbMF07CiAgICAgICAgaWYgKHNlbGY6OmNoYXJOZWVkc1BhcmVudGhlc2VzKCRmaXJzdCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkY291bGRCZVZhciA9IFxzdHJsZW4oJHRleHQpID4gNCAmJiAoJGZpcnN0ID09PSAndicgfHwgJGZpcnN0ID09PSAnVicpOwoKICAgICAgICBpZiAoXHN0cmxlbigkdGV4dCkgPCAyKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJHNlY29uZCA9ICR0ZXh0WzFdOwogICAgICAgIGlmIChzZWxmOjpjaGFyTmVlZHNQYXJlbnRoZXNlcygkc2Vjb25kKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJGNvdWxkQmVWYXIgPSAkY291bGRCZVZhciAmJiAoJHNlY29uZCA9PT0gJ2EnIHx8ICRzZWNvbmQgPT09ICdBJyk7CgogICAgICAgIGlmIChcc3RybGVuKCR0ZXh0KSA8IDMpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkdGhpcmQgPSAkdGV4dFsyXTsKICAgICAgICBpZiAoc2VsZjo6Y2hhck5lZWRzUGFyZW50aGVzZXMoJHRoaXJkKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJGNvdWxkQmVWYXIgPSAkY291bGRCZVZhciAmJiAoJHRoaXJkID09PSAncicgfHwgJHRoaXJkID09PSAnUicpOwoKICAgICAgICBpZiAoXHN0cmxlbigkdGV4dCkgPCA0KSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJGZvdXJ0aCA9ICR0ZXh0WzNdOwogICAgICAgIGlmICgkY291bGRCZVZhciAmJiAkZm91cnRoID09PSAnKCcpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIGlmIChzZWxmOjpjaGFyTmVlZHNQYXJlbnRoZXNlcygkZm91cnRoKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGZvciAoJGkgPSA0OyAkaSA8IFxzdHJsZW4oJHRleHQpOyArKyRpKSB7CiAgICAgICAgICAgIGlmIChzZWxmOjpjaGFyTmVlZHNQYXJlbnRoZXNlcygkdGV4dFskaV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRjaGFyYWN0ZXIgaW50cmluc2ljYWxseSBuZWVkcyBwYXJlbnRoZXNlcyBpZiBpdCBhcHBlYXJzCiAgICAgKiBpbiB0aGUgdW5xdW90ZWQgc3RyaW5nIGFyZ3VtZW50IG9mIGEgYGNhbGMoKWAgYmVpbmcgZW1iZWRkZWQgaW4gYW5vdGhlcgogICAgICogY2FsY3VsYXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNoYXJOZWVkc1BhcmVudGhlc2VzKHN0cmluZyAkY2hhcmFjdGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkY2hhcmFjdGVyID09PSAnLycgfHwgJGNoYXJhY3RlciA9PT0gJyonIHx8IENoYXJhY3Rlcjo6aXNXaGl0ZXNwYWNlKCRjaGFyYWN0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICogVmVyaWZpZXMgdGhhdCBhbGwgdGhlIG51bWJlcnMgaW4gJGFyZ3MgYXJlbid0IGtub3duIHRvIGJlIGluY29tcGF0aWJsZQogICAgICogd2l0aCBvbmUgYW5vdGhlciwgYW5kIHRoYXQgdGhleSBkb24ndCBoYXZlIHVuaXRzIHRoYXQgYXJlIHRvbyBjb21wbGV4IGZvcgogICAgICogY2FsY3VsYXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PG9iamVjdD4gJGFyZ3MKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdmVyaWZ5Q29tcGF0aWJsZU51bWJlcnMoYXJyYXkgJGFyZ3MpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGFyZ3MgYXMgJGFyZykgewogICAgICAgICAgICBpZiAoISRhcmcgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKFxjb3VudCgkYXJnLT5nZXROdW1lcmF0b3JVbml0cygpKSA+IDEgfHwgXGNvdW50KCRhcmctPmdldERlbm9taW5hdG9yVW5pdHMoKSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJOdW1iZXIgJGFyZyBpc24ndCBjb21wYXRpYmxlIHdpdGggQ1NTIGNhbGN1bGF0aW9ucy4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgXGNvdW50KCRhcmdzKTsgJGkrKykgewogICAgICAgICAgICAkbnVtYmVyMSA9ICRhcmdzWyRpXTsKCiAgICAgICAgICAgIGlmICghJG51bWJlcjEgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yICgkaiA9ICRpICsgMTsgJGogPCBcY291bnQoJGFyZ3MpOyAkaisrKSB7CiAgICAgICAgICAgICAgICAkbnVtYmVyMiA9ICRhcmdzWyRqXTsKCiAgICAgICAgICAgICAgICBpZiAoISRudW1iZXIyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkbnVtYmVyMS0+aGFzUG9zc2libHlDb21wYXRpYmxlVW5pdHMoJG51bWJlcjIpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIiRudW1iZXIxIGFuZCAkbnVtYmVyMiBhcmUgaW5jb21wYXRpYmxlLiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGhyb3dzIGEge0BzZWUgU2Fzc1NjcmlwdEV4Y2VwdGlvbn0gaWYgJGFyZ3MgaXNuJ3QgJGV4cGVjdGVkTGVuZ3RoICphbmQqCiAgICAgKiBkb2Vzbid0IGNvbnRhaW4gZWl0aGVyIGEge0BzZWUgU2Fzc1N0cmluZ30uCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8b2JqZWN0PiAkYXJncwogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2ZXJpZnlMZW5ndGgoYXJyYXkgJGFyZ3MsIGludCAkZXhwZWN0ZWRMZW5ndGgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkYXJncykgPT09ICRleHBlY3RlZExlbmd0aCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkYXJncyBhcyAkYXJnKSB7CiAgICAgICAgICAgIGlmICgkYXJnIGluc3RhbmNlb2YgU2Fzc1N0cmluZykgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkbGVuZ3RoID0gXGNvdW50KCRhcmdzKTsKICAgICAgICAkdmVyYiA9IFN0cmluZ1V0aWw6OnBsdXJhbGl6ZSgnd2FzJywgJGxlbmd0aCwgJ3dlcmUnKTsKCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIiRleHBlY3RlZExlbmd0aCBhcmd1bWVudHMgcmVxdWlyZWQsIGJ1dCBvbmx5ICRsZW5ndGggJHZlcmIgcGFzc2VkLiIpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFNhc3NOdW1iZXIpOiBTYXNzTnVtYmVyICRtYXRoRnVuYwogICAgICoKICAgICAqIEBwYXJhbS1pbW1lZGlhdGVseS1pbnZva2VkLWNhbGxhYmxlICRtYXRoRnVuYwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzaW5nbGVBcmd1bWVudChzdHJpbmcgJG5hbWUsIG9iamVjdCAkYXJndW1lbnQsIGNhbGxhYmxlICRtYXRoRnVuYywgYm9vbCAkZm9yYmlkVW5pdHMgPSBmYWxzZSk6IFZhbHVlCiAgICB7CiAgICAgICAgJGFyZ3VtZW50ID0gc2VsZjo6c2ltcGxpZnkoJGFyZ3VtZW50KTsKCiAgICAgICAgaWYgKCEkYXJndW1lbnQgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgU2Fzc0NhbGN1bGF0aW9uKCRuYW1lLCBbJGFyZ3VtZW50XSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZvcmJpZFVuaXRzKSB7CiAgICAgICAgICAgICRhcmd1bWVudC0+YXNzZXJ0Tm9Vbml0cygpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtYXRoRnVuYygkYXJndW1lbnQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassColor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVycm9yVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXE51bWJlclV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvclxWYWx1ZVZpc2l0b3I7CgovKioKICogQSBTYXNzU2NyaXB0IGNvbG9yLgogKi8KZmluYWwgY2xhc3MgU2Fzc0NvbG9yIGV4dGVuZHMgVmFsdWUKewogICAgLyoqCiAgICAgKiBUaGlzIGNvbG9yJ3MgcmVkIGNoYW5uZWwsIGJldHdlZW4gYDBgIGFuZCBgMjU1YC4KICAgICAqLwogICAgcHJpdmF0ZSA/aW50ICRyZWQ7CgogICAgLyoqCiAgICAgKiBUaGlzIGNvbG9yJ3MgYmx1ZSBjaGFubmVsLCBiZXR3ZWVuIGAwYCBhbmQgYDI1NWAuCiAgICAgKi8KICAgIHByaXZhdGUgP2ludCAkYmx1ZTsKCiAgICAvKioKICAgICAqIFRoaXMgY29sb3IncyBncmVlbiBjaGFubmVsLCBiZXR3ZWVuIGAwYCBhbmQgYDI1NWAuCiAgICAgKi8KICAgIHByaXZhdGUgP2ludCAkZ3JlZW47CgogICAgLyoqCiAgICAgKiBUaGlzIGNvbG9yJ3MgaHVlLCBiZXR3ZWVuIGAwYCBhbmQgYDM2MGAuCiAgICAgKi8KICAgIHByaXZhdGUgP2Zsb2F0ICRodWU7CgogICAgLyoqCiAgICAgKiBUaGlzIGNvbG9yJ3Mgc2F0dXJhdGlvbiwgYSBwZXJjZW50YWdlIGJldHdlZW4gYDBgIGFuZCBgMTAwYC4KICAgICAqLwogICAgcHJpdmF0ZSA/ZmxvYXQgJHNhdHVyYXRpb247CgogICAgLyoqCiAgICAgKiBUaGlzIGNvbG9yJ3MgbGlnaHRuZXNzLCBhIHBlcmNlbnRhZ2UgYmV0d2VlbiBgMGAgYW5kIGAxMDBgLgogICAgICovCiAgICBwcml2YXRlID9mbG9hdCAkbGlnaHRuZXNzOwoKICAgIC8qKgogICAgICogVGhpcyBjb2xvcidzIGFscGhhIGNoYW5uZWwsIGJldHdlZW4gYDBgIGFuZCBgMWAuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgZmxvYXQgJGFscGhhOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgP0NvbG9yRm9ybWF0ICRmb3JtYXQ7CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgUkdCIGNvbG9yCiAgICAgKgogICAgICogQHRocm93cyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbiBpZiB2YWx1ZXMgYXJlIG91dHNpZGUgdGhlIGV4cGVjdGVkIHJhbmdlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJnYihpbnQgJHJlZCwgaW50ICRncmVlbiwgaW50ICRibHVlLCBmbG9hdCAkYWxwaGEgPSAxLjApOiBTYXNzQ29sb3IKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6cmdiSW50ZXJuYWwoJHJlZCwgJGdyZWVuLCAkYmx1ZSwgJGFscGhhKTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgcmdifSBidXQgYWxzbyB0YWtlcyBhIGNvbG9yIGZvcm1hdC4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAdGhyb3dzIFxPdXRPZlJhbmdlRXhjZXB0aW9uIGlmIHZhbHVlcyBhcmUgb3V0c2lkZSB0aGUgZXhwZWN0ZWQgcmFuZ2UuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmdiSW50ZXJuYWwoaW50ICRyZWQsIGludCAkZ3JlZW4sIGludCAkYmx1ZSwgZmxvYXQgJGFscGhhID0gMS4wLCA/Q29sb3JGb3JtYXQgJGZvcm1hdCA9IG51bGwpOiBTYXNzQ29sb3IKICAgIHsKICAgICAgICAkYWxwaGEgPSBOdW1iZXJVdGlsOjpmdXp6eUFzc2VydFJhbmdlKCRhbHBoYSwgMCwgMSwgJ2FscGhhJyk7CgogICAgICAgIEVycm9yVXRpbDo6Y2hlY2tJbnRJbkludGVydmFsKCRyZWQsIDAsIDI1NSwgJ3JlZCcpOwogICAgICAgIEVycm9yVXRpbDo6Y2hlY2tJbnRJbkludGVydmFsKCRncmVlbiwgMCwgMjU1LCAnZ3JlZW4nKTsKICAgICAgICBFcnJvclV0aWw6OmNoZWNrSW50SW5JbnRlcnZhbCgkYmx1ZSwgMCwgMjU1LCAnYmx1ZScpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHJlZCwgJGdyZWVuLCAkYmx1ZSwgbnVsbCwgbnVsbCwgbnVsbCwgJGFscGhhLCAkZm9ybWF0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgXE91dE9mUmFuZ2VFeGNlcHRpb24gaWYgdmFsdWVzIGFyZSBvdXRzaWRlIHRoZSBleHBlY3RlZCByYW5nZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoc2woZmxvYXQgJGh1ZSwgZmxvYXQgJHNhdHVyYXRpb24sIGZsb2F0ICRsaWdodG5lc3MsIGZsb2F0ICRhbHBoYSA9IDEuMCk6IFNhc3NDb2xvcgogICAgewogICAgICAgIHJldHVybiBzZWxmOjpoc2xJbnRlcm5hbCgkaHVlLCAkc2F0dXJhdGlvbiwgJGxpZ2h0bmVzcywgJGFscGhhKTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Uge0BzZWUgaHNsfSBidXQgYWxzbyB0YWtlcyBhIGNvbG9yIGZvcm1hdC4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAdGhyb3dzIFxPdXRPZlJhbmdlRXhjZXB0aW9uIGlmIHZhbHVlcyBhcmUgb3V0c2lkZSB0aGUgZXhwZWN0ZWQgcmFuZ2UuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaHNsSW50ZXJuYWwoZmxvYXQgJGh1ZSwgZmxvYXQgJHNhdHVyYXRpb24sIGZsb2F0ICRsaWdodG5lc3MsIGZsb2F0ICRhbHBoYSA9IDEuMCwgP0NvbG9yRm9ybWF0ICRmb3JtYXQgPSBudWxsKTogU2Fzc0NvbG9yCiAgICB7CiAgICAgICAgJGFscGhhID0gTnVtYmVyVXRpbDo6ZnV6enlBc3NlcnRSYW5nZSgkYWxwaGEsIDAsIDEsICdhbHBoYScpOwoKICAgICAgICAkaHVlID0gZm1vZCgkaHVlLCAzNjApOwogICAgICAgIGlmICgkaHVlIDwgMCkgewogICAgICAgICAgICAkaHVlICs9IDM2MDsKICAgICAgICB9CiAgICAgICAgJHNhdHVyYXRpb24gPSBOdW1iZXJVdGlsOjpmdXp6eUFzc2VydFJhbmdlKCRzYXR1cmF0aW9uLCAwLCAxMDAsICdzYXR1cmF0aW9uJyk7CiAgICAgICAgJGxpZ2h0bmVzcyA9IE51bWJlclV0aWw6OmZ1enp5QXNzZXJ0UmFuZ2UoJGxpZ2h0bmVzcywgMCwgMTAwLCAnbGlnaHRuZXNzJyk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZihudWxsLCBudWxsLCBudWxsLCAkaHVlLCAkc2F0dXJhdGlvbiwgJGxpZ2h0bmVzcywgJGFscGhhLCAkZm9ybWF0KTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGh3YihmbG9hdCAkaHVlLCBmbG9hdCAkd2hpdGVuZXNzLCBmbG9hdCAkYmxhY2tuZXNzLCBmbG9hdCAkYWxwaGEgPSAxLjApOiBTYXNzQ29sb3IKICAgIHsKICAgICAgICAkaHVlID0gZm1vZCgkaHVlLCAzNjApOwogICAgICAgIGlmICgkaHVlIDwgMCkgewogICAgICAgICAgICAkaHVlICs9IDM2MDsKICAgICAgICB9CiAgICAgICAgJHNjYWxlZEh1ZSA9ICRodWUgLyAzNjA7CiAgICAgICAgJHNjYWxlZFdoaXRlbmVzcyA9IE51bWJlclV0aWw6OmZ1enp5QXNzZXJ0UmFuZ2UoJHdoaXRlbmVzcywgMCwgMTAwLCAnd2hpdGVuZXNzJykgLyAxMDA7CiAgICAgICAgJHNjYWxlZEJsYWNrbmVzcyA9IE51bWJlclV0aWw6OmZ1enp5QXNzZXJ0UmFuZ2UoJGJsYWNrbmVzcywgMCwgMTAwLCAnYmxhY2tuZXNzJykgLyAxMDA7CgogICAgICAgICRzdW0gPSAkc2NhbGVkV2hpdGVuZXNzICsgJHNjYWxlZEJsYWNrbmVzczsKCiAgICAgICAgaWYgKCRzdW0gPiAxKSB7CiAgICAgICAgICAgICRzY2FsZWRXaGl0ZW5lc3MgLz0gJHN1bTsKICAgICAgICAgICAgJHNjYWxlZEJsYWNrbmVzcyAvPSAkc3VtOwogICAgICAgIH0KCiAgICAgICAgJGZhY3RvciA9IDEgLSAkc2NhbGVkV2hpdGVuZXNzIC0gJHNjYWxlZEJsYWNrbmVzczsKCiAgICAgICAgJHRvUmdiID0gZnVuY3Rpb24gKGZsb2F0ICRodWUpIHVzZSAoJGZhY3RvciwgJHNjYWxlZFdoaXRlbmVzcykgewogICAgICAgICAgICAkY2hhbm5lbCA9IHNlbGY6Omh1ZVRvUmdiKDAsIDEsICRodWUpICogJGZhY3RvciArICRzY2FsZWRXaGl0ZW5lc3M7CgogICAgICAgICAgICByZXR1cm4gTnVtYmVyVXRpbDo6ZnV6enlSb3VuZCgkY2hhbm5lbCAqIDI1NSk7CiAgICAgICAgfTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OnJnYigkdG9SZ2IoJHNjYWxlZEh1ZSArIDEgLyAzKSwgJHRvUmdiKCRzY2FsZWRIdWUpLCAkdG9SZ2IoJHNjYWxlZEh1ZSAtIDEgLyAzKSwgJGFscGhhKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbXVzdCBhbHdheXMgcHJvdmlkZSBub24tbnVsbCB2YWx1ZXMgZm9yIGVpdGhlciBSR0Igb3IgSFNMIHZhbHVlcy4KICAgICAqIElmIHRoZXkgYXJlIGFsbCBwcm92aWRlZCwgdGhleSBhcmUgZXhwZWN0ZWQgdG8gYmUgaW4gc3luYyBhbmQgdGhpcyBub3QKICAgICAqIHJldmFsaWRhdGVkLiBUaGlzIGNvbnN0cnVjdG9yIGRvZXMgbm90IHJldmFsaWRhdGUgcmFuZ2VzIGVpdGhlci4KICAgICAqIFVzZSBuYW1lZCBmYWN0b3JpZXMgd2hlbiB0aGlzIGNhbm5vdCBiZSBndWFyYW50ZWVkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KD9pbnQgJHJlZCwgP2ludCAkZ3JlZW4sID9pbnQgJGJsdWUsID9mbG9hdCAkaHVlLCA/ZmxvYXQgJHNhdHVyYXRpb24sID9mbG9hdCAkbGlnaHRuZXNzLCBmbG9hdCAkYWxwaGEsID9Db2xvckZvcm1hdCAkZm9ybWF0ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+cmVkID0gJHJlZDsKICAgICAgICAkdGhpcy0+Z3JlZW4gPSAkZ3JlZW47CiAgICAgICAgJHRoaXMtPmJsdWUgPSAkYmx1ZTsKICAgICAgICAkdGhpcy0+aHVlID0gJGh1ZTsKICAgICAgICAkdGhpcy0+c2F0dXJhdGlvbiA9ICRzYXR1cmF0aW9uOwogICAgICAgICR0aGlzLT5saWdodG5lc3MgPSAkbGlnaHRuZXNzOwogICAgICAgICR0aGlzLT5hbHBoYSA9ICRhbHBoYTsKICAgICAgICAkdGhpcy0+Zm9ybWF0ID0gJGZvcm1hdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVkKCk6IGludAogICAgewogICAgICAgIGlmIChcaXNfbnVsbCgkdGhpcy0+cmVkKSkgewogICAgICAgICAgICAkdGhpcy0+aHNsVG9SZ2IoKTsKICAgICAgICAgICAgYXNzZXJ0KCFcaXNfbnVsbCgkdGhpcy0+cmVkKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnJlZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0R3JlZW4oKTogaW50CiAgICB7CiAgICAgICAgaWYgKFxpc19udWxsKCR0aGlzLT5ncmVlbikpIHsKICAgICAgICAgICAgJHRoaXMtPmhzbFRvUmdiKCk7CiAgICAgICAgICAgIGFzc2VydCghXGlzX251bGwoJHRoaXMtPmdyZWVuKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmdyZWVuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCbHVlKCk6IGludAogICAgewogICAgICAgIGlmIChcaXNfbnVsbCgkdGhpcy0+Ymx1ZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmhzbFRvUmdiKCk7CiAgICAgICAgICAgIGFzc2VydCghXGlzX251bGwoJHRoaXMtPmJsdWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Ymx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SHVlKCk6IGZsb2F0CiAgICB7CiAgICAgICAgaWYgKFxpc19udWxsKCR0aGlzLT5odWUpKSB7CiAgICAgICAgICAgICR0aGlzLT5yZ2JUb0hzbCgpOwogICAgICAgICAgICBhc3NlcnQoIVxpc19udWxsKCR0aGlzLT5odWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+aHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTYXR1cmF0aW9uKCk6IGZsb2F0CiAgICB7CiAgICAgICAgaWYgKFxpc19udWxsKCR0aGlzLT5zYXR1cmF0aW9uKSkgewogICAgICAgICAgICAkdGhpcy0+cmdiVG9Ic2woKTsKICAgICAgICAgICAgYXNzZXJ0KCFcaXNfbnVsbCgkdGhpcy0+c2F0dXJhdGlvbikpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5zYXR1cmF0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMaWdodG5lc3MoKTogZmxvYXQKICAgIHsKICAgICAgICBpZiAoXGlzX251bGwoJHRoaXMtPmxpZ2h0bmVzcykpIHsKICAgICAgICAgICAgJHRoaXMtPnJnYlRvSHNsKCk7CiAgICAgICAgICAgIGFzc2VydCghXGlzX251bGwoJHRoaXMtPmxpZ2h0bmVzcykpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5saWdodG5lc3M7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFdoaXRlbmVzcygpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiBtaW4oJHRoaXMtPmdldFJlZCgpLCAkdGhpcy0+Z2V0R3JlZW4oKSwgJHRoaXMtPmdldEJsdWUoKSkgLyAyNTUgKiAxMDA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEJsYWNrbmVzcygpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiAxMDAgLSBtYXgoJHRoaXMtPmdldFJlZCgpLCAkdGhpcy0+Z2V0R3JlZW4oKSwgJHRoaXMtPmdldEJsdWUoKSkgLyAyNTUgKiAxMDA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFscGhhKCk6IGZsb2F0CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbHBoYTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBmb3JtYXQgaW4gd2hpY2ggdGhpcyBjb2xvciB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGFuZCBzaG91bGQgYmUKICAgICAqIHNlcmlhbGl6ZWQgaW4gZXhwYW5kZWQgbW9kZSwgb3IgYG51bGxgIGlmIHRoZSBjb2xvciB3YXNuJ3Qgd3JpdHRlbiBpbiBhCiAgICAgKiBzdXBwb3J0ZWQgZm9ybWF0LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Rm9ybWF0KCk6ID9Db2xvckZvcm1hdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Zm9ybWF0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoVmFsdWVWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRDb2xvcigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydENvbG9yKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc0NvbG9yCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGFuZ2VSZ2IoP2ludCAkcmVkID0gbnVsbCwgP2ludCAkZ3JlZW4gPSBudWxsLCA/aW50ICRibHVlID0gbnVsbCwgP2Zsb2F0ICRhbHBoYSA9IG51bGwpOiBTYXNzQ29sb3IKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6cmdiKCRyZWQgPz8gJHRoaXMtPmdldFJlZCgpLCAkZ3JlZW4gPz8gJHRoaXMtPmdldEdyZWVuKCksICRibHVlID8/ICR0aGlzLT5nZXRCbHVlKCksICRhbHBoYSA/PyAkdGhpcy0+YWxwaGEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGFuZ2VIc2woP2Zsb2F0ICRodWUgPSBudWxsLCA/ZmxvYXQgJHNhdHVyYXRpb24gPSBudWxsLCA/ZmxvYXQgJGxpZ2h0bmVzcyA9IG51bGwsID9mbG9hdCAkYWxwaGEgPSBudWxsKTogU2Fzc0NvbG9yCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmhzbCgkaHVlID8/ICR0aGlzLT5nZXRIdWUoKSwgJHNhdHVyYXRpb24gPz8gJHRoaXMtPmdldFNhdHVyYXRpb24oKSwgJGxpZ2h0bmVzcyA/PyAkdGhpcy0+Z2V0TGlnaHRuZXNzKCksICRhbHBoYSA/PyAkdGhpcy0+YWxwaGEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGFuZ2VId2IoP2Zsb2F0ICRodWUgPSBudWxsLCA/ZmxvYXQgJHdoaXRlbmVzcyA9IG51bGwsID9mbG9hdCAkYmxhY2tuZXNzID0gbnVsbCwgP2Zsb2F0ICRhbHBoYSA9IG51bGwpOiBTYXNzQ29sb3IKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6aHdiKCRodWUgPz8gJHRoaXMtPmdldEh1ZSgpLCAkd2hpdGVuZXNzID8/ICR0aGlzLT5nZXRXaGl0ZW5lc3MoKSwgJGJsYWNrbmVzcyA/PyAkdGhpcy0+Z2V0QmxhY2tuZXNzKCksICRhbHBoYSA/PyAkdGhpcy0+YWxwaGEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGFuZ2VBbHBoYShmbG9hdCAkYWxwaGEpOiBTYXNzQ29sb3IKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoCiAgICAgICAgICAgICR0aGlzLT5yZWQsCiAgICAgICAgICAgICR0aGlzLT5ncmVlbiwKICAgICAgICAgICAgJHRoaXMtPmJsdWUsCiAgICAgICAgICAgICR0aGlzLT5odWUsCiAgICAgICAgICAgICR0aGlzLT5zYXR1cmF0aW9uLAogICAgICAgICAgICAkdGhpcy0+bGlnaHRuZXNzLAogICAgICAgICAgICBOdW1iZXJVdGlsOjpmdXp6eUFzc2VydFJhbmdlKCRhbHBoYSwgMCwgMSwgJ2FscGhhJykKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwbHVzKFZhbHVlICRvdGhlcik6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCEkb3RoZXIgaW5zdGFuY2VvZiBTYXNzQ29sb3IgJiYgISRvdGhlciBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6cGx1cygkb3RoZXIpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlVuZGVmaW5lZCBvcGVyYXRpb24gXCIkdGhpcyArICRvdGhlclwiLiIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtaW51cyhWYWx1ZSAkb3RoZXIpOiBWYWx1ZQogICAgewogICAgICAgIGlmICghJG90aGVyIGluc3RhbmNlb2YgU2Fzc0NvbG9yICYmICEkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6Om1pbnVzKCRvdGhlcik7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVW5kZWZpbmVkIG9wZXJhdGlvbiBcIiR0aGlzIC0gJG90aGVyXCIuIik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRpdmlkZWRCeShWYWx1ZSAkb3RoZXIpOiBWYWx1ZQogICAgewogICAgICAgIGlmICghJG90aGVyIGluc3RhbmNlb2YgU2Fzc0NvbG9yICYmICEkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6OmRpdmlkZWRCeSgkb3RoZXIpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlVuZGVmaW5lZCBvcGVyYXRpb24gXCIkdGhpcyAvICRvdGhlclwiLiIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtb2R1bG8oVmFsdWUgJG90aGVyKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoISRvdGhlciBpbnN0YW5jZW9mIFNhc3NDb2xvciAmJiAhJG90aGVyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICByZXR1cm4gcGFyZW50Ojptb2R1bG8oJG90aGVyKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJVbmRlZmluZWQgb3BlcmF0aW9uIFwiJHRoaXMgJSAkb3RoZXJcIi4iKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRvdGhlciBpbnN0YW5jZW9mIFNhc3NDb2xvciAmJiAkdGhpcy0+Z2V0UmVkKCkgPT09ICRvdGhlci0+Z2V0UmVkKCkgJiYgJHRoaXMtPmdldEdyZWVuKCkgPT09ICRvdGhlci0+Z2V0R3JlZW4oKSAmJiAkdGhpcy0+Z2V0Qmx1ZSgpID09PSAkb3RoZXItPmdldEJsdWUoKSAmJiAkdGhpcy0+YWxwaGEgPT09ICRvdGhlci0+YWxwaGE7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiByZ2JUb0hzbCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHNjYWxlZFJlZCA9ICR0aGlzLT5nZXRSZWQoKSAvIDI1NTsKICAgICAgICAkc2NhbGVkR3JlZW4gPSAkdGhpcy0+Z2V0R3JlZW4oKSAvIDI1NTsKICAgICAgICAkc2NhbGVkQmx1ZSA9ICR0aGlzLT5nZXRCbHVlKCkgLyAyNTU7CgogICAgICAgICRtaW4gPSBtaW4oJHNjYWxlZFJlZCwgJHNjYWxlZEdyZWVuLCAkc2NhbGVkQmx1ZSk7CiAgICAgICAgJG1heCA9IG1heCgkc2NhbGVkUmVkLCAkc2NhbGVkR3JlZW4sICRzY2FsZWRCbHVlKTsKICAgICAgICAkZGVsdGEgPSAkbWF4IC0gJG1pbjsKCiAgICAgICAgaWYgKCRkZWx0YSA9PSAwKSB7CiAgICAgICAgICAgICR0aGlzLT5odWUgPSAwOwogICAgICAgIH0gZWxzZWlmICgkbWF4ID09ICRzY2FsZWRSZWQpIHsKICAgICAgICAgICAgJHRoaXMtPmh1ZSA9IGZtb2QoNjAgKiAoJHNjYWxlZEdyZWVuIC0gJHNjYWxlZEJsdWUpIC8gJGRlbHRhLCAzNjApOwogICAgICAgIH0gZWxzZWlmICgkbWF4ID09ICRzY2FsZWRHcmVlbikgewogICAgICAgICAgICAkdGhpcy0+aHVlID0gZm1vZCgxMjAgKyA2MCAqICgkc2NhbGVkQmx1ZSAtICRzY2FsZWRSZWQpIC8gJGRlbHRhLCAzNjApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5odWUgPSBmbW9kKDI0MCArIDYwICogKCRzY2FsZWRSZWQgLSAkc2NhbGVkR3JlZW4pIC8gJGRlbHRhLCAzNjApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5odWUgPCAwKSB7CiAgICAgICAgICAgICR0aGlzLT5odWUgKz0gMzYwOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmxpZ2h0bmVzcyA9IDUwICogKCRtYXggKyAkbWluKTsKCiAgICAgICAgaWYgKCRtYXggPT0gJG1pbikgewogICAgICAgICAgICAkdGhpcy0+c2F0dXJhdGlvbiA9IDA7CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5saWdodG5lc3MgPCA1MCkgewogICAgICAgICAgICAkdGhpcy0+c2F0dXJhdGlvbiA9IDEwMCAqICRkZWx0YSAvICgkbWF4ICsgJG1pbik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnNhdHVyYXRpb24gPSAxMDAgKiAkZGVsdGEgLyAoMiAtICRtYXggLSAkbWluKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBoc2xUb1JnYigpOiB2b2lkCiAgICB7CiAgICAgICAgJHNjYWxlZEh1ZSA9ICR0aGlzLT5nZXRIdWUoKSAvIDM2MDsKICAgICAgICAkc2NhbGVkU2F0dXJhdGlvbiA9ICR0aGlzLT5nZXRTYXR1cmF0aW9uKCkgLyAxMDA7CiAgICAgICAgJHNjYWxlZExpZ2h0bmVzcyA9ICR0aGlzLT5nZXRMaWdodG5lc3MoKSAvIDEwMDsKCiAgICAgICAgaWYgKCRzY2FsZWRMaWdodG5lc3MgPD0gMC41KSB7CiAgICAgICAgICAgICRtMiA9ICRzY2FsZWRMaWdodG5lc3MgKiAoJHNjYWxlZFNhdHVyYXRpb24gKyAxKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbTIgPSAkc2NhbGVkTGlnaHRuZXNzICsgJHNjYWxlZFNhdHVyYXRpb24gLSAkc2NhbGVkTGlnaHRuZXNzICogJHNjYWxlZFNhdHVyYXRpb247CiAgICAgICAgfQoKICAgICAgICAkbTEgPSAkc2NhbGVkTGlnaHRuZXNzICogMiAtICRtMjsKCiAgICAgICAgJHRoaXMtPnJlZCA9IE51bWJlclV0aWw6OmZ1enp5Um91bmQoc2VsZjo6aHVlVG9SZ2IoJG0xLCAkbTIsICRzY2FsZWRIdWUgKyAxIC8gMykgKiAyNTUpOwogICAgICAgICR0aGlzLT5ncmVlbiA9IE51bWJlclV0aWw6OmZ1enp5Um91bmQoc2VsZjo6aHVlVG9SZ2IoJG0xLCAkbTIsICRzY2FsZWRIdWUpICogMjU1KTsKICAgICAgICAkdGhpcy0+Ymx1ZSA9IE51bWJlclV0aWw6OmZ1enp5Um91bmQoc2VsZjo6aHVlVG9SZ2IoJG0xLCAkbTIsICRzY2FsZWRIdWUgLSAxIC8gMykgKiAyNTUpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGh1ZVRvUmdiKGZsb2F0ICRtMSwgZmxvYXQgJG0yLCBmbG9hdCAkaHVlKTogZmxvYXQKICAgIHsKICAgICAgICBpZiAoJGh1ZSA8IDApIHsKICAgICAgICAgICAgJGh1ZSArPSAxOwogICAgICAgIH0gZWxzZWlmICgkaHVlID4gMSkgewogICAgICAgICAgICAkaHVlIC09IDE7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGh1ZSA8IDEgLyA2KSB7CiAgICAgICAgICAgIHJldHVybiAkbTEgKyAoJG0yIC0gJG0xKSAqICRodWUgKiA2OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRodWUgPCAxIC8gMikgewogICAgICAgICAgICByZXR1cm4gJG0yOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRodWUgPCAyIC8gMykgewogICAgICAgICAgICByZXR1cm4gJG0xICsgKCRtMiAtICRtMSkgKiAoMiAvIDMgLSAkaHVlKSAqIDY7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG0xOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassFunction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxTYXNzQ2FsbGFibGVcU2Fzc0NhbGxhYmxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKCi8qKgogKiBBIFNhc3NTY3JpcHQgZnVuY3Rpb24gcmVmZXJlbmNlLgogKgogKiBBIGZ1bmN0aW9uIHJlZmVyZW5jZSBjYXB0dXJlcyBhIGZ1bmN0aW9uIGZyb20gdGhlIGxvY2FsIGVudmlyb25tZW50IHNvIHRoYXQKICogaXQgbWF5IGJlIHBhc3NlZCBiZXR3ZWVuIG1vZHVsZXMuCiAqLwpmaW5hbCBjbGFzcyBTYXNzRnVuY3Rpb24gZXh0ZW5kcyBWYWx1ZQp7CiAgICBwcml2YXRlIHJlYWRvbmx5IFNhc3NDYWxsYWJsZSAkY2FsbGFibGU7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFNhc3NDYWxsYWJsZSAkY2FsbGFibGUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNhbGxhYmxlID0gJGNhbGxhYmxlOwogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDYWxsYWJsZSgpOiBTYXNzQ2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNhbGxhYmxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoVmFsdWVWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRGdW5jdGlvbigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydEZ1bmN0aW9uKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc0Z1bmN0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgU2Fzc0Z1bmN0aW9uICYmIEVxdWF0YWJsZVV0aWw6OmVxdWFscygkdGhpcy0+Y2FsbGFibGUsICRvdGhlci0+Y2FsbGFibGUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIEppcmlQdWRpbFxTZWFsZWRDbGFzc2VzXFNlYWxlZDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKCi8qKgogKiBBIFNhc3NTY3JpcHQgbGlzdC4KICovCiNbU2VhbGVkKHBlcm1pdHM6IFtTYXNzQXJndW1lbnRMaXN0OjpjbGFzc10pXQpjbGFzcyBTYXNzTGlzdCBleHRlbmRzIFZhbHVlCnsKICAgIC8qKgogICAgICogQHZhciBsaXN0PFZhbHVlPgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGFycmF5ICRjb250ZW50czsKCiAgICBwcml2YXRlIHJlYWRvbmx5IExpc3RTZXBhcmF0b3IgJHNlcGFyYXRvcjsKCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJGJyYWNrZXRzOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRW1wdHkoTGlzdFNlcGFyYXRvciAkc2VwYXJhdG9yID0gTGlzdFNlcGFyYXRvcjo6VU5ERUNJREVELCBib29sICRicmFja2V0cyA9IGZhbHNlKTogU2Fzc0xpc3QKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoYXJyYXkoKSwgJHNlcGFyYXRvciwgJGJyYWNrZXRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PFZhbHVlPiAkY29udGVudHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRjb250ZW50cywgTGlzdFNlcGFyYXRvciAkc2VwYXJhdG9yLCBib29sICRicmFja2V0cyA9IGZhbHNlKQogICAgewogICAgICAgIGlmICgkc2VwYXJhdG9yID09PSBMaXN0U2VwYXJhdG9yOjpVTkRFQ0lERUQgJiYgY291bnQoJGNvbnRlbnRzKSA+IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0EgbGlzdCB3aXRoIG1vcmUgdGhhbiBvbmUgZWxlbWVudCBtdXN0IGhhdmUgYW4gZXhwbGljaXQgc2VwYXJhdG9yLicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvbnRlbnRzID0gJGNvbnRlbnRzOwogICAgICAgICR0aGlzLT5zZXBhcmF0b3IgPSAkc2VwYXJhdG9yOwogICAgICAgICR0aGlzLT5icmFja2V0cyA9ICRicmFja2V0czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VwYXJhdG9yKCk6IExpc3RTZXBhcmF0b3IKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlcGFyYXRvcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzQnJhY2tldHMoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YnJhY2tldHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzQmxhbmsoKTogYm9vbAogICAgewogICAgICAgIGlmICgkdGhpcy0+YnJhY2tldHMpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNvbnRlbnRzIGFzICRlbGVtZW50KSB7CiAgICAgICAgICAgIGlmICghJGVsZW1lbnQtPmlzQmxhbmsoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNMaXN0KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb250ZW50czsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGVuZ3RoQXNMaXN0KCk6IGludAogICAgewogICAgICAgIHJldHVybiBcY291bnQoJHRoaXMtPmNvbnRlbnRzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFZhbHVlVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0TGlzdCgkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE1hcCg/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NNYXAKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5jb250ZW50cykgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZUVtcHR5KCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFyZW50Ojphc3NlcnRNYXAoJG5hbWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0cnlNYXAoKTogP1Nhc3NNYXAKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5jb250ZW50cykgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZUVtcHR5KCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKG9iamVjdCAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NNYXApIHsKICAgICAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+Y29udGVudHMpID09PSAwICYmIFxjb3VudCgkb3RoZXItPmFzTGlzdCgpKSA9PT0gMDsKICAgICAgICB9CgogICAgICAgIGlmICghJG90aGVyIGluc3RhbmNlb2YgU2Fzc0xpc3QpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5zZXBhcmF0b3IgIT09ICRvdGhlci0+c2VwYXJhdG9yIHx8ICR0aGlzLT5icmFja2V0cyAhPT0gJG90aGVyLT5icmFja2V0cykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkb3RoZXJDb250ZW50ID0gJG90aGVyLT5jb250ZW50czsKICAgICAgICAkbGVuZ3RoID0gXGNvdW50KCR0aGlzLT5jb250ZW50cyk7CgogICAgICAgIGlmICgkbGVuZ3RoICE9PSBcY291bnQoJG90aGVyQ29udGVudCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgKyskaSkgewogICAgICAgICAgICBpZiAoISR0aGlzLT5jb250ZW50c1skaV0tPmVxdWFscygkb3RoZXJDb250ZW50WyRpXSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassMap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb2xsZWN0aW9uXE1hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKCi8qKgogKiBBIFNhc3NTY3JpcHQgbWFwLgogKi8KZmluYWwgY2xhc3MgU2Fzc01hcCBleHRlbmRzIFZhbHVlCnsKICAgIC8qKgogICAgICogQHZhciBNYXA8VmFsdWU+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgTWFwICRjb250ZW50czsKCiAgICAvKioKICAgICAqIEBwYXJhbSBNYXA8VmFsdWU+ICRjb250ZW50cwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KE1hcCAkY29udGVudHMpCiAgICB7CiAgICAgICAgJHRoaXMtPmNvbnRlbnRzID0gTWFwOjp1bm1vZGlmaWFibGUoJGNvbnRlbnRzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUVtcHR5KCk6IFNhc3NNYXAKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYobmV3IE1hcCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBNYXA8VmFsdWU+ICRjb250ZW50cwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZShNYXAgJGNvbnRlbnRzKTogU2Fzc01hcAogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkY29udGVudHMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHJldHVybmVkIE1hcCBpcyB1bm1vZGlmaWFibGUuCiAgICAgKgogICAgICogQHJldHVybiBNYXA8VmFsdWU+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpOiBNYXAKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXBhcmF0b3IoKTogTGlzdFNlcGFyYXRvcgogICAgewogICAgICAgIHJldHVybiBcY291bnQoJHRoaXMtPmNvbnRlbnRzKSA9PT0gMCA/IExpc3RTZXBhcmF0b3I6OlVOREVDSURFRCA6IExpc3RTZXBhcmF0b3I6OkNPTU1BOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhc0xpc3QoKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb250ZW50cyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkcmVzdWx0W10gPSBuZXcgU2Fzc0xpc3QoWyRrZXksICR2YWx1ZV0sIExpc3RTZXBhcmF0b3I6OlNQQUNFKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRMZW5ndGhBc0xpc3QoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+Y29udGVudHMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoVmFsdWVWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRNYXAoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRNYXAoP3N0cmluZyAkbmFtZSA9IG51bGwpOiBTYXNzTWFwCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0cnlNYXAoKTogP1Nhc3NNYXAKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTGlzdCkgewogICAgICAgICAgICByZXR1cm4gXGNvdW50KCR0aGlzLT5jb250ZW50cykgPT09IDAgJiYgXGNvdW50KCRvdGhlci0+YXNMaXN0KCkpID09PSAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTWFwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+Y29udGVudHMgPT09ICRvdGhlci0+Y29udGVudHMpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5jb250ZW50cykgIT09IFxjb3VudCgkb3RoZXItPmNvbnRlbnRzKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y29udGVudHMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgJG90aGVyVmFsdWUgPSAkb3RoZXItPmNvbnRlbnRzLT5nZXQoJGtleSk7CgogICAgICAgICAgICBpZiAoJG90aGVyVmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEkdmFsdWUtPmVxdWFscygkb3RoZXJWYWx1ZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassMixin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxTYXNzQ2FsbGFibGVcU2Fzc0NhbGxhYmxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcRXF1YXRhYmxlVXRpbDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKCi8qKgogKiBBIFNhc3NTY3JpcHQgbWl4aW4gcmVmZXJlbmNlLgogKgogKiBBIG1peGluIHJlZmVyZW5jZSBjYXB0dXJlcyBhIG1peGluIGZyb20gdGhlIGxvY2FsIGVudmlyb25tZW50IHNvIHRoYXQKICogaXQgbWF5IGJlIHBhc3NlZCBiZXR3ZWVuIG1vZHVsZXMuCiAqLwpmaW5hbCBjbGFzcyBTYXNzTWl4aW4gZXh0ZW5kcyBWYWx1ZQp7CiAgICBwcml2YXRlIHJlYWRvbmx5IFNhc3NDYWxsYWJsZSAkY2FsbGFibGU7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFNhc3NDYWxsYWJsZSAkY2FsbGFibGUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNhbGxhYmxlID0gJGNhbGxhYmxlOwogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDYWxsYWJsZSgpOiBTYXNzQ2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNhbGxhYmxlOwogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoVmFsdWVWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXRNaXhpbigkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE1peGluKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc01peGluCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgU2Fzc01peGluICYmIEVxdWF0YWJsZVV0aWw6OmVxdWFscygkdGhpcy0+Y2FsbGFibGUsICRvdGhlci0+Y2FsbGFibGUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassNull.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKCi8qKgogKiBUaGUgU2Fzc1NjcmlwdCBgbnVsbGAgdmFsdWUuCiAqLwpmaW5hbCBjbGFzcyBTYXNzTnVsbCBleHRlbmRzIFZhbHVlCnsKICAgIHByaXZhdGUgc3RhdGljIFNhc3NOdWxsICRpbnN0YW5jZTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZSgpOiBTYXNzTnVsbAogICAgewogICAgICAgIHJldHVybiBzZWxmOjokaW5zdGFuY2UgPz89IG5ldyBzZWxmKCk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzVHJ1dGh5KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzQmxhbmsoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFsTnVsbCgpOiA/VmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KFZhbHVlVmlzaXRvciAkdmlzaXRvcikKICAgIHsKICAgICAgICByZXR1cm4gJHZpc2l0b3ItPnZpc2l0TnVsbCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgU2Fzc051bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHVuYXJ5Tm90KCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUodHJ1ZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassNumber.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIEppcmlQdWRpbFxTZWFsZWRDbGFzc2VzXFNlYWxlZDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXE51bWJlclV0aWw7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxTdHJpbmdVdGlsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3JcVmFsdWVWaXNpdG9yOwoKLyoqCiAqIEEgU2Fzc1NjcmlwdCBudW1iZXIuCiAqCiAqIE51bWJlcnMgY2FuIGhhdmUgdW5pdHMuIEFsdGhvdWdoIHRoZXJlJ3Mgbm8gbGl0ZXJhbCBzeW50YXggZm9yIGl0LCBudW1iZXJzCiAqIHN1cHBvcnQgc2NpZW50aWZpYy1zdHlsZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIHVuaXRzIChmb3IgZXhhbXBsZSwKICogYG1pbGVzL2hvdXJgKS4gVGhlc2UgYXJlIGV4cGVjdGVkIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBiZWluZyBlbWl0dGVkIHRvCiAqIENTUy4KICovCiNbU2VhbGVkKHBlcm1pdHM6IFtVbml0bGVzc1Nhc3NOdW1iZXI6OmNsYXNzLCBTaW5nbGVVbml0U2Fzc051bWJlcjo6Y2xhc3MsIENvbXBsZXhTYXNzTnVtYmVyOjpjbGFzc10pXQphYnN0cmFjdCBjbGFzcyBTYXNzTnVtYmVyIGV4dGVuZHMgVmFsdWUKewogICAgZmluYWwgY29uc3QgUFJFQ0lTSU9OID0gMTA7CgogICAgLyoqCiAgICAgKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdmFsdWVzLTMvCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgQ09OVkVSU0lPTlMgPSBbCiAgICAgICAgJ2luJyA9PiBbCiAgICAgICAgICAgICdpbicgPT4gMS4wLAogICAgICAgICAgICAncGMnID0+IDYuMCwKICAgICAgICAgICAgJ3B0JyA9PiA3Mi4wLAogICAgICAgICAgICAncHgnID0+IDk2LjAsCiAgICAgICAgICAgICdjbScgPT4gMi41NCwKICAgICAgICAgICAgJ21tJyA9PiAyNS40LAogICAgICAgICAgICAncScgID0+IDEwMS42LAogICAgICAgIF0sCiAgICAgICAgJ2RlZycgPT4gWwogICAgICAgICAgICAnZGVnJyAgPT4gMzYwLjAsCiAgICAgICAgICAgICdncmFkJyA9PiA0MDAuMCwKICAgICAgICAgICAgJ3JhZCcgID0+IDIgKiBNX1BJLAogICAgICAgICAgICAndHVybicgPT4gMS4wLAogICAgICAgIF0sCiAgICAgICAgJ3MnID0+IFsKICAgICAgICAgICAgJ3MnICA9PiAxLjAsCiAgICAgICAgICAgICdtcycgPT4gMTAwMC4wLAogICAgICAgIF0sCiAgICAgICAgJ0h6JyA9PiBbCiAgICAgICAgICAgICdIeicgID0+IDEuMCwKICAgICAgICAgICAgJ2tIeicgPT4gMC4wMDEsCiAgICAgICAgXSwKICAgICAgICAnZHBpJyA9PiBbCiAgICAgICAgICAgICdkcGknICA9PiAxLjAsCiAgICAgICAgICAgICdkcGNtJyA9PiAxIC8gMi41NCwKICAgICAgICAgICAgJ2RwcHgnID0+IDEgLyA5NiwKICAgICAgICBdLAogICAgXTsKCiAgICAvKioKICAgICAqIEEgbWFwIGZyb20gaHVtYW4tcmVhZGFibGUgbmFtZXMgb2YgdW5pdCB0eXBlcyB0byB0aGUgY29udmVydGlibGUgdW5pdHMgdGhhdAogICAgICogZmFsbCBpbnRvIHRob3NlIHR5cGVzLgogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFVOSVRTX0JZX1RZUEUgPSBbCiAgICAgICAgJ2xlbmd0aCcgPT4gWydpbicsICdjbScsICdwYycsICdtbScsICdxJywgJ3B0JywgJ3B4J10sCiAgICAgICAgJ2FuZ2xlJyA9PiBbJ2RlZycsICdncmFkJywgJ3JhZCcsICd0dXJuJ10sCiAgICAgICAgJ3RpbWUnID0+IFsncycsICdtcyddLAogICAgICAgICdmcmVxdWVuY3knID0+IFsnSHonLCAna0h6J10sCiAgICAgICAgJ3BpeGVsIGRlbnNpdHknID0+IFsnZHBpJywgJ2RwY20nLCAnZHBweCddCiAgICBdOwoKICAgIC8qKgogICAgICogQSBtYXAgZnJvbSB1bml0cyB0byB0aGUgaHVtYW4tcmVhZGFibGUgbmFtZXMgb2YgdGhvc2UgdW5pdCB0eXBlcy4KICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBUWVBFU19CWV9VTklUID0gWwogICAgICAgICdpbicgPT4gJ2xlbmd0aCcsCiAgICAgICAgJ2NtJyA9PiAnbGVuZ3RoJywKICAgICAgICAncGMnID0+ICdsZW5ndGgnLAogICAgICAgICdtbScgPT4gJ2xlbmd0aCcsCiAgICAgICAgJ3EnID0+ICdsZW5ndGgnLAogICAgICAgICdwdCcgPT4gJ2xlbmd0aCcsCiAgICAgICAgJ3B4JyA9PiAnbGVuZ3RoJywKICAgICAgICAnZGVnJyA9PiAnYW5nbGUnLAogICAgICAgICdncmFkJyA9PiAnYW5nbGUnLAogICAgICAgICdyYWQnID0+ICdhbmdsZScsCiAgICAgICAgJ3R1cm4nID0+ICdhbmdsZScsCiAgICAgICAgJ3MnID0+ICd0aW1lJywKICAgICAgICAnbXMnID0+ICd0aW1lJywKICAgICAgICAnSHonID0+ICdmcmVxdWVuY3knLAogICAgICAgICdrSHonID0+ICdmcmVxdWVuY3knLAogICAgICAgICdkcGknID0+ICdwaXhlbCBkZW5zaXR5JywKICAgICAgICAnZHBjbScgPT4gJ3BpeGVsIGRlbnNpdHknLAogICAgICAgICdkcHB4JyA9PiAncGl4ZWwgZGVuc2l0eScsCiAgICBdOwoKICAgIHByaXZhdGUgcmVhZG9ubHkgZmxvYXQgJHZhbHVlOwoKICAgIC8qKgogICAgICogVGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbnVtYmVyIGFzIHR3byBzbGFzaC1zZXBhcmF0ZWQgbnVtYmVycywgaWYgaXQgaGFzIG9uZS4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5e1Nhc3NOdW1iZXIsIFNhc3NOdW1iZXJ9fG51bGwKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5ID9hcnJheSAkYXNTbGFzaDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheXtTYXNzTnVtYmVyLCBTYXNzTnVtYmVyfXxudWxsICRhc1NsYXNoCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfX2NvbnN0cnVjdChmbG9hdCAkdmFsdWUsID9hcnJheSAkYXNTbGFzaCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgICAgICR0aGlzLT5hc1NsYXNoID0gJGFzU2xhc2g7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbnVtYmVyLCBvcHRpb25hbGx5IHdpdGggYSBzaW5nbGUgbnVtZXJhdG9yIHVuaXQuCiAgICAgKgogICAgICogVGhpcyBtYXRjaGVzIHRoZSBudW1iZXJzIHRoYXQgY2FuIGJlIHdyaXR0ZW4gYXMgbGl0ZXJhbHMuCiAgICAgKiB7QHNlZSBTYXNzTnVtYmVyOjp3aXRoVW5pdHN9IGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBtb3JlIGNvbXBsZXggdW5pdHMuCiAgICAgKi8KICAgIGZpbmFsIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKGZsb2F0ICR2YWx1ZSwgP3N0cmluZyAkdW5pdCA9IG51bGwpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgaWYgKCR1bml0ID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgVW5pdGxlc3NTYXNzTnVtYmVyKCR2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVVuaXRTYXNzTnVtYmVyKCR2YWx1ZSwgJHVuaXQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG51bWJlciB3aXRoIGZ1bGwgJG51bWVyYXRvclVuaXRzIGFuZCAkZGVub21pbmF0b3JVbml0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRudW1lcmF0b3JVbml0cwogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkZGVub21pbmF0b3JVbml0cwogICAgICovCiAgICBmaW5hbCBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdpdGhVbml0cyhmbG9hdCAkdmFsdWUsIGFycmF5ICRudW1lcmF0b3JVbml0cyA9IFtdLCBhcnJheSAkZGVub21pbmF0b3JVbml0cyA9IFtdKTogU2Fzc051bWJlcgogICAgewogICAgICAgIGlmIChlbXB0eSgkbnVtZXJhdG9yVW5pdHMpICYmIGVtcHR5KCRkZW5vbWluYXRvclVuaXRzKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFVuaXRsZXNzU2Fzc051bWJlcigkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGVtcHR5KCRkZW5vbWluYXRvclVuaXRzKSAmJiBcY291bnQoJG51bWVyYXRvclVuaXRzKSA9PT0gMSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVVuaXRTYXNzTnVtYmVyKCR2YWx1ZSwgJG51bWVyYXRvclVuaXRzWzBdKTsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkbnVtZXJhdG9yVW5pdHMpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleFNhc3NOdW1iZXIoJHZhbHVlLCAkbnVtZXJhdG9yVW5pdHMsICRkZW5vbWluYXRvclVuaXRzKTsKICAgICAgICB9CgogICAgICAgICRudW1lcmF0b3JzID0gJG51bWVyYXRvclVuaXRzOwogICAgICAgICR1bnNpbXBsaWZpZWREZW5vbWluYXRvcnMgPSAkZGVub21pbmF0b3JVbml0czsKICAgICAgICAkZGVub21pbmF0b3JzID0gW107CgogICAgICAgIGZvcmVhY2ggKCR1bnNpbXBsaWZpZWREZW5vbWluYXRvcnMgYXMgJGRlbm9taW5hdG9yKSB7CiAgICAgICAgICAgICRzaW1wbGlmaWVkQXdheSA9IGZhbHNlOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG51bWVyYXRvcnMgYXMgJGkgPT4gJG51bWVyYXRvcikgewogICAgICAgICAgICAgICAgJGZhY3RvciA9IHNlbGY6OmdldENvbnZlcnNpb25GYWN0b3IoJGRlbm9taW5hdG9yLCAkbnVtZXJhdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAoJGZhY3RvciA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR2YWx1ZSAqPSAkZmFjdG9yOwogICAgICAgICAgICAgICAgdW5zZXQoJG51bWVyYXRvcnNbJGldKTsKICAgICAgICAgICAgICAgICRzaW1wbGlmaWVkQXdheSA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEkc2ltcGxpZmllZEF3YXkpIHsKICAgICAgICAgICAgICAgICRkZW5vbWluYXRvcnNbXSA9ICRkZW5vbWluYXRvcjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG51bWVyYXRvcnMgPSBhcnJheV92YWx1ZXMoJG51bWVyYXRvcnMpOwoKICAgICAgICBpZiAoZW1wdHkoJGRlbm9taW5hdG9ycykpIHsKICAgICAgICAgICAgaWYgKGVtcHR5KCRudW1lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbml0bGVzc1Nhc3NOdW1iZXIoJHZhbHVlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKFxjb3VudCgkbnVtZXJhdG9ycykgPT09IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVW5pdFNhc3NOdW1iZXIoJHZhbHVlLCAkbnVtZXJhdG9yc1swXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQ29tcGxleFNhc3NOdW1iZXIoJHZhbHVlLCAkbnVtZXJhdG9ycywgJGRlbm9taW5hdG9ycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgdmFsdWUgb2YgdGhpcyBudW1iZXIuCiAgICAgKgogICAgICogTm90ZSB0aGF0IGR1ZSB0byBkZXRhaWxzIG9mIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMsIHRoaXMgbWF5IGJlIGEKICAgICAqIGZsb2F0IGV2ZW4gaWYgJHRoaXMgcmVwcmVzZW50cyBhbiBpbnQgZnJvbSBTYXNzJ3MgcGVyc3BlY3RpdmUuIFVzZQogICAgICoge0BzZWUgaXNJbnR9IHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYW4gaW50ZWdlciwge0BzZWUgYXNJbnR9IHRvIGdldCBpdHMKICAgICAqIGludGVnZXIgdmFsdWUsIG9yIHtAc2VlIGFzc2VydEludH0gdG8gZG8gYm90aCBhdCBvbmNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKTogZmxvYXQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldE51bWVyYXRvclVuaXRzKCk6IGFycmF5OwoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldERlbm9taW5hdG9yVW5pdHMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5e1Nhc3NOdW1iZXIsIFNhc3NOdW1iZXJ9fG51bGwKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGdldEFzU2xhc2goKTogP2FycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hc1NsYXNoOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoVmFsdWVWaXNpdG9yICR2aXNpdG9yKQogICAgewogICAgICAgIHJldHVybiAkdmlzaXRvci0+dmlzaXROdW1iZXIoJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIFNhc3NOdW1iZXIgd2l0aCB0aGlzIHZhbHVlIGFuZCB0aGUgc2FtZSB1bml0cy4KICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIHdpdGhWYWx1ZShmbG9hdCAkdmFsdWUpOiBTYXNzTnVtYmVyOwoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiB3aXRoU2xhc2goU2Fzc051bWJlciAkbnVtZXJhdG9yLCBTYXNzTnVtYmVyICRkZW5vbWluYXRvcik6IFNhc3NOdW1iZXI7CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRTbGFzaCgpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5hc1NsYXNoID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFZhbHVlKCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE51bWJlcig/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbnVtYmVyJ3MgdW5pdHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVbml0U3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGFzVW5pdHMoKSA/IHNlbGY6OmJ1aWxkVW5pdFN0cmluZygkdGhpcy0+Z2V0TnVtZXJhdG9yVW5pdHMoKSwgJHRoaXMtPmdldERlbm9taW5hdG9yVW5pdHMoKSkgOiAnJzsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgJHRoaXMgaXMgYW4gaW50ZWdlciwgYWNjb3JkaW5nIHRvIHtAc2VlIE51bWJlclV0aWw6OmZ1enp5RXF1YWxzfS4KICAgICAqCiAgICAgKiBUaGUgaW50IHZhbHVlIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyB7QHNlZSBhc0ludH0gb3Ige0BzZWUgYXNzZXJ0SW50fS4gTm90ZSB0aGF0CiAgICAgKiB0aGlzIG1heSByZXR1cm4gYGZhbHNlYCBmb3IgdmVyeSBsYXJnZSBkb3VibGVzIGV2ZW4gdGhvdWdoIHRoZXkgbWF5IGJlCiAgICAgKiBtYXRoZW1hdGljYWxseSBpbnRlZ2VycywgYmVjYXVzZSBub3QgYWxsIHBsYXRmb3JtcyBoYXZlIGEgdmFsaWQKICAgICAqIHJlcHJlc2VudGF0aW9uIGZvciBpbnRlZ2VycyB0aGF0IGxhcmdlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNJbnQoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBOdW1iZXJVdGlsOjpmdXp6eUlzSW50KCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiAkdGhpcyBpcyBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byB7QHNlZSBpc0ludH0sIHJldHVybnMge0BzZWUgdmFsdWV9IGFzIGFuIGludC4KICAgICAqCiAgICAgKiBPdGhlcndpc2UsIHJldHVybnMgYG51bGxgLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNJbnQoKTogP2ludAogICAgewogICAgICAgIHJldHVybiBOdW1iZXJVdGlsOjpmdXp6eUFzSW50KCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBhcyBhbiBpbnQsIGlmIGl0J3MgYW4gaW50ZWdlciB2YWx1ZSBhY2NvcmRpbmcgdG8KICAgICAqIHtAc2VlIGlzSW50fS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhlIHZhbHVlIGlzbid0IGFuIGludGVnZXIuIElmIHRoaXMgY2FtZQogICAgICogZnJvbSBhIGZ1bmN0aW9uIGFyZ3VtZW50LCAkbmFtZSBpcyB0aGUgYXJndW1lbnQgbmFtZSAod2l0aG91dCB0aGUgYCRgKS4KICAgICAqIEl0J3MgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0SW50KD9zdHJpbmcgJG5hbWUgPSBudWxsKTogaW50CiAgICB7CiAgICAgICAgJGludGVnZXIgPSBOdW1iZXJVdGlsOjpmdXp6eUFzSW50KCR0aGlzLT52YWx1ZSk7CgogICAgICAgIGlmICgkaW50ZWdlciAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJGludGVnZXI7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHRoaXMgaXMgbm90IGFuIGludC4iLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiB7QHNlZSB2YWx1ZX0gaXMgYmV0d2VlbiAkbWluIGFuZCAkbWF4LCByZXR1cm5zIGl0LgogICAgICoKICAgICAqIElmIHtAc2VlIHZhbHVlfSBpcyB7QHNlZSBOdW1iZXJVdGlsOjpmdXp6eUVxdWFsc30gdG8gJG1pbiBvciAkbWF4LCBpdCdzIGNsYW1wZWQgdG8gdGhlCiAgICAgKiBhcHByb3ByaWF0ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGlzIHRocm93cyBhIHtAc2VlIFNhc3NTY3JpcHRFeGNlcHRpb259LiBJZiB0aGlzCiAgICAgKiBjYW1lIGZyb20gYSBmdW5jdGlvbiBhcmd1bWVudCwgJG5hbWUgaXMgdGhlIGFyZ3VtZW50IG5hbWUgKHdpdGhvdXQgdGhlCiAgICAgKiBgJGApLiBJdCdzIHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhlIHZhbHVlIGlzIG91dHNpZGUgdGhlIHJhbmdlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWx1ZUluUmFuZ2UoZmxvYXQgJG1pbiwgZmxvYXQgJG1heCwgP3N0cmluZyAkbmFtZSA9IG51bGwpOiBmbG9hdAogICAgewogICAgICAgICRyZXN1bHQgPSBOdW1iZXJVdGlsOjpmdXp6eUNoZWNrUmFuZ2UoJHRoaXMtPnZhbHVlLCAkbWluLCAkbWF4KTsKCiAgICAgICAgaWYgKCRyZXN1bHQgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICAkdW5pdFN0cmluZyA9ICR0aGlzLT5nZXRVbml0U3RyaW5nKCk7CgogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCJFeHBlY3RlZCAkdGhpcyB0byBiZSB3aXRoaW4gJG1pbiR1bml0U3RyaW5nIGFuZCAkbWF4JHVuaXRTdHJpbmcuIiwgJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogTGlrZSB7QHNlZSB2YWx1ZUluUmFuZ2V9LCBidXQgd2l0aCBhbiBleHBsaWNpdCB1bml0IGZvciB0aGUgZXhwZWN0ZWQgdXBwZXIgYW5kCiAgICAgKiBsb3dlciBib3VuZHMuCiAgICAgKgogICAgICogVGhpcyBleGlzdHMgdG8gc29sdmUgdGhlIGNvbmZ1c2luZyBlcnJvciBtZXNzYWdlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL2RhcnQtc2Fzcy9pc3N1ZXMvMTc0NSwKICAgICAqIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzMzNzQgZnVsbHkgbGFuZHMgYW5kIHVuaXRsZXNzIHZhbHVlcwogICAgICogYXJlIHJlcXVpcmVkIGluIHRoZXNlIHBvc2l0aW9ucy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhlIHZhbHVlIGlzIG91dHNpZGUgdGhlIHJhbmdlCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWx1ZUluUmFuZ2VXaXRoVW5pdChmbG9hdCAkbWluLCBmbG9hdCAkbWF4LCBzdHJpbmcgJG5hbWUsIHN0cmluZyAkdW5pdCk6IGZsb2F0CiAgICB7CiAgICAgICAgJHJlc3VsdCA9IE51bWJlclV0aWw6OmZ1enp5Q2hlY2tSYW5nZSgkdGhpcy0+dmFsdWUsICRtaW4sICRtYXgpOwoKICAgICAgICBpZiAoJHJlc3VsdCAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CgogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCJFeHBlY3RlZCAkdGhpcyB0byBiZSB3aXRoaW4gJG1pbiR1bml0IGFuZCAkbWF4JHVuaXQuIiwgJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgaGFzIHVuaXRzLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gaGFzVW5pdHMoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgJHRoaXMgaGFzIG1vcmUgdGhhbiBvbmUgbnVtZXJhdG9yIHVuaXQsIG9yIGFueSBkZW5vbWluYXRvciB1bml0cy4KICAgICAqCiAgICAgKiBUaGlzIGlzIGB0cnVlYCBmb3IgbnVtYmVycyB3aG9zZSB1bml0cyBtYWtlIHRoZW0gdW5yZXByZXNlbnRhYmxlIGFzIENTUwogICAgICogbGVuZ3Rocy4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGhhc0NvbXBsZXhVbml0cygpOiBib29sOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICR0aGlzIGhhcyAkdW5pdCBhcyBpdHMgb25seSB1bml0IChhbmQgYXMgYSBudW1lcmF0b3IpLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gaGFzVW5pdChzdHJpbmcgJHVuaXQpOiBib29sOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICR0aGlzIGhhcyB1bml0cyB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggJG90aGVyLgogICAgICoKICAgICAqIFVubGlrZSB7QHNlZSBpc0NvbXBhcmFibGVUb30sIHVuaXRsZXNzIG51bWJlcnMgYXJlIG9ubHkgY29uc2lkZXJlZCBjb21wYXRpYmxlCiAgICAgKiB3aXRoIG90aGVyIHVuaXRsZXNzIG51bWJlcnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNDb21wYXRpYmxlVW5pdHMoU2Fzc051bWJlciAkb3RoZXIpOiBib29sCiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkdGhpcy0+Z2V0TnVtZXJhdG9yVW5pdHMoKSkgIT09IFxjb3VudCgkb3RoZXItPmdldE51bWVyYXRvclVuaXRzKCkpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJHRoaXMtPmdldERlbm9taW5hdG9yVW5pdHMoKSkgIT09IFxjb3VudCgkb3RoZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5pc0NvbXBhcmFibGVUbygkb3RoZXIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICR0aGlzIGhhcyB1bml0cyB0aGF0IGFyZSBwb3NzaWJseS1jb21wYXRpYmxlIHdpdGgKICAgICAqICRvdGhlciwgYXMgZGVmaW5lZCBieSB0aGUgU2FzcyBzcGVjLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gaGFzUG9zc2libHlDb21wYXRpYmxlVW5pdHMoU2Fzc051bWJlciAkb3RoZXIpOiBib29sOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICR0aGlzIGNhbiBiZSBjb2VyY2VkIHRvIHRoZSBnaXZlbiB1bml0LgogICAgICoKICAgICAqIFRoaXMgYWx3YXlzIHJldHVybnMgYHRydWVgIGZvciBhIHVuaXRsZXNzIG51bWJlci4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGNvbXBhdGlibGVXaXRoVW5pdChzdHJpbmcgJHVuaXQpOiBib29sOwoKICAgIC8qKgogICAgICogVGhyb3dzIGEgU2Fzc1NjcmlwdEV4Y2VwdGlvbiB1bmxlc3MgJHRoaXMgaGFzICR1bml0IGFzIGl0cyBvbmx5IHVuaXQKICAgICAqIChhbmQgYXMgYSBudW1lcmF0b3IpLgogICAgICoKICAgICAqIElmIHRoaXMgY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZSBhcmd1bWVudCBuYW1lCiAgICAgKiAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRVbml0KHN0cmluZyAkdW5pdCwgP3N0cmluZyAkdmFyTmFtZSA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5oYXNVbml0KCR1bml0KSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudChzcHJpbnRmKCdFeHBlY3RlZCAlcyB0byBoYXZlIHVuaXQgIiVzIi4nLCAkdGhpcywgJHVuaXQpLCAkdmFyTmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaHJvd3MgYSBTYXNzU2NyaXB0RXhjZXB0aW9uIHVubGVzcyAkdGhpcyBoYXMgbm8gdW5pdHMuCiAgICAgKgogICAgICogSWYgdGhpcyBjYW1lIGZyb20gYSBmdW5jdGlvbiBhcmd1bWVudCwgJG5hbWUgaXMgdGhlIGFyZ3VtZW50IG5hbWUKICAgICAqICh3aXRob3V0IHRoZSBgJGApLiBJdCdzIHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE5vVW5pdHMoP3N0cmluZyAkdmFyTmFtZSA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+aGFzVW5pdHMoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudChzcHJpbnRmKCdFeHBlY3RlZCAlcyB0byBoYXZlIG5vIHVuaXRzLicsICR0aGlzKSwgJHZhck5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBudW1iZXIsIGNvbnZlcnRlZCB0byB0aGUgdW5pdHMgcmVwcmVzZW50ZWQgYnkgJG5ld051bWVyYXRvclVuaXRzIGFuZCAkbmV3RGVub21pbmF0b3JVbml0cy4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQge0BzZWUgY29udmVydFZhbHVlfSBpcyBnZW5lcmFsbHkgbW9yZSBlZmZpY2llbnQgaWYgdGhlIHZhbHVlCiAgICAgKiBpcyBnb2luZyB0byBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRuZXdOdW1lcmF0b3JVbml0cwogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkbmV3RGVub21pbmF0b3JVbml0cwogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbiBpZiB0aGlzIG51bWJlcidzIHVuaXRzIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoICRuZXdOdW1lcmF0b3JVbml0cyBhbmQgJG5ld0Rlbm9taW5hdG9yVW5pdHMsIG9yIGlmIGVpdGhlciBudW1iZXIgaXMgdW5pdGxlc3MgYnV0IHRoZSBvdGhlciBpcyBub3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb252ZXJ0KGFycmF5ICRuZXdOdW1lcmF0b3JVbml0cywgYXJyYXkgJG5ld0Rlbm9taW5hdG9yVW5pdHMsID9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHJldHVybiBzZWxmOjp3aXRoVW5pdHMoJHRoaXMtPmNvbnZlcnRWYWx1ZSgkbmV3TnVtZXJhdG9yVW5pdHMsICRuZXdEZW5vbWluYXRvclVuaXRzLCAkbmFtZSksICRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB7QHNlZSB2YWx1ZX0sIGNvbnZlcnRlZCB0byB0aGUgdW5pdHMgcmVwcmVzZW50ZWQgYnkgJG5ld051bWVyYXRvclVuaXRzIGFuZCAkbmV3RGVub21pbmF0b3JVbml0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRuZXdOdW1lcmF0b3JVbml0cwogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkbmV3RGVub21pbmF0b3JVbml0cwogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbiBpZiB0aGlzIG51bWJlcidzIHVuaXRzIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoICRuZXdOdW1lcmF0b3JVbml0cyBhbmQgJG5ld0Rlbm9taW5hdG9yVW5pdHMsIG9yIGlmIGVpdGhlciBudW1iZXIgaXMgdW5pdGxlc3MgYnV0IHRoZSBvdGhlciBpcyBub3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWUoYXJyYXkgJG5ld051bWVyYXRvclVuaXRzLCBhcnJheSAkbmV3RGVub21pbmF0b3JVbml0cywgP3N0cmluZyAkbmFtZSA9IG51bGwpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udmVydE9yQ29lcmNlVmFsdWUoJG5ld051bWVyYXRvclVuaXRzLCAkbmV3RGVub21pbmF0b3JVbml0cywgZmFsc2UsICRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIHRoaXMgbnVtYmVyLCBjb252ZXJ0ZWQgdG8gdGhlIHNhbWUgdW5pdHMgYXMgJG90aGVyLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB7QHNlZSBjb252ZXJ0VmFsdWVUb01hdGNofSBpcyBnZW5lcmFsbHkgbW9yZSBlZmZpY2llbnQgaWYgdGhlIHZhbHVlCiAgICAgKiBpcyBnb2luZyB0byBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG5hbWUgICAgICBUaGUgYXJndW1lbnQgbmFtZSBpZiB0aGlzIGlzIGEgZnVuY3Rpb24gYXJndW1lbnQKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkb3RoZXJOYW1lIFRoZSBhcmd1bWVudCBuYW1lIGZvciAkb3RoZXIgaWYgdGhpcyBpcyBhIGZ1bmN0aW9uIGFyZ3VtZW50CiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmIHRoZSB1bml0cyBhcmUgbm90IGNvbXBhdGlibGUgb3IgaWYgZWl0aGVyIG51bWJlciBpcyB1bml0bGVzcyBidXQgdGhlIG90aGVyIGlzIG5vdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbnZlcnRUb01hdGNoKFNhc3NOdW1iZXIgJG90aGVyLCA/c3RyaW5nICRuYW1lID0gbnVsbCwgP3N0cmluZyAkb3RoZXJOYW1lID0gbnVsbCk6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6d2l0aFVuaXRzKCR0aGlzLT5jb252ZXJ0VmFsdWVUb01hdGNoKCRvdGhlciwgJG5hbWUsICRvdGhlck5hbWUpLCAkb3RoZXItPmdldE51bWVyYXRvclVuaXRzKCksICRvdGhlci0+Z2V0RGVub21pbmF0b3JVbml0cygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMge0BzZWUgdmFsdWV9LCBjb252ZXJ0ZWQgdG8gdGhlIHNhbWUgdW5pdHMgYXMgJG90aGVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkbmFtZSAgICAgIFRoZSBhcmd1bWVudCBuYW1lIGlmIHRoaXMgaXMgYSBmdW5jdGlvbiBhcmd1bWVudAogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRvdGhlck5hbWUgVGhlIGFyZ3VtZW50IG5hbWUgZm9yICRvdGhlciBpZiB0aGlzIGlzIGEgZnVuY3Rpb24gYXJndW1lbnQKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhlIHVuaXRzIGFyZSBub3QgY29tcGF0aWJsZSBvciBpZiBlaXRoZXIgbnVtYmVyIGlzIHVuaXRsZXNzIGJ1dCB0aGUgb3RoZXIgaXMgbm90LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9NYXRjaChTYXNzTnVtYmVyICRvdGhlciwgP3N0cmluZyAkbmFtZSA9IG51bGwsID9zdHJpbmcgJG90aGVyTmFtZSA9IG51bGwpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udmVydE9yQ29lcmNlVmFsdWUoJG90aGVyLT5nZXROdW1lcmF0b3JVbml0cygpLCAkb3RoZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSwgZmFsc2UsICRuYW1lLCAkb3RoZXIsICRvdGhlck5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBudW1iZXIsIGNvbnZlcnRlZCB0byB0aGUgdW5pdHMgcmVwcmVzZW50ZWQgYnkgJG5ld051bWVyYXRvclVuaXRzIGFuZCAkbmV3RGVub21pbmF0b3JVbml0cy4KICAgICAqCiAgICAgKiBUaGlzIGRvZXMgbm90IHRocm93IGFuIGVycm9yIGlmIHRoaXMgbnVtYmVyIGlzIHVuaXRsZXNzIGFuZAogICAgICogJG5ld051bWVyYXRvclVuaXRzLyRuZXdEZW5vbWluYXRvclVuaXRzIGFyZSBub3QgZW1wdHksIG9yIHZpY2UgdmVyc2EuIEluc3RlYWQsCiAgICAgKiBpdCB0cmVhdHMgYWxsIHVuaXRsZXNzIG51bWJlcnMgYXMgY29udmVydGlibGUgdG8gYW5kIGZyb20gYWxsIHVuaXRzIHdpdGhvdXQKICAgICAqIGNoYW5naW5nIHRoZSB2YWx1ZS4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQge0BzZWUgY29lcmNlVmFsdWV9IGlzIGdlbmVyYWxseSBtb3JlIGVmZmljaWVudCBpZiB0aGUgdmFsdWUKICAgICAqIGlzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJG5ld051bWVyYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRuZXdEZW5vbWluYXRvclVuaXRzCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmIHRoaXMgbnVtYmVyJ3MgdW5pdHMgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggJG5ld051bWVyYXRvclVuaXRzIGFuZCAkbmV3RGVub21pbmF0b3JVbml0cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29lcmNlKGFycmF5ICRuZXdOdW1lcmF0b3JVbml0cywgYXJyYXkgJG5ld0Rlbm9taW5hdG9yVW5pdHMsID9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHJldHVybiBzZWxmOjp3aXRoVW5pdHMoJHRoaXMtPmNvZXJjZVZhbHVlKCRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMsICRuYW1lKSwgJG5ld051bWVyYXRvclVuaXRzLCAkbmV3RGVub21pbmF0b3JVbml0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHtAc2VlIHZhbHVlfSwgY29udmVydGVkIHRvIHRoZSB1bml0cyByZXByZXNlbnRlZCBieSAkbmV3TnVtZXJhdG9yVW5pdHMgYW5kICRuZXdEZW5vbWluYXRvclVuaXRzLgogICAgICoKICAgICAqIFRoaXMgZG9lcyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhpcyBudW1iZXIgaXMgdW5pdGxlc3MgYW5kCiAgICAgKiAkbmV3TnVtZXJhdG9yVW5pdHMvJG5ld0Rlbm9taW5hdG9yVW5pdHMgYXJlIG5vdCBlbXB0eSwgb3IgdmljZSB2ZXJzYS4gSW5zdGVhZCwKICAgICAqIGl0IHRyZWF0cyBhbGwgdW5pdGxlc3MgbnVtYmVycyBhcyBjb252ZXJ0aWJsZSB0byBhbmQgZnJvbSBhbGwgdW5pdHMgd2l0aG91dAogICAgICogY2hhbmdpbmcgdGhlIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJG5ld051bWVyYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRuZXdEZW5vbWluYXRvclVuaXRzCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmIHRoaXMgbnVtYmVyJ3MgdW5pdHMgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggJG5ld051bWVyYXRvclVuaXRzIGFuZCAkbmV3RGVub21pbmF0b3JVbml0cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29lcmNlVmFsdWUoYXJyYXkgJG5ld051bWVyYXRvclVuaXRzLCBhcnJheSAkbmV3RGVub21pbmF0b3JVbml0cywgP3N0cmluZyAkbmFtZSA9IG51bGwpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udmVydE9yQ29lcmNlVmFsdWUoJG5ld051bWVyYXRvclVuaXRzLCAkbmV3RGVub21pbmF0b3JVbml0cywgdHJ1ZSwgJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQSBzaG9ydGhhbmQgZm9yIHtAc2VlIGNvZXJjZVZhbHVlfSB3aXRoIGEgc2luZ2xlIHVuaXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvZXJjZVZhbHVlVG9Vbml0KHN0cmluZyAkdW5pdCwgP3N0cmluZyAkbmFtZSA9IG51bGwpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29lcmNlVmFsdWUoWyR1bml0XSwgW10sICRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIHRoaXMgbnVtYmVyLCBjb252ZXJ0ZWQgdG8gdGhlIHNhbWUgdW5pdHMgYXMgJG90aGVyLgogICAgICoKICAgICAqIFVubGlrZSB7QHNlZSBjb252ZXJ0VG9NYXRjaH0sIHRoaXMgZG9lcyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhpcyBudW1iZXIgaXMKICAgICAqIHVuaXRsZXNzIGFuZCAkb3RoZXIgaXMgbm90LCBvciB2aWNlIHZlcnNhLiBJbnN0ZWFkLCBpdCB0cmVhdHMgYWxsIHVuaXRsZXNzCiAgICAgKiBudW1iZXJzIGFzIGNvbnZlcnRpYmxlIHRvIGFuZCBmcm9tIGFsbCB1bml0cyB3aXRob3V0IGNoYW5naW5nIHRoZSB2YWx1ZS4KICAgICAqCiAgICAgKiBOb3RlIHRoYXQge0BzZWUgY29lcmNlVmFsdWVUb01hdGNofSBpcyBnZW5lcmFsbHkgbW9yZSBlZmZpY2llbnQgaWYgdGhlIHZhbHVlCiAgICAgKiBpcyBnb2luZyB0byBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG5hbWUgICAgICBUaGUgYXJndW1lbnQgbmFtZSBpZiB0aGlzIGlzIGEgZnVuY3Rpb24gYXJndW1lbnQKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkb3RoZXJOYW1lIFRoZSBhcmd1bWVudCBuYW1lIGZvciAkb3RoZXIgaWYgdGhpcyBpcyBhIGZ1bmN0aW9uIGFyZ3VtZW50CiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmIHRoZSB1bml0cyBhcmUgbm90IGNvbXBhdGlibGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvZXJjZVRvTWF0Y2goU2Fzc051bWJlciAkb3RoZXIsID9zdHJpbmcgJG5hbWUgPSBudWxsLCA/c3RyaW5nICRvdGhlck5hbWUgPSBudWxsKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHJldHVybiBzZWxmOjp3aXRoVW5pdHMoJHRoaXMtPmNvZXJjZVZhbHVlVG9NYXRjaCgkb3RoZXIsICRuYW1lLCAkb3RoZXJOYW1lKSwgJG90aGVyLT5nZXROdW1lcmF0b3JVbml0cygpLCAkb3RoZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHtAc2VlIHZhbHVlfSwgY29udmVydGVkIHRvIHRoZSBzYW1lIHVuaXRzIGFzICRvdGhlci4KICAgICAqCiAgICAgKiBVbmxpa2Uge0BzZWUgY29udmVydFZhbHVlVG9NYXRjaH0sIHRoaXMgZG9lcyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhpcyBudW1iZXIKICAgICAqIGlzIHVuaXRsZXNzIGFuZCAkb3RoZXIgaXMgbm90LCBvciB2aWNlIHZlcnNhLiBJbnN0ZWFkLCBpdCB0cmVhdHMgYWxsIHVuaXRsZXNzCiAgICAgKiBudW1iZXJzIGFzIGNvbnZlcnRpYmxlIHRvIGFuZCBmcm9tIGFsbCB1bml0cyB3aXRob3V0IGNoYW5naW5nIHRoZSB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG5hbWUgICAgICBUaGUgYXJndW1lbnQgbmFtZSBpZiB0aGlzIGlzIGEgZnVuY3Rpb24gYXJndW1lbnQKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkb3RoZXJOYW1lIFRoZSBhcmd1bWVudCBuYW1lIGZvciAkb3RoZXIgaWYgdGhpcyBpcyBhIGZ1bmN0aW9uIGFyZ3VtZW50CiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmIHRoZSB1bml0cyBhcmUgbm90IGNvbXBhdGlibGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvZXJjZVZhbHVlVG9NYXRjaChTYXNzTnVtYmVyICRvdGhlciwgP3N0cmluZyAkbmFtZSA9IG51bGwsID9zdHJpbmcgJG90aGVyTmFtZSA9IG51bGwpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udmVydE9yQ29lcmNlVmFsdWUoJG90aGVyLT5nZXROdW1lcmF0b3JVbml0cygpLCAkb3RoZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSwgdHJ1ZSwgJG5hbWUsICRvdGhlciwgJG90aGVyTmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBudW1iZXIgY2FuIGJlIGNvbXBhcmVkIHRvICRvdGhlci4KICAgICAqCiAgICAgKiBUd28gbnVtYmVycyBjYW4gYmUgY29tcGFyZWQgaWYgdGhleSBoYXZlIGNvbXBhdGlibGUgdW5pdHMsIG9yIGlmIGVpdGhlcgogICAgICogbnVtYmVyIGhhcyBubyB1bml0cy4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzQ29tcGFyYWJsZVRvKFNhc3NOdW1iZXIgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIGlmICghJHRoaXMtPmhhc1VuaXRzKCkgfHwgISRvdGhlci0+aGFzVW5pdHMoKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0aGlzLT5ncmVhdGVyVGhhbigkb3RoZXIpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChTYXNzU2NyaXB0RXhjZXB0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdyZWF0ZXJUaGFuKFZhbHVlICRvdGhlcik6IFNhc3NCb29sZWFuCiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgLy8gTm90IHVzaW5nIGEgZmlyc3QtY2xhc3MgY2FsbGFibGUgZm9yIE51bWJlclV0aWw6OmZ1enp5R3JlYXRlclRoYW4oKSwKICAgICAgICAgICAgLy8gYmVjYXVzZSBvZiBhIFBIUCA4LjEgYnVnIHRoYXQgcmVzdWx0cyBpbiBhIHNlZ21lbnRhdGlvbgogICAgICAgICAgICAvLyBmYXVsdCwgd2hlbiBhbiBFeGNlcHRpb24gaXMgdGhyb3duIGZyb20gYSBmdW5jdGlvbiB0YWtpbmcgdGhlIEZDQyBhcwogICAgICAgICAgICAvLyBhIHBhcmFtZXRlci4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMvY29tbWl0L2IzZTI2YzMwMzZhNTRlOTgyMWVhNzExOWMyNmNkYWJlNDg0ZmUzNmQKICAgICAgICAgICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vc2Nzc3BocC9zY3NzcGhwL2lzc3Vlcy83NTIjaXNzdWVjb21tZW50LTI0MjM4NTc1NjgKICAgICAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoJHRoaXMtPmNvZXJjZVVuaXRzKCRvdGhlciwgW051bWJlclV0aWw6OmNsYXNzLCAnZnV6enlHcmVhdGVyVGhhbiddKSk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVW5kZWZpbmVkIG9wZXJhdGlvbiBcIiR0aGlzID4gJG90aGVyXCIuIik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdyZWF0ZXJUaGFuT3JFcXVhbHMoVmFsdWUgJG90aGVyKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICByZXR1cm4gU2Fzc0Jvb2xlYW46OmNyZWF0ZSgkdGhpcy0+Y29lcmNlVW5pdHMoJG90aGVyLCBOdW1iZXJVdGlsOjpmdXp6eUdyZWF0ZXJUaGFuT3JFcXVhbHMoLi4uKSkpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlVuZGVmaW5lZCBvcGVyYXRpb24gXCIkdGhpcyA+PSAkb3RoZXJcIi4iKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbGVzc1RoYW4oVmFsdWUgJG90aGVyKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICByZXR1cm4gU2Fzc0Jvb2xlYW46OmNyZWF0ZSgkdGhpcy0+Y29lcmNlVW5pdHMoJG90aGVyLCBOdW1iZXJVdGlsOjpmdXp6eUxlc3NUaGFuKC4uLikpKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJVbmRlZmluZWQgb3BlcmF0aW9uIFwiJHRoaXMgPCAkb3RoZXJcIi4iKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbGVzc1RoYW5PckVxdWFscyhWYWx1ZSAkb3RoZXIpOiBTYXNzQm9vbGVhbgogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBTYXNzQm9vbGVhbjo6Y3JlYXRlKCR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIE51bWJlclV0aWw6OmZ1enp5TGVzc1RoYW5PckVxdWFscyguLi4pKSk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVW5kZWZpbmVkIG9wZXJhdGlvbiBcIiR0aGlzIDw9ICRvdGhlclwiLiIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtb2R1bG8oVmFsdWUgJG90aGVyKTogU2Fzc051bWJlcgogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFZhbHVlKCR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIE51bWJlclV0aWw6Om1vZHVsb0xpa2VTYXNzKC4uLikpKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJVbmRlZmluZWQgb3BlcmF0aW9uIFwiJHRoaXMgJSAkb3RoZXJcIi4iKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcGx1cyhWYWx1ZSAkb3RoZXIpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFZhbHVlKCR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIGZuKCRudW0xLCAkbnVtMikgPT4gJG51bTEgKyAkbnVtMikpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkb3RoZXIgaW5zdGFuY2VvZiBTYXNzQ29sb3IpIHsKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6cGx1cygkb3RoZXIpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlVuZGVmaW5lZCBvcGVyYXRpb24gXCIkdGhpcyArICRvdGhlclwiLiIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtaW51cyhWYWx1ZSAkb3RoZXIpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFZhbHVlKCR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIGZuKCRudW0xLCAkbnVtMikgPT4gJG51bTEgLSAkbnVtMikpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkb3RoZXIgaW5zdGFuY2VvZiBTYXNzQ29sb3IpIHsKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6bWludXMoJG90aGVyKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJVbmRlZmluZWQgb3BlcmF0aW9uIFwiJHRoaXMgLSAkb3RoZXJcIi4iKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGltZXMoVmFsdWUgJG90aGVyKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICBpZiAoISRvdGhlci0+aGFzVW5pdHMoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aXRoVmFsdWUoJHRoaXMtPnZhbHVlICogJG90aGVyLT52YWx1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bXVsdGlwbHlVbml0cygkdGhpcy0+dmFsdWUgKiAkb3RoZXItPnZhbHVlLCAkb3RoZXItPmdldE51bWVyYXRvclVuaXRzKCksICRvdGhlci0+Z2V0RGVub21pbmF0b3JVbml0cygpKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJVbmRlZmluZWQgb3BlcmF0aW9uIFwiJHRoaXMgKiAkb3RoZXJcIi4iKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2aWRlZEJ5KFZhbHVlICRvdGhlcik6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgJHZhbHVlID0gTnVtYmVyVXRpbDo6ZGl2aWRlTGlrZVNhc3MoJHRoaXMtPnZhbHVlLCAkb3RoZXItPnZhbHVlKTsKCiAgICAgICAgICAgIGlmICghJG90aGVyLT5oYXNVbml0cygpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhWYWx1ZSgkdmFsdWUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm11bHRpcGx5VW5pdHMoJHZhbHVlLCAkb3RoZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSwgJG90aGVyLT5nZXROdW1lcmF0b3JVbml0cygpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6OmRpdmlkZWRCeSgkb3RoZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmFyeVBsdXMoKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIGlmICghJG90aGVyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5nZXROdW1lcmF0b3JVbml0cygpKSAhPT0gXGNvdW50KCRvdGhlci0+Z2V0TnVtZXJhdG9yVW5pdHMoKSkgfHwgXGNvdW50KCR0aGlzLT5nZXREZW5vbWluYXRvclVuaXRzKCkpICE9PSBcY291bnQoJG90aGVyLT5nZXREZW5vbWluYXRvclVuaXRzKCkpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8vIEluIFNhc3MsIG5laXRoZXIgTmFOIG5vciBJbmZpbml0eSBhcmUgZXF1YWwgdG8gdGhlbXNlbHZlcywgd2hpbGUgUEhQIGRlZmluZXMgSU5GPT1JTkYKICAgICAgICBpZiAoaXNfbmFuKCR0aGlzLT52YWx1ZSkgfHwgaXNfbmFuKCRvdGhlci0+dmFsdWUpIHx8ICFpc19maW5pdGUoJHRoaXMtPnZhbHVlKSB8fCAhaXNfZmluaXRlKCRvdGhlci0+dmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICghJHRoaXMtPmhhc1VuaXRzKCkpIHsKICAgICAgICAgICAgcmV0dXJuIE51bWJlclV0aWw6OmZ1enp5RXF1YWxzKCR0aGlzLT52YWx1ZSwgJG90aGVyLT52YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGY6OmNhbm9uaWNhbGl6ZVVuaXRMaXN0KCR0aGlzLT5nZXROdW1lcmF0b3JVbml0cygpKSAhPT0gc2VsZjo6Y2Fub25pY2FsaXplVW5pdExpc3QoJG90aGVyLT5nZXROdW1lcmF0b3JVbml0cygpKSB8fAogICAgICAgICAgICBzZWxmOjpjYW5vbmljYWxpemVVbml0TGlzdCgkdGhpcy0+Z2V0RGVub21pbmF0b3JVbml0cygpKSAhPT0gc2VsZjo6Y2Fub25pY2FsaXplVW5pdExpc3QoJG90aGVyLT5nZXREZW5vbWluYXRvclVuaXRzKCkpCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBOdW1iZXJVdGlsOjpmdXp6eUVxdWFscygKICAgICAgICAgICAgJHRoaXMtPnZhbHVlICogc2VsZjo6Z2V0Q2Fub25pY2FsTXVsdGlwbGllcigkdGhpcy0+Z2V0TnVtZXJhdG9yVW5pdHMoKSkgLyBzZWxmOjpnZXRDYW5vbmljYWxNdWx0aXBsaWVyKCR0aGlzLT5nZXREZW5vbWluYXRvclVuaXRzKCkpLAogICAgICAgICAgICAkb3RoZXItPnZhbHVlICogc2VsZjo6Z2V0Q2Fub25pY2FsTXVsdGlwbGllcigkb3RoZXItPmdldE51bWVyYXRvclVuaXRzKCkpIC8gc2VsZjo6Z2V0Q2Fub25pY2FsTXVsdGlwbGllcigkb3RoZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkdW5pdHMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0Q2Fub25pY2FsTXVsdGlwbGllcihhcnJheSAkdW5pdHMpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiBhcnJheV9yZWR1Y2UoJHVuaXRzLCBmbigkbXVsdGlwbGllciwgJHVuaXQpID0+ICRtdWx0aXBsaWVyICogc2VsZjo6Z2V0Q2Fub25pY2FsTXVsdGlwbGllckZvclVuaXQoJHVuaXQpLCAxLjApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldENhbm9uaWNhbE11bHRpcGxpZXJGb3JVbml0KHN0cmluZyAkdW5pdCk6IGZsb2F0CiAgICB7CiAgICAgICAgZm9yZWFjaCAoc2VsZjo6Q09OVkVSU0lPTlMgYXMgJGNhbm9uaWNhbFVuaXQgPT4gJGNvbnZlcnNpb25zKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkY29udmVyc2lvbnNbJHVuaXRdKSkgewogICAgICAgICAgICAgICAgXGFzc2VydChpc3NldCgkY29udmVyc2lvbnNbJGNhbm9uaWNhbFVuaXRdKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gJGNvbnZlcnNpb25zWyRjYW5vbmljYWxVbml0XSAvICRjb252ZXJzaW9uc1skdW5pdF07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAxLjA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICR1bml0cwogICAgICoKICAgICAqIEByZXR1cm4gbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZVVuaXRMaXN0KGFycmF5ICR1bml0cyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkdW5pdHMpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdW5pdHM7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCR1bml0cykgPT09IDEpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KHNlbGY6OlRZUEVTX0JZX1VOSVRbJHVuaXRzWzBdXSkpIHsKICAgICAgICAgICAgICAgICR0eXBlID0gc2VsZjo6VFlQRVNfQllfVU5JVFskdW5pdHNbMF1dOwoKICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZjo6VU5JVFNfQllfVFlQRVskdHlwZV1bMF1dOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHVuaXRzOwogICAgICAgIH0KCiAgICAgICAgJGNhbm9uaWNhbFVuaXRzID0gW107CgogICAgICAgIGZvcmVhY2ggKCR1bml0cyBhcyAkdW5pdCkgewogICAgICAgICAgICBpZiAoaXNzZXQoc2VsZjo6VFlQRVNfQllfVU5JVFskdW5pdF0pKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9IHNlbGY6OlRZUEVTX0JZX1VOSVRbJHVuaXRdOwoKICAgICAgICAgICAgICAgICRjYW5vbmljYWxVbml0c1tdID0gc2VsZjo6VU5JVFNfQllfVFlQRVskdHlwZV1bMF07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY2Fub25pY2FsVW5pdHNbXSA9ICR1bml0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBzb3J0KCRjYW5vbmljYWxVbml0cyk7CgogICAgICAgIHJldHVybiAkY2Fub25pY2FsVW5pdHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZShmbG9hdCwgZmxvYXQpOiBUICRvcGVyYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkb3BlcmF0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29lcmNlVW5pdHMoU2Fzc051bWJlciAkb3RoZXIsIGNhbGxhYmxlICRvcGVyYXRpb24pCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIFxjYWxsX3VzZXJfZnVuYygkb3BlcmF0aW9uLCAkdGhpcy0+dmFsdWUsICRvdGhlci0+Y29lcmNlVmFsdWVUb01hdGNoKCR0aGlzKSk7CiAgICAgICAgfSBjYXRjaCAoU2Fzc1NjcmlwdEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAvLyBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgcmUtcnVuIGl0IGluIHRoZSBvdGhlciBkaXJlY3Rpb24uIFRoaXMgd2lsbAogICAgICAgICAgICAvLyBnZW5lcmF0ZSBhbiBlcnJvciBtZXNzYWdlIHRoYXQgcHJpbnRzICR0aGlzIGJlZm9yZSAkb3RoZXIsIHdoaWNoIGlzCiAgICAgICAgICAgIC8vIG1vcmUgcmVhZGFibGUuCiAgICAgICAgICAgICR0aGlzLT5jb2VyY2VWYWx1ZVRvTWF0Y2goJG90aGVyKTsKCiAgICAgICAgICAgIHRocm93ICRlOyAvLyBTaG91bGQgYmUgdW5yZWFkYWJsZSBhcyB0aGUgY29lcmNpb24gc2hvdWxkIHRocm93LgogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJG5ld051bWVyYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRuZXdEZW5vbWluYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICRuYW1lICAgICAgVGhlIGFyZ3VtZW50IG5hbWUgaWYgdGhpcyBpcyBhIGZ1bmN0aW9uIGFyZ3VtZW50CiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICRvdGhlck5hbWUgVGhlIGFyZ3VtZW50IG5hbWUgZm9yICRvdGhlciBpZiB0aGlzIGlzIGEgZnVuY3Rpb24gYXJndW1lbnQKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhpcyBudW1iZXIncyB1bml0cyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCAkbmV3TnVtZXJhdG9yVW5pdHMgYW5kICRuZXdEZW5vbWluYXRvclVuaXRzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29udmVydE9yQ29lcmNlVmFsdWUoYXJyYXkgJG5ld051bWVyYXRvclVuaXRzLCBhcnJheSAkbmV3RGVub21pbmF0b3JVbml0cywgYm9vbCAkY29lcmNlVW5pdGxlc3MsID9zdHJpbmcgJG5hbWUgPSBudWxsLCA/U2Fzc051bWJlciAkb3RoZXIgPSBudWxsLCA/c3RyaW5nICRvdGhlck5hbWUgPSBudWxsKTogZmxvYXQKICAgIHsKICAgICAgICBhc3NlcnQoJG90aGVyID09PSBudWxsIHx8ICgkb3RoZXItPmdldE51bWVyYXRvclVuaXRzKCkgPT09ICRuZXdOdW1lcmF0b3JVbml0cyAmJiAkb3RoZXItPmdldERlbm9taW5hdG9yVW5pdHMoKSA9PT0gJG5ld0Rlbm9taW5hdG9yVW5pdHMpLCBzcHJpbnRmKCJFeHBlY3RlZCAlcyB0byBoYXZlIHVuaXRzICVzLiIsICRvdGhlciwgc2VsZjo6YnVpbGRVbml0U3RyaW5nKCRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMpKSk7CgogICAgICAgIGlmICgkdGhpcy0+Z2V0TnVtZXJhdG9yVW5pdHMoKSA9PT0gJG5ld051bWVyYXRvclVuaXRzICYmICR0aGlzLT5nZXREZW5vbWluYXRvclVuaXRzKCkgPT09ICRuZXdEZW5vbWluYXRvclVuaXRzKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkb3RoZXJIYXNVbml0cyA9ICFlbXB0eSgkbmV3TnVtZXJhdG9yVW5pdHMpIHx8ICFlbXB0eSgkbmV3RGVub21pbmF0b3JVbml0cyk7CgogICAgICAgIGlmICgkY29lcmNlVW5pdGxlc3MgJiYgKCEkb3RoZXJIYXNVbml0cyB8fCAhJHRoaXMtPmhhc1VuaXRzKCkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CiAgICAgICAgJG9sZE51bWVyYXRvcnMgPSAkdGhpcy0+Z2V0TnVtZXJhdG9yVW5pdHMoKTsKCiAgICAgICAgZm9yZWFjaCAoJG5ld051bWVyYXRvclVuaXRzIGFzICRuZXdOdW1lcmF0b3IpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJG9sZE51bWVyYXRvcnMgYXMgJGtleSA9PiAkb2xkTnVtZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAkY29udmVyc2lvbkZhY3RvciA9IHNlbGY6OmdldENvbnZlcnNpb25GYWN0b3IoJG5ld051bWVyYXRvciwgJG9sZE51bWVyYXRvcik7CgogICAgICAgICAgICAgICAgaWYgKFxpc19udWxsKCRjb252ZXJzaW9uRmFjdG9yKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR2YWx1ZSAqPSAkY29udmVyc2lvbkZhY3RvcjsKICAgICAgICAgICAgICAgIHVuc2V0KCRvbGROdW1lcmF0b3JzWyRrZXldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRocm93ICR0aGlzLT5jb21wYXRpYmlsaXR5RXhjZXB0aW9uKCRvdGhlckhhc1VuaXRzLCAkbmV3TnVtZXJhdG9yVW5pdHMsICRuZXdEZW5vbWluYXRvclVuaXRzLCAkbmFtZSwgJG90aGVyLCAkb3RoZXJOYW1lKTsKICAgICAgICB9CgogICAgICAgICRvbGREZW5vbWluYXRvcnMgPSAkdGhpcy0+Z2V0RGVub21pbmF0b3JVbml0cygpOwoKICAgICAgICBmb3JlYWNoICgkbmV3RGVub21pbmF0b3JVbml0cyBhcyAkbmV3RGVub21pbmF0b3IpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJG9sZERlbm9taW5hdG9ycyBhcyAka2V5ID0+ICRvbGREZW5vbWluYXRvcikgewogICAgICAgICAgICAgICAgJGNvbnZlcnNpb25GYWN0b3IgPSBzZWxmOjpnZXRDb252ZXJzaW9uRmFjdG9yKCRuZXdEZW5vbWluYXRvciwgJG9sZERlbm9taW5hdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAoXGlzX251bGwoJGNvbnZlcnNpb25GYWN0b3IpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhbHVlIC89ICRjb252ZXJzaW9uRmFjdG9yOwogICAgICAgICAgICAgICAgdW5zZXQoJG9sZERlbm9taW5hdG9yc1ska2V5XSk7CiAgICAgICAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyAkdGhpcy0+Y29tcGF0aWJpbGl0eUV4Y2VwdGlvbigkb3RoZXJIYXNVbml0cywgJG5ld051bWVyYXRvclVuaXRzLCAkbmV3RGVub21pbmF0b3JVbml0cywgJG5hbWUsICRvdGhlciwgJG90aGVyTmFtZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCRvbGROdW1lcmF0b3JzKSB8fCBcY291bnQoJG9sZERlbm9taW5hdG9ycykpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmNvbXBhdGliaWxpdHlFeGNlcHRpb24oJG90aGVySGFzVW5pdHMsICRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMsICRuYW1lLCAkb3RoZXIsICRvdGhlck5hbWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJG5ld051bWVyYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRuZXdEZW5vbWluYXRvclVuaXRzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29tcGF0aWJpbGl0eUV4Y2VwdGlvbihib29sICRvdGhlckhhc1VuaXRzLCBhcnJheSAkbmV3TnVtZXJhdG9yVW5pdHMsIGFycmF5ICRuZXdEZW5vbWluYXRvclVuaXRzLCA/c3RyaW5nICRuYW1lLCA/U2Fzc051bWJlciAkb3RoZXIgPSBudWxsLCA/c3RyaW5nICRvdGhlck5hbWUgPSBudWxsKTogU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgewogICAgICAgIGlmICgkb3RoZXIgIT09IG51bGwpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSAiJHRoaXMgYW5kIjsKCiAgICAgICAgICAgIGlmICgkb3RoZXJOYW1lICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkbWVzc2FnZSAuPSAiIFwkJG90aGVyTmFtZToiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWVzc2FnZSAuPSAiICRvdGhlciBoYXZlIGluY29tcGF0aWJsZSB1bml0cyI7CgogICAgICAgICAgICBpZiAoISR0aGlzLT5oYXNVbml0cygpIHx8ICEkb3RoZXJIYXNVbml0cykgewogICAgICAgICAgICAgICAgJG1lc3NhZ2UgLj0gIiAob25lIGhhcyB1bml0cyBhbmQgdGhlIG90aGVyIGRvZXNuJ3QpIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkbWVzc2FnZS4iLCAkbmFtZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRvdGhlckhhc1VuaXRzKSB7CiAgICAgICAgICAgIHJldHVybiBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiRXhwZWN0ZWQgJHRoaXMgdG8gaGF2ZSBubyB1bml0cy4iLCAkbmFtZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCRuZXdOdW1lcmF0b3JVbml0cykgPT09IDEgJiYgXGNvdW50KCRuZXdEZW5vbWluYXRvclVuaXRzKSA9PT0gMCAmJiBpc3NldChzZWxmOjpUWVBFU19CWV9VTklUWyRuZXdOdW1lcmF0b3JVbml0c1swXV0pKSB7CiAgICAgICAgICAgICR0eXBlID0gc2VsZjo6VFlQRVNfQllfVU5JVFskbmV3TnVtZXJhdG9yVW5pdHNbMF1dOwogICAgICAgICAgICAkYXJ0aWNsZSA9IFxpbl9hcnJheSgkdHlwZVswXSwgWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXSwgdHJ1ZSkgPyAnYW4nIDogJ2EnOwogICAgICAgICAgICAkc3VwcG9ydGVkVW5pdHMgPSBpbXBsb2RlKCcsICcsIHNlbGY6OlVOSVRTX0JZX1RZUEVbJHR5cGVdKTsKCiAgICAgICAgICAgIHJldHVybiBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiRXhwZWN0ZWQgJHRoaXMgdG8gaGF2ZSAkYXJ0aWNsZSAkdHlwZSB1bml0ICgkc3VwcG9ydGVkVW5pdHMpLiIsICRuYW1lKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudChzcHJpbnRmKCdFeHBlY3RlZCAlcyB0byBoYXZlICVzICVzLicsICR0aGlzLCBTdHJpbmdVdGlsOjpwbHVyYWxpemUoJ3VuaXQnLCBcY291bnQoJG5ld051bWVyYXRvclVuaXRzKSArIFxjb3VudCgkbmV3RGVub21pbmF0b3JVbml0cykpLCBzZWxmOjpidWlsZFVuaXRTdHJpbmcoJG5ld051bWVyYXRvclVuaXRzLCAkbmV3RGVub21pbmF0b3JVbml0cykpLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRvdGhlck51bWVyYXRvcnMKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJG90aGVyRGVub21pbmF0b3JzCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtdWx0aXBseVVuaXRzKGZsb2F0ICR2YWx1ZSwgYXJyYXkgJG90aGVyTnVtZXJhdG9ycywgYXJyYXkgJG90aGVyRGVub21pbmF0b3JzKTogU2Fzc051bWJlcgogICAgewogICAgICAgICRuZXdOdW1lcmF0b3JzID0gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmdldE51bWVyYXRvclVuaXRzKCkgYXMgJG51bWVyYXRvcikgewogICAgICAgICAgICBmb3JlYWNoICgkb3RoZXJEZW5vbWluYXRvcnMgYXMgJGtleSA9PiAkZGVub21pbmF0b3IpIHsKICAgICAgICAgICAgICAgICRjb252ZXJzaW9uRmFjdG9yID0gc2VsZjo6Z2V0Q29udmVyc2lvbkZhY3RvcigkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IpOwoKICAgICAgICAgICAgICAgIGlmIChcaXNfbnVsbCgkY29udmVyc2lvbkZhY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdmFsdWUgLz0gJGNvbnZlcnNpb25GYWN0b3I7CiAgICAgICAgICAgICAgICB1bnNldCgkb3RoZXJEZW5vbWluYXRvcnNbJGtleV0pOwogICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5ld051bWVyYXRvcnNbXSA9ICRudW1lcmF0b3I7CiAgICAgICAgfQoKICAgICAgICAkZGVub21pbmF0b3JzID0gJHRoaXMtPmdldERlbm9taW5hdG9yVW5pdHMoKTsKCiAgICAgICAgZm9yZWFjaCAoJG90aGVyTnVtZXJhdG9ycyBhcyAkbnVtZXJhdG9yKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkZW5vbWluYXRvcnMgYXMgJGtleSA9PiAkZGVub21pbmF0b3IpIHsKICAgICAgICAgICAgICAgICRjb252ZXJzaW9uRmFjdG9yID0gc2VsZjo6Z2V0Q29udmVyc2lvbkZhY3RvcigkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IpOwoKICAgICAgICAgICAgICAgIGlmIChcaXNfbnVsbCgkY29udmVyc2lvbkZhY3RvcikpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdmFsdWUgLz0gJGNvbnZlcnNpb25GYWN0b3I7CiAgICAgICAgICAgICAgICB1bnNldCgkZGVub21pbmF0b3JzWyRrZXldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRuZXdOdW1lcmF0b3JzW10gPSAkbnVtZXJhdG9yOwogICAgICAgIH0KCiAgICAgICAgJG5ld0Rlbm9taW5hdG9ycyA9IGFycmF5X3ZhbHVlcyhhcnJheV9tZXJnZSgkZGVub21pbmF0b3JzLCAkb3RoZXJEZW5vbWluYXRvcnMpKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OndpdGhVbml0cygkdmFsdWUsICRuZXdOdW1lcmF0b3JzLCAkbmV3RGVub21pbmF0b3JzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBbdW5pdDFdcyBwZXIgW3VuaXQyXS4KICAgICAqCiAgICAgKiBFcXVpdmFsZW50bHksIGAxdW5pdDIgKiBjb252ZXJzaW9uRmFjdG9yKHVuaXQxLCB1bml0MikgPSAxdW5pdDFgLgogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdldENvbnZlcnNpb25GYWN0b3Ioc3RyaW5nICR1bml0MSwgc3RyaW5nICR1bml0Mik6ID9mbG9hdAogICAgewogICAgICAgIGlmICgkdW5pdDEgPT09ICR1bml0MikgewogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKHNlbGY6OkNPTlZFUlNJT05TIGFzICR1bml0VmFyaWFudHMpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR1bml0VmFyaWFudHNbJHVuaXQxXSkgJiYgaXNzZXQoJHVuaXRWYXJpYW50c1skdW5pdDJdKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR1bml0VmFyaWFudHNbJHVuaXQxXSAvICR1bml0VmFyaWFudHNbJHVuaXQyXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHVuaXQocykgYXMgdGhlIHByb2R1Y3Qgb2YgbnVtZXJhdG9yIHVuaXRzIGRpdmlkZWQgYnkgdGhlIHByb2R1Y3Qgb2YgZGVub21pbmF0b3IgdW5pdHMKICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRudW1lcmF0b3JzCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+ICRkZW5vbWluYXRvcnMKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gYnVpbGRVbml0U3RyaW5nKGFycmF5ICRudW1lcmF0b3JzLCBhcnJheSAkZGVub21pbmF0b3JzKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCFcY291bnQoJG51bWVyYXRvcnMpKSB7CiAgICAgICAgICAgIGlmIChcY291bnQoJGRlbm9taW5hdG9ycykgPT09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAnbm8gdW5pdHMnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXGNvdW50KCRkZW5vbWluYXRvcnMpID09PSAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGRlbm9taW5hdG9yc1swXSAuICdeLTEnOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJygnIC4gaW1wbG9kZSgnKicsICRkZW5vbWluYXRvcnMpIC4gJyleLTEnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJyonLCAkbnVtZXJhdG9ycykgLiAoXGNvdW50KCRkZW5vbWluYXRvcnMpID8gJy8nIC4gaW1wbG9kZSgnKicsICRkZW5vbWluYXRvcnMpIDogJycpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN1Z2dlc3RlZCBTYXNzIHNuaXBwZXQgZm9yIGNvbnZlcnRpbmcgYSB2YXJpYWJsZSBuYW1lZCAkbmFtZQogICAgICogKHdpdGhvdXQgYCVgKSBjb250YWluaW5nIHRoaXMgbnVtYmVyIGludG8gYSBudW1iZXIgd2l0aCB0aGUgc2FtZSB2YWx1ZSBhbmQKICAgICAqIHRoZSBnaXZlbiAkdW5pdC4KICAgICAqCiAgICAgKiBJZiAkdW5pdCBpcyBudWxsLCB0aGlzIGZvcmNlcyB0aGUgbnVtYmVyIHRvIGJlIHVuaXRsZXNzLgogICAgICoKICAgICAqIFRoaXMgaXMgdXNlZCBmb3IgZGVwcmVjYXRpb24gd2FybmluZ3Mgd2hlbiByZXN0cmljdGluZyB3aGljaCB1bml0cyBhcmUKICAgICAqIGFsbG93ZWQgZm9yIGEgZ2l2ZW4gZnVuY3Rpb24uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bml0U3VnZ2VzdGlvbihzdHJpbmcgJG5hbWUsID9zdHJpbmcgJHVuaXQgPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICJcJCRuYW1lIgogICAgICAgICAgICAuIGltcGxvZGUoYXJyYXlfbWFwKGZuKCR1bml0KSA9PiAiICogMSR1bml0IiwgJHRoaXMtPmdldERlbm9taW5hdG9yVW5pdHMoKSkpCiAgICAgICAgICAgIC4gaW1wbG9kZShhcnJheV9tYXAoZm4oJHVuaXQpID0+ICIgLyAxJHVuaXQiLCAkdGhpcy0+Z2V0TnVtZXJhdG9yVW5pdHMoKSkpCiAgICAgICAgICAgIC4gKCR1bml0ID09PSBudWxsID8gJycgOiAiICogMSR1bml0Iik7CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0TnVtZXJhdG9yVW5pdHMoKSA9PT0gW10gPyAkcmVzdWx0IDogImNhbGMoJHJlc3VsdCkiOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SassString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKCi8qKgogKiBBIFNhc3NTY3JpcHQgc3RyaW5nLgogKgogKiBTdHJpbmdzIGNhbiBlaXRoZXIgYmUgcXVvdGVkIG9yIHVucXVvdGVkLiBVbnF1b3RlZCBzdHJpbmdzIGFyZSB1c3VhbGx5IENTUwogKiBpZGVudGlmaWVycywgYnV0IHRoZXkgbWF5IGNvbnRhaW4gYW55IHRleHQuCiAqLwpmaW5hbCBjbGFzcyBTYXNzU3RyaW5nIGV4dGVuZHMgVmFsdWUKewogICAgLyoqCiAgICAgKiBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZy4KICAgICAqCiAgICAgKiBGb3IgcXVvdGVkIHN0cmluZ3MsIHRoaXMgaXMgdGhlIHNlbWFudGljIGNvbnRlbnTigJRhbnkgZXNjYXBlIHNlcXVlbmNlcyB0aGF0CiAgICAgKiB3ZXJlIGJlZW4gd3JpdHRlbiBpbiB0aGUgc291cmNlIHRleHQgYXJlIHJlc29sdmVkIHRvIHRoZWlyIFVuaWNvZGUgdmFsdWVzLgogICAgICogRm9yIHVucXVvdGVkIHN0cmluZ3MsIHRob3VnaCwgZXNjYXBlIHNlcXVlbmNlcyBhcmUgcHJlc2VydmVkIGFzIGxpdGVyYWwKICAgICAqIGJhY2tzbGFzaGVzLgogICAgICoKICAgICAqIFRoaXMgZGlmZmVyZW5jZSBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBpZGVudGlmaWVycyB3aXRoIGVzY2FwZXMsCiAgICAgKiBzdWNoIGFzIGB1cmxcdTI4IGh0dHA6Ly9leGFtcGxlLmNvbVx1MjlgLCBhbmQgdW5xdW90ZWQgc3RyaW5ncyB0aGF0CiAgICAgKiBjb250YWluIGNoYXJhY3RlcnMgdGhhdCBhcmVuJ3QgdmFsaWQgaW4gaWRlbnRpZmllcnMsIHN1Y2ggYXMKICAgICAqIGB1cmwoaHR0cDovL2V4YW1wbGUuY29tKWAuIFVuZm9ydHVuYXRlbHksIGl0IGFsc28gbWVhbnMgdGhhdCB3ZSBkb24ndAogICAgICogY29uc2lkZXIgYGZvb2AgYW5kIGBmXDZGXDZGYCB0aGUgc2FtZSBzdHJpbmcuCiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICR0ZXh0OwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIHN0cmluZyBoYXMgcXVvdGVzLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJHF1b3RlczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICR0ZXh0LCBib29sICRxdW90ZXMgPSB0cnVlKQogICAgewogICAgICAgICR0aGlzLT50ZXh0ID0gJHRleHQ7CiAgICAgICAgJHRoaXMtPnF1b3RlcyA9ICRxdW90ZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRleHQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZXh0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNRdW90ZXMoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cXVvdGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTYXNzTGVuZ3RoKCk6IGludAogICAgewogICAgICAgIHJldHVybiBtYl9zdHJsZW4oJHRoaXMtPnRleHQsICdVVEYtOCcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NwZWNpYWxOdW1iZXIoKTogYm9vbAogICAgewogICAgICAgIGlmICgkdGhpcy0+cXVvdGVzKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChcc3RybGVuKCR0aGlzLT50ZXh0KSA8IFxzdHJsZW4oJ21pbihfKScpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRmaXJzdCA9ICR0aGlzLT50ZXh0WzBdOwoKICAgICAgICBpZiAoJGZpcnN0ID09PSAnYycgfHwgJGZpcnN0ID09PSAnQycpIHsKICAgICAgICAgICAgJHNlY29uZCA9ICR0aGlzLT50ZXh0WzFdOwoKICAgICAgICAgICAgaWYgKCRzZWNvbmQgPT09ICdsJyB8fCAkc2Vjb25kID09PSAnTCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoJHRoaXMtPnRleHRbMl0gPT09ICdhJyB8fCAkdGhpcy0+dGV4dFsyXSA9PT0gJ0EnKQogICAgICAgICAgICAgICAgICAgICYmICgkdGhpcy0+dGV4dFszXSA9PT0gJ20nIHx8ICR0aGlzLT50ZXh0WzNdID09PSAnTScpCiAgICAgICAgICAgICAgICAgICAgJiYgKCR0aGlzLT50ZXh0WzRdID09PSAncCcgfHwgJHRoaXMtPnRleHRbNF0gPT09ICdQJykKICAgICAgICAgICAgICAgICAgICAmJiAkdGhpcy0+dGV4dFs1XSA9PT0gJygnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNlY29uZCA9PT0gJ2EnIHx8ICRzZWNvbmQgPT09ICdBJykgewogICAgICAgICAgICAgICAgcmV0dXJuICgkdGhpcy0+dGV4dFsyXSA9PT0gJ2wnIHx8ICR0aGlzLT50ZXh0WzJdID09PSAnTCcpCiAgICAgICAgICAgICAgICAgICAgJiYgKCR0aGlzLT50ZXh0WzNdID09PSAnYycgfHwgJHRoaXMtPnRleHRbM10gPT09ICdDJykKICAgICAgICAgICAgICAgICAgICAmJiAkdGhpcy0+dGV4dFs0XSA9PT0gJygnOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZpcnN0ID09PSAndicgfHwgJGZpcnN0ID09PSAnVicpIHsKICAgICAgICAgICAgcmV0dXJuICgkdGhpcy0+dGV4dFsxXSA9PT0gJ2EnIHx8ICR0aGlzLT50ZXh0WzFdID09PSAnQScpCiAgICAgICAgICAgICAgICAmJiAoJHRoaXMtPnRleHRbMl0gPT09ICdyJyB8fCAkdGhpcy0+dGV4dFsyXSA9PT0gJ1InKQogICAgICAgICAgICAgICAgJiYgJHRoaXMtPnRleHRbM10gPT09ICcoJzsKICAgICAgICB9CgogICAgICAgIGlmICgkZmlyc3QgPT09ICdlJyB8fCAkZmlyc3QgPT09ICdFJykgewogICAgICAgICAgICByZXR1cm4gKCR0aGlzLT50ZXh0WzFdID09PSAnbicgfHwgJHRoaXMtPnRleHRbMV0gPT09ICdOJykKICAgICAgICAgICAgICAgICYmICgkdGhpcy0+dGV4dFsyXSA9PT0gJ3YnIHx8ICR0aGlzLT50ZXh0WzJdID09PSAnVicpCiAgICAgICAgICAgICAgICAmJiAkdGhpcy0+dGV4dFszXSA9PT0gJygnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmaXJzdCA9PT0gJ20nIHx8ICRmaXJzdCA9PT0gJ00nKSB7CiAgICAgICAgICAgICRzZWNvbmQgPSAkdGhpcy0+dGV4dFsxXTsKCiAgICAgICAgICAgIGlmICgkc2Vjb25kID09PSAnYScgfHwgJHNlY29uZCA9PT0gJ0EnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKCR0aGlzLT50ZXh0WzJdID09PSAneCcgfHwgJHRoaXMtPnRleHRbMl0gPT09ICdYJykKICAgICAgICAgICAgICAgICAgICAmJiAkdGhpcy0+dGV4dFszXSA9PT0gJygnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNlY29uZCA9PT0gJ2knIHx8ICRzZWNvbmQgPT09ICdJJykgewogICAgICAgICAgICAgICAgcmV0dXJuICgkdGhpcy0+dGV4dFsyXSA9PT0gJ24nIHx8ICR0aGlzLT50ZXh0WzJdID09PSAnTicpCiAgICAgICAgICAgICAgICAgICAgJiYgJHRoaXMtPnRleHRbM10gPT09ICcoJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ZhcigpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5xdW90ZXMpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxzdHJsZW4oJHRoaXMtPnRleHQpIDwgXHN0cmxlbigndmFyKC0tXyknKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCR0aGlzLT50ZXh0WzBdID09PSAndicgfHwgJHRoaXMtPnRleHRbMF0gPT09ICdWJykKICAgICAgICAgICAgJiYgKCR0aGlzLT50ZXh0WzFdID09PSAnYScgfHwgJHRoaXMtPnRleHRbMV0gPT09ICdBJykKICAgICAgICAgICAgJiYgKCR0aGlzLT50ZXh0WzJdID09PSAncicgfHwgJHRoaXMtPnRleHRbMl0gPT09ICdSJykKICAgICAgICAgICAgJiYgJHRoaXMtPnRleHRbM10gPT09ICcoJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNCbGFuaygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+cXVvdGVzICYmICR0aGlzLT50ZXh0ID09PSAnJzsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzICRzYXNzSW5kZXggaW50byBhIFBIUC1zdHlsZSBpbmRleCBpbnRvIHtAc2VlIHRleHR9LgogICAgICoKICAgICAqIFNhc3MgaW5kZXhlcyBhcmUgb25lLWJhc2VkLCB3aGlsZSBQSFAgaW5kZXhlcyBhcmUgemVyby1iYXNlZC4gU2FzcwogICAgICogaW5kZXhlcyBtYXkgYWxzbyBiZSBuZWdhdGl2ZSBpbiBvcmRlciB0byBpbmRleCBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KICAgICAqCiAgICAgKiBJbiBhZGRpdGlvbiwgU2FzcyBpbmRpY2VzIHJlZmVyIHRvIFVuaWNvZGUgY29kZSBwb2ludHMgd2hpbGUgUEhQIHN0cmluZwogICAgICogaW5kaWNlcyByZWZlciB0byBieXRlcy4gRm9yIGV4YW1wbGUsIHRoZSBjaGFyYWN0ZXIgVSsxRjYwQSwKICAgICAqIFNtaWxpbmcgRmFjZSBXaXRoIFNtaWxpbmcgRXllcywgaXMgYSBzaW5nbGUgVW5pY29kZSBjb2RlIHBvaW50IGJ1dCBpcwogICAgICogcmVwcmVzZW50ZWQgaW4gVVRGLTggYXMgc2V2ZXJhbCBieXRlcyAoYDB4RjBgLCBgMHg5RmAsIGAweDk4YCBhbmQgYDB4OEFgKS4gU28gaW4KICAgICAqIFBIUCwgYHN1YnN0cigiYfCfmIpiIiwgMSwgMSlgIHJldHVybnMgYCJceEYwImAsIHdoZXJlYXMgaW4gU2FzcwogICAgICogYHN0ci1zbGljZSgiYfCfmIpiIiwgMSwgMSlgIHJldHVybnMgYCLwn5iKImAuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmICRzYXNzSW5kZXggaXNuJ3QgYSBudW1iZXIsIGlmIHRoYXQKICAgICAqIG51bWJlciBpc24ndCBhbiBpbnRlZ2VyLCBvciBpZiB0aGF0IGludGVnZXIgaXNuJ3QgYSB2YWxpZCBpbmRleCBmb3IgdGhpcwogICAgICogc3RyaW5nLiBJZiAkc2Fzc0luZGV4IGNhbWUgZnJvbSBhIGZ1bmN0aW9uIGFyZ3VtZW50LCAkbmFtZSBpcyB0aGUKICAgICAqIGFyZ3VtZW50IG5hbWUgKHdpdGhvdXQgdGhlIGAkYCkuIEl0J3MgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2Fzc0luZGV4VG9TdHJpbmdJbmRleChWYWx1ZSAkc2Fzc0luZGV4LCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IGludAogICAgewogICAgICAgICRjb2RlcG9pbnRJbmRleCA9ICR0aGlzLT5zYXNzSW5kZXhUb0NvZGVQb2ludEluZGV4KCRzYXNzSW5kZXgsICRuYW1lKTsKCiAgICAgICAgaWYgKCRjb2RlcG9pbnRJbmRleCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RybGVuKG1iX3N1YnN0cigkdGhpcy0+dGV4dCwgMCwgJGNvZGVwb2ludEluZGV4LCAnVVRGLTgnKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyAkc2Fzc0luZGV4IGludG8gYSBQSFAtc3R5bGUgaW5kZXggaW50byBjb2RlcG9pbnRzLgogICAgICoKICAgICAqIFRoaXMgaW5kZXggaXMgc3VpdGFibGUgdG8gdXNlIHdpdGggZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCBjb2RlcG9pbnRzCiAgICAgKiAoaS5lLiB0aGUgbWJzdHJpbmcgZnVuY3Rpb25zKS4KICAgICAqCiAgICAgKiBTYXNzIGluZGV4ZXMgYXJlIG9uZS1iYXNlZCwgd2hpbGUgUEhQIGluZGV4ZXMgYXJlIHplcm8tYmFzZWQuIFNhc3MKICAgICAqIGluZGV4ZXMgbWF5IGFsc28gYmUgbmVnYXRpdmUgaW4gb3JkZXIgdG8gaW5kZXggZnJvbSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCiAgICAgKgogICAgICogU2VlIGFsc28ge0BzZWUgc2Fzc0luZGV4VG9TdHJpbmdJbmRleH0sIHdoaWNoIGlzIGFuIGluZGV4IGludG8ge0BzZWUgZ2V0VGV4dH0gZGlyZWN0bHkuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmICRzYXNzSW5kZXggaXNuJ3QgYSBudW1iZXIsIGlmIHRoYXQKICAgICAqIG51bWJlciBpc24ndCBhbiBpbnRlZ2VyLCBvciBpZiB0aGF0IGludGVnZXIgaXNuJ3QgYSB2YWxpZCBpbmRleCBmb3IgdGhpcwogICAgICogc3RyaW5nLiBJZiAkc2Fzc0luZGV4IGNhbWUgZnJvbSBhIGZ1bmN0aW9uIGFyZ3VtZW50LCAkbmFtZSBpcyB0aGUKICAgICAqIGFyZ3VtZW50IG5hbWUgKHdpdGhvdXQgdGhlIGAkYCkuIEl0J3MgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2Fzc0luZGV4VG9Db2RlUG9pbnRJbmRleChWYWx1ZSAkc2Fzc0luZGV4LCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IGludAogICAgewogICAgICAgICRpbmRleCA9ICRzYXNzSW5kZXgtPmFzc2VydE51bWJlcigkbmFtZSktPmFzc2VydEludCgkbmFtZSk7CgogICAgICAgIGlmICgkaW5kZXggPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoJ1N0cmluZyBpbmRleCBtYXkgbm90IGJlIDAuJywgJG5hbWUpOwogICAgICAgIH0KCiAgICAgICAgJHNhc3NMZW5ndGggPSAkdGhpcy0+Z2V0U2Fzc0xlbmd0aCgpOwoKICAgICAgICBpZiAoYWJzKCRpbmRleCkgPiAkc2Fzc0xlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiSW52YWxpZCBpbmRleCAkc2Fzc0luZGV4IGZvciBhIHN0cmluZyB3aXRoICRzYXNzTGVuZ3RoIGNoYXJhY3RlcnMuIiwgJG5hbWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpbmRleCA8IDAgPyAkc2Fzc0xlbmd0aCArICRpbmRleCA6ICRpbmRleCAtIDE7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdChWYWx1ZVZpc2l0b3IgJHZpc2l0b3IpCiAgICB7CiAgICAgICAgcmV0dXJuICR2aXNpdG9yLT52aXNpdFN0cmluZygkdGhpcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydFN0cmluZyg/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NTdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHBsdXMoVmFsdWUgJG90aGVyKTogVmFsdWUKICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2Fzc1N0cmluZykgewogICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoJHRoaXMtPnRleHQgLiAkb3RoZXItPmdldFRleHQoKSwgJHRoaXMtPnF1b3Rlcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoJHRoaXMtPnRleHQgLiAkb3RoZXItPnRvQ3NzU3RyaW5nKCksICR0aGlzLT5xdW90ZXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMob2JqZWN0ICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgU2Fzc1N0cmluZyAmJiAkdGhpcy0+dGV4dCA9PT0gJG90aGVyLT50ZXh0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SingleUnitSassNumber.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXE51bWJlclV0aWw7CgovKioKICogQSBzcGVjaWFsaXplZCBzdWJjbGFzcyBvZiB7QHNlZSBTYXNzTnVtYmVyfSBmb3IgbnVtYmVycyB0aGF0IGhhdmUgZXhhY3RseSBvbmUgbnVtZXJhdG9yIHVuaXQuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgU2luZ2xlVW5pdFNhc3NOdW1iZXIgZXh0ZW5kcyBTYXNzTnVtYmVyCnsKICAgIHByaXZhdGUgY29uc3QgQ09NUEFUSUJMRV9MRU5HVEhfVU5JVFMgPSBbJ2VtJywgJ3JlbScsICdleCcsICdyZXgnLCAnY2FwJywgJ3JjYXAnLCAnY2gnLCAncmNoJywgJ2ljJywgJ3JpYycsICdsaCcsICdybGgnLCAndncnLCAnbHZ3JywgJ3N2dycsICdkdncnLCAndmgnLCAnbHZoJywgJ3N2aCcsICdkdmgnLCAndmknLCAnbHZpJywgJ3N2aScsICdkdmknLCAndmInLCAnbHZiJywgJ3N2YicsICdkdmInLCAndm1pbicsICdsdm1pbicsICdzdm1pbicsICdkdm1pbicsICd2bWF4JywgJ2x2bWF4JywgJ3N2bWF4JywgJ2R2bWF4JywgJ2NxdycsICdjcWgnLCAnY3FpJywgJ2NxYicsICdjcW1pbicsICdjcW1heCcsICdjbScsICdtbScsICdxJywgJ2luJywgJ3BjJywgJ3B0JywgJ3B4J107CgogICAgcHJpdmF0ZSBjb25zdCBLTk9XTl9DT01QQVRJQklMSVRJRVNfQllfVU5JVCA9IFsKICAgICAgICAvLyBsZW5ndGgKICAgICAgICAnZW0nID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdyZW0nID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdleCcgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3JleCcgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ2NhcCcgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3JjYXAnID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdjaCcgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3JjaCcgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ2ljJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAncmljJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnbGgnID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdybGgnID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICd2dycgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ2x2dycgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3N2dycgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ2R2dycgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3ZoJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnbHZoJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnc3ZoJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnZHZoJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAndmknID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdsdmknID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdzdmknID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdkdmknID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICd2YicgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ2x2YicgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3N2YicgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ2R2YicgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3ZtaW4nID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdsdm1pbicgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3N2bWluJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnZHZtaW4nID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICd2bWF4JyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnbHZtYXgnID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdzdm1heCcgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ2R2bWF4JyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnY3F3JyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnY3FoJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnY3FpJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnY3FiJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnY3FtaW4nID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdjcW1heCcgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ2NtJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnbW0nID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdxJyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAnaW4nID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgICdwYycgPT4gc2VsZjo6Q09NUEFUSUJMRV9MRU5HVEhfVU5JVFMsCiAgICAgICAgJ3B0JyA9PiBzZWxmOjpDT01QQVRJQkxFX0xFTkdUSF9VTklUUywKICAgICAgICAncHgnID0+IHNlbGY6OkNPTVBBVElCTEVfTEVOR1RIX1VOSVRTLAogICAgICAgIC8vIGFuZ2xlCiAgICAgICAgJ2RlZycgPT4gWydkZWcnLCAnZ3JhZCcsICdyYWQnLCAndHVybiddLAogICAgICAgICdncmFkJyA9PiBbJ2RlZycsICdncmFkJywgJ3JhZCcsICd0dXJuJ10sCiAgICAgICAgJ3JhZCcgPT4gWydkZWcnLCAnZ3JhZCcsICdyYWQnLCAndHVybiddLAogICAgICAgICd0dXJuJyA9PiBbJ2RlZycsICdncmFkJywgJ3JhZCcsICd0dXJuJ10sCiAgICAgICAgLy8gdGltZQogICAgICAgICdzJyA9PiBbJ3MnLCAnbXMnXSwKICAgICAgICAnbXMnID0+IFsncycsICdtcyddLAogICAgICAgIC8vIGZyZXF1ZW5jeQogICAgICAgICdoeicgPT4gWydoeicsICdraHonXSwKICAgICAgICAna2h6JyA9PiBbJ2h6JywgJ2toeiddLAogICAgICAgIC8vIHBpeGVsIGRlbnNpdHkKICAgICAgICAnZHBpJyA9PiBbJ2RwaScsICdkcGNtJywgJ2RwcHgnXSwKICAgICAgICAnZHBjbScgPT4gWydkcGknLCAnZHBjbScsICdkcHB4J10sCiAgICAgICAgJ2RwcHgnID0+IFsnZHBpJywgJ2RwY20nLCAnZHBweCddLAogICAgXTsKCiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkdW5pdDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheXtTYXNzTnVtYmVyLCBTYXNzTnVtYmVyfXxudWxsICRhc1NsYXNoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChmbG9hdCAkdmFsdWUsIHN0cmluZyAkdW5pdCwgP2FycmF5ICRhc1NsYXNoID0gbnVsbCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR2YWx1ZSwgJGFzU2xhc2gpOwogICAgICAgICR0aGlzLT51bml0ID0gJHVuaXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE51bWVyYXRvclVuaXRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFskdGhpcy0+dW5pdF07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldERlbm9taW5hdG9yVW5pdHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc1VuaXRzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzQ29tcGxleFVuaXRzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHdpdGhWYWx1ZShmbG9hdCAkdmFsdWUpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSwgJHRoaXMtPnVuaXQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU2xhc2goU2Fzc051bWJlciAkbnVtZXJhdG9yLCBTYXNzTnVtYmVyICRkZW5vbWluYXRvcik6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHRoaXMtPmdldFZhbHVlKCksICR0aGlzLT51bml0LCBhcnJheSgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzVW5pdChzdHJpbmcgJHVuaXQpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR1bml0ID09PSAkdGhpcy0+dW5pdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzQ29tcGF0aWJsZVVuaXRzKFNhc3NOdW1iZXIgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBTaW5nbGVVbml0U2Fzc051bWJlciAmJiAkdGhpcy0+Y29tcGF0aWJsZVdpdGhVbml0KCRvdGhlci0+dW5pdCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Bvc3NpYmx5Q29tcGF0aWJsZVVuaXRzKFNhc3NOdW1iZXIgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIGlmICghJG90aGVyIGluc3RhbmNlb2YgU2luZ2xlVW5pdFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJGtub3duQ29tcGF0aWJpbGl0aWVzID0gc2VsZjo6S05PV05fQ09NUEFUSUJJTElUSUVTX0JZX1VOSVRbc3RydG9sb3dlcigkdGhpcy0+dW5pdCldID8/IG51bGw7CgogICAgICAgIGlmICgka25vd25Db21wYXRpYmlsaXRpZXMgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkb3RoZXJVbml0ID0gc3RydG9sb3dlcigkb3RoZXItPnVuaXQpOwoKICAgICAgICByZXR1cm4gIWlzc2V0KHNlbGY6OktOT1dOX0NPTVBBVElCSUxJVElFU19CWV9VTklUWyRvdGhlclVuaXRdKSB8fCBcaW5fYXJyYXkoJG90aGVyVW5pdCwgJGtub3duQ29tcGF0aWJpbGl0aWVzLCB0cnVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGF0aWJsZVdpdGhVbml0KHN0cmluZyAkdW5pdCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0Q29udmVyc2lvbkZhY3RvcigkdGhpcy0+dW5pdCwgJHVuaXQpICE9PSBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb2VyY2VUb01hdGNoKFNhc3NOdW1iZXIgJG90aGVyLCA/c3RyaW5nICRuYW1lID0gbnVsbCwgP3N0cmluZyAkb3RoZXJOYW1lID0gbnVsbCk6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2luZ2xlVW5pdFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgJGNvZXJjZWQgPSAkdGhpcy0+dHJ5Q29lcmNlVG9Vbml0KCRvdGhlci0+dW5pdCk7CgogICAgICAgICAgICBpZiAoJGNvZXJjZWQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY29lcmNlZDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ2FsbCB0aGUgcGFyZW50IHRvIGdlbmVyYXRlIGEgY29uc2lzdGVudCBlcnJvciBtZXNzYWdlLgogICAgICAgIHJldHVybiBwYXJlbnQ6OmNvZXJjZVRvTWF0Y2goJG90aGVyLCAkbmFtZSwgJG90aGVyTmFtZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvZXJjZVZhbHVlVG9NYXRjaChTYXNzTnVtYmVyICRvdGhlciwgP3N0cmluZyAkbmFtZSA9IG51bGwsID9zdHJpbmcgJG90aGVyTmFtZSA9IG51bGwpOiBmbG9hdAogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTaW5nbGVVbml0U2Fzc051bWJlcikgewogICAgICAgICAgICAkY29lcmNlZCA9ICR0aGlzLT50cnlDb2VyY2VWYWx1ZVRvVW5pdCgkb3RoZXItPnVuaXQpOwoKICAgICAgICAgICAgaWYgKCRjb2VyY2VkICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGNvZXJjZWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIENhbGwgdGhlIHBhcmVudCB0byBnZW5lcmF0ZSBhIGNvbnNpc3RlbnQgZXJyb3IgbWVzc2FnZS4KICAgICAgICByZXR1cm4gcGFyZW50Ojpjb2VyY2VWYWx1ZVRvTWF0Y2goJG90aGVyLCAkbmFtZSwgJG90aGVyTmFtZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbnZlcnRUb01hdGNoKFNhc3NOdW1iZXIgJG90aGVyLCA/c3RyaW5nICRuYW1lID0gbnVsbCwgP3N0cmluZyAkb3RoZXJOYW1lID0gbnVsbCk6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2luZ2xlVW5pdFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgJGNvZXJjZWQgPSAkdGhpcy0+dHJ5Q29lcmNlVG9Vbml0KCRvdGhlci0+dW5pdCk7CgogICAgICAgICAgICBpZiAoJGNvZXJjZWQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY29lcmNlZDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ2FsbCB0aGUgcGFyZW50IHRvIGdlbmVyYXRlIGEgY29uc2lzdGVudCBlcnJvciBtZXNzYWdlLgogICAgICAgIHJldHVybiBwYXJlbnQ6OmNvbnZlcnRUb01hdGNoKCRvdGhlciwgJG5hbWUsICRvdGhlck5hbWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb01hdGNoKFNhc3NOdW1iZXIgJG90aGVyLCA/c3RyaW5nICRuYW1lID0gbnVsbCwgP3N0cmluZyAkb3RoZXJOYW1lID0gbnVsbCk6IGZsb2F0CiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNpbmdsZVVuaXRTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgICRjb2VyY2VkID0gJHRoaXMtPnRyeUNvZXJjZVZhbHVlVG9Vbml0KCRvdGhlci0+dW5pdCk7CgogICAgICAgICAgICBpZiAoJGNvZXJjZWQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY29lcmNlZDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ2FsbCB0aGUgcGFyZW50IHRvIGdlbmVyYXRlIGEgY29uc2lzdGVudCBlcnJvciBtZXNzYWdlLgogICAgICAgIHJldHVybiBwYXJlbnQ6OmNvbnZlcnRWYWx1ZVRvTWF0Y2goJG90aGVyLCAkbmFtZSwgJG90aGVyTmFtZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvZXJjZShhcnJheSAkbmV3TnVtZXJhdG9yVW5pdHMsIGFycmF5ICRuZXdEZW5vbWluYXRvclVuaXRzLCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICBpZiAoXGNvdW50KCRuZXdOdW1lcmF0b3JVbml0cykgPT09IDEgJiYgXGNvdW50KCRuZXdEZW5vbWluYXRvclVuaXRzKSA9PT0gMCkgewogICAgICAgICAgICAkY29lcmNlZCA9ICR0aGlzLT50cnlDb2VyY2VUb1VuaXQoJG5ld051bWVyYXRvclVuaXRzWzBdKTsKCiAgICAgICAgICAgIGlmICgkY29lcmNlZCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRjb2VyY2VkOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBDYWxsIHRoZSBwYXJlbnQgdG8gZ2VuZXJhdGUgYSBjb25zaXN0ZW50IGVycm9yIG1lc3NhZ2UuCiAgICAgICAgcmV0dXJuIHBhcmVudDo6Y29lcmNlKCRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMsICRuYW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29lcmNlVmFsdWUoYXJyYXkgJG5ld051bWVyYXRvclVuaXRzLCBhcnJheSAkbmV3RGVub21pbmF0b3JVbml0cywgP3N0cmluZyAkbmFtZSA9IG51bGwpOiBmbG9hdAogICAgewogICAgICAgIGlmIChcY291bnQoJG5ld051bWVyYXRvclVuaXRzKSA9PT0gMSAmJiBcY291bnQoJG5ld0Rlbm9taW5hdG9yVW5pdHMpID09PSAwKSB7CiAgICAgICAgICAgICRjb2VyY2VkID0gJHRoaXMtPnRyeUNvZXJjZVZhbHVlVG9Vbml0KCRuZXdOdW1lcmF0b3JVbml0c1swXSk7CgogICAgICAgICAgICBpZiAoJGNvZXJjZWQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY29lcmNlZDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ2FsbCB0aGUgcGFyZW50IHRvIGdlbmVyYXRlIGEgY29uc2lzdGVudCBlcnJvciBtZXNzYWdlLgogICAgICAgIHJldHVybiBwYXJlbnQ6OmNvZXJjZVZhbHVlKCRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMsICRuYW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29lcmNlVmFsdWVUb1VuaXQoc3RyaW5nICR1bml0LCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IGZsb2F0CiAgICB7CiAgICAgICAgJGNvZXJjZWQgPSAkdGhpcy0+dHJ5Q29lcmNlVmFsdWVUb1VuaXQoJHVuaXQpOwoKICAgICAgICBpZiAoJGNvZXJjZWQgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRjb2VyY2VkOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2FsbCB0aGUgcGFyZW50IHRvIGdlbmVyYXRlIGEgY29uc2lzdGVudCBlcnJvciBtZXNzYWdlLgogICAgICAgIHJldHVybiBwYXJlbnQ6OmNvZXJjZVZhbHVlVG9Vbml0KCR1bml0LCAkbmFtZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHVuYXJ5TWludXMoKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoLSR0aGlzLT5nZXRWYWx1ZSgpLCAkdGhpcy0+dW5pdCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTaW5nbGVVbml0U2Fzc051bWJlcikgewogICAgICAgICAgICAkZmFjdG9yID0gc2VsZjo6Z2V0Q29udmVyc2lvbkZhY3Rvcigkb3RoZXItPnVuaXQsICR0aGlzLT51bml0KTsKCiAgICAgICAgICAgIHJldHVybiAkZmFjdG9yICE9PSBudWxsICYmIE51bWJlclV0aWw6OmZ1enp5RXF1YWxzKCR0aGlzLT5nZXRWYWx1ZSgpICogJGZhY3RvciwgJG90aGVyLT5nZXRWYWx1ZSgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz4gJG90aGVyTnVtZXJhdG9ycwogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPiAkb3RoZXJEZW5vbWluYXRvcnMKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG11bHRpcGx5VW5pdHMoZmxvYXQgJHZhbHVlLCBhcnJheSAkb3RoZXJOdW1lcmF0b3JzLCBhcnJheSAkb3RoZXJEZW5vbWluYXRvcnMpOiBTYXNzTnVtYmVyCiAgICB7CiAgICAgICAgJG5ld051bWVyYXRvcnMgPSAkb3RoZXJOdW1lcmF0b3JzOwogICAgICAgICRyZW1vdmVkID0gZmFsc2U7CgogICAgICAgIGZvcmVhY2ggKCRvdGhlckRlbm9taW5hdG9ycyBhcyAka2V5ID0+ICRkZW5vbWluYXRvcikgewogICAgICAgICAgICAkY29udmVyc2lvbkZhY3RvciA9IHNlbGY6OmdldENvbnZlcnNpb25GYWN0b3IoJGRlbm9taW5hdG9yLCAkdGhpcy0+dW5pdCk7CgogICAgICAgICAgICBpZiAoXGlzX251bGwoJGNvbnZlcnNpb25GYWN0b3IpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHZhbHVlICo9ICRjb252ZXJzaW9uRmFjdG9yOwogICAgICAgICAgICB1bnNldCgkb3RoZXJEZW5vbWluYXRvcnNbJGtleV0pOwogICAgICAgICAgICAkcmVtb3ZlZCA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkcmVtb3ZlZCkgewogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRuZXdOdW1lcmF0b3JzLCAkdGhpcy0+dW5pdCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gU2Fzc051bWJlcjo6d2l0aFVuaXRzKCR2YWx1ZSwgJG5ld051bWVyYXRvcnMsIGFycmF5X3ZhbHVlcygkb3RoZXJEZW5vbWluYXRvcnMpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRyeUNvZXJjZVRvVW5pdChzdHJpbmcgJHVuaXQpOiA/U2Fzc051bWJlcgogICAgewogICAgICAgIGlmICgkdW5pdCA9PT0gJHRoaXMtPnVuaXQpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJGZhY3RvciA9IHNlbGY6OmdldENvbnZlcnNpb25GYWN0b3IoJHVuaXQsICR0aGlzLT51bml0KTsKCiAgICAgICAgaWYgKCRmYWN0b3IgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVVuaXRTYXNzTnVtYmVyKCR0aGlzLT5nZXRWYWx1ZSgpICogJGZhY3RvciwgJHVuaXQpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdHJ5Q29lcmNlVmFsdWVUb1VuaXQoc3RyaW5nICR1bml0KTogP2Zsb2F0CiAgICB7CiAgICAgICAgJGZhY3RvciA9IHNlbGY6OmdldENvbnZlcnNpb25GYWN0b3IoJHVuaXQsICR0aGlzLT51bml0KTsKCiAgICAgICAgaWYgKCRmYWN0b3IgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFZhbHVlKCkgKiAkZmFjdG9yOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/SpanColorFormat.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNvdXJjZVNwYW5cRmlsZVNwYW47CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBTcGFuQ29sb3JGb3JtYXQgaW1wbGVtZW50cyBDb2xvckZvcm1hdAp7CiAgICBwcml2YXRlIHJlYWRvbmx5IEZpbGVTcGFuICRzcGFuOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChGaWxlU3BhbiAkc3BhbikKICAgIHsKICAgICAgICAkdGhpcy0+c3BhbiA9ICRzcGFuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmlnaW5hbCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNwYW4tPmdldFRleHQoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/UnitlessSassNumber.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXE51bWJlclV0aWw7CgovKioKICogQSBzcGVjaWFsaXplZCBzdWJjbGFzcyBvZiB7QHNlZSBTYXNzTnVtYmVyfSBmb3IgbnVtYmVycyB0aGF0IGhhdmUgbm8gdW5pdHMuCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgVW5pdGxlc3NTYXNzTnVtYmVyIGV4dGVuZHMgU2Fzc051bWJlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheXtTYXNzTnVtYmVyLCBTYXNzTnVtYmVyfXxudWxsICRhc1NsYXNoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChmbG9hdCAkdmFsdWUsID9hcnJheSAkYXNTbGFzaCA9IG51bGwpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkdmFsdWUsICRhc1NsYXNoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtZXJhdG9yVW5pdHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldERlbm9taW5hdG9yVW5pdHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc1VuaXRzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NvbXBsZXhVbml0cygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB3aXRoVmFsdWUoZmxvYXQgJHZhbHVlKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU2xhc2goU2Fzc051bWJlciAkbnVtZXJhdG9yLCBTYXNzTnVtYmVyICRkZW5vbWluYXRvcik6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHRoaXMtPmdldFZhbHVlKCksIGFycmF5KCRudW1lcmF0b3IsICRkZW5vbWluYXRvcikpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNVbml0KHN0cmluZyAkdW5pdCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NvbXBhdGlibGVVbml0cyhTYXNzTnVtYmVyICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgVW5pdGxlc3NTYXNzTnVtYmVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNQb3NzaWJseUNvbXBhdGlibGVVbml0cyhTYXNzTnVtYmVyICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyIGluc3RhbmNlb2YgVW5pdGxlc3NTYXNzTnVtYmVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXRpYmxlV2l0aFVuaXQoc3RyaW5nICR1bml0KTogYm9vbAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb2VyY2VUb01hdGNoKFNhc3NOdW1iZXIgJG90aGVyLCA/c3RyaW5nICRuYW1lID0gbnVsbCwgP3N0cmluZyAkb3RoZXJOYW1lID0gbnVsbCk6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gJG90aGVyLT53aXRoVmFsdWUoJHRoaXMtPmdldFZhbHVlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb2VyY2VWYWx1ZVRvTWF0Y2goU2Fzc051bWJlciAkb3RoZXIsID9zdHJpbmcgJG5hbWUgPSBudWxsLCA/c3RyaW5nICRvdGhlck5hbWUgPSBudWxsKTogZmxvYXQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFZhbHVlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbnZlcnRUb01hdGNoKFNhc3NOdW1iZXIgJG90aGVyLCA/c3RyaW5nICRuYW1lID0gbnVsbCwgP3N0cmluZyAkb3RoZXJOYW1lID0gbnVsbCk6IFNhc3NOdW1iZXIKICAgIHsKICAgICAgICBpZiAoISRvdGhlci0+aGFzVW5pdHMoKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAvLyBDYWxsIHRoZSBwYXJlbnQgdG8gZ2VuZXJhdGUgYSBjb25zaXN0ZW50IGVycm9yIG1lc3NhZ2UuCiAgICAgICAgcmV0dXJuIHBhcmVudDo6Y29udmVydFRvTWF0Y2goJG90aGVyLCAkbmFtZSwgJG90aGVyTmFtZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvTWF0Y2goU2Fzc051bWJlciAkb3RoZXIsID9zdHJpbmcgJG5hbWUgPSBudWxsLCA/c3RyaW5nICRvdGhlck5hbWUgPSBudWxsKTogZmxvYXQKICAgIHsKICAgICAgICBpZiAoISRvdGhlci0+aGFzVW5pdHMoKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldFZhbHVlKCk7CiAgICAgICAgfQoKICAgICAgICAvLyBDYWxsIHRoZSBwYXJlbnQgdG8gZ2VuZXJhdGUgYSBjb25zaXN0ZW50IGVycm9yIG1lc3NhZ2UuCiAgICAgICAgcmV0dXJuIHBhcmVudDo6Y29udmVydFZhbHVlVG9NYXRjaCgkb3RoZXIsICRuYW1lLCAkb3RoZXJOYW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29lcmNlKGFycmF5ICRuZXdOdW1lcmF0b3JVbml0cywgYXJyYXkgJG5ld0Rlbm9taW5hdG9yVW5pdHMsID9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjp3aXRoVW5pdHMoJHRoaXMtPmdldFZhbHVlKCksICRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb2VyY2VWYWx1ZShhcnJheSAkbmV3TnVtZXJhdG9yVW5pdHMsIGFycmF5ICRuZXdEZW5vbWluYXRvclVuaXRzLCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IGZsb2F0CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRWYWx1ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb2VyY2VWYWx1ZVRvVW5pdChzdHJpbmcgJHVuaXQsID9zdHJpbmcgJG5hbWUgPSBudWxsKTogZmxvYXQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFZhbHVlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdyZWF0ZXJUaGFuKFZhbHVlICRvdGhlcik6IFNhc3NCb29sZWFuCiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoTnVtYmVyVXRpbDo6ZnV6enlHcmVhdGVyVGhhbigkdGhpcy0+Z2V0VmFsdWUoKSwgJG90aGVyLT5nZXRWYWx1ZSgpKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFyZW50OjpncmVhdGVyVGhhbigkb3RoZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBncmVhdGVyVGhhbk9yRXF1YWxzKFZhbHVlICRvdGhlcik6IFNhc3NCb29sZWFuCiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoTnVtYmVyVXRpbDo6ZnV6enlHcmVhdGVyVGhhbk9yRXF1YWxzKCR0aGlzLT5nZXRWYWx1ZSgpLCAkb3RoZXItPmdldFZhbHVlKCkpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6OmdyZWF0ZXJUaGFuT3JFcXVhbHMoJG90aGVyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbGVzc1RoYW4oVmFsdWUgJG90aGVyKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICByZXR1cm4gU2Fzc0Jvb2xlYW46OmNyZWF0ZShOdW1iZXJVdGlsOjpmdXp6eUxlc3NUaGFuKCR0aGlzLT5nZXRWYWx1ZSgpLCAkb3RoZXItPmdldFZhbHVlKCkpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6Omxlc3NUaGFuKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGxlc3NUaGFuT3JFcXVhbHMoVmFsdWUgJG90aGVyKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICBpZiAoJG90aGVyIGluc3RhbmNlb2YgU2Fzc051bWJlcikgewogICAgICAgICAgICByZXR1cm4gU2Fzc0Jvb2xlYW46OmNyZWF0ZShOdW1iZXJVdGlsOjpmdXp6eUxlc3NUaGFuT3JFcXVhbHMoJHRoaXMtPmdldFZhbHVlKCksICRvdGhlci0+Z2V0VmFsdWUoKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHBhcmVudDo6bGVzc1RoYW5PckVxdWFscygkb3RoZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtb2R1bG8oVmFsdWUgJG90aGVyKTogU2Fzc051bWJlcgogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkb3RoZXItPndpdGhWYWx1ZShOdW1iZXJVdGlsOjptb2R1bG9MaWtlU2FzcygkdGhpcy0+Z2V0VmFsdWUoKSwgJG90aGVyLT5nZXRWYWx1ZSgpKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFyZW50Ojptb2R1bG8oJG90aGVyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcGx1cyhWYWx1ZSAkb3RoZXIpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkb3RoZXItPndpdGhWYWx1ZSgkdGhpcy0+Z2V0VmFsdWUoKSArICRvdGhlci0+Z2V0VmFsdWUoKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFyZW50OjpwbHVzKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1pbnVzKFZhbHVlICRvdGhlcik6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuICRvdGhlci0+d2l0aFZhbHVlKCR0aGlzLT5nZXRWYWx1ZSgpIC0gJG90aGVyLT5nZXRWYWx1ZSgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6Om1pbnVzKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRpbWVzKFZhbHVlICRvdGhlcik6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuICRvdGhlci0+d2l0aFZhbHVlKCR0aGlzLT5nZXRWYWx1ZSgpICogJG90aGVyLT5nZXRWYWx1ZSgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6OnRpbWVzKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRpdmlkZWRCeShWYWx1ZSAkb3RoZXIpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzTnVtYmVyKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IE51bWJlclV0aWw6OmRpdmlkZUxpa2VTYXNzKCR0aGlzLT5nZXRWYWx1ZSgpLCAkb3RoZXItPmdldFZhbHVlKCkpOwoKICAgICAgICAgICAgaWYgKCRvdGhlci0+aGFzVW5pdHMoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OndpdGhVbml0cygkdmFsdWUsICRvdGhlci0+Z2V0RGVub21pbmF0b3JVbml0cygpLCAkb3RoZXItPmdldE51bWVyYXRvclVuaXRzKCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6OmRpdmlkZWRCeSgkb3RoZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmFyeU1pbnVzKCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKC0kdGhpcy0+Z2V0VmFsdWUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhvYmplY3QgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkb3RoZXIgaW5zdGFuY2VvZiBVbml0bGVzc1Nhc3NOdW1iZXIgJiYgTnVtYmVyVXRpbDo6ZnV6enlFcXVhbHMoJHRoaXMtPmdldFZhbHVlKCksICRvdGhlci0+Z2V0VmFsdWUoKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Value/Value.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlOwoKdXNlIEppcmlQdWRpbFxTZWFsZWRDbGFzc2VzXFNlYWxlZDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tcGxleFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wb3VuZFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3Rvckxpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNpbXBsZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXERlcHJlY2F0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzRm9ybWF0RXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzU2NyaXB0RXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFNlcmlhbGl6ZXJcU2VyaWFsaXplcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEVxdWF0YWJsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWaXNpdG9yXFZhbHVlVmlzaXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxXYXJuOwoKLyoqCiAqIEEgU2Fzc1NjcmlwdCB2YWx1ZS4KICoKICogQWxsIFNhc3NTY3JpcHQgdmFsdWVzIGFyZSB1bm1vZGlmaWFibGUuIE5ldyB2YWx1ZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nCiAqIHN1YmNsYXNzIGNvbnN0cnVjdG9ycyBsaWtlIGBuZXcgU2Fzc1N0cmluZ2AuIFVudHlwZWQgdmFsdWVzIGNhbiBiZSBjYXN0IHRvCiAqIHBhcnRpY3VsYXIgdHlwZXMgdXNpbmcgYGFzc2VydCooKWAgZnVuY3Rpb25zIGxpa2Uge0BzZWUgYXNzZXJ0U3RyaW5nfSwgd2hpY2gKICogdGhyb3cgdXNlci1mcmllbmRseSBlcnJvciBtZXNzYWdlcyBpZiB0aGV5IGZhaWwuCiAqLwojW1NlYWxlZChwZXJtaXRzOiBbU2Fzc0Jvb2xlYW46OmNsYXNzLCBTYXNzQ2FsY3VsYXRpb246OmNsYXNzLCBTYXNzQ29sb3I6OmNsYXNzLCBTYXNzRnVuY3Rpb246OmNsYXNzLCBTYXNzTGlzdDo6Y2xhc3MsIFNhc3NNYXA6OmNsYXNzLCBTYXNzTWl4aW46OmNsYXNzLCBTYXNzTnVsbDo6Y2xhc3MsIFNhc3NOdW1iZXI6OmNsYXNzLCBTYXNzU3RyaW5nOjpjbGFzc10pXQphYnN0cmFjdCBjbGFzcyBWYWx1ZSBpbXBsZW1lbnRzIEVxdWF0YWJsZSwgXFN0cmluZ2FibGUKewogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSB2YWx1ZSBjb3VudHMgYXMgYHRydWVgIGluIGFuIGBAaWZgIHN0YXRlbWVudCBhbmQgb3RoZXIgY29udGV4dHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzVHJ1dGh5KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBzZXBhcmF0b3IgZm9yIHRoaXMgdmFsdWUgYXMgYSBsaXN0LgogICAgICoKICAgICAqIEFsbCBTYXNzU2NyaXB0IHZhbHVlcyBjYW4gYmUgdXNlZCBhcyBsaXN0cy4gTWFwcyBjb3VudCBhcyBsaXN0cyBvZiBwYWlycywKICAgICAqIGFuZCBhbGwgb3RoZXIgdmFsdWVzIGNvdW50IGFzIHNpbmdsZS12YWx1ZSBsaXN0cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlcGFyYXRvcigpOiBMaXN0U2VwYXJhdG9yCiAgICB7CiAgICAgICAgcmV0dXJuIExpc3RTZXBhcmF0b3I6OlVOREVDSURFRDsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyB2YWx1ZSBhcyBhIGxpc3QgaGFzIGJyYWNrZXRzLgogICAgICoKICAgICAqIEFsbCBTYXNzU2NyaXB0IHZhbHVlcyBjYW4gYmUgdXNlZCBhcyBsaXN0cy4gTWFwcyBjb3VudCBhcyBsaXN0cyBvZiBwYWlycywKICAgICAqIGFuZCBhbGwgb3RoZXIgdmFsdWVzIGNvdW50IGFzIHNpbmdsZS12YWx1ZSBsaXN0cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0JyYWNrZXRzKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIHZhbHVlIGFzIGEgbGlzdC4KICAgICAqCiAgICAgKiBBbGwgU2Fzc1NjcmlwdCB2YWx1ZXMgY2FuIGJlIHVzZWQgYXMgbGlzdHMuIE1hcHMgY291bnQgYXMgbGlzdHMgb2YgcGFpcnMsCiAgICAgKiBhbmQgYWxsIG90aGVyIHZhbHVlcyBjb3VudCBhcyBzaW5nbGUtdmFsdWUgbGlzdHMuCiAgICAgKgogICAgICogQHJldHVybiBsaXN0PFZhbHVlPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNMaXN0KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFskdGhpc107CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgbGVuZ3RoIG9mIHtAc2VlIGFzTGlzdH0uCiAgICAgKgogICAgICogVGhpcyBpcyB1c2VkIHRvIGNvbXB1dGUge0BzZWUgc2Fzc0luZGV4VG9MaXN0SW5kZXh9IHdpdGhvdXQgYWxsb2NhdGluZyBhIG5ldwogICAgICogbGlzdC4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExlbmd0aEFzTGlzdCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGxzIHRoZSBhcHByb3ByaWF0ZSB2aXNpdCBtZXRob2Qgb24gJHZpc2l0b3IuCiAgICAgKgogICAgICogQHRlbXBsYXRlIFQKICAgICAqCiAgICAgKiBAcGFyYW0gVmFsdWVWaXNpdG9yPFQ+ICR2aXNpdG9yCiAgICAgKgogICAgICogQHJldHVybiBUCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoVmFsdWVWaXNpdG9yICR2aXNpdG9yKTsKCiAgICAvKioKICAgICAqIENvbnZlcnRzICRzYXNzSW5kZXggaW50byBhIFBIUC1zdHlsZSBpbmRleCBpbnRvIHRoZSBsaXN0IHJldHVybmVkIGJ5CiAgICAgKiB7QHNlZSBhc0xpc3R9LgogICAgICoKICAgICAqIFNhc3MgaW5kZXhlcyBhcmUgb25lLWJhc2VkLCB3aGlsZSBQSFAgaW5kZXhlcyBhcmUgemVyby1iYXNlZC4gU2FzcwogICAgICogaW5kZXhlcyBtYXkgYWxzbyBiZSBuZWdhdGl2ZSBpbiBvcmRlciB0byBpbmRleCBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmICRzYXNzSW5kZXggaXNuJ3QgYSBudW1iZXIsIGlmIHRoYXQKICAgICAqIG51bWJlciBpc24ndCBhbiBpbnRlZ2VyLCBvciBpZiB0aGF0IGludGVnZXIgaXNuJ3QgYSB2YWxpZCBpbmRleCBmb3IKICAgICAqIHtAc2VlIGFzTGlzdH0uIElmICRzYXNzSW5kZXggY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZQogICAgICogYXJndW1lbnQgbmFtZSAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzYXNzSW5kZXhUb0xpc3RJbmRleChWYWx1ZSAkc2Fzc0luZGV4LCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IGludAogICAgewogICAgICAgICRpbmRleFZhbHVlID0gJHNhc3NJbmRleC0+YXNzZXJ0TnVtYmVyKCRuYW1lKTsKCiAgICAgICAgaWYgKCRpbmRleFZhbHVlLT5oYXNVbml0cygpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gPDw8V0FSTklORwpcJCRuYW1lOiBQYXNzaW5nIGEgbnVtYmVyIHdpdGggdW5pdCB7JGluZGV4VmFsdWUtPmdldFVuaXRTdHJpbmcoKX0gaXMgZGVwcmVjYXRlZC4KClRvIHByZXNlcnZlIGN1cnJlbnQgYmVoYXZpb3I6IHskaW5kZXhWYWx1ZS0+dW5pdFN1Z2dlc3Rpb24oJG5hbWUgPz8gJ2luZGV4Jyl9CgpNb3JlIGluZm86IGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kL2Z1bmN0aW9uLXVuaXRzCldBUk5JTkc7CgogICAgICAgICAgICBXYXJuOjpmb3JEZXByZWNhdGlvbigkbWVzc2FnZSwgRGVwcmVjYXRpb246OmZ1bmN0aW9uVW5pdHMpOwogICAgICAgIH0KCiAgICAgICAgJGluZGV4ID0gJGluZGV4VmFsdWUtPmFzc2VydEludCgkbmFtZSk7CgogICAgICAgIGlmICgkaW5kZXggPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoJ0xpc3QgaW5kZXggbWF5IG5vdCBiZSAwLicsICRuYW1lKTsKICAgICAgICB9CgogICAgICAgICRsZW5ndGhBc0xpc3QgPSAkdGhpcy0+Z2V0TGVuZ3RoQXNMaXN0KCk7CgogICAgICAgIGlmIChhYnMoJGluZGV4KSA+ICRsZW5ndGhBc0xpc3QpIHsKICAgICAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoIkludmFsaWQgaW5kZXggJHNhc3NJbmRleCBmb3IgYSBsaXN0IHdpdGggJGxlbmd0aEFzTGlzdCBlbGVtZW50cy4iLCAkbmFtZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGluZGV4IDwgMCA/ICRsZW5ndGhBc0xpc3QgKyAkaW5kZXggOiAkaW5kZXggLSAxOwogICAgfQoKICAgIC8qKgogICAgICogVGhyb3dzIGEge0BzZWUgU2Fzc1NjcmlwdEV4Y2VwdGlvbn0gaWYgJHRoaXMgaXNuJ3QgYSBib29sZWFuLgogICAgICoKICAgICAqIE5vdGUgdGhhdCBnZW5lcmFsbHksIGZ1bmN0aW9ucyBzaG91bGQgdXNlIHtAc2VlIGlzVHJ1dGh5fSByYXRoZXIgdGhhbiByZXF1aXJpbmcKICAgICAqIGEgbGl0ZXJhbCBib29sZWFuLgogICAgICoKICAgICAqIElmIHRoaXMgY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZSBhcmd1bWVudCBuYW1lCiAgICAgKiAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRCb29sZWFuKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHRoaXMgaXMgbm90IGEgYm9vbGVhbi4iLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaHJvd3MgYSB7QHNlZSBTYXNzU2NyaXB0RXhjZXB0aW9ufSBpZiAkdGhpcyBpc24ndCBhIGNhbGN1bGF0aW9uLgogICAgICoKICAgICAqIElmIHRoaXMgY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZSBhcmd1bWVudCBuYW1lCiAgICAgKiAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRDYWxjdWxhdGlvbig/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NDYWxjdWxhdGlvbgogICAgewogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdGhpcyBpcyBub3QgYSBjYWxjdWxhdGlvbi4iLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaHJvd3MgYSB7QHNlZSBTYXNzU2NyaXB0RXhjZXB0aW9ufSBpZiAkdGhpcyBpc24ndCBhIGNvbG9yLgogICAgICoKICAgICAqIElmIHRoaXMgY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZSBhcmd1bWVudCBuYW1lCiAgICAgKiAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRDb2xvcig/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NDb2xvcgogICAgewogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdGhpcyBpcyBub3QgYSBjb2xvci4iLCAkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaHJvd3MgYSB7QHNlZSBTYXNzU2NyaXB0RXhjZXB0aW9ufSBpZiAkdGhpcyBpc24ndCBhIGZ1bmN0aW9uIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBJZiB0aGlzIGNhbWUgZnJvbSBhIGZ1bmN0aW9uIGFyZ3VtZW50LCAkbmFtZSBpcyB0aGUgYXJndW1lbnQgbmFtZQogICAgICogKHdpdGhvdXQgdGhlIGAkYCkuIEl0J3MgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0RnVuY3Rpb24oP3N0cmluZyAkbmFtZSA9IG51bGwpOiBTYXNzRnVuY3Rpb24KICAgIHsKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHRoaXMgaXMgbm90IGEgZnVuY3Rpb24gcmVmZXJlbmNlLiIsICRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRocm93cyBhIHtAc2VlIFNhc3NTY3JpcHRFeGNlcHRpb259IGlmICR0aGlzIGlzbid0IGEgbWl4aW4gcmVmZXJlbmNlLgogICAgICoKICAgICAqIElmIHRoaXMgY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZSBhcmd1bWVudCBuYW1lCiAgICAgKiAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRNaXhpbig/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NNaXhpbgogICAgewogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdGhpcyBpcyBub3QgYSBtaXhpbiByZWZlcmVuY2UuIiwgJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogVGhyb3dzIGEge0BzZWUgU2Fzc1NjcmlwdEV4Y2VwdGlvbn0gaWYgJHRoaXMgaXNuJ3QgYSBtYXAuCiAgICAgKgogICAgICogSWYgdGhpcyBjYW1lIGZyb20gYSBmdW5jdGlvbiBhcmd1bWVudCwgJG5hbWUgaXMgdGhlIGFyZ3VtZW50IG5hbWUKICAgICAqICh3aXRob3V0IHRoZSBgJGApLiBJdCdzIHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE1hcCg/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NNYXAKICAgIHsKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHRoaXMgaXMgbm90IGEgbWFwLiIsICRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiAkdGhpcyBhcyBhIFNhc3NNYXAgaWYgaXQgaXMgb25lIChpbmNsdWRpbmcgZW1wdHkgbGlzdHMpIG9yIG51bGwgb3RoZXJ3aXNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdHJ5TWFwKCk6ID9TYXNzTWFwCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaHJvd3MgYSB7QHNlZSBTYXNzU2NyaXB0RXhjZXB0aW9ufSBpZiAkdGhpcyBpc24ndCBhIG51bWJlci4KICAgICAqCiAgICAgKiBJZiB0aGlzIGNhbWUgZnJvbSBhIGZ1bmN0aW9uIGFyZ3VtZW50LCAkbmFtZSBpcyB0aGUgYXJndW1lbnQgbmFtZQogICAgICogKHdpdGhvdXQgdGhlIGAkYCkuIEl0J3MgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0TnVtYmVyKD9zdHJpbmcgJG5hbWUgPSBudWxsKTogU2Fzc051bWJlcgogICAgewogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdGhpcyBpcyBub3QgYSBudW1iZXIuIiwgJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogVGhyb3dzIGEge0BzZWUgU2Fzc1NjcmlwdEV4Y2VwdGlvbn0gaWYgJHRoaXMgaXNuJ3QgYSBzdHJpbmcuCiAgICAgKgogICAgICogSWYgdGhpcyBjYW1lIGZyb20gYSBmdW5jdGlvbiBhcmd1bWVudCwgJG5hbWUgaXMgdGhlIGFyZ3VtZW50IG5hbWUKICAgICAqICh3aXRob3V0IHRoZSBgJGApLiBJdCdzIHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydFN0cmluZyg/c3RyaW5nICRuYW1lID0gbnVsbCk6IFNhc3NTdHJpbmcKICAgIHsKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHRoaXMgaXMgbm90IGEgc3RyaW5nLiIsICRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlcyAkdGhpcyBhcyBhIHNlbGVjdG9yIGxpc3QsIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUKICAgICAqIGBzZWxlY3Rvci1wYXJzZSgpYCBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhpcyBpc24ndCBhIHR5cGUgdGhhdCBjYW4gYmUgcGFyc2VkIGFzIGEKICAgICAqIHNlbGVjdG9yLCBvciBpZiBwYXJzaW5nIGZhaWxzLiBJZiAkYWxsb3dQYXJlbnQgaXMgYHRydWVgLCB0aGlzIGFsbG93cwogICAgICoge0BzZWUgUGFyZW50U2VsZWN0b3J9cy4gT3RoZXJ3aXNlLCB0aGV5J3JlIGNvbnNpZGVyZWQgcGFyc2UgZXJyb3JzLgogICAgICoKICAgICAqIElmIHRoaXMgY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZSBhcmd1bWVudCBuYW1lCiAgICAgKiAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRTZWxlY3Rvcig/c3RyaW5nICRuYW1lID0gbnVsbCwgYm9vbCAkYWxsb3dQYXJlbnQgPSBmYWxzZSk6IFNlbGVjdG9yTGlzdAogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+c2VsZWN0b3JTdHJpbmcoJG5hbWUpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JMaXN0OjpwYXJzZSgkc3RyaW5nLCBudWxsLCBudWxsLCBudWxsLCAkYWxsb3dQYXJlbnQpOwogICAgICAgIH0gY2F0Y2ggKFNhc3NGb3JtYXRFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoJGUtPmdldE1lc3NhZ2UoKSwgJG5hbWUsICRlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgJHRoaXMgYXMgYSBzaW1wbGUgc2VsZWN0b3IsIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUKICAgICAqIGBzZWxlY3Rvci1wYXJzZSgpYCBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhpcyBpc24ndCBhIHR5cGUgdGhhdCBjYW4gYmUgcGFyc2VkIGFzIGEKICAgICAqIHNlbGVjdG9yLCBvciBpZiBwYXJzaW5nIGZhaWxzLiBJZiAkYWxsb3dQYXJlbnQgaXMgYHRydWVgLCB0aGlzIGFsbG93cwogICAgICoge0BzZWUgUGFyZW50U2VsZWN0b3J9cy4gT3RoZXJ3aXNlLCB0aGV5J3JlIGNvbnNpZGVyZWQgcGFyc2UgZXJyb3JzLgogICAgICoKICAgICAqIElmIHRoaXMgY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZSBhcmd1bWVudCBuYW1lCiAgICAgKiAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRTaW1wbGVTZWxlY3Rvcig/c3RyaW5nICRuYW1lID0gbnVsbCwgYm9vbCAkYWxsb3dQYXJlbnQgPSBmYWxzZSk6IFNpbXBsZVNlbGVjdG9yCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5zZWxlY3RvclN0cmluZygkbmFtZSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBTaW1wbGVTZWxlY3Rvcjo6cGFyc2UoJHN0cmluZywgbnVsbCwgbnVsbCwgJGFsbG93UGFyZW50KTsKICAgICAgICB9IGNhdGNoIChTYXNzRm9ybWF0RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCRlLT5nZXRNZXNzYWdlKCksICRuYW1lLCAkZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzICR0aGlzIGFzIGEgY29tcG91bmQgc2VsZWN0b3IsIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUKICAgICAqIGBzZWxlY3Rvci1wYXJzZSgpYCBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhpcyBpc24ndCBhIHR5cGUgdGhhdCBjYW4gYmUgcGFyc2VkIGFzIGEKICAgICAqIHNlbGVjdG9yLCBvciBpZiBwYXJzaW5nIGZhaWxzLiBJZiAkYWxsb3dQYXJlbnQgaXMgYHRydWVgLCB0aGlzIGFsbG93cwogICAgICoge0BzZWUgUGFyZW50U2VsZWN0b3J9cy4gT3RoZXJ3aXNlLCB0aGV5J3JlIGNvbnNpZGVyZWQgcGFyc2UgZXJyb3JzLgogICAgICoKICAgICAqIElmIHRoaXMgY2FtZSBmcm9tIGEgZnVuY3Rpb24gYXJndW1lbnQsICRuYW1lIGlzIHRoZSBhcmd1bWVudCBuYW1lCiAgICAgKiAod2l0aG91dCB0aGUgYCRgKS4gSXQncyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRDb21wb3VuZFNlbGVjdG9yKD9zdHJpbmcgJG5hbWUgPSBudWxsLCBib29sICRhbGxvd1BhcmVudCA9IGZhbHNlKTogQ29tcG91bmRTZWxlY3RvcgogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+c2VsZWN0b3JTdHJpbmcoJG5hbWUpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gQ29tcG91bmRTZWxlY3Rvcjo6cGFyc2UoJHN0cmluZywgbnVsbCwgbnVsbCwgJGFsbG93UGFyZW50KTsKICAgICAgICB9IGNhdGNoIChTYXNzRm9ybWF0RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCRlLT5nZXRNZXNzYWdlKCksICRuYW1lLCAkZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzICR0aGlzIGFzIGEgY29tcGxleCBzZWxlY3RvciwgaW4gdGhlIHNhbWUgbWFubmVyIGFzIHRoZQogICAgICogYHNlbGVjdG9yLXBhcnNlKClgIGZ1bmN0aW9uLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbiBpZiB0aGlzIGlzbid0IGEgdHlwZSB0aGF0IGNhbiBiZSBwYXJzZWQgYXMgYQogICAgICogc2VsZWN0b3IsIG9yIGlmIHBhcnNpbmcgZmFpbHMuIElmICRhbGxvd1BhcmVudCBpcyBgdHJ1ZWAsIHRoaXMgYWxsb3dzCiAgICAgKiB7QHNlZSBQYXJlbnRTZWxlY3Rvcn1zLiBPdGhlcndpc2UsIHRoZXkncmUgY29uc2lkZXJlZCBwYXJzZSBlcnJvcnMuCiAgICAgKgogICAgICogSWYgdGhpcyBjYW1lIGZyb20gYSBmdW5jdGlvbiBhcmd1bWVudCwgJG5hbWUgaXMgdGhlIGFyZ3VtZW50IG5hbWUKICAgICAqICh3aXRob3V0IHRoZSBgJGApLiBJdCdzIHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZy4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydENvbXBsZXhTZWxlY3Rvcig/c3RyaW5nICRuYW1lID0gbnVsbCwgYm9vbCAkYWxsb3dQYXJlbnQgPSBmYWxzZSk6IENvbXBsZXhTZWxlY3RvcgogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+c2VsZWN0b3JTdHJpbmcoJG5hbWUpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gQ29tcGxleFNlbGVjdG9yOjpwYXJzZSgkc3RyaW5nLCBudWxsLCBudWxsLCAkYWxsb3dQYXJlbnQpOwogICAgICAgIH0gY2F0Y2ggKFNhc3NGb3JtYXRFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoJGUtPmdldE1lc3NhZ2UoKSwgJG5hbWUsICRlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIGBzZWxlY3Rvci1wYXJzZSgpYC1zdHlsZSBpbnB1dCBpbnRvIGEgc3RyaW5nIHRoYXQgY2FuIGJlCiAgICAgKiBwYXJzZWQuCiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uIGlmICR0aGlzIGlzbid0IGEgdHlwZSBvciBhIHN0cnVjdHVyZSB0aGF0CiAgICAgKiBjYW4gYmUgcGFyc2VkIGFzIGEgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2VsZWN0b3JTdHJpbmcoP3N0cmluZyAkbmFtZSk6IHN0cmluZwogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+c2VsZWN0b3JTdHJpbmdPck51bGwoKTsKCiAgICAgICAgaWYgKCRzdHJpbmcgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRzdHJpbmc7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHRoaXMgaXMgbm90IGEgdmFsaWQgc2VsZWN0b3I6IGl0IG11c3QgYmUgYSBzdHJpbmcsXG5hIGxpc3Qgb2Ygc3RyaW5ncywgb3IgYSBsaXN0IG9mIGxpc3RzIG9mIHN0cmluZ3MuIiwgJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYSBgc2VsZWN0b3ItcGFyc2UoKWAtc3R5bGUgaW5wdXQgaW50byBhIHN0cmluZyB0aGF0IGNhbiBiZQogICAgICogcGFyc2VkLgogICAgICoKICAgICAqIFJldHVybnMgYG51bGxgIGlmICR0aGlzIGlzbid0IGEgdHlwZSBvciBhIHN0cnVjdHVyZSB0aGF0IGNhbiBiZSBwYXJzZWQgYXMKICAgICAqIGEgc2VsZWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2VsZWN0b3JTdHJpbmdPck51bGwoKTogP3N0cmluZwogICAgewogICAgICAgIGlmICgkdGhpcyBpbnN0YW5jZW9mIFNhc3NTdHJpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRUZXh0KCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISR0aGlzIGluc3RhbmNlb2YgU2Fzc0xpc3QpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkbGlzdCA9ICR0aGlzOwogICAgICAgIGlmIChcY291bnQoJGxpc3QtPmFzTGlzdCgpKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSBbXTsKICAgICAgICBzd2l0Y2ggKCRsaXN0LT5nZXRTZXBhcmF0b3IoKSkgewogICAgICAgICAgICBjYXNlIExpc3RTZXBhcmF0b3I6OkNPTU1BOgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3QtPmFzTGlzdCgpIGFzICRjb21wbGV4KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRjb21wbGV4IGluc3RhbmNlb2YgU2Fzc1N0cmluZykgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29tcGxleC0+Z2V0VGV4dCgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkY29tcGxleCBpbnN0YW5jZW9mIFNhc3NMaXN0ICYmICRjb21wbGV4LT5nZXRTZXBhcmF0b3IoKSA9PT0gTGlzdFNlcGFyYXRvcjo6U1BBQ0UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmluZyA9ICRjb21wbGV4LT5zZWxlY3RvclN0cmluZ09yTnVsbCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdHJpbmcgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkc3RyaW5nOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBMaXN0U2VwYXJhdG9yOjpTTEFTSDoKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0LT5hc0xpc3QoKSBhcyAkY29tcG91bmQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbXBvdW5kIGluc3RhbmNlb2YgU2Fzc1N0cmluZykgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29tcG91bmQtPmdldFRleHQoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpbXBsb2RlKCRsaXN0LT5nZXRTZXBhcmF0b3IoKSA9PT0gTGlzdFNlcGFyYXRvcjo6Q09NTUEgPyAnLCAnIDogJyAnLCAkcmVzdWx0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHZhbHVlIHdpbGwgYmUgcmVwcmVzZW50ZWQgaW4gQ1NTIGFzIHRoZSBlbXB0eSBzdHJpbmcuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0JsYW5rKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgaXMgYSB2YWx1ZSB0aGF0IENTUyBtYXkgdHJlYXQgYXMgYSBudW1iZXIsIHN1Y2ggYXMgYGNhbGMoKWAgb3IgYHZhcigpYC4KICAgICAqCiAgICAgKiBGdW5jdGlvbnMgdGhhdCBzaGFkb3cgcGxhaW4gQ1NTIGZ1bmN0aW9ucyBuZWVkIHRvIGdyYWNlZnVsbHkgaGFuZGxlIHdoZW4KICAgICAqIHRoZXNlIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTcGVjaWFsTnVtYmVyKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoaXMgaXMgYSBjYWxsIHRvIGB2YXIoKWAsIHdoaWNoIG1heSBiZSBzdWJzdGl0dXRlZCBpbiBDU1MgZm9yIGEgY3VzdG9tIHByb3BlcnR5IHZhbHVlLgogICAgICoKICAgICAqIEZ1bmN0aW9ucyB0aGF0IHNoYWRvdyBwbGFpbiBDU1MgZnVuY3Rpb25zIG5lZWQgdG8gZ3JhY2VmdWxseSBoYW5kbGUgd2hlbgogICAgICogdGhlc2UgYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ZhcigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBQSFAncyBgbnVsbGAgdmFsdWUgaWYgdGhpcyBpcyBTYXNzIG51bGwsIGFuZCByZXR1cm5zIGAkdGhpc2Agb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWFsTnVsbCgpOiA/VmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbmV3IGxpc3QgY29udGFpbmluZyAkY29udGVudHMgdGhhdCBkZWZhdWx0cyB0byB0aGlzIHZhbHVlJ3MKICAgICAqIHNlcGFyYXRvciBhbmQgYnJhY2tldHMuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8VmFsdWU+ICRjb250ZW50cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aExpc3RDb250ZW50cyhhcnJheSAkY29udGVudHMsID9MaXN0U2VwYXJhdG9yICRzZXBhcmF0b3IgPSBudWxsLCA/Ym9vbCAkYnJhY2tldHMgPSBudWxsKTogU2Fzc0xpc3QKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNhc3NMaXN0KCRjb250ZW50cywgJHNlcGFyYXRvciA/PyAkdGhpcy0+Z2V0U2VwYXJhdG9yKCksICRicmFja2V0cyA/PyAkdGhpcy0+aGFzQnJhY2tldHMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgU2Fzc1NjcmlwdCA9IG9wZXJhdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2luZ2xlRXF1YWxzKFZhbHVlICRvdGhlcik6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHNwcmludGYoJyVzPSVzJywgJHRoaXMtPnRvQ3NzU3RyaW5nKCksICRvdGhlci0+dG9Dc3NTdHJpbmcoKSksIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBTYXNzU2NyaXB0IGA+YCBvcGVyYXRpb24uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBncmVhdGVyVGhhbihWYWx1ZSAkb3RoZXIpOiBTYXNzQm9vbGVhbgogICAgewogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJVbmRlZmluZWQgb3BlcmF0aW9uIFwiJHRoaXMgPiAkb3RoZXJcIi4iKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBTYXNzU2NyaXB0IGA+PWAgb3BlcmF0aW9uLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ3JlYXRlclRoYW5PckVxdWFscyhWYWx1ZSAkb3RoZXIpOiBTYXNzQm9vbGVhbgogICAgewogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJVbmRlZmluZWQgb3BlcmF0aW9uIFwiJHRoaXMgPj0gJG90aGVyXCIuIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgU2Fzc1NjcmlwdCBgPGAgb3BlcmF0aW9uLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGVzc1RoYW4oVmFsdWUgJG90aGVyKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVW5kZWZpbmVkIG9wZXJhdGlvbiBcIiR0aGlzIDwgJG90aGVyXCIuIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgU2Fzc1NjcmlwdCBgPD1gIG9wZXJhdGlvbi4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxlc3NUaGFuT3JFcXVhbHMoVmFsdWUgJG90aGVyKTogU2Fzc0Jvb2xlYW4KICAgIHsKICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVW5kZWZpbmVkIG9wZXJhdGlvbiBcIiR0aGlzIDw9ICRvdGhlclwiLiIpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIFNhc3NTY3JpcHQgYCpgIG9wZXJhdGlvbi4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRpbWVzKFZhbHVlICRvdGhlcik6IFZhbHVlCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlVuZGVmaW5lZCBvcGVyYXRpb24gXCIkdGhpcyAqICRvdGhlclwiLiIpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIFNhc3NTY3JpcHQgYCVgIG9wZXJhdGlvbi4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZHVsbyhWYWx1ZSAkb3RoZXIpOiBWYWx1ZQogICAgewogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCJVbmRlZmluZWQgb3BlcmF0aW9uIFwiJHRoaXMgJSAkb3RoZXJcIi4iKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBTYXNzU2NyaXB0IGArYCBvcGVyYXRpb24uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwbHVzKFZhbHVlICRvdGhlcik6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NTdHJpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKCR0aGlzLT50b0Nzc1N0cmluZygpIC4gJG90aGVyLT5nZXRUZXh0KCksICRvdGhlci0+aGFzUXVvdGVzKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIFNhc3NDYWxjdWxhdGlvbikgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiVW5kZWZpbmVkIG9wZXJhdGlvbiBcIiR0aGlzICsgJG90aGVyXCIuIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoJHRoaXMtPnRvQ3NzU3RyaW5nKCkgLiAkb3RoZXItPnRvQ3NzU3RyaW5nKCksIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBTYXNzU2NyaXB0IGAtYCBvcGVyYXRpb24uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtaW51cyhWYWx1ZSAkb3RoZXIpOiBWYWx1ZQogICAgewogICAgICAgIGlmICgkb3RoZXIgaW5zdGFuY2VvZiBTYXNzQ2FsY3VsYXRpb24pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oIlVuZGVmaW5lZCBvcGVyYXRpb24gXCIkdGhpcyAtICRvdGhlclwiLiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHNwcmludGYoJyVzLSVzJywgJHRoaXMtPnRvQ3NzU3RyaW5nKCksICRvdGhlci0+dG9Dc3NTdHJpbmcoKSksIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBTYXNzU2NyaXB0IGAvYCBvcGVyYXRpb24uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZpZGVkQnkoVmFsdWUgJG90aGVyKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoc3ByaW50ZignJXMvJXMnLCAkdGhpcy0+dG9Dc3NTdHJpbmcoKSwgJG90aGVyLT50b0Nzc1N0cmluZygpKSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIFNhc3NTY3JpcHQgdW5hcnkgYCtgIG9wZXJhdGlvbi4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuYXJ5UGx1cygpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiBuZXcgU2Fzc1N0cmluZyhzcHJpbnRmKCcrJXMnLCAkdGhpcy0+dG9Dc3NTdHJpbmcoKSksIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBTYXNzU2NyaXB0IHVuYXJ5IGAtYCBvcGVyYXRpb24uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bmFyeU1pbnVzKCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHNwcmludGYoJy0lcycsICR0aGlzLT50b0Nzc1N0cmluZygpKSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIFNhc3NTY3JpcHQgdW5hcnkgYC9gIG9wZXJhdGlvbi4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuYXJ5RGl2aWRlKCk6IFZhbHVlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKHNwcmludGYoJy8lcycsICR0aGlzLT50b0Nzc1N0cmluZygpKSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIFNhc3NTY3JpcHQgdW5hcnkgYG5vdGAgb3BlcmF0aW9uLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5hcnlOb3QoKTogVmFsdWUKICAgIHsKICAgICAgICByZXR1cm4gU2Fzc0Jvb2xlYW46OmNyZWF0ZShmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgY29weSBvZiAkdGhpcyB3aXRob3V0IHtAc2VlIFNhc3NOdW1iZXI6OiRhc1NsYXNofSBzZXQuCiAgICAgKgogICAgICogSWYgdGhpcyBpc24ndCBhIFNhc3NOdW1iZXIsIHJldHVybiBpdCBhcy1pcy4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRTbGFzaCgpOiBWYWx1ZQogICAgewogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSB2YWxpZCBDU1MgcmVwcmVzZW50YXRpb24gb2YgJHRoaXMuCiAgICAgKgogICAgICogVXNlIHtAc2VlIHRvU3RyaW5nfSBpbnN0ZWFkIHRvIGdldCBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBldmVuIGlmIHRoaXMKICAgICAqIGlzbid0IHZhbGlkIENTUy4KICAgICAqCiAgICAgKiBJbnRlcm5hbC1vbmx5OiBJZiAkcXVvdGUgaXMgYGZhbHNlYCwgcXVvdGVkIHN0cmluZ3MgYXJlIGVtaXR0ZWQgd2l0aG91dAogICAgICogcXVvdGVzLgogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbiBpZiAkdGhpcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gcGxhaW4gQ1NTLgogICAgICovCiAgICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gdG9Dc3NTdHJpbmcoYm9vbCAkcXVvdGUgPSB0cnVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZXI6OnNlcmlhbGl6ZVZhbHVlKCR0aGlzLCBmYWxzZSwgJHF1b3RlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBTYXNzIHJlcHJlc2VudGF0aW9uIG9mICR0aGlzLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBgaW5zcGVjdCgpYCBvbiB0aGUgdmFsdWUsIGFuZCB0aHVzCiAgICAgKiB3b24ndCByZWZsZWN0IHRoZSB1c2VyJ3Mgb3V0cHV0IHNldHRpbmdzLiB7QHNlZSB0b0Nzc1N0cmluZ30gc2hvdWxkIGJlIHVzZWQKICAgICAqIGluc3RlYWQgdG8gY29udmVydCAkdGhpcyB0byBDU1MuCiAgICAgKi8KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBTZXJpYWxpemVyOjpzZXJpYWxpemVWYWx1ZSgkdGhpcywgdHJ1ZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/ValueConverter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb2xsZWN0aW9uXE1hcDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcUXVpZXRMb2dnZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcTm9kZVxOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcTGlzdFNlcGFyYXRvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQm9vbGVhbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTGlzdDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzTWFwOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdWxsOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxWYWx1ZTsKCmZpbmFsIGNsYXNzIFZhbHVlQ29udmVydGVyCnsKICAgIC8vIFByZXZlbnQgaW5zdGFudGlhdGluZyBpdAogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgYSB2YWx1ZSBmcm9tIGEgU2NzcyBzb3VyY2Ugc3RyaW5nLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBndWFyYW50ZWVkIHRvIGJlIHN1cHBvcnRlZCBieSB0aGUKICAgICAqIENvbXBpbGVyIG1ldGhvZHMgZm9yIHJlZ2lzdGVyaW5nIGN1c3RvbSB2YXJpYWJsZXMuIE5vIG90aGVyCiAgICAgKiBndWFyYW50ZWUgYWJvdXQgaXQgaXMgcHJvdmlkZWQuIEl0IHNob3VsZCBiZSBjb25zaWRlcmVkCiAgICAgKiBvcGFxdWUgdmFsdWVzIGJ5IHRoZSBjYWxsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VWYWx1ZShzdHJpbmcgJHNvdXJjZSk6IFZhbHVlCiAgICB7CiAgICAgICAgJHZhbHVlID0gbnVsbDsKCiAgICAgICAgJGNvbXBpbGVyID0gbmV3IENvbXBpbGVyKCk7CiAgICAgICAgJGNvbXBpbGVyLT5zZXRMb2dnZXIobmV3IFF1aWV0TG9nZ2VyKCkpOwogICAgICAgICRjb21waWxlci0+cmVnaXN0ZXJGdW5jdGlvbignc2Nzc3BocC1wYXJzZS12YWx1ZScsIGZ1bmN0aW9uIChhcnJheSAkYXJndW1lbnRzKSB1c2UgKCYkdmFsdWUpOiBWYWx1ZSB7CiAgICAgICAgICAgIFxhc3NlcnQoXGNvdW50KCRhcmd1bWVudHMpID09PSAxKTsKICAgICAgICAgICAgXGFzc2VydCgkYXJndW1lbnRzWzBdIGluc3RhbmNlb2YgVmFsdWUpOwogICAgICAgICAgICAkdmFsdWUgPSAkYXJndW1lbnRzWzBdOwoKICAgICAgICAgICAgcmV0dXJuIFNhc3NOdWxsOjpjcmVhdGUoKTsKICAgICAgICB9LCBbJ2FyZyddKTsKICAgICAgICAkc2NzcyA9IDw8PFNDU1MKICAgICAgICBhIHtiOiBzY3NzcGhwLXBhcnNlLXZhbHVlKCgkc291cmNlKSl9CiAgICAgICAgU0NTUzsKCiAgICAgICAgJGNvbXBpbGVyLT5jb21waWxlU3RyaW5nKCRzY3NzKTsKCiAgICAgICAgXGFzc2VydCgkdmFsdWUgIT09IG51bGwpOwoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYSBQSFAgdmFsdWUgdG8gYSBTYXNzIHZhbHVlCiAgICAgKgogICAgICogVGhlIHJldHVybmVkIHZhbHVlIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3VwcG9ydGVkIGJ5IHRoZQogICAgICogQ29tcGlsZXIgbWV0aG9kcyBmb3IgcmVnaXN0ZXJpbmcgY3VzdG9tIHZhcmlhYmxlcy4gTm8gb3RoZXIKICAgICAqIGd1YXJhbnRlZSBhYm91dCBpdCBpcyBwcm92aWRlZC4gSXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQKICAgICAqIG9wYXF1ZSB2YWx1ZXMgYnkgdGhlIGNhbGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tUGhwKG1peGVkICR2YWx1ZSk6IFZhbHVlCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIFZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBTYXNzTnVtYmVyOjp3aXRoVW5pdHMoJHZhbHVlLT5nZXREaW1lbnNpb24oKSwgJHZhbHVlLT5nZXROdW1lcmF0b3JVbml0cygpLCAkdmFsdWUtPmdldERlbm9taW5hdG9yVW5pdHMoKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBTYXNzTnVsbDo6Y3JlYXRlKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlID09PSB0cnVlKSB7CiAgICAgICAgICAgIHJldHVybiBTYXNzQm9vbGVhbjo6Y3JlYXRlKHRydWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIFNhc3NCb29sZWFuOjpjcmVhdGUoZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzU3RyaW5nKCcnKTsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfaW50KCR2YWx1ZSkgfHwgXGlzX2Zsb2F0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuIFNhc3NOdW1iZXI6OmNyZWF0ZSgkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19zdHJpbmcoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFNhc3NTdHJpbmcoJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICBpZiAoYXJyYXlfaXNfbGlzdCgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJHZhbCkgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9IHNlbGY6OmZyb21QaHAoJHZhbCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXNzTGlzdCgkcmVzdWx0LCBcY291bnQoJHJlc3VsdCkgPiAwID8gTGlzdFNlcGFyYXRvcjo6Q09NTUEgOiBMaXN0U2VwYXJhdG9yOjpVTkRFQ0lERUQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiogQHZhciBNYXA8VmFsdWU+ICRtYXAgKi8KICAgICAgICAgICAgJG1hcCA9IG5ldyBNYXAoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlIGFzICRrZXkgPT4gJHZhbCkgewogICAgICAgICAgICAgICAgJG1hcC0+cHV0KG5ldyBTYXNzU3RyaW5nKCRrZXkpLCBzZWxmOjpmcm9tUGhwKCR2YWwpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFNhc3NNYXA6OmNyZWF0ZSgkbWFwKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ0Nhbm5vdCBjb252ZXJ0IHRoZSB2YWx1ZSBvZiB0eXBlICIlcyIgdG8gYSBTYXNzIHZhbHVlLicsIGdldF9kZWJ1Z190eXBlKCR2YWx1ZSkpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Version.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIFNDU1NQSFAgdmVyc2lvbgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqLwpmaW5hbCBjbGFzcyBWZXJzaW9uCnsKICAgIGNvbnN0IFZFUlNJT04gPSAnMi4xLjAnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/AnySelectorVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxBdHRyaWJ1dGVTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ2xhc3NTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tcGxleFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3JDb21wb25lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXENvbXBvdW5kU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXElEU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBhcmVudFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxQbGFjZWhvbGRlclNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxQc2V1ZG9TZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcU2VsZWN0b3JMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTaW1wbGVTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcVHlwZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxVbml2ZXJzYWxTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsXEl0ZXJhYmxlVXRpbDsKCi8qKgogKiBBIHZpc2l0b3IgdGhhdCB2aXNpdHMgZWFjaCBzZWxlY3RvciBpbiBhIFNhc3Mgc2VsZWN0b3IgQVNUIGFuZCByZXR1cm5zCiAqIGB0cnVlYCBpZiBhbnkgb2YgdGhlIGluZGl2aWR1YWwgbWV0aG9kcyByZXR1cm4gYHRydWVgLgogKgogKiBFYWNoIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAgYnkgZGVmYXVsdC4KICoKICogQHRlbXBsYXRlLWltcGxlbWVudHMgU2VsZWN0b3JWaXNpdG9yPGJvb2w+CiAqIEBpbnRlcm5hbAogKi8KYWJzdHJhY3QgY2xhc3MgQW55U2VsZWN0b3JWaXNpdG9yIGltcGxlbWVudHMgU2VsZWN0b3JWaXNpdG9yCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENvbXBsZXhTZWxlY3RvcihDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEl0ZXJhYmxlVXRpbDo6YW55KCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCksIGZuIChDb21wbGV4U2VsZWN0b3JDb21wb25lbnQgJGNvbXBvbmVudCkgPT4gJHRoaXMtPnZpc2l0Q29tcG91bmRTZWxlY3RvcigkY29tcG9uZW50LT5nZXRTZWxlY3RvcigpKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29tcG91bmRTZWxlY3RvcihDb21wb3VuZFNlbGVjdG9yICRjb21wb3VuZCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gSXRlcmFibGVVdGlsOjphbnkoJGNvbXBvdW5kLT5nZXRDb21wb25lbnRzKCksIGZuIChTaW1wbGVTZWxlY3RvciAkc2ltcGxlKSA9PiAkc2ltcGxlLT5hY2NlcHQoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRQc2V1ZG9TZWxlY3RvcihQc2V1ZG9TZWxlY3RvciAkcHNldWRvKTogYm9vbAogICAgewogICAgICAgICRzZWxlY3RvciA9ICRwc2V1ZG8tPmdldFNlbGVjdG9yKCk7CgogICAgICAgIHJldHVybiAkc2VsZWN0b3IgPT09IG51bGwgPyBmYWxzZSA6ICRzZWxlY3Rvci0+YWNjZXB0KCR0aGlzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTZWxlY3Rvckxpc3QoU2VsZWN0b3JMaXN0ICRsaXN0KTogYm9vbAogICAgewogICAgICAgIHJldHVybiBJdGVyYWJsZVV0aWw6OmFueSgkbGlzdC0+Z2V0Q29tcG9uZW50cygpLCAkdGhpcy0+dmlzaXRDb21wbGV4U2VsZWN0b3IoLi4uKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0QXR0cmlidXRlU2VsZWN0b3IoQXR0cmlidXRlU2VsZWN0b3IgJGF0dHJpYnV0ZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q2xhc3NTZWxlY3RvcihDbGFzc1NlbGVjdG9yICRrbGFzcyk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SURTZWxlY3RvcihJRFNlbGVjdG9yICRpZCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UGFyZW50U2VsZWN0b3IoUGFyZW50U2VsZWN0b3IgJHBhcmVudCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UGxhY2Vob2xkZXJTZWxlY3RvcihQbGFjZWhvbGRlclNlbGVjdG9yICRwbGFjZWhvbGRlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VHlwZVNlbGVjdG9yKFR5cGVTZWxlY3RvciAkdHlwZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VW5pdmVyc2FsU2VsZWN0b3IoVW5pdmVyc2FsU2VsZWN0b3IgJHVuaXZlcnNhbCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/CssVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzQXRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzQ29tbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc0RlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzSW1wb3J0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzS2V5ZnJhbWVCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc01lZGlhUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc1N0eWxlUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc1N0eWxlc2hlZXQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NTdXBwb3J0c1J1bGU7CgovKioKICogQW4gaW50ZXJmYWNlIGZvciB2aXNpdG9ycyB0aGF0IHRyYXZlcnNlIENTUyBzdGF0ZW1lbnRzLgogKgogKiBAaW50ZXJuYWwKICoKICogQHRlbXBsYXRlIFQKICogQHRlbXBsYXRlLWV4dGVuZHMgTW9kaWZpYWJsZUNzc1Zpc2l0b3I8VD4KICovCmludGVyZmFjZSBDc3NWaXNpdG9yIGV4dGVuZHMgTW9kaWZpYWJsZUNzc1Zpc2l0b3IKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzQXRSdWxlKENzc0F0UnVsZSAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzQ29tbWVudChDc3NDb21tZW50ICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NEZWNsYXJhdGlvbihDc3NEZWNsYXJhdGlvbiAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzSW1wb3J0KENzc0ltcG9ydCAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzS2V5ZnJhbWVCbG9jayhDc3NLZXlmcmFtZUJsb2NrICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NNZWRpYVJ1bGUoQ3NzTWVkaWFSdWxlICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdHlsZVJ1bGUoQ3NzU3R5bGVSdWxlICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdHlsZXNoZWV0KENzc1N0eWxlc2hlZXQgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENzc1N1cHBvcnRzUnVsZShDc3NTdXBwb3J0c1J1bGUgJG5vZGUpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/EveryCssVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzQXRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzQ29tbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc0RlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzSW1wb3J0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzS2V5ZnJhbWVCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc01lZGlhUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXENzc05vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NTdHlsZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xDc3NTdHlsZXNoZWV0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcQ3NzU3VwcG9ydHNSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcSXRlcmFibGVVdGlsOwoKLyoqCiAqIEEgdmlzaXRvciB0aGF0IHZpc2l0cyBlYWNoIHN0YXRlbWVudCBpbiBhIENTUyBBU1QgYW5kIHJldHVybnMgYHRydWVgIGlmIGFsbAogKiBvZiB0aGUgaW5kaXZpZHVhbCBtZXRob2RzIHJldHVybiBgdHJ1ZWAuCiAqCiAqIEVhY2ggbWV0aG9kIHJldHVybnMgYGZhbHNlYCBieSBkZWZhdWx0LgogKgogKiBAdGVtcGxhdGUtaW1wbGVtZW50cyBDc3NWaXNpdG9yPGJvb2w+CiAqIEBpbnRlcm5hbAogKi8KYWJzdHJhY3QgY2xhc3MgRXZlcnlDc3NWaXNpdG9yIGltcGxlbWVudHMgQ3NzVmlzaXRvcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NBdFJ1bGUoQ3NzQXRSdWxlICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBJdGVyYWJsZVV0aWw6OmV2ZXJ5KCRub2RlLT5nZXRDaGlsZHJlbigpLCBmbiAoQ3NzTm9kZSAkY2hpbGQpID0+ICRjaGlsZC0+YWNjZXB0KCR0aGlzKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzQ29tbWVudChDc3NDb21tZW50ICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NEZWNsYXJhdGlvbihDc3NEZWNsYXJhdGlvbiAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzSW1wb3J0KENzc0ltcG9ydCAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzS2V5ZnJhbWVCbG9jayhDc3NLZXlmcmFtZUJsb2NrICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBJdGVyYWJsZVV0aWw6OmV2ZXJ5KCRub2RlLT5nZXRDaGlsZHJlbigpLCBmbiAoQ3NzTm9kZSAkY2hpbGQpID0+ICRjaGlsZC0+YWNjZXB0KCR0aGlzKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzTWVkaWFSdWxlKENzc01lZGlhUnVsZSAkbm9kZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gSXRlcmFibGVVdGlsOjpldmVyeSgkbm9kZS0+Z2V0Q2hpbGRyZW4oKSwgZm4gKENzc05vZGUgJGNoaWxkKSA9PiAkY2hpbGQtPmFjY2VwdCgkdGhpcykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENzc1N0eWxlUnVsZShDc3NTdHlsZVJ1bGUgJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEl0ZXJhYmxlVXRpbDo6ZXZlcnkoJG5vZGUtPmdldENoaWxkcmVuKCksIGZuIChDc3NOb2RlICRjaGlsZCkgPT4gJGNoaWxkLT5hY2NlcHQoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdHlsZXNoZWV0KENzc1N0eWxlc2hlZXQgJG5vZGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIEl0ZXJhYmxlVXRpbDo6ZXZlcnkoJG5vZGUtPmdldENoaWxkcmVuKCksIGZuIChDc3NOb2RlICRjaGlsZCkgPT4gJGNoaWxkLT5hY2NlcHQoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdXBwb3J0c1J1bGUoQ3NzU3VwcG9ydHNSdWxlICRub2RlKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBJdGVyYWJsZVV0aWw6OmV2ZXJ5KCRub2RlLT5nZXRDaGlsZHJlbigpLCBmbiAoQ3NzTm9kZSAkY2hpbGQpID0+ICRjaGlsZC0+YWNjZXB0KCR0aGlzKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/ExpressionVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXEJvb2xlYW5FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cQ29sb3JFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cRnVuY3Rpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cSWZFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cSW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cTGlzdEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxNYXBFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cTnVsbEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxOdW1iZXJFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cUGFyZW50aGVzaXplZEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxTZWxlY3RvckV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxTdHJpbmdFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cU3VwcG9ydHNFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVmFsdWVFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVmFyaWFibGVFeHByZXNzaW9uOwoKLyoqCiAqIEFuIGludGVyZmFjZSBmb3IgdmlzaXRvcnMgdGhhdCB0cmF2ZXJzZSBTYXNzU2NyaXB0IGV4cHJlc3Npb25zLgogKgogKiBAaW50ZXJuYWwKICoKICogQHRlbXBsYXRlIFQKICovCmludGVyZmFjZSBFeHByZXNzaW9uVmlzaXRvcgp7CiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRCaW5hcnlPcGVyYXRpb25FeHByZXNzaW9uKEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24gJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEJvb2xlYW5FeHByZXNzaW9uKEJvb2xlYW5FeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb2xvckV4cHJlc3Npb24oQ29sb3JFeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRJbnRlcnBvbGF0ZWRGdW5jdGlvbkV4cHJlc3Npb24oSW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRGdW5jdGlvbkV4cHJlc3Npb24oRnVuY3Rpb25FeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRJZkV4cHJlc3Npb24oSWZFeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRMaXN0RXhwcmVzc2lvbihMaXN0RXhwcmVzc2lvbiAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TWFwRXhwcmVzc2lvbihNYXBFeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXROdWxsRXhwcmVzc2lvbihOdWxsRXhwcmVzc2lvbiAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TnVtYmVyRXhwcmVzc2lvbihOdW1iZXJFeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihQYXJlbnRoZXNpemVkRXhwcmVzc2lvbiAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U2VsZWN0b3JFeHByZXNzaW9uKFNlbGVjdG9yRXhwcmVzc2lvbiAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U3RyaW5nRXhwcmVzc2lvbihTdHJpbmdFeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTdXBwb3J0c0V4cHJlc3Npb24oU3VwcG9ydHNFeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRVbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRWYWx1ZUV4cHJlc3Npb24oVmFsdWVFeHByZXNzaW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRWYXJpYWJsZUV4cHJlc3Npb24oVmFyaWFibGVFeHByZXNzaW9uICRub2RlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/ModifiableCssVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc0F0UnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXE1vZGlmaWFibGVDc3NDb21tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc0RlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc0ltcG9ydDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXE1vZGlmaWFibGVDc3NLZXlmcmFtZUJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxDc3NcTW9kaWZpYWJsZUNzc01lZGlhUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXE1vZGlmaWFibGVDc3NTdHlsZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XENzc1xNb2RpZmlhYmxlQ3NzU3R5bGVzaGVldDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcQ3NzXE1vZGlmaWFibGVDc3NTdXBwb3J0c1J1bGU7CgovKioKICogQW4gaW50ZXJmYWNlIGZvciB2aXNpdG9ycyB0aGF0IHRyYXZlcnNlIENTUyBzdGF0ZW1lbnRzLgogKgogKiBAaW50ZXJuYWwKICoKICogQHRlbXBsYXRlIFQKICovCmludGVyZmFjZSBNb2RpZmlhYmxlQ3NzVmlzaXRvcgp7CiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NBdFJ1bGUoTW9kaWZpYWJsZUNzc0F0UnVsZSAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzQ29tbWVudChNb2RpZmlhYmxlQ3NzQ29tbWVudCAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzRGVjbGFyYXRpb24oTW9kaWZpYWJsZUNzc0RlY2xhcmF0aW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NJbXBvcnQoTW9kaWZpYWJsZUNzc0ltcG9ydCAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzS2V5ZnJhbWVCbG9jayhNb2RpZmlhYmxlQ3NzS2V5ZnJhbWVCbG9jayAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q3NzTWVkaWFSdWxlKE1vZGlmaWFibGVDc3NNZWRpYVJ1bGUgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENzc1N0eWxlUnVsZShNb2RpZmlhYmxlQ3NzU3R5bGVSdWxlICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdHlsZXNoZWV0KE1vZGlmaWFibGVDc3NTdHlsZXNoZWV0ICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDc3NTdXBwb3J0c1J1bGUoTW9kaWZpYWJsZUNzc1N1cHBvcnRzUnVsZSAkbm9kZSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/ReplaceExpressionVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEFyZ3VtZW50SW52b2NhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xFeHByZXNzaW9uXEJvb2xlYW5FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cQ29sb3JFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cRnVuY3Rpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cSWZFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cSW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cTGlzdEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxNYXBFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cTnVsbEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxOdW1iZXJFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cUGFyZW50aGVzaXplZEV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxTZWxlY3RvckV4cHJlc3Npb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcRXhwcmVzc2lvblxTdHJpbmdFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cU3VwcG9ydHNFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVmFsdWVFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEV4cHJlc3Npb25cVmFyaWFibGVFeHByZXNzaW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXEludGVycG9sYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3VwcG9ydHNDb25kaXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3VwcG9ydHNDb25kaXRpb25cU3VwcG9ydHNEZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvblxTdXBwb3J0c0ludGVycG9sYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3VwcG9ydHNDb25kaXRpb25cU3VwcG9ydHNOZWdhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdXBwb3J0c0NvbmRpdGlvblxTdXBwb3J0c09wZXJhdGlvbjsKCi8qKgogKiBBIHZpc2l0b3IgdGhhdCByZWN1cnNpdmVseSB0cmF2ZXJzZXMgZWFjaCBleHByZXNzaW9uIGluIGEgU2Fzc1NjcmlwdCBBU1QgYW5kCiAqIHJlcGxhY2VzIGl0cyBjb250ZW50cyB3aXRoIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgbmVzdGVkIHJlY3Vyc2lvbi4KICoKICogSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgZnJvbSB7QHNlZSBFeHByZXNzaW9uVmlzaXRvcn0sIHRoaXMgaGFzIG1vcmUgZ2VuZXJhbAogKiBwcm90ZWN0ZWQgbWV0aG9kcyB0aGF0IGNhbiBiZSBvdmVycmlkZGVuIHRvIGFkZCBiZWhhdmlvciBmb3IgYSB3aWRlIHZhcmlldHkKICogb2YgQVNUIG5vZGVzOgogKgogKiAqIHtAc2VlIHZpc2l0QXJndW1lbnRJbnZvY2F0aW9ufQogKiAqIHtAc2VlIHZpc2l0U3VwcG9ydHNDb25kaXRpb259CiAqICoge0BzZWUgdmlzaXRJbnRlcnBvbGF0aW9ufQogKgogKiBAdGVtcGxhdGUtaW1wbGVtZW50cyBFeHByZXNzaW9uVmlzaXRvcjxFeHByZXNzaW9uPgogKgogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIFJlcGxhY2VFeHByZXNzaW9uVmlzaXRvciBpbXBsZW1lbnRzIEV4cHJlc3Npb25WaXNpdG9yCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oQmluYXJ5T3BlcmF0aW9uRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IEJpbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oJG5vZGUtPmdldE9wZXJhdG9yKCksICRub2RlLT5nZXRMZWZ0KCktPmFjY2VwdCgkdGhpcyksICRub2RlLT5nZXRSaWdodCgpLT5hY2NlcHQoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRCb29sZWFuRXhwcmVzc2lvbihCb29sZWFuRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJG5vZGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29sb3JFeHByZXNzaW9uKENvbG9yRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJG5vZGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0RnVuY3Rpb25FeHByZXNzaW9uKEZ1bmN0aW9uRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uRXhwcmVzc2lvbigKICAgICAgICAgICAgJG5vZGUtPmdldE9yaWdpbmFsTmFtZSgpLAogICAgICAgICAgICAkdGhpcy0+dmlzaXRBcmd1bWVudEludm9jYXRpb24oJG5vZGUtPmdldEFyZ3VtZW50cygpKSwKICAgICAgICAgICAgJG5vZGUtPmdldFNwYW4oKSwKICAgICAgICAgICAgJG5vZGUtPmdldE5hbWVzcGFjZSgpCiAgICAgICAgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRJbnRlcnBvbGF0ZWRGdW5jdGlvbkV4cHJlc3Npb24oSW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uICRub2RlKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiBuZXcgSW50ZXJwb2xhdGVkRnVuY3Rpb25FeHByZXNzaW9uKAogICAgICAgICAgICAkdGhpcy0+dmlzaXRJbnRlcnBvbGF0aW9uKCRub2RlLT5nZXROYW1lKCkpLAogICAgICAgICAgICAkdGhpcy0+dmlzaXRBcmd1bWVudEludm9jYXRpb24oJG5vZGUtPmdldEFyZ3VtZW50cygpKSwKICAgICAgICAgICAgJG5vZGUtPmdldFNwYW4oKQogICAgICAgICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SWZFeHByZXNzaW9uKElmRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IElmRXhwcmVzc2lvbigkdGhpcy0+dmlzaXRBcmd1bWVudEludm9jYXRpb24oJG5vZGUtPmdldEFyZ3VtZW50cygpKSwgJG5vZGUtPmdldFNwYW4oKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TGlzdEV4cHJlc3Npb24oTGlzdEV4cHJlc3Npb24gJG5vZGUpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBMaXN0RXhwcmVzc2lvbigKICAgICAgICAgICAgYXJyYXlfbWFwKGZuKEV4cHJlc3Npb24gJGl0ZW0pID0+ICRpdGVtLT5hY2NlcHQoJHRoaXMpLCAkbm9kZS0+Z2V0Q29udGVudHMoKSksCiAgICAgICAgICAgICRub2RlLT5nZXRTZXBhcmF0b3IoKSwKICAgICAgICAgICAgJG5vZGUtPmdldFNwYW4oKSwKICAgICAgICAgICAgJG5vZGUtPmhhc0JyYWNrZXRzKCkKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1hcEV4cHJlc3Npb24oTWFwRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IE1hcEV4cHJlc3Npb24oCiAgICAgICAgICAgIGFycmF5X21hcChmbihhcnJheSAkcGFpcikgPT4gWyRwYWlyWzBdLT5hY2NlcHQoJHRoaXMpLCAkcGFpclsxXS0+YWNjZXB0KCR0aGlzKV0sICRub2RlLT5nZXRQYWlycygpKSwKICAgICAgICAgICAgJG5vZGUtPmdldFNwYW4oKQogICAgICAgICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TnVsbEV4cHJlc3Npb24oTnVsbEV4cHJlc3Npb24gJG5vZGUpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuICRub2RlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE51bWJlckV4cHJlc3Npb24oTnVtYmVyRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gJG5vZGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oUGFyZW50aGVzaXplZEV4cHJlc3Npb24gJG5vZGUpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbigkbm9kZS0+Z2V0RXhwcmVzc2lvbigpLT5hY2NlcHQoJHRoaXMpLCAkbm9kZS0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTZWxlY3RvckV4cHJlc3Npb24oU2VsZWN0b3JFeHByZXNzaW9uICRub2RlKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkbm9kZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTdHJpbmdFeHByZXNzaW9uKFN0cmluZ0V4cHJlc3Npb24gJG5vZGUpOiBFeHByZXNzaW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdFeHByZXNzaW9uKCR0aGlzLT52aXNpdEludGVycG9sYXRpb24oJG5vZGUtPmdldFRleHQoKSksICRub2RlLT5oYXNRdW90ZXMoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U3VwcG9ydHNFeHByZXNzaW9uKFN1cHBvcnRzRXhwcmVzc2lvbiAkbm9kZSk6IEV4cHJlc3Npb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IFN1cHBvcnRzRXhwcmVzc2lvbigkdGhpcy0+dmlzaXRTdXBwb3J0c0NvbmRpdGlvbigkbm9kZS0+Z2V0Q29uZGl0aW9uKCkpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRVbmFyeU9wZXJhdGlvbkV4cHJlc3Npb24oVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uICRub2RlKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiBuZXcgVW5hcnlPcGVyYXRpb25FeHByZXNzaW9uKCRub2RlLT5nZXRPcGVyYXRvcigpLCAkbm9kZS0+Z2V0T3BlcmFuZCgpLT5hY2NlcHQoJHRoaXMpLCAkbm9kZS0+Z2V0U3BhbigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRWYWx1ZUV4cHJlc3Npb24oVmFsdWVFeHByZXNzaW9uICRub2RlKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkbm9kZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRWYXJpYWJsZUV4cHJlc3Npb24oVmFyaWFibGVFeHByZXNzaW9uICRub2RlKTogRXhwcmVzc2lvbgogICAgewogICAgICAgIHJldHVybiAkbm9kZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlcGxhY2VzIGVhY2ggZXhwcmVzc2lvbiBpbiBhbiBpbnZvY2F0aW9uLgogICAgICoKICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSB2aXNpdCBtZXRob2RzIGNhbGxzIHRoaXMgdG8gcmVwbGFjZSBhbnkKICAgICAqIGFyZ3VtZW50IGludm9jYXRpb24gaW4gYW4gZXhwcmVzc2lvbi4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0QXJndW1lbnRJbnZvY2F0aW9uKEFyZ3VtZW50SW52b2NhdGlvbiAkaW52b2NhdGlvbik6IEFyZ3VtZW50SW52b2NhdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgQXJndW1lbnRJbnZvY2F0aW9uKAogICAgICAgICAgICBhcnJheV9tYXAoZm4oRXhwcmVzc2lvbiAkZXhwcmVzc2lvbikgPT4gJGV4cHJlc3Npb24tPmFjY2VwdCgkdGhpcyksICRpbnZvY2F0aW9uLT5nZXRQb3NpdGlvbmFsKCkpLAogICAgICAgICAgICBhcnJheV9tYXAoZm4oRXhwcmVzc2lvbiAkZXhwcmVzc2lvbikgPT4gJGV4cHJlc3Npb24tPmFjY2VwdCgkdGhpcyksICRpbnZvY2F0aW9uLT5nZXROYW1lZCgpKSwKICAgICAgICAgICAgJGludm9jYXRpb24tPmdldFNwYW4oKSwKICAgICAgICAgICAgJGludm9jYXRpb24tPmdldFJlc3QoKT8tPmFjY2VwdCgkdGhpcyksCiAgICAgICAgICAgICRpbnZvY2F0aW9uLT5nZXRLZXl3b3JkUmVzdCgpPy0+YWNjZXB0KCR0aGlzKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXBsYWNlcyBlYWNoIGV4cHJlc3Npb24gaW4gJGNvbmRpdGlvbi4KICAgICAqCiAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdmlzaXQgbWV0aG9kcyBjYWxsIHRoaXMgdG8gdmlzaXQgYW55CiAgICAgKiB7QHNlZSBTdXBwb3J0c0NvbmRpdGlvbn0gdGhleSBlbmNvdW50ZXIuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdFN1cHBvcnRzQ29uZGl0aW9uKFN1cHBvcnRzQ29uZGl0aW9uICRjb25kaXRpb24pOiBTdXBwb3J0c0NvbmRpdGlvbgogICAgewogICAgICAgIGlmICgkY29uZGl0aW9uIGluc3RhbmNlb2YgU3VwcG9ydHNPcGVyYXRpb24pIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTdXBwb3J0c09wZXJhdGlvbigKICAgICAgICAgICAgICAgICR0aGlzLT52aXNpdFN1cHBvcnRzQ29uZGl0aW9uKCRjb25kaXRpb24tPmdldExlZnQoKSksCiAgICAgICAgICAgICAgICAkdGhpcy0+dmlzaXRTdXBwb3J0c0NvbmRpdGlvbigkY29uZGl0aW9uLT5nZXRSaWdodCgpKSwKICAgICAgICAgICAgICAgICRjb25kaXRpb24tPmdldE9wZXJhdG9yKCksCiAgICAgICAgICAgICAgICAkY29uZGl0aW9uLT5nZXRTcGFuKCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkY29uZGl0aW9uIGluc3RhbmNlb2YgU3VwcG9ydHNOZWdhdGlvbikgewogICAgICAgICAgICByZXR1cm4gbmV3IFN1cHBvcnRzTmVnYXRpb24oJHRoaXMtPnZpc2l0U3VwcG9ydHNDb25kaXRpb24oJGNvbmRpdGlvbi0+Z2V0Q29uZGl0aW9uKCkpLCAkY29uZGl0aW9uLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb25kaXRpb24gaW5zdGFuY2VvZiBTdXBwb3J0c0ludGVycG9sYXRpb24pIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTdXBwb3J0c0ludGVycG9sYXRpb24oJGNvbmRpdGlvbi0+Z2V0RXhwcmVzc2lvbigpLT5hY2NlcHQoJHRoaXMpLCAkY29uZGl0aW9uLT5nZXRTcGFuKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb25kaXRpb24gaW5zdGFuY2VvZiBTdXBwb3J0c0RlY2xhcmF0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgU3VwcG9ydHNEZWNsYXJhdGlvbigkY29uZGl0aW9uLT5nZXROYW1lKCktPmFjY2VwdCgkdGhpcyksICRjb25kaXRpb24tPmdldFZhbHVlKCktPmFjY2VwdCgkdGhpcyksICRjb25kaXRpb24tPmdldFNwYW4oKSk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXFVuZXhwZWN0ZWRWYWx1ZUV4Y2VwdGlvbignQlVHOiBVbmtub3duIFN1cHBvcnRzQ29uZGl0aW9uICcgLiBnZXRfY2xhc3MoJGNvbmRpdGlvbikpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdEludGVycG9sYXRpb24oSW50ZXJwb2xhdGlvbiAkaW50ZXJwb2xhdGlvbik6IEludGVycG9sYXRpb24KICAgIHsKICAgICAgICByZXR1cm4gbmV3IEludGVycG9sYXRpb24oYXJyYXlfbWFwKGZ1bmN0aW9uICgkbm9kZSkgewogICAgICAgICAgICByZXR1cm4gJG5vZGUgaW5zdGFuY2VvZiBFeHByZXNzaW9uID8gJG5vZGUtPmFjY2VwdCgkdGhpcykgOiAkbm9kZTsKICAgICAgICB9LCAkaW50ZXJwb2xhdGlvbi0+Z2V0Q29udGVudHMoKSksICRpbnRlcnBvbGF0aW9uLT5nZXRTcGFuKCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/SelectorSearchVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcVmlzaXRvcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXEF0dHJpYnV0ZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDbGFzc1NlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wbGV4U2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXENvbXBsZXhTZWxlY3RvckNvbXBvbmVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tcG91bmRTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcSURTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcUGFyZW50U2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBsYWNlaG9sZGVyU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFBzZXVkb1NlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxTZWxlY3Rvckxpc3Q7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNpbXBsZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxUeXBlU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFVuaXZlcnNhbFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcSXRlcmFibGVVdGlsOwoKLyoqCiAqIEEge0BzZWUgU2VsZWN0b3JWaXNpdG9yfSB3aG9zZSBgdmlzaXQqYCBtZXRob2RzIGRlZmF1bHQgdG8gcmV0dXJuaW5nIGBudWxsYCwgYnV0CiAqIHdoaWNoIHJldHVybnMgdGhlIGZpcnN0IG5vbi1gbnVsbGAgdmFsdWUgcmV0dXJuZWQgYnkgYW55IG1ldGhvZC4KICoKICogVGhpcyBjYW4gYmUgZXh0ZW5kZWQgdG8gZmluZCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgcGFydGljdWxhciBub2RlcyBpbiB0aGUKICogQVNULgogKgogKiBAdGVtcGxhdGUgVAogKiBAdGVtcGxhdGUtaW1wbGVtZW50cyBTZWxlY3RvclZpc2l0b3I8VHxudWxsPgogKgogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIFNlbGVjdG9yU2VhcmNoVmlzaXRvciBpbXBsZW1lbnRzIFNlbGVjdG9yVmlzaXRvcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRBdHRyaWJ1dGVTZWxlY3RvcihBdHRyaWJ1dGVTZWxlY3RvciAkYXR0cmlidXRlKQogICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENsYXNzU2VsZWN0b3IoQ2xhc3NTZWxlY3RvciAka2xhc3MpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SURTZWxlY3RvcihJRFNlbGVjdG9yICRpZCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRQYXJlbnRTZWxlY3RvcihQYXJlbnRTZWxlY3RvciAkcGFyZW50KQogICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFBsYWNlaG9sZGVyU2VsZWN0b3IoUGxhY2Vob2xkZXJTZWxlY3RvciAkcGxhY2Vob2xkZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VHlwZVNlbGVjdG9yKFR5cGVTZWxlY3RvciAkdHlwZSkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRVbml2ZXJzYWxTZWxlY3RvcihVbml2ZXJzYWxTZWxlY3RvciAkdW5pdmVyc2FsKQogICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENvbXBsZXhTZWxlY3RvcihDb21wbGV4U2VsZWN0b3IgJGNvbXBsZXgpCiAgICB7CiAgICAgICAgcmV0dXJuIEl0ZXJhYmxlVXRpbDo6c2VhcmNoKCRjb21wbGV4LT5nZXRDb21wb25lbnRzKCksIGZuKENvbXBsZXhTZWxlY3RvckNvbXBvbmVudCAkY29tcG9uZW50KSA9PiAkdGhpcy0+dmlzaXRDb21wb3VuZFNlbGVjdG9yKCRjb21wb25lbnQtPmdldFNlbGVjdG9yKCkpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb21wb3VuZFNlbGVjdG9yKENvbXBvdW5kU2VsZWN0b3IgJGNvbXBvdW5kKQogICAgewogICAgICAgIHJldHVybiBJdGVyYWJsZVV0aWw6OnNlYXJjaCgkY29tcG91bmQtPmdldENvbXBvbmVudHMoKSwgZm4oU2ltcGxlU2VsZWN0b3IgJHNpbXBsZSkgPT4gJHNpbXBsZS0+YWNjZXB0KCR0aGlzKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UHNldWRvU2VsZWN0b3IoUHNldWRvU2VsZWN0b3IgJHBzZXVkbykKICAgIHsKICAgICAgICBpZiAoJHBzZXVkby0+Z2V0U2VsZWN0b3IoKSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZpc2l0U2VsZWN0b3JMaXN0KCRwc2V1ZG8tPmdldFNlbGVjdG9yKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U2VsZWN0b3JMaXN0KFNlbGVjdG9yTGlzdCAkbGlzdCkKICAgIHsKICAgICAgICByZXR1cm4gSXRlcmFibGVVdGlsOjpzZWFyY2goJGxpc3QtPmdldENvbXBvbmVudHMoKSwgJHRoaXMtPnZpc2l0Q29tcGxleFNlbGVjdG9yKC4uLikpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/SelectorVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxBdHRyaWJ1dGVTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ2xhc3NTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcQ29tcGxleFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxDb21wb3VuZFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxJRFNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxQYXJlbnRTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcUGxhY2Vob2xkZXJTZWxlY3RvcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcUHNldWRvU2VsZWN0b3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNlbGVjdG9yXFNlbGVjdG9yTGlzdDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2VsZWN0b3JcVHlwZVNlbGVjdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTZWxlY3RvclxVbml2ZXJzYWxTZWxlY3RvcjsKCi8qKgogKiBBbiBpbnRlcmZhY2UgZm9yIHZpc2l0b3JzIHRoYXQgdHJhdmVyc2Ugc2VsZWN0b3JzLgogKgogKiBAaW50ZXJuYWwKICoKICogQHRlbXBsYXRlIFQKICovCmludGVyZmFjZSBTZWxlY3RvclZpc2l0b3IKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0QXR0cmlidXRlU2VsZWN0b3IoQXR0cmlidXRlU2VsZWN0b3IgJGF0dHJpYnV0ZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q2xhc3NTZWxlY3RvcihDbGFzc1NlbGVjdG9yICRrbGFzcyk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29tcGxleFNlbGVjdG9yKENvbXBsZXhTZWxlY3RvciAkY29tcGxleCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29tcG91bmRTZWxlY3RvcihDb21wb3VuZFNlbGVjdG9yICRjb21wb3VuZCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SURTZWxlY3RvcihJRFNlbGVjdG9yICRpZCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UGFyZW50U2VsZWN0b3IoUGFyZW50U2VsZWN0b3IgJHBhcmVudCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UGxhY2Vob2xkZXJTZWxlY3RvcihQbGFjZWhvbGRlclNlbGVjdG9yICRwbGFjZWhvbGRlcik7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UHNldWRvU2VsZWN0b3IoUHNldWRvU2VsZWN0b3IgJHBzZXVkbyk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U2VsZWN0b3JMaXN0KFNlbGVjdG9yTGlzdCAkbGlzdCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VHlwZVNlbGVjdG9yKFR5cGVTZWxlY3RvciAkdHlwZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0VW5pdmVyc2FsU2VsZWN0b3IoVW5pdmVyc2FsU2VsZWN0b3IgJHVuaXZlcnNhbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/StatementSearchVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcQXRSb290UnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcQXRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxDYWxsYWJsZURlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxDb250ZW50QmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XENvbnRlbnRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxEZWJ1Z1J1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XERlY2xhcmF0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxFYWNoUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcRXJyb3JSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxFeHRlbmRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxGb3JSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxGdW5jdGlvblJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XElmQ2xhdXNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxJZlJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEltcG9ydFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEluY2x1ZGVSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxMb3VkQ29tbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcTWVkaWFSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxNaXhpblJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFBhcmVudFN0YXRlbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcUmV0dXJuUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcU2lsZW50Q29tbWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcU3R5bGVSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTdHlsZXNoZWV0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTdXBwb3J0c1J1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFZhcmlhYmxlRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFdhcm5SdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxXaGlsZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVXRpbFxJdGVyYWJsZVV0aWw7CgovKioKICogQSBTdGF0ZW1lbnRWaXNpdG9yIHdob3NlIGB2aXNpdCpgIG1ldGhvZHMgZGVmYXVsdCB0byByZXR1cm5pbmcgYG51bGxgLCBidXQKICogd2hpY2ggcmV0dXJucyB0aGUgZmlyc3Qgbm9uLWBudWxsYCB2YWx1ZSByZXR1cm5lZCBieSBhbnkgbWV0aG9kLgogKgogKiBUaGlzIGNhbiBiZSBleHRlbmRlZCB0byBmaW5kIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBwYXJ0aWN1bGFyIG5vZGVzIGluIHRoZQogKiBBU1QuCiAqCiAqIEBpbnRlcm5hbAogKgogKiBAdGVtcGxhdGUgVAogKiBAdGVtcGxhdGUtaW1wbGVtZW50cyBTdGF0ZW1lbnRWaXNpdG9yPFR8bnVsbD4KICovCmFic3RyYWN0IGNsYXNzIFN0YXRlbWVudFNlYXJjaFZpc2l0b3IgaW1wbGVtZW50cyBTdGF0ZW1lbnRWaXNpdG9yCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEF0Um9vdFJ1bGUoQXRSb290UnVsZSAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUtPmdldENoaWxkcmVuKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEF0UnVsZShBdFJ1bGUgJG5vZGUpCiAgICB7CiAgICAgICAgaWYgKCRub2RlLT5nZXRDaGlsZHJlbigpICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmlzaXRDaGlsZHJlbigkbm9kZS0+Z2V0Q2hpbGRyZW4oKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb250ZW50QmxvY2soQ29udGVudEJsb2NrICRub2RlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmlzaXRDYWxsYWJsZURlY2xhcmF0aW9uKCRub2RlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRDb250ZW50UnVsZShDb250ZW50UnVsZSAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXREZWJ1Z1J1bGUoRGVidWdSdWxlICRub2RlKQogICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdERlY2xhcmF0aW9uKERlY2xhcmF0aW9uICRub2RlKQogICAgewogICAgICAgIGlmICgkbm9kZS0+Z2V0Q2hpbGRyZW4oKSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUtPmdldENoaWxkcmVuKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0RWFjaFJ1bGUoRWFjaFJ1bGUgJG5vZGUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52aXNpdENoaWxkcmVuKCRub2RlLT5nZXRDaGlsZHJlbigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRFcnJvclJ1bGUoRXJyb3JSdWxlICRub2RlKQogICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEV4dGVuZFJ1bGUoRXh0ZW5kUnVsZSAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRGb3JSdWxlKEZvclJ1bGUgJG5vZGUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52aXNpdENoaWxkcmVuKCRub2RlLT5nZXRDaGlsZHJlbigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRGdW5jdGlvblJ1bGUoRnVuY3Rpb25SdWxlICRub2RlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmlzaXRDYWxsYWJsZURlY2xhcmF0aW9uKCRub2RlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRJZlJ1bGUoSWZSdWxlICRub2RlKQogICAgewogICAgICAgICR2YWx1ZSA9IEl0ZXJhYmxlVXRpbDo6c2VhcmNoKCRub2RlLT5nZXRDbGF1c2VzKCksIGZuKElmQ2xhdXNlICRjbGF1c2UpID0+IEl0ZXJhYmxlVXRpbDo6c2VhcmNoKCRjbGF1c2UtPmdldENoaWxkcmVuKCksIGZuKFN0YXRlbWVudCAkY2hpbGQpID0+ICRjaGlsZC0+YWNjZXB0KCR0aGlzKSkpOwoKICAgICAgICBpZiAoJG5vZGUtPmdldExhc3RDbGF1c2UoKSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdmFsdWUgPz89IEl0ZXJhYmxlVXRpbDo6c2VhcmNoKCRub2RlLT5nZXRMYXN0Q2xhdXNlKCktPmdldENoaWxkcmVuKCksIGZuKFN0YXRlbWVudCAkY2hpbGQpID0+ICRjaGlsZC0+YWNjZXB0KCR0aGlzKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEltcG9ydFJ1bGUoSW1wb3J0UnVsZSAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRJbmNsdWRlUnVsZShJbmNsdWRlUnVsZSAkbm9kZSkKICAgIHsKICAgICAgICBpZiAoJG5vZGUtPmdldENvbnRlbnQoKSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZpc2l0Q29udGVudEJsb2NrKCRub2RlLT5nZXRDb250ZW50KCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TG91ZENvbW1lbnQoTG91ZENvbW1lbnQgJG5vZGUpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TWVkaWFSdWxlKE1lZGlhUnVsZSAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUtPmdldENoaWxkcmVuKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1peGluUnVsZShNaXhpblJ1bGUgJG5vZGUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52aXNpdENhbGxhYmxlRGVjbGFyYXRpb24oJG5vZGUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFJldHVyblJ1bGUoUmV0dXJuUnVsZSAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTaWxlbnRDb21tZW50KFNpbGVudENvbW1lbnQgJG5vZGUpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U3R5bGVSdWxlKFN0eWxlUnVsZSAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUtPmdldENoaWxkcmVuKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFN0eWxlc2hlZXQoU3R5bGVzaGVldCAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUtPmdldENoaWxkcmVuKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFN1cHBvcnRzUnVsZShTdXBwb3J0c1J1bGUgJG5vZGUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52aXNpdENoaWxkcmVuKCRub2RlLT5nZXRDaGlsZHJlbigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uKFZhcmlhYmxlRGVjbGFyYXRpb24gJG5vZGUpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0V2FyblJ1bGUoV2FyblJ1bGUgJG5vZGUpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0V2hpbGVSdWxlKFdoaWxlUnVsZSAkbm9kZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZpc2l0Q2hpbGRyZW4oJG5vZGUtPmdldENoaWxkcmVuKCkpOwogICAgfQoKICAgIC8qKgogICAgICogVmlzaXRzIGVhY2ggb2YgJG5vZGUncyBleHByZXNzaW9ucyBhbmQgY2hpbGRyZW4uCiAgICAgKgogICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHtAc2VlIHZpc2l0RnVuY3Rpb25SdWxlfSBhbmQge0BzZWUgdmlzaXRNaXhpblJ1bGV9CiAgICAgKiBjYWxsIHRoaXMuCiAgICAgKgogICAgICogQHJldHVybiBUfG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0Q2FsbGFibGVEZWNsYXJhdGlvbihDYWxsYWJsZURlY2xhcmF0aW9uICRub2RlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmlzaXRDaGlsZHJlbigkbm9kZS0+Z2V0Q2hpbGRyZW4oKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBWaXNpdHMgZWFjaCBjaGlsZCBpbiAkY2hpbGRyZW4uCiAgICAgKgogICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIHZpc2l0IG1ldGhvZHMgZm9yIGFsbCB7QHNlZSBQYXJlbnRTdGF0ZW1lbnR9cwogICAgICogY2FsbCB0aGlzLgogICAgICoKICAgICAqIEBwYXJhbSBTdGF0ZW1lbnRbXSAkY2hpbGRyZW4KICAgICAqCiAgICAgKiBAcmV0dXJuIFR8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdmlzaXRDaGlsZHJlbihhcnJheSAkY2hpbGRyZW4pCiAgICB7CiAgICAgICAgcmV0dXJuIEl0ZXJhYmxlVXRpbDo6c2VhcmNoKCRjaGlsZHJlbiwgZm4gKFN0YXRlbWVudCAkY2hpbGQpID0+ICRjaGlsZC0+YWNjZXB0KCR0aGlzKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/StatementVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxBdFJvb3RSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxBdFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XENvbnRlbnRCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcQ29udGVudFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XERlYnVnUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcRGVjbGFyYXRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEVhY2hSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxFcnJvclJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEV4dGVuZFJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEZvclJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XEZ1bmN0aW9uUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcSWZSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxJbXBvcnRSdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxJbmNsdWRlUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcTG91ZENvbW1lbnQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XE1lZGlhUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcTWl4aW5SdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxSZXR1cm5SdWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTaWxlbnRDb21tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEFzdFxTYXNzXFN0YXRlbWVudFxTdHlsZVJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFN0eWxlc2hlZXQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFN1cHBvcnRzUnVsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcVmFyaWFibGVEZWNsYXJhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxBc3RcU2Fzc1xTdGF0ZW1lbnRcV2FyblJ1bGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQXN0XFNhc3NcU3RhdGVtZW50XFdoaWxlUnVsZTsKCi8qKgogKiBBbiBpbnRlcmZhY2UgZm9yIHZpc2l0b3JzIHRoYXQgdHJhdmVyc2UgU2Fzc1NjcmlwdCBzdGF0ZW1lbnRzLgogKgogKiBAaW50ZXJuYWwKICoKICogQHRlbXBsYXRlIFQKICovCmludGVyZmFjZSBTdGF0ZW1lbnRWaXNpdG9yCnsKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEF0Um9vdFJ1bGUoQXRSb290UnVsZSAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0QXRSdWxlKEF0UnVsZSAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29udGVudEJsb2NrKENvbnRlbnRCbG9jayAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29udGVudFJ1bGUoQ29udGVudFJ1bGUgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdERlYnVnUnVsZShEZWJ1Z1J1bGUgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdERlY2xhcmF0aW9uKERlY2xhcmF0aW9uICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRFYWNoUnVsZShFYWNoUnVsZSAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0RXJyb3JSdWxlKEVycm9yUnVsZSAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0RXh0ZW5kUnVsZShFeHRlbmRSdWxlICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRGb3JSdWxlKEZvclJ1bGUgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEZ1bmN0aW9uUnVsZShGdW5jdGlvblJ1bGUgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdElmUnVsZShJZlJ1bGUgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEltcG9ydFJ1bGUoSW1wb3J0UnVsZSAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0SW5jbHVkZVJ1bGUoSW5jbHVkZVJ1bGUgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdExvdWRDb21tZW50KExvdWRDb21tZW50ICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNZWRpYVJ1bGUoTWVkaWFSdWxlICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNaXhpblJ1bGUoTWl4aW5SdWxlICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRSZXR1cm5SdWxlKFJldHVyblJ1bGUgJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFNpbGVudENvbW1lbnQoU2lsZW50Q29tbWVudCAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U3R5bGVSdWxlKFN0eWxlUnVsZSAkbm9kZSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0U3R5bGVzaGVldChTdHlsZXNoZWV0ICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRTdXBwb3J0c1J1bGUoU3VwcG9ydHNSdWxlICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uKFZhcmlhYmxlRGVjbGFyYXRpb24gJG5vZGUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFdhcm5SdWxlKFdhcm5SdWxlICRub2RlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRXaGlsZVJ1bGUoV2hpbGVSdWxlICRub2RlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Visitor/ValueVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFZpc2l0b3I7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NCb29sZWFuOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NDYWxjdWxhdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWYWx1ZVxTYXNzQ29sb3I7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc0Z1bmN0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NMaXN0Owp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NNYXA7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc01peGluOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZhbHVlXFNhc3NOdW1iZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVmFsdWVcU2Fzc1N0cmluZzsKCi8qKgogKiBBbiBpbnRlcmZhY2UgZm9yIHZpc2l0b3JzIHRoYXQgdHJhdmVyc2UgU2Fzc1NjcmlwdCAkdmFsdWVzLgogKgogKiBAaW50ZXJuYWwKICoKICogQHRlbXBsYXRlIFQKICovCmludGVyZmFjZSBWYWx1ZVZpc2l0b3IKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0Qm9vbGVhbihTYXNzQm9vbGVhbiAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENhbGN1bGF0aW9uKFNhc3NDYWxjdWxhdGlvbiAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdENvbG9yKFNhc3NDb2xvciAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdEZ1bmN0aW9uKFNhc3NGdW5jdGlvbiAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1peGluKFNhc3NNaXhpbiAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdExpc3QoU2Fzc0xpc3QgJHZhbHVlKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNYXAoU2Fzc01hcCAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE51bGwoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gVAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXROdW1iZXIoU2Fzc051bWJlciAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFN0cmluZyhTYXNzU3RyaW5nICR2YWx1ZSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/scssphp/src/Warn.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxFdmFsdWF0aW9uXEV2YWx1YXRpb25Db250ZXh0OwoKZmluYWwgY2xhc3MgV2Fybgp7CiAgICAvKioKICAgICAqIFByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYEBpbXBvcnRgIG9yIGZ1bmN0aW9uIGNhbGwuCiAgICAgKgogICAgICogVGhpcyBtYXkgb25seSBiZSBjYWxsZWQgd2l0aGluIGEgY3VzdG9tIGZ1bmN0aW9uIG9yIGltcG9ydGVyIGNhbGxiYWNrLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdhcm5pbmcoc3RyaW5nICRtZXNzYWdlKTogdm9pZAogICAgewogICAgICAgIHNlbGY6OnJlcG9ydFdhcm5pbmcoJG1lc3NhZ2UsIG51bGwpOwogICAgfQoKICAgIC8qKgogICAgICogUHJpbnRzIGEgZGVwcmVjYXRpb24gd2FybmluZyBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBgQGltcG9ydGAgb3IgZnVuY3Rpb24gY2FsbC4KICAgICAqCiAgICAgKiBUaGlzIG1heSBvbmx5IGJlIGNhbGxlZCB3aXRoaW4gYSBjdXN0b20gZnVuY3Rpb24gb3IgaW1wb3J0ZXIgY2FsbGJhY2suCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVwcmVjYXRpb24oc3RyaW5nICRtZXNzYWdlKTogdm9pZAogICAgewogICAgICAgIHNlbGY6OnJlcG9ydFdhcm5pbmcoJG1lc3NhZ2UsIERlcHJlY2F0aW9uOjp1c2VyQXV0aG9yZWQpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZm9yRGVwcmVjYXRpb24oc3RyaW5nICRtZXNzYWdlLCBEZXByZWNhdGlvbiAkZGVwcmVjYXRpb24pOiB2b2lkCiAgICB7CiAgICAgICAgc2VsZjo6cmVwb3J0V2FybmluZygkbWVzc2FnZSwgJGRlcHJlY2F0aW9uKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZXBvcnRXYXJuaW5nKHN0cmluZyAkbWVzc2FnZSwgP0RlcHJlY2F0aW9uICRkZXByZWNhdGlvbik6IHZvaWQKICAgIHsKICAgICAgICBFdmFsdWF0aW9uQ29udGV4dDo6Z2V0Q3VycmVudCgpLT53YXJuKCRtZXNzYWdlLCAkZGVwcmVjYXRpb24pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic2Nzc3BocC9zb3VyY2Utc3BhbiIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJQcm92aWRlcyBhIHJlcHJlc2VudGF0aW9uIGZvciBzb3VyY2UgY29kZSBsb2NhdGlvbnMgYW5kIHNwYW5zLiIsCiAgICAia2V5d29yZHMiOiBbInBhcnNpbmciXSwKICAgICJsaWNlbnNlIjogWwogICAgICAgICJNSVQiCiAgICBdLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJDaHJpc3RvcGhlIENvZXZvZXQiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0b2YiCiAgICAgICAgfQogICAgXSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7ICJTb3VyY2VTcGFuXFwiOiAic3JjLyIgfQogICAgfSwKICAgICJhdXRvbG9hZC1kZXYiOiB7CiAgICAgICAgInBzci00IjogeyAiU291cmNlU3BhblxcVGVzdHNcXCI6ICJ0ZXN0cy8iIH0KICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIj49OC4xIiwKICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICJsZWFndWUvdXJpIjogIl43LjYiLAogICAgICAgICJsZWFndWUvdXJpLWludGVyZmFjZXMiOiAiXjcuNiIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHN0YW4vcGhwc3RhbiI6ICJeMi4wIiwKICAgICAgICAicGhwc3Rhbi9waHBzdGFuLWRlcHJlY2F0aW9uLXJ1bGVzIjogIl4yLjAiLAogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjkuNS42IiwKICAgICAgICAic3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlciI6ICJ+My41IiwKICAgICAgICAic3ltZm9ueS9waHB1bml0LWJyaWRnZSI6ICJeNi40IHx8IF43LjMgfHwgXjguMCIsCiAgICAgICAgInN5bWZvbnkvdmFyLWR1bXBlciI6ICJeNi40IHx8IF43LjMgfHwgXjguMCIKICAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYWluIjogIjEueC1kZXYiCiAgICAgICAgfQogICAgfSwKICAgICJjb25maWciOiB7CiAgICAgICAgInNvcnQtcGFja2FnZXMiOiB0cnVlCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/LICENSE.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDI0LXByZXNlbnQsIHRoZSBTY3NzcGhwIHByb2plY3QgYXV0aG9ycwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCmEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCndpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCnBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwp0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQppbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELApFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQpMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCk9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgpXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBTb3VyY2VTcGFuCgpgc2Nzc3BocC9zb3VyY2Utc3BhbmAgaXMgYSBsaWJyYXJ5IGZvciB0cmFja2luZyBsb2NhdGlvbnMgaW4gc291cmNlIGNvZGUuIEl0J3MgZGVzaWduZWQKdG8gcHJvdmlkZSBhIHN0YW5kYXJkIHJlcHJlc2VudGF0aW9uIGZvciBzb3VyY2UgY29kZSBsb2NhdGlvbnMgYW5kIHNwYW5zIHNvIHRoYXQKZGlzcGFyYXRlIHBhY2thZ2VzIGNhbiBlYXNpbHkgcGFzcyB0aGVtIGFtb25nIG9uZSBhbm90aGVyLCBhbmQgdG8gbWFrZSBpdCBlYXN5CnRvIGdlbmVyYXRlIGh1bWFuLWZyaWVuZGx5IG1lc3NhZ2VzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHBpZWNlIG9mIGNvZGUuCgpUaGUgbW9zdCBjb21tb25seS11c2VkIGludGVyZmFjZSBpcyB0aGUgcGFja2FnZSdzIG5hbWVzYWtlLCBgU291cmNlU3BhblxTb3VyY2VTcGFuYC4gSXQKcmVwcmVzZW50cyBhIHNwYW4gb2YgY2hhcmFjdGVycyBpbiBzb21lIHNvdXJjZSBmaWxlLCBhbmQgaXMgb2Z0ZW4gYXR0YWNoZWQgdG8gYW4Kb2JqZWN0IHRoYXQgaGFzIGJlZW4gcGFyc2VkIHRvIGluZGljYXRlIHdoZXJlIGl0IHdhcyBwYXJzZWQgZnJvbS4gSXQgcHJvdmlkZXMKYWNjZXNzIHRvIHRoZSB0ZXh0IG9mIHRoZSBzcGFuIHZpYSBgU291cmNlU3Bhbjo6Z2V0VGV4dCgpYCBhbmQgY2FuIGJlIHVzZWQgdG8gcHJvZHVjZQpodW1hbi1mcmllbmRseSBtZXNzYWdlcyB1c2luZyBgU291cmNlU3Bhbjo6bWVzc2FnZSgpYC4gSXQncyBtb3N0IHNpbXBsZSBpbXBsZW1lbnRhdGlvbgppcyBgU291cmNlU3BhblxTaW1wbGVTb3VyY2VTcGFuYCB3aGljaCBob2xkcyBkaXJlY3RseSB0aGUgc3BhbiBpbmZvcm1hdGlvbi4KCldoZW4gcGFyc2luZyBjb2RlIGZyb20gYSBmaWxlLCBgU291cmNlU3BhblxTb3VyY2VGaWxlYCBpcyB1c2VmdWwuIE5vdCBvbmx5IGRvZXMgaXQgcHJvdmlkZQphbiBlZmZpY2llbnQgbWVhbnMgb2YgY29tcHV0aW5nIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzLCBgU291cmNlRmlsZSNzcGFuKClgCnJldHVybnMgc3BlY2lhbCBgRmlsZVNwYW5gcyB0aGF0IGFyZSBhYmxlIHRvIHByb3ZpZGUgbW9yZSBjb250ZXh0IGZvciB0aGVpcgplcnJvciBtZXNzYWdlcy4KCiMjIENyZWRpdHMKClRoaXMgbGlicmFyeSBpcyBhIFBIUCBwb3J0IG9mIHRoZSBbRGFydCBgc291cmNlX3NwYW5gIHBhY2thZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJ0LWxhbmcvc291cmNlX3NwYW4pLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/ConcreteFileSpan.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCi8qKgogKiBUaGUgaW1wbGVtZW50YXRpb24gb2Yge0BzZWUgRmlsZVNwYW59IGJhc2VkIG9uIGEge0BzZWUgU291cmNlRmlsZX0uCiAqCiAqIEBzZWUgU291cmNlRmlsZTo6c3BhbigpCiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQ29uY3JldGVGaWxlU3BhbiBleHRlbmRzIFNvdXJjZVNwYW5NaXhpbiBpbXBsZW1lbnRzIEZpbGVTcGFuCnsKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkc3RhcnQgVGhlIG9mZnNldCBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzcGFuLgogICAgICogQHBhcmFtIGludCAkZW5kICAgVGhlIG9mZnNldCBvZiB0aGUgZW5kIG9mIHRoZSBzcGFuLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBTb3VyY2VGaWxlICRmaWxlLAogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ICRzdGFydCwKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludCAkZW5kLAogICAgKSB7CiAgICAgICAgaWYgKCR0aGlzLT5lbmQgPCAkdGhpcy0+c3RhcnQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkVuZCAkdGhpcy0+ZW5kIG11c3QgY29tZSBhZnRlciBzdGFydCAkdGhpcy0+c3RhcnQuIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmVuZCA+ICR0aGlzLT5maWxlLT5nZXRMZW5ndGgoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mUmFuZ2VFeGNlcHRpb24oIkVuZCAkdGhpcy0+ZW5kIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBmaWxlLCB7JHRoaXMtPmZpbGUtPmdldExlbmd0aCgpfS4iKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+c3RhcnQgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbigiU3RhcnQgbWF5IG5vdCBiZSBuZWdhdGl2ZSwgd2FzICR0aGlzLT5zdGFydC4iKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEZpbGUoKTogU291cmNlRmlsZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmlsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U291cmNlVXJsKCk6ID9VcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZpbGUtPmdldFNvdXJjZVVybCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZW5ndGgoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmQgLSAkdGhpcy0+c3RhcnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXJ0KCk6IEZpbGVMb2NhdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgRmlsZUxvY2F0aW9uKCR0aGlzLT5maWxlLCAkdGhpcy0+c3RhcnQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmQoKTogRmlsZUxvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBGaWxlTG9jYXRpb24oJHRoaXMtPmZpbGUsICR0aGlzLT5lbmQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZXh0KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmlsZS0+Z2V0VGV4dCgkdGhpcy0+c3RhcnQsICR0aGlzLT5lbmQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZXh0KCk6IHN0cmluZwogICAgewogICAgICAgICRlbmRMaW5lID0gJHRoaXMtPmZpbGUtPmdldExpbmUoJHRoaXMtPmVuZCk7CiAgICAgICAgJGVuZENvbHVtbiA9ICR0aGlzLT5maWxlLT5nZXRDb2x1bW4oJHRoaXMtPmVuZCk7CgogICAgICAgIGlmICgkZW5kQ29sdW1uID09PSAwICYmICRlbmRMaW5lICE9PSAwKSB7CiAgICAgICAgICAgIC8vIElmICR0aGlzLT5lbmQgaXMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLCB0aGUgc3BhbiBjb3ZlcnMgdGhlCiAgICAgICAgICAgIC8vIHByZXZpb3VzIG5ld2xpbmUsIHNvIHdlIG9ubHkgd2FudCB0byBpbmNsdWRlIHRoZSBwcmV2aW91cyBsaW5lIGluIHRoZQogICAgICAgICAgICAvLyBjb250ZXh0Li4uCgogICAgICAgICAgICBpZiAoJHRoaXMtPmdldExlbmd0aCgpID09PSAwKSB7CiAgICAgICAgICAgICAgICAvLyAuLi51bmxlc3MgdGhpcyBpcyBhIHBvaW50IHNwYW4sIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbmNsdWRlIHRoZQogICAgICAgICAgICAgICAgLy8gbmV4dCBsaW5lIChvciB0aGUgZW1wdHkgc3RyaW5nIGlmIHRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgZmlsZSkuCiAgICAgICAgICAgICAgICByZXR1cm4gJGVuZExpbmUgPT09ICR0aGlzLT5maWxlLT5nZXRMaW5lcygpIC0gMSA/ICcnIDogJHRoaXMtPmZpbGUtPmdldFRleHQoJHRoaXMtPmZpbGUtPmdldE9mZnNldCgkZW5kTGluZSksICR0aGlzLT5maWxlLT5nZXRPZmZzZXQoJGVuZExpbmUgKyAxKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRlbmRPZmZzZXQgPSAkdGhpcy0+ZW5kOwogICAgICAgIH0gZWxzZWlmICgkZW5kTGluZSA9PT0gJHRoaXMtPmZpbGUtPmdldExpbmVzKCkgLSAxKSB7CiAgICAgICAgICAgIC8vIElmIHRoZSBzcGFuIGNvdmVycyB0aGUgbGFzdCBsaW5lIG9mIHRoZSBmaWxlLCB0aGUgY29udGV4dCBzaG91bGQgZ28gYWxsCiAgICAgICAgICAgIC8vIHRoZSB3YXkgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4KICAgICAgICAgICAgJGVuZE9mZnNldCA9ICR0aGlzLT5maWxlLT5nZXRMZW5ndGgoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBjb250ZXh0IHNob3VsZCBjb3ZlciB0aGUgZnVsbCBsaW5lIG9uIHdoaWNoIFtlbmRdCiAgICAgICAgICAgIC8vIGFwcGVhcnMuCiAgICAgICAgICAgICRlbmRPZmZzZXQgPSAkdGhpcy0+ZmlsZS0+Z2V0T2Zmc2V0KCRlbmRMaW5lICsgMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmZpbGUtPmdldFRleHQoJHRoaXMtPmZpbGUtPmdldE9mZnNldCgkdGhpcy0+ZmlsZS0+Z2V0TGluZSgkdGhpcy0+c3RhcnQpKSwgJGVuZE9mZnNldCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbyhTb3VyY2VTcGFuICRvdGhlcik6IGludAogICAgewogICAgICAgIGlmICghJG90aGVyIGluc3RhbmNlb2YgQ29uY3JldGVGaWxlU3BhbikgewogICAgICAgICAgICByZXR1cm4gcGFyZW50Ojpjb21wYXJlVG8oJG90aGVyKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+c3RhcnQgPD0+ICRvdGhlci0+c3RhcnQ7CgogICAgICAgIGlmICgkcmVzdWx0ICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmQgPD0+ICRvdGhlci0+ZW5kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmlvbihTb3VyY2VTcGFuICRvdGhlcik6IFNvdXJjZVNwYW4KICAgIHsKICAgICAgICBpZiAoISRvdGhlciBpbnN0YW5jZW9mIEZpbGVTcGFuKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6OnVuaW9uKCRvdGhlcik7CiAgICAgICAgfQoKICAgICAgICAkc3BhbiA9ICR0aGlzLT5leHBhbmQoJG90aGVyKTsKCiAgICAgICAgaWYgKCRvdGhlciBpbnN0YW5jZW9mIENvbmNyZXRlRmlsZVNwYW4pIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5zdGFydCA+ICRvdGhlci0+ZW5kIHx8ICRvdGhlci0+c3RhcnQgPiAkdGhpcy0+ZW5kKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiU3BhbnMgYXJlIGRpc2pvaW50LiIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5zdGFydCA+ICRvdGhlci0+Z2V0RW5kKCktPmdldE9mZnNldCgpIHx8ICRvdGhlci0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCkgPiAkdGhpcy0+ZW5kKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiU3BhbnMgYXJlIGRpc2pvaW50LiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNwYW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGV4cGFuZChGaWxlU3BhbiAkb3RoZXIpOiBGaWxlU3BhbgogICAgewogICAgICAgIGlmICgkdGhpcy0+ZmlsZS0+Z2V0U291cmNlVXJsKCkgIT09ICRvdGhlci0+Z2V0RmlsZSgpLT5nZXRTb3VyY2VVcmwoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignU291cmNlIG1hcCBVUkxzIGRvblwndCBtYXRjaC4nKTsKICAgICAgICB9CgogICAgICAgICRzdGFydCA9IG1pbigkdGhpcy0+c3RhcnQsICRvdGhlci0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCkpOwogICAgICAgICRlbmQgPSBtYXgoJHRoaXMtPmVuZCwgJG90aGVyLT5nZXRFbmQoKS0+Z2V0T2Zmc2V0KCkpOwoKICAgICAgICByZXR1cm4gbmV3IENvbmNyZXRlRmlsZVNwYW4oJHRoaXMtPmZpbGUsICRzdGFydCwgJGVuZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHN1YnNwYW4oaW50ICRzdGFydCwgP2ludCAkZW5kID0gbnVsbCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgVXRpbDo6Y2hlY2tWYWxpZFJhbmdlKCRzdGFydCwgJGVuZCwgJHRoaXMtPmdldExlbmd0aCgpKTsKCiAgICAgICAgaWYgKCRzdGFydCA9PT0gMCAmJiAoJGVuZCA9PT0gbnVsbCB8fCAkZW5kID09PSAkdGhpcy0+Z2V0TGVuZ3RoKCkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+ZmlsZS0+c3BhbigkdGhpcy0+c3RhcnQgKyAkc3RhcnQsICRlbmQgPT09IG51bGwgPyAkdGhpcy0+ZW5kIDogJHRoaXMtPnN0YXJ0ICsgJGVuZCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/FileLocation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCi8qKgogKiBUaGUgaW1wbGVtZW50YXRpb24gb2Yge0BzZWUgU291cmNlTG9jYXRpb259IGJhc2VkIG9uIGEge0BzZWUgU291cmNlRmlsZX0uCiAqCiAqIEBzZWUgU291cmNlRmlsZTo6bG9jYXRpb24oKQogKi8KZmluYWwgY2xhc3MgRmlsZUxvY2F0aW9uIGV4dGVuZHMgU291cmNlTG9jYXRpb25NaXhpbgp7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBTb3VyY2VGaWxlICRmaWxlLAogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ICRvZmZzZXQsCiAgICApIHsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RmlsZSgpOiBTb3VyY2VGaWxlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5maWxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPZmZzZXQoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vZmZzZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExpbmUoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5maWxlLT5nZXRMaW5lKCR0aGlzLT5vZmZzZXQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb2x1bW4oKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5maWxlLT5nZXRDb2x1bW4oJHRoaXMtPm9mZnNldCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNvdXJjZVVybCgpOiA/VXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5maWxlLT5nZXRTb3VyY2VVcmwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcG9pbnRTcGFuKCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBDb25jcmV0ZUZpbGVTcGFuKCR0aGlzLT5maWxlLCAkdGhpcy0+b2Zmc2V0LCAkdGhpcy0+b2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/FileSpan.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKaW50ZXJmYWNlIEZpbGVTcGFuIGV4dGVuZHMgU291cmNlU3BhbldpdGhDb250ZXh0CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGaWxlKCk6IFNvdXJjZUZpbGU7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXJ0KCk6IEZpbGVMb2NhdGlvbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5kKCk6IEZpbGVMb2NhdGlvbjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwYW5kKEZpbGVTcGFuICRvdGhlcik6IEZpbGVTcGFuOwoKICAgIC8qKgogICAgICogUmV0dXJuIGEgc3BhbiBmcm9tICRzdGFydCBieXRlcyAoaW5jbHVzaXZlKSB0byAkZW5kIGJ5dGVzCiAgICAgKiAoZXhjbHVzaXZlKSBhZnRlciB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc3BhbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3Vic3BhbihpbnQgJHN0YXJ0LCA/aW50ICRlbmQgPSBudWxsKTogRmlsZVNwYW47Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/Highlighter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/Highlighter/AsciiGlyph.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuXEhpZ2hsaWdodGVyOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgQXNjaWlHbHlwaAp7CiAgICBwdWJsaWMgY29uc3QgaG9yaXpvbnRhbExpbmUgPSAnLSc7CiAgICBwdWJsaWMgY29uc3QgdmVydGljYWxMaW5lID0gJ3wnOwogICAgcHVibGljIGNvbnN0IHRvcExlZnRDb3JuZXIgPSAnLCc7CiAgICBwdWJsaWMgY29uc3QgYm90dG9tTGVmdENvcm5lciA9ICInIjsKICAgIHB1YmxpYyBjb25zdCBjcm9zcyA9ICcrJzsKICAgIHB1YmxpYyBjb25zdCB1cEVuZCA9ICInIjsKICAgIHB1YmxpYyBjb25zdCBkb3duRW5kID0gJywnOwogICAgcHVibGljIGNvbnN0IGhvcml6b250YWxMaW5lQm9sZCA9ICc9JzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/Highlighter/Highlight.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuXEhpZ2hsaWdodGVyOwoKdXNlIFNvdXJjZVNwYW5cU2ltcGxlU291cmNlTG9jYXRpb247CnVzZSBTb3VyY2VTcGFuXFNpbXBsZVNvdXJjZVNwYW5XaXRoQ29udGV4dDsKdXNlIFNvdXJjZVNwYW5cU291cmNlU3BhbjsKdXNlIFNvdXJjZVNwYW5cU291cmNlU3BhbldpdGhDb250ZXh0Owp1c2UgU291cmNlU3BhblxVdGlsOwoKLyoqCiAqIEluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBoaWdobGlnaHQgYSBzaW5nbGUgc2VjdGlvbiBvZiBhIHNvdXJjZSBmaWxlLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEhpZ2hsaWdodAp7CiAgICAvKioKICAgICAqIFRoZSBzZWN0aW9uIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBoaWdobGlnaHQuCiAgICAgKgogICAgICogVGhpcyBpcyBub3JtYWxpemVkIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB7QHNlZSBIaWdobGlnaHRlcn0gdG8gd29yayB3aXRoLgogICAgICovCiAgICBwdWJsaWMgcmVhZG9ubHkgU291cmNlU3BhbldpdGhDb250ZXh0ICRzcGFuOwoKICAgIC8qKgogICAgICogVGhlIGxhYmVsIHRvIGluY2x1ZGUgaW5saW5lIHdoZW4gaGlnaGxpZ2h0aW5nIHtAc2VlICRzcGFufS4KICAgICAqCiAgICAgKiBUaGlzIGhlbHBzIGRpc3Rpbmd1aXNoIGNsYXJpZnkgd2hhdCBlYWNoIGhpZ2hsaWdodCBtZWFucyB3aGVuIG11bHRpcGxlIGFyZQogICAgICogdXNlZCBpbiB0aGUgc2FtZSBtZXNzYWdlLgogICAgICovCiAgICBwdWJsaWMgcmVhZG9ubHkgP3N0cmluZyAkbGFiZWw7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIFNvdXJjZVNwYW4gJHNwYW4sCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBib29sICRwcmltYXJ5ID0gZmFsc2UsCiAgICAgICAgP3N0cmluZyAkbGFiZWwgPSBudWxsLAogICAgKSB7CiAgICAgICAgJHRoaXMtPnNwYW4gPSBzZWxmOjpub3JtYWxpemVTcGFuKCRzcGFuKTsKICAgICAgICAkdGhpcy0+bGFiZWwgPSAkbGFiZWwgPT09IG51bGwgPyBudWxsIDogc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGlzIGlzIHRoZSBwcmltYXJ5IHNwYW4gaW4gdGhlIGhpZ2hsaWdodC4KICAgICAqCiAgICAgKiBUaGUgcHJpbWFyeSBzcGFuIGlzIGhpZ2hsaWdodGVkIHdpdGggYSBkaWZmZXJlbnQgY2hhcmFjdGVyIHRoYW4KICAgICAqIG5vbi1wcmltYXJ5IHNwYW5zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcmltYXJ5KCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaW1hcnk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplU3BhbihTb3VyY2VTcGFuICRzcGFuKTogU291cmNlU3BhbldpdGhDb250ZXh0CiAgICB7CiAgICAgICAgJG5ld1NwYW4gPSBzZWxmOjpub3JtYWxpemVDb250ZXh0KCRzcGFuKTsKICAgICAgICAkbmV3U3BhbiA9IHNlbGY6Om5vcm1hbGl6ZU5ld2xpbmVzKCRuZXdTcGFuKTsKICAgICAgICAkbmV3U3BhbiA9IHNlbGY6Om5vcm1hbGl6ZVRyYWlsaW5nTmV3bGluZSgkbmV3U3Bhbik7CgogICAgICAgIHJldHVybiBzZWxmOjpub3JtYWxpemVFbmRPZkxpbmUoJG5ld1NwYW4pOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplcyAkc3BhbiB0byBlbnN1cmUgdGhhdCBpdCdzIGEge0BzZWUgU291cmNlU3BhbldpdGhDb250ZXh0fSB3aG9zZQogICAgICogY29udGV4dCBhY3R1YWxseSBjb250YWlucyBpdHMgdGV4dCBhdCB0aGUgZXhwZWN0ZWQgY29sdW1uLgogICAgICoKICAgICAqIElmIGl0J3Mgbm90IGFscmVhZHkgYSB7QHNlZSBTb3VyY2VTcGFuV2l0aENvbnRleHR9LCBhZGp1c3QgdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAqIGxvY2F0aW9ucycgbGluZSBhbmQgY29sdW1uIGZpZWxkcyBzbyB0aGF0IHRoZSBoaWdobGlnaHRlciBjYW4gYXNzdW1lIHRoZXkKICAgICAqIG1hdGNoIHVwIHdpdGggdGhlIGNvbnRleHQuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbnRleHQoU291cmNlU3BhbiAkc3Bhbik6IFNvdXJjZVNwYW5XaXRoQ29udGV4dAogICAgewogICAgICAgIGlmICgkc3BhbiBpbnN0YW5jZW9mIFNvdXJjZVNwYW5XaXRoQ29udGV4dCAmJiBVdGlsOjpmaW5kTGluZVN0YXJ0KCRzcGFuLT5nZXRDb250ZXh0KCksICRzcGFuLT5nZXRUZXh0KCksICRzcGFuLT5nZXRTdGFydCgpLT5nZXRDb2x1bW4oKSkgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRzcGFuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVTb3VyY2VTcGFuV2l0aENvbnRleHQoCiAgICAgICAgICAgIG5ldyBTaW1wbGVTb3VyY2VMb2NhdGlvbigkc3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCksICRzcGFuLT5nZXRTb3VyY2VVcmwoKSwgMCwgMCksCiAgICAgICAgICAgIG5ldyBTaW1wbGVTb3VyY2VMb2NhdGlvbigkc3Bhbi0+Z2V0RW5kKCktPmdldE9mZnNldCgpLCAkc3Bhbi0+Z2V0U291cmNlVXJsKCksIHN1YnN0cl9jb3VudCgkc3Bhbi0+Z2V0VGV4dCgpLCAiXG4iKSwgc2VsZjo6bGFzdExpbmVMZW5ndGgoJHNwYW4tPmdldFRleHQoKSkpLAogICAgICAgICAgICAkc3Bhbi0+Z2V0VGV4dCgpLAogICAgICAgICAgICAkc3Bhbi0+Z2V0VGV4dCgpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZXMgJHNwYW4gdG8gcmVwbGFjZSBXaW5kb3dzLXN0eWxlIG5ld2xpbmVzIHdpdGggVW5peC1zdHlsZQogICAgICogbmV3bGluZXMuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZU5ld2xpbmVzKFNvdXJjZVNwYW5XaXRoQ29udGV4dCAkc3Bhbik6IFNvdXJjZVNwYW5XaXRoQ29udGV4dAogICAgewogICAgICAgICR0ZXh0ID0gJHNwYW4tPmdldFRleHQoKTsKICAgICAgICBpZiAoIXN0cl9jb250YWlucygkdGV4dCwgIlxyXG4iKSkgewogICAgICAgICAgICByZXR1cm4gJHNwYW47CiAgICAgICAgfQoKICAgICAgICAkZW5kT2Zmc2V0ID0gJHNwYW4tPmdldEVuZCgpLT5nZXRPZmZzZXQoKSAtIHN1YnN0cl9jb3VudCgkdGV4dCwgIlxyXG4iKTsKCiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVTb3VyY2VTcGFuV2l0aENvbnRleHQoCiAgICAgICAgICAgICRzcGFuLT5nZXRTdGFydCgpLAogICAgICAgICAgICBuZXcgU2ltcGxlU291cmNlTG9jYXRpb24oJGVuZE9mZnNldCwgJHNwYW4tPmdldFNvdXJjZVVybCgpLCAkc3Bhbi0+Z2V0RW5kKCktPmdldExpbmUoKSwgJHNwYW4tPmdldEVuZCgpLT5nZXRDb2x1bW4oKSksCiAgICAgICAgICAgIHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJHRleHQpLAogICAgICAgICAgICBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRzcGFuLT5nZXRDb250ZXh0KCkpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZXMgJHNwYW4gdG8gcmVtb3ZlIGEgdHJhaWxpbmcgbmV3bGluZSBmcm9tIGAkc3Bhbi0+Z2V0Q29udGV4dCgpYC4KICAgICAqCiAgICAgKiBJZiBuZWNlc3NhcnksIGFsc28gYWRqdXN0IGAkc3Bhbi0+Z2V0RW5kKClgIHNvIHRoYXQgaXQgZG9lc24ndCBwb2ludCBwYXN0IHdoZXJlCiAgICAgKiB0aGUgdHJhaWxpbmcgbmV3bGluZSB1c2VkIHRvIGJlLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVUcmFpbGluZ05ld2xpbmUoU291cmNlU3BhbldpdGhDb250ZXh0ICRzcGFuKTogU291cmNlU3BhbldpdGhDb250ZXh0CiAgICB7CiAgICAgICAgaWYgKCFzdHJfZW5kc193aXRoKCRzcGFuLT5nZXRDb250ZXh0KCksICJcbiIpKSB7CiAgICAgICAgICAgIHJldHVybiAkc3BhbjsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZXJlJ3MgYSBmdWxsIGJsYW5rIGxpbmUgb24gdGhlIGVuZCBvZiBgJHNwYW4tPmdldENvbnRleHQoKWAsIGl0J3MgcHJvYmFibHkKICAgICAgICAvLyBzaWduaWZpY2FudCwgc28gd2Ugc2hvdWxkbid0IHRyaW0gaXQuCiAgICAgICAgaWYgKHN0cl9lbmRzX3dpdGgoJHNwYW4tPmdldFRleHQoKSwgIlxuXG4iKSkgewogICAgICAgICAgICByZXR1cm4gJHNwYW47CiAgICAgICAgfQoKICAgICAgICAkY29udGV4dCA9IHN1YnN0cigkc3Bhbi0+Z2V0Q29udGV4dCgpLCAwLCAtMSk7CiAgICAgICAgJHRleHQgPSAkc3Bhbi0+Z2V0VGV4dCgpOwogICAgICAgICRzdGFydCA9ICRzcGFuLT5nZXRTdGFydCgpOwogICAgICAgICRlbmQgPSAkc3Bhbi0+Z2V0RW5kKCk7CgogICAgICAgIGlmIChzdHJfZW5kc193aXRoKCR0ZXh0LCAiXG4iKSAmJiBzZWxmOjppc1RleHRBdEVuZE9mQ29udGV4dCgkc3BhbikpIHsKICAgICAgICAgICAgJHRleHQgPSBzdWJzdHIoJHRleHQsIDAsIC0xKTsKCiAgICAgICAgICAgIGlmICgkdGV4dCA9PT0gJycpIHsKICAgICAgICAgICAgICAgICRlbmQgPSAkc3RhcnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZW5kID0gbmV3IFNpbXBsZVNvdXJjZUxvY2F0aW9uKAogICAgICAgICAgICAgICAgICAgICRlbmQtPmdldE9mZnNldCgpIC0gMSwKICAgICAgICAgICAgICAgICAgICAkc3Bhbi0+Z2V0U291cmNlVXJsKCksCiAgICAgICAgICAgICAgICAgICAgJGVuZC0+Z2V0TGluZSgpIC0gMSwKICAgICAgICAgICAgICAgICAgICBzZWxmOjpsYXN0TGluZUxlbmd0aCgkY29udGV4dCkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkc3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0T2Zmc2V0KCkgPT09ICRzcGFuLT5nZXRFbmQoKS0+Z2V0T2Zmc2V0KCkgPyAkZW5kIDogJHNwYW4tPmdldFN0YXJ0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgU2ltcGxlU291cmNlU3BhbldpdGhDb250ZXh0KCRzdGFydCwgJGVuZCwgJHRleHQsICRjb250ZXh0KTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZXMgJHNwYW4gc28gdGhhdCB0aGUgZW5kIGxvY2F0aW9uIGlzIGF0IHRoZSBlbmQgb2YgYSBsaW5lIHJhdGhlcgogICAgICogdGhhbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZUVuZE9mTGluZShTb3VyY2VTcGFuV2l0aENvbnRleHQgJHNwYW4pOiBTb3VyY2VTcGFuV2l0aENvbnRleHQKICAgIHsKICAgICAgICBpZiAoJHNwYW4tPmdldEVuZCgpLT5nZXRDb2x1bW4oKSAhPT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHNwYW47CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNwYW4tPmdldEVuZCgpLT5nZXRMaW5lKCkgPT09ICRzcGFuLT5nZXRTdGFydCgpLT5nZXRMaW5lKCkpIHsKICAgICAgICAgICAgcmV0dXJuICRzcGFuOwogICAgICAgIH0KCiAgICAgICAgJHRleHQgPSBzdWJzdHIoJHNwYW4tPmdldFRleHQoKSwgMCwgLTEpOwoKICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVNvdXJjZVNwYW5XaXRoQ29udGV4dCgKICAgICAgICAgICAgJHNwYW4tPmdldFN0YXJ0KCksCiAgICAgICAgICAgIG5ldyBTaW1wbGVTb3VyY2VMb2NhdGlvbigKICAgICAgICAgICAgICAgICRzcGFuLT5nZXRFbmQoKS0+Z2V0T2Zmc2V0KCkgLSAxLAogICAgICAgICAgICAgICAgJHNwYW4tPmdldFNvdXJjZVVybCgpLAogICAgICAgICAgICAgICAgJHNwYW4tPmdldEVuZCgpLT5nZXRMaW5lKCkgLSAxLAogICAgICAgICAgICAgICAgXHN0cmxlbigkdGV4dCkgLSBVdGlsOjpsYXN0SW5kZXhPZigkdGV4dCwgIlxuIikgLSAxCiAgICAgICAgICAgICksCiAgICAgICAgICAgICR0ZXh0LAogICAgICAgICAgICAvLyBJZiB0aGUgY29udGV4dCBhbHNvIGVuZHMgd2l0aCBhIG5ld2xpbmUsIGl0J3MgcG9zc2libGUgdGhhdCB3ZSBkb24ndAogICAgICAgICAgICAvLyBoYXZlIHRoZSBmdWxsIGNvbnRleHQgZm9yIHRoYXQgbGluZSwgc28gd2Ugc2hvdWxkbid0IHByaW50IGl0IGF0IGFsbC4KICAgICAgICAgICAgc3RyX2VuZHNfd2l0aCgkc3Bhbi0+Z2V0Q29udGV4dCgpLCAiXG4iKSA/IHN1YnN0cigkc3Bhbi0+Z2V0Q29udGV4dCgpLCAwLCAtMSkgOiAkc3Bhbi0+Z2V0Q29udGV4dCgpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgbGFzdCBsaW5lIGluICR0ZXh0LCB3aGV0aGVyIG9yIG5vdCBpdCBlbmRzIGluIGEKICAgICAqIG5ld2xpbmUuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGxhc3RMaW5lTGVuZ3RoKHN0cmluZyAkdGV4dCk6IGludAogICAgewogICAgICAgIGlmICgkdGV4dCA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRleHRbXHN0cmxlbigkdGV4dCkgLSAxXSA9PT0gJ1xuJykgewogICAgICAgICAgICByZXR1cm4gXHN0cmxlbigkdGV4dCkgPT09IDEgPyAwIDogXHN0cmxlbigkdGV4dCkgLSBVdGlsOjpsYXN0SW5kZXhPZigkdGV4dCwgIlxuIiwgXHN0cmxlbigkdGV4dCkgLSAyKSAtIDE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXHN0cmxlbigkdGV4dCkgLSBVdGlsOjpsYXN0SW5kZXhPZigkdGV4dCwgIlxuIikgLSAxOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRzcGFuJ3MgdGV4dCBydW5zIGFsbCB0aGUgd2F5IHRvIHRoZSBlbmQgb2YgaXRzIGNvbnRleHQuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlzVGV4dEF0RW5kT2ZDb250ZXh0KFNvdXJjZVNwYW5XaXRoQ29udGV4dCAkc3Bhbik6IGJvb2wKICAgIHsKICAgICAgICAkbGluZVN0YXJ0ID0gVXRpbDo6ZmluZExpbmVTdGFydCgkc3Bhbi0+Z2V0Q29udGV4dCgpLCAkc3Bhbi0+Z2V0VGV4dCgpLCAkc3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0Q29sdW1uKCkpOwogICAgICAgIFxhc3NlcnQoJGxpbmVTdGFydCAhPT0gbnVsbCk7CgogICAgICAgIHJldHVybiAkbGluZVN0YXJ0ICsgJHNwYW4tPmdldFN0YXJ0KCktPmdldENvbHVtbigpICsgJHNwYW4tPmdldExlbmd0aCgpID09PSBcc3RybGVuKCRzcGFuLT5nZXRDb250ZXh0KCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/Highlighter/Highlighter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuXEhpZ2hsaWdodGVyOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFNvdXJjZVNwYW5cU291cmNlU3BhbjsKdXNlIFNvdXJjZVNwYW5cVXRpbDsKCi8qKgogKiBBIGNsYXNzIGZvciB3cml0aW5nIGEgY2h1bmsgb2YgdGV4dCB3aXRoIGEgcGFydGljdWxhciBzcGFuIGhpZ2hsaWdodGVkLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEhpZ2hsaWdodGVyCnsKICAgIC8qKgogICAgICogVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gcmVuZGVyIGZvciBoYXJkIHRhYnMgdGhhdCBhcHBlYXIgaW4gYF9zcGFuLnRleHRgLgogICAgICoKICAgICAqIFdlIGRvbid0IHdhbnQgdG8gcmVuZGVyIHJhdyB0YWJzLCBiZWNhdXNlIHRoZXknbGwgbWVzcyB1cCBvdXIgY2hhcmFjdGVyCiAgICAgKiBhbGlnbm1lbnQuCiAgICAgKi8KICAgIHByaXZhdGUgY29uc3QgU1BBQ0VTX1BFUl9UQUIgPSA0OwoKICAgIC8qKgogICAgICogVGhlIGxpbmVzIHRvIGRpc3BsYXksIGluY2x1ZGluZyBjb250ZXh0IGFyb3VuZCB0aGUgaGlnaGxpZ2h0ZWQgc3BhbnMuCiAgICAgKgogICAgICogQHZhciBsaXN0PExpbmU+CiAgICAgKi8KICAgIHByaXZhdGUgYXJyYXkgJGxpbmVzOwoKICAgIC8qKgogICAgICogVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgYmFyIGluIHRoZSBzaWRlYmFyLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGludCAkcGFkZGluZ0JlZm9yZVNpZGViYXI7CgogICAgLyoqCiAgICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbXVsdGlsaW5lIHNwYW5zIHRoYXQgY292ZXIgYW55IHBhcnQgb2YgYSBzaW5nbGUKICAgICAqIGxpbmUgaW4ge0BzZWUgJGxpbmVzfS4KICAgICAqLwogICAgcHJpdmF0ZSByZWFkb25seSBpbnQgJG1heE11bHRpbGluZVNwYW5zOwoKICAgIC8qKgogICAgICogV2hldGhlciB7QHNlZSAkbGluZXN9IGluY2x1ZGVzIGxpbmVzIGZyb20gbXVsdGlwbGUgZGlmZmVyZW50IGZpbGVzLgogICAgICovCiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2wgJG11bHRpcGxlRmlsZXM7CgogICAgLyoqCiAgICAgKiBUaGUgYnVmZmVyIHRvIHdoaWNoIHRvIHdyaXRlIHRoZSByZXN1bHQuCiAgICAgKi8KICAgIHByaXZhdGUgc3RyaW5nICRidWZmZXIgPSAnJzsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSB7QHNlZSBIaWdobGlnaHRlcn0gdGhhdCB3aWxsIHJldHVybiBhIHN0cmluZyBoaWdobGlnaHRpbmcgJHNwYW4KICAgICAqIHdpdGhpbiB0aGUgdGV4dCBvZiBpdHMgZmlsZSB3aGVuIHtAc2VlIGhpZ2hsaWdodH0gaXMgY2FsbGVkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZShTb3VyY2VTcGFuICRzcGFuKTogSGlnaGxpZ2h0ZXIKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEhpZ2hsaWdodGVyKHNlbGY6OmNvbGxhdGVMaW5lcyhbbmV3IEhpZ2hsaWdodCgkc3BhbiwgcHJpbWFyeTogdHJ1ZSldKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEge0BzZWUgSGlnaGxpZ2h0ZXJ9IHRoYXQgd2lsbCByZXR1cm4gYSBzdHJpbmcgaGlnaGxpZ2h0aW5nCiAgICAgKiAkcHJpbWFyeVNwYW4gYXMgd2VsbCBhcyBhbGwgdGhlIHNwYW5zIGluICRzZWNvbmRhcnlTcGFucyB3aXRoaW4gdGhlIHRleHQKICAgICAqIG9mIHRoZWlyIGZpbGUgd2hlbiB7QHNlZSBoaWdobGlnaHR9IGlzIGNhbGxlZC4KICAgICAqCiAgICAgKiBFYWNoIHNwYW4gaGFzIGFuIGFzc29jaWF0ZWQgbGFiZWwgdGhhdCB3aWxsIGJlIHdyaXR0ZW4gYWxvbmdzaWRlIGl0LiBGb3IKICAgICAqICRwcmltYXJ5U3BhbiB0aGlzIG1lc3NhZ2UgaXMgJHByaW1hcnlMYWJlbCwgYW5kIGZvciAkc2Vjb25kYXJ5U3BhbnMgdGhlCiAgICAgKiBsYWJlbHMgYXJlIHRoZSBtYXAga2V5cy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBTb3VyY2VTcGFuPiAkc2Vjb25kYXJ5U3BhbnMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtdWx0aXBsZShTb3VyY2VTcGFuICRwcmltYXJ5U3Bhbiwgc3RyaW5nICRwcmltYXJ5TGFiZWwsIGFycmF5ICRzZWNvbmRhcnlTcGFucyk6IEhpZ2hsaWdodGVyCiAgICB7CiAgICAgICAgJGhpZ2hsaWdodHMgPSBbbmV3IEhpZ2hsaWdodCgkcHJpbWFyeVNwYW4sIHByaW1hcnk6IHRydWUsIGxhYmVsOiAkcHJpbWFyeUxhYmVsKV07CiAgICAgICAgZm9yZWFjaCAoJHNlY29uZGFyeVNwYW5zIGFzICRzZWNvbmRhcnlMYWJlbCA9PiAkc2Vjb25kYXJ5U3BhbikgewogICAgICAgICAgICAkaGlnaGxpZ2h0c1tdID0gbmV3IEhpZ2hsaWdodCgkc2Vjb25kYXJ5U3BhbiwgbGFiZWw6ICRzZWNvbmRhcnlMYWJlbCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEhpZ2hsaWdodGVyKHNlbGY6OmNvbGxhdGVMaW5lcygkaGlnaGxpZ2h0cykpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGxpc3Q8TGluZT4gJGxpbmVzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGxpbmVzKQogICAgewogICAgICAgICR0aGlzLT5saW5lcyA9ICRsaW5lczsKICAgICAgICAkdGhpcy0+cGFkZGluZ0JlZm9yZVNpZGViYXIgPSAxICsgbWF4KAogICAgICAgICAgICBcc3RybGVuKChzdHJpbmcpIChVdGlsOjpsaXN0TGFzdCgkbGluZXMpLT5udW1iZXIgKyAxKSksCiAgICAgICAgICAgIC8vIElmICRsaW5lcyBhcmVuJ3QgY29udGlndW91cywgd2UnbGwgd3JpdGUgIi4uLiIgaW4gcGxhY2Ugb2YgYQogICAgICAgICAgICAvLyBsaW5lIG51bWJlci4KICAgICAgICAgICAgc2VsZjo6Y29udGlndW91cygkbGluZXMpID8gMCA6IDMKICAgICAgICApOwogICAgICAgICR0aGlzLT5tYXhNdWx0aWxpbmVTcGFucyA9IGFycmF5X3JlZHVjZShhcnJheV9tYXAoZm4gKExpbmUgJGxpbmUpID0+IFxjb3VudChhcnJheV9maWx0ZXIoJGxpbmUtPmhpZ2hsaWdodHMsIGZuIChIaWdobGlnaHQgJGhpZ2hsaWdodCkgPT4gVXRpbDo6aXNNdWx0aWxpbmUoJGhpZ2hsaWdodC0+c3BhbikpKSwgJGxpbmVzKSwgJ21heCcsIDApOwogICAgICAgICR0aGlzLT5tdWx0aXBsZUZpbGVzID0gIVV0aWw6OmlzQWxsVGhlU2FtZShhcnJheV9tYXAoZm4gKExpbmUgJGxpbmUpID0+ICRsaW5lLT51cmwsICRsaW5lcykpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyICRsaW5lcyBjb250YWlucyBhbnkgYWRqYWNlbnQgbGluZXMgZnJvbSB0aGUgc2FtZSBzb3VyY2UKICAgICAqIGZpbGUgdGhhdCBhcmVuJ3QgYWRqYWNlbnQgaW4gdGhlIG9yaWdpbmFsIGZpbGUuCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8TGluZT4gJGxpbmVzCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnRpZ3VvdXMoYXJyYXkgJGxpbmVzKTogYm9vbAogICAgewogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IFxjb3VudCgkbGluZXMpIC0gMTsgJGkrKykgewogICAgICAgICAgICAkdGhpc0xpbmUgPSAkbGluZXNbJGldOwogICAgICAgICAgICAkbmV4dExpbmUgPSAkbGluZXNbJGkgKyAxXTsKCiAgICAgICAgICAgIGlmICgkdGhpc0xpbmUtPm51bWJlciArIDEgIT09ICRuZXh0TGluZS0+bnVtYmVyICYmIFV0aWw6OmlzU2FtZSgkdGhpc0xpbmUtPnVybCwgJG5leHRMaW5lLT51cmwpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ29sbGVjdCBhbGwgdGhlIHNvdXJjZSBsaW5lcyBmcm9tIHRoZSBjb250ZXh0cyBvZiBhbGwgc3BhbnMgaW4KICAgICAqICRoaWdobGlnaHRzLCBhbmQgYXNzb2NpYXRlcyB0aGVtIHdpdGggdGhlIGhpZ2hsaWdodHMgdGhhdCBjb3ZlciB0aGVtLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PEhpZ2hsaWdodD4gJGhpZ2hsaWdodHMKICAgICAqIEByZXR1cm4gbGlzdDxMaW5lPgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb2xsYXRlTGluZXMoYXJyYXkgJGhpZ2hsaWdodHMpOiBhcnJheQogICAgewogICAgICAgIC8vIEFzc2lnbiBzcGFucyB3aXRob3V0IFVSTHMgb3BhcXVlIHN0cmluZ3MgYXMga2V5cy4gRWFjaCBzdWNoIHN0cmluZyB3aWxsCiAgICAgICAgLy8gYmUgZGlmZmVyZW50LCBidXQgdGhleSBjYW4gdGhlbiBiZSB1c2VkIGxhdGVyIG9uIHRvIGRldGVybWluZSB3aGljaCBsaW5lcwogICAgICAgIC8vIGNhbWUgZnJvbSB0aGUgc2FtZSBzcGFuIGV2ZW4gaWYgdGhleSdkIGFsbCBvdGhlcndpc2UgaGF2ZSBgbnVsbGAgVVJMcy4KICAgICAgICAkaGlnaGxpZ2h0c0J5VXJsID0gW107CiAgICAgICAgJHVybHMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkaGlnaGxpZ2h0cyBhcyAkaGlnaGxpZ2h0KSB7CiAgICAgICAgICAgICR1cmwgPSAkaGlnaGxpZ2h0LT5zcGFuLT5nZXRTb3VyY2VVcmwoKSA/PyBuZXcgXHN0ZENsYXNzKCk7CiAgICAgICAgICAgICRrZXkgPSAkdXJsIGluc3RhbmNlb2YgVXJpSW50ZXJmYWNlID8gJHVybC0+dG9TdHJpbmcoKSA6IHNwbF9vYmplY3RfaGFzaCgkdXJsKTsKICAgICAgICAgICAgJGhpZ2hsaWdodHNCeVVybFska2V5XVtdID0gJGhpZ2hsaWdodDsKICAgICAgICAgICAgJHVybHNbJGtleV0gPSAkdXJsOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGhpZ2hsaWdodHNCeVVybCBhcyAmJGxpc3QpIHsKICAgICAgICAgICAgdXNvcnQoJGxpc3QsIGZuIChIaWdobGlnaHQgJGhpZ2hsaWdodDEsIEhpZ2hsaWdodCAkaGlnaGxpZ2h0MikgPT4gJGhpZ2hsaWdodDEtPnNwYW4tPmNvbXBhcmVUbygkaGlnaGxpZ2h0Mi0+c3BhbikpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3RvX2FycmF5KHNlbGY6OmV4cGFuZE1hcEl0ZXJhYmxlKCRoaWdobGlnaHRzQnlVcmwsIGZ1bmN0aW9uIChhcnJheSAkaGlnaGxpZ2h0c0ZvckZpbGUsIHN0cmluZyAkdXJsS2V5KSB1c2UgKCR1cmxzKSB7CiAgICAgICAgICAgIC8vIEZpcnN0LCBjcmVhdGUgYSBsaXN0IG9mIGFsbCB0aGUgbGluZXMgaW4gdGhlIGN1cnJlbnQgZmlsZSB0aGF0IHdlIGhhdmUKICAgICAgICAgICAgLy8gY29udGV4dCBmb3IgYWxvbmcgd2l0aCB0aGVpciBsaW5lIG51bWJlcnMuCiAgICAgICAgICAgICRsaW5lcyA9IFtdOwoKICAgICAgICAgICAgLyoqIEB2YXIgSGlnaGxpZ2h0ICRoaWdobGlnaHQgKi8KICAgICAgICAgICAgZm9yZWFjaCAoJGhpZ2hsaWdodHNGb3JGaWxlIGFzICRoaWdobGlnaHQpIHsKICAgICAgICAgICAgICAgICRjb250ZXh0ID0gJGhpZ2hsaWdodC0+c3Bhbi0+Z2V0Q29udGV4dCgpOwogICAgICAgICAgICAgICAgLy8gSWYgYCRoaWdobGlnaHQtPnNwYW4tPmdldENvbnRleHQoKWAgY29udGFpbnMgbGluZXMgcHJpb3IgdG8gdGhlIG9uZQogICAgICAgICAgICAgICAgLy8gYCRoaWdobGlnaHQtPnNwYW4tPmdldFRleHQoKWAgYXBwZWFycyBvbiwgd3JpdGUgdGhvc2UgZmlyc3QuCiAgICAgICAgICAgICAgICAkbGluZVN0YXJ0ID0gVXRpbDo6ZmluZExpbmVTdGFydCgkY29udGV4dCwgJGhpZ2hsaWdodC0+c3Bhbi0+Z2V0VGV4dCgpLCAkaGlnaGxpZ2h0LT5zcGFuLT5nZXRTdGFydCgpLT5nZXRDb2x1bW4oKSk7CiAgICAgICAgICAgICAgICBcYXNzZXJ0KCRsaW5lU3RhcnQgIT09IG51bGwpOwogICAgICAgICAgICAgICAgJGxpbmVzQmVmb3JlU3BhbiA9IHN1YnN0cl9jb3VudChzdWJzdHIoJGNvbnRleHQsIDAsICRsaW5lU3RhcnQpLCAiXG4iKTsKCiAgICAgICAgICAgICAgICAkbGluZU51bWJlciA9ICRoaWdobGlnaHQtPnNwYW4tPmdldFN0YXJ0KCktPmdldExpbmUoKSAtICRsaW5lc0JlZm9yZVNwYW47CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgiXG4iLCAkY29udGV4dCkgYXMgJGxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGFkZCBhIGxpbmUgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBhZGRlZCBmb3IgYSBwcmV2aW91cyBzcGFuCiAgICAgICAgICAgICAgICAgICAgaWYgKCRsaW5lcyA9PT0gW10gfHwgJGxpbmVOdW1iZXIgPiBVdGlsOjpsaXN0TGFzdCgkbGluZXMpLT5udW1iZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVzW10gPSBuZXcgTGluZSgkbGluZSwgJGxpbmVOdW1iZXIsICR1cmxzWyR1cmxLZXldKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGxpbmVOdW1iZXIrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gTmV4dCwgYXNzb2NpYXRlIGVhY2ggbGluZSB3aXRoIGVhY2ggaGlnaGxpZ2h0IHRoYXQgY292ZXJzIGl0LgogICAgICAgICAgICAkYWN0aXZlSGlnaGxpZ2h0cyA9IFtdOwogICAgICAgICAgICAkaGlnaGxpZ2h0SW5kZXggPSAwOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lKSB7CiAgICAgICAgICAgICAgICAkYWN0aXZlSGlnaGxpZ2h0cyA9IGFycmF5X3ZhbHVlcyhhcnJheV9maWx0ZXIoJGFjdGl2ZUhpZ2hsaWdodHMsIGZuIChIaWdobGlnaHQgJGhpZ2hsaWdodCkgPT4gJGhpZ2hsaWdodC0+c3Bhbi0+Z2V0RW5kKCktPmdldExpbmUoKSA+PSAkbGluZS0+bnVtYmVyKSk7CgogICAgICAgICAgICAgICAgJG9sZEhpZ2hsaWdodExlbmd0aCA9IFxjb3VudCgkYWN0aXZlSGlnaGxpZ2h0cyk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXlfc2xpY2UoJGhpZ2hsaWdodHNGb3JGaWxlLCAkaGlnaGxpZ2h0SW5kZXgpIGFzICRoaWdobGlnaHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGhpZ2hsaWdodC0+c3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0TGluZSgpID4gJGxpbmUtPm51bWJlcikgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGFjdGl2ZUhpZ2hsaWdodHNbXSA9ICRoaWdobGlnaHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGhpZ2hsaWdodEluZGV4ICs9IFxjb3VudCgkYWN0aXZlSGlnaGxpZ2h0cykgLSAkb2xkSGlnaGxpZ2h0TGVuZ3RoOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRhY3RpdmVIaWdobGlnaHRzIGFzICRhY3RpdmVIaWdobGlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAkbGluZS0+aGlnaGxpZ2h0c1tdID0gJGFjdGl2ZUhpZ2hsaWdodDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRsaW5lczsKICAgICAgICB9KSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaGlnaGxpZ2h0ZWQgc3BhbiB0ZXh0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlnaGxpZ2h0KCk6IHN0cmluZwogICAgewogICAgICAgICR0aGlzLT53cml0ZUZpbGVTdGFydCgkdGhpcy0+bGluZXNbMF0tPnVybCk7CgogICAgICAgIC8vIEVhY2ggaW5kZXggb2YgdGhpcyBsaXN0IHJlcHJlc2VudHMgYSBjb2x1bW4gYWZ0ZXIgdGhlIHNpZGViYXIgdGhhdCBjb3VsZAogICAgICAgIC8vIGNvbnRhaW4gYSBsaW5lIGluZGljYXRpbmcgYW4gYWN0aXZlIGhpZ2hsaWdodC4gSWYgaXQncyBgbnVsbGAsIHRoYXQKICAgICAgICAvLyBjb2x1bW4gaXMgZW1wdHk7IGlmIGl0IGNvbnRhaW5zIGEgaGlnaGxpZ2h0LCBpdCBzaG91bGQgYmUgZHJhd24gZm9yIHRoYXQKICAgICAgICAvLyBjb2x1bW4uCiAgICAgICAgJGhpZ2hsaWdodHNCeUNvbHVtbiA9IGFycmF5X2ZpbGwoMCwgJHRoaXMtPm1heE11bHRpbGluZVNwYW5zLCBudWxsKTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmxpbmVzIGFzICRpID0+ICRsaW5lKSB7CiAgICAgICAgICAgIGlmICgkaSA+IDApIHsKICAgICAgICAgICAgICAgICRsYXN0TGluZSA9ICR0aGlzLT5saW5lc1skaSAtIDFdOwoKICAgICAgICAgICAgICAgIGlmICghVXRpbDo6aXNTYW1lKCRsYXN0TGluZS0+dXJsLCAkbGluZS0+dXJsKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZVNpZGViYXIoZW5kOiBBc2NpaUdseXBoOjp1cEVuZCk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSAiXG4iOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUZpbGVTdGFydCgkbGluZS0+dXJsKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkbGFzdExpbmUtPm51bWJlciArIDEgIT09ICRsaW5lLT5udW1iZXIpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVTaWRlYmFyKHRleHQ6ICcuLi4nKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICJcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIGEgaGlnaGxpZ2h0IGNvdmVycyB0aGUgZW50aXJlIGZpcnN0IGxpbmUgb3RoZXIgdGhhbiBpbml0aWFsCiAgICAgICAgICAgIC8vIHdoaXRlc3BhY2UsIGRvbid0IGJvdGhlciBwb2ludGluZyBvdXQgZXhhY3RseSB3aGVyZSBpdCBiZWdpbnMuIEl0ZXJhdGUKICAgICAgICAgICAgLy8gaW4gcmV2ZXJzZSBzbyB0aGF0IGxvbmdlciBoaWdobGlnaHRzICh3aGljaCBhcmUgc29ydGVkIGFmdGVyIHNob3J0ZXIKICAgICAgICAgICAgLy8gaGlnaGxpZ2h0cykgYXBwZWFyIGZ1cnRoZXIgb3V0LCBsZWFkaW5nIHRvIGZld2VyIGNyb3NzZWQgbGluZXMuCiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJGxpbmUtPmhpZ2hsaWdodHMpIGFzICRoaWdobGlnaHQpIHsKICAgICAgICAgICAgICAgIGlmIChVdGlsOjppc011bHRpbGluZSgkaGlnaGxpZ2h0LT5zcGFuKSAmJiAkaGlnaGxpZ2h0LT5zcGFuLT5nZXRTdGFydCgpLT5nZXRMaW5lKCkgPT09ICRsaW5lLT5udW1iZXIgJiYgJHRoaXMtPmlzT25seVdoaXRlc3BhY2Uoc3Vic3RyKCRsaW5lLT50ZXh0LCAwLCAkaGlnaGxpZ2h0LT5zcGFuLT5nZXRTdGFydCgpLT5nZXRDb2x1bW4oKSkpKSB7CiAgICAgICAgICAgICAgICAgICAgVXRpbDo6cmVwbGFjZUZpcnN0TnVsbCgkaGlnaGxpZ2h0c0J5Q29sdW1uLCAkaGlnaGxpZ2h0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndyaXRlU2lkZWJhcihsaW5lOiAkbGluZS0+bnVtYmVyKTsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSAnICc7CiAgICAgICAgICAgICR0aGlzLT53cml0ZU11bHRpbGluZUhpZ2hsaWdodHMoJGxpbmUsICRoaWdobGlnaHRzQnlDb2x1bW4pOwoKICAgICAgICAgICAgaWYgKCRoaWdobGlnaHRzQnlDb2x1bW4gIT09IFtdKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICcgJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcHJpbWFyeUlkeCA9IFV0aWw6OmluZGV4V2hlcmUoJGxpbmUtPmhpZ2hsaWdodHMsIGZuIChIaWdobGlnaHQgJGhpZ2hsaWdodCkgPT4gJGhpZ2hsaWdodC0+aXNQcmltYXJ5KCkpOwogICAgICAgICAgICAkcHJpbWFyeSA9ICRwcmltYXJ5SWR4ID09PSBudWxsID8gbnVsbCA6ICRsaW5lLT5oaWdobGlnaHRzWyRwcmltYXJ5SWR4XTsKCiAgICAgICAgICAgICR0aGlzLT53cml0ZVRleHQoJGxpbmUtPnRleHQpOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICJcbiI7CgogICAgICAgICAgICAvLyBBbHdheXMgd3JpdGUgdGhlIHByaW1hcnkgc3BhbidzIGluZGljYXRvciBmaXJzdCBzbyB0aGF0IGl0J3MgcmlnaHQgbmV4dAogICAgICAgICAgICAvLyB0byB0aGUgaGlnaGxpZ2h0ZWQgdGV4dC4KICAgICAgICAgICAgaWYgKCRwcmltYXJ5ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVJbmRpY2F0b3IoJGxpbmUsICRwcmltYXJ5LCAkaGlnaGxpZ2h0c0J5Q29sdW1uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yZWFjaCAoJGxpbmUtPmhpZ2hsaWdodHMgYXMgJGhpZ2hsaWdodCkgewogICAgICAgICAgICAgICAgaWYgKCRoaWdobGlnaHQtPmlzUHJpbWFyeSgpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVJbmRpY2F0b3IoJGxpbmUsICRoaWdobGlnaHQsICRoaWdobGlnaHRzQnlDb2x1bW4pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d3JpdGVTaWRlYmFyKGVuZDogQXNjaWlHbHlwaDo6dXBFbmQpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmJ1ZmZlcjsKICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGhpZ2hsaWdodCBmb3IgdGhlIGZpbGUgd2l0aCB0aGUgZ2l2ZW4KICAgICAqICR1cmwgKG9yIG9wYXF1ZSBvYmplY3QgaWYgaXQgY29tZXMgZnJvbSBhIHNwYW4gd2l0aCBhIG51bGwgVVJMKS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZUZpbGVTdGFydChvYmplY3QgJHVybCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5tdWx0aXBsZUZpbGVzIHx8ICEkdXJsIGluc3RhbmNlb2YgVXJpSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZVNpZGViYXIoZW5kOiBBc2NpaUdseXBoOjpkb3duRW5kKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+d3JpdGVTaWRlYmFyKGVuZDogQXNjaWlHbHlwaDo6dG9wTGVmdENvcm5lcik7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gc3RyX3JlcGVhdChBc2NpaUdseXBoOjpob3Jpem9udGFsTGluZSwgMikgLiAnPiAnOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49IFV0aWw6OnByZXR0eVVyaSgkdXJsKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5idWZmZXIgLj0gIlxuIjsKICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyB0aGUgcG9zdC1zaWRlYmFyIGhpZ2hsaWdodCBiYXJzIGZvciAkbGluZSBhY2NvcmRpbmcgdG8KICAgICAqICRoaWdobGlnaHRzQnlDb2x1bW4uCiAgICAgKgogICAgICogSWYgJGN1cnJlbnQgaXMgcGFzc2VkLCBpdCdzIHRoZSBoaWdobGlnaHQgZm9yIHdoaWNoIGFuIGluZGljYXRvciBpcyBiZWluZwogICAgICogd3JpdHRlbi4gSWYgaXQgYXBwZWFycyBpbiAkaGlnaGxpZ2h0c0J5Q29sdW1uLCBhIGhvcml6b250YWwgbGluZSBpcwogICAgICogd3JpdHRlbiBmcm9tIGl0cyBjb2x1bW4gdG8gdGhlIHJpZ2h0bW9zdCBjb2x1bW4uCiAgICAgKgogICAgICogQHBhcmFtIGxpc3Q8SGlnaGxpZ2h0fG51bGw+ICRoaWdobGlnaHRzQnlDb2x1bW4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZU11bHRpbGluZUhpZ2hsaWdodHMoTGluZSAkbGluZSwgYXJyYXkgJGhpZ2hsaWdodHNCeUNvbHVtbiwgP0hpZ2hsaWdodCAkY3VycmVudCA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgLy8gV2hldGhlciB3ZSd2ZSB3cml0dGVuIGEgc2lkZWJhciBpbmRpY2F0b3IgZm9yIG9wZW5pbmcgYSBuZXcgc3BhbiBvbiB0aGlzCiAgICAgICAgLy8gbGluZS4KICAgICAgICAkb3BlbmVkT25UaGlzTGluZSA9IGZhbHNlOwogICAgICAgICRmb3VuZEN1cnJlbnQgPSBmYWxzZTsKCiAgICAgICAgZm9yZWFjaCAoJGhpZ2hsaWdodHNCeUNvbHVtbiBhcyAkaGlnaGxpZ2h0KSB7CiAgICAgICAgICAgICRzdGFydExpbmUgPSAkaGlnaGxpZ2h0Py0+c3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0TGluZSgpOwogICAgICAgICAgICAkZW5kTGluZSA9ICRoaWdobGlnaHQ/LT5zcGFuLT5nZXRFbmQoKS0+Z2V0TGluZSgpOwoKICAgICAgICAgICAgaWYgKCRjdXJyZW50ICE9PSBudWxsICYmICRoaWdobGlnaHQgPT09ICRjdXJyZW50KSB7CiAgICAgICAgICAgICAgICAkZm91bmRDdXJyZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIFxhc3NlcnQoJHN0YXJ0TGluZSA9PT0gJGxpbmUtPm51bWJlciB8fCAkZW5kTGluZSA9PT0gJGxpbmUtPm51bWJlcik7CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICRzdGFydExpbmUgPT09ICRsaW5lLT5udW1iZXIgPyBBc2NpaUdseXBoOjp0b3BMZWZ0Q29ybmVyIDogQXNjaWlHbHlwaDo6Ym90dG9tTGVmdENvcm5lcjsKICAgICAgICAgICAgfSBlbHNlaWYgKCRmb3VuZEN1cnJlbnQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gJGhpZ2hsaWdodCA9PT0gbnVsbCA/IEFzY2lpR2x5cGg6Omhvcml6b250YWxMaW5lIDogQXNjaWlHbHlwaDo6Y3Jvc3M7CiAgICAgICAgICAgIH0gZWxzZWlmICgkaGlnaGxpZ2h0ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICBpZiAoJG9wZW5lZE9uVGhpc0xpbmUpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49IEFzY2lpR2x5cGg6Omhvcml6b250YWxMaW5lOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICcgJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR2ZXJ0aWNhbCA9ICRvcGVuZWRPblRoaXNMaW5lID8gQXNjaWlHbHlwaDo6Y3Jvc3MgOiBBc2NpaUdseXBoOjp2ZXJ0aWNhbExpbmU7CgogICAgICAgICAgICAgICAgaWYgKCRjdXJyZW50ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSAkdmVydGljYWw7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHN0YXJ0TGluZSA9PT0gJGxpbmUtPm51bWJlcikgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gJy8nOwogICAgICAgICAgICAgICAgICAgICRvcGVuZWRPblRoaXNMaW5lID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZW5kTGluZSA9PT0gJGxpbmUtPm51bWJlciAmJiAkaGlnaGxpZ2h0LT5zcGFuLT5nZXRFbmQoKS0+Z2V0Q29sdW1uKCkgPT09IFxzdHJsZW4oJGxpbmUtPnRleHQpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSAkaGlnaGxpZ2h0LT5sYWJlbCA9PT0gbnVsbCA/ICdcXCcgOiAkdmVydGljYWw7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gJHZlcnRpY2FsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogV3JpdGVzIGFuIGluZGljYXRvciBmb3Igd2hlcmUgJGhpZ2hsaWdodCBzdGFydHMsIGVuZHMsIG9yIGJvdGggYmVsb3cKICAgICAqICRsaW5lLgogICAgICoKICAgICAqIFRoaXMgbWF5IGVpdGhlciBhZGQgb3IgcmVtb3ZlICRoaWdobGlnaHQgZnJvbSAkaGlnaGxpZ2h0c0J5Q29sdW1uLgogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PEhpZ2hsaWdodHxudWxsPiAkaGlnaGxpZ2h0c0J5Q29sdW1uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd3JpdGVJbmRpY2F0b3IoTGluZSAkbGluZSwgSGlnaGxpZ2h0ICRoaWdobGlnaHQsIGFycmF5ICYkaGlnaGxpZ2h0c0J5Q29sdW1uKTogdm9pZAogICAgewogICAgICAgIGlmICghVXRpbDo6aXNNdWx0aWxpbmUoJGhpZ2hsaWdodC0+c3BhbikpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlU2lkZWJhcigpOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICcgJzsKICAgICAgICAgICAgJHRoaXMtPndyaXRlTXVsdGlsaW5lSGlnaGxpZ2h0cygkbGluZSwgJGhpZ2hsaWdodHNCeUNvbHVtbiwgJGhpZ2hsaWdodCk7CgogICAgICAgICAgICBpZiAoJGhpZ2hsaWdodHNCeUNvbHVtbiAhPT0gW10pIHsKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gJyAnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc3RhcnQgPSBcc3RybGVuKCR0aGlzLT5idWZmZXIpOwogICAgICAgICAgICAkdGhpcy0+d3JpdGVVbmRlcmxpbmUoJGxpbmUsICRoaWdobGlnaHQtPnNwYW4sICRoaWdobGlnaHQtPmlzUHJpbWFyeSgpID8gJ14nIDogQXNjaWlHbHlwaDo6aG9yaXpvbnRhbExpbmVCb2xkKTsKICAgICAgICAgICAgJHVuZGVybGluZUxlbmd0aCA9IFxzdHJsZW4oJHRoaXMtPmJ1ZmZlcikgLSAkc3RhcnQ7CiAgICAgICAgICAgICR0aGlzLT53cml0ZUxhYmVsKCRoaWdobGlnaHQsICRoaWdobGlnaHRzQnlDb2x1bW4sICR1bmRlcmxpbmVMZW5ndGgpOwogICAgICAgIH0gZWxzZWlmICgkaGlnaGxpZ2h0LT5zcGFuLT5nZXRTdGFydCgpLT5nZXRMaW5lKCkgPT09ICRsaW5lLT5udW1iZXIpIHsKICAgICAgICAgICAgaWYgKFxpbl9hcnJheSgkaGlnaGxpZ2h0LCAkaGlnaGxpZ2h0c0J5Q29sdW1uLCB0cnVlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBVdGlsOjpyZXBsYWNlRmlyc3ROdWxsKCRoaWdobGlnaHRzQnlDb2x1bW4sICRoaWdobGlnaHQpOwoKICAgICAgICAgICAgJHRoaXMtPndyaXRlU2lkZWJhcigpOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICcgJzsKICAgICAgICAgICAgJHRoaXMtPndyaXRlTXVsdGlsaW5lSGlnaGxpZ2h0cygkbGluZSwgJGhpZ2hsaWdodHNCeUNvbHVtbiwgJGhpZ2hsaWdodCk7CiAgICAgICAgICAgICR0aGlzLT53cml0ZUFycm93KCRsaW5lLCAkaGlnaGxpZ2h0LT5zcGFuLT5nZXRTdGFydCgpLT5nZXRDb2x1bW4oKSk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gIlxuIjsKICAgICAgICB9IGVsc2VpZiAoJGhpZ2hsaWdodC0+c3Bhbi0+Z2V0RW5kKCktPmdldExpbmUoKSA9PT0gJGxpbmUtPm51bWJlcikgewogICAgICAgICAgICAkY292ZXJzV2hvbGVMaW5lID0gJGhpZ2hsaWdodC0+c3Bhbi0+Z2V0RW5kKCktPmdldENvbHVtbigpID09PSBcc3RybGVuKCRsaW5lLT50ZXh0KTsKICAgICAgICAgICAgaWYgKCRjb3ZlcnNXaG9sZUxpbmUgJiYgJGhpZ2hsaWdodC0+bGFiZWwgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIFV0aWw6OnJlcGxhY2VXaXRoTnVsbCgkaGlnaGxpZ2h0c0J5Q29sdW1uLCAkaGlnaGxpZ2h0KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndyaXRlU2lkZWJhcigpOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICcgJzsKICAgICAgICAgICAgJHRoaXMtPndyaXRlTXVsdGlsaW5lSGlnaGxpZ2h0cygkbGluZSwgJGhpZ2hsaWdodHNCeUNvbHVtbiwgJGhpZ2hsaWdodCk7CgogICAgICAgICAgICAkc3RhcnQgPSBcc3RybGVuKCR0aGlzLT5idWZmZXIpOwogICAgICAgICAgICBpZiAoJGNvdmVyc1dob2xlTGluZSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSBzdHJfcmVwZWF0KEFzY2lpR2x5cGg6Omhvcml6b250YWxMaW5lLCAzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZUFycm93KCRsaW5lLCBtYXgoJGhpZ2hsaWdodC0+c3Bhbi0+Z2V0RW5kKCktPmdldENvbHVtbigpIC0gMSwgMCksIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdW5kZXJsaW5lTGVuZ3RoID0gXHN0cmxlbigkdGhpcy0+YnVmZmVyKSAtICRzdGFydDsKICAgICAgICAgICAgJHRoaXMtPndyaXRlTGFiZWwoJGhpZ2hsaWdodCwgJGhpZ2hsaWdodHNCeUNvbHVtbiwgJHVuZGVybGluZUxlbmd0aCk7CiAgICAgICAgICAgIFV0aWw6OnJlcGxhY2VXaXRoTnVsbCgkaGlnaGxpZ2h0c0J5Q29sdW1uLCAkaGlnaGxpZ2h0KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBVbmRlcmxpbmVzIHRoZSBwb3J0aW9uIG9mICRsaW5lIGNvdmVyZWQgYnkgJHNwYW4gd2l0aCByZXBlYXRlZCBpbnN0YW5jZXMKICAgICAqIG9mICRjaGFyYWN0ZXIuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd3JpdGVVbmRlcmxpbmUoTGluZSAkbGluZSwgU291cmNlU3BhbiAkc3Bhbiwgc3RyaW5nICRjaGFyYWN0ZXIpOiB2b2lkCiAgICB7CiAgICAgICAgXGFzc2VydCghVXRpbDo6aXNNdWx0aWxpbmUoJHNwYW4pKTsKICAgICAgICBcYXNzZXJ0KHN0cl9jb250YWlucygkbGluZS0+dGV4dCwgJHNwYW4tPmdldFRleHQoKSkpOwoKICAgICAgICAkc3RhcnRDb2x1bW4gPSAkc3Bhbi0+Z2V0U3RhcnQoKS0+Z2V0Q29sdW1uKCk7CiAgICAgICAgJGVuZENvbHVtbiA9ICRzcGFuLT5nZXRFbmQoKS0+Z2V0Q29sdW1uKCk7CgogICAgICAgIC8vIEFkanVzdCB0aGUgc3RhcnQgYW5kIGVuZCBjb2x1bW5zIHRvIGFjY291bnQgZm9yIGFueSB0YWJzIHRoYXQgd2VyZQogICAgICAgIC8vIGNvbnZlcnRlZCB0byBzcGFjZXMuCiAgICAgICAgJHRhYnNCZWZvcmUgPSBzdWJzdHJfY291bnQoc3Vic3RyKCRsaW5lLT50ZXh0LCAwLCAkc3RhcnRDb2x1bW4pLCAiXHQiKTsKICAgICAgICAkdGFic0luc2lkZSA9IHN1YnN0cl9jb3VudChVdGlsOjpzdWJzdHJpbmcoJGxpbmUtPnRleHQsICRzdGFydENvbHVtbiwgJGVuZENvbHVtbiksICJcdCIpOwoKICAgICAgICAkc3RhcnRDb2x1bW4gKz0gJHRhYnNCZWZvcmUgKiAoc2VsZjo6U1BBQ0VTX1BFUl9UQUIgLSAxKTsKICAgICAgICAkZW5kQ29sdW1uICs9ICgkdGFic0JlZm9yZSArICR0YWJzSW5zaWRlKSAqIChzZWxmOjpTUEFDRVNfUEVSX1RBQiAtIDEpOwoKICAgICAgICAkdGhpcy0+YnVmZmVyIC49IHN0cl9yZXBlYXQoJyAnLCAkc3RhcnRDb2x1bW4pOwogICAgICAgICR0aGlzLT5idWZmZXIgLj0gc3RyX3JlcGVhdCgkY2hhcmFjdGVyLCBtYXgoJGVuZENvbHVtbiAtICRzdGFydENvbHVtbiwgMSkpOwogICAgfQoKICAgIC8qKgogICAgICogV3JpdGUgYW4gYXJyb3cgcG9pbnRpbmcgdG8gY29sdW1uICRjb2x1bW4gaW4gJGxpbmUuCiAgICAgKgogICAgICogSWYgdGhlIGFycm93IHBvaW50cyB0byBhIHRhYiBjaGFyYWN0ZXIsIHRoaXMgd2lsbCBwb2ludCB0byB0aGUgYmVnaW5uaW5nCiAgICAgKiBvZiB0aGUgdGFiIGlmICRiZWdpbm5pbmcgaXMgYHRydWVgIGFuZCB0aGUgZW5kIGlmIGl0J3MgYGZhbHNlYC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3cml0ZUFycm93KExpbmUgJGxpbmUsIGludCAkY29sdW1uLCBib29sICRiZWdpbm5pbmcgPSB0cnVlKTogdm9pZAogICAgewogICAgICAgICR0YWJzID0gc3Vic3RyX2NvdW50KHN1YnN0cigkbGluZS0+dGV4dCwgMCwgJGNvbHVtbiArICgkYmVnaW5uaW5nID8gMCA6IDEpKSwgIlx0Iik7CgogICAgICAgICR0aGlzLT5idWZmZXIgLj0gc3RyX3JlcGVhdChBc2NpaUdseXBoOjpob3Jpem9udGFsTGluZSwgMSArICRjb2x1bW4gKyAkdGFicyAqIChzZWxmOjpTUEFDRVNfUEVSX1RBQiAtIDEpKTsKICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICdeJzsKICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyAkaGlnaGxpZ2h0J3MgbGFiZWwuCiAgICAgKgogICAgICogVGhlIHtAc2VlICRidWZmZXJ9IGlzIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGZpcnN0IGxpbmUKICAgICAqIG9mIGAkaGlnaGxpZ2h0LT5sYWJlbGAgY2FuIGJlIHdyaXR0ZW4gYWZ0ZXIgYSBzcGFjZSwgYnV0IHRoaXMgdGFrZXMgY2FyZSBvZgogICAgICogd3JpdGluZyBpbmRlbnRhdGlvbiBhbmQgaGlnaGxpZ2h0IGNvbHVtbnMgZm9yIGxhdGVyIGxpbmVzLgogICAgICoKICAgICAqIFRoZSAkaGlnaGxpZ2h0c0J5Q29sdW1uIGFyZSB1c2VkIHRvIHdyaXRlIG9uZ29pbmcgaGlnaGxpZ2h0IGxpbmVzIGlmIHRoZQogICAgICogbGFiZWwgaXMgbW9yZSB0aGFuIG9uZSBsaW5lIGxvbmcuCiAgICAgKgogICAgICogVGhlICR1bmRlcmxpbmVMZW5ndGggaXMgdGhlIGxlbmd0aCBvZiB0aGUgbGluZSB3cml0dGVuIGJldHdlZW4gdGhlCiAgICAgKiBoaWdobGlnaHRzIGFuZCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBsYWJlbC4KICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxIaWdobGlnaHR8bnVsbD4gJGhpZ2hsaWdodHNCeUNvbHVtbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlTGFiZWwoSGlnaGxpZ2h0ICRoaWdobGlnaHQsIGFycmF5ICRoaWdobGlnaHRzQnlDb2x1bW4sIGludCAkdW5kZXJsaW5lTGVuZ3RoKTogdm9pZAogICAgewogICAgICAgICRsYWJlbCA9ICRoaWdobGlnaHQtPmxhYmVsOwoKICAgICAgICBpZiAoJGxhYmVsID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gIlxuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGxpbmVzID0gZXhwbG9kZSgiXG4iLCAkbGFiZWwpOwogICAgICAgICR0aGlzLT5idWZmZXIgLj0gJyAnOwogICAgICAgICR0aGlzLT5idWZmZXIgLj0gJGxpbmVzWzBdOwogICAgICAgICR0aGlzLT5idWZmZXIgLj0gIlxuIjsKCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfc2xpY2UoJGxpbmVzLCAxKSBhcyAkdGV4dCkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGVTaWRlYmFyKCk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gJyAnOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGhpZ2hsaWdodHNCeUNvbHVtbiBhcyAkY29sdW1uSGlnaGxpZ2h0KSB7CiAgICAgICAgICAgICAgICBpZiAoJGNvbHVtbkhpZ2hsaWdodCA9PT0gbnVsbCB8fCAkY29sdW1uSGlnaGxpZ2h0ID09PSAkaGlnaGxpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSAnICc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gQXNjaWlHbHlwaDo6dmVydGljYWxMaW5lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+YnVmZmVyIC49IHN0cl9yZXBlYXQoJyAnLCAkdW5kZXJsaW5lTGVuZ3RoICsgMSk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gJHRleHQ7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXIgLj0gIlxuIjsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBXcml0ZXMgYSBzbmlwcGV0IGZyb20gdGhlIHNvdXJjZSB0ZXh0LCBjb252ZXJ0aW5nIGhhcmQgdGFiIGNoYXJhY3RlcnMgaW50bwogICAgICogcGxhaW4gaW5kZW50YXRpb24uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gd3JpdGVUZXh0KHN0cmluZyAkdGV4dCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyIC49IHN0cl9yZXBsYWNlKCJcdCIsIHN0cl9yZXBlYXQoJyAnLCBzZWxmOjpTUEFDRVNfUEVSX1RBQiksICR0ZXh0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyBhIHNpZGViYXIgdG8ge0BzZWUgJGJ1ZmZlcn0gdGhhdCBpbmNsdWRlcyAkbGluZSBhcyB0aGUgbGluZSBudW1iZXIgaWYKICAgICAqIGdpdmVuIGFuZCB3cml0ZXMgJGVuZCBhdCB0aGUgZW5kIChkZWZhdWx0cyB0byB7QHNlZSBBc2NpaUdseXBoOjp2ZXJ0aWNhbExpbmV9KS4KICAgICAqCiAgICAgKiBJZiAkdGV4dCBpcyBnaXZlbiwgaXQncyB1c2VkIGluIHBsYWNlIG9mIHRoZSBsaW5lIG51bWJlci4gSXQgY2FuJ3QgYmUKICAgICAqIHBhc3NlZCBhdCB0aGUgc2FtZSB0aW1lIGFzICRsaW5lLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlU2lkZWJhcig/aW50ICRsaW5lID0gbnVsbCwgP3N0cmluZyAkdGV4dCA9IG51bGwsID9zdHJpbmcgJGVuZCA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgXGFzc2VydCgkbGluZSA9PT0gbnVsbCB8fCAkdGV4dCA9PT0gbnVsbCk7CgogICAgICAgIGlmICgkbGluZSAhPT0gbnVsbCkgewogICAgICAgICAgICAvLyBBZGQgMSB0byBsaW5lIHRvIGNvbnZlcnQgZnJvbSBjb21wdXRlci1mcmllbmRseSAwLWluZGV4ZWQgbGluZSBudW1iZXJzIHRvCiAgICAgICAgICAgIC8vIGh1bWFuLWZyaWVuZGx5IDEtaW5kZXhlZCBsaW5lIG51bWJlcnMuCiAgICAgICAgICAgICR0ZXh0ID0gKHN0cmluZykgKCRsaW5lICsgMSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+YnVmZmVyIC49IHN0cl9wYWQoJHRleHQgPz8gJycsICR0aGlzLT5wYWRkaW5nQmVmb3JlU2lkZWJhcik7CiAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSAkZW5kID8/IEFzY2lpR2x5cGg6OnZlcnRpY2FsTGluZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkdGV4dCBjb250YWlucyBvbmx5IHNwYWNlIG9yIHRhYiBjaGFyYWN0ZXJzLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzT25seVdoaXRlc3BhY2Uoc3RyaW5nICR0ZXh0KTogYm9vbAogICAgewogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IFxzdHJsZW4oJHRleHQpOyAkaSsrKSB7CiAgICAgICAgICAgICRjaGFyID0gJHRleHRbJGldOwoKICAgICAgICAgICAgaWYgKCRjaGFyICE9PSAnICcgJiYgJGNoYXIgIT09ICJcdCIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGVtcGxhdGUgSwogICAgICogQHRlbXBsYXRlIEUKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKiBAcGFyYW0gaXRlcmFibGU8SywgRT4gJGVsZW1lbnRzCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoRSwgSyk6IGl0ZXJhYmxlPFQ+ICRjYWxsYmFjawogICAgICogQHJldHVybiBcVHJhdmVyc2FibGU8VD4KICAgICAqCiAgICAgKiBAcGFyYW0taW1tZWRpYXRlbHktaW52b2tlZC1jYWxsYWJsZSAkY2FsbGJhY2sKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZXhwYW5kTWFwSXRlcmFibGUoaXRlcmFibGUgJGVsZW1lbnRzLCBjYWxsYWJsZSAkY2FsbGJhY2spOiBcVHJhdmVyc2FibGUKICAgIHsKICAgICAgICBmb3JlYWNoICgkZWxlbWVudHMgYXMgJGtleSA9PiAkZWxlbWVudCkgewogICAgICAgICAgICB5aWVsZCBmcm9tICRjYWxsYmFjaygkZWxlbWVudCwgJGtleSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/Highlighter/Line.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuXEhpZ2hsaWdodGVyOwoKLyoqCiAqIEEgc2luZ2xlIGxpbmUgb2YgdGhlIHNvdXJjZSBmaWxlIGJlaW5nIGhpZ2hsaWdodGVkLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIExpbmUKewogICAgLyoqCiAgICAgKiBBbGwgaGlnaGxpZ2h0cyB0aGF0IGNvdmVyIGFueSBwb3J0aW9uIG9mIHRoaXMgbGluZSwgaW4gc291cmNlIHNwYW4gb3JkZXIuCiAgICAgKgogICAgICogVGhpcyBpcyBwb3B1bGF0ZWQgYWZ0ZXIgdGhlIGluaXRpYWwgbGluZSBpcyBjcmVhdGVkLgogICAgICoKICAgICAqIEB2YXIgbGlzdDxIaWdobGlnaHQ+CiAgICAgKi8KICAgIHB1YmxpYyBhcnJheSAkaGlnaGxpZ2h0cyA9IFtdOwoKICAgIC8qKgogICAgICogVGhlIFVSTCBvZiB0aGUgc291cmNlIGZpbGUgaW4gd2hpY2ggdGhpcyBsaW5lIGFwcGVhcnMuCiAgICAgKgogICAgICogRm9yIGxpbmVzIGNyZWF0ZWQgZnJvbSBzcGFucyB3aXRob3V0IGFuIGV4cGxpY2l0IFVSTCwgdGhpcyBpcyBhbiBvcGFxdWUKICAgICAqIG9iamVjdCB0aGF0IGRpZmZlcnMgYmV0d2VlbiBsaW5lcyB0aGF0IGNvbWUgZnJvbSBkaWZmZXJlbnQgc3BhbnMuCiAgICAgKi8KICAgIHB1YmxpYyByZWFkb25seSBvYmplY3QgJHVybDsKCgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRudW1iZXIgVGhlIE8tYmFzZWQgbGluZSBudW1iZXIgaW4gdGhlIHNvdXJjZSBmaWxlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RyaW5nICR0ZXh0LAogICAgICAgIHB1YmxpYyByZWFkb25seSBpbnQgJG51bWJlciwKICAgICAgICBvYmplY3QgJHVybCwKICAgICkgewogICAgICAgICR0aGlzLT51cmwgPSAkdXJsOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SimpleSourceLocation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCmZpbmFsIGNsYXNzIFNpbXBsZVNvdXJjZUxvY2F0aW9uIGV4dGVuZHMgU291cmNlTG9jYXRpb25NaXhpbgp7CiAgICBwcml2YXRlIHJlYWRvbmx5IGludCAkbGluZTsKICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ICRjb2x1bW47CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IGxvY2F0aW9uIGluZGljYXRpbmcgJG9mZnNldCB3aXRoaW4gJHNvdXJjZVVybC4KICAgICAqCiAgICAgKiAkbGluZSBhbmQgJGNvbHVtbiBkZWZhdWx0IHRvIGFzc3VtaW5nIHRoZSBzb3VyY2UgaXMgYSBzaW5nbGUgQVNDSUkgbGluZS4gVGhpcwogICAgICogbWVhbnMgdGhhdCAkbGluZSBkZWZhdWx0cyB0byAwIGFuZCAkY29sdW1uIGRlZmF1bHRzIHRvICRvZmZzZXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludCAkb2Zmc2V0LAogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgP1VyaUludGVyZmFjZSAkc291cmNlVXJsID0gbnVsbCwKICAgICAgICA/aW50ICRsaW5lID0gbnVsbCwKICAgICAgICA/aW50ICRjb2x1bW4gPSBudWxsLAogICAgKSB7CiAgICAgICAgJHRoaXMtPmxpbmUgPSAkbGluZSA/PyAwOwogICAgICAgICR0aGlzLT5jb2x1bW4gPSAkY29sdW1uID8/ICRvZmZzZXQ7CgogICAgICAgIGlmICgkb2Zmc2V0IDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mUmFuZ2VFeGNlcHRpb24oJ09mZnNldCBtYXkgbm90IGJlIG5lZ2F0aXZlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsaW5lICE9PSBudWxsICYmICRsaW5lIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mUmFuZ2VFeGNlcHRpb24oJ0xpbmUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkY29sdW1uICE9PSBudWxsICYmICRjb2x1bW4gPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbignQ29sdW1uIG1heSBub3QgYmUgbmVnYXRpdmUuJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPZmZzZXQoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vZmZzZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExpbmUoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5saW5lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb2x1bW4oKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2x1bW47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNvdXJjZVVybCgpOiA/VXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2VVcmw7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SimpleSourceSpan.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKZmluYWwgY2xhc3MgU2ltcGxlU291cmNlU3BhbiBleHRlbmRzIFNvdXJjZVNwYW5NaXhpbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBTb3VyY2VMb2NhdGlvbiAkc3RhcnQsCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBTb3VyY2VMb2NhdGlvbiAkZW5kLAogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyaW5nICR0ZXh0LAogICAgKSB7CiAgICAgICAgaWYgKCFVdGlsOjppc1NhbWVVcmwoJHN0YXJ0LT5nZXRTb3VyY2VVcmwoKSwgJGVuZC0+Z2V0U291cmNlVXJsKCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJTb3VyY2UgVVJMcyBcInskc3RhcnQtPmdldFNvdXJjZVVybCgpfVwiIGFuZCBcInskZW5kLT5nZXRTb3VyY2VVcmwoKX1cIiBkb24ndCBtYXRjaC4iKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+ZW5kLT5nZXRPZmZzZXQoKSA8ICR0aGlzLT5zdGFydC0+Z2V0T2Zmc2V0KCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0VuZCBtdXN0IGNvbWUgYWZ0ZXIgc3RhcnQuJyk7CiAgICAgICAgfQoKICAgICAgICAkZGlzdGFuY2UgPSAkdGhpcy0+c3RhcnQtPmRpc3RhbmNlKCR0aGlzLT5lbmQpOwogICAgICAgIGlmIChcc3RybGVuKCR0aGlzLT50ZXh0KSAhPT0gJGRpc3RhbmNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJUZXh0IFwiJHRleHRcIiBtdXN0IGJlICRkaXN0YW5jZSBjaGFyYWN0ZXJzIGxvbmcuIik7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGFydCgpOiBTb3VyY2VMb2NhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RhcnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuZCgpOiBTb3VyY2VMb2NhdGlvbgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZW5kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZXh0KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGV4dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3Vic3BhbihpbnQgJHN0YXJ0LCA/aW50ICRlbmQgPSBudWxsKTogU291cmNlU3BhbgogICAgewogICAgICAgIFV0aWw6OmNoZWNrVmFsaWRSYW5nZSgkc3RhcnQsICRlbmQsICR0aGlzLT5nZXRMZW5ndGgoKSk7CgogICAgICAgIGlmICgkc3RhcnQgPT09IDAgJiYgKCRlbmQgPT09IG51bGwgfHwgJGVuZCA9PT0gJHRoaXMtPmdldExlbmd0aCgpKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbG9jYXRpb25zID0gVXRpbDo6c3Vic3BhbkxvY2F0aW9ucygkdGhpcywgJHN0YXJ0LCAkZW5kKTsKCiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVTb3VyY2VTcGFuKCRsb2NhdGlvbnNbMF0sICRsb2NhdGlvbnNbMV0sIFV0aWw6OnN1YnN0cmluZygkdGhpcy0+dGV4dCwgJHN0YXJ0LCAkZW5kKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SimpleSourceSpanWithContext.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKZmluYWwgY2xhc3MgU2ltcGxlU291cmNlU3BhbldpdGhDb250ZXh0IGV4dGVuZHMgU291cmNlU3Bhbk1peGluIGltcGxlbWVudHMgU291cmNlU3BhbldpdGhDb250ZXh0CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IFNvdXJjZUxvY2F0aW9uICRzdGFydCwKICAgICAgICBwcml2YXRlIHJlYWRvbmx5IFNvdXJjZUxvY2F0aW9uICRlbmQsCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJHRleHQsCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJGNvbnRleHQKICAgICkgewogICAgICAgIGlmICghVXRpbDo6aXNTYW1lVXJsKCRzdGFydC0+Z2V0U291cmNlVXJsKCksICRlbmQtPmdldFNvdXJjZVVybCgpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiU291cmNlIFVSTHMgXCJ7JHN0YXJ0LT5nZXRTb3VyY2VVcmwoKX1cIiBhbmQgXCJ7JGVuZC0+Z2V0U291cmNlVXJsKCl9XCIgZG9uJ3QgbWF0Y2guIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmVuZC0+Z2V0T2Zmc2V0KCkgPCAkdGhpcy0+c3RhcnQtPmdldE9mZnNldCgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFbmQgbXVzdCBjb21lIGFmdGVyIHN0YXJ0LicpOwogICAgICAgIH0KCiAgICAgICAgJGRpc3RhbmNlID0gJHRoaXMtPnN0YXJ0LT5kaXN0YW5jZSgkdGhpcy0+ZW5kKTsKICAgICAgICBpZiAoXHN0cmxlbigkdGhpcy0+dGV4dCkgIT09ICRkaXN0YW5jZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVGV4dCBcIiR0ZXh0XCIgbXVzdCBiZSAkZGlzdGFuY2UgY2hhcmFjdGVycyBsb25nLiIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFzdHJfY29udGFpbnMoJHRoaXMtPmNvbnRleHQsICR0aGlzLT50ZXh0KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGNvbnRleHQgbGluZSBcIiRjb250ZXh0XCIgbXVzdCBjb250YWluIFwiJHRleHRcIi4iKTsKICAgICAgICB9CgogICAgICAgIGlmIChVdGlsOjpmaW5kTGluZVN0YXJ0KCR0aGlzLT5jb250ZXh0LCAkdGhpcy0+dGV4dCwgJHRoaXMtPnN0YXJ0LT5nZXRDb2x1bW4oKSkgPT09IG51bGwpIHsKICAgICAgICAgICAgJGNvbHVtbiA9ICR0aGlzLT5zdGFydC0+Z2V0Q29sdW1uKCkgKyAxOwogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVGhlIHNwYW4gdGV4dCBcIiR0ZXh0XCIgbXVzdCBzdGFydCBhdCBjb2x1bW4gJGNvbHVtbiBpbiBhIGxpbmUgd2l0aGluIFwiJGNvbnRleHRcIi4iKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXJ0KCk6IFNvdXJjZUxvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdGFydDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5kKCk6IFNvdXJjZUxvY2F0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRleHQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZXh0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZXh0KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGV4dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3Vic3BhbihpbnQgJHN0YXJ0LCA/aW50ICRlbmQgPSBudWxsKTogU291cmNlU3BhbldpdGhDb250ZXh0CiAgICB7CiAgICAgICAgVXRpbDo6Y2hlY2tWYWxpZFJhbmdlKCRzdGFydCwgJGVuZCwgJHRoaXMtPmdldExlbmd0aCgpKTsKCiAgICAgICAgaWYgKCRzdGFydCA9PT0gMCAmJiAoJGVuZCA9PT0gbnVsbCB8fCAkZW5kID09PSAkdGhpcy0+Z2V0TGVuZ3RoKCkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRsb2NhdGlvbnMgPSBVdGlsOjpzdWJzcGFuTG9jYXRpb25zKCR0aGlzLCAkc3RhcnQsICRlbmQpOwoKICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVNvdXJjZVNwYW5XaXRoQ29udGV4dCgkbG9jYXRpb25zWzBdLCAkbG9jYXRpb25zWzFdLCBVdGlsOjpzdWJzdHJpbmcoJHRoaXMtPnRleHQsICRzdGFydCwgJGVuZCksICR0aGlzLT5jb250ZXh0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SourceFile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCmZpbmFsIGNsYXNzIFNvdXJjZUZpbGUKewogICAgcHJpdmF0ZSByZWFkb25seSBzdHJpbmcgJHN0cmluZzsKCiAgICBwcml2YXRlIHJlYWRvbmx5ID9VcmlJbnRlcmZhY2UgJHNvdXJjZVVybDsKCiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxpbnQ+CiAgICAgKi8KICAgIHByaXZhdGUgcmVhZG9ubHkgYXJyYXkgJGxpbmVTdGFydHM7CgogICAgLyoqCiAgICAgKiBUaGUgMC1iYXNlZCBsYXN0IGxpbmUgdGhhdCB3YXMgcmV0dXJuZWQgYnkge0BzZWUgZ2V0TGluZX0KICAgICAqCiAgICAgKiBUaGlzIG9wdGltaXplcyBjb21wdXRhdGlvbiBmb3Igc3VjY2Vzc2l2ZSBhY2Nlc3NlcyB0bwogICAgICogdGhlIHNhbWUgbGluZSBvciB0byB0aGUgbmV4dCBsaW5lLgogICAgICogSXQgaXMgc3RvcmVkIGFzIDAtYmFzZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgaW5kaWNlcwogICAgICogaW4ge0BzZWUgJGxpbmVTdGFydHN9LgogICAgICoKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSA/aW50ICRjYWNoZWRMaW5lID0gbnVsbDsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21TdHJpbmcoc3RyaW5nICRjb250ZW50LCA/VXJpSW50ZXJmYWNlICRzb3VyY2VVcmwgPSBudWxsKTogU291cmNlRmlsZQogICAgewogICAgICAgIHJldHVybiBuZXcgU291cmNlRmlsZSgkY29udGVudCwgJHNvdXJjZVVybCk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJGNvbnRlbnQsID9VcmlJbnRlcmZhY2UgJHNvdXJjZVVybCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmluZyA9ICRjb250ZW50OwogICAgICAgICR0aGlzLT5zb3VyY2VVcmwgPSAkc291cmNlVXJsOwoKICAgICAgICAvLyBFeHRyYWN0IGxpbmUgc3RhcnRzCiAgICAgICAgJGxpbmVTdGFydHMgPSBbMF07CgogICAgICAgIGlmICgkY29udGVudCA9PT0gJycpIHsKICAgICAgICAgICAgJHRoaXMtPmxpbmVTdGFydHMgPSAkbGluZVN0YXJ0czsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHByZXYgPSAwOwoKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAkY3JQb3MgPSBzdHJwb3MoJGNvbnRlbnQsICJcciIsICRwcmV2KTsKICAgICAgICAgICAgJGxmUG9zID0gc3RycG9zKCRjb250ZW50LCAiXG4iLCAkcHJldik7CgogICAgICAgICAgICBpZiAoJGNyUG9zID09PSBmYWxzZSAmJiAkbGZQb3MgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRjclBvcyAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIC8vIFJldHVybiBub3QgZm9sbG93ZWQgYnkgbmV3bGluZSBpcyB0cmVhdGVkIGFzIGEgbmV3bGluZQogICAgICAgICAgICAgICAgaWYgKCRsZlBvcyA9PT0gZmFsc2UgfHwgJGxmUG9zID4gJGNyUG9zICsgMSkgewogICAgICAgICAgICAgICAgICAgICRsaW5lU3RhcnRzW10gPSAkY3JQb3MgKyAxOwogICAgICAgICAgICAgICAgICAgICRwcmV2ID0gJGNyUG9zICsgMTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRsZlBvcyAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRsaW5lU3RhcnRzW10gPSAkbGZQb3MgKyAxOwogICAgICAgICAgICAgICAgJHByZXYgPSAkbGZQb3MgKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bGluZVN0YXJ0cyA9ICRsaW5lU3RhcnRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZW5ndGgoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIFxzdHJsZW4oJHRoaXMtPnN0cmluZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgbnVtYmVyIG9mIGxpbmVzIGluIHRoZSBmaWxlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZXMoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+bGluZVN0YXJ0cyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNwYW4oaW50ICRzdGFydCwgP2ludCAkZW5kID0gbnVsbCk6IEZpbGVTcGFuCiAgICB7CiAgICAgICAgaWYgKCRlbmQgPT09IG51bGwpIHsKICAgICAgICAgICAgJGVuZCA9IFxzdHJsZW4oJHRoaXMtPnN0cmluZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IENvbmNyZXRlRmlsZVNwYW4oJHRoaXMsICRzdGFydCwgJGVuZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGxvY2F0aW9uKGludCAkb2Zmc2V0KTogRmlsZUxvY2F0aW9uCiAgICB7CiAgICAgICAgaWYgKCRvZmZzZXQgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbigiT2Zmc2V0IG1heSBub3QgYmUgbmVnYXRpdmUsIHdhcyAkb2Zmc2V0LiIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvZmZzZXQgPiBcc3RybGVuKCR0aGlzLT5zdHJpbmcpKSB7CiAgICAgICAgICAgICRmaWxlTGVuZ3RoID0gXHN0cmxlbigkdGhpcy0+c3RyaW5nKTsKCiAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbigiT2Zmc2V0ICRvZmZzZXQgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgZmlsZSwgJGZpbGVMZW5ndGguIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEZpbGVMb2NhdGlvbigkdGhpcywgJG9mZnNldCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNvdXJjZVVybCgpOiA/VXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2VVcmw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmluZzsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSAwLWJhc2VkIGxpbmUgY29ycmVzcG9uZGluZyB0byB0aGF0IG9mZnNldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldExpbmUoaW50ICRvZmZzZXQpOiBpbnQKICAgIHsKICAgICAgICBpZiAoJG9mZnNldCA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxPdXRPZlJhbmdlRXhjZXB0aW9uKCdQb3NpdGlvbiBjYW5ub3QgYmUgbmVnYXRpdmUnKTsKICAgICAgICB9CgogICAgICAgIGlmICgkb2Zmc2V0ID4gXHN0cmxlbigkdGhpcy0+c3RyaW5nKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mUmFuZ2VFeGNlcHRpb24oJ1Bvc2l0aW9uIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9mZnNldCA8ICR0aGlzLT5saW5lU3RhcnRzWzBdKSB7CiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CgogICAgICAgIGlmICgkb2Zmc2V0ID49IFV0aWw6Omxpc3RMYXN0KCR0aGlzLT5saW5lU3RhcnRzKSkgewogICAgICAgICAgICByZXR1cm4gXGNvdW50KCR0aGlzLT5saW5lU3RhcnRzKSAtIDE7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmlzTmVhckNhY2hlTGluZSgkb2Zmc2V0KSkgewogICAgICAgICAgICBhc3NlcnQoJHRoaXMtPmNhY2hlZExpbmUgIT09IG51bGwpOwoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jYWNoZWRMaW5lOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNhY2hlZExpbmUgPSAkdGhpcy0+YmluYXJ5U2VhcmNoKCRvZmZzZXQpIC0gMTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5jYWNoZWRMaW5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgJG9mZnNldCBpcyBuZWFyIHtAc2VlICRjYWNoZWRMaW5lfS4KICAgICAqCiAgICAgKiBDaGVja3Mgb24ge0BzZWUgJGNhY2hlZExpbmV9IGFuZCB0aGUgbmV4dCBsaW5lLiBJZiBpdCdzIG9uIHRoZSBuZXh0IGxpbmUsIGl0CiAgICAgKiB1cGRhdGVzIHtAc2VlICRjYWNoZWRMaW5lfSB0byBwb2ludCB0byB0aGF0LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzTmVhckNhY2hlTGluZShpbnQgJG9mZnNldCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNhY2hlZExpbmUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvZmZzZXQgPCAkdGhpcy0+bGluZVN0YXJ0c1skdGhpcy0+Y2FjaGVkTGluZV0pIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+Y2FjaGVkTGluZSA+PSBcY291bnQoJHRoaXMtPmxpbmVTdGFydHMpIC0gMSB8fAogICAgICAgICAgICAkb2Zmc2V0IDwgJHRoaXMtPmxpbmVTdGFydHNbJHRoaXMtPmNhY2hlZExpbmUgKyAxXQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJHRoaXMtPmNhY2hlZExpbmUgPj0gXGNvdW50KCR0aGlzLT5saW5lU3RhcnRzKSAtIDIgfHwKICAgICAgICAgICAgJG9mZnNldCA8ICR0aGlzLT5saW5lU3RhcnRzWyR0aGlzLT5jYWNoZWRMaW5lICsgMl0KICAgICAgICApIHsKICAgICAgICAgICAgKyskdGhpcy0+Y2FjaGVkTGluZTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQmluYXJ5IHNlYXJjaCB0aHJvdWdoIHtAc2VlICRsaW5lU3RhcnRzfSB0byBmaW5kIHRoZSBsaW5lIGNvbnRhaW5pbmcgJG9mZnNldC4KICAgICAqCiAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGluZSBpbiB7QHNlZSAkbGluZVN0YXJ0c30uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYmluYXJ5U2VhcmNoKGludCAkb2Zmc2V0KTogaW50CiAgICB7CiAgICAgICAgJG1pbiA9IDA7CiAgICAgICAgJG1heCA9IFxjb3VudCgkdGhpcy0+bGluZVN0YXJ0cykgLSAxOwoKICAgICAgICB3aGlsZSAoJG1pbiA8ICRtYXgpIHsKICAgICAgICAgICAgJGhhbGYgPSAkbWluICsgaW50ZGl2KCRtYXggLSAkbWluLCAyKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGluZVN0YXJ0c1skaGFsZl0gPiAkb2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAkbWF4ID0gJGhhbGY7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbWluID0gJGhhbGYgKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1heDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSAwLWJhc2VkIGNvbHVtbiBvZiB0aGF0IG9mZnNldC4KICAgICAqCiAgICAgKiBVbmxpa2Ugb2Zmc2V0cyAod2hpY2ggYXJlIGJ5dGUtb2Zmc2V0cyksIGNvbHVtbnMgYXJlIGNvbXB1dGVkIGJhc2VkIG9uIFVuaWNvZGUKICAgICAqIGNvZGVwb2ludHMgdG8gcHJvdmlkZSBhIGJldHRlciBleHBlcmllbmNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29sdW1uKGludCAkb2Zmc2V0KTogaW50CiAgICB7CiAgICAgICAgJGxpbmUgPSAkdGhpcy0+Z2V0TGluZSgkb2Zmc2V0KTsKCiAgICAgICAgcmV0dXJuIG1iX3N0cmxlbihzdWJzdHIoJHRoaXMtPnN0cmluZywgJHRoaXMtPmxpbmVTdGFydHNbJGxpbmVdLCAkb2Zmc2V0IC0gJHRoaXMtPmxpbmVTdGFydHNbJGxpbmVdKSwgJ1VURi04Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIHRoZSBvZmZzZXQgZm9yIGEgbGluZSBhbmQgY29sdW1uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T2Zmc2V0KGludCAkbGluZSwgaW50ICRjb2x1bW4gPSAwKTogaW50CiAgICB7CiAgICAgICAgaWYgKCRsaW5lIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mUmFuZ2VFeGNlcHRpb24oJ0xpbmUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbGluZSA+PSBcY291bnQoJHRoaXMtPmxpbmVTdGFydHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbignTGluZSBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGxpbmVzIGluIHRoZSBmaWxlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb2x1bW4gPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbignQ29sdW1uIG1heSBub3QgYmUgbmVnYXRpdmUuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbHVtbiA9PT0gMCkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmxpbmVTdGFydHNbJGxpbmVdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRsaW5lQ29udGVudCA9IHN1YnN0cigkdGhpcy0+c3RyaW5nLCAkdGhpcy0+bGluZVN0YXJ0c1skbGluZV0sICR0aGlzLT5saW5lU3RhcnRzWyRsaW5lICsgMV0gPz8gbnVsbCk7CgogICAgICAgICAgICBpZiAoJGNvbHVtbiA+IG1iX3N0cmxlbigkbGluZUNvbnRlbnQsICdVVEYtOCcpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mUmFuZ2VFeGNlcHRpb24oIkxpbmUgJGxpbmUgZG9lc24ndCBoYXZlICRjb2x1bW4gY29sdW1ucy4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5saW5lU3RhcnRzWyRsaW5lXSArIFxzdHJsZW4obWJfc3Vic3RyKCRsaW5lQ29udGVudCwgMCwgJGNvbHVtbiwgJ1VURi04JykpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyZXN1bHQgPiBcc3RybGVuKCR0aGlzLT5zdHJpbmcpIHx8ICgkbGluZSArIDEgPCBcY291bnQoJHRoaXMtPmxpbmVTdGFydHMpICYmICRyZXN1bHQgPj0gJHRoaXMtPmxpbmVTdGFydHNbJGxpbmUgKyAxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxPdXRPZlJhbmdlRXhjZXB0aW9uKCJMaW5lICRsaW5lIGRvZXNuJ3QgaGF2ZSAkY29sdW1uIGNvbHVtbnMuIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHRleHQgb2YgdGhlIGZpbGUgZnJvbSAkc3RhcnQgdG8gJGVuZCAoZXhjbHVzaXZlKS4KICAgICAqCiAgICAgKiBJZiAkZW5kIGlzbid0IHBhc3NlZCwgaXQgZGVmYXVsdHMgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFRleHQoaW50ICRzdGFydCwgP2ludCAkZW5kID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgkZW5kICE9PSBudWxsKSB7CiAgICAgICAgICAgIGlmICgkZW5kIDwgJHN0YXJ0KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiRW5kICRlbmQgbXVzdCBjb21lIGFmdGVyIHN0YXJ0ICRzdGFydC4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRlbmQgPiAkdGhpcy0+Z2V0TGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbigiRW5kICRlbmQgbm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIGZpbGUsIHskdGhpcy0+Z2V0TGVuZ3RoKCl9LiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHN0YXJ0IDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mUmFuZ2VFeGNlcHRpb24oIlN0YXJ0IG1heSBub3QgYmUgbmVnYXRpdmUsIHdhcyAkc3RhcnQuIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVXRpbDo6c3Vic3RyaW5nKCR0aGlzLT5zdHJpbmcsICRzdGFydCwgJGVuZCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SourceLocation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCmludGVyZmFjZSBTb3VyY2VMb2NhdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T2Zmc2V0KCk6IGludDsKCiAgICAvKioKICAgICAqIFRoZSAwLWJhc2VkIGxpbmUgb2YgdGhhdCBsb2NhdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZSgpOiBpbnQ7CgogICAgLyoqCiAgICAgKiBUaGUgMC1iYXNlZCBjb2x1bW4gb2YgdGhhdCBsb2NhdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29sdW1uKCk6IGludDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U291cmNlVXJsKCk6ID9VcmlJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBkaXN0YW5jZSBpbiBjaGFyYWN0ZXJzIGJldHdlZW4gJHRoaXMgYW5kICRvdGhlci4KICAgICAqCiAgICAgKiBUaGlzIGFsd2F5cyByZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIHZhbHVlLgogICAgICoKICAgICAqIEByZXR1cm4gaW50PDAsIG1heD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpc3RhbmNlKFNvdXJjZUxvY2F0aW9uICRvdGhlcik6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzcGFuIHRoYXQgY292ZXJzIG9ubHkgYSBzaW5nbGUgcG9pbnQ6IHRoaXMgbG9jYXRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb2ludFNwYW4oKTogU291cmNlU3BhbjsKCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBsb2NhdGlvbnMuCiAgICAgKgogICAgICogSXQgcmV0dXJucyBhIG5lZ2F0aXZlIGludGVnZXIgaWYgJHRoaXMgaXMgb3JkZXJlZCBiZWZvcmUgJG90aGVyLAogICAgICogYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmICR0aGlzIGlzIG9yZGVyZWQgYWZ0ZXIgJG90aGVyLAogICAgICogYW5kIHplcm8gaWYgJHRoaXMgYW5kICRvdGhlciBhcmUgb3JkZXJlZCB0b2dldGhlci4KICAgICAqCiAgICAgKiAkb3RoZXIgbXVzdCBoYXZlIHRoZSBzYW1lIHNvdXJjZSBVUkwgYXMgJHRoaXMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlVG8oU291cmNlTG9jYXRpb24gJG90aGVyKTogaW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SourceLocationMixin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKLyoqCiAqIEEgbWl4aW4gZm9yIGVhc2lseSBpbXBsZW1lbnRpbmcge0BzZWUgU291cmNlTG9jYXRpb259LgogKgogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIFNvdXJjZUxvY2F0aW9uTWl4aW4gaW1wbGVtZW50cyBTb3VyY2VMb2NhdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZGlzdGFuY2UoU291cmNlTG9jYXRpb24gJG90aGVyKTogaW50CiAgICB7CiAgICAgICAgaWYgKCFVdGlsOjppc1NhbWVVcmwoJHRoaXMtPmdldFNvdXJjZVVybCgpLCAkb3RoZXItPmdldFNvdXJjZVVybCgpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiU291cmNlIFVSTHMgXCJ7JHRoaXMtPmdldFNvdXJjZVVybCgpfVwiIGFuZCBcInskb3RoZXItPmdldFNvdXJjZVVybCgpfVwiIGRvbid0IG1hdGNoLiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFicygkdGhpcy0+Z2V0T2Zmc2V0KCkgLSAkb3RoZXItPmdldE9mZnNldCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcG9pbnRTcGFuKCk6IFNvdXJjZVNwYW4KICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVNvdXJjZVNwYW4oJHRoaXMsICR0aGlzLCAnJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbyhTb3VyY2VMb2NhdGlvbiAkb3RoZXIpOiBpbnQKICAgIHsKICAgICAgICBpZiAoIVV0aWw6OmlzU2FtZVVybCgkdGhpcy0+Z2V0U291cmNlVXJsKCksICRvdGhlci0+Z2V0U291cmNlVXJsKCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJTb3VyY2UgVVJMcyBcInskdGhpcy0+Z2V0U291cmNlVXJsKCl9XCIgYW5kIFwieyRvdGhlci0+Z2V0U291cmNlVXJsKCl9XCIgZG9uJ3QgbWF0Y2guIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldE9mZnNldCgpIC0gJG90aGVyLT5nZXRPZmZzZXQoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SourceSpan.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKCi8qKgogKiBBbiBpbnRlcmZhY2UgdGhhdCBkZXNjcmliZXMgYSBzZWdtZW50IG9mIHNvdXJjZSB0ZXh0LgogKi8KaW50ZXJmYWNlIFNvdXJjZVNwYW4KewogICAgLyoqCiAgICAgKiBUaGUgc3RhcnQgbG9jYXRpb24gb2YgdGhpcyBzcGFuLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhcnQoKTogU291cmNlTG9jYXRpb247CgogICAgLyoqCiAgICAgKiBUaGUgZW5kIGxvY2F0aW9uIG9mIHRoaXMgc3BhbiwgZXhjbHVzaXZlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5kKCk6IFNvdXJjZUxvY2F0aW9uOwoKICAgIC8qKgogICAgICogVGhlIHNvdXJjZSB0ZXh0IGZvciB0aGlzIHNwYW4uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZXh0KCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFRoZSBVUkwgb2YgdGhlIHNvdXJjZSAodHlwaWNhbGx5IGEgZmlsZSkgb2YgdGhpcyBzcGFuLgogICAgICoKICAgICAqIFRoaXMgbWF5IGJlIG51bGwsIGluZGljYXRpbmcgdGhhdCB0aGUgc291cmNlIFVSTCBpcyB1bmtub3duIG9yCiAgICAgKiB1bmF2YWlsYWJsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNvdXJjZVVybCgpOiA/VXJpSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogVGhlIGxlbmd0aCBvZiB0aGlzIHNwYW4sIGluIGJ5dGVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGVuZ3RoKCk6IGludDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgc3BhbiB0aGF0J3MgdGhlIHVuaW9uIG9mICR0aGlzIGFuZCAkb3RoZXIuCiAgICAgKgogICAgICogVGhlIHR3byBzcGFucyBtdXN0IGhhdmUgdGhlIHNhbWUgc291cmNlIFVSTCBhbmQgbWF5IG5vdCBiZSBkaXNqb2ludC4KICAgICAqIHtAc2VlIGdldFRleHR9IGlzIGNvbXB1dGVkIGJ5IGNvbWJpbmluZyBgJHRoaXMtPmdldFRleHQoKWAgYW5kIGAkb3RoZXItPmdldFRleHQoKWAuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bmlvbihTb3VyY2VTcGFuICRvdGhlcik6IFNvdXJjZVNwYW47CgogICAgLyoqCiAgICAgKiBDb21wYXJlcyB0d28gc3BhbnMuCiAgICAgKgogICAgICogSXQgcmV0dXJucyBhIG5lZ2F0aXZlIGludGVnZXIgaWYgJHRoaXMgaXMgb3JkZXJlZCBiZWZvcmUgJG90aGVyLAogICAgICogYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmICR0aGlzIGlzIG9yZGVyZWQgYWZ0ZXIgJG90aGVyLAogICAgICogYW5kIHplcm8gaWYgJHRoaXMgYW5kICRvdGhlciBhcmUgb3JkZXJlZCB0b2dldGhlci4KICAgICAqCiAgICAgKiAkb3RoZXIgbXVzdCBoYXZlIHRoZSBzYW1lIHNvdXJjZSBVUkwgYXMgYHRoaXNgLiBUaGlzIG9yZGVycyBzcGFucyBieQogICAgICoge0BzZWUgZ2V0U3RhcnR9IHRoZW4ge0BzZWUgZ2V0TGVuZ3RofS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbyhTb3VyY2VTcGFuICRvdGhlcik6IGludDsKCiAgICAvKioKICAgICAqIEZvcm1hdHMgJG1lc3NhZ2UgaW4gYSBodW1hbi1mcmllbmRseSB3YXkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3Bhbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1lc3NhZ2Uoc3RyaW5nICRtZXNzYWdlKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogTGlrZSB7QHNlZSBtZXNzYWdlfSwgYnV0IGFsc28gaGlnaGxpZ2h0cyAkc2Vjb25kYXJ5U3BhbnMgdG8gcHJvdmlkZQogICAgICogdGhlIHVzZXIgd2l0aCBhZGRpdGlvbmFsIGNvbnRleHQuCiAgICAgKgogICAgICogRWFjaCBzcGFuIHRha2VzIGEgbGFiZWwgKCRsYWJlbCBmb3IgdGhpcyBzcGFuLCBhbmQgdGhlIGtleXMgb2YgdGhlCiAgICAgKiAkc2Vjb25kYXJ5U3BhbnMgbWFwIGZvciB0aGUgc2Vjb25kYXJ5IHNwYW5zKSB0aGF0J3MgdXNlZCB0byBpbmRpY2F0ZSB0bwogICAgICogdGhlIHVzZXIgd2hhdCB0aGF0IHBhcnRpY3VsYXIgc3BhbiByZXByZXNlbnRzLgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiBhbnkgc2Vjb25kYXJ5IHNwYW4gaGFzIGEgZGlmZmVyZW50IHNvdXJjZSBVUkwgdGhhbiB0aGlzIHNwYW4uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgU291cmNlU3Bhbj4gJHNlY29uZGFyeVNwYW5zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtZXNzYWdlTXVsdGlwbGUoc3RyaW5nICRtZXNzYWdlLCBzdHJpbmcgJGxhYmVsLCBhcnJheSAkc2Vjb25kYXJ5U3BhbnMpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBQcmludHMgdGhlIHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3BhbiBpbiBhIHVzZXItZnJpZW5kbHkgd2F5LgogICAgICoKICAgICAqIFRoaXMgaXMgaWRlbnRpY2FsIHRvIHtAc2VlIG1lc3NhZ2V9LCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IHByaW50IHRoZSBmaWxlCiAgICAgKiBuYW1lLCBsaW5lIG51bWJlciwgY29sdW1uIG51bWJlciwgb3IgbWVzc2FnZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhpZ2hsaWdodCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBMaWtlIHtAc2VlIGhpZ2hsaWdodH0sIGJ1dCBhbHNvIGhpZ2hsaWdodHMgJHNlY29uZGFyeVNwYW5zIHRvIHByb3ZpZGUKICAgICAqIHRoZSB1c2VyIHdpdGggYWRkaXRpb25hbCBjb250ZXh0LgogICAgICoKICAgICAqIEVhY2ggc3BhbiB0YWtlcyBhIGxhYmVsICgkbGFiZWwgZm9yIHRoaXMgc3BhbiwgYW5kIHRoZSBrZXlzIG9mIHRoZQogICAgICogJHNlY29uZGFyeVNwYW5zIG1hcCBmb3IgdGhlIHNlY29uZGFyeSBzcGFucykgdGhhdCdzIHVzZWQgdG8gaW5kaWNhdGUgdG8KICAgICAqIHRoZSB1c2VyIHdoYXQgdGhhdCBwYXJ0aWN1bGFyIHNwYW4gcmVwcmVzZW50cy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgYW55IHNlY29uZGFyeSBzcGFuIGhhcyBhIGRpZmZlcmVudCBzb3VyY2UgVVJMIHRoYW4gdGhpcyBzcGFuLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIFNvdXJjZVNwYW4+ICRzZWNvbmRhcnlTcGFucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlnaGxpZ2h0TXVsdGlwbGUoc3RyaW5nICRsYWJlbCwgYXJyYXkgJHNlY29uZGFyeVNwYW5zKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJuIGEgc3BhbiBmcm9tICRzdGFydCBieXRlcyAoaW5jbHVzaXZlKSB0byAkZW5kIGJ5dGVzCiAgICAgKiAoZXhjbHVzaXZlKSBhZnRlciB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc3BhbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3Vic3BhbihpbnQgJHN0YXJ0LCA/aW50ICRlbmQgPSBudWxsKTogU291cmNlU3BhbjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SourceSpanMixin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIFNvdXJjZVNwYW5cSGlnaGxpZ2h0ZXJcSGlnaGxpZ2h0ZXI7CgovKioKICogQSBtaXhpbiBmb3IgZWFzaWx5IGltcGxlbWVudGluZyB7QHNlZSBTb3VyY2VTcGFufS4KICoKICogVGhpcyBpbXBsZW1lbnRzIHRoZSB7QHNlZSBTb3VyY2VTcGFufSBtZXRob2RzIGluIHRlcm1zIG9mIHtAc2VlIGdldFN0YXJ0fSwge0BzZWUgZ2V0RW5kfSwgYW5kCiAqIHtAc2VlIGdldFRleHR9LiBUaGlzIGFzc3VtZXMgdGhhdCB7QHNlZSBnZXRTdGFydH0gYW5kIHtAc2VlIGdldEVuZH0gaGF2ZSB0aGUgc2FtZSBzb3VyY2UgVVJMLCB0aGF0CiAqIHtAc2VlIGdldFN0YXJ0fSBjb21lcyBiZWZvcmUge0BzZWUgZ2V0RW5kfSwgYW5kIHRoYXQge0BzZWUgZ2V0VGV4dH0gaGFzIGEgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZXF1YWwKICogdG8gdGhlIGRpc3RhbmNlIGJldHdlZW4ge0BzZWUgZ2V0U3RhcnR9IGFuZCB7QHNlZSBnZXRFbmR9LgogKgogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIFNvdXJjZVNwYW5NaXhpbiBpbXBsZW1lbnRzIFNvdXJjZVNwYW4KewogICAgcHVibGljIGZ1bmN0aW9uIGdldFNvdXJjZVVybCgpOiA/VXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTdGFydCgpLT5nZXRTb3VyY2VVcmwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGVuZ3RoKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RW5kKCktPmdldE9mZnNldCgpIC0gJHRoaXMtPmdldFN0YXJ0KCktPmdldE9mZnNldCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmlvbihTb3VyY2VTcGFuICRvdGhlcik6IFNvdXJjZVNwYW4KICAgIHsKICAgICAgICBpZiAoIVV0aWw6OmlzU2FtZVVybCgkdGhpcy0+Z2V0U291cmNlVXJsKCksICRvdGhlci0+Z2V0U291cmNlVXJsKCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJTb3VyY2UgVVJMcyBcInskdGhpcy0+Z2V0U291cmNlVXJsKCl9XCIgYW5kIFwieyRvdGhlci0+Z2V0U291cmNlVXJsKCl9XCIgZG9uJ3QgbWF0Y2guIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmdldFN0YXJ0KCktPmNvbXBhcmVUbygkb3RoZXItPmdldFN0YXJ0KCkpID4gMCkgewogICAgICAgICAgICAkc3RhcnQgPSAkb3RoZXItPmdldFN0YXJ0KCk7CiAgICAgICAgICAgICRiZWdpblNwYW4gPSAkb3RoZXI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPmdldFN0YXJ0KCk7CiAgICAgICAgICAgICRiZWdpblNwYW4gPSAkdGhpczsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5nZXRFbmQoKS0+Y29tcGFyZVRvKCRvdGhlci0+Z2V0RW5kKCkpID4gMCkgewogICAgICAgICAgICAkZW5kID0gJHRoaXMtPmdldEVuZCgpOwogICAgICAgICAgICAkZW5kU3BhbiA9ICR0aGlzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRlbmQgPSAkb3RoZXItPmdldEVuZCgpOwogICAgICAgICAgICAkZW5kU3BhbiA9ICRvdGhlcjsKICAgICAgICB9CgogICAgICAgIGlmICgkYmVnaW5TcGFuLT5nZXRFbmQoKS0+Y29tcGFyZVRvKCRlbmRTcGFuLT5nZXRTdGFydCgpKSA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIlNwYW5zIGFyZSBkaXNqb2ludC4iKTsKICAgICAgICB9CgogICAgICAgICR0ZXh0ID0gJGJlZ2luU3Bhbi0+Z2V0VGV4dCgpIC4gc3Vic3RyKCRlbmRTcGFuLT5nZXRUZXh0KCksICRiZWdpblNwYW4tPmdldEVuZCgpLT5kaXN0YW5jZSgkZW5kU3Bhbi0+Z2V0U3RhcnQoKSkpOwoKICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVNvdXJjZVNwYW4oJHN0YXJ0LCAkZW5kLCAkdGV4dCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbyhTb3VyY2VTcGFuICRvdGhlcik6IGludAogICAgewogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+Z2V0U3RhcnQoKS0+Y29tcGFyZVRvKCRvdGhlci0+Z2V0U3RhcnQoKSk7CgogICAgICAgIGlmICgkcmVzdWx0ICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRFbmQoKS0+Y29tcGFyZVRvKCRvdGhlci0+Z2V0RW5kKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtZXNzYWdlKHN0cmluZyAkbWVzc2FnZSk6IHN0cmluZwogICAgewogICAgICAgICRzdGFydExpbmUgPSAkdGhpcy0+Z2V0U3RhcnQoKS0+Z2V0TGluZSgpICsgMTsKICAgICAgICAkc3RhcnRDb2x1bW4gPSAkdGhpcy0+Z2V0U3RhcnQoKS0+Z2V0Q29sdW1uKCkgKyAxOwogICAgICAgICRzb3VyY2VVcmwgPSAkdGhpcy0+Z2V0U291cmNlVXJsKCk7CgogICAgICAgICRidWZmZXIgPSAibGluZSAkc3RhcnRMaW5lLCBjb2x1bW4gJHN0YXJ0Q29sdW1uIjsKCiAgICAgICAgaWYgKCRzb3VyY2VVcmwgIT09IG51bGwpIHsKICAgICAgICAgICAgJHByZXR0eVVyaSA9IFV0aWw6OnByZXR0eVVyaSgkc291cmNlVXJsKTsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAiIG9mICRwcmV0dHlVcmkiOwogICAgICAgIH0KCiAgICAgICAgJGJ1ZmZlciAuPSAiOiAkbWVzc2FnZSI7CgogICAgICAgICRoaWdobGlnaHQgPSAkdGhpcy0+aGlnaGxpZ2h0KCk7CiAgICAgICAgaWYgKCRoaWdobGlnaHQgIT09ICcnKSB7CiAgICAgICAgICAgICRidWZmZXIgLj0gIlxuIjsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAkaGlnaGxpZ2h0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1lc3NhZ2VNdWx0aXBsZShzdHJpbmcgJG1lc3NhZ2UsIHN0cmluZyAkbGFiZWwsIGFycmF5ICRzZWNvbmRhcnlTcGFucyk6IHN0cmluZwogICAgewogICAgICAgICRzdGFydExpbmUgPSAkdGhpcy0+Z2V0U3RhcnQoKS0+Z2V0TGluZSgpICsgMTsKICAgICAgICAkc3RhcnRDb2x1bW4gPSAkdGhpcy0+Z2V0U3RhcnQoKS0+Z2V0Q29sdW1uKCkgKyAxOwogICAgICAgICRzb3VyY2VVcmwgPSAkdGhpcy0+Z2V0U291cmNlVXJsKCk7CgogICAgICAgICRidWZmZXIgPSAibGluZSAkc3RhcnRMaW5lLCBjb2x1bW4gJHN0YXJ0Q29sdW1uIjsKCiAgICAgICAgaWYgKCRzb3VyY2VVcmwgIT09IG51bGwpIHsKICAgICAgICAgICAgJHByZXR0eVVyaSA9IFV0aWw6OnByZXR0eVVyaSgkc291cmNlVXJsKTsKICAgICAgICAgICAgJGJ1ZmZlciAuPSAiIG9mICRwcmV0dHlVcmkiOwogICAgICAgIH0KCiAgICAgICAgJGJ1ZmZlciAuPSAiOiAkbWVzc2FnZSI7CgogICAgICAgICRoaWdobGlnaHQgPSAkdGhpcy0+aGlnaGxpZ2h0TXVsdGlwbGUoJGxhYmVsLCAkc2Vjb25kYXJ5U3BhbnMpOwogICAgICAgIGlmICgkaGlnaGxpZ2h0ICE9PSAnJykgewogICAgICAgICAgICAkYnVmZmVyIC49ICJcbiI7CiAgICAgICAgICAgICRidWZmZXIgLj0gJGhpZ2hsaWdodDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoaWdobGlnaHQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcyBpbnN0YW5jZW9mIFNvdXJjZVNwYW5XaXRoQ29udGV4dCAmJiAkdGhpcy0+Z2V0TGVuZ3RoKCkgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEhpZ2hsaWdodGVyOjpjcmVhdGUoJHRoaXMpLT5oaWdobGlnaHQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlnaGxpZ2h0TXVsdGlwbGUoc3RyaW5nICRsYWJlbCwgYXJyYXkgJHNlY29uZGFyeVNwYW5zKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIEhpZ2hsaWdodGVyOjptdWx0aXBsZSgkdGhpcywgJGxhYmVsLCAkc2Vjb25kYXJ5U3BhbnMpLT5oaWdobGlnaHQoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/SourceSpanWithContext.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKLyoqCiAqIEFuIGludGVyZmFjZSB0aGF0IGRlc2NyaWJlcyBhIHNlZ21lbnQgb2Ygc291cmNlIHRleHQgd2l0aCBhZGRpdGlvbmFsIGNvbnRleHQuCiAqLwppbnRlcmZhY2UgU291cmNlU3BhbldpdGhDb250ZXh0IGV4dGVuZHMgU291cmNlU3Bhbgp7CiAgICAvKioKICAgICAqIFRleHQgYXJvdW5kIHRoZSBzcGFuLCB3aGljaCBpbmNsdWRlcyB0aGUgbGluZSBjb250YWluaW5nIHRoaXMgc3Bhbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRleHQoKTogc3RyaW5nOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdWJzcGFuKGludCAkc3RhcnQsID9pbnQgJGVuZCA9IG51bGwpOiBTb3VyY2VTcGFuV2l0aENvbnRleHQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/scssphp/source-span/src/Util.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTb3VyY2VTcGFuOwoKdXNlIExlYWd1ZVxVcmlcQ29udHJhY3RzXFVyaUludGVyZmFjZTsKdXNlIExlYWd1ZVxVcmlcVXJpOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgVXRpbAp7CiAgICAvKioKICAgICAqIEBwYXJhbSBpdGVyYWJsZTxvYmplY3Q+ICRpdGVyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBbGxUaGVTYW1lKGl0ZXJhYmxlICRpdGVyKTogYm9vbAogICAgewogICAgICAgICRwcmV2aW91c1ZhbHVlID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJGl0ZXIgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICgkcHJldmlvdXNWYWx1ZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHByZXZpb3VzVmFsdWUgPSAkdmFsdWU7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFzZWxmOjppc1NhbWUoJHZhbHVlLCAkcHJldmlvdXNWYWx1ZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgMiBvYmplY3RzIGFyZSB0aGUgc2FtZSwgY29uc2lkZXJpbmcgVVJJcyBhcyB0aGUgc2FtZSBieSBlcXVhbGl0eSByYXRoZXIgdGhhbiByZWZlcmVuY2UuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNTYW1lKG9iamVjdCAkb2JqZWN0MSwgb2JqZWN0ICRvYmplY3QyKTogYm9vbAogICAgewogICAgICAgIGlmICgkb2JqZWN0MSA9PT0gJG9iamVjdDIpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9iamVjdDEgaW5zdGFuY2VvZiBVcmlJbnRlcmZhY2UgJiYgJG9iamVjdDIgaW5zdGFuY2VvZiBVcmlJbnRlcmZhY2UpIHsKICAgICAgICAgICAgcmV0dXJuICRvYmplY3QxLT50b1N0cmluZygpID09PSAkb2JqZWN0Mi0+dG9TdHJpbmcoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciAkc3BhbiBjb3ZlcnMgbXVsdGlwbGUgbGluZXMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNNdWx0aWxpbmUoU291cmNlU3BhbiAkc3Bhbik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHNwYW4tPmdldFN0YXJ0KCktPmdldExpbmUoKSAhPT0gJHNwYW4tPmdldEVuZCgpLT5nZXRMaW5lKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXRzIHRoZSBmaXJzdCBgbnVsbGAgZWxlbWVudCBvZiAkbGlzdCB0byAkZWxlbWVudC4KICAgICAqCiAgICAgKiBAdGVtcGxhdGUgRQogICAgICogQHBhcmFtIGxpc3Q8RXxudWxsPiAkbGlzdAogICAgICogQHBhcmFtIEUgICAgICAgICAgICAkZWxlbWVudAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlcGxhY2VGaXJzdE51bGwoYXJyYXkgJiRsaXN0LCAkZWxlbWVudCk6IHZvaWQKICAgIHsKICAgICAgICAkaW5kZXggPSBhcnJheV9zZWFyY2gobnVsbCwgJGxpc3QsIHRydWUpOwoKICAgICAgICBpZiAoJGluZGV4ID09PSBmYWxzZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIGxpc3QgY29udGFpbnMgbm8gbnVsbCBlbGVtZW50cy4nKTsKICAgICAgICB9CgogICAgICAgIC8vIEBwaHBzdGFuLWlnbm9yZSBwYXJhbWV0ZXJCeVJlZi50eXBlCiAgICAgICAgJGxpc3RbJGluZGV4XSA9ICRlbGVtZW50OwogICAgICAgIFxhc3NlcnQoYXJyYXlfaXNfbGlzdCgkbGlzdCkpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyB0aGUgZWxlbWVudCBvZiAkbGlzdCB0aGF0IGN1cnJlbnRseSBjb250YWlucyAkZWxlbWVudCB0byBgbnVsbGAuCiAgICAgKgogICAgICogQHRlbXBsYXRlIEUKICAgICAqIEBwYXJhbSBsaXN0PEV8bnVsbD4gJGxpc3QKICAgICAqIEBwYXJhbSBFICAgICAgICAgICAgJGVsZW1lbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXBsYWNlV2l0aE51bGwoYXJyYXkgJiRsaXN0LCAkZWxlbWVudCk6IHZvaWQKICAgIHsKICAgICAgICAkaW5kZXggPSBhcnJheV9zZWFyY2goJGVsZW1lbnQsICRsaXN0LCB0cnVlKTsKCiAgICAgICAgaWYgKCRpbmRleCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBsaXN0IGNvbnRhaW5zIG5vIG1hdGNoaW5nIGVsZW1lbnRzLicpOwogICAgICAgIH0KCiAgICAgICAgLy8gQHBocHN0YW4taWdub3JlIHBhcmFtZXRlckJ5UmVmLnR5cGUKICAgICAgICAkbGlzdFskaW5kZXhdID0gbnVsbDsKICAgICAgICBcYXNzZXJ0KGFycmF5X2lzX2xpc3QoJGxpc3QpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbmRzIGEgbGluZSBpbiAkY29udGV4dCBjb250YWluaW5nICR0ZXh0IGF0IHRoZSBzcGVjaWZpZWQgY29sdW1uLgogICAgICoKICAgICAqIFJldHVybnMgdGhlIGluZGV4IGluICRjb250ZXh0IHdoZXJlIHRoYXQgbGluZSBiZWdpbnMsIG9yIG51bGwgaWYgbm9uZQogICAgICogZXhpc3RzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZpbmRMaW5lU3RhcnQoc3RyaW5nICRjb250ZXh0LCBzdHJpbmcgJHRleHQsIGludCAkY29sdW1uKTogP2ludAogICAgewogICAgICAgIC8vIElmIHRoZSB0ZXh0IGlzIGVtcHR5LCB3ZSBqdXN0IHdhbnQgdG8gZmluZCB0aGUgZmlyc3QgbGluZSB0aGF0IGhhcyBhdCBsZWFzdAogICAgICAgIC8vICRjb2x1bW4gY2hhcmFjdGVycy4KICAgICAgICBpZiAoJHRleHQgPT09ICcnKSB7CiAgICAgICAgICAgICRiZWdpbm5pbmdPZkxpbmUgPSAwOwoKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICRpbmRleCA9IHN0cnBvcygkY29udGV4dCwgIlxuIiwgJGJlZ2lubmluZ09mTGluZSk7CgogICAgICAgICAgICAgICAgaWYgKCRpbmRleCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gXHN0cmxlbigkY29udGV4dCkgLSAkYmVnaW5uaW5nT2ZMaW5lID49ICRjb2x1bW4gPyAkYmVnaW5uaW5nT2ZMaW5lIDogbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJGluZGV4IC0gJGJlZ2lubmluZ09mTGluZSA+PSAkY29sdW1uKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRiZWdpbm5pbmdPZkxpbmU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGJlZ2lubmluZ09mTGluZSA9ICRpbmRleCArIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRpbmRleCA9IHN0cnBvcygkY29udGV4dCwgJHRleHQpOwoKICAgICAgICB3aGlsZSAoJGluZGV4ICE9PSBmYWxzZSkgewogICAgICAgICAgICAvLyBTdGFydCBsb29raW5nIGJlZm9yZSAkaW5kZXggaW4gY2FzZSAkdGV4dCBzdGFydHMgd2l0aCBhIG5ld2xpbmUuCiAgICAgICAgICAgICRsaW5lU3RhcnQgPSAkaW5kZXggPT09IDAgPyAwIDogVXRpbDo6bGFzdEluZGV4T2YoJGNvbnRleHQsICJcbiIsICRpbmRleCAtIDEpICsgMTsKICAgICAgICAgICAgJHRleHRDb2x1bW4gPSAkaW5kZXggLSAkbGluZVN0YXJ0OwoKICAgICAgICAgICAgaWYgKCRjb2x1bW4gPT09ICR0ZXh0Q29sdW1uKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGxpbmVTdGFydDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGluZGV4ID0gc3RycG9zKCRjb250ZXh0LCAkdGV4dCwgJGluZGV4ICsgMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSB0d28tZWxlbWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHN0YXJ0IGFuZCBlbmQgbG9jYXRpb25zIG9mIHRoZQogICAgICogc3BhbiBmcm9tICRzdGFydCBieXRlcyAoaW5jbHVzaXZlKSB0byAkZW5kIGJ5dGVzIChleGNsdXNpdmUpCiAgICAgKiBhZnRlciB0aGUgYmVnaW5uaW5nIG9mICRzcGFuLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7U291cmNlTG9jYXRpb24sIFNvdXJjZUxvY2F0aW9ufQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN1YnNwYW5Mb2NhdGlvbnMoU291cmNlU3BhbiAkc3BhbiwgaW50ICRzdGFydCwgP2ludCAkZW5kID0gbnVsbCk6IGFycmF5CiAgICB7CiAgICAgICAgJHRleHQgPSAkc3Bhbi0+Z2V0VGV4dCgpOwogICAgICAgICRzdGFydExvY2F0aW9uID0gJHNwYW4tPmdldFN0YXJ0KCk7CiAgICAgICAgJGxpbmUgPSAkc3RhcnRMb2NhdGlvbi0+Z2V0TGluZSgpOwogICAgICAgICRjb2x1bW4gPSAkc3RhcnRMb2NhdGlvbi0+Z2V0Q29sdW1uKCk7CgogICAgICAgIC8vIEFkanVzdCAkbGluZSBhbmQgJGNvbHVtbiBhcyBuZWNlc3NhcnkgaWYgdGhlIGNoYXJhY3RlciBhdCAkaSBpbiAkdGV4dAogICAgICAgIC8vIGlzIGEgbmV3bGluZS4KICAgICAgICAkY29uc3VtZUNvZGVQb2ludCA9IGZ1bmN0aW9uIChpbnQgJGkpIHVzZSAoJHRleHQsICYkbGluZSwgJiRjb2x1bW4pIHsKICAgICAgICAgICAgJGNvZGVVbml0ID0gJHRleHRbJGldOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJGNvZGVVbml0ID09PSAiXG4iIHx8CiAgICAgICAgICAgICAgICAvLyBBIGNhcnJpYWdlIHJldHVybiBjb3VudHMgYXMgYSBuZXdsaW5lLCBidXQgb25seSBpZiBpdCdzIG5vdAogICAgICAgICAgICAgICAgLy8gZm9sbG93ZWQgYnkgYSBsaW5lIGZlZWQuCiAgICAgICAgICAgICAgICAoJGNvZGVVbml0ID09PSAiXHIiICYmICgkaSArIDEgPT09IFxzdHJsZW4oJHRleHQpIHx8ICR0ZXh0WyRpICsgMV0gIT09ICJcbiIpKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRsaW5lICs9IDE7CiAgICAgICAgICAgICAgICAkY29sdW1uID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRjb2x1bW4gKz0gMTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRzdGFydDsgJGkrKykgewogICAgICAgICAgICAkY29uc3VtZUNvZGVQb2ludCgkaSk7CiAgICAgICAgfQoKICAgICAgICAkbmV3U3RhcnRMb2NhdGlvbiA9IG5ldyBTaW1wbGVTb3VyY2VMb2NhdGlvbigkc3RhcnRMb2NhdGlvbi0+Z2V0T2Zmc2V0KCkgKyAkc3RhcnQsICRzcGFuLT5nZXRTb3VyY2VVcmwoKSwgJGxpbmUsICRjb2x1bW4pOwoKICAgICAgICBpZiAoJGVuZCA9PT0gbnVsbCB8fCAkZW5kID09PSAkc3Bhbi0+Z2V0TGVuZ3RoKCkpIHsKICAgICAgICAgICAgJG5ld0VuZExvY2F0aW9uID0gJHNwYW4tPmdldEVuZCgpOwogICAgICAgIH0gZWxzZWlmICgkZW5kID09PSAkc3RhcnQpIHsKICAgICAgICAgICAgJG5ld0VuZExvY2F0aW9uID0gJG5ld1N0YXJ0TG9jYXRpb247CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZm9yICgkaSA9ICRzdGFydDsgJGkgPCAkZW5kOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAkY29uc3VtZUNvZGVQb2ludCgkaSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRuZXdFbmRMb2NhdGlvbiA9IG5ldyBTaW1wbGVTb3VyY2VMb2NhdGlvbigkc3RhcnRMb2NhdGlvbi0+Z2V0T2Zmc2V0KCkgKyAkZW5kLCAkc3Bhbi0+Z2V0U291cmNlVXJsKCksICRsaW5lLCAkY29sdW1uKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJG5ld1N0YXJ0TG9jYXRpb24sICRuZXdFbmRMb2NhdGlvbl07CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIGxhc3QgbWF0Y2ggJG5lZWRsZSBpbiB0aGlzIHN0cmluZy4KICAgICAqCiAgICAgKiBGaW5kcyBhIG1hdGNoIG9mICRuZWVkbGUgYnkgc2VhcmNoaW5nIGJhY2t3YXJkIHN0YXJ0aW5nIGF0ICRzdGFydC4KICAgICAqIFJldHVybnMgLTEgaWYgJG5lZWRsZSBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhpcyBzdHJpbmcuCiAgICAgKiBJZiAkc3RhcnQgaXMgb21pdHRlZCwgc2VhcmNoIHN0YXJ0cyBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsYXN0SW5kZXhPZihzdHJpbmcgJHN0cmluZywgc3RyaW5nICRuZWVkbGUsID9pbnQgJHN0YXJ0ID0gbnVsbCk6IGludAogICAgewogICAgICAgIGlmICgkc3RhcnQgPT09IG51bGwgfHwgJHN0YXJ0ID09PSBcc3RybGVuKCRzdHJpbmcpKSB7CiAgICAgICAgICAgICRwb3NpdGlvbiA9IHN0cnJwb3MoJHN0cmluZywgJG5lZWRsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCRzdGFydCA8IDApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJTdGFydCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIiKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRzdGFydCA+IFxzdHJsZW4oJHN0cmluZykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJTdGFydCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwb3NpdGlvbiA9IHN0cnJwb3MoJHN0cmluZywgJG5lZWRsZSwgJHN0YXJ0IC0gXHN0cmxlbigkc3RyaW5nKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBvc2l0aW9uID09PSBmYWxzZSA/IC0xIDogJHBvc2l0aW9uOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgdGV4dCBvZiB0aGUgc3RyaW5nIGZyb20gJHN0YXJ0IHRvICRlbmQgKGV4Y2x1c2l2ZSkuCiAgICAgKgogICAgICogSWYgJGVuZCBpc24ndCBwYXNzZWQsIGl0IGRlZmF1bHRzIHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdWJzdHJpbmcoc3RyaW5nICR0ZXh0LCBpbnQgJHN0YXJ0LCA/aW50ICRlbmQgPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRlbmQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkdGV4dCwgJHN0YXJ0KTsKICAgICAgICB9CgogICAgICAgIGlmICgkZW5kIDwgJHN0YXJ0KSB7CiAgICAgICAgICAgICRsZW5ndGggPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRsZW5ndGggPSAkZW5kIC0gJHN0YXJ0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN1YnN0cigkdGV4dCwgJHN0YXJ0LCAkbGVuZ3RoKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzU2FtZVVybCg/VXJpSW50ZXJmYWNlICR1cmwxLCA/VXJpSW50ZXJmYWNlICR1cmwyKTogYm9vbAogICAgewogICAgICAgIGlmICgkdXJsMSA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHVybDIgPT09IG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVybDIgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChzdHJpbmcpICR1cmwxID09PSAoc3RyaW5nKSAkdXJsMjsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbmRzIHRoZSBmaXJzdCBpbmRleCBpbiB0aGUgbGlzdCB0aGF0IHNhdGlzZmllcyB0aGUgcHJvdmlkZWQgJHRlc3QuCiAgICAgKgogICAgICogQHRlbXBsYXRlIEUKICAgICAqCiAgICAgKiBAcGFyYW0gbGlzdDxFPiAkbGlzdAogICAgICogQHBhcmFtIGNhbGxhYmxlKEUpOiBib29sICR0ZXN0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5kZXhXaGVyZShhcnJheSAkbGlzdCwgY2FsbGFibGUgJHRlc3QpOiA/aW50CiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJGluZGV4ID0+ICRlbGVtZW50KSB7CiAgICAgICAgICAgIGlmICgkdGVzdCgkZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaW5kZXg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgdGhhdCBhIHJhbmdlIHJlcHJlc2VudHMgYSBzbGljZSBvZiBhbiBpbmRleGFibGUgb2JqZWN0LgogICAgICoKICAgICAqIFRocm93cyBpZiB0aGUgcmFuZ2UgaXMgbm90IHZhbGlkIGZvciBhbiBpbmRleGFibGUgb2JqZWN0IHdpdGgKICAgICAqIHRoZSBnaXZlbiBsZW5ndGguCiAgICAgKiBBIHJhbmdlIGlzIHZhbGlkIGZvciBhbiBpbmRleGFibGUgb2JqZWN0IHdpdGggYSBnaXZlbiAkbGVuZ3RoCiAgICAgKiBpZiBgMCA8PSAkc3RhcnQgPD0gJGVuZCA8PSAkbGVuZ3RoYC4KICAgICAqIEFuIGBlbmRgIG9mIGBudWxsYCBpcyBjb25zaWRlcmVkIGVxdWl2YWxlbnQgdG8gYGxlbmd0aGAuCiAgICAgKgogICAgICogQHRocm93cyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrVmFsaWRSYW5nZShpbnQgJHN0YXJ0LCA/aW50ICRlbmQsIGludCAkbGVuZ3RoLCA/c3RyaW5nICRzdGFydE5hbWUgPSBudWxsLCA/c3RyaW5nICRlbmROYW1lID0gbnVsbCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHN0YXJ0IDwgMCB8fCAkc3RhcnQgPiAkbGVuZ3RoKSB7CiAgICAgICAgICAgICRzdGFydE5hbWUgPz89ICdzdGFydCc7CiAgICAgICAgICAgICRzdGFydE5hbWVEaXNwbGF5ID0gJHN0YXJ0TmFtZSA/ICIgJHN0YXJ0TmFtZSIgOiAnJzsKCiAgICAgICAgICAgIHRocm93IG5ldyBcT3V0T2ZSYW5nZUV4Y2VwdGlvbigiSW52YWxpZCB2YWx1ZTokc3RhcnROYW1lRGlzcGxheSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJGxlbmd0aDogJHN0YXJ0LiIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRlbmQgIT09IG51bGwpIHsKICAgICAgICAgICAgaWYgKCRlbmQgPCAkc3RhcnQgfHwgJGVuZCA+ICRsZW5ndGgpIHsKICAgICAgICAgICAgICAgICRlbmROYW1lID8/PSAnZW5kJzsKICAgICAgICAgICAgICAgICRlbmROYW1lRGlzcGxheSA9ICRlbmROYW1lID8gIiAkZW5kTmFtZSIgOiAnJzsKCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mUmFuZ2VFeGNlcHRpb24oIkludmFsaWQgdmFsdWU6JGVuZE5hbWVEaXNwbGF5IG11c3QgYmUgYmV0d2VlbiAkc3RhcnQgYW5kICRsZW5ndGg6ICRlbmQuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGVtcGxhdGUgVAogICAgICoKICAgICAqIEBwYXJhbSBsaXN0PFQ+ICRsaXN0CiAgICAgKgogICAgICogQHJldHVybiBUCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGlzdExhc3QoYXJyYXkgJGxpc3QpCiAgICB7CiAgICAgICAgJGNvdW50ID0gY291bnQoJGxpc3QpOwoKICAgICAgICBpZiAoJGNvdW50ID09PSAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ1RoZSBsaXN0IG1heSBub3QgYmUgZW1wdHkuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxpc3RbJGNvdW50IC0gMV07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgcHJldHR5IFVSSSBmb3IgYSBwYXRoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcHJldHR5VXJpKHN0cmluZ3xVcmlJbnRlcmZhY2UgJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHBhdGggaW5zdGFuY2VvZiBVcmlJbnRlcmZhY2UpIHsKICAgICAgICAgICAgaWYgKCRwYXRoLT5nZXRTY2hlbWUoKSAhPT0gJ2ZpbGUnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cmluZykgJHBhdGg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXRoID0gc2VsZjo6cGF0aEZyb21VcmkoJHBhdGgpOwogICAgICAgIH0KCiAgICAgICAgJG5vcm1hbGl6ZWRQYXRoID0gJHBhdGg7CiAgICAgICAgJG5vcm1hbGl6ZWRSb290RGlyZWN0b3J5ID0gZ2V0Y3dkKCkgLiAnLyc7CgogICAgICAgIGlmIChcRElSRUNUT1JZX1NFUEFSQVRPUiA9PT0gJ1xcJykgewogICAgICAgICAgICAkbm9ybWFsaXplZFJvb3REaXJlY3RvcnkgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRub3JtYWxpemVkUm9vdERpcmVjdG9yeSk7CiAgICAgICAgICAgICRub3JtYWxpemVkUGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHBhdGgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkbm9ybWFsaXplZFBhdGgsICRub3JtYWxpemVkUm9vdERpcmVjdG9yeSkpIHsKICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkcGF0aCwgXHN0cmxlbigkbm9ybWFsaXplZFJvb3REaXJlY3RvcnkpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGF0aDsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwYXRoRnJvbVVyaShVcmlJbnRlcmZhY2UgJHVyaSk6IHN0cmluZwogICAgewogICAgICAgIGlmICghJHVyaSBpbnN0YW5jZW9mIFVyaSkgewogICAgICAgICAgICAkdXJpID0gVXJpOjpuZXcoJHVyaSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXERJUkVDVE9SWV9TRVBBUkFUT1IgPT09ICdcXCcpIHsKICAgICAgICAgICAgcmV0dXJuICR1cmktPnRvV2luZG93c1BhdGgoKSA/PyB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVXJpICR1cmkgbXVzdCBoYXZlIHNjaGVtZSAnZmlsZTonLiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmktPnRvVW5peFBhdGgoKSA/PyB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVXJpICR1cmkgbXVzdCBoYXZlIHNjaGVtZSAnZmlsZTonLiIpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q0hBTkdFTE9HCj09PT09PT09PQoKNS40Ci0tLQoKICogQWRkIGBQYXRoYCBjbGFzcwogKiBBZGQgYCRsb2NrYCBhcmd1bWVudCB0byBgRmlsZXN5c3RlbTo6YXBwZW5kVG9GaWxlKClgCgo1LjAuMAotLS0tLQoKICogYEZpbGVzeXN0ZW06OmR1bXBGaWxlKClgIGFuZCBgYXBwZW5kVG9GaWxlKClgIGRvbid0IGFjY2VwdCBhcnJheXMgYW55bW9yZQoKNC40LjAKLS0tLS0KCiAqIHN1cHBvcnQgZm9yIHBhc3NpbmcgYSBgbnVsbGAgdmFsdWUgdG8gYEZpbGVzeXN0ZW06OmlzQWJzb2x1dGVQYXRoKClgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAKICogYHRlbXBuYW0oKWAgbm93IGFjY2VwdHMgYSB0aGlyZCBhcmd1bWVudCBgJHN1ZmZpeGAuCgo0LjMuMAotLS0tLQoKICogc3VwcG9ydCBmb3IgcGFzc2luZyBhcnJheXMgdG8gYEZpbGVzeXN0ZW06OmR1bXBGaWxlKClgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAKICogc3VwcG9ydCBmb3IgcGFzc2luZyBhcnJheXMgdG8gYEZpbGVzeXN0ZW06OmFwcGVuZFRvRmlsZSgpYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wCgo0LjAuMAotLS0tLQoKICogcmVtb3ZlZCBgTG9ja0hhbmRsZXJgCiAqIFN1cHBvcnQgZm9yIHBhc3NpbmcgcmVsYXRpdmUgcGF0aHMgdG8gYEZpbGVzeXN0ZW06Om1ha2VQYXRoUmVsYXRpdmUoKWAgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuNC4wCi0tLS0tCgogKiBzdXBwb3J0IGZvciBwYXNzaW5nIHJlbGF0aXZlIHBhdGhzIHRvIGBGaWxlc3lzdGVtOjptYWtlUGF0aFJlbGF0aXZlKClgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA0LjAKCjMuMy4wCi0tLS0tCgogKiBhZGRlZCBgYXBwZW5kVG9GaWxlKClgIHRvIGFwcGVuZCBjb250ZW50cyB0byBleGlzdGluZyBmaWxlcwoKMy4yLjAKLS0tLS0KCiAqIGFkZGVkIGByZWFkbGluaygpYCBhcyBhIHBsYXRmb3JtIGluZGVwZW5kZW50IG1ldGhvZCB0byByZWFkIGxpbmtzCgozLjAuMAotLS0tLQoKICogcmVtb3ZlZCBgJG1vZGVgIGFyZ3VtZW50IGZyb20gYEZpbGVzeXN0ZW06OmR1bXBGaWxlKClgCgoyLjguMAotLS0tLQoKICogYWRkZWQgdGVtcG5hbSgpIGEgc3RyZWFtIGF3YXJlIHZlcnNpb24gb2YgUEhQJ3MgbmF0aXZlIHRlbXBuYW0oKQoKMi42LjAKLS0tLS0KCiAqIGFkZGVkIExvY2tIYW5kbGVyCgoyLjMuMTIKLS0tLS0tCgogKiBkZXByZWNhdGVkIGR1bXBGaWxlKCkgZmlsZSBtb2RlIGFyZ3VtZW50LgoKMi4zLjAKLS0tLS0KCiAqIGFkZGVkIHRoZSBkdW1wRmlsZSgpIG1ldGhvZCB0byBhdG9taWNhbGx5IHdyaXRlIGZpbGVzCgoyLjIuMAotLS0tLQoKICogYWRkZWQgYSBkZWxldGUgb3B0aW9uIGZvciB0aGUgbWlycm9yKCkgbWV0aG9kCgoyLjEuMAotLS0tLQoKICogMjRlYjM5NiA6IEJDIEJyZWFrIDogbWtkaXIoKSBmdW5jdGlvbiBub3cgdGhyb3dzIGV4Y2VwdGlvbiBpbiBjYXNlIG9mIGZhaWx1cmUgaW5zdGVhZCBvZiByZXR1cm5pbmcgQm9vbGVhbiB2YWx1ZQogKiBjcmVhdGVkIHRoZSBjb21wb25lbnQK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9maWxlc3lzdGVtIiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGJhc2ljIHV0aWxpdGllcyBmb3IgdGhlIGZpbGVzeXN0ZW0iLAogICAgImtleXdvcmRzIjogW10sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGYWJpZW4gUG90ZW5jaWVyIiwKICAgICAgICAgICAgImVtYWlsIjogImZhYmllbkBzeW1mb255LmNvbSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj04LjEiLAogICAgICAgICJzeW1mb255L3BvbHlmaWxsLWN0eXBlIjogIn4xLjgiLAogICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIn4xLjgiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJzeW1mb255L3Byb2Nlc3MiOiAiXjUuNHxeNi40fF43LjAiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsgIlN5bWZvbnlcXENvbXBvbmVudFxcRmlsZXN5c3RlbVxcIjogIiIgfSwKICAgICAgICAiZXhjbHVkZS1mcm9tLWNsYXNzbWFwIjogWwogICAgICAgICAgICAiL1Rlc3RzLyIKICAgICAgICBdCiAgICB9LAogICAgIm1pbmltdW0tc3RhYmlsaXR5IjogImRldiIKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Exception/ExceptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxGaWxlc3lzdGVtXEV4Y2VwdGlvbjsKCi8qKgogKiBFeGNlcHRpb24gaW50ZXJmYWNlIGZvciBhbGwgZXhjZXB0aW9ucyB0aHJvd24gYnkgdGhlIGNvbXBvbmVudC4KICoKICogQGF1dGhvciBSb21haW4gTmV1dHJvbiA8aW1wcmVjQGdtYWlsLmNvbT4KICovCmludGVyZmFjZSBFeGNlcHRpb25JbnRlcmZhY2UgZXh0ZW5kcyBcVGhyb3dhYmxlCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Exception/FileNotFoundException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxGaWxlc3lzdGVtXEV4Y2VwdGlvbjsKCi8qKgogKiBFeGNlcHRpb24gY2xhc3MgdGhyb3duIHdoZW4gYSBmaWxlIGNvdWxkbid0IGJlIGZvdW5kLgogKgogKiBAYXV0aG9yIEZhYmllbiBQb3RlbmNpZXIgPGZhYmllbkBzeW1mb255LmNvbT4KICogQGF1dGhvciBDaHJpc3RpYW4gR8OkcnRuZXIgPGNocmlzdGlhbmdhZXJ0bmVyLmZpbG1AZ29vZ2xlbWFpbC5jb20+CiAqLwpjbGFzcyBGaWxlTm90Rm91bmRFeGNlcHRpb24gZXh0ZW5kcyBJT0V4Y2VwdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoP3N0cmluZyAkbWVzc2FnZSA9IG51bGwsIGludCAkY29kZSA9IDAsID9cVGhyb3dhYmxlICRwcmV2aW91cyA9IG51bGwsID9zdHJpbmcgJHBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmIChudWxsID09PSAkbWVzc2FnZSkgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gJHBhdGgpIHsKICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJ0ZpbGUgY291bGQgbm90IGJlIGZvdW5kLic7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKCdGaWxlICIlcyIgY291bGQgbm90IGJlIGZvdW5kLicsICRwYXRoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUsICRwcmV2aW91cywgJHBhdGgpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Exception/InvalidArgumentException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxGaWxlc3lzdGVtXEV4Y2VwdGlvbjsKCi8qKgogKiBAYXV0aG9yIENocmlzdGlhbiBGbG90aG1hbm4gPGNocmlzdGlhbi5mbG90aG1hbm5Ac2Vuc2lvbGFicy5kZT4KICovCmNsYXNzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBleHRlbmRzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaW1wbGVtZW50cyBFeGNlcHRpb25JbnRlcmZhY2UKewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Exception/IOException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxGaWxlc3lzdGVtXEV4Y2VwdGlvbjsKCi8qKgogKiBFeGNlcHRpb24gY2xhc3MgdGhyb3duIHdoZW4gYSBmaWxlc3lzdGVtIG9wZXJhdGlvbiBmYWlsdXJlIGhhcHBlbnMuCiAqCiAqIEBhdXRob3IgUm9tYWluIE5ldXRyb24gPGltcHJlY0BnbWFpbC5jb20+CiAqIEBhdXRob3IgQ2hyaXN0aWFuIEfDpHJ0bmVyIDxjaHJpc3RpYW5nYWVydG5lci5maWxtQGdvb2dsZW1haWwuY29tPgogKiBAYXV0aG9yIEZhYmllbiBQb3RlbmNpZXIgPGZhYmllbkBzeW1mb255LmNvbT4KICovCmNsYXNzIElPRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24gaW1wbGVtZW50cyBJT0V4Y2VwdGlvbkludGVyZmFjZQp7CiAgICBwcml2YXRlID9zdHJpbmcgJHBhdGg7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkbWVzc2FnZSwgaW50ICRjb2RlID0gMCwgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCwgP3N0cmluZyAkcGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnBhdGggPSAkcGF0aDsKCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUsICRwcmV2aW91cyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhdGgoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGF0aDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Exception/IOExceptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxGaWxlc3lzdGVtXEV4Y2VwdGlvbjsKCi8qKgogKiBJT0V4Y2VwdGlvbiBpbnRlcmZhY2UgZm9yIGZpbGUgYW5kIGlucHV0L291dHB1dCBzdHJlYW0gcmVsYXRlZCBleGNlcHRpb25zIHRocm93biBieSB0aGUgY29tcG9uZW50LgogKgogKiBAYXV0aG9yIENocmlzdGlhbiBHw6RydG5lciA8Y2hyaXN0aWFuZ2FlcnRuZXIuZmlsbUBnb29nbGVtYWlsLmNvbT4KICovCmludGVyZmFjZSBJT0V4Y2VwdGlvbkludGVyZmFjZSBleHRlbmRzIEV4Y2VwdGlvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGFzc29jaWF0ZWQgcGF0aCBmb3IgdGhlIGV4Y2VwdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhdGgoKTogP3N0cmluZzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Exception/RuntimeException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxGaWxlc3lzdGVtXEV4Y2VwdGlvbjsKCi8qKgogKiBAYXV0aG9yIFRow6lvIEZpZHJ5IDx0aGVvLmZpZHJ5QGdtYWlsLmNvbT4KICovCmNsYXNzIFJ1bnRpbWVFeGNlcHRpb24gZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEV4Y2VwdGlvbkludGVyZmFjZQp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Filesystem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxGaWxlc3lzdGVtOwoKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEZpbGVzeXN0ZW1cRXhjZXB0aW9uXEZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEZpbGVzeXN0ZW1cRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEZpbGVzeXN0ZW1cRXhjZXB0aW9uXElPRXhjZXB0aW9uOwoKLyoqCiAqIFByb3ZpZGVzIGJhc2ljIHV0aWxpdHkgdG8gbWFuaXB1bGF0ZSB0aGUgZmlsZSBzeXN0ZW0uCiAqCiAqIEBhdXRob3IgRmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgogKi8KY2xhc3MgRmlsZXN5c3RlbQp7CiAgICBwcml2YXRlIHN0YXRpYyA/c3RyaW5nICRsYXN0RXJyb3IgPSBudWxsOwoKICAgIC8qKgogICAgICogQ29waWVzIGEgZmlsZS4KICAgICAqCiAgICAgKiBJZiB0aGUgdGFyZ2V0IGZpbGUgaXMgb2xkZXIgdGhhbiB0aGUgb3JpZ2luIGZpbGUsIGl0J3MgYWx3YXlzIG92ZXJ3cml0dGVuLgogICAgICogSWYgdGhlIHRhcmdldCBmaWxlIGlzIG5ld2VyLCBpdCBpcyBvdmVyd3JpdHRlbiBvbmx5IHdoZW4gdGhlCiAgICAgKiAkb3ZlcndyaXRlTmV3ZXJGaWxlcyBvcHRpb24gaXMgc2V0IHRvIHRydWUuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24gV2hlbiBvcmlnaW5GaWxlIGRvZXNuJ3QgZXhpc3QKICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gICAgICAgICAgIFdoZW4gY29weSBmYWlscwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29weShzdHJpbmcgJG9yaWdpbkZpbGUsIHN0cmluZyAkdGFyZ2V0RmlsZSwgYm9vbCAkb3ZlcndyaXRlTmV3ZXJGaWxlcyA9IGZhbHNlKQogICAgewogICAgICAgICRvcmlnaW5Jc0xvY2FsID0gc3RyZWFtX2lzX2xvY2FsKCRvcmlnaW5GaWxlKSB8fCAwID09PSBzdHJpcG9zKCRvcmlnaW5GaWxlLCAnZmlsZTovLycpOwogICAgICAgIGlmICgkb3JpZ2luSXNMb2NhbCAmJiAhaXNfZmlsZSgkb3JpZ2luRmlsZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEZpbGVOb3RGb3VuZEV4Y2VwdGlvbihcc3ByaW50ZignRmFpbGVkIHRvIGNvcHkgIiVzIiBiZWNhdXNlIGZpbGUgZG9lcyBub3QgZXhpc3QuJywgJG9yaWdpbkZpbGUpLCAwLCBudWxsLCAkb3JpZ2luRmlsZSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bWtkaXIoXGRpcm5hbWUoJHRhcmdldEZpbGUpKTsKCiAgICAgICAgJGRvQ29weSA9IHRydWU7CiAgICAgICAgaWYgKCEkb3ZlcndyaXRlTmV3ZXJGaWxlcyAmJiAhcGFyc2VfdXJsKCRvcmlnaW5GaWxlLCBcUEhQX1VSTF9IT1NUKSAmJiBpc19maWxlKCR0YXJnZXRGaWxlKSkgewogICAgICAgICAgICAkZG9Db3B5ID0gZmlsZW10aW1lKCRvcmlnaW5GaWxlKSA+IGZpbGVtdGltZSgkdGFyZ2V0RmlsZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRvQ29weSkgewogICAgICAgICAgICAvLyBodHRwczovL2J1Z3MucGhwLm5ldC82NDYzNAogICAgICAgICAgICBpZiAoISRzb3VyY2UgPSBzZWxmOjpib3goJ2ZvcGVuJywgJG9yaWdpbkZpbGUsICdyJykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignRmFpbGVkIHRvIGNvcHkgIiVzIiB0byAiJXMiIGJlY2F1c2Ugc291cmNlIGZpbGUgY291bGQgbm90IGJlIG9wZW5lZCBmb3IgcmVhZGluZzogJywgJG9yaWdpbkZpbGUsICR0YXJnZXRGaWxlKS5zZWxmOjokbGFzdEVycm9yLCAwLCBudWxsLCAkb3JpZ2luRmlsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFN0cmVhbSBjb250ZXh0IGNyZWF0ZWQgdG8gYWxsb3cgZmlsZXMgb3ZlcndyaXRlIHdoZW4gdXNpbmcgRlRQIHN0cmVhbSB3cmFwcGVyIC0gZGlzYWJsZWQgYnkgZGVmYXVsdAogICAgICAgICAgICBpZiAoISR0YXJnZXQgPSBzZWxmOjpib3goJ2ZvcGVuJywgJHRhcmdldEZpbGUsICd3JywgZmFsc2UsIHN0cmVhbV9jb250ZXh0X2NyZWF0ZShbJ2Z0cCcgPT4gWydvdmVyd3JpdGUnID0+IHRydWVdXSkpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oXHNwcmludGYoJ0ZhaWxlZCB0byBjb3B5ICIlcyIgdG8gIiVzIiBiZWNhdXNlIHRhcmdldCBmaWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQgZm9yIHdyaXRpbmc6ICcsICRvcmlnaW5GaWxlLCAkdGFyZ2V0RmlsZSkuc2VsZjo6JGxhc3RFcnJvciwgMCwgbnVsbCwgJG9yaWdpbkZpbGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYnl0ZXNDb3BpZWQgPSBzdHJlYW1fY29weV90b19zdHJlYW0oJHNvdXJjZSwgJHRhcmdldCk7CiAgICAgICAgICAgIGZjbG9zZSgkc291cmNlKTsKICAgICAgICAgICAgZmNsb3NlKCR0YXJnZXQpOwogICAgICAgICAgICB1bnNldCgkc291cmNlLCAkdGFyZ2V0KTsKCiAgICAgICAgICAgIGlmICghaXNfZmlsZSgkdGFyZ2V0RmlsZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignRmFpbGVkIHRvIGNvcHkgIiVzIiB0byAiJXMiLicsICRvcmlnaW5GaWxlLCAkdGFyZ2V0RmlsZSksIDAsIG51bGwsICRvcmlnaW5GaWxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRvcmlnaW5Jc0xvY2FsKSB7CiAgICAgICAgICAgICAgICAvLyBMaWtlIGBjcGAsIHByZXNlcnZlIHRoZSBzb3VyY2UgbW9kZSBtYXNrZWQgYnkgdGhlIHVtYXNrCiAgICAgICAgICAgICAgICBzZWxmOjpib3goJ2NobW9kJywgJHRhcmdldEZpbGUsIGZpbGVwZXJtcygkb3JpZ2luRmlsZSkgJiAwbzc3NyAmIH51bWFzaygpKTsKCiAgICAgICAgICAgICAgICAvLyBMaWtlIGBjcGAsIHByZXNlcnZlIHRoZSBmaWxlIG1vZGlmaWNhdGlvbiB0aW1lCiAgICAgICAgICAgICAgICBzZWxmOjpib3goJ3RvdWNoJywgJHRhcmdldEZpbGUsIGZpbGVtdGltZSgkb3JpZ2luRmlsZSkpOwoKICAgICAgICAgICAgICAgIGlmICgkYnl0ZXNDb3BpZWQgIT09ICRieXRlc09yaWdpbiA9IGZpbGVzaXplKCRvcmlnaW5GaWxlKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignRmFpbGVkIHRvIGNvcHkgdGhlIHdob2xlIGNvbnRlbnQgb2YgIiVzIiB0byAiJXMiICglZyBvZiAlZyBieXRlcyBjb3BpZWQpLicsICRvcmlnaW5GaWxlLCAkdGFyZ2V0RmlsZSwgJGJ5dGVzQ29waWVkLCAkYnl0ZXNPcmlnaW4pLCAwLCBudWxsLCAkb3JpZ2luRmlsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgZGlyZWN0b3J5IHJlY3Vyc2l2ZWx5LgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gT24gYW55IGRpcmVjdG9yeSBjcmVhdGlvbiBmYWlsdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBta2RpcihzdHJpbmd8aXRlcmFibGUgJGRpcnMsIGludCAkbW9kZSA9IDBvNzc3KQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT50b0l0ZXJhYmxlKCRkaXJzKSBhcyAkZGlyKSB7CiAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcikpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIXNlbGY6OmJveCgnbWtkaXInLCAkZGlyLCAkbW9kZSwgdHJ1ZSkgJiYgIWlzX2RpcigkZGlyKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdGYWlsZWQgdG8gY3JlYXRlICIlcyI6ICcsICRkaXIpLnNlbGY6OiRsYXN0RXJyb3IsIDAsIG51bGwsICRkaXIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIHRoZSBleGlzdGVuY2Ugb2YgZmlsZXMgb3IgZGlyZWN0b3JpZXMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleGlzdHMoc3RyaW5nfGl0ZXJhYmxlICRmaWxlcyk6IGJvb2wKICAgIHsKICAgICAgICAkbWF4UGF0aExlbmd0aCA9IFxQSFBfTUFYUEFUSExFTiAtIDI7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT50b0l0ZXJhYmxlKCRmaWxlcykgYXMgJGZpbGUpIHsKICAgICAgICAgICAgaWYgKFxzdHJsZW4oJGZpbGUpID4gJG1heFBhdGhMZW5ndGgpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignQ291bGQgbm90IGNoZWNrIGlmIGZpbGUgZXhpc3QgYmVjYXVzZSBwYXRoIGxlbmd0aCBleGNlZWRzICVkIGNoYXJhY3RlcnMuJywgJG1heFBhdGhMZW5ndGgpLCAwLCBudWxsLCAkZmlsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lIG9mIGZpbGUuCiAgICAgKgogICAgICogQHBhcmFtIGludHxudWxsICR0aW1lICBUaGUgdG91Y2ggdGltZSBhcyBhIFVuaXggdGltZXN0YW1wLCBpZiBub3Qgc3VwcGxpZWQgdGhlIGN1cnJlbnQgc3lzdGVtIHRpbWUgaXMgdXNlZAogICAgICogQHBhcmFtIGludHxudWxsICRhdGltZSBUaGUgYWNjZXNzIHRpbWUgYXMgYSBVbml4IHRpbWVzdGFtcCwgaWYgbm90IHN1cHBsaWVkIHRoZSBjdXJyZW50IHN5c3RlbSB0aW1lIGlzIHVzZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIFdoZW4gdG91Y2ggZmFpbHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvdWNoKHN0cmluZ3xpdGVyYWJsZSAkZmlsZXMsID9pbnQgJHRpbWUgPSBudWxsLCA/aW50ICRhdGltZSA9IG51bGwpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnRvSXRlcmFibGUoJGZpbGVzKSBhcyAkZmlsZSkgewogICAgICAgICAgICBpZiAoISgkdGltZSA/IHNlbGY6OmJveCgndG91Y2gnLCAkZmlsZSwgJHRpbWUsICRhdGltZSkgOiBzZWxmOjpib3goJ3RvdWNoJywgJGZpbGUpKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdGYWlsZWQgdG8gdG91Y2ggIiVzIjogJywgJGZpbGUpLnNlbGY6OiRsYXN0RXJyb3IsIDAsIG51bGwsICRmaWxlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlbW92ZXMgZmlsZXMgb3IgZGlyZWN0b3JpZXMuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBXaGVuIHJlbW92YWwgZmFpbHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZShzdHJpbmd8aXRlcmFibGUgJGZpbGVzKQogICAgewogICAgICAgIGlmICgkZmlsZXMgaW5zdGFuY2VvZiBcVHJhdmVyc2FibGUpIHsKICAgICAgICAgICAgJGZpbGVzID0gaXRlcmF0b3JfdG9fYXJyYXkoJGZpbGVzLCBmYWxzZSk7CiAgICAgICAgfSBlbHNlaWYgKCFcaXNfYXJyYXkoJGZpbGVzKSkgewogICAgICAgICAgICAkZmlsZXMgPSBbJGZpbGVzXTsKICAgICAgICB9CgogICAgICAgIHNlbGY6OmRvUmVtb3ZlKCRmaWxlcywgZmFsc2UpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGRvUmVtb3ZlKGFycmF5ICRmaWxlcywgYm9vbCAkaXNSZWN1cnNpdmUpOiB2b2lkCiAgICB7CiAgICAgICAgJGZpbGVzID0gYXJyYXlfcmV2ZXJzZSgkZmlsZXMpOwogICAgICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewogICAgICAgICAgICBpZiAoaXNfbGluaygkZmlsZSkpIHsKICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MucGhwLm5ldC81MjE3NgogICAgICAgICAgICAgICAgaWYgKCEoc2VsZjo6Ym94KCd1bmxpbmsnLCAkZmlsZSkgfHwgJ1xcJyAhPT0gXERJUkVDVE9SWV9TRVBBUkFUT1IgfHwgc2VsZjo6Ym94KCdybWRpcicsICRmaWxlKSkgJiYgZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdGYWlsZWQgdG8gcmVtb3ZlIHN5bWxpbmsgIiVzIjogJywgJGZpbGUpLnNlbGY6OiRsYXN0RXJyb3IpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoaXNfZGlyKCRmaWxlKSkgewogICAgICAgICAgICAgICAgaWYgKCEkaXNSZWN1cnNpdmUpIHsKICAgICAgICAgICAgICAgICAgICAkdG1wTmFtZSA9IFxkaXJuYW1lKHJlYWxwYXRoKCRmaWxlKSkuJy8uIScuc3RycmV2KHN0cnRyKGJhc2U2NF9lbmNvZGUocmFuZG9tX2J5dGVzKDIpKSwgJy89JywgJy0hJykpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHRtcE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmOjpkb1JlbW92ZShbJHRtcE5hbWVdLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkdG1wTmFtZSkgJiYgc2VsZjo6Ym94KCdyZW5hbWUnLCAkZmlsZSwgJHRtcE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcmlnRmlsZSA9ICRmaWxlOwogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICR0bXBOYW1lOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcmlnRmlsZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRmaWxlc3lzdGVtSXRlcmF0b3IgPSBuZXcgXEZpbGVzeXN0ZW1JdGVyYXRvcigkZmlsZSwgXEZpbGVzeXN0ZW1JdGVyYXRvcjo6Q1VSUkVOVF9BU19QQVRITkFNRSB8IFxGaWxlc3lzdGVtSXRlcmF0b3I6OlNLSVBfRE9UUyk7CiAgICAgICAgICAgICAgICBzZWxmOjpkb1JlbW92ZShpdGVyYXRvcl90b19hcnJheSgkZmlsZXN5c3RlbUl0ZXJhdG9yLCB0cnVlKSwgdHJ1ZSk7CgogICAgICAgICAgICAgICAgaWYgKCFzZWxmOjpib3goJ3JtZGlyJywgJGZpbGUpICYmIGZpbGVfZXhpc3RzKCRmaWxlKSAmJiAhJGlzUmVjdXJzaXZlKSB7CiAgICAgICAgICAgICAgICAgICAgJGxhc3RFcnJvciA9IHNlbGY6OiRsYXN0RXJyb3I7CgogICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAkb3JpZ0ZpbGUgJiYgc2VsZjo6Ym94KCdyZW5hbWUnLCAkZmlsZSwgJG9yaWdGaWxlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICRvcmlnRmlsZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignRmFpbGVkIHRvIHJlbW92ZSBkaXJlY3RvcnkgIiVzIjogJywgJGZpbGUpLiRsYXN0RXJyb3IpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoIXNlbGY6OmJveCgndW5saW5rJywgJGZpbGUpICYmICgoc2VsZjo6JGxhc3RFcnJvciAmJiBzdHJfY29udGFpbnMoc2VsZjo6JGxhc3RFcnJvciwgJ1Blcm1pc3Npb24gZGVuaWVkJykpIHx8IGZpbGVfZXhpc3RzKCRmaWxlKSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignRmFpbGVkIHRvIHJlbW92ZSBmaWxlICIlcyI6ICcsICRmaWxlKS5zZWxmOjokbGFzdEVycm9yKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENoYW5nZSBtb2RlIGZvciBhbiBhcnJheSBvZiBmaWxlcyBvciBkaXJlY3Rvcmllcy4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICAkbW9kZSAgICAgIFRoZSBuZXcgbW9kZSAob2N0YWwpCiAgICAgKiBAcGFyYW0gaW50ICAkdW1hc2sgICAgIFRoZSBtb2RlIG1hc2sgKG9jdGFsKQogICAgICogQHBhcmFtIGJvb2wgJHJlY3Vyc2l2ZSBXaGV0aGVyIGNoYW5nZSB0aGUgbW9kIHJlY3Vyc2l2ZWx5IG9yIG5vdAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gV2hlbiB0aGUgY2hhbmdlIGZhaWxzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaG1vZChzdHJpbmd8aXRlcmFibGUgJGZpbGVzLCBpbnQgJG1vZGUsIGludCAkdW1hc2sgPSAwbzAwMCwgYm9vbCAkcmVjdXJzaXZlID0gZmFsc2UpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnRvSXRlcmFibGUoJGZpbGVzKSBhcyAkZmlsZSkgewogICAgICAgICAgICBpZiAoIXNlbGY6OmJveCgnY2htb2QnLCAkZmlsZSwgJG1vZGUgJiB+JHVtYXNrKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdGYWlsZWQgdG8gY2htb2QgZmlsZSAiJXMiOiAnLCAkZmlsZSkuc2VsZjo6JGxhc3RFcnJvciwgMCwgbnVsbCwgJGZpbGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkcmVjdXJzaXZlICYmIGlzX2RpcigkZmlsZSkgJiYgIWlzX2xpbmsoJGZpbGUpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y2htb2QobmV3IFxGaWxlc3lzdGVtSXRlcmF0b3IoJGZpbGUpLCAkbW9kZSwgJHVtYXNrLCB0cnVlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENoYW5nZSB0aGUgb3duZXIgb2YgYW4gYXJyYXkgb2YgZmlsZXMgb3IgZGlyZWN0b3JpZXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgYWx3YXlzIHRocm93cyBvbiBXaW5kb3dzLCBhcyB0aGUgdW5kZXJseWluZyBQSFAgZnVuY3Rpb24gaXMgbm90IHN1cHBvcnRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcGhwLm5ldC9jaG93bgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8aW50ICR1c2VyICAgICAgQSB1c2VyIG5hbWUgb3IgbnVtYmVyCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAkcmVjdXJzaXZlIFdoZXRoZXIgY2hhbmdlIHRoZSBvd25lciByZWN1cnNpdmVseSBvciBub3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIFdoZW4gdGhlIGNoYW5nZSBmYWlscwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hvd24oc3RyaW5nfGl0ZXJhYmxlICRmaWxlcywgc3RyaW5nfGludCAkdXNlciwgYm9vbCAkcmVjdXJzaXZlID0gZmFsc2UpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnRvSXRlcmFibGUoJGZpbGVzKSBhcyAkZmlsZSkgewogICAgICAgICAgICBpZiAoJHJlY3Vyc2l2ZSAmJiBpc19kaXIoJGZpbGUpICYmICFpc19saW5rKCRmaWxlKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmNob3duKG5ldyBcRmlsZXN5c3RlbUl0ZXJhdG9yKCRmaWxlKSwgJHVzZXIsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc19saW5rKCRmaWxlKSAmJiBcZnVuY3Rpb25fZXhpc3RzKCdsY2hvd24nKSkgewogICAgICAgICAgICAgICAgaWYgKCFzZWxmOjpib3goJ2xjaG93bicsICRmaWxlLCAkdXNlcikpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oXHNwcmludGYoJ0ZhaWxlZCB0byBjaG93biBmaWxlICIlcyI6ICcsICRmaWxlKS5zZWxmOjokbGFzdEVycm9yLCAwLCBudWxsLCAkZmlsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIXNlbGY6OmJveCgnY2hvd24nLCAkZmlsZSwgJHVzZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdGYWlsZWQgdG8gY2hvd24gZmlsZSAiJXMiOiAnLCAkZmlsZSkuc2VsZjo6JGxhc3RFcnJvciwgMCwgbnVsbCwgJGZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hhbmdlIHRoZSBncm91cCBvZiBhbiBhcnJheSBvZiBmaWxlcyBvciBkaXJlY3Rvcmllcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBhbHdheXMgdGhyb3dzIG9uIFdpbmRvd3MsIGFzIHRoZSB1bmRlcmx5aW5nIFBIUCBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9waHAubmV0L2NoZ3JwCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgJGdyb3VwICAgICBBIGdyb3VwIG5hbWUgb3IgbnVtYmVyCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAkcmVjdXJzaXZlIFdoZXRoZXIgY2hhbmdlIHRoZSBncm91cCByZWN1cnNpdmVseSBvciBub3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIFdoZW4gdGhlIGNoYW5nZSBmYWlscwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hncnAoc3RyaW5nfGl0ZXJhYmxlICRmaWxlcywgc3RyaW5nfGludCAkZ3JvdXAsIGJvb2wgJHJlY3Vyc2l2ZSA9IGZhbHNlKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT50b0l0ZXJhYmxlKCRmaWxlcykgYXMgJGZpbGUpIHsKICAgICAgICAgICAgaWYgKCRyZWN1cnNpdmUgJiYgaXNfZGlyKCRmaWxlKSAmJiAhaXNfbGluaygkZmlsZSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jaGdycChuZXcgXEZpbGVzeXN0ZW1JdGVyYXRvcigkZmlsZSksICRncm91cCwgdHJ1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlzX2xpbmsoJGZpbGUpICYmIFxmdW5jdGlvbl9leGlzdHMoJ2xjaGdycCcpKSB7CiAgICAgICAgICAgICAgICBpZiAoIXNlbGY6OmJveCgnbGNoZ3JwJywgJGZpbGUsICRncm91cCkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oXHNwcmludGYoJ0ZhaWxlZCB0byBjaGdycCBmaWxlICIlcyI6ICcsICRmaWxlKS5zZWxmOjokbGFzdEVycm9yLCAwLCBudWxsLCAkZmlsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIXNlbGY6OmJveCgnY2hncnAnLCAkZmlsZSwgJGdyb3VwKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignRmFpbGVkIHRvIGNoZ3JwIGZpbGUgIiVzIjogJywgJGZpbGUpLnNlbGY6OiRsYXN0RXJyb3IsIDAsIG51bGwsICRmaWxlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlbmFtZXMgYSBmaWxlIG9yIGEgZGlyZWN0b3J5LgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gV2hlbiB0YXJnZXQgZmlsZSBvciBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMKICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gV2hlbiBvcmlnaW4gY2Fubm90IGJlIHJlbmFtZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbmFtZShzdHJpbmcgJG9yaWdpbiwgc3RyaW5nICR0YXJnZXQsIGJvb2wgJG92ZXJ3cml0ZSA9IGZhbHNlKQogICAgewogICAgICAgIC8vIHdlIGNoZWNrIHRoYXQgdGFyZ2V0IGRvZXMgbm90IGV4aXN0CiAgICAgICAgaWYgKCEkb3ZlcndyaXRlICYmICR0aGlzLT5pc1JlYWRhYmxlKCR0YXJnZXQpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignQ2Fubm90IHJlbmFtZSBiZWNhdXNlIHRoZSB0YXJnZXQgIiVzIiBhbHJlYWR5IGV4aXN0cy4nLCAkdGFyZ2V0KSwgMCwgbnVsbCwgJHRhcmdldCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXNlbGY6OmJveCgncmVuYW1lJywgJG9yaWdpbiwgJHRhcmdldCkpIHsKICAgICAgICAgICAgaWYgKGlzX2Rpcigkb3JpZ2luKSkgewogICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5waHAubmV0LzU0MDk3ICYgaHR0cHM6Ly9waHAubmV0L3JlbmFtZSMxMTM5NDMKICAgICAgICAgICAgICAgICR0aGlzLT5taXJyb3IoJG9yaWdpbiwgJHRhcmdldCwgbnVsbCwgWydvdmVycmlkZScgPT4gJG92ZXJ3cml0ZSwgJ2RlbGV0ZScgPT4gJG92ZXJ3cml0ZV0pOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlbW92ZSgkb3JpZ2luKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgcmVuYW1lICIlcyIgdG8gIiVzIjogJywgJG9yaWdpbiwgJHRhcmdldCkuc2VsZjo6JGxhc3RFcnJvciwgMCwgbnVsbCwgJHRhcmdldCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGVsbHMgd2hldGhlciBhIGZpbGUgZXhpc3RzIGFuZCBpcyByZWFkYWJsZS4KICAgICAqCiAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIFdoZW4gd2luZG93cyBwYXRoIGlzIGxvbmdlciB0aGFuIDI1OCBjaGFyYWN0ZXJzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNSZWFkYWJsZShzdHJpbmcgJGZpbGVuYW1lKTogYm9vbAogICAgewogICAgICAgICRtYXhQYXRoTGVuZ3RoID0gXFBIUF9NQVhQQVRITEVOIC0gMjsKCiAgICAgICAgaWYgKFxzdHJsZW4oJGZpbGVuYW1lKSA+ICRtYXhQYXRoTGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihcc3ByaW50ZignQ291bGQgbm90IGNoZWNrIGlmIGZpbGUgaXMgcmVhZGFibGUgYmVjYXVzZSBwYXRoIGxlbmd0aCBleGNlZWRzICVkIGNoYXJhY3RlcnMuJywgJG1heFBhdGhMZW5ndGgpLCAwLCBudWxsLCAkZmlsZW5hbWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGlzX3JlYWRhYmxlKCRmaWxlbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgc3ltYm9saWMgbGluayBvciBjb3B5IGEgZGlyZWN0b3J5LgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gV2hlbiBzeW1saW5rIGZhaWxzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzeW1saW5rKHN0cmluZyAkb3JpZ2luRGlyLCBzdHJpbmcgJHRhcmdldERpciwgYm9vbCAkY29weU9uV2luZG93cyA9IGZhbHNlKQogICAgewogICAgICAgIHNlbGY6OmFzc2VydEZ1bmN0aW9uRXhpc3RzKCdzeW1saW5rJyk7CgogICAgICAgIGlmICgnXFwnID09PSBcRElSRUNUT1JZX1NFUEFSQVRPUikgewogICAgICAgICAgICAkb3JpZ2luRGlyID0gc3RydHIoJG9yaWdpbkRpciwgJy8nLCAnXFwnKTsKICAgICAgICAgICAgJHRhcmdldERpciA9IHN0cnRyKCR0YXJnZXREaXIsICcvJywgJ1xcJyk7CgogICAgICAgICAgICBpZiAoJGNvcHlPbldpbmRvd3MpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5taXJyb3IoJG9yaWdpbkRpciwgJHRhcmdldERpcik7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bWtkaXIoXGRpcm5hbWUoJHRhcmdldERpcikpOwoKICAgICAgICBpZiAoaXNfbGluaygkdGFyZ2V0RGlyKSkgewogICAgICAgICAgICBpZiAocmVhZGxpbmsoJHRhcmdldERpcikgPT09ICRvcmlnaW5EaXIpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+cmVtb3ZlKCR0YXJnZXREaXIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFzZWxmOjpib3goJ3N5bWxpbmsnLCAkb3JpZ2luRGlyLCAkdGFyZ2V0RGlyKSkgewogICAgICAgICAgICAkdGhpcy0+bGlua0V4Y2VwdGlvbigkb3JpZ2luRGlyLCAkdGFyZ2V0RGlyLCAnc3ltYm9saWMnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgaGFyZCBsaW5rLCBvciBzZXZlcmFsIGhhcmQgbGlua3MgdG8gYSBmaWxlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8c3RyaW5nW10gJHRhcmdldEZpbGVzIFRoZSB0YXJnZXQgZmlsZShzKQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uIFdoZW4gb3JpZ2luYWwgZmlsZSBpcyBtaXNzaW5nIG9yIG5vdCBhIGZpbGUKICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gICAgICAgICAgIFdoZW4gbGluayBmYWlscywgaW5jbHVkaW5nIGlmIGxpbmsgYWxyZWFkeSBleGlzdHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhcmRsaW5rKHN0cmluZyAkb3JpZ2luRmlsZSwgc3RyaW5nfGl0ZXJhYmxlICR0YXJnZXRGaWxlcykKICAgIHsKICAgICAgICBzZWxmOjphc3NlcnRGdW5jdGlvbkV4aXN0cygnbGluaycpOwoKICAgICAgICBpZiAoISR0aGlzLT5leGlzdHMoJG9yaWdpbkZpbGUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGaWxlTm90Rm91bmRFeGNlcHRpb24obnVsbCwgMCwgbnVsbCwgJG9yaWdpbkZpbGUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc19maWxlKCRvcmlnaW5GaWxlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRmlsZU5vdEZvdW5kRXhjZXB0aW9uKFxzcHJpbnRmKCdPcmlnaW4gZmlsZSAiJXMiIGlzIG5vdCBhIGZpbGUuJywgJG9yaWdpbkZpbGUpKTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT50b0l0ZXJhYmxlKCR0YXJnZXRGaWxlcykgYXMgJHRhcmdldEZpbGUpIHsKICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJHRhcmdldEZpbGUpKSB7CiAgICAgICAgICAgICAgICBpZiAoZmlsZWlub2RlKCRvcmlnaW5GaWxlKSA9PT0gZmlsZWlub2RlKCR0YXJnZXRGaWxlKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPnJlbW92ZSgkdGFyZ2V0RmlsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghc2VsZjo6Ym94KCdsaW5rJywgJG9yaWdpbkZpbGUsICR0YXJnZXRGaWxlKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmxpbmtFeGNlcHRpb24oJG9yaWdpbkZpbGUsICR0YXJnZXRGaWxlLCAnaGFyZCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbGlua1R5cGUgTmFtZSBvZiB0aGUgbGluayB0eXBlLCB0eXBpY2FsbHkgJ3N5bWJvbGljJyBvciAnaGFyZCcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsaW5rRXhjZXB0aW9uKHN0cmluZyAkb3JpZ2luLCBzdHJpbmcgJHRhcmdldCwgc3RyaW5nICRsaW5rVHlwZSk6IG5ldmVyCiAgICB7CiAgICAgICAgaWYgKHNlbGY6OiRsYXN0RXJyb3IpIHsKICAgICAgICAgICAgaWYgKCdcXCcgPT09IFxESVJFQ1RPUllfU0VQQVJBVE9SICYmIHN0cl9jb250YWlucyhzZWxmOjokbGFzdEVycm9yLCAnZXJyb3IgY29kZSgxMzE0KScpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oXHNwcmludGYoJ1VuYWJsZSB0byBjcmVhdGUgIiVzIiBsaW5rIGR1ZSB0byBlcnJvciBjb2RlIDEzMTQ6IFwnQSByZXF1aXJlZCBwcml2aWxlZ2UgaXMgbm90IGhlbGQgYnkgdGhlIGNsaWVudFwnLiBEbyB5b3UgaGF2ZSB0aGUgcmVxdWlyZWQgQWRtaW5pc3RyYXRvci1yaWdodHM/JywgJGxpbmtUeXBlKSwgMCwgbnVsbCwgJHRhcmdldCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdGYWlsZWQgdG8gY3JlYXRlICIlcyIgbGluayBmcm9tICIlcyIgdG8gIiVzIjogJywgJGxpbmtUeXBlLCAkb3JpZ2luLCAkdGFyZ2V0KS5zZWxmOjokbGFzdEVycm9yLCAwLCBudWxsLCAkdGFyZ2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc29sdmVzIGxpbmtzIGluIHBhdGhzLgogICAgICoKICAgICAqIFdpdGggJGNhbm9uaWNhbGl6ZSA9IGZhbHNlIChkZWZhdWx0KQogICAgICogICAgICAtIGlmICRwYXRoIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhIGxpbmssIHJldHVybnMgbnVsbAogICAgICogICAgICAtIGlmICRwYXRoIGlzIGEgbGluaywgcmV0dXJucyB0aGUgbmV4dCBkaXJlY3QgdGFyZ2V0IG9mIHRoZSBsaW5rIHdpdGhvdXQgY29uc2lkZXJpbmcgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgdGFyZ2V0CiAgICAgKgogICAgICogV2l0aCAkY2Fub25pY2FsaXplID0gdHJ1ZQogICAgICogICAgICAtIGlmICRwYXRoIGRvZXMgbm90IGV4aXN0LCByZXR1cm5zIG51bGwKICAgICAqICAgICAgLSBpZiAkcGF0aCBleGlzdHMsIHJldHVybnMgaXRzIGFic29sdXRlIGZ1bGx5IHJlc29sdmVkIGZpbmFsIHZlcnNpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlYWRsaW5rKHN0cmluZyAkcGF0aCwgYm9vbCAkY2Fub25pY2FsaXplID0gZmFsc2UpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEkY2Fub25pY2FsaXplICYmICFpc19saW5rKCRwYXRoKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICgkY2Fub25pY2FsaXplKSB7CiAgICAgICAgICAgIGlmICghJHRoaXMtPmV4aXN0cygkcGF0aCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gcmVhbHBhdGgoJHBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlYWRsaW5rKCRwYXRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdpdmVuIGFuIGV4aXN0aW5nIHBhdGgsIGNvbnZlcnQgaXQgdG8gYSBwYXRoIHJlbGF0aXZlIHRvIGEgZ2l2ZW4gc3RhcnRpbmcgcGF0aC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1ha2VQYXRoUmVsYXRpdmUoc3RyaW5nICRlbmRQYXRoLCBzdHJpbmcgJHN0YXJ0UGF0aCk6IHN0cmluZwogICAgewogICAgICAgIGlmICghJHRoaXMtPmlzQWJzb2x1dGVQYXRoKCRzdGFydFBhdGgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oXHNwcmludGYoJ1RoZSBzdGFydCBwYXRoICIlcyIgaXMgbm90IGFic29sdXRlLicsICRzdGFydFBhdGgpKTsKICAgICAgICB9CgogICAgICAgIGlmICghJHRoaXMtPmlzQWJzb2x1dGVQYXRoKCRlbmRQYXRoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdUaGUgZW5kIHBhdGggIiVzIiBpcyBub3QgYWJzb2x1dGUuJywgJGVuZFBhdGgpKTsKICAgICAgICB9CgogICAgICAgICRvcmlnaW5hbEVuZFBhdGggPSAkZW5kUGF0aDsKCiAgICAgICAgLy8gTm9ybWFsaXplIHNlcGFyYXRvcnMgb24gV2luZG93cwogICAgICAgIGlmICgnXFwnID09PSBcRElSRUNUT1JZX1NFUEFSQVRPUikgewogICAgICAgICAgICAkZW5kUGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJGVuZFBhdGgpOwogICAgICAgICAgICAkc3RhcnRQYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkc3RhcnRQYXRoKTsKICAgICAgICB9CgogICAgICAgICRzcGxpdERyaXZlTGV0dGVyID0gc3RhdGljIGZuICgkcGF0aCkgPT4gKFxzdHJsZW4oJHBhdGgpID4gMiAmJiAnOicgPT09ICRwYXRoWzFdICYmICcvJyA9PT0gJHBhdGhbMl0gJiYgY3R5cGVfYWxwaGEoJHBhdGhbMF0pKQogICAgICAgICAgICA/IFtzdWJzdHIoJHBhdGgsIDIpLCBzdHJ0b3VwcGVyKCRwYXRoWzBdKV0KICAgICAgICAgICAgOiBbJHBhdGgsIG51bGxdOwoKICAgICAgICAkc3BsaXRQYXRoID0gc3RhdGljIGZ1bmN0aW9uICgkcGF0aCkgewogICAgICAgICAgICAkcmVzdWx0ID0gW107CgogICAgICAgICAgICBmb3JlYWNoIChleHBsb2RlKCcvJywgdHJpbSgkcGF0aCwgJy8nKSkgYXMgJHNlZ21lbnQpIHsKICAgICAgICAgICAgICAgIGlmICgnLi4nID09PSAkc2VnbWVudCkgewogICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkcmVzdWx0KTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgnLicgIT09ICRzZWdtZW50ICYmICcnICE9PSAkc2VnbWVudCkgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICRzZWdtZW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9OwoKICAgICAgICBbJGVuZFBhdGgsICRlbmREcml2ZUxldHRlcl0gPSAkc3BsaXREcml2ZUxldHRlcigkZW5kUGF0aCk7CiAgICAgICAgWyRzdGFydFBhdGgsICRzdGFydERyaXZlTGV0dGVyXSA9ICRzcGxpdERyaXZlTGV0dGVyKCRzdGFydFBhdGgpOwoKICAgICAgICAkc3RhcnRQYXRoQXJyID0gJHNwbGl0UGF0aCgkc3RhcnRQYXRoKTsKICAgICAgICAkZW5kUGF0aEFyciA9ICRzcGxpdFBhdGgoJGVuZFBhdGgpOwoKICAgICAgICBpZiAoJGVuZERyaXZlTGV0dGVyICYmICRzdGFydERyaXZlTGV0dGVyICYmICRlbmREcml2ZUxldHRlciAhPSAkc3RhcnREcml2ZUxldHRlcikgewogICAgICAgICAgICAvLyBFbmQgcGF0aCBpcyBvbiBhbm90aGVyIGRyaXZlLCBzbyBubyByZWxhdGl2ZSBwYXRoIGV4aXN0cwogICAgICAgICAgICByZXR1cm4gJGVuZERyaXZlTGV0dGVyLic6LycuKCRlbmRQYXRoQXJyID8gaW1wbG9kZSgnLycsICRlbmRQYXRoQXJyKS4nLycgOiAnJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBGaW5kIGZvciB3aGljaCBkaXJlY3RvcnkgdGhlIGNvbW1vbiBwYXRoIHN0b3BzCiAgICAgICAgJGluZGV4ID0gMDsKICAgICAgICB3aGlsZSAoaXNzZXQoJHN0YXJ0UGF0aEFyclskaW5kZXhdKSAmJiBpc3NldCgkZW5kUGF0aEFyclskaW5kZXhdKSAmJiAkc3RhcnRQYXRoQXJyWyRpbmRleF0gPT09ICRlbmRQYXRoQXJyWyRpbmRleF0pIHsKICAgICAgICAgICAgKyskaW5kZXg7CiAgICAgICAgfQoKICAgICAgICAvLyBEZXRlcm1pbmUgaG93IGRlZXAgdGhlIHN0YXJ0IHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGNvbW1vbiBwYXRoIChpZSwgIndlYi9idW5kbGVzIiA9IDIgbGV2ZWxzKQogICAgICAgIGlmICgxID09PSBcY291bnQoJHN0YXJ0UGF0aEFycikgJiYgJycgPT09ICRzdGFydFBhdGhBcnJbMF0pIHsKICAgICAgICAgICAgJGRlcHRoID0gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGVwdGggPSBcY291bnQoJHN0YXJ0UGF0aEFycikgLSAkaW5kZXg7CiAgICAgICAgfQoKICAgICAgICAvLyBSZXBlYXRlZCAiLi4vIiBmb3IgZWFjaCBsZXZlbCBuZWVkIHRvIHJlYWNoIHRoZSBjb21tb24gcGF0aAogICAgICAgICR0cmF2ZXJzZXIgPSBzdHJfcmVwZWF0KCcuLi8nLCAkZGVwdGgpOwoKICAgICAgICAkZW5kUGF0aFJlbWFpbmRlciA9IGltcGxvZGUoJy8nLCBcYXJyYXlfc2xpY2UoJGVuZFBhdGhBcnIsICRpbmRleCkpOwoKICAgICAgICAvLyBDb25zdHJ1Y3QgJGVuZFBhdGggZnJvbSB0cmF2ZXJzaW5nIHRvIHRoZSBjb21tb24gcGF0aCwgdGhlbiB0byB0aGUgcmVtYWluaW5nICRlbmRQYXRoCiAgICAgICAgJHJlbGF0aXZlUGF0aCA9ICR0cmF2ZXJzZXIuKCcnICE9PSAkZW5kUGF0aFJlbWFpbmRlciA/ICRlbmRQYXRoUmVtYWluZGVyLicvJyA6ICcnKTsKCiAgICAgICAgLy8gUmVtb3ZlIGVuZGluZyAiLyIgaWYgJGVuZFBhdGggcG9pbnRzIHRvIGFuIGV4aXN0aW5nIGZpbGUKICAgICAgICBpZiAoc3RyX2VuZHNfd2l0aCgkcmVsYXRpdmVQYXRoLCAnLycpICYmIGlzX2ZpbGUoJG9yaWdpbmFsRW5kUGF0aCkpIHsKICAgICAgICAgICAgJHJlbGF0aXZlUGF0aCA9IHN1YnN0cigkcmVsYXRpdmVQYXRoLCAwLCAtMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJycgPT09ICRyZWxhdGl2ZVBhdGggPyAnLi8nIDogJHJlbGF0aXZlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIE1pcnJvcnMgYSBkaXJlY3RvcnkgdG8gYW5vdGhlci4KICAgICAqCiAgICAgKiBDb3BpZXMgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGZyb20gdGhlIG9yaWdpbiBkaXJlY3RvcnkgaW50byB0aGUgdGFyZ2V0IGRpcmVjdG9yeS4gQnkgZGVmYXVsdDoKICAgICAqCiAgICAgKiAgLSBleGlzdGluZyBmaWxlcyBpbiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB3aWxsIGJlIG92ZXJ3cml0dGVuLCBleGNlcHQgaWYgdGhleSBhcmUgbmV3ZXIgKHNlZSB0aGUgYG92ZXJyaWRlYCBvcHRpb24pCiAgICAgKiAgLSBmaWxlcyBpbiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0aGF0IGRvIG5vdCBleGlzdCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBkZWxldGVkIChzZWUgdGhlIGBkZWxldGVgIG9wdGlvbikKICAgICAqCiAgICAgKiBAcGFyYW0gXFRyYXZlcnNhYmxlfG51bGwgJGl0ZXJhdG9yIEl0ZXJhdG9yIHRoYXQgZmlsdGVycyB3aGljaCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gY29weSwgaWYgbnVsbCBhIHJlY3Vyc2l2ZSBpdGVyYXRvciBpcyBjcmVhdGVkCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgJG9wdGlvbnMgIEFuIGFycmF5IG9mIGJvb2xlYW4gb3B0aW9ucwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCBvcHRpb25zIGFyZToKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAkb3B0aW9uc1snb3ZlcnJpZGUnXSBJZiB0cnVlLCB0YXJnZXQgZmlsZXMgbmV3ZXIgdGhhbiBvcmlnaW4gZmlsZXMgYXJlIG92ZXJ3cml0dGVuIChzZWUgY29weSgpLCBkZWZhdWx0cyB0byBmYWxzZSkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAkb3B0aW9uc1snY29weV9vbl93aW5kb3dzJ10gV2hldGhlciB0byBjb3B5IGZpbGVzIGluc3RlYWQgb2YgbGlua3Mgb24gV2luZG93cyAoc2VlIHN5bWxpbmsoKSwgZGVmYXVsdHMgdG8gZmFsc2UpCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gJG9wdGlvbnNbJ2RlbGV0ZSddIFdoZXRoZXIgdG8gZGVsZXRlIGZpbGVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSAoZGVmYXVsdHMgdG8gZmFsc2UpCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQHRocm93cyBJT0V4Y2VwdGlvbiBXaGVuIGZpbGUgdHlwZSBpcyB1bmtub3duCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtaXJyb3Ioc3RyaW5nICRvcmlnaW5EaXIsIHN0cmluZyAkdGFyZ2V0RGlyLCA/XFRyYXZlcnNhYmxlICRpdGVyYXRvciA9IG51bGwsIGFycmF5ICRvcHRpb25zID0gW10pCiAgICB7CiAgICAgICAgJHRhcmdldERpciA9IHJ0cmltKCR0YXJnZXREaXIsICcvXFwnKTsKICAgICAgICAkb3JpZ2luRGlyID0gcnRyaW0oJG9yaWdpbkRpciwgJy9cXCcpOwogICAgICAgICRvcmlnaW5EaXJMZW4gPSBcc3RybGVuKCRvcmlnaW5EaXIpOwoKICAgICAgICBpZiAoISR0aGlzLT5leGlzdHMoJG9yaWdpbkRpcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdUaGUgb3JpZ2luIGRpcmVjdG9yeSBzcGVjaWZpZWQgIiVzIiB3YXMgbm90IGZvdW5kLicsICRvcmlnaW5EaXIpLCAwLCBudWxsLCAkb3JpZ2luRGlyKTsKICAgICAgICB9CgogICAgICAgIC8vIEl0ZXJhdGUgaW4gZGVzdGluYXRpb24gZm9sZGVyIHRvIHJlbW92ZSBvYnNvbGV0ZSBlbnRyaWVzCiAgICAgICAgaWYgKCR0aGlzLT5leGlzdHMoJHRhcmdldERpcikgJiYgaXNzZXQoJG9wdGlvbnNbJ2RlbGV0ZSddKSAmJiAkb3B0aW9uc1snZGVsZXRlJ10pIHsKICAgICAgICAgICAgJGRlbGV0ZUl0ZXJhdG9yID0gbmV3IFxSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yKG5ldyBcUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJHRhcmdldERpciwgXEZpbGVzeXN0ZW1JdGVyYXRvcjo6U0tJUF9ET1RTKSwgXFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3I6OkNISUxEX0ZJUlNUKTsKICAgICAgICAgICAgJHRhcmdldERpckxlbiA9IFxzdHJsZW4oJHRhcmdldERpcik7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkZWxldGVJdGVyYXRvciBhcyAkZmlsZSkgewogICAgICAgICAgICAgICAgJG9yaWdpbiA9ICRvcmlnaW5EaXIuc3Vic3RyKCRmaWxlLT5nZXRQYXRobmFtZSgpLCAkdGFyZ2V0RGlyTGVuKTsKICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPmV4aXN0cygkb3JpZ2luKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZW1vdmUoJGZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkY29weU9uV2luZG93cyA9ICRvcHRpb25zWydjb3B5X29uX3dpbmRvd3MnXSA/PyBmYWxzZTsKCiAgICAgICAgaWYgKG51bGwgPT09ICRpdGVyYXRvcikgewogICAgICAgICAgICAkZmxhZ3MgPSAkY29weU9uV2luZG93cyA/IFxGaWxlc3lzdGVtSXRlcmF0b3I6OlNLSVBfRE9UUyB8IFxGaWxlc3lzdGVtSXRlcmF0b3I6OkZPTExPV19TWU1MSU5LUyA6IFxGaWxlc3lzdGVtSXRlcmF0b3I6OlNLSVBfRE9UUzsKICAgICAgICAgICAgJGl0ZXJhdG9yID0gbmV3IFxSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yKG5ldyBcUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJG9yaWdpbkRpciwgJGZsYWdzKSwgXFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3I6OlNFTEZfRklSU1QpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm1rZGlyKCR0YXJnZXREaXIpOwogICAgICAgICRmaWxlc0NyZWF0ZWRXaGlsZU1pcnJvcmluZyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkaXRlcmF0b3IgYXMgJGZpbGUpIHsKICAgICAgICAgICAgaWYgKCRmaWxlLT5nZXRQYXRobmFtZSgpID09PSAkdGFyZ2V0RGlyIHx8ICRmaWxlLT5nZXRSZWFsUGF0aCgpID09PSAkdGFyZ2V0RGlyIHx8IGlzc2V0KCRmaWxlc0NyZWF0ZWRXaGlsZU1pcnJvcmluZ1skZmlsZS0+Z2V0UmVhbFBhdGgoKV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRhcmdldCA9ICR0YXJnZXREaXIuc3Vic3RyKCRmaWxlLT5nZXRQYXRobmFtZSgpLCAkb3JpZ2luRGlyTGVuKTsKICAgICAgICAgICAgJGZpbGVzQ3JlYXRlZFdoaWxlTWlycm9yaW5nWyR0YXJnZXRdID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmICghJGNvcHlPbldpbmRvd3MgJiYgaXNfbGluaygkZmlsZSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zeW1saW5rKCRmaWxlLT5nZXRMaW5rVGFyZ2V0KCksICR0YXJnZXQpOwogICAgICAgICAgICB9IGVsc2VpZiAoaXNfZGlyKCRmaWxlKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPm1rZGlyKCR0YXJnZXQpOwogICAgICAgICAgICB9IGVsc2VpZiAoaXNfZmlsZSgkZmlsZSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jb3B5KCRmaWxlLCAkdGFyZ2V0LCAkb3B0aW9uc1snb3ZlcnJpZGUnXSA/PyBmYWxzZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oXHNwcmludGYoJ1VuYWJsZSB0byBndWVzcyAiJXMiIGZpbGUgdHlwZS4nLCAkZmlsZSksIDAsIG51bGwsICRmaWxlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgZmlsZSBwYXRoIGlzIGFuIGFic29sdXRlIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0Fic29sdXRlUGF0aChzdHJpbmcgJGZpbGUpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICcnICE9PSAkZmlsZSAmJiAoc3Ryc3BuKCRmaWxlLCAnL1xcJywgMCwgMSkKICAgICAgICAgICAgfHwgKFxzdHJsZW4oJGZpbGUpID4gMyAmJiBjdHlwZV9hbHBoYSgkZmlsZVswXSkKICAgICAgICAgICAgICAgICYmICc6JyA9PT0gJGZpbGVbMV0KICAgICAgICAgICAgICAgICYmIHN0cnNwbigkZmlsZSwgJy9cXCcsIDIsIDEpCiAgICAgICAgICAgICkKICAgICAgICAgICAgfHwgbnVsbCAhPT0gcGFyc2VfdXJsKCRmaWxlLCBcUEhQX1VSTF9TQ0hFTUUpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZmlsZSB3aXRoIHN1cHBvcnQgZm9yIGN1c3RvbSBzdHJlYW0gd3JhcHBlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcHJlZml4IFRoZSBwcmVmaXggb2YgdGhlIGdlbmVyYXRlZCB0ZW1wb3JhcnkgZmlsZW5hbWUKICAgICAqICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiBXaW5kb3dzIHVzZXMgb25seSB0aGUgZmlyc3QgdGhyZWUgY2hhcmFjdGVycyBvZiBwcmVmaXgKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN1ZmZpeCBUaGUgc3VmZml4IG9mIHRoZSBnZW5lcmF0ZWQgdGVtcG9yYXJ5IGZpbGVuYW1lCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIG5ldyB0ZW1wb3JhcnkgZmlsZW5hbWUgKHdpdGggcGF0aCksIG9yIHRocm93IGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZW1wbmFtKHN0cmluZyAkZGlyLCBzdHJpbmcgJHByZWZpeCwgc3RyaW5nICRzdWZmaXggPSAnJyk6IHN0cmluZwogICAgewogICAgICAgIFskc2NoZW1lLCAkaGllcmFyY2h5XSA9ICR0aGlzLT5nZXRTY2hlbWVBbmRIaWVyYXJjaHkoJGRpcik7CgogICAgICAgIC8vIElmIG5vIHNjaGVtZSBvciBzY2hlbWUgaXMgImZpbGUiIG9yICJncyIgKEdvb2dsZSBDbG91ZCkgY3JlYXRlIHRlbXAgZmlsZSBpbiBsb2NhbCBmaWxlc3lzdGVtCiAgICAgICAgaWYgKChudWxsID09PSAkc2NoZW1lIHx8ICdmaWxlJyA9PT0gJHNjaGVtZSB8fCAnZ3MnID09PSAkc2NoZW1lKSAmJiAnJyA9PT0gJHN1ZmZpeCkgewogICAgICAgICAgICAvLyBQSFAncyB0ZW1wbmFtKCkgdHJ1bmNhdGVzIHRoZSBwcmVmaXggdG8gNjMgY2hhcmFjdGVyczsgdHJpbSB0cmFpbGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgIC8vIGZyb20gdGhlIHRydW5jYXRlZCB2YWx1ZSwgYXMgYSB0cmFpbGluZyBzcGFjZSBtYWtlcyB0aGUgZmlsZSBjcmVhdGlvbiBmYWlsIG9uIFdpbmRvd3MKICAgICAgICAgICAgLy8gSWYgdGVtcG5hbSBmYWlsZWQgb3Igbm8gc2NoZW1lIHJldHVybiB0aGUgZmlsZW5hbWUgb3RoZXJ3aXNlIHByZXBlbmQgdGhlIHNjaGVtZQogICAgICAgICAgICBpZiAoJHRtcEZpbGUgPSBzZWxmOjpib3goJ3RlbXBuYW0nLCAkaGllcmFyY2h5LCBydHJpbShzdWJzdHIoJHByZWZpeCwgMCwgNjMpKSkpIHsKICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAkc2NoZW1lICYmICdncycgIT09ICRzY2hlbWUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHNjaGVtZS4nOi8vJy4kdG1wRmlsZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHRtcEZpbGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbignQSB0ZW1wb3JhcnkgZmlsZSBjb3VsZCBub3QgYmUgY3JlYXRlZDogJy5zZWxmOjokbGFzdEVycm9yKTsKICAgICAgICB9CgogICAgICAgIC8vIExvb3AgdW50aWwgd2UgY3JlYXRlIGEgdmFsaWQgdGVtcCBmaWxlIG9yIGhhdmUgcmVhY2hlZCAxMCBhdHRlbXB0cwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IDEwOyArKyRpKSB7CiAgICAgICAgICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBmaWxlbmFtZQogICAgICAgICAgICAkdG1wRmlsZSA9ICRkaXIuJy8nLiRwcmVmaXgudW5pcWlkKG10X3JhbmQoKSwgdHJ1ZSkuJHN1ZmZpeDsKCiAgICAgICAgICAgIC8vIFVzZSBmb3BlbiBpbnN0ZWFkIG9mIGZpbGVfZXhpc3RzIGFzIHNvbWUgc3RyZWFtcyBkbyBub3Qgc3VwcG9ydCBzdGF0CiAgICAgICAgICAgIC8vIFVzZSBtb2RlICd4KycgdG8gYXRvbWljYWxseSBjaGVjayBleGlzdGVuY2UgYW5kIGNyZWF0ZSB0byBhdm9pZCBhIFRPQ1RPVSB2dWxuZXJhYmlsaXR5CiAgICAgICAgICAgIC8vIEZvcmNlIHRoZSB1bWFzayBzbyB0aGF0IHRoZSBmaWxlIGlzIGNyZWF0ZWQgcHJpdmF0ZSwgYXMgUEhQJ3MgdGVtcG5hbSgpIGRvZXMKICAgICAgICAgICAgJHVtYXNrID0gdW1hc2soMG8wNzcpOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGhhbmRsZSA9IHNlbGY6OmJveCgnZm9wZW4nLCAkdG1wRmlsZSwgJ3grJyk7CiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICB1bWFzaygkdW1hc2spOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISRoYW5kbGUpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDbG9zZSB0aGUgZmlsZSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bGx5IG9wZW5lZAogICAgICAgICAgICBzZWxmOjpib3goJ2ZjbG9zZScsICRoYW5kbGUpOwoKICAgICAgICAgICAgcmV0dXJuICR0bXBGaWxlOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCdBIHRlbXBvcmFyeSBmaWxlIGNvdWxkIG5vdCBiZSBjcmVhdGVkOiAnLnNlbGY6OiRsYXN0RXJyb3IpOwogICAgfQoKICAgIC8qKgogICAgICogQXRvbWljYWxseSBkdW1wcyBjb250ZW50IGludG8gYSBmaWxlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8cmVzb3VyY2UgJGNvbnRlbnQgVGhlIGRhdGEgdG8gd3JpdGUgaW50byB0aGUgZmlsZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIHdyaXR0ZW4gdG8KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGR1bXBGaWxlKHN0cmluZyAkZmlsZW5hbWUsICRjb250ZW50KQogICAgewogICAgICAgIGlmIChcaXNfYXJyYXkoJGNvbnRlbnQpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcVHlwZUVycm9yKFxzcHJpbnRmKCdBcmd1bWVudCAyIHBhc3NlZCB0byAiJXMoKSIgbXVzdCBiZSBzdHJpbmcgb3IgcmVzb3VyY2UsIGFycmF5IGdpdmVuLicsIF9fTUVUSE9EX18pKTsKICAgICAgICB9CgogICAgICAgICRkaXIgPSBcZGlybmFtZSgkZmlsZW5hbWUpOwoKICAgICAgICBpZiAoaXNfbGluaygkZmlsZW5hbWUpICYmICRsaW5rVGFyZ2V0ID0gJHRoaXMtPnJlYWRsaW5rKCRmaWxlbmFtZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmR1bXBGaWxlKFBhdGg6Om1ha2VBYnNvbHV0ZSgkbGlua1RhcmdldCwgJGRpciksICRjb250ZW50KTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICghaXNfZGlyKCRkaXIpKSB7CiAgICAgICAgICAgICR0aGlzLT5ta2RpcigkZGlyKTsKICAgICAgICB9CgogICAgICAgIC8vIFdpbGwgY3JlYXRlIGEgdGVtcCBmaWxlIHdpdGggMDYwMCBhY2Nlc3MgcmlnaHRzCiAgICAgICAgLy8gd2hlbiB0aGUgZmlsZXN5c3RlbSBzdXBwb3J0cyBjaG1vZC4KICAgICAgICAkdG1wRmlsZSA9ICR0aGlzLT50ZW1wbmFtKCRkaXIsIGJhc2VuYW1lKCRmaWxlbmFtZSkpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoZmFsc2UgPT09IHNlbGY6OmJveCgnZmlsZV9wdXRfY29udGVudHMnLCAkdG1wRmlsZSwgJGNvbnRlbnQpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oXHNwcmludGYoJ0ZhaWxlZCB0byB3cml0ZSBmaWxlICIlcyI6ICcsICRmaWxlbmFtZSkuc2VsZjo6JGxhc3RFcnJvciwgMCwgbnVsbCwgJGZpbGVuYW1lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2VsZjo6Ym94KCdjaG1vZCcsICR0bXBGaWxlLCBzZWxmOjpib3goJ2ZpbGVwZXJtcycsICRmaWxlbmFtZSkgPzogMG82NjYgJiB+dW1hc2soKSk7CgogICAgICAgICAgICAkdGhpcy0+cmVuYW1lKCR0bXBGaWxlLCAkZmlsZW5hbWUsIHRydWUpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkdG1wRmlsZSkpIHsKICAgICAgICAgICAgICAgIGlmICgnXFwnID09PSBcRElSRUNUT1JZX1NFUEFSQVRPUiAmJiAhaXNfd3JpdGFibGUoJHRtcEZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZjo6Ym94KCdjaG1vZCcsICR0bXBGaWxlLCBzZWxmOjpib3goJ2ZpbGVwZXJtcycsICR0bXBGaWxlKSB8IDBvMjAwKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzZWxmOjpib3goJ3VubGluaycsICR0bXBGaWxlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEFwcGVuZHMgY29udGVudCB0byBhbiBleGlzdGluZyBmaWxlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8cmVzb3VyY2UgJGNvbnRlbnQgVGhlIGNvbnRlbnQgdG8gYXBwZW5kCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICRsb2NrICAgIFdoZXRoZXIgdGhlIGZpbGUgc2hvdWxkIGJlIGxvY2tlZCB3aGVuIHdyaXRpbmcgdG8gaXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIElmIHRoZSBmaWxlIGlzIG5vdCB3cml0YWJsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXBwZW5kVG9GaWxlKHN0cmluZyAkZmlsZW5hbWUsICRjb250ZW50LyogLCBib29sICRsb2NrID0gZmFsc2UgKi8pCiAgICB7CiAgICAgICAgaWYgKFxpc19hcnJheSgkY29udGVudCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxUeXBlRXJyb3IoXHNwcmludGYoJ0FyZ3VtZW50IDIgcGFzc2VkIHRvICIlcygpIiBtdXN0IGJlIHN0cmluZyBvciByZXNvdXJjZSwgYXJyYXkgZ2l2ZW4uJywgX19NRVRIT0RfXykpOwogICAgICAgIH0KCiAgICAgICAgJGRpciA9IFxkaXJuYW1lKCRmaWxlbmFtZSk7CgogICAgICAgIGlmICghaXNfZGlyKCRkaXIpKSB7CiAgICAgICAgICAgICR0aGlzLT5ta2RpcigkZGlyKTsKICAgICAgICB9CgogICAgICAgICRsb2NrID0gXGZ1bmNfbnVtX2FyZ3MoKSA+IDIgJiYgZnVuY19nZXRfYXJnKDIpOwoKICAgICAgICBpZiAoZmFsc2UgPT09IHNlbGY6OmJveCgnZmlsZV9wdXRfY29udGVudHMnLCAkZmlsZW5hbWUsICRjb250ZW50LCBcRklMRV9BUFBFTkQgfCAoJGxvY2sgPyBcTE9DS19FWCA6IDApKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oXHNwcmludGYoJ0ZhaWxlZCB0byB3cml0ZSBmaWxlICIlcyI6ICcsICRmaWxlbmFtZSkuc2VsZjo6JGxhc3RFcnJvciwgMCwgbnVsbCwgJGZpbGVuYW1lKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB0b0l0ZXJhYmxlKHN0cmluZ3xpdGVyYWJsZSAkZmlsZXMpOiBpdGVyYWJsZQogICAgewogICAgICAgIHJldHVybiBpc19pdGVyYWJsZSgkZmlsZXMpID8gJGZpbGVzIDogWyRmaWxlc107CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIGEgMi10dXBsZSBvZiBzY2hlbWUgKG1heSBiZSBudWxsKSBhbmQgaGllcmFyY2hpY2FsIHBhcnQgb2YgYSBmaWxlbmFtZSAoZS5nLiBmaWxlOi8vL3RtcCAtPiBbZmlsZSwgdG1wXSkuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0U2NoZW1lQW5kSGllcmFyY2h5KHN0cmluZyAkZmlsZW5hbWUpOiBhcnJheQogICAgewogICAgICAgICRjb21wb25lbnRzID0gZXhwbG9kZSgnOi8vJywgJGZpbGVuYW1lLCAyKTsKCiAgICAgICAgcmV0dXJuIDIgPT09IFxjb3VudCgkY29tcG9uZW50cykgPyBbJGNvbXBvbmVudHNbMF0sICRjb21wb25lbnRzWzFdXSA6IFtudWxsLCAkY29tcG9uZW50c1swXV07CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gYXNzZXJ0RnVuY3Rpb25FeGlzdHMoc3RyaW5nICRmdW5jKTogdm9pZAogICAgewogICAgICAgIGlmICghXGZ1bmN0aW9uX2V4aXN0cygkZnVuYykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKFxzcHJpbnRmKCdVbmFibGUgdG8gcGVyZm9ybSBmaWxlc3lzdGVtIG9wZXJhdGlvbiBiZWNhdXNlIHRoZSAiJXMoKSIgZnVuY3Rpb24gaGFzIGJlZW4gZGlzYWJsZWQuJywgJGZ1bmMpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gYm94KHN0cmluZyAkZnVuYywgbWl4ZWQgLi4uJGFyZ3MpOiBtaXhlZAogICAgewogICAgICAgIHNlbGY6OmFzc2VydEZ1bmN0aW9uRXhpc3RzKCRmdW5jKTsKCiAgICAgICAgc2VsZjo6JGxhc3RFcnJvciA9IG51bGw7CiAgICAgICAgc2V0X2Vycm9yX2hhbmRsZXIoc2VsZjo6aGFuZGxlRXJyb3IoLi4uKSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuICRmdW5jKC4uLiRhcmdzKTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICByZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoYW5kbGVFcnJvcihpbnQgJHR5cGUsIHN0cmluZyAkbXNnKTogdm9pZAogICAgewogICAgICAgIHNlbGY6OiRsYXN0RXJyb3IgPSAkbXNnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA0LXByZXNlbnQgRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/Path.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XENvbXBvbmVudFxGaWxlc3lzdGVtOwoKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEZpbGVzeXN0ZW1cRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEZpbGVzeXN0ZW1cRXhjZXB0aW9uXFJ1bnRpbWVFeGNlcHRpb247CgovKioKICogQ29udGFpbnMgdXRpbGl0eSBtZXRob2RzIGZvciBoYW5kbGluZyBwYXRoIHN0cmluZ3MuCiAqCiAqIFRoZSBtZXRob2RzIGluIHRoaXMgY2xhc3MgYXJlIGFibGUgdG8gZGVhbCB3aXRoIGJvdGggVU5JWCBhbmQgV2luZG93cyBwYXRocy4KICogT24gV2luZG93cywgYmFja3dhcmQgc2xhc2hlcyBhcmUgbm9ybWFsaXplZCB0byBmb3J3YXJkIHNsYXNoZXMuIE9uIFVOSVgsCiAqIGJhY2t3YXJkIHNsYXNoZXMgYXJlIHRyZWF0ZWQgYXMgdmFsaWQgZmlsZW5hbWUgY2hhcmFjdGVycyBhbmQgYXJlIG5vdCByZXBsYWNlZC4KICogQWxsIG1ldGhvZHMgcmV0dXJuIG5vcm1hbGl6ZWQgcGFydHMgd2l0aCBubyBleGNlc3MgIi4iIGFuZCAiLi4iIHNlZ21lbnRzLgogKgogKiBAYXV0aG9yIEJlcm5oYXJkIFNjaHVzc2VrIDxic2NodXNzZWtAZ21haWwuY29tPgogKiBAYXV0aG9yIFRob21hcyBTY2h1bHogPG1haWxAa2luZzI1MDAubmV0PgogKiBAYXV0aG9yIFRow6lvIEZpZHJ5IDx0aGVvLmZpZHJ5QGdtYWlsLmNvbT4KICovCmZpbmFsIGNsYXNzIFBhdGgKewogICAgLyoqCiAgICAgKiBUaGUgbnVtYmVyIG9mIGJ1ZmZlciBlbnRyaWVzIHRoYXQgdHJpZ2dlcnMgYSBjbGVhbnVwIG9wZXJhdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBDTEVBTlVQX1RIUkVTSE9MRCA9IDEyNTA7CgogICAgLyoqCiAgICAgKiBUaGUgYnVmZmVyIHNpemUgYWZ0ZXIgdGhlIGNsZWFudXAgb3BlcmF0aW9uLgogICAgICovCiAgICBwcml2YXRlIGNvbnN0IENMRUFOVVBfU0laRSA9IDEwMDA7CgogICAgLyoqCiAgICAgKiBCdWZmZXJzIGlucHV0L291dHB1dCBvZiB7QGxpbmsgY2Fub25pY2FsaXplKCl9LgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGFycmF5ICRidWZmZXIgPSBbXTsKCiAgICBwcml2YXRlIHN0YXRpYyBpbnQgJGJ1ZmZlclNpemUgPSAwOwoKICAgIC8qKgogICAgICogQ2Fub25pY2FsaXplcyB0aGUgZ2l2ZW4gcGF0aC4KICAgICAqCiAgICAgKiBEdXJpbmcgbm9ybWFsaXphdGlvbiwgYWxsICIuIiBhbmQgIi4uIiBzZWdtZW50cyBhcmUgcmVtb3ZlZCBhcyBmYXIgYXMKICAgICAqIHBvc3NpYmxlLiAiLi4iIHNlZ21lbnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgcmVsYXRpdmUgcGF0aHMgYXJlIG5vdCByZW1vdmVkLgogICAgICogT24gV2luZG93cywgYmFja3dhcmQgc2xhc2hlcyBhcmUgcmVwbGFjZWQgYnkgZm9yd2FyZCBzbGFzaGVzICgiLyIpLgogICAgICoKICAgICAqIGBgYHBocAogICAgICogZWNobyBQYXRoOjpjYW5vbmljYWxpemUoIi4uL2Nzcy8uL3N0eWxlLmNzcyIpOwogICAgICogLy8gPT4gLi4vY3NzL3N0eWxlLmNzcwogICAgICogYGBgCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgaXMgYWJsZSB0byBkZWFsIHdpdGggYm90aCBVTklYIGFuZCBXaW5kb3dzIHBhdGhzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShzdHJpbmcgJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJycgPT09ICRwYXRoKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBtYW55IG90aGVyIG1ldGhvZHMgaW4gdGhpcyBjbGFzcy4gQnVmZmVyCiAgICAgICAgLy8gdGhlIGNhbm9uaWNhbGl6ZWQgcGF0aHMgdG8gbWFrZSB1cCBmb3IgdGhlIHNldmVyZSBwZXJmb3JtYW5jZQogICAgICAgIC8vIGRlY3JlYXNlLgogICAgICAgIGlmIChpc3NldChzZWxmOjokYnVmZmVyWyRwYXRoXSkpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRidWZmZXJbJHBhdGhdOwogICAgICAgIH0KCiAgICAgICAgLy8gUmVwbGFjZSAifiIgd2l0aCB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkuCiAgICAgICAgaWYgKCd+JyA9PT0gJHBhdGhbMF0pIHsKICAgICAgICAgICAgJHBhdGggPSBzZWxmOjpnZXRIb21lRGlyZWN0b3J5KCkuc3Vic3RyKCRwYXRoLCAxKTsKICAgICAgICB9CgogICAgICAgICRwYXRoID0gc2VsZjo6bm9ybWFsaXplKCRwYXRoKTsKCiAgICAgICAgWyRyb290LCAkcGF0aFdpdGhvdXRSb290XSA9IHNlbGY6OnNwbGl0KCRwYXRoKTsKCiAgICAgICAgJGNhbm9uaWNhbFBhcnRzID0gc2VsZjo6ZmluZENhbm9uaWNhbFBhcnRzKCRyb290LCAkcGF0aFdpdGhvdXRSb290KTsKCiAgICAgICAgLy8gQWRkIHRoZSByb290IGRpcmVjdG9yeSBhZ2FpbgogICAgICAgIHNlbGY6OiRidWZmZXJbJHBhdGhdID0gJGNhbm9uaWNhbFBhdGggPSAkcm9vdC5pbXBsb2RlKCcvJywgJGNhbm9uaWNhbFBhcnRzKTsKICAgICAgICArK3NlbGY6OiRidWZmZXJTaXplOwoKICAgICAgICAvLyBDbGVhbiB1cCByZWd1bGFybHkgdG8gcHJldmVudCBtZW1vcnkgbGVha3MKICAgICAgICBpZiAoc2VsZjo6JGJ1ZmZlclNpemUgPiBzZWxmOjpDTEVBTlVQX1RIUkVTSE9MRCkgewogICAgICAgICAgICBzZWxmOjokYnVmZmVyID0gXGFycmF5X3NsaWNlKHNlbGY6OiRidWZmZXIsIC1zZWxmOjpDTEVBTlVQX1NJWkUsIG51bGwsIHRydWUpOwogICAgICAgICAgICBzZWxmOjokYnVmZmVyU2l6ZSA9IHNlbGY6OkNMRUFOVVBfU0laRTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY2Fub25pY2FsUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZXMgdGhlIGdpdmVuIHBhdGguCiAgICAgKgogICAgICogT24gV2luZG93cywgYmFja3dhcmQgc2xhc2hlcyBhcmUgcmVwbGFjZWQgYnkgZm9yd2FyZCBzbGFzaGVzICgiLyIpLgogICAgICogT24gVU5JWCwgYmFja3dhcmQgc2xhc2hlcyBhcmUgcHJlc2VydmVkIGFzIHRoZXkgYXJlIHZhbGlkIGZpbGVuYW1lIGNoYXJhY3RlcnMuCiAgICAgKiBDb250cmFyeSB0byB7QGxpbmsgY2Fub25pY2FsaXplKCl9LCB0aGlzIG1ldGhvZCBkb2VzIG5vdCByZW1vdmUgaW52YWxpZAogICAgICogb3IgZG90IHBhdGggc2VnbWVudHMuIENvbnNlcXVlbnRseSwgaXQgaXMgbXVjaCBtb3JlIGVmZmljaWVudCBhbmQgc2hvdWxkCiAgICAgKiBiZSB1c2VkIHdoZW5ldmVyIHRoZSBnaXZlbiBwYXRoIGlzIGtub3duIHRvIGJlIGEgdmFsaWQsIGFic29sdXRlIHN5c3RlbQogICAgICogcGF0aC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdcXCcgPT09IFxESVJFQ1RPUllfU0VQQVJBVE9SID8gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCkgOiAkcGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXJ0IG9mIHRoZSBwYXRoLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGlzIHNpbWlsYXIgdG8gUEhQJ3MgZGlybmFtZSgpLCBidXQgaGFuZGxlcyB2YXJpb3VzIGNhc2VzCiAgICAgKiB3aGVyZSBkaXJuYW1lKCkgcmV0dXJucyBhIHdlaXJkIHJlc3VsdDoKICAgICAqCiAgICAgKiAgLSBkaXJuYW1lKCkgZG9lcyBub3QgYWNjZXB0IGJhY2tzbGFzaGVzIG9uIFVOSVgKICAgICAqICAtIGRpcm5hbWUoIkM6L3N5bWZvbnkiKSByZXR1cm5zICJDOiIsIG5vdCAiQzovIgogICAgICogIC0gZGlybmFtZSgiQzovIikgcmV0dXJucyAiLiIsIG5vdCAiQzovIgogICAgICogIC0gZGlybmFtZSgiQzoiKSByZXR1cm5zICIuIiwgbm90ICJDOi8iCiAgICAgKiAgLSBkaXJuYW1lKCJzeW1mb255IikgcmV0dXJucyAiLiIsIG5vdCAiIgogICAgICogIC0gZGlybmFtZSgpIGRvZXMgbm90IGNhbm9uaWNhbGl6ZSB0aGUgcmVzdWx0CiAgICAgKgogICAgICogVGhpcyBtZXRob2QgZml4ZXMgdGhlc2Ugc2hvcnRjb21pbmdzIGFuZCBiZWhhdmVzIGxpa2UgZGlybmFtZSgpCiAgICAgKiBvdGhlcndpc2UuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBpcyBhIGNhbm9uaWNhbCBwYXRoLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBjYW5vbmljYWwgZGlyZWN0b3J5IHBhcnQuIFJldHVybnMgdGhlIHJvb3QgZGlyZWN0b3J5CiAgICAgKiAgICAgICAgICAgICAgICBpZiB0aGUgcm9vdCBkaXJlY3RvcnkgaXMgcGFzc2VkLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZwogICAgICogICAgICAgICAgICAgICAgaWYgYSByZWxhdGl2ZSBwYXRoIGlzIHBhc3NlZCB0aGF0IGNvbnRhaW5zIG5vIHNsYXNoZXMuCiAgICAgKiAgICAgICAgICAgICAgICBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiBhbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldERpcmVjdG9yeShzdHJpbmcgJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJycgPT09ICRwYXRoKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgICRwYXRoID0gc2VsZjo6Y2Fub25pY2FsaXplKCRwYXRoKTsKCiAgICAgICAgLy8gTWFpbnRhaW4gc2NoZW1lCiAgICAgICAgaWYgKGZhbHNlICE9PSAkc2NoZW1lU2VwYXJhdG9yUG9zaXRpb24gPSBzdHJwb3MoJHBhdGgsICc6Ly8nKSkgewogICAgICAgICAgICAkc2NoZW1lID0gc3Vic3RyKCRwYXRoLCAwLCAkc2NoZW1lU2VwYXJhdG9yUG9zaXRpb24gKyAzKTsKICAgICAgICAgICAgJHBhdGggPSBzdWJzdHIoJHBhdGgsICRzY2hlbWVTZXBhcmF0b3JQb3NpdGlvbiArIDMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzY2hlbWUgPSAnJzsKICAgICAgICB9CgogICAgICAgIGlmIChmYWxzZSA9PT0gJGRpclNlcGFyYXRvclBvc2l0aW9uID0gc3RycnBvcygkcGF0aCwgJy8nKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAvLyBEaXJlY3RvcnkgZXF1YWxzIHJvb3QgZGlyZWN0b3J5ICIvIgogICAgICAgIGlmICgwID09PSAkZGlyU2VwYXJhdG9yUG9zaXRpb24pIHsKICAgICAgICAgICAgcmV0dXJuICRzY2hlbWUuJy8nOwogICAgICAgIH0KCiAgICAgICAgLy8gRGlyZWN0b3J5IGVxdWFscyBXaW5kb3dzIHJvb3QgIkM6LyIKICAgICAgICBpZiAoMiA9PT0gJGRpclNlcGFyYXRvclBvc2l0aW9uICYmIGN0eXBlX2FscGhhKCRwYXRoWzBdKSAmJiAnOicgPT09ICRwYXRoWzFdKSB7CiAgICAgICAgICAgIHJldHVybiAkc2NoZW1lLnN1YnN0cigkcGF0aCwgMCwgMyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNjaGVtZS5zdWJzdHIoJHBhdGgsIDAsICRkaXJTZXBhcmF0b3JQb3NpdGlvbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGNhbm9uaWNhbCBwYXRoIG9mIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkuCiAgICAgKgogICAgICogU3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOgogICAgICoKICAgICAqICAtIFVOSVgKICAgICAqICAtIFdpbmRvd3M4IGFuZCB1cHBlcgogICAgICoKICAgICAqIElmIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBvciBlbnZpcm9ubWVudCBpc24ndCBzdXBwb3J0ZWQsIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBpcyBhIGNhbm9uaWNhbCBwYXRoLgogICAgICoKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBJZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gb3IgZW52aXJvbm1lbnQgaXNuJ3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SG9tZURpcmVjdG9yeSgpOiBzdHJpbmcKICAgIHsKICAgICAgICAvLyBGb3IgVU5JWCBzdXBwb3J0CiAgICAgICAgaWYgKGdldGVudignSE9NRScpKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjYW5vbmljYWxpemUoZ2V0ZW52KCdIT01FJykpOwogICAgICAgIH0KCiAgICAgICAgLy8gRm9yID49IFdpbmRvd3M4IHN1cHBvcnQKICAgICAgICBpZiAoZ2V0ZW52KCdIT01FRFJJVkUnKSAmJiBnZXRlbnYoJ0hPTUVQQVRIJykpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNhbm9uaWNhbGl6ZShnZXRlbnYoJ0hPTUVEUklWRScpLmdldGVudignSE9NRVBBVEgnKSk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ2Fubm90IGZpbmQgdGhlIGhvbWUgZGlyZWN0b3J5IHBhdGg6IFlvdXIgZW52aXJvbm1lbnQgb3Igb3BlcmF0aW5nIHN5c3RlbSBpc24ndCBzdXBwb3J0ZWQuIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByb290IGRpcmVjdG9yeSBvZiBhIHBhdGguCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBpcyBhIGNhbm9uaWNhbCBwYXRoLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBjYW5vbmljYWwgcm9vdCBkaXJlY3RvcnkuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmCiAgICAgKiAgICAgICAgICAgICAgICB0aGUgZ2l2ZW4gcGF0aCBpcyByZWxhdGl2ZSBvciBlbXB0eS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSb290KHN0cmluZyAkcGF0aCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgnJyA9PT0gJHBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgLy8gTWFpbnRhaW4gc2NoZW1lCiAgICAgICAgaWYgKGZhbHNlICE9PSAkc2NoZW1lU2VwYXJhdG9yUG9zaXRpb24gPSBzdHJwb3MoJHBhdGgsICc6Ly8nKSkgewogICAgICAgICAgICAkc2NoZW1lID0gc3Vic3RyKCRwYXRoLCAwLCAkc2NoZW1lU2VwYXJhdG9yUG9zaXRpb24gKyAzKTsKICAgICAgICAgICAgJHBhdGggPSBzdWJzdHIoJHBhdGgsICRzY2hlbWVTZXBhcmF0b3JQb3NpdGlvbiArIDMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzY2hlbWUgPSAnJzsKICAgICAgICB9CgogICAgICAgICRmaXJzdENoYXJhY3RlciA9ICRwYXRoWzBdOwoKICAgICAgICBpZiAoJy8nID09PSAkZmlyc3RDaGFyYWN0ZXIpIHsKICAgICAgICAgICAgcmV0dXJuICRzY2hlbWUuJy8nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdcXCcgIT09IFxESVJFQ1RPUllfU0VQQVJBVE9SKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIGlmICgnXFwnID09PSAkZmlyc3RDaGFyYWN0ZXIpIHsKICAgICAgICAgICAgcmV0dXJuICRzY2hlbWUuJy8nOwogICAgICAgIH0KCiAgICAgICAgJGxlbmd0aCA9IFxzdHJsZW4oJHBhdGgpOwoKICAgICAgICAvLyBXaW5kb3dzIHJvb3QKICAgICAgICBpZiAoJGxlbmd0aCA+IDEgJiYgJzonID09PSAkcGF0aFsxXSAmJiBjdHlwZV9hbHBoYSgkZmlyc3RDaGFyYWN0ZXIpKSB7CiAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZTogIkM6IgogICAgICAgICAgICBpZiAoMiA9PT0gJGxlbmd0aCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRzY2hlbWUuJHBhdGguJy8nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBOb3JtYWwgY2FzZTogIkM6LyIgb3IgIkM6XCIKICAgICAgICAgICAgaWYgKCcvJyA9PT0gJHBhdGhbMl0gfHwgJ1xcJyA9PT0gJHBhdGhbMl0pIHsKICAgICAgICAgICAgICAgIHJldHVybiAkc2NoZW1lLiRmaXJzdENoYXJhY3Rlci4kcGF0aFsxXS4nLyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAnJzsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGZpbGUgbmFtZSB3aXRob3V0IHRoZSBleHRlbnNpb24gZnJvbSBhIGZpbGUgcGF0aC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGV4dGVuc2lvbiBpZiBzcGVjaWZpZWQsIG9ubHkgdGhhdCBleHRlbnNpb24gaXMgY3V0CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgKG1heSBjb250YWluIGxlYWRpbmcgZG90KQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEZpbGVuYW1lV2l0aG91dEV4dGVuc2lvbihzdHJpbmcgJHBhdGgsID9zdHJpbmcgJGV4dGVuc2lvbiA9IG51bGwpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJycgPT09ICRwYXRoKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgIC8vIHJlbW92ZSBleHRlbnNpb24gYW5kIHRyYWlsaW5nIGRvdAogICAgICAgICAgICByZXR1cm4gcnRyaW0oYmFzZW5hbWUoJHBhdGgsICRleHRlbnNpb24pLCAnLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHBhdGhpbmZvKCRwYXRoLCBcUEFUSElORk9fRklMRU5BTUUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXh0ZW5zaW9uIGZyb20gYSBmaWxlIHBhdGggKHdpdGhvdXQgbGVhZGluZyBkb3QpLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICRmb3JjZUxvd2VyQ2FzZSBmb3JjZXMgdGhlIGV4dGVuc2lvbiB0byBiZSBsb3dlci1jYXNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHN0cmluZyAkcGF0aCwgYm9vbCAkZm9yY2VMb3dlckNhc2UgPSBmYWxzZSk6IHN0cmluZwogICAgewogICAgICAgIGlmICgnJyA9PT0gJHBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgJGV4dGVuc2lvbiA9IHBhdGhpbmZvKCRwYXRoLCBcUEFUSElORk9fRVhURU5TSU9OKTsKCiAgICAgICAgaWYgKCRmb3JjZUxvd2VyQ2FzZSkgewogICAgICAgICAgICAkZXh0ZW5zaW9uID0gc2VsZjo6dG9Mb3dlcigkZXh0ZW5zaW9uKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZXh0ZW5zaW9uOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwYXRoIGhhcyBhbiAob3IgdGhlIHNwZWNpZmllZCkgZXh0ZW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkcGF0aCAgICAgICB0aGUgcGF0aCBzdHJpbmcKICAgICAqIEBwYXJhbSBzdHJpbmd8c3RyaW5nW118bnVsbCAkZXh0ZW5zaW9ucyBpZiBudWxsIG9yIG5vdCBwcm92aWRlZCwgY2hlY2tzIGlmCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gZXh0ZW5zaW9uIGV4aXN0cywgb3RoZXJ3aXNlCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzIGZvciB0aGUgc3BlY2lmaWVkIGV4dGVuc2lvbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGFycmF5IG9mIGV4dGVuc2lvbnMgKHdpdGggb3IKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGxlYWRpbmcgZG90KQogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICRpZ25vcmVDYXNlIHdoZXRoZXIgdG8gaWdub3JlIGNhc2Utc2Vuc2l0aXZpdHkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoYXNFeHRlbnNpb24oc3RyaW5nICRwYXRoLCAkZXh0ZW5zaW9ucyA9IG51bGwsIGJvb2wgJGlnbm9yZUNhc2UgPSBmYWxzZSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJycgPT09ICRwYXRoKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRhY3R1YWxFeHRlbnNpb24gPSBzZWxmOjpnZXRFeHRlbnNpb24oJHBhdGgsICRpZ25vcmVDYXNlKTsKCiAgICAgICAgLy8gT25seSBjaGVjayBpZiBwYXRoIGhhcyBhbnkgZXh0ZW5zaW9uCiAgICAgICAgaWYgKFtdID09PSAkZXh0ZW5zaW9ucyB8fCBudWxsID09PSAkZXh0ZW5zaW9ucykgewogICAgICAgICAgICByZXR1cm4gJycgIT09ICRhY3R1YWxFeHRlbnNpb247CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX3N0cmluZygkZXh0ZW5zaW9ucykpIHsKICAgICAgICAgICAgJGV4dGVuc2lvbnMgPSBbJGV4dGVuc2lvbnNdOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGV4dGVuc2lvbnMgYXMgJGtleSA9PiAkZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgIGlmICgkaWdub3JlQ2FzZSkgewogICAgICAgICAgICAgICAgJGV4dGVuc2lvbiA9IHNlbGY6OnRvTG93ZXIoJGV4dGVuc2lvbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlbW92ZSBsZWFkaW5nICcuJyBpbiBleHRlbnNpb25zIGFycmF5CiAgICAgICAgICAgICRleHRlbnNpb25zWyRrZXldID0gbHRyaW0oJGV4dGVuc2lvbiwgJy4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcaW5fYXJyYXkoJGFjdHVhbEV4dGVuc2lvbiwgJGV4dGVuc2lvbnMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ2hhbmdlcyB0aGUgZXh0ZW5zaW9uIG9mIGEgcGF0aCBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcGF0aCAgICAgIFRoZSBwYXRoIHN0cmluZyB3aXRoIGZpbGVuYW1lLmV4dCB0byBjaGFuZ2UuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRleHRlbnNpb24gbmV3IGV4dGVuc2lvbiAod2l0aCBvciB3aXRob3V0IGxlYWRpbmcgZG90KQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIHRoZSBwYXRoIHN0cmluZyB3aXRoIG5ldyBmaWxlIGV4dGVuc2lvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoYW5nZUV4dGVuc2lvbihzdHJpbmcgJHBhdGgsIHN0cmluZyAkZXh0ZW5zaW9uKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCcnID09PSAkcGF0aCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkYWN0dWFsRXh0ZW5zaW9uID0gc2VsZjo6Z2V0RXh0ZW5zaW9uKCRwYXRoKTsKICAgICAgICAkZXh0ZW5zaW9uID0gbHRyaW0oJGV4dGVuc2lvbiwgJy4nKTsKCiAgICAgICAgLy8gTm8gZXh0ZW5zaW9uIGZvciBwYXRocwogICAgICAgIGlmIChzdHJfZW5kc193aXRoKCRwYXRoLCAnLycpKSB7CiAgICAgICAgICAgIHJldHVybiAkcGF0aDsKICAgICAgICB9CgogICAgICAgIC8vIE5vIGFjdHVhbCBleHRlbnNpb24gaW4gcGF0aAogICAgICAgIGlmICghJGFjdHVhbEV4dGVuc2lvbikgewogICAgICAgICAgICByZXR1cm4gJHBhdGguKHN0cl9lbmRzX3dpdGgoJHBhdGgsICcuJykgPyAnJyA6ICcuJykuJGV4dGVuc2lvbjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdWJzdHIoJHBhdGgsIDAsIC1cc3RybGVuKCRhY3R1YWxFeHRlbnNpb24pKS4kZXh0ZW5zaW9uOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBwYXRoIGlzIGFic29sdXRlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQWJzb2x1dGUoc3RyaW5nICRwYXRoKTogYm9vbAogICAgewogICAgICAgIGlmICgnJyA9PT0gJHBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gVVJMcyBhbmQgc3RyZWFtIHdyYXBwZXJzIGFyZSBjb25zaWRlcmVkIGFic29sdXRlCiAgICAgICAgaWYgKHN0cl9jb250YWlucygkcGF0aCwgJzovLycpICYmIG51bGwgIT09IHBhcnNlX3VybCgkcGF0aCwgXFBIUF9VUkxfU0NIRU1FKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgnLycgPT09ICRwYXRoWzBdKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdcXCcgIT09IFxESVJFQ1RPUllfU0VQQVJBVE9SKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgnXFwnID09PSAkcGF0aFswXSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIFdpbmRvd3Mgcm9vdAogICAgICAgIGlmIChcc3RybGVuKCRwYXRoKSA+IDEgJiYgY3R5cGVfYWxwaGEoJHBhdGhbMF0pICYmICc6JyA9PT0gJHBhdGhbMV0pIHsKICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlOiAiQzoiCiAgICAgICAgICAgIGlmICgyID09PSBcc3RybGVuKCRwYXRoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIE5vcm1hbCBjYXNlOiAiQzovIiBvciAiQzpcIgogICAgICAgICAgICBpZiAoJy8nID09PSAkcGF0aFsyXSB8fCAnXFwnID09PSAkcGF0aFsyXSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUmVsYXRpdmUoc3RyaW5nICRwYXRoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAhc2VsZjo6aXNBYnNvbHV0ZSgkcGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUdXJucyBhIHJlbGF0aXZlIHBhdGggaW50byBhbiBhYnNvbHV0ZSBwYXRoIGluIGNhbm9uaWNhbCBmb3JtLgogICAgICoKICAgICAqIFVzdWFsbHksIHRoZSByZWxhdGl2ZSBwYXRoIGlzIGFwcGVuZGVkIHRvIHRoZSBnaXZlbiBiYXNlIHBhdGguIERvdAogICAgICogc2VnbWVudHMgKCIuIiBhbmQgIi4uIikgYXJlIHJlbW92ZWQvY29sbGFwc2VkIGFuZCBhbGwgc2xhc2hlcyB0dXJuZWQKICAgICAqIGludG8gZm9yd2FyZCBzbGFzaGVzLgogICAgICoKICAgICAqIGBgYHBocAogICAgICogZWNobyBQYXRoOjptYWtlQWJzb2x1dGUoIi4uL3N0eWxlLmNzcyIsICIvc3ltZm9ueS9wdWxpL2NzcyIpOwogICAgICogLy8gPT4gL3N5bWZvbnkvcHVsaS9zdHlsZS5jc3MKICAgICAqIGBgYAogICAgICoKICAgICAqIElmIGFuIGFic29sdXRlIHBhdGggaXMgcGFzc2VkLCB0aGF0IHBhdGggaXMgcmV0dXJuZWQgdW5sZXNzIGl0cyByb290CiAgICAgKiBkaXJlY3RvcnkgaXMgZGlmZmVyZW50IHRoYW4gdGhlIG9uZSBvZiB0aGUgYmFzZSBwYXRoLiBJbiB0aGF0IGNhc2UsIGFuCiAgICAgKiBleGNlcHRpb24gaXMgdGhyb3duLgogICAgICoKICAgICAqIGBgYHBocAogICAgICogUGF0aDo6bWFrZUFic29sdXRlKCIvc3R5bGUuY3NzIiwgIi9zeW1mb255L3B1bGkvY3NzIik7CiAgICAgKiAvLyA9PiAvc3R5bGUuY3NzCiAgICAgKgogICAgICogUGF0aDo6bWFrZUFic29sdXRlKCJDOi9zdHlsZS5jc3MiLCAiQzovc3ltZm9ueS9wdWxpL2NzcyIpOwogICAgICogLy8gPT4gQzovc3R5bGUuY3NzCiAgICAgKgogICAgICogUGF0aDo6bWFrZUFic29sdXRlKCJDOi9zdHlsZS5jc3MiLCAiL3N5bWZvbnkvcHVsaS9jc3MiKTsKICAgICAqIC8vIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogYGBgCiAgICAgKgogICAgICogSWYgdGhlIGJhc2UgcGF0aCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KICAgICAqCiAgICAgKiBUaGUgcmVzdWx0IGlzIGEgY2Fub25pY2FsIHBhdGguCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYmFzZVBhdGggYW4gYWJzb2x1dGUgYmFzZSBwYXRoCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGJhc2UgcGF0aCBpcyBub3QgYWJzb2x1dGUgb3IgaWYKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBnaXZlbiBwYXRoIGlzIGFuIGFic29sdXRlIHBhdGggd2l0aAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBkaWZmZXJlbnQgcm9vdCB0aGFuIHRoZSBiYXNlIHBhdGgKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYWtlQWJzb2x1dGUoc3RyaW5nICRwYXRoLCBzdHJpbmcgJGJhc2VQYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCcnID09PSAkYmFzZVBhdGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignVGhlIGJhc2UgcGF0aCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy4gR290OiAiJXMiLicsICRiYXNlUGF0aCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFzZWxmOjppc0Fic29sdXRlKCRiYXNlUGF0aCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignVGhlIGJhc2UgcGF0aCAiJXMiIGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoLicsICRiYXNlUGF0aCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNlbGY6OmlzQWJzb2x1dGUoJHBhdGgpKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjYW5vbmljYWxpemUoJHBhdGgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlICE9PSAkc2NoZW1lU2VwYXJhdG9yUG9zaXRpb24gPSBzdHJwb3MoJGJhc2VQYXRoLCAnOi8vJykpIHsKICAgICAgICAgICAgJHNjaGVtZSA9IHN1YnN0cigkYmFzZVBhdGgsIDAsICRzY2hlbWVTZXBhcmF0b3JQb3NpdGlvbiArIDMpOwogICAgICAgICAgICAkYmFzZVBhdGggPSBzdWJzdHIoJGJhc2VQYXRoLCAkc2NoZW1lU2VwYXJhdG9yUG9zaXRpb24gKyAzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc2NoZW1lID0gJyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNjaGVtZS5zZWxmOjpjYW5vbmljYWxpemUocnRyaW0oJGJhc2VQYXRoLCAnLycuXERJUkVDVE9SWV9TRVBBUkFUT1IpLicvJy4kcGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUdXJucyBhIHBhdGggaW50byBhIHJlbGF0aXZlIHBhdGguCiAgICAgKgogICAgICogVGhlIHJlbGF0aXZlIHBhdGggaXMgY3JlYXRlZCByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gYmFzZSBwYXRoOgogICAgICoKICAgICAqIGBgYHBocAogICAgICogZWNobyBQYXRoOjptYWtlUmVsYXRpdmUoIi9zeW1mb255L3N0eWxlLmNzcyIsICIvc3ltZm9ueS9wdWxpIik7CiAgICAgKiAvLyA9PiAuLi9zdHlsZS5jc3MKICAgICAqIGBgYAogICAgICoKICAgICAqIElmIGEgcmVsYXRpdmUgcGF0aCBpcyBwYXNzZWQgYW5kIHRoZSBiYXNlIHBhdGggaXMgYWJzb2x1dGUsIHRoZSByZWxhdGl2ZQogICAgICogcGF0aCBpcyByZXR1cm5lZCB1bmNoYW5nZWQ6CiAgICAgKgogICAgICogYGBgcGhwCiAgICAgKiBQYXRoOjptYWtlUmVsYXRpdmUoInN0eWxlLmNzcyIsICIvc3ltZm9ueS9wdWxpL2NzcyIpOwogICAgICogLy8gPT4gc3R5bGUuY3NzCiAgICAgKiBgYGAKICAgICAqCiAgICAgKiBJZiBib3RoIHBhdGhzIGFyZSByZWxhdGl2ZSwgdGhlIHJlbGF0aXZlIHBhdGggaXMgY3JlYXRlZCB3aXRoIHRoZQogICAgICogYXNzdW1wdGlvbiB0aGF0IGJvdGggcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBzYW1lIGRpcmVjdG9yeToKICAgICAqCiAgICAgKiBgYGBwaHAKICAgICAqIFBhdGg6Om1ha2VSZWxhdGl2ZSgic3R5bGUuY3NzIiwgInN5bWZvbnkvcHVsaS9jc3MiKTsKICAgICAqIC8vID0+IC4uLy4uLy4uL3N0eWxlLmNzcwogICAgICogYGBgCiAgICAgKgogICAgICogSWYgYm90aCBwYXRocyBhcmUgYWJzb2x1dGUsIHRoZWlyIHJvb3QgZGlyZWN0b3J5IG11c3QgYmUgdGhlIHNhbWUsCiAgICAgKiBvdGhlcndpc2UgYW4gZXhjZXB0aW9uIGlzIHRocm93bjoKICAgICAqCiAgICAgKiBgYGBwaHAKICAgICAqIFBhdGg6Om1ha2VSZWxhdGl2ZSgiQzovc3ltZm9ueS9zdHlsZS5jc3MiLCAiL3N5bWZvbnkvcHVsaSIpOwogICAgICogLy8gSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiBgYGAKICAgICAqCiAgICAgKiBJZiB0aGUgcGFzc2VkIHBhdGggaXMgYWJzb2x1dGUsIGJ1dCB0aGUgYmFzZSBwYXRoIGlzIG5vdCwgYW4gZXhjZXB0aW9uCiAgICAgKiBpcyB0aHJvd24gYXMgd2VsbDoKICAgICAqCiAgICAgKiBgYGBwaHAKICAgICAqIFBhdGg6Om1ha2VSZWxhdGl2ZSgiL3N5bWZvbnkvc3R5bGUuY3NzIiwgInN5bWZvbnkvcHVsaSIpOwogICAgICogLy8gSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiBgYGAKICAgICAqCiAgICAgKiBJZiB0aGUgYmFzZSBwYXRoIGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoLCBhbiBleGNlcHRpb24gaXMgdGhyb3duLgogICAgICoKICAgICAqIFRoZSByZXN1bHQgaXMgYSBjYW5vbmljYWwgcGF0aC4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgYmFzZSBwYXRoIGlzIG5vdCBhYnNvbHV0ZSBvciBpZgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGdpdmVuIHBhdGggaGFzIGEgZGlmZmVyZW50IHJvb3QKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gdGhlIGJhc2UgcGF0aAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1ha2VSZWxhdGl2ZShzdHJpbmcgJHBhdGgsIHN0cmluZyAkYmFzZVBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcGF0aCA9IHNlbGY6OmNhbm9uaWNhbGl6ZSgkcGF0aCk7CiAgICAgICAgJGJhc2VQYXRoID0gc2VsZjo6Y2Fub25pY2FsaXplKCRiYXNlUGF0aCk7CgogICAgICAgIFskcm9vdCwgJHJlbGF0aXZlUGF0aF0gPSBzZWxmOjpzcGxpdCgkcGF0aCk7CiAgICAgICAgWyRiYXNlUm9vdCwgJHJlbGF0aXZlQmFzZVBhdGhdID0gc2VsZjo6c3BsaXQoJGJhc2VQYXRoKTsKCiAgICAgICAgLy8gSWYgdGhlIGJhc2UgcGF0aCBpcyBnaXZlbiBhcyBhYnNvbHV0ZSBwYXRoIGFuZCB0aGUgcGF0aCBpcyBhbHJlYWR5CiAgICAgICAgLy8gcmVsYXRpdmUsIGNvbnNpZGVyIGl0IHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBhYnNvbHV0ZSBwYXRoCiAgICAgICAgLy8gYWxyZWFkeQogICAgICAgIGlmICgnJyA9PT0gJHJvb3QgJiYgJycgIT09ICRiYXNlUm9vdCkgewogICAgICAgICAgICAvLyBJZiBiYXNlIHBhdGggaXMgYWxyZWFkeSBpbiBpdHMgcm9vdAogICAgICAgICAgICBpZiAoJycgPT09ICRyZWxhdGl2ZUJhc2VQYXRoKSB7CiAgICAgICAgICAgICAgICAvLyBUaGUgYmFzZSBwYXRoIGlzIHRoZSByb290IGRpcmVjdG9yeSwgc28gYW55IG51bWJlciBvZiBsZWFkaW5nCiAgICAgICAgICAgICAgICAvLyAiLi4vIiBzZWdtZW50cyByZXNvbHZlcyB0byB0aGUgcm9vdCBpdHNlbGYgYW5kICIuLyIgcHJlZml4ZXMKICAgICAgICAgICAgICAgIC8vIGNhcnJ5IG5vIGluZm9ybWF0aW9uLiBSZW1vdmUgdGhlbSBhcyBzZWdtZW50czogYSBsZWFkaW5nIGRvdAogICAgICAgICAgICAgICAgLy8gdGhhdCBpcyBub3Qgb25lIChlLmcuICIuaHRhY2Nlc3MiKSBtdXN0IHN1cnZpdmUuCiAgICAgICAgICAgICAgICB3aGlsZSAoc3RyX3N0YXJ0c193aXRoKCRyZWxhdGl2ZVBhdGgsICcuLycpIHx8IHN0cl9zdGFydHNfd2l0aCgkcmVsYXRpdmVQYXRoLCAnLi4vJykpIHsKICAgICAgICAgICAgICAgICAgICAkcmVsYXRpdmVQYXRoID0gc3Vic3RyKCRyZWxhdGl2ZVBhdGgsIHN0cl9zdGFydHNfd2l0aCgkcmVsYXRpdmVQYXRoLCAnLi4vJykgPyAzIDogMik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCcuLicgPT09ICRyZWxhdGl2ZVBhdGgpIHsKICAgICAgICAgICAgICAgICAgICAkcmVsYXRpdmVQYXRoID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkcmVsYXRpdmVQYXRoOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIHBhc3NlZCBwYXRoIGlzIGFic29sdXRlLCBidXQgdGhlIGJhc2UgcGF0aCBpcyBub3QsIHdlCiAgICAgICAgLy8gY2Fubm90IGdlbmVyYXRlIGEgcmVsYXRpdmUgcGF0aAogICAgICAgIGlmICgnJyAhPT0gJHJvb3QgJiYgJycgPT09ICRiYXNlUm9vdCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdUaGUgYWJzb2x1dGUgcGF0aCAiJXMiIGNhbm5vdCBiZSBtYWRlIHJlbGF0aXZlIHRvIHRoZSByZWxhdGl2ZSBwYXRoICIlcyIuIFlvdSBzaG91bGQgcHJvdmlkZSBhbiBhYnNvbHV0ZSBiYXNlIHBhdGggaW5zdGVhZC4nLCAkcGF0aCwgJGJhc2VQYXRoKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBGYWlsIGlmIHRoZSByb290cyBvZiB0aGUgdHdvIHBhdGhzIGFyZSBkaWZmZXJlbnQKICAgICAgICBpZiAoJGJhc2VSb290ICYmICRyb290ICE9PSAkYmFzZVJvb3QpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZignVGhlIHBhdGggIiVzIiBjYW5ub3QgYmUgbWFkZSByZWxhdGl2ZSB0byAiJXMiLCBiZWNhdXNlIHRoZXkgaGF2ZSBkaWZmZXJlbnQgcm9vdHMgKCIlcyIgYW5kICIlcyIpLicsICRwYXRoLCAkYmFzZVBhdGgsICRyb290LCAkYmFzZVJvb3QpKTsKICAgICAgICB9CgogICAgICAgIGlmICgnJyA9PT0gJHJlbGF0aXZlQmFzZVBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuICRyZWxhdGl2ZVBhdGg7CiAgICAgICAgfQoKICAgICAgICAvLyBCdWlsZCBhICIuLi8uLi8iIHByZWZpeCB3aXRoIGFzIG1hbnkgIi4uLyIgcGFydHMgYXMgbmVjZXNzYXJ5CiAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnLycsICRyZWxhdGl2ZVBhdGgpOwogICAgICAgICRiYXNlUGFydHMgPSBleHBsb2RlKCcvJywgJHJlbGF0aXZlQmFzZVBhdGgpOwogICAgICAgICRkb3REb3RQcmVmaXggPSAnJzsKCiAgICAgICAgLy8gT25jZSB3ZSBmb3VuZCBhIG5vbi1tYXRjaGluZyBwYXJ0IGluIHRoZSBwcmVmaXgsIHdlIG5lZWQgdG8gYWRkCiAgICAgICAgLy8gIi4uLyIgcGFydHMgZm9yIGFsbCByZW1haW5pbmcgcGFydHMKICAgICAgICAkbWF0Y2ggPSB0cnVlOwoKICAgICAgICBmb3JlYWNoICgkYmFzZVBhcnRzIGFzICRpbmRleCA9PiAkYmFzZVBhcnQpIHsKICAgICAgICAgICAgaWYgKCRtYXRjaCAmJiBpc3NldCgkcGFydHNbJGluZGV4XSkgJiYgJGJhc2VQYXJ0ID09PSAkcGFydHNbJGluZGV4XSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHBhcnRzWyRpbmRleF0pOwoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWF0Y2ggPSBmYWxzZTsKICAgICAgICAgICAgJGRvdERvdFByZWZpeCAuPSAnLi4vJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBydHJpbSgkZG90RG90UHJlZml4LmltcGxvZGUoJy8nLCAkcGFydHMpLCAnLycpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBwYXRoIGlzIG9uIHRoZSBsb2NhbCBmaWxlc3lzdGVtLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzTG9jYWwoc3RyaW5nICRwYXRoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAnJyAhPT0gJHBhdGggJiYgIXN0cl9jb250YWlucygkcGF0aCwgJzovLycpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gYmFzZSBwYXRoIGluIGNhbm9uaWNhbCBmb3JtIG9mIGEgc2V0IG9mIHBhdGhzIG9yCiAgICAgKiBgbnVsbGAgaWYgdGhlIHBhdGhzIGFyZSBvbiBkaWZmZXJlbnQgV2luZG93cyBwYXJ0aXRpb25zLgogICAgICoKICAgICAqIERvdCBzZWdtZW50cyAoIi4iIGFuZCAiLi4iKSBhcmUgcmVtb3ZlZC9jb2xsYXBzZWQgYW5kIGFsbCBzbGFzaGVzIHR1cm5lZAogICAgICogaW50byBmb3J3YXJkIHNsYXNoZXMuCiAgICAgKgogICAgICogYGBgcGhwCiAgICAgKiAkYmFzZVBhdGggPSBQYXRoOjpnZXRMb25nZXN0Q29tbW9uQmFzZVBhdGgoCiAgICAgKiAgICAgJy9zeW1mb255L2Nzcy9zdHlsZS5jc3MnLAogICAgICogICAgICcvc3ltZm9ueS9jc3MvLi4nCiAgICAgKiApOwogICAgICogLy8gPT4gL3N5bWZvbnkKICAgICAqIGBgYAogICAgICoKICAgICAqIFRoZSByb290IGlzIHJldHVybmVkIGlmIG5vIGNvbW1vbiBiYXNlIHBhdGggY2FuIGJlIGZvdW5kOgogICAgICoKICAgICAqIGBgYHBocAogICAgICogJGJhc2VQYXRoID0gUGF0aDo6Z2V0TG9uZ2VzdENvbW1vbkJhc2VQYXRoKAogICAgICogICAgICcvc3ltZm9ueS9jc3Mvc3R5bGUuY3NzJywKICAgICAqICAgICAnL3B1bGkvY3NzLy4uJwogICAgICogKTsKICAgICAqIC8vID0+IC8KICAgICAqIGBgYAogICAgICoKICAgICAqIElmIHRoZSBwYXRocyBhcmUgbG9jYXRlZCBvbiBkaWZmZXJlbnQgV2luZG93cyBwYXJ0aXRpb25zLCBgbnVsbGAgaXMKICAgICAqIHJldHVybmVkLgogICAgICoKICAgICAqIGBgYHBocAogICAgICogJGJhc2VQYXRoID0gUGF0aDo6Z2V0TG9uZ2VzdENvbW1vbkJhc2VQYXRoKAogICAgICogICAgICdDOi9zeW1mb255L2Nzcy9zdHlsZS5jc3MnLAogICAgICogICAgICdEOi9zeW1mb255L2Nzcy8uLicKICAgICAqICk7CiAgICAgKiAvLyA9PiBudWxsCiAgICAgKiBgYGAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRMb25nZXN0Q29tbW9uQmFzZVBhdGgoc3RyaW5nIC4uLiRwYXRocyk6ID9zdHJpbmcKICAgIHsKICAgICAgICBbJGJwUm9vdCwgJGJhc2VQYXRoXSA9IHNlbGY6OnNwbGl0KHNlbGY6OmNhbm9uaWNhbGl6ZShyZXNldCgkcGF0aHMpKSk7CgogICAgICAgIGZvciAobmV4dCgkcGF0aHMpOyBudWxsICE9PSBrZXkoJHBhdGhzKSAmJiAnJyAhPT0gJGJhc2VQYXRoOyBuZXh0KCRwYXRocykpIHsKICAgICAgICAgICAgWyRyb290LCAkcGF0aF0gPSBzZWxmOjpzcGxpdChzZWxmOjpjYW5vbmljYWxpemUoY3VycmVudCgkcGF0aHMpKSk7CgogICAgICAgICAgICAvLyBJZiB3ZSBkZWFsIHdpdGggZGlmZmVyZW50IHJvb3RzIChlLmcuIEM6LyB2cy4gRDovKSwgaXQncyB0aW1lCiAgICAgICAgICAgIC8vIHRvIHF1aXQKICAgICAgICAgICAgaWYgKCRyb290ICE9PSAkYnBSb290KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gTWFrZSB0aGUgYmFzZSBwYXRoIHNob3J0ZXIgdW50aWwgaXQgZml0cyBpbnRvIHBhdGgKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgIGlmICgnLicgPT09ICRiYXNlUGF0aCkgewogICAgICAgICAgICAgICAgICAgIC8vIE5vIG1vcmUgYmFzZSBwYXRocwogICAgICAgICAgICAgICAgICAgICRiYXNlUGF0aCA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IHBhdGgKICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgZmFsc2UgcG9zaXRpdmVzIGZvciBjb21tb24gcHJlZml4ZXMKICAgICAgICAgICAgICAgIC8vIHNlZSBpc0Jhc2VQYXRoKCkKICAgICAgICAgICAgICAgIGlmIChzdHJfc3RhcnRzX3dpdGgoJHBhdGguJy8nLCAkYmFzZVBhdGguJy8nKSkgewogICAgICAgICAgICAgICAgICAgIC8vIG5leHQgcGF0aAogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGJhc2VQYXRoID0gXGRpcm5hbWUoJGJhc2VQYXRoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRicFJvb3QuJGJhc2VQYXRoOwogICAgfQoKICAgIC8qKgogICAgICogSm9pbnMgdHdvIG9yIG1vcmUgcGF0aCBzdHJpbmdzIGludG8gYSBjYW5vbmljYWwgcGF0aC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBqb2luKHN0cmluZyAuLi4kcGF0aHMpOiBzdHJpbmcKICAgIHsKICAgICAgICAkZmluYWxQYXRoID0gbnVsbDsKICAgICAgICAkd2FzU2NoZW1lID0gZmFsc2U7CgogICAgICAgIGZvcmVhY2ggKCRwYXRocyBhcyAkcGF0aCkgewogICAgICAgICAgICBpZiAoJycgPT09ICRwYXRoKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRmaW5hbFBhdGgpIHsKICAgICAgICAgICAgICAgIC8vIEZvciBmaXJzdCBwYXJ0IHdlIGtlZXAgc2xhc2hlcywgbGlrZSAnL3RvcCcsICdDOlwnIG9yICdwaGFyOi8vJwogICAgICAgICAgICAgICAgJGZpbmFsUGF0aCA9ICRwYXRoOwogICAgICAgICAgICAgICAgJHdhc1NjaGVtZSA9IHN0cl9jb250YWlucygkcGF0aCwgJzovLycpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIE9ubHkgYWRkIHNsYXNoIGlmIHByZXZpb3VzIHBhcnQgZGlkbid0IGVuZCB3aXRoICcvJyBvciAnXCcgKFdpbmRvd3MpCiAgICAgICAgICAgIGlmICgnLycgIT09IHN1YnN0cigkZmluYWxQYXRoLCAtMSkgJiYgXERJUkVDVE9SWV9TRVBBUkFUT1IgIT09IHN1YnN0cigkZmluYWxQYXRoLCAtMSkpIHsKICAgICAgICAgICAgICAgICRmaW5hbFBhdGggLj0gJy8nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiBmaXJzdCBwYXJ0IGluY2x1ZGVkIGEgc2NoZW1lIGxpa2UgJ3BoYXI6Ly8nIHdlIGFsbG93IFxjdXJyZW50IHBhcnQgdG8gc3RhcnQgd2l0aCAnLycsIG90aGVyd2lzZSB0cmltCiAgICAgICAgICAgICRmaW5hbFBhdGggLj0gJHdhc1NjaGVtZSA/ICRwYXRoIDogbHRyaW0oJHBhdGgsICcvJyk7CiAgICAgICAgICAgICR3YXNTY2hlbWUgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkZmluYWxQYXRoKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjYW5vbmljYWxpemUoJGZpbmFsUGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBwYXRoIGlzIGEgYmFzZSBwYXRoIG9mIGFub3RoZXIgcGF0aC4KICAgICAqCiAgICAgKiBEb3Qgc2VnbWVudHMgKCIuIiBhbmQgIi4uIikgYXJlIHJlbW92ZWQvY29sbGFwc2VkIGFuZCBhbGwgc2xhc2hlcyB0dXJuZWQKICAgICAqIGludG8gZm9yd2FyZCBzbGFzaGVzLgogICAgICoKICAgICAqIGBgYHBocAogICAgICogUGF0aDo6aXNCYXNlUGF0aCgnL3N5bWZvbnknLCAnL3N5bWZvbnkvY3NzJyk7CiAgICAgKiAvLyA9PiB0cnVlCiAgICAgKgogICAgICogUGF0aDo6aXNCYXNlUGF0aCgnL3N5bWZvbnknLCAnL3N5bWZvbnknKTsKICAgICAqIC8vID0+IHRydWUKICAgICAqCiAgICAgKiBQYXRoOjppc0Jhc2VQYXRoKCcvc3ltZm9ueScsICcvc3ltZm9ueS8uLicpOwogICAgICogLy8gPT4gZmFsc2UKICAgICAqCiAgICAgKiBQYXRoOjppc0Jhc2VQYXRoKCcvc3ltZm9ueScsICcvcHVsaScpOwogICAgICogLy8gPT4gZmFsc2UKICAgICAqIGBgYAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQmFzZVBhdGgoc3RyaW5nICRiYXNlUGF0aCwgc3RyaW5nICRvZlBhdGgpOiBib29sCiAgICB7CiAgICAgICAgJGJhc2VQYXRoID0gc2VsZjo6Y2Fub25pY2FsaXplKCRiYXNlUGF0aCk7CiAgICAgICAgJG9mUGF0aCA9IHNlbGY6OmNhbm9uaWNhbGl6ZSgkb2ZQYXRoKTsKCiAgICAgICAgLy8gQXBwZW5kIHNsYXNoZXMgdG8gcHJldmVudCBmYWxzZSBwb3NpdGl2ZXMgd2hlbiB0d28gcGF0aHMgaGF2ZQogICAgICAgIC8vIGEgY29tbW9uIHByZWZpeCwgZm9yIGV4YW1wbGUgL2Jhc2UvZm9vIGFuZCAvYmFzZS9mb29iYXIuCiAgICAgICAgLy8gRG9uJ3QgYXBwZW5kIGEgc2xhc2ggZm9yIHRoZSByb290ICIvIiwgYmVjYXVzZSB0aGVuIHRoYXQgcm9vdAogICAgICAgIC8vIHdvbid0IGJlIGRpc2NvdmVyZWQgYXMgY29tbW9uIHByZWZpeCAoIi8vIiBpcyBub3QgYSBwcmVmaXggb2YKICAgICAgICAvLyAiL2Zvb2Jhci8iKS4KICAgICAgICByZXR1cm4gc3RyX3N0YXJ0c193aXRoKCRvZlBhdGguJy8nLCBydHJpbSgkYmFzZVBhdGgsICcvJykuJy8nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZmluZENhbm9uaWNhbFBhcnRzKHN0cmluZyAkcm9vdCwgc3RyaW5nICRwYXRoV2l0aG91dFJvb3QpOiBhcnJheQogICAgewogICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJy8nLCAkcGF0aFdpdGhvdXRSb290KTsKCiAgICAgICAgJGNhbm9uaWNhbFBhcnRzID0gW107CgogICAgICAgIC8vIENvbGxhcHNlICIuIiBhbmQgIi4uIiwgaWYgcG9zc2libGUKICAgICAgICBmb3JlYWNoICgkcGFydHMgYXMgJHBhcnQpIHsKICAgICAgICAgICAgaWYgKCcuJyA9PT0gJHBhcnQgfHwgJycgPT09ICRwYXJ0KSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gQ29sbGFwc2UgIi4uIiB3aXRoIHRoZSBwcmV2aW91cyBwYXJ0LCBpZiBvbmUgZXhpc3RzCiAgICAgICAgICAgIC8vIERvbid0IGNvbGxhcHNlICIuLiIgaWYgdGhlIHByZXZpb3VzIHBhcnQgaXMgYWxzbyAiLi4iCiAgICAgICAgICAgIGlmICgnLi4nID09PSAkcGFydCAmJiAkY2Fub25pY2FsUGFydHMgJiYgJy4uJyAhPT0gJGNhbm9uaWNhbFBhcnRzW1xjb3VudCgkY2Fub25pY2FsUGFydHMpIC0gMV0pIHsKICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkY2Fub25pY2FsUGFydHMpOwoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBPbmx5IGFkZCAiLi4iIHByZWZpeGVzIGZvciByZWxhdGl2ZSBwYXRocwogICAgICAgICAgICBpZiAoJy4uJyAhPT0gJHBhcnQgfHwgJycgPT09ICRyb290KSB7CiAgICAgICAgICAgICAgICAkY2Fub25pY2FsUGFydHNbXSA9ICRwYXJ0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNhbm9uaWNhbFBhcnRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXRzIGEgY2Fub25pY2FsIHBhdGggaW50byBpdHMgcm9vdCBkaXJlY3RvcnkgYW5kIHRoZSByZW1haW5kZXIuCiAgICAgKgogICAgICogSWYgdGhlIHBhdGggaGFzIG5vIHJvb3QgZGlyZWN0b3J5LCBhbiBlbXB0eSByb290IGRpcmVjdG9yeSB3aWxsIGJlCiAgICAgKiByZXR1cm5lZC4KICAgICAqCiAgICAgKiBJZiB0aGUgcm9vdCBkaXJlY3RvcnkgaXMgYSBXaW5kb3dzIHN0eWxlIHBhcnRpdGlvbiwgdGhlIHJlc3VsdGluZyByb290CiAgICAgKiB3aWxsIGFsd2F5cyBjb250YWluIGEgdHJhaWxpbmcgc2xhc2guCiAgICAgKgogICAgICogbGlzdCAoJHJvb3QsICRwYXRoKSA9IFBhdGg6OnNwbGl0KCJDOi9zeW1mb255IikKICAgICAqIC8vID0+IFsiQzovIiwgInN5bWZvbnkiXQogICAgICoKICAgICAqIGxpc3QgKCRyb290LCAkcGF0aCkgPSBQYXRoOjpzcGxpdCgiQzoiKQogICAgICogLy8gPT4gWyJDOi8iLCAiIl0KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e3N0cmluZywgc3RyaW5nfSBhbiBhcnJheSB3aXRoIHRoZSByb290IGRpcmVjdG9yeSBhbmQgdGhlIHJlbWFpbmluZyByZWxhdGl2ZSBwYXRoCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHNwbGl0KHN0cmluZyAkcGF0aCk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCcnID09PSAkcGF0aCkgewogICAgICAgICAgICByZXR1cm4gWycnLCAnJ107CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1lbWJlciBzY2hlbWUgYXMgcGFydCBvZiB0aGUgcm9vdCwgaWYgYW55CiAgICAgICAgaWYgKGZhbHNlICE9PSAkc2NoZW1lU2VwYXJhdG9yUG9zaXRpb24gPSBzdHJwb3MoJHBhdGgsICc6Ly8nKSkgewogICAgICAgICAgICAkcm9vdCA9IHN1YnN0cigkcGF0aCwgMCwgJHNjaGVtZVNlcGFyYXRvclBvc2l0aW9uICsgMyk7CiAgICAgICAgICAgICRwYXRoID0gc3Vic3RyKCRwYXRoLCAkc2NoZW1lU2VwYXJhdG9yUG9zaXRpb24gKyAzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcm9vdCA9ICcnOwogICAgICAgIH0KCiAgICAgICAgJGxlbmd0aCA9IFxzdHJsZW4oJHBhdGgpOwoKICAgICAgICAvLyBSZW1vdmUgYW5kIHJlbWVtYmVyIHJvb3QgZGlyZWN0b3J5CiAgICAgICAgaWYgKHN0cl9zdGFydHNfd2l0aCgkcGF0aCwgJy8nKSkgewogICAgICAgICAgICAkcm9vdCAuPSAnLyc7CiAgICAgICAgICAgICRwYXRoID0gJGxlbmd0aCA+IDEgPyBzdWJzdHIoJHBhdGgsIDEpIDogJyc7CiAgICAgICAgfSBlbHNlaWYgKCdcXCcgPT09IFxESVJFQ1RPUllfU0VQQVJBVE9SICYmICRsZW5ndGggPiAxICYmIGN0eXBlX2FscGhhKCRwYXRoWzBdKSAmJiAnOicgPT09ICRwYXRoWzFdKSB7CiAgICAgICAgICAgIGlmICgyID09PSAkbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAvLyBXaW5kb3dzIHNwZWNpYWwgY2FzZTogIkM6IgogICAgICAgICAgICAgICAgJHJvb3QgLj0gJHBhdGguJy8nOwogICAgICAgICAgICAgICAgJHBhdGggPSAnJzsKICAgICAgICAgICAgfSBlbHNlaWYgKCcvJyA9PT0gJHBhdGhbMl0pIHsKICAgICAgICAgICAgICAgIC8vIFdpbmRvd3Mgbm9ybWFsIGNhc2U6ICJDOi8iLi4KICAgICAgICAgICAgICAgICRyb290IC49IHN1YnN0cigkcGF0aCwgMCwgMyk7CiAgICAgICAgICAgICAgICAkcGF0aCA9ICRsZW5ndGggPiAzID8gc3Vic3RyKCRwYXRoLCAzKSA6ICcnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRyb290LCAkcGF0aF07CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdG9Mb3dlcihzdHJpbmcgJHN0cmluZyk6IHN0cmluZwogICAgewogICAgICAgIGlmIChmYWxzZSAhPT0gJGVuY29kaW5nID0gbWJfZGV0ZWN0X2VuY29kaW5nKCRzdHJpbmcsIG51bGwsIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybiBtYl9zdHJ0b2xvd2VyKCRzdHJpbmcsICRlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RydG9sb3dlcigkc3RyaW5nKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/filesystem/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[RmlsZXN5c3RlbSBDb21wb25lbnQKPT09PT09PT09PT09PT09PT09PT0KClRoZSBGaWxlc3lzdGVtIGNvbXBvbmVudCBwcm92aWRlcyBiYXNpYyB1dGlsaXRpZXMgZm9yIHRoZSBmaWxlc3lzdGVtLgoKUmVzb3VyY2VzCi0tLS0tLS0tLQoKICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vc3ltZm9ueS5jb20vZG9jL2N1cnJlbnQvY29tcG9uZW50cy9maWxlc3lzdGVtLmh0bWwpCiAqIFtDb250cmlidXRpbmddKGh0dHBzOi8vc3ltZm9ueS5jb20vZG9jL2N1cnJlbnQvY29udHJpYnV0aW5nL2luZGV4Lmh0bWwpCiAqIFtSZXBvcnQgaXNzdWVzXShodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9zeW1mb255L2lzc3VlcykgYW5kCiAgIFtzZW5kIFB1bGwgUmVxdWVzdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3N5bWZvbnkvcHVsbHMpCiAgIGluIHRoZSBbbWFpbiBTeW1mb255IHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3N5bWZvbnkpCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-ctype/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-ctype/bootstrap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCnVzZSBTeW1mb255XFBvbHlmaWxsXEN0eXBlIGFzIHA7CgppZiAoXFBIUF9WRVJTSU9OX0lEID49IDgwMDAwKSB7CiAgICByZXR1cm4gcmVxdWlyZSBfX0RJUl9fLicvYm9vdHN0cmFwODAucGhwJzsKfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N0eXBlX2FsbnVtJykpIHsKICAgIGZ1bmN0aW9uIGN0eXBlX2FsbnVtKCR0ZXh0KSB7IHJldHVybiBwXEN0eXBlOjpjdHlwZV9hbG51bSgkdGV4dCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3R5cGVfYWxwaGEnKSkgewogICAgZnVuY3Rpb24gY3R5cGVfYWxwaGEoJHRleHQpIHsgcmV0dXJuIHBcQ3R5cGU6OmN0eXBlX2FscGhhKCR0ZXh0KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdjdHlwZV9jbnRybCcpKSB7CiAgICBmdW5jdGlvbiBjdHlwZV9jbnRybCgkdGV4dCkgeyByZXR1cm4gcFxDdHlwZTo6Y3R5cGVfY250cmwoJHRleHQpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N0eXBlX2RpZ2l0JykpIHsKICAgIGZ1bmN0aW9uIGN0eXBlX2RpZ2l0KCR0ZXh0KSB7IHJldHVybiBwXEN0eXBlOjpjdHlwZV9kaWdpdCgkdGV4dCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3R5cGVfZ3JhcGgnKSkgewogICAgZnVuY3Rpb24gY3R5cGVfZ3JhcGgoJHRleHQpIHsgcmV0dXJuIHBcQ3R5cGU6OmN0eXBlX2dyYXBoKCR0ZXh0KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdjdHlwZV9sb3dlcicpKSB7CiAgICBmdW5jdGlvbiBjdHlwZV9sb3dlcigkdGV4dCkgeyByZXR1cm4gcFxDdHlwZTo6Y3R5cGVfbG93ZXIoJHRleHQpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N0eXBlX3ByaW50JykpIHsKICAgIGZ1bmN0aW9uIGN0eXBlX3ByaW50KCR0ZXh0KSB7IHJldHVybiBwXEN0eXBlOjpjdHlwZV9wcmludCgkdGV4dCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3R5cGVfcHVuY3QnKSkgewogICAgZnVuY3Rpb24gY3R5cGVfcHVuY3QoJHRleHQpIHsgcmV0dXJuIHBcQ3R5cGU6OmN0eXBlX3B1bmN0KCR0ZXh0KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdjdHlwZV9zcGFjZScpKSB7CiAgICBmdW5jdGlvbiBjdHlwZV9zcGFjZSgkdGV4dCkgeyByZXR1cm4gcFxDdHlwZTo6Y3R5cGVfc3BhY2UoJHRleHQpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N0eXBlX3VwcGVyJykpIHsKICAgIGZ1bmN0aW9uIGN0eXBlX3VwcGVyKCR0ZXh0KSB7IHJldHVybiBwXEN0eXBlOjpjdHlwZV91cHBlcigkdGV4dCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3R5cGVfeGRpZ2l0JykpIHsKICAgIGZ1bmN0aW9uIGN0eXBlX3hkaWdpdCgkdGV4dCkgeyByZXR1cm4gcFxDdHlwZTo6Y3R5cGVfeGRpZ2l0KCR0ZXh0KTsgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-ctype/bootstrap80.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCnVzZSBTeW1mb255XFBvbHlmaWxsXEN0eXBlIGFzIHA7CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3R5cGVfYWxudW0nKSkgewogICAgZnVuY3Rpb24gY3R5cGVfYWxudW0obWl4ZWQgJHRleHQpOiBib29sIHsgcmV0dXJuIHBcQ3R5cGU6OmN0eXBlX2FsbnVtKCR0ZXh0KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdjdHlwZV9hbHBoYScpKSB7CiAgICBmdW5jdGlvbiBjdHlwZV9hbHBoYShtaXhlZCAkdGV4dCk6IGJvb2wgeyByZXR1cm4gcFxDdHlwZTo6Y3R5cGVfYWxwaGEoJHRleHQpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N0eXBlX2NudHJsJykpIHsKICAgIGZ1bmN0aW9uIGN0eXBlX2NudHJsKG1peGVkICR0ZXh0KTogYm9vbCB7IHJldHVybiBwXEN0eXBlOjpjdHlwZV9jbnRybCgkdGV4dCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3R5cGVfZGlnaXQnKSkgewogICAgZnVuY3Rpb24gY3R5cGVfZGlnaXQobWl4ZWQgJHRleHQpOiBib29sIHsgcmV0dXJuIHBcQ3R5cGU6OmN0eXBlX2RpZ2l0KCR0ZXh0KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdjdHlwZV9ncmFwaCcpKSB7CiAgICBmdW5jdGlvbiBjdHlwZV9ncmFwaChtaXhlZCAkdGV4dCk6IGJvb2wgeyByZXR1cm4gcFxDdHlwZTo6Y3R5cGVfZ3JhcGgoJHRleHQpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N0eXBlX2xvd2VyJykpIHsKICAgIGZ1bmN0aW9uIGN0eXBlX2xvd2VyKG1peGVkICR0ZXh0KTogYm9vbCB7IHJldHVybiBwXEN0eXBlOjpjdHlwZV9sb3dlcigkdGV4dCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3R5cGVfcHJpbnQnKSkgewogICAgZnVuY3Rpb24gY3R5cGVfcHJpbnQobWl4ZWQgJHRleHQpOiBib29sIHsgcmV0dXJuIHBcQ3R5cGU6OmN0eXBlX3ByaW50KCR0ZXh0KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdjdHlwZV9wdW5jdCcpKSB7CiAgICBmdW5jdGlvbiBjdHlwZV9wdW5jdChtaXhlZCAkdGV4dCk6IGJvb2wgeyByZXR1cm4gcFxDdHlwZTo6Y3R5cGVfcHVuY3QoJHRleHQpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2N0eXBlX3NwYWNlJykpIHsKICAgIGZ1bmN0aW9uIGN0eXBlX3NwYWNlKG1peGVkICR0ZXh0KTogYm9vbCB7IHJldHVybiBwXEN0eXBlOjpjdHlwZV9zcGFjZSgkdGV4dCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY3R5cGVfdXBwZXInKSkgewogICAgZnVuY3Rpb24gY3R5cGVfdXBwZXIobWl4ZWQgJHRleHQpOiBib29sIHsgcmV0dXJuIHBcQ3R5cGU6OmN0eXBlX3VwcGVyKCR0ZXh0KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdjdHlwZV94ZGlnaXQnKSkgewogICAgZnVuY3Rpb24gY3R5cGVfeGRpZ2l0KG1peGVkICR0ZXh0KTogYm9vbCB7IHJldHVybiBwXEN0eXBlOjpjdHlwZV94ZGlnaXQoJHRleHQpOyB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-ctype/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1jdHlwZSIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGZvciBjdHlwZSBmdW5jdGlvbnMiLAogICAgImtleXdvcmRzIjogWyJwb2x5ZmlsbCIsICJjb21wYXRpYmlsaXR5IiwgInBvcnRhYmxlIiwgImN0eXBlIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHZXJ0IGRlIFBhZ3RlciIsCiAgICAgICAgICAgICJlbWFpbCI6ICJCYWNrRW5kVGVhQGdtYWlsLmNvbSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj03LjIiCiAgICB9LAogICAgInByb3ZpZGUiOiB7CiAgICAgICAgImV4dC1jdHlwZSI6ICIqIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7ICJTeW1mb255XFxQb2x5ZmlsbFxcQ3R5cGVcXCI6ICIiIH0sCiAgICAgICAgImZpbGVzIjogWyAiYm9vdHN0cmFwLnBocCIgXQogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJleHQtY3R5cGUiOiAiRm9yIGJlc3QgcGVyZm9ybWFuY2UiCiAgICB9LAogICAgIm1pbmltdW0tc3RhYmlsaXR5IjogImRldiIsCiAgICAiZXh0cmEiOiB7CiAgICAgICAgInRoYW5rcyI6IHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-ctype/Ctype.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XFBvbHlmaWxsXEN0eXBlOwoKLyoqCiAqIEN0eXBlIGltcGxlbWVudGF0aW9uIHRocm91Z2ggcmVnZXguCiAqCiAqIEBpbnRlcm5hbAogKgogKiBAYXV0aG9yIEdlcnQgZGUgUGFndGVyIDxCYWNrRW5kVGVhQGdtYWlsLmNvbT4KICovCmZpbmFsIGNsYXNzIEN0eXBlCnsKICAgIC8qKgogICAgICogUmV0dXJucyBUUlVFIGlmIGV2ZXJ5IGNoYXJhY3RlciBpbiB0ZXh0IGlzIGVpdGhlciBhIGxldHRlciBvciBhIGRpZ2l0LCBGQUxTRSBvdGhlcndpc2UuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3BocC5uZXQvY3R5cGUtYWxudW0KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHRleHQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjdHlwZV9hbG51bSgkdGV4dCkKICAgIHsKICAgICAgICAkdGV4dCA9IHNlbGY6OmNvbnZlcnRfaW50X3RvX2NoYXJfZm9yX2N0eXBlKCR0ZXh0LCBfX0ZVTkNUSU9OX18pOwoKICAgICAgICByZXR1cm4gXGlzX3N0cmluZygkdGV4dCkgJiYgJycgIT09ICR0ZXh0ICYmICFwcmVnX21hdGNoKCcvW15BLVphLXowLTldLycsICR0ZXh0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgVFJVRSBpZiBldmVyeSBjaGFyYWN0ZXIgaW4gdGV4dCBpcyBhIGxldHRlciwgRkFMU0Ugb3RoZXJ3aXNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9waHAubmV0L2N0eXBlLWFscGhhCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR0ZXh0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3R5cGVfYWxwaGEoJHRleHQpCiAgICB7CiAgICAgICAgJHRleHQgPSBzZWxmOjpjb252ZXJ0X2ludF90b19jaGFyX2Zvcl9jdHlwZSgkdGV4dCwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJHRleHQpICYmICcnICE9PSAkdGV4dCAmJiAhcHJlZ19tYXRjaCgnL1teQS1aYS16XS8nLCAkdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIFRSVUUgaWYgZXZlcnkgY2hhcmFjdGVyIGluIHRleHQgaXMgYSBjb250cm9sIGNoYXJhY3RlciBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSwgRkFMU0Ugb3RoZXJ3aXNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9waHAubmV0L2N0eXBlLWNudHJsCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR0ZXh0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3R5cGVfY250cmwoJHRleHQpCiAgICB7CiAgICAgICAgJHRleHQgPSBzZWxmOjpjb252ZXJ0X2ludF90b19jaGFyX2Zvcl9jdHlwZSgkdGV4dCwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJHRleHQpICYmICcnICE9PSAkdGV4dCAmJiAhcHJlZ19tYXRjaCgnL1teXHgwMC1ceDFmXHg3Zl0vJywgJHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBUUlVFIGlmIGV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIHRleHQgaXMgYSBkZWNpbWFsIGRpZ2l0LCBGQUxTRSBvdGhlcndpc2UuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3BocC5uZXQvY3R5cGUtZGlnaXQKICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHRleHQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjdHlwZV9kaWdpdCgkdGV4dCkKICAgIHsKICAgICAgICAkdGV4dCA9IHNlbGY6OmNvbnZlcnRfaW50X3RvX2NoYXJfZm9yX2N0eXBlKCR0ZXh0LCBfX0ZVTkNUSU9OX18pOwoKICAgICAgICByZXR1cm4gXGlzX3N0cmluZygkdGV4dCkgJiYgJycgIT09ICR0ZXh0ICYmICFwcmVnX21hdGNoKCcvW14wLTldLycsICR0ZXh0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgVFJVRSBpZiBldmVyeSBjaGFyYWN0ZXIgaW4gdGV4dCBpcyBwcmludGFibGUgYW5kIGFjdHVhbGx5IGNyZWF0ZXMgdmlzaWJsZSBvdXRwdXQgKG5vIHdoaXRlIHNwYWNlKSwgRkFMU0Ugb3RoZXJ3aXNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9waHAubmV0L2N0eXBlLWdyYXBoCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR0ZXh0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3R5cGVfZ3JhcGgoJHRleHQpCiAgICB7CiAgICAgICAgJHRleHQgPSBzZWxmOjpjb252ZXJ0X2ludF90b19jaGFyX2Zvcl9jdHlwZSgkdGV4dCwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJHRleHQpICYmICcnICE9PSAkdGV4dCAmJiAhcHJlZ19tYXRjaCgnL1teIS1+XS8nLCAkdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIFRSVUUgaWYgZXZlcnkgY2hhcmFjdGVyIGluIHRleHQgaXMgYSBsb3dlcmNhc2UgbGV0dGVyLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9waHAubmV0L2N0eXBlLWxvd2VyCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR0ZXh0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3R5cGVfbG93ZXIoJHRleHQpCiAgICB7CiAgICAgICAgJHRleHQgPSBzZWxmOjpjb252ZXJ0X2ludF90b19jaGFyX2Zvcl9jdHlwZSgkdGV4dCwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJHRleHQpICYmICcnICE9PSAkdGV4dCAmJiAhcHJlZ19tYXRjaCgnL1teYS16XS8nLCAkdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIFRSVUUgaWYgZXZlcnkgY2hhcmFjdGVyIGluIHRleHQgd2lsbCBhY3R1YWxseSBjcmVhdGUgb3V0cHV0IChpbmNsdWRpbmcgYmxhbmtzKS4gUmV0dXJucyBGQUxTRSBpZiB0ZXh0IGNvbnRhaW5zIGNvbnRyb2wgY2hhcmFjdGVycyBvciBjaGFyYWN0ZXJzIHRoYXQgZG8gbm90IGhhdmUgYW55IG91dHB1dCBvciBjb250cm9sIGZ1bmN0aW9uIGF0IGFsbC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcGhwLm5ldC9jdHlwZS1wcmludAogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdGV4dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGN0eXBlX3ByaW50KCR0ZXh0KQogICAgewogICAgICAgICR0ZXh0ID0gc2VsZjo6Y29udmVydF9pbnRfdG9fY2hhcl9mb3JfY3R5cGUoJHRleHQsIF9fRlVOQ1RJT05fXyk7CgogICAgICAgIHJldHVybiBcaXNfc3RyaW5nKCR0ZXh0KSAmJiAnJyAhPT0gJHRleHQgJiYgIXByZWdfbWF0Y2goJy9bXiAtfl0vJywgJHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBUUlVFIGlmIGV2ZXJ5IGNoYXJhY3RlciBpbiB0ZXh0IGlzIHByaW50YWJsZSwgYnV0IG5laXRoZXIgbGV0dGVyLCBkaWdpdCBvciBibGFuaywgRkFMU0Ugb3RoZXJ3aXNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9waHAubmV0L2N0eXBlLXB1bmN0CiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR0ZXh0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3R5cGVfcHVuY3QoJHRleHQpCiAgICB7CiAgICAgICAgJHRleHQgPSBzZWxmOjpjb252ZXJ0X2ludF90b19jaGFyX2Zvcl9jdHlwZSgkdGV4dCwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJHRleHQpICYmICcnICE9PSAkdGV4dCAmJiAhcHJlZ19tYXRjaCgnL1teIS1cL1w6LUBcWy1gXHstfl0vJywgJHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBUUlVFIGlmIGV2ZXJ5IGNoYXJhY3RlciBpbiB0ZXh0IGNyZWF0ZXMgc29tZSBzb3J0IG9mIHdoaXRlIHNwYWNlLCBGQUxTRSBvdGhlcndpc2UuIEJlc2lkZXMgdGhlIGJsYW5rIGNoYXJhY3RlciB0aGlzIGFsc28gaW5jbHVkZXMgdGFiLCB2ZXJ0aWNhbCB0YWIsIGxpbmUgZmVlZCwgY2FycmlhZ2UgcmV0dXJuIGFuZCBmb3JtIGZlZWQgY2hhcmFjdGVycy4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcGhwLm5ldC9jdHlwZS1zcGFjZQogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdGV4dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGN0eXBlX3NwYWNlKCR0ZXh0KQogICAgewogICAgICAgICR0ZXh0ID0gc2VsZjo6Y29udmVydF9pbnRfdG9fY2hhcl9mb3JfY3R5cGUoJHRleHQsIF9fRlVOQ1RJT05fXyk7CgogICAgICAgIHJldHVybiBcaXNfc3RyaW5nKCR0ZXh0KSAmJiAnJyAhPT0gJHRleHQgJiYgIXByZWdfbWF0Y2goJy9bXlxzXS8nLCAkdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIFRSVUUgaWYgZXZlcnkgY2hhcmFjdGVyIGluIHRleHQgaXMgYW4gdXBwZXJjYXNlIGxldHRlci4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcGhwLm5ldC9jdHlwZS11cHBlcgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdGV4dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGN0eXBlX3VwcGVyKCR0ZXh0KQogICAgewogICAgICAgICR0ZXh0ID0gc2VsZjo6Y29udmVydF9pbnRfdG9fY2hhcl9mb3JfY3R5cGUoJHRleHQsIF9fRlVOQ1RJT05fXyk7CgogICAgICAgIHJldHVybiBcaXNfc3RyaW5nKCR0ZXh0KSAmJiAnJyAhPT0gJHRleHQgJiYgIXByZWdfbWF0Y2goJy9bXkEtWl0vJywgJHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBUUlVFIGlmIGV2ZXJ5IGNoYXJhY3RlciBpbiB0ZXh0IGlzIGEgaGV4YWRlY2ltYWwgJ2RpZ2l0JywgdGhhdCBpcyBhIGRlY2ltYWwgZGlnaXQgb3IgYSBjaGFyYWN0ZXIgZnJvbSBbQS1GYS1mXSAsIEZBTFNFIG90aGVyd2lzZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcGhwLm5ldC9jdHlwZS14ZGlnaXQKICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHRleHQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjdHlwZV94ZGlnaXQoJHRleHQpCiAgICB7CiAgICAgICAgJHRleHQgPSBzZWxmOjpjb252ZXJ0X2ludF90b19jaGFyX2Zvcl9jdHlwZSgkdGV4dCwgX19GVU5DVElPTl9fKTsKCiAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJHRleHQpICYmICcnICE9PSAkdGV4dCAmJiAhcHJlZ19tYXRjaCgnL1teQS1GYS1mMC05XS8nLCAkdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBpbnRlZ2VycyB0byB0aGVpciBjaGFyIHZlcnNpb25zIGFjY29yZGluZyB0byBub3JtYWwgY3R5cGUgYmVoYXZpb3VyLCBpZiBuZWVkZWQuCiAgICAgKgogICAgICogSWYgYW4gaW50ZWdlciBiZXR3ZWVuIC0xMjggYW5kIDI1NSBpbmNsdXNpdmUgaXMgcHJvdmlkZWQsCiAgICAgKiBpdCBpcyBpbnRlcnByZXRlZCBhcyB0aGUgQVNDSUkgdmFsdWUgb2YgYSBzaW5nbGUgY2hhcmFjdGVyCiAgICAgKiAobmVnYXRpdmUgdmFsdWVzIGhhdmUgMjU2IGFkZGVkIGluIG9yZGVyIHRvIGFsbG93IGNoYXJhY3RlcnMgaW4gdGhlIEV4dGVuZGVkIEFTQ0lJIHJhbmdlKS4KICAgICAqIEFueSBvdGhlciBpbnRlZ2VyIGlzIGludGVycHJldGVkIGFzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGRlY2ltYWwgZGlnaXRzIG9mIHRoZSBpbnRlZ2VyLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgJGludAogICAgICogQHBhcmFtIHN0cmluZyAkZnVuY3Rpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnRfaW50X3RvX2NoYXJfZm9yX2N0eXBlKCRpbnQsICRmdW5jdGlvbikKICAgIHsKICAgICAgICBpZiAoXFBIUF9WRVJTSU9OX0lEID49IDgwMTAwICYmICFcaXNfc3RyaW5nKCRpbnQpKSB7CiAgICAgICAgICAgIEB0cmlnZ2VyX2Vycm9yKCRmdW5jdGlvbi4nKCk6IEFyZ3VtZW50IG9mIHR5cGUgJy5nZXRfZGVidWdfdHlwZSgkaW50KS4nIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgc3RyaW5nIGluIHRoZSBmdXR1cmUnLCBcRV9VU0VSX0RFUFJFQ0FURUQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfaW50KCRpbnQpKSB7CiAgICAgICAgICAgIHJldHVybiAkaW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpbnQgPCAtMTI4IHx8ICRpbnQgPiAyNTUpIHsKICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpICRpbnQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGludCA8IDApIHsKICAgICAgICAgICAgJGludCArPSAyNTY7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXGNocigkaW50KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-ctype/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE4LXByZXNlbnQgRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-ctype/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ltZm9ueSBQb2x5ZmlsbCAvIEN0eXBlCj09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYGN0eXBlXypgIGZ1bmN0aW9ucyB0byB1c2VycyB3aG8gcnVuIHBocCB2ZXJzaW9ucyB3aXRob3V0IHRoZSBjdHlwZSBleHRlbnNpb24uCgpNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUKW21haW4gUG9seWZpbGwgUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC9ibG9iL21haW4vUkVBRE1FLm1kKS4KCkxpY2Vuc2UKPT09PT09PQoKVGhpcyBsaWJyYXJ5IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UpLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/bootstrap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmlmIChcUEhQX1ZFUlNJT05fSUQgPj0gODAwMDApIHsKICAgIHJldHVybiByZXF1aXJlIF9fRElSX18uJy9ib290c3RyYXA4MC5waHAnOwp9CgpyZXR1cm4gcmVxdWlyZSBfX0RJUl9fLicvYm9vdHN0cmFwNzIucGhwJzsK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/bootstrap72.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCnVzZSBTeW1mb255XFBvbHlmaWxsXE1ic3RyaW5nIGFzIHA7CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfY29udmVydF9lbmNvZGluZycpKSB7CiAgICBmdW5jdGlvbiBtYl9jb252ZXJ0X2VuY29kaW5nKCRzdHJpbmcsICR0b19lbmNvZGluZywgJGZyb21fZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9jb252ZXJ0X2VuY29kaW5nKCRzdHJpbmcsICR0b19lbmNvZGluZywgJGZyb21fZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2RlY29kZV9taW1laGVhZGVyJykpIHsKICAgIGZ1bmN0aW9uIG1iX2RlY29kZV9taW1laGVhZGVyKCRzdHJpbmcpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2RlY29kZV9taW1laGVhZGVyKCRzdHJpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2VuY29kZV9taW1laGVhZGVyJykpIHsKICAgIGZ1bmN0aW9uIG1iX2VuY29kZV9taW1laGVhZGVyKCRzdHJpbmcsICRjaGFyc2V0ID0gbnVsbCwgJHRyYW5zZmVyX2VuY29kaW5nID0gbnVsbCwgJG5ld2xpbmUgPSAiXHJcbiIsICRpbmRlbnQgPSAwKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9lbmNvZGVfbWltZWhlYWRlcigkc3RyaW5nLCAkY2hhcnNldCwgJHRyYW5zZmVyX2VuY29kaW5nLCAkbmV3bGluZSwgJGluZGVudCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfZGVjb2RlX251bWVyaWNlbnRpdHknKSkgewogICAgZnVuY3Rpb24gbWJfZGVjb2RlX251bWVyaWNlbnRpdHkoJHN0cmluZywgJG1hcCwgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZGVjb2RlX251bWVyaWNlbnRpdHkoJHN0cmluZywgJG1hcCwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9lbmNvZGVfbnVtZXJpY2VudGl0eScpKSB7CiAgICBmdW5jdGlvbiBtYl9lbmNvZGVfbnVtZXJpY2VudGl0eSgkc3RyaW5nLCAkbWFwLCAkZW5jb2RpbmcgPSBudWxsLCAkaGV4ID0gZmFsc2UpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2VuY29kZV9udW1lcmljZW50aXR5KCRzdHJpbmcsICRtYXAsICRlbmNvZGluZywgJGhleCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfY29udmVydF9jYXNlJykpIHsKICAgIGZ1bmN0aW9uIG1iX2NvbnZlcnRfY2FzZSgkc3RyaW5nLCAkbW9kZSwgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY29udmVydF9jYXNlKCRzdHJpbmcsICRtb2RlLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2ludGVybmFsX2VuY29kaW5nJykpIHsKICAgIGZ1bmN0aW9uIG1iX2ludGVybmFsX2VuY29kaW5nKCRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2ludGVybmFsX2VuY29kaW5nKCRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfbGFuZ3VhZ2UnKSkgewogICAgZnVuY3Rpb24gbWJfbGFuZ3VhZ2UoJGxhbmd1YWdlID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfbGFuZ3VhZ2UoJGxhbmd1YWdlKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9saXN0X2VuY29kaW5ncycpKSB7CiAgICBmdW5jdGlvbiBtYl9saXN0X2VuY29kaW5ncygpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2xpc3RfZW5jb2RpbmdzKCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfZW5jb2RpbmdfYWxpYXNlcycpKSB7CiAgICBmdW5jdGlvbiBtYl9lbmNvZGluZ19hbGlhc2VzKCRlbmNvZGluZykgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZW5jb2RpbmdfYWxpYXNlcygkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2NoZWNrX2VuY29kaW5nJykpIHsKICAgIGZ1bmN0aW9uIG1iX2NoZWNrX2VuY29kaW5nKCR2YWx1ZSA9IG51bGwsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2NoZWNrX2VuY29kaW5nKCR2YWx1ZSwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9kZXRlY3RfZW5jb2RpbmcnKSkgewogICAgZnVuY3Rpb24gbWJfZGV0ZWN0X2VuY29kaW5nKCRzdHJpbmcsICRlbmNvZGluZ3MgPSBudWxsLCAkc3RyaWN0ID0gZmFsc2UpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2RldGVjdF9lbmNvZGluZygkc3RyaW5nLCAkZW5jb2RpbmdzLCAkc3RyaWN0KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9kZXRlY3Rfb3JkZXInKSkgewogICAgZnVuY3Rpb24gbWJfZGV0ZWN0X29yZGVyKCRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2RldGVjdF9vcmRlcigkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3BhcnNlX3N0cicpKSB7CiAgICBmdW5jdGlvbiBtYl9wYXJzZV9zdHIoJHN0cmluZywgJiRyZXN1bHQgPSBbXSkgeyBwYXJzZV9zdHIoJHN0cmluZywgJHJlc3VsdCk7IHJldHVybiAoYm9vbCkgJHJlc3VsdDsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJsZW4nKSkgewogICAgZnVuY3Rpb24gbWJfc3RybGVuKCRzdHJpbmcsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cmxlbigkc3RyaW5nLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnBvcycpKSB7CiAgICBmdW5jdGlvbiBtYl9zdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJ0b2xvd2VyJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cnRvbG93ZXIoJHN0cmluZywgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RydG9sb3dlcigkc3RyaW5nLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnRvdXBwZXInKSkgewogICAgZnVuY3Rpb24gbWJfc3RydG91cHBlcigkc3RyaW5nLCAkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJ0b3VwcGVyKCRzdHJpbmcsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3Vic3RpdHV0ZV9jaGFyYWN0ZXInKSkgewogICAgZnVuY3Rpb24gbWJfc3Vic3RpdHV0ZV9jaGFyYWN0ZXIoJHN1YnN0aXR1dGVfY2hhcmFjdGVyID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Vic3RpdHV0ZV9jaGFyYWN0ZXIoJHN1YnN0aXR1dGVfY2hhcmFjdGVyKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdWJzdHInKSkgewogICAgZnVuY3Rpb24gbWJfc3Vic3RyKCRzdHJpbmcsICRzdGFydCwgJGxlbmd0aCA9IDIxNDc0ODM2NDcsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N1YnN0cigkc3RyaW5nLCAkc3RhcnQsICRsZW5ndGgsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RyaXBvcycpKSB7CiAgICBmdW5jdGlvbiBtYl9zdHJpcG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCA9IDAsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0LCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cmlzdHInKSkgewogICAgZnVuY3Rpb24gbWJfc3RyaXN0cigkaGF5c3RhY2ssICRuZWVkbGUsICRiZWZvcmVfbmVlZGxlID0gZmFsc2UsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cmlzdHIoJGhheXN0YWNrLCAkbmVlZGxlLCAkYmVmb3JlX25lZWRsZSwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJyY2hyJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cnJjaHIoJGhheXN0YWNrLCAkbmVlZGxlLCAkYmVmb3JlX25lZWRsZSA9IGZhbHNlLCAkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJyY2hyKCRoYXlzdGFjaywgJG5lZWRsZSwgJGJlZm9yZV9uZWVkbGUsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RycmljaHInKSkgewogICAgZnVuY3Rpb24gbWJfc3RycmljaHIoJGhheXN0YWNrLCAkbmVlZGxlLCAkYmVmb3JlX25lZWRsZSA9IGZhbHNlLCAkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJyaWNocigkaGF5c3RhY2ssICRuZWVkbGUsICRiZWZvcmVfbmVlZGxlLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnJpcG9zJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cnJpcG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCA9IDAsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnJpcG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJycG9zJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cnJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RycnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3Ryc3RyJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cnN0cigkaGF5c3RhY2ssICRuZWVkbGUsICRiZWZvcmVfbmVlZGxlID0gZmFsc2UsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnN0cigkaGF5c3RhY2ssICRuZWVkbGUsICRiZWZvcmVfbmVlZGxlLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2dldF9pbmZvJykpIHsKICAgIGZ1bmN0aW9uIG1iX2dldF9pbmZvKCR0eXBlID0gJ2FsbCcpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2dldF9pbmZvKCR0eXBlKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9odHRwX291dHB1dCcpKSB7CiAgICBmdW5jdGlvbiBtYl9odHRwX291dHB1dCgkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9odHRwX291dHB1dCgkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cndpZHRoJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cndpZHRoKCRzdHJpbmcsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cndpZHRoKCRzdHJpbmcsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3Vic3RyX2NvdW50JykpIHsKICAgIGZ1bmN0aW9uIG1iX3N1YnN0cl9jb3VudCgkaGF5c3RhY2ssICRuZWVkbGUsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N1YnN0cl9jb3VudCgkaGF5c3RhY2ssICRuZWVkbGUsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfb3V0cHV0X2hhbmRsZXInKSkgewogICAgZnVuY3Rpb24gbWJfb3V0cHV0X2hhbmRsZXIoJHN0cmluZywgJHN0YXR1cykgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfb3V0cHV0X2hhbmRsZXIoJHN0cmluZywgJHN0YXR1cyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfaHR0cF9pbnB1dCcpKSB7CiAgICBmdW5jdGlvbiBtYl9odHRwX2lucHV0KCR0eXBlID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfaHR0cF9pbnB1dCgkdHlwZSk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2NvbnZlcnRfdmFyaWFibGVzJykpIHsKICAgIGZ1bmN0aW9uIG1iX2NvbnZlcnRfdmFyaWFibGVzKCR0b19lbmNvZGluZywgJGZyb21fZW5jb2RpbmcsICYuLi4kdmFycykgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY29udmVydF92YXJpYWJsZXMoJHRvX2VuY29kaW5nLCAkZnJvbV9lbmNvZGluZywgLi4uJHZhcnMpOyB9Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9vcmQnKSkgewogICAgZnVuY3Rpb24gbWJfb3JkKCRzdHJpbmcsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX29yZCgkc3RyaW5nLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2NocicpKSB7CiAgICBmdW5jdGlvbiBtYl9jaHIoJGNvZGVwb2ludCwgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY2hyKCRjb2RlcG9pbnQsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc2NydWInKSkgewogICAgZnVuY3Rpb24gbWJfc2NydWIoJHN0cmluZywgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc2NydWIoJHN0cmluZywgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJfc3BsaXQnKSkgewogICAgZnVuY3Rpb24gbWJfc3RyX3NwbGl0KCRzdHJpbmcsICRsZW5ndGggPSAxLCAkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJfc3BsaXQoJHN0cmluZywgJGxlbmd0aCwgJGVuY29kaW5nKTsgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RyX3BhZCcpKSB7CiAgICAvKiogQHJldHVybiBzdHJpbmd8ZmFsc2UgKi8KICAgIGZ1bmN0aW9uIG1iX3N0cl9wYWQoP3N0cmluZyAkc3RyaW5nLCA/aW50ICRsZW5ndGgsID9zdHJpbmcgJHBhZF9zdHJpbmcgPSAnICcsID9pbnQgJHBhZF90eXBlID0gU1RSX1BBRF9SSUdIVCwgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJfcGFkKChzdHJpbmcpICRzdHJpbmcsIChpbnQpICRsZW5ndGgsIChzdHJpbmcpICRwYWRfc3RyaW5nLCAoaW50KSAkcGFkX3R5cGUsICRlbmNvZGluZyk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3VjZmlyc3QnKSkgewogICAgLyoqIEByZXR1cm4gc3RyaW5nfGZhbHNlICovCiAgICBmdW5jdGlvbiBtYl91Y2ZpcnN0KD9zdHJpbmcgJHN0cmluZywgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl91Y2ZpcnN0KChzdHJpbmcpICRzdHJpbmcsICRlbmNvZGluZyk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2xjZmlyc3QnKSkgewogICAgLyoqIEByZXR1cm4gc3RyaW5nfGZhbHNlICovCiAgICBmdW5jdGlvbiBtYl9sY2ZpcnN0KD9zdHJpbmcgJHN0cmluZywgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9sY2ZpcnN0KChzdHJpbmcpICRzdHJpbmcsICRlbmNvZGluZyk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3RyaW0nKSkgewogICAgLyoqIEByZXR1cm4gc3RyaW5nfGZhbHNlICovCiAgICBmdW5jdGlvbiBtYl90cmltKD9zdHJpbmcgJHN0cmluZywgP3N0cmluZyAkY2hhcmFjdGVycyA9IG51bGwsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfdHJpbSgoc3RyaW5nKSAkc3RyaW5nLCAkY2hhcmFjdGVycywgJGVuY29kaW5nKTsgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfbHRyaW0nKSkgewogICAgLyoqIEByZXR1cm4gc3RyaW5nfGZhbHNlICovCiAgICBmdW5jdGlvbiBtYl9sdHJpbSg/c3RyaW5nICRzdHJpbmcsID9zdHJpbmcgJGNoYXJhY3RlcnMgPSBudWxsLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2x0cmltKChzdHJpbmcpICRzdHJpbmcsICRjaGFyYWN0ZXJzLCAkZW5jb2RpbmcpOyB9Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9ydHJpbScpKSB7CiAgICAvKiogQHJldHVybiBzdHJpbmd8ZmFsc2UgKi8KICAgIGZ1bmN0aW9uIG1iX3J0cmltKD9zdHJpbmcgJHN0cmluZywgP3N0cmluZyAkY2hhcmFjdGVycyA9IG51bGwsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfcnRyaW0oKHN0cmluZykgJHN0cmluZywgJGNoYXJhY3RlcnMsICRlbmNvZGluZyk7IH0KfQoKaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ21ic3RyaW5nJykpIHsKICAgIHJldHVybjsKfQoKaWYgKCFkZWZpbmVkKCdNQl9DQVNFX1VQUEVSJykpIHsKICAgIGRlZmluZSgnTUJfQ0FTRV9VUFBFUicsIDApOwp9CmlmICghZGVmaW5lZCgnTUJfQ0FTRV9MT1dFUicpKSB7CiAgICBkZWZpbmUoJ01CX0NBU0VfTE9XRVInLCAxKTsKfQppZiAoIWRlZmluZWQoJ01CX0NBU0VfVElUTEUnKSkgewogICAgZGVmaW5lKCdNQl9DQVNFX1RJVExFJywgMik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/bootstrap80.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCnVzZSBTeW1mb255XFBvbHlmaWxsXE1ic3RyaW5nIGFzIHA7CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfY29udmVydF9lbmNvZGluZycpKSB7CiAgICBmdW5jdGlvbiBtYl9jb252ZXJ0X2VuY29kaW5nKGFycmF5fHN0cmluZ3xudWxsICRzdHJpbmcsID9zdHJpbmcgJHRvX2VuY29kaW5nLCBhcnJheXxzdHJpbmd8bnVsbCAkZnJvbV9lbmNvZGluZyA9IG51bGwpOiBhcnJheXxzdHJpbmd8ZmFsc2UgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY29udmVydF9lbmNvZGluZygkc3RyaW5nID8/ICcnLCAoc3RyaW5nKSAkdG9fZW5jb2RpbmcsICRmcm9tX2VuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9kZWNvZGVfbWltZWhlYWRlcicpKSB7CiAgICBmdW5jdGlvbiBtYl9kZWNvZGVfbWltZWhlYWRlcig/c3RyaW5nICRzdHJpbmcpOiBzdHJpbmcgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZGVjb2RlX21pbWVoZWFkZXIoKHN0cmluZykgJHN0cmluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfZW5jb2RlX21pbWVoZWFkZXInKSkgewogICAgZnVuY3Rpb24gbWJfZW5jb2RlX21pbWVoZWFkZXIoP3N0cmluZyAkc3RyaW5nLCA/c3RyaW5nICRjaGFyc2V0ID0gbnVsbCwgP3N0cmluZyAkdHJhbnNmZXJfZW5jb2RpbmcgPSBudWxsLCA/c3RyaW5nICRuZXdsaW5lID0gIlxyXG4iLCA/aW50ICRpbmRlbnQgPSAwKTogc3RyaW5nIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2VuY29kZV9taW1laGVhZGVyKChzdHJpbmcpICRzdHJpbmcsICRjaGFyc2V0LCAkdHJhbnNmZXJfZW5jb2RpbmcsIChzdHJpbmcpICRuZXdsaW5lLCAoaW50KSAkaW5kZW50KTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9kZWNvZGVfbnVtZXJpY2VudGl0eScpKSB7CiAgICBmdW5jdGlvbiBtYl9kZWNvZGVfbnVtZXJpY2VudGl0eSg/c3RyaW5nICRzdHJpbmcsIGFycmF5ICRtYXAsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IHN0cmluZyB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9kZWNvZGVfbnVtZXJpY2VudGl0eSgoc3RyaW5nKSAkc3RyaW5nLCAkbWFwLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2VuY29kZV9udW1lcmljZW50aXR5JykpIHsKICAgIGZ1bmN0aW9uIG1iX2VuY29kZV9udW1lcmljZW50aXR5KD9zdHJpbmcgJHN0cmluZywgYXJyYXkgJG1hcCwgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsLCA/Ym9vbCAkaGV4ID0gZmFsc2UpOiBzdHJpbmcgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZW5jb2RlX251bWVyaWNlbnRpdHkoKHN0cmluZykgJHN0cmluZywgJG1hcCwgJGVuY29kaW5nLCAoYm9vbCkgJGhleCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfY29udmVydF9jYXNlJykpIHsKICAgIGZ1bmN0aW9uIG1iX2NvbnZlcnRfY2FzZSg/c3RyaW5nICRzdHJpbmcsID9pbnQgJG1vZGUsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IHN0cmluZyB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9jb252ZXJ0X2Nhc2UoKHN0cmluZykgJHN0cmluZywgKGludCkgJG1vZGUsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfaW50ZXJuYWxfZW5jb2RpbmcnKSkgewogICAgZnVuY3Rpb24gbWJfaW50ZXJuYWxfZW5jb2RpbmcoP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogc3RyaW5nfGJvb2wgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfaW50ZXJuYWxfZW5jb2RpbmcoJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9sYW5ndWFnZScpKSB7CiAgICBmdW5jdGlvbiBtYl9sYW5ndWFnZSg/c3RyaW5nICRsYW5ndWFnZSA9IG51bGwpOiBzdHJpbmd8Ym9vbCB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9sYW5ndWFnZSgkbGFuZ3VhZ2UpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2xpc3RfZW5jb2RpbmdzJykpIHsKICAgIGZ1bmN0aW9uIG1iX2xpc3RfZW5jb2RpbmdzKCk6IGFycmF5IHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2xpc3RfZW5jb2RpbmdzKCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfZW5jb2RpbmdfYWxpYXNlcycpKSB7CiAgICBmdW5jdGlvbiBtYl9lbmNvZGluZ19hbGlhc2VzKD9zdHJpbmcgJGVuY29kaW5nKTogYXJyYXkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZW5jb2RpbmdfYWxpYXNlcygoc3RyaW5nKSAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2NoZWNrX2VuY29kaW5nJykpIHsKICAgIGZ1bmN0aW9uIG1iX2NoZWNrX2VuY29kaW5nKGFycmF5fHN0cmluZ3xudWxsICR2YWx1ZSA9IG51bGwsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IGJvb2wgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY2hlY2tfZW5jb2RpbmcoJHZhbHVlLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2RldGVjdF9lbmNvZGluZycpKSB7CiAgICBmdW5jdGlvbiBtYl9kZXRlY3RfZW5jb2RpbmcoP3N0cmluZyAkc3RyaW5nLCBhcnJheXxzdHJpbmd8bnVsbCAkZW5jb2RpbmdzID0gbnVsbCwgP2Jvb2wgJHN0cmljdCA9IGZhbHNlKTogc3RyaW5nfGZhbHNlIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2RldGVjdF9lbmNvZGluZygoc3RyaW5nKSAkc3RyaW5nLCAkZW5jb2RpbmdzLCAoYm9vbCkgJHN0cmljdCk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfZGV0ZWN0X29yZGVyJykpIHsKICAgIGZ1bmN0aW9uIG1iX2RldGVjdF9vcmRlcihhcnJheXxzdHJpbmd8bnVsbCAkZW5jb2RpbmcgPSBudWxsKTogYXJyYXl8Ym9vbCB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9kZXRlY3Rfb3JkZXIoJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9wYXJzZV9zdHInKSkgewogICAgZnVuY3Rpb24gbWJfcGFyc2Vfc3RyKD9zdHJpbmcgJHN0cmluZywgJiRyZXN1bHQgPSBbXSk6IGJvb2wgeyBwYXJzZV9zdHIoKHN0cmluZykgJHN0cmluZywgJHJlc3VsdCk7IHJldHVybiAoYm9vbCkgJHJlc3VsdDsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJsZW4nKSkgewogICAgZnVuY3Rpb24gbWJfc3RybGVuKD9zdHJpbmcgJHN0cmluZywgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogaW50IHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cmxlbigoc3RyaW5nKSAkc3RyaW5nLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnBvcycpKSB7CiAgICBmdW5jdGlvbiBtYl9zdHJwb3MoP3N0cmluZyAkaGF5c3RhY2ssID9zdHJpbmcgJG5lZWRsZSwgP2ludCAkb2Zmc2V0ID0gMCwgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogaW50fGZhbHNlIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnBvcygoc3RyaW5nKSAkaGF5c3RhY2ssIChzdHJpbmcpICRuZWVkbGUsIChpbnQpICRvZmZzZXQsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RydG9sb3dlcicpKSB7CiAgICBmdW5jdGlvbiBtYl9zdHJ0b2xvd2VyKD9zdHJpbmcgJHN0cmluZywgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogc3RyaW5nIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnRvbG93ZXIoKHN0cmluZykgJHN0cmluZywgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJ0b3VwcGVyJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cnRvdXBwZXIoP3N0cmluZyAkc3RyaW5nLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBzdHJpbmcgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RydG91cHBlcigoc3RyaW5nKSAkc3RyaW5nLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N1YnN0aXR1dGVfY2hhcmFjdGVyJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N1YnN0aXR1dGVfY2hhcmFjdGVyKHN0cmluZ3xpbnR8bnVsbCAkc3Vic3RpdHV0ZV9jaGFyYWN0ZXIgPSBudWxsKTogc3RyaW5nfGludHxib29sIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N1YnN0aXR1dGVfY2hhcmFjdGVyKCRzdWJzdGl0dXRlX2NoYXJhY3Rlcik7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3Vic3RyJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N1YnN0cig/c3RyaW5nICRzdHJpbmcsID9pbnQgJHN0YXJ0LCA/aW50ICRsZW5ndGggPSBudWxsLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBzdHJpbmcgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Vic3RyKChzdHJpbmcpICRzdHJpbmcsIChpbnQpICRzdGFydCwgJGxlbmd0aCwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJpcG9zJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cmlwb3MoP3N0cmluZyAkaGF5c3RhY2ssID9zdHJpbmcgJG5lZWRsZSwgP2ludCAkb2Zmc2V0ID0gMCwgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogaW50fGZhbHNlIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cmlwb3MoKHN0cmluZykgJGhheXN0YWNrLCAoc3RyaW5nKSAkbmVlZGxlLCAoaW50KSAkb2Zmc2V0LCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cmlzdHInKSkgewogICAgZnVuY3Rpb24gbWJfc3RyaXN0cig/c3RyaW5nICRoYXlzdGFjaywgP3N0cmluZyAkbmVlZGxlLCA/Ym9vbCAkYmVmb3JlX25lZWRsZSA9IGZhbHNlLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBzdHJpbmd8ZmFsc2UgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RyaXN0cigoc3RyaW5nKSAkaGF5c3RhY2ssIChzdHJpbmcpICRuZWVkbGUsIChib29sKSAkYmVmb3JlX25lZWRsZSwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJyY2hyJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cnJjaHIoP3N0cmluZyAkaGF5c3RhY2ssID9zdHJpbmcgJG5lZWRsZSwgP2Jvb2wgJGJlZm9yZV9uZWVkbGUgPSBmYWxzZSwgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogc3RyaW5nfGZhbHNlIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnJjaHIoKHN0cmluZykgJGhheXN0YWNrLCAoc3RyaW5nKSAkbmVlZGxlLCAoYm9vbCkgJGJlZm9yZV9uZWVkbGUsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RycmljaHInKSkgewogICAgZnVuY3Rpb24gbWJfc3RycmljaHIoP3N0cmluZyAkaGF5c3RhY2ssID9zdHJpbmcgJG5lZWRsZSwgP2Jvb2wgJGJlZm9yZV9uZWVkbGUgPSBmYWxzZSwgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogc3RyaW5nfGZhbHNlIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnJpY2hyKChzdHJpbmcpICRoYXlzdGFjaywgKHN0cmluZykgJG5lZWRsZSwgKGJvb2wpICRiZWZvcmVfbmVlZGxlLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnJpcG9zJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cnJpcG9zKD9zdHJpbmcgJGhheXN0YWNrLCA/c3RyaW5nICRuZWVkbGUsID9pbnQgJG9mZnNldCA9IDAsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IGludHxmYWxzZSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJyaXBvcygoc3RyaW5nKSAkaGF5c3RhY2ssIChzdHJpbmcpICRuZWVkbGUsIChpbnQpICRvZmZzZXQsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RycnBvcycpKSB7CiAgICBmdW5jdGlvbiBtYl9zdHJycG9zKD9zdHJpbmcgJGhheXN0YWNrLCA/c3RyaW5nICRuZWVkbGUsID9pbnQgJG9mZnNldCA9IDAsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IGludHxmYWxzZSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJycG9zKChzdHJpbmcpICRoYXlzdGFjaywgKHN0cmluZykgJG5lZWRsZSwgKGludCkgJG9mZnNldCwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJzdHInKSkgewogICAgZnVuY3Rpb24gbWJfc3Ryc3RyKD9zdHJpbmcgJGhheXN0YWNrLCA/c3RyaW5nICRuZWVkbGUsID9ib29sICRiZWZvcmVfbmVlZGxlID0gZmFsc2UsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IHN0cmluZ3xmYWxzZSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJzdHIoKHN0cmluZykgJGhheXN0YWNrLCAoc3RyaW5nKSAkbmVlZGxlLCAoYm9vbCkgJGJlZm9yZV9uZWVkbGUsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfZ2V0X2luZm8nKSkgewogICAgZnVuY3Rpb24gbWJfZ2V0X2luZm8oP3N0cmluZyAkdHlwZSA9ICdhbGwnKTogYXJyYXl8c3RyaW5nfGludHxmYWxzZXxudWxsIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2dldF9pbmZvKChzdHJpbmcpICR0eXBlKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9odHRwX291dHB1dCcpKSB7CiAgICBmdW5jdGlvbiBtYl9odHRwX291dHB1dCg/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBzdHJpbmd8Ym9vbCB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9odHRwX291dHB1dCgkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cndpZHRoJykpIHsKICAgIGZ1bmN0aW9uIG1iX3N0cndpZHRoKD9zdHJpbmcgJHN0cmluZywgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogaW50IHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cndpZHRoKChzdHJpbmcpICRzdHJpbmcsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3Vic3RyX2NvdW50JykpIHsKICAgIGZ1bmN0aW9uIG1iX3N1YnN0cl9jb3VudCg/c3RyaW5nICRoYXlzdGFjaywgP3N0cmluZyAkbmVlZGxlLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBpbnQgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Vic3RyX2NvdW50KChzdHJpbmcpICRoYXlzdGFjaywgKHN0cmluZykgJG5lZWRsZSwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9vdXRwdXRfaGFuZGxlcicpKSB7CiAgICBmdW5jdGlvbiBtYl9vdXRwdXRfaGFuZGxlcig/c3RyaW5nICRzdHJpbmcsID9pbnQgJHN0YXR1cyk6IHN0cmluZyB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9vdXRwdXRfaGFuZGxlcigoc3RyaW5nKSAkc3RyaW5nLCAoaW50KSAkc3RhdHVzKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9odHRwX2lucHV0JykpIHsKICAgIGZ1bmN0aW9uIG1iX2h0dHBfaW5wdXQoP3N0cmluZyAkdHlwZSA9IG51bGwpOiBhcnJheXxzdHJpbmd8ZmFsc2UgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfaHR0cF9pbnB1dCgkdHlwZSk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2NvbnZlcnRfdmFyaWFibGVzJykpIHsKICAgIGZ1bmN0aW9uIG1iX2NvbnZlcnRfdmFyaWFibGVzKD9zdHJpbmcgJHRvX2VuY29kaW5nLCBhcnJheXxzdHJpbmd8bnVsbCAkZnJvbV9lbmNvZGluZywgbWl4ZWQgJiR2YXIsIG1peGVkICYuLi4kdmFycyk6IHN0cmluZ3xmYWxzZSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9jb252ZXJ0X3ZhcmlhYmxlcygoc3RyaW5nKSAkdG9fZW5jb2RpbmcsICRmcm9tX2VuY29kaW5nID8/ICcnLCAkdmFyLCAuLi4kdmFycyk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX29yZCcpKSB7CiAgICBmdW5jdGlvbiBtYl9vcmQoP3N0cmluZyAkc3RyaW5nLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBpbnR8ZmFsc2UgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfb3JkKChzdHJpbmcpICRzdHJpbmcsICRlbmNvZGluZyk7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfY2hyJykpIHsKICAgIGZ1bmN0aW9uIG1iX2Nocig/aW50ICRjb2RlcG9pbnQsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IHN0cmluZ3xmYWxzZSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9jaHIoKGludCkgJGNvZGVwb2ludCwgJGVuY29kaW5nKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9zY3J1YicpKSB7CiAgICBmdW5jdGlvbiBtYl9zY3J1Yig/c3RyaW5nICRzdHJpbmcsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IHN0cmluZyB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zY3J1Yigkc3RyaW5nLCAkZW5jb2RpbmcpOyB9Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3N0cl9zcGxpdCcpKSB7CiAgICBmdW5jdGlvbiBtYl9zdHJfc3BsaXQoP3N0cmluZyAkc3RyaW5nLCA/aW50ICRsZW5ndGggPSAxLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBhcnJheSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJfc3BsaXQoKHN0cmluZykgJHN0cmluZywgKGludCkgJGxlbmd0aCwgJGVuY29kaW5nKTsgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RyX3BhZCcpKSB7CiAgICBmdW5jdGlvbiBtYl9zdHJfcGFkKD9zdHJpbmcgJHN0cmluZywgP2ludCAkbGVuZ3RoLCA/c3RyaW5nICRwYWRfc3RyaW5nID0gJyAnLCA/aW50ICRwYWRfdHlwZSA9IFNUUl9QQURfUklHSFQsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IHN0cmluZyB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJfcGFkKChzdHJpbmcpICRzdHJpbmcsIChpbnQpICRsZW5ndGgsIChzdHJpbmcpICRwYWRfc3RyaW5nLCAoaW50KSAkcGFkX3R5cGUsICRlbmNvZGluZyk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3VjZmlyc3QnKSkgewogICAgZnVuY3Rpb24gbWJfdWNmaXJzdCg/c3RyaW5nICRzdHJpbmcsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IHN0cmluZyB7IHJldHVybiBwXE1ic3RyaW5nOjptYl91Y2ZpcnN0KChzdHJpbmcpICRzdHJpbmcsICRlbmNvZGluZyk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX2xjZmlyc3QnKSkgewogICAgZnVuY3Rpb24gbWJfbGNmaXJzdCg/c3RyaW5nICRzdHJpbmcsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCk6IHN0cmluZyB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9sY2ZpcnN0KChzdHJpbmcpICRzdHJpbmcsICRlbmNvZGluZyk7IH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ21iX3RyaW0nKSkgewogICAgZnVuY3Rpb24gbWJfdHJpbSg/c3RyaW5nICRzdHJpbmcsID9zdHJpbmcgJGNoYXJhY3RlcnMgPSBudWxsLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBzdHJpbmcgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfdHJpbSgoc3RyaW5nKSAkc3RyaW5nLCAkY2hhcmFjdGVycywgJGVuY29kaW5nKTsgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfbHRyaW0nKSkgewogICAgZnVuY3Rpb24gbWJfbHRyaW0oP3N0cmluZyAkc3RyaW5nLCA/c3RyaW5nICRjaGFyYWN0ZXJzID0gbnVsbCwgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogc3RyaW5nIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2x0cmltKChzdHJpbmcpICRzdHJpbmcsICRjaGFyYWN0ZXJzLCAkZW5jb2RpbmcpOyB9Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9ydHJpbScpKSB7CiAgICBmdW5jdGlvbiBtYl9ydHJpbSg/c3RyaW5nICRzdHJpbmcsID9zdHJpbmcgJGNoYXJhY3RlcnMgPSBudWxsLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpOiBzdHJpbmcgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfcnRyaW0oKHN0cmluZykgJHN0cmluZywgJGNoYXJhY3RlcnMsICRlbmNvZGluZyk7IH0KfQoKaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ21ic3RyaW5nJykpIHsKICAgIHJldHVybjsKfQoKaWYgKCFkZWZpbmVkKCdNQl9DQVNFX1VQUEVSJykpIHsKICAgIGRlZmluZSgnTUJfQ0FTRV9VUFBFUicsIDApOwp9CmlmICghZGVmaW5lZCgnTUJfQ0FTRV9MT1dFUicpKSB7CiAgICBkZWZpbmUoJ01CX0NBU0VfTE9XRVInLCAxKTsKfQppZiAoIWRlZmluZWQoJ01CX0NBU0VfVElUTEUnKSkgewogICAgZGVmaW5lKCdNQl9DQVNFX1RJVExFJywgMik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZyIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGZvciB0aGUgTWJzdHJpbmcgZXh0ZW5zaW9uIiwKICAgICJrZXl3b3JkcyI6IFsicG9seWZpbGwiLCAic2hpbSIsICJjb21wYXRpYmlsaXR5IiwgInBvcnRhYmxlIiwgIm1ic3RyaW5nIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTcuMiIsCiAgICAgICAgImV4dC1pY29udiI6ICIqIgogICAgfSwKICAgICJwcm92aWRlIjogewogICAgICAgICJleHQtbWJzdHJpbmciOiAiKiIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogeyAiU3ltZm9ueVxcUG9seWZpbGxcXE1ic3RyaW5nXFwiOiAiIiB9LAogICAgICAgICJmaWxlcyI6IFsgImJvb3RzdHJhcC5waHAiIF0KICAgIH0sCiAgICAic3VnZ2VzdCI6IHsKICAgICAgICAiZXh0LW1ic3RyaW5nIjogIkZvciBiZXN0IHBlcmZvcm1hbmNlIgogICAgfSwKICAgICJtaW5pbXVtLXN0YWJpbGl0eSI6ICJkZXYiLAogICAgImV4dHJhIjogewogICAgICAgICJ0aGFua3MiOiB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvcG9seWZpbGwiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsIgogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1LXByZXNlbnQgRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/Mbstring.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XFBvbHlmaWxsXE1ic3RyaW5nOwoKLyoqCiAqIFBhcnRpYWwgbWJzdHJpbmcgaW1wbGVtZW50YXRpb24gaW4gUEhQLCBpY29udiBiYXNlZCwgVVRGLTggY2VudHJpYy4KICoKICogSW1wbGVtZW50ZWQ6CiAqIC0gbWJfY2hyICAgICAgICAgICAgICAgICAgLSBSZXR1cm5zIGEgc3BlY2lmaWMgY2hhcmFjdGVyIGZyb20gaXRzIFVuaWNvZGUgY29kZSBwb2ludAogKiAtIG1iX2NvbnZlcnRfZW5jb2RpbmcgICAgIC0gQ29udmVydCBjaGFyYWN0ZXIgZW5jb2RpbmcKICogLSBtYl9jb252ZXJ0X3ZhcmlhYmxlcyAgICAtIENvbnZlcnQgY2hhcmFjdGVyIGNvZGUgaW4gdmFyaWFibGUocykKICogLSBtYl9kZWNvZGVfbWltZWhlYWRlciAgICAtIERlY29kZSBzdHJpbmcgaW4gTUlNRSBoZWFkZXIgZmllbGQKICogLSBtYl9lbmNvZGVfbWltZWhlYWRlciAgICAtIEVuY29kZSBzdHJpbmcgZm9yIE1JTUUgaGVhZGVyIFhYWCBOQVRJVkUgSU1QTEVNRU5UQVRJT04gSVMgUkVBTExZIEJVR0dFRAogKiAtIG1iX2RlY29kZV9udW1lcmljZW50aXR5IC0gRGVjb2RlIEhUTUwgbnVtZXJpYyBzdHJpbmcgcmVmZXJlbmNlIHRvIGNoYXJhY3RlcgogKiAtIG1iX2VuY29kZV9udW1lcmljZW50aXR5IC0gRW5jb2RlIGNoYXJhY3RlciB0byBIVE1MIG51bWVyaWMgc3RyaW5nIHJlZmVyZW5jZQogKiAtIG1iX2NvbnZlcnRfY2FzZSAgICAgICAgIC0gUGVyZm9ybSBjYXNlIGZvbGRpbmcgb24gYSBzdHJpbmcKICogLSBtYl9kZXRlY3RfZW5jb2RpbmcgICAgICAtIERldGVjdCBjaGFyYWN0ZXIgZW5jb2RpbmcKICogLSBtYl9nZXRfaW5mbyAgICAgICAgICAgICAtIEdldCBpbnRlcm5hbCBzZXR0aW5ncyBvZiBtYnN0cmluZwogKiAtIG1iX2h0dHBfaW5wdXQgICAgICAgICAgIC0gRGV0ZWN0IEhUVFAgaW5wdXQgY2hhcmFjdGVyIGVuY29kaW5nCiAqIC0gbWJfaHR0cF9vdXRwdXQgICAgICAgICAgLSBTZXQvR2V0IEhUVFAgb3V0cHV0IGNoYXJhY3RlciBlbmNvZGluZwogKiAtIG1iX2ludGVybmFsX2VuY29kaW5nICAgIC0gU2V0L0dldCBpbnRlcm5hbCBjaGFyYWN0ZXIgZW5jb2RpbmcKICogLSBtYl9saXN0X2VuY29kaW5ncyAgICAgICAtIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN1cHBvcnRlZCBlbmNvZGluZ3MKICogLSBtYl9vcmQgICAgICAgICAgICAgICAgICAtIFJldHVybnMgdGhlIFVuaWNvZGUgY29kZSBwb2ludCBvZiBhIGNoYXJhY3RlcgogKiAtIG1iX291dHB1dF9oYW5kbGVyICAgICAgIC0gQ2FsbGJhY2sgZnVuY3Rpb24gY29udmVydHMgY2hhcmFjdGVyIGVuY29kaW5nIGluIG91dHB1dCBidWZmZXIKICogLSBtYl9zY3J1YiAgICAgICAgICAgICAgICAtIFJlcGxhY2VzIGlsbC1mb3JtZWQgYnl0ZSBzZXF1ZW5jZXMgd2l0aCBzdWJzdGl0dXRlIGNoYXJhY3RlcnMKICogLSBtYl9zdHJsZW4gICAgICAgICAgICAgICAtIEdldCBzdHJpbmcgbGVuZ3RoCiAqIC0gbWJfc3RycG9zICAgICAgICAgICAgICAgLSBGaW5kIHBvc2l0aW9uIG9mIGZpcnN0IG9jY3VycmVuY2Ugb2Ygc3RyaW5nIGluIGEgc3RyaW5nCiAqIC0gbWJfc3RycnBvcyAgICAgICAgICAgICAgLSBGaW5kIHBvc2l0aW9uIG9mIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyBpbiBhIHN0cmluZwogKiAtIG1iX3N0cl9zcGxpdCAgICAgICAgICAgIC0gQ29udmVydCBhIHN0cmluZyB0byBhbiBhcnJheQogKiAtIG1iX3N0cnRvbG93ZXIgICAgICAgICAgIC0gTWFrZSBhIHN0cmluZyBsb3dlcmNhc2UKICogLSBtYl9zdHJ0b3VwcGVyICAgICAgICAgICAtIE1ha2UgYSBzdHJpbmcgdXBwZXJjYXNlCiAqIC0gbWJfc3Vic3RpdHV0ZV9jaGFyYWN0ZXIgLSBTZXQvR2V0IHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIKICogLSBtYl9zdWJzdHIgICAgICAgICAgICAgICAtIEdldCBwYXJ0IG9mIHN0cmluZwogKiAtIG1iX3N0cmlwb3MgICAgICAgICAgICAgIC0gRmluZHMgcG9zaXRpb24gb2YgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cmlzdHIgICAgICAgICAgICAgIC0gRmluZHMgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cnJjaHIgICAgICAgICAgICAgIC0gRmluZHMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNoYXJhY3RlciBpbiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlcgogKiAtIG1iX3N0cnJpY2hyICAgICAgICAgICAgIC0gRmluZHMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNoYXJhY3RlciBpbiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cnJpcG9zICAgICAgICAgICAgIC0gRmluZHMgcG9zaXRpb24gb2YgbGFzdCBvY2N1cnJlbmNlIG9mIGEgc3RyaW5nIHdpdGhpbiBhbm90aGVyLCBjYXNlIGluc2Vuc2l0aXZlCiAqIC0gbWJfc3Ryc3RyICAgICAgICAgICAgICAgLSBGaW5kcyBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgc3RyaW5nIHdpdGhpbiBhbm90aGVyCiAqIC0gbWJfc3Ryd2lkdGggICAgICAgICAgICAgLSBSZXR1cm4gd2lkdGggb2Ygc3RyaW5nCiAqIC0gbWJfc3Vic3RyX2NvdW50ICAgICAgICAgLSBDb3VudCB0aGUgbnVtYmVyIG9mIHN1YnN0cmluZyBvY2N1cnJlbmNlcwogKiAtIG1iX3VjZmlyc3QgICAgICAgICAgICAgIC0gTWFrZSBhIHN0cmluZydzIGZpcnN0IGNoYXJhY3RlciB1cHBlcmNhc2UKICogLSBtYl9sY2ZpcnN0ICAgICAgICAgICAgICAtIE1ha2UgYSBzdHJpbmcncyBmaXJzdCBjaGFyYWN0ZXIgbG93ZXJjYXNlCiAqIC0gbWJfdHJpbSAgICAgICAgICAgICAgICAgLSBTdHJpcCB3aGl0ZXNwYWNlIChvciBvdGhlciBjaGFyYWN0ZXJzKSBmcm9tIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZwogKiAtIG1iX2x0cmltICAgICAgICAgICAgICAgIC0gU3RyaXAgd2hpdGVzcGFjZSAob3Igb3RoZXIgY2hhcmFjdGVycykgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIGEgc3RyaW5nCiAqIC0gbWJfcnRyaW0gICAgICAgICAgICAgICAgLSBTdHJpcCB3aGl0ZXNwYWNlIChvciBvdGhlciBjaGFyYWN0ZXJzKSBmcm9tIHRoZSBlbmQgb2YgYSBzdHJpbmcKICoKICogTm90IGltcGxlbWVudGVkOgogKiAtIG1iX2NvbnZlcnRfa2FuYSAgICAgICAgIC0gQ29udmVydCAia2FuYSIgb25lIGZyb20gYW5vdGhlciAoInplbi1rYWt1IiwgImhhbi1rYWt1IiBhbmQgbW9yZSkKICogLSBtYl9lcmVnXyogICAgICAgICAgICAgICAtIFJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIG11bHRpYnl0ZSBzdXBwb3J0CiAqIC0gbWJfcGFyc2Vfc3RyICAgICAgICAgICAgLSBQYXJzZSBHRVQvUE9TVC9DT09LSUUgZGF0YSBhbmQgc2V0IGdsb2JhbCB2YXJpYWJsZQogKiAtIG1iX3ByZWZlcnJlZF9taW1lX25hbWUgIC0gR2V0IE1JTUUgY2hhcnNldCBzdHJpbmcKICogLSBtYl9yZWdleF9lbmNvZGluZyAgICAgICAtIFJldHVybnMgY3VycmVudCBlbmNvZGluZyBmb3IgbXVsdGlieXRlIHJlZ2V4IGFzIHN0cmluZwogKiAtIG1iX3JlZ2V4X3NldF9vcHRpb25zICAgIC0gU2V0L0dldCB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciBtYnJlZ2V4IGZ1bmN0aW9ucwogKiAtIG1iX3NlbmRfbWFpbCAgICAgICAgICAgIC0gU2VuZCBlbmNvZGVkIG1haWwKICogLSBtYl9zcGxpdCAgICAgICAgICAgICAgICAtIFNwbGl0IG11bHRpYnl0ZSBzdHJpbmcgdXNpbmcgcmVndWxhciBleHByZXNzaW9uCiAqIC0gbWJfc3RyY3V0ICAgICAgICAgICAgICAgLSBHZXQgcGFydCBvZiBzdHJpbmcKICogLSBtYl9zdHJpbXdpZHRoICAgICAgICAgICAtIEdldCB0cnVuY2F0ZWQgc3RyaW5nIHdpdGggc3BlY2lmaWVkIHdpZHRoCiAqCiAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTWJzdHJpbmcKewogICAgcHVibGljIGNvbnN0IE1CX0NBU0VfRk9MRCA9IFxQSFBfSU5UX01BWDsKCiAgICBwcml2YXRlIGNvbnN0IFNJTVBMRV9DQVNFX0ZPTEQgPSBbCiAgICAgICAgWyfCtScsICfFvycsICJceENEXHg4NSIsICfPgicsICJceENGXHg5MCIsICJceENGXHg5MSIsICJceENGXHg5NSIsICJceENGXHg5NiIsICJceENGXHhCMCIsICJceENGXHhCMSIsICJceENGXHhCNSIsICJceEUxXHhCQVx4OUIiLCAiXHhFMVx4QkVceEJFIl0sCiAgICAgICAgWyfOvCcsICdzJywgJ865JywgICAgICAgICfPgycsICfOsicsICAgICAgICAnzrgnLCAgICAgICAgJ8+GJywgICAgICAgICfPgCcsICAgICAgICAnzronLCAgICAgICAgJ8+BJywgICAgICAgICfOtScsICAgICAgICAiXHhFMVx4QjlceEExIiwgJ865J10sCiAgICBdOwoKICAgIHByaXZhdGUgc3RhdGljICRlbmNvZGluZ0xpc3QgPSBbJ0FTQ0lJJywgJ1VURi04J107CiAgICBwcml2YXRlIHN0YXRpYyAkbGFuZ3VhZ2UgPSAnbmV1dHJhbCc7CiAgICBwcml2YXRlIHN0YXRpYyAkaW50ZXJuYWxFbmNvZGluZyA9ICdVVEYtOCc7CiAgICBwcml2YXRlIHN0YXRpYyAkaWNvbnZTdXBwb3J0c0lnbm9yZTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2NvbnZlcnRfZW5jb2RpbmcoJHMsICR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoXGlzX2FycmF5KCRzKSkgewogICAgICAgICAgICAkciA9IFtdOwogICAgICAgICAgICBmb3JlYWNoICgkcyBhcyAkc3RyKSB7CiAgICAgICAgICAgICAgICAkcltdID0gc2VsZjo6bWJfY29udmVydF9lbmNvZGluZygkc3RyLCAkdG9FbmNvZGluZywgJGZyb21FbmNvZGluZyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkcjsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfYXJyYXkoJGZyb21FbmNvZGluZykgfHwgKG51bGwgIT09ICRmcm9tRW5jb2RpbmcgJiYgZmFsc2UgIT09IHN0cnBvcygkZnJvbUVuY29kaW5nLCAnLCcpKSkgewogICAgICAgICAgICAkZnJvbUVuY29kaW5nID0gc2VsZjo6bWJfZGV0ZWN0X2VuY29kaW5nKCRzLCAkZnJvbUVuY29kaW5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZnJvbUVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGZyb21FbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICAkdG9FbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCR0b0VuY29kaW5nKTsKCiAgICAgICAgaWYgKCdCQVNFNjQnID09PSAkZnJvbUVuY29kaW5nKSB7CiAgICAgICAgICAgICRzID0gYmFzZTY0X2RlY29kZSgkcyk7CiAgICAgICAgICAgICRmcm9tRW5jb2RpbmcgPSAkdG9FbmNvZGluZzsKICAgICAgICB9CgogICAgICAgIGlmICgnQkFTRTY0JyA9PT0gJHRvRW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIGJhc2U2NF9lbmNvZGUoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdIVE1MLUVOVElUSUVTJyA9PT0gJHRvRW5jb2RpbmcgfHwgJ0hUTUwnID09PSAkdG9FbmNvZGluZykgewogICAgICAgICAgICBpZiAoJ0hUTUwtRU5USVRJRVMnID09PSAkZnJvbUVuY29kaW5nIHx8ICdIVE1MJyA9PT0gJGZyb21FbmNvZGluZykgewogICAgICAgICAgICAgICAgJGZyb21FbmNvZGluZyA9ICdXaW5kb3dzLTEyNTInOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgnVVRGLTgnICE9PSAkZnJvbUVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAkcyA9IHNlbGY6Omljb252KCRmcm9tRW5jb2RpbmcsICdVVEYtOCcsICRzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZV9jYWxsYmFjaygnL1tceDgwLVx4RkZdKy8nLCBbX19DTEFTU19fLCAnaHRtbF9lbmNvZGluZ19jYWxsYmFjayddLCAkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJ0hUTUwtRU5USVRJRVMnID09PSAkZnJvbUVuY29kaW5nKSB7CiAgICAgICAgICAgICRkZWNvZGVDb250cm9sQ2hhcnMgPSBzdGF0aWMgZnVuY3Rpb24gKCRtKSB7CiAgICAgICAgICAgICAgICAkY29kZSA9ICcnICE9PSAoJG1bMl0gPz8gJycpID8gaGV4ZGVjKCRtWzJdKSA6IChpbnQpICRtWzFdOwoKICAgICAgICAgICAgICAgIGlmICgkY29kZSA8IDMyIHx8IDEyNyA9PT0gJGNvZGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gXGNocigkY29kZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoMTI4IDw9ICRjb2RlICYmICRjb2RlIDw9IDE1OSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiXHhDMiIuXGNocigweDgwIHwgKCRjb2RlICYgMHgzRikpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkbVswXTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPj0gNzA0MDApIHsKICAgICAgICAgICAgICAgICRzID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRzLCBcRU5UX1FVT1RFUywgJ1VURi04Jyk7CiAgICAgICAgICAgICAgICAvLyBodG1sX2VudGl0eV9kZWNvZGUoKSBsZWF2ZXMgbnVtZXJpYyBlbnRpdGllcyBmb3IgQzAvQzEgY29udHJvbAogICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBhcy1pcyAoSFRNTCBzcGVjKSwgYnV0IG1iX2NvbnZlcnRfZW5jb2RpbmcoKSBkZWNvZGVzCiAgICAgICAgICAgICAgICAvLyB0aGVtLiBDYXRjaCB3aGF0IGh0bWxfZW50aXR5X2RlY29kZSgpIG1pc3NlZC4KICAgICAgICAgICAgICAgIGlmIChmYWxzZSAhPT0gc3RycG9zKCRzLCAnJiMnKSkgewogICAgICAgICAgICAgICAgICAgICRzID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcvJiMoPzowKihbMC05XSsrKXxbeFhdMCooWzAtOWEtZkEtRl0rKykpOy8nLCAkZGVjb2RlQ29udHJvbENoYXJzLCAkcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBQSFAgPCA3LjQ6IGh0bWxfZW50aXR5X2RlY29kZSgpIHRydW5jYXRlcyBzdHJpbmdzIGF0IE5VTCBieXRlcywKICAgICAgICAgICAgICAgIC8vIHNvIGRlY29kZSB0aGUgY29udHJvbCBjaGFyYWN0ZXIgZW50aXRpZXMgZmlyc3QgdGhlbiBjYWxsCiAgICAgICAgICAgICAgICAvLyBodG1sX2VudGl0eV9kZWNvZGUoKSBvbiBlYWNoIE5VTC1kZWxpbWl0ZWQgY2h1bmsgaW5kZXBlbmRlbnRseS4KICAgICAgICAgICAgICAgICRzID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcvJiMoPzowKihbMC05XSsrKXxbeFhdMCooWzAtOWEtZkEtRl0rKykpOy8nLCAkZGVjb2RlQ29udHJvbENoYXJzLCAkcyk7CiAgICAgICAgICAgICAgICAkcyA9IGltcGxvZGUoIlwwIiwgYXJyYXlfbWFwKHN0YXRpYyBmdW5jdGlvbiAoJGNodW5rKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGh0bWxfZW50aXR5X2RlY29kZSgkY2h1bmssIFxFTlRfUVVPVEVTLCAnVVRGLTgnKTsKICAgICAgICAgICAgICAgIH0sIGV4cGxvZGUoIlwwIiwgJHMpKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZyb21FbmNvZGluZyA9ICdVVEYtOCc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6aWNvbnYoJGZyb21FbmNvZGluZywgJHRvRW5jb2RpbmcsICRzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2NvbnZlcnRfdmFyaWFibGVzKCR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nLCAmLi4uJHZhcnMpCiAgICB7CiAgICAgICAgJG9rID0gdHJ1ZTsKICAgICAgICBhcnJheV93YWxrX3JlY3Vyc2l2ZSgkdmFycywgc3RhdGljIGZ1bmN0aW9uICgmJHYpIHVzZSAoJiRvaywgJHRvRW5jb2RpbmcsICRmcm9tRW5jb2RpbmcpIHsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkdiA9IHNlbGY6Om1iX2NvbnZlcnRfZW5jb2RpbmcoJHYsICR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nKSkgewogICAgICAgICAgICAgICAgJG9rID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuICRvayA/ICRmcm9tRW5jb2RpbmcgOiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2RlY29kZV9taW1laGVhZGVyKCRzKQogICAgewogICAgICAgIHJldHVybiBpY29udl9taW1lX2RlY29kZSgkcywgMiwgc2VsZjo6JGludGVybmFsRW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfZW5jb2RlX21pbWVoZWFkZXIoJHMsICRjaGFyc2V0ID0gbnVsbCwgJHRyYW5zZmVyRW5jb2RpbmcgPSBudWxsLCAkbGluZWZlZWQgPSBudWxsLCAkaW5kZW50ID0gbnVsbCkKICAgIHsKICAgICAgICB0cmlnZ2VyX2Vycm9yKCdtYl9lbmNvZGVfbWltZWhlYWRlcigpIGlzIGJ1Z2dlZC4gUGxlYXNlIHVzZSBpY29udl9taW1lX2VuY29kZSgpIGluc3RlYWQnLCBcRV9VU0VSX1dBUk5JTkcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfZGVjb2RlX251bWVyaWNlbnRpdHkoJHMsICRjb252bWFwLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIGlmIChudWxsICE9PSAkcyAmJiAhXGlzX3NjYWxhcigkcykgJiYgIShcaXNfb2JqZWN0KCRzKSAmJiBtZXRob2RfZXhpc3RzKCRzLCAnX190b1N0cmluZycpKSkgewogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCdtYl9kZWNvZGVfbnVtZXJpY2VudGl0eSgpIGV4cGVjdHMgcGFyYW1ldGVyIDEgdG8gYmUgc3RyaW5nLCAnLlxnZXR0eXBlKCRzKS4nIGdpdmVuJywgXEVfVVNFUl9XQVJOSU5HKTsKCiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJGNvbnZtYXApIHx8ICg4MDAwMCA+IFxQSFBfVkVSU0lPTl9JRCAmJiAhJGNvbnZtYXApKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkZW5jb2RpbmcgJiYgIVxpc19zY2FsYXIoJGVuY29kaW5nKSkgewogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCdtYl9kZWNvZGVfbnVtZXJpY2VudGl0eSgpIGV4cGVjdHMgcGFyYW1ldGVyIDMgdG8gYmUgc3RyaW5nLCAnLlxnZXR0eXBlKCRzKS4nIGdpdmVuJywgXEVfVVNFUl9XQVJOSU5HKTsKCiAgICAgICAgICAgIHJldHVybiAnJzsgIC8vIEluc3RlYWQgb2YgbnVsbCAoY2YuIG1iX2VuY29kZV9udW1lcmljZW50aXR5KS4KICAgICAgICB9CgogICAgICAgICRzID0gKHN0cmluZykgJHM7CiAgICAgICAgaWYgKCcnID09PSAkcykgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ1VURi04JyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9IG51bGw7CiAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnLy91JywgJHMpKSB7CiAgICAgICAgICAgICAgICAkcyA9IEBzZWxmOjppY29udignVVRGLTgnLCAnVVRGLTgnLCAkcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcyA9IHNlbGY6Omljb252KCRlbmNvZGluZywgJ1VURi04JywgJHMpOwogICAgICAgIH0KCiAgICAgICAgJGNudCA9IGZsb29yKFxjb3VudCgkY29udm1hcCkgLyA0KSAqIDQ7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjbnQ7ICRpICs9IDQpIHsKICAgICAgICAgICAgLy8gY29sbGVjdG9yX2RlY29kZV9odG1sbnVtZXJpY2VudGl0eSBpZ25vcmVzICRjb252bWFwWyRpICsgM10KICAgICAgICAgICAgJGNvbnZtYXBbJGldICs9ICRjb252bWFwWyRpICsgMl07CiAgICAgICAgICAgICRjb252bWFwWyRpICsgMV0gKz0gJGNvbnZtYXBbJGkgKyAyXTsKICAgICAgICB9CgogICAgICAgICRzID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcvJiMoPzowKihbMC05XSspfHgwKihbMC05YS1mQS1GXSspKScuKFxQSFBfVkVSU0lPTl9JRCA+PSA4MDIwMCA/ICcnIDogJyg/ISYpJykuJzs/LycsIHN0YXRpYyBmdW5jdGlvbiAoYXJyYXkgJG0pIHVzZSAoJGNudCwgJGNvbnZtYXApIHsKICAgICAgICAgICAgJGMgPSBpc3NldCgkbVsyXSkgPyAoaW50KSBoZXhkZWMoJG1bMl0pIDogJG1bMV07CiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjbnQ7ICRpICs9IDQpIHsKICAgICAgICAgICAgICAgIGlmICgkYyA+PSAkY29udm1hcFskaV0gJiYgJGMgPD0gJGNvbnZtYXBbJGkgKyAxXSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjptYl9jaHIoJGMgLSAkY29udm1hcFskaSArIDJdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRtWzBdOwogICAgICAgIH0sICRzKTsKCiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gJHM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6aWNvbnYoJ1VURi04JywgJGVuY29kaW5nLCAkcyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9lbmNvZGVfbnVtZXJpY2VudGl0eSgkcywgJGNvbnZtYXAsICRlbmNvZGluZyA9IG51bGwsICRpc19oZXggPSBmYWxzZSkKICAgIHsKICAgICAgICBpZiAobnVsbCAhPT0gJHMgJiYgIVxpc19zY2FsYXIoJHMpICYmICEoXGlzX29iamVjdCgkcykgJiYgbWV0aG9kX2V4aXN0cygkcywgJ19fdG9TdHJpbmcnKSkpIHsKICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcignbWJfZW5jb2RlX251bWVyaWNlbnRpdHkoKSBleHBlY3RzIHBhcmFtZXRlciAxIHRvIGJlIHN0cmluZywgJy5cZ2V0dHlwZSgkcykuJyBnaXZlbicsIFxFX1VTRVJfV0FSTklORyk7CgogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX2FycmF5KCRjb252bWFwKSB8fCAoODAwMDAgPiBcUEhQX1ZFUlNJT05fSUQgJiYgISRjb252bWFwKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJGVuY29kaW5nICYmICFcaXNfc2NhbGFyKCRlbmNvZGluZykpIHsKICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcignbWJfZW5jb2RlX251bWVyaWNlbnRpdHkoKSBleHBlY3RzIHBhcmFtZXRlciAzIHRvIGJlIHN0cmluZywgJy5cZ2V0dHlwZSgkcykuJyBnaXZlbicsIFxFX1VTRVJfV0FSTklORyk7CgogICAgICAgICAgICByZXR1cm4gbnVsbDsgIC8vIEluc3RlYWQgb2YgJycgKGNmLiBtYl9kZWNvZGVfbnVtZXJpY2VudGl0eSkuCiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJGlzX2hleCAmJiAhXGlzX3NjYWxhcigkaXNfaGV4KSkgewogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCdtYl9lbmNvZGVfbnVtZXJpY2VudGl0eSgpIGV4cGVjdHMgcGFyYW1ldGVyIDQgdG8gYmUgYm9vbGVhbiwgJy5cZ2V0dHlwZSgkcykuJyBnaXZlbicsIFxFX1VTRVJfV0FSTklORyk7CgogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRzID0gKHN0cmluZykgJHM7CiAgICAgICAgaWYgKCcnID09PSAkcykgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ1VURi04JyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9IG51bGw7CiAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnLy91JywgJHMpKSB7CiAgICAgICAgICAgICAgICAkcyA9IEBzZWxmOjppY29udignVVRGLTgnLCAnVVRGLTgnLCAkcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcyA9IHNlbGY6Omljb252KCRlbmNvZGluZywgJ1VURi04JywgJHMpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljICR1bGVuTWFzayA9IFsiXHhDMCIgPT4gMiwgIlx4RDAiID0+IDIsICJceEUwIiA9PiAzLCAiXHhGMCIgPT4gNF07CgogICAgICAgICRjbnQgPSBmbG9vcihcY291bnQoJGNvbnZtYXApIC8gNCkgKiA0OwogICAgICAgICRpID0gMDsKICAgICAgICAkbGVuID0gXHN0cmxlbigkcyk7CiAgICAgICAgJHJlc3VsdCA9ICcnOwoKICAgICAgICB3aGlsZSAoJGkgPCAkbGVuKSB7CiAgICAgICAgICAgICR1bGVuID0gJHNbJGldIDwgIlx4ODAiID8gMSA6ICR1bGVuTWFza1skc1skaV0gJiAiXHhGMCJdOwogICAgICAgICAgICAkdWNociA9IHN1YnN0cigkcywgJGksICR1bGVuKTsKICAgICAgICAgICAgJGkgKz0gJHVsZW47CiAgICAgICAgICAgICRjID0gc2VsZjo6bWJfb3JkKCR1Y2hyKTsKCiAgICAgICAgICAgIGZvciAoJGogPSAwOyAkaiA8ICRjbnQ7ICRqICs9IDQpIHsKICAgICAgICAgICAgICAgIGlmICgkYyA+PSAkY29udm1hcFskal0gJiYgJGMgPD0gJGNvbnZtYXBbJGogKyAxXSkgewogICAgICAgICAgICAgICAgICAgICRjT2Zmc2V0ID0gKCRjICsgJGNvbnZtYXBbJGogKyAyXSkgJiAkY29udm1hcFskaiArIDNdOwogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gJGlzX2hleCA/IFxzcHJpbnRmKCcmI3glWDsnLCAkY09mZnNldCkgOiAnJiMnLiRjT2Zmc2V0Lic7JzsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRyZXN1bHQgLj0gJHVjaHI7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6Omljb252KCdVVEYtOCcsICRlbmNvZGluZywgJHJlc3VsdCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9jb252ZXJ0X2Nhc2UoJHMsICRtb2RlLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRzID0gKHN0cmluZykgJHM7CiAgICAgICAgaWYgKCcnID09PSAkcykgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ1VURi04JyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9IG51bGw7CiAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnLy91JywgJHMpKSB7CiAgICAgICAgICAgICAgICAkcyA9IEBzZWxmOjppY29udignVVRGLTgnLCAnVVRGLTgnLCAkcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcyA9IHNlbGY6Omljb252KCRlbmNvZGluZywgJ1VURi04JywgJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxNQl9DQVNFX1RJVExFID09ICRtb2RlKSB7CiAgICAgICAgICAgIHN0YXRpYyAkdGl0bGVSZWdleHAgPSBudWxsOwogICAgICAgICAgICBpZiAobnVsbCA9PT0gJHRpdGxlUmVnZXhwKSB7CiAgICAgICAgICAgICAgICAkdGl0bGVSZWdleHAgPSBzZWxmOjpnZXREYXRhKCd0aXRsZUNhc2VSZWdleHAnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcyA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygkdGl0bGVSZWdleHAsIFtfX0NMQVNTX18sICd0aXRsZV9jYXNlJ10sICRzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoXE1CX0NBU0VfVVBQRVIgPT0gJG1vZGUpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyAkdXBwZXIgPSBudWxsOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09ICR1cHBlcikgewogICAgICAgICAgICAgICAgICAgICR1cHBlciA9IHNlbGY6OmdldERhdGEoJ3VwcGVyQ2FzZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG1hcCA9ICR1cHBlcjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChzZWxmOjpNQl9DQVNFX0ZPTEQgPT09ICRtb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGljICRjYXNlRm9sZGluZyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgPT09ICRjYXNlRm9sZGluZykgewogICAgICAgICAgICAgICAgICAgICAgICAkY2FzZUZvbGRpbmcgPSBzZWxmOjpnZXREYXRhKCdjYXNlRm9sZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcyA9IHN0cnRyKCRzLCAkY2FzZUZvbGRpbmcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0YXRpYyAkbG93ZXIgPSBudWxsOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09ICRsb3dlcikgewogICAgICAgICAgICAgICAgICAgICRsb3dlciA9IHNlbGY6OmdldERhdGEoJ2xvd2VyQ2FzZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG1hcCA9ICRsb3dlcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3RhdGljICR1bGVuTWFzayA9IFsiXHhDMCIgPT4gMiwgIlx4RDAiID0+IDIsICJceEUwIiA9PiAzLCAiXHhGMCIgPT4gNF07CgogICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgICRsZW4gPSBcc3RybGVuKCRzKTsKCiAgICAgICAgICAgIHdoaWxlICgkaSA8ICRsZW4pIHsKICAgICAgICAgICAgICAgICR1bGVuID0gJHNbJGldIDwgIlx4ODAiID8gMSA6ICR1bGVuTWFza1skc1skaV0gJiAiXHhGMCJdOwogICAgICAgICAgICAgICAgJHVjaHIgPSBzdWJzdHIoJHMsICRpLCAkdWxlbik7CiAgICAgICAgICAgICAgICAkaSArPSAkdWxlbjsKCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG1hcFskdWNocl0pKSB7CiAgICAgICAgICAgICAgICAgICAgJHVjaHIgPSAkbWFwWyR1Y2hyXTsKICAgICAgICAgICAgICAgICAgICAkbmxlbiA9IFxzdHJsZW4oJHVjaHIpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJG5sZW4gPT0gJHVsZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5sZW4gPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNbLS0kbmxlbl0gPSAkdWNoclstLSR1bGVuXTsKICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoJHVsZW4pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzID0gc3Vic3RyX3JlcGxhY2UoJHMsICR1Y2hyLCAkaSAtICR1bGVuLCAkdWxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gKz0gJG5sZW4gLSAkdWxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgJGkgKz0gJG5sZW4gLSAkdWxlbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICRzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6Omljb252KCdVVEYtOCcsICRlbmNvZGluZywgJHMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfaW50ZXJuYWxfZW5jb2RpbmcoJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokaW50ZXJuYWxFbmNvZGluZzsKICAgICAgICB9CgogICAgICAgICRub3JtYWxpemVkRW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ1VURi04JyA9PT0gJG5vcm1hbGl6ZWRFbmNvZGluZyB8fCBmYWxzZSAhPT0gQGljb252KCRub3JtYWxpemVkRW5jb2RpbmcsICRub3JtYWxpemVkRW5jb2RpbmcsICcgJykpIHsKICAgICAgICAgICAgc2VsZjo6JGludGVybmFsRW5jb2RpbmcgPSAkbm9ybWFsaXplZEVuY29kaW5nOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoODAwMDAgPiBcUEhQX1ZFUlNJT05fSUQpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxWYWx1ZUVycm9yKFxzcHJpbnRmKCdBcmd1bWVudCAjMSAoJGVuY29kaW5nKSBtdXN0IGJlIGEgdmFsaWQgZW5jb2RpbmcsICIlcyIgZ2l2ZW4nLCAkZW5jb2RpbmcpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2xhbmd1YWdlKCRsYW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGxhbmcpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRsYW5ndWFnZTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoJG5vcm1hbGl6ZWRMYW5nID0gc3RydG9sb3dlcigkbGFuZykpIHsKICAgICAgICAgICAgY2FzZSAndW5pJzoKICAgICAgICAgICAgY2FzZSAnbmV1dHJhbCc6CiAgICAgICAgICAgICAgICBzZWxmOjokbGFuZ3VhZ2UgPSAkbm9ybWFsaXplZExhbmc7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoODAwMDAgPiBcUEhQX1ZFUlNJT05fSUQpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxWYWx1ZUVycm9yKFxzcHJpbnRmKCdBcmd1bWVudCAjMSAoJGxhbmd1YWdlKSBtdXN0IGJlIGEgdmFsaWQgbGFuZ3VhZ2UsICIlcyIgZ2l2ZW4nLCAkbGFuZykpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfbGlzdF9lbmNvZGluZ3MoKQogICAgewogICAgICAgIHJldHVybiBbJ1VURi04J107CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9lbmNvZGluZ19hbGlhc2VzKCRlbmNvZGluZykKICAgIHsKICAgICAgICBzd2l0Y2ggKHN0cnRvdXBwZXIoJGVuY29kaW5nKSkgewogICAgICAgICAgICBjYXNlICdVVEY4JzoKICAgICAgICAgICAgY2FzZSAnVVRGLTgnOgogICAgICAgICAgICAgICAgcmV0dXJuIFsndXRmOCddOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfY2hlY2tfZW5jb2RpbmcoJHZhciA9IG51bGwsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gJHZhcikgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRlbmNvZGluZyA9IHNlbGY6OiRpbnRlcm5hbEVuY29kaW5nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJHZhcikpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1iX2RldGVjdF9lbmNvZGluZygkdmFyLCBbJGVuY29kaW5nXSkgfHwgZmFsc2UgIT09IEBpY29udigkZW5jb2RpbmcsICRlbmNvZGluZywgJHZhcik7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdmFyIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICghc2VsZjo6bWJfY2hlY2tfZW5jb2RpbmcoJGtleSwgJGVuY29kaW5nKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghc2VsZjo6bWJfY2hlY2tfZW5jb2RpbmcoJHZhbHVlLCAkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfZGV0ZWN0X2VuY29kaW5nKCRzdHIsICRlbmNvZGluZ0xpc3QgPSBudWxsLCAkc3RyaWN0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZ0xpc3QpIHsKICAgICAgICAgICAgJGVuY29kaW5nTGlzdCA9IHNlbGY6OiRlbmNvZGluZ0xpc3Q7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFcaXNfYXJyYXkoJGVuY29kaW5nTGlzdCkpIHsKICAgICAgICAgICAgICAgICRlbmNvZGluZ0xpc3QgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgJGVuY29kaW5nTGlzdCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRlbmNvZGluZ0xpc3QgPSBhcnJheV9tYXAoJ3N0cnRvdXBwZXInLCAkZW5jb2RpbmdMaXN0KTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRlbmNvZGluZ0xpc3QgYXMgJGVuYykgewogICAgICAgICAgICBzd2l0Y2ggKCRlbmMpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ0FTQ0lJJzoKICAgICAgICAgICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9bXHg4MC1ceEZGXS8nLCAkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVuYzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnVVRGOCc6CiAgICAgICAgICAgICAgICBjYXNlICdVVEYtOCc6CiAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy8vdScsICRzdHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnVVRGLTgnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBzdHJuY21wKCRlbmMsICdJU08tODg1OS0nLCA5KSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVuYzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2RldGVjdF9vcmRlcigkZW5jb2RpbmdMaXN0ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nTGlzdCkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6JGVuY29kaW5nTGlzdDsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX2FycmF5KCRlbmNvZGluZ0xpc3QpKSB7CiAgICAgICAgICAgICRlbmNvZGluZ0xpc3QgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgJGVuY29kaW5nTGlzdCkpOwogICAgICAgIH0KICAgICAgICAkZW5jb2RpbmdMaXN0ID0gYXJyYXlfbWFwKCdzdHJ0b3VwcGVyJywgJGVuY29kaW5nTGlzdCk7CgogICAgICAgIGZvcmVhY2ggKCRlbmNvZGluZ0xpc3QgYXMgJGVuYykgewogICAgICAgICAgICBzd2l0Y2ggKCRlbmMpIHsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cm5jbXAoJGVuYywgJ0lTTy04ODU5LScsIDkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gbm8gYnJlYWsKICAgICAgICAgICAgICAgIGNhc2UgJ0FTQ0lJJzoKICAgICAgICAgICAgICAgIGNhc2UgJ1VURjgnOgogICAgICAgICAgICAgICAgY2FzZSAnVVRGLTgnOgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBzZWxmOjokZW5jb2RpbmdMaXN0ID0gJGVuY29kaW5nTGlzdDsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJsZW4oJHMsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKTsKICAgICAgICBpZiAoJ0NQODUwJyA9PT0gJGVuY29kaW5nIHx8ICdBU0NJSScgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gXHN0cmxlbigkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmFsc2UgIT09ICRsZW4gPSBAaWNvbnZfc3RybGVuKCRzLCAkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgIHJldHVybiAkbGVuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdVVEYtOCcgIT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gJGxlbjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwcmVnX21hdGNoX2FsbCgnL1tceDAwLVx4N0ZdfFtceEMwLVx4REZdW1x4ODAtXHhCRl0/fFtceEUwLVx4RUZdW1x4ODAtXHhCRl17MCwyfXxbXHhGMC1ceEY3XVtceDgwLVx4QkZdezAsM318W1x4RjgtXHhGQl1bXHg4MC1ceEJGXXswLDR9fFtceEZDLVx4RkRdW1x4ODAtXHhCRl17MCw1fXxbXHg4MC1ceEJGXHhGRVx4RkZdL3MnLCAkcyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwogICAgICAgIGlmICgnQ1A4NTAnID09PSAkZW5jb2RpbmcgfHwgJ0FTQ0lJJyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0KTsKICAgICAgICB9CgogICAgICAgICRuZWVkbGUgPSAoc3RyaW5nKSAkbmVlZGxlOwogICAgICAgIGlmICgnJyA9PT0gJG5lZWRsZSkgewogICAgICAgICAgICBpZiAoODAwMDAgPiBcUEhQX1ZFUlNJT05fSUQpIHsKICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoX19NRVRIT0RfXy4nOiBFbXB0eSBkZWxpbWl0ZXInLCBcRV9VU0VSX1dBUk5JTkcpOwoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaWNvbnZfc3RycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCwgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwogICAgICAgIGlmICgnQ1A4NTAnID09PSAkZW5jb2RpbmcgfHwgJ0FTQ0lJJyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzdHJycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9mZnNldCAhPSAoaW50KSAkb2Zmc2V0KSB7CiAgICAgICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgIH0gZWxzZWlmICgkb2Zmc2V0ID0gKGludCkgJG9mZnNldCkgewogICAgICAgICAgICBpZiAoJG9mZnNldCA8IDApIHsKICAgICAgICAgICAgICAgIGlmICgwID4gJG9mZnNldCArPSBzZWxmOjptYl9zdHJsZW4oJG5lZWRsZSkpIHsKICAgICAgICAgICAgICAgICAgICAkaGF5c3RhY2sgPSBzZWxmOjptYl9zdWJzdHIoJGhheXN0YWNrLCAwLCAkb2Zmc2V0LCAkZW5jb2RpbmcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaGF5c3RhY2sgPSBzZWxmOjptYl9zdWJzdHIoJGhheXN0YWNrLCAkb2Zmc2V0LCAyMTQ3NDgzNjQ3LCAkZW5jb2RpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcG9zID0gJycgIT09ICRuZWVkbGUgfHwgODAwMDAgPiBcUEhQX1ZFUlNJT05fSUQKICAgICAgICAgICAgPyBpY29udl9zdHJycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJGVuY29kaW5nKQogICAgICAgICAgICA6IHNlbGY6Om1iX3N0cmxlbigkaGF5c3RhY2ssICRlbmNvZGluZyk7CgogICAgICAgIHJldHVybiBmYWxzZSAhPT0gJHBvcyA/ICRvZmZzZXQgKyAkcG9zIDogZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJfc3BsaXQoJHN0cmluZywgJHNwbGl0X2xlbmd0aCA9IDEsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKG51bGwgIT09ICRzdHJpbmcgJiYgIVxpc19zY2FsYXIoJHN0cmluZykgJiYgIShcaXNfb2JqZWN0KCRzdHJpbmcpICYmIG1ldGhvZF9leGlzdHMoJHN0cmluZywgJ19fdG9TdHJpbmcnKSkpIHsKICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcignbWJfc3RyX3NwbGl0KCkgZXhwZWN0cyBwYXJhbWV0ZXIgMSB0byBiZSBzdHJpbmcsICcuXGdldHR5cGUoJHN0cmluZykuJyBnaXZlbicsIFxFX1VTRVJfV0FSTklORyk7CgogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICgxID4gJHNwbGl0X2xlbmd0aCA9IChpbnQpICRzcGxpdF9sZW5ndGgpIHsKICAgICAgICAgICAgaWYgKDgwMDAwID4gXFBIUF9WRVJTSU9OX0lEKSB7CiAgICAgICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCdUaGUgbGVuZ3RoIG9mIGVhY2ggc2VnbWVudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvJywgXEVfVVNFUl9XQVJOSU5HKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRocm93IG5ldyBcVmFsdWVFcnJvcignQXJndW1lbnQgIzIgKCRsZW5ndGgpIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgJGVuY29kaW5nID0gbWJfaW50ZXJuYWxfZW5jb2RpbmcoKTsKICAgICAgICB9CgogICAgICAgIGlmICgnVVRGLTgnID09PSAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgICRyeCA9ICcvKCc7CiAgICAgICAgICAgIHdoaWxlICg2NTUzNSA8ICRzcGxpdF9sZW5ndGgpIHsKICAgICAgICAgICAgICAgICRyeCAuPSAnLns2NTUzNX0nOwogICAgICAgICAgICAgICAgJHNwbGl0X2xlbmd0aCAtPSA2NTUzNTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcnggLj0gJy57Jy4kc3BsaXRfbGVuZ3RoLid9KS91cyc7CgogICAgICAgICAgICByZXR1cm4gcHJlZ19zcGxpdCgkcngsICRzdHJpbmcsIC0xLCBcUFJFR19TUExJVF9ERUxJTV9DQVBUVVJFIHwgXFBSRUdfU1BMSVRfTk9fRU1QVFkpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgICRsZW5ndGggPSBtYl9zdHJsZW4oJHN0cmluZywgJGVuY29kaW5nKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkgKz0gJHNwbGl0X2xlbmd0aCkgewogICAgICAgICAgICAkcmVzdWx0W10gPSBtYl9zdWJzdHIoJHN0cmluZywgJGksICRzcGxpdF9sZW5ndGgsICRlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnRvbG93ZXIoJHMsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkcywgXE1CX0NBU0VfTE9XRVIsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJ0b3VwcGVyKCRzLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJHMsIFxNQl9DQVNFX1VQUEVSLCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3Vic3RpdHV0ZV9jaGFyYWN0ZXIoJGMgPSBudWxsKQogICAgewogICAgICAgIGlmIChudWxsID09PSAkYykgewogICAgICAgICAgICByZXR1cm4gJ25vbmUnOwogICAgICAgIH0KICAgICAgICBpZiAoMCA9PT0gc3RyY2FzZWNtcCgkYywgJ25vbmUnKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKDgwMDAwID4gXFBIUF9WRVJTSU9OX0lEKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKFxpc19pbnQoJGMpIHx8ICdsb25nJyA9PT0gJGMgfHwgJ2VudGl0eScgPT09ICRjKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcVmFsdWVFcnJvcignQXJndW1lbnQgIzEgKCRzdWJzdGl0dXRlX2NoYXJhY3RlcikgbXVzdCBiZSAibm9uZSIsICJsb25nIiwgImVudGl0eSIgb3IgYSB2YWxpZCBjb2RlcG9pbnQnKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N1YnN0cigkcywgJHN0YXJ0LCAkbGVuZ3RoID0gbnVsbCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwogICAgICAgIGlmICgnQ1A4NTAnID09PSAkZW5jb2RpbmcgfHwgJ0FTQ0lJJyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSBzdWJzdHIoJHMsICRzdGFydCwgbnVsbCA9PT0gJGxlbmd0aCA/IDIxNDc0ODM2NDcgOiAkbGVuZ3RoKTsKICAgICAgICB9CgogICAgICAgIGlmICgkc3RhcnQgPCAwKSB7CiAgICAgICAgICAgICRzdGFydCA9IGljb252X3N0cmxlbigkcywgJGVuY29kaW5nKSArICRzdGFydDsKICAgICAgICAgICAgaWYgKCRzdGFydCA8IDApIHsKICAgICAgICAgICAgICAgICRzdGFydCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkbGVuZ3RoKSB7CiAgICAgICAgICAgICRsZW5ndGggPSAyMTQ3NDgzNjQ3OwogICAgICAgIH0gZWxzZWlmICgkbGVuZ3RoIDwgMCkgewogICAgICAgICAgICAkbGVuZ3RoID0gaWNvbnZfc3RybGVuKCRzLCAkZW5jb2RpbmcpICsgJGxlbmd0aCAtICRzdGFydDsKICAgICAgICAgICAgaWYgKCRsZW5ndGggPCAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAoc3RyaW5nKSBpY29udl9zdWJzdHIoJHMsICRzdGFydCwgJGxlbmd0aCwgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBbJGhheXN0YWNrLCAkbmVlZGxlXSA9IHN0cl9yZXBsYWNlKHNlbGY6OlNJTVBMRV9DQVNFX0ZPTERbMF0sIHNlbGY6OlNJTVBMRV9DQVNFX0ZPTERbMV0sIFsKICAgICAgICAgICAgc2VsZjo6bWJfY29udmVydF9jYXNlKCRoYXlzdGFjaywgXE1CX0NBU0VfTE9XRVIsICRlbmNvZGluZyksCiAgICAgICAgICAgIHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkbmVlZGxlLCBcTUJfQ0FTRV9MT1dFUiwgJGVuY29kaW5nKSwKICAgICAgICBdKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX3N0cnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJpc3RyKCRoYXlzdGFjaywgJG5lZWRsZSwgJHBhcnQgPSBmYWxzZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkcG9zID0gc2VsZjo6bWJfc3RyaXBvcygkaGF5c3RhY2ssICRuZWVkbGUsIDAsICRlbmNvZGluZyk7CgogICAgICAgIHJldHVybiBzZWxmOjpnZXRTdWJwYXJ0KCRwb3MsICRwYXJ0LCAkaGF5c3RhY2ssICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJyY2hyKCRoYXlzdGFjaywgJG5lZWRsZSwgJHBhcnQgPSBmYWxzZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwogICAgICAgIGlmICgnQ1A4NTAnID09PSAkZW5jb2RpbmcgfHwgJ0FTQ0lJJyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRwb3MgPSBzdHJycG9zKCRoYXlzdGFjaywgJG5lZWRsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG5lZWRsZSA9IHNlbGY6Om1iX3N1YnN0cigkbmVlZGxlLCAwLCAxLCAkZW5jb2RpbmcpOwogICAgICAgICAgICAkcG9zID0gaWNvbnZfc3RycnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VicGFydCgkcG9zLCAkcGFydCwgJGhheXN0YWNrLCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3RycmljaHIoJGhheXN0YWNrLCAkbmVlZGxlLCAkcGFydCA9IGZhbHNlLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRuZWVkbGUgPSBzZWxmOjptYl9zdWJzdHIoJG5lZWRsZSwgMCwgMSwgJGVuY29kaW5nKTsKICAgICAgICAkcG9zID0gc2VsZjo6bWJfc3Rycmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkZW5jb2RpbmcpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VicGFydCgkcG9zLCAkcGFydCwgJGhheXN0YWNrLCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3Rycmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkaGF5c3RhY2sgPSBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJGhheXN0YWNrLCBcTUJfQ0FTRV9MT1dFUiwgJGVuY29kaW5nKTsKICAgICAgICAkbmVlZGxlID0gc2VsZjo6bWJfY29udmVydF9jYXNlKCRuZWVkbGUsIFxNQl9DQVNFX0xPV0VSLCAkZW5jb2RpbmcpOwoKICAgICAgICAkaGF5c3RhY2sgPSBzdHJfcmVwbGFjZShzZWxmOjpTSU1QTEVfQ0FTRV9GT0xEWzBdLCBzZWxmOjpTSU1QTEVfQ0FTRV9GT0xEWzFdLCAkaGF5c3RhY2spOwogICAgICAgICRuZWVkbGUgPSBzdHJfcmVwbGFjZShzZWxmOjpTSU1QTEVfQ0FTRV9GT0xEWzBdLCBzZWxmOjpTSU1QTEVfQ0FTRV9GT0xEWzFdLCAkbmVlZGxlKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX3N0cnJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0LCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3Ryc3RyKCRoYXlzdGFjaywgJG5lZWRsZSwgJHBhcnQgPSBmYWxzZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkcG9zID0gc3RycG9zKCRoYXlzdGFjaywgJG5lZWRsZSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkcG9zKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRwYXJ0KSB7CiAgICAgICAgICAgIHJldHVybiBzdWJzdHIoJGhheXN0YWNrLCAwLCAkcG9zKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdWJzdHIoJGhheXN0YWNrLCAkcG9zKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2dldF9pbmZvKCR0eXBlID0gJ2FsbCcpCiAgICB7CiAgICAgICAgJGluZm8gPSBbCiAgICAgICAgICAgICdpbnRlcm5hbF9lbmNvZGluZycgPT4gc2VsZjo6JGludGVybmFsRW5jb2RpbmcsCiAgICAgICAgICAgICdodHRwX291dHB1dCcgPT4gJ3Bhc3MnLAogICAgICAgICAgICAnaHR0cF9vdXRwdXRfY29udl9taW1ldHlwZXMnID0+ICdeKHRleHQvfGFwcGxpY2F0aW9uL3hodG1sXCt4bWwpJywKICAgICAgICAgICAgJ2Z1bmNfb3ZlcmxvYWQnID0+IDAsCiAgICAgICAgICAgICdmdW5jX292ZXJsb2FkX2xpc3QnID0+ICdubyBvdmVybG9hZCcsCiAgICAgICAgICAgICdtYWlsX2NoYXJzZXQnID0+ICdVVEYtOCcsCiAgICAgICAgICAgICdtYWlsX2hlYWRlcl9lbmNvZGluZycgPT4gJ0JBU0U2NCcsCiAgICAgICAgICAgICdtYWlsX2JvZHlfZW5jb2RpbmcnID0+ICdCQVNFNjQnLAogICAgICAgICAgICAnaWxsZWdhbF9jaGFycycgPT4gMCwKICAgICAgICAgICAgJ2VuY29kaW5nX3RyYW5zbGF0aW9uJyA9PiAnT2ZmJywKICAgICAgICAgICAgJ2xhbmd1YWdlJyA9PiBzZWxmOjokbGFuZ3VhZ2UsCiAgICAgICAgICAgICdkZXRlY3Rfb3JkZXInID0+IHNlbGY6OiRlbmNvZGluZ0xpc3QsCiAgICAgICAgICAgICdzdWJzdGl0dXRlX2NoYXJhY3RlcicgPT4gJ25vbmUnLAogICAgICAgICAgICAnc3RyaWN0X2RldGVjdGlvbicgPT4gJ09mZicsCiAgICAgICAgXTsKCiAgICAgICAgaWYgKCdhbGwnID09PSAkdHlwZSkgewogICAgICAgICAgICByZXR1cm4gJGluZm87CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkaW5mb1skdHlwZV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkaW5mb1skdHlwZV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9odHRwX2lucHV0KCR0eXBlID0gJycpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfaHR0cF9vdXRwdXQoJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJGVuY29kaW5nID8gJ3Bhc3MnID09PSAkZW5jb2RpbmcgOiAncGFzcyc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJ3aWR0aCgkcywgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ1VURi04JyAhPT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRzID0gc2VsZjo6aWNvbnYoJGVuY29kaW5nLCAnVVRGLTgnLCAkcyk7CiAgICAgICAgfQoKICAgICAgICAkcyA9IHByZWdfcmVwbGFjZSgnL1tceHsxMTAwfS1ceHsxMTVGfVx4ezIzMjl9XHh7MjMyQX1ceHsyRTgwfS1ceHszMDNFfVx4ezMwNDB9LVx4e0E0Q0Z9XHh7QUMwMH0tXHh7RDdBM31ceHtGOTAwfS1ceHtGQUZGfVx4e0ZFMTB9LVx4e0ZFMTl9XHh7RkUzMH0tXHh7RkU2Rn1ceHtGRjAwfS1ceHtGRjYwfVx4e0ZGRTB9LVx4e0ZGRTZ9XHh7MjAwMDB9LVx4ezJGRkZEfVx4ezMwMDAwfS1ceHszRkZGRH1dL3UnLCAnJywgJHMsIC0xLCAkd2lkZSk7CgogICAgICAgIHJldHVybiAoJHdpZGUgPDwgMSkgKyBpY29udl9zdHJsZW4oJHMsICdVVEYtOCcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3Vic3RyX2NvdW50KCRoYXlzdGFjaywgJG5lZWRsZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gc3Vic3RyX2NvdW50KCRoYXlzdGFjaywgJG5lZWRsZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9vdXRwdXRfaGFuZGxlcigkY29udGVudHMsICRzdGF0dXMpCiAgICB7CiAgICAgICAgcmV0dXJuICRjb250ZW50czsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2NocigkY29kZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoMHg4MCA+ICRjb2RlICU9IDB4MjAwMDAwKSB7CiAgICAgICAgICAgICRzID0gXGNocigkY29kZSk7CiAgICAgICAgfSBlbHNlaWYgKDB4ODAwID4gJGNvZGUpIHsKICAgICAgICAgICAgJHMgPSBcY2hyKDB4QzAgfCAkY29kZSA+PiA2KS5cY2hyKDB4ODAgfCAkY29kZSAmIDB4M0YpOwogICAgICAgIH0gZWxzZWlmICgweDEwMDAwID4gJGNvZGUpIHsKICAgICAgICAgICAgJHMgPSBcY2hyKDB4RTAgfCAkY29kZSA+PiAxMikuXGNocigweDgwIHwgJGNvZGUgPj4gNiAmIDB4M0YpLlxjaHIoMHg4MCB8ICRjb2RlICYgMHgzRik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHMgPSBcY2hyKDB4RjAgfCAkY29kZSA+PiAxOCkuXGNocigweDgwIHwgJGNvZGUgPj4gMTIgJiAweDNGKS5cY2hyKDB4ODAgfCAkY29kZSA+PiA2ICYgMHgzRikuXGNocigweDgwIHwgJGNvZGUgJiAweDNGKTsKICAgICAgICB9CgogICAgICAgIGlmICgnVVRGLTgnICE9PSAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgICRzID0gbWJfY29udmVydF9lbmNvZGluZygkcywgJGVuY29kaW5nLCAnVVRGLTgnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX29yZCgkcywgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJ1VURi04JyAhPT0gJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKSkgewogICAgICAgICAgICAkcyA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJHMsICdVVEYtOCcsICRlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoMSA9PT0gXHN0cmxlbigkcykpIHsKICAgICAgICAgICAgcmV0dXJuIFxvcmQoJHMpOwogICAgICAgIH0KCiAgICAgICAgJGNvZGUgPSAoJHMgPSB1bnBhY2soJ0MqJywgc3Vic3RyKCRzLCAwLCA0KSkpID8gJHNbMV0gOiAwOwogICAgICAgIGlmICgweEYwIDw9ICRjb2RlKSB7CiAgICAgICAgICAgIHJldHVybiAoKCRjb2RlIC0gMHhGMCkgPDwgMTgpICsgKCgkc1syXSAtIDB4ODApIDw8IDEyKSArICgoJHNbM10gLSAweDgwKSA8PCA2KSArICRzWzRdIC0gMHg4MDsKICAgICAgICB9CiAgICAgICAgaWYgKDB4RTAgPD0gJGNvZGUpIHsKICAgICAgICAgICAgcmV0dXJuICgoJGNvZGUgLSAweEUwKSA8PCAxMikgKyAoKCRzWzJdIC0gMHg4MCkgPDwgNikgKyAkc1szXSAtIDB4ODA7CiAgICAgICAgfQogICAgICAgIGlmICgweEMwIDw9ICRjb2RlKSB7CiAgICAgICAgICAgIHJldHVybiAoKCRjb2RlIC0gMHhDMCkgPDwgNikgKyAkc1syXSAtIDB4ODA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvZGU7CiAgICB9CgogICAgLyoqIEByZXR1cm4gc3RyaW5nfGZhbHNlICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3NjcnViKD9zdHJpbmcgJHN0cmluZywgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjptYl9pbnRlcm5hbF9lbmNvZGluZygpOwogICAgICAgIH0gZWxzZWlmICghc2VsZjo6YXNzZXJ0RW5jb2RpbmcoJGVuY29kaW5nLCAnbWJfc2NydWIoKTogQXJndW1lbnQgIzIgKCRlbmNvZGluZykgbXVzdCBiZSBhIHZhbGlkIGVuY29kaW5nLCAiJXMiIGdpdmVuJykpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX2NvbnZlcnRfZW5jb2RpbmcoKHN0cmluZykgJHN0cmluZywgJGVuY29kaW5nLCAkZW5jb2RpbmcpOwogICAgfQoKICAgIC8qKiBAcmV0dXJuIHN0cmluZ3xmYWxzZSAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJfcGFkKHN0cmluZyAkc3RyaW5nLCBpbnQgJGxlbmd0aCwgc3RyaW5nICRwYWRfc3RyaW5nID0gJyAnLCBpbnQgJHBhZF90eXBlID0gXFNUUl9QQURfUklHSFQsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9IHNlbGY6Om1iX2ludGVybmFsX2VuY29kaW5nKCk7CiAgICAgICAgfSBlbHNlaWYgKCFzZWxmOjphc3NlcnRFbmNvZGluZygkZW5jb2RpbmcsICdtYl9zdHJfcGFkKCk6IEFyZ3VtZW50ICM1ICgkZW5jb2RpbmcpIG11c3QgYmUgYSB2YWxpZCBlbmNvZGluZywgIiVzIiBnaXZlbicpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChzZWxmOjptYl9zdHJsZW4oJHBhZF9zdHJpbmcsICRlbmNvZGluZykgPD0gMCkgewogICAgICAgICAgICBpZiAoXFBIUF9WRVJTSU9OX0lEIDwgODAwMDApIHsKICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJ21iX3N0cl9wYWQoKTogQXJndW1lbnQgIzMgKCRwYWRfc3RyaW5nKSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycsIFxFX1VTRVJfV0FSTklORyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyBuZXcgXFZhbHVlRXJyb3IoJ21iX3N0cl9wYWQoKTogQXJndW1lbnQgIzMgKCRwYWRfc3RyaW5nKSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaW5fYXJyYXkoJHBhZF90eXBlLCBbXFNUUl9QQURfUklHSFQsIFxTVFJfUEFEX0xFRlQsIFxTVFJfUEFEX0JPVEhdLCB0cnVlKSkgewogICAgICAgICAgICBpZiAoXFBIUF9WRVJTSU9OX0lEIDwgODAwMDApIHsKICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJ21iX3N0cl9wYWQoKTogQXJndW1lbnQgIzQgKCRwYWRfdHlwZSkgbXVzdCBiZSBTVFJfUEFEX0xFRlQsIFNUUl9QQURfUklHSFQsIG9yIFNUUl9QQURfQk9USCcsIFxFX1VTRVJfV0FSTklORyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyBuZXcgXFZhbHVlRXJyb3IoJ21iX3N0cl9wYWQoKTogQXJndW1lbnQgIzQgKCRwYWRfdHlwZSkgbXVzdCBiZSBTVFJfUEFEX0xFRlQsIFNUUl9QQURfUklHSFQsIG9yIFNUUl9QQURfQk9USCcpOwogICAgICAgIH0KCiAgICAgICAgJHBhZGRpbmdSZXF1aXJlZCA9ICRsZW5ndGggLSBzZWxmOjptYl9zdHJsZW4oJHN0cmluZywgJGVuY29kaW5nKTsKCiAgICAgICAgaWYgKCRwYWRkaW5nUmVxdWlyZWQgPCAxKSB7CiAgICAgICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkcGFkX3R5cGUpIHsKICAgICAgICAgICAgY2FzZSBcU1RSX1BBRF9MRUZUOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1iX3N1YnN0cihzdHJfcmVwZWF0KCRwYWRfc3RyaW5nLCAkcGFkZGluZ1JlcXVpcmVkKSwgMCwgJHBhZGRpbmdSZXF1aXJlZCwgJGVuY29kaW5nKS4kc3RyaW5nOwogICAgICAgICAgICBjYXNlIFxTVFJfUEFEX1JJR0hUOgogICAgICAgICAgICAgICAgcmV0dXJuICRzdHJpbmcuc2VsZjo6bWJfc3Vic3RyKHN0cl9yZXBlYXQoJHBhZF9zdHJpbmcsICRwYWRkaW5nUmVxdWlyZWQpLCAwLCAkcGFkZGluZ1JlcXVpcmVkLCAkZW5jb2RpbmcpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgJGxlZnRQYWRkaW5nTGVuZ3RoID0gZmxvb3IoJHBhZGRpbmdSZXF1aXJlZCAvIDIpOwogICAgICAgICAgICAgICAgJHJpZ2h0UGFkZGluZ0xlbmd0aCA9ICRwYWRkaW5nUmVxdWlyZWQgLSAkbGVmdFBhZGRpbmdMZW5ndGg7CgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1iX3N1YnN0cihzdHJfcmVwZWF0KCRwYWRfc3RyaW5nLCAkbGVmdFBhZGRpbmdMZW5ndGgpLCAwLCAkbGVmdFBhZGRpbmdMZW5ndGgsICRlbmNvZGluZykuJHN0cmluZy5zZWxmOjptYl9zdWJzdHIoc3RyX3JlcGVhdCgkcGFkX3N0cmluZywgJHJpZ2h0UGFkZGluZ0xlbmd0aCksIDAsICRyaWdodFBhZGRpbmdMZW5ndGgsICRlbmNvZGluZyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBAcmV0dXJuIHN0cmluZ3xmYWxzZSAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl91Y2ZpcnN0KHN0cmluZyAkc3RyaW5nLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjptYl9pbnRlcm5hbF9lbmNvZGluZygpOwogICAgICAgIH0gZWxzZWlmICghc2VsZjo6YXNzZXJ0RW5jb2RpbmcoJGVuY29kaW5nLCAnbWJfdWNmaXJzdCgpOiBBcmd1bWVudCAjMiAoJGVuY29kaW5nKSBtdXN0IGJlIGEgdmFsaWQgZW5jb2RpbmcsICIlcyIgZ2l2ZW4nKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkZmlyc3RDaGFyID0gbWJfc3Vic3RyKCRzdHJpbmcsIDAsIDEsICRlbmNvZGluZyk7CiAgICAgICAgJGZpcnN0Q2hhciA9IG1iX2NvbnZlcnRfY2FzZSgkZmlyc3RDaGFyLCBcTUJfQ0FTRV9USVRMRSwgJGVuY29kaW5nKTsKCiAgICAgICAgcmV0dXJuICRmaXJzdENoYXIubWJfc3Vic3RyKCRzdHJpbmcsIDEsIG51bGwsICRlbmNvZGluZyk7CiAgICB9CgogICAgLyoqIEByZXR1cm4gc3RyaW5nfGZhbHNlICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2xjZmlyc3Qoc3RyaW5nICRzdHJpbmcsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9IHNlbGY6Om1iX2ludGVybmFsX2VuY29kaW5nKCk7CiAgICAgICAgfSBlbHNlaWYgKCFzZWxmOjphc3NlcnRFbmNvZGluZygkZW5jb2RpbmcsICdtYl9sY2ZpcnN0KCk6IEFyZ3VtZW50ICMyICgkZW5jb2RpbmcpIG11c3QgYmUgYSB2YWxpZCBlbmNvZGluZywgIiVzIiBnaXZlbicpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRmaXJzdENoYXIgPSBtYl9zdWJzdHIoJHN0cmluZywgMCwgMSwgJGVuY29kaW5nKTsKICAgICAgICAkZmlyc3RDaGFyID0gbWJfY29udmVydF9jYXNlKCRmaXJzdENoYXIsIFxNQl9DQVNFX0xPV0VSLCAkZW5jb2RpbmcpOwoKICAgICAgICByZXR1cm4gJGZpcnN0Q2hhci5tYl9zdWJzdHIoJHN0cmluZywgMSwgbnVsbCwgJGVuY29kaW5nKTsKICAgIH0KCiAgICAvKiogQHJldHVybiBzdHJpbmd8ZmFsc2UgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfdHJpbShzdHJpbmcgJHN0cmluZywgP3N0cmluZyAkY2hhcmFjdGVycyA9IG51bGwsID9zdHJpbmcgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6bWJfaW50ZXJuYWxfdHJpbSgne15bJXNdK3xbJTEkc10rJH1EdScsICRzdHJpbmcsICRjaGFyYWN0ZXJzLCAkZW5jb2RpbmcsIF9fRlVOQ1RJT05fXyk7CiAgICB9CgogICAgLyoqIEByZXR1cm4gc3RyaW5nfGZhbHNlICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2x0cmltKHN0cmluZyAkc3RyaW5nLCA/c3RyaW5nICRjaGFyYWN0ZXJzID0gbnVsbCwgP3N0cmluZyAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjptYl9pbnRlcm5hbF90cmltKCd7Xlslc10rfUR1JywgJHN0cmluZywgJGNoYXJhY3RlcnMsICRlbmNvZGluZywgX19GVU5DVElPTl9fKTsKICAgIH0KCiAgICAvKiogQHJldHVybiBzdHJpbmd8ZmFsc2UgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfcnRyaW0oc3RyaW5nICRzdHJpbmcsID9zdHJpbmcgJGNoYXJhY3RlcnMgPSBudWxsLCA/c3RyaW5nICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX2ludGVybmFsX3RyaW0oJ3tbJXNdKyR9RHUnLCAkc3RyaW5nLCAkY2hhcmFjdGVycywgJGVuY29kaW5nLCBfX0ZVTkNUSU9OX18pOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFN1YnBhcnQoJHBvcywgJHBhcnQsICRoYXlzdGFjaywgJGVuY29kaW5nKQogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gJHBvcykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgkcGFydCkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6bWJfc3Vic3RyKCRoYXlzdGFjaywgMCwgJHBvcywgJGVuY29kaW5nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjptYl9zdWJzdHIoJGhheXN0YWNrLCAkcG9zLCBudWxsLCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGh0bWxfZW5jb2RpbmdfY2FsbGJhY2soYXJyYXkgJG0pCiAgICB7CiAgICAgICAgJGkgPSAxOwogICAgICAgICRlbnRpdGllcyA9ICcnOwogICAgICAgICRtID0gdW5wYWNrKCdDKicsIGh0bWxlbnRpdGllcygkbVswXSwgXEVOVF9DT01QQVQsICdVVEYtOCcpKTsKCiAgICAgICAgd2hpbGUgKGlzc2V0KCRtWyRpXSkpIHsKICAgICAgICAgICAgaWYgKDB4ODAgPiAkbVskaV0pIHsKICAgICAgICAgICAgICAgICRlbnRpdGllcyAuPSBcY2hyKCRtWyRpKytdKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgweEYwIDw9ICRtWyRpXSkgewogICAgICAgICAgICAgICAgJGMgPSAoKCRtWyRpKytdIC0gMHhGMCkgPDwgMTgpICsgKCgkbVskaSsrXSAtIDB4ODApIDw8IDEyKSArICgoJG1bJGkrK10gLSAweDgwKSA8PCA2KSArICRtWyRpKytdIC0gMHg4MDsKICAgICAgICAgICAgfSBlbHNlaWYgKDB4RTAgPD0gJG1bJGldKSB7CiAgICAgICAgICAgICAgICAkYyA9ICgoJG1bJGkrK10gLSAweEUwKSA8PCAxMikgKyAoKCRtWyRpKytdIC0gMHg4MCkgPDwgNikgKyAkbVskaSsrXSAtIDB4ODA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkYyA9ICgoJG1bJGkrK10gLSAweEMwKSA8PCA2KSArICRtWyRpKytdIC0gMHg4MDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVudGl0aWVzIC49ICcmIycuJGMuJzsnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbnRpdGllczsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0aXRsZV9jYXNlKGFycmF5ICRzKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJHNbMV0sIFxNQl9DQVNFX1VQUEVSLCAnVVRGLTgnKS5zZWxmOjptYl9jb252ZXJ0X2Nhc2UoJHNbMl0sIFxNQl9DQVNFX0xPV0VSLCAnVVRGLTgnKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXREYXRhKCRmaWxlKQogICAgewogICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9IF9fRElSX18uJy9SZXNvdXJjZXMvdW5pZGF0YS8nLiRmaWxlLicucGhwJykpIHsKICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUgJGZpbGU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RW5jb2RpbmcoJGVuY29kaW5nKQogICAgewogICAgICAgIGlmIChudWxsID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRpbnRlcm5hbEVuY29kaW5nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdVVEYtOCcgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gJ1VURi04JzsKICAgICAgICB9CgogICAgICAgICRlbmNvZGluZyA9IHN0cnRvdXBwZXIoJGVuY29kaW5nKTsKCiAgICAgICAgaWYgKCc4QklUJyA9PT0gJGVuY29kaW5nIHx8ICdCSU5BUlknID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICdDUDg1MCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJ1VURjgnID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICdVVEYtOCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJ1VURi0zMicgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gJ1VURi0zMkJFJzsKICAgICAgICB9CgogICAgICAgIGlmICgnVVRGLTE2JyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiAnVVRGLTE2QkUnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbmNvZGluZzsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpY29udigkZnJvbUVuY29kaW5nLCAkdG9FbmNvZGluZywgJHMpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09IHNlbGY6OiRpY29udlN1cHBvcnRzSWdub3JlKSB7CiAgICAgICAgICAgIHNlbGY6OiRpY29udlN1cHBvcnRzSWdub3JlID0gZmFsc2UgIT09IEBpY29udignVVRGLTgnLCAnVVRGLTgvL0lHTk9SRScsICcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjokaWNvbnZTdXBwb3J0c0lnbm9yZQogICAgICAgICAgICA/IGljb252KCRmcm9tRW5jb2RpbmcsICR0b0VuY29kaW5nLicvL0lHTk9SRScsICRzKQogICAgICAgICAgICA6IGljb252KCRmcm9tRW5jb2RpbmcsICR0b0VuY29kaW5nLCAkcyk7CiAgICB9CgogICAgLyoqIEByZXR1cm4gc3RyaW5nfGZhbHNlICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBtYl9pbnRlcm5hbF90cmltKHN0cmluZyAkcmVnZXgsIHN0cmluZyAkc3RyaW5nLCA/c3RyaW5nICRjaGFyYWN0ZXJzLCA/c3RyaW5nICRlbmNvZGluZywgc3RyaW5nICRmdW5jdGlvbikKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9IHNlbGY6Om1iX2ludGVybmFsX2VuY29kaW5nKCk7CiAgICAgICAgfSBlbHNlaWYgKCFzZWxmOjphc3NlcnRFbmNvZGluZygkZW5jb2RpbmcsICRmdW5jdGlvbi4nKCk6IEFyZ3VtZW50ICMzICgkZW5jb2RpbmcpIG11c3QgYmUgYSB2YWxpZCBlbmNvZGluZywgIiVzIiBnaXZlbicpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgnJyA9PT0gJGNoYXJhY3RlcnMpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGwgPT09ICRlbmNvZGluZyA/ICRzdHJpbmcgOiBzZWxmOjptYl9jb252ZXJ0X2VuY29kaW5nKCRzdHJpbmcsICRlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJ1VURi04JyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9IG51bGw7CiAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnLy91JywgJHN0cmluZykpIHsKICAgICAgICAgICAgICAgICRzdHJpbmcgPSBAc2VsZjo6aWNvbnYoJ1VURi04JywgJ1VURi04JywgJHN0cmluZyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG51bGwgIT09ICRjaGFyYWN0ZXJzICYmICFwcmVnX21hdGNoKCcvL3UnLCAkY2hhcmFjdGVycykpIHsKICAgICAgICAgICAgICAgICRjaGFyYWN0ZXJzID0gQHNlbGY6Omljb252KCdVVEYtOCcsICdVVEYtOCcsICRjaGFyYWN0ZXJzKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzdHJpbmcgPSBzZWxmOjppY29udigkZW5jb2RpbmcsICdVVEYtOCcsICRzdHJpbmcpOwoKICAgICAgICAgICAgaWYgKG51bGwgIT09ICRjaGFyYWN0ZXJzKSB7CiAgICAgICAgICAgICAgICAkY2hhcmFjdGVycyA9IHNlbGY6Omljb252KCRlbmNvZGluZywgJ1VURi04JywgJGNoYXJhY3RlcnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCA9PT0gJGNoYXJhY3RlcnMpIHsKICAgICAgICAgICAgJGNoYXJhY3RlcnMgPSAiXFwwIFxmXG5cclx0XHZcdXswMEEwfVx1ezE2ODB9XHV7MjAwMH1cdXsyMDAxfVx1ezIwMDJ9XHV7MjAwM31cdXsyMDA0fVx1ezIwMDV9XHV7MjAwNn1cdXsyMDA3fVx1ezIwMDh9XHV7MjAwOX1cdXsyMDBBfVx1ezIwMjh9XHV7MjAyOX1cdXsyMDJGfVx1ezIwNUZ9XHV7MzAwMH1cdXswMDg1fVx1ezE4MEV9IjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY2hhcmFjdGVycyA9IHByZWdfcXVvdGUoJGNoYXJhY3RlcnMpOwogICAgICAgIH0KCiAgICAgICAgJHN0cmluZyA9IHByZWdfcmVwbGFjZShcc3ByaW50ZigkcmVnZXgsICRjaGFyYWN0ZXJzKSwgJycsICRzdHJpbmcpOwoKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6Omljb252KCdVVEYtOCcsICRlbmNvZGluZywgJHN0cmluZyk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gYXNzZXJ0RW5jb2Rpbmcoc3RyaW5nICRlbmNvZGluZywgc3RyaW5nICRlcnJvckZvcm1hdCk6IGJvb2wKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkdmFsaWRFbmNvZGluZyA9IEBzZWxmOjptYl9jaGVja19lbmNvZGluZygnJywgJGVuY29kaW5nKTsKICAgICAgICB9IGNhdGNoIChcVmFsdWVFcnJvciAkZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFZhbHVlRXJyb3IoXHNwcmludGYoJGVycm9yRm9ybWF0LCAkZW5jb2RpbmcpKTsKICAgICAgICB9CgogICAgICAgIGlmICghJHZhbGlkRW5jb2RpbmcpIHsKICAgICAgICAgICAgaWYgKDgwMDAwID4gXFBIUF9WRVJTSU9OX0lEKSB7CiAgICAgICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKFxzcHJpbnRmKCRlcnJvckZvcm1hdCwgJGVuY29kaW5nKSwgXEVfVVNFUl9XQVJOSU5HKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcVmFsdWVFcnJvcihcc3ByaW50ZigkZXJyb3JGb3JtYXQsICRlbmNvZGluZykpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbGlkRW5jb2Rpbmc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ltZm9ueSBQb2x5ZmlsbCAvIE1ic3RyaW5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSBwYXJ0aWFsLCBuYXRpdmUgUEhQIGltcGxlbWVudGF0aW9uIGZvciB0aGUKW01ic3RyaW5nXShodHRwczovL3BocC5uZXQvbWJzdHJpbmcpIGV4dGVuc2lvbi4KCk1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZQpbbWFpbiBQb2x5ZmlsbCBSRUFETUVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsL2Jsb2IvbWFpbi9SRUFETUUubWQpLgoKTGljZW5zZQo9PT09PT09CgpUaGlzIGxpYnJhcnkgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFtNSVQgbGljZW5zZV0oTElDRU5TRSkuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/Resources/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/Resources/unidata/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBbCiAgICAnxLAnID0+ICdpzIcnLAogICAgJ8K1JyA9PiAnzrwnLAogICAgJ8W/JyA9PiAncycsCiAgICAnzYUnID0+ICfOuScsCiAgICAnz4InID0+ICfPgycsCiAgICAnz5AnID0+ICfOsicsCiAgICAnz5EnID0+ICfOuCcsCiAgICAnz5UnID0+ICfPhicsCiAgICAnz5YnID0+ICfPgCcsCiAgICAnz7AnID0+ICfOuicsCiAgICAnz7EnID0+ICfPgScsCiAgICAnz7UnID0+ICfOtScsCiAgICAn4bqbJyA9PiAn4bmhJywKICAgICfhvr4nID0+ICfOuScsCiAgICAnw58nID0+ICdzcycsCiAgICAnxYknID0+ICfKvG4nLAogICAgJ8ewJyA9PiAnx7AnLAogICAgJ86QJyA9PiAnzpAnLAogICAgJ86wJyA9PiAnzrAnLAogICAgJ9aHJyA9PiAn1aXWgicsCiAgICAn4bqWJyA9PiAn4bqWJywKICAgICfhupcnID0+ICfhupcnLAogICAgJ+G6mCcgPT4gJ+G6mCcsCiAgICAn4bqZJyA9PiAn4bqZJywKICAgICfhuponID0+ICdhyr4nLAogICAgJ+G6nicgPT4gJ3NzJywKICAgICfhvZAnID0+ICfhvZAnLAogICAgJ+G9kicgPT4gJ+G9kicsCiAgICAn4b2UJyA9PiAn4b2UJywKICAgICfhvZYnID0+ICfhvZYnLAogICAgJ+G+gCcgPT4gJ+G8gM65JywKICAgICfhvoEnID0+ICfhvIHOuScsCiAgICAn4b6CJyA9PiAn4byCzrknLAogICAgJ+G+gycgPT4gJ+G8g865JywKICAgICfhvoQnID0+ICfhvITOuScsCiAgICAn4b6FJyA9PiAn4byFzrknLAogICAgJ+G+hicgPT4gJ+G8hs65JywKICAgICfhvocnID0+ICfhvIfOuScsCiAgICAn4b6IJyA9PiAn4byAzrknLAogICAgJ+G+iScgPT4gJ+G8gc65JywKICAgICfhvoonID0+ICfhvILOuScsCiAgICAn4b6LJyA9PiAn4byDzrknLAogICAgJ+G+jCcgPT4gJ+G8hM65JywKICAgICfhvo0nID0+ICfhvIXOuScsCiAgICAn4b6OJyA9PiAn4byGzrknLAogICAgJ+G+jycgPT4gJ+G8h865JywKICAgICfhvpAnID0+ICfhvKDOuScsCiAgICAn4b6RJyA9PiAn4byhzrknLAogICAgJ+G+kicgPT4gJ+G8os65JywKICAgICfhvpMnID0+ICfhvKPOuScsCiAgICAn4b6UJyA9PiAn4bykzrknLAogICAgJ+G+lScgPT4gJ+G8pc65JywKICAgICfhvpYnID0+ICfhvKbOuScsCiAgICAn4b6XJyA9PiAn4bynzrknLAogICAgJ+G+mCcgPT4gJ+G8oM65JywKICAgICfhvpknID0+ICfhvKHOuScsCiAgICAn4b6aJyA9PiAn4byizrknLAogICAgJ+G+mycgPT4gJ+G8o865JywKICAgICfhvpwnID0+ICfhvKTOuScsCiAgICAn4b6dJyA9PiAn4bylzrknLAogICAgJ+G+nicgPT4gJ+G8ps65JywKICAgICfhvp8nID0+ICfhvKfOuScsCiAgICAn4b6gJyA9PiAn4b2gzrknLAogICAgJ+G+oScgPT4gJ+G9oc65JywKICAgICfhvqInID0+ICfhvaLOuScsCiAgICAn4b6jJyA9PiAn4b2jzrknLAogICAgJ+G+pCcgPT4gJ+G9pM65JywKICAgICfhvqUnID0+ICfhvaXOuScsCiAgICAn4b6mJyA9PiAn4b2mzrknLAogICAgJ+G+pycgPT4gJ+G9p865JywKICAgICfhvqgnID0+ICfhvaDOuScsCiAgICAn4b6pJyA9PiAn4b2hzrknLAogICAgJ+G+qicgPT4gJ+G9os65JywKICAgICfhvqsnID0+ICfhvaPOuScsCiAgICAn4b6sJyA9PiAn4b2kzrknLAogICAgJ+G+rScgPT4gJ+G9pc65JywKICAgICfhvq4nID0+ICfhvabOuScsCiAgICAn4b6vJyA9PiAn4b2nzrknLAogICAgJ+G+sicgPT4gJ+G9sM65JywKICAgICfhvrMnID0+ICfOsc65JywKICAgICfhvrQnID0+ICfOrM65JywKICAgICfhvrYnID0+ICfhvrYnLAogICAgJ+G+tycgPT4gJ+G+ts65JywKICAgICfhvrwnID0+ICfOsc65JywKICAgICfhv4InID0+ICfhvbTOuScsCiAgICAn4b+DJyA9PiAnzrfOuScsCiAgICAn4b+EJyA9PiAnzq7OuScsCiAgICAn4b+GJyA9PiAn4b+GJywKICAgICfhv4cnID0+ICfhv4bOuScsCiAgICAn4b+MJyA9PiAnzrfOuScsCiAgICAn4b+SJyA9PiAn4b+SJywKICAgICfhv5YnID0+ICfhv5YnLAogICAgJ+G/lycgPT4gJ+G/lycsCiAgICAn4b+iJyA9PiAn4b+iJywKICAgICfhv6QnID0+ICfhv6QnLAogICAgJ+G/picgPT4gJ+G/picsCiAgICAn4b+nJyA9PiAn4b+nJywKICAgICfhv7InID0+ICfhvbzOuScsCiAgICAn4b+zJyA9PiAnz4nOuScsCiAgICAn4b+0JyA9PiAnz47OuScsCiAgICAn4b+2JyA9PiAn4b+2JywKICAgICfhv7cnID0+ICfhv7bOuScsCiAgICAn4b+8JyA9PiAnz4nOuScsCiAgICAn76yAJyA9PiAnZmYnLAogICAgJ++sgScgPT4gJ2ZpJywKICAgICfvrIInID0+ICdmbCcsCiAgICAn76yDJyA9PiAnZmZpJywKICAgICfvrIQnID0+ICdmZmwnLAogICAgJ++shScgPT4gJ3N0JywKICAgICfvrIYnID0+ICdzdCcsCiAgICAn76yTJyA9PiAn1bTVticsCiAgICAn76yUJyA9PiAn1bTVpScsCiAgICAn76yVJyA9PiAn1bTVqycsCiAgICAn76yWJyA9PiAn1b7VticsCiAgICAn76yXJyA9PiAn1bTVrScsCl07Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSAoCiAgJ0EnID0+ICdhJywKICAnQicgPT4gJ2InLAogICdDJyA9PiAnYycsCiAgJ0QnID0+ICdkJywKICAnRScgPT4gJ2UnLAogICdGJyA9PiAnZicsCiAgJ0cnID0+ICdnJywKICAnSCcgPT4gJ2gnLAogICdJJyA9PiAnaScsCiAgJ0onID0+ICdqJywKICAnSycgPT4gJ2snLAogICdMJyA9PiAnbCcsCiAgJ00nID0+ICdtJywKICAnTicgPT4gJ24nLAogICdPJyA9PiAnbycsCiAgJ1AnID0+ICdwJywKICAnUScgPT4gJ3EnLAogICdSJyA9PiAncicsCiAgJ1MnID0+ICdzJywKICAnVCcgPT4gJ3QnLAogICdVJyA9PiAndScsCiAgJ1YnID0+ICd2JywKICAnVycgPT4gJ3cnLAogICdYJyA9PiAneCcsCiAgJ1knID0+ICd5JywKICAnWicgPT4gJ3onLAogICfDgCcgPT4gJ8OgJywKICAnw4EnID0+ICfDoScsCiAgJ8OCJyA9PiAnw6InLAogICfDgycgPT4gJ8OjJywKICAnw4QnID0+ICfDpCcsCiAgJ8OFJyA9PiAnw6UnLAogICfDhicgPT4gJ8OmJywKICAnw4cnID0+ICfDpycsCiAgJ8OIJyA9PiAnw6gnLAogICfDiScgPT4gJ8OpJywKICAnw4onID0+ICfDqicsCiAgJ8OLJyA9PiAnw6snLAogICfDjCcgPT4gJ8OsJywKICAnw40nID0+ICfDrScsCiAgJ8OOJyA9PiAnw64nLAogICfDjycgPT4gJ8OvJywKICAnw5AnID0+ICfDsCcsCiAgJ8ORJyA9PiAnw7EnLAogICfDkicgPT4gJ8OyJywKICAnw5MnID0+ICfDsycsCiAgJ8OUJyA9PiAnw7QnLAogICfDlScgPT4gJ8O1JywKICAnw5YnID0+ICfDticsCiAgJ8OYJyA9PiAnw7gnLAogICfDmScgPT4gJ8O5JywKICAnw5onID0+ICfDuicsCiAgJ8ObJyA9PiAnw7snLAogICfDnCcgPT4gJ8O8JywKICAnw50nID0+ICfDvScsCiAgJ8OeJyA9PiAnw74nLAogICfEgCcgPT4gJ8SBJywKICAnxIInID0+ICfEgycsCiAgJ8SEJyA9PiAnxIUnLAogICfEhicgPT4gJ8SHJywKICAnxIgnID0+ICfEiScsCiAgJ8SKJyA9PiAnxIsnLAogICfEjCcgPT4gJ8SNJywKICAnxI4nID0+ICfEjycsCiAgJ8SQJyA9PiAnxJEnLAogICfEkicgPT4gJ8STJywKICAnxJQnID0+ICfElScsCiAgJ8SWJyA9PiAnxJcnLAogICfEmCcgPT4gJ8SZJywKICAnxJonID0+ICfEmycsCiAgJ8ScJyA9PiAnxJ0nLAogICfEnicgPT4gJ8SfJywKICAnxKAnID0+ICfEoScsCiAgJ8SiJyA9PiAnxKMnLAogICfEpCcgPT4gJ8SlJywKICAnxKYnID0+ICfEpycsCiAgJ8SoJyA9PiAnxKknLAogICfEqicgPT4gJ8SrJywKICAnxKwnID0+ICfErScsCiAgJ8SuJyA9PiAnxK8nLAogICfEsCcgPT4gJ2nMhycsCiAgJ8SyJyA9PiAnxLMnLAogICfEtCcgPT4gJ8S1JywKICAnxLYnID0+ICfEtycsCiAgJ8S5JyA9PiAnxLonLAogICfEuycgPT4gJ8S8JywKICAnxL0nID0+ICfEvicsCiAgJ8S/JyA9PiAnxYAnLAogICfFgScgPT4gJ8WCJywKICAnxYMnID0+ICfFhCcsCiAgJ8WFJyA9PiAnxYYnLAogICfFhycgPT4gJ8WIJywKICAnxYonID0+ICfFiycsCiAgJ8WMJyA9PiAnxY0nLAogICfFjicgPT4gJ8WPJywKICAnxZAnID0+ICfFkScsCiAgJ8WSJyA9PiAnxZMnLAogICfFlCcgPT4gJ8WVJywKICAnxZYnID0+ICfFlycsCiAgJ8WYJyA9PiAnxZknLAogICfFmicgPT4gJ8WbJywKICAnxZwnID0+ICfFnScsCiAgJ8WeJyA9PiAnxZ8nLAogICfFoCcgPT4gJ8WhJywKICAnxaInID0+ICfFoycsCiAgJ8WkJyA9PiAnxaUnLAogICfFpicgPT4gJ8WnJywKICAnxagnID0+ICfFqScsCiAgJ8WqJyA9PiAnxasnLAogICfFrCcgPT4gJ8WtJywKICAnxa4nID0+ICfFrycsCiAgJ8WwJyA9PiAnxbEnLAogICfFsicgPT4gJ8WzJywKICAnxbQnID0+ICfFtScsCiAgJ8W2JyA9PiAnxbcnLAogICfFuCcgPT4gJ8O/JywKICAnxbknID0+ICfFuicsCiAgJ8W7JyA9PiAnxbwnLAogICfFvScgPT4gJ8W+JywKICAnxoEnID0+ICfJkycsCiAgJ8aCJyA9PiAnxoMnLAogICfGhCcgPT4gJ8aFJywKICAnxoYnID0+ICfJlCcsCiAgJ8aHJyA9PiAnxognLAogICfGiScgPT4gJ8mWJywKICAnxoonID0+ICfJlycsCiAgJ8aLJyA9PiAnxownLAogICfGjicgPT4gJ8edJywKICAnxo8nID0+ICfJmScsCiAgJ8aQJyA9PiAnyZsnLAogICfGkScgPT4gJ8aSJywKICAnxpMnID0+ICfJoCcsCiAgJ8aUJyA9PiAnyaMnLAogICfGlicgPT4gJ8mpJywKICAnxpcnID0+ICfJqCcsCiAgJ8aYJyA9PiAnxpknLAogICfGnCcgPT4gJ8mvJywKICAnxp0nID0+ICfJsicsCiAgJ8afJyA9PiAnybUnLAogICfGoCcgPT4gJ8ahJywKICAnxqInID0+ICfGoycsCiAgJ8akJyA9PiAnxqUnLAogICfGpicgPT4gJ8qAJywKICAnxqcnID0+ICfGqCcsCiAgJ8apJyA9PiAnyoMnLAogICfGrCcgPT4gJ8atJywKICAnxq4nID0+ICfKiCcsCiAgJ8avJyA9PiAnxrAnLAogICfGsScgPT4gJ8qKJywKICAnxrInID0+ICfKiycsCiAgJ8azJyA9PiAnxrQnLAogICfGtScgPT4gJ8a2JywKICAnxrcnID0+ICfKkicsCiAgJ8a4JyA9PiAnxrknLAogICfGvCcgPT4gJ8a9JywKICAnx4QnID0+ICfHhicsCiAgJ8eFJyA9PiAnx4YnLAogICfHhycgPT4gJ8eJJywKICAnx4gnID0+ICfHiScsCiAgJ8eKJyA9PiAnx4wnLAogICfHiycgPT4gJ8eMJywKICAnx40nID0+ICfHjicsCiAgJ8ePJyA9PiAnx5AnLAogICfHkScgPT4gJ8eSJywKICAnx5MnID0+ICfHlCcsCiAgJ8eVJyA9PiAnx5YnLAogICfHlycgPT4gJ8eYJywKICAnx5knID0+ICfHmicsCiAgJ8ebJyA9PiAnx5wnLAogICfHnicgPT4gJ8efJywKICAnx6AnID0+ICfHoScsCiAgJ8eiJyA9PiAnx6MnLAogICfHpCcgPT4gJ8elJywKICAnx6YnID0+ICfHpycsCiAgJ8eoJyA9PiAnx6knLAogICfHqicgPT4gJ8erJywKICAnx6wnID0+ICfHrScsCiAgJ8euJyA9PiAnx68nLAogICfHsScgPT4gJ8ezJywKICAnx7InID0+ICfHsycsCiAgJ8e0JyA9PiAnx7UnLAogICfHticgPT4gJ8aVJywKICAnx7cnID0+ICfGvycsCiAgJ8e4JyA9PiAnx7knLAogICfHuicgPT4gJ8e7JywKICAnx7wnID0+ICfHvScsCiAgJ8e+JyA9PiAnx78nLAogICfIgCcgPT4gJ8iBJywKICAnyIInID0+ICfIgycsCiAgJ8iEJyA9PiAnyIUnLAogICfIhicgPT4gJ8iHJywKICAnyIgnID0+ICfIiScsCiAgJ8iKJyA9PiAnyIsnLAogICfIjCcgPT4gJ8iNJywKICAnyI4nID0+ICfIjycsCiAgJ8iQJyA9PiAnyJEnLAogICfIkicgPT4gJ8iTJywKICAnyJQnID0+ICfIlScsCiAgJ8iWJyA9PiAnyJcnLAogICfImCcgPT4gJ8iZJywKICAnyJonID0+ICfImycsCiAgJ8icJyA9PiAnyJ0nLAogICfInicgPT4gJ8ifJywKICAnyKAnID0+ICfGnicsCiAgJ8iiJyA9PiAnyKMnLAogICfIpCcgPT4gJ8ilJywKICAnyKYnID0+ICfIpycsCiAgJ8ioJyA9PiAnyKknLAogICfIqicgPT4gJ8irJywKICAnyKwnID0+ICfIrScsCiAgJ8iuJyA9PiAnyK8nLAogICfIsCcgPT4gJ8ixJywKICAnyLInID0+ICfIsycsCiAgJ8i6JyA9PiAn4rGlJywKICAnyLsnID0+ICfIvCcsCiAgJ8i9JyA9PiAnxponLAogICfIvicgPT4gJ+KxpicsCiAgJ8mBJyA9PiAnyYInLAogICfJgycgPT4gJ8aAJywKICAnyYQnID0+ICfKiScsCiAgJ8mFJyA9PiAnyownLAogICfJhicgPT4gJ8mHJywKICAnyYgnID0+ICfJiScsCiAgJ8mKJyA9PiAnyYsnLAogICfJjCcgPT4gJ8mNJywKICAnyY4nID0+ICfJjycsCiAgJ82wJyA9PiAnzbEnLAogICfNsicgPT4gJ82zJywKICAnzbYnID0+ICfNtycsCiAgJ82/JyA9PiAnz7MnLAogICfOhicgPT4gJ86sJywKICAnzognID0+ICfOrScsCiAgJ86JJyA9PiAnzq4nLAogICfOiicgPT4gJ86vJywKICAnzownID0+ICfPjCcsCiAgJ86OJyA9PiAnz40nLAogICfOjycgPT4gJ8+OJywKICAnzpEnID0+ICfOsScsCiAgJ86SJyA9PiAnzrInLAogICfOkycgPT4gJ86zJywKICAnzpQnID0+ICfOtCcsCiAgJ86VJyA9PiAnzrUnLAogICfOlicgPT4gJ862JywKICAnzpcnID0+ICfOtycsCiAgJ86YJyA9PiAnzrgnLAogICfOmScgPT4gJ865JywKICAnzponID0+ICfOuicsCiAgJ86bJyA9PiAnzrsnLAogICfOnCcgPT4gJ868JywKICAnzp0nID0+ICfOvScsCiAgJ86eJyA9PiAnzr4nLAogICfOnycgPT4gJ86/JywKICAnzqAnID0+ICfPgCcsCiAgJ86hJyA9PiAnz4EnLAogICfOoycgPT4gJ8+DJywKICAnzqQnID0+ICfPhCcsCiAgJ86lJyA9PiAnz4UnLAogICfOpicgPT4gJ8+GJywKICAnzqcnID0+ICfPhycsCiAgJ86oJyA9PiAnz4gnLAogICfOqScgPT4gJ8+JJywKICAnzqonID0+ICfPiicsCiAgJ86rJyA9PiAnz4snLAogICfPjycgPT4gJ8+XJywKICAnz5gnID0+ICfPmScsCiAgJ8+aJyA9PiAnz5snLAogICfPnCcgPT4gJ8+dJywKICAnz54nID0+ICfPnycsCiAgJ8+gJyA9PiAnz6EnLAogICfPoicgPT4gJ8+jJywKICAnz6QnID0+ICfPpScsCiAgJ8+mJyA9PiAnz6cnLAogICfPqCcgPT4gJ8+pJywKICAnz6onID0+ICfPqycsCiAgJ8+sJyA9PiAnz60nLAogICfPricgPT4gJ8+vJywKICAnz7QnID0+ICfOuCcsCiAgJ8+3JyA9PiAnz7gnLAogICfPuScgPT4gJ8+yJywKICAnz7onID0+ICfPuycsCiAgJ8+9JyA9PiAnzbsnLAogICfPvicgPT4gJ828JywKICAnz78nID0+ICfNvScsCiAgJ9CAJyA9PiAn0ZAnLAogICfQgScgPT4gJ9GRJywKICAn0IInID0+ICfRkicsCiAgJ9CDJyA9PiAn0ZMnLAogICfQhCcgPT4gJ9GUJywKICAn0IUnID0+ICfRlScsCiAgJ9CGJyA9PiAn0ZYnLAogICfQhycgPT4gJ9GXJywKICAn0IgnID0+ICfRmCcsCiAgJ9CJJyA9PiAn0ZknLAogICfQiicgPT4gJ9GaJywKICAn0IsnID0+ICfRmycsCiAgJ9CMJyA9PiAn0ZwnLAogICfQjScgPT4gJ9GdJywKICAn0I4nID0+ICfRnicsCiAgJ9CPJyA9PiAn0Z8nLAogICfQkCcgPT4gJ9CwJywKICAn0JEnID0+ICfQsScsCiAgJ9CSJyA9PiAn0LInLAogICfQkycgPT4gJ9CzJywKICAn0JQnID0+ICfQtCcsCiAgJ9CVJyA9PiAn0LUnLAogICfQlicgPT4gJ9C2JywKICAn0JcnID0+ICfQtycsCiAgJ9CYJyA9PiAn0LgnLAogICfQmScgPT4gJ9C5JywKICAn0JonID0+ICfQuicsCiAgJ9CbJyA9PiAn0LsnLAogICfQnCcgPT4gJ9C8JywKICAn0J0nID0+ICfQvScsCiAgJ9CeJyA9PiAn0L4nLAogICfQnycgPT4gJ9C/JywKICAn0KAnID0+ICfRgCcsCiAgJ9ChJyA9PiAn0YEnLAogICfQoicgPT4gJ9GCJywKICAn0KMnID0+ICfRgycsCiAgJ9CkJyA9PiAn0YQnLAogICfQpScgPT4gJ9GFJywKICAn0KYnID0+ICfRhicsCiAgJ9CnJyA9PiAn0YcnLAogICfQqCcgPT4gJ9GIJywKICAn0KknID0+ICfRiScsCiAgJ9CqJyA9PiAn0YonLAogICfQqycgPT4gJ9GLJywKICAn0KwnID0+ICfRjCcsCiAgJ9CtJyA9PiAn0Y0nLAogICfQricgPT4gJ9GOJywKICAn0K8nID0+ICfRjycsCiAgJ9GgJyA9PiAn0aEnLAogICfRoicgPT4gJ9GjJywKICAn0aQnID0+ICfRpScsCiAgJ9GmJyA9PiAn0acnLAogICfRqCcgPT4gJ9GpJywKICAn0aonID0+ICfRqycsCiAgJ9GsJyA9PiAn0a0nLAogICfRricgPT4gJ9GvJywKICAn0bAnID0+ICfRsScsCiAgJ9GyJyA9PiAn0bMnLAogICfRtCcgPT4gJ9G1JywKICAn0bYnID0+ICfRtycsCiAgJ9G4JyA9PiAn0bknLAogICfRuicgPT4gJ9G7JywKICAn0bwnID0+ICfRvScsCiAgJ9G+JyA9PiAn0b8nLAogICfSgCcgPT4gJ9KBJywKICAn0oonID0+ICfSiycsCiAgJ9KMJyA9PiAn0o0nLAogICfSjicgPT4gJ9KPJywKICAn0pAnID0+ICfSkScsCiAgJ9KSJyA9PiAn0pMnLAogICfSlCcgPT4gJ9KVJywKICAn0pYnID0+ICfSlycsCiAgJ9KYJyA9PiAn0pknLAogICfSmicgPT4gJ9KbJywKICAn0pwnID0+ICfSnScsCiAgJ9KeJyA9PiAn0p8nLAogICfSoCcgPT4gJ9KhJywKICAn0qInID0+ICfSoycsCiAgJ9KkJyA9PiAn0qUnLAogICfSpicgPT4gJ9KnJywKICAn0qgnID0+ICfSqScsCiAgJ9KqJyA9PiAn0qsnLAogICfSrCcgPT4gJ9KtJywKICAn0q4nID0+ICfSrycsCiAgJ9KwJyA9PiAn0rEnLAogICfSsicgPT4gJ9KzJywKICAn0rQnID0+ICfStScsCiAgJ9K2JyA9PiAn0rcnLAogICfSuCcgPT4gJ9K5JywKICAn0ronID0+ICfSuycsCiAgJ9K8JyA9PiAn0r0nLAogICfSvicgPT4gJ9K/JywKICAn04AnID0+ICfTjycsCiAgJ9OBJyA9PiAn04InLAogICfTgycgPT4gJ9OEJywKICAn04UnID0+ICfThicsCiAgJ9OHJyA9PiAn04gnLAogICfTiScgPT4gJ9OKJywKICAn04snID0+ICfTjCcsCiAgJ9ONJyA9PiAn044nLAogICfTkCcgPT4gJ9ORJywKICAn05InID0+ICfTkycsCiAgJ9OUJyA9PiAn05UnLAogICfTlicgPT4gJ9OXJywKICAn05gnID0+ICfTmScsCiAgJ9OaJyA9PiAn05snLAogICfTnCcgPT4gJ9OdJywKICAn054nID0+ICfTnycsCiAgJ9OgJyA9PiAn06EnLAogICfToicgPT4gJ9OjJywKICAn06QnID0+ICfTpScsCiAgJ9OmJyA9PiAn06cnLAogICfTqCcgPT4gJ9OpJywKICAn06onID0+ICfTqycsCiAgJ9OsJyA9PiAn060nLAogICfTricgPT4gJ9OvJywKICAn07AnID0+ICfTsScsCiAgJ9OyJyA9PiAn07MnLAogICfTtCcgPT4gJ9O1JywKICAn07YnID0+ICfTtycsCiAgJ9O4JyA9PiAn07knLAogICfTuicgPT4gJ9O7JywKICAn07wnID0+ICfTvScsCiAgJ9O+JyA9PiAn078nLAogICfUgCcgPT4gJ9SBJywKICAn1IInID0+ICfUgycsCiAgJ9SEJyA9PiAn1IUnLAogICfUhicgPT4gJ9SHJywKICAn1IgnID0+ICfUiScsCiAgJ9SKJyA9PiAn1IsnLAogICfUjCcgPT4gJ9SNJywKICAn1I4nID0+ICfUjycsCiAgJ9SQJyA9PiAn1JEnLAogICfUkicgPT4gJ9STJywKICAn1JQnID0+ICfUlScsCiAgJ9SWJyA9PiAn1JcnLAogICfUmCcgPT4gJ9SZJywKICAn1JonID0+ICfUmycsCiAgJ9ScJyA9PiAn1J0nLAogICfUnicgPT4gJ9SfJywKICAn1KAnID0+ICfUoScsCiAgJ9SiJyA9PiAn1KMnLAogICfUpCcgPT4gJ9SlJywKICAn1KYnID0+ICfUpycsCiAgJ9SoJyA9PiAn1KknLAogICfUqicgPT4gJ9SrJywKICAn1KwnID0+ICfUrScsCiAgJ9SuJyA9PiAn1K8nLAogICfUsScgPT4gJ9WhJywKICAn1LInID0+ICfVoicsCiAgJ9SzJyA9PiAn1aMnLAogICfUtCcgPT4gJ9WkJywKICAn1LUnID0+ICfVpScsCiAgJ9S2JyA9PiAn1aYnLAogICfUtycgPT4gJ9WnJywKICAn1LgnID0+ICfVqCcsCiAgJ9S5JyA9PiAn1aknLAogICfUuicgPT4gJ9WqJywKICAn1LsnID0+ICfVqycsCiAgJ9S8JyA9PiAn1awnLAogICfUvScgPT4gJ9WtJywKICAn1L4nID0+ICfVricsCiAgJ9S/JyA9PiAn1a8nLAogICfVgCcgPT4gJ9WwJywKICAn1YEnID0+ICfVsScsCiAgJ9WCJyA9PiAn1bInLAogICfVgycgPT4gJ9WzJywKICAn1YQnID0+ICfVtCcsCiAgJ9WFJyA9PiAn1bUnLAogICfVhicgPT4gJ9W2JywKICAn1YcnID0+ICfVtycsCiAgJ9WIJyA9PiAn1bgnLAogICfViScgPT4gJ9W5JywKICAn1YonID0+ICfVuicsCiAgJ9WLJyA9PiAn1bsnLAogICfVjCcgPT4gJ9W8JywKICAn1Y0nID0+ICfVvScsCiAgJ9WOJyA9PiAn1b4nLAogICfVjycgPT4gJ9W/JywKICAn1ZAnID0+ICfWgCcsCiAgJ9WRJyA9PiAn1oEnLAogICfVkicgPT4gJ9aCJywKICAn1ZMnID0+ICfWgycsCiAgJ9WUJyA9PiAn1oQnLAogICfVlScgPT4gJ9aFJywKICAn1ZYnID0+ICfWhicsCiAgJ+GCoCcgPT4gJ+K0gCcsCiAgJ+GCoScgPT4gJ+K0gScsCiAgJ+GCoicgPT4gJ+K0gicsCiAgJ+GCoycgPT4gJ+K0gycsCiAgJ+GCpCcgPT4gJ+K0hCcsCiAgJ+GCpScgPT4gJ+K0hScsCiAgJ+GCpicgPT4gJ+K0hicsCiAgJ+GCpycgPT4gJ+K0hycsCiAgJ+GCqCcgPT4gJ+K0iCcsCiAgJ+GCqScgPT4gJ+K0iScsCiAgJ+GCqicgPT4gJ+K0iicsCiAgJ+GCqycgPT4gJ+K0iycsCiAgJ+GCrCcgPT4gJ+K0jCcsCiAgJ+GCrScgPT4gJ+K0jScsCiAgJ+GCricgPT4gJ+K0jicsCiAgJ+GCrycgPT4gJ+K0jycsCiAgJ+GCsCcgPT4gJ+K0kCcsCiAgJ+GCsScgPT4gJ+K0kScsCiAgJ+GCsicgPT4gJ+K0kicsCiAgJ+GCsycgPT4gJ+K0kycsCiAgJ+GCtCcgPT4gJ+K0lCcsCiAgJ+GCtScgPT4gJ+K0lScsCiAgJ+GCticgPT4gJ+K0licsCiAgJ+GCtycgPT4gJ+K0lycsCiAgJ+GCuCcgPT4gJ+K0mCcsCiAgJ+GCuScgPT4gJ+K0mScsCiAgJ+GCuicgPT4gJ+K0micsCiAgJ+GCuycgPT4gJ+K0mycsCiAgJ+GCvCcgPT4gJ+K0nCcsCiAgJ+GCvScgPT4gJ+K0nScsCiAgJ+GCvicgPT4gJ+K0nicsCiAgJ+GCvycgPT4gJ+K0nycsCiAgJ+GDgCcgPT4gJ+K0oCcsCiAgJ+GDgScgPT4gJ+K0oScsCiAgJ+GDgicgPT4gJ+K0oicsCiAgJ+GDgycgPT4gJ+K0oycsCiAgJ+GDhCcgPT4gJ+K0pCcsCiAgJ+GDhScgPT4gJ+K0pScsCiAgJ+GDhycgPT4gJ+K0pycsCiAgJ+GDjScgPT4gJ+K0rScsCiAgJ+GOoCcgPT4gJ+qtsCcsCiAgJ+GOoScgPT4gJ+qtsScsCiAgJ+GOoicgPT4gJ+qtsicsCiAgJ+GOoycgPT4gJ+qtsycsCiAgJ+GOpCcgPT4gJ+qttCcsCiAgJ+GOpScgPT4gJ+qttScsCiAgJ+GOpicgPT4gJ+qtticsCiAgJ+GOpycgPT4gJ+qttycsCiAgJ+GOqCcgPT4gJ+qtuCcsCiAgJ+GOqScgPT4gJ+qtuScsCiAgJ+GOqicgPT4gJ+qtuicsCiAgJ+GOqycgPT4gJ+qtuycsCiAgJ+GOrCcgPT4gJ+qtvCcsCiAgJ+GOrScgPT4gJ+qtvScsCiAgJ+GOricgPT4gJ+qtvicsCiAgJ+GOrycgPT4gJ+qtvycsCiAgJ+GOsCcgPT4gJ+qugCcsCiAgJ+GOsScgPT4gJ+qugScsCiAgJ+GOsicgPT4gJ+qugicsCiAgJ+GOsycgPT4gJ+qugycsCiAgJ+GOtCcgPT4gJ+quhCcsCiAgJ+GOtScgPT4gJ+quhScsCiAgJ+GOticgPT4gJ+quhicsCiAgJ+GOtycgPT4gJ+quhycsCiAgJ+GOuCcgPT4gJ+quiCcsCiAgJ+GOuScgPT4gJ+quiScsCiAgJ+GOuicgPT4gJ+quiicsCiAgJ+GOuycgPT4gJ+quiycsCiAgJ+GOvCcgPT4gJ+qujCcsCiAgJ+GOvScgPT4gJ+qujScsCiAgJ+GOvicgPT4gJ+qujicsCiAgJ+GOvycgPT4gJ+qujycsCiAgJ+GPgCcgPT4gJ+qukCcsCiAgJ+GPgScgPT4gJ+qukScsCiAgJ+GPgicgPT4gJ+qukicsCiAgJ+GPgycgPT4gJ+qukycsCiAgJ+GPhCcgPT4gJ+qulCcsCiAgJ+GPhScgPT4gJ+qulScsCiAgJ+GPhicgPT4gJ+qulicsCiAgJ+GPhycgPT4gJ+qulycsCiAgJ+GPiCcgPT4gJ+qumCcsCiAgJ+GPiScgPT4gJ+qumScsCiAgJ+GPiicgPT4gJ+qumicsCiAgJ+GPiycgPT4gJ+qumycsCiAgJ+GPjCcgPT4gJ+qunCcsCiAgJ+GPjScgPT4gJ+qunScsCiAgJ+GPjicgPT4gJ+qunicsCiAgJ+GPjycgPT4gJ+qunycsCiAgJ+GPkCcgPT4gJ+quoCcsCiAgJ+GPkScgPT4gJ+quoScsCiAgJ+GPkicgPT4gJ+quoicsCiAgJ+GPkycgPT4gJ+quoycsCiAgJ+GPlCcgPT4gJ+qupCcsCiAgJ+GPlScgPT4gJ+qupScsCiAgJ+GPlicgPT4gJ+qupicsCiAgJ+GPlycgPT4gJ+qupycsCiAgJ+GPmCcgPT4gJ+quqCcsCiAgJ+GPmScgPT4gJ+quqScsCiAgJ+GPmicgPT4gJ+quqicsCiAgJ+GPmycgPT4gJ+quqycsCiAgJ+GPnCcgPT4gJ+qurCcsCiAgJ+GPnScgPT4gJ+qurScsCiAgJ+GPnicgPT4gJ+quricsCiAgJ+GPnycgPT4gJ+qurycsCiAgJ+GPoCcgPT4gJ+qusCcsCiAgJ+GPoScgPT4gJ+qusScsCiAgJ+GPoicgPT4gJ+qusicsCiAgJ+GPoycgPT4gJ+qusycsCiAgJ+GPpCcgPT4gJ+qutCcsCiAgJ+GPpScgPT4gJ+qutScsCiAgJ+GPpicgPT4gJ+quticsCiAgJ+GPpycgPT4gJ+qutycsCiAgJ+GPqCcgPT4gJ+quuCcsCiAgJ+GPqScgPT4gJ+quuScsCiAgJ+GPqicgPT4gJ+quuicsCiAgJ+GPqycgPT4gJ+quuycsCiAgJ+GPrCcgPT4gJ+quvCcsCiAgJ+GPrScgPT4gJ+quvScsCiAgJ+GPricgPT4gJ+quvicsCiAgJ+GPrycgPT4gJ+quvycsCiAgJ+GPsCcgPT4gJ+GPuCcsCiAgJ+GPsScgPT4gJ+GPuScsCiAgJ+GPsicgPT4gJ+GPuicsCiAgJ+GPsycgPT4gJ+GPuycsCiAgJ+GPtCcgPT4gJ+GPvCcsCiAgJ+GPtScgPT4gJ+GPvScsCiAgJ+GykCcgPT4gJ+GDkCcsCiAgJ+GykScgPT4gJ+GDkScsCiAgJ+GykicgPT4gJ+GDkicsCiAgJ+GykycgPT4gJ+GDkycsCiAgJ+GylCcgPT4gJ+GDlCcsCiAgJ+GylScgPT4gJ+GDlScsCiAgJ+GylicgPT4gJ+GDlicsCiAgJ+GylycgPT4gJ+GDlycsCiAgJ+GymCcgPT4gJ+GDmCcsCiAgJ+GymScgPT4gJ+GDmScsCiAgJ+GymicgPT4gJ+GDmicsCiAgJ+GymycgPT4gJ+GDmycsCiAgJ+GynCcgPT4gJ+GDnCcsCiAgJ+GynScgPT4gJ+GDnScsCiAgJ+GynicgPT4gJ+GDnicsCiAgJ+GynycgPT4gJ+GDnycsCiAgJ+GyoCcgPT4gJ+GDoCcsCiAgJ+GyoScgPT4gJ+GDoScsCiAgJ+GyoicgPT4gJ+GDoicsCiAgJ+GyoycgPT4gJ+GDoycsCiAgJ+GypCcgPT4gJ+GDpCcsCiAgJ+GypScgPT4gJ+GDpScsCiAgJ+GypicgPT4gJ+GDpicsCiAgJ+GypycgPT4gJ+GDpycsCiAgJ+GyqCcgPT4gJ+GDqCcsCiAgJ+GyqScgPT4gJ+GDqScsCiAgJ+GyqicgPT4gJ+GDqicsCiAgJ+GyqycgPT4gJ+GDqycsCiAgJ+GyrCcgPT4gJ+GDrCcsCiAgJ+GyrScgPT4gJ+GDrScsCiAgJ+GyricgPT4gJ+GDricsCiAgJ+GyrycgPT4gJ+GDrycsCiAgJ+GysCcgPT4gJ+GDsCcsCiAgJ+GysScgPT4gJ+GDsScsCiAgJ+GysicgPT4gJ+GDsicsCiAgJ+GysycgPT4gJ+GDsycsCiAgJ+GytCcgPT4gJ+GDtCcsCiAgJ+GytScgPT4gJ+GDtScsCiAgJ+GyticgPT4gJ+GDticsCiAgJ+GytycgPT4gJ+GDtycsCiAgJ+GyuCcgPT4gJ+GDuCcsCiAgJ+GyuScgPT4gJ+GDuScsCiAgJ+GyuicgPT4gJ+GDuicsCiAgJ+GyvScgPT4gJ+GDvScsCiAgJ+GyvicgPT4gJ+GDvicsCiAgJ+GyvycgPT4gJ+GDvycsCiAgJ+G4gCcgPT4gJ+G4gScsCiAgJ+G4gicgPT4gJ+G4gycsCiAgJ+G4hCcgPT4gJ+G4hScsCiAgJ+G4hicgPT4gJ+G4hycsCiAgJ+G4iCcgPT4gJ+G4iScsCiAgJ+G4iicgPT4gJ+G4iycsCiAgJ+G4jCcgPT4gJ+G4jScsCiAgJ+G4jicgPT4gJ+G4jycsCiAgJ+G4kCcgPT4gJ+G4kScsCiAgJ+G4kicgPT4gJ+G4kycsCiAgJ+G4lCcgPT4gJ+G4lScsCiAgJ+G4licgPT4gJ+G4lycsCiAgJ+G4mCcgPT4gJ+G4mScsCiAgJ+G4micgPT4gJ+G4mycsCiAgJ+G4nCcgPT4gJ+G4nScsCiAgJ+G4nicgPT4gJ+G4nycsCiAgJ+G4oCcgPT4gJ+G4oScsCiAgJ+G4oicgPT4gJ+G4oycsCiAgJ+G4pCcgPT4gJ+G4pScsCiAgJ+G4picgPT4gJ+G4pycsCiAgJ+G4qCcgPT4gJ+G4qScsCiAgJ+G4qicgPT4gJ+G4qycsCiAgJ+G4rCcgPT4gJ+G4rScsCiAgJ+G4ricgPT4gJ+G4rycsCiAgJ+G4sCcgPT4gJ+G4sScsCiAgJ+G4sicgPT4gJ+G4sycsCiAgJ+G4tCcgPT4gJ+G4tScsCiAgJ+G4ticgPT4gJ+G4tycsCiAgJ+G4uCcgPT4gJ+G4uScsCiAgJ+G4uicgPT4gJ+G4uycsCiAgJ+G4vCcgPT4gJ+G4vScsCiAgJ+G4vicgPT4gJ+G4vycsCiAgJ+G5gCcgPT4gJ+G5gScsCiAgJ+G5gicgPT4gJ+G5gycsCiAgJ+G5hCcgPT4gJ+G5hScsCiAgJ+G5hicgPT4gJ+G5hycsCiAgJ+G5iCcgPT4gJ+G5iScsCiAgJ+G5iicgPT4gJ+G5iycsCiAgJ+G5jCcgPT4gJ+G5jScsCiAgJ+G5jicgPT4gJ+G5jycsCiAgJ+G5kCcgPT4gJ+G5kScsCiAgJ+G5kicgPT4gJ+G5kycsCiAgJ+G5lCcgPT4gJ+G5lScsCiAgJ+G5licgPT4gJ+G5lycsCiAgJ+G5mCcgPT4gJ+G5mScsCiAgJ+G5micgPT4gJ+G5mycsCiAgJ+G5nCcgPT4gJ+G5nScsCiAgJ+G5nicgPT4gJ+G5nycsCiAgJ+G5oCcgPT4gJ+G5oScsCiAgJ+G5oicgPT4gJ+G5oycsCiAgJ+G5pCcgPT4gJ+G5pScsCiAgJ+G5picgPT4gJ+G5pycsCiAgJ+G5qCcgPT4gJ+G5qScsCiAgJ+G5qicgPT4gJ+G5qycsCiAgJ+G5rCcgPT4gJ+G5rScsCiAgJ+G5ricgPT4gJ+G5rycsCiAgJ+G5sCcgPT4gJ+G5sScsCiAgJ+G5sicgPT4gJ+G5sycsCiAgJ+G5tCcgPT4gJ+G5tScsCiAgJ+G5ticgPT4gJ+G5tycsCiAgJ+G5uCcgPT4gJ+G5uScsCiAgJ+G5uicgPT4gJ+G5uycsCiAgJ+G5vCcgPT4gJ+G5vScsCiAgJ+G5vicgPT4gJ+G5vycsCiAgJ+G6gCcgPT4gJ+G6gScsCiAgJ+G6gicgPT4gJ+G6gycsCiAgJ+G6hCcgPT4gJ+G6hScsCiAgJ+G6hicgPT4gJ+G6hycsCiAgJ+G6iCcgPT4gJ+G6iScsCiAgJ+G6iicgPT4gJ+G6iycsCiAgJ+G6jCcgPT4gJ+G6jScsCiAgJ+G6jicgPT4gJ+G6jycsCiAgJ+G6kCcgPT4gJ+G6kScsCiAgJ+G6kicgPT4gJ+G6kycsCiAgJ+G6lCcgPT4gJ+G6lScsCiAgJ+G6nicgPT4gJ8OfJywKICAn4bqgJyA9PiAn4bqhJywKICAn4bqiJyA9PiAn4bqjJywKICAn4bqkJyA9PiAn4bqlJywKICAn4bqmJyA9PiAn4bqnJywKICAn4bqoJyA9PiAn4bqpJywKICAn4bqqJyA9PiAn4bqrJywKICAn4bqsJyA9PiAn4bqtJywKICAn4bquJyA9PiAn4bqvJywKICAn4bqwJyA9PiAn4bqxJywKICAn4bqyJyA9PiAn4bqzJywKICAn4bq0JyA9PiAn4bq1JywKICAn4bq2JyA9PiAn4bq3JywKICAn4bq4JyA9PiAn4bq5JywKICAn4bq6JyA9PiAn4bq7JywKICAn4bq8JyA9PiAn4bq9JywKICAn4bq+JyA9PiAn4bq/JywKICAn4buAJyA9PiAn4buBJywKICAn4buCJyA9PiAn4buDJywKICAn4buEJyA9PiAn4buFJywKICAn4buGJyA9PiAn4buHJywKICAn4buIJyA9PiAn4buJJywKICAn4buKJyA9PiAn4buLJywKICAn4buMJyA9PiAn4buNJywKICAn4buOJyA9PiAn4buPJywKICAn4buQJyA9PiAn4buRJywKICAn4buSJyA9PiAn4buTJywKICAn4buUJyA9PiAn4buVJywKICAn4buWJyA9PiAn4buXJywKICAn4buYJyA9PiAn4buZJywKICAn4buaJyA9PiAn4bubJywKICAn4bucJyA9PiAn4budJywKICAn4bueJyA9PiAn4bufJywKICAn4bugJyA9PiAn4buhJywKICAn4buiJyA9PiAn4bujJywKICAn4bukJyA9PiAn4bulJywKICAn4bumJyA9PiAn4bunJywKICAn4buoJyA9PiAn4bupJywKICAn4buqJyA9PiAn4burJywKICAn4busJyA9PiAn4butJywKICAn4buuJyA9PiAn4buvJywKICAn4buwJyA9PiAn4buxJywKICAn4buyJyA9PiAn4buzJywKICAn4bu0JyA9PiAn4bu1JywKICAn4bu2JyA9PiAn4bu3JywKICAn4bu4JyA9PiAn4bu5JywKICAn4bu6JyA9PiAn4bu7JywKICAn4bu8JyA9PiAn4bu9JywKICAn4bu+JyA9PiAn4bu/JywKICAn4byIJyA9PiAn4byAJywKICAn4byJJyA9PiAn4byBJywKICAn4byKJyA9PiAn4byCJywKICAn4byLJyA9PiAn4byDJywKICAn4byMJyA9PiAn4byEJywKICAn4byNJyA9PiAn4byFJywKICAn4byOJyA9PiAn4byGJywKICAn4byPJyA9PiAn4byHJywKICAn4byYJyA9PiAn4byQJywKICAn4byZJyA9PiAn4byRJywKICAn4byaJyA9PiAn4bySJywKICAn4bybJyA9PiAn4byTJywKICAn4bycJyA9PiAn4byUJywKICAn4bydJyA9PiAn4byVJywKICAn4byoJyA9PiAn4bygJywKICAn4bypJyA9PiAn4byhJywKICAn4byqJyA9PiAn4byiJywKICAn4byrJyA9PiAn4byjJywKICAn4bysJyA9PiAn4bykJywKICAn4bytJyA9PiAn4bylJywKICAn4byuJyA9PiAn4bymJywKICAn4byvJyA9PiAn4bynJywKICAn4by4JyA9PiAn4bywJywKICAn4by5JyA9PiAn4byxJywKICAn4by6JyA9PiAn4byyJywKICAn4by7JyA9PiAn4byzJywKICAn4by8JyA9PiAn4by0JywKICAn4by9JyA9PiAn4by1JywKICAn4by+JyA9PiAn4by2JywKICAn4by/JyA9PiAn4by3JywKICAn4b2IJyA9PiAn4b2AJywKICAn4b2JJyA9PiAn4b2BJywKICAn4b2KJyA9PiAn4b2CJywKICAn4b2LJyA9PiAn4b2DJywKICAn4b2MJyA9PiAn4b2EJywKICAn4b2NJyA9PiAn4b2FJywKICAn4b2ZJyA9PiAn4b2RJywKICAn4b2bJyA9PiAn4b2TJywKICAn4b2dJyA9PiAn4b2VJywKICAn4b2fJyA9PiAn4b2XJywKICAn4b2oJyA9PiAn4b2gJywKICAn4b2pJyA9PiAn4b2hJywKICAn4b2qJyA9PiAn4b2iJywKICAn4b2rJyA9PiAn4b2jJywKICAn4b2sJyA9PiAn4b2kJywKICAn4b2tJyA9PiAn4b2lJywKICAn4b2uJyA9PiAn4b2mJywKICAn4b2vJyA9PiAn4b2nJywKICAn4b6IJyA9PiAn4b6AJywKICAn4b6JJyA9PiAn4b6BJywKICAn4b6KJyA9PiAn4b6CJywKICAn4b6LJyA9PiAn4b6DJywKICAn4b6MJyA9PiAn4b6EJywKICAn4b6NJyA9PiAn4b6FJywKICAn4b6OJyA9PiAn4b6GJywKICAn4b6PJyA9PiAn4b6HJywKICAn4b6YJyA9PiAn4b6QJywKICAn4b6ZJyA9PiAn4b6RJywKICAn4b6aJyA9PiAn4b6SJywKICAn4b6bJyA9PiAn4b6TJywKICAn4b6cJyA9PiAn4b6UJywKICAn4b6dJyA9PiAn4b6VJywKICAn4b6eJyA9PiAn4b6WJywKICAn4b6fJyA9PiAn4b6XJywKICAn4b6oJyA9PiAn4b6gJywKICAn4b6pJyA9PiAn4b6hJywKICAn4b6qJyA9PiAn4b6iJywKICAn4b6rJyA9PiAn4b6jJywKICAn4b6sJyA9PiAn4b6kJywKICAn4b6tJyA9PiAn4b6lJywKICAn4b6uJyA9PiAn4b6mJywKICAn4b6vJyA9PiAn4b6nJywKICAn4b64JyA9PiAn4b6wJywKICAn4b65JyA9PiAn4b6xJywKICAn4b66JyA9PiAn4b2wJywKICAn4b67JyA9PiAn4b2xJywKICAn4b68JyA9PiAn4b6zJywKICAn4b+IJyA9PiAn4b2yJywKICAn4b+JJyA9PiAn4b2zJywKICAn4b+KJyA9PiAn4b20JywKICAn4b+LJyA9PiAn4b21JywKICAn4b+MJyA9PiAn4b+DJywKICAn4b+YJyA9PiAn4b+QJywKICAn4b+ZJyA9PiAn4b+RJywKICAn4b+aJyA9PiAn4b22JywKICAn4b+bJyA9PiAn4b23JywKICAn4b+oJyA9PiAn4b+gJywKICAn4b+pJyA9PiAn4b+hJywKICAn4b+qJyA9PiAn4b26JywKICAn4b+rJyA9PiAn4b27JywKICAn4b+sJyA9PiAn4b+lJywKICAn4b+4JyA9PiAn4b24JywKICAn4b+5JyA9PiAn4b25JywKICAn4b+6JyA9PiAn4b28JywKICAn4b+7JyA9PiAn4b29JywKICAn4b+8JyA9PiAn4b+zJywKICAn4oSmJyA9PiAnz4knLAogICfihKonID0+ICdrJywKICAn4oSrJyA9PiAnw6UnLAogICfihLInID0+ICfihY4nLAogICfihaAnID0+ICfihbAnLAogICfihaEnID0+ICfihbEnLAogICfihaInID0+ICfihbInLAogICfihaMnID0+ICfihbMnLAogICfihaQnID0+ICfihbQnLAogICfihaUnID0+ICfihbUnLAogICfihaYnID0+ICfihbYnLAogICfihacnID0+ICfihbcnLAogICfihagnID0+ICfihbgnLAogICfihaknID0+ICfihbknLAogICfihaonID0+ICfihbonLAogICfihasnID0+ICfihbsnLAogICfihawnID0+ICfihbwnLAogICfiha0nID0+ICfihb0nLAogICfiha4nID0+ICfihb4nLAogICfiha8nID0+ICfihb8nLAogICfihoMnID0+ICfihoQnLAogICfikrYnID0+ICfik5AnLAogICfikrcnID0+ICfik5EnLAogICfikrgnID0+ICfik5InLAogICfikrknID0+ICfik5MnLAogICfikronID0+ICfik5QnLAogICfikrsnID0+ICfik5UnLAogICfikrwnID0+ICfik5YnLAogICfikr0nID0+ICfik5cnLAogICfikr4nID0+ICfik5gnLAogICfikr8nID0+ICfik5knLAogICfik4AnID0+ICfik5onLAogICfik4EnID0+ICfik5snLAogICfik4InID0+ICfik5wnLAogICfik4MnID0+ICfik50nLAogICfik4QnID0+ICfik54nLAogICfik4UnID0+ICfik58nLAogICfik4YnID0+ICfik6AnLAogICfik4cnID0+ICfik6EnLAogICfik4gnID0+ICfik6InLAogICfik4knID0+ICfik6MnLAogICfik4onID0+ICfik6QnLAogICfik4snID0+ICfik6UnLAogICfik4wnID0+ICfik6YnLAogICfik40nID0+ICfik6cnLAogICfik44nID0+ICfik6gnLAogICfik48nID0+ICfik6knLAogICfisIAnID0+ICfisLAnLAogICfisIEnID0+ICfisLEnLAogICfisIInID0+ICfisLInLAogICfisIMnID0+ICfisLMnLAogICfisIQnID0+ICfisLQnLAogICfisIUnID0+ICfisLUnLAogICfisIYnID0+ICfisLYnLAogICfisIcnID0+ICfisLcnLAogICfisIgnID0+ICfisLgnLAogICfisIknID0+ICfisLknLAogICfisIonID0+ICfisLonLAogICfisIsnID0+ICfisLsnLAogICfisIwnID0+ICfisLwnLAogICfisI0nID0+ICfisL0nLAogICfisI4nID0+ICfisL4nLAogICfisI8nID0+ICfisL8nLAogICfisJAnID0+ICfisYAnLAogICfisJEnID0+ICfisYEnLAogICfisJInID0+ICfisYInLAogICfisJMnID0+ICfisYMnLAogICfisJQnID0+ICfisYQnLAogICfisJUnID0+ICfisYUnLAogICfisJYnID0+ICfisYYnLAogICfisJcnID0+ICfisYcnLAogICfisJgnID0+ICfisYgnLAogICfisJknID0+ICfisYknLAogICfisJonID0+ICfisYonLAogICfisJsnID0+ICfisYsnLAogICfisJwnID0+ICfisYwnLAogICfisJ0nID0+ICfisY0nLAogICfisJ4nID0+ICfisY4nLAogICfisJ8nID0+ICfisY8nLAogICfisKAnID0+ICfisZAnLAogICfisKEnID0+ICfisZEnLAogICfisKInID0+ICfisZInLAogICfisKMnID0+ICfisZMnLAogICfisKQnID0+ICfisZQnLAogICfisKUnID0+ICfisZUnLAogICfisKYnID0+ICfisZYnLAogICfisKcnID0+ICfisZcnLAogICfisKgnID0+ICfisZgnLAogICfisKknID0+ICfisZknLAogICfisKonID0+ICfisZonLAogICfisKsnID0+ICfisZsnLAogICfisKwnID0+ICfisZwnLAogICfisK0nID0+ICfisZ0nLAogICfisK4nID0+ICfisZ4nLAogICfisaAnID0+ICfisaEnLAogICfisaInID0+ICfJqycsCiAgJ+KxoycgPT4gJ+G1vScsCiAgJ+KxpCcgPT4gJ8m9JywKICAn4rGnJyA9PiAn4rGoJywKICAn4rGpJyA9PiAn4rGqJywKICAn4rGrJyA9PiAn4rGsJywKICAn4rGtJyA9PiAnyZEnLAogICfisa4nID0+ICfJsScsCiAgJ+KxrycgPT4gJ8mQJywKICAn4rGwJyA9PiAnyZInLAogICfisbInID0+ICfisbMnLAogICfisbUnID0+ICfisbYnLAogICfisb4nID0+ICfIvycsCiAgJ+KxvycgPT4gJ8mAJywKICAn4rKAJyA9PiAn4rKBJywKICAn4rKCJyA9PiAn4rKDJywKICAn4rKEJyA9PiAn4rKFJywKICAn4rKGJyA9PiAn4rKHJywKICAn4rKIJyA9PiAn4rKJJywKICAn4rKKJyA9PiAn4rKLJywKICAn4rKMJyA9PiAn4rKNJywKICAn4rKOJyA9PiAn4rKPJywKICAn4rKQJyA9PiAn4rKRJywKICAn4rKSJyA9PiAn4rKTJywKICAn4rKUJyA9PiAn4rKVJywKICAn4rKWJyA9PiAn4rKXJywKICAn4rKYJyA9PiAn4rKZJywKICAn4rKaJyA9PiAn4rKbJywKICAn4rKcJyA9PiAn4rKdJywKICAn4rKeJyA9PiAn4rKfJywKICAn4rKgJyA9PiAn4rKhJywKICAn4rKiJyA9PiAn4rKjJywKICAn4rKkJyA9PiAn4rKlJywKICAn4rKmJyA9PiAn4rKnJywKICAn4rKoJyA9PiAn4rKpJywKICAn4rKqJyA9PiAn4rKrJywKICAn4rKsJyA9PiAn4rKtJywKICAn4rKuJyA9PiAn4rKvJywKICAn4rKwJyA9PiAn4rKxJywKICAn4rKyJyA9PiAn4rKzJywKICAn4rK0JyA9PiAn4rK1JywKICAn4rK2JyA9PiAn4rK3JywKICAn4rK4JyA9PiAn4rK5JywKICAn4rK6JyA9PiAn4rK7JywKICAn4rK8JyA9PiAn4rK9JywKICAn4rK+JyA9PiAn4rK/JywKICAn4rOAJyA9PiAn4rOBJywKICAn4rOCJyA9PiAn4rODJywKICAn4rOEJyA9PiAn4rOFJywKICAn4rOGJyA9PiAn4rOHJywKICAn4rOIJyA9PiAn4rOJJywKICAn4rOKJyA9PiAn4rOLJywKICAn4rOMJyA9PiAn4rONJywKICAn4rOOJyA9PiAn4rOPJywKICAn4rOQJyA9PiAn4rORJywKICAn4rOSJyA9PiAn4rOTJywKICAn4rOUJyA9PiAn4rOVJywKICAn4rOWJyA9PiAn4rOXJywKICAn4rOYJyA9PiAn4rOZJywKICAn4rOaJyA9PiAn4rObJywKICAn4rOcJyA9PiAn4rOdJywKICAn4rOeJyA9PiAn4rOfJywKICAn4rOgJyA9PiAn4rOhJywKICAn4rOiJyA9PiAn4rOjJywKICAn4rOrJyA9PiAn4rOsJywKICAn4rOtJyA9PiAn4rOuJywKICAn4rOyJyA9PiAn4rOzJywKICAn6pmAJyA9PiAn6pmBJywKICAn6pmCJyA9PiAn6pmDJywKICAn6pmEJyA9PiAn6pmFJywKICAn6pmGJyA9PiAn6pmHJywKICAn6pmIJyA9PiAn6pmJJywKICAn6pmKJyA9PiAn6pmLJywKICAn6pmMJyA9PiAn6pmNJywKICAn6pmOJyA9PiAn6pmPJywKICAn6pmQJyA9PiAn6pmRJywKICAn6pmSJyA9PiAn6pmTJywKICAn6pmUJyA9PiAn6pmVJywKICAn6pmWJyA9PiAn6pmXJywKICAn6pmYJyA9PiAn6pmZJywKICAn6pmaJyA9PiAn6pmbJywKICAn6pmcJyA9PiAn6pmdJywKICAn6pmeJyA9PiAn6pmfJywKICAn6pmgJyA9PiAn6pmhJywKICAn6pmiJyA9PiAn6pmjJywKICAn6pmkJyA9PiAn6pmlJywKICAn6pmmJyA9PiAn6pmnJywKICAn6pmoJyA9PiAn6pmpJywKICAn6pmqJyA9PiAn6pmrJywKICAn6pmsJyA9PiAn6pmtJywKICAn6pqAJyA9PiAn6pqBJywKICAn6pqCJyA9PiAn6pqDJywKICAn6pqEJyA9PiAn6pqFJywKICAn6pqGJyA9PiAn6pqHJywKICAn6pqIJyA9PiAn6pqJJywKICAn6pqKJyA9PiAn6pqLJywKICAn6pqMJyA9PiAn6pqNJywKICAn6pqOJyA9PiAn6pqPJywKICAn6pqQJyA9PiAn6pqRJywKICAn6pqSJyA9PiAn6pqTJywKICAn6pqUJyA9PiAn6pqVJywKICAn6pqWJyA9PiAn6pqXJywKICAn6pqYJyA9PiAn6pqZJywKICAn6pqaJyA9PiAn6pqbJywKICAn6pyiJyA9PiAn6pyjJywKICAn6pykJyA9PiAn6pylJywKICAn6pymJyA9PiAn6pynJywKICAn6pyoJyA9PiAn6pypJywKICAn6pyqJyA9PiAn6pyrJywKICAn6pysJyA9PiAn6pytJywKICAn6pyuJyA9PiAn6pyvJywKICAn6pyyJyA9PiAn6pyzJywKICAn6py0JyA9PiAn6py1JywKICAn6py2JyA9PiAn6py3JywKICAn6py4JyA9PiAn6py5JywKICAn6py6JyA9PiAn6py7JywKICAn6py8JyA9PiAn6py9JywKICAn6py+JyA9PiAn6py/JywKICAn6p2AJyA9PiAn6p2BJywKICAn6p2CJyA9PiAn6p2DJywKICAn6p2EJyA9PiAn6p2FJywKICAn6p2GJyA9PiAn6p2HJywKICAn6p2IJyA9PiAn6p2JJywKICAn6p2KJyA9PiAn6p2LJywKICAn6p2MJyA9PiAn6p2NJywKICAn6p2OJyA9PiAn6p2PJywKICAn6p2QJyA9PiAn6p2RJywKICAn6p2SJyA9PiAn6p2TJywKICAn6p2UJyA9PiAn6p2VJywKICAn6p2WJyA9PiAn6p2XJywKICAn6p2YJyA9PiAn6p2ZJywKICAn6p2aJyA9PiAn6p2bJywKICAn6p2cJyA9PiAn6p2dJywKICAn6p2eJyA9PiAn6p2fJywKICAn6p2gJyA9PiAn6p2hJywKICAn6p2iJyA9PiAn6p2jJywKICAn6p2kJyA9PiAn6p2lJywKICAn6p2mJyA9PiAn6p2nJywKICAn6p2oJyA9PiAn6p2pJywKICAn6p2qJyA9PiAn6p2rJywKICAn6p2sJyA9PiAn6p2tJywKICAn6p2uJyA9PiAn6p2vJywKICAn6p25JyA9PiAn6p26JywKICAn6p27JyA9PiAn6p28JywKICAn6p29JyA9PiAn4bW5JywKICAn6p2+JyA9PiAn6p2/JywKICAn6p6AJyA9PiAn6p6BJywKICAn6p6CJyA9PiAn6p6DJywKICAn6p6EJyA9PiAn6p6FJywKICAn6p6GJyA9PiAn6p6HJywKICAn6p6LJyA9PiAn6p6MJywKICAn6p6NJyA9PiAnyaUnLAogICfqnpAnID0+ICfqnpEnLAogICfqnpInID0+ICfqnpMnLAogICfqnpYnID0+ICfqnpcnLAogICfqnpgnID0+ICfqnpknLAogICfqnponID0+ICfqnpsnLAogICfqnpwnID0+ICfqnp0nLAogICfqnp4nID0+ICfqnp8nLAogICfqnqAnID0+ICfqnqEnLAogICfqnqInID0+ICfqnqMnLAogICfqnqQnID0+ICfqnqUnLAogICfqnqYnID0+ICfqnqcnLAogICfqnqgnID0+ICfqnqknLAogICfqnqonID0+ICfJpicsCiAgJ+qeqycgPT4gJ8mcJywKICAn6p6sJyA9PiAnyaEnLAogICfqnq0nID0+ICfJrCcsCiAgJ+qericgPT4gJ8mqJywKICAn6p6wJyA9PiAnyp4nLAogICfqnrEnID0+ICfKhycsCiAgJ+qesicgPT4gJ8qdJywKICAn6p6zJyA9PiAn6q2TJywKICAn6p60JyA9PiAn6p61JywKICAn6p62JyA9PiAn6p63JywKICAn6p64JyA9PiAn6p65JywKICAn6p66JyA9PiAn6p67JywKICAn6p68JyA9PiAn6p69JywKICAn6p6+JyA9PiAn6p6/JywKICAn6p+CJyA9PiAn6p+DJywKICAn6p+EJyA9PiAn6p6UJywKICAn6p+FJyA9PiAnyoInLAogICfqn4YnID0+ICfhto4nLAogICfqn4cnID0+ICfqn4gnLAogICfqn4knID0+ICfqn4onLAogICfqn7UnID0+ICfqn7YnLAogICfvvKEnID0+ICfvvYEnLAogICfvvKInID0+ICfvvYInLAogICfvvKMnID0+ICfvvYMnLAogICfvvKQnID0+ICfvvYQnLAogICfvvKUnID0+ICfvvYUnLAogICfvvKYnID0+ICfvvYYnLAogICfvvKcnID0+ICfvvYcnLAogICfvvKgnID0+ICfvvYgnLAogICfvvKknID0+ICfvvYknLAogICfvvKonID0+ICfvvYonLAogICfvvKsnID0+ICfvvYsnLAogICfvvKwnID0+ICfvvYwnLAogICfvvK0nID0+ICfvvY0nLAogICfvvK4nID0+ICfvvY4nLAogICfvvK8nID0+ICfvvY8nLAogICfvvLAnID0+ICfvvZAnLAogICfvvLEnID0+ICfvvZEnLAogICfvvLInID0+ICfvvZInLAogICfvvLMnID0+ICfvvZMnLAogICfvvLQnID0+ICfvvZQnLAogICfvvLUnID0+ICfvvZUnLAogICfvvLYnID0+ICfvvZYnLAogICfvvLcnID0+ICfvvZcnLAogICfvvLgnID0+ICfvvZgnLAogICfvvLknID0+ICfvvZknLAogICfvvLonID0+ICfvvZonLAogICfwkJCAJyA9PiAn8JCQqCcsCiAgJ/CQkIEnID0+ICfwkJCpJywKICAn8JCQgicgPT4gJ/CQkKonLAogICfwkJCDJyA9PiAn8JCQqycsCiAgJ/CQkIQnID0+ICfwkJCsJywKICAn8JCQhScgPT4gJ/CQkK0nLAogICfwkJCGJyA9PiAn8JCQricsCiAgJ/CQkIcnID0+ICfwkJCvJywKICAn8JCQiCcgPT4gJ/CQkLAnLAogICfwkJCJJyA9PiAn8JCQsScsCiAgJ/CQkIonID0+ICfwkJCyJywKICAn8JCQiycgPT4gJ/CQkLMnLAogICfwkJCMJyA9PiAn8JCQtCcsCiAgJ/CQkI0nID0+ICfwkJC1JywKICAn8JCQjicgPT4gJ/CQkLYnLAogICfwkJCPJyA9PiAn8JCQtycsCiAgJ/CQkJAnID0+ICfwkJC4JywKICAn8JCQkScgPT4gJ/CQkLknLAogICfwkJCSJyA9PiAn8JCQuicsCiAgJ/CQkJMnID0+ICfwkJC7JywKICAn8JCQlCcgPT4gJ/CQkLwnLAogICfwkJCVJyA9PiAn8JCQvScsCiAgJ/CQkJYnID0+ICfwkJC+JywKICAn8JCQlycgPT4gJ/CQkL8nLAogICfwkJCYJyA9PiAn8JCRgCcsCiAgJ/CQkJknID0+ICfwkJGBJywKICAn8JCQmicgPT4gJ/CQkYInLAogICfwkJCbJyA9PiAn8JCRgycsCiAgJ/CQkJwnID0+ICfwkJGEJywKICAn8JCQnScgPT4gJ/CQkYUnLAogICfwkJCeJyA9PiAn8JCRhicsCiAgJ/CQkJ8nID0+ICfwkJGHJywKICAn8JCQoCcgPT4gJ/CQkYgnLAogICfwkJChJyA9PiAn8JCRiScsCiAgJ/CQkKInID0+ICfwkJGKJywKICAn8JCQoycgPT4gJ/CQkYsnLAogICfwkJCkJyA9PiAn8JCRjCcsCiAgJ/CQkKUnID0+ICfwkJGNJywKICAn8JCQpicgPT4gJ/CQkY4nLAogICfwkJCnJyA9PiAn8JCRjycsCiAgJ/CQkrAnID0+ICfwkJOYJywKICAn8JCSsScgPT4gJ/CQk5knLAogICfwkJKyJyA9PiAn8JCTmicsCiAgJ/CQkrMnID0+ICfwkJObJywKICAn8JCStCcgPT4gJ/CQk5wnLAogICfwkJK1JyA9PiAn8JCTnScsCiAgJ/CQkrYnID0+ICfwkJOeJywKICAn8JCStycgPT4gJ/CQk58nLAogICfwkJK4JyA9PiAn8JCToCcsCiAgJ/CQkrknID0+ICfwkJOhJywKICAn8JCSuicgPT4gJ/CQk6InLAogICfwkJK7JyA9PiAn8JCToycsCiAgJ/CQkrwnID0+ICfwkJOkJywKICAn8JCSvScgPT4gJ/CQk6UnLAogICfwkJK+JyA9PiAn8JCTpicsCiAgJ/CQkr8nID0+ICfwkJOnJywKICAn8JCTgCcgPT4gJ/CQk6gnLAogICfwkJOBJyA9PiAn8JCTqScsCiAgJ/CQk4InID0+ICfwkJOqJywKICAn8JCTgycgPT4gJ/CQk6snLAogICfwkJOEJyA9PiAn8JCTrCcsCiAgJ/CQk4UnID0+ICfwkJOtJywKICAn8JCThicgPT4gJ/CQk64nLAogICfwkJOHJyA9PiAn8JCTrycsCiAgJ/CQk4gnID0+ICfwkJOwJywKICAn8JCTiScgPT4gJ/CQk7EnLAogICfwkJOKJyA9PiAn8JCTsicsCiAgJ/CQk4snID0+ICfwkJOzJywKICAn8JCTjCcgPT4gJ/CQk7QnLAogICfwkJONJyA9PiAn8JCTtScsCiAgJ/CQk44nID0+ICfwkJO2JywKICAn8JCTjycgPT4gJ/CQk7cnLAogICfwkJOQJyA9PiAn8JCTuCcsCiAgJ/CQk5EnID0+ICfwkJO5JywKICAn8JCTkicgPT4gJ/CQk7onLAogICfwkJOTJyA9PiAn8JCTuycsCiAgJ/CQsoAnID0+ICfwkLOAJywKICAn8JCygScgPT4gJ/CQs4EnLAogICfwkLKCJyA9PiAn8JCzgicsCiAgJ/CQsoMnID0+ICfwkLODJywKICAn8JCyhCcgPT4gJ/CQs4QnLAogICfwkLKFJyA9PiAn8JCzhScsCiAgJ/CQsoYnID0+ICfwkLOGJywKICAn8JCyhycgPT4gJ/CQs4cnLAogICfwkLKIJyA9PiAn8JCziCcsCiAgJ/CQsoknID0+ICfwkLOJJywKICAn8JCyiicgPT4gJ/CQs4onLAogICfwkLKLJyA9PiAn8JCziycsCiAgJ/CQsownID0+ICfwkLOMJywKICAn8JCyjScgPT4gJ/CQs40nLAogICfwkLKOJyA9PiAn8JCzjicsCiAgJ/CQso8nID0+ICfwkLOPJywKICAn8JCykCcgPT4gJ/CQs5AnLAogICfwkLKRJyA9PiAn8JCzkScsCiAgJ/CQspInID0+ICfwkLOSJywKICAn8JCykycgPT4gJ/CQs5MnLAogICfwkLKUJyA9PiAn8JCzlCcsCiAgJ/CQspUnID0+ICfwkLOVJywKICAn8JCylicgPT4gJ/CQs5YnLAogICfwkLKXJyA9PiAn8JCzlycsCiAgJ/CQspgnID0+ICfwkLOYJywKICAn8JCymScgPT4gJ/CQs5knLAogICfwkLKaJyA9PiAn8JCzmicsCiAgJ/CQspsnID0+ICfwkLObJywKICAn8JCynCcgPT4gJ/CQs5wnLAogICfwkLKdJyA9PiAn8JCznScsCiAgJ/CQsp4nID0+ICfwkLOeJywKICAn8JCynycgPT4gJ/CQs58nLAogICfwkLKgJyA9PiAn8JCzoCcsCiAgJ/CQsqEnID0+ICfwkLOhJywKICAn8JCyoicgPT4gJ/CQs6InLAogICfwkLKjJyA9PiAn8JCzoycsCiAgJ/CQsqQnID0+ICfwkLOkJywKICAn8JCypScgPT4gJ/CQs6UnLAogICfwkLKmJyA9PiAn8JCzpicsCiAgJ/CQsqcnID0+ICfwkLOnJywKICAn8JCyqCcgPT4gJ/CQs6gnLAogICfwkLKpJyA9PiAn8JCzqScsCiAgJ/CQsqonID0+ICfwkLOqJywKICAn8JCyqycgPT4gJ/CQs6snLAogICfwkLKsJyA9PiAn8JCzrCcsCiAgJ/CQsq0nID0+ICfwkLOtJywKICAn8JCyricgPT4gJ/CQs64nLAogICfwkLKvJyA9PiAn8JCzrycsCiAgJ/CQsrAnID0+ICfwkLOwJywKICAn8JCysScgPT4gJ/CQs7EnLAogICfwkLKyJyA9PiAn8JCzsicsCiAgJ/CRoqAnID0+ICfwkaOAJywKICAn8JGioScgPT4gJ/CRo4EnLAogICfwkaKiJyA9PiAn8JGjgicsCiAgJ/CRoqMnID0+ICfwkaODJywKICAn8JGipCcgPT4gJ/CRo4QnLAogICfwkaKlJyA9PiAn8JGjhScsCiAgJ/CRoqYnID0+ICfwkaOGJywKICAn8JGipycgPT4gJ/CRo4cnLAogICfwkaKoJyA9PiAn8JGjiCcsCiAgJ/CRoqknID0+ICfwkaOJJywKICAn8JGiqicgPT4gJ/CRo4onLAogICfwkaKrJyA9PiAn8JGjiycsCiAgJ/CRoqwnID0+ICfwkaOMJywKICAn8JGirScgPT4gJ/CRo40nLAogICfwkaKuJyA9PiAn8JGjjicsCiAgJ/CRoq8nID0+ICfwkaOPJywKICAn8JGisCcgPT4gJ/CRo5AnLAogICfwkaKxJyA9PiAn8JGjkScsCiAgJ/CRorInID0+ICfwkaOSJywKICAn8JGisycgPT4gJ/CRo5MnLAogICfwkaK0JyA9PiAn8JGjlCcsCiAgJ/CRorUnID0+ICfwkaOVJywKICAn8JGiticgPT4gJ/CRo5YnLAogICfwkaK3JyA9PiAn8JGjlycsCiAgJ/CRorgnID0+ICfwkaOYJywKICAn8JGiuScgPT4gJ/CRo5knLAogICfwkaK6JyA9PiAn8JGjmicsCiAgJ/CRorsnID0+ICfwkaObJywKICAn8JGivCcgPT4gJ/CRo5wnLAogICfwkaK9JyA9PiAn8JGjnScsCiAgJ/CRor4nID0+ICfwkaOeJywKICAn8JGivycgPT4gJ/CRo58nLAogICfwlrmAJyA9PiAn8Ja5oCcsCiAgJ/CWuYEnID0+ICfwlrmhJywKICAn8Ja5gicgPT4gJ/CWuaInLAogICfwlrmDJyA9PiAn8Ja5oycsCiAgJ/CWuYQnID0+ICfwlrmkJywKICAn8Ja5hScgPT4gJ/CWuaUnLAogICfwlrmGJyA9PiAn8Ja5picsCiAgJ/CWuYcnID0+ICfwlrmnJywKICAn8Ja5iCcgPT4gJ/CWuagnLAogICfwlrmJJyA9PiAn8Ja5qScsCiAgJ/CWuYonID0+ICfwlrmqJywKICAn8Ja5iycgPT4gJ/CWuasnLAogICfwlrmMJyA9PiAn8Ja5rCcsCiAgJ/CWuY0nID0+ICfwlrmtJywKICAn8Ja5jicgPT4gJ/CWua4nLAogICfwlrmPJyA9PiAn8Ja5rycsCiAgJ/CWuZAnID0+ICfwlrmwJywKICAn8Ja5kScgPT4gJ/CWubEnLAogICfwlrmSJyA9PiAn8Ja5sicsCiAgJ/CWuZMnID0+ICfwlrmzJywKICAn8Ja5lCcgPT4gJ/CWubQnLAogICfwlrmVJyA9PiAn8Ja5tScsCiAgJ/CWuZYnID0+ICfwlrm2JywKICAn8Ja5lycgPT4gJ/CWubcnLAogICfwlrmYJyA9PiAn8Ja5uCcsCiAgJ/CWuZknID0+ICfwlrm5JywKICAn8Ja5micgPT4gJ/CWubonLAogICfwlrmbJyA9PiAn8Ja5uycsCiAgJ/CWuZwnID0+ICfwlrm8JywKICAn8Ja5nScgPT4gJ/CWub0nLAogICfwlrmeJyA9PiAn8Ja5vicsCiAgJ/CWuZ8nID0+ICfwlrm/JywKICAn8J6kgCcgPT4gJ/CepKInLAogICfwnqSBJyA9PiAn8J6koycsCiAgJ/CepIInID0+ICfwnqSkJywKICAn8J6kgycgPT4gJ/CepKUnLAogICfwnqSEJyA9PiAn8J6kpicsCiAgJ/CepIUnID0+ICfwnqSnJywKICAn8J6khicgPT4gJ/CepKgnLAogICfwnqSHJyA9PiAn8J6kqScsCiAgJ/CepIgnID0+ICfwnqSqJywKICAn8J6kiScgPT4gJ/CepKsnLAogICfwnqSKJyA9PiAn8J6krCcsCiAgJ/CepIsnID0+ICfwnqStJywKICAn8J6kjCcgPT4gJ/CepK4nLAogICfwnqSNJyA9PiAn8J6krycsCiAgJ/CepI4nID0+ICfwnqSwJywKICAn8J6kjycgPT4gJ/CepLEnLAogICfwnqSQJyA9PiAn8J6ksicsCiAgJ/CepJEnID0+ICfwnqSzJywKICAn8J6kkicgPT4gJ/CepLQnLAogICfwnqSTJyA9PiAn8J6ktScsCiAgJ/CepJQnID0+ICfwnqS2JywKICAn8J6klScgPT4gJ/CepLcnLAogICfwnqSWJyA9PiAn8J6kuCcsCiAgJ/CepJcnID0+ICfwnqS5JywKICAn8J6kmCcgPT4gJ/CepLonLAogICfwnqSZJyA9PiAn8J6kuycsCiAgJ/CepJonID0+ICfwnqS8JywKICAn8J6kmycgPT4gJ/CepL0nLAogICfwnqScJyA9PiAn8J6kvicsCiAgJ/CepJ0nID0+ICfwnqS/JywKICAn8J6knicgPT4gJ/CepYAnLAogICfwnqSfJyA9PiAn8J6lgScsCiAgJ/CepKAnID0+ICfwnqWCJywKICAn8J6koScgPT4gJ/CepYMnLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGZyb20gQ2FzZV9JZ25vcmFibGUgaW4gaHR0cHM6Ly91bmljb2RlLm9yZy9QdWJsaWMvVU5JREFUQS9EZXJpdmVkQ29yZVByb3BlcnRpZXMudHh0CgpyZXR1cm4gJy8oPzwhW1x4ezAwMjd9XHh7MDAyRX1ceHswMDNBfVx4ezAwNUV9XHh7MDA2MH1ceHswMEE4fVx4ezAwQUR9XHh7MDBBRn1ceHswMEI0fVx4ezAwQjd9XHh7MDBCOH1ceHswMkIwfS1ceHswMkMxfVx4ezAyQzJ9LVx4ezAyQzV9XHh7MDJDNn0tXHh7MDJEMX1ceHswMkQyfS1ceHswMkRGfVx4ezAyRTB9LVx4ezAyRTR9XHh7MDJFNX0tXHh7MDJFQn1ceHswMkVDfVx4ezAyRUR9XHh7MDJFRX1ceHswMkVGfS1ceHswMkZGfVx4ezAzMDB9LVx4ezAzNkZ9XHh7MDM3NH1ceHswMzc1fVx4ezAzN0F9XHh7MDM4NH0tXHh7MDM4NX1ceHswMzg3fVx4ezA0ODN9LVx4ezA0ODd9XHh7MDQ4OH0tXHh7MDQ4OX1ceHswNTU5fVx4ezA1OTF9LVx4ezA1QkR9XHh7MDVCRn1ceHswNUMxfS1ceHswNUMyfVx4ezA1QzR9LVx4ezA1QzV9XHh7MDVDN31ceHswNUY0fVx4ezA2MDB9LVx4ezA2MDV9XHh7MDYxMH0tXHh7MDYxQX1ceHswNjFDfVx4ezA2NDB9XHh7MDY0Qn0tXHh7MDY1Rn1ceHswNjcwfVx4ezA2RDZ9LVx4ezA2REN9XHh7MDZERH1ceHswNkRGfS1ceHswNkU0fVx4ezA2RTV9LVx4ezA2RTZ9XHh7MDZFN30tXHh7MDZFOH1ceHswNkVBfS1ceHswNkVEfVx4ezA3MEZ9XHh7MDcxMX1ceHswNzMwfS1ceHswNzRBfVx4ezA3QTZ9LVx4ezA3QjB9XHh7MDdFQn0tXHh7MDdGM31ceHswN0Y0fS1ceHswN0Y1fVx4ezA3RkF9XHh7MDdGRH1ceHswODE2fS1ceHswODE5fVx4ezA4MUF9XHh7MDgxQn0tXHh7MDgyM31ceHswODI0fVx4ezA4MjV9LVx4ezA4Mjd9XHh7MDgyOH1ceHswODI5fS1ceHswODJEfVx4ezA4NTl9LVx4ezA4NUJ9XHh7MDhEM30tXHh7MDhFMX1ceHswOEUyfVx4ezA4RTN9LVx4ezA5MDJ9XHh7MDkzQX1ceHswOTNDfVx4ezA5NDF9LVx4ezA5NDh9XHh7MDk0RH1ceHswOTUxfS1ceHswOTU3fVx4ezA5NjJ9LVx4ezA5NjN9XHh7MDk3MX1ceHswOTgxfVx4ezA5QkN9XHh7MDlDMX0tXHh7MDlDNH1ceHswOUNEfVx4ezA5RTJ9LVx4ezA5RTN9XHh7MDlGRX1ceHswQTAxfS1ceHswQTAyfVx4ezBBM0N9XHh7MEE0MX0tXHh7MEE0Mn1ceHswQTQ3fS1ceHswQTQ4fVx4ezBBNEJ9LVx4ezBBNER9XHh7MEE1MX1ceHswQTcwfS1ceHswQTcxfVx4ezBBNzV9XHh7MEE4MX0tXHh7MEE4Mn1ceHswQUJDfVx4ezBBQzF9LVx4ezBBQzV9XHh7MEFDN30tXHh7MEFDOH1ceHswQUNEfVx4ezBBRTJ9LVx4ezBBRTN9XHh7MEFGQX0tXHh7MEFGRn1ceHswQjAxfVx4ezBCM0N9XHh7MEIzRn1ceHswQjQxfS1ceHswQjQ0fVx4ezBCNER9XHh7MEI1Nn1ceHswQjYyfS1ceHswQjYzfVx4ezBCODJ9XHh7MEJDMH1ceHswQkNEfVx4ezBDMDB9XHh7MEMwNH1ceHswQzNFfS1ceHswQzQwfVx4ezBDNDZ9LVx4ezBDNDh9XHh7MEM0QX0tXHh7MEM0RH1ceHswQzU1fS1ceHswQzU2fVx4ezBDNjJ9LVx4ezBDNjN9XHh7MEM4MX1ceHswQ0JDfVx4ezBDQkZ9XHh7MENDNn1ceHswQ0NDfS1ceHswQ0NEfVx4ezBDRTJ9LVx4ezBDRTN9XHh7MEQwMH0tXHh7MEQwMX1ceHswRDNCfS1ceHswRDNDfVx4ezBENDF9LVx4ezBENDR9XHh7MEQ0RH1ceHswRDYyfS1ceHswRDYzfVx4ezBEQ0F9XHh7MEREMn0tXHh7MERENH1ceHswREQ2fVx4ezBFMzF9XHh7MEUzNH0tXHh7MEUzQX1ceHswRTQ2fVx4ezBFNDd9LVx4ezBFNEV9XHh7MEVCMX1ceHswRUI0fS1ceHswRUI5fVx4ezBFQkJ9LVx4ezBFQkN9XHh7MEVDNn1ceHswRUM4fS1ceHswRUNEfVx4ezBGMTh9LVx4ezBGMTl9XHh7MEYzNX1ceHswRjM3fVx4ezBGMzl9XHh7MEY3MX0tXHh7MEY3RX1ceHswRjgwfS1ceHswRjg0fVx4ezBGODZ9LVx4ezBGODd9XHh7MEY4RH0tXHh7MEY5N31ceHswRjk5fS1ceHswRkJDfVx4ezBGQzZ9XHh7MTAyRH0tXHh7MTAzMH1ceHsxMDMyfS1ceHsxMDM3fVx4ezEwMzl9LVx4ezEwM0F9XHh7MTAzRH0tXHh7MTAzRX1ceHsxMDU4fS1ceHsxMDU5fVx4ezEwNUV9LVx4ezEwNjB9XHh7MTA3MX0tXHh7MTA3NH1ceHsxMDgyfVx4ezEwODV9LVx4ezEwODZ9XHh7MTA4RH1ceHsxMDlEfVx4ezEwRkN9XHh7MTM1RH0tXHh7MTM1Rn1ceHsxNzEyfS1ceHsxNzE0fVx4ezE3MzJ9LVx4ezE3MzR9XHh7MTc1Mn0tXHh7MTc1M31ceHsxNzcyfS1ceHsxNzczfVx4ezE3QjR9LVx4ezE3QjV9XHh7MTdCN30tXHh7MTdCRH1ceHsxN0M2fVx4ezE3Qzl9LVx4ezE3RDN9XHh7MTdEN31ceHsxN0REfVx4ezE4MEJ9LVx4ezE4MER9XHh7MTgwRX1ceHsxODQzfVx4ezE4ODV9LVx4ezE4ODZ9XHh7MThBOX1ceHsxOTIwfS1ceHsxOTIyfVx4ezE5Mjd9LVx4ezE5Mjh9XHh7MTkzMn1ceHsxOTM5fS1ceHsxOTNCfVx4ezFBMTd9LVx4ezFBMTh9XHh7MUExQn1ceHsxQTU2fVx4ezFBNTh9LVx4ezFBNUV9XHh7MUE2MH1ceHsxQTYyfVx4ezFBNjV9LVx4ezFBNkN9XHh7MUE3M30tXHh7MUE3Q31ceHsxQTdGfVx4ezFBQTd9XHh7MUFCMH0tXHh7MUFCRH1ceHsxQUJFfVx4ezFCMDB9LVx4ezFCMDN9XHh7MUIzNH1ceHsxQjM2fS1ceHsxQjNBfVx4ezFCM0N9XHh7MUI0Mn1ceHsxQjZCfS1ceHsxQjczfVx4ezFCODB9LVx4ezFCODF9XHh7MUJBMn0tXHh7MUJBNX1ceHsxQkE4fS1ceHsxQkE5fVx4ezFCQUJ9LVx4ezFCQUR9XHh7MUJFNn1ceHsxQkU4fS1ceHsxQkU5fVx4ezFCRUR9XHh7MUJFRn0tXHh7MUJGMX1ceHsxQzJDfS1ceHsxQzMzfVx4ezFDMzZ9LVx4ezFDMzd9XHh7MUM3OH0tXHh7MUM3RH1ceHsxQ0QwfS1ceHsxQ0QyfVx4ezFDRDR9LVx4ezFDRTB9XHh7MUNFMn0tXHh7MUNFOH1ceHsxQ0VEfVx4ezFDRjR9XHh7MUNGOH0tXHh7MUNGOX1ceHsxRDJDfS1ceHsxRDZBfVx4ezFENzh9XHh7MUQ5Qn0tXHh7MURCRn1ceHsxREMwfS1ceHsxREY5fVx4ezFERkJ9LVx4ezFERkZ9XHh7MUZCRH1ceHsxRkJGfS1ceHsxRkMxfVx4ezFGQ0R9LVx4ezFGQ0Z9XHh7MUZERH0tXHh7MUZERn1ceHsxRkVEfS1ceHsxRkVGfVx4ezFGRkR9LVx4ezFGRkV9XHh7MjAwQn0tXHh7MjAwRn1ceHsyMDE4fVx4ezIwMTl9XHh7MjAyNH1ceHsyMDI3fVx4ezIwMkF9LVx4ezIwMkV9XHh7MjA2MH0tXHh7MjA2NH1ceHsyMDY2fS1ceHsyMDZGfVx4ezIwNzF9XHh7MjA3Rn1ceHsyMDkwfS1ceHsyMDlDfVx4ezIwRDB9LVx4ezIwREN9XHh7MjBERH0tXHh7MjBFMH1ceHsyMEUxfVx4ezIwRTJ9LVx4ezIwRTR9XHh7MjBFNX0tXHh7MjBGMH1ceHsyQzdDfS1ceHsyQzdEfVx4ezJDRUZ9LVx4ezJDRjF9XHh7MkQ2Rn1ceHsyRDdGfVx4ezJERTB9LVx4ezJERkZ9XHh7MkUyRn1ceHszMDA1fVx4ezMwMkF9LVx4ezMwMkR9XHh7MzAzMX0tXHh7MzAzNX1ceHszMDNCfVx4ezMwOTl9LVx4ezMwOUF9XHh7MzA5Qn0tXHh7MzA5Q31ceHszMDlEfS1ceHszMDlFfVx4ezMwRkN9LVx4ezMwRkV9XHh7QTAxNX1ceHtBNEY4fS1ceHtBNEZEfVx4e0E2MEN9XHh7QTY2Rn1ceHtBNjcwfS1ceHtBNjcyfVx4e0E2NzR9LVx4e0E2N0R9XHh7QTY3Rn1ceHtBNjlDfS1ceHtBNjlEfVx4e0E2OUV9LVx4e0E2OUZ9XHh7QTZGMH0tXHh7QTZGMX1ceHtBNzAwfS1ceHtBNzE2fVx4e0E3MTd9LVx4e0E3MUZ9XHh7QTcyMH0tXHh7QTcyMX1ceHtBNzcwfVx4e0E3ODh9XHh7QTc4OX0tXHh7QTc4QX1ceHtBN0Y4fS1ceHtBN0Y5fVx4e0E4MDJ9XHh7QTgwNn1ceHtBODBCfVx4e0E4MjV9LVx4e0E4MjZ9XHh7QThDNH0tXHh7QThDNX1ceHtBOEUwfS1ceHtBOEYxfVx4e0E4RkZ9XHh7QTkyNn0tXHh7QTkyRH1ceHtBOTQ3fS1ceHtBOTUxfVx4e0E5ODB9LVx4e0E5ODJ9XHh7QTlCM31ceHtBOUI2fS1ceHtBOUI5fVx4e0E5QkN9XHh7QTlDRn1ceHtBOUU1fVx4e0E5RTZ9XHh7QUEyOX0tXHh7QUEyRX1ceHtBQTMxfS1ceHtBQTMyfVx4e0FBMzV9LVx4e0FBMzZ9XHh7QUE0M31ceHtBQTRDfVx4e0FBNzB9XHh7QUE3Q31ceHtBQUIwfVx4e0FBQjJ9LVx4e0FBQjR9XHh7QUFCN30tXHh7QUFCOH1ceHtBQUJFfS1ceHtBQUJGfVx4e0FBQzF9XHh7QUFERH1ceHtBQUVDfS1ceHtBQUVEfVx4e0FBRjN9LVx4e0FBRjR9XHh7QUFGNn1ceHtBQjVCfVx4e0FCNUN9LVx4e0FCNUZ9XHh7QUJFNX1ceHtBQkU4fVx4e0FCRUR9XHh7RkIxRX1ceHtGQkIyfS1ceHtGQkMxfVx4e0ZFMDB9LVx4e0ZFMEZ9XHh7RkUxM31ceHtGRTIwfS1ceHtGRTJGfVx4e0ZFNTJ9XHh7RkU1NX1ceHtGRUZGfVx4e0ZGMDd9XHh7RkYwRX1ceHtGRjFBfVx4e0ZGM0V9XHh7RkY0MH1ceHtGRjcwfVx4e0ZGOUV9LVx4e0ZGOUZ9XHh7RkZFM31ceHtGRkY5fS1ceHtGRkZCfVx4ezEwMUZEfVx4ezEwMkUwfVx4ezEwMzc2fS1ceHsxMDM3QX1ceHsxMEEwMX0tXHh7MTBBMDN9XHh7MTBBMDV9LVx4ezEwQTA2fVx4ezEwQTBDfS1ceHsxMEEwRn1ceHsxMEEzOH0tXHh7MTBBM0F9XHh7MTBBM0Z9XHh7MTBBRTV9LVx4ezEwQUU2fVx4ezEwRDI0fS1ceHsxMEQyN31ceHsxMEY0Nn0tXHh7MTBGNTB9XHh7MTEwMDF9XHh7MTEwMzh9LVx4ezExMDQ2fVx4ezExMDdGfS1ceHsxMTA4MX1ceHsxMTBCM30tXHh7MTEwQjZ9XHh7MTEwQjl9LVx4ezExMEJBfVx4ezExMEJEfVx4ezExMENEfVx4ezExMTAwfS1ceHsxMTEwMn1ceHsxMTEyN30tXHh7MTExMkJ9XHh7MTExMkR9LVx4ezExMTM0fVx4ezExMTczfVx4ezExMTgwfS1ceHsxMTE4MX1ceHsxMTFCNn0tXHh7MTExQkV9XHh7MTExQzl9LVx4ezExMUNDfVx4ezExMjJGfS1ceHsxMTIzMX1ceHsxMTIzNH1ceHsxMTIzNn0tXHh7MTEyMzd9XHh7MTEyM0V9XHh7MTEyREZ9XHh7MTEyRTN9LVx4ezExMkVBfVx4ezExMzAwfS1ceHsxMTMwMX1ceHsxMTMzQn0tXHh7MTEzM0N9XHh7MTEzNDB9XHh7MTEzNjZ9LVx4ezExMzZDfVx4ezExMzcwfS1ceHsxMTM3NH1ceHsxMTQzOH0tXHh7MTE0M0Z9XHh7MTE0NDJ9LVx4ezExNDQ0fVx4ezExNDQ2fVx4ezExNDVFfVx4ezExNEIzfS1ceHsxMTRCOH1ceHsxMTRCQX1ceHsxMTRCRn0tXHh7MTE0QzB9XHh7MTE0QzJ9LVx4ezExNEMzfVx4ezExNUIyfS1ceHsxMTVCNX1ceHsxMTVCQ30tXHh7MTE1QkR9XHh7MTE1QkZ9LVx4ezExNUMwfVx4ezExNURDfS1ceHsxMTVERH1ceHsxMTYzM30tXHh7MTE2M0F9XHh7MTE2M0R9XHh7MTE2M0Z9LVx4ezExNjQwfVx4ezExNkFCfVx4ezExNkFEfVx4ezExNkIwfS1ceHsxMTZCNX1ceHsxMTZCN31ceHsxMTcxRH0tXHh7MTE3MUZ9XHh7MTE3MjJ9LVx4ezExNzI1fVx4ezExNzI3fS1ceHsxMTcyQn1ceHsxMTgyRn0tXHh7MTE4Mzd9XHh7MTE4Mzl9LVx4ezExODNBfVx4ezExQTAxfS1ceHsxMUEwQX1ceHsxMUEzM30tXHh7MTFBMzh9XHh7MTFBM0J9LVx4ezExQTNFfVx4ezExQTQ3fVx4ezExQTUxfS1ceHsxMUE1Nn1ceHsxMUE1OX0tXHh7MTFBNUJ9XHh7MTFBOEF9LVx4ezExQTk2fVx4ezExQTk4fS1ceHsxMUE5OX1ceHsxMUMzMH0tXHh7MTFDMzZ9XHh7MTFDMzh9LVx4ezExQzNEfVx4ezExQzNGfVx4ezExQzkyfS1ceHsxMUNBN31ceHsxMUNBQX0tXHh7MTFDQjB9XHh7MTFDQjJ9LVx4ezExQ0IzfVx4ezExQ0I1fS1ceHsxMUNCNn1ceHsxMUQzMX0tXHh7MTFEMzZ9XHh7MTFEM0F9XHh7MTFEM0N9LVx4ezExRDNEfVx4ezExRDNGfS1ceHsxMUQ0NX1ceHsxMUQ0N31ceHsxMUQ5MH0tXHh7MTFEOTF9XHh7MTFEOTV9XHh7MTFEOTd9XHh7MTFFRjN9LVx4ezExRUY0fVx4ezE2QUYwfS1ceHsxNkFGNH1ceHsxNkIzMH0tXHh7MTZCMzZ9XHh7MTZCNDB9LVx4ezE2QjQzfVx4ezE2RjhGfS1ceHsxNkY5Mn1ceHsxNkY5M30tXHh7MTZGOUZ9XHh7MTZGRTB9LVx4ezE2RkUxfVx4ezFCQzlEfS1ceHsxQkM5RX1ceHsxQkNBMH0tXHh7MUJDQTN9XHh7MUQxNjd9LVx4ezFEMTY5fVx4ezFEMTczfS1ceHsxRDE3QX1ceHsxRDE3Qn0tXHh7MUQxODJ9XHh7MUQxODV9LVx4ezFEMThCfVx4ezFEMUFBfS1ceHsxRDFBRH1ceHsxRDI0Mn0tXHh7MUQyNDR9XHh7MURBMDB9LVx4ezFEQTM2fVx4ezFEQTNCfS1ceHsxREE2Q31ceHsxREE3NX1ceHsxREE4NH1ceHsxREE5Qn0tXHh7MURBOUZ9XHh7MURBQTF9LVx4ezFEQUFGfVx4ezFFMDAwfS1ceHsxRTAwNn1ceHsxRTAwOH0tXHh7MUUwMTh9XHh7MUUwMUJ9LVx4ezFFMDIxfVx4ezFFMDIzfS1ceHsxRTAyNH1ceHsxRTAyNn0tXHh7MUUwMkF9XHh7MUU4RDB9LVx4ezFFOEQ2fVx4ezFFOTQ0fS1ceHsxRTk0QX1ceHsxRjNGQn0tXHh7MUYzRkZ9XHh7RTAwMDF9XHh7RTAwMjB9LVx4e0UwMDdGfVx4e0UwMTAwfS1ceHtFMDFFRn1dKShccEwpKFxwTCorKS91JzsK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSAoCiAgJ2EnID0+ICdBJywKICAnYicgPT4gJ0InLAogICdjJyA9PiAnQycsCiAgJ2QnID0+ICdEJywKICAnZScgPT4gJ0UnLAogICdmJyA9PiAnRicsCiAgJ2cnID0+ICdHJywKICAnaCcgPT4gJ0gnLAogICdpJyA9PiAnSScsCiAgJ2onID0+ICdKJywKICAnaycgPT4gJ0snLAogICdsJyA9PiAnTCcsCiAgJ20nID0+ICdNJywKICAnbicgPT4gJ04nLAogICdvJyA9PiAnTycsCiAgJ3AnID0+ICdQJywKICAncScgPT4gJ1EnLAogICdyJyA9PiAnUicsCiAgJ3MnID0+ICdTJywKICAndCcgPT4gJ1QnLAogICd1JyA9PiAnVScsCiAgJ3YnID0+ICdWJywKICAndycgPT4gJ1cnLAogICd4JyA9PiAnWCcsCiAgJ3knID0+ICdZJywKICAneicgPT4gJ1onLAogICfCtScgPT4gJ86cJywKICAnw6AnID0+ICfDgCcsCiAgJ8OhJyA9PiAnw4EnLAogICfDoicgPT4gJ8OCJywKICAnw6MnID0+ICfDgycsCiAgJ8OkJyA9PiAnw4QnLAogICfDpScgPT4gJ8OFJywKICAnw6YnID0+ICfDhicsCiAgJ8OnJyA9PiAnw4cnLAogICfDqCcgPT4gJ8OIJywKICAnw6knID0+ICfDiScsCiAgJ8OqJyA9PiAnw4onLAogICfDqycgPT4gJ8OLJywKICAnw6wnID0+ICfDjCcsCiAgJ8OtJyA9PiAnw40nLAogICfDricgPT4gJ8OOJywKICAnw68nID0+ICfDjycsCiAgJ8OwJyA9PiAnw5AnLAogICfDsScgPT4gJ8ORJywKICAnw7InID0+ICfDkicsCiAgJ8OzJyA9PiAnw5MnLAogICfDtCcgPT4gJ8OUJywKICAnw7UnID0+ICfDlScsCiAgJ8O2JyA9PiAnw5YnLAogICfDuCcgPT4gJ8OYJywKICAnw7knID0+ICfDmScsCiAgJ8O6JyA9PiAnw5onLAogICfDuycgPT4gJ8ObJywKICAnw7wnID0+ICfDnCcsCiAgJ8O9JyA9PiAnw50nLAogICfDvicgPT4gJ8OeJywKICAnw78nID0+ICfFuCcsCiAgJ8SBJyA9PiAnxIAnLAogICfEgycgPT4gJ8SCJywKICAnxIUnID0+ICfEhCcsCiAgJ8SHJyA9PiAnxIYnLAogICfEiScgPT4gJ8SIJywKICAnxIsnID0+ICfEiicsCiAgJ8SNJyA9PiAnxIwnLAogICfEjycgPT4gJ8SOJywKICAnxJEnID0+ICfEkCcsCiAgJ8STJyA9PiAnxJInLAogICfElScgPT4gJ8SUJywKICAnxJcnID0+ICfElicsCiAgJ8SZJyA9PiAnxJgnLAogICfEmycgPT4gJ8SaJywKICAnxJ0nID0+ICfEnCcsCiAgJ8SfJyA9PiAnxJ4nLAogICfEoScgPT4gJ8SgJywKICAnxKMnID0+ICfEoicsCiAgJ8SlJyA9PiAnxKQnLAogICfEpycgPT4gJ8SmJywKICAnxKknID0+ICfEqCcsCiAgJ8SrJyA9PiAnxKonLAogICfErScgPT4gJ8SsJywKICAnxK8nID0+ICfEricsCiAgJ8SxJyA9PiAnSScsCiAgJ8SzJyA9PiAnxLInLAogICfEtScgPT4gJ8S0JywKICAnxLcnID0+ICfEticsCiAgJ8S6JyA9PiAnxLknLAogICfEvCcgPT4gJ8S7JywKICAnxL4nID0+ICfEvScsCiAgJ8WAJyA9PiAnxL8nLAogICfFgicgPT4gJ8WBJywKICAnxYQnID0+ICfFgycsCiAgJ8WGJyA9PiAnxYUnLAogICfFiCcgPT4gJ8WHJywKICAnxYsnID0+ICfFiicsCiAgJ8WNJyA9PiAnxYwnLAogICfFjycgPT4gJ8WOJywKICAnxZEnID0+ICfFkCcsCiAgJ8WTJyA9PiAnxZInLAogICfFlScgPT4gJ8WUJywKICAnxZcnID0+ICfFlicsCiAgJ8WZJyA9PiAnxZgnLAogICfFmycgPT4gJ8WaJywKICAnxZ0nID0+ICfFnCcsCiAgJ8WfJyA9PiAnxZ4nLAogICfFoScgPT4gJ8WgJywKICAnxaMnID0+ICfFoicsCiAgJ8WlJyA9PiAnxaQnLAogICfFpycgPT4gJ8WmJywKICAnxaknID0+ICfFqCcsCiAgJ8WrJyA9PiAnxaonLAogICfFrScgPT4gJ8WsJywKICAnxa8nID0+ICfFricsCiAgJ8WxJyA9PiAnxbAnLAogICfFsycgPT4gJ8WyJywKICAnxbUnID0+ICfFtCcsCiAgJ8W3JyA9PiAnxbYnLAogICfFuicgPT4gJ8W5JywKICAnxbwnID0+ICfFuycsCiAgJ8W+JyA9PiAnxb0nLAogICfFvycgPT4gJ1MnLAogICfGgCcgPT4gJ8mDJywKICAnxoMnID0+ICfGgicsCiAgJ8aFJyA9PiAnxoQnLAogICfGiCcgPT4gJ8aHJywKICAnxownID0+ICfGiycsCiAgJ8aSJyA9PiAnxpEnLAogICfGlScgPT4gJ8e2JywKICAnxpknID0+ICfGmCcsCiAgJ8aaJyA9PiAnyL0nLAogICfGnicgPT4gJ8igJywKICAnxqEnID0+ICfGoCcsCiAgJ8ajJyA9PiAnxqInLAogICfGpScgPT4gJ8akJywKICAnxqgnID0+ICfGpycsCiAgJ8atJyA9PiAnxqwnLAogICfGsCcgPT4gJ8avJywKICAnxrQnID0+ICfGsycsCiAgJ8a2JyA9PiAnxrUnLAogICfGuScgPT4gJ8a4JywKICAnxr0nID0+ICfGvCcsCiAgJ8a/JyA9PiAnx7cnLAogICfHhScgPT4gJ8eEJywKICAnx4YnID0+ICfHhCcsCiAgJ8eIJyA9PiAnx4cnLAogICfHiScgPT4gJ8eHJywKICAnx4snID0+ICfHiicsCiAgJ8eMJyA9PiAnx4onLAogICfHjicgPT4gJ8eNJywKICAnx5AnID0+ICfHjycsCiAgJ8eSJyA9PiAnx5EnLAogICfHlCcgPT4gJ8eTJywKICAnx5YnID0+ICfHlScsCiAgJ8eYJyA9PiAnx5cnLAogICfHmicgPT4gJ8eZJywKICAnx5wnID0+ICfHmycsCiAgJ8edJyA9PiAnxo4nLAogICfHnycgPT4gJ8eeJywKICAnx6EnID0+ICfHoCcsCiAgJ8ejJyA9PiAnx6InLAogICfHpScgPT4gJ8ekJywKICAnx6cnID0+ICfHpicsCiAgJ8epJyA9PiAnx6gnLAogICfHqycgPT4gJ8eqJywKICAnx60nID0+ICfHrCcsCiAgJ8evJyA9PiAnx64nLAogICfHsicgPT4gJ8exJywKICAnx7MnID0+ICfHsScsCiAgJ8e1JyA9PiAnx7QnLAogICfHuScgPT4gJ8e4JywKICAnx7snID0+ICfHuicsCiAgJ8e9JyA9PiAnx7wnLAogICfHvycgPT4gJ8e+JywKICAnyIEnID0+ICfIgCcsCiAgJ8iDJyA9PiAnyIInLAogICfIhScgPT4gJ8iEJywKICAnyIcnID0+ICfIhicsCiAgJ8iJJyA9PiAnyIgnLAogICfIiycgPT4gJ8iKJywKICAnyI0nID0+ICfIjCcsCiAgJ8iPJyA9PiAnyI4nLAogICfIkScgPT4gJ8iQJywKICAnyJMnID0+ICfIkicsCiAgJ8iVJyA9PiAnyJQnLAogICfIlycgPT4gJ8iWJywKICAnyJknID0+ICfImCcsCiAgJ8ibJyA9PiAnyJonLAogICfInScgPT4gJ8icJywKICAnyJ8nID0+ICfInicsCiAgJ8ijJyA9PiAnyKInLAogICfIpScgPT4gJ8ikJywKICAnyKcnID0+ICfIpicsCiAgJ8ipJyA9PiAnyKgnLAogICfIqycgPT4gJ8iqJywKICAnyK0nID0+ICfIrCcsCiAgJ8ivJyA9PiAnyK4nLAogICfIsScgPT4gJ8iwJywKICAnyLMnID0+ICfIsicsCiAgJ8i8JyA9PiAnyLsnLAogICfIvycgPT4gJ+KxvicsCiAgJ8mAJyA9PiAn4rG/JywKICAnyYInID0+ICfJgScsCiAgJ8mHJyA9PiAnyYYnLAogICfJiScgPT4gJ8mIJywKICAnyYsnID0+ICfJiicsCiAgJ8mNJyA9PiAnyYwnLAogICfJjycgPT4gJ8mOJywKICAnyZAnID0+ICfisa8nLAogICfJkScgPT4gJ+KxrScsCiAgJ8mSJyA9PiAn4rGwJywKICAnyZMnID0+ICfGgScsCiAgJ8mUJyA9PiAnxoYnLAogICfJlicgPT4gJ8aJJywKICAnyZcnID0+ICfGiicsCiAgJ8mZJyA9PiAnxo8nLAogICfJmycgPT4gJ8aQJywKICAnyZwnID0+ICfqnqsnLAogICfJoCcgPT4gJ8aTJywKICAnyaEnID0+ICfqnqwnLAogICfJoycgPT4gJ8aUJywKICAnyaUnID0+ICfqno0nLAogICfJpicgPT4gJ+qeqicsCiAgJ8moJyA9PiAnxpcnLAogICfJqScgPT4gJ8aWJywKICAnyaonID0+ICfqnq4nLAogICfJqycgPT4gJ+KxoicsCiAgJ8msJyA9PiAn6p6tJywKICAnya8nID0+ICfGnCcsCiAgJ8mxJyA9PiAn4rGuJywKICAnybInID0+ICfGnScsCiAgJ8m1JyA9PiAnxp8nLAogICfJvScgPT4gJ+KxpCcsCiAgJ8qAJyA9PiAnxqYnLAogICfKgicgPT4gJ+qfhScsCiAgJ8qDJyA9PiAnxqknLAogICfKhycgPT4gJ+qesScsCiAgJ8qIJyA9PiAnxq4nLAogICfKiScgPT4gJ8mEJywKICAnyoonID0+ICfGsScsCiAgJ8qLJyA9PiAnxrInLAogICfKjCcgPT4gJ8mFJywKICAnypInID0+ICfGtycsCiAgJ8qdJyA9PiAn6p6yJywKICAnyp4nID0+ICfqnrAnLAogICfNhScgPT4gJ86ZJywKICAnzbEnID0+ICfNsCcsCiAgJ82zJyA9PiAnzbInLAogICfNtycgPT4gJ822JywKICAnzbsnID0+ICfPvScsCiAgJ828JyA9PiAnz74nLAogICfNvScgPT4gJ8+/JywKICAnzqwnID0+ICfOhicsCiAgJ86tJyA9PiAnzognLAogICfOricgPT4gJ86JJywKICAnzq8nID0+ICfOiicsCiAgJ86xJyA9PiAnzpEnLAogICfOsicgPT4gJ86SJywKICAnzrMnID0+ICfOkycsCiAgJ860JyA9PiAnzpQnLAogICfOtScgPT4gJ86VJywKICAnzrYnID0+ICfOlicsCiAgJ863JyA9PiAnzpcnLAogICfOuCcgPT4gJ86YJywKICAnzrknID0+ICfOmScsCiAgJ866JyA9PiAnzponLAogICfOuycgPT4gJ86bJywKICAnzrwnID0+ICfOnCcsCiAgJ869JyA9PiAnzp0nLAogICfOvicgPT4gJ86eJywKICAnzr8nID0+ICfOnycsCiAgJ8+AJyA9PiAnzqAnLAogICfPgScgPT4gJ86hJywKICAnz4InID0+ICfOoycsCiAgJ8+DJyA9PiAnzqMnLAogICfPhCcgPT4gJ86kJywKICAnz4UnID0+ICfOpScsCiAgJ8+GJyA9PiAnzqYnLAogICfPhycgPT4gJ86nJywKICAnz4gnID0+ICfOqCcsCiAgJ8+JJyA9PiAnzqknLAogICfPiicgPT4gJ86qJywKICAnz4snID0+ICfOqycsCiAgJ8+MJyA9PiAnzownLAogICfPjScgPT4gJ86OJywKICAnz44nID0+ICfOjycsCiAgJ8+QJyA9PiAnzpInLAogICfPkScgPT4gJ86YJywKICAnz5UnID0+ICfOpicsCiAgJ8+WJyA9PiAnzqAnLAogICfPlycgPT4gJ8+PJywKICAnz5knID0+ICfPmCcsCiAgJ8+bJyA9PiAnz5onLAogICfPnScgPT4gJ8+cJywKICAnz58nID0+ICfPnicsCiAgJ8+hJyA9PiAnz6AnLAogICfPoycgPT4gJ8+iJywKICAnz6UnID0+ICfPpCcsCiAgJ8+nJyA9PiAnz6YnLAogICfPqScgPT4gJ8+oJywKICAnz6snID0+ICfPqicsCiAgJ8+tJyA9PiAnz6wnLAogICfPrycgPT4gJ8+uJywKICAnz7AnID0+ICfOmicsCiAgJ8+xJyA9PiAnzqEnLAogICfPsicgPT4gJ8+5JywKICAnz7MnID0+ICfNvycsCiAgJ8+1JyA9PiAnzpUnLAogICfPuCcgPT4gJ8+3JywKICAnz7snID0+ICfPuicsCiAgJ9CwJyA9PiAn0JAnLAogICfQsScgPT4gJ9CRJywKICAn0LInID0+ICfQkicsCiAgJ9CzJyA9PiAn0JMnLAogICfQtCcgPT4gJ9CUJywKICAn0LUnID0+ICfQlScsCiAgJ9C2JyA9PiAn0JYnLAogICfQtycgPT4gJ9CXJywKICAn0LgnID0+ICfQmCcsCiAgJ9C5JyA9PiAn0JknLAogICfQuicgPT4gJ9CaJywKICAn0LsnID0+ICfQmycsCiAgJ9C8JyA9PiAn0JwnLAogICfQvScgPT4gJ9CdJywKICAn0L4nID0+ICfQnicsCiAgJ9C/JyA9PiAn0J8nLAogICfRgCcgPT4gJ9CgJywKICAn0YEnID0+ICfQoScsCiAgJ9GCJyA9PiAn0KInLAogICfRgycgPT4gJ9CjJywKICAn0YQnID0+ICfQpCcsCiAgJ9GFJyA9PiAn0KUnLAogICfRhicgPT4gJ9CmJywKICAn0YcnID0+ICfQpycsCiAgJ9GIJyA9PiAn0KgnLAogICfRiScgPT4gJ9CpJywKICAn0YonID0+ICfQqicsCiAgJ9GLJyA9PiAn0KsnLAogICfRjCcgPT4gJ9CsJywKICAn0Y0nID0+ICfQrScsCiAgJ9GOJyA9PiAn0K4nLAogICfRjycgPT4gJ9CvJywKICAn0ZAnID0+ICfQgCcsCiAgJ9GRJyA9PiAn0IEnLAogICfRkicgPT4gJ9CCJywKICAn0ZMnID0+ICfQgycsCiAgJ9GUJyA9PiAn0IQnLAogICfRlScgPT4gJ9CFJywKICAn0ZYnID0+ICfQhicsCiAgJ9GXJyA9PiAn0IcnLAogICfRmCcgPT4gJ9CIJywKICAn0ZknID0+ICfQiScsCiAgJ9GaJyA9PiAn0IonLAogICfRmycgPT4gJ9CLJywKICAn0ZwnID0+ICfQjCcsCiAgJ9GdJyA9PiAn0I0nLAogICfRnicgPT4gJ9COJywKICAn0Z8nID0+ICfQjycsCiAgJ9GhJyA9PiAn0aAnLAogICfRoycgPT4gJ9GiJywKICAn0aUnID0+ICfRpCcsCiAgJ9GnJyA9PiAn0aYnLAogICfRqScgPT4gJ9GoJywKICAn0asnID0+ICfRqicsCiAgJ9GtJyA9PiAn0awnLAogICfRrycgPT4gJ9GuJywKICAn0bEnID0+ICfRsCcsCiAgJ9GzJyA9PiAn0bInLAogICfRtScgPT4gJ9G0JywKICAn0bcnID0+ICfRticsCiAgJ9G5JyA9PiAn0bgnLAogICfRuycgPT4gJ9G6JywKICAn0b0nID0+ICfRvCcsCiAgJ9G/JyA9PiAn0b4nLAogICfSgScgPT4gJ9KAJywKICAn0osnID0+ICfSiicsCiAgJ9KNJyA9PiAn0ownLAogICfSjycgPT4gJ9KOJywKICAn0pEnID0+ICfSkCcsCiAgJ9KTJyA9PiAn0pInLAogICfSlScgPT4gJ9KUJywKICAn0pcnID0+ICfSlicsCiAgJ9KZJyA9PiAn0pgnLAogICfSmycgPT4gJ9KaJywKICAn0p0nID0+ICfSnCcsCiAgJ9KfJyA9PiAn0p4nLAogICfSoScgPT4gJ9KgJywKICAn0qMnID0+ICfSoicsCiAgJ9KlJyA9PiAn0qQnLAogICfSpycgPT4gJ9KmJywKICAn0qknID0+ICfSqCcsCiAgJ9KrJyA9PiAn0qonLAogICfSrScgPT4gJ9KsJywKICAn0q8nID0+ICfSricsCiAgJ9KxJyA9PiAn0rAnLAogICfSsycgPT4gJ9KyJywKICAn0rUnID0+ICfStCcsCiAgJ9K3JyA9PiAn0rYnLAogICfSuScgPT4gJ9K4JywKICAn0rsnID0+ICfSuicsCiAgJ9K9JyA9PiAn0rwnLAogICfSvycgPT4gJ9K+JywKICAn04InID0+ICfTgScsCiAgJ9OEJyA9PiAn04MnLAogICfThicgPT4gJ9OFJywKICAn04gnID0+ICfThycsCiAgJ9OKJyA9PiAn04knLAogICfTjCcgPT4gJ9OLJywKICAn044nID0+ICfTjScsCiAgJ9OPJyA9PiAn04AnLAogICfTkScgPT4gJ9OQJywKICAn05MnID0+ICfTkicsCiAgJ9OVJyA9PiAn05QnLAogICfTlycgPT4gJ9OWJywKICAn05knID0+ICfTmCcsCiAgJ9ObJyA9PiAn05onLAogICfTnScgPT4gJ9OcJywKICAn058nID0+ICfTnicsCiAgJ9OhJyA9PiAn06AnLAogICfToycgPT4gJ9OiJywKICAn06UnID0+ICfTpCcsCiAgJ9OnJyA9PiAn06YnLAogICfTqScgPT4gJ9OoJywKICAn06snID0+ICfTqicsCiAgJ9OtJyA9PiAn06wnLAogICfTrycgPT4gJ9OuJywKICAn07EnID0+ICfTsCcsCiAgJ9OzJyA9PiAn07InLAogICfTtScgPT4gJ9O0JywKICAn07cnID0+ICfTticsCiAgJ9O5JyA9PiAn07gnLAogICfTuycgPT4gJ9O6JywKICAn070nID0+ICfTvCcsCiAgJ9O/JyA9PiAn074nLAogICfUgScgPT4gJ9SAJywKICAn1IMnID0+ICfUgicsCiAgJ9SFJyA9PiAn1IQnLAogICfUhycgPT4gJ9SGJywKICAn1IknID0+ICfUiCcsCiAgJ9SLJyA9PiAn1IonLAogICfUjScgPT4gJ9SMJywKICAn1I8nID0+ICfUjicsCiAgJ9SRJyA9PiAn1JAnLAogICfUkycgPT4gJ9SSJywKICAn1JUnID0+ICfUlCcsCiAgJ9SXJyA9PiAn1JYnLAogICfUmScgPT4gJ9SYJywKICAn1JsnID0+ICfUmicsCiAgJ9SdJyA9PiAn1JwnLAogICfUnycgPT4gJ9SeJywKICAn1KEnID0+ICfUoCcsCiAgJ9SjJyA9PiAn1KInLAogICfUpScgPT4gJ9SkJywKICAn1KcnID0+ICfUpicsCiAgJ9SpJyA9PiAn1KgnLAogICfUqycgPT4gJ9SqJywKICAn1K0nID0+ICfUrCcsCiAgJ9SvJyA9PiAn1K4nLAogICfVoScgPT4gJ9SxJywKICAn1aInID0+ICfUsicsCiAgJ9WjJyA9PiAn1LMnLAogICfVpCcgPT4gJ9S0JywKICAn1aUnID0+ICfUtScsCiAgJ9WmJyA9PiAn1LYnLAogICfVpycgPT4gJ9S3JywKICAn1agnID0+ICfUuCcsCiAgJ9WpJyA9PiAn1LknLAogICfVqicgPT4gJ9S6JywKICAn1asnID0+ICfUuycsCiAgJ9WsJyA9PiAn1LwnLAogICfVrScgPT4gJ9S9JywKICAn1a4nID0+ICfUvicsCiAgJ9WvJyA9PiAn1L8nLAogICfVsCcgPT4gJ9WAJywKICAn1bEnID0+ICfVgScsCiAgJ9WyJyA9PiAn1YInLAogICfVsycgPT4gJ9WDJywKICAn1bQnID0+ICfVhCcsCiAgJ9W1JyA9PiAn1YUnLAogICfVticgPT4gJ9WGJywKICAn1bcnID0+ICfVhycsCiAgJ9W4JyA9PiAn1YgnLAogICfVuScgPT4gJ9WJJywKICAn1bonID0+ICfViicsCiAgJ9W7JyA9PiAn1YsnLAogICfVvCcgPT4gJ9WMJywKICAn1b0nID0+ICfVjScsCiAgJ9W+JyA9PiAn1Y4nLAogICfVvycgPT4gJ9WPJywKICAn1oAnID0+ICfVkCcsCiAgJ9aBJyA9PiAn1ZEnLAogICfWgicgPT4gJ9WSJywKICAn1oMnID0+ICfVkycsCiAgJ9aEJyA9PiAn1ZQnLAogICfWhScgPT4gJ9WVJywKICAn1oYnID0+ICfVlicsCiAgJ+GDkCcgPT4gJ+GykCcsCiAgJ+GDkScgPT4gJ+GykScsCiAgJ+GDkicgPT4gJ+GykicsCiAgJ+GDkycgPT4gJ+GykycsCiAgJ+GDlCcgPT4gJ+GylCcsCiAgJ+GDlScgPT4gJ+GylScsCiAgJ+GDlicgPT4gJ+GylicsCiAgJ+GDlycgPT4gJ+GylycsCiAgJ+GDmCcgPT4gJ+GymCcsCiAgJ+GDmScgPT4gJ+GymScsCiAgJ+GDmicgPT4gJ+GymicsCiAgJ+GDmycgPT4gJ+GymycsCiAgJ+GDnCcgPT4gJ+GynCcsCiAgJ+GDnScgPT4gJ+GynScsCiAgJ+GDnicgPT4gJ+GynicsCiAgJ+GDnycgPT4gJ+GynycsCiAgJ+GDoCcgPT4gJ+GyoCcsCiAgJ+GDoScgPT4gJ+GyoScsCiAgJ+GDoicgPT4gJ+GyoicsCiAgJ+GDoycgPT4gJ+GyoycsCiAgJ+GDpCcgPT4gJ+GypCcsCiAgJ+GDpScgPT4gJ+GypScsCiAgJ+GDpicgPT4gJ+GypicsCiAgJ+GDpycgPT4gJ+GypycsCiAgJ+GDqCcgPT4gJ+GyqCcsCiAgJ+GDqScgPT4gJ+GyqScsCiAgJ+GDqicgPT4gJ+GyqicsCiAgJ+GDqycgPT4gJ+GyqycsCiAgJ+GDrCcgPT4gJ+GyrCcsCiAgJ+GDrScgPT4gJ+GyrScsCiAgJ+GDricgPT4gJ+GyricsCiAgJ+GDrycgPT4gJ+GyrycsCiAgJ+GDsCcgPT4gJ+GysCcsCiAgJ+GDsScgPT4gJ+GysScsCiAgJ+GDsicgPT4gJ+GysicsCiAgJ+GDsycgPT4gJ+GysycsCiAgJ+GDtCcgPT4gJ+GytCcsCiAgJ+GDtScgPT4gJ+GytScsCiAgJ+GDticgPT4gJ+GyticsCiAgJ+GDtycgPT4gJ+GytycsCiAgJ+GDuCcgPT4gJ+GyuCcsCiAgJ+GDuScgPT4gJ+GyuScsCiAgJ+GDuicgPT4gJ+GyuicsCiAgJ+GDvScgPT4gJ+GyvScsCiAgJ+GDvicgPT4gJ+GyvicsCiAgJ+GDvycgPT4gJ+GyvycsCiAgJ+GPuCcgPT4gJ+GPsCcsCiAgJ+GPuScgPT4gJ+GPsScsCiAgJ+GPuicgPT4gJ+GPsicsCiAgJ+GPuycgPT4gJ+GPsycsCiAgJ+GPvCcgPT4gJ+GPtCcsCiAgJ+GPvScgPT4gJ+GPtScsCiAgJ+GygCcgPT4gJ9CSJywKICAn4bKBJyA9PiAn0JQnLAogICfhsoInID0+ICfQnicsCiAgJ+GygycgPT4gJ9ChJywKICAn4bKEJyA9PiAn0KInLAogICfhsoUnID0+ICfQoicsCiAgJ+GyhicgPT4gJ9CqJywKICAn4bKHJyA9PiAn0aInLAogICfhsognID0+ICfqmYonLAogICfhtbknID0+ICfqnb0nLAogICfhtb0nID0+ICfisaMnLAogICfhto4nID0+ICfqn4YnLAogICfhuIEnID0+ICfhuIAnLAogICfhuIMnID0+ICfhuIInLAogICfhuIUnID0+ICfhuIQnLAogICfhuIcnID0+ICfhuIYnLAogICfhuIknID0+ICfhuIgnLAogICfhuIsnID0+ICfhuIonLAogICfhuI0nID0+ICfhuIwnLAogICfhuI8nID0+ICfhuI4nLAogICfhuJEnID0+ICfhuJAnLAogICfhuJMnID0+ICfhuJInLAogICfhuJUnID0+ICfhuJQnLAogICfhuJcnID0+ICfhuJYnLAogICfhuJknID0+ICfhuJgnLAogICfhuJsnID0+ICfhuJonLAogICfhuJ0nID0+ICfhuJwnLAogICfhuJ8nID0+ICfhuJ4nLAogICfhuKEnID0+ICfhuKAnLAogICfhuKMnID0+ICfhuKInLAogICfhuKUnID0+ICfhuKQnLAogICfhuKcnID0+ICfhuKYnLAogICfhuKknID0+ICfhuKgnLAogICfhuKsnID0+ICfhuKonLAogICfhuK0nID0+ICfhuKwnLAogICfhuK8nID0+ICfhuK4nLAogICfhuLEnID0+ICfhuLAnLAogICfhuLMnID0+ICfhuLInLAogICfhuLUnID0+ICfhuLQnLAogICfhuLcnID0+ICfhuLYnLAogICfhuLknID0+ICfhuLgnLAogICfhuLsnID0+ICfhuLonLAogICfhuL0nID0+ICfhuLwnLAogICfhuL8nID0+ICfhuL4nLAogICfhuYEnID0+ICfhuYAnLAogICfhuYMnID0+ICfhuYInLAogICfhuYUnID0+ICfhuYQnLAogICfhuYcnID0+ICfhuYYnLAogICfhuYknID0+ICfhuYgnLAogICfhuYsnID0+ICfhuYonLAogICfhuY0nID0+ICfhuYwnLAogICfhuY8nID0+ICfhuY4nLAogICfhuZEnID0+ICfhuZAnLAogICfhuZMnID0+ICfhuZInLAogICfhuZUnID0+ICfhuZQnLAogICfhuZcnID0+ICfhuZYnLAogICfhuZknID0+ICfhuZgnLAogICfhuZsnID0+ICfhuZonLAogICfhuZ0nID0+ICfhuZwnLAogICfhuZ8nID0+ICfhuZ4nLAogICfhuaEnID0+ICfhuaAnLAogICfhuaMnID0+ICfhuaInLAogICfhuaUnID0+ICfhuaQnLAogICfhuacnID0+ICfhuaYnLAogICfhuaknID0+ICfhuagnLAogICfhuasnID0+ICfhuaonLAogICfhua0nID0+ICfhuawnLAogICfhua8nID0+ICfhua4nLAogICfhubEnID0+ICfhubAnLAogICfhubMnID0+ICfhubInLAogICfhubUnID0+ICfhubQnLAogICfhubcnID0+ICfhubYnLAogICfhubknID0+ICfhubgnLAogICfhubsnID0+ICfhubonLAogICfhub0nID0+ICfhubwnLAogICfhub8nID0+ICfhub4nLAogICfhuoEnID0+ICfhuoAnLAogICfhuoMnID0+ICfhuoInLAogICfhuoUnID0+ICfhuoQnLAogICfhuocnID0+ICfhuoYnLAogICfhuoknID0+ICfhuognLAogICfhuosnID0+ICfhuoonLAogICfhuo0nID0+ICfhuownLAogICfhuo8nID0+ICfhuo4nLAogICfhupEnID0+ICfhupAnLAogICfhupMnID0+ICfhupInLAogICfhupUnID0+ICfhupQnLAogICfhupsnID0+ICfhuaAnLAogICfhuqEnID0+ICfhuqAnLAogICfhuqMnID0+ICfhuqInLAogICfhuqUnID0+ICfhuqQnLAogICfhuqcnID0+ICfhuqYnLAogICfhuqknID0+ICfhuqgnLAogICfhuqsnID0+ICfhuqonLAogICfhuq0nID0+ICfhuqwnLAogICfhuq8nID0+ICfhuq4nLAogICfhurEnID0+ICfhurAnLAogICfhurMnID0+ICfhurInLAogICfhurUnID0+ICfhurQnLAogICfhurcnID0+ICfhurYnLAogICfhurknID0+ICfhurgnLAogICfhursnID0+ICfhuronLAogICfhur0nID0+ICfhurwnLAogICfhur8nID0+ICfhur4nLAogICfhu4EnID0+ICfhu4AnLAogICfhu4MnID0+ICfhu4InLAogICfhu4UnID0+ICfhu4QnLAogICfhu4cnID0+ICfhu4YnLAogICfhu4knID0+ICfhu4gnLAogICfhu4snID0+ICfhu4onLAogICfhu40nID0+ICfhu4wnLAogICfhu48nID0+ICfhu44nLAogICfhu5EnID0+ICfhu5AnLAogICfhu5MnID0+ICfhu5InLAogICfhu5UnID0+ICfhu5QnLAogICfhu5cnID0+ICfhu5YnLAogICfhu5knID0+ICfhu5gnLAogICfhu5snID0+ICfhu5onLAogICfhu50nID0+ICfhu5wnLAogICfhu58nID0+ICfhu54nLAogICfhu6EnID0+ICfhu6AnLAogICfhu6MnID0+ICfhu6InLAogICfhu6UnID0+ICfhu6QnLAogICfhu6cnID0+ICfhu6YnLAogICfhu6knID0+ICfhu6gnLAogICfhu6snID0+ICfhu6onLAogICfhu60nID0+ICfhu6wnLAogICfhu68nID0+ICfhu64nLAogICfhu7EnID0+ICfhu7AnLAogICfhu7MnID0+ICfhu7InLAogICfhu7UnID0+ICfhu7QnLAogICfhu7cnID0+ICfhu7YnLAogICfhu7knID0+ICfhu7gnLAogICfhu7snID0+ICfhu7onLAogICfhu70nID0+ICfhu7wnLAogICfhu78nID0+ICfhu74nLAogICfhvIAnID0+ICfhvIgnLAogICfhvIEnID0+ICfhvIknLAogICfhvIInID0+ICfhvIonLAogICfhvIMnID0+ICfhvIsnLAogICfhvIQnID0+ICfhvIwnLAogICfhvIUnID0+ICfhvI0nLAogICfhvIYnID0+ICfhvI4nLAogICfhvIcnID0+ICfhvI8nLAogICfhvJAnID0+ICfhvJgnLAogICfhvJEnID0+ICfhvJknLAogICfhvJInID0+ICfhvJonLAogICfhvJMnID0+ICfhvJsnLAogICfhvJQnID0+ICfhvJwnLAogICfhvJUnID0+ICfhvJ0nLAogICfhvKAnID0+ICfhvKgnLAogICfhvKEnID0+ICfhvKknLAogICfhvKInID0+ICfhvKonLAogICfhvKMnID0+ICfhvKsnLAogICfhvKQnID0+ICfhvKwnLAogICfhvKUnID0+ICfhvK0nLAogICfhvKYnID0+ICfhvK4nLAogICfhvKcnID0+ICfhvK8nLAogICfhvLAnID0+ICfhvLgnLAogICfhvLEnID0+ICfhvLknLAogICfhvLInID0+ICfhvLonLAogICfhvLMnID0+ICfhvLsnLAogICfhvLQnID0+ICfhvLwnLAogICfhvLUnID0+ICfhvL0nLAogICfhvLYnID0+ICfhvL4nLAogICfhvLcnID0+ICfhvL8nLAogICfhvYAnID0+ICfhvYgnLAogICfhvYEnID0+ICfhvYknLAogICfhvYInID0+ICfhvYonLAogICfhvYMnID0+ICfhvYsnLAogICfhvYQnID0+ICfhvYwnLAogICfhvYUnID0+ICfhvY0nLAogICfhvZEnID0+ICfhvZknLAogICfhvZMnID0+ICfhvZsnLAogICfhvZUnID0+ICfhvZ0nLAogICfhvZcnID0+ICfhvZ8nLAogICfhvaAnID0+ICfhvagnLAogICfhvaEnID0+ICfhvaknLAogICfhvaInID0+ICfhvaonLAogICfhvaMnID0+ICfhvasnLAogICfhvaQnID0+ICfhvawnLAogICfhvaUnID0+ICfhva0nLAogICfhvaYnID0+ICfhva4nLAogICfhvacnID0+ICfhva8nLAogICfhvbAnID0+ICfhvronLAogICfhvbEnID0+ICfhvrsnLAogICfhvbInID0+ICfhv4gnLAogICfhvbMnID0+ICfhv4knLAogICfhvbQnID0+ICfhv4onLAogICfhvbUnID0+ICfhv4snLAogICfhvbYnID0+ICfhv5onLAogICfhvbcnID0+ICfhv5snLAogICfhvbgnID0+ICfhv7gnLAogICfhvbknID0+ICfhv7knLAogICfhvbonID0+ICfhv6onLAogICfhvbsnID0+ICfhv6snLAogICfhvbwnID0+ICfhv7onLAogICfhvb0nID0+ICfhv7snLAogICfhvoAnID0+ICfhvIjOmScsCiAgJ+G+gScgPT4gJ+G8ic6ZJywKICAn4b6CJyA9PiAn4byKzpknLAogICfhvoMnID0+ICfhvIvOmScsCiAgJ+G+hCcgPT4gJ+G8jM6ZJywKICAn4b6FJyA9PiAn4byNzpknLAogICfhvoYnID0+ICfhvI7OmScsCiAgJ+G+hycgPT4gJ+G8j86ZJywKICAn4b6QJyA9PiAn4byozpknLAogICfhvpEnID0+ICfhvKnOmScsCiAgJ+G+kicgPT4gJ+G8qs6ZJywKICAn4b6TJyA9PiAn4byrzpknLAogICfhvpQnID0+ICfhvKzOmScsCiAgJ+G+lScgPT4gJ+G8rc6ZJywKICAn4b6WJyA9PiAn4byuzpknLAogICfhvpcnID0+ICfhvK/OmScsCiAgJ+G+oCcgPT4gJ+G9qM6ZJywKICAn4b6hJyA9PiAn4b2pzpknLAogICfhvqInID0+ICfhvarOmScsCiAgJ+G+oycgPT4gJ+G9q86ZJywKICAn4b6kJyA9PiAn4b2szpknLAogICfhvqUnID0+ICfhva3OmScsCiAgJ+G+picgPT4gJ+G9rs6ZJywKICAn4b6nJyA9PiAn4b2vzpknLAogICfhvrAnID0+ICfhvrgnLAogICfhvrEnID0+ICfhvrknLAogICfhvrMnID0+ICfOkc6ZJywKICAn4b6+JyA9PiAnzpknLAogICfhv4MnID0+ICfOl86ZJywKICAn4b+QJyA9PiAn4b+YJywKICAn4b+RJyA9PiAn4b+ZJywKICAn4b+gJyA9PiAn4b+oJywKICAn4b+hJyA9PiAn4b+pJywKICAn4b+lJyA9PiAn4b+sJywKICAn4b+zJyA9PiAnzqnOmScsCiAgJ+KFjicgPT4gJ+KEsicsCiAgJ+KFsCcgPT4gJ+KFoCcsCiAgJ+KFsScgPT4gJ+KFoScsCiAgJ+KFsicgPT4gJ+KFoicsCiAgJ+KFsycgPT4gJ+KFoycsCiAgJ+KFtCcgPT4gJ+KFpCcsCiAgJ+KFtScgPT4gJ+KFpScsCiAgJ+KFticgPT4gJ+KFpicsCiAgJ+KFtycgPT4gJ+KFpycsCiAgJ+KFuCcgPT4gJ+KFqCcsCiAgJ+KFuScgPT4gJ+KFqScsCiAgJ+KFuicgPT4gJ+KFqicsCiAgJ+KFuycgPT4gJ+KFqycsCiAgJ+KFvCcgPT4gJ+KFrCcsCiAgJ+KFvScgPT4gJ+KFrScsCiAgJ+KFvicgPT4gJ+KFricsCiAgJ+KFvycgPT4gJ+KFrycsCiAgJ+KGhCcgPT4gJ+KGgycsCiAgJ+KTkCcgPT4gJ+KSticsCiAgJ+KTkScgPT4gJ+KStycsCiAgJ+KTkicgPT4gJ+KSuCcsCiAgJ+KTkycgPT4gJ+KSuScsCiAgJ+KTlCcgPT4gJ+KSuicsCiAgJ+KTlScgPT4gJ+KSuycsCiAgJ+KTlicgPT4gJ+KSvCcsCiAgJ+KTlycgPT4gJ+KSvScsCiAgJ+KTmCcgPT4gJ+KSvicsCiAgJ+KTmScgPT4gJ+KSvycsCiAgJ+KTmicgPT4gJ+KTgCcsCiAgJ+KTmycgPT4gJ+KTgScsCiAgJ+KTnCcgPT4gJ+KTgicsCiAgJ+KTnScgPT4gJ+KTgycsCiAgJ+KTnicgPT4gJ+KThCcsCiAgJ+KTnycgPT4gJ+KThScsCiAgJ+KToCcgPT4gJ+KThicsCiAgJ+KToScgPT4gJ+KThycsCiAgJ+KToicgPT4gJ+KTiCcsCiAgJ+KToycgPT4gJ+KTiScsCiAgJ+KTpCcgPT4gJ+KTiicsCiAgJ+KTpScgPT4gJ+KTiycsCiAgJ+KTpicgPT4gJ+KTjCcsCiAgJ+KTpycgPT4gJ+KTjScsCiAgJ+KTqCcgPT4gJ+KTjicsCiAgJ+KTqScgPT4gJ+KTjycsCiAgJ+KwsCcgPT4gJ+KwgCcsCiAgJ+KwsScgPT4gJ+KwgScsCiAgJ+KwsicgPT4gJ+KwgicsCiAgJ+KwsycgPT4gJ+KwgycsCiAgJ+KwtCcgPT4gJ+KwhCcsCiAgJ+KwtScgPT4gJ+KwhScsCiAgJ+KwticgPT4gJ+KwhicsCiAgJ+KwtycgPT4gJ+KwhycsCiAgJ+KwuCcgPT4gJ+KwiCcsCiAgJ+KwuScgPT4gJ+KwiScsCiAgJ+KwuicgPT4gJ+KwiicsCiAgJ+KwuycgPT4gJ+KwiycsCiAgJ+KwvCcgPT4gJ+KwjCcsCiAgJ+KwvScgPT4gJ+KwjScsCiAgJ+KwvicgPT4gJ+KwjicsCiAgJ+KwvycgPT4gJ+KwjycsCiAgJ+KxgCcgPT4gJ+KwkCcsCiAgJ+KxgScgPT4gJ+KwkScsCiAgJ+KxgicgPT4gJ+KwkicsCiAgJ+KxgycgPT4gJ+KwkycsCiAgJ+KxhCcgPT4gJ+KwlCcsCiAgJ+KxhScgPT4gJ+KwlScsCiAgJ+KxhicgPT4gJ+KwlicsCiAgJ+KxhycgPT4gJ+KwlycsCiAgJ+KxiCcgPT4gJ+KwmCcsCiAgJ+KxiScgPT4gJ+KwmScsCiAgJ+KxiicgPT4gJ+KwmicsCiAgJ+KxiycgPT4gJ+KwmycsCiAgJ+KxjCcgPT4gJ+KwnCcsCiAgJ+KxjScgPT4gJ+KwnScsCiAgJ+KxjicgPT4gJ+KwnicsCiAgJ+KxjycgPT4gJ+KwnycsCiAgJ+KxkCcgPT4gJ+KwoCcsCiAgJ+KxkScgPT4gJ+KwoScsCiAgJ+KxkicgPT4gJ+KwoicsCiAgJ+KxkycgPT4gJ+KwoycsCiAgJ+KxlCcgPT4gJ+KwpCcsCiAgJ+KxlScgPT4gJ+KwpScsCiAgJ+KxlicgPT4gJ+KwpicsCiAgJ+KxlycgPT4gJ+KwpycsCiAgJ+KxmCcgPT4gJ+KwqCcsCiAgJ+KxmScgPT4gJ+KwqScsCiAgJ+KxmicgPT4gJ+KwqicsCiAgJ+KxmycgPT4gJ+KwqycsCiAgJ+KxnCcgPT4gJ+KwrCcsCiAgJ+KxnScgPT4gJ+KwrScsCiAgJ+KxnicgPT4gJ+KwricsCiAgJ+KxoScgPT4gJ+KxoCcsCiAgJ+KxpScgPT4gJ8i6JywKICAn4rGmJyA9PiAnyL4nLAogICfisagnID0+ICfisacnLAogICfisaonID0+ICfisaknLAogICfisawnID0+ICfisasnLAogICfisbMnID0+ICfisbInLAogICfisbYnID0+ICfisbUnLAogICfisoEnID0+ICfisoAnLAogICfisoMnID0+ICfisoInLAogICfisoUnID0+ICfisoQnLAogICfisocnID0+ICfisoYnLAogICfisoknID0+ICfisognLAogICfisosnID0+ICfisoonLAogICfiso0nID0+ICfisownLAogICfiso8nID0+ICfiso4nLAogICfispEnID0+ICfispAnLAogICfispMnID0+ICfispInLAogICfispUnID0+ICfispQnLAogICfispcnID0+ICfispYnLAogICfispknID0+ICfispgnLAogICfispsnID0+ICfisponLAogICfisp0nID0+ICfispwnLAogICfisp8nID0+ICfisp4nLAogICfisqEnID0+ICfisqAnLAogICfisqMnID0+ICfisqInLAogICfisqUnID0+ICfisqQnLAogICfisqcnID0+ICfisqYnLAogICfisqknID0+ICfisqgnLAogICfisqsnID0+ICfisqonLAogICfisq0nID0+ICfisqwnLAogICfisq8nID0+ICfisq4nLAogICfisrEnID0+ICfisrAnLAogICfisrMnID0+ICfisrInLAogICfisrUnID0+ICfisrQnLAogICfisrcnID0+ICfisrYnLAogICfisrknID0+ICfisrgnLAogICfisrsnID0+ICfisronLAogICfisr0nID0+ICfisrwnLAogICfisr8nID0+ICfisr4nLAogICfis4EnID0+ICfis4AnLAogICfis4MnID0+ICfis4InLAogICfis4UnID0+ICfis4QnLAogICfis4cnID0+ICfis4YnLAogICfis4knID0+ICfis4gnLAogICfis4snID0+ICfis4onLAogICfis40nID0+ICfis4wnLAogICfis48nID0+ICfis44nLAogICfis5EnID0+ICfis5AnLAogICfis5MnID0+ICfis5InLAogICfis5UnID0+ICfis5QnLAogICfis5cnID0+ICfis5YnLAogICfis5knID0+ICfis5gnLAogICfis5snID0+ICfis5onLAogICfis50nID0+ICfis5wnLAogICfis58nID0+ICfis54nLAogICfis6EnID0+ICfis6AnLAogICfis6MnID0+ICfis6InLAogICfis6wnID0+ICfis6snLAogICfis64nID0+ICfis60nLAogICfis7MnID0+ICfis7InLAogICfitIAnID0+ICfhgqAnLAogICfitIEnID0+ICfhgqEnLAogICfitIInID0+ICfhgqInLAogICfitIMnID0+ICfhgqMnLAogICfitIQnID0+ICfhgqQnLAogICfitIUnID0+ICfhgqUnLAogICfitIYnID0+ICfhgqYnLAogICfitIcnID0+ICfhgqcnLAogICfitIgnID0+ICfhgqgnLAogICfitIknID0+ICfhgqknLAogICfitIonID0+ICfhgqonLAogICfitIsnID0+ICfhgqsnLAogICfitIwnID0+ICfhgqwnLAogICfitI0nID0+ICfhgq0nLAogICfitI4nID0+ICfhgq4nLAogICfitI8nID0+ICfhgq8nLAogICfitJAnID0+ICfhgrAnLAogICfitJEnID0+ICfhgrEnLAogICfitJInID0+ICfhgrInLAogICfitJMnID0+ICfhgrMnLAogICfitJQnID0+ICfhgrQnLAogICfitJUnID0+ICfhgrUnLAogICfitJYnID0+ICfhgrYnLAogICfitJcnID0+ICfhgrcnLAogICfitJgnID0+ICfhgrgnLAogICfitJknID0+ICfhgrknLAogICfitJonID0+ICfhgronLAogICfitJsnID0+ICfhgrsnLAogICfitJwnID0+ICfhgrwnLAogICfitJ0nID0+ICfhgr0nLAogICfitJ4nID0+ICfhgr4nLAogICfitJ8nID0+ICfhgr8nLAogICfitKAnID0+ICfhg4AnLAogICfitKEnID0+ICfhg4EnLAogICfitKInID0+ICfhg4InLAogICfitKMnID0+ICfhg4MnLAogICfitKQnID0+ICfhg4QnLAogICfitKUnID0+ICfhg4UnLAogICfitKcnID0+ICfhg4cnLAogICfitK0nID0+ICfhg40nLAogICfqmYEnID0+ICfqmYAnLAogICfqmYMnID0+ICfqmYInLAogICfqmYUnID0+ICfqmYQnLAogICfqmYcnID0+ICfqmYYnLAogICfqmYknID0+ICfqmYgnLAogICfqmYsnID0+ICfqmYonLAogICfqmY0nID0+ICfqmYwnLAogICfqmY8nID0+ICfqmY4nLAogICfqmZEnID0+ICfqmZAnLAogICfqmZMnID0+ICfqmZInLAogICfqmZUnID0+ICfqmZQnLAogICfqmZcnID0+ICfqmZYnLAogICfqmZknID0+ICfqmZgnLAogICfqmZsnID0+ICfqmZonLAogICfqmZ0nID0+ICfqmZwnLAogICfqmZ8nID0+ICfqmZ4nLAogICfqmaEnID0+ICfqmaAnLAogICfqmaMnID0+ICfqmaInLAogICfqmaUnID0+ICfqmaQnLAogICfqmacnID0+ICfqmaYnLAogICfqmaknID0+ICfqmagnLAogICfqmasnID0+ICfqmaonLAogICfqma0nID0+ICfqmawnLAogICfqmoEnID0+ICfqmoAnLAogICfqmoMnID0+ICfqmoInLAogICfqmoUnID0+ICfqmoQnLAogICfqmocnID0+ICfqmoYnLAogICfqmoknID0+ICfqmognLAogICfqmosnID0+ICfqmoonLAogICfqmo0nID0+ICfqmownLAogICfqmo8nID0+ICfqmo4nLAogICfqmpEnID0+ICfqmpAnLAogICfqmpMnID0+ICfqmpInLAogICfqmpUnID0+ICfqmpQnLAogICfqmpcnID0+ICfqmpYnLAogICfqmpknID0+ICfqmpgnLAogICfqmpsnID0+ICfqmponLAogICfqnKMnID0+ICfqnKInLAogICfqnKUnID0+ICfqnKQnLAogICfqnKcnID0+ICfqnKYnLAogICfqnKknID0+ICfqnKgnLAogICfqnKsnID0+ICfqnKonLAogICfqnK0nID0+ICfqnKwnLAogICfqnK8nID0+ICfqnK4nLAogICfqnLMnID0+ICfqnLInLAogICfqnLUnID0+ICfqnLQnLAogICfqnLcnID0+ICfqnLYnLAogICfqnLknID0+ICfqnLgnLAogICfqnLsnID0+ICfqnLonLAogICfqnL0nID0+ICfqnLwnLAogICfqnL8nID0+ICfqnL4nLAogICfqnYEnID0+ICfqnYAnLAogICfqnYMnID0+ICfqnYInLAogICfqnYUnID0+ICfqnYQnLAogICfqnYcnID0+ICfqnYYnLAogICfqnYknID0+ICfqnYgnLAogICfqnYsnID0+ICfqnYonLAogICfqnY0nID0+ICfqnYwnLAogICfqnY8nID0+ICfqnY4nLAogICfqnZEnID0+ICfqnZAnLAogICfqnZMnID0+ICfqnZInLAogICfqnZUnID0+ICfqnZQnLAogICfqnZcnID0+ICfqnZYnLAogICfqnZknID0+ICfqnZgnLAogICfqnZsnID0+ICfqnZonLAogICfqnZ0nID0+ICfqnZwnLAogICfqnZ8nID0+ICfqnZ4nLAogICfqnaEnID0+ICfqnaAnLAogICfqnaMnID0+ICfqnaInLAogICfqnaUnID0+ICfqnaQnLAogICfqnacnID0+ICfqnaYnLAogICfqnaknID0+ICfqnagnLAogICfqnasnID0+ICfqnaonLAogICfqna0nID0+ICfqnawnLAogICfqna8nID0+ICfqna4nLAogICfqnbonID0+ICfqnbknLAogICfqnbwnID0+ICfqnbsnLAogICfqnb8nID0+ICfqnb4nLAogICfqnoEnID0+ICfqnoAnLAogICfqnoMnID0+ICfqnoInLAogICfqnoUnID0+ICfqnoQnLAogICfqnocnID0+ICfqnoYnLAogICfqnownID0+ICfqnosnLAogICfqnpEnID0+ICfqnpAnLAogICfqnpMnID0+ICfqnpInLAogICfqnpQnID0+ICfqn4QnLAogICfqnpcnID0+ICfqnpYnLAogICfqnpknID0+ICfqnpgnLAogICfqnpsnID0+ICfqnponLAogICfqnp0nID0+ICfqnpwnLAogICfqnp8nID0+ICfqnp4nLAogICfqnqEnID0+ICfqnqAnLAogICfqnqMnID0+ICfqnqInLAogICfqnqUnID0+ICfqnqQnLAogICfqnqcnID0+ICfqnqYnLAogICfqnqknID0+ICfqnqgnLAogICfqnrUnID0+ICfqnrQnLAogICfqnrcnID0+ICfqnrYnLAogICfqnrknID0+ICfqnrgnLAogICfqnrsnID0+ICfqnronLAogICfqnr0nID0+ICfqnrwnLAogICfqnr8nID0+ICfqnr4nLAogICfqn4MnID0+ICfqn4InLAogICfqn4gnID0+ICfqn4cnLAogICfqn4onID0+ICfqn4knLAogICfqn7YnID0+ICfqn7UnLAogICfqrZMnID0+ICfqnrMnLAogICfqrbAnID0+ICfhjqAnLAogICfqrbEnID0+ICfhjqEnLAogICfqrbInID0+ICfhjqInLAogICfqrbMnID0+ICfhjqMnLAogICfqrbQnID0+ICfhjqQnLAogICfqrbUnID0+ICfhjqUnLAogICfqrbYnID0+ICfhjqYnLAogICfqrbcnID0+ICfhjqcnLAogICfqrbgnID0+ICfhjqgnLAogICfqrbknID0+ICfhjqknLAogICfqrbonID0+ICfhjqonLAogICfqrbsnID0+ICfhjqsnLAogICfqrbwnID0+ICfhjqwnLAogICfqrb0nID0+ICfhjq0nLAogICfqrb4nID0+ICfhjq4nLAogICfqrb8nID0+ICfhjq8nLAogICfqroAnID0+ICfhjrAnLAogICfqroEnID0+ICfhjrEnLAogICfqroInID0+ICfhjrInLAogICfqroMnID0+ICfhjrMnLAogICfqroQnID0+ICfhjrQnLAogICfqroUnID0+ICfhjrUnLAogICfqroYnID0+ICfhjrYnLAogICfqrocnID0+ICfhjrcnLAogICfqrognID0+ICfhjrgnLAogICfqroknID0+ICfhjrknLAogICfqroonID0+ICfhjronLAogICfqrosnID0+ICfhjrsnLAogICfqrownID0+ICfhjrwnLAogICfqro0nID0+ICfhjr0nLAogICfqro4nID0+ICfhjr4nLAogICfqro8nID0+ICfhjr8nLAogICfqrpAnID0+ICfhj4AnLAogICfqrpEnID0+ICfhj4EnLAogICfqrpInID0+ICfhj4InLAogICfqrpMnID0+ICfhj4MnLAogICfqrpQnID0+ICfhj4QnLAogICfqrpUnID0+ICfhj4UnLAogICfqrpYnID0+ICfhj4YnLAogICfqrpcnID0+ICfhj4cnLAogICfqrpgnID0+ICfhj4gnLAogICfqrpknID0+ICfhj4knLAogICfqrponID0+ICfhj4onLAogICfqrpsnID0+ICfhj4snLAogICfqrpwnID0+ICfhj4wnLAogICfqrp0nID0+ICfhj40nLAogICfqrp4nID0+ICfhj44nLAogICfqrp8nID0+ICfhj48nLAogICfqrqAnID0+ICfhj5AnLAogICfqrqEnID0+ICfhj5EnLAogICfqrqInID0+ICfhj5InLAogICfqrqMnID0+ICfhj5MnLAogICfqrqQnID0+ICfhj5QnLAogICfqrqUnID0+ICfhj5UnLAogICfqrqYnID0+ICfhj5YnLAogICfqrqcnID0+ICfhj5cnLAogICfqrqgnID0+ICfhj5gnLAogICfqrqknID0+ICfhj5knLAogICfqrqonID0+ICfhj5onLAogICfqrqsnID0+ICfhj5snLAogICfqrqwnID0+ICfhj5wnLAogICfqrq0nID0+ICfhj50nLAogICfqrq4nID0+ICfhj54nLAogICfqrq8nID0+ICfhj58nLAogICfqrrAnID0+ICfhj6AnLAogICfqrrEnID0+ICfhj6EnLAogICfqrrInID0+ICfhj6InLAogICfqrrMnID0+ICfhj6MnLAogICfqrrQnID0+ICfhj6QnLAogICfqrrUnID0+ICfhj6UnLAogICfqrrYnID0+ICfhj6YnLAogICfqrrcnID0+ICfhj6cnLAogICfqrrgnID0+ICfhj6gnLAogICfqrrknID0+ICfhj6knLAogICfqrronID0+ICfhj6onLAogICfqrrsnID0+ICfhj6snLAogICfqrrwnID0+ICfhj6wnLAogICfqrr0nID0+ICfhj60nLAogICfqrr4nID0+ICfhj64nLAogICfqrr8nID0+ICfhj68nLAogICfvvYEnID0+ICfvvKEnLAogICfvvYInID0+ICfvvKInLAogICfvvYMnID0+ICfvvKMnLAogICfvvYQnID0+ICfvvKQnLAogICfvvYUnID0+ICfvvKUnLAogICfvvYYnID0+ICfvvKYnLAogICfvvYcnID0+ICfvvKcnLAogICfvvYgnID0+ICfvvKgnLAogICfvvYknID0+ICfvvKknLAogICfvvYonID0+ICfvvKonLAogICfvvYsnID0+ICfvvKsnLAogICfvvYwnID0+ICfvvKwnLAogICfvvY0nID0+ICfvvK0nLAogICfvvY4nID0+ICfvvK4nLAogICfvvY8nID0+ICfvvK8nLAogICfvvZAnID0+ICfvvLAnLAogICfvvZEnID0+ICfvvLEnLAogICfvvZInID0+ICfvvLInLAogICfvvZMnID0+ICfvvLMnLAogICfvvZQnID0+ICfvvLQnLAogICfvvZUnID0+ICfvvLUnLAogICfvvZYnID0+ICfvvLYnLAogICfvvZcnID0+ICfvvLcnLAogICfvvZgnID0+ICfvvLgnLAogICfvvZknID0+ICfvvLknLAogICfvvZonID0+ICfvvLonLAogICfwkJCoJyA9PiAn8JCQgCcsCiAgJ/CQkKknID0+ICfwkJCBJywKICAn8JCQqicgPT4gJ/CQkIInLAogICfwkJCrJyA9PiAn8JCQgycsCiAgJ/CQkKwnID0+ICfwkJCEJywKICAn8JCQrScgPT4gJ/CQkIUnLAogICfwkJCuJyA9PiAn8JCQhicsCiAgJ/CQkK8nID0+ICfwkJCHJywKICAn8JCQsCcgPT4gJ/CQkIgnLAogICfwkJCxJyA9PiAn8JCQiScsCiAgJ/CQkLInID0+ICfwkJCKJywKICAn8JCQsycgPT4gJ/CQkIsnLAogICfwkJC0JyA9PiAn8JCQjCcsCiAgJ/CQkLUnID0+ICfwkJCNJywKICAn8JCQticgPT4gJ/CQkI4nLAogICfwkJC3JyA9PiAn8JCQjycsCiAgJ/CQkLgnID0+ICfwkJCQJywKICAn8JCQuScgPT4gJ/CQkJEnLAogICfwkJC6JyA9PiAn8JCQkicsCiAgJ/CQkLsnID0+ICfwkJCTJywKICAn8JCQvCcgPT4gJ/CQkJQnLAogICfwkJC9JyA9PiAn8JCQlScsCiAgJ/CQkL4nID0+ICfwkJCWJywKICAn8JCQvycgPT4gJ/CQkJcnLAogICfwkJGAJyA9PiAn8JCQmCcsCiAgJ/CQkYEnID0+ICfwkJCZJywKICAn8JCRgicgPT4gJ/CQkJonLAogICfwkJGDJyA9PiAn8JCQmycsCiAgJ/CQkYQnID0+ICfwkJCcJywKICAn8JCRhScgPT4gJ/CQkJ0nLAogICfwkJGGJyA9PiAn8JCQnicsCiAgJ/CQkYcnID0+ICfwkJCfJywKICAn8JCRiCcgPT4gJ/CQkKAnLAogICfwkJGJJyA9PiAn8JCQoScsCiAgJ/CQkYonID0+ICfwkJCiJywKICAn8JCRiycgPT4gJ/CQkKMnLAogICfwkJGMJyA9PiAn8JCQpCcsCiAgJ/CQkY0nID0+ICfwkJClJywKICAn8JCRjicgPT4gJ/CQkKYnLAogICfwkJGPJyA9PiAn8JCQpycsCiAgJ/CQk5gnID0+ICfwkJKwJywKICAn8JCTmScgPT4gJ/CQkrEnLAogICfwkJOaJyA9PiAn8JCSsicsCiAgJ/CQk5snID0+ICfwkJKzJywKICAn8JCTnCcgPT4gJ/CQkrQnLAogICfwkJOdJyA9PiAn8JCStScsCiAgJ/CQk54nID0+ICfwkJK2JywKICAn8JCTnycgPT4gJ/CQkrcnLAogICfwkJOgJyA9PiAn8JCSuCcsCiAgJ/CQk6EnID0+ICfwkJK5JywKICAn8JCToicgPT4gJ/CQkronLAogICfwkJOjJyA9PiAn8JCSuycsCiAgJ/CQk6QnID0+ICfwkJK8JywKICAn8JCTpScgPT4gJ/CQkr0nLAogICfwkJOmJyA9PiAn8JCSvicsCiAgJ/CQk6cnID0+ICfwkJK/JywKICAn8JCTqCcgPT4gJ/CQk4AnLAogICfwkJOpJyA9PiAn8JCTgScsCiAgJ/CQk6onID0+ICfwkJOCJywKICAn8JCTqycgPT4gJ/CQk4MnLAogICfwkJOsJyA9PiAn8JCThCcsCiAgJ/CQk60nID0+ICfwkJOFJywKICAn8JCTricgPT4gJ/CQk4YnLAogICfwkJOvJyA9PiAn8JCThycsCiAgJ/CQk7AnID0+ICfwkJOIJywKICAn8JCTsScgPT4gJ/CQk4knLAogICfwkJOyJyA9PiAn8JCTiicsCiAgJ/CQk7MnID0+ICfwkJOLJywKICAn8JCTtCcgPT4gJ/CQk4wnLAogICfwkJO1JyA9PiAn8JCTjScsCiAgJ/CQk7YnID0+ICfwkJOOJywKICAn8JCTtycgPT4gJ/CQk48nLAogICfwkJO4JyA9PiAn8JCTkCcsCiAgJ/CQk7knID0+ICfwkJORJywKICAn8JCTuicgPT4gJ/CQk5InLAogICfwkJO7JyA9PiAn8JCTkycsCiAgJ/CQs4AnID0+ICfwkLKAJywKICAn8JCzgScgPT4gJ/CQsoEnLAogICfwkLOCJyA9PiAn8JCygicsCiAgJ/CQs4MnID0+ICfwkLKDJywKICAn8JCzhCcgPT4gJ/CQsoQnLAogICfwkLOFJyA9PiAn8JCyhScsCiAgJ/CQs4YnID0+ICfwkLKGJywKICAn8JCzhycgPT4gJ/CQsocnLAogICfwkLOIJyA9PiAn8JCyiCcsCiAgJ/CQs4knID0+ICfwkLKJJywKICAn8JCziicgPT4gJ/CQsoonLAogICfwkLOLJyA9PiAn8JCyiycsCiAgJ/CQs4wnID0+ICfwkLKMJywKICAn8JCzjScgPT4gJ/CQso0nLAogICfwkLOOJyA9PiAn8JCyjicsCiAgJ/CQs48nID0+ICfwkLKPJywKICAn8JCzkCcgPT4gJ/CQspAnLAogICfwkLORJyA9PiAn8JCykScsCiAgJ/CQs5InID0+ICfwkLKSJywKICAn8JCzkycgPT4gJ/CQspMnLAogICfwkLOUJyA9PiAn8JCylCcsCiAgJ/CQs5UnID0+ICfwkLKVJywKICAn8JCzlicgPT4gJ/CQspYnLAogICfwkLOXJyA9PiAn8JCylycsCiAgJ/CQs5gnID0+ICfwkLKYJywKICAn8JCzmScgPT4gJ/CQspknLAogICfwkLOaJyA9PiAn8JCymicsCiAgJ/CQs5snID0+ICfwkLKbJywKICAn8JCznCcgPT4gJ/CQspwnLAogICfwkLOdJyA9PiAn8JCynScsCiAgJ/CQs54nID0+ICfwkLKeJywKICAn8JCznycgPT4gJ/CQsp8nLAogICfwkLOgJyA9PiAn8JCyoCcsCiAgJ/CQs6EnID0+ICfwkLKhJywKICAn8JCzoicgPT4gJ/CQsqInLAogICfwkLOjJyA9PiAn8JCyoycsCiAgJ/CQs6QnID0+ICfwkLKkJywKICAn8JCzpScgPT4gJ/CQsqUnLAogICfwkLOmJyA9PiAn8JCypicsCiAgJ/CQs6cnID0+ICfwkLKnJywKICAn8JCzqCcgPT4gJ/CQsqgnLAogICfwkLOpJyA9PiAn8JCyqScsCiAgJ/CQs6onID0+ICfwkLKqJywKICAn8JCzqycgPT4gJ/CQsqsnLAogICfwkLOsJyA9PiAn8JCyrCcsCiAgJ/CQs60nID0+ICfwkLKtJywKICAn8JCzricgPT4gJ/CQsq4nLAogICfwkLOvJyA9PiAn8JCyrycsCiAgJ/CQs7AnID0+ICfwkLKwJywKICAn8JCzsScgPT4gJ/CQsrEnLAogICfwkLOyJyA9PiAn8JCysicsCiAgJ/CRo4AnID0+ICfwkaKgJywKICAn8JGjgScgPT4gJ/CRoqEnLAogICfwkaOCJyA9PiAn8JGioicsCiAgJ/CRo4MnID0+ICfwkaKjJywKICAn8JGjhCcgPT4gJ/CRoqQnLAogICfwkaOFJyA9PiAn8JGipScsCiAgJ/CRo4YnID0+ICfwkaKmJywKICAn8JGjhycgPT4gJ/CRoqcnLAogICfwkaOIJyA9PiAn8JGiqCcsCiAgJ/CRo4knID0+ICfwkaKpJywKICAn8JGjiicgPT4gJ/CRoqonLAogICfwkaOLJyA9PiAn8JGiqycsCiAgJ/CRo4wnID0+ICfwkaKsJywKICAn8JGjjScgPT4gJ/CRoq0nLAogICfwkaOOJyA9PiAn8JGiricsCiAgJ/CRo48nID0+ICfwkaKvJywKICAn8JGjkCcgPT4gJ/CRorAnLAogICfwkaORJyA9PiAn8JGisScsCiAgJ/CRo5InID0+ICfwkaKyJywKICAn8JGjkycgPT4gJ/CRorMnLAogICfwkaOUJyA9PiAn8JGitCcsCiAgJ/CRo5UnID0+ICfwkaK1JywKICAn8JGjlicgPT4gJ/CRorYnLAogICfwkaOXJyA9PiAn8JGitycsCiAgJ/CRo5gnID0+ICfwkaK4JywKICAn8JGjmScgPT4gJ/CRorknLAogICfwkaOaJyA9PiAn8JGiuicsCiAgJ/CRo5snID0+ICfwkaK7JywKICAn8JGjnCcgPT4gJ/CRorwnLAogICfwkaOdJyA9PiAn8JGivScsCiAgJ/CRo54nID0+ICfwkaK+JywKICAn8JGjnycgPT4gJ/CRor8nLAogICfwlrmgJyA9PiAn8Ja5gCcsCiAgJ/CWuaEnID0+ICfwlrmBJywKICAn8Ja5oicgPT4gJ/CWuYInLAogICfwlrmjJyA9PiAn8Ja5gycsCiAgJ/CWuaQnID0+ICfwlrmEJywKICAn8Ja5pScgPT4gJ/CWuYUnLAogICfwlrmmJyA9PiAn8Ja5hicsCiAgJ/CWuacnID0+ICfwlrmHJywKICAn8Ja5qCcgPT4gJ/CWuYgnLAogICfwlrmpJyA9PiAn8Ja5iScsCiAgJ/CWuaonID0+ICfwlrmKJywKICAn8Ja5qycgPT4gJ/CWuYsnLAogICfwlrmsJyA9PiAn8Ja5jCcsCiAgJ/CWua0nID0+ICfwlrmNJywKICAn8Ja5ricgPT4gJ/CWuY4nLAogICfwlrmvJyA9PiAn8Ja5jycsCiAgJ/CWubAnID0+ICfwlrmQJywKICAn8Ja5sScgPT4gJ/CWuZEnLAogICfwlrmyJyA9PiAn8Ja5kicsCiAgJ/CWubMnID0+ICfwlrmTJywKICAn8Ja5tCcgPT4gJ/CWuZQnLAogICfwlrm1JyA9PiAn8Ja5lScsCiAgJ/CWubYnID0+ICfwlrmWJywKICAn8Ja5tycgPT4gJ/CWuZcnLAogICfwlrm4JyA9PiAn8Ja5mCcsCiAgJ/CWubknID0+ICfwlrmZJywKICAn8Ja5uicgPT4gJ/CWuZonLAogICfwlrm7JyA9PiAn8Ja5mycsCiAgJ/CWubwnID0+ICfwlrmcJywKICAn8Ja5vScgPT4gJ/CWuZ0nLAogICfwlrm+JyA9PiAn8Ja5nicsCiAgJ/CWub8nID0+ICfwlrmfJywKICAn8J6koicgPT4gJ/CepIAnLAogICfwnqSjJyA9PiAn8J6kgScsCiAgJ/CepKQnID0+ICfwnqSCJywKICAn8J6kpScgPT4gJ/CepIMnLAogICfwnqSmJyA9PiAn8J6khCcsCiAgJ/CepKcnID0+ICfwnqSFJywKICAn8J6kqCcgPT4gJ/CepIYnLAogICfwnqSpJyA9PiAn8J6khycsCiAgJ/CepKonID0+ICfwnqSIJywKICAn8J6kqycgPT4gJ/CepIknLAogICfwnqSsJyA9PiAn8J6kiicsCiAgJ/CepK0nID0+ICfwnqSLJywKICAn8J6kricgPT4gJ/CepIwnLAogICfwnqSvJyA9PiAn8J6kjScsCiAgJ/CepLAnID0+ICfwnqSOJywKICAn8J6ksScgPT4gJ/CepI8nLAogICfwnqSyJyA9PiAn8J6kkCcsCiAgJ/CepLMnID0+ICfwnqSRJywKICAn8J6ktCcgPT4gJ/CepJInLAogICfwnqS1JyA9PiAn8J6kkycsCiAgJ/CepLYnID0+ICfwnqSUJywKICAn8J6ktycgPT4gJ/CepJUnLAogICfwnqS4JyA9PiAn8J6klicsCiAgJ/CepLknID0+ICfwnqSXJywKICAn8J6kuicgPT4gJ/CepJgnLAogICfwnqS7JyA9PiAn8J6kmScsCiAgJ/CepLwnID0+ICfwnqSaJywKICAn8J6kvScgPT4gJ/CepJsnLAogICfwnqS+JyA9PiAn8J6knCcsCiAgJ/CepL8nID0+ICfwnqSdJywKICAn8J6lgCcgPT4gJ/CepJ4nLAogICfwnqWBJyA9PiAn8J6knycsCiAgJ/CepYInID0+ICfwnqSgJywKICAn8J6lgycgPT4gJ/CepKEnLAogICfDnycgPT4gJ1NTJywKICAn76yAJyA9PiAnRkYnLAogICfvrIEnID0+ICdGSScsCiAgJ++sgicgPT4gJ0ZMJywKICAn76yDJyA9PiAnRkZJJywKICAn76yEJyA9PiAnRkZMJywKICAn76yFJyA9PiAnU1QnLAogICfvrIYnID0+ICdTVCcsCiAgJ9aHJyA9PiAn1LXVkicsCiAgJ++skycgPT4gJ9WE1YYnLAogICfvrJQnID0+ICfVhNS1JywKICAn76yVJyA9PiAn1YTUuycsCiAgJ++slicgPT4gJ9WO1YYnLAogICfvrJcnID0+ICfVhNS9JywKICAnxYknID0+ICfKvE4nLAogICfOkCcgPT4gJ86ZzIjMgScsCiAgJ86wJyA9PiAnzqXMiMyBJywKICAnx7AnID0+ICdKzIwnLAogICfhupYnID0+ICdIzLEnLAogICfhupcnID0+ICdUzIgnLAogICfhupgnID0+ICdXzIonLAogICfhupknID0+ICdZzIonLAogICfhuponID0+ICdByr4nLAogICfhvZAnID0+ICfOpcyTJywKICAn4b2SJyA9PiAnzqXMk8yAJywKICAn4b2UJyA9PiAnzqXMk8yBJywKICAn4b2WJyA9PiAnzqXMk82CJywKICAn4b62JyA9PiAnzpHNgicsCiAgJ+G/hicgPT4gJ86XzYInLAogICfhv5InID0+ICfOmcyIzIAnLAogICfhv5MnID0+ICfOmcyIzIEnLAogICfhv5YnID0+ICfOmc2CJywKICAn4b+XJyA9PiAnzpnMiM2CJywKICAn4b+iJyA9PiAnzqXMiMyAJywKICAn4b+jJyA9PiAnzqXMiMyBJywKICAn4b+kJyA9PiAnzqHMkycsCiAgJ+G/picgPT4gJ86lzYInLAogICfhv6cnID0+ICfOpcyIzYInLAogICfhv7YnID0+ICfOqc2CJywKICAn4b6IJyA9PiAn4byIzpknLAogICfhvoknID0+ICfhvInOmScsCiAgJ+G+iicgPT4gJ+G8is6ZJywKICAn4b6LJyA9PiAn4byLzpknLAogICfhvownID0+ICfhvIzOmScsCiAgJ+G+jScgPT4gJ+G8jc6ZJywKICAn4b6OJyA9PiAn4byOzpknLAogICfhvo8nID0+ICfhvI/OmScsCiAgJ+G+mCcgPT4gJ+G8qM6ZJywKICAn4b6ZJyA9PiAn4bypzpknLAogICfhvponID0+ICfhvKrOmScsCiAgJ+G+mycgPT4gJ+G8q86ZJywKICAn4b6cJyA9PiAn4byszpknLAogICfhvp0nID0+ICfhvK3OmScsCiAgJ+G+nicgPT4gJ+G8rs6ZJywKICAn4b6fJyA9PiAn4byvzpknLAogICfhvqgnID0+ICfhvajOmScsCiAgJ+G+qScgPT4gJ+G9qc6ZJywKICAn4b6qJyA9PiAn4b2qzpknLAogICfhvqsnID0+ICfhvavOmScsCiAgJ+G+rCcgPT4gJ+G9rM6ZJywKICAn4b6tJyA9PiAn4b2tzpknLAogICfhvq4nID0+ICfhva7OmScsCiAgJ+G+rycgPT4gJ+G9r86ZJywKICAn4b68JyA9PiAnzpHOmScsCiAgJ+G/jCcgPT4gJ86XzpknLAogICfhv7wnID0+ICfOqc6ZJywKICAn4b6yJyA9PiAn4b66zpknLAogICfhvrQnID0+ICfOhs6ZJywKICAn4b+CJyA9PiAn4b+KzpknLAogICfhv4QnID0+ICfOic6ZJywKICAn4b+yJyA9PiAn4b+6zpknLAogICfhv7QnID0+ICfOj86ZJywKICAn4b63JyA9PiAnzpHNgs6ZJywKICAn4b+HJyA9PiAnzpfNgs6ZJywKICAn4b+3JyA9PiAnzqnNgs6ZJywKKTsK]]></data>
	</file>
	<file>
	  <filename>/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQoKIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDxodHRwOi8vZnNmLm9yZy8+CiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCiBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQpzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcwpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uJ3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1dGhvcnMgY29tbWl0IHRvCnVzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KeW91ciBwcm9ncmFtcywgdG9vLgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKaWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKaW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UKZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAp5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQpzb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRoZWlyCnJpZ2h0cy4KCiAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAooMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LApkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgoKICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgp0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQpzb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKd2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKYXV0aG9ycycgcmVwdXRhdGlvbnMuCgogIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCnBhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQpwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKbW9kaWZpY2F0aW9uIGZvbGxvdy4KCiAgICAgICAgICAgICAgICAgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LApyZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbgp0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KCkFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQppcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgpXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCnNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQpjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCmNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OwphbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCmFsb25nIHdpdGggdGhlIFByb2dyYW0uCgpZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQogICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5CiAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCiAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCiAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQogICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgogICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CiAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCiAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKClRoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKaWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCnRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKdGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgoKVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0CnlvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwpleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KCkluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0Kd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCmEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCnRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAp1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwogICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCiAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCiAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAoKICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCiAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcwogICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQoKVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgptYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQpjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQphc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQpzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUKb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKaXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgoKSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZwphY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50CmFjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcwpkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCmV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCnZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgoKICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bwp0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCnRoaXMgTGljZW5zZS4KCiAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQphbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpyZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCmFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgoKICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQptYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcKdGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZwpjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKdGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCm9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbApiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCgpFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtCnNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55CmxhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgp0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24uCgogIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgp0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCm1ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzCm9mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTk8gV0FSUkFOVFkKCiAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCkZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgpPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTClBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VECk9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCk1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQpQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKUkVQQUlSIE9SIENPUlJFQ1RJT04uCgogIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgpSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLApJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRApUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwoKICAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1zCgogIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdApmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KCiAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICB7ZGVzY3JpcHRpb259CiAgICBDb3B5cmlnaHQgKEMpIHt5ZWFyfSAge2Z1bGxuYW1lfQoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIHtzaWduYXR1cmUgb2YgVHkgQ29vbn0sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovLyBWZXJzaW9uIDEuMQppZiggdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCcxLjEnKSA8IDAgKQp7CgkvLyBTd2l0Y2ggZnJvbSBwb3N0IHRvIHByZWNvbXBpbGUgaW4gb3JkZXIgdG8gbWFrZSBTbWFydHkgd29yawoJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdTbWFydHlQb3N0Q29tcGlsZScpOwoJJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdTbWFydHlQcmVDb21waWxlJywgZmFsc2UpOwp9CgoKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzEuNCcpIDwgMCApCnsKCS8vIFN3aXRjaCBmcm9tIHRoZSBnZW5lcmFsIFNtYXJ0eVByZUNvbXBpbGUgdG8gZGVkaWNhdGVkIFN0eWxlc2hlZXRQcmVDb21waWxlCgkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ1NtYXJ0eVByZUNvbXBpbGUnKTsKCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnU3R5bGVzaGVldFByZUNvbXBpbGUnLCBmYWxzZSk7Cn0KCgppZiAodmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCAnMy4wJykgPCAwKQp7CgkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ1N0eWxlc2hlZXRQcmVDb21waWxlJyk7Cn0KCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDU1NQcmVwcm9jZXNzb3IiCnZlcnNpb24gPSAiMy4yLjEiCmF1dGhvciA9ICJBaXJlIGxpYnJlIC0gTWF0aGlldSBNdXRocyIKYXV0aG9yZW1haWwgPSAiY29udGFjdEBhaXJlbGlicmUubmV0IgptaW5jbXN2ZXJzaW9uID0gIjIuMi4yMiIKbGF6eWxvYWRhZG1pbiA9IDAKbGF6eWxvYWRmcm9udGVuZCA9IDAK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessCommand/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessCommand/class.Preprocessor_LessCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9MZXNzQ29tbWFuZCBleHRlbmRzIFByZXByb2Nlc3NvciB7CgoJY29uc3QgRlJJRU5ETFlfTkFNRSA9ICdMZXNzIGNvbXBpbGVyIGZyb20gY29tbWFuZCBsaW5lJzsKCWNvbnN0IERFU0NSSVBUSU9OID0gJ1RoZSBvZmZpY2lhbCBjb21tYW5kIGxpbmUgTEVTUyBjb21waWxhdG9yJzsKCWNvbnN0IEFVVEhPUiA9ICdDb3JlIExFU1MgdGVhbSc7Cgljb25zdCBXRUJTSVRFID0gJ2h0dHA6Ly9sZXNzY3NzLm9yZyc7Cgljb25zdCBOT1RFID0gJ0Zhc3QsIGJ1dCB5b3UgTkVFRCB0aGUgbGVzc2MgY29tbWFuZCBsaW5lIHRvb2wgKHYuIDEuNyBvciBuZXdlcikgaW5zdGFsbGVkIG9uIHlvdXIgc2VydmVyIHRvIHVzZSBpdCAtIGNoZWNrIHRoZSBvZmZpY2lhbCB3ZWJzaXRlIGZvciBtb3JlIGluZm9ybWF0aW9ucy4gU3VwcG9ydHMgc291cmNlbWFwcyc7Cgljb25zdCBMT0dPID0gJ2xvZ28ucG5nJzsKCWNvbnN0IFBSSU9SSVRZID0gNTU7CgoKCgkvLyBOb3RlIDogJGNzcyBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIC0gbm8gbmVlZCB0byByZXR1cm4KCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlQ1NTKCYkY3NzKQoJewoJICAgICRmaWxlID0gY21zX2pvaW5fcGF0aChUTVBfQ0FDSEVfTE9DQVRJT04sICdjc3NwcmVwcm9jZXNzb3IuY3NzJyk7CgkgICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUsICRjc3MpOwoKCSAgICAkZmlsZV9vdXRwdXQgPSBjbXNfam9pbl9wYXRoKFRNUF9DQUNIRV9MT0NBVElPTiwgJ2Nzc3ByZXByb2Nlc3Nvcl9vdXQuY3NzJyk7CgoJICAgICRsZXNzYyA9ICdsZXNzYyc7CgoJICAgICRjb21tYW5kID0gJ05PREVfT1BUSU9OUz0tLWppdGxlc3MgJyAuIGVzY2FwZXNoZWxsYXJnKCRsZXNzYykgLiAnICc7CgoJICAgIGlmICgkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKSB7CgkgICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCSAgICAgICAgJGNvbW1hbmQgLj0gJy0tc291cmNlLW1hcD0nIC4gZXNjYXBlc2hlbGxhcmcoJHRoaXMtPnNvdXJjZV9tYXBfZmlsZSkKCSAgICAgICAgICAgICAgICAgIC4gJyAtLXNvdXJjZS1tYXAtdXJsPScgLiBlc2NhcGVzaGVsbGFyZygkdGhpcy0+c291cmNlX21hcF91cmwpCgkgICAgICAgICAgICAgICAgICAuICcgLS1zb3VyY2UtbWFwLWJhc2VwYXRoPScgLiBlc2NhcGVzaGVsbGFyZygkY29uZmlnWydyb290X3BhdGgnXSkKCSAgICAgICAgICAgICAgICAgIC4gJyAtLXNvdXJjZS1tYXAtcm9vdHBhdGg9JyAuIGVzY2FwZXNoZWxsYXJnKCRjb25maWdbJ3Jvb3RfdXJsJ10pIC4gJyAnOwoJICAgIH0KCgkgICAgaWYgKCFlbXB0eSgkdGhpcy0+aW1wb3J0X2RpcnMpKSB7CgkgICAgICAgICRwaHBvcyA9IHN0cnRvbG93ZXIoUEhQX09TKTsKCSAgICAgICAgJHNlcGFyYXRvciA9IChzdHJwb3MoJHBocG9zLCAnd2luJykgIT09IGZhbHNlKSA/ICc7JyA6ICc6JzsKCSAgICAgICAgJGNvbW1hbmQgLj0gJyAtLWluY2x1ZGUtcGF0aD0nIC4gZXNjYXBlc2hlbGxhcmcoaW1wbG9kZSgkc2VwYXJhdG9yLCAkdGhpcy0+aW1wb3J0X2RpcnMpKTsKCSAgICB9CgoJICAgICRjb21tYW5kIC49ICcgJyAuIGVzY2FwZXNoZWxsYXJnKCRmaWxlKSAuICcgJyAuIGVzY2FwZXNoZWxsYXJnKCRmaWxlX291dHB1dCk7CgoJICAgIC8vIENhcHR1cmUgc3Rkb3V0ICsgc3RkZXJyICsgY29kZSBkZSByZXRvdXIKCSAgICAkY29tbWFuZCAuPSAnIDI+JjEnOwoJICAgIGV4ZWMoJGNvbW1hbmQsICRvdXRwdXQsICRyZXR1cm5fdmFyKTsKCgkgICAgaWYgKCRyZXR1cm5fdmFyICE9PSAwKSB7CgkgICAgICAgIGRlYnVnX3RvX2xvZygnQ1NTUHJlcHJvY2Vzc29yIGxlc3NjIGVycm9yIChjb2RlICcgLiAkcmV0dXJuX3ZhciAuICcpOiAnIC4gaW1wbG9kZSgiXG4iLCAkb3V0cHV0KSk7CgkgICAgfQoKCSAgICAkY3NzID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVfb3V0cHV0KTsKCgkgICAgcmV0dXJuIHRydWU7Cgl9CgoKfQoKCgoKPz4K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessCommand/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessCommand/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/class.Preprocessor_LessPHP.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9MZXNzUEhQIGV4dGVuZHMgUHJlcHJvY2Vzc29yIHsKCgljb25zdCBGUklFTkRMWV9OQU1FID0gJ0xlc3MucGhwJzsKCWNvbnN0IERFU0NSSVBUSU9OID0gJ0EgUEhQIHBvcnQgb2YgdGhlIG9mZmljaWFsIExFU1MgcHJvY2Vzc29yJzsKCWNvbnN0IEFVVEhPUiA9ICdXaWtpbWVkaWEgZm91bmRhdGlvbic7Cgljb25zdCBXRUJTSVRFID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS93aWtpbWVkaWEvbGVzcy5waHAnOwoJY29uc3QgTk9URSA9ICcnOwoJY29uc3QgTE9HTyA9ICdsb2dvLnBuZyc7Cgljb25zdCBQUklPUklUWSA9IDQ5OwoJCgkKCS8vIEZvciBMZXNzUEhQT3llam9yZ2UKCXB1YmxpYyAkcGFyc2VyOwoJCgoJcHVibGljIGZ1bmN0aW9uIExvYWQoKQoJewoJCXBhcmVudDo6TG9hZCgpOwoJCQoJCXJlcXVpcmVfb25jZShjbXNfam9pbl9wYXRoKF9fRElSX18sICdsaWInLCAnbGVzc2MuaW5jLnBocCcpKTsKCQlMZXNzX0F1dG9sb2FkZXI6OnJlZ2lzdGVyKCk7CgkJCgkJLy8gT3B0aW9ucwoJCSRvcHRpb25zWydjb21wcmVzcyddID0gJHRoaXMtPm1pbmlmeTsKCQkKCQlpZiAoJHRoaXMtPmdlbmVyYXRlX3NvdXJjZW1hcCkKCQl7CgkJCSRvcHRpb25zWydzb3VyY2VNYXAnXSA9IHRydWU7CgkJCSRvcHRpb25zWydzb3VyY2VNYXBXcml0ZVRvJ10gPSAkdGhpcy0+c291cmNlX21hcF9maWxlOwoJCQkkb3B0aW9uc1snc291cmNlTWFwVVJMJ10gPSAkdGhpcy0+c291cmNlX21hcF91cmw7CgkJCQoJCQkkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CgkJCSRvcHRpb25zWydzb3VyY2VNYXBCYXNlcGF0aCddID0gJGNvbmZpZ1sncm9vdF9wYXRoJ107CgkJfQoJCQoJCSR0aGlzLT5wYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoJG9wdGlvbnMpOwoJCQoJCS8vIEltcG9ydCBkaXJzCgkJLy8gJHRoaXMtPnBhcnNlci0+U2V0SW1wb3J0RGlycygkdGhpcy0+aW1wb3J0X2RpcnMpOwoJCSR0bXAgPSBudWxsOwoJCWZvcmVhY2ggKCR0aGlzLT5pbXBvcnRfZGlycyBhcyAkb25lRGlyKSB7CgkJCSR0bXBbJG9uZURpcl0gPSAkb25lRGlyOwoJCX0KCQkkdGhpcy0+cGFyc2VyLT5TZXRJbXBvcnREaXJzKCR0bXApOwoJfQoJCgkvLyBOb3RlIDogJGNzcyBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIC0gbm8gbmVlZCB0byByZXR1cm4KCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlQ1NTKCYkY3NzKQoJewoJCXRyeSB7CgkJCSR0aGlzLT5wYXJzZXItPnBhcnNlKCRjc3MpOwoJCQkkY3NzID0gJHRoaXMtPnBhcnNlci0+Z2V0Q3NzKCk7CgkJfQoJCWNhdGNoIChleGNlcHRpb24gJGUpIHsKCQkJJGVycm9yX21lc3NhZ2UgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJCQlkZWJ1Z190b19sb2coJGVycm9yX21lc3NhZ2UpOwoJCX0KCQkKCQlyZXR1cm4gdHJ1ZTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/API.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TGVzcy5waHAgQVBJCj09PT09PT09CgojIyBCYXNpYyB1c2UKCiMjIyMgUGFyc2Ugc3RyaW5ncwoKYGBgcGhwCiRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKJHBhcnNlci0+cGFyc2UoICdAY29sb3I6ICMzNmM7IC5saW5rIHsgY29sb3I6IEBjb2xvcjsgfSBhIHsgY29sb3I6IEBjb2xvcjsgfScgKTsKJGNzcyA9ICRwYXJzZXItPmdldENzcygpOwpgYGAKCiMjIyMgUGFyc2UgZmlsZXMKClRoZSBgcGFyc2VGaWxlKClgIGZ1bmN0aW9uIHRha2VzIHR3byBwYXJhbWV0ZXJzOgoKKiBUaGUgYWJzb2x1dGUgcGF0aCB0byBhIGAubGVzc2AgZmlsZS4KKiBUaGUgYmFzZSBVUkwgZm9yIGFueSByZWxhdGl2ZSBpbWFnZSBvciBDU1MgcmVmZXJlbmNlcyBpbiB0aGUgYC5sZXNzYCBmaWxlLAogIHR5cGljYWxseSB0aGUgc2FtZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0aGUgYC5sZXNzYCBmaWxlIG9yIGEgcHVibGljIGVxdWl2YWxlbnQuCgpgYGBwaHAKJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigpOwokcGFyc2VyLT5wYXJzZUZpbGUoICcvdmFyL3d3dy9teXNpdGUvYm9vdHN0cmFwLmxlc3MnLCAnaHR0cHM6Ly9leGFtcGxlLm9yZy9teXNpdGUvJyApOwokY3NzID0gJHBhcnNlci0+Z2V0Q3NzKCk7CmBgYAoKIyMjIyBIYW5kbGUgaW52YWxpZCBzeW50YXgKCkFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB0aGUgY29tcGlsZXIgZW5jb3VudGVycyBpbnZhbGlkIExFU1MuCgpgYGBwaHAKdHJ5ewogICRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKICAkcGFyc2VyLT5wYXJzZUZpbGUoICcvdmFyL3d3dy9teXNpdGUvYm9vdHN0cmFwLmxlc3MnLCAnaHR0cHM6Ly9leGFtcGxlLm9yZy9teXNpdGUvJyApOwogICRjc3MgPSAkcGFyc2VyLT5nZXRDc3MoKTsKfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgZWNobyAkZS0+Z2V0TWVzc2FnZSgpOwp9CmBgYAoKIyMjIyBQYXJzZSBtdWx0aXBsZSBpbnB1dHMKCkxlc3MucGhwIGNhbiBwYXJzZSBtdWx0aXBsZSBpbnB1dCBzb3VyY2VzIChlLmcuIGZpbGVzIGFuZC9vciBzdHJpbmdzKSBhbmQgZ2VuZXJhdGUgYSBzaW5nbGUgQ1NTIG91dHB1dC4KCmBgYHBocAokcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCk7CiRwYXJzZXItPnBhcnNlRmlsZSggJy92YXIvd3d3L215c2l0ZS9ib290c3RyYXAubGVzcycsICcvbXlzaXRlLycgKTsKJHBhcnNlci0+cGFyc2UoICdAY29sb3I6ICMzNmM7IC5saW5rIHsgY29sb3I6IEBjb2xvcjsgfSBhIHsgY29sb3I6IEBjb2xvcjsgfScgKTsKJGNzcyA9ICRwYXJzZXItPmdldENzcygpOwpgYGAKCiMjIyMgTWV0YWRhdGEKCkxlc3MucGhwIGtlZXBzIHRyYWNrIG9mIHdoaWNoIGAubGVzc2AgZmlsZXMgaGF2ZSBiZWVuIHBhcnNlZCwgaS5lLiB0aGUgaW5wdXQKZmlsZShzKSBhbmQgYW55IGRpcmVjdCBhbmQgaW5kaXJlY3QgaW1wb3J0cy4KCmBgYHBocAokcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCk7CiRwYXJzZXItPnBhcnNlRmlsZSggJy92YXIvd3d3L215c2l0ZS9ib290c3RyYXAubGVzcycsICcvbXlzaXRlLycgKTsKJGNzcyA9ICRwYXJzZXItPmdldENzcygpOwokZmlsZXMgPSAkcGFyc2VyLT5nZXRQYXJzZWRGaWxlcygpOwpgYGAKCiMjIyMgQ29tcHJlc3Mgb3V0cHV0CgpZb3UgY2FuIHRlbGwgTGVzcy5waHAgdG8gcmVtb3ZlIGNvbW1lbnRzIGFuZCB3aGl0ZXNwYWNlIHRvIGdlbmVyYXRlIG1pbmlmaWVkIENTUy4KCmBgYHBocAokb3B0aW9ucyA9IFsgJ2NvbXByZXNzJyA9PiB0cnVlIF07CiRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoICRvcHRpb25zICk7CiRwYXJzZXItPnBhcnNlRmlsZSggJy92YXIvd3d3L215c2l0ZS9ib290c3RyYXAubGVzcycsICcvbXlzaXRlLycgKTsKJGNzcyA9ICRwYXJzZXItPmdldENzcygpOwpgYGAKCiMjIyMgR2V0IHZhcmlhYmxlcwoKWW91IGNhbiB1c2UgdGhlIGBnZXRWYXJpYWJsZXMoKWAgbWV0aG9kIHRvIGdldCBhbiBhbGwgdmFyaWFibGVzIGRlZmluZWQgYW5kCnRoZWlyIHZhbHVlIGluIGFuIGFzc29jaWF0aXZlIGFycmF5LiBOb3RlIHRoYXQgdGhlIGlucHV0IG11c3QgYmUgY29tcGlsZWQgZmlyc3QKYnkgY2FsbGluZyBgZ2V0Q3NzKClgLgoKYGBgcGhwCiRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXI7CiRwYXJzZXItPnBhcnNlRmlsZSggJy92YXIvd3d3L215c2l0ZS9ib290c3RyYXAubGVzcycpOwokY3NzID0gJHBhcnNlci0+Z2V0Q3NzKCk7CiR2YXJpYWJsZXMgPSAkcGFyc2VyLT5nZXRWYXJpYWJsZXMoKTsKCmBgYAoKIyMjIyBTZXQgdmFyaWFibGVzCgpVc2UgdGhlIGBNb2RpZnlWYXJzKClgIG1ldGhvZCB0byBpbmplY3QgYWRkaXRpb25hbCB2YXJpYWJsZXMsIGkuZS4gY3VzdG9tIHZhbHVlcwpjb21wdXRlZCBvciBhY2Nlc3NlZCBmcm9tIHlvdXIgUEhQIGNvZGUuCgpgYGBwaHAKJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigpOwokcGFyc2VyLT5wYXJzZUZpbGUoICcvdmFyL3d3dy9teXNpdGUvYm9vdHN0cmFwLmxlc3MnLCAnL215c2l0ZS8nICk7CiRwYXJzZXItPk1vZGlmeVZhcnMoIFsgJ2ZvbnQtc2l6ZS1iYXNlJyA9PiAnMTZweCcgXSApOwokY3NzID0gJHBhcnNlci0+Z2V0Q3NzKCk7CmBgYAoKIyMjIyBJbXBvcnQgZGlyZWN0b3JpZXMKCkJ5IGRlZmF1bHQsIExlc3MucGhwIHdpbGwgbG9vayBmb3IgaW1wb3J0ZWQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZmlsZSBwYXNzZWQgdG8gYHBhcnNlRmlsZSgpYC4KCklmIHlvdSB1c2UgYHBhcnNlKClgLCBvciBpZiBuZWVkIHRvIGVuYWJsZSBhZGRpdGlvbmFsIGltcG9ydCBkaXJlY3RvcmllcywgeW91IGNhbiBzcGVjaWZ5IHRoZXNlIGJ5CmNhbGxpbmcgYFNldEltcG9ydERpcnMoKWAuCgpgYGBwaHAKJGRpcmVjdG9yaWVzID0gWyAnL3Zhci93d3cvbXlzaXRlL2Jvb3RzdHJhcC8nID0+ICcvbXlzaXRlL2Jvb3RzdHJhcC8nIF07CiRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKJHBhcnNlci0+U2V0SW1wb3J0RGlycyggJGRpcmVjdG9yaWVzICk7CiRwYXJzZXItPnBhcnNlRmlsZSggJy92YXIvd3d3L215c2l0ZS90aGVtZS5sZXNzJywgJy9teXNpdGUvJyApOwokY3NzID0gJHBhcnNlci0+Z2V0Q3NzKCk7CmBgYAoKIyMgQ2FjaGluZwoKQ29tcGlsaW5nIExFU1MgY29kZSBpbnRvIENTUyBjYW4gYmUgYSB0aW1lLWNvbnN1bWluZyBwcm9jZXNzLiBJdCBpcyByZWNvbW1lbmRlZCB0byBjYWNoZSB5b3VyIHJlc3VsdHMuCgojIyMjIEJhc2ljIGNhY2hlCgpVc2UgdGhlIGBMZXNzX0NhY2hlYCBjbGFzcyB0byBzYXZlIGFuZCByZXVzZSB0aGUgcmVzdWx0cyBvZiBjb21waWxpbmcgTEVTUyBmaWxlcy4KVGhpcyBjbGFzcyB3aWxsIGNoZWNrIHRoZSBtb2RpZmllZCB0aW1lIGFuZCBzaXplIG9mIGVhY2ggTEVTUyBmaWxlIChpbmNsdWRpbmcgaW1wb3J0ZWQgZmlsZXMpIGFuZAplaXRoZXIgcmUtdXNlIG9yIHJlLWdlbmVyYXRlIHRoZSBDU1Mgb3V0cHV0IGFjY29yZGluZ2x5LgoKVGhlIGNhY2hlIGZpbGVzIGFyZSBkZXRlcm1pbnN0aWNhbGx5IG5hbWVkLCBiYXNlZCBvbiB0aGUgZnVsbCBsaXN0IG9mIHJlZmVyZW5jZWQgTEVTUyBmaWxlcyBhbmQgdGhlIG1ldGFkYXRhIChmaWxlIHBhdGgsIGZpbGUgbXRpbWUsIGZpbGUgc2l6ZSkgb2YgZWFjaCBmaWxlLiBUaGlzIG1lYW5zIHRoYXQgZWFjaCB0aW1lIGEgY2hhbmdlIGlzIG1hZGUsIGEgZGlmZmVyZW50IGNhY2hlIGZpbGVuYW1lIGlzIHVzZWQuCgpgYGBwaHAKJGxlc3NGaWxlcyA9IFsgJy92YXIvd3d3L215c2l0ZS9ib290c3RyYXAubGVzcycgPT4gJy9teXNpdGUvJyBdOwokb3B0aW9ucyA9IFsgJ2NhY2hlX2RpcicgPT4gJy92YXIvd3d3L3dyaXRhYmxlX2ZvbGRlcicgXTsKJGNzc091dHB1dEZpbGUgPSBMZXNzX0NhY2hlOjpHZXQoICRsZXNzRmlsZXMsICRvcHRpb25zICk7CiRjc3MgPSBmaWxlX2dldF9jb250ZW50cyggJy92YXIvd3d3L3dyaXRhYmxlX2ZvbGRlci8nIC4gJGNzc091dHB1dEZpbGUgKTsKYGBgCgojIyMjIENhY2hpbmcgd2l0aCB2YXJpYWJsZXMKClBhc3NpbmcgY3VzdG9tIHZhcmlhYmxlcyB0byBgTGVzc19DYWNoZTo6R2V0KClgOgoKYGBgcGhwCiRsZXNzRmlsZXMgPSBbICcvdmFyL3d3dy9teXNpdGUvYm9vdHN0cmFwLmxlc3MnID0+ICcvbXlzaXRlLycgXTsKJG9wdGlvbnMgPSBbICdjYWNoZV9kaXInID0+ICcvdmFyL3d3dy93cml0YWJsZV9mb2xkZXInIF07CiR2YXJpYWJsZXMgPSBbICd3aWR0aCcgPT4gJzEwMHB4JyBdOwokY3NzT3V0cHV0RmlsZSA9IExlc3NfQ2FjaGU6OkdldCggJGxlc3NGaWxlcywgJG9wdGlvbnMsICR2YXJpYWJsZXMgKTsKJGNzcyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAnL3Zhci93d3cvd3JpdGFibGVfZm9sZGVyLycgLiAkY3NzT3V0cHV0RmlsZSApOwpgYGAKCiMjIyMgSW5jcmVtZW50YWwgY2FjaGluZwoKKipXYXJuaW5nOioqIFRoZSBpbmNyZW1lbnRhbCBjYWNoZSBpbiBMZXNzX1BhcnNlciBpcyBzaWduaWZpY2FudGx5IHNsb3dlciBhbmQgbW9yZSBtZW1vcnktaW50ZW5zZSB0aGFuIGBMZXNzX0NhY2hlYCEgSWYgeW91IGNhbGwgTGVzcy5waHAgZHVyaW5nIHdlYiByZXF1ZXN0cywgb3Igb3RoZXJ3aXNlIGNhbGwgaXQgcmVwZWF0ZWRseSB3aXRoIGZpbGVzIHRoYXQgbWlnaHQgYmUgdW5jaGFuZ2VkLCB1c2UgYExlc3NfQ2FjaGVgIGluc3RlYWQuCgpZb3UgY2FuIHR1cm4gb2ZmIHRoZSBpbmNyZW1lbnRhbCBjYWNoZSB0byBzYXZlIG1lbW9yeSBhbmQgZGlzayBzcGFjZSAoW3JlZl0oaHR0cHM6Ly9naXRodWIuY29tL3dpa2ltZWRpYS9sZXNzLnBocC9pc3N1ZXMvMTA0KSkuIFdpdGhvdXQgaW5jcmVtZW50YWwgY2FjaGUsIGNhY2hlIG1pc3NlcyBtYXkgYmUgc2xvd2VyLgoKYGBgcGhwCi8vIERpc2FibGUgaW5jcmVtZW50YWwgY2FjaGUKJGxlc3NGaWxlcyA9IFsgX19ESVJfXyAuICcvYXNzZXRzL2Jvb3RzdHJhcC5sZXNzJyA9PiAnL215c2l0ZS9hc3NldHMvJyBdOwokb3B0aW9ucyA9IFsKICAnY2FjaGVfZGlyJyA9PiAnL3Zhci93d3cvd3JpdGFibGVfZm9sZGVyJywKICAnY2FjaGVfaW5jcmVtZW50YWwnID0+IGZhbHNlLApdOwokY3NzID0gTGVzc19DYWNoZTo6R2V0KCAkbGVzc0ZpbGVzLCAkb3B0aW9ucyApOwpgYGAKCldoZW4geW91IGluc3RhbnRpYXRlIExlc3NfUGFyc2VyLCBhbmQgY2FsbCBgcGFyc2VGaWxlKClgIG9yIGBnZXRDc3MoKWAsIGl0IGlzIGFzc3VtZWQgdGhhdCBhdCBsZWFzdCBvbmUgaW5wdXQgZmlsZSBoYXMgY2hhbmdlZCAoaS5lLiB0aGUgd2hvbGUtb3V0cHV0IGNhY2hlIGZyb20gTGVzc19DYWNoZSB3YXMgYSBjYWNoZSBtaXNzKS4gVGhlIGluY3JlbWVudGFsIGNhY2hlIGV4aXN0cyB0byBzcGVlZCB1cCBjYWNoZSBtaXNzZXMgb24gdmVyeSBsYXJnZSBjb2RlIGJhc2VzLCBhbmQgaXMgZW5hYmxlZCBieSBkZWZhdWx0IHdoZW4geW91IGNhbGwgTGVzc19DYWNoZS4KCkl0IGlzIGluaGVyZW50IHRvIHRoZSBMZXNzIGxhbmd1YWdlIHRoYXQgbGF0ZXIgaW1wb3J0cyBtYXkgY2hhbmdlIHZhcmlhYmxlcyBvciBleHRlbmQgbWl4aW5zIHVzZWQgaW4gZWFybGllciBmaWxlcywgYW5kIHRoYXQgaW1wb3J0cyBtYXkgcmVmZXJlbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5IGVhcmxpZXIgaW1wb3J0cy4gVGh1cyBvbmUgY2FuJ3QgYWN0dWFsbHkgY2FjaGUgdGhlIENTUyBvdXRwdXQgb2YgYW4gaW1wb3J0LiBBbGwgaW5wdXRzIG5lZWRzIHRvIGJlIHJlLWNvbXBpbGVkIHRvZ2V0aGVyIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgQ1NTIG91dHB1dC4gVGhlIGluY3JlbWVudGFsIGNhY2hlIG1lcmVseSBhbGxvd3MgdGhlIGBwYXJzZUZpbGUoKWAgbWV0aG9kIHRvIHNraXAgcGFyc2luZyBmb3IgdW5jaGFuZ2VkIGZpbGVzIChpLmUuIGludGVycHJldGluZyBMZXNzIHN5bnRheCBpbnRvIGFuIG9iamVjdCBzdHJ1Y3R1cmUpLiBUaGUgYGdldENzcygpYCBtZXRob2Qgd2lsbCBzdGlsbCB0cmF2ZXJzZSBhbmQgY29tcGlsZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgYWxsIGlucHV0IGZpbGVzLgoKIyMgU291cmNlIG1hcHMKCkxlc3MucGhwIHN1cHBvcnRzIHYzIHNvdXJjZW1hcHMuCgojIyMjIElubGluZQoKVGhlIHNvdXJjZW1hcCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBnZW5lcmF0ZWQgQ1NTIGZpbGUuCgpgYGBwaHAKJG9wdGlvbnMgPSBbICdzb3VyY2VNYXAnID0+IHRydWUgXTsKJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigkb3B0aW9ucyk7CiRwYXJzZXItPnBhcnNlRmlsZSggJy92YXIvd3d3L215c2l0ZS9ib290c3RyYXAubGVzcycsICcvbXlzaXRlLycgKTsKJGNzcyA9ICRwYXJzZXItPmdldENzcygpOwpgYGAKCiMjIyMgU2F2aW5nIHRvIG1hcCBmaWxlCgpgYGBwaHAKJG9wdGlvbnMgPSBbCiAgICdzb3VyY2VNYXAnID0+IHRydWUsCiAgICdzb3VyY2VNYXBXcml0ZVRvJyA9PiAnL3Zhci93d3cvbXlzaXRlL3dyaXRhYmxlX2ZvbGRlci9maWxlbmFtZS5tYXAnLAogICAnc291cmNlTWFwVVJMJyA9PiAnL215c2l0ZS93cml0YWJsZV9mb2xkZXIvZmlsZW5hbWUubWFwJywKXTsKJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigkb3B0aW9ucyk7CiRwYXJzZXItPnBhcnNlRmlsZSggJy92YXIvd3d3L215c2l0ZS9ib290c3RyYXAubGVzcycsICcvbXlzaXRlLycgKTsKJGNzcyA9ICRwYXJzZXItPmdldENzcygpOwpgYGAKCiMjIENvbW1hbmQgbGluZQoKQW4gYWRkaXRpb25hbCBzY3JpcHQgaGFzIGJlZW4gaW5jbHVkZWQgdG8gdXNlIHRoZSBMZXNzLnBocCBjb21waWxlciBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCkluIGl0cyBzaW1wbGVzdCBpbnZvY2F0aW9uLCB5b3Ugc3BlY2lmeSBhbiBpbnB1dCBmaWxlIGFuZCB0aGUgY29tcGlsZWQgQ1NTIGlzIHdyaXR0ZW4gdG8gc3RhbmRhcmQgb3V0OgoKYGBgCiQgbGVzc2MgaW5wdXQubGVzcyA+IG91dHB1dC5jc3MKYGBgCgpCeSB1c2luZyB0aGUgYC13YCBmbGFnIHlvdSBjYW4gd2F0Y2ggYSBzcGVjaWZpZWQgaW5wdXQgZmlsZSBhbmQgaGF2ZSBpdCBjb21waWxlIGFzIG5lZWRlZCB0byB0aGUgb3V0cHV0IGZpbGU6CgpgYGAKJCBsZXNzYyAtdyBpbnB1dC5sZXNzIG91dHB1dC5jc3MKYGBgCgpFcnJvcnMgZnJvbSB3YXRjaCBtb2RlIGFyZSB3cml0dGVuIHRvIHN0YW5kYXJkIG91dC4KCkZvciBtb3JlIGluZm9ybWF0aW9uLCBydW4gYGxlc3NjIC0taGVscGAK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/bin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/bin/lessc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2Jpbi9lbnYgcGhwCjw/cGhwCgpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvLi4vbGliL0xlc3MvQXV0b2xvYWRlci5waHAnOwpMZXNzX0F1dG9sb2FkZXI6OnJlZ2lzdGVyKCk7CgovLyBDcmVhdGUgb3VyIGVudmlyb25tZW50CiRlbnYgPSBhcnJheSgnY29tcHJlc3MnID0+IGZhbHNlLCAncmVsYXRpdmVVcmxzJyA9PiBmYWxzZSk7CiRzaWxlbnQgPSBmYWxzZTsKJHdhdGNoID0gZmFsc2U7CiRyb290cGF0aCA9ICcnOwoKLy8gQ2hlY2sgZm9yIGFyZ3VtZW50cwphcnJheV9zaGlmdCgkYXJndik7CmlmICghY291bnQoJGFyZ3YpKSB7CgkkYXJndltdID0gJy1oJzsKfQoKLy8gcGFyc2UgYXJndW1lbnRzCmZvcmVhY2ggKCRhcmd2IGFzICRrZXkgPT4gJGFyZykgewoJaWYgKHByZWdfbWF0Y2goJy9eLS0/KFthLXpdWzAtOWEtei1dKikoPzo9KFteXHNdKykpPyQvaScsICRhcmcsICRtYXRjaGVzKSkgewoJCSRvcHRpb24gPSAkbWF0Y2hlc1sxXTsKCQkkdmFsdWUgPSBpc3NldCgkbWF0Y2hlc1syXSkgPyAkbWF0Y2hlc1syXSA6IGZhbHNlOwoJCXVuc2V0KCRhcmd2WyRrZXldKTsKCgkJc3dpdGNoICgkb3B0aW9uKSB7CgkJCWNhc2UgJ2gnOgoJCQljYXNlICdoZWxwJzoKCQkJCWVjaG8gPDw8RU9EClVzYWdlOiBsZXNzYyBbb3B0aW9uc10gc291cmNlcyBbZGVzdGluYXRpb25dCgogLWgsIC0taGVscCAgICAgICAgICAgIFByaW50IGhlbHAgKHRoaXMgbWVzc2FnZSkgYW5kIGV4aXQuCiAtcywgLS1zaWxlbnQgICAgICAgICAgU3VwcHJlc3Mgb3V0cHV0IG9mIGVycm9yIG1lc3NhZ2VzLgogLXYsIC0tdmVyc2lvbiAgICAgICAgIFByaW50IHZlcnNpb24gbnVtYmVyIGFuZCBleGl0LgogLXgsIC0tY29tcHJlc3MgICAgICAgIENvbXByZXNzIG91dHB1dCBieSByZW1vdmluZyBzb21lIHdoaXRlc3BhY2VzLgogLS1pbmNsdWRlLXBhdGg9UEFUSFMgIFNldCBpbmNsdWRlIHBhdGhzLiBTZXBhcmF0ZWQgYnkgYDonLiBVc2UgYDsnIG9uIFdpbmRvd3MuCiAtLXN0cmljdC1pbXBvcnRzICAgICAgRm9yY2UgZXZhbHVhdGlvbiBvZiBpbXBvcnRzLgogLW09LCAtLW1hdGg9CiAgICBhbHdheXMgICAgICAgICAgICAgTGVzcyB3aWxsIGVhZ2VybHkgcGVyZm9ybSBtYXRoIG9wZXJhdGlvbnMgYWx3YXlzLgogICAgcGFyZW5zLWRpdmlzaW9uICAgIE1hdGggcGVyZm9ybWVkIGV4Y2VwdCBmb3IgZGl2aXNpb24gKC8pIG9wZXJhdG9yCiAgICBwYXJlbnMgfCBzdHJpY3QgICAgTWF0aCBvbmx5IHBlcmZvcm1lZCBpbnNpZGUgcGFyZW50aGVzZXMnKTsKIC1zdT1vbnxvZmYgICAgICAgICAgICBBbGxvdyBtaXhlZCB1bml0cywgZS5nLiAxcHgrMWVtIG9yIDFweCoxcHggd2hpY2ggaGF2ZSB1bml0cwogLS1zdHJpY3QtdW5pdHM9b258b2ZmIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkLgogLXJ1LCAtLXJlbGF0aXZlLXVybHMgIHJlLXdyaXRlIHJlbGF0aXZlIHVybHMgdG8gdGhlIGJhc2UgbGVzcyBmaWxlLgogLXJwLCAtLXJvb3RwYXRoPVVSTCAgIFNldCByb290cGF0aCBmb3IgdXJsIHJld3JpdGluZyBpbiByZWxhdGl2ZSBpbXBvcnRzIGFuZCB1cmxzLgogICAgICAgICAgICAgICAgICAgICAgIFdvcmtzIHdpdGggb3Igd2l0aG91dCB0aGUgcmVsYXRpdmUtdXJscyBvcHRpb24uCiAtdywgLS13YXRjaCAgICAgICAgICAgV2F0Y2ggaW5wdXQgZmlsZXMgZm9yIGNoYW5nZXMuCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZXByZWNhdGVkIC0tLS0tLS0tLS0tLS0tLS0KIC1zbT1vbnxvZmYgICAgICAgICAgICBMZWdhY3kgcGFyZW5zLW9ubHkgbWF0aC4gVXNlIC0tbWF0aCBpbnN0ZWFkLgogLS1zdHJpY3QtbWF0aD1vbnxvZmYKCkVPRDsKCQkJCWV4aXQ7CgkJCWNhc2UgJ3MnOgoJCQljYXNlICdzaWxlbnQnOgoJCQkJJHNpbGVudCA9IHRydWU7CgkJCQlicmVhazsKCgkJCWNhc2UgJ3cnOgoJCQljYXNlICd3YXRjaCc6CgkJCQkkd2F0Y2ggPSB0cnVlOwoJCQkJYnJlYWs7CgoJCQljYXNlICd2JzoKCQkJY2FzZSAndmVyc2lvbic6CgkJCQllY2hvICJsZXNzYyAiIC4gTGVzc19WZXJzaW9uOjp2ZXJzaW9uIC4gIiAobGVzcy5waHApXG5cbiI7CgkJCQlleGl0OwoKCQkJY2FzZSAncnAnOgoJCQljYXNlICdyb290cGF0aCc6CgkJCQkkcm9vdHBhdGggPSAkdmFsdWU7CgkJCQlicmVhazsKCgoJCQkvL3BhcnNlciBvcHRpb25zCgkJCWNhc2UgJ2NvbXByZXNzJzoKCQkJCSRlbnZbJ2NvbXByZXNzJ10gPSB0cnVlOwoJCQkJYnJlYWs7CgoJCQljYXNlICdydSc6CgkJCWNhc2UgJ3JlbGF0aXZlLXVybHMnOgoJCQkJJGVudlsncmVsYXRpdmVVcmxzJ10gPSB0cnVlOwoJCQkJYnJlYWs7CgoJCQljYXNlICdzdSc6CgkJCWNhc2UgJ3N0cmljdC11bml0cyc6CgkJCQkkZW52WydzdHJpY3RVbml0cyddID0gKCR2YWx1ZSA9PT0gJ29uJyk7CgkJCQlicmVhazsKCgkJCWNhc2UgJ3NtJzoKCQkJY2FzZSAnc3RyaWN0LW1hdGgnOgoJCQkJZndyaXRlKCBTVERFUlIsICJsZXNzYzogVGhlIC0tc3RyaWN0LW1hdGggb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAtLW1hdGg9cGFyZW5zXG4iICk7CgkJCQkkZW52WydzdHJpY3RNYXRoJ10gPSAoICR2YWx1ZSA9PT0gIm9uIiApOwoJCQkJYnJlYWs7CgoJCQljYXNlICdtJzoKCQkJY2FzZSAnbWF0aCc6CgkJCQkkZW52WydtYXRoJ10gPSAkdmFsdWU7CgkJCQlicmVhazsKCgkJCWNhc2UgJ3gnOgoJCQljYXNlICdpbmNsdWRlLXBhdGgnOgoJCQkJJGVudlsnaW1wb3J0X2RpcnMnXSA9IHByZWdfc3BsaXQoJyM7fFw6IycsICR2YWx1ZSk7CgkJCQlicmVhazsKCgkJfQoJfQp9CgppZiAoY291bnQoJGFyZ3YpID4gMSkgewoJJG91dHB1dCA9IGFycmF5X3BvcCgkYXJndik7CgkkaW5wdXRzID0gJGFyZ3Y7Cn0KZWxzZSB7CgkkaW5wdXRzID0gJGFyZ3Y7Cgkkb3V0cHV0ID0gZmFsc2U7Cn0KCmlmICghY291bnQoJGlucHV0cykpIHsKCWVjaG8oImxlc3NjOiBubyBpbnB1dCBmaWxlc1xuIik7CglleGl0Owp9CgppZiAoJHdhdGNoKSB7CglpZiAoISRvdXRwdXQpIHsKCQllY2hvKCJsZXNzYzogeW91IG11c3Qgc3BlY2lmeSB0aGUgb3V0cHV0IGZpbGUgaWYgLS13YXRjaCBpcyBnaXZlblxuIik7CgkJZXhpdDsKCX0KCgkkbGFzdEFjdGlvbiA9IDA7CgoJZWNobygibGVzc2M6IHdhdGNoaW5nIGlucHV0IGZpbGVzXG4iKTsKCgl3aGlsZSAoMSkgewoJCWNsZWFyc3RhdGNhY2hlKCk7CgoJCSR1cGRhdGVkID0gZmFsc2U7CgkJZm9yZWFjaCAoJGlucHV0cyBhcyAkaW5wdXQpIHsKCQkJaWYgKCRpbnB1dCA9PSAnLScpIHsKCQkJCWlmIChjb3VudCgkaW5wdXRzKSA9PSAxKSB7CgkJCQkJZWNobygibGVzc2M6IGR1cmluZyB3YXRjaGluZyBmaWxlcyBpcyBub3QgcG9zc2libGUgdG8gd2F0Y2ggc3RkaW5cbiIpOwoJCQkJCWV4aXQ7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJfQoKCQkJaWYgKGZpbGVtdGltZSgkaW5wdXQpID4gJGxhc3RBY3Rpb24pIHsKCQkJCSR1cGRhdGVkID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQlpZiAoJHVwZGF0ZWQpIHsKCQkJJGxhc3RBY3Rpb24gPSB0aW1lKCk7CgkJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoJGVudik7CgkJCWZvcmVhY2ggKCRpbnB1dHMgYXMgJGlucHV0KSB7CgkJCQl0cnkgewoJCQkJCSRwYXJzZXItPnBhcnNlRmlsZSgkaW5wdXQsICRyb290cGF0aCk7CgkJCQl9CgkJCQljYXRjaCAoRXhjZXB0aW9uICRlKSB7CgkJCQkJZWNobygibGVzc2M6ICIgLiAkZS0+Z2V0TWVzc2FnZSgpIC4gIiBcbiIpOwoJCQkJCWNvbnRpbnVlOyAvLyBJbnZhbGlkIHByb2Nlc3NpbmcKCQkJCX0KCQkJfQoKCQkJZmlsZV9wdXRfY29udGVudHMoJG91dHB1dCwgJHBhcnNlci0+Z2V0Q3NzKCkpOwoJCQllY2hvKCJsZXNzYzogb3V0cHV0IGZpbGUgcmVjb21waWxlZFxuIik7CgkJfQoKCQlzbGVlcCgxKTsKCX0KfQplbHNlIHsKCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoJGVudik7Cglmb3JlYWNoICgkaW5wdXRzIGFzICRpbnB1dCkgewoJCWlmICgkaW5wdXQgPT0gJy0nKSB7CgkJCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJ3BocDovL3N0ZGluJyk7CgkJCSRwYXJzZXItPnBhcnNlKCRjb250ZW50KTsKCQl9CgkJZWxzZSB7CgkJCXRyeSB7CgkJCQkkcGFyc2VyLT5wYXJzZUZpbGUoJGlucHV0KTsKCQkJfQoJCQljYXRjaCAoRXhjZXB0aW9uICRlKSB7CgkJCQlpZiAoISRzaWxlbnQpIHsKCQkJCQllY2hvKCJsZXNzYzogIiAuICgoc3RyaW5nKSRlKSAuICIgXG4iKTsKCQkJCX0KCQkJfQoJCX0KCX0KCglpZiAoJG91dHB1dCkgewoJCWZpbGVfcHV0X2NvbnRlbnRzKCRvdXRwdXQsICRwYXJzZXItPmdldENzcygpKTsKCX0KCWVsc2UgewoJCWVjaG8gJHBhcnNlci0+Z2V0Q3NzKCk7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/CHANGES.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCiMjIHY1LjQuMAoKQWRkZWQ6CiogQWRkIHN1cHBvcnQgZm9yIExvZ2ljYWwgRnVuY3Rpb25zIGBpZigpYCBhbmQgYGJvb2xlYW4oKWAuIChIYW5uYWggT2t3ZWx1bSkgW1QzOTMzODNdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzkzMzgzKQoKQ2hhbmdlZDoKKiBSZW1vdmUgc3VwcG9ydCBmb3IgUEhQIDcuNCBhbmQgOC4wLiBSYWlzZSByZXF1aXJlbWVudCB0byBQSFAgOC4xKy4gKEphbWVzIEQuIEZvcnJlc3RlcikKCiMjIHY1LjMuMQoKRml4ZWQ6CiogRml4IGBQSFAgV2FybmluZzogVW5kZWZpbmVkIHByb3BlcnR5ICR2YWx1ZWAgaW4gYGV4dHJhY3QoKWAuIChUaW1vIFRpamhvZikgW1QzOTE3MzVdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzkxNzM1KQoKIyMgdjUuMy4wCgpBZGRlZDoKKiBMZXNzX1BhcnNlcjogQWRkIGBjYWNoZV9pbmNyZW1lbnRhbGAgb3B0aW9uLiBTZXQgdGhpcyB0byBmYWxzZSB2aWEgYExlc3NfQ2FjaGVgIHRvIHVzZSB0aGUgZmFzdCB3aG9sZS1vdXRwdXQgY2FjaGUgd2l0aG91dCB0aGUgbWVtb3J5LWludGVuc2l2ZSBpbmNyZW1lbnRhbCBjYWNoZS4gKFRpbW8gVGlqaG9mKQoKRGVwcmVjYXRlZDoKKiBEZXByZWNhdGUgYExlc3NfQ2FjaGU6OkNoZWNrQ2FjaGVEaXIoKWAgYXMgcHVibGljIG1ldGhvZC4gVGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseS4KKiBEZXByZWNhdGUgYExlc3NfQ2FjaGU6OkNsZWFuQ2FjaGUoKWAgYXMgcHVibGljIG1ldGhvZC4gVGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseS4KKiBEZXByZWNhdGUgYExlc3NfUGFyc2VyOjpTZXRDYWNoZURpcigpYC4gU2V0IHRoZSBgY2FjaGVfZGlyYCBvcHRpb24sIG9yIHVzZSBgTGVzc19DYWNoZTo6U2V0Q2FjaGVEaXIoKWAgaW5zdGVhZC4KCiMjIHY1LjIuMgoKRml4ZWQ6CiogRml4IFBhcnNlRXJyb3Igb24gQ1NTIHZhcmlhYmxlIHdoZW4gdGhlcmUgaXMgbm8gdHJhaWxpbmcgc2VtaWNvbG9uIChIYW5uYWggT2t3ZWx1bSkgW1QzODYwNzddKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzg2MDc3KQoqIFN1cHBvcnQgZnVuY3Rpb25zIGNhbGxzIGluIENTUyB2YXJpYWJsZSB2YWx1ZSBhZnRlciBmaXJzdCBjb21tYSAoSGFubmFoIE9rd2VsdW0pIFtUMzg2MDc5XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM4NjA3OSkKCiMjIHY1LjIuMQoKRml4ZWQ6CiogRml4IHVuLXBhcmVudGhlc2l6ZWQgbmVzdGVkIG9wZXJhdGlvbiB2aWEgYSB2YXJpYWJsZSAoSGFubmFoIE9rd2VsdW0pIFtUMzg2MDc0XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM4NjA3NCkKKiBGYXN0ZXIgTGVzc19WaXNpdG9yX2pvaW5TZWxlY3RvciBieSBza2lwcGluZyBEZWNsYXJhdGlvbiBibG9ja3MgKHViZXJtYW51KQoKIyMgdjUuMi4wCgpBZGRlZDoKKiBBZGQgc3VwcG9ydCBmb3IgQnJpYW5IZW5yeUlFL3N0cmF1c3MgY29kZW1vZCBpbiBMZXNzX1Zpc2l0b3IgKFN0ZWZhbiBXYXJuYXQpCgpGaXhlZDoKKiBGaXggIlBIUCBXYXJuaW5nOiBVbmRlZmluZWQgYXJyYXkga2V5IGN1cnJlbnRVcmkiIHdoZW4gdXNpbmcgYEBpbXBvcnQgKGlubGluZSlgICh0Y2spIFtUMzgwNjQxXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM4MDY0MSkKKiBGaXggIkltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBmbG9hdCB0byBpbnQiIFBIUCA4LjEgd2FybmluZyB3aGVuIHVzaW5nIGBoc3YoKWAgKFBldGVyIEtudXQpCiogTGVzc19WaXNpdG9yOiBGYXN0ZXIgY2xhc3MgbWFwcGluZyBpbiBgdmlzaXRPYmpgICBieSB1c2luZyBpbmxpbmUgY2FjaGUgKFRoaWVtbyBLcmV1eikKCiMjIHY1LjEuMgoKRml4ZWQ6CiogTGVzc19GdW5jdGlvbnM6IEZpeCAiSW1wbGljaXRseSBudWxsYWJsZSBwYXJhbWV0ZXIiIFBIUCA4LjQgd2FybmluZyAoUmVlZHkpIFtUMzc2Mjc2XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM3NjI3NikKCiMjIHY1LjEuMQoKRml4ZWQ6CiogRml4IGNvbXBpbGluZyBvZiBQSFAtaW5qZWN0ZWQgdmFyaWFibGVzIHdpdGggZmFsc2UsIG51bGwgb3IgZW1wdHkgc3RyaW5nIChIYW5uYWggT2t3ZWx1bSkKCiMjIHY1LjEuMAoKQWRkZWQ6CiogQWRkIHN1cHBvcnQgZm9yIHByb3BlcnR5IGFjZXNzb3JzIChQaW90ciBNaWF6Z2EpIFtUMzY4NDA4XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM2ODQwOCkKKiBJbmNyZWFzZSBwYXJzaW5nIGZsZXhpYmlsaXR5IGFyb3VuZCBhdC1ydWxlIGJsb2NrcyBhbmQgY3VzdG9tIHByb3BlcnRpZXMgKFBpb3RyIE1pYXpnYSkgW1QzNjg0MDhdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzY4NDA4KQoqIEFkZCBzdXBwb3J0IGZvciBOYW1lc3BhY2VzIGFuZCBBY2Nlc3NvcnMgKFBpb3RyIE1pYXpnYSkgW1QzNjg0MDldKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzY4NDA5KQoKRml4ZWQ6CiogRml4IHBhcnNlIGVycm9yIHdoZW4gb3BhY2l0eSBpcyBzZXQgdG8gemVybyBpbiBgYWxwaGEoKWAgZnVuY3Rpb24gKEhhbm5haCBPa3dlbHVtKSBbVDM3MTYwNl0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNzE2MDYpCgojIyB2NS4wLjAKCkFkZGVkOgoqIEFkZCBzdXBwb3J0IGZvciBMZXNzanMgMy41LjAgYGNhbGMoKWAgZXhjZXB0aW9uIChQaW90ciBNaWF6Z2EpIFtUMzY3MTg2XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM2NzE4NikKKiBBZGQgc3VwcG9ydCBmb3IgQ1NTIEdyaWQgc3ludGF4IChEcmluZ3NpbSkgW1QyODg0OThdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMjg4NDk4KQoqIEFkZCBzdXBwb3J0IGZvciBgXDlgIGVzY2FwZXMgaW4gQ1NTIGtleXdvcmQgKERyaW5nc2ltKSBbVDI4ODQ5OF0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QyODg0OTgpCiogQWRkIExlc3NfUGFyc2VyICJtYXRoIiBvcHRpb24sIHJlbmFtZWQgZnJvbSBzdHJpY3RNYXRoIChIYW5uYWggT2t3ZWx1bSkgW1QzNjY0NDVdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzY2NDQ1KQoKQ2hhbmdlZDoKKiBDaGFuZ2UgTGVzc19QYXJzZXIgIm1hdGgiIGRlZmF1bHQgZnJvbSAiYWx3YXlzIiB0byAicGFyZW5zLWRpdmlzaW9uIiAoSGFubmFoIE9rd2VsdW0pIFtUMzY2NDQ1XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM2NjQ0NSkKKiBDaGFuZ2UgYExlc3NfVmVyc2lvbjo6bGVzc192ZXJzaW9uYCB0byAiMy4xMy4zIi4gVGhpcyBlbmQgY29tcGF0aWJpbGl0eSBzdXBwb3J0IG9mIExlc3MuanMgMi41LjMuCiAgTGVzcy5waHAgNS4wIGFuZCBsYXRlciB3aWxsIHRhcmdldCBMZXNzLmpzIDMuMTMuMSBiZWhhdmlvdXIgaW5zdGVhZC4gKFBpb3RyIE1pYXpnYSkKClJlbW92ZWQ6CiogUmVtb3ZlIGBpbXBvcnRfY2FsbGJhY2tgIExlc3NfUGFyc2VyIG9wdGlvbiAoSGFubmFoIE9rd2VsdW0pCiogUmVtb3ZlIGJhY2t0aWNrIGV2YWx1YXRpb24gaW5zaWRlIHF1b3RlZCBzdHJpbmdzIChCYXJ0b3N6IER6aWV3b8WEc2tpKQoqIFJlbW92ZSBgTGVzc19QYXJzZXI6OkFsbFBhcnNlZEZpbGVzKClgIChIYW5uYWggT2t3ZWx1bSkKKiBSZW1vdmUgTGVzc19QYXJzZXItPlNldElucHV0KCkgcHVibGljIG1ldGhvZCwgbm93IHByaXZhdGUgKEhhbm5haCBPa3dlbHVtKQoqIFJlbW92ZSBMZXNzX1BhcnNlci0+Q2FjaGVGaWxlKCkgcHVibGljIG1ldGhvZCwgbm93IHByaXZhdGUgKEhhbm5haCBPa3dlbHVtKQoqIFJlbW92ZSBMZXNzX1BhcnNlci0+VW5zZXRJbnB1dCgpIHB1YmxpYyBtZXRob2QsIG5vdyBwcml2YXRlIChIYW5uYWggT2t3ZWx1bSkKKiBSZW1vdmUgTGVzc19QYXJzZXItPnNhdmUoKSBwdWJsaWMgbWV0aG9kLCBub3cgcHJpdmF0ZSAoSGFubmFoIE9rd2VsdW0pCgojIyB2NC40LjEKCkZpeGVkOgoqIFVwZGF0ZSBgTGVzc19WZXJzaW9uOjp2ZXJzaW9uYCBhbmQgYnVtcCBgTGVzc19WZXJzaW9uOjpjYWNoZV92ZXJzaW9uYCAoVGltbyBUaWpob2YpCgojIyB2NC40LjAKCkFkZGVkOgoqIEFkZCBgaW1hZ2Utc2l6ZSgpYCBmdW5jdGlvbiwgZGlzYWJsZSBiYXNlNjQgZm9yIFNWRyBgZGF0YS11cmkoKWAgKEhhbm5haCBPa3dlbHVtKSBbVDM1MzE0N10oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNTMxNDcpCiogSW1wcm92ZSBzdXBwb3J0IGZvciBwcmVzZXJ2aW5nIGAhaW1wb3J0YW50YCB2aWEgdmFyaWFibGVzIChQaW90ciBNaWF6Z2EpIFtUMzYyMzQxXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM2MjM0MSkKKiBBZGQgc3VwcG9ydCBmb3IgaW5jbHVkZSBwYXRoIGluc2lkZSBgZGF0YS11cmkoKWAgKEhhbm5haCBPa3dlbHVtKSBbVDM2NDg3MV0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNjQ4NzEpCgpDaGFuZ2VkLCB0byBtYXRjaCBMZXNzLmpzIDIuNS4zOgoqIEZpeCBtdWx0aXBsaWNhdGlvbiBvZiBtaXhlZCB1bml0cyB0byBwcmVzZXJ2ZSB0aGUgZmlyc3QgdW5pdCAoUGlvdHIgTWlhemdhKSBbVDM2MjM0MV0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNjIzNDEpCgpGaXhlZDoKKiBGaXggY2hlY2tpbmcgb2YgZ3VhcmQgY29uZGl0aW9ucyBpbiBuZXN0ZWQgbWl4aW5zIChIYW5uYWggT2t3ZWx1bSkgW1QzNTI4NjddKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzUyODY3KQoqIExlc3NfRnVuY3Rpb25zOiBBdm9pZCBjbG9iYmVyaW5nIGBjbGFtcCgpYCB3aXRoIGludGVybmFsIGhlbHBlciAoVGltbyBUaWpob2YpIFtUMzYzNzI4XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM2MzcyOCkKCiMjIHY0LjMuMAoKQWRkZWQ6CiogU3VwcG9ydCBpbnRlcnBvbGF0ZWQgdmFyaWFibGUgaW1wb3J0cywgdmlhIEltcG9ydFZpc2l0b3IgKEhhbm5haCBPa3dlbHVtKSBbVDM1MzEzM10oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNTMxMzMpCiogU3VwcG9ydCBydWxlc2V0cyBhcyBkZWZhdWx0IHZhbHVlcyBvZiBhIG1peGluIHBhcmFtZXRlciAoSGFubmFoIE9rd2VsdW0pIFtUMzUzMTQzXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1MzE0MykKKiBTdXBwb3J0IGAuLi5gIGV4cGFuZCBvcGVyYXRvciBpbiBtaXhpbiBjYWxscyAoUGlvdHIgTWlhemdhKSBbVDM1Mjg5N10oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNTI4OTcpCiogSW1wcm92ZSBzdXBwb3J0IGZvciBgQGltcG9ydCAocmVmZXJlbmNlKWAgbWF0Y2hpbmcgTGVzcy5qcyAyLnggKEhhbm5haCBPa3dlbHVtKSBbVDM2MjY0N10oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNjI2NDcpCgpDaGFuZ2VkOgoqIEltcHJvdmUgYG1peCgpYCBhcmd1bWVudCBleGNlcHRpb24gbWVzc2FnZSB0byBtZW50aW9uIGdpdmVuIGFyZyB0eXBlIChUaW1vIFRpamhvZikKKiBUaGUgYExlc3NfVHJlZV9JbXBvcnQtPmdldFBhdGgoKWAgbWV0aG9kIG5vdyByZWZsZWN0cyB0aGUgcGF0aCBhcyB3cml0dGVuIGluIHRoZSBzb3VyY2UgY29kZSwKICB3aXRob3V0IGF1dG8tYXBwZW5kZWQgYC5sZXNzYCBzdWZmaXgsIG1hdGNoaW5nIHVwc3RyZWFtIExlc3MuanMgMi41LjMgYmVoYXZpb3VyLgogIFRoaXMgaW50ZXJuYWwgZGV0YWlsIGlzIGV4cG9zZWQgdmlhIHRoZSBkZXByZWNhdGVkIGBpbXBvcnRfY2FsbGJhY2tgIHBhcnNlciBvcHRpb24uCiAgSXQgaXMgcmVjb21tZW5kZWQgdG8gbWlncmF0ZSB0byBgTGVzc19QYXJzZXItPlNldEltcG9ydERpcnNgLCB3aGljaCBkb2Vzbid0IGV4cG9zZSBpbnRlcm5hbHMsCiAgYW5kIGlzIHVuYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgpEZXByZWNhdGVkOgoqIERlcHJlY2F0ZSBgaW1wb3J0X2NhbGxiYWNrYCBMZXNzX1BhcnNlciBvcHRpb24uIFVzZSBgTGVzc19QYXJzZXItPlNldEltcG9ydERpcnNgIHdpdGggY2FsbGJhY2sgaW5zdGVhZC4KKiBEZXByZWNhdGUgYExlc3NfUGFyc2VyLT5TZXRJbnB1dCgpYCBhcyBwdWJsaWMgbWV0aG9kLiBVc2UgYExlc3NfUGFyc2VyLT5wYXJzZUZpbGUoKWAgaW5zdGVhZC4KKiBEZXByZWNhdGUgYExlc3NfUGFyc2VyLT5DYWNoZUZpbGUoKWAgYXMgcHVibGljIG1ldGhvZC4gVXNlIGBMZXNzX0NhY2hlYCBBUEkgaW5zdGVhZC4KKiBEZXByZWNhdGUgYExlc3NfUGFyc2VyOjpBbGxQYXJzZWRGaWxlcygpYCBhcyBzdGF0aWMgbWV0aG9kLiBVc2UgYExlc3NfUGFyc2VyLT5nZXRQYXJzZWRGaWxlcygpYCBpbnN0ZWFkLgoqIERlcHJlY2F0ZSBgTGVzc19QYXJzZXItPlVuc2V0SW5wdXQoKWAgYXMgcHVibGljIG1ldGhvZCwgY29uc2lkZXJlZCBpbnRlcm5hbC4KKiBEZXByZWNhdGUgYExlc3NfUGFyc2VyLT5zYXZlKClgIGFzIHB1YmxpYyBtZXRob2QsIGNvbnNpZGVyZWQgaW50ZXJuYWwuCgpGaXhlZDoKKiBGaXggYHJlcGxhY2UoKWAgd2hlbiBwYXNzZWQgbXVsdGlwbGUgcmVwbGFjZW1lbnRzIChSb2FuIEthdHRvdXcpIFtUMzU4NjMxXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1ODYzMSkKKiBGaXggdW5leHBlY3RlZCBkdXBsaWNhdGluZyBvZiB1bmNhbGxlZCBtaXhpbiBydWxlcyAoSGFubmFoIE9rd2VsdW0pIFtUMzYzMDc2XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM2MzA3NikKKiBGaXggUGFyc2VFcnJvciBmb3IgY29tbWVudHMgYWZ0ZXIgcnVsZSBuYW1lIG9yIGluIGBAa2V5ZnJhbWVzYCAoUGlvdHIgTWlhemdhKSBbVDM1MzEzMV0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNTMxMzEpCiogRml4IFBhcnNlRXJyb3IgZm9yIGNvbW1lbnRzIGluIG1vcmUgcGxhY2VzIGFuZCBwcmVzZXJ2ZSB0aGVtIChQaW90ciBNaWF6Z2EpIFtUMzUzMTMyXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1MzEzMikKKiBGaXggUGFyc2VFcnJvciBlZmZlY3RpbmcgcHNldWRvIGNsYXNzZXMgd2l0aCBgd2hlbmAgZ3VhcmRzIChQaW90ciBNaWF6Z2EpIFtUMzUzMTQ0XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1MzE0NCkKKiBGaXggcHJlc2VydmF0aW9uIG9mIHVuaXRzIGluIHNvbWUgY2FzZXMgKFRpbW8gVGlqaG9mKSBbVDM2MDA2NV0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNjAwNjUpCiogTGVzc19QYXJzZXI6IEZhc3RlciBtYXRjaGluZyBieSBpbmxpbmluZyBgbWF0Y2hlcigpYCBjaGFpbnMgKFRpbW8gVGlqaG9mKQoqIExlc3NfUGFyc2VyOiBGYXN0ZXIgbWF0Y2hpbmcgd2l0aCBgbWF0Y2hTdHIoKWAgbWV0aG9kIChUaW1vIFRpamhvZikKCiMjIHY0LjIuMQoKQWRkZWQ6CiogQWRkIHN1cHBvcnQgZm9yIGAvZGVlcC9gIHNlbGVjdG9ycyAoSGFubmFoIE9rd2VsdW0pIFtUMzUyODYyXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1Mjg2MikKCkZpeGVkOgoqIEZpeCBQYXJzZUVycm9yIGluIHNvbWUgZGl2aXNpb24gZXhwcmVzc2lvbnMgKEhhbm5haCBPa3dlbHVtKSBbVDM1ODI1Nl0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNTgyNTYpCiogRml4IGB3aGVuKClgIG1hdGNoaW5nIGJldHdlZW4gc3RyaW5nIGFuZCBub24tc3RyaW5nIChUaW1vIFRpamhvZikgW1QzNTgxNTldKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzU4MTU5KQoqIFByZXNlcnZlIHdoaXRlc3BhY2UgYmVmb3JlIGA7YCBvciBgIWAgaW4gc2ltcGxlIHJ1bGVzIChIYW5uYWggT2t3ZWx1bSkgW1QzNTI5MTFdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzUyOTExKQoKIyMgdjQuMi4wCgpBZGRlZDoKKiBBZGQgYGlzcnVsZXNldCgpYCBmdW5jdGlvbiAoSGFubmFoIE9rd2VsdW0pIFtUMzU0ODk1XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1NDg5NSkKKiBBZGQgc291cmNlIGRldGFpbHMgdG8gIk9wZXJhdGlvbiBvbiBhbiBpbnZhbGlkIHR5cGUiIGVycm9yIChIYW5uYWggT2t3ZWx1bSkgW1QzNDQxOTddKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzQ0MTk3KQoqIEFkZCBzdXBwb3J0IGZvciBgbWV0aG9kPXJlbGF0aXZlYCBwYXJhbWV0ZXIgaW4gY29sb3IgZnVuY3Rpb25zIChIYW5uYWggT2t3ZWx1bSkgW1QzNTQ4OTVdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzU0ODk1KQoqIEFkZCBzdXBwb3J0IGZvciBjb21tZW50cyBpbiB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9uIHBhcmFtZXRlcnMgKEhhbm5haCBPa3dlbHVtKSBbVDM1NDg5NV0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNTQ4OTUpCiogTGVzc19QYXJzZXI6IEFkZCBgZnVuY3Rpb25zYCBwYXJzZXIgb3B0aW9uIEFQSSAoSGFubmFoIE9rd2VsdW0pCgpDaGFuZ2VkLCB0byBtYXRjaCBMZXNzLmpzIDIuNS4zOgoqIFByZXNlcnZlIG9yaWdpbmFsIGNvbG9yIGtleXdvcmRzIGFuZCBzaG9ydGhhbmQgaGV4IChIYW5uYWggT2t3ZWx1bSkgW1QzNTI4NjZdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzUyODY2KQoKRml4ZWQ6CiogRml4IFBIUCBXYXJuaW5nIHdoZW4gdXNpbmcgYSBkeW5hbWljIHZhcmlhYmxlIG5hbWUgbGlrZSBgQEBuYW1lYCAoSGFubmFoIE9rd2VsdW0pIFtUMzUyODMwXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1MjgzMCkKKiBGaXggUEhQIFdhcm5pbmcgd2hlbiBgQGV4dGVuZGAgcGF0aCBjb250YWlucyBub24tcXVvdGVkIGF0dHJpYnV0ZSAoR3I4YikgW1QzNDk0MzNdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzQ5NDMzKQoqIExlc3NfUGFyc2VyOiBGYXN0ZXIgYHNraXBXaGl0ZXNwYWNlYCBieSB1c2luZyBuYXRpdmUgYHN0cnNwbmAgKFVtaGVyaXJyZW5kZXIpCiogTGVzc19QYXJzZXI6IEZpeCBMZXNzX1RyZWVfSmF2YVNjcmlwdCByZWZlcmVuY2VzIHRvIGNvbnNpc3RlbnRseSBiZSBpbiBjYW1lbC1jYXNlIChTdGVmYW4gRnLDtmhsaWNoKQoqIEZpeCBgIWltcG9ydGFudGAgaW4gbmVzdGVkIG1peGlucyAoSGFubmFoIE9rd2VsdW0pIFtUMzUzMTQxXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1MzE0MSkKKiBGaXggY3Jhc2ggd2hlbiB1c2luZyByZWN1cnNpdmUgbWl4aW5zIChUaW1vIFRpamhvZikgW1QzNTI4MjldKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzUyODI5KQoqIEZpeCBkaXNhcHBlYXJpbmcgc2VsZWN0b3JzIGluIGNlcnRhaW4gbmVzdGVkIGJsb2NrcyAoSGFubmFoIE9rd2VsdW0pIFtUMzUyODU5XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1Mjg1OSkKKiBGaXggTGVzc19FeGNlcHRpb25fQ29tcGlsZXIgd2hlbiBwYXNzaW5nIHVucXVvdGVkIHZhbHVlIHRvIGBjb2xvcigpYCAoSGFubmFoIE9rd2VsdW0pIFtUMzUzMjg5XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1MzI4OSkKKiBGaXggb3JkZXIgb2YgY29tbWVudHMgaW4gYEBmb250LWZhY2VgIGJsb2NrcyAoVGltbyBUaWpob2YpIFtUMzU2NzA2XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1NjcwNikKKiBGaXggc3RyaW5nIGNvbXBhcmlzb24gdG8gaWdub3JlIHF1b3RlIHR5cGUgKFRpbW8gVGlqaG9mKSBbVDM1NzE2MF0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzNTcxNjApCiogRml4IHN0cmluZyBpbnRlcnBvbGF0aW9uIGluIHNlbGVjdG9ycyAoSGFubmFoIE9rd2VsdW0pIFtUMzUzMTQyXShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDM1MzE0MikKCiMjIHY0LjEuMQoKKiBMZXNzX1BhcnNlcjogRmFzdGVyIGBNYXRjaFF1b3RlZGAgYnkgdXNpbmcgbmF0aXZlIGBzdHJjc3BuYC4gKFRoaWVtbyBLcmV1eikKKiBMZXNzX1BhcnNlcjogRmFzdGVyIGBwYXJzZUVudGl0aWVzUXVvdGVkYCBieSBpbmxpbmluZyBgTWF0Y2hRdW90ZWRgLiAoVGhpZW1vIEtyZXV6KQoqIExlc3NfUGFyc2VyOiBGYXN0ZXIgYHBhcnNlVW5pY29kZURlc2NyaXB0b3JgIGFuZCBgcGFyc2VFbnRpdGllc0phdmFzY3JpcHRgIGJ5IGZpcnN0LWNoYXIgY2hlY2tzLiAoVGhpZW1vIEtyZXV6KQoqIExlc3NfVHJlZV9NaXhpbl9DYWxsOiBJbmNsdWRlIG1peGluIG5hbWUgaW4gZXJyb3IgbWVzc2FnZSAoSmVyZW15IFApCiogRml4IG1pc21hdGNoZWQgY2FzaW5nIGluIGNsYXNzIG5hbWVzIHRvIGZpeCBhdXRvbG9hZGluZyBvbiBjYXNlLXNlbnNpdGl2ZSBmaWxlc3lzdGVtcyAoSmVyZW15IFApCgojIyB2NC4xLjAKCiogQWRkIHN1cHBvcnQgZm9yIGBAc3VwcG9ydHNgIGJsb2Nrcy4gKEFubmUgVG9tYXNldmljaCkgW1QzMzI5MjNdKGh0dHA6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzMzI5MjMpCiogTGVzc19QYXJzZXI6IFJldHVybmluZyBhIFVSSSBmcm9tIGBTZXRJbXBvcnREaXJzKClgIGNhbGxiYWNrcyBpcyBub3cgb3B0aW9uYWwuIChUaW1vIFRpamhvZikKCiMjIHY0LjAuMAoKKiBSZW1vdmUgc3VwcG9ydCBmb3IgUEhQIDcuMiBhbmQgNy4zLiBSYWlzZSByZXF1aXJlbWVudCB0byBQSFAgNy40Ky4KKiBSZW1vdmUgc3VwcG9ydCBmb3IgYGNhY2hlX21ldGhvZD1waHBgIGFuZCBgY2FjaGVfbWV0aG9kPXZhcl9leHBvcnRgLCBvbmx5IHRoZSBmYXN0ZXIgYW5kIG1vcmUgc2VjdXJlIGBjYWNoZV9tZXRob2Q9c2VyaWFsaXplYCBpcyBub3cgYXZhaWxhYmxlLiBUaGUgYnVpbHQtaW4gY2FjaGUgcmVtYWlucyBkaXNhYmxlZCBieSBkZWZhdWx0LgoqIEZpeCBgdXJsKCNteWlkKWAgdG8gYmUgdHJlYXRlZCBhcyBhYnNvbHV0ZSBVUkwuIFtUMzMxNjQ5XShodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDMzMTY4OCkKKiBGaXggIlVuZGVmaW5lZCBwcm9wZXJ0eSIgUEhQIDguMSB3YXJuaW5nIHdoZW4gYGNhbGMoKWAgaXMgdXNlZCB3aXRoIENTUyBgdmFyKClgLiBbVDMzMTY4OF0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QzMzE2ODgpCiogTGVzc19QYXJzZXI6IEltcHJvdmUgcGVyZm9ybWFuY2UgYnkgcmVtb3ZpbmcgTWF0Y2hGdW5jcyBhbmQgTmV3T2JqIG92ZXJoZWFkLiAoVGltbyBUaWpob2YpCgojIyB2My4yLjEKCiogVHJlZV9SdWxlc2V0OiBGaXggc3VwcG9ydCBmb3IgbmVzdGVkIHBhcmVudCBzZWxlY3RvcnMgKFRpbW8gVGlqaG9mKSBbVDIwNDgxNl0oaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL1QyMDQ4MTYpCiogRml4IFBhcnNlRXJyb3Igd2hlbiBpbnRlcnBvbGF0aW5nIHZhcmlhYmxlIGFmdGVyIGNvbG9uIGluIHNlbGVjdG9yIChUaW1vIFRpamhvZikgW1QzMjcxNjNdKGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzI3MTYzKQoqIEZ1bmN0aW9uczogRml4ICJVbmRlZmluZWQgcHJvcGVydHkiIHdhcm5pbmcgb24gYmFkIG1pbm1heCBhcmcKKiBUcmVlX0NhbGw6IEluY2x1ZGUgcHJldmlvdXMgZXhjZXB0aW9uIHdoZW4gY2F0Y2hpbmcgZnVuY3Rpb25zIChSb2JlcnQgRnJ1bnprZSkKCiMjIHYzLjIuMAoKKiBGaXggIkltcGxpY2l0IGNvbnZlcnNpb24iIFBIUCA4LjEgd2FybmluZ3MgKEF5b2t1bmxlIE9kdXNhbikKKiBGaXggIkNyZWF0aW9uIG9mIGR5bmFtaWMgcHJvcGVydHkiIFBIUCA4LjIgd2FybmluZ3MgKEJhcyBDb3V3ZW5iZXJnKQoqIEZpeCAiQ3JlYXRpb24gb2YgZHluYW1pYyBwcm9wZXJ0eSIgUEhQIDguMiB3YXJuaW5ncyAoUmFqZXNoIEt1bWFyKQoqIFRyZWVfVXJsOiBBZGQgc3VwcG9ydCBmb3IgIlVybCIgdHlwZSB0byBgUGFyc2VyOjpnZXRWYXJpYWJsZXMoKWAgKGNpcm9hcmNhZGlvKSBbIzUxXShodHRwczovL2dpdGh1Yi5jb20vd2lraW1lZGlhL2xlc3MucGhwL3B1bGwvNTEpCiogVHJlZV9JbXBvcnQ6IEFkZCBzdXBwb3J0IGZvciBpbXBvcnRpbmcgVVJMcyB3aXRob3V0IGZpbGUgZXh0ZW5zaW9uIChUaW1vIFRpamhvZikgWyMyN10oaHR0cHM6Ly9naXRodWIuY29tL3dpa2ltZWRpYS9sZXNzLnBocC9pc3N1ZXMvMjcpCgojIyB2My4xLjAKCiogQWRkIFBIUCA4LjAgc3VwcG9ydDogRHJvcCB1c2Ugb2YgY3VybHkgYnJhY2VzIGZvciBzdWItc3RyaW5nIGV2YWwgKEphbWVzIEQuIEZvcnJlc3RlcikKKiBNYWtlIGBEaXJlY3RpdmU6Ol9fY29uc3RydWN0YCAkcnVsZXMgYXJnIG9wdGlvbmFsIChmaXggUEhQIDcuNCB3YXJuaW5nKSAoU2FtIFJlZWQpCiogUHJvY2Vzc0V4dGVuZHM6IEltcHJvdmUgcGVyZm9ybWFuY2UgYnkgdXNpbmcgYSBtYXAgZm9yIHNlbGVjdG9ycyBhbmQgcGFyZW50cyAoQW5kcmV5IExlZ2F5ZXYpCgojIyB2My4wLjAKCiogUmFpc2UgUEhQIHJlcXVpcmVtZW50IGZyb20gNy4xIHRvIDcuMi45IChKYW1lcyBGb3JyZXN0ZXIpCgojIyB2Mi4wLjAKCiogUmVsYXggUEhQIHJlcXVpcmVtZW50IGRvd24gdG8gNy4xLCBmcm9tIDcuMi45IChGcmFueiBMaWVka2UpCiogUmVmbGVjdCByZWNlbnQgYnJlYWtpbmcgY2hhbmdlcyBwcm9wZXJseSB3aXRoIHRoZSBzZW1hbnRpYyB2ZXJzaW9uaW5nIChKYW1lcyBGb3JyZXN0ZXIpCgojIyB2MS44LjIKCiogUmVxdWlyZSBQSFAgNy4yLjkrLCB1cCBmcm9tIDUuMysgKEphbWVzIEZvcnJlc3RlcikKKiByZWxlYXNlOiBVcGRhdGUgVmVyc2lvbi5waHAgd2l0aCB0aGUgY3VycmVudCByZWxlYXNlIElEIChDT0JhZGdlcikKKiBGaXggYWNjZXNzIGFycmF5IG9mZnNldCBvbiB2YWx1ZSBvZiB0eXBlIG51bGwgKE1pY2hlbGUgTG9jYXRpKQoqIEZpeCB0ZXN0IHN1aXRlIG9uIFBIUCA3LjQgKFNlcmdlaSBNb3Jvem92KQoKIyMgdjEuOC4xCgoqIEFub3RoZXIgUEhQIDcuMyBjb21wYXRpYmlsaXR5IHR3ZWFrCgojIyB2MS44LjAKCkxpYnJhcnkgZm9ya2VkIGJ5IFdpa2ltZWRpYSwgZnJvbSBbb3llam9yZ2UvbGVzcy5waHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9veWVqb3JnZS9sZXNzLnBocCkuCgoqIFN1cHBvcnRzIHVwIHRvIFBIUCA3LjMKKiBObyBsb25nZXIgdGVzdGVkIGFnYWluc3QgUEhQIDUsIHRob3VnaCBpdCdzIHN0aWxsIHJlbWFpbnMgYWxsb3dlZCBpbiBgY29tcG9zZXIuanNvbmAgZm9yIEhIVk0gY29tcGF0aWJpbGl0eQoqIFN3aXRjaGVkIHRvIFtzZW1hbnRpYyB2ZXJzaW9uaW5nXShodHRwczovL3NlbXZlci5vcmcvKSwgaGVuY2UgdmVyc2lvbiBudW1iZXJzIG5vdyB1c2UgMyBkaWdpdHMKCiMjIHYxLjcuMC4xMwoKKiBGaXggY29tcG9zZXIuanNvbiAoUFNSLTQgd2FzIGludmFsaWQpCgojIyB2MS43LjAuMTIKCiogc2V0IGJpbi9sZXNzYyBiaXQgZXhlY3V0YWJsZQoqIEFkZCBgZ2V0dGluZ1ZhcmlhYmxlc2AgbWV0aG9kIHRvIGBMZXNzX1BhcnNlcmAKCiMjIHYxLjcuMC4xMQoKKiBGaXggcmVhbHBhdGggaXNzdWUgKHdpbmRvd3MpCiogU2V0IExlc3NfVHJlZV9DYWxsIHByb3BlcnR5IGJhY2sgdG8gcHVibGljICggRml4IDI1OCAyNjYgMjY3IGlzc3VlcyBmcm9tIG95ZWpvcmdlL2xlc3MucGhwKQoKIyMgdjEuNy4wLjEwCgoqIEFkZCBpbmRlbnRhdGlvbiBvcHRpb24KKiBBZGQgYG9wdGlvbmFsYCBtb2RpZmllciBmb3IgYEBpbXBvcnRgCiogRml4ICRjb2xvciBpbiBFeGNlcHRpb24gbWVzc2FnZXMKKiB0YWtlIHJlbGF0aXZlLXVybCBpbnRvIGFjY291bnQgd2hlbiBidWlsZGluZyB0aGUgY2FjaGUgZmlsZW5hbWUKKiB1cmxBcmdzIHNob3VsZCBiZSBzdHJpbmcgbm8gYXJyYXkoKQoqIGZpeCBtaXNzaW5nIG9uIE5hbWVWYWx1ZSB0eXBlIFsjMjY5XShodHRwczovL2dpdGh1Yi5jb20vb3llam9yZ2UvbGVzcy5waHAvaXNzdWVzLzI2OSkKCiMjIHYxLjcuMC45CgoqIFJlbW92ZSBzcGFjZSBhdCBiZWdpbm5pbmcgb2YgVmVyc2lvbi5waHAKKiBSZXZlcnQgcmVxdWlyZSgpIHBhdGhzIGluIHRlc3QgaW50ZXJmYWNlCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/CODE_OF_CONDUCT.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgaXMgY292ZXJlZCBieSBhIFtDb2RlIG9mIENvbmR1Y3RdKGh0dHBzOi8vd3d3Lm1lZGlhd2lraS5vcmcvd2lraS9TcGVjaWFsOk15TGFuZ3VhZ2UvQ29kZV9vZl9Db25kdWN0KS4K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewoJIm5hbWUiOiAid2lraW1lZGlhL2xlc3MucGhwIiwKCSJkZXNjcmlwdGlvbiI6ICJQSFAgcG9ydCBvZiB0aGUgTEVTUyBwcm9jZXNzb3IiLAoJImtleXdvcmRzIjogWwoJCSJsZXNzIiwKCQkiY3NzIiwKCQkicGhwIiwKCQkic3R5bGVzaGVldCIsCgkJImxlc3MuanMiLAoJCSJsZXNzY3NzIgoJXSwKCSJsaWNlbnNlIjogIkFwYWNoZS0yLjAiLAoJImhvbWVwYWdlIjogImh0dHBzOi8vZ2Vycml0Lndpa2ltZWRpYS5vcmcvZy9tZWRpYXdpa2kvbGlicy9sZXNzLnBocCIsCgkiYXV0aG9ycyI6IFsKCQl7CgkJCSJuYW1lIjogIlRpbW8gVGlqaG9mIiwKCQkJImhvbWVwYWdlIjogImh0dHBzOi8vdGltb3RpamhvZi5uZXQiCgkJfSwKCQl7CgkJCSJuYW1lIjogIkpvc2ggU2NobWlkdCIsCgkJCSJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vb3llam9yZ2UiCgkJfSwKCQl7CgkJCSJuYW1lIjogIk1hdHQgQWdhciIsCgkJCSJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vYWdhciIKCQl9LAoJCXsKCQkJIm5hbWUiOiAiTWFydGluIEphbnRvxaFvdmnEjSIsCgkJCSJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vTW9yZHJlZCIKCQl9CgldLAoJImF1dG9sb2FkIjogewoJCSJwc3ItMCI6IHsKCQkJIkxlc3MiOiAibGliLyIKCQl9LAoJCSJjbGFzc21hcCI6IFsKCQkJImxlc3NjLmluYy5waHAiCgkJXQoJfSwKCSJiaW4iOiBbCgkJImJpbi9sZXNzYyIKCV0sCgkicmVxdWlyZSI6IHsKCQkicGhwIjogIj49OC4xIgoJfSwKCSJyZXF1aXJlLWRldiI6IHsKCQkibWVkaWF3aWtpL21lZGlhd2lraS1jb2Rlc25pZmZlciI6ICI0OC4wLjAiLAoJCSJtZWRpYXdpa2kvbWVkaWF3aWtpLXBoYW4tY29uZmlnIjogIjAuMTcuMCIsCgkJIm1lZGlhd2lraS9taW51cy14IjogIjEuMS4zIiwKCQkicGhwLXBhcmFsbGVsLWxpbnQvcGhwLWNvbnNvbGUtaGlnaGxpZ2h0ZXIiOiAiMS4wLjAiLAoJCSJwaHAtcGFyYWxsZWwtbGludC9waHAtcGFyYWxsZWwtbGludCI6ICIxLjQuMCIsCgkJInBocHVuaXQvcGhwdW5pdCI6ICIxMC41LjU4IgoJfSwKCSJzY3JpcHRzIjogewoJCSJ0ZXN0IjogWwoJCQkicGFyYWxsZWwtbGludCAuIC0tZXhjbHVkZSB2ZW5kb3IiLAoJCQkicGhwdW5pdCIsCgkJCSJAcGhwY3MiLAoJCQkiQHBoYW4iLAoJCQkibWludXMteCBjaGVjayAuIgoJCV0sCgkJImJlbmNoIjogIkBwaHAgLWQgb3BjYWNoZS5lbmFibGU9MSAtZCBvcGNhY2hlLmVuYWJsZV9jbGk9MSB0ZXN0L2JlbmNoLnBocCIsCgkJImNoYW5nZWxvZyI6ICJnaXQgbG9nIC0tZm9ybWF0PScqICVzICglYU4pJyAtLW5vLW1lcmdlcyAtLXJldmVyc2UgJChnaXQgZGVzY3JpYmUgLS10YWdzIC0tYWJicmV2PTAgSEVBRCkuLi5IRUFEIHwgc29ydCB8IGdyZXAgLXZFICdeXFwqIChidWlsZHxkb2NzP3x0ZXN0cz8pOiciLAoJCSJjb3ZlciI6ICJwaHB1bml0IC0tY292ZXJhZ2UtaHRtbCBjb3ZlcmFnZSIsCgkJImZpeCI6IFsKCQkJIm1pbnVzLXggZml4IC4iLAoJCQkicGhwY2JmIgoJCV0sCgkJInBoYW4iOiAicGhhbiAtLWFsbG93LXBvbHlmaWxsLXBhcnNlciIsCgkJInBocGNzIjogInBocGNzIC1zcCIKCX0sCgkiY29uZmlnIjogewoJCSJhbGxvdy1wbHVnaW5zIjogewoJCQkiZGVhbGVyZGlyZWN0L3BocGNvZGVzbmlmZmVyLWNvbXBvc2VyLWluc3RhbGxlciI6IHRydWUKCQl9Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/CONTRIBUTING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBNYWludGFpbmVycyBndWlkZQoKIyMgUmVsZWFzZSBwcm9jZXNzCgoxLiAqKkNoYW5nZWxvZy4qKiBBZGQgYSBuZXcgc2VjdGlvbiB0byB0aGUgdG9wIG9mIGBDSEFOR0VTLm1kYCB3aXRoIHRoZSBvdXRwdXQgZnJvbSBgY29tcG9zZXIgY2hhbmdlbG9nYC4KCiAgIEVkaXQgeW91ciBuZXcgc2VjdGlvbiBieSBmb2xsb3dpbmcgdGhlIFtLZWVwIGEgY2hhbmdlbG9nXShodHRwczovL2tlZXBhY2hhbmdlbG9nLmNvbS9lbi8xLjAuMC8pIGNvbnZlbnRpb25zLCB3aGVyZSBieSBidWxsZXQgcG9pbnRzIGFyZSB1bmRlciBvbmUgb2YgdGhlICJBZGRlZCIsICJDaGFuZ2VkIiwgIkZpeGVkIiwgIkRlcHJlY2F0ZWQiLCBvciAiUmVtb3ZlZCIgbGFiZWxzLgoKICAgUmV2aWV3IGVhY2ggcG9pbnQgYW5kIG1ha2Ugc3VyZSBpdCBpcyBwaHJhc2VkIGluIGEgd2F5IHRoYXQgZXhwbGFpbnMgdGhlIGltcGFjdCBvbiBlbmQtdXNlcnMgb2YgdGhlIGxpYnJhcnkuIElmIHRoZSBjaGFuZ2UgZG9lcyBub3QgYWZmZWN0IHRoZSBwdWJsaWMgQVBJIG9yIENTUyBvdXRwdXQsIHJlbW92ZSB0aGUgYnVsbGV0IHBvaW50LgoKMi4gKipWZXJzaW9uIGJ1bXAuKiogVXBkYXRlIGAvbGliL0xlc3MvVmVyc2lvbi5waHBgIGFuZCBzZXQgYHZlcnNpb25gIHRvIHRoZSB2ZXJzaW9uIHRoYXQgeW91J3JlIGFib3V0IHRvIHJlbGVhc2UuIEFsc28gaW5jcmVhc2UgYGNhY2hlX3ZlcnNpb25gIHRvIGluY3JlbWVudCB0aGUgbGFzdCBudW1iZXIuCgozLiAqKkNvbW1pdC4qKiBTdGFnZSBhbmQgY29tbWl0IHlvdXIgY2hhbmdlcyB3aXRoIHRoZSBtZXNzYWdlIGBUYWcgdlguWS5aYCwgYW5kIHRoZW4gcHVzaCB0aGUgY29tbWl0IGZvciByZXZpZXcuCgo0LiAqKlRhZy4qKiBBZnRlciB0aGUgYWJvdmUgcmVsZWFzZSBjb21taXQgaXMgbWVyZ2VkLCBjaGVja291dCB0aGUgbWFzdGVyIGJyYW5jaCBhbmQgcHVsbCBkb3duIHRoZSBsYXRlc3QgY2hhbmdlcy4gVGhlbiBjcmVhdGUgYSBgdlguWS5aYCB0YWcgYW5kIHB1c2ggdGhlIHRhZy4KCiAgIFJlbWVtYmVyIHRvLCBhZnRlciB0aGUgY29tbWl0IGlzIG1lcmdlZCwgZmlyc3QgY2hlY2tvdXQgdGhlIG1hc3RlciBicmFuY2ggYW5kIHB1bGwgZG93biB0aGUgbGF0ZXN0IGNoYW5nZXMuIFRoaXMgaXMgdG8gbWFrZSBzdXJlIHlvdSBoYXZlIHRoZSBtZXJnZWQgdmVyc2lvbiBhbmQgbm90IHRoZSBkcmFmdCBjb21taXQgdGhhdCB5b3UgcHVzaGVkIGZvciByZXZpZXcuCgojIyBJbnRlcm5hbCBvdmVydmlldwoKVGhpcyBpcyBhbiBvdmVydmlldyBvZiB0aGUgaGlnaC1sZXZlbCBzdGVwcyBkdXJpbmcgdGhlIHRyYW5zZm9ybWF0aW9uCmZyb20gTGVzcyB0byBDU1MsIGFuZCBob3cgdGhleSBjb21wYXJlIGJldHdlZW4gTGVzcy5qcyBhbmQgTGVzcy5waHAuCgpMZXNzLmpzOgoKKiBgbGVzcy5yZW5kZXIoaW5wdXQsIHsgcGF0aHM6IOKApiB9KWAKICAqIGBQYXJzZXIucGFyc2VgIG5vcm1hbGl6ZXMgaW5wdXQKICAqIGBQYXJzZXIucGFyc2VgIHBhcnNlcyBpbnB1dCBpbnRvIHJ1bGVzIHZpYSBgcGFyc2Vycy5wcmltYXJ5YAogICogYFBhcnNlci5wYXJzZWAgY3JlYXRlcyB0aGUgInJvb3QiIHJ1bGVzZXQgb2JqZWN0CiAgKiBgUGFyc2VyLnBhcnNlYCBhcHBsaWVzIEltcG9ydFZpc2l0b3IKICAgICogYEltcG9ydFZpc2l0b3JgIGFwcGxpZXMgdGhlc2Ugc3RlcHMgdG8gZWFjaCBgSW1wb3J0YCBub2RlOgogICAgICAqIGBJbXBvcnRWaXNpdG9yI3Byb2Nlc3NJbXBvcnROb2RlYAogICAgICAqIGBJbXBvcnQjZXZhbEZvckltcG9ydGAKICAgICogYEltcG9ydFZpc2l0b3JgIGVuZHMgd2l0aCBgSW1wb3JWaXNpdG9yI3RyeVJ1bmAgbG9vcCAoYXN5bmMsIGFmdGVyIGxhc3QgY2FsbCB0byBgSW1wb3J0VmlzaXRvciNvbkltcG9ydGVkYC4KKiBgbGVzcy5yZW5kZXJgIGNhbGxiYWNrCiAgKiBgUGFyc2VUcmVlLnByb3RvdHlwZS50b0NTU2AKICAgICogYHRyYW5zZm9ybVRyZWVgIGFwcGxpZXMgcHJlLXZpc2l0b3JzLCBjb21waWxlcyBhbGwgcnVsZXMsIGFuZCBhcHBsaWVzIHBvc3QtdmlzaXRvcnMuCiAgKiBgUGFyc2VUcmVlLnByb3RvdHlwZS50b0NTU2AgcnVucyB0b0NTUyB0cmFuc2Zvcm0gb24gdGhlICJyb290IiBydWxlc2V0LgoqIENTUyByZXN1bHQgcmVhZHkhCgpMZXNzLnBocAoKKiBgTGVzc19QYXJzZXItPnBhcnNlRmlsZWAKICAqIGBMZXNzX1BhcnNlci0+X3BhcnNlYAogICogYExlc3NfUGFyc2VyLT5HZXRSdWxlc2Agbm9ybWFsaXplcyBpbnB1dCAodmlhIGBMZXNzX1BhcnNlci0+U2V0SW5wdXRgKQogICogYExlc3NfUGFyc2VyLT5HZXRSdWxlc2AgcGFyc2VzIGlucHV0IGludG8gcnVsZXMgdmlhIGBMZXNzX1BhcnNlci0+cGFyc2VQcmltYXJ5YAoqIGBMZXNzX1BhcnNlci0+Z2V0Q3NzYAogICogYExlc3NfUGFyc2VyLT5nZXRDc3NgIGNyZWF0ZXMgdGhlICJyb290IiBydWxlc2V0IG9iamVjdAogICogYExlc3NfUGFyc2VyLT5nZXRDc3NgIGFwcGxpZXMgTGVzc19JbXBvcnRWaXNpdG9yCiAgICAqIGBMZXNzX0ltcG9ydFZpc2l0b3JgIGFwcGxpZXMgdGhlc2Ugc3RlcHMgdG8gZWFjaCBgSW1wb3J0YCBub2RlOgogICAgICAqIGBJbXBvcnRWaXNpdG9yLT5wcm9jZXNzSW1wb3J0Tm9kZWAKICAgICAgKiBgTGVzc19UcmVlX0ltcG9ydC0+Y29tcGlsZUZvckltcG9ydGAKICAgICogYEltcG9ydFZpc2l0b3JgIGVuZHMgd2l0aCBgSW1wb3JWaXNpdG9yI3RyeVJ1bmAgbG9vcCAoYWxsIHN5bmMsIG5vIGFzeW5jIG5lZWRlZCkuCiAgKiBgTGVzc19QYXJzZXItPmdldENzc2AgYXBwbGllcyBwcmUtdmlzaXRvcnMsIGNvbXBpbGVzIGFsbCBydWxlcywgYW5kIGFwcGxpZXMgcG9zdC12aXNpdG9ycy4KICAqIGBMZXNzX1BhcnNlci0+Z2V0Q3NzYCBydW5zIHRvQ1NTIHRyYW5zZm9ybSBvbiB0aGUgInJvb3QiIHJ1bGVzZXQuCiogQ1NTIHJlc3VsdCByZWFkeSEKCiMjIENvbXBhdGliaWxpdHkKClRoZSBgd2lraW1lZGlhL2xlc3MucGhwYCBwYWNrYWdlIGluaGVyaXRzIGEgbG9uZyBoaXN0b3J5IG9mIGxvb3NlbHkgY29tcGF0aWJsZQphbmQgaW50ZXJjaGFuZ2FibGUgTGVzcyBjb21waWxlcnMgd3JpdHRlbiBpbiBQSFAuCgpTdGFydGluZyB3aXRoIGxlc3MucGhwIHYzLjIuMSAocmVsZWFzZWQgaW4gMjAyMyksIHRoZSBwdWJsaWMgQVBJIGlzIG1vcmUgY2xlYXJseQpkb2N1bWVudGVkLCBhbmQgaW50ZXJuYWwgY29kZSBpcyBub3cgY29uc2lzdGVudGx5IG1hcmtlZCBgQHByaXZhdGVgLgoKVGhlIHB1YmxpYyBBUEkgaW5jbHVkZXMgdGhlIGBMZXNzX1BhcnNlcmAgY2xhc3MgYW5kIHNldmVyYWwgb2YgaXRzIHB1YmxpYyBtZXRob2RzLgpGb3IgbGVnYWN5IHJlYXNvbnMsIHNvbWUgb2YgaXRzIGludGVybmFsIG1ldGhvZHMgcmVtYWluIHB1YmxpYy4gTWFpbnRhaW5lcnMgbXVzdAp0YWtlIGNhcmUgdG8gc2VhcmNoIHRoZSBmb2xsb3dpbmcgZG93bnN0cmVhbSBhcHBsaWNhdGlvbnMgd2hlbiBjaGFuZ2luZyBvcgpyZW1vdmluZyBwdWJsaWMgbWV0aG9kcy4gSWYgYSBtZXRob2QgaGFzIG9uZSBvciBtb3JlIHJlZmVyZW5jZXMgaW4gdGhlIGJlbG93CmNvZGViYXNlcywgdHJlYXQgaXQgYXMgYSBicmVha2luZyBjaGFuZ2UgYW5kIGRvY3VtZW50IGEgbWlncmF0aW9uIHBhdGggaW4gdGhlCmNvbW1pdCBtZXNzYWdlIChhbmQgbGF0ZXIgaW4gQ0hBTkdFUy5tZCksIGV2ZW4gaWYgdGhlIG1ldGhvZCB3YXMgdW5kb2N1bWVudGVkCm9yIGZlZWxzIGxpa2UgaXQgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5LgoKKiBbTWVkaWFXaWtpIChzb3VyY2UgY29kZSldKGh0dHBzOi8vY29kZXNlYXJjaC53bWNsb3VkLm9yZy9jb3JlLz9xPUxlc3NfUGFyc2VyJmZpbGVzPXBocCUyNCkKKiBbTWF0b21vIChzb3VyY2UgY29kZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRvbW8tb3JnL21hdG9tby9ibG9iLzUuMC4yL2NvcmUvQXNzZXRNYW5hZ2VyL1VJQXNzZXRNZXJnZXIvU3R5bGVzaGVldFVJQXNzZXRNZXJnZXIucGhwKQoqIFtBZG9iZSBNYWdlbnRvIChzb3VyY2UgY29kZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9tYWdlbnRvL21hZ2VudG8yL2Jsb2IvMi40LjYvbGliL2ludGVybmFsL01hZ2VudG8vRnJhbWV3b3JrL0Nzcy9QcmVQcm9jZXNzb3IvQWRhcHRlci9MZXNzL1Byb2Nlc3Nvci5waHApCiogW1Nob3B3YXJlIDUgKHNvdXJjZSBjb2RlKV0oaHR0cHM6Ly9naXRodWIuY29tL3Nob3B3YXJlNS9zaG9wd2FyZS9ibG9iLzUuNy9lbmdpbmUvU2hvcHdhcmUvQ29tcG9uZW50cy9UaGVtZS9MZXNzQ29tcGlsZXIvT3llam9yZ2UucGhwKQoqIFtXaW50ZXIgQ01TIEFzc2V0aWMgKHNvdXJjZSBjb2RlKV0oaHR0cHM6Ly9naXRodWIuY29tL2Fzc2V0aWMtcGhwL2Fzc2V0aWMvdHJlZS92My4xLjAvc3JjL0Fzc2V0aWMvRmlsdGVyKQoqIFtGbGFydW0gRnJhbWV3b3JrIChzb3VyY2UgY29kZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9mbGFydW0vZnJhbWV3b3JrKQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/Doxyfile</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBEb3h5ZmlsZSA8aHR0cHM6Ly93d3cuZG94eWdlbi5ubC9tYW51YWwvY29uZmlnLmh0bWw+ClBST0pFQ1RfTkFNRSAgICAgICAgICAgPSAid2lraW1lZGlhL2xlc3MucGhwIgpQUk9KRUNUX0JSSUVGICAgICAgICAgID0gIlBIUCBwb3J0IG9mIHRoZSBMRVNTIHByb2Nlc3NvciIKT1VUUFVUX0RJUkVDVE9SWSAgICAgICA9IGRvYwpKQVZBRE9DX0FVVE9CUklFRiAgICAgID0gWUVTClFUX0FVVE9CUklFRiAgICAgICAgICAgPSBZRVMKUVVJRVQgICAgICAgICAgICAgICAgICA9IFlFUwpXQVJOSU5HUyAgICAgICAgICAgICAgID0gTk8KV0FSTl9JRl9VTkRPQ1VNRU5URUQgICA9IE5PCldBUk5fSUZfRE9DX0VSUk9SICAgICAgPSBOTwpJTlBVVCAgICAgICAgICAgICAgICAgID0gUkVBRE1FLm1kIEFQSS5tZCBTRUNVUklUWS5tZCBDSEFOR0VTLm1kIGxpYi8KRklMRV9QQVRURVJOUyAgICAgICAgICA9ICoucGhwClJFQ1VSU0lWRSAgICAgICAgICAgICAgPSBZRVMKVVNFX01ERklMRV9BU19NQUlOUEFHRSA9IFJFQURNRS5tZApBTElBU0VTICAgICAgICAgICAgICAgID0gInBoYW49XG5vb3AiCkhUTUxfQ09MT1JTVFlMRSAgICAgICAgPSBMSUdIVApIVE1MX0RZTkFNSUNfU0VDVElPTlMgID0gWUVTCkdFTkVSQVRFX1RSRUVWSUVXICAgICAgPSBZRVMKVFJFRVZJRVdfV0lEVEggICAgICAgICA9IDI1MApHRU5FUkFURV9MQVRFWCAgICAgICAgID0gTk8KR0VORVJBVEVfVEFHRklMRSAgICAgICA9IGRvYy9odG1sL3RhZ2ZpbGUueG1sCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lessc.inc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFRoaXMgZmlsZSBwcm92aWRlcyB0aGUgcGFydCBvZiBsZXNzcGhwIEFQSSAoaHR0cHM6Ly9naXRodWIuY29tL2xlYWZvL2xlc3NwaHApCiAqIHRvIGJlIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgZm9sbG93aW5nIHByb2R1Y3RzOgogKiAgLSBEcnVwYWwgNywgYnkgdGhlIGxlc3MgbW9kdWxlIHYzLjArIChodHRwczovL2RydXBhbC5vcmcvcHJvamVjdC9sZXNzKQogKiAgLSBTeW1mb255IDIKICovCgovLyBSZWdpc3RlciBhdXRvbG9hZGVyIGZvciBub24tY29tcG9zZXIgaW5zdGFsbGF0aW9ucwppZiAoICFjbGFzc19leGlzdHMoICdMZXNzX1BhcnNlcicgKSApIHsKCXJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvTGVzcy9BdXRvbG9hZGVyLnBocCc7CglMZXNzX0F1dG9sb2FkZXI6OnJlZ2lzdGVyKCk7Cn0KCmNsYXNzIGxlc3NjIHsKCgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyBzdGF0aWMgJFZFUlNJT04gPSBMZXNzX1ZlcnNpb246Omxlc3NfdmVyc2lvbjsKCgkvKiogQHZhciBzdHJpbmd8c3RyaW5nW10gKi8KCXB1YmxpYyAkaW1wb3J0RGlyID0gJyc7CgkvKiogQHZhciBhcnJheTxzdHJpbmcsaW50PiAqLwoJcHJvdGVjdGVkICRhbGxQYXJzZWRGaWxlcyA9IFtdOwoJLyoqIEB2YXIgYXJyYXk8c3RyaW5nLGNhbGxhYmxlPiAqLwoJcHJvdGVjdGVkICRsaWJGdW5jdGlvbnMgPSBbXTsKCS8qKiBAdmFyIGFycmF5ICovCglwcm90ZWN0ZWQgJHJlZ2lzdGVyZWRWYXJzID0gW107CgkvKiogQHZhciBzdHJpbmcgKi8KCXByaXZhdGUgJGZvcm1hdHRlck5hbWU7CgkvKiogQHZhciBhcnJheTxzdHJpbmcsbWl4ZWQ+ICovCglwcml2YXRlICRvcHRpb25zID0gW107CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkbGVzc2MgPSBudWxsLCAkc291cmNlTmFtZSA9IG51bGwgKSB7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldEltcG9ydERpciggJGRpcnMgKSB7CgkJJHRoaXMtPmltcG9ydERpciA9IChhcnJheSkkZGlyczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWRkSW1wb3J0RGlyKCAkZGlyICkgewoJCSR0aGlzLT5pbXBvcnREaXIgPSAoYXJyYXkpJHRoaXMtPmltcG9ydERpcjsKCQkkdGhpcy0+aW1wb3J0RGlyW10gPSAkZGlyOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRGb3JtYXR0ZXIoICRuYW1lICkgewoJCSR0aGlzLT5mb3JtYXR0ZXJOYW1lID0gJG5hbWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldFByZXNlcnZlQ29tbWVudHMoICRwcmVzZXJ2ZSApIHsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJGdW5jdGlvbiggJG5hbWUsICRmdW5jICkgewoJCSR0aGlzLT5saWJGdW5jdGlvbnNbJG5hbWVdID0gJGZ1bmM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHVucmVnaXN0ZXJGdW5jdGlvbiggJG5hbWUgKSB7CgkJdW5zZXQoICR0aGlzLT5saWJGdW5jdGlvbnNbJG5hbWVdICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldFZhcmlhYmxlcyggJHZhcmlhYmxlcyApIHsKCQlmb3JlYWNoICggJHZhcmlhYmxlcyBhcyAkbmFtZSA9PiAkdmFsdWUgKSB7CgkJCSR0aGlzLT5zZXRWYXJpYWJsZSggJG5hbWUsICR2YWx1ZSApOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0VmFyaWFibGUoICRuYW1lLCAkdmFsdWUgKSB7CgkJJHRoaXMtPnJlZ2lzdGVyZWRWYXJzWyRuYW1lXSA9ICR2YWx1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdW5zZXRWYXJpYWJsZSggJG5hbWUgKSB7CgkJdW5zZXQoICR0aGlzLT5yZWdpc3RlcmVkVmFyc1skbmFtZV0gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9ucyggJG9wdGlvbnMgKSB7CgkJZm9yZWFjaCAoICRvcHRpb25zIGFzICRuYW1lID0+ICR2YWx1ZSApIHsKCQkJJHRoaXMtPnNldE9wdGlvbiggJG5hbWUsICR2YWx1ZSApOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9uKCAkbmFtZSwgJHZhbHVlICkgewoJCSR0aGlzLT5vcHRpb25zWyRuYW1lXSA9ICR2YWx1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcGFyc2UoICRidWZmZXIsICRwcmVzZXRzID0gW10gKSB7CgkJJHRoaXMtPnNldFZhcmlhYmxlcyggJHByZXNldHMgKTsKCgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlciggJHRoaXMtPmdldE9wdGlvbnMoKSApOwoJCSRwYXJzZXItPnNldEltcG9ydERpcnMoICR0aGlzLT5nZXRJbXBvcnREaXJzKCkgKTsKCQlmb3JlYWNoICggJHRoaXMtPmxpYkZ1bmN0aW9ucyBhcyAkbmFtZSA9PiAkZnVuYyApIHsKCQkJJHBhcnNlci0+cmVnaXN0ZXJGdW5jdGlvbiggJG5hbWUsICRmdW5jICk7CgkJfQoJCSRwYXJzZXItPnBhcnNlKCAkYnVmZmVyICk7CgkJaWYgKCBjb3VudCggJHRoaXMtPnJlZ2lzdGVyZWRWYXJzICkgKSB7CgkJCSRwYXJzZXItPk1vZGlmeVZhcnMoICR0aGlzLT5yZWdpc3RlcmVkVmFycyApOwoJCX0KCgkJcmV0dXJuICRwYXJzZXItPmdldENzcygpOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRPcHRpb25zKCkgewoJCSRvcHRpb25zID0gWyAncmVsYXRpdmVVcmxzJyA9PiBmYWxzZSBdOwoJCXN3aXRjaCAoICR0aGlzLT5mb3JtYXR0ZXJOYW1lICkgewoJCQljYXNlICdjb21wcmVzc2VkJzoKCQkJCSRvcHRpb25zWydjb21wcmVzcyddID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCX0KCQlpZiAoIGlzX2FycmF5KCAkdGhpcy0+b3B0aW9ucyApICkgewoJCQkkb3B0aW9ucyA9IGFycmF5X21lcmdlKCAkb3B0aW9ucywgJHRoaXMtPm9wdGlvbnMgKTsKCQl9CgkJcmV0dXJuICRvcHRpb25zOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRJbXBvcnREaXJzKCkgewoJCSRkaXJzXyA9IChhcnJheSkkdGhpcy0+aW1wb3J0RGlyOwoJCSRkaXJzID0gW107CgkJZm9yZWFjaCAoICRkaXJzXyBhcyAkZGlyICkgewoJCQkkZGlyc1skZGlyXSA9ICcnOwoJCX0KCQlyZXR1cm4gJGRpcnM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRzdHJpbmcsICRuYW1lID0gbnVsbCApIHsKCQkkb2xkSW1wb3J0ID0gJHRoaXMtPmltcG9ydERpcjsKCQkkdGhpcy0+aW1wb3J0RGlyID0gKGFycmF5KSR0aGlzLT5pbXBvcnREaXI7CgoJCSR0aGlzLT5hbGxQYXJzZWRGaWxlcyA9IFtdOwoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCAkdGhpcy0+Z2V0T3B0aW9ucygpICk7CgkJJHBhcnNlci0+U2V0SW1wb3J0RGlycyggJHRoaXMtPmdldEltcG9ydERpcnMoKSApOwoJCWlmICggY291bnQoICR0aGlzLT5yZWdpc3RlcmVkVmFycyApICkgewoJCQkkcGFyc2VyLT5Nb2RpZnlWYXJzKCAkdGhpcy0+cmVnaXN0ZXJlZFZhcnMgKTsKCQl9CgkJZm9yZWFjaCAoICR0aGlzLT5saWJGdW5jdGlvbnMgYXMgJG5hbWUgPT4gJGZ1bmMgKSB7CgkJCSRwYXJzZXItPnJlZ2lzdGVyRnVuY3Rpb24oICRuYW1lLCAkZnVuYyApOwoJCX0KCQkkcGFyc2VyLT5wYXJzZSggJHN0cmluZyApOwoJCSRvdXQgPSAkcGFyc2VyLT5nZXRDc3MoKTsKCgkJZm9yZWFjaCAoICRwYXJzZXItPmdldFBhcnNlZEZpbGVzKCkgYXMgJGZpbGUgKSB7CgkJCSR0aGlzLT5hZGRQYXJzZWRGaWxlKCAkZmlsZSApOwoJCX0KCgkJJHRoaXMtPmltcG9ydERpciA9ICRvbGRJbXBvcnQ7CgoJCXJldHVybiAkb3V0OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlRmlsZSggJGZuYW1lLCAkb3V0Rm5hbWUgPSBudWxsICkgewoJCWlmICggIWlzX3JlYWRhYmxlKCAkZm5hbWUgKSApIHsKCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbiggJ2xvYWQgZXJyb3I6IGZhaWxlZCB0byBmaW5kICcgLiAkZm5hbWUgKTsKCQl9CgoJCSRwaSA9IHBhdGhpbmZvKCAkZm5hbWUgKTsKCgkJJG9sZEltcG9ydCA9ICR0aGlzLT5pbXBvcnREaXI7CgoJCSR0aGlzLT5pbXBvcnREaXIgPSAoYXJyYXkpJHRoaXMtPmltcG9ydERpcjsKCQkkdGhpcy0+aW1wb3J0RGlyW10gPSBMZXNzX1BhcnNlcjo6QWJzUGF0aCggJHBpWydkaXJuYW1lJ10gKSAuICcvJzsKCgkJJHRoaXMtPmFsbFBhcnNlZEZpbGVzID0gW107CgkJJHRoaXMtPmFkZFBhcnNlZEZpbGUoICRmbmFtZSApOwoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCAkdGhpcy0+Z2V0T3B0aW9ucygpICk7CgkJJHBhcnNlci0+U2V0SW1wb3J0RGlycyggJHRoaXMtPmdldEltcG9ydERpcnMoKSApOwoJCWlmICggY291bnQoICR0aGlzLT5yZWdpc3RlcmVkVmFycyApICkgewoJCQkkcGFyc2VyLT5Nb2RpZnlWYXJzKCAkdGhpcy0+cmVnaXN0ZXJlZFZhcnMgKTsKCQl9CgkJZm9yZWFjaCAoICR0aGlzLT5saWJGdW5jdGlvbnMgYXMgJG5hbWUgPT4gJGZ1bmMgKSB7CgkJCSRwYXJzZXItPnJlZ2lzdGVyRnVuY3Rpb24oICRuYW1lLCAkZnVuYyApOwoJCX0KCQkkcGFyc2VyLT5wYXJzZUZpbGUoICRmbmFtZSApOwoJCSRvdXQgPSAkcGFyc2VyLT5nZXRDc3MoKTsKCgkJZm9yZWFjaCAoICRwYXJzZXItPmdldFBhcnNlZEZpbGVzKCkgYXMgJGZpbGUgKSB7CgkJCSR0aGlzLT5hZGRQYXJzZWRGaWxlKCAkZmlsZSApOwoJCX0KCgkJJHRoaXMtPmltcG9ydERpciA9ICRvbGRJbXBvcnQ7CgoJCWlmICggJG91dEZuYW1lICE9PSBudWxsICkgewoJCQlyZXR1cm4gZmlsZV9wdXRfY29udGVudHMoICRvdXRGbmFtZSwgJG91dCApOwoJCX0KCgkJcmV0dXJuICRvdXQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNoZWNrZWRDb21waWxlKCAkaW4sICRvdXQgKSB7CgkJaWYgKCAhaXNfZmlsZSggJG91dCApIHx8IGZpbGVtdGltZSggJGluICkgPiBmaWxlbXRpbWUoICRvdXQgKSApIHsKCQkJJHRoaXMtPmNvbXBpbGVGaWxlKCAkaW4sICRvdXQgKTsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEV4ZWN1dGUgbGVzc3BocCBvbiBhIC5sZXNzIGZpbGUgb3IgYSBsZXNzcGhwIGNhY2hlIHN0cnVjdHVyZQoJICoKCSAqIFRoZSBsZXNzcGhwIGNhY2hlIHN0cnVjdHVyZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljCgkgKiBsZXNzIGZpbGUgaGF2aW5nIGJlZW4gcGFyc2VkLiBJdCBjYW4gYmUgdXNlZCBhcyBhIGhpbnQgZm9yIGZ1dHVyZQoJICogY2FsbHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgcmVidWlsZCBpcyByZXF1aXJlZC4KCSAqCgkgKiBUaGUgY2FjaGUgc3RydWN0dXJlIGNvbnRhaW5zIHR3byBpbXBvcnRhbnQga2V5cyB0aGF0IG1heSBiZSB1c2VkCgkgKiBleHRlcm5hbGx5OgoJICoKCSAqIGNvbXBpbGVkOiBUaGUgZmluYWwgY29tcGlsZWQgQ1NTCgkgKiB1cGRhdGVkOiBUaGUgdGltZSAoaW4gc2Vjb25kcykgdGhlIENTUyB3YXMgbGFzdCBjb21waWxlZAoJICoKCSAqIFRoZSBjYWNoZSBzdHJ1Y3R1cmUgaXMgYSBwbGFpbi1vbCcgUEhQIGFzc29jaWF0aXZlIGFycmF5IGFuZCBjYW4KCSAqIGJlIHNlcmlhbGl6ZWQgYW5kIHVuc2VyaWFsaXplZCB3aXRob3V0IGEgaGl0Y2guCgkgKgoJICogQHBhcmFtIG1peGVkICRpbiBJbnB1dAoJICogQHBhcmFtIGJvb2wgJGZvcmNlIEZvcmNlIHJlYnVpbGQ/CgkgKiBAcmV0dXJuIGFycmF5IGxlc3NwaHAgY2FjaGUgc3RydWN0dXJlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjYWNoZWRDb21waWxlKCAkaW4sICRmb3JjZSA9IGZhbHNlICkgewoJCS8vIGFzc3VtZSBubyByb290CgkJJHJvb3QgPSBudWxsOwoKCQlpZiAoIGlzX3N0cmluZyggJGluICkgKSB7CgkJCSRyb290ID0gJGluOwoJCX0gZWxzZWlmICggaXNfYXJyYXkoICRpbiApICYmIGlzc2V0KCAkaW5bJ3Jvb3QnXSApICkgewoJCQlpZiAoICRmb3JjZSB8fCAhaXNzZXQoICRpblsnZmlsZXMnXSApICkgewoJCQkJLy8gSWYgd2UgYXJlIGZvcmNpbmcgYSByZWNvbXBpbGUgb3IgaWYgZm9yIHNvbWUgcmVhc29uIHRoZQoJCQkJLy8gc3RydWN0dXJlIGRvZXMgbm90IGNvbnRhaW4gYW55IGZpbGUgaW5mb3JtYXRpb24gd2Ugc2hvdWxkCgkJCQkvLyBzcGVjaWZ5IHRoZSByb290IHRvIHRyaWdnZXIgYSByZWJ1aWxkLgoJCQkJJHJvb3QgPSAkaW5bJ3Jvb3QnXTsKCQkJfSBlbHNlaWYgKCBpc3NldCggJGluWydmaWxlcyddICkgJiYgaXNfYXJyYXkoICRpblsnZmlsZXMnXSApICkgewoJCQkJZm9yZWFjaCAoICRpblsnZmlsZXMnXSBhcyAkZm5hbWUgPT4gJGZ0aW1lICkgewoJCQkJCWlmICggIWZpbGVfZXhpc3RzKCAkZm5hbWUgKSB8fCBmaWxlbXRpbWUoICRmbmFtZSApID4gJGZ0aW1lICkgewoJCQkJCQkvLyBPbmUgb2YgdGhlIGZpbGVzIHdlIGtuZXcgYWJvdXQgcHJldmlvdXNseSBoYXMgY2hhbmdlZAoJCQkJCQkvLyBzbyB3ZSBzaG91bGQgbG9vayBhdCBvdXIgaW5jb21pbmcgcm9vdCBhZ2Fpbi4KCQkJCQkJJHJvb3QgPSAkaW5bJ3Jvb3QnXTsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJLy8gVE9ETzogVGhyb3cgYW4gZXhjZXB0aW9uPyBXZSBnb3QgbmVpdGhlciBhIHN0cmluZyBub3Igc29tZXRoaW5nCgkJCS8vIHRoYXQgbG9va3MgbGlrZSBhIGNvbXBhdGlibGUgbGVzc3BocCBjYWNoZSBzdHJ1Y3R1cmUuCgkJCXJldHVybiBudWxsOwoJCX0KCgkJaWYgKCAkcm9vdCAhPT0gbnVsbCApIHsKCQkJLy8gSWYgd2UgaGF2ZSBhIHJvb3QgdmFsdWUgd2hpY2ggbWVhbnMgd2Ugc2hvdWxkIHJlYnVpbGQuCgkJCSRvdXQgPSBbXTsKCQkJJG91dFsncm9vdCddID0gJHJvb3Q7CgkJCSRvdXRbJ2NvbXBpbGVkJ10gPSAkdGhpcy0+Y29tcGlsZUZpbGUoICRyb290ICk7CgkJCSRvdXRbJ2ZpbGVzJ10gPSAkdGhpcy0+YWxsUGFyc2VkRmlsZXM7CgkJCSRvdXRbJ3VwZGF0ZWQnXSA9IHRpbWUoKTsKCQkJcmV0dXJuICRvdXQ7CgkJfSBlbHNlIHsKCQkJLy8gTm8gY2hhbmdlcywgcGFzcyBiYWNrIHRoZSBzdHJ1Y3R1cmUKCQkJLy8gd2Ugd2VyZSBnaXZlbiBpbml0aWFsbHkuCgkJCXJldHVybiAkaW47CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjY29tcGlsZSggJGluLCAkb3V0LCAkbGVzcyA9IG51bGwgKSB7CgkJaWYgKCAkbGVzcyA9PT0gbnVsbCApIHsKCQkJJGxlc3MgPSBuZXcgc2VsZjsKCQl9CgkJcmV0dXJuICRsZXNzLT5jaGVja2VkQ29tcGlsZSggJGluLCAkb3V0ICk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjZXhlY3V0ZSggJGluLCAkZm9yY2UgPSBmYWxzZSwgJGxlc3MgPSBudWxsICkgewoJCWlmICggJGxlc3MgPT09IG51bGwgKSB7CgkJCSRsZXNzID0gbmV3IHNlbGY7CgkJfQoJCXJldHVybiAkbGVzcy0+Y2FjaGVkQ29tcGlsZSggJGluLCAkZm9yY2UgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWxsUGFyc2VkRmlsZXMoKSB7CgkJcmV0dXJuICR0aGlzLT5hbGxQYXJzZWRGaWxlczsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gYWRkUGFyc2VkRmlsZSggJGZpbGUgKSB7CgkJJHRoaXMtPmFsbFBhcnNlZEZpbGVzW0xlc3NfUGFyc2VyOjpBYnNQYXRoKCAkZmlsZSApXSA9IGZpbGVtdGltZSggJGZpbGUgKTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Autoloader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBdXRvbG9hZGVyCiAqLwpjbGFzcyBMZXNzX0F1dG9sb2FkZXIgewoKCXByb3RlY3RlZCBzdGF0aWMgYm9vbCAkcmVnaXN0ZXJlZCA9IGZhbHNlOwoKCS8qKgoJICogUmVnaXN0ZXIgdGhlIGF1dG9sb2FkZXIgaW4gdGhlIFNQTCBhdXRvbG9hZGVyCgkgKgoJICogQHRocm93cyBFeGNlcHRpb24gSWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIHJlZ2lzdHJhdGlvbgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlZ2lzdGVyKCk6IHZvaWQgewoJCWlmICggc2VsZjo6JHJlZ2lzdGVyZWQgKSB7CgkJCXJldHVybjsKCQl9CgoJCWlmICggIXNwbF9hdXRvbG9hZF9yZWdpc3RlciggWyBfX0NMQVNTX18sICdsb2FkQ2xhc3MnIF0gKSApIHsKCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbiggJ1VuYWJsZSB0byByZWdpc3RlciBMZXNzX0F1dG9sb2FkZXI6OmxvYWRDbGFzcyBhcyBhbiBhdXRvbG9hZGluZyBtZXRob2QuJyApOwoJCX0KCgkJc2VsZjo6JHJlZ2lzdGVyZWQgPSB0cnVlOwoJfQoKCS8qKgoJICogVW5yZWdpc3RlciB0aGUgYXV0b2xvYWRlcgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVucmVnaXN0ZXIoKTogdm9pZCB7CgkJc3BsX2F1dG9sb2FkX3VucmVnaXN0ZXIoIFsgX19DTEFTU19fLCAnbG9hZENsYXNzJyBdICk7CgkJc2VsZjo6JHJlZ2lzdGVyZWQgPSBmYWxzZTsKCX0KCgkvKioKCSAqIExvYWQgdGhlIGNsYXNzCgkgKgoJICogQHBhcmFtIHN0cmluZyAkY2xhc3NOYW1lIFRoZSBjbGFzcyB0byBsb2FkCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZENsYXNzKCBzdHJpbmcgJGNsYXNzTmFtZSApOiB2b2lkIHsKCQkvLyBoYW5kbGUgb25seSBwYWNrYWdlIGNsYXNzZXMKCQlpZiAoICFzdHJfc3RhcnRzX3dpdGgoICRjbGFzc05hbWUsICdMZXNzXycgKSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJJGNsYXNzTmFtZSA9IHN1YnN0ciggJGNsYXNzTmFtZSwgNSApOwoJCSRmaWxlTmFtZSA9IF9fRElSX18gLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gc3RyX3JlcGxhY2UoICdfJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgJGNsYXNzTmFtZSApIC4gJy5waHAnOwoKCQlyZXF1aXJlICRmaWxlTmFtZTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Cache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVdGlsaXR5IGZvciBoYW5kbGluZyB0aGUgZ2VuZXJhdGlvbiBhbmQgY2FjaGluZyBvZiBjc3MgZmlsZXMKICovCmNsYXNzIExlc3NfQ2FjaGUgewoKCS8qKiBAdmFyIHN0cmluZ3xmYWxzZSBEaXJlY3RvcnkgbGVzcy5waHAgY2FuIHVzZSBmb3Igc3RvcmluZyBkYXRhICovCglwdWJsaWMgc3RhdGljICRjYWNoZV9kaXIgPSBmYWxzZTsKCgkvKiogQHZhciBzdHJpbmcgUHJlZml4IGZvciB0aGUgc3RvcmluZyBkYXRhICovCglwdWJsaWMgc3RhdGljICRwcmVmaXggPSAnbGVzc3BocF8nOwoKCS8qKiBAdmFyIHN0cmluZyBQcmVmaXggZm9yIHRoZSBzdG9yaW5nIHZhcnMgKi8KCXB1YmxpYyBzdGF0aWMgJHByZWZpeF92YXJzID0gJ2xlc3NwaHB2YXJzXyc7CgoJLyoqCgkgKiBAdmFyIGludCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFmdGVyIHdoaWNoIGRhdGEgY3JlYXRlZCBieSBsZXNzLnBocCB3aWxsIGJlIHNlZW4KCSAqICBhcyAnZ2FyYmFnZScgYW5kIHBvdGVudGlhbGx5IGNsZWFuZWQgdXAKCSAqLwoJcHVibGljIHN0YXRpYyAkZ2NfbGlmZXRpbWUgPSA2MDQ4MDA7CgoJLyoqIEB2YXIgYm9vbCAqLwoJcHJpdmF0ZSBzdGF0aWMgJGdjX2RvbmUgPSBmYWxzZTsKCgkvKioKCSAqIFNhdmUgYW5kIHJldXNlIHRoZSByZXN1bHRzIG9mIGNvbXBpbGVkIGxlc3MgZmlsZXMuCgkgKiBUaGUgZmlyc3QgY2FsbCB0byBHZXQoKSB3aWxsIGdlbmVyYXRlIGNzcyBhbmQgc2F2ZSBpdC4KCSAqIFN1YnNlcXVlbnQgY2FsbHMgdG8gR2V0KCkgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgY3NzIGZpbGVuYW1lCgkgKgoJICogQHBhcmFtIGFycmF5ICRsZXNzX2ZpbGVzIEFycmF5IG9mIC5sZXNzIGZpbGVzIHRvIGNvbXBpbGUKCSAqIEBwYXJhbSBhcnJheSAkcGFyc2VyX29wdGlvbnMgQXJyYXkgb2YgY29tcGlsZXIgb3B0aW9ucwoJICogQHBhcmFtIGFycmF5ICRtb2RpZnlfdmFycyBBcnJheSBvZiB2YXJpYWJsZXMKCSAqIEByZXR1cm4gc3RyaW5nfGZhbHNlIE5hbWUgb2YgdGhlIGNzcyBmaWxlCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gR2V0KCAkbGVzc19maWxlcywgJHBhcnNlcl9vcHRpb25zID0gW10sICRtb2RpZnlfdmFycyA9IFtdICkgewoJCS8vIGNoZWNrICRjYWNoZV9kaXIKCQlpZiAoIGlzc2V0KCAkcGFyc2VyX29wdGlvbnNbJ2NhY2hlX2RpciddICkgKSB7CgkJCXNlbGY6OiRjYWNoZV9kaXIgPSAkcGFyc2VyX29wdGlvbnNbJ2NhY2hlX2RpciddOwoJCX0KCgkJaWYgKCBlbXB0eSggc2VsZjo6JGNhY2hlX2RpciApICkgewoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCAnY2FjaGVfZGlyIG5vdCBzZXQnICk7CgkJfQoKCQlpZiAoIGlzc2V0KCAkcGFyc2VyX29wdGlvbnNbJ3ByZWZpeCddICkgKSB7CgkJCXNlbGY6OiRwcmVmaXggPSAkcGFyc2VyX29wdGlvbnNbJ3ByZWZpeCddOwoJCX0KCgkJaWYgKCBlbXB0eSggc2VsZjo6JHByZWZpeCApICkgewoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCAncHJlZml4IG5vdCBzZXQnICk7CgkJfQoKCQlpZiAoIGlzc2V0KCAkcGFyc2VyX29wdGlvbnNbJ3ByZWZpeF92YXJzJ10gKSApIHsKCQkJc2VsZjo6JHByZWZpeF92YXJzID0gJHBhcnNlcl9vcHRpb25zWydwcmVmaXhfdmFycyddOwoJCX0KCgkJaWYgKCBlbXB0eSggc2VsZjo6JHByZWZpeF92YXJzICkgKSB7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oICdwcmVmaXhfdmFycyBub3Qgc2V0JyApOwoJCX0KCgkJc2VsZjo6JGNhY2hlX2RpciA9IHNlbGY6OkNoZWNrQ2FjaGVEaXIoKTsKCQkkbGVzc19maWxlcyA9IChhcnJheSkkbGVzc19maWxlczsKCgkJLy8gY3JlYXRlIGEgZmlsZSBmb3IgdmFyaWFibGVzCgkJaWYgKCAhZW1wdHkoICRtb2RpZnlfdmFycyApICkgewoJCQkkbGVzc3ZhcnMgPSBMZXNzX1BhcnNlcjo6c2VyaWFsaXplVmFycyggJG1vZGlmeV92YXJzICk7CgkJCSR2YXJzX2ZpbGUgPSBzZWxmOjokY2FjaGVfZGlyIC4gc2VsZjo6JHByZWZpeF92YXJzIC4gc2hhMSggJGxlc3N2YXJzICkgLiAnLmxlc3MnOwoKCQkJaWYgKCAhZmlsZV9leGlzdHMoICR2YXJzX2ZpbGUgKSApIHsKCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCAkdmFyc19maWxlLCAkbGVzc3ZhcnMgKTsKCQkJfQoKCQkJJGxlc3NfZmlsZXMgKz0gWyAkdmFyc19maWxlID0+ICcvJyBdOwoJCX0KCgkJLy8gZ2VuZXJhdGUgbmFtZSBmb3IgY29tcGlsZWQgY3NzIGZpbGUKCQkkaGFzaCA9IG1kNSgganNvbl9lbmNvZGUoICRsZXNzX2ZpbGVzICkgKTsKCQkkbGlzdF9maWxlID0gc2VsZjo6JGNhY2hlX2RpciAuIHNlbGY6OiRwcmVmaXggLiAkaGFzaCAuICcubGlzdCc7CgoJCS8vIGNoZWNrIGNhY2hlZCBjb250ZW50CgkJaWYgKCAhaXNzZXQoICRwYXJzZXJfb3B0aW9uc1sndXNlX2NhY2hlJ10gKSB8fCAkcGFyc2VyX29wdGlvbnNbJ3VzZV9jYWNoZSddID09PSB0cnVlICkgewoJCQlpZiAoIGZpbGVfZXhpc3RzKCAkbGlzdF9maWxlICkgKSB7CgoJCQkJc2VsZjo6TGlzdEZpbGVzKCAkbGlzdF9maWxlLCAkbGlzdCwgJGNhY2hlZF9uYW1lICk7CgkJCQkkY29tcGlsZWRfbmFtZSA9IHNlbGY6OkNvbXBpbGVkTmFtZSggJGxpc3QsICRoYXNoICk7CgoJCQkJLy8gaWYgJGNhY2hlZF9uYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSAkY29tcGlsZWQgbmFtZSwgZG9uJ3QgcmVnZW5lcmF0ZQoJCQkJaWYgKCAhJGNhY2hlZF9uYW1lIHx8ICRjYWNoZWRfbmFtZSA9PT0gJGNvbXBpbGVkX25hbWUgKSB7CgoJCQkJCSRvdXRwdXRfZmlsZSA9IHNlbGY6Ok91dHB1dEZpbGUoICRjb21waWxlZF9uYW1lLCAkcGFyc2VyX29wdGlvbnMgKTsKCgkJCQkJaWYgKCAkb3V0cHV0X2ZpbGUgJiYgZmlsZV9leGlzdHMoICRvdXRwdXRfZmlsZSApICkgewoJCQkJCQlAdG91Y2goICRsaXN0X2ZpbGUgKTsKCQkJCQkJcmV0dXJuIGJhc2VuYW1lKCAkb3V0cHV0X2ZpbGUgKTsgLy8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBqdXN0IHJldHVybiB0aGUgbmFtZSBvZiB0aGUgZmlsZQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJJGNvbXBpbGVkID0gc2VsZjo6Q2FjaGUoICRsZXNzX2ZpbGVzLCAkcGFyc2VyX29wdGlvbnMgKTsKCQlpZiAoICEkY29tcGlsZWQgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRjb21waWxlZF9uYW1lID0gc2VsZjo6Q29tcGlsZWROYW1lKCAkbGVzc19maWxlcywgJGhhc2ggKTsKCQkkb3V0cHV0X2ZpbGUgPSBzZWxmOjpPdXRwdXRGaWxlKCAkY29tcGlsZWRfbmFtZSwgJHBhcnNlcl9vcHRpb25zICk7CgoJCS8vIHNhdmUgdGhlIGZpbGUgbGlzdAoJCSRsaXN0ID0gJGxlc3NfZmlsZXM7CgkJJGxpc3RbXSA9ICRjb21waWxlZF9uYW1lOwoJCSRjYWNoZSA9IGltcGxvZGUoICJcbiIsICRsaXN0ICk7CgkJZmlsZV9wdXRfY29udGVudHMoICRsaXN0X2ZpbGUsICRjYWNoZSApOwoKCQkvLyBzYXZlIHRoZSBjc3MKCQlmaWxlX3B1dF9jb250ZW50cyggJG91dHB1dF9maWxlLCAkY29tcGlsZWQgKTsKCgkJLy8gY2xlYW4gdXAKCQkvLyBHYXJiYWdlIGNvbGxlY3Rpb24gY2FuIGJlIHNsb3csIHNvIHJ1biBpdCBvbmx5IG9uIGNhY2hlIG1pc3NlcywKCQkvLyBhbmQgYXQgbW9zdCBvbmNlIHBlciBwcm9jZXNzLgoJCWlmICggIXNlbGY6OiRnY19kb25lICkgewoJCQlzZWxmOjokZ2NfZG9uZSA9IHRydWU7CgkJCXNlbGY6OkNsZWFuQ2FjaGUoKTsKCQl9CgoJCXJldHVybiBiYXNlbmFtZSggJG91dHB1dF9maWxlICk7Cgl9CgoJLyoqCgkgKiBGb3JjZSB0aGUgY29tcGlsZXIgdG8gcmVnZW5lcmF0ZSB0aGUgY2FjaGVkIGNzcyBmaWxlCgkgKgoJICogQHBhcmFtIGFycmF5ICRsZXNzX2ZpbGVzIEFycmF5IG9mIC5sZXNzIGZpbGVzIHRvIGNvbXBpbGUKCSAqIEBwYXJhbSBhcnJheSAkcGFyc2VyX29wdGlvbnMgQXJyYXkgb2YgY29tcGlsZXIgb3B0aW9ucwoJICogQHBhcmFtIGFycmF5ICRtb2RpZnlfdmFycyBBcnJheSBvZiB2YXJpYWJsZXMKCSAqIEByZXR1cm4gc3RyaW5nIE5hbWUgb2YgdGhlIGNzcyBmaWxlCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gUmVnZW4oICRsZXNzX2ZpbGVzLCAkcGFyc2VyX29wdGlvbnMgPSBbXSwgJG1vZGlmeV92YXJzID0gW10gKSB7CgkJJHBhcnNlcl9vcHRpb25zWyd1c2VfY2FjaGUnXSA9IGZhbHNlOwoJCXJldHVybiBzZWxmOjpHZXQoICRsZXNzX2ZpbGVzLCAkcGFyc2VyX29wdGlvbnMsICRtb2RpZnlfdmFycyApOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ2FjaGUoICYkbGVzc19maWxlcywgJHBhcnNlcl9vcHRpb25zID0gW10gKSB7CgkJJHBhcnNlcl9vcHRpb25zWydjYWNoZV9kaXInXSA9IHNlbGY6OiRjYWNoZV9kaXI7CgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlciggJHBhcnNlcl9vcHRpb25zICk7CgoJCS8vIGNvbWJpbmUgZmlsZXMKCQlmb3JlYWNoICggJGxlc3NfZmlsZXMgYXMgJGZpbGVfcGF0aCA9PiAkdXJpX29yX2xlc3MgKSB7CgoJCQkvLyB0cmVhdCBhcyBsZXNzIG1hcmt1cCBpZiB0aGVyZSBhcmUgbmV3bGluZSBjaGFyYWN0ZXJzCgkJCWlmICggc3RyX2NvbnRhaW5zKCAkdXJpX29yX2xlc3MsICJcbiIgKSApIHsKCQkJCSRwYXJzZXItPlBhcnNlKCAkdXJpX29yX2xlc3MgKTsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkkcGFyc2VyLT5QYXJzZUZpbGUoICRmaWxlX3BhdGgsICR1cmlfb3JfbGVzcyApOwoJCX0KCgkJJGNvbXBpbGVkID0gJHBhcnNlci0+Z2V0Q3NzKCk7CgoJCSRsZXNzX2ZpbGVzID0gJHBhcnNlci0+Z2V0UGFyc2VkRmlsZXMoKTsKCgkJcmV0dXJuICRjb21waWxlZDsKCX0KCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBPdXRwdXRGaWxlKCAkY29tcGlsZWRfbmFtZSwgJHBhcnNlcl9vcHRpb25zICkgewoJCS8vIGN1c3RvbSBvdXRwdXQgZmlsZQoJCWlmICggIWVtcHR5KCAkcGFyc2VyX29wdGlvbnNbJ291dHB1dCddICkgKSB7CgoJCQkvLyByZWxhdGl2ZSB0byBjYWNoZSBkaXJlY3Rvcnk/CgkJCWlmICggcHJlZ19tYXRjaCggJyNbXFxcXC9dIycsICRwYXJzZXJfb3B0aW9uc1snb3V0cHV0J10gKSApIHsKCQkJCXJldHVybiAkcGFyc2VyX29wdGlvbnNbJ291dHB1dCddOwoJCQl9CgoJCQlyZXR1cm4gc2VsZjo6JGNhY2hlX2RpciAuICRwYXJzZXJfb3B0aW9uc1snb3V0cHV0J107CgkJfQoKCQlyZXR1cm4gc2VsZjo6JGNhY2hlX2RpciAuICRjb21waWxlZF9uYW1lOwoJfQoKCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIENvbXBpbGVkTmFtZSggJGZpbGVzLCAkZXh0cmFoYXNoICkgewoJCS8vIHNhdmUgdGhlIGZpbGUgbGlzdAoJCSR0ZW1wID0gWyBMZXNzX1ZlcnNpb246OmNhY2hlX3ZlcnNpb24gXTsKCQlmb3JlYWNoICggJGZpbGVzIGFzICRmaWxlICkgewoJCQkkdGVtcFtdID0gZmlsZW10aW1lKCAkZmlsZSApIC4gIlx0IiAuIGZpbGVzaXplKCAkZmlsZSApIC4gIlx0IiAuICRmaWxlOwoJCX0KCgkJcmV0dXJuIHNlbGY6OiRwcmVmaXggLiBzaGExKCBqc29uX2VuY29kZSggJHRlbXAgKSAuICRleHRyYWhhc2ggKSAuICcuY3NzJzsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFNldENhY2hlRGlyKCAkZGlyICkgewoJCXNlbGY6OiRjYWNoZV9kaXIgPSBzZWxmOjpDaGVja0NhY2hlRGlyKCAkZGlyICk7Cgl9CgoJLyoqCgkgKiBAZGVwcmVjYXRlZCBzaW5jZSA1LjMuMCBJbnRlcm5hbCBmb3IgdXNlIGJ5IExlc3NfQ2FjaGUgYW5kIExlc3NfUGFyc2VyIG9ubHkuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ2hlY2tDYWNoZURpciggJGRpciA9IG51bGwgKSB7CgkJJGRpciA/Pz0gc2VsZjo6JGNhY2hlX2RpcjsKCQkkZGlyID0gTGVzc19QYXJzZXI6OldpblBhdGgoICRkaXIgKTsKCQkkZGlyID0gcnRyaW0oICRkaXIsICcvJyApIC4gJy8nOwoKCQlpZiAoICFmaWxlX2V4aXN0cyggJGRpciApICkgewoJCQlpZiAoICFta2RpciggJGRpciApICkgewoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX1BhcnNlciggJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBjb3VsZG5cJ3QgYmUgY3JlYXRlZDogJyAuICRkaXIgKTsKCQkJfQoKCQl9IGVsc2VpZiAoICFpc19kaXIoICRkaXIgKSApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX1BhcnNlciggJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBkb2VzblwndCBleGlzdDogJyAuICRkaXIgKTsKCgkJfSBlbHNlaWYgKCAhaXNfd3JpdGFibGUoICRkaXIgKSApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX1BhcnNlciggJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBpc25cJ3Qgd3JpdGFibGU6ICcgLiAkZGlyICk7CgkJfQoKCQlyZXR1cm4gJGRpcjsKCX0KCgkvKioKCSAqIEBkZXByZWNhdGVkIHNpbmNlIDUuMy4wIENhbGxlZCBhdXRvbWF0aWNhbGx5LiBJbnRlcm5hbCBmb3IgdXNlIGJ5IExlc3NfQ2FjaGUgYW5kIExlc3NfUGFyc2VyIG9ubHkuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ2xlYW5DYWNoZSggJGRpciA9IG51bGwgKSB7CgkJJGRpciA/Pz0gc2VsZjo6JGNhY2hlX2RpcjsKCQlpZiAoICEkZGlyICkgewoJCQlyZXR1cm47CgkJfQoKCQkvLyBvbmx5IHJlbW92ZSBmaWxlcyB3aXRoIGV4dGVuc2lvbnMgY3JlYXRlZCBieSBsZXNzLnBocAoJCS8vIGNzcyBmaWxlcyByZW1vdmVkIGJhc2VkIG9uIHRoZSBsaXN0IGZpbGVzCgkJJHJlbW92ZV90eXBlcyA9IFsgJ2xlc3NjYWNoZScgPT4gMSwgJ2xpc3QnID0+IDEsICdsZXNzJyA9PiAxLCAnbWFwJyA9PiAxIF07CgoJCSRmaWxlcyA9IHNjYW5kaXIoICRkaXIgKTsKCQlpZiAoICEkZmlsZXMgKSB7CgkJCXJldHVybjsKCQl9CgoJCSRjaGVja190aW1lID0gdGltZSgpIC0gc2VsZjo6JGdjX2xpZmV0aW1lOwoJCWZvcmVhY2ggKCAkZmlsZXMgYXMgJGZpbGUgKSB7CgoJCQkvLyBkb24ndCBkZWxldGUgaWYgdGhlIGZpbGUgd2Fzbid0IGNyZWF0ZWQgd2l0aCBsZXNzLnBocAoJCQlpZiAoICFzdHJfc3RhcnRzX3dpdGgoICRmaWxlLCBzZWxmOjokcHJlZml4ICkgKSB7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJHBhcnRzID0gZXhwbG9kZSggJy4nLCAkZmlsZSApOwoJCQkkdHlwZSA9IGFycmF5X3BvcCggJHBhcnRzICk7CgoJCQlpZiAoICFpc3NldCggJHJlbW92ZV90eXBlc1skdHlwZV0gKSApIHsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkkZnVsbFBhdGggPSAkZGlyIC4gJGZpbGU7CgkJCSRtdGltZSA9IGZpbGVtdGltZSggJGZ1bGxQYXRoICk7CgoJCQkvLyBkb24ndCBkZWxldGUgaWYgaXQncyBhIHJlbGF0aXZlbHkgbmV3IGZpbGUKCQkJaWYgKCAkbXRpbWUgPiAkY2hlY2tfdGltZSApIHsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkvLyBkZWxldGUgdGhlIGxpc3QgZmlsZSBhbmQgYXNzb2NpYXRlZCBjc3MgZmlsZQoJCQlpZiAoICR0eXBlID09PSAnbGlzdCcgKSB7CgkJCQlzZWxmOjpMaXN0RmlsZXMoICRmdWxsUGF0aCwgJGxpc3QsICRjc3NfZmlsZV9uYW1lICk7CgkJCQlpZiAoICRjc3NfZmlsZV9uYW1lICkgewoJCQkJCSRjc3NfZmlsZSA9ICRkaXIgLiAkY3NzX2ZpbGVfbmFtZTsKCQkJCQlpZiAoIGZpbGVfZXhpc3RzKCAkY3NzX2ZpbGUgKSApIHsKCQkJCQkJdW5saW5rKCAkY3NzX2ZpbGUgKTsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCXVubGluayggJGZ1bGxQYXRoICk7CgkJfQoJfQoKCS8qKgoJICogR2V0IHRoZSBsaXN0IG9mIGxlc3MgZmlsZXMgYW5kIGdlbmVyYXRlZCBjc3MgZmlsZSBmcm9tIGEgbGlzdCBmaWxlCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gTGlzdEZpbGVzKCAkbGlzdF9maWxlLCAmJGxpc3QsICYkY3NzX2ZpbGVfbmFtZSApIHsKCQkkbGlzdCA9IGV4cGxvZGUoICJcbiIsIGZpbGVfZ2V0X2NvbnRlbnRzKCAkbGlzdF9maWxlICkgKTsKCgkJLy8gcG9wIHRoZSBjYWNoZWQgbmFtZSB0aGF0IHNob3VsZCBtYXRjaCAkY29tcGlsZWRfbmFtZQoJCSRjc3NfZmlsZV9uYW1lID0gYXJyYXlfcG9wKCAkbGlzdCApOwoKCQlpZiAoICFwcmVnX21hdGNoKCAnL14nIC4gc2VsZjo6JHByZWZpeCAuICdbYS1mMC05XStcLmNzcyQvJywgJGNzc19maWxlX25hbWUgKSApIHsKCQkJJGxpc3RbXSA9ICRjc3NfZmlsZV9uYW1lOwoJCQkkY3NzX2ZpbGVfbmFtZSA9IGZhbHNlOwoJCX0KCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Colors.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFV0aWxpdHkgZm9yIGNzcyBjb2xvcnMKICoKICogQHByaXZhdGUKICovCmNsYXNzIExlc3NfQ29sb3JzIHsKCglwcml2YXRlIGNvbnN0IENPTE9SUyA9IFsKCQknYWxpY2VibHVlJyA9PiAnI2YwZjhmZicsCgkJJ2FudGlxdWV3aGl0ZScgPT4gJyNmYWViZDcnLAoJCSdhcXVhJyA9PiAnIzAwZmZmZicsCgkJJ2FxdWFtYXJpbmUnID0+ICcjN2ZmZmQ0JywKCQknYXp1cmUnID0+ICcjZjBmZmZmJywKCQknYmVpZ2UnID0+ICcjZjVmNWRjJywKCQknYmlzcXVlJyA9PiAnI2ZmZTRjNCcsCgkJJ2JsYWNrJyA9PiAnIzAwMDAwMCcsCgkJJ2JsYW5jaGVkYWxtb25kJyA9PiAnI2ZmZWJjZCcsCgkJJ2JsdWUnID0+ICcjMDAwMGZmJywKCQknYmx1ZXZpb2xldCcgPT4gJyM4YTJiZTInLAoJCSdicm93bicgPT4gJyNhNTJhMmEnLAoJCSdidXJseXdvb2QnID0+ICcjZGViODg3JywKCQknY2FkZXRibHVlJyA9PiAnIzVmOWVhMCcsCgkJJ2NoYXJ0cmV1c2UnID0+ICcjN2ZmZjAwJywKCQknY2hvY29sYXRlJyA9PiAnI2QyNjkxZScsCgkJJ2NvcmFsJyA9PiAnI2ZmN2Y1MCcsCgkJJ2Nvcm5mbG93ZXJibHVlJyA9PiAnIzY0OTVlZCcsCgkJJ2Nvcm5zaWxrJyA9PiAnI2ZmZjhkYycsCgkJJ2NyaW1zb24nID0+ICcjZGMxNDNjJywKCQknY3lhbicgPT4gJyMwMGZmZmYnLAoJCSdkYXJrYmx1ZScgPT4gJyMwMDAwOGInLAoJCSdkYXJrY3lhbicgPT4gJyMwMDhiOGInLAoJCSdkYXJrZ29sZGVucm9kJyA9PiAnI2I4ODYwYicsCgkJJ2RhcmtncmF5JyA9PiAnI2E5YTlhOScsCgkJJ2RhcmtncmV5JyA9PiAnI2E5YTlhOScsCgkJJ2RhcmtncmVlbicgPT4gJyMwMDY0MDAnLAoJCSdkYXJra2hha2knID0+ICcjYmRiNzZiJywKCQknZGFya21hZ2VudGEnID0+ICcjOGIwMDhiJywKCQknZGFya29saXZlZ3JlZW4nID0+ICcjNTU2YjJmJywKCQknZGFya29yYW5nZScgPT4gJyNmZjhjMDAnLAoJCSdkYXJrb3JjaGlkJyA9PiAnIzk5MzJjYycsCgkJJ2RhcmtyZWQnID0+ICcjOGIwMDAwJywKCQknZGFya3NhbG1vbicgPT4gJyNlOTk2N2EnLAoJCSdkYXJrc2VhZ3JlZW4nID0+ICcjOGZiYzhmJywKCQknZGFya3NsYXRlYmx1ZScgPT4gJyM0ODNkOGInLAoJCSdkYXJrc2xhdGVncmF5JyA9PiAnIzJmNGY0ZicsCgkJJ2RhcmtzbGF0ZWdyZXknID0+ICcjMmY0ZjRmJywKCQknZGFya3R1cnF1b2lzZScgPT4gJyMwMGNlZDEnLAoJCSdkYXJrdmlvbGV0JyA9PiAnIzk0MDBkMycsCgkJJ2RlZXBwaW5rJyA9PiAnI2ZmMTQ5MycsCgkJJ2RlZXBza3libHVlJyA9PiAnIzAwYmZmZicsCgkJJ2RpbWdyYXknID0+ICcjNjk2OTY5JywKCQknZGltZ3JleScgPT4gJyM2OTY5NjknLAoJCSdkb2RnZXJibHVlJyA9PiAnIzFlOTBmZicsCgkJJ2ZpcmVicmljaycgPT4gJyNiMjIyMjInLAoJCSdmbG9yYWx3aGl0ZScgPT4gJyNmZmZhZjAnLAoJCSdmb3Jlc3RncmVlbicgPT4gJyMyMjhiMjInLAoJCSdmdWNoc2lhJyA9PiAnI2ZmMDBmZicsCgkJJ2dhaW5zYm9ybycgPT4gJyNkY2RjZGMnLAoJCSdnaG9zdHdoaXRlJyA9PiAnI2Y4ZjhmZicsCgkJJ2dvbGQnID0+ICcjZmZkNzAwJywKCQknZ29sZGVucm9kJyA9PiAnI2RhYTUyMCcsCgkJJ2dyYXknID0+ICcjODA4MDgwJywKCQknZ3JleScgPT4gJyM4MDgwODAnLAoJCSdncmVlbicgPT4gJyMwMDgwMDAnLAoJCSdncmVlbnllbGxvdycgPT4gJyNhZGZmMmYnLAoJCSdob25leWRldycgPT4gJyNmMGZmZjAnLAoJCSdob3RwaW5rJyA9PiAnI2ZmNjliNCcsCgkJJ2luZGlhbnJlZCcgPT4gJyNjZDVjNWMnLAoJCSdpbmRpZ28nID0+ICcjNGIwMDgyJywKCQknaXZvcnknID0+ICcjZmZmZmYwJywKCQkna2hha2knID0+ICcjZjBlNjhjJywKCQknbGF2ZW5kZXInID0+ICcjZTZlNmZhJywKCQknbGF2ZW5kZXJibHVzaCcgPT4gJyNmZmYwZjUnLAoJCSdsYXduZ3JlZW4nID0+ICcjN2NmYzAwJywKCQknbGVtb25jaGlmZm9uJyA9PiAnI2ZmZmFjZCcsCgkJJ2xpZ2h0Ymx1ZScgPT4gJyNhZGQ4ZTYnLAoJCSdsaWdodGNvcmFsJyA9PiAnI2YwODA4MCcsCgkJJ2xpZ2h0Y3lhbicgPT4gJyNlMGZmZmYnLAoJCSdsaWdodGdvbGRlbnJvZHllbGxvdycgPT4gJyNmYWZhZDInLAoJCSdsaWdodGdyYXknID0+ICcjZDNkM2QzJywKCQknbGlnaHRncmV5JyA9PiAnI2QzZDNkMycsCgkJJ2xpZ2h0Z3JlZW4nID0+ICcjOTBlZTkwJywKCQknbGlnaHRwaW5rJyA9PiAnI2ZmYjZjMScsCgkJJ2xpZ2h0c2FsbW9uJyA9PiAnI2ZmYTA3YScsCgkJJ2xpZ2h0c2VhZ3JlZW4nID0+ICcjMjBiMmFhJywKCQknbGlnaHRza3libHVlJyA9PiAnIzg3Y2VmYScsCgkJJ2xpZ2h0c2xhdGVncmF5JyA9PiAnIzc3ODg5OScsCgkJJ2xpZ2h0c2xhdGVncmV5JyA9PiAnIzc3ODg5OScsCgkJJ2xpZ2h0c3RlZWxibHVlJyA9PiAnI2IwYzRkZScsCgkJJ2xpZ2h0eWVsbG93JyA9PiAnI2ZmZmZlMCcsCgkJJ2xpbWUnID0+ICcjMDBmZjAwJywKCQknbGltZWdyZWVuJyA9PiAnIzMyY2QzMicsCgkJJ2xpbmVuJyA9PiAnI2ZhZjBlNicsCgkJJ21hZ2VudGEnID0+ICcjZmYwMGZmJywKCQknbWFyb29uJyA9PiAnIzgwMDAwMCcsCgkJJ21lZGl1bWFxdWFtYXJpbmUnID0+ICcjNjZjZGFhJywKCQknbWVkaXVtYmx1ZScgPT4gJyMwMDAwY2QnLAoJCSdtZWRpdW1vcmNoaWQnID0+ICcjYmE1NWQzJywKCQknbWVkaXVtcHVycGxlJyA9PiAnIzkzNzBkOCcsCgkJJ21lZGl1bXNlYWdyZWVuJyA9PiAnIzNjYjM3MScsCgkJJ21lZGl1bXNsYXRlYmx1ZScgPT4gJyM3YjY4ZWUnLAoJCSdtZWRpdW1zcHJpbmdncmVlbicgPT4gJyMwMGZhOWEnLAoJCSdtZWRpdW10dXJxdW9pc2UnID0+ICcjNDhkMWNjJywKCQknbWVkaXVtdmlvbGV0cmVkJyA9PiAnI2M3MTU4NScsCgkJJ21pZG5pZ2h0Ymx1ZScgPT4gJyMxOTE5NzAnLAoJCSdtaW50Y3JlYW0nID0+ICcjZjVmZmZhJywKCQknbWlzdHlyb3NlJyA9PiAnI2ZmZTRlMScsCgkJJ21vY2Nhc2luJyA9PiAnI2ZmZTRiNScsCgkJJ25hdmFqb3doaXRlJyA9PiAnI2ZmZGVhZCcsCgkJJ25hdnknID0+ICcjMDAwMDgwJywKCQknb2xkbGFjZScgPT4gJyNmZGY1ZTYnLAoJCSdvbGl2ZScgPT4gJyM4MDgwMDAnLAoJCSdvbGl2ZWRyYWInID0+ICcjNmI4ZTIzJywKCQknb3JhbmdlJyA9PiAnI2ZmYTUwMCcsCgkJJ29yYW5nZXJlZCcgPT4gJyNmZjQ1MDAnLAoJCSdvcmNoaWQnID0+ICcjZGE3MGQ2JywKCQkncGFsZWdvbGRlbnJvZCcgPT4gJyNlZWU4YWEnLAoJCSdwYWxlZ3JlZW4nID0+ICcjOThmYjk4JywKCQkncGFsZXR1cnF1b2lzZScgPT4gJyNhZmVlZWUnLAoJCSdwYWxldmlvbGV0cmVkJyA9PiAnI2Q4NzA5MycsCgkJJ3BhcGF5YXdoaXAnID0+ICcjZmZlZmQ1JywKCQkncGVhY2hwdWZmJyA9PiAnI2ZmZGFiOScsCgkJJ3BlcnUnID0+ICcjY2Q4NTNmJywKCQkncGluaycgPT4gJyNmZmMwY2InLAoJCSdwbHVtJyA9PiAnI2RkYTBkZCcsCgkJJ3Bvd2RlcmJsdWUnID0+ICcjYjBlMGU2JywKCQkncHVycGxlJyA9PiAnIzgwMDA4MCcsCgkJJ3JlZCcgPT4gJyNmZjAwMDAnLAoJCSdyb3N5YnJvd24nID0+ICcjYmM4ZjhmJywKCQkncm95YWxibHVlJyA9PiAnIzQxNjllMScsCgkJJ3NhZGRsZWJyb3duJyA9PiAnIzhiNDUxMycsCgkJJ3NhbG1vbicgPT4gJyNmYTgwNzInLAoJCSdzYW5keWJyb3duJyA9PiAnI2Y0YTQ2MCcsCgkJJ3NlYWdyZWVuJyA9PiAnIzJlOGI1NycsCgkJJ3NlYXNoZWxsJyA9PiAnI2ZmZjVlZScsCgkJJ3NpZW5uYScgPT4gJyNhMDUyMmQnLAoJCSdzaWx2ZXInID0+ICcjYzBjMGMwJywKCQknc2t5Ymx1ZScgPT4gJyM4N2NlZWInLAoJCSdzbGF0ZWJsdWUnID0+ICcjNmE1YWNkJywKCQknc2xhdGVncmF5JyA9PiAnIzcwODA5MCcsCgkJJ3NsYXRlZ3JleScgPT4gJyM3MDgwOTAnLAoJCSdzbm93JyA9PiAnI2ZmZmFmYScsCgkJJ3NwcmluZ2dyZWVuJyA9PiAnIzAwZmY3ZicsCgkJJ3N0ZWVsYmx1ZScgPT4gJyM0NjgyYjQnLAoJCSd0YW4nID0+ICcjZDJiNDhjJywKCQkndGVhbCcgPT4gJyMwMDgwODAnLAoJCSd0aGlzdGxlJyA9PiAnI2Q4YmZkOCcsCgkJJ3RvbWF0bycgPT4gJyNmZjYzNDcnLAoJCSd0dXJxdW9pc2UnID0+ICcjNDBlMGQwJywKCQkndmlvbGV0JyA9PiAnI2VlODJlZScsCgkJJ3doZWF0JyA9PiAnI2Y1ZGViMycsCgkJJ3doaXRlJyA9PiAnI2ZmZmZmZicsCgkJJ3doaXRlc21va2UnID0+ICcjZjVmNWY1JywKCQkneWVsbG93JyA9PiAnI2ZmZmYwMCcsCgkJJ3llbGxvd2dyZWVuJyA9PiAnIzlhY2QzMicsCgldOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkY29sb3IKCSAqIEByZXR1cm4gYm9vbAoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KCBzdHJpbmcgJGNvbG9yICk6IGJvb2wgewoJCXJldHVybiBpc3NldCggc2VsZjo6Q09MT1JTWyRjb2xvcl0gKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJGNvbG9yIFNob3VsZCBiZSBhbiBleGlzdGluZyBjb2xvciBuYW1lLAoJICogICBjaGVja2VkIHZpYSBoYXNPd25Qcm9wZXJ0eSgpCgkgKiBAcmV0dXJuIHN0cmluZyB0aGUgY29ycmVzcG9uZGluZyBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbG9yKCBzdHJpbmcgJGNvbG9yICk6IHN0cmluZyB7CgkJcmV0dXJuIHNlbGY6OkNPTE9SU1skY29sb3JdOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Configurable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwphYnN0cmFjdCBjbGFzcyBMZXNzX0NvbmZpZ3VyYWJsZSB7CgoJLyoqCgkgKiBBcnJheSBvZiBvcHRpb25zCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcm90ZWN0ZWQgJG9wdGlvbnMgPSBbXTsKCgkvKioKCSAqIEFycmF5IG9mIGRlZmF1bHQgb3B0aW9ucwoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHJvdGVjdGVkICRkZWZhdWx0T3B0aW9ucyA9IFtdOwoKCS8qKgoJICogQHBhcmFtIGFycmF5ICRvcHRpb25zCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRPcHRpb25zKCAkb3B0aW9ucyApIHsKCQkkb3B0aW9ucyA9IGFycmF5X2ludGVyc2VjdF9rZXkoICRvcHRpb25zLCAkdGhpcy0+ZGVmYXVsdE9wdGlvbnMgKTsKCQkkdGhpcy0+b3B0aW9ucyA9IGFycmF5X21lcmdlKCAkdGhpcy0+ZGVmYXVsdE9wdGlvbnMsICR0aGlzLT5vcHRpb25zLCAkb3B0aW9ucyApOwoJfQoKCS8qKgoJICogR2V0IGFuIG9wdGlvbiB2YWx1ZSBieSBuYW1lCgkgKgoJICogSWYgdGhlIG9wdGlvbiBpcyBlbXB0eSBvciBub3Qgc2V0IGEgTlVMTCB2YWx1ZSB3aWxsIGJlIHJldHVybmVkLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKCSAqIEBwYXJhbSBtaXhlZCAkZGVmYXVsdCBEZWZhdWx0IHZhbHVlIGlmIGNvbmZpdXJhdGlvbiBvZiAkbmFtZSBpcyBub3QgcHJlc2VudAoJICogQHJldHVybiBtaXhlZAoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0T3B0aW9uKCAkbmFtZSwgJGRlZmF1bHQgPSBudWxsICkgewoJCWlmICggaXNzZXQoICR0aGlzLT5vcHRpb25zWyRuYW1lXSApICkgewoJCQlyZXR1cm4gJHRoaXMtPm9wdGlvbnNbJG5hbWVdOwoJCX0KCQlyZXR1cm4gJGRlZmF1bHQ7Cgl9CgoJLyoqCgkgKiBTZXQgYW4gb3B0aW9uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbmFtZQoJICogQHBhcmFtIG1peGVkICR2YWx1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9uKCAkbmFtZSwgJHZhbHVlICkgewoJCSR0aGlzLT5vcHRpb25zWyRuYW1lXSA9ICR2YWx1ZTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Environment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX0Vudmlyb25tZW50IHsKCgkvKioKCSAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGZpbGUgLSBmb3IgZXJyb3IgcmVwb3J0aW5nIGFuZCBpbXBvcnRpbmcgYW5kIG1ha2luZyB1cmxzIHJlbGF0aXZlIGV0Yy4KCSAqCgkgKiAtIHJvb3RwYXRoOiByb290cGF0aCB0byBhcHBlbmQgdG8gVVJMcwoJICoKCSAqIEB2YXIgYXJyYXl8bnVsbAoJICovCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCgkvKiogQHZhciBib29sIFdoZXRoZXIgd2UgYXJlIGN1cnJlbnRseSBpbXBvcnRpbmcgbXVsdGlwbGUgY29waWVzICovCglwdWJsaWMgJGltcG9ydE11bHRpcGxlID0gZmFsc2U7CgoJLyoqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXB1YmxpYyAkZnJhbWVzID0gW107CgkvKiogQHZhciBhcnJheSAqLwoJcHVibGljICRpbXBvcnRhbnRTY29wZSA9IFtdOwoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljICRpbkNhbGMgPSBmYWxzZTsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkbWF0aE9uID0gdHJ1ZTsKCgkvKiogQHZhciB0cnVlW10gKi8KCXByaXZhdGUgJGNhbGNTdGFjayA9IFtdOwoKCS8qKiBAdmFyIExlc3NfVHJlZV9NZWRpYVtdICovCglwdWJsaWMgJG1lZGlhQmxvY2tzID0gW107CgkvKiogQHZhciBMZXNzX1RyZWVfTWVkaWFbXSAqLwoJcHVibGljICRtZWRpYVBhdGggPSBbXTsKCgkvKiogQHZhciBzdHJpbmdbXSAqLwoJcHVibGljICRpbXBvcnRzID0gW107CgoJLyoqCgkgKiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGBpbXBvcnRWaXNpdG9yLm9uY2VGaWxlRGV0ZWN0aW9uTWFwYAoJICogYXMgdXNlZCBieSB0aGUgZHluYW1pYyBgaW1wb3J0Tm9kZS5za2lwYCBmdW5jdGlvbi4KCSAqCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjSW1wb3J0VmlzaXRvci5wcm90b3R5cGUub25JbXBvcnRlZAoJICogQHZhciBhcnJheTxzdHJpbmcsdHJ1ZT4KCSAqLwoJcHVibGljICRpbXBvcnRWaXNpdG9yT25jZU1hcCA9IFtdOwoKCS8qKiBAdmFyIGludCAqLwoJcHVibGljIHN0YXRpYyAkdGFiTGV2ZWwgPSAwOwoKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyBzdGF0aWMgJGxhc3RSdWxlID0gZmFsc2U7CgoJLyoqIEB2YXIgYXJyYXk8c3RyaW5nLHRydWU+ICovCglwdWJsaWMgc3RhdGljICRfbm9TcGFjZUNvbWJpbmF0b3JzOwoKCS8qKiBAdmFyIGludCAqLwoJcHVibGljIHN0YXRpYyAkbWl4aW5fc3RhY2sgPSAwOwoKCS8qKiBAdmFyIGludCAqLwoJcHVibGljICRtYXRoID0gc2VsZjo6TUFUSF9QQVJFTlNfRElWSVNJT047CgoJLyoqIEB2YXIgdHJ1ZVtdICovCglwdWJsaWMgJHBhcmVuc1N0YWNrID0gW107CgoJcHVibGljIGNvbnN0IE1BVEhfQUxXQVlTID0gMDsKCXB1YmxpYyBjb25zdCBNQVRIX1BBUkVOU19ESVZJU0lPTiA9IDE7CglwdWJsaWMgY29uc3QgTUFUSF9QQVJFTlMgPSAyOwoKCS8qKgoJICogQHZhciBhcnJheQoJICovCglwdWJsaWMgJGZ1bmN0aW9ucyA9IFtdOwoKCXB1YmxpYyBmdW5jdGlvbiBJbml0KCkgewoJCXNlbGY6OiR0YWJMZXZlbCA9IDA7CgkJc2VsZjo6JGxhc3RSdWxlID0gZmFsc2U7CgkJc2VsZjo6JG1peGluX3N0YWNrID0gMDsKCgkJc2VsZjo6JF9ub1NwYWNlQ29tYmluYXRvcnMgPSBbCgkJCScnID0+IHRydWUsCgkJCScgJyA9PiB0cnVlLAoJCQknfCcgPT4gdHJ1ZQoJCV07Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlCgkgKiBAcmV0dXJuIHZvaWQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGFkZFBhcnNlZEZpbGUoICRmaWxlICkgewoJCSR0aGlzLT5pbXBvcnRzW10gPSAkZmlsZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY2xvbmUoKSB7CgkJJG5ld19lbnYgPSBjbG9uZSAkdGhpczsKCQkvLyBOT1RFOiBNYXRjaCBKYXZhU2NyaXB0IGJ5LXJlZiBiZWhhdmlvdXIgZm9yIGFycmF5cwoJCSRuZXdfZW52LT5pbXBvcnRzID0mICR0aGlzLT5pbXBvcnRzOwoJCSRuZXdfZW52LT5pbXBvcnRWaXNpdG9yT25jZU1hcCA9JiAkdGhpcy0+aW1wb3J0VmlzaXRvck9uY2VNYXA7CgkJcmV0dXJuICRuZXdfZW52OwoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkZmlsZQoJICogQHJldHVybiBib29sCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpc0ZpbGVQYXJzZWQoICRmaWxlICkgewoJCXJldHVybiBpbl9hcnJheSggJGZpbGUsICR0aGlzLT5pbXBvcnRzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvcHlFdmFsRW52KCAkZnJhbWVzID0gW10gKSB7CgkJJG5ld19lbnYgPSBuZXcgc2VsZigpOwoJCSRuZXdfZW52LT5mcmFtZXMgPSAkZnJhbWVzOwoJCSRuZXdfZW52LT5pbXBvcnRhbnRTY29wZSA9ICR0aGlzLT5pbXBvcnRhbnRTY29wZTsKCQkkbmV3X2Vudi0+bWF0aCA9ICR0aGlzLT5tYXRoOwoJCXJldHVybiAkbmV3X2VudjsKCX0KCgkvKioKCSAqIEByZXR1cm4gYm9vbAoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNFdmFsLnByb3RvdHlwZS5pc01hdGhPbgoJICovCglwdWJsaWMgZnVuY3Rpb24gaXNNYXRoT24oICRvcCA9ICIiICkgewoJCWlmICggISR0aGlzLT5tYXRoT24gKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJaWYgKCAkb3AgPT09ICcvJyAmJiAkdGhpcy0+bWF0aCAhPT0gJHRoaXM6Ok1BVEhfQUxXQVlTICYmICEkdGhpcy0+cGFyZW5zU3RhY2sgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCWlmICggJHRoaXMtPm1hdGggPiAkdGhpczo6TUFUSF9QQVJFTlNfRElWSVNJT04gKSB7CgkJCXJldHVybiAoYm9vbCkkdGhpcy0+cGFyZW5zU3RhY2s7CgkJfQoJCXJldHVybiB0cnVlOwoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNFdmFsLnByb3RvdHlwZS5pblBhcmVudGhlc2lzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpblBhcmVudGhlc2lzKCkgewoJCS8vIE9wdGltaXphdGlvbjogV2UgZG9uJ3QgbmVlZCB1bmRlZmluZWQvbnVsbCwgYWx3YXlzIGhhdmUgYW4gYXJyYXkKCQkkdGhpcy0+cGFyZW5zU3RhY2tbXSA9IHRydWU7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI0V2YWwucHJvdG90eXBlLmluUGFyZW50aGVzaXMKCSAqLwoJcHVibGljIGZ1bmN0aW9uIG91dE9mUGFyZW50aGVzaXMoKSB7CgkJYXJyYXlfcG9wKCAkdGhpcy0+cGFyZW5zU3RhY2sgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHBhdGgKCSAqIEByZXR1cm4gYm9vbAoJICogQHNlZSBsZXNzLTIuNS4zLmpzI0V2YWwuaXNQYXRoUmVsYXRpdmUKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1BhdGhSZWxhdGl2ZSggJHBhdGggKSB7CgkJcmV0dXJuICFwcmVnX21hdGNoKCAnL14oPzpbYS16LV0rOnxcL3wjKS8nLCAkcGF0aCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlbnRlckNhbGMoKSB7CgkJJHRoaXMtPmNhbGNTdGFja1tdID0gdHJ1ZTsKCQkkdGhpcy0+aW5DYWxjID0gdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZXhpdENhbGMoKSB7CgkJYXJyYXlfcG9wKCAkdGhpcy0+Y2FsY1N0YWNrICk7CgkJaWYgKCAhJHRoaXMtPmNhbGNTdGFjayApIHsKCQkJJHRoaXMtPmluQ2FsYyA9IGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIENhbm9uaWNhbGl6ZSBhIHBhdGggYnkgcmVzb2x2aW5nIHJlZmVyZW5jZXMgdG8gJy8uLycsICcvLi4vJwoJICogRG9lcyBub3QgcmVtb3ZlIGxlYWRpbmcgIi4uLyIKCSAqIEBwYXJhbSBzdHJpbmcgJHBhdGggb3IgdXJsCgkgKiBAcmV0dXJuIHN0cmluZyBDYW5vbmljYWxpemVkIHBhdGgKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVQYXRoKCAkcGF0aCApIHsKCQkkc2VnbWVudHMgPSBleHBsb2RlKCAnLycsICRwYXRoICk7CgkJJHNlZ21lbnRzID0gYXJyYXlfcmV2ZXJzZSggJHNlZ21lbnRzICk7CgoJCSRwYXRoID0gW107CgkJJHBhdGhfbGVuID0gMDsKCgkJd2hpbGUgKCAkc2VnbWVudHMgKSB7CgkJCSRzZWdtZW50ID0gYXJyYXlfcG9wKCAkc2VnbWVudHMgKTsKCQkJc3dpdGNoICggJHNlZ21lbnQgKSB7CgoJCQkJY2FzZSAnLic6CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnLi4nOgoJCQkJCS8vIEBwaGFuLXN1cHByZXNzLW5leHQtbGluZSBQaGFuVHlwZUludmFsaWREaW1PZmZzZXQgRmFsc2UgcG9zaXRpdmUKCQkJCQlpZiAoICEkcGF0aF9sZW4gfHwgKCAkcGF0aFskcGF0aF9sZW4gLSAxXSA9PT0gJy4uJyApICkgewoJCQkJCQkkcGF0aFtdID0gJHNlZ21lbnQ7CgkJCQkJCSRwYXRoX2xlbisrOwoJCQkJCX0gZWxzZSB7CgkJCQkJCWFycmF5X3BvcCggJHBhdGggKTsKCQkJCQkJJHBhdGhfbGVuLS07CgkJCQkJfQoJCQkJCWJyZWFrOwoKCQkJCWRlZmF1bHQ6CgkJCQkJJHBhdGhbXSA9ICRzZWdtZW50OwoJCQkJCSRwYXRoX2xlbisrOwoJCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQlyZXR1cm4gaW1wbG9kZSggJy8nLCAkcGF0aCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB1bnNoaWZ0RnJhbWUoICRmcmFtZSApIHsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+ZnJhbWVzLCAkZnJhbWUgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2hpZnRGcmFtZSgpIHsKCQlyZXR1cm4gYXJyYXlfc2hpZnQoICR0aGlzLT5mcmFtZXMgKTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Exception/Chunk.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX0V4Y2VwdGlvbl9DaHVuayBleHRlbmRzIExlc3NfRXhjZXB0aW9uX1BhcnNlciB7CgoJLyoqIEB2YXIgaW50ICovCglwcm90ZWN0ZWQgJHBhcnNlckN1cnJlbnRJbmRleCA9IDA7CgoJLyoqIEB2YXIgaW50ICovCglwcm90ZWN0ZWQgJGVtaXRGcm9tID0gMDsKCgkvKiogQHZhciBpbnQgKi8KCXByb3RlY3RlZCAkaW5wdXRfbGVuOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkaW5wdXQKCSAqIEBwYXJhbSBFeGNlcHRpb258bnVsbCAkcHJldmlvdXMgUHJldmlvdXMgZXhjZXB0aW9uCgkgKiBAcGFyYW0gaW50fG51bGwgJGluZGV4IFRoZSBjdXJyZW50IHBhcnNlciBpbmRleAoJICogQHBhcmFtIGFycmF5fG51bGwgJGN1cnJlbnRGaWxlIFRoZSBmaWxlCgkgKiBAcGFyYW0gaW50ICRjb2RlIFRoZSBleGNlcHRpb24gY29kZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRpbnB1dCwgP0V4Y2VwdGlvbiAkcHJldmlvdXMgPSBudWxsLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGUgPSBudWxsLCAkY29kZSA9IDAgKSB7CgkJJHRoaXMtPm1lc3NhZ2UgPSAnUGFyc2VFcnJvcjogVW5leHBlY3RlZCBpbnB1dCc7IC8vIGRlZmF1bHQgbWVzc2FnZQoKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgoJCSR0aGlzLT5jdXJyZW50RmlsZSA9ICRjdXJyZW50RmlsZTsKCgkJJHRoaXMtPmlucHV0ID0gJGlucHV0OwoJCSR0aGlzLT5pbnB1dF9sZW4gPSBzdHJsZW4oICRpbnB1dCApOwoKCQkkdGhpcy0+Q2h1bmtzKCk7CgkJJHRoaXMtPmdlbk1lc3NhZ2UoKTsKCQkkdGhpcy0+Z2V0RmluYWxNZXNzYWdlKCk7Cgl9CgoJLyoqCgkgKiBTZWUgbGVzcy5qcyBjaHVua3MoKQoJICogV2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0aGUgY2h1bmtzCgkgKi8KCXByb3RlY3RlZCBmdW5jdGlvbiBDaHVua3MoKSB7CgkJJGxldmVsID0gMDsKCQkkcGFyZW5MZXZlbCA9IDA7CgkJJGxhc3RNdWx0aUNvbW1lbnRFbmRCcmFjZSA9IG51bGw7CgkJJGxhc3RPcGVuaW5nID0gbnVsbDsKCQkkbGFzdE11bHRpQ29tbWVudCA9IG51bGw7CgkJJGxhc3RQYXJlbiA9IG51bGw7CgoJCS8vIHBocGNzOmlnbm9yZSBHZW5lcmljLkNvZGVBbmFseXNpcy5KdW1ibGVkSW5jcmVtZW50ZXIKCQlmb3IgKCAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID0gMDsgJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA8ICR0aGlzLT5pbnB1dF9sZW47ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrKyApIHsKCQkJJGNjID0gJHRoaXMtPkNoYXJDb2RlKCAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ICk7CgkJCWlmICggKCAoICRjYyA+PSA5NyApICYmICggJGNjIDw9IDEyMiApICkgfHwgKCAkY2MgPCAzNCApICkgewoJCQkJLy8gYS16IG9yIHdoaXRlc3BhY2UKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQlzd2l0Y2ggKCAkY2MgKSB7CgoJCQkJLy8gKAoJCQkJY2FzZSA0MDoKCQkJCQkkcGFyZW5MZXZlbCsrOwoJCQkJCSRsYXN0UGFyZW4gPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4OwoJCQkJCWJyZWFrOwoKCQkJCS8vICkKCQkJCWNhc2UgNDE6CgkJCQkJJHBhcmVuTGV2ZWwtLTsKCQkJCQlpZiAoICRwYXJlbkxldmVsIDwgMCApIHsKCQkJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCAibWlzc2luZyBvcGVuaW5nIGAoYCIgKTsKCQkJCQl9CgkJCQkJYnJlYWs7CgoJCQkJLy8gOwoJCQkJY2FzZSA1OToKCQkJCQkvLyBpZiAoISRwYXJlbkxldmVsKSB7ICR0aGlzLT5lbWl0Q2h1bmsoKTsgICB9CgkJCQkJYnJlYWs7CgoJCQkJLy8gewoJCQkJY2FzZSAxMjM6CgkJCQkJJGxldmVsKys7CgkJCQkJJGxhc3RPcGVuaW5nID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleDsKCQkJCQlicmVhazsKCgkJCQkvLyB9CgkJCQljYXNlIDEyNToKCQkJCQkkbGV2ZWwtLTsKCQkJCQlpZiAoICRsZXZlbCA8IDAgKSB7CgkJCQkJCXJldHVybiAkdGhpcy0+ZmFpbCggIm1pc3Npbmcgb3BlbmluZyBge2AiICk7CgoJCQkJCX0KCQkJCQkvLyBpZiAoISRsZXZlbCAmJiAhJHBhcmVuTGV2ZWwpIHsgJHRoaXMtPmVtaXRDaHVuaygpOyB9CgkJCQkJYnJlYWs7CgkJCQkvLyBcCgkJCQljYXNlIDkyOgoJCQkJCWlmICggJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA8ICR0aGlzLT5pbnB1dF9sZW4gLSAxICkgewoJCQkJCQkkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4Kys7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoICJ1bmVzY2FwZWQgYFxcYCIgKTsKCgkJCQkvLyAiLCAnIGFuZCBgCgkJCQljYXNlIDM0OgoJCQkJY2FzZSAzOToKCQkJCWNhc2UgOTY6CgkJCQkJJG1hdGNoZWQgPSAwOwoJCQkJCSRjdXJyZW50Q2h1bmtTdGFydEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleDsKCQkJCQlmb3IgKCAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ICs9IDE7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuOyAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KysgKSB7CgkJCQkJCSRjYzIgPSAkdGhpcy0+Q2hhckNvZGUoICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggKTsKCQkJCQkJaWYgKCAkY2MyID4gOTYgKSB7CgkJCQkJCQljb250aW51ZTsKCQkJCQkJfQoJCQkJCQlpZiAoICRjYzIgPT0gJGNjICkgewoJCQkJCQkJJG1hdGNoZWQgPSAxOwoJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQkJaWYgKCAkY2MyID09IDkyICkgeyAgICAgICAgLy8gXAoJCQkJCQkJaWYgKCAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID09ICR0aGlzLT5pbnB1dF9sZW4gLSAxICkgewoJCQkJCQkJCXJldHVybiAkdGhpcy0+ZmFpbCggInVuZXNjYXBlZCBgXFxgIiApOwoJCQkJCQkJfQoJCQkJCQkJJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCsrOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWlmICggJG1hdGNoZWQgKSB7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoICJ1bm1hdGNoZWQgYCIgLiBjaHIoICRjYyApIC4gImAiLCAkY3VycmVudENodW5rU3RhcnRJbmRleCApOwoKCQkJCS8vIC8sIGNoZWNrIGZvciBjb21tZW50CgkJCQljYXNlIDQ3OgoJCQkJCWlmICggJHBhcmVuTGV2ZWwgfHwgKCAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID09ICR0aGlzLT5pbnB1dF9sZW4gLSAxICkgKSB7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQkkY2MyID0gJHRoaXMtPkNoYXJDb2RlKCAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ICsgMSApOwoJCQkJCWlmICggJGNjMiA9PSA0NyApIHsKCQkJCQkJLy8gLy8sIGZpbmQgbG5mZWVkCgkJCQkJCWZvciAoICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggKz0gMjsgJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA8ICR0aGlzLT5pbnB1dF9sZW47ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrKyApIHsKCQkJCQkJCSRjYzIgPSAkdGhpcy0+Q2hhckNvZGUoICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggKTsKCQkJCQkJCWlmICggKCAkY2MyIDw9IDEzICkgJiYgKCAoICRjYzIgPT0gMTAgKSB8fCAoICRjYzIgPT0gMTMgKSApICkgewoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfSBlbHNlaWYgKCAkY2MyID09IDQyICkgewoJCQkJCQkvLyAvKiwgZmluZCAqLwoJCQkJCQkkbGFzdE11bHRpQ29tbWVudCA9ICRjdXJyZW50Q2h1bmtTdGFydEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleDsKCQkJCQkJZm9yICggJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArPSAyOyAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4IDwgJHRoaXMtPmlucHV0X2xlbiAtIDE7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrKyApIHsKCQkJCQkJCSRjYzIgPSAkdGhpcy0+Q2hhckNvZGUoICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggKTsKCQkJCQkJCWlmICggJGNjMiA9PSAxMjUgKSB7CgkJCQkJCQkJJGxhc3RNdWx0aUNvbW1lbnRFbmRCcmFjZSA9ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXg7CgkJCQkJCQl9CgkJCQkJCQlpZiAoICRjYzIgIT0gNDIgKSB7CgkJCQkJCQkJY29udGludWU7CgkJCQkJCQl9CgkJCQkJCQlpZiAoICR0aGlzLT5DaGFyQ29kZSggJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArIDEgKSA9PSA0NyApIHsKCQkJCQkJCQlicmVhazsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlpZiAoICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPT0gJHRoaXMtPmlucHV0X2xlbiAtIDEgKSB7CgkJCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoICJtaXNzaW5nIGNsb3NpbmcgYCovYCIsICRjdXJyZW50Q2h1bmtTdGFydEluZGV4ICk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJYnJlYWs7CgoJCQkJLy8gKiwgY2hlY2sgZm9yIHVubWF0Y2hlZCAqLwoJCQkJY2FzZSA0MjoKCQkJCQlpZiAoICggJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA8ICR0aGlzLT5pbnB1dF9sZW4gLSAxICkgJiYgKCAkdGhpcy0+Q2hhckNvZGUoICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggKyAxICkgPT0gNDcgKSApIHsKCQkJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCAidW5tYXRjaGVkIGAvKmAiICk7CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQlpZiAoICRsZXZlbCAhPT0gMCApIHsKCQkJaWYgKCAoICRsYXN0TXVsdGlDb21tZW50ID4gJGxhc3RPcGVuaW5nICkgJiYgKCAkbGFzdE11bHRpQ29tbWVudEVuZEJyYWNlID4gJGxhc3RNdWx0aUNvbW1lbnQgKSApIHsKCQkJCXJldHVybiAkdGhpcy0+ZmFpbCggIm1pc3NpbmcgY2xvc2luZyBgfWAgb3IgYCovYCIsICRsYXN0T3BlbmluZyApOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCAibWlzc2luZyBjbG9zaW5nIGB9YCIsICRsYXN0T3BlbmluZyApOwoJCQl9CgkJfSBlbHNlaWYgKCAkcGFyZW5MZXZlbCAhPT0gMCApIHsKCQkJcmV0dXJuICR0aGlzLT5mYWlsKCAibWlzc2luZyBjbG9zaW5nIGApYCIsICRsYXN0UGFyZW4gKTsKCQl9CgoJCS8vIGNodW5rIGRpZG4ndCBmYWlsCgoJCS8vJHRoaXMtPmVtaXRDaHVuayh0cnVlKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gQ2hhckNvZGUoICRwb3MgKSB7CgkJcmV0dXJuIG9yZCggJHRoaXMtPmlucHV0WyRwb3NdICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGZhaWwoICRtc2csICRpbmRleCA9IG51bGwgKSB7CgkJaWYgKCAhJGluZGV4ICkgewoJCQkkdGhpcy0+aW5kZXggPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4OwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQl9CgkJJHRoaXMtPm1lc3NhZ2UgPSAnUGFyc2VFcnJvcjogJyAuICRtc2c7Cgl9CgoJLyoKCWZ1bmN0aW9uIGVtaXRDaHVuayggJGZvcmNlID0gZmFsc2UgKXsKCQkkbGVuID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCAtICR0aGlzLT5lbWl0RnJvbTsKCQlpZiAoKCgkbGVuIDwgNTEyKSAmJiAhJGZvcmNlKSB8fCAhJGxlbikgewoJCQlyZXR1cm47CgkJfQoJCSRjaHVua3NbXSA9IHN1YnN0cigkdGhpcy0+aW5wdXQsICR0aGlzLT5lbWl0RnJvbSwgJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArIDEgLSAkdGhpcy0+ZW1pdEZyb20gKTsKCQkkdGhpcy0+ZW1pdEZyb20gPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ICsgMTsKCX0KCSovCgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Exception/Compiler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDb21waWxlciBFeGNlcHRpb24KICovCmNsYXNzIExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyIGV4dGVuZHMgTGVzc19FeGNlcHRpb25fUGFyc2VyIHsKCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Exception/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBQYXJzZXIgRXhjZXB0aW9uCiAqLwpjbGFzcyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIgZXh0ZW5kcyBFeGNlcHRpb24gewoKCS8qKgoJICogVGhlIGN1cnJlbnQgZmlsZQoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljICRjdXJyZW50RmlsZTsKCgkvKioKCSAqIFRoZSBjdXJyZW50IHBhcnNlciBpbmRleAoJICoKCSAqIEB2YXIgaW50CgkgKi8KCXB1YmxpYyAkaW5kZXg7CgoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJGZpbmFsTWVzc2FnZSA9ICcnOwoKCS8qKiBAdmFyIHN0cmluZ3xudWxsICovCglwcm90ZWN0ZWQgJGlucHV0OwoKCS8qKgoJICogQHBhcmFtIHN0cmluZ3xudWxsICRtZXNzYWdlCgkgKiBAcGFyYW0gRXhjZXB0aW9ufG51bGwgJHByZXZpb3VzIFByZXZpb3VzIGV4Y2VwdGlvbgoJICogQHBhcmFtIGludHxudWxsICRpbmRleCBUaGUgY3VycmVudCBwYXJzZXIgaW5kZXgKCSAqIEBwYXJhbSBhcnJheXxudWxsICRjdXJyZW50RmlsZSBUaGUgZmlsZQoJICogQHBhcmFtIGludCAkY29kZSBUaGUgZXhjZXB0aW9uIGNvZGUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkbWVzc2FnZSA9IG51bGwsID9FeGNlcHRpb24gJHByZXZpb3VzID0gbnVsbCwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlID0gbnVsbCwgJGNvZGUgPSAwICkgewoJCXBhcmVudDo6X19jb25zdHJ1Y3QoICRtZXNzYWdlLCAkY29kZSwgJHByZXZpb3VzICk7CgoJCSR0aGlzLT5jdXJyZW50RmlsZSA9ICRjdXJyZW50RmlsZTsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgoJCSR0aGlzLT5nZW5NZXNzYWdlKCk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldElucHV0KCkgewoJCWlmICggISR0aGlzLT5pbnB1dCAmJiAkdGhpcy0+Y3VycmVudEZpbGUgJiYgJHRoaXMtPmN1cnJlbnRGaWxlWydmaWxlbmFtZSddICYmIGZpbGVfZXhpc3RzKCAkdGhpcy0+Y3VycmVudEZpbGVbJ2ZpbGVuYW1lJ10gKSApIHsKCQkJJHRoaXMtPmlucHV0ID0gZmlsZV9nZXRfY29udGVudHMoICR0aGlzLT5jdXJyZW50RmlsZVsnZmlsZW5hbWUnXSApOwoJCX0KCX0KCgkvKioKCSAqIFNldCBhIG1lc3NhZ2UgYmFzZWQgb24gdGhlIGV4Y2VwdGlvbiBpbmZvCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5NZXNzYWdlKCkgewoJCWlmICggJHRoaXMtPmN1cnJlbnRGaWxlICYmICR0aGlzLT5jdXJyZW50RmlsZVsnZmlsZW5hbWUnXSApIHsKCQkJJHRoaXMtPmZpbmFsTWVzc2FnZSAuPSAnIGluICcgLiBiYXNlbmFtZSggJHRoaXMtPmN1cnJlbnRGaWxlWydmaWxlbmFtZSddICk7CgkJfQoKCQlpZiAoICR0aGlzLT5pbmRleCAhPT0gbnVsbCApIHsKCQkJJHRoaXMtPmdldElucHV0KCk7CgkJCWlmICggJHRoaXMtPmlucHV0ICkgewoJCQkJJGxpbmUgPSBzZWxmOjpnZXRMaW5lTnVtYmVyKCk7CgkJCQkkdGhpcy0+ZmluYWxNZXNzYWdlIC49ICcgb24gbGluZSAnIC4gJGxpbmUgLiAnLCBjb2x1bW4gJyAuIHNlbGY6OmdldENvbHVtbigpOwoKCQkJCSRsaW5lcyA9IGV4cGxvZGUoICJcbiIsICR0aGlzLT5pbnB1dCApOwoKCQkJCSRjb3VudCA9IGNvdW50KCAkbGluZXMgKTsKCQkJCSRzdGFydF9saW5lID0gbWF4KCAwLCAkbGluZSAtIDMgKTsKCQkJCSRsYXN0X2xpbmUgPSBtaW4oICRjb3VudCwgJHN0YXJ0X2xpbmUgKyA2ICk7CgkJCQkkbnVtX2xlbiA9IHN0cmxlbiggJGxhc3RfbGluZSApOwoJCQkJZm9yICggJGkgPSAkc3RhcnRfbGluZTsgJGkgPCAkbGFzdF9saW5lOyAkaSsrICkgewoJCQkJCSR0aGlzLT5maW5hbE1lc3NhZ2UgLj0gIlxuIiAuIHN0cl9wYWQoIChzdHJpbmcpKCAkaSArIDEgKSwgJG51bV9sZW4sICcwJywgU1RSX1BBRF9MRUZUICkgLiAnfCAnIC4gJGxpbmVzWyRpXTsKCQkJCX0KCQkJfQoJCX0KCX0KCgkvKioKCSAqIFJldHVybnMgdGhlIGxpbmUgbnVtYmVyIHRoZSBlcnJvciB3YXMgZW5jb3VudGVyZWQKCSAqCgkgKiBAcmV0dXJuIGludAoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZU51bWJlcigpIHsKCQlpZiAoICR0aGlzLT5pbmRleCApIHsKCQkJcmV0dXJuIHN1YnN0cl9jb3VudCggJHRoaXMtPmlucHV0LCAiXG4iLCAwLCAkdGhpcy0+aW5kZXggKSArIDE7CgkJfQoJCXJldHVybiAxOwoJfQoKCS8qKgoJICogUmV0dXJucyB0aGUgY29sdW1uIHRoZSBlcnJvciB3YXMgZW5jb3VudGVyZWQKCSAqCgkgKiBAcmV0dXJuIGludAoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q29sdW1uKCkgewoJCSRwYXJ0ID0gc3Vic3RyKCAkdGhpcy0+aW5wdXQsIDAsICR0aGlzLT5pbmRleCApOwoJCSRwb3MgPSBzdHJycG9zKCAkcGFydCwgIlxuIiApOwoJCXJldHVybiAkdGhpcy0+aW5kZXggLSAkcG9zOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRGaW5hbE1lc3NhZ2UoKSB7CgkJJHRoaXMtPm1lc3NhZ2UgLj0gJHRoaXMtPmZpbmFsTWVzc2FnZTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/FileManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX0ZpbGVNYW5hZ2VyIHsKCS8qKgoJICogR2V0IHRoZSBmdWxsIGFic29sdXRlIHBhdGggYW5kIHVyaSBvZiB0aGUgaW1wb3J0CgkgKiBAc2VlIGxlc3Mtbm9kZS9GaWxlTWFuYWdlci5nZXRQYXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvYmxvYi92Mi41LjMvbGliL2xlc3Mtbm9kZS9maWxlLW1hbmFnZXIuanMjTDcwCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQoJICogQHBhcmFtIG51bGx8YXJyYXkgJGN1cnJlbnRGaWxlSW5mbwoJICogQHJldHVybiBudWxsfGFycmF5ezA6c3RyaW5nLDE6c3RyaW5nfQoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEZpbGVQYXRoKCAkZmlsZW5hbWUsICRjdXJyZW50RmlsZUluZm8gKSB7CgkJaWYgKCAhJGZpbGVuYW1lICkgewoJCQlyZXR1cm47CgkJfQoKCQkJJGltcG9ydF9kaXJzID0gW107CgoJCWlmICggTGVzc19FbnZpcm9ubWVudDo6aXNQYXRoUmVsYXRpdmUoICRmaWxlbmFtZSApICkgewoJCQkvLyBpZiB0aGUgcGF0aCBpcyByZWxhdGl2ZSwgdGhlIGZpbGUgc2hvdWxkIGJlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQoJCQlpZiAoICRjdXJyZW50RmlsZUluZm8gKSB7CgkJCQkkaW1wb3J0X2RpcnNbICRjdXJyZW50RmlsZUluZm9bJ2N1cnJlbnREaXJlY3RvcnknXSBdID0gJGN1cnJlbnRGaWxlSW5mb1sndXJpX3Jvb3QnXTsKCQkJfQoKCQl9IGVsc2UgewoJCQkvLyBvdGhlcndpc2UsIHRoZSBmaWxlIHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgc2VydmVyIHJvb3QKCQkJaWYgKCAkY3VycmVudEZpbGVJbmZvICkgewoJCQkJJGltcG9ydF9kaXJzWyAkY3VycmVudEZpbGVJbmZvWydlbnRyeVBhdGgnXSBdID0gJGN1cnJlbnRGaWxlSW5mb1snZW50cnlVcmknXTsKCQkJfQoJCQkvLyBpZiB0aGUgdXNlciBzdXBwbGllZCBlbnRyeVBhdGggaXNuJ3QgdGhlIGFjdHVhbCByb290CgkJCSRpbXBvcnRfZGlyc1sgJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSBdID0gJyc7CgoJCX0KCgkJCS8vIGFsd2F5cyBsb29rIGluIHVzZXIgc3VwcGxpZWQgaW1wb3J0IGRpcmVjdG9yaWVzCgkJCSRpbXBvcnRfZGlycyA9IGFycmF5X21lcmdlKCAkaW1wb3J0X2RpcnMsIExlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2RpcnMnXSApOwoKCQlmb3JlYWNoICggJGltcG9ydF9kaXJzIGFzICRyb290cGF0aCA9PiAkcm9vdHVyaSApIHsKCQkJaWYgKCBpc19jYWxsYWJsZSggJHJvb3R1cmkgKSApIHsKCQkJCSRyZXMgPSAkcm9vdHVyaSggJGZpbGVuYW1lICk7CgkJCQlpZiAoICRyZXMgJiYgaXNfc3RyaW5nKCAkcmVzWzBdICkgKSB7CgkJCQkJcmV0dXJuIFsKCQkJCQkJTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCggJHJlc1swXSApLAoJCQkJCQlMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCAkcmVzWzFdID8/IGRpcm5hbWUoICRmaWxlbmFtZSApICkKCQkJCQldOwoJCQkJfQoJCQl9IGVsc2VpZiAoICFlbXB0eSggJHJvb3RwYXRoICkgKSB7CgkJCQkkcGF0aCA9IHJ0cmltKCAkcm9vdHBhdGgsICcvXFwnICkgLiAnLycgLiBsdHJpbSggJGZpbGVuYW1lLCAnL1xcJyApOwoJCQkJaWYgKCBmaWxlX2V4aXN0cyggJHBhdGggKSApIHsKCQkJCQlyZXR1cm4gWwoJCQkJCQlMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCAkcGF0aCApLAoJCQkJCQlMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCBkaXJuYW1lKCAkcm9vdHVyaSAuICRmaWxlbmFtZSApICkKCQkJCQldOwoJCQkJfQoJCQkJaWYgKCBmaWxlX2V4aXN0cyggJHBhdGggLiAnLmxlc3MnICkgKSB7CgkJCQkJcmV0dXJuIFsKCQkJCQkJTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCggJHBhdGggLiAnLmxlc3MnICksCgkJCQkJCUxlc3NfRW52aXJvbm1lbnQ6Om5vcm1hbGl6ZVBhdGgoIGRpcm5hbWUoICRyb290dXJpIC4gJGZpbGVuYW1lIC4gJy5sZXNzJyApICkKCQkJCQldOwoJCQkJfQoJCQl9CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBCdWlsdGluIGZ1bmN0aW9ucwogKiBAc2VlIGh0dHBzOi8vbGVzc2Nzcy5vcmcvZnVuY3Rpb25zLwogKi8KY2xhc3MgTGVzc19GdW5jdGlvbnMgewoKCS8qKiBAdmFyIExlc3NfRW52aXJvbm1lbnQgKi8KCXB1YmxpYyAkZW52OwoJLyoqIEB2YXIgYXJyYXl8bnVsbCAqLwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkZW52LCA/YXJyYXkgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKSB7CgkJJHRoaXMtPmVudiA9ICRlbnY7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgoJcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2NsYW1wKCAkdmFsLCAkbWF4ID0gMSApIHsKCQlyZXR1cm4gbWluKCBtYXgoICR2YWwsIDAgKSwgJG1heCApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gX2hzbGEoICRvcmlnQ29sb3IsICRoc2wgKSB7CgkJJGNvbG9yID0gJHRoaXMtPmhzbGEoICRoc2xbImgiXSwgJGhzbFsicyJdLCAkaHNsWyJsIl0sICRoc2xbImEiXSApOwoJCWlmICggJGNvbG9yICkgewoJCQlpZiAoICRvcmlnQ29sb3ItPnZhbHVlICYmIHByZWdfbWF0Y2goICcvXihyZ2J8aHNsKS8nLCAkb3JpZ0NvbG9yLT52YWx1ZSApICkgewoJCQkJJGNvbG9yLT52YWx1ZSA9ICRvcmlnQ29sb3ItPnZhbHVlOwoJCQl9IGVsc2UgewoJCQkJJGNvbG9yLT52YWx1ZSA9ICdyZ2InOwoJCQl9CgkJCXJldHVybiAkY29sb3I7CgkJfQoJfQoKCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9udW1iZXIoICRuICkgewoJCWlmICggJG4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICkgewoJCQlyZXR1cm4gZmxvYXR2YWwoICRuLT51bml0LT5pcyggJyUnICkgPyAkbi0+dmFsdWUgLyAxMDAgOiAkbi0+dmFsdWUgKTsKCQl9IGVsc2VpZiAoIGlzX251bWVyaWMoICRuICkgKSB7CgkJCXJldHVybiAkbjsKCQl9IGVsc2UgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoICJjb2xvciBmdW5jdGlvbnMgdGFrZSBudW1iZXJzIGFzIHBhcmFtZXRlcnMiICk7CgkJfQoJfQoKCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9zY2FsZWQoICRuLCAkc2l6ZSA9IDI1NSApIHsKCQlpZiAoICRuIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiAmJiAkbi0+dW5pdC0+aXMoICclJyApICkgewoJCQlyZXR1cm4gKGZsb2F0KSRuLT52YWx1ZSAqICRzaXplIC8gMTAwOwoJCX0gZWxzZSB7CgkJCXJldHVybiBzZWxmOjpfbnVtYmVyKCAkbiApOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gcmdiKCAkciA9IG51bGwsICRnID0gbnVsbCwgJGIgPSBudWxsICkgewoJCWlmICggJHIgPT09IG51bGwgfHwgJGcgPT09IG51bGwgfHwgJGIgPT09IG51bGwgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggInJnYiBleHBlY3RzIHRocmVlIHBhcmFtZXRlcnMiICk7CgkJfQoJCSRjb2xvciA9ICR0aGlzLT5yZ2JhKCAkciwgJGcsICRiLCAxLjAgKTsKCQlpZiAoICRjb2xvciApIHsKCQkJICAkY29sb3ItPnZhbHVlID0gJ3JnYic7CgkJCSAgcmV0dXJuICRjb2xvcjsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJnYmEoICRyID0gbnVsbCwgJGcgPSBudWxsLCAkYiA9IG51bGwsICRhID0gbnVsbCApIHsKCQkkcmdiID0gWwoJCQlzZWxmOjpfc2NhbGVkKCAkciApLAoJCQlzZWxmOjpfc2NhbGVkKCAkZyApLAoJCQlzZWxmOjpfc2NhbGVkKCAkYiApCgkJXTsKCgkJJGEgPSBzZWxmOjpfbnVtYmVyKCAkYSApOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0NvbG9yKCAkcmdiLCAkYSwgJ3JnYmEnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGhzbCggJGgsICRzLCAkbCApIHsKCQkkY29sb3IgPSAkdGhpcy0+aHNsYSggJGgsICRzLCAkbCwgMS4wICk7CgkJaWYgKCAkY29sb3IgKSB7CgkJCSRjb2xvci0+dmFsdWUgPSAiaHNsIjsKCQkJcmV0dXJuICRjb2xvcjsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGhzbGEoICRoLCAkcywgJGwsICRhICkgewoJCSRoID0gZm1vZCggc2VsZjo6X251bWJlciggJGggKSwgMzYwICkgLyAzNjA7IC8vIENsYXNzaWMgJSBvcGVyYXRvciB3aWxsIGNoYW5nZSBmbG9hdCB0byBpbnQKCQkkcyA9IHNlbGY6Ol9jbGFtcCggc2VsZjo6X251bWJlciggJHMgKSApOwoJCSRsID0gc2VsZjo6X2NsYW1wKCBzZWxmOjpfbnVtYmVyKCAkbCApICk7CgkJJGEgPSBzZWxmOjpfY2xhbXAoIHNlbGY6Ol9udW1iZXIoICRhICkgKTsKCgkJJG0yID0gJGwgPD0gMC41ID8gJGwgKiAoICRzICsgMSApIDogJGwgKyAkcyAtICRsICogJHM7CgoJCSRtMSA9ICRsICogMiAtICRtMjsKCgkJJHJnYiA9IFsKCQkJc2VsZjo6aHNsYV9odWUoICRoICsgMSAvIDMsICRtMSwgJG0yICkgKiAyNTUsCgkJCXNlbGY6OmhzbGFfaHVlKCAkaCwgJG0xLCAkbTIgKSAqIDI1NSwKCQkJc2VsZjo6aHNsYV9odWUoICRoIC0gMSAvIDMsICRtMSwgJG0yICkgKiAyNTUsCgkJXTsKCQkkYSA9IHNlbGY6Ol9udW1iZXIoICRhICk7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQ29sb3IoICRyZ2IsICRhLCAnaHNsYScgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBmbG9hdCAkaAoJICogQHBhcmFtIGZsb2F0ICRtMQoJICogQHBhcmFtIGZsb2F0ICRtMgoJICovCglwdWJsaWMgZnVuY3Rpb24gaHNsYV9odWUoICRoLCAkbTEsICRtMiApIHsKCQkkaCA9ICRoIDwgMCA/ICRoICsgMSA6ICggJGggPiAxID8gJGggLSAxIDogJGggKTsKCQlpZiAoICRoICogNiA8IDEgKSB7CgkJCXJldHVybiAkbTEgKyAoICRtMiAtICRtMSApICogJGggKiA2OwoJCX0gZWxzZWlmICggJGggKiAyIDwgMSApIHsKCQkJcmV0dXJuICRtMjsKCQl9IGVsc2VpZiAoICRoICogMyA8IDIgKSB7CgkJCXJldHVybiAkbTEgKyAoICRtMiAtICRtMSApICogKCAyIC8gMyAtICRoICkgKiA2OwoJCX0gZWxzZSB7CgkJCXJldHVybiAkbTE7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBoc3YoICRoLCAkcywgJHYgKSB7CgkJcmV0dXJuICR0aGlzLT5oc3ZhKCAkaCwgJHMsICR2LCAxLjAgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWV8ZmxvYXQgJGgKCSAqIEBwYXJhbSBMZXNzX1RyZWV8ZmxvYXQgJHMKCSAqIEBwYXJhbSBMZXNzX1RyZWV8ZmxvYXQgJHYKCSAqIEBwYXJhbSBmbG9hdCAkYQoJICovCglwdWJsaWMgZnVuY3Rpb24gaHN2YSggJGgsICRzLCAkdiwgJGEgKSB7CgkJJGggPSAoICggKGludClzZWxmOjpfbnVtYmVyKCAkaCApICUgMzYwICkgLyAzNjAgKSAqIDM2MDsKCQkkcyA9IHNlbGY6Ol9udW1iZXIoICRzICk7CgkJJHYgPSBzZWxmOjpfbnVtYmVyKCAkdiApOwoJCSRhID0gc2VsZjo6X251bWJlciggJGEgKTsKCgkJJGkgPSAoaW50KWZsb29yKCAoaW50KSggJGggLyA2MCApICUgNiApOwoJCSRmID0gKCAkaCAvIDYwICkgLSAkaTsKCgkJJHZzID0gWwoJCQkkdiwKCQkJJHYgKiAoIDEgLSAkcyApLAoJCQkkdiAqICggMSAtICRmICogJHMgKSwKCQkJJHYgKiAoIDEgLSAoIDEgLSAkZiApICogJHMgKQoJCV07CgoJCSRwZXJtID0gWwoJCQlbIDAsIDMsIDEgXSwKCQkJWyAyLCAwLCAxIF0sCgkJCVsgMSwgMCwgMyBdLAoJCQlbIDEsIDIsIDAgXSwKCQkJWyAzLCAxLCAwIF0sCgkJCVsgMCwgMSwgMiBdCgkJXTsKCgkJcmV0dXJuICR0aGlzLT5yZ2JhKAoJCQkkdnNbJHBlcm1bJGldWzBdXSAqIDI1NSwKCQkJJHZzWyRwZXJtWyRpXVsxXV0gKiAyNTUsCgkJCSR2c1skcGVybVskaV1bMl1dICogMjU1LAoJCQkkYQoJCSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGh1ZSggJGNvbG9yID0gbnVsbCApIHsKCQlpZiAoICEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgZmlyc3QgYXJndW1lbnQgdG8gaHVlIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJJGMgPSAkY29sb3ItPnRvSFNMKCk7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkY1snaCddICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNhdHVyYXRpb24oICRjb2xvciA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNhdHVyYXRpb24gbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoKCQkkYyA9ICRjb2xvci0+dG9IU0woKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRjWydzJ10gKiAxMDAsICclJyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBsaWdodG5lc3MoICRjb2xvciA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGxpZ2h0bmVzcyBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCSRjID0gJGNvbG9yLT50b0hTTCgpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGNbJ2wnXSAqIDEwMCwgJyUnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGhzdmh1ZSggJGNvbG9yID0gbnVsbCApIHsKCQlpZiAoICEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgZmlyc3QgYXJndW1lbnQgdG8gaHN2aHVlIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJJGhzdiA9ICRjb2xvci0+dG9IU1YoKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRoc3ZbJ2gnXSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBoc3ZzYXR1cmF0aW9uKCAkY29sb3IgPSBudWxsICkgewoJCWlmICggISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBoc3ZzYXR1cmF0aW9uIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJJGhzdiA9ICRjb2xvci0+dG9IU1YoKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRoc3ZbJ3MnXSAqIDEwMCwgJyUnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGhzdnZhbHVlKCAkY29sb3IgPSBudWxsICkgewoJCWlmICggISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBoc3Z2YWx1ZSBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCSRoc3YgPSAkY29sb3ItPnRvSFNWKCk7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkaHN2Wyd2J10gKiAxMDAsICclJyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZWQoICRjb2xvciA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHJlZCBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGNvbG9yLT5yZ2JbMF0gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ3JlZW4oICRjb2xvciA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGdyZWVuIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkY29sb3ItPnJnYlsxXSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBibHVlKCAkY29sb3IgPSBudWxsICkgewoJCWlmICggISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBibHVlIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkY29sb3ItPnJnYlsyXSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhbHBoYSggJGNvbG9yID0gbnVsbCApIHsKCQlpZiAoICEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgZmlyc3QgYXJndW1lbnQgdG8gYWxwaGEgbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoKCQkkYyA9ICRjb2xvci0+dG9IU0woKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRjWydhJ10gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbHVtYSggJGNvbG9yID0gbnVsbCApIHsKCQlpZiAoICEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgZmlyc3QgYXJndW1lbnQgdG8gbHVtYSBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGNvbG9yLT5sdW1hKCkgKiAkY29sb3ItPmFscGhhICogMTAwLCAnJScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbHVtaW5hbmNlKCAkY29sb3IgPSBudWxsICkgewoJCWlmICggISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBsdW1pbmFuY2UgbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoKCQkkbHVtaW5hbmNlID0KCQkJKCAwLjIxMjYgKiAkY29sb3ItPnJnYlswXSAvIDI1NSApCgkJCSsgKCAwLjcxNTIgKiAkY29sb3ItPnJnYlsxXSAvIDI1NSApCgkJCSsgKCAwLjA3MjIgKiAkY29sb3ItPnJnYlsyXSAvIDI1NSApOwoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRsdW1pbmFuY2UgKiAkY29sb3ItPmFscGhhICogMTAwLCAnJScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2F0dXJhdGUoICRjb2xvciA9IG51bGwsICRhbW91bnQgPSBudWxsLCAkbWV0aG9kID0gbnVsbCApIHsKCQkvLyBmaWx0ZXI6IHNhdHVyYXRlKDMuMik7CgkJLy8gc2hvdWxkIGJlIGtlcHQgYXMgaXMsIHNvIGNoZWNrIGZvciBjb2xvcgoJCWlmICggJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiApIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQlpZiAoICEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgZmlyc3QgYXJndW1lbnQgdG8gc2F0dXJhdGUgbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIHNlY29uZCBhcmd1bWVudCB0byBzYXR1cmF0ZSBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoICRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCSRoc2wgPSAkY29sb3ItPnRvSFNMKCk7CgoJCWlmICggaXNzZXQoICRtZXRob2QgKSAmJiAkbWV0aG9kLT52YWx1ZSA9PT0gInJlbGF0aXZlIiApIHsKCQkJJGhzbFsncyddICs9ICRoc2xbJ3MnXSAqICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCX0gZWxzZSB7CgkJCSRoc2xbJ3MnXSArPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQl9CQkkaHNsWydzJ10gPSBzZWxmOjpfY2xhbXAoICRoc2xbJ3MnXSApOwoKCQlyZXR1cm4gJHRoaXMtPl9oc2xhKCAkY29sb3IsICRoc2wgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfQ29sb3J8bnVsbCAkY29sb3IKCSAqIEBwYXJhbSBMZXNzX1RyZWVfRGltZW5zaW9ufG51bGwgJGFtb3VudAoJICogQHBhcmFtIExlc3NfVHJlZV9RdW90ZWR8TGVzc19UcmVlX0NvbG9yfExlc3NfVHJlZV9LZXl3b3JkfG51bGwgJG1ldGhvZAoJICovCglwdWJsaWMgZnVuY3Rpb24gZGVzYXR1cmF0ZSggJGNvbG9yID0gbnVsbCwgJGFtb3VudCA9IG51bGwsICRtZXRob2QgPSBudWxsICkgewoJCWlmICggISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBkZXNhdHVyYXRlIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCQlpZiAoICEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZGVzYXR1cmF0ZSBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoICRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCSRoc2wgPSAkY29sb3ItPnRvSFNMKCk7CgoJCWlmICggaXNzZXQoICRtZXRob2QgKSAmJiAkbWV0aG9kLT52YWx1ZSA9PT0gInJlbGF0aXZlIiApIHsKCQkJJGhzbFsncyddIC09ICRoc2xbJ3MnXSAqICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCX0gZWxzZSB7CgkJCSRoc2xbJ3MnXSAtPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQl9CgoJCSRoc2xbJ3MnXSA9IHNlbGY6Ol9jbGFtcCggJGhzbFsncyddICk7CgoJCXJldHVybiAkdGhpcy0+X2hzbGEoICRjb2xvciwgJGhzbCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBsaWdodGVuKCAkY29sb3IgPSBudWxsLCAkYW1vdW50ID0gbnVsbCwgJG1ldGhvZCA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGxpZ2h0ZW4gbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIHNlY29uZCBhcmd1bWVudCB0byBsaWdodGVuIG11c3QgYmUgYSBwZXJjZW50YWdlJyAuICggJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCgkJaWYgKCBpc3NldCggJG1ldGhvZCApICYmICRtZXRob2QtPnZhbHVlID09PSAicmVsYXRpdmUiICkgewoJCQkkaHNsWydsJ10gKz0gJGhzbFsnbCddICogJGFtb3VudC0+dmFsdWUgLyAxMDA7CgkJfSBlbHNlIHsKCQkJJGhzbFsnbCddICs9ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCX0KCgkJJGhzbFsnbCddID0gc2VsZjo6X2NsYW1wKCAkaHNsWydsJ10gKTsKCQlyZXR1cm4gJHRoaXMtPl9oc2xhKCAkY29sb3IsICRoc2wgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZGFya2VuKCAkY29sb3IgPSBudWxsLCAkYW1vdW50ID0gbnVsbCwgJG1ldGhvZCA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGRhcmtlbiBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgkJaWYgKCAhJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGRhcmtlbiBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoICRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCSRoc2wgPSAkY29sb3ItPnRvSFNMKCk7CgkJaWYgKCBpc3NldCggJG1ldGhvZCApICYmICRtZXRob2QtPnZhbHVlID09PSAicmVsYXRpdmUiICkgewoJCQkkaHNsWydsJ10gLT0gJGhzbFsnbCddICogJGFtb3VudC0+dmFsdWUgLyAxMDA7CgkJfSBlbHNlIHsKCQkJJGhzbFsnbCddIC09ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCX0KCQkkaHNsWydsJ10gPSBzZWxmOjpfY2xhbXAoICRoc2xbJ2wnXSApOwoJCXJldHVybiAkdGhpcy0+X2hzbGEoICRjb2xvciwgJGhzbCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmYWRlaW4oICRjb2xvciA9IG51bGwsICRhbW91bnQgPSBudWxsLCAkbWV0aG9kID0gbnVsbCApIHsKCQlpZiAoICEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgZmlyc3QgYXJndW1lbnQgdG8gZmFkZWluIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCQlpZiAoICEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZmFkZWluIG11c3QgYmUgYSBwZXJjZW50YWdlJyAuICggJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCgkJaWYgKCBpc3NldCggJG1ldGhvZCApICYmICRtZXRob2QtPnZhbHVlID09PSAicmVsYXRpdmUiICkgewoJCQkkaHNsWydhJ10gKz0gJGhzbFsnYSddICogJGFtb3VudC0+dmFsdWUgLyAxMDA7CgkJfSBlbHNlIHsKCQkJJGhzbFsnYSddICs9ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCX0KCgkJJGhzbFsnYSddID0gc2VsZjo6X2NsYW1wKCAkaHNsWydhJ10gKTsKCQlyZXR1cm4gJHRoaXMtPl9oc2xhKCAkY29sb3IsICRoc2wgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZmFkZW91dCggJGNvbG9yID0gbnVsbCwgJGFtb3VudCA9IG51bGwsICRtZXRob2QgPSBudWxsICkgewoJCWlmICggISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBmYWRlb3V0IG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCQlpZiAoICEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZmFkZW91dCBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoICRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCSRoc2wgPSAkY29sb3ItPnRvSFNMKCk7CgoJCWlmICggaXNzZXQoICRtZXRob2QgKSAmJiAkbWV0aG9kLT52YWx1ZSA9PT0gInJlbGF0aXZlIiApIHsKCQkJJGhzbFsnYSddIC09ICRoc2xbJ2EnXSAqICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCX0gZWxzZSB7CgkJCSRoc2xbJ2EnXSAtPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQl9CgoJCSRoc2xbJ2EnXSA9IHNlbGY6Ol9jbGFtcCggJGhzbFsnYSddICk7CgkJcmV0dXJuICR0aGlzLT5faHNsYSggJGNvbG9yLCAkaHNsICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGZhZGUoICRjb2xvciA9IG51bGwsICRhbW91bnQgPSBudWxsICkgewoJCWlmICggISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBmYWRlIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCQlpZiAoICEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZmFkZSBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoICRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCSRoc2wgPSAkY29sb3ItPnRvSFNMKCk7CgoJCSRoc2xbJ2EnXSA9ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCSRoc2xbJ2EnXSA9IHNlbGY6Ol9jbGFtcCggJGhzbFsnYSddICk7CgkJcmV0dXJuICR0aGlzLT5faHNsYSggJGNvbG9yLCAkaHNsICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNwaW4oICRjb2xvciA9IG51bGwsICRhbW91bnQgPSBudWxsICkgewoJCWlmICggISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBzcGluIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCQlpZiAoICEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gc3BpbiBtdXN0IGJlIGEgbnVtYmVyJyAuICggJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCQkkaHVlID0gZm1vZCggJGhzbFsnaCddICsgJGFtb3VudC0+dmFsdWUsIDM2MCApOwoKCQkkaHNsWydoJ10gPSAkaHVlIDwgMCA/IDM2MCArICRodWUgOiAkaHVlOwoKCQlyZXR1cm4gJHRoaXMtPl9oc2xhKCAkY29sb3IsICRoc2wgKTsKCX0KCgkvLwoJLy8gQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgSGFtcHRvbiBDYXRsaW4sIE5hdGhhbiBXZWl6ZW5iYXVtLCBhbmQgQ2hyaXMgRXBwc3RlaW4KCS8vIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS8KCS8vCgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlfG51bGwgJGNvbG9yMQoJICogQHBhcmFtIExlc3NfVHJlZXxudWxsICRjb2xvcjIKCSAqIEBwYXJhbSBMZXNzX1RyZWV8bnVsbCAkd2VpZ2h0CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBtaXgoICRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCwgJHdlaWdodCA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJJHR5cGUgPSBpc19vYmplY3QoICRjb2xvcjEgKSA/IGdldF9jbGFzcyggJGNvbG9yMSApIDogZ2V0dHlwZSggJGNvbG9yMSApOwoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQkiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb2xvciwgJHR5cGUgZ2l2ZW4iIC4gKCAkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCSR0eXBlID0gaXNfb2JqZWN0KCAkY29sb3IyICkgPyBnZXRfY2xhc3MoICRjb2xvcjIgKSA6IGdldHR5cGUoICRjb2xvcjIgKTsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbG9yLCAkdHlwZSBnaXZlbiIgLiAoICRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgkJaWYgKCAhJHdlaWdodCApIHsKCQkJJHdlaWdodCA9IG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAnNTAnLCAnJScgKTsKCQl9CgkJaWYgKCAhJHdlaWdodCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gKSB7CgkJCSR0eXBlID0gaXNfb2JqZWN0KCAkd2VpZ2h0ICkgPyBnZXRfY2xhc3MoICR3ZWlnaHQgKSA6IGdldHR5cGUoICR3ZWlnaHQgKTsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJIlRoZSB0aGlyZCBhcmd1bWVudCBtdXN0IGJlIGEgcGVyY2VudGFnZSwgJHR5cGUgZ2l2ZW4iIC4gKCAkd2VpZ2h0IGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoKCQkkcCA9ICR3ZWlnaHQtPnZhbHVlIC8gMTAwLjA7CgkJJHcgPSAkcCAqIDIgLSAxOwoJCSRoc2wxID0gJGNvbG9yMS0+dG9IU0woKTsKCQkkaHNsMiA9ICRjb2xvcjItPnRvSFNMKCk7CgkJJGEgPSAkaHNsMVsnYSddIC0gJGhzbDJbJ2EnXTsKCgkJJHcxID0gKCAoICggKCAkdyAqICRhICkgPT0gLTEgKSA/ICR3IDogKCAkdyArICRhICkgLyAoIDEgKyAkdyAqICRhICkgKSArIDEgKSAvIDI7CgkJJHcyID0gMSAtICR3MTsKCgkJJHJnYiA9IFsKCQkJJGNvbG9yMS0+cmdiWzBdICogJHcxICsgJGNvbG9yMi0+cmdiWzBdICogJHcyLAoJCQkkY29sb3IxLT5yZ2JbMV0gKiAkdzEgKyAkY29sb3IyLT5yZ2JbMV0gKiAkdzIsCgkJCSRjb2xvcjEtPnJnYlsyXSAqICR3MSArICRjb2xvcjItPnJnYlsyXSAqICR3MgoJCV07CgoJCSRhbHBoYSA9ICRjb2xvcjEtPmFscGhhICogJHAgKyAkY29sb3IyLT5hbHBoYSAqICggMSAtICRwICk7CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0NvbG9yKCAkcmdiLCAkYWxwaGEgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ3JleXNjYWxlKCAkY29sb3IgKSB7CgkJcmV0dXJuICR0aGlzLT5kZXNhdHVyYXRlKCAkY29sb3IsIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAxMDAsICclJyApICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbnRyYXN0KCAkY29sb3IsICRkYXJrID0gbnVsbCwgJGxpZ2h0ID0gbnVsbCwgJHRocmVzaG9sZCA9IG51bGwgKSB7CgkJLy8gZmlsdGVyOiBjb250cmFzdCgzLjIpOwoJCS8vIHNob3VsZCBiZSBrZXB0IGFzIGlzLCBzbyBjaGVjayBmb3IgY29sb3IKCQlpZiAoICEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCQlpZiAoICEkbGlnaHQgKSB7CgkJCSRsaWdodCA9ICR0aGlzLT5yZ2JhKCAyNTUsIDI1NSwgMjU1LCAxLjAgKTsKCQl9CgkJaWYgKCAhJGRhcmsgKSB7CgkJCSRkYXJrID0gJHRoaXMtPnJnYmEoIDAsIDAsIDAsIDEuMCApOwoJCX0KCgkJaWYgKCAhJGRhcmsgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGNvbnRyYXN0IG11c3QgYmUgYSBjb2xvcicgLiAoICRkYXJrIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRsaWdodCBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSB0aGlyZCBhcmd1bWVudCB0byBjb250cmFzdCBtdXN0IGJlIGEgY29sb3InIC4gKCAkbGlnaHQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCS8vIEZpZ3VyZSBvdXQgd2hpY2ggaXMgYWN0dWFsbHkgbGlnaHQgYW5kIGRhcmshCgkJaWYgKCAkZGFyay0+bHVtYSgpID4gJGxpZ2h0LT5sdW1hKCkgKSB7CgkJCSR0ID0gJGxpZ2h0OwoJCQkkbGlnaHQgPSAkZGFyazsKCQkJJGRhcmsgPSAkdDsKCQl9CgkJaWYgKCAhJHRocmVzaG9sZCApIHsKCQkJJHRocmVzaG9sZCA9IDAuNDM7CgkJfSBlbHNlIHsKCQkJJHRocmVzaG9sZCA9IHNlbGY6Ol9udW1iZXIoICR0aHJlc2hvbGQgKTsKCQl9CgoJCWlmICggJGNvbG9yLT5sdW1hKCkgPCAkdGhyZXNob2xkICkgewoJCQlyZXR1cm4gJGxpZ2h0OwoJCX0gZWxzZSB7CgkJCXJldHVybiAkZGFyazsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGUoICRzdHIgKSB7CgkJaWYgKCBpc19zdHJpbmcoICRzdHIgKSApIHsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAkc3RyICk7CgkJfQoJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fub255bW91cyggJHN0ciBpbnN0YW5jZW9mIExlc3NfVHJlZV9KYXZhU2NyaXB0ID8gJHN0ci0+ZXhwcmVzc2lvbiA6ICRzdHItPnZhbHVlICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGVzY2FwZSggJHN0ciApIHsKCQkkcmV2ZXJ0ID0gWwoJCQknJTIxJyA9PiAnIScsCgkJCSclMkEnID0+ICcqJywKCQkJJyUyNycgPT4gIiciLAoJCQknJTNGJyA9PiAnPycsCgkJCSclMjYnID0+ICcmJywKCQkJJyUyQycgPT4gJywnLAoJCQknJTJGJyA9PiAnLycsCgkJCSclNDAnID0+ICdAJywKCQkJJyUyQicgPT4gJysnLAoJCQknJTI0JyA9PiAnJCcKCQldOwoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoIHN0cnRyKCByYXd1cmxlbmNvZGUoICRzdHItPnZhbHVlICksICRyZXZlcnQgKSApOwoJfQoKCS8qKgoJICogdG9kbzogVGhpcyBmdW5jdGlvbiB3aWxsIG5lZWQgc29tZSBhZGRpdGlvbmFsIHdvcmsgdG8gbWFrZSBpdCB3b3JrIHRoZSBzYW1lIGFzIGxlc3MuanMKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHJlcGxhY2UoICRzdHJpbmcsICRwYXR0ZXJuLCAkcmVwbGFjZW1lbnQsICRmbGFncyA9IG51bGwgKSB7CgkJJHJlc3VsdCA9ICRzdHJpbmctPnZhbHVlOwoKCQkkZXhwciA9ICcvJyAuIHN0cl9yZXBsYWNlKCAnLycsICdcXC8nLCAkcGF0dGVybi0+dmFsdWUgKSAuICcvJzsKCQlpZiAoICRmbGFncyAmJiAkZmxhZ3MtPnZhbHVlICkgewoJCQkkZXhwciAuPSBzZWxmOjpyZXBsYWNlX2ZsYWdzKCAkZmxhZ3MtPnZhbHVlICk7CgkJfQoJCSRyZXBsYWNlbWVudCA9ICggJHJlcGxhY2VtZW50IGluc3RhbmNlb2YgTGVzc19UcmVlX1F1b3RlZCApID8KCQkJJHJlcGxhY2VtZW50LT52YWx1ZSA6ICRyZXBsYWNlbWVudC0+dG9DU1MoKTsKCgkJaWYgKCAkZmxhZ3MgJiYgJGZsYWdzLT52YWx1ZSAmJiBwcmVnX21hdGNoKCAnL2cvJywgJGZsYWdzLT52YWx1ZSApICkgewoJCQkkcmVzdWx0ID0gcHJlZ19yZXBsYWNlKCAkZXhwciwgJHJlcGxhY2VtZW50LCAkcmVzdWx0ICk7CgkJfSBlbHNlIHsKCQkJJHJlc3VsdCA9IHByZWdfcmVwbGFjZSggJGV4cHIsICRyZXBsYWNlbWVudCwgJHJlc3VsdCwgMSApOwoJCX0KCgkJaWYgKCAkc3RyaW5nIGluc3RhbmNlb2YgTGVzc19UcmVlX1F1b3RlZCApIHsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfUXVvdGVkKCAkc3RyaW5nLT5xdW90ZSwgJHJlc3VsdCwgJHN0cmluZy0+ZXNjYXBlZCApOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9RdW90ZWQoICcnLCAkcmVzdWx0ICk7Cgl9CgoJcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcmVwbGFjZV9mbGFncyggJGZsYWdzICkgewoJCXJldHVybiBzdHJfcmVwbGFjZSggWyAnZScsICdnJyBdLCAnJywgJGZsYWdzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF9wZXJjZW50KCAkc3RyaW5nLCAuLi4kYXJncyApIHsKCQkkcmVzdWx0ID0gJHN0cmluZy0+dmFsdWU7CgoJCWZvcmVhY2ggKCAkYXJncyBhcyAkYXJnICkgewoJCQlpZiAoIHByZWdfbWF0Y2goICcvJVtzZGFdL2knLCAkcmVzdWx0LCAkdG9rZW4gKSApIHsKCQkJCSR0b2tlbiA9ICR0b2tlblswXTsKCQkJCSR2YWx1ZSA9ICggKCAkYXJnIGluc3RhbmNlb2YgTGVzc19UcmVlX1F1b3RlZCApICYmCgkJCQkJc3RyaXN0ciggJHRva2VuLCAncycgKSA/ICRhcmctPnZhbHVlIDogJGFyZy0+dG9DU1MoKSApOwoKCQkJCSR2YWx1ZSA9IHByZWdfbWF0Y2goICcvW0EtWl0kLycsICR0b2tlbiApID8gdXJsZW5jb2RlKCAkdmFsdWUgKSA6ICR2YWx1ZTsKCQkJCSRyZXN1bHQgPSBwcmVnX3JlcGxhY2UoICcvJVtzZGFdL2knLCAkdmFsdWUsICRyZXN1bHQsIDEgKTsKCQkJfQoJCX0KCQkkcmVzdWx0ID0gc3RyX3JlcGxhY2UoICclJScsICclJywgJHJlc3VsdCApOwoKCQlpZiAoICRzdHJpbmcgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUXVvdGVkICkgewoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9RdW90ZWQoICRzdHJpbmctPnF1b3RlLCAkcmVzdWx0LCAkc3RyaW5nLT5lc2NhcGVkICk7CgkJfQoJCXJldHVybiBuZXcgTGVzc19UcmVlX1F1b3RlZCggJycsICRyZXN1bHQgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdW5pdCggJHZhbCwgJHVuaXQgPSBudWxsICkgewoJCWlmICggISggJHZhbCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gKSApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byB1bml0IG11c3QgYmUgYSBudW1iZXInIC4gKCAkdmFsIGluc3RhbmNlb2YgTGVzc19UcmVlX09wZXJhdGlvbiA/ICcuIEhhdmUgeW91IGZvcmdvdHRlbiBwYXJlbnRoZXNpcz8nIDogJy4nICkKCQkJKTsKCQl9CgoJCWlmICggJHVuaXQgKSB7CgkJCWlmICggJHVuaXQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfS2V5d29yZCApIHsKCQkJCSR1bml0ID0gJHVuaXQtPnZhbHVlOwoJCQl9IGVsc2UgewoJCQkJJHVuaXQgPSAkdW5pdC0+dG9DU1MoKTsKCQkJfQoJCX0gZWxzZSB7CgkJCSR1bml0ID0gIiI7CgkJfQoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJHZhbC0+dmFsdWUsICR1bml0ICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbnZlcnQoICR2YWwsICR1bml0ICkgewoJCXJldHVybiAkdmFsLT5jb252ZXJ0VG8oICR1bml0LT52YWx1ZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByb3VuZCggJG4sICRmID0gZmFsc2UgKSB7CgkJJGZyYWN0aW9uID0gMDsKCQlpZiAoICRmICE9PSBmYWxzZSApIHsKCQkJJGZyYWN0aW9uID0gJGYtPnZhbHVlOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5fbWF0aCggWyBMZXNzX1BhcnNlcjo6Y2xhc3MsICdyb3VuZCcgXSwgbnVsbCwgJG4sICRmcmFjdGlvbiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwaSgpIHsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oIE1fUEkgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbW9kKCAkYSwgJGIgKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkYS0+dmFsdWUgJSAkYi0+dmFsdWUsICRhLT51bml0ICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHBvdyggJHgsICR5ICkgewoJCWlmICggaXNfbnVtZXJpYyggJHggKSAmJiBpc19udW1lcmljKCAkeSApICkgewoJCQkkeCA9IG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkeCApOwoJCQkkeSA9IG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkeSApOwoJCX0gZWxzZWlmICggISggJHggaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICkgfHwgISggJHkgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICkgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggJ0FyZ3VtZW50cyBtdXN0IGJlIG51bWJlcnMnICk7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oIHBvdyggJHgtPnZhbHVlLCAkeS0+dmFsdWUgKSwgJHgtPnVuaXQgKTsKCX0KCgkvLyB2YXIgbWF0aEZ1bmN0aW9ucyA9IFt7bmFtZToiY2UgLi4uCglwdWJsaWMgZnVuY3Rpb24gY2VpbCggJG4gKSB7CgkJcmV0dXJuICR0aGlzLT5fbWF0aCggJ2NlaWwnLCBudWxsLCAkbiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmbG9vciggJG4gKSB7CgkJcmV0dXJuICR0aGlzLT5fbWF0aCggJ2Zsb29yJywgbnVsbCwgJG4gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc3FydCggJG4gKSB7CgkJcmV0dXJuICR0aGlzLT5fbWF0aCggJ3NxcnQnLCBudWxsLCAkbiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhYnMoICRuICkgewoJCXJldHVybiAkdGhpcy0+X21hdGgoICdhYnMnLCBudWxsLCAkbiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0YW4oICRuICkgewoJCXJldHVybiAkdGhpcy0+X21hdGgoICd0YW4nLCAnJywgJG4gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2luKCAkbiApIHsKCQlyZXR1cm4gJHRoaXMtPl9tYXRoKCAnc2luJywgJycsICRuICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvcyggJG4gKSB7CgkJcmV0dXJuICR0aGlzLT5fbWF0aCggJ2NvcycsICcnLCAkbiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhdGFuKCAkbiApIHsKCQlyZXR1cm4gJHRoaXMtPl9tYXRoKCAnYXRhbicsICdyYWQnLCAkbiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhc2luKCAkbiApIHsKCQlyZXR1cm4gJHRoaXMtPl9tYXRoKCAnYXNpbicsICdyYWQnLCAkbiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY29zKCAkbiApIHsKCQlyZXR1cm4gJHRoaXMtPl9tYXRoKCAnYWNvcycsICdyYWQnLCAkbiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gX21hdGgoICRmbiwgJHVuaXQsIC4uLiRhcmdzICkgewoJCWlmICggJGFyZ3NbMF0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICkgewoJCQlpZiAoICR1bml0ID09PSBudWxsICkgewoJCQkJJHVuaXQgPSAkYXJnc1swXS0+dW5pdDsKCQkJfSBlbHNlIHsKCQkJCSRhcmdzWzBdID0gJGFyZ3NbMF0tPnVuaWZ5KCk7CgkJCX0KCQkJJGFyZ3NbMF0gPSAoZmxvYXQpJGFyZ3NbMF0tPnZhbHVlOwoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRmbiggLi4uJGFyZ3MgKSwgJHVuaXQgKTsKCQl9IGVsc2VpZiAoIGlzX251bWVyaWMoICRhcmdzWzBdICkgKSB7CgkJCXJldHVybiAkZm4oIC4uLiRhcmdzICk7CgkJfSBlbHNlIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAibWF0aCBmdW5jdGlvbnMgdGFrZSBudW1iZXJzIGFzIHBhcmFtZXRlcnMiICk7CgkJfQoJfQoKCS8qKgoJICogQHBhcmFtIGJvb2wgJGlzTWluCgkgKiBAcGFyYW0gYXJyYXk8TGVzc19UcmVlPiAkYXJncwoJICogQHNlZSBsZXNzLTIuNS4zLmpzI21pbk1heAoJICovCglwcml2YXRlIGZ1bmN0aW9uIF9taW5NYXgoICRpc01pbiwgJGFyZ3MgKSB7CgkJJGFyZ19jb3VudCA9IGNvdW50KCAkYXJncyApOwoKCQlpZiAoICRhcmdfY291bnQgPCAxICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoICdvbmUgb3IgbW9yZSBhcmd1bWVudHMgcmVxdWlyZWQnICk7CgkJfQoKCQkkaiA9IG51bGw7CgkJJHVuaXRDbG9uZSA9IG51bGw7CgkJJHVuaXRTdGF0aWMgPSBudWxsOwoKCQkvLyBlbGVtcyBvbmx5IGNvbnRhaW5zIG9yaWdpbmFsIGFyZ3VtZW50IHZhbHVlcy4KCQkkb3JkZXIgPSBbXTsKCQkvLyBrZXkgaXMgdGhlIHVuaXQudG9TdHJpbmcoKSBmb3IgdW5pZmllZCB0cmVlLkRpbWVuc2lvbiB2YWx1ZXMsCgkJLy8gdmFsdWUgaXMgdGhlIGluZGV4IGludG8gdGhlIG9yZGVyIGFycmF5LgoJCSR2YWx1ZXMgPSBbXTsKCgkJZm9yICggJGkgPSAwOyAkaSA8ICRhcmdfY291bnQ7ICRpKysgKSB7CgkJCSRjdXJyZW50ID0gJGFyZ3NbJGldOwoJCQlpZiAoICEoICRjdXJyZW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiApICkgewoJCQkJaWYgKCAkYXJnc1skaV0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfSGFzVmFsdWVQcm9wZXJ0eSAmJiBpc19hcnJheSggJGFyZ3NbJGldLT52YWx1ZSApICkgewoJCQkJCSRhcmdzW10gPSAkYXJnc1skaV0tPnZhbHVlOwoJCQkJfQoJCQkJY29udGludWU7CgkJCX0KCQkJLy8gUGhhblR5cGVJbnZhbGlkRGltT2Zmc2V0IC0tIEZhbHNlIHBvc2l0aXZlLCBzYWZlIGFmdGVyIGNvbnRpbnVlIG9yIG5vbi1maXJzdCBpdGVyYXRpb25zCgkJCSdAcGhhbi12YXIgbm9uLWVtcHR5LWxpc3Q8TGVzc19UcmVlX0RpbWVuc2lvbj4gJG9yZGVyJzsKCgkJCWlmICggJGN1cnJlbnQtPnVuaXQtPnRvU3RyaW5nKCkgPT09ICcnICYmICEkdW5pdENsb25lICkgewoJCQkJJHRlbXAgPSBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGN1cnJlbnQtPnZhbHVlLCAkdW5pdENsb25lICk7CgkJCQkkY3VycmVudFVuaWZpZWQgPSAkdGVtcC0+dW5pZnkoKTsKCQkJfSBlbHNlIHsKCQkJCSRjdXJyZW50VW5pZmllZCA9ICRjdXJyZW50LT51bmlmeSgpOwoJCQl9CgoJCQlpZiAoICRjdXJyZW50VW5pZmllZC0+dW5pdC0+dG9TdHJpbmcoKSA9PT0gIiIgJiYgISR1bml0U3RhdGljICkgewoJCQkJJHVuaXQgPSAkdW5pdFN0YXRpYzsKCQkJfSBlbHNlIHsKCQkJCSR1bml0ID0gJGN1cnJlbnRVbmlmaWVkLT51bml0LT50b1N0cmluZygpOwoJCQl9CgoJCQlpZiAoICggJHVuaXQgIT09ICcnICYmICEkdW5pdFN0YXRpYyApIHx8ICggJHVuaXQgIT09ICcnICYmICRvcmRlclswXS0+dW5pZnkoKS0+dW5pdC0+dG9TdHJpbmcoKSA9PT0gIiIgKSApIHsKCQkJCSR1bml0U3RhdGljID0gJHVuaXQ7CgkJCX0KCgkJCWlmICggJHVuaXQgIT0gJycgJiYgISR1bml0Q2xvbmUgKSB7CgkJCQkkdW5pdENsb25lID0gJGN1cnJlbnQtPnVuaXQtPnRvU3RyaW5nKCk7CgkJCX0KCgkJCWlmICggaXNzZXQoICR2YWx1ZXNbJyddICkgJiYgJHVuaXQgIT09ICcnICYmICR1bml0ID09PSAkdW5pdFN0YXRpYyApIHsKCQkJCSRqID0gJHZhbHVlc1snJ107CgkJCX0gZWxzZWlmICggaXNzZXQoICR2YWx1ZXNbJHVuaXRdICkgKSB7CgkJCQkkaiA9ICR2YWx1ZXNbJHVuaXRdOwoJCQl9IGVsc2UgewoKCQkJCWlmICggJHVuaXRTdGF0aWMgJiYgJHVuaXQgIT09ICR1bml0U3RhdGljICkgewoJCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggJ2luY29tcGF0aWJsZSB0eXBlcycgKTsKCQkJCX0KCQkJCSR2YWx1ZXNbJHVuaXRdID0gY291bnQoICRvcmRlciApOwoJCQkJJG9yZGVyW10gPSAkY3VycmVudDsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQlpZiAoICRvcmRlclskal0tPnVuaXQtPnRvU3RyaW5nKCkgPT09ICIiICYmICR1bml0Q2xvbmUgKSB7CgkJCQkkdGVtcCA9IG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkb3JkZXJbJGpdLT52YWx1ZSwgJHVuaXRDbG9uZSApOwoJCQkJJHJlZmVyZW5jZVVuaWZpZWQgPSAkdGVtcC0+dW5pZnkoKTsKCQkJfSBlbHNlIHsKCQkJCSRyZWZlcmVuY2VVbmlmaWVkID0gJG9yZGVyWyRqXS0+dW5pZnkoKTsKCQkJfQoJCQlpZiAoICggJGlzTWluICYmICRjdXJyZW50VW5pZmllZC0+dmFsdWUgPCAkcmVmZXJlbmNlVW5pZmllZC0+dmFsdWUgKSB8fCAoICEkaXNNaW4gJiYgJGN1cnJlbnRVbmlmaWVkLT52YWx1ZSA+ICRyZWZlcmVuY2VVbmlmaWVkLT52YWx1ZSApICkgewoJCQkJJG9yZGVyWyRqXSA9ICRjdXJyZW50OwoJCQl9CgkJfQoKCQlpZiAoIGNvdW50KCAkb3JkZXIgKSA9PSAxICkgewoJCQlyZXR1cm4gJG9yZGVyWzBdOwoJCX0KCQkkYXJncyA9IFtdOwoJCWZvcmVhY2ggKCAkb3JkZXIgYXMgJGEgKSB7CgkJCSRhcmdzW10gPSAkYS0+dG9DU1MoKTsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAoICRpc01pbiA/ICdtaW4oJyA6ICdtYXgoJyApIC4gaW1wbG9kZSggKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gPyAnLCcgOiAnLCAnICksICRhcmdzICkgLiAnKScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbWluKCAuLi4kYXJncyApIHsKCQlyZXR1cm4gJHRoaXMtPl9taW5NYXgoIHRydWUsICRhcmdzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1heCggLi4uJGFyZ3MgKSB7CgkJcmV0dXJuICR0aGlzLT5fbWluTWF4KCBmYWxzZSwgJGFyZ3MgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0dW5pdCggJG4gKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAkbi0+dW5pdCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhcmdiKCAkY29sb3IgKSB7CgkJaWYgKCAhJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGFyZ2IgbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoICRjb2xvci0+dG9BUkdCKCkgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcGVyY2VudGFnZSggJG4gKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkbi0+dmFsdWUgKiAxMDAsICclJyApOwoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNjb2xvckZ1bmN0aW9ucy5jb2xvcgoJICogQHBhcmFtIExlc3NfVHJlZV9RdW90ZWR8TGVzc19UcmVlX0NvbG9yfExlc3NfVHJlZV9LZXl3b3JkICRjCgkgKiBAcmV0dXJuIExlc3NfVHJlZV9Db2xvcgoJICovCglwdWJsaWMgZnVuY3Rpb24gY29sb3IoICRjICkgewoJCWlmICggKCAkYyBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQgKSAmJgoJCQlwcmVnX21hdGNoKCAnL14jKFtBLUZhLWYwLTldezh9fFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezMsNH0pJC8nLCAkYy0+dmFsdWUgKQoJCSkgewoJCQkkdmFsdWUgPSBzdWJzdHIoICRjLT52YWx1ZSwgMSApOwoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvciggJHZhbHVlLCBudWxsLCAnIycgLiAkdmFsdWUgKTsKCQl9CgoJCS8vIHBocGNzOmlnbm9yZSBHZW5lcmljLkNvZGVBbmFseXNpcy5Bc3NpZ25tZW50SW5Db25kaXRpb24KCQlpZiAoICggJGMgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB8fCAoICRjID0gTGVzc19UcmVlX0NvbG9yOjpmcm9tS2V5d29yZCggJGMtPnZhbHVlICkgKSApIHsKCQkJJGMtPnZhbHVlID0gbnVsbDsKCQkJcmV0dXJuICRjOwoJCX0KCgkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAiYXJndW1lbnQgbXVzdCBiZSBhIGNvbG9yIGtleXdvcmQgb3IgM3w0fDZ8OCBkaWdpdCBoZXggZS5nLiAjRkZGIiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc3J1bGVzZXQoICRuICkgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0tleXdvcmQoICRuIGluc3RhbmNlb2YgTGVzc19UcmVlX0RldGFjaGVkUnVsZXNldCA/ICd0cnVlJyA6ICdmYWxzZScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNjb2xvciggJG4gKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfS2V5d29yZCggJG4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgPyAndHJ1ZScgOiAnZmFsc2UnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzbnVtYmVyKCAkbiApIHsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9LZXl3b3JkKCAkbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gPyAndHJ1ZScgOiAnZmFsc2UnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzc3RyaW5nKCAkbiApIHsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9LZXl3b3JkKCAkbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQgPyAndHJ1ZScgOiAnZmFsc2UnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlza2V5d29yZCggJG4gKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfS2V5d29yZCggJG4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfS2V5d29yZCA/ICd0cnVlJyA6ICdmYWxzZScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXN1cmwoICRuICkgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0tleXdvcmQoICRuIGluc3RhbmNlb2YgTGVzc19UcmVlX1VybCA/ICd0cnVlJyA6ICdmYWxzZScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNwaXhlbCggJG4gKSB7CgkJcmV0dXJuICR0aGlzLT5pc3VuaXQoICRuLCAncHgnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzcGVyY2VudGFnZSggJG4gKSB7CgkJcmV0dXJuICR0aGlzLT5pc3VuaXQoICRuLCAnJScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNlbSggJG4gKSB7CgkJcmV0dXJuICR0aGlzLT5pc3VuaXQoICRuLCAnZW0nICk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlICRuCgkgKiBAcGFyYW0gTGVzc19UcmVlfHN0cmluZyAkdW5pdAoJICovCglwdWJsaWMgZnVuY3Rpb24gaXN1bml0KCAkbiwgJHVuaXQgKSB7CgkJaWYgKCAkdW5pdCBpbnN0YW5jZW9mIExlc3NfVHJlZV9LZXl3b3JkIHx8ICR1bml0IGluc3RhbmNlb2YgTGVzc19UcmVlX1F1b3RlZCApIHsKCQkJJHVuaXQgPSAkdW5pdC0+dmFsdWU7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9LZXl3b3JkKCAkbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gJiYgJG4tPnVuaXQtPmlzKCAkdW5pdCApID8gJ3RydWUnIDogJ2ZhbHNlJyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0aW50KCAkY29sb3IsICRhbW91bnQgPSBudWxsICkgewoJCXJldHVybiAkdGhpcy0+bWl4KCAkdGhpcy0+cmdiKCAyNTUsIDI1NSwgMjU1ICksICRjb2xvciwgJGFtb3VudCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzaGFkZSggJGNvbG9yLCAkYW1vdW50ID0gbnVsbCApIHsKCQlyZXR1cm4gJHRoaXMtPm1peCggJHRoaXMtPnJnYiggMCwgMCwgMCApLCAkY29sb3IsICRhbW91bnQgKTsKCX0KCgkvKioKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjZ2V0SXRlbXNGcm9tTm9kZQoJICovCglwcml2YXRlIGZ1bmN0aW9uIGdldEl0ZW1zRnJvbU5vZGUoIExlc3NfVHJlZSAkbm9kZSApIHsKCQkvLyBoYW5kbGUgbm9uLWFycmF5IHZhbHVlcyBhcyBhbiBhcnJheSBvZiBsZW5ndGggMQoJCS8vIHJldHVybiAndW5kZWZpbmVkJyBpZiBpbmRleCBpcyBpbnZhbGlkCgkJLy8KCQkvLyBOT1RFOiBMZXNzLmpzIHVzZXMgZHVjay10eXBpbmcgYGlzQXJyYXkobm9kZS52YWx1ZSlgLCB3aGljaCB3b3VsZCBjYXVzZSB3YXJuaW5ncyBpbiBQSFAsCgkJLy8gYW5kIHBvdGVudGlhbGx5IGJ1Z3MgZm9yIExlc3NfVHJlZSBjbGFzc2VzIHdpdGggYSAkdmFsdWUgdGhhdCBpcyBvbmx5IHNvbWV0aW1lcyBhbiBhcnJheS4KCQkvLyBJbnN0ZWFkLCBjaGVjayBmb3IgTGVzc19UcmVlIGNsYXNzZXMgdGhhdCBhbHdheXMgaW1wbGVtZW50IGFuIGFycmF5ICR2YWx1ZS4KCQlyZXR1cm4gKCAkbm9kZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uIHx8ICRub2RlIGluc3RhbmNlb2YgTGVzc19UcmVlX1ZhbHVlICkKCQkJPyAkbm9kZS0+dmFsdWUKCQkJOiBbICRub2RlIF07Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI19TRUxGCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfc2VsZiggJGFyZ3MgKSB7CgkJcmV0dXJuICRhcmdzOwoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNleHRyYWN0CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBleHRyYWN0KCAkdmFsdWVzLCAkaW5kZXggKSB7CgkJLy8gKDEtYmFzZWQgaW5kZXgpCgkJJGluZGV4ID0gKGludCkkaW5kZXgtPnZhbHVlIC0gMTsKCQlyZXR1cm4gJHRoaXMtPmdldEl0ZW1zRnJvbU5vZGUoICR2YWx1ZXMgKVsgJGluZGV4IF0gPz8gbnVsbDsKCX0KCgkvKioKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjbGVuZ3RoCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBsZW5ndGgoICR2YWx1ZXMgKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCBjb3VudCggJHRoaXMtPmdldEl0ZW1zRnJvbU5vZGUoICR2YWx1ZXMgKSApICk7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjZGF0YS11cmkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGRhdGF1cmkoICRtaW1ldHlwZU5vZGUsICRmaWxlUGF0aE5vZGUgPSBudWxsICkgewoJCWlmICggISRmaWxlUGF0aE5vZGUgKSB7CgkJCSRmaWxlUGF0aE5vZGUgPSAkbWltZXR5cGVOb2RlOwoJCQkkbWltZXR5cGVOb2RlID0gbnVsbDsKCQl9CgoJCSRmaWxlUGF0aCA9ICRmaWxlUGF0aE5vZGUtPnZhbHVlOwoJCSRtaW1ldHlwZSA9ICggJG1pbWV0eXBlTm9kZSA/ICRtaW1ldHlwZU5vZGUtPnZhbHVlIDogbnVsbCApOwoKCQkkZmlsZVBhdGggPSBzdHJfcmVwbGFjZSggJ1xcJywgJy8nLCAkZmlsZVBhdGggKTsKCQkkZnJhZ21lbnRTdGFydCA9IHN0cnBvcyggJGZpbGVQYXRoLCAnIycgKTsKCQkkZnJhZ21lbnQgPSAnJzsKCQlpZiAoICRmcmFnbWVudFN0YXJ0ICE9PSBmYWxzZSApIHsKCQkJJGZyYWdtZW50ID0gc3Vic3RyKCAkZmlsZVBhdGgsICRmcmFnbWVudFN0YXJ0ICk7CgkJCSRmaWxlUGF0aCA9IHN1YnN0ciggJGZpbGVQYXRoLCAwLCAkZnJhZ21lbnRTdGFydCApOwoJCX0KCgkJWyAkZmlsZVBhdGggXSA9IExlc3NfRmlsZU1hbmFnZXI6OmdldEZpbGVQYXRoKCAkZmlsZVBhdGgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8gKTsKCgkJLy8gZGV0ZWN0IHRoZSBtaW1ldHlwZSBpZiBub3QgZ2l2ZW4KCQlpZiAoICEkbWltZXR5cGUgKSB7CgoJCQkkbWltZXR5cGUgPSBMZXNzX01pbWU6Omxvb2t1cCggJGZpbGVQYXRoICk7CgoJCQlpZiAoICRtaW1ldHlwZSA9PT0gImltYWdlL3N2Zyt4bWwiICkgewoJCQkJJHVzZUJhc2U2NCA9IGZhbHNlOwoJCQl9IGVsc2UgewoJCQkJJGNoYXJzZXQgPSBMZXNzX01pbWU6OmNoYXJzZXRzX2xvb2t1cCggJG1pbWV0eXBlICk7CgkJCQkkdXNlQmFzZTY0ID0gIWluX2FycmF5KCAkY2hhcnNldCwgWyAnVVMtQVNDSUknLCAnVVRGLTgnIF0gKTsKCQkJfQoJCQlpZiAoICR1c2VCYXNlNjQgKSB7CgkJCQkkbWltZXR5cGUgLj0gJztiYXNlNjQnOwoJCQl9CgoJCX0gZWxzZSB7CgkJCSR1c2VCYXNlNjQgPSBwcmVnX21hdGNoKCAnLztiYXNlNjQkLycsICRtaW1ldHlwZSApOwoJCX0KCgkJaWYgKCAhZmlsZV9leGlzdHMoICRmaWxlUGF0aCApICkgewoJCQkkZmFsbGJhY2sgPSBuZXcgTGVzc19UcmVlX1VybCggKCAkZmlsZVBhdGhOb2RlID86ICRtaW1ldHlwZU5vZGUgKSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCQlyZXR1cm4gJGZhbGxiYWNrLT5jb21waWxlKCAkdGhpcy0+ZW52ICk7CgkJfQoJCSRidWYgPSBAZmlsZV9nZXRfY29udGVudHMoICRmaWxlUGF0aCApOwoKCQkkYnVmID0gJHVzZUJhc2U2NCA/IGJhc2U2NF9lbmNvZGUoICRidWYgKSA6IHJhd3VybGVuY29kZSggJGJ1ZiApOwoJCSR1cmwgPSAiZGF0YToiIC4gJG1pbWV0eXBlIC4gJywnIC4gJGJ1ZiAuICRmcmFnbWVudDsKCgkJLy8gSUU4IGNhbm5vdCBoYW5kbGUgYSBkYXRhLXVyaSBsYXJnZXIgdGhhbiAzMktCLiBJZiB0aGlzIGlzIGV4Y2VlZGVkCgkJLy8gYW5kIHRoZSAtLWllQ29tcGF0IGZsYWcgaXMgZW5hYmxlZCwgcmV0dXJuIGEgbm9ybWFsIHVybCgpIGluc3RlYWQuCgkJJERBVEFfVVJJX01BWF9LQiA9IDMyNzY4OwoJCWlmICggc3RybGVuKCAkYnVmICkgPj0gJERBVEFfVVJJX01BWF9LQiApIHsKCQkJLy8gTk9URTogTGVzcy5qcyBjaGVja3MgZm9yIGllQ29tcGF0IGhlcmUgKHRydWUgYnkgZGVmYXVsdCkuCgkJCS8vIEZvciBMZXNzLnBocCwgaWVDb21wYXQgaXMgbm90IGNvbmZpZ3VyYWJsZSwgYW5kIGFsd2F5cyB0cnVlLgoJCQkkZmFsbGJhY2sgPSBuZXcgTGVzc19UcmVlX1VybCggKCAkZmlsZVBhdGhOb2RlID86ICRtaW1ldHlwZU5vZGUgKSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCQlyZXR1cm4gJGZhbGxiYWNrLT5jb21waWxlKCAkdGhpcy0+ZW52ICk7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9VcmwoIG5ldyBMZXNzX1RyZWVfUXVvdGVkKCAnIicgLiAkdXJsIC4gJyInLCAkdXJsLCBmYWxzZSApICk7Cgl9CgoJLy8gc3ZnLWdyYWRpZW50CglwdWJsaWMgZnVuY3Rpb24gc3ZnZ3JhZGllbnQoICRkaXJlY3Rpb24sIC4uLiRzdG9wcyApIHsKCQkkdGhyb3dfbWVzc2FnZSA9ICdzdmctZ3JhZGllbnQgZXhwZWN0cyBkaXJlY3Rpb24sIHN0YXJ0X2NvbG9yIFtzdGFydF9wb3NpdGlvbl0sIFtjb2xvciBwb3NpdGlvbixdLi4uLCBlbmRfY29sb3IgW2VuZF9wb3NpdGlvbl0nOwoKCQlpZiAoIGNvdW50KCAkc3RvcHMgKSA8IDIgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggJHRocm93X21lc3NhZ2UgKTsKCQl9CgoJCSRncmFkaWVudFR5cGUgPSAnbGluZWFyJzsKCQkkcmVjdGFuZ2xlRGltZW5zaW9uID0gJ3g9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiJzsKCQkkZGlyZWN0aW9uVmFsdWUgPSAkZGlyZWN0aW9uLT50b0NTUygpOwoKCQlzd2l0Y2ggKCAkZGlyZWN0aW9uVmFsdWUgKSB7CgkJCWNhc2UgInRvIGJvdHRvbSI6CgkJCQkkZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byByaWdodCI6CgkJCQkkZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byBib3R0b20gcmlnaHQiOgoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byB0b3AgcmlnaHQiOgoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjEwMCUiIHgyPSIxMDAlIiB5Mj0iMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJlbGxpcHNlIjoKCQkJY2FzZSAiZWxsaXBzZSBhdCBjZW50ZXIiOgoJCQkJJGdyYWRpZW50VHlwZSA9ICJyYWRpYWwiOwoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ2N4PSI1MCUiIGN5PSI1MCUiIHI9Ijc1JSInOwoJCQkJJHJlY3RhbmdsZURpbWVuc2lvbiA9ICd4PSItNTAiIHk9Ii01MCIgd2lkdGg9IjEwMSIgaGVpZ2h0PSIxMDEiJzsKCQkJCWJyZWFrOwoJCQlkZWZhdWx0OgoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJCSJzdmctZ3JhZGllbnQgZGlyZWN0aW9uIG11c3QgYmUgJ3RvIGJvdHRvbScsICd0byByaWdodCcsICd0byBib3R0b20gcmlnaHQnLCAndG8gdG9wIHJpZ2h0JyBvciAnZWxsaXBzZSBhdCBjZW50ZXInIgoJCQkJKTsKCQl9CgoJCSRyZXR1cm5lciA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JyAuCgkJCSc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMSAxIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4nIC4KCQkJJzwnIC4gJGdyYWRpZW50VHlwZSAuICdHcmFkaWVudCBpZD0iZ3JhZGllbnQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiAnIC4gJGdyYWRpZW50RGlyZWN0aW9uU3ZnIC4gJz4nOwoKCQlmb3IgKCAkaSA9IDA7ICRpIDwgY291bnQoICRzdG9wcyApOyAkaSsrICkgewoKCQkJaWYgKCAkc3RvcHNbJGldIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gKSB7CgkJCQkkY29sb3IgPSAkc3RvcHNbJGldLT52YWx1ZVswXTsKCQkJCSRwb3NpdGlvbiA9ICRzdG9wc1skaV0tPnZhbHVlWzFdOwoJCQl9IGVsc2UgewoJCQkJJGNvbG9yID0gJHN0b3BzWyRpXTsKCQkJCSRwb3NpdGlvbiA9IG51bGw7CgkJCX0KCgkJCWlmICggISggJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgfHwKCQkJCSggISggKCAkaSA9PT0gMCB8fCAkaSArIDEgPT09IGNvdW50KCAkc3RvcHMgKSApICYmICRwb3NpdGlvbiA9PT0gbnVsbCApICYmICEoICRwb3NpdGlvbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gKSApCgkJCSkgewoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAkdGhyb3dfbWVzc2FnZSApOwoJCQl9CgkJCWlmICggJHBvc2l0aW9uICkgewoJCQkJJHBvc2l0aW9uVmFsdWUgPSAkcG9zaXRpb24tPnRvQ1NTKCk7CgkJCX0gZWxzZWlmICggJGkgPT09IDAgKSB7CgkJCQkkcG9zaXRpb25WYWx1ZSA9ICcwJSc7CgkJCX0gZWxzZSB7CgkJCQkkcG9zaXRpb25WYWx1ZSA9ICcxMDAlJzsKCQkJfQoJCQkkYWxwaGEgPSAkY29sb3ItPmFscGhhOwoJCQkkcmV0dXJuZXIgLj0gJzxzdG9wIG9mZnNldD0iJyAuICRwb3NpdGlvblZhbHVlIC4gJyIgc3RvcC1jb2xvcj0iJyAuICRjb2xvci0+dG9SR0IoKSAuICciJyAuCgkJCQkoICRhbHBoYSA8IDEgPyAnIHN0b3Atb3BhY2l0eT0iJyAuICRhbHBoYSAuICciJyA6ICcnICkgLiAnLz4nOwoJCX0KCgkJJHJldHVybmVyIC49ICc8LycgLiAkZ3JhZGllbnRUeXBlIC4gJ0dyYWRpZW50PjxyZWN0ICcgLiAkcmVjdGFuZ2xlRGltZW5zaW9uIC4gJyBmaWxsPSJ1cmwoI2dyYWRpZW50KSIgLz48L3N2Zz4nOwoKCQkkcmV2ZXJ0ID0gWwoJCQknJTIxJyA9PiAnIScsCgkJCSclMkEnID0+ICcqJywKCQkJJyUyNycgPT4gIiciLAoJCQknJTI2JyA9PiAnJicsCgkJCSclMkMnID0+ICcsJywKCQkJJyU0MCcgPT4gJ0AnLAoJCQknJTJCJyA9PiAnKycsCgkJCSclMjQnID0+ICckJywKCQkJJyUyOCcgPT4gJygnLAoJCQknJTI5JyA9PiAnKScKCQldOwoJCSRyZXR1cm5lciA9IHN0cnRyKCByYXd1cmxlbmNvZGUoICRyZXR1cm5lciApLCAkcmV2ZXJ0ICk7CgoJCSRyZXR1cm5lciA9ICJkYXRhOmltYWdlL3N2Zyt4bWwsIiAuICRyZXR1cm5lcjsKCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVXJsKCBuZXcgTGVzc19UcmVlX1F1b3RlZCggIiciIC4gJHJldHVybmVyIC4gIiciLCAkcmV0dXJuZXIsIGZhbHNlICkgKTsKCX0KCgkvKioKCSAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9ibG9iL3YyLjUuMy9saWIvbGVzcy1ub2RlL2ltYWdlLXNpemUuanMKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBnZXRJbWFnZVNpemUoICRmaWxlUGF0aE5vZGUgKSB7CgkJJGZpbGVQYXRoID0gJGZpbGVQYXRoTm9kZS0+dmFsdWU7CgoJCSRmaWxlUGF0aCA9IHN0cl9yZXBsYWNlKCAnXFwnLCAnLycsICRmaWxlUGF0aCApOwoKCQlbICRmaWxlUGF0aCBdID0gTGVzc19GaWxlTWFuYWdlcjo6Z2V0RmlsZVBhdGgoICRmaWxlUGF0aCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoKCQkkbWltZXR5cGUgPSBMZXNzX01pbWU6Omxvb2t1cCggJGZpbGVQYXRoICk7CgoJCWlmICggJG1pbWV0eXBlID09PSAiaW1hZ2Uvc3ZnK3htbCIgKSB7CgkJCXJldHVybiAkdGhpcy0+Z2V0U3ZnU2l6ZSggJGZpbGVQYXRoICk7CgkJfQoKCQlbICRpbWFnZXdpZHRoLCAkaW1hZ2VoZWlnaHQgXSA9IGdldGltYWdlc2l6ZSggJGZpbGVQYXRoICk7CgoJCXJldHVybiBbICJ3aWR0aCIgPT4gJGltYWdld2lkdGgsICJoZWlnaHQiID0+ICRpbWFnZWhlaWdodCBdOwoJfQoKCS8qKgoJICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW1hZ2Utc2l6ZS9pbWFnZS1zaXplL2Jsb2IvbWFpbi9saWIvdHlwZXMvc3ZnLnRzCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gZ2V0U3ZnU2l6ZSggc3RyaW5nICRmaWxlUGF0aE5vZGUgKSB7CgkJJHhtbCAgICAgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoIGZpbGVfZ2V0X2NvbnRlbnRzKCAkZmlsZVBhdGhOb2RlICkgKTsKCQkkYXR0cmlidXRlcyA9ICR4bWwtPmF0dHJpYnV0ZXMoKTsKCQkkd2lkdGggICAgICAgICAgPSAoc3RyaW5nKSRhdHRyaWJ1dGVzLT53aWR0aDsKCQkkaGVpZ2h0ICAgICAgICAgPSAoc3RyaW5nKSRhdHRyaWJ1dGVzLT5oZWlnaHQ7CgoJCXJldHVybiBbICJ3aWR0aCIgPT4gJHdpZHRoLCAiaGVpZ2h0IiA9PiAkaGVpZ2h0IF07Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGltYWdlc2l6ZSggJGZpbGVQYXRoTm9kZSA9IG51bGwgKSB7CgkJJGltYWdlc2l6ZSA9ICR0aGlzLT5nZXRJbWFnZVNpemUoICRmaWxlUGF0aE5vZGUgKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9FeHByZXNzaW9uKCBbCgkJCW5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkaW1hZ2VzaXplWyJ3aWR0aCJdLCAicHgiICksCgkJCW5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkaW1hZ2VzaXplWyJoZWlnaHQiXSwgInB4IiApCgkJXSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpbWFnZXdpZHRoKCAkZmlsZVBhdGhOb2RlID0gbnVsbCApIHsKCQkkaW1hZ2VzaXplID0gJHRoaXMtPmdldEltYWdlU2l6ZSggJGZpbGVQYXRoTm9kZSApOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGltYWdlc2l6ZVsid2lkdGgiXSwgInB4IiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpbWFnZWhlaWdodCggJGZpbGVQYXRoTm9kZSA9IG51bGwgKSB7CgkJJGltYWdlc2l6ZSA9ICR0aGlzLT5nZXRJbWFnZVNpemUoICRmaWxlUGF0aE5vZGUgKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRpbWFnZXNpemVbImhlaWdodCJdLCAicHgiICk7Cgl9CgoJLy8gQ29sb3IgQmxlbmRpbmcKCS8vIHJlZjogaHR0cHM6Ly93d3cudzMub3JnL1RSL2NvbXBvc2l0aW5nLTEvCglwdWJsaWMgZnVuY3Rpb24gY29sb3JCbGVuZCggJG1vZGUsICRjb2xvcjEsICRjb2xvcjIgKSB7CgkJLy8gYmFja2Ryb3AKCQkkYWIgPSAkY29sb3IxLT5hbHBoYTsKCQkvLyBzb3VyY2UKCQkkYXMgPSAkY29sb3IyLT5hbHBoYTsKCQkkcmVzdWx0ID0gW107CgoJCSRhciA9ICRhcyArICRhYiAqICggMSAtICRhcyApOwoJCWZvciAoICRpID0gMDsgJGkgPCAzOyAkaSsrICkgewoJCQkkY2IgPSAkY29sb3IxLT5yZ2JbJGldIC8gMjU1OwoJCQkkY3MgPSAkY29sb3IyLT5yZ2JbJGldIC8gMjU1OwoJCQkkY3IgPSAkbW9kZSggJGNiLCAkY3MgKTsKCQkJaWYgKCAkYXIgKSB7CgkJCQkkY3IgPSAoICRhcyAqICRjcyArICRhYiAqICggJGNiIC0gJGFzICogKCAkY2IgKyAkY3MgLSAkY3IgKSApICkgLyAkYXI7CgkJCX0KCQkJJHJlc3VsdFskaV0gPSAkY3IgKiAyNTU7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvciggJHJlc3VsdCwgJGFyICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG11bHRpcGx5KCAkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBtdWx0aXBseSBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG11bHRpcGx5IG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+Y29sb3JCbGVuZCggWyAkdGhpcywgJ2NvbG9yQmxlbmRNdWx0aXBseScgXSwgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZE11bHRpcGx5KCAkY2IsICRjcyApIHsKCQlyZXR1cm4gJGNiICogJGNzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzY3JlZW4oICRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApIHsKCQlpZiAoICEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNjcmVlbiBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNjcmVlbiBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIFsgJHRoaXMsICdjb2xvckJsZW5kU2NyZWVuJyBdLCAkY29sb3IxLCAkY29sb3IyICk7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBjb2xvckJsZW5kU2NyZWVuKCAkY2IsICRjcyApIHsKCQlyZXR1cm4gJGNiICsgJGNzIC0gJGNiICogJGNzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBvdmVybGF5KCAkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBvdmVybGF5IG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgkJaWYgKCAhJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gb3ZlcmxheSBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIFsgJHRoaXMsICdjb2xvckJsZW5kT3ZlcmxheScgXSwgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZE92ZXJsYXkoICRjYiwgJGNzICkgewoJCSRjYiAqPSAyOwoJCXJldHVybiAoICRjYiA8PSAxICkKCQkJPyAkdGhpcy0+Y29sb3JCbGVuZE11bHRpcGx5KCAkY2IsICRjcyApCgkJCTogJHRoaXMtPmNvbG9yQmxlbmRTY3JlZW4oICRjYiAtIDEsICRjcyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzb2Z0bGlnaHQoICRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApIHsKCQlpZiAoICEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNvZnRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNvZnRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIFsgJHRoaXMsICdjb2xvckJsZW5kU29mdGxpZ2h0JyBdLCAkY29sb3IxLCAkY29sb3IyICk7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBjb2xvckJsZW5kU29mdGxpZ2h0KCAkY2IsICRjcyApIHsKCQkkZCA9IDE7CgkJJGUgPSAkY2I7CgkJaWYgKCAkY3MgPiAwLjUgKSB7CgkJCSRlID0gMTsKCQkJJGQgPSAoICRjYiA+IDAuMjUgKSA/IHNxcnQoICRjYiApCgkJCQk6ICggKCAxNiAqICRjYiAtIDEyICkgKiAkY2IgKyA0ICkgKiAkY2I7CgkJfQoJCXJldHVybiAkY2IgLSAoIDEgLSAyICogJGNzICkgKiAkZSAqICggJGQgLSAkY2IgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaGFyZGxpZ2h0KCAkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBoYXJkbGlnaHQgbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCQlpZiAoICEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIHNlY29uZCBhcmd1bWVudCB0byBoYXJkbGlnaHQgbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBbICR0aGlzLCAnY29sb3JCbGVuZEhhcmRsaWdodCcgXSwgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZEhhcmRsaWdodCggJGNiLCAkY3MgKSB7CgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kT3ZlcmxheSggJGNzLCAkY2IgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZGlmZmVyZW5jZSggJGNvbG9yMSA9IG51bGwsICRjb2xvcjIgPSBudWxsICkgewoJCWlmICggISRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgZmlyc3QgYXJndW1lbnQgdG8gZGlmZmVyZW5jZSBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGRpZmZlcmVuY2UgbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBbICR0aGlzLCAnY29sb3JCbGVuZERpZmZlcmVuY2UnIF0sICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGNvbG9yQmxlbmREaWZmZXJlbmNlKCAkY2IsICRjcyApIHsKCQlyZXR1cm4gYWJzKCAkY2IgLSAkY3MgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZXhjbHVzaW9uKCAkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBleGNsdXNpb24gbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCQlpZiAoICEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIHNlY29uZCBhcmd1bWVudCB0byBleGNsdXNpb24gbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBbICR0aGlzLCAnY29sb3JCbGVuZEV4Y2x1c2lvbicgXSwgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZEV4Y2x1c2lvbiggJGNiLCAkY3MgKSB7CgkJcmV0dXJuICRjYiArICRjcyAtIDIgKiAkY2IgKiAkY3M7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGF2ZXJhZ2UoICRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApIHsKCQlpZiAoICEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGF2ZXJhZ2UgbXVzdCBiZSBhIGNvbG9yJyAuICggJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycgKQoJCQkpOwoJCX0KCQlpZiAoICEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknVGhlIHNlY29uZCBhcmd1bWVudCB0byBhdmVyYWdlIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+Y29sb3JCbGVuZCggWyAkdGhpcywgJ2NvbG9yQmxlbmRBdmVyYWdlJyBdLCAkY29sb3IxLCAkY29sb3IyICk7Cgl9CgoJLy8gbm9uLXczYyBmdW5jdGlvbnM6Cglwcml2YXRlIGZ1bmN0aW9uIGNvbG9yQmxlbmRBdmVyYWdlKCAkY2IsICRjcyApIHsKCQlyZXR1cm4gKCAkY2IgKyAkY3MgKSAvIDI7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG5lZ2F0aW9uKCAkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwgKSB7CgkJaWYgKCAhJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBuZWdhdGlvbiBtdXN0IGJlIGEgY29sb3InIC4gKCAkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJyApCgkJCSk7CgkJfQoJCWlmICggISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCSdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG5lZ2F0aW9uIG11c3QgYmUgYSBjb2xvcicgLiAoICRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnICkKCQkJKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+Y29sb3JCbGVuZCggWyAkdGhpcywgJ2NvbG9yQmxlbmROZWdhdGlvbicgXSwgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZE5lZ2F0aW9uKCAkY2IsICRjcyApIHsKCQlyZXR1cm4gMSAtIGFicyggJGNiICsgJGNzIC0gMSApOwoJfQoKCS8vIH4gRW5kIG9mIENvbG9yIEJsZW5kaW5nCgoJcHVibGljIGZ1bmN0aW9uIGlmKCAkY29uZGl0aW9uLCAkdHJ1ZVZhbHVlLCAkZmFsc2VWYWx1ZSA9IG51bGwgKSB7CgkJcmV0dXJuICRjb25kaXRpb24tPmNvbXBpbGUoICR0aGlzLT5lbnYgKSA/ICR0cnVlVmFsdWUtPmNvbXBpbGUoICR0aGlzLT5lbnYgKQoJCSAgOiAoICRmYWxzZVZhbHVlID8gJGZhbHNlVmFsdWUtPmNvbXBpbGUoICR0aGlzLT5lbnYgKSA6IG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAnJyApICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGJvb2xlYW4oICRjb25kaXRpb24gKSB7CgkJcmV0dXJuICRjb25kaXRpb24gPyBuZXcgTGVzc19UcmVlX0tleXdvcmQoICd0cnVlJyApIDogbmV3IExlc3NfVHJlZV9LZXl3b3JkKCAnZmFsc2UnICk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/ImportVisitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX0ltcG9ydFZpc2l0b3IgZXh0ZW5kcyBMZXNzX1Zpc2l0b3IgewoKCS8qKiBAdmFyIExlc3NfRW52aXJvbm1lbnQgKi8KCXB1YmxpYyAkZW52OwoJLyoqIEB2YXIgYXJyYXk8YXJyYXl7ZnVuY3Rpb246c3RyaW5nLGFyZ3M6YXJyYXl9PiAqLwoJcHVibGljICR2YXJpYWJsZUltcG9ydHMgPSBbXTsKCS8qKiBAdmFyIGFycmF5PHN0cmluZyx0cnVlPiAqLwoJcHVibGljICRyZWN1cnNpb25EZXRlY3RvciA9IFtdOwoKCS8qKiBAdmFyIGludCAqLwoJcHVibGljICRfY3VycmVudERlcHRoID0gMDsKCS8qKiBAdmFyIG1peGVkICovCglwdWJsaWMgJGltcG9ydEl0ZW07CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkZW52ICkgewoJCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsKCQkvLyBOT1RFOiBVcHN0cmVhbSBjcmVhdGVzIGEgbmV3IGVudmlyb25tZW50L2NvbnRleHQgaGVyZS4gV2UgcmUtdXNlIHRoZSBtYWluIG9uZSBpbnN0ZWFkLgoJCS8vIFRoaXMgbWFrZXMgTGVzc19FbnZpcm9ubWVudC0+YWRkUGFyc2VkRmlsZSgpIGVhc2llciB0byBzdXBwb3J0ICh3aGljaCBpcyBjdXN0b20gdG8gTGVzcy5waHApCgkJJHRoaXMtPmVudiA9ICRlbnY7CgkJLy8gTk9URTogVXBzdHJlYW0gYGltcG9ydENvdW50YCBpcyBub3QgaGVyZSwgYXBwZWFycyB1bnVzZWQuCgkJLy8gTk9URTogVXBzdHJlYW0gYGlzRmluaXNoZWRgIGlzIG5vdCBoZXJlLCB3ZSBzaW1wbHkgY2FsbCB0cnlSdW4oKSBvbmNlIGF0IHRoZSBlbmQuCgkJLy8gTk9URTogVXBzdHJlYW0gYG9uY2VGaWxlRGV0ZWN0aW9uTWFwYCBpcyBpbnN0ZWFkIExlc3NfRW52aXJvbm1lbnQtPmlzRmlsZVBhcnNlZC4KCQkvLyBOT1RFOiBVcHN0cmVhbSBgSW1wb3J0U2VxdWVuY2VyYCBsb2dpYyBpcyBkaXJlY3RseSBpbnNpZGUgSW1wb3J0VmlzaXRvciBmb3Igc2ltcGxpY2l0eS4KCX0KCglwdWJsaWMgZnVuY3Rpb24gcnVuKCAkcm9vdCApIHsKCQkkdGhpcy0+dmlzaXRPYmooICRyb290ICk7CgkJJHRoaXMtPnRyeVJ1bigpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEltcG9ydCggJGltcG9ydE5vZGUsICYkdmlzaXREZWVwZXIgKSB7CgkJJGlubGluZUNTUyA9ICRpbXBvcnROb2RlLT5vcHRpb25zWydpbmxpbmUnXTsKCgkJaWYgKCAhJGltcG9ydE5vZGUtPmNzcyB8fCAkaW5saW5lQ1NTICkgewoKCQkJJGVudiA9ICR0aGlzLT5lbnYtPmNsb25lKCk7CgkJCSRpbXBvcnRQYXJlbnQgPSAkZW52LT5mcmFtZXNbMF07CgkJCWlmICggJGltcG9ydE5vZGUtPmlzVmFyaWFibGVJbXBvcnQoKSApIHsKCQkJCSR0aGlzLT5hZGRWYXJpYWJsZUltcG9ydCggWwoJCQkJCSdmdW5jdGlvbicgPT4gJ3Byb2Nlc3NJbXBvcnROb2RlJywKCQkJCQknYXJncycgPT4gWyAkaW1wb3J0Tm9kZSwgJGVudiwgJGltcG9ydFBhcmVudCBdCgkJCQldICk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+cHJvY2Vzc0ltcG9ydE5vZGUoICRpbXBvcnROb2RlLCAkZW52LCAkaW1wb3J0UGFyZW50ICk7CgkJCX0KCQl9CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHByb2Nlc3NJbXBvcnROb2RlKCAkaW1wb3J0Tm9kZSwgJGVudiwgJiRpbXBvcnRQYXJlbnQgKSB7CgkJJGV2YWxkSW1wb3J0Tm9kZSA9ICRpbmxpbmVDU1MgPSAkaW1wb3J0Tm9kZS0+b3B0aW9uc1snaW5saW5lJ107CgoJCXRyeSB7CgkJCSRldmFsZEltcG9ydE5vZGUgPSAkaW1wb3J0Tm9kZS0+Y29tcGlsZUZvckltcG9ydCggJGVudiApOwoJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgKSB7CgkJCSRpbXBvcnROb2RlLT5jc3MgPSB0cnVlOwoJCX0KCgkJaWYgKCAkZXZhbGRJbXBvcnROb2RlICYmICggISRldmFsZEltcG9ydE5vZGUtPmNzcyB8fCAkaW5saW5lQ1NTICkgKSB7CgoJCQlpZiAoICRpbXBvcnROb2RlLT5vcHRpb25zWydtdWx0aXBsZSddICkgewoJCQkJJGVudi0+aW1wb3J0TXVsdGlwbGUgPSB0cnVlOwoJCQl9CgoJCQkkdHJ5QXBwZW5kTGVzc0V4dGVuc2lvbiA9ICRldmFsZEltcG9ydE5vZGUtPmNzcyA9PT0gbnVsbDsKCgkJCWZvciAoICRpID0gMDsgJGkgPCBjb3VudCggJGltcG9ydFBhcmVudC0+cnVsZXMgKTsgJGkrKyApIHsKCQkJCWlmICggJGltcG9ydFBhcmVudC0+cnVsZXNbJGldID09PSAkaW1wb3J0Tm9kZSApIHsKCQkJCQkkaW1wb3J0UGFyZW50LT5ydWxlc1skaV0gPSAkZXZhbGRJbXBvcnROb2RlOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgoJCQkvLyBSZW5hbWUgJGV2YWxkSW1wb3J0Tm9kZSB0byAkaW1wb3J0Tm9kZSBoZXJlIHNvIHRoYXQgd2UgYXZvaWQgYXZvaWQgbWlzdGFrZW4gdXNlCgkJCS8vIG9mIG5vdC15ZXQtY29tcGlsZWQgJGltcG9ydE5vZGUgYWZ0ZXIgdGhpcyBwb2ludCwgd2hpY2ggdXBzdHJlYW0ncyBjb2RlIGRvZXNuJ3QKCQkJLy8gaGF2ZSBhY2Nlc3MgdG8gYWZ0ZXIgdGhpcyBwb2ludCwgZWl0aGVyLgoJCQkkaW1wb3J0Tm9kZSA9ICRldmFsZEltcG9ydE5vZGU7CgkJCXVuc2V0KCAkZXZhbGRJbXBvcnROb2RlICk7CgoJCQkvLyBOT1RFOiBVcHN0cmVhbSBMZXNzLmpzJ3MgSW1wb3J0VmlzaXRvciBwdXRzIHRoZSByZXN0IG9mIHRoZSBwcm9jZXNzSW1wb3J0Tm9kZSBsb2dpYwoJCQkvLyBpbnRvIGEgc2VwYXJhdGUgSW1wb3J0VmlzaXRvci5wcm90b3R5cGUub25JbXBvcnRlZCBmdW5jdGlvbiwgYmVjYXVzZSBmaWxlIGxvYWRpbmcKCQkJLy8gaXMgYXN5bmMgdGhlcmUuIFRoZXkgaW1wbGVtZW50IGFuZCBjYWxsOgoJCQkvLwoJCQkvLyAtIEltcG9ydFNlcXVlbmNlci5wcm90b3R5cGUuYWRkSW1wb3J0OgoJCQkvLyAgIHJlbWVtYmVycyB3aGF0IHByb2Nlc3NJbXBvcnROb2RlKCkgd2FzIGRvaW5nLCBhbmQgd2lsbCBjYWxsIG9uSW1wb3J0ZWQKCQkJLy8gICBvbmNlIHRoZSBhc3luYyBmaWxlIGxvYWQgaXMgZmluaXNoZWQuCgkJCS8vIC0gSW1wb3J0TWFuYWdlci5wcm90b3R5cGUucHVzaDoKCQkJLy8gICByZXNvbHZlcyB0aGUgaW1wb3J0IHBhdGggdG8gZnVsbCBwYXRoIGFuZCB1cmksCgkJCS8vICAgdGhlbiBwYXJzZXMgdGhlIGZpbGUgY29udGVudCBpbnRvIGEgcm9vdCBSdWxlc2V0IGZvciB0aGF0IGZpbGUuCgkJCS8vIC0gSW1wb3J0VmlzaXRvci5wcm90b3R5cGUub25JbXBvcnRlZDoKCQkJLy8gICBtYXJrcyB0aGUgZmlsZSBhcyBwYXJzZWQgKGZvciBza2lwcGluZyBkdXBsaWNhdGVzLCB0byBhdm9pZCByZWN1cnNpb24pLAoJCQkvLyAgIGFuZCBjYWxscyB0cnlSdW4oKSBpZiB0aGlzIGlzIHRoZSBsYXN0IHJlbWFpbmluZyBpbXBvcnQuCgkJCS8vCgkJCS8vIEluIFBIUCB3ZSBsb2FkIGZpbGVzIHN5bmNocm9ub3VzbHksIHNvIHdlIGNhbiBwdXQgYSBzaW1wbGVyIHZlcnNpb24gb2YgdGhpcwoJCQkvLyBsb2dpYyBkaXJlY3RseSBoZXJlLgoKCQkJLy8gQHNlZSBsZXNzLTIuNS4zLmpzI0ltcG9ydE1hbmFnZXIucHJvdG90eXBlLnB1c2gKCgkJCS8vIE5PVEU6IFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgdG8gdXBzdHJlYW0gYG5ld0ZpbGVJbmZvYCBhbmQgYGZpbGVNYW5hZ2VyLmdldFBhdGgoKWAKCgkJCSRwYXRoID0gJGltcG9ydE5vZGUtPmdldFBhdGgoKTsKCgkJCWlmICggJHRyeUFwcGVuZExlc3NFeHRlbnNpb24gKSB7CgkJCQkJJHBhdGggPSBwcmVnX21hdGNoKCAnLyhcLlthLXpdKiQpfChbXD87XS4qKSQvJywgJHBhdGggKSA/ICRwYXRoIDogJHBhdGggLiAnLmxlc3MnOwoJCQl9CgoJCQlbICRmdWxsUGF0aCwgJHVyaSBdID0KCQkJCUxlc3NfRmlsZU1hbmFnZXI6OmdldEZpbGVQYXRoKCAkcGF0aCwgJGltcG9ydE5vZGUtPmN1cnJlbnRGaWxlSW5mbyApID8/IFsgJHBhdGgsICRwYXRoIF07CgoJCQkvLyBAc2VlIGxlc3MtMi41LjMuanMjSW1wb3J0TWFuYWdlci5wcm90b3R5cGUucHVzaC9sb2FkRmlsZUNhbGxiYWNrCgoJCQkvLyBOT1RFOiBVcHN0cmVhbSBjcmVhdGVzIHRoZSBuZXh0IGBjdXJyZW50RmlsZUluZm9gIGhlcmUgYXMgYG5ld0ZpbGVJbmZvYAoJCQkvLyBXZSBpbnN0ZWFkIGxldCBMZXNzX1BhcnNlcjo6U2V0RmlsZUluZm8oKSBkbyB0aGF0IGxhdGVyIHZpYSBMZXNzX1BhcnNlcjo6cGFyc2VGaWxlKCkuCgkJCS8vIFRoaXMgbWVhbnMgdGhhdCBpbnN0ZWFkIG9mIHNldHRpbmcgYG5ld0ZpbGVJbmZvLnJlZmVyZW5jZWAgd2UgbW9kaWZ5IHRoZSAkZW52LAoJCQkvLyBhbmQgTGVzc19QYXJzZXI6OlNldEZpbGVJbmZvIHdpbGwgaW5oZXJpdCB0aGF0LgoJCQlpZiAoICRpbXBvcnROb2RlLT5vcHRpb25zWydyZWZlcmVuY2UnXSA/PyBmYWxzZSApIHsKCQkJCSRlbnYtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gPSB0cnVlOwoJCQl9CgoJCQkkZSA9IG51bGw7CgkJCXRyeSB7CgkJCQlpZiAoICRpbXBvcnROb2RlLT5vcHRpb25zWydpbmxpbmUnXSApIHsKCQkJCQlpZiAoICFmaWxlX2V4aXN0cyggJGZ1bGxQYXRoICkgKSB7CgkJCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoCgkJCQkJCQlzcHJpbnRmKCAnRmlsZSBgJXNgIG5vdCBmb3VuZC4nLCAkZnVsbFBhdGggKSwKCQkJCQkJCW51bGwsCgkJCQkJCQkkaW1wb3J0Tm9kZS0+aW5kZXgsCgkJCQkJCQkkaW1wb3J0Tm9kZS0+Y3VycmVudEZpbGVJbmZvCgkJCQkJCSk7CgkJCQkJfQoJCQkJCSRyb290ID0gZmlsZV9nZXRfY29udGVudHMoICRmdWxsUGF0aCApOwoJCQkJfSBlbHNlIHsKCQkJCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCAkZW52ICk7CgkJCQkJLy8gTk9URTogVXBzdHJlYW0gc2V0cyBgZW52LT5wcm9jZXNzSW1wb3J0cyA9IGZhbHNlYCBoZXJlIHRvIGF2b2lkCgkJCQkJLy8gcnVubmluZyBJbXBvcnRWaXNpdG9yIGFnYWluIChpbmZpbml0ZSBsb29wKS4gV2UgaW5zdGVhZCBzZXBhcmF0ZQoJCQkJCS8vIExlc3NfUGFyc2VyLT5wYXJzZUZpbGUoKSBmcm9tIExlc3NfUGFyc2VyLT5nZXRDc3MoKSwKCQkJCQkvLyBhbmQgb25seSBnZXRDc3MoKSBydW5zIEltcG9ydFZpc2l0b3IuCgkJCQkJJHJvb3QgPSAkcGFyc2VyLT5wYXJzZUZpbGUoICRmdWxsUGF0aCwgJHVyaSwgdHJ1ZSApOwoJCQkJfQoJCQl9IGNhdGNoICggTGVzc19FeGNlcHRpb25fUGFyc2VyICRlcnIgKSB7CgkJCQkkZSA9ICRlcnI7CgkJCX0KCgkJCS8vIEBzZWUgbGVzcy0yLjUuMy5qcyNJbXBvcnRNYW5hZ2VyLnByb3RvdHlwZS5wdXNoL2ZpbGVQYXJzZWRGdW5jCgoJCQlpZiAoICRpbXBvcnROb2RlLT5vcHRpb25zWydvcHRpb25hbCddICYmICRlICkgewoJCQkJJGUgPSBudWxsOwoJCQkJJHJvb3QgPSBuZXcgTGVzc19UcmVlX1J1bGVzZXQoIG51bGwsIFtdICk7CgkJCQkkZnVsbFBhdGggPSBudWxsOwoJCQl9CgoJCQkvLyBAc2VlIGxlc3MtMi41LjMuanMjSW1wb3J0VmlzaXRvci5wcm90b3R5cGUub25JbXBvcnRlZAoKCQkJaWYgKCAkZSBpbnN0YW5jZW9mIExlc3NfRXhjZXB0aW9uX1BhcnNlciApIHsKCQkJCWlmICggIWlzX251bWVyaWMoICRlLT5pbmRleCApICkgewoJCQkJCSRlLT5pbmRleCA9ICRpbXBvcnROb2RlLT5pbmRleDsKCQkJCQkkZS0+Y3VycmVudEZpbGUgPSAkaW1wb3J0Tm9kZS0+Y3VycmVudEZpbGVJbmZvOwoJCQkJCSRlLT5nZW5NZXNzYWdlKCk7CgkJCQl9CgkJCQl0aHJvdyAkZTsKCQkJfQoKCQkJJGR1cGxpY2F0ZUltcG9ydCA9IGlzc2V0KCAkdGhpcy0+cmVjdXJzaW9uRGV0ZWN0b3JbJGZ1bGxQYXRoXSApOwoKCQkJaWYgKCAhJGVudi0+aW1wb3J0TXVsdGlwbGUgKSB7CgkJCQlpZiAoICRkdXBsaWNhdGVJbXBvcnQgKSB7CgkJCQkJJGltcG9ydE5vZGUtPmRvU2tpcCA9IHRydWU7CgkJCQl9IGVsc2UgewoJCQkJCS8vIE5PVEU6IFVwc3RyZWFtIGltcGxlbWVudHMgc2tpcCgpIGFzIGR5bmFtaWMgZnVuY3Rpb24uCgkJCQkJLy8gV2UgaW5zdGVhZCBoYXZlIGEgcmVndWxhciBMZXNzX1RyZWVfSW1wb3J0Ojpza2lwKCkgbWV0aG9kLAoJCQkJCS8vIGFuZCBpbiBjYXNlcyB3aGVyZSBza2lwKCkgd291bGQgYmUgcmUtZGVmaW5lZCBoZXJlIHdlIHNldCBkb1NraXA9bnVsbC4KCQkJCQkkaW1wb3J0Tm9kZS0+ZG9Ta2lwID0gbnVsbDsKCQkJCX0KCQkJfQoKCQkJaWYgKCAhJGZ1bGxQYXRoICYmICRpbXBvcnROb2RlLT5vcHRpb25zWydvcHRpb25hbCddICkgewoJCQkJJGltcG9ydE5vZGUtPmRvU2tpcCA9IHRydWU7CgkJCX0KCgkJCWlmICggJHJvb3QgKSB7CgkJCQkkaW1wb3J0Tm9kZS0+cm9vdCA9ICRyb290OwoJCQkJJGltcG9ydE5vZGUtPmltcG9ydGVkRmlsZW5hbWUgPSAkZnVsbFBhdGg7CgoJCQkJaWYgKCAhJGlubGluZUNTUyAmJiAoICRlbnYtPmltcG9ydE11bHRpcGxlIHx8ICEkZHVwbGljYXRlSW1wb3J0ICkgJiYgJGZ1bGxQYXRoICkgewoJCQkJCSR0aGlzLT5yZWN1cnNpb25EZXRlY3RvclskZnVsbFBhdGhdID0gdHJ1ZTsKCQkJCQkkb2xkQ29udGV4dCA9ICR0aGlzLT5lbnY7CgkJCQkJJHRoaXMtPmVudiA9ICRlbnY7CgkJCQkJJHRoaXMtPnZpc2l0T2JqKCAkcm9vdCApOwoJCQkJCSR0aGlzLT5lbnYgPSAkb2xkQ29udGV4dDsKCQkJCX0KCQkJfQoJCX0gZWxzZSB7CgkJCSR0aGlzLT50cnlSdW4oKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFkZFZhcmlhYmxlSW1wb3J0KCAkY2FsbGJhY2sgKSB7CgkJJHRoaXMtPnZhcmlhYmxlSW1wb3J0c1tdID0gJGNhbGxiYWNrOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0cnlSdW4oKSB7CgkJd2hpbGUgKCB0cnVlICkgewoJCQkvLyBOT1RFOiBVcHN0cmVhbSBrZWVwcyBhIGB0aGlzLmltcG9ydHNgIHF1ZXVlIGhlcmUgdGhhdCByZXN1bWVzCgkJCS8vIHByb2Nlc3NJbXBvcnROb2RlKCkgbG9naWMgYnkgY2FsbGluZyBvbkltcG9ydGVkKCkgYWZ0ZXIgYSBmaWxlCgkJCS8vIGlzIGZpbmlzaGVkIGxvYWRpbmcuIFdlIGRvbid0IG5lZWQgdGhhdCBzaW5jZSB3ZSBsb2FkIGFuZCBwYXJzZQoJCQkvLyBzeW5jaHJvbm91c2x5IHdpdGhpbiBwcm9jZXNzSW1wb3J0Tm9kZSgpIGluc3RlYWQuCgoJCQlpZiAoIGNvdW50KCAkdGhpcy0+dmFyaWFibGVJbXBvcnRzICkgPT09IDAgKSB7CgkJCQlicmVhazsKCQkJfQoJCQkkdmFyaWFibGVJbXBvcnQgPSAkdGhpcy0+dmFyaWFibGVJbXBvcnRzWzBdOwoKCQkJJHRoaXMtPnZhcmlhYmxlSW1wb3J0cyA9IGFycmF5X3NsaWNlKCAkdGhpcy0+dmFyaWFibGVJbXBvcnRzLCAxICk7CgkJCSRmdW5jdGlvbiA9ICR2YXJpYWJsZUltcG9ydFsnZnVuY3Rpb24nXTsKCgkJCSR0aGlzLT4kZnVuY3Rpb24oIC4uLiR2YXJpYWJsZUltcG9ydFsiYXJncyJdICk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdERlY2xhcmF0aW9uKCAkZGVjbE5vZGUsICR2aXNpdERlZXBlciApIHsKCQkvLyBUT0RPOiBXZSBtaWdodCBuZWVkIHVwc3RyZWFtJ3MgYGlmICjigKYgRGV0YWNoZWRSdWxlc2V0KSB7IHRoaXMuY29udGV4dC5mcmFtZXMudW5zaGlmdChydWxlTm9kZSk7IH1gCgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7Cgl9CgoJLy8gVE9ETzogSW1wbGVtZW50IGxlc3MtMy4xMy4xLmpzI0ltcG9ydFZpc2l0b3IucHJvdG90eXBlLnZpc2l0RGVjbGFyYXRpb25PdXQKCS8vIGlmICjigKYgRGV0YWNoZWRSdWxlc2V0KSB7IHRoaXMuY29udGV4dC5mcmFtZXMuc2hpZnQoKTsgfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEF0UnVsZSggJGF0UnVsZU5vZGUsICR2aXNpdEFyZ3MgKSB7CgkJYXJyYXlfdW5zaGlmdCggJHRoaXMtPmVudi0+ZnJhbWVzLCAkYXRSdWxlTm9kZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEF0UnVsZU91dCggJGF0UnVsZU5vZGUgKSB7CgkJYXJyYXlfc2hpZnQoICR0aGlzLT5lbnYtPmZyYW1lcyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdE1peGluRGVmaW5pdGlvbiggJG1peGluRGVmaW5pdGlvbk5vZGUsICR2aXNpdEFyZ3MgKSB7CgkJYXJyYXlfdW5zaGlmdCggJHRoaXMtPmVudi0+ZnJhbWVzLCAkbWl4aW5EZWZpbml0aW9uTm9kZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdE1peGluRGVmaW5pdGlvbk91dCggJG1peGluRGVmaW5pdGlvbk5vZGUgKSB7CgkJYXJyYXlfc2hpZnQoICR0aGlzLT5lbnYtPmZyYW1lcyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoICRydWxlc2V0Tm9kZSwgJHZpc2l0QXJncyApIHsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+ZW52LT5mcmFtZXMsICRydWxlc2V0Tm9kZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGVzZXRPdXQoICRydWxlc2V0Tm9kZSApIHsKCQlhcnJheV9zaGlmdCggJHRoaXMtPmVudi0+ZnJhbWVzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0TWVkaWEoICRtZWRpYU5vZGUsICR2aXNpdEFyZ3MgKSB7CgkJLy8gVE9ETzogVXBzdGVhbSBkb2VzIG5vdCBtb2RpZnkgJG1lZGlhTm9kZSBoZXJlLiBXaHkgZG8gd2U/CgkJJG1lZGlhTm9kZS0+YWxsRXh0ZW5kcyA9IFtdOwoJCWFycmF5X3Vuc2hpZnQoICR0aGlzLT5lbnYtPmZyYW1lcywgJG1lZGlhTm9kZS0+YWxsRXh0ZW5kcyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdE1lZGlhT3V0KCAkbWVkaWFOb2RlICkgewoJCWFycmF5X3NoaWZ0KCAkdGhpcy0+ZW52LT5mcmFtZXMgKTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Mime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pbWUgbG9va3VwCiAqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX01pbWUgewoKCS8qKgoJICogdGhpcyBtYXAgaXMgaW50ZW50aW9uYWxseSBpbmNvbXBsZXRlCgkgKiBpZiB5b3Ugd2FudCBtb3JlLCBpbnN0YWxsICdtaW1lJyBkZXAKCSAqIEB2YXIgYXJyYXk8c3RyaW5nLHN0cmluZz4KCSAqLwoJcHJpdmF0ZSBzdGF0aWMgJHR5cGVzID0gWwoJCScuaHRtJyA9PiAndGV4dC9odG1sJywKCQknLmh0bWwnID0+ICd0ZXh0L2h0bWwnLAoJCScuZ2lmJyA9PiAnaW1hZ2UvZ2lmJywKCQknLmpwZycgPT4gJ2ltYWdlL2pwZWcnLAoJCScuanBlZycgPT4gJ2ltYWdlL2pwZWcnLAoJCScucG5nJyA9PiAnaW1hZ2UvcG5nJywKCQknLnR0ZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10dGYnLAoJCScub3RmJyA9PiAnYXBwbGljYXRpb24veC1mb250LW90ZicsCgkJJy5lb3QnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCcsCgkJJy53b2ZmJyA9PiAnYXBwbGljYXRpb24veC1mb250LXdvZmYnLAoJCScuc3ZnJyA9PiAnaW1hZ2Uvc3ZnK3htbCcsCgldOwoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9va3VwKCAkZmlsZXBhdGggKSB7CgkJJHBhcnRzID0gZXhwbG9kZSggJy4nLCAkZmlsZXBhdGggKTsKCQkkZXh0ID0gJy4nIC4gc3RydG9sb3dlciggYXJyYXlfcG9wKCAkcGFydHMgKSApOwoKCQlyZXR1cm4gc2VsZjo6JHR5cGVzWyRleHRdID8/IG51bGw7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGFyc2V0c19sb29rdXAoICR0eXBlID0gbnVsbCApIHsKCQkvLyBhc3N1bWVzIGFsbCB0ZXh0IHR5cGVzIGFyZSBVVEYtOAoJCXJldHVybiAkdHlwZSAmJiBwcmVnX21hdGNoKCAnL150ZXh0XC8vJywgJHR5cGUgKSA/ICdVVEYtOCcgOiAnJzsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Output.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBhcnNlciBvdXRwdXQKICoKICogQHByaXZhdGUKICovCmNsYXNzIExlc3NfT3V0cHV0IHsKCgkvKioKCSAqIE91dHB1dCBob2xkZXIKCSAqCgkgKiBAdmFyIHN0cmluZ1tdCgkgKi8KCXByb3RlY3RlZCAkc3RycyA9IFtdOwoKCS8qKgoJICogQWRkcyBhIGNodW5rIHRvIHRoZSBzdGFjawoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGNodW5rIFRoZSBjaHVuayB0byBvdXRwdXQKCSAqIEBwYXJhbSBhcnJheXxudWxsICRmaWxlSW5mbyBUaGUgZmlsZSBpbmZvcm1hdGlvbgoJICogQHBhcmFtIGludCAkaW5kZXggVGhlIGluZGV4CgkgKiBAcGFyYW0gYm9vbHxudWxsICRtYXBMaW5lcwoJICovCglwdWJsaWMgZnVuY3Rpb24gYWRkKCAkY2h1bmssICRmaWxlSW5mbyA9IG51bGwsICRpbmRleCA9IDAsICRtYXBMaW5lcyA9IG51bGwgKSB7CgkJJHRoaXMtPnN0cnNbXSA9ICRjaHVuazsKCX0KCgkvKioKCSAqIENvbnZlcnRzIHRoZSBvdXRwdXQgdG8gc3RyaW5nCgkgKgoJICogQHJldHVybiBzdHJpbmcKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRvU3RyaW5nKCkgewoJCXJldHVybiBpbXBsb2RlKCAnJywgJHRoaXMtPnN0cnMgKTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Output/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Output/Mapped.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBhcnNlciBvdXRwdXQgd2l0aCBzb3VyY2UgbWFwCiAqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX091dHB1dF9NYXBwZWQgZXh0ZW5kcyBMZXNzX091dHB1dCB7CgoJLyoqCgkgKiBUaGUgc291cmNlIG1hcCBnZW5lcmF0b3IKCSAqCgkgKiBAdmFyIExlc3NfU291cmNlTWFwX0dlbmVyYXRvcgoJICovCglwcm90ZWN0ZWQgJGdlbmVyYXRvcjsKCgkvKioKCSAqIEN1cnJlbnQgbGluZQoJICoKCSAqIEB2YXIgaW50CgkgKi8KCXByb3RlY3RlZCAkbGluZU51bWJlciA9IDA7CgoJLyoqCgkgKiBDdXJyZW50IGNvbHVtbgoJICoKCSAqIEB2YXIgaW50CgkgKi8KCXByb3RlY3RlZCAkY29sdW1uID0gMDsKCgkvKioKCSAqIEFycmF5IG9mIGNvbnRlbnRzIG1hcCAoZmlsZSBhbmQgaXRzIGNvbnRlbnQpCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcm90ZWN0ZWQgJGNvbnRlbnRzTWFwID0gW107CgoJLyoqCgkgKiBDb25zdHJ1Y3RvcgoJICoKCSAqIEBwYXJhbSBhcnJheSAkY29udGVudHNNYXAgQXJyYXkgb2YgZmlsZW5hbWUgdG8gY29udGVudHMgbWFwCgkgKiBAcGFyYW0gTGVzc19Tb3VyY2VNYXBfR2VuZXJhdG9yICRnZW5lcmF0b3IKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBhcnJheSAkY29udGVudHNNYXAsICRnZW5lcmF0b3IgKSB7CgkJJHRoaXMtPmNvbnRlbnRzTWFwID0gJGNvbnRlbnRzTWFwOwoJCSR0aGlzLT5nZW5lcmF0b3IgPSAkZ2VuZXJhdG9yOwoJfQoKCS8qKgoJICogQWRkcyBhIGNodW5rIHRvIHRoZSBzdGFjawoJICogVGhlICRpbmRleCBmb3IgbGVzcy5waHAgbWF5IGJlIGRpZmZlcmVudCBmcm9tIGxlc3MuanMgc2luY2UgbGVzcy5waHAgZG9lcyBub3QgY2h1bmtpZnkgaW5wdXRzCgkgKgoJICogQHBhcmFtIHN0cmluZyAkY2h1bmsKCSAqIEBwYXJhbSBhcnJheXxudWxsICRmaWxlSW5mbwoJICogQHBhcmFtIGludCAkaW5kZXgKCSAqIEBwYXJhbSBib29sfG51bGwgJG1hcExpbmVzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBhZGQoICRjaHVuaywgJGZpbGVJbmZvID0gbnVsbCwgJGluZGV4ID0gMCwgJG1hcExpbmVzID0gbnVsbCApIHsKCQkvLyBpZ25vcmUgYWRkaW5nIGVtcHR5IHN0cmluZ3MKCQlpZiAoICRjaHVuayA9PT0gJycgKSB7CgkJCXJldHVybjsKCQl9CgoJCSRzb3VyY2VMaW5lcyA9IFtdOwoJCSRzb3VyY2VDb2x1bW5zID0gJyAnOwoKCQlpZiAoIGlzc2V0KCAkZmlsZUluZm9bJ2N1cnJlbnRVcmknXSApICkgewoJCQkkdXJsID0gJGZpbGVJbmZvWydjdXJyZW50VXJpJ107CgoJCQlpZiAoIGlzc2V0KCAkdGhpcy0+Y29udGVudHNNYXBbJHVybF0gKSApIHsKCQkJCSRpbnB1dFNvdXJjZSA9IHN1YnN0ciggJHRoaXMtPmNvbnRlbnRzTWFwWyR1cmxdLCAwLCAkaW5kZXggKTsKCQkJCSRzb3VyY2VMaW5lcyA9IGV4cGxvZGUoICJcbiIsICRpbnB1dFNvdXJjZSApOwoJCQkJJHNvdXJjZUNvbHVtbnMgPSBlbmQoICRzb3VyY2VMaW5lcyApOwoJCQl9IGVsc2UgewoJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbiggJ0ZpbGVuYW1lICcgLiAkdXJsIC4gJyBub3QgaW4gY29udGVudHNNYXAnICk7CgkJCX0KCgkJfQoKCQkkbGluZXMgPSBleHBsb2RlKCAiXG4iLCAkY2h1bmsgKTsKCQkkY29sdW1ucyA9IGVuZCggJGxpbmVzICk7CgoJCWlmICggJGZpbGVJbmZvICkgewoKCQkJaWYgKCAhJG1hcExpbmVzICkgewoJCQkJJHRoaXMtPmdlbmVyYXRvci0+YWRkTWFwcGluZygKCQkJCQkJJHRoaXMtPmxpbmVOdW1iZXIgKyAxLCAvLyBnZW5lcmF0ZWRfbGluZQoJCQkJCQkkdGhpcy0+Y29sdW1uLCAvLyBnZW5lcmF0ZWRfY29sdW1uCgkJCQkJCWNvdW50KCAkc291cmNlTGluZXMgKSwgLy8gb3JpZ2luYWxfbGluZQoJCQkJCQlzdHJsZW4oICRzb3VyY2VDb2x1bW5zICksIC8vIG9yaWdpbmFsX2NvbHVtbgoJCQkJCQkkZmlsZUluZm8KCQkJCSk7CgkJCX0gZWxzZSB7CgkJCQlmb3IgKCAkaSA9IDAsICRjb3VudCA9IGNvdW50KCAkbGluZXMgKTsgJGkgPCAkY291bnQ7ICRpKysgKSB7CgkJCQkJJHRoaXMtPmdlbmVyYXRvci0+YWRkTWFwcGluZygKCQkJCQkJJHRoaXMtPmxpbmVOdW1iZXIgKyAkaSArIDEsIC8vIGdlbmVyYXRlZF9saW5lCgkJCQkJCSRpID09PSAwID8gJHRoaXMtPmNvbHVtbiA6IDAsIC8vIGdlbmVyYXRlZF9jb2x1bW4KCQkJCQkJY291bnQoICRzb3VyY2VMaW5lcyApICsgJGksIC8vIG9yaWdpbmFsX2xpbmUKCQkJCQkJJGkgPT09IDAgPyBzdHJsZW4oICRzb3VyY2VDb2x1bW5zICkgOiAwLCAvLyBvcmlnaW5hbF9jb2x1bW4KCQkJCQkJJGZpbGVJbmZvCgkJCQkJKTsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKCBjb3VudCggJGxpbmVzICkgPT09IDEgKSB7CgkJCSR0aGlzLT5jb2x1bW4gKz0gc3RybGVuKCAkY29sdW1ucyApOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5saW5lTnVtYmVyICs9IGNvdW50KCAkbGluZXMgKSAtIDE7CgkJCSR0aGlzLT5jb2x1bW4gPSBzdHJsZW4oICRjb2x1bW5zICk7CgkJfQoKCQkvLyBhZGQgb25seSBjaHVuawoJCXBhcmVudDo6YWRkKCAkY2h1bmsgKTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBQYXJzZSBhbmQgY29tcGlsZSBMZXNzIGZpbGVzIGludG8gQ1NTCiAqLwpjbGFzcyBMZXNzX1BhcnNlciB7CgoJLyoqCgkgKiBEZWZhdWx0IHBhcnNlciBvcHRpb25zCgkgKiBAdmFyIGFycmF5PHN0cmluZyxtaXhlZD4KCSAqLwoJcHVibGljIHN0YXRpYyAkZGVmYXVsdF9vcHRpb25zID0gWwoJCS8vIHdoZXRoZXIgdG8gY29tcHJlc3MKCQknY29tcHJlc3MnID0+IGZhbHNlLAoJCS8vIHdoZXRoZXIgdW5pdHMgbmVlZCB0byBldmFsdWF0ZSBjb3JyZWN0bHkKCQknc3RyaWN0VW5pdHMnID0+IGZhbHNlLAoJCS8vIEhvdyB0byBwcm9jZXNzIG1hdGgKCQkvLwoJCS8vICAgYWx3YXlzICAgICAgICAgICAtIGVhZ2VybHkgdHJ5IHRvIHNvbHZlIGFsbCBvcGVyYXRpb25zCgkJLy8gICBwYXJlbnMtZGl2aXNpb24gIC0gcmVxdWlyZSBwYXJlbnMgZm9yIGRpdmlzaW9uICIvIgoJCS8vICAgcGFyZW5zIHwgc3RyaWN0ICAtIHJlcXVpcmUgcGFyZW5zIGZvciBhbGwgb3BlcmF0aW9ucwoJCS8vCgkJLy8gTk9URTogV2UgdXNlIHRoZSBkZWZhdWx0IG9mIExlc3MuanMgNC4wIChwYXJlbnMtZGl2aXNpb24pCgkJLy8gICAgICAgaW5zdGVhZCBvZiBMZXNzLmpzIDMuMTMgKGFsd2F5cykuCgkJJ21hdGgnID0+ICdwYXJlbnMtZGl2aXNpb24nLAoJCS8vIHdoZXRoZXIgdG8gYWRqdXN0IFVSTCdzIHRvIGJlIHJlbGF0aXZlCgkJJ3JlbGF0aXZlVXJscycgPT4gdHJ1ZSwKCQkvLyB3aGV0aGVyIHRvIGFkZCBhcmdzIGludG8gdXJsIHRva2VucwoJCSd1cmxBcmdzJyA9PiAnJywKCQknbnVtUHJlY2lzaW9uJyA9PiA4LAoKCQknaW1wb3J0X2RpcnMnID0+IFtdLAoKCQkvKioKCQkgKiBTZXQgdGhpcyB0byBhIGRpcmVjdG9yeSB0byBlbmFibGUgdGhlIGluY3JlbWVudGFsIGNhY2hlLgoJCSAqCgkJICogSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIExlc3NfQ2FjaGU6OkdldCgpIGluc3RlYWQsIHdoaWNoIGlzIG11Y2ggZmFzdGVyLAoJCSAqIGFzIGl0IGNhbiBza2lwIGNvbXBpbGF0aW9uIGFsbHRvZ2V0aGVyLiBSZWZlciB0byBBUEkubWQjaW5jcmVtZW50YWwtY2FjaGUKCQkgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCQkgKi8KCQknY2FjaGVfZGlyJyA9PiBudWxsLAoJCSdjYWNoZV9pbmNyZW1lbnRhbCcgPT4gdHJ1ZSwKCQkvLyBvbmUgb2YgZmFsc2UsICdzZXJpYWxpemUnLCBvciAnY2FsbGJhY2snCgkJJ2NhY2hlX21ldGhvZCcgPT4gJ3NlcmlhbGl6ZScsCgkJJ2NhY2hlX2NhbGxiYWNrX2dldCcgPT4gbnVsbCwKCQknY2FjaGVfY2FsbGJhY2tfc2V0JyA9PiBudWxsLAoKCQkvLyB3aGV0aGVyIHRvIG91dHB1dCBhIHNvdXJjZSBtYXAKCQknc291cmNlTWFwJyA9PiBmYWxzZSwKCQknc291cmNlTWFwQmFzZXBhdGgnID0+IG51bGwsCgkJJ3NvdXJjZU1hcFdyaXRlVG8nID0+IG51bGwsCgkJJ3NvdXJjZU1hcFVSTCcgPT4gbnVsbCwKCgkJJ2luZGVudGF0aW9uJyA9PiAnICAnLAoKCQkncGx1Z2lucycgPT4gW10sCgkJJ2Z1bmN0aW9ucycgPT4gW10sCgoJXTsKCgkvKiogQHZhciBhcnJheXtjb21wcmVzczpib29sLHN0cmljdFVuaXRzOmJvb2wscmVsYXRpdmVVcmxzOmJvb2wsdXJsQXJnczpzdHJpbmcsbnVtUHJlY2lzaW9uOmludCxpbXBvcnRfZGlyczphcnJheSxjYWNoZV9kaXI6P3N0cmluZyxjYWNoZV9pbmNyZW1lbnRhbDpib29sLGluZGVudGF0aW9uOnN0cmluZ30gKi8KCXB1YmxpYyBzdGF0aWMgJG9wdGlvbnMgPSBbXTsKCgkvKiogQHZhciBzdHJpbmcgTGVzcyBpbnB1dCBzdHJpbmcgKi8KCXByaXZhdGUgJGlucHV0OwoJLyoqIEB2YXIgaW50IGlucHV0IHN0cmluZyBsZW5ndGggKi8KCXByaXZhdGUgJGlucHV0X2xlbjsKCS8qKiBAdmFyIGludCBjdXJyZW50IGluZGV4IGluIGBpbnB1dGAgKi8KCXByaXZhdGUgJHBvczsKCS8qKiBAdmFyIGludFtdIGhvbGRzIHN0YXRlIGZvciBiYWNrdHJhY2tpbmcgKi8KCXByaXZhdGUgJHNhdmVTdGFjayA9IFtdOwoJLyoqIEB2YXIgaW50ICovCglwcml2YXRlICRmdXJ0aGVzdDsKCgkvKiogQHZhciBib29sICovCglwcml2YXRlICRhdXRvQ29tbWVudEFic29yYiA9IHRydWU7CgkvKioKCSAqIEB2YXIgYXJyYXk8YXJyYXl7aW5kZXg6aW50LHRleHQ6c3RyaW5nLGlzTGluZUNvbW1lbnQ6Ym9vbH0+CgkgKi8KCXByaXZhdGUgJGNvbW1lbnRTdG9yZSA9IFtdOwoKCS8qKgoJICogQHZhciBMZXNzX0Vudmlyb25tZW50CgkgKi8KCXByaXZhdGUgJGVudjsKCgkvKiogQHZhciBMZXNzX1RyZWVbXSAqLwoJcHJvdGVjdGVkICRydWxlcyA9IFtdOwoKCS8qKgoJICogRXZhbHVhdGVkIHJ1bGVzZXQgY3JlYXRlZCBieSBgZ2V0Q3NzKClgLiBTdG9yZWQgZm9yIHBvdGVudGlhbCB1c2UgaW4gYGdldFZhcmlhYmxlcygpYAoJICogQHZhciBMZXNzX1RyZWVbXXxudWxsCgkgKi8KCXByaXZhdGUgJGNhY2hlZEV2YWxkUnVsZXM7CgoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljIHN0YXRpYyAkaGFzX2V4dGVuZHMgPSBmYWxzZTsKCgkvKiogQHZhciBpbnQgKi8KCXB1YmxpYyBzdGF0aWMgJG5leHRfaWQgPSAwOwoKCS8qKgoJICogRmlsZW5hbWUgdG8gY29udGVudHMgb2YgYWxsIHBhcnNlZCB0aGUgZmlsZXMKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXB1YmxpYyBzdGF0aWMgJGNvbnRlbnRzTWFwID0gW107CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19FbnZpcm9ubWVudHxhcnJheXxudWxsICRlbnYKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkZW52ID0gbnVsbCApIHsKCQkvLyBUb3AgcGFyc2VyIG9uIGFuIGltcG9ydCB0cmVlIG11c3QgYmUgc3VyZSB0aGVyZSBpcyBvbmUgImVudiIKCQkvLyB3aGljaCB3aWxsIHRoZW4gYmUgcGFzc2VkIGFyb3VuZCBieSByZWZlcmVuY2UuCgkJaWYgKCAkZW52IGluc3RhbmNlb2YgTGVzc19FbnZpcm9ubWVudCApIHsKCQkJJHRoaXMtPmVudiA9ICRlbnY7CgkJfSBlbHNlIHsKCQkJJHRoaXMtPlJlc2V0KCAkZW52ICk7CgkJfQoKCQlMZXNzX1RyZWU6OiRwYXJzZSA9ICR0aGlzOwoJfQoKCS8qKgoJICogUmVzZXQgdGhlIHBhcnNlciBzdGF0ZSBjb21wbGV0ZWx5CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBSZXNldCggJG9wdGlvbnMgPSBudWxsICkgewoJCSR0aGlzLT5ydWxlcyA9IFtdOwoJCSR0aGlzLT5jYWNoZWRFdmFsZFJ1bGVzID0gbnVsbDsKCQlzZWxmOjokaGFzX2V4dGVuZHMgPSBmYWxzZTsKCQlzZWxmOjokY29udGVudHNNYXAgPSBbXTsKCgkJJHRoaXMtPmVudiA9IG5ldyBMZXNzX0Vudmlyb25tZW50KCk7CgoJCS8vIHNldCBuZXcgb3B0aW9ucwoJCSR0aGlzLT5TZXRPcHRpb25zKCBzZWxmOjokZGVmYXVsdF9vcHRpb25zICk7CgkJaWYgKCBpc19hcnJheSggJG9wdGlvbnMgKSApIHsKCQkJJHRoaXMtPlNldE9wdGlvbnMoICRvcHRpb25zICk7CgkJfQoKCQkkdGhpcy0+ZW52LT5Jbml0KCk7Cgl9CgoJLyoqCgkgKiBTZXQgb25lIG9yIG1vcmUgY29tcGlsZXIgb3B0aW9ucwoJICovCglwdWJsaWMgZnVuY3Rpb24gU2V0T3B0aW9ucyggJG9wdGlvbnMgKSB7CgkJZm9yZWFjaCAoICRvcHRpb25zIGFzICRvcHRpb24gPT4gJHZhbHVlICkgewoJCQkkdGhpcy0+U2V0T3B0aW9uKCAkb3B0aW9uLCAkdmFsdWUgKTsKCQl9Cgl9CgoJLyoqCgkgKiBTZXQgb25lIGNvbXBpbGVyIG9wdGlvbgoJICovCglwdWJsaWMgZnVuY3Rpb24gU2V0T3B0aW9uKCAkb3B0aW9uLCAkdmFsdWUgKSB7CgkJc3dpdGNoICggJG9wdGlvbiApIHsKCQkJY2FzZSAnc3RyaWN0TWF0aCc6CgkJCQlpZiAoICR2YWx1ZSApIHsKCQkJCQkkdGhpcy0+ZW52LT5tYXRoID0gTGVzc19FbnZpcm9ubWVudDo6TUFUSF9QQVJFTlM7CgkJCQl9IGVsc2UgewoJCQkJCSR0aGlzLT5lbnYtPm1hdGggPSBMZXNzX0Vudmlyb25tZW50OjpNQVRIX0FMV0FZUzsKCQkJCX0KCQkJCWJyZWFrOwoKCQkJY2FzZSAnbWF0aCc6CgkJCQkkdmFsdWUgPSBzdHJ0b2xvd2VyKCAkdmFsdWUgKTsKCQkJCWlmICggJHZhbHVlID09PSAnYWx3YXlzJyApIHsKCQkJCQkkdGhpcy0+ZW52LT5tYXRoID0gTGVzc19FbnZpcm9ubWVudDo6TUFUSF9BTFdBWVM7CgkJCQl9IGVsc2VpZiAoICR2YWx1ZSA9PT0gJ3BhcmVucy1kaXZpc2lvbicgKSB7CgkJCQkJJHRoaXMtPmVudi0+bWF0aCA9IExlc3NfRW52aXJvbm1lbnQ6Ok1BVEhfUEFSRU5TX0RJVklTSU9OOwoJCQkJfSBlbHNlaWYgKCAkdmFsdWUgPT09ICdwYXJlbnMnIHx8ICR2YWx1ZSA9PT0gJ3N0cmljdCcgKSB7CgkJCQkJJHRoaXMtPmVudi0+bWF0aCA9IExlc3NfRW52aXJvbm1lbnQ6Ok1BVEhfUEFSRU5TOwoJCQkJfQoJCQkJcmV0dXJuOwoKCQkJY2FzZSAnaW1wb3J0X2RpcnMnOgoJCQkJJHRoaXMtPlNldEltcG9ydERpcnMoICR2YWx1ZSApOwoJCQkJcmV0dXJuOwoKCQkJY2FzZSAnY2FjaGVfZGlyJzoKCQkJCWlmICggaXNfc3RyaW5nKCAkdmFsdWUgKSApIHsKCQkJCQkkdmFsdWUgPSBMZXNzX0NhY2hlOjpDaGVja0NhY2hlRGlyKCAkdmFsdWUgKTsKCQkJCX0KCQkJCWJyZWFrOwoKCQkJY2FzZSAnZnVuY3Rpb25zJzoKCQkJCWZvcmVhY2ggKCAkdmFsdWUgYXMgJGtleSA9PiAkZnVuY3Rpb24gKSB7CgkJCQkJJHRoaXMtPnJlZ2lzdGVyRnVuY3Rpb24oICRrZXksICRmdW5jdGlvbiApOwoJCQkJfQoJCQkJcmV0dXJuOwoJCX0KCgkJc2VsZjo6JG9wdGlvbnNbJG9wdGlvbl0gPSAkdmFsdWU7Cgl9CgoJLyoqCgkgKiBSZWdpc3RlcnMgYSBuZXcgY3VzdG9tIGZ1bmN0aW9uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbmFtZSBmdW5jdGlvbiBuYW1lCgkgKiBAcGFyYW0gY2FsbGFibGUgJGNhbGxiYWNrIGNhbGxiYWNrCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiByZWdpc3RlckZ1bmN0aW9uKCAkbmFtZSwgJGNhbGxiYWNrICkgewoJCSR0aGlzLT5lbnYtPmZ1bmN0aW9uc1skbmFtZV0gPSAkY2FsbGJhY2s7Cgl9CgoJLyoqCgkgKiBSZW1vdmVkIGFuIGFscmVhZHkgcmVnaXN0ZXJlZCBmdW5jdGlvbgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgZnVuY3Rpb24gbmFtZQoJICovCglwdWJsaWMgZnVuY3Rpb24gdW5yZWdpc3RlckZ1bmN0aW9uKCAkbmFtZSApIHsKCQlpZiAoIGlzc2V0KCAkdGhpcy0+ZW52LT5mdW5jdGlvbnNbJG5hbWVdICkgKSB7CgkJCXVuc2V0KCAkdGhpcy0+ZW52LT5mdW5jdGlvbnNbJG5hbWVdICk7CgkJfQoJfQoKCS8qKgoJICogR2V0IHRoZSBjdXJyZW50IGNzcyBidWZmZXIKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q3NzKCkgewoJCSRwcmVjaXNpb24gPSBpbmlfZ2V0KCAncHJlY2lzaW9uJyApOwoJCUBpbmlfc2V0KCAncHJlY2lzaW9uJywgJzE2JyApOwoJCSRsb2NhbGUgPSBzZXRsb2NhbGUoIExDX05VTUVSSUMsIDAgKTsKCQlzZXRsb2NhbGUoIExDX05VTUVSSUMsICJDIiApOwoKCQl0cnkgewoJCQkkcm9vdCA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldCggbnVsbCwgJHRoaXMtPnJ1bGVzICk7CgkJCSRyb290LT5yb290ID0gdHJ1ZTsKCQkJJHJvb3QtPmZpcnN0Um9vdCA9IHRydWU7CgoJCQkkaW1wb3J0VmlzaXRvciA9IG5ldyBMZXNzX0ltcG9ydFZpc2l0b3IoICR0aGlzLT5lbnYgKTsKCQkJJGltcG9ydFZpc2l0b3ItPnJ1biggJHJvb3QgKTsKCgkJCSR0aGlzLT5QcmVWaXNpdG9ycyggJHJvb3QgKTsKCgkJCXNlbGY6OiRoYXNfZXh0ZW5kcyA9IGZhbHNlOwoJCQkkZXZhbGRSb290ID0gJHJvb3QtPmNvbXBpbGUoICR0aGlzLT5lbnYgKTsKCgkJCSR0aGlzLT5jYWNoZWRFdmFsZFJ1bGVzID0gJGV2YWxkUm9vdC0+cnVsZXM7CgoJCQkkdGhpcy0+UG9zdFZpc2l0b3JzKCAkZXZhbGRSb290ICk7CgoJCQlpZiAoIHNlbGY6OiRvcHRpb25zWydzb3VyY2VNYXAnXSApIHsKCQkJCSRnZW5lcmF0b3IgPSBuZXcgTGVzc19Tb3VyY2VNYXBfR2VuZXJhdG9yKCAkZXZhbGRSb290LCBzZWxmOjokY29udGVudHNNYXAsIHNlbGY6OiRvcHRpb25zICk7CgkJCQkvLyB3aWxsIGFsc28gc2F2ZSBmaWxlCgkJCQkvLyBGSVhNRTogc2hvdWxkIGhhcHBlbiBzb21ld2hlcmUgZWxzZT8KCQkJCSRjc3MgPSAkZ2VuZXJhdG9yLT5nZW5lcmF0ZUNTUygpOwoJCQl9IGVsc2UgewoJCQkJJGNzcyA9ICRldmFsZFJvb3QtPnRvQ1NTKCk7CgkJCX0KCgkJCWlmICggc2VsZjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gKSB7CgkJCQkkY3NzID0gcHJlZ19yZXBsYWNlKCAnLyheKFxzKSspfCgoXHMpKyQpLycsICcnLCAkY3NzICk7CgkJCX0KCgkJfSBjYXRjaCAoIEV4Y2VwdGlvbiAkZXhjICkgewoJCQkvLyBJbnRlbnRpb25hbCBmYWxsLXRocm91Z2ggc28gd2UgY2FuIHJlc2V0IGVudmlyb25tZW50CgkJfQoKCQkvLyByZXNldCBwaHAgc2V0dGluZ3MKCQlAaW5pX3NldCggJ3ByZWNpc2lvbicsICRwcmVjaXNpb24gKTsKCQlzZXRsb2NhbGUoIExDX05VTUVSSUMsICRsb2NhbGUgKTsKCgkJLy8gUmV0aHJvdyBleGNlcHRpb24gYWZ0ZXIgd2UgaGFuZGxlZCByZXNldHRpbmcgdGhlIGVudmlyb25tZW50CgkJaWYgKCAhZW1wdHkoICRleGMgKSApIHsKCQkJaWYgKCAkZXhjIGluc3RhbmNlb2YgTGVzc19FeGNlcHRpb25fUGFyc2VyICkgewoJCQkJJGV4Yy0+Z2V0RmluYWxNZXNzYWdlKCk7CgkJCX0KCQkJdGhyb3cgJGV4YzsKCQl9CgoJCXJldHVybiAkY3NzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmaW5kVmFsdWVPZiggJHZhck5hbWUgKSB7CgkJJHJ1bGVzID0gJHRoaXMtPmNhY2hlZEV2YWxkUnVsZXMgPz8gJHRoaXMtPnJ1bGVzOwoKCQlmb3JlYWNoICggJHJ1bGVzIGFzICRydWxlICkgewoJCQkvLyBAcGhhbi1zdXBwcmVzcy1uZXh0LWxpbmUgUGhhblVuZGVjbGFyZWRQcm9wZXJ0eQoJCQlpZiAoIGlzc2V0KCAkcnVsZS0+dmFyaWFibGUgKSAmJiAoICRydWxlLT52YXJpYWJsZSA9PSB0cnVlICkgJiYgKCBzdHJfcmVwbGFjZSggIkAiLCAiIiwgJHJ1bGUtPm5hbWUgKSA9PSAkdmFyTmFtZSApICkgewoJCQkJcmV0dXJuICR0aGlzLT5nZXRWYXJpYWJsZVZhbHVlKCAkcnVsZSApOwoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCS8qKgoJICogR2V0IGFuIGFycmF5IG9mIHRoZSBmb3VuZCB2YXJpYWJsZXMgaW4gdGhlIHBhcnNlZCBpbnB1dC4KCSAqCgkgKiBAcmV0dXJuIGFycmF5CgkgKiBAcGhhbi1yZXR1cm4gYXJyYXk8c3RyaW5nLHN0cmluZ3xmbG9hdHxhcnJheT4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldFZhcmlhYmxlcygpIHsKCQkkdmFyaWFibGVzID0gW107CgoJCSRydWxlcyA9ICR0aGlzLT5jYWNoZWRFdmFsZFJ1bGVzID8/ICR0aGlzLT5ydWxlczsKCQlmb3JlYWNoICggJHJ1bGVzIGFzICRrZXkgPT4gJHJ1bGUgKSB7CgkJCWlmICggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGVjbGFyYXRpb24gJiYgJHJ1bGUtPnZhcmlhYmxlICkgewoJCQkJJHZhcmlhYmxlc1skcnVsZS0+bmFtZV0gPSAkdGhpcy0+Z2V0VmFyaWFibGVWYWx1ZSggJHJ1bGUgKTsKCQkJfQoJCX0KCQlyZXR1cm4gJHZhcmlhYmxlczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZmluZFZhckJ5TmFtZSggJHZhcl9uYW1lICkgewoJCSRydWxlcyA9ICR0aGlzLT5jYWNoZWRFdmFsZFJ1bGVzID8/ICR0aGlzLT5ydWxlczsKCgkJZm9yZWFjaCAoICRydWxlcyBhcyAkcnVsZSApIHsKCQkJLy8gQHBoYW4tc3VwcHJlc3MtbmV4dC1saW5lIFBoYW5VbmRlY2xhcmVkUHJvcGVydHkKCQkJaWYgKCBpc3NldCggJHJ1bGUtPnZhcmlhYmxlICkgJiYgKCAkcnVsZS0+dmFyaWFibGUgPT0gdHJ1ZSApICkgewoJCQkJLy8gQHBoYW4tc3VwcHJlc3MtbmV4dC1saW5lIFBoYW5VbmRlY2xhcmVkUHJvcGVydHkKCQkJCWlmICggJHJ1bGUtPm5hbWUgPT0gJHZhcl9uYW1lICkgewoJCQkJCXJldHVybiAkdGhpcy0+Z2V0VmFyaWFibGVWYWx1ZSggJHJ1bGUgKTsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gbnVsbDsKCX0KCgkvKioKCSAqIFRoaXMgbWV0aG9kIGdldHMgdGhlIHZhbHVlIG9mIHRoZSBsZXNzIHZhcmlhYmxlIGZyb20gdGhlIHJ1bGVzIG9iamVjdC4KCSAqIFNpbmNlIHRoZSBvYmplY3RzIHZhcnkgaGVyZSB3ZSBhZGQgdGhlIGxvZ2ljIGZvciBleHRyYWN0aW5nIHRoZSBjc3MvbGVzcyB2YWx1ZS4KCSAqCgkgKiBAcGFyYW0gTGVzc19UcmVlICR2YXIKCSAqIEByZXR1cm4gbWl4ZWQKCSAqIEBwaGFuLXJldHVybiBzdHJpbmd8ZmxvYXR8YXJyYXk8c3RyaW5nfGZsb2F0PgoJICovCglwcml2YXRlIGZ1bmN0aW9uIGdldFZhcmlhYmxlVmFsdWUoIExlc3NfVHJlZSAkdmFyICkgewoJCXN3aXRjaCAoIGdldF9jbGFzcyggJHZhciApICkgewoJCQljYXNlIExlc3NfVHJlZV9Db2xvcjo6Y2xhc3M6CgkJCQlyZXR1cm4gJHRoaXMtPnJnYjJodG1sKCAkdmFyLT5yZ2IgKTsKCQkJY2FzZSBMZXNzX1RyZWVfVmFyaWFibGU6OmNsYXNzOgoJCQkJcmV0dXJuICR0aGlzLT5maW5kVmFyQnlOYW1lKCAkdmFyLT5uYW1lICk7CgkJCWNhc2UgTGVzc19UcmVlX0tleXdvcmQ6OmNsYXNzOgoJCQkJcmV0dXJuICR2YXItPnZhbHVlOwoJCQljYXNlIExlc3NfVHJlZV9Bbm9ueW1vdXM6OmNsYXNzOgoJCQkJJHJldHVybiA9IFtdOwoJCQkJaWYgKCBpc19hcnJheSggJHZhci0+dmFsdWUgKSApIHsKCQkJCQkvLyBpbiBjb21waWxhdGlvbiBwaGFzZSwgTGVzc19UcmVlX0Fub255bW91czo6JHZhbCBjYW4gYmUgYSBMZXNzX1RyZWVbXQoJCQkJCS8vIEBwaGFuLXN1cHByZXNzLW5leHQtbGluZSBQaGFuVHlwZU1pc21hdGNoRm9yZWFjaAoJCQkJCWZvcmVhY2ggKCAkdmFyLT52YWx1ZSBhcyAkdmFsdWUgKSB7CgkJCQkJCS8qKiBAdmFyIExlc3NfVHJlZSAkdmFsdWUgKi8KCQkJCQkJJHJldHVyblsgJHZhbHVlLT5uYW1lIF0gPSAkdGhpcy0+Z2V0VmFyaWFibGVWYWx1ZSggJHZhbHVlICk7CgkJCQkJfQoJCQkJfQoJCQkJcmV0dXJuIGNvdW50KCAkcmV0dXJuICkgPT09IDEgPyAkcmV0dXJuWzBdIDogJHJldHVybjsKCQkJY2FzZSBMZXNzX1RyZWVfVXJsOjpjbGFzczoKCQkJCS8vIEJhc2VkIG9uIExlc3NfVHJlZV9Vcmw6OmdlbkNTUygpCgkJCQkvLyBSZWN1cnNlIHRvIHNlcmlhbGl6ZSB0aGUgTGVzc19UcmVlX1F1b3RlZCB2YWx1ZQoJCQkJcmV0dXJuICd1cmwoJyAuICR0aGlzLT5nZXRWYXJpYWJsZVZhbHVlKCAkdmFyLT52YWx1ZSApIC4gJyknOwoJCQljYXNlIExlc3NfVHJlZV9EZWNsYXJhdGlvbjo6Y2xhc3M6CgkJCQlpZiAoICR2YXItPnZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlX0Fub255bW91cyApIHsKCQkJCQkkbm9kZXMgPSAkdGhpcy0+cGFyc2VOb2RlKCAkdmFyLT52YWx1ZS0+dmFsdWUsIFsgJ3ZhbHVlJywgJ2ltcG9ydGFudCcgXSwgMCwgW10gKTsKCQkJCQlyZXR1cm4gJHRoaXMtPmdldFZhcmlhYmxlVmFsdWUoICRub2Rlc1sxXVswXSApOwoJCQkJfQoJCQkJcmV0dXJuICR0aGlzLT5nZXRWYXJpYWJsZVZhbHVlKCAkdmFyLT52YWx1ZSApOwoJCQljYXNlIExlc3NfVHJlZV9WYWx1ZTo6Y2xhc3M6CgkJCQkkdmFsdWVzID0gW107CgkJCQlmb3JlYWNoICggJHZhci0+dmFsdWUgYXMgJHN1Yl92YWx1ZSApIHsKCQkJCQkkdmFsdWVzW10gPSAkdGhpcy0+Z2V0VmFyaWFibGVWYWx1ZSggJHN1Yl92YWx1ZSApOwoJCQkJfQoJCQkJcmV0dXJuIGNvdW50KCAkdmFsdWVzICkgPT09IDEgPyAkdmFsdWVzWzBdIDogJHZhbHVlczsKCQkJY2FzZSBMZXNzX1RyZWVfUXVvdGVkOjpjbGFzczoKCQkJCXJldHVybiAkdmFyLT5xdW90ZSAuICR2YXItPnZhbHVlIC4gJHZhci0+cXVvdGU7CgkJCWNhc2UgTGVzc19UcmVlX0RpbWVuc2lvbjo6Y2xhc3M6CgkJCQkkdmFsdWUgPSAkdmFyLT52YWx1ZTsKCQkJCWlmICggJHZhci0+dW5pdCAmJiAkdmFyLT51bml0LT5udW1lcmF0b3IgKSB7CgkJCQkJJHZhbHVlIC49ICR2YXItPnVuaXQtPm51bWVyYXRvclswXTsKCQkJCX0KCQkJCXJldHVybiAkdmFsdWU7CgkJCWNhc2UgTGVzc19UcmVlX0V4cHJlc3Npb246OmNsYXNzOgoJCQkJJHZhbHVlcyA9IFtdOwoJCQkJZm9yZWFjaCAoICR2YXItPnZhbHVlIGFzICRpdGVtICkgewoJCQkJCSR2YWx1ZXNbXSA9ICR0aGlzLT5nZXRWYXJpYWJsZVZhbHVlKCAkaXRlbSApOwoJCQkJfQoJCQkJcmV0dXJuIGltcGxvZGUoICcgJywgJHZhbHVlcyApOwoJCQljYXNlIExlc3NfVHJlZV9PcGVyYXRpb246OmNsYXNzOgoJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbiggJ2dldFZhcmlhYmxlcygpIHJlcXVpcmUgTGVzcyB0byBiZSBjb21waWxlZC4gcGxlYXNlIHVzZSAkcGFyc2VyLT5nZXRDc3MoKSBiZWZvcmUgY2FsbGluZyBnZXRWYXJpYWJsZXMoKScgKTsKCQkJY2FzZSBMZXNzX1RyZWVfVW5pdDo6Y2xhc3M6CgkJCWNhc2UgTGVzc19UcmVlX0NvbW1lbnQ6OmNsYXNzOgoJCQljYXNlIExlc3NfVHJlZV9JbXBvcnQ6OmNsYXNzOgoJCQljYXNlIExlc3NfVHJlZV9SdWxlc2V0OjpjbGFzczoKCQkJZGVmYXVsdDoKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oICJ0eXBlIG1pc3NpbmcgaW4gc3dpdGNoL2Nhc2UgZ2V0VmFyaWFibGVWYWx1ZSBmb3IgIiAuIGdldF9jbGFzcyggJHZhciApICk7CgkJfQoJfQoKCXByaXZhdGUgZnVuY3Rpb24gcmdiMmh0bWwoICRyLCAkZyA9IC0xLCAkYiA9IC0xICkgewoJCWlmICggaXNfYXJyYXkoICRyICkgJiYgY291bnQoICRyICkgPT0gMyApIHsKCQkJWyAkciwgJGcsICRiIF0gPSAkcjsKCQl9CgoJCXJldHVybiBzcHJpbnRmKCAnIyUwMnglMDJ4JTAyeCcsICRyLCAkZywgJGIgKTsKCX0KCgkvKioKCSAqIFJ1biBwcmUtY29tcGlsZSB2aXNpdG9ycwoJICovCglwcml2YXRlIGZ1bmN0aW9uIFByZVZpc2l0b3JzKCAkcm9vdCApIHsKCQlpZiAoIHNlbGY6OiRvcHRpb25zWydwbHVnaW5zJ10gKSB7CgkJCWZvcmVhY2ggKCBzZWxmOjokb3B0aW9uc1sncGx1Z2lucyddIGFzICRwbHVnaW4gKSB7CgkJCQlpZiAoICFlbXB0eSggJHBsdWdpbi0+aXNQcmVFdmFsVmlzaXRvciApICkgewoJCQkJCSRwbHVnaW4tPnJ1biggJHJvb3QgKTsKCQkJCX0KCQkJfQoJCX0KCX0KCgkvKioKCSAqIFJ1biBwb3N0LWNvbXBpbGUgdmlzaXRvcnMKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBQb3N0VmlzaXRvcnMoICRldmFsZFJvb3QgKSB7CgkJJHZpc2l0b3JzID0gW107CgkJJHZpc2l0b3JzW10gPSBuZXcgTGVzc19WaXNpdG9yX2pvaW5TZWxlY3RvcigpOwoJCWlmICggc2VsZjo6JGhhc19leHRlbmRzICkgewoJCQkkdmlzaXRvcnNbXSA9IG5ldyBMZXNzX1Zpc2l0b3JfcHJvY2Vzc0V4dGVuZHMoKTsKCQl9CgkJJHZpc2l0b3JzW10gPSBuZXcgTGVzc19WaXNpdG9yX3RvQ1NTKCk7CgoJCWlmICggc2VsZjo6JG9wdGlvbnNbJ3BsdWdpbnMnXSApIHsKCQkJZm9yZWFjaCAoIHNlbGY6OiRvcHRpb25zWydwbHVnaW5zJ10gYXMgJHBsdWdpbiApIHsKCQkJCWlmICggcHJvcGVydHlfZXhpc3RzKCAkcGx1Z2luLCAnaXNQcmVFdmFsVmlzaXRvcicgKSAmJiAkcGx1Z2luLT5pc1ByZUV2YWxWaXNpdG9yICkgewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCWlmICggcHJvcGVydHlfZXhpc3RzKCAkcGx1Z2luLCAnaXNQcmVWaXNpdG9yJyApICYmICRwbHVnaW4tPmlzUHJlVmlzaXRvciApIHsKCQkJCQlhcnJheV91bnNoaWZ0KCAkdmlzaXRvcnMsICRwbHVnaW4gKTsKCQkJCX0gZWxzZSB7CgkJCQkJJHZpc2l0b3JzW10gPSAkcGx1Z2luOwoJCQkJfQoJCQl9CgkJfQoKCQlmb3IgKCAkaSA9IDA7ICRpIDwgY291bnQoICR2aXNpdG9ycyApOyAkaSsrICkgewoJCQkkdmlzaXRvcnNbJGldLT5ydW4oICRldmFsZFJvb3QgKTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBhIExlc3Mgc3RyaW5nCgkgKgoJICogQHRocm93cyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIgSWYgdGhlIGNvbXBpbGVyIGVuY291bnRlcnMgaW52YWxpZCBzeW50YXgKCSAqIEBwYXJhbSBzdHJpbmcgJHN0ciBUaGUgc3RyaW5nIHRvIGNvbnZlcnQKCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZmlsZV91cmkgVGhlIHVybCBvZiB0aGUgZmlsZQoJICogQHJldHVybiAkdGhpcwoJICovCglwdWJsaWMgZnVuY3Rpb24gcGFyc2UoICRzdHIsICRmaWxlX3VyaSA9IG51bGwgKSB7CgkJaWYgKCAhJGZpbGVfdXJpICkgewoJCQkkdXJpX3Jvb3QgPSAnJzsKCQkJJGZpbGVuYW1lID0gJ2Fub255bW91cy1maWxlLScgLiBzZWxmOjokbmV4dF9pZCsrIC4gJy5sZXNzJzsKCQl9IGVsc2UgewoJCQkkZmlsZV91cmkgPSBzZWxmOjpXaW5QYXRoKCAkZmlsZV91cmkgKTsKCQkJJGZpbGVuYW1lID0gJGZpbGVfdXJpOwoJCQkkdXJpX3Jvb3QgPSBkaXJuYW1lKCAkZmlsZV91cmkgKTsKCQl9CgoJCSRwcmV2aW91c0ZpbGVJbmZvID0gJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvOwoJCSR1cmlfcm9vdCA9IHNlbGY6OldpblBhdGgoICR1cmlfcm9vdCApOwoJCSR0aGlzLT5TZXRGaWxlSW5mbyggJGZpbGVuYW1lLCAkdXJpX3Jvb3QgKTsKCgkJJHRoaXMtPmlucHV0ID0gJHN0cjsKCQkkdGhpcy0+X3BhcnNlKCk7CgoJCWlmICggJHByZXZpb3VzRmlsZUluZm8gKSB7CgkJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyA9ICRwcmV2aW91c0ZpbGVJbmZvOwoJCX0KCgkJcmV0dXJuICR0aGlzOwoJfQoKCS8qKgoJICogUGFyc2UgYSBMZXNzIHN0cmluZyBmcm9tIGEgZ2l2ZW4gZmlsZQoJICoKCSAqIEB0aHJvd3MgTGVzc19FeGNlcHRpb25fUGFyc2VyIElmIHRoZSBjb21waWxlciBlbmNvdW50ZXJzIGludmFsaWQgc3ludGF4CgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBUaGUgZmlsZSB0byBwYXJzZQoJICogQHBhcmFtIHN0cmluZyAkdXJpX3Jvb3QgVGhlIHVybCBvZiB0aGUgZmlsZQoJICogQHBhcmFtIGJvb2wgJHJldHVyblJvb3QgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgYSBjc3Mgc3RyaW5nIGEgcm9vdCBub2RlCgkgKiBAcmV0dXJuIExlc3NfVHJlZV9SdWxlc2V0fCR0aGlzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBwYXJzZUZpbGUoICRmaWxlbmFtZSwgJHVyaV9yb290ID0gJycsICRyZXR1cm5Sb290ID0gZmFsc2UgKSB7CgkJaWYgKCAhZmlsZV9leGlzdHMoICRmaWxlbmFtZSApICkgewoJCQkkdGhpcy0+RXJyb3IoIHNwcmludGYoICdGaWxlIGAlc2Agbm90IGZvdW5kLicsICRmaWxlbmFtZSApICk7CgkJfQoKCQkvLyBmaXggdXJpX3Jvb3Q/CgkJLy8gSW5zdGVhZCBvZiBUaGUgbWl4dHVyZSBvZiBmaWxlIHBhdGggZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgZGlyZWN0b3J5IHBhdGggZm9yIHRoZSBzZWNvbmQgYXJndW1lbnQgaGFzIGJlZQoJCWlmICggISRyZXR1cm5Sb290ICYmICFlbXB0eSggJHVyaV9yb290ICkgJiYgYmFzZW5hbWUoICR1cmlfcm9vdCApID09IGJhc2VuYW1lKCAkZmlsZW5hbWUgKSApIHsKCQkJJHVyaV9yb290ID0gZGlybmFtZSggJHVyaV9yb290ICk7CgkJfQoKCQkkcHJldmlvdXNGaWxlSW5mbyA9ICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbzsKCgkJaWYgKCAkZmlsZW5hbWUgKSB7CgkJCSRmaWxlbmFtZSA9IHNlbGY6OkFic1BhdGgoICRmaWxlbmFtZSwgdHJ1ZSApOwoJCX0KCQkkdXJpX3Jvb3QgPSBzZWxmOjpXaW5QYXRoKCAkdXJpX3Jvb3QgKTsKCgkJJHRoaXMtPlNldEZpbGVJbmZvKCAkZmlsZW5hbWUsICR1cmlfcm9vdCApOwoKCQkkdGhpcy0+ZW52LT5hZGRQYXJzZWRGaWxlKCAkZmlsZW5hbWUgKTsKCgkJaWYgKCAkcmV0dXJuUm9vdCApIHsKCQkJJHJ1bGVzID0gJHRoaXMtPkdldFJ1bGVzKCAkZmlsZW5hbWUgKTsKCQkJJHJldHVybiA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldCggbnVsbCwgJHJ1bGVzICk7CgkJfSBlbHNlIHsKCQkJJHRoaXMtPl9wYXJzZSggJGZpbGVuYW1lICk7CgkJCSRyZXR1cm4gPSAkdGhpczsKCQl9CgoJCWlmICggJHByZXZpb3VzRmlsZUluZm8gKSB7CgkJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyA9ICRwcmV2aW91c0ZpbGVJbmZvOwoJCX0KCgkJcmV0dXJuICRyZXR1cm47Cgl9CgoJLyoqCgkgKiBBbGxvd3MgYSB1c2VyIHRvIHNldCB2YXJpYWJsZXMgdmFsdWVzCgkgKiBAcGFyYW0gYXJyYXkgJHZhcnMKCSAqIEByZXR1cm4gJHRoaXMKCSAqLwoJcHVibGljIGZ1bmN0aW9uIE1vZGlmeVZhcnMoICR2YXJzICkgewoJCSR0aGlzLT5pbnB1dCA9IHNlbGY6OnNlcmlhbGl6ZVZhcnMoICR2YXJzICk7CgkJJHRoaXMtPl9wYXJzZSgpOwoKCQlyZXR1cm4gJHRoaXM7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQoJICogQHBhcmFtIHN0cmluZyAkdXJpX3Jvb3QKCSAqLwoJcHVibGljIGZ1bmN0aW9uIFNldEZpbGVJbmZvKCAkZmlsZW5hbWUsICR1cmlfcm9vdCA9ICcnICkgewoJCSRmaWxlbmFtZSA9IExlc3NfRW52aXJvbm1lbnQ6Om5vcm1hbGl6ZVBhdGgoICRmaWxlbmFtZSApOwoJCSRkaXJuYW1lID0gcHJlZ19yZXBsYWNlKCAnL1teXC9cXFxcXSokLycsICcnLCAkZmlsZW5hbWUgKTsKCgkJaWYgKCAhZW1wdHkoICR1cmlfcm9vdCApICkgewoJCQkkdXJpX3Jvb3QgPSBydHJpbSggJHVyaV9yb290LCAnLycgKSAuICcvJzsKCQl9CgoJCSRjdXJyZW50RmlsZUluZm8gPSBbXTsKCgkJLy8gZW50cnkgaW5mbwoJCWlmICggaXNzZXQoICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApICkgewoJCQkkY3VycmVudEZpbGVJbmZvWydlbnRyeVBhdGgnXSA9ICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mb1snZW50cnlQYXRoJ107CgkJCSRjdXJyZW50RmlsZUluZm9bJ2VudHJ5VXJpJ10gPSAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ2VudHJ5VXJpJ107CgkJCSRjdXJyZW50RmlsZUluZm9bJ3Jvb3RwYXRoJ10gPSAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ3Jvb3RwYXRoJ107CgoJCX0gZWxzZSB7CgkJCSRjdXJyZW50RmlsZUluZm9bJ2VudHJ5UGF0aCddID0gJGRpcm5hbWU7CgkJCSRjdXJyZW50RmlsZUluZm9bJ2VudHJ5VXJpJ10gPSAkdXJpX3Jvb3Q7CgkJCSRjdXJyZW50RmlsZUluZm9bJ3Jvb3RwYXRoJ10gPSAkZGlybmFtZTsKCQl9CgoJCSRjdXJyZW50RmlsZUluZm9bJ2N1cnJlbnREaXJlY3RvcnknXSA9ICRkaXJuYW1lOwoJCSRjdXJyZW50RmlsZUluZm9bJ2N1cnJlbnRVcmknXSA9ICR1cmlfcm9vdCAuIGJhc2VuYW1lKCAkZmlsZW5hbWUgKTsKCQkkY3VycmVudEZpbGVJbmZvWydmaWxlbmFtZSddID0gJGZpbGVuYW1lOwoJCSRjdXJyZW50RmlsZUluZm9bJ3VyaV9yb290J10gPSAkdXJpX3Jvb3Q7CgoJCS8vIGluaGVyaXQgcmVmZXJlbmNlCgkJaWYgKCBpc3NldCggJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSApICYmICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gKSB7CgkJCSRjdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddID0gdHJ1ZTsKCQl9CgoJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgoJLyoqCgkgKiBAZGVwcmVjYXRlZCAxLjUuMS4yIFVzZSBMZXNzX0NhY2hlOjpTZXRDYWNoZURpciBpbnN0ZWFkLgoJICovCglwdWJsaWMgZnVuY3Rpb24gU2V0Q2FjaGVEaXIoICRkaXIgKSB7CgkJdHJpZ2dlcl9lcnJvciggJ0xlc3NfUGFyc2VyOjpTZXRDYWNoZURpciBpcyBkZXByZWNhdGVkLCB1c2UgTGVzc19DYWNoZTo6U2V0Q2FjaGVEaXIgaW5zdGVhZCcsIEVfVVNFUl9ERVBSRUNBVEVEICk7CgkJTGVzc19DYWNoZTo6U2V0Q2FjaGVEaXIoICRkaXIgKTsKCX0KCgkvKioKCSAqIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgb3IgY2FsbGJhY2tzIHRoZSBwYXJzZXIgc2hvdWxkIHVzZSBmb3IgZGV0ZXJtaW5pbmcgaW1wb3J0IHBhdGhzCgkgKgoJICogSW1wb3J0IGNsb3N1cmVzIGFyZSBjYWxsZWQgd2l0aCBhIHNpbmdsZSBgJHBhdGhgIGFyZ3VtZW50IGNvbnRhaW5pbmcgdGhlIHVucXVvdGVkIGBAaW1wb3J0YAoJICogc3RyaW5nIGFuIGlucHV0IExFU1MgZmlsZS4gVGhlIHN0cmluZyBpcyB1bmNoYW5nZWQsIGV4Y2VwdCBmb3IgYSBzdGF0aWNhbGx5IGFwcGVuZGVkICIubGVzcyIKCSAqIHN1ZmZpeCBpZiB0aGUgYmFzZW5hbWUgZG9lcyBub3QgeWV0IGNvbnRhaW4gYSBkb3QuIElmIGEgZG90IGlzIHByZXNlbnQgaW4gdGhlIGZpbGVuYW1lLCB5b3UKCSAqIGFyZSByZXNwb25zaWJsZSBmb3IgY2hvb3Npbmcgd2hldGhlciB0byBleHBhbmQgImZvby5iYXIiIHRvICJmb28uYmFyLmxlc3MiLiBJZiB5b3VyIGNhbGxiYWNrCgkgKiBjYW4gaGFuZGxlIHRoaXMgaW1wb3J0IHN0YXRlbWVudCwgcmV0dXJuIGFuIGFycmF5IHdpdGggYW4gYWJzb2x1dGUgZmlsZSBwYXRoIGFuZCBhbiBvcHRpb25hbAoJICogVVJJIHBhdGgsIG9yIHJldHVybiB2b2lkL251bGwgdG8gaW5kaWNhdGUgdGhhdCB5b3VyIGNhbGxiYWNrIGRvZXMgbm90IGhhbmRsZSB0aGlzIGltcG9ydAoJICogc3RhdGVtZW50LgoJICoKCSAqIEV4YW1wbGU6CgkgKgoJICogICAgIGZ1bmN0aW9uICggJHBhdGggKSB7CgkgKiAgICAgICAgIGlmICggJHBhdGggPT09ICd2aXJ0dWFsL3NvbWV0aGluZy5sZXNzJyApIHsKCSAqICAgICAgICAgICAgIHJldHVybiBbICcvc3J2L2Vsc2V3aGVyZS90aGluZy5sZXNzJywgbnVsbCBdOwoJICogICAgICAgICB9CgkgKiAgICAgfQoJICoKCSAqIEBwYXJhbSBhcnJheSAkZGlycyBUaGUga2V5IHNob3VsZCBiZSBhIHNlcnZlciBkaXJlY3RvcnkgZnJvbSB3aGljaCBMRVNTCgkgKiBmaWxlcyBtYXkgYmUgaW1wb3J0ZWQuIFRoZSB2YWx1ZSBpcyBhbiBvcHRpb25hbCBwdWJsaWMgVVJMIG9yIFVSTCBiYXNlIHBhdGggdGhhdCBjb3JyZXNwb25kcyB0bwoJICogdGhlIHNhbWUgZGlyZWN0b3J5ICh1c2UgZW1wdHkgc3RyaW5nIG90aGVyd2lzZSkuIFRoZSB2YWx1ZSBtYXkgYWxzbyBiZSBhIGNsb3N1cmUsIGluCgkgKiB3aGljaCBjYXNlIHRoZSBrZXkgaXMgaWdub3JlZC4KCSAqIEBwaGFuLXBhcmFtIGFycmF5PHN0cmluZyxzdHJpbmd8Y2FsbGFibGU+ICRkaXJzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBTZXRJbXBvcnREaXJzKCAkZGlycyApIHsKCQlzZWxmOjokb3B0aW9uc1snaW1wb3J0X2RpcnMnXSA9IFtdOwoKCQlmb3JlYWNoICggJGRpcnMgYXMgJHBhdGggPT4gJHVyaV9yb290ICkgewoKCQkJJHBhdGggPSBzZWxmOjpXaW5QYXRoKCAkcGF0aCApOwoJCQlpZiAoICFlbXB0eSggJHBhdGggKSApIHsKCQkJCSRwYXRoID0gcnRyaW0oICRwYXRoLCAnLycgKSAuICcvJzsKCQkJfQoKCQkJaWYgKCAhaXNfY2FsbGFibGUoICR1cmlfcm9vdCApICkgewoJCQkJJHVyaV9yb290ID0gc2VsZjo6V2luUGF0aCggJHVyaV9yb290ICk7CgkJCQlpZiAoICFlbXB0eSggJHVyaV9yb290ICkgKSB7CgkJCQkJJHVyaV9yb290ID0gcnRyaW0oICR1cmlfcm9vdCwgJy8nICkgLiAnLyc7CgkJCQl9CgkJCX0KCgkJCXNlbGY6OiRvcHRpb25zWydpbXBvcnRfZGlycyddWyRwYXRoXSA9ICR1cmlfcm9vdDsKCQl9Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGZpbGVfcGF0aAoJICovCglwcml2YXRlIGZ1bmN0aW9uIF9wYXJzZSggJGZpbGVfcGF0aCA9IG51bGwgKSB7CgkJJHRoaXMtPnJ1bGVzID0gYXJyYXlfbWVyZ2UoICR0aGlzLT5ydWxlcywgJHRoaXMtPkdldFJ1bGVzKCAkZmlsZV9wYXRoICkgKTsKCX0KCgkvKioKCSAqIFJldHVybiB0aGUgcmVzdWx0cyBvZiBwYXJzZVByaW1hcnkgZm9yICRmaWxlX3BhdGgKCSAqIFVzZSBjYWNoZSBhbmQgc2F2ZSBjYWNoZWQgcmVzdWx0cyBpZiBwb3NzaWJsZQoJICoKCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZmlsZV9wYXRoCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gR2V0UnVsZXMoICRmaWxlX3BhdGggKSB7CgkJJHRoaXMtPnNldElucHV0KCAkZmlsZV9wYXRoICk7CgoJCSRjYWNoZV9maWxlID0gJHRoaXMtPmNhY2hlRmlsZSggJGZpbGVfcGF0aCApOwoJCWlmICggJGNhY2hlX2ZpbGUgKSB7CgkJCWlmICggc2VsZjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddID09PSAnY2FsbGJhY2snICkgewoJCQkJJGNhbGxiYWNrID0gc2VsZjo6JG9wdGlvbnNbJ2NhY2hlX2NhbGxiYWNrX2dldCddOwoJCQkJaWYgKCBpc19jYWxsYWJsZSggJGNhbGxiYWNrICkgKSB7CgkJCQkJJGNhY2hlID0gJGNhbGxiYWNrKCAkdGhpcywgJGZpbGVfcGF0aCwgJGNhY2hlX2ZpbGUgKTsKCQkJCQlpZiAoICRjYWNoZSApIHsKCQkJCQkJJHRoaXMtPnVuc2V0SW5wdXQoKTsKCQkJCQkJcmV0dXJuICRjYWNoZTsKCQkJCQl9CgkJCQl9CgoJCQl9IGVsc2VpZiAoIHNlbGY6OiRvcHRpb25zWydjYWNoZV9tZXRob2QnXSA9PT0gJ3NlcmlhbGl6ZScgJiYgZmlsZV9leGlzdHMoICRjYWNoZV9maWxlICkgKSB7CgkJCQkkY2FjaGUgPSB1bnNlcmlhbGl6ZSggZmlsZV9nZXRfY29udGVudHMoICRjYWNoZV9maWxlICkgKTsKCQkJCWlmICggJGNhY2hlICkgewoJCQkJCXRvdWNoKCAkY2FjaGVfZmlsZSApOwoJCQkJCSR0aGlzLT51bnNldElucHV0KCk7CgkJCQkJcmV0dXJuICRjYWNoZTsKCQkJCX0KCQkJfQoJCX0KCQkkdGhpcy0+c2tpcFdoaXRlc3BhY2UoIDAgKTsKCQkkcnVsZXMgPSAkdGhpcy0+cGFyc2VQcmltYXJ5KCk7CgoJCWlmICggJHRoaXMtPnBvcyA8ICR0aGlzLT5pbnB1dF9sZW4gKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9DaHVuayggJHRoaXMtPmlucHV0LCBudWxsLCAkdGhpcy0+ZnVydGhlc3QsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJCX0KCgkJJHRoaXMtPnVuc2V0SW5wdXQoKTsKCgkJLy8gc2F2ZSB0aGUgY2FjaGUKCQlpZiAoICRjYWNoZV9maWxlICkgewoJCQlpZiAoIHNlbGY6OiRvcHRpb25zWydjYWNoZV9tZXRob2QnXSA9PT0gJ2NhbGxiYWNrJyApIHsKCQkJCSRjYWxsYmFjayA9IHNlbGY6OiRvcHRpb25zWydjYWNoZV9jYWxsYmFja19zZXQnXTsKCQkJCWlmICggaXNfY2FsbGFibGUoICRjYWxsYmFjayApICkgewoJCQkJCSRjYWxsYmFjayggJHRoaXMsICRmaWxlX3BhdGgsICRjYWNoZV9maWxlLCAkcnVsZXMgKTsKCQkJCX0KCQkJfSBlbHNlaWYgKCBzZWxmOjokb3B0aW9uc1snY2FjaGVfbWV0aG9kJ10gPT09ICdzZXJpYWxpemUnICkgewoJCQkJZmlsZV9wdXRfY29udGVudHMoICRjYWNoZV9maWxlLCBzZXJpYWxpemUoICRydWxlcyApICk7CgkJCQlMZXNzX0NhY2hlOjpDbGVhbkNhY2hlKCBzZWxmOjokb3B0aW9uc1snY2FjaGVfZGlyJ10gKTsKCQkJfQoJCX0KCgkJcmV0dXJuICRydWxlczsKCX0KCgkvKioKCSAqIEBpbnRlcm5hbCBzaW5jZSA0LjMuMCBObyBsb25nZXIgYSBwdWJsaWMgQVBJLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHNldElucHV0KCAkZmlsZV9wYXRoICkgewoJCS8vIFNldCB1cCB0aGUgaW5wdXQgYnVmZmVyCgkJaWYgKCAkZmlsZV9wYXRoICkgewoJCQkkdGhpcy0+aW5wdXQgPSBmaWxlX2dldF9jb250ZW50cyggJGZpbGVfcGF0aCApOwoJCX0KCgkJJHRoaXMtPnBvcyA9ICR0aGlzLT5mdXJ0aGVzdCA9IDA7CgoJCS8vIFJlbW92ZSBwb3RlbnRpYWwgVVRGIEJ5dGUgT3JkZXIgTWFyawoJCSR0aGlzLT5pbnB1dCA9IHByZWdfcmVwbGFjZSggJy9cXEdceEVGXHhCQlx4QkYvJywgJycsICR0aGlzLT5pbnB1dCApOwoJCSR0aGlzLT5pbnB1dF9sZW4gPSBzdHJsZW4oICR0aGlzLT5pbnB1dCApOwoKCQlpZiAoIHNlbGY6OiRvcHRpb25zWydzb3VyY2VNYXAnXSAmJiAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gKSB7CgkJCSR1cmkgPSAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ2N1cnJlbnRVcmknXTsKCQkJc2VsZjo6JGNvbnRlbnRzTWFwWyR1cmldID0gJHRoaXMtPmlucHV0OwoJCX0KCX0KCgkvKioKCSAqIEBpbnRlcm5hbCBzaW5jZSA0LjMuMCBObyBsb25nZXIgYSBwdWJsaWMgQVBJLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHVuc2V0SW5wdXQoKSB7CgkJLy8gRnJlZSB1cCBzb21lIG1lbW9yeQoJCSR0aGlzLT5pbnB1dCA9ICcnOwoJCSR0aGlzLT5wb3MgPSAkdGhpcy0+aW5wdXRfbGVuID0gJHRoaXMtPmZ1cnRoZXN0ID0gMDsKCQkkdGhpcy0+c2F2ZVN0YWNrID0gW107Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBjYWNoZUZpbGUoICRmaWxlX3BhdGggKSB7CgkJaWYgKCAkZmlsZV9wYXRoICYmICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApIHsKCgkJCSRlbnYgPSBnZXRfb2JqZWN0X3ZhcnMoICR0aGlzLT5lbnYgKTsKCQkJdW5zZXQoICRlbnZbJ2ZyYW1lcyddICk7CgoJCQkkcGFydHMgPSBbXTsKCQkJJHBhcnRzW10gPSAkZmlsZV9wYXRoOwoJCQkkcGFydHNbXSA9IGZpbGVzaXplKCAkZmlsZV9wYXRoICk7CgkJCSRwYXJ0c1tdID0gZmlsZW10aW1lKCAkZmlsZV9wYXRoICk7CgkJCSRwYXJ0c1tdID0gJGVudjsKCQkJJHBhcnRzW10gPSBMZXNzX1ZlcnNpb246OmNhY2hlX3ZlcnNpb247CgkJCSRwYXJ0c1tdID0gc2VsZjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddOwoJCQlyZXR1cm4gc2VsZjo6JG9wdGlvbnNbJ2NhY2hlX2RpciddIC4gTGVzc19DYWNoZTo6JHByZWZpeCAuIGJhc2VfY29udmVydCggc2hhMSgganNvbl9lbmNvZGUoICRwYXJ0cyApICksIDE2LCAzNiApIC4gJy5sZXNzY2FjaGUnOwoJCX0KCX0KCgkvKioKCSAqIEBzaW5jZSA0LjMuMAoJICogQHJldHVybiBzdHJpbmdbXQoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyc2VkRmlsZXMoKSB7CgkJcmV0dXJuICR0aGlzLT5lbnYtPmltcG9ydHM7Cgl9CgoJLyoqCgkgKiBAaW50ZXJuYWwgc2luY2UgNC4zLjAgTm8gbG9uZ2VyIGEgcHVibGljIEFQSS4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBzYXZlKCkgewoJCSR0aGlzLT5zYXZlU3RhY2tbXSA9ICR0aGlzLT5wb3M7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiByZXN0b3JlKCkgewoJCWlmICggJHRoaXMtPnBvcyA+ICR0aGlzLT5mdXJ0aGVzdCApIHsKCQkJJHRoaXMtPmZ1cnRoZXN0ID0gJHRoaXMtPnBvczsKCQl9CgkJJHRoaXMtPnBvcyA9IGFycmF5X3BvcCggJHRoaXMtPnNhdmVTdGFjayApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gZm9yZ2V0KCkgewoJCWFycmF5X3BvcCggJHRoaXMtPnNhdmVTdGFjayApOwoJfQoKCS8qKgoJICogRGV0ZXJtaW5lIGlmIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNwZWNpZmllZCBvZmZzZXQgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhIHdoaXRlIHNwYWNlLgoJICoKCSAqIEBwYXJhbSBpbnQgJG9mZnNldAoJICogQHJldHVybiBib29sCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKCAkb2Zmc2V0ID0gMCApIHsKCQkvLyBAcGhhbi1zdXBwcmVzcy1uZXh0LWxpbmUgUGhhblBhcmFtU3VzcGljaW91c09yZGVyIEZhbHNlIHBvc2l0aXZlCgkJcmV0dXJuIHN0cnBvcyggIiBcdFxuXHJcdlxmIiwgJHRoaXMtPmlucHV0WyR0aGlzLT5wb3MgKyAkb2Zmc2V0XSApICE9PSBmYWxzZTsKCX0KCgkvKioKCSAqIE1hdGNoIGEgc2luZ2xlIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdG9rCgkgKiBAcmV0dXJuIHN0cmluZ3xudWxsCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2VySW5wdXQuJGNoYXIKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBtYXRjaENoYXIoICR0b2sgKSB7CgkJaWYgKCAoICR0aGlzLT5wb3MgPCAkdGhpcy0+aW5wdXRfbGVuICkgJiYgKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICR0b2sgKSApIHsKCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKCAxICk7CgkJCXJldHVybiAkdG9rOwoJCX0KCX0KCgkvKioKCSAqIE1hdGNoIGEgcmVnZXhwIGZyb20gdGhlIGN1cnJlbnQgc3RhcnQgcG9pbnQKCSAqCgkgKiBAcmV0dXJuIHN0cmluZ3xhcnJheXxudWxsCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2VySW5wdXQuJHJlCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gbWF0Y2hSZWcoICR0b2sgKSB7CgkJaWYgKCBwcmVnX21hdGNoKCAkdG9rLCAkdGhpcy0+aW5wdXQsICRtYXRjaCwgMCwgJHRoaXMtPnBvcyApICkgewoJCQkkdGhpcy0+c2tpcFdoaXRlc3BhY2UoIHN0cmxlbiggJG1hdGNoWzBdICkgKTsKCQkJcmV0dXJuIGNvdW50KCAkbWF0Y2ggKSA9PT0gMSA/ICRtYXRjaFswXSA6ICRtYXRjaDsKCQl9Cgl9CgoJLyoqCgkgKiBNYXRjaCBhbiBleGFjdCBzdHJpbmcgb2YgY2hhcmFjdGVycy4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0b2sKCSAqIEByZXR1cm4gc3RyaW5nfG51bGwKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNwYXJzZXJJbnB1dC4kc3RyCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gbWF0Y2hTdHIoICR0b2sgKSB7CgkJJHRva0xlbmd0aCA9IHN0cmxlbiggJHRvayApOwoJCWlmICgKCQkJKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApICYmCgkJCXN1YnN0ciggJHRoaXMtPmlucHV0LCAkdGhpcy0+cG9zLCAkdG9rTGVuZ3RoICkgPT09ICR0b2sKCQkpIHsKCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKCAkdG9rTGVuZ3RoICk7CgkJCXJldHVybiAkdG9rOwoJCX0KCX0KCgkvKioKCSAqIEBwYXJhbSBpbnR8bnVsbCAkbG9jCgkgKiBAcmV0dXJuIGFycmF5fHN0cmluZ3x2b2lkfG51bGwKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2VySW5wdXQuJHF1b3RlZAoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUXVvdGVkKCAkbG9jID0gbnVsbCApIHsKCQkkcG9zID0gJGxvYyA/PyAkdGhpcy0+cG9zOwoJCSRzdGFydENoYXIgPSAkdGhpcy0+aW5wdXRbICRwb3MgXSA/PyAnJzsKCQlpZiAoICRzdGFydENoYXIgIT09ICdcJycgJiYgJHN0YXJ0Q2hhciAhPT0gJyInICkgewoJCQlyZXR1cm47CgkJfQoJCSRjdXJyZW50UG9zID0gJHBvczsKCQkkaSA9IDE7CgkJd2hpbGUgKCAkY3VycmVudFBvcyArICRpIDwgJHRoaXMtPmlucHV0X2xlbiApIHsKCQkJLy8gT3B0aW1pemF0aW9uOiBTa2lwIG92ZXIgaXJyZWxldmFudCBjaGFycyB3aXRob3V0IHNsb3cgbG9vcAoJCQkkaSArPSBzdHJjc3BuKCAkdGhpcy0+aW5wdXQsICJcblxyJHN0YXJ0Q2hhclxcIiwgJGN1cnJlbnRQb3MgKyAkaSApOwoJCQlzd2l0Y2ggKCAkdGhpcy0+aW5wdXRbJGN1cnJlbnRQb3MgKyAkaSsrXSApIHsKCQkJCWNhc2UgIlxcIjoKCQkJCQkkaSsrOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiXHIiOgoJCQkJY2FzZSAiXG4iOgoJCQkJCWJyZWFrOwoJCQkJY2FzZSAkc3RhcnRDaGFyOgoJCQkJCS8vIE5PVEU6IE91ciBvcHRpbWl6YXRpb24gbWVhbnMgd2UgbG9vayBhaGVhZCBpbnN0ZWFkIG9mIGJlaGluZCwKCQkJCQkvLyBzbyBubyArMXMgaGVyZS4KCQkJCQkkc3RyID0gc3Vic3RyKCAkdGhpcy0+aW5wdXQsICRjdXJyZW50UG9zLCAkaSApOwoJCQkJCWlmICggISRsb2MgJiYgJGxvYyAhPT0gMCApIHsKCQkJCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKCAkaSApOwoJCQkJCQlyZXR1cm4gJHN0cjsKCQkJCQl9CgkJCQkJcmV0dXJuIFsgJHN0YXJ0Q2hhciwgJHN0ciBdOwoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCS8qKgoJICogUGVybWlzc2l2ZSBwYXJzaW5nLiBJZ25vcmVzIGV2ZXJ5dGhpbmcgZXhjZXB0IG1hdGNoaW5nIHt9IFtdICgpIGFuZCBxdW90ZXMKCSAqIHVudGlsIG1hdGNoaW5nIHRva2VuIChvdXRzaWRlIG9mIGJsb2NrcykKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2VySW5wdXQuJHBhcnNlVW50aWwKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVVudGlsKCAkdG9rICkgewoJCSRxdW90ZSA9ICcnOwoJCSRyZXR1cm5WYWwgPSBudWxsOwoJCSRpbkNvbW1lbnQgPSBmYWxzZTsKCQkkYmxvY2tEZXB0aCA9IDA7CgkJJGJsb2NrU3RhY2sgPSBbXTsKCQkkcGFyc2VHcm91cHMgPSBbXTsKCQkkc3RhcnRQb3MgPSAkdGhpcy0+cG9zOwoJCSRsYXN0UG9zID0gJHRoaXMtPnBvczsKCQkkaSA9ICR0aGlzLT5wb3M7CgkJJGxvb3AgPSB0cnVlOwoJCWlmICggaXNfc3RyaW5nKCAkdG9rICkgKSB7CgkJCSR0ZXN0Q2hhciA9IHN0YXRpYyBmdW5jdGlvbiAoICRjaGFyICkgdXNlICggJHRvayApIHsKCQkJCXJldHVybiAkdG9rID09PSAkY2hhcjsKCQkJfTsKCQl9IGVsc2UgewoJCQkkdGVzdENoYXIgPSBzdGF0aWMgZnVuY3Rpb24gKCAkY2hhciApIHVzZSAoICR0b2sgKSB7CgkJCQlyZXR1cm4gaW5fYXJyYXkoICRjaGFyLCAkdG9rICk7CgkJCX07CgkJfQoJCWRvIHsKCQkJJG5leHRDaGFyID0gJHRoaXMtPmlucHV0WyRpXTsKCQkJaWYgKCAkYmxvY2tEZXB0aCA9PT0gMCAmJiAkdGVzdENoYXIoICRuZXh0Q2hhciApICkgewoJCQkJJHJldHVyblZhbCA9IHN1YnN0ciggJHRoaXMtPmlucHV0LCAkbGFzdFBvcywgJGkgLSAkbGFzdFBvcyApOwoJCQkJaWYgKCAkcmV0dXJuVmFsICkgewoJCQkJCSRwYXJzZUdyb3Vwc1tdID0gJHJldHVyblZhbDsKCQkJCX0gZWxzZSB7CgkJCQkJJHBhcnNlR3JvdXBzW10gPSAnICc7CgkJCQl9CgkJCQkkcmV0dXJuVmFsID0gJHBhcnNlR3JvdXBzOwoJCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKCAkaSAtICRzdGFydFBvcyApOwoJCQkJJGxvb3AgPSBmYWxzZTsKCQkJfSBlbHNlIHsKCQkJCWlmICggJGluQ29tbWVudCApIHsKCQkJCQlpZiAoICRuZXh0Q2hhciA9PT0gJyonICYmICggJHRoaXMtPmlucHV0WyRpICsgMV0gPz8gJycgKSA9PT0gJy8nICkgewoJCQkJCQkkaSsrOwoJCQkJCQkkYmxvY2tEZXB0aC0tOwoJCQkJCQkkaW5Db21tZW50ID0gZmFsc2U7CgkJCQkJfQoJCQkJCSRpKys7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCQlzd2l0Y2ggKCAkbmV4dENoYXIgKSB7CgkJCQkJY2FzZSAnXFwnOgoJCQkJCQkkaSsrOwoJCQkJCQkkbmV4dENoYXIgPSAkdGhpcy0+aW5wdXRbJGldID8/ICcnOwoJCQkJCQkkcGFyc2VHcm91cHNbXSA9IHN1YnN0ciggJHRoaXMtPmlucHV0LCAkbGFzdFBvcywgJGkgLSAkbGFzdFBvcyArIDEgKTsKCQkJCQkJJGxhc3RQb3MgPSAkaSArIDE7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJy8nOgoJCQkJCQlpZiAoICggJHRoaXMtPmlucHV0WyRpICsgMV0gPz8gJycgKSA9PT0gJyonICkgewoJCQkJCQkJJGkrKzsKCQkJCQkJCSRpbkNvbW1lbnQgPSB0cnVlOwoJCQkJCQkJJGJsb2NrRGVwdGgrKzsKCQkJCQkJfQoJCQkJCQlicmVhazsKCQkJCQljYXNlICdcJyc6CgkJCQkJY2FzZSAnIic6CgkJCQkJCSRxdW90ZSA9ICR0aGlzLT5wYXJzZVF1b3RlZCggJGkgKTsKCQkJCQkJaWYgKCAkcXVvdGUgKSB7CgkJCQkJCQkkcGFyc2VHcm91cHNbXSA9IHN1YnN0ciggJHRoaXMtPmlucHV0LCAkbGFzdFBvcywgJGkgLSAkbGFzdFBvcyApOwoJCQkJCQkJJHBhcnNlR3JvdXBzW10gPSAkcXVvdGU7CgkJCQkJCQkkaSArPSBzdHJsZW4oICRxdW90ZVsxXSApIC0gMTsKCQkJCQkJCSRsYXN0UG9zID0gJGkgKyAxOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKCAkaSAtICRzdGFydFBvcyApOwoJCQkJCQkJJHJldHVyblZhbCA9ICRuZXh0Q2hhcjsKCQkJCQkJCSRsb29wID0gZmFsc2U7CgkJCQkJCX0KCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAneyc6CgkJCQkJCSRibG9ja1N0YWNrW10gPSAnfSc7CgkJCQkJCSRibG9ja0RlcHRoKys7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJygnOgoJCQkJCQkkYmxvY2tTdGFja1tdID0gJyknOwoJCQkJCQkkYmxvY2tEZXB0aCsrOwoJCQkJCQlicmVhazsKCQkJCQljYXNlICdbJzoKCQkJCQkJJGJsb2NrU3RhY2tbXSA9ICddJzsKCQkJCQkJJGJsb2NrRGVwdGgrKzsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAnfSc6CgkJCQkJY2FzZSAnKSc6CgkJCQkJY2FzZSAnXSc6CgkJCQkJCSRleHBlY3RlZCA9IGFycmF5X3BvcCggJGJsb2NrU3RhY2sgKTsKCQkJCQkJaWYgKCAkbmV4dENoYXIgPT09ICRleHBlY3RlZCApIHsKCQkJCQkJCSRibG9ja0RlcHRoLS07CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQkvLyBtb3ZlIHRoZSBwYXJzZXIgdG8gdGhlIGVycm9yIGFuZCByZXR1cm4gZXhwZWN0ZWQ7CgkJCQkJCQkkdGhpcy0+c2tpcFdoaXRlc3BhY2UoICRpIC0gJHN0YXJ0UG9zICk7CgkJCQkJCQkkcmV0dXJuVmFsID0gJGV4cGVjdGVkOwoJCQkJCQkJJGxvb3AgPSBmYWxzZTsKCQkJCQkJfQoJCQkJfQoJCQkJJGkrKzsKCQkJCWlmICggJGkgPiAkdGhpcy0+aW5wdXRfbGVuICkgewoJCQkJCSRsb29wID0gZmFsc2U7CgkJCQl9CgkJCX0KCQl9IHdoaWxlICggJGxvb3AgKTsKCgkJcmV0dXJuICRyZXR1cm5WYWwgPzogbnVsbDsKCX0KCgkvKioKCSAqIFNhbWUgYXMgbWF0Y2goKSwgYnV0IGRvbid0IGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHBhcnNlciwKCSAqIGp1c3QgcmV0dXJuIHRoZSBtYXRjaC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0b2sKCSAqIEByZXR1cm4gaW50fGZhbHNlCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGVla1JlZyggJHRvayApIHsKCQlyZXR1cm4gcHJlZ19tYXRjaCggJHRvaywgJHRoaXMtPmlucHV0LCAkbWF0Y2gsIDAsICR0aGlzLT5wb3MgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHRvawoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBlZWtDaGFyKCAkdG9rICkgewoJCXJldHVybiAoICR0aGlzLT5wb3MgPCAkdGhpcy0+aW5wdXRfbGVuICkgJiYgKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICR0b2sgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBpbnQgJGxlbmd0aAoJICogQHNlZSBsZXNzLTIuNS4zLmpzI3NraXBXaGl0ZXNwYWNlCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gc2tpcFdoaXRlc3BhY2UoICRsZW5ndGggKSB7CgkJJHRoaXMtPnBvcyArPSAkbGVuZ3RoOwoKCQlmb3IgKCA7ICR0aGlzLT5wb3MgPCAkdGhpcy0+aW5wdXRfbGVuOyAkdGhpcy0+cG9zKysgKSB7CgkJCSRjdXJyZW50Q2hhciA9ICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXTsKCgkJCWlmICggJHRoaXMtPmF1dG9Db21tZW50QWJzb3JiICYmICRjdXJyZW50Q2hhciA9PT0gJy8nICkgewoJCQkJJG5leHRDaGFyID0gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3MgKyAxXSA/PyAnJzsKCQkJCWlmICggJG5leHRDaGFyID09PSAnLycgKSB7CgkJCQkJJGNvbW1lbnQgPSBbICdpbmRleCcgPT4gJHRoaXMtPnBvcywgJ2lzTGluZUNvbW1lbnQnID0+IHRydWUgXTsKCQkJCQkkbmV4dE5ld0xpbmUgPSBzdHJwb3MoICR0aGlzLT5pbnB1dCwgIlxuIiwgJHRoaXMtPnBvcyArIDIgKTsKCQkJCQlpZiAoICRuZXh0TmV3TGluZSA9PT0gZmFsc2UgKSB7CgkJCQkJCSRuZXh0TmV3TGluZSA9ICR0aGlzLT5pbnB1dF9sZW4gPz8gMDsKCQkJCQl9CgkJCQkJJHRoaXMtPnBvcyA9ICRuZXh0TmV3TGluZTsKCQkJCQkkY29tbWVudFsndGV4dCddID0gc3Vic3RyKCAkdGhpcy0+aW5wdXQsICR0aGlzLT5wb3MsICRuZXh0TmV3TGluZSAtICR0aGlzLT5wb3MgKTsKCQkJCQkkdGhpcy0+Y29tbWVudFN0b3JlW10gPSAkY29tbWVudDsKCQkJCQljb250aW51ZTsKCQkJCX0gZWxzZWlmICggJG5leHRDaGFyID09PSAnKicgKSB7CgkJCQkJJG5leHRTdGFyU2xhc2ggPSBzdHJwb3MoICR0aGlzLT5pbnB1dCwgIiovIiwgJHRoaXMtPnBvcyArIDIgKTsKCQkJCQlpZiAoICRuZXh0U3RhclNsYXNoICE9PSBmYWxzZSApIHsKCQkJCQkJJGNvbW1lbnQgPSBbCgkJCQkJCQknaW5kZXgnID0+ICR0aGlzLT5wb3MsCgkJCQkJCQkndGV4dCcgPT4gc3Vic3RyKCAkdGhpcy0+aW5wdXQsICR0aGlzLT5wb3MsICRuZXh0U3RhclNsYXNoICsgMiAtICR0aGlzLT5wb3MgKSwKCQkJCQkJCSdpc0xpbmVDb21tZW50JyA9PiBmYWxzZSwKCQkJCQkJXTsKCQkJCQkJJHRoaXMtPnBvcyArPSBzdHJsZW4oICRjb21tZW50Wyd0ZXh0J10gKSAtIDE7CgkJCQkJCSR0aGlzLT5jb21tZW50U3RvcmVbXSA9ICRjb21tZW50OwoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQl9CgkJCQlicmVhazsKCQkJfQoKCQkJLy8gT3B0aW1pemF0aW9uOiBTa2lwIG92ZXIgaXJyZWxldmFudCBjaGFycyB3aXRob3V0IHNsb3cgbG9vcAoJCQkkc2tpcCA9IHN0cnNwbiggJHRoaXMtPmlucHV0LCAiIFxuXHRcciIsICR0aGlzLT5wb3MgKTsKCQkJaWYgKCAkc2tpcCApIHsKCQkJCSR0aGlzLT5wb3MgKz0gJHNraXAgLSAxOwoJCQl9CgkJCWlmICggISRza2lwICYmICR0aGlzLT5wb3MgPCAkdGhpcy0+aW5wdXRfbGVuICkgewoJCQkJYnJlYWs7CgkJCX0KCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBhIHRva2VuIGZyb20gYSByZWdleHAgb3IgbWV0aG9kIG5hbWUgc3RyaW5nCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdG9rCgkgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG1zZwoJICogQHJldHVybiBzdHJpbmd8YXJyYXl8bmV2ZXIKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjUGFyc2VyLmV4cGVjdAoJICovCglwcml2YXRlIGZ1bmN0aW9uIGV4cGVjdCggJHRvaywgJG1zZyA9IG51bGwgKSB7CgkJJHJlc3VsdCA9ICR0aGlzLT5tYXRjaFJlZyggJHRvayApOwoJCWlmICggJHJlc3VsdCApIHsKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCSR0aGlzLT5FcnJvciggJG1zZyA/PyAiZXhwZWN0ZWQgJyIgLiAkdG9rIC4gIicgZ290ICciIC4gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdIC4gIiciICk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICR0b2sKCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkbXNnCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gZXhwZWN0Q2hhciggJHRvaywgJG1zZyA9IG51bGwgKSB7CgkJJHJlc3VsdCA9ICR0aGlzLT5tYXRjaENoYXIoICR0b2sgKTsKCQlpZiAoICEkcmVzdWx0ICkgewoJCQkkbXNnID0gJG1zZyA/OiAiRXhwZWN0ZWQgJyIgLiAkdG9rIC4gIicgZ290ICciIC4gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdIC4gIiciOwoJCQkkdGhpcy0+RXJyb3IoICRtc2cgKTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRzdHIKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjUGFyc2VySW5wdXQuc3RhcnQKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZXJJbnB1dFN0YXJ0KCAkc3RyICkgewoJCSR0aGlzLT5wb3MgPSAkdGhpcy0+ZnVydGhlc3QgPSAwOwoJCSR0aGlzLT5pbnB1dCA9ICRzdHI7CgkJJHRoaXMtPmlucHV0X2xlbiA9IHN0cmxlbiggJHN0ciApOwoJCSR0aGlzLT5za2lwV2hpdGVzcGFjZSggMCApOwoJfQoKCS8qKgoJICogIFVzZWQgYWZ0ZXIgaW5pdGlhbCBwYXJzaW5nIHRvIGNyZWF0ZSBub2RlcyBvbiB0aGUgZmx5CgkgKgoJICogQHBhcmFtIHN0cmluZyAkc3RyIHN0cmluZyB0byBwYXJzZQoJICogQHBhcmFtIHN0cmluZ1tdICRwYXJzZUxpc3QgYXJyYXkgb2YgcGFyc2VycyB0byBydW4gaW5wdXQgdGhyb3VnaCBlLmcuIFsidmFsdWUiLCAiaW1wb3J0YW50Il0KCSAqIEBwYXJhbSBpbnQgJGN1cnJlbnRJbmRleCBzdGFydCBudW1iZXIgdG8gYmVnaW4gaW5kZXhpbmcKCSAqIEBwYXJhbSBhcnJheSAkZmlsZUluZm8gZmlsZUluZm8gdG8gYXR0YWNoIHRvIGNyZWF0ZWQgbm9kZXMKCSAqIEByZXR1cm4gYXJyYXkKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjUGFyc2VyLnBhcnNlTm9kZQoJICovCglwdWJsaWMgZnVuY3Rpb24gcGFyc2VOb2RlKCAkc3RyLCBhcnJheSAkcGFyc2VMaXN0LCAkY3VycmVudEluZGV4LCAkZmlsZUluZm8gKSB7CgkJJHJldHVybk5vZGVzID0gW107CgkJdHJ5IHsKCQkJJHRoaXMtPnBhcnNlcklucHV0U3RhcnQoICRzdHIgKTsKCQkJZm9yZWFjaCAoICRwYXJzZUxpc3QgYXMgJHAgKSB7CgkJCQkkaSA9ICR0aGlzLT5wb3M7CgkJCQkkbWV0aG9kID0gJ3BhcnNlJyAuIHVjZmlyc3QoICRwICk7CgkJCQlpZiAoICFtZXRob2RfZXhpc3RzKCAkdGhpcywgJG1ldGhvZCApICkgewoJCQkJCXRocm93IG5ldyBDb21waWxlRXJyb3IoICdVbmtub3duIHBhcnNlciAnIC4gJHAgKTsKCQkJCX0KCQkJCSRyZXN1bHQgPSAkdGhpcy0+JG1ldGhvZCgpOwoJCQkJaWYgKCAkcmVzdWx0ICkgewoJCQkJCSRyZXN1bHQtPmluZGV4ID0gJGkgKyAkY3VycmVudEluZGV4OwoJCQkJCSRyZXN1bHQtPmN1cnJlbnRGaWxlSW5mbyA9ICRmaWxlSW5mbzsKCQkJCQkkcmV0dXJuTm9kZXNbXSA9ICRyZXN1bHQ7CgkJCQl9IGVsc2UgewoJCQkJCSRyZXR1cm5Ob2Rlc1tdID0gbnVsbDsKCQkJCX0KCQkJfQoJCQlpZiAoICR0aGlzLT5wb3MgPj0gJHRoaXMtPmlucHV0X2xlbiApIHsKCQkJCXJldHVybiBbIG51bGwsICRyZXR1cm5Ob2RlcyBdOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIFsgdHJ1ZSwgbnVsbCBdOwoJCQl9CgkJfSBjYXRjaCAoIExlc3NfRXhjZXB0aW9uX1BhcnNlciAkZSApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX1BhcnNlcigKCQkJCSRlLT5nZXRNZXNzYWdlKCksCgkJCQkkZSwKCQkJCSggJGUtPmluZGV4ID8/IDAgKSArICRjdXJyZW50SW5kZXgsCgkJCQkkZmlsZUluZm8KCQkJKTsKCQl9Cgl9CgoJLy8KCS8vIEhlcmUgaW4sIHRoZSBwYXJzaW5nIHJ1bGVzL2Z1bmN0aW9ucwoJLy8KCS8vIFRoZSBiYXNpYyBzdHJ1Y3R1cmUgb2YgdGhlIHN5bnRheCB0cmVlIGdlbmVyYXRlZCBpcyBhcyBmb2xsb3dzOgoJLy8KCS8vICAgUnVsZXNldCAtPiAgRGVjbGFyYXRpb24gLT4gVmFsdWUgLT4gRXhwcmVzc2lvbiAtPiBFbnRpdHkKCS8vCgkvLyBIZXJlJ3Mgc29tZSBMRVNTIGNvZGU6CgkvLwoJLy8JLmNsYXNzIHsKCS8vCSAgY29sb3I6ICNmZmY7CgkvLwkgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CgkvLwkgIHdpZHRoOiBAdyArIDRweDsKCS8vCSAgPiAuY2hpbGQgey4uLn0KCS8vCX0KCS8vCgkvLyBBbmQgaGVyZSdzIHdoYXQgdGhlIHBhcnNlIHRyZWUgbWlnaHQgbG9vayBsaWtlOgoJLy8KCS8vCSBSdWxlc2V0IChTZWxlY3RvciAnLmNsYXNzJywgWwoJLy8JCSBEZWNsYXJhdGlvbiAoImNvbG9yIiwgIFZhbHVlIChbRXhwcmVzc2lvbiBbQ29sb3IgI2ZmZl1dKSkKCS8vCQkgRGVjbGFyYXRpb24gKCJib3JkZXIiLCBWYWx1ZSAoW0V4cHJlc3Npb24gW0RpbWVuc2lvbiAxcHhdW0tleXdvcmQgInNvbGlkIl1bQ29sb3IgIzAwMF1dKSkKCS8vCQkgRGVjbGFyYXRpb24gKCJ3aWR0aCIsICBWYWx1ZSAoW0V4cHJlc3Npb24gW09wZXJhdGlvbiAiKyIgW1ZhcmlhYmxlICJAdyJdW0RpbWVuc2lvbiA0cHhdXV0pKQoJLy8JCSBSdWxlc2V0IChTZWxlY3RvciBbRWxlbWVudCAnPicsICcuY2hpbGQnXSwgWy4uLl0pCgkvLwkgXSkKCS8vCgkvLyAgSW4gZ2VuZXJhbCwgbW9zdCBydWxlcyB3aWxsIHRyeSB0byBwYXJzZSBhIHRva2VuIHdpdGggdGhlIGAkKClgIGZ1bmN0aW9uLCBhbmQgaWYgdGhlIHJldHVybgoJLy8gIHZhbHVlIGlzIHRydWx5LCB3aWxsIHJldHVybiBhIG5ldyBub2RlLCBvZiB0aGUgcmVsZXZhbnQgdHlwZS4gU29tZXRpbWVzLCB3ZSBuZWVkIHRvIGNoZWNrCgkvLyAgZmlyc3QsIGJlZm9yZSBwYXJzaW5nLCB0aGF0J3Mgd2hlbiB3ZSB1c2UgYHBlZWsoKWAuCgkvLwoKCS8vCgkvLyBUaGUgYHByaW1hcnlgIHJ1bGUgaXMgdGhlICplbnRyeSogYW5kICpleGl0KiBwb2ludCBvZiB0aGUgcGFyc2VyLgoJLy8gVGhlIHJ1bGVzIGhlcmUgY2FuIGFwcGVhciBhdCBhbnkgbGV2ZWwgb2YgdGhlIHBhcnNlIHRyZWUuCgkvLwoJLy8gVGhlIHJlY3Vyc2l2ZSBuYXR1cmUgb2YgdGhlIGdyYW1tYXIgaXMgYW4gaW50ZXJwbGF5IGJldHdlZW4gdGhlIGBibG9ja2AKCS8vIHJ1bGUsIHdoaWNoIHJlcHJlc2VudHMgYHsgLi4uIH1gLCB0aGUgYHJ1bGVzZXRgIHJ1bGUsIGFuZCB0aGlzIGBwcmltYXJ5YCBydWxlLAoJLy8gYXMgcmVwcmVzZW50ZWQgYnkgdGhpcyBzaW1wbGlmaWVkIGdyYW1tYXI6CgkvLwoJLy8JIHByaW1hcnkgIOKGkiAgKHJ1bGVzZXQgfCBkZWNsYXJhdGlvbiApKwoJLy8JIHJ1bGVzZXQgIOKGkiAgc2VsZWN0b3IrIGJsb2NrCgkvLwkgYmxvY2sJ4oaSICAneycgcHJpbWFyeSAnfScKCS8vCgkvLyBPbmx5IGF0IG9uZSBwb2ludCBpcyB0aGUgcHJpbWFyeSBydWxlIG5vdCBjYWxsZWQgZnJvbSB0aGUKCS8vIGJsb2NrIHJ1bGU6IGF0IHRoZSByb290IGxldmVsLgoJLy8KCS8vIEBzZWUgbGVzcy0yLjUuMy5qcyNwYXJzZXJzLnByaW1hcnkKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VQcmltYXJ5KCkgewoJCSRyb290ID0gW107CgoJCXdoaWxlICggdHJ1ZSApIHsKCgkJCXdoaWxlICggdHJ1ZSApIHsKCQkJCSRub2RlID0gJHRoaXMtPnBhcnNlQ29tbWVudCgpOwoJCQkJaWYgKCAhJG5vZGUgKSB7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQkkcm9vdFtdID0gJG5vZGU7CgkJCX0KCgkJCS8vIGFsd2F5cyBwcm9jZXNzIGNvbW1lbnRzIGJlZm9yZSBkZWNpZGluZyBpZiBmaW5pc2hlZAoJCQlpZiAoICR0aGlzLT5wb3MgPj0gJHRoaXMtPmlucHV0X2xlbiApIHsKCQkJCWJyZWFrOwoJCQl9CgoJCQlpZiAoICR0aGlzLT5wZWVrQ2hhciggJ30nICkgKSB7CgkJCQlicmVhazsKCQkJfQoKCQkJJG5vZGUgPSAkdGhpcy0+cGFyc2VFeHRlbmQoIHRydWUgKTsKCQkJaWYgKCAkbm9kZSApIHsKCQkJCSRyb290ID0gYXJyYXlfbWVyZ2UoICRyb290LCAkbm9kZSApOwoJCQkJY29udGludWU7CgkJCX0KCgkJCSRub2RlID0gJHRoaXMtPnBhcnNlTWl4aW5EZWZpbml0aW9uKCkKCQkJCS8vIE9wdGltaXNhdGlvbjogTmFtZVZhbHVlIGlzIHNwZWNpZmljIHRvIGxlc3MucGhwCgkJCQkvKioKCQkJCSAqIFRPRE8gZW5hYmxpbmcgJHRoaXMtPnBhcnNlTmFtZVZhbHVlIGNhdXNlcyBwcm9wZXJ0eS1hY2Nlc3NvcnMgdG8gZmFpbCB3aXRoCgkJCQkgKgoJCQkJICogJ2Vycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24gYGxpZ2h0ZW5gIFRoZSBmaXJzdCBhcmd1bWVudCB0byBsaWdodGVuIG11c3QgYmUgYQoJCQkJICogY29sb3IgaW5kZXg6IDE0NiBpbiBwcm9wZXJ0eS1hY2Nlc3NvcnMubGVzcyBvbiBsaW5lIDksCgkJCQkgKgoJCQkJICogbm90ZTogdGhlIExlc3NfVHJlZV9OYW1lVmFsdWUgc3BlY2lmaWVzIHRoYXQgaXQgbWF5IGJyZWFrIGNvbG9yIGtleXdvcmQKCQkJCSAqIGludGVycHJldGF0aW9uCgkJCQkgKi8KCQkJCS8vID8/ICR0aGlzLT5wYXJzZU5hbWVWYWx1ZSgpCgkJCQk/PyAkdGhpcy0+cGFyc2VEZWNsYXJhdGlvbigpCgkJCQk/PyAkdGhpcy0+cGFyc2VSdWxlc2V0KCkKCQkJCT8/ICR0aGlzLT5wYXJzZU1peGluQ2FsbCggZmFsc2UsIGZhbHNlICkKCQkJCT8/ICR0aGlzLT5wYXJzZVZhcmlhYmxlQ2FsbCgpCgkJCQk/PyAkdGhpcy0+cGFyc2VFbnRpdGllc0NhbGwoKQoJCQkJPz8gJHRoaXMtPnBhcnNlQXRSdWxlKCk7CgoJCQlpZiAoICRub2RlICkgewoJCQkJJHJvb3RbXSA9ICRub2RlOwoJCQl9IGVsc2VpZiAoICEkdGhpcy0+bWF0Y2hSZWcoICcvXFxHW1xzXG47XSsvJyApICkgewoJCQkJYnJlYWs7CgkJCX0KCgkJfQoKCQlyZXR1cm4gJHJvb3Q7Cgl9CgoJLyoqCgkgKiBjb21tZW50cyBhcmUgY29sbGVjdGVkIGJ5IHRoZSBtYWluIHBhcnNpbmcgbWVjaGFuaXNtIGFuZCB0aGVuIGFzc2lnbmVkIHRvIG5vZGVzCgkgKiB3aGVyZSB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgYWxsb3dzIGl0CgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfQ29tbWVudHx2b2lkCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2Vycy5jb21tZW50CgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VDb21tZW50KCkgewoJCSRjb21tZW50ID0gYXJyYXlfc2hpZnQoICR0aGlzLT5jb21tZW50U3RvcmUgKTsKCQlpZiAoICRjb21tZW50ICkgewoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db21tZW50KAoJCQkJJGNvbW1lbnRbJ3RleHQnXSwKCQkJCSRjb21tZW50Wydpc0xpbmVDb21tZW50J10sCgkJCQkkY29tbWVudFsnaW5kZXgnXSwKCQkJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbwoJCQkpOwoJCX0KCX0KCgkvKioKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2Vycy5lbnRpdGllcy5taXhpbkxvb2t1cAoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNNaXhpbkxvb2t1cCgpIHsKCQlyZXR1cm4gJHRoaXMtPnBhcnNlTWl4aW5DYWxsKCB0cnVlLCB0cnVlICk7Cgl9CgoJLyoqCgkgKiBBIHN0cmluZywgd2hpY2ggc3VwcG9ydHMgZXNjYXBpbmcgIiBhbmQgJwoJICoKCSAqCSAibWlsa3kgd2F5IiAnaGVcJ3MgdGhlIG9uZSEnCgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfUXVvdGVkfG51bGwKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjZW50aXRpZXMucXVvdGVkCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc1F1b3RlZCggJGZvcmNlRXNjYXBlZCA9IGZhbHNlICkgewoJCS8vIE9wdGltaXphdGlvbjogSW5saW5lIG1hdGNoQ2hhcigpIGhlcmUsIHdpdGggaXRzIHNraXBXaGl0ZXNwYWNlKDEpIGNhbGwgYmVsb3cKCQkkaXNFc2NhcGVkID0gKCAkdGhpcy0+aW5wdXRbICR0aGlzLT5wb3MgXSA/PyBudWxsICkgPT09ICd+JzsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCWlmICggJGZvcmNlRXNjYXBlZCAmJiAhJGlzRXNjYXBlZCApIHsKCQkJcmV0dXJuOwoJCX0KCQkvLyBPcHRpbWl6YXRpb246IE1vdmUgc2F2ZSgpIGRvd24gdG8gYXZvaWQgc2F2ZSgpK3Jlc3RvcmUoKQoJCS8vIG92ZXJoZWFkIGR1cmluZyB0aGUgZWFybHkgcmV0dXJuIGFib3ZlIHdoaWNoIGlzIGEgaG90IGNvZGUgcGF0aC4KCQkkdGhpcy0+c2F2ZSgpOwoJCWlmICggJGlzRXNjYXBlZCApIHsKCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKCAxICk7CgkJfQoKCQkkc3RyID0gJHRoaXMtPnBhcnNlUXVvdGVkKCk7CgkJaWYgKCAhJHN0ciApIHsKCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJcmV0dXJuOwoJCX0KCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfUXVvdGVkKAoJCQkkc3RyWzBdLAoJCQlzdWJzdHIoICRzdHIsIDEsIC0xICksCgkJCSRpc0VzY2FwZWQsCgkJCSRpbmRleCwKCQkJJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvCgkJKTsKCX0KCgkvKioKCSAqIEEgY2F0Y2gtYWxsIHdvcmQsIHN1Y2ggYXM6CgkgKgoJICoJIGJsYWNrIGJvcmRlci1jb2xsYXBzZQoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX0tleXdvcmR8TGVzc19UcmVlX0NvbG9yfG51bGwKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2Vycy5lbnRpdGllcy5rZXl3b3JkCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc0tleXdvcmQoKSB7CgkJJGsgPSAkdGhpcy0+bWF0Y2hDaGFyKCAnJScgKQoJCQk/PyAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHXFxbPyg/OltcXHctXXxcXFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpK1xcXT8vJyApOwoJCWlmICggJGsgKSB7CgkJCXJldHVybiBMZXNzX1RyZWVfQ29sb3I6OmZyb21LZXl3b3JkKCAkayApID8/IG5ldyBMZXNzX1RyZWVfS2V5d29yZCggJGsgKTsKCQl9Cgl9CgoJLy8KCS8vIEEgZnVuY3Rpb24gY2FsbAoJLy8KCS8vCSByZ2IoMjU1LCAwLCAyNTUpCgkvLwoJLy8gV2UgYWxzbyB0cnkgdG8gY2F0Y2ggSUUncyBgYWxwaGEoKWAsIGJ1dCBsZXQgdGhlIGBhbHBoYWAgcGFyc2VyCgkvLyBkZWFsIHdpdGggdGhlIGRldGFpbHMuCgkvLwoJLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFyc2VkIHdpdGggdGhlIGBlbnRpdGllcy5hcmd1bWVudHNgIHBhcnNlci4KCS8vCgkvLyBAc2VlIGxlc3MtMy4xMy4xLmpzI3BhcnNlcnMuZW50aXRpZXMuY2FsbAoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzQ2FsbCgpIHsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQlpZiAoICR0aGlzLT5wZWVrUmVnKCAnL1xcR3VybFwoL2knICkgKSB7CgkJCXJldHVybjsKCQl9CgoJCSR0aGlzLT5zYXZlKCk7CgoJCSRuYW1lID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcRyhbXHctXSt8JXxwcm9naWQ6W1x3XC5dKylcKC8nICk7CgkJaWYgKCAhJG5hbWUgKSB7CgkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJcmV0dXJuOwoJCX0KCgkJJGFyZ3MgPSBudWxsOwoKCQkkbmFtZSA9ICRuYW1lWzFdOwoKCQkvLyBOT1RFOiBJbmxpbmUgZXF1aXZhbGVudCBvZiBsZXNzLTMuMTMuMS5qcyNjdXN0b21GdW5jQ2FsbAoJCSRuYW1lTEMgPSBzdHJ0b2xvd2VyKCAkbmFtZSApOwoJCWlmICggJG5hbWVMQyA9PT0gJ2FscGhhJyApIHsKCQkJJGFyZ3MgPSAkdGhpcy0+cGFyc2VBbHBoYSgpOwoJCQkvLyBOT1RFOiBFcXVpdmFsZW50IG9mIHN0b3A9dHJ1ZSBmb3IgcGFyc2VBbHBoYSBpbiBjdXN0b21GdW5jQ2FsbCgpCgkJCWlmICggJGFyZ3MgKSB7CgkJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCQlyZXR1cm4gJGFyZ3M7CgkJCX0KCQl9CgkJaWYgKCAkbmFtZUxDID09PSAnYm9vbGVhbicgfHwgJG5hbWVMQyA9PT0gJ2lmJyApIHsKCQkJJGFyZ3MgPSBbICR0aGlzLT5wYXJzZUNvbmRpdGlvbigpID8/ICR0aGlzLT5FcnJvciggJ2V4cGVjdGVkIGNvbmRpdGlvbicgKSBdOwoJCX0KCgkJJGFyZ3MgPSAkdGhpcy0+cGFyc2VFbnRpdGllc0FyZ3VtZW50cyggJGFyZ3MgKTsKCgkJaWYgKCAhJHRoaXMtPm1hdGNoQ2hhciggJyknICkgKSB7CgkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCXJldHVybjsKCQl9CgoJCSR0aGlzLT5mb3JnZXQoKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9DYWxsKCAkbmFtZSwgJGFyZ3MsICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvICk7Cgl9CgoJLyoqCgkgKiBQYXJzZSBhIGxpc3Qgb2YgYXJndW1lbnRzCgkgKgoJICogQHJldHVybiBhcnJheTxMZXNzX1RyZWVfQXNzaWdubWVudHxMZXNzX1RyZWVfRXhwcmVzc2lvbj4KCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2Vycy5lbnRpdGllcy5hcmd1bWVudHMKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzQXJndW1lbnRzKCAkcHJldkFyZ3MgPSBudWxsICkgewoJCS8vIE5PVEU6IEluIExlc3MuanMsIHByZXZBcmdzIGNhbiBiZSB1bmRlZmluZWQgKG5vIGFyZ3MgcGFyc2VkKSBvciBmYWxzZSAoc2V0IGJlbG93KS4KCQkvLyBXZSB0cmVhdCBib3RoIG9mIHRob3NlIGFzIG51bGwgaW4gUEhQIHNvIHRoYXQgd2UgY2FuIHVzZSA/PyB0byBlYXNpbHkgZGlzdGluZ3Vpc2gKCQkvLyB0aGVzZSwgd2l0aG91dCB0cmVhdGluZyBlbXB0eSBhcnJheSB0aGUgc2FtZSBhcyBmYWxzZS4KCQkkYXJnc0NvbW1hID0gJHByZXZBcmdzID8/IFtdOwoJCSRhcmdzU2VtaUNvbG9uID0gW107CgkJJGlzU2VtaUNvbG9uU2VwYXJhdGVkID0gZmFsc2U7CgkJJHRoaXMtPnNhdmUoKTsKCQl3aGlsZSAoIHRydWUgKSB7CgkJCWlmICggJHByZXZBcmdzICE9PSBudWxsICkgewoJCQkJJHByZXZBcmdzID0gbnVsbDsKCQkJfSBlbHNlIHsKCQkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZURldGFjaGVkUnVsZXNldCgpID8/ICR0aGlzLT5wYXJzZUVudGl0aWVzQXNzaWdubWVudCgpID8/ICR0aGlzLT5wYXJzZUV4cHJlc3Npb24oKTsKCQkJCWlmICggISR2YWx1ZSApIHsKCQkJCQlicmVhazsKCQkJCX0KCgkJCQlpZiAoICR2YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uICYmIGNvdW50KCAkdmFsdWUtPnZhbHVlICkgPT0gMSApIHsKCQkJCQkkdmFsdWUgPSAkdmFsdWUtPnZhbHVlWzBdOwoJCQkJfQoJCQkJJGFyZ3NDb21tYVtdID0gJHZhbHVlOwoJCQl9CgoJCQlpZiAoICR0aGlzLT5tYXRjaENoYXIoICcsJyApICkgewoJCQkJY29udGludWU7CgkJCX0KCQkJaWYgKCAkdGhpcy0+bWF0Y2hDaGFyKCAnOycgKSB8fCAkaXNTZW1pQ29sb25TZXBhcmF0ZWQgKSB7CgkJCQkkaXNTZW1pQ29sb25TZXBhcmF0ZWQgPSB0cnVlOwoJCQkJLy8gTk9URTogQXZvaWQgYXBwYXJlbnQgTGVzcy5qcyBidWcsIGFjY2Vzc2luZyB1bmRlZmluZWQgYXJnc0NvbW1hWzBdCgkJCQkkdmFsdWUgPSAhJGFyZ3NDb21tYSA/IG51bGwgOiBuZXcgTGVzc19UcmVlX1ZhbHVlKCAkYXJnc0NvbW1hICk7CgkJCQkkYXJnc1NlbWlDb2xvbltdID0gJHZhbHVlOwoJCQkJJGFyZ3NDb21tYSA9IFtdOwoJCQl9CgoJCX0KCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJcmV0dXJuICRpc1NlbWlDb2xvblNlcGFyYXRlZCA/ICRhcmdzU2VtaUNvbG9uIDogJGFyZ3NDb21tYTsKCX0KCgkvKiogQHJldHVybiBMZXNzX1RyZWVfRGltZW5zaW9ufExlc3NfVHJlZV9Db2xvcnxMZXNzX1RyZWVfUXVvdGVkfExlc3NfVHJlZV9Vbmljb2RlRGVzY3JpcHRvcnxudWxsICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNMaXRlcmFsKCkgewoJCXJldHVybiAkdGhpcy0+cGFyc2VFbnRpdGllc0RpbWVuc2lvbigpID8/ICR0aGlzLT5wYXJzZUVudGl0aWVzQ29sb3IoKSA/PyAkdGhpcy0+cGFyc2VFbnRpdGllc1F1b3RlZCgpID8/ICR0aGlzLT5wYXJzZVVuaWNvZGVEZXNjcmlwdG9yKCk7Cgl9CgoJLyoqCgkgKiBBc3NpZ25tZW50cyBhcmUgYXJndW1lbnQgZW50aXRpZXMgZm9yIGNhbGxzLgoJICoKCSAqIFRoZXkgYXJlIHByZXNlbnQgaW4gSUUgZmlsdGVyIHByb3BlcnRpZXMgYXMgc2hvd24gYmVsb3cuCgkgKgoJICoJIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKCAqb3BhY2l0eT01MCogKQoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX0Fzc2lnbm1lbnR8bnVsbAoJICogQHNlZSBsZXNzLTIuNS4zLmpzI3BhcnNlcnMuZW50aXRpZXMuYXNzaWdubWVudAoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNBc3NpZ25tZW50KCkgewoJCSRrZXkgPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHXHcrKD89XHM/PSkvJyApOwoJCWlmICggISRrZXkgKSB7CgkJCXJldHVybjsKCQl9CgoJCWlmICggISR0aGlzLT5tYXRjaENoYXIoICc9JyApICkgewoJCQlyZXR1cm47CgkJfQoKCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VFbnRpdHkoKTsKCQlpZiAoICR2YWx1ZSApIHsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQXNzaWdubWVudCggJGtleSwgJHZhbHVlICk7CgkJfQoJfQoKCS8vCgkvLyBQYXJzZSB1cmwoKSB0b2tlbnMKCS8vCgkvLyBXZSB1c2UgYSBzcGVjaWZpYyBydWxlIGZvciB1cmxzLCBiZWNhdXNlIHRoZXkgZG9uJ3QgcmVhbGx5IGJlaGF2ZSBsaWtlCgkvLyBzdGFuZGFyZCBmdW5jdGlvbiBjYWxscy4gVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgYXJndW1lbnQgZG9lc24ndCBoYXZlCgkvLyB0byBiZSBlbmNsb3NlZCB3aXRoaW4gYSBzdHJpbmcsIHNvIGl0IGNhbid0IGJlIHBhcnNlZCBhcyBhbiBFeHByZXNzaW9uLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc1VybCgpIHsKCQkkY2hhciA9ICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA/PyBudWxsOwoKCQkkdGhpcy0+YXV0b0NvbW1lbnRBYnNvcmIgPSBmYWxzZTsKCQkvLyBPcHRpbWlzYXRpb246ICd1JyBjaGVjayBpcyBzcGVjaWZpYyB0byBsZXNzLnBocAoJCWlmICggJGNoYXIgIT09ICd1JyB8fCAhJHRoaXMtPm1hdGNoUmVnKCAnL1xcR3VybFwoLycgKSApIHsKCQkJJHRoaXMtPmF1dG9Db21tZW50QWJzb3JiID0gdHJ1ZTsKCQkJcmV0dXJuOwoJCX0KCgkJJHZhbHVlID0gJHRoaXMtPnBhcnNlRW50aXRpZXNRdW90ZWQoKQoJCQk/PyAkdGhpcy0+cGFyc2VFbnRpdGllc1ZhcmlhYmxlKCkKCQkJPz8gJHRoaXMtPnBhcnNlRW50aXRpZXNQcm9wZXJ0eSgpCgkJCT8/ICR0aGlzLT5tYXRjaFJlZyggJy9cXEdkYXRhXDouKj9bXlwpXSsvJyApIC8vIFRPRE8gbGVzcyBkb2Vzbid0IGhhbmRsZSB0aGlzCgkJCT8/ICR0aGlzLT5tYXRjaFJlZyggJy9cXEcoPzooPzpcXFxcW1woXClcJyJdKXxbXlwoXClcJyJdKSsvJyApCgkJCT8/IG51bGw7CgoJCWlmICggISR2YWx1ZSApIHsKCQkJJHZhbHVlID0gJyc7CgkJfQoJCSR0aGlzLT5hdXRvQ29tbWVudEFic29yYiA9IHRydWU7CgkJJHRoaXMtPmV4cGVjdENoYXIoICcpJyApOwoKCQlpZiAoICR2YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQKCQkJfHwgJHZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlX1ZhcmlhYmxlCgkJCXx8ICR2YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Qcm9wZXJ0eSApIHsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVXJsKCAkdmFsdWUsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVXJsKCBuZXcgTGVzc19UcmVlX0Fub255bW91cyggJHZhbHVlICksICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJfQoKCS8qKgoJICogQSBWYXJpYWJsZSBlbnRpdHksIHN1Y2ggYXMgYEBmaW5rYCwgaW4KCSAqCgkgKgkgd2lkdGg6IEBmaW5rICsgMnB4CgkgKgoJICogV2UgdXNlIGEgZGlmZmVyZW50IHBhcnNlciBmb3IgdmFyaWFibGUgZGVmaW5pdGlvbnMsCgkgKiBzZWUgYHBhcnNlcnMudmFyaWFibGVgLgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX1ZhcmlhYmxlfExlc3NfVHJlZV9WYXJpYWJsZUNhbGx8TGVzc19UcmVlX05hbWVzcGFjZVZhbHVlfG51bGwKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2Vycy5lbnRpdGllcy52YXJpYWJsZQoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNWYXJpYWJsZSgpIHsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSR0aGlzLT5zYXZlKCk7CgoJCWlmICggJHRoaXMtPnBlZWtDaGFyKCAnQCcgKSApIHsKCQkJJG5hbWUgPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHQEA/W1x3LV0rLycgKTsKCQkJaWYgKCAkbmFtZSApIHsKCQkJCSRjaCA9ICR0aGlzLT5pbnB1dFsgJHRoaXMtPnBvcyBdID8/ICcnOwoJCQkJJHByZXZDaGFyID0gJHRoaXMtPmlucHV0WyAkdGhpcy0+cG9zIC0gMSBdID8/ICcnOwoJCQkJaWYgKCAkY2ggPT09ICcoJyB8fCAoICRjaCA9PT0gJ1snICYmICFwcmVnX21hdGNoKCAnL1xzLycsICRwcmV2Q2hhciwgJG1hdGNoICkgKSApIHsKCQkJCQkvLyB0aGlzIG1heSBiZSBhIFZhcmlhYmxlQ2FsbCBsb29rdXAKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPnBhcnNlVmFyaWFibGVDYWxsKCAkbmFtZSApOwoJCQkJCWlmICggJHJlc3VsdCApIHsKCQkJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCQl9CgkJCQl9CgkJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9WYXJpYWJsZSggJG5hbWUsICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvICk7CgkJCX0KCQl9CgoJCSR0aGlzLT5yZXN0b3JlKCk7Cgl9CgoJLyoqCgkgKiBBIHZhcmlhYmxlIGVudGl0eSB1c2luZyB0aGUgcHJvdGVjdGl2ZSBge31gIGUuZy4gYEB7dmFyfWAuCgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfVmFyaWFibGV8bnVsbAoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNWYXJpYWJsZUN1cmx5KCkgewoJCSRpbmRleCA9ICR0aGlzLT5wb3M7CgoJCWlmICggJHRoaXMtPmlucHV0X2xlbiA+ICggJHRoaXMtPnBvcyArIDEgKSAmJiAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICdAJyApIHsKCQkJJGN1cmx5ID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcR0BceyhbXHctXSspXH0vJyApOwoJCQlpZiAoICRjdXJseSApIHsKCQkJCXJldHVybiBuZXcgTGVzc19UcmVlX1ZhcmlhYmxlKCAnQCcgLiAkY3VybHlbMV0sICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvICk7CgkJCX0KCQl9Cgl9CgoJLyoqCgkgKiBBIFByb3BlcnR5IGFjY2Vzc29yLCBzdWNoIGFzIGAkY29sb3JgLCBpbgoJICoKCSAqICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc1Byb3BlcnR5KCkgewoJCSRpbmRleCA9ICR0aGlzLT5wb3M7CgoJCWlmICggKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPz8gJycgKSA9PT0gJyQnICkgewoJCQkkbmFtZSA9ICR0aGlzLT5tYXRjaFJlZyggJy9cXEdcJFtcdy1dKy8nICk7CgkJCWlmICggJG5hbWUgKSB7CgkJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Qcm9wZXJ0eSggJG5hbWUsICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvICk7CgkJCX0KCQl9Cgl9CgoJLy8gQSBwcm9wZXJ0eSBlbnRpdHkgdXNlaW5nIHRoZSBwcm90ZWN0aXZlIHt9IGUuZy4gQHtwcm9wfQoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzUHJvcGVydHlDdXJseSgpIHsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQlpZiAoICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA9PT0gJyQnICkgewoJCQkkY3VybHkgPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHQFx7KFtcdy1dKylcfS8nICk7CgkJCWlmICggJGN1cmx5ICkgewoJCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfUHJvcGVydHkoICIkIiAuICRjdXJseVsxXSwgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gKTsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIEEgSGV4YWRlY2ltYWwgY29sb3IKCSAqCgkgKgkgIzRGM0MyRgoJICoKCSAqIGByZ2JgIGFuZCBgaHNsYCBjb2xvcnMgYXJlIHBhcnNlZCB0aHJvdWdoIHRoZSBgZW50aXRpZXMuY2FsbGAgcGFyc2VyLgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX0NvbG9yfG51bGwKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2Vycy5lbnRpdGllcy5jb2xvcgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNDb2xvcigpIHsKCQkkdGhpcy0+c2F2ZSgpOwoJCWlmICggJHRoaXMtPnBlZWtDaGFyKCAnIycgKSApIHsKCQkJJHJnYiA9ICR0aGlzLT5tYXRjaFJlZyggJy9cXEcjKFtBLUZhLWYwLTldezh9fFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezMsNH0pKFtcdy4jXFtdKT8vJyApOwoJCQlpZiAoICRyZ2IgJiYgIWlzc2V0KCAkcmdiWzJdICkgKSB7CgkJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvciggJHJnYlsxXSwgbnVsbCwgJHJnYlswXSApOwoJCQl9CgkJfQoJCSR0aGlzLT5yZXN0b3JlKCk7Cgl9CgoJLyoqCgkgKiBBIERpbWVuc2lvbiwgdGhhdCBpcywgYSBudW1iZXIgYW5kIGEgdW5pdAoJICoKCSAqCSAwLjVlbSA5NSUKCSAqCgkgKiBAcmV0dXJuIExlc3NfVHJlZV9EaW1lbnNpb258bnVsbAoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLmVudGl0aWVzLmRpbWVuc2lvbgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNEaW1lbnNpb24oKSB7CgkJLy8gT3B0aW1pemF0aW9uOiBJbmxpbmVkIHZlcnNpb24gb2YgTGVzcy5qcyBwYXJzZXJJbnB1dC5wZWVrTm90TnVtZXJpYwoJCXN0YXRpYyAkQ0hBUkNPREVfQ09NTUEgPSA0NDsKCQlzdGF0aWMgJENIQVJDT0RFX0ZPUldBUkRfU0xBU0ggPSA0NzsKCQlzdGF0aWMgJENIQVJDT0RFX1BMVVMgPSA0MzsKCQlzdGF0aWMgJENIQVJDT0RFXzkgPSA1NzsKCQkkYyA9IG9yZCggJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdID8/ICcnICk7CgkJLy8gSXMgdGhlIGZpcnN0IGNoYXIgb2YgdGhlIGRpbWVuc2lvbiAwLTksICcuJywgJysnIG9yICctJwoJCSRwZWVrTm90TnVtZXJpYyA9ICggJGMgPiAkQ0hBUkNPREVfOSB8fCAkYyA8ICRDSEFSQ09ERV9QTFVTICkgfHwgJGMgPT09ICRDSEFSQ09ERV9GT1JXQVJEX1NMQVNIIHx8ICRjID09PSAkQ0hBUkNPREVfQ09NTUE7CgoJCWlmICggJHBlZWtOb3ROdW1lcmljICkgewoJCQlyZXR1cm47CgkJfQoJCSR2YWx1ZSA9ICR0aGlzLT5tYXRjaFJlZyggJy9cXEcoWystXT9cZCpcLj9cZCspKCV8W2Etel9dKyk/L2knICk7CgkJaWYgKCAkdmFsdWUgKSB7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJHZhbHVlWzFdLCAkdmFsdWVbMl0gPz8gbnVsbCApOwoJCX0KCX0KCgkvKioKCSAqIEEgdW5pY29kZSBkZXNjcmlwdG9yLCBhcyBpcyB1c2VkIGluIHVuaWNvZGUtcmFuZ2UKCSAqCgkgKiBVKzA/PyBvciBVKzAwQTEtMDBBOQoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX1VuaWNvZGVEZXNjcmlwdG9yfG51bGwKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVVuaWNvZGVEZXNjcmlwdG9yKCkgewoJCS8vIE9wdGltaXphdGlvbjogSGFyZGNvZGUgZmlyc3QgY2hhciwgdG8gYXZvaWQgbWF0Y2hSZWcoKSBjb3N0IGZvciBjb21tb24gY2FzZQoJCSRjaGFyID0gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdID8/IG51bGw7CgkJaWYgKCAkY2hhciAhPT0gJ1UnICkgewoJCQlyZXR1cm47CgkJfQoKCQkkdWQgPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHKFVcK1swLTlhLWZBLUY/XSspKFwtWzAtOWEtZkEtRj9dKyk/LycgKTsKCQlpZiAoICR1ZCApIHsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVW5pY29kZURlc2NyaXB0b3IoICR1ZFswXSApOwoJCX0KCX0KCgkvKioKCSAqIEphdmFTY3JpcHQgY29kZSB0byBiZSBldmFsdWF0ZWQKCSAqCgkgKgkgYHdpbmRvdy5sb2NhdGlvbi5ocmVmYAoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX0phdmFTY3JpcHR8bnVsbAoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLmVudGl0aWVzLmphdmFzY3JpcHQKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzSmF2YXNjcmlwdCgpIHsKCQkvLyBPcHRpbWl6YXRpb246IEhhcmRjb2RlIGZpcnN0IGNoYXIsIHRvIGF2b2lkIHNhdmUoKS9yZXN0b3JlKCkgb3ZlcmhlYWQKCQkvLyBPcHRpbWl6YXRpb246IElubGluZSBtYXRjaENoYXIoKSwgd2l0aCBza2lwV2hpdGVzcGFjZSgxKSBiZWxvdwoJCSRjaGFyID0gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdID8/IG51bGw7CgkJJGlzRXNjYXBlZCA9ICRjaGFyID09PSAnfic7CgkJaWYgKCAhJGlzRXNjYXBlZCAmJiAkY2hhciAhPT0gJ2AnICkgewoJCQlyZXR1cm47CgkJfQoKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSR0aGlzLT5zYXZlKCk7CgoJCWlmICggJGlzRXNjYXBlZCApIHsKCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKCAxICk7CgkJCSRjaGFyID0gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdID8/IG51bGw7CgkJCWlmICggJGNoYXIgIT09ICdgJyApIHsKCQkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCQlyZXR1cm47CgkJCX0KCQl9CgoJCSR0aGlzLT5za2lwV2hpdGVzcGFjZSggMSApOwoJCSRqcyA9ICR0aGlzLT5tYXRjaFJlZyggJy9cXEdbXmBdKmAvJyApOwoJCWlmICggJGpzICkgewoJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0phdmFTY3JpcHQoIHN1YnN0ciggJGpzLCAwLCAtMSApLCAkaXNFc2NhcGVkLCAkaW5kZXggKTsKCQl9CgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgkvLyBUaGUgdmFyaWFibGUgcGFydCBvZiBhIHZhcmlhYmxlIGRlZmluaXRpb24uIFVzZWQgaW4gdGhlIGBydWxlYCBwYXJzZXIKCS8vCgkvLyBAZmluazoKCS8vCgkvLyBAc2VlIGxlc3MtMy4xMy4xLmpzI3BhcnNlcnMudmFyaWFibGUKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZSgpIHsKCQlpZiAoICR0aGlzLT5wZWVrQ2hhciggJ0AnICkgKSB7CgkJCSRuYW1lID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcRyhAW1x3LV0rKVxzKjovJyApOwoJCQlpZiAoICRuYW1lICkgewoJCQkJcmV0dXJuICRuYW1lWzFdOwoJCQl9CgkJfQoJfQoKCS8vIENhbGwgYSB2YXJpYWJsZSB2YWx1ZSB0byByZXRyaWV2ZSBhIGRldGFjaGVkIHJ1bGVzZXQKCS8vIG9yIGEgdmFsdWUgZnJvbSBhIGRldGFjaGVkIHJ1bGVzZXQncyBydWxlcy4KCS8vCgkvLyAgICAgQGZpbmsoKTsKCS8vICAgICBAZmluazsKCS8vICAgICBjb2xvcjogQGZpbmtbQGNvbG9yXTsKCS8vCgkvLyBAc2VlIGxlc3MtMy4xMy4xLmpzI3BhcnNlcnMudmFyaWFibGVDYWxsCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVDYWxsKCAkcGFyc2VkTmFtZSA9IG51bGwgKSB7CgkJJGkgPSAkdGhpcy0+cG9zOwoJCSRpblZhbHVlID0gKGJvb2wpJHBhcnNlZE5hbWU7CgoJCWlmICggJHBhcnNlZE5hbWUgPT09IG51bGwgJiYgISR0aGlzLT5wZWVrQ2hhciggJ0AnICkgKSB7CgkJCXJldHVybjsKCQl9CgkJJHRoaXMtPnNhdmUoKTsKCQkkbmFtZSA9ICRwYXJzZWROYW1lID8/ICR0aGlzLT5tYXRjaFJlZyggJy9cXEcoQFtcdy1dKykoXChccypcKSk/LycgKTsKCQlpZiAoICRuYW1lID09PSBudWxsICkgewoJCQkkdGhpcy0+cmVzdG9yZSgpOwoJCQlyZXR1cm47CgkJfQoKCQkkbG9va3VwcyA9ICR0aGlzLT5wYXJzZU1peGluUnVsZUxvb2t1cHMoKTsKCQlpZiAoICEkbG9va3VwcyAmJiAoCgkJCSggJGluVmFsdWUgJiYgJHRoaXMtPm1hdGNoU3RyKCAnKCknICkgIT09ICcoKScgKSB8fCAoICggJG5hbWVbMl0gPz8gJycgKSAhPT0gJygpJyApICkgKSB7CgkJCS8vIFJlc3RvcmUgZXJyb3IgbWVzYWdlOiAnTWlzc2luZyBcJ1suLi5dXCcgbG9va3VwIGluIHZhcmlhYmxlIGNhbGwnCgkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCXJldHVybjsKCQl9CgkJaWYgKCAhJGluVmFsdWUgKSB7CgkJCSRuYW1lID0gJG5hbWVbMV07CgkJfQoKCQkkY2FsbCA9IG5ldyBMZXNzX1RyZWVfVmFyaWFibGVDYWxsKCAkbmFtZSwgJGksICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJCWlmICggISRpblZhbHVlICYmICR0aGlzLT5wYXJzZUVuZCgpICkgewoJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCXJldHVybiAkY2FsbDsKCQl9IGVsc2UgewoJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX05hbWVzcGFjZVZhbHVlKCAkY2FsbCwgJGxvb2t1cHMsICRpLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gKTsKCQl9Cgl9CgoJLy8KCS8vIGV4dGVuZCBzeW50YXggLSB1c2VkIHRvIGV4dGVuZCBzZWxlY3RvcnMKCS8vCgkvLyBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2Vycy5leHRlbmQKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFeHRlbmQoICRpc1J1bGUgPSBmYWxzZSApIHsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSRleHRlbmRMaXN0ID0gW107CgoJCWlmICggISR0aGlzLT5tYXRjaFN0ciggJGlzUnVsZSA/ICcmOmV4dGVuZCgnIDogJzpleHRlbmQoJyApICkgewoJCQlyZXR1cm47CgkJfQoKCQlkbyB7CgkJCSRvcHRpb24gPSBudWxsOwoJCQkkZWxlbWVudHMgPSBbXTsKCQkJd2hpbGUgKCB0cnVlICkgewoJCQkJJG9wdGlvbiA9ICR0aGlzLT5tYXRjaFJlZyggJy9cXEcoYWxsKSg/PVxzKihcKXwsKSkvJyApOwoJCQkJaWYgKCAkb3B0aW9uICkgewoJCQkJCWJyZWFrOwoJCQkJfQoJCQkJJGUgPSAkdGhpcy0+cGFyc2VFbGVtZW50KCk7CgkJCQlpZiAoICEkZSApIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJCSRlbGVtZW50c1tdID0gJGU7CgkJCX0KCgkJCWlmICggJG9wdGlvbiApIHsKCQkJCSRvcHRpb24gPSAkb3B0aW9uWzFdOwoJCQl9CgoJCQkkZXh0ZW5kTGlzdFtdID0gbmV3IExlc3NfVHJlZV9FeHRlbmQoIG5ldyBMZXNzX1RyZWVfU2VsZWN0b3IoICRlbGVtZW50cyApLCAkb3B0aW9uLCAkaW5kZXggKTsKCgkJfSB3aGlsZSAoICR0aGlzLT5tYXRjaENoYXIoICIsIiApICk7CgoJCSR0aGlzLT5leHBlY3QoICcvXFxHXCkvJyApOwoKCQlpZiAoICRpc1J1bGUgKSB7CgkJCSR0aGlzLT5leHBlY3QoICcvXFxHOy8nICk7CgkJfQoKCQlyZXR1cm4gJGV4dGVuZExpc3Q7Cgl9CgoJLy8KCS8vIEEgTWl4aW4gY2FsbCwgd2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudCBsaXN0CgkvLwoJLy8JICNtaXhpbnMgPiAuc3F1YXJlKCNmZmYpOwoJLy8JICNtaXhpbnMuc3F1YXJlKCNmZmYpOwoJLy8JIC5yb3VuZGVkKDRweCwgYmxhY2spOwoJLy8JIC5idXR0b247CgkvLwoJLy8gV2UgY2FuIGxvb2t1cCAvIHJldHVybiBhIHZhbHVlIHVzaW5nIHRoZSBsb29rdXAgc3ludGF4OgoJLy8KCS8vICAgICBjb2xvcjogI21peGluLnNxdWFyZSgjZmZmKVtAY29sb3JdOwoJLy8KCS8vIFRoZSBgd2hpbGVgIGxvb3AgaXMgdGhlcmUgYmVjYXVzZSBtaXhpbnMgY2FuIGJlCgkvLyBuYW1lc3BhY2VkLCBidXQgd2Ugb25seSBzdXBwb3J0IHRoZSBjaGlsZCBhbmQgZGVzY2VuZGFudAoJLy8gc2VsZWN0b3IgZm9yIG5vdy4KCS8vCgkvLyBAc2VlIGxlc3MtMy4xMy4xLmpzI3BhcnNlcnMubWl4aW4uY2FsbAoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VNaXhpbkNhbGwoICRpblZhbHVlLCAkZ2V0TG9va3VwID0gbnVsbCApIHsKCQkkcyA9ICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA/PyBudWxsOwoJCSRpbXBvcnRhbnQgPSBmYWxzZTsKCQkkbG9va3VwcyA9IG51bGw7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQkkYXJncyA9IFtdOwoJCSRoYXNQYXJlbnMgPSBmYWxzZTsKCQlpZiAoICRzICE9PSAnLicgJiYgJHMgIT09ICcjJyApIHsKCQkJcmV0dXJuOwoJCX0KCgkJJHRoaXMtPnNhdmUoKTsgLy8gc3RvcCB1cyBhYnNvcmJpbmcgcGFydCBvZiBhbiBpbnZhbGlkIHNlbGVjdG9yCgkJJGVsZW1lbnRzID0gJHRoaXMtPnBhcnNlTWl4aW5DYWxsRWxlbWVudHMoKTsKCgkJaWYgKCAkZWxlbWVudHMgKSB7CgkJCWlmICggJHRoaXMtPm1hdGNoQ2hhciggJygnICkgKSB7CgkJCQkkYXJncyA9ICggJHRoaXMtPnBhcnNlTWl4aW5BcmdzKCB0cnVlICkgKVsnYXJncyddOwoJCQkJJHRoaXMtPmV4cGVjdENoYXIoICcpJyApOwoJCQkJJGhhc1BhcmVucyA9IHRydWU7CgkJCX0KCQkJaWYgKCAkZ2V0TG9va3VwICE9PSBmYWxzZSApIHsKCQkJCSRsb29rdXBzID0gJHRoaXMtPnBhcnNlTWl4aW5SdWxlTG9va3VwcygpOwoJCQl9CgkJCWlmICggJGdldExvb2t1cCA9PT0gdHJ1ZSAmJiAkbG9va3VwcyA9PT0gbnVsbCApIHsKCQkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCQlyZXR1cm47CgkJCX0KCQkJaWYgKCAkaW5WYWx1ZSAmJiAhJGxvb2t1cHMgJiYgISRoYXNQYXJlbnMgKSB7CgkJCQkvLyBUaGlzIGlzbid0IGEgdmFsaWQgaW4tdmFsdWUgbWl4aW4gY2FsbAoJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCXJldHVybjsKCQkJfQoKCQkJaWYgKCAhJGluVmFsdWUgJiYgJHRoaXMtPnBhcnNlSW1wb3J0YW50KCkgKSB7CgkJCQkkaW1wb3J0YW50ID0gdHJ1ZTsKCQkJfQoKCQkJaWYgKCAkaW5WYWx1ZSB8fCAkdGhpcy0+cGFyc2VFbmQoKSApIHsKCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCSRtaXhpbiA9IG5ldyBMZXNzX1RyZWVfTWl4aW5fQ2FsbCgKCQkJCQkkZWxlbWVudHMsCgkJCQkJJGFyZ3MsCgkJCQkJJGluZGV4LAoJCQkJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbywKCQkJCQkhJGxvb2t1cHMgJiYgJGltcG9ydGFudAoJCQkJKTsKCQkJCWlmICggJGxvb2t1cHMgKSB7CgkJCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfTmFtZXNwYWNlVmFsdWUoICRtaXhpbiwgJGxvb2t1cHMgKTsKCQkJCX0gZWxzZSB7CgkJCQkJcmV0dXJuICRtaXhpbjsKCQkJCX0KCQkJfQoJCX0KCgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgkvKioKCSAqIE1hdGNoaW5nIGVsZW1lbnRzIGZvciBtaXhpbnMKCSAqIChTdGFydCB3aXRoIC4gb3IgIyBhbmQgY2FuIGhhdmUgPiApCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI3BhcnNlcnMubWl4aW4uZWxlbWVudHMKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1peGluQ2FsbEVsZW1lbnRzKCkgewoJCSRlbGVtZW50cyA9IFtdOwoJCSRjID0gbnVsbDsKCgkJd2hpbGUgKCB0cnVlICkgewoJCQkkZWxlbUluZGV4ID0gJHRoaXMtPnBvczsKCQkJJGUgPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHWyMuXSg/Oltcdy1dfFxcXFwoPzpbQS1GYS1mMC05XXsxLDZ9ID98W15BLUZhLWYwLTldKSkrLycgKTsKCQkJaWYgKCAhJGUgKSB7CgkJCQlicmVhazsKCQkJfQoJCQkkZWxlbWVudHNbXSA9IG5ldyBMZXNzX1RyZWVfRWxlbWVudCggJGMsICRlLCAkZWxlbUluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gKTsKCQkJJGMgPSAkdGhpcy0+bWF0Y2hDaGFyKCAnPicgKTsKCQl9CgoJCXJldHVybiAkZWxlbWVudHMgPzogbnVsbDsKCX0KCgkvKioKCSAqIEBwYXJhbSBib29sICRpc0NhbGwKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNwYXJzZXJzLm1peGluLmFyZ3MKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1peGluQXJncyggJGlzQ2FsbCApIHsKCQkkZXhwcmVzc2lvbnMgPSBbXTsKCQkkYXJnc1NlbWlDb2xvbiA9IFtdOwoJCSRpc1NlbWlDb2xvblNlcGVyYXRlZCA9IG51bGw7CgkJJGFyZ3NDb21tYSA9IFtdOwoJCSRleHByZXNzaW9uQ29udGFpbnNOYW1lZCA9IG51bGw7CgkJJG5hbWUgPSBudWxsOwoJCSRyZXR1cm5lciA9IFsgJ2FyZ3MnID0+IFtdLCAndmFyaWFkaWMnID0+IGZhbHNlIF07CgkJJGV4cGFuZCA9IGZhbHNlOwoKCQkkdGhpcy0+c2F2ZSgpOwoKCQl3aGlsZSAoIHRydWUgKSB7CgkJCWlmICggJGlzQ2FsbCApIHsKCQkJCSRhcmcgPSAkdGhpcy0+cGFyc2VEZXRhY2hlZFJ1bGVzZXQoKSA/PyAkdGhpcy0+cGFyc2VFeHByZXNzaW9uKCk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+Y29tbWVudFN0b3JlID0gW107CgkJCQlpZiAoICR0aGlzLT5pbnB1dFsgJHRoaXMtPnBvcyBdID09PSAnLicgJiYgJHRoaXMtPm1hdGNoU3RyKCAnLi4uJyApICkgewoJCQkJCSRyZXR1cm5lclsndmFyaWFkaWMnXSA9IHRydWU7CgkJCQkJaWYgKCAkdGhpcy0+bWF0Y2hDaGFyKCAiOyIgKSAmJiAhJGlzU2VtaUNvbG9uU2VwZXJhdGVkICkgewoJCQkJCQkkaXNTZW1pQ29sb25TZXBlcmF0ZWQgPSB0cnVlOwoJCQkJCX0KCgkJCQkJaWYgKCAkaXNTZW1pQ29sb25TZXBlcmF0ZWQgKSB7CgkJCQkJCSRhcmdzU2VtaUNvbG9uW10gPSBbICd2YXJpYWRpYycgPT4gdHJ1ZSBdOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRhcmdzQ29tbWFbXSA9IFsgJ3ZhcmlhZGljJyA9PiB0cnVlIF07CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJfQoJCQkJJGFyZyA9ICR0aGlzLT5wYXJzZUVudGl0aWVzVmFyaWFibGUoKQoJCQkJCT8/ICR0aGlzLT5wYXJzZUVudGl0aWVzUHJvcGVydHkoKQoJCQkJCT8/ICR0aGlzLT5wYXJzZUVudGl0aWVzTGl0ZXJhbCgpCgkJCQkJPz8gJHRoaXMtPnBhcnNlRW50aXRpZXNLZXl3b3JkKCk7CgkJCX0KCgkJCWlmICggISRhcmcgKSB7CgkJCQlicmVhazsKCQkJfQoKCQkJJG5hbWVMb29wID0gbnVsbDsKCQkJaWYgKCAkYXJnIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gKSB7CgkJCQkkYXJnLT50aHJvd0F3YXlDb21tZW50cygpOwoJCQl9CgkJCSR2YWx1ZSA9ICRhcmc7CgkJCSR2YWwgPSBudWxsOwoKCQkJaWYgKCAkaXNDYWxsICkgewoJCQkJLy8gVmFyaWFibGUKCQkJCWlmICggJHZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gJiYgY291bnQoICRhcmctPnZhbHVlICkgPT0gMSApIHsKCQkJCQkkdmFsID0gJGFyZy0+dmFsdWVbMF07CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkdmFsID0gJGFyZzsKCQkJfQoKCQkJaWYgKCAkdmFsIGluc3RhbmNlb2YgTGVzc19UcmVlX1ZhcmlhYmxlIHx8ICR2YWwgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUHJvcGVydHkgKSB7CgoJCQkJaWYgKCAkdGhpcy0+bWF0Y2hDaGFyKCAnOicgKSApIHsKCQkJCQlpZiAoICRleHByZXNzaW9ucyApIHsKCQkJCQkJaWYgKCAkaXNTZW1pQ29sb25TZXBlcmF0ZWQgKSB7CgkJCQkJCQkkdGhpcy0+RXJyb3IoICdDYW5ub3QgbWl4IDsgYW5kICwgYXMgZGVsaW1pdGVyIHR5cGVzJyApOwoJCQkJCQl9CgkJCQkJCSRleHByZXNzaW9uQ29udGFpbnNOYW1lZCA9IHRydWU7CgkJCQkJfQoKCQkJCQkvLyB3ZSBkbyBub3Qgc3VwcG9ydCBzZXR0aW5nIGEgcnVsZXNldCBhcyBhIGRlZmF1bHQgdmFyaWFibGUgLSBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UKCQkJCQkvLyBIb3dldmVyIGlmIHdlIGRvIHdhbnQgdG8gYWRkIGl0LCB0aGVyZSBpcyBub3RoaW5nIGJsb2NraW5nIGl0LCBqdXN0IGRvbid0IGVycm9yCgkJCQkJLy8gYW5kIHJlbW92ZSBpc0NhbGwgZGVwZW5kZW5jeSBiZWxvdwoJCQkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZURldGFjaGVkUnVsZXNldCgpID8/ICR0aGlzLT5wYXJzZUV4cHJlc3Npb24oKTsKCgkJCQkJaWYgKCAhJHZhbHVlICkgewoJCQkJCQlpZiAoICRpc0NhbGwgKSB7CgkJCQkJCQkkdGhpcy0+RXJyb3IoICdjb3VsZCBub3QgdW5kZXJzdGFuZCB2YWx1ZSBmb3IgbmFtZWQgYXJndW1lbnQnICk7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQkkdGhpcy0+cmVzdG9yZSgpOwoJCQkJCQkJJHJldHVybmVyWydhcmdzJ10gPSBbXTsKCQkJCQkJCXJldHVybiAkcmV0dXJuZXI7CgkJCQkJCX0KCQkJCQl9CgoJCQkJCSRuYW1lTG9vcCA9ICggJG5hbWUgPSAkdmFsLT5uYW1lICk7CgkJCQl9IGVsc2VpZiAoICR0aGlzLT5tYXRjaFN0ciggJy4uLicgKSApIHsKCQkJCQlpZiAoICEkaXNDYWxsICkgewoJCQkJCQkkcmV0dXJuZXJbJ3ZhcmlhZGljJ10gPSB0cnVlOwoJCQkJCQlpZiAoICR0aGlzLT5tYXRjaENoYXIoICI7IiApICYmICEkaXNTZW1pQ29sb25TZXBlcmF0ZWQgKSB7CgkJCQkJCQkkaXNTZW1pQ29sb25TZXBlcmF0ZWQgPSB0cnVlOwoJCQkJCQl9CgkJCQkJCWlmICggJGlzU2VtaUNvbG9uU2VwZXJhdGVkICkgewoJCQkJCQkJJGFyZ3NTZW1pQ29sb25bXSA9IFsgJ25hbWUnID0+ICRhcmctPm5hbWUsICd2YXJpYWRpYycgPT4gdHJ1ZSBdOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJGFyZ3NDb21tYVtdID0gWyAnbmFtZScgPT4gJGFyZy0+bmFtZSwgJ3ZhcmlhZGljJyA9PiB0cnVlIF07CgkJCQkJCX0KCQkJCQkJYnJlYWs7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJGV4cGFuZCA9IHRydWU7CgkJCQkJfQoJCQkJfSBlbHNlaWYgKCAhJGlzQ2FsbCApIHsKCQkJCQkkbmFtZSA9ICRuYW1lTG9vcCA9ICR2YWwtPm5hbWU7CgkJCQkJJHZhbHVlID0gbnVsbDsKCQkJCX0KCQkJfQoKCQkJaWYgKCAkdmFsdWUgKSB7CgkJCQkkZXhwcmVzc2lvbnNbXSA9ICR2YWx1ZTsKCQkJfQoKCQkJJGFyZ3NDb21tYVtdID0gWyAnbmFtZScgPT4gJG5hbWVMb29wLCAndmFsdWUnID0+ICR2YWx1ZSwgJ2V4cGFuZCcgPT4gJGV4cGFuZCBdOwoKCQkJaWYgKCAkdGhpcy0+bWF0Y2hDaGFyKCAnLCcgKSApIHsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQlpZiAoICR0aGlzLT5tYXRjaENoYXIoICc7JyApIHx8ICRpc1NlbWlDb2xvblNlcGVyYXRlZCApIHsKCgkJCQlpZiAoICRleHByZXNzaW9uQ29udGFpbnNOYW1lZCApIHsKCQkJCQkkdGhpcy0+RXJyb3IoICdDYW5ub3QgbWl4IDsgYW5kICwgYXMgZGVsaW1pdGVyIHR5cGVzJyApOwoJCQkJfQoKCQkJCSRpc1NlbWlDb2xvblNlcGVyYXRlZCA9IHRydWU7CgoJCQkJaWYgKCBjb3VudCggJGV4cHJlc3Npb25zICkgPiAxICkgewoJCQkJCSR2YWx1ZSA9IG5ldyBMZXNzX1RyZWVfVmFsdWUoICRleHByZXNzaW9ucyApOwoJCQkJfQoJCQkJJGFyZ3NTZW1pQ29sb25bXSA9IFsgJ25hbWUnID0+ICRuYW1lLCAndmFsdWUnID0+ICR2YWx1ZSwgJ2V4cGFuZCcgPT4gJGV4cGFuZCBdOwoKCQkJCSRuYW1lID0gbnVsbDsKCQkJCSRleHByZXNzaW9ucyA9IFtdOwoJCQkJJGV4cHJlc3Npb25Db250YWluc05hbWVkID0gZmFsc2U7CgkJCX0KCQl9CgoJCSR0aGlzLT5mb3JnZXQoKTsKCQkkcmV0dXJuZXJbJ2FyZ3MnXSA9ICggJGlzU2VtaUNvbG9uU2VwZXJhdGVkID8gJGFyZ3NTZW1pQ29sb24gOiAkYXJnc0NvbW1hICk7CgkJcmV0dXJuICRyZXR1cm5lcjsKCX0KCgkvKioKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2Vycy5taXhpbi5ydWxlTG9va3VwcwoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWl4aW5SdWxlTG9va3VwcygpIHsKCQkkbG9va3VwcyA9IFtdOwoKCQlpZiAoICEkdGhpcy0+cGVla0NoYXIoICdbJyApICkgewoJCQlyZXR1cm47CgkJfQoKCQl3aGlsZSAoIHRydWUgKSB7CgkJCSR0aGlzLT5zYXZlKCk7CgkJCSRydWxlID0gJHRoaXMtPnBhcnNlTG9va3VwVmFsdWUoKTsKCQkJaWYgKCAhJHJ1bGUgJiYgJHJ1bGUgIT09ICcnICkgewoJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCWJyZWFrOwoJCQl9CgkJCSRsb29rdXBzW10gPSAkcnVsZTsKCQkJJHRoaXMtPmZvcmdldCgpOwoJCX0KCQlpZiAoICRsb29rdXBzICkgewoJCQlyZXR1cm4gJGxvb2t1cHM7CgkJfQoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLm1peGluLmxvb2t1cFZhbHVlCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VMb29rdXBWYWx1ZSgpIHsKCQkkdGhpcy0+c2F2ZSgpOwoKCQlpZiAoICEkdGhpcy0+bWF0Y2hDaGFyKCAnWycgKSApIHsKCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJcmV0dXJuOwoJCX0KCQkkbmFtZSA9ICR0aGlzLT5tYXRjaFJlZyggIi9cXEcoPzpbQFwkXXswLDJ9KVtfYS16QS1aMC05LV0qLyIgKTsKCgkJaWYgKCAhJHRoaXMtPm1hdGNoQ2hhciggJ10nICkgKSB7CgkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCXJldHVybjsKCQl9CgkJaWYgKCAkbmFtZSB8fCAkbmFtZSA9PT0gJycgKSB7CgkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJcmV0dXJuICRuYW1lOwoJCX0KCQkkdGhpcy0+cmVzdG9yZSgpOwoJfQoKCS8vCgkvLyBBIE1peGluIGRlZmluaXRpb24sIHdpdGggYSBsaXN0IG9mIHBhcmFtZXRlcnMKCS8vCgkvLwkgLnJvdW5kZWQgKEByYWRpdXM6IDJweCwgQGNvbG9yKSB7CgkvLwkJLi4uCgkvLwkgfQoJLy8KCS8vIFVudGlsIHdlIGhhdmUgYSBmaW5lciBncmFpbmVkIHN0YXRlLW1hY2hpbmUsIHdlIGhhdmUgdG8KCS8vIGRvIGEgbG9vay1haGVhZCwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGhhdmUgYSBtaXhpbiBjYWxsLgoJLy8gU2VlIHRoZSBgcnVsZWAgZnVuY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCgkvLwoJLy8gV2Ugc3RhcnQgYnkgbWF0Y2hpbmcgYC5yb3VuZGVkIChgLCBhbmQgdGhlbiBwcm9jZWVkIG9uIHRvCgkvLyB0aGUgYXJndW1lbnQgbGlzdCwgd2hpY2ggaGFzIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWVzLgoJLy8gV2Ugc3RvcmUgdGhlIHBhcmFtZXRlcnMgaW4gYHBhcmFtc2AsIHdpdGggYSBgdmFsdWVgIGtleSwKCS8vIGlmIHRoZXJlIGlzIGEgdmFsdWUsIHN1Y2ggYXMgaW4gdGhlIGNhc2Ugb2YgYEByYWRpdXNgLgoJLy8KCS8vIE9uY2Ugd2UndmUgZ290IG91ciBwYXJhbXMgbGlzdCwgYW5kIGEgY2xvc2luZyBgKWAsIHdlIHBhcnNlCgkvLyB0aGUgYHsuLi59YCBibG9jay4KCS8vCgkvLyBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2Vycy5taXhpbi5kZWZpbml0aW9uCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWl4aW5EZWZpbml0aW9uKCkgewoJCSRjb25kID0gbnVsbDsKCgkJJGNoYXIgPSAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPz8gbnVsbDsKCQkvLyBUT0RPOiBMZXNzLmpzIGRvZXNuJ3QgbGltaXQgdGhpcyB0byAkY2hhciA9PSAneycuCgkJaWYgKCAoICRjaGFyICE9PSAnLicgJiYgJGNoYXIgIT09ICcjJyApIHx8ICggJGNoYXIgPT09ICd7JyAmJiAkdGhpcy0+cGVla1JlZyggJy9cXEdbXntdKlx9LycgKSApICkgewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+c2F2ZSgpOwoKCQkkbWF0Y2ggPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHKFsjLl0oPzpbXHctXXxcXFwoPzpbQS1GYS1mMC05XXsxLDZ9ID98W15BLUZhLWYwLTldKSkrKVxzKlwoLycgKTsKCQlpZiAoICRtYXRjaCApIHsKCQkJJG5hbWUgPSAkbWF0Y2hbMV07CgoJCQkkYXJnSW5mbyA9ICR0aGlzLT5wYXJzZU1peGluQXJncyggZmFsc2UgKTsKCQkJJHBhcmFtcyA9ICRhcmdJbmZvWydhcmdzJ107CgkJCSR2YXJpYWRpYyA9ICRhcmdJbmZvWyd2YXJpYWRpYyddOwoKCQkJLy8gLm1peGluY2FsbCgiQHthfSIpOwoJCQkvLyBsb29rcyBhIGJpdCBsaWtlIGEgbWl4aW4gZGVmaW5pdGlvbi4uCgkJCS8vIGFsc28KCQkJLy8gLm1peGluY2FsbChAYToge3J1bGU6IHNldDt9KTsKCQkJLy8gc28gd2UgaGF2ZSB0byBiZSBuaWNlIGFuZCByZXN0b3JlCgkJCWlmICggISR0aGlzLT5tYXRjaENoYXIoICcpJyApICkgewoJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCXJldHVybjsKCQkJfQoKCQkJJHRoaXMtPmNvbW1lbnRTdG9yZSA9IFtdOwoKCQkJaWYgKCAkdGhpcy0+bWF0Y2hTdHIoICd3aGVuJyApICkgeyAvLyBHdWFyZAoJCQkJJGNvbmQgPSAkdGhpcy0+cGFyc2VDb25kaXRpb25zKCkgPz8gJHRoaXMtPkVycm9yKCAnRXhwZWN0ZWQgY29uZGl0aW9ucycgKTsKCQkJfQoKCQkJJHJ1bGVzZXQgPSAkdGhpcy0+cGFyc2VCbG9jaygpOwoKCQkJaWYgKCAkcnVsZXNldCAhPT0gbnVsbCApIHsKCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCXJldHVybiBuZXcgTGVzc19UcmVlX01peGluX0RlZmluaXRpb24oICRuYW1lLCAkcGFyYW1zLCAkcnVsZXNldCwgJGNvbmQsICR2YXJpYWRpYyApOwoJCQl9CgoJCQkkdGhpcy0+cmVzdG9yZSgpOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5mb3JnZXQoKTsKCQl9Cgl9CgoJLy8KCS8vIEVudGl0aWVzIGFyZSB0aGUgc21hbGxlc3QgcmVjb2duaXplZCB0b2tlbiwKCS8vIGFuZCBjYW4gYmUgZm91bmQgaW5zaWRlIGEgcnVsZSdzIHZhbHVlLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdHkoKSB7CgkJcmV0dXJuICR0aGlzLT5wYXJzZUNvbW1lbnQoKSA/PwoJCQkkdGhpcy0+cGFyc2VFbnRpdGllc0xpdGVyYWwoKSA/PwoJCQkkdGhpcy0+cGFyc2VFbnRpdGllc1ZhcmlhYmxlKCkgPz8KCQkJJHRoaXMtPnBhcnNlRW50aXRpZXNVcmwoKSA/PwoJCQkkdGhpcy0+cGFyc2VFbnRpdGllc1Byb3BlcnR5KCkgPz8KCQkJJHRoaXMtPnBhcnNlRW50aXRpZXNDYWxsKCkgPz8KCQkJJHRoaXMtPnBhcnNlRW50aXRpZXNLZXl3b3JkKCkgPz8KCQkJJHRoaXMtPnBhcnNlTWl4aW5DYWxsKCB0cnVlICkgPz8KCQkJJHRoaXMtPnBhcnNlRW50aXRpZXNKYXZhc2NyaXB0KCk7Cgl9CgoJLy8KCS8vIEEgRGVjbGFyYXRpb24gdGVybWluYXRvci4gTm90ZSB0aGF0IHdlIHVzZSBgcGVlaygpYCB0byBjaGVjayBmb3IgJ30nLAoJLy8gYmVjYXVzZSB0aGUgYGJsb2NrYCBydWxlIHdpbGwgYmUgZXhwZWN0aW5nIGl0LCBidXQgd2Ugc3RpbGwgbmVlZCB0byBtYWtlIHN1cmUKCS8vIGl0J3MgdGhlcmUsIGlmICc7JyB3YXMgb21pdHRlZC4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW5kKCkgewoJCXJldHVybiAkdGhpcy0+bWF0Y2hDaGFyKCAnOycgKSB8fCAkdGhpcy0+cGVla0NoYXIoICd9JyApOwoJfQoKCS8vCgkvLyBJRSdzIGFscGhhIGZ1bmN0aW9uCgkvLwoJLy8JIGFscGhhKG9wYWNpdHk9ODgpCgkvLwoJLy8gQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLmllQWxwaGEKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VBbHBoYSgpIHsKCQlpZiAoICEkdGhpcy0+bWF0Y2hSZWcoICcvXFxHb3BhY2l0eT0vaScgKSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJJHZhbHVlID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcR1swLTldKy8nICk7CgkJaWYgKCAkdmFsdWUgPT09IG51bGwgKSB7CgkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZUVudGl0aWVzVmFyaWFibGUoKSA/PyAkdGhpcy0+RXJyb3IoICdDb3VsZCBub3QgcGFyc2UgYWxwaGEnICk7CgkJCSR2YWx1ZSA9ICJAeyIgLiBzdWJzdHIoICR2YWx1ZS0+bmFtZSwgMSApIC4gIn0iOwoJCX0KCgkJJHRoaXMtPmV4cGVjdENoYXIoICcpJyApOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX1F1b3RlZCggJycsICJhbHBoYShvcGFjaXR5PSIgLiAkdmFsdWUgLiAiKSIgKTsKCX0KCgkvKioKCSAqIEEgU2VsZWN0b3IgRWxlbWVudAoJICoKCSAqCSBkaXYKCSAqCSArIGgxCgkgKgkgI3NvY2tzCgkgKgkgaW5wdXRbdHlwZT0idGV4dCJdCgkgKgoJICogRWxlbWVudHMgYXJlIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIFNlbGVjdG9ycywKCSAqIHRoZXkgYXJlIG1hZGUgb3V0IG9mIGEgYENvbWJpbmF0b3JgIChzZWUgY29tYmluYXRvciBydWxlKSwKCSAqIGFuZCBhbiBlbGVtZW50IG5hbWUsIHN1Y2ggYXMgYSB0YWcgYSBjbGFzcywgb3IgYCpgLgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX0VsZW1lbnR8bnVsbAoJICogQHNlZSBsZXNzLTIuNS4zLmpzI3BhcnNlcnMuZWxlbWVudAoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRWxlbWVudCgpIHsKCQkkYyA9ICR0aGlzLT5wYXJzZUNvbWJpbmF0b3IoKTsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQkkZSA9ICR0aGlzLT5tYXRjaFJlZyggJy9cXEcoPzpcZCtcLlxkK3xcZCspJS8nICkKCQkJPz8gJHRoaXMtPm1hdGNoUmVnKCAnL1xcRyg/OlsuI10/fDoqKSg/Oltcdy1dfFteXHgwMC1ceDlmXXxcXFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKy8nICkKCQkJPz8gJHRoaXMtPm1hdGNoQ2hhciggJyonICkKCQkJPz8gJHRoaXMtPm1hdGNoQ2hhciggJyYnICkKCQkJPz8gJHRoaXMtPnBhcnNlQXR0cmlidXRlKCkKCQkJPz8gJHRoaXMtPm1hdGNoUmVnKCAnL1xcR1woW14mKClAXStcKS8nICkKCQkJPz8gJHRoaXMtPm1hdGNoUmVnKCAnL1xcR1tcLiM6XSg/PUApLycgKQoJCQk/PyAkdGhpcy0+cGFyc2VFbnRpdGllc1ZhcmlhYmxlQ3VybHkoKTsKCgkJaWYgKCAkZSA9PT0gbnVsbCApIHsKCQkJJHRoaXMtPnNhdmUoKTsKCQkJaWYgKCAkdGhpcy0+bWF0Y2hDaGFyKCAnKCcgKSApIHsKCQkJCSR2ID0gJHRoaXMtPnBhcnNlU2VsZWN0b3IoKTsKCQkJCWlmICggJHYgJiYgJHRoaXMtPm1hdGNoQ2hhciggJyknICkgKSB7CgkJCQkJJGUgPSBuZXcgTGVzc19UcmVlX1BhcmVuKCAkdiApOwoJCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCX0gZWxzZSB7CgkJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJfQoJCX0KCgkJaWYgKCAkZSAhPT0gbnVsbCApIHsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRWxlbWVudCggJGMsICRlLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJCX0KCX0KCgkvLwoJLy8gQ29tYmluYXRvcnMgY29tYmluZSBlbGVtZW50cyB0b2dldGhlciwgaW4gYSBTZWxlY3Rvci4KCS8vCgkvLyBCZWNhdXNlIG91ciBwYXJzZXIgaXNuJ3Qgd2hpdGUtc3BhY2Ugc2Vuc2l0aXZlLCBzcGVjaWFsIGNhcmUKCS8vIGhhcyB0byBiZSB0YWtlbiwgd2hlbiBwYXJzaW5nIHRoZSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGAgYCwKCS8vIGFzIGl0J3MgYW4gZW1wdHkgc3BhY2UuIFdlIGhhdmUgdG8gY2hlY2sgdGhlIHByZXZpb3VzIGNoYXJhY3RlcgoJLy8gaW4gdGhlIGlucHV0LCB0byBzZWUgaWYgaXQncyBhIGAgYCBjaGFyYWN0ZXIuCgkvLwoJLy8gQHNlZSBsZXNzLTIuNS4zLmpzI3BhcnNlcnMuY29tYmluYXRvcgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUNvbWJpbmF0b3IoKSB7CgkJaWYgKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApIHsKCQkJJGMgPSAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc107CgkJCWlmICggJGMgPT09ICcvJyApIHsKCQkJCSR0aGlzLT5zYXZlKCk7CgkJCQkkc2xhc2hlZENvbWJpbmF0b3IgPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHXC9bYS16XStcLy9pJyApOwoJCQkJaWYgKCAkc2xhc2hlZENvbWJpbmF0b3IgKSB7CgkJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJCXJldHVybiAkc2xhc2hlZENvbWJpbmF0b3I7CgkJCQl9CgkJCQkkdGhpcy0+cmVzdG9yZSgpOwoJCQl9CgoJCQkvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSBsZXNzLmpzIGFsc28gaGFuZGxlcyAnLycgaGVyZSwgYW5kIGltcGxlbWVudCB3aXRoIHJlZ3Jlc3Npb24gdGVzdC4KCQkJaWYgKCAkYyA9PT0gJz4nIHx8ICRjID09PSAnKycgfHwgJGMgPT09ICd+JyB8fCAkYyA9PT0gJ3wnIHx8ICRjID09PSAnXicgKSB7CgoJCQkJJHRoaXMtPnBvcysrOwoJCQkJaWYgKCAkYyA9PT0gJ14nICYmICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA9PT0gJ14nICkgewoJCQkJCSRjID0gJ15eJzsKCQkJCQkkdGhpcy0+cG9zKys7CgkJCQl9CgoJCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKCAwICk7CgoJCQkJcmV0dXJuICRjOwoJCQl9CgoJCQlpZiAoICR0aGlzLT5wb3MgPiAwICYmICR0aGlzLT5pc1doaXRlc3BhY2UoIC0xICkgKSB7CgkJCQlyZXR1cm4gJyAnOwoJCQl9CgkJfQoJfQoKCS8qKgoJICogQSBDU1Mgc2VsZWN0b3IgKHNlZSBzZWxlY3RvciBiZWxvdykKCSAqIHdpdGggbGVzcyBleHRlbnNpb25zIGUuZy4gdGhlIGFiaWxpdHkgdG8gZXh0ZW5kIGFuZCBndWFyZAoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX1NlbGVjdG9yfG51bGwKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNwYXJzZXJzLmxlc3NTZWxlY3RvcgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTGVzc1NlbGVjdG9yKCkgewoJCXJldHVybiAkdGhpcy0+cGFyc2VTZWxlY3RvciggdHJ1ZSApOwoJfQoKCS8qKgoJICogQSBDU1MgU2VsZWN0b3IKCSAqCgkgKgkgLmNsYXNzID4gZGl2ICsgaDEKCSAqCSBsaSBhOmhvdmVyCgkgKgoJICogU2VsZWN0b3JzIGFyZSBtYWRlIG91dCBvZiBvbmUgb3IgbW9yZSBFbGVtZW50cywgc2VlIDo6cGFyc2VFbGVtZW50LgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX1NlbGVjdG9yfG51bGwKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNwYXJzZXJzLnNlbGVjdG9yCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VTZWxlY3RvciggJGlzTGVzcyA9IGZhbHNlICkgewoJCSRlbGVtZW50cyA9IFtdOwoJCSRleHRlbmRMaXN0ID0gW107CgkJJGNvbmRpdGlvbiA9IG51bGw7CgkJJHdoZW4gPSBmYWxzZTsKCQkkZXh0ZW5kID0gZmFsc2U7CgkJJGUgPSBudWxsOwoJCSRjID0gbnVsbDsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQkvLyBwaHBjczppZ25vcmUgR2VuZXJpYy5Db2RlQW5hbHlzaXMuQXNzaWdubWVudEluQ29uZGl0aW9uCgkJd2hpbGUgKCAoICRpc0xlc3MgJiYgKCAkZXh0ZW5kID0gJHRoaXMtPnBhcnNlRXh0ZW5kKCkgKSApIHx8ICggJGlzTGVzcyAmJiAoICR3aGVuID0gJHRoaXMtPm1hdGNoU3RyKCAnd2hlbicgKSApICkgfHwgKCAkZSA9ICR0aGlzLT5wYXJzZUVsZW1lbnQoKSApICkgewoJCQlpZiAoICR3aGVuICkgewoJCQkJJGNvbmRpdGlvbiA9ICR0aGlzLT5wYXJzZUNvbmRpdGlvbnMoKSA/PyAkdGhpcy0+RXJyb3IoICdFeHBlY3RlZCBjb25kaXRpb24nICk7CgkJCX0gZWxzZWlmICggJGNvbmRpdGlvbiApIHsKCQkJCS8vIGVycm9yKCJDU1MgZ3VhcmQgY2FuIG9ubHkgYmUgdXNlZCBhdCB0aGUgZW5kIG9mIHNlbGVjdG9yIik7CgkJCX0gZWxzZWlmICggJGV4dGVuZCApIHsKCQkJCSRleHRlbmRMaXN0ID0gYXJyYXlfbWVyZ2UoICRleHRlbmRMaXN0LCAkZXh0ZW5kICk7CgkJCX0gZWxzZSB7CgkJCQkvLyBpZiggY291bnQoJGV4dGVuZExpc3QpICl7CgkJCQkvL2Vycm9yKCJFeHRlbmQgY2FuIG9ubHkgYmUgdXNlZCBhdCB0aGUgZW5kIG9mIHNlbGVjdG9yIik7CgkJCQkvL30KCQkJCWlmICggJHRoaXMtPnBvcyA8ICR0aGlzLT5pbnB1dF9sZW4gKSB7CgkJCQkJJGMgPSAkdGhpcy0+aW5wdXRbICR0aGlzLT5wb3MgXTsKCQkJCX0KCQkJCWlmICggJGUgIT09IG51bGwgKSB7CgkJCQkJJGVsZW1lbnRzW10gPSAkZTsKCQkJCX0KCQkJCSRlID0gbnVsbDsKCQkJfQoKCQkJaWYgKCAkYyA9PT0gJ3snIHx8ICRjID09PSAnfScgfHwgJGMgPT09ICc7JyB8fCAkYyA9PT0gJywnIHx8ICRjID09PSAnKScgKSB7CgkJCQlicmVhazsKCQkJfQoJCX0KCgkJaWYgKCAkZWxlbWVudHMgKSB7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCAkZWxlbWVudHMsICRleHRlbmRMaXN0LCAkY29uZGl0aW9uLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJCX0KCQlpZiAoICRleHRlbmRMaXN0ICkgewoJCQkkdGhpcy0+RXJyb3IoICdFeHRlbmQgbXVzdCBiZSB1c2VkIHRvIGV4dGVuZCBhIHNlbGVjdG9yLCBpdCBjYW5ub3QgYmUgdXNlZCBvbiBpdHMgb3duJyApOwoJCX0KCX0KCgkvKioKCSAqIEByZXR1cm4gTGVzc19UcmVlX0F0dHJpYnV0ZXxudWxsCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2Vycy5hdHRyaWJ1dGUKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZSgpIHsKCQkkdmFsID0gbnVsbDsKCgkJaWYgKCAhJHRoaXMtPm1hdGNoQ2hhciggJ1snICkgKSB7CgkJCXJldHVybjsKCQl9CgoJCSRrZXkgPSAkdGhpcy0+cGFyc2VFbnRpdGllc1ZhcmlhYmxlQ3VybHkoKTsKCQlpZiAoICEka2V5ICkgewoJCQkka2V5ID0gJHRoaXMtPmV4cGVjdCggJy9cXEcoPzpbX0EtWmEtejAtOS1cKl0qXHwpPyg/OltfQS1aYS16MC05LV18XFxcXC4pKy8nICk7CgkJfQoKCQkkb3AgPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHW3x+KiReXT89LycgKTsKCQlpZiAoICRvcCApIHsKCQkJJHZhbCA9ICR0aGlzLT5wYXJzZUVudGl0aWVzUXVvdGVkKCkgPz8gJHRoaXMtPm1hdGNoUmVnKCAnL1xcR1swLTldKyUvJyApID8/ICR0aGlzLT5tYXRjaFJlZyggJy9cXEdbXHctXSsvJyApID8/ICR0aGlzLT5wYXJzZUVudGl0aWVzVmFyaWFibGVDdXJseSgpOwoJCX0KCgkJJHRoaXMtPmV4cGVjdENoYXIoICddJyApOwoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9BdHRyaWJ1dGUoICRrZXksICRvcCwgJHZhbCApOwoJfQoKCS8qKgoJICogVGhlIGBibG9ja2AgcnVsZSBpcyB1c2VkIGJ5IGBydWxlc2V0YCBhbmQgYG1peGluLmRlZmluaXRpb25gLgoJICogSXQncyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBgcHJpbWFyeWAgcnVsZSwgd2l0aCBhZGRlZCBge31gLgoJICoKCSAqIEByZXR1cm4gYXJyYXk8TGVzc19UcmVlPnxudWxsCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2Vycy5ibG9jawoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQmxvY2soKSB7CgkJaWYgKCAkdGhpcy0+bWF0Y2hDaGFyKCAneycgKSApIHsKCQkJJGNvbnRlbnQgPSAkdGhpcy0+cGFyc2VQcmltYXJ5KCk7CgkJCWlmICggJHRoaXMtPm1hdGNoQ2hhciggJ30nICkgKSB7CgkJCQlyZXR1cm4gJGNvbnRlbnQ7CgkJCX0KCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUJsb2NrUnVsZXNldCgpIHsKCQkkYmxvY2sgPSAkdGhpcy0+cGFyc2VCbG9jaygpOwoJCWlmICggJGJsb2NrICE9PSBudWxsICkgewoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9SdWxlc2V0KCBudWxsLCAkYmxvY2sgKTsKCQl9Cgl9CgoJLyoqIEByZXR1cm4gTGVzc19UcmVlX0RldGFjaGVkUnVsZXNldHxudWxsICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRGV0YWNoZWRSdWxlc2V0KCkgewoJCSRibG9ja1J1bGVzZXQgPSAkdGhpcy0+cGFyc2VCbG9ja1J1bGVzZXQoKTsKCQlpZiAoICRibG9ja1J1bGVzZXQgKSB7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0RldGFjaGVkUnVsZXNldCggJGJsb2NrUnVsZXNldCApOwoJCX0KCX0KCgkvKioKCSAqIFJ1bGVzZXQgc3VjaCBhczoKCSAqCgkgKiAgICAgZGl2LCAuY2xhc3MsIGJvZHkgPiBwIHsKCSAqICAgICB9CgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfUnVsZXNldHxudWxsCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2Vycy5ydWxlc2V0CgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VSdWxlc2V0KCkgewoJCSRzZWxlY3RvcnMgPSBbXTsKCgkJJHRoaXMtPnNhdmUoKTsKCQkvLyBUT0RPOiBtaXNzaW5nCgkJLy8gaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9jb21taXQvYjgxNDBkNGJhYWQxOGJhNzMyZTJiMzIyZDg4OTFhOWIwZmYwNjVkNSNkaWZmLWNhZDQxOWYxMzFjYmVjYjA3OTllZTE3ZWJhOTMxOWQzZmY1MWRlMDllYjM4NzZlZmI5ZTRjMDY4YzFmNjAyNWYKCQkvLyB0aGUgY29tbWl0IGFib3ZlIHVwZGF0ZWQgdGhlIGBwZXJtaXNzaXZlLXBhcnNlLmxlc3NgIGZpeHR1cmUgd29ya2VkIG9uIElkMzZlMGYxNDJkN2Y0MzA2MDNkYTNmMGQ2ODI1YWE2YTBiYzliN2YxCgkJLy8gYW5kIGl0IHJlcXVpcmVkIHRvIGFkZCBhbiBvdmVycmlkZSBmb3IgcGVybWlzaXZlLXBhcnNlLmNzcy4KCQkvLyBXaGVuIHdvcmtpbmcgb24gcGFyc2UgaW50ZXJwb2xhdGlvbiwgcGxlYXNlIG1ha2Ugc3VyZSB0byByZW1vdmUgdGhlIHBlcm1pc3NpdmUtcGFyc2UKCQkvLyBvdmVycmlkZQoJCXdoaWxlICggdHJ1ZSApIHsKCQkJJHMgPSAkdGhpcy0+cGFyc2VMZXNzU2VsZWN0b3IoKTsKCQkJaWYgKCAhJHMgKSB7CgkJCQlicmVhazsKCQkJfQoJCQkkc2VsZWN0b3JzW10gPSAkczsKCQkJJHRoaXMtPmNvbW1lbnRTdG9yZSA9IFtdOwoKCQkJaWYgKCAkcy0+Y29uZGl0aW9uICYmIGNvdW50KCAkc2VsZWN0b3JzICkgPiAxICkgewoJCQkJJHRoaXMtPkVycm9yKCAnR3VhcmRzIGFyZSBvbmx5IGN1cnJlbnRseSBhbGxvd2VkIG9uIGEgc2luZ2xlIHNlbGVjdG9yLicgKTsKCQkJfQoKCQkJaWYgKCAhJHRoaXMtPm1hdGNoQ2hhciggJywnICkgKSB7CgkJCQlicmVhazsKCQkJfQoJCQlpZiAoICRzLT5jb25kaXRpb24gKSB7CgkJCQkkdGhpcy0+RXJyb3IoICdHdWFyZHMgYXJlIG9ubHkgY3VycmVudGx5IGFsbG93ZWQgb24gYSBzaW5nbGUgc2VsZWN0b3IuJyApOwoJCQl9CgkJCSR0aGlzLT5jb21tZW50U3RvcmUgPSBbXTsKCQl9CgoJCWlmICggJHNlbGVjdG9ycyApIHsKCQkJJHJ1bGVzID0gJHRoaXMtPnBhcnNlQmxvY2soKTsKCQkJaWYgKCBpc19hcnJheSggJHJ1bGVzICkgKSB7CgkJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCQkvLyBUT0RPOiBMZXNzX0Vudmlyb25tZW50Ojokc3RyaWN0SW1wb3J0cyBpcyBub3QgeWV0IHBvcnRlZAoJCQkJLy8gSXQgaXMgcGFzc2VkIGhlcmUgYnkgbGVzcy5qcwoJCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfUnVsZXNldCggJHNlbGVjdG9ycywgJHJ1bGVzICk7CgkJCX0KCQl9CgoJCS8vIEJhY2t0cmFjawoJCSR0aGlzLT5yZXN0b3JlKCk7Cgl9CgoJLyoqCgkgKiBDdXN0b20gbGVzcy5waHAgcGFyc2UgZnVuY3Rpb24gZm9yIGZpbmRpbmcgc2ltcGxlIG5hbWUtdmFsdWUgY3NzIHBhaXJzCgkgKiBleDogd2lkdGg6MTAwcHg7CgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VOYW1lVmFsdWUoKSB7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQkkdGhpcy0+c2F2ZSgpOwoKCQkkbWF0Y2ggPSAkdGhpcy0+bWF0Y2hSZWcoICcvXFxHKFthLXpBLVpcLV0rKVxzKjpccyooW1wnIl0/WyNhLXpBLVowLTlcLSVcLixdKz9bXCciXT9ccyopICooISAqaW1wb3J0YW50KT9ccyooWzt9XSkvJyApOwoJCWlmICggJG1hdGNoICkgewoKCQkJaWYgKCAkbWF0Y2hbNF0gPT0gJ30nICkgewoJCQkJLy8gYmVjYXVzZSB3ZSB3aWxsIHBhcnNlIGFsbCBjb21tZW50cyBhZnRlciBjbG9zaW5nIH0sIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHN0b3JlIGFzCgkJCQkvLyB3ZSdyZSBnb2luZyB0byByZXNldCB0aGUgcG9zaXRpb24gdG8gY2xvc2luZyB9CgkJCQkkdGhpcy0+Y29tbWVudFN0b3JlID0gW107CgkJCQkkdGhpcy0+cG9zID0gJGluZGV4ICsgc3RybGVuKCAkbWF0Y2hbMF0gKSAtIDE7CgkJCQkkbWF0Y2hbMl0gPSBydHJpbSggJG1hdGNoWzJdICk7CgkJCX0KCgkJCWlmICggJG1hdGNoWzNdICkgewoJCQkJJG1hdGNoWzJdIC49ICRtYXRjaFszXTsKCQkJfQoJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX05hbWVWYWx1ZSggJG1hdGNoWzFdLCAkbWF0Y2hbMl0sICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvICk7CgkJfQoKCQkkdGhpcy0+cmVzdG9yZSgpOwoJfQoKCS8vIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2Vycy5kZWNsYXJhdGlvbgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZURlY2xhcmF0aW9uKCkgewoJCSR2YWx1ZSA9IG51bGw7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQkkaGFzRFIgPSBmYWxzZTsKCQkkYyA9ICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA/PyBudWxsOwoJCSRpbXBvcnRhbnQgPSBudWxsOwoJCSRtZXJnZSA9IGZhbHNlOwoJCS8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGxlc3MuanMgYWxzbyBoYW5kbGVzICc6JyBoZXJlLCBhbmQgaW1wbGVtZW50IHdpdGggcmVncmVzc2lvbiB0ZXN0LgoJCWlmICggJGMgPT09ICcuJyB8fCAkYyA9PT0gJyMnIHx8ICRjID09PSAnJicgKSB7CgkJCXJldHVybjsKCQl9CgoJCSR0aGlzLT5zYXZlKCk7CgkJJG5hbWUgPSAkdGhpcy0+cGFyc2VWYXJpYWJsZSgpID8/ICR0aGlzLT5wYXJzZVJ1bGVQcm9wZXJ0eSgpOwoKCQlpZiAoICRuYW1lICkgewoJCQkkaXNWYXJpYWJsZSA9IGlzX3N0cmluZyggJG5hbWUgKTsKCgkJCWlmICggJGlzVmFyaWFibGUgKSB7CgkJCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VEZXRhY2hlZFJ1bGVzZXQoKTsKCQkJCWlmICggJHZhbHVlICkgewoJCQkJCSRoYXNEUiA9IHRydWU7CgkJCQl9CgkJCX0KCQkJJHRoaXMtPmNvbW1lbnRTdG9yZSA9IFtdOwoJCQlpZiAoICEkdmFsdWUgKSB7CgkJCQkvLyBhIG5hbWUgcmV0dXJuZWQgYnkgdGhpcy5ydWxlUHJvcGVydHkoKSBpcyBhbHdheXMgYW4gYXJyYXkgb2YgdGhlIGZvcm06CgkJCQkvLyBbc3RyaW5nLTEsIC4uLiwgc3RyaW5nLW4sICIiXSBvciBbc3RyaW5nLTEsIC4uLiwgc3RyaW5nLW4sICIrIl0KCQkJCS8vIHdoZXJlIGVhY2ggaXRlbSBpcyBhIHRyZWUuS2V5d29yZCBvciB0cmVlLlZhcmlhYmxlCgkJCQlpZiAoICEkaXNWYXJpYWJsZSAmJiBpc19hcnJheSggJG5hbWUgKSAmJiBjb3VudCggJG5hbWUgKSA+IDEgKSB7CgkJCQkJJG1lcmdlID0gYXJyYXlfcG9wKCAkbmFtZSApLT52YWx1ZTsKCQkJCX0KCQkJCS8vIEN1c3RvbSBwcm9wZXJ0eSB2YWx1ZXMgZ2V0IHBlcm1pc3NpdmUgcGFyc2luZwoJCQkJaWYgKCBpc19hcnJheSggJG5hbWUgKSAmJiBhcnJheV9rZXlfZXhpc3RzKCAwLCAkbmFtZSApIC8vIHRvIHNhdGlzZnkgcGhhbgoJCQkJCSYmICRuYW1lWzBdIGluc3RhbmNlb2YgTGVzc19UcmVlX0tleXdvcmQKCQkJCQkmJiAkbmFtZVswXS0+dmFsdWUgJiYgc3RyX3N0YXJ0c193aXRoKCAkbmFtZVswXS0+dmFsdWUsICctLScgKSApIHsKCQkJCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VQZXJtaXNzaXZlVmFsdWUoIFsgJzsnLCAnfScgXSApOwoJCQkJfSBlbHNlIHsKCQkJCQkvLyBUcnkgdG8gc3RvcmUgdmFsdWVzIGFzIGFub255bW91cwoJCQkJCS8vIElmIHdlIG5lZWQgdGhlIHZhbHVlIGxhdGVyIHdlJ2xsIHJlLXBhcnNlIGl0IGluIHJ1bGVzZXQucGFyc2VWYWx1ZQoJCQkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZUFub255bW91c1ZhbHVlKCk7CgkJCQl9CgoJCQkJaWYgKCAkdmFsdWUgKSB7CgkJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJCS8vIGFub255bW91cyB2YWx1ZXMgYWJzb3JiIHRoZSBlbmQgJzsnIHdoaWNoIGlzIHJlcXVpcmVkIGZvciB0aGVtIHRvIHdvcmsKCQkJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EZWNsYXJhdGlvbigKCQkJCQkJJG5hbWUsCgkJCQkJCSR2YWx1ZSwKCQkJCQkJZmFsc2UsCgkJCQkJCSRtZXJnZSwKCQkJCQkJJGluZGV4LAoJCQkJCQkkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8KCQkJCQkpOwoJCQkJfQoJCQkJaWYgKCAhJHZhbHVlICkgewoJCQkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZVZhbHVlKCk7CgkJCQl9CgkJCQlpZiAoICR2YWx1ZSApIHsKCQkJCQkkaW1wb3J0YW50ID0gJHRoaXMtPnBhcnNlSW1wb3J0YW50KCk7CgkJCQl9IGVsc2VpZiAoICRpc1ZhcmlhYmxlICkgewoJCQkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZVBlcm1pc3NpdmVWYWx1ZSgpOwoJCQkJfQoJCQl9CgkJCWlmICggJHZhbHVlICYmICggJHRoaXMtPnBhcnNlRW5kKCkgfHwgJGhhc0RSICkgKSB7CgkJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EZWNsYXJhdGlvbiggJG5hbWUsICR2YWx1ZSwgJGltcG9ydGFudCwgJG1lcmdlLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJCQl9IGVsc2UgewoJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJfQoJCX0gZWxzZSB7CgkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJfQoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLmFub255bW91c1ZhbHVlCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VBbm9ueW1vdXNWYWx1ZSgpIHsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSRtYXRjaCA9ICR0aGlzLT5tYXRjaFJlZyggJy9cXEcoW14uI0BcJCtcL1wnIipgKDt7fS1dKik7LycgKTsKCQlpZiAoICRtYXRjaCApIHsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAkbWF0Y2hbMV0sICRpbmRleCApOwoJCX0KCX0KCgkvKioKCSAqIFVzZWQgZm9yIGN1c3RvbSBwcm9wZXJ0aWVzLCBhdC1ydWxlcywgYW5kIHZhcmlhYmxlcyAoYXMgZmFsbGJhY2spCgkgKiBQYXJzZXMgYWxtb3N0IGFueXRoaW5nIGluc2lkZSBvZiB7fSBbXSAoKSAiIiBibG9ja3MKCSAqIHVudGlsIGl0IHJlYWNoZXMgb3V0ZXItbW9zdCB0b2tlbnMuCgkgKgoJICogRmlyc3QsIGl0IHdpbGwgdHJ5IHRvIHBhcnNlIGNvbW1lbnRzIGFuZCBlbnRpdGllcyB0byByZWFjaAoJICogdGhlIGVuZC4gVGhpcyBpcyBtb3N0bHkgbGlrZSB0aGUgRXhwcmVzc2lvbiBwYXJzZXIgZXhjZXB0IG5vCgkgKiBtYXRoIGlzIGFsbG93ZWQuCgkgKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLnBlcm1pc3NpdmVWYWx1ZQoJICogQHBhcmFtIG51bGx8c3RyaW5nfGFycmF5ICR1bnRpbFRva2VucwoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUGVybWlzc2l2ZVZhbHVlKCAkdW50aWxUb2tlbnMgPSBudWxsICkgewoJCSR0b2sgPSAkdW50aWxUb2tlbnMgPz8gJzsnOwoJCSRpbmRleCA9ICR0aGlzLT5wb3M7CgkJJHJlc3VsdCA9IFtdOwoKCQlpZiAoIGlzX2FycmF5KCAkdG9rICkgKSB7CgkJCSR0ZXN0Q3VycmVudENoYXIgPSBzdGF0aWMgZnVuY3Rpb24gKCAkY3VycmVudENoYXIgKSB1c2UgKCAkdG9rICkgewoJCQkJcmV0dXJuIGluX2FycmF5KCAkY3VycmVudENoYXIsICR0b2sgKTsKCQkJfTsKCQl9IGVsc2UgewoJCQkkdGVzdEN1cnJlbnRDaGFyID0gc3RhdGljIGZ1bmN0aW9uICggJGN1cnJlbnRDaGFyICkgdXNlICggJHRvayApIHsKCQkJCXJldHVybiAkdG9rID09PSAkY3VycmVudENoYXI7CgkJCX07CgkJfQoKCQlpZiAoICR0ZXN0Q3VycmVudENoYXIoICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSApICkgewoJCQlyZXR1cm47CgkJfQoKCQkkdmFsdWUgPSBbXTsKCQlkbyB7CgkJCSRlID0gJHRoaXMtPnBhcnNlQ29tbWVudCgpOwoJCQlpZiAoICRlICkgewoJCQkJJHZhbHVlW10gPSAkZTsKCQkJCWNvbnRpbnVlOwoJCQl9CgkJCSRlID0gJHRoaXMtPnBhcnNlRW50aXR5KCk7CgkJCWlmICggJGUgKSB7CgkJCQkkdmFsdWVbXSA9ICRlOwoJCQl9CgkJCS8vIE5PVEU6IENvbW1hIGhhbmRsaW5nIGJhY2twb3J0ZWQgZnJvbSBMZXNzLmpzIDQuMi4xIChUMzg2MDc3KQoJCQlpZiAoICR0aGlzLT5wZWVrQ2hhciggJywnICkgKSB7CgkJCQkkdmFsdWVbXSA9IG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAnLCcgKTsKCQkJCSR0aGlzLT5tYXRjaENoYXIoICcsJyApOwoJCQl9CgkJfSB3aGlsZSAoICRlICk7CgkJJGRvbmUgPSAkdGVzdEN1cnJlbnRDaGFyKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gKTsKCQlpZiAoICR2YWx1ZSApIHsKCQkJJHZhbHVlID0gbmV3IExlc3NfVHJlZV9FeHByZXNzaW9uKCAkdmFsdWUgKTsKCQkJaWYgKCAkZG9uZSApIHsKCQkJCXJldHVybiAkdmFsdWU7CgkJCX0gZWxzZSB7CgkJCQkkcmVzdWx0W10gPSAkdmFsdWU7CgkJCX0KCQkJLy8gUHJlc2VydmUgc3BhY2UgYmVmb3JlICRwYXJzZVVudGlsIGFzIGl0IHdpbGwgbm90CgkJCWlmICggJHRoaXMtPmlucHV0WyR0aGlzLT5wb3MgLSAxXSA9PT0gJyAnICkgewoJCQkJJHJlc3VsdFtdID0gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoICcgJywgJGluZGV4ICk7CgkJCX0KCQl9CgkJJHRoaXMtPnNhdmUoKTsKCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VVbnRpbCggJHRvayApOwoKCQlpZiAoICR2YWx1ZSApIHsKCQkJaWYgKCBpc19zdHJpbmcoICR2YWx1ZSApICkgewoJCQkJJHRoaXMtPkVycm9yKCAiZXhwZWN0ZWQgJyIgLiAkdmFsdWUgLiAiJyIgKTsKCQkJfQoJCQlpZiAoIGNvdW50KCAkdmFsdWUgKSA9PT0gMSAmJiAkdmFsdWVbMF0gPT09ICcgJyApIHsKCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fub255bW91cyggJycsICRpbmRleCApOwoJCQl9CgkJCSR2YWx1ZUxlbmd0aCA9IGNvdW50KCAkdmFsdWUgKTsKCQkJZm9yICggJGkgPSAwOyAkaSA8ICR2YWx1ZUxlbmd0aDsgJGkrKyApIHsKCQkJCSRpdGVtID0gJHZhbHVlWyRpXTsKCQkJCWlmICggaXNfYXJyYXkoICRpdGVtICkgKSB7CgkJCQkJJHJlc3VsdFtdID0JbmV3IExlc3NfVHJlZV9RdW90ZWQoCgkJCQkJCSRpdGVtWzBdLAoJCQkJCQkkaXRlbVsxXSwKCQkJCQkJdHJ1ZSwKCQkJCQkJJGluZGV4LAoJCQkJCQkkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8KCQkJCQkpOwoJCQkJfSBlbHNlIHsKCQkJCQlpZiAoICRpID09PSAkdmFsdWVMZW5ndGggLSAxICkgewoJCQkJCQkkaXRlbSA9IHRyaW0oICRpdGVtICk7CgkJCQkJfQoJCQkJCS8vIFRyZWF0IGxpa2UgcXVvdGVkIHZhbHVlcywgYnV0IHJlcGxhY2UgdmFycyBsaWtlIHVucXVvdGVkIGV4cHJlc3Npb25zCgkJCQkJJHF1b3RlID0gbmV3IExlc3NfVHJlZV9RdW90ZWQoCgkJCQkJCSdcJycsCgkJCQkJCSRpdGVtLAoJCQkJCQl0cnVlLAoJCQkJCQkkaW5kZXgsCgkJCQkJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbwoJCQkJCSk7CgkJCQkJJHF1b3RlLT52YXJpYWJsZVJlZ2V4ID0gJy9AKFtcdy1dKykvJzsKCQkJCQkkcXVvdGUtPnByb3BSZWdleCA9ICcvXCQoW1x3LV0rKS8nOwoJCQkJCSRyZXN1bHRbXSA9ICRxdW90ZTsKCQkJCX0KCQkJfQoJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oICRyZXN1bHQsIHRydWUgKTsKCQl9CgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgkvLwoJLy8gQW4gQGltcG9ydCBhdHJ1bGUKCS8vCgkvLwkgQGltcG9ydCAibGliIjsKCS8vCgkvLyBEZXBlbmRpbmcgb24gb3VyIGVudmlyb25tZW50LCBpbXBvcnRpbmcgaXMgZG9uZSBkaWZmZXJlbnRseToKCS8vIEluIHRoZSBicm93c2VyLCBpdCdzIGFuIFhIUiByZXF1ZXN0LCBpbiBOb2RlLCBpdCB3b3VsZCBiZSBhCgkvLyBmaWxlLXN5c3RlbSBvcGVyYXRpb24uIFRoZSBmdW5jdGlvbiB1c2VkIGZvciBpbXBvcnRpbmcgaXMKCS8vIHN0b3JlZCBpbiBgaW1wb3J0YCwgd2hpY2ggd2UgcGFzcyB0byB0aGUgSW1wb3J0IGNvbnN0cnVjdG9yLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VJbXBvcnQoKSB7CgkJJHRoaXMtPnNhdmUoKTsKCgkJJGRpciA9ICR0aGlzLT5tYXRjaFJlZyggJy9cXEdAaW1wb3J0P1xzKy8nICk7CgoJCWlmICggJGRpciApIHsKCQkJJG9wdGlvbnMgPSAkdGhpcy0+cGFyc2VJbXBvcnRPcHRpb25zKCk7CgkJCSRwYXRoID0gJHRoaXMtPnBhcnNlRW50aXRpZXNRdW90ZWQoKSA/PyAkdGhpcy0+cGFyc2VFbnRpdGllc1VybCgpOwoKCQkJaWYgKCAkcGF0aCApIHsKCQkJCSRmZWF0dXJlcyA9ICR0aGlzLT5wYXJzZU1lZGlhRmVhdHVyZXMoKTsKCQkJCWlmICggJHRoaXMtPm1hdGNoQ2hhciggJzsnICkgKSB7CgkJCQkJaWYgKCAkZmVhdHVyZXMgKSB7CgkJCQkJCSRmZWF0dXJlcyA9IG5ldyBMZXNzX1RyZWVfVmFsdWUoICRmZWF0dXJlcyApOwoJCQkJCX0KCgkJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJCXJldHVybiBuZXcgTGVzc19UcmVlX0ltcG9ydCggJHBhdGgsICRmZWF0dXJlcywgJG9wdGlvbnMsICR0aGlzLT5wb3MsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJCQkJfQoJCQl9CgkJfQoKCQkkdGhpcy0+cmVzdG9yZSgpOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VJbXBvcnRPcHRpb25zKCkgewoJCSRvcHRpb25zID0gW107CgoJCS8vIGxpc3Qgb2Ygb3B0aW9ucywgc3Vycm91bmRlZCBieSBwYXJlbnMKCQlpZiAoICEkdGhpcy0+bWF0Y2hDaGFyKCAnKCcgKSApIHsKCQkJcmV0dXJuICRvcHRpb25zOwoJCX0KCQlkbyB7CgkJCSRvcHRpb25OYW1lID0gJHRoaXMtPnBhcnNlSW1wb3J0T3B0aW9uKCk7CgkJCWlmICggJG9wdGlvbk5hbWUgKSB7CgkJCQkkdmFsdWUgPSB0cnVlOwoJCQkJc3dpdGNoICggJG9wdGlvbk5hbWUgKSB7CgkJCQkJY2FzZSAiY3NzIjoKCQkJCQkJJG9wdGlvbk5hbWUgPSAibGVzcyI7CgkJCQkJCSR2YWx1ZSA9IGZhbHNlOwoJCQkJCQlicmVhazsKCQkJCQljYXNlICJvbmNlIjoKCQkJCQkJJG9wdGlvbk5hbWUgPSAibXVsdGlwbGUiOwoJCQkJCQkkdmFsdWUgPSBmYWxzZTsKCQkJCQkJYnJlYWs7CgkJCQl9CgkJCQkkb3B0aW9uc1skb3B0aW9uTmFtZV0gPSAkdmFsdWU7CgkJCQlpZiAoICEkdGhpcy0+bWF0Y2hDaGFyKCAnLCcgKSApIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0gd2hpbGUgKCAkb3B0aW9uTmFtZSApOwoJCSR0aGlzLT5leHBlY3RDaGFyKCAnKScgKTsKCQlyZXR1cm4gJG9wdGlvbnM7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUltcG9ydE9wdGlvbigpIHsKCQkkb3B0ID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcRyhsZXNzfGNzc3xtdWx0aXBsZXxvbmNlfGlubGluZXxyZWZlcmVuY2V8b3B0aW9uYWwpLycgKTsKCQlpZiAoICRvcHQgKSB7CgkJCXJldHVybiAkb3B0WzFdOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWVkaWFGZWF0dXJlKCkgewoJCSRub2RlcyA9IFtdOwoKCQlkbyB7CgkJCSRlID0gJHRoaXMtPnBhcnNlRW50aXRpZXNLZXl3b3JkKCkgPz8gJHRoaXMtPnBhcnNlRW50aXRpZXNWYXJpYWJsZSgpOwoJCQlpZiAoICRlICkgewoJCQkJJG5vZGVzW10gPSAkZTsKCQkJfSBlbHNlaWYgKCAkdGhpcy0+bWF0Y2hDaGFyKCAnKCcgKSApIHsKCQkJCSRwID0gJHRoaXMtPnBhcnNlUHJvcGVydHkoKTsKCQkJCSRlID0gJHRoaXMtPnBhcnNlVmFsdWUoKTsKCQkJCWlmICggJHRoaXMtPm1hdGNoQ2hhciggJyknICkgKSB7CgkJCQkJaWYgKCAkcCAmJiAkZSApIHsKCQkJCQkJJHIgPSBuZXcgTGVzc19UcmVlX0RlY2xhcmF0aW9uKCAkcCwgJGUsIG51bGwsIG51bGwsICR0aGlzLT5wb3MsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbywgdHJ1ZSApOwoJCQkJCQkkbm9kZXNbXSA9IG5ldyBMZXNzX1RyZWVfUGFyZW4oICRyICk7CgkJCQkJfSBlbHNlaWYgKCAkZSApIHsKCQkJCQkJJG5vZGVzW10gPSBuZXcgTGVzc19UcmVlX1BhcmVuKCAkZSApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXJldHVybiBudWxsOwoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJcmV0dXJuIG51bGw7CgkJCQl9CgkJCX0KCQl9IHdoaWxlICggJGUgKTsKCgkJaWYgKCAkbm9kZXMgKSB7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oICRub2RlcyApOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWVkaWFGZWF0dXJlcygpIHsKCQkkZmVhdHVyZXMgPSBbXTsKCgkJZG8gewoJCQkkZSA9ICR0aGlzLT5wYXJzZU1lZGlhRmVhdHVyZSgpOwoJCQlpZiAoICRlICkgewoJCQkJJGZlYXR1cmVzW10gPSAkZTsKCQkJCWlmICggISR0aGlzLT5tYXRjaENoYXIoICcsJyApICkgewoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJGUgPSAkdGhpcy0+cGFyc2VFbnRpdGllc1ZhcmlhYmxlKCk7CgkJCQlpZiAoICRlICkgewoJCQkJCSRmZWF0dXJlc1tdID0gJGU7CgkJCQkJaWYgKCAhJHRoaXMtPm1hdGNoQ2hhciggJywnICkgKSB7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0gd2hpbGUgKCAkZSApOwoKCQlyZXR1cm4gJGZlYXR1cmVzID86IG51bGw7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjcGFyc2Vycy5tZWRpYQoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWVkaWEoKSB7CgkJaWYgKCAkdGhpcy0+bWF0Y2hTdHIoICdAbWVkaWEnICkgKSB7CgkJCSR0aGlzLT5zYXZlKCk7CgoJCQkkZmVhdHVyZXMgPSAkdGhpcy0+cGFyc2VNZWRpYUZlYXR1cmVzKCk7CgkJCSRydWxlcyA9ICR0aGlzLT5wYXJzZUJsb2NrKCk7CgoJCQlpZiAoICRydWxlcyA9PT0gbnVsbCApIHsKCQkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCQlyZXR1cm47CgkJCX0KCgkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfTWVkaWEoICRydWxlcywgJGZlYXR1cmVzLCAkdGhpcy0+cG9zLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gKTsKCQl9Cgl9CgoJLyoqCgkgKiBBIENTUyBBdFJ1bGUgbGlrZSBgQGNoYXJzZXQgInV0Zi04IjtgCgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfSW1wb3J0fExlc3NfVHJlZV9NZWRpYXxMZXNzX1RyZWVfQXRSdWxlfG51bGwKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjcGFyc2Vycy5hdHJ1bGUKCSAqIEB0b2RvIGNoZWNrIGZlYXR1cmUgcGFyaXR5IHdpdGggMy4xMy4xCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VBdFJ1bGUoKSB7CgkJaWYgKCAhJHRoaXMtPnBlZWtDaGFyKCAnQCcgKSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJJHJ1bGVzID0gbnVsbDsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSRoYXNCbG9jayA9IHRydWU7CgkJJGhhc0lkZW50aWZpZXIgPSBmYWxzZTsKCQkkaGFzRXhwcmVzc2lvbiA9IGZhbHNlOwoJCSRoYXNVbmtub3duID0gZmFsc2U7CgkJJGlzUm9vdGVkID0gdHJ1ZTsKCgkJJHZhbHVlID0gJHRoaXMtPnBhcnNlSW1wb3J0KCkgPz8gJHRoaXMtPnBhcnNlTWVkaWEoKTsKCQlpZiAoICR2YWx1ZSApIHsKCQkJcmV0dXJuICR2YWx1ZTsKCQl9CgoJCSR0aGlzLT5zYXZlKCk7CgoJCSRuYW1lID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcR0BbYS16LV0rLycgKTsKCgkJaWYgKCAhJG5hbWUgKSB7CgkJCXJldHVybjsKCQl9CgoJCSRub25WZW5kb3JTcGVjaWZpY05hbWUgPSAkbmFtZTsKCQkkcG9zID0gc3RycG9zKCAkbmFtZSwgJy0nLCAyICk7CgkJaWYgKCAkbmFtZVsxXSA9PSAnLScgJiYgJHBvcyA+IDAgKSB7CgkJCSRub25WZW5kb3JTcGVjaWZpY05hbWUgPSAiQCIgLiBzdWJzdHIoICRuYW1lLCAkcG9zICsgMSApOwoJCX0KCgkJc3dpdGNoICggJG5vblZlbmRvclNwZWNpZmljTmFtZSApIHsKCQkJLyoKCQkJY2FzZSAiQGZvbnQtZmFjZSI6CgkJCWNhc2UgIkB2aWV3cG9ydCI6CgkJCWNhc2UgIkB0b3AtbGVmdCI6CgkJCWNhc2UgIkB0b3AtbGVmdC1jb3JuZXIiOgoJCQljYXNlICJAdG9wLWNlbnRlciI6CgkJCWNhc2UgIkB0b3AtcmlnaHQiOgoJCQljYXNlICJAdG9wLXJpZ2h0LWNvcm5lciI6CgkJCWNhc2UgIkBib3R0b20tbGVmdCI6CgkJCWNhc2UgIkBib3R0b20tbGVmdC1jb3JuZXIiOgoJCQljYXNlICJAYm90dG9tLWNlbnRlciI6CgkJCWNhc2UgIkBib3R0b20tcmlnaHQiOgoJCQljYXNlICJAYm90dG9tLXJpZ2h0LWNvcm5lciI6CgkJCWNhc2UgIkBsZWZ0LXRvcCI6CgkJCWNhc2UgIkBsZWZ0LW1pZGRsZSI6CgkJCWNhc2UgIkBsZWZ0LWJvdHRvbSI6CgkJCWNhc2UgIkByaWdodC10b3AiOgoJCQljYXNlICJAcmlnaHQtbWlkZGxlIjoKCQkJY2FzZSAiQHJpZ2h0LWJvdHRvbSI6CgkJCWhhc0Jsb2NrID0gdHJ1ZTsKCQkJaXNSb290ZWQgPSB0cnVlOwoJCQlicmVhazsKCQkJKi8KCQkJY2FzZSAiQGNvdW50ZXItc3R5bGUiOgoJCQkJJGhhc0lkZW50aWZpZXIgPSB0cnVlOwoJCQkJYnJlYWs7CgkJCWNhc2UgIkBjaGFyc2V0IjoKCQkJCSRoYXNJZGVudGlmaWVyID0gdHJ1ZTsKCQkJCSRoYXNCbG9jayA9IGZhbHNlOwoJCQkJYnJlYWs7CgkJCWNhc2UgIkBuYW1lc3BhY2UiOgoJCQkJJGhhc0V4cHJlc3Npb24gPSB0cnVlOwoJCQkJJGhhc0Jsb2NrID0gZmFsc2U7CgkJCQlicmVhazsKCQkJY2FzZSAiQGtleWZyYW1lcyI6CgkJCQkkaGFzSWRlbnRpZmllciA9IHRydWU7CgkJCQlicmVhazsKCQkJY2FzZSAiQGhvc3QiOgoJCQljYXNlICJAcGFnZSI6CgkJCQkkaGFzVW5rbm93biA9IHRydWU7CgkJCQlicmVhazsKCQkJY2FzZSAiQGRvY3VtZW50IjoKCQkJY2FzZSAiQHN1cHBvcnRzIjoKCQkJCSRoYXNVbmtub3duID0gdHJ1ZTsKCQkJCSRpc1Jvb3RlZCA9IGZhbHNlOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6CgkJCQkvLyBUT0RPOiBwb3J0IG90aGVyIHBhcnRzIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvY29tbWl0L2UzYzEzMTIxZGZkY2E0OGJhOGZlMjYzMzVjYzEyZGQzZjc5NDg2NzYKCQkJCSRoYXNVbmtub3duID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCX0KCgkJJHRoaXMtPmNvbW1lbnRTdG9yZSA9IFtdOwoKCQlpZiAoICRoYXNJZGVudGlmaWVyICkgewoJCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VFbnRpdHkoKTsKCQkJaWYgKCAhJHZhbHVlICkgewoJCQkJJHRoaXMtPkVycm9yKCAiZXhwZWN0ZWQgIiAuICRuYW1lIC4gIiBpZGVudGlmaWVyIiApOwoJCQl9CgkJfSBlbHNlaWYgKCAkaGFzRXhwcmVzc2lvbiApIHsKCQkJJHZhbHVlID0gJHRoaXMtPnBhcnNlRXhwcmVzc2lvbigpOwoJCQlpZiAoICEkdmFsdWUgKSB7CgkJCQkkdGhpcy0+RXJyb3IoICJleHBlY3RlZCAiIC4gJG5hbWUgLiAiIGV4cHJlc3Npb24iICk7CgkJCX0KCQl9IGVsc2VpZiAoICRoYXNVbmtub3duICkgewoJCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VQZXJtaXNzaXZlVmFsdWUoIFsgJ3snLCAnOycgXSApOwoJCQkkaGFzQmxvY2sgPSAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICd7JzsKCQkJaWYgKCAhJHZhbHVlICkgewoJCQkJaWYgKCAhJGhhc0Jsb2NrICYmICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSAhPT0gJzsnICkgewoJCQkJCSR0aGlzLT5FcnJvciggJG5hbWUgLiAiIHJ1bGUgaXMgbWlzc2luZyBibG9jayBvciBlbmRpbmcgc2VtaS1jb2xvbiIgKTsKCQkJCX0KCQkJfSBlbHNlaWYgKCAhJHZhbHVlLT52YWx1ZSApIHsKCQkJCSR2YWx1ZSA9IG51bGw7CgkJCX0KCQl9CgoJCWlmICggJGhhc0Jsb2NrICkgewoJCQkkcnVsZXMgPSAkdGhpcy0+cGFyc2VCbG9ja1J1bGVzZXQoKTsKCQl9CgoJCWlmICggJHJ1bGVzIHx8ICggISRoYXNCbG9jayAmJiAkdmFsdWUgJiYgJHRoaXMtPm1hdGNoQ2hhciggJzsnICkgKSApIHsKCQkJJHRoaXMtPmZvcmdldCgpOwoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9BdFJ1bGUoICRuYW1lLCAkdmFsdWUsICRydWxlcywgJGluZGV4LCAkaXNSb290ZWQsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApOwoJCX0KCgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgkvLwoJLy8gQSBWYWx1ZSBpcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0IG9mIEV4cHJlc3Npb25zCgkvLwoJLy8JIGZvbnQtZmFtaWx5OiBCYXNrZXJ2aWxsZSwgR2VvcmdpYSwgc2VyaWY7CgkvLwoJLy8gSW4gYSBSdWxlLCBhIFZhbHVlIHJlcHJlc2VudHMgZXZlcnl0aGluZyBhZnRlciB0aGUgYDpgLAoJLy8gYW5kIGJlZm9yZSB0aGUgYDtgLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VWYWx1ZSgpIHsKCQkkZXhwcmVzc2lvbnMgPSBbXTsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQlkbyB7CgkJCSRlID0gJHRoaXMtPnBhcnNlRXhwcmVzc2lvbigpOwoJCQlpZiAoICRlICkgewoJCQkJJGV4cHJlc3Npb25zW10gPSAkZTsKCQkJCWlmICggISR0aGlzLT5tYXRjaENoYXIoICcsJyApICkgewoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJfSB3aGlsZSAoICRlICk7CgoJCWlmICggJGV4cHJlc3Npb25zICkgewoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9WYWx1ZSggJGV4cHJlc3Npb25zLCAkaW5kZXggKTsKCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUltcG9ydGFudCgpIHsKCQlpZiAoICR0aGlzLT5wZWVrQ2hhciggJyEnICkgJiYgJHRoaXMtPm1hdGNoUmVnKCAnL1xcRyEgKmltcG9ydGFudC8nICkgKSB7CgkJCXJldHVybiAnICFpbXBvcnRhbnQnOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlU3ViKCkgewoJCSR0aGlzLT5zYXZlKCk7CgkJaWYgKCAkdGhpcy0+bWF0Y2hDaGFyKCAnKCcgKSApIHsKCQkJJGEgPSAkdGhpcy0+cGFyc2VBZGRpdGlvbigpOwoJCQlpZiAoICRhICYmICR0aGlzLT5tYXRjaENoYXIoICcpJyApICkgewoJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJJGUgPSBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oIFsgJGEgXSApOwoJCQkJJGUtPnBhcmVucyA9IHRydWU7CgkJCQlyZXR1cm4gJGU7CgkJCX0KCQl9CgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgkvKioKCSAqIFBhcnNlcyBtdWx0aXBsaWNhdGlvbiBvcGVyYXRpb24KCSAqCgkgKiBAcmV0dXJuIExlc3NfVHJlZV9PcGVyYXRpb258bnVsbAoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLm11bHRpcGxpY2F0aW9uCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VNdWx0aXBsaWNhdGlvbigpIHsKCQkkcmV0dXJuID0gJG0gPSAkdGhpcy0+cGFyc2VPcGVyYW5kKCk7CgkJaWYgKCAkcmV0dXJuICkgewoJCQl3aGlsZSAoIHRydWUgKSB7CgkJCQkkaXNTcGFjZWQgPSAkdGhpcy0+aXNXaGl0ZXNwYWNlKCAtMSApOwoKCQkJCWlmICggJHRoaXMtPnBlZWtSZWcoICcvXFxHXC9bKlwvXS8nICkgKSB7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQkkdGhpcy0+c2F2ZSgpOwoKCQkJCSRvcCA9ICR0aGlzLT5tYXRjaENoYXIoICcvJyApID8/ICR0aGlzLT5tYXRjaENoYXIoICcqJyApID8/ICR0aGlzLT5tYXRjaFN0ciggJy4vJyApOwoJCQkJaWYgKCAhJG9wICkgewoJCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCQlicmVhazsKCQkJCX0KCgkJCQkkYSA9ICR0aGlzLT5wYXJzZU9wZXJhbmQoKTsKCgkJCQlpZiAoICEkYSApIHsKCQkJCQkkdGhpcy0+cmVzdG9yZSgpOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQkJJHRoaXMtPmZvcmdldCgpOwoKCQkJCSRtLT5wYXJlbnNJbk9wID0gdHJ1ZTsKCQkJCSRhLT5wYXJlbnNJbk9wID0gdHJ1ZTsKCQkJCSRyZXR1cm4gPSBuZXcgTGVzc19UcmVlX09wZXJhdGlvbiggJG9wLCBbICRyZXR1cm4sICRhIF0sICRpc1NwYWNlZCApOwoJCQl9CgkJfQoJCXJldHVybiAkcmV0dXJuOwoJfQoKCS8qKgoJICogUGFyc2VzIGFuIGFkZGl0aW9uIG9wZXJhdGlvbgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX09wZXJhdGlvbnxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VBZGRpdGlvbigpIHsKCQkkcmV0dXJuID0gJG0gPSAkdGhpcy0+cGFyc2VNdWx0aXBsaWNhdGlvbigpOwoJCWlmICggJHJldHVybiApIHsKCQkJd2hpbGUgKCB0cnVlICkgewoKCQkJCSRpc1NwYWNlZCA9ICR0aGlzLT5pc1doaXRlc3BhY2UoIC0xICk7CgoJCQkJJG9wID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcR1stK11ccysvJyApOwoJCQkJaWYgKCAhJG9wICkgewoJCQkJCWlmICggISRpc1NwYWNlZCApIHsKCQkJCQkJJG9wID0gJHRoaXMtPm1hdGNoQ2hhciggJysnICkgPz8gJHRoaXMtPm1hdGNoQ2hhciggJy0nICk7CgkJCQkJfQoJCQkJCWlmICggISRvcCApIHsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoKCQkJCSRhID0gJHRoaXMtPnBhcnNlTXVsdGlwbGljYXRpb24oKTsKCQkJCWlmICggISRhICkgewoJCQkJCWJyZWFrOwoJCQkJfQoKCQkJCSRtLT5wYXJlbnNJbk9wID0gdHJ1ZTsKCQkJCSRhLT5wYXJlbnNJbk9wID0gdHJ1ZTsKCQkJCSRyZXR1cm4gPSBuZXcgTGVzc19UcmVlX09wZXJhdGlvbiggJG9wLCBbICRyZXR1cm4sICRhIF0sICRpc1NwYWNlZCApOwoJCQl9CgkJfQoKCQlyZXR1cm4gJHJldHVybjsKCX0KCgkvKioKCSAqIFBhcnNlcyB0aGUgY29uZGl0aW9ucwoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX0NvbmRpdGlvbnxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VDb25kaXRpb25zKCkgewoJCSRpbmRleCA9ICR0aGlzLT5wb3M7CgkJJHJldHVybiA9ICRhID0gJHRoaXMtPnBhcnNlQ29uZGl0aW9uKCB0cnVlICk7CgkJaWYgKCAkYSApIHsKCQkJd2hpbGUgKCB0cnVlICkgewoJCQkJaWYgKCAhJHRoaXMtPnBlZWtSZWcoICcvXFxHLFxzKihub3RccyopP1woLycgKSB8fCAhJHRoaXMtPm1hdGNoQ2hhciggJywnICkgKSB7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQkkYiA9ICR0aGlzLT5wYXJzZUNvbmRpdGlvbiggdHJ1ZSApOwoJCQkJaWYgKCAhJGIgKSB7CgkJCQkJYnJlYWs7CgkJCQl9CgoJCQkJJHJldHVybiA9IG5ldyBMZXNzX1RyZWVfQ29uZGl0aW9uKCAnb3InLCAkcmV0dXJuLCAkYiwgJGluZGV4ICk7CgkJCX0KCQkJcmV0dXJuICRyZXR1cm47CgkJfQoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLmNvbmRpdGlvbgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQ29uZGl0aW9uKCAkbmVlZHNQYXJlbnMgPSBmYWxzZSApIHsKCQkkcmVzdWx0ID0gJHRoaXMtPnBhcnNlQ29uZGl0aW9uQW5kKCAkbmVlZHNQYXJlbnMgKTsKCQlpZiAoICEkcmVzdWx0ICkgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJCWlmICggJHRoaXMtPm1hdGNoU3RyKCAnb3InICkgKSB7CgkJCSRuZXh0ID0gJHRoaXMtPnBhcnNlQ29uZGl0aW9uKCAkbmVlZHNQYXJlbnMgKTsKCQkJaWYgKCAkbmV4dCApIHsKCQkJCSRyZXN1bHQgPSBuZXcgTGVzc19UcmVlX0NvbmRpdGlvbiggJ29yJywgJHJlc3VsdCwgJG5leHQgKTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiBudWxsOwoJCQl9CgkJfQoJCXJldHVybiAkcmVzdWx0OwoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNQYXJzZXIuY29uZGl0aW9uQW5kCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBwYXJzZUNvbmRpdGlvbkFuZCggJG5lZWRzUGFyZW5zICkgewoJCS8vIE5PVEU6IFNpbXBsaWZpZWQgaW5saW5lIGVxdWl2YWxlbnQgb2YgaW5zaWRlQ29uZGl0aW9uKCkKCQkkY29uZCA9ICR0aGlzLT5uZWdhdGVkQ29uZGl0aW9uKCAkbmVlZHNQYXJlbnMgKSA/PyAkdGhpcy0+cGFyZW50aGVzaXNDb25kaXRpb24oICRuZWVkc1BhcmVucyApOwoJCWlmICggISRjb25kICYmICEkbmVlZHNQYXJlbnMgKSB7CgkJCSRjb25kID0gJHRoaXMtPmF0b21pY0NvbmRpdGlvbigpOwoJCX0KCgkJaWYgKCAkdGhpcy0+bWF0Y2hTdHIoICdhbmQnICkgKSB7CgkJCSRuZXh0ID0gJHRoaXMtPnBhcnNlQ29uZGl0aW9uQW5kKCAkbmVlZHNQYXJlbnMgKTsKCQkJaWYgKCAkbmV4dCApIHsKCQkJCSRjb25kID0gbmV3IExlc3NfVHJlZV9Db25kaXRpb24oICdhbmQnLCAkY29uZCwgJG5leHQgKTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybjsKCQkJfQoJCX0KCQlyZXR1cm4gJGNvbmQ7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI1BhcnNlci5uZWdhdGVkQ29uZGl0aW9uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBuZWdhdGVkQ29uZGl0aW9uKCAkbmVlZHNQYXJlbnMgKSB7CgkJaWYgKCAkdGhpcy0+bWF0Y2hTdHIoICdub3QnICkgKSB7CgkJCSRyZXN1bHQgPSAkdGhpcy0+cGFyZW50aGVzaXNDb25kaXRpb24oICRuZWVkc1BhcmVucyApOwoJCQlpZiAoICRyZXN1bHQgKSB7CgkJCQkkcmVzdWx0LT5uZWdhdGUgPSAhJHJlc3VsdC0+bmVnYXRlOwoJCQl9CgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCgkvKioKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjUGFyc2VyLnBhcmVudGhlc2lzQ29uZGl0aW9uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBwYXJlbnRoZXNpc0NvbmRpdGlvbiggJG5lZWRzUGFyZW5zICkgewoJCSR0cnlDb25kaXRpb25Gb2xsb3dlZEJ5UGFyZW50aGVzaXMgPSBmdW5jdGlvbiAoKSB1c2UgKCAkbmVlZHNQYXJlbnMgKSB7CgkJCSR0aGlzLT5zYXZlKCk7CgkJCSRib2R5ID0gJHRoaXMtPnBhcnNlQ29uZGl0aW9uKCAkbmVlZHNQYXJlbnMgKTsKCQkJaWYgKCAhJGJvZHkgKSB7CgkJCQkkdGhpcy0+cmVzdG9yZSgpOwoJCQkJcmV0dXJuOwoJCQl9CgkJCWlmICggISR0aGlzLT5tYXRjaENoYXIoICcpJyApICkgewoJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCXJldHVybjsKCQkJfQoJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCXJldHVybiAkYm9keTsKCQl9OwoKCQkkdGhpcy0+c2F2ZSgpOwoJCWlmICggISR0aGlzLT5tYXRjaENoYXIoICcoJyApICkgewoJCQkkdGhpcy0+cmVzdG9yZSgpOwoJCQlyZXR1cm47CgkJfQoJCSRib2R5ID0gJHRyeUNvbmRpdGlvbkZvbGxvd2VkQnlQYXJlbnRoZXNpcygpOwoJCWlmICggJGJvZHkgKSB7CgkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJcmV0dXJuICRib2R5OwoJCX0KCQkkYm9keSA9ICR0aGlzLT5hdG9taWNDb25kaXRpb24oKTsKCQlpZiAoICEkYm9keSApIHsKCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJcmV0dXJuOwoJCX0KCQlpZiAoICEkdGhpcy0+bWF0Y2hDaGFyKCAnKScgKSApIHsKCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQl9CgoJCSR0aGlzLT5mb3JnZXQoKTsKCQlyZXR1cm4gJGJvZHk7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI1BhcnNlci5hdG9taWNDb25kaXRpb24KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGF0b21pY0NvbmRpdGlvbigpIHsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSRhID0gJHRoaXMtPnBhcnNlQWRkaXRpb24oKQoJCQk/PyAkdGhpcy0+cGFyc2VFbnRpdGllc0tleXdvcmQoKQoJCQk/PyAkdGhpcy0+cGFyc2VFbnRpdGllc1F1b3RlZCgpCgkJCT8/ICR0aGlzLT5wYXJzZUVudGl0aWVzTWl4aW5Mb29rdXAoKTsKCgkJaWYgKCAkYSApIHsKCQkJJG9wID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcRyg/Oj49fDw9fD08fFs8PT5dKS8nICk7CgkJCWlmICggJG9wICkgewoJCQkJJGIgPSAkdGhpcy0+cGFyc2VBZGRpdGlvbigpCgkJCQkJPz8gJHRoaXMtPnBhcnNlRW50aXRpZXNLZXl3b3JkKCkKCQkJCQk/PyAkdGhpcy0+cGFyc2VFbnRpdGllc1F1b3RlZCgpCgkJCQkJPz8gJHRoaXMtPnBhcnNlRW50aXRpZXNNaXhpbkxvb2t1cCgpOwoJCQkJaWYgKCAkYiApIHsKCQkJCQkkYyA9IG5ldyBMZXNzX1RyZWVfQ29uZGl0aW9uKCAkb3AsICRhLCAkYiwgJGluZGV4LCBmYWxzZSApOwoJCQkJfSBlbHNlIHsKCQkJCQkkdGhpcy0+RXJyb3IoICdVbmV4cGVjdGVkIGV4cHJlc3Npb24nICk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkayA9IG5ldyBMZXNzX1RyZWVfS2V5d29yZCggJ3RydWUnICk7CgkJCQkkYyA9IG5ldyBMZXNzX1RyZWVfQ29uZGl0aW9uKCAnPScsICRhLCAkaywgJGluZGV4LCBmYWxzZSApOwoJCQl9CgkJCXJldHVybiAkYzsKCQl9Cgl9CgoJLyoqCgkgKiBBbiBvcGVyYW5kIGlzIGFueXRoaW5nIHRoYXQgY2FuIGJlIHBhcnQgb2YgYW4gb3BlcmF0aW9uLAoJICogc3VjaCBhcyBhIENvbG9yLCBvciBhIFZhcmlhYmxlCgkgKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNwYXJzZXJzLm9wZXJhbmQKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKSB7CgkJJG5lZ2F0ZSA9IGZhbHNlOwoJCSRvZmZzZXQgPSAkdGhpcy0+cG9zICsgMTsKCQlpZiAoICRvZmZzZXQgPj0gJHRoaXMtPmlucHV0X2xlbiApIHsKCQkJcmV0dXJuOwoJCX0KCQkkY2hhciA9ICR0aGlzLT5pbnB1dFskb2Zmc2V0XTsKCgkJaWYgKCAkY2hhciA9PT0gJ0AnIHx8ICRjaGFyID09PSAnKCcgfHwgJGNoYXIgPT09ICckJyApIHsKCQkJJG5lZ2F0ZSA9ICR0aGlzLT5tYXRjaENoYXIoICctJyApOwoJCX0KCgkJJG8gPSAkdGhpcy0+cGFyc2VTdWIoKQoJCQk/PyAkdGhpcy0+cGFyc2VFbnRpdGllc0RpbWVuc2lvbigpCgkJCT8/ICR0aGlzLT5wYXJzZUVudGl0aWVzQ29sb3IoKQoJCQk/PyAkdGhpcy0+cGFyc2VFbnRpdGllc1ZhcmlhYmxlKCkKCQkJPz8gJHRoaXMtPnBhcnNlRW50aXRpZXNQcm9wZXJ0eSgpCgkJCT8/ICR0aGlzLT5wYXJzZUVudGl0aWVzQ2FsbCgpCgkJCT8/ICR0aGlzLT5wYXJzZUVudGl0aWVzUXVvdGVkKCB0cnVlICkKCQkJLy8gVE9ETzogZnJvbSBsZXNzLTMuMTMuMS5qcyBtaXNzaW5nIGVudGl0aWVzLmNvbG9yS2V5d29yZCgpCgkJCT8/ICR0aGlzLT5wYXJzZUVudGl0aWVzTWl4aW5Mb29rdXAoKTsKCgkJaWYgKCAkbmVnYXRlICkgewoJCQkkby0+cGFyZW5zSW5PcCA9IHRydWU7CgkJCSRvID0gbmV3IExlc3NfVHJlZV9OZWdhdGl2ZSggJG8gKTsKCQl9CgoJCXJldHVybiAkbzsKCX0KCgkvKioKCSAqIEV4cHJlc3Npb25zIGVpdGhlciByZXByZXNlbnQgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMsCgkgKiBvciB3aGl0ZS1zcGFjZSBkZWxpbWl0ZWQgRW50aXRpZXMuCgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfRXhwcmVzc2lvbnxudWxsCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI3BhcnNlcnMuZXhwcmVzc2lvbgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbigpIHsKCQkkZW50aXRpZXMgPSBbXTsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQlkbyB7CgkJCSRlID0gJHRoaXMtPnBhcnNlQ29tbWVudCgpOwoJCQlpZiAoICRlICkgewoJCQkJJGVudGl0aWVzW10gPSAkZTsKCQkJCWNvbnRpbnVlOwoJCQl9CgkJCSRlID0gJHRoaXMtPnBhcnNlQWRkaXRpb24oKSA/PyAkdGhpcy0+cGFyc2VFbnRpdHkoKTsKCQkJaWYgKCAkZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db21tZW50ICkgewoJCQkJJGUgPSBudWxsOwoJCQl9CgkJCWlmICggJGUgKSB7CgkJCQkkZW50aXRpZXNbXSA9ICRlOwoJCQkJLy8gb3BlcmF0aW9ucyBkbyBub3QgYWxsb3cga2V5d29yZCAiLyIgZGltZW5zaW9uIChlLmcuIHNtYWxsLzIwcHgpIHNvIHdlIHN1cHBvcnQgdGhhdCBoZXJlCgkJCQlpZiAoICEkdGhpcy0+cGVla1JlZyggJy9cXEdcL1tcLypdLycgKSApIHsKCQkJCQkkZGVsaW0gPSAkdGhpcy0+bWF0Y2hDaGFyKCAnLycgKTsKCQkJCQlpZiAoICRkZWxpbSApIHsKCQkJCQkJJGVudGl0aWVzW10gPSBuZXcgTGVzc19UcmVlX0Fub255bW91cyggJGRlbGltLCAkaW5kZXggKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9IHdoaWxlICggJGUgKTsKCgkJaWYgKCAkZW50aXRpZXMgKSB7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oICRlbnRpdGllcyApOwoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIGEgcHJvcGVydHkKCSAqIGVnOiAnbWluLXdpZHRoJywgJ29yaWVudGF0aW9uJywgZXRjCgkgKgoJICogQHJldHVybiBzdHJpbmcKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVByb3BlcnR5KCkgewoJCSRuYW1lID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcRyhcKj8tP1tfYS16QS1aMC05LV0rKVxzKjovJyApOwoJCWlmICggJG5hbWUgKSB7CgkJCXJldHVybiAkbmFtZVsxXTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBhIHJ1bGUgcHJvcGVydHkKCSAqIGVnOiAnY29sb3InLCAnd2lkdGgnLCAnaGVpZ2h0JywgZXRjCgkgKgoJICogQHJldHVybiBhcnJheTxMZXNzX1RyZWVfS2V5d29yZHxMZXNzX1RyZWVfVmFyaWFibGU+CgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI3BhcnNlcnMucnVsZVByb3BlcnR5CgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VSdWxlUHJvcGVydHkoKSB7CgkJJG5hbWUgPSBbXTsKCQkkaW5kZXggPSBbXTsKCgkJJHRoaXMtPnNhdmUoKTsKCgkJJHNpbXBsZVByb3BlcnR5ID0gJHRoaXMtPm1hdGNoUmVnKCAnL1xcRyhbX2EtekEtWjAtOS1dKylccyo6LycgKTsKCQlpZiAoICRzaW1wbGVQcm9wZXJ0eSApIHsKCQkJJG5hbWVbXSA9IG5ldyBMZXNzX1RyZWVfS2V5d29yZCggJHNpbXBsZVByb3BlcnR5WzFdICk7CgkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJcmV0dXJuICRuYW1lOwoJCX0KCgkJJHRoaXMtPnJ1bGVQcm9wZXJ0eU1hdGNoKCAnL1xcRyhcKj8pLycsICRpbmRleCwgJG5hbWUgKTsKCgkJLy8gQ29uc3VtZSEKCQkvLyBAcGhhbi1zdXBwcmVzcy1uZXh0LWxpbmUgUGhhblBsdWdpbkVtcHR5U3RhdGVtZW50V2hpbGVMb29wCgkJd2hpbGUgKCAkdGhpcy0+cnVsZVByb3BlcnR5TWF0Y2goICcvXFxHKCg/Oltcdy1dKyl8KD86W0BcJF1ce1tcdy1dK1x9KSkvJywgJGluZGV4LCAkbmFtZQoJCSkgKTsKCgkJaWYgKCAoIGNvdW50KCAkbmFtZSApID4gMSApICYmICR0aGlzLT5ydWxlUHJvcGVydHlNYXRjaCggJy9cXEcoKD86XCtffFwrKT8pXHMqOi8nLCAkaW5kZXgsICRuYW1lICkgKSB7CgkJCSR0aGlzLT5mb3JnZXQoKTsKCgkJCS8vIGF0IGxhc3QsIHdlIGhhdmUgdGhlIGNvbXBsZXRlIG1hdGNoIG5vdy4gbW92ZSBmb3J3YXJkLAoJCQkvLyBjb252ZXJ0IG5hbWUgcGFydGljbGVzIHRvIHRyZWUgb2JqZWN0cyBhbmQgcmV0dXJuOgoJCQlpZiAoICRuYW1lWzBdID09PSAnJyApIHsKCQkJCWFycmF5X3NoaWZ0KCAkbmFtZSApOwoJCQkJYXJyYXlfc2hpZnQoICRpbmRleCApOwoJCQl9CgkJCWZvcmVhY2ggKCAkbmFtZSBhcyAkayA9PiAkcyApIHsKCQkJCSRmaXJzdENoYXIgPSAkc1swXSA/PyAnJzsKCQkJCSRuYW1lWyRrXSA9ICggJGZpcnN0Q2hhciAhPT0gJ0AnICYmICRmaXJzdENoYXIgIT09ICckJyApID8KCQkJCQluZXcgTGVzc19UcmVlX0tleXdvcmQoICRzICkgOgoJCQkJCSggJHNbMF0gPT09ICdAJwoJCQkJCQk/IG5ldyBMZXNzX1RyZWVfVmFyaWFibGUoICdAJyAuIHN1YnN0ciggJHMsIDIsIC0xICksICRpbmRleFska10sICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyApCgkJCQkJCTogbmV3IExlc3NfVHJlZV9Qcm9wZXJ0eSggJyQnIC4gc3Vic3RyKCAkcywgMiwgLTEgKSwgJGluZGV4WyRrXSwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvICkKCQkJCQkpOwoJCQl9CgkJCXJldHVybiAkbmFtZTsKCQl9IGVsc2UgewoJCQkkdGhpcy0+cmVzdG9yZSgpOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHJ1bGVQcm9wZXJ0eU1hdGNoKCAkcmUsICYkaW5kZXgsICYkbmFtZSApIHsKCQkkaSA9ICR0aGlzLT5wb3M7CgkJJGNodW5rID0gJHRoaXMtPm1hdGNoUmVnKCAkcmUgKTsKCQlpZiAoICRjaHVuayApIHsKCQkJJGluZGV4W10gPSAkaTsKCQkJJG5hbWVbXSA9ICRjaHVua1sxXTsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2VyaWFsaXplVmFycyggJHZhcnMgKSB7CgkJJHMgPSAnJzsKCgkJZm9yZWFjaCAoICR2YXJzIGFzICRuYW1lID0+ICR2YWx1ZSApIHsKCQkJaWYgKCBzdHJ2YWwoICR2YWx1ZSApID09PSAiIiApIHsKCQkJCSR2YWx1ZSA9ICd+IiInOwoJCQl9CgkJCSRzIC49ICggc3RyX3N0YXJ0c193aXRoKCAkbmFtZSwgJ0AnICkgPyAnJyA6ICdAJyApIC4gJG5hbWUgLiAnOiAnIC4gJHZhbHVlIC4gKCBzdHJfZW5kc193aXRoKCAkdmFsdWUsICc7JyApID8gJycgOiAnOycgKTsKCQl9CgoJCXJldHVybiAkczsKCX0KCgkvKioKCSAqIFJvdW5kIG51bWJlcnMgc2ltaWxhcmx5IHRvIGphdmFzY3JpcHQKCSAqIGVnOiAxLjQ5OTk5OSB0byAxIGluc3RlYWQgb2YgMgoJICoKCSAqIEBpbnRlcm5hbCBGb3IgaW50ZXJuYWwgdXNlIG9ubHkKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByb3VuZCggJGlucHV0LCAkcHJlY2lzaW9uID0gMCApIHsKCQkkcHJlY2lzaW9uID0gcG93KCAxMCwgJHByZWNpc2lvbiApOwoJCSRpID0gJGlucHV0ICogJHByZWNpc2lvbjsKCgkJJGNlaWwgPSBjZWlsKCAkaSApOwoJCSRmbG9vciA9IGZsb29yKCAkaSApOwoJCWlmICggKCAkY2VpbCAtICRpICkgPD0gKCAkaSAtICRmbG9vciApICkgewoJCQlyZXR1cm4gJGNlaWwgLyAkcHJlY2lzaW9uOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkZmxvb3IgLyAkcHJlY2lzaW9uOwoJCX0KCX0KCgkvKiogQHJldHVybiBuZXZlciAqLwoJcHVibGljIGZ1bmN0aW9uIEVycm9yKCAkbXNnICkgewoJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoICRtc2csIG51bGwsICR0aGlzLT5mdXJ0aGVzdCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvICk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBXaW5QYXRoKCAkcGF0aCApIHsKCQlyZXR1cm4gc3RyX3JlcGxhY2UoICdcXCcsICcvJywgJHBhdGggKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEFic1BhdGgoICRwYXRoLCAkd2luUGF0aCA9IGZhbHNlICkgewoJCWlmICggc3RyX2NvbnRhaW5zKCAkcGF0aCwgJy8vJyApICYmIHByZWdfbWF0Y2goICcvXihodHRwcz86KT9cL1wvL2knLCAkcGF0aCApICkgewoJCQlyZXR1cm4gJHdpblBhdGggPyAnJyA6IGZhbHNlOwoJCX0gZWxzZSB7CgkJCSRwYXRoID0gcmVhbHBhdGgoICRwYXRoICk7CgkJCWlmICggJHdpblBhdGggKSB7CgkJCQkkcGF0aCA9IHNlbGY6OldpblBhdGgoICRwYXRoICk7CgkJCX0KCQkJcmV0dXJuICRwYXRoOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gQ2FjaGVFbmFibGVkKCkgewoJCXJldHVybiAoIHNlbGY6OiRvcHRpb25zWydjYWNoZV9pbmNyZW1lbnRhbCddICYmIHNlbGY6OiRvcHRpb25zWydjYWNoZV9tZXRob2QnXSAmJiBzZWxmOjokb3B0aW9uc1snY2FjaGVfZGlyJ10gKTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/SourceMap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/SourceMap/Base64VLQ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEVuY29kZSAvIERlY29kZSBCYXNlNjQgVkxRLgogKgogKiBAcHJpdmF0ZQogKi8KY2xhc3MgTGVzc19Tb3VyY2VNYXBfQmFzZTY0VkxRIHsKCgkvKioKCSAqIFNoaWZ0CgkgKgoJICogQHZhciBpbnQKCSAqLwoJcHJpdmF0ZSAkc2hpZnQgPSA1OwoKCS8qKgoJICogTWFzawoJICoKCSAqIEB2YXIgaW50CgkgKi8KCXByaXZhdGUgJG1hc2sgPSAweDFGOyAvLyA9PSAoMSA8PCBzaGlmdCkgPT0gMGIwMDAxMTExMQoKCS8qKgoJICogQ29udGludWF0aW9uIGJpdAoJICoKCSAqIEB2YXIgaW50CgkgKi8KCXByaXZhdGUgJGNvbnRpbnVhdGlvbkJpdCA9IDB4MjA7IC8vID09IChtYXNrIC0gMSApID09IDBiMDAxMDAwMDAKCgkvKioKCSAqIENoYXIgdG8gaW50ZWdlciBtYXAKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXByaXZhdGUgJGNoYXJUb0ludE1hcCA9IFsKCQknQScgPT4gMCwgJ0InID0+IDEsICdDJyA9PiAyLCAnRCcgPT4gMywgJ0UnID0+IDQsICdGJyA9PiA1LCAnRycgPT4gNiwKCQknSCcgPT4gNywgJ0knID0+IDgsICdKJyA9PiA5LCAnSycgPT4gMTAsICdMJyA9PiAxMSwgJ00nID0+IDEyLCAnTicgPT4gMTMsCgkJJ08nID0+IDE0LCAnUCcgPT4gMTUsICdRJyA9PiAxNiwgJ1InID0+IDE3LCAnUycgPT4gMTgsICdUJyA9PiAxOSwgJ1UnID0+IDIwLAoJCSdWJyA9PiAyMSwgJ1cnID0+IDIyLCAnWCcgPT4gMjMsICdZJyA9PiAyNCwgJ1onID0+IDI1LCAnYScgPT4gMjYsICdiJyA9PiAyNywKCQknYycgPT4gMjgsICdkJyA9PiAyOSwgJ2UnID0+IDMwLCAnZicgPT4gMzEsICdnJyA9PiAzMiwgJ2gnID0+IDMzLCAnaScgPT4gMzQsCgkJJ2onID0+IDM1LCAnaycgPT4gMzYsICdsJyA9PiAzNywgJ20nID0+IDM4LCAnbicgPT4gMzksICdvJyA9PiA0MCwgJ3AnID0+IDQxLAoJCSdxJyA9PiA0MiwgJ3InID0+IDQzLCAncycgPT4gNDQsICd0JyA9PiA0NSwgJ3UnID0+IDQ2LCAndicgPT4gNDcsICd3JyA9PiA0OCwKCQkneCcgPT4gNDksICd5JyA9PiA1MCwgJ3onID0+IDUxLCAwID0+IDUyLCAxID0+IDUzLCAyID0+IDU0LCAzID0+IDU1LCA0ID0+IDU2LAoJCTUgPT4gNTcsIDYgPT4gNTgsIDcgPT4gNTksIDggPT4gNjAsIDkgPT4gNjEsICcrJyA9PiA2MiwgJy8nID0+IDYzLAoJXTsKCgkvKioKCSAqIEludGVnZXIgdG8gY2hhciBtYXAKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXByaXZhdGUgJGludFRvQ2hhck1hcCA9IFsKCQkwID0+ICdBJywgMSA9PiAnQicsIDIgPT4gJ0MnLCAzID0+ICdEJywgNCA9PiAnRScsIDUgPT4gJ0YnLCA2ID0+ICdHJywKCQk3ID0+ICdIJywgOCA9PiAnSScsIDkgPT4gJ0onLCAxMCA9PiAnSycsIDExID0+ICdMJywgMTIgPT4gJ00nLCAxMyA9PiAnTicsCgkJMTQgPT4gJ08nLCAxNSA9PiAnUCcsIDE2ID0+ICdRJywgMTcgPT4gJ1InLCAxOCA9PiAnUycsIDE5ID0+ICdUJywgMjAgPT4gJ1UnLAoJCTIxID0+ICdWJywgMjIgPT4gJ1cnLCAyMyA9PiAnWCcsIDI0ID0+ICdZJywgMjUgPT4gJ1onLCAyNiA9PiAnYScsIDI3ID0+ICdiJywKCQkyOCA9PiAnYycsIDI5ID0+ICdkJywgMzAgPT4gJ2UnLCAzMSA9PiAnZicsIDMyID0+ICdnJywgMzMgPT4gJ2gnLCAzNCA9PiAnaScsCgkJMzUgPT4gJ2onLCAzNiA9PiAnaycsIDM3ID0+ICdsJywgMzggPT4gJ20nLCAzOSA9PiAnbicsIDQwID0+ICdvJywgNDEgPT4gJ3AnLAoJCTQyID0+ICdxJywgNDMgPT4gJ3InLCA0NCA9PiAncycsIDQ1ID0+ICd0JywgNDYgPT4gJ3UnLCA0NyA9PiAndicsIDQ4ID0+ICd3JywKCQk0OSA9PiAneCcsIDUwID0+ICd5JywgNTEgPT4gJ3onLCA1MiA9PiAnMCcsIDUzID0+ICcxJywgNTQgPT4gJzInLCA1NSA9PiAnMycsCgkJNTYgPT4gJzQnLCA1NyA9PiAnNScsIDU4ID0+ICc2JywgNTkgPT4gJzcnLCA2MCA9PiAnOCcsIDYxID0+ICc5JywgNjIgPT4gJysnLAoJCTYzID0+ICcvJywKCV07CgoJLyoqCgkgKiBDb25zdHJ1Y3RvcgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7CgkJLy8gSSBsZWF2ZSBpdCBoZXJlIGZvciBmdXR1cmUgcmVmZXJlbmNlCgkJLy8gZm9yZWFjaChzdHJfc3BsaXQoJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nKSBhcyAkaSA9PiAkY2hhcikKCQkvLyB7CgkJLy8JICR0aGlzLT5jaGFyVG9JbnRNYXBbJGNoYXJdID0gJGk7CgkJLy8JICR0aGlzLT5pbnRUb0NoYXJNYXBbJGldID0gJGNoYXI7CgkJLy8gfQoJfQoKCS8qKgoJICogQ29udmVydCBmcm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXMKCSAqIGlzIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LglGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6CgkgKgkgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KQoJICoJIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KQoJICogV2UgZ2VuZXJhdGUgdGhlIHZhbHVlIGZvciAzMiBiaXQgbWFjaGluZXMsIGhlbmNlIC0yMTQ3NDgzNjQ4IGJlY29tZXMgMSwgbm90IDQyOTQ5NjcyOTcsCgkgKiBldmVuIG9uIGEgNjQgYml0IG1hY2hpbmUuCgkgKiBAcGFyYW0gaW50ICRhVmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRvVkxRU2lnbmVkKCAkYVZhbHVlICkgewoJCXJldHVybiAweGZmZmZmZmZmICYgKCAkYVZhbHVlIDwgMCA/ICggKCAtJGFWYWx1ZSApIDw8IDEgKSArIDEgOiAoICRhVmFsdWUgPDwgMSApICsgMCApOwoJfQoKCS8qKgoJICogQ29udmVydCB0byBhIHR3by1jb21wbGVtZW50IHZhbHVlIGZyb20gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXMKCSAqIGlzIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6CgkgKgkgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMQoJICoJIDQgKDEwMCBiaW5hcnkpIGJlY29tZXMgMiwgNSAoMTAxIGJpbmFyeSkgYmVjb21lcyAtMgoJICogV2UgYXNzdW1lIHRoYXQgdGhlIHZhbHVlIHdhcyBnZW5lcmF0ZWQgd2l0aCBhIDMyIGJpdCBtYWNoaW5lIGluIG1pbmQuCgkgKiBIZW5jZQoJICoJIDEgYmVjb21lcyAtMjE0NzQ4MzY0OAoJICogZXZlbiBvbiBhIDY0IGJpdCBtYWNoaW5lLgoJICogQHBhcmFtIGludCAkYVZhbHVlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBmcm9tVkxRU2lnbmVkKCAkYVZhbHVlICkgewoJCXJldHVybiAkYVZhbHVlICYgMSA/ICR0aGlzLT56ZXJvRmlsbCggfiRhVmFsdWUgKyAyLCAxICkgfCAoIC0xIC0gMHg3ZmZmZmZmZiApIDogJHRoaXMtPnplcm9GaWxsKCAkYVZhbHVlLCAxICk7Cgl9CgoJLyoqCgkgKiBSZXR1cm4gdGhlIGJhc2UgNjQgVkxRIGVuY29kZWQgdmFsdWUuCgkgKgoJICogQHBhcmFtIGludCAkYVZhbHVlIFRoZSB2YWx1ZSB0byBlbmNvZGUKCSAqIEByZXR1cm4gc3RyaW5nIFRoZSBlbmNvZGVkIHZhbHVlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBlbmNvZGUoICRhVmFsdWUgKSB7CgkJJGVuY29kZWQgPSAnJzsKCQkkdmxxID0gJHRoaXMtPnRvVkxRU2lnbmVkKCAkYVZhbHVlICk7CgkJZG8gewoJCQkkZGlnaXQgPSAkdmxxICYgJHRoaXMtPm1hc2s7CgkJCSR2bHEgPSAkdGhpcy0+emVyb0ZpbGwoICR2bHEsICR0aGlzLT5zaGlmdCApOwoJCQlpZiAoICR2bHEgPiAwICkgewoJCQkJJGRpZ2l0IHw9ICR0aGlzLT5jb250aW51YXRpb25CaXQ7CgkJCX0KCQkJJGVuY29kZWQgLj0gJHRoaXMtPmJhc2U2NEVuY29kZSggJGRpZ2l0ICk7CgkJfSB3aGlsZSAoICR2bHEgPiAwICk7CgoJCXJldHVybiAkZW5jb2RlZDsKCX0KCgkvKioKCSAqIFJldHVybiB0aGUgdmFsdWUgZGVjb2RlZCBmcm9tIGJhc2UgNjQgVkxRLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGVuY29kZWQgVGhlIGVuY29kZWQgdmFsdWUgdG8gZGVjb2RlCgkgKiBAcmV0dXJuIGludCBUaGUgZGVjb2RlZCB2YWx1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gZGVjb2RlKCAkZW5jb2RlZCApIHsKCQkkdmxxID0gMDsKCQkkaSA9IDA7CgkJZG8gewoJCQkkZGlnaXQgPSAkdGhpcy0+YmFzZTY0RGVjb2RlKCAkZW5jb2RlZFskaV0gKTsKCQkJJHZscSB8PSAoICRkaWdpdCAmICR0aGlzLT5tYXNrICkgPDwgKCAkaSAqICR0aGlzLT5zaGlmdCApOwoJCQkkaSsrOwoJCX0gd2hpbGUgKCAkZGlnaXQgJiAkdGhpcy0+Y29udGludWF0aW9uQml0ICk7CgoJCXJldHVybiAkdGhpcy0+ZnJvbVZMUVNpZ25lZCggJHZscSApOwoJfQoKCS8qKgoJICogUmlnaHQgc2hpZnQgd2l0aCB6ZXJvIGZpbGwuCgkgKgoJICogQHBhcmFtIGludCAkYSBudW1iZXIgdG8gc2hpZnQKCSAqIEBwYXJhbSBpbnQgJGIgbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQKCSAqIEByZXR1cm4gaW50CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiB6ZXJvRmlsbCggJGEsICRiICkgewoJCXJldHVybiAoICRhID49IDAgKSA/ICggJGEgPj4gJGIgKSA6ICggJGEgPj4gJGIgKSAmICggUEhQX0lOVF9NQVggPj4gKCAkYiAtIDEgKSApOwoJfQoKCS8qKgoJICogRW5jb2RlIHNpbmdsZSA2LWJpdCBkaWdpdCBhcyBiYXNlNjQuCgkgKgoJICogQHBhcmFtIGludCAkbnVtYmVyCgkgKiBAcmV0dXJuIHN0cmluZwoJICogQHRocm93cyBFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBpbnZhbGlkCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBiYXNlNjRFbmNvZGUoICRudW1iZXIgKSB7CgkJaWYgKCAkbnVtYmVyIDwgMCB8fCAkbnVtYmVyID4gNjMgKSB7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oICJJbnZhbGlkIG51bWJlciBcIiRudW1iZXJcIiBnaXZlbi4gTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzLiIgKTsKCQl9CgkJcmV0dXJuICR0aGlzLT5pbnRUb0NoYXJNYXBbJG51bWJlcl07Cgl9CgoJLyoqCgkgKiBEZWNvZGUgc2luZ2xlIDYtYml0IGRpZ2l0IGZyb20gYmFzZTY0CgkgKgoJICogQHBhcmFtIHN0cmluZyAkY2hhcgoJICogQHJldHVybiBpbnQKCSAqIEB0aHJvd3MgRXhjZXB0aW9uIElmIHRoZSBudW1iZXIgaXMgaW52YWxpZAoJICovCglwdWJsaWMgZnVuY3Rpb24gYmFzZTY0RGVjb2RlKCAkY2hhciApIHsKCQlpZiAoICFhcnJheV9rZXlfZXhpc3RzKCAkY2hhciwgJHRoaXMtPmNoYXJUb0ludE1hcCApICkgewoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCBzcHJpbnRmKCAnSW52YWxpZCBiYXNlIDY0IGRpZ2l0ICIlcyIgZ2l2ZW4uJywgJGNoYXIgKSApOwoJCX0KCQlyZXR1cm4gJHRoaXMtPmNoYXJUb0ludE1hcFskY2hhcl07Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/SourceMap/Generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNvdXJjZSBtYXAgZ2VuZXJhdG9yCiAqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1NvdXJjZU1hcF9HZW5lcmF0b3IgZXh0ZW5kcyBMZXNzX0NvbmZpZ3VyYWJsZSB7CgoJLyoqCgkgKiBXaGF0IHZlcnNpb24gb2Ygc291cmNlIG1hcCBkb2VzIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGU/CgkgKi8KCXByaXZhdGUgY29uc3QgVkVSU0lPTiA9IDM7CgoJLyoqCgkgKiBBcnJheSBvZiBkZWZhdWx0IG9wdGlvbnMKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXByb3RlY3RlZCAkZGVmYXVsdE9wdGlvbnMgPSBbCgkJCS8vIGFuIG9wdGlvbmFsIHNvdXJjZSByb290LCB1c2VmdWwgZm9yIHJlbG9jYXRpbmcgc291cmNlIGZpbGVzCgkJCS8vIG9uIGEgc2VydmVyIG9yIHJlbW92aW5nIHJlcGVhdGVkIHZhbHVlcyBpbiB0aGUgJ3NvdXJjZXMnIGVudHJ5LgoJCQkvLyBUaGlzIHZhbHVlIGlzIHByZXBlbmRlZCB0byB0aGUgaW5kaXZpZHVhbCBlbnRyaWVzIGluIHRoZSAnc291cmNlJyBmaWVsZC4KCQkJJ3NvdXJjZVJvb3QnID0+ICcnLAoKCQkJLy8gYW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUgdGhhdCB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLgoJCQknc291cmNlTWFwRmlsZW5hbWUnID0+IG51bGwsCgoJCQkvLyB1cmwgb2YgdGhlIG1hcAoJCQknc291cmNlTWFwVVJMJyA9PiBudWxsLAoKCQkJLy8gYWJzb2x1dGUgcGF0aCB0byBhIGZpbGUgdG8gd3JpdGUgdGhlIG1hcCB0bwoJCQknc291cmNlTWFwV3JpdGVUbycgPT4gbnVsbCwKCgkJCS8vIG91dHB1dCBzb3VyY2UgY29udGVudHM/CgkJCSdvdXRwdXRTb3VyY2VGaWxlcycgPT4gZmFsc2UsCgoJCQkvLyBiYXNlIHBhdGggZm9yIGZpbGVuYW1lIG5vcm1hbGl6YXRpb24KCQkJJ3NvdXJjZU1hcFJvb3RwYXRoJyA9PiAnJywKCgkJCS8vIGJhc2UgcGF0aCBmb3IgZmlsZW5hbWUgbm9ybWFsaXphdGlvbgoJCQknc291cmNlTWFwQmFzZXBhdGgnID0+ICcnCgldOwoKCS8qKgoJICogVGhlIGJhc2U2NCBWTFEgZW5jb2RlcgoJICoKCSAqIEB2YXIgTGVzc19Tb3VyY2VNYXBfQmFzZTY0VkxRCgkgKi8KCXByb3RlY3RlZCAkZW5jb2RlcjsKCgkvKioKCSAqIEFycmF5IG9mIG1hcHBpbmdzCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcm90ZWN0ZWQgJG1hcHBpbmdzID0gW107CgoJLyoqCgkgKiBUaGUgcm9vdCBub2RlCgkgKgoJICogQHZhciBMZXNzX1RyZWVfUnVsZXNldAoJICovCglwcm90ZWN0ZWQgJHJvb3Q7CgoJLyoqCgkgKiBBcnJheSBvZiBjb250ZW50cyBtYXAKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXByb3RlY3RlZCAkY29udGVudHNNYXAgPSBbXTsKCgkvKioKCSAqIEZpbGUgdG8gY29udGVudCBtYXAKCSAqCgkgKiBAdmFyIGFycmF5PHN0cmluZyxzdHJpbmc+CgkgKi8KCXByb3RlY3RlZCAkc291cmNlcyA9IFtdOwoJLyoqIEB2YXIgYXJyYXk8c3RyaW5nLGludD4gKi8KCXByb3RlY3RlZCAkc291cmNlX2tleXMgPSBbXTsKCgkvKioKCSAqIENvbnN0cnVjdG9yCgkgKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290IFRoZSByb290IG5vZGUKCSAqIEBwYXJhbSBhcnJheSAkY29udGVudHNNYXAKCSAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBBcnJheSBvZiBvcHRpb25zCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggTGVzc19UcmVlX1J1bGVzZXQgJHJvb3QsICRjb250ZW50c01hcCwgJG9wdGlvbnMgPSBbXSApIHsKCQkkdGhpcy0+cm9vdCA9ICRyb290OwoJCSR0aGlzLT5jb250ZW50c01hcCA9ICRjb250ZW50c01hcDsKCQkkdGhpcy0+ZW5jb2RlciA9IG5ldyBMZXNzX1NvdXJjZU1hcF9CYXNlNjRWTFEoKTsKCgkJJHRoaXMtPlNldE9wdGlvbnMoICRvcHRpb25zICk7CgoJCSR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBSb290cGF0aCddID0gJHRoaXMtPmZpeFdpbmRvd3NQYXRoKCAkdGhpcy0+b3B0aW9uc1snc291cmNlTWFwUm9vdHBhdGgnXSwgdHJ1ZSApOwoJCSR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBCYXNlcGF0aCddID0gJHRoaXMtPmZpeFdpbmRvd3NQYXRoKCAkdGhpcy0+b3B0aW9uc1snc291cmNlTWFwQmFzZXBhdGgnXSwgdHJ1ZSApOwoJfQoKCS8qKgoJICogUEhQIHZlcnNpb24gb2YgSmF2YVNjcmlwdCdzIGBlbmNvZGVVUklDb21wb25lbnRgIGZ1bmN0aW9uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc3RyaW5nIFRoZSBzdHJpbmcgdG8gZW5jb2RlCgkgKiBAcmV0dXJuIHN0cmluZyBUaGUgZW5jb2RlZCBzdHJpbmcKCSAqLwoJcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50KCAkc3RyaW5nICkgewoJCSRyZXZlcnQgPSBbICclMjEnID0+ICchJywgJyUyQScgPT4gJyonLCAnJTI3JyA9PiAiJyIsICclMjgnID0+ICcoJywgJyUyOScgPT4gJyknIF07CgkJcmV0dXJuIHN0cnRyKCByYXd1cmxlbmNvZGUoICRzdHJpbmcgKSwgJHJldmVydCApOwoJfQoKCS8qKgoJICogR2VuZXJhdGVzIHRoZSBDU1MKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdGVDU1MoKSB7CgkJJG91dHB1dCA9IG5ldyBMZXNzX091dHB1dF9NYXBwZWQoICR0aGlzLT5jb250ZW50c01hcCwgJHRoaXMgKTsKCgkJLy8gY2F0Y2ggdGhlIG91dHB1dAoJCSR0aGlzLT5yb290LT5nZW5DU1MoICRvdXRwdXQgKTsKCgkJJHNvdXJjZU1hcFVybCA9ICR0aGlzLT5nZXRPcHRpb24oICdzb3VyY2VNYXBVUkwnICk7CgkJJHNvdXJjZU1hcEZpbGVuYW1lID0gJHRoaXMtPmdldE9wdGlvbiggJ3NvdXJjZU1hcEZpbGVuYW1lJyApOwoJCSRzb3VyY2VNYXBDb250ZW50ID0gJHRoaXMtPmdlbmVyYXRlSnNvbigpOwoJCSRzb3VyY2VNYXBXcml0ZVRvID0gJHRoaXMtPmdldE9wdGlvbiggJ3NvdXJjZU1hcFdyaXRlVG8nICk7CgoJCWlmICggISRzb3VyY2VNYXBVcmwgJiYgJHNvdXJjZU1hcEZpbGVuYW1lICkgewoJCQkkc291cmNlTWFwVXJsID0gJHRoaXMtPm5vcm1hbGl6ZUZpbGVuYW1lKCAkc291cmNlTWFwRmlsZW5hbWUgKTsKCQl9CgoJCS8vIHdyaXRlIG1hcCB0byBhIGZpbGUKCQlpZiAoICRzb3VyY2VNYXBXcml0ZVRvICkgewoJCQkkdGhpcy0+c2F2ZU1hcCggJHNvdXJjZU1hcFdyaXRlVG8sICRzb3VyY2VNYXBDb250ZW50ICk7CgkJfQoKCQkvLyBpbmxpbmUgdGhlIG1hcAoJCWlmICggISRzb3VyY2VNYXBVcmwgKSB7CgkJCSRzb3VyY2VNYXBVcmwgPSBzcHJpbnRmKCAnZGF0YTphcHBsaWNhdGlvbi9qc29uLCVzJywgc2VsZjo6ZW5jb2RlVVJJQ29tcG9uZW50KCAkc291cmNlTWFwQ29udGVudCApICk7CgkJfQoKCQlpZiAoICRzb3VyY2VNYXBVcmwgKSB7CgkJCSRvdXRwdXQtPmFkZCggc3ByaW50ZiggJy8qIyBzb3VyY2VNYXBwaW5nVVJMPSVzICovJywgJHNvdXJjZU1hcFVybCApICk7CgkJfQoKCQlyZXR1cm4gJG91dHB1dC0+dG9TdHJpbmcoKTsKCX0KCgkvKioKCSAqIFNhdmVzIHRoZSBzb3VyY2UgbWFwIHRvIGEgZmlsZQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGUgVGhlIGFic29sdXRlIHBhdGggdG8gYSBmaWxlCgkgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50IFRoZSBjb250ZW50IHRvIHdyaXRlCgkgKiBAdGhyb3dzIEV4Y2VwdGlvbiBJZiB0aGUgZmlsZSBjb3VsZCBub3QgYmUgc2F2ZWQKCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNhdmVNYXAoICRmaWxlLCAkY29udGVudCApIHsKCQkkZGlyID0gZGlybmFtZSggJGZpbGUgKTsKCQkvLyBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QKCQlpZiAoICFpc19kaXIoICRkaXIgKSApIHsKCQkJLy8gRklYTUU6IGNyZWF0ZSB0aGUgZGlyIGF1dG9tYXRpY2FsbHk/CgkJCXRocm93IG5ldyBFeGNlcHRpb24oIHNwcmludGYoICdUaGUgZGlyZWN0b3J5ICIlcyIgZG9lcyBub3QgZXhpc3QuIENhbm5vdCBzYXZlIHRoZSBzb3VyY2UgbWFwLicsICRkaXIgKSApOwoJCX0KCQkvLyBGSVhNRTogcHJvcGVyIHNhdmluZywgd2l0aCBkaXIgd3JpdGUgY2hlY2shCgkJaWYgKCBmaWxlX3B1dF9jb250ZW50cyggJGZpbGUsICRjb250ZW50ICkgPT09IGZhbHNlICkgewoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCBzcHJpbnRmKCAnQ2Fubm90IHNhdmUgdGhlIHNvdXJjZSBtYXAgdG8gIiVzIicsICRmaWxlICkgKTsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJLyoqCgkgKiBOb3JtYWxpemVzIHRoZSBmaWxlbmFtZQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwcm90ZWN0ZWQgZnVuY3Rpb24gbm9ybWFsaXplRmlsZW5hbWUoICRmaWxlbmFtZSApIHsKCQkkZmlsZW5hbWUgPSAkdGhpcy0+Zml4V2luZG93c1BhdGgoICRmaWxlbmFtZSApOwoKCQkkcm9vdHBhdGggPSAkdGhpcy0+Z2V0T3B0aW9uKCAnc291cmNlTWFwUm9vdHBhdGgnICk7CgkJJGJhc2VQYXRoID0gJHRoaXMtPmdldE9wdGlvbiggJ3NvdXJjZU1hcEJhc2VwYXRoJyApOwoKCQkvLyAiVHJpbSIgdGhlICdzb3VyY2VNYXBCYXNlcGF0aCcgZnJvbSB0aGUgb3V0cHV0IGZpbGVuYW1lLgoJCWlmICggaXNfc3RyaW5nKCAkYmFzZVBhdGggKSAmJiBzdHJfc3RhcnRzX3dpdGgoICRmaWxlbmFtZSwgJGJhc2VQYXRoICkgKSB7CgkJCSRmaWxlbmFtZSA9IHN1YnN0ciggJGZpbGVuYW1lLCBzdHJsZW4oICRiYXNlUGF0aCApICk7CgkJfQoKCQkvLyBSZW1vdmUgZXh0cmEgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMuCgkJaWYgKCBzdHJfc3RhcnRzX3dpdGgoICRmaWxlbmFtZSwgJ1xcJyApIHx8IHN0cl9zdGFydHNfd2l0aCggJGZpbGVuYW1lLCAnLycgKSApIHsKCQkJJGZpbGVuYW1lID0gc3Vic3RyKCAkZmlsZW5hbWUsIDEgKTsKCQl9CgoJCXJldHVybiAkcm9vdHBhdGggLiAkZmlsZW5hbWU7Cgl9CgoJLyoqCgkgKiBBZGRzIGEgbWFwcGluZwoJICoKCSAqIEBwYXJhbSBpbnQgJGdlbmVyYXRlZExpbmUgVGhlIGxpbmUgbnVtYmVyIGluIGdlbmVyYXRlZCBmaWxlCgkgKiBAcGFyYW0gaW50ICRnZW5lcmF0ZWRDb2x1bW4gVGhlIGNvbHVtbiBudW1iZXIgaW4gZ2VuZXJhdGVkIGZpbGUKCSAqIEBwYXJhbSBpbnQgJG9yaWdpbmFsTGluZSBUaGUgbGluZSBudW1iZXIgaW4gb3JpZ2luYWwgZmlsZQoJICogQHBhcmFtIGludCAkb3JpZ2luYWxDb2x1bW4gVGhlIGNvbHVtbiBudW1iZXIgaW4gb3JpZ2luYWwgZmlsZQoJICogQHBhcmFtIGFycmF5ICRmaWxlSW5mbyBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGFkZE1hcHBpbmcoICRnZW5lcmF0ZWRMaW5lLCAkZ2VuZXJhdGVkQ29sdW1uLCAkb3JpZ2luYWxMaW5lLCAkb3JpZ2luYWxDb2x1bW4sICRmaWxlSW5mbyApIHsKCQkkdGhpcy0+bWFwcGluZ3NbXSA9IFsKCQkJJ2dlbmVyYXRlZF9saW5lJyA9PiAkZ2VuZXJhdGVkTGluZSwKCQkJJ2dlbmVyYXRlZF9jb2x1bW4nID0+ICRnZW5lcmF0ZWRDb2x1bW4sCgkJCSdvcmlnaW5hbF9saW5lJyA9PiAkb3JpZ2luYWxMaW5lLAoJCQknb3JpZ2luYWxfY29sdW1uJyA9PiAkb3JpZ2luYWxDb2x1bW4sCgkJCSdzb3VyY2VfZmlsZScgPT4gJGZpbGVJbmZvWydjdXJyZW50VXJpJ10gPz8gbnVsbAoJCV07CgoJCWlmICggaXNzZXQoICRmaWxlSW5mb1snY3VycmVudFVyaSddICkgKSB7CgkJCSR0aGlzLT5zb3VyY2VzWyRmaWxlSW5mb1snY3VycmVudFVyaSddXSA9ICRmaWxlSW5mb1snZmlsZW5hbWUnXTsKCQl9Cgl9CgoJLyoqCgkgKiBHZW5lcmF0ZXMgdGhlIEpTT04gc291cmNlIG1hcAoJICoKCSAqIEByZXR1cm4gc3RyaW5nCgkgKiBAc2VlIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMVUxUkdBZWhRd1J5cFVUb3ZGMUtSbHBpT0Z6ZTBiLV8yZ2M2ZkFIMEtZMGsvZWRpdCMKCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdlbmVyYXRlSnNvbigpIHsKCQkkc291cmNlTWFwID0gW107CgkJJG1hcHBpbmdzID0gJHRoaXMtPmdlbmVyYXRlTWFwcGluZ3MoKTsKCgkJLy8gRmlsZSB2ZXJzaW9uIChhbHdheXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBvYmplY3QpIGFuZCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4KCQkkc291cmNlTWFwWyd2ZXJzaW9uJ10gPSBzZWxmOjpWRVJTSU9OOwoKCQkvLyBBbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSB0aGF0IHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguCgkJJGZpbGUgPSAkdGhpcy0+Z2V0T3B0aW9uKCAnc291cmNlTWFwRmlsZW5hbWUnICk7CgkJaWYgKCAkZmlsZSApIHsKCQkJJHNvdXJjZU1hcFsnZmlsZSddID0gJGZpbGU7CgkJfQoKCQkvLyBBbiBvcHRpb25hbCBzb3VyY2Ugcm9vdCwgdXNlZnVsIGZvciByZWxvY2F0aW5nIHNvdXJjZSBmaWxlcyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlICdzb3VyY2VzJyBlbnRyeS4KCQkvLyBUaGlzIHZhbHVlIGlzIHByZXBlbmRlZCB0byB0aGUgaW5kaXZpZHVhbCBlbnRyaWVzIGluIHRoZSAnc291cmNlJyBmaWVsZC4KCQkkcm9vdCA9ICR0aGlzLT5nZXRPcHRpb24oICdzb3VyY2VSb290JyApOwoJCWlmICggJHJvb3QgKSB7CgkJCSRzb3VyY2VNYXBbJ3NvdXJjZVJvb3QnXSA9ICRyb290OwoJCX0KCgkJLy8gQSBsaXN0IG9mIG9yaWdpbmFsIHNvdXJjZXMgdXNlZCBieSB0aGUgJ21hcHBpbmdzJyBlbnRyeS4KCQkkc291cmNlTWFwWydzb3VyY2VzJ10gPSBbXTsKCQlmb3JlYWNoICggJHRoaXMtPnNvdXJjZXMgYXMgJHNvdXJjZV91cmkgPT4gJHNvdXJjZV9maWxlbmFtZSApIHsKCQkJJHNvdXJjZU1hcFsnc291cmNlcyddW10gPSAkdGhpcy0+bm9ybWFsaXplRmlsZW5hbWUoICRzb3VyY2VfZmlsZW5hbWUgKTsKCQl9CgoJCS8vIEEgbGlzdCBvZiBzeW1ib2wgbmFtZXMgdXNlZCBieSB0aGUgJ21hcHBpbmdzJyBlbnRyeS4KCQkkc291cmNlTWFwWyduYW1lcyddID0gW107CgoJCS8vIEEgc3RyaW5nIHdpdGggdGhlIGVuY29kZWQgbWFwcGluZyBkYXRhLgoJCSRzb3VyY2VNYXBbJ21hcHBpbmdzJ10gPSAkbWFwcGluZ3M7CgoJCWlmICggJHRoaXMtPmdldE9wdGlvbiggJ291dHB1dFNvdXJjZUZpbGVzJyApICkgewoJCQkvLyBBbiBvcHRpb25hbCBsaXN0IG9mIHNvdXJjZSBjb250ZW50LCB1c2VmdWwgd2hlbiB0aGUgJ3NvdXJjZScgY2FuJ3QgYmUgaG9zdGVkLgoJCQkvLyBUaGUgY29udGVudHMgYXJlIGxpc3RlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgc291cmNlcyBhYm92ZS4KCQkJLy8gJ251bGwnIG1heSBiZSB1c2VkIGlmIHNvbWUgb3JpZ2luYWwgc291cmNlcyBzaG91bGQgYmUgcmV0cmlldmVkIGJ5IG5hbWUuCgkJCSRzb3VyY2VNYXBbJ3NvdXJjZXNDb250ZW50J10gPSAkdGhpcy0+Z2V0U291cmNlc0NvbnRlbnQoKTsKCQl9CgoJCS8vIGxlc3MuanMgY29tcGF0IGZpeGVzCgkJaWYgKCBjb3VudCggJHNvdXJjZU1hcFsnc291cmNlcyddICkgJiYgZW1wdHkoICRzb3VyY2VNYXBbJ3NvdXJjZVJvb3QnXSApICkgewoJCQl1bnNldCggJHNvdXJjZU1hcFsnc291cmNlUm9vdCddICk7CgkJfQoKCQlyZXR1cm4ganNvbl9lbmNvZGUoICRzb3VyY2VNYXAgKTsKCX0KCgkvKioKCSAqIFJldHVybnMgdGhlIHNvdXJjZXMgY29udGVudHMKCSAqCgkgKiBAcmV0dXJuIGFycmF5fG51bGwKCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFNvdXJjZXNDb250ZW50KCkgewoJCWlmICggZW1wdHkoICR0aGlzLT5zb3VyY2VzICkgKSB7CgkJCXJldHVybjsKCQl9CgkJJGNvbnRlbnQgPSBbXTsKCQlmb3JlYWNoICggJHRoaXMtPnNvdXJjZXMgYXMgJHNvdXJjZUZpbGUgKSB7CgkJCSRjb250ZW50W10gPSBmaWxlX2dldF9jb250ZW50cyggJHNvdXJjZUZpbGUgKTsKCQl9CgkJcmV0dXJuICRjb250ZW50OwoJfQoKCS8qKgoJICogR2VuZXJhdGVzIHRoZSBtYXBwaW5ncyBzdHJpbmcKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdGVNYXBwaW5ncygpIHsKCQlpZiAoICFjb3VudCggJHRoaXMtPm1hcHBpbmdzICkgKSB7CgkJCXJldHVybiAnJzsKCQl9CgoJCSR0aGlzLT5zb3VyY2Vfa2V5cyA9IGFycmF5X2ZsaXAoIGFycmF5X2tleXMoICR0aGlzLT5zb3VyY2VzICkgKTsKCgkJLy8gZ3JvdXAgbWFwcGluZ3MgYnkgZ2VuZXJhdGVkIGxpbmUgbnVtYmVyLgoJCSRncm91cGVkTWFwID0gJGdyb3VwZWRNYXBFbmNvZGVkID0gW107CgkJZm9yZWFjaCAoICR0aGlzLT5tYXBwaW5ncyBhcyAkbSApIHsKCQkJJGdyb3VwZWRNYXBbJG1bJ2dlbmVyYXRlZF9saW5lJ11dW10gPSAkbTsKCQl9CgkJa3NvcnQoICRncm91cGVkTWFwICk7CgoJCSRsYXN0R2VuZXJhdGVkTGluZSA9ICRsYXN0T3JpZ2luYWxJbmRleCA9ICRsYXN0T3JpZ2luYWxMaW5lID0gJGxhc3RPcmlnaW5hbENvbHVtbiA9IDA7CgoJCWZvcmVhY2ggKCAkZ3JvdXBlZE1hcCBhcyAkbGluZU51bWJlciA9PiAkbGluZV9tYXAgKSB7CgkJCXdoaWxlICggKyskbGFzdEdlbmVyYXRlZExpbmUgPCAkbGluZU51bWJlciApIHsKCQkJCSRncm91cGVkTWFwRW5jb2RlZFtdID0gJzsnOwoJCQl9CgoJCQkkbGluZU1hcEVuY29kZWQgPSBbXTsKCQkJJGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwOwoKCQkJZm9yZWFjaCAoICRsaW5lX21hcCBhcyAkbSApIHsKCQkJCSRtYXBFbmNvZGVkID0gJHRoaXMtPmVuY29kZXItPmVuY29kZSggJG1bJ2dlbmVyYXRlZF9jb2x1bW4nXSAtICRsYXN0R2VuZXJhdGVkQ29sdW1uICk7CgkJCQkkbGFzdEdlbmVyYXRlZENvbHVtbiA9ICRtWydnZW5lcmF0ZWRfY29sdW1uJ107CgoJCQkJLy8gZmluZCB0aGUgaW5kZXgKCQkJCWlmICggJG1bJ3NvdXJjZV9maWxlJ10gKSB7CgkJCQkJJGluZGV4ID0gJHRoaXMtPmZpbmRGaWxlSW5kZXgoICRtWydzb3VyY2VfZmlsZSddICk7CgkJCQkJaWYgKCAkaW5kZXggIT09IGZhbHNlICkgewoJCQkJCQkkbWFwRW5jb2RlZCAuPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCAkaW5kZXggLSAkbGFzdE9yaWdpbmFsSW5kZXggKTsKCQkJCQkJJGxhc3RPcmlnaW5hbEluZGV4ID0gJGluZGV4OwoKCQkJCQkJLy8gbGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkIGluIFNvdXJjZU1hcCBzcGVjIHZlcnNpb24gMwoJCQkJCQkkbWFwRW5jb2RlZCAuPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCAkbVsnb3JpZ2luYWxfbGluZSddIC0gMSAtICRsYXN0T3JpZ2luYWxMaW5lICk7CgkJCQkJCSRsYXN0T3JpZ2luYWxMaW5lID0gJG1bJ29yaWdpbmFsX2xpbmUnXSAtIDE7CgoJCQkJCQkkbWFwRW5jb2RlZCAuPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCAkbVsnb3JpZ2luYWxfY29sdW1uJ10gLSAkbGFzdE9yaWdpbmFsQ29sdW1uICk7CgkJCQkJCSRsYXN0T3JpZ2luYWxDb2x1bW4gPSAkbVsnb3JpZ2luYWxfY29sdW1uJ107CgkJCQkJfQoJCQkJfQoKCQkJCSRsaW5lTWFwRW5jb2RlZFtdID0gJG1hcEVuY29kZWQ7CgkJCX0KCgkJCSRncm91cGVkTWFwRW5jb2RlZFtdID0gaW1wbG9kZSggJywnLCAkbGluZU1hcEVuY29kZWQgKSAuICc7JzsKCQl9CgoJCXJldHVybiBydHJpbSggaW1wbG9kZSggJGdyb3VwZWRNYXBFbmNvZGVkICksICc7JyApOwoJfQoKCS8qKgoJICogRmluZHMgdGhlIGluZGV4IGZvciB0aGUgZmlsZW5hbWUKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQoJICogQHJldHVybiBpbnR8ZmFsc2UKCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbmRGaWxlSW5kZXgoICRmaWxlbmFtZSApIHsKCQlyZXR1cm4gJHRoaXMtPnNvdXJjZV9rZXlzWyRmaWxlbmFtZV0gPz8gZmFsc2U7Cgl9CgoJLyoqCgkgKiBmaXggd2luZG93cyBwYXRocwoJICogQHBhcmFtIHN0cmluZyAkcGF0aAoJICogQHBhcmFtIGJvb2wgJGFkZEVuZFNsYXNoCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gZml4V2luZG93c1BhdGgoICRwYXRoLCAkYWRkRW5kU2xhc2ggPSBmYWxzZSApIHsKCQkkc2xhc2ggPSAoICRhZGRFbmRTbGFzaCApID8gJy8nIDogJyc7CgkJaWYgKCAhZW1wdHkoICRwYXRoICkgKSB7CgkJCSRwYXRoID0gc3RyX3JlcGxhY2UoICdcXCcsICcvJywgJHBhdGggKTsKCQkJJHBhdGggPSBydHJpbSggJHBhdGgsICcvJyApIC4gJHNsYXNoOwoJCX0KCgkJcmV0dXJuICRwYXRoOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUcmVlCiAqLwpjbGFzcyBMZXNzX1RyZWUgewoKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkcGFyZW5zSW5PcCA9IGZhbHNlOwoJLyoqIEB2YXIgdHJ1ZXxudWxsICovCglwdWJsaWMgJGV4dGVuZE9uRXZlcnlQYXRoOwoJLyoqIEB2YXIgTGVzc19UcmVlX0V4dGVuZFtdICovCglwdWJsaWMgJGFsbEV4dGVuZHM7CgkvKioKCSAqIFRoaXMgaXMgc2V0IHRvIHRydWUgdG8gZW5zdXJlIHZpc2liaWxpdHkKCSAqIGZvciBhbGwgZXhjZXB0IExlc3NfVHJlZV9Bbm9ueW1vdXMgd2hlcmUgd2UgZGVjaWRlCgkgKiBpZiB0aGUgdGhlIG5vZGUgc2hvdWxkIGJlIHZpc2libGUgb3Igbm90CgkgKgoJICogQHZhciBib29sCgkgKi8KCXB1YmxpYyAkbm9kZVZpc2libGUgPSB0cnVlOwoKCS8qKgoJICogQHZhciBMZXNzX1BhcnNlcgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNOb2RlLnByb3RvdHlwZS5wYXJzZQoJICovCglwdWJsaWMgc3RhdGljICRwYXJzZTsKCgkvKioKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNOb2RlLnByb3RvdHlwZS50b0NTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKSB7CgkJJG91dHB1dCA9IG5ldyBMZXNzX091dHB1dCgpOwoJCSR0aGlzLT5nZW5DU1MoICRvdXRwdXQgKTsKCQlyZXR1cm4gJG91dHB1dC0+dG9TdHJpbmcoKTsKCX0KCgkvKioKCSAqIEdlbmVyYXRlIENTUyBieSBhZGRpbmcgaXQgdG8gdGhlIG91dHB1dCBvYmplY3QKCSAqCgkgKiBAcGFyYW0gTGVzc19PdXRwdXQgJG91dHB1dCBUaGUgb3V0cHV0CgkgKiBAcmV0dXJuIHZvaWQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQlyZXR1cm4gJHRoaXM7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRvcAoJICogQHBhcmFtIGZsb2F0ICRhCgkgKiBAcGFyYW0gZmxvYXQgJGIKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNOb2RlLnByb3RvdHlwZS5fb3BlcmF0ZQoJICovCglwcm90ZWN0ZWQgZnVuY3Rpb24gX29wZXJhdGUoICRvcCwgJGEsICRiICkgewoJCXN3aXRjaCAoICRvcCApIHsKCQkJY2FzZSAnKyc6CgkJCQlyZXR1cm4gJGEgKyAkYjsKCQkJY2FzZSAnLSc6CgkJCQlyZXR1cm4gJGEgLSAkYjsKCQkJY2FzZSAnKic6CgkJCQlyZXR1cm4gJGEgKiAkYjsKCQkJY2FzZSAnLyc6CgkJCQlyZXR1cm4gJGEgLyAkYjsKCQl9Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjTm9kZS5wcm90b3R5cGUuZnJvdW5kCgkgKi8KCXByb3RlY3RlZCBmdW5jdGlvbiBmcm91bmQoICR2YWx1ZSApIHsKCQlpZiAoICR2YWx1ZSA9PT0gMCApIHsKCQkJcmV0dXJuICR2YWx1ZTsKCQl9CgoJCS8vIFRPRE86IE1pZ3JhdGUgdG8gcGFzc2luZyAkZW52LgoJCWlmICggTGVzc19QYXJzZXI6OiRvcHRpb25zWydudW1QcmVjaXNpb24nXSApIHsKCQkJJHAgPSBwb3coIDEwLCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ251bVByZWNpc2lvbiddICk7CgkJCXJldHVybiByb3VuZCggJHZhbHVlICogJHAgKSAvICRwOwoJCX0KCQlyZXR1cm4gJHZhbHVlOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfT3V0cHV0ICRvdXRwdXQKCSAqIEBwYXJhbSBMZXNzX1RyZWVfUnVsZXNldFtdICRydWxlcwoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG91dHB1dFJ1bGVzZXQoICRvdXRwdXQsICRydWxlcyApIHsKCQkkcnVsZUNudCA9IGNvdW50KCAkcnVsZXMgKTsKCQlMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwrKzsKCgkJLy8gQ29tcHJlc3NlZAoJCWlmICggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICkgewoJCQkkb3V0cHV0LT5hZGQoICd7JyApOwoJCQlmb3IgKCAkaSA9IDA7ICRpIDwgJHJ1bGVDbnQ7ICRpKysgKSB7CgkJCQkkcnVsZXNbJGldLT5nZW5DU1MoICRvdXRwdXQgKTsKCQkJfQoKCQkJJG91dHB1dC0+YWRkKCAnfScgKTsKCQkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsLS07CgkJCXJldHVybjsKCQl9CgoJCS8vIE5vbi1jb21wcmVzc2VkCgkJJHRhYlNldFN0ciA9ICJcbiIgLiBzdHJfcmVwZWF0KCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2luZGVudGF0aW9uJ10sIExlc3NfRW52aXJvbm1lbnQ6OiR0YWJMZXZlbCAtIDEgKTsKCQkkdGFiUnVsZVN0ciA9ICR0YWJTZXRTdHIgLiBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2luZGVudGF0aW9uJ107CgoJCSRvdXRwdXQtPmFkZCggIiB7IiApOwoJCWZvciAoICRpID0gMDsgJGkgPCAkcnVsZUNudDsgJGkrKyApIHsKCQkJJG91dHB1dC0+YWRkKCAkdGFiUnVsZVN0ciApOwoJCQkkcnVsZXNbJGldLT5nZW5DU1MoICRvdXRwdXQgKTsKCQl9CgkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsLS07CgkJJG91dHB1dC0+YWRkKCAkdGFiU2V0U3RyIC4gJ30nICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKSB7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlICRhCgkgKiBAcGFyYW0gTGVzc19UcmVlICRiCgkgKiBAcmV0dXJuIGludHxudWxsCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjTm9kZS5jb21wYXJlCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm9kZUNvbXBhcmUoICRhLCAkYiApIHsKCQkvLyBMZXNzX1RyZWUgc3ViY2xhc3NlcyB0aGF0IGltcGxlbWVudCBjb21wYXJlKCkgYXJlOgoJCS8vIEFub255bW91cywgQ29sb3IsIERpbWVuc2lvbiwgUXVvdGVkLCBVbml0CgkJJGFIYXNDb21wYXJlID0gKCAkYSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Bbm9ueW1vdXMgfHwgJGEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IKCQkJfHwgJGEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uIHx8ICRhIGluc3RhbmNlb2YgTGVzc19UcmVlX1F1b3RlZCB8fCAkYSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Vbml0CgkJKTsKCQkkYkhhc0NvbXBhcmUgPSAoICRiIGluc3RhbmNlb2YgTGVzc19UcmVlX0Fub255bW91cyB8fCAkYiBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcgoJCQl8fCAkYiBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gfHwgJGIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUXVvdGVkIHx8ICRiIGluc3RhbmNlb2YgTGVzc19UcmVlX1VuaXQKCQkpOwoKCQlpZiAoICRhSGFzQ29tcGFyZSAmJgoJCQkhKCAkYiBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQgfHwgJGIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQW5vbnltb3VzICkKCQkpIHsKCQkJLy8gZm9yICJzeW1tZXRyaWMgcmVzdWx0cyIgZm9yY2UgdG9DU1MtYmFzZWQgY29tcGFyaXNvbiB2aWEgYi5jb21wYXJlKCkKCQkJLy8gb2YgUXVvdGVkIG9yIEFub255bW91cyBpZiBlaXRoZXIgdmFsdWUgaXMgb25lIG9mIHRob3NlCgkJCS8vIEBwaGFuLXN1cHByZXNzLW5leHQtbGluZSBQaGFuVW5kZWNsYXJlZE1ldGhvZAoJCQlyZXR1cm4gJGEtPmNvbXBhcmUoICRiICk7CgkJfSBlbHNlaWYgKCAkYkhhc0NvbXBhcmUgKSB7CgkJCSRyZXMgPSAkYi0+Y29tcGFyZSggJGEgKTsKCQkJLy8gSW4gSlMsIGAtdW5kZWZpbmVkYCBwcm9kdWNlcyBOQU4sIHdoaWNoLCBqdXN0IGxpa2UgdW5kZWZpbmVkCgkJCS8vIHdpbGwgZW50ZXIgdGhlIHRoZSBkZWZhdWx0L2ZhbHNlIGJyYW5jaCBvZiBMZXNzX1RyZWVfQ29uZGl0aW9uI2NvbXBpbGUuCgkJCS8vIEluIFBIUCwgYC1udWxsYCBpcyAwLiBUbyBlbnN1cmUgcGFyaXR5LCBwcmVzZXJ2ZSB0aGUgbnVsbC4KCQkJcmV0dXJuICRyZXMgIT09IG51bGwgPyAtJHJlcyA6IG51bGw7CgkJfSBlbHNlaWYgKCBnZXRfY2xhc3MoICRhICkgIT09IGdldF9jbGFzcyggJGIgKSApIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQkvLyBMZXNzX1RyZWUgc3ViY2xhc3NlcyB0aGF0IGhhdmUgYW4gYXJyYXkgdmFsdWU6IExlc3NfVHJlZV9FeHByZXNzaW9uLCBMZXNzX1RyZWVfVmFsdWUKCQkvLyBAcGhhbi1zdXBwcmVzcy1uZXh0LWxpbmUgUGhhblVuZGVjbGFyZWRQcm9wZXJ0eQoJCSRhdmFsID0gJGEtPnZhbHVlID8/IFtdOwoJCSRidmFsID0gJGItPnZhbHVlID8/IFtdOwoJCWlmICggISggJGEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiB8fCAkYSBpbnN0YW5jZW9mIExlc3NfVHJlZV9WYWx1ZSApICkgewoJCQlyZXR1cm4gJGF2YWwgPT09ICRidmFsID8gMCA6IG51bGw7CgkJfQoJCSdAcGhhbi12YXIgTGVzc19UcmVlW10gJGF2YWwnOwoJCSdAcGhhbi12YXIgTGVzc19UcmVlW10gJGJ2YWwnOwoJCWlmICggY291bnQoICRhdmFsICkgIT09IGNvdW50KCAkYnZhbCApICkgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgkJZm9yZWFjaCAoICRhdmFsIGFzICRpID0+ICRpdGVtICkgewoJCQlpZiAoIHNlbGY6Om5vZGVDb21wYXJlKCAkaXRlbSwgJGJ2YWxbJGldICkgIT09IDAgKSB7CgkJCQlyZXR1cm4gbnVsbDsKCQkJfQoJCX0KCQlyZXR1cm4gMDsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmd8ZmxvYXR8aW50ICRhCgkgKiBAcGFyYW0gc3RyaW5nfGZsb2F0fGludCAkYgoJICogQHJldHVybiBpbnR8bnVsbAoJICogQHNlZSBsZXNzLTIuNS4zLmpzI05vZGUubnVtZXJpY0NvbXBhcmUKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBudW1lcmljQ29tcGFyZSggJGEsICRiICkgewoJCXJldHVybiAkYSA8ICRiID8gLTEKCQkJOiAoICRhID09PSAkYiA/IDAKCQkJCTogKCAkYSA+ICRiID8gMQoJCQkJCS8vIE5BTiBpcyBub3QgZ3JlYXRlciwgbGVzcywgb3IgZXF1YWwKCQkJCQk6IG51bGwKCQkJCSkKCQkJKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFJlZmVyZW5jZWRBcnJheSggJHJ1bGVzICkgewoJCWZvcmVhY2ggKCAkcnVsZXMgYXMgJHJ1bGUgKSB7CgkJCWlmICggbWV0aG9kX2V4aXN0cyggJHJ1bGUsICdtYXJrUmVmZXJlbmNlZCcgKSApIHsKCQkJCS8vIEBwaGFuLXN1cHByZXNzLW5leHQtbGluZSBQaGFuVW5kZWNsYXJlZE1ldGhvZCBGYWxzZSBwb3NpdGl2ZQoJCQkJJHJ1bGUtPm1hcmtSZWZlcmVuY2VkKCk7CgkJCX0KCQl9Cgl9CgoJLyoqCgkgKiBSZXF1aXJlcyBwaHAgNS4zKwoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIF9fc2V0X3N0YXRlKCAkYXJncyApIHsKCQkkY2xhc3MgPSBnZXRfY2FsbGVkX2NsYXNzKCk7CgkJJG9iaiA9IG5ldyAkY2xhc3MoIG51bGwsIG51bGwsIG51bGwsIG51bGwgKTsKCQlmb3JlYWNoICggJGFyZ3MgYXMgJGtleSA9PiAkdmFsICkgewoJCQkkb2JqLT4ka2V5ID0gJHZhbDsKCQl9CgkJcmV0dXJuICRvYmo7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI05vZGUucHJvdG90eXBlLmlzVmlzaWJsZQoJICovCglwdWJsaWMgZnVuY3Rpb24gaXNWaXNpYmxlKCkgewoJCXJldHVybiAkdGhpcy0+bm9kZVZpc2libGU7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Alpha.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0yLjUuMy5qcyNBbHBoYS5wcm90b3R5cGUKICovCmNsYXNzIExlc3NfVHJlZV9BbHBoYSBleHRlbmRzIExlc3NfVHJlZSBpbXBsZW1lbnRzIExlc3NfVHJlZV9IYXNWYWx1ZVByb3BlcnR5IHsKCS8qKiBAdmFyIHN0cmluZ3xMZXNzX1RyZWUgKi8KCXB1YmxpYyAkdmFsdWU7CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nfExlc3NfVHJlZSAkdmFsIFRoaXMgcmVjZWl2ZXMgc3RyaW5nIG9yIExlc3NfVHJlZV9WYXJpYWJsZQoJICogZnJvbSBMZXNzX1BhcnNlci4gSW4gY29tcGlsZSgpLCBMZXNzX1RyZWVfVmFyaWFibGUgaXMgcmVwbGFjZWQgd2l0aCBhCgkgKiBkaWZmZXJlbnQgbm9kZSAoZS5nLiBMZXNzX1RyZWVfUXVvdGVkKS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkdmFsICkgewoJCSR0aGlzLT52YWx1ZSA9ICR2YWw7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKSB7CgkJaWYgKCAkdGhpcy0+dmFsdWUgaW5zdGFuY2VvZiBMZXNzX1RyZWUgKSB7CgkJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnZhbHVlICk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCAkZW52ICkgewoJCWlmICggJHRoaXMtPnZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlICkgewoJCQlyZXR1cm4gbmV3IHNlbGYoICR0aGlzLT52YWx1ZS0+Y29tcGlsZSggJGVudiApICk7CgkJfQoKCQlyZXR1cm4gJHRoaXM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQkkb3V0cHV0LT5hZGQoICJhbHBoYShvcGFjaXR5PSIgKTsKCgkJaWYgKCAkdGhpcy0+dmFsdWUgaW5zdGFuY2VvZiBMZXNzX1RyZWUgKSB7CgkJCSR0aGlzLT52YWx1ZS0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJfSBlbHNlIHsKCQkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dmFsdWUgKTsKCQl9CgoJCSRvdXRwdXQtPmFkZCggJyknICk7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Anonymous.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0yLjUuMy5qcyNBbm9ueW1vdXMucHJvdG90eXBlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQW5vbnltb3VzIGV4dGVuZHMgTGVzc19UcmVlIGltcGxlbWVudHMgTGVzc19UcmVlX0hhc1ZhbHVlUHJvcGVydHkgewoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJHZhbHVlOwoJLyoqIEB2YXIgc3RyaW5nfG51bGwgKi8KCXB1YmxpYyAkcXVvdGU7CgkvKiogQHZhciBpbnR8bnVsbCAqLwoJcHVibGljICRpbmRleDsKCS8qKiBAdmFyIGJvb2x8bnVsbCAqLwoJcHVibGljICRtYXBMaW5lczsKCS8qKiBAdmFyIGFycmF5fG51bGwgKi8KCXB1YmxpYyAkY3VycmVudEZpbGVJbmZvOwoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljICRydWxlc2V0TGlrZTsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkaXNSZWZlcmVuY2VkOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUKCSAqIEBwYXJhbSBpbnR8bnVsbCAkaW5kZXgKCSAqIEBwYXJhbSBhcnJheXxudWxsICRjdXJyZW50RmlsZUluZm8KCSAqIEBwYXJhbSBib29sfG51bGwgJG1hcExpbmVzCgkgKiBAcGFyYW0gYm9vbCAkcnVsZXNldExpa2UKCSAqIEBwYXJhbSBib29sICRyZWZlcmVuY2VkCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJHZhbHVlLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgJG1hcExpbmVzID0gbnVsbCwgJHJ1bGVzZXRMaWtlID0gZmFsc2UsICRyZWZlcmVuY2VkID0gZmFsc2UgKSB7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+bWFwTGluZXMgPSAkbWFwTGluZXM7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87CgkJJHRoaXMtPnJ1bGVzZXRMaWtlID0gJHJ1bGVzZXRMaWtlOwoJCS8vIFRPRE86IHJlbW92ZSBpc1JlZmVyZW5jZWQgYW5kIGltcGxlbWVudCAkdmlzaWJpbGl0eUluZm8KCQkvLyBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2NvbW1pdC9lYWQzZTI5ZjdiNzkzOTBhZDNhYzc5OGJmNDIxOTViMjQ5MTkxMDdkCgkJJHRoaXMtPmlzUmVmZXJlbmNlZCA9ICRyZWZlcmVuY2VkOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCAkZW52ICkgewoJCXJldHVybiBuZXcgc2VsZiggJHRoaXMtPnZhbHVlLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5tYXBMaW5lcywgJHRoaXMtPnJ1bGVzZXRMaWtlLCAkdGhpcy0+aXNSZWZlcmVuY2VkICk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlfG1peGVkICR4CgkgKiBAcmV0dXJuIGludHxudWxsCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI0Fub255bW91cy5wcm90b3R5cGUuY29tcGFyZQoJICovCglwdWJsaWMgZnVuY3Rpb24gY29tcGFyZSggJHggKSB7CgkJcmV0dXJuICggJHggaW5zdGFuY2VvZiBMZXNzX1RyZWUgJiYgJHRoaXMtPnRvQ1NTKCkgPT09ICR4LT50b0NTUygpICkgPyAwIDogbnVsbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNSdWxlc2V0TGlrZSgpIHsKCQlyZXR1cm4gJHRoaXMtPnJ1bGVzZXRMaWtlOwoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNBbm9ueW1vdXMucHJvdG90eXBlLmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCSR0aGlzLT5ub2RlVmlzaWJsZSA9ICR0aGlzLT52YWx1ZSAhPT0gIiIgJiYgJHRoaXMtPnZhbHVlICE9PSAwOwoJCWlmICggJHRoaXMtPm5vZGVWaXNpYmxlICkgewoJCQkkb3V0cHV0LT5hZGQoICR0aGlzLT52YWx1ZSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4LCAkdGhpcy0+bWFwTGluZXMgKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hcmtSZWZlcmVuY2VkKCkgewoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRJc1JlZmVyZW5jZWQoKSB7CgkJcmV0dXJuICFpc3NldCggJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gKSB8fCAhJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gfHwgJHRoaXMtPmlzUmVmZXJlbmNlZDsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Assignment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0yLjUuMy5qcyNBc3NpZ25tZW50LnByb3RvdHlwZQogKi8KY2xhc3MgTGVzc19UcmVlX0Fzc2lnbm1lbnQgZXh0ZW5kcyBMZXNzX1RyZWUgaW1wbGVtZW50cyBMZXNzX1RyZWVfSGFzVmFsdWVQcm9wZXJ0eSB7CgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAka2V5OwoJLyoqIEB2YXIgTGVzc19UcmVlICovCglwdWJsaWMgJHZhbHVlOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggc3RyaW5nICRrZXksIExlc3NfVHJlZSAkdmFsICkgewoJCSR0aGlzLT5rZXkgPSAka2V5OwoJCSR0aGlzLT52YWx1ZSA9ICR2YWw7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKSB7CgkJJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+dmFsdWUgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkvLyBOT1RFOiBMZXNzLmpzIGhhcyBhIGNvbmRpdGlvbmFsIGZvciAkdGhpcy0+dmFsdWUsCgkJLy8gYnV0IHRoaXMgYXBwZWFycyB1bnJlYWNoYWJsZSAoJHZhbCBpcyBub3Qgb3B0aW9uYWwpLgoJCXJldHVybiBuZXcgc2VsZiggJHRoaXMtPmtleSwgJHRoaXMtPnZhbHVlLT5jb21waWxlKCAkZW52ICkgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPmtleSAuICc9JyApOwoJCSR0aGlzLT52YWx1ZS0+Z2VuQ1NTKCAkb3V0cHV0ICk7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/AtRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjQXRSdWxlLnByb3RvdHlwZQogKi8KY2xhc3MgTGVzc19UcmVlX0F0UnVsZSBleHRlbmRzIExlc3NfVHJlZSBpbXBsZW1lbnRzIExlc3NfVHJlZV9IYXNWYWx1ZVByb3BlcnR5IHsKCS8qKiBAdmFyIHN0cmluZyAqLwoJcHVibGljICRuYW1lOwoJLyoqIEB2YXIgTGVzc19UcmVlfG51bGwgKi8KCXB1YmxpYyAkdmFsdWU7CgkvKiogQHZhciBMZXNzX1RyZWVfUnVsZXNldFtdfG51bGwgKi8KCXB1YmxpYyAkcnVsZXM7CgkvKiogQHZhciBpbnR8bnVsbCAqLwoJcHVibGljICRpbmRleDsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkaXNSZWZlcmVuY2VkOwoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljICRpc1Jvb3RlZDsKCS8qKiBAdmFyIGFycmF5fG51bGwgKi8KCXB1YmxpYyAkY3VycmVudEZpbGVJbmZvOwoJLyoqIEB2YXIgbWl4ZWR8bnVsbCAqLwoJcHVibGljICRkZWJ1Z0luZm87CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAoJCSRuYW1lLAoJCSR2YWx1ZSA9IG51bGwsCgkJJHJ1bGVzID0gbnVsbCwKCQkkaW5kZXggPSBudWxsLAoJCSRpc1Jvb3RlZCA9IGZhbHNlLAoJCSRjdXJyZW50RmlsZUluZm8gPSBudWxsLAoJCSRkZWJ1Z0luZm8gPSBudWxsLAoJCSRpc1JlZmVyZW5jZWQgPSBmYWxzZQoJKSB7CgkJJHRoaXMtPm5hbWUgPSAkbmFtZTsKCQkvLyBUT0RPOiBMZXNzLmpzIDMuMTMgaGFuZGxlcyBgJHZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlYCBhbmQgY3JlYXRlcyBBbm9ueW1vdXMgaGVyZS4KCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CgoJCWlmICggJHJ1bGVzICE9PSBudWxsICkgewoJCQlpZiAoIGlzX2FycmF5KCAkcnVsZXMgKSApIHsKCQkJCSR0aGlzLT5ydWxlcyA9ICRydWxlczsKCQkJfSBlbHNlIHsKCQkJCSR0aGlzLT5ydWxlcyA9IFsgJHJ1bGVzIF07CgkJCQkkdGhpcy0+cnVsZXNbMF0tPnNlbGVjdG9ycyA9ICR0aGlzLT5lbXB0eVNlbGVjdG9ycygpOwoJCQl9CgoJCQlmb3JlYWNoICggJHRoaXMtPnJ1bGVzIGFzICRydWxlICkgewoJCQkJJHJ1bGUtPmFsbG93SW1wb3J0cyA9IHRydWU7CgkJCX0KCQkJLy8gVE9ETzogTGVzcy5qcyAzLjEzIGhhbmRsZXMgc2V0UGFyZW50KCkgaGVyZQoJCX0KCgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5pc1Jvb3RlZCA9ICRpc1Jvb3RlZDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCQkkdGhpcy0+ZGVidWdJbmZvID0gJGRlYnVnSW5mbzsKCQkkdGhpcy0+aXNSZWZlcmVuY2VkID0gJGlzUmVmZXJlbmNlZDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApIHsKCQlpZiAoICR0aGlzLT5ydWxlcyApIHsKCQkJJHRoaXMtPnJ1bGVzID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoICR0aGlzLT5ydWxlcyApOwoJCX0KCQlpZiAoICR0aGlzLT52YWx1ZSApIHsKCQkJJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+dmFsdWUgKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzUnVsZXNldExpa2UoKSB7CgkJcmV0dXJuICR0aGlzLT5ydWxlcyB8fCAhJHRoaXMtPmlzQ2hhcnNldCgpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc0NoYXJzZXQoKSB7CgkJcmV0dXJuICR0aGlzLT5uYW1lID09PSAiQGNoYXJzZXQiOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPm5hbWUsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCWlmICggJHRoaXMtPnZhbHVlICkgewoJCQkkb3V0cHV0LT5hZGQoICcgJyApOwoJCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJCX0KCQlpZiAoICR0aGlzLT5ydWxlcyAhPT0gbnVsbCApIHsKCQkJTGVzc19UcmVlOjpvdXRwdXRSdWxlc2V0KCAkb3V0cHV0LCAkdGhpcy0+cnVsZXMgKTsKCQl9IGVsc2UgewoJCQkkb3V0cHV0LT5hZGQoICc7JyApOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJJHJ1bGVzID0gJHRoaXMtPnJ1bGVzOwoKCQkvLyBNZWRpYSBzdG9yZWQgaW5zaWRlIG90aGVyIGRpcmVjdGl2ZSBzaG91bGQgbm90IGJ1YmJsZSBvdmVyIGl0CgkJLy8gYmFja3VwIG1lZGlhIGJ1YmJsaW5nIGluZm9ybWF0aW9uCgkJJG1lZGlhUGF0aEJhY2t1cCA9ICRlbnYtPm1lZGlhUGF0aDsKCQkkbWVkaWFQQmxvY2tzQmFja3VwID0gJGVudi0+bWVkaWFCbG9ja3M7CgkJLy8gRGVsZXRlZCBtZWRpYSBidWJibGluZyBpbmZvcm1hdGlvbgoJCSRlbnYtPm1lZGlhUGF0aCA9IFtdOwoJCSRlbnYtPm1lZGlhQmxvY2tzID0gW107CgoJCWlmICggJHZhbHVlICkgewoJCQkkdmFsdWUgPSAkdmFsdWUtPmNvbXBpbGUoICRlbnYgKTsKCQl9CgoJCWlmICggJHJ1bGVzICkgewoJCQkvLyBBc3N1bWluZyB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHJ1bGUgYXQgdGhpcyBwb2ludCAtIHRoYXQgaXMgaG93IHBhcnNlciBjb25zdHJ1Y3RzIHRoZSBydWxlCgkJCSRydWxlcyA9ICRydWxlc1swXS0+Y29tcGlsZSggJGVudiApOwoJCQkkcnVsZXMtPnJvb3QgPSB0cnVlOwoJCX0KCgkJLy8gUmVzdG9yZSBtZWRpYSBidWJibGluZyBpbmZvcm1hdGlvbgoJCSRlbnYtPm1lZGlhUGF0aCA9ICRtZWRpYVBhdGhCYWNrdXA7CgkJJGVudi0+bWVkaWFCbG9ja3MgPSAkbWVkaWFQQmxvY2tzQmFja3VwOwoKCQlyZXR1cm4gbmV3IHNlbGYoICR0aGlzLT5uYW1lLCAkdmFsdWUsICRydWxlcywgJHRoaXMtPmluZGV4LCAkdGhpcy0+aXNSb290ZWQsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5kZWJ1Z0luZm8sICR0aGlzLT5pc1JlZmVyZW5jZWQgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmFyaWFibGUoICRuYW1lICkgewoJCWlmICggJHRoaXMtPnJ1bGVzICkgewoJCQlyZXR1cm4gJHRoaXMtPnJ1bGVzWzBdLT52YXJpYWJsZSggJG5hbWUgKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGZpbmQoICRzZWxlY3RvciApIHsKCQkvLyBUT0RPOiBMZXNzLmpzIDMuMTMuMSBhZGRzIG11bHRpcGxlIHZhcmlhZGljIGFyZ3VtZW50cyBoZXJlCgkJaWYgKCAkdGhpcy0+cnVsZXMgKSB7CgkJCXJldHVybiAkdGhpcy0+cnVsZXNbMF0tPmZpbmQoICRzZWxlY3RvciwgJHRoaXMgKTsKCQl9Cgl9CgoJLy8gVE9ETzogSW1wbGVtZW50IGxlc3MtMy4xMy4xLmpzI0F0UnVsZS5wcm90b3R5cGUucnVsZXNldHMKCS8vIFVudXNlZD8KCgkvLyBUT0RPOiBJbXBsZW1lbnQgbGVzcy0zLjEzLjEuanMjQXRSdWxlLnByb3RvdHlwZS5vdXRwdXRSdWxlc2V0CgkvLyBXZSBoYXZlIG91cnMgaW4gTGVzc19UcmVlOjpvdXRwdXRSdWxlc2V0IGluc3RlYWQuCgoJcHVibGljIGZ1bmN0aW9uIG1hcmtSZWZlcmVuY2VkKCkgewoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSB0cnVlOwoJCWlmICggJHRoaXMtPnJ1bGVzICkgewoJCQlMZXNzX1RyZWU6OlJlZmVyZW5jZWRBcnJheSggJHRoaXMtPnJ1bGVzICk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRJc1JlZmVyZW5jZWQoKSB7CgkJcmV0dXJuICFpc3NldCggJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gKSB8fCAhJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gfHwgJHRoaXMtPmlzUmVmZXJlbmNlZDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZW1wdHlTZWxlY3RvcnMoKSB7CgkJJGVsID0gbmV3IExlc3NfVHJlZV9FbGVtZW50KCAnJywgJyYnLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8gKTsKCQkkc2VscyA9IFsgbmV3IExlc3NfVHJlZV9TZWxlY3RvciggWyAkZWwgXSwgW10sIG51bGwsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApIF07CgkJJHNlbHNbMF0tPm1lZGlhRW1wdHkgPSB0cnVlOwoJCXJldHVybiAkc2VsczsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Attribute.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0yLjUuMy5qcyNBdHRyaWJ1dGUucHJvdG90eXBlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQXR0cmlidXRlIGV4dGVuZHMgTGVzc19UcmVlIGltcGxlbWVudHMgTGVzc19UcmVlX0hhc1ZhbHVlUHJvcGVydHkgewoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJGtleTsKCS8qKiBAdmFyIG51bGx8c3RyaW5nICovCglwdWJsaWMgJG9wOwoJLyoqIEB2YXIgbnVsbHxzdHJpbmd8TGVzc19UcmVlICovCglwdWJsaWMgJHZhbHVlOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAka2V5CgkgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJG9wCgkgKiBAcGFyYW0gbnVsbHxzdHJpbmd8TGVzc19UcmVlICR2YWx1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRrZXksICRvcCwgJHZhbHVlICkgewoJCSR0aGlzLT5rZXkgPSAka2V5OwoJCSR0aGlzLT5vcCA9ICRvcDsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJLy8gT3B0aW1pemF0aW9uOiBBdm9pZCBvYmplY3QgY2h1cm4gZm9yIHRoZSBjb21tb24gY2FzZS4KCQkvLyBBdHRyaWJ1dGVzIGFyZSB2ZXJ5IGNvbW1vbiBpbiBDU1MvTEVTUyBpbnB1dCwgYnV0IHJhcmVseSBpbnZvbHZlIGR5bmFtaWMgdmFsdWVzLgoJCWlmICggISR0aGlzLT5rZXkgaW5zdGFuY2VvZiBMZXNzX1RyZWUgJiYgISR0aGlzLT52YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZSApIHsKCQkJcmV0dXJuICR0aGlzOwoJCX0KCgkJcmV0dXJuIG5ldyBzZWxmKAoJCQkkdGhpcy0+a2V5IGluc3RhbmNlb2YgTGVzc19UcmVlID8gJHRoaXMtPmtleS0+Y29tcGlsZSggJGVudiApIDogJHRoaXMtPmtleSwKCQkJJHRoaXMtPm9wLAoJCQkkdGhpcy0+dmFsdWUgaW5zdGFuY2VvZiBMZXNzX1RyZWUgPyAkdGhpcy0+dmFsdWUtPmNvbXBpbGUoICRlbnYgKSA6ICR0aGlzLT52YWx1ZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKSB7CgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dG9DU1MoKSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUygpIHsKCQkkdmFsdWUgPSAkdGhpcy0+a2V5OwoKCQlpZiAoICR0aGlzLT5vcCApIHsKCQkJJHZhbHVlIC49ICR0aGlzLT5vcDsKCQkJJHZhbHVlIC49ICggJHRoaXMtPnZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlID8gJHRoaXMtPnZhbHVlLT50b0NTUygpIDogJHRoaXMtPnZhbHVlICk7CgkJfQoKCQlyZXR1cm4gJ1snIC4gJHZhbHVlIC4gJ10nOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Call.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjQ2FsbC5wcm90b3R5cGUKICovCmNsYXNzIExlc3NfVHJlZV9DYWxsIGV4dGVuZHMgTGVzc19UcmVlIHsKCS8qKiBAdmFyIHN0cmluZyAqLwoJcHVibGljICRuYW1lOwoJLyoqIEB2YXIgTGVzc19UcmVlW10gKi8KCXB1YmxpYyAkYXJnczsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkY2FsYzsKCS8qKiBAdmFyIGludCAqLwoJcHVibGljICRpbmRleDsKCS8qKiBAdmFyIGFycmF5fG51bGwgKi8KCXB1YmxpYyAkY3VycmVudEZpbGVJbmZvOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJG5hbWUsICRhcmdzLCAkaW5kZXgsICRjdXJyZW50RmlsZUluZm8gPSBudWxsICkgewoJCSR0aGlzLT5uYW1lID0gJG5hbWU7CgkJJHRoaXMtPmFyZ3MgPSAkYXJnczsKCQkkdGhpcy0+Y2FsYyA9ICRuYW1lID09PSAnY2FsYyc7CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICkgewoJCSR0aGlzLT5hcmdzID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoICR0aGlzLT5hcmdzICk7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI2Z1bmN0aW9uQ2FsbGVyLnByb3RvdHlwZS5jYWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gZnVuY3Rpb25DYWxsZXIoICRmdW5jdGlvbiwgYXJyYXkgJGFyZ3VtZW50cywgJGVudiwgJGV2YWxBcmdzICkgewoJCS8vIFRoaXMgY29kZSBpcyB0ZXJyaWJsZSBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkIGFzIHBlciB0aGlzIGlzc3VlLi4uCgkJLy8gaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMjQ3NwoJCSRmaWx0ZXJlZCA9IFtdOwoKCQlpZiAoICRldmFsQXJncyAhPT0gZmFsc2UgKSB7CgkJCWZvcmVhY2ggKCAkYXJndW1lbnRzIGFzICRhICkgewoJCQkJJGZpbHRlcmVkW10gPSAkYS0+Y29tcGlsZSggJGVudiApOwoJCQl9CgkJCSRhcmd1bWVudHMgPSAkZmlsdGVyZWQ7CgkJCSRmaWx0ZXJlZCA9IFtdOwoJCX0KCgkJZm9yZWFjaCAoICRhcmd1bWVudHMgYXMgJGFyZ3VtZW50ICkgewoJCQlpZiAoICRhcmd1bWVudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db21tZW50ICkgewoJCQkJY29udGludWU7CgkJCX0KCQkJJGZpbHRlcmVkW10gPSAkYXJndW1lbnQ7CgkJfQoJCWZvcmVhY2ggKCAkZmlsdGVyZWQgYXMgJGluZGV4ID0+ICRhcmd1bWVudCApIHsKCQkJaWYgKCAkYXJndW1lbnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiApIHsKCQkJCSRmaWx0ZXJlZFskaW5kZXhdID0gJGFyZ3VtZW50LT5tYXBUb0Z1bmN0aW9uQ2FsbEFyZ3VtZW50KCk7CgkJCX0KCQl9CgoJCXJldHVybiAkZnVuY3Rpb24oIC4uLiRmaWx0ZXJlZCApOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfRW52aXJvbm1lbnQgJGVudgoJICogQHJldHVybiB2b2lkCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gZXhpdENhbGMoICRlbnYsICRjdXJyZW50TWF0aENvbnRleHQgKSB7CgkJaWYgKCAkdGhpcy0+Y2FsYyB8fCAkZW52LT5pbkNhbGMgKSB7CgkJCSRlbnYtPmV4aXRDYWxjKCk7CgkJfQoJCSRlbnYtPm1hdGhPbiA9ICRjdXJyZW50TWF0aENvbnRleHQ7Cgl9CgoJLy8KCS8vIFdoZW4gZXZhbHVhdGluZyBhIGZ1bmN0aW9uIGNhbGwsCgkvLyB3ZSBlaXRoZXIgZmluZCB0aGUgZnVuY3Rpb24gaW4gTGVzc19GdW5jdGlvbnMsCgkvLyBpbiB3aGljaCBjYXNlIHdlIGNhbGwgaXQsIHBhc3NpbmcgdGhlIGV2YWx1YXRlZCBhcmd1bWVudHMsCgkvLyBvciB3ZSBzaW1wbHkgcHJpbnQgaXQgb3V0IGFzIGl0IGxpdGVyYWwgQ1NTLgoJLy8KCS8vIFRoZSByZWFzb24gd2h5IHdlIGNvbXBpbGUgdGhlIGFyZ3VtZW50cywgaXMgaW4gdGhlIGNhc2Ugb25lCgkvLyBvZiB0aGVtIGlzIGEgTEVTUyB2YXJpYWJsZSB0aGF0IG9ubHkgUEhQIGtub3dzIHRoZSB2YWx1ZSBvZiwKCS8vIGxpa2U6IGBzYXR1cmF0ZShAbXljb2xvcilgLgoJLy8gVGhlIGZ1bmN0aW9uIHNob3VsZCByZWNlaXZlIHRoZSB2YWx1ZSwgbm90IHRoZSB2YXJpYWJsZS4KCS8vIFRPRE8gbGVzcy5qcyMzLjEzLjEgcHJvdmlkZSBiZXR0ZXIgcGFyaXR5IHdpdGggdXBzdHJlYW0uCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkvKioKCQkgKiBUdXJuIG9mZiBtYXRoIGZvciBjYWxjKCksIGFuZCBzd2l0Y2ggYmFjayBvbiBmb3IgZXZhbHVhdGluZyBuZXN0ZWQgZnVuY3Rpb25zCgkJICovCgkJJGN1cnJlbnRNYXRoQ29udGV4dCA9ICRlbnYtPm1hdGhPbjsKCQkkZW52LT5tYXRoT24gPSAhJHRoaXMtPmNhbGM7CgkJJGV2YWxBcmdzID0gbnVsbDsKCgkJaWYgKCAkdGhpcy0+Y2FsYyB8fCAkZW52LT5pbkNhbGMgKSB7CgkJCSRlbnYtPmVudGVyQ2FsYygpOwoJCX0KCQkkbmFtZUxDID0gc3RydG9sb3dlciggJHRoaXMtPm5hbWUgKTsKCgkJJGFyZ3MgPSBbXTsKCgkJc3dpdGNoICggJG5hbWVMQyApIHsKCQkJY2FzZSAnJSc6CgkJCQkkbmFtZUxDID0gJ19wZXJjZW50JzsKCQkJCWJyZWFrOwoJCQljYXNlICdnZXQtdW5pdCc6CgkJCQkkbmFtZUxDID0gJ2dldHVuaXQnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2RhdGEtdXJpJzoKCQkJCSRuYW1lTEMgPSAnZGF0YXVyaSc7CgkJCQlicmVhazsKCQkJY2FzZSAnc3ZnLWdyYWRpZW50JzoKCQkJCSRuYW1lTEMgPSAnc3ZnZ3JhZGllbnQnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2ltYWdlLXNpemUnOgoJCQkJJG5hbWVMQyA9ICdpbWFnZXNpemUnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2ltYWdlLXdpZHRoJzoKCQkJCSRuYW1lTEMgPSAnaW1hZ2V3aWR0aCc7CgkJCQlicmVhazsKCQkJY2FzZSAnaW1hZ2UtaGVpZ2h0JzoKCQkJCSRuYW1lTEMgPSAnaW1hZ2VoZWlnaHQnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2lmJzoKCQkJCSRldmFsQXJncyA9IGZhbHNlOwoJCQkJYnJlYWs7CgkJfQoKCQkkcmVzdWx0ID0gbnVsbDsKCQlpZiAoICRuYW1lTEMgPT09ICdkZWZhdWx0JyApIHsKCQkJJHJlc3VsdCA9IExlc3NfVHJlZV9EZWZhdWx0RnVuYzo6Y29tcGlsZSgpOwoJCX0gZWxzZSB7CgkJCSRmdW5jID0gbnVsbDsKCQkJJGZ1bmN0aW9ucyA9IG5ldyBMZXNzX0Z1bmN0aW9ucyggJGVudiwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCQkkZnVuY0J1aWx0aW4gPSBbICRmdW5jdGlvbnMsICRuYW1lTEMgXTsKCQkJLy8gQXZvaWQgbWV0aG9kX2V4aXN0cygpIGFzIHRoYXQgY29uc2lkZXJzIHByaXZhdGUgdXRpbGl0eSBmdW5jdGlvbnMgdG9vCgkJCWlmICggaXNfY2FsbGFibGUoICRmdW5jQnVpbHRpbiApICkgewoJCQkJJGZ1bmMgPSAkZnVuY0J1aWx0aW47CgkJCX0gZWxzZWlmICggaXNzZXQoICRlbnYtPmZ1bmN0aW9uc1skbmFtZUxDXSApICYmIGlzX2NhbGxhYmxlKCAkZW52LT5mdW5jdGlvbnNbJG5hbWVMQ10gKSApIHsKCQkJCSRmdW5jID0gJGVudi0+ZnVuY3Rpb25zWyRuYW1lTENdOwoJCQl9CgkJCS8vIElmIHRoZSBmdW5jdGlvbiBuYW1lIGlzbid0IGtub3duIHRvIExFU1MsIG91dHB1dCBpdCB1bmNoYW5nZWQgYXMgQ1NTLgoJCQlpZiAoICRmdW5jICkgewoJCQkJdHJ5IHsKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPmZ1bmN0aW9uQ2FsbGVyKCAkZnVuYywgJHRoaXMtPmFyZ3MsICRlbnYsICRldmFsQXJncyApOwoJCQkJCSR0aGlzLT5leGl0Q2FsYyggJGVudiwgJGN1cnJlbnRNYXRoQ29udGV4dCApOwoKCQkJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgKSB7CgkJCQkJLy8gUHJlc2VydmUgb3JpZ2luYWwgdHJhY2UsIGVzcGVjaWFsbHkgZnJvbSBjdXN0b20gZnVuY3Rpb25zLgoJCQkJCS8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aWtpbWVkaWEvbGVzcy5waHAvaXNzdWVzLzM4CgoJCQkJCS8vIENoZWNrIGlmICdlcnJvciBldmFsdWF0aW5nIGZ1bmN0aW9uJyBpcyB0aGUgc3RhcnQgb2YgdGhlIGVycm9yIG1lc3NhZ2UKCQkJCQkvLyBsZXNzLmpzIGRvZXMgdGhpcyBieSBjaGVja2luZyBpZiBsaW5lIGFuZCBjb2x1bW4gYWxyZWFkeSBzZXQKCQkJCQlpZiAoIHN0cl9zdGFydHNfd2l0aCggJGUtPmdldE1lc3NhZ2UoKSwgJ2Vycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24nICkgKSB7CgkJCQkJCXRocm93ICRlOwoJCQkJCX0KCgkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJCQkJJ2Vycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24gYCcgLiAkdGhpcy0+bmFtZSAuICdgJyAuICggJGUtPmdldE1lc3NhZ2UoKSA/ICc6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpIDogJycgKSwKCQkJCQkJCSRlLAoJCQkJCQkJJHRoaXMtPmluZGV4LAoJCQkJCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbwoJCQkJCQkpOwoJCQkJfQoJCQl9CgkJfQoKCQlpZiAoICRyZXN1bHQgIT09IG51bGwgKSB7CgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQlmb3JlYWNoICggJHRoaXMtPmFyZ3MgYXMgJGEgKSB7CgkJCSRhcmdzW10gPSAkYS0+Y29tcGlsZSggJGVudiApOwoJCX0KCQkkdGhpcy0+ZXhpdENhbGMoICRlbnYsICRjdXJyZW50TWF0aENvbnRleHQgKTsKCgkJcmV0dXJuIG5ldyBzZWxmKCAkdGhpcy0+bmFtZSwgJGFyZ3MsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPm5hbWUgLiAnKCcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCSRhcmdzX2xlbiA9IGNvdW50KCAkdGhpcy0+YXJncyApOwoJCWZvciAoICRpID0gMDsgJGkgPCAkYXJnc19sZW47ICRpKysgKSB7CgkJCSR0aGlzLT5hcmdzWyRpXS0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJCWlmICggJGkgKyAxIDwgJGFyZ3NfbGVuICkgewoJCQkJJG91dHB1dC0+YWRkKCAnLCAnICk7CgkJCX0KCQl9CgoJCSRvdXRwdXQtPmFkZCggJyknICk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Color.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjQ29sb3IucHJvdG90eXBlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQ29sb3IgZXh0ZW5kcyBMZXNzX1RyZWUgewoJLyoqIEB2YXIgYXJyYXk8aW50fGZsb2F0PiAqLwoJcHVibGljICRyZ2I7CgkvKiogQHZhciBpbnQgKi8KCXB1YmxpYyAkYWxwaGE7CgkvKiogQHZhciBudWxsfHN0cmluZyAqLwoJcHVibGljICR2YWx1ZTsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRyZ2IsICRhID0gbnVsbCwgP3N0cmluZyAkb3JpZ2luYWxGb3JtID0gbnVsbCApIHsKCQlpZiAoIGlzX2FycmF5KCAkcmdiICkgKSB7CgkJCSR0aGlzLT5yZ2IgPSAkcmdiOwoJCX0gZWxzZWlmICggc3RybGVuKCAkcmdiICkgPj0gNiApIHsKCQkJJHRoaXMtPnJnYiA9IFtdOwoJCQlmb3JlYWNoICggc3RyX3NwbGl0KCAkcmdiLCAyICkgYXMgJGkgPT4gJGMgKSB7CgkJCQlpZiAoICRpIDwgMyApIHsKCQkJCQkkdGhpcy0+cmdiW10gPSBoZXhkZWMoICRjICk7CgkJCQl9IGVsc2UgewoJCQkJCSR0aGlzLT5hbHBoYSA9IGhleGRlYyggJGMgKSAvIDI1NTsKCQkJCX0KCQkJfQoJCX0gZWxzZSB7CgkJCSR0aGlzLT5yZ2IgPSBbXTsKCQkJZm9yZWFjaCAoIHN0cl9zcGxpdCggJHJnYiwgMSApIGFzICRpID0+ICRjICkgewoJCQkJaWYgKCAkaSA8IDMgKSB7CgkJCQkJJHRoaXMtPnJnYltdID0gaGV4ZGVjKCAkYyAuICRjICk7CgkJCQl9IGVsc2UgewoJCQkJCSR0aGlzLT5hbHBoYSA9IGhleGRlYyggJGMgLiAkYyApIC8gMjU1OwoJCQkJfQoJCQl9CgkJfQoJCSR0aGlzLT5hbHBoYSA/Pz0gKCBpc19udW1lcmljKCAkYSApID8gJGEgOiAxICk7CgoJCWlmICggJG9yaWdpbmFsRm9ybSAhPT0gbnVsbCApIHsKCQkJJHRoaXMtPnZhbHVlID0gJG9yaWdpbmFsRm9ybTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGx1bWEoKSB7CgkJJHIgPSAkdGhpcy0+cmdiWzBdIC8gMjU1OwoJCSRnID0gJHRoaXMtPnJnYlsxXSAvIDI1NTsKCQkkYiA9ICR0aGlzLT5yZ2JbMl0gLyAyNTU7CgoJCSRyID0gKCAkciA8PSAwLjAzOTI4ICkgPyAkciAvIDEyLjkyIDogcG93KCAoICggJHIgKyAwLjA1NSApIC8gMS4wNTUgKSwgMi40ICk7CgkJJGcgPSAoICRnIDw9IDAuMDM5MjggKSA/ICRnIC8gMTIuOTIgOiBwb3coICggKCAkZyArIDAuMDU1ICkgLyAxLjA1NSApLCAyLjQgKTsKCQkkYiA9ICggJGIgPD0gMC4wMzkyOCApID8gJGIgLyAxMi45MiA6IHBvdyggKCAoICRiICsgMC4wNTUgKSAvIDEuMDU1ICksIDIuNCApOwoKCQlyZXR1cm4gMC4yMTI2ICogJHIgKyAwLjcxNTIgKiAkZyArIDAuMDcyMiAqICRiOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnRvQ1NTKCkgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9DU1MoICRkb05vdENvbXByZXNzID0gZmFsc2UgKSB7CgkJJGNvbXByZXNzID0gTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICYmICEkZG9Ob3RDb21wcmVzczsKCQkkYWxwaGEgPSAkdGhpcy0+ZnJvdW5kKCAkdGhpcy0+YWxwaGEgKTsKCgkJLy8gSWYgd2UgaGF2ZSBhbHBoYSB0cmFuc3BhcmVuY3kgb3RoZXIgdGhhbiAxLjAsIHRoZSBvbmx5IHdheSB0byByZXByZXNlbnQgaXQKCQkvLyBpcyB2aWEgcmdiYSgpLiBPdGhlcndpc2UsIHdlIHVzZSB0aGUgaGV4IHJlcHJlc2VudGF0aW9uLAoJCS8vIHdoaWNoIGhhcyBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGJyb3dzZXJzLgoJCS8vIFZhbHVlcyBhcmUgY2FwcGVkIGJldHdlZW4gYDBgIGFuZCBgMjU1YCwgcm91bmRlZCBhbmQgemVyby1wYWRkZWQuCgkJJGNvbG9yRnVuY3Rpb24gPSBudWxsOwoJCSRhcmdzID0gW107CgkJaWYgKCAkdGhpcy0+dmFsdWUgKSB7CgkJCWlmICggc3RycG9zKCAkdGhpcy0+dmFsdWUsICdyZ2InICkgPT09IDAgKSB7CgkJCQlpZiAoICRhbHBoYSA8IDEgKSB7CgkJCQkJJGNvbG9yRnVuY3Rpb24gPSAncmdiYSc7CgoJCQkJfQoJCQl9IGVsc2VpZiAoIHN0cnBvcyggJHRoaXMtPnZhbHVlLCAnaHNsJyApID09PSAwICkgewoJCQkJaWYgKCAkYWxwaGEgPCAxICkgewoJCQkJCSRjb2xvckZ1bmN0aW9uID0gJ2hzbGEnOwoJCQkJfSBlbHNlIHsKCQkJCQkkY29sb3JGdW5jdGlvbiA9ICdoc2wnOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJcmV0dXJuICR0aGlzLT52YWx1ZTsKCQkJfQoKCQl9IGVsc2UgewoJCQlpZiAoICRhbHBoYSA8IDEgKSB7CgkJCQkkY29sb3JGdW5jdGlvbiA9ICdyZ2JhJzsKCQkJfQoJCX0KCgkJc3dpdGNoICggJGNvbG9yRnVuY3Rpb24gKSB7CgkJCWNhc2UgJ3JnYmEnOgoJCQkJZm9yZWFjaCAoICR0aGlzLT5yZ2IgYXMgJGMgKSB7CgkJCQkJJGFyZ3NbXSA9ICR0aGlzLT5jbGFtcCggcm91bmQoICRjICksIDI1NSApOwoJCQkJfQoJCQkJJGFyZ3NbXSA9ICR0aGlzLT5jbGFtcCggJGFscGhhLCAxICk7CgkJCQlicmVhazsKCQkJY2FzZSAnaHNsYSc6CgkJCQkkYXJnc1tdID0gJHRoaXMtPmNsYW1wKCAkYWxwaGEsIDEgKTsKCQkJCS8vIGZhbGwgdGhyb3VnaAoJCQljYXNlICdoc2wnOgoJCQkJJGNvbG9yID0gJHRoaXMtPnRvSFNMKCk7CgkJCQkkYXJncyA9IFsgJHRoaXMtPmZyb3VuZCggJGNvbG9yWyJoIl0gKSwKCQkJCQkkdGhpcy0+ZnJvdW5kKCAkY29sb3JbInMiXSAqIDEwMCApIC4gIiUiLAoJCQkJCSR0aGlzLT5mcm91bmQoICRjb2xvclsibCJdICogMTAwICkgLiAiJSIsCgkJCQkJLi4uJGFyZ3MKCQkJCV07CgoJCX0KCQlpZiAoICRjb2xvckZ1bmN0aW9uICkgewoJCQkkZ2x1ZSA9ICggJGNvbXByZXNzID8gJywnIDogJywgJyApOwoJCQlyZXR1cm4gJGNvbG9yRnVuY3Rpb24gLiAiKCIgLiBpbXBsb2RlKCAkZ2x1ZSwgJGFyZ3MgKSAuICIpIjsKCQl9CgoJCSRjb2xvciA9ICR0aGlzLT50b1JHQigpOwoJCWlmICggJGNvbXByZXNzICkgewoJCQkvLyBDb252ZXJ0IGNvbG9yIHRvIHNob3J0IGZvcm1hdAoJCQlpZiAoICRjb2xvclsxXSA9PT0gJGNvbG9yWzJdICYmICRjb2xvclszXSA9PT0gJGNvbG9yWzRdICYmICRjb2xvcls1XSA9PT0gJGNvbG9yWzZdICkgewoJCQkJJGNvbG9yID0gJyMnIC4gJGNvbG9yWzFdIC4gJGNvbG9yWzNdIC4gJGNvbG9yWzVdOwoJCQl9CgkJfQoJCXJldHVybiAkY29sb3I7Cgl9CgoJLyoqCgkgKiBPcGVyYXRpb25zIGhhdmUgdG8gYmUgZG9uZSBwZXItY2hhbm5lbCwgaWYgbm90LAoJICogY2hhbm5lbHMgd2lsbCBzcGlsbCBvbnRvIGVhY2ggb3RoZXIuIE9uY2Ugd2UgaGF2ZQoJICogb3VyIHJlc3VsdCwgaW4gdGhlIGZvcm0gb2YgYW4gaW50ZWdlciB0cmlwbGV0LAoJICogd2UgY3JlYXRlIGEgbmV3IENvbG9yIG5vZGUgdG8gaG9sZCB0aGUgcmVzdWx0LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG9wCgkgKiBAcGFyYW0gc2VsZiAkb3RoZXIKCSAqLwoJcHVibGljIGZ1bmN0aW9uIG9wZXJhdGUoICRvcCwgJG90aGVyICkgewoJCSRyZ2IgPSBbXTsKCQkkYWxwaGEgPSAkdGhpcy0+YWxwaGEgKiAoIDEgLSAkb3RoZXItPmFscGhhICkgKyAkb3RoZXItPmFscGhhOwoJCWZvciAoICRjID0gMDsgJGMgPCAzOyAkYysrICkgewoJCQkkcmdiWyRjXSA9ICR0aGlzLT5fb3BlcmF0ZSggJG9wLCAkdGhpcy0+cmdiWyRjXSwgJG90aGVyLT5yZ2JbJGNdICk7CgkJfQoJCXJldHVybiBuZXcgc2VsZiggJHJnYiwgJGFscGhhICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRvUkdCKCkgewoJCXJldHVybiAkdGhpcy0+dG9IZXgoICR0aGlzLT5yZ2IgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9IU0woKSB7CgkJJHIgPSAkdGhpcy0+cmdiWzBdIC8gMjU1OwoJCSRnID0gJHRoaXMtPnJnYlsxXSAvIDI1NTsKCQkkYiA9ICR0aGlzLT5yZ2JbMl0gLyAyNTU7CgkJJGEgPSAkdGhpcy0+YWxwaGE7CgoJCSRtYXggPSBtYXgoICRyLCAkZywgJGIgKTsKCQkkbWluID0gbWluKCAkciwgJGcsICRiICk7CgkJJGwgPSAoICRtYXggKyAkbWluICkgLyAyOwoJCSRkID0gJG1heCAtICRtaW47CgoJCWlmICggJG1heCA9PT0gJG1pbiApIHsKCQkJJGggPSAkcyA9IDA7CgkJfSBlbHNlIHsKCQkJJHMgPSAkbCA+IDAuNSA/ICRkIC8gKCAyIC0gJG1heCAtICRtaW4gKSA6ICRkIC8gKCAkbWF4ICsgJG1pbiApOwoKCQkJc3dpdGNoICggJG1heCApIHsKCQkJCWNhc2UgJHI6CgkJCQkJJGggPSAoICRnIC0gJGIgKSAvICRkICsgKCAkZyA8ICRiID8gNiA6IDAgKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgJGc6CgkJCQkJJGggPSAoICRiIC0gJHIgKSAvICRkICsgMjsKCQkJCQlicmVhazsKCQkJCWNhc2UgJGI6CgkJCQkJJGggPSAoICRyIC0gJGcgKSAvICRkICsgNDsKCQkJCQlicmVhazsKCQkJfQoJCQkkaCAvPSA2OwoJCX0KCQlyZXR1cm4gWyAnaCcgPT4gJGggKiAzNjAsICdzJyA9PiAkcywgJ2wnID0+ICRsLCAnYScgPT4gJGEgXTsKCX0KCgkvLyBBZGFwdGVkIGZyb20gaHR0cDovL21qaWphY2tzb24uY29tLzIwMDgvMDIvcmdiLXRvLWhzbC1hbmQtcmdiLXRvLWhzdi1jb2xvci1tb2RlbC1jb252ZXJzaW9uLWFsZ29yaXRobXMtaW4tamF2YXNjcmlwdAoJcHVibGljIGZ1bmN0aW9uIHRvSFNWKCkgewoJCSRyID0gJHRoaXMtPnJnYlswXSAvIDI1NTsKCQkkZyA9ICR0aGlzLT5yZ2JbMV0gLyAyNTU7CgkJJGIgPSAkdGhpcy0+cmdiWzJdIC8gMjU1OwoJCSRhID0gJHRoaXMtPmFscGhhOwoKCQkkbWF4ID0gbWF4KCAkciwgJGcsICRiICk7CgkJJG1pbiA9IG1pbiggJHIsICRnLCAkYiApOwoKCQkkdiA9ICRtYXg7CgoJCSRkID0gJG1heCAtICRtaW47CgkJaWYgKCAkbWF4ID09PSAwICkgewoJCQkkcyA9IDA7CgkJfSBlbHNlIHsKCQkJJHMgPSAkZCAvICRtYXg7CgkJfQoKCQlpZiAoICRtYXggPT09ICRtaW4gKSB7CgkJCSRoID0gMDsKCQl9IGVsc2UgewoJCQlzd2l0Y2ggKCAkbWF4ICkgewoJCQkJY2FzZSAkcjoKCQkJCQkkaCA9ICggJGcgLSAkYiApIC8gJGQgKyAoICRnIDwgJGIgPyA2IDogMCApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAkZzoKCQkJCQkkaCA9ICggJGIgLSAkciApIC8gJGQgKyAyOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAkYjoKCQkJCQkkaCA9ICggJHIgLSAkZyApIC8gJGQgKyA0OwoJCQkJCWJyZWFrOwoJCQl9CgkJCSRoIC89IDY7CgkJfQoJCXJldHVybiBbICdoJyA9PiAkaCAqIDM2MCwgJ3MnID0+ICRzLCAndicgPT4gJHYsICdhJyA9PiAkYSBdOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0FSR0IoKSB7CgkJJGFyZ2IgPSBhcnJheV9tZXJnZSggKGFycmF5KUxlc3NfUGFyc2VyOjpyb3VuZCggJHRoaXMtPmFscGhhICogMjU1ICksICR0aGlzLT5yZ2IgKTsKCQlyZXR1cm4gJHRoaXMtPnRvSGV4KCAkYXJnYiApOwoJfQoKCS8qKgoJICogQHBhcmFtIG1peGVkICR4CgkgKiBAcmV0dXJuIGludHxudWxsCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI0NvbG9yLnByb3RvdHlwZS5jb21wYXJlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCAkeCApIHsKCQlyZXR1cm4gKCAkeCBpbnN0YW5jZW9mIHNlbGYgJiYKCQkJJHgtPnJnYlswXSA9PT0gJHRoaXMtPnJnYlswXSAmJgoJCQkkeC0+cmdiWzFdID09PSAkdGhpcy0+cmdiWzFdICYmCgkJCSR4LT5yZ2JbMl0gPT09ICR0aGlzLT5yZ2JbMl0gJiYKCQkJJHgtPmFscGhhID09PSAkdGhpcy0+YWxwaGEgKSA/IDAgOiBudWxsOwoJfQoKCS8qKgoJICogQHBhcmFtIGludHxmbG9hdCAkdmFsCgkgKiBAcGFyYW0gaW50ICRtYXgKCSAqIEByZXR1cm4gaW50fGZsb2F0CgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI0NvbG9yLnByb3RvdHlwZQoJICovCglwcml2YXRlIGZ1bmN0aW9uIGNsYW1wKCAkdmFsLCAkbWF4ICkgewoJCXJldHVybiBtaW4oIG1heCggJHZhbCwgMCApLCAkbWF4ICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRvSGV4KCAkdiApIHsKCQkkcmV0ID0gJyMnOwoJCWZvcmVhY2ggKCAkdiBhcyAkYyApIHsKCQkJJGMgPSAkdGhpcy0+Y2xhbXAoIExlc3NfUGFyc2VyOjpyb3VuZCggJGMgKSwgMjU1ICk7CgkJCWlmICggJGMgPCAxNiApIHsKCQkJCSRyZXQgLj0gJzAnOwoJCQl9CgkJCSRyZXQgLj0gZGVjaGV4KCAkYyApOwoJCX0KCQlyZXR1cm4gJHJldDsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJGtleXdvcmQKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tS2V5d29yZCggJGtleXdvcmQgKSB7CgkJJGMgPSBudWxsOwoJCSRrZXkgPSBzdHJ0b2xvd2VyKCAka2V5d29yZCApOwoKCQlpZiAoIExlc3NfQ29sb3JzOjpoYXNPd25Qcm9wZXJ0eSggJGtleSApICkgewoJCQkvLyBkZXRlY3QgbmFtZWQgY29sb3IKCQkJJGMgPSBuZXcgc2VsZiggc3Vic3RyKCBMZXNzX0NvbG9yczo6Y29sb3IoICRrZXkgKSwgMSApICk7CgkJfSBlbHNlaWYgKCAka2V5ID09PSAndHJhbnNwYXJlbnQnICkgewoJCQkkYyA9IG5ldyBzZWxmKCBbIDAsIDAsIDAgXSwgMCApOwoJCX0KCgkJaWYgKCAkYyBpbnN0YW5jZW9mIHNlbGYgKSB7CgkJCSRjLT52YWx1ZSA9ICRrZXl3b3JkOwoJCQlyZXR1cm4gJGM7CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Comment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0yLjUuMy5qcyNDb21tZW50LnByb3RvdHlwZQogKi8KY2xhc3MgTGVzc19UcmVlX0NvbW1lbnQgZXh0ZW5kcyBMZXNzX1RyZWUgaW1wbGVtZW50cyBMZXNzX1RyZWVfSGFzVmFsdWVQcm9wZXJ0eSB7CgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkdmFsdWU7CgkvKiogQHZhciBib29sICovCglwdWJsaWMgJGlzTGluZUNvbW1lbnQ7CgkvKiogQHZhciBib29sfG51bGwgKi8KCXB1YmxpYyAkaXNSZWZlcmVuY2VkOwoJLyoqIEB2YXIgYXJyYXl8bnVsbCAqLwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkdmFsdWUsICRpc0xpbmVDb21tZW50LCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApIHsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CgkJJHRoaXMtPmlzTGluZUNvbW1lbnQgPSAoYm9vbCkkaXNMaW5lQ29tbWVudDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCS8vIE5PVEU6IFNraXAgZGVidWdJbmZvIGhhbmRsaW5nIChub3QgaW1wbGVtZW50ZWQpCgoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnZhbHVlICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzU2lsZW50KCkgewoJCSRpc1JlZmVyZW5jZSA9ICggJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyAmJiBpc3NldCggJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gKSAmJiAoICFpc3NldCggJHRoaXMtPmlzUmVmZXJlbmNlZCApIHx8ICEkdGhpcy0+aXNSZWZlcmVuY2VkICkgKTsKCQkkaXNDb21wcmVzc2VkID0gTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICYmICggJHRoaXMtPnZhbHVlWzJdID8/ICcnICkgIT09ICIhIjsKCQlyZXR1cm4gJHRoaXMtPmlzTGluZUNvbW1lbnQgfHwgJGlzUmVmZXJlbmNlIHx8ICRpc0NvbXByZXNzZWQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hcmtSZWZlcmVuY2VkKCkgewoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSB0cnVlOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Condition.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQ29uZGl0aW9uIGV4dGVuZHMgTGVzc19UcmVlIHsKCgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkb3A7CgkvKiogQHZhciBMZXNzX1RyZWUgKi8KCXB1YmxpYyAkbHZhbHVlOwoJLyoqIEB2YXIgTGVzc19UcmVlICovCglwdWJsaWMgJHJ2YWx1ZTsKCS8qKiBAdmFyIGludCAqLwoJcHVibGljICRpbmRleDsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkbmVnYXRlOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJG9wLCAkbCwgJHIsICRpID0gMCwgJG5lZ2F0ZSA9IGZhbHNlICkgewoJCSR0aGlzLT5vcCA9IHRyaW0oICRvcCApOwoJCSR0aGlzLT5sdmFsdWUgPSAkbDsKCQkkdGhpcy0+cnZhbHVlID0gJHI7CgkJJHRoaXMtPmluZGV4ID0gJGk7CgkJJHRoaXMtPm5lZ2F0ZSA9ICRuZWdhdGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKSB7CgkJJHRoaXMtPmx2YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPmx2YWx1ZSApOwoJCSR0aGlzLT5ydmFsdWUgPSAkdmlzaXRvci0+dmlzaXRPYmooICR0aGlzLT5ydmFsdWUgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50ICRlbnYKCSAqIEByZXR1cm4gYm9vbAoJICogQHNlZSBsZXNzLTIuNS4zLmpzI0NvbmRpdGlvbi5wcm90b3R5cGUuZXZhbAoJICovCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkkYSA9ICR0aGlzLT5sdmFsdWUtPmNvbXBpbGUoICRlbnYgKTsKCQkkYiA9ICR0aGlzLT5ydmFsdWUtPmNvbXBpbGUoICRlbnYgKTsKCgkJc3dpdGNoICggJHRoaXMtPm9wICkgewoJCQljYXNlICdhbmQnOgoJCQkJJHJlc3VsdCA9ICRhICYmICRiOwoJCQkJYnJlYWs7CgoJCQljYXNlICdvcic6CgkJCQkkcmVzdWx0ID0gJGEgfHwgJGI7CgkJCQlicmVhazsKCgkJCWRlZmF1bHQ6CgkJCQkkcmVzID0gTGVzc19UcmVlOjpub2RlQ29tcGFyZSggJGEsICRiICk7CgkJCQkvLyBJbiBKUywgc3dpdGNoKHVuZGVmaW5lZCkgd2l0aCAtMSwwLC0xLGRlZmF1bHRzIGdvZXMgdG8gYGRlZmF1bHRgLgoJCQkJLy8gSW4gUEhQLCBzd2l0Y2gobnVsbCkgd291bGQgZ28gdG8gY2FzZSAwLiBVc2UgaWYvZWxzZSBpbnN0ZWFkLgoJCQkJaWYgKCAkcmVzID09PSAtMSApIHsKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPm9wID09PSAnPCcgfHwgJHRoaXMtPm9wID09PSAnPTwnIHx8ICR0aGlzLT5vcCA9PT0gJzw9JzsKCQkJCX0gZWxzZWlmICggJHJlcyA9PT0gMCApIHsKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPm9wID09PSAnPScgfHwgJHRoaXMtPm9wID09PSAnPj0nIHx8ICR0aGlzLT5vcCA9PT0gJz08JyB8fCAkdGhpcy0+b3AgPT09ICc8PSc7CgkJCQl9IGVsc2VpZiAoICRyZXMgPT09IDEgKSB7CgkJCQkJJHJlc3VsdCA9ICR0aGlzLT5vcCA9PT0gJz4nIHx8ICR0aGlzLT5vcCA9PT0gJz49JzsKCQkJCX0gZWxzZSB7CgkJCQkJLy8gbnVsbCwgTkFOCgkJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJfQoJCX0KCgkJcmV0dXJuICR0aGlzLT5uZWdhdGUgPyAhJHJlc3VsdCA6ICRyZXN1bHQ7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Declaration.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjRGVjbGFyYXRpb24ucHJvdG90eXBlCiAqIEB0b2RvIGNoZWNrIGZvciBmZWF0dXJlIHBhcml0eSB3aXRoIDMuMTMuMQogKi8KY2xhc3MgTGVzc19UcmVlX0RlY2xhcmF0aW9uIGV4dGVuZHMgTGVzc19UcmVlIGltcGxlbWVudHMgTGVzc19UcmVlX0hhc1ZhbHVlUHJvcGVydHkgewoKCS8qKiBAdmFyIHN0cmluZ3xhcnJheTxMZXNzX1RyZWVfS2V5d29yZHxMZXNzX1RyZWVfVmFyaWFibGU+ICovCglwdWJsaWMgJG5hbWU7CgkvKiogQHZhciBMZXNzX1RyZWVbXXxMZXNzX1RyZWVfQW5vbnltb3VzICovCglwdWJsaWMgJHZhbHVlOwoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJGltcG9ydGFudDsKCS8qKiBAdmFyIG51bGx8ZmFsc2V8c3RyaW5nICovCglwdWJsaWMgJG1lcmdlOwoJLyoqIEB2YXIgaW50fG51bGwgKi8KCXB1YmxpYyAkaW5kZXg7CgkvKiogQHZhciBib29sICovCglwdWJsaWMgJGlubGluZTsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkdmFyaWFibGU7CgkvKiogQHZhciBhcnJheXxudWxsICovCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCgkvKioKCSAqIEluIHRoZSB1cHN0cmVhbSBgcGFyc2VkYCBpcyBzdG9yZWQgaW4gYE5vZGVgLCBidXQgTGVzc19UcmVlX0RlY2xhcmF0aW9uIGlzIHRoZSBvbmx5IHBsYWNlCgkgKiB0aGF0IG1ha2UgdXNlIG9mIGl0LgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNOb2RlLnBhcnNlZAoJICogQHZhciBib29sCgkgKi8KCXB1YmxpYyAkcGFyc2VkID0gZmFsc2U7CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5PExlc3NfVHJlZV9LZXl3b3JkfExlc3NfVHJlZV9WYXJpYWJsZT4gJG5hbWUKCSAqIEBwYXJhbSBMZXNzX1RyZWV8c3RyaW5nfG51bGwgJHZhbHVlCgkgKiBAcGFyYW0gbnVsbHxmYWxzZXxzdHJpbmcgJGltcG9ydGFudAoJICogQHBhcmFtIG51bGx8ZmFsc2V8c3RyaW5nICRtZXJnZQoJICogQHBhcmFtIGludHxudWxsICRpbmRleAoJICogQHBhcmFtIGFycmF5fG51bGwgJGN1cnJlbnRGaWxlSW5mbwoJICogQHBhcmFtIGJvb2wgJGlubGluZQoJICogQHBhcmFtIGJvb2x8bnVsbCAkdmFyaWFibGUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAoJCSRuYW1lLAoJCSR2YWx1ZSA9IG51bGwsCgkJJGltcG9ydGFudCA9IG51bGwsCgkJJG1lcmdlID0gbnVsbCwKCQkkaW5kZXggPSBudWxsLAoJCSRjdXJyZW50RmlsZUluZm8gPSBudWxsLAoJCSRpbmxpbmUgPSBmYWxzZSwKCQkkdmFyaWFibGUgPSBudWxsCgkpIHsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCSR0aGlzLT52YWx1ZSA9ICggJHZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlICkKCQkJPyAkdmFsdWUKCQkJOiBuZXcgTGVzc19UcmVlX1ZhbHVlKCBbICR2YWx1ZSA/IG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAkdmFsdWUgKSA6IG51bGwgXSApOwoJCSR0aGlzLT5pbXBvcnRhbnQgPSAkaW1wb3J0YW50ID8gJyAnIC4gdHJpbSggJGltcG9ydGFudCApIDogJyc7CgkJJHRoaXMtPm1lcmdlID0gJG1lcmdlOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCQkkdGhpcy0+aW5saW5lID0gJGlubGluZTsKCQkkdGhpcy0+dmFyaWFibGUgPSAkdmFyaWFibGUgPz8gKCBpc19zdHJpbmcoICRuYW1lICkgJiYgJG5hbWVbMF0gPT09ICdAJyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICkgewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnZhbHVlICk7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjUnVsZS5wcm90b3R5cGUuZ2VuQ1NTCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKSB7CgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+bmFtZSAuICggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddID8gJzonIDogJzogJyApLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+aW5kZXggKTsKCQl0cnkgewoJCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoKCQl9IGNhdGNoICggTGVzc19FeGNlcHRpb25fUGFyc2VyICRlICkgewoJCQkkZS0+aW5kZXggPSAkdGhpcy0+aW5kZXg7CgkJCSRlLT5jdXJyZW50RmlsZSA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm87CgkJCXRocm93ICRlOwoJCX0KCQkkb3V0cHV0LT5hZGQoCgkJCSR0aGlzLT5pbXBvcnRhbnQgLiAoICggJHRoaXMtPmlubGluZSB8fCAoIExlc3NfRW52aXJvbm1lbnQ6OiRsYXN0UnVsZSAmJiBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gKSApID8gIiIgOiAiOyIgKSwKCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywKCQkJJHRoaXMtPmluZGV4CgkJKTsKCX0KCgkvKioKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNSdWxlLnByb3RvdHlwZS5ldmFsCgkgKiBAcGFyYW0gTGVzc19FbnZpcm9ubWVudCAkZW52CgkgKiBAcmV0dXJuIHNlbGYKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJJHZhcmlhYmxlID0gJHRoaXMtPnZhcmlhYmxlOwoJCSRuYW1lID0gJHRoaXMtPm5hbWU7CgkJaWYgKCBpc19hcnJheSggJG5hbWUgKSApIHsKCQkJLy8gZXhwYW5kICdwcmltaXRpdmUnIG5hbWUgZGlyZWN0bHkgdG8gZ2V0CgkJCS8vIHRoaW5ncyBmYXN0ZXIgKH4xMCUgZm9yIGJlbmNobWFyay5sZXNzKToKCQkJaWYgKCBjb3VudCggJG5hbWUgKSA9PT0gMSAmJiAkbmFtZVswXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9LZXl3b3JkICkgewoJCQkJJG5hbWUgPSAkbmFtZVswXS0+dmFsdWU7CgkJCX0gZWxzZSB7CgkJCQkkbmFtZSA9ICR0aGlzLT5Db21waWxlTmFtZSggJGVudiwgJG5hbWUgKTsKCQkJfQoJCQkkdmFyaWFibGUgPSBmYWxzZTsgLy8gbmV2ZXIgdHJlYXQgZXhwYW5kZWQgaW50ZXJwb2xhdGlvbiBhcyBuZXcgdmFyaWFibGUgbmFtZQoJCX0KCgkJJG1hdGhCeXBhc3MgPSBmYWxzZTsKCQkkcHJldk1hdGggPSAkZW52LT5tYXRoOwoJCWlmICggJG5hbWUgPT09ICJmb250IiAmJiAkZW52LT5tYXRoID09PSBMZXNzX0Vudmlyb25tZW50OjpNQVRIX0FMV0FZUyApIHsKCQkJJG1hdGhCeXBhc3MgPSB0cnVlOwoJCQkkZW52LT5tYXRoID0gTGVzc19FbnZpcm9ubWVudDo6TUFUSF9QQVJFTlNfRElWSVNJT047CgkJfQoKCQl0cnkgewoJCQkkZW52LT5pbXBvcnRhbnRTY29wZVtdID0gW107CgkJCSRldmFsZFZhbHVlID0gJHRoaXMtPnZhbHVlLT5jb21waWxlKCAkZW52ICk7CgoJCQlpZiAoICEkdGhpcy0+dmFyaWFibGUgJiYgJGV2YWxkVmFsdWUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0ICkgewoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAiUnVsZXNldHMgY2Fubm90IGJlIGV2YWx1YXRlZCBvbiBhIHByb3BlcnR5LiIsIG51bGwsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCQl9CgoJCQkkaW1wb3J0YW50ID0gJHRoaXMtPmltcG9ydGFudDsKCQkJJGltcG9ydGFudFJlc3VsdCA9IGFycmF5X3BvcCggJGVudi0+aW1wb3J0YW50U2NvcGUgKTsKCgkJCWlmICggISRpbXBvcnRhbnQgJiYgaXNzZXQoICRpbXBvcnRhbnRSZXN1bHRbJ2ltcG9ydGFudCddICkgJiYgJGltcG9ydGFudFJlc3VsdFsnaW1wb3J0YW50J10gKSB7CgkJCQkkaW1wb3J0YW50ID0gJGltcG9ydGFudFJlc3VsdFsnaW1wb3J0YW50J107CgkJCX0KCgkJCSRyZXR1cm4gPSBuZXcgTGVzc19UcmVlX0RlY2xhcmF0aW9uKAoJCQkJJG5hbWUsCgkJCQkkZXZhbGRWYWx1ZSwKCQkJCSRpbXBvcnRhbnQsCgkJCQkkdGhpcy0+bWVyZ2UsCgkJCQkkdGhpcy0+aW5kZXgsCgkJCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvLAoJCQkJJHRoaXMtPmlubGluZSwKCQkJCSR2YXJpYWJsZSwKCQkJKTsKCgkJfSBjYXRjaCAoIExlc3NfRXhjZXB0aW9uX1BhcnNlciAkZSApIHsKCQkJaWYgKCAhaXNfbnVtZXJpYyggJGUtPmluZGV4ICkgKSB7CgkJCQkkZS0+aW5kZXggPSAkdGhpcy0+aW5kZXg7CgkJCQkkZS0+Y3VycmVudEZpbGUgPSAkdGhpcy0+Y3VycmVudEZpbGVJbmZvOwoJCQkJJGUtPmdlbk1lc3NhZ2UoKTsKCQkJfQoJCQl0aHJvdyAkZTsKCQl9CgoJCWlmICggJG1hdGhCeXBhc3MgKSB7CgkJCSRlbnYtPm1hdGggPSAkcHJldk1hdGg7CgkJfQoKCQlyZXR1cm4gJHJldHVybjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gQ29tcGlsZU5hbWUoICRlbnYsICRuYW1lICkgewoJCSRvdXRwdXQgPSBuZXcgTGVzc19PdXRwdXQoKTsKCQlmb3JlYWNoICggJG5hbWUgYXMgJG4gKSB7CgkJCSRuLT5jb21waWxlKCAkZW52ICktPmdlbkNTUyggJG91dHB1dCApOwoJCX0KCQlyZXR1cm4gJG91dHB1dC0+dG9TdHJpbmcoKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbWFrZUltcG9ydGFudCgpIHsKCQlyZXR1cm4gbmV3IHNlbGYoICR0aGlzLT5uYW1lLCAkdGhpcy0+dmFsdWUsICchaW1wb3J0YW50JywgJHRoaXMtPm1lcmdlLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmxpbmUgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbWFyayggJHZhbHVlICkgewoJCWlmICggIWlzX2FycmF5KCAkdGhpcy0+dmFsdWUgKSApIHsKCgkJCWlmICggbWV0aG9kX2V4aXN0cyggJHZhbHVlLCAnbWFya1JlZmVyZW5jZWQnICkgKSB7CgkJCQkkdmFsdWUtPm1hcmtSZWZlcmVuY2VkKCk7CgkJCX0KCQl9IGVsc2UgewoJCQlmb3JlYWNoICggJHRoaXMtPnZhbHVlIGFzICR2ICkgewoJCQkJJHRoaXMtPm1hcmsoICR2ICk7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hcmtSZWZlcmVuY2VkKCkgewoJCWlmICggJHRoaXMtPnZhbHVlICkgewoJCQkkdGhpcy0+bWFyayggJHRoaXMtPnZhbHVlICk7CgkJfQoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/DefaultFunc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGVmYXVsdEZ1bmMgewoKCS8qKiBAdmFyIHN0cmluZ3xudWxsICovCglwcml2YXRlIHN0YXRpYyAkZXJyb3JfOwoJLyoqIEB2YXIgaW50fG51bGwgKi8KCXByaXZhdGUgc3RhdGljICR2YWx1ZV87CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21waWxlKCkgewoJCWlmICggc2VsZjo6JGVycm9yXyApIHsKCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbiggc2VsZjo6JGVycm9yXyApOwoJCX0KCQlpZiAoIHNlbGY6OiR2YWx1ZV8gIT09IG51bGwgKSB7CgkJCXJldHVybiBzZWxmOjokdmFsdWVfID8gbmV3IExlc3NfVHJlZV9LZXl3b3JkKCAndHJ1ZScgKSA6IG5ldyBMZXNzX1RyZWVfS2V5d29yZCggJ2ZhbHNlJyApOwoJCX0KCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbHVlKCAkdiApIHsKCQlzZWxmOjokdmFsdWVfID0gJHY7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlcnJvciggJGUgKSB7CgkJc2VsZjo6JGVycm9yXyA9ICRlOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzZXQoKSB7CgkJc2VsZjo6JHZhbHVlXyA9IHNlbGY6OiRlcnJvcl8gPSBudWxsOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/DetachedRuleset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0IGV4dGVuZHMgTGVzc19UcmVlIHsKCgkvKiogQHZhciBMZXNzX1RyZWVfUnVsZXNldCAqLwoJcHVibGljICRydWxlc2V0OwoJLyoqIEB2YXIgYXJyYXl8bnVsbCAqLwoJcHVibGljICRmcmFtZXM7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkcnVsZXNldCwgJGZyYW1lcyA9IG51bGwgKSB7CgkJJHRoaXMtPnJ1bGVzZXQgPSAkcnVsZXNldDsKCQkkdGhpcy0+ZnJhbWVzID0gJGZyYW1lczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApIHsKCQkkdGhpcy0+cnVsZXNldCA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnJ1bGVzZXQgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQlpZiAoICR0aGlzLT5mcmFtZXMgKSB7CgkJCSRmcmFtZXMgPSAkdGhpcy0+ZnJhbWVzOwoJCX0gZWxzZSB7CgkJCSRmcmFtZXMgPSAkZW52LT5mcmFtZXM7CgkJfQoJCXJldHVybiBuZXcgc2VsZiggJHRoaXMtPnJ1bGVzZXQsICRmcmFtZXMgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY2FsbEV2YWwoICRlbnYgKSB7CgkJaWYgKCAkdGhpcy0+ZnJhbWVzICkgewoJCQlyZXR1cm4gJHRoaXMtPnJ1bGVzZXQtPmNvbXBpbGUoICRlbnYtPmNvcHlFdmFsRW52KCBhcnJheV9tZXJnZSggJHRoaXMtPmZyYW1lcywgJGVudi0+ZnJhbWVzICkgKSApOwoJCX0KCQlyZXR1cm4gJHRoaXMtPnJ1bGVzZXQtPmNvbXBpbGUoICRlbnYgKTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Dimension.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0yLjUuMy5qcyNEaW1lbnNpb24ucHJvdG90eXBlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGltZW5zaW9uIGV4dGVuZHMgTGVzc19UcmVlIGltcGxlbWVudHMgTGVzc19UcmVlX0hhc1ZhbHVlUHJvcGVydHkgewoKCS8qKiBAdmFyIGZsb2F0ICovCglwdWJsaWMgJHZhbHVlOwoJLyoqIEB2YXIgTGVzc19UcmVlX1VuaXQgKi8KCXB1YmxpYyAkdW5pdDsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICR2YWx1ZSwgJHVuaXQgPSBudWxsICkgewoJCSR0aGlzLT52YWx1ZSA9IGZsb2F0dmFsKCAkdmFsdWUgKTsKCgkJaWYgKCAkdW5pdCBpbnN0YW5jZW9mIExlc3NfVHJlZV9Vbml0ICkgewoJCQkkdGhpcy0+dW5pdCA9ICR1bml0OwoJCX0gZWxzZWlmICggJHVuaXQgKSB7CgkJCSR0aGlzLT51bml0ID0gbmV3IExlc3NfVHJlZV9Vbml0KCBbICR1bml0IF0gKTsKCQl9IGVsc2UgewoJCQkkdGhpcy0+dW5pdCA9IG5ldyBMZXNzX1RyZWVfVW5pdCgpOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApIHsKCQkkdGhpcy0+dW5pdCA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnVuaXQgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9Db2xvcigpIHsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvciggWyAkdGhpcy0+dmFsdWUsICR0aGlzLT52YWx1ZSwgJHRoaXMtPnZhbHVlIF0gKTsKCX0KCgkvKioKCSAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQlpZiAoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0VW5pdHMnXSAmJiAhJHRoaXMtPnVuaXQtPmlzU2luZ3VsYXIoKSApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJIk11bHRpcGxlIHVuaXRzIGluIGRpbWVuc2lvbi4gQ29ycmVjdCB0aGUgdW5pdHMgb3IgdXNlIHRoZSB1bml0IGZ1bmN0aW9uLiBCYWQgdW5pdDogIiAuICR0aGlzLT51bml0LT50b1N0cmluZygpCgkJCSk7CgkJfQoKCQkkdmFsdWUgPSAkdGhpcy0+ZnJvdW5kKCAkdGhpcy0+dmFsdWUgKTsKCQkkc3RyVmFsdWUgPSAoc3RyaW5nKSR2YWx1ZTsKCgkJaWYgKCAkdmFsdWUgIT09IDAgJiYgJHZhbHVlIDwgMC4wMDAwMDEgJiYgJHZhbHVlID4gLTAuMDAwMDAxICkgewoJCQkvLyB3b3VsZCBiZSBvdXRwdXQgMWUtNiBldGMuCgkJCSRzdHJWYWx1ZSA9IG51bWJlcl9mb3JtYXQoIChmbG9hdCkkc3RyVmFsdWUsIDEwICk7CgkJCSRzdHJWYWx1ZSA9IHByZWdfcmVwbGFjZSggJy9cLj8wKyQvJywgJycsICRzdHJWYWx1ZSApOwoJCX0KCgkJaWYgKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gKSB7CgkJCS8vIFplcm8gdmFsdWVzIGRvZXNuJ3QgbmVlZCBhIHVuaXQKCQkJaWYgKCAkdmFsdWUgPT09IDAgJiYgJHRoaXMtPnVuaXQtPmlzTGVuZ3RoKCkgKSB7CgkJCQkkb3V0cHV0LT5hZGQoICRzdHJWYWx1ZSApOwoJCQkJcmV0dXJuOwoJCQl9CgoJCQkvLyBGbG9hdCB2YWx1ZXMgZG9lc24ndCBuZWVkIGEgbGVhZGluZyB6ZXJvCgkJCWlmICggJHZhbHVlID4gMCAmJiAkdmFsdWUgPCAxICYmICRzdHJWYWx1ZVswXSA9PT0gJzAnICkgewoJCQkJJHN0clZhbHVlID0gc3Vic3RyKCAkc3RyVmFsdWUsIDEgKTsKCQkJfQoJCX0KCgkJJG91dHB1dC0+YWRkKCAkc3RyVmFsdWUgKTsKCQkkdGhpcy0+dW5pdC0+Z2VuQ1NTKCAkb3V0cHV0ICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT50b0NTUygpOwoJfQoKCS8vIEluIGFuIG9wZXJhdGlvbiBiZXR3ZWVuIHR3byBEaW1lbnNpb25zLAoJLy8gd2UgZGVmYXVsdCB0byB0aGUgZmlyc3QgRGltZW5zaW9uJ3MgdW5pdCwKCS8vIHNvIGAxcHggKyAyZW1gIHdpbGwgeWllbGQgYDNweGAuCgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRvcAoJICogQHBhcmFtIHNlbGYgJG90aGVyCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBvcGVyYXRlKCAkb3AsICRvdGhlciApIHsKCQkkdmFsdWUgPSAkdGhpcy0+X29wZXJhdGUoICRvcCwgJHRoaXMtPnZhbHVlLCAkb3RoZXItPnZhbHVlICk7CgkJJHVuaXQgPSAkdGhpcy0+dW5pdC0+Y2xvbmUoKTsKCgkJaWYgKCAkb3AgPT09ICcrJyB8fCAkb3AgPT09ICctJyApIHsKCQkJaWYgKCAhJHVuaXQtPm51bWVyYXRvciAmJiAhJHVuaXQtPmRlbm9taW5hdG9yICkgewoJCQkJJHVuaXQgPSAkb3RoZXItPnVuaXQtPmNsb25lKCk7CgkJCQlpZiAoICR0aGlzLT51bml0LT5iYWNrdXBVbml0ICkgewoJCQkJCSR1bml0LT5iYWNrdXBVbml0ID0gJHRoaXMtPnVuaXQtPmJhY2t1cFVuaXQ7CgkJCQl9CgkJCX0gZWxzZWlmICggISRvdGhlci0+dW5pdC0+bnVtZXJhdG9yICYmICEkb3RoZXItPnVuaXQtPmRlbm9taW5hdG9yICkgewoJCQkJLy8gZG8gbm90aGluZwoJCQl9IGVsc2UgewoJCQkJJG90aGVyID0gJG90aGVyLT5jb252ZXJ0VG8oICR0aGlzLT51bml0LT51c2VkVW5pdHMoKSApOwoKCQkJCWlmICggTGVzc19QYXJzZXI6OiRvcHRpb25zWydzdHJpY3RVbml0cyddICYmICRvdGhlci0+dW5pdC0+dG9TdHJpbmcoKSAhPT0gJHVuaXQtPnRvQ1NTKCkgKSB7CgkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJCQkiSW5jb21wYXRpYmxlIHVuaXRzLiBDaGFuZ2UgdGhlIHVuaXRzIG9yIHVzZSB0aGUgdW5pdCBmdW5jdGlvbi4gQmFkIHVuaXRzOiAnIiAuCgkJCQkJCQkkdW5pdC0+dG9TdHJpbmcoKSAuICInIGFuZCAiIC4gJG90aGVyLT51bml0LT50b1N0cmluZygpIC4gIicuIgoJCQkJCSk7CgkJCQl9CgoJCQkJJHZhbHVlID0gJHRoaXMtPl9vcGVyYXRlKCAkb3AsICR0aGlzLT52YWx1ZSwgJG90aGVyLT52YWx1ZSApOwoJCQl9CgkJfSBlbHNlaWYgKCAkb3AgPT09ICcqJyApIHsKCQkJJHVuaXQtPm51bWVyYXRvciA9IGFycmF5X21lcmdlKCAkdW5pdC0+bnVtZXJhdG9yLCAkb3RoZXItPnVuaXQtPm51bWVyYXRvciApOwoJCQkkdW5pdC0+ZGVub21pbmF0b3IgPSBhcnJheV9tZXJnZSggJHVuaXQtPmRlbm9taW5hdG9yLCAkb3RoZXItPnVuaXQtPmRlbm9taW5hdG9yICk7CgkJCXNvcnQoICR1bml0LT5udW1lcmF0b3IgKTsKCQkJc29ydCggJHVuaXQtPmRlbm9taW5hdG9yICk7CgkJCSR1bml0LT5jYW5jZWwoKTsKCQl9IGVsc2VpZiAoICRvcCA9PT0gJy8nICkgewoJCQkkdW5pdC0+bnVtZXJhdG9yID0gYXJyYXlfbWVyZ2UoICR1bml0LT5udW1lcmF0b3IsICRvdGhlci0+dW5pdC0+ZGVub21pbmF0b3IgKTsKCQkJJHVuaXQtPmRlbm9taW5hdG9yID0gYXJyYXlfbWVyZ2UoICR1bml0LT5kZW5vbWluYXRvciwgJG90aGVyLT51bml0LT5udW1lcmF0b3IgKTsKCQkJc29ydCggJHVuaXQtPm51bWVyYXRvciApOwoJCQlzb3J0KCAkdW5pdC0+ZGVub21pbmF0b3IgKTsKCQkJJHVuaXQtPmNhbmNlbCgpOwoJCX0KCQlyZXR1cm4gbmV3IHNlbGYoICR2YWx1ZSwgJHVuaXQgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWUgJG90aGVyCgkgKiBAcmV0dXJuIGludHxudWxsCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjRGltZW5zaW9uLnByb3RvdHlwZS5jb21wYXJlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCAkb3RoZXIgKSB7CgkJaWYgKCAhJG90aGVyIGluc3RhbmNlb2Ygc2VsZiApIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQlpZiAoICR0aGlzLT51bml0LT5pc0VtcHR5KCkgfHwgJG90aGVyLT51bml0LT5pc0VtcHR5KCkgKSB7CgkJCSRhID0gJHRoaXM7CgkJCSRiID0gJG90aGVyOwoJCX0gZWxzZSB7CgkJCSRhID0gJHRoaXMtPnVuaWZ5KCk7CgkJCSRiID0gJG90aGVyLT51bmlmeSgpOwoJCQlpZiAoICRhLT51bml0LT5jb21wYXJlKCAkYi0+dW5pdCApICE9PSAwICkgewoJCQkJcmV0dXJuIG51bGw7CgkJCX0KCQl9CgoJCXJldHVybiBMZXNzX1RyZWU6Om51bWVyaWNDb21wYXJlKCAkYS0+dmFsdWUsICRiLT52YWx1ZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB1bmlmeSgpIHsKCQlyZXR1cm4gJHRoaXMtPmNvbnZlcnRUbyggWyAnbGVuZ3RoJyA9PiAncHgnLCAnZHVyYXRpb24nID0+ICdzJywgJ2FuZ2xlJyA9PiAncmFkJyBdICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbnZlcnRUbyggJGNvbnZlcnNpb25zICkgewoJCSR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKCQkkdW5pdCA9ICR0aGlzLT51bml0LT5jbG9uZSgpOwoKCQlpZiAoIGlzX3N0cmluZyggJGNvbnZlcnNpb25zICkgKSB7CgkJCSRkZXJpdmVkQ29udmVyc2lvbnMgPSBbXTsKCQkJZm9yZWFjaCAoIExlc3NfVHJlZV9Vbml0Q29udmVyc2lvbnM6OiRncm91cHMgYXMgJGkgKSB7CgkJCQlpZiAoIGlzc2V0KCBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zOjokeyRpfVskY29udmVyc2lvbnNdICkgKSB7CgkJCQkJJGRlcml2ZWRDb252ZXJzaW9ucyA9IFsgJGkgPT4gJGNvbnZlcnNpb25zIF07CgkJCQl9CgkJCX0KCQkJJGNvbnZlcnNpb25zID0gJGRlcml2ZWRDb252ZXJzaW9uczsKCQl9CgoJCWZvcmVhY2ggKCAkY29udmVyc2lvbnMgYXMgJGdyb3VwTmFtZSA9PiAkdGFyZ2V0VW5pdCApIHsKCQkJJGdyb3VwID0gTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JHskZ3JvdXBOYW1lfTsKCgkJCS8vIG51bWVyYXRvcgoJCQlmb3JlYWNoICggJHVuaXQtPm51bWVyYXRvciBhcyAkaSA9PiAkYXRvbWljVW5pdCApIHsKCQkJCSRhdG9taWNVbml0ID0gJHVuaXQtPm51bWVyYXRvclskaV07CgkJCQlpZiAoICFpc3NldCggJGdyb3VwWyRhdG9taWNVbml0XSApICkgewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCSR2YWx1ZSAqPSAkZ3JvdXBbJGF0b21pY1VuaXRdIC8gJGdyb3VwWyR0YXJnZXRVbml0XTsKCgkJCQkkdW5pdC0+bnVtZXJhdG9yWyRpXSA9ICR0YXJnZXRVbml0OwoJCQl9CgoJCQkvLyBkZW5vbWluYXRvcgoJCQlmb3JlYWNoICggJHVuaXQtPmRlbm9taW5hdG9yIGFzICRpID0+ICRhdG9taWNVbml0ICkgewoJCQkJJGF0b21pY1VuaXQgPSAkdW5pdC0+ZGVub21pbmF0b3JbJGldOwoJCQkJaWYgKCAhaXNzZXQoICRncm91cFskYXRvbWljVW5pdF0gKSApIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQkkdmFsdWUgLz0gJGdyb3VwWyRhdG9taWNVbml0XSAvICRncm91cFskdGFyZ2V0VW5pdF07CgoJCQkJJHVuaXQtPmRlbm9taW5hdG9yWyRpXSA9ICR0YXJnZXRVbml0OwoJCQl9CgkJfQoKCQkkdW5pdC0+Y2FuY2VsKCk7CgoJCXJldHVybiBuZXcgc2VsZiggJHZhbHVlLCAkdW5pdCApOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Element.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRWxlbWVudCBleHRlbmRzIExlc3NfVHJlZSBpbXBsZW1lbnRzIExlc3NfVHJlZV9IYXNWYWx1ZVByb3BlcnR5IHsKCgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkY29tYmluYXRvcjsKCS8qKiBAdmFyIGJvb2wgV2hldGhlciBjb21iaW5hdG9yIGlzIG51bGwgKHJlcHJlc2VudGVkIGJ5IGVtcHR5IHN0cmluZykgb3IgY2hpbGQgKHNpbmdsZSBzcGFjZSkgKi8KCXB1YmxpYyAkY29tYmluYXRvcklzRW1wdHlPcldoaXRlc3BhY2U7CgkvKiogQHZhciBzdHJpbmd8TGVzc19UcmVlICovCglwdWJsaWMgJHZhbHVlOwoJLyoqIEB2YXIgaW50fG51bGwgKi8KCXB1YmxpYyAkaW5kZXg7CgkvKiogQHZhciBhcnJheXxudWxsICovCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCgkvKioKCSAqIEBwYXJhbSBudWxsfHN0cmluZyAkY29tYmluYXRvcgoJICogQHBhcmFtIHN0cmluZ3xMZXNzX1RyZWUgJHZhbHVlCgkgKiBAcGFyYW0gaW50fG51bGwgJGluZGV4CgkgKiBAcGFyYW0gYXJyYXl8bnVsbCAkY3VycmVudEZpbGVJbmZvCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJGNvbWJpbmF0b3IsICR2YWx1ZSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKSB7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoKCQkvLyBzZWUgbGVzcy0yLjUuMy5qcyNDb21iaW5hdG9yCgkJJHRoaXMtPmNvbWJpbmF0b3IgPSAkY29tYmluYXRvciA/PyAnJzsKCQkkdGhpcy0+Y29tYmluYXRvcklzRW1wdHlPcldoaXRlc3BhY2UgPSAoICRjb21iaW5hdG9yID09PSBudWxsIHx8IHRyaW0oICRjb21iaW5hdG9yICkgPT09ICcnICk7CgoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApIHsKCQlpZiAoICR0aGlzLT52YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZSApIHsKCQkJJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+dmFsdWUgKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJcmV0dXJuIG5ldyBzZWxmKAoJCQkkdGhpcy0+Y29tYmluYXRvciwKCQkJKCAkdGhpcy0+dmFsdWUgaW5zdGFuY2VvZiBMZXNzX1RyZWUgPyAkdGhpcy0+dmFsdWUtPmNvbXBpbGUoICRlbnYgKSA6ICR0aGlzLT52YWx1ZSApLAoJCQkkdGhpcy0+aW5kZXgsCgkJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8KCQkpOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnRvQ1NTKCksICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUygpIHsKCQlpZiAoICR0aGlzLT52YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZSApIHsKCQkJJHZhbHVlID0gJHRoaXMtPnZhbHVlLT50b0NTUygpOwoJCX0gZWxzZSB7CgkJCSR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKCQl9CgoJCSRzcGFjZU9yRW1wdHkgPSAnICc7CgkJaWYgKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gfHwKCQkJKCBpc3NldCggTGVzc19FbnZpcm9ubWVudDo6JF9ub1NwYWNlQ29tYmluYXRvcnNbJHRoaXMtPmNvbWJpbmF0b3JdICkgJiYgTGVzc19FbnZpcm9ubWVudDo6JF9ub1NwYWNlQ29tYmluYXRvcnNbJHRoaXMtPmNvbWJpbmF0b3JdICkKCQkpIHsKCQkJJHNwYWNlT3JFbXB0eSA9ICcnOwoJCX0KCgkJcmV0dXJuICRzcGFjZU9yRW1wdHkgLiAkdGhpcy0+Y29tYmluYXRvciAuICRzcGFjZU9yRW1wdHkgLiAkdmFsdWU7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Expression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjRXhwcmVzc2lvbi5wcm90b3R5cGUKICovCmNsYXNzIExlc3NfVHJlZV9FeHByZXNzaW9uIGV4dGVuZHMgTGVzc19UcmVlIGltcGxlbWVudHMgTGVzc19UcmVlX0hhc1ZhbHVlUHJvcGVydHkgewoKCS8qKiBAdmFyIExlc3NfVHJlZVtdICovCglwdWJsaWMgJHZhbHVlID0gW107CgkvKiogQHZhciBib29sICovCglwdWJsaWMgJG5vU3BhY2luZzsKCS8qKiBAdmFyIHRydWV8bnVsbCAqLwoJcHVibGljICRwYXJlbnMgPSBudWxsOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJHZhbHVlLCAkbm9TcGFjaW5nID0gZmFsc2UgKSB7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJCSR0aGlzLT5ub1NwYWNpbmcgPSAkbm9TcGFjaW5nOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICkgewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCAkdGhpcy0+dmFsdWUgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkkbWF0aE9uID0gJGVudi0+aXNNYXRoT24oKTsKCQkvLyBOT1RFOiBXZSBkb24ndCBzdXBwb3J0IFNUUklDVF9MRUdBQ1kgKExlc3MuanMgMy4xMykKCQkkaW5QYXJlbnRoZXNpcyA9ICR0aGlzLT5wYXJlbnMgJiYgKCB0cnVlIHx8ICEkdGhpcy0+cGFyZW5zSW5PcCApOwoJCSRkb3VibGVQYXJlbiA9IGZhbHNlOwoJCWlmICggJGluUGFyZW50aGVzaXMgKSB7CgkJCSRlbnYtPmluUGFyZW50aGVzaXMoKTsKCQl9CgoJCWlmICggJHRoaXMtPnZhbHVlICkgewoKCQkJaWYgKCBjb3VudCggJHRoaXMtPnZhbHVlICkgPiAxICkgewoJCQkJJHJldCA9IFtdOwoJCQkJZm9yZWFjaCAoICR0aGlzLT52YWx1ZSBhcyAkZSApIHsKCQkJCQkkcmV0W10gPSAkZS0+Y29tcGlsZSggJGVudiApOwoJCQkJfQoJCQkJJHJldHVyblZhbHVlID0gbmV3IHNlbGYoICRyZXQsICR0aGlzLT5ub1NwYWNpbmcgKTsKCgkJCX0gZWxzZSB7CgkJCQkvLyBJbXBsaWVkIGBpZiAoIGNvdW50KCkgPT09IDEgKWAKCQkJCWlmICggKCAkdGhpcy0+dmFsdWVbMF0gaW5zdGFuY2VvZiBzZWxmICkgJiYgJHRoaXMtPnZhbHVlWzBdLT5wYXJlbnMgJiYgISR0aGlzLT52YWx1ZVswXS0+cGFyZW5zSW5PcCAmJiAhJGVudi0+aW5DYWxjICkgewoJCQkJCSRkb3VibGVQYXJlbiA9IHRydWU7CgkJCQl9CgkJCQkkcmV0dXJuVmFsdWUgPSAkdGhpcy0+dmFsdWVbMF0tPmNvbXBpbGUoICRlbnYgKTsKCQkJfQoJCX0gZWxzZSB7CgkJCSRyZXR1cm5WYWx1ZSA9ICR0aGlzOwoJCX0KCgkJaWYgKCAkaW5QYXJlbnRoZXNpcyApIHsKCQkJJGVudi0+b3V0T2ZQYXJlbnRoZXNpcygpOwoJCX0KCgkJaWYgKCAkdGhpcy0+cGFyZW5zICYmICR0aGlzLT5wYXJlbnNJbk9wICYmICEkbWF0aE9uICYmICEkZG91YmxlUGFyZW4gJiYKCQkJKCAhKCAkcmV0dXJuVmFsdWUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICkgKQoJCSkgewoJCQkkcmV0dXJuVmFsdWUgPSBuZXcgTGVzc19UcmVlX1BhcmVuKCAkcmV0dXJuVmFsdWUgKTsKCQl9CgkJcmV0dXJuICRyZXR1cm5WYWx1ZTsKCX0KCgkvKioKCSAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQkkdmFsX2xlbiA9IGNvdW50KCAkdGhpcy0+dmFsdWUgKTsKCQlmb3IgKCAkaSA9IDA7ICRpIDwgJHZhbF9sZW47ICRpKysgKSB7CgkJCSR0aGlzLT52YWx1ZVskaV0tPmdlbkNTUyggJG91dHB1dCApOwoJCQlpZiAoICEkdGhpcy0+bm9TcGFjaW5nICYmICggJGkgKyAxIDwgJHZhbF9sZW4gKSApIHsKCQkJCS8vIE5PVEU6IENvbW1hIGhhbmRsaW5nIGJhY2twb3J0ZWQgZnJvbSBMZXNzLmpzIDQuMi4xIChUMzg2MDc3KQoJCQkJaWYgKCAhKCAkdGhpcy0+dmFsdWVbJGkgKyAxXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Bbm9ueW1vdXMgKQoJCQkJCXx8ICggJHRoaXMtPnZhbHVlWyRpICsgMV0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfQW5vbnltb3VzICYmICR0aGlzLT52YWx1ZVskaSArIDFdLT52YWx1ZSAhPT0gJywnICkKCQkJCSkgewoJCQkJCSRvdXRwdXQtPmFkZCggJyAnICk7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRocm93QXdheUNvbW1lbnRzKCkgewoJCWlmICggaXNfYXJyYXkoICR0aGlzLT52YWx1ZSApICkgewoJCQkkbmV3X3ZhbHVlID0gW107CgkJCWZvcmVhY2ggKCAkdGhpcy0+dmFsdWUgYXMgJHYgKSB7CgkJCQlpZiAoICR2IGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbW1lbnQgKSB7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCQkkbmV3X3ZhbHVlW10gPSAkdjsKCQkJfQoJCQkkdGhpcy0+dmFsdWUgPSAkbmV3X3ZhbHVlOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKSB7CgkJaWYgKCBpc19hcnJheSggJHRoaXMtPnZhbHVlICkgKSB7CgkJCWZvcmVhY2ggKCAkdGhpcy0+dmFsdWUgYXMgJHYgKSB7CgkJCQlpZiAoIG1ldGhvZF9leGlzdHMoICR2LCAnbWFya1JlZmVyZW5jZWQnICkgKSB7CgkJCQkJJHYtPm1hcmtSZWZlcmVuY2VkKCk7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJLyoqCgkgKiBTaG91bGQgYmUgdXNlZCBvbmx5IGluIExlc3NfVHJlZV9DYWxsOjpmdW5jdGlvbkNhbGxlcigpCgkgKiB0byByZXRyaWV2ZSBleHByZXNzaW9uIHdpdGhvdXQgY29tbWVudHMKCSAqIEBpbnRlcm5hbAoJICovCglwdWJsaWMgZnVuY3Rpb24gbWFwVG9GdW5jdGlvbkNhbGxBcmd1bWVudCgpIHsKCQlpZiAoIGlzX2FycmF5KCAkdGhpcy0+dmFsdWUgKSApIHsKCQkJJHN1Yk5vZGVzID0gW107CgkJCWZvcmVhY2ggKCAkdGhpcy0+dmFsdWUgYXMgJHN1Yk5vZGUgKSB7CgkJCQlpZiAoICEoICRzdWJOb2RlIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbW1lbnQgKSApIHsKCQkJCQkkc3ViTm9kZXNbXSA9ICRzdWJOb2RlOwoJCQkJfQoJCQl9CgkJCXJldHVybiBjb3VudCggJHN1Yk5vZGVzICkgPT09IDEKCQkJCT8gJHN1Yk5vZGVzWzBdCgkJCQk6IG5ldyBMZXNzX1RyZWVfRXhwcmVzc2lvbiggJHN1Yk5vZGVzICk7CgkJfQoJCXJldHVybiAkdGhpczsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Extend.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRXh0ZW5kIGV4dGVuZHMgTGVzc19UcmVlIHsKCgkvKiogQHZhciBMZXNzX1RyZWVfU2VsZWN0b3IgKi8KCXB1YmxpYyAkc2VsZWN0b3I7CgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkb3B0aW9uOwoJLyoqIEB2YXIgaW50ICovCglwdWJsaWMgJGluZGV4OwoJLyoqIEB2YXIgTGVzc19UcmVlX1NlbGVjdG9yW10gKi8KCXB1YmxpYyAkc2VsZlNlbGVjdG9ycyA9IFtdOwoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljICRhbGxvd0JlZm9yZTsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkYWxsb3dBZnRlcjsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkZmlyc3RFeHRlbmRPblRoaXNTZWxlY3RvclBhdGg7CgkvKiogQHZhciBMZXNzX1RyZWVfUnVsZXNldHxudWxsICovCglwdWJsaWMgJHJ1bGVzZXQ7CgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkb2JqZWN0X2lkOwoJLyoqIEB2YXIgYXJyYXk8c3RyaW5nLHRydWU+ICovCglwdWJsaWMgJHBhcmVudF9pZHMgPSBbXTsKCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfU2VsZWN0b3IgJHNlbGVjdG9yCgkgKiBAcGFyYW0gc3RyaW5nICRvcHRpb24KCSAqIEBwYXJhbSBpbnQgJGluZGV4CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJHNlbGVjdG9yLCAkb3B0aW9uLCAkaW5kZXggKSB7CgkJc3RhdGljICRpID0gMDsKCQkkdGhpcy0+c2VsZWN0b3IgPSAkc2VsZWN0b3I7CgkJJHRoaXMtPm9wdGlvbiA9ICRvcHRpb247CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoKCQlzd2l0Y2ggKCAkb3B0aW9uICkgewoJCQljYXNlICJhbGwiOgoJCQkJJHRoaXMtPmFsbG93QmVmb3JlID0gdHJ1ZTsKCQkJCSR0aGlzLT5hbGxvd0FmdGVyID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCQlkZWZhdWx0OgoJCQkJJHRoaXMtPmFsbG93QmVmb3JlID0gZmFsc2U7CgkJCQkkdGhpcy0+YWxsb3dBZnRlciA9IGZhbHNlOwoJCQkJYnJlYWs7CgkJfQoKCQkvLyBUaGlzIG11c3QgdXNlIGEgc3RyaW5nIChpbnN0ZWFkIG9mIGludCkgc28gdGhhdCBhcnJheV9tZXJnZSgpCgkJLy8gcHJlc2VydmVzIGtleXMgb24gYXJyYXlzIHRoYXQgdXNlIElEcyBpbiB0aGVpciBrZXlzLgoJCSR0aGlzLT5vYmplY3RfaWQgPSAnaWRfJyAuICRpKys7CgoJCSR0aGlzLT5wYXJlbnRfaWRzID0gWwoJCQkkdGhpcy0+b2JqZWN0X2lkID0+IHRydWUKCQldOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICkgewoJCSR0aGlzLT5zZWxlY3RvciA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnNlbGVjdG9yICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJTGVzc19QYXJzZXI6OiRoYXNfZXh0ZW5kcyA9IHRydWU7CgkJJHRoaXMtPnNlbGVjdG9yID0gJHRoaXMtPnNlbGVjdG9yLT5jb21waWxlKCAkZW52ICk7CgkJcmV0dXJuICR0aGlzOwoJCS8vIHJldHVybiBuZXcgc2VsZiggJHRoaXMtPnNlbGVjdG9yLT5jb21waWxlKCRlbnYpLCAkdGhpcy0+b3B0aW9uLCAkdGhpcy0+aW5kZXgpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjbG9uZSgpIHsKCQlyZXR1cm4gbmV3IHNlbGYoICR0aGlzLT5zZWxlY3RvciwgJHRoaXMtPm9wdGlvbiwgJHRoaXMtPmluZGV4ICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGZpbmRTZWxmU2VsZWN0b3JzKCAkc2VsZWN0b3JzICkgewoJCSRzZWxmRWxlbWVudHMgPSBbXTsKCgkJZm9yICggJGkgPSAwLCAkc2VsZWN0b3JzX2xlbiA9IGNvdW50KCAkc2VsZWN0b3JzICk7ICRpIDwgJHNlbGVjdG9yc19sZW47ICRpKysgKSB7CgkJCSRzZWxlY3RvckVsZW1lbnRzID0gJHNlbGVjdG9yc1skaV0tPmVsZW1lbnRzOwoJCQkvLyBkdXBsaWNhdGUgdGhlIGxvZ2ljIGluIGdlbkNTUyBmdW5jdGlvbiBpbnNpZGUgdGhlIHNlbGVjdG9yIG5vZGUuCgkJCS8vIGZ1dHVyZSBUT0RPIC0gbW92ZSBib3RoIGxvZ2ljcyBpbnRvIHRoZSBzZWxlY3RvciBqb2luZXIgdmlzaXRvcgoJCQlpZiAoICRpICYmICRzZWxlY3RvckVsZW1lbnRzICYmICRzZWxlY3RvckVsZW1lbnRzWzBdLT5jb21iaW5hdG9yID09PSAiIiApIHsKCQkJCSRzZWxlY3RvckVsZW1lbnRzWzBdLT5jb21iaW5hdG9yID0gJyAnOwoJCQl9CgkJCSRzZWxmRWxlbWVudHMgPSBhcnJheV9tZXJnZSggJHNlbGZFbGVtZW50cywgJHNlbGVjdG9yc1skaV0tPmVsZW1lbnRzICk7CgkJfQoKCQkkdGhpcy0+c2VsZlNlbGVjdG9ycyA9IFsgbmV3IExlc3NfVHJlZV9TZWxlY3RvciggJHNlbGZFbGVtZW50cyApIF07Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/HasValueProperty.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBwcm9wZXJ0eSBtaXhlZCAkdmFsdWUKICovCmludGVyZmFjZSBMZXNzX1RyZWVfSGFzVmFsdWVQcm9wZXJ0eSB7Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIENTUyBgQGltcG9ydGAgbm9kZQogKgogKiBUaGUgZ2VuZXJhbCBzdHJhdGVneSBoZXJlIGlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byB3YWl0CiAqIGZvciB0aGUgcGFyc2luZyB0byBiZSBjb21wbGV0ZWQsIGJlZm9yZSB3ZSBzdGFydCBpbXBvcnRpbmcKICogdGhlIGZpbGUuIFRoYXQncyBiZWNhdXNlIGluIHRoZSBjb250ZXh0IG9mIGEgYnJvd3NlciwKICogbW9zdCBvZiB0aGUgdGltZSB3aWxsIGJlIHNwZW50IHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gcmVzcG9uZC4KICoKICogT24gY3JlYXRpb24sIHdlIHB1c2ggdGhlIGltcG9ydCBwYXRoIHRvIG91ciBpbXBvcnQgcXVldWUsIHRob3VnaAogKiBgaW1wb3J0LHB1c2hgLCB3ZSBhbHNvIHBhc3MgaXQgYSBjYWxsYmFjaywgd2hpY2ggaXQnbGwgY2FsbCBvbmNlCiAqIHRoZSBmaWxlIGhhcyBiZWVuIGZldGNoZWQsIGFuZCBwYXJzZWQuCiAqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0yLjUuMy5qcyNJbXBvcnQucHJvdG90eXBlCiAqLwpjbGFzcyBMZXNzX1RyZWVfSW1wb3J0IGV4dGVuZHMgTGVzc19UcmVlIHsKCgkvKiogQHZhciBhcnJheTxzdHJpbmcsYm9vbD4gKi8KCXB1YmxpYyAkb3B0aW9uczsKCS8qKiBAdmFyIGludCAqLwoJcHVibGljICRpbmRleDsKCS8qKiBAdmFyIExlc3NfVHJlZV9RdW90ZWR8TGVzc19UcmVlX1VybCAqLwoJcHVibGljICRwYXRoOwoJLyoqIEB2YXIgTGVzc19UcmVlX1ZhbHVlICovCglwdWJsaWMgJGZlYXR1cmVzOwoJLyoqIEB2YXIgYXJyYXl8bnVsbCAqLwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgkvKiogQHZhciBib29sfG51bGwgKi8KCXB1YmxpYyAkY3NzOwoJLyoqIEB2YXIgYm9vbHxudWxsIFRoaXMgaXMgcG9wdWxhdGVkIGJ5IExlc3NfSW1wb3J0VmlzaXRvciAqLwoJcHVibGljICRkb1NraXAgPSBmYWxzZTsKCS8qKiBAdmFyIHN0cmluZ3xudWxsIFRoaXMgaXMgcG9wdWxhdGVkIGJ5IExlc3NfSW1wb3J0VmlzaXRvciAqLwoJcHVibGljICRpbXBvcnRlZEZpbGVuYW1lOwoJLyoqCgkgKiBUaGlzIGlzIHBvcHVsYXRlZCBieSBMZXNzX0ltcG9ydFZpc2l0b3IuCgkgKgoJICogRm9yIGltcG9ydHMgdGhhdCB1c2UgImlubGluZSIsIHRoaXMgaG9sZHMgYSByYXcgc3RyaW5nLgoJICoKCSAqIEB2YXIgc3RyaW5nfExlc3NfVHJlZV9SdWxlc2V0fG51bGwKCSAqLwoJcHVibGljICRyb290OwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJHBhdGgsICRmZWF0dXJlcywgYXJyYXkgJG9wdGlvbnMsICRpbmRleCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKSB7CgkJJHRoaXMtPm9wdGlvbnMgPSAkb3B0aW9ucyArIFsgJ2lubGluZScgPT4gZmFsc2UsICdvcHRpb25hbCcgPT4gZmFsc2UsICdtdWx0aXBsZScgPT4gZmFsc2UgXTsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPnBhdGggPSAkcGF0aDsKCQkkdGhpcy0+ZmVhdHVyZXMgPSAkZmVhdHVyZXM7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87CgoJCWlmICggaXNzZXQoICR0aGlzLT5vcHRpb25zWydsZXNzJ10gKSB8fCAkdGhpcy0+b3B0aW9uc1snaW5saW5lJ10gKSB7CgkJCSR0aGlzLT5jc3MgPSAhaXNzZXQoICR0aGlzLT5vcHRpb25zWydsZXNzJ10gKSB8fCAhJHRoaXMtPm9wdGlvbnNbJ2xlc3MnXSB8fCAkdGhpcy0+b3B0aW9uc1snaW5saW5lJ107CgkJfSBlbHNlIHsKCQkJJHBhdGhWYWx1ZSA9ICR0aGlzLT5nZXRQYXRoKCk7CgkJCS8vIExlYXZlIGFueSAiLmNzcyIgZmlsZSBpbXBvcnRzIGFzIGxpdGVyYWxzIGZvciB0aGUgYnJvd3Nlci4KCQkJLy8gQWxzbyBsZWF2ZSBhbnkgcmVtb3RlIEhUVFAgcmVzb3VyY2VzIGFzIGxpdGVyYWxzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgoJCQkvLyB0aGV5IGNvbnRhaW4gIi5jc3MiIGluIHRoZWlyIGZpbGVuYW1lLgoJCQlpZiAoICRwYXRoVmFsdWUgJiYgKAoJCQkJcHJlZ19tYXRjaCggJy9bI1wuXCZcP1wvXWNzcyhbXD87XS4qKT8kLycsICRwYXRoVmFsdWUgKQoJCQkJfHwgcHJlZ19tYXRjaCggJy9eKGh0dHBzPzopP1wvXC8vaScsICRwYXRoVmFsdWUgKQoJCQkpICkgewoJCQkJJHRoaXMtPmNzcyA9IHRydWU7CgkJCX0KCQl9Cgl9CgovLwovLyBUaGUgYWN0dWFsIGltcG9ydCBub2RlIGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nLCB3aGVuIGNvbnZlcnRlZCB0byBDU1MuCi8vIFRoZSByZWFzb24gaXMgdGhhdCBpdCdzIHVzZWQgYXQgdGhlIGV2YWx1YXRpb24gc3RhZ2UsIHNvIHRoYXQgdGhlIHJ1bGVzCi8vIGl0IGltcG9ydHMgY2FuIGJlIHRyZWF0ZWQgbGlrZSBhbnkgb3RoZXIgcnVsZXMuCi8vCi8vIEluIGBldmFsYCwgd2UgbWFrZSBzdXJlIGFsbCBJbXBvcnQgbm9kZXMgZ2V0IGV2YWx1YXRlZCwgcmVjdXJzaXZlbHksIHNvCi8vIHdlIGVuZCB1cCB3aXRoIGEgZmxhdCBzdHJ1Y3R1cmUsIHdoaWNoIGNhbiBlYXNpbHkgYmUgaW1wb3J0ZWQgaW4gdGhlIHBhcmVudAovLyBydWxlc2V0LgovLwoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICkgewoJCWlmICggJHRoaXMtPmZlYXR1cmVzICkgewoJCQkkdGhpcy0+ZmVhdHVyZXMgPSAkdmlzaXRvci0+dmlzaXRPYmooICR0aGlzLT5mZWF0dXJlcyApOwoJCX0KCQkkdGhpcy0+cGF0aCA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnBhdGggKTsKCgkJaWYgKCAhJHRoaXMtPm9wdGlvbnNbJ2lubGluZSddICYmICR0aGlzLT5yb290ICkgewoJCQkkdGhpcy0+cm9vdCA9ICR2aXNpdG9yLT52aXNpdCggJHRoaXMtPnJvb3QgKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQlpZiAoICR0aGlzLT5jc3MgJiYgIWlzc2V0KCAkdGhpcy0+cGF0aC0+Y3VycmVudEZpbGVJbmZvWyJyZWZlcmVuY2UiXSApICkgewoJCQkkb3V0cHV0LT5hZGQoICdAaW1wb3J0ICcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCQkkdGhpcy0+cGF0aC0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJCWlmICggJHRoaXMtPmZlYXR1cmVzICkgewoJCQkJJG91dHB1dC0+YWRkKCAnICcgKTsKCQkJCSR0aGlzLT5mZWF0dXJlcy0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJCX0KCQkJJG91dHB1dC0+YWRkKCAnOycgKTsKCQl9Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIHN0cmluZ3xudWxsCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRQYXRoKCkgewoJCS8vIER1cmluZyB0aGUgZmlyc3QgcGFzcywgTGVzc19UcmVlX1VybCBtYXkgY29udGFpbiBhIExlc3NfVHJlZV9WYXJpYWJsZSAobm90IHlldCBleHBhbmRlZCksCgkJLy8gYW5kIHRodXMgaGFzIG5vIHZhbHVlIHByb3BlcnR5IGRlZmluZWQgeWV0LiBSZXR1cm4gbnVsbCB1bnRpbCB3ZSByZWFjaCB0aGUgbmV4dCBwaGFzZS4KCQkvLyBodHRwczovL2dpdGh1Yi5jb20vd2lraW1lZGlhL2xlc3MucGhwL2lzc3Vlcy8yOQoJCS8vIFRPRE86IFVwc3RyZWFtIGRvZXNuJ3QgbmVlZCBhIGNoZWNrIGFnYWluc3QgTGVzc19UcmVlX1ZhcmlhYmxlLiBXaHkgZG8gd2U/CgkJJHBhdGggPSAoICR0aGlzLT5wYXRoIGluc3RhbmNlb2YgTGVzc19UcmVlX1VybCAmJiAhKCAkdGhpcy0+cGF0aC0+dmFsdWUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfVmFyaWFibGUgKSApCgkJCT8gJHRoaXMtPnBhdGgtPnZhbHVlLT52YWx1ZQoJCQkvLyBlLmcuIExlc3NfVHJlZV9RdW90ZWQKCQkJOiAkdGhpcy0+cGF0aC0+dmFsdWU7CgoJCWlmICggaXNfc3RyaW5nKCAkcGF0aCApICkgewoJCQkvLyByZW1vdmUgcXVlcnkgc3RyaW5nIGFuZCBmcmFnbWVudAoJCQlyZXR1cm4gcHJlZ19yZXBsYWNlKCAnL1tcPyNdW15cP10qJC8nLCAnJywgJHBhdGggKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzVmFyaWFibGVJbXBvcnQoKSB7CgkJJHBhdGggPSAkdGhpcy0+cGF0aDsKCQlpZiAoICRwYXRoIGluc3RhbmNlb2YgTGVzc19UcmVlX1VybCApIHsKCQkJJHBhdGggPSAkcGF0aC0+dmFsdWU7CgkJfQoJCWlmICggJHBhdGggaW5zdGFuY2VvZiBMZXNzX1RyZWVfUXVvdGVkICkgewoJCQlyZXR1cm4gJHBhdGgtPmNvbnRhaW5zVmFyaWFibGVzKCk7CgkJfQoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlRm9ySW1wb3J0KCAkZW52ICkgewoJCSRwYXRoID0gJHRoaXMtPnBhdGg7CgkJaWYgKCAkcGF0aCBpbnN0YW5jZW9mIExlc3NfVHJlZV9VcmwgKSB7CgkJCSRwYXRoID0gJHBhdGgtPnZhbHVlOwoJCX0KCQlyZXR1cm4gbmV3IHNlbGYoICRwYXRoLT5jb21waWxlKCAkZW52ICksICR0aGlzLT5mZWF0dXJlcywgJHRoaXMtPm9wdGlvbnMsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlUGF0aCggJGVudiApIHsKCQkkcGF0aCA9ICR0aGlzLT5wYXRoLT5jb21waWxlKCAkZW52ICk7CgkJJHJvb3RwYXRoID0gJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sncm9vdHBhdGgnXSA/PyBudWxsOwoKCQlpZiAoICEoICRwYXRoIGluc3RhbmNlb2YgTGVzc19UcmVlX1VybCApICkgewoJCQlpZiAoICRyb290cGF0aCApIHsKCQkJCSRwYXRoVmFsdWUgPSAkcGF0aC0+dmFsdWU7CgkJCQkvLyBBZGQgdGhlIGJhc2UgcGF0aCBpZiB0aGUgaW1wb3J0IGlzIHJlbGF0aXZlCgkJCQlpZiAoICRwYXRoVmFsdWUgJiYgTGVzc19FbnZpcm9ubWVudDo6aXNQYXRoUmVsYXRpdmUoICRwYXRoVmFsdWUgKSApIHsKCQkJCQkkcGF0aC0+dmFsdWUgPSAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWyd1cmlfcm9vdCddIC4gJHBhdGhWYWx1ZTsKCQkJCX0KCQkJfQoJCQkkcGF0aC0+dmFsdWUgPSBMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCAkcGF0aC0+dmFsdWUgKTsKCQl9CgoJCXJldHVybiAkcGF0aDsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50ICRlbnYKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNJbXBvcnQucHJvdG90eXBlLmV2YWwKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJJGZlYXR1cmVzID0gKCAkdGhpcy0+ZmVhdHVyZXMgPyAkdGhpcy0+ZmVhdHVyZXMtPmNvbXBpbGUoICRlbnYgKSA6IG51bGwgKTsKCgkJLy8gaW1wb3J0IG9uY2UKCQlpZiAoICR0aGlzLT5za2lwKCAkZW52ICkgKSB7CgkJCXJldHVybiBbXTsKCQl9CgoJCWlmICggJHRoaXMtPm9wdGlvbnNbJ2lubGluZSddICkgewoJCQkkY29udGVudHMgPSBuZXcgTGVzc19UcmVlX0Fub255bW91cygKCQkJCSR0aGlzLT5yb290LAoJCQkJMCwKCQkJCVsKCQkJCQknZmlsZW5hbWUnID0+ICR0aGlzLT5pbXBvcnRlZEZpbGVuYW1lLAoJCQkJCSdyZWZlcmVuY2UnID0+ICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddID8/IG51bGwsCgkJCQldLAoJCQkJdHJ1ZSwKCQkJCXRydWUsCgkJCQlmYWxzZQoJCQkpOwoJCQlyZXR1cm4gJHRoaXMtPmZlYXR1cmVzCgkJCQk/IG5ldyBMZXNzX1RyZWVfTWVkaWEoIFsgJGNvbnRlbnRzIF0sICR0aGlzLT5mZWF0dXJlcy0+dmFsdWUgKQoJCQkJOiBbICRjb250ZW50cyBdOwoJCX0gZWxzZWlmICggJHRoaXMtPmNzcyApIHsKCQkJJG5ld0ltcG9ydCA9IG5ldyBzZWxmKCAkdGhpcy0+Y29tcGlsZVBhdGgoICRlbnYgKSwgJGZlYXR1cmVzLCAkdGhpcy0+b3B0aW9ucywgJHRoaXMtPmluZGV4ICk7CgkJCS8vIFRPRE86IFdlIG1pZ2h0IG5lZWQgdXBzdHJlYW0ncyBgaWYgKCFuZXdJbXBvcnQuY3NzICYmIHRoaXMuZXJyb3IpIHsgdGhyb3cgdGhpcy5lcnJvcjtgCgkJCXJldHVybiAkbmV3SW1wb3J0OwoJCX0gZWxzZSB7CgkJCSRydWxlc2V0ID0gbmV3IExlc3NfVHJlZV9SdWxlc2V0KCBudWxsLCAkdGhpcy0+cm9vdC0+cnVsZXMgKTsKCgkJCSRydWxlc2V0LT5ldmFsSW1wb3J0cyggJGVudiApOwoKCQkJcmV0dXJuICR0aGlzLT5mZWF0dXJlcwoJCQkJPyBuZXcgTGVzc19UcmVlX01lZGlhKCAkcnVsZXNldC0+cnVsZXMsICR0aGlzLT5mZWF0dXJlcy0+dmFsdWUgKQoJCQkJOiAkcnVsZXNldC0+cnVsZXM7CgoJCX0KCX0KCgkvKioKCSAqIFNob3VsZCB0aGUgaW1wb3J0IGJlIHNraXBwZWQ/CgkgKgoJICogQHBhcmFtIExlc3NfRW52aXJvbm1lbnQgJGVudgoJICogQHJldHVybiBib29sfG51bGwKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNraXAoICRlbnYgKSB7CgkJJHBhdGggPSAkdGhpcy0+Z2V0UGF0aCgpOwoJCS8vIFRPRE86IFNpbmNlIG91ciBJbXBvcnQtPmdldFBhdGgoKSB2YXJpZXMgZnJvbSB1cHN0cmVhbSBMZXNzLmpzIChvdXJzIGNhbiByZXR1cm4gbnVsbCkuCgkJLy8gd2UgdGhlcmVmb3JlIG5lZWQgYW4gZW1wdHkgc3RyaW5nIGZhbGxiYWNrIGhlcmUuIFJlbW92ZSB0aGlzIGZhbGxiYWNrIG9uY2UgZ2V0UGF0aCgpCgkJLy8gaXMgaW4gc3luYyB3aXRoIHVwc3RyZWFtLgoJCSRmdWxsUGF0aCA9IExlc3NfRmlsZU1hbmFnZXI6OmdldEZpbGVQYXRoKCAkcGF0aCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApWzBdID8/ICRwYXRoID8/ICcnOwoKCQlpZiAoICR0aGlzLT5kb1NraXAgIT09IG51bGwgKSB7CgkJCXJldHVybiAkdGhpcy0+ZG9Ta2lwOwoJCX0KCgkJLy8gQHNlZSBsZXNzLTIuNS4zLmpzI0ltcG9ydFZpc2l0b3IucHJvdG90eXBlLm9uSW1wb3J0ZWQKCQlpZiAoIGlzc2V0KCAkZW52LT5pbXBvcnRWaXNpdG9yT25jZU1hcFskZnVsbFBhdGhdICkgKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJJGVudi0+aW1wb3J0VmlzaXRvck9uY2VNYXBbJGZ1bGxQYXRoXSA9IHRydWU7CgkJcmV0dXJuIGZhbHNlOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/JavaScript.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjSmF2YVNjcmlwdC5wcm90b3R5cGUKICovCmNsYXNzIExlc3NfVHJlZV9KYXZhU2NyaXB0IGV4dGVuZHMgTGVzc19UcmVlIHsKCgkvKiogQHZhciBib29sICovCglwdWJsaWMgJGVzY2FwZWQ7CgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkZXhwcmVzc2lvbjsKCS8qKiBAdmFyIGludCAqLwoJcHVibGljICRpbmRleDsKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwoJICogQHBhcmFtIGJvb2wgJGVzY2FwZWQKCSAqIEBwYXJhbSBpbnQgJGluZGV4CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJHN0cmluZywgJGVzY2FwZWQsICRpbmRleCApIHsKCQkkdGhpcy0+ZXNjYXBlZCA9ICRlc2NhcGVkOwoJCSR0aGlzLT5leHByZXNzaW9uID0gJHN0cmluZzsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAnLyogU29ycnksIGNhbiBub3QgZG8gSmF2YVNjcmlwdCBldmFsdWF0aW9uIGluIFBIUC4uLiA6KCAqLycgKTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Keyword.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfS2V5d29yZCBleHRlbmRzIExlc3NfVHJlZSBpbXBsZW1lbnRzIExlc3NfVHJlZV9IYXNWYWx1ZVByb3BlcnR5IHsKCgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkdmFsdWU7CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICR2YWx1ZSApIHsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7Cgl9CgoJLyoqCgkgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKSB7CgkJaWYgKCAkdGhpcy0+dmFsdWUgPT09ICclJyApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAiSW52YWxpZCAlIHdpdGhvdXQgbnVtYmVyIiApOwoJCX0KCgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dmFsdWUgKTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Media.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfTWVkaWEgZXh0ZW5kcyBMZXNzX1RyZWUgewoKCS8qKiBAdmFyIExlc3NfVHJlZV9WYWx1ZSAqLwoJcHVibGljICRmZWF0dXJlczsKCS8qKiBAdmFyIExlc3NfVHJlZV9SdWxlc2V0W10gKi8KCXB1YmxpYyAkcnVsZXM7CgkvKiogQHZhciBpbnR8bnVsbCAqLwoJcHVibGljICRpbmRleDsKCS8qKiBAdmFyIGFycmF5fG51bGwgKi8KCXB1YmxpYyAkY3VycmVudEZpbGVJbmZvOwoJLyoqIEB2YXIgYm9vbHxudWxsICovCglwdWJsaWMgJGlzUmVmZXJlbmNlZDsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICR2YWx1ZSA9IFtdLCAkZmVhdHVyZXMgPSBbXSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKSB7CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoKCQkkc2VsZWN0b3JzID0gJHRoaXMtPmVtcHR5U2VsZWN0b3JzKCk7CgoJCSR0aGlzLT5mZWF0dXJlcyA9IG5ldyBMZXNzX1RyZWVfVmFsdWUoICRmZWF0dXJlcyApOwoKCQkkdGhpcy0+cnVsZXMgPSBbIG5ldyBMZXNzX1RyZWVfUnVsZXNldCggJHNlbGVjdG9ycywgJHZhbHVlICkgXTsKCQkkdGhpcy0+cnVsZXNbMF0tPmFsbG93SW1wb3J0cyA9IHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKSB7CgkJJHRoaXMtPmZlYXR1cmVzID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+ZmVhdHVyZXMgKTsKCQkkdGhpcy0+cnVsZXMgPSAkdmlzaXRvci0+dmlzaXRBcnJheSggJHRoaXMtPnJ1bGVzICk7Cgl9CgoJLyoqCgkgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKSB7CgkJJG91dHB1dC0+YWRkKCAnQG1lZGlhICcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCSR0aGlzLT5mZWF0dXJlcy0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJTGVzc19UcmVlOjpvdXRwdXRSdWxlc2V0KCAkb3V0cHV0LCAkdGhpcy0+cnVsZXMgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50ICRlbnYKCSAqIEByZXR1cm4gc2VsZnxMZXNzX1RyZWVfUnVsZXNldAoJICogQHNlZSBsZXNzLTIuNS4zLmpzI01lZGlhLnByb3RvdHlwZS5ldmFsCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCAkZW52ICkgewoJCSRtZWRpYSA9IG5ldyBzZWxmKCBbXSwgW10sICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoKCQkkbWF0aEJ5cGFzcyA9IGZhbHNlOwoJCWlmICggISRlbnYtPm1hdGhPbiApIHsKCQkJJG1hdGhCeXBhc3MgPSB0cnVlOwoJCQkkZW52LT5tYXRoT24gPSB0cnVlOwoJCX0KCgkJJG1lZGlhLT5mZWF0dXJlcyA9ICR0aGlzLT5mZWF0dXJlcy0+Y29tcGlsZSggJGVudiApOwoKCQlpZiAoICRtYXRoQnlwYXNzICkgewoJCQkkZW52LT5tYXRoT24gPSBmYWxzZTsKCQl9CgoJCSRlbnYtPm1lZGlhUGF0aFtdID0gJG1lZGlhOwoJCSRlbnYtPm1lZGlhQmxvY2tzW10gPSAkbWVkaWE7CgoJCWFycmF5X3Vuc2hpZnQoICRlbnYtPmZyYW1lcywgJHRoaXMtPnJ1bGVzWzBdICk7CgkJJG1lZGlhLT5ydWxlcyA9IFsgJHRoaXMtPnJ1bGVzWzBdLT5jb21waWxlKCAkZW52ICkgXTsKCQlhcnJheV9zaGlmdCggJGVudi0+ZnJhbWVzICk7CgoJCWFycmF5X3BvcCggJGVudi0+bWVkaWFQYXRoICk7CgoJCXJldHVybiAhJGVudi0+bWVkaWFQYXRoID8gJG1lZGlhLT5jb21waWxlVG9wKCAkZW52ICkgOiAkbWVkaWEtPmNvbXBpbGVOZXN0ZWQoICRlbnYgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmFyaWFibGUoICRuYW1lICkgewoJCXJldHVybiAkdGhpcy0+cnVsZXNbMF0tPnZhcmlhYmxlKCAkbmFtZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmaW5kKCAkc2VsZWN0b3IgKSB7CgkJcmV0dXJuICR0aGlzLT5ydWxlc1swXS0+ZmluZCggJHNlbGVjdG9yLCAkdGhpcyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlbXB0eVNlbGVjdG9ycygpIHsKCQkkZWwgPSBuZXcgTGVzc19UcmVlX0VsZW1lbnQoICcnLCAnJicsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCSRzZWxzID0gWyBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCBbICRlbCBdLCBbXSwgbnVsbCwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvICkgXTsKCQkkc2Vsc1swXS0+bWVkaWFFbXB0eSA9IHRydWU7CgkJcmV0dXJuICRzZWxzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBtYXJrUmVmZXJlbmNlZCgpIHsKCQkkdGhpcy0+cnVsZXNbMF0tPm1hcmtSZWZlcmVuY2VkKCk7CgkJJHRoaXMtPmlzUmVmZXJlbmNlZCA9IHRydWU7CgkJTGVzc19UcmVlOjpSZWZlcmVuY2VkQXJyYXkoICR0aGlzLT5ydWxlc1swXS0+cnVsZXMgKTsKCX0KCgkvLyBldmFsdG9wCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZVRvcCggJGVudiApIHsKCQkkcmVzdWx0ID0gJHRoaXM7CgoJCWlmICggY291bnQoICRlbnYtPm1lZGlhQmxvY2tzICkgPiAxICkgewoJCQkkc2VsZWN0b3JzID0gJHRoaXMtPmVtcHR5U2VsZWN0b3JzKCk7CgkJCSRyZXN1bHQgPSBuZXcgTGVzc19UcmVlX1J1bGVzZXQoICRzZWxlY3RvcnMsICRlbnYtPm1lZGlhQmxvY2tzICk7CgkJCSRyZXN1bHQtPm11bHRpTWVkaWEgPSB0cnVlOwoJCX0KCgkJJGVudi0+bWVkaWFCbG9ja3MgPSBbXTsKCQkkZW52LT5tZWRpYVBhdGggPSBbXTsKCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19FbnZpcm9ubWVudCAkZW52CgkgKiBAcmV0dXJuIExlc3NfVHJlZV9SdWxlc2V0CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlTmVzdGVkKCAkZW52ICkgewoJCSRwYXRoID0gYXJyYXlfbWVyZ2UoICRlbnYtPm1lZGlhUGF0aCwgWyAkdGhpcyBdICk7CgkJJ0BwaGFuLXZhciBzZWxmW10gJHBhdGgnOwoKCQkvLyBFeHRyYWN0IHRoZSBtZWRpYS1xdWVyeSBjb25kaXRpb25zIHNlcGFyYXRlZCB3aXRoIGAsYCAoT1IpLgoJCWZvcmVhY2ggKCAkcGF0aCBhcyAka2V5ID0+ICRwICkgewoJCQkkdmFsdWUgPSAkcC0+ZmVhdHVyZXMgaW5zdGFuY2VvZiBMZXNzX1RyZWVfVmFsdWUgPyAkcC0+ZmVhdHVyZXMtPnZhbHVlIDogJHAtPmZlYXR1cmVzOwoJCQkkcGF0aFska2V5XSA9IGlzX2FycmF5KCAkdmFsdWUgKSA/ICR2YWx1ZSA6IFsgJHZhbHVlIF07CgkJfQoJCSdAcGhhbi12YXIgYXJyYXk8YXJyYXk8TGVzc19UcmVlPj4gJHBhdGgnOwoKCQkvLyBUcmFjZSBhbGwgcGVybXV0YXRpb25zIHRvIGdlbmVyYXRlIHRoZSByZXN1bHRpbmcgbWVkaWEtcXVlcnkuCgkJLy8KCQkvLyAoYSwgYiBhbmQgYykgd2l0aCBuZXN0ZWQgKGQsIGUpIC0+CgkJLy8JYSBhbmQgZAoJCS8vCWEgYW5kIGUKCQkvLwliIGFuZCBjIGFuZCBkCgkJLy8JYiBhbmQgYyBhbmQgZQoKCQkkcGVybXV0ZWQgPSAkdGhpcy0+cGVybXV0ZSggJHBhdGggKTsKCQknQHBoYW4tdmFyIChMZXNzX1RyZWV8c3RyaW5nKVtdW10gJHBlcm11dGVkJzsKCQkkZXhwcmVzc2lvbnMgPSBbXTsKCQlmb3JlYWNoICggJHBlcm11dGVkIGFzICRwYXRoICkgewoKCQkJZm9yICggJGkgPSAwLCAkbGVuID0gY291bnQoICRwYXRoICk7ICRpIDwgJGxlbjsgJGkrKyApIHsKCQkJCSRwYXRoWyRpXSA9ICRwYXRoWyRpXSBpbnN0YW5jZW9mIExlc3NfVHJlZSA/ICRwYXRoWyRpXSA6IG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAkcGF0aFskaV0gKTsKCQkJfQoKCQkJZm9yICggJGkgPSBjb3VudCggJHBhdGggKSAtIDE7ICRpID4gMDsgJGktLSApIHsKCQkJCWFycmF5X3NwbGljZSggJHBhdGgsICRpLCAwLCBbIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCAnYW5kJyApIF0gKTsKCQkJfQoKCQkJJGV4cHJlc3Npb25zW10gPSBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oICRwYXRoICk7CgkJfQoJCSR0aGlzLT5mZWF0dXJlcyA9IG5ldyBMZXNzX1RyZWVfVmFsdWUoICRleHByZXNzaW9ucyApOwoKCQkvLyBGYWtlIGEgdHJlZS1ub2RlIHRoYXQgZG9lc24ndCBvdXRwdXQgYW55dGhpbmcuCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfUnVsZXNldCggW10sIFtdICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHBlcm11dGUoICRhcnIgKSB7CgkJaWYgKCAhJGFyciApIHsKCQkJcmV0dXJuIFtdOwoJCX0KCgkJaWYgKCBjb3VudCggJGFyciApID09IDEgKSB7CgkJCXJldHVybiAkYXJyWzBdOwoJCX0KCgkJJHJlc3VsdCA9IFtdOwoJCSRyZXN0ID0gJHRoaXMtPnBlcm11dGUoIGFycmF5X3NsaWNlKCAkYXJyLCAxICkgKTsKCQlmb3JlYWNoICggJHJlc3QgYXMgJHIgKSB7CgkJCWZvcmVhY2ggKCAkYXJyWzBdIGFzICRhICkgewoJCQkJJHJlc3VsdFtdID0gYXJyYXlfbWVyZ2UoCgkJCQkJaXNfYXJyYXkoICRhICkgPyAkYSA6IFsgJGEgXSwKCQkJCQlpc19hcnJheSggJHIgKSA/ICRyIDogWyAkciBdCgkJCQkpOwoJCQl9CgkJfQoKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYnViYmxlU2VsZWN0b3JzKCAkc2VsZWN0b3JzICkgewoJCWlmICggISRzZWxlY3RvcnMgKSB7CgkJCXJldHVybjsKCQl9CgoJCSR0aGlzLT5ydWxlcyA9IFsgbmV3IExlc3NfVHJlZV9SdWxlc2V0KCAkc2VsZWN0b3JzLCBbICR0aGlzLT5ydWxlc1swXSBdICkgXTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Mixin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Mixin/Call.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfTWl4aW5fQ2FsbCBleHRlbmRzIExlc3NfVHJlZSB7CgoJLyoqIEB2YXIgTGVzc19UcmVlX1NlbGVjdG9yICovCglwdWJsaWMgJHNlbGVjdG9yOwoJLyoqIEB2YXIgYXJyYXlbXSAqLwoJcHVibGljICRhcmd1bWVudHM7CgkvKiogQHZhciBpbnQgKi8KCXB1YmxpYyAkaW5kZXg7CgkvKiogQHZhciBhcnJheSAqLwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljICRpbXBvcnRhbnQ7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkZWxlbWVudHMsICRhcmdzLCAkaW5kZXgsICRjdXJyZW50RmlsZUluZm8sICRpbXBvcnRhbnQgPSBmYWxzZSApIHsKCQkkdGhpcy0+c2VsZWN0b3IgPSBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCAkZWxlbWVudHMgKTsKCQkkdGhpcy0+YXJndW1lbnRzID0gJGFyZ3M7CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJCSR0aGlzLT5pbXBvcnRhbnQgPSAkaW1wb3J0YW50OwoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTIuNS4zLmpzI01peGluQ2FsbC5wcm90b3R5cGUuZXZhbAoJICovCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkkcnVsZXMgPSBbXTsKCQkkbWF0Y2ggPSBmYWxzZTsKCQkkaXNPbmVGb3VuZCA9IGZhbHNlOwoJCSRjYW5kaWRhdGVzID0gW107CgkJJGNvbmRpdGlvblJlc3VsdCA9IFtdOwoJCSR0aGlzLT5zZWxlY3RvciA9ICR0aGlzLT5zZWxlY3Rvci0+Y29tcGlsZSggJGVudiApOwoJCSRhcmdzID0gW107CgkJZm9yZWFjaCAoICR0aGlzLT5hcmd1bWVudHMgYXMgJGEgKSB7CgkJCSRhcmdWYWx1ZSA9ICRhWyd2YWx1ZSddLT5jb21waWxlKCAkZW52ICk7CgkJCWlmICggIWVtcHR5KCAkYVsnZXhwYW5kJ10gKSAmJiBpc19hcnJheSggJGFyZ1ZhbHVlLT52YWx1ZSApICkgewoJCQkJZm9yZWFjaCAoICRhcmdWYWx1ZS0+dmFsdWUgYXMgJHZhbHVlICkgewoJCQkJCSRhcmdzW10gPSBbICduYW1lJyA9PiBudWxsLCAndmFsdWUnID0+ICR2YWx1ZSBdOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJGFyZ3NbXSA9IFsgJ25hbWUnID0+ICRhWyduYW1lJ10sICd2YWx1ZScgPT4gJGFyZ1ZhbHVlIF07CgkJCX0KCQl9CgoJCSRkZWZOb25lID0gMDsKCQkkZGVmVHJ1ZSA9IDE7CgkJJGRlZkZhbHNlID0gMjsKCQlmb3JlYWNoICggJGVudi0+ZnJhbWVzIGFzICRmcmFtZSApIHsKCQkJJG5vQXJndW1lbnRzRmlsdGVyID0gc3RhdGljIGZ1bmN0aW9uICggJHJ1bGUgKSB1c2UgKCAkZW52ICkgewoJCQkJcmV0dXJuICRydWxlLT5tYXRjaEFyZ3MoIFtdLCAkZW52ICk7CgkJCX07CgkJCSRtaXhpbnMgPSAkZnJhbWUtPmZpbmQoICR0aGlzLT5zZWxlY3RvciwgbnVsbCwgJG5vQXJndW1lbnRzRmlsdGVyICk7CgkJCWlmICggISRtaXhpbnMgKSB7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJGlzT25lRm91bmQgPSB0cnVlOwoKCQkJLy8gVG8gbWFrZSBgZGVmYXVsdCgpYCBmdW5jdGlvbiBpbmRlcGVuZGVudCBvZiBkZWZpbml0aW9uIG9yZGVyIHdlIGhhdmUgdHdvICJzdWJwYXNzZXMiIGhlcmUuCgkJCS8vIEF0IGZpcnN0IHdlIGV2YWx1YXRlIGVhY2ggZ3VhcmQgKnR3aWNlKiAod2l0aCBgZGVmYXVsdCgpID09IHRydWVgIGFuZCBgZGVmYXVsdCgpID09IGZhbHNlYCksCgkJCS8vIGFuZCBidWlsZCBjYW5kaWRhdGUgbGlzdCB3aXRoIGNvcnJlc3BvbmRpbmcgZmxhZ3MuIFRoZW4sIHdoZW4gd2Uga25vdyBhbGwgcG9zc2libGUgbWF0Y2hlcywKCQkJLy8gd2UgbWFrZSBhIGZpbmFsIGRlY2lzaW9uLgoKCQkJJG1peGluc19sZW4gPSBjb3VudCggJG1peGlucyApOwoJCQlmb3IgKCAkbSA9IDA7ICRtIDwgJG1peGluc19sZW47ICRtKysgKSB7CgkJCQkkbWl4aW4gPSAkbWl4aW5zWyRtXVsicnVsZSJdOwoJCQkJJG1peGluUGF0aCA9ICRtaXhpbnNbJG1dWyJwYXRoIl07CgoJCQkJaWYgKCAkdGhpcy0+SXNSZWN1cnNpdmUoICRlbnYsICRtaXhpbiApICkgewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCWlmICggJG1peGluLT5tYXRjaEFyZ3MoICRhcmdzLCAkZW52ICkgKSB7CgoJCQkJCS8vIGxlc3MtMi41LjMuanMjTWl4aW5DYWxsIGNhbGNEZWZHcm91cCgpCgkJCQkJJGdyb3VwID0gLTE7CgkJCQkJZm9yICggJGYgPSAwOyAkZiA8IDI7ICRmKysgKSB7CgkJCQkJCSRjb25kaXRpb25SZXN1bHRbJGZdID0gdHJ1ZTsKCQkJCQkJTGVzc19UcmVlX0RlZmF1bHRGdW5jOjp2YWx1ZSggJGYgKTsKCQkJCQkJZm9yICggJHAgPSAwOyAkcCA8IGNvdW50KCAkbWl4aW5QYXRoICkgJiYgJGNvbmRpdGlvblJlc3VsdFskZl07ICRwKysgKSB7CgkJCQkJCQkkbmFtZXNwYWNlID0gJG1peGluUGF0aFskcF0gPz8gbnVsbDsKCQkJCQkJCWlmICggaXNzZXQoICRuYW1lc3BhY2UgKSAmJiBtZXRob2RfZXhpc3RzKCAkbmFtZXNwYWNlLCAibWF0Y2hDb25kaXRpb24iICkgKSB7CgkJCQkJCQkJJGNvbmRpdGlvblJlc3VsdFskZl0gPSAkY29uZGl0aW9uUmVzdWx0WyRmXSAmJiAkbmFtZXNwYWNlLT5tYXRjaENvbmRpdGlvbiggbnVsbCwgJGVudiApOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWlmICggbWV0aG9kX2V4aXN0cyggJG1peGluLCAibWF0Y2hDb25kaXRpb24iICkgKSB7CgkJCQkJCQkkY29uZGl0aW9uUmVzdWx0WyRmXSA9ICRjb25kaXRpb25SZXN1bHRbJGZdICYmICRtaXhpbi0+bWF0Y2hDb25kaXRpb24oICRhcmdzLCAkZW52ICk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJLy8gUGhhblR5cGVJbnZhbGlkRGltT2Zmc2V0IC0tIEZhbHNlIHBvc2l0aXZlCgkJCQkJJ0BwaGFuLXZhciBhcnJheXswOmJvb2wsMTpib29sfSAkY29uZGl0aW9uUmVzdWx0JzsKCQkJCQlpZiAoICRjb25kaXRpb25SZXN1bHRbMF0gfHwgJGNvbmRpdGlvblJlc3VsdFsxXSApIHsKCQkJCQkJaWYgKCAkY29uZGl0aW9uUmVzdWx0WzBdICE9ICRjb25kaXRpb25SZXN1bHRbMV0gKSB7CgkJCQkJCQkkZ3JvdXAgPSAkY29uZGl0aW9uUmVzdWx0WzFdID8KCQkJCQkJCQkkZGVmVHJ1ZSA6ICRkZWZGYWxzZTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCSRncm91cCA9ICRkZWZOb25lOwoJCQkJCQl9CgoJCQkJCX0KCgkJCQkJJGNhbmRpZGF0ZSA9IFsgJ21peGluJyA9PiAkbWl4aW4sICdncm91cCcgPT4gJGdyb3VwIF07CgoJCQkJCWlmICggJGNhbmRpZGF0ZVsiZ3JvdXAiXSAhPT0gLTEgKSB7CgkJCQkJCSRjYW5kaWRhdGVzW10gPSAkY2FuZGlkYXRlOwoJCQkJCX0KCgkJCQkJJG1hdGNoID0gdHJ1ZTsKCQkJCX0KCQkJfQoKCQkJTGVzc19UcmVlX0RlZmF1bHRGdW5jOjpyZXNldCgpOwoKCQkJJGNvdW50ID0gWyAwLCAwLCAwIF07CgkJCWZvciAoICRtID0gMDsgJG0gPCBjb3VudCggJGNhbmRpZGF0ZXMgKTsgJG0rKyApIHsKCQkJCSRjb3VudFsgJGNhbmRpZGF0ZXNbJG1dWydncm91cCddIF0rKzsKCQkJfQoKCQkJaWYgKCAkY291bnRbJGRlZk5vbmVdID4gMCApIHsKCQkJCSRkZWZhdWx0UmVzdWx0ID0gJGRlZkZhbHNlOwoJCQl9IGVsc2UgewoJCQkJJGRlZmF1bHRSZXN1bHQgPSAkZGVmVHJ1ZTsKCQkJCWlmICggKCAkY291bnRbJGRlZlRydWVdICsgJGNvdW50WyRkZWZGYWxzZV0gKSA+IDEgKSB7CgkJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbiggJ0FtYmlndW91cyB1c2Ugb2YgYGRlZmF1bHQoKWAgZm91bmQgd2hlbiBtYXRjaGluZyBmb3IgYCcgLiAkdGhpcy0+Zm9ybWF0KCAkYXJncyApIC4gJ2AnICk7CgkJCQl9CgkJCX0KCgkJCSRjYW5kaWRhdGVzX2xlbmd0aCA9IGNvdW50KCAkY2FuZGlkYXRlcyApOwoJCQlmb3IgKCAkbSA9IDA7ICRtIDwgJGNhbmRpZGF0ZXNfbGVuZ3RoOyAkbSsrICkgewoJCQkJJGNhbmRpZGF0ZSA9ICRjYW5kaWRhdGVzWyRtXVsnZ3JvdXAnXTsKCQkJCWlmICggKCAkY2FuZGlkYXRlID09PSAkZGVmTm9uZSApIHx8ICggJGNhbmRpZGF0ZSA9PT0gJGRlZmF1bHRSZXN1bHQgKSApIHsKCQkJCQl0cnkgewoJCQkJCQkkbWl4aW4gPSAkY2FuZGlkYXRlc1skbV1bJ21peGluJ107CgkJCQkJCWlmICggISggJG1peGluIGluc3RhbmNlb2YgTGVzc19UcmVlX01peGluX0RlZmluaXRpb24gKSApIHsKCQkJCQkJCSRvcmlnaW5hbFJ1bGVzZXQgPSAkbWl4aW4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldCA/ICRtaXhpbi0+b3JpZ2luYWxSdWxlc2V0IDogJG1peGluOwoJCQkJCQkJJG1peGluID0gbmV3IExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uKCAnJywgW10sICRtaXhpbi0+cnVsZXMsIG51bGwsIGZhbHNlICk7CgkJCQkJCQkkbWl4aW4tPm9yaWdpbmFsUnVsZXNldCA9ICRvcmlnaW5hbFJ1bGVzZXQ7CgkJCQkJCX0KCQkJCQkJJHJ1bGVzID0gYXJyYXlfbWVyZ2UoICRydWxlcywgJG1peGluLT5ldmFsQ2FsbCggJGVudiwgJGFyZ3MsICR0aGlzLT5pbXBvcnRhbnQgKS0+cnVsZXMgKTsKCQkJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoICRlLT5nZXRNZXNzYWdlKCksIG51bGwsIG51bGwsICR0aGlzLT5jdXJyZW50RmlsZUluZm8gKTsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCWlmICggJG1hdGNoICkgewoJCQkJaWYgKCAhJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyB8fCAhaXNzZXQoICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddICkgfHwgISR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddICkgewoJCQkJCUxlc3NfVHJlZTo6UmVmZXJlbmNlZEFycmF5KCAkcnVsZXMgKTsKCQkJCX0KCgkJCQlyZXR1cm4gJHJ1bGVzOwoJCQl9CgkJfQoKCQlpZiAoICRpc09uZUZvdW5kICkgewoJCQkkc2VsZWN0b3JOYW1lID0gJHRoaXMtPnNlbGVjdG9yLT50b0NTUygpOwoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQknTm8gbWF0Y2hpbmcgZGVmaW5pdGlvbiB3YXMgZm91bmQgZm9yICcgLiAkc2VsZWN0b3JOYW1lIC4gJyB3aXRoIGFyZ3MgYCcgLiAkdGhpcy0+Rm9ybWF0KCAkYXJncyApIC4gJ2AnLAoJCQkJbnVsbCwKCQkJCSR0aGlzLT5pbmRleCwKCQkJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8KCQkJKTsKCgkJfSBlbHNlIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJdHJpbSggJHRoaXMtPnNlbGVjdG9yLT50b0NTUygpICkgLiAiIGlzIHVuZGVmaW5lZCBpbiAiIC4gJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1snZmlsZW5hbWUnXSwKCQkJCW51bGwsCgkJCQkkdGhpcy0+aW5kZXgKCQkJKTsKCQl9Cgl9CgoJLyoqCgkgKiBGb3JtYXQgdGhlIGFyZ3MgZm9yIHVzZSBpbiBleGNlcHRpb24gbWVzc2FnZXMKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBGb3JtYXQoICRhcmdzICkgewoJCSRtZXNzYWdlID0gW107CgkJaWYgKCAkYXJncyApIHsKCQkJZm9yZWFjaCAoICRhcmdzIGFzICRhICkgewoJCQkJJGFyZ1ZhbHVlID0gJyc7CgkJCQlpZiAoICRhWyduYW1lJ10gKSB7CgkJCQkJJGFyZ1ZhbHVlIC49ICRhWyduYW1lJ10gLiAnOic7CgkJCQl9CgkJCQlpZiAoICRhWyd2YWx1ZSddIGluc3RhbmNlb2YgTGVzc19UcmVlICkgewoJCQkJCSRhcmdWYWx1ZSAuPSAkYVsndmFsdWUnXS0+dG9DU1MoKTsKCQkJCX0gZWxzZSB7CgkJCQkJJGFyZ1ZhbHVlIC49ICc/Pz8nOwoJCQkJfQoJCQkJJG1lc3NhZ2VbXSA9ICRhcmdWYWx1ZTsKCQkJfQoJCX0KCQlyZXR1cm4gaW1wbG9kZSggJywgJywgJG1lc3NhZ2UgKTsKCX0KCgkvKioKCSAqIEFyZSB3ZSBpbiBhIHJlY3Vyc2l2ZSBtaXhpbiBjYWxsPwoJICoKCSAqIEByZXR1cm4gYm9vbAoJICovCglwcml2YXRlIGZ1bmN0aW9uIElzUmVjdXJzaXZlKCAkZW52LCAkbWl4aW4gKSB7CgkJZm9yZWFjaCAoICRlbnYtPmZyYW1lcyBhcyAkcmVjdXJfZnJhbWUgKSB7CgkJCWlmICggISggJG1peGluIGluc3RhbmNlb2YgTGVzc19UcmVlX01peGluX0RlZmluaXRpb24gKSApIHsKCgkJCQlpZiAoICRtaXhpbiA9PT0gJHJlY3VyX2ZyYW1lICkgewoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoKCQkJCWlmICggaXNzZXQoICRyZWN1cl9mcmFtZS0+b3JpZ2luYWxSdWxlc2V0ICkgJiYgJG1peGluLT5ydWxlc2V0X2lkID09PSAkcmVjdXJfZnJhbWUtPm9yaWdpbmFsUnVsZXNldCApIHsKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Mixin/Definition.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfTWl4aW5fRGVmaW5pdGlvbiBleHRlbmRzIExlc3NfVHJlZV9SdWxlc2V0IHsKCS8qKiBAdmFyIHN0cmluZyAqLwoJcHVibGljICRuYW1lOwoJLyoqIEB2YXIgTGVzc19UcmVlX1NlbGVjdG9yW10gKi8KCXB1YmxpYyAkc2VsZWN0b3JzOwoJLyoqIEB2YXIgYXJyYXlbXSAqLwoJcHVibGljICRwYXJhbXM7CgkvKiogQHZhciBpbnQgKi8KCXB1YmxpYyAkYXJpdHkgPSAwOwoJLyoqIEB2YXIgTGVzc19UcmVlW10gKi8KCXB1YmxpYyAkcnVsZXM7CgkvKiogQHZhciBhcnJheVtdW10gKi8KCXB1YmxpYyAkbG9va3VwcyA9IFtdOwoJLyoqIEB2YXIgaW50ICovCglwdWJsaWMgJHJlcXVpcmVkID0gMDsKCS8qKiBAdmFyIGFycmF5ICovCglwdWJsaWMgJGZyYW1lcyA9IFtdOwoJLyoqIEB2YXIgTGVzc19UcmVlX0NvbmRpdGlvbnxudWxsICovCglwdWJsaWMgJGNvbmRpdGlvbjsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkdmFyaWFkaWM7CgkvKiogQHZhciBhcnJheTxzdHJpbmcsdHJ1ZT4gKi8KCXB1YmxpYyAkb3B0aW9uYWxQYXJhbWV0ZXJzID0gW107CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkbmFtZSwgJHBhcmFtcywgJHJ1bGVzLCAkY29uZGl0aW9uLCAkdmFyaWFkaWMgPSBmYWxzZSwgJGZyYW1lcyA9IFtdICkgewoJCSR0aGlzLT5uYW1lID0gJG5hbWU7CgkJJHRoaXMtPnNlbGVjdG9ycyA9IFsgbmV3IExlc3NfVHJlZV9TZWxlY3RvciggWyBuZXcgTGVzc19UcmVlX0VsZW1lbnQoIG51bGwsICRuYW1lICkgXSApIF07CgoJCSR0aGlzLT5wYXJhbXMgPSAkcGFyYW1zOwoJCSR0aGlzLT5jb25kaXRpb24gPSAkY29uZGl0aW9uOwoJCSR0aGlzLT52YXJpYWRpYyA9ICR2YXJpYWRpYzsKCQkkdGhpcy0+cnVsZXMgPSAkcnVsZXM7CgoJCWlmICggJHBhcmFtcyApIHsKCQkJJHRoaXMtPmFyaXR5ID0gY291bnQoICRwYXJhbXMgKTsKCQkJZm9yZWFjaCAoICRwYXJhbXMgYXMgJHAgKSB7CgkJCQlpZiAoICFpc3NldCggJHBbJ25hbWUnXSApIHx8ICggJHBbJ25hbWUnXSAmJiAhaXNzZXQoICRwWyd2YWx1ZSddICkgKSApIHsKCQkJCQkkdGhpcy0+cmVxdWlyZWQrKzsKCQkJCX0gZWxzZSB7CgkJCQkJJHRoaXMtPm9wdGlvbmFsUGFyYW1ldGVyc1sgKHN0cmluZykkcFsnbmFtZSddIF0gPSB0cnVlOwoJCQkJfQoJCQl9CgkJfQoKCQkkdGhpcy0+ZnJhbWVzID0gJGZyYW1lczsKCQkkdGhpcy0+U2V0UnVsZXNldEluZGV4KCk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19FbnZpcm9ubWVudCAkZW52CgkgKiBAc2VlIGxlc3MtMi41LjMuanMjRGVmaW5pdGlvbi5wcm90b3R5cGUuZXZhbFBhcmFtcwoJICovCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZVBhcmFtcyggJGVudiwgJG1peGluRnJhbWVzLCAkYXJncyA9IFtdLCAmJGV2YWxkQXJndW1lbnRzID0gW10gKSB7CgkJJGZyYW1lID0gbmV3IExlc3NfVHJlZV9SdWxlc2V0KCBudWxsLCBbXSApOwoJCSRwYXJhbXMgPSAkdGhpcy0+cGFyYW1zOwoJCSRtaXhpbkVudiA9IG51bGw7CgkJJGFyZ3NMZW5ndGggPSAwOwoKCQlpZiAoICRhcmdzICkgewoJCQkkYXJnc0xlbmd0aCA9IGNvdW50KCAkYXJncyApOwoJCQlmb3IgKCAkaSA9IDA7ICRpIDwgJGFyZ3NMZW5ndGg7ICRpKysgKSB7CgkJCQkkYXJnID0gJGFyZ3NbJGldOwoKCQkJCWlmICggJGFyZyAmJiAkYXJnWyduYW1lJ10gKSB7CgkJCQkJJGlzTmFtZWRGb3VuZCA9IGZhbHNlOwoKCQkJCQlmb3JlYWNoICggJHBhcmFtcyBhcyAkaiA9PiAkcGFyYW0gKSB7CgkJCQkJCWlmICggIWlzc2V0KCAkZXZhbGRBcmd1bWVudHNbJGpdICkgJiYgJGFyZ1snbmFtZSddID09PSAkcGFyYW1bJ25hbWUnXSApIHsKCQkJCQkJCSRldmFsZEFyZ3VtZW50c1skal0gPSAkYXJnWyd2YWx1ZSddLT5jb21waWxlKCAkZW52ICk7CgkJCQkJCQlhcnJheV91bnNoaWZ0KCAkZnJhbWUtPnJ1bGVzLCBuZXcgTGVzc19UcmVlX0RlY2xhcmF0aW9uKCAkYXJnWyduYW1lJ10sICRhcmdbJ3ZhbHVlJ10tPmNvbXBpbGUoICRlbnYgKSApICk7CgkJCQkJCQkkaXNOYW1lZEZvdW5kID0gdHJ1ZTsKCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWlmICggJGlzTmFtZWRGb3VuZCApIHsKCQkJCQkJYXJyYXlfc3BsaWNlKCAkYXJncywgJGksIDEgKTsKCQkJCQkJJGktLTsKCQkJCQkJJGFyZ3NMZW5ndGgtLTsKCQkJCQl9IGVsc2UgewoJCQkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoICJOYW1lZCBhcmd1bWVudCBmb3IgIiAuICR0aGlzLT5uYW1lIC4gJyAnIC4gJGFyZ3NbJGldWyduYW1lJ10gLiAnIG5vdCBmb3VuZCcgKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgoJCSRhcmdJbmRleCA9IDA7CgkJZm9yZWFjaCAoICRwYXJhbXMgYXMgJGkgPT4gJHBhcmFtICkgewoJCQlpZiAoIGlzc2V0KCAkZXZhbGRBcmd1bWVudHNbJGldICkgKSB7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJGFyZyA9ICRhcmdzWyRhcmdJbmRleF0gPz8gbnVsbDsKCgkJCSRuYW1lID0gJHBhcmFtWyduYW1lJ10gPz8gbnVsbDsKCQkJaWYgKCAkbmFtZSApIHsKCQkJCWlmICggaXNzZXQoICRwYXJhbVsndmFyaWFkaWMnXSApICkgewoJCQkJCSR2YXJhcmdzID0gW107CgkJCQkJZm9yICggJGogPSAkYXJnSW5kZXg7ICRqIDwgJGFyZ3NMZW5ndGg7ICRqKysgKSB7CgkJCQkJCSR2YXJhcmdzW10gPSAkYXJnc1skal1bJ3ZhbHVlJ10tPmNvbXBpbGUoICRlbnYgKTsKCQkJCQl9CgkJCQkJJGV4cHJlc3Npb24gPSBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oICR2YXJhcmdzICk7CgkJCQkJYXJyYXlfdW5zaGlmdCggJGZyYW1lLT5ydWxlcywgbmV3IExlc3NfVHJlZV9EZWNsYXJhdGlvbiggJG5hbWUsICRleHByZXNzaW9uLT5jb21waWxlKCAkZW52ICkgKSApOwoJCQkJfSBlbHNlIHsKCQkJCQkkdmFsID0gKCAkYXJnICYmICRhcmdbJ3ZhbHVlJ10gKSA/ICRhcmdbJ3ZhbHVlJ10gOiBmYWxzZTsKCgkJCQkJaWYgKCAkdmFsICkgewoJCQkJCQkvLyBUaGlzIHdhcyBhIG1peGluIGNhbGwsIHBhc3MgaW4gYSBkZXRhY2hlZCBydWxlc2V0IG9mIGl0J3MgZXZhbCdkIHJ1bGVzCgkJCQkJCWlmICggaXNfYXJyYXkoICR2YWwgKSApIHsKCQkJCQkJCSR2YWwgPSBuZXcgTGVzc19UcmVlX0RldGFjaGVkUnVsZXNldCggbmV3IExlc3NfVHJlZV9SdWxlc2V0KCBudWxsLCAkdmFsICkgKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCSR2YWwgPSAkdmFsLT5jb21waWxlKCAkZW52ICk7CgkJCQkJCX0KCQkJCQl9IGVsc2VpZiAoIGlzc2V0KCAkcGFyYW1bJ3ZhbHVlJ10gKSApIHsKCgkJCQkJCWlmICggISRtaXhpbkVudiApIHsKCQkJCQkJCSRtaXhpbkVudiA9ICRlbnYtPmNvcHlFdmFsRW52KCBhcnJheV9tZXJnZSggWyAkZnJhbWUgXSwgJG1peGluRnJhbWVzICkgKTsKCQkJCQkJfQoKCQkJCQkJJHZhbCA9ICRwYXJhbVsndmFsdWUnXS0+Y29tcGlsZSggJG1peGluRW52ICk7CgkJCQkJCSRmcmFtZS0+cmVzZXRDYWNoZSgpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yICIgLiAkdGhpcy0+bmFtZSAuICIgKCIgLiAkYXJnc0xlbmd0aCAuICcgZm9yICcgLiAkdGhpcy0+YXJpdHkgLiAiKSIgKTsKCQkJCQl9CgoJCQkJCWFycmF5X3Vuc2hpZnQoICRmcmFtZS0+cnVsZXMsIG5ldyBMZXNzX1RyZWVfRGVjbGFyYXRpb24oICRuYW1lLCAkdmFsICkgKTsKCQkJCQkkZXZhbGRBcmd1bWVudHNbJGldID0gJHZhbDsKCQkJCX0KCQkJfQoKCQkJaWYgKCBpc3NldCggJHBhcmFtWyd2YXJpYWRpYyddICkgJiYgJGFyZ3MgKSB7CgkJCQlmb3IgKCAkaiA9ICRhcmdJbmRleDsgJGogPCAkYXJnc0xlbmd0aDsgJGorKyApIHsKCQkJCQkkZXZhbGRBcmd1bWVudHNbJGpdID0gJGFyZ3NbJGpdWyd2YWx1ZSddLT5jb21waWxlKCAkZW52ICk7CgkJCQl9CgkJCX0KCQkJJGFyZ0luZGV4Kys7CgkJfQoKCQlrc29ydCggJGV2YWxkQXJndW1lbnRzICk7CgkJJGV2YWxkQXJndW1lbnRzID0gYXJyYXlfdmFsdWVzKCAkZXZhbGRBcmd1bWVudHMgKTsKCgkJcmV0dXJuICRmcmFtZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQlpZiAoICR0aGlzLT5mcmFtZXMgKSB7CgkJCXJldHVybiBuZXcgc2VsZiggJHRoaXMtPm5hbWUsICR0aGlzLT5wYXJhbXMsICR0aGlzLT5ydWxlcywgJHRoaXMtPmNvbmRpdGlvbiwgJHRoaXMtPnZhcmlhZGljLCAkdGhpcy0+ZnJhbWVzICk7CgkJfQoJCXJldHVybiBuZXcgc2VsZiggJHRoaXMtPm5hbWUsICR0aGlzLT5wYXJhbXMsICR0aGlzLT5ydWxlcywgJHRoaXMtPmNvbmRpdGlvbiwgJHRoaXMtPnZhcmlhZGljLCAkZW52LT5mcmFtZXMgKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50ICRlbnYKCSAqIEBwYXJhbSBhcnJheXxudWxsICRhcmdzCgkgKiBAcGFyYW0gYm9vbHxudWxsICRpbXBvcnRhbnQKCSAqIEByZXR1cm4gTGVzc19UcmVlX1J1bGVzZXQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGV2YWxDYWxsKCAkZW52LCAkYXJncyA9IG51bGwsICRpbXBvcnRhbnQgPSBudWxsICkgewoJCUxlc3NfRW52aXJvbm1lbnQ6OiRtaXhpbl9zdGFjaysrOwoKCQkkX2FyZ3VtZW50cyA9IFtdOwoKCQlpZiAoICR0aGlzLT5mcmFtZXMgKSB7CgkJCSRtaXhpbkZyYW1lcyA9IGFycmF5X21lcmdlKCAkdGhpcy0+ZnJhbWVzLCAkZW52LT5mcmFtZXMgKTsKCQl9IGVsc2UgewoJCQkkbWl4aW5GcmFtZXMgPSAkZW52LT5mcmFtZXM7CgkJfQoKCQkkZnJhbWUgPSAkdGhpcy0+Y29tcGlsZVBhcmFtcyggJGVudiwgJG1peGluRnJhbWVzLCAkYXJncywgJF9hcmd1bWVudHMgKTsKCgkJJGV4ID0gbmV3IExlc3NfVHJlZV9FeHByZXNzaW9uKCAkX2FyZ3VtZW50cyApOwoJCWFycmF5X3Vuc2hpZnQoICRmcmFtZS0+cnVsZXMsIG5ldyBMZXNzX1RyZWVfRGVjbGFyYXRpb24oICdAYXJndW1lbnRzJywgJGV4LT5jb21waWxlKCAkZW52ICkgKSApOwoKCQkkcnVsZXNldCA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldCggbnVsbCwgJHRoaXMtPnJ1bGVzICk7CgkJJHJ1bGVzZXQtPm9yaWdpbmFsUnVsZXNldCA9ICR0aGlzLT5ydWxlc2V0X2lkOwoKCQkkcnVsZVNldEVudiA9ICRlbnYtPmNvcHlFdmFsRW52KCBhcnJheV9tZXJnZSggWyAkdGhpcywgJGZyYW1lIF0sICRtaXhpbkZyYW1lcyApICk7CgkJJHJ1bGVzZXQgPSAkcnVsZXNldC0+Y29tcGlsZSggJHJ1bGVTZXRFbnYgKTsKCgkJaWYgKCAkaW1wb3J0YW50ICkgewoJCQkkcnVsZXNldCA9ICRydWxlc2V0LT5tYWtlSW1wb3J0YW50KCk7CgkJfQoKCQlMZXNzX0Vudmlyb25tZW50OjokbWl4aW5fc3RhY2stLTsKCgkJcmV0dXJuICRydWxlc2V0OwoJfQoKCS8qKgoJICogQHBhcmFtIGFycmF5ICRhcmdzCgkgKiBAcGFyYW0gTGVzc19FbnZpcm9ubWVudCAkZW52CgkgKiBAcmV0dXJuIGJvb2wKCSAqLwoJcHVibGljIGZ1bmN0aW9uIG1hdGNoQ29uZGl0aW9uKCAkYXJncywgJGVudiApIHsKCQlpZiAoICEkdGhpcy0+Y29uZGl0aW9uICkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCS8vIHNldCBhcnJheSB0byBwcmV2ZW50IGVycm9yIG9uIGFycmF5X21lcmdlCgkJaWYgKCAhaXNfYXJyYXkoICR0aGlzLT5mcmFtZXMgKSApIHsKCQkJJHRoaXMtPmZyYW1lcyA9IFtdOwoJCX0KCgkJJGZyYW1lID0gJHRoaXMtPmNvbXBpbGVQYXJhbXMoICRlbnYsIGFycmF5X21lcmdlKCAkdGhpcy0+ZnJhbWVzLCAkZW52LT5mcmFtZXMgKSwgJGFyZ3MgKTsKCgkJJGNvbXBpbGVfZW52ID0gJGVudi0+Y29weUV2YWxFbnYoCgkJCWFycmF5X21lcmdlKAoJCQkJWyAkZnJhbWUgXSwgLy8gdGhlIHBhcmFtZXRlciB2YXJpYWJsZXMKCQkJCSR0aGlzLT5mcmFtZXMsIC8vIHRoZSBwYXJlbnQgbmFtZXNwYWNlL21peGluIGZyYW1lcwoJCQkJJGVudi0+ZnJhbWVzIC8vIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGZyYW1lcwoJCQkpCgkJKTsKCQkkY29tcGlsZV9lbnYtPmZ1bmN0aW9ucyA9ICRlbnYtPmZ1bmN0aW9uczsKCgkJcmV0dXJuIChib29sKSR0aGlzLT5jb25kaXRpb24tPmNvbXBpbGUoICRjb21waWxlX2VudiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBtYWtlSW1wb3J0YW50KCkgewoJCSRpbXBvcnRhbnRfcnVsZXMgPSBbXTsKCQlmb3JlYWNoICggJHRoaXMtPnJ1bGVzIGFzICRydWxlICkgewoJCQlpZiAoICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX0RlY2xhcmF0aW9uIHx8ICRydWxlIGluc3RhbmNlb2Ygc2VsZiB8fCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9OYW1lVmFsdWUgKSB7CgkJCQkkaW1wb3J0YW50X3J1bGVzW10gPSAkcnVsZS0+bWFrZUltcG9ydGFudCgpOwoJCQl9IGVsc2UgewoJCQkJJGltcG9ydGFudF9ydWxlc1tdID0gJHJ1bGU7CgkJCX0KCQl9CgkJcmV0dXJuIG5ldyBzZWxmKCAkdGhpcy0+bmFtZSwgJHRoaXMtPnBhcmFtcywgJGltcG9ydGFudF9ydWxlcywgJHRoaXMtPmNvbmRpdGlvbiwgJHRoaXMtPnZhcmlhZGljLCAkdGhpcy0+ZnJhbWVzICk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gYXJyYXlbXSAkYXJncwoJICogQHBhcmFtIExlc3NfRW52aXJvbm1lbnR8bnVsbCAkZW52CgkgKiBAc2VlIGxlc3MtMi41LjMuanMjRGVmaW5pdGlvbi5wcm90b3R5cGUubWF0Y2hBcmdzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBtYXRjaEFyZ3MoICRhcmdzLCAkZW52ID0gbnVsbCApIHsKCQkkYWxsQXJnc0NudCA9IGNvdW50KCAkYXJncyApOwoJCSRyZXF1aXJlZEFyZ3NDbnQgPSAwOwoJCWZvcmVhY2ggKCAkYXJncyBhcyAkYXJnICkgewoJCQlpZiAoICFhcnJheV9rZXlfZXhpc3RzKCAkYXJnWyduYW1lJ10sICR0aGlzLT5vcHRpb25hbFBhcmFtZXRlcnMgKSApIHsKCQkJCSRyZXF1aXJlZEFyZ3NDbnQrKzsKCQkJfQoJCX0KCQlpZiAoICEkdGhpcy0+dmFyaWFkaWMgKSB7CgkJCWlmICggJHJlcXVpcmVkQXJnc0NudCA8ICR0aGlzLT5yZXF1aXJlZCApIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQlpZiAoICRhbGxBcmdzQ250ID4gY291bnQoICR0aGlzLT5wYXJhbXMgKSApIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0gZWxzZSB7CgkJCWlmICggJHJlcXVpcmVkQXJnc0NudCA8ICggJHRoaXMtPnJlcXVpcmVkIC0gMSApICkgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoKCQkkbGVuID0gbWluKCAkcmVxdWlyZWRBcmdzQ250LCAkdGhpcy0+YXJpdHkgKTsKCgkJZm9yICggJGkgPSAwOyAkaSA8ICRsZW47ICRpKysgKSB7CgkJCWlmICggIWlzc2V0KCAkdGhpcy0+cGFyYW1zWyRpXVsnbmFtZSddICkgJiYgIWlzc2V0KCAkdGhpcy0+cGFyYW1zWyRpXVsndmFyaWFkaWMnXSApICkgewoJCQkJaWYgKCAkYXJnc1skaV1bJ3ZhbHVlJ10tPmNvbXBpbGUoICRlbnYgKS0+dG9DU1MoKSAhPSAkdGhpcy0+cGFyYW1zWyRpXVsndmFsdWUnXS0+Y29tcGlsZSggJGVudiApLT50b0NTUygpICkgewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/NamespaceValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjTmFtZXNwYWNlVmFsdWUucHJvdG90eXBlCiAqLwpjbGFzcyBMZXNzX1RyZWVfTmFtZXNwYWNlVmFsdWUgZXh0ZW5kcyBMZXNzX1RyZWUgewoKCS8qKiBAdmFyIExlc3NfVHJlZV9NaXhpbl9DYWxsfExlc3NfVHJlZV9WYXJpYWJsZUNhbGwgKi8KCXB1YmxpYyAkdmFsdWU7CgkvKiogQHZhciBpbnR8bnVsbCAqLwoJcHVibGljICRpbmRleDsKCS8qKiBAdmFyIHN0cmluZ1tdICovCglwdWJsaWMgJGxvb2t1cHM7CgkvKiogQHZhciBhcnJheXxudWxsICovCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRydWxlQ2FsbCwgJGxvb2t1cHMsICRpbmRleCA9IG51bGwsICRjdXJyZW50RmlsZUluZm8gPSBudWxsICkgewoJCSR0aGlzLT52YWx1ZSA9ICRydWxlQ2FsbDsKCQkkdGhpcy0+bG9va3VwcyA9ICRsb29rdXBzOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkvKiogQHZhciBMZXNzX1RyZWVfUnVsZXNldCAkcnVsZXMgKi8KCQkkcnVsZXMgPSAkdGhpcy0+dmFsdWUtPmNvbXBpbGUoICRlbnYgKTsKCgkJZm9yZWFjaCAoICR0aGlzLT5sb29rdXBzIGFzICRuYW1lICkgewoJCQkvKioKCQkJICogRXZhbCdkIERScyByZXR1cm4gcnVsZXNldHMuCgkJCSAqIEV2YWwnZCBtaXhpbnMgcmV0dXJuIHJ1bGVzLCBzbyBsZXQncyBtYWtlIGEgcnVsZXNldCBpZiB3ZSBuZWVkIGl0LgoJCQkgKiBXZSBuZWVkIHRvIGRvIHRoaXMgYmVjYXVzZSBvZiBsYXRlIHBhcnNpbmcgb2YgdmFsdWVzCgkJCSAqLwoJCQlpZiAoIGlzX2FycmF5KCAkcnVsZXMgKSApIHsKCQkJCSRydWxlcyA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldCggWyBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCBbXSApIF0sICRydWxlcyApOwoJCQl9CgkJCWlmICggJG5hbWUgPT09ICcnICkgewoJCQkJJHJ1bGVzID0gJHJ1bGVzLT5sYXN0RGVjbGFyYXRpb24oKTsKCQkJfSBlbHNlaWYgKCAkbmFtZVswXSA9PT0gJ0AnICkgewoJCQkJaWYgKCAoICRuYW1lWzFdID8/ICcnICkgPT09ICdAJyApIHsKCQkJCQkkdmFyaWFibGUgPSAoIG5ldyBMZXNzX1RyZWVfVmFyaWFibGUoIHN1YnN0ciggJG5hbWUsIDEgKSApICktPmNvbXBpbGUoICRlbnYgKTsKCQkJCQkkbmFtZSA9ICJAIiAuICR2YXJpYWJsZS0+dmFsdWU7CgkJCQl9CgkJCQlpZiAoICRydWxlcyBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlc2V0ICkgewoJCQkJCSRydWxlcyA9ICRydWxlcy0+dmFyaWFibGUoICRuYW1lICk7CgkJCQl9CgoJCQkJaWYgKCAhJHJ1bGVzICkgewoJCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCQkJIlZhcmlhYmxlICRuYW1lIG5vdCBmb3VuZCIsCgkJCQkJCW51bGwsCgkJCQkJCSR0aGlzLT5pbmRleCwKCQkJCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbwoJCQkJCSk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlpZiAoIHN0cm5jbXAoICRuYW1lLCAnJEAnLCAyICkgPT09IDAgKSB7CgkJCQkJJHZhcmlhYmxlID0gKCBuZXcgTGVzc19UcmVlX1ZhcmlhYmxlKCBzdWJzdHIoICRuYW1lLCAxICkgKSApLT5jb21waWxlKCAkZW52ICk7CgkJCQkJJG5hbWUgPSAiJCIgLiAkdmFyaWFibGUtPnZhbHVlOwoJCQkJfSBlbHNlIHsKCQkJCQkkbmFtZSA9ICRuYW1lWzBdID09PSAnJCcgPyAkbmFtZSA6ICggJyQnIC4gJG5hbWUgKTsKCQkJCX0KCgkJCQlpZiAoICRydWxlcyBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlc2V0ICkgewoJCQkJCSRydWxlcyA9ICRydWxlcy0+cHJvcGVydHkoICRuYW1lICk7CgkJCQl9CgoJCQkJaWYgKCAhJHJ1bGVzICkgewoJCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigKCQkJCQkJIlByb3BlcnR5ICRuYW1lIG5vdCBmb3VuZCIsCgkJCQkJCW51bGwsCgkJCQkJCSR0aGlzLT5pbmRleCwKCQkJCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbwoJCQkJCSk7CgkJCQl9CgkJCQkvLyBQcm9wZXJ0aWVzIGFyZSBhbiBhcnJheSBvZiB2YWx1ZXMsIHNpbmNlIGEgcnVsZXNldCBjYW4gaGF2ZSBtdWx0aXBsZSBwcm9wcy4KCQkJCS8vIFdlIHBpY2sgdGhlIGxhc3Qgb25lICh0aGUgImNhc2NhZGVkIiB2YWx1ZSkKCQkJCWlmICggaXNfYXJyYXkoICRydWxlcyApICkgeyAvLyB0byBzYXRpc2Z5IHBoYW4gY2hlY2tzCgkJCQkJJHJ1bGVzID0gJHJ1bGVzWyBjb3VudCggJHJ1bGVzICkgLSAxIF07CgkJCQl9CgkJCX0KCgkJCWlmICggJHJ1bGVzLT52YWx1ZSApIHsKCQkJCSRydWxlcyA9ICRydWxlcy0+Y29tcGlsZSggJGVudiApLT52YWx1ZTsKCQkJfQoJCQlpZiAoICRydWxlcyBpbnN0YW5jZW9mIExlc3NfVHJlZV9EZXRhY2hlZFJ1bGVzZXQgJiYgJHJ1bGVzLT5ydWxlc2V0ICkgewoJCQkJLy8gQHRvZG8gLSBsb29rcyBsaWtlIHRoaXMgaXMgbmV2ZXIgZXZhbHVhdGVkLCBpbnZlc3RpZ2F0ZSBsYXRlcgoJCQkJLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2NvbW1pdC8yOTQ2OGJmZmNkOGE5ZjJmCgkJCQkkcnVsZXMgPSAkcnVsZXMtPnJ1bGVzZXQtPmNvbXBpbGUoICRlbnYgKTsKCQkJfQoJCX0KCgkJcmV0dXJuICRydWxlczsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/NameValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEEgc2ltcGxlIENTUyBuYW1lLXZhbHVlIHBhaXIsIGUuZy4gYHdpZHRoOiAxMDBweDtgCiAqCiAqIEluIGJvb3RzdHJhcCwgdGhlcmUgYXJlIGFib3V0IDYwMC0xMDAwIHNpbXBsZSBuYW1lLXZhbHVlIHBhaXJzIChkZXBlbmRpbmcgb24KICogaG93IGZvcmdpdmluZyB0aGUgbWF0Y2ggaXMpIC12cy0gNiwwMjAgZHluYW1pYyBydWxlcyAoTGVzc19UcmVlX0RlY2xhcmF0aW9uKS4KICoKICogVXNpbmcgdGhlIG5hbWUtdmFsdWUgb2JqZWN0IGNhbiBzcGVlZCB1cCBib290c3RyYXAgY29tcGlsYXRpb24gc2xpZ2h0bHksIGJ1dAogKiBpdCBicmVha3MgY29sb3Iga2V5d29yZCBpbnRlcnByZXRhdGlvbjogYGNvbG9yOiByZWRgIC0+IGBjb2xvcjogI0ZGMDAwMGAuCiAqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfTmFtZVZhbHVlIGV4dGVuZHMgTGVzc19UcmVlIGltcGxlbWVudHMgTGVzc19UcmVlX0hhc1ZhbHVlUHJvcGVydHkgewoKCS8qKiBAdmFyIHN0cmluZyAqLwoJcHVibGljICRuYW1lOwoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJHZhbHVlOwoJLyoqIEB2YXIgaW50fG51bGwgKi8KCXB1YmxpYyAkaW5kZXg7CgkvKiogQHZhciBhcnJheXxudWxsICovCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCS8qKiBAdmFyIHN0cmluZyAqLwoJcHVibGljICRpbXBvcnRhbnQgPSAnJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRuYW1lLCAkdmFsdWUgPSBudWxsLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApIHsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQkkb3V0cHV0LT5hZGQoCgkJCSR0aGlzLT5uYW1lCgkJCQkuICggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddID8gJzonIDogJzogJyApCgkJCQkuICR0aGlzLT52YWx1ZQoJCQkJLiAkdGhpcy0+aW1wb3J0YW50CgkJCQkuICggKCAoIExlc3NfRW52aXJvbm1lbnQ6OiRsYXN0UnVsZSAmJiBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gKSApID8gIiIgOiAiOyIgKSwKCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4ICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJcmV0dXJuICR0aGlzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBtYWtlSW1wb3J0YW50KCkgewoJCSRuZXcgPSBuZXcgc2VsZiggJHRoaXMtPm5hbWUsICR0aGlzLT52YWx1ZSwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvICk7CgkJJG5ldy0+aW1wb3J0YW50ID0gJyAhaW1wb3J0YW50JzsKCQlyZXR1cm4gJG5ldzsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Negative.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfTmVnYXRpdmUgZXh0ZW5kcyBMZXNzX1RyZWUgaW1wbGVtZW50cyBMZXNzX1RyZWVfSGFzVmFsdWVQcm9wZXJ0eSB7CgoJLyoqIEB2YXIgTGVzc19UcmVlICovCglwdWJsaWMgJHZhbHVlOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJG5vZGUgKSB7CgkJJHRoaXMtPnZhbHVlID0gJG5vZGU7Cgl9CgoJLyoqCgkgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKSB7CgkJJG91dHB1dC0+YWRkKCAnLScgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCAkZW52ICkgewoJCWlmICggJGVudi0+aXNNYXRoT24oKSApIHsKCQkJJHJldCA9IG5ldyBMZXNzX1RyZWVfT3BlcmF0aW9uKCAnKicsIFsgbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oIC0xICksICR0aGlzLT52YWx1ZSBdICk7CgkJCXJldHVybiAkcmV0LT5jb21waWxlKCAkZW52ICk7CgkJfQoJCXJldHVybiBuZXcgc2VsZiggJHRoaXMtPnZhbHVlLT5jb21waWxlKCAkZW52ICkgKTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Operation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjT3BlcmF0aW9uLnByb3RvdHlwZQogKi8KY2xhc3MgTGVzc19UcmVlX09wZXJhdGlvbiBleHRlbmRzIExlc3NfVHJlZSB7CgoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJG9wOwoJLyoqIEB2YXIgTGVzc19UcmVlW10gKi8KCXB1YmxpYyAkb3BlcmFuZHM7CgkvKiogQHZhciBib29sICovCglwdWJsaWMgJGlzU3BhY2VkOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkb3AKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkb3AsICRvcGVyYW5kcywgJGlzU3BhY2VkID0gZmFsc2UgKSB7CgkJJHRoaXMtPm9wID0gdHJpbSggJG9wICk7CgkJJHRoaXMtPm9wZXJhbmRzID0gJG9wZXJhbmRzOwoJCSR0aGlzLT5pc1NwYWNlZCA9ICRpc1NwYWNlZDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApIHsKCQkkdGhpcy0+b3BlcmFuZHMgPSAkdmlzaXRvci0+dmlzaXRBcnJheSggJHRoaXMtPm9wZXJhbmRzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJJGEgPSAkdGhpcy0+b3BlcmFuZHNbMF0tPmNvbXBpbGUoICRlbnYgKTsKCQkkYiA9ICR0aGlzLT5vcGVyYW5kc1sxXS0+Y29tcGlsZSggJGVudiApOwoKCQkvLyBTa2lwIG9wZXJhdGlvbiBpZiBhcmd1bWVudCB3YXMgbm90IGNvbXBpbGVkIGRvd24gdG8gYSBub24tb3BlcmFibGUgdmFsdWUuCgkJLy8gRm9yIGV4YW1wbGUsIGlmIG9uZSBhcmd1bWVudCBpcyBhIExlc3NfVHJlZV9DYWxsIGxpa2UgJ3ZhcigtLWZvbyknIHRoZW4gd2UKCQkvLyBwcmVzZXJ2ZSBpdCBhcyBsaXRlcmFsIGZvciBuYXRpdmUgQ1NTLgoJCS8vIGh0dHBzOi8vcGhhYnJpY2F0b3Iud2lraW1lZGlhLm9yZy9UMzMxNjg4CgkJaWYgKCAkZW52LT5pc01hdGhPbiggJHRoaXMtPm9wICkgKSB7CgkJCSRvcCA9ICR0aGlzLT5vcCA9PT0gJy4vJyA/ICcvJyA6ICR0aGlzLT5vcDsKCgkJCWlmICggJGEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICYmICRiIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkgewoJCQkJJGEgPSAkYS0+dG9Db2xvcigpOwoJCQl9IGVsc2VpZiAoICRiIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiAmJiAkYSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApIHsKCQkJCSRiID0gJGItPnRvQ29sb3IoKTsKCQkJfQoKCQkJaWYgKCAhKCAkYSBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gfHwgJGEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IgKQoJCQkJfHwgISggJGIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uIHx8ICRiIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICkKCQkJKSB7CgkJCQlpZiAoICRhIGluc3RhbmNlb2YgTGVzc19UcmVlX09wZXJhdGlvbiAmJiAkYS0+b3AgPT09ICcvJyAmJiAkZW52LT5tYXRoID09PSBMZXNzX0Vudmlyb25tZW50OjpNQVRIX1BBUkVOU19ESVZJU0lPTgoJCQkJKSB7CgkJCQkJcmV0dXJuIG5ldyBzZWxmKCAkdGhpcy0+b3AsIFsgJGEsICRiIF0sICR0aGlzLT5pc1NwYWNlZCApOwoJCQkJfQoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAiT3BlcmF0aW9uIG9uIGFuIGludmFsaWQgdHlwZSIgKTsKCQkJfQoKCQkJcmV0dXJuICRhLT5vcGVyYXRlKCAkb3AsICRiICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIG5ldyBzZWxmKCAkdGhpcy0+b3AsIFsgJGEsICRiIF0sICR0aGlzLT5pc1NwYWNlZCApOwoJCX0KCX0KCgkvKioKCSAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQkkdGhpcy0+b3BlcmFuZHNbMF0tPmdlbkNTUyggJG91dHB1dCApOwoJCWlmICggJHRoaXMtPmlzU3BhY2VkICkgewoJCQkkb3V0cHV0LT5hZGQoICIgIiApOwoJCX0KCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5vcCApOwoJCWlmICggJHRoaXMtPmlzU3BhY2VkICkgewoJCQkkb3V0cHV0LT5hZGQoICcgJyApOwoJCX0KCQkkdGhpcy0+b3BlcmFuZHNbMV0tPmdlbkNTUyggJG91dHB1dCApOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Paren.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfUGFyZW4gZXh0ZW5kcyBMZXNzX1RyZWUgaW1wbGVtZW50cyBMZXNzX1RyZWVfSGFzVmFsdWVQcm9wZXJ0eSB7CgoJLyoqIEB2YXIgTGVzc19UcmVlICovCglwdWJsaWMgJHZhbHVlOwoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZSAkdmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkdmFsdWUgKSB7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICkgewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnZhbHVlICk7Cgl9CgoJLyoqCgkgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKSB7CgkJJG91dHB1dC0+YWRkKCAnKCcgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJCSRvdXRwdXQtPmFkZCggJyknICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJcmV0dXJuIG5ldyBzZWxmKCAkdGhpcy0+dmFsdWUtPmNvbXBpbGUoICRlbnYgKSApOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Property.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjdHJlZS5Qcm9wZXJ0eQogKi8KY2xhc3MgTGVzc19UcmVlX1Byb3BlcnR5IGV4dGVuZHMgTGVzc19UcmVlIHsKCgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkbmFtZTsKCS8qKiBAdmFyIGludHxudWxsICovCglwdWJsaWMgJGluZGV4OwoJLyoqIEB2YXIgYXJyYXl8bnVsbCAqLwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgkvKiogQHZhciBib29sICovCglwdWJsaWMgJGV2YWx1YXRpbmcgPSBmYWxzZTsKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkbmFtZSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKSB7CgkJJHRoaXMtPm5hbWUgPSAkbmFtZTsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJJG5hbWUgPSAkdGhpcy0+bmFtZTsKCgkJaWYgKCAkdGhpcy0+ZXZhbHVhdGluZyApIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKAoJCQkJIlJlY3Vyc2l2ZSBwcm9wZXJ0eSByZWZlcmVuY2UgZm9yICIgLiAkbmFtZSwKCQkJCW51bGwsCgkJCQkkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8KCQkJKTsKCQl9CgoJCSRwcm9wZXJ0eSA9IG51bGw7CgkJJHRoaXMtPmV2YWx1YXRpbmcgPSB0cnVlOwoJCS8qKiBAdmFyIExlc3NfVHJlZV9SdWxlc2V0ICRmcmFtZSAqLwoJCWZvcmVhY2ggKCAkZW52LT5mcmFtZXMgYXMgJGZyYW1lICkgewoJCQkkdkFyciA9ICRmcmFtZS0+cHJvcGVydHkoICRuYW1lICk7CgkJCWlmICggJHZBcnIgKSB7CgkJCQkkc2l6ZSA9IGNvdW50KCAkdkFyciApOwoJCQkJZm9yICggJGkgPSAwOyAkaSA8ICRzaXplOyAkaSsrICkgewoJCQkJCSR2ID0gJHZBcnJbJGldOwoJCQkJCSR2QXJyWyRpXSA9IG5ldyBMZXNzX1RyZWVfRGVjbGFyYXRpb24oCgkJCQkJCSR2LT5uYW1lLAoJCQkJCQkkdi0+dmFsdWUsCgkJCQkJCSR2LT5pbXBvcnRhbnQsCgkJCQkJCSR2LT5tZXJnZSwKCQkJCQkJJHYtPmluZGV4LAoJCQkJCQkkdi0+Y3VycmVudEZpbGVJbmZvLAoJCQkJCQkkdi0+aW5saW5lLAoJCQkJCQkkdi0+dmFyaWFibGUKCQkJCQkpOwoJCQkJfQoJCQkJTGVzc19WaXNpdG9yX3RvQ1NTOjpfbWVyZ2VSdWxlcyggJHZBcnIgKTsKCQkJCSR2ID0gJHZBcnJbIGNvdW50KCAkdkFyciApIC0gMSBdOwoJCQkJaWYgKCBpc3NldCggJHYtPmltcG9ydGFudCApICYmICR2LT5pbXBvcnRhbnQgKSB7CgkJCQkJJGltcG9ydGFudFNjb3BlTGVuZ3RoID0gY291bnQoICRlbnYtPmltcG9ydGFudFNjb3BlICk7CgkJCQkJJGVudi0+aW1wb3J0YW50U2NvcGVbICRpbXBvcnRhbnRTY29wZUxlbmd0aCAtIDEgXVsnaW1wb3J0YW50J10gPSAkdi0+aW1wb3J0YW50OwoJCQkJfQoJCQkJJHByb3BlcnR5ID0gJHYtPnZhbHVlLT5jb21waWxlKCAkZW52ICk7CgkJCQlicmVhazsKCQkJfQoJCX0KCgkJaWYgKCAkcHJvcGVydHkgKSB7CgkJCSR0aGlzLT5ldmFsdWF0aW5nID0gZmFsc2U7CgkJCXJldHVybiAkcHJvcGVydHk7CgkJfSBlbHNlIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAicHJvcGVydHkgJyIgLiAkbmFtZSAuICInIGlzIHVuZGVmaW5lZCBpbiBmaWxlICIgLgoJCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1siZmlsZW5hbWUiXSwgbnVsbCwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvICk7CgkJfQoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Quoted.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfUXVvdGVkIGV4dGVuZHMgTGVzc19UcmVlIGltcGxlbWVudHMgTGVzc19UcmVlX0hhc1ZhbHVlUHJvcGVydHkgewoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljICRlc2NhcGVkOwoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJHZhbHVlOwoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJHF1b3RlOwoJLyoqIEB2YXIgaW50fGZhbHNlICovCglwdWJsaWMgJGluZGV4OwoJLyoqIEB2YXIgYXJyYXl8bnVsbCAqLwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJHZhcmlhYmxlUmVnZXggPSAnL0BceyhbXHctXSspXH0vJzsKCS8qKiBAdmFyIHN0cmluZyAqLwoJcHVibGljICRwcm9wUmVnZXggPSAnL1wkXHsoW1x3LV0rKVx9Lyc7CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRzdHIKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkc3RyLCAkY29udGVudCA9ICcnLCAkZXNjYXBlZCA9IHRydWUsICRpbmRleCA9IGZhbHNlLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApIHsKCQkkdGhpcy0+ZXNjYXBlZCA9ICRlc2NhcGVkOwoJCSR0aGlzLT52YWx1ZSA9ICRjb250ZW50OwoJCWlmICggJHN0ciApIHsKCQkJJHRoaXMtPnF1b3RlID0gJHN0clswXTsKCQl9CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCWlmICggISR0aGlzLT5lc2NhcGVkICkgewoJCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5xdW90ZSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4ICk7CgkJfQoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnZhbHVlICk7CgkJaWYgKCAhJHRoaXMtPmVzY2FwZWQgKSB7CgkJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnF1b3RlICk7CgkJfQoJfQoKCS8qKgoJICogQHNlZSBsZXNzLTMuMTMuMS5qcyNRdW90ZWQucHJvdG90eXBlLmNvbnRhaW5zVmFyaWFibGVzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjb250YWluc1ZhcmlhYmxlcygpIHsKCQlyZXR1cm4gcHJlZ19tYXRjaCggJHRoaXMtPnZhcmlhYmxlUmVnZXgsICR0aGlzLT52YWx1ZSApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gdmFyaWFibGVSZXBsYWNlbWVudCggJHIsICRlbnYgKSB7CgkJZG8gewoJCQkkdmFsdWUgPSAkcjsKCQkJaWYgKCBwcmVnX21hdGNoX2FsbCggJHRoaXMtPnZhcmlhYmxlUmVnZXgsICR2YWx1ZSwgJG1hdGNoZXMgKSApIHsKCQkJCWZvcmVhY2ggKCAkbWF0Y2hlc1sxXSBhcyAkaSA9PiAkbWF0Y2ggKSB7CgkJCQkJJHYgPSBuZXcgTGVzc19UcmVlX1ZhcmlhYmxlKCAnQCcgLiAkbWF0Y2gsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCQkJCSR2ID0gJHYtPmNvbXBpbGUoICRlbnYgKTsKCQkJCQkkdiA9ICggJHYgaW5zdGFuY2VvZiBzZWxmICkgPyAkdi0+dmFsdWUgOiAkdi0+dG9DU1MoKTsKCQkJCQkkciA9IHN0cl9yZXBsYWNlKCAkbWF0Y2hlc1swXVskaV0sICR2LCAkciApOwoJCQkJfQoJCQl9CgkJfSB3aGlsZSAoICRyICE9ICR2YWx1ZSApOwoJCXJldHVybiAkcjsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHByb3BlcnR5UmVwbGFjZW1lbnQoICRyLCAkZW52ICkgewoJCWRvIHsKCQkJJHZhbHVlID0gJHI7CgkJCWlmICggcHJlZ19tYXRjaF9hbGwoICR0aGlzLT5wcm9wUmVnZXgsICR2YWx1ZSwgJG1hdGNoZXMgKSApIHsKCQkJCWZvcmVhY2ggKCAkbWF0Y2hlc1sxXSBhcyAkaSA9PiAkbWF0Y2ggKSB7CgkJCQkJJHYgPSBuZXcgTGVzc19UcmVlX1Byb3BlcnR5KCAnJCcgLiAkbWF0Y2gsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCQkJCSR2ID0gJHYtPmNvbXBpbGUoICRlbnYgKTsKCQkJCQkkdiA9ICggJHYgaW5zdGFuY2VvZiBzZWxmICkgPyAkdi0+dmFsdWUgOiAkdi0+dG9DU1MoKTsKCQkJCQkkciA9IHN0cl9yZXBsYWNlKCAkbWF0Y2hlc1swXVskaV0sICR2LCAkciApOwoJCQkJfQoJCQl9CgkJfSB3aGlsZSAoICRyICE9ICR2YWx1ZSApOwoJCXJldHVybiAkcjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJJHZhbHVlID0gJHRoaXMtPnZhcmlhYmxlUmVwbGFjZW1lbnQoICR2YWx1ZSwgJGVudiApOwoJCSR2YWx1ZSA9ICR0aGlzLT5wcm9wZXJ0eVJlcGxhY2VtZW50KCAkdmFsdWUsICRlbnYgKTsKCQlyZXR1cm4gbmV3IHNlbGYoICR0aGlzLT5xdW90ZSAuICR2YWx1ZSAuICR0aGlzLT5xdW90ZSwgJHZhbHVlLCAkdGhpcy0+ZXNjYXBlZCwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvICk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gbWl4ZWQgJG90aGVyCgkgKiBAcmV0dXJuIGludHxudWxsCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjUXVvdGVkLnByb3RvdHlwZS5jb21wYXJlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCAkb3RoZXIgKSB7CgkJaWYgKCAkb3RoZXIgaW5zdGFuY2VvZiBzZWxmICYmICEkdGhpcy0+ZXNjYXBlZCAmJiAhJG90aGVyLT5lc2NhcGVkICkgewoJCQlyZXR1cm4gTGVzc19UcmVlOjpudW1lcmljQ29tcGFyZSggJHRoaXMtPnZhbHVlLCAkb3RoZXItPnZhbHVlICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICgKCQkJCSRvdGhlciBpbnN0YW5jZW9mIExlc3NfVHJlZQoJCQkJJiYgJHRoaXMtPnRvQ1NTKCkgPT09ICRvdGhlci0+dG9DU1MoKQoJCQkpID8gMCA6IG51bGw7CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Ruleset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfUnVsZXNldCBleHRlbmRzIExlc3NfVHJlZSB7CgoJLyoqIEB2YXIgYXJyYXlbXVtdICovCglwcm90ZWN0ZWQgJGxvb2t1cHM7CgkvKiogQHZhciBhcnJheTxzdHJpbmcsTGVzc19UcmVlX0RlY2xhcmF0aW9uPnxudWxsICovCglwdWJsaWMgJF92YXJpYWJsZXM7CgkvKiogQHZhciBhcnJheTxzdHJpbmcsTGVzc19UcmVlX0RlY2xhcmF0aW9uW10+fG51bGwgKi8KCXB1YmxpYyAkX3Byb3BlcnRpZXM7CgoJLyoqIEB2YXIgbnVsbHxib29sICovCglwdWJsaWMgJHN0cmljdEltcG9ydHM7CgoJLyoqIEB2YXIgTGVzc19UcmVlX1NlbGVjdG9yW118bnVsbCAqLwoJcHVibGljICRzZWxlY3RvcnM7CgkvKiogQHZhciBMZXNzX1RyZWVbXSAqLwoJcHVibGljICRydWxlczsKCS8qKiBAdmFyIHRydWV8bnVsbCAqLwoJcHVibGljICRyb290OwoJLyoqIEB2YXIgdHJ1ZXxudWxsICovCglwdWJsaWMgJGFsbG93SW1wb3J0czsKCS8qKiBAdmFyIExlc3NfVHJlZV9TZWxlY3RvcltdW118bnVsbCAqLwoJcHVibGljICRwYXRoczsKCS8qKiBAdmFyIHRydWV8bnVsbCAqLwoJcHVibGljICRmaXJzdFJvb3Q7CgkvKiogQHZhciB0cnVlfG51bGwgKi8KCXB1YmxpYyAkbXVsdGlNZWRpYTsKCS8qKiBAdmFyIExlc3NfVHJlZV9FeHRlbmRbXSAqLwoJcHVibGljICRhbGxFeHRlbmRzOwoKCS8qKiBAdmFyIGludCAqLwoJcHVibGljICRydWxlc2V0X2lkOwoJLyoqIEB2YXIgaW50ICovCglwdWJsaWMgJG9yaWdpbmFsUnVsZXNldDsKCgkvKiogQHZhciBhcnJheTxzdHJpbmcsdHJ1ZT4gKi8KCXB1YmxpYyAkZmlyc3Rfb2VsZW1lbnRzOwoKCXB1YmxpYyBmdW5jdGlvbiBTZXRSdWxlc2V0SW5kZXgoKSB7CgkJJHRoaXMtPnJ1bGVzZXRfaWQgPSBMZXNzX1BhcnNlcjo6JG5leHRfaWQrKzsKCQkkdGhpcy0+b3JpZ2luYWxSdWxlc2V0ID0gJHRoaXMtPnJ1bGVzZXRfaWQ7CgoJCWlmICggJHRoaXMtPnNlbGVjdG9ycyApIHsKCQkJZm9yZWFjaCAoICR0aGlzLT5zZWxlY3RvcnMgYXMgJHNlbCApIHsKCQkJCWlmICggJHNlbC0+X29lbGVtZW50cyApIHsKCQkJCQkkdGhpcy0+Zmlyc3Rfb2VsZW1lbnRzWyRzZWwtPl9vZWxlbWVudHNbMF1dID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCX0KCgkvKioKCSAqIEBwYXJhbSBudWxsfExlc3NfVHJlZV9TZWxlY3RvcltdICRzZWxlY3RvcnMKCSAqIEBwYXJhbSBMZXNzX1RyZWVbXSAkcnVsZXMKCSAqIEBwYXJhbSBudWxsfGJvb2wgJHN0cmljdEltcG9ydHMKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkc2VsZWN0b3JzLCAkcnVsZXMsICRzdHJpY3RJbXBvcnRzID0gbnVsbCApIHsKCQkkdGhpcy0+c2VsZWN0b3JzID0gJHNlbGVjdG9yczsKCQkkdGhpcy0+cnVsZXMgPSAkcnVsZXM7CgkJJHRoaXMtPmxvb2t1cHMgPSBbXTsKCQkkdGhpcy0+c3RyaWN0SW1wb3J0cyA9ICRzdHJpY3RJbXBvcnRzOwoJCSR0aGlzLT5TZXRSdWxlc2V0SW5kZXgoKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApIHsKCQlpZiAoICR0aGlzLT5wYXRocyAhPT0gbnVsbCApIHsKCQkJJHBhdGhzX2xlbiA9IGNvdW50KCAkdGhpcy0+cGF0aHMgKTsKCQkJZm9yICggJGkgPSAwOyAkaSA8ICRwYXRoc19sZW47ICRpKysgKSB7CgkJCQkkdGhpcy0+cGF0aHNbJGldID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoICR0aGlzLT5wYXRoc1skaV0gKTsKCQkJfQoJCX0gZWxzZWlmICggJHRoaXMtPnNlbGVjdG9ycyApIHsKCQkJJHRoaXMtPnNlbGVjdG9ycyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCAkdGhpcy0+c2VsZWN0b3JzICk7CgkJfQoKCQlpZiAoICR0aGlzLT5ydWxlcyApIHsKCQkJJHRoaXMtPnJ1bGVzID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoICR0aGlzLT5ydWxlcyApOwoJCX0KCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50ICRlbnYKCSAqIEByZXR1cm4gc2VsZgoJICogQHNlZSBsZXNzLTIuNS4zLmpzI1J1bGVzZXQucHJvdG90eXBlLmV2YWwKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJJHJ1bGVzZXQgPSAkdGhpcy0+UHJlcGFyZVJ1bGVzZXQoICRlbnYgKTsKCgkJLy8gU3RvcmUgdGhlIGZyYW1lcyBhcm91bmQgbWl4aW4gZGVmaW5pdGlvbnMsCgkJLy8gc28gdGhleSBjYW4gYmUgZXZhbHVhdGVkIGxpa2UgY2xvc3VyZXMgd2hlbiB0aGUgdGltZSBjb21lcy4KCQkkcnNSdWxlQ250ID0gY291bnQoICRydWxlc2V0LT5ydWxlcyApOwoJCWZvciAoICRpID0gMDsgJGkgPCAkcnNSdWxlQ250OyAkaSsrICkgewoJCQkvLyBUaGVzZSBjaGVja3MgYXJlIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBydWxlLmV2YWxGaXJzdCBwcm9wZXJ0eSBpbiBsZXNzLmpzCgkJCWlmICggJHJ1bGVzZXQtPnJ1bGVzWyRpXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uIHx8ICRydWxlc2V0LT5ydWxlc1skaV0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0ICkgewoJCQkJJHJ1bGVzZXQtPnJ1bGVzWyRpXSA9ICRydWxlc2V0LT5ydWxlc1skaV0tPmNvbXBpbGUoICRlbnYgKTsKCQkJfQoJCX0KCgkJJG1lZGlhQmxvY2tDb3VudCA9IGNvdW50KCAkZW52LT5tZWRpYUJsb2NrcyApOwoKCQkvLyBFdmFsdWF0ZSBtaXhpbiBjYWxscy4KCQkkdGhpcy0+RXZhbE1peGluQ2FsbHMoICRydWxlc2V0LCAkZW52LCAkcnNSdWxlQ250ICk7CgoJCS8vIEV2YWx1YXRlIGV2ZXJ5dGhpbmcgZWxzZQoJCWZvciAoICRpID0gMDsgJGkgPCAkcnNSdWxlQ250OyAkaSsrICkgewoJCQlpZiAoICEoICRydWxlc2V0LT5ydWxlc1skaV0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfTWl4aW5fRGVmaW5pdGlvbiB8fCAkcnVsZXNldC0+cnVsZXNbJGldIGluc3RhbmNlb2YgTGVzc19UcmVlX0RldGFjaGVkUnVsZXNldCApICkgewoJCQkJJHJ1bGVzZXQtPnJ1bGVzWyRpXSA9ICRydWxlc2V0LT5ydWxlc1skaV0tPmNvbXBpbGUoICRlbnYgKTsKCQkJfQoJCX0KCgkJLy8gRXZhbHVhdGUgZXZlcnl0aGluZyBlbHNlCgkJZm9yICggJGkgPSAwOyAkaSA8ICRyc1J1bGVDbnQ7ICRpKysgKSB7CgkJCSRydWxlID0gJHJ1bGVzZXQtPnJ1bGVzWyRpXTsKCgkJCS8vIGZvciBydWxlc2V0cywgY2hlY2sgaWYgaXQgaXMgYSBjc3MgZ3VhcmQgYW5kIGNhbiBiZSByZW1vdmVkCgkJCWlmICggJHJ1bGUgaW5zdGFuY2VvZiBzZWxmICYmICRydWxlLT5zZWxlY3RvcnMgJiYgY291bnQoICRydWxlLT5zZWxlY3RvcnMgKSA9PT0gMSApIHsKCgkJCQkvLyBjaGVjayBpZiBpdCBjYW4gYmUgZm9sZGVkIGluIChlLmcuICYgd2hlcmUpCgkJCQlpZiAoICRydWxlLT5zZWxlY3RvcnNbMF0tPmlzSnVzdFBhcmVudFNlbGVjdG9yKCkgKSB7CgkJCQkJYXJyYXlfc3BsaWNlKCAkcnVsZXNldC0+cnVsZXMsICRpLS0sIDEgKTsKCQkJCQkkcnNSdWxlQ250LS07CgoJCQkJCWZvciAoICRqID0gMDsgJGogPCBjb3VudCggJHJ1bGUtPnJ1bGVzICk7ICRqKysgKSB7CgkJCQkJCSRzdWJSdWxlID0gJHJ1bGUtPnJ1bGVzWyRqXTsKCQkJCQkJaWYgKCAhKCAkc3ViUnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9EZWNsYXJhdGlvbiApIHx8ICEkc3ViUnVsZS0+dmFyaWFibGUgKSB7CgkJCQkJCQlhcnJheV9zcGxpY2UoICRydWxlc2V0LT5ydWxlcywgKyskaSwgMCwgWyAkc3ViUnVsZSBdICk7CgkJCQkJCQkkcnNSdWxlQ250Kys7CgkJCQkJCX0KCQkJCQl9CgoJCQkJfQoJCQl9CgkJfQoKCQkvLyBQb3AgdGhlIHN0YWNrCgkJJGVudi0+c2hpZnRGcmFtZSgpOwoKCQlpZiAoICRtZWRpYUJsb2NrQ291bnQgKSB7CgkJCSRsZW4gPSBjb3VudCggJGVudi0+bWVkaWFCbG9ja3MgKTsKCQkJZm9yICggJGkgPSAkbWVkaWFCbG9ja0NvdW50OyAkaSA8ICRsZW47ICRpKysgKSB7CgkJCQkkZW52LT5tZWRpYUJsb2Nrc1skaV0tPmJ1YmJsZVNlbGVjdG9ycyggJHJ1bGVzZXQtPnNlbGVjdG9ycyApOwoJCQl9CgkJfQoKCQlyZXR1cm4gJHJ1bGVzZXQ7Cgl9CgoJLyoqCgkgKiBDb21waWxlIExlc3NfVHJlZV9NaXhpbl9DYWxsIG9iamVjdHMKCSAqCgkgKiBAcGFyYW0gc2VsZiAkcnVsZXNldAoJICogQHBhcmFtIExlc3NfRW52aXJvbm1lbnQgJGVudgoJICogQHBhcmFtIGludCAmJHJzUnVsZUNudAoJICovCglwcml2YXRlIGZ1bmN0aW9uIEV2YWxNaXhpbkNhbGxzKCAkcnVsZXNldCwgJGVudiwgJiRyc1J1bGVDbnQgKSB7CgkJZm9yICggJGkgPSAwOyAkaSA8ICRyc1J1bGVDbnQ7ICRpKysgKSB7CgkJCSRydWxlID0gJHJ1bGVzZXQtPnJ1bGVzWyRpXTsKCgkJCWlmICggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfTWl4aW5fQ2FsbCApIHsKCQkJCSRydWxlID0gJHJ1bGUtPmNvbXBpbGUoICRlbnYgKTsKCgkJCQkkdGVtcCA9IFtdOwoJCQkJZm9yZWFjaCAoICRydWxlIGFzICRyICkgewoJCQkJCWlmICggKCAkciBpbnN0YW5jZW9mIExlc3NfVHJlZV9EZWNsYXJhdGlvbiApICYmICRyLT52YXJpYWJsZSApIHsKCQkJCQkJLy8gZG8gbm90IHBvbGx1dGUgdGhlIHNjb3BlIGlmIHRoZSB2YXJpYWJsZSBpcwoJCQkJCQkvLyBhbHJlYWR5IHRoZXJlLiBjb25zaWRlciByZXR1cm5pbmcgZmFsc2UgaGVyZQoJCQkJCQkvLyBidXQgd2UgbmVlZCBhIHdheSB0byAicmV0dXJuIiB2YXJpYWJsZSBmcm9tIG1peGlucwoJCQkJCQlpZiAoICEkcnVsZXNldC0+dmFyaWFibGUoICRyLT5uYW1lICkgKSB7CgkJCQkJCQkkdGVtcFtdID0gJHI7CgkJCQkJCX0KCQkJCQl9IGVsc2UgewoJCQkJCQkkdGVtcFtdID0gJHI7CgkJCQkJfQoJCQkJfQoJCQkJJHRlbXBfY291bnQgPSBjb3VudCggJHRlbXAgKSAtIDE7CgkJCQlhcnJheV9zcGxpY2UoICRydWxlc2V0LT5ydWxlcywgJGksIDEsICR0ZW1wICk7CgkJCQkkcnNSdWxlQ250ICs9ICR0ZW1wX2NvdW50OwoJCQkJJGkgKz0gJHRlbXBfY291bnQ7CgkJCQkkcnVsZXNldC0+cmVzZXRDYWNoZSgpOwoKCQkJfSBlbHNlaWYgKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9WYXJpYWJsZUNhbGwgKSB7CgoJCQkJJHJ1bGUgPSAkcnVsZS0+Y29tcGlsZSggJGVudiApOwoJCQkJJHJ1bGVzID0gW107CgkJCQlmb3JlYWNoICggJHJ1bGUtPnJ1bGVzIGFzICRyICkgewoJCQkJCWlmICggKCAkciBpbnN0YW5jZW9mIExlc3NfVHJlZV9EZWNsYXJhdGlvbiApICYmICRyLT52YXJpYWJsZSApIHsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCSRydWxlc1tdID0gJHI7CgkJCQl9CgoJCQkJYXJyYXlfc3BsaWNlKCAkcnVsZXNldC0+cnVsZXMsICRpLCAxLCAkcnVsZXMgKTsKCQkJCSR0ZW1wX2NvdW50ID0gY291bnQoICRydWxlcyApOwoJCQkJJHJzUnVsZUNudCArPSAkdGVtcF9jb3VudCAtIDE7CgkJCQkkaSArPSAkdGVtcF9jb3VudCAtIDE7CgkJCQkkcnVsZXNldC0+cmVzZXRDYWNoZSgpOwoJCQl9CgoJCX0KCX0KCgkvKioKCSAqIENvbXBpbGUgdGhlIHNlbGVjdG9ycyBhbmQgY3JlYXRlIGEgbmV3IHJ1bGVzZXQgb2JqZWN0IGZvciB0aGUgY29tcGlsZSgpIG1ldGhvZAoJICoKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50ICRlbnYKCSAqIEByZXR1cm4gc2VsZgoJICovCglwcml2YXRlIGZ1bmN0aW9uIFByZXBhcmVSdWxlc2V0KCAkZW52ICkgewoJCS8vIE5PVEU6IFByZXNlcnZlIGRpc3RpbmN0aW9uIGJldHdlZW4gbnVsbCBhbmQgZW1wdHkgYXJyYXkgd2hlbiBjb21waWxpbmcKCQkvLyAkdGhpcy0+c2VsZWN0b3JzIHRvICRzZWxlY3RvcnMKCQkkdGhpc1NlbGVjdG9ycyA9ICR0aGlzLT5zZWxlY3RvcnM7CgkJJHNlbGVjdG9ycyA9IG51bGw7CgkJJGhhc09uZVBhc3NpbmdTZWxlY3RvciA9IGZhbHNlOwoKCQlpZiAoICR0aGlzU2VsZWN0b3JzICkgewoJCQlMZXNzX1RyZWVfRGVmYXVsdEZ1bmM6OmVycm9yKCAiaXQgaXMgY3VycmVudGx5IG9ubHkgYWxsb3dlZCBpbiBwYXJhbWV0cmljIG1peGluIGd1YXJkcywiICk7CgoJCQkkc2VsZWN0b3JzID0gW107CgkJCWZvcmVhY2ggKCAkdGhpc1NlbGVjdG9ycyBhcyAkcyApIHsKCQkJCSRzZWxlY3RvciA9ICRzLT5jb21waWxlKCAkZW52ICk7CgkJCQkkc2VsZWN0b3JzW10gPSAkc2VsZWN0b3I7CgkJCQlpZiAoICRzZWxlY3Rvci0+ZXZhbGRDb25kaXRpb24gKSB7CgkJCQkJJGhhc09uZVBhc3NpbmdTZWxlY3RvciA9IHRydWU7CgkJCQl9CgkJCX0KCgkJCUxlc3NfVHJlZV9EZWZhdWx0RnVuYzo6cmVzZXQoKTsKCQl9IGVsc2UgewoJCQkkaGFzT25lUGFzc2luZ1NlbGVjdG9yID0gdHJ1ZTsKCQl9CgoJCWlmICggJHRoaXMtPnJ1bGVzICYmICRoYXNPbmVQYXNzaW5nU2VsZWN0b3IgKSB7CgkJCS8vIENvcHkgdGhlIGFycmF5IChubyBuZWVkIGZvciBzbGljZSBpbiBQSFApCgkJCSRydWxlcyA9ICR0aGlzLT5ydWxlczsKCQl9IGVsc2UgewoJCQkkcnVsZXMgPSBbXTsKCQl9CgoJCSRydWxlc2V0ID0gbmV3IHNlbGYoICRzZWxlY3RvcnMsICRydWxlcywgJHRoaXMtPnN0cmljdEltcG9ydHMgKTsKCgkJJHJ1bGVzZXQtPm9yaWdpbmFsUnVsZXNldCA9ICR0aGlzLT5ydWxlc2V0X2lkOwoJCSRydWxlc2V0LT5yb290ID0gJHRoaXMtPnJvb3Q7CgkJJHJ1bGVzZXQtPmZpcnN0Um9vdCA9ICR0aGlzLT5maXJzdFJvb3Q7CgkJJHJ1bGVzZXQtPmFsbG93SW1wb3J0cyA9ICR0aGlzLT5hbGxvd0ltcG9ydHM7CgoJCS8vIHB1c2ggdGhlIGN1cnJlbnQgcnVsZXNldCB0byB0aGUgZnJhbWVzIHN0YWNrCgkJJGVudi0+dW5zaGlmdEZyYW1lKCAkcnVsZXNldCApOwoKCQkvLyBFdmFsdWF0ZSBpbXBvcnRzCgkJaWYgKCAkcnVsZXNldC0+cm9vdCB8fCAkcnVsZXNldC0+YWxsb3dJbXBvcnRzIHx8ICEkcnVsZXNldC0+c3RyaWN0SW1wb3J0cyApIHsKCQkJJHJ1bGVzZXQtPmV2YWxJbXBvcnRzKCAkZW52ICk7CgkJfQoKCQlyZXR1cm4gJHJ1bGVzZXQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGV2YWxJbXBvcnRzKCAkZW52ICkgewoJCSRydWxlc19sZW4gPSBjb3VudCggJHRoaXMtPnJ1bGVzICk7CgkJZm9yICggJGkgPSAwOyAkaSA8ICRydWxlc19sZW47ICRpKysgKSB7CgkJCSRydWxlID0gJHRoaXMtPnJ1bGVzWyRpXTsKCgkJCWlmICggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfSW1wb3J0ICkgewoJCQkJJHJ1bGVzID0gJHJ1bGUtPmNvbXBpbGUoICRlbnYgKTsKCQkJCWlmICggaXNfYXJyYXkoICRydWxlcyApICkgewoJCQkJCWFycmF5X3NwbGljZSggJHRoaXMtPnJ1bGVzLCAkaSwgMSwgJHJ1bGVzICk7CgkJCQkJJHRlbXBfY291bnQgPSBjb3VudCggJHJ1bGVzICkgLSAxOwoJCQkJCSRpICs9ICR0ZW1wX2NvdW50OwoJCQkJCSRydWxlc19sZW4gKz0gJHRlbXBfY291bnQ7CgkJCQl9IGVsc2UgewoJCQkJCWFycmF5X3NwbGljZSggJHRoaXMtPnJ1bGVzLCAkaSwgMSwgWyAkcnVsZXMgXSApOwoJCQkJfQoKCQkJCSR0aGlzLT5yZXNldENhY2hlKCk7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1ha2VJbXBvcnRhbnQoKSB7CgkJJGltcG9ydGFudF9ydWxlcyA9IFtdOwoJCWZvcmVhY2ggKCAkdGhpcy0+cnVsZXMgYXMgJHJ1bGUgKSB7CgkJCWlmICggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGVjbGFyYXRpb24gfHwgJHJ1bGUgaW5zdGFuY2VvZiBzZWxmIHx8ICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX05hbWVWYWx1ZSApIHsKCQkJCSRpbXBvcnRhbnRfcnVsZXNbXSA9ICRydWxlLT5tYWtlSW1wb3J0YW50KCk7CgkJCX0gZWxzZSB7CgkJCQkkaW1wb3J0YW50X3J1bGVzW10gPSAkcnVsZTsKCQkJfQoJCX0KCgkJcmV0dXJuIG5ldyBzZWxmKCAkdGhpcy0+c2VsZWN0b3JzLCAkaW1wb3J0YW50X3J1bGVzLCAkdGhpcy0+c3RyaWN0SW1wb3J0cyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBtYXRjaEFyZ3MoICRhcmdzLCAkZW52ID0gbnVsbCApIHsKCQlyZXR1cm4gISRhcmdzOwoJfQoKCS8vIGxldHMgeW91IGNhbGwgYSBjc3Mgc2VsZWN0b3Igd2l0aCBhIGd1YXJkCglwdWJsaWMgZnVuY3Rpb24gbWF0Y2hDb25kaXRpb24oICRhcmdzLCAkZW52ICkgewoJCSRsYXN0U2VsZWN0b3IgPSBlbmQoICR0aGlzLT5zZWxlY3RvcnMgKTsKCgkJaWYgKCAhJGxhc3RTZWxlY3Rvci0+ZXZhbGRDb25kaXRpb24gKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJaWYgKCAkbGFzdFNlbGVjdG9yLT5jb25kaXRpb24gJiYgISRsYXN0U2VsZWN0b3ItPmNvbmRpdGlvbi0+Y29tcGlsZSggJGVudi0+Y29weUV2YWxFbnYoICRlbnYtPmZyYW1lcyApICkgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlc2V0Q2FjaGUoKSB7CgkJJHRoaXMtPl92YXJpYWJsZXMgPSBudWxsOwoJCSR0aGlzLT5sb29rdXBzID0gW107Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMy4xMy4xLmpzI1J1bGVzZXQucHJvdG90eXBlLnZhcmlhYmxlcwoJICovCglwdWJsaWMgZnVuY3Rpb24gdmFyaWFibGVzKCkgewoJCSR0aGlzLT5fdmFyaWFibGVzID0gW107CgkJZm9yZWFjaCAoICR0aGlzLT5ydWxlcyBhcyAkciApIHsKCQkJaWYgKCAkciBpbnN0YW5jZW9mIExlc3NfVHJlZV9EZWNsYXJhdGlvbiAmJiAkci0+dmFyaWFibGUgPT09IHRydWUgKSB7CgkJCQkkdGhpcy0+X3ZhcmlhYmxlc1skci0+bmFtZV0gPSAkcjsKCQkJfQoJCQkvLyB3aGVuIGV2YWx1YXRpbmcgdmFyaWFibGVzIGluIGFuIGltcG9ydCBzdGF0ZW1lbnQsIGltcG9ydHMgaGF2ZSBub3QgYmVlbiBldmFsJ2QKCQkJLy8gc28gd2UgbmVlZCB0byBnbyBpbnNpZGUgaW1wb3J0IHN0YXRlbWVudHMuCgkJCS8vIGd1YXJkIGFnYWluc3Qgcm9vdCBiZWluZyBhIHN0cmluZyAoaW4gdGhlIGNhc2Ugb2YgaW5saW5lZCBsZXNzKQoJCQlpZiAoICRyIGluc3RhbmNlb2YgTGVzc19UcmVlX0ltcG9ydCAmJiAkci0+cm9vdCBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlc2V0ICkgewoJCQkJJHZhcnMgPSAkci0+cm9vdC0+dmFyaWFibGVzKCk7CgkJCQlmb3JlYWNoICggJHZhcnMgYXMgJGtleSA9PiAkbmFtZSApIHsKCQkJCQkkdGhpcy0+X3ZhcmlhYmxlc1ska2V5XSA9ICRuYW1lOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiAkdGhpcy0+X3ZhcmlhYmxlczsKCX0KCgkvKioKCSAqIEBzZWUgbGVzcy0zLjEzLjEjUnVsZXNldC5wcm90b3R5cGUucHJvcGVydGllcwoJICovCglwdWJsaWMgZnVuY3Rpb24gcHJvcGVydGllcygpIHsKCQkkdGhpcy0+X3Byb3BlcnRpZXMgPSBbXTsKCQlmb3JlYWNoICggJHRoaXMtPnJ1bGVzIGFzICRyICkgewoKCQkJaWYgKCAkciBpbnN0YW5jZW9mIExlc3NfVHJlZV9EZWNsYXJhdGlvbiAmJiAkci0+dmFyaWFibGUgIT09IHRydWUgKSB7CgkJCQkkbmFtZSA9IGlzX2FycmF5KCAkci0+bmFtZSApICYmIGNvdW50KCAkci0+bmFtZSApID09PSAxICYmICRyLT5uYW1lWzBdIGluc3RhbmNlb2YgTGVzc19UcmVlX0tleXdvcmQKCQkJCQk/ICRyLT5uYW1lWzBdLT52YWx1ZQoJCQkJCTogJHItPm5hbWU7CgkJCQkvLyBQcm9wZXJ0aWVzIGRvbid0IG92ZXJ3cml0ZSBhcyB0aGV5IGNhbiBtZXJnZQoKCQkJCS8vIFRPRE86IGRpZmZlcnMgZnJvbSB1cHN0cmVhbS4gVXBzdHJlYW0gZXhwZWN0cyAkci0+bmFtZSB0byBiZSBvbmx5IGEKCQkJCS8vIExlc3NfVHJlZV9LZXl3b3JkIGJ1dCBzb21laG93IG91ciBwYXJzZXIgYWxzbyByZXR1cm5zIExlc3NfVHJlZV9Qcm9wZXJ0eS4KCQkJCS8vIExldCdzIGhhbmRsZSBpdCBmb3Igbm93LCBidXQgd2Ugc2hvdWxkIGRlYnVnIHdoeSB0aGlzIGhhcHBlbnMKCQkJCS8vIGNhdXNlZCBieSB0ZXN0L0ZpeHR1cmVzL2xlc3Nqcy0zLjEzLjEvbGVzcy9fbWFpbi9wcm9wZXJ0eS1hY2Nlc3NvcnMubGVzczo1OQoJCQkJaWYgKCBpc19hcnJheSggJG5hbWUgKSAmJiAkbmFtZVswXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Qcm9wZXJ0eSApIHsKCQkJCQkkbmFtZSA9ICRuYW1lWzBdLT5uYW1lOwoJCQkJfQoKCQkJCSRpZHggPSAnJCcgLiAkbmFtZTsKCQkJCWlmICggIWFycmF5X2tleV9leGlzdHMoICRpZHgsICR0aGlzLT5fcHJvcGVydGllcyApICkgewoJCQkJCSR0aGlzLT5fcHJvcGVydGllc1sgJGlkeCBdID0gW107CgkJCQl9CgkJCQkkdGhpcy0+X3Byb3BlcnRpZXNbICRpZHggXVtdID0gJHI7CgkJCX0KCQl9CgkJcmV0dXJuICR0aGlzLT5fcHJvcGVydGllczsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKCSAqIEByZXR1cm4gTGVzc19UcmVlX0RlY2xhcmF0aW9ufG51bGwKCSAqIEBzZWUgbGVzcy0zLjEzLjEjUnVsZXNldC5wcm90b3R5cGUudmFyaWFibGUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHZhcmlhYmxlKCAkbmFtZSApIHsKCQlpZiAoICR0aGlzLT5fdmFyaWFibGVzID09PSBudWxsICkgewoJCQkkdGhpcy0+dmFyaWFibGVzKCk7CgkJfQoJCXJldHVybiBhcnJheV9rZXlfZXhpc3RzKCAkbmFtZSwgJHRoaXMtPl92YXJpYWJsZXMgKQoJCQk/ICR0aGlzLT5wYXJzZVZhbHVlKCAkdGhpcy0+X3ZhcmlhYmxlc1sgJG5hbWUgXSApCgkJCTogbnVsbDsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKCSAqIEBzZWUgbGVzcy0zLjEzLjEjUnVsZXNldC5wcm90b3R5cGUucHJvcGVydHkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHByb3BlcnR5KCAkbmFtZSApIHsKCQlpZiAoICR0aGlzLT5fcHJvcGVydGllcyA9PT0gbnVsbCApIHsKCQkJJHRoaXMtPnByb3BlcnRpZXMoKTsKCQl9CgkJcmV0dXJuIGFycmF5X2tleV9leGlzdHMoICRuYW1lLCAkdGhpcy0+X3Byb3BlcnRpZXMgKQoJCQk/ICR0aGlzLT5wYXJzZVZhbHVlKCAkdGhpcy0+X3Byb3BlcnRpZXNbICRuYW1lIF0gKQoJCQk6IG51bGw7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlX0RlY2xhcmF0aW9uICRkZWNsCgkgKiBAcmV0dXJuIG1peGVkCgkgKiBAdGhyb3dzIExlc3NfRXhjZXB0aW9uX1BhcnNlcgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHRyYW5zZm9ybURlY2xhcmF0aW9uKCAkZGVjbCApIHsKCQlpZiAoICRkZWNsLT52YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Bbm9ueW1vdXMgJiYgISRkZWNsLT5wYXJzZWQgKSB7CgkJCVsgJGVyciwgJHJlc3VsdCBdID0gc2VsZjo6JHBhcnNlLT5wYXJzZU5vZGUoCgkJCQkoc3RyaW5nKSRkZWNsLT52YWx1ZS0+dmFsdWUsCgkJCQlbICd2YWx1ZScsICdpbXBvcnRhbnQnIF0sCgkJCQkkZGVjbC0+dmFsdWUtPmluZGV4LAoJCQkJJGRlY2wtPnZhbHVlLT5jdXJyZW50RmlsZUluZm8gPz8gW10KCQkJKTsKCQkJaWYgKCAkZXJyICkgewoJCQkJJGRlY2wtPnBhcnNlZCA9IHRydWU7CgkJCX0KCQkJaWYgKCAkcmVzdWx0ICkgewoJCQkJJGRlY2wtPnZhbHVlID0gJHJlc3VsdFswXTsKCQkJCSRkZWNsLT5pbXBvcnRhbnQgPSAkcmVzdWx0WzFdID8/ICcnOwoJCQkJJGRlY2wtPnBhcnNlZCA9IHRydWU7CgkJCX0KCQkJcmV0dXJuICRkZWNsOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkZGVjbDsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGxhc3REZWNsYXJhdGlvbigpIHsKCQlmb3IgKCAkaSA9IGNvdW50KCAkdGhpcy0+cnVsZXMgKTsgJGkgPiAwOyAkaS0tICkgewoJCQkkZGVjbCA9ICR0aGlzLT5ydWxlc1sgJGkgLSAxIF07CgkJCWlmICggJGRlY2wgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGVjbGFyYXRpb24gKSB7CgkJCQlyZXR1cm4gJHRoaXMtPnBhcnNlVmFsdWUoICRkZWNsICk7CgkJCX0KCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVZhbHVlKCAkdG9QYXJzZSApIHsKCQlpZiAoICFpc19hcnJheSggJHRvUGFyc2UgKSApIHsKCQkJcmV0dXJuICR0aGlzLT50cmFuc2Zvcm1EZWNsYXJhdGlvbiggJHRvUGFyc2UgKTsKCQl9IGVsc2UgewoJCQkkbm9kZXMgPSBbXTsKCQkJZm9yZWFjaCAoICR0b1BhcnNlIGFzICRuICkgewoJCQkJJG5vZGVzW10gPSAkdGhpcy0+dHJhbnNmb3JtRGVjbGFyYXRpb24oICRuICk7CgkJCX0KCQkJcmV0dXJuICRub2RlczsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGZpbmQoICRzZWxlY3RvciwgJHNlbGYgPSBudWxsLCAkZmlsdGVyID0gbnVsbCApIHsKCQkka2V5ID0gaW1wbG9kZSggJyAnLCAkc2VsZWN0b3ItPl9vZWxlbWVudHMgKTsKCgkJaWYgKCAhaXNzZXQoICR0aGlzLT5sb29rdXBzWyRrZXldICkgKSB7CgoJCQlpZiAoICEkc2VsZiApIHsKCQkJCSRzZWxmID0gJHRoaXMtPnJ1bGVzZXRfaWQ7CgkJCX0KCgkJCSR0aGlzLT5sb29rdXBzWyRrZXldID0gW107CgoJCQkkZmlyc3Rfb2VsZW1lbnQgPSAkc2VsZWN0b3ItPl9vZWxlbWVudHNbMF07CgoJCQlmb3JlYWNoICggJHRoaXMtPnJ1bGVzIGFzICRydWxlICkgewoJCQkJaWYgKCAkcnVsZSBpbnN0YW5jZW9mIHNlbGYgJiYgJHJ1bGUtPnJ1bGVzZXRfaWQgIT0gJHNlbGYgKSB7CgoJCQkJCWlmICggaXNzZXQoICRydWxlLT5maXJzdF9vZWxlbWVudHNbJGZpcnN0X29lbGVtZW50XSApICkgewoKCQkJCQkJZm9yZWFjaCAoICRydWxlLT5zZWxlY3RvcnMgYXMgJHJ1bGVTZWxlY3RvciApIHsKCQkJCQkJCSRtYXRjaCA9ICRzZWxlY3Rvci0+bWF0Y2goICRydWxlU2VsZWN0b3IgKTsKCQkJCQkJCWlmICggJG1hdGNoICkgewoJCQkJCQkJCWlmICggJHNlbGVjdG9yLT5lbGVtZW50c19sZW4gPiAkbWF0Y2ggKSB7CgkJCQkJCQkJCWlmICggISRmaWx0ZXIgfHwgJGZpbHRlciggJHJ1bGUgKSApIHsKCQkJCQkJCQkJCSRmb3VuZE1peGlucyA9ICRydWxlLT5maW5kKCBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCBhcnJheV9zbGljZSggJHNlbGVjdG9yLT5lbGVtZW50cywgJG1hdGNoICkgKSwgJHNlbGYsICRmaWx0ZXIgKTsKCQkJCQkJCQkJCWZvciAoICRpID0gMDsgJGkgPCBjb3VudCggJGZvdW5kTWl4aW5zICk7ICsrJGkgKSB7CgkJCQkJCQkJCQkJJGZvdW5kTWl4aW5zWyRpXVsicGF0aCJdW10gPSAkcnVsZTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJCSR0aGlzLT5sb29rdXBzWyRrZXldID0gYXJyYXlfbWVyZ2UoICR0aGlzLT5sb29rdXBzWyRrZXldLCAkZm91bmRNaXhpbnMgKTsKCQkJCQkJCQkJfQoJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCSR0aGlzLT5sb29rdXBzWyRrZXldW10gPSBbICJydWxlIiA9PiAkcnVsZSwgInBhdGgiID0+IFtdIF07CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgoJCX0KCgkJcmV0dXJuICR0aGlzLT5sb29rdXBzWyRrZXldOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gaXNSdWxlc2V0TGlrZU5vZGUoICRydWxlICkgewoJCS8vIGlmIGl0IGhhcyBuZXN0ZWQgcnVsZXMsIHRoZW4gaXQgc2hvdWxkIGJlIHRyZWF0ZWQgbGlrZSBhIHJ1bGVzZXQKCQkvLyBtZWRpYXMgYW5kIGNvbW1lbnRzIGRvIG5vdCBoYXZlIG5lc3RlZCBydWxlcywgYnV0IHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgcnVsZXNldHMgYW55d2F5CgkJLy8gc29tZSBkaXJlY3RpdmVzIGFuZCBhbm9ueW1vdXMgbm9kZXMgYXJlIHJ1bGVzZXQgbGlrZSwgb3RoZXJzIGFyZSBub3QKCQlpZiAoICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX01lZGlhIHx8ICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGVzZXQgKSB7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxzZWlmICggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQW5vbnltb3VzIHx8ICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX0F0UnVsZSApIHsKCQkJcmV0dXJuICRydWxlLT5pc1J1bGVzZXRMaWtlKCk7CgkJfQoKCQkvLyBhbnl0aGluZyBlbHNlIGlzIGFzc3VtZWQgdG8gYmUgYSBydWxlCgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfT3V0cHV0ICRvdXRwdXQKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNSdWxlc2V0LnByb3RvdHlwZS5nZW5DU1MKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQlpZiAoICEkdGhpcy0+cm9vdCApIHsKCQkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsKys7CgkJfQoKCQkkdGFiUnVsZVN0ciA9ICR0YWJTZXRTdHIgPSAnJzsKCQlpZiAoICFMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gKSB7CgkJCWlmICggTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsICkgewoJCQkJJHRhYlJ1bGVTdHIgPSAiXG4iIC4gc3RyX3JlcGVhdCggTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbmRlbnRhdGlvbiddLCBMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwgKTsKCQkJCSR0YWJTZXRTdHIgPSAiXG4iIC4gc3RyX3JlcGVhdCggTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbmRlbnRhdGlvbiddLCBMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwgLSAxICk7CgkJCX0gZWxzZSB7CgkJCQkkdGFiU2V0U3RyID0gJHRhYlJ1bGVTdHIgPSAiXG4iOwoJCQl9CgkJfQoKCQkkcnVsZU5vZGVzID0gW107CgkJJGNoYXJzZXROb2RlSW5kZXggPSAwOwoJCSRpbXBvcnROb2RlSW5kZXggPSAwOwoJCWZvcmVhY2ggKCAkdGhpcy0+cnVsZXMgYXMgJGkgPT4gJHJ1bGUgKSB7CgkJCWlmICggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29tbWVudCApIHsKCQkJCWlmICggJGltcG9ydE5vZGVJbmRleCA9PT0gJGkgKSB7CgkJCQkJJGltcG9ydE5vZGVJbmRleCsrOwoJCQkJfQoJCQkJJHJ1bGVOb2Rlc1tdID0gJHJ1bGU7CgkJCX0gZWxzZWlmICggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQXRSdWxlICYmICRydWxlLT5pc0NoYXJzZXQoKSApIHsKCQkJCWFycmF5X3NwbGljZSggJHJ1bGVOb2RlcywgJGNoYXJzZXROb2RlSW5kZXgsIDAsIFsgJHJ1bGUgXSApOwoJCQkJJGNoYXJzZXROb2RlSW5kZXgrKzsKCQkJCSRpbXBvcnROb2RlSW5kZXgrKzsKCQkJfSBlbHNlaWYgKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9JbXBvcnQgKSB7CgkJCQlhcnJheV9zcGxpY2UoICRydWxlTm9kZXMsICRpbXBvcnROb2RlSW5kZXgsIDAsIFsgJHJ1bGUgXSApOwoJCQkJJGltcG9ydE5vZGVJbmRleCsrOwoJCQl9IGVsc2UgewoJCQkJJHJ1bGVOb2Rlc1tdID0gJHJ1bGU7CgkJCX0KCQl9CgoJCS8vIElmIHRoaXMgaXMgdGhlIHJvb3Qgbm9kZSwgd2UgZG9uJ3QgcmVuZGVyCgkJLy8gYSBzZWxlY3Rvciwgb3Ige30uCgkJaWYgKCAhJHRoaXMtPnJvb3QgKSB7CgoJCQkkc2VwID0gJywnIC4gJHRhYlNldFN0cjsKCQkJLy8gVE9ETzogTW92ZSB0byBFbnYgb2JqZWN0CgkJCS8vIFRPRE86IEluamVjdCBFbnYgb2JqZWN0IHRvIHRvQ1NTKCkgYW5kIGdlbkNTUygpCgkJCSRmaXJzdFNlbGVjdG9yID0gZmFsc2U7CgoJCQlmb3JlYWNoICggJHRoaXMtPnBhdGhzIGFzICRpID0+ICRwYXRoICkgewoJCQkJJHBhdGhTdWJDbnQgPSBjb3VudCggJHBhdGggKTsKCQkJCWlmICggISRwYXRoU3ViQ250ICkgewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoJCQkJaWYgKCAkaSA+IDAgKSB7CgkJCQkJJG91dHB1dC0+YWRkKCAkc2VwICk7CgkJCQl9CgkJCQkkZmlyc3RTZWxlY3RvciA9IHRydWU7CgkJCQkkcGF0aFswXS0+Z2VuQ1NTKCAkb3V0cHV0LCAkZmlyc3RTZWxlY3RvciApOwoJCQkJJGZpcnN0U2VsZWN0b3IgPSBmYWxzZTsKCQkJCWZvciAoICRqID0gMTsgJGogPCAkcGF0aFN1YkNudDsgJGorKyApIHsKCQkJCQkkcGF0aFskal0tPmdlbkNTUyggJG91dHB1dCwgJGZpcnN0U2VsZWN0b3IgKTsKCQkJCX0KCQkJfQoKCQkJJG91dHB1dC0+YWRkKCAoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSA/ICd7JyA6ICIgeyIgKSAuICR0YWJSdWxlU3RyICk7CgkJfQoKCQkvLyBDb21waWxlIHJ1bGVzIGFuZCBydWxlc2V0cwoJCWZvcmVhY2ggKCAkcnVsZU5vZGVzIGFzICRpID0+ICRydWxlICkgewoKCQkJaWYgKCAkaSArIDEgPT09IGNvdW50KCAkcnVsZU5vZGVzICkgKSB7CgkJCQlMZXNzX0Vudmlyb25tZW50OjokbGFzdFJ1bGUgPSB0cnVlOwoJCQl9CgkJCSRjdXJyZW50TGFzdFJ1bGUgPSBMZXNzX0Vudmlyb25tZW50OjokbGFzdFJ1bGU7CgoJCQlpZiAoICR0aGlzLT5pc1J1bGVzZXRMaWtlTm9kZSggJHJ1bGUgKSApIHsKCQkJCUxlc3NfRW52aXJvbm1lbnQ6OiRsYXN0UnVsZSA9IGZhbHNlOwoJCQl9CgoJCQkkcnVsZS0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgoJCQlMZXNzX0Vudmlyb25tZW50OjokbGFzdFJ1bGUgPSAkY3VycmVudExhc3RSdWxlOwoKCQkJaWYgKCAhTGVzc19FbnZpcm9ubWVudDo6JGxhc3RSdWxlICYmICRydWxlLT5pc1Zpc2libGUoKSApIHsKCQkJCSRvdXRwdXQtPmFkZCggJHRhYlJ1bGVTdHIgKTsKCQkJfSBlbHNlIHsKCQkJCUxlc3NfRW52aXJvbm1lbnQ6OiRsYXN0UnVsZSA9IGZhbHNlOwoJCQl9CgkJfQoKCQlpZiAoICEkdGhpcy0+cm9vdCApIHsKCQkJJG91dHB1dC0+YWRkKCAkdGFiU2V0U3RyIC4gJ30nICk7CgkJCUxlc3NfRW52aXJvbm1lbnQ6OiR0YWJMZXZlbC0tOwoJCX0KCgkJaWYgKCAhTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICYmICR0aGlzLT5maXJzdFJvb3QgKSB7CgkJCSRvdXRwdXQtPmFkZCggIlxuIiApOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKSB7CgkJaWYgKCAkdGhpcy0+c2VsZWN0b3JzICE9PSBudWxsICkgewoJCQlmb3JlYWNoICggJHRoaXMtPnNlbGVjdG9ycyBhcyAkc2VsZWN0b3IgKSB7CgkJCQkkc2VsZWN0b3ItPm1hcmtSZWZlcmVuY2VkKCk7CgkJCX0KCQl9CgoJCWlmICggJHRoaXMtPnJ1bGVzICkgewoJCQlmb3JlYWNoICggJHRoaXMtPnJ1bGVzIGFzICRydWxlICkgewoJCQkJaWYgKCBtZXRob2RfZXhpc3RzKCAkcnVsZSwgJ21hcmtSZWZlcmVuY2VkJyApICkgewoJCQkJCSRydWxlLT5tYXJrUmVmZXJlbmNlZCgpOwoJCQkJfQoJCQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRJc1JlZmVyZW5jZWQoKSB7CgkJaWYgKCAkdGhpcy0+cGF0aHMgKSB7CgkJCWZvcmVhY2ggKCAkdGhpcy0+cGF0aHMgYXMgJHBhdGggKSB7CgkJCQlmb3JlYWNoICggJHBhdGggYXMgJHAgKSB7CgkJCQkJaWYgKCBtZXRob2RfZXhpc3RzKCAkcCwgJ2dldElzUmVmZXJlbmNlZCcgKSAmJiAkcC0+Z2V0SXNSZWZlcmVuY2VkKCkgKSB7CgkJCQkJCXJldHVybiB0cnVlOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJaWYgKCAkdGhpcy0+c2VsZWN0b3JzICkgewoJCQlmb3JlYWNoICggJHRoaXMtPnNlbGVjdG9ycyBhcyAkc2VsZWN0b3IgKSB7CgkJCQlpZiAoIG1ldGhvZF9leGlzdHMoICRzZWxlY3RvciwgJ2dldElzUmVmZXJlbmNlZCcgKSAmJiAkc2VsZWN0b3ItPmdldElzUmVmZXJlbmNlZCgpICkgewoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlX1NlbGVjdG9yW11bXSAkY29udGV4dAoJICogQHBhcmFtIExlc3NfVHJlZV9TZWxlY3RvcltdfG51bGwgJHNlbGVjdG9ycwoJICogQHJldHVybiBMZXNzX1RyZWVfU2VsZWN0b3JbXVtdCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBqb2luU2VsZWN0b3JzKCAkY29udGV4dCwgJHNlbGVjdG9ycyApIHsKCQkkcGF0aHMgPSBbXTsKCQlpZiAoICRzZWxlY3RvcnMgIT09IG51bGwgKSB7CgkJCWZvcmVhY2ggKCAkc2VsZWN0b3JzIGFzICRzZWxlY3RvciApIHsKCQkJCSR0aGlzLT5qb2luU2VsZWN0b3IoICRwYXRocywgJGNvbnRleHQsICRzZWxlY3RvciApOwoJCQl9CgkJfQoJCXJldHVybiAkcGF0aHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGpvaW5TZWxlY3RvciggYXJyYXkgJiRwYXRocywgYXJyYXkgJGNvbnRleHQsIExlc3NfVHJlZV9TZWxlY3RvciAkc2VsZWN0b3IgKSB7CgkJJG5ld1BhdGhzID0gW107CgkJJGhhZFBhcmVudFNlbGVjdG9yID0gJHRoaXMtPnJlcGxhY2VQYXJlbnRTZWxlY3RvciggJG5ld1BhdGhzLCAkY29udGV4dCwgJHNlbGVjdG9yICk7CgoJCWlmICggISRoYWRQYXJlbnRTZWxlY3RvciApIHsKCQkJaWYgKCAkY29udGV4dCApIHsKCQkJCSRuZXdQYXRocyA9IFtdOwoJCQkJZm9yZWFjaCAoICRjb250ZXh0IGFzICRwYXRoICkgewoJCQkJCSRuZXdQYXRoc1tdID0gYXJyYXlfbWVyZ2UoICRwYXRoLCBbICRzZWxlY3RvciBdICk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkbmV3UGF0aHMgPSBbIFsgJHNlbGVjdG9yIF0gXTsKCQkJfQoJCX0KCgkJZm9yZWFjaCAoICRuZXdQYXRocyBhcyAkbmV3UGF0aCApIHsKCQkJJHBhdGhzW10gPSAkbmV3UGF0aDsKCQl9Cgl9CgoJLyoqCgkgKiBSZXBsYWNlIGFsbCBwYXJlbnQgc2VsZWN0b3JzIGluc2lkZSAkaW5TZWxlY3RvciB3aXRoICRjb250ZXh0LgoJICoKCSAqIEBwYXJhbSBhcnJheSAmJHBhdGhzIFJlc3VsdGluZyBzZWxlY3RvcnMgYXJlIGFwcGVuZGVkIHRvICRwYXRocy4KCSAqIEBwYXJhbSBtaXhlZCAkY29udGV4dAoJICogQHBhcmFtIExlc3NfVHJlZV9TZWxlY3RvciAkaW5TZWxlY3RvciBJbm5lciBzZWxlY3RvciBmcm9tIExlc3NfVHJlZV9QYXJlbgoJICogQHJldHVybiBib29sIFRydWUgaWYgJGluU2VsZWN0b3IgY29udGFpbmVkIGF0IGxlYXN0IG9uZSBwYXJlbnQgc2VsZWN0b3IKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiByZXBsYWNlUGFyZW50U2VsZWN0b3IoIGFycmF5ICYkcGF0aHMsICRjb250ZXh0LCBMZXNzX1RyZWVfU2VsZWN0b3IgJGluU2VsZWN0b3IgKSB7CgkJJGhhZFBhcmVudFNlbGVjdG9yID0gZmFsc2U7CgoJCS8vIFRoZSBwYXRocyBhcmUgW1tTZWxlY3Rvcl1dCgkJLy8gVGhlIGZpcnN0IGxpc3QgaXMgYSBsaXN0IG9mIGNvbW1hIHNlcGFyYXRlZCBzZWxlY3RvcnMKCQkvLyBUaGUgaW5uZXIgbGlzdCBpcyBhIGxpc3Qgb2YgaW5oZXJpdGFuY2Ugc2VwYXJhdGVkIHNlbGVjdG9ycwoJCS8vIGUuZy4KCQkvLyAuYSwgLmIgewoJCS8vICAgLmMgewoJCS8vICAgfQoJCS8vIH0KCQkvLyA9PSBbWy5hXSBbLmNdXSBbWy5iXSBbLmNdXQoJCS8vCgoJCS8vIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdG9yIHNvIGZhcgoJCSRjdXJyZW50RWxlbWVudHMgPSBbXTsKCQkvLyB0aGUgY3VycmVudCBsaXN0IG9mIG5ldyBzZWxlY3RvcnMgdG8gYWRkIHRvIHRoZSBwYXRoLgoJCS8vIFdlIHdpbGwgYnVpbGQgaXQgdXAuIFdlIGluaXRpYXRlIGl0IHdpdGggb25lIGVtcHR5IHNlbGVjdG9yIGFzIHdlICJtdWx0aXBseSIgdGhlIG5ldyBzZWxlY3RvcnMKCQkvLyBieSB0aGUgcGFyZW50cwoJCSRuZXdTZWxlY3RvcnMgPSBbCgkJCVtdCgkJXTsKCgkJZm9yZWFjaCAoICRpblNlbGVjdG9yLT5lbGVtZW50cyBhcyAkZWwgKSB7CgkJCS8vIG5vbi1wYXJlbnQgcmVmZXJlbmNlIGVsZW1lbnRzIGp1c3QgZ2V0IGFkZGVkCgkJCWlmICggJGVsLT52YWx1ZSAhPT0gJyYnICkgewoJCQkJJG5lc3RlZFNlbGVjdG9yID0gJHRoaXMtPmZpbmROZXN0ZWRTZWxlY3RvciggJGVsICk7CgkJCQlpZiAoICRuZXN0ZWRTZWxlY3RvciAhPT0gbnVsbCApIHsKCQkJCQkkdGhpcy0+bWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoICRjdXJyZW50RWxlbWVudHMsICRuZXdTZWxlY3RvcnMgKTsKCgkJCQkJJG5lc3RlZFBhdGhzID0gW107CgkJCQkJJHJlcGxhY2VkTmV3U2VsZWN0b3JzID0gW107CgkJCQkJJHJlcGxhY2VkID0gJHRoaXMtPnJlcGxhY2VQYXJlbnRTZWxlY3RvciggJG5lc3RlZFBhdGhzLCAkY29udGV4dCwgJG5lc3RlZFNlbGVjdG9yICk7CgkJCQkJJGhhZFBhcmVudFNlbGVjdG9yID0gJGhhZFBhcmVudFNlbGVjdG9yIHx8ICRyZXBsYWNlZDsKCQkJCQkvLyAkbmVzdGVkUGF0aHMgaXMgcG9wdWxhdGVkIGJ5IHJlcGxhY2VQYXJlbnRTZWxlY3RvcigpCgkJCQkJLy8gJG5lc3RlZFBhdGhzIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIFRPRE8sIHJlcGxhY2VQYXJlbnRTZWxlY3RvciBkb2VzIG5vdCBtdWx0aXBseSBzZWxlY3RvcnMKCQkJCQlmb3JlYWNoICggJG5lc3RlZFBhdGhzIGFzICRuZXN0ZWRQYXRoICkgewoJCQkJCQkkcmVwbGFjZW1lbnRTZWxlY3RvciA9ICR0aGlzLT5jcmVhdGVTZWxlY3RvciggJG5lc3RlZFBhdGgsICRlbCApOwoKCQkJCQkJLy8gam9pbiBzZWxlY3RvciBwYXRoIGZyb20gJG5ld1NlbGVjdG9ycyB3aXRoIGV2ZXJ5IHNlbGVjdG9yIHBhdGggaW4gJGFkZFBhdGhzIGFycmF5LgoJCQkJCQkvLyAkZWwgY29udGFpbnMgdGhlIGVsZW1lbnQgdGhhdCBpcyBiZWluZyByZXBsYWNlZCBieSAkYWRkUGF0aHMKCQkJCQkJLy8KCQkJCQkJLy8gQHNlZSBsZXNzLTIuNS4zLmpzI1J1bGVzZXQtYWRkQWxsUmVwbGFjZW1lbnRzSW50b1BhdGgKCQkJCQkJJGFkZFBhdGhzID0gWyAkcmVwbGFjZW1lbnRTZWxlY3RvciBdOwoJCQkJCQlmb3JlYWNoICggJG5ld1NlbGVjdG9ycyBhcyAkbmV3U2VsZWN0b3IgKSB7CgkJCQkJCQkkcmVwbGFjZWROZXdTZWxlY3RvcnNbXSA9ICR0aGlzLT5hZGRSZXBsYWNlbWVudEludG9QYXRoKCAkbmV3U2VsZWN0b3IsICRhZGRQYXRocywgJGVsLCAkaW5TZWxlY3RvciApOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRuZXdTZWxlY3RvcnMgPSAkcmVwbGFjZWROZXdTZWxlY3RvcnM7CgkJCQkJJGN1cnJlbnRFbGVtZW50cyA9IFtdOwoJCQkJfSBlbHNlIHsKCQkJCQkkY3VycmVudEVsZW1lbnRzW10gPSAkZWw7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkaGFkUGFyZW50U2VsZWN0b3IgPSB0cnVlOwoKCQkJCS8vIHRoZSBuZXcgbGlzdCBvZiBzZWxlY3RvcnMgdG8gYWRkCgkJCQkkc2VsZWN0b3JzTXVsdGlwbGllZCA9IFtdOwoKCQkJCS8vIG1lcmdlIHRoZSBjdXJyZW50IGxpc3Qgb2Ygbm9uIHBhcmVudCBzZWxlY3RvciBlbGVtZW50cwoJCQkJLy8gb24gdG8gdGhlIGN1cnJlbnQgbGlzdCBvZiBzZWxlY3RvcnMgdG8gYWRkCgkJCQkkdGhpcy0+bWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoICRjdXJyZW50RWxlbWVudHMsICRuZXdTZWxlY3RvcnMgKTsKCgkJCQlmb3JlYWNoICggJG5ld1NlbGVjdG9ycyBhcyAkc2VsICkgewoJCQkJCS8vIGlmIHdlIGRvbid0IGhhdmUgYW55IHBhcmVudCBwYXRocywgdGhlICYgbWlnaHQgYmUgaW4gYSBtaXhpbiBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkCgkJCQkJLy8gd2hldGhlciB0aGVyZSBhcmUgcGFyZW50cyBvciBub3QKCQkJCQlpZiAoICEkY29udGV4dCApIHsKCQkJCQkJLy8gdGhlIGNvbWJpbmF0b3IgdXNlZCBvbiBlbCBzaG91bGQgbm93IGJlIGFwcGxpZWQgdG8gdGhlIG5leHQgZWxlbWVudCBpbnN0ZWFkIHNvIHRoYXQKCQkJCQkJLy8gaXQgaXMgbm90IGxvc3QKCQkJCQkJaWYgKCAkc2VsICkgewoJCQkJCQkJJHNlbFswXS0+ZWxlbWVudHNbXSA9IG5ldyBMZXNzX1RyZWVfRWxlbWVudCggJGVsLT5jb21iaW5hdG9yLCAnJywgJGVsLT5pbmRleCwgJGVsLT5jdXJyZW50RmlsZUluZm8gKTsKCQkJCQkJfQoJCQkJCQkkc2VsZWN0b3JzTXVsdGlwbGllZFtdID0gJHNlbDsKCQkJCQl9IGVsc2UgewoJCQkJCQkvLyBhbmQgdGhlIHBhcmVudCBzZWxlY3RvcnMKCQkJCQkJZm9yZWFjaCAoICRjb250ZXh0IGFzICRwYXJlbnRTZWwgKSB7CgkJCQkJCQkvLyBXZSBuZWVkIHRvIHB1dCB0aGUgY3VycmVudCBzZWxlY3RvcnMKCQkJCQkJCS8vIHRoZW4gam9pbiB0aGUgbGFzdCBzZWxlY3RvcidzIGVsZW1lbnRzIG9uIHRvIHRoZSBwYXJlbnRzIHNlbGVjdG9ycwoJCQkJCQkJJG5ld1NlbGVjdG9yUGF0aCA9ICR0aGlzLT5hZGRSZXBsYWNlbWVudEludG9QYXRoKCAkc2VsLCAkcGFyZW50U2VsLCAkZWwsICRpblNlbGVjdG9yICk7CgkJCQkJCQkvLyBhZGQgdGhhdCB0byBvdXIgbmV3IHNldCBvZiBzZWxlY3RvcnMKCQkJCQkJCSRzZWxlY3RvcnNNdWx0aXBsaWVkW10gPSAkbmV3U2VsZWN0b3JQYXRoOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJCS8vIG91ciBuZXcgc2VsZWN0b3JzIGhhcyBiZWVuIG11bHRpcGxpZWQsIHNvIHJlc2V0IHRoZSBzdGF0ZQoJCQkJJG5ld1NlbGVjdG9ycyA9ICRzZWxlY3RvcnNNdWx0aXBsaWVkOwoJCQkJJGN1cnJlbnRFbGVtZW50cyA9IFtdOwoJCQl9CgkJfQoKCQkvLyBpZiB3ZSBoYXZlIGFueSBlbGVtZW50cyBsZWZ0IG92ZXIgKGUuZy4gLmEmIC5iID09IC5iKQoJCS8vIGFkZCB0aGVtIG9uIHRvIGFsbCB0aGUgY3VycmVudCBzZWxlY3RvcnMKCQkkdGhpcy0+bWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoICRjdXJyZW50RWxlbWVudHMsICRuZXdTZWxlY3RvcnMgKTsKCgkJZm9yZWFjaCAoICRuZXdTZWxlY3RvcnMgYXMgJiRzZWwgKSB7CgkJCSRsZW5ndGggPSBjb3VudCggJHNlbCApOwoJCQlpZiAoICRsZW5ndGggKSB7CgkJCQkkbGFzdFNlbGVjdG9yID0gJHNlbFskbGVuZ3RoIC0gMV07CgkJCQkkc2VsWyRsZW5ndGggLSAxXSA9ICRsYXN0U2VsZWN0b3ItPmNyZWF0ZURlcml2ZWQoICRsYXN0U2VsZWN0b3ItPmVsZW1lbnRzLCAkaW5TZWxlY3Rvci0+ZXh0ZW5kTGlzdCApOwoJCQkJJHBhdGhzW10gPSAkc2VsOwoJCQl9CgkJfQoKCQlyZXR1cm4gJGhhZFBhcmVudFNlbGVjdG9yOwoJfQoKCS8qKgoJICogQHBhcmFtIGFycmF5ICRlbGVtZW50c1RvUGFrCgkgKiBAcGFyYW0gTGVzc19UcmVlX0VsZW1lbnQgJG9yaWdpbmFsRWxlbWVudAoJICogQHJldHVybiBMZXNzX1RyZWVfU2VsZWN0b3IKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVTZWxlY3RvciggYXJyYXkgJGVsZW1lbnRzVG9QYWssICRvcmlnaW5hbEVsZW1lbnQgKSB7CgkJaWYgKCAhJGVsZW1lbnRzVG9QYWsgKSB7CgkJCS8vIFRoaXMgaXMgYW4gaW52YWxpZCBjYWxsLiBLZXB0IHRvIG1hdGNoIGxlc3MuanMuIEFwcGVhcnMgdW5yZWFjaGFibGUuCgkJCS8vIEBwaGFuLXN1cHByZXNzLW5leHQtbGluZSBQaGFuVHlwZU1pc21hdGNoQXJndW1lbnRQcm9iYWJseVJlYWwKCQkJJGNvbnRhaW5lZEVsZW1lbnQgPSBuZXcgTGVzc19UcmVlX1BhcmVuKCBudWxsICk7CgkJfSBlbHNlIHsKCQkJJGluc2lkZVBhcmVudCA9IFtdOwoJCQlmb3JlYWNoICggJGVsZW1lbnRzVG9QYWsgYXMgJGVsVG9QYWsgKSB7CgkJCQkkaW5zaWRlUGFyZW50W10gPSBuZXcgTGVzc19UcmVlX0VsZW1lbnQoIG51bGwsICRlbFRvUGFrLCAkb3JpZ2luYWxFbGVtZW50LT5pbmRleCwgJG9yaWdpbmFsRWxlbWVudC0+Y3VycmVudEZpbGVJbmZvICk7CgkJCX0KCQkJJGNvbnRhaW5lZEVsZW1lbnQgPSBuZXcgTGVzc19UcmVlX1BhcmVuKCBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCAkaW5zaWRlUGFyZW50ICkgKTsKCQl9CgoJCSRlbGVtZW50ID0gbmV3IExlc3NfVHJlZV9FbGVtZW50KCBudWxsLCAkY29udGFpbmVkRWxlbWVudCwgJG9yaWdpbmFsRWxlbWVudC0+aW5kZXgsICRvcmlnaW5hbEVsZW1lbnQtPmN1cnJlbnRGaWxlSW5mbyApOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCBbICRlbGVtZW50IF0gKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfRWxlbWVudCAkZWxlbWVudAoJICogQHJldHVybiBMZXNzX1RyZWVfU2VsZWN0b3J8bnVsbAoJICovCglwcml2YXRlIGZ1bmN0aW9uIGZpbmROZXN0ZWRTZWxlY3RvciggJGVsZW1lbnQgKSB7CgkJJG1heWJlUGFyZW4gPSAkZWxlbWVudC0+dmFsdWU7CgkJaWYgKCAhKCAkbWF5YmVQYXJlbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9QYXJlbiApICkgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgkJJG1heWJlU2VsZWN0b3IgPSAkbWF5YmVQYXJlbi0+dmFsdWU7CgkJaWYgKCAhKCAkbWF5YmVTZWxlY3RvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9TZWxlY3RvciApICkgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgkJcmV0dXJuICRtYXliZVNlbGVjdG9yOwoJfQoKCS8qKgoJICogam9pbnMgc2VsZWN0b3IgcGF0aCBmcm9tICRiZWdpbm5pbmdQYXRoIHdpdGggc2VsZWN0b3IgcGF0aCBpbiAkYWRkUGF0aC4KCSAqCgkgKiAkcmVwbGFjZWRFbGVtZW50IGNvbnRhaW5zIHRoZSBlbGVtZW50IHRoYXQgaXMgYmVpbmcgcmVwbGFjZWQgYnkgJGFkZFBhdGgKCSAqCgkgKiBAcGFyYW0gTGVzc19UcmVlX1NlbGVjdG9yW10gJGJlZ2lubmluZ1BhdGgKCSAqIEBwYXJhbSBMZXNzX1RyZWVfU2VsZWN0b3JbXSAkYWRkUGF0aAoJICogQHBhcmFtIExlc3NfVHJlZV9FbGVtZW50ICRyZXBsYWNlZEVsZW1lbnQKCSAqIEBwYXJhbSBMZXNzX1RyZWVfU2VsZWN0b3IgJG9yaWdpbmFsU2VsZWN0b3IKCSAqIEByZXR1cm4gTGVzc19UcmVlX1NlbGVjdG9yW10gQ29uY2F0ZW5hdGVkIHBhdGgKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNSdWxlc2V0LWFkZFJlcGxhY2VtZW50SW50b1BhdGgKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBhZGRSZXBsYWNlbWVudEludG9QYXRoKCBhcnJheSAkYmVnaW5uaW5nUGF0aCwgYXJyYXkgJGFkZFBhdGgsICRyZXBsYWNlZEVsZW1lbnQsICRvcmlnaW5hbFNlbGVjdG9yICkgewoJCS8vIG91ciBuZXcgc2VsZWN0b3IgcGF0aAoJCSRuZXdTZWxlY3RvclBhdGggPSBbXTsKCgkJLy8gY29uc3RydWN0IHRoZSBqb2luZWQgc2VsZWN0b3IgLSBpZiBgJmAgaXMgdGhlIGZpcnN0IHRoaW5nIHRoaXMgd2lsbCBiZSBlbXB0eSwKCQkvLyBpZiBub3QgbmV3Sm9pbmVkU2VsZWN0b3Igd2lsbCBiZSB0aGUgbGFzdCBzZXQgb2YgZWxlbWVudHMgaW4gdGhlIHNlbGVjdG9yCgkJaWYgKCAkYmVnaW5uaW5nUGF0aCApIHsKCQkJLy8gTk9URTogbGVzcy5qcyB1c2VzIEFycmF5IHNsaWNlKCkgdG8gY29weS4gSW4gUEhQLCBhcnJheXMgYXJlIG5hdHVyYWxseSBjb3BpZWQgYnkgdmFsdWUuCgkJCSRuZXdTZWxlY3RvclBhdGggPSAkYmVnaW5uaW5nUGF0aDsKCQkJJGxhc3RTZWxlY3RvciA9IGFycmF5X3BvcCggJG5ld1NlbGVjdG9yUGF0aCApOwoJCQkkbmV3Sm9pbmVkU2VsZWN0b3IgPSAkb3JpZ2luYWxTZWxlY3Rvci0+Y3JlYXRlRGVyaXZlZCggJGxhc3RTZWxlY3Rvci0+ZWxlbWVudHMgKTsKCQl9IGVsc2UgewoJCQkkbmV3Sm9pbmVkU2VsZWN0b3IgPSAkb3JpZ2luYWxTZWxlY3Rvci0+Y3JlYXRlRGVyaXZlZCggW10gKTsKCQl9CgoJCWlmICggJGFkZFBhdGggKSB7CgkJCS8vIGlmIHRoZSAmIGRvZXMgbm90IGhhdmUgYSBjb21iaW5hdG9yIHRoYXQgaXMgIiIgb3IgIiAiIHRoZW4KCQkJLy8gYW5kIHRoZXJlIGlzIGEgY29tYmluYXRvciBvbiB0aGUgcGFyZW50LCB0aGVuIGdyYWIgdGhhdC4KCQkJLy8gdGhpcyBhbHNvIGFsbG93cyBgKyBhIHsgJiAuYiB7IC5hICYgeyAuLi5gCgkJCSRjb21iaW5hdG9yID0gJHJlcGxhY2VkRWxlbWVudC0+Y29tYmluYXRvcjsKCQkJJHBhcmVudEVsID0gJGFkZFBhdGhbMF0tPmVsZW1lbnRzWzBdOwoJCQlpZiAoICRyZXBsYWNlZEVsZW1lbnQtPmNvbWJpbmF0b3JJc0VtcHR5T3JXaGl0ZXNwYWNlICYmICEkcGFyZW50RWwtPmNvbWJpbmF0b3JJc0VtcHR5T3JXaGl0ZXNwYWNlICkgewoJCQkJJGNvbWJpbmF0b3IgPSAkcGFyZW50RWwtPmNvbWJpbmF0b3I7CgkJCX0KCQkJLy8gam9pbiB0aGUgZWxlbWVudHMgc28gZmFyIHdpdGggdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBhcmVudAoJCQkkbmV3Sm9pbmVkU2VsZWN0b3ItPmVsZW1lbnRzW10gPSBuZXcgTGVzc19UcmVlX0VsZW1lbnQoICRjb21iaW5hdG9yLCAkcGFyZW50RWwtPnZhbHVlLCAkcmVwbGFjZWRFbGVtZW50LT5pbmRleCwgJHJlcGxhY2VkRWxlbWVudC0+Y3VycmVudEZpbGVJbmZvICk7CgkJCSRuZXdKb2luZWRTZWxlY3Rvci0+ZWxlbWVudHMgPSBhcnJheV9tZXJnZSgKCQkJCSRuZXdKb2luZWRTZWxlY3Rvci0+ZWxlbWVudHMsCgkJCQlhcnJheV9zbGljZSggJGFkZFBhdGhbMF0tPmVsZW1lbnRzLCAxICkKCQkJKTsKCQl9CgoJCS8vIG5vdyBhZGQgdGhlIGpvaW5lZCBzZWxlY3RvciAtIGJ1dCBvbmx5IGlmIGl0IGlzIG5vdCBlbXB0eQoJCWlmICggJG5ld0pvaW5lZFNlbGVjdG9yLT5lbGVtZW50cyApIHsKCQkJJG5ld1NlbGVjdG9yUGF0aFtdID0gJG5ld0pvaW5lZFNlbGVjdG9yOwoJCX0KCgkJLy8gcHV0IHRvZ2V0aGVyIHRoZSBwYXJlbnQgc2VsZWN0b3JzIGFmdGVyIHRoZSBqb2luIChlLmcuIHRoZSByZXN0IG9mIHRoZSBwYXJlbnQpCgkJaWYgKCBjb3VudCggJGFkZFBhdGggKSA+IDEgKSB7CgkJCSRuZXdTZWxlY3RvclBhdGggPSBhcnJheV9tZXJnZSggJG5ld1NlbGVjdG9yUGF0aCwgYXJyYXlfc2xpY2UoICRhZGRQYXRoLCAxICkgKTsKCQl9CgkJcmV0dXJuICRuZXdTZWxlY3RvclBhdGg7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1lcmdlRWxlbWVudHNPblRvU2VsZWN0b3JzKCAkZWxlbWVudHMsICYkc2VsZWN0b3JzICkgewoJCWlmICggISRlbGVtZW50cyApIHsKCQkJcmV0dXJuOwoJCX0KCQlpZiAoICEkc2VsZWN0b3JzICkgewoJCQkkc2VsZWN0b3JzW10gPSBbIG5ldyBMZXNzX1RyZWVfU2VsZWN0b3IoICRlbGVtZW50cyApIF07CgkJCXJldHVybjsKCQl9CgoJCWZvcmVhY2ggKCAkc2VsZWN0b3JzIGFzICYkc2VsICkgewoJCQkvLyBpZiB0aGUgcHJldmlvdXMgdGhpbmcgaW4gc2VsIGlzIGEgcGFyZW50IHRoaXMgbmVlZHMgdG8gam9pbiBvbiB0byBpdAoJCQlpZiAoICRzZWwgKSB7CgkJCQkkbGFzdCA9IGNvdW50KCAkc2VsICkgLSAxOwoJCQkJJHNlbFskbGFzdF0gPSAkc2VsWyRsYXN0XS0+Y3JlYXRlRGVyaXZlZCggYXJyYXlfbWVyZ2UoICRzZWxbJGxhc3RdLT5lbGVtZW50cywgJGVsZW1lbnRzICkgKTsKCQkJfSBlbHNlIHsKCQkJCSRzZWxbXSA9IG5ldyBMZXNzX1RyZWVfU2VsZWN0b3IoICRlbGVtZW50cyApOwoJCQl9CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfU2VsZWN0b3IgZXh0ZW5kcyBMZXNzX1RyZWUgewoKCS8qKiBAdmFyIExlc3NfVHJlZV9FbGVtZW50W10gKi8KCXB1YmxpYyAkZWxlbWVudHM7CgkvKiogQHZhciBMZXNzX1RyZWVfQ29uZGl0aW9ufG51bGwgKi8KCXB1YmxpYyAkY29uZGl0aW9uOwoJLyoqIEB2YXIgTGVzc19UcmVlX0V4dGVuZFtdICovCglwdWJsaWMgJGV4dGVuZExpc3QgPSBbXTsKCS8qKiBAdmFyIGludHxudWxsICovCglwdWJsaWMgJGluZGV4OwoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljICRldmFsZENvbmRpdGlvbiA9IGZhbHNlOwoJLyoqIEB2YXIgYXJyYXl8bnVsbCAqLwoJcHVibGljICRjdXJyZW50RmlsZUluZm8gPSBbXTsKCS8qKiBAdmFyIG51bGx8Ym9vbCAqLwoJcHVibGljICRpc1JlZmVyZW5jZWQ7CgkvKiogQHZhciBudWxsfGJvb2wgKi8KCXB1YmxpYyAkbWVkaWFFbXB0eTsKCgkvKiogQHZhciBpbnQgKi8KCXB1YmxpYyAkZWxlbWVudHNfbGVuID0gMDsKCgkvKiogQHZhciBzdHJpbmdbXSAqLwoJcHVibGljICRfb2VsZW1lbnRzOwoJLyoqIEB2YXIgYXJyYXk8c3RyaW5nLHRydWU+ICovCglwdWJsaWMgJF9vZWxlbWVudHNfYXNzb2M7CgkvKiogQHZhciBpbnQgKi8KCXB1YmxpYyAkX29lbGVtZW50c19sZW47CgkvKiogQHZhciBib29sICovCglwdWJsaWMgJGNhY2hlYWJsZSA9IHRydWU7CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlX0VsZW1lbnRbXSAkZWxlbWVudHMKCSAqIEBwYXJhbSBMZXNzX1RyZWVfRWxlbWVudFtdICRleHRlbmRMaXN0CgkgKiBAcGFyYW0gTGVzc19UcmVlX0NvbmRpdGlvbnxudWxsICRjb25kaXRpb24KCSAqIEBwYXJhbSBpbnR8bnVsbCAkaW5kZXgKCSAqIEBwYXJhbSBhcnJheXxudWxsICRjdXJyZW50RmlsZUluZm8KCSAqIEBwYXJhbSBib29sfG51bGwgJGlzUmVmZXJlbmNlZAoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRlbGVtZW50cywgJGV4dGVuZExpc3QgPSBbXSwgJGNvbmRpdGlvbiA9IG51bGwsICRpbmRleCA9IG51bGwsICRjdXJyZW50RmlsZUluZm8gPSBudWxsLCAkaXNSZWZlcmVuY2VkID0gbnVsbCApIHsKCQkkdGhpcy0+ZWxlbWVudHMgPSAkZWxlbWVudHM7CgkJJHRoaXMtPmVsZW1lbnRzX2xlbiA9IGNvdW50KCAkZWxlbWVudHMgKTsKCQkkdGhpcy0+ZXh0ZW5kTGlzdCA9ICRleHRlbmRMaXN0OwoJCSR0aGlzLT5jb25kaXRpb24gPSAkY29uZGl0aW9uOwoJCWlmICggJGN1cnJlbnRGaWxlSW5mbyApIHsKCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87CgkJfQoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSAkaXNSZWZlcmVuY2VkOwoJCWlmICggISRjb25kaXRpb24gKSB7CgkJCSR0aGlzLT5ldmFsZENvbmRpdGlvbiA9IHRydWU7CgkJfQoKCQkkdGhpcy0+Q2FjaGVFbGVtZW50cygpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICkgewoJCSR0aGlzLT5lbGVtZW50cyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCAkdGhpcy0+ZWxlbWVudHMgKTsKCQkkdGhpcy0+ZXh0ZW5kTGlzdCA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCAkdGhpcy0+ZXh0ZW5kTGlzdCApOwoJCWlmICggJHRoaXMtPmNvbmRpdGlvbiApIHsKCQkJJHRoaXMtPmNvbmRpdGlvbiA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPmNvbmRpdGlvbiApOwoJCX0KCgkJaWYgKCAkdmlzaXRvciBpbnN0YW5jZW9mIExlc3NfVmlzaXRvcl9leHRlbmRGaW5kZXIgKSB7CgkJCSR0aGlzLT5DYWNoZUVsZW1lbnRzKCk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjcmVhdGVEZXJpdmVkKCAkZWxlbWVudHMsICRleHRlbmRMaXN0ID0gbnVsbCwgJGV2YWxkQ29uZGl0aW9uID0gbnVsbCApIHsKCQkkbmV3U2VsZWN0b3IgPSBuZXcgc2VsZigKCQkJJGVsZW1lbnRzLAoJCQkoICRleHRlbmRMaXN0ID86ICR0aGlzLT5leHRlbmRMaXN0ICksCgkJCW51bGwsCgkJCSR0aGlzLT5pbmRleCwKCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywKCQkJJHRoaXMtPmlzUmVmZXJlbmNlZAoJCSk7CgkJJG5ld1NlbGVjdG9yLT5ldmFsZENvbmRpdGlvbiA9ICRldmFsZENvbmRpdGlvbiA/OiAkdGhpcy0+ZXZhbGRDb25kaXRpb247CgkJJG5ld1NlbGVjdG9yLT5tZWRpYUVtcHR5ID0gJHRoaXMtPm1lZGlhRW1wdHk7CgkJcmV0dXJuICRuZXdTZWxlY3RvcjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbWF0Y2goICRvdGhlciApIHsKCQlpZiAoICEkb3RoZXItPl9vZWxlbWVudHMgfHwgKCAkdGhpcy0+ZWxlbWVudHNfbGVuIDwgJG90aGVyLT5fb2VsZW1lbnRzX2xlbiApICkgewoJCQlyZXR1cm4gMDsKCQl9CgoJCWZvciAoICRpID0gMDsgJGkgPCAkb3RoZXItPl9vZWxlbWVudHNfbGVuOyAkaSsrICkgewoJCQlpZiAoICR0aGlzLT5lbGVtZW50c1skaV0tPnZhbHVlICE9PSAkb3RoZXItPl9vZWxlbWVudHNbJGldICkgewoJCQkJcmV0dXJuIDA7CgkJCX0KCQl9CgoJCXJldHVybiAkb3RoZXItPl9vZWxlbWVudHNfbGVuOyAvLyByZXR1cm4gbnVtYmVyIG9mIG1hdGNoZWQgZWxlbWVudHMKCX0KCgkvKioKCSAqIEBzZWUgbGVzcy0yLjUuMy5qcyNTZWxlY3Rvci5wcm90b3R5cGUuQ2FjaGVFbGVtZW50cwoJICovCglwdWJsaWMgZnVuY3Rpb24gQ2FjaGVFbGVtZW50cygpIHsKCQkkdGhpcy0+X29lbGVtZW50cyA9IFtdOwoJCSR0aGlzLT5fb2VsZW1lbnRzX2Fzc29jID0gW107CgoJCSRjc3MgPSAnJzsKCgkJZm9yZWFjaCAoICR0aGlzLT5lbGVtZW50cyBhcyAkdiApIHsKCgkJCSRjc3MgLj0gJHYtPmNvbWJpbmF0b3I7CgkJCWlmICggISggJHYtPnZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlICkgKSB7CgkJCQkkY3NzIC49ICR2LT52YWx1ZTsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkvLyBAcGhhbi1zdXBwcmVzcy1uZXh0LWxpbmUgUGhhblVuZGVjbGFyZWRQcm9wZXJ0eQoJCQlpZiAoIGlzc2V0KCAkdi0+dmFsdWUtPnZhbHVlICkgJiYgaXNfc2NhbGFyKCAkdi0+dmFsdWUtPnZhbHVlICkgKSB7CgkJCQkvLyBAcGhhbi1zdXBwcmVzcy1uZXh0LWxpbmUgUGhhblVuZGVjbGFyZWRQcm9wZXJ0eQoJCQkJJGNzcyAuPSAkdi0+dmFsdWUtPnZhbHVlOwoJCQkJY29udGludWU7CgkJCX0KCgkJCWlmICggKCAkdi0+dmFsdWUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfU2VsZWN0b3IgfHwgJHYtPnZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlX1ZhcmlhYmxlICkKCQkJCS8vIEBwaGFuLXN1cHByZXNzLW5leHQtbGluZSBQaGFuVW5kZWNsYXJlZFByb3BlcnR5CgkJCQl8fCAhaXNfc3RyaW5nKCAkdi0+dmFsdWUtPnZhbHVlICkgKSB7CgkJCQkkdGhpcy0+Y2FjaGVhYmxlID0gZmFsc2U7CgkJCQlyZXR1cm47CgkJCX0KCQl9CgoJCSR0aGlzLT5fb2VsZW1lbnRzX2xlbiA9IHByZWdfbWF0Y2hfYWxsKCAnL1ssJiNcKlwuXHctXSg/Oltcdy1dfCg/OlxcXFwuKSkqLycsICRjc3MsICRtYXRjaGVzICk7CgkJaWYgKCAkdGhpcy0+X29lbGVtZW50c19sZW4gKSB7CgkJCSR0aGlzLT5fb2VsZW1lbnRzID0gJG1hdGNoZXNbMF07CgoJCQlpZiAoICR0aGlzLT5fb2VsZW1lbnRzWzBdID09PSAnJicgKSB7CgkJCQlhcnJheV9zaGlmdCggJHRoaXMtPl9vZWxlbWVudHMgKTsKCQkJCSR0aGlzLT5fb2VsZW1lbnRzX2xlbi0tOwoJCQl9CgoJCQkkdGhpcy0+X29lbGVtZW50c19hc3NvYyA9IGFycmF5X2ZpbGxfa2V5cyggJHRoaXMtPl9vZWxlbWVudHMsIHRydWUgKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzSnVzdFBhcmVudFNlbGVjdG9yKCkgewoJCXJldHVybiAhJHRoaXMtPm1lZGlhRW1wdHkgJiYKCQkJY291bnQoICR0aGlzLT5lbGVtZW50cyApID09PSAxICYmCgkJCSR0aGlzLT5lbGVtZW50c1swXS0+dmFsdWUgPT09ICcmJyAmJgoJCQkoICR0aGlzLT5lbGVtZW50c1swXS0+Y29tYmluYXRvciA9PT0gJyAnIHx8ICR0aGlzLT5lbGVtZW50c1swXS0+Y29tYmluYXRvciA9PT0gJycgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkkZWxlbWVudHMgPSBbXTsKCQlmb3JlYWNoICggJHRoaXMtPmVsZW1lbnRzIGFzICRlbCApIHsKCQkJJGVsZW1lbnRzW10gPSAkZWwtPmNvbXBpbGUoICRlbnYgKTsKCQl9CgoJCSRleHRlbmRMaXN0ID0gW107CgkJZm9yZWFjaCAoICR0aGlzLT5leHRlbmRMaXN0IGFzICRlbCApIHsKCQkJJGV4dGVuZExpc3RbXSA9ICRlbC0+Y29tcGlsZSggJGVudiApOwoJCX0KCgkJJGV2YWxkQ29uZGl0aW9uID0gZmFsc2U7CgkJaWYgKCAkdGhpcy0+Y29uZGl0aW9uICkgewoJCQkkZXZhbGRDb25kaXRpb24gPSAkdGhpcy0+Y29uZGl0aW9uLT5jb21waWxlKCAkZW52ICk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNyZWF0ZURlcml2ZWQoICRlbGVtZW50cywgJGV4dGVuZExpc3QsICRldmFsZENvbmRpdGlvbiApOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0LCAkZmlyc3RTZWxlY3RvciA9IHRydWUgKSB7CgkJaWYgKCAhJGZpcnN0U2VsZWN0b3IgJiYgJHRoaXMtPmVsZW1lbnRzWzBdLT5jb21iaW5hdG9yID09PSAiIiApIHsKCQkJJG91dHB1dC0+YWRkKCAnICcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCX0KCgkJZm9yZWFjaCAoICR0aGlzLT5lbGVtZW50cyBhcyAkZWxlbWVudCApIHsKCQkJJGVsZW1lbnQtPmdlbkNTUyggJG91dHB1dCApOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKSB7CgkJJHRoaXMtPmlzUmVmZXJlbmNlZCA9IHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldElzUmVmZXJlbmNlZCgpIHsKCQlyZXR1cm4gIWlzc2V0KCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSApIHx8ICEkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSB8fCAkdGhpcy0+aXNSZWZlcmVuY2VkOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRJc091dHB1dCgpIHsKCQlyZXR1cm4gJHRoaXMtPmV2YWxkQ29uZGl0aW9uOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/UnicodeDescriptor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVW5pY29kZURlc2NyaXB0b3IgZXh0ZW5kcyBMZXNzX1RyZWUgaW1wbGVtZW50cyBMZXNzX1RyZWVfSGFzVmFsdWVQcm9wZXJ0eSB7CgoJLyoqIEB2YXIgc3RyaW5nICovCglwdWJsaWMgJHZhbHVlOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJHZhbHVlICkgewoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCX0KCgkvKioKCSAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQkkb3V0cHV0LT5hZGQoICR0aGlzLT52YWx1ZSApOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Unit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0yLjUuMy5qcyNVbml0LnByb3RvdHlwZQogKi8KY2xhc3MgTGVzc19UcmVlX1VuaXQgZXh0ZW5kcyBMZXNzX1RyZWUgewoKCS8qKiBAdmFyIHN0cmluZ1tdICovCglwdWJsaWMgJG51bWVyYXRvciA9IFtdOwoJLyoqIEB2YXIgc3RyaW5nW10gKi8KCXB1YmxpYyAkZGVub21pbmF0b3IgPSBbXTsKCS8qKiBAdmFyIHN0cmluZ3xudWxsICovCglwdWJsaWMgJGJhY2t1cFVuaXQ7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkbnVtZXJhdG9yID0gW10sICRkZW5vbWluYXRvciA9IFtdLCAkYmFja3VwVW5pdCA9IG51bGwgKSB7CgkJJHRoaXMtPm51bWVyYXRvciA9ICRudW1lcmF0b3I7CgkJJHRoaXMtPmRlbm9taW5hdG9yID0gJGRlbm9taW5hdG9yOwoJCXNvcnQoICR0aGlzLT5udW1lcmF0b3IgKTsKCQlzb3J0KCAkdGhpcy0+ZGVub21pbmF0b3IgKTsKCQkkdGhpcy0+YmFja3VwVW5pdCA9ICRiYWNrdXBVbml0ID8/ICRudW1lcmF0b3JbMF0gPz8gbnVsbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY2xvbmUoKSB7CgkJLy8gd2UgYXJlIHJlY3JlYXRpbmcgYSBuZXcgb2JqZWN0IHRvIHRyaWdnZXIgbG9naWMgZnJvbSBjb25zdHJ1Y3RvcgoJCXJldHVybiBuZXcgTGVzc19UcmVlX1VuaXQoICR0aGlzLT5udW1lcmF0b3IsICR0aGlzLT5kZW5vbWluYXRvciwgJHRoaXMtPmJhY2t1cFVuaXQgKTsKCX0KCgkvKioKCSAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApIHsKCQkkc3RyaWN0VW5pdHMgPSBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdFVuaXRzJ107CgoJCWlmICggY291bnQoICR0aGlzLT5udW1lcmF0b3IgKSA9PT0gMSApIHsKCQkJJG91dHB1dC0+YWRkKCAkdGhpcy0+bnVtZXJhdG9yWzBdICk7IC8vIHRoZSBpZGVhbCBzaXR1YXRpb24KCQl9IGVsc2VpZiAoICEkc3RyaWN0VW5pdHMgJiYgJHRoaXMtPmJhY2t1cFVuaXQgKSB7CgkJCSRvdXRwdXQtPmFkZCggJHRoaXMtPmJhY2t1cFVuaXQgKTsKCQl9IGVsc2VpZiAoICEkc3RyaWN0VW5pdHMgJiYgJHRoaXMtPmRlbm9taW5hdG9yICkgewoJCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5kZW5vbWluYXRvclswXSApOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoKSB7CgkJJHJldHVyblN0ciA9IGltcGxvZGUoICcqJywgJHRoaXMtPm51bWVyYXRvciApOwoJCWZvcmVhY2ggKCAkdGhpcy0+ZGVub21pbmF0b3IgYXMgJGQgKSB7CgkJCSRyZXR1cm5TdHIgLj0gJy8nIC4gJGQ7CgkJfQoJCXJldHVybiAkcmV0dXJuU3RyOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVybiAkdGhpcy0+dG9TdHJpbmcoKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBzZWxmICRvdGhlcgoJICovCglwdWJsaWMgZnVuY3Rpb24gY29tcGFyZSggJG90aGVyICkgewoJCXJldHVybiAkdGhpcy0+aXMoICRvdGhlci0+dG9TdHJpbmcoKSApID8gMCA6IC0xOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpcyggJHVuaXRTdHJpbmcgKSB7CgkJcmV0dXJuIHN0cnRvdXBwZXIoICR0aGlzLT50b1N0cmluZygpICkgPT09IHN0cnRvdXBwZXIoICR1bml0U3RyaW5nICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzTGVuZ3RoKCkgewoJCSRjc3MgPSAkdGhpcy0+dG9DU1MoKTsKCQlyZXR1cm4gKGJvb2wpcHJlZ19tYXRjaCggJy9weHxlbXwlfGlufGNtfG1tfHBjfHB0fGV4LycsICRjc3MgKTsKCX0KCgkvLyBUT0RPOiBSZW1vdmUgdW51c2VkIG1ldGhvZAoJcHVibGljIGZ1bmN0aW9uIGlzQW5nbGUoKSB7CgkJcmV0dXJuIGlzc2V0KCBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zOjokYW5nbGVbJHRoaXMtPnRvQ1NTKCldICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzRW1wdHkoKSB7CgkJcmV0dXJuICEkdGhpcy0+bnVtZXJhdG9yICYmICEkdGhpcy0+ZGVub21pbmF0b3I7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzU2luZ3VsYXIoKSB7CgkJcmV0dXJuIGNvdW50KCAkdGhpcy0+bnVtZXJhdG9yICkgPD0gMSAmJiAhJHRoaXMtPmRlbm9taW5hdG9yOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB1c2VkVW5pdHMoKSB7CgkJJHJlc3VsdCA9IFtdOwoKCQlmb3JlYWNoICggTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JGdyb3VwcyBhcyAkZ3JvdXBOYW1lICkgewoJCQkkZ3JvdXAgPSBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zOjokeyRncm91cE5hbWV9OwoKCQkJZm9yZWFjaCAoICR0aGlzLT5udW1lcmF0b3IgYXMgJGF0b21pY1VuaXQgKSB7CgkJCQlpZiAoIGlzc2V0KCAkZ3JvdXBbJGF0b21pY1VuaXRdICkgJiYgIWlzc2V0KCAkcmVzdWx0WyRncm91cE5hbWVdICkgKSB7CgkJCQkJJHJlc3VsdFskZ3JvdXBOYW1lXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoICggJHRoaXMtPmRlbm9taW5hdG9yIGFzICRhdG9taWNVbml0ICkgewoJCQkJaWYgKCBpc3NldCggJGdyb3VwWyRhdG9taWNVbml0XSApICYmICFpc3NldCggJHJlc3VsdFskZ3JvdXBOYW1lXSApICkgewoJCQkJCSRyZXN1bHRbJGdyb3VwTmFtZV0gPSAkYXRvbWljVW5pdDsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjVW5pdC5wcm90b3R5cGUuY2FuY2VsCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjYW5jZWwoKSB7CgkJJGNvdW50ZXIgPSBbXTsKCgkJZm9yZWFjaCAoICR0aGlzLT5udW1lcmF0b3IgYXMgJGF0b21pY1VuaXQgKSB7CgkJCSRjb3VudGVyWyRhdG9taWNVbml0XSA9ICggJGNvdW50ZXJbJGF0b21pY1VuaXRdID8/IDAgKSArIDE7CgkJfQoKCQlmb3JlYWNoICggJHRoaXMtPmRlbm9taW5hdG9yIGFzICRhdG9taWNVbml0ICkgewoJCQkkY291bnRlclskYXRvbWljVW5pdF0gPSAoICRjb3VudGVyWyRhdG9taWNVbml0XSA/PyAwICkgLSAxOwoJCX0KCgkJJHRoaXMtPm51bWVyYXRvciA9IFtdOwoJCSR0aGlzLT5kZW5vbWluYXRvciA9IFtdOwoKCQlmb3JlYWNoICggJGNvdW50ZXIgYXMgJGF0b21pY1VuaXQgPT4gJGNvdW50ICkgewoJCQlpZiAoICRjb3VudCA+IDAgKSB7CgkJCQlmb3IgKCAkaSA9IDA7ICRpIDwgJGNvdW50OyAkaSsrICkgewoJCQkJCSR0aGlzLT5udW1lcmF0b3JbXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9IGVsc2VpZiAoICRjb3VudCA8IDAgKSB7CgkJCQlmb3IgKCAkaSA9IDA7ICRpIDwgLSRjb3VudDsgJGkrKyApIHsKCQkJCQkkdGhpcy0+ZGVub21pbmF0b3JbXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9CgkJfQoKCQlzb3J0KCAkdGhpcy0+bnVtZXJhdG9yICk7CgkJc29ydCggJHRoaXMtPmRlbm9taW5hdG9yICk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/UnitConversions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zIHsKCgkvKiogQHZhciBzdHJpbmdbXSAqLwoJcHVibGljIHN0YXRpYyAkZ3JvdXBzID0gWyAnbGVuZ3RoJywgJ2R1cmF0aW9uJywgJ2FuZ2xlJyBdOwoKCS8qKiBAdmFyIGFycmF5PHN0cmluZyxmbG9hdD4gKi8KCXB1YmxpYyBzdGF0aWMgJGxlbmd0aCA9IFsKCQknbScgPT4gMSwKCQknY20nID0+IDAuMDEsCgkJJ21tJyA9PiAwLjAwMSwKCQknaW4nID0+IDAuMDI1NCwKCQkncHgnID0+IDAuMDAwMjY0NTgzMzMzMzMsIC8vIDAuMDI1NCAvIDk2LAoJCSdwdCcgPT4gMC4wMDAzNTI3Nzc3Nzc3Nzc3Nzc3NiwgLy8gMC4wMjU0IC8gNzIsCgkJJ3BjJyA9PiAwLjAwNDIzMzMzMzMzMzMzMzMzMywgLy8gMC4wMjU0IC8gNzIgKiAxMgoJXTsKCgkvKiogQHZhciBhcnJheTxzdHJpbmcsZmxvYXQ+ICovCglwdWJsaWMgc3RhdGljICRkdXJhdGlvbiA9IFsKCQkncycgPT4gMSwKCQknbXMnID0+IDAuMDAxCgldOwoKCS8qKiBAdmFyIGFycmF5PHN0cmluZyxmbG9hdD4gKi8KCXB1YmxpYyBzdGF0aWMgJGFuZ2xlID0gWwoJCSdyYWQnID0+IDAuMTU5MTU0OTQzMDkxOSwgLy8gMS8oMipNX1BJKSwKCQknZGVnJyA9PiAwLjAwMjc3Nzc3OCwgLy8gMS8zNjAsCgkJJ2dyYWQnID0+IDAuMDAyNSwgLy8gMS80MDAsCgkJJ3R1cm4nID0+IDEKCV07Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Url.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVXJsIGV4dGVuZHMgTGVzc19UcmVlIGltcGxlbWVudHMgTGVzc19UcmVlX0hhc1ZhbHVlUHJvcGVydHkgewoKCS8qKiBAdmFyIExlc3NfVHJlZV9WYXJpYWJsZXxMZXNzX1RyZWVfUXVvdGVkfExlc3NfVHJlZV9Bbm9ueW1vdXMgKi8KCXB1YmxpYyAkdmFsdWU7CgkvKiogQHZhciBhcnJheXxudWxsICovCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCS8qKiBAdmFyIGJvb2x8bnVsbCAqLwoJcHVibGljICRpc0V2YWxkOwoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9WYXJpYWJsZXxMZXNzX1RyZWVfUXVvdGVkfExlc3NfVHJlZV9Bbm9ueW1vdXMgJHZhbHVlCgkgKiBAcGFyYW0gYXJyYXl8bnVsbCAkY3VycmVudEZpbGVJbmZvCgkgKiBAcGFyYW0gYm9vbHxudWxsICRpc0V2YWxkCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggTGVzc19UcmVlICR2YWx1ZSwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwsICRpc0V2YWxkID0gbnVsbCApIHsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87CgkJJHRoaXMtPmlzRXZhbGQgPSAkaXNFdmFsZDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApIHsKCQkkdGhpcy0+dmFsdWUgPSAkdmlzaXRvci0+dmlzaXRPYmooICR0aGlzLT52YWx1ZSApOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCSRvdXRwdXQtPmFkZCggJ3VybCgnICk7CgkJJHRoaXMtPnZhbHVlLT5nZW5DU1MoICRvdXRwdXQgKTsKCQkkb3V0cHV0LT5hZGQoICcpJyApOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfRW52aXJvbm1lbnQgJGVudgoJICovCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkkdmFsID0gJHRoaXMtPnZhbHVlLT5jb21waWxlKCAkZW52ICk7CgoJCWlmICggISR0aGlzLT5pc0V2YWxkICkgewoJCQkvLyBBZGQgdGhlIGJhc2UgcGF0aCBpZiB0aGUgVVJMIGlzIHJlbGF0aXZlCgkJCWlmICggTGVzc19QYXJzZXI6OiRvcHRpb25zWydyZWxhdGl2ZVVybHMnXQoJCQkJJiYgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbwoJCQkJJiYgaXNfc3RyaW5nKCAkdmFsLT52YWx1ZSApCgkJCQkmJiBMZXNzX0Vudmlyb25tZW50Ojppc1BhdGhSZWxhdGl2ZSggJHZhbC0+dmFsdWUgKQoJCQkpIHsKCQkJCSRyb290cGF0aCA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3VyaV9yb290J107CgkJCQlpZiAoICEkdmFsLT5xdW90ZSApIHsKCQkJCQkkcm9vdHBhdGggPSBwcmVnX3JlcGxhY2UoICcvW1woXClcJyJcc10vJywgJ1xcJDEnLCAkcm9vdHBhdGggKTsKCQkJCX0KCQkJCSR2YWwtPnZhbHVlID0gJHJvb3RwYXRoIC4gJHZhbC0+dmFsdWU7CgkJCX0KCgkJCSR2YWwtPnZhbHVlID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCggJHZhbC0+dmFsdWUgKTsKCQl9CgoJCS8vIEFkZCBjYWNoZSBidXN0ZXIgaWYgZW5hYmxlZAoJCWlmICggTGVzc19QYXJzZXI6OiRvcHRpb25zWyd1cmxBcmdzJ10gKSB7CgkJCWlmICggIXByZWdfbWF0Y2goICcvXlxzKmRhdGE6LycsICR2YWwtPnZhbHVlICkgKSB7CgkJCQkkZGVsaW1pdGVyID0gIXN0cl9jb250YWlucyggJHZhbC0+dmFsdWUsICc/JyApID8gJz8nIDogJyYnOwoJCQkJJHVybEFyZ3MgPSAkZGVsaW1pdGVyIC4gTGVzc19QYXJzZXI6OiRvcHRpb25zWyd1cmxBcmdzJ107CgkJCQkkaGFzaF9wb3MgPSBzdHJwb3MoICR2YWwtPnZhbHVlLCAnIycgKTsKCQkJCWlmICggJGhhc2hfcG9zICE9PSBmYWxzZSApIHsKCQkJCQkkdmFsLT52YWx1ZSA9IHN1YnN0cl9yZXBsYWNlKCAkdmFsLT52YWx1ZSwgJHVybEFyZ3MsICRoYXNoX3BvcywgMCApOwoJCQkJfSBlbHNlIHsKCQkJCQkkdmFsLT52YWx1ZSAuPSAkdXJsQXJnczsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIG5ldyBzZWxmKCAkdmFsLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCB0cnVlICk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Value.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVmFsdWUgZXh0ZW5kcyBMZXNzX1RyZWUgaW1wbGVtZW50cyBMZXNzX1RyZWVfSGFzVmFsdWVQcm9wZXJ0eSB7CgoJLyoqIEB2YXIgTGVzc19UcmVlW10gKi8KCXB1YmxpYyAkdmFsdWU7CgkvKiogQHZhciBpbnR8bnVsbCAqLwoJcHVibGljICRpbmRleDsKCS8qKiBAdmFyIGFycmF5ICovCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCgkvKioKCSAqIEBwYXJhbSBhcnJheTxMZXNzX1RyZWU+ICR2YWx1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICR2YWx1ZSwgJGluZGV4ID0gbnVsbCApIHsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICkgewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCAkdGhpcy0+dmFsdWUgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApIHsKCQkkcmV0ID0gW107CgkJJGkgPSAwOwoJCWZvcmVhY2ggKCAkdGhpcy0+dmFsdWUgYXMgJGkgPT4gJHYgKSB7CgkJCSRyZXRbXSA9ICR2LT5jb21waWxlKCAkZW52ICk7CgkJfQoJCWlmICggJGkgPiAwICkgewoJCQlyZXR1cm4gbmV3IHNlbGYoICRyZXQgKTsKCQl9CgkJcmV0dXJuICRyZXRbMF07Cgl9CgoJLyoqCgkgKiBAc2VlIGxlc3MtMi41LjMuanMjVmFsdWUucHJvdG90eXBlLmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICkgewoJCSRsZW4gPSBjb3VudCggJHRoaXMtPnZhbHVlICk7CgkJZm9yICggJGkgPSAwOyAkaSA8ICRsZW47ICRpKysgKSB7CgkJCSR0aGlzLT52YWx1ZVskaV0tPmdlbkNTUyggJG91dHB1dCApOwoJCQlpZiAoICRpICsgMSA8ICRsZW4gKSB7CgkJCQkkb3V0cHV0LT5hZGQoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSA/ICcsJyA6ICcsICcgKTsKCQkJfQoJCX0KCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/Variable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVmFyaWFibGUgZXh0ZW5kcyBMZXNzX1RyZWUgewoKCS8qKiBAdmFyIHN0cmluZyAqLwoJcHVibGljICRuYW1lOwoJLyoqIEB2YXIgaW50fG51bGwgKi8KCXB1YmxpYyAkaW5kZXg7CgkvKiogQHZhciBhcnJheXxudWxsICovCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCS8qKiBAdmFyIGJvb2wgKi8KCXB1YmxpYyAkZXZhbHVhdGluZyA9IGZhbHNlOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkbmFtZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRuYW1lLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApIHsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50ICRlbnYKCSAqIEByZXR1cm4gTGVzc19UcmVlfExlc3NfVHJlZV9LZXl3b3JkfExlc3NfVHJlZV9RdW90ZWQKCSAqIEBzZWUgbGVzcy0zLjEzLjEuanMjVmFyaWFibGUucHJvdG90eXBlLmV2YWwKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJLy8gT3B0aW1pemF0aW9uOiBMZXNzLmpzIGNoZWNrcyBpZiBzdHJpbmcgc3RhcnRzIHdpdGggQEAsIHdlIG9ubHkgY2hlY2sgaWYgc2Vjb25kIGNoYXIgaXMgQAoJCWlmICggJHRoaXMtPm5hbWVbMV0gPT09ICdAJyApIHsKCQkJJHYgPSBuZXcgc2VsZiggc3Vic3RyKCAkdGhpcy0+bmFtZSwgMSApLCAkdGhpcy0+aW5kZXggKyAxLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvICk7CgkJCS8vIFdoaWxlIHNvbWUgTGVzc19UcmVlIG5vZGVzIGhhdmUgbm8gJ3ZhbHVlJywgd2Uga25vdyB0aGVzZSBjYW4ndCBvY2N1ciBhZnRlciBhCgkJCS8vIHZhcmlhYmxlIGFzc2lnbm1lbnQgKHdvdWxkIGhhdmUgYmVlbiBhIFBhcnNlRXJyb3IpLgoJCQkkbmFtZSA9ICdAJyAuICR2LT5jb21waWxlKCAkZW52ICktPnZhbHVlOwoJCX0gZWxzZSB7CgkJCSRuYW1lID0gJHRoaXMtPm5hbWU7CgkJfQoKCQlpZiAoICR0aGlzLT5ldmFsdWF0aW5nICkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCQkiUmVjdXJzaXZlIHZhcmlhYmxlIGRlZmluaXRpb24gZm9yICIgLiAkbmFtZSwKCQkJCW51bGwsCgkJCQkkdGhpcy0+aW5kZXgsCgkJCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvCgkJCSk7CgkJfQoKCQkkdGhpcy0+ZXZhbHVhdGluZyA9IHRydWU7CgkJJHZhcmlhYmxlID0gbnVsbDsKCQlmb3JlYWNoICggJGVudi0+ZnJhbWVzIGFzICRmcmFtZSApIHsKCQkJLyoqIEB2YXIgTGVzc19UcmVlX1J1bGVzZXQgJGZyYW1lICovCgkJCSR2ID0gJGZyYW1lLT52YXJpYWJsZSggJG5hbWUgKTsKCQkJaWYgKCAkdiApIHsKCQkJCWlmICggaXNzZXQoICR2LT5pbXBvcnRhbnQgKSAmJiAkdi0+aW1wb3J0YW50ICkgewoJCQkJCSRpbXBvcnRhbnRTY29wZUxlbmd0aCA9IGNvdW50KCAkZW52LT5pbXBvcnRhbnRTY29wZSApOwoJCQkJCSRlbnYtPmltcG9ydGFudFNjb3BlWyAkaW1wb3J0YW50U2NvcGVMZW5ndGggLSAxIF1bJ2ltcG9ydGFudCddID0gJHYtPmltcG9ydGFudDsKCQkJCX0KCQkJCS8vIElmIGluIGNhbGMsIHdyYXAgdmFycyBpbiBhIGZ1bmN0aW9uIGNhbGwgdG8gY2FzY2FkZSBldmFsdWF0ZSBhcmdzIGZpcnN0CgkJCQlpZiAoICRlbnYtPmluQ2FsYyApIHsKCQkJCQkkY2FsbCA9IG5ldyBMZXNzX1RyZWVfQ2FsbCggJ19TRUxGJywgWyAkdi0+dmFsdWUgXSwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvICk7CgkJCQkJJHZhcmlhYmxlID0gJGNhbGwtPmNvbXBpbGUoICRlbnYgKTsKCQkJCQlicmVhazsKCQkJCX0gZWxzZSB7CgkJCQkJJHZhcmlhYmxlID0gJHYtPnZhbHVlLT5jb21waWxlKCAkZW52ICk7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9CgkJaWYgKCAkdmFyaWFibGUgKSB7CgkJCSR0aGlzLT5ldmFsdWF0aW5nID0gZmFsc2U7CgkJCXJldHVybiAkdmFyaWFibGU7CgkJfQoKCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoCgkJCSJ2YXJpYWJsZSAiIC4gJG5hbWUgLiAiIGlzIHVuZGVmaW5lZCBpbiBmaWxlICIgLiAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWyJmaWxlbmFtZSJdLAoJCQludWxsLAoJCQkkdGhpcy0+aW5kZXgsCgkJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8KCQkpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Tree/VariableCall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqIEBzZWUgbGVzcy0zLjEzLjEuanMjVmFyaWFibGVDYWxsCiAqIEB0b2RvIG1pc3NpbmcgYWxsb3dSb290IGltcGxlbWVudGF0aW9uIGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvY29tbWl0L2I2NzQwM2QzCiAqLwpjbGFzcyBMZXNzX1RyZWVfVmFyaWFibGVDYWxsIGV4dGVuZHMgTGVzc19UcmVlIHsKCgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkdmFyaWFibGU7CgkvKiogQHZhciBzdHJpbmcgKi8KCXB1YmxpYyAkdHlwZSA9ICJWYXJpYWJsZUNhbGwiOwoJLyoqCgkgKiBAdmFyIGludAoJICovCglwcml2YXRlICRpbmRleDsKCS8qKgoJICogQHZhciBhcnJheQoJICovCglwcml2YXRlICRjdXJyZW50RmlsZUluZm87CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICR2YXJpYWJsZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICR2YXJpYWJsZSwgJGluZGV4LCAkY3VycmVudEZpbGVJbmZvICkgewoJCSR0aGlzLT52YXJpYWJsZSA9ICR2YXJpYWJsZTsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKSB7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKSB7CgkJJGRldGFjaGVkUnVsZXNldCA9ICggbmV3IExlc3NfVHJlZV9WYXJpYWJsZSggJHRoaXMtPnZhcmlhYmxlLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8gKSApCgkJCS0+Y29tcGlsZSggJGVudiApOwoKCQlpZiAoICEoICRkZXRhY2hlZFJ1bGVzZXQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0ICkgfHwgISRkZXRhY2hlZFJ1bGVzZXQtPnJ1bGVzZXQgKSB7CgkJCS8vIG9yZGVyIGRpZmZlcnMgZnJvbSB1cHN0cmVhbSB0byBzaW1wbGlmeSB0aGUgY29kZQoJCQlpZiAoIGlzX2FycmF5KCAkZGV0YWNoZWRSdWxlc2V0ICkgKSB7CgkJCQkkcnVsZXMgPSBuZXcgTGVzc19UcmVlX1J1bGVzZXQoIG51bGwsICRkZXRhY2hlZFJ1bGVzZXQgKTsKCQkJfSBlbHNlaWYgKAoJCQkJKCAkZGV0YWNoZWRSdWxlc2V0IGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGVzZXQKCQkJCXx8ICRkZXRhY2hlZFJ1bGVzZXQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQXRSdWxlCgkJCQl8fCAkZGV0YWNoZWRSdWxlc2V0IGluc3RhbmNlb2YgTGVzc19UcmVlX01lZGlhCgkJCQl8fCAkZGV0YWNoZWRSdWxlc2V0IGluc3RhbmNlb2YgTGVzc19UcmVlX01peGluX0RlZmluaXRpb24KCQkJCSkgJiYgJGRldGFjaGVkUnVsZXNldC0+cnVsZXMKCQkJKSB7CgkJCQkvLyBAdG9kbyAtIG5vdGUgbG9va3MgbGlrZSBkZWFkIGNvZGUsIGRvIHdlIG5lZWQgaXQgPwoJCQkJJHJ1bGVzID0gJGRldGFjaGVkUnVsZXNldDsKCQkJfSBlbHNlaWYgKCAkZGV0YWNoZWRSdWxlc2V0IGluc3RhbmNlb2YgTGVzc19UcmVlICYmIGlzX2FycmF5KCAkZGV0YWNoZWRSdWxlc2V0LT52YWx1ZSApICkgewoJCQkJLy8gQHBoYW4tc3VwcHJlc3MtbmV4dC1saW5lIFBoYW5UeXBlTWlzbWF0Y2hBcmd1bWVudCBGYWxzZSBwb3NpdGl2ZQoJCQkJJHJ1bGVzID0gbmV3IExlc3NfVHJlZV9SdWxlc2V0KCBudWxsLCAkZGV0YWNoZWRSdWxlc2V0LT52YWx1ZSApOwoJCQl9IGVsc2UgewoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAnQ291bGQgbm90IGV2YWx1YXRlIHZhcmlhYmxlIGNhbGwgJyAuICR0aGlzLT52YXJpYWJsZSApOwoJCQl9CgkJCSRkZXRhY2hlZFJ1bGVzZXQgPSBuZXcgTGVzc19UcmVlX0RldGFjaGVkUnVsZXNldCggJHJ1bGVzICk7CgkJfQoJCWlmICggJGRldGFjaGVkUnVsZXNldC0+cnVsZXNldCApIHsKCQkJcmV0dXJuICRkZXRhY2hlZFJ1bGVzZXQtPmNhbGxFdmFsKCAkZW52ICk7CgkJfQoJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggJ0NvdWxkIG5vdCBldmFsdWF0ZSB2YXJpYWJsZSBjYWxsICcgLiAkdGhpcy0+dmFyaWFibGUgKTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Version.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBWZXJzaW9uIG51bWJlcnMKICovCmNsYXNzIExlc3NfVmVyc2lvbiB7CgoJLyogQ3VycmVudCByZWxlYXNlIHZlcnNpb24gb2YgbGVzcy5waHAgKi8KCXB1YmxpYyBjb25zdCB2ZXJzaW9uID0gJzUuNC4wJzsKCgkvKiBVcHN0cmVhbSBsZXNzLmpzIHZlcnNpb24gdGhhdCB0aGlzIHJlbGVhc2Ugc2hvdWxkIGJlIGNvbXBhdGlibGUgd2l0aCAqLwoJcHVibGljIGNvbnN0IGxlc3NfdmVyc2lvbiA9ICczLjEzLjEnOwoKCS8qIFBhcnNlciBjYWNoZSB2ZXJzaW9uICovCglwdWJsaWMgY29uc3QgY2FjaGVfdmVyc2lvbiA9ICczMTMxLTEwJzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Visitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3IgewoKCS8qKiBAdmFyIGFycmF5ICovCglwcm90ZWN0ZWQgJF92aXNpdEZuQ2FjaGUgPSBbXTsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7CgkJJHRoaXMtPl92aXNpdEZuQ2FjaGUgPSBnZXRfY2xhc3NfbWV0aG9kcyggZ2V0X2NsYXNzKCAkdGhpcyApICk7CgkJJHRoaXMtPl92aXNpdEZuQ2FjaGUgPSBhcnJheV9mbGlwKCAkdGhpcy0+X3Zpc2l0Rm5DYWNoZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdE9iaiggJG5vZGUgKSB7CgkJc3RhdGljICRmdW5jTmFtZXMgPSBbXTsKCgkJaWYgKCAhJG5vZGUgaW5zdGFuY2VvZiBMZXNzX1RyZWUgKSB7CgkJCXJldHVybiAkbm9kZTsKCQl9CgoJCS8vIE1hcCBhIGNsYXNzIG5hbWUgbGlrZSAiTGVzc19UcmVlX0Zvb19CYXIiIHRvIG1ldGhvZCBsaWtlICJ2aXNpdEZvb0JhciIuCgkJLy8KCQkvLyBXZSBkbyB0aGlzIGJ5IHRha2luZyB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBjbGFzcyBuYW1lIChpbnN0ZWFkIG9mIGRvaW5nCgkJLy8gYSBmaW5kLXJlcGxhY2UgZnJvbSAiTGVzc19UcmVlIiB0byAidmlzaXQiKSwgc28gdGhhdCB3ZSBzdXBwb3J0IGNvZGVtb2QKCQkvLyB0b29scyAoc3VjaCBhcyBTdHJhdXNzIGFuZCBNb3phcnQpLCB3aGljaCBtYXkgbW9kaWZ5IG91ciBjb2RlIGluLXBsYWNlCgkJLy8gdG8gYWRkIGEgbmFtZXNwYWNlIG9yIGNsYXNzIHByZWZpeC4KCQkvLyAiTXlWZW5kb3JcU29tZXRoaW5nX0xlc3NfVHJlZV9Gb29fQmFyIiBzaG91bGQgYWxzbyBtYXAgdG8gIkZvb0JhciIuCgkJLy8KCQkvLyBodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvYnJpYW5oZW5yeWllL3N0cmF1c3MKCQkvLyBodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvY29lbmphY29icy9tb3phcnQKCQkkY2xhc3MgPSBnZXRfY2xhc3MoICRub2RlICk7CgkJJGZ1bmNOYW1lID0gJGZ1bmNOYW1lc1skY2xhc3NdID8/PSAndmlzaXQnIC4gc3RyX3JlcGxhY2UoIFsgJ18nLCAnXFwnIF0sICcnLAoJCQlzdWJzdHIoICRjbGFzcywgc3RycG9zKCAkY2xhc3MsICdMZXNzX1RyZWVfJyApICsgMTAgKQoJCSk7CgoJCWlmICggaXNzZXQoICR0aGlzLT5fdmlzaXRGbkNhY2hlWyRmdW5jTmFtZV0gKSApIHsKCQkJJHZpc2l0RGVlcGVyID0gdHJ1ZTsKCQkJJG5ld05vZGUgPSAkdGhpcy0+JGZ1bmNOYW1lKCAkbm9kZSwgJHZpc2l0RGVlcGVyICk7CgkJCWlmICggJHRoaXMgaW5zdGFuY2VvZiBMZXNzX1Zpc2l0b3JSZXBsYWNpbmcgKSB7CgkJCQkkbm9kZSA9ICRuZXdOb2RlOwoJCQl9CgoJCQlpZiAoICR2aXNpdERlZXBlciAmJiAkbm9kZSBpbnN0YW5jZW9mIExlc3NfVHJlZSApIHsKCQkJCSRub2RlLT5hY2NlcHQoICR0aGlzICk7CgkJCX0KCgkJCSRmdW5jTmFtZSAuPSAnT3V0JzsKCQkJaWYgKCBpc3NldCggJHRoaXMtPl92aXNpdEZuQ2FjaGVbJGZ1bmNOYW1lXSApICkgewoJCQkJJHRoaXMtPiRmdW5jTmFtZSggJG5vZGUgKTsKCQkJfQoKCQl9IGVsc2UgewoJCQkkbm9kZS0+YWNjZXB0KCAkdGhpcyApOwoJCX0KCgkJcmV0dXJuICRub2RlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEFycmF5KCAmJG5vZGVzICkgewoJCS8vIE5PVEU6IFRoZSB1c2Ugb2YgYnktcmVmIGluIGEgbm9ybWFsIChub24tcmVwbGFjaW5nKSBWaXNpdG9yIG1heSBiZSBzdXJwcmlzaW5nLAoJCS8vIGJ1dCB1cHN0cmVhbSByZWxpZXMgb24gdGhpcyBmb3IgTGVzc19JbXBvcnRWaXNpdG9yLCB3aGljaCBtb2RpZmllcyB2YWx1ZXMgb2YKCQkvLyBgJGltcG9ydFBhcmVudC0+cnVsZXNgIHlldCBpcyBub3QgYSByZXBsYWNpbmcgdmlzaXRvci4KCQlmb3JlYWNoICggJG5vZGVzIGFzICYkbm9kZSApIHsKCQkJJHRoaXMtPnZpc2l0T2JqKCAkbm9kZSApOwoJCX0KCQlyZXR1cm4gJG5vZGVzOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Visitor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Visitor/extendFinder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3JfZXh0ZW5kRmluZGVyIGV4dGVuZHMgTGVzc19WaXNpdG9yIHsKCgkvKiogQHZhciBMZXNzX1RyZWVfU2VsZWN0b3JbXSAqLwoJcHVibGljICRjb250ZXh0cyA9IFtdOwoJLyoqIEB2YXIgTGVzc19UcmVlX0V4dGVuZFtdW10gKi8KCXB1YmxpYyAkYWxsRXh0ZW5kc1N0YWNrOwoJLyoqIEB2YXIgYm9vbCAqLwoJcHVibGljICRmb3VuZEV4dGVuZHM7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewoJCSR0aGlzLT5jb250ZXh0cyA9IFtdOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgPSBbIFtdIF07CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgpOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBydW4oICRyb290ICkgewoJCSRyb290ID0gJHRoaXMtPnZpc2l0T2JqKCAkcm9vdCApOwoJCSRyb290LT5hbGxFeHRlbmRzID0mICR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbMF07CgkJcmV0dXJuICRyb290OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdERlY2xhcmF0aW9uKCAkZGVjbE5vZGUsICYkdmlzaXREZWVwZXIgKSB7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uKCAkbWl4aW5EZWZpbml0aW9uTm9kZSwgJiR2aXNpdERlZXBlciApIHsKCQkkdmlzaXREZWVwZXIgPSBmYWxzZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRSdWxlc2V0KCAkcnVsZXNldE5vZGUgKSB7CgkJaWYgKCAkcnVsZXNldE5vZGUtPnJvb3QgKSB7CgkJCXJldHVybjsKCQl9CgoJCSRhbGxTZWxlY3RvcnNFeHRlbmRMaXN0ID0gW107CgoJCS8vIGdldCAmOmV4dGVuZCguYSk7IHJ1bGVzIHdoaWNoIGFwcGx5IHRvIGFsbCBzZWxlY3RvcnMgaW4gdGhpcyBydWxlc2V0CgkJaWYgKCAkcnVsZXNldE5vZGUtPnJ1bGVzICkgewoJCQlmb3JlYWNoICggJHJ1bGVzZXROb2RlLT5ydWxlcyBhcyAkcnVsZSApIHsKCQkJCWlmICggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXh0ZW5kICkgewoJCQkJCSRhbGxTZWxlY3RvcnNFeHRlbmRMaXN0W10gPSAkcnVsZTsKCQkJCQkkcnVsZXNldE5vZGUtPmV4dGVuZE9uRXZlcnlQYXRoID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCgkJLy8gbm93IGZpbmQgZXZlcnkgc2VsZWN0b3IgYW5kIGFwcGx5IHRoZSBleHRlbmRzIHRoYXQgYXBwbHkgdG8gYWxsIGV4dGVuZHMKCQkvLyBhbmQgdGhlIG9uZXMgd2hpY2ggYXBwbHkgdG8gYW4gaW5kaXZpZHVhbCBleHRlbmQKCQlmb3JlYWNoICggJHJ1bGVzZXROb2RlLT5wYXRocyBhcyAkc2VsZWN0b3JQYXRoICkgewoJCQkkc2VsZWN0b3IgPSBlbmQoICRzZWxlY3RvclBhdGggKTsgLy8gJHNlbGVjdG9yUGF0aFsgY291bnQoJHNlbGVjdG9yUGF0aCktMV07CgoJCQkkaiA9IDA7CgkJCWZvcmVhY2ggKCAkc2VsZWN0b3ItPmV4dGVuZExpc3QgYXMgJGV4dGVuZCApIHsKCQkJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tQdXNoKCAkcnVsZXNldE5vZGUsICRzZWxlY3RvclBhdGgsICRleHRlbmQsICRqICk7CgkJCX0KCQkJZm9yZWFjaCAoICRhbGxTZWxlY3RvcnNFeHRlbmRMaXN0IGFzICRleHRlbmQgKSB7CgkJCQkkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrUHVzaCggJHJ1bGVzZXROb2RlLCAkc2VsZWN0b3JQYXRoLCAkZXh0ZW5kLCAkaiApOwoJCQl9CgkJfQoKCQkkdGhpcy0+Y29udGV4dHNbXSA9ICRydWxlc2V0Tm9kZS0+c2VsZWN0b3JzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhbGxFeHRlbmRzU3RhY2tQdXNoKCAkcnVsZXNldE5vZGUsICRzZWxlY3RvclBhdGgsIExlc3NfVHJlZV9FeHRlbmQgJGV4dGVuZCwgJiRqICkgewoJCSR0aGlzLT5mb3VuZEV4dGVuZHMgPSB0cnVlOwoJCSRleHRlbmQgPSAkZXh0ZW5kLT5jbG9uZSgpOwoJCSRleHRlbmQtPmZpbmRTZWxmU2VsZWN0b3JzKCAkc2VsZWN0b3JQYXRoICk7CgkJJGV4dGVuZC0+cnVsZXNldCA9ICRydWxlc2V0Tm9kZTsKCQlpZiAoICRqID09PSAwICkgewoJCQkkZXh0ZW5kLT5maXJzdEV4dGVuZE9uVGhpc1NlbGVjdG9yUGF0aCA9IHRydWU7CgkJfQoKCQkkZW5kX2tleSA9IGNvdW50KCAkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrICkgLSAxOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbJGVuZF9rZXldW10gPSAkZXh0ZW5kOwoJCSRqKys7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZXNldE91dCggJHJ1bGVzZXROb2RlICkgewoJCWlmICggISRydWxlc2V0Tm9kZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlc2V0IHx8ICEkcnVsZXNldE5vZGUtPnJvb3QgKSB7CgkJCWFycmF5X3BvcCggJHRoaXMtPmNvbnRleHRzICk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdE1lZGlhKCAkbWVkaWFOb2RlICkgewoJCSRtZWRpYU5vZGUtPmFsbEV4dGVuZHMgPSBbXTsKCQkkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrW10gPSYgJG1lZGlhTm9kZS0+YWxsRXh0ZW5kczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRNZWRpYU91dCgpIHsKCQlhcnJheV9wb3AoICR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRBdFJ1bGUoICRhdFJ1bGVOb2RlICkgewoJCSRhdFJ1bGVOb2RlLT5hbGxFeHRlbmRzID0gW107CgkJJHRoaXMtPmFsbEV4dGVuZHNTdGFja1tdID0mICRhdFJ1bGVOb2RlLT5hbGxFeHRlbmRzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEF0UnVsZU91dCgpIHsKCQlhcnJheV9wb3AoICR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgKTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Visitor/joinSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3Jfam9pblNlbGVjdG9yIGV4dGVuZHMgTGVzc19WaXNpdG9yIHsKCgkvKiogQHZhciBMZXNzX1RyZWVfU2VsZWN0b3JbXVtdW10gKi8KCXB1YmxpYyAkY29udGV4dHMgPSBbIFtdIF07CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlX1J1bGVzZXQgJHJvb3QKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHJ1biggJHJvb3QgKSB7CgkJcmV0dXJuICR0aGlzLT52aXNpdE9iaiggJHJvb3QgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXREZWNsYXJhdGlvbiggJGRlY2xOb2RlLCAmJHZpc2l0RGVlcGVyICkgewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdE1peGluRGVmaW5pdGlvbiggJG1peGluRGVmaW5pdGlvbk5vZGUsICYkdmlzaXREZWVwZXIgKSB7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZXNldCggJHJ1bGVzZXROb2RlICkgewoJCSRjb250ZXh0ID0gZW5kKCAkdGhpcy0+Y29udGV4dHMgKTsKCQkkcGF0aHMgPSBbXTsKCgkJaWYgKCAhJHJ1bGVzZXROb2RlLT5yb290ICkgewoJCQkkc2VsZWN0b3JzID0gJHJ1bGVzZXROb2RlLT5zZWxlY3RvcnM7CgkJCWlmICggJHNlbGVjdG9ycyAhPT0gbnVsbCApIHsKCQkJCSRmaWx0ZXJlZCA9IFtdOwoJCQkJZm9yZWFjaCAoICRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yICkgewoJCQkJCWlmICggJHNlbGVjdG9yLT5nZXRJc091dHB1dCgpICkgewoJCQkJCQkkZmlsdGVyZWRbXSA9ICRzZWxlY3RvcjsKCQkJCQl9CgkJCQl9CgkJCQkkc2VsZWN0b3JzID0gJHJ1bGVzZXROb2RlLT5zZWxlY3RvcnMgPSAkZmlsdGVyZWQgPzogbnVsbDsKCQkJCWlmICggJHNlbGVjdG9ycyApIHsKCQkJCQkkcGF0aHMgPSAkcnVsZXNldE5vZGUtPmpvaW5TZWxlY3RvcnMoICRjb250ZXh0LCAkc2VsZWN0b3JzICk7CgkJCQl9CgkJCX0KCgkJCWlmICggJHNlbGVjdG9ycyA9PT0gbnVsbCApIHsKCQkJCSRydWxlc2V0Tm9kZS0+cnVsZXMgPSBudWxsOwoJCQl9CgoJCQkkcnVsZXNldE5vZGUtPnBhdGhzID0gJHBhdGhzOwoJCX0KCgkJLy8gTk9URTogQXNzaWduZWQgaGVyZSBpbnN0ZWFkIG9mIGF0IHRoZSBzdGFydCBsaWtlIGxlc3MuanMsCgkJLy8gYmVjYXVzZSBQSFAgYXJyYXlzIGFyZW4ndCBieS1yZWYKCQkkdGhpcy0+Y29udGV4dHNbXSA9ICRwYXRoczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRSdWxlc2V0T3V0KCkgewoJCWFycmF5X3BvcCggJHRoaXMtPmNvbnRleHRzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0TWVkaWEoICRtZWRpYU5vZGUgKSB7CgkJJGNvbnRleHQgPSBlbmQoICR0aGlzLT5jb250ZXh0cyApOwoKCQlpZiAoIGNvdW50KCAkY29udGV4dCApID09PSAwIHx8ICggJGNvbnRleHRbMF0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldCAmJiAkY29udGV4dFswXS0+bXVsdGlNZWRpYSApICkgewoJCQkkbWVkaWFOb2RlLT5ydWxlc1swXS0+cm9vdCA9IHRydWU7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEF0UnVsZSggJGF0UnVsZU5vZGUgKSB7CgkJJGNvbnRleHQgPSBlbmQoICR0aGlzLT5jb250ZXh0cyApOwoKCQlpZiAoICRhdFJ1bGVOb2RlLT5ydWxlcyAmJiBjb3VudCggJGF0UnVsZU5vZGUtPnJ1bGVzICkgPiAwICkgewoJCQkkYXRSdWxlTm9kZS0+cnVsZXNbMF0tPnJvb3QgPSAkYXRSdWxlTm9kZS0+aXNSb290ZWQgfHwgY291bnQoICRjb250ZXh0ICkgPT09IDA7CgkJfQoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Visitor/processExtends.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3JfcHJvY2Vzc0V4dGVuZHMgZXh0ZW5kcyBMZXNzX1Zpc2l0b3IgewoKCS8qKiBAdmFyIExlc3NfVHJlZV9FeHRlbmRbXVtdICovCglwdWJsaWMgJGFsbEV4dGVuZHNTdGFjazsKCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfUnVsZXNldCAkcm9vdAoJICovCglwdWJsaWMgZnVuY3Rpb24gcnVuKCAkcm9vdCApIHsKCQkkZXh0ZW5kRmluZGVyID0gbmV3IExlc3NfVmlzaXRvcl9leHRlbmRGaW5kZXIoKTsKCQkkZXh0ZW5kRmluZGVyLT5ydW4oICRyb290ICk7CgkJaWYgKCAhJGV4dGVuZEZpbmRlci0+Zm91bmRFeHRlbmRzICkgewoJCQlyZXR1cm4gJHJvb3Q7CgkJfQoKCQkkcm9vdC0+YWxsRXh0ZW5kcyA9ICR0aGlzLT5kb0V4dGVuZENoYWluaW5nKCAkcm9vdC0+YWxsRXh0ZW5kcywgJHJvb3QtPmFsbEV4dGVuZHMgKTsKCgkJJHRoaXMtPmFsbEV4dGVuZHNTdGFjayA9IFtdOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbXSA9ICYkcm9vdC0+YWxsRXh0ZW5kczsKCgkJcmV0dXJuICR0aGlzLT52aXNpdE9iaiggJHJvb3QgKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGRvRXh0ZW5kQ2hhaW5pbmcoICRleHRlbmRzTGlzdCwgJGV4dGVuZHNMaXN0VGFyZ2V0LCAkaXRlcmF0aW9uQ291bnQgPSAwICkgewoJCS8vCgkJLy8gY2hhaW5pbmcgaXMgZGlmZmVyZW50IGZyb20gbm9ybWFsIGV4dGVuc2lvbi4uIGlmIHdlIGV4dGVuZCBhbiBleHRlbmQgdGhlbiB3ZSBhcmUgbm90IGp1c3QgY29weWluZywgYWx0ZXJpbmcgYW5kIHBhc3RpbmcKCQkvLyB0aGUgc2VsZWN0b3Igd2Ugd291bGQgZG8gbm9ybWFsbHksIGJ1dCB3ZSBhcmUgYWxzbyBhZGRpbmcgYW4gZXh0ZW5kIHdpdGggdGhlIHNhbWUgdGFyZ2V0IHNlbGVjdG9yCgkJLy8gdGhpcyBtZWFucyB0aGlzIG5ldyBleHRlbmQgY2FuIHRoZW4gZ28gYW5kIGFsdGVyIG90aGVyIGV4dGVuZHMKCQkvLwoJCS8vIHRoaXMgbWV0aG9kIGRlYWxzIHdpdGggYWxsIHRoZSBjaGFpbmluZyB3b3JrIC0gd2l0aG91dCBpdCwgZXh0ZW5kIGlzIGZsYXQgYW5kIGRvZXNuJ3Qgd29yayBvbiBvdGhlciBleHRlbmQgc2VsZWN0b3JzCgkJLy8gdGhpcyBpcyBhbHNvIHRoZSBtb3N0IGV4cGVuc2l2ZS4uIGFuZCBhIG1hdGNoIG9uIG9uZSBzZWxlY3RvciBjYW4gY2F1c2UgYW4gZXh0ZW5zaW9uIG9mIGEgc2VsZWN0b3Igd2UgaGFkIGFscmVhZHkgcHJvY2Vzc2VkIGlmCgkJLy8gd2UgbG9vayBhdCBlYWNoIHNlbGVjdG9yIGF0IGEgdGltZSwgYXMgaXMgZG9uZSBpbiB2aXNpdFJ1bGVzZXQKCgkJJGV4dGVuZHNUb0FkZCA9IFtdOwoKCQkvLyBsb29wIHRocm91Z2ggY29tcGFyaW5nIGV2ZXJ5IGV4dGVuZCB3aXRoIGV2ZXJ5IHRhcmdldCBleHRlbmQuCgkJLy8gYSB0YXJnZXQgZXh0ZW5kIGlzIHRoZSBvbmUgb24gdGhlIHJ1bGVzZXQgd2UgYXJlIGxvb2tpbmcgYXQgY29weS9lZGl0L3Bhc3RpbmcgaW4gcGxhY2UKCQkvLyBlLmcuIC5hOmV4dGVuZCguYikge30gYW5kIC5iOmV4dGVuZCguYykge30gdGhlbiB0aGUgZmlyc3QgZXh0ZW5kIGV4dGVuZHMgdGhlIHNlY29uZCBvbmUKCQkvLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGFyZ2V0LgoJCS8vIHRoZSBzZXBhcmF0aW9uIGludG8gdHdvIGxpc3RzIGFsbG93cyB1cyB0byBwcm9jZXNzIGEgc3Vic2V0IG9mIGNoYWlucyB3aXRoIGEgYmlnZ2VyIHNldCwgYXMgaXMgdGhlCgkJLy8gY2FzZSB3aGVuIHByb2Nlc3NpbmcgbWVkaWEgcXVlcmllcwoJCWZvciAoICRleHRlbmRJbmRleCA9IDAsICRleHRlbmRzTGlzdF9sZW4gPSBjb3VudCggJGV4dGVuZHNMaXN0ICk7ICRleHRlbmRJbmRleCA8ICRleHRlbmRzTGlzdF9sZW47ICRleHRlbmRJbmRleCsrICkgewoJCQlmb3IgKCAkdGFyZ2V0RXh0ZW5kSW5kZXggPSAwOyAkdGFyZ2V0RXh0ZW5kSW5kZXggPCBjb3VudCggJGV4dGVuZHNMaXN0VGFyZ2V0ICk7ICR0YXJnZXRFeHRlbmRJbmRleCsrICkgewoKCQkJCSRleHRlbmQgPSAkZXh0ZW5kc0xpc3RbJGV4dGVuZEluZGV4XTsKCQkJCSR0YXJnZXRFeHRlbmQgPSAkZXh0ZW5kc0xpc3RUYXJnZXRbJHRhcmdldEV4dGVuZEluZGV4XTsKCgkJCQkvLyBPcHRpbWlzYXRpb246IEV4cGxpY2l0IHJlZmVyZW5jZSwgPGh0dHBzOi8vZ2l0aHViLmNvbS93aWtpbWVkaWEvbGVzcy5waHAvcHVsbC8xND4KCQkJCWlmICggXGFycmF5X2tleV9leGlzdHMoICR0YXJnZXRFeHRlbmQtPm9iamVjdF9pZCwgJGV4dGVuZC0+cGFyZW50X2lkcyApICkgewoJCQkJCS8vIGlnbm9yZSBjaXJjdWxhciByZWZlcmVuY2VzCgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJLy8gZmluZCBhIG1hdGNoIGluIHRoZSB0YXJnZXQgZXh0ZW5kcyBzZWxmIHNlbGVjdG9yICh0aGUgYml0IGJlZm9yZSA6ZXh0ZW5kKQoJCQkJJHNlbGVjdG9yUGF0aCA9IFsgJHRhcmdldEV4dGVuZC0+c2VsZlNlbGVjdG9yc1swXSBdOwoJCQkJJG1hdGNoZXMgPSAkdGhpcy0+ZmluZE1hdGNoKCAkZXh0ZW5kLCAkc2VsZWN0b3JQYXRoICk7CgoJCQkJaWYgKCAkbWF0Y2hlcyApIHsKCgkJCQkJLy8gd2UgZm91bmQgYSBtYXRjaCwgc28gZm9yIGVhY2ggc2VsZiBzZWxlY3Rvci4uCgkJCQkJZm9yZWFjaCAoICRleHRlbmQtPnNlbGZTZWxlY3RvcnMgYXMgJHNlbGZTZWxlY3RvciApIHsKCgkJCQkJCS8vIHByb2Nlc3MgdGhlIGV4dGVuZCBhcyB1c3VhbAoJCQkJCQkkbmV3U2VsZWN0b3IgPSAkdGhpcy0+ZXh0ZW5kU2VsZWN0b3IoICRtYXRjaGVzLCAkc2VsZWN0b3JQYXRoLCAkc2VsZlNlbGVjdG9yICk7CgoJCQkJCQkvLyBidXQgbm93IHdlIGNyZWF0ZSBhIG5ldyBleHRlbmQgZnJvbSBpdAoJCQkJCQkkbmV3RXh0ZW5kID0gbmV3IExlc3NfVHJlZV9FeHRlbmQoICR0YXJnZXRFeHRlbmQtPnNlbGVjdG9yLCAkdGFyZ2V0RXh0ZW5kLT5vcHRpb24sIDAgKTsKCQkJCQkJJG5ld0V4dGVuZC0+c2VsZlNlbGVjdG9ycyA9ICRuZXdTZWxlY3RvcjsKCgkJCQkJCS8vIGFkZCB0aGUgZXh0ZW5kIG9udG8gdGhlIGxpc3Qgb2YgZXh0ZW5kcyBmb3IgdGhhdCBzZWxlY3RvcgoJCQkJCQllbmQoICRuZXdTZWxlY3RvciApLT5leHRlbmRMaXN0ID0gWyAkbmV3RXh0ZW5kIF07CgkJCQkJCS8vICRuZXdTZWxlY3RvclsgY291bnQoJG5ld1NlbGVjdG9yKS0xXS0+ZXh0ZW5kTGlzdCA9IGFycmF5KCRuZXdFeHRlbmQpOwoKCQkJCQkJLy8gcmVjb3JkIHRoYXQgd2UgbmVlZCB0byBhZGQgaXQuCgkJCQkJCSRleHRlbmRzVG9BZGRbXSA9ICRuZXdFeHRlbmQ7CgkJCQkJCSRuZXdFeHRlbmQtPnJ1bGVzZXQgPSAkdGFyZ2V0RXh0ZW5kLT5ydWxlc2V0OwoKCQkJCQkJLy8gcmVtZW1iZXIgaXRzIHBhcmVudHMgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMKCQkJCQkJJG5ld0V4dGVuZC0+cGFyZW50X2lkcyA9IGFycmF5X21lcmdlKCAkbmV3RXh0ZW5kLT5wYXJlbnRfaWRzLCAkdGFyZ2V0RXh0ZW5kLT5wYXJlbnRfaWRzLCAkZXh0ZW5kLT5wYXJlbnRfaWRzICk7CgoJCQkJCQkvLyBvbmx5IHByb2Nlc3MgdGhlIHNlbGVjdG9yIG9uY2UuLiBpZiB3ZSBoYXZlIDpleHRlbmQoLmEsLmIpIHRoZW4gbXVsdGlwbGUKCQkJCQkJLy8gZXh0ZW5kcyB3aWxsIGxvb2sgYXQgdGhlIHNhbWUgc2VsZWN0b3IgcGF0aCwgc28gd2hlbiBleHRlbmRpbmcKCQkJCQkJLy8gd2Uga25vdyB0aGF0IGFueSBvdGhlcnMgd2lsbCBiZSBkdXBsaWNhdGVzIGluIHRlcm1zIG9mIHdoYXQgaXMgYWRkZWQgdG8gdGhlIGNzcwoJCQkJCQlpZiAoICR0YXJnZXRFeHRlbmQtPmZpcnN0RXh0ZW5kT25UaGlzU2VsZWN0b3JQYXRoICkgewoJCQkJCQkJJG5ld0V4dGVuZC0+Zmlyc3RFeHRlbmRPblRoaXNTZWxlY3RvclBhdGggPSB0cnVlOwoJCQkJCQkJJHRhcmdldEV4dGVuZC0+cnVsZXNldC0+cGF0aHNbXSA9ICRuZXdTZWxlY3RvcjsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJaWYgKCAkZXh0ZW5kc1RvQWRkICkgewoJCQkvLyB0cnkgdG8gZGV0ZWN0IGNpcmN1bGFyIHJlZmVyZW5jZXMgdG8gc3RvcCBhIHN0YWNrIG92ZXJmbG93LgoJCQkvLyBtYXkgbm8gbG9uZ2VyIGJlIG5lZWRlZC4JCQkkdGhpcy0+ZXh0ZW5kQ2hhaW5Db3VudCsrOwoJCQlpZiAoICRpdGVyYXRpb25Db3VudCA+IDEwMCApIHsKCgkJCQl0cnkgewoJCQkJCSRzZWxlY3Rvck9uZSA9ICRleHRlbmRzVG9BZGRbMF0tPnNlbGZTZWxlY3RvcnNbMF0tPnRvQ1NTKCk7CgkJCQkJJHNlbGVjdG9yVHdvID0gJGV4dGVuZHNUb0FkZFswXS0+c2VsZWN0b3ItPnRvQ1NTKCk7CgkJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkJCSRzZWxlY3Rvck9uZSA9ICJ7dW5hYmxlIHRvIGNhbGN1bGF0ZX0iOwoJCQkJCSRzZWxlY3RvclR3byA9ICJ7dW5hYmxlIHRvIGNhbGN1bGF0ZX0iOwoJCQkJfQoKCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoCgkJCQkJImV4dGVuZCBjaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQuIE9uZSBvZiB0aGUgY2lyY3VsYXIgZXh0ZW5kcyBpcyBjdXJyZW50bHk6IiAuICRzZWxlY3Rvck9uZSAuICI6ZXh0ZW5kKCIgLiAkc2VsZWN0b3JUd28gLiAiKSIKCQkJCSk7CgkJCX0KCgkJCS8vIG5vdyBwcm9jZXNzIHRoZSBuZXcgZXh0ZW5kcyBvbiB0aGUgZXhpc3RpbmcgcnVsZXMgc28gdGhhdCB3ZSBjYW4gaGFuZGxlIGEgZXh0ZW5kaW5nIGIgZXh0ZW5kaW5nIGMgZWN0ZW5kaW5nIGQgZXh0ZW5kaW5nIGUuLi4KCQkJJGV4dGVuZHNUb0FkZCA9ICR0aGlzLT5kb0V4dGVuZENoYWluaW5nKCAkZXh0ZW5kc1RvQWRkLCAkZXh0ZW5kc0xpc3RUYXJnZXQsICRpdGVyYXRpb25Db3VudCArIDEgKTsKCQl9CgoJCXJldHVybiBhcnJheV9tZXJnZSggJGV4dGVuZHNMaXN0LCAkZXh0ZW5kc1RvQWRkICk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0RGVjbGFyYXRpb24oICRkZWNsTm9kZSwgJiR2aXNpdERlZXBlciApIHsKCQkkdmlzaXREZWVwZXIgPSBmYWxzZTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gdmlzaXRNaXhpbkRlZmluaXRpb24oICRtaXhpbkRlZmluaXRpb25Ob2RlLCAmJHZpc2l0RGVlcGVyICkgewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdFNlbGVjdG9yKCAkc2VsZWN0b3JOb2RlLCAmJHZpc2l0RGVlcGVyICkgewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoICRydWxlc2V0Tm9kZSApIHsKCQlpZiAoICRydWxlc2V0Tm9kZS0+cm9vdCApIHsKCQkJcmV0dXJuOwoJCX0KCgkJJGFsbEV4dGVuZHMgPSBlbmQoICR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgKTsKCQkkcGF0aHNfbGVuID0gY291bnQoICRydWxlc2V0Tm9kZS0+cGF0aHMgKTsKCgkJLy8gbG9vayBhdCBlYWNoIHNlbGVjdG9yIHBhdGggaW4gdGhlIHJ1bGVzZXQsIGZpbmQgYW55IGV4dGVuZCBtYXRjaGVzIGFuZCB0aGVuIGNvcHksIGZpbmQgYW5kIHJlcGxhY2UKCQlmb3JlYWNoICggJGFsbEV4dGVuZHMgYXMgJGFsbEV4dGVuZCApIHsKCQkJZm9yICggJHBhdGhJbmRleCA9IDA7ICRwYXRoSW5kZXggPCAkcGF0aHNfbGVuOyAkcGF0aEluZGV4KysgKSB7CgoJCQkJLy8gZXh0ZW5kaW5nIGV4dGVuZHMgaGFwcGVucyBpbml0aWFsbHksIGJlZm9yZSB0aGUgbWFpbiBwYXNzCgkJCQlpZiAoIGlzc2V0KCAkcnVsZXNldE5vZGUtPmV4dGVuZE9uRXZlcnlQYXRoICkgJiYgJHJ1bGVzZXROb2RlLT5leHRlbmRPbkV2ZXJ5UGF0aCApIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQkkc2VsZWN0b3JQYXRoID0gJHJ1bGVzZXROb2RlLT5wYXRoc1skcGF0aEluZGV4XTsKCgkJCQlpZiAoIGVuZCggJHNlbGVjdG9yUGF0aCApLT5leHRlbmRMaXN0ICkgewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCSR0aGlzLT5FeHRlbmRNYXRjaCggJHJ1bGVzZXROb2RlLCAkYWxsRXh0ZW5kLCAkc2VsZWN0b3JQYXRoICk7CgoJCQl9CgkJfQoJfQoKCXByaXZhdGUgZnVuY3Rpb24gRXh0ZW5kTWF0Y2goICRydWxlc2V0Tm9kZSwgJGV4dGVuZCwgJHNlbGVjdG9yUGF0aCApIHsKCQkkbWF0Y2hlcyA9ICR0aGlzLT5maW5kTWF0Y2goICRleHRlbmQsICRzZWxlY3RvclBhdGggKTsKCgkJaWYgKCAkbWF0Y2hlcyApIHsKCQkJZm9yZWFjaCAoICRleHRlbmQtPnNlbGZTZWxlY3RvcnMgYXMgJHNlbGZTZWxlY3RvciApIHsKCQkJCSRydWxlc2V0Tm9kZS0+cGF0aHNbXSA9ICR0aGlzLT5leHRlbmRTZWxlY3RvciggJG1hdGNoZXMsICRzZWxlY3RvclBhdGgsICRzZWxmU2VsZWN0b3IgKTsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfRXh0ZW5kICRleHRlbmQKCSAqIEBwYXJhbSBMZXNzX1RyZWVfU2VsZWN0b3JbXSAkaGF5c3RhY2tTZWxlY3RvclBhdGgKCSAqIEByZXR1cm4gZmFsc2V8YXJyYXk8YXJyYXl7aW5kZXg6aW50LGluaXRpYWxDb21iaW5hdG9yOnN0cmluZ30+CgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gZmluZE1hdGNoKCAkZXh0ZW5kLCAkaGF5c3RhY2tTZWxlY3RvclBhdGggKSB7CgkJaWYgKCAhJHRoaXMtPkhhc01hdGNoZXMoICRleHRlbmQsICRoYXlzdGFja1NlbGVjdG9yUGF0aCApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkvLwoJCS8vIGxvb2sgdGhyb3VnaCB0aGUgaGF5c3RhY2sgc2VsZWN0b3IgcGF0aCB0byB0cnkgYW5kIGZpbmQgdGhlIG5lZWRsZSAtIGV4dGVuZC5zZWxlY3RvcgoJCS8vIHJldHVybnMgYW4gYXJyYXkgb2Ygc2VsZWN0b3IgbWF0Y2hlcyB0aGF0IGNhbiB0aGVuIGJlIHJlcGxhY2VkCgkJLy8KCQkkbmVlZGxlRWxlbWVudHMgPSAkZXh0ZW5kLT5zZWxlY3Rvci0+ZWxlbWVudHM7CgkJJHBvdGVudGlhbE1hdGNoZXMgPSBbXTsKCQkkcG90ZW50aWFsTWF0Y2hlc19sZW4gPSAwOwoJCSRwb3RlbnRpYWxNYXRjaCA9IG51bGw7CgkJJG1hdGNoZXMgPSBbXTsKCgkJLy8gbG9vcCB0aHJvdWdoIHRoZSBoYXlzdGFjayBlbGVtZW50cwoJCSRoYXlzdGFja19wYXRoX2xlbiA9IGNvdW50KCAkaGF5c3RhY2tTZWxlY3RvclBhdGggKTsKCQlmb3IgKCAkaGF5c3RhY2tTZWxlY3RvckluZGV4ID0gMDsgJGhheXN0YWNrU2VsZWN0b3JJbmRleCA8ICRoYXlzdGFja19wYXRoX2xlbjsgJGhheXN0YWNrU2VsZWN0b3JJbmRleCsrICkgewoJCQkkaGFja3N0YWNrU2VsZWN0b3IgPSAkaGF5c3RhY2tTZWxlY3RvclBhdGhbJGhheXN0YWNrU2VsZWN0b3JJbmRleF07CgoJCQkkaGF5c3RhY2tfZWxlbWVudHNfbGVuID0gY291bnQoICRoYWNrc3RhY2tTZWxlY3Rvci0+ZWxlbWVudHMgKTsKCQkJZm9yICggJGhhY2tzdGFja0VsZW1lbnRJbmRleCA9IDA7ICRoYWNrc3RhY2tFbGVtZW50SW5kZXggPCAkaGF5c3RhY2tfZWxlbWVudHNfbGVuOyAkaGFja3N0YWNrRWxlbWVudEluZGV4KysgKSB7CgoJCQkJJGhheXN0YWNrRWxlbWVudCA9ICRoYWNrc3RhY2tTZWxlY3Rvci0+ZWxlbWVudHNbJGhhY2tzdGFja0VsZW1lbnRJbmRleF07CgoJCQkJLy8gaWYgd2UgYWxsb3cgZWxlbWVudHMgYmVmb3JlIG91ciBtYXRjaCB3ZSBjYW4gYWRkIGEgcG90ZW50aWFsIG1hdGNoIGV2ZXJ5IHRpbWUuIG90aGVyd2lzZSBvbmx5IGF0IHRoZSBmaXJzdCBlbGVtZW50LgoJCQkJaWYgKCAkZXh0ZW5kLT5hbGxvd0JlZm9yZSB8fCAoICRoYXlzdGFja1NlbGVjdG9ySW5kZXggPT09IDAgJiYgJGhhY2tzdGFja0VsZW1lbnRJbmRleCA9PT0gMCApICkgewoJCQkJCSRwb3RlbnRpYWxNYXRjaGVzW10gPSBbCgkJCQkJCSdwYXRoSW5kZXgnID0+ICRoYXlzdGFja1NlbGVjdG9ySW5kZXgsCgkJCQkJCSdpbmRleCcgPT4gJGhhY2tzdGFja0VsZW1lbnRJbmRleCwKCQkJCQkJJ21hdGNoZWQnID0+IDAsCgkJCQkJCSdpbml0aWFsQ29tYmluYXRvcicgPT4gJGhheXN0YWNrRWxlbWVudC0+Y29tYmluYXRvcgoJCQkJCV07CgkJCQkJJHBvdGVudGlhbE1hdGNoZXNfbGVuKys7CgkJCQl9CgoJCQkJZm9yICggJGkgPSAwOyAkaSA8ICRwb3RlbnRpYWxNYXRjaGVzX2xlbjsgJGkrKyApIHsKCgkJCQkJJHBvdGVudGlhbE1hdGNoID0gJiRwb3RlbnRpYWxNYXRjaGVzWyRpXTsKCQkJCQkkcG90ZW50aWFsTWF0Y2ggPSAkdGhpcy0+UG90ZW50aWFsTWF0Y2goICRwb3RlbnRpYWxNYXRjaCwgJG5lZWRsZUVsZW1lbnRzLCAkaGF5c3RhY2tFbGVtZW50LCAkaGFja3N0YWNrRWxlbWVudEluZGV4ICk7CgoJCQkJCS8vIGlmIHdlIGFyZSBzdGlsbCB2YWxpZCBhbmQgaGF2ZSBmaW5pc2hlZCwgdGVzdCB3aGV0aGVyIHdlIGhhdmUgZWxlbWVudHMgYWZ0ZXIgYW5kIHdoZXRoZXIgdGhlc2UgYXJlIGFsbG93ZWQKCQkJCQlpZiAoICRwb3RlbnRpYWxNYXRjaCAmJiAkcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSA9PT0gJGV4dGVuZC0+c2VsZWN0b3ItPmVsZW1lbnRzX2xlbiApIHsKCQkJCQkJJHBvdGVudGlhbE1hdGNoWydmaW5pc2hlZCddID0gdHJ1ZTsKCgkJCQkJCWlmICggISRleHRlbmQtPmFsbG93QWZ0ZXIgJiYKCQkJCQkJCSggJGhhY2tzdGFja0VsZW1lbnRJbmRleCArIDEgPCAkaGF5c3RhY2tfZWxlbWVudHNfbGVuIHx8ICRoYXlzdGFja1NlbGVjdG9ySW5kZXggKyAxIDwgJGhheXN0YWNrX3BhdGhfbGVuICkKCQkJCQkJKSB7CgkJCQkJCQkkcG90ZW50aWFsTWF0Y2ggPSBudWxsOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQkvLyBpZiBudWxsIHdlIHJlbW92ZSwgaWYgbm90LCB3ZSBhcmUgc3RpbGwgdmFsaWQsIHNvIGVpdGhlciBwdXNoIGFzIGEgdmFsaWQgbWF0Y2ggb3IgY29udGludWUKCQkJCQlpZiAoICRwb3RlbnRpYWxNYXRjaCApIHsKCQkJCQkJaWYgKCAkcG90ZW50aWFsTWF0Y2hbJ2ZpbmlzaGVkJ10gKSB7CgkJCQkJCQkkcG90ZW50aWFsTWF0Y2hbJ2xlbmd0aCddID0gJGV4dGVuZC0+c2VsZWN0b3ItPmVsZW1lbnRzX2xlbjsKCQkJCQkJCSRwb3RlbnRpYWxNYXRjaFsnZW5kUGF0aEluZGV4J10gPSAkaGF5c3RhY2tTZWxlY3RvckluZGV4OwoJCQkJCQkJJHBvdGVudGlhbE1hdGNoWydlbmRQYXRoRWxlbWVudEluZGV4J10gPSAkaGFja3N0YWNrRWxlbWVudEluZGV4ICsgMTsgLy8gaW5kZXggYWZ0ZXIgZW5kIG9mIG1hdGNoCgkJCQkJCQkkcG90ZW50aWFsTWF0Y2hlcyA9IFtdOyAvLyB3ZSBkb24ndCBhbGxvdyBtYXRjaGVzIHRvIG92ZXJsYXAsIHNvIHN0YXJ0IG1hdGNoaW5nIGFnYWluCgkJCQkJCQkkcG90ZW50aWFsTWF0Y2hlc19sZW4gPSAwOwoJCQkJCQkJJG1hdGNoZXNbXSA9ICRwb3RlbnRpYWxNYXRjaDsKCQkJCQkJfQoJCQkJCQljb250aW51ZTsKCQkJCQl9CgoJCQkJCWFycmF5X3NwbGljZSggJHBvdGVudGlhbE1hdGNoZXMsICRpLCAxICk7CgkJCQkJJHBvdGVudGlhbE1hdGNoZXNfbGVuLS07CgkJCQkJJGktLTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuICRtYXRjaGVzOwoJfQoKCS8vIEJlZm9yZSBnb2luZyB0aHJvdWdoIGFsbCB0aGUgbmVzdGVkIGxvb3BzLCBsZXRzIGNoZWNrIHRvIHNlZSBpZiBhIG1hdGNoIGlzIHBvc3NpYmxlCgkvLyBSZWR1Y2VzIEJvb3RzdHJhcCAzLjEgY29tcGlsZSB0aW1lIGZyb20gfjYuNXMgdG8gfjUuNnMKCXByaXZhdGUgZnVuY3Rpb24gSGFzTWF0Y2hlcyggJGV4dGVuZCwgJGhheXN0YWNrU2VsZWN0b3JQYXRoICkgewoJCWlmICggISRleHRlbmQtPnNlbGVjdG9yLT5jYWNoZWFibGUgKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJJGZpcnN0X2VsID0gJGV4dGVuZC0+c2VsZWN0b3ItPl9vZWxlbWVudHNbMF07CgoJCWZvcmVhY2ggKCAkaGF5c3RhY2tTZWxlY3RvclBhdGggYXMgJGhhY2tzdGFja1NlbGVjdG9yICkgewoJCQlpZiAoICEkaGFja3N0YWNrU2VsZWN0b3ItPmNhY2hlYWJsZSApIHsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgoJCQkvLyBPcHRpbWlzYXRpb246IEV4cGxpY2l0IHJlZmVyZW5jZSwgPGh0dHBzOi8vZ2l0aHViLmNvbS93aWtpbWVkaWEvbGVzcy5waHAvcHVsbC8xND4KCQkJaWYgKCBcYXJyYXlfa2V5X2V4aXN0cyggJGZpcnN0X2VsLCAkaGFja3N0YWNrU2VsZWN0b3ItPl9vZWxlbWVudHNfYXNzb2MgKSApIHsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJfQoKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gYXJyYXkgJHBvdGVudGlhbE1hdGNoCgkgKiBAcGFyYW0gTGVzc19UcmVlX0VsZW1lbnRbXSAkbmVlZGxlRWxlbWVudHMKCSAqIEBwYXJhbSBMZXNzX1RyZWVfRWxlbWVudCAkaGF5c3RhY2tFbGVtZW50CgkgKiBAcGFyYW0gaW50ICRoYWNrc3RhY2tFbGVtZW50SW5kZXgKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBQb3RlbnRpYWxNYXRjaCggJHBvdGVudGlhbE1hdGNoLCAkbmVlZGxlRWxlbWVudHMsICRoYXlzdGFja0VsZW1lbnQsICRoYWNrc3RhY2tFbGVtZW50SW5kZXggKSB7CgkJaWYgKCAkcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSA+IDAgKSB7CgoJCQkvLyBzZWxlY3RvcnMgYWRkICIgIiBvbnRvIHRoZSBmaXJzdCBlbGVtZW50LiBXaGVuIHdlIHVzZSAmIGl0IGpvaW5zIHRoZSBzZWxlY3RvcnMgdG9nZXRoZXIsIGJ1dCBpZiB3ZSBkb24ndAoJCQkvLyB0aGVuIGVhY2ggc2VsZWN0b3IgaW4gaGF5c3RhY2tTZWxlY3RvclBhdGggaGFzIGEgc3BhY2UgYmVmb3JlIGl0IGFkZGVkIGluIHRoZSB0b0NTUyBwaGFzZS4gc28gd2UgbmVlZCB0byB3b3JrIG91dAoJCQkvLyB3aGF0IHRoZSByZXN1bHRpbmcgY29tYmluYXRvciB3aWxsIGJlCgkJCSR0YXJnZXRDb21iaW5hdG9yID0gJGhheXN0YWNrRWxlbWVudC0+Y29tYmluYXRvcjsKCQkJaWYgKCAkdGFyZ2V0Q29tYmluYXRvciA9PT0gJycgJiYgJGhhY2tzdGFja0VsZW1lbnRJbmRleCA9PT0gMCApIHsKCQkJCSR0YXJnZXRDb21iaW5hdG9yID0gJyAnOwoJCQl9CgoJCQlpZiAoICRuZWVkbGVFbGVtZW50c1sgJHBvdGVudGlhbE1hdGNoWydtYXRjaGVkJ10gXS0+Y29tYmluYXRvciAhPT0gJHRhcmdldENvbWJpbmF0b3IgKSB7CgkJCQlyZXR1cm4gbnVsbDsKCQkJfQoJCX0KCgkJLy8gaWYgd2UgZG9uJ3QgbWF0Y2gsIG51bGwgb3VyIG1hdGNoIHRvIGluZGljYXRlIGZhaWx1cmUKCQlpZiAoICEkdGhpcy0+aXNFbGVtZW50VmFsdWVzRXF1YWwoICRuZWVkbGVFbGVtZW50c1skcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSBdLT52YWx1ZSwgJGhheXN0YWNrRWxlbWVudC0+dmFsdWUgKSApIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQkkcG90ZW50aWFsTWF0Y2hbJ2ZpbmlzaGVkJ10gPSBmYWxzZTsKCQkkcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSsrOwoKCQlyZXR1cm4gJHBvdGVudGlhbE1hdGNoOwoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZ3xMZXNzX1RyZWVfQXR0cmlidXRlfExlc3NfVHJlZV9EaW1lbnNpb258TGVzc19UcmVlX0tleXdvcmQgJGVsZW1lbnRWYWx1ZTEKCSAqIEBwYXJhbSBzdHJpbmd8TGVzc19UcmVlX0F0dHJpYnV0ZXxMZXNzX1RyZWVfRGltZW5zaW9ufExlc3NfVHJlZV9LZXl3b3JkICRlbGVtZW50VmFsdWUyCgkgKiBAcmV0dXJuIGJvb2wKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBpc0VsZW1lbnRWYWx1ZXNFcXVhbCggJGVsZW1lbnRWYWx1ZTEsICRlbGVtZW50VmFsdWUyICkgewoJCWlmICggJGVsZW1lbnRWYWx1ZTEgPT09ICRlbGVtZW50VmFsdWUyICkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCWlmICggaXNfc3RyaW5nKCAkZWxlbWVudFZhbHVlMSApIHx8IGlzX3N0cmluZyggJGVsZW1lbnRWYWx1ZTIgKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJaWYgKCAkZWxlbWVudFZhbHVlMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9BdHRyaWJ1dGUgKSB7CgkJCXJldHVybiAkdGhpcy0+aXNBdHRyaWJ1dGVWYWx1ZXNFcXVhbCggJGVsZW1lbnRWYWx1ZTEsICRlbGVtZW50VmFsdWUyICk7CgkJfQoKCQkkZWxlbWVudFZhbHVlMSA9ICRlbGVtZW50VmFsdWUxLT52YWx1ZTsKCQlpZiAoICRlbGVtZW50VmFsdWUxIGluc3RhbmNlb2YgTGVzc19UcmVlX1NlbGVjdG9yICkgewoJCQlyZXR1cm4gJHRoaXMtPmlzU2VsZWN0b3JWYWx1ZXNFcXVhbCggJGVsZW1lbnRWYWx1ZTEsICRlbGVtZW50VmFsdWUyICk7CgkJfQoKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlX1NlbGVjdG9yICRlbGVtZW50VmFsdWUxCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gaXNTZWxlY3RvclZhbHVlc0VxdWFsKCAkZWxlbWVudFZhbHVlMSwgJGVsZW1lbnRWYWx1ZTIgKSB7CgkJJGVsZW1lbnRWYWx1ZTIgPSAkZWxlbWVudFZhbHVlMi0+dmFsdWU7CgkJaWYgKCAhKCAkZWxlbWVudFZhbHVlMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9TZWxlY3RvciApIHx8ICRlbGVtZW50VmFsdWUxLT5lbGVtZW50c19sZW4gIT09ICRlbGVtZW50VmFsdWUyLT5lbGVtZW50c19sZW4gKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCWZvciAoICRpID0gMDsgJGkgPCAkZWxlbWVudFZhbHVlMS0+ZWxlbWVudHNfbGVuOyAkaSsrICkgewoKCQkJaWYgKCAkZWxlbWVudFZhbHVlMS0+ZWxlbWVudHNbJGldLT5jb21iaW5hdG9yICE9PSAkZWxlbWVudFZhbHVlMi0+ZWxlbWVudHNbJGldLT5jb21iaW5hdG9yICkgewoJCQkJaWYgKCAkaSAhPT0gMCB8fCAoICRlbGVtZW50VmFsdWUxLT5lbGVtZW50c1skaV0tPmNvbWJpbmF0b3IgfHwgJyAnICkgIT09ICggJGVsZW1lbnRWYWx1ZTItPmVsZW1lbnRzWyRpXS0+Y29tYmluYXRvciB8fCAnICcgKSApIHsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCWlmICggISR0aGlzLT5pc0VsZW1lbnRWYWx1ZXNFcXVhbCggJGVsZW1lbnRWYWx1ZTEtPmVsZW1lbnRzWyRpXS0+dmFsdWUsICRlbGVtZW50VmFsdWUyLT5lbGVtZW50c1skaV0tPnZhbHVlICkgKSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJCXJldHVybiB0cnVlOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9BdHRyaWJ1dGUgJGVsZW1lbnRWYWx1ZTEKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBpc0F0dHJpYnV0ZVZhbHVlc0VxdWFsKCAkZWxlbWVudFZhbHVlMSwgJGVsZW1lbnRWYWx1ZTIgKSB7CgkJaWYgKCAkZWxlbWVudFZhbHVlMS0+b3AgIT09ICRlbGVtZW50VmFsdWUyLT5vcCB8fCAkZWxlbWVudFZhbHVlMS0+a2V5ICE9PSAkZWxlbWVudFZhbHVlMi0+a2V5ICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoICEkZWxlbWVudFZhbHVlMS0+dmFsdWUgfHwgISRlbGVtZW50VmFsdWUyLT52YWx1ZSApIHsKCQkJaWYgKCAkZWxlbWVudFZhbHVlMS0+dmFsdWUgfHwgJGVsZW1lbnRWYWx1ZTItPnZhbHVlICkgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJJGVsZW1lbnRWYWx1ZTEgPSAkZWxlbWVudFZhbHVlMS0+dmFsdWU7CgoJCWlmICggJGVsZW1lbnRWYWx1ZTEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUXVvdGVkICkgewoJCQkkZWxlbWVudFZhbHVlMSA9ICRlbGVtZW50VmFsdWUxLT52YWx1ZTsKCQl9CgoJCSRlbGVtZW50VmFsdWUyID0gJGVsZW1lbnRWYWx1ZTItPnZhbHVlOwoKCQlpZiAoICRlbGVtZW50VmFsdWUyIGluc3RhbmNlb2YgTGVzc19UcmVlX1F1b3RlZCApIHsKCQkJJGVsZW1lbnRWYWx1ZTIgPSAkZWxlbWVudFZhbHVlMi0+dmFsdWU7CgkJfQoKCQlyZXR1cm4gJGVsZW1lbnRWYWx1ZTEgPT09ICRlbGVtZW50VmFsdWUyOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gZXh0ZW5kU2VsZWN0b3IoICRtYXRjaGVzLCAkc2VsZWN0b3JQYXRoLCAkcmVwbGFjZW1lbnRTZWxlY3RvciApIHsKCQkvLyBmb3IgYSBzZXQgb2YgbWF0Y2hlcywgcmVwbGFjZSBlYWNoIG1hdGNoIHdpdGggdGhlIHJlcGxhY2VtZW50IHNlbGVjdG9yCgoJCSRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXggPSAwOwoJCSRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gMDsKCQkkcGF0aCA9IFtdOwoJCSRzZWxlY3RvclBhdGhfbGVuID0gY291bnQoICRzZWxlY3RvclBhdGggKTsKCgkJZm9yICggJG1hdGNoSW5kZXggPSAwLCAkbWF0Y2hlc19sZW4gPSBjb3VudCggJG1hdGNoZXMgKTsgJG1hdGNoSW5kZXggPCAkbWF0Y2hlc19sZW47ICRtYXRjaEluZGV4KysgKSB7CgoJCQkkbWF0Y2ggPSAkbWF0Y2hlc1skbWF0Y2hJbmRleF07CgkJCSRzZWxlY3RvciA9ICRzZWxlY3RvclBhdGhbICRtYXRjaFsncGF0aEluZGV4J10gXTsKCgkJCSRmaXJzdEVsZW1lbnQgPSBuZXcgTGVzc19UcmVlX0VsZW1lbnQoCgkJCQkkbWF0Y2hbJ2luaXRpYWxDb21iaW5hdG9yJ10sCgkJCQkkcmVwbGFjZW1lbnRTZWxlY3Rvci0+ZWxlbWVudHNbMF0tPnZhbHVlLAoJCQkJJHJlcGxhY2VtZW50U2VsZWN0b3ItPmVsZW1lbnRzWzBdLT5pbmRleCwKCQkJCSRyZXBsYWNlbWVudFNlbGVjdG9yLT5lbGVtZW50c1swXS0+Y3VycmVudEZpbGVJbmZvCgkJCSk7CgoJCQlpZiAoICRtYXRjaFsncGF0aEluZGV4J10gPiAkY3VycmVudFNlbGVjdG9yUGF0aEluZGV4ICYmICRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID4gMCApIHsKCQkJCSRsYXN0X3BhdGggPSBlbmQoICRwYXRoICk7CgkJCQkkbGFzdF9wYXRoLT5lbGVtZW50cyA9IGFycmF5X21lcmdlKAoJCQkJCSRsYXN0X3BhdGgtPmVsZW1lbnRzLAoJCQkJCWFycmF5X3NsaWNlKCAkc2VsZWN0b3JQYXRoWyRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXhdLT5lbGVtZW50cywgJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggKQoJCQkJKTsKCQkJCSRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gMDsKCQkJCSRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXgrKzsKCQkJfQoKCQkJJG5ld0VsZW1lbnRzID0gYXJyYXlfbWVyZ2UoCgkJCQlhcnJheV9zbGljZSgKCQkJCQkkc2VsZWN0b3ItPmVsZW1lbnRzLAoJCQkJCSRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4LAoJCQkJCS8vIGxhc3QgcGFyYW1ldGVyIG9mIGFycmF5X3NsaWNlIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBsYXN0IHBhcmFtZXRlciBvZiBqYXZhc2NyaXB0J3Mgc2xpY2UKCQkJCQkkbWF0Y2hbJ2luZGV4J10gLSAkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleAoJCQkJKSwKCQkJCVsgJGZpcnN0RWxlbWVudCBdLAoJCQkJYXJyYXlfc2xpY2UoICRyZXBsYWNlbWVudFNlbGVjdG9yLT5lbGVtZW50cywgMSApCgkJCSk7CgoJCQlpZiAoICRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXggPT09ICRtYXRjaFsncGF0aEluZGV4J10gJiYgJG1hdGNoSW5kZXggPiAwICkgewoJCQkJJGxhc3Rfa2V5ID0gY291bnQoICRwYXRoICkgLSAxOwoJCQkJJHBhdGhbJGxhc3Rfa2V5XS0+ZWxlbWVudHMgPSBhcnJheV9tZXJnZSggJHBhdGhbJGxhc3Rfa2V5XS0+ZWxlbWVudHMsICRuZXdFbGVtZW50cyApOwoJCQl9IGVsc2UgewoJCQkJJHBhdGggPSBhcnJheV9tZXJnZSggJHBhdGgsIGFycmF5X3NsaWNlKCAkc2VsZWN0b3JQYXRoLCAkY3VycmVudFNlbGVjdG9yUGF0aEluZGV4LCAkbWF0Y2hbJ3BhdGhJbmRleCddICkgKTsKCQkJCSRwYXRoW10gPSBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCAkbmV3RWxlbWVudHMgKTsKCQkJfQoKCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9ICRtYXRjaFsnZW5kUGF0aEluZGV4J107CgkJCSRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gJG1hdGNoWydlbmRQYXRoRWxlbWVudEluZGV4J107CgkJCWlmICggJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPj0gY291bnQoICRzZWxlY3RvclBhdGhbJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleF0tPmVsZW1lbnRzICkgKSB7CgkJCQkkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCA9IDA7CgkJCQkkY3VycmVudFNlbGVjdG9yUGF0aEluZGV4Kys7CgkJCX0KCQl9CgoJCWlmICggJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA8ICRzZWxlY3RvclBhdGhfbGVuICYmICRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID4gMCApIHsKCQkJJGxhc3RfcGF0aCA9IGVuZCggJHBhdGggKTsKCQkJJGxhc3RfcGF0aC0+ZWxlbWVudHMgPSBhcnJheV9tZXJnZSgKCQkJCSRsYXN0X3BhdGgtPmVsZW1lbnRzLAoJCQkJYXJyYXlfc2xpY2UoICRzZWxlY3RvclBhdGhbJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleF0tPmVsZW1lbnRzLCAkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCApCgkJCSk7CgkJCSRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXgrKzsKCQl9CgoJCSRzbGljZV9sZW4gPSAkc2VsZWN0b3JQYXRoX2xlbiAtICRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXg7CgkJJHBhdGggPSBhcnJheV9tZXJnZSggJHBhdGgsIGFycmF5X3NsaWNlKCAkc2VsZWN0b3JQYXRoLCAkY3VycmVudFNlbGVjdG9yUGF0aEluZGV4LCAkc2xpY2VfbGVuICkgKTsKCgkJcmV0dXJuICRwYXRoOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdE1lZGlhKCAkbWVkaWFOb2RlICkgewoJCSRuZXdBbGxFeHRlbmRzID0gYXJyYXlfbWVyZ2UoICRtZWRpYU5vZGUtPmFsbEV4dGVuZHMsIGVuZCggJHRoaXMtPmFsbEV4dGVuZHNTdGFjayApICk7CgkJJHRoaXMtPmFsbEV4dGVuZHNTdGFja1tdID0gJHRoaXMtPmRvRXh0ZW5kQ2hhaW5pbmcoICRuZXdBbGxFeHRlbmRzLCAkbWVkaWFOb2RlLT5hbGxFeHRlbmRzICk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0TWVkaWFPdXQoKSB7CgkJYXJyYXlfcG9wKCAkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrICk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0QXRSdWxlKCAkYXRSdWxlTm9kZSApIHsKCQkkbmV3QWxsRXh0ZW5kcyA9IGFycmF5X21lcmdlKCAkYXRSdWxlTm9kZS0+YWxsRXh0ZW5kcywgZW5kKCAkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrICkgKTsKCQkkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrW10gPSAkdGhpcy0+ZG9FeHRlbmRDaGFpbmluZyggJG5ld0FsbEV4dGVuZHMsICRhdFJ1bGVOb2RlLT5hbGxFeHRlbmRzICk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0QXRSdWxlT3V0KCkgewoJCWFycmF5X3BvcCggJHRoaXMtPmFsbEV4dGVuZHNTdGFjayApOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/Visitor/toCSS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3JfdG9DU1MgZXh0ZW5kcyBMZXNzX1Zpc2l0b3JSZXBsYWNpbmcgewoKCS8qKiBAdmFyIGJvb2x8bnVsbCAqLwoJcHJpdmF0ZSAkY2hhcnNldDsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgpOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBydW4oICRyb290ICkgewoJCXJldHVybiAkdGhpcy0+dmlzaXRPYmooICRyb290ICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0RGVjbGFyYXRpb24oICRkZWNsTm9kZSApIHsKCQlpZiAoICRkZWNsTm9kZS0+dmFyaWFibGUgKSB7CgkJCXJldHVybiBbXTsKCQl9CgkJcmV0dXJuICRkZWNsTm9kZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRNaXhpbkRlZmluaXRpb24oICRtaXhpbk5vZGUgKSB7CgkJLy8gbWl4aW4gZGVmaW5pdGlvbnMgZG8gbm90IGdldCBldmFsJ2QgLSB0aGlzIG1lYW5zIHRoZXkga2VlcCBzdGF0ZQoJCS8vIHNvIHdlIGhhdmUgdG8gY2xlYXIgdGhhdCBzdGF0ZSBoZXJlIHNvIGl0IGlzbid0IHVzZWQgaWYgdG9DU1MgaXMgY2FsbGVkIHR3aWNlCgkJJG1peGluTm9kZS0+ZnJhbWVzID0gW107CgkJcmV0dXJuIFtdOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEV4dGVuZCgpIHsKCQlyZXR1cm4gW107Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29tbWVudCggJGNvbW1lbnROb2RlICkgewoJCWlmICggJGNvbW1lbnROb2RlLT5pc1NpbGVudCgpICkgewoJCQlyZXR1cm4gW107CgkJfQoJCXJldHVybiAkY29tbWVudE5vZGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0TWVkaWEoICRtZWRpYU5vZGUsICYkdmlzaXREZWVwZXIgKSB7CgkJJG1lZGlhTm9kZS0+YWNjZXB0KCAkdGhpcyApOwoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoKCQlpZiAoICEkbWVkaWFOb2RlLT5ydWxlcyApIHsKCQkJcmV0dXJuIFtdOwoJCX0KCQlyZXR1cm4gJG1lZGlhTm9kZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRBdFJ1bGUoICRhdFJ1bGVOb2RlLCAmJHZpc2l0RGVlcGVyICkgewoJCWlmICggJGF0UnVsZU5vZGUtPm5hbWUgPT09ICdAY2hhcnNldCcgKSB7CgkJCWlmICggISRhdFJ1bGVOb2RlLT5nZXRJc1JlZmVyZW5jZWQoKSApIHsKCQkJCXJldHVybjsKCQkJfQoJCQlpZiAoIGlzc2V0KCAkdGhpcy0+Y2hhcnNldCApICYmICR0aGlzLT5jaGFyc2V0ICkgewoJCQkJLy8gTk9URTogU2tpcCBkZWJ1Z0luZm8gaGFuZGxpbmcgKG5vdCBpbXBsZW1lbnRlZCkKCQkJCXJldHVybjsKCQkJfQoJCQkkdGhpcy0+Y2hhcnNldCA9IHRydWU7CgkJfQoKCQlpZiAoICRhdFJ1bGVOb2RlLT5ydWxlcyApIHsKCQkJc2VsZjo6X21lcmdlUnVsZXMoICRhdFJ1bGVOb2RlLT5ydWxlc1swXS0+cnVsZXMgKTsKCQkJLy8gcHJvY2VzcyBjaGlsZHMKCQkJJGF0UnVsZU5vZGUtPmFjY2VwdCggJHRoaXMgKTsKCQkJJHZpc2l0RGVlcGVyID0gZmFsc2U7CgoJCQkvLyB0aGUgZGlyZWN0aXZlIHdhcyBkaXJlY3RseSByZWZlcmVuY2VkIGFuZCB0aGVyZWZvcmUgbmVlZHMgdG8gYmUgc2hvd24gaW4gdGhlIG91dHB1dAoJCQlpZiAoICRhdFJ1bGVOb2RlLT5nZXRJc1JlZmVyZW5jZWQoKSApIHsKCQkJCXJldHVybiAkYXRSdWxlTm9kZTsKCQkJfQoKCQkJaWYgKCAhJGF0UnVsZU5vZGUtPnJ1bGVzICkgewoJCQkJcmV0dXJuOwoJCQl9CgkJCWlmICggJHRoaXMtPmhhc1Zpc2libGVDaGlsZCggJGF0UnVsZU5vZGUgKSApIHsKCQkJCS8vIG1hcmtpbmcgYXMgcmVmZXJlbmNlZCBpbiBjYXNlIHRoZSBkaXJlY3RpdmUgaXMgc3RvcmVkIGluc2lkZSBhbm90aGVyIGRpcmVjdGl2ZQoJCQkJJGF0UnVsZU5vZGUtPm1hcmtSZWZlcmVuY2VkKCk7CgkJCQlyZXR1cm4gJGF0UnVsZU5vZGU7CgkJCX0KCQkJCS8vIFRoZSBkaXJlY3RpdmUgd2FzIG5vdCBkaXJlY3RseSByZWZlcmVuY2VkIGFuZCBkb2VzIG5vdCBjb250YWluIGFueXRoaW5nIHRoYXQKCQkJCS8vd2FzIHJlZmVyZW5jZWQuIFRoZXJlZm9yZSBpdCBtdXN0IG5vdCBiZSBzaG93biBpbiBvdXRwdXQuCgkJCQlyZXR1cm47CgkJfSBlbHNlIHsKCQkJaWYgKCAhJGF0UnVsZU5vZGUtPmdldElzUmVmZXJlbmNlZCgpICkgewoJCQkJcmV0dXJuOwoJCQl9CgkJfQoKCQlyZXR1cm4gJGF0UnVsZU5vZGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNoZWNrUHJvcGVydGllc0luUm9vdCggJHJ1bGVzZXROb2RlICkgewoJCWlmICggISRydWxlc2V0Tm9kZS0+Zmlyc3RSb290ICkgewoJCQlyZXR1cm47CgkJfQoKCQlmb3JlYWNoICggJHJ1bGVzZXROb2RlLT5ydWxlcyBhcyAkcnVsZU5vZGUgKSB7CgkJCWlmICggJHJ1bGVOb2RlIGluc3RhbmNlb2YgTGVzc19UcmVlX0RlY2xhcmF0aW9uICYmICEkcnVsZU5vZGUtPnZhcmlhYmxlICkgewoJCQkJJG1zZyA9ICJwcm9wZXJ0aWVzIG11c3QgYmUgaW5zaWRlIHNlbGVjdG9yIGJsb2NrcywgdGhleSBjYW5ub3QgYmUgaW4gdGhlIHJvb3QuIEluZGV4ICIgLiAkcnVsZU5vZGUtPmluZGV4IC4KCQkJCQkoICRydWxlTm9kZS0+Y3VycmVudEZpbGVJbmZvID8gJyBGaWxlbmFtZTogJyAuICRydWxlTm9kZS0+Y3VycmVudEZpbGVJbmZvWydmaWxlbmFtZSddIDogbnVsbCApOwoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAkbXNnICk7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZXNldCggJHJ1bGVzZXROb2RlLCAmJHZpc2l0RGVlcGVyICkgewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoKCQkkdGhpcy0+Y2hlY2tQcm9wZXJ0aWVzSW5Sb290KCAkcnVsZXNldE5vZGUgKTsKCgkJaWYgKCAkcnVsZXNldE5vZGUtPnJvb3QgKSB7CgkJCXJldHVybiAkdGhpcy0+dmlzaXRSdWxlc2V0Um9vdCggJHJ1bGVzZXROb2RlICk7CgkJfQoKCQkkcnVsZXNldHMgPSBbXTsKCQkkcnVsZXNldE5vZGUtPnBhdGhzID0gJHRoaXMtPnZpc2l0UnVsZXNldFBhdGhzKCAkcnVsZXNldE5vZGUgKTsKCgkJLy8gQ29tcGlsZSBydWxlcyBhbmQgcnVsZXNldHMKCQkkbm9kZVJ1bGVDbnQgPSAkcnVsZXNldE5vZGUtPnJ1bGVzID8gY291bnQoICRydWxlc2V0Tm9kZS0+cnVsZXMgKSA6IDA7CgkJZm9yICggJGkgPSAwOyAkaSA8ICRub2RlUnVsZUNudDsgKSB7CgkJCSRydWxlID0gJHJ1bGVzZXROb2RlLT5ydWxlc1skaV07CgoJCQlpZiAoIHByb3BlcnR5X2V4aXN0cyggJHJ1bGUsICdydWxlcycgKSApIHsKCQkJCS8vIHZpc2l0IGJlY2F1c2Ugd2UgYXJlIG1vdmluZyB0aGVtIG91dCBmcm9tIGJlaW5nIGEgY2hpbGQKCQkJCSRydWxlc2V0c1tdID0gJHRoaXMtPnZpc2l0T2JqKCAkcnVsZSApOwoJCQkJYXJyYXlfc3BsaWNlKCAkcnVsZXNldE5vZGUtPnJ1bGVzLCAkaSwgMSApOwoJCQkJJG5vZGVSdWxlQ250LS07CgkJCQljb250aW51ZTsKCQkJfQoJCQkkaSsrOwoJCX0KCgkJLy8gYWNjZXB0IHRoZSB2aXNpdG9yIHRvIHJlbW92ZSBydWxlcyBhbmQgcmVmYWN0b3IgaXRzZWxmCgkJLy8gdGhlbiB3ZSBjYW4gZGVjaWRlIG5vdyB3aGV0aGVyIHdlIHdhbnQgaXQgb3Igbm90CgkJaWYgKCAkbm9kZVJ1bGVDbnQgPiAwICkgewoJCQkkcnVsZXNldE5vZGUtPmFjY2VwdCggJHRoaXMgKTsKCgkJCWlmICggJHJ1bGVzZXROb2RlLT5ydWxlcyApIHsKCgkJCQlpZiAoIGNvdW50KCAkcnVsZXNldE5vZGUtPnJ1bGVzICkgPiAxICkgewoJCQkJCXNlbGY6Ol9tZXJnZVJ1bGVzKCAkcnVsZXNldE5vZGUtPnJ1bGVzICk7CgkJCQkJJHRoaXMtPl9yZW1vdmVEdXBsaWNhdGVSdWxlcyggJHJ1bGVzZXROb2RlLT5ydWxlcyApOwoJCQkJfQoKCQkJCS8vIG5vdyBkZWNpZGUgd2hldGhlciB3ZSBrZWVwIHRoZSBydWxlc2V0CgkJCQlpZiAoICRydWxlc2V0Tm9kZS0+cGF0aHMgKSB7CgkJCQkJLy8gYXJyYXlfdW5zaGlmdCgkcnVsZXNldHMsICRydWxlc2V0Tm9kZSk7CgkJCQkJYXJyYXlfc3BsaWNlKCAkcnVsZXNldHMsIDAsIDAsIFsgJHJ1bGVzZXROb2RlIF0gKTsKCQkJCX0KCQkJfQoKCQl9CgoJCWlmICggY291bnQoICRydWxlc2V0cyApID09PSAxICkgewoJCQlyZXR1cm4gJHJ1bGVzZXRzWzBdOwoJCX0KCQlyZXR1cm4gJHJ1bGVzZXRzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEFub255bW91cyggJGFub255bW91c05vZGUgKSB7CgkJaWYgKCAhJGFub255bW91c05vZGUtPmdldElzUmVmZXJlbmNlZCgpICkgewoJCQlyZXR1cm47CgkJfQoKCQkkYW5vbnltb3VzTm9kZS0+YWNjZXB0KCAkdGhpcyApOwoJCXJldHVybiAkYW5vbnltb3VzTm9kZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRJbXBvcnQoICRpbXBvcnROb2RlICkgewoJCWlmICggaXNzZXQoICRpbXBvcnROb2RlLT5wYXRoLT5jdXJyZW50RmlsZUluZm9bInJlZmVyZW5jZSJdICkgJiYgJGltcG9ydE5vZGUtPmNzcyApIHsKCQkJcmV0dXJuOwoJCX0KCQlyZXR1cm4gJGltcG9ydE5vZGU7Cgl9CgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZpc2l0aVJ1bGVzZXQKCSAqCgkgKiByZXR1cm4gYXJyYXl8TGVzc19UcmVlX1J1bGVzZXQKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiB2aXNpdFJ1bGVzZXRSb290KCAkcnVsZXNldE5vZGUgKSB7CgkJJHJ1bGVzZXROb2RlLT5hY2NlcHQoICR0aGlzICk7CgkJaWYgKCAkcnVsZXNldE5vZGUtPmZpcnN0Um9vdCB8fCAkcnVsZXNldE5vZGUtPnJ1bGVzICkgewoJCQlyZXR1cm4gJHJ1bGVzZXROb2RlOwoJCX0KCQlyZXR1cm4gW107Cgl9CgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZpc2l0UnVsZXNldCgpCgkgKgoJICogQHJldHVybiBhcnJheQoJICovCglwcml2YXRlIGZ1bmN0aW9uIHZpc2l0UnVsZXNldFBhdGhzKCAkcnVsZXNldE5vZGUgKSB7CgkJJHBhdGhzID0gW107CgkJZm9yZWFjaCAoICRydWxlc2V0Tm9kZS0+cGF0aHMgYXMgJHAgKSB7CgkJCWlmICggJHBbMF0tPmVsZW1lbnRzWzBdLT5jb21iaW5hdG9yID09PSAnICcgKSB7CgkJCQkkcFswXS0+ZWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPSAnJzsKCQkJfQoKCQkJZm9yZWFjaCAoICRwIGFzICRwaSApIHsKCQkJCWlmICggJHBpLT5nZXRJc1JlZmVyZW5jZWQoKSAmJiAkcGktPmdldElzT3V0cHV0KCkgKSB7CgkJCQkJJHBhdGhzW10gPSAkcDsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuICRwYXRoczsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gX3JlbW92ZUR1cGxpY2F0ZVJ1bGVzKCAmJHJ1bGVzICkgewoJCS8vIHJlbW92ZSBkdXBsaWNhdGVzCgkJJHJ1bGVDYWNoZSA9IFtdOwoJCWZvciAoICRpID0gY291bnQoICRydWxlcyApIC0gMTsgJGkgPj0gMDsgJGktLSApIHsKCQkJJHJ1bGUgPSAkcnVsZXNbJGldOwoJCQlpZiAoICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX0RlY2xhcmF0aW9uIHx8ICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX05hbWVWYWx1ZSApIHsKCgkJCQlpZiAoICFpc3NldCggJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0gKSApIHsKCQkJCQkkcnVsZUNhY2hlWyRydWxlLT5uYW1lXSA9ICRydWxlOwoJCQkJfSBlbHNlIHsKCQkJCQkkcnVsZUxpc3QgPSYgJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV07CgoJCQkJCWlmICggJHJ1bGVMaXN0IGluc3RhbmNlb2YgTGVzc19UcmVlX0RlY2xhcmF0aW9uIHx8ICRydWxlTGlzdCBpbnN0YW5jZW9mIExlc3NfVHJlZV9OYW1lVmFsdWUgKSB7CgkJCQkJCSRydWxlTGlzdCA9ICRydWxlQ2FjaGVbJHJ1bGUtPm5hbWVdID0gWyAkcnVsZUNhY2hlWyRydWxlLT5uYW1lXS0+dG9DU1MoKSBdOwoJCQkJCX0KCgkJCQkJJHJ1bGVDU1MgPSAkcnVsZS0+dG9DU1MoKTsKCQkJCQlpZiAoIGluX2FycmF5KCAkcnVsZUNTUywgJHJ1bGVMaXN0ICkgKSB7CgkJCQkJCWFycmF5X3NwbGljZSggJHJ1bGVzLCAkaSwgMSApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRydWxlTGlzdFtdID0gJHJ1bGVDU1M7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gX21lcmdlUnVsZXMoICYkcnVsZXMgKSB7CgkJJGdyb3VwcyA9IFtdOwoKCQkvLyBvYmooJHJ1bGVzKTsKCgkJJHJ1bGVzX2xlbiA9IGNvdW50KCAkcnVsZXMgKTsKCQlmb3IgKCAkaSA9IDA7ICRpIDwgJHJ1bGVzX2xlbjsgJGkrKyApIHsKCQkJJHJ1bGUgPSAkcnVsZXNbJGldOwoKCQkJaWYgKCAoICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX0RlY2xhcmF0aW9uICkgJiYgJHJ1bGUtPm1lcmdlICkgewoKCQkJCSRrZXkgPSAkcnVsZS0+bmFtZTsKCQkJCWlmICggJHJ1bGUtPmltcG9ydGFudCApIHsKCQkJCQkka2V5IC49ICcsISc7CgkJCQl9CgoJCQkJaWYgKCAhaXNzZXQoICRncm91cHNbJGtleV0gKSApIHsKCQkJCQkkZ3JvdXBzWyRrZXldID0gW107CgkJCQl9IGVsc2UgewoJCQkJCWFycmF5X3NwbGljZSggJHJ1bGVzLCAkaS0tLCAxICk7CgkJCQkJJHJ1bGVzX2xlbi0tOwoJCQkJfQoKCQkJCSRncm91cHNbJGtleV1bXSA9ICRydWxlOwoJCQl9CgkJfQoKCQlmb3JlYWNoICggJGdyb3VwcyBhcyAkcGFydHMgKSB7CgoJCQlpZiAoIGNvdW50KCAkcGFydHMgKSA+IDEgKSB7CgkJCQkkcnVsZSA9ICRwYXJ0c1swXTsKCQkJCSRzcGFjZWRHcm91cHMgPSBbXTsKCQkJCSRsYXN0U3BhY2VkR3JvdXAgPSBbXTsKCQkJCSRwYXJ0c19tYXBwZWQgPSBbXTsKCQkJCWZvcmVhY2ggKCAkcGFydHMgYXMgJHAgKSB7CgkJCQkJaWYgKCAkcC0+bWVyZ2UgPT09ICcrJyApIHsKCQkJCQkJaWYgKCAkbGFzdFNwYWNlZEdyb3VwICkgewoJCQkJCQkJJHNwYWNlZEdyb3Vwc1tdID0gc2VsZjo6dG9FeHByZXNzaW9uKCAkbGFzdFNwYWNlZEdyb3VwICk7CgkJCQkJCX0KCQkJCQkJJGxhc3RTcGFjZWRHcm91cCA9IFtdOwoJCQkJCX0KCQkJCQkkbGFzdFNwYWNlZEdyb3VwW10gPSAkcDsKCQkJCX0KCgkJCQkkc3BhY2VkR3JvdXBzW10gPSBzZWxmOjp0b0V4cHJlc3Npb24oICRsYXN0U3BhY2VkR3JvdXAgKTsKCQkJCSRydWxlLT52YWx1ZSA9IHNlbGY6OnRvVmFsdWUoICRzcGFjZWRHcm91cHMgKTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvRXhwcmVzc2lvbiggJHZhbHVlcyApIHsKCQkkbWFwcGVkID0gW107CgkJZm9yZWFjaCAoICR2YWx1ZXMgYXMgJHAgKSB7CgkJCSRtYXBwZWRbXSA9ICRwLT52YWx1ZTsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRXhwcmVzc2lvbiggJG1hcHBlZCApOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdG9WYWx1ZSggJHZhbHVlcyApIHsKCQkvLyByZXR1cm4gbmV3IExlc3NfVHJlZV9WYWx1ZSgkdmFsdWVzKTsgPz8KCgkJJG1hcHBlZCA9IFtdOwoJCWZvcmVhY2ggKCAkdmFsdWVzIGFzICRwICkgewoJCQkkbWFwcGVkW10gPSAkcDsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVmFsdWUoICRtYXBwZWQgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaGFzVmlzaWJsZUNoaWxkKCAkYXRSdWxlTm9kZSApIHsKCQkvLyBwcmVwYXJlIGxpc3Qgb2YgY2hpbGRzCgkJJHJ1bGUgPSAkYm9keVJ1bGVzID0gJGF0UnVsZU5vZGUtPnJ1bGVzOwoJCS8vIGlmIHRoZXJlIGlzIG9ubHkgb25lIG5lc3RlZCBydWxlc2V0IGFuZCB0aGF0IG9uZSBoYXMgbm8gcGF0aCwgdGhlbiBpdCBpcwoJCS8vanVzdCBmYWtlIHJ1bGVzZXQgdGhhdCBnb3Qgbm90IHJlcGxhY2VkIGFuZCB3ZSBuZWVkIHRvIGxvb2sgaW5zaWRlIGl0IHRvCgkJLy9nZXQgcmVhbCBjaGlsZHMKCQlpZiAoIGNvdW50KCAkYm9keVJ1bGVzICkgPT09IDEgJiYgKCAhJGJvZHlSdWxlc1swXS0+cGF0aHMgfHwgY291bnQoICRib2R5UnVsZXNbMF0tPnBhdGhzICkgPT09IDAgKSApIHsKCQkJJGJvZHlSdWxlcyA9ICRib2R5UnVsZXNbMF0tPnJ1bGVzOwoJCX0KCQlmb3JlYWNoICggJGJvZHlSdWxlcyBhcyAkcnVsZSApIHsKCQkJaWYgKCBtZXRob2RfZXhpc3RzKCAkcnVsZSwgJ2dldElzUmVmZXJlbmNlZCcgKSAmJiAkcnVsZS0+Z2V0SXNSZWZlcmVuY2VkKCkgKSB7CgkJCQkvLyB0aGUgZGlyZWN0aXZlIGNvbnRhaW5zIHNvbWV0aGluZyB0aGF0IHdhcyByZWZlcmVuY2VkIChsaWtlbHkgYnkgZXh0ZW5kKQoJCQkJLy90aGVyZWZvcmUgaXQgbmVlZHMgdG8gYmUgc2hvd24gaW4gb3V0cHV0IHRvbwoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/lib/Less/VisitorReplacing.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBwcml2YXRlCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3JSZXBsYWNpbmcgZXh0ZW5kcyBMZXNzX1Zpc2l0b3IgewoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdEFycmF5KCAmJG5vZGVzICkgewoJCSRuZXdOb2RlcyA9IFtdOwoJCWZvcmVhY2ggKCAkbm9kZXMgYXMgJG5vZGUgKSB7CgkJCSRldmFsZCA9ICR0aGlzLT52aXNpdE9iaiggJG5vZGUgKTsKCQkJaWYgKCAkZXZhbGQgKSB7CgkJCQlpZiAoIGlzX2FycmF5KCAkZXZhbGQgKSApIHsKCQkJCQlzZWxmOjpmbGF0dGVuKCAkZXZhbGQsICRuZXdOb2RlcyApOwoJCQkJfSBlbHNlIHsKCQkJCQkkbmV3Tm9kZXNbXSA9ICRldmFsZDsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gJG5ld05vZGVzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmbGF0dGVuKCAkYXJyLCAmJG91dCApIHsKCQlmb3JlYWNoICggJGFyciBhcyAkaXRlbSApIHsKCQkJaWYgKCAhaXNfYXJyYXkoICRpdGVtICkgKSB7CgkJCQkkb3V0W10gPSAkaXRlbTsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQlmb3JlYWNoICggJGl0ZW0gYXMgJG5lc3RlZEl0ZW0gKSB7CgkJCQlpZiAoIGlzX2FycmF5KCAkbmVzdGVkSXRlbSApICkgewoJCQkJCXNlbGY6OmZsYXR0ZW4oICRuZXN0ZWRJdGVtLCAkb3V0ICk7CgkJCQl9IGVsc2UgewoJCQkJCSRvdXRbXSA9ICRuZXN0ZWRJdGVtOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gJG91dDsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLwoKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCgogICAxLiBEZWZpbml0aW9ucy4KCiAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCiAgICAgIGFuZCBkaXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlzIGRvY3VtZW50LgoKICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKICAgICAgdGhlIGNvcHlyaWdodCBvd25lciB0aGF0IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAogICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29tbW9uCiAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sCiAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQogICAgICBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvcgogICAgICBvdGhlcndpc2UsIG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUKICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KCiAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KCiAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVhbiB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAogICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCiAgICAgIHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgogICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAogICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBmb3JtLCBpbmNsdWRpbmcgYnV0CiAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgoKICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQogICAgICBjb3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsKICAgICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KCiAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3b3JrLCB3aGV0aGVyIGluIFNvdXJjZSBvciBPYmplY3QKICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBmcm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQogICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCiAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwgd29yayBvZiBhdXRob3JzaGlwLiBGb3IgdGhlIHB1cnBvc2VzCiAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3JrcyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgogICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCiAgICAgIHRoZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YuCgogICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZwogICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgV29yayBhbmQgYW55IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCiAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQogICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCiAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5IGF1dGhvcml6ZWQgdG8gc3VibWl0IG9uIGJlaGFsZiBvZgogICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAogICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bwogICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFpbGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAogICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQogICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQKICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBpcyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCgogICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKICAgICAgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsuCgogICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAogICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQogICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKICAgICAgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCiAgICAgIFdvcmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCgogICAzLiBHcmFudCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAogICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQogICAgICAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwKICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssCiAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCiAgICAgIGJ5IHN1Y2ggQ29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZWlyCiAgICAgIENvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRpb24ocykKICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKICAgICAgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKICAgICAgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yawogICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAogICAgICBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCiAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQogICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCgogICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSByZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQogICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybSwgcHJvdmlkZWQgdGhhdCBZb3UKICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgogICAgICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgV29yayBvcgogICAgICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKCiAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7IGFuZAoKICAgICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBmb3JtIG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCiAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwgY29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCiAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAogICAgICAgICAgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFpbiB0byBhbnkgcGFydCBvZgogICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAoKICAgICAgKGQpIElmIHRoZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzCiAgICAgICAgICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSBtdXN0CiAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdAogICAgICAgICAgcGVydGFpbiB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCiAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAogICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcgogICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYgcHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCiAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCiAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMKICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCiAgICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQogICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZyb20gdGhlIFdvcmssIHByb3ZpZGVkCiAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGljZW5zZS4KCiAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAogICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zCiAgICAgIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0aW9ucywgb3IKICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCiAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAogICAgICB0aGUgY29uZGl0aW9ucyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgoKICAgNS4gU3VibWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLAogICAgICBhbnkgQ29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsKICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuCiAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUgYWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRpb25zLgoKICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQogICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsCiAgICAgIGV4Y2VwdCBhcyByZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRoZQogICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KCiAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgogICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCiAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAiQVMgSVMiIEJBU0lTLAogICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKICAgICAgb2YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1IgQQogICAgICBQQVJUSUNVTEFSIFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUKICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CiAgICAgIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBZb3VyIGV4ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4KCiAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAogICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSwgY29udHJhY3QsIG9yIG90aGVyd2lzZSwKICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNoIGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKICAgICAgbGlhYmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAogICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNoYXJhY3RlciBhcmlzaW5nIGFzIGEKICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQogICAgICBXb3JrIChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGwsCiAgICAgIHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBhbmQgYWxsCiAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKICAgICAgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgoKICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZwogICAgICB0aGUgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLAogICAgICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwgaW5kZW1uaXR5LAogICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcwogICAgICBMaWNlbnNlLiBIb3dldmVyLCBpbiBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qgb25seQogICAgICBvbiBZb3VyIG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFsZgogICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCiAgICAgIGRlZmVuZCwgYW5kIGhvbGQgZWFjaCBDb250cmlidXRvciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQogICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFzc2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCiAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgoKICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICBBUFBFTkRJWDogSG93IHRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmsuCgogICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZwogICAgICBib2lsZXJwbGF0ZSBub3RpY2UsIHdpdGggdGhlIGZpZWxkcyBlbmNsb3NlZCBieSBicmFja2V0cyAiW10iCiAgICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uIChEb24ndCBpbmNsdWRlCiAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCiAgICAgIGNvbW1lbnQgc3ludGF4IGZvciB0aGUgZmlsZSBmb3JtYXQuIFdlIGFsc28gcmVjb21tZW5kIHRoYXQgYQogICAgICBmaWxlIG9yIGNsYXNzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24gdGhlCiAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgogICAgICBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhpcmQtcGFydHkgYXJjaGl2ZXMuCgogICBDb3B5cmlnaHQgW3l5eXldIFtuYW1lIG9mIGNvcHlyaWdodCBvd25lcl0KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/NOTICE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[d2lraW1lZGlhL2xlc3MucGhwLiBodHRwczovL2dlcnJpdC53aWtpbWVkaWEub3JnL2cvbWVkaWF3aWtpL2xpYnMvbGVzcy5waHAKCkNvcHlyaWdodCBNYXR0IEFnYXIgPGh0dHBzOi8vZ2l0aHViLmNvbS9hZ2FyPgpDb3B5cmlnaHQgTWFydGluIEphbnRvxaFvdmnEjSA8aHR0cHM6Ly9naXRodWIuY29tL01vcmRyZWQ+CkNvcHlyaWdodCBKb3NoIFNjaG1pZHQgPGh0dHBzOi8vZ2l0aHViLmNvbS9veWVqb3JnZT4KQ29weXJpZ2h0IFRpbW8gVGlqaG9mIDxodHRwczovL3RpbW90aWpob2YubmV0PgoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/phpunit.xml.dist</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHBocHVuaXQKCXhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCgl4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iaHR0cHM6Ly9zY2hlbWEucGhwdW5pdC5kZS8xMC41L3BocHVuaXQueHNkIgoJcHJvY2Vzc0lzb2xhdGlvbj0iZmFsc2UiCglzdG9wT25GYWlsdXJlPSJmYWxzZSIKCXN0b3BPbkVycm9yPSJmYWxzZSIKCXN0b3BPbkluY29tcGxldGU9ImZhbHNlIgoJc3RvcE9uU2tpcHBlZD0iZmFsc2UiCglib290c3RyYXA9InRlc3QvcGhwdW5pdC9ib290c3RyYXAucGhwIgoJY2FjaGVEaXJlY3Rvcnk9Ii5waHB1bml0LmNhY2hlIgoJZXhlY3V0aW9uT3JkZXI9ImRlcGVuZHMsZGVmZWN0cyIKCWRpc3BsYXlEZXRhaWxzT25UZXN0c1RoYXRUcmlnZ2VyRGVwcmVjYXRpb25zPSJ0cnVlIgoJZGlzcGxheURldGFpbHNPblRlc3RzVGhhdFRyaWdnZXJFcnJvcnM9InRydWUiCglkaXNwbGF5RGV0YWlsc09uVGVzdHNUaGF0VHJpZ2dlck5vdGljZXM9InRydWUiCglkaXNwbGF5RGV0YWlsc09uVGVzdHNUaGF0VHJpZ2dlcldhcm5pbmdzPSJ0cnVlIgoJZGlzcGxheURldGFpbHNPblBocHVuaXREZXByZWNhdGlvbnM9InRydWUiCgliZVN0cmljdEFib3V0T3V0cHV0RHVyaW5nVGVzdHM9InRydWUiCglmYWlsT25SaXNreT0idHJ1ZSIKCWZhaWxPbldhcm5pbmc9InRydWUiCj4KCTx0ZXN0c3VpdGVzPgoJCTx0ZXN0c3VpdGUgbmFtZT0iVGVzdHMiPgoJCQk8ZGlyZWN0b3J5Pi4vdGVzdC9waHB1bml0PC9kaXJlY3Rvcnk+CgkJPC90ZXN0c3VpdGU+Cgk8L3Rlc3RzdWl0ZXM+Cgk8c291cmNlPgoJCTxpbmNsdWRlPgoJCQk8ZGlyZWN0b3J5IHN1ZmZpeD0iLnBocCI+bGliLzwvZGlyZWN0b3J5PgoJCQk8ZmlsZT5sZXNzYy5pbmMucGhwPC9maWxlPgoJCTwvaW5jbHVkZT4KCTwvc291cmNlPgo8L3BocHVuaXQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WyFbUGFja2FnaXN0XShodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC92L3dpa2ltZWRpYS9sZXNzLnBocC5zdmc/c3R5bGU9ZmxhdCldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy93aWtpbWVkaWEvbGVzcy5waHApCgpMZXNzLnBocAo9PT09PT09PQoKVGhpcyBpcyBhIFBIUCBwb3J0IG9mIHRoZSBbb2ZmaWNpYWwgTEVTUyBwcm9jZXNzb3JdKGh0dHBzOi8vbGVzc2Nzcy5vcmcpLgoKIyMgQWJvdXQKClRoZSBjb2RlIHN0cnVjdHVyZSBvZiBMZXNzLnBocCBtaXJyb3JzIHRoYXQgb2YgdXBzdHJlYW0gTGVzcy5qcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSBhbmQgaGVscCByZWR1Y2UgbWFpbnRlbmFuY2UuIFRoZSBwb3J0IGFpbXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIExlc3MuanMgMy4xMy4xLiBQbGVhc2Ugbm90ZSB0aGF0ICJpbmxpbmUgSmF2YVNjcmlwdCBleHByZXNzaW9ucyIgKHZpYSBldmFsIG9yIGJhY2t0aWNrcykgYXJlIG5vdCBzdXBwb3J0ZWQuCgoqIFtBUEkgwqcgQ2FjaGluZ10oLi9BUEkubWQjY2FjaGluZyksIExlc3MucGhwIGluY2x1ZGVzIGEgZmlsZS1iYXNlZCBjYWNoZS4KKiBbQVBJIMKnIFNvdXJjZSBtYXBzXSguL0FQSS5tZCNzb3VyY2UtbWFwcyksIExlc3MucGhwIHN1cHBvcnRzIHYzIHNvdXJjZW1hcHMuCiogW0FQSSDCpyBDb21tYW5kIGxpbmVdKC4vQVBJLm1kI2NvbW1hbmQtbGluZSksIHRoZSBgbGVzc2NgIGNvbW1hbmQgaW5jbHVkZXMgYSB3YXRjaCBtb2RlLgoKIyMgSW5zdGFsbGF0aW9uCgpZb3UgY2FuIGluc3RhbGwgdGhlIGxpYnJhcnkgd2l0aCBDb21wb3NlciBvciBzdGFuZGFsb25lLgoKSWYgeW91IGhhdmUgW0NvbXBvc2VyXShodHRwczovL2dldGNvbXBvc2VyLm9yZy9kb3dubG9hZC8pIGluc3RhbGxlZDoKCjEuIFJ1biBgY29tcG9zZXIgcmVxdWlyZSB3aWtpbWVkaWEvbGVzcy5waHBgCjIuIFVzZSBgTGVzc19QYXJzZXJgIGluIHlvdXIgY29kZS4KCk9yIHN0YW5kYWxvbmU6CgoxLiBbRG93bmxvYWQgTGVzcy5waHBdKGh0dHBzOi8vZ2Vycml0Lndpa2ltZWRpYS5vcmcvZy9tZWRpYXdpa2kvbGlicy9sZXNzLnBocC8rYXJjaGl2ZS9IRUFELnRhci5neikgYW5kIHVwbG9hZCB0aGUgUEhQIGZpbGVzIHRvIHlvdXIgc2VydmVyLgoyLiBJbmNsdWRlIHRoZSBsaWJyYXJ5OgogICBgYGBwaHAKICAgcmVxdWlyZV9vbmNlICdbcGF0aCB0b10vbGVzcy5waHAvbGliL0xlc3MvQXV0b2xvYWRlci5waHAnOwogICBMZXNzX0F1dG9sb2FkZXI6OnJlZ2lzdGVyKCk7CiAgIGBgYAozLiBVc2UgYExlc3NfUGFyc2VyYCBpbiB5b3VyIGNvZGUuCgojIyBTZWN1cml0eQoKVGhlIExFU1MgcHJvY2Vzc29yIGxhbmd1YWdlIGlzIHBvd2VyZnVsIGFuZCBpbmNsdWRlcyBmZWF0dXJlcyB0aGF0IG1heSByZWFkIG9yIGVtYmVkIGFyYml0cmFyeSBmaWxlcyB0aGF0IHRoZSB3ZWIgc2VydmVyIGhhcyBhY2Nlc3MgdG8sIGFuZCBmZWF0dXJlcyB0aGF0IG1heSBiZSBjb21wdXRhdGlvbmFsbHkgZXhlbnNpdmUgaWYgbWlzdXNlZC4KCkluIGdlbmVyYWwgeW91IHNob3VsZCB0cmVhdCBMRVNTIGZpbGVzIGFzIGJlaW5nIGluIHRoZSBzYW1lIHRydXN0IGRvbWFpbiBhcyBvdGhlciBzZXJ2ZXItc2lkZSBleGVjdXRhYmxlcywgc3VjaCBhcyBQSFAgY29kZS4gSW4gcGFydGljdWxhciwgaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIGFsbG93IHBlb3BsZSB0aGF0IHVzZSB5b3VyIHdlYiBzZXJ2aWNlIHRvIHByb3ZpZGUgYXJiaXRyYXJ5IExFU1MgY29kZSBmb3Igc2VydmVyLXNpZGUgcHJvY2Vzc2luZy4KCl9TZWUgYWxzbyBbU0VDVVJJVFldKC4vU0VDVVJJVFkubWQpLl8KCiMjIFdobyB1c2VzIExlc3MucGhwPwoKKiAqKltXaWtpcGVkaWFdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lZGlhV2lraSkqKiBhbmQgdGhlIE1lZGlhV2lraSBwbGF0Zm9ybSAoW2RvY3NdKGh0dHBzOi8vd3d3Lm1lZGlhd2lraS5vcmcvd2lraS9SZXNvdXJjZUxvYWRlci9BcmNoaXRlY3R1cmUjUmVzb3VyY2U6X1N0eWxlcykpLgoqICoqW01hdG9tb10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWF0b21vXyhzb2Z0d2FyZSkpKiogKFtkb2NzXShodHRwczovL2RldmVsb3Blci5tYXRvbW8ub3JnL2d1aWRlcy9hc3NldC1waXBlbGluZSN2YW5pbGxhLWphdmFzY3JpcHQtY3NzLWFuZC1sZXNzLWZpbGVzKSkuCiogKipbTWFnZW50b10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFnZW50bykqKiBhcyBwYXJ0IG9mIEFkb2JlIENvbW1lcmNlIChbZG9jc10oaHR0cHM6Ly9kZXZlbG9wZXIuYWRvYmUuY29tL2NvbW1lcmNlL2Zyb250ZW5kLWNvcmUvZ3VpZGUvY3NzL3ByZXByb2Nlc3MvKSkuCiogKipbSWNpbmdhXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JY2luZ2EpKiogaW4gSWNpbmdhIFdlYiAoW2RvY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9JY2luZ2EvaWNpbmdhd2ViMikpLgoqICoqW1Nob3B3YXJlXShodHRwczovL2RlLndpa2lwZWRpYS5vcmcvd2lraS9TaG9wd2FyZSkqKiAoW2RvY3NdKGh0dHBzOi8vZGV2ZWxvcGVycy5zaG9wd2FyZS5jb20vZGVzaWduZXJzLWd1aWRlL2xlc3MvKSkuCiogKipbV2ludGVyIENNU10oaHR0cHM6Ly93aW50ZXJjbXMuY29tLykqKiAoW2RvY3NdKGh0dHBzOi8vd2ludGVyY21zLmNvbS9kb2NzL3YxLjIvZG9jcy90aGVtZXMvZGV2ZWxvcG1lbnQpKQoqICoqW0ZsYXJ1bV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmxhcnVtKSoqIChbZG9jc10oaHR0cHM6Ly9kb2NzLmZsYXJ1bS5vcmcvdGhlbWVzLykpCgojIyBJbnRlZ3JhdGlvbnMKCkxlc3MucGhwIGhhcyBiZWVuIGludGVncmF0ZWQgd2l0aCB2YXJpb3VzIG90aGVyIHByb2plY3RzLgoKIyMjIyBUcmFuc2l0aW9uaW5nIGZyb20gTGVhZm8vbGVzc3BocAoKSWYgeW91J3JlIGxvb2tpbmcgdG8gdHJhbnNpdGlvbiBmcm9tIHRoZSBbTGVhZm8vbGVzc3BocF0oaHR0cHM6Ly9naXRodWIuY29tL2xlYWZvL2xlc3NwaHApIGxpYnJhcnksIHVzZSB0aGUgYGxlc3NjLmluYy5waHBgIGFkYXB0ZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggTGVzcy5waHAuCgpUaGlzIGFsbG93cyBMZXNzLnBocCB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIExlYWZvL2xlc3NwaHAuCgpbRG93bmxvYWQgTGVzcy5waHBdKGh0dHBzOi8vZ2Vycml0Lndpa2ltZWRpYS5vcmcvZy9tZWRpYXdpa2kvbGlicy9sZXNzLnBocC8rYXJjaGl2ZS9IRUFELnRhci5neiksIHVuemlwIHRoZSBmaWxlcyBpbnRvIHlvdXIgcHJvamVjdCwgYW5kIGluY2x1ZGUgaXRzIGBsZXNzYy5pbmMucGhwYCBpbnN0ZWFkLgoKTm90ZTogVGhlIGBzZXRQcmVzZXJ2ZUNvbW1lbnRzYCBvcHRpb24gaXMgaWdub3JlZC4gTGVzcy5waHAgYWxyZWFkeSBwcmVzZXJ2ZXMgQ1NTIGJsb2NrIGNvbW1lbnRzIGJ5IGRlZmF1bHQsIGFuZCByZW1vdmVzIExFU1MgaW5saW5lIGNvbW1lbnRzLgoKIyMjIyBEcnVwYWwKCkxlc3MucGhwIGNhbiBiZSB1c2VkIHdpdGggW0RydXBhbCdzIGxlc3MgbW9kdWxlXShodHRwczovL2RydXBhbC5vcmcvcHJvamVjdC9sZXNzKSB2aWEgdGhlIGBsZXNzYy5pbmMucGhwYCBhZGFwdGVyLiBbRG93bmxvYWQgTGVzcy5waHBdKGh0dHBzOi8vZ2Vycml0Lndpa2ltZWRpYS5vcmcvZy9tZWRpYXdpa2kvbGlicy9sZXNzLnBocC8rYXJjaGl2ZS9IRUFELnRhci5neikgYW5kIHVuemlwIGl0IHNvIHRoYXQgYGxlc3NjLmluYy5waHBgIGlzIGxvY2F0ZWQgYXQgYHNpdGVzL2FsbC9saWJyYXJpZXMvbGVzc3BocC9sZXNzYy5pbmMucGhwYCwgdGhlbiBpbnN0YWxsIHRoZSBEcnVwYWwgbGVzcyBtb2R1bGUgYXMgdXN1YWwuCgojIyMjIFdvcmRQcmVzcwoKKiBbd3BfZW5xdWV1ZV9sZXNzXShodHRwczovL2dpdGh1Yi5jb20vRWQtSVRTb2x1dGlvbnMvd3BfZW5xdWV1ZV9sZXNzKSBpcyBhIENvbXBvc2VyIHBhY2thZ2UgZm9yIHVzZSBpbiBXb3JkUHJlc3MgdGhlbWVzIGFuZCBwbHVnaW5zLiBJdCBwcm92aWRlcyBhIGB3cF9lbnF1ZXVlX2xlc3MoKWAgZnVuY3Rpb24gdG8gYXV0b21hdGljYWxseSBtYW5hZ2UgY2FjaGluZyBhbmQgY29tcGlsYXRpb24gb24tZGVtYW5kLCBhbmQgbG9hZHMgdGhlIGNvbXByZXNzZWQgQ1NTIG9uIHRoZSBwYWdlLgoqIFtKQlNUIGZyYW1ld29ya10oaHR0cHM6Ly9naXRodWIuY29tL2Jhc3Nqb2JzZW4vamFtZWRvLWJvb3RzdHJhcC1zdGFydC10aGVtZSkgYnVuZGxlcyBhIGNvcHkgb2YgTGVzcy5waHAuCiogVGhlIFtsZXNzcGhwIHBsdWdpbl0oaHR0cHM6Ly93b3JkcHJlc3Mub3JnL3BsdWdpbnMvbGVzc3BocC8pIGJ1bmRsZXMgYSBjb3B5IG9mIExlc3MucGhwIGZvciB1c2UgaW4gb3RoZXIgcGx1Z2lucyBvciB0aGVtZXMuIFRoaXMgZGVwZW5kZW5jeSBjYW4gYWxzbyBiZSBjb21iaW5lZCB3aXRoIHRoZSBbVEdNIExpYnJhcnldKGh0dHA6Ly90Z21wbHVnaW5hY3RpdmF0aW9uLmNvbS8pLgoKIyMgQ3JlZGl0cwoKTGVzcy5waHAgd2FzIG9yaWdpbmFsbHkgcG9ydGVkIHRvIFBIUCBpbiAyMDExIGJ5IFtNYXR0IEFnYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZ2FyKSBhbmQgdGhlbiB1cGRhdGVkIGJ5IFtNYXJ0aW4gSmFudG/FoW92acSNXShodHRwczovL2dpdGh1Yi5jb20vTW9yZHJlZCkgaW4gMjAxMi4gRnJvbSAyMDEzIHRvIDIwMTcsIFtKb3NoIFNjaG1pZHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9veWVqb3JnZSkgbGVhZCBkZXZlbG9wbWVudCBvZiB0aGUgbGlicmFyeS4gU2luY2UgMjAxOSwgdGhlIGxpYnJhcnkgaXMgbWFpbnRhaW5lZCBieSBXaWtpbWVkaWEgRm91bmRhdGlvbi4KCiMjIENvbnRyaWJ1dGUKCiogSXNzdWUgdHJhY2tlcjogaHR0cHM6Ly9waGFicmljYXRvci53aWtpbWVkaWEub3JnL3RhZy9sZXNzLnBocC8KKiBTb3VyY2UgY29kZTogaHR0cHM6Ly9nZXJyaXQud2lraW1lZGlhLm9yZy9nL21lZGlhd2lraS9saWJzL2xlc3MucGhwIChbR2V0IHN0YXJ0ZWQgd2l0aCBHZXJyaXRdKGh0dHBzOi8vd3d3Lm1lZGlhd2lraS5vcmcvd2lraS9HZXJyaXQvVHV0b3JpYWwvdGw7ZHIpKQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/SECURITY.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBTZWN1cml0eSBwb2xpY3kKCldpa2ltZWRpYSB0YWtlcyBzZWN1cml0eSBzZXJpb3VzbHkuIElmIHlvdSBiZWxpZXZlIHlvdSBoYXZlIGZvdW5kIGEKc2VjdXJpdHkgaXNzdWUsIHNlZSA8aHR0cHM6Ly93d3cubWVkaWF3aWtpLm9yZy93aWtpL1JlcG9ydGluZ19zZWN1cml0eV9idWdzPgpmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJlc3BvbnNpYmx5IHJlcG9ydCBpdC4K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/assets/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/assets/less-2.5.3.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIExlc3MgLSBMZWFuZXIgQ1NTIHYyLjUuMwogKiBodHRwOi8vbGVzc2Nzcy5vcmcKICoKICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTUsIEFsZXhpcyBTZWxsaWVyIDxzZWxmQGNsb3VkaGVhZC5uZXQ+CiAqIExpY2Vuc2VkIHVuZGVyIHRoZSAgTGljZW5zZS4KICoKICovCgogLyoqICogQGxpY2Vuc2UgCiAqLwoKKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09Im9iamVjdCImJnR5cGVvZiBtb2R1bGUhPT0idW5kZWZpbmVkIil7bW9kdWxlLmV4cG9ydHM9ZigpfWVsc2UgaWYodHlwZW9mIGRlZmluZT09PSJmdW5jdGlvbiImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIil7Zz13aW5kb3d9ZWxzZSBpZih0eXBlb2YgZ2xvYmFsIT09InVuZGVmaW5lZCIpe2c9Z2xvYmFsfWVsc2UgaWYodHlwZW9mIHNlbGYhPT0idW5kZWZpbmVkIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcubGVzcyA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK28rIiciKTt0aHJvdyBmLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkoezE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgYWRkRGF0YUF0dHIgPSByZXF1aXJlKCIuL3V0aWxzIikuYWRkRGF0YUF0dHIsCiAgICBicm93c2VyID0gcmVxdWlyZSgiLi9icm93c2VyIik7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHdpbmRvdywgb3B0aW9ucykgewoKICAgIC8vIHVzZSBvcHRpb25zIGZyb20gdGhlIGN1cnJlbnQgc2NyaXB0IHRhZyBkYXRhIGF0dHJpYnVlcwogICAgYWRkRGF0YUF0dHIob3B0aW9ucywgYnJvd3Nlci5jdXJyZW50U2NyaXB0KHdpbmRvdykpOwoKICAgIGlmIChvcHRpb25zLmlzRmlsZVByb3RvY29sID09PSB1bmRlZmluZWQpIHsKICAgICAgICBvcHRpb25zLmlzRmlsZVByb3RvY29sID0gL14oZmlsZXwoY2hyb21lfHNhZmFyaSkoLWV4dGVuc2lvbik/fHJlc291cmNlfHFyY3xhcHApOi8udGVzdCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpOwogICAgfQoKICAgIC8vIExvYWQgc3R5bGVzIGFzeW5jaHJvbm91c2x5IChkZWZhdWx0OiBmYWxzZSkKICAgIC8vCiAgICAvLyBUaGlzIGlzIHNldCB0byBgZmFsc2VgIGJ5IGRlZmF1bHQsIHNvIHRoYXQgdGhlIGJvZHkKICAgIC8vIGRvZXNuJ3Qgc3RhcnQgbG9hZGluZyBiZWZvcmUgdGhlIHN0eWxlc2hlZXRzIGFyZSBwYXJzZWQuCiAgICAvLyBTZXR0aW5nIHRoaXMgdG8gYHRydWVgIGNhbiByZXN1bHQgaW4gZmxpY2tlcmluZy4KICAgIC8vCiAgICBvcHRpb25zLmFzeW5jID0gb3B0aW9ucy5hc3luYyB8fCBmYWxzZTsKICAgIG9wdGlvbnMuZmlsZUFzeW5jID0gb3B0aW9ucy5maWxlQXN5bmMgfHwgZmFsc2U7CgogICAgLy8gSW50ZXJ2YWwgYmV0d2VlbiB3YXRjaCBwb2xscwogICAgb3B0aW9ucy5wb2xsID0gb3B0aW9ucy5wb2xsIHx8IChvcHRpb25zLmlzRmlsZVByb3RvY29sID8gMTAwMCA6IDE1MDApOwoKICAgIG9wdGlvbnMuZW52ID0gb3B0aW9ucy5lbnYgfHwgKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PSAnMTI3LjAuMC4xJyB8fAogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PSAnMC4wLjAuMCcgICB8fAogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PSAnbG9jYWxob3N0JyB8fAogICAgICAgICh3aW5kb3cubG9jYXRpb24ucG9ydCAmJgogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucG9ydC5sZW5ndGggPiAwKSAgICAgIHx8CiAgICAgICAgb3B0aW9ucy5pc0ZpbGVQcm90b2NvbCAgICAgICAgICAgICAgICAgICA/ICdkZXZlbG9wbWVudCcKICAgICAgICA6ICdwcm9kdWN0aW9uJyk7CgogICAgdmFyIGR1bXBMaW5lTnVtYmVycyA9IC8hZHVtcExpbmVOdW1iZXJzOihjb21tZW50c3xtZWRpYXF1ZXJ5fGFsbCkvLmV4ZWMod2luZG93LmxvY2F0aW9uLmhhc2gpOwogICAgaWYgKGR1bXBMaW5lTnVtYmVycykgewogICAgICAgIG9wdGlvbnMuZHVtcExpbmVOdW1iZXJzID0gZHVtcExpbmVOdW1iZXJzWzFdOwogICAgfQoKICAgIGlmIChvcHRpb25zLnVzZUZpbGVDYWNoZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgb3B0aW9ucy51c2VGaWxlQ2FjaGUgPSB0cnVlOwogICAgfQoKICAgIGlmIChvcHRpb25zLm9uUmVhZHkgPT09IHVuZGVmaW5lZCkgewogICAgICAgIG9wdGlvbnMub25SZWFkeSA9IHRydWU7CiAgICB9Cgp9OwoKfSx7Ii4vYnJvd3NlciI6MywiLi91dGlscyI6OX1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewovKioKICogS2lja3Mgb2ZmIGxlc3MgYW5kIGNvbXBpbGVzIGFueSBzdHlsZXNoZWV0cwogKiB1c2VkIGluIHRoZSBicm93c2VyIGRpc3RyaWJ1dGVkIHZlcnNpb24gb2YgbGVzcwogKiB0byBraWNrLXN0YXJ0IGxlc3MgdXNpbmcgdGhlIGJyb3dzZXIgYXBpCiAqLwovKmdsb2JhbCB3aW5kb3cgKi8KCi8vIHNoaW0gUHJvbWlzZSBpZiByZXF1aXJlZApyZXF1aXJlKCdwcm9taXNlL3BvbHlmaWxsLmpzJyk7Cgp2YXIgb3B0aW9ucyA9IHdpbmRvdy5sZXNzIHx8IHt9OwpyZXF1aXJlKCIuL2FkZC1kZWZhdWx0LW9wdGlvbnMiKSh3aW5kb3csIG9wdGlvbnMpOwoKdmFyIGxlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoIi4vaW5kZXgiKSh3aW5kb3csIG9wdGlvbnMpOwoKd2luZG93Lmxlc3MgPSBsZXNzOwoKaWYgKG9wdGlvbnMub25SZWFkeSkgewogICAgaWYgKC8hd2F0Y2gvLnRlc3Qod2luZG93LmxvY2F0aW9uLmhhc2gpKSB7CiAgICAgICAgbGVzcy53YXRjaCgpOwogICAgfQoKICAgIGxlc3MucmVnaXN0ZXJTdHlsZXNoZWV0c0ltbWVkaWF0ZWx5KCk7CiAgICBsZXNzLnBhZ2VMb2FkRmluaXNoZWQgPSBsZXNzLnJlZnJlc2gobGVzcy5lbnYgPT09ICdkZXZlbG9wbWVudCcpOwp9Cgp9LHsiLi9hZGQtZGVmYXVsdC1vcHRpb25zIjoxLCIuL2luZGV4Ijo3LCJwcm9taXNlL3BvbHlmaWxsLmpzIjo5NX1dLDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgdXRpbHMgPSByZXF1aXJlKCIuL3V0aWxzIik7Cm1vZHVsZS5leHBvcnRzID0gewogICAgY3JlYXRlQ1NTOiBmdW5jdGlvbiAoZG9jdW1lbnQsIHN0eWxlcywgc2hlZXQpIHsKICAgICAgICAvLyBTdHJpcCB0aGUgcXVlcnktc3RyaW5nCiAgICAgICAgdmFyIGhyZWYgPSBzaGVldC5ocmVmIHx8ICcnOwoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyB0aXRsZSBzZXQsIHVzZSB0aGUgZmlsZW5hbWUsIG1pbnVzIHRoZSBleHRlbnNpb24KICAgICAgICB2YXIgaWQgPSAnbGVzczonICsgKHNoZWV0LnRpdGxlIHx8IHV0aWxzLmV4dHJhY3RJZChocmVmKSk7CgogICAgICAgIC8vIElmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBET00sIHdlIG1heSBuZWVkIHRvIHJlcGxhY2UgaXQKICAgICAgICB2YXIgb2xkU3R5bGVOb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgIHZhciBrZWVwT2xkU3R5bGVOb2RlID0gZmFsc2U7CgogICAgICAgIC8vIENyZWF0ZSBhIG5ldyBzdHlsZXNoZWV0IG5vZGUgZm9yIGluc2VydGlvbiBvciAoaWYgbmVjZXNzYXJ5KSByZXBsYWNlbWVudAogICAgICAgIHZhciBzdHlsZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgICAgIHN0eWxlTm9kZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTsKICAgICAgICBpZiAoc2hlZXQubWVkaWEpIHsKICAgICAgICAgICAgc3R5bGVOb2RlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBzaGVldC5tZWRpYSk7CiAgICAgICAgfQogICAgICAgIHN0eWxlTm9kZS5pZCA9IGlkOwoKICAgICAgICBpZiAoIXN0eWxlTm9kZS5zdHlsZVNoZWV0KSB7CiAgICAgICAgICAgIHN0eWxlTm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHlsZXMpKTsKCiAgICAgICAgICAgIC8vIElmIG5ldyBjb250ZW50cyBtYXRjaCBjb250ZW50cyBvZiBvbGRTdHlsZU5vZGUsIGRvbid0IHJlcGxhY2Ugb2xkU3R5bGVOb2RlCiAgICAgICAgICAgIGtlZXBPbGRTdHlsZU5vZGUgPSAob2xkU3R5bGVOb2RlICE9PSBudWxsICYmIG9sZFN0eWxlTm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA+IDAgJiYgc3R5bGVOb2RlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCAmJgogICAgICAgICAgICAgICAgb2xkU3R5bGVOb2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlID09PSBzdHlsZU5vZGUuZmlyc3RDaGlsZC5ub2RlVmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBvbGRTdHlsZU5vZGUsIGp1c3QgYXBwZW5kOyBvdGhlcndpc2UsIG9ubHkgYXBwZW5kIGlmIHdlIG5lZWQKICAgICAgICAvLyB0byByZXBsYWNlIG9sZFN0eWxlTm9kZSB3aXRoIGFuIHVwZGF0ZWQgc3R5bGVzaGVldAogICAgICAgIGlmIChvbGRTdHlsZU5vZGUgPT09IG51bGwgfHwga2VlcE9sZFN0eWxlTm9kZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdmFyIG5leHRFbCA9IHNoZWV0ICYmIHNoZWV0Lm5leHRTaWJsaW5nIHx8IG51bGw7CiAgICAgICAgICAgIGlmIChuZXh0RWwpIHsKICAgICAgICAgICAgICAgIG5leHRFbC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzdHlsZU5vZGUsIG5leHRFbCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlTm9kZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG9sZFN0eWxlTm9kZSAmJiBrZWVwT2xkU3R5bGVOb2RlID09PSBmYWxzZSkgewogICAgICAgICAgICBvbGRTdHlsZU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvbGRTdHlsZU5vZGUpOwogICAgICAgIH0KCiAgICAgICAgLy8gRm9yIElFLgogICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuICphZnRlciogdGhlIHN0eWxlIGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIERPTSwgb3RoZXJ3aXNlIElFIDcgYW5kIDggbWF5IGNyYXNoLgogICAgICAgIC8vIFNlZSBodHRwOi8vc29jaWFsLm1zZG4ubWljcm9zb2Z0LmNvbS9Gb3J1bXMvZW4tVVMvN2UwODFiNjUtODc4YS00YzIyLThlNjgtYzEwZDM5YzJlZDMyL2ludGVybmV0LWV4cGxvcmVyLWNyYXNoZXMtYXBwZW5kaW5nLXN0eWxlLWVsZW1lbnQtdG8taGVhZAogICAgICAgIGlmIChzdHlsZU5vZGUuc3R5bGVTaGVldCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgc3R5bGVOb2RlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHN0eWxlczsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCByZWFzc2lnbiBzdHlsZVNoZWV0LmNzc1RleHQuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LAogICAgY3VycmVudFNjcmlwdDogZnVuY3Rpb24od2luZG93KSB7CiAgICAgICAgdmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OwogICAgICAgIHJldHVybiBkb2N1bWVudC5jdXJyZW50U2NyaXB0IHx8IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7CiAgICAgICAgICAgIHJldHVybiBzY3JpcHRzW3NjcmlwdHMubGVuZ3RoIC0gMV07CiAgICAgICAgfSkoKTsKICAgIH0KfTsKCn0seyIuL3V0aWxzIjo5fV0sNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci8vIENhY2hlIHN5c3RlbSBpcyBhIGJpdCBvdXRkYXRlZCBhbmQgY291bGQgZG8gd2l0aCB3b3JrCgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHdpbmRvdywgb3B0aW9ucywgbG9nZ2VyKSB7CiAgICB2YXIgY2FjaGUgPSBudWxsOwogICAgaWYgKG9wdGlvbnMuZW52ICE9PSAnZGV2ZWxvcG1lbnQnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY2FjaGUgPSAodHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSA/IG51bGwgOiB3aW5kb3cubG9jYWxTdG9yYWdlOwogICAgICAgIH0gY2F0Y2ggKF8pIHt9CiAgICB9CiAgICByZXR1cm4gewogICAgICAgIHNldENTUzogZnVuY3Rpb24ocGF0aCwgbGFzdE1vZGlmaWVkLCBzdHlsZXMpIHsKICAgICAgICAgICAgaWYgKGNhY2hlKSB7CiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnc2F2aW5nICcgKyBwYXRoICsgJyB0byBjYWNoZS4nKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgY2FjaGUuc2V0SXRlbShwYXRoLCBzdHlsZXMpOwogICAgICAgICAgICAgICAgICAgIGNhY2hlLnNldEl0ZW0ocGF0aCArICc6dGltZXN0YW1wJywgbGFzdE1vZGlmaWVkKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAgICAgIC8vVE9ETyAtIGNvdWxkIGRvIHdpdGggYWRkaW5nIG1vcmUgcm9idXN0IGVycm9yIGhhbmRsaW5nCiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdmYWlsZWQgdG8gc2F2ZSAiJyArIHBhdGggKyAnIiB0byBsb2NhbCBzdG9yYWdlIGZvciBjYWNoaW5nLicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBnZXRDU1M6IGZ1bmN0aW9uKHBhdGgsIHdlYkluZm8pIHsKICAgICAgICAgICAgdmFyIGNzcyAgICAgICA9IGNhY2hlICYmIGNhY2hlLmdldEl0ZW0ocGF0aCksCiAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBjYWNoZSAmJiBjYWNoZS5nZXRJdGVtKHBhdGggKyAnOnRpbWVzdGFtcCcpOwoKICAgICAgICAgICAgaWYgKHRpbWVzdGFtcCAmJiB3ZWJJbmZvLmxhc3RNb2RpZmllZCAmJgogICAgICAgICAgICAgICAgKG5ldyBEYXRlKHdlYkluZm8ubGFzdE1vZGlmaWVkKS52YWx1ZU9mKCkgPT09CiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUodGltZXN0YW1wKS52YWx1ZU9mKCkpKSB7CiAgICAgICAgICAgICAgICAvLyBVc2UgbG9jYWwgY29weQogICAgICAgICAgICAgICAgcmV0dXJuIGNzczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07Cn07Cgp9LHt9XSw1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIHV0aWxzID0gcmVxdWlyZSgiLi91dGlscyIpLAogICAgYnJvd3NlciA9IHJlcXVpcmUoIi4vYnJvd3NlciIpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih3aW5kb3csIGxlc3MsIG9wdGlvbnMpIHsKCiAgICBmdW5jdGlvbiBlcnJvckhUTUwoZSwgcm9vdEhyZWYpIHsKICAgICAgICB2YXIgaWQgPSAnbGVzcy1lcnJvci1tZXNzYWdlOicgKyB1dGlscy5leHRyYWN0SWQocm9vdEhyZWYgfHwgIiIpOwogICAgICAgIHZhciB0ZW1wbGF0ZSA9ICc8bGk+PGxhYmVsPntsaW5lfTwvbGFiZWw+PHByZSBjbGFzcz0ie2NsYXNzfSI+e2NvbnRlbnR9PC9wcmU+PC9saT4nOwogICAgICAgIHZhciBlbGVtID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCB0aW1lciwgY29udGVudCwgZXJyb3JzID0gW107CiAgICAgICAgdmFyIGZpbGVuYW1lID0gZS5maWxlbmFtZSB8fCByb290SHJlZjsKICAgICAgICB2YXIgZmlsZW5hbWVOb1BhdGggPSBmaWxlbmFtZS5tYXRjaCgvKFteXC9dKyhcPy4qKT8pJC8pWzFdOwoKICAgICAgICBlbGVtLmlkICAgICAgICA9IGlkOwogICAgICAgIGVsZW0uY2xhc3NOYW1lID0gImxlc3MtZXJyb3ItbWVzc2FnZSI7CgogICAgICAgIGNvbnRlbnQgPSAnPGgzPicgICsgKGUudHlwZSB8fCAiU3ludGF4IikgKyAiRXJyb3I6ICIgKyAoZS5tZXNzYWdlIHx8ICdUaGVyZSBpcyBhbiBlcnJvciBpbiB5b3VyIC5sZXNzIGZpbGUnKSArCiAgICAgICAgICAgICc8L2gzPicgKyAnPHA+aW4gPGEgaHJlZj0iJyArIGZpbGVuYW1lICAgKyAnIj4nICsgZmlsZW5hbWVOb1BhdGggKyAiPC9hPiAiOwoKICAgICAgICB2YXIgZXJyb3JsaW5lID0gZnVuY3Rpb24gKGUsIGksIGNsYXNzbmFtZSkgewogICAgICAgICAgICBpZiAoZS5leHRyYWN0W2ldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHRlbXBsYXRlLnJlcGxhY2UoL1x7bGluZVx9LywgKHBhcnNlSW50KGUubGluZSwgMTApIHx8IDApICsgKGkgLSAxKSkKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXHtjbGFzc1x9LywgY2xhc3NuYW1lKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ce2NvbnRlbnRcfS8sIGUuZXh0cmFjdFtpXSkpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgaWYgKGUuZXh0cmFjdCkgewogICAgICAgICAgICBlcnJvcmxpbmUoZSwgMCwgJycpOwogICAgICAgICAgICBlcnJvcmxpbmUoZSwgMSwgJ2xpbmUnKTsKICAgICAgICAgICAgZXJyb3JsaW5lKGUsIDIsICcnKTsKICAgICAgICAgICAgY29udGVudCArPSAnb24gbGluZSAnICsgZS5saW5lICsgJywgY29sdW1uICcgKyAoZS5jb2x1bW4gKyAxKSArICc6PC9wPicgKwogICAgICAgICAgICAgICAgJzx1bD4nICsgZXJyb3JzLmpvaW4oJycpICsgJzwvdWw+JzsKICAgICAgICB9CiAgICAgICAgaWYgKGUuc3RhY2sgJiYgKGUuZXh0cmFjdCB8fCBvcHRpb25zLmxvZ0xldmVsID49IDQpKSB7CiAgICAgICAgICAgIGNvbnRlbnQgKz0gJzxici8+U3RhY2sgVHJhY2U8L2JyIC8+JyArIGUuc3RhY2suc3BsaXQoJ1xuJykuc2xpY2UoMSkuam9pbignPGJyLz4nKTsKICAgICAgICB9CiAgICAgICAgZWxlbS5pbm5lckhUTUwgPSBjb250ZW50OwoKICAgICAgICAvLyBDU1MgZm9yIGVycm9yIG1lc3NhZ2VzCiAgICAgICAgYnJvd3Nlci5jcmVhdGVDU1Mod2luZG93LmRvY3VtZW50LCBbCiAgICAgICAgICAgICcubGVzcy1lcnJvci1tZXNzYWdlIHVsLCAubGVzcy1lcnJvci1tZXNzYWdlIGxpIHsnLAogICAgICAgICAgICAnbGlzdC1zdHlsZS10eXBlOiBub25lOycsCiAgICAgICAgICAgICdtYXJnaW4tcmlnaHQ6IDE1cHg7JywKICAgICAgICAgICAgJ3BhZGRpbmc6IDRweCAwOycsCiAgICAgICAgICAgICdtYXJnaW46IDA7JywKICAgICAgICAgICAgJ30nLAogICAgICAgICAgICAnLmxlc3MtZXJyb3ItbWVzc2FnZSBsYWJlbCB7JywKICAgICAgICAgICAgJ2ZvbnQtc2l6ZTogMTJweDsnLAogICAgICAgICAgICAnbWFyZ2luLXJpZ2h0OiAxNXB4OycsCiAgICAgICAgICAgICdwYWRkaW5nOiA0cHggMDsnLAogICAgICAgICAgICAnY29sb3I6ICNjYzc3Nzc7JywKICAgICAgICAgICAgJ30nLAogICAgICAgICAgICAnLmxlc3MtZXJyb3ItbWVzc2FnZSBwcmUgeycsCiAgICAgICAgICAgICdjb2xvcjogI2RkNjY2NjsnLAogICAgICAgICAgICAncGFkZGluZzogNHB4IDA7JywKICAgICAgICAgICAgJ21hcmdpbjogMDsnLAogICAgICAgICAgICAnZGlzcGxheTogaW5saW5lLWJsb2NrOycsCiAgICAgICAgICAgICd9JywKICAgICAgICAgICAgJy5sZXNzLWVycm9yLW1lc3NhZ2UgcHJlLmxpbmUgeycsCiAgICAgICAgICAgICdjb2xvcjogI2ZmMDAwMDsnLAogICAgICAgICAgICAnfScsCiAgICAgICAgICAgICcubGVzcy1lcnJvci1tZXNzYWdlIGgzIHsnLAogICAgICAgICAgICAnZm9udC1zaXplOiAyMHB4OycsCiAgICAgICAgICAgICdmb250LXdlaWdodDogYm9sZDsnLAogICAgICAgICAgICAncGFkZGluZzogMTVweCAwIDVweCAwOycsCiAgICAgICAgICAgICdtYXJnaW46IDA7JywKICAgICAgICAgICAgJ30nLAogICAgICAgICAgICAnLmxlc3MtZXJyb3ItbWVzc2FnZSBhIHsnLAogICAgICAgICAgICAnY29sb3I6ICMxMGEnLAogICAgICAgICAgICAnfScsCiAgICAgICAgICAgICcubGVzcy1lcnJvci1tZXNzYWdlIC5lcnJvciB7JywKICAgICAgICAgICAgJ2NvbG9yOiByZWQ7JywKICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsCiAgICAgICAgICAgICdwYWRkaW5nLWJvdHRvbTogMnB4OycsCiAgICAgICAgICAgICdib3JkZXItYm90dG9tOiAxcHggZGFzaGVkIHJlZDsnLAogICAgICAgICAgICAnfScKICAgICAgICBdLmpvaW4oJ1xuJyksIHsgdGl0bGU6ICdlcnJvci1tZXNzYWdlJyB9KTsKCiAgICAgICAgZWxlbS5zdHlsZS5jc3NUZXh0ID0gWwogICAgICAgICAgICAiZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmIiwKICAgICAgICAgICAgImJvcmRlcjogMXB4IHNvbGlkICNlMDAiLAogICAgICAgICAgICAiYmFja2dyb3VuZC1jb2xvcjogI2VlZSIsCiAgICAgICAgICAgICJib3JkZXItcmFkaXVzOiA1cHgiLAogICAgICAgICAgICAiLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHgiLAogICAgICAgICAgICAiLW1vei1ib3JkZXItcmFkaXVzOiA1cHgiLAogICAgICAgICAgICAiY29sb3I6ICNlMDAiLAogICAgICAgICAgICAicGFkZGluZzogMTVweCIsCiAgICAgICAgICAgICJtYXJnaW4tYm90dG9tOiAxNXB4IgogICAgICAgIF0uam9pbignOycpOwoKICAgICAgICBpZiAob3B0aW9ucy5lbnYgPT09ICdkZXZlbG9wbWVudCcpIHsKICAgICAgICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQsCiAgICAgICAgICAgICAgICAgICAgYm9keSA9IGRvY3VtZW50LmJvZHk7CiAgICAgICAgICAgICAgICBpZiAoYm9keSkgewogICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYm9keS5yZXBsYWNlQ2hpbGQoZWxlbSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBib2R5Lmluc2VydEJlZm9yZShlbGVtLCBib2R5LmZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgMTApOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBlcnJvcihlLCByb290SHJlZikgewogICAgICAgIGlmICghb3B0aW9ucy5lcnJvclJlcG9ydGluZyB8fCBvcHRpb25zLmVycm9yUmVwb3J0aW5nID09PSAiaHRtbCIpIHsKICAgICAgICAgICAgZXJyb3JIVE1MKGUsIHJvb3RIcmVmKTsKICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXJyb3JSZXBvcnRpbmcgPT09ICJjb25zb2xlIikgewogICAgICAgICAgICBlcnJvckNvbnNvbGUoZSwgcm9vdEhyZWYpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMuZXJyb3JSZXBvcnRpbmcgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgb3B0aW9ucy5lcnJvclJlcG9ydGluZygiYWRkIiwgZSwgcm9vdEhyZWYpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiByZW1vdmVFcnJvckhUTUwocGF0aCkgewogICAgICAgIHZhciBub2RlID0gd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZXNzLWVycm9yLW1lc3NhZ2U6JyArIHV0aWxzLmV4dHJhY3RJZChwYXRoKSk7CiAgICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiByZW1vdmVFcnJvckNvbnNvbGUocGF0aCkgewogICAgICAgIC8vbm8gYWN0aW9uCiAgICB9CgogICAgZnVuY3Rpb24gcmVtb3ZlRXJyb3IocGF0aCkgewogICAgICAgIGlmICghb3B0aW9ucy5lcnJvclJlcG9ydGluZyB8fCBvcHRpb25zLmVycm9yUmVwb3J0aW5nID09PSAiaHRtbCIpIHsKICAgICAgICAgICAgcmVtb3ZlRXJyb3JIVE1MKHBhdGgpOwogICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5lcnJvclJlcG9ydGluZyA9PT0gImNvbnNvbGUiKSB7CiAgICAgICAgICAgIHJlbW92ZUVycm9yQ29uc29sZShwYXRoKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmVycm9yUmVwb3J0aW5nID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIG9wdGlvbnMuZXJyb3JSZXBvcnRpbmcoInJlbW92ZSIsIHBhdGgpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBlcnJvckNvbnNvbGUoZSwgcm9vdEhyZWYpIHsKICAgICAgICB2YXIgdGVtcGxhdGUgPSAne2xpbmV9IHtjb250ZW50fSc7CiAgICAgICAgdmFyIGZpbGVuYW1lID0gZS5maWxlbmFtZSB8fCByb290SHJlZjsKICAgICAgICB2YXIgZXJyb3JzID0gW107CiAgICAgICAgdmFyIGNvbnRlbnQgPSAoZS50eXBlIHx8ICJTeW50YXgiKSArICJFcnJvcjogIiArIChlLm1lc3NhZ2UgfHwgJ1RoZXJlIGlzIGFuIGVycm9yIGluIHlvdXIgLmxlc3MgZmlsZScpICsKICAgICAgICAgICAgIiBpbiAiICsgZmlsZW5hbWUgKyAiICI7CgogICAgICAgIHZhciBlcnJvcmxpbmUgPSBmdW5jdGlvbiAoZSwgaSwgY2xhc3NuYW1lKSB7CiAgICAgICAgICAgIGlmIChlLmV4dHJhY3RbaV0gIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgZXJyb3JzLnB1c2godGVtcGxhdGUucmVwbGFjZSgvXHtsaW5lXH0vLCAocGFyc2VJbnQoZS5saW5lLCAxMCkgfHwgMCkgKyAoaSAtIDEpKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ce2NsYXNzXH0vLCBjbGFzc25hbWUpCiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1x7Y29udGVudFx9LywgZS5leHRyYWN0W2ldKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBpZiAoZS5leHRyYWN0KSB7CiAgICAgICAgICAgIGVycm9ybGluZShlLCAwLCAnJyk7CiAgICAgICAgICAgIGVycm9ybGluZShlLCAxLCAnbGluZScpOwogICAgICAgICAgICBlcnJvcmxpbmUoZSwgMiwgJycpOwogICAgICAgICAgICBjb250ZW50ICs9ICdvbiBsaW5lICcgKyBlLmxpbmUgKyAnLCBjb2x1bW4gJyArIChlLmNvbHVtbiArIDEpICsgJzpcbicgKwogICAgICAgICAgICAgICAgZXJyb3JzLmpvaW4oJ1xuJyk7CiAgICAgICAgfQogICAgICAgIGlmIChlLnN0YWNrICYmIChlLmV4dHJhY3QgfHwgb3B0aW9ucy5sb2dMZXZlbCA+PSA0KSkgewogICAgICAgICAgICBjb250ZW50ICs9ICdcblN0YWNrIFRyYWNlXG4nICsgZS5zdGFjazsKICAgICAgICB9CiAgICAgICAgbGVzcy5sb2dnZXIuZXJyb3IoY29udGVudCk7CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBhZGQ6IGVycm9yLAogICAgICAgIHJlbW92ZTogcmVtb3ZlRXJyb3IKICAgIH07Cn07Cgp9LHsiLi9icm93c2VyIjozLCIuL3V0aWxzIjo5fV0sNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci8qZ2xvYmFsIHdpbmRvdywgWE1MSHR0cFJlcXVlc3QgKi8KCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucywgbG9nZ2VyKSB7CgogICAgdmFyIEFic3RyYWN0RmlsZU1hbmFnZXIgPSByZXF1aXJlKCIuLi9sZXNzL2Vudmlyb25tZW50L2Fic3RyYWN0LWZpbGUtbWFuYWdlci5qcyIpOwoKICAgIHZhciBmaWxlQ2FjaGUgPSB7fTsKCiAgICAvL1RPRE9TIC0gbW92ZSBsb2cgc29tZXdoZXJlLiBwYXRoRGlmZiBhbmQgZG9pbmcgc29tZXRoaW5nIHNpbWlsYXIgaW4gbm9kZS4gdXNlIHBhdGhEaWZmIGluIHRoZSBvdGhlciBicm93c2VyIGZpbGUgZm9yIHRoZSBpbml0aWFsIGxvYWQKCiAgICBmdW5jdGlvbiBnZXRYTUxIdHRwUmVxdWVzdCgpIHsKICAgICAgICBpZiAod2luZG93LlhNTEh0dHBSZXF1ZXN0ICYmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgIT09ICJmaWxlOiIgfHwgISgiQWN0aXZlWE9iamVjdCIgaW4gd2luZG93KSkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAvKmdsb2JhbCBBY3RpdmVYT2JqZWN0ICovCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgQUpBWC4iKTsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHZhciBGaWxlTWFuYWdlciA9IGZ1bmN0aW9uKCkgewogICAgfTsKCiAgICBGaWxlTWFuYWdlci5wcm90b3R5cGUgPSBuZXcgQWJzdHJhY3RGaWxlTWFuYWdlcigpOwoKICAgIEZpbGVNYW5hZ2VyLnByb3RvdHlwZS5hbHdheXNNYWtlUGF0aHNBYnNvbHV0ZSA9IGZ1bmN0aW9uIGFsd2F5c01ha2VQYXRoc0Fic29sdXRlKCkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKICAgIEZpbGVNYW5hZ2VyLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihiYXNlUGF0aCwgbGF0ZXJQYXRoKSB7CiAgICAgICAgaWYgKCFiYXNlUGF0aCkgewogICAgICAgICAgICByZXR1cm4gbGF0ZXJQYXRoOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5leHRyYWN0VXJsUGFydHMobGF0ZXJQYXRoLCBiYXNlUGF0aCkucGF0aDsKICAgIH07CiAgICBGaWxlTWFuYWdlci5wcm90b3R5cGUuZG9YSFIgPSBmdW5jdGlvbiBkb1hIUih1cmwsIHR5cGUsIGNhbGxiYWNrLCBlcnJiYWNrKSB7CgogICAgICAgIHZhciB4aHIgPSBnZXRYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHZhciBhc3luYyA9IG9wdGlvbnMuaXNGaWxlUHJvdG9jb2wgPyBvcHRpb25zLmZpbGVBc3luYyA6IG9wdGlvbnMuYXN5bmM7CgogICAgICAgIGlmICh0eXBlb2YgeGhyLm92ZXJyaWRlTWltZVR5cGUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgeGhyLm92ZXJyaWRlTWltZVR5cGUoJ3RleHQvY3NzJyk7CiAgICAgICAgfQogICAgICAgIGxvZ2dlci5kZWJ1ZygiWEhSOiBHZXR0aW5nICciICsgdXJsICsgIiciKTsKICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCBhc3luYyk7CiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0FjY2VwdCcsIHR5cGUgfHwgJ3RleHQveC1sZXNzLCB0ZXh0L2NzczsgcT0wLjksICovKjsgcT0wLjUnKTsKICAgICAgICB4aHIuc2VuZChudWxsKTsKCiAgICAgICAgZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UoeGhyLCBjYWxsYmFjaywgZXJyYmFjaykgewogICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkgewogICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4dCwKICAgICAgICAgICAgICAgICAgICB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVycmJhY2sgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICAgIGVycmJhY2soeGhyLnN0YXR1cywgdXJsKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKG9wdGlvbnMuaXNGaWxlUHJvdG9jb2wgJiYgIW9wdGlvbnMuZmlsZUFzeW5jKSB7CiAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAwIHx8ICh4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwKSkgewogICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4dCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlcnJiYWNrKHhoci5zdGF0dXMsIHVybCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGFzeW5jKSB7CiAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlc3BvbnNlKHhociwgY2FsbGJhY2ssIGVycmJhY2spOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGhhbmRsZVJlc3BvbnNlKHhociwgY2FsbGJhY2ssIGVycmJhY2spOwogICAgICAgIH0KICAgIH07CiAgICBGaWxlTWFuYWdlci5wcm90b3R5cGUuc3VwcG9ydHMgPSBmdW5jdGlvbihmaWxlbmFtZSwgY3VycmVudERpcmVjdG9yeSwgb3B0aW9ucywgZW52aXJvbm1lbnQpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CgogICAgRmlsZU1hbmFnZXIucHJvdG90eXBlLmNsZWFyRmlsZUNhY2hlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZmlsZUNhY2hlID0ge307CiAgICB9OwoKICAgIEZpbGVNYW5hZ2VyLnByb3RvdHlwZS5sb2FkRmlsZSA9IGZ1bmN0aW9uIGxvYWRGaWxlKGZpbGVuYW1lLCBjdXJyZW50RGlyZWN0b3J5LCBvcHRpb25zLCBlbnZpcm9ubWVudCwgY2FsbGJhY2spIHsKICAgICAgICBpZiAoY3VycmVudERpcmVjdG9yeSAmJiAhdGhpcy5pc1BhdGhBYnNvbHV0ZShmaWxlbmFtZSkpIHsKICAgICAgICAgICAgZmlsZW5hbWUgPSBjdXJyZW50RGlyZWN0b3J5ICsgZmlsZW5hbWU7CiAgICAgICAgfQoKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgICAgICAgLy8gc2hlZXQgbWF5IGJlIHNldCB0byB0aGUgc3R5bGVzaGVldCBmb3IgdGhlIGluaXRpYWwgbG9hZCBvciBhIGNvbGxlY3Rpb24gb2YgcHJvcGVydGllcyBpbmNsdWRpbmcKICAgICAgICAvLyBzb21lIGNvbnRleHQgdmFyaWFibGVzIGZvciBpbXBvcnRzCiAgICAgICAgdmFyIGhyZWZQYXJ0cyA9IHRoaXMuZXh0cmFjdFVybFBhcnRzKGZpbGVuYW1lLCB3aW5kb3cubG9jYXRpb24uaHJlZik7CiAgICAgICAgdmFyIGhyZWYgICAgICA9IGhyZWZQYXJ0cy51cmw7CgogICAgICAgIGlmIChvcHRpb25zLnVzZUZpbGVDYWNoZSAmJiBmaWxlQ2FjaGVbaHJlZl0pIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBsZXNzVGV4dCA9IGZpbGVDYWNoZVtocmVmXTsKICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHsgY29udGVudHM6IGxlc3NUZXh0LCBmaWxlbmFtZTogaHJlZiwgd2ViSW5mbzogeyBsYXN0TW9kaWZpZWQ6IG5ldyBEYXRlKCkgfX0pOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjYWxsYmFjayh7ZmlsZW5hbWU6IGhyZWYsIG1lc3NhZ2U6ICJFcnJvciBsb2FkaW5nIGZpbGUgIiArIGhyZWYgKyAiIGVycm9yIHdhcyAiICsgZS5tZXNzYWdlfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5kb1hIUihocmVmLCBvcHRpb25zLm1pbWUsIGZ1bmN0aW9uIGRvWEhSQ2FsbGJhY2soZGF0YSwgbGFzdE1vZGlmaWVkKSB7CiAgICAgICAgICAgIC8vIHBlciBmaWxlIGNhY2hlCiAgICAgICAgICAgIGZpbGVDYWNoZVtocmVmXSA9IGRhdGE7CgogICAgICAgICAgICAvLyBVc2UgcmVtb3RlIGNvcHkgKHJlLXBhcnNlKQogICAgICAgICAgICBjYWxsYmFjayhudWxsLCB7IGNvbnRlbnRzOiBkYXRhLCBmaWxlbmFtZTogaHJlZiwgd2ViSW5mbzogeyBsYXN0TW9kaWZpZWQ6IGxhc3RNb2RpZmllZCB9fSk7CiAgICAgICAgfSwgZnVuY3Rpb24gZG9YSFJFcnJvcihzdGF0dXMsIHVybCkgewogICAgICAgICAgICBjYWxsYmFjayh7IHR5cGU6ICdGaWxlJywgbWVzc2FnZTogIiciICsgdXJsICsgIicgd2Fzbid0IGZvdW5kICgiICsgc3RhdHVzICsgIikiLCBocmVmOiBocmVmIH0pOwogICAgICAgIH0pOwogICAgfTsKCiAgICByZXR1cm4gRmlsZU1hbmFnZXI7Cn07Cgp9LHsiLi4vbGVzcy9lbnZpcm9ubWVudC9hYnN0cmFjdC1maWxlLW1hbmFnZXIuanMiOjE0fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci8vCi8vIGluZGV4LmpzCi8vIFNob3VsZCBleHBvc2UgdGhlIGFkZGl0aW9uYWwgYnJvd3NlciBmdW5jdGlvbnMgb24gdG8gdGhlIGxlc3Mgb2JqZWN0Ci8vCnZhciBhZGREYXRhQXR0ciA9IHJlcXVpcmUoIi4vdXRpbHMiKS5hZGREYXRhQXR0ciwKICAgIGJyb3dzZXIgPSByZXF1aXJlKCIuL2Jyb3dzZXIiKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24od2luZG93LCBvcHRpb25zKSB7CiAgICB2YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7CiAgICB2YXIgbGVzcyA9IHJlcXVpcmUoJy4uL2xlc3MnKSgpOwogICAgLy9tb2R1bGUuZXhwb3J0cyA9IGxlc3M7CiAgICBsZXNzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgdmFyIGVudmlyb25tZW50ID0gbGVzcy5lbnZpcm9ubWVudCwKICAgICAgICBGaWxlTWFuYWdlciA9IHJlcXVpcmUoIi4vZmlsZS1tYW5hZ2VyIikob3B0aW9ucywgbGVzcy5sb2dnZXIpLAogICAgICAgIGZpbGVNYW5hZ2VyID0gbmV3IEZpbGVNYW5hZ2VyKCk7CiAgICBlbnZpcm9ubWVudC5hZGRGaWxlTWFuYWdlcihmaWxlTWFuYWdlcik7CiAgICBsZXNzLkZpbGVNYW5hZ2VyID0gRmlsZU1hbmFnZXI7CgogICAgcmVxdWlyZSgiLi9sb2ctbGlzdGVuZXIiKShsZXNzLCBvcHRpb25zKTsKICAgIHZhciBlcnJvcnMgPSByZXF1aXJlKCIuL2Vycm9yLXJlcG9ydGluZyIpKHdpbmRvdywgbGVzcywgb3B0aW9ucyk7CiAgICB2YXIgY2FjaGUgPSBsZXNzLmNhY2hlID0gb3B0aW9ucy5jYWNoZSB8fCByZXF1aXJlKCIuL2NhY2hlIikod2luZG93LCBvcHRpb25zLCBsZXNzLmxvZ2dlcik7CgogICAgLy9TZXR1cCB1c2VyIGZ1bmN0aW9ucwogICAgaWYgKG9wdGlvbnMuZnVuY3Rpb25zKSB7CiAgICAgICAgbGVzcy5mdW5jdGlvbnMuZnVuY3Rpb25SZWdpc3RyeS5hZGRNdWx0aXBsZShvcHRpb25zLmZ1bmN0aW9ucyk7CiAgICB9CgogICAgdmFyIHR5cGVQYXR0ZXJuID0gL150ZXh0XC8oeC0pP2xlc3MkLzsKCiAgICBmdW5jdGlvbiBwb3N0UHJvY2Vzc0NTUyhzdHlsZXMpIHsgLy8gZGVwcmVjYXRlZCwgdXNlIGEgcGx1Z2luIGZvciBwb3N0cHJvY2Vzc3Rhc2tzCiAgICAgICAgaWYgKG9wdGlvbnMucG9zdFByb2Nlc3NvciAmJiB0eXBlb2Ygb3B0aW9ucy5wb3N0UHJvY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIHN0eWxlcyA9IG9wdGlvbnMucG9zdFByb2Nlc3Nvci5jYWxsKHN0eWxlcywgc3R5bGVzKSB8fCBzdHlsZXM7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdHlsZXM7CiAgICB9CgogICAgZnVuY3Rpb24gY2xvbmUob2JqKSB7CiAgICAgICAgdmFyIGNsb25lZCA9IHt9OwogICAgICAgIGZvciAodmFyIHByb3AgaW4gb2JqKSB7CiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHsKICAgICAgICAgICAgICAgIGNsb25lZFtwcm9wXSA9IG9ialtwcm9wXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gY2xvbmVkOwogICAgfQoKICAgIC8vIG9ubHkgcmVhbGx5IG5lZWRlZCBmb3IgcGhhbnRvbQogICAgZnVuY3Rpb24gYmluZChmdW5jLCB0aGlzQXJnKSB7CiAgICAgICAgdmFyIGN1cnJ5QXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgYXJncyA9IGN1cnJ5QXJncy5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gbG9hZFN0eWxlcyhtb2RpZnlWYXJzKSB7CiAgICAgICAgdmFyIHN0eWxlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpLAogICAgICAgICAgICBzdHlsZTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc3R5bGUgPSBzdHlsZXNbaV07CiAgICAgICAgICAgIGlmIChzdHlsZS50eXBlLm1hdGNoKHR5cGVQYXR0ZXJuKSkgewogICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlT3B0aW9ucyA9IGNsb25lKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgaW5zdGFuY2VPcHRpb25zLm1vZGlmeVZhcnMgPSBtb2RpZnlWYXJzOwogICAgICAgICAgICAgICAgdmFyIGxlc3NUZXh0ID0gc3R5bGUuaW5uZXJIVE1MIHx8ICcnOwogICAgICAgICAgICAgICAgaW5zdGFuY2VPcHRpb25zLmZpbGVuYW1lID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZi5yZXBsYWNlKC8jLiokLywgJycpOwoKICAgICAgICAgICAgICAgIC8qanNoaW50IGxvb3BmdW5jOnRydWUgKi8KICAgICAgICAgICAgICAgIC8vIHVzZSBjbG9zdXJlIHRvIHN0b3JlIGN1cnJlbnQgc3R5bGUKICAgICAgICAgICAgICAgIGxlc3MucmVuZGVyKGxlc3NUZXh0LCBpbnN0YW5jZU9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQoZnVuY3Rpb24oc3R5bGUsIGUsIHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYWRkKGUsICJpbmxpbmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVzdWx0LmNzczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5pbm5lckhUTUwgPSByZXN1bHQuY3NzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgbnVsbCwgc3R5bGUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkU3R5bGVTaGVldChzaGVldCwgY2FsbGJhY2ssIHJlbG9hZCwgcmVtYWluaW5nLCBtb2RpZnlWYXJzKSB7CgogICAgICAgIHZhciBpbnN0YW5jZU9wdGlvbnMgPSBjbG9uZShvcHRpb25zKTsKICAgICAgICBhZGREYXRhQXR0cihpbnN0YW5jZU9wdGlvbnMsIHNoZWV0KTsKICAgICAgICBpbnN0YW5jZU9wdGlvbnMubWltZSA9IHNoZWV0LnR5cGU7CgogICAgICAgIGlmIChtb2RpZnlWYXJzKSB7CiAgICAgICAgICAgIGluc3RhbmNlT3B0aW9ucy5tb2RpZnlWYXJzID0gbW9kaWZ5VmFyczsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGxvYWRJbml0aWFsRmlsZUNhbGxiYWNrKGxvYWRlZEZpbGUpIHsKCiAgICAgICAgICAgIHZhciBkYXRhID0gbG9hZGVkRmlsZS5jb250ZW50cywKICAgICAgICAgICAgICAgIHBhdGggPSBsb2FkZWRGaWxlLmZpbGVuYW1lLAogICAgICAgICAgICAgICAgd2ViSW5mbyA9IGxvYWRlZEZpbGUud2ViSW5mbzsKCiAgICAgICAgICAgIHZhciBuZXdGaWxlSW5mbyA9IHsKICAgICAgICAgICAgICAgIGN1cnJlbnREaXJlY3Rvcnk6IGZpbGVNYW5hZ2VyLmdldFBhdGgocGF0aCksCiAgICAgICAgICAgICAgICBmaWxlbmFtZTogcGF0aCwKICAgICAgICAgICAgICAgIHJvb3RGaWxlbmFtZTogcGF0aCwKICAgICAgICAgICAgICAgIHJlbGF0aXZlVXJsczogaW5zdGFuY2VPcHRpb25zLnJlbGF0aXZlVXJsc307CgogICAgICAgICAgICBuZXdGaWxlSW5mby5lbnRyeVBhdGggPSBuZXdGaWxlSW5mby5jdXJyZW50RGlyZWN0b3J5OwogICAgICAgICAgICBuZXdGaWxlSW5mby5yb290cGF0aCA9IGluc3RhbmNlT3B0aW9ucy5yb290cGF0aCB8fCBuZXdGaWxlSW5mby5jdXJyZW50RGlyZWN0b3J5OwoKICAgICAgICAgICAgaWYgKHdlYkluZm8pIHsKICAgICAgICAgICAgICAgIHdlYkluZm8ucmVtYWluaW5nID0gcmVtYWluaW5nOwoKICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2VPcHRpb25zLm1vZGlmeVZhcnMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY3NzID0gY2FjaGUuZ2V0Q1NTKHBhdGgsIHdlYkluZm8pOwogICAgICAgICAgICAgICAgICAgIGlmICghcmVsb2FkICYmIGNzcykgewogICAgICAgICAgICAgICAgICAgICAgICB3ZWJJbmZvLmxvY2FsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgY3NzLCBkYXRhLCBzaGVldCwgd2ViSW5mbywgcGF0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vVE9ETyBhZGQgdGVzdHMgYXJvdW5kIGhvdyB0aGlzIGJlaGF2ZXMgd2hlbiByZWxvYWRpbmcKICAgICAgICAgICAgZXJyb3JzLnJlbW92ZShwYXRoKTsKCiAgICAgICAgICAgIGluc3RhbmNlT3B0aW9ucy5yb290RmlsZUluZm8gPSBuZXdGaWxlSW5mbzsKICAgICAgICAgICAgbGVzcy5yZW5kZXIoZGF0YSwgaW5zdGFuY2VPcHRpb25zLCBmdW5jdGlvbihlLCByZXN1bHQpIHsKICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5ocmVmID0gcGF0aDsKICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmNzcyA9IHBvc3RQcm9jZXNzQ1NTKHJlc3VsdC5jc3MpOwogICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2VPcHRpb25zLm1vZGlmeVZhcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUuc2V0Q1NTKHNoZWV0LmhyZWYsIHdlYkluZm8ubGFzdE1vZGlmaWVkLCByZXN1bHQuY3NzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0LmNzcywgZGF0YSwgc2hlZXQsIHdlYkluZm8sIHBhdGgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGZpbGVNYW5hZ2VyLmxvYWRGaWxlKHNoZWV0LmhyZWYsIG51bGwsIGluc3RhbmNlT3B0aW9ucywgZW52aXJvbm1lbnQsIGZ1bmN0aW9uKGUsIGxvYWRlZEZpbGUpIHsKICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgIGNhbGxiYWNrKGUpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxvYWRJbml0aWFsRmlsZUNhbGxiYWNrKGxvYWRlZEZpbGUpOwogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRTdHlsZVNoZWV0cyhjYWxsYmFjaywgcmVsb2FkLCBtb2RpZnlWYXJzKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZXNzLnNoZWV0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBsb2FkU3R5bGVTaGVldChsZXNzLnNoZWV0c1tpXSwgY2FsbGJhY2ssIHJlbG9hZCwgbGVzcy5zaGVldHMubGVuZ3RoIC0gKGkgKyAxKSwgbW9kaWZ5VmFycyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluaXRSdW5uaW5nTW9kZSgpIHsKICAgICAgICBpZiAobGVzcy5lbnYgPT09ICdkZXZlbG9wbWVudCcpIHsKICAgICAgICAgICAgbGVzcy53YXRjaFRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKGxlc3Mud2F0Y2hNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZU1hbmFnZXIuY2xlYXJGaWxlQ2FjaGUoKTsKICAgICAgICAgICAgICAgICAgICBsb2FkU3R5bGVTaGVldHMoZnVuY3Rpb24gKGUsIGNzcywgXywgc2hlZXQsIHdlYkluZm8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hZGQoZSwgZS5ocmVmIHx8IHNoZWV0LmhyZWYpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlci5jcmVhdGVDU1Mod2luZG93LmRvY3VtZW50LCBjc3MsIHNoZWV0KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBvcHRpb25zLnBvbGwpOwogICAgICAgIH0KICAgIH0KCiAgICAvLwogICAgLy8gV2F0Y2ggbW9kZQogICAgLy8KICAgIGxlc3Mud2F0Y2ggICA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAoIWxlc3Mud2F0Y2hNb2RlICkgewogICAgICAgICAgICBsZXNzLmVudiA9ICdkZXZlbG9wbWVudCc7CiAgICAgICAgICAgIGluaXRSdW5uaW5nTW9kZSgpOwogICAgICAgIH0KICAgICAgICB0aGlzLndhdGNoTW9kZSA9IHRydWU7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwoKICAgIGxlc3MudW53YXRjaCA9IGZ1bmN0aW9uICgpIHtjbGVhckludGVydmFsKGxlc3Mud2F0Y2hUaW1lcik7IHRoaXMud2F0Y2hNb2RlID0gZmFsc2U7IHJldHVybiBmYWxzZTsgfTsKCiAgICAvLwogICAgLy8gU3luY2hyb25vdXNseSBnZXQgYWxsIDxsaW5rPiB0YWdzIHdpdGggdGhlICdyZWwnIGF0dHJpYnV0ZSBzZXQgdG8KICAgIC8vICJzdHlsZXNoZWV0L2xlc3MiLgogICAgLy8KICAgIGxlc3MucmVnaXN0ZXJTdHlsZXNoZWV0c0ltbWVkaWF0ZWx5ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGxpbmtzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKTsKICAgICAgICBsZXNzLnNoZWV0cyA9IFtdOwoKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChsaW5rc1tpXS5yZWwgPT09ICdzdHlsZXNoZWV0L2xlc3MnIHx8IChsaW5rc1tpXS5yZWwubWF0Y2goL3N0eWxlc2hlZXQvKSAmJgogICAgICAgICAgICAgICAgKGxpbmtzW2ldLnR5cGUubWF0Y2godHlwZVBhdHRlcm4pKSkpIHsKICAgICAgICAgICAgICAgIGxlc3Muc2hlZXRzLnB1c2gobGlua3NbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvLwogICAgLy8gQXN5bmNocm9ub3VzbHkgZ2V0IGFsbCA8bGluaz4gdGFncyB3aXRoIHRoZSAncmVsJyBhdHRyaWJ1dGUgc2V0IHRvCiAgICAvLyAic3R5bGVzaGVldC9sZXNzIiwgcmV0dXJuaW5nIGEgUHJvbWlzZS4KICAgIC8vCiAgICBsZXNzLnJlZ2lzdGVyU3R5bGVzaGVldHMgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgIGxlc3MucmVnaXN0ZXJTdHlsZXNoZWV0c0ltbWVkaWF0ZWx5KCk7CiAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLy8KICAgIC8vIFdpdGggdGhpcyBmdW5jdGlvbiwgaXQncyBwb3NzaWJsZSB0byBhbHRlciB2YXJpYWJsZXMgYW5kIHJlLXJlbmRlcgogICAgLy8gQ1NTIHdpdGhvdXQgcmVsb2FkaW5nIGxlc3MtZmlsZXMKICAgIC8vCiAgICBsZXNzLm1vZGlmeVZhcnMgPSBmdW5jdGlvbihyZWNvcmQpIHsKICAgICAgICByZXR1cm4gbGVzcy5yZWZyZXNoKHRydWUsIHJlY29yZCwgZmFsc2UpOwogICAgfTsKCiAgICBsZXNzLnJlZnJlc2ggPSBmdW5jdGlvbiAocmVsb2FkLCBtb2RpZnlWYXJzLCBjbGVhckZpbGVDYWNoZSkgewogICAgICAgIGlmICgocmVsb2FkIHx8IGNsZWFyRmlsZUNhY2hlKSAmJiBjbGVhckZpbGVDYWNoZSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgZmlsZU1hbmFnZXIuY2xlYXJGaWxlQ2FjaGUoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgdmFyIHN0YXJ0VGltZSwgZW5kVGltZSwgdG90YWxNaWxsaXNlY29uZHM7CiAgICAgICAgICAgIHN0YXJ0VGltZSA9IGVuZFRpbWUgPSBuZXcgRGF0ZSgpOwoKICAgICAgICAgICAgbG9hZFN0eWxlU2hlZXRzKGZ1bmN0aW9uIChlLCBjc3MsIF8sIHNoZWV0LCB3ZWJJbmZvKSB7CiAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgIGVycm9ycy5hZGQoZSwgZS5ocmVmIHx8IHNoZWV0LmhyZWYpOwogICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAod2ViSW5mby5sb2NhbCkgewogICAgICAgICAgICAgICAgICAgIGxlc3MubG9nZ2VyLmluZm8oImxvYWRpbmcgIiArIHNoZWV0LmhyZWYgKyAiIGZyb20gY2FjaGUuIik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxlc3MubG9nZ2VyLmluZm8oInJlbmRlcmVkICIgKyBzaGVldC5ocmVmICsgIiBzdWNjZXNzZnVsbHkuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicm93c2VyLmNyZWF0ZUNTUyh3aW5kb3cuZG9jdW1lbnQsIGNzcywgc2hlZXQpOwogICAgICAgICAgICAgICAgbGVzcy5sb2dnZXIuaW5mbygiY3NzIGZvciAiICsgc2hlZXQuaHJlZiArICIgZ2VuZXJhdGVkIGluICIgKyAobmV3IERhdGUoKSAtIGVuZFRpbWUpICsgJ21zJyk7CiAgICAgICAgICAgICAgICBpZiAod2ViSW5mby5yZW1haW5pbmcgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICB0b3RhbE1pbGxpc2Vjb25kcyA9IG5ldyBEYXRlKCkgLSBzdGFydFRpbWU7CiAgICAgICAgICAgICAgICAgICAgbGVzcy5sb2dnZXIuaW5mbygibGVzcyBoYXMgZmluaXNoZWQuIGNzcyBnZW5lcmF0ZWQgaW4gIiArIHRvdGFsTWlsbGlzZWNvbmRzICsgJ21zJyk7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICBlbmRUaW1lOiBlbmRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICB0b3RhbE1pbGxpc2Vjb25kczogdG90YWxNaWxsaXNlY29uZHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHNoZWV0czogbGVzcy5zaGVldHMubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbmRUaW1lID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgfSwgcmVsb2FkLCBtb2RpZnlWYXJzKTsKCiAgICAgICAgICAgIGxvYWRTdHlsZXMobW9kaWZ5VmFycyk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIGxlc3MucmVmcmVzaFN0eWxlcyA9IGxvYWRTdHlsZXM7CiAgICByZXR1cm4gbGVzczsKfTsKCn0seyIuLi9sZXNzIjozMCwiLi9icm93c2VyIjozLCIuL2NhY2hlIjo0LCIuL2Vycm9yLXJlcG9ydGluZyI6NSwiLi9maWxlLW1hbmFnZXIiOjYsIi4vbG9nLWxpc3RlbmVyIjo4LCIuL3V0aWxzIjo5fV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obGVzcywgb3B0aW9ucykgewoKICAgIHZhciBsb2dMZXZlbF9kZWJ1ZyA9IDQsCiAgICAgICAgbG9nTGV2ZWxfaW5mbyA9IDMsCiAgICAgICAgbG9nTGV2ZWxfd2FybiA9IDIsCiAgICAgICAgbG9nTGV2ZWxfZXJyb3IgPSAxOwoKICAgIC8vIFRoZSBhbW91bnQgb2YgbG9nZ2luZyBpbiB0aGUgamF2YXNjcmlwdCBjb25zb2xlLgogICAgLy8gMyAtIERlYnVnLCBpbmZvcm1hdGlvbiBhbmQgZXJyb3JzCiAgICAvLyAyIC0gSW5mb3JtYXRpb24gYW5kIGVycm9ycwogICAgLy8gMSAtIEVycm9ycwogICAgLy8gMCAtIE5vbmUKICAgIC8vIERlZmF1bHRzIHRvIDIKICAgIG9wdGlvbnMubG9nTGV2ZWwgPSB0eXBlb2Ygb3B0aW9ucy5sb2dMZXZlbCAhPT0gJ3VuZGVmaW5lZCcgPyBvcHRpb25zLmxvZ0xldmVsIDogKG9wdGlvbnMuZW52ID09PSAnZGV2ZWxvcG1lbnQnID8gIGxvZ0xldmVsX2luZm8gOiBsb2dMZXZlbF9lcnJvcik7CgogICAgaWYgKCFvcHRpb25zLmxvZ2dlcnMpIHsKICAgICAgICBvcHRpb25zLmxvZ2dlcnMgPSBbewogICAgICAgICAgICBkZWJ1ZzogZnVuY3Rpb24obXNnKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dMZXZlbCA+PSBsb2dMZXZlbF9kZWJ1ZykgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGluZm86IGZ1bmN0aW9uKG1zZykgewogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nTGV2ZWwgPj0gbG9nTGV2ZWxfaW5mbykgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHdhcm46IGZ1bmN0aW9uKG1zZykgewogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nTGV2ZWwgPj0gbG9nTGV2ZWxfd2FybikgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24obXNnKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dMZXZlbCA+PSBsb2dMZXZlbF9lcnJvcikgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobXNnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH1dOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxvZ2dlcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBsZXNzLmxvZ2dlci5hZGRMaXN0ZW5lcihvcHRpb25zLmxvZ2dlcnNbaV0pOwogICAgfQp9OwoKfSx7fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cm1vZHVsZS5leHBvcnRzID0gewogICAgZXh0cmFjdElkOiBmdW5jdGlvbihocmVmKSB7CiAgICAgICAgcmV0dXJuIGhyZWYucmVwbGFjZSgvXlthLXotXSs6XC8rP1teXC9dKy8sICcnKSAgLy8gUmVtb3ZlIHByb3RvY29sICYgZG9tYWluCiAgICAgICAgICAgIC5yZXBsYWNlKC9bXD9cJl1saXZlcmVsb2FkPVx3Ky8sICcnKSAgICAgICAgLy8gUmVtb3ZlIExpdmVSZWxvYWQgY2FjaGVidXN0ZXIKICAgICAgICAgICAgLnJlcGxhY2UoL15cLy8sICcnKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgcm9vdCAvCiAgICAgICAgICAgIC5yZXBsYWNlKC9cLlthLXpBLVpdKyQvLCAnJykgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHNpbXBsZSBleHRlbnNpb24KICAgICAgICAgICAgLnJlcGxhY2UoL1teXC5cdy1dKy9nLCAnLScpICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIGlsbGVnYWwgY2hhcmFjdGVycwogICAgICAgICAgICAucmVwbGFjZSgvXC4vZywgJzonKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgZG90cyB3aXRoIGNvbG9ucyhmb3IgdmFsaWQgaWQpCiAgICB9LAogICAgYWRkRGF0YUF0dHI6IGZ1bmN0aW9uKG9wdGlvbnMsIHRhZykgewogICAgICAgIGZvciAodmFyIG9wdCBpbiB0YWcuZGF0YXNldCkgewogICAgICAgICAgICBpZiAodGFnLmRhdGFzZXQuaGFzT3duUHJvcGVydHkob3B0KSkgewogICAgICAgICAgICAgICAgaWYgKG9wdCA9PT0gImVudiIgfHwgb3B0ID09PSAiZHVtcExpbmVOdW1iZXJzIiB8fCBvcHQgPT09ICJyb290cGF0aCIgfHwgb3B0ID09PSAiZXJyb3JSZXBvcnRpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1tvcHRdID0gdGFnLmRhdGFzZXRbb3B0XTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1tvcHRdID0gSlNPTi5wYXJzZSh0YWcuZGF0YXNldFtvcHRdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY2F0Y2goXykge30KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfTsKCn0se31dLDEwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIGNvbnRleHRzID0ge307Cm1vZHVsZS5leHBvcnRzID0gY29udGV4dHM7Cgp2YXIgY29weUZyb21PcmlnaW5hbCA9IGZ1bmN0aW9uIGNvcHlGcm9tT3JpZ2luYWwob3JpZ2luYWwsIGRlc3RpbmF0aW9uLCBwcm9wZXJ0aWVzVG9Db3B5KSB7CiAgICBpZiAoIW9yaWdpbmFsKSB7IHJldHVybjsgfQoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllc1RvQ29weS5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChvcmlnaW5hbC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0aWVzVG9Db3B5W2ldKSkgewogICAgICAgICAgICBkZXN0aW5hdGlvbltwcm9wZXJ0aWVzVG9Db3B5W2ldXSA9IG9yaWdpbmFsW3Byb3BlcnRpZXNUb0NvcHlbaV1dOwogICAgICAgIH0KICAgIH0KfTsKCi8qCiBwYXJzZSBpcyB1c2VkIHdoaWxzdCBwYXJzaW5nCiAqLwp2YXIgcGFyc2VDb3B5UHJvcGVydGllcyA9IFsKICAgIC8vIG9wdGlvbnMKICAgICdwYXRocycsICAgICAgICAgICAgLy8gb3B0aW9uIC0gdW5tb2RpZmllZCAtIHBhdGhzIHRvIHNlYXJjaCBmb3IgaW1wb3J0cyBvbgogICAgJ3JlbGF0aXZlVXJscycsICAgICAvLyBvcHRpb24gLSB3aGV0aGVyIHRvIGFkanVzdCBVUkwncyB0byBiZSByZWxhdGl2ZQogICAgJ3Jvb3RwYXRoJywgICAgICAgICAvLyBvcHRpb24gLSByb290cGF0aCB0byBhcHBlbmQgdG8gVVJMJ3MKICAgICdzdHJpY3RJbXBvcnRzJywgICAgLy8gb3B0aW9uIC0KICAgICdpbnNlY3VyZScsICAgICAgICAgLy8gb3B0aW9uIC0gd2hldGhlciB0byBhbGxvdyBpbXBvcnRzIGZyb20gaW5zZWN1cmUgc3NsIGhvc3RzCiAgICAnZHVtcExpbmVOdW1iZXJzJywgIC8vIG9wdGlvbiAtIHdoZXRoZXIgdG8gZHVtcCBsaW5lIG51bWJlcnMKICAgICdjb21wcmVzcycsICAgICAgICAgLy8gb3B0aW9uIC0gd2hldGhlciB0byBjb21wcmVzcwogICAgJ3N5bmNJbXBvcnQnLCAgICAgICAvLyBvcHRpb24gLSB3aGV0aGVyIHRvIGltcG9ydCBzeW5jaHJvbm91c2x5CiAgICAnY2h1bmtJbnB1dCcsICAgICAgIC8vIG9wdGlvbiAtIHdoZXRoZXIgdG8gY2h1bmsgaW5wdXQuIG1vcmUgcGVyZm9ybWFudCBidXQgY2F1c2VzIHBhcnNlIGlzc3Vlcy4KICAgICdtaW1lJywgICAgICAgICAgICAgLy8gYnJvd3NlciBvbmx5IC0gbWltZSB0eXBlIGZvciBzaGVldCBpbXBvcnQKICAgICd1c2VGaWxlQ2FjaGUnLCAgICAgLy8gYnJvd3NlciBvbmx5IC0gd2hldGhlciB0byB1c2UgdGhlIHBlciBmaWxlIHNlc3Npb24gY2FjaGUKICAgIC8vIGNvbnRleHQKICAgICdwcm9jZXNzSW1wb3J0cycsICAgLy8gb3B0aW9uICYgY29udGV4dCAtIHdoZXRoZXIgdG8gcHJvY2VzcyBpbXBvcnRzLiBpZiBmYWxzZSB0aGVuIGltcG9ydHMgd2lsbCBub3QgYmUgaW1wb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZWQgYnkgdGhlIGltcG9ydCBtYW5hZ2VyIHRvIHN0b3AgbXVsdGlwbGUgaW1wb3J0IHZpc2l0b3JzIGJlaW5nIGNyZWF0ZWQuCiAgICAncmVmZXJlbmNlJywgICAgICAgIC8vIFVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY29udGVudHMgYXJlIGltcG9ydGVkIGJ5IHJlZmVyZW5jZQogICAgJ3BsdWdpbk1hbmFnZXInICAgICAvLyBVc2VkIGFzIHRoZSBwbHVnaW4gbWFuYWdlciBmb3IgdGhlIHNlc3Npb24KXTsKCmNvbnRleHRzLlBhcnNlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgY29weUZyb21PcmlnaW5hbChvcHRpb25zLCB0aGlzLCBwYXJzZUNvcHlQcm9wZXJ0aWVzKTsKCiAgICBpZiAodHlwZW9mIHRoaXMucGF0aHMgPT09ICJzdHJpbmciKSB7IHRoaXMucGF0aHMgPSBbdGhpcy5wYXRoc107IH0KfTsKCnZhciBldmFsQ29weVByb3BlcnRpZXMgPSBbCiAgICAncGF0aHMnLCAgICAgICAgICAvLyBhZGRpdGlvbmFsIGluY2x1ZGUgcGF0aHMKICAgICdjb21wcmVzcycsICAgICAgIC8vIHdoZXRoZXIgdG8gY29tcHJlc3MKICAgICdpZUNvbXBhdCcsICAgICAgIC8vIHdoZXRoZXIgdG8gZW5mb3JjZSBJRSBjb21wYXRpYmlsaXR5IChJRTggZGF0YS11cmkpCiAgICAnc3RyaWN0TWF0aCcsICAgICAvLyB3aGV0aGVyIG1hdGggaGFzIHRvIGJlIHdpdGhpbiBwYXJlbnRoZXNpcwogICAgJ3N0cmljdFVuaXRzJywgICAgLy8gd2hldGhlciB1bml0cyBuZWVkIHRvIGV2YWx1YXRlIGNvcnJlY3RseQogICAgJ3NvdXJjZU1hcCcsICAgICAgLy8gd2hldGhlciB0byBvdXRwdXQgYSBzb3VyY2UgbWFwCiAgICAnaW1wb3J0TXVsdGlwbGUnLCAvLyB3aGV0aGVyIHdlIGFyZSBjdXJyZW50bHkgaW1wb3J0aW5nIG11bHRpcGxlIGNvcGllcwogICAgJ3VybEFyZ3MnLCAgICAgICAgLy8gd2hldGhlciB0byBhZGQgYXJncyBpbnRvIHVybCB0b2tlbnMKICAgICdqYXZhc2NyaXB0RW5hYmxlZCcsLy8gb3B0aW9uIC0gd2hldGhlciBKYXZhU2NyaXB0IGlzIGVuYWJsZWQuIGlmIHVuZGVmaW5lZCwgZGVmYXVsdHMgdG8gdHJ1ZQogICAgJ3BsdWdpbk1hbmFnZXInLCAgLy8gVXNlZCBhcyB0aGUgcGx1Z2luIG1hbmFnZXIgZm9yIHRoZSBzZXNzaW9uCiAgICAnaW1wb3J0YW50U2NvcGUnICAvLyB1c2VkIHRvIGJ1YmJsZSB1cCAhaW1wb3J0YW50IHN0YXRlbWVudHMKICAgIF07Cgpjb250ZXh0cy5FdmFsID0gZnVuY3Rpb24ob3B0aW9ucywgZnJhbWVzKSB7CiAgICBjb3B5RnJvbU9yaWdpbmFsKG9wdGlvbnMsIHRoaXMsIGV2YWxDb3B5UHJvcGVydGllcyk7CgogICAgaWYgKHR5cGVvZiB0aGlzLnBhdGhzID09PSAic3RyaW5nIikgeyB0aGlzLnBhdGhzID0gW3RoaXMucGF0aHNdOyB9CgogICAgdGhpcy5mcmFtZXMgPSBmcmFtZXMgfHwgW107CiAgICB0aGlzLmltcG9ydGFudFNjb3BlID0gdGhpcy5pbXBvcnRhbnRTY29wZSB8fCBbXTsKfTsKCmNvbnRleHRzLkV2YWwucHJvdG90eXBlLmluUGFyZW50aGVzaXMgPSBmdW5jdGlvbiAoKSB7CiAgICBpZiAoIXRoaXMucGFyZW5zU3RhY2spIHsKICAgICAgICB0aGlzLnBhcmVuc1N0YWNrID0gW107CiAgICB9CiAgICB0aGlzLnBhcmVuc1N0YWNrLnB1c2godHJ1ZSk7Cn07Cgpjb250ZXh0cy5FdmFsLnByb3RvdHlwZS5vdXRPZlBhcmVudGhlc2lzID0gZnVuY3Rpb24gKCkgewogICAgdGhpcy5wYXJlbnNTdGFjay5wb3AoKTsKfTsKCmNvbnRleHRzLkV2YWwucHJvdG90eXBlLmlzTWF0aE9uID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHRoaXMuc3RyaWN0TWF0aCA/ICh0aGlzLnBhcmVuc1N0YWNrICYmIHRoaXMucGFyZW5zU3RhY2subGVuZ3RoKSA6IHRydWU7Cn07Cgpjb250ZXh0cy5FdmFsLnByb3RvdHlwZS5pc1BhdGhSZWxhdGl2ZSA9IGZ1bmN0aW9uIChwYXRoKSB7CiAgICByZXR1cm4gIS9eKD86W2Etei1dKzp8XC98IykvaS50ZXN0KHBhdGgpOwp9OwoKY29udGV4dHMuRXZhbC5wcm90b3R5cGUubm9ybWFsaXplUGF0aCA9IGZ1bmN0aW9uKCBwYXRoICkgewogICAgdmFyCiAgICAgIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKSwKICAgICAgc2VnbWVudDsKCiAgICBwYXRoID0gW107CiAgICB3aGlsZSAoc2VnbWVudHMubGVuZ3RoICE9PSAwICkgewogICAgICAgIHNlZ21lbnQgPSBzZWdtZW50cy5wb3AoKTsKICAgICAgICBzd2l0Y2goIHNlZ21lbnQgKSB7CiAgICAgICAgICAgIGNhc2UgIi4iOgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIi4uIjoKICAgICAgICAgICAgICAgIGlmICgocGF0aC5sZW5ndGggPT09IDApIHx8IChwYXRoW3BhdGgubGVuZ3RoIC0gMV0gPT09ICIuLiIpKSB7CiAgICAgICAgICAgICAgICAgICAgcGF0aC5wdXNoKCBzZWdtZW50ICk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHBhdGgucG9wKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHBhdGgucHVzaCggc2VnbWVudCApOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBwYXRoLmpvaW4oIi8iKTsKfTsKCi8vdG9kbyAtIGRvIHRoZSBzYW1lIGZvciB0aGUgdG9DU1MgPwoKfSx7fV0sMTE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewptb2R1bGUuZXhwb3J0cyA9IHsKICAgICdhbGljZWJsdWUnOicjZjBmOGZmJywKICAgICdhbnRpcXVld2hpdGUnOicjZmFlYmQ3JywKICAgICdhcXVhJzonIzAwZmZmZicsCiAgICAnYXF1YW1hcmluZSc6JyM3ZmZmZDQnLAogICAgJ2F6dXJlJzonI2YwZmZmZicsCiAgICAnYmVpZ2UnOicjZjVmNWRjJywKICAgICdiaXNxdWUnOicjZmZlNGM0JywKICAgICdibGFjayc6JyMwMDAwMDAnLAogICAgJ2JsYW5jaGVkYWxtb25kJzonI2ZmZWJjZCcsCiAgICAnYmx1ZSc6JyMwMDAwZmYnLAogICAgJ2JsdWV2aW9sZXQnOicjOGEyYmUyJywKICAgICdicm93bic6JyNhNTJhMmEnLAogICAgJ2J1cmx5d29vZCc6JyNkZWI4ODcnLAogICAgJ2NhZGV0Ymx1ZSc6JyM1ZjllYTAnLAogICAgJ2NoYXJ0cmV1c2UnOicjN2ZmZjAwJywKICAgICdjaG9jb2xhdGUnOicjZDI2OTFlJywKICAgICdjb3JhbCc6JyNmZjdmNTAnLAogICAgJ2Nvcm5mbG93ZXJibHVlJzonIzY0OTVlZCcsCiAgICAnY29ybnNpbGsnOicjZmZmOGRjJywKICAgICdjcmltc29uJzonI2RjMTQzYycsCiAgICAnY3lhbic6JyMwMGZmZmYnLAogICAgJ2RhcmtibHVlJzonIzAwMDA4YicsCiAgICAnZGFya2N5YW4nOicjMDA4YjhiJywKICAgICdkYXJrZ29sZGVucm9kJzonI2I4ODYwYicsCiAgICAnZGFya2dyYXknOicjYTlhOWE5JywKICAgICdkYXJrZ3JleSc6JyNhOWE5YTknLAogICAgJ2RhcmtncmVlbic6JyMwMDY0MDAnLAogICAgJ2RhcmtraGFraSc6JyNiZGI3NmInLAogICAgJ2RhcmttYWdlbnRhJzonIzhiMDA4YicsCiAgICAnZGFya29saXZlZ3JlZW4nOicjNTU2YjJmJywKICAgICdkYXJrb3JhbmdlJzonI2ZmOGMwMCcsCiAgICAnZGFya29yY2hpZCc6JyM5OTMyY2MnLAogICAgJ2RhcmtyZWQnOicjOGIwMDAwJywKICAgICdkYXJrc2FsbW9uJzonI2U5OTY3YScsCiAgICAnZGFya3NlYWdyZWVuJzonIzhmYmM4ZicsCiAgICAnZGFya3NsYXRlYmx1ZSc6JyM0ODNkOGInLAogICAgJ2RhcmtzbGF0ZWdyYXknOicjMmY0ZjRmJywKICAgICdkYXJrc2xhdGVncmV5JzonIzJmNGY0ZicsCiAgICAnZGFya3R1cnF1b2lzZSc6JyMwMGNlZDEnLAogICAgJ2Rhcmt2aW9sZXQnOicjOTQwMGQzJywKICAgICdkZWVwcGluayc6JyNmZjE0OTMnLAogICAgJ2RlZXBza3libHVlJzonIzAwYmZmZicsCiAgICAnZGltZ3JheSc6JyM2OTY5NjknLAogICAgJ2RpbWdyZXknOicjNjk2OTY5JywKICAgICdkb2RnZXJibHVlJzonIzFlOTBmZicsCiAgICAnZmlyZWJyaWNrJzonI2IyMjIyMicsCiAgICAnZmxvcmFsd2hpdGUnOicjZmZmYWYwJywKICAgICdmb3Jlc3RncmVlbic6JyMyMjhiMjInLAogICAgJ2Z1Y2hzaWEnOicjZmYwMGZmJywKICAgICdnYWluc2Jvcm8nOicjZGNkY2RjJywKICAgICdnaG9zdHdoaXRlJzonI2Y4ZjhmZicsCiAgICAnZ29sZCc6JyNmZmQ3MDAnLAogICAgJ2dvbGRlbnJvZCc6JyNkYWE1MjAnLAogICAgJ2dyYXknOicjODA4MDgwJywKICAgICdncmV5JzonIzgwODA4MCcsCiAgICAnZ3JlZW4nOicjMDA4MDAwJywKICAgICdncmVlbnllbGxvdyc6JyNhZGZmMmYnLAogICAgJ2hvbmV5ZGV3JzonI2YwZmZmMCcsCiAgICAnaG90cGluayc6JyNmZjY5YjQnLAogICAgJ2luZGlhbnJlZCc6JyNjZDVjNWMnLAogICAgJ2luZGlnbyc6JyM0YjAwODInLAogICAgJ2l2b3J5JzonI2ZmZmZmMCcsCiAgICAna2hha2knOicjZjBlNjhjJywKICAgICdsYXZlbmRlcic6JyNlNmU2ZmEnLAogICAgJ2xhdmVuZGVyYmx1c2gnOicjZmZmMGY1JywKICAgICdsYXduZ3JlZW4nOicjN2NmYzAwJywKICAgICdsZW1vbmNoaWZmb24nOicjZmZmYWNkJywKICAgICdsaWdodGJsdWUnOicjYWRkOGU2JywKICAgICdsaWdodGNvcmFsJzonI2YwODA4MCcsCiAgICAnbGlnaHRjeWFuJzonI2UwZmZmZicsCiAgICAnbGlnaHRnb2xkZW5yb2R5ZWxsb3cnOicjZmFmYWQyJywKICAgICdsaWdodGdyYXknOicjZDNkM2QzJywKICAgICdsaWdodGdyZXknOicjZDNkM2QzJywKICAgICdsaWdodGdyZWVuJzonIzkwZWU5MCcsCiAgICAnbGlnaHRwaW5rJzonI2ZmYjZjMScsCiAgICAnbGlnaHRzYWxtb24nOicjZmZhMDdhJywKICAgICdsaWdodHNlYWdyZWVuJzonIzIwYjJhYScsCiAgICAnbGlnaHRza3libHVlJzonIzg3Y2VmYScsCiAgICAnbGlnaHRzbGF0ZWdyYXknOicjNzc4ODk5JywKICAgICdsaWdodHNsYXRlZ3JleSc6JyM3Nzg4OTknLAogICAgJ2xpZ2h0c3RlZWxibHVlJzonI2IwYzRkZScsCiAgICAnbGlnaHR5ZWxsb3cnOicjZmZmZmUwJywKICAgICdsaW1lJzonIzAwZmYwMCcsCiAgICAnbGltZWdyZWVuJzonIzMyY2QzMicsCiAgICAnbGluZW4nOicjZmFmMGU2JywKICAgICdtYWdlbnRhJzonI2ZmMDBmZicsCiAgICAnbWFyb29uJzonIzgwMDAwMCcsCiAgICAnbWVkaXVtYXF1YW1hcmluZSc6JyM2NmNkYWEnLAogICAgJ21lZGl1bWJsdWUnOicjMDAwMGNkJywKICAgICdtZWRpdW1vcmNoaWQnOicjYmE1NWQzJywKICAgICdtZWRpdW1wdXJwbGUnOicjOTM3MGQ4JywKICAgICdtZWRpdW1zZWFncmVlbic6JyMzY2IzNzEnLAogICAgJ21lZGl1bXNsYXRlYmx1ZSc6JyM3YjY4ZWUnLAogICAgJ21lZGl1bXNwcmluZ2dyZWVuJzonIzAwZmE5YScsCiAgICAnbWVkaXVtdHVycXVvaXNlJzonIzQ4ZDFjYycsCiAgICAnbWVkaXVtdmlvbGV0cmVkJzonI2M3MTU4NScsCiAgICAnbWlkbmlnaHRibHVlJzonIzE5MTk3MCcsCiAgICAnbWludGNyZWFtJzonI2Y1ZmZmYScsCiAgICAnbWlzdHlyb3NlJzonI2ZmZTRlMScsCiAgICAnbW9jY2FzaW4nOicjZmZlNGI1JywKICAgICduYXZham93aGl0ZSc6JyNmZmRlYWQnLAogICAgJ25hdnknOicjMDAwMDgwJywKICAgICdvbGRsYWNlJzonI2ZkZjVlNicsCiAgICAnb2xpdmUnOicjODA4MDAwJywKICAgICdvbGl2ZWRyYWInOicjNmI4ZTIzJywKICAgICdvcmFuZ2UnOicjZmZhNTAwJywKICAgICdvcmFuZ2VyZWQnOicjZmY0NTAwJywKICAgICdvcmNoaWQnOicjZGE3MGQ2JywKICAgICdwYWxlZ29sZGVucm9kJzonI2VlZThhYScsCiAgICAncGFsZWdyZWVuJzonIzk4ZmI5OCcsCiAgICAncGFsZXR1cnF1b2lzZSc6JyNhZmVlZWUnLAogICAgJ3BhbGV2aW9sZXRyZWQnOicjZDg3MDkzJywKICAgICdwYXBheWF3aGlwJzonI2ZmZWZkNScsCiAgICAncGVhY2hwdWZmJzonI2ZmZGFiOScsCiAgICAncGVydSc6JyNjZDg1M2YnLAogICAgJ3BpbmsnOicjZmZjMGNiJywKICAgICdwbHVtJzonI2RkYTBkZCcsCiAgICAncG93ZGVyYmx1ZSc6JyNiMGUwZTYnLAogICAgJ3B1cnBsZSc6JyM4MDAwODAnLAogICAgJ3JlYmVjY2FwdXJwbGUnOicjNjYzMzk5JywKICAgICdyZWQnOicjZmYwMDAwJywKICAgICdyb3N5YnJvd24nOicjYmM4ZjhmJywKICAgICdyb3lhbGJsdWUnOicjNDE2OWUxJywKICAgICdzYWRkbGVicm93bic6JyM4YjQ1MTMnLAogICAgJ3NhbG1vbic6JyNmYTgwNzInLAogICAgJ3NhbmR5YnJvd24nOicjZjRhNDYwJywKICAgICdzZWFncmVlbic6JyMyZThiNTcnLAogICAgJ3NlYXNoZWxsJzonI2ZmZjVlZScsCiAgICAnc2llbm5hJzonI2EwNTIyZCcsCiAgICAnc2lsdmVyJzonI2MwYzBjMCcsCiAgICAnc2t5Ymx1ZSc6JyM4N2NlZWInLAogICAgJ3NsYXRlYmx1ZSc6JyM2YTVhY2QnLAogICAgJ3NsYXRlZ3JheSc6JyM3MDgwOTAnLAogICAgJ3NsYXRlZ3JleSc6JyM3MDgwOTAnLAogICAgJ3Nub3cnOicjZmZmYWZhJywKICAgICdzcHJpbmdncmVlbic6JyMwMGZmN2YnLAogICAgJ3N0ZWVsYmx1ZSc6JyM0NjgyYjQnLAogICAgJ3Rhbic6JyNkMmI0OGMnLAogICAgJ3RlYWwnOicjMDA4MDgwJywKICAgICd0aGlzdGxlJzonI2Q4YmZkOCcsCiAgICAndG9tYXRvJzonI2ZmNjM0NycsCiAgICAndHVycXVvaXNlJzonIzQwZTBkMCcsCiAgICAndmlvbGV0JzonI2VlODJlZScsCiAgICAnd2hlYXQnOicjZjVkZWIzJywKICAgICd3aGl0ZSc6JyNmZmZmZmYnLAogICAgJ3doaXRlc21va2UnOicjZjVmNWY1JywKICAgICd5ZWxsb3cnOicjZmZmZjAwJywKICAgICd5ZWxsb3dncmVlbic6JyM5YWNkMzInCn07Cn0se31dLDEyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBjb2xvcnM6IHJlcXVpcmUoIi4vY29sb3JzIiksCiAgICB1bml0Q29udmVyc2lvbnM6IHJlcXVpcmUoIi4vdW5pdC1jb252ZXJzaW9ucyIpCn07Cgp9LHsiLi9jb2xvcnMiOjExLCIuL3VuaXQtY29udmVyc2lvbnMiOjEzfV0sMTM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewptb2R1bGUuZXhwb3J0cyA9IHsKICAgIGxlbmd0aDogewogICAgICAgICdtJzogMSwKICAgICAgICAnY20nOiAwLjAxLAogICAgICAgICdtbSc6IDAuMDAxLAogICAgICAgICdpbic6IDAuMDI1NCwKICAgICAgICAncHgnOiAwLjAyNTQgLyA5NiwKICAgICAgICAncHQnOiAwLjAyNTQgLyA3MiwKICAgICAgICAncGMnOiAwLjAyNTQgLyA3MiAqIDEyCiAgICB9LAogICAgZHVyYXRpb246IHsKICAgICAgICAncyc6IDEsCiAgICAgICAgJ21zJzogMC4wMDEKICAgIH0sCiAgICBhbmdsZTogewogICAgICAgICdyYWQnOiAxIC8gKDIgKiBNYXRoLlBJKSwKICAgICAgICAnZGVnJzogMSAvIDM2MCwKICAgICAgICAnZ3JhZCc6IDEgLyA0MDAsCiAgICAgICAgJ3R1cm4nOiAxCiAgICB9Cn07Cn0se31dLDE0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIGFic3RyYWN0RmlsZU1hbmFnZXIgPSBmdW5jdGlvbigpIHsKfTsKCmFic3RyYWN0RmlsZU1hbmFnZXIucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAoZmlsZW5hbWUpIHsKICAgIHZhciBqID0gZmlsZW5hbWUubGFzdEluZGV4T2YoJz8nKTsKICAgIGlmIChqID4gMCkgewogICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc2xpY2UoMCwgaik7CiAgICB9CiAgICBqID0gZmlsZW5hbWUubGFzdEluZGV4T2YoJy8nKTsKICAgIGlmIChqIDwgMCkgewogICAgICAgIGogPSBmaWxlbmFtZS5sYXN0SW5kZXhPZignXFwnKTsKICAgIH0KICAgIGlmIChqIDwgMCkgewogICAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIHJldHVybiBmaWxlbmFtZS5zbGljZSgwLCBqICsgMSk7Cn07CgphYnN0cmFjdEZpbGVNYW5hZ2VyLnByb3RvdHlwZS50cnlBcHBlbmRFeHRlbnNpb24gPSBmdW5jdGlvbihwYXRoLCBleHQpIHsKICAgIHJldHVybiAvKFwuW2Etel0qJCl8KFtcPztdLiopJC8udGVzdChwYXRoKSA/IHBhdGggOiBwYXRoICsgZXh0Owp9OwoKYWJzdHJhY3RGaWxlTWFuYWdlci5wcm90b3R5cGUudHJ5QXBwZW5kTGVzc0V4dGVuc2lvbiA9IGZ1bmN0aW9uKHBhdGgpIHsKICAgIHJldHVybiB0aGlzLnRyeUFwcGVuZEV4dGVuc2lvbihwYXRoLCAnLmxlc3MnKTsKfTsKCmFic3RyYWN0RmlsZU1hbmFnZXIucHJvdG90eXBlLnN1cHBvcnRzU3luYyA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGZhbHNlOwp9OwoKYWJzdHJhY3RGaWxlTWFuYWdlci5wcm90b3R5cGUuYWx3YXlzTWFrZVBhdGhzQWJzb2x1dGUgPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiBmYWxzZTsKfTsKCmFic3RyYWN0RmlsZU1hbmFnZXIucHJvdG90eXBlLmlzUGF0aEFic29sdXRlID0gZnVuY3Rpb24oZmlsZW5hbWUpIHsKICAgIHJldHVybiAoL14oPzpbYS16LV0rOnxcL3xcXHwjKS9pKS50ZXN0KGZpbGVuYW1lKTsKfTsKCmFic3RyYWN0RmlsZU1hbmFnZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbihiYXNlUGF0aCwgbGF0ZXJQYXRoKSB7CiAgICBpZiAoIWJhc2VQYXRoKSB7CiAgICAgICAgcmV0dXJuIGxhdGVyUGF0aDsKICAgIH0KICAgIHJldHVybiBiYXNlUGF0aCArIGxhdGVyUGF0aDsKfTsKYWJzdHJhY3RGaWxlTWFuYWdlci5wcm90b3R5cGUucGF0aERpZmYgPSBmdW5jdGlvbiBwYXRoRGlmZih1cmwsIGJhc2VVcmwpIHsKICAgIC8vIGRpZmYgYmV0d2VlbiB0d28gcGF0aHMgdG8gY3JlYXRlIGEgcmVsYXRpdmUgcGF0aAoKICAgIHZhciB1cmxQYXJ0cyA9IHRoaXMuZXh0cmFjdFVybFBhcnRzKHVybCksCiAgICAgICAgYmFzZVVybFBhcnRzID0gdGhpcy5leHRyYWN0VXJsUGFydHMoYmFzZVVybCksCiAgICAgICAgaSwgbWF4LCB1cmxEaXJlY3RvcmllcywgYmFzZVVybERpcmVjdG9yaWVzLCBkaWZmID0gIiI7CiAgICBpZiAodXJsUGFydHMuaG9zdFBhcnQgIT09IGJhc2VVcmxQYXJ0cy5ob3N0UGFydCkgewogICAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIG1heCA9IE1hdGgubWF4KGJhc2VVcmxQYXJ0cy5kaXJlY3Rvcmllcy5sZW5ndGgsIHVybFBhcnRzLmRpcmVjdG9yaWVzLmxlbmd0aCk7CiAgICBmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspIHsKICAgICAgICBpZiAoYmFzZVVybFBhcnRzLmRpcmVjdG9yaWVzW2ldICE9PSB1cmxQYXJ0cy5kaXJlY3Rvcmllc1tpXSkgeyBicmVhazsgfQogICAgfQogICAgYmFzZVVybERpcmVjdG9yaWVzID0gYmFzZVVybFBhcnRzLmRpcmVjdG9yaWVzLnNsaWNlKGkpOwogICAgdXJsRGlyZWN0b3JpZXMgPSB1cmxQYXJ0cy5kaXJlY3Rvcmllcy5zbGljZShpKTsKICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlVXJsRGlyZWN0b3JpZXMubGVuZ3RoIC0gMTsgaSsrKSB7CiAgICAgICAgZGlmZiArPSAiLi4vIjsKICAgIH0KICAgIGZvciAoaSA9IDA7IGkgPCB1cmxEaXJlY3Rvcmllcy5sZW5ndGggLSAxOyBpKyspIHsKICAgICAgICBkaWZmICs9IHVybERpcmVjdG9yaWVzW2ldICsgIi8iOwogICAgfQogICAgcmV0dXJuIGRpZmY7Cn07Ci8vIGhlbHBlciBmdW5jdGlvbiwgbm90IHBhcnQgb2YgQVBJCmFic3RyYWN0RmlsZU1hbmFnZXIucHJvdG90eXBlLmV4dHJhY3RVcmxQYXJ0cyA9IGZ1bmN0aW9uIGV4dHJhY3RVcmxQYXJ0cyh1cmwsIGJhc2VVcmwpIHsKICAgIC8vIHVybFBhcnRzWzFdID0gcHJvdG9jb2wmaG9zdG5hbWUgfHwgLwogICAgLy8gdXJsUGFydHNbMl0gPSAvIGlmIHBhdGggcmVsYXRpdmUgdG8gaG9zdCBiYXNlCiAgICAvLyB1cmxQYXJ0c1szXSA9IGRpcmVjdG9yaWVzCiAgICAvLyB1cmxQYXJ0c1s0XSA9IGZpbGVuYW1lCiAgICAvLyB1cmxQYXJ0c1s1XSA9IHBhcmFtZXRlcnMKCiAgICB2YXIgdXJsUGFydHNSZWdleCA9IC9eKCg/OlthLXotXSs6KT9cLys/KD86W15cL1w/I10qXC8pfChbXC9cXF0pKT8oKD86W15cL1xcXD8jXSpbXC9cXF0pKikoW15cL1xcXD8jXSopKFsjXD9dLiopPyQvaSwKICAgICAgICB1cmxQYXJ0cyA9IHVybC5tYXRjaCh1cmxQYXJ0c1JlZ2V4KSwKICAgICAgICByZXR1cm5lciA9IHt9LCBkaXJlY3RvcmllcyA9IFtdLCBpLCBiYXNlVXJsUGFydHM7CgogICAgaWYgKCF1cmxQYXJ0cykgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IHBhcnNlIHNoZWV0IGhyZWYgLSAnIiArIHVybCArICInIik7CiAgICB9CgogICAgLy8gU3R5bGVzaGVldHMgaW4gSUUgZG9uJ3QgYWx3YXlzIHJldHVybiB0aGUgZnVsbCBwYXRoCiAgICBpZiAoYmFzZVVybCAmJiAoIXVybFBhcnRzWzFdIHx8IHVybFBhcnRzWzJdKSkgewogICAgICAgIGJhc2VVcmxQYXJ0cyA9IGJhc2VVcmwubWF0Y2godXJsUGFydHNSZWdleCk7CiAgICAgICAgaWYgKCFiYXNlVXJsUGFydHMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgcGFyc2UgcGFnZSB1cmwgLSAnIiArIGJhc2VVcmwgKyAiJyIpOwogICAgICAgIH0KICAgICAgICB1cmxQYXJ0c1sxXSA9IHVybFBhcnRzWzFdIHx8IGJhc2VVcmxQYXJ0c1sxXSB8fCAiIjsKICAgICAgICBpZiAoIXVybFBhcnRzWzJdKSB7CiAgICAgICAgICAgIHVybFBhcnRzWzNdID0gYmFzZVVybFBhcnRzWzNdICsgdXJsUGFydHNbM107CiAgICAgICAgfQogICAgfQoKICAgIGlmICh1cmxQYXJ0c1szXSkgewogICAgICAgIGRpcmVjdG9yaWVzID0gdXJsUGFydHNbM10ucmVwbGFjZSgvXFwvZywgIi8iKS5zcGxpdCgiLyIpOwoKICAgICAgICAvLyBleHRyYWN0IG91dCAuIGJlZm9yZSAuLiBzbyAuLiBkb2Vzbid0IGFic29yYiBhIG5vbi1kaXJlY3RvcnkKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGlyZWN0b3JpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRpcmVjdG9yaWVzW2ldID09PSAiLiIpIHsKICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgIGkgLT0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRpcmVjdG9yaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChkaXJlY3Rvcmllc1tpXSA9PT0gIi4uIiAmJiBpID4gMCkgewogICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuc3BsaWNlKGkgLSAxLCAyKTsKICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm5lci5ob3N0UGFydCA9IHVybFBhcnRzWzFdOwogICAgcmV0dXJuZXIuZGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllczsKICAgIHJldHVybmVyLnBhdGggPSAodXJsUGFydHNbMV0gfHwgIiIpICsgZGlyZWN0b3JpZXMuam9pbigiLyIpOwogICAgcmV0dXJuZXIuZmlsZVVybCA9IHJldHVybmVyLnBhdGggKyAodXJsUGFydHNbNF0gfHwgIiIpOwogICAgcmV0dXJuZXIudXJsID0gcmV0dXJuZXIuZmlsZVVybCArICh1cmxQYXJ0c1s1XSB8fCAiIik7CiAgICByZXR1cm4gcmV0dXJuZXI7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IGFic3RyYWN0RmlsZU1hbmFnZXI7Cgp9LHt9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBsb2dnZXIgPSByZXF1aXJlKCIuLi9sb2dnZXIiKTsKdmFyIGVudmlyb25tZW50ID0gZnVuY3Rpb24oZXh0ZXJuYWxFbnZpcm9ubWVudCwgZmlsZU1hbmFnZXJzKSB7CiAgICB0aGlzLmZpbGVNYW5hZ2VycyA9IGZpbGVNYW5hZ2VycyB8fCBbXTsKICAgIGV4dGVybmFsRW52aXJvbm1lbnQgPSBleHRlcm5hbEVudmlyb25tZW50IHx8IHt9OwoKICAgIHZhciBvcHRpb25hbEZ1bmN0aW9ucyA9IFsiZW5jb2RlQmFzZTY0IiwgIm1pbWVMb29rdXAiLCAiY2hhcnNldExvb2t1cCIsICJnZXRTb3VyY2VNYXBHZW5lcmF0b3IiXSwKICAgICAgICByZXF1aXJlZEZ1bmN0aW9ucyA9IFtdLAogICAgICAgIGZ1bmN0aW9ucyA9IHJlcXVpcmVkRnVuY3Rpb25zLmNvbmNhdChvcHRpb25hbEZ1bmN0aW9ucyk7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmdW5jdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgcHJvcE5hbWUgPSBmdW5jdGlvbnNbaV0sCiAgICAgICAgICAgIGVudmlyb25tZW50RnVuYyA9IGV4dGVybmFsRW52aXJvbm1lbnRbcHJvcE5hbWVdOwogICAgICAgIGlmIChlbnZpcm9ubWVudEZ1bmMpIHsKICAgICAgICAgICAgdGhpc1twcm9wTmFtZV0gPSBlbnZpcm9ubWVudEZ1bmMuYmluZChleHRlcm5hbEVudmlyb25tZW50KTsKICAgICAgICB9IGVsc2UgaWYgKGkgPCByZXF1aXJlZEZ1bmN0aW9ucy5sZW5ndGgpIHsKICAgICAgICAgICAgdGhpcy53YXJuKCJtaXNzaW5nIHJlcXVpcmVkIGZ1bmN0aW9uIGluIGVudmlyb25tZW50IC0gIiArIHByb3BOYW1lKTsKICAgICAgICB9CiAgICB9Cn07CgplbnZpcm9ubWVudC5wcm90b3R5cGUuZ2V0RmlsZU1hbmFnZXIgPSBmdW5jdGlvbiAoZmlsZW5hbWUsIGN1cnJlbnREaXJlY3RvcnksIG9wdGlvbnMsIGVudmlyb25tZW50LCBpc1N5bmMpIHsKCiAgICBpZiAoIWZpbGVuYW1lKSB7CiAgICAgICAgbG9nZ2VyLndhcm4oImdldEZpbGVNYW5hZ2VyIGNhbGxlZCB3aXRoIG5vIGZpbGVuYW1lLi4gUGxlYXNlIHJlcG9ydCB0aGlzIGlzc3VlLiBjb250aW51aW5nLiIpOwogICAgfQogICAgaWYgKGN1cnJlbnREaXJlY3RvcnkgPT0gbnVsbCkgewogICAgICAgIGxvZ2dlci53YXJuKCJnZXRGaWxlTWFuYWdlciBjYWxsZWQgd2l0aCBudWxsIGRpcmVjdG9yeS4uIFBsZWFzZSByZXBvcnQgdGhpcyBpc3N1ZS4gY29udGludWluZy4iKTsKICAgIH0KCiAgICB2YXIgZmlsZU1hbmFnZXJzID0gdGhpcy5maWxlTWFuYWdlcnM7CiAgICBpZiAob3B0aW9ucy5wbHVnaW5NYW5hZ2VyKSB7CiAgICAgICAgZmlsZU1hbmFnZXJzID0gW10uY29uY2F0KGZpbGVNYW5hZ2VycykuY29uY2F0KG9wdGlvbnMucGx1Z2luTWFuYWdlci5nZXRGaWxlTWFuYWdlcnMoKSk7CiAgICB9CiAgICBmb3IgKHZhciBpID0gZmlsZU1hbmFnZXJzLmxlbmd0aCAtIDE7IGkgPj0gMCA7IGktLSkgewogICAgICAgIHZhciBmaWxlTWFuYWdlciA9IGZpbGVNYW5hZ2Vyc1tpXTsKICAgICAgICBpZiAoZmlsZU1hbmFnZXJbaXNTeW5jID8gInN1cHBvcnRzU3luYyIgOiAic3VwcG9ydHMiXShmaWxlbmFtZSwgY3VycmVudERpcmVjdG9yeSwgb3B0aW9ucywgZW52aXJvbm1lbnQpKSB7CiAgICAgICAgICAgIHJldHVybiBmaWxlTWFuYWdlcjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gbnVsbDsKfTsKCmVudmlyb25tZW50LnByb3RvdHlwZS5hZGRGaWxlTWFuYWdlciA9IGZ1bmN0aW9uIChmaWxlTWFuYWdlcikgewogICAgdGhpcy5maWxlTWFuYWdlcnMucHVzaChmaWxlTWFuYWdlcik7Cn07CgplbnZpcm9ubWVudC5wcm90b3R5cGUuY2xlYXJGaWxlTWFuYWdlcnMgPSBmdW5jdGlvbiAoKSB7CiAgICB0aGlzLmZpbGVNYW5hZ2VycyA9IFtdOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBlbnZpcm9ubWVudDsKCn0seyIuLi9sb2dnZXIiOjMyfV0sMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgQ29sb3IgPSByZXF1aXJlKCIuLi90cmVlL2NvbG9yIiksCiAgICBmdW5jdGlvblJlZ2lzdHJ5ID0gcmVxdWlyZSgiLi9mdW5jdGlvbi1yZWdpc3RyeSIpOwoKLy8gQ29sb3IgQmxlbmRpbmcKLy8gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9UUi9jb21wb3NpdGluZy0xCgpmdW5jdGlvbiBjb2xvckJsZW5kKG1vZGUsIGNvbG9yMSwgY29sb3IyKSB7CiAgICB2YXIgYWIgPSBjb2xvcjEuYWxwaGEsIGNiLCAvLyBiYWNrZHJvcAogICAgICAgIGFzID0gY29sb3IyLmFscGhhLCBjcywgLy8gc291cmNlCiAgICAgICAgYXIsIGNyLCByID0gW107ICAgICAgICAvLyByZXN1bHQKCiAgICBhciA9IGFzICsgYWIgKiAoMSAtIGFzKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgY2IgPSBjb2xvcjEucmdiW2ldIC8gMjU1OwogICAgICAgIGNzID0gY29sb3IyLnJnYltpXSAvIDI1NTsKICAgICAgICBjciA9IG1vZGUoY2IsIGNzKTsKICAgICAgICBpZiAoYXIpIHsKICAgICAgICAgICAgY3IgPSAoYXMgKiBjcyArIGFiICogKGNiIC0KICAgICAgICAgICAgICAgICAgYXMgKiAoY2IgKyBjcyAtIGNyKSkpIC8gYXI7CiAgICAgICAgfQogICAgICAgIHJbaV0gPSBjciAqIDI1NTsKICAgIH0KCiAgICByZXR1cm4gbmV3IENvbG9yKHIsIGFyKTsKfQoKdmFyIGNvbG9yQmxlbmRNb2RlRnVuY3Rpb25zID0gewogICAgbXVsdGlwbHk6IGZ1bmN0aW9uKGNiLCBjcykgewogICAgICAgIHJldHVybiBjYiAqIGNzOwogICAgfSwKICAgIHNjcmVlbjogZnVuY3Rpb24oY2IsIGNzKSB7CiAgICAgICAgcmV0dXJuIGNiICsgY3MgLSBjYiAqIGNzOwogICAgfSwKICAgIG92ZXJsYXk6IGZ1bmN0aW9uKGNiLCBjcykgewogICAgICAgIGNiICo9IDI7CiAgICAgICAgcmV0dXJuIChjYiA8PSAxKSA/CiAgICAgICAgICAgIGNvbG9yQmxlbmRNb2RlRnVuY3Rpb25zLm11bHRpcGx5KGNiLCBjcykgOgogICAgICAgICAgICBjb2xvckJsZW5kTW9kZUZ1bmN0aW9ucy5zY3JlZW4oY2IgLSAxLCBjcyk7CiAgICB9LAogICAgc29mdGxpZ2h0OiBmdW5jdGlvbihjYiwgY3MpIHsKICAgICAgICB2YXIgZCA9IDEsIGUgPSBjYjsKICAgICAgICBpZiAoY3MgPiAwLjUpIHsKICAgICAgICAgICAgZSA9IDE7CiAgICAgICAgICAgIGQgPSAoY2IgPiAwLjI1KSA/IE1hdGguc3FydChjYikKICAgICAgICAgICAgICAgIDogKCgxNiAqIGNiIC0gMTIpICogY2IgKyA0KSAqIGNiOwogICAgICAgIH0KICAgICAgICByZXR1cm4gY2IgLSAoMSAtIDIgKiBjcykgKiBlICogKGQgLSBjYik7CiAgICB9LAogICAgaGFyZGxpZ2h0OiBmdW5jdGlvbihjYiwgY3MpIHsKICAgICAgICByZXR1cm4gY29sb3JCbGVuZE1vZGVGdW5jdGlvbnMub3ZlcmxheShjcywgY2IpOwogICAgfSwKICAgIGRpZmZlcmVuY2U6IGZ1bmN0aW9uKGNiLCBjcykgewogICAgICAgIHJldHVybiBNYXRoLmFicyhjYiAtIGNzKTsKICAgIH0sCiAgICBleGNsdXNpb246IGZ1bmN0aW9uKGNiLCBjcykgewogICAgICAgIHJldHVybiBjYiArIGNzIC0gMiAqIGNiICogY3M7CiAgICB9LAoKICAgIC8vIG5vbi13M2MgZnVuY3Rpb25zOgogICAgYXZlcmFnZTogZnVuY3Rpb24oY2IsIGNzKSB7CiAgICAgICAgcmV0dXJuIChjYiArIGNzKSAvIDI7CiAgICB9LAogICAgbmVnYXRpb246IGZ1bmN0aW9uKGNiLCBjcykgewogICAgICAgIHJldHVybiAxIC0gTWF0aC5hYnMoY2IgKyBjcyAtIDEpOwogICAgfQp9OwoKZm9yICh2YXIgZiBpbiBjb2xvckJsZW5kTW9kZUZ1bmN0aW9ucykgewogICAgaWYgKGNvbG9yQmxlbmRNb2RlRnVuY3Rpb25zLmhhc093blByb3BlcnR5KGYpKSB7CiAgICAgICAgY29sb3JCbGVuZFtmXSA9IGNvbG9yQmxlbmQuYmluZChudWxsLCBjb2xvckJsZW5kTW9kZUZ1bmN0aW9uc1tmXSk7CiAgICB9Cn0KCmZ1bmN0aW9uUmVnaXN0cnkuYWRkTXVsdGlwbGUoY29sb3JCbGVuZCk7Cgp9LHsiLi4vdHJlZS9jb2xvciI6NDksIi4vZnVuY3Rpb24tcmVnaXN0cnkiOjIxfV0sMTc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgRGltZW5zaW9uID0gcmVxdWlyZSgiLi4vdHJlZS9kaW1lbnNpb24iKSwKICAgIENvbG9yID0gcmVxdWlyZSgiLi4vdHJlZS9jb2xvciIpLAogICAgUXVvdGVkID0gcmVxdWlyZSgiLi4vdHJlZS9xdW90ZWQiKSwKICAgIEFub255bW91cyA9IHJlcXVpcmUoIi4uL3RyZWUvYW5vbnltb3VzIiksCiAgICBmdW5jdGlvblJlZ2lzdHJ5ID0gcmVxdWlyZSgiLi9mdW5jdGlvbi1yZWdpc3RyeSIpLAogICAgY29sb3JGdW5jdGlvbnM7CgpmdW5jdGlvbiBjbGFtcCh2YWwpIHsKICAgIHJldHVybiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCB2YWwpKTsKfQpmdW5jdGlvbiBoc2xhKGNvbG9yKSB7CiAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMuaHNsYShjb2xvci5oLCBjb2xvci5zLCBjb2xvci5sLCBjb2xvci5hKTsKfQpmdW5jdGlvbiBudW1iZXIobikgewogICAgaWYgKG4gaW5zdGFuY2VvZiBEaW1lbnNpb24pIHsKICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChuLnVuaXQuaXMoJyUnKSA/IG4udmFsdWUgLyAxMDAgOiBuLnZhbHVlKTsKICAgIH0gZWxzZSBpZiAodHlwZW9mIG4gPT09ICdudW1iZXInKSB7CiAgICAgICAgcmV0dXJuIG47CiAgICB9IGVsc2UgewogICAgICAgIHRocm93IHsKICAgICAgICAgICAgdHlwZTogIkFyZ3VtZW50IiwKICAgICAgICAgICAgbWVzc2FnZTogImNvbG9yIGZ1bmN0aW9ucyB0YWtlIG51bWJlcnMgYXMgcGFyYW1ldGVycyIKICAgICAgICB9OwogICAgfQp9CmZ1bmN0aW9uIHNjYWxlZChuLCBzaXplKSB7CiAgICBpZiAobiBpbnN0YW5jZW9mIERpbWVuc2lvbiAmJiBuLnVuaXQuaXMoJyUnKSkgewogICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG4udmFsdWUgKiBzaXplIC8gMTAwKTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG51bWJlcihuKTsKICAgIH0KfQpjb2xvckZ1bmN0aW9ucyA9IHsKICAgIHJnYjogZnVuY3Rpb24gKHIsIGcsIGIpIHsKICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMucmdiYShyLCBnLCBiLCAxLjApOwogICAgfSwKICAgIHJnYmE6IGZ1bmN0aW9uIChyLCBnLCBiLCBhKSB7CiAgICAgICAgdmFyIHJnYiA9IFtyLCBnLCBiXS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIHNjYWxlZChjLCAyNTUpOyB9KTsKICAgICAgICBhID0gbnVtYmVyKGEpOwogICAgICAgIHJldHVybiBuZXcgQ29sb3IocmdiLCBhKTsKICAgIH0sCiAgICBoc2w6IGZ1bmN0aW9uIChoLCBzLCBsKSB7CiAgICAgICAgcmV0dXJuIGNvbG9yRnVuY3Rpb25zLmhzbGEoaCwgcywgbCwgMS4wKTsKICAgIH0sCiAgICBoc2xhOiBmdW5jdGlvbiAoaCwgcywgbCwgYSkgewogICAgICAgIGZ1bmN0aW9uIGh1ZShoKSB7CiAgICAgICAgICAgIGggPSBoIDwgMCA/IGggKyAxIDogKGggPiAxID8gaCAtIDEgOiBoKTsKICAgICAgICAgICAgaWYgKGggKiA2IDwgMSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG0xICsgKG0yIC0gbTEpICogaCAqIDY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoaCAqIDIgPCAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbTI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoaCAqIDMgPCAyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbTEgKyAobTIgLSBtMSkgKiAoMiAvIDMgLSBoKSAqIDY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbTE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGggPSAobnVtYmVyKGgpICUgMzYwKSAvIDM2MDsKICAgICAgICBzID0gY2xhbXAobnVtYmVyKHMpKTsgbCA9IGNsYW1wKG51bWJlcihsKSk7IGEgPSBjbGFtcChudW1iZXIoYSkpOwoKICAgICAgICB2YXIgbTIgPSBsIDw9IDAuNSA/IGwgKiAocyArIDEpIDogbCArIHMgLSBsICogczsKICAgICAgICB2YXIgbTEgPSBsICogMiAtIG0yOwoKICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMucmdiYShodWUoaCArIDEgLyAzKSAqIDI1NSwKICAgICAgICAgICAgaHVlKGgpICAgICAgICogMjU1LAogICAgICAgICAgICBodWUoaCAtIDEgLyAzKSAqIDI1NSwKICAgICAgICAgICAgYSk7CiAgICB9LAoKICAgIGhzdjogZnVuY3Rpb24oaCwgcywgdikgewogICAgICAgIHJldHVybiBjb2xvckZ1bmN0aW9ucy5oc3ZhKGgsIHMsIHYsIDEuMCk7CiAgICB9LAoKICAgIGhzdmE6IGZ1bmN0aW9uKGgsIHMsIHYsIGEpIHsKICAgICAgICBoID0gKChudW1iZXIoaCkgJSAzNjApIC8gMzYwKSAqIDM2MDsKICAgICAgICBzID0gbnVtYmVyKHMpOyB2ID0gbnVtYmVyKHYpOyBhID0gbnVtYmVyKGEpOwoKICAgICAgICB2YXIgaSwgZjsKICAgICAgICBpID0gTWF0aC5mbG9vcigoaCAvIDYwKSAlIDYpOwogICAgICAgIGYgPSAoaCAvIDYwKSAtIGk7CgogICAgICAgIHZhciB2cyA9IFt2LAogICAgICAgICAgICB2ICogKDEgLSBzKSwKICAgICAgICAgICAgdiAqICgxIC0gZiAqIHMpLAogICAgICAgICAgICB2ICogKDEgLSAoMSAtIGYpICogcyldOwogICAgICAgIHZhciBwZXJtID0gW1swLCAzLCAxXSwKICAgICAgICAgICAgWzIsIDAsIDFdLAogICAgICAgICAgICBbMSwgMCwgM10sCiAgICAgICAgICAgIFsxLCAyLCAwXSwKICAgICAgICAgICAgWzMsIDEsIDBdLAogICAgICAgICAgICBbMCwgMSwgMl1dOwoKICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMucmdiYSh2c1twZXJtW2ldWzBdXSAqIDI1NSwKICAgICAgICAgICAgdnNbcGVybVtpXVsxXV0gKiAyNTUsCiAgICAgICAgICAgIHZzW3Blcm1baV1bMl1dICogMjU1LAogICAgICAgICAgICBhKTsKICAgIH0sCgogICAgaHVlOiBmdW5jdGlvbiAoY29sb3IpIHsKICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihjb2xvci50b0hTTCgpLmgpOwogICAgfSwKICAgIHNhdHVyYXRpb246IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGNvbG9yLnRvSFNMKCkucyAqIDEwMCwgJyUnKTsKICAgIH0sCiAgICBsaWdodG5lc3M6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGNvbG9yLnRvSFNMKCkubCAqIDEwMCwgJyUnKTsKICAgIH0sCiAgICBoc3ZodWU6IGZ1bmN0aW9uKGNvbG9yKSB7CiAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oY29sb3IudG9IU1YoKS5oKTsKICAgIH0sCiAgICBoc3ZzYXR1cmF0aW9uOiBmdW5jdGlvbiAoY29sb3IpIHsKICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihjb2xvci50b0hTVigpLnMgKiAxMDAsICclJyk7CiAgICB9LAogICAgaHN2dmFsdWU6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGNvbG9yLnRvSFNWKCkudiAqIDEwMCwgJyUnKTsKICAgIH0sCiAgICByZWQ6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGNvbG9yLnJnYlswXSk7CiAgICB9LAogICAgZ3JlZW46IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGNvbG9yLnJnYlsxXSk7CiAgICB9LAogICAgYmx1ZTogZnVuY3Rpb24gKGNvbG9yKSB7CiAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oY29sb3IucmdiWzJdKTsKICAgIH0sCiAgICBhbHBoYTogZnVuY3Rpb24gKGNvbG9yKSB7CiAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oY29sb3IudG9IU0woKS5hKTsKICAgIH0sCiAgICBsdW1hOiBmdW5jdGlvbiAoY29sb3IpIHsKICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihjb2xvci5sdW1hKCkgKiBjb2xvci5hbHBoYSAqIDEwMCwgJyUnKTsKICAgIH0sCiAgICBsdW1pbmFuY2U6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgIHZhciBsdW1pbmFuY2UgPQogICAgICAgICAgICAoMC4yMTI2ICogY29sb3IucmdiWzBdIC8gMjU1KSArCiAgICAgICAgICAgICAgICAoMC43MTUyICogY29sb3IucmdiWzFdIC8gMjU1KSArCiAgICAgICAgICAgICAgICAoMC4wNzIyICogY29sb3IucmdiWzJdIC8gMjU1KTsKCiAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24obHVtaW5hbmNlICogY29sb3IuYWxwaGEgKiAxMDAsICclJyk7CiAgICB9LAogICAgc2F0dXJhdGU6IGZ1bmN0aW9uIChjb2xvciwgYW1vdW50LCBtZXRob2QpIHsKICAgICAgICAvLyBmaWx0ZXI6IHNhdHVyYXRlKDMuMik7CiAgICAgICAgLy8gc2hvdWxkIGJlIGtlcHQgYXMgaXMsIHNvIGNoZWNrIGZvciBjb2xvcgogICAgICAgIGlmICghY29sb3IucmdiKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICB2YXIgaHNsID0gY29sb3IudG9IU0woKTsKCiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgIT09ICJ1bmRlZmluZWQiICYmIG1ldGhvZC52YWx1ZSA9PT0gInJlbGF0aXZlIikgewogICAgICAgICAgICBoc2wucyArPSAgaHNsLnMgKiBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBoc2wucyArPSBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgfQogICAgICAgIGhzbC5zID0gY2xhbXAoaHNsLnMpOwogICAgICAgIHJldHVybiBoc2xhKGhzbCk7CiAgICB9LAogICAgZGVzYXR1cmF0ZTogZnVuY3Rpb24gKGNvbG9yLCBhbW91bnQsIG1ldGhvZCkgewogICAgICAgIHZhciBoc2wgPSBjb2xvci50b0hTTCgpOwoKICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gInVuZGVmaW5lZCIgJiYgbWV0aG9kLnZhbHVlID09PSAicmVsYXRpdmUiKSB7CiAgICAgICAgICAgIGhzbC5zIC09ICBoc2wucyAqIGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGhzbC5zIC09IGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICB9CiAgICAgICAgaHNsLnMgPSBjbGFtcChoc2wucyk7CiAgICAgICAgcmV0dXJuIGhzbGEoaHNsKTsKICAgIH0sCiAgICBsaWdodGVuOiBmdW5jdGlvbiAoY29sb3IsIGFtb3VudCwgbWV0aG9kKSB7CiAgICAgICAgdmFyIGhzbCA9IGNvbG9yLnRvSFNMKCk7CgogICAgICAgIGlmICh0eXBlb2YgbWV0aG9kICE9PSAidW5kZWZpbmVkIiAmJiBtZXRob2QudmFsdWUgPT09ICJyZWxhdGl2ZSIpIHsKICAgICAgICAgICAgaHNsLmwgKz0gIGhzbC5sICogYW1vdW50LnZhbHVlIC8gMTAwOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaHNsLmwgKz0gYW1vdW50LnZhbHVlIC8gMTAwOwogICAgICAgIH0KICAgICAgICBoc2wubCA9IGNsYW1wKGhzbC5sKTsKICAgICAgICByZXR1cm4gaHNsYShoc2wpOwogICAgfSwKICAgIGRhcmtlbjogZnVuY3Rpb24gKGNvbG9yLCBhbW91bnQsIG1ldGhvZCkgewogICAgICAgIHZhciBoc2wgPSBjb2xvci50b0hTTCgpOwoKICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gInVuZGVmaW5lZCIgJiYgbWV0aG9kLnZhbHVlID09PSAicmVsYXRpdmUiKSB7CiAgICAgICAgICAgIGhzbC5sIC09ICBoc2wubCAqIGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGhzbC5sIC09IGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICB9CiAgICAgICAgaHNsLmwgPSBjbGFtcChoc2wubCk7CiAgICAgICAgcmV0dXJuIGhzbGEoaHNsKTsKICAgIH0sCiAgICBmYWRlaW46IGZ1bmN0aW9uIChjb2xvciwgYW1vdW50LCBtZXRob2QpIHsKICAgICAgICB2YXIgaHNsID0gY29sb3IudG9IU0woKTsKCiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgIT09ICJ1bmRlZmluZWQiICYmIG1ldGhvZC52YWx1ZSA9PT0gInJlbGF0aXZlIikgewogICAgICAgICAgICBoc2wuYSArPSAgaHNsLmEgKiBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBoc2wuYSArPSBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgfQogICAgICAgIGhzbC5hID0gY2xhbXAoaHNsLmEpOwogICAgICAgIHJldHVybiBoc2xhKGhzbCk7CiAgICB9LAogICAgZmFkZW91dDogZnVuY3Rpb24gKGNvbG9yLCBhbW91bnQsIG1ldGhvZCkgewogICAgICAgIHZhciBoc2wgPSBjb2xvci50b0hTTCgpOwoKICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gInVuZGVmaW5lZCIgJiYgbWV0aG9kLnZhbHVlID09PSAicmVsYXRpdmUiKSB7CiAgICAgICAgICAgIGhzbC5hIC09ICBoc2wuYSAqIGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGhzbC5hIC09IGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICB9CiAgICAgICAgaHNsLmEgPSBjbGFtcChoc2wuYSk7CiAgICAgICAgcmV0dXJuIGhzbGEoaHNsKTsKICAgIH0sCiAgICBmYWRlOiBmdW5jdGlvbiAoY29sb3IsIGFtb3VudCkgewogICAgICAgIHZhciBoc2wgPSBjb2xvci50b0hTTCgpOwoKICAgICAgICBoc2wuYSA9IGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICBoc2wuYSA9IGNsYW1wKGhzbC5hKTsKICAgICAgICByZXR1cm4gaHNsYShoc2wpOwogICAgfSwKICAgIHNwaW46IGZ1bmN0aW9uIChjb2xvciwgYW1vdW50KSB7CiAgICAgICAgdmFyIGhzbCA9IGNvbG9yLnRvSFNMKCk7CiAgICAgICAgdmFyIGh1ZSA9IChoc2wuaCArIGFtb3VudC52YWx1ZSkgJSAzNjA7CgogICAgICAgIGhzbC5oID0gaHVlIDwgMCA/IDM2MCArIGh1ZSA6IGh1ZTsKCiAgICAgICAgcmV0dXJuIGhzbGEoaHNsKTsKICAgIH0sCiAgICAvLwogICAgLy8gQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgSGFtcHRvbiBDYXRsaW4sIE5hdGhhbiBXZWl6ZW5iYXVtLCBhbmQgQ2hyaXMgRXBwc3RlaW4KICAgIC8vIGh0dHA6Ly9zYXNzLWxhbmcuY29tCiAgICAvLwogICAgbWl4OiBmdW5jdGlvbiAoY29sb3IxLCBjb2xvcjIsIHdlaWdodCkgewogICAgICAgIGlmICghY29sb3IxLnRvSFNMIHx8ICFjb2xvcjIudG9IU0wpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coY29sb3IyLnR5cGUpOwogICAgICAgICAgICBjb25zb2xlLmRpcihjb2xvcjIpOwogICAgICAgIH0KICAgICAgICBpZiAoIXdlaWdodCkgewogICAgICAgICAgICB3ZWlnaHQgPSBuZXcgRGltZW5zaW9uKDUwKTsKICAgICAgICB9CiAgICAgICAgdmFyIHAgPSB3ZWlnaHQudmFsdWUgLyAxMDAuMDsKICAgICAgICB2YXIgdyA9IHAgKiAyIC0gMTsKICAgICAgICB2YXIgYSA9IGNvbG9yMS50b0hTTCgpLmEgLSBjb2xvcjIudG9IU0woKS5hOwoKICAgICAgICB2YXIgdzEgPSAoKCh3ICogYSA9PSAtMSkgPyB3IDogKHcgKyBhKSAvICgxICsgdyAqIGEpKSArIDEpIC8gMi4wOwogICAgICAgIHZhciB3MiA9IDEgLSB3MTsKCiAgICAgICAgdmFyIHJnYiA9IFtjb2xvcjEucmdiWzBdICogdzEgKyBjb2xvcjIucmdiWzBdICogdzIsCiAgICAgICAgICAgIGNvbG9yMS5yZ2JbMV0gKiB3MSArIGNvbG9yMi5yZ2JbMV0gKiB3MiwKICAgICAgICAgICAgY29sb3IxLnJnYlsyXSAqIHcxICsgY29sb3IyLnJnYlsyXSAqIHcyXTsKCiAgICAgICAgdmFyIGFscGhhID0gY29sb3IxLmFscGhhICogcCArIGNvbG9yMi5hbHBoYSAqICgxIC0gcCk7CgogICAgICAgIHJldHVybiBuZXcgQ29sb3IocmdiLCBhbHBoYSk7CiAgICB9LAogICAgZ3JleXNjYWxlOiBmdW5jdGlvbiAoY29sb3IpIHsKICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMuZGVzYXR1cmF0ZShjb2xvciwgbmV3IERpbWVuc2lvbigxMDApKTsKICAgIH0sCiAgICBjb250cmFzdDogZnVuY3Rpb24gKGNvbG9yLCBkYXJrLCBsaWdodCwgdGhyZXNob2xkKSB7CiAgICAgICAgLy8gZmlsdGVyOiBjb250cmFzdCgzLjIpOwogICAgICAgIC8vIHNob3VsZCBiZSBrZXB0IGFzIGlzLCBzbyBjaGVjayBmb3IgY29sb3IKICAgICAgICBpZiAoIWNvbG9yLnJnYikgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBsaWdodCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgbGlnaHQgPSBjb2xvckZ1bmN0aW9ucy5yZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCk7CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2YgZGFyayA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgZGFyayA9IGNvbG9yRnVuY3Rpb25zLnJnYmEoMCwgMCwgMCwgMS4wKTsKICAgICAgICB9CiAgICAgICAgLy9GaWd1cmUgb3V0IHdoaWNoIGlzIGFjdHVhbGx5IGxpZ2h0IGFuZCBkYXJrIQogICAgICAgIGlmIChkYXJrLmx1bWEoKSA+IGxpZ2h0Lmx1bWEoKSkgewogICAgICAgICAgICB2YXIgdCA9IGxpZ2h0OwogICAgICAgICAgICBsaWdodCA9IGRhcms7CiAgICAgICAgICAgIGRhcmsgPSB0OwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIHRocmVzaG9sZCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgdGhyZXNob2xkID0gMC40MzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJlc2hvbGQgPSBudW1iZXIodGhyZXNob2xkKTsKICAgICAgICB9CiAgICAgICAgaWYgKGNvbG9yLmx1bWEoKSA8IHRocmVzaG9sZCkgewogICAgICAgICAgICByZXR1cm4gbGlnaHQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGRhcms7CiAgICAgICAgfQogICAgfSwKICAgIGFyZ2I6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzKGNvbG9yLnRvQVJHQigpKTsKICAgIH0sCiAgICBjb2xvcjogZnVuY3Rpb24oYykgewogICAgICAgIGlmICgoYyBpbnN0YW5jZW9mIFF1b3RlZCkgJiYKICAgICAgICAgICAgKC9eIyhbYS1mMC05XXs2fXxbYS1mMC05XXszfSkkL2kudGVzdChjLnZhbHVlKSkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvcihjLnZhbHVlLnNsaWNlKDEpKTsKICAgICAgICB9CiAgICAgICAgaWYgKChjIGluc3RhbmNlb2YgQ29sb3IpIHx8IChjID0gQ29sb3IuZnJvbUtleXdvcmQoYy52YWx1ZSkpKSB7CiAgICAgICAgICAgIGMudmFsdWUgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIHJldHVybiBjOwogICAgICAgIH0KICAgICAgICB0aHJvdyB7CiAgICAgICAgICAgIHR5cGU6ICAgICJBcmd1bWVudCIsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJhcmd1bWVudCBtdXN0IGJlIGEgY29sb3Iga2V5d29yZCBvciAzLzYgZGlnaXQgaGV4IGUuZy4gI0ZGRiIKICAgICAgICB9OwogICAgfSwKICAgIHRpbnQ6IGZ1bmN0aW9uKGNvbG9yLCBhbW91bnQpIHsKICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMubWl4KGNvbG9yRnVuY3Rpb25zLnJnYigyNTUsIDI1NSwgMjU1KSwgY29sb3IsIGFtb3VudCk7CiAgICB9LAogICAgc2hhZGU6IGZ1bmN0aW9uKGNvbG9yLCBhbW91bnQpIHsKICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMubWl4KGNvbG9yRnVuY3Rpb25zLnJnYigwLCAwLCAwKSwgY29sb3IsIGFtb3VudCk7CiAgICB9Cn07CmZ1bmN0aW9uUmVnaXN0cnkuYWRkTXVsdGlwbGUoY29sb3JGdW5jdGlvbnMpOwoKfSx7Ii4uL3RyZWUvYW5vbnltb3VzIjo0NSwiLi4vdHJlZS9jb2xvciI6NDksIi4uL3RyZWUvZGltZW5zaW9uIjo1NSwiLi4vdHJlZS9xdW90ZWQiOjcyLCIuL2Z1bmN0aW9uLXJlZ2lzdHJ5IjoyMX1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihlbnZpcm9ubWVudCkgewogICAgdmFyIFF1b3RlZCA9IHJlcXVpcmUoIi4uL3RyZWUvcXVvdGVkIiksCiAgICAgICAgVVJMID0gcmVxdWlyZSgiLi4vdHJlZS91cmwiKSwKICAgICAgICBmdW5jdGlvblJlZ2lzdHJ5ID0gcmVxdWlyZSgiLi9mdW5jdGlvbi1yZWdpc3RyeSIpLAogICAgICAgIGZhbGxiYWNrID0gZnVuY3Rpb24oZnVuY3Rpb25UaGlzLCBub2RlKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgVVJMKG5vZGUsIGZ1bmN0aW9uVGhpcy5pbmRleCwgZnVuY3Rpb25UaGlzLmN1cnJlbnRGaWxlSW5mbykuZXZhbChmdW5jdGlvblRoaXMuY29udGV4dCk7CiAgICAgICAgfSwKICAgICAgICBsb2dnZXIgPSByZXF1aXJlKCcuLi9sb2dnZXInKTsKCiAgICBmdW5jdGlvblJlZ2lzdHJ5LmFkZCgiZGF0YS11cmkiLCBmdW5jdGlvbihtaW1ldHlwZU5vZGUsIGZpbGVQYXRoTm9kZSkgewoKICAgICAgICBpZiAoIWZpbGVQYXRoTm9kZSkgewogICAgICAgICAgICBmaWxlUGF0aE5vZGUgPSBtaW1ldHlwZU5vZGU7CiAgICAgICAgICAgIG1pbWV0eXBlTm9kZSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICB2YXIgbWltZXR5cGUgPSBtaW1ldHlwZU5vZGUgJiYgbWltZXR5cGVOb2RlLnZhbHVlOwogICAgICAgIHZhciBmaWxlUGF0aCA9IGZpbGVQYXRoTm9kZS52YWx1ZTsKICAgICAgICB2YXIgY3VycmVudEZpbGVJbmZvID0gdGhpcy5jdXJyZW50RmlsZUluZm87CiAgICAgICAgdmFyIGN1cnJlbnREaXJlY3RvcnkgPSBjdXJyZW50RmlsZUluZm8ucmVsYXRpdmVVcmxzID8KICAgICAgICAgICAgY3VycmVudEZpbGVJbmZvLmN1cnJlbnREaXJlY3RvcnkgOiBjdXJyZW50RmlsZUluZm8uZW50cnlQYXRoOwoKICAgICAgICB2YXIgZnJhZ21lbnRTdGFydCA9IGZpbGVQYXRoLmluZGV4T2YoJyMnKTsKICAgICAgICB2YXIgZnJhZ21lbnQgPSAnJzsKICAgICAgICBpZiAoZnJhZ21lbnRTdGFydCAhPT0gLTEpIHsKICAgICAgICAgICAgZnJhZ21lbnQgPSBmaWxlUGF0aC5zbGljZShmcmFnbWVudFN0YXJ0KTsKICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zbGljZSgwLCBmcmFnbWVudFN0YXJ0KTsKICAgICAgICB9CgogICAgICAgIHZhciBmaWxlTWFuYWdlciA9IGVudmlyb25tZW50LmdldEZpbGVNYW5hZ2VyKGZpbGVQYXRoLCBjdXJyZW50RGlyZWN0b3J5LCB0aGlzLmNvbnRleHQsIGVudmlyb25tZW50LCB0cnVlKTsKCiAgICAgICAgaWYgKCFmaWxlTWFuYWdlcikgewogICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sodGhpcywgZmlsZVBhdGhOb2RlKTsKICAgICAgICB9CgogICAgICAgIHZhciB1c2VCYXNlNjQgPSBmYWxzZTsKCiAgICAgICAgLy8gZGV0ZWN0IHRoZSBtaW1ldHlwZSBpZiBub3QgZ2l2ZW4KICAgICAgICBpZiAoIW1pbWV0eXBlTm9kZSkgewoKICAgICAgICAgICAgbWltZXR5cGUgPSBlbnZpcm9ubWVudC5taW1lTG9va3VwKGZpbGVQYXRoKTsKCiAgICAgICAgICAgIGlmIChtaW1ldHlwZSA9PT0gImltYWdlL3N2Zyt4bWwiKSB7CiAgICAgICAgICAgICAgICB1c2VCYXNlNjQgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIHVzZSBiYXNlIDY0IHVubGVzcyBpdCdzIGFuIEFTQ0lJIG9yIFVURi04IGZvcm1hdAogICAgICAgICAgICAgICAgdmFyIGNoYXJzZXQgPSBlbnZpcm9ubWVudC5jaGFyc2V0TG9va3VwKG1pbWV0eXBlKTsKICAgICAgICAgICAgICAgIHVzZUJhc2U2NCA9IFsnVVMtQVNDSUknLCAnVVRGLTgnXS5pbmRleE9mKGNoYXJzZXQpIDwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodXNlQmFzZTY0KSB7IG1pbWV0eXBlICs9ICc7YmFzZTY0JzsgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdXNlQmFzZTY0ID0gLztiYXNlNjQkLy50ZXN0KG1pbWV0eXBlKTsKICAgICAgICB9CgogICAgICAgIHZhciBmaWxlU3luYyA9IGZpbGVNYW5hZ2VyLmxvYWRGaWxlU3luYyhmaWxlUGF0aCwgY3VycmVudERpcmVjdG9yeSwgdGhpcy5jb250ZXh0LCBlbnZpcm9ubWVudCk7CiAgICAgICAgaWYgKCFmaWxlU3luYy5jb250ZW50cykgewogICAgICAgICAgICBsb2dnZXIud2FybigiU2tpcHBlZCBkYXRhLXVyaSBlbWJlZGRpbmcgb2YgIiArIGZpbGVQYXRoICsgIiBiZWNhdXNlIGZpbGUgbm90IGZvdW5kIik7CiAgICAgICAgICAgIHJldHVybiBmYWxsYmFjayh0aGlzLCBmaWxlUGF0aE5vZGUgfHwgbWltZXR5cGVOb2RlKTsKICAgICAgICB9CiAgICAgICAgdmFyIGJ1ZiA9IGZpbGVTeW5jLmNvbnRlbnRzOwogICAgICAgIGlmICh1c2VCYXNlNjQgJiYgIWVudmlyb25tZW50LmVuY29kZUJhc2U2NCkgewogICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sodGhpcywgZmlsZVBhdGhOb2RlKTsKICAgICAgICB9CgogICAgICAgIGJ1ZiA9IHVzZUJhc2U2NCA/IGVudmlyb25tZW50LmVuY29kZUJhc2U2NChidWYpIDogZW5jb2RlVVJJQ29tcG9uZW50KGJ1Zik7CgogICAgICAgIHZhciB1cmkgPSAiZGF0YToiICsgbWltZXR5cGUgKyAnLCcgKyBidWYgKyBmcmFnbWVudDsKCiAgICAgICAgLy8gSUU4IGNhbm5vdCBoYW5kbGUgYSBkYXRhLXVyaSBsYXJnZXIgdGhhbiAzMiw3NjggY2hhcmFjdGVycy4gSWYgdGhpcyBpcyBleGNlZWRlZAogICAgICAgIC8vIGFuZCB0aGUgLS1pZUNvbXBhdCBmbGFnIGlzIGVuYWJsZWQsIHJldHVybiBhIG5vcm1hbCB1cmwoKSBpbnN0ZWFkLgogICAgICAgIHZhciBEQVRBX1VSSV9NQVggPSAzMjc2ODsKICAgICAgICBpZiAodXJpLmxlbmd0aCA+PSBEQVRBX1VSSV9NQVgpIHsKCiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQuaWVDb21wYXQgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiU2tpcHBlZCBkYXRhLXVyaSBlbWJlZGRpbmcgb2YgIiArIGZpbGVQYXRoICsgIiBiZWNhdXNlIGl0cyBzaXplICgiICsgdXJpLmxlbmd0aCArCiAgICAgICAgICAgICAgICAgICAgIiBjaGFyYWN0ZXJzKSBleGNlZWRzIElFOC1zYWZlICIgKyBEQVRBX1VSSV9NQVggKyAiIGNoYXJhY3RlcnMhIik7CgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrKHRoaXMsIGZpbGVQYXRoTm9kZSB8fCBtaW1ldHlwZU5vZGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFVSTChuZXcgUXVvdGVkKCciJyArIHVyaSArICciJywgdXJpLCBmYWxzZSwgdGhpcy5pbmRleCwgdGhpcy5jdXJyZW50RmlsZUluZm8pLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbyk7CiAgICB9KTsKfTsKCn0seyIuLi9sb2dnZXIiOjMyLCIuLi90cmVlL3F1b3RlZCI6NzIsIi4uL3RyZWUvdXJsIjo3OSwiLi9mdW5jdGlvbi1yZWdpc3RyeSI6MjF9XSwxOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBLZXl3b3JkID0gcmVxdWlyZSgiLi4vdHJlZS9rZXl3b3JkIiksCiAgICBmdW5jdGlvblJlZ2lzdHJ5ID0gcmVxdWlyZSgiLi9mdW5jdGlvbi1yZWdpc3RyeSIpOwoKdmFyIGRlZmF1bHRGdW5jID0gewogICAgZXZhbDogZnVuY3Rpb24gKCkgewogICAgICAgIHZhciB2ID0gdGhpcy52YWx1ZV8sIGUgPSB0aGlzLmVycm9yXzsKICAgICAgICBpZiAoZSkgewogICAgICAgICAgICB0aHJvdyBlOwogICAgICAgIH0KICAgICAgICBpZiAodiAhPSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiB2ID8gS2V5d29yZC5UcnVlIDogS2V5d29yZC5GYWxzZTsKICAgICAgICB9CiAgICB9LAogICAgdmFsdWU6IGZ1bmN0aW9uICh2KSB7CiAgICAgICAgdGhpcy52YWx1ZV8gPSB2OwogICAgfSwKICAgIGVycm9yOiBmdW5jdGlvbiAoZSkgewogICAgICAgIHRoaXMuZXJyb3JfID0gZTsKICAgIH0sCiAgICByZXNldDogZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMudmFsdWVfID0gdGhpcy5lcnJvcl8gPSBudWxsOwogICAgfQp9OwoKZnVuY3Rpb25SZWdpc3RyeS5hZGQoImRlZmF1bHQiLCBkZWZhdWx0RnVuYy5ldmFsLmJpbmQoZGVmYXVsdEZ1bmMpKTsKCm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdEZ1bmM7Cgp9LHsiLi4vdHJlZS9rZXl3b3JkIjo2NCwiLi9mdW5jdGlvbi1yZWdpc3RyeSI6MjF9XSwyMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBFeHByZXNzaW9uID0gcmVxdWlyZSgiLi4vdHJlZS9leHByZXNzaW9uIik7Cgp2YXIgZnVuY3Rpb25DYWxsZXIgPSBmdW5jdGlvbihuYW1lLCBjb250ZXh0LCBpbmRleCwgY3VycmVudEZpbGVJbmZvKSB7CiAgICB0aGlzLm5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7CiAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OwogICAgdGhpcy5jdXJyZW50RmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm87CgogICAgdGhpcy5mdW5jID0gY29udGV4dC5mcmFtZXNbMF0uZnVuY3Rpb25SZWdpc3RyeS5nZXQodGhpcy5uYW1lKTsKfTsKZnVuY3Rpb25DYWxsZXIucHJvdG90eXBlLmlzVmFsaWQgPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiBCb29sZWFuKHRoaXMuZnVuYyk7Cn07CmZ1bmN0aW9uQ2FsbGVyLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oYXJncykgewoKICAgIC8vIFRoaXMgY29kZSBpcyB0ZXJyaWJsZSBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkIGFzIHBlciB0aGlzIGlzc3VlLi4uCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2lzc3Vlcy8yNDc3CiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmdzKSkgewogICAgICAgIGFyZ3MgPSBhcmdzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSAiQ29tbWVudCIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9KQogICAgICAgIC5tYXAoZnVuY3Rpb24oaXRlbSkgewogICAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSAiRXhwcmVzc2lvbiIpIHsKICAgICAgICAgICAgICAgIHZhciBzdWJOb2RlcyA9IGl0ZW0udmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gIkNvbW1lbnQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmIChzdWJOb2Rlcy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ViTm9kZXNbMF07CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXhwcmVzc2lvbihzdWJOb2Rlcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgfSk7CiAgICB9CgogICAgcmV0dXJuIHRoaXMuZnVuYy5hcHBseSh0aGlzLCBhcmdzKTsKfTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb25DYWxsZXI7Cgp9LHsiLi4vdHJlZS9leHByZXNzaW9uIjo1OH1dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKZnVuY3Rpb24gbWFrZVJlZ2lzdHJ5KCBiYXNlICkgewogICAgcmV0dXJuIHsKICAgICAgICBfZGF0YToge30sCiAgICAgICAgYWRkOiBmdW5jdGlvbihuYW1lLCBmdW5jKSB7CiAgICAgICAgICAgIC8vIHByZWNhdXRpb25hcnkgY2FzZSBjb252ZXJzaW9uLCBhcyBsYXRlciBxdWVyeWluZyBvZgogICAgICAgICAgICAvLyB0aGUgcmVnaXN0cnkgYnkgZnVuY3Rpb24tY2FsbGVyIHVzZXMgbG93ZXIgY2FzZSBhcyB3ZWxsLgogICAgICAgICAgICBuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpOwoKICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGEuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKICAgICAgICAgICAgICAgIC8vVE9ETyB3YXJuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5fZGF0YVtuYW1lXSA9IGZ1bmM7CiAgICAgICAgfSwKICAgICAgICBhZGRNdWx0aXBsZTogZnVuY3Rpb24oZnVuY3Rpb25zKSB7CiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZ1bmN0aW9ucykuZm9yRWFjaCgKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZChuYW1lLCBmdW5jdGlvbnNbbmFtZV0pOwogICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICAgICB9LAogICAgICAgIGdldDogZnVuY3Rpb24obmFtZSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVtuYW1lXSB8fCAoIGJhc2UgJiYgYmFzZS5nZXQoIG5hbWUgKSk7CiAgICAgICAgfSwKICAgICAgICBpbmhlcml0IDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBtYWtlUmVnaXN0cnkoIHRoaXMgKTsKICAgICAgICB9CiAgICB9Owp9Cgptb2R1bGUuZXhwb3J0cyA9IG1ha2VSZWdpc3RyeSggbnVsbCApOwp9LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZW52aXJvbm1lbnQpIHsKICAgIHZhciBmdW5jdGlvbnMgPSB7CiAgICAgICAgZnVuY3Rpb25SZWdpc3RyeTogcmVxdWlyZSgiLi9mdW5jdGlvbi1yZWdpc3RyeSIpLAogICAgICAgIGZ1bmN0aW9uQ2FsbGVyOiByZXF1aXJlKCIuL2Z1bmN0aW9uLWNhbGxlciIpCiAgICB9OwoKICAgIC8vcmVnaXN0ZXIgZnVuY3Rpb25zCiAgICByZXF1aXJlKCIuL2RlZmF1bHQiKTsKICAgIHJlcXVpcmUoIi4vY29sb3IiKTsKICAgIHJlcXVpcmUoIi4vY29sb3ItYmxlbmRpbmciKTsKICAgIHJlcXVpcmUoIi4vZGF0YS11cmkiKShlbnZpcm9ubWVudCk7CiAgICByZXF1aXJlKCIuL21hdGgiKTsKICAgIHJlcXVpcmUoIi4vbnVtYmVyIik7CiAgICByZXF1aXJlKCIuL3N0cmluZyIpOwogICAgcmVxdWlyZSgiLi9zdmciKShlbnZpcm9ubWVudCk7CiAgICByZXF1aXJlKCIuL3R5cGVzIik7CgogICAgcmV0dXJuIGZ1bmN0aW9uczsKfTsKCn0seyIuL2NvbG9yIjoxNywiLi9jb2xvci1ibGVuZGluZyI6MTYsIi4vZGF0YS11cmkiOjE4LCIuL2RlZmF1bHQiOjE5LCIuL2Z1bmN0aW9uLWNhbGxlciI6MjAsIi4vZnVuY3Rpb24tcmVnaXN0cnkiOjIxLCIuL21hdGgiOjI0LCIuL251bWJlciI6MjUsIi4vc3RyaW5nIjoyNiwiLi9zdmciOjI3LCIuL3R5cGVzIjoyOH1dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIERpbWVuc2lvbiA9IHJlcXVpcmUoIi4uL3RyZWUvZGltZW5zaW9uIik7Cgp2YXIgTWF0aEhlbHBlciA9IGZ1bmN0aW9uKCkgewp9OwpNYXRoSGVscGVyLl9tYXRoID0gZnVuY3Rpb24gKGZuLCB1bml0LCBuKSB7CiAgICBpZiAoIShuIGluc3RhbmNlb2YgRGltZW5zaW9uKSkgewogICAgICAgIHRocm93IHsgdHlwZTogIkFyZ3VtZW50IiwgbWVzc2FnZTogImFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiIH07CiAgICB9CiAgICBpZiAodW5pdCA9PSBudWxsKSB7CiAgICAgICAgdW5pdCA9IG4udW5pdDsKICAgIH0gZWxzZSB7CiAgICAgICAgbiA9IG4udW5pZnkoKTsKICAgIH0KICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGZuKHBhcnNlRmxvYXQobi52YWx1ZSkpLCB1bml0KTsKfTsKbW9kdWxlLmV4cG9ydHMgPSBNYXRoSGVscGVyOwp9LHsiLi4vdHJlZS9kaW1lbnNpb24iOjU1fV0sMjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgZnVuY3Rpb25SZWdpc3RyeSA9IHJlcXVpcmUoIi4vZnVuY3Rpb24tcmVnaXN0cnkiKSwKICAgIG1hdGhIZWxwZXIgPSByZXF1aXJlKCIuL21hdGgtaGVscGVyLmpzIik7Cgp2YXIgbWF0aEZ1bmN0aW9ucyA9IHsKICAgIC8vIG5hbWUsICB1bml0CiAgICBjZWlsOiAgbnVsbCwKICAgIGZsb29yOiBudWxsLAogICAgc3FydDogIG51bGwsCiAgICBhYnM6ICAgbnVsbCwKICAgIHRhbjogICAiIiwKICAgIHNpbjogICAiIiwKICAgIGNvczogICAiIiwKICAgIGF0YW46ICAicmFkIiwKICAgIGFzaW46ICAicmFkIiwKICAgIGFjb3M6ICAicmFkIgp9OwoKZm9yICh2YXIgZiBpbiBtYXRoRnVuY3Rpb25zKSB7CiAgICBpZiAobWF0aEZ1bmN0aW9ucy5oYXNPd25Qcm9wZXJ0eShmKSkgewogICAgICAgIG1hdGhGdW5jdGlvbnNbZl0gPSBtYXRoSGVscGVyLl9tYXRoLmJpbmQobnVsbCwgTWF0aFtmXSwgbWF0aEZ1bmN0aW9uc1tmXSk7CiAgICB9Cn0KCm1hdGhGdW5jdGlvbnMucm91bmQgPSBmdW5jdGlvbiAobiwgZikgewogICAgdmFyIGZyYWN0aW9uID0gdHlwZW9mIGYgPT09ICJ1bmRlZmluZWQiID8gMCA6IGYudmFsdWU7CiAgICByZXR1cm4gbWF0aEhlbHBlci5fbWF0aChmdW5jdGlvbihudW0pIHsgcmV0dXJuIG51bS50b0ZpeGVkKGZyYWN0aW9uKTsgfSwgbnVsbCwgbik7Cn07CgpmdW5jdGlvblJlZ2lzdHJ5LmFkZE11bHRpcGxlKG1hdGhGdW5jdGlvbnMpOwoKfSx7Ii4vZnVuY3Rpb24tcmVnaXN0cnkiOjIxLCIuL21hdGgtaGVscGVyLmpzIjoyM31dLDI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIERpbWVuc2lvbiA9IHJlcXVpcmUoIi4uL3RyZWUvZGltZW5zaW9uIiksCiAgICBBbm9ueW1vdXMgPSByZXF1aXJlKCIuLi90cmVlL2Fub255bW91cyIpLAogICAgZnVuY3Rpb25SZWdpc3RyeSA9IHJlcXVpcmUoIi4vZnVuY3Rpb24tcmVnaXN0cnkiKSwKICAgIG1hdGhIZWxwZXIgPSByZXF1aXJlKCIuL21hdGgtaGVscGVyLmpzIik7Cgp2YXIgbWluTWF4ID0gZnVuY3Rpb24gKGlzTWluLCBhcmdzKSB7CiAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7CiAgICBzd2l0Y2goYXJncy5sZW5ndGgpIHsKICAgICAgICBjYXNlIDA6IHRocm93IHsgdHlwZTogIkFyZ3VtZW50IiwgbWVzc2FnZTogIm9uZSBvciBtb3JlIGFyZ3VtZW50cyByZXF1aXJlZCIgfTsKICAgIH0KICAgIHZhciBpLCBqLCBjdXJyZW50LCBjdXJyZW50VW5pZmllZCwgcmVmZXJlbmNlVW5pZmllZCwgdW5pdCwgdW5pdFN0YXRpYywgdW5pdENsb25lLAogICAgICAgIG9yZGVyICA9IFtdLCAvLyBlbGVtcyBvbmx5IGNvbnRhaW5zIG9yaWdpbmFsIGFyZ3VtZW50IHZhbHVlcy4KICAgICAgICB2YWx1ZXMgPSB7fTsgLy8ga2V5IGlzIHRoZSB1bml0LnRvU3RyaW5nKCkgZm9yIHVuaWZpZWQgRGltZW5zaW9uIHZhbHVlcywKICAgIC8vIHZhbHVlIGlzIHRoZSBpbmRleCBpbnRvIHRoZSBvcmRlciBhcnJheS4KICAgIGZvciAoaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY3VycmVudCA9IGFyZ3NbaV07CiAgICAgICAgaWYgKCEoY3VycmVudCBpbnN0YW5jZW9mIERpbWVuc2lvbikpIHsKICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnc1tpXS52YWx1ZSkpIHsKICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGFyZ3MsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3NbaV0udmFsdWUpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgY3VycmVudFVuaWZpZWQgPSBjdXJyZW50LnVuaXQudG9TdHJpbmcoKSA9PT0gIiIgJiYgdW5pdENsb25lICE9PSB1bmRlZmluZWQgPyBuZXcgRGltZW5zaW9uKGN1cnJlbnQudmFsdWUsIHVuaXRDbG9uZSkudW5pZnkoKSA6IGN1cnJlbnQudW5pZnkoKTsKICAgICAgICB1bml0ID0gY3VycmVudFVuaWZpZWQudW5pdC50b1N0cmluZygpID09PSAiIiAmJiB1bml0U3RhdGljICE9PSB1bmRlZmluZWQgPyB1bml0U3RhdGljIDogY3VycmVudFVuaWZpZWQudW5pdC50b1N0cmluZygpOwogICAgICAgIHVuaXRTdGF0aWMgPSB1bml0ICE9PSAiIiAmJiB1bml0U3RhdGljID09PSB1bmRlZmluZWQgfHwgdW5pdCAhPT0gIiIgJiYgb3JkZXJbMF0udW5pZnkoKS51bml0LnRvU3RyaW5nKCkgPT09ICIiID8gdW5pdCA6IHVuaXRTdGF0aWM7CiAgICAgICAgdW5pdENsb25lID0gdW5pdCAhPT0gIiIgJiYgdW5pdENsb25lID09PSB1bmRlZmluZWQgPyBjdXJyZW50LnVuaXQudG9TdHJpbmcoKSA6IHVuaXRDbG9uZTsKICAgICAgICBqID0gdmFsdWVzWyIiXSAhPT0gdW5kZWZpbmVkICYmIHVuaXQgIT09ICIiICYmIHVuaXQgPT09IHVuaXRTdGF0aWMgPyB2YWx1ZXNbIiJdIDogdmFsdWVzW3VuaXRdOwogICAgICAgIGlmIChqID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgaWYgKHVuaXRTdGF0aWMgIT09IHVuZGVmaW5lZCAmJiB1bml0ICE9PSB1bml0U3RhdGljKSB7CiAgICAgICAgICAgICAgICB0aHJvd3sgdHlwZTogIkFyZ3VtZW50IiwgbWVzc2FnZTogImluY29tcGF0aWJsZSB0eXBlcyIgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YWx1ZXNbdW5pdF0gPSBvcmRlci5sZW5ndGg7CiAgICAgICAgICAgIG9yZGVyLnB1c2goY3VycmVudCk7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICByZWZlcmVuY2VVbmlmaWVkID0gb3JkZXJbal0udW5pdC50b1N0cmluZygpID09PSAiIiAmJiB1bml0Q2xvbmUgIT09IHVuZGVmaW5lZCA/IG5ldyBEaW1lbnNpb24ob3JkZXJbal0udmFsdWUsIHVuaXRDbG9uZSkudW5pZnkoKSA6IG9yZGVyW2pdLnVuaWZ5KCk7CiAgICAgICAgaWYgKCBpc01pbiAmJiBjdXJyZW50VW5pZmllZC52YWx1ZSA8IHJlZmVyZW5jZVVuaWZpZWQudmFsdWUgfHwKICAgICAgICAgICAgIWlzTWluICYmIGN1cnJlbnRVbmlmaWVkLnZhbHVlID4gcmVmZXJlbmNlVW5pZmllZC52YWx1ZSkgewogICAgICAgICAgICBvcmRlcltqXSA9IGN1cnJlbnQ7CiAgICAgICAgfQogICAgfQogICAgaWYgKG9yZGVyLmxlbmd0aCA9PSAxKSB7CiAgICAgICAgcmV0dXJuIG9yZGVyWzBdOwogICAgfQogICAgYXJncyA9IG9yZGVyLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS50b0NTUyh0aGlzLmNvbnRleHQpOyB9KS5qb2luKHRoaXMuY29udGV4dC5jb21wcmVzcyA/ICIsIiA6ICIsICIpOwogICAgcmV0dXJuIG5ldyBBbm9ueW1vdXMoKGlzTWluID8gIm1pbiIgOiAibWF4IikgKyAiKCIgKyBhcmdzICsgIikiKTsKfTsKZnVuY3Rpb25SZWdpc3RyeS5hZGRNdWx0aXBsZSh7CiAgICBtaW46IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gbWluTWF4KHRydWUsIGFyZ3VtZW50cyk7CiAgICB9LAogICAgbWF4OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIG1pbk1heChmYWxzZSwgYXJndW1lbnRzKTsKICAgIH0sCiAgICBjb252ZXJ0OiBmdW5jdGlvbiAodmFsLCB1bml0KSB7CiAgICAgICAgcmV0dXJuIHZhbC5jb252ZXJ0VG8odW5pdC52YWx1ZSk7CiAgICB9LAogICAgcGk6IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihNYXRoLlBJKTsKICAgIH0sCiAgICBtb2Q6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihhLnZhbHVlICUgYi52YWx1ZSwgYS51bml0KTsKICAgIH0sCiAgICBwb3c6IGZ1bmN0aW9uKHgsIHkpIHsKICAgICAgICBpZiAodHlwZW9mIHggPT09ICJudW1iZXIiICYmIHR5cGVvZiB5ID09PSAibnVtYmVyIikgewogICAgICAgICAgICB4ID0gbmV3IERpbWVuc2lvbih4KTsKICAgICAgICAgICAgeSA9IG5ldyBEaW1lbnNpb24oeSk7CiAgICAgICAgfSBlbHNlIGlmICghKHggaW5zdGFuY2VvZiBEaW1lbnNpb24pIHx8ICEoeSBpbnN0YW5jZW9mIERpbWVuc2lvbikpIHsKICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAiQXJndW1lbnQiLCBtZXNzYWdlOiAiYXJndW1lbnRzIG11c3QgYmUgbnVtYmVycyIgfTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKE1hdGgucG93KHgudmFsdWUsIHkudmFsdWUpLCB4LnVuaXQpOwogICAgfSwKICAgIHBlcmNlbnRhZ2U6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgdmFyIHJlc3VsdCA9IG1hdGhIZWxwZXIuX21hdGgoZnVuY3Rpb24obnVtKSB7CiAgICAgICAgICAgIHJldHVybiBudW0gKiAxMDA7CiAgICAgICAgfSwgJyUnLCBuKTsKCiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KfSk7Cgp9LHsiLi4vdHJlZS9hbm9ueW1vdXMiOjQ1LCIuLi90cmVlL2RpbWVuc2lvbiI6NTUsIi4vZnVuY3Rpb24tcmVnaXN0cnkiOjIxLCIuL21hdGgtaGVscGVyLmpzIjoyM31dLDI2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIFF1b3RlZCA9IHJlcXVpcmUoIi4uL3RyZWUvcXVvdGVkIiksCiAgICBBbm9ueW1vdXMgPSByZXF1aXJlKCIuLi90cmVlL2Fub255bW91cyIpLAogICAgSmF2YVNjcmlwdCA9IHJlcXVpcmUoIi4uL3RyZWUvamF2YXNjcmlwdCIpLAogICAgZnVuY3Rpb25SZWdpc3RyeSA9IHJlcXVpcmUoIi4vZnVuY3Rpb24tcmVnaXN0cnkiKTsKCmZ1bmN0aW9uUmVnaXN0cnkuYWRkTXVsdGlwbGUoewogICAgZTogZnVuY3Rpb24gKHN0cikgewogICAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzKHN0ciBpbnN0YW5jZW9mIEphdmFTY3JpcHQgPyBzdHIuZXZhbHVhdGVkIDogc3RyLnZhbHVlKTsKICAgIH0sCiAgICBlc2NhcGU6IGZ1bmN0aW9uIChzdHIpIHsKICAgICAgICByZXR1cm4gbmV3IEFub255bW91cygKICAgICAgICAgICAgZW5jb2RlVVJJKHN0ci52YWx1ZSkucmVwbGFjZSgvPS9nLCAiJTNEIikucmVwbGFjZSgvOi9nLCAiJTNBIikucmVwbGFjZSgvIy9nLCAiJTIzIikucmVwbGFjZSgvOy9nLCAiJTNCIikKICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cKC9nLCAiJTI4IikucmVwbGFjZSgvXCkvZywgIiUyOSIpKTsKICAgIH0sCiAgICByZXBsYWNlOiBmdW5jdGlvbiAoc3RyaW5nLCBwYXR0ZXJuLCByZXBsYWNlbWVudCwgZmxhZ3MpIHsKICAgICAgICB2YXIgcmVzdWx0ID0gc3RyaW5nLnZhbHVlOwogICAgICAgIHJlcGxhY2VtZW50ID0gKHJlcGxhY2VtZW50LnR5cGUgPT09ICJRdW90ZWQiKSA/CiAgICAgICAgICAgIHJlcGxhY2VtZW50LnZhbHVlIDogcmVwbGFjZW1lbnQudG9DU1MoKTsKICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShuZXcgUmVnRXhwKHBhdHRlcm4udmFsdWUsIGZsYWdzID8gZmxhZ3MudmFsdWUgOiAnJyksIHJlcGxhY2VtZW50KTsKICAgICAgICByZXR1cm4gbmV3IFF1b3RlZChzdHJpbmcucXVvdGUgfHwgJycsIHJlc3VsdCwgc3RyaW5nLmVzY2FwZWQpOwogICAgfSwKICAgICclJzogZnVuY3Rpb24gKHN0cmluZyAvKiBhcmcsIGFyZywgLi4uKi8pIHsKICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSksCiAgICAgICAgICAgIHJlc3VsdCA9IHN0cmluZy52YWx1ZTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIC8qanNoaW50IGxvb3BmdW5jOnRydWUgKi8KICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoLyVbc2RhXS9pLCBmdW5jdGlvbih0b2tlbikgewogICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gKChhcmdzW2ldLnR5cGUgPT09ICJRdW90ZWQiKSAmJgogICAgICAgICAgICAgICAgICAgIHRva2VuLm1hdGNoKC9zL2kpKSA/IGFyZ3NbaV0udmFsdWUgOiBhcmdzW2ldLnRvQ1NTKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4ubWF0Y2goL1tBLVpdJC8pID8gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSA6IHZhbHVlOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoLyUlL2csICclJyk7CiAgICAgICAgcmV0dXJuIG5ldyBRdW90ZWQoc3RyaW5nLnF1b3RlIHx8ICcnLCByZXN1bHQsIHN0cmluZy5lc2NhcGVkKTsKICAgIH0KfSk7Cgp9LHsiLi4vdHJlZS9hbm9ueW1vdXMiOjQ1LCIuLi90cmVlL2phdmFzY3JpcHQiOjYyLCIuLi90cmVlL3F1b3RlZCI6NzIsIi4vZnVuY3Rpb24tcmVnaXN0cnkiOjIxfV0sMjc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGVudmlyb25tZW50KSB7CiAgICB2YXIgRGltZW5zaW9uID0gcmVxdWlyZSgiLi4vdHJlZS9kaW1lbnNpb24iKSwKICAgICAgICBDb2xvciA9IHJlcXVpcmUoIi4uL3RyZWUvY29sb3IiKSwKICAgICAgICBFeHByZXNzaW9uID0gcmVxdWlyZSgiLi4vdHJlZS9leHByZXNzaW9uIiksCiAgICAgICAgUXVvdGVkID0gcmVxdWlyZSgiLi4vdHJlZS9xdW90ZWQiKSwKICAgICAgICBVUkwgPSByZXF1aXJlKCIuLi90cmVlL3VybCIpLAogICAgICAgIGZ1bmN0aW9uUmVnaXN0cnkgPSByZXF1aXJlKCIuL2Z1bmN0aW9uLXJlZ2lzdHJ5Iik7CgogICAgZnVuY3Rpb25SZWdpc3RyeS5hZGQoInN2Zy1ncmFkaWVudCIsIGZ1bmN0aW9uKGRpcmVjdGlvbikgewoKICAgICAgICB2YXIgc3RvcHMsCiAgICAgICAgICAgIGdyYWRpZW50RGlyZWN0aW9uU3ZnLAogICAgICAgICAgICBncmFkaWVudFR5cGUgPSAibGluZWFyIiwKICAgICAgICAgICAgcmVjdGFuZ2xlRGltZW5zaW9uID0gJ3g9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiJywKICAgICAgICAgICAgcmVuZGVyRW52ID0ge2NvbXByZXNzOiBmYWxzZX0sCiAgICAgICAgICAgIHJldHVybmVyLAogICAgICAgICAgICBkaXJlY3Rpb25WYWx1ZSA9IGRpcmVjdGlvbi50b0NTUyhyZW5kZXJFbnYpLAoJCQlpLCBjb2xvciwgcG9zaXRpb24sIHBvc2l0aW9uVmFsdWUsIGFscGhhOwoKICAgICAgICBmdW5jdGlvbiB0aHJvd0FyZ3VtZW50RGVzY3JpcHRvcigpIHsKICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAiQXJndW1lbnQiLAoJCQkJCW1lc3NhZ2U6ICJzdmctZ3JhZGllbnQgZXhwZWN0cyBkaXJlY3Rpb24sIHN0YXJ0X2NvbG9yIFtzdGFydF9wb3NpdGlvbl0sIFtjb2xvciBwb3NpdGlvbixdLi4uLCIgKwoJCQkJCQkJIiBlbmRfY29sb3IgW2VuZF9wb3NpdGlvbl0gb3IgZGlyZWN0aW9uLCBjb2xvciBsaXN0IiB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICAgICAgICBpZiAoYXJndW1lbnRzWzFdLnZhbHVlLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgIHRocm93QXJndW1lbnREZXNjcmlwdG9yKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RvcHMgPSBhcmd1bWVudHNbMV0udmFsdWU7CiAgICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykgewogICAgICAgICAgICB0aHJvd0FyZ3VtZW50RGVzY3JpcHRvcigpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0b3BzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uVmFsdWUpIHsKICAgICAgICAgICAgY2FzZSAidG8gYm90dG9tIjoKICAgICAgICAgICAgICAgIGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIic7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidG8gcmlnaHQiOgogICAgICAgICAgICAgICAgZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJ0byBib3R0b20gcmlnaHQiOgogICAgICAgICAgICAgICAgZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSInOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInRvIHRvcCByaWdodCI6CiAgICAgICAgICAgICAgICBncmFkaWVudERpcmVjdGlvblN2ZyA9ICd4MT0iMCUiIHkxPSIxMDAlIiB4Mj0iMTAwJSIgeTI9IjAlIic7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiZWxsaXBzZSI6CiAgICAgICAgICAgIGNhc2UgImVsbGlwc2UgYXQgY2VudGVyIjoKICAgICAgICAgICAgICAgIGdyYWRpZW50VHlwZSA9ICJyYWRpYWwiOwogICAgICAgICAgICAgICAgZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAnY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIic7CiAgICAgICAgICAgICAgICByZWN0YW5nbGVEaW1lbnNpb24gPSAneD0iLTUwIiB5PSItNTAiIHdpZHRoPSIxMDEiIGhlaWdodD0iMTAxIic7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IHsgdHlwZTogIkFyZ3VtZW50IiwgbWVzc2FnZTogInN2Zy1ncmFkaWVudCBkaXJlY3Rpb24gbXVzdCBiZSAndG8gYm90dG9tJywgJ3RvIHJpZ2h0JywiICsKICAgICAgICAgICAgICAgICAgICAiICd0byBib3R0b20gcmlnaHQnLCAndG8gdG9wIHJpZ2h0JyBvciAnZWxsaXBzZSBhdCBjZW50ZXInIiB9OwogICAgICAgIH0KICAgICAgICByZXR1cm5lciA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JyArCiAgICAgICAgICAgICc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMSAxIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4nICsKICAgICAgICAgICAgJzwnICsgZ3JhZGllbnRUeXBlICsgJ0dyYWRpZW50IGlkPSJncmFkaWVudCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiICcgKyBncmFkaWVudERpcmVjdGlvblN2ZyArICc+JzsKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IHN0b3BzLmxlbmd0aDsgaSs9IDEpIHsKICAgICAgICAgICAgaWYgKHN0b3BzW2ldIGluc3RhbmNlb2YgRXhwcmVzc2lvbikgewogICAgICAgICAgICAgICAgY29sb3IgPSBzdG9wc1tpXS52YWx1ZVswXTsKICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gc3RvcHNbaV0udmFsdWVbMV07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb2xvciA9IHN0b3BzW2ldOwogICAgICAgICAgICAgICAgcG9zaXRpb24gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghKGNvbG9yIGluc3RhbmNlb2YgQ29sb3IpIHx8ICghKChpID09PSAwIHx8IGkgKyAxID09PSBzdG9wcy5sZW5ndGgpICYmIHBvc2l0aW9uID09PSB1bmRlZmluZWQpICYmICEocG9zaXRpb24gaW5zdGFuY2VvZiBEaW1lbnNpb24pKSkgewogICAgICAgICAgICAgICAgdGhyb3dBcmd1bWVudERlc2NyaXB0b3IoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwb3NpdGlvblZhbHVlID0gcG9zaXRpb24gPyBwb3NpdGlvbi50b0NTUyhyZW5kZXJFbnYpIDogaSA9PT0gMCA/ICIwJSIgOiAiMTAwJSI7CiAgICAgICAgICAgIGFscGhhID0gY29sb3IuYWxwaGE7CiAgICAgICAgICAgIHJldHVybmVyICs9ICc8c3RvcCBvZmZzZXQ9IicgKyBwb3NpdGlvblZhbHVlICsgJyIgc3RvcC1jb2xvcj0iJyArIGNvbG9yLnRvUkdCKCkgKyAnIicgKyAoYWxwaGEgPCAxID8gJyBzdG9wLW9wYWNpdHk9IicgKyBhbHBoYSArICciJyA6ICcnKSArICcvPic7CiAgICAgICAgfQogICAgICAgIHJldHVybmVyICs9ICc8LycgKyBncmFkaWVudFR5cGUgKyAnR3JhZGllbnQ+JyArCiAgICAgICAgICAgICc8cmVjdCAnICsgcmVjdGFuZ2xlRGltZW5zaW9uICsgJyBmaWxsPSJ1cmwoI2dyYWRpZW50KSIgLz48L3N2Zz4nOwoKICAgICAgICByZXR1cm5lciA9IGVuY29kZVVSSUNvbXBvbmVudChyZXR1cm5lcik7CgogICAgICAgIHJldHVybmVyID0gImRhdGE6aW1hZ2Uvc3ZnK3htbCwiICsgcmV0dXJuZXI7CiAgICAgICAgcmV0dXJuIG5ldyBVUkwobmV3IFF1b3RlZCgiJyIgKyByZXR1cm5lciArICInIiwgcmV0dXJuZXIsIGZhbHNlLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbyksIHRoaXMuaW5kZXgsIHRoaXMuY3VycmVudEZpbGVJbmZvKTsKICAgIH0pOwp9OwoKfSx7Ii4uL3RyZWUvY29sb3IiOjQ5LCIuLi90cmVlL2RpbWVuc2lvbiI6NTUsIi4uL3RyZWUvZXhwcmVzc2lvbiI6NTgsIi4uL3RyZWUvcXVvdGVkIjo3MiwiLi4vdHJlZS91cmwiOjc5LCIuL2Z1bmN0aW9uLXJlZ2lzdHJ5IjoyMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIEtleXdvcmQgPSByZXF1aXJlKCIuLi90cmVlL2tleXdvcmQiKSwKICAgIERldGFjaGVkUnVsZXNldCA9IHJlcXVpcmUoIi4uL3RyZWUvZGV0YWNoZWQtcnVsZXNldCIpLAogICAgRGltZW5zaW9uID0gcmVxdWlyZSgiLi4vdHJlZS9kaW1lbnNpb24iKSwKICAgIENvbG9yID0gcmVxdWlyZSgiLi4vdHJlZS9jb2xvciIpLAogICAgUXVvdGVkID0gcmVxdWlyZSgiLi4vdHJlZS9xdW90ZWQiKSwKICAgIEFub255bW91cyA9IHJlcXVpcmUoIi4uL3RyZWUvYW5vbnltb3VzIiksCiAgICBVUkwgPSByZXF1aXJlKCIuLi90cmVlL3VybCIpLAogICAgT3BlcmF0aW9uID0gcmVxdWlyZSgiLi4vdHJlZS9vcGVyYXRpb24iKSwKICAgIGZ1bmN0aW9uUmVnaXN0cnkgPSByZXF1aXJlKCIuL2Z1bmN0aW9uLXJlZ2lzdHJ5Iik7Cgp2YXIgaXNhID0gZnVuY3Rpb24gKG4sIFR5cGUpIHsKICAgICAgICByZXR1cm4gKG4gaW5zdGFuY2VvZiBUeXBlKSA/IEtleXdvcmQuVHJ1ZSA6IEtleXdvcmQuRmFsc2U7CiAgICB9LAogICAgaXN1bml0ID0gZnVuY3Rpb24gKG4sIHVuaXQpIHsKICAgICAgICBpZiAodW5pdCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHRocm93IHsgdHlwZTogIkFyZ3VtZW50IiwgbWVzc2FnZTogIm1pc3NpbmcgdGhlIHJlcXVpcmVkIHNlY29uZCBhcmd1bWVudCB0byBpc3VuaXQuIiB9OwogICAgICAgIH0KICAgICAgICB1bml0ID0gdHlwZW9mIHVuaXQudmFsdWUgPT09ICJzdHJpbmciID8gdW5pdC52YWx1ZSA6IHVuaXQ7CiAgICAgICAgaWYgKHR5cGVvZiB1bml0ICE9PSAic3RyaW5nIikgewogICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICJBcmd1bWVudCIsIG1lc3NhZ2U6ICJTZWNvbmQgYXJndW1lbnQgdG8gaXN1bml0IHNob3VsZCBiZSBhIHVuaXQgb3IgYSBzdHJpbmcuIiB9OwogICAgICAgIH0KICAgICAgICByZXR1cm4gKG4gaW5zdGFuY2VvZiBEaW1lbnNpb24pICYmIG4udW5pdC5pcyh1bml0KSA/IEtleXdvcmQuVHJ1ZSA6IEtleXdvcmQuRmFsc2U7CiAgICB9LAogICAgZ2V0SXRlbXNGcm9tTm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgICAvLyBoYW5kbGUgbm9uLWFycmF5IHZhbHVlcyBhcyBhbiBhcnJheSBvZiBsZW5ndGggMQogICAgICAgIC8vIHJldHVybiAndW5kZWZpbmVkJyBpZiBpbmRleCBpcyBpbnZhbGlkCiAgICAgICAgdmFyIGl0ZW1zID0gQXJyYXkuaXNBcnJheShub2RlLnZhbHVlKSA/CiAgICAgICAgICAgIG5vZGUudmFsdWUgOiBBcnJheShub2RlKTsKCiAgICAgICAgcmV0dXJuIGl0ZW1zOwogICAgfTsKZnVuY3Rpb25SZWdpc3RyeS5hZGRNdWx0aXBsZSh7CiAgICBpc3J1bGVzZXQ6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgcmV0dXJuIGlzYShuLCBEZXRhY2hlZFJ1bGVzZXQpOwogICAgfSwKICAgIGlzY29sb3I6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgcmV0dXJuIGlzYShuLCBDb2xvcik7CiAgICB9LAogICAgaXNudW1iZXI6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgcmV0dXJuIGlzYShuLCBEaW1lbnNpb24pOwogICAgfSwKICAgIGlzc3RyaW5nOiBmdW5jdGlvbiAobikgewogICAgICAgIHJldHVybiBpc2EobiwgUXVvdGVkKTsKICAgIH0sCiAgICBpc2tleXdvcmQ6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgcmV0dXJuIGlzYShuLCBLZXl3b3JkKTsKICAgIH0sCiAgICBpc3VybDogZnVuY3Rpb24gKG4pIHsKICAgICAgICByZXR1cm4gaXNhKG4sIFVSTCk7CiAgICB9LAogICAgaXNwaXhlbDogZnVuY3Rpb24gKG4pIHsKICAgICAgICByZXR1cm4gaXN1bml0KG4sICdweCcpOwogICAgfSwKICAgIGlzcGVyY2VudGFnZTogZnVuY3Rpb24gKG4pIHsKICAgICAgICByZXR1cm4gaXN1bml0KG4sICclJyk7CiAgICB9LAogICAgaXNlbTogZnVuY3Rpb24gKG4pIHsKICAgICAgICByZXR1cm4gaXN1bml0KG4sICdlbScpOwogICAgfSwKICAgIGlzdW5pdDogaXN1bml0LAogICAgdW5pdDogZnVuY3Rpb24gKHZhbCwgdW5pdCkgewogICAgICAgIGlmICghKHZhbCBpbnN0YW5jZW9mIERpbWVuc2lvbikpIHsKICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAiQXJndW1lbnQiLAogICAgICAgICAgICAgICAgbWVzc2FnZTogInRoZSBmaXJzdCBhcmd1bWVudCB0byB1bml0IG11c3QgYmUgYSBudW1iZXIiICsKICAgICAgICAgICAgICAgICAgICAodmFsIGluc3RhbmNlb2YgT3BlcmF0aW9uID8gIi4gSGF2ZSB5b3UgZm9yZ290dGVuIHBhcmVudGhlc2lzPyIgOiAiIikgfTsKICAgICAgICB9CiAgICAgICAgaWYgKHVuaXQpIHsKICAgICAgICAgICAgaWYgKHVuaXQgaW5zdGFuY2VvZiBLZXl3b3JkKSB7CiAgICAgICAgICAgICAgICB1bml0ID0gdW5pdC52YWx1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHVuaXQgPSB1bml0LnRvQ1NTKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB1bml0ID0gIiI7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKHZhbC52YWx1ZSwgdW5pdCk7CiAgICB9LAogICAgImdldC11bml0IjogZnVuY3Rpb24gKG4pIHsKICAgICAgICByZXR1cm4gbmV3IEFub255bW91cyhuLnVuaXQpOwogICAgfSwKICAgIGV4dHJhY3Q6IGZ1bmN0aW9uKHZhbHVlcywgaW5kZXgpIHsKICAgICAgICBpbmRleCA9IGluZGV4LnZhbHVlIC0gMTsgLy8gKDEtYmFzZWQgaW5kZXgpCgogICAgICAgIHJldHVybiBnZXRJdGVtc0Zyb21Ob2RlKHZhbHVlcylbaW5kZXhdOwogICAgfSwKICAgIGxlbmd0aDogZnVuY3Rpb24odmFsdWVzKSB7CiAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oZ2V0SXRlbXNGcm9tTm9kZSh2YWx1ZXMpLmxlbmd0aCk7CiAgICB9Cn0pOwoKfSx7Ii4uL3RyZWUvYW5vbnltb3VzIjo0NSwiLi4vdHJlZS9jb2xvciI6NDksIi4uL3RyZWUvZGV0YWNoZWQtcnVsZXNldCI6NTQsIi4uL3RyZWUvZGltZW5zaW9uIjo1NSwiLi4vdHJlZS9rZXl3b3JkIjo2NCwiLi4vdHJlZS9vcGVyYXRpb24iOjcwLCIuLi90cmVlL3F1b3RlZCI6NzIsIi4uL3RyZWUvdXJsIjo3OSwiLi9mdW5jdGlvbi1yZWdpc3RyeSI6MjF9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBjb250ZXh0cyA9IHJlcXVpcmUoIi4vY29udGV4dHMiKSwKICAgIFBhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2VyL3BhcnNlcicpLAogICAgRnVuY3Rpb25JbXBvcnRlciA9IHJlcXVpcmUoJy4vcGx1Z2lucy9mdW5jdGlvbi1pbXBvcnRlcicpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihlbnZpcm9ubWVudCkgewoKICAgIC8vIEZpbGVJbmZvID0gewogICAgLy8gICdyZWxhdGl2ZVVybHMnIC0gb3B0aW9uIC0gd2hldGhlciB0byBhZGp1c3QgVVJMJ3MgdG8gYmUgcmVsYXRpdmUKICAgIC8vICAnZmlsZW5hbWUnIC0gZnVsbCByZXNvbHZlZCBmaWxlbmFtZSBvZiBjdXJyZW50IGZpbGUKICAgIC8vICAncm9vdHBhdGgnIC0gcGF0aCB0byBhcHBlbmQgdG8gbm9ybWFsIFVSTHMgZm9yIHRoaXMgbm9kZQogICAgLy8gICdjdXJyZW50RGlyZWN0b3J5JyAtIHBhdGggdG8gdGhlIGN1cnJlbnQgZmlsZSwgYWJzb2x1dGUKICAgIC8vICAncm9vdEZpbGVuYW1lJyAtIGZpbGVuYW1lIG9mIHRoZSBiYXNlIGZpbGUKICAgIC8vICAnZW50cnlQYXRoJyAtIGFic29sdXRlIHBhdGggdG8gdGhlIGVudHJ5IGZpbGUKICAgIC8vICAncmVmZXJlbmNlJyAtIHdoZXRoZXIgdGhlIGZpbGUgc2hvdWxkIG5vdCBiZSBvdXRwdXQgYW5kIG9ubHkgb3V0cHV0IHBhcnRzIHRoYXQgYXJlIHJlZmVyZW5jZWQKCiAgICB2YXIgSW1wb3J0TWFuYWdlciA9IGZ1bmN0aW9uKGNvbnRleHQsIHJvb3RGaWxlSW5mbykgewogICAgICAgIHRoaXMucm9vdEZpbGVuYW1lID0gcm9vdEZpbGVJbmZvLmZpbGVuYW1lOwogICAgICAgIHRoaXMucGF0aHMgPSBjb250ZXh0LnBhdGhzIHx8IFtdOyAgLy8gU2VhcmNoIHBhdGhzLCB3aGVuIGltcG9ydGluZwogICAgICAgIHRoaXMuY29udGVudHMgPSB7fTsgICAgICAgICAgICAgLy8gbWFwIC0gZmlsZW5hbWUgdG8gY29udGVudHMgb2YgYWxsIHRoZSBmaWxlcwogICAgICAgIHRoaXMuY29udGVudHNJZ25vcmVkQ2hhcnMgPSB7fTsgLy8gbWFwIC0gZmlsZW5hbWUgdG8gbGluZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGZpbGUgdG8gaWdub3JlCiAgICAgICAgdGhpcy5taW1lID0gY29udGV4dC5taW1lOwogICAgICAgIHRoaXMuZXJyb3IgPSBudWxsOwogICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7CiAgICAgICAgLy8gRGVwcmVjYXRlZD8gVW51c2VkIG91dHNpZGUgb2YgaGVyZSwgY291bGQgYmUgdXNlZnVsLgogICAgICAgIHRoaXMucXVldWUgPSBbXTsgICAgICAgIC8vIEZpbGVzIHdoaWNoIGhhdmVuJ3QgYmVlbiBpbXBvcnRlZCB5ZXQKICAgICAgICB0aGlzLmZpbGVzID0ge307ICAgICAgICAvLyBIb2xkcyB0aGUgaW1wb3J0ZWQgcGFyc2UgdHJlZXMuCiAgICB9OwogICAgLyoqCiAgICAgKiBBZGQgYW4gaW1wb3J0IHRvIGJlIGltcG9ydGVkCiAgICAgKiBAcGFyYW0gcGF0aCAtIHRoZSByYXcgcGF0aAogICAgICogQHBhcmFtIHRyeUFwcGVuZExlc3NFeHRlbnNpb24gLSB3aGV0aGVyIHRvIHRyeSBhcHBlbmRpbmcgdGhlIGxlc3MgZXh0ZW5zaW9uIChpZiB0aGUgcGF0aCBoYXMgbm8gZXh0ZW5zaW9uKQogICAgICogQHBhcmFtIGN1cnJlbnRGaWxlSW5mbyAtIHRoZSBjdXJyZW50IGZpbGUgaW5mbyAodXNlZCBmb3IgaW5zdGFuY2UgdG8gd29yayBvdXQgcmVsYXRpdmUgcGF0aHMpCiAgICAgKiBAcGFyYW0gaW1wb3J0T3B0aW9ucyAtIGltcG9ydCBvcHRpb25zCiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBjYWxsYmFjayBmb3Igd2hlbiBpdCBpcyBpbXBvcnRlZAogICAgICovCiAgICBJbXBvcnRNYW5hZ2VyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHBhdGgsIHRyeUFwcGVuZExlc3NFeHRlbnNpb24sIGN1cnJlbnRGaWxlSW5mbywgaW1wb3J0T3B0aW9ucywgY2FsbGJhY2spIHsKICAgICAgICB2YXIgaW1wb3J0TWFuYWdlciA9IHRoaXM7CiAgICAgICAgdGhpcy5xdWV1ZS5wdXNoKHBhdGgpOwoKICAgICAgICB2YXIgZmlsZVBhcnNlZEZ1bmMgPSBmdW5jdGlvbiAoZSwgcm9vdCwgZnVsbFBhdGgpIHsKICAgICAgICAgICAgaW1wb3J0TWFuYWdlci5xdWV1ZS5zcGxpY2UoaW1wb3J0TWFuYWdlci5xdWV1ZS5pbmRleE9mKHBhdGgpLCAxKTsgLy8gUmVtb3ZlIHRoZSBwYXRoIGZyb20gdGhlIHF1ZXVlCgogICAgICAgICAgICB2YXIgaW1wb3J0ZWRFcXVhbHNSb290ID0gZnVsbFBhdGggPT09IGltcG9ydE1hbmFnZXIucm9vdEZpbGVuYW1lOwogICAgICAgICAgICBpZiAoaW1wb3J0T3B0aW9ucy5vcHRpb25hbCAmJiBlKSB7CiAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB7cnVsZXM6W119LCBmYWxzZSwgbnVsbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpbXBvcnRNYW5hZ2VyLmZpbGVzW2Z1bGxQYXRoXSA9IHJvb3Q7CiAgICAgICAgICAgICAgICBpZiAoZSAmJiAhaW1wb3J0TWFuYWdlci5lcnJvcikgeyBpbXBvcnRNYW5hZ2VyLmVycm9yID0gZTsgfQogICAgICAgICAgICAgICAgY2FsbGJhY2soZSwgcm9vdCwgaW1wb3J0ZWRFcXVhbHNSb290LCBmdWxsUGF0aCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICB2YXIgbmV3RmlsZUluZm8gPSB7CiAgICAgICAgICAgIHJlbGF0aXZlVXJsczogdGhpcy5jb250ZXh0LnJlbGF0aXZlVXJscywKICAgICAgICAgICAgZW50cnlQYXRoOiBjdXJyZW50RmlsZUluZm8uZW50cnlQYXRoLAogICAgICAgICAgICByb290cGF0aDogY3VycmVudEZpbGVJbmZvLnJvb3RwYXRoLAogICAgICAgICAgICByb290RmlsZW5hbWU6IGN1cnJlbnRGaWxlSW5mby5yb290RmlsZW5hbWUKICAgICAgICB9OwoKICAgICAgICB2YXIgZmlsZU1hbmFnZXIgPSBlbnZpcm9ubWVudC5nZXRGaWxlTWFuYWdlcihwYXRoLCBjdXJyZW50RmlsZUluZm8uY3VycmVudERpcmVjdG9yeSwgdGhpcy5jb250ZXh0LCBlbnZpcm9ubWVudCk7CgogICAgICAgIGlmICghZmlsZU1hbmFnZXIpIHsKICAgICAgICAgICAgZmlsZVBhcnNlZEZ1bmMoeyBtZXNzYWdlOiAiQ291bGQgbm90IGZpbmQgYSBmaWxlLW1hbmFnZXIgZm9yICIgKyBwYXRoIH0pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAodHJ5QXBwZW5kTGVzc0V4dGVuc2lvbikgewogICAgICAgICAgICBwYXRoID0gZmlsZU1hbmFnZXIudHJ5QXBwZW5kRXh0ZW5zaW9uKHBhdGgsIGltcG9ydE9wdGlvbnMucGx1Z2luID8gIi5qcyIgOiAiLmxlc3MiKTsKICAgICAgICB9CgogICAgICAgIHZhciBsb2FkRmlsZUNhbGxiYWNrID0gZnVuY3Rpb24obG9hZGVkRmlsZSkgewogICAgICAgICAgICB2YXIgcmVzb2x2ZWRGaWxlbmFtZSA9IGxvYWRlZEZpbGUuZmlsZW5hbWUsCiAgICAgICAgICAgICAgICBjb250ZW50cyA9IGxvYWRlZEZpbGUuY29udGVudHMucmVwbGFjZSgvXlx1RkVGRi8sICcnKTsKCiAgICAgICAgICAgIC8vIFBhc3Mgb24gYW4gdXBkYXRlZCByb290cGF0aCBpZiBwYXRoIG9mIGltcG9ydGVkIGZpbGUgaXMgcmVsYXRpdmUgYW5kIGZpbGUKICAgICAgICAgICAgLy8gaXMgaW4gYSAoc3VifHN1cCkgZGlyZWN0b3J5CiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEV4YW1wbGVzOgogICAgICAgICAgICAvLyAtIElmIHBhdGggb2YgaW1wb3J0ZWQgZmlsZSBpcyAnbW9kdWxlL25hdi9uYXYubGVzcycgYW5kIHJvb3RwYXRoIGlzICdsZXNzLycsCiAgICAgICAgICAgIC8vICAgdGhlbiByb290cGF0aCBzaG91bGQgYmVjb21lICdsZXNzL21vZHVsZS9uYXYvJwogICAgICAgICAgICAvLyAtIElmIHBhdGggb2YgaW1wb3J0ZWQgZmlsZSBpcyAnLi4vbWl4aW5zLmxlc3MnIGFuZCByb290cGF0aCBpcyAnbGVzcy8nLAogICAgICAgICAgICAvLyAgIHRoZW4gcm9vdHBhdGggc2hvdWxkIGJlY29tZSAnbGVzcy8uLi8nCiAgICAgICAgICAgIG5ld0ZpbGVJbmZvLmN1cnJlbnREaXJlY3RvcnkgPSBmaWxlTWFuYWdlci5nZXRQYXRoKHJlc29sdmVkRmlsZW5hbWUpOwogICAgICAgICAgICBpZiAobmV3RmlsZUluZm8ucmVsYXRpdmVVcmxzKSB7CiAgICAgICAgICAgICAgICBuZXdGaWxlSW5mby5yb290cGF0aCA9IGZpbGVNYW5hZ2VyLmpvaW4oCiAgICAgICAgICAgICAgICAgICAgKGltcG9ydE1hbmFnZXIuY29udGV4dC5yb290cGF0aCB8fCAiIiksCiAgICAgICAgICAgICAgICAgICAgZmlsZU1hbmFnZXIucGF0aERpZmYobmV3RmlsZUluZm8uY3VycmVudERpcmVjdG9yeSwgbmV3RmlsZUluZm8uZW50cnlQYXRoKSk7CgogICAgICAgICAgICAgICAgaWYgKCFmaWxlTWFuYWdlci5pc1BhdGhBYnNvbHV0ZShuZXdGaWxlSW5mby5yb290cGF0aCkgJiYgZmlsZU1hbmFnZXIuYWx3YXlzTWFrZVBhdGhzQWJzb2x1dGUoKSkgewogICAgICAgICAgICAgICAgICAgIG5ld0ZpbGVJbmZvLnJvb3RwYXRoID0gZmlsZU1hbmFnZXIuam9pbihuZXdGaWxlSW5mby5lbnRyeVBhdGgsIG5ld0ZpbGVJbmZvLnJvb3RwYXRoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBuZXdGaWxlSW5mby5maWxlbmFtZSA9IHJlc29sdmVkRmlsZW5hbWU7CgogICAgICAgICAgICB2YXIgbmV3RW52ID0gbmV3IGNvbnRleHRzLlBhcnNlKGltcG9ydE1hbmFnZXIuY29udGV4dCk7CgogICAgICAgICAgICBuZXdFbnYucHJvY2Vzc0ltcG9ydHMgPSBmYWxzZTsKICAgICAgICAgICAgaW1wb3J0TWFuYWdlci5jb250ZW50c1tyZXNvbHZlZEZpbGVuYW1lXSA9IGNvbnRlbnRzOwoKICAgICAgICAgICAgaWYgKGN1cnJlbnRGaWxlSW5mby5yZWZlcmVuY2UgfHwgaW1wb3J0T3B0aW9ucy5yZWZlcmVuY2UpIHsKICAgICAgICAgICAgICAgIG5ld0ZpbGVJbmZvLnJlZmVyZW5jZSA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpbXBvcnRPcHRpb25zLnBsdWdpbikgewogICAgICAgICAgICAgICAgbmV3IEZ1bmN0aW9uSW1wb3J0ZXIobmV3RW52LCBuZXdGaWxlSW5mbykuZXZhbChjb250ZW50cywgZnVuY3Rpb24gKGUsIHJvb3QpIHsKICAgICAgICAgICAgICAgICAgICBmaWxlUGFyc2VkRnVuYyhlLCByb290LCByZXNvbHZlZEZpbGVuYW1lKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgaWYgKGltcG9ydE9wdGlvbnMuaW5saW5lKSB7CiAgICAgICAgICAgICAgICBmaWxlUGFyc2VkRnVuYyhudWxsLCBjb250ZW50cywgcmVzb2x2ZWRGaWxlbmFtZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBuZXcgUGFyc2VyKG5ld0VudiwgaW1wb3J0TWFuYWdlciwgbmV3RmlsZUluZm8pLnBhcnNlKGNvbnRlbnRzLCBmdW5jdGlvbiAoZSwgcm9vdCkgewogICAgICAgICAgICAgICAgICAgIGZpbGVQYXJzZWRGdW5jKGUsIHJvb3QsIHJlc29sdmVkRmlsZW5hbWUpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICB2YXIgcHJvbWlzZSA9IGZpbGVNYW5hZ2VyLmxvYWRGaWxlKHBhdGgsIGN1cnJlbnRGaWxlSW5mby5jdXJyZW50RGlyZWN0b3J5LCB0aGlzLmNvbnRleHQsIGVudmlyb25tZW50LAogICAgICAgICAgICBmdW5jdGlvbihlcnIsIGxvYWRlZEZpbGUpIHsKICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgZmlsZVBhcnNlZEZ1bmMoZXJyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxvYWRGaWxlQ2FsbGJhY2sobG9hZGVkRmlsZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBpZiAocHJvbWlzZSkgewogICAgICAgICAgICBwcm9taXNlLnRoZW4obG9hZEZpbGVDYWxsYmFjaywgZmlsZVBhcnNlZEZ1bmMpOwogICAgICAgIH0KICAgIH07CiAgICByZXR1cm4gSW1wb3J0TWFuYWdlcjsKfTsKCn0seyIuL2NvbnRleHRzIjoxMCwiLi9wYXJzZXIvcGFyc2VyIjozNywiLi9wbHVnaW5zL2Z1bmN0aW9uLWltcG9ydGVyIjozOX1dLDMwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihlbnZpcm9ubWVudCwgZmlsZU1hbmFnZXJzKSB7CiAgICB2YXIgU291cmNlTWFwT3V0cHV0LCBTb3VyY2VNYXBCdWlsZGVyLCBQYXJzZVRyZWUsIEltcG9ydE1hbmFnZXIsIEVudmlyb25tZW50OwoKICAgIHZhciBsZXNzID0gewogICAgICAgIHZlcnNpb246IFsyLCA1LCAzXSwKICAgICAgICBkYXRhOiByZXF1aXJlKCcuL2RhdGEnKSwKICAgICAgICB0cmVlOiByZXF1aXJlKCcuL3RyZWUnKSwKICAgICAgICBFbnZpcm9ubWVudDogKEVudmlyb25tZW50ID0gcmVxdWlyZSgiLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudCIpKSwKICAgICAgICBBYnN0cmFjdEZpbGVNYW5hZ2VyOiByZXF1aXJlKCIuL2Vudmlyb25tZW50L2Fic3RyYWN0LWZpbGUtbWFuYWdlciIpLAogICAgICAgIGVudmlyb25tZW50OiAoZW52aXJvbm1lbnQgPSBuZXcgRW52aXJvbm1lbnQoZW52aXJvbm1lbnQsIGZpbGVNYW5hZ2VycykpLAogICAgICAgIHZpc2l0b3JzOiByZXF1aXJlKCcuL3Zpc2l0b3JzJyksCiAgICAgICAgUGFyc2VyOiByZXF1aXJlKCcuL3BhcnNlci9wYXJzZXInKSwKICAgICAgICBmdW5jdGlvbnM6IHJlcXVpcmUoJy4vZnVuY3Rpb25zJykoZW52aXJvbm1lbnQpLAogICAgICAgIGNvbnRleHRzOiByZXF1aXJlKCIuL2NvbnRleHRzIiksCiAgICAgICAgU291cmNlTWFwT3V0cHV0OiAoU291cmNlTWFwT3V0cHV0ID0gcmVxdWlyZSgnLi9zb3VyY2UtbWFwLW91dHB1dCcpKGVudmlyb25tZW50KSksCiAgICAgICAgU291cmNlTWFwQnVpbGRlcjogKFNvdXJjZU1hcEJ1aWxkZXIgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtYnVpbGRlcicpKFNvdXJjZU1hcE91dHB1dCwgZW52aXJvbm1lbnQpKSwKICAgICAgICBQYXJzZVRyZWU6IChQYXJzZVRyZWUgPSByZXF1aXJlKCcuL3BhcnNlLXRyZWUnKShTb3VyY2VNYXBCdWlsZGVyKSksCiAgICAgICAgSW1wb3J0TWFuYWdlcjogKEltcG9ydE1hbmFnZXIgPSByZXF1aXJlKCcuL2ltcG9ydC1tYW5hZ2VyJykoZW52aXJvbm1lbnQpKSwKICAgICAgICByZW5kZXI6IHJlcXVpcmUoIi4vcmVuZGVyIikoZW52aXJvbm1lbnQsIFBhcnNlVHJlZSwgSW1wb3J0TWFuYWdlciksCiAgICAgICAgcGFyc2U6IHJlcXVpcmUoIi4vcGFyc2UiKShlbnZpcm9ubWVudCwgUGFyc2VUcmVlLCBJbXBvcnRNYW5hZ2VyKSwKICAgICAgICBMZXNzRXJyb3I6IHJlcXVpcmUoJy4vbGVzcy1lcnJvcicpLAogICAgICAgIHRyYW5zZm9ybVRyZWU6IHJlcXVpcmUoJy4vdHJhbnNmb3JtLXRyZWUnKSwKICAgICAgICB1dGlsczogcmVxdWlyZSgnLi91dGlscycpLAogICAgICAgIFBsdWdpbk1hbmFnZXI6IHJlcXVpcmUoJy4vcGx1Z2luLW1hbmFnZXInKSwKICAgICAgICBsb2dnZXI6IHJlcXVpcmUoJy4vbG9nZ2VyJykKICAgIH07CgogICAgcmV0dXJuIGxlc3M7Cn07Cgp9LHsiLi9jb250ZXh0cyI6MTAsIi4vZGF0YSI6MTIsIi4vZW52aXJvbm1lbnQvYWJzdHJhY3QtZmlsZS1tYW5hZ2VyIjoxNCwiLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudCI6MTUsIi4vZnVuY3Rpb25zIjoyMiwiLi9pbXBvcnQtbWFuYWdlciI6MjksIi4vbGVzcy1lcnJvciI6MzEsIi4vbG9nZ2VyIjozMiwiLi9wYXJzZSI6MzQsIi4vcGFyc2UtdHJlZSI6MzMsIi4vcGFyc2VyL3BhcnNlciI6MzcsIi4vcGx1Z2luLW1hbmFnZXIiOjM4LCIuL3JlbmRlciI6NDAsIi4vc291cmNlLW1hcC1idWlsZGVyIjo0MSwiLi9zb3VyY2UtbWFwLW91dHB1dCI6NDIsIi4vdHJhbnNmb3JtLXRyZWUiOjQzLCIuL3RyZWUiOjYxLCIuL3V0aWxzIjo4MiwiLi92aXNpdG9ycyI6ODZ9XSwzMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciB1dGlscyA9IHJlcXVpcmUoIi4vdXRpbHMiKTsKCnZhciBMZXNzRXJyb3IgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIExlc3NFcnJvcihlLCBpbXBvcnRNYW5hZ2VyLCBjdXJyZW50RmlsZW5hbWUpIHsKCiAgICBFcnJvci5jYWxsKHRoaXMpOwoKICAgIHZhciBmaWxlbmFtZSA9IGUuZmlsZW5hbWUgfHwgY3VycmVudEZpbGVuYW1lOwoKICAgIGlmIChpbXBvcnRNYW5hZ2VyICYmIGZpbGVuYW1lKSB7CiAgICAgICAgdmFyIGlucHV0ID0gaW1wb3J0TWFuYWdlci5jb250ZW50c1tmaWxlbmFtZV0sCiAgICAgICAgICAgIGxvYyA9IHV0aWxzLmdldExvY2F0aW9uKGUuaW5kZXgsIGlucHV0KSwKICAgICAgICAgICAgbGluZSA9IGxvYy5saW5lLAogICAgICAgICAgICBjb2wgID0gbG9jLmNvbHVtbiwKICAgICAgICAgICAgY2FsbExpbmUgPSBlLmNhbGwgJiYgdXRpbHMuZ2V0TG9jYXRpb24oZS5jYWxsLCBpbnB1dCkubGluZSwKICAgICAgICAgICAgbGluZXMgPSBpbnB1dC5zcGxpdCgnXG4nKTsKCiAgICAgICAgdGhpcy50eXBlID0gZS50eXBlIHx8ICdTeW50YXgnOwogICAgICAgIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZTsKICAgICAgICB0aGlzLmluZGV4ID0gZS5pbmRleDsKICAgICAgICB0aGlzLmxpbmUgPSB0eXBlb2YgbGluZSA9PT0gJ251bWJlcicgPyBsaW5lICsgMSA6IG51bGw7CiAgICAgICAgdGhpcy5jYWxsTGluZSA9IGNhbGxMaW5lICsgMTsKICAgICAgICB0aGlzLmNhbGxFeHRyYWN0ID0gbGluZXNbY2FsbExpbmVdOwogICAgICAgIHRoaXMuY29sdW1uID0gY29sOwogICAgICAgIHRoaXMuZXh0cmFjdCA9IFsKICAgICAgICAgICAgbGluZXNbbGluZSAtIDFdLAogICAgICAgICAgICBsaW5lc1tsaW5lXSwKICAgICAgICAgICAgbGluZXNbbGluZSArIDFdCiAgICAgICAgXTsKICAgIH0KICAgIHRoaXMubWVzc2FnZSA9IGUubWVzc2FnZTsKICAgIHRoaXMuc3RhY2sgPSBlLnN0YWNrOwp9OwoKaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAndW5kZWZpbmVkJykgewogICAgdmFyIEYgPSBmdW5jdGlvbiAoKSB7fTsKICAgIEYucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlOwogICAgTGVzc0Vycm9yLnByb3RvdHlwZSA9IG5ldyBGKCk7Cn0gZWxzZSB7CiAgICBMZXNzRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpOwp9CgpMZXNzRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGVzc0Vycm9yOwoKfSx7Ii4vdXRpbHMiOjgyfV0sMzI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewptb2R1bGUuZXhwb3J0cyA9IHsKICAgIGVycm9yOiBmdW5jdGlvbihtc2cpIHsKICAgICAgICB0aGlzLl9maXJlRXZlbnQoImVycm9yIiwgbXNnKTsKICAgIH0sCiAgICB3YXJuOiBmdW5jdGlvbihtc2cpIHsKICAgICAgICB0aGlzLl9maXJlRXZlbnQoIndhcm4iLCBtc2cpOwogICAgfSwKICAgIGluZm86IGZ1bmN0aW9uKG1zZykgewogICAgICAgIHRoaXMuX2ZpcmVFdmVudCgiaW5mbyIsIG1zZyk7CiAgICB9LAogICAgZGVidWc6IGZ1bmN0aW9uKG1zZykgewogICAgICAgIHRoaXMuX2ZpcmVFdmVudCgiZGVidWciLCBtc2cpOwogICAgfSwKICAgIGFkZExpc3RlbmVyOiBmdW5jdGlvbihsaXN0ZW5lcikgewogICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTsKICAgIH0sCiAgICByZW1vdmVMaXN0ZW5lcjogZnVuY3Rpb24obGlzdGVuZXIpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2xpc3RlbmVycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJzW2ldID09PSBsaXN0ZW5lcikgewogICAgICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCiAgICBfZmlyZUV2ZW50OiBmdW5jdGlvbih0eXBlLCBtc2cpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2xpc3RlbmVycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgbG9nRnVuY3Rpb24gPSB0aGlzLl9saXN0ZW5lcnNbaV1bdHlwZV07CiAgICAgICAgICAgIGlmIChsb2dGdW5jdGlvbikgewogICAgICAgICAgICAgICAgbG9nRnVuY3Rpb24obXNnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCiAgICBfbGlzdGVuZXJzOiBbXQp9OwoKfSx7fV0sMzM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTGVzc0Vycm9yID0gcmVxdWlyZSgnLi9sZXNzLWVycm9yJyksCiAgICB0cmFuc2Zvcm1UcmVlID0gcmVxdWlyZSgiLi90cmFuc2Zvcm0tdHJlZSIpLAogICAgbG9nZ2VyID0gcmVxdWlyZSgiLi9sb2dnZXIiKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oU291cmNlTWFwQnVpbGRlcikgewogICAgdmFyIFBhcnNlVHJlZSA9IGZ1bmN0aW9uKHJvb3QsIGltcG9ydHMpIHsKICAgICAgICB0aGlzLnJvb3QgPSByb290OwogICAgICAgIHRoaXMuaW1wb3J0cyA9IGltcG9ydHM7CiAgICB9OwoKICAgIFBhcnNlVHJlZS5wcm90b3R5cGUudG9DU1MgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgdmFyIGV2YWxkUm9vdCwgcmVzdWx0ID0ge30sIHNvdXJjZU1hcEJ1aWxkZXI7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZXZhbGRSb290ID0gdHJhbnNmb3JtVHJlZSh0aGlzLnJvb3QsIG9wdGlvbnMpOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExlc3NFcnJvcihlLCB0aGlzLmltcG9ydHMpOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdmFyIGNvbXByZXNzID0gQm9vbGVhbihvcHRpb25zLmNvbXByZXNzKTsKICAgICAgICAgICAgaWYgKGNvbXByZXNzKSB7CiAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiVGhlIGNvbXByZXNzIG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkLiBXZSByZWNvbW1lbmQgeW91IHVzZSBhIGRlZGljYXRlZCBjc3MgbWluaWZpZXIsIGZvciBpbnN0YW5jZSBzZWUgbGVzcy1wbHVnaW4tY2xlYW4tY3NzLiIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgdG9DU1NPcHRpb25zID0gewogICAgICAgICAgICAgICAgY29tcHJlc3M6IGNvbXByZXNzLAogICAgICAgICAgICAgICAgZHVtcExpbmVOdW1iZXJzOiBvcHRpb25zLmR1bXBMaW5lTnVtYmVycywKICAgICAgICAgICAgICAgIHN0cmljdFVuaXRzOiBCb29sZWFuKG9wdGlvbnMuc3RyaWN0VW5pdHMpLAogICAgICAgICAgICAgICAgbnVtUHJlY2lzaW9uOiA4fTsKCiAgICAgICAgICAgIGlmIChvcHRpb25zLnNvdXJjZU1hcCkgewogICAgICAgICAgICAgICAgc291cmNlTWFwQnVpbGRlciA9IG5ldyBTb3VyY2VNYXBCdWlsZGVyKG9wdGlvbnMuc291cmNlTWFwKTsKICAgICAgICAgICAgICAgIHJlc3VsdC5jc3MgPSBzb3VyY2VNYXBCdWlsZGVyLnRvQ1NTKGV2YWxkUm9vdCwgdG9DU1NPcHRpb25zLCB0aGlzLmltcG9ydHMpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmVzdWx0LmNzcyA9IGV2YWxkUm9vdC50b0NTUyh0b0NTU09wdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTGVzc0Vycm9yKGUsIHRoaXMuaW1wb3J0cyk7CiAgICAgICAgfQoKICAgICAgICBpZiAob3B0aW9ucy5wbHVnaW5NYW5hZ2VyKSB7CiAgICAgICAgICAgIHZhciBwb3N0UHJvY2Vzc29ycyA9IG9wdGlvbnMucGx1Z2luTWFuYWdlci5nZXRQb3N0UHJvY2Vzc29ycygpOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc3RQcm9jZXNzb3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICByZXN1bHQuY3NzID0gcG9zdFByb2Nlc3NvcnNbaV0ucHJvY2VzcyhyZXN1bHQuY3NzLCB7IHNvdXJjZU1hcDogc291cmNlTWFwQnVpbGRlciwgb3B0aW9uczogb3B0aW9ucywgaW1wb3J0czogdGhpcy5pbXBvcnRzIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChvcHRpb25zLnNvdXJjZU1hcCkgewogICAgICAgICAgICByZXN1bHQubWFwID0gc291cmNlTWFwQnVpbGRlci5nZXRFeHRlcm5hbFNvdXJjZU1hcCgpOwogICAgICAgIH0KCiAgICAgICAgcmVzdWx0LmltcG9ydHMgPSBbXTsKICAgICAgICBmb3IgKHZhciBmaWxlIGluIHRoaXMuaW1wb3J0cy5maWxlcykgewogICAgICAgICAgICBpZiAodGhpcy5pbXBvcnRzLmZpbGVzLmhhc093blByb3BlcnR5KGZpbGUpICYmIGZpbGUgIT09IHRoaXMuaW1wb3J0cy5yb290RmlsZW5hbWUpIHsKICAgICAgICAgICAgICAgIHJlc3VsdC5pbXBvcnRzLnB1c2goZmlsZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH07CiAgICByZXR1cm4gUGFyc2VUcmVlOwp9OwoKfSx7Ii4vbGVzcy1lcnJvciI6MzEsIi4vbG9nZ2VyIjozMiwiLi90cmFuc2Zvcm0tdHJlZSI6NDN9XSwzNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBQcm9taXNlQ29uc3RydWN0b3IsCiAgICBjb250ZXh0cyA9IHJlcXVpcmUoIi4vY29udGV4dHMiKSwKICAgIFBhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2VyL3BhcnNlcicpLAogICAgUGx1Z2luTWFuYWdlciA9IHJlcXVpcmUoJy4vcGx1Z2luLW1hbmFnZXInKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZW52aXJvbm1lbnQsIFBhcnNlVHJlZSwgSW1wb3J0TWFuYWdlcikgewogICAgdmFyIHBhcnNlID0gZnVuY3Rpb24gKGlucHV0LCBvcHRpb25zLCBjYWxsYmFjaykgewogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoKICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zOwogICAgICAgICAgICBvcHRpb25zID0ge307CiAgICAgICAgfQoKICAgICAgICBpZiAoIWNhbGxiYWNrKSB7CiAgICAgICAgICAgIGlmICghUHJvbWlzZUNvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICAgICBQcm9taXNlQ29uc3RydWN0b3IgPSB0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcgPyByZXF1aXJlKCdwcm9taXNlJykgOiBQcm9taXNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlQ29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgcGFyc2UuY2FsbChzZWxmLCBpbnB1dCwgb3B0aW9ucywgZnVuY3Rpb24oZXJyLCBvdXRwdXQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob3V0cHV0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIGNvbnRleHQsCiAgICAgICAgICAgICAgICByb290RmlsZUluZm8sCiAgICAgICAgICAgICAgICBwbHVnaW5NYW5hZ2VyID0gbmV3IFBsdWdpbk1hbmFnZXIodGhpcyk7CgogICAgICAgICAgICBwbHVnaW5NYW5hZ2VyLmFkZFBsdWdpbnMob3B0aW9ucy5wbHVnaW5zKTsKICAgICAgICAgICAgb3B0aW9ucy5wbHVnaW5NYW5hZ2VyID0gcGx1Z2luTWFuYWdlcjsKCiAgICAgICAgICAgIGNvbnRleHQgPSBuZXcgY29udGV4dHMuUGFyc2Uob3B0aW9ucyk7CgogICAgICAgICAgICBpZiAob3B0aW9ucy5yb290RmlsZUluZm8pIHsKICAgICAgICAgICAgICAgIHJvb3RGaWxlSW5mbyA9IG9wdGlvbnMucm9vdEZpbGVJbmZvOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGZpbGVuYW1lID0gb3B0aW9ucy5maWxlbmFtZSB8fCAiaW5wdXQiOwogICAgICAgICAgICAgICAgdmFyIGVudHJ5UGF0aCA9IGZpbGVuYW1lLnJlcGxhY2UoL1teXC9cXF0qJC8sICIiKTsKICAgICAgICAgICAgICAgIHJvb3RGaWxlSW5mbyA9IHsKICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZTogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVVcmxzOiBjb250ZXh0LnJlbGF0aXZlVXJscywKICAgICAgICAgICAgICAgICAgICByb290cGF0aDogY29udGV4dC5yb290cGF0aCB8fCAiIiwKICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGlyZWN0b3J5OiBlbnRyeVBhdGgsCiAgICAgICAgICAgICAgICAgICAgZW50cnlQYXRoOiBlbnRyeVBhdGgsCiAgICAgICAgICAgICAgICAgICAgcm9vdEZpbGVuYW1lOiBmaWxlbmFtZQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIC8vIGFkZCBpbiBhIG1pc3NpbmcgdHJhaWxpbmcgc2xhc2gKICAgICAgICAgICAgICAgIGlmIChyb290RmlsZUluZm8ucm9vdHBhdGggJiYgcm9vdEZpbGVJbmZvLnJvb3RwYXRoLnNsaWNlKC0xKSAhPT0gIi8iKSB7CiAgICAgICAgICAgICAgICAgICAgcm9vdEZpbGVJbmZvLnJvb3RwYXRoICs9ICIvIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGltcG9ydHMgPSBuZXcgSW1wb3J0TWFuYWdlcihjb250ZXh0LCByb290RmlsZUluZm8pOwoKICAgICAgICAgICAgbmV3IFBhcnNlcihjb250ZXh0LCBpbXBvcnRzLCByb290RmlsZUluZm8pCiAgICAgICAgICAgICAgICAucGFyc2UoaW5wdXQsIGZ1bmN0aW9uIChlLCByb290KSB7CiAgICAgICAgICAgICAgICBpZiAoZSkgeyByZXR1cm4gY2FsbGJhY2soZSk7IH0KICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJvb3QsIGltcG9ydHMsIG9wdGlvbnMpOwogICAgICAgICAgICB9LCBvcHRpb25zKTsKICAgICAgICB9CiAgICB9OwogICAgcmV0dXJuIHBhcnNlOwp9OwoKfSx7Ii4vY29udGV4dHMiOjEwLCIuL3BhcnNlci9wYXJzZXIiOjM3LCIuL3BsdWdpbi1tYW5hZ2VyIjozOCwicHJvbWlzZSI6dW5kZWZpbmVkfV0sMzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewovLyBTcGxpdCB0aGUgaW5wdXQgaW50byBjaHVua3MuCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBmYWlsKSB7CiAgICB2YXIgbGVuID0gaW5wdXQubGVuZ3RoLCBsZXZlbCA9IDAsIHBhcmVuTGV2ZWwgPSAwLAogICAgICAgIGxhc3RPcGVuaW5nLCBsYXN0T3BlbmluZ1BhcmVuLCBsYXN0TXVsdGlDb21tZW50LCBsYXN0TXVsdGlDb21tZW50RW5kQnJhY2UsCiAgICAgICAgY2h1bmtzID0gW10sIGVtaXRGcm9tID0gMCwKICAgICAgICBjaHVua2VyQ3VycmVudEluZGV4LCBjdXJyZW50Q2h1bmtTdGFydEluZGV4LCBjYywgY2MyLCBtYXRjaGVkOwoKICAgIGZ1bmN0aW9uIGVtaXRDaHVuayhmb3JjZSkgewogICAgICAgIHZhciBsZW4gPSBjaHVua2VyQ3VycmVudEluZGV4IC0gZW1pdEZyb207CiAgICAgICAgaWYgKCgobGVuIDwgNTEyKSAmJiAhZm9yY2UpIHx8ICFsZW4pIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjaHVua3MucHVzaChpbnB1dC5zbGljZShlbWl0RnJvbSwgY2h1bmtlckN1cnJlbnRJbmRleCArIDEpKTsKICAgICAgICBlbWl0RnJvbSA9IGNodW5rZXJDdXJyZW50SW5kZXggKyAxOwogICAgfQoKICAgIGZvciAoY2h1bmtlckN1cnJlbnRJbmRleCA9IDA7IGNodW5rZXJDdXJyZW50SW5kZXggPCBsZW47IGNodW5rZXJDdXJyZW50SW5kZXgrKykgewogICAgICAgIGNjID0gaW5wdXQuY2hhckNvZGVBdChjaHVua2VyQ3VycmVudEluZGV4KTsKICAgICAgICBpZiAoKChjYyA+PSA5NykgJiYgKGNjIDw9IDEyMikpIHx8IChjYyA8IDM0KSkgewogICAgICAgICAgICAvLyBhLXogb3Igd2hpdGVzcGFjZQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoY2MpIHsKICAgICAgICAgICAgY2FzZSA0MDogICAgICAgICAgICAgICAgICAgICAgICAvLyAoCiAgICAgICAgICAgICAgICBwYXJlbkxldmVsKys7CiAgICAgICAgICAgICAgICBsYXN0T3BlbmluZ1BhcmVuID0gY2h1bmtlckN1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBjYXNlIDQxOiAgICAgICAgICAgICAgICAgICAgICAgIC8vICkKICAgICAgICAgICAgICAgIGlmICgtLXBhcmVuTGV2ZWwgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoIm1pc3Npbmcgb3BlbmluZyBgKGAiLCBjaHVua2VyQ3VycmVudEluZGV4KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBjYXNlIDU5OiAgICAgICAgICAgICAgICAgICAgICAgIC8vIDsKICAgICAgICAgICAgICAgIGlmICghcGFyZW5MZXZlbCkgeyBlbWl0Q2h1bmsoKTsgfQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGNhc2UgMTIzOiAgICAgICAgICAgICAgICAgICAgICAgLy8gewogICAgICAgICAgICAgICAgbGV2ZWwrKzsKICAgICAgICAgICAgICAgIGxhc3RPcGVuaW5nID0gY2h1bmtlckN1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBjYXNlIDEyNTogICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgIGlmICgtLWxldmVsIDwgMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJtaXNzaW5nIG9wZW5pbmcgYHtgIiwgY2h1bmtlckN1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWxldmVsICYmICFwYXJlbkxldmVsKSB7IGVtaXRDaHVuaygpOyB9CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgY2FzZSA5MjogICAgICAgICAgICAgICAgICAgICAgICAvLyBcCiAgICAgICAgICAgICAgICBpZiAoY2h1bmtlckN1cnJlbnRJbmRleCA8IGxlbiAtIDEpIHsgY2h1bmtlckN1cnJlbnRJbmRleCsrOyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoInVuZXNjYXBlZCBgXFxgIiwgY2h1bmtlckN1cnJlbnRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgMzQ6CiAgICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGNhc2UgOTY6ICAgICAgICAgICAgICAgICAgICAgICAgLy8gIiwgJyBhbmQgYAogICAgICAgICAgICAgICAgbWF0Y2hlZCA9IDA7CiAgICAgICAgICAgICAgICBjdXJyZW50Q2h1bmtTdGFydEluZGV4ID0gY2h1bmtlckN1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgIGZvciAoY2h1bmtlckN1cnJlbnRJbmRleCA9IGNodW5rZXJDdXJyZW50SW5kZXggKyAxOyBjaHVua2VyQ3VycmVudEluZGV4IDwgbGVuOyBjaHVua2VyQ3VycmVudEluZGV4KyspIHsKICAgICAgICAgICAgICAgICAgICBjYzIgPSBpbnB1dC5jaGFyQ29kZUF0KGNodW5rZXJDdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgICAgICAgIGlmIChjYzIgPiA5NikgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgIGlmIChjYzIgPT0gY2MpIHsgbWF0Y2hlZCA9IDE7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGNjMiA9PSA5MikgeyAgICAgICAgLy8gXAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2h1bmtlckN1cnJlbnRJbmRleCA9PSBsZW4gLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgidW5lc2NhcGVkIGBcXGAiLCBjaHVua2VyQ3VycmVudEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjaHVua2VyQ3VycmVudEluZGV4Kys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG1hdGNoZWQpIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJ1bm1hdGNoZWQgYCIgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKSArICJgIiwgY3VycmVudENodW5rU3RhcnRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgNDc6ICAgICAgICAgICAgICAgICAgICAgICAgLy8gLywgY2hlY2sgZm9yIGNvbW1lbnQKICAgICAgICAgICAgICAgIGlmIChwYXJlbkxldmVsIHx8IChjaHVua2VyQ3VycmVudEluZGV4ID09IGxlbiAtIDEpKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBjYzIgPSBpbnB1dC5jaGFyQ29kZUF0KGNodW5rZXJDdXJyZW50SW5kZXggKyAxKTsKICAgICAgICAgICAgICAgIGlmIChjYzIgPT0gNDcpIHsKICAgICAgICAgICAgICAgICAgICAvLyAvLywgZmluZCBsbmZlZWQKICAgICAgICAgICAgICAgICAgICBmb3IgKGNodW5rZXJDdXJyZW50SW5kZXggPSBjaHVua2VyQ3VycmVudEluZGV4ICsgMjsgY2h1bmtlckN1cnJlbnRJbmRleCA8IGxlbjsgY2h1bmtlckN1cnJlbnRJbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNjMiA9IGlucHV0LmNoYXJDb2RlQXQoY2h1bmtlckN1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY2MyIDw9IDEzKSAmJiAoKGNjMiA9PSAxMCkgfHwgKGNjMiA9PSAxMykpKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYzIgPT0gNDIpIHsKICAgICAgICAgICAgICAgICAgICAvLyAvKiwgZmluZCAqLwogICAgICAgICAgICAgICAgICAgIGxhc3RNdWx0aUNvbW1lbnQgPSBjdXJyZW50Q2h1bmtTdGFydEluZGV4ID0gY2h1bmtlckN1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgICAgICBmb3IgKGNodW5rZXJDdXJyZW50SW5kZXggPSBjaHVua2VyQ3VycmVudEluZGV4ICsgMjsgY2h1bmtlckN1cnJlbnRJbmRleCA8IGxlbiAtIDE7IGNodW5rZXJDdXJyZW50SW5kZXgrKykgewogICAgICAgICAgICAgICAgICAgICAgICBjYzIgPSBpbnB1dC5jaGFyQ29kZUF0KGNodW5rZXJDdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2MyID09IDEyNSkgeyBsYXN0TXVsdGlDb21tZW50RW5kQnJhY2UgPSBjaHVua2VyQ3VycmVudEluZGV4OyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYzIgIT0gNDIpIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoY2h1bmtlckN1cnJlbnRJbmRleCArIDEpID09IDQ3KSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChjaHVua2VyQ3VycmVudEluZGV4ID09IGxlbiAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoIm1pc3NpbmcgY2xvc2luZyBgKi9gIiwgY3VycmVudENodW5rU3RhcnRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNodW5rZXJDdXJyZW50SW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBjYXNlIDQyOiAgICAgICAgICAgICAgICAgICAgICAgLy8gKiwgY2hlY2sgZm9yIHVubWF0Y2hlZCAqLwogICAgICAgICAgICAgICAgaWYgKChjaHVua2VyQ3VycmVudEluZGV4IDwgbGVuIC0gMSkgJiYgKGlucHV0LmNoYXJDb2RlQXQoY2h1bmtlckN1cnJlbnRJbmRleCArIDEpID09IDQ3KSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJ1bm1hdGNoZWQgYC8qYCIsIGNodW5rZXJDdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChsZXZlbCAhPT0gMCkgewogICAgICAgIGlmICgobGFzdE11bHRpQ29tbWVudCA+IGxhc3RPcGVuaW5nKSAmJiAobGFzdE11bHRpQ29tbWVudEVuZEJyYWNlID4gbGFzdE11bHRpQ29tbWVudCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhaWwoIm1pc3NpbmcgY2xvc2luZyBgfWAgb3IgYCovYCIsIGxhc3RPcGVuaW5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFpbCgibWlzc2luZyBjbG9zaW5nIGB9YCIsIGxhc3RPcGVuaW5nKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKHBhcmVuTGV2ZWwgIT09IDApIHsKICAgICAgICByZXR1cm4gZmFpbCgibWlzc2luZyBjbG9zaW5nIGApYCIsIGxhc3RPcGVuaW5nUGFyZW4pOwogICAgfQoKICAgIGVtaXRDaHVuayh0cnVlKTsKICAgIHJldHVybiBjaHVua3M7Cn07Cgp9LHt9XSwzNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBjaHVua2VyID0gcmVxdWlyZSgnLi9jaHVua2VyJyk7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGlucHV0LCAgICAgICAvLyBMZVNTIGlucHV0IHN0cmluZwogICAgICAgIGosICAgICAgICAgICAvLyBjdXJyZW50IGNodW5rCiAgICAgICAgc2F2ZVN0YWNrID0gW10sICAgLy8gaG9sZHMgc3RhdGUgZm9yIGJhY2t0cmFja2luZwogICAgICAgIGZ1cnRoZXN0LCAgICAvLyBmdXJ0aGVzdCBpbmRleCB0aGUgcGFyc2VyIGhhcyBnb25lIHRvCiAgICAgICAgZnVydGhlc3RQb3NzaWJsZUVycm9yTWVzc2FnZSwvLyBpZiB0aGlzIGlzIGZ1cnRoZXN0IHdlIGdvdCB0bywgdGhpcyBpcyB0aGUgcHJvYmFibHkgY2F1c2UKICAgICAgICBjaHVua3MsICAgICAgLy8gY2h1bmtpZmllZCBpbnB1dAogICAgICAgIGN1cnJlbnQsICAgICAvLyBjdXJyZW50IGNodW5rCiAgICAgICAgY3VycmVudFBvcywgIC8vIGluZGV4IG9mIGN1cnJlbnQgY2h1bmssIGluIGBpbnB1dGAKICAgICAgICBwYXJzZXJJbnB1dCA9IHt9OwoKICAgIHBhcnNlcklucHV0LnNhdmUgPSBmdW5jdGlvbigpIHsKICAgICAgICBjdXJyZW50UG9zID0gcGFyc2VySW5wdXQuaTsKICAgICAgICBzYXZlU3RhY2sucHVzaCggeyBjdXJyZW50OiBjdXJyZW50LCBpOiBwYXJzZXJJbnB1dC5pLCBqOiBqIH0pOwogICAgfTsKICAgIHBhcnNlcklucHV0LnJlc3RvcmUgPSBmdW5jdGlvbihwb3NzaWJsZUVycm9yTWVzc2FnZSkgewoKICAgICAgICBpZiAocGFyc2VySW5wdXQuaSA+IGZ1cnRoZXN0IHx8IChwYXJzZXJJbnB1dC5pID09PSBmdXJ0aGVzdCAmJiBwb3NzaWJsZUVycm9yTWVzc2FnZSAmJiAhZnVydGhlc3RQb3NzaWJsZUVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgICAgZnVydGhlc3QgPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICBmdXJ0aGVzdFBvc3NpYmxlRXJyb3JNZXNzYWdlID0gcG9zc2libGVFcnJvck1lc3NhZ2U7CiAgICAgICAgfQogICAgICAgIHZhciBzdGF0ZSA9IHNhdmVTdGFjay5wb3AoKTsKICAgICAgICBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsKICAgICAgICBjdXJyZW50UG9zID0gcGFyc2VySW5wdXQuaSA9IHN0YXRlLmk7CiAgICAgICAgaiA9IHN0YXRlLmo7CiAgICB9OwogICAgcGFyc2VySW5wdXQuZm9yZ2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgc2F2ZVN0YWNrLnBvcCgpOwogICAgfTsKICAgIHBhcnNlcklucHV0LmlzV2hpdGVzcGFjZSA9IGZ1bmN0aW9uIChvZmZzZXQpIHsKICAgICAgICB2YXIgcG9zID0gcGFyc2VySW5wdXQuaSArIChvZmZzZXQgfHwgMCksCiAgICAgICAgICAgIGNvZGUgPSBpbnB1dC5jaGFyQ29kZUF0KHBvcyk7CiAgICAgICAgcmV0dXJuIChjb2RlID09PSBDSEFSQ09ERV9TUEFDRSB8fCBjb2RlID09PSBDSEFSQ09ERV9DUiB8fCBjb2RlID09PSBDSEFSQ09ERV9UQUIgfHwgY29kZSA9PT0gQ0hBUkNPREVfTEYpOwogICAgfTsKCiAgICAvLyBTcGVjaWFsaXphdGlvbiBvZiAkKHRvaykKICAgIHBhcnNlcklucHV0LiRyZSA9IGZ1bmN0aW9uKHRvaykgewogICAgICAgIGlmIChwYXJzZXJJbnB1dC5pID4gY3VycmVudFBvcykgewogICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5zbGljZShwYXJzZXJJbnB1dC5pIC0gY3VycmVudFBvcyk7CiAgICAgICAgICAgIGN1cnJlbnRQb3MgPSBwYXJzZXJJbnB1dC5pOwogICAgICAgIH0KCiAgICAgICAgdmFyIG0gPSB0b2suZXhlYyhjdXJyZW50KTsKICAgICAgICBpZiAoIW0pIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBza2lwV2hpdGVzcGFjZShtWzBdLmxlbmd0aCk7CiAgICAgICAgaWYgKHR5cGVvZiBtID09PSAic3RyaW5nIikgewogICAgICAgICAgICByZXR1cm4gbTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtLmxlbmd0aCA9PT0gMSA/IG1bMF0gOiBtOwogICAgfTsKCiAgICBwYXJzZXJJbnB1dC4kY2hhciA9IGZ1bmN0aW9uKHRvaykgewogICAgICAgIGlmIChpbnB1dC5jaGFyQXQocGFyc2VySW5wdXQuaSkgIT09IHRvaykgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgc2tpcFdoaXRlc3BhY2UoMSk7CiAgICAgICAgcmV0dXJuIHRvazsKICAgIH07CgogICAgcGFyc2VySW5wdXQuJHN0ciA9IGZ1bmN0aW9uKHRvaykgewogICAgICAgIHZhciB0b2tMZW5ndGggPSB0b2subGVuZ3RoOwoKICAgICAgICAvLyBodHRwczovL2pzcGVyZi5jb20vc3RyaW5nLXN0YXJ0c3dpdGgvMjEKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva0xlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQXQocGFyc2VySW5wdXQuaSArIGkpICE9PSB0b2suY2hhckF0KGkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc2tpcFdoaXRlc3BhY2UodG9rTGVuZ3RoKTsKICAgICAgICByZXR1cm4gdG9rOwogICAgfTsKCiAgICBwYXJzZXJJbnB1dC4kcXVvdGVkID0gZnVuY3Rpb24oKSB7CgogICAgICAgIHZhciBzdGFydENoYXIgPSBpbnB1dC5jaGFyQXQocGFyc2VySW5wdXQuaSk7CiAgICAgICAgaWYgKHN0YXJ0Q2hhciAhPT0gIiciICYmIHN0YXJ0Q2hhciAhPT0gJyInKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCwKICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcGFyc2VySW5wdXQuaTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgKyBjdXJyZW50UG9zaXRpb24gPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgbmV4dENoYXIgPSBpbnB1dC5jaGFyQXQoaSArIGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAgICAgIHN3aXRjaChuZXh0Q2hhcikgewogICAgICAgICAgICAgICAgY2FzZSAiXFwiOgogICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGNhc2UgIlxyIjoKICAgICAgICAgICAgICAgIGNhc2UgIlxuIjoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2Ugc3RhcnRDaGFyOgogICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBpbnB1dC5zdWJzdHIoY3VycmVudFBvc2l0aW9uLCBpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgc2tpcFdoaXRlc3BhY2UoaSArIDEpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHI7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfTsKCiAgICB2YXIgQ0hBUkNPREVfU1BBQ0UgPSAzMiwKICAgICAgICBDSEFSQ09ERV9UQUIgPSA5LAogICAgICAgIENIQVJDT0RFX0xGID0gMTAsCiAgICAgICAgQ0hBUkNPREVfQ1IgPSAxMywKICAgICAgICBDSEFSQ09ERV9QTFVTID0gNDMsCiAgICAgICAgQ0hBUkNPREVfQ09NTUEgPSA0NCwKICAgICAgICBDSEFSQ09ERV9GT1JXQVJEX1NMQVNIID0gNDcsCiAgICAgICAgQ0hBUkNPREVfOSA9IDU3OwoKICAgIHBhcnNlcklucHV0LmF1dG9Db21tZW50QWJzb3JiID0gdHJ1ZTsKICAgIHBhcnNlcklucHV0LmNvbW1lbnRTdG9yZSA9IFtdOwogICAgcGFyc2VySW5wdXQuZmluaXNoZWQgPSBmYWxzZTsKCiAgICB2YXIgc2tpcFdoaXRlc3BhY2UgPSBmdW5jdGlvbihsZW5ndGgpIHsKICAgICAgICB2YXIgb2xkaSA9IHBhcnNlcklucHV0LmksIG9sZGogPSBqLAogICAgICAgICAgICBjdXJyID0gcGFyc2VySW5wdXQuaSAtIGN1cnJlbnRQb3MsCiAgICAgICAgICAgIGVuZEluZGV4ID0gcGFyc2VySW5wdXQuaSArIGN1cnJlbnQubGVuZ3RoIC0gY3VyciwKICAgICAgICAgICAgbWVtID0gKHBhcnNlcklucHV0LmkgKz0gbGVuZ3RoKSwKICAgICAgICAgICAgaW5wID0gaW5wdXQsCiAgICAgICAgICAgIGMsIG5leHRDaGFyLCBjb21tZW50OwoKICAgICAgICBmb3IgKDsgcGFyc2VySW5wdXQuaSA8IGVuZEluZGV4OyBwYXJzZXJJbnB1dC5pKyspIHsKICAgICAgICAgICAgYyA9IGlucC5jaGFyQ29kZUF0KHBhcnNlcklucHV0LmkpOwoKICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmF1dG9Db21tZW50QWJzb3JiICYmIGMgPT09IENIQVJDT0RFX0ZPUldBUkRfU0xBU0gpIHsKICAgICAgICAgICAgICAgIG5leHRDaGFyID0gaW5wLmNoYXJBdChwYXJzZXJJbnB1dC5pICsgMSk7CiAgICAgICAgICAgICAgICBpZiAobmV4dENoYXIgPT09ICcvJykgewogICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSB7aW5kZXg6IHBhcnNlcklucHV0LmksIGlzTGluZUNvbW1lbnQ6IHRydWV9OwogICAgICAgICAgICAgICAgICAgIHZhciBuZXh0TmV3TGluZSA9IGlucC5pbmRleE9mKCJcbiIsIHBhcnNlcklucHV0LmkgKyAyKTsKICAgICAgICAgICAgICAgICAgICBpZiAobmV4dE5ld0xpbmUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHROZXdMaW5lID0gZW5kSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmkgPSBuZXh0TmV3TGluZTsKICAgICAgICAgICAgICAgICAgICBjb21tZW50LnRleHQgPSBpbnAuc3Vic3RyKGNvbW1lbnQuaSwgcGFyc2VySW5wdXQuaSAtIGNvbW1lbnQuaSk7CiAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuY29tbWVudFN0b3JlLnB1c2goY29tbWVudCk7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5leHRDaGFyID09PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFN0YXJTbGFzaCA9IGlucC5pbmRleE9mKCIqLyIsIHBhcnNlcklucHV0LmkgKyAyKTsKICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFN0YXJTbGFzaCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogcGFyc2VySW5wdXQuaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGlucC5zdWJzdHIocGFyc2VySW5wdXQuaSwgbmV4dFN0YXJTbGFzaCArIDIgLSBwYXJzZXJJbnB1dC5pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGluZUNvbW1lbnQ6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmkgKz0gY29tbWVudC50ZXh0Lmxlbmd0aCAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmNvbW1lbnRTdG9yZS5wdXNoKGNvbW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKChjICE9PSBDSEFSQ09ERV9TUEFDRSkgJiYgKGMgIT09IENIQVJDT0RFX0xGKSAmJiAoYyAhPT0gQ0hBUkNPREVfVEFCKSAmJiAoYyAhPT0gQ0hBUkNPREVfQ1IpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuc2xpY2UobGVuZ3RoICsgcGFyc2VySW5wdXQuaSAtIG1lbSArIGN1cnIpOwogICAgICAgIGN1cnJlbnRQb3MgPSBwYXJzZXJJbnB1dC5pOwoKICAgICAgICBpZiAoIWN1cnJlbnQubGVuZ3RoKSB7CiAgICAgICAgICAgIGlmIChqIDwgY2h1bmtzLmxlbmd0aCAtIDEpIHsKICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjaHVua3NbKytqXTsKICAgICAgICAgICAgICAgIHNraXBXaGl0ZXNwYWNlKDApOyAvLyBza2lwIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjaHVuawogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIHRoaW5ncyBjaGFuZ2VkCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGFyc2VySW5wdXQuZmluaXNoZWQgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG9sZGkgIT09IHBhcnNlcklucHV0LmkgfHwgb2xkaiAhPT0gajsKICAgIH07CgogICAgLy8gU2FtZSBhcyAkKCksIGJ1dCBkb24ndCBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRoZSBwYXJzZXIsCiAgICAvLyBqdXN0IHJldHVybiB0aGUgbWF0Y2guCiAgICBwYXJzZXJJbnB1dC5wZWVrID0gZnVuY3Rpb24odG9rKSB7CiAgICAgICAgaWYgKHR5cGVvZiB0b2sgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIC8vIGh0dHBzOi8vanNwZXJmLmNvbS9zdHJpbmctc3RhcnRzd2l0aC8yMQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvay5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJBdChwYXJzZXJJbnB1dC5pICsgaSkgIT09IHRvay5jaGFyQXQoaSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRvay50ZXN0KGN1cnJlbnQpOwogICAgICAgIH0KICAgIH07CgogICAgLy8gU3BlY2lhbGl6YXRpb24gb2YgcGVlaygpCiAgICAvLyBUT0RPIHJlbW92ZSBvciBjaGFuZ2Ugc29tZSBjdXJyZW50Q2hhciBjYWxscyB0byBwZWVrQ2hhcgogICAgcGFyc2VySW5wdXQucGVla0NoYXIgPSBmdW5jdGlvbih0b2spIHsKICAgICAgICByZXR1cm4gaW5wdXQuY2hhckF0KHBhcnNlcklucHV0LmkpID09PSB0b2s7CiAgICB9OwoKICAgIHBhcnNlcklucHV0LmN1cnJlbnRDaGFyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdChwYXJzZXJJbnB1dC5pKTsKICAgIH07CgogICAgcGFyc2VySW5wdXQuZ2V0SW5wdXQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gaW5wdXQ7CiAgICB9OwoKICAgIHBhcnNlcklucHV0LnBlZWtOb3ROdW1lcmljID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGMgPSBpbnB1dC5jaGFyQ29kZUF0KHBhcnNlcklucHV0LmkpOwogICAgICAgIC8vSXMgdGhlIGZpcnN0IGNoYXIgb2YgdGhlIGRpbWVuc2lvbiAwLTksICcuJywgJysnIG9yICctJwogICAgICAgIHJldHVybiAoYyA+IENIQVJDT0RFXzkgfHwgYyA8IENIQVJDT0RFX1BMVVMpIHx8IGMgPT09IENIQVJDT0RFX0ZPUldBUkRfU0xBU0ggfHwgYyA9PT0gQ0hBUkNPREVfQ09NTUE7CiAgICB9OwoKICAgIHBhcnNlcklucHV0LnN0YXJ0ID0gZnVuY3Rpb24oc3RyLCBjaHVua0lucHV0LCBmYWlsRnVuY3Rpb24pIHsKICAgICAgICBpbnB1dCA9IHN0cjsKICAgICAgICBwYXJzZXJJbnB1dC5pID0gaiA9IGN1cnJlbnRQb3MgPSBmdXJ0aGVzdCA9IDA7CgogICAgICAgIC8vIGNodW5raW5nIGFwcGFyYW50bHkgbWFrZXMgdGhpbmdzIHF1aWNrZXIgKGJ1dCBteSB0ZXN0cyBpbmRpY2F0ZQogICAgICAgIC8vIGl0IG1pZ2h0IGFjdHVhbGx5IG1ha2UgdGhpbmdzIHNsb3dlciBpbiBub2RlIGF0IGxlYXN0KQogICAgICAgIC8vIGFuZCBpdCBpcyBhIG5vbi1wZXJmZWN0IHBhcnNlIC0gaXQgY2FuJ3QgcmVjb2duaXNlCiAgICAgICAgLy8gdW5xdW90ZWQgdXJscywgbWVhbmluZyBpdCBjYW4ndCBkaXN0aW5ndWlzaCBjb21tZW50cwogICAgICAgIC8vIG1lYW5pbmcgY29tbWVudHMgd2l0aCBxdW90ZXMgb3Ige30oKSBpbiB0aGVtIGdldCAnY291bnRlZCcKICAgICAgICAvLyBhbmQgdGhlbiBsZWFkIHRvIHBhcnNlIGVycm9ycy4KICAgICAgICAvLyBJbiBhZGRpdGlvbiBpZiB0aGUgY2h1bmtpbmcgY2h1bmtzIGluIHRoZSB3cm9uZyBwbGFjZSB3ZSBtaWdodAogICAgICAgIC8vIG5vdCBiZSBhYmxlIHRvIHBhcnNlIGEgcGFyc2VyIHN0YXRlbWVudCBpbiBvbmUgZ28KICAgICAgICAvLyB0aGlzIGlzIG9mZmljaWFsbHkgZGVwcmVjYXRlZCBidXQgY2FuIGJlIHN3aXRjaGVkIG9uIHZpYSBhbiBvcHRpb24KICAgICAgICAvLyBpbiB0aGUgY2FzZSBpdCBjYXVzZXMgdG9vIG11Y2ggcGVyZm9ybWFuY2UgaXNzdWVzLgogICAgICAgIGlmIChjaHVua0lucHV0KSB7CiAgICAgICAgICAgIGNodW5rcyA9IGNodW5rZXIoc3RyLCBmYWlsRnVuY3Rpb24pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNodW5rcyA9IFtzdHJdOwogICAgICAgIH0KCiAgICAgICAgY3VycmVudCA9IGNodW5rc1swXTsKCiAgICAgICAgc2tpcFdoaXRlc3BhY2UoMCk7CiAgICB9OwoKICAgIHBhcnNlcklucHV0LmVuZCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBtZXNzYWdlLAogICAgICAgICAgICBpc0ZpbmlzaGVkID0gcGFyc2VySW5wdXQuaSA+PSBpbnB1dC5sZW5ndGg7CgogICAgICAgIGlmIChwYXJzZXJJbnB1dC5pIDwgZnVydGhlc3QpIHsKICAgICAgICAgICAgbWVzc2FnZSA9IGZ1cnRoZXN0UG9zc2libGVFcnJvck1lc3NhZ2U7CiAgICAgICAgICAgIHBhcnNlcklucHV0LmkgPSBmdXJ0aGVzdDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgaXNGaW5pc2hlZDogaXNGaW5pc2hlZCwKICAgICAgICAgICAgZnVydGhlc3Q6IHBhcnNlcklucHV0LmksCiAgICAgICAgICAgIGZ1cnRoZXN0UG9zc2libGVFcnJvck1lc3NhZ2U6IG1lc3NhZ2UsCiAgICAgICAgICAgIGZ1cnRoZXN0UmVhY2hlZEVuZDogcGFyc2VySW5wdXQuaSA+PSBpbnB1dC5sZW5ndGggLSAxLAogICAgICAgICAgICBmdXJ0aGVzdENoYXI6IGlucHV0W3BhcnNlcklucHV0LmldCiAgICAgICAgfTsKICAgIH07CgogICAgcmV0dXJuIHBhcnNlcklucHV0Owp9OwoKfSx7Ii4vY2h1bmtlciI6MzV9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBMZXNzRXJyb3IgPSByZXF1aXJlKCcuLi9sZXNzLWVycm9yJyksCiAgICB0cmVlID0gcmVxdWlyZSgiLi4vdHJlZSIpLAogICAgdmlzaXRvcnMgPSByZXF1aXJlKCIuLi92aXNpdG9ycyIpLAogICAgZ2V0UGFyc2VySW5wdXQgPSByZXF1aXJlKCIuL3BhcnNlci1pbnB1dCIpLAogICAgdXRpbHMgPSByZXF1aXJlKCIuLi91dGlscyIpOwoKLy8KLy8gbGVzcy5qcyAtIHBhcnNlcgovLwovLyAgICBBIHJlbGF0aXZlbHkgc3RyYWlnaHQtZm9yd2FyZCBwcmVkaWN0aXZlIHBhcnNlci4KLy8gICAgVGhlcmUgaXMgbm8gdG9rZW5pemF0aW9uL2xleGluZyBzdGFnZSwgdGhlIGlucHV0IGlzIHBhcnNlZAovLyAgICBpbiBvbmUgc3dlZXAuCi8vCi8vICAgIFRvIG1ha2UgdGhlIHBhcnNlciBmYXN0IGVub3VnaCB0byBydW4gaW4gdGhlIGJyb3dzZXIsIHNldmVyYWwKLy8gICAgb3B0aW1pemF0aW9uIGhhZCB0byBiZSBtYWRlOgovLwovLyAgICAtIE1hdGNoaW5nIGFuZCBzbGljaW5nIG9uIGEgaHVnZSBpbnB1dCBpcyBvZnRlbiBjYXVzZSBvZiBzbG93ZG93bnMuCi8vICAgICAgVGhlIHNvbHV0aW9uIGlzIHRvIGNodW5raWZ5IHRoZSBpbnB1dCBpbnRvIHNtYWxsZXIgc3RyaW5ncy4KLy8gICAgICBUaGUgY2h1bmtzIGFyZSBzdG9yZWQgaW4gdGhlIGBjaHVua3NgIHZhciwKLy8gICAgICBgamAgaG9sZHMgdGhlIGN1cnJlbnQgY2h1bmsgaW5kZXgsIGFuZCBgY3VycmVudFBvc2AgaG9sZHMKLy8gICAgICB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgY2h1bmsgaW4gcmVsYXRpb24gdG8gYGlucHV0YC4KLy8gICAgICBUaGlzIGdpdmVzIHVzIGFuIGFsbW9zdCA0eCBzcGVlZC11cC4KLy8KLy8gICAgLSBJbiBtYW55IGNhc2VzLCB3ZSBkb24ndCBuZWVkIHRvIG1hdGNoIGluZGl2aWR1YWwgdG9rZW5zOwovLyAgICAgIGZvciBleGFtcGxlLCBpZiBhIHZhbHVlIGRvZXNuJ3QgaG9sZCBhbnkgdmFyaWFibGVzLCBvcGVyYXRpb25zCi8vICAgICAgb3IgZHluYW1pYyByZWZlcmVuY2VzLCB0aGUgcGFyc2VyIGNhbiBlZmZlY3RpdmVseSAnc2tpcCcgaXQsCi8vICAgICAgdHJlYXRpbmcgaXQgYXMgYSBsaXRlcmFsLgovLyAgICAgIEFuIGV4YW1wbGUgd291bGQgYmUgJzFweCBzb2xpZCAjMDAwJyAtIHdoaWNoIGV2YWx1YXRlcyB0byBpdHNlbGYsCi8vICAgICAgd2UgZG9uJ3QgbmVlZCB0byBrbm93IHdoYXQgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBhcmUuCi8vICAgICAgVGhlIGRyYXdiYWNrLCBvZiBjb3Vyc2UgaXMgdGhhdCB5b3UgZG9uJ3QgZ2V0IHRoZSBiZW5lZml0cyBvZgovLyAgICAgIHN5bnRheC1jaGVja2luZyBvbiB0aGUgQ1NTLiBUaGlzIGdpdmVzIHVzIGEgNTAlIHNwZWVkLXVwIGluIHRoZSBwYXJzZXIsCi8vICAgICAgYW5kIGEgc21hbGxlciBzcGVlZC11cCBpbiB0aGUgY29kZS1nZW4uCi8vCi8vCi8vICAgIFRva2VuIG1hdGNoaW5nIGlzIGRvbmUgd2l0aCB0aGUgYCRgIGZ1bmN0aW9uLCB3aGljaCBlaXRoZXIgdGFrZXMKLy8gICAgYSB0ZXJtaW5hbCBzdHJpbmcgb3IgcmVnZXhwLCBvciBhIG5vbi10ZXJtaW5hbCBmdW5jdGlvbiB0byBjYWxsLgovLyAgICBJdCBhbHNvIHRha2VzIGNhcmUgb2YgbW92aW5nIGFsbCB0aGUgaW5kaWNlcyBmb3J3YXJkcy4KLy8KLy8KdmFyIFBhcnNlciA9IGZ1bmN0aW9uIFBhcnNlcihjb250ZXh0LCBpbXBvcnRzLCBmaWxlSW5mbykgewogICAgdmFyIHBhcnNlcnMsCiAgICAgICAgcGFyc2VySW5wdXQgPSBnZXRQYXJzZXJJbnB1dCgpOwoKICAgIGZ1bmN0aW9uIGV4cGVjdChhcmcsIG1zZywgaW5kZXgpIHsKICAgICAgICAvLyBzb21lIG9sZGVyIGJyb3dzZXJzIHJldHVybiB0eXBlb2YgJ2Z1bmN0aW9uJyBmb3IgUmVnRXhwCiAgICAgICAgdmFyIHJlc3VsdCA9IChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJykgPyBhcmcuY2FsbChwYXJzZXJzKSA6IHBhcnNlcklucHV0LiRyZShhcmcpOwogICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9CiAgICAgICAgZXJyb3IobXNnIHx8ICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJyA/ICJleHBlY3RlZCAnIiArIGFyZyArICInIGdvdCAnIiArIHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgKyAiJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJ1bmV4cGVjdGVkIHRva2VuIikpOwogICAgfQoKICAgIC8vIFNwZWNpYWxpemF0aW9uIG9mIGV4cGVjdCgpCiAgICBmdW5jdGlvbiBleHBlY3RDaGFyKGFyZywgbXNnKSB7CiAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKGFyZykpIHsKICAgICAgICAgICAgcmV0dXJuIGFyZzsKICAgICAgICB9CiAgICAgICAgZXJyb3IobXNnIHx8ICJleHBlY3RlZCAnIiArIGFyZyArICInIGdvdCAnIiArIHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgKyAiJyIpOwogICAgfQoKICAgIGZ1bmN0aW9uIGVycm9yKG1zZywgdHlwZSkgewogICAgICAgIHRocm93IG5ldyBMZXNzRXJyb3IoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGluZGV4OiBwYXJzZXJJbnB1dC5pLAogICAgICAgICAgICAgICAgZmlsZW5hbWU6IGZpbGVJbmZvLmZpbGVuYW1lLAogICAgICAgICAgICAgICAgdHlwZTogdHlwZSB8fCAnU3ludGF4JywKICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1zZwogICAgICAgICAgICB9LAogICAgICAgICAgICBpbXBvcnRzCiAgICAgICAgKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXREZWJ1Z0luZm8oaW5kZXgpIHsKICAgICAgICB2YXIgZmlsZW5hbWUgPSBmaWxlSW5mby5maWxlbmFtZTsKCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgbGluZU51bWJlcjogdXRpbHMuZ2V0TG9jYXRpb24oaW5kZXgsIHBhcnNlcklucHV0LmdldElucHV0KCkpLmxpbmUgKyAxLAogICAgICAgICAgICBmaWxlTmFtZTogZmlsZW5hbWUKICAgICAgICB9OwogICAgfQoKICAgIC8vCiAgICAvLyBUaGUgUGFyc2VyCiAgICAvLwogICAgcmV0dXJuIHsKCiAgICAgICAgLy8KICAgICAgICAvLyBQYXJzZSBhbiBpbnB1dCBzdHJpbmcgaW50byBhbiBhYnN0cmFjdCBzeW50YXggdHJlZSwKICAgICAgICAvLyBAcGFyYW0gc3RyIEEgc3RyaW5nIGNvbnRhaW5pbmcgJ2xlc3MnIG1hcmt1cAogICAgICAgIC8vIEBwYXJhbSBjYWxsYmFjayBjYWxsIGBjYWxsYmFja2Agd2hlbiBkb25lLgogICAgICAgIC8vIEBwYXJhbSBbYWRkaXRpb25hbERhdGFdIEFuIG9wdGlvbmFsIG1hcCB3aGljaCBjYW4gY29udGFpbnMgdmFycyAtIGEgbWFwIChrZXksIHZhbHVlKSBvZiB2YXJpYWJsZXMgdG8gYXBwbHkKICAgICAgICAvLwogICAgICAgIHBhcnNlOiBmdW5jdGlvbiAoc3RyLCBjYWxsYmFjaywgYWRkaXRpb25hbERhdGEpIHsKICAgICAgICAgICAgdmFyIHJvb3QsIGVycm9yID0gbnVsbCwgZ2xvYmFsVmFycywgbW9kaWZ5VmFycywgaWdub3JlZCwgcHJlVGV4dCA9ICIiOwoKICAgICAgICAgICAgZ2xvYmFsVmFycyA9IChhZGRpdGlvbmFsRGF0YSAmJiBhZGRpdGlvbmFsRGF0YS5nbG9iYWxWYXJzKSA/IFBhcnNlci5zZXJpYWxpemVWYXJzKGFkZGl0aW9uYWxEYXRhLmdsb2JhbFZhcnMpICsgJ1xuJyA6ICcnOwogICAgICAgICAgICBtb2RpZnlWYXJzID0gKGFkZGl0aW9uYWxEYXRhICYmIGFkZGl0aW9uYWxEYXRhLm1vZGlmeVZhcnMpID8gJ1xuJyArIFBhcnNlci5zZXJpYWxpemVWYXJzKGFkZGl0aW9uYWxEYXRhLm1vZGlmeVZhcnMpIDogJyc7CgogICAgICAgICAgICBpZiAoY29udGV4dC5wbHVnaW5NYW5hZ2VyKSB7CiAgICAgICAgICAgICAgICB2YXIgcHJlUHJvY2Vzc29ycyA9IGNvbnRleHQucGx1Z2luTWFuYWdlci5nZXRQcmVQcm9jZXNzb3JzKCk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZVByb2Nlc3NvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBzdHIgPSBwcmVQcm9jZXNzb3JzW2ldLnByb2Nlc3Moc3RyLCB7IGNvbnRleHQ6IGNvbnRleHQsIGltcG9ydHM6IGltcG9ydHMsIGZpbGVJbmZvOiBmaWxlSW5mbyB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGdsb2JhbFZhcnMgfHwgKGFkZGl0aW9uYWxEYXRhICYmIGFkZGl0aW9uYWxEYXRhLmJhbm5lcikpIHsKICAgICAgICAgICAgICAgIHByZVRleHQgPSAoKGFkZGl0aW9uYWxEYXRhICYmIGFkZGl0aW9uYWxEYXRhLmJhbm5lcikgPyBhZGRpdGlvbmFsRGF0YS5iYW5uZXIgOiAiIikgKyBnbG9iYWxWYXJzOwogICAgICAgICAgICAgICAgaWdub3JlZCA9IGltcG9ydHMuY29udGVudHNJZ25vcmVkQ2hhcnM7CiAgICAgICAgICAgICAgICBpZ25vcmVkW2ZpbGVJbmZvLmZpbGVuYW1lXSA9IGlnbm9yZWRbZmlsZUluZm8uZmlsZW5hbWVdIHx8IDA7CiAgICAgICAgICAgICAgICBpZ25vcmVkW2ZpbGVJbmZvLmZpbGVuYW1lXSArPSBwcmVUZXh0Lmxlbmd0aDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL1xyXG4/L2csICdcbicpOwogICAgICAgICAgICAvLyBSZW1vdmUgcG90ZW50aWFsIFVURiBCeXRlIE9yZGVyIE1hcmsKICAgICAgICAgICAgc3RyID0gcHJlVGV4dCArIHN0ci5yZXBsYWNlKC9eXHVGRUZGLywgJycpICsgbW9kaWZ5VmFyczsKICAgICAgICAgICAgaW1wb3J0cy5jb250ZW50c1tmaWxlSW5mby5maWxlbmFtZV0gPSBzdHI7CgogICAgICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBwcmltYXJ5IHJ1bGUuCiAgICAgICAgICAgIC8vIFRoZSB3aG9sZSBzeW50YXggdHJlZSBpcyBoZWxkIHVuZGVyIGEgUnVsZXNldCBub2RlLAogICAgICAgICAgICAvLyB3aXRoIHRoZSBgcm9vdGAgcHJvcGVydHkgc2V0IHRvIHRydWUsIHNvIG5vIGB7fWAgYXJlCiAgICAgICAgICAgIC8vIG91dHB1dC4gVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBpbnB1dCBpcyBwYXJzZWQuCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zdGFydChzdHIsIGNvbnRleHQuY2h1bmtJbnB1dCwgZnVuY3Rpb24gZmFpbChtc2csIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IExlc3NFcnJvcih7CiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BhcnNlJywKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbXNnLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZTogZmlsZUluZm8uZmlsZW5hbWUKICAgICAgICAgICAgICAgICAgICB9LCBpbXBvcnRzKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHJvb3QgPSBuZXcodHJlZS5SdWxlc2V0KShudWxsLCB0aGlzLnBhcnNlcnMucHJpbWFyeSgpKTsKICAgICAgICAgICAgICAgIHJvb3Qucm9vdCA9IHRydWU7CiAgICAgICAgICAgICAgICByb290LmZpcnN0Um9vdCA9IHRydWU7CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgTGVzc0Vycm9yKGUsIGltcG9ydHMsIGZpbGVJbmZvLmZpbGVuYW1lKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIGBpYCBpcyBzbWFsbGVyIHRoYW4gdGhlIGBpbnB1dC5sZW5ndGggLSAxYCwKICAgICAgICAgICAgLy8gaXQgbWVhbnMgdGhlIHBhcnNlciB3YXNuJ3QgYWJsZSB0byBwYXJzZSB0aGUgd2hvbGUKICAgICAgICAgICAgLy8gc3RyaW5nLCBzbyB3ZSd2ZSBnb3QgYSBwYXJzaW5nIGVycm9yLgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBXZSB0cnkgdG8gZXh0cmFjdCBhIFxuIGRlbGltaXRlZCBzdHJpbmcsCiAgICAgICAgICAgIC8vIHNob3dpbmcgdGhlIGxpbmUgd2hlcmUgdGhlIHBhcnNlIGVycm9yIG9jY3VycmVkLgogICAgICAgICAgICAvLyBXZSBzcGxpdCBpdCB1cCBpbnRvIHR3byBwYXJ0cyAodGhlIHBhcnQgd2hpY2ggcGFyc2VkLAogICAgICAgICAgICAvLyBhbmQgdGhlIHBhcnQgd2hpY2ggZGlkbid0KSwgc28gd2UgY2FuIGNvbG9yIHRoZW0gZGlmZmVyZW50bHkuCiAgICAgICAgICAgIHZhciBlbmRJbmZvID0gcGFyc2VySW5wdXQuZW5kKCk7CiAgICAgICAgICAgIGlmICghZW5kSW5mby5pc0ZpbmlzaGVkKSB7CgogICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBlbmRJbmZvLmZ1cnRoZXN0UG9zc2libGVFcnJvck1lc3NhZ2U7CgogICAgICAgICAgICAgICAgaWYgKCFtZXNzYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJVbnJlY29nbmlzZWQgaW5wdXQiOwogICAgICAgICAgICAgICAgICAgIGlmIChlbmRJbmZvLmZ1cnRoZXN0Q2hhciA9PT0gJ30nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIi4gUG9zc2libHkgbWlzc2luZyBvcGVuaW5nICd7JyI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRJbmZvLmZ1cnRoZXN0Q2hhciA9PT0gJyknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIi4gUG9zc2libHkgbWlzc2luZyBvcGVuaW5nICcoJyI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRJbmZvLmZ1cnRoZXN0UmVhY2hlZEVuZCkgewogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIuIFBvc3NpYmx5IG1pc3Npbmcgc29tZXRoaW5nIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZXJyb3IgPSBuZXcgTGVzc0Vycm9yKHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUGFyc2UiLAogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGVuZEluZm8uZnVydGhlc3QsCiAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IGZpbGVJbmZvLmZpbGVuYW1lCiAgICAgICAgICAgICAgICB9LCBpbXBvcnRzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGZpbmlzaCA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICBlID0gZXJyb3IgfHwgZSB8fCBpbXBvcnRzLmVycm9yOwoKICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIExlc3NFcnJvcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IG5ldyBMZXNzRXJyb3IoZSwgaW1wb3J0cywgZmlsZUluZm8uZmlsZW5hbWUpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHJvb3QpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgaWYgKGNvbnRleHQucHJvY2Vzc0ltcG9ydHMgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBuZXcgdmlzaXRvcnMuSW1wb3J0VmlzaXRvcihpbXBvcnRzLCBmaW5pc2gpCiAgICAgICAgICAgICAgICAgICAgLnJ1bihyb290KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBmaW5pc2goKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIC8vCiAgICAgICAgLy8gSGVyZSBpbiwgdGhlIHBhcnNpbmcgcnVsZXMvZnVuY3Rpb25zCiAgICAgICAgLy8KICAgICAgICAvLyBUaGUgYmFzaWMgc3RydWN0dXJlIG9mIHRoZSBzeW50YXggdHJlZSBnZW5lcmF0ZWQgaXMgYXMgZm9sbG93czoKICAgICAgICAvLwogICAgICAgIC8vICAgUnVsZXNldCAtPiAgUnVsZSAtPiBWYWx1ZSAtPiBFeHByZXNzaW9uIC0+IEVudGl0eQogICAgICAgIC8vCiAgICAgICAgLy8gSGVyZSdzIHNvbWUgTGVzcyBjb2RlOgogICAgICAgIC8vCiAgICAgICAgLy8gICAgLmNsYXNzIHsKICAgICAgICAvLyAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIC8vICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICAgICAgICAvLyAgICAgIHdpZHRoOiBAdyArIDRweDsKICAgICAgICAvLyAgICAgID4gLmNoaWxkIHsuLi59CiAgICAgICAgLy8gICAgfQogICAgICAgIC8vCiAgICAgICAgLy8gQW5kIGhlcmUncyB3aGF0IHRoZSBwYXJzZSB0cmVlIG1pZ2h0IGxvb2sgbGlrZToKICAgICAgICAvLwogICAgICAgIC8vICAgICBSdWxlc2V0IChTZWxlY3RvciAnLmNsYXNzJywgWwogICAgICAgIC8vICAgICAgICAgUnVsZSAoImNvbG9yIiwgIFZhbHVlIChbRXhwcmVzc2lvbiBbQ29sb3IgI2ZmZl1dKSkKICAgICAgICAvLyAgICAgICAgIFJ1bGUgKCJib3JkZXIiLCBWYWx1ZSAoW0V4cHJlc3Npb24gW0RpbWVuc2lvbiAxcHhdW0tleXdvcmQgInNvbGlkIl1bQ29sb3IgIzAwMF1dKSkKICAgICAgICAvLyAgICAgICAgIFJ1bGUgKCJ3aWR0aCIsICBWYWx1ZSAoW0V4cHJlc3Npb24gW09wZXJhdGlvbiAiICsgIiBbVmFyaWFibGUgIkB3Il1bRGltZW5zaW9uIDRweF1dXSkpCiAgICAgICAgLy8gICAgICAgICBSdWxlc2V0IChTZWxlY3RvciBbRWxlbWVudCAnPicsICcuY2hpbGQnXSwgWy4uLl0pCiAgICAgICAgLy8gICAgIF0pCiAgICAgICAgLy8KICAgICAgICAvLyAgSW4gZ2VuZXJhbCwgbW9zdCBydWxlcyB3aWxsIHRyeSB0byBwYXJzZSBhIHRva2VuIHdpdGggdGhlIGAkcmUoKWAgZnVuY3Rpb24sIGFuZCBpZiB0aGUgcmV0dXJuCiAgICAgICAgLy8gIHZhbHVlIGlzIHRydWx5LCB3aWxsIHJldHVybiBhIG5ldyBub2RlLCBvZiB0aGUgcmVsZXZhbnQgdHlwZS4gU29tZXRpbWVzLCB3ZSBuZWVkIHRvIGNoZWNrCiAgICAgICAgLy8gIGZpcnN0LCBiZWZvcmUgcGFyc2luZywgdGhhdCdzIHdoZW4gd2UgdXNlIGBwZWVrKClgLgogICAgICAgIC8vCiAgICAgICAgcGFyc2VyczogcGFyc2VycyA9IHsKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gVGhlIGBwcmltYXJ5YCBydWxlIGlzIHRoZSAqZW50cnkqIGFuZCAqZXhpdCogcG9pbnQgb2YgdGhlIHBhcnNlci4KICAgICAgICAgICAgLy8gVGhlIHJ1bGVzIGhlcmUgY2FuIGFwcGVhciBhdCBhbnkgbGV2ZWwgb2YgdGhlIHBhcnNlIHRyZWUuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIFRoZSByZWN1cnNpdmUgbmF0dXJlIG9mIHRoZSBncmFtbWFyIGlzIGFuIGludGVycGxheSBiZXR3ZWVuIHRoZSBgYmxvY2tgCiAgICAgICAgICAgIC8vIHJ1bGUsIHdoaWNoIHJlcHJlc2VudHMgYHsgLi4uIH1gLCB0aGUgYHJ1bGVzZXRgIHJ1bGUsIGFuZCB0aGlzIGBwcmltYXJ5YCBydWxlLAogICAgICAgICAgICAvLyBhcyByZXByZXNlbnRlZCBieSB0aGlzIHNpbXBsaWZpZWQgZ3JhbW1hcjoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gICAgIHByaW1hcnkgIOKGkiAgKHJ1bGVzZXQgfCBydWxlKSsKICAgICAgICAgICAgLy8gICAgIHJ1bGVzZXQgIOKGkiAgc2VsZWN0b3IrIGJsb2NrCiAgICAgICAgICAgIC8vICAgICBibG9jayAgICDihpIgICd7JyBwcmltYXJ5ICd9JwogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBPbmx5IGF0IG9uZSBwb2ludCBpcyB0aGUgcHJpbWFyeSBydWxlIG5vdCBjYWxsZWQgZnJvbSB0aGUKICAgICAgICAgICAgLy8gYmxvY2sgcnVsZTogYXQgdGhlIHJvb3QgbGV2ZWwuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIHByaW1hcnk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBtaXhpbiA9IHRoaXMubWl4aW4sIHJvb3QgPSBbXSwgbm9kZTsKCiAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSB0aGlzLmNvbW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QucHVzaChub2RlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gYWx3YXlzIHByb2Nlc3MgY29tbWVudHMgYmVmb3JlIGRlY2lkaW5nIGlmIGZpbmlzaGVkCiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmZpbmlzaGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQucGVlaygnfScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHRoaXMuZXh0ZW5kUnVsZSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgPSByb290LmNvbmNhdChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBub2RlID0gbWl4aW4uZGVmaW5pdGlvbigpIHx8IHRoaXMucnVsZSgpIHx8IHRoaXMucnVsZXNldCgpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluLmNhbGwoKSB8fCB0aGlzLnJ1bGVzZXRDYWxsKCkgfHwgdGhpcy5kaXJlY3RpdmUoKTsKICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICByb290LnB1c2gobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kU2VtaUNvbG9uID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwYXJzZXJJbnB1dC4kY2hhcigiOyIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFNlbWlDb2xvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFNlbWlDb2xvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBjb21tZW50cyBhcmUgY29sbGVjdGVkIGJ5IHRoZSBtYWluIHBhcnNpbmcgbWVjaGFuaXNtIGFuZCB0aGVuIGFzc2lnbmVkIHRvIG5vZGVzCiAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBhbGxvd3MgaXQKICAgICAgICAgICAgY29tbWVudDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmNvbW1lbnRTdG9yZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY29tbWVudCA9IHBhcnNlcklucHV0LmNvbW1lbnRTdG9yZS5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5Db21tZW50KShjb21tZW50LnRleHQsIGNvbW1lbnQuaXNMaW5lQ29tbWVudCwgY29tbWVudC5pbmRleCwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gRW50aXRpZXMgYXJlIHRva2VucyB3aGljaCBjYW4gYmUgZm91bmQgaW5zaWRlIGFuIEV4cHJlc3Npb24KICAgICAgICAgICAgLy8KICAgICAgICAgICAgZW50aXRpZXM6IHsKICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyBBIHN0cmluZywgd2hpY2ggc3VwcG9ydHMgZXNjYXBpbmcgIiBhbmQgJwogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICAibWlsa3kgd2F5IiAnaGVcJ3MgdGhlIG9uZSEnCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgcXVvdGVkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciwgaW5kZXggPSBwYXJzZXJJbnB1dC5pLCBpc0VzY2FwZWQgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcigifiIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHN0ciA9IHBhcnNlcklucHV0LiRxdW90ZWQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cikgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5RdW90ZWQpKHN0ci5jaGFyQXQoMCksIHN0ci5zdWJzdHIoMSwgc3RyLmxlbmd0aCAtIDIpLCBpc0VzY2FwZWQsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyBBIGNhdGNoLWFsbCB3b3JkLCBzdWNoIGFzOgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICBibGFjayBib3JkZXItY29sbGFwc2UKICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICBrZXl3b3JkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBwYXJzZXJJbnB1dC4kY2hhcigiJSIpIHx8IHBhcnNlcklucHV0LiRyZSgvXltfQS1aYS16LV1bX0EtWmEtejAtOS1dKi8pOwogICAgICAgICAgICAgICAgICAgIGlmIChrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmVlLkNvbG9yLmZyb21LZXl3b3JkKGspIHx8IG5ldyh0cmVlLktleXdvcmQpKGspOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vIEEgZnVuY3Rpb24gY2FsbAogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICByZ2IoMjU1LCAwLCAyNTUpCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gV2UgYWxzbyB0cnkgdG8gY2F0Y2ggSUUncyBgYWxwaGEoKWAsIGJ1dCBsZXQgdGhlIGBhbHBoYWAgcGFyc2VyCiAgICAgICAgICAgICAgICAvLyBkZWFsIHdpdGggdGhlIGRldGFpbHMuCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFyc2VkIHdpdGggdGhlIGBlbnRpdGllcy5hcmd1bWVudHNgIHBhcnNlci4KICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICBjYWxsOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUsIG5hbWVMQywgYXJncywgYWxwaGEsIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKCiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cDovL2pzcGVyZi5jb20vY2FzZS1pbnNlbnNpdGl2ZS1yZWdleC12cy1zdHJ0b2xvd2VyLXRoZW4tcmVnZXgvMTgKICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQucGVlaygvXnVybFwoL2kpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBhcnNlcklucHV0LiRyZSgvXihbXHctXSt8JXxwcm9naWQ6W1x3XC5dKylcKC8pOwogICAgICAgICAgICAgICAgICAgIGlmICghbmFtZSkgeyBwYXJzZXJJbnB1dC5mb3JnZXQoKTsgcmV0dXJuOyB9CgogICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lWzFdOwogICAgICAgICAgICAgICAgICAgIG5hbWVMQyA9IG5hbWUudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWVMQyA9PT0gJ2FscGhhJykgewogICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IHBhcnNlcnMuYWxwaGEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFscGhhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbHBoYTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgYXJncyA9IHRoaXMuYXJndW1lbnRzKCk7CgogICAgICAgICAgICAgICAgICAgIGlmICghIHBhcnNlcklucHV0LiRjaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgiQ291bGQgbm90IHBhcnNlIGNhbGwgYXJndW1lbnRzIG9yIG1pc3NpbmcgJyknIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5DYWxsKShuYW1lLCBhcmdzLCBpbmRleCwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFyZ3VtZW50czogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW10sIGFyZzsKCiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gdGhpcy5hc3NpZ25tZW50KCkgfHwgcGFyc2Vycy5leHByZXNzaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXJnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgcGFyc2VySW5wdXQuJGNoYXIoJywnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3M7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbGl0ZXJhbDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpbWVuc2lvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3IoKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1b3RlZCgpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5pY29kZURlc2NyaXB0b3IoKTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgLy8gQXNzaWdubWVudHMgYXJlIGFyZ3VtZW50IGVudGl0aWVzIGZvciBjYWxscy4KICAgICAgICAgICAgICAgIC8vIFRoZXkgYXJlIHByZXNlbnQgaW4gaWUgZmlsdGVyIHByb3BlcnRpZXMgYXMgc2hvd24gYmVsb3cuCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKCAqb3BhY2l0eT01MCogKQogICAgICAgICAgICAgICAgLy8KCiAgICAgICAgICAgICAgICBhc3NpZ25tZW50OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSwgdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgIGtleSA9IHBhcnNlcklucHV0LiRyZSgvXlx3Kyg/PVxzPz0pL2kpOwogICAgICAgICAgICAgICAgICAgIGlmICgha2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LiRjaGFyKCc9JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2Vycy5lbnRpdHkoKTsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5Bc3NpZ25tZW50KShrZXksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gUGFyc2UgdXJsKCkgdG9rZW5zCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gV2UgdXNlIGEgc3BlY2lmaWMgcnVsZSBmb3IgdXJscywgYmVjYXVzZSB0aGV5IGRvbid0IHJlYWxseSBiZWhhdmUgbGlrZQogICAgICAgICAgICAgICAgLy8gc3RhbmRhcmQgZnVuY3Rpb24gY2FsbHMuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGFyZ3VtZW50IGRvZXNuJ3QgaGF2ZQogICAgICAgICAgICAgICAgLy8gdG8gYmUgZW5jbG9zZWQgd2l0aGluIGEgc3RyaW5nLCBzbyBpdCBjYW4ndCBiZSBwYXJzZWQgYXMgYW4gRXhwcmVzc2lvbi4KICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICB1cmw6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUsIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKCiAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuYXV0b0NvbW1lbnRBYnNvcmIgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kc3RyKCJ1cmwoIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuYXV0b0NvbW1lbnRBYnNvcmIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMucXVvdGVkKCkgfHwgdGhpcy52YXJpYWJsZSgpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC4kcmUoL14oPzooPzpcXFtcKFwpJyJdKXxbXlwoXCknIl0pKy8pIHx8ICIiOwoKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5hdXRvQ29tbWVudEFic29yYiA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGV4cGVjdENoYXIoJyknKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLlVSTCkoKHZhbHVlLnZhbHVlICE9IG51bGwgfHwgdmFsdWUgaW5zdGFuY2VvZiB0cmVlLlZhcmlhYmxlKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA6IG5ldyh0cmVlLkFub255bW91cykodmFsdWUpLCBpbmRleCwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gQSBWYXJpYWJsZSBlbnRpdHksIHN1Y2ggYXMgYEBmaW5rYCwgaW4KICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyAgICAgd2lkdGg6IEBmaW5rICsgMnB4CiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gV2UgdXNlIGEgZGlmZmVyZW50IHBhcnNlciBmb3IgdmFyaWFibGUgZGVmaW5pdGlvbnMsCiAgICAgICAgICAgICAgICAvLyBzZWUgYHBhcnNlcnMudmFyaWFibGVgLgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIHZhcmlhYmxlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUsIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgPT09ICdAJyAmJiAobmFtZSA9IHBhcnNlcklucHV0LiRyZSgvXkBAP1tcdy1dKy8pKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3KHRyZWUuVmFyaWFibGUpKG5hbWUsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAvLyBBIHZhcmlhYmxlIGVudGl0eSB1c2VpbmcgdGhlIHByb3RlY3RpdmUge30gZS5nLiBAe3Zhcn0KICAgICAgICAgICAgICAgIHZhcmlhYmxlQ3VybHk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY3VybHksIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgPT09ICdAJyAmJiAoY3VybHkgPSBwYXJzZXJJbnB1dC4kcmUoL15AXHsoW1x3LV0rKVx9LykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5WYXJpYWJsZSkoIkAiICsgY3VybHlbMV0sIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gQSBIZXhhZGVjaW1hbCBjb2xvcgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICAjNEYzQzJGCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gYHJnYmAgYW5kIGBoc2xgIGNvbG9ycyBhcmUgcGFyc2VkIHRocm91Z2ggdGhlIGBlbnRpdGllcy5jYWxsYCBwYXJzZXIuCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgY29sb3I6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmdiOwoKICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuY3VycmVudENoYXIoKSA9PT0gJyMnICYmIChyZ2IgPSBwYXJzZXJJbnB1dC4kcmUoL14jKFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezN9KS8pKSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJpcCBjb2xvbnMsIGJyYWNrZXRzLCB3aGl0ZXNwYWNlcyBhbmQgb3RoZXIgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmaW5pdGVseSBiZSBwYXJ0IG9mIGNvbG9yIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3JDYW5kaWRhdGVTdHJpbmcgPSByZ2IuaW5wdXQubWF0Y2goL14jKFtcd10rKS4qLyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yQ2FuZGlkYXRlU3RyaW5nID0gY29sb3JDYW5kaWRhdGVTdHJpbmdbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sb3JDYW5kaWRhdGVTdHJpbmcubWF0Y2goL15bQS1GYS1mMC05XSskLykpIHsgLy8gdmVyaWZ5IGlmIGNhbmRpZGF0ZSBjb25zaXN0cyBvbmx5IG9mIGFsbG93ZWQgSEVYIGNoYXJhY3RlcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJJbnZhbGlkIEhFWCBjb2xvciBjb2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLkNvbG9yKShyZ2JbMV0sIHVuZGVmaW5lZCwgJyMnICsgY29sb3JDYW5kaWRhdGVTdHJpbmcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vIEEgRGltZW5zaW9uLCB0aGF0IGlzLCBhIG51bWJlciBhbmQgYSB1bml0CiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gICAgIDAuNWVtIDk1JQogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIGRpbWVuc2lvbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5wZWVrTm90TnVtZXJpYygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlcklucHV0LiRyZSgvXihbKy1dP1xkKlwuP1xkKykoJXxbYS16XSspPy9pKTsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLkRpbWVuc2lvbikodmFsdWVbMV0sIHZhbHVlWzJdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyBBIHVuaWNvZGUgZGVzY3JpcHRvciwgYXMgaXMgdXNlZCBpbiB1bmljb2RlLXJhbmdlCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gVSswPz8gIG9yIFUrMDBBMS0wMEE5CiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgdW5pY29kZURlc2NyaXB0b3I6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdWQ7CgogICAgICAgICAgICAgICAgICAgIHVkID0gcGFyc2VySW5wdXQuJHJlKC9eVVwrWzAtOWEtZkEtRj9dKyhcLVswLTlhLWZBLUY/XSspPy8pOwogICAgICAgICAgICAgICAgICAgIGlmICh1ZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3KHRyZWUuVW5pY29kZURlc2NyaXB0b3IpKHVkWzBdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGNvZGUgdG8gYmUgZXZhbHVhdGVkCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gICAgIGB3aW5kb3cubG9jYXRpb24uaHJlZmAKICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICBqYXZhc2NyaXB0OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGpzLCBpbmRleCA9IHBhcnNlcklucHV0Lmk7CgogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGVzY2FwZSA9IHBhcnNlcklucHV0LiRjaGFyKCJ+Iik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGpzUXVvdGUgPSBwYXJzZXJJbnB1dC4kY2hhcigiYCIpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIWpzUXVvdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBqcyA9IHBhcnNlcklucHV0LiRyZSgvXlteYF0qYC8pOwogICAgICAgICAgICAgICAgICAgIGlmIChqcykgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLkphdmFTY3JpcHQpKGpzLnN1YnN0cigwLCBqcy5sZW5ndGggLSAxKSwgQm9vbGVhbihlc2NhcGUpLCBpbmRleCwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCJpbnZhbGlkIGphdmFzY3JpcHQgZGVmaW5pdGlvbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gVGhlIHZhcmlhYmxlIHBhcnQgb2YgYSB2YXJpYWJsZSBkZWZpbml0aW9uLiBVc2VkIGluIHRoZSBgcnVsZWAgcGFyc2VyCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vICAgICBAZmluazoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgdmFyaWFibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBuYW1lOwoKICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpID09PSAnQCcgJiYgKG5hbWUgPSBwYXJzZXJJbnB1dC4kcmUoL14oQFtcdy1dKylccyo6LykpKSB7IHJldHVybiBuYW1lWzFdOyB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBUaGUgdmFyaWFibGUgcGFydCBvZiBhIHZhcmlhYmxlIGRlZmluaXRpb24uIFVzZWQgaW4gdGhlIGBydWxlYCBwYXJzZXIKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gICAgIEBmaW5rKCk7CiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIHJ1bGVzZXRDYWxsOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgbmFtZTsKCiAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuY3VycmVudENoYXIoKSA9PT0gJ0AnICYmIChuYW1lID0gcGFyc2VySW5wdXQuJHJlKC9eKEBbXHctXSspXHMqXChccypcKVxzKjsvKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRyZWUuUnVsZXNldENhbGwobmFtZVsxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBleHRlbmQgc3ludGF4IC0gdXNlZCB0byBleHRlbmQgc2VsZWN0b3JzCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIGV4dGVuZDogZnVuY3Rpb24oaXNSdWxlKSB7CiAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHMsIGUsIGluZGV4ID0gcGFyc2VySW5wdXQuaSwgb3B0aW9uLCBleHRlbmRMaXN0LCBleHRlbmQ7CgogICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kc3RyKGlzUnVsZSA/ICImOmV4dGVuZCgiIDogIjpleHRlbmQoIikpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICghIChvcHRpb24gPSBwYXJzZXJJbnB1dC4kcmUoL14oYWxsKSg/PVxzKihcKXwsKSkvKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuZWxlbWVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gWyBlIF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IG9wdGlvbiAmJiBvcHRpb25bMV07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiTWlzc2luZyB0YXJnZXQgc2VsZWN0b3IgZm9yIDpleHRlbmQoKS4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kID0gbmV3KHRyZWUuRXh0ZW5kKShuZXcodHJlZS5TZWxlY3RvcikoZWxlbWVudHMpLCBvcHRpb24sIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kTGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRMaXN0LnB1c2goZXh0ZW5kKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRMaXN0ID0gWyBleHRlbmQgXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IHdoaWxlIChwYXJzZXJJbnB1dC4kY2hhcigiLCIpKTsKCiAgICAgICAgICAgICAgICBleHBlY3QoL15cKS8pOwoKICAgICAgICAgICAgICAgIGlmIChpc1J1bGUpIHsKICAgICAgICAgICAgICAgICAgICBleHBlY3QoL147Lyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGV4dGVuZExpc3Q7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBleHRlbmRSdWxlIC0gdXNlZCBpbiBhIHJ1bGUgdG8gZXh0ZW5kIGFsbCB0aGUgcGFyZW50IHNlbGVjdG9ycwogICAgICAgICAgICAvLwogICAgICAgICAgICBleHRlbmRSdWxlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZCh0cnVlKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIE1peGlucwogICAgICAgICAgICAvLwogICAgICAgICAgICBtaXhpbjogewogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vIEEgTWl4aW4gY2FsbCwgd2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudCBsaXN0CiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gICAgICNtaXhpbnMgPiAuc3F1YXJlKCNmZmYpOwogICAgICAgICAgICAgICAgLy8gICAgIC5yb3VuZGVkKDRweCwgYmxhY2spOwogICAgICAgICAgICAgICAgLy8gICAgIC5idXR0b247CiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gVGhlIGB3aGlsZWAgbG9vcCBpcyB0aGVyZSBiZWNhdXNlIG1peGlucyBjYW4gYmUKICAgICAgICAgICAgICAgIC8vIG5hbWVzcGFjZWQsIGJ1dCB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNoaWxkIGFuZCBkZXNjZW5kYW50CiAgICAgICAgICAgICAgICAvLyBzZWxlY3RvciBmb3Igbm93LgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIGNhbGw6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCksIGltcG9ydGFudCA9IGZhbHNlLCBpbmRleCA9IHBhcnNlcklucHV0LmksIGVsZW1JbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMsIGVsZW0sIGUsIGMsIGFyZ3M7CgogICAgICAgICAgICAgICAgICAgIGlmIChzICE9PSAnLicgJiYgcyAhPT0gJyMnKSB7IHJldHVybjsgfQoKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7IC8vIHN0b3AgdXMgYWJzb3JiaW5nIHBhcnQgb2YgYW4gaW52YWxpZCBzZWxlY3RvcgoKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtSW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICAgICAgICBlID0gcGFyc2VySW5wdXQuJHJlKC9eWyMuXSg/Oltcdy1dfFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKy8pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBuZXcodHJlZS5FbGVtZW50KShjLCBlLCBlbGVtSW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGVsZW0pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbIGVsZW0gXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjID0gcGFyc2VySW5wdXQuJGNoYXIoJz4nKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJGNoYXIoJygnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IHRoaXMuYXJncyh0cnVlKS5hcmdzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0Q2hhcignKScpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2Vycy5pbXBvcnRhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0YW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcnMuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLm1peGluLkNhbGwpKGVsZW1lbnRzLCBhcmdzLCBpbmRleCwgZmlsZUluZm8sIGltcG9ydGFudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhcmdzOiBmdW5jdGlvbiAoaXNDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGVudGl0aWVzID0gcGFyc2Vycy5lbnRpdGllcywKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZXIgPSB7IGFyZ3M6bnVsbCwgdmFyaWFkaWM6IGZhbHNlIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zID0gW10sIGFyZ3NTZW1pQ29sb24gPSBbXSwgYXJnc0NvbW1hID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VtaUNvbG9uU2VwYXJhdGVkLCBleHByZXNzaW9uQ29udGFpbnNOYW1lZCwgbmFtZSwgbmFtZUxvb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBhcmcsIGV4cGFuZDsKCiAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwoKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBwYXJzZXJzLmRldGFjaGVkUnVsZXNldCgpIHx8IHBhcnNlcnMuZXhwcmVzc2lvbigpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuY29tbWVudFN0b3JlLmxlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJHN0cigiLi4uIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lci52YXJpYWRpYyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCI7IikgJiYgIWlzU2VtaUNvbG9uU2VwYXJhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VtaUNvbG9uU2VwYXJhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2VtaUNvbG9uU2VwYXJhdGVkID8gYXJnc1NlbWlDb2xvbiA6IGFyZ3NDb21tYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnB1c2goeyB2YXJpYWRpYzogdHJ1ZSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGVudGl0aWVzLnZhcmlhYmxlKCkgfHwgZW50aXRpZXMubGl0ZXJhbCgpIHx8IGVudGl0aWVzLmtleXdvcmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBuYW1lTG9vcCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmcudGhyb3dBd2F5Q29tbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy50aHJvd0F3YXlDb21tZW50cygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYXJnOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0NhbGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZhcmlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnLnZhbHVlICYmIGFyZy52YWx1ZS5sZW5ndGggPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGFyZy52YWx1ZVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGFyZzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmJiB2YWwgaW5zdGFuY2VvZiB0cmVlLlZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJGNoYXIoJzonKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHByZXNzaW9ucy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NlbWlDb2xvblNlcGFyYXRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIkNhbm5vdCBtaXggOyBhbmQgLCBhcyBkZWxpbWl0ZXIgdHlwZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uQ29udGFpbnNOYW1lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlcnMuZGV0YWNoZWRSdWxlc2V0KCkgfHwgcGFyc2Vycy5leHByZXNzaW9uKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2FsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoImNvdWxkIG5vdCB1bmRlcnN0YW5kIHZhbHVlIGZvciBuYW1lZCBhcmd1bWVudCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZXIuYXJncyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybmVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVMb29wID0gKG5hbWUgPSB2YWwubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnNlcklucHV0LiRzdHIoIi4uLiIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0NhbGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZXIudmFyaWFkaWMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJGNoYXIoIjsiKSAmJiAhaXNTZW1pQ29sb25TZXBhcmF0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VtaUNvbG9uU2VwYXJhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNTZW1pQ29sb25TZXBhcmF0ZWQgPyBhcmdzU2VtaUNvbG9uIDogYXJnc0NvbW1hKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnB1c2goeyBuYW1lOiBhcmcubmFtZSwgdmFyaWFkaWM6IHRydWUgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVMb29wID0gdmFsLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zLnB1c2godmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBhcmdzQ29tbWEucHVzaCh7IG5hbWU6bmFtZUxvb3AsIHZhbHVlOnZhbHVlLCBleHBhbmQ6ZXhwYW5kIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCcsJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJGNoYXIoJzsnKSB8fCBpc1NlbWlDb2xvblNlcGFyYXRlZCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHByZXNzaW9uQ29udGFpbnNOYW1lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJDYW5ub3QgbWl4IDsgYW5kICwgYXMgZGVsaW1pdGVyIHR5cGVzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZW1pQ29sb25TZXBhcmF0ZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHByZXNzaW9ucy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcodHJlZS5WYWx1ZSkoZXhwcmVzc2lvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1NlbWlDb2xvbi5wdXNoKHsgbmFtZTpuYW1lLCB2YWx1ZTp2YWx1ZSwgZXhwYW5kOmV4cGFuZCB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uQ29udGFpbnNOYW1lZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm5lci5hcmdzID0gaXNTZW1pQ29sb25TZXBhcmF0ZWQgPyBhcmdzU2VtaUNvbG9uIDogYXJnc0NvbW1hOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5lcjsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gQSBNaXhpbiBkZWZpbml0aW9uLCB3aXRoIGEgbGlzdCBvZiBwYXJhbWV0ZXJzCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgLy8gICAgIC5yb3VuZGVkIChAcmFkaXVzOiAycHgsIEBjb2xvcikgewogICAgICAgICAgICAgICAgLy8gICAgICAgIC4uLgogICAgICAgICAgICAgICAgLy8gICAgIH0KICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyBVbnRpbCB3ZSBoYXZlIGEgZmluZXIgZ3JhaW5lZCBzdGF0ZS1tYWNoaW5lLCB3ZSBoYXZlIHRvCiAgICAgICAgICAgICAgICAvLyBkbyBhIGxvb2stYWhlYWQsIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIGEgbWl4aW4gY2FsbC4KICAgICAgICAgICAgICAgIC8vIFNlZSB0aGUgYHJ1bGVgIGZ1bmN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vIFdlIHN0YXJ0IGJ5IG1hdGNoaW5nIGAucm91bmRlZCAoYCwgYW5kIHRoZW4gcHJvY2VlZCBvbiB0bwogICAgICAgICAgICAgICAgLy8gdGhlIGFyZ3VtZW50IGxpc3QsIHdoaWNoIGhhcyBvcHRpb25hbCBkZWZhdWx0IHZhbHVlcy4KICAgICAgICAgICAgICAgIC8vIFdlIHN0b3JlIHRoZSBwYXJhbWV0ZXJzIGluIGBwYXJhbXNgLCB3aXRoIGEgYHZhbHVlYCBrZXksCiAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIHZhbHVlLCBzdWNoIGFzIGluIHRoZSBjYXNlIG9mIGBAcmFkaXVzYC4KICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyBPbmNlIHdlJ3ZlIGdvdCBvdXIgcGFyYW1zIGxpc3QsIGFuZCBhIGNsb3NpbmcgYClgLCB3ZSBwYXJzZQogICAgICAgICAgICAgICAgLy8gdGhlIGB7Li4ufWAgYmxvY2suCiAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgZGVmaW5pdGlvbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBuYW1lLCBwYXJhbXMgPSBbXSwgbWF0Y2gsIHJ1bGVzZXQsIGNvbmQsIHZhcmlhZGljID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKChwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpICE9PSAnLicgJiYgcGFyc2VySW5wdXQuY3VycmVudENoYXIoKSAhPT0gJyMnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5wZWVrKC9eW157XSpcfS8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKCiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBwYXJzZXJJbnB1dC4kcmUoL14oWyMuXSg/Oltcdy1dfFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKylccypcKC8pOwogICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gbWF0Y2hbMV07CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJnSW5mbyA9IHRoaXMuYXJncyhmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IGFyZ0luZm8uYXJnczsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFkaWMgPSBhcmdJbmZvLnZhcmlhZGljOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gLm1peGluY2FsbCgiQHthfSIpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29rcyBhIGJpdCBsaWtlIGEgbWl4aW4gZGVmaW5pdGlvbi4uCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsc28KICAgICAgICAgICAgICAgICAgICAgICAgLy8gLm1peGluY2FsbChAYToge3J1bGU6IHNldDt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBiZSBuaWNlIGFuZCByZXN0b3JlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQuJGNoYXIoJyknKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgiTWlzc2luZyBjbG9zaW5nICcpJyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5jb21tZW50U3RvcmUubGVuZ3RoID0gMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kc3RyKCJ3aGVuIikpIHsgLy8gR3VhcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmQgPSBleHBlY3QocGFyc2Vycy5jb25kaXRpb25zLCAnZXhwZWN0ZWQgY29uZGl0aW9uJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzZXQgPSBwYXJzZXJzLmJsb2NrKCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZXNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3KHRyZWUubWl4aW4uRGVmaW5pdGlvbikobmFtZSwgcGFyYW1zLCBydWxlc2V0LCBjb25kLCB2YXJpYWRpYyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBFbnRpdGllcyBhcmUgdGhlIHNtYWxsZXN0IHJlY29nbml6ZWQgdG9rZW4sCiAgICAgICAgICAgIC8vIGFuZCBjYW4gYmUgZm91bmQgaW5zaWRlIGEgcnVsZSdzIHZhbHVlLgogICAgICAgICAgICAvLwogICAgICAgICAgICBlbnRpdHk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBlbnRpdGllcyA9IHRoaXMuZW50aXRpZXM7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbWVudCgpIHx8IGVudGl0aWVzLmxpdGVyYWwoKSB8fCBlbnRpdGllcy52YXJpYWJsZSgpIHx8IGVudGl0aWVzLnVybCgpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgZW50aXRpZXMuY2FsbCgpICAgIHx8IGVudGl0aWVzLmtleXdvcmQoKSAgfHwgZW50aXRpZXMuamF2YXNjcmlwdCgpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gQSBSdWxlIHRlcm1pbmF0b3IuIE5vdGUgdGhhdCB3ZSB1c2UgYHBlZWsoKWAgdG8gY2hlY2sgZm9yICd9JywKICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgYGJsb2NrYCBydWxlIHdpbGwgYmUgZXhwZWN0aW5nIGl0LCBidXQgd2Ugc3RpbGwgbmVlZCB0byBtYWtlIHN1cmUKICAgICAgICAgICAgLy8gaXQncyB0aGVyZSwgaWYgJzsnIHdhcyBvbW1pdHRlZC4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgZW5kOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VySW5wdXQuJGNoYXIoJzsnKSB8fCBwYXJzZXJJbnB1dC5wZWVrKCd9Jyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBJRSdzIGFscGhhIGZ1bmN0aW9uCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vICAgICBhbHBoYShvcGFjaXR5PTg4KQogICAgICAgICAgICAvLwogICAgICAgICAgICBhbHBoYTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIHZhbHVlOwoKICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2Nhc2UtaW5zZW5zaXRpdmUtcmVnZXgtdnMtc3RydG9sb3dlci10aGVuLXJlZ2V4LzE4CiAgICAgICAgICAgICAgICBpZiAoISBwYXJzZXJJbnB1dC4kcmUoL15vcGFjaXR5PS9pKSkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VySW5wdXQuJHJlKC9eXGQrLyk7CiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleHBlY3QodGhpcy5lbnRpdGllcy52YXJpYWJsZSwgIkNvdWxkIG5vdCBwYXJzZSBhbHBoYSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZXhwZWN0Q2hhcignKScpOwogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLkFscGhhKSh2YWx1ZSk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBBIFNlbGVjdG9yIEVsZW1lbnQKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gICAgIGRpdgogICAgICAgICAgICAvLyAgICAgKyBoMQogICAgICAgICAgICAvLyAgICAgI3NvY2tzCiAgICAgICAgICAgIC8vICAgICBpbnB1dFt0eXBlPSJ0ZXh0Il0KICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gRWxlbWVudHMgYXJlIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIFNlbGVjdG9ycywKICAgICAgICAgICAgLy8gdGhleSBhcmUgbWFkZSBvdXQgb2YgYSBgQ29tYmluYXRvcmAgKHNlZSBjb21iaW5hdG9yIHJ1bGUpLAogICAgICAgICAgICAvLyBhbmQgYW4gZWxlbWVudCBuYW1lLCBzdWNoIGFzIGEgdGFnIGEgY2xhc3MsIG9yIGAqYC4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgZWxlbWVudDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIGUsIGMsIHYsIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKCiAgICAgICAgICAgICAgICBjID0gdGhpcy5jb21iaW5hdG9yKCk7CgogICAgICAgICAgICAgICAgZSA9IHBhcnNlcklucHV0LiRyZSgvXig/OlxkK1wuXGQrfFxkKyklLykgfHwKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC4kcmUoL14oPzpbLiNdP3w6KikoPzpbXHctXXxbXlx4MDAtXHg5Zl18XFwoPzpbQS1GYS1mMC05XXsxLDZ9ID98W15BLUZhLWYwLTldKSkrLykgfHwKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC4kY2hhcignKicpIHx8IHBhcnNlcklucHV0LiRjaGFyKCcmJykgfHwgdGhpcy5hdHRyaWJ1dGUoKSB8fAogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LiRyZSgvXlwoW14mKClAXStcKS8pIHx8ICBwYXJzZXJJbnB1dC4kcmUoL15bXC4jOl0oPz1AKS8pIHx8CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRpdGllcy52YXJpYWJsZUN1cmx5KCk7CgogICAgICAgICAgICAgICAgaWYgKCEgZSkgewogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJGNoYXIoJygnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHYgPSB0aGlzLnNlbGVjdG9yKCkpICYmIHBhcnNlcklucHV0LiRjaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcodHJlZS5QYXJlbikodik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoIk1pc3NpbmcgY2xvc2luZyAnKSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZSkgeyByZXR1cm4gbmV3KHRyZWUuRWxlbWVudCkoYywgZSwgaW5kZXgsIGZpbGVJbmZvKTsgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gQ29tYmluYXRvcnMgY29tYmluZSBlbGVtZW50cyB0b2dldGhlciwgaW4gYSBTZWxlY3Rvci4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gQmVjYXVzZSBvdXIgcGFyc2VyIGlzbid0IHdoaXRlLXNwYWNlIHNlbnNpdGl2ZSwgc3BlY2lhbCBjYXJlCiAgICAgICAgICAgIC8vIGhhcyB0byBiZSB0YWtlbiwgd2hlbiBwYXJzaW5nIHRoZSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGAgYCwKICAgICAgICAgICAgLy8gYXMgaXQncyBhbiBlbXB0eSBzcGFjZS4gV2UgaGF2ZSB0byBjaGVjayB0aGUgcHJldmlvdXMgY2hhcmFjdGVyCiAgICAgICAgICAgIC8vIGluIHRoZSBpbnB1dCwgdG8gc2VlIGlmIGl0J3MgYSBgIGAgY2hhcmFjdGVyLiBNb3JlIGluZm8gb24gaG93CiAgICAgICAgICAgIC8vIHdlIGRlYWwgd2l0aCB0aGlzIGluICpjb21iaW5hdG9yLmpzKi4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgY29tYmluYXRvcjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpOwoKICAgICAgICAgICAgICAgIGlmIChjID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNsYXNoZWRDb21iaW5hdG9yID0gcGFyc2VySW5wdXQuJHJlKC9eXC9bYS16XStcLy9pKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc2xhc2hlZENvbWJpbmF0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5Db21iaW5hdG9yKShzbGFzaGVkQ29tYmluYXRvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJz4nIHx8IGMgPT09ICcrJyB8fCBjID09PSAnficgfHwgYyA9PT0gJ3wnIHx8IGMgPT09ICdeJykgewogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmkrKzsKICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJ14nICYmIHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgPT09ICdeJykgewogICAgICAgICAgICAgICAgICAgICAgICBjID0gJ15eJzsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuaSsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGFyc2VySW5wdXQuaXNXaGl0ZXNwYWNlKCkpIHsgcGFyc2VySW5wdXQuaSsrOyB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLkNvbWJpbmF0b3IpKGMpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJzZXJJbnB1dC5pc1doaXRlc3BhY2UoLTEpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLkNvbWJpbmF0b3IpKCIgIik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5Db21iaW5hdG9yKShudWxsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gQSBDU1Mgc2VsZWN0b3IgKHNlZSBzZWxlY3RvciBiZWxvdykKICAgICAgICAgICAgLy8gd2l0aCBsZXNzIGV4dGVuc2lvbnMgZS5nLiB0aGUgYWJpbGl0eSB0byBleHRlbmQgYW5kIGd1YXJkCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIGxlc3NTZWxlY3RvcjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0b3IodHJ1ZSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEEgQ1NTIFNlbGVjdG9yCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vICAgICAuY2xhc3MgPiBkaXYgKyBoMQogICAgICAgICAgICAvLyAgICAgbGkgYTpob3ZlcgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBTZWxlY3RvcnMgYXJlIG1hZGUgb3V0IG9mIG9uZSBvciBtb3JlIEVsZW1lbnRzLCBzZWUgYWJvdmUuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIHNlbGVjdG9yOiBmdW5jdGlvbiAoaXNMZXNzKSB7CiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pLCBlbGVtZW50cywgZXh0ZW5kTGlzdCwgYywgZSwgYWxsRXh0ZW5kcywgd2hlbiwgY29uZGl0aW9uOwoKICAgICAgICAgICAgICAgIHdoaWxlICgoaXNMZXNzICYmIChleHRlbmRMaXN0ID0gdGhpcy5leHRlbmQoKSkpIHx8IChpc0xlc3MgJiYgKHdoZW4gPSBwYXJzZXJJbnB1dC4kc3RyKCJ3aGVuIikpKSB8fCAoZSA9IHRoaXMuZWxlbWVudCgpKSkgewogICAgICAgICAgICAgICAgICAgIGlmICh3aGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGV4cGVjdCh0aGlzLmNvbmRpdGlvbnMsICdleHBlY3RlZCBjb25kaXRpb24nKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiQ1NTIGd1YXJkIGNhbiBvbmx5IGJlIHVzZWQgYXQgdGhlIGVuZCBvZiBzZWxlY3RvciIpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXh0ZW5kTGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsRXh0ZW5kcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRXh0ZW5kcyA9IGFsbEV4dGVuZHMuY29uY2F0KGV4dGVuZExpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRXh0ZW5kcyA9IGV4dGVuZExpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsRXh0ZW5kcykgeyBlcnJvcigiRXh0ZW5kIGNhbiBvbmx5IGJlIHVzZWQgYXQgdGhlIGVuZCBvZiBzZWxlY3RvciIpOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9IFsgZSBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJ3snIHx8IGMgPT09ICd9JyB8fCBjID09PSAnOycgfHwgYyA9PT0gJywnIHx8IGMgPT09ICcpJykgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzKSB7IHJldHVybiBuZXcodHJlZS5TZWxlY3RvcikoZWxlbWVudHMsIGFsbEV4dGVuZHMsIGNvbmRpdGlvbiwgaW5kZXgsIGZpbGVJbmZvKTsgfQogICAgICAgICAgICAgICAgaWYgKGFsbEV4dGVuZHMpIHsgZXJyb3IoIkV4dGVuZCBtdXN0IGJlIHVzZWQgdG8gZXh0ZW5kIGEgc2VsZWN0b3IsIGl0IGNhbm5vdCBiZSB1c2VkIG9uIGl0cyBvd24iKTsgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBhdHRyaWJ1dGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICghIHBhcnNlcklucHV0LiRjaGFyKCdbJykpIHsgcmV0dXJuOyB9CgogICAgICAgICAgICAgICAgdmFyIGVudGl0aWVzID0gdGhpcy5lbnRpdGllcywKICAgICAgICAgICAgICAgICAgICBrZXksIHZhbCwgb3A7CgogICAgICAgICAgICAgICAgaWYgKCEoa2V5ID0gZW50aXRpZXMudmFyaWFibGVDdXJseSgpKSkgewogICAgICAgICAgICAgICAgICAgIGtleSA9IGV4cGVjdCgvXig/OltfQS1aYS16MC05LVwqXSpcfCk/KD86W19BLVphLXowLTktXXxcXC4pKy8pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG9wID0gcGFyc2VySW5wdXQuJHJlKC9eW3x+KiReXT89Lyk7CiAgICAgICAgICAgICAgICBpZiAob3ApIHsKICAgICAgICAgICAgICAgICAgICB2YWwgPSBlbnRpdGllcy5xdW90ZWQoKSB8fCBwYXJzZXJJbnB1dC4kcmUoL15bMC05XSslLykgfHwgcGFyc2VySW5wdXQuJHJlKC9eW1x3LV0rLykgfHwgZW50aXRpZXMudmFyaWFibGVDdXJseSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGV4cGVjdENoYXIoJ10nKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3KHRyZWUuQXR0cmlidXRlKShrZXksIG9wLCB2YWwpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gVGhlIGBibG9ja2AgcnVsZSBpcyB1c2VkIGJ5IGBydWxlc2V0YCBhbmQgYG1peGluLmRlZmluaXRpb25gLgogICAgICAgICAgICAvLyBJdCdzIGEgd3JhcHBlciBhcm91bmQgdGhlIGBwcmltYXJ5YCBydWxlLCB3aXRoIGFkZGVkIGB7fWAuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIGJsb2NrOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgY29udGVudDsKICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcigneycpICYmIChjb250ZW50ID0gdGhpcy5wcmltYXJ5KCkpICYmIHBhcnNlcklucHV0LiRjaGFyKCd9JykpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGJsb2NrUnVsZXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYmxvY2sgPSB0aGlzLmJsb2NrKCk7CgogICAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7CiAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBuZXcgdHJlZS5SdWxlc2V0KG51bGwsIGJsb2NrKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBibG9jazsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGRldGFjaGVkUnVsZXNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYmxvY2tSdWxlc2V0ID0gdGhpcy5ibG9ja1J1bGVzZXQoKTsKICAgICAgICAgICAgICAgIGlmIChibG9ja1J1bGVzZXQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRyZWUuRGV0YWNoZWRSdWxlc2V0KGJsb2NrUnVsZXNldCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBkaXYsIC5jbGFzcywgYm9keSA+IHAgey4uLn0KICAgICAgICAgICAgLy8KICAgICAgICAgICAgcnVsZXNldDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9ycywgcywgcnVsZXMsIGRlYnVnSW5mbzsKCiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CgogICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZHVtcExpbmVOdW1iZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgZGVidWdJbmZvID0gZ2V0RGVidWdJbmZvKHBhcnNlcklucHV0LmkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMubGVzc1NlbGVjdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycy5wdXNoKHMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycyA9IFsgcyBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5jb21tZW50U3RvcmUubGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAocy5jb25kaXRpb24gJiYgc2VsZWN0b3JzLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIkd1YXJkcyBhcmUgb25seSBjdXJyZW50bHkgYWxsb3dlZCBvbiBhIHNpbmdsZSBzZWxlY3Rvci4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCEgcGFyc2VySW5wdXQuJGNoYXIoJywnKSkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgICAgIGlmIChzLmNvbmRpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiR3VhcmRzIGFyZSBvbmx5IGN1cnJlbnRseSBhbGxvd2VkIG9uIGEgc2luZ2xlIHNlbGVjdG9yLiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5jb21tZW50U3RvcmUubGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JzICYmIChydWxlcyA9IHRoaXMuYmxvY2soKSkpIHsKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZXNldCA9IG5ldyh0cmVlLlJ1bGVzZXQpKHNlbGVjdG9ycywgcnVsZXMsIGNvbnRleHQuc3RyaWN0SW1wb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZHVtcExpbmVOdW1iZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzZXQuZGVidWdJbmZvID0gZGVidWdJbmZvOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnVsZXNldDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBydWxlOiBmdW5jdGlvbiAodHJ5QW5vbnltb3VzKSB7CiAgICAgICAgICAgICAgICB2YXIgbmFtZSwgdmFsdWUsIHN0YXJ0T2ZSdWxlID0gcGFyc2VySW5wdXQuaSwgYyA9IHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCksIGltcG9ydGFudCwgbWVyZ2UsIGlzVmFyaWFibGU7CgogICAgICAgICAgICAgICAgaWYgKGMgPT09ICcuJyB8fCBjID09PSAnIycgfHwgYyA9PT0gJyYnIHx8IGMgPT09ICc6JykgeyByZXR1cm47IH0KCiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CgogICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMudmFyaWFibGUoKSB8fCB0aGlzLnJ1bGVQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBpc1ZhcmlhYmxlID0gdHlwZW9mIG5hbWUgPT09ICJzdHJpbmciOwoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYXJpYWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZGV0YWNoZWRSdWxlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5jb21tZW50U3RvcmUubGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgbmFtZSByZXR1cm5lZCBieSB0aGlzLnJ1bGVQcm9wZXJ0eSgpIGlzIGFsd2F5cyBhbiBhcnJheSBvZiB0aGUgZm9ybToKICAgICAgICAgICAgICAgICAgICAgICAgLy8gW3N0cmluZy0xLCAuLi4sIHN0cmluZy1uLCAiIl0gb3IgW3N0cmluZy0xLCAuLi4sIHN0cmluZy1uLCAiKyJdCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIGVhY2ggaXRlbSBpcyBhIHRyZWUuS2V5d29yZCBvciB0cmVlLlZhcmlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlID0gIWlzVmFyaWFibGUgJiYgbmFtZS5sZW5ndGggPiAxICYmIG5hbWUucG9wKCkudmFsdWU7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmVmZXIgdG8gdHJ5IHRvIHBhcnNlIGZpcnN0IGlmIGl0cyBhIHZhcmlhYmxlIG9yIHdlIGFyZSBjb21wcmVzc2luZwogICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgYWx3YXlzIGZhbGxiYWNrIG9uIHRoZSBvdGhlciBvbmUKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRyeVZhbHVlRmlyc3QgPSAhdHJ5QW5vbnltb3VzICYmIChjb250ZXh0LmNvbXByZXNzIHx8IGlzVmFyaWFibGUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyeVZhbHVlRmlyc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5hbm9ueW1vdXNWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5vbnltb3VzIHZhbHVlcyBhYnNvcmIgdGhlIGVuZCAnOycgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRoZW0gdG8gd29yawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuUnVsZSkobmFtZSwgdmFsdWUsIGZhbHNlLCBtZXJnZSwgc3RhcnRPZlJ1bGUsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRyeVZhbHVlRmlyc3QgJiYgIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMudmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0YW50ID0gdGhpcy5pbXBvcnRhbnQoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLlJ1bGUpKG5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIG1lcmdlLCBzdGFydE9mUnVsZSwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmICF0cnlBbm9ueW1vdXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJ1bGUodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBhbm9ueW1vdXNWYWx1ZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gcGFyc2VySW5wdXQuJHJlKC9eKFteQCtcLyciKmAoO3t9LV0qKTsvKTsKICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5Bbm9ueW1vdXMpKG1hdGNoWzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEFuIEBpbXBvcnQgZGlyZWN0aXZlCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vICAgICBAaW1wb3J0ICJsaWIiOwogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBEZXBlbmRpbmcgb24gb3VyIGVudmlyb25tZW50LCBpbXBvcnRpbmcgaXMgZG9uZSBkaWZmZXJlbnRseToKICAgICAgICAgICAgLy8gSW4gdGhlIGJyb3dzZXIsIGl0J3MgYW4gWEhSIHJlcXVlc3QsIGluIE5vZGUsIGl0IHdvdWxkIGJlIGEKICAgICAgICAgICAgLy8gZmlsZS1zeXN0ZW0gb3BlcmF0aW9uLiBUaGUgZnVuY3Rpb24gdXNlZCBmb3IgaW1wb3J0aW5nIGlzCiAgICAgICAgICAgIC8vIHN0b3JlZCBpbiBgaW1wb3J0YCwgd2hpY2ggd2UgcGFzcyB0byB0aGUgSW1wb3J0IGNvbnN0cnVjdG9yLgogICAgICAgICAgICAvLwogICAgICAgICAgICAiaW1wb3J0IjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIHBhdGgsIGZlYXR1cmVzLCBpbmRleCA9IHBhcnNlcklucHV0Lmk7CgogICAgICAgICAgICAgICAgdmFyIGRpciA9IHBhcnNlcklucHV0LiRyZSgvXkBpbXBvcnQ/XHMrLyk7CgogICAgICAgICAgICAgICAgaWYgKGRpcikgewogICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gKGRpciA/IHRoaXMuaW1wb3J0T3B0aW9ucygpIDogbnVsbCkgfHwge307CgogICAgICAgICAgICAgICAgICAgIGlmICgocGF0aCA9IHRoaXMuZW50aXRpZXMucXVvdGVkKCkgfHwgdGhpcy5lbnRpdGllcy51cmwoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSB0aGlzLm1lZGlhRmVhdHVyZXMoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQuJGNoYXIoJzsnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuaSA9IGluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIm1pc3Npbmcgc2VtaS1jb2xvbiBvciB1bnJlY29nbmlzZWQgbWVkaWEgZmVhdHVyZXMgb24gaW1wb3J0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcyAmJiBuZXcodHJlZS5WYWx1ZSkoZmVhdHVyZXMpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3KHRyZWUuSW1wb3J0KShwYXRoLCBmZWF0dXJlcywgb3B0aW9ucywgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmkgPSBpbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIm1hbGZvcm1lZCBpbXBvcnQgc3RhdGVtZW50Iik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgaW1wb3J0T3B0aW9uczogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgbywgb3B0aW9ucyA9IHt9LCBvcHRpb25OYW1lLCB2YWx1ZTsKCiAgICAgICAgICAgICAgICAvLyBsaXN0IG9mIG9wdGlvbnMsIHN1cnJvdW5kZWQgYnkgcGFyZW5zCiAgICAgICAgICAgICAgICBpZiAoISBwYXJzZXJJbnB1dC4kY2hhcignKCcpKSB7IHJldHVybiBudWxsOyB9CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgbyA9IHRoaXMuaW1wb3J0T3B0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKG9wdGlvbk5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNzcyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZSA9ICJsZXNzIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib25jZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZSA9ICJtdWx0aXBsZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zW29wdGlvbk5hbWVdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIHBhcnNlcklucHV0LiRjaGFyKCcsJykpIHsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IHdoaWxlIChvKTsKICAgICAgICAgICAgICAgIGV4cGVjdENoYXIoJyknKTsKICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgaW1wb3J0T3B0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBvcHQgPSBwYXJzZXJJbnB1dC4kcmUoL14obGVzc3xjc3N8bXVsdGlwbGV8b25jZXxpbmxpbmV8cmVmZXJlbmNlfG9wdGlvbmFsKS8pOwogICAgICAgICAgICAgICAgaWYgKG9wdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRbMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBtZWRpYUZlYXR1cmU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBlbnRpdGllcyA9IHRoaXMuZW50aXRpZXMsIG5vZGVzID0gW10sIGUsIHA7CiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGVudGl0aWVzLmtleXdvcmQoKSB8fCBlbnRpdGllcy52YXJpYWJsZSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJzZXJJbnB1dC4kY2hhcignKCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0aGlzLnByb3BlcnR5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignKScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCAmJiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChuZXcodHJlZS5QYXJlbikobmV3KHRyZWUuUnVsZSkocCwgZSwgbnVsbCwgbnVsbCwgcGFyc2VySW5wdXQuaSwgZmlsZUluZm8sIHRydWUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5wdXNoKG5ldyh0cmVlLlBhcmVuKShlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoImJhZGx5IGZvcm1lZCBtZWRpYSBmZWF0dXJlIGRlZmluaXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoIk1pc3NpbmcgY2xvc2luZyAnKSciKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSB3aGlsZSAoZSk7CgogICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5FeHByZXNzaW9uKShub2Rlcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBtZWRpYUZlYXR1cmVzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgZW50aXRpZXMgPSB0aGlzLmVudGl0aWVzLCBmZWF0dXJlcyA9IFtdLCBlOwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLm1lZGlhRmVhdHVyZSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIHBhcnNlcklucHV0LiRjaGFyKCcsJykpIHsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBlID0gZW50aXRpZXMudmFyaWFibGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBwYXJzZXJJbnB1dC4kY2hhcignLCcpKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IHdoaWxlIChlKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gZmVhdHVyZXMubGVuZ3RoID4gMCA/IGZlYXR1cmVzIDogbnVsbDsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIG1lZGlhOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgZmVhdHVyZXMsIHJ1bGVzLCBtZWRpYSwgZGVidWdJbmZvOwoKICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmR1bXBMaW5lTnVtYmVycykgewogICAgICAgICAgICAgICAgICAgIGRlYnVnSW5mbyA9IGdldERlYnVnSW5mbyhwYXJzZXJJbnB1dC5pKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CgogICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRzdHIoIkBtZWRpYSIpKSB7CiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSB0aGlzLm1lZGlhRmVhdHVyZXMoKTsKCiAgICAgICAgICAgICAgICAgICAgcnVsZXMgPSB0aGlzLmJsb2NrKCk7CgogICAgICAgICAgICAgICAgICAgIGlmICghcnVsZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgibWVkaWEgZGVmaW5pdGlvbnMgcmVxdWlyZSBibG9jayBzdGF0ZW1lbnRzIGFmdGVyIGFueSBmZWF0dXJlcyIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKCiAgICAgICAgICAgICAgICAgICAgbWVkaWEgPSBuZXcodHJlZS5NZWRpYSkocnVsZXMsIGZlYXR1cmVzLCBwYXJzZXJJbnB1dC5pLCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZHVtcExpbmVOdW1iZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhLmRlYnVnSW5mbyA9IGRlYnVnSW5mbzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBtZWRpYTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBBIEBwbHVnaW4gZGlyZWN0aXZlLCB1c2VkIHRvIGltcG9ydCBjb21waWxlciBleHRlbnNpb25zIGR5bmFtaWNhbGx5LgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAgICAgQHBsdWdpbiAibGliIjsKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gRGVwZW5kaW5nIG9uIG91ciBlbnZpcm9ubWVudCwgaW1wb3J0aW5nIGlzIGRvbmUgZGlmZmVyZW50bHk6CiAgICAgICAgICAgIC8vIEluIHRoZSBicm93c2VyLCBpdCdzIGFuIFhIUiByZXF1ZXN0LCBpbiBOb2RlLCBpdCB3b3VsZCBiZSBhCiAgICAgICAgICAgIC8vIGZpbGUtc3lzdGVtIG9wZXJhdGlvbi4gVGhlIGZ1bmN0aW9uIHVzZWQgZm9yIGltcG9ydGluZyBpcwogICAgICAgICAgICAvLyBzdG9yZWQgaW4gYGltcG9ydGAsIHdoaWNoIHdlIHBhc3MgdG8gdGhlIEltcG9ydCBjb25zdHJ1Y3Rvci4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgcGx1Z2luOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgcGF0aCwKICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhcnNlcklucHV0LmksCiAgICAgICAgICAgICAgICAgICAgZGlyICAgPSBwYXJzZXJJbnB1dC4kcmUoL15AcGx1Z2luP1xzKy8pOwoKICAgICAgICAgICAgICAgIGlmIChkaXIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHsgcGx1Z2luIDogdHJ1ZSB9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoKHBhdGggPSB0aGlzLmVudGl0aWVzLnF1b3RlZCgpIHx8IHRoaXMuZW50aXRpZXMudXJsKCkpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LiRjaGFyKCc7JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmkgPSBpbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJtaXNzaW5nIHNlbWktY29sb24gb24gcGx1Z2luIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5JbXBvcnQpKHBhdGgsIG51bGwsIG9wdGlvbnMsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5pID0gaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJtYWxmb3JtZWQgcGx1Z2luIHN0YXRlbWVudCIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEEgQ1NTIERpcmVjdGl2ZQogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAgICAgQGNoYXJzZXQgInV0Zi04IjsKICAgICAgICAgICAgLy8KICAgICAgICAgICAgZGlyZWN0aXZlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pLCBuYW1lLCB2YWx1ZSwgcnVsZXMsIG5vblZlbmRvclNwZWNpZmljTmFtZSwKICAgICAgICAgICAgICAgICAgICBoYXNJZGVudGlmaWVyLCBoYXNFeHByZXNzaW9uLCBoYXNVbmtub3duLCBoYXNCbG9jayA9IHRydWUsIGlzUm9vdGVkID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuY3VycmVudENoYXIoKSAhPT0gJ0AnKSB7IHJldHVybjsgfQoKICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpc1snaW1wb3J0J10oKSB8fCB0aGlzLnBsdWdpbigpIHx8IHRoaXMubWVkaWEoKTsKICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CgogICAgICAgICAgICAgICAgbmFtZSA9IHBhcnNlcklucHV0LiRyZSgvXkBbYS16LV0rLyk7CgogICAgICAgICAgICAgICAgaWYgKCFuYW1lKSB7IHJldHVybjsgfQoKICAgICAgICAgICAgICAgIG5vblZlbmRvclNwZWNpZmljTmFtZSA9IG5hbWU7CiAgICAgICAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMSkgPT0gJy0nICYmIG5hbWUuaW5kZXhPZignLScsIDIpID4gMCkgewogICAgICAgICAgICAgICAgICAgIG5vblZlbmRvclNwZWNpZmljTmFtZSA9ICJAIiArIG5hbWUuc2xpY2UobmFtZS5pbmRleE9mKCctJywgMikgKyAxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzd2l0Y2gobm9uVmVuZG9yU3BlY2lmaWNOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICBjYXNlICJAZm9udC1mYWNlIjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJAdmlld3BvcnQiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkB0b3AtbGVmdCI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQHRvcC1sZWZ0LWNvcm5lciI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQHRvcC1jZW50ZXIiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkB0b3AtcmlnaHQiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkB0b3AtcmlnaHQtY29ybmVyIjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJAYm90dG9tLWxlZnQiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkBib3R0b20tbGVmdC1jb3JuZXIiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkBib3R0b20tY2VudGVyIjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJAYm90dG9tLXJpZ2h0IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJAYm90dG9tLXJpZ2h0LWNvcm5lciI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQGxlZnQtdG9wIjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJAbGVmdC1taWRkbGUiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkBsZWZ0LWJvdHRvbSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQHJpZ2h0LXRvcCI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQHJpZ2h0LW1pZGRsZSI6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQHJpZ2h0LWJvdHRvbSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Jsb2NrID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaXNSb290ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkBjb3VudGVyLXN0eWxlIjoKICAgICAgICAgICAgICAgICAgICAgICAgaGFzSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Jsb2NrID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQGNoYXJzZXQiOgogICAgICAgICAgICAgICAgICAgICAgICBoYXNJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmxvY2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQG5hbWVzcGFjZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0V4cHJlc3Npb24gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBoYXNCbG9jayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJAa2V5ZnJhbWVzIjoKICAgICAgICAgICAgICAgICAgICAgICAgaGFzSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgIkBob3N0IjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJAcGFnZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc1Vua25vd24gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJAZG9jdW1lbnQiOgogICAgICAgICAgICAgICAgICAgIGNhc2UgIkBzdXBwb3J0cyI6CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc1Vua25vd24gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpc1Jvb3RlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5jb21tZW50U3RvcmUubGVuZ3RoID0gMDsKCiAgICAgICAgICAgICAgICBpZiAoaGFzSWRlbnRpZmllcikgewogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5lbnRpdHkoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJleHBlY3RlZCAiICsgbmFtZSArICIgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRXhwcmVzc2lvbikgewogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5leHByZXNzaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiZXhwZWN0ZWQgIiArIG5hbWUgKyAiIGV4cHJlc3Npb24iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc1Vua25vd24pIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChwYXJzZXJJbnB1dC4kcmUoL15bXns7XSsvKSB8fCAnJykudHJpbSgpOwogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyh0cmVlLkFub255bW91cykodmFsdWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoaGFzQmxvY2spIHsKICAgICAgICAgICAgICAgICAgICBydWxlcyA9IHRoaXMuYmxvY2tSdWxlc2V0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHJ1bGVzIHx8ICghaGFzQmxvY2sgJiYgdmFsdWUgJiYgcGFyc2VySW5wdXQuJGNoYXIoJzsnKSkpIHsKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkRpcmVjdGl2ZSkobmFtZSwgdmFsdWUsIHJ1bGVzLCBpbmRleCwgZmlsZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHVtcExpbmVOdW1iZXJzID8gZ2V0RGVidWdJbmZvKGluZGV4KSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBpc1Jvb3RlZAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgiZGlyZWN0aXZlIG9wdGlvbnMgbm90IHJlY29nbmlzZWQiKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEEgVmFsdWUgaXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBFeHByZXNzaW9ucwogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAgICAgZm9udC1mYW1pbHk6IEJhc2tlcnZpbGxlLCBHZW9yZ2lhLCBzZXJpZjsKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gSW4gYSBSdWxlLCBhIFZhbHVlIHJlcHJlc2VudHMgZXZlcnl0aGluZyBhZnRlciB0aGUgYDpgLAogICAgICAgICAgICAvLyBhbmQgYmVmb3JlIHRoZSBgO2AuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgZSwgZXhwcmVzc2lvbnMgPSBbXTsKCiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuZXhwcmVzc2lvbigpOwogICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIHBhcnNlcklucHV0LiRjaGFyKCcsJykpIHsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IHdoaWxlIChlKTsKCiAgICAgICAgICAgICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcodHJlZS5WYWx1ZSkoZXhwcmVzc2lvbnMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbXBvcnRhbnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpID09PSAnIScpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VySW5wdXQuJHJlKC9eISAqaW1wb3J0YW50Lyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN1YjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIGEsIGU7CgogICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCcoJykpIHsKICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5hZGRpdGlvbigpOwogICAgICAgICAgICAgICAgICAgIGlmIChhICYmIHBhcnNlcklucHV0LiRjaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcodHJlZS5FeHByZXNzaW9uKShbYV0pOwogICAgICAgICAgICAgICAgICAgICAgICBlLnBhcmVucyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCJFeHBlY3RlZCAnKSciKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG11bHRpcGxpY2F0aW9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgbSwgYSwgb3AsIG9wZXJhdGlvbiwgaXNTcGFjZWQ7CiAgICAgICAgICAgICAgICBtID0gdGhpcy5vcGVyYW5kKCk7CiAgICAgICAgICAgICAgICBpZiAobSkgewogICAgICAgICAgICAgICAgICAgIGlzU3BhY2VkID0gcGFyc2VySW5wdXQuaXNXaGl0ZXNwYWNlKC0xKTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQucGVlaygvXlwvWypcL10vKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gcGFyc2VySW5wdXQuJGNoYXIoJy8nKSB8fCBwYXJzZXJJbnB1dC4kY2hhcignKicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcCkgeyBwYXJzZXJJbnB1dC5mb3JnZXQoKTsgYnJlYWs7IH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLm9wZXJhbmQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSkgeyBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgbS5wYXJlbnNJbk9wID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5wYXJlbnNJbk9wID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gbmV3KHRyZWUuT3BlcmF0aW9uKShvcCwgW29wZXJhdGlvbiB8fCBtLCBhXSwgaXNTcGFjZWQpOwogICAgICAgICAgICAgICAgICAgICAgICBpc1NwYWNlZCA9IHBhcnNlcklucHV0LmlzV2hpdGVzcGFjZSgtMSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb24gfHwgbTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYWRkaXRpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBtLCBhLCBvcCwgb3BlcmF0aW9uLCBpc1NwYWNlZDsKICAgICAgICAgICAgICAgIG0gPSB0aGlzLm11bHRpcGxpY2F0aW9uKCk7CiAgICAgICAgICAgICAgICBpZiAobSkgewogICAgICAgICAgICAgICAgICAgIGlzU3BhY2VkID0gcGFyc2VySW5wdXQuaXNXaGl0ZXNwYWNlKC0xKTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBvcCA9IHBhcnNlcklucHV0LiRyZSgvXlstK11ccysvKSB8fCAoIWlzU3BhY2VkICYmIChwYXJzZXJJbnB1dC4kY2hhcignKycpIHx8IHBhcnNlcklucHV0LiRjaGFyKCctJykpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMubXVsdGlwbGljYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbS5wYXJlbnNJbk9wID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYS5wYXJlbnNJbk9wID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gbmV3KHRyZWUuT3BlcmF0aW9uKShvcCwgW29wZXJhdGlvbiB8fCBtLCBhXSwgaXNTcGFjZWQpOwogICAgICAgICAgICAgICAgICAgICAgICBpc1NwYWNlZCA9IHBhcnNlcklucHV0LmlzV2hpdGVzcGFjZSgtMSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb24gfHwgbTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29uZGl0aW9uczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIGEsIGIsIGluZGV4ID0gcGFyc2VySW5wdXQuaSwgY29uZGl0aW9uOwoKICAgICAgICAgICAgICAgIGEgPSB0aGlzLmNvbmRpdGlvbigpOwogICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LnBlZWsoL14sXHMqKG5vdFxzKik/XCgvKSB8fCAhcGFyc2VySW5wdXQuJGNoYXIoJywnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuY29uZGl0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gbmV3KHRyZWUuQ29uZGl0aW9uKSgnb3InLCBjb25kaXRpb24gfHwgYSwgYiwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uIHx8IGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNvbmRpdGlvbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIGVudGl0aWVzID0gdGhpcy5lbnRpdGllcywgaW5kZXggPSBwYXJzZXJJbnB1dC5pLCBuZWdhdGUgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBhLCBiLCBjLCBvcDsKCiAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJHN0cigibm90IikpIHsgbmVnYXRlID0gdHJ1ZTsgfQogICAgICAgICAgICAgICAgZXhwZWN0Q2hhcignKCcpOwogICAgICAgICAgICAgICAgYSA9IHRoaXMuYWRkaXRpb24oKSB8fCBlbnRpdGllcy5rZXl3b3JkKCkgfHwgZW50aXRpZXMucXVvdGVkKCk7CiAgICAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignPicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignPScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICI+PSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICc+JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignPCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignPScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICI8PSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICc8JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignPScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignPicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICI9PiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyc2VySW5wdXQuJGNoYXIoJzwnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSAnPTwnOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSAnPSc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLmFkZGl0aW9uKCkgfHwgZW50aXRpZXMua2V5d29yZCgpIHx8IGVudGl0aWVzLnF1b3RlZCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyh0cmVlLkNvbmRpdGlvbikob3AsIGEsIGIsIGluZGV4LCBuZWdhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoJ2V4cGVjdGVkIGV4cHJlc3Npb24nKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcodHJlZS5Db25kaXRpb24pKCc9JywgYSwgbmV3KHRyZWUuS2V5d29yZCkoJ3RydWUnKSwgaW5kZXgsIG5lZ2F0ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGV4cGVjdENoYXIoJyknKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VySW5wdXQuJHN0cigiYW5kIikgPyBuZXcodHJlZS5Db25kaXRpb24pKCdhbmQnLCBjLCB0aGlzLmNvbmRpdGlvbigpKSA6IGM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBBbiBvcGVyYW5kIGlzIGFueXRoaW5nIHRoYXQgY2FuIGJlIHBhcnQgb2YgYW4gb3BlcmF0aW9uLAogICAgICAgICAgICAvLyBzdWNoIGFzIGEgQ29sb3IsIG9yIGEgVmFyaWFibGUKICAgICAgICAgICAgLy8KICAgICAgICAgICAgb3BlcmFuZDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIGVudGl0aWVzID0gdGhpcy5lbnRpdGllcywgbmVnYXRlOwoKICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5wZWVrKC9eLVtAXChdLykpIHsKICAgICAgICAgICAgICAgICAgICBuZWdhdGUgPSBwYXJzZXJJbnB1dC4kY2hhcignLScpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBvID0gdGhpcy5zdWIoKSB8fCBlbnRpdGllcy5kaW1lbnNpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICBlbnRpdGllcy5jb2xvcigpIHx8IGVudGl0aWVzLnZhcmlhYmxlKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgZW50aXRpZXMuY2FsbCgpOwoKICAgICAgICAgICAgICAgIGlmIChuZWdhdGUpIHsKICAgICAgICAgICAgICAgICAgICBvLnBhcmVuc0luT3AgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIG8gPSBuZXcodHJlZS5OZWdhdGl2ZSkobyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIG87CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBFeHByZXNzaW9ucyBlaXRoZXIgcmVwcmVzZW50IG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zLAogICAgICAgICAgICAvLyBvciB3aGl0ZS1zcGFjZSBkZWxpbWl0ZWQgRW50aXRpZXMuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vICAgICAxcHggc29saWQgYmxhY2sKICAgICAgICAgICAgLy8gICAgIEB2YXIgKiAyCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIGV4cHJlc3Npb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBlbnRpdGllcyA9IFtdLCBlLCBkZWxpbTsKCiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuY29tbWVudCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0aWVzLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5hZGRpdGlvbigpIHx8IHRoaXMuZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZW50aXRpZXMucHVzaChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlcmF0aW9ucyBkbyBub3QgYWxsb3cga2V5d29yZCAiLyIgZGltZW5zaW9uIChlLmcuIHNtYWxsLzIwcHgpIHNvIHdlIHN1cHBvcnQgdGhhdCBoZXJlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQucGVlaygvXlwvW1wvKl0vKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSBwYXJzZXJJbnB1dC4kY2hhcignLycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGltKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXRpZXMucHVzaChuZXcodHJlZS5Bbm9ueW1vdXMpKGRlbGltKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IHdoaWxlIChlKTsKICAgICAgICAgICAgICAgIGlmIChlbnRpdGllcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyh0cmVlLkV4cHJlc3Npb24pKGVudGl0aWVzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJvcGVydHk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcGFyc2VySW5wdXQuJHJlKC9eKFwqPy0/W19hLXpBLVowLTktXSspXHMqOi8pOwogICAgICAgICAgICAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZVsxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcnVsZVByb3BlcnR5OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IFtdLCBpbmRleCA9IFtdLCBzLCBrOwoKICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKCiAgICAgICAgICAgICAgICB2YXIgc2ltcGxlUHJvcGVydHkgPSBwYXJzZXJJbnB1dC4kcmUoL14oW19hLXpBLVowLTktXSspXHMqOi8pOwogICAgICAgICAgICAgICAgaWYgKHNpbXBsZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IFtuZXcodHJlZS5LZXl3b3JkKShzaW1wbGVQcm9wZXJ0eVsxXSldOwogICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG1hdGNoKHJlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBwYXJzZXJJbnB1dC5pLAogICAgICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHBhcnNlcklucHV0LiRyZShyZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNodW5rKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LnB1c2goaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLnB1c2goY2h1bmtbMV0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBtYXRjaCgvXihcKj8pLyk7CiAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2goL14oKD86W1x3LV0rKXwoPzpAXHtbXHctXStcfSkpLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgobmFtZS5sZW5ndGggPiAxKSAmJiBtYXRjaCgvXigoPzpcK198XCspPylccyo6LykpIHsKICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gYXQgbGFzdCwgd2UgaGF2ZSB0aGUgY29tcGxldGUgbWF0Y2ggbm93LiBtb3ZlIGZvcndhcmQsCiAgICAgICAgICAgICAgICAgICAgLy8gY29udmVydCBuYW1lIHBhcnRpY2xlcyB0byB0cmVlIG9iamVjdHMgYW5kIHJldHVybjoKICAgICAgICAgICAgICAgICAgICBpZiAobmFtZVswXSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpbmRleC5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbmFtZS5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgICAgICAgICBzID0gbmFtZVtrXTsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVtrXSA9IChzLmNoYXJBdCgwKSAhPT0gJ0AnKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcodHJlZS5LZXl3b3JkKShzKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcodHJlZS5WYXJpYWJsZSkoJ0AnICsgcy5zbGljZSgyLCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhba10sIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Owp9OwpQYXJzZXIuc2VyaWFsaXplVmFycyA9IGZ1bmN0aW9uKHZhcnMpIHsKICAgIHZhciBzID0gJyc7CgogICAgZm9yICh2YXIgbmFtZSBpbiB2YXJzKSB7CiAgICAgICAgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhcnMsIG5hbWUpKSB7CiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHZhcnNbbmFtZV07CiAgICAgICAgICAgIHMgKz0gKChuYW1lWzBdID09PSAnQCcpID8gJycgOiAnQCcpICsgbmFtZSArICc6ICcgKyB2YWx1ZSArCiAgICAgICAgICAgICAgICAoKFN0cmluZyh2YWx1ZSkuc2xpY2UoLTEpID09PSAnOycpID8gJycgOiAnOycpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gczsKfTsKCm1vZHVsZS5leHBvcnRzID0gUGFyc2VyOwoKfSx7Ii4uL2xlc3MtZXJyb3IiOjMxLCIuLi90cmVlIjo2MSwiLi4vdXRpbHMiOjgyLCIuLi92aXNpdG9ycyI6ODYsIi4vcGFyc2VyLWlucHV0IjozNn1dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLyoqCiAqIFBsdWdpbiBNYW5hZ2VyCiAqLwp2YXIgUGx1Z2luTWFuYWdlciA9IGZ1bmN0aW9uKGxlc3MpIHsKICAgIHRoaXMubGVzcyA9IGxlc3M7CiAgICB0aGlzLnZpc2l0b3JzID0gW107CiAgICB0aGlzLnByZVByb2Nlc3NvcnMgPSBbXTsKICAgIHRoaXMucG9zdFByb2Nlc3NvcnMgPSBbXTsKICAgIHRoaXMuaW5zdGFsbGVkUGx1Z2lucyA9IFtdOwogICAgdGhpcy5maWxlTWFuYWdlcnMgPSBbXTsKfTsKLyoqCiAqIEFkZHMgYWxsIHRoZSBwbHVnaW5zIGluIHRoZSBhcnJheQogKiBAcGFyYW0ge0FycmF5fSBwbHVnaW5zCiAqLwpQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS5hZGRQbHVnaW5zID0gZnVuY3Rpb24ocGx1Z2lucykgewogICAgaWYgKHBsdWdpbnMpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGhpcy5hZGRQbHVnaW4ocGx1Z2luc1tpXSk7CiAgICAgICAgfQogICAgfQp9OwovKioKICoKICogQHBhcmFtIHBsdWdpbgogKi8KUGx1Z2luTWFuYWdlci5wcm90b3R5cGUuYWRkUGx1Z2luID0gZnVuY3Rpb24ocGx1Z2luKSB7CiAgICB0aGlzLmluc3RhbGxlZFBsdWdpbnMucHVzaChwbHVnaW4pOwogICAgcGx1Z2luLmluc3RhbGwodGhpcy5sZXNzLCB0aGlzKTsKfTsKLyoqCiAqIEFkZHMgYSB2aXNpdG9yLiBUaGUgdmlzaXRvciBvYmplY3QgaGFzIG9wdGlvbnMgb24gaXRzZWxmIHRvIGRldGVybWluZQogKiB3aGVuIGl0IHNob3VsZCBydW4uCiAqIEBwYXJhbSB2aXNpdG9yCiAqLwpQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS5hZGRWaXNpdG9yID0gZnVuY3Rpb24odmlzaXRvcikgewogICAgdGhpcy52aXNpdG9ycy5wdXNoKHZpc2l0b3IpOwp9OwovKioKICogQWRkcyBhIHByZSBwcm9jZXNzb3Igb2JqZWN0CiAqIEBwYXJhbSB7b2JqZWN0fSBwcmVQcm9jZXNzb3IKICogQHBhcmFtIHtudW1iZXJ9IHByaW9yaXR5IC0gZ3VpZGVsaW5lcyAxID0gYmVmb3JlIGltcG9ydCwgMTAwMCA9IGltcG9ydCwgMjAwMCA9IGFmdGVyIGltcG9ydAogKi8KUGx1Z2luTWFuYWdlci5wcm90b3R5cGUuYWRkUHJlUHJvY2Vzc29yID0gZnVuY3Rpb24ocHJlUHJvY2Vzc29yLCBwcmlvcml0eSkgewogICAgdmFyIGluZGV4VG9JbnNlcnRBdDsKICAgIGZvciAoaW5kZXhUb0luc2VydEF0ID0gMDsgaW5kZXhUb0luc2VydEF0IDwgdGhpcy5wcmVQcm9jZXNzb3JzLmxlbmd0aDsgaW5kZXhUb0luc2VydEF0KyspIHsKICAgICAgICBpZiAodGhpcy5wcmVQcm9jZXNzb3JzW2luZGV4VG9JbnNlcnRBdF0ucHJpb3JpdHkgPj0gcHJpb3JpdHkpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgdGhpcy5wcmVQcm9jZXNzb3JzLnNwbGljZShpbmRleFRvSW5zZXJ0QXQsIDAsIHtwcmVQcm9jZXNzb3I6IHByZVByb2Nlc3NvciwgcHJpb3JpdHk6IHByaW9yaXR5fSk7Cn07Ci8qKgogKiBBZGRzIGEgcG9zdCBwcm9jZXNzb3Igb2JqZWN0CiAqIEBwYXJhbSB7b2JqZWN0fSBwb3N0UHJvY2Vzc29yCiAqIEBwYXJhbSB7bnVtYmVyfSBwcmlvcml0eSAtIGd1aWRlbGluZXMgMSA9IGJlZm9yZSBjb21wcmVzc2lvbiwgMTAwMCA9IGNvbXByZXNzaW9uLCAyMDAwID0gYWZ0ZXIgY29tcHJlc3Npb24KICovClBsdWdpbk1hbmFnZXIucHJvdG90eXBlLmFkZFBvc3RQcm9jZXNzb3IgPSBmdW5jdGlvbihwb3N0UHJvY2Vzc29yLCBwcmlvcml0eSkgewogICAgdmFyIGluZGV4VG9JbnNlcnRBdDsKICAgIGZvciAoaW5kZXhUb0luc2VydEF0ID0gMDsgaW5kZXhUb0luc2VydEF0IDwgdGhpcy5wb3N0UHJvY2Vzc29ycy5sZW5ndGg7IGluZGV4VG9JbnNlcnRBdCsrKSB7CiAgICAgICAgaWYgKHRoaXMucG9zdFByb2Nlc3NvcnNbaW5kZXhUb0luc2VydEF0XS5wcmlvcml0eSA+PSBwcmlvcml0eSkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICB0aGlzLnBvc3RQcm9jZXNzb3JzLnNwbGljZShpbmRleFRvSW5zZXJ0QXQsIDAsIHtwb3N0UHJvY2Vzc29yOiBwb3N0UHJvY2Vzc29yLCBwcmlvcml0eTogcHJpb3JpdHl9KTsKfTsKLyoqCiAqCiAqIEBwYXJhbSBtYW5hZ2VyCiAqLwpQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS5hZGRGaWxlTWFuYWdlciA9IGZ1bmN0aW9uKG1hbmFnZXIpIHsKICAgIHRoaXMuZmlsZU1hbmFnZXJzLnB1c2gobWFuYWdlcik7Cn07Ci8qKgogKgogKiBAcmV0dXJucyB7QXJyYXl9CiAqIEBwcml2YXRlCiAqLwpQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS5nZXRQcmVQcm9jZXNzb3JzID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgcHJlUHJvY2Vzc29ycyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnByZVByb2Nlc3NvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICBwcmVQcm9jZXNzb3JzLnB1c2godGhpcy5wcmVQcm9jZXNzb3JzW2ldLnByZVByb2Nlc3Nvcik7CiAgICB9CiAgICByZXR1cm4gcHJlUHJvY2Vzc29yczsKfTsKLyoqCiAqCiAqIEByZXR1cm5zIHtBcnJheX0KICogQHByaXZhdGUKICovClBsdWdpbk1hbmFnZXIucHJvdG90eXBlLmdldFBvc3RQcm9jZXNzb3JzID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgcG9zdFByb2Nlc3NvcnMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wb3N0UHJvY2Vzc29ycy5sZW5ndGg7IGkrKykgewogICAgICAgIHBvc3RQcm9jZXNzb3JzLnB1c2godGhpcy5wb3N0UHJvY2Vzc29yc1tpXS5wb3N0UHJvY2Vzc29yKTsKICAgIH0KICAgIHJldHVybiBwb3N0UHJvY2Vzc29yczsKfTsKLyoqCiAqCiAqIEByZXR1cm5zIHtBcnJheX0KICogQHByaXZhdGUKICovClBsdWdpbk1hbmFnZXIucHJvdG90eXBlLmdldFZpc2l0b3JzID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy52aXNpdG9yczsKfTsKLyoqCiAqCiAqIEByZXR1cm5zIHtBcnJheX0KICogQHByaXZhdGUKICovClBsdWdpbk1hbmFnZXIucHJvdG90eXBlLmdldEZpbGVNYW5hZ2VycyA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZmlsZU1hbmFnZXJzOwp9Owptb2R1bGUuZXhwb3J0cyA9IFBsdWdpbk1hbmFnZXI7Cgp9LHt9XSwzOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBMZXNzRXJyb3IgPSByZXF1aXJlKCcuLi9sZXNzLWVycm9yJyksCiAgICB0cmVlID0gcmVxdWlyZSgiLi4vdHJlZSIpOwoKdmFyIEZ1bmN0aW9uSW1wb3J0ZXIgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIEZ1bmN0aW9uSW1wb3J0ZXIoY29udGV4dCwgZmlsZUluZm8pIHsKICAgIHRoaXMuZmlsZUluZm8gPSBmaWxlSW5mbzsKfTsKCkZ1bmN0aW9uSW1wb3J0ZXIucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbihjb250ZW50cywgY2FsbGJhY2spIHsKICAgIHZhciBsb2FkZWQgPSB7fSwKICAgICAgICBsb2FkZXIsCiAgICAgICAgcmVnaXN0cnk7CgogICAgcmVnaXN0cnkgPSB7CiAgICAgICAgYWRkOiBmdW5jdGlvbihuYW1lLCBmdW5jKSB7CiAgICAgICAgICAgIGxvYWRlZFtuYW1lXSA9IGZ1bmM7CiAgICAgICAgfSwKICAgICAgICBhZGRNdWx0aXBsZTogZnVuY3Rpb24oZnVuY3Rpb25zKSB7CiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZ1bmN0aW9ucykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7CiAgICAgICAgICAgICAgICBsb2FkZWRbbmFtZV0gPSBmdW5jdGlvbnNbbmFtZV07CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH07CgogICAgdHJ5IHsKICAgICAgICBsb2FkZXIgPSBuZXcgRnVuY3Rpb24oImZ1bmN0aW9ucyIsICJ0cmVlIiwgImZpbGVJbmZvIiwgY29udGVudHMpOwogICAgICAgIGxvYWRlcihyZWdpc3RyeSwgdHJlZSwgdGhpcy5maWxlSW5mbyk7CiAgICB9IGNhdGNoKGUpIHsKICAgICAgICBjYWxsYmFjayhuZXcgTGVzc0Vycm9yKHsKICAgICAgICAgICAgbWVzc2FnZTogIlBsdWdpbiBldmFsdWF0aW9uIGVycm9yOiAnIiArIGUubmFtZSArICc6ICcgKyBlLm1lc3NhZ2UucmVwbGFjZSgvWyJdL2csICInIikgKyAiJyIgLAogICAgICAgICAgICBmaWxlbmFtZTogdGhpcy5maWxlSW5mby5maWxlbmFtZQogICAgICAgIH0pLCBudWxsICk7CiAgICB9CgogICAgY2FsbGJhY2sobnVsbCwgeyBmdW5jdGlvbnM6IGxvYWRlZCB9KTsKfTsKCn0seyIuLi9sZXNzLWVycm9yIjozMSwiLi4vdHJlZSI6NjF9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBQcm9taXNlQ29uc3RydWN0b3I7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGVudmlyb25tZW50LCBQYXJzZVRyZWUsIEltcG9ydE1hbmFnZXIpIHsKICAgIHZhciByZW5kZXIgPSBmdW5jdGlvbiAoaW5wdXQsIG9wdGlvbnMsIGNhbGxiYWNrKSB7CiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIGNhbGxiYWNrID0gb3B0aW9uczsKICAgICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCFjYWxsYmFjaykgewogICAgICAgICAgICBpZiAoIVByb21pc2VDb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgICAgUHJvbWlzZUNvbnN0cnVjdG9yID0gdHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnID8gcmVxdWlyZSgncHJvbWlzZScpIDogUHJvbWlzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICAgIHJlbmRlci5jYWxsKHNlbGYsIGlucHV0LCBvcHRpb25zLCBmdW5jdGlvbihlcnIsIG91dHB1dCkgewogICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvdXRwdXQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLnBhcnNlKGlucHV0LCBvcHRpb25zLCBmdW5jdGlvbihlcnIsIHJvb3QsIGltcG9ydHMsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmIChlcnIpIHsgcmV0dXJuIGNhbGxiYWNrKGVycik7IH0KCiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB2YXIgcGFyc2VUcmVlID0gbmV3IFBhcnNlVHJlZShyb290LCBpbXBvcnRzKTsKICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZVRyZWUudG9DU1Mob3B0aW9ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7IHJldHVybiBjYWxsYmFjayhlcnIpOyB9CgogICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKCiAgICByZXR1cm4gcmVuZGVyOwp9OwoKfSx7InByb21pc2UiOnVuZGVmaW5lZH1dLDQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoU291cmNlTWFwT3V0cHV0LCBlbnZpcm9ubWVudCkgewoKICAgIHZhciBTb3VyY2VNYXBCdWlsZGVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgfTsKCiAgICBTb3VyY2VNYXBCdWlsZGVyLnByb3RvdHlwZS50b0NTUyA9IGZ1bmN0aW9uKHJvb3ROb2RlLCBvcHRpb25zLCBpbXBvcnRzKSB7CiAgICAgICAgdmFyIHNvdXJjZU1hcE91dHB1dCA9IG5ldyBTb3VyY2VNYXBPdXRwdXQoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvbnRlbnRzSWdub3JlZENoYXJzTWFwOiBpbXBvcnRzLmNvbnRlbnRzSWdub3JlZENoYXJzLAogICAgICAgICAgICAgICAgcm9vdE5vZGU6IHJvb3ROb2RlLAogICAgICAgICAgICAgICAgY29udGVudHNNYXA6IGltcG9ydHMuY29udGVudHMsCiAgICAgICAgICAgICAgICBzb3VyY2VNYXBGaWxlbmFtZTogdGhpcy5vcHRpb25zLnNvdXJjZU1hcEZpbGVuYW1lLAogICAgICAgICAgICAgICAgc291cmNlTWFwVVJMOiB0aGlzLm9wdGlvbnMuc291cmNlTWFwVVJMLAogICAgICAgICAgICAgICAgb3V0cHV0RmlsZW5hbWU6IHRoaXMub3B0aW9ucy5zb3VyY2VNYXBPdXRwdXRGaWxlbmFtZSwKICAgICAgICAgICAgICAgIHNvdXJjZU1hcEJhc2VwYXRoOiB0aGlzLm9wdGlvbnMuc291cmNlTWFwQmFzZXBhdGgsCiAgICAgICAgICAgICAgICBzb3VyY2VNYXBSb290cGF0aDogdGhpcy5vcHRpb25zLnNvdXJjZU1hcFJvb3RwYXRoLAogICAgICAgICAgICAgICAgb3V0cHV0U291cmNlRmlsZXM6IHRoaXMub3B0aW9ucy5vdXRwdXRTb3VyY2VGaWxlcywKICAgICAgICAgICAgICAgIHNvdXJjZU1hcEdlbmVyYXRvcjogdGhpcy5vcHRpb25zLnNvdXJjZU1hcEdlbmVyYXRvciwKICAgICAgICAgICAgICAgIHNvdXJjZU1hcEZpbGVJbmxpbmU6IHRoaXMub3B0aW9ucy5zb3VyY2VNYXBGaWxlSW5saW5lCiAgICAgICAgICAgIH0pOwoKICAgICAgICB2YXIgY3NzID0gc291cmNlTWFwT3V0cHV0LnRvQ1NTKG9wdGlvbnMpOwogICAgICAgIHRoaXMuc291cmNlTWFwID0gc291cmNlTWFwT3V0cHV0LnNvdXJjZU1hcDsKICAgICAgICB0aGlzLnNvdXJjZU1hcFVSTCA9IHNvdXJjZU1hcE91dHB1dC5zb3VyY2VNYXBVUkw7CiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VNYXBJbnB1dEZpbGVuYW1lKSB7CiAgICAgICAgICAgIHRoaXMuc291cmNlTWFwSW5wdXRGaWxlbmFtZSA9IHNvdXJjZU1hcE91dHB1dC5ub3JtYWxpemVGaWxlbmFtZSh0aGlzLm9wdGlvbnMuc291cmNlTWFwSW5wdXRGaWxlbmFtZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjc3MgKyB0aGlzLmdldENTU0FwcGVuZGFnZSgpOwogICAgfTsKCiAgICBTb3VyY2VNYXBCdWlsZGVyLnByb3RvdHlwZS5nZXRDU1NBcHBlbmRhZ2UgPSBmdW5jdGlvbigpIHsKCiAgICAgICAgdmFyIHNvdXJjZU1hcFVSTCA9IHRoaXMuc291cmNlTWFwVVJMOwogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlTWFwRmlsZUlubGluZSkgewogICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VNYXAgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgcmV0dXJuICIiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNvdXJjZU1hcFVSTCA9ICJkYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCIgKyBlbnZpcm9ubWVudC5lbmNvZGVCYXNlNjQodGhpcy5zb3VyY2VNYXApOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNvdXJjZU1hcFVSTCkgewogICAgICAgICAgICByZXR1cm4gIi8qIyBzb3VyY2VNYXBwaW5nVVJMPSIgKyBzb3VyY2VNYXBVUkwgKyAiICovIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICIiOwogICAgfTsKCiAgICBTb3VyY2VNYXBCdWlsZGVyLnByb3RvdHlwZS5nZXRFeHRlcm5hbFNvdXJjZU1hcCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnNvdXJjZU1hcDsKICAgIH07CiAgICBTb3VyY2VNYXBCdWlsZGVyLnByb3RvdHlwZS5zZXRFeHRlcm5hbFNvdXJjZU1hcCA9IGZ1bmN0aW9uKHNvdXJjZU1hcCkgewogICAgICAgIHRoaXMuc291cmNlTWFwID0gc291cmNlTWFwOwogICAgfTsKCiAgICBTb3VyY2VNYXBCdWlsZGVyLnByb3RvdHlwZS5pc0lubGluZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc291cmNlTWFwRmlsZUlubGluZTsKICAgIH07CiAgICBTb3VyY2VNYXBCdWlsZGVyLnByb3RvdHlwZS5nZXRTb3VyY2VNYXBVUkwgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VNYXBVUkw7CiAgICB9OwogICAgU291cmNlTWFwQnVpbGRlci5wcm90b3R5cGUuZ2V0T3V0cHV0RmlsZW5hbWUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNvdXJjZU1hcE91dHB1dEZpbGVuYW1lOwogICAgfTsKICAgIFNvdXJjZU1hcEJ1aWxkZXIucHJvdG90eXBlLmdldElucHV0RmlsZW5hbWUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VNYXBJbnB1dEZpbGVuYW1lOwogICAgfTsKCiAgICByZXR1cm4gU291cmNlTWFwQnVpbGRlcjsKfTsKCn0se31dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZW52aXJvbm1lbnQpIHsKCiAgICB2YXIgU291cmNlTWFwT3V0cHV0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICB0aGlzLl9jc3MgPSBbXTsKICAgICAgICB0aGlzLl9yb290Tm9kZSA9IG9wdGlvbnMucm9vdE5vZGU7CiAgICAgICAgdGhpcy5fY29udGVudHNNYXAgPSBvcHRpb25zLmNvbnRlbnRzTWFwOwogICAgICAgIHRoaXMuX2NvbnRlbnRzSWdub3JlZENoYXJzTWFwID0gb3B0aW9ucy5jb250ZW50c0lnbm9yZWRDaGFyc01hcDsKICAgICAgICBpZiAob3B0aW9ucy5zb3VyY2VNYXBGaWxlbmFtZSkgewogICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBGaWxlbmFtZSA9IG9wdGlvbnMuc291cmNlTWFwRmlsZW5hbWUucmVwbGFjZSgvXFwvZywgJy8nKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5fb3V0cHV0RmlsZW5hbWUgPSBvcHRpb25zLm91dHB1dEZpbGVuYW1lOwogICAgICAgIHRoaXMuc291cmNlTWFwVVJMID0gb3B0aW9ucy5zb3VyY2VNYXBVUkw7CiAgICAgICAgaWYgKG9wdGlvbnMuc291cmNlTWFwQmFzZXBhdGgpIHsKICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwQmFzZXBhdGggPSBvcHRpb25zLnNvdXJjZU1hcEJhc2VwYXRoLnJlcGxhY2UoL1xcL2csICcvJyk7CiAgICAgICAgfQogICAgICAgIGlmIChvcHRpb25zLnNvdXJjZU1hcFJvb3RwYXRoKSB7CiAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcFJvb3RwYXRoID0gb3B0aW9ucy5zb3VyY2VNYXBSb290cGF0aC5yZXBsYWNlKC9cXC9nLCAnLycpOwogICAgICAgICAgICBpZiAodGhpcy5fc291cmNlTWFwUm9vdHBhdGguY2hhckF0KHRoaXMuX3NvdXJjZU1hcFJvb3RwYXRoLmxlbmd0aCAtIDEpICE9PSAnLycpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcFJvb3RwYXRoICs9ICcvJzsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcFJvb3RwYXRoID0gIiI7CiAgICAgICAgfQogICAgICAgIHRoaXMuX291dHB1dFNvdXJjZUZpbGVzID0gb3B0aW9ucy5vdXRwdXRTb3VyY2VGaWxlczsKICAgICAgICB0aGlzLl9zb3VyY2VNYXBHZW5lcmF0b3JDb25zdHJ1Y3RvciA9IGVudmlyb25tZW50LmdldFNvdXJjZU1hcEdlbmVyYXRvcigpOwoKICAgICAgICB0aGlzLl9saW5lTnVtYmVyID0gMDsKICAgICAgICB0aGlzLl9jb2x1bW4gPSAwOwogICAgfTsKCiAgICBTb3VyY2VNYXBPdXRwdXQucHJvdG90eXBlLm5vcm1hbGl6ZUZpbGVuYW1lID0gZnVuY3Rpb24oZmlsZW5hbWUpIHsKICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoL1xcL2csICcvJyk7CgogICAgICAgIGlmICh0aGlzLl9zb3VyY2VNYXBCYXNlcGF0aCAmJiBmaWxlbmFtZS5pbmRleE9mKHRoaXMuX3NvdXJjZU1hcEJhc2VwYXRoKSA9PT0gMCkgewogICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZyh0aGlzLl9zb3VyY2VNYXBCYXNlcGF0aC5sZW5ndGgpOwogICAgICAgICAgICBpZiAoZmlsZW5hbWUuY2hhckF0KDApID09PSAnXFwnIHx8IGZpbGVuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSB7CiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZygxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gKHRoaXMuX3NvdXJjZU1hcFJvb3RwYXRoIHx8ICIiKSArIGZpbGVuYW1lOwogICAgfTsKCiAgICBTb3VyY2VNYXBPdXRwdXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGNodW5rLCBmaWxlSW5mbywgaW5kZXgsIG1hcExpbmVzKSB7CgogICAgICAgIC8vaWdub3JlIGFkZGluZyBlbXB0eSBzdHJpbmdzCiAgICAgICAgaWYgKCFjaHVuaykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgbGluZXMsCiAgICAgICAgICAgIHNvdXJjZUxpbmVzLAogICAgICAgICAgICBjb2x1bW5zLAogICAgICAgICAgICBzb3VyY2VDb2x1bW5zLAogICAgICAgICAgICBpOwoKICAgICAgICBpZiAoZmlsZUluZm8pIHsKICAgICAgICAgICAgdmFyIGlucHV0U291cmNlID0gdGhpcy5fY29udGVudHNNYXBbZmlsZUluZm8uZmlsZW5hbWVdOwoKICAgICAgICAgICAgLy8gcmVtb3ZlIHZhcnMvYmFubmVyIGFkZGVkIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUKICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzSWdub3JlZENoYXJzTWFwW2ZpbGVJbmZvLmZpbGVuYW1lXSkgewogICAgICAgICAgICAgICAgLy8gYWRqdXN0IHRoZSBpbmRleAogICAgICAgICAgICAgICAgaW5kZXggLT0gdGhpcy5fY29udGVudHNJZ25vcmVkQ2hhcnNNYXBbZmlsZUluZm8uZmlsZW5hbWVdOwogICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgeyBpbmRleCA9IDA7IH0KICAgICAgICAgICAgICAgIC8vIGFkanVzdCB0aGUgc291cmNlCiAgICAgICAgICAgICAgICBpbnB1dFNvdXJjZSA9IGlucHV0U291cmNlLnNsaWNlKHRoaXMuX2NvbnRlbnRzSWdub3JlZENoYXJzTWFwW2ZpbGVJbmZvLmZpbGVuYW1lXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5wdXRTb3VyY2UgPSBpbnB1dFNvdXJjZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwogICAgICAgICAgICBzb3VyY2VMaW5lcyA9IGlucHV0U291cmNlLnNwbGl0KCJcbiIpOwogICAgICAgICAgICBzb3VyY2VDb2x1bW5zID0gc291cmNlTGluZXNbc291cmNlTGluZXMubGVuZ3RoIC0gMV07CiAgICAgICAgfQoKICAgICAgICBsaW5lcyA9IGNodW5rLnNwbGl0KCJcbiIpOwogICAgICAgIGNvbHVtbnMgPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXTsKCiAgICAgICAgaWYgKGZpbGVJbmZvKSB7CiAgICAgICAgICAgIGlmICghbWFwTGluZXMpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEdlbmVyYXRvci5hZGRNYXBwaW5nKHsgZ2VuZXJhdGVkOiB7IGxpbmU6IHRoaXMuX2xpbmVOdW1iZXIgKyAxLCBjb2x1bW46IHRoaXMuX2NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWw6IHsgbGluZTogc291cmNlTGluZXMubGVuZ3RoLCBjb2x1bW46IHNvdXJjZUNvbHVtbnMubGVuZ3RofSwKICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMubm9ybWFsaXplRmlsZW5hbWUoZmlsZUluZm8uZmlsZW5hbWUpfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBHZW5lcmF0b3IuYWRkTWFwcGluZyh7IGdlbmVyYXRlZDogeyBsaW5lOiB0aGlzLl9saW5lTnVtYmVyICsgaSArIDEsIGNvbHVtbjogaSA9PT0gMCA/IHRoaXMuX2NvbHVtbiA6IDB9LAogICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogeyBsaW5lOiBzb3VyY2VMaW5lcy5sZW5ndGggKyBpLCBjb2x1bW46IGkgPT09IDAgPyBzb3VyY2VDb2x1bW5zLmxlbmd0aCA6IDB9LAogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMubm9ybWFsaXplRmlsZW5hbWUoZmlsZUluZm8uZmlsZW5hbWUpfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgdGhpcy5fY29sdW1uICs9IGNvbHVtbnMubGVuZ3RoOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX2xpbmVOdW1iZXIgKz0gbGluZXMubGVuZ3RoIC0gMTsKICAgICAgICAgICAgdGhpcy5fY29sdW1uID0gY29sdW1ucy5sZW5ndGg7CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9jc3MucHVzaChjaHVuayk7CiAgICB9OwoKICAgIFNvdXJjZU1hcE91dHB1dC5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLl9jc3MubGVuZ3RoID09PSAwOwogICAgfTsKCiAgICBTb3VyY2VNYXBPdXRwdXQucHJvdG90eXBlLnRvQ1NTID0gZnVuY3Rpb24oY29udGV4dCkgewogICAgICAgIHRoaXMuX3NvdXJjZU1hcEdlbmVyYXRvciA9IG5ldyB0aGlzLl9zb3VyY2VNYXBHZW5lcmF0b3JDb25zdHJ1Y3Rvcih7IGZpbGU6IHRoaXMuX291dHB1dEZpbGVuYW1lLCBzb3VyY2VSb290OiBudWxsIH0pOwoKICAgICAgICBpZiAodGhpcy5fb3V0cHV0U291cmNlRmlsZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgZmlsZW5hbWUgaW4gdGhpcy5fY29udGVudHNNYXApIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c01hcC5oYXNPd25Qcm9wZXJ0eShmaWxlbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlID0gdGhpcy5fY29udGVudHNNYXBbZmlsZW5hbWVdOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c0lnbm9yZWRDaGFyc01hcFtmaWxlbmFtZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlID0gc291cmNlLnNsaWNlKHRoaXMuX2NvbnRlbnRzSWdub3JlZENoYXJzTWFwW2ZpbGVuYW1lXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEdlbmVyYXRvci5zZXRTb3VyY2VDb250ZW50KHRoaXMubm9ybWFsaXplRmlsZW5hbWUoZmlsZW5hbWUpLCBzb3VyY2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9yb290Tm9kZS5nZW5DU1MoY29udGV4dCwgdGhpcyk7CgogICAgICAgIGlmICh0aGlzLl9jc3MubGVuZ3RoID4gMCkgewogICAgICAgICAgICB2YXIgc291cmNlTWFwVVJMLAogICAgICAgICAgICAgICAgc291cmNlTWFwQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3NvdXJjZU1hcEdlbmVyYXRvci50b0pTT04oKSk7CgogICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VNYXBVUkwpIHsKICAgICAgICAgICAgICAgIHNvdXJjZU1hcFVSTCA9IHRoaXMuc291cmNlTWFwVVJMOwogICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZU1hcEZpbGVuYW1lKSB7CiAgICAgICAgICAgICAgICBzb3VyY2VNYXBVUkwgPSB0aGlzLl9zb3VyY2VNYXBGaWxlbmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLnNvdXJjZU1hcFVSTCA9IHNvdXJjZU1hcFVSTDsKCiAgICAgICAgICAgIHRoaXMuc291cmNlTWFwID0gc291cmNlTWFwQ29udGVudDsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLl9jc3Muam9pbignJyk7CiAgICB9OwoKICAgIHJldHVybiBTb3VyY2VNYXBPdXRwdXQ7Cn07Cgp9LHt9XSw0MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBjb250ZXh0cyA9IHJlcXVpcmUoIi4vY29udGV4dHMiKSwKICAgIHZpc2l0b3IgPSByZXF1aXJlKCIuL3Zpc2l0b3JzIiksCiAgICB0cmVlID0gcmVxdWlyZSgiLi90cmVlIik7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHJvb3QsIG9wdGlvbnMpIHsKICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgdmFyIGV2YWxkUm9vdCwKICAgICAgICB2YXJpYWJsZXMgPSBvcHRpb25zLnZhcmlhYmxlcywKICAgICAgICBldmFsRW52ID0gbmV3IGNvbnRleHRzLkV2YWwob3B0aW9ucyk7CgogICAgLy8KICAgIC8vIEFsbG93cyBzZXR0aW5nIHZhcmlhYmxlcyB3aXRoIGEgaGFzaCwgc286CiAgICAvLwogICAgLy8gICBgeyBjb2xvcjogbmV3IHRyZWUuQ29sb3IoJyNmMDEnKSB9YCB3aWxsIGJlY29tZToKICAgIC8vCiAgICAvLyAgIG5ldyB0cmVlLlJ1bGUoJ0Bjb2xvcicsCiAgICAvLyAgICAgbmV3IHRyZWUuVmFsdWUoWwogICAgLy8gICAgICAgbmV3IHRyZWUuRXhwcmVzc2lvbihbCiAgICAvLyAgICAgICAgIG5ldyB0cmVlLkNvbG9yKCcjZjAxJykKICAgIC8vICAgICAgIF0pCiAgICAvLyAgICAgXSkKICAgIC8vICAgKQogICAgLy8KICAgIGlmICh0eXBlb2YgdmFyaWFibGVzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YXJpYWJsZXMpKSB7CiAgICAgICAgdmFyaWFibGVzID0gT2JqZWN0LmtleXModmFyaWFibGVzKS5tYXAoZnVuY3Rpb24gKGspIHsKICAgICAgICAgICAgdmFyIHZhbHVlID0gdmFyaWFibGVzW2tdOwoKICAgICAgICAgICAgaWYgKCEgKHZhbHVlIGluc3RhbmNlb2YgdHJlZS5WYWx1ZSkpIHsKICAgICAgICAgICAgICAgIGlmICghICh2YWx1ZSBpbnN0YW5jZW9mIHRyZWUuRXhwcmVzc2lvbikpIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyB0cmVlLkV4cHJlc3Npb24oW3ZhbHVlXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyB0cmVlLlZhbHVlKFt2YWx1ZV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuZXcgdHJlZS5SdWxlKCdAJyArIGssIHZhbHVlLCBmYWxzZSwgbnVsbCwgMCk7CiAgICAgICAgfSk7CiAgICAgICAgZXZhbEVudi5mcmFtZXMgPSBbbmV3IHRyZWUuUnVsZXNldChudWxsLCB2YXJpYWJsZXMpXTsKICAgIH0KCiAgICB2YXIgcHJlRXZhbFZpc2l0b3JzID0gW10sCiAgICAgICAgdmlzaXRvcnMgPSBbCiAgICAgICAgICAgIG5ldyB2aXNpdG9yLkpvaW5TZWxlY3RvclZpc2l0b3IoKSwKICAgICAgICAgICAgbmV3IHZpc2l0b3IuRXh0ZW5kVmlzaXRvcigpLAogICAgICAgICAgICBuZXcgdmlzaXRvci5Ub0NTU1Zpc2l0b3Ioe2NvbXByZXNzOiBCb29sZWFuKG9wdGlvbnMuY29tcHJlc3MpfSkKICAgICAgICBdLCBpOwoKICAgIGlmIChvcHRpb25zLnBsdWdpbk1hbmFnZXIpIHsKICAgICAgICB2YXIgcGx1Z2luVmlzaXRvcnMgPSBvcHRpb25zLnBsdWdpbk1hbmFnZXIuZ2V0VmlzaXRvcnMoKTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGx1Z2luVmlzaXRvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHBsdWdpblZpc2l0b3IgPSBwbHVnaW5WaXNpdG9yc1tpXTsKICAgICAgICAgICAgaWYgKHBsdWdpblZpc2l0b3IuaXNQcmVFdmFsVmlzaXRvcikgewogICAgICAgICAgICAgICAgcHJlRXZhbFZpc2l0b3JzLnB1c2gocGx1Z2luVmlzaXRvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAocGx1Z2luVmlzaXRvci5pc1ByZVZpc2l0b3IpIHsKICAgICAgICAgICAgICAgICAgICB2aXNpdG9ycy5zcGxpY2UoMCwgMCwgcGx1Z2luVmlzaXRvcik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZpc2l0b3JzLnB1c2gocGx1Z2luVmlzaXRvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yIChpID0gMDsgaSA8IHByZUV2YWxWaXNpdG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgIHByZUV2YWxWaXNpdG9yc1tpXS5ydW4ocm9vdCk7CiAgICB9CgogICAgZXZhbGRSb290ID0gcm9vdC5ldmFsKGV2YWxFbnYpOwoKICAgIGZvciAoaSA9IDA7IGkgPCB2aXNpdG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgIHZpc2l0b3JzW2ldLnJ1bihldmFsZFJvb3QpOwogICAgfQoKICAgIHJldHVybiBldmFsZFJvb3Q7Cn07Cgp9LHsiLi9jb250ZXh0cyI6MTAsIi4vdHJlZSI6NjEsIi4vdmlzaXRvcnMiOjg2fV0sNDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpOwoKdmFyIEFscGhhID0gZnVuY3Rpb24gKHZhbCkgewogICAgdGhpcy52YWx1ZSA9IHZhbDsKfTsKQWxwaGEucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKQWxwaGEucHJvdG90eXBlLnR5cGUgPSAiQWxwaGEiOwoKQWxwaGEucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICB0aGlzLnZhbHVlID0gdmlzaXRvci52aXNpdCh0aGlzLnZhbHVlKTsKfTsKQWxwaGEucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgaWYgKHRoaXMudmFsdWUuZXZhbCkgeyByZXR1cm4gbmV3IEFscGhhKHRoaXMudmFsdWUuZXZhbChjb250ZXh0KSk7IH0KICAgIHJldHVybiB0aGlzOwp9OwpBbHBoYS5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgb3V0cHV0LmFkZCgiYWxwaGEob3BhY2l0eT0iKTsKCiAgICBpZiAodGhpcy52YWx1ZS5nZW5DU1MpIHsKICAgICAgICB0aGlzLnZhbHVlLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgfSBlbHNlIHsKICAgICAgICBvdXRwdXQuYWRkKHRoaXMudmFsdWUpOwogICAgfQoKICAgIG91dHB1dC5hZGQoIikiKTsKfTsKCm1vZHVsZS5leHBvcnRzID0gQWxwaGE7Cgp9LHsiLi9ub2RlIjo2OX1dLDQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKTsKCnZhciBBbm9ueW1vdXMgPSBmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBjdXJyZW50RmlsZUluZm8sIG1hcExpbmVzLCBydWxlc2V0TGlrZSwgcmVmZXJlbmNlZCkgewogICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgdGhpcy5pbmRleCA9IGluZGV4OwogICAgdGhpcy5tYXBMaW5lcyA9IG1hcExpbmVzOwogICAgdGhpcy5jdXJyZW50RmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm87CiAgICB0aGlzLnJ1bGVzZXRMaWtlID0gKHR5cGVvZiBydWxlc2V0TGlrZSA9PT0gJ3VuZGVmaW5lZCcpID8gZmFsc2UgOiBydWxlc2V0TGlrZTsKICAgIHRoaXMuaXNSZWZlcmVuY2VkID0gcmVmZXJlbmNlZCB8fCBmYWxzZTsKfTsKQW5vbnltb3VzLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CkFub255bW91cy5wcm90b3R5cGUudHlwZSA9ICJBbm9ueW1vdXMiOwpBbm9ueW1vdXMucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gbmV3IEFub255bW91cyh0aGlzLnZhbHVlLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5tYXBMaW5lcywgdGhpcy5ydWxlc2V0TGlrZSwgdGhpcy5pc1JlZmVyZW5jZWQpOwp9OwpBbm9ueW1vdXMucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAob3RoZXIpIHsKICAgIHJldHVybiBvdGhlci50b0NTUyAmJiB0aGlzLnRvQ1NTKCkgPT09IG90aGVyLnRvQ1NTKCkgPyAwIDogdW5kZWZpbmVkOwp9OwpBbm9ueW1vdXMucHJvdG90eXBlLmlzUnVsZXNldExpa2UgPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnJ1bGVzZXRMaWtlOwp9OwpBbm9ueW1vdXMucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIG91dHB1dC5hZGQodGhpcy52YWx1ZSwgdGhpcy5jdXJyZW50RmlsZUluZm8sIHRoaXMuaW5kZXgsIHRoaXMubWFwTGluZXMpOwp9OwpBbm9ueW1vdXMucHJvdG90eXBlLm1hcmtSZWZlcmVuY2VkID0gZnVuY3Rpb24gKCkgewogICAgdGhpcy5pc1JlZmVyZW5jZWQgPSB0cnVlOwp9OwpBbm9ueW1vdXMucHJvdG90eXBlLmdldElzUmVmZXJlbmNlZCA9IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiAhdGhpcy5jdXJyZW50RmlsZUluZm8gfHwgIXRoaXMuY3VycmVudEZpbGVJbmZvLnJlZmVyZW5jZSB8fCB0aGlzLmlzUmVmZXJlbmNlZDsKfTsKCm1vZHVsZS5leHBvcnRzID0gQW5vbnltb3VzOwoKfSx7Ii4vbm9kZSI6Njl9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBOb2RlID0gcmVxdWlyZSgiLi9ub2RlIik7Cgp2YXIgQXNzaWdubWVudCA9IGZ1bmN0aW9uIChrZXksIHZhbCkgewogICAgdGhpcy5rZXkgPSBrZXk7CiAgICB0aGlzLnZhbHVlID0gdmFsOwp9OwoKQXNzaWdubWVudC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpBc3NpZ25tZW50LnByb3RvdHlwZS50eXBlID0gIkFzc2lnbm1lbnQiOwpBc3NpZ25tZW50LnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgdGhpcy52YWx1ZSA9IHZpc2l0b3IudmlzaXQodGhpcy52YWx1ZSk7Cn07CkFzc2lnbm1lbnQucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgaWYgKHRoaXMudmFsdWUuZXZhbCkgewogICAgICAgIHJldHVybiBuZXcgQXNzaWdubWVudCh0aGlzLmtleSwgdGhpcy52YWx1ZS5ldmFsKGNvbnRleHQpKTsKICAgIH0KICAgIHJldHVybiB0aGlzOwp9OwpBc3NpZ25tZW50LnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICBvdXRwdXQuYWRkKHRoaXMua2V5ICsgJz0nKTsKICAgIGlmICh0aGlzLnZhbHVlLmdlbkNTUykgewogICAgICAgIHRoaXMudmFsdWUuZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICB9IGVsc2UgewogICAgICAgIG91dHB1dC5hZGQodGhpcy52YWx1ZSk7CiAgICB9Cn07Cm1vZHVsZS5leHBvcnRzID0gQXNzaWdubWVudDsKCn0seyIuL25vZGUiOjY5fV0sNDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpOwoKdmFyIEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIChrZXksIG9wLCB2YWx1ZSkgewogICAgdGhpcy5rZXkgPSBrZXk7CiAgICB0aGlzLm9wID0gb3A7CiAgICB0aGlzLnZhbHVlID0gdmFsdWU7Cn07CkF0dHJpYnV0ZS5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpBdHRyaWJ1dGUucHJvdG90eXBlLnR5cGUgPSAiQXR0cmlidXRlIjsKQXR0cmlidXRlLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHJldHVybiBuZXcgQXR0cmlidXRlKHRoaXMua2V5LmV2YWwgPyB0aGlzLmtleS5ldmFsKGNvbnRleHQpIDogdGhpcy5rZXksCiAgICAgICAgdGhpcy5vcCwgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5ldmFsKSA/IHRoaXMudmFsdWUuZXZhbChjb250ZXh0KSA6IHRoaXMudmFsdWUpOwp9OwpBdHRyaWJ1dGUucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIG91dHB1dC5hZGQodGhpcy50b0NTUyhjb250ZXh0KSk7Cn07CkF0dHJpYnV0ZS5wcm90b3R5cGUudG9DU1MgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgdmFyIHZhbHVlID0gdGhpcy5rZXkudG9DU1MgPyB0aGlzLmtleS50b0NTUyhjb250ZXh0KSA6IHRoaXMua2V5OwoKICAgIGlmICh0aGlzLm9wKSB7CiAgICAgICAgdmFsdWUgKz0gdGhpcy5vcDsKICAgICAgICB2YWx1ZSArPSAodGhpcy52YWx1ZS50b0NTUyA/IHRoaXMudmFsdWUudG9DU1MoY29udGV4dCkgOiB0aGlzLnZhbHVlKTsKICAgIH0KCiAgICByZXR1cm4gJ1snICsgdmFsdWUgKyAnXSc7Cn07Cm1vZHVsZS5leHBvcnRzID0gQXR0cmlidXRlOwoKfSx7Ii4vbm9kZSI6Njl9XSw0ODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBOb2RlID0gcmVxdWlyZSgiLi9ub2RlIiksCiAgICBGdW5jdGlvbkNhbGxlciA9IHJlcXVpcmUoIi4uL2Z1bmN0aW9ucy9mdW5jdGlvbi1jYWxsZXIiKTsKLy8KLy8gQSBmdW5jdGlvbiBjYWxsIG5vZGUuCi8vCnZhciBDYWxsID0gZnVuY3Rpb24gKG5hbWUsIGFyZ3MsIGluZGV4LCBjdXJyZW50RmlsZUluZm8pIHsKICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICB0aGlzLmFyZ3MgPSBhcmdzOwogICAgdGhpcy5pbmRleCA9IGluZGV4OwogICAgdGhpcy5jdXJyZW50RmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm87Cn07CkNhbGwucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKQ2FsbC5wcm90b3R5cGUudHlwZSA9ICJDYWxsIjsKQ2FsbC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIGlmICh0aGlzLmFyZ3MpIHsKICAgICAgICB0aGlzLmFyZ3MgPSB2aXNpdG9yLnZpc2l0QXJyYXkodGhpcy5hcmdzKTsKICAgIH0KfTsKLy8KLy8gV2hlbiBldmFsdWF0aW5nIGEgZnVuY3Rpb24gY2FsbCwKLy8gd2UgZWl0aGVyIGZpbmQgdGhlIGZ1bmN0aW9uIGluIHRoZSBmdW5jdGlvblJlZ2lzdHJ5LAovLyBpbiB3aGljaCBjYXNlIHdlIGNhbGwgaXQsIHBhc3NpbmcgdGhlICBldmFsdWF0ZWQgYXJndW1lbnRzLAovLyBpZiB0aGlzIHJldHVybnMgbnVsbCBvciB3ZSBjYW5ub3QgZmluZCB0aGUgZnVuY3Rpb24sIHdlCi8vIHNpbXBseSBwcmludCBpdCBvdXQgYXMgaXQgYXBwZWFyZWQgb3JpZ2luYWxseSBbMl0uCi8vCi8vIFRoZSByZWFzb24gd2h5IHdlIGV2YWx1YXRlIHRoZSBhcmd1bWVudHMsIGlzIGluIHRoZSBjYXNlIHdoZXJlCi8vIHdlIHRyeSB0byBwYXNzIGEgdmFyaWFibGUgdG8gYSBmdW5jdGlvbiwgbGlrZTogYHNhdHVyYXRlKEBjb2xvcilgLgovLyBUaGUgZnVuY3Rpb24gc2hvdWxkIHJlY2VpdmUgdGhlIHZhbHVlLCBub3QgdGhlIHZhcmlhYmxlLgovLwpDYWxsLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciBhcmdzID0gdGhpcy5hcmdzLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS5ldmFsKGNvbnRleHQpOyB9KSwKICAgICAgICByZXN1bHQsIGZ1bmNDYWxsZXIgPSBuZXcgRnVuY3Rpb25DYWxsZXIodGhpcy5uYW1lLCBjb250ZXh0LCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbyk7CgogICAgaWYgKGZ1bmNDYWxsZXIuaXNWYWxpZCgpKSB7IC8vIDEuCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmVzdWx0ID0gZnVuY0NhbGxlci5jYWxsKGFyZ3MpOwogICAgICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIHRocm93IHsgdHlwZTogZS50eXBlIHx8ICJSdW50aW1lIiwKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAiZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgIiArIHRoaXMubmFtZSArICJgIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUubWVzc2FnZSA/ICc6ICcgKyBlLm1lc3NhZ2UgOiAnJyksCiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsIGZpbGVuYW1lOiB0aGlzLmN1cnJlbnRGaWxlSW5mby5maWxlbmFtZSB9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbmV3IENhbGwodGhpcy5uYW1lLCBhcmdzLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbyk7Cn07CkNhbGwucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIG91dHB1dC5hZGQodGhpcy5uYW1lICsgIigiLCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5pbmRleCk7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmFyZ3MubGVuZ3RoOyBpKyspIHsKICAgICAgICB0aGlzLmFyZ3NbaV0uZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgICAgaWYgKGkgKyAxIDwgdGhpcy5hcmdzLmxlbmd0aCkgewogICAgICAgICAgICBvdXRwdXQuYWRkKCIsICIpOwogICAgICAgIH0KICAgIH0KCiAgICBvdXRwdXQuYWRkKCIpIik7Cn07Cm1vZHVsZS5leHBvcnRzID0gQ2FsbDsKCn0seyIuLi9mdW5jdGlvbnMvZnVuY3Rpb24tY2FsbGVyIjoyMCwiLi9ub2RlIjo2OX1dLDQ5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKSwKICAgIGNvbG9ycyA9IHJlcXVpcmUoIi4uL2RhdGEvY29sb3JzIik7CgovLwovLyBSR0IgQ29sb3JzIC0gI2ZmMDAxNCwgI2VlZQovLwp2YXIgQ29sb3IgPSBmdW5jdGlvbiAocmdiLCBhLCBvcmlnaW5hbEZvcm0pIHsKICAgIC8vCiAgICAvLyBUaGUgZW5kIGdvYWwgaGVyZSwgaXMgdG8gcGFyc2UgdGhlIGFyZ3VtZW50cwogICAgLy8gaW50byBhbiBpbnRlZ2VyIHRyaXBsZXQsIHN1Y2ggYXMgYDEyOCwgMjU1LCAwYAogICAgLy8KICAgIC8vIFRoaXMgZmFjaWxpdGF0ZXMgb3BlcmF0aW9ucyBhbmQgY29udmVyc2lvbnMuCiAgICAvLwogICAgaWYgKEFycmF5LmlzQXJyYXkocmdiKSkgewogICAgICAgIHRoaXMucmdiID0gcmdiOwogICAgfSBlbHNlIGlmIChyZ2IubGVuZ3RoID09IDYpIHsKICAgICAgICB0aGlzLnJnYiA9IHJnYi5tYXRjaCgvLnsyfS9nKS5tYXAoZnVuY3Rpb24gKGMpIHsKICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGMsIDE2KTsKICAgICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5yZ2IgPSByZ2Iuc3BsaXQoJycpLm1hcChmdW5jdGlvbiAoYykgewogICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoYyArIGMsIDE2KTsKICAgICAgICB9KTsKICAgIH0KICAgIHRoaXMuYWxwaGEgPSB0eXBlb2YgYSA9PT0gJ251bWJlcicgPyBhIDogMTsKICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxGb3JtICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIHRoaXMudmFsdWUgPSBvcmlnaW5hbEZvcm07CiAgICB9Cn07CgpDb2xvci5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpDb2xvci5wcm90b3R5cGUudHlwZSA9ICJDb2xvciI7CgpmdW5jdGlvbiBjbGFtcCh2LCBtYXgpIHsKICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh2LCAwKSwgbWF4KTsKfQoKZnVuY3Rpb24gdG9IZXgodikgewogICAgcmV0dXJuICcjJyArIHYubWFwKGZ1bmN0aW9uIChjKSB7CiAgICAgICAgYyA9IGNsYW1wKE1hdGgucm91bmQoYyksIDI1NSk7CiAgICAgICAgcmV0dXJuIChjIDwgMTYgPyAnMCcgOiAnJykgKyBjLnRvU3RyaW5nKDE2KTsKICAgIH0pLmpvaW4oJycpOwp9CgpDb2xvci5wcm90b3R5cGUubHVtYSA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciByID0gdGhpcy5yZ2JbMF0gLyAyNTUsCiAgICAgICAgZyA9IHRoaXMucmdiWzFdIC8gMjU1LAogICAgICAgIGIgPSB0aGlzLnJnYlsyXSAvIDI1NTsKCiAgICByID0gKHIgPD0gMC4wMzkyOCkgPyByIC8gMTIuOTIgOiBNYXRoLnBvdygoKHIgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7CiAgICBnID0gKGcgPD0gMC4wMzkyOCkgPyBnIC8gMTIuOTIgOiBNYXRoLnBvdygoKGcgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7CiAgICBiID0gKGIgPD0gMC4wMzkyOCkgPyBiIC8gMTIuOTIgOiBNYXRoLnBvdygoKGIgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7CgogICAgcmV0dXJuIDAuMjEyNiAqIHIgKyAwLjcxNTIgKiBnICsgMC4wNzIyICogYjsKfTsKQ29sb3IucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIG91dHB1dC5hZGQodGhpcy50b0NTUyhjb250ZXh0KSk7Cn07CkNvbG9yLnByb3RvdHlwZS50b0NTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBkb05vdENvbXByZXNzKSB7CiAgICB2YXIgY29tcHJlc3MgPSBjb250ZXh0ICYmIGNvbnRleHQuY29tcHJlc3MgJiYgIWRvTm90Q29tcHJlc3MsIGNvbG9yLCBhbHBoYTsKCiAgICAvLyBgdmFsdWVgIGlzIHNldCBpZiB0aGlzIGNvbG9yIHdhcyBvcmlnaW5hbGx5CiAgICAvLyBjb252ZXJ0ZWQgZnJvbSBhIG5hbWVkIGNvbG9yIHN0cmluZyBzbyB3ZSBuZWVkCiAgICAvLyB0byByZXNwZWN0IHRoaXMgYW5kIHRyeSB0byBvdXRwdXQgbmFtZWQgY29sb3IgdG9vLgogICAgaWYgKHRoaXMudmFsdWUpIHsKICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKICAgIH0KCiAgICAvLyBJZiB3ZSBoYXZlIHNvbWUgdHJhbnNwYXJlbmN5LCB0aGUgb25seSB3YXkgdG8gcmVwcmVzZW50IGl0CiAgICAvLyBpcyB2aWEgYHJnYmFgLiBPdGhlcndpc2UsIHdlIHVzZSB0aGUgaGV4IHJlcHJlc2VudGF0aW9uLAogICAgLy8gd2hpY2ggaGFzIGJldHRlciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgYnJvd3NlcnMuCiAgICAvLyBWYWx1ZXMgYXJlIGNhcHBlZCBiZXR3ZWVuIGAwYCBhbmQgYDI1NWAsIHJvdW5kZWQgYW5kIHplcm8tcGFkZGVkLgogICAgYWxwaGEgPSB0aGlzLmZyb3VuZChjb250ZXh0LCB0aGlzLmFscGhhKTsKICAgIGlmIChhbHBoYSA8IDEpIHsKICAgICAgICByZXR1cm4gInJnYmEoIiArIHRoaXMucmdiLm1hcChmdW5jdGlvbiAoYykgewogICAgICAgICAgICByZXR1cm4gY2xhbXAoTWF0aC5yb3VuZChjKSwgMjU1KTsKICAgICAgICB9KS5jb25jYXQoY2xhbXAoYWxwaGEsIDEpKQogICAgICAgICAgICAuam9pbignLCcgKyAoY29tcHJlc3MgPyAnJyA6ICcgJykpICsgIikiOwogICAgfQoKICAgIGNvbG9yID0gdGhpcy50b1JHQigpOwoKICAgIGlmIChjb21wcmVzcykgewogICAgICAgIHZhciBzcGxpdGNvbG9yID0gY29sb3Iuc3BsaXQoJycpOwoKICAgICAgICAvLyBDb252ZXJ0IGNvbG9yIHRvIHNob3J0IGZvcm1hdAogICAgICAgIGlmIChzcGxpdGNvbG9yWzFdID09PSBzcGxpdGNvbG9yWzJdICYmIHNwbGl0Y29sb3JbM10gPT09IHNwbGl0Y29sb3JbNF0gJiYgc3BsaXRjb2xvcls1XSA9PT0gc3BsaXRjb2xvcls2XSkgewogICAgICAgICAgICBjb2xvciA9ICcjJyArIHNwbGl0Y29sb3JbMV0gKyBzcGxpdGNvbG9yWzNdICsgc3BsaXRjb2xvcls1XTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGNvbG9yOwp9OwoKLy8KLy8gT3BlcmF0aW9ucyBoYXZlIHRvIGJlIGRvbmUgcGVyLWNoYW5uZWwsIGlmIG5vdCwKLy8gY2hhbm5lbHMgd2lsbCBzcGlsbCBvbnRvIGVhY2ggb3RoZXIuIE9uY2Ugd2UgaGF2ZQovLyBvdXIgcmVzdWx0LCBpbiB0aGUgZm9ybSBvZiBhbiBpbnRlZ2VyIHRyaXBsZXQsCi8vIHdlIGNyZWF0ZSBhIG5ldyBDb2xvciBub2RlIHRvIGhvbGQgdGhlIHJlc3VsdC4KLy8KQ29sb3IucHJvdG90eXBlLm9wZXJhdGUgPSBmdW5jdGlvbiAoY29udGV4dCwgb3AsIG90aGVyKSB7CiAgICB2YXIgcmdiID0gW107CiAgICB2YXIgYWxwaGEgPSB0aGlzLmFscGhhICogKDEgLSBvdGhlci5hbHBoYSkgKyBvdGhlci5hbHBoYTsKICAgIGZvciAodmFyIGMgPSAwOyBjIDwgMzsgYysrKSB7CiAgICAgICAgcmdiW2NdID0gdGhpcy5fb3BlcmF0ZShjb250ZXh0LCBvcCwgdGhpcy5yZ2JbY10sIG90aGVyLnJnYltjXSk7CiAgICB9CiAgICByZXR1cm4gbmV3IENvbG9yKHJnYiwgYWxwaGEpOwp9OwpDb2xvci5wcm90b3R5cGUudG9SR0IgPSBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gdG9IZXgodGhpcy5yZ2IpOwp9OwpDb2xvci5wcm90b3R5cGUudG9IU0wgPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgciA9IHRoaXMucmdiWzBdIC8gMjU1LAogICAgICAgIGcgPSB0aGlzLnJnYlsxXSAvIDI1NSwKICAgICAgICBiID0gdGhpcy5yZ2JbMl0gLyAyNTUsCiAgICAgICAgYSA9IHRoaXMuYWxwaGE7CgogICAgdmFyIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTsKICAgIHZhciBoLCBzLCBsID0gKG1heCArIG1pbikgLyAyLCBkID0gbWF4IC0gbWluOwoKICAgIGlmIChtYXggPT09IG1pbikgewogICAgICAgIGggPSBzID0gMDsKICAgIH0gZWxzZSB7CiAgICAgICAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pOwoKICAgICAgICBzd2l0Y2ggKG1heCkgewogICAgICAgICAgICBjYXNlIHI6IGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgZzogaCA9IChiIC0gcikgLyBkICsgMjsgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBiOiBoID0gKHIgLSBnKSAvIGQgKyA0OyAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBoIC89IDY7CiAgICB9CiAgICByZXR1cm4geyBoOiBoICogMzYwLCBzOiBzLCBsOiBsLCBhOiBhIH07Cn07Ci8vQWRhcHRlZCBmcm9tIGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHQKQ29sb3IucHJvdG90eXBlLnRvSFNWID0gZnVuY3Rpb24gKCkgewogICAgdmFyIHIgPSB0aGlzLnJnYlswXSAvIDI1NSwKICAgICAgICBnID0gdGhpcy5yZ2JbMV0gLyAyNTUsCiAgICAgICAgYiA9IHRoaXMucmdiWzJdIC8gMjU1LAogICAgICAgIGEgPSB0aGlzLmFscGhhOwoKICAgIHZhciBtYXggPSBNYXRoLm1heChyLCBnLCBiKSwgbWluID0gTWF0aC5taW4ociwgZywgYik7CiAgICB2YXIgaCwgcywgdiA9IG1heDsKCiAgICB2YXIgZCA9IG1heCAtIG1pbjsKICAgIGlmIChtYXggPT09IDApIHsKICAgICAgICBzID0gMDsKICAgIH0gZWxzZSB7CiAgICAgICAgcyA9IGQgLyBtYXg7CiAgICB9CgogICAgaWYgKG1heCA9PT0gbWluKSB7CiAgICAgICAgaCA9IDA7CiAgICB9IGVsc2UgewogICAgICAgIHN3aXRjaChtYXgpIHsKICAgICAgICAgICAgY2FzZSByOiBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7IGJyZWFrOwogICAgICAgICAgICBjYXNlIGc6IGggPSAoYiAtIHIpIC8gZCArIDI7IGJyZWFrOwogICAgICAgICAgICBjYXNlIGI6IGggPSAociAtIGcpIC8gZCArIDQ7IGJyZWFrOwogICAgICAgIH0KICAgICAgICBoIC89IDY7CiAgICB9CiAgICByZXR1cm4geyBoOiBoICogMzYwLCBzOiBzLCB2OiB2LCBhOiBhIH07Cn07CkNvbG9yLnByb3RvdHlwZS50b0FSR0IgPSBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gdG9IZXgoW3RoaXMuYWxwaGEgKiAyNTVdLmNvbmNhdCh0aGlzLnJnYikpOwp9OwpDb2xvci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7CiAgICByZXR1cm4gKHgucmdiICYmCiAgICAgICAgeC5yZ2JbMF0gPT09IHRoaXMucmdiWzBdICYmCiAgICAgICAgeC5yZ2JbMV0gPT09IHRoaXMucmdiWzFdICYmCiAgICAgICAgeC5yZ2JbMl0gPT09IHRoaXMucmdiWzJdICYmCiAgICAgICAgeC5hbHBoYSAgPT09IHRoaXMuYWxwaGEpID8gMCA6IHVuZGVmaW5lZDsKfTsKCkNvbG9yLmZyb21LZXl3b3JkID0gZnVuY3Rpb24oa2V5d29yZCkgewogICAgdmFyIGMsIGtleSA9IGtleXdvcmQudG9Mb3dlckNhc2UoKTsKICAgIGlmIChjb2xvcnMuaGFzT3duUHJvcGVydHkoa2V5KSkgewogICAgICAgIGMgPSBuZXcgQ29sb3IoY29sb3JzW2tleV0uc2xpY2UoMSkpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09PSAidHJhbnNwYXJlbnQiKSB7CiAgICAgICAgYyA9IG5ldyBDb2xvcihbMCwgMCwgMF0sIDApOwogICAgfQoKICAgIGlmIChjKSB7CiAgICAgICAgYy52YWx1ZSA9IGtleXdvcmQ7CiAgICAgICAgcmV0dXJuIGM7CiAgICB9Cn07Cm1vZHVsZS5leHBvcnRzID0gQ29sb3I7Cgp9LHsiLi4vZGF0YS9jb2xvcnMiOjExLCIuL25vZGUiOjY5fV0sNTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpOwoKdmFyIENvbWJpbmF0b3IgPSBmdW5jdGlvbiAodmFsdWUpIHsKICAgIGlmICh2YWx1ZSA9PT0gJyAnKSB7CiAgICAgICAgdGhpcy52YWx1ZSA9ICcgJzsKICAgICAgICB0aGlzLmVtcHR5T3JXaGl0ZXNwYWNlID0gdHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlID8gdmFsdWUudHJpbSgpIDogIiI7CiAgICAgICAgdGhpcy5lbXB0eU9yV2hpdGVzcGFjZSA9IHRoaXMudmFsdWUgPT09ICIiOwogICAgfQp9OwpDb21iaW5hdG9yLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CkNvbWJpbmF0b3IucHJvdG90eXBlLnR5cGUgPSAiQ29tYmluYXRvciI7CnZhciBfbm9TcGFjZUNvbWJpbmF0b3JzID0gewogICAgJyc6IHRydWUsCiAgICAnICc6IHRydWUsCiAgICAnfCc6IHRydWUKfTsKQ29tYmluYXRvci5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgdmFyIHNwYWNlT3JFbXB0eSA9IChjb250ZXh0LmNvbXByZXNzIHx8IF9ub1NwYWNlQ29tYmluYXRvcnNbdGhpcy52YWx1ZV0pID8gJycgOiAnICc7CiAgICBvdXRwdXQuYWRkKHNwYWNlT3JFbXB0eSArIHRoaXMudmFsdWUgKyBzcGFjZU9yRW1wdHkpOwp9Owptb2R1bGUuZXhwb3J0cyA9IENvbWJpbmF0b3I7Cgp9LHsiLi9ub2RlIjo2OX1dLDUxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKSwKICAgIGdldERlYnVnSW5mbyA9IHJlcXVpcmUoIi4vZGVidWctaW5mbyIpOwoKdmFyIENvbW1lbnQgPSBmdW5jdGlvbiAodmFsdWUsIGlzTGluZUNvbW1lbnQsIGluZGV4LCBjdXJyZW50RmlsZUluZm8pIHsKICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgIHRoaXMuaXNMaW5lQ29tbWVudCA9IGlzTGluZUNvbW1lbnQ7CiAgICB0aGlzLmN1cnJlbnRGaWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKfTsKQ29tbWVudC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpDb21tZW50LnByb3RvdHlwZS50eXBlID0gIkNvbW1lbnQiOwpDb21tZW50LnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICBpZiAodGhpcy5kZWJ1Z0luZm8pIHsKICAgICAgICBvdXRwdXQuYWRkKGdldERlYnVnSW5mbyhjb250ZXh0LCB0aGlzKSwgdGhpcy5jdXJyZW50RmlsZUluZm8sIHRoaXMuaW5kZXgpOwogICAgfQogICAgb3V0cHV0LmFkZCh0aGlzLnZhbHVlKTsKfTsKQ29tbWVudC5wcm90b3R5cGUuaXNTaWxlbnQgPSBmdW5jdGlvbihjb250ZXh0KSB7CiAgICB2YXIgaXNSZWZlcmVuY2UgPSAodGhpcy5jdXJyZW50RmlsZUluZm8gJiYgdGhpcy5jdXJyZW50RmlsZUluZm8ucmVmZXJlbmNlICYmICF0aGlzLmlzUmVmZXJlbmNlZCksCiAgICAgICAgaXNDb21wcmVzc2VkID0gY29udGV4dC5jb21wcmVzcyAmJiB0aGlzLnZhbHVlWzJdICE9PSAiISI7CiAgICByZXR1cm4gdGhpcy5pc0xpbmVDb21tZW50IHx8IGlzUmVmZXJlbmNlIHx8IGlzQ29tcHJlc3NlZDsKfTsKQ29tbWVudC5wcm90b3R5cGUubWFya1JlZmVyZW5jZWQgPSBmdW5jdGlvbiAoKSB7CiAgICB0aGlzLmlzUmVmZXJlbmNlZCA9IHRydWU7Cn07Cm1vZHVsZS5leHBvcnRzID0gQ29tbWVudDsKCn0seyIuL2RlYnVnLWluZm8iOjUzLCIuL25vZGUiOjY5fV0sNTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpOwoKdmFyIENvbmRpdGlvbiA9IGZ1bmN0aW9uIChvcCwgbCwgciwgaSwgbmVnYXRlKSB7CiAgICB0aGlzLm9wID0gb3AudHJpbSgpOwogICAgdGhpcy5sdmFsdWUgPSBsOwogICAgdGhpcy5ydmFsdWUgPSByOwogICAgdGhpcy5pbmRleCA9IGk7CiAgICB0aGlzLm5lZ2F0ZSA9IG5lZ2F0ZTsKfTsKQ29uZGl0aW9uLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CkNvbmRpdGlvbi5wcm90b3R5cGUudHlwZSA9ICJDb25kaXRpb24iOwpDb25kaXRpb24ucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICB0aGlzLmx2YWx1ZSA9IHZpc2l0b3IudmlzaXQodGhpcy5sdmFsdWUpOwogICAgdGhpcy5ydmFsdWUgPSB2aXNpdG9yLnZpc2l0KHRoaXMucnZhbHVlKTsKfTsKQ29uZGl0aW9uLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciByZXN1bHQgPSAoZnVuY3Rpb24gKG9wLCBhLCBiKSB7CiAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICAgICBjYXNlICdhbmQnOiByZXR1cm4gYSAmJiBiOwogICAgICAgICAgICBjYXNlICdvcic6ICByZXR1cm4gYSB8fCBiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgc3dpdGNoIChOb2RlLmNvbXBhcmUoYSwgYikpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIC0xOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3AgPT09ICc8JyB8fCBvcCA9PT0gJz08JyB8fCBvcCA9PT0gJzw9JzsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcCA9PT0gJz0nIHx8IG9wID09PSAnPj0nIHx8IG9wID09PSAnPTwnIHx8IG9wID09PSAnPD0nOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wID09PSAnPicgfHwgb3AgPT09ICc+PSc7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pKHRoaXMub3AsIHRoaXMubHZhbHVlLmV2YWwoY29udGV4dCksIHRoaXMucnZhbHVlLmV2YWwoY29udGV4dCkpOwoKICAgIHJldHVybiB0aGlzLm5lZ2F0ZSA/ICFyZXN1bHQgOiByZXN1bHQ7Cn07Cm1vZHVsZS5leHBvcnRzID0gQ29uZGl0aW9uOwoKfSx7Ii4vbm9kZSI6Njl9XSw1MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBkZWJ1Z0luZm8gPSBmdW5jdGlvbihjb250ZXh0LCBjdHgsIGxpbmVTZXBhcmF0b3IpIHsKICAgIHZhciByZXN1bHQgPSAiIjsKICAgIGlmIChjb250ZXh0LmR1bXBMaW5lTnVtYmVycyAmJiAhY29udGV4dC5jb21wcmVzcykgewogICAgICAgIHN3aXRjaChjb250ZXh0LmR1bXBMaW5lTnVtYmVycykgewogICAgICAgICAgICBjYXNlICdjb21tZW50cyc6CiAgICAgICAgICAgICAgICByZXN1bHQgPSBkZWJ1Z0luZm8uYXNDb21tZW50KGN0eCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnbWVkaWFxdWVyeSc6CiAgICAgICAgICAgICAgICByZXN1bHQgPSBkZWJ1Z0luZm8uYXNNZWRpYVF1ZXJ5KGN0eCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYWxsJzoKICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlYnVnSW5mby5hc0NvbW1lbnQoY3R4KSArIChsaW5lU2VwYXJhdG9yIHx8ICIiKSArIGRlYnVnSW5mby5hc01lZGlhUXVlcnkoY3R4KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7Cn07CgpkZWJ1Z0luZm8uYXNDb21tZW50ID0gZnVuY3Rpb24oY3R4KSB7CiAgICByZXR1cm4gJy8qIGxpbmUgJyArIGN0eC5kZWJ1Z0luZm8ubGluZU51bWJlciArICcsICcgKyBjdHguZGVidWdJbmZvLmZpbGVOYW1lICsgJyAqL1xuJzsKfTsKCmRlYnVnSW5mby5hc01lZGlhUXVlcnkgPSBmdW5jdGlvbihjdHgpIHsKICAgIHZhciBmaWxlbmFtZVdpdGhQcm90b2NvbCA9IGN0eC5kZWJ1Z0luZm8uZmlsZU5hbWU7CiAgICBpZiAoIS9eW2Etel0rOlwvXC8vaS50ZXN0KGZpbGVuYW1lV2l0aFByb3RvY29sKSkgewogICAgICAgIGZpbGVuYW1lV2l0aFByb3RvY29sID0gJ2ZpbGU6Ly8nICsgZmlsZW5hbWVXaXRoUHJvdG9jb2w7CiAgICB9CiAgICByZXR1cm4gJ0BtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OicgKwogICAgICAgIGZpbGVuYW1lV2l0aFByb3RvY29sLnJlcGxhY2UoLyhbLjpcL1xcXSkvZywgZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgaWYgKGEgPT0gJ1xcJykgewogICAgICAgICAgICAgICAgYSA9ICdcLyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICdcXCcgKyBhOwogICAgICAgIH0pICsKICAgICAgICAnfWxpbmV7Zm9udC1mYW1pbHk6XFwwMDAwMycgKyBjdHguZGVidWdJbmZvLmxpbmVOdW1iZXIgKyAnfX1cbic7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IGRlYnVnSW5mbzsKCn0se31dLDU0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKSwKICAgIGNvbnRleHRzID0gcmVxdWlyZSgiLi4vY29udGV4dHMiKTsKCnZhciBEZXRhY2hlZFJ1bGVzZXQgPSBmdW5jdGlvbiAocnVsZXNldCwgZnJhbWVzKSB7CiAgICB0aGlzLnJ1bGVzZXQgPSBydWxlc2V0OwogICAgdGhpcy5mcmFtZXMgPSBmcmFtZXM7Cn07CkRldGFjaGVkUnVsZXNldC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpEZXRhY2hlZFJ1bGVzZXQucHJvdG90eXBlLnR5cGUgPSAiRGV0YWNoZWRSdWxlc2V0IjsKRGV0YWNoZWRSdWxlc2V0LnByb3RvdHlwZS5ldmFsRmlyc3QgPSB0cnVlOwpEZXRhY2hlZFJ1bGVzZXQucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICB0aGlzLnJ1bGVzZXQgPSB2aXNpdG9yLnZpc2l0KHRoaXMucnVsZXNldCk7Cn07CkRldGFjaGVkUnVsZXNldC5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICB2YXIgZnJhbWVzID0gdGhpcy5mcmFtZXMgfHwgY29udGV4dC5mcmFtZXMuc2xpY2UoMCk7CiAgICByZXR1cm4gbmV3IERldGFjaGVkUnVsZXNldCh0aGlzLnJ1bGVzZXQsIGZyYW1lcyk7Cn07CkRldGFjaGVkUnVsZXNldC5wcm90b3R5cGUuY2FsbEV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgcmV0dXJuIHRoaXMucnVsZXNldC5ldmFsKHRoaXMuZnJhbWVzID8gbmV3IGNvbnRleHRzLkV2YWwoY29udGV4dCwgdGhpcy5mcmFtZXMuY29uY2F0KGNvbnRleHQuZnJhbWVzKSkgOiBjb250ZXh0KTsKfTsKbW9kdWxlLmV4cG9ydHMgPSBEZXRhY2hlZFJ1bGVzZXQ7Cgp9LHsiLi4vY29udGV4dHMiOjEwLCIuL25vZGUiOjY5fV0sNTU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgdW5pdENvbnZlcnNpb25zID0gcmVxdWlyZSgiLi4vZGF0YS91bml0LWNvbnZlcnNpb25zIiksCiAgICBVbml0ID0gcmVxdWlyZSgiLi91bml0IiksCiAgICBDb2xvciA9IHJlcXVpcmUoIi4vY29sb3IiKTsKCi8vCi8vIEEgbnVtYmVyIHdpdGggYSB1bml0Ci8vCnZhciBEaW1lbnNpb24gPSBmdW5jdGlvbiAodmFsdWUsIHVuaXQpIHsKICAgIHRoaXMudmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTsKICAgIHRoaXMudW5pdCA9ICh1bml0ICYmIHVuaXQgaW5zdGFuY2VvZiBVbml0KSA/IHVuaXQgOgogICAgICBuZXcgVW5pdCh1bml0ID8gW3VuaXRdIDogdW5kZWZpbmVkKTsKfTsKCkRpbWVuc2lvbi5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpEaW1lbnNpb24ucHJvdG90eXBlLnR5cGUgPSAiRGltZW5zaW9uIjsKRGltZW5zaW9uLnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgdGhpcy51bml0ID0gdmlzaXRvci52aXNpdCh0aGlzLnVuaXQpOwp9OwpEaW1lbnNpb24ucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgcmV0dXJuIHRoaXM7Cn07CkRpbWVuc2lvbi5wcm90b3R5cGUudG9Db2xvciA9IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiBuZXcgQ29sb3IoW3RoaXMudmFsdWUsIHRoaXMudmFsdWUsIHRoaXMudmFsdWVdKTsKfTsKRGltZW5zaW9uLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICBpZiAoKGNvbnRleHQgJiYgY29udGV4dC5zdHJpY3RVbml0cykgJiYgIXRoaXMudW5pdC5pc1Npbmd1bGFyKCkpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk11bHRpcGxlIHVuaXRzIGluIGRpbWVuc2lvbi4gQ29ycmVjdCB0aGUgdW5pdHMgb3IgdXNlIHRoZSB1bml0IGZ1bmN0aW9uLiBCYWQgdW5pdDogIiArIHRoaXMudW5pdC50b1N0cmluZygpKTsKICAgIH0KCiAgICB2YXIgdmFsdWUgPSB0aGlzLmZyb3VuZChjb250ZXh0LCB0aGlzLnZhbHVlKSwKICAgICAgICBzdHJWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7CgogICAgaWYgKHZhbHVlICE9PSAwICYmIHZhbHVlIDwgMC4wMDAwMDEgJiYgdmFsdWUgPiAtMC4wMDAwMDEpIHsKICAgICAgICAvLyB3b3VsZCBiZSBvdXRwdXQgMWUtNiBldGMuCiAgICAgICAgc3RyVmFsdWUgPSB2YWx1ZS50b0ZpeGVkKDIwKS5yZXBsYWNlKC8wKyQvLCAiIik7CiAgICB9CgogICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5jb21wcmVzcykgewogICAgICAgIC8vIFplcm8gdmFsdWVzIGRvZXNuJ3QgbmVlZCBhIHVuaXQKICAgICAgICBpZiAodmFsdWUgPT09IDAgJiYgdGhpcy51bml0LmlzTGVuZ3RoKCkpIHsKICAgICAgICAgICAgb3V0cHV0LmFkZChzdHJWYWx1ZSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIEZsb2F0IHZhbHVlcyBkb2Vzbid0IG5lZWQgYSBsZWFkaW5nIHplcm8KICAgICAgICBpZiAodmFsdWUgPiAwICYmIHZhbHVlIDwgMSkgewogICAgICAgICAgICBzdHJWYWx1ZSA9IChzdHJWYWx1ZSkuc3Vic3RyKDEpOwogICAgICAgIH0KICAgIH0KCiAgICBvdXRwdXQuYWRkKHN0clZhbHVlKTsKICAgIHRoaXMudW5pdC5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKfTsKCi8vIEluIGFuIG9wZXJhdGlvbiBiZXR3ZWVuIHR3byBEaW1lbnNpb25zLAovLyB3ZSBkZWZhdWx0IHRvIHRoZSBmaXJzdCBEaW1lbnNpb24ncyB1bml0LAovLyBzbyBgMXB4ICsgMmAgd2lsbCB5aWVsZCBgM3B4YC4KRGltZW5zaW9uLnByb3RvdHlwZS5vcGVyYXRlID0gZnVuY3Rpb24gKGNvbnRleHQsIG9wLCBvdGhlcikgewogICAgLypqc2hpbnQgbm9lbXB0eTpmYWxzZSAqLwogICAgdmFyIHZhbHVlID0gdGhpcy5fb3BlcmF0ZShjb250ZXh0LCBvcCwgdGhpcy52YWx1ZSwgb3RoZXIudmFsdWUpLAogICAgICAgIHVuaXQgPSB0aGlzLnVuaXQuY2xvbmUoKTsKCiAgICBpZiAob3AgPT09ICcrJyB8fCBvcCA9PT0gJy0nKSB7CiAgICAgICAgaWYgKHVuaXQubnVtZXJhdG9yLmxlbmd0aCA9PT0gMCAmJiB1bml0LmRlbm9taW5hdG9yLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICB1bml0ID0gb3RoZXIudW5pdC5jbG9uZSgpOwogICAgICAgICAgICBpZiAodGhpcy51bml0LmJhY2t1cFVuaXQpIHsKICAgICAgICAgICAgICAgIHVuaXQuYmFja3VwVW5pdCA9IHRoaXMudW5pdC5iYWNrdXBVbml0OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChvdGhlci51bml0Lm51bWVyYXRvci5sZW5ndGggPT09IDAgJiYgdW5pdC5kZW5vbWluYXRvci5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgLy8gZG8gbm90aGluZwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG90aGVyID0gb3RoZXIuY29udmVydFRvKHRoaXMudW5pdC51c2VkVW5pdHMoKSk7CgogICAgICAgICAgICBpZiAoY29udGV4dC5zdHJpY3RVbml0cyAmJiBvdGhlci51bml0LnRvU3RyaW5nKCkgIT09IHVuaXQudG9TdHJpbmcoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvbXBhdGlibGUgdW5pdHMuIENoYW5nZSB0aGUgdW5pdHMgb3IgdXNlIHRoZSB1bml0IGZ1bmN0aW9uLiBCYWQgdW5pdHM6ICciICsgdW5pdC50b1N0cmluZygpICsKICAgICAgICAgICAgICAgICAgICAiJyBhbmQgJyIgKyBvdGhlci51bml0LnRvU3RyaW5nKCkgKyAiJy4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9vcGVyYXRlKGNvbnRleHQsIG9wLCB0aGlzLnZhbHVlLCBvdGhlci52YWx1ZSk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmIChvcCA9PT0gJyonKSB7CiAgICAgICAgdW5pdC5udW1lcmF0b3IgPSB1bml0Lm51bWVyYXRvci5jb25jYXQob3RoZXIudW5pdC5udW1lcmF0b3IpLnNvcnQoKTsKICAgICAgICB1bml0LmRlbm9taW5hdG9yID0gdW5pdC5kZW5vbWluYXRvci5jb25jYXQob3RoZXIudW5pdC5kZW5vbWluYXRvcikuc29ydCgpOwogICAgICAgIHVuaXQuY2FuY2VsKCk7CiAgICB9IGVsc2UgaWYgKG9wID09PSAnLycpIHsKICAgICAgICB1bml0Lm51bWVyYXRvciA9IHVuaXQubnVtZXJhdG9yLmNvbmNhdChvdGhlci51bml0LmRlbm9taW5hdG9yKS5zb3J0KCk7CiAgICAgICAgdW5pdC5kZW5vbWluYXRvciA9IHVuaXQuZGVub21pbmF0b3IuY29uY2F0KG90aGVyLnVuaXQubnVtZXJhdG9yKS5zb3J0KCk7CiAgICAgICAgdW5pdC5jYW5jZWwoKTsKICAgIH0KICAgIHJldHVybiBuZXcgRGltZW5zaW9uKHZhbHVlLCB1bml0KTsKfTsKRGltZW5zaW9uLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKG90aGVyKSB7CiAgICB2YXIgYSwgYjsKCiAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIERpbWVuc2lvbikpIHsKICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfQoKICAgIGlmICh0aGlzLnVuaXQuaXNFbXB0eSgpIHx8IG90aGVyLnVuaXQuaXNFbXB0eSgpKSB7CiAgICAgICAgYSA9IHRoaXM7CiAgICAgICAgYiA9IG90aGVyOwogICAgfSBlbHNlIHsKICAgICAgICBhID0gdGhpcy51bmlmeSgpOwogICAgICAgIGIgPSBvdGhlci51bmlmeSgpOwogICAgICAgIGlmIChhLnVuaXQuY29tcGFyZShiLnVuaXQpICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBOb2RlLm51bWVyaWNDb21wYXJlKGEudmFsdWUsIGIudmFsdWUpOwp9OwpEaW1lbnNpb24ucHJvdG90eXBlLnVuaWZ5ID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHRoaXMuY29udmVydFRvKHsgbGVuZ3RoOiAncHgnLCBkdXJhdGlvbjogJ3MnLCBhbmdsZTogJ3JhZCcgfSk7Cn07CkRpbWVuc2lvbi5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gKGNvbnZlcnNpb25zKSB7CiAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlLCB1bml0ID0gdGhpcy51bml0LmNsb25lKCksCiAgICAgICAgaSwgZ3JvdXBOYW1lLCBncm91cCwgdGFyZ2V0VW5pdCwgZGVyaXZlZENvbnZlcnNpb25zID0ge30sIGFwcGx5VW5pdDsKCiAgICBpZiAodHlwZW9mIGNvbnZlcnNpb25zID09PSAnc3RyaW5nJykgewogICAgICAgIGZvciAoaSBpbiB1bml0Q29udmVyc2lvbnMpIHsKICAgICAgICAgICAgaWYgKHVuaXRDb252ZXJzaW9uc1tpXS5oYXNPd25Qcm9wZXJ0eShjb252ZXJzaW9ucykpIHsKICAgICAgICAgICAgICAgIGRlcml2ZWRDb252ZXJzaW9ucyA9IHt9OwogICAgICAgICAgICAgICAgZGVyaXZlZENvbnZlcnNpb25zW2ldID0gY29udmVyc2lvbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY29udmVyc2lvbnMgPSBkZXJpdmVkQ29udmVyc2lvbnM7CiAgICB9CiAgICBhcHBseVVuaXQgPSBmdW5jdGlvbiAoYXRvbWljVW5pdCwgZGVub21pbmF0b3IpIHsKICAgICAgICAvKiBqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSAqLwogICAgICAgIGlmIChncm91cC5oYXNPd25Qcm9wZXJ0eShhdG9taWNVbml0KSkgewogICAgICAgICAgICBpZiAoZGVub21pbmF0b3IpIHsKICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgLyAoZ3JvdXBbYXRvbWljVW5pdF0gLyBncm91cFt0YXJnZXRVbml0XSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICogKGdyb3VwW2F0b21pY1VuaXRdIC8gZ3JvdXBbdGFyZ2V0VW5pdF0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gdGFyZ2V0VW5pdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBhdG9taWNVbml0OwogICAgfTsKCiAgICBmb3IgKGdyb3VwTmFtZSBpbiBjb252ZXJzaW9ucykgewogICAgICAgIGlmIChjb252ZXJzaW9ucy5oYXNPd25Qcm9wZXJ0eShncm91cE5hbWUpKSB7CiAgICAgICAgICAgIHRhcmdldFVuaXQgPSBjb252ZXJzaW9uc1tncm91cE5hbWVdOwogICAgICAgICAgICBncm91cCA9IHVuaXRDb252ZXJzaW9uc1tncm91cE5hbWVdOwoKICAgICAgICAgICAgdW5pdC5tYXAoYXBwbHlVbml0KTsKICAgICAgICB9CiAgICB9CgogICAgdW5pdC5jYW5jZWwoKTsKCiAgICByZXR1cm4gbmV3IERpbWVuc2lvbih2YWx1ZSwgdW5pdCk7Cn07Cm1vZHVsZS5leHBvcnRzID0gRGltZW5zaW9uOwoKfSx7Ii4uL2RhdGEvdW5pdC1jb252ZXJzaW9ucyI6MTMsIi4vY29sb3IiOjQ5LCIuL25vZGUiOjY5LCIuL3VuaXQiOjc4fV0sNTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgU2VsZWN0b3IgPSByZXF1aXJlKCIuL3NlbGVjdG9yIiksCiAgICBSdWxlc2V0ID0gcmVxdWlyZSgiLi9ydWxlc2V0Iik7Cgp2YXIgRGlyZWN0aXZlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBydWxlcywgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbywgZGVidWdJbmZvLCBpc1JlZmVyZW5jZWQsIGlzUm9vdGVkKSB7CiAgICB2YXIgaTsKCiAgICB0aGlzLm5hbWUgID0gbmFtZTsKICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgIGlmIChydWxlcykgewogICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJ1bGVzKSkgewogICAgICAgICAgICB0aGlzLnJ1bGVzID0gcnVsZXM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5ydWxlcyA9IFtydWxlc107CiAgICAgICAgICAgIHRoaXMucnVsZXNbMF0uc2VsZWN0b3JzID0gKG5ldyBTZWxlY3RvcihbXSwgbnVsbCwgbnVsbCwgdGhpcy5pbmRleCwgY3VycmVudEZpbGVJbmZvKSkuY3JlYXRlRW1wdHlTZWxlY3RvcnMoKTsKICAgICAgICB9CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMucnVsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGhpcy5ydWxlc1tpXS5hbGxvd0ltcG9ydHMgPSB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHRoaXMuaW5kZXggPSBpbmRleDsKICAgIHRoaXMuY3VycmVudEZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogICAgdGhpcy5kZWJ1Z0luZm8gPSBkZWJ1Z0luZm87CiAgICB0aGlzLmlzUmVmZXJlbmNlZCA9IGlzUmVmZXJlbmNlZDsKICAgIHRoaXMuaXNSb290ZWQgPSBpc1Jvb3RlZCB8fCBmYWxzZTsKfTsKCkRpcmVjdGl2ZS5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpEaXJlY3RpdmUucHJvdG90eXBlLnR5cGUgPSAiRGlyZWN0aXZlIjsKRGlyZWN0aXZlLnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZSwgcnVsZXMgPSB0aGlzLnJ1bGVzOwogICAgaWYgKHJ1bGVzKSB7CiAgICAgICAgdGhpcy5ydWxlcyA9IHZpc2l0b3IudmlzaXRBcnJheShydWxlcyk7CiAgICB9CiAgICBpZiAodmFsdWUpIHsKICAgICAgICB0aGlzLnZhbHVlID0gdmlzaXRvci52aXNpdCh2YWx1ZSk7CiAgICB9Cn07CkRpcmVjdGl2ZS5wcm90b3R5cGUuaXNSdWxlc2V0TGlrZSA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucnVsZXMgfHwgIXRoaXMuaXNDaGFyc2V0KCk7Cn07CkRpcmVjdGl2ZS5wcm90b3R5cGUuaXNDaGFyc2V0ID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gIkBjaGFyc2V0IiA9PT0gdGhpcy5uYW1lOwp9OwpEaXJlY3RpdmUucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUsIHJ1bGVzID0gdGhpcy5ydWxlczsKICAgIG91dHB1dC5hZGQodGhpcy5uYW1lLCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5pbmRleCk7CiAgICBpZiAodmFsdWUpIHsKICAgICAgICBvdXRwdXQuYWRkKCcgJyk7CiAgICAgICAgdmFsdWUuZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICB9CiAgICBpZiAocnVsZXMpIHsKICAgICAgICB0aGlzLm91dHB1dFJ1bGVzZXQoY29udGV4dCwgb3V0cHV0LCBydWxlcyk7CiAgICB9IGVsc2UgewogICAgICAgIG91dHB1dC5hZGQoJzsnKTsKICAgIH0KfTsKRGlyZWN0aXZlLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciBtZWRpYVBhdGhCYWNrdXAsIG1lZGlhQmxvY2tzQmFja3VwLCB2YWx1ZSA9IHRoaXMudmFsdWUsIHJ1bGVzID0gdGhpcy5ydWxlczsKCiAgICAvL21lZGlhIHN0b3JlZCBpbnNpZGUgb3RoZXIgZGlyZWN0aXZlIHNob3VsZCBub3QgYnViYmxlIG92ZXIgaXQKICAgIC8vYmFja3B1cCBtZWRpYSBidWJibGluZyBpbmZvcm1hdGlvbgogICAgbWVkaWFQYXRoQmFja3VwID0gY29udGV4dC5tZWRpYVBhdGg7CiAgICBtZWRpYUJsb2Nrc0JhY2t1cCA9IGNvbnRleHQubWVkaWFCbG9ja3M7CiAgICAvL2RlbGV0ZWQgbWVkaWEgYnViYmxpbmcgaW5mb3JtYXRpb24KICAgIGNvbnRleHQubWVkaWFQYXRoID0gW107CiAgICBjb250ZXh0Lm1lZGlhQmxvY2tzID0gW107CgogICAgaWYgKHZhbHVlKSB7CiAgICAgICAgdmFsdWUgPSB2YWx1ZS5ldmFsKGNvbnRleHQpOwogICAgfQogICAgaWYgKHJ1bGVzKSB7CiAgICAgICAgLy8gYXNzdW1pbmcgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBydWxlIGF0IHRoaXMgcG9pbnQgLSB0aGF0IGlzIGhvdyBwYXJzZXIgY29uc3RydWN0cyB0aGUgcnVsZQogICAgICAgIHJ1bGVzID0gW3J1bGVzWzBdLmV2YWwoY29udGV4dCldOwogICAgICAgIHJ1bGVzWzBdLnJvb3QgPSB0cnVlOwogICAgfQogICAgLy9yZXN0b3JlIG1lZGlhIGJ1YmJsaW5nIGluZm9ybWF0aW9uCiAgICBjb250ZXh0Lm1lZGlhUGF0aCA9IG1lZGlhUGF0aEJhY2t1cDsKICAgIGNvbnRleHQubWVkaWFCbG9ja3MgPSBtZWRpYUJsb2Nrc0JhY2t1cDsKCiAgICByZXR1cm4gbmV3IERpcmVjdGl2ZSh0aGlzLm5hbWUsIHZhbHVlLCBydWxlcywKICAgICAgICB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5kZWJ1Z0luZm8sIHRoaXMuaXNSZWZlcmVuY2VkLCB0aGlzLmlzUm9vdGVkKTsKfTsKRGlyZWN0aXZlLnByb3RvdHlwZS52YXJpYWJsZSA9IGZ1bmN0aW9uIChuYW1lKSB7CiAgICBpZiAodGhpcy5ydWxlcykgewogICAgICAgIC8vIGFzc3VtaW5nIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcnVsZSBhdCB0aGlzIHBvaW50IC0gdGhhdCBpcyBob3cgcGFyc2VyIGNvbnN0cnVjdHMgdGhlIHJ1bGUKICAgICAgICByZXR1cm4gUnVsZXNldC5wcm90b3R5cGUudmFyaWFibGUuY2FsbCh0aGlzLnJ1bGVzWzBdLCBuYW1lKTsKICAgIH0KfTsKRGlyZWN0aXZlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKCkgewogICAgaWYgKHRoaXMucnVsZXMpIHsKICAgICAgICAvLyBhc3N1bWluZyB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHJ1bGUgYXQgdGhpcyBwb2ludCAtIHRoYXQgaXMgaG93IHBhcnNlciBjb25zdHJ1Y3RzIHRoZSBydWxlCiAgICAgICAgcmV0dXJuIFJ1bGVzZXQucHJvdG90eXBlLmZpbmQuYXBwbHkodGhpcy5ydWxlc1swXSwgYXJndW1lbnRzKTsKICAgIH0KfTsKRGlyZWN0aXZlLnByb3RvdHlwZS5ydWxlc2V0cyA9IGZ1bmN0aW9uICgpIHsKICAgIGlmICh0aGlzLnJ1bGVzKSB7CiAgICAgICAgLy8gYXNzdW1pbmcgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBydWxlIGF0IHRoaXMgcG9pbnQgLSB0aGF0IGlzIGhvdyBwYXJzZXIgY29uc3RydWN0cyB0aGUgcnVsZQogICAgICAgIHJldHVybiBSdWxlc2V0LnByb3RvdHlwZS5ydWxlc2V0cy5hcHBseSh0aGlzLnJ1bGVzWzBdKTsKICAgIH0KfTsKRGlyZWN0aXZlLnByb3RvdHlwZS5tYXJrUmVmZXJlbmNlZCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBpLCBydWxlczsKICAgIHRoaXMuaXNSZWZlcmVuY2VkID0gdHJ1ZTsKICAgIGlmICh0aGlzLnJ1bGVzKSB7CiAgICAgICAgcnVsZXMgPSB0aGlzLnJ1bGVzOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAocnVsZXNbaV0ubWFya1JlZmVyZW5jZWQpIHsKICAgICAgICAgICAgICAgIHJ1bGVzW2ldLm1hcmtSZWZlcmVuY2VkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn07CkRpcmVjdGl2ZS5wcm90b3R5cGUuZ2V0SXNSZWZlcmVuY2VkID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuICF0aGlzLmN1cnJlbnRGaWxlSW5mbyB8fCAhdGhpcy5jdXJyZW50RmlsZUluZm8ucmVmZXJlbmNlIHx8IHRoaXMuaXNSZWZlcmVuY2VkOwp9OwpEaXJlY3RpdmUucHJvdG90eXBlLm91dHB1dFJ1bGVzZXQgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0LCBydWxlcykgewogICAgdmFyIHJ1bGVDbnQgPSBydWxlcy5sZW5ndGgsIGk7CiAgICBjb250ZXh0LnRhYkxldmVsID0gKGNvbnRleHQudGFiTGV2ZWwgfCAwKSArIDE7CgogICAgLy8gQ29tcHJlc3NlZAogICAgaWYgKGNvbnRleHQuY29tcHJlc3MpIHsKICAgICAgICBvdXRwdXQuYWRkKCd7Jyk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHJ1bGVDbnQ7IGkrKykgewogICAgICAgICAgICBydWxlc1tpXS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgICB9CiAgICAgICAgb3V0cHV0LmFkZCgnfScpOwogICAgICAgIGNvbnRleHQudGFiTGV2ZWwtLTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gTm9uLWNvbXByZXNzZWQKICAgIHZhciB0YWJTZXRTdHIgPSAnXG4nICsgQXJyYXkoY29udGV4dC50YWJMZXZlbCkuam9pbigiICAiKSwgdGFiUnVsZVN0ciA9IHRhYlNldFN0ciArICIgICI7CiAgICBpZiAoIXJ1bGVDbnQpIHsKICAgICAgICBvdXRwdXQuYWRkKCIgeyIgKyB0YWJTZXRTdHIgKyAnfScpOwogICAgfSBlbHNlIHsKICAgICAgICBvdXRwdXQuYWRkKCIgeyIgKyB0YWJSdWxlU3RyKTsKICAgICAgICBydWxlc1swXS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgICBmb3IgKGkgPSAxOyBpIDwgcnVsZUNudDsgaSsrKSB7CiAgICAgICAgICAgIG91dHB1dC5hZGQodGFiUnVsZVN0cik7CiAgICAgICAgICAgIHJ1bGVzW2ldLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgIH0KICAgICAgICBvdXRwdXQuYWRkKHRhYlNldFN0ciArICd9Jyk7CiAgICB9CgogICAgY29udGV4dC50YWJMZXZlbC0tOwp9Owptb2R1bGUuZXhwb3J0cyA9IERpcmVjdGl2ZTsKCn0seyIuL25vZGUiOjY5LCIuL3J1bGVzZXQiOjc1LCIuL3NlbGVjdG9yIjo3Nn1dLDU3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKSwKICAgIFBhcmVuID0gcmVxdWlyZSgiLi9wYXJlbiIpLAogICAgQ29tYmluYXRvciA9IHJlcXVpcmUoIi4vY29tYmluYXRvciIpOwoKdmFyIEVsZW1lbnQgPSBmdW5jdGlvbiAoY29tYmluYXRvciwgdmFsdWUsIGluZGV4LCBjdXJyZW50RmlsZUluZm8pIHsKICAgIHRoaXMuY29tYmluYXRvciA9IGNvbWJpbmF0b3IgaW5zdGFuY2VvZiBDb21iaW5hdG9yID8KICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmF0b3IgOiBuZXcgQ29tYmluYXRvcihjb21iaW5hdG9yKTsKCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgewogICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS50cmltKCk7CiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnZhbHVlID0gIiI7CiAgICB9CiAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgICB0aGlzLmN1cnJlbnRGaWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKfTsKRWxlbWVudC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpFbGVtZW50LnByb3RvdHlwZS50eXBlID0gIkVsZW1lbnQiOwpFbGVtZW50LnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTsKICAgIHRoaXMuY29tYmluYXRvciA9IHZpc2l0b3IudmlzaXQodGhpcy5jb21iaW5hdG9yKTsKICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZpc2l0b3IudmlzaXQodmFsdWUpOwogICAgfQp9OwpFbGVtZW50LnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHJldHVybiBuZXcgRWxlbWVudCh0aGlzLmNvbWJpbmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZS5ldmFsID8gdGhpcy52YWx1ZS5ldmFsKGNvbnRleHQpIDogdGhpcy52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbGVJbmZvKTsKfTsKRWxlbWVudC5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgb3V0cHV0LmFkZCh0aGlzLnRvQ1NTKGNvbnRleHQpLCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5pbmRleCk7Cn07CkVsZW1lbnQucHJvdG90eXBlLnRvQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IHt9OwogICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZSwgZmlyc3RTZWxlY3RvciA9IGNvbnRleHQuZmlyc3RTZWxlY3RvcjsKICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFBhcmVuKSB7CiAgICAgICAgLy8gc2VsZWN0b3IgaW4gcGFyZW5zIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgb3V0ZXIgc2VsZWN0b3IKICAgICAgICAvLyBmbGFncyAoYnJlYWtzIG9ubHkgaW50ZXJwb2xhdGVkIHNlbGVjdG9ycyAtIHNlZSAjMTk3MykKICAgICAgICBjb250ZXh0LmZpcnN0U2VsZWN0b3IgPSB0cnVlOwogICAgfQogICAgdmFsdWUgPSB2YWx1ZS50b0NTUyA/IHZhbHVlLnRvQ1NTKGNvbnRleHQpIDogdmFsdWU7CiAgICBjb250ZXh0LmZpcnN0U2VsZWN0b3IgPSBmaXJzdFNlbGVjdG9yOwogICAgaWYgKHZhbHVlID09PSAnJyAmJiB0aGlzLmNvbWJpbmF0b3IudmFsdWUuY2hhckF0KDApID09PSAnJicpIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLmNvbWJpbmF0b3IudG9DU1MoY29udGV4dCkgKyB2YWx1ZTsKICAgIH0KfTsKbW9kdWxlLmV4cG9ydHMgPSBFbGVtZW50OwoKfSx7Ii4vY29tYmluYXRvciI6NTAsIi4vbm9kZSI6NjksIi4vcGFyZW4iOjcxfV0sNTg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgUGFyZW4gPSByZXF1aXJlKCIuL3BhcmVuIiksCiAgICBDb21tZW50ID0gcmVxdWlyZSgiLi9jb21tZW50Iik7Cgp2YXIgRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgaWYgKCF2YWx1ZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwcmVzc2lvbiByZXF1aXJlcyBhbiBhcnJheSBwYXJhbWV0ZXIiKTsKICAgIH0KfTsKRXhwcmVzc2lvbi5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpFeHByZXNzaW9uLnByb3RvdHlwZS50eXBlID0gIkV4cHJlc3Npb24iOwpFeHByZXNzaW9uLnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgdGhpcy52YWx1ZSA9IHZpc2l0b3IudmlzaXRBcnJheSh0aGlzLnZhbHVlKTsKfTsKRXhwcmVzc2lvbi5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICB2YXIgcmV0dXJuVmFsdWUsCiAgICAgICAgaW5QYXJlbnRoZXNpcyA9IHRoaXMucGFyZW5zICYmICF0aGlzLnBhcmVuc0luT3AsCiAgICAgICAgZG91YmxlUGFyZW4gPSBmYWxzZTsKICAgIGlmIChpblBhcmVudGhlc2lzKSB7CiAgICAgICAgY29udGV4dC5pblBhcmVudGhlc2lzKCk7CiAgICB9CiAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAxKSB7CiAgICAgICAgcmV0dXJuVmFsdWUgPSBuZXcgRXhwcmVzc2lvbih0aGlzLnZhbHVlLm1hcChmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZXR1cm4gZS5ldmFsKGNvbnRleHQpOwogICAgICAgIH0pKTsKICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgICBpZiAodGhpcy52YWx1ZVswXS5wYXJlbnMgJiYgIXRoaXMudmFsdWVbMF0ucGFyZW5zSW5PcCkgewogICAgICAgICAgICBkb3VibGVQYXJlbiA9IHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVyblZhbHVlID0gdGhpcy52YWx1ZVswXS5ldmFsKGNvbnRleHQpOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm5WYWx1ZSA9IHRoaXM7CiAgICB9CiAgICBpZiAoaW5QYXJlbnRoZXNpcykgewogICAgICAgIGNvbnRleHQub3V0T2ZQYXJlbnRoZXNpcygpOwogICAgfQogICAgaWYgKHRoaXMucGFyZW5zICYmIHRoaXMucGFyZW5zSW5PcCAmJiAhKGNvbnRleHQuaXNNYXRoT24oKSkgJiYgIWRvdWJsZVBhcmVuKSB7CiAgICAgICAgcmV0dXJuVmFsdWUgPSBuZXcgUGFyZW4ocmV0dXJuVmFsdWUpOwogICAgfQogICAgcmV0dXJuIHJldHVyblZhbHVlOwp9OwpFeHByZXNzaW9uLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHsKICAgICAgICB0aGlzLnZhbHVlW2ldLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgIGlmIChpICsgMSA8IHRoaXMudmFsdWUubGVuZ3RoKSB7CiAgICAgICAgICAgIG91dHB1dC5hZGQoIiAiKTsKICAgICAgICB9CiAgICB9Cn07CkV4cHJlc3Npb24ucHJvdG90eXBlLnRocm93QXdheUNvbW1lbnRzID0gZnVuY3Rpb24gKCkgewogICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKGZ1bmN0aW9uKHYpIHsKICAgICAgICByZXR1cm4gISh2IGluc3RhbmNlb2YgQ29tbWVudCk7CiAgICB9KTsKfTsKRXhwcmVzc2lvbi5wcm90b3R5cGUubWFya1JlZmVyZW5jZWQgPSBmdW5jdGlvbiAoKSB7CiAgICB0aGlzLnZhbHVlLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgaWYgKHZhbHVlLm1hcmtSZWZlcmVuY2VkKSB7IHZhbHVlLm1hcmtSZWZlcmVuY2VkKCk7IH0KICAgIH0pOwp9Owptb2R1bGUuZXhwb3J0cyA9IEV4cHJlc3Npb247Cgp9LHsiLi9jb21tZW50Ijo1MSwiLi9ub2RlIjo2OSwiLi9wYXJlbiI6NzF9XSw1OTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBOb2RlID0gcmVxdWlyZSgiLi9ub2RlIik7Cgp2YXIgRXh0ZW5kID0gZnVuY3Rpb24gRXh0ZW5kKHNlbGVjdG9yLCBvcHRpb24sIGluZGV4KSB7CiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7CiAgICB0aGlzLm9wdGlvbiA9IG9wdGlvbjsKICAgIHRoaXMuaW5kZXggPSBpbmRleDsKICAgIHRoaXMub2JqZWN0X2lkID0gRXh0ZW5kLm5leHRfaWQrKzsKICAgIHRoaXMucGFyZW50X2lkcyA9IFt0aGlzLm9iamVjdF9pZF07CgogICAgc3dpdGNoKG9wdGlvbikgewogICAgICAgIGNhc2UgImFsbCI6CiAgICAgICAgICAgIHRoaXMuYWxsb3dCZWZvcmUgPSB0cnVlOwogICAgICAgICAgICB0aGlzLmFsbG93QWZ0ZXIgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aGlzLmFsbG93QmVmb3JlID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMuYWxsb3dBZnRlciA9IGZhbHNlOwogICAgICAgICAgICBicmVhazsKICAgIH0KfTsKRXh0ZW5kLm5leHRfaWQgPSAwOwoKRXh0ZW5kLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CkV4dGVuZC5wcm90b3R5cGUudHlwZSA9ICJFeHRlbmQiOwpFeHRlbmQucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICB0aGlzLnNlbGVjdG9yID0gdmlzaXRvci52aXNpdCh0aGlzLnNlbGVjdG9yKTsKfTsKRXh0ZW5kLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHJldHVybiBuZXcgRXh0ZW5kKHRoaXMuc2VsZWN0b3IuZXZhbChjb250ZXh0KSwgdGhpcy5vcHRpb24sIHRoaXMuaW5kZXgpOwp9OwpFeHRlbmQucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHJldHVybiBuZXcgRXh0ZW5kKHRoaXMuc2VsZWN0b3IsIHRoaXMub3B0aW9uLCB0aGlzLmluZGV4KTsKfTsKRXh0ZW5kLnByb3RvdHlwZS5maW5kU2VsZlNlbGVjdG9ycyA9IGZ1bmN0aW9uIChzZWxlY3RvcnMpIHsKICAgIHZhciBzZWxmRWxlbWVudHMgPSBbXSwKICAgICAgICBpLAogICAgICAgIHNlbGVjdG9yRWxlbWVudHM7CgogICAgZm9yIChpID0gMDsgaSA8IHNlbGVjdG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgIHNlbGVjdG9yRWxlbWVudHMgPSBzZWxlY3RvcnNbaV0uZWxlbWVudHM7CiAgICAgICAgLy8gZHVwbGljYXRlIHRoZSBsb2dpYyBpbiBnZW5DU1MgZnVuY3Rpb24gaW5zaWRlIHRoZSBzZWxlY3RvciBub2RlLgogICAgICAgIC8vIGZ1dHVyZSBUT0RPIC0gbW92ZSBib3RoIGxvZ2ljcyBpbnRvIHRoZSBzZWxlY3RvciBqb2luZXIgdmlzaXRvcgogICAgICAgIGlmIChpID4gMCAmJiBzZWxlY3RvckVsZW1lbnRzLmxlbmd0aCAmJiBzZWxlY3RvckVsZW1lbnRzWzBdLmNvbWJpbmF0b3IudmFsdWUgPT09ICIiKSB7CiAgICAgICAgICAgIHNlbGVjdG9yRWxlbWVudHNbMF0uY29tYmluYXRvci52YWx1ZSA9ICcgJzsKICAgICAgICB9CiAgICAgICAgc2VsZkVsZW1lbnRzID0gc2VsZkVsZW1lbnRzLmNvbmNhdChzZWxlY3RvcnNbaV0uZWxlbWVudHMpOwogICAgfQoKICAgIHRoaXMuc2VsZlNlbGVjdG9ycyA9IFt7IGVsZW1lbnRzOiBzZWxmRWxlbWVudHMgfV07Cn07Cm1vZHVsZS5leHBvcnRzID0gRXh0ZW5kOwoKfSx7Ii4vbm9kZSI6Njl9XSw2MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBOb2RlID0gcmVxdWlyZSgiLi9ub2RlIiksCiAgICBNZWRpYSA9IHJlcXVpcmUoIi4vbWVkaWEiKSwKICAgIFVSTCA9IHJlcXVpcmUoIi4vdXJsIiksCiAgICBRdW90ZWQgPSByZXF1aXJlKCIuL3F1b3RlZCIpLAogICAgUnVsZXNldCA9IHJlcXVpcmUoIi4vcnVsZXNldCIpLAogICAgQW5vbnltb3VzID0gcmVxdWlyZSgiLi9hbm9ueW1vdXMiKTsKCi8vCi8vIENTUyBAaW1wb3J0IG5vZGUKLy8KLy8gVGhlIGdlbmVyYWwgc3RyYXRlZ3kgaGVyZSBpcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gd2FpdAovLyBmb3IgdGhlIHBhcnNpbmcgdG8gYmUgY29tcGxldGVkLCBiZWZvcmUgd2Ugc3RhcnQgaW1wb3J0aW5nCi8vIHRoZSBmaWxlLiBUaGF0J3MgYmVjYXVzZSBpbiB0aGUgY29udGV4dCBvZiBhIGJyb3dzZXIsCi8vIG1vc3Qgb2YgdGhlIHRpbWUgd2lsbCBiZSBzcGVudCB3YWl0aW5nIGZvciB0aGUgc2VydmVyIHRvIHJlc3BvbmQuCi8vCi8vIE9uIGNyZWF0aW9uLCB3ZSBwdXNoIHRoZSBpbXBvcnQgcGF0aCB0byBvdXIgaW1wb3J0IHF1ZXVlLCB0aG91Z2gKLy8gYGltcG9ydCxwdXNoYCwgd2UgYWxzbyBwYXNzIGl0IGEgY2FsbGJhY2ssIHdoaWNoIGl0J2xsIGNhbGwgb25jZQovLyB0aGUgZmlsZSBoYXMgYmVlbiBmZXRjaGVkLCBhbmQgcGFyc2VkLgovLwp2YXIgSW1wb3J0ID0gZnVuY3Rpb24gKHBhdGgsIGZlYXR1cmVzLCBvcHRpb25zLCBpbmRleCwgY3VycmVudEZpbGVJbmZvKSB7CiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgdGhpcy5pbmRleCA9IGluZGV4OwogICAgdGhpcy5wYXRoID0gcGF0aDsKICAgIHRoaXMuZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgIHRoaXMuY3VycmVudEZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwoKICAgIGlmICh0aGlzLm9wdGlvbnMubGVzcyAhPT0gdW5kZWZpbmVkIHx8IHRoaXMub3B0aW9ucy5pbmxpbmUpIHsKICAgICAgICB0aGlzLmNzcyA9ICF0aGlzLm9wdGlvbnMubGVzcyB8fCB0aGlzLm9wdGlvbnMuaW5saW5lOwogICAgfSBlbHNlIHsKICAgICAgICB2YXIgcGF0aFZhbHVlID0gdGhpcy5nZXRQYXRoKCk7CiAgICAgICAgaWYgKHBhdGhWYWx1ZSAmJiAvWyNcLlwmXD9cL11jc3MoW1w/O10uKik/JC8udGVzdChwYXRoVmFsdWUpKSB7CiAgICAgICAgICAgIHRoaXMuY3NzID0gdHJ1ZTsKICAgICAgICB9CiAgICB9Cn07CgovLwovLyBUaGUgYWN0dWFsIGltcG9ydCBub2RlIGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nLCB3aGVuIGNvbnZlcnRlZCB0byBDU1MuCi8vIFRoZSByZWFzb24gaXMgdGhhdCBpdCdzIHVzZWQgYXQgdGhlIGV2YWx1YXRpb24gc3RhZ2UsIHNvIHRoYXQgdGhlIHJ1bGVzCi8vIGl0IGltcG9ydHMgY2FuIGJlIHRyZWF0ZWQgbGlrZSBhbnkgb3RoZXIgcnVsZXMuCi8vCi8vIEluIGBldmFsYCwgd2UgbWFrZSBzdXJlIGFsbCBJbXBvcnQgbm9kZXMgZ2V0IGV2YWx1YXRlZCwgcmVjdXJzaXZlbHksIHNvCi8vIHdlIGVuZCB1cCB3aXRoIGEgZmxhdCBzdHJ1Y3R1cmUsIHdoaWNoIGNhbiBlYXNpbHkgYmUgaW1wb3J0ZWQgaW4gdGhlIHBhcmVudAovLyBydWxlc2V0LgovLwpJbXBvcnQucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKSW1wb3J0LnByb3RvdHlwZS50eXBlID0gIkltcG9ydCI7CkltcG9ydC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIGlmICh0aGlzLmZlYXR1cmVzKSB7CiAgICAgICAgdGhpcy5mZWF0dXJlcyA9IHZpc2l0b3IudmlzaXQodGhpcy5mZWF0dXJlcyk7CiAgICB9CiAgICB0aGlzLnBhdGggPSB2aXNpdG9yLnZpc2l0KHRoaXMucGF0aCk7CiAgICBpZiAoIXRoaXMub3B0aW9ucy5wbHVnaW4gJiYgIXRoaXMub3B0aW9ucy5pbmxpbmUgJiYgdGhpcy5yb290KSB7CiAgICAgICAgdGhpcy5yb290ID0gdmlzaXRvci52aXNpdCh0aGlzLnJvb3QpOwogICAgfQp9OwpJbXBvcnQucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIGlmICh0aGlzLmNzcyAmJiB0aGlzLnBhdGguY3VycmVudEZpbGVJbmZvLnJlZmVyZW5jZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgb3V0cHV0LmFkZCgiQGltcG9ydCAiLCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5pbmRleCk7CiAgICAgICAgdGhpcy5wYXRoLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgIGlmICh0aGlzLmZlYXR1cmVzKSB7CiAgICAgICAgICAgIG91dHB1dC5hZGQoIiAiKTsKICAgICAgICAgICAgdGhpcy5mZWF0dXJlcy5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgICB9CiAgICAgICAgb3V0cHV0LmFkZCgnOycpOwogICAgfQp9OwpJbXBvcnQucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gKHRoaXMucGF0aCBpbnN0YW5jZW9mIFVSTCkgPwogICAgICAgIHRoaXMucGF0aC52YWx1ZS52YWx1ZSA6IHRoaXMucGF0aC52YWx1ZTsKfTsKSW1wb3J0LnByb3RvdHlwZS5pc1ZhcmlhYmxlSW1wb3J0ID0gZnVuY3Rpb24gKCkgewogICAgdmFyIHBhdGggPSB0aGlzLnBhdGg7CiAgICBpZiAocGF0aCBpbnN0YW5jZW9mIFVSTCkgewogICAgICAgIHBhdGggPSBwYXRoLnZhbHVlOwogICAgfQogICAgaWYgKHBhdGggaW5zdGFuY2VvZiBRdW90ZWQpIHsKICAgICAgICByZXR1cm4gcGF0aC5jb250YWluc1ZhcmlhYmxlcygpOwogICAgfQoKICAgIHJldHVybiB0cnVlOwp9OwpJbXBvcnQucHJvdG90eXBlLmV2YWxGb3JJbXBvcnQgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgdmFyIHBhdGggPSB0aGlzLnBhdGg7CgogICAgaWYgKHBhdGggaW5zdGFuY2VvZiBVUkwpIHsKICAgICAgICBwYXRoID0gcGF0aC52YWx1ZTsKICAgIH0KCiAgICByZXR1cm4gbmV3IEltcG9ydChwYXRoLmV2YWwoY29udGV4dCksIHRoaXMuZmVhdHVyZXMsIHRoaXMub3B0aW9ucywgdGhpcy5pbmRleCwgdGhpcy5jdXJyZW50RmlsZUluZm8pOwp9OwpJbXBvcnQucHJvdG90eXBlLmV2YWxQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciBwYXRoID0gdGhpcy5wYXRoLmV2YWwoY29udGV4dCk7CiAgICB2YXIgcm9vdHBhdGggPSB0aGlzLmN1cnJlbnRGaWxlSW5mbyAmJiB0aGlzLmN1cnJlbnRGaWxlSW5mby5yb290cGF0aDsKCiAgICBpZiAoIShwYXRoIGluc3RhbmNlb2YgVVJMKSkgewogICAgICAgIGlmIChyb290cGF0aCkgewogICAgICAgICAgICB2YXIgcGF0aFZhbHVlID0gcGF0aC52YWx1ZTsKICAgICAgICAgICAgLy8gQWRkIHRoZSBiYXNlIHBhdGggaWYgdGhlIGltcG9ydCBpcyByZWxhdGl2ZQogICAgICAgICAgICBpZiAocGF0aFZhbHVlICYmIGNvbnRleHQuaXNQYXRoUmVsYXRpdmUocGF0aFZhbHVlKSkgewogICAgICAgICAgICAgICAgcGF0aC52YWx1ZSA9IHJvb3RwYXRoICsgcGF0aFZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHBhdGgudmFsdWUgPSBjb250ZXh0Lm5vcm1hbGl6ZVBhdGgocGF0aC52YWx1ZSk7CiAgICB9CgogICAgcmV0dXJuIHBhdGg7Cn07CkltcG9ydC5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICB2YXIgcnVsZXNldCwgcmVnaXN0cnksCiAgICAgICAgZmVhdHVyZXMgPSB0aGlzLmZlYXR1cmVzICYmIHRoaXMuZmVhdHVyZXMuZXZhbChjb250ZXh0KTsKCiAgICBpZiAodGhpcy5vcHRpb25zLnBsdWdpbikgewogICAgICAgIHJlZ2lzdHJ5ID0gY29udGV4dC5mcmFtZXNbMF0gJiYgY29udGV4dC5mcmFtZXNbMF0uZnVuY3Rpb25SZWdpc3RyeTsKICAgICAgICBpZiAoIHJlZ2lzdHJ5ICYmIHRoaXMucm9vdCAmJiB0aGlzLnJvb3QuZnVuY3Rpb25zICkgewogICAgICAgICAgICByZWdpc3RyeS5hZGRNdWx0aXBsZSggdGhpcy5yb290LmZ1bmN0aW9ucyApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgaWYgKHRoaXMuc2tpcCkgewogICAgICAgIGlmICh0eXBlb2YgdGhpcy5za2lwID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgIHRoaXMuc2tpcCA9IHRoaXMuc2tpcCgpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5za2lwKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKHRoaXMub3B0aW9ucy5pbmxpbmUpIHsKICAgICAgICB2YXIgY29udGVudHMgPSBuZXcgQW5vbnltb3VzKHRoaXMucm9vdCwgMCwKICAgICAgICAgIHsKICAgICAgICAgICAgICBmaWxlbmFtZTogdGhpcy5pbXBvcnRlZEZpbGVuYW1lLAogICAgICAgICAgICAgIHJlZmVyZW5jZTogdGhpcy5wYXRoLmN1cnJlbnRGaWxlSW5mbyAmJiB0aGlzLnBhdGguY3VycmVudEZpbGVJbmZvLnJlZmVyZW5jZQogICAgICAgICAgfSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOwoKICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlcyA/IG5ldyBNZWRpYShbY29udGVudHNdLCB0aGlzLmZlYXR1cmVzLnZhbHVlKSA6IFtjb250ZW50c107CiAgICB9IGVsc2UgaWYgKHRoaXMuY3NzKSB7CiAgICAgICAgdmFyIG5ld0ltcG9ydCA9IG5ldyBJbXBvcnQodGhpcy5ldmFsUGF0aChjb250ZXh0KSwgZmVhdHVyZXMsIHRoaXMub3B0aW9ucywgdGhpcy5pbmRleCk7CiAgICAgICAgaWYgKCFuZXdJbXBvcnQuY3NzICYmIHRoaXMuZXJyb3IpIHsKICAgICAgICAgICAgdGhyb3cgdGhpcy5lcnJvcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ld0ltcG9ydDsKICAgIH0gZWxzZSB7CiAgICAgICAgcnVsZXNldCA9IG5ldyBSdWxlc2V0KG51bGwsIHRoaXMucm9vdC5ydWxlcy5zbGljZSgwKSk7CgogICAgICAgIHJ1bGVzZXQuZXZhbEltcG9ydHMoY29udGV4dCk7CgogICAgICAgIHJldHVybiB0aGlzLmZlYXR1cmVzID8gbmV3IE1lZGlhKHJ1bGVzZXQucnVsZXMsIHRoaXMuZmVhdHVyZXMudmFsdWUpIDogcnVsZXNldC5ydWxlczsKICAgIH0KfTsKbW9kdWxlLmV4cG9ydHMgPSBJbXBvcnQ7Cgp9LHsiLi9hbm9ueW1vdXMiOjQ1LCIuL21lZGlhIjo2NSwiLi9ub2RlIjo2OSwiLi9xdW90ZWQiOjcyLCIuL3J1bGVzZXQiOjc1LCIuL3VybCI6Nzl9XSw2MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciB0cmVlID0ge307Cgp0cmVlLk5vZGUgPSByZXF1aXJlKCcuL25vZGUnKTsKdHJlZS5BbHBoYSA9IHJlcXVpcmUoJy4vYWxwaGEnKTsKdHJlZS5Db2xvciA9IHJlcXVpcmUoJy4vY29sb3InKTsKdHJlZS5EaXJlY3RpdmUgPSByZXF1aXJlKCcuL2RpcmVjdGl2ZScpOwp0cmVlLkRldGFjaGVkUnVsZXNldCA9IHJlcXVpcmUoJy4vZGV0YWNoZWQtcnVsZXNldCcpOwp0cmVlLk9wZXJhdGlvbiA9IHJlcXVpcmUoJy4vb3BlcmF0aW9uJyk7CnRyZWUuRGltZW5zaW9uID0gcmVxdWlyZSgnLi9kaW1lbnNpb24nKTsKdHJlZS5Vbml0ID0gcmVxdWlyZSgnLi91bml0Jyk7CnRyZWUuS2V5d29yZCA9IHJlcXVpcmUoJy4va2V5d29yZCcpOwp0cmVlLlZhcmlhYmxlID0gcmVxdWlyZSgnLi92YXJpYWJsZScpOwp0cmVlLlJ1bGVzZXQgPSByZXF1aXJlKCcuL3J1bGVzZXQnKTsKdHJlZS5FbGVtZW50ID0gcmVxdWlyZSgnLi9lbGVtZW50Jyk7CnRyZWUuQXR0cmlidXRlID0gcmVxdWlyZSgnLi9hdHRyaWJ1dGUnKTsKdHJlZS5Db21iaW5hdG9yID0gcmVxdWlyZSgnLi9jb21iaW5hdG9yJyk7CnRyZWUuU2VsZWN0b3IgPSByZXF1aXJlKCcuL3NlbGVjdG9yJyk7CnRyZWUuUXVvdGVkID0gcmVxdWlyZSgnLi9xdW90ZWQnKTsKdHJlZS5FeHByZXNzaW9uID0gcmVxdWlyZSgnLi9leHByZXNzaW9uJyk7CnRyZWUuUnVsZSA9IHJlcXVpcmUoJy4vcnVsZScpOwp0cmVlLkNhbGwgPSByZXF1aXJlKCcuL2NhbGwnKTsKdHJlZS5VUkwgPSByZXF1aXJlKCcuL3VybCcpOwp0cmVlLkltcG9ydCA9IHJlcXVpcmUoJy4vaW1wb3J0Jyk7CnRyZWUubWl4aW4gPSB7CiAgICBDYWxsOiByZXF1aXJlKCcuL21peGluLWNhbGwnKSwKICAgIERlZmluaXRpb246IHJlcXVpcmUoJy4vbWl4aW4tZGVmaW5pdGlvbicpCn07CnRyZWUuQ29tbWVudCA9IHJlcXVpcmUoJy4vY29tbWVudCcpOwp0cmVlLkFub255bW91cyA9IHJlcXVpcmUoJy4vYW5vbnltb3VzJyk7CnRyZWUuVmFsdWUgPSByZXF1aXJlKCcuL3ZhbHVlJyk7CnRyZWUuSmF2YVNjcmlwdCA9IHJlcXVpcmUoJy4vamF2YXNjcmlwdCcpOwp0cmVlLkFzc2lnbm1lbnQgPSByZXF1aXJlKCcuL2Fzc2lnbm1lbnQnKTsKdHJlZS5Db25kaXRpb24gPSByZXF1aXJlKCcuL2NvbmRpdGlvbicpOwp0cmVlLlBhcmVuID0gcmVxdWlyZSgnLi9wYXJlbicpOwp0cmVlLk1lZGlhID0gcmVxdWlyZSgnLi9tZWRpYScpOwp0cmVlLlVuaWNvZGVEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi91bmljb2RlLWRlc2NyaXB0b3InKTsKdHJlZS5OZWdhdGl2ZSA9IHJlcXVpcmUoJy4vbmVnYXRpdmUnKTsKdHJlZS5FeHRlbmQgPSByZXF1aXJlKCcuL2V4dGVuZCcpOwp0cmVlLlJ1bGVzZXRDYWxsID0gcmVxdWlyZSgnLi9ydWxlc2V0LWNhbGwnKTsKCm1vZHVsZS5leHBvcnRzID0gdHJlZTsKCn0seyIuL2FscGhhIjo0NCwiLi9hbm9ueW1vdXMiOjQ1LCIuL2Fzc2lnbm1lbnQiOjQ2LCIuL2F0dHJpYnV0ZSI6NDcsIi4vY2FsbCI6NDgsIi4vY29sb3IiOjQ5LCIuL2NvbWJpbmF0b3IiOjUwLCIuL2NvbW1lbnQiOjUxLCIuL2NvbmRpdGlvbiI6NTIsIi4vZGV0YWNoZWQtcnVsZXNldCI6NTQsIi4vZGltZW5zaW9uIjo1NSwiLi9kaXJlY3RpdmUiOjU2LCIuL2VsZW1lbnQiOjU3LCIuL2V4cHJlc3Npb24iOjU4LCIuL2V4dGVuZCI6NTksIi4vaW1wb3J0Ijo2MCwiLi9qYXZhc2NyaXB0Ijo2MiwiLi9rZXl3b3JkIjo2NCwiLi9tZWRpYSI6NjUsIi4vbWl4aW4tY2FsbCI6NjYsIi4vbWl4aW4tZGVmaW5pdGlvbiI6NjcsIi4vbmVnYXRpdmUiOjY4LCIuL25vZGUiOjY5LCIuL29wZXJhdGlvbiI6NzAsIi4vcGFyZW4iOjcxLCIuL3F1b3RlZCI6NzIsIi4vcnVsZSI6NzMsIi4vcnVsZXNldCI6NzUsIi4vcnVsZXNldC1jYWxsIjo3NCwiLi9zZWxlY3RvciI6NzYsIi4vdW5pY29kZS1kZXNjcmlwdG9yIjo3NywiLi91bml0Ijo3OCwiLi91cmwiOjc5LCIuL3ZhbHVlIjo4MCwiLi92YXJpYWJsZSI6ODF9XSw2MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBKc0V2YWxOb2RlID0gcmVxdWlyZSgiLi9qcy1ldmFsLW5vZGUiKSwKICAgIERpbWVuc2lvbiA9IHJlcXVpcmUoIi4vZGltZW5zaW9uIiksCiAgICBRdW90ZWQgPSByZXF1aXJlKCIuL3F1b3RlZCIpLAogICAgQW5vbnltb3VzID0gcmVxdWlyZSgiLi9hbm9ueW1vdXMiKTsKCnZhciBKYXZhU2NyaXB0ID0gZnVuY3Rpb24gKHN0cmluZywgZXNjYXBlZCwgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbykgewogICAgdGhpcy5lc2NhcGVkID0gZXNjYXBlZDsKICAgIHRoaXMuZXhwcmVzc2lvbiA9IHN0cmluZzsKICAgIHRoaXMuaW5kZXggPSBpbmRleDsKICAgIHRoaXMuY3VycmVudEZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwp9OwpKYXZhU2NyaXB0LnByb3RvdHlwZSA9IG5ldyBKc0V2YWxOb2RlKCk7CkphdmFTY3JpcHQucHJvdG90eXBlLnR5cGUgPSAiSmF2YVNjcmlwdCI7CkphdmFTY3JpcHQucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbihjb250ZXh0KSB7CiAgICB2YXIgcmVzdWx0ID0gdGhpcy5ldmFsdWF0ZUphdmFTY3JpcHQodGhpcy5leHByZXNzaW9uLCBjb250ZXh0KTsKCiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ251bWJlcicpIHsKICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihyZXN1bHQpOwogICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykgewogICAgICAgIHJldHVybiBuZXcgUXVvdGVkKCciJyArIHJlc3VsdCArICciJywgcmVzdWx0LCB0aGlzLmVzY2FwZWQsIHRoaXMuaW5kZXgpOwogICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHsKICAgICAgICByZXR1cm4gbmV3IEFub255bW91cyhyZXN1bHQuam9pbignLCAnKSk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzKHJlc3VsdCk7CiAgICB9Cn07Cgptb2R1bGUuZXhwb3J0cyA9IEphdmFTY3JpcHQ7Cgp9LHsiLi9hbm9ueW1vdXMiOjQ1LCIuL2RpbWVuc2lvbiI6NTUsIi4vanMtZXZhbC1ub2RlIjo2MywiLi9xdW90ZWQiOjcyfV0sNjM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgVmFyaWFibGUgPSByZXF1aXJlKCIuL3ZhcmlhYmxlIik7Cgp2YXIgSnNFdmFsTm9kZSA9IGZ1bmN0aW9uKCkgewp9OwpKc0V2YWxOb2RlLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CgpKc0V2YWxOb2RlLnByb3RvdHlwZS5ldmFsdWF0ZUphdmFTY3JpcHQgPSBmdW5jdGlvbiAoZXhwcmVzc2lvbiwgY29udGV4dCkgewogICAgdmFyIHJlc3VsdCwKICAgICAgICB0aGF0ID0gdGhpcywKICAgICAgICBldmFsQ29udGV4dCA9IHt9OwoKICAgIGlmIChjb250ZXh0LmphdmFzY3JpcHRFbmFibGVkICE9PSB1bmRlZmluZWQgJiYgIWNvbnRleHQuamF2YXNjcmlwdEVuYWJsZWQpIHsKICAgICAgICB0aHJvdyB7IG1lc3NhZ2U6ICJZb3UgYXJlIHVzaW5nIEphdmFTY3JpcHQsIHdoaWNoIGhhcyBiZWVuIGRpc2FibGVkLiIsCiAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLmN1cnJlbnRGaWxlSW5mby5maWxlbmFtZSwKICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXggfTsKICAgIH0KCiAgICBleHByZXNzaW9uID0gZXhwcmVzc2lvbi5yZXBsYWNlKC9AXHsoW1x3LV0rKVx9L2csIGZ1bmN0aW9uIChfLCBuYW1lKSB7CiAgICAgICAgcmV0dXJuIHRoYXQuanNpZnkobmV3IFZhcmlhYmxlKCdAJyArIG5hbWUsIHRoYXQuaW5kZXgsIHRoYXQuY3VycmVudEZpbGVJbmZvKS5ldmFsKGNvbnRleHQpKTsKICAgIH0pOwoKICAgIHRyeSB7CiAgICAgICAgZXhwcmVzc2lvbiA9IG5ldyBGdW5jdGlvbigncmV0dXJuICgnICsgZXhwcmVzc2lvbiArICcpJyk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiAiSmF2YVNjcmlwdCBldmFsdWF0aW9uIGVycm9yOiAiICsgZS5tZXNzYWdlICsgIiBmcm9tIGAiICsgZXhwcmVzc2lvbiArICJgIiAsCiAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLmN1cnJlbnRGaWxlSW5mby5maWxlbmFtZSwKICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXggfTsKICAgIH0KCiAgICB2YXIgdmFyaWFibGVzID0gY29udGV4dC5mcmFtZXNbMF0udmFyaWFibGVzKCk7CiAgICBmb3IgKHZhciBrIGluIHZhcmlhYmxlcykgewogICAgICAgIGlmICh2YXJpYWJsZXMuaGFzT3duUHJvcGVydHkoaykpIHsKICAgICAgICAgICAgLypqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSAqLwogICAgICAgICAgICBldmFsQ29udGV4dFtrLnNsaWNlKDEpXSA9IHsKICAgICAgICAgICAgICAgIHZhbHVlOiB2YXJpYWJsZXNba10udmFsdWUsCiAgICAgICAgICAgICAgICB0b0pTOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuZXZhbChjb250ZXh0KS50b0NTUygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICB0cnkgewogICAgICAgIHJlc3VsdCA9IGV4cHJlc3Npb24uY2FsbChldmFsQ29udGV4dCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiAiSmF2YVNjcmlwdCBldmFsdWF0aW9uIGVycm9yOiAnIiArIGUubmFtZSArICc6ICcgKyBlLm1lc3NhZ2UucmVwbGFjZSgvWyJdL2csICInIikgKyAiJyIgLAogICAgICAgICAgICBmaWxlbmFtZTogdGhpcy5jdXJyZW50RmlsZUluZm8uZmlsZW5hbWUsCiAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4IH07CiAgICB9CiAgICByZXR1cm4gcmVzdWx0Owp9OwpKc0V2YWxOb2RlLnByb3RvdHlwZS5qc2lmeSA9IGZ1bmN0aW9uIChvYmopIHsKICAgIGlmIChBcnJheS5pc0FycmF5KG9iai52YWx1ZSkgJiYgKG9iai52YWx1ZS5sZW5ndGggPiAxKSkgewogICAgICAgIHJldHVybiAnWycgKyBvYmoudmFsdWUubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LnRvQ1NTKCk7IH0pLmpvaW4oJywgJykgKyAnXSc7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBvYmoudG9DU1MoKTsKICAgIH0KfTsKCm1vZHVsZS5leHBvcnRzID0gSnNFdmFsTm9kZTsKCn0seyIuL25vZGUiOjY5LCIuL3ZhcmlhYmxlIjo4MX1dLDY0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKTsKCnZhciBLZXl3b3JkID0gZnVuY3Rpb24gKHZhbHVlKSB7IHRoaXMudmFsdWUgPSB2YWx1ZTsgfTsKS2V5d29yZC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpLZXl3b3JkLnByb3RvdHlwZS50eXBlID0gIktleXdvcmQiOwpLZXl3b3JkLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICBpZiAodGhpcy52YWx1ZSA9PT0gJyUnKSB7IHRocm93IHsgdHlwZTogIlN5bnRheCIsIG1lc3NhZ2U6ICJJbnZhbGlkICUgd2l0aG91dCBudW1iZXIiIH07IH0KICAgIG91dHB1dC5hZGQodGhpcy52YWx1ZSk7Cn07CgpLZXl3b3JkLlRydWUgPSBuZXcgS2V5d29yZCgndHJ1ZScpOwpLZXl3b3JkLkZhbHNlID0gbmV3IEtleXdvcmQoJ2ZhbHNlJyk7Cgptb2R1bGUuZXhwb3J0cyA9IEtleXdvcmQ7Cgp9LHsiLi9ub2RlIjo2OX1dLDY1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIFJ1bGVzZXQgPSByZXF1aXJlKCIuL3J1bGVzZXQiKSwKICAgIFZhbHVlID0gcmVxdWlyZSgiLi92YWx1ZSIpLAogICAgU2VsZWN0b3IgPSByZXF1aXJlKCIuL3NlbGVjdG9yIiksCiAgICBBbm9ueW1vdXMgPSByZXF1aXJlKCIuL2Fub255bW91cyIpLAogICAgRXhwcmVzc2lvbiA9IHJlcXVpcmUoIi4vZXhwcmVzc2lvbiIpLAogICAgRGlyZWN0aXZlID0gcmVxdWlyZSgiLi9kaXJlY3RpdmUiKTsKCnZhciBNZWRpYSA9IGZ1bmN0aW9uICh2YWx1ZSwgZmVhdHVyZXMsIGluZGV4LCBjdXJyZW50RmlsZUluZm8pIHsKICAgIHRoaXMuaW5kZXggPSBpbmRleDsKICAgIHRoaXMuY3VycmVudEZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwoKICAgIHZhciBzZWxlY3RvcnMgPSAobmV3IFNlbGVjdG9yKFtdLCBudWxsLCBudWxsLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbykpLmNyZWF0ZUVtcHR5U2VsZWN0b3JzKCk7CgogICAgdGhpcy5mZWF0dXJlcyA9IG5ldyBWYWx1ZShmZWF0dXJlcyk7CiAgICB0aGlzLnJ1bGVzID0gW25ldyBSdWxlc2V0KHNlbGVjdG9ycywgdmFsdWUpXTsKICAgIHRoaXMucnVsZXNbMF0uYWxsb3dJbXBvcnRzID0gdHJ1ZTsKfTsKTWVkaWEucHJvdG90eXBlID0gbmV3IERpcmVjdGl2ZSgpOwpNZWRpYS5wcm90b3R5cGUudHlwZSA9ICJNZWRpYSI7Ck1lZGlhLnByb3RvdHlwZS5pc1J1bGVzZXRMaWtlID0gdHJ1ZTsKTWVkaWEucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICBpZiAodGhpcy5mZWF0dXJlcykgewogICAgICAgIHRoaXMuZmVhdHVyZXMgPSB2aXNpdG9yLnZpc2l0KHRoaXMuZmVhdHVyZXMpOwogICAgfQogICAgaWYgKHRoaXMucnVsZXMpIHsKICAgICAgICB0aGlzLnJ1bGVzID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMucnVsZXMpOwogICAgfQp9OwpNZWRpYS5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgb3V0cHV0LmFkZCgnQG1lZGlhICcsIHRoaXMuY3VycmVudEZpbGVJbmZvLCB0aGlzLmluZGV4KTsKICAgIHRoaXMuZmVhdHVyZXMuZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICB0aGlzLm91dHB1dFJ1bGVzZXQoY29udGV4dCwgb3V0cHV0LCB0aGlzLnJ1bGVzKTsKfTsKTWVkaWEucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgaWYgKCFjb250ZXh0Lm1lZGlhQmxvY2tzKSB7CiAgICAgICAgY29udGV4dC5tZWRpYUJsb2NrcyA9IFtdOwogICAgICAgIGNvbnRleHQubWVkaWFQYXRoID0gW107CiAgICB9CgogICAgdmFyIG1lZGlhID0gbmV3IE1lZGlhKG51bGwsIFtdLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbyk7CiAgICBpZiAodGhpcy5kZWJ1Z0luZm8pIHsKICAgICAgICB0aGlzLnJ1bGVzWzBdLmRlYnVnSW5mbyA9IHRoaXMuZGVidWdJbmZvOwogICAgICAgIG1lZGlhLmRlYnVnSW5mbyA9IHRoaXMuZGVidWdJbmZvOwogICAgfQogICAgdmFyIHN0cmljdE1hdGhCeXBhc3MgPSBmYWxzZTsKICAgIGlmICghY29udGV4dC5zdHJpY3RNYXRoKSB7CiAgICAgICAgc3RyaWN0TWF0aEJ5cGFzcyA9IHRydWU7CiAgICAgICAgY29udGV4dC5zdHJpY3RNYXRoID0gdHJ1ZTsKICAgIH0KICAgIHRyeSB7CiAgICAgICAgbWVkaWEuZmVhdHVyZXMgPSB0aGlzLmZlYXR1cmVzLmV2YWwoY29udGV4dCk7CiAgICB9CiAgICBmaW5hbGx5IHsKICAgICAgICBpZiAoc3RyaWN0TWF0aEJ5cGFzcykgewogICAgICAgICAgICBjb250ZXh0LnN0cmljdE1hdGggPSBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgY29udGV4dC5tZWRpYVBhdGgucHVzaChtZWRpYSk7CiAgICBjb250ZXh0Lm1lZGlhQmxvY2tzLnB1c2gobWVkaWEpOwoKICAgIHRoaXMucnVsZXNbMF0uZnVuY3Rpb25SZWdpc3RyeSA9IGNvbnRleHQuZnJhbWVzWzBdLmZ1bmN0aW9uUmVnaXN0cnkuaW5oZXJpdCgpOwogICAgY29udGV4dC5mcmFtZXMudW5zaGlmdCh0aGlzLnJ1bGVzWzBdKTsKICAgIG1lZGlhLnJ1bGVzID0gW3RoaXMucnVsZXNbMF0uZXZhbChjb250ZXh0KV07CiAgICBjb250ZXh0LmZyYW1lcy5zaGlmdCgpOwoKICAgIGNvbnRleHQubWVkaWFQYXRoLnBvcCgpOwoKICAgIHJldHVybiBjb250ZXh0Lm1lZGlhUGF0aC5sZW5ndGggPT09IDAgPyBtZWRpYS5ldmFsVG9wKGNvbnRleHQpIDoKICAgICAgICAgICAgICAgIG1lZGlhLmV2YWxOZXN0ZWQoY29udGV4dCk7Cn07Ck1lZGlhLnByb3RvdHlwZS5ldmFsVG9wID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciByZXN1bHQgPSB0aGlzOwoKICAgIC8vIFJlbmRlciBhbGwgZGVwZW5kZW50IE1lZGlhIGJsb2Nrcy4KICAgIGlmIChjb250ZXh0Lm1lZGlhQmxvY2tzLmxlbmd0aCA+IDEpIHsKICAgICAgICB2YXIgc2VsZWN0b3JzID0gKG5ldyBTZWxlY3RvcihbXSwgbnVsbCwgbnVsbCwgdGhpcy5pbmRleCwgdGhpcy5jdXJyZW50RmlsZUluZm8pKS5jcmVhdGVFbXB0eVNlbGVjdG9ycygpOwogICAgICAgIHJlc3VsdCA9IG5ldyBSdWxlc2V0KHNlbGVjdG9ycywgY29udGV4dC5tZWRpYUJsb2Nrcyk7CiAgICAgICAgcmVzdWx0Lm11bHRpTWVkaWEgPSB0cnVlOwogICAgfQoKICAgIGRlbGV0ZSBjb250ZXh0Lm1lZGlhQmxvY2tzOwogICAgZGVsZXRlIGNvbnRleHQubWVkaWFQYXRoOwoKICAgIHJldHVybiByZXN1bHQ7Cn07Ck1lZGlhLnByb3RvdHlwZS5ldmFsTmVzdGVkID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciBpLCB2YWx1ZSwKICAgICAgICBwYXRoID0gY29udGV4dC5tZWRpYVBhdGguY29uY2F0KFt0aGlzXSk7CgogICAgLy8gRXh0cmFjdCB0aGUgbWVkaWEtcXVlcnkgY29uZGl0aW9ucyBzZXBhcmF0ZWQgd2l0aCBgLGAgKE9SKS4KICAgIGZvciAoaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFsdWUgPSBwYXRoW2ldLmZlYXR1cmVzIGluc3RhbmNlb2YgVmFsdWUgPwogICAgICAgICAgICAgICAgICAgIHBhdGhbaV0uZmVhdHVyZXMudmFsdWUgOiBwYXRoW2ldLmZlYXR1cmVzOwogICAgICAgIHBhdGhbaV0gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTsKICAgIH0KCiAgICAvLyBUcmFjZSBhbGwgcGVybXV0YXRpb25zIHRvIGdlbmVyYXRlIHRoZSByZXN1bHRpbmcgbWVkaWEtcXVlcnkuCiAgICAvLwogICAgLy8gKGEsIGIgYW5kIGMpIHdpdGggbmVzdGVkIChkLCBlKSAtPgogICAgLy8gICAgYSBhbmQgZAogICAgLy8gICAgYSBhbmQgZQogICAgLy8gICAgYiBhbmQgYyBhbmQgZAogICAgLy8gICAgYiBhbmQgYyBhbmQgZQogICAgdGhpcy5mZWF0dXJlcyA9IG5ldyBWYWx1ZSh0aGlzLnBlcm11dGUocGF0aCkubWFwKGZ1bmN0aW9uIChwYXRoKSB7CiAgICAgICAgcGF0aCA9IHBhdGgubWFwKGZ1bmN0aW9uIChmcmFnbWVudCkgewogICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQudG9DU1MgPyBmcmFnbWVudCA6IG5ldyBBbm9ueW1vdXMoZnJhZ21lbnQpOwogICAgICAgIH0pOwoKICAgICAgICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHsKICAgICAgICAgICAgcGF0aC5zcGxpY2UoaSwgMCwgbmV3IEFub255bW91cygiYW5kIikpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBFeHByZXNzaW9uKHBhdGgpOwogICAgfSkpOwoKICAgIC8vIEZha2UgYSB0cmVlLW5vZGUgdGhhdCBkb2Vzbid0IG91dHB1dCBhbnl0aGluZy4KICAgIHJldHVybiBuZXcgUnVsZXNldChbXSwgW10pOwp9OwpNZWRpYS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIChhcnIpIHsKICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgfSBlbHNlIGlmIChhcnIubGVuZ3RoID09PSAxKSB7CiAgICAgICAgcmV0dXJuIGFyclswXTsKICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgICAgIHZhciByZXN0ID0gdGhpcy5wZXJtdXRlKGFyci5zbGljZSgxKSk7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyWzBdLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbYXJyWzBdW2pdXS5jb25jYXQocmVzdFtpXSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9Cn07Ck1lZGlhLnByb3RvdHlwZS5idWJibGVTZWxlY3RvcnMgPSBmdW5jdGlvbiAoc2VsZWN0b3JzKSB7CiAgICBpZiAoIXNlbGVjdG9ycykgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIHRoaXMucnVsZXMgPSBbbmV3IFJ1bGVzZXQoc2VsZWN0b3JzLnNsaWNlKDApLCBbdGhpcy5ydWxlc1swXV0pXTsKfTsKbW9kdWxlLmV4cG9ydHMgPSBNZWRpYTsKCn0seyIuL2Fub255bW91cyI6NDUsIi4vZGlyZWN0aXZlIjo1NiwiLi9leHByZXNzaW9uIjo1OCwiLi9ydWxlc2V0Ijo3NSwiLi9zZWxlY3RvciI6NzYsIi4vdmFsdWUiOjgwfV0sNjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgU2VsZWN0b3IgPSByZXF1aXJlKCIuL3NlbGVjdG9yIiksCiAgICBNaXhpbkRlZmluaXRpb24gPSByZXF1aXJlKCIuL21peGluLWRlZmluaXRpb24iKSwKICAgIGRlZmF1bHRGdW5jID0gcmVxdWlyZSgiLi4vZnVuY3Rpb25zL2RlZmF1bHQiKTsKCnZhciBNaXhpbkNhbGwgPSBmdW5jdGlvbiAoZWxlbWVudHMsIGFyZ3MsIGluZGV4LCBjdXJyZW50RmlsZUluZm8sIGltcG9ydGFudCkgewogICAgdGhpcy5zZWxlY3RvciA9IG5ldyBTZWxlY3RvcihlbGVtZW50cyk7CiAgICB0aGlzLmFyZ3VtZW50cyA9IGFyZ3MgfHwgW107CiAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgICB0aGlzLmN1cnJlbnRGaWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKICAgIHRoaXMuaW1wb3J0YW50ID0gaW1wb3J0YW50Owp9OwpNaXhpbkNhbGwucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKTWl4aW5DYWxsLnByb3RvdHlwZS50eXBlID0gIk1peGluQ2FsbCI7Ck1peGluQ2FsbC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIGlmICh0aGlzLnNlbGVjdG9yKSB7CiAgICAgICAgdGhpcy5zZWxlY3RvciA9IHZpc2l0b3IudmlzaXQodGhpcy5zZWxlY3Rvcik7CiAgICB9CiAgICBpZiAodGhpcy5hcmd1bWVudHMubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5hcmd1bWVudHMgPSB2aXNpdG9yLnZpc2l0QXJyYXkodGhpcy5hcmd1bWVudHMpOwogICAgfQp9OwpNaXhpbkNhbGwucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgdmFyIG1peGlucywgbWl4aW4sIG1peGluUGF0aCwgYXJncyA9IFtdLCBhcmcsIGFyZ1ZhbHVlLAogICAgICAgIHJ1bGVzID0gW10sIHJ1bGUsIG1hdGNoID0gZmFsc2UsIGksIG0sIGYsIGlzUmVjdXJzaXZlLCBpc09uZUZvdW5kLAogICAgICAgIGNhbmRpZGF0ZXMgPSBbXSwgY2FuZGlkYXRlLCBjb25kaXRpb25SZXN1bHQgPSBbXSwgZGVmYXVsdFJlc3VsdCwgZGVmRmFsc2VFaXRoZXJDYXNlID0gLTEsCiAgICAgICAgZGVmTm9uZSA9IDAsIGRlZlRydWUgPSAxLCBkZWZGYWxzZSA9IDIsIGNvdW50LCBvcmlnaW5hbFJ1bGVzZXQsIG5vQXJndW1lbnRzRmlsdGVyOwoKICAgIGZ1bmN0aW9uIGNhbGNEZWZHcm91cChtaXhpbiwgbWl4aW5QYXRoKSB7CiAgICAgICAgdmFyIGYsIHAsIG5hbWVzcGFjZTsKCiAgICAgICAgZm9yIChmID0gMDsgZiA8IDI7IGYrKykgewogICAgICAgICAgICBjb25kaXRpb25SZXN1bHRbZl0gPSB0cnVlOwogICAgICAgICAgICBkZWZhdWx0RnVuYy52YWx1ZShmKTsKICAgICAgICAgICAgZm9yIChwID0gMDsgcCA8IG1peGluUGF0aC5sZW5ndGggJiYgY29uZGl0aW9uUmVzdWx0W2ZdOyBwKyspIHsKICAgICAgICAgICAgICAgIG5hbWVzcGFjZSA9IG1peGluUGF0aFtwXTsKICAgICAgICAgICAgICAgIGlmIChuYW1lc3BhY2UubWF0Y2hDb25kaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25SZXN1bHRbZl0gPSBjb25kaXRpb25SZXN1bHRbZl0gJiYgbmFtZXNwYWNlLm1hdGNoQ29uZGl0aW9uKG51bGwsIGNvbnRleHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtaXhpbi5tYXRjaENvbmRpdGlvbikgewogICAgICAgICAgICAgICAgY29uZGl0aW9uUmVzdWx0W2ZdID0gY29uZGl0aW9uUmVzdWx0W2ZdICYmIG1peGluLm1hdGNoQ29uZGl0aW9uKGFyZ3MsIGNvbnRleHQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChjb25kaXRpb25SZXN1bHRbMF0gfHwgY29uZGl0aW9uUmVzdWx0WzFdKSB7CiAgICAgICAgICAgIGlmIChjb25kaXRpb25SZXN1bHRbMF0gIT0gY29uZGl0aW9uUmVzdWx0WzFdKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uUmVzdWx0WzFdID8KICAgICAgICAgICAgICAgICAgICBkZWZUcnVlIDogZGVmRmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBkZWZOb25lOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVmRmFsc2VFaXRoZXJDYXNlOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGFyZyA9IHRoaXMuYXJndW1lbnRzW2ldOwogICAgICAgIGFyZ1ZhbHVlID0gYXJnLnZhbHVlLmV2YWwoY29udGV4dCk7CiAgICAgICAgaWYgKGFyZy5leHBhbmQgJiYgQXJyYXkuaXNBcnJheShhcmdWYWx1ZS52YWx1ZSkpIHsKICAgICAgICAgICAgYXJnVmFsdWUgPSBhcmdWYWx1ZS52YWx1ZTsKICAgICAgICAgICAgZm9yIChtID0gMDsgbSA8IGFyZ1ZhbHVlLmxlbmd0aDsgbSsrKSB7CiAgICAgICAgICAgICAgICBhcmdzLnB1c2goe3ZhbHVlOiBhcmdWYWx1ZVttXX0pOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYXJncy5wdXNoKHtuYW1lOiBhcmcubmFtZSwgdmFsdWU6IGFyZ1ZhbHVlfSk7CiAgICAgICAgfQogICAgfQoKICAgIG5vQXJndW1lbnRzRmlsdGVyID0gZnVuY3Rpb24ocnVsZSkge3JldHVybiBydWxlLm1hdGNoQXJncyhudWxsLCBjb250ZXh0KTt9OwoKICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZXh0LmZyYW1lcy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmICgobWl4aW5zID0gY29udGV4dC5mcmFtZXNbaV0uZmluZCh0aGlzLnNlbGVjdG9yLCBudWxsLCBub0FyZ3VtZW50c0ZpbHRlcikpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgaXNPbmVGb3VuZCA9IHRydWU7CgogICAgICAgICAgICAvLyBUbyBtYWtlIGBkZWZhdWx0KClgIGZ1bmN0aW9uIGluZGVwZW5kZW50IG9mIGRlZmluaXRpb24gb3JkZXIgd2UgaGF2ZSB0d28gInN1YnBhc3NlcyIgaGVyZS4KICAgICAgICAgICAgLy8gQXQgZmlyc3Qgd2UgZXZhbHVhdGUgZWFjaCBndWFyZCAqdHdpY2UqICh3aXRoIGBkZWZhdWx0KCkgPT0gdHJ1ZWAgYW5kIGBkZWZhdWx0KCkgPT0gZmFsc2VgKSwKICAgICAgICAgICAgLy8gYW5kIGJ1aWxkIGNhbmRpZGF0ZSBsaXN0IHdpdGggY29ycmVzcG9uZGluZyBmbGFncy4gVGhlbiwgd2hlbiB3ZSBrbm93IGFsbCBwb3NzaWJsZSBtYXRjaGVzLAogICAgICAgICAgICAvLyB3ZSBtYWtlIGEgZmluYWwgZGVjaXNpb24uCgogICAgICAgICAgICBmb3IgKG0gPSAwOyBtIDwgbWl4aW5zLmxlbmd0aDsgbSsrKSB7CiAgICAgICAgICAgICAgICBtaXhpbiA9IG1peGluc1ttXS5ydWxlOwogICAgICAgICAgICAgICAgbWl4aW5QYXRoID0gbWl4aW5zW21dLnBhdGg7CiAgICAgICAgICAgICAgICBpc1JlY3Vyc2l2ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgZm9yIChmID0gMDsgZiA8IGNvbnRleHQuZnJhbWVzLmxlbmd0aDsgZisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCghKG1peGluIGluc3RhbmNlb2YgTWl4aW5EZWZpbml0aW9uKSkgJiYgbWl4aW4gPT09IChjb250ZXh0LmZyYW1lc1tmXS5vcmlnaW5hbFJ1bGVzZXQgfHwgY29udGV4dC5mcmFtZXNbZl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVjdXJzaXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGlzUmVjdXJzaXZlKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKG1peGluLm1hdGNoQXJncyhhcmdzLCBjb250ZXh0KSkgewogICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHttaXhpbjogbWl4aW4sIGdyb3VwOiBjYWxjRGVmR3JvdXAobWl4aW4sIG1peGluUGF0aCl9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmdyb3VwICE9PSBkZWZGYWxzZUVpdGhlckNhc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGRlZmF1bHRGdW5jLnJlc2V0KCk7CgogICAgICAgICAgICBjb3VudCA9IFswLCAwLCAwXTsKICAgICAgICAgICAgZm9yIChtID0gMDsgbSA8IGNhbmRpZGF0ZXMubGVuZ3RoOyBtKyspIHsKICAgICAgICAgICAgICAgIGNvdW50W2NhbmRpZGF0ZXNbbV0uZ3JvdXBdKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChjb3VudFtkZWZOb25lXSA+IDApIHsKICAgICAgICAgICAgICAgIGRlZmF1bHRSZXN1bHQgPSBkZWZGYWxzZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRlZmF1bHRSZXN1bHQgPSBkZWZUcnVlOwogICAgICAgICAgICAgICAgaWYgKChjb3VudFtkZWZUcnVlXSArIGNvdW50W2RlZkZhbHNlXSkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAnUnVudGltZScsCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdBbWJpZ3VvdXMgdXNlIG9mIGBkZWZhdWx0KClgIGZvdW5kIHdoZW4gbWF0Y2hpbmcgZm9yIGAnICsgdGhpcy5mb3JtYXQoYXJncykgKyAnYCcsCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4LCBmaWxlbmFtZTogdGhpcy5jdXJyZW50RmlsZUluZm8uZmlsZW5hbWUgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIChtID0gMDsgbSA8IGNhbmRpZGF0ZXMubGVuZ3RoOyBtKyspIHsKICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbbV0uZ3JvdXA7CiAgICAgICAgICAgICAgICBpZiAoKGNhbmRpZGF0ZSA9PT0gZGVmTm9uZSkgfHwgKGNhbmRpZGF0ZSA9PT0gZGVmYXVsdFJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBtaXhpbiA9IGNhbmRpZGF0ZXNbbV0ubWl4aW47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG1peGluIGluc3RhbmNlb2YgTWl4aW5EZWZpbml0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxSdWxlc2V0ID0gbWl4aW4ub3JpZ2luYWxSdWxlc2V0IHx8IG1peGluOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4gPSBuZXcgTWl4aW5EZWZpbml0aW9uKCIiLCBbXSwgbWl4aW4ucnVsZXMsIG51bGwsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peGluLm9yaWdpbmFsUnVsZXNldCA9IG9yaWdpbmFsUnVsZXNldDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzLCBtaXhpbi5ldmFsQ2FsbChjb250ZXh0LCBhcmdzLCB0aGlzLmltcG9ydGFudCkucnVsZXMpOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiBlLm1lc3NhZ2UsIGluZGV4OiB0aGlzLmluZGV4LCBmaWxlbmFtZTogdGhpcy5jdXJyZW50RmlsZUluZm8uZmlsZW5hbWUsIHN0YWNrOiBlLnN0YWNrIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAobWF0Y2gpIHsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50RmlsZUluZm8gfHwgIXRoaXMuY3VycmVudEZpbGVJbmZvLnJlZmVyZW5jZSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBydWxlID0gcnVsZXNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlLm1hcmtSZWZlcmVuY2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLm1hcmtSZWZlcmVuY2VkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZXM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoaXNPbmVGb3VuZCkgewogICAgICAgIHRocm93IHsgdHlwZTogICAgJ1J1bnRpbWUnLAogICAgICAgICAgICBtZXNzYWdlOiAnTm8gbWF0Y2hpbmcgZGVmaW5pdGlvbiB3YXMgZm91bmQgZm9yIGAnICsgdGhpcy5mb3JtYXQoYXJncykgKyAnYCcsCiAgICAgICAgICAgIGluZGV4OiAgIHRoaXMuaW5kZXgsIGZpbGVuYW1lOiB0aGlzLmN1cnJlbnRGaWxlSW5mby5maWxlbmFtZSB9OwogICAgfSBlbHNlIHsKICAgICAgICB0aHJvdyB7IHR5cGU6ICAgICdOYW1lJywKICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5zZWxlY3Rvci50b0NTUygpLnRyaW0oKSArICIgaXMgdW5kZWZpbmVkIiwKICAgICAgICAgICAgaW5kZXg6ICAgdGhpcy5pbmRleCwgZmlsZW5hbWU6IHRoaXMuY3VycmVudEZpbGVJbmZvLmZpbGVuYW1lIH07CiAgICB9Cn07Ck1peGluQ2FsbC5wcm90b3R5cGUuZm9ybWF0ID0gZnVuY3Rpb24gKGFyZ3MpIHsKICAgIHJldHVybiB0aGlzLnNlbGVjdG9yLnRvQ1NTKCkudHJpbSgpICsgJygnICsKICAgICAgICAoYXJncyA/IGFyZ3MubWFwKGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgIHZhciBhcmdWYWx1ZSA9ICIiOwogICAgICAgICAgICBpZiAoYS5uYW1lKSB7CiAgICAgICAgICAgICAgICBhcmdWYWx1ZSArPSBhLm5hbWUgKyAiOiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGEudmFsdWUudG9DU1MpIHsKICAgICAgICAgICAgICAgIGFyZ1ZhbHVlICs9IGEudmFsdWUudG9DU1MoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGFyZ1ZhbHVlICs9ICI/Pz8iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBhcmdWYWx1ZTsKICAgICAgICB9KS5qb2luKCcsICcpIDogIiIpICsgIikiOwp9Owptb2R1bGUuZXhwb3J0cyA9IE1peGluQ2FsbDsKCn0seyIuLi9mdW5jdGlvbnMvZGVmYXVsdCI6MTksIi4vbWl4aW4tZGVmaW5pdGlvbiI6NjcsIi4vbm9kZSI6NjksIi4vc2VsZWN0b3IiOjc2fV0sNjc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgU2VsZWN0b3IgPSByZXF1aXJlKCIuL3NlbGVjdG9yIiksCiAgICBFbGVtZW50ID0gcmVxdWlyZSgiLi9lbGVtZW50IiksCiAgICBSdWxlc2V0ID0gcmVxdWlyZSgiLi9ydWxlc2V0IiksCiAgICBSdWxlID0gcmVxdWlyZSgiLi9ydWxlIiksCiAgICBFeHByZXNzaW9uID0gcmVxdWlyZSgiLi9leHByZXNzaW9uIiksCiAgICBjb250ZXh0cyA9IHJlcXVpcmUoIi4uL2NvbnRleHRzIik7Cgp2YXIgRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMsIHJ1bGVzLCBjb25kaXRpb24sIHZhcmlhZGljLCBmcmFtZXMpIHsKICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICB0aGlzLnNlbGVjdG9ycyA9IFtuZXcgU2VsZWN0b3IoW25ldyBFbGVtZW50KG51bGwsIG5hbWUsIHRoaXMuaW5kZXgsIHRoaXMuY3VycmVudEZpbGVJbmZvKV0pXTsKICAgIHRoaXMucGFyYW1zID0gcGFyYW1zOwogICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247CiAgICB0aGlzLnZhcmlhZGljID0gdmFyaWFkaWM7CiAgICB0aGlzLmFyaXR5ID0gcGFyYW1zLmxlbmd0aDsKICAgIHRoaXMucnVsZXMgPSBydWxlczsKICAgIHRoaXMuX2xvb2t1cHMgPSB7fTsKICAgIHZhciBvcHRpb25hbFBhcmFtZXRlcnMgPSBbXTsKICAgIHRoaXMucmVxdWlyZWQgPSBwYXJhbXMucmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgcCkgewogICAgICAgIGlmICghcC5uYW1lIHx8IChwLm5hbWUgJiYgIXAudmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiBjb3VudCArIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBvcHRpb25hbFBhcmFtZXRlcnMucHVzaChwLm5hbWUpOwogICAgICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgICAgfQogICAgfSwgMCk7CiAgICB0aGlzLm9wdGlvbmFsUGFyYW1ldGVycyA9IG9wdGlvbmFsUGFyYW1ldGVyczsKICAgIHRoaXMuZnJhbWVzID0gZnJhbWVzOwp9OwpEZWZpbml0aW9uLnByb3RvdHlwZSA9IG5ldyBSdWxlc2V0KCk7CkRlZmluaXRpb24ucHJvdG90eXBlLnR5cGUgPSAiTWl4aW5EZWZpbml0aW9uIjsKRGVmaW5pdGlvbi5wcm90b3R5cGUuZXZhbEZpcnN0ID0gdHJ1ZTsKRGVmaW5pdGlvbi5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtcy5sZW5ndGgpIHsKICAgICAgICB0aGlzLnBhcmFtcyA9IHZpc2l0b3IudmlzaXRBcnJheSh0aGlzLnBhcmFtcyk7CiAgICB9CiAgICB0aGlzLnJ1bGVzID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMucnVsZXMpOwogICAgaWYgKHRoaXMuY29uZGl0aW9uKSB7CiAgICAgICAgdGhpcy5jb25kaXRpb24gPSB2aXNpdG9yLnZpc2l0KHRoaXMuY29uZGl0aW9uKTsKICAgIH0KfTsKRGVmaW5pdGlvbi5wcm90b3R5cGUuZXZhbFBhcmFtcyA9IGZ1bmN0aW9uIChjb250ZXh0LCBtaXhpbkVudiwgYXJncywgZXZhbGRBcmd1bWVudHMpIHsKICAgIC8qanNoaW50IGJvc3M6dHJ1ZSAqLwogICAgdmFyIGZyYW1lID0gbmV3IFJ1bGVzZXQobnVsbCwgbnVsbCksCiAgICAgICAgdmFyYXJncywgYXJnLAogICAgICAgIHBhcmFtcyA9IHRoaXMucGFyYW1zLnNsaWNlKDApLAogICAgICAgIGksIGosIHZhbCwgbmFtZSwgaXNOYW1lZEZvdW5kLCBhcmdJbmRleCwgYXJnc0xlbmd0aCA9IDA7CgogICAgaWYgKG1peGluRW52LmZyYW1lcyAmJiBtaXhpbkVudi5mcmFtZXNbMF0gJiYgbWl4aW5FbnYuZnJhbWVzWzBdLmZ1bmN0aW9uUmVnaXN0cnkpIHsKICAgICAgICBmcmFtZS5mdW5jdGlvblJlZ2lzdHJ5ID0gbWl4aW5FbnYuZnJhbWVzWzBdLmZ1bmN0aW9uUmVnaXN0cnkuaW5oZXJpdCgpOwogICAgfQogICAgbWl4aW5FbnYgPSBuZXcgY29udGV4dHMuRXZhbChtaXhpbkVudiwgW2ZyYW1lXS5jb25jYXQobWl4aW5FbnYuZnJhbWVzKSk7CgogICAgaWYgKGFyZ3MpIHsKICAgICAgICBhcmdzID0gYXJncy5zbGljZSgwKTsKICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgYXJnID0gYXJnc1tpXTsKICAgICAgICAgICAgaWYgKG5hbWUgPSAoYXJnICYmIGFyZy5uYW1lKSkgewogICAgICAgICAgICAgICAgaXNOYW1lZEZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgcGFyYW1zLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFldmFsZEFyZ3VtZW50c1tqXSAmJiBuYW1lID09PSBwYXJhbXNbal0ubmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICBldmFsZEFyZ3VtZW50c1tqXSA9IGFyZy52YWx1ZS5ldmFsKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5wcmVwZW5kUnVsZShuZXcgUnVsZShuYW1lLCBhcmcudmFsdWUuZXZhbChjb250ZXh0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpc05hbWVkRm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaXNOYW1lZEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgYXJncy5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdSdW50aW1lJywgbWVzc2FnZTogIk5hbWVkIGFyZ3VtZW50IGZvciAiICsgdGhpcy5uYW1lICsKICAgICAgICAgICAgICAgICAgICAgICAgJyAnICsgYXJnc1tpXS5uYW1lICsgJyBub3QgZm91bmQnIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBhcmdJbmRleCA9IDA7CiAgICBmb3IgKGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGV2YWxkQXJndW1lbnRzW2ldKSB7IGNvbnRpbnVlOyB9CgogICAgICAgIGFyZyA9IGFyZ3MgJiYgYXJnc1thcmdJbmRleF07CgogICAgICAgIGlmIChuYW1lID0gcGFyYW1zW2ldLm5hbWUpIHsKICAgICAgICAgICAgaWYgKHBhcmFtc1tpXS52YXJpYWRpYykgewogICAgICAgICAgICAgICAgdmFyYXJncyA9IFtdOwogICAgICAgICAgICAgICAgZm9yIChqID0gYXJnSW5kZXg7IGogPCBhcmdzTGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXJhcmdzLnB1c2goYXJnc1tqXS52YWx1ZS5ldmFsKGNvbnRleHQpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZyYW1lLnByZXBlbmRSdWxlKG5ldyBSdWxlKG5hbWUsIG5ldyBFeHByZXNzaW9uKHZhcmFyZ3MpLmV2YWwoY29udGV4dCkpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhbCA9IGFyZyAmJiBhcmcudmFsdWU7CiAgICAgICAgICAgICAgICBpZiAodmFsKSB7CiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLmV2YWwoY29udGV4dCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcmFtc1tpXS52YWx1ZS5ldmFsKG1peGluRW52KTsKICAgICAgICAgICAgICAgICAgICBmcmFtZS5yZXNldENhY2hlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ1J1bnRpbWUnLCBtZXNzYWdlOiAid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgIiArIHRoaXMubmFtZSArCiAgICAgICAgICAgICAgICAgICAgICAgICcgKCcgKyBhcmdzTGVuZ3RoICsgJyBmb3IgJyArIHRoaXMuYXJpdHkgKyAnKScgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmcmFtZS5wcmVwZW5kUnVsZShuZXcgUnVsZShuYW1lLCB2YWwpKTsKICAgICAgICAgICAgICAgIGV2YWxkQXJndW1lbnRzW2ldID0gdmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAocGFyYW1zW2ldLnZhcmlhZGljICYmIGFyZ3MpIHsKICAgICAgICAgICAgZm9yIChqID0gYXJnSW5kZXg7IGogPCBhcmdzTGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGV2YWxkQXJndW1lbnRzW2pdID0gYXJnc1tqXS52YWx1ZS5ldmFsKGNvbnRleHQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGFyZ0luZGV4Kys7CiAgICB9CgogICAgcmV0dXJuIGZyYW1lOwp9OwpEZWZpbml0aW9uLnByb3RvdHlwZS5tYWtlSW1wb3J0YW50ID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgcnVsZXMgPSAhdGhpcy5ydWxlcyA/IHRoaXMucnVsZXMgOiB0aGlzLnJ1bGVzLm1hcChmdW5jdGlvbiAocikgewogICAgICAgIGlmIChyLm1ha2VJbXBvcnRhbnQpIHsKICAgICAgICAgICAgcmV0dXJuIHIubWFrZUltcG9ydGFudCh0cnVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICB9CiAgICB9KTsKICAgIHZhciByZXN1bHQgPSBuZXcgRGVmaW5pdGlvbiAodGhpcy5uYW1lLCB0aGlzLnBhcmFtcywgcnVsZXMsIHRoaXMuY29uZGl0aW9uLCB0aGlzLnZhcmlhZGljLCB0aGlzLmZyYW1lcyk7CiAgICByZXR1cm4gcmVzdWx0Owp9OwpEZWZpbml0aW9uLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHJldHVybiBuZXcgRGVmaW5pdGlvbih0aGlzLm5hbWUsIHRoaXMucGFyYW1zLCB0aGlzLnJ1bGVzLCB0aGlzLmNvbmRpdGlvbiwgdGhpcy52YXJpYWRpYywgdGhpcy5mcmFtZXMgfHwgY29udGV4dC5mcmFtZXMuc2xpY2UoMCkpOwp9OwpEZWZpbml0aW9uLnByb3RvdHlwZS5ldmFsQ2FsbCA9IGZ1bmN0aW9uIChjb250ZXh0LCBhcmdzLCBpbXBvcnRhbnQpIHsKICAgIHZhciBfYXJndW1lbnRzID0gW10sCiAgICAgICAgbWl4aW5GcmFtZXMgPSB0aGlzLmZyYW1lcyA/IHRoaXMuZnJhbWVzLmNvbmNhdChjb250ZXh0LmZyYW1lcykgOiBjb250ZXh0LmZyYW1lcywKICAgICAgICBmcmFtZSA9IHRoaXMuZXZhbFBhcmFtcyhjb250ZXh0LCBuZXcgY29udGV4dHMuRXZhbChjb250ZXh0LCBtaXhpbkZyYW1lcyksIGFyZ3MsIF9hcmd1bWVudHMpLAogICAgICAgIHJ1bGVzLCBydWxlc2V0OwoKICAgIGZyYW1lLnByZXBlbmRSdWxlKG5ldyBSdWxlKCdAYXJndW1lbnRzJywgbmV3IEV4cHJlc3Npb24oX2FyZ3VtZW50cykuZXZhbChjb250ZXh0KSkpOwoKICAgIHJ1bGVzID0gdGhpcy5ydWxlcy5zbGljZSgwKTsKCiAgICBydWxlc2V0ID0gbmV3IFJ1bGVzZXQobnVsbCwgcnVsZXMpOwogICAgcnVsZXNldC5vcmlnaW5hbFJ1bGVzZXQgPSB0aGlzOwogICAgcnVsZXNldCA9IHJ1bGVzZXQuZXZhbChuZXcgY29udGV4dHMuRXZhbChjb250ZXh0LCBbdGhpcywgZnJhbWVdLmNvbmNhdChtaXhpbkZyYW1lcykpKTsKICAgIGlmIChpbXBvcnRhbnQpIHsKICAgICAgICBydWxlc2V0ID0gcnVsZXNldC5tYWtlSW1wb3J0YW50KCk7CiAgICB9CiAgICByZXR1cm4gcnVsZXNldDsKfTsKRGVmaW5pdGlvbi5wcm90b3R5cGUubWF0Y2hDb25kaXRpb24gPSBmdW5jdGlvbiAoYXJncywgY29udGV4dCkgewogICAgaWYgKHRoaXMuY29uZGl0aW9uICYmICF0aGlzLmNvbmRpdGlvbi5ldmFsKAogICAgICAgIG5ldyBjb250ZXh0cy5FdmFsKGNvbnRleHQsCiAgICAgICAgICAgIFt0aGlzLmV2YWxQYXJhbXMoY29udGV4dCwgLyogdGhlIHBhcmFtZXRlciB2YXJpYWJsZXMqLwogICAgICAgICAgICAgICAgbmV3IGNvbnRleHRzLkV2YWwoY29udGV4dCwgdGhpcy5mcmFtZXMgPyB0aGlzLmZyYW1lcy5jb25jYXQoY29udGV4dC5mcmFtZXMpIDogY29udGV4dC5mcmFtZXMpLCBhcmdzLCBbXSldCiAgICAgICAgICAgIC5jb25jYXQodGhpcy5mcmFtZXMgfHwgW10pIC8vIHRoZSBwYXJlbnQgbmFtZXNwYWNlL21peGluIGZyYW1lcwogICAgICAgICAgICAuY29uY2F0KGNvbnRleHQuZnJhbWVzKSkpKSB7IC8vIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGZyYW1lcwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9OwpEZWZpbml0aW9uLnByb3RvdHlwZS5tYXRjaEFyZ3MgPSBmdW5jdGlvbiAoYXJncywgY29udGV4dCkgewogICAgdmFyIGFsbEFyZ3NDbnQgPSAoYXJncyAmJiBhcmdzLmxlbmd0aCkgfHwgMCwgbGVuLCBvcHRpb25hbFBhcmFtZXRlcnMgPSB0aGlzLm9wdGlvbmFsUGFyYW1ldGVyczsKICAgIHZhciByZXF1aXJlZEFyZ3NDbnQgPSAhYXJncyA/IDAgOiBhcmdzLnJlZHVjZShmdW5jdGlvbiAoY291bnQsIHApIHsKICAgICAgICBpZiAob3B0aW9uYWxQYXJhbWV0ZXJzLmluZGV4T2YocC5uYW1lKSA8IDApIHsKICAgICAgICAgICAgcmV0dXJuIGNvdW50ICsgMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgICAgfQogICAgfSwgMCk7CgogICAgaWYgKCEgdGhpcy52YXJpYWRpYykgewogICAgICAgIGlmIChyZXF1aXJlZEFyZ3NDbnQgPCB0aGlzLnJlcXVpcmVkKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKGFsbEFyZ3NDbnQgPiB0aGlzLnBhcmFtcy5sZW5ndGgpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHJlcXVpcmVkQXJnc0NudCA8ICh0aGlzLnJlcXVpcmVkIC0gMSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBjaGVjayBwYXR0ZXJucwogICAgbGVuID0gTWF0aC5taW4ocmVxdWlyZWRBcmdzQ250LCB0aGlzLmFyaXR5KTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgaWYgKCF0aGlzLnBhcmFtc1tpXS5uYW1lICYmICF0aGlzLnBhcmFtc1tpXS52YXJpYWRpYykgewogICAgICAgICAgICBpZiAoYXJnc1tpXS52YWx1ZS5ldmFsKGNvbnRleHQpLnRvQ1NTKCkgIT0gdGhpcy5wYXJhbXNbaV0udmFsdWUuZXZhbChjb250ZXh0KS50b0NTUygpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfTsKbW9kdWxlLmV4cG9ydHMgPSBEZWZpbml0aW9uOwoKfSx7Ii4uL2NvbnRleHRzIjoxMCwiLi9lbGVtZW50Ijo1NywiLi9leHByZXNzaW9uIjo1OCwiLi9ydWxlIjo3MywiLi9ydWxlc2V0Ijo3NSwiLi9zZWxlY3RvciI6NzZ9XSw2ODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBOb2RlID0gcmVxdWlyZSgiLi9ub2RlIiksCiAgICBPcGVyYXRpb24gPSByZXF1aXJlKCIuL29wZXJhdGlvbiIpLAogICAgRGltZW5zaW9uID0gcmVxdWlyZSgiLi9kaW1lbnNpb24iKTsKCnZhciBOZWdhdGl2ZSA9IGZ1bmN0aW9uIChub2RlKSB7CiAgICB0aGlzLnZhbHVlID0gbm9kZTsKfTsKTmVnYXRpdmUucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKTmVnYXRpdmUucHJvdG90eXBlLnR5cGUgPSAiTmVnYXRpdmUiOwpOZWdhdGl2ZS5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgb3V0cHV0LmFkZCgnLScpOwogICAgdGhpcy52YWx1ZS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKfTsKTmVnYXRpdmUucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgaWYgKGNvbnRleHQuaXNNYXRoT24oKSkgewogICAgICAgIHJldHVybiAobmV3IE9wZXJhdGlvbignKicsIFtuZXcgRGltZW5zaW9uKC0xKSwgdGhpcy52YWx1ZV0pKS5ldmFsKGNvbnRleHQpOwogICAgfQogICAgcmV0dXJuIG5ldyBOZWdhdGl2ZSh0aGlzLnZhbHVlLmV2YWwoY29udGV4dCkpOwp9Owptb2R1bGUuZXhwb3J0cyA9IE5lZ2F0aXZlOwoKfSx7Ii4vZGltZW5zaW9uIjo1NSwiLi9ub2RlIjo2OSwiLi9vcGVyYXRpb24iOjcwfV0sNjk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IGZ1bmN0aW9uKCkgewp9OwpOb2RlLnByb3RvdHlwZS50b0NTUyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICB2YXIgc3RycyA9IFtdOwogICAgdGhpcy5nZW5DU1MoY29udGV4dCwgewogICAgICAgIGFkZDogZnVuY3Rpb24oY2h1bmssIGZpbGVJbmZvLCBpbmRleCkgewogICAgICAgICAgICBzdHJzLnB1c2goY2h1bmspOwogICAgICAgIH0sCiAgICAgICAgaXNFbXB0eTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gc3Rycy5sZW5ndGggPT09IDA7CiAgICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gc3Rycy5qb2luKCcnKTsKfTsKTm9kZS5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgb3V0cHV0LmFkZCh0aGlzLnZhbHVlKTsKfTsKTm9kZS5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIHRoaXMudmFsdWUgPSB2aXNpdG9yLnZpc2l0KHRoaXMudmFsdWUpOwp9OwpOb2RlLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTsKTm9kZS5wcm90b3R5cGUuX29wZXJhdGUgPSBmdW5jdGlvbiAoY29udGV4dCwgb3AsIGEsIGIpIHsKICAgIHN3aXRjaCAob3ApIHsKICAgICAgICBjYXNlICcrJzogcmV0dXJuIGEgKyBiOwogICAgICAgIGNhc2UgJy0nOiByZXR1cm4gYSAtIGI7CiAgICAgICAgY2FzZSAnKic6IHJldHVybiBhICogYjsKICAgICAgICBjYXNlICcvJzogcmV0dXJuIGEgLyBiOwogICAgfQp9OwpOb2RlLnByb3RvdHlwZS5mcm91bmQgPSBmdW5jdGlvbihjb250ZXh0LCB2YWx1ZSkgewogICAgdmFyIHByZWNpc2lvbiA9IGNvbnRleHQgJiYgY29udGV4dC5udW1QcmVjaXNpb247CiAgICAvL2FkZCAiZXBzaWxvbiIgdG8gZW5zdXJlIG51bWJlcnMgbGlrZSAxLjAwMDAwMDAwNSAocmVwcmVzZW50ZWQgYXMgMS4wMDAwMDAwMDQ5OTkuLi4uKSBhcmUgcHJvcGVybHkgcm91bmRlZC4uLgogICAgcmV0dXJuIChwcmVjaXNpb24gPT0gbnVsbCkgPyB2YWx1ZSA6IE51bWJlcigodmFsdWUgKyAyZS0xNikudG9GaXhlZChwcmVjaXNpb24pKTsKfTsKTm9kZS5jb21wYXJlID0gZnVuY3Rpb24gKGEsIGIpIHsKICAgIC8qIHJldHVybnM6CiAgICAgLTE6IGEgPCBiCiAgICAgMDogYSA9IGIKICAgICAxOiBhID4gYgogICAgIGFuZCAqYW55KiBvdGhlciB2YWx1ZSBmb3IgYSAhPSBiIChlLmcuIHVuZGVmaW5lZCwgTmFOLCAtMiBldGMuKSAqLwoKICAgIGlmICgoYS5jb21wYXJlKSAmJgogICAgICAgIC8vIGZvciAic3ltbWV0cmljIHJlc3VsdHMiIGZvcmNlIHRvQ1NTLWJhc2VkIGNvbXBhcmlzb24KICAgICAgICAvLyBvZiBRdW90ZWQgb3IgQW5vbnltb3VzIGlmIGVpdGhlciB2YWx1ZSBpcyBvbmUgb2YgdGhvc2UKICAgICAgICAhKGIudHlwZSA9PT0gIlF1b3RlZCIgfHwgYi50eXBlID09PSAiQW5vbnltb3VzIikpIHsKICAgICAgICByZXR1cm4gYS5jb21wYXJlKGIpOwogICAgfSBlbHNlIGlmIChiLmNvbXBhcmUpIHsKICAgICAgICByZXR1cm4gLWIuY29tcGFyZShhKTsKICAgIH0gZWxzZSBpZiAoYS50eXBlICE9PSBiLnR5cGUpIHsKICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfQoKICAgIGEgPSBhLnZhbHVlOwogICAgYiA9IGIudmFsdWU7CiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYSkpIHsKICAgICAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiB1bmRlZmluZWQ7CiAgICB9CiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChOb2RlLmNvbXBhcmUoYVtpXSwgYltpXSkgIT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfTsKCk5vZGUubnVtZXJpY0NvbXBhcmUgPSBmdW5jdGlvbiAoYSwgYikgewogICAgcmV0dXJuIGEgIDwgIGIgPyAtMQogICAgICAgIDogYSA9PT0gYiA/ICAwCiAgICAgICAgOiBhICA+ICBiID8gIDEgOiB1bmRlZmluZWQ7Cn07Cm1vZHVsZS5leHBvcnRzID0gTm9kZTsKCn0se31dLDcwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKSwKICAgIENvbG9yID0gcmVxdWlyZSgiLi9jb2xvciIpLAogICAgRGltZW5zaW9uID0gcmVxdWlyZSgiLi9kaW1lbnNpb24iKTsKCnZhciBPcGVyYXRpb24gPSBmdW5jdGlvbiAob3AsIG9wZXJhbmRzLCBpc1NwYWNlZCkgewogICAgdGhpcy5vcCA9IG9wLnRyaW0oKTsKICAgIHRoaXMub3BlcmFuZHMgPSBvcGVyYW5kczsKICAgIHRoaXMuaXNTcGFjZWQgPSBpc1NwYWNlZDsKfTsKT3BlcmF0aW9uLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7Ck9wZXJhdGlvbi5wcm90b3R5cGUudHlwZSA9ICJPcGVyYXRpb24iOwpPcGVyYXRpb24ucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICB0aGlzLm9wZXJhbmRzID0gdmlzaXRvci52aXNpdCh0aGlzLm9wZXJhbmRzKTsKfTsKT3BlcmF0aW9uLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciBhID0gdGhpcy5vcGVyYW5kc1swXS5ldmFsKGNvbnRleHQpLAogICAgICAgIGIgPSB0aGlzLm9wZXJhbmRzWzFdLmV2YWwoY29udGV4dCk7CgogICAgaWYgKGNvbnRleHQuaXNNYXRoT24oKSkgewogICAgICAgIGlmIChhIGluc3RhbmNlb2YgRGltZW5zaW9uICYmIGIgaW5zdGFuY2VvZiBDb2xvcikgewogICAgICAgICAgICBhID0gYS50b0NvbG9yKCk7CiAgICAgICAgfQogICAgICAgIGlmIChiIGluc3RhbmNlb2YgRGltZW5zaW9uICYmIGEgaW5zdGFuY2VvZiBDb2xvcikgewogICAgICAgICAgICBiID0gYi50b0NvbG9yKCk7CiAgICAgICAgfQogICAgICAgIGlmICghYS5vcGVyYXRlKSB7CiAgICAgICAgICAgIHRocm93IHsgdHlwZTogIk9wZXJhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIk9wZXJhdGlvbiBvbiBhbiBpbnZhbGlkIHR5cGUiIH07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYS5vcGVyYXRlKGNvbnRleHQsIHRoaXMub3AsIGIpOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IE9wZXJhdGlvbih0aGlzLm9wLCBbYSwgYl0sIHRoaXMuaXNTcGFjZWQpOwogICAgfQp9OwpPcGVyYXRpb24ucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIHRoaXMub3BlcmFuZHNbMF0uZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICBpZiAodGhpcy5pc1NwYWNlZCkgewogICAgICAgIG91dHB1dC5hZGQoIiAiKTsKICAgIH0KICAgIG91dHB1dC5hZGQodGhpcy5vcCk7CiAgICBpZiAodGhpcy5pc1NwYWNlZCkgewogICAgICAgIG91dHB1dC5hZGQoIiAiKTsKICAgIH0KICAgIHRoaXMub3BlcmFuZHNbMV0uZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IE9wZXJhdGlvbjsKCn0seyIuL2NvbG9yIjo0OSwiLi9kaW1lbnNpb24iOjU1LCIuL25vZGUiOjY5fV0sNzE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpOwoKdmFyIFBhcmVuID0gZnVuY3Rpb24gKG5vZGUpIHsKICAgIHRoaXMudmFsdWUgPSBub2RlOwp9OwpQYXJlbi5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpQYXJlbi5wcm90b3R5cGUudHlwZSA9ICJQYXJlbiI7ClBhcmVuLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICBvdXRwdXQuYWRkKCcoJyk7CiAgICB0aGlzLnZhbHVlLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgb3V0cHV0LmFkZCgnKScpOwp9OwpQYXJlbi5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICByZXR1cm4gbmV3IFBhcmVuKHRoaXMudmFsdWUuZXZhbChjb250ZXh0KSk7Cn07Cm1vZHVsZS5leHBvcnRzID0gUGFyZW47Cgp9LHsiLi9ub2RlIjo2OX1dLDcyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKSwKICAgIEpzRXZhbE5vZGUgPSByZXF1aXJlKCIuL2pzLWV2YWwtbm9kZSIpLAogICAgVmFyaWFibGUgPSByZXF1aXJlKCIuL3ZhcmlhYmxlIik7Cgp2YXIgUXVvdGVkID0gZnVuY3Rpb24gKHN0ciwgY29udGVudCwgZXNjYXBlZCwgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbykgewogICAgdGhpcy5lc2NhcGVkID0gKGVzY2FwZWQgPT0gbnVsbCkgPyB0cnVlIDogZXNjYXBlZDsKICAgIHRoaXMudmFsdWUgPSBjb250ZW50IHx8ICcnOwogICAgdGhpcy5xdW90ZSA9IHN0ci5jaGFyQXQoMCk7CiAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgICB0aGlzLmN1cnJlbnRGaWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKfTsKUXVvdGVkLnByb3RvdHlwZSA9IG5ldyBKc0V2YWxOb2RlKCk7ClF1b3RlZC5wcm90b3R5cGUudHlwZSA9ICJRdW90ZWQiOwpRdW90ZWQucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIGlmICghdGhpcy5lc2NhcGVkKSB7CiAgICAgICAgb3V0cHV0LmFkZCh0aGlzLnF1b3RlLCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5pbmRleCk7CiAgICB9CiAgICBvdXRwdXQuYWRkKHRoaXMudmFsdWUpOwogICAgaWYgKCF0aGlzLmVzY2FwZWQpIHsKICAgICAgICBvdXRwdXQuYWRkKHRoaXMucXVvdGUpOwogICAgfQp9OwpRdW90ZWQucHJvdG90eXBlLmNvbnRhaW5zVmFyaWFibGVzID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXRjaCgvKGAoW15gXSspYCl8QFx7KFtcdy1dKylcfS8pOwp9OwpRdW90ZWQucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgdmFyIHRoYXQgPSB0aGlzLCB2YWx1ZSA9IHRoaXMudmFsdWU7CiAgICB2YXIgamF2YXNjcmlwdFJlcGxhY2VtZW50ID0gZnVuY3Rpb24gKF8sIGV4cCkgewogICAgICAgIHJldHVybiBTdHJpbmcodGhhdC5ldmFsdWF0ZUphdmFTY3JpcHQoZXhwLCBjb250ZXh0KSk7CiAgICB9OwogICAgdmFyIGludGVycG9sYXRpb25SZXBsYWNlbWVudCA9IGZ1bmN0aW9uIChfLCBuYW1lKSB7CiAgICAgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUoJ0AnICsgbmFtZSwgdGhhdC5pbmRleCwgdGhhdC5jdXJyZW50RmlsZUluZm8pLmV2YWwoY29udGV4dCwgdHJ1ZSk7CiAgICAgICAgcmV0dXJuICh2IGluc3RhbmNlb2YgUXVvdGVkKSA/IHYudmFsdWUgOiB2LnRvQ1NTKCk7CiAgICB9OwogICAgZnVuY3Rpb24gaXRlcmF0aXZlUmVwbGFjZSh2YWx1ZSwgcmVnZXhwLCByZXBsYWNlbWVudEZuYykgewogICAgICAgIHZhciBldmFsdWF0ZWRWYWx1ZSA9IHZhbHVlOwogICAgICAgIGRvIHsKICAgICAgICAgICAgdmFsdWUgPSBldmFsdWF0ZWRWYWx1ZTsKICAgICAgICAgICAgZXZhbHVhdGVkVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlZ2V4cCwgcmVwbGFjZW1lbnRGbmMpOwogICAgICAgIH0gd2hpbGUgKHZhbHVlICE9PSBldmFsdWF0ZWRWYWx1ZSk7CiAgICAgICAgcmV0dXJuIGV2YWx1YXRlZFZhbHVlOwogICAgfQogICAgdmFsdWUgPSBpdGVyYXRpdmVSZXBsYWNlKHZhbHVlLCAvYChbXmBdKylgL2csIGphdmFzY3JpcHRSZXBsYWNlbWVudCk7CiAgICB2YWx1ZSA9IGl0ZXJhdGl2ZVJlcGxhY2UodmFsdWUsIC9AXHsoW1x3LV0rKVx9L2csIGludGVycG9sYXRpb25SZXBsYWNlbWVudCk7CiAgICByZXR1cm4gbmV3IFF1b3RlZCh0aGlzLnF1b3RlICsgdmFsdWUgKyB0aGlzLnF1b3RlLCB2YWx1ZSwgdGhpcy5lc2NhcGVkLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbyk7Cn07ClF1b3RlZC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChvdGhlcikgewogICAgLy8gd2hlbiBjb21wYXJpbmcgcXVvdGVkIHN0cmluZ3MgYWxsb3cgdGhlIHF1b3RlIHRvIGRpZmZlcgogICAgaWYgKG90aGVyLnR5cGUgPT09ICJRdW90ZWQiICYmICF0aGlzLmVzY2FwZWQgJiYgIW90aGVyLmVzY2FwZWQpIHsKICAgICAgICByZXR1cm4gTm9kZS5udW1lcmljQ29tcGFyZSh0aGlzLnZhbHVlLCBvdGhlci52YWx1ZSk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBvdGhlci50b0NTUyAmJiB0aGlzLnRvQ1NTKCkgPT09IG90aGVyLnRvQ1NTKCkgPyAwIDogdW5kZWZpbmVkOwogICAgfQp9Owptb2R1bGUuZXhwb3J0cyA9IFF1b3RlZDsKCn0seyIuL2pzLWV2YWwtbm9kZSI6NjMsIi4vbm9kZSI6NjksIi4vdmFyaWFibGUiOjgxfV0sNzM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgVmFsdWUgPSByZXF1aXJlKCIuL3ZhbHVlIiksCiAgICBLZXl3b3JkID0gcmVxdWlyZSgiLi9rZXl3b3JkIik7Cgp2YXIgUnVsZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBtZXJnZSwgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbywgaW5saW5lLCB2YXJpYWJsZSkgewogICAgdGhpcy5uYW1lID0gbmFtZTsKICAgIHRoaXMudmFsdWUgPSAodmFsdWUgaW5zdGFuY2VvZiBOb2RlKSA/IHZhbHVlIDogbmV3IFZhbHVlKFt2YWx1ZV0pOyAvL3ZhbHVlIGluc3RhbmNlb2YgdHJlZS5WYWx1ZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIHRyZWUuUnVsZXNldCA/PwogICAgdGhpcy5pbXBvcnRhbnQgPSBpbXBvcnRhbnQgPyAnICcgKyBpbXBvcnRhbnQudHJpbSgpIDogJyc7CiAgICB0aGlzLm1lcmdlID0gbWVyZ2U7CiAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgICB0aGlzLmN1cnJlbnRGaWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKICAgIHRoaXMuaW5saW5lID0gaW5saW5lIHx8IGZhbHNlOwogICAgdGhpcy52YXJpYWJsZSA9ICh2YXJpYWJsZSAhPT0gdW5kZWZpbmVkKSA/IHZhcmlhYmxlCiAgICAgICAgOiAobmFtZS5jaGFyQXQgJiYgKG5hbWUuY2hhckF0KDApID09PSAnQCcpKTsKfTsKCmZ1bmN0aW9uIGV2YWxOYW1lKGNvbnRleHQsIG5hbWUpIHsKICAgIHZhciB2YWx1ZSA9ICIiLCBpLCBuID0gbmFtZS5sZW5ndGgsCiAgICAgICAgb3V0cHV0ID0ge2FkZDogZnVuY3Rpb24gKHMpIHt2YWx1ZSArPSBzO319OwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIG5hbWVbaV0uZXZhbChjb250ZXh0KS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgIH0KICAgIHJldHVybiB2YWx1ZTsKfQoKUnVsZS5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpSdWxlLnByb3RvdHlwZS50eXBlID0gIlJ1bGUiOwpSdWxlLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICBvdXRwdXQuYWRkKHRoaXMubmFtZSArIChjb250ZXh0LmNvbXByZXNzID8gJzonIDogJzogJyksIHRoaXMuY3VycmVudEZpbGVJbmZvLCB0aGlzLmluZGV4KTsKICAgIHRyeSB7CiAgICAgICAgdGhpcy52YWx1ZS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgIH0KICAgIGNhdGNoKGUpIHsKICAgICAgICBlLmluZGV4ID0gdGhpcy5pbmRleDsKICAgICAgICBlLmZpbGVuYW1lID0gdGhpcy5jdXJyZW50RmlsZUluZm8uZmlsZW5hbWU7CiAgICAgICAgdGhyb3cgZTsKICAgIH0KICAgIG91dHB1dC5hZGQodGhpcy5pbXBvcnRhbnQgKyAoKHRoaXMuaW5saW5lIHx8IChjb250ZXh0Lmxhc3RSdWxlICYmIGNvbnRleHQuY29tcHJlc3MpKSA/ICIiIDogIjsiKSwgdGhpcy5jdXJyZW50RmlsZUluZm8sIHRoaXMuaW5kZXgpOwp9OwpSdWxlLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciBzdHJpY3RNYXRoQnlwYXNzID0gZmFsc2UsIG5hbWUgPSB0aGlzLm5hbWUsIGV2YWxkVmFsdWUsIHZhcmlhYmxlID0gdGhpcy52YXJpYWJsZTsKICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gInN0cmluZyIpIHsKICAgICAgICAvLyBleHBhbmQgJ3ByaW1pdGl2ZScgbmFtZSBkaXJlY3RseSB0byBnZXQKICAgICAgICAvLyB0aGluZ3MgZmFzdGVyICh+MTAlIGZvciBiZW5jaG1hcmsubGVzcyk6CiAgICAgICAgbmFtZSA9IChuYW1lLmxlbmd0aCA9PT0gMSkgJiYgKG5hbWVbMF0gaW5zdGFuY2VvZiBLZXl3b3JkKSA/CiAgICAgICAgICAgICAgICBuYW1lWzBdLnZhbHVlIDogZXZhbE5hbWUoY29udGV4dCwgbmFtZSk7CiAgICAgICAgdmFyaWFibGUgPSBmYWxzZTsgLy8gbmV2ZXIgdHJlYXQgZXhwYW5kZWQgaW50ZXJwb2xhdGlvbiBhcyBuZXcgdmFyaWFibGUgbmFtZQogICAgfQogICAgaWYgKG5hbWUgPT09ICJmb250IiAmJiAhY29udGV4dC5zdHJpY3RNYXRoKSB7CiAgICAgICAgc3RyaWN0TWF0aEJ5cGFzcyA9IHRydWU7CiAgICAgICAgY29udGV4dC5zdHJpY3RNYXRoID0gdHJ1ZTsKICAgIH0KICAgIHRyeSB7CiAgICAgICAgY29udGV4dC5pbXBvcnRhbnRTY29wZS5wdXNoKHt9KTsKICAgICAgICBldmFsZFZhbHVlID0gdGhpcy52YWx1ZS5ldmFsKGNvbnRleHQpOwoKICAgICAgICBpZiAoIXRoaXMudmFyaWFibGUgJiYgZXZhbGRWYWx1ZS50eXBlID09PSAiRGV0YWNoZWRSdWxlc2V0IikgewogICAgICAgICAgICB0aHJvdyB7IG1lc3NhZ2U6ICJSdWxlc2V0cyBjYW5ub3QgYmUgZXZhbHVhdGVkIG9uIGEgcHJvcGVydHkuIiwKICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleCwgZmlsZW5hbWU6IHRoaXMuY3VycmVudEZpbGVJbmZvLmZpbGVuYW1lIH07CiAgICAgICAgfQogICAgICAgIHZhciBpbXBvcnRhbnQgPSB0aGlzLmltcG9ydGFudCwKICAgICAgICAgICAgaW1wb3J0YW50UmVzdWx0ID0gY29udGV4dC5pbXBvcnRhbnRTY29wZS5wb3AoKTsKICAgICAgICBpZiAoIWltcG9ydGFudCAmJiBpbXBvcnRhbnRSZXN1bHQuaW1wb3J0YW50KSB7CiAgICAgICAgICAgIGltcG9ydGFudCA9IGltcG9ydGFudFJlc3VsdC5pbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFJ1bGUobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsZFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGFudCwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lcmdlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXgsIHRoaXMuY3VycmVudEZpbGVJbmZvLCB0aGlzLmlubGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUpOwogICAgfQogICAgY2F0Y2goZSkgewogICAgICAgIGlmICh0eXBlb2YgZS5pbmRleCAhPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgZS5pbmRleCA9IHRoaXMuaW5kZXg7CiAgICAgICAgICAgIGUuZmlsZW5hbWUgPSB0aGlzLmN1cnJlbnRGaWxlSW5mby5maWxlbmFtZTsKICAgICAgICB9CiAgICAgICAgdGhyb3cgZTsKICAgIH0KICAgIGZpbmFsbHkgewogICAgICAgIGlmIChzdHJpY3RNYXRoQnlwYXNzKSB7CiAgICAgICAgICAgIGNvbnRleHQuc3RyaWN0TWF0aCA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KfTsKUnVsZS5wcm90b3R5cGUubWFrZUltcG9ydGFudCA9IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiBuZXcgUnVsZSh0aGlzLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiIWltcG9ydGFudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXJnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5pbmxpbmUpOwp9OwoKLy8gUmVjdXJzaXZlIG1hcmtpbmcgZm9yIHJ1bGVzCnZhciBtYXJrID0gZnVuY3Rpb24odmFsdWUpIHsKICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKICAgICAgICBpZiAodmFsdWUubWFya1JlZmVyZW5jZWQpIHsKICAgICAgICAgICAgdmFsdWUubWFya1JlZmVyZW5jZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGFyKSB7CiAgICAgICAgICAgIG1hcmsoYXIpOwogICAgICAgIH0pOwogICAgfQp9OwpSdWxlLnByb3RvdHlwZS5tYXJrUmVmZXJlbmNlZCA9IGZ1bmN0aW9uICgpIHsKICAgIGlmICh0aGlzLnZhbHVlKSB7CiAgICAgICAgbWFyayh0aGlzLnZhbHVlKTsKICAgIH0KfTsKCm1vZHVsZS5leHBvcnRzID0gUnVsZTsKfSx7Ii4va2V5d29yZCI6NjQsIi4vbm9kZSI6NjksIi4vdmFsdWUiOjgwfV0sNzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgVmFyaWFibGUgPSByZXF1aXJlKCIuL3ZhcmlhYmxlIik7Cgp2YXIgUnVsZXNldENhbGwgPSBmdW5jdGlvbiAodmFyaWFibGUpIHsKICAgIHRoaXMudmFyaWFibGUgPSB2YXJpYWJsZTsKfTsKUnVsZXNldENhbGwucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKUnVsZXNldENhbGwucHJvdG90eXBlLnR5cGUgPSAiUnVsZXNldENhbGwiOwpSdWxlc2V0Q2FsbC5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICB2YXIgZGV0YWNoZWRSdWxlc2V0ID0gbmV3IFZhcmlhYmxlKHRoaXMudmFyaWFibGUpLmV2YWwoY29udGV4dCk7CiAgICByZXR1cm4gZGV0YWNoZWRSdWxlc2V0LmNhbGxFdmFsKGNvbnRleHQpOwp9Owptb2R1bGUuZXhwb3J0cyA9IFJ1bGVzZXRDYWxsOwoKfSx7Ii4vbm9kZSI6NjksIi4vdmFyaWFibGUiOjgxfV0sNzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgUnVsZSA9IHJlcXVpcmUoIi4vcnVsZSIpLAogICAgU2VsZWN0b3IgPSByZXF1aXJlKCIuL3NlbGVjdG9yIiksCiAgICBFbGVtZW50ID0gcmVxdWlyZSgiLi9lbGVtZW50IiksCiAgICBQYXJlbiA9IHJlcXVpcmUoIi4vcGFyZW4iKSwKICAgIGNvbnRleHRzID0gcmVxdWlyZSgiLi4vY29udGV4dHMiKSwKICAgIGdsb2JhbEZ1bmN0aW9uUmVnaXN0cnkgPSByZXF1aXJlKCIuLi9mdW5jdGlvbnMvZnVuY3Rpb24tcmVnaXN0cnkiKSwKICAgIGRlZmF1bHRGdW5jID0gcmVxdWlyZSgiLi4vZnVuY3Rpb25zL2RlZmF1bHQiKSwKICAgIGdldERlYnVnSW5mbyA9IHJlcXVpcmUoIi4vZGVidWctaW5mbyIpOwoKdmFyIFJ1bGVzZXQgPSBmdW5jdGlvbiAoc2VsZWN0b3JzLCBydWxlcywgc3RyaWN0SW1wb3J0cykgewogICAgdGhpcy5zZWxlY3RvcnMgPSBzZWxlY3RvcnM7CiAgICB0aGlzLnJ1bGVzID0gcnVsZXM7CiAgICB0aGlzLl9sb29rdXBzID0ge307CiAgICB0aGlzLnN0cmljdEltcG9ydHMgPSBzdHJpY3RJbXBvcnRzOwp9OwpSdWxlc2V0LnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7ClJ1bGVzZXQucHJvdG90eXBlLnR5cGUgPSAiUnVsZXNldCI7ClJ1bGVzZXQucHJvdG90eXBlLmlzUnVsZXNldCA9IHRydWU7ClJ1bGVzZXQucHJvdG90eXBlLmlzUnVsZXNldExpa2UgPSB0cnVlOwpSdWxlc2V0LnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgaWYgKHRoaXMucGF0aHMpIHsKICAgICAgICB2aXNpdG9yLnZpc2l0QXJyYXkodGhpcy5wYXRocywgdHJ1ZSk7CiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0b3JzKSB7CiAgICAgICAgdGhpcy5zZWxlY3RvcnMgPSB2aXNpdG9yLnZpc2l0QXJyYXkodGhpcy5zZWxlY3RvcnMpOwogICAgfQogICAgaWYgKHRoaXMucnVsZXMgJiYgdGhpcy5ydWxlcy5sZW5ndGgpIHsKICAgICAgICB0aGlzLnJ1bGVzID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMucnVsZXMpOwogICAgfQp9OwpSdWxlc2V0LnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciB0aGlzU2VsZWN0b3JzID0gdGhpcy5zZWxlY3RvcnMsIHNlbGVjdG9ycywKICAgICAgICBzZWxDbnQsIHNlbGVjdG9yLCBpLCBoYXNPbmVQYXNzaW5nU2VsZWN0b3IgPSBmYWxzZTsKCiAgICBpZiAodGhpc1NlbGVjdG9ycyAmJiAoc2VsQ250ID0gdGhpc1NlbGVjdG9ycy5sZW5ndGgpKSB7CiAgICAgICAgc2VsZWN0b3JzID0gW107CiAgICAgICAgZGVmYXVsdEZ1bmMuZXJyb3IoewogICAgICAgICAgICB0eXBlOiAiU3ludGF4IiwKICAgICAgICAgICAgbWVzc2FnZTogIml0IGlzIGN1cnJlbnRseSBvbmx5IGFsbG93ZWQgaW4gcGFyYW1ldHJpYyBtaXhpbiBndWFyZHMsIgogICAgICAgIH0pOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxDbnQ7IGkrKykgewogICAgICAgICAgICBzZWxlY3RvciA9IHRoaXNTZWxlY3RvcnNbaV0uZXZhbChjb250ZXh0KTsKICAgICAgICAgICAgc2VsZWN0b3JzLnB1c2goc2VsZWN0b3IpOwogICAgICAgICAgICBpZiAoc2VsZWN0b3IuZXZhbGRDb25kaXRpb24pIHsKICAgICAgICAgICAgICAgIGhhc09uZVBhc3NpbmdTZWxlY3RvciA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGVmYXVsdEZ1bmMucmVzZXQoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaGFzT25lUGFzc2luZ1NlbGVjdG9yID0gdHJ1ZTsKICAgIH0KCiAgICB2YXIgcnVsZXMgPSB0aGlzLnJ1bGVzID8gdGhpcy5ydWxlcy5zbGljZSgwKSA6IG51bGwsCiAgICAgICAgcnVsZXNldCA9IG5ldyBSdWxlc2V0KHNlbGVjdG9ycywgcnVsZXMsIHRoaXMuc3RyaWN0SW1wb3J0cyksCiAgICAgICAgcnVsZSwgc3ViUnVsZTsKCiAgICBydWxlc2V0Lm9yaWdpbmFsUnVsZXNldCA9IHRoaXM7CiAgICBydWxlc2V0LnJvb3QgPSB0aGlzLnJvb3Q7CiAgICBydWxlc2V0LmZpcnN0Um9vdCA9IHRoaXMuZmlyc3RSb290OwogICAgcnVsZXNldC5hbGxvd0ltcG9ydHMgPSB0aGlzLmFsbG93SW1wb3J0czsKCiAgICBpZiAodGhpcy5kZWJ1Z0luZm8pIHsKICAgICAgICBydWxlc2V0LmRlYnVnSW5mbyA9IHRoaXMuZGVidWdJbmZvOwogICAgfQoKICAgIGlmICghaGFzT25lUGFzc2luZ1NlbGVjdG9yKSB7CiAgICAgICAgcnVsZXMubGVuZ3RoID0gMDsKICAgIH0KCiAgICAvLyBpbmhlcml0IGEgZnVuY3Rpb24gcmVnaXN0cnkgZnJvbSB0aGUgZnJhbWVzIHN0YWNrIHdoZW4gcG9zc2libGU7CiAgICAvLyBvdGhlcndpc2UgZnJvbSB0aGUgZ2xvYmFsIHJlZ2lzdHJ5CiAgICBydWxlc2V0LmZ1bmN0aW9uUmVnaXN0cnkgPSAoZnVuY3Rpb24gKGZyYW1lcykgewogICAgICAgIHZhciBpID0gMCwKICAgICAgICAgICAgbiA9IGZyYW1lcy5sZW5ndGgsCiAgICAgICAgICAgIGZvdW5kOwogICAgICAgIGZvciAoIDsgaSAhPT0gbiA7ICsraSApIHsKICAgICAgICAgICAgZm91bmQgPSBmcmFtZXNbIGkgXS5mdW5jdGlvblJlZ2lzdHJ5OwogICAgICAgICAgICBpZiAoIGZvdW5kICkgeyByZXR1cm4gZm91bmQ7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGdsb2JhbEZ1bmN0aW9uUmVnaXN0cnk7CiAgICB9KGNvbnRleHQuZnJhbWVzKSkuaW5oZXJpdCgpOwoKICAgIC8vIHB1c2ggdGhlIGN1cnJlbnQgcnVsZXNldCB0byB0aGUgZnJhbWVzIHN0YWNrCiAgICB2YXIgY3R4RnJhbWVzID0gY29udGV4dC5mcmFtZXM7CiAgICBjdHhGcmFtZXMudW5zaGlmdChydWxlc2V0KTsKCiAgICAvLyBjdXJycmVudCBzZWxlY3RvcnMKICAgIHZhciBjdHhTZWxlY3RvcnMgPSBjb250ZXh0LnNlbGVjdG9yczsKICAgIGlmICghY3R4U2VsZWN0b3JzKSB7CiAgICAgICAgY29udGV4dC5zZWxlY3RvcnMgPSBjdHhTZWxlY3RvcnMgPSBbXTsKICAgIH0KICAgIGN0eFNlbGVjdG9ycy51bnNoaWZ0KHRoaXMuc2VsZWN0b3JzKTsKCiAgICAvLyBFdmFsdWF0ZSBpbXBvcnRzCiAgICBpZiAocnVsZXNldC5yb290IHx8IHJ1bGVzZXQuYWxsb3dJbXBvcnRzIHx8ICFydWxlc2V0LnN0cmljdEltcG9ydHMpIHsKICAgICAgICBydWxlc2V0LmV2YWxJbXBvcnRzKGNvbnRleHQpOwogICAgfQoKICAgIC8vIFN0b3JlIHRoZSBmcmFtZXMgYXJvdW5kIG1peGluIGRlZmluaXRpb25zLAogICAgLy8gc28gdGhleSBjYW4gYmUgZXZhbHVhdGVkIGxpa2UgY2xvc3VyZXMgd2hlbiB0aGUgdGltZSBjb21lcy4KICAgIHZhciByc1J1bGVzID0gcnVsZXNldC5ydWxlcywgcnNSdWxlQ250ID0gcnNSdWxlcyA/IHJzUnVsZXMubGVuZ3RoIDogMDsKICAgIGZvciAoaSA9IDA7IGkgPCByc1J1bGVDbnQ7IGkrKykgewogICAgICAgIGlmIChyc1J1bGVzW2ldLmV2YWxGaXJzdCkgewogICAgICAgICAgICByc1J1bGVzW2ldID0gcnNSdWxlc1tpXS5ldmFsKGNvbnRleHQpOwogICAgICAgIH0KICAgIH0KCiAgICB2YXIgbWVkaWFCbG9ja0NvdW50ID0gKGNvbnRleHQubWVkaWFCbG9ja3MgJiYgY29udGV4dC5tZWRpYUJsb2Nrcy5sZW5ndGgpIHx8IDA7CgogICAgLy8gRXZhbHVhdGUgbWl4aW4gY2FsbHMuCiAgICBmb3IgKGkgPSAwOyBpIDwgcnNSdWxlQ250OyBpKyspIHsKICAgICAgICBpZiAocnNSdWxlc1tpXS50eXBlID09PSAiTWl4aW5DYWxsIikgewogICAgICAgICAgICAvKmpzaGludCBsb29wZnVuYzp0cnVlICovCiAgICAgICAgICAgIHJ1bGVzID0gcnNSdWxlc1tpXS5ldmFsKGNvbnRleHQpLmZpbHRlcihmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHIgaW5zdGFuY2VvZiBSdWxlKSAmJiByLnZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHBvbGx1dGUgdGhlIHNjb3BlIGlmIHRoZSB2YXJpYWJsZSBpcwogICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgdGhlcmUuIGNvbnNpZGVyIHJldHVybmluZyBmYWxzZSBoZXJlCiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHdlIG5lZWQgYSB3YXkgdG8gInJldHVybiIgdmFyaWFibGUgZnJvbSBtaXhpbnMKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShydWxlc2V0LnZhcmlhYmxlKHIubmFtZSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByc1J1bGVzLnNwbGljZS5hcHBseShyc1J1bGVzLCBbaSwgMV0uY29uY2F0KHJ1bGVzKSk7CiAgICAgICAgICAgIHJzUnVsZUNudCArPSBydWxlcy5sZW5ndGggLSAxOwogICAgICAgICAgICBpICs9IHJ1bGVzLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIHJ1bGVzZXQucmVzZXRDYWNoZSgpOwogICAgICAgIH0gZWxzZSBpZiAocnNSdWxlc1tpXS50eXBlID09PSAiUnVsZXNldENhbGwiKSB7CiAgICAgICAgICAgIC8qanNoaW50IGxvb3BmdW5jOnRydWUgKi8KICAgICAgICAgICAgcnVsZXMgPSByc1J1bGVzW2ldLmV2YWwoY29udGV4dCkucnVsZXMuZmlsdGVyKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIGlmICgociBpbnN0YW5jZW9mIFJ1bGUpICYmIHIudmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3QgcG9sbHV0ZSB0aGUgc2NvcGUgYXQgYWxsCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByc1J1bGVzLnNwbGljZS5hcHBseShyc1J1bGVzLCBbaSwgMV0uY29uY2F0KHJ1bGVzKSk7CiAgICAgICAgICAgIHJzUnVsZUNudCArPSBydWxlcy5sZW5ndGggLSAxOwogICAgICAgICAgICBpICs9IHJ1bGVzLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIHJ1bGVzZXQucmVzZXRDYWNoZSgpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBFdmFsdWF0ZSBldmVyeXRoaW5nIGVsc2UKICAgIGZvciAoaSA9IDA7IGkgPCByc1J1bGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgcnVsZSA9IHJzUnVsZXNbaV07CiAgICAgICAgaWYgKCFydWxlLmV2YWxGaXJzdCkgewogICAgICAgICAgICByc1J1bGVzW2ldID0gcnVsZSA9IHJ1bGUuZXZhbCA/IHJ1bGUuZXZhbChjb250ZXh0KSA6IHJ1bGU7CiAgICAgICAgfQogICAgfQoKICAgIC8vIEV2YWx1YXRlIGV2ZXJ5dGhpbmcgZWxzZQogICAgZm9yIChpID0gMDsgaSA8IHJzUnVsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBydWxlID0gcnNSdWxlc1tpXTsKICAgICAgICAvLyBmb3IgcnVsZXNldHMsIGNoZWNrIGlmIGl0IGlzIGEgY3NzIGd1YXJkIGFuZCBjYW4gYmUgcmVtb3ZlZAogICAgICAgIGlmIChydWxlIGluc3RhbmNlb2YgUnVsZXNldCAmJiBydWxlLnNlbGVjdG9ycyAmJiBydWxlLnNlbGVjdG9ycy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgLy8gY2hlY2sgaWYgaXQgY2FuIGJlIGZvbGRlZCBpbiAoZS5nLiAmIHdoZXJlKQogICAgICAgICAgICBpZiAocnVsZS5zZWxlY3RvcnNbMF0uaXNKdXN0UGFyZW50U2VsZWN0b3IoKSkgewogICAgICAgICAgICAgICAgcnNSdWxlcy5zcGxpY2UoaS0tLCAxKTsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJ1bGUucnVsZXMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICBzdWJSdWxlID0gcnVsZS5ydWxlc1tqXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIShzdWJSdWxlIGluc3RhbmNlb2YgUnVsZSkgfHwgIXN1YlJ1bGUudmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcnNSdWxlcy5zcGxpY2UoKytpLCAwLCBzdWJSdWxlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gUG9wIHRoZSBzdGFjawogICAgY3R4RnJhbWVzLnNoaWZ0KCk7CiAgICBjdHhTZWxlY3RvcnMuc2hpZnQoKTsKCiAgICBpZiAoY29udGV4dC5tZWRpYUJsb2NrcykgewogICAgICAgIGZvciAoaSA9IG1lZGlhQmxvY2tDb3VudDsgaSA8IGNvbnRleHQubWVkaWFCbG9ja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgY29udGV4dC5tZWRpYUJsb2Nrc1tpXS5idWJibGVTZWxlY3RvcnMoc2VsZWN0b3JzKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJ1bGVzZXQ7Cn07ClJ1bGVzZXQucHJvdG90eXBlLmV2YWxJbXBvcnRzID0gZnVuY3Rpb24oY29udGV4dCkgewogICAgdmFyIHJ1bGVzID0gdGhpcy5ydWxlcywgaSwgaW1wb3J0UnVsZXM7CiAgICBpZiAoIXJ1bGVzKSB7IHJldHVybjsgfQoKICAgIGZvciAoaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChydWxlc1tpXS50eXBlID09PSAiSW1wb3J0IikgewogICAgICAgICAgICBpbXBvcnRSdWxlcyA9IHJ1bGVzW2ldLmV2YWwoY29udGV4dCk7CiAgICAgICAgICAgIGlmIChpbXBvcnRSdWxlcyAmJiBpbXBvcnRSdWxlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHJ1bGVzLnNwbGljZS5hcHBseShydWxlcywgW2ksIDFdLmNvbmNhdChpbXBvcnRSdWxlcykpOwogICAgICAgICAgICAgICAgaSs9IGltcG9ydFJ1bGVzLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBydWxlcy5zcGxpY2UoaSwgMSwgaW1wb3J0UnVsZXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMucmVzZXRDYWNoZSgpOwogICAgICAgIH0KICAgIH0KfTsKUnVsZXNldC5wcm90b3R5cGUubWFrZUltcG9ydGFudCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlc3VsdCA9IG5ldyBSdWxlc2V0KHRoaXMuc2VsZWN0b3JzLCB0aGlzLnJ1bGVzLm1hcChmdW5jdGlvbiAocikgewogICAgICAgIGlmIChyLm1ha2VJbXBvcnRhbnQpIHsKICAgICAgICAgICAgcmV0dXJuIHIubWFrZUltcG9ydGFudCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiByOwogICAgICAgIH0KICAgIH0pLCB0aGlzLnN0cmljdEltcG9ydHMpOwoKICAgIHJldHVybiByZXN1bHQ7Cn07ClJ1bGVzZXQucHJvdG90eXBlLm1hdGNoQXJncyA9IGZ1bmN0aW9uIChhcmdzKSB7CiAgICByZXR1cm4gIWFyZ3MgfHwgYXJncy5sZW5ndGggPT09IDA7Cn07Ci8vIGxldHMgeW91IGNhbGwgYSBjc3Mgc2VsZWN0b3Igd2l0aCBhIGd1YXJkClJ1bGVzZXQucHJvdG90eXBlLm1hdGNoQ29uZGl0aW9uID0gZnVuY3Rpb24gKGFyZ3MsIGNvbnRleHQpIHsKICAgIHZhciBsYXN0U2VsZWN0b3IgPSB0aGlzLnNlbGVjdG9yc1t0aGlzLnNlbGVjdG9ycy5sZW5ndGggLSAxXTsKICAgIGlmICghbGFzdFNlbGVjdG9yLmV2YWxkQ29uZGl0aW9uKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgaWYgKGxhc3RTZWxlY3Rvci5jb25kaXRpb24gJiYKICAgICAgICAhbGFzdFNlbGVjdG9yLmNvbmRpdGlvbi5ldmFsKAogICAgICAgICAgICBuZXcgY29udGV4dHMuRXZhbChjb250ZXh0LAogICAgICAgICAgICAgICAgY29udGV4dC5mcmFtZXMpKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9OwpSdWxlc2V0LnByb3RvdHlwZS5yZXNldENhY2hlID0gZnVuY3Rpb24gKCkgewogICAgdGhpcy5fcnVsZXNldHMgPSBudWxsOwogICAgdGhpcy5fdmFyaWFibGVzID0gbnVsbDsKICAgIHRoaXMuX2xvb2t1cHMgPSB7fTsKfTsKUnVsZXNldC5wcm90b3R5cGUudmFyaWFibGVzID0gZnVuY3Rpb24gKCkgewogICAgaWYgKCF0aGlzLl92YXJpYWJsZXMpIHsKICAgICAgICB0aGlzLl92YXJpYWJsZXMgPSAhdGhpcy5ydWxlcyA/IHt9IDogdGhpcy5ydWxlcy5yZWR1Y2UoZnVuY3Rpb24gKGhhc2gsIHIpIHsKICAgICAgICAgICAgaWYgKHIgaW5zdGFuY2VvZiBSdWxlICYmIHIudmFyaWFibGUgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgIGhhc2hbci5uYW1lXSA9IHI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gd2hlbiBldmFsdWF0aW5nIHZhcmlhYmxlcyBpbiBhbiBpbXBvcnQgc3RhdGVtZW50LCBpbXBvcnRzIGhhdmUgbm90IGJlZW4gZXZhbCdkCiAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZ28gaW5zaWRlIGltcG9ydCBzdGF0ZW1lbnRzLgogICAgICAgICAgICAvLyBndWFyZCBhZ2FpbnN0IHJvb3QgYmVpbmcgYSBzdHJpbmcgKGluIHRoZSBjYXNlIG9mIGlubGluZWQgbGVzcykKICAgICAgICAgICAgaWYgKHIudHlwZSA9PT0gIkltcG9ydCIgJiYgci5yb290ICYmIHIucm9vdC52YXJpYWJsZXMpIHsKICAgICAgICAgICAgICAgIHZhciB2YXJzID0gci5yb290LnZhcmlhYmxlcygpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB2YXJzKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZhcnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGFzaFtuYW1lXSA9IHZhcnNbbmFtZV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXNoOwogICAgICAgIH0sIHt9KTsKICAgIH0KICAgIHJldHVybiB0aGlzLl92YXJpYWJsZXM7Cn07ClJ1bGVzZXQucHJvdG90eXBlLnZhcmlhYmxlID0gZnVuY3Rpb24gKG5hbWUpIHsKICAgIHJldHVybiB0aGlzLnZhcmlhYmxlcygpW25hbWVdOwp9OwpSdWxlc2V0LnByb3RvdHlwZS5ydWxlc2V0cyA9IGZ1bmN0aW9uICgpIHsKICAgIGlmICghdGhpcy5ydWxlcykgeyByZXR1cm4gW107IH0KCiAgICB2YXIgZmlsdFJ1bGVzID0gW10sIHJ1bGVzID0gdGhpcy5ydWxlcywgY250ID0gcnVsZXMubGVuZ3RoLAogICAgICAgIGksIHJ1bGU7CgogICAgZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7CiAgICAgICAgcnVsZSA9IHJ1bGVzW2ldOwogICAgICAgIGlmIChydWxlLmlzUnVsZXNldCkgewogICAgICAgICAgICBmaWx0UnVsZXMucHVzaChydWxlKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGZpbHRSdWxlczsKfTsKUnVsZXNldC5wcm90b3R5cGUucHJlcGVuZFJ1bGUgPSBmdW5jdGlvbiAocnVsZSkgewogICAgdmFyIHJ1bGVzID0gdGhpcy5ydWxlczsKICAgIGlmIChydWxlcykgewogICAgICAgIHJ1bGVzLnVuc2hpZnQocnVsZSk7CiAgICB9IGVsc2UgewogICAgICAgIHRoaXMucnVsZXMgPSBbIHJ1bGUgXTsKICAgIH0KfTsKUnVsZXNldC5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChzZWxlY3Rvciwgc2VsZiwgZmlsdGVyKSB7CiAgICBzZWxmID0gc2VsZiB8fCB0aGlzOwogICAgdmFyIHJ1bGVzID0gW10sIG1hdGNoLCBmb3VuZE1peGlucywKICAgICAgICBrZXkgPSBzZWxlY3Rvci50b0NTUygpOwoKICAgIGlmIChrZXkgaW4gdGhpcy5fbG9va3VwcykgeyByZXR1cm4gdGhpcy5fbG9va3Vwc1trZXldOyB9CgogICAgdGhpcy5ydWxlc2V0cygpLmZvckVhY2goZnVuY3Rpb24gKHJ1bGUpIHsKICAgICAgICBpZiAocnVsZSAhPT0gc2VsZikgewogICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJ1bGUuc2VsZWN0b3JzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGVjdG9yLm1hdGNoKHJ1bGUuc2VsZWN0b3JzW2pdKTsKICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5lbGVtZW50cy5sZW5ndGggPiBtYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbHRlciB8fCBmaWx0ZXIocnVsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWl4aW5zID0gcnVsZS5maW5kKG5ldyBTZWxlY3RvcihzZWxlY3Rvci5lbGVtZW50cy5zbGljZShtYXRjaCkpLCBzZWxmLCBmaWx0ZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3VuZE1peGlucy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWl4aW5zW2ldLnBhdGgucHVzaChydWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHJ1bGVzLCBmb3VuZE1peGlucyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBydWxlcy5wdXNoKHsgcnVsZTogcnVsZSwgcGF0aDogW119KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIHRoaXMuX2xvb2t1cHNba2V5XSA9IHJ1bGVzOwogICAgcmV0dXJuIHJ1bGVzOwp9OwpSdWxlc2V0LnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICB2YXIgaSwgaiwKICAgICAgICBjaGFyc2V0UnVsZU5vZGVzID0gW10sCiAgICAgICAgcnVsZU5vZGVzID0gW10sCiAgICAgICAgZGVidWdJbmZvLCAgICAgLy8gTGluZSBudW1iZXIgZGVidWdnaW5nCiAgICAgICAgcnVsZSwKICAgICAgICBwYXRoOwoKICAgIGNvbnRleHQudGFiTGV2ZWwgPSAoY29udGV4dC50YWJMZXZlbCB8fCAwKTsKCiAgICBpZiAoIXRoaXMucm9vdCkgewogICAgICAgIGNvbnRleHQudGFiTGV2ZWwrKzsKICAgIH0KCiAgICB2YXIgdGFiUnVsZVN0ciA9IGNvbnRleHQuY29tcHJlc3MgPyAnJyA6IEFycmF5KGNvbnRleHQudGFiTGV2ZWwgKyAxKS5qb2luKCIgICIpLAogICAgICAgIHRhYlNldFN0ciA9IGNvbnRleHQuY29tcHJlc3MgPyAnJyA6IEFycmF5KGNvbnRleHQudGFiTGV2ZWwpLmpvaW4oIiAgIiksCiAgICAgICAgc2VwOwoKICAgIGZ1bmN0aW9uIGlzUnVsZXNldExpa2VOb2RlKHJ1bGUpIHsKICAgICAgICAvLyBpZiBpdCBoYXMgbmVzdGVkIHJ1bGVzLCB0aGVuIGl0IHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgYSBydWxlc2V0CiAgICAgICAgLy8gbWVkaWFzIGFuZCBjb21tZW50cyBkbyBub3QgaGF2ZSBuZXN0ZWQgcnVsZXMsIGJ1dCBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIHJ1bGVzZXRzIGFueXdheQogICAgICAgIC8vIHNvbWUgZGlyZWN0aXZlcyBhbmQgYW5vbnltb3VzIG5vZGVzIGFyZSBydWxlc2V0IGxpa2UsIG90aGVycyBhcmUgbm90CiAgICAgICAgaWYgKHR5cGVvZiBydWxlLmlzUnVsZXNldExpa2UgPT09ICJib29sZWFuIikgewogICAgICAgICAgICByZXR1cm4gcnVsZS5pc1J1bGVzZXRMaWtlOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJ1bGUuaXNSdWxlc2V0TGlrZSA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICByZXR1cm4gcnVsZS5pc1J1bGVzZXRMaWtlKCk7CiAgICAgICAgfQoKICAgICAgICAvL2FueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhIHJ1bGUKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgdmFyIGNoYXJzZXROb2RlSW5kZXggPSAwOwogICAgdmFyIGltcG9ydE5vZGVJbmRleCA9IDA7CiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5ydWxlcy5sZW5ndGg7IGkrKykgewogICAgICAgIHJ1bGUgPSB0aGlzLnJ1bGVzW2ldOwogICAgICAgIGlmIChydWxlLnR5cGUgPT09ICJDb21tZW50IikgewogICAgICAgICAgICBpZiAoaW1wb3J0Tm9kZUluZGV4ID09PSBpKSB7CiAgICAgICAgICAgICAgICBpbXBvcnROb2RlSW5kZXgrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBydWxlTm9kZXMucHVzaChydWxlKTsKICAgICAgICB9IGVsc2UgaWYgKHJ1bGUuaXNDaGFyc2V0ICYmIHJ1bGUuaXNDaGFyc2V0KCkpIHsKICAgICAgICAgICAgcnVsZU5vZGVzLnNwbGljZShjaGFyc2V0Tm9kZUluZGV4LCAwLCBydWxlKTsKICAgICAgICAgICAgY2hhcnNldE5vZGVJbmRleCsrOwogICAgICAgICAgICBpbXBvcnROb2RlSW5kZXgrKzsKICAgICAgICB9IGVsc2UgaWYgKHJ1bGUudHlwZSA9PT0gIkltcG9ydCIpIHsKICAgICAgICAgICAgcnVsZU5vZGVzLnNwbGljZShpbXBvcnROb2RlSW5kZXgsIDAsIHJ1bGUpOwogICAgICAgICAgICBpbXBvcnROb2RlSW5kZXgrKzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBydWxlTm9kZXMucHVzaChydWxlKTsKICAgICAgICB9CiAgICB9CiAgICBydWxlTm9kZXMgPSBjaGFyc2V0UnVsZU5vZGVzLmNvbmNhdChydWxlTm9kZXMpOwoKICAgIC8vIElmIHRoaXMgaXMgdGhlIHJvb3Qgbm9kZSwgd2UgZG9uJ3QgcmVuZGVyCiAgICAvLyBhIHNlbGVjdG9yLCBvciB7fS4KICAgIGlmICghdGhpcy5yb290KSB7CiAgICAgICAgZGVidWdJbmZvID0gZ2V0RGVidWdJbmZvKGNvbnRleHQsIHRoaXMsIHRhYlNldFN0cik7CgogICAgICAgIGlmIChkZWJ1Z0luZm8pIHsKICAgICAgICAgICAgb3V0cHV0LmFkZChkZWJ1Z0luZm8pOwogICAgICAgICAgICBvdXRwdXQuYWRkKHRhYlNldFN0cik7CiAgICAgICAgfQoKICAgICAgICB2YXIgcGF0aHMgPSB0aGlzLnBhdGhzLCBwYXRoQ250ID0gcGF0aHMubGVuZ3RoLAogICAgICAgICAgICBwYXRoU3ViQ250OwoKICAgICAgICBzZXAgPSBjb250ZXh0LmNvbXByZXNzID8gJywnIDogKCcsXG4nICsgdGFiU2V0U3RyKTsKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBhdGhDbnQ7IGkrKykgewogICAgICAgICAgICBwYXRoID0gcGF0aHNbaV07CiAgICAgICAgICAgIGlmICghKHBhdGhTdWJDbnQgPSBwYXRoLmxlbmd0aCkpIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKGkgPiAwKSB7IG91dHB1dC5hZGQoc2VwKTsgfQoKICAgICAgICAgICAgY29udGV4dC5maXJzdFNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgcGF0aFswXS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKCiAgICAgICAgICAgIGNvbnRleHQuZmlyc3RTZWxlY3RvciA9IGZhbHNlOwogICAgICAgICAgICBmb3IgKGogPSAxOyBqIDwgcGF0aFN1YkNudDsgaisrKSB7CiAgICAgICAgICAgICAgICBwYXRoW2pdLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBvdXRwdXQuYWRkKChjb250ZXh0LmNvbXByZXNzID8gJ3snIDogJyB7XG4nKSArIHRhYlJ1bGVTdHIpOwogICAgfQoKICAgIC8vIENvbXBpbGUgcnVsZXMgYW5kIHJ1bGVzZXRzCiAgICBmb3IgKGkgPSAwOyBpIDwgcnVsZU5vZGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgcnVsZSA9IHJ1bGVOb2Rlc1tpXTsKCiAgICAgICAgaWYgKGkgKyAxID09PSBydWxlTm9kZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIGNvbnRleHQubGFzdFJ1bGUgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIGN1cnJlbnRMYXN0UnVsZSA9IGNvbnRleHQubGFzdFJ1bGU7CiAgICAgICAgaWYgKGlzUnVsZXNldExpa2VOb2RlKHJ1bGUpKSB7CiAgICAgICAgICAgIGNvbnRleHQubGFzdFJ1bGUgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChydWxlLmdlbkNTUykgewogICAgICAgICAgICBydWxlLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgIH0gZWxzZSBpZiAocnVsZS52YWx1ZSkgewogICAgICAgICAgICBvdXRwdXQuYWRkKHJ1bGUudmFsdWUudG9TdHJpbmcoKSk7CiAgICAgICAgfQoKICAgICAgICBjb250ZXh0Lmxhc3RSdWxlID0gY3VycmVudExhc3RSdWxlOwoKICAgICAgICBpZiAoIWNvbnRleHQubGFzdFJ1bGUpIHsKICAgICAgICAgICAgb3V0cHV0LmFkZChjb250ZXh0LmNvbXByZXNzID8gJycgOiAoJ1xuJyArIHRhYlJ1bGVTdHIpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb250ZXh0Lmxhc3RSdWxlID0gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIGlmICghdGhpcy5yb290KSB7CiAgICAgICAgb3V0cHV0LmFkZCgoY29udGV4dC5jb21wcmVzcyA/ICd9JyA6ICdcbicgKyB0YWJTZXRTdHIgKyAnfScpKTsKICAgICAgICBjb250ZXh0LnRhYkxldmVsLS07CiAgICB9CgogICAgaWYgKCFvdXRwdXQuaXNFbXB0eSgpICYmICFjb250ZXh0LmNvbXByZXNzICYmIHRoaXMuZmlyc3RSb290KSB7CiAgICAgICAgb3V0cHV0LmFkZCgnXG4nKTsKICAgIH0KfTsKUnVsZXNldC5wcm90b3R5cGUubWFya1JlZmVyZW5jZWQgPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgczsKICAgIGlmICh0aGlzLnNlbGVjdG9ycykgewogICAgICAgIGZvciAocyA9IDA7IHMgPCB0aGlzLnNlbGVjdG9ycy5sZW5ndGg7IHMrKykgewogICAgICAgICAgICB0aGlzLnNlbGVjdG9yc1tzXS5tYXJrUmVmZXJlbmNlZCgpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAodGhpcy5ydWxlcykgewogICAgICAgIGZvciAocyA9IDA7IHMgPCB0aGlzLnJ1bGVzLmxlbmd0aDsgcysrKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnJ1bGVzW3NdLm1hcmtSZWZlcmVuY2VkKSB7CiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzW3NdLm1hcmtSZWZlcmVuY2VkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn07ClJ1bGVzZXQucHJvdG90eXBlLmdldElzUmVmZXJlbmNlZCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGksIGosIHBhdGgsIHNlbGVjdG9yOwoKICAgIGlmICh0aGlzLnBhdGhzKSB7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMucGF0aHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgcGF0aCA9IHRoaXMucGF0aHNbaV07CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBwYXRoLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAocGF0aFtqXS5nZXRJc1JlZmVyZW5jZWQgJiYgcGF0aFtqXS5nZXRJc1JlZmVyZW5jZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICh0aGlzLnNlbGVjdG9ycykgewogICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLnNlbGVjdG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBzZWxlY3RvciA9IHRoaXMuc2VsZWN0b3JzW2ldOwogICAgICAgICAgICBpZiAoc2VsZWN0b3IuZ2V0SXNSZWZlcmVuY2VkICYmIHNlbGVjdG9yLmdldElzUmVmZXJlbmNlZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBmYWxzZTsKfTsKClJ1bGVzZXQucHJvdG90eXBlLmpvaW5TZWxlY3RvcnMgPSBmdW5jdGlvbiAocGF0aHMsIGNvbnRleHQsIHNlbGVjdG9ycykgewogICAgZm9yICh2YXIgcyA9IDA7IHMgPCBzZWxlY3RvcnMubGVuZ3RoOyBzKyspIHsKICAgICAgICB0aGlzLmpvaW5TZWxlY3RvcihwYXRocywgY29udGV4dCwgc2VsZWN0b3JzW3NdKTsKICAgIH0KfTsKClJ1bGVzZXQucHJvdG90eXBlLmpvaW5TZWxlY3RvciA9IGZ1bmN0aW9uIChwYXRocywgY29udGV4dCwgc2VsZWN0b3IpIHsKCiAgICBmdW5jdGlvbiBjcmVhdGVQYXJlbnRoZXNpcyhlbGVtZW50c1RvUGFrLCBvcmlnaW5hbEVsZW1lbnQpIHsKICAgICAgICB2YXIgcmVwbGFjZW1lbnRQYXJlbiwgajsKICAgICAgICBpZiAoZWxlbWVudHNUb1Bhay5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXJlbiA9IG5ldyBQYXJlbihlbGVtZW50c1RvUGFrWzBdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgaW5zaWRlUGFyZW50ID0gW107CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBlbGVtZW50c1RvUGFrLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICBpbnNpZGVQYXJlbnQucHVzaChuZXcgRWxlbWVudChudWxsLCBlbGVtZW50c1RvUGFrW2pdLCBvcmlnaW5hbEVsZW1lbnQuaW5kZXgsIG9yaWdpbmFsRWxlbWVudC5jdXJyZW50RmlsZUluZm8pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXBsYWNlbWVudFBhcmVuID0gbmV3IFBhcmVuKG5ldyBTZWxlY3RvcihpbnNpZGVQYXJlbnQpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50UGFyZW47CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlU2VsZWN0b3IoY29udGFpbmVkRWxlbWVudCwgb3JpZ2luYWxFbGVtZW50KSB7CiAgICAgICAgdmFyIGVsZW1lbnQsIHNlbGVjdG9yOwogICAgICAgIGVsZW1lbnQgPSBuZXcgRWxlbWVudChudWxsLCBjb250YWluZWRFbGVtZW50LCBvcmlnaW5hbEVsZW1lbnQuaW5kZXgsIG9yaWdpbmFsRWxlbWVudC5jdXJyZW50RmlsZUluZm8pOwogICAgICAgIHNlbGVjdG9yID0gbmV3IFNlbGVjdG9yKFtlbGVtZW50XSk7CiAgICAgICAgcmV0dXJuIHNlbGVjdG9yOwogICAgfQoKICAgIC8vIHJlcGxhY2UgYWxsIHBhcmVudCBzZWxlY3RvcnMgaW5zaWRlIGBpblNlbGVjdG9yYCBieSBjb250ZW50IG9mIGBjb250ZXh0YCBhcnJheQogICAgLy8gcmVzdWx0aW5nIHNlbGVjdG9ycyBhcmUgcmV0dXJuZWQgaW5zaWRlIGBwYXRoc2AgYXJyYXkKICAgIC8vIHJldHVybnMgdHJ1ZSBpZiBgaW5TZWxlY3RvcmAgY29udGFpbmVkIGF0IGxlYXN0IG9uZSBwYXJlbnQgc2VsZWN0b3IKICAgIGZ1bmN0aW9uIHJlcGxhY2VQYXJlbnRTZWxlY3RvcihwYXRocywgY29udGV4dCwgaW5TZWxlY3RvcikgewogICAgICAgIC8vIFRoZSBwYXRocyBhcmUgW1tTZWxlY3Rvcl1dCiAgICAgICAgLy8gVGhlIGZpcnN0IGxpc3QgaXMgYSBsaXN0IG9mIGNvbW1hIHNlcGFyYXRlZCBzZWxlY3RvcnMKICAgICAgICAvLyBUaGUgaW5uZXIgbGlzdCBpcyBhIGxpc3Qgb2YgaW5oZXJpdGFuY2Ugc2VwYXJhdGVkIHNlbGVjdG9ycwogICAgICAgIC8vIGUuZy4KICAgICAgICAvLyAuYSwgLmIgewogICAgICAgIC8vICAgLmMgewogICAgICAgIC8vICAgfQogICAgICAgIC8vIH0KICAgICAgICAvLyA9PSBbWy5hXSBbLmNdXSBbWy5iXSBbLmNdXQogICAgICAgIC8vCiAgICAgICAgdmFyIGksIGosIGssIGN1cnJlbnRFbGVtZW50cywgbmV3U2VsZWN0b3JzLCBzZWxlY3RvcnNNdWx0aXBsaWVkLCBzZWwsIGVsLCBoYWRQYXJlbnRTZWxlY3RvciA9IGZhbHNlLCBsZW5ndGgsIGxhc3RTZWxlY3RvcjsKICAgICAgICBmdW5jdGlvbiBmaW5kTmVzdGVkU2VsZWN0b3IoZWxlbWVudCkgewogICAgICAgICAgICB2YXIgbWF5YmVTZWxlY3RvcjsKICAgICAgICAgICAgaWYgKGVsZW1lbnQudmFsdWUudHlwZSAhPT0gJ1BhcmVuJykgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG1heWJlU2VsZWN0b3IgPSBlbGVtZW50LnZhbHVlLnZhbHVlOwogICAgICAgICAgICBpZiAobWF5YmVTZWxlY3Rvci50eXBlICE9PSAnU2VsZWN0b3InKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG1heWJlU2VsZWN0b3I7CiAgICAgICAgfQoKICAgICAgICAvLyB0aGUgZWxlbWVudHMgZnJvbSB0aGUgY3VycmVudCBzZWxlY3RvciBzbyBmYXIKICAgICAgICBjdXJyZW50RWxlbWVudHMgPSBbXTsKICAgICAgICAvLyB0aGUgY3VycmVudCBsaXN0IG9mIG5ldyBzZWxlY3RvcnMgdG8gYWRkIHRvIHRoZSBwYXRoLgogICAgICAgIC8vIFdlIHdpbGwgYnVpbGQgaXQgdXAuIFdlIGluaXRpYXRlIGl0IHdpdGggb25lIGVtcHR5IHNlbGVjdG9yIGFzIHdlICJtdWx0aXBseSIgdGhlIG5ldyBzZWxlY3RvcnMKICAgICAgICAvLyBieSB0aGUgcGFyZW50cwogICAgICAgIG5ld1NlbGVjdG9ycyA9IFsKICAgICAgICAgICAgW10KICAgICAgICBdOwoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW5TZWxlY3Rvci5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBlbCA9IGluU2VsZWN0b3IuZWxlbWVudHNbaV07CiAgICAgICAgICAgIC8vIG5vbiBwYXJlbnQgcmVmZXJlbmNlIGVsZW1lbnRzIGp1c3QgZ2V0IGFkZGVkCiAgICAgICAgICAgIGlmIChlbC52YWx1ZSAhPT0gIiYiKSB7CiAgICAgICAgICAgICAgICB2YXIgbmVzdGVkU2VsZWN0b3IgPSBmaW5kTmVzdGVkU2VsZWN0b3IoZWwpOwogICAgICAgICAgICAgICAgaWYgKG5lc3RlZFNlbGVjdG9yICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAvLyBtZXJnZSB0aGUgY3VycmVudCBsaXN0IG9mIG5vbiBwYXJlbnQgc2VsZWN0b3IgZWxlbWVudHMKICAgICAgICAgICAgICAgICAgICAvLyBvbiB0byB0aGUgY3VycmVudCBsaXN0IG9mIHNlbGVjdG9ycyB0byBhZGQKICAgICAgICAgICAgICAgICAgICBtZXJnZUVsZW1lbnRzT25Ub1NlbGVjdG9ycyhjdXJyZW50RWxlbWVudHMsIG5ld1NlbGVjdG9ycyk7CgogICAgICAgICAgICAgICAgICAgIHZhciBuZXN0ZWRQYXRocyA9IFtdLCByZXBsYWNlZCwgcmVwbGFjZWROZXdTZWxlY3RvcnMgPSBbXTsKICAgICAgICAgICAgICAgICAgICByZXBsYWNlZCA9IHJlcGxhY2VQYXJlbnRTZWxlY3RvcihuZXN0ZWRQYXRocywgY29udGV4dCwgbmVzdGVkU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgICAgIGhhZFBhcmVudFNlbGVjdG9yID0gaGFkUGFyZW50U2VsZWN0b3IgfHwgcmVwbGFjZWQ7CiAgICAgICAgICAgICAgICAgICAgLy90aGUgbmVzdGVkUGF0aHMgYXJyYXkgc2hvdWxkIGhhdmUgb25seSBvbmUgbWVtYmVyIC0gcmVwbGFjZVBhcmVudFNlbGVjdG9yIGRvZXMgbm90IG11bHRpcGx5IHNlbGVjdG9ycwogICAgICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBuZXN0ZWRQYXRocy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZW1lbnRTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGNyZWF0ZVBhcmVudGhlc2lzKG5lc3RlZFBhdGhzW2tdLCBlbCksIGVsKTsKICAgICAgICAgICAgICAgICAgICAgICAgYWRkQWxsUmVwbGFjZW1lbnRzSW50b1BhdGgobmV3U2VsZWN0b3JzLCBbcmVwbGFjZW1lbnRTZWxlY3Rvcl0sIGVsLCBpblNlbGVjdG9yLCByZXBsYWNlZE5ld1NlbGVjdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9ycyA9IHJlcGxhY2VkTmV3U2VsZWN0b3JzOwogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50cyA9IFtdOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnRzLnB1c2goZWwpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGhhZFBhcmVudFNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgIC8vIHRoZSBuZXcgbGlzdCBvZiBzZWxlY3RvcnMgdG8gYWRkCiAgICAgICAgICAgICAgICBzZWxlY3RvcnNNdWx0aXBsaWVkID0gW107CgogICAgICAgICAgICAgICAgLy8gbWVyZ2UgdGhlIGN1cnJlbnQgbGlzdCBvZiBub24gcGFyZW50IHNlbGVjdG9yIGVsZW1lbnRzCiAgICAgICAgICAgICAgICAvLyBvbiB0byB0aGUgY3VycmVudCBsaXN0IG9mIHNlbGVjdG9ycyB0byBhZGQKICAgICAgICAgICAgICAgIG1lcmdlRWxlbWVudHNPblRvU2VsZWN0b3JzKGN1cnJlbnRFbGVtZW50cywgbmV3U2VsZWN0b3JzKTsKCiAgICAgICAgICAgICAgICAvLyBsb29wIHRocm91Z2ggb3VyIGN1cnJlbnQgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbmV3U2VsZWN0b3JzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsID0gbmV3U2VsZWN0b3JzW2pdOwogICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGRvbid0IGhhdmUgYW55IHBhcmVudCBwYXRocywgdGhlICYgbWlnaHQgYmUgaW4gYSBtaXhpbiBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgLy8gd2hldGhlciB0aGVyZSBhcmUgcGFyZW50cyBvciBub3QKICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvbWJpbmF0b3IgdXNlZCBvbiBlbCBzaG91bGQgbm93IGJlIGFwcGxpZWQgdG8gdGhlIG5leHQgZWxlbWVudCBpbnN0ZWFkIHNvIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgaXMgbm90IGxvc3QKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxbMF0uZWxlbWVudHMucHVzaChuZXcgRWxlbWVudChlbC5jb21iaW5hdG9yLCAnJywgZWwuaW5kZXgsIGVsLmN1cnJlbnRGaWxlSW5mbykpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yc011bHRpcGxpZWQucHVzaChzZWwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBwYXJlbnQgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBjb250ZXh0Lmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHB1dCB0aGUgY3VycmVudCBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gam9pbiB0aGUgbGFzdCBzZWxlY3RvcidzIGVsZW1lbnRzIG9uIHRvIHRoZSBwYXJlbnRzIHNlbGVjdG9ycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1NlbGVjdG9yUGF0aCA9IGFkZFJlcGxhY2VtZW50SW50b1BhdGgoc2VsLCBjb250ZXh0W2tdLCBlbCwgaW5TZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdGhhdCB0byBvdXIgbmV3IHNldCBvZiBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yc011bHRpcGxpZWQucHVzaChuZXdTZWxlY3RvclBhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIG91ciBuZXcgc2VsZWN0b3JzIGhhcyBiZWVuIG11bHRpcGxpZWQsIHNvIHJlc2V0IHRoZSBzdGF0ZQogICAgICAgICAgICAgICAgbmV3U2VsZWN0b3JzID0gc2VsZWN0b3JzTXVsdGlwbGllZDsKICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50cyA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBpZiB3ZSBoYXZlIGFueSBlbGVtZW50cyBsZWZ0IG92ZXIgKGUuZy4gLmEmIC5iID09IC5iKQogICAgICAgIC8vIGFkZCB0aGVtIG9uIHRvIGFsbCB0aGUgY3VycmVudCBzZWxlY3RvcnMKICAgICAgICBtZXJnZUVsZW1lbnRzT25Ub1NlbGVjdG9ycyhjdXJyZW50RWxlbWVudHMsIG5ld1NlbGVjdG9ycyk7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXdTZWxlY3RvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgbGVuZ3RoID0gbmV3U2VsZWN0b3JzW2ldLmxlbmd0aDsKICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHBhdGhzLnB1c2gobmV3U2VsZWN0b3JzW2ldKTsKICAgICAgICAgICAgICAgIGxhc3RTZWxlY3RvciA9IG5ld1NlbGVjdG9yc1tpXVtsZW5ndGggLSAxXTsKICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9yc1tpXVtsZW5ndGggLSAxXSA9IGxhc3RTZWxlY3Rvci5jcmVhdGVEZXJpdmVkKGxhc3RTZWxlY3Rvci5lbGVtZW50cywgaW5TZWxlY3Rvci5leHRlbmRMaXN0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGhhZFBhcmVudFNlbGVjdG9yOwogICAgfQoKICAgIC8vIGpvaW5zIHNlbGVjdG9yIHBhdGggZnJvbSBgYmVnaW5uaW5nUGF0aGAgd2l0aCBzZWxlY3RvciBwYXRoIGluIGBhZGRQYXRoYAogICAgLy8gYHJlcGxhY2VkRWxlbWVudGAgY29udGFpbnMgZWxlbWVudCB0aGF0IGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGBhZGRQYXRoYAogICAgLy8gcmV0dXJucyBjb25jYXRlbmF0ZWQgcGF0aAogICAgZnVuY3Rpb24gYWRkUmVwbGFjZW1lbnRJbnRvUGF0aChiZWdpbm5pbmdQYXRoLCBhZGRQYXRoLCByZXBsYWNlZEVsZW1lbnQsIG9yaWdpbmFsU2VsZWN0b3IpIHsKICAgICAgICB2YXIgbmV3U2VsZWN0b3JQYXRoLCBsYXN0U2VsZWN0b3IsIG5ld0pvaW5lZFNlbGVjdG9yOwogICAgICAgIC8vIG91ciBuZXcgc2VsZWN0b3IgcGF0aAogICAgICAgIG5ld1NlbGVjdG9yUGF0aCA9IFtdOwoKICAgICAgICAvL2NvbnN0cnVjdCB0aGUgam9pbmVkIHNlbGVjdG9yIC0gaWYgJiBpcyB0aGUgZmlyc3QgdGhpbmcgdGhpcyB3aWxsIGJlIGVtcHR5LAogICAgICAgIC8vIGlmIG5vdCBuZXdKb2luZWRTZWxlY3RvciB3aWxsIGJlIHRoZSBsYXN0IHNldCBvZiBlbGVtZW50cyBpbiB0aGUgc2VsZWN0b3IKICAgICAgICBpZiAoYmVnaW5uaW5nUGF0aC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIG5ld1NlbGVjdG9yUGF0aCA9IGJlZ2lubmluZ1BhdGguc2xpY2UoMCk7CiAgICAgICAgICAgIGxhc3RTZWxlY3RvciA9IG5ld1NlbGVjdG9yUGF0aC5wb3AoKTsKICAgICAgICAgICAgbmV3Sm9pbmVkU2VsZWN0b3IgPSBvcmlnaW5hbFNlbGVjdG9yLmNyZWF0ZURlcml2ZWQobGFzdFNlbGVjdG9yLmVsZW1lbnRzLnNsaWNlKDApKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5ld0pvaW5lZFNlbGVjdG9yID0gb3JpZ2luYWxTZWxlY3Rvci5jcmVhdGVEZXJpdmVkKFtdKTsKICAgICAgICB9CgogICAgICAgIGlmIChhZGRQYXRoLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgLy8gL2RlZXAvIGlzIGEgY29tYmluYXRvciB0aGF0IGlzIHZhbGlkIHdpdGhvdXQgYW55dGhpbmcgaW4gZnJvbnQgb2YgaXQKICAgICAgICAgICAgLy8gc28gaWYgdGhlICYgZG9lcyBub3QgaGF2ZSBhIGNvbWJpbmF0b3IgdGhhdCBpcyAiIiBvciAiICIgdGhlbgogICAgICAgICAgICAvLyBhbmQgdGhlcmUgaXMgYSBjb21iaW5hdG9yIG9uIHRoZSBwYXJlbnQsIHRoZW4gZ3JhYiB0aGF0LgogICAgICAgICAgICAvLyB0aGlzIGFsc28gYWxsb3dzICsgYSB7ICYgLmIgeyAuYSAmIHsgLi4uIHRob3VnaCBub3Qgc3VyZSB3aHkgeW91IHdvdWxkIHdhbnQgdG8gZG8gdGhhdAogICAgICAgICAgICB2YXIgY29tYmluYXRvciA9IHJlcGxhY2VkRWxlbWVudC5jb21iaW5hdG9yLCBwYXJlbnRFbCA9IGFkZFBhdGhbMF0uZWxlbWVudHNbMF07CiAgICAgICAgICAgIGlmIChjb21iaW5hdG9yLmVtcHR5T3JXaGl0ZXNwYWNlICYmICFwYXJlbnRFbC5jb21iaW5hdG9yLmVtcHR5T3JXaGl0ZXNwYWNlKSB7CiAgICAgICAgICAgICAgICBjb21iaW5hdG9yID0gcGFyZW50RWwuY29tYmluYXRvcjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBqb2luIHRoZSBlbGVtZW50cyBzbyBmYXIgd2l0aCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgcGFyZW50CiAgICAgICAgICAgIG5ld0pvaW5lZFNlbGVjdG9yLmVsZW1lbnRzLnB1c2gobmV3IEVsZW1lbnQoY29tYmluYXRvciwgcGFyZW50RWwudmFsdWUsIHJlcGxhY2VkRWxlbWVudC5pbmRleCwgcmVwbGFjZWRFbGVtZW50LmN1cnJlbnRGaWxlSW5mbykpOwogICAgICAgICAgICBuZXdKb2luZWRTZWxlY3Rvci5lbGVtZW50cyA9IG5ld0pvaW5lZFNlbGVjdG9yLmVsZW1lbnRzLmNvbmNhdChhZGRQYXRoWzBdLmVsZW1lbnRzLnNsaWNlKDEpKTsKICAgICAgICB9CgogICAgICAgIC8vIG5vdyBhZGQgdGhlIGpvaW5lZCBzZWxlY3RvciAtIGJ1dCBvbmx5IGlmIGl0IGlzIG5vdCBlbXB0eQogICAgICAgIGlmIChuZXdKb2luZWRTZWxlY3Rvci5lbGVtZW50cy5sZW5ndGggIT09IDApIHsKICAgICAgICAgICAgbmV3U2VsZWN0b3JQYXRoLnB1c2gobmV3Sm9pbmVkU2VsZWN0b3IpOwogICAgICAgIH0KCiAgICAgICAgLy9wdXQgdG9nZXRoZXIgdGhlIHBhcmVudCBzZWxlY3RvcnMgYWZ0ZXIgdGhlIGpvaW4gKGUuZy4gdGhlIHJlc3Qgb2YgdGhlIHBhcmVudCkKICAgICAgICBpZiAoYWRkUGF0aC5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgIG5ld1NlbGVjdG9yUGF0aCA9IG5ld1NlbGVjdG9yUGF0aC5jb25jYXQoYWRkUGF0aC5zbGljZSgxKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXdTZWxlY3RvclBhdGg7CiAgICB9CgogICAgLy8gam9pbnMgc2VsZWN0b3IgcGF0aCBmcm9tIGBiZWdpbm5pbmdQYXRoYCB3aXRoIGV2ZXJ5IHNlbGVjdG9yIHBhdGggaW4gYGFkZFBhdGhzYCBhcnJheQogICAgLy8gYHJlcGxhY2VkRWxlbWVudGAgY29udGFpbnMgZWxlbWVudCB0aGF0IGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGBhZGRQYXRoYAogICAgLy8gcmV0dXJucyBhcnJheSB3aXRoIGFsbCBjb25jYXRlbmF0ZWQgcGF0aHMKICAgIGZ1bmN0aW9uIGFkZEFsbFJlcGxhY2VtZW50c0ludG9QYXRoKCBiZWdpbm5pbmdQYXRoLCBhZGRQYXRocywgcmVwbGFjZWRFbGVtZW50LCBvcmlnaW5hbFNlbGVjdG9yLCByZXN1bHQpIHsKICAgICAgICB2YXIgajsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgYmVnaW5uaW5nUGF0aC5sZW5ndGg7IGorKykgewogICAgICAgICAgICB2YXIgbmV3U2VsZWN0b3JQYXRoID0gYWRkUmVwbGFjZW1lbnRJbnRvUGF0aChiZWdpbm5pbmdQYXRoW2pdLCBhZGRQYXRocywgcmVwbGFjZWRFbGVtZW50LCBvcmlnaW5hbFNlbGVjdG9yKTsKICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3U2VsZWN0b3JQYXRoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBmdW5jdGlvbiBtZXJnZUVsZW1lbnRzT25Ub1NlbGVjdG9ycyhlbGVtZW50cywgc2VsZWN0b3JzKSB7CiAgICAgICAgdmFyIGksIHNlbDsKCiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gOwogICAgICAgIH0KICAgICAgICBpZiAoc2VsZWN0b3JzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBzZWxlY3RvcnMucHVzaChbIG5ldyBTZWxlY3RvcihlbGVtZW50cykgXSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxlY3RvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc2VsID0gc2VsZWN0b3JzW2ldOwoKICAgICAgICAgICAgLy8gaWYgdGhlIHByZXZpb3VzIHRoaW5nIGluIHNlbCBpcyBhIHBhcmVudCB0aGlzIG5lZWRzIHRvIGpvaW4gb24gdG8gaXQKICAgICAgICAgICAgaWYgKHNlbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBzZWxbc2VsLmxlbmd0aCAtIDFdID0gc2VsW3NlbC5sZW5ndGggLSAxXS5jcmVhdGVEZXJpdmVkKHNlbFtzZWwubGVuZ3RoIC0gMV0uZWxlbWVudHMuY29uY2F0KGVsZW1lbnRzKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzZWwucHVzaChuZXcgU2VsZWN0b3IoZWxlbWVudHMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyBqb2luU2VsZWN0b3IgY29kZSBmb2xsb3dzCiAgICB2YXIgaSwgbmV3UGF0aHMsIGhhZFBhcmVudFNlbGVjdG9yOwoKICAgIG5ld1BhdGhzID0gW107CiAgICBoYWRQYXJlbnRTZWxlY3RvciA9IHJlcGxhY2VQYXJlbnRTZWxlY3RvcihuZXdQYXRocywgY29udGV4dCwgc2VsZWN0b3IpOwoKICAgIGlmICghaGFkUGFyZW50U2VsZWN0b3IpIHsKICAgICAgICBpZiAoY29udGV4dC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIG5ld1BhdGhzID0gW107CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZXh0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBuZXdQYXRocy5wdXNoKGNvbnRleHRbaV0uY29uY2F0KHNlbGVjdG9yKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5ld1BhdGhzID0gW1tzZWxlY3Rvcl1dOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKGkgPSAwOyBpIDwgbmV3UGF0aHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBwYXRocy5wdXNoKG5ld1BhdGhzW2ldKTsKICAgIH0KCn07Cm1vZHVsZS5leHBvcnRzID0gUnVsZXNldDsKCn0seyIuLi9jb250ZXh0cyI6MTAsIi4uL2Z1bmN0aW9ucy9kZWZhdWx0IjoxOSwiLi4vZnVuY3Rpb25zL2Z1bmN0aW9uLXJlZ2lzdHJ5IjoyMSwiLi9kZWJ1Zy1pbmZvIjo1MywiLi9lbGVtZW50Ijo1NywiLi9ub2RlIjo2OSwiLi9wYXJlbiI6NzEsIi4vcnVsZSI6NzMsIi4vc2VsZWN0b3IiOjc2fV0sNzY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewp2YXIgTm9kZSA9IHJlcXVpcmUoIi4vbm9kZSIpLAogICAgRWxlbWVudCA9IHJlcXVpcmUoIi4vZWxlbWVudCIpOwoKdmFyIFNlbGVjdG9yID0gZnVuY3Rpb24gKGVsZW1lbnRzLCBleHRlbmRMaXN0LCBjb25kaXRpb24sIGluZGV4LCBjdXJyZW50RmlsZUluZm8sIGlzUmVmZXJlbmNlZCkgewogICAgdGhpcy5lbGVtZW50cyA9IGVsZW1lbnRzOwogICAgdGhpcy5leHRlbmRMaXN0ID0gZXh0ZW5kTGlzdDsKICAgIHRoaXMuY29uZGl0aW9uID0gY29uZGl0aW9uOwogICAgdGhpcy5jdXJyZW50RmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm8gfHwge307CiAgICB0aGlzLmlzUmVmZXJlbmNlZCA9IGlzUmVmZXJlbmNlZDsKICAgIGlmICghY29uZGl0aW9uKSB7CiAgICAgICAgdGhpcy5ldmFsZENvbmRpdGlvbiA9IHRydWU7CiAgICB9Cn07ClNlbGVjdG9yLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7ClNlbGVjdG9yLnByb3RvdHlwZS50eXBlID0gIlNlbGVjdG9yIjsKU2VsZWN0b3IucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICBpZiAodGhpcy5lbGVtZW50cykgewogICAgICAgIHRoaXMuZWxlbWVudHMgPSB2aXNpdG9yLnZpc2l0QXJyYXkodGhpcy5lbGVtZW50cyk7CiAgICB9CiAgICBpZiAodGhpcy5leHRlbmRMaXN0KSB7CiAgICAgICAgdGhpcy5leHRlbmRMaXN0ID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMuZXh0ZW5kTGlzdCk7CiAgICB9CiAgICBpZiAodGhpcy5jb25kaXRpb24pIHsKICAgICAgICB0aGlzLmNvbmRpdGlvbiA9IHZpc2l0b3IudmlzaXQodGhpcy5jb25kaXRpb24pOwogICAgfQp9OwpTZWxlY3Rvci5wcm90b3R5cGUuY3JlYXRlRGVyaXZlZCA9IGZ1bmN0aW9uKGVsZW1lbnRzLCBleHRlbmRMaXN0LCBldmFsZENvbmRpdGlvbikgewogICAgZXZhbGRDb25kaXRpb24gPSAoZXZhbGRDb25kaXRpb24gIT0gbnVsbCkgPyBldmFsZENvbmRpdGlvbiA6IHRoaXMuZXZhbGRDb25kaXRpb247CiAgICB2YXIgbmV3U2VsZWN0b3IgPSBuZXcgU2VsZWN0b3IoZWxlbWVudHMsIGV4dGVuZExpc3QgfHwgdGhpcy5leHRlbmRMaXN0LCBudWxsLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbywgdGhpcy5pc1JlZmVyZW5jZWQpOwogICAgbmV3U2VsZWN0b3IuZXZhbGRDb25kaXRpb24gPSBldmFsZENvbmRpdGlvbjsKICAgIG5ld1NlbGVjdG9yLm1lZGlhRW1wdHkgPSB0aGlzLm1lZGlhRW1wdHk7CiAgICByZXR1cm4gbmV3U2VsZWN0b3I7Cn07ClNlbGVjdG9yLnByb3RvdHlwZS5jcmVhdGVFbXB0eVNlbGVjdG9ycyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGVsID0gbmV3IEVsZW1lbnQoJycsICcmJywgdGhpcy5pbmRleCwgdGhpcy5jdXJyZW50RmlsZUluZm8pLAogICAgICAgIHNlbHMgPSBbbmV3IFNlbGVjdG9yKFtlbF0sIG51bGwsIG51bGwsIHRoaXMuaW5kZXgsIHRoaXMuY3VycmVudEZpbGVJbmZvKV07CiAgICBzZWxzWzBdLm1lZGlhRW1wdHkgPSB0cnVlOwogICAgcmV0dXJuIHNlbHM7Cn07ClNlbGVjdG9yLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uIChvdGhlcikgewogICAgdmFyIGVsZW1lbnRzID0gdGhpcy5lbGVtZW50cywKICAgICAgICBsZW4gPSBlbGVtZW50cy5sZW5ndGgsCiAgICAgICAgb2xlbiwgaTsKCiAgICBvdGhlci5DYWNoZUVsZW1lbnRzKCk7CgogICAgb2xlbiA9IG90aGVyLl9lbGVtZW50cy5sZW5ndGg7CiAgICBpZiAob2xlbiA9PT0gMCB8fCBsZW4gPCBvbGVuKSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9IGVsc2UgewogICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGVuOyBpKyspIHsKICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnZhbHVlICE9PSBvdGhlci5fZWxlbWVudHNbaV0pIHsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBvbGVuOyAvLyByZXR1cm4gbnVtYmVyIG9mIG1hdGNoZWQgZWxlbWVudHMKfTsKU2VsZWN0b3IucHJvdG90eXBlLkNhY2hlRWxlbWVudHMgPSBmdW5jdGlvbigpIHsKICAgIGlmICh0aGlzLl9lbGVtZW50cykgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzLm1hcCggZnVuY3Rpb24odikgewogICAgICAgIHJldHVybiB2LmNvbWJpbmF0b3IudmFsdWUgKyAodi52YWx1ZS52YWx1ZSB8fCB2LnZhbHVlKTsKICAgIH0pLmpvaW4oIiIpLm1hdGNoKC9bLCYjXCpcLlx3LV0oW1x3LV18KFxcLikpKi9nKTsKCiAgICBpZiAoZWxlbWVudHMpIHsKICAgICAgICBpZiAoZWxlbWVudHNbMF0gPT09ICImIikgewogICAgICAgICAgICBlbGVtZW50cy5zaGlmdCgpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudHMgPSBbXTsKICAgIH0KCiAgICB0aGlzLl9lbGVtZW50cyA9IGVsZW1lbnRzOwp9OwpTZWxlY3Rvci5wcm90b3R5cGUuaXNKdXN0UGFyZW50U2VsZWN0b3IgPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiAhdGhpcy5tZWRpYUVtcHR5ICYmCiAgICAgICAgdGhpcy5lbGVtZW50cy5sZW5ndGggPT09IDEgJiYKICAgICAgICB0aGlzLmVsZW1lbnRzWzBdLnZhbHVlID09PSAnJicgJiYKICAgICAgICAodGhpcy5lbGVtZW50c1swXS5jb21iaW5hdG9yLnZhbHVlID09PSAnICcgfHwgdGhpcy5lbGVtZW50c1swXS5jb21iaW5hdG9yLnZhbHVlID09PSAnJyk7Cn07ClNlbGVjdG9yLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgIHZhciBldmFsZENvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uICYmIHRoaXMuY29uZGl0aW9uLmV2YWwoY29udGV4dCksCiAgICAgICAgZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzLCBleHRlbmRMaXN0ID0gdGhpcy5leHRlbmRMaXN0OwoKICAgIGVsZW1lbnRzID0gZWxlbWVudHMgJiYgZWxlbWVudHMubWFwKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLmV2YWwoY29udGV4dCk7IH0pOwogICAgZXh0ZW5kTGlzdCA9IGV4dGVuZExpc3QgJiYgZXh0ZW5kTGlzdC5tYXAoZnVuY3Rpb24oZXh0ZW5kKSB7IHJldHVybiBleHRlbmQuZXZhbChjb250ZXh0KTsgfSk7CgogICAgcmV0dXJuIHRoaXMuY3JlYXRlRGVyaXZlZChlbGVtZW50cywgZXh0ZW5kTGlzdCwgZXZhbGRDb25kaXRpb24pOwp9OwpTZWxlY3Rvci5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgdmFyIGksIGVsZW1lbnQ7CiAgICBpZiAoKCFjb250ZXh0IHx8ICFjb250ZXh0LmZpcnN0U2VsZWN0b3IpICYmIHRoaXMuZWxlbWVudHNbMF0uY29tYmluYXRvci52YWx1ZSA9PT0gIiIpIHsKICAgICAgICBvdXRwdXQuYWRkKCcgJywgdGhpcy5jdXJyZW50RmlsZUluZm8sIHRoaXMuaW5kZXgpOwogICAgfQogICAgaWYgKCF0aGlzLl9jc3MpIHsKICAgICAgICAvL1RPRE8gY2FjaGluZz8gc3BlZWQgY29tcGFyaXNvbj8KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBlbGVtZW50ID0gdGhpcy5lbGVtZW50c1tpXTsKICAgICAgICAgICAgZWxlbWVudC5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgICB9CiAgICB9Cn07ClNlbGVjdG9yLnByb3RvdHlwZS5tYXJrUmVmZXJlbmNlZCA9IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuaXNSZWZlcmVuY2VkID0gdHJ1ZTsKfTsKU2VsZWN0b3IucHJvdG90eXBlLmdldElzUmVmZXJlbmNlZCA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICF0aGlzLmN1cnJlbnRGaWxlSW5mby5yZWZlcmVuY2UgfHwgdGhpcy5pc1JlZmVyZW5jZWQ7Cn07ClNlbGVjdG9yLnByb3RvdHlwZS5nZXRJc091dHB1dCA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZXZhbGRDb25kaXRpb247Cn07Cm1vZHVsZS5leHBvcnRzID0gU2VsZWN0b3I7Cgp9LHsiLi9lbGVtZW50Ijo1NywiLi9ub2RlIjo2OX1dLDc3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKTsKCnZhciBVbmljb2RlRGVzY3JpcHRvciA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgdGhpcy52YWx1ZSA9IHZhbHVlOwp9OwpVbmljb2RlRGVzY3JpcHRvci5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpVbmljb2RlRGVzY3JpcHRvci5wcm90b3R5cGUudHlwZSA9ICJVbmljb2RlRGVzY3JpcHRvciI7Cgptb2R1bGUuZXhwb3J0cyA9IFVuaWNvZGVEZXNjcmlwdG9yOwoKfSx7Ii4vbm9kZSI6Njl9XSw3ODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBOb2RlID0gcmVxdWlyZSgiLi9ub2RlIiksCiAgICB1bml0Q29udmVyc2lvbnMgPSByZXF1aXJlKCIuLi9kYXRhL3VuaXQtY29udmVyc2lvbnMiKTsKCnZhciBVbml0ID0gZnVuY3Rpb24gKG51bWVyYXRvciwgZGVub21pbmF0b3IsIGJhY2t1cFVuaXQpIHsKICAgIHRoaXMubnVtZXJhdG9yID0gbnVtZXJhdG9yID8gbnVtZXJhdG9yLnNsaWNlKDApLnNvcnQoKSA6IFtdOwogICAgdGhpcy5kZW5vbWluYXRvciA9IGRlbm9taW5hdG9yID8gZGVub21pbmF0b3Iuc2xpY2UoMCkuc29ydCgpIDogW107CiAgICBpZiAoYmFja3VwVW5pdCkgewogICAgICAgIHRoaXMuYmFja3VwVW5pdCA9IGJhY2t1cFVuaXQ7CiAgICB9IGVsc2UgaWYgKG51bWVyYXRvciAmJiBudW1lcmF0b3IubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5iYWNrdXBVbml0ID0gbnVtZXJhdG9yWzBdOwogICAgfQp9OwoKVW5pdC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwpVbml0LnByb3RvdHlwZS50eXBlID0gIlVuaXQiOwpVbml0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiBuZXcgVW5pdCh0aGlzLm51bWVyYXRvci5zbGljZSgwKSwgdGhpcy5kZW5vbWluYXRvci5zbGljZSgwKSwgdGhpcy5iYWNrdXBVbml0KTsKfTsKVW5pdC5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgLy8gRGltZW5zaW9uIGNoZWNrcyB0aGUgdW5pdCBpcyBzaW5ndWxhciBhbmQgdGhyb3dzIGFuIGVycm9yIGlmIGluIHN0cmljdCBtYXRoIG1vZGUuCiAgICB2YXIgc3RyaWN0VW5pdHMgPSBjb250ZXh0ICYmIGNvbnRleHQuc3RyaWN0VW5pdHM7CiAgICBpZiAodGhpcy5udW1lcmF0b3IubGVuZ3RoID09PSAxKSB7CiAgICAgICAgb3V0cHV0LmFkZCh0aGlzLm51bWVyYXRvclswXSk7IC8vIHRoZSBpZGVhbCBzaXR1YXRpb24KICAgIH0gZWxzZSBpZiAoIXN0cmljdFVuaXRzICYmIHRoaXMuYmFja3VwVW5pdCkgewogICAgICAgIG91dHB1dC5hZGQodGhpcy5iYWNrdXBVbml0KTsKICAgIH0gZWxzZSBpZiAoIXN0cmljdFVuaXRzICYmIHRoaXMuZGVub21pbmF0b3IubGVuZ3RoKSB7CiAgICAgICAgb3V0cHV0LmFkZCh0aGlzLmRlbm9taW5hdG9yWzBdKTsKICAgIH0KfTsKVW5pdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgaSwgcmV0dXJuU3RyID0gdGhpcy5udW1lcmF0b3Iuam9pbigiKiIpOwogICAgZm9yIChpID0gMDsgaSA8IHRoaXMuZGVub21pbmF0b3IubGVuZ3RoOyBpKyspIHsKICAgICAgICByZXR1cm5TdHIgKz0gIi8iICsgdGhpcy5kZW5vbWluYXRvcltpXTsKICAgIH0KICAgIHJldHVybiByZXR1cm5TdHI7Cn07ClVuaXQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAob3RoZXIpIHsKICAgIHJldHVybiB0aGlzLmlzKG90aGVyLnRvU3RyaW5nKCkpID8gMCA6IHVuZGVmaW5lZDsKfTsKVW5pdC5wcm90b3R5cGUuaXMgPSBmdW5jdGlvbiAodW5pdFN0cmluZykgewogICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpID09PSB1bml0U3RyaW5nLnRvVXBwZXJDYXNlKCk7Cn07ClVuaXQucHJvdG90eXBlLmlzTGVuZ3RoID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIEJvb2xlYW4odGhpcy50b0NTUygpLm1hdGNoKC9weHxlbXwlfGlufGNtfG1tfHBjfHB0fGV4LykpOwp9OwpVbml0LnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHRoaXMubnVtZXJhdG9yLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmRlbm9taW5hdG9yLmxlbmd0aCA9PT0gMDsKfTsKVW5pdC5wcm90b3R5cGUuaXNTaW5ndWxhciA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMubnVtZXJhdG9yLmxlbmd0aCA8PSAxICYmIHRoaXMuZGVub21pbmF0b3IubGVuZ3RoID09PSAwOwp9OwpVbml0LnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgdmFyIGk7CgogICAgZm9yIChpID0gMDsgaSA8IHRoaXMubnVtZXJhdG9yLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdGhpcy5udW1lcmF0b3JbaV0gPSBjYWxsYmFjayh0aGlzLm51bWVyYXRvcltpXSwgZmFsc2UpOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmRlbm9taW5hdG9yLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdGhpcy5kZW5vbWluYXRvcltpXSA9IGNhbGxiYWNrKHRoaXMuZGVub21pbmF0b3JbaV0sIHRydWUpOwogICAgfQp9OwpVbml0LnByb3RvdHlwZS51c2VkVW5pdHMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBncm91cCwgcmVzdWx0ID0ge30sIG1hcFVuaXQ7CgogICAgbWFwVW5pdCA9IGZ1bmN0aW9uIChhdG9taWNVbml0KSB7CiAgICAgICAgLypqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSAqLwogICAgICAgIGlmIChncm91cC5oYXNPd25Qcm9wZXJ0eShhdG9taWNVbml0KSAmJiAhcmVzdWx0W2dyb3VwTmFtZV0pIHsKICAgICAgICAgICAgcmVzdWx0W2dyb3VwTmFtZV0gPSBhdG9taWNVbml0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGF0b21pY1VuaXQ7CiAgICB9OwoKICAgIGZvciAodmFyIGdyb3VwTmFtZSBpbiB1bml0Q29udmVyc2lvbnMpIHsKICAgICAgICBpZiAodW5pdENvbnZlcnNpb25zLmhhc093blByb3BlcnR5KGdyb3VwTmFtZSkpIHsKICAgICAgICAgICAgZ3JvdXAgPSB1bml0Q29udmVyc2lvbnNbZ3JvdXBOYW1lXTsKCiAgICAgICAgICAgIHRoaXMubWFwKG1hcFVuaXQpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcmVzdWx0Owp9OwpVbml0LnByb3RvdHlwZS5jYW5jZWwgPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgY291bnRlciA9IHt9LCBhdG9taWNVbml0LCBpOwoKICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLm51bWVyYXRvci5sZW5ndGg7IGkrKykgewogICAgICAgIGF0b21pY1VuaXQgPSB0aGlzLm51bWVyYXRvcltpXTsKICAgICAgICBjb3VudGVyW2F0b21pY1VuaXRdID0gKGNvdW50ZXJbYXRvbWljVW5pdF0gfHwgMCkgKyAxOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmRlbm9taW5hdG9yLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgYXRvbWljVW5pdCA9IHRoaXMuZGVub21pbmF0b3JbaV07CiAgICAgICAgY291bnRlclthdG9taWNVbml0XSA9IChjb3VudGVyW2F0b21pY1VuaXRdIHx8IDApIC0gMTsKICAgIH0KCiAgICB0aGlzLm51bWVyYXRvciA9IFtdOwogICAgdGhpcy5kZW5vbWluYXRvciA9IFtdOwoKICAgIGZvciAoYXRvbWljVW5pdCBpbiBjb3VudGVyKSB7CiAgICAgICAgaWYgKGNvdW50ZXIuaGFzT3duUHJvcGVydHkoYXRvbWljVW5pdCkpIHsKICAgICAgICAgICAgdmFyIGNvdW50ID0gY291bnRlclthdG9taWNVbml0XTsKCiAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1lcmF0b3IucHVzaChhdG9taWNVbml0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmIChjb3VudCA8IDApIHsKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAtY291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVub21pbmF0b3IucHVzaChhdG9taWNVbml0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLm51bWVyYXRvci5zb3J0KCk7CiAgICB0aGlzLmRlbm9taW5hdG9yLnNvcnQoKTsKfTsKbW9kdWxlLmV4cG9ydHMgPSBVbml0OwoKfSx7Ii4uL2RhdGEvdW5pdC1jb252ZXJzaW9ucyI6MTMsIi4vbm9kZSI6Njl9XSw3OTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBOb2RlID0gcmVxdWlyZSgiLi9ub2RlIik7Cgp2YXIgVVJMID0gZnVuY3Rpb24gKHZhbCwgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbywgaXNFdmFsZCkgewogICAgdGhpcy52YWx1ZSA9IHZhbDsKICAgIHRoaXMuY3VycmVudEZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogICAgdGhpcy5pbmRleCA9IGluZGV4OwogICAgdGhpcy5pc0V2YWxkID0gaXNFdmFsZDsKfTsKVVJMLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7ClVSTC5wcm90b3R5cGUudHlwZSA9ICJVcmwiOwpVUkwucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICB0aGlzLnZhbHVlID0gdmlzaXRvci52aXNpdCh0aGlzLnZhbHVlKTsKfTsKVVJMLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICBvdXRwdXQuYWRkKCJ1cmwoIik7CiAgICB0aGlzLnZhbHVlLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgb3V0cHV0LmFkZCgiKSIpOwp9OwpVUkwucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgdmFyIHZhbCA9IHRoaXMudmFsdWUuZXZhbChjb250ZXh0KSwKICAgICAgICByb290cGF0aDsKCiAgICBpZiAoIXRoaXMuaXNFdmFsZCkgewogICAgICAgIC8vIEFkZCB0aGUgYmFzZSBwYXRoIGlmIHRoZSBVUkwgaXMgcmVsYXRpdmUKICAgICAgICByb290cGF0aCA9IHRoaXMuY3VycmVudEZpbGVJbmZvICYmIHRoaXMuY3VycmVudEZpbGVJbmZvLnJvb3RwYXRoOwogICAgICAgIGlmIChyb290cGF0aCAmJgogICAgICAgICAgICB0eXBlb2YgdmFsLnZhbHVlID09PSAic3RyaW5nIiAmJgogICAgICAgICAgICBjb250ZXh0LmlzUGF0aFJlbGF0aXZlKHZhbC52YWx1ZSkpIHsKCiAgICAgICAgICAgIGlmICghdmFsLnF1b3RlKSB7CiAgICAgICAgICAgICAgICByb290cGF0aCA9IHJvb3RwYXRoLnJlcGxhY2UoL1tcKFwpJyJcc10vZywgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICJcXCIgKyBtYXRjaDsgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFsLnZhbHVlID0gcm9vdHBhdGggKyB2YWwudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YWwudmFsdWUgPSBjb250ZXh0Lm5vcm1hbGl6ZVBhdGgodmFsLnZhbHVlKTsKCiAgICAgICAgLy8gQWRkIHVybCBhcmdzIGlmIGVuYWJsZWQKICAgICAgICBpZiAoY29udGV4dC51cmxBcmdzKSB7CiAgICAgICAgICAgIGlmICghdmFsLnZhbHVlLm1hdGNoKC9eXHMqZGF0YTovKSkgewogICAgICAgICAgICAgICAgdmFyIGRlbGltaXRlciA9IHZhbC52YWx1ZS5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnOwogICAgICAgICAgICAgICAgdmFyIHVybEFyZ3MgPSBkZWxpbWl0ZXIgKyBjb250ZXh0LnVybEFyZ3M7CiAgICAgICAgICAgICAgICBpZiAodmFsLnZhbHVlLmluZGV4T2YoJyMnKSAhPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICB2YWwudmFsdWUgPSB2YWwudmFsdWUucmVwbGFjZSgnIycsIHVybEFyZ3MgKyAnIycpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YWwudmFsdWUgKz0gdXJsQXJnczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbmV3IFVSTCh2YWwsIHRoaXMuaW5kZXgsIHRoaXMuY3VycmVudEZpbGVJbmZvLCB0cnVlKTsKfTsKbW9kdWxlLmV4cG9ydHMgPSBVUkw7Cgp9LHsiLi9ub2RlIjo2OX1dLDgwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKTsKCnZhciBWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgaWYgKCF2YWx1ZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiVmFsdWUgcmVxdWlyZXMgYW4gYXJyYXkgYXJndW1lbnQiKTsKICAgIH0KfTsKVmFsdWUucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKVmFsdWUucHJvdG90eXBlLnR5cGUgPSAiVmFsdWUiOwpWYWx1ZS5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIGlmICh0aGlzLnZhbHVlKSB7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZpc2l0b3IudmlzaXRBcnJheSh0aGlzLnZhbHVlKTsKICAgIH0KfTsKVmFsdWUucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID09PSAxKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVbMF0uZXZhbChjb250ZXh0KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBWYWx1ZSh0aGlzLnZhbHVlLm1hcChmdW5jdGlvbiAodikgewogICAgICAgICAgICByZXR1cm4gdi5ldmFsKGNvbnRleHQpOwogICAgICAgIH0pKTsKICAgIH0KfTsKVmFsdWUucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgIHZhciBpOwogICAgZm9yIChpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHsKICAgICAgICB0aGlzLnZhbHVlW2ldLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgIGlmIChpICsgMSA8IHRoaXMudmFsdWUubGVuZ3RoKSB7CiAgICAgICAgICAgIG91dHB1dC5hZGQoKGNvbnRleHQgJiYgY29udGV4dC5jb21wcmVzcykgPyAnLCcgOiAnLCAnKTsKICAgICAgICB9CiAgICB9Cn07Cm1vZHVsZS5leHBvcnRzID0gVmFsdWU7Cgp9LHsiLi9ub2RlIjo2OX1dLDgxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIE5vZGUgPSByZXF1aXJlKCIuL25vZGUiKTsKCnZhciBWYXJpYWJsZSA9IGZ1bmN0aW9uIChuYW1lLCBpbmRleCwgY3VycmVudEZpbGVJbmZvKSB7CiAgICB0aGlzLm5hbWUgPSBuYW1lOwogICAgdGhpcy5pbmRleCA9IGluZGV4OwogICAgdGhpcy5jdXJyZW50RmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm8gfHwge307Cn07ClZhcmlhYmxlLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7ClZhcmlhYmxlLnByb3RvdHlwZS50eXBlID0gIlZhcmlhYmxlIjsKVmFyaWFibGUucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgdmFyIHZhcmlhYmxlLCBuYW1lID0gdGhpcy5uYW1lOwoKICAgIGlmIChuYW1lLmluZGV4T2YoJ0BAJykgPT09IDApIHsKICAgICAgICBuYW1lID0gJ0AnICsgbmV3IFZhcmlhYmxlKG5hbWUuc2xpY2UoMSksIHRoaXMuaW5kZXgsIHRoaXMuY3VycmVudEZpbGVJbmZvKS5ldmFsKGNvbnRleHQpLnZhbHVlOwogICAgfQoKICAgIGlmICh0aGlzLmV2YWx1YXRpbmcpIHsKICAgICAgICB0aHJvdyB7IHR5cGU6ICdOYW1lJywKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJSZWN1cnNpdmUgdmFyaWFibGUgZGVmaW5pdGlvbiBmb3IgIiArIG5hbWUsCiAgICAgICAgICAgICAgICBmaWxlbmFtZTogdGhpcy5jdXJyZW50RmlsZUluZm8uZmlsZW5hbWUsCiAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleCB9OwogICAgfQoKICAgIHRoaXMuZXZhbHVhdGluZyA9IHRydWU7CgogICAgdmFyaWFibGUgPSB0aGlzLmZpbmQoY29udGV4dC5mcmFtZXMsIGZ1bmN0aW9uIChmcmFtZSkgewogICAgICAgIHZhciB2ID0gZnJhbWUudmFyaWFibGUobmFtZSk7CiAgICAgICAgaWYgKHYpIHsKICAgICAgICAgICAgaWYgKHYuaW1wb3J0YW50KSB7CiAgICAgICAgICAgICAgICB2YXIgaW1wb3J0YW50U2NvcGUgPSBjb250ZXh0LmltcG9ydGFudFNjb3BlW2NvbnRleHQuaW1wb3J0YW50U2NvcGUubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICBpbXBvcnRhbnRTY29wZS5pbXBvcnRhbnQgPSB2LmltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdi52YWx1ZS5ldmFsKGNvbnRleHQpOwogICAgICAgIH0KICAgIH0pOwogICAgaWYgKHZhcmlhYmxlKSB7CiAgICAgICAgdGhpcy5ldmFsdWF0aW5nID0gZmFsc2U7CiAgICAgICAgcmV0dXJuIHZhcmlhYmxlOwogICAgfSBlbHNlIHsKICAgICAgICB0aHJvdyB7IHR5cGU6ICdOYW1lJywKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJ2YXJpYWJsZSAiICsgbmFtZSArICIgaXMgdW5kZWZpbmVkIiwKICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLmN1cnJlbnRGaWxlSW5mby5maWxlbmFtZSwKICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4IH07CiAgICB9Cn07ClZhcmlhYmxlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKG9iaiwgZnVuKSB7CiAgICBmb3IgKHZhciBpID0gMCwgcjsgaSA8IG9iai5sZW5ndGg7IGkrKykgewogICAgICAgIHIgPSBmdW4uY2FsbChvYmosIG9ialtpXSk7CiAgICAgICAgaWYgKHIpIHsgcmV0dXJuIHI7IH0KICAgIH0KICAgIHJldHVybiBudWxsOwp9Owptb2R1bGUuZXhwb3J0cyA9IFZhcmlhYmxlOwoKfSx7Ii4vbm9kZSI6Njl9XSw4MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cm1vZHVsZS5leHBvcnRzID0gewogICAgZ2V0TG9jYXRpb246IGZ1bmN0aW9uKGluZGV4LCBpbnB1dFN0cmVhbSkgewogICAgICAgIHZhciBuID0gaW5kZXggKyAxLAogICAgICAgICAgICBsaW5lID0gbnVsbCwKICAgICAgICAgICAgY29sdW1uID0gLTE7CgogICAgICAgIHdoaWxlICgtLW4gPj0gMCAmJiBpbnB1dFN0cmVhbS5jaGFyQXQobikgIT09ICdcbicpIHsKICAgICAgICAgICAgY29sdW1uKys7CiAgICAgICAgfQoKICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJykgewogICAgICAgICAgICBsaW5lID0gKGlucHV0U3RyZWFtLnNsaWNlKDAsIGluZGV4KS5tYXRjaCgvXG4vZykgfHwgIiIpLmxlbmd0aDsKICAgICAgICB9CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGxpbmU6IGxpbmUsCiAgICAgICAgICAgIGNvbHVtbjogY29sdW1uCiAgICAgICAgfTsKICAgIH0KfTsKCn0se31dLDgzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIHRyZWUgPSByZXF1aXJlKCIuLi90cmVlIiksCiAgICBWaXNpdG9yID0gcmVxdWlyZSgiLi92aXNpdG9yIiksCiAgICBsb2dnZXIgPSByZXF1aXJlKCIuLi9sb2dnZXIiKTsKCi8qanNoaW50IGxvb3BmdW5jOnRydWUgKi8KCnZhciBFeHRlbmRGaW5kZXJWaXNpdG9yID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLl92aXNpdG9yID0gbmV3IFZpc2l0b3IodGhpcyk7CiAgICB0aGlzLmNvbnRleHRzID0gW107CiAgICB0aGlzLmFsbEV4dGVuZHNTdGFjayA9IFtbXV07Cn07CgpFeHRlbmRGaW5kZXJWaXNpdG9yLnByb3RvdHlwZSA9IHsKICAgIHJ1bjogZnVuY3Rpb24gKHJvb3QpIHsKICAgICAgICByb290ID0gdGhpcy5fdmlzaXRvci52aXNpdChyb290KTsKICAgICAgICByb290LmFsbEV4dGVuZHMgPSB0aGlzLmFsbEV4dGVuZHNTdGFja1swXTsKICAgICAgICByZXR1cm4gcm9vdDsKICAgIH0sCiAgICB2aXNpdFJ1bGU6IGZ1bmN0aW9uIChydWxlTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgdmlzaXRBcmdzLnZpc2l0RGVlcGVyID0gZmFsc2U7CiAgICB9LAogICAgdmlzaXRNaXhpbkRlZmluaXRpb246IGZ1bmN0aW9uIChtaXhpbkRlZmluaXRpb25Ob2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKICAgIH0sCiAgICB2aXNpdFJ1bGVzZXQ6IGZ1bmN0aW9uIChydWxlc2V0Tm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgaWYgKHJ1bGVzZXROb2RlLnJvb3QpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIGksIGosIGV4dGVuZCwgYWxsU2VsZWN0b3JzRXh0ZW5kTGlzdCA9IFtdLCBleHRlbmRMaXN0OwoKICAgICAgICAvLyBnZXQgJjpleHRlbmQoLmEpOyBydWxlcyB3aGljaCBhcHBseSB0byBhbGwgc2VsZWN0b3JzIGluIHRoaXMgcnVsZXNldAogICAgICAgIHZhciBydWxlcyA9IHJ1bGVzZXROb2RlLnJ1bGVzLCBydWxlQ250ID0gcnVsZXMgPyBydWxlcy5sZW5ndGggOiAwOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBydWxlQ250OyBpKyspIHsKICAgICAgICAgICAgaWYgKHJ1bGVzZXROb2RlLnJ1bGVzW2ldIGluc3RhbmNlb2YgdHJlZS5FeHRlbmQpIHsKICAgICAgICAgICAgICAgIGFsbFNlbGVjdG9yc0V4dGVuZExpc3QucHVzaChydWxlc1tpXSk7CiAgICAgICAgICAgICAgICBydWxlc2V0Tm9kZS5leHRlbmRPbkV2ZXJ5UGF0aCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIG5vdyBmaW5kIGV2ZXJ5IHNlbGVjdG9yIGFuZCBhcHBseSB0aGUgZXh0ZW5kcyB0aGF0IGFwcGx5IHRvIGFsbCBleHRlbmRzCiAgICAgICAgLy8gYW5kIHRoZSBvbmVzIHdoaWNoIGFwcGx5IHRvIGFuIGluZGl2aWR1YWwgZXh0ZW5kCiAgICAgICAgdmFyIHBhdGhzID0gcnVsZXNldE5vZGUucGF0aHM7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBhdGhzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBzZWxlY3RvclBhdGggPSBwYXRoc1tpXSwKICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JQYXRoW3NlbGVjdG9yUGF0aC5sZW5ndGggLSAxXSwKICAgICAgICAgICAgICAgIHNlbEV4dGVuZExpc3QgPSBzZWxlY3Rvci5leHRlbmRMaXN0OwoKICAgICAgICAgICAgZXh0ZW5kTGlzdCA9IHNlbEV4dGVuZExpc3QgPyBzZWxFeHRlbmRMaXN0LnNsaWNlKDApLmNvbmNhdChhbGxTZWxlY3RvcnNFeHRlbmRMaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFsbFNlbGVjdG9yc0V4dGVuZExpc3Q7CgogICAgICAgICAgICBpZiAoZXh0ZW5kTGlzdCkgewogICAgICAgICAgICAgICAgZXh0ZW5kTGlzdCA9IGV4dGVuZExpc3QubWFwKGZ1bmN0aW9uKGFsbFNlbGVjdG9yc0V4dGVuZCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGxTZWxlY3RvcnNFeHRlbmQuY2xvbmUoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZXh0ZW5kTGlzdC5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgdGhpcy5mb3VuZEV4dGVuZHMgPSB0cnVlOwogICAgICAgICAgICAgICAgZXh0ZW5kID0gZXh0ZW5kTGlzdFtqXTsKICAgICAgICAgICAgICAgIGV4dGVuZC5maW5kU2VsZlNlbGVjdG9ycyhzZWxlY3RvclBhdGgpOwogICAgICAgICAgICAgICAgZXh0ZW5kLnJ1bGVzZXQgPSBydWxlc2V0Tm9kZTsKICAgICAgICAgICAgICAgIGlmIChqID09PSAwKSB7IGV4dGVuZC5maXJzdEV4dGVuZE9uVGhpc1NlbGVjdG9yUGF0aCA9IHRydWU7IH0KICAgICAgICAgICAgICAgIHRoaXMuYWxsRXh0ZW5kc1N0YWNrW3RoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCAtIDFdLnB1c2goZXh0ZW5kKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhpcy5jb250ZXh0cy5wdXNoKHJ1bGVzZXROb2RlLnNlbGVjdG9ycyk7CiAgICB9LAogICAgdmlzaXRSdWxlc2V0T3V0OiBmdW5jdGlvbiAocnVsZXNldE5vZGUpIHsKICAgICAgICBpZiAoIXJ1bGVzZXROb2RlLnJvb3QpIHsKICAgICAgICAgICAgdGhpcy5jb250ZXh0cy5sZW5ndGggPSB0aGlzLmNvbnRleHRzLmxlbmd0aCAtIDE7CiAgICAgICAgfQogICAgfSwKICAgIHZpc2l0TWVkaWE6IGZ1bmN0aW9uIChtZWRpYU5vZGUsIHZpc2l0QXJncykgewogICAgICAgIG1lZGlhTm9kZS5hbGxFeHRlbmRzID0gW107CiAgICAgICAgdGhpcy5hbGxFeHRlbmRzU3RhY2sucHVzaChtZWRpYU5vZGUuYWxsRXh0ZW5kcyk7CiAgICB9LAogICAgdmlzaXRNZWRpYU91dDogZnVuY3Rpb24gKG1lZGlhTm9kZSkgewogICAgICAgIHRoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCA9IHRoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCAtIDE7CiAgICB9LAogICAgdmlzaXREaXJlY3RpdmU6IGZ1bmN0aW9uIChkaXJlY3RpdmVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICBkaXJlY3RpdmVOb2RlLmFsbEV4dGVuZHMgPSBbXTsKICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFjay5wdXNoKGRpcmVjdGl2ZU5vZGUuYWxsRXh0ZW5kcyk7CiAgICB9LAogICAgdmlzaXREaXJlY3RpdmVPdXQ6IGZ1bmN0aW9uIChkaXJlY3RpdmVOb2RlKSB7CiAgICAgICAgdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoID0gdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoIC0gMTsKICAgIH0KfTsKCnZhciBQcm9jZXNzRXh0ZW5kc1Zpc2l0b3IgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMuX3Zpc2l0b3IgPSBuZXcgVmlzaXRvcih0aGlzKTsKfTsKClByb2Nlc3NFeHRlbmRzVmlzaXRvci5wcm90b3R5cGUgPSB7CiAgICBydW46IGZ1bmN0aW9uKHJvb3QpIHsKICAgICAgICB2YXIgZXh0ZW5kRmluZGVyID0gbmV3IEV4dGVuZEZpbmRlclZpc2l0b3IoKTsKICAgICAgICB0aGlzLmV4dGVuZEluZGljaWVzID0ge307CiAgICAgICAgZXh0ZW5kRmluZGVyLnJ1bihyb290KTsKICAgICAgICBpZiAoIWV4dGVuZEZpbmRlci5mb3VuZEV4dGVuZHMpIHsgcmV0dXJuIHJvb3Q7IH0KICAgICAgICByb290LmFsbEV4dGVuZHMgPSByb290LmFsbEV4dGVuZHMuY29uY2F0KHRoaXMuZG9FeHRlbmRDaGFpbmluZyhyb290LmFsbEV4dGVuZHMsIHJvb3QuYWxsRXh0ZW5kcykpOwogICAgICAgIHRoaXMuYWxsRXh0ZW5kc1N0YWNrID0gW3Jvb3QuYWxsRXh0ZW5kc107CiAgICAgICAgdmFyIG5ld1Jvb3QgPSB0aGlzLl92aXNpdG9yLnZpc2l0KHJvb3QpOwogICAgICAgIHRoaXMuY2hlY2tFeHRlbmRzRm9yTm9uTWF0Y2hlZChyb290LmFsbEV4dGVuZHMpOwogICAgICAgIHJldHVybiBuZXdSb290OwogICAgfSwKICAgIGNoZWNrRXh0ZW5kc0Zvck5vbk1hdGNoZWQ6IGZ1bmN0aW9uKGV4dGVuZExpc3QpIHsKICAgICAgICB2YXIgaW5kaWNpZXMgPSB0aGlzLmV4dGVuZEluZGljaWVzOwogICAgICAgIGV4dGVuZExpc3QuZmlsdGVyKGZ1bmN0aW9uKGV4dGVuZCkgewogICAgICAgICAgICByZXR1cm4gIWV4dGVuZC5oYXNGb3VuZE1hdGNoZXMgJiYgZXh0ZW5kLnBhcmVudF9pZHMubGVuZ3RoID09IDE7CiAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbihleHRlbmQpIHsKICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvciA9ICJfdW5rbm93bl8iOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGV4dGVuZC5zZWxlY3Rvci50b0NTUyh7fSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXRjaChfKSB7fQoKICAgICAgICAgICAgICAgIGlmICghaW5kaWNpZXNbZXh0ZW5kLmluZGV4ICsgJyAnICsgc2VsZWN0b3JdKSB7CiAgICAgICAgICAgICAgICAgICAgaW5kaWNpZXNbZXh0ZW5kLmluZGV4ICsgJyAnICsgc2VsZWN0b3JdID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiZXh0ZW5kICciICsgc2VsZWN0b3IgKyAiJyBoYXMgbm8gbWF0Y2hlcyIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgIH0sCiAgICBkb0V4dGVuZENoYWluaW5nOiBmdW5jdGlvbiAoZXh0ZW5kc0xpc3QsIGV4dGVuZHNMaXN0VGFyZ2V0LCBpdGVyYXRpb25Db3VudCkgewogICAgICAgIC8vCiAgICAgICAgLy8gY2hhaW5pbmcgaXMgZGlmZmVyZW50IGZyb20gbm9ybWFsIGV4dGVuc2lvbi4uIGlmIHdlIGV4dGVuZCBhbiBleHRlbmQgdGhlbiB3ZSBhcmUgbm90IGp1c3QgY29weWluZywgYWx0ZXJpbmcKICAgICAgICAvLyBhbmQgcGFzdGluZyB0aGUgc2VsZWN0b3Igd2Ugd291bGQgZG8gbm9ybWFsbHksIGJ1dCB3ZSBhcmUgYWxzbyBhZGRpbmcgYW4gZXh0ZW5kIHdpdGggdGhlIHNhbWUgdGFyZ2V0IHNlbGVjdG9yCiAgICAgICAgLy8gdGhpcyBtZWFucyB0aGlzIG5ldyBleHRlbmQgY2FuIHRoZW4gZ28gYW5kIGFsdGVyIG90aGVyIGV4dGVuZHMKICAgICAgICAvLwogICAgICAgIC8vIHRoaXMgbWV0aG9kIGRlYWxzIHdpdGggYWxsIHRoZSBjaGFpbmluZyB3b3JrIC0gd2l0aG91dCBpdCwgZXh0ZW5kIGlzIGZsYXQgYW5kIGRvZXNuJ3Qgd29yayBvbiBvdGhlciBleHRlbmQgc2VsZWN0b3JzCiAgICAgICAgLy8gdGhpcyBpcyBhbHNvIHRoZSBtb3N0IGV4cGVuc2l2ZS4uIGFuZCBhIG1hdGNoIG9uIG9uZSBzZWxlY3RvciBjYW4gY2F1c2UgYW4gZXh0ZW5zaW9uIG9mIGEgc2VsZWN0b3Igd2UgaGFkIGFscmVhZHkKICAgICAgICAvLyBwcm9jZXNzZWQgaWYgd2UgbG9vayBhdCBlYWNoIHNlbGVjdG9yIGF0IGEgdGltZSwgYXMgaXMgZG9uZSBpbiB2aXNpdFJ1bGVzZXQKCiAgICAgICAgdmFyIGV4dGVuZEluZGV4LCB0YXJnZXRFeHRlbmRJbmRleCwgbWF0Y2hlcywgZXh0ZW5kc1RvQWRkID0gW10sIG5ld1NlbGVjdG9yLCBleHRlbmRWaXNpdG9yID0gdGhpcywgc2VsZWN0b3JQYXRoLAogICAgICAgICAgICBleHRlbmQsIHRhcmdldEV4dGVuZCwgbmV3RXh0ZW5kOwoKICAgICAgICBpdGVyYXRpb25Db3VudCA9IGl0ZXJhdGlvbkNvdW50IHx8IDA7CgogICAgICAgIC8vbG9vcCB0aHJvdWdoIGNvbXBhcmluZyBldmVyeSBleHRlbmQgd2l0aCBldmVyeSB0YXJnZXQgZXh0ZW5kLgogICAgICAgIC8vIGEgdGFyZ2V0IGV4dGVuZCBpcyB0aGUgb25lIG9uIHRoZSBydWxlc2V0IHdlIGFyZSBsb29raW5nIGF0IGNvcHkvZWRpdC9wYXN0aW5nIGluIHBsYWNlCiAgICAgICAgLy8gZS5nLiAgLmE6ZXh0ZW5kKC5iKSB7fSAgYW5kIC5iOmV4dGVuZCguYykge30gdGhlbiB0aGUgZmlyc3QgZXh0ZW5kIGV4dGVuZHMgdGhlIHNlY29uZCBvbmUKICAgICAgICAvLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGFyZ2V0LgogICAgICAgIC8vIHRoZSBzZXBlcmF0aW9uIGludG8gdHdvIGxpc3RzIGFsbG93cyB1cyB0byBwcm9jZXNzIGEgc3Vic2V0IG9mIGNoYWlucyB3aXRoIGEgYmlnZ2VyIHNldCwgYXMgaXMgdGhlCiAgICAgICAgLy8gY2FzZSB3aGVuIHByb2Nlc3NpbmcgbWVkaWEgcXVlcmllcwogICAgICAgIGZvciAoZXh0ZW5kSW5kZXggPSAwOyBleHRlbmRJbmRleCA8IGV4dGVuZHNMaXN0Lmxlbmd0aDsgZXh0ZW5kSW5kZXgrKykgewogICAgICAgICAgICBmb3IgKHRhcmdldEV4dGVuZEluZGV4ID0gMDsgdGFyZ2V0RXh0ZW5kSW5kZXggPCBleHRlbmRzTGlzdFRhcmdldC5sZW5ndGg7IHRhcmdldEV4dGVuZEluZGV4KyspIHsKCiAgICAgICAgICAgICAgICBleHRlbmQgPSBleHRlbmRzTGlzdFtleHRlbmRJbmRleF07CiAgICAgICAgICAgICAgICB0YXJnZXRFeHRlbmQgPSBleHRlbmRzTGlzdFRhcmdldFt0YXJnZXRFeHRlbmRJbmRleF07CgogICAgICAgICAgICAgICAgLy8gbG9vayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgaWYgKCBleHRlbmQucGFyZW50X2lkcy5pbmRleE9mKCB0YXJnZXRFeHRlbmQub2JqZWN0X2lkICkgPj0gMCApIHsgY29udGludWU7IH0KCiAgICAgICAgICAgICAgICAvLyBmaW5kIGEgbWF0Y2ggaW4gdGhlIHRhcmdldCBleHRlbmRzIHNlbGYgc2VsZWN0b3IgKHRoZSBiaXQgYmVmb3JlIDpleHRlbmQpCiAgICAgICAgICAgICAgICBzZWxlY3RvclBhdGggPSBbdGFyZ2V0RXh0ZW5kLnNlbGZTZWxlY3RvcnNbMF1dOwogICAgICAgICAgICAgICAgbWF0Y2hlcyA9IGV4dGVuZFZpc2l0b3IuZmluZE1hdGNoKGV4dGVuZCwgc2VsZWN0b3JQYXRoKTsKCiAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpIHsKCiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kLmhhc0ZvdW5kTWF0Y2hlcyA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIC8vIHdlIGZvdW5kIGEgbWF0Y2gsIHNvIGZvciBlYWNoIHNlbGYgc2VsZWN0b3IuLgogICAgICAgICAgICAgICAgICAgIGV4dGVuZC5zZWxmU2VsZWN0b3JzLmZvckVhY2goZnVuY3Rpb24oc2VsZlNlbGVjdG9yKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBleHRlbmQgYXMgdXN1YWwKICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBleHRlbmRWaXNpdG9yLmV4dGVuZFNlbGVjdG9yKG1hdGNoZXMsIHNlbGVjdG9yUGF0aCwgc2VsZlNlbGVjdG9yKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBub3cgd2UgY3JlYXRlIGEgbmV3IGV4dGVuZCBmcm9tIGl0CiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0V4dGVuZCA9IG5ldyh0cmVlLkV4dGVuZCkodGFyZ2V0RXh0ZW5kLnNlbGVjdG9yLCB0YXJnZXRFeHRlbmQub3B0aW9uLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXh0ZW5kLnNlbGZTZWxlY3RvcnMgPSBuZXdTZWxlY3RvcjsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgZXh0ZW5kIG9udG8gdGhlIGxpc3Qgb2YgZXh0ZW5kcyBmb3IgdGhhdCBzZWxlY3RvcgogICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RvcltuZXdTZWxlY3Rvci5sZW5ndGggLSAxXS5leHRlbmRMaXN0ID0gW25ld0V4dGVuZF07CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWNvcmQgdGhhdCB3ZSBuZWVkIHRvIGFkZCBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kc1RvQWRkLnB1c2gobmV3RXh0ZW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXh0ZW5kLnJ1bGVzZXQgPSB0YXJnZXRFeHRlbmQucnVsZXNldDsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVtZW1iZXIgaXRzIHBhcmVudHMgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMKICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXh0ZW5kLnBhcmVudF9pZHMgPSBuZXdFeHRlbmQucGFyZW50X2lkcy5jb25jYXQodGFyZ2V0RXh0ZW5kLnBhcmVudF9pZHMsIGV4dGVuZC5wYXJlbnRfaWRzKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgcHJvY2VzcyB0aGUgc2VsZWN0b3Igb25jZS4uIGlmIHdlIGhhdmUgOmV4dGVuZCguYSwuYikgdGhlbiBtdWx0aXBsZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBleHRlbmRzIHdpbGwgbG9vayBhdCB0aGUgc2FtZSBzZWxlY3RvciBwYXRoLCBzbyB3aGVuIGV4dGVuZGluZwogICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBrbm93IHRoYXQgYW55IG90aGVycyB3aWxsIGJlIGR1cGxpY2F0ZXMgaW4gdGVybXMgb2Ygd2hhdCBpcyBhZGRlZCB0byB0aGUgY3NzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRFeHRlbmQuZmlyc3RFeHRlbmRPblRoaXNTZWxlY3RvclBhdGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0V4dGVuZC5maXJzdEV4dGVuZE9uVGhpc1NlbGVjdG9yUGF0aCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRFeHRlbmQucnVsZXNldC5wYXRocy5wdXNoKG5ld1NlbGVjdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoZXh0ZW5kc1RvQWRkLmxlbmd0aCkgewogICAgICAgICAgICAvLyB0cnkgdG8gZGV0ZWN0IGNpcmN1bGFyIHJlZmVyZW5jZXMgdG8gc3RvcCBhIHN0YWNrIG92ZXJmbG93LgogICAgICAgICAgICAvLyBtYXkgbm8gbG9uZ2VyIGJlIG5lZWRlZC4KICAgICAgICAgICAgdGhpcy5leHRlbmRDaGFpbkNvdW50Kys7CiAgICAgICAgICAgIGlmIChpdGVyYXRpb25Db3VudCA+IDEwMCkgewogICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yT25lID0gInt1bmFibGUgdG8gY2FsY3VsYXRlfSI7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JUd28gPSAie3VuYWJsZSB0byBjYWxjdWxhdGV9IjsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JPbmUgPSBleHRlbmRzVG9BZGRbMF0uc2VsZlNlbGVjdG9yc1swXS50b0NTUygpOwogICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yVHdvID0gZXh0ZW5kc1RvQWRkWzBdLnNlbGVjdG9yLnRvQ1NTKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXRjaChlKSB7fQogICAgICAgICAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiAiZXh0ZW5kIGNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZC4gT25lIG9mIHRoZSBjaXJjdWxhciBleHRlbmRzIGlzIGN1cnJlbnRseToiICsKICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvck9uZSArICI6ZXh0ZW5kKCIgKyBzZWxlY3RvclR3byArICIpIn07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIG5vdyBwcm9jZXNzIHRoZSBuZXcgZXh0ZW5kcyBvbiB0aGUgZXhpc3RpbmcgcnVsZXMgc28gdGhhdCB3ZSBjYW4gaGFuZGxlIGEgZXh0ZW5kaW5nIGIgZXh0ZW5kaW5nIGMgZXh0ZW5kaW5nCiAgICAgICAgICAgIC8vIGQgZXh0ZW5kaW5nIGUuLi4KICAgICAgICAgICAgcmV0dXJuIGV4dGVuZHNUb0FkZC5jb25jYXQoZXh0ZW5kVmlzaXRvci5kb0V4dGVuZENoYWluaW5nKGV4dGVuZHNUb0FkZCwgZXh0ZW5kc0xpc3RUYXJnZXQsIGl0ZXJhdGlvbkNvdW50ICsgMSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBleHRlbmRzVG9BZGQ7CiAgICAgICAgfQogICAgfSwKICAgIHZpc2l0UnVsZTogZnVuY3Rpb24gKHJ1bGVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKICAgIH0sCiAgICB2aXNpdE1peGluRGVmaW5pdGlvbjogZnVuY3Rpb24gKG1peGluRGVmaW5pdGlvbk5vZGUsIHZpc2l0QXJncykgewogICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgfSwKICAgIHZpc2l0U2VsZWN0b3I6IGZ1bmN0aW9uIChzZWxlY3Rvck5vZGUsIHZpc2l0QXJncykgewogICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgfSwKICAgIHZpc2l0UnVsZXNldDogZnVuY3Rpb24gKHJ1bGVzZXROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICBpZiAocnVsZXNldE5vZGUucm9vdCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBtYXRjaGVzLCBwYXRoSW5kZXgsIGV4dGVuZEluZGV4LCBhbGxFeHRlbmRzID0gdGhpcy5hbGxFeHRlbmRzU3RhY2tbdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoIC0gMV0sCiAgICAgICAgICAgIHNlbGVjdG9yc1RvQWRkID0gW10sIGV4dGVuZFZpc2l0b3IgPSB0aGlzLCBzZWxlY3RvclBhdGg7CgogICAgICAgIC8vIGxvb2sgYXQgZWFjaCBzZWxlY3RvciBwYXRoIGluIHRoZSBydWxlc2V0LCBmaW5kIGFueSBleHRlbmQgbWF0Y2hlcyBhbmQgdGhlbiBjb3B5LCBmaW5kIGFuZCByZXBsYWNlCgogICAgICAgIGZvciAoZXh0ZW5kSW5kZXggPSAwOyBleHRlbmRJbmRleCA8IGFsbEV4dGVuZHMubGVuZ3RoOyBleHRlbmRJbmRleCsrKSB7CiAgICAgICAgICAgIGZvciAocGF0aEluZGV4ID0gMDsgcGF0aEluZGV4IDwgcnVsZXNldE5vZGUucGF0aHMubGVuZ3RoOyBwYXRoSW5kZXgrKykgewogICAgICAgICAgICAgICAgc2VsZWN0b3JQYXRoID0gcnVsZXNldE5vZGUucGF0aHNbcGF0aEluZGV4XTsKCiAgICAgICAgICAgICAgICAvLyBleHRlbmRpbmcgZXh0ZW5kcyBoYXBwZW5zIGluaXRpYWxseSwgYmVmb3JlIHRoZSBtYWluIHBhc3MKICAgICAgICAgICAgICAgIGlmIChydWxlc2V0Tm9kZS5leHRlbmRPbkV2ZXJ5UGF0aCkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgdmFyIGV4dGVuZExpc3QgPSBzZWxlY3RvclBhdGhbc2VsZWN0b3JQYXRoLmxlbmd0aCAtIDFdLmV4dGVuZExpc3Q7CiAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kTGlzdCAmJiBleHRlbmRMaXN0Lmxlbmd0aCkgeyBjb250aW51ZTsgfQoKICAgICAgICAgICAgICAgIG1hdGNoZXMgPSB0aGlzLmZpbmRNYXRjaChhbGxFeHRlbmRzW2V4dGVuZEluZGV4XSwgc2VsZWN0b3JQYXRoKTsKCiAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBhbGxFeHRlbmRzW2V4dGVuZEluZGV4XS5oYXNGb3VuZE1hdGNoZXMgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICBhbGxFeHRlbmRzW2V4dGVuZEluZGV4XS5zZWxmU2VsZWN0b3JzLmZvckVhY2goZnVuY3Rpb24oc2VsZlNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yc1RvQWRkLnB1c2goZXh0ZW5kVmlzaXRvci5leHRlbmRTZWxlY3RvcihtYXRjaGVzLCBzZWxlY3RvclBhdGgsIHNlbGZTZWxlY3RvcikpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJ1bGVzZXROb2RlLnBhdGhzID0gcnVsZXNldE5vZGUucGF0aHMuY29uY2F0KHNlbGVjdG9yc1RvQWRkKTsKICAgIH0sCiAgICBmaW5kTWF0Y2g6IGZ1bmN0aW9uIChleHRlbmQsIGhheXN0YWNrU2VsZWN0b3JQYXRoKSB7CiAgICAgICAgLy8KICAgICAgICAvLyBsb29rIHRocm91Z2ggdGhlIGhheXN0YWNrIHNlbGVjdG9yIHBhdGggdG8gdHJ5IGFuZCBmaW5kIHRoZSBuZWVkbGUgLSBleHRlbmQuc2VsZWN0b3IKICAgICAgICAvLyByZXR1cm5zIGFuIGFycmF5IG9mIHNlbGVjdG9yIG1hdGNoZXMgdGhhdCBjYW4gdGhlbiBiZSByZXBsYWNlZAogICAgICAgIC8vCiAgICAgICAgdmFyIGhheXN0YWNrU2VsZWN0b3JJbmRleCwgaGFja3N0YWNrU2VsZWN0b3IsIGhhY2tzdGFja0VsZW1lbnRJbmRleCwgaGF5c3RhY2tFbGVtZW50LAogICAgICAgICAgICB0YXJnZXRDb21iaW5hdG9yLCBpLAogICAgICAgICAgICBleHRlbmRWaXNpdG9yID0gdGhpcywKICAgICAgICAgICAgbmVlZGxlRWxlbWVudHMgPSBleHRlbmQuc2VsZWN0b3IuZWxlbWVudHMsCiAgICAgICAgICAgIHBvdGVudGlhbE1hdGNoZXMgPSBbXSwgcG90ZW50aWFsTWF0Y2gsIG1hdGNoZXMgPSBbXTsKCiAgICAgICAgLy8gbG9vcCB0aHJvdWdoIHRoZSBoYXlzdGFjayBlbGVtZW50cwogICAgICAgIGZvciAoaGF5c3RhY2tTZWxlY3RvckluZGV4ID0gMDsgaGF5c3RhY2tTZWxlY3RvckluZGV4IDwgaGF5c3RhY2tTZWxlY3RvclBhdGgubGVuZ3RoOyBoYXlzdGFja1NlbGVjdG9ySW5kZXgrKykgewogICAgICAgICAgICBoYWNrc3RhY2tTZWxlY3RvciA9IGhheXN0YWNrU2VsZWN0b3JQYXRoW2hheXN0YWNrU2VsZWN0b3JJbmRleF07CgogICAgICAgICAgICBmb3IgKGhhY2tzdGFja0VsZW1lbnRJbmRleCA9IDA7IGhhY2tzdGFja0VsZW1lbnRJbmRleCA8IGhhY2tzdGFja1NlbGVjdG9yLmVsZW1lbnRzLmxlbmd0aDsgaGFja3N0YWNrRWxlbWVudEluZGV4KyspIHsKCiAgICAgICAgICAgICAgICBoYXlzdGFja0VsZW1lbnQgPSBoYWNrc3RhY2tTZWxlY3Rvci5lbGVtZW50c1toYWNrc3RhY2tFbGVtZW50SW5kZXhdOwoKICAgICAgICAgICAgICAgIC8vIGlmIHdlIGFsbG93IGVsZW1lbnRzIGJlZm9yZSBvdXIgbWF0Y2ggd2UgY2FuIGFkZCBhIHBvdGVudGlhbCBtYXRjaCBldmVyeSB0aW1lLiBvdGhlcndpc2Ugb25seSBhdCB0aGUgZmlyc3QgZWxlbWVudC4KICAgICAgICAgICAgICAgIGlmIChleHRlbmQuYWxsb3dCZWZvcmUgfHwgKGhheXN0YWNrU2VsZWN0b3JJbmRleCA9PT0gMCAmJiBoYWNrc3RhY2tFbGVtZW50SW5kZXggPT09IDApKSB7CiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2hlcy5wdXNoKHtwYXRoSW5kZXg6IGhheXN0YWNrU2VsZWN0b3JJbmRleCwgaW5kZXg6IGhhY2tzdGFja0VsZW1lbnRJbmRleCwgbWF0Y2hlZDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbENvbWJpbmF0b3I6IGhheXN0YWNrRWxlbWVudC5jb21iaW5hdG9yfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBvdGVudGlhbE1hdGNoZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaCA9IHBvdGVudGlhbE1hdGNoZXNbaV07CgogICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdG9ycyBhZGQgIiAiIG9udG8gdGhlIGZpcnN0IGVsZW1lbnQuIFdoZW4gd2UgdXNlICYgaXQgam9pbnMgdGhlIHNlbGVjdG9ycyB0b2dldGhlciwgYnV0IGlmIHdlIGRvbid0CiAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBlYWNoIHNlbGVjdG9yIGluIGhheXN0YWNrU2VsZWN0b3JQYXRoIGhhcyBhIHNwYWNlIGJlZm9yZSBpdCBhZGRlZCBpbiB0aGUgdG9DU1MgcGhhc2UuIHNvIHdlIG5lZWQgdG8KICAgICAgICAgICAgICAgICAgICAvLyB3b3JrIG91dCB3aGF0IHRoZSByZXN1bHRpbmcgY29tYmluYXRvciB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29tYmluYXRvciA9IGhheXN0YWNrRWxlbWVudC5jb21iaW5hdG9yLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRDb21iaW5hdG9yID09PSAnJyAmJiBoYWNrc3RhY2tFbGVtZW50SW5kZXggPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29tYmluYXRvciA9ICcgJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGRvbid0IG1hdGNoLCBudWxsIG91ciBtYXRjaCB0byBpbmRpY2F0ZSBmYWlsdXJlCiAgICAgICAgICAgICAgICAgICAgaWYgKCFleHRlbmRWaXNpdG9yLmlzRWxlbWVudFZhbHVlc0VxdWFsKG5lZWRsZUVsZW1lbnRzW3BvdGVudGlhbE1hdGNoLm1hdGNoZWRdLnZhbHVlLCBoYXlzdGFja0VsZW1lbnQudmFsdWUpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIChwb3RlbnRpYWxNYXRjaC5tYXRjaGVkID4gMCAmJiBuZWVkbGVFbGVtZW50c1twb3RlbnRpYWxNYXRjaC5tYXRjaGVkXS5jb21iaW5hdG9yLnZhbHVlICE9PSB0YXJnZXRDb21iaW5hdG9yKSkgewogICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2gubWF0Y2hlZCsrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHN0aWxsIHZhbGlkIGFuZCBoYXZlIGZpbmlzaGVkLCB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBlbGVtZW50cyBhZnRlciBhbmQgd2hldGhlciB0aGVzZSBhcmUgYWxsb3dlZAogICAgICAgICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxNYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaC5maW5pc2hlZCA9IHBvdGVudGlhbE1hdGNoLm1hdGNoZWQgPT09IG5lZWRsZUVsZW1lbnRzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvdGVudGlhbE1hdGNoLmZpbmlzaGVkICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIWV4dGVuZC5hbGxvd0FmdGVyICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhY2tzdGFja0VsZW1lbnRJbmRleCArIDEgPCBoYWNrc3RhY2tTZWxlY3Rvci5lbGVtZW50cy5sZW5ndGggfHwgaGF5c3RhY2tTZWxlY3RvckluZGV4ICsgMSA8IGhheXN0YWNrU2VsZWN0b3JQYXRoLmxlbmd0aCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gaWYgbnVsbCB3ZSByZW1vdmUsIGlmIG5vdCwgd2UgYXJlIHN0aWxsIHZhbGlkLCBzbyBlaXRoZXIgcHVzaCBhcyBhIHZhbGlkIG1hdGNoIG9yIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgaWYgKHBvdGVudGlhbE1hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxNYXRjaC5maW5pc2hlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2gubGVuZ3RoID0gbmVlZGxlRWxlbWVudHMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2guZW5kUGF0aEluZGV4ID0gaGF5c3RhY2tTZWxlY3RvckluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2guZW5kUGF0aEVsZW1lbnRJbmRleCA9IGhhY2tzdGFja0VsZW1lbnRJbmRleCArIDE7IC8vIGluZGV4IGFmdGVyIGVuZCBvZiBtYXRjaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2hlcy5sZW5ndGggPSAwOyAvLyB3ZSBkb24ndCBhbGxvdyBtYXRjaGVzIHRvIG92ZXJsYXAsIHNvIHN0YXJ0IG1hdGNoaW5nIGFnYWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2gocG90ZW50aWFsTWF0Y2gpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2hlcy5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICB9LAogICAgaXNFbGVtZW50VmFsdWVzRXF1YWw6IGZ1bmN0aW9uKGVsZW1lbnRWYWx1ZTEsIGVsZW1lbnRWYWx1ZTIpIHsKICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnRWYWx1ZTEgPT09ICJzdHJpbmciIHx8IHR5cGVvZiBlbGVtZW50VmFsdWUyID09PSAic3RyaW5nIikgewogICAgICAgICAgICByZXR1cm4gZWxlbWVudFZhbHVlMSA9PT0gZWxlbWVudFZhbHVlMjsKICAgICAgICB9CiAgICAgICAgaWYgKGVsZW1lbnRWYWx1ZTEgaW5zdGFuY2VvZiB0cmVlLkF0dHJpYnV0ZSkgewogICAgICAgICAgICBpZiAoZWxlbWVudFZhbHVlMS5vcCAhPT0gZWxlbWVudFZhbHVlMi5vcCB8fCBlbGVtZW50VmFsdWUxLmtleSAhPT0gZWxlbWVudFZhbHVlMi5rZXkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWVsZW1lbnRWYWx1ZTEudmFsdWUgfHwgIWVsZW1lbnRWYWx1ZTIudmFsdWUpIHsKICAgICAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUxLnZhbHVlIHx8IGVsZW1lbnRWYWx1ZTIudmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50VmFsdWUxID0gZWxlbWVudFZhbHVlMS52YWx1ZS52YWx1ZSB8fCBlbGVtZW50VmFsdWUxLnZhbHVlOwogICAgICAgICAgICBlbGVtZW50VmFsdWUyID0gZWxlbWVudFZhbHVlMi52YWx1ZS52YWx1ZSB8fCBlbGVtZW50VmFsdWUyLnZhbHVlOwogICAgICAgICAgICByZXR1cm4gZWxlbWVudFZhbHVlMSA9PT0gZWxlbWVudFZhbHVlMjsKICAgICAgICB9CiAgICAgICAgZWxlbWVudFZhbHVlMSA9IGVsZW1lbnRWYWx1ZTEudmFsdWU7CiAgICAgICAgZWxlbWVudFZhbHVlMiA9IGVsZW1lbnRWYWx1ZTIudmFsdWU7CiAgICAgICAgaWYgKGVsZW1lbnRWYWx1ZTEgaW5zdGFuY2VvZiB0cmVlLlNlbGVjdG9yKSB7CiAgICAgICAgICAgIGlmICghKGVsZW1lbnRWYWx1ZTIgaW5zdGFuY2VvZiB0cmVlLlNlbGVjdG9yKSB8fCBlbGVtZW50VmFsdWUxLmVsZW1lbnRzLmxlbmd0aCAhPT0gZWxlbWVudFZhbHVlMi5lbGVtZW50cy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSAgPCBlbGVtZW50VmFsdWUxLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFZhbHVlMS5lbGVtZW50c1tpXS5jb21iaW5hdG9yLnZhbHVlICE9PSBlbGVtZW50VmFsdWUyLmVsZW1lbnRzW2ldLmNvbWJpbmF0b3IudmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPT0gMCB8fCAoZWxlbWVudFZhbHVlMS5lbGVtZW50c1tpXS5jb21iaW5hdG9yLnZhbHVlIHx8ICcgJykgIT09IChlbGVtZW50VmFsdWUyLmVsZW1lbnRzW2ldLmNvbWJpbmF0b3IudmFsdWUgfHwgJyAnKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRWxlbWVudFZhbHVlc0VxdWFsKGVsZW1lbnRWYWx1ZTEuZWxlbWVudHNbaV0udmFsdWUsIGVsZW1lbnRWYWx1ZTIuZWxlbWVudHNbaV0udmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgZXh0ZW5kU2VsZWN0b3I6ZnVuY3Rpb24gKG1hdGNoZXMsIHNlbGVjdG9yUGF0aCwgcmVwbGFjZW1lbnRTZWxlY3RvcikgewoKICAgICAgICAvL2ZvciBhIHNldCBvZiBtYXRjaGVzLCByZXBsYWNlIGVhY2ggbWF0Y2ggd2l0aCB0aGUgcmVwbGFjZW1lbnQgc2VsZWN0b3IKCiAgICAgICAgdmFyIGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9IDAsCiAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPSAwLAogICAgICAgICAgICBwYXRoID0gW10sCiAgICAgICAgICAgIG1hdGNoSW5kZXgsCiAgICAgICAgICAgIHNlbGVjdG9yLAogICAgICAgICAgICBmaXJzdEVsZW1lbnQsCiAgICAgICAgICAgIG1hdGNoLAogICAgICAgICAgICBuZXdFbGVtZW50czsKCiAgICAgICAgZm9yIChtYXRjaEluZGV4ID0gMDsgbWF0Y2hJbmRleCA8IG1hdGNoZXMubGVuZ3RoOyBtYXRjaEluZGV4KyspIHsKICAgICAgICAgICAgbWF0Y2ggPSBtYXRjaGVzW21hdGNoSW5kZXhdOwogICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yUGF0aFttYXRjaC5wYXRoSW5kZXhdOwogICAgICAgICAgICBmaXJzdEVsZW1lbnQgPSBuZXcgdHJlZS5FbGVtZW50KAogICAgICAgICAgICAgICAgbWF0Y2guaW5pdGlhbENvbWJpbmF0b3IsCiAgICAgICAgICAgICAgICByZXBsYWNlbWVudFNlbGVjdG9yLmVsZW1lbnRzWzBdLnZhbHVlLAogICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTZWxlY3Rvci5lbGVtZW50c1swXS5pbmRleCwKICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U2VsZWN0b3IuZWxlbWVudHNbMF0uY3VycmVudEZpbGVJbmZvCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAobWF0Y2gucGF0aEluZGV4ID4gY3VycmVudFNlbGVjdG9yUGF0aEluZGV4ICYmIGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPiAwKSB7CiAgICAgICAgICAgICAgICBwYXRoW3BhdGgubGVuZ3RoIC0gMV0uZWxlbWVudHMgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0KICAgICAgICAgICAgICAgICAgICAuZWxlbWVudHMuY29uY2F0KHNlbGVjdG9yUGF0aFtjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXhdLmVsZW1lbnRzLnNsaWNlKGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXgpKTsKICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPSAwOwogICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdG9yUGF0aEluZGV4Kys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5ld0VsZW1lbnRzID0gc2VsZWN0b3IuZWxlbWVudHMKICAgICAgICAgICAgICAgIC5zbGljZShjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4LCBtYXRjaC5pbmRleCkKICAgICAgICAgICAgICAgIC5jb25jYXQoW2ZpcnN0RWxlbWVudF0pCiAgICAgICAgICAgICAgICAuY29uY2F0KHJlcGxhY2VtZW50U2VsZWN0b3IuZWxlbWVudHMuc2xpY2UoMSkpOwoKICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9PT0gbWF0Y2gucGF0aEluZGV4ICYmIG1hdGNoSW5kZXggPiAwKSB7CiAgICAgICAgICAgICAgICBwYXRoW3BhdGgubGVuZ3RoIC0gMV0uZWxlbWVudHMgPQogICAgICAgICAgICAgICAgICAgIHBhdGhbcGF0aC5sZW5ndGggLSAxXS5lbGVtZW50cy5jb25jYXQobmV3RWxlbWVudHMpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcGF0aCA9IHBhdGguY29uY2F0KHNlbGVjdG9yUGF0aC5zbGljZShjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXgsIG1hdGNoLnBhdGhJbmRleCkpOwoKICAgICAgICAgICAgICAgIHBhdGgucHVzaChuZXcgdHJlZS5TZWxlY3RvcigKICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50cwogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3VycmVudFNlbGVjdG9yUGF0aEluZGV4ID0gbWF0Y2guZW5kUGF0aEluZGV4OwogICAgICAgICAgICBjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gbWF0Y2guZW5kUGF0aEVsZW1lbnRJbmRleDsKICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPj0gc2VsZWN0b3JQYXRoW2N1cnJlbnRTZWxlY3RvclBhdGhJbmRleF0uZWxlbWVudHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoY3VycmVudFNlbGVjdG9yUGF0aEluZGV4IDwgc2VsZWN0b3JQYXRoLmxlbmd0aCAmJiBjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID4gMCkgewogICAgICAgICAgICBwYXRoW3BhdGgubGVuZ3RoIC0gMV0uZWxlbWVudHMgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0KICAgICAgICAgICAgICAgIC5lbGVtZW50cy5jb25jYXQoc2VsZWN0b3JQYXRoW2N1cnJlbnRTZWxlY3RvclBhdGhJbmRleF0uZWxlbWVudHMuc2xpY2UoY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCkpOwogICAgICAgICAgICBjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXgrKzsKICAgICAgICB9CgogICAgICAgIHBhdGggPSBwYXRoLmNvbmNhdChzZWxlY3RvclBhdGguc2xpY2UoY3VycmVudFNlbGVjdG9yUGF0aEluZGV4LCBzZWxlY3RvclBhdGgubGVuZ3RoKSk7CgogICAgICAgIHJldHVybiBwYXRoOwogICAgfSwKICAgIHZpc2l0UnVsZXNldE91dDogZnVuY3Rpb24gKHJ1bGVzZXROb2RlKSB7CiAgICB9LAogICAgdmlzaXRNZWRpYTogZnVuY3Rpb24gKG1lZGlhTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgdmFyIG5ld0FsbEV4dGVuZHMgPSBtZWRpYU5vZGUuYWxsRXh0ZW5kcy5jb25jYXQodGhpcy5hbGxFeHRlbmRzU3RhY2tbdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoIC0gMV0pOwogICAgICAgIG5ld0FsbEV4dGVuZHMgPSBuZXdBbGxFeHRlbmRzLmNvbmNhdCh0aGlzLmRvRXh0ZW5kQ2hhaW5pbmcobmV3QWxsRXh0ZW5kcywgbWVkaWFOb2RlLmFsbEV4dGVuZHMpKTsKICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFjay5wdXNoKG5ld0FsbEV4dGVuZHMpOwogICAgfSwKICAgIHZpc2l0TWVkaWFPdXQ6IGZ1bmN0aW9uIChtZWRpYU5vZGUpIHsKICAgICAgICB2YXIgbGFzdEluZGV4ID0gdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoIC0gMTsKICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFjay5sZW5ndGggPSBsYXN0SW5kZXg7CiAgICB9LAogICAgdmlzaXREaXJlY3RpdmU6IGZ1bmN0aW9uIChkaXJlY3RpdmVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICB2YXIgbmV3QWxsRXh0ZW5kcyA9IGRpcmVjdGl2ZU5vZGUuYWxsRXh0ZW5kcy5jb25jYXQodGhpcy5hbGxFeHRlbmRzU3RhY2tbdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoIC0gMV0pOwogICAgICAgIG5ld0FsbEV4dGVuZHMgPSBuZXdBbGxFeHRlbmRzLmNvbmNhdCh0aGlzLmRvRXh0ZW5kQ2hhaW5pbmcobmV3QWxsRXh0ZW5kcywgZGlyZWN0aXZlTm9kZS5hbGxFeHRlbmRzKSk7CiAgICAgICAgdGhpcy5hbGxFeHRlbmRzU3RhY2sucHVzaChuZXdBbGxFeHRlbmRzKTsKICAgIH0sCiAgICB2aXNpdERpcmVjdGl2ZU91dDogZnVuY3Rpb24gKGRpcmVjdGl2ZU5vZGUpIHsKICAgICAgICB2YXIgbGFzdEluZGV4ID0gdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoIC0gMTsKICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFjay5sZW5ndGggPSBsYXN0SW5kZXg7CiAgICB9Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFByb2Nlc3NFeHRlbmRzVmlzaXRvcjsKCn0seyIuLi9sb2dnZXIiOjMyLCIuLi90cmVlIjo2MSwiLi92aXNpdG9yIjo4OX1dLDg0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKZnVuY3Rpb24gSW1wb3J0U2VxdWVuY2VyKG9uU2VxdWVuY2VyRW1wdHkpIHsKICAgIHRoaXMuaW1wb3J0cyA9IFtdOwogICAgdGhpcy52YXJpYWJsZUltcG9ydHMgPSBbXTsKICAgIHRoaXMuX29uU2VxdWVuY2VyRW1wdHkgPSBvblNlcXVlbmNlckVtcHR5OwogICAgdGhpcy5fY3VycmVudERlcHRoID0gMDsKfQoKSW1wb3J0U2VxdWVuY2VyLnByb3RvdHlwZS5hZGRJbXBvcnQgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgdmFyIGltcG9ydFNlcXVlbmNlciA9IHRoaXMsCiAgICAgICAgaW1wb3J0SXRlbSA9IHsKICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLAogICAgICAgICAgICBhcmdzOiBudWxsLAogICAgICAgICAgICBpc1JlYWR5OiBmYWxzZQogICAgICAgIH07CiAgICB0aGlzLmltcG9ydHMucHVzaChpbXBvcnRJdGVtKTsKICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICBpbXBvcnRJdGVtLmFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApOwogICAgICAgIGltcG9ydEl0ZW0uaXNSZWFkeSA9IHRydWU7CiAgICAgICAgaW1wb3J0U2VxdWVuY2VyLnRyeVJ1bigpOwogICAgfTsKfTsKCkltcG9ydFNlcXVlbmNlci5wcm90b3R5cGUuYWRkVmFyaWFibGVJbXBvcnQgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgdGhpcy52YXJpYWJsZUltcG9ydHMucHVzaChjYWxsYmFjayk7Cn07CgpJbXBvcnRTZXF1ZW5jZXIucHJvdG90eXBlLnRyeVJ1biA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5fY3VycmVudERlcHRoKys7CiAgICB0cnkgewogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgIHdoaWxlICh0aGlzLmltcG9ydHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgdmFyIGltcG9ydEl0ZW0gPSB0aGlzLmltcG9ydHNbMF07CiAgICAgICAgICAgICAgICBpZiAoIWltcG9ydEl0ZW0uaXNSZWFkeSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0cyA9IHRoaXMuaW1wb3J0cy5zbGljZSgxKTsKICAgICAgICAgICAgICAgIGltcG9ydEl0ZW0uY2FsbGJhY2suYXBwbHkobnVsbCwgaW1wb3J0SXRlbS5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy52YXJpYWJsZUltcG9ydHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgdmFyaWFibGVJbXBvcnQgPSB0aGlzLnZhcmlhYmxlSW1wb3J0c1swXTsKICAgICAgICAgICAgdGhpcy52YXJpYWJsZUltcG9ydHMgPSB0aGlzLnZhcmlhYmxlSW1wb3J0cy5zbGljZSgxKTsKICAgICAgICAgICAgdmFyaWFibGVJbXBvcnQoKTsKICAgICAgICB9CiAgICB9IGZpbmFsbHkgewogICAgICAgIHRoaXMuX2N1cnJlbnREZXB0aC0tOwogICAgfQogICAgaWYgKHRoaXMuX2N1cnJlbnREZXB0aCA9PT0gMCAmJiB0aGlzLl9vblNlcXVlbmNlckVtcHR5KSB7CiAgICAgICAgdGhpcy5fb25TZXF1ZW5jZXJFbXB0eSgpOwogICAgfQp9OwoKbW9kdWxlLmV4cG9ydHMgPSBJbXBvcnRTZXF1ZW5jZXI7Cgp9LHt9XSw4NTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciBjb250ZXh0cyA9IHJlcXVpcmUoIi4uL2NvbnRleHRzIiksCiAgICBWaXNpdG9yID0gcmVxdWlyZSgiLi92aXNpdG9yIiksCiAgICBJbXBvcnRTZXF1ZW5jZXIgPSByZXF1aXJlKCIuL2ltcG9ydC1zZXF1ZW5jZXIiKTsKCnZhciBJbXBvcnRWaXNpdG9yID0gZnVuY3Rpb24oaW1wb3J0ZXIsIGZpbmlzaCkgewoKICAgIHRoaXMuX3Zpc2l0b3IgPSBuZXcgVmlzaXRvcih0aGlzKTsKICAgIHRoaXMuX2ltcG9ydGVyID0gaW1wb3J0ZXI7CiAgICB0aGlzLl9maW5pc2ggPSBmaW5pc2g7CiAgICB0aGlzLmNvbnRleHQgPSBuZXcgY29udGV4dHMuRXZhbCgpOwogICAgdGhpcy5pbXBvcnRDb3VudCA9IDA7CiAgICB0aGlzLm9uY2VGaWxlRGV0ZWN0aW9uTWFwID0ge307CiAgICB0aGlzLnJlY3Vyc2lvbkRldGVjdG9yID0ge307CiAgICB0aGlzLl9zZXF1ZW5jZXIgPSBuZXcgSW1wb3J0U2VxdWVuY2VyKHRoaXMuX29uU2VxdWVuY2VyRW1wdHkuYmluZCh0aGlzKSk7Cn07CgpJbXBvcnRWaXNpdG9yLnByb3RvdHlwZSA9IHsKICAgIGlzUmVwbGFjaW5nOiBmYWxzZSwKICAgIHJ1bjogZnVuY3Rpb24gKHJvb3QpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBjb250ZW50cwogICAgICAgICAgICB0aGlzLl92aXNpdG9yLnZpc2l0KHJvb3QpOwogICAgICAgIH0KICAgICAgICBjYXRjaChlKSB7CiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBlOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5pc0ZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICB0aGlzLl9zZXF1ZW5jZXIudHJ5UnVuKCk7CiAgICB9LAogICAgX29uU2VxdWVuY2VyRW1wdHk6IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICghdGhpcy5pc0ZpbmlzaGVkKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdGhpcy5fZmluaXNoKHRoaXMuZXJyb3IpOwogICAgfSwKICAgIHZpc2l0SW1wb3J0OiBmdW5jdGlvbiAoaW1wb3J0Tm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgdmFyIGlubGluZUNTUyA9IGltcG9ydE5vZGUub3B0aW9ucy5pbmxpbmU7CgogICAgICAgIGlmICghaW1wb3J0Tm9kZS5jc3MgfHwgaW5saW5lQ1NTKSB7CgogICAgICAgICAgICB2YXIgY29udGV4dCA9IG5ldyBjb250ZXh0cy5FdmFsKHRoaXMuY29udGV4dCwgdGhpcy5jb250ZXh0LmZyYW1lcy5zbGljZSgwKSk7CiAgICAgICAgICAgIHZhciBpbXBvcnRQYXJlbnQgPSBjb250ZXh0LmZyYW1lc1swXTsKCiAgICAgICAgICAgIHRoaXMuaW1wb3J0Q291bnQrKzsKICAgICAgICAgICAgaWYgKGltcG9ydE5vZGUuaXNWYXJpYWJsZUltcG9ydCgpKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZXIuYWRkVmFyaWFibGVJbXBvcnQodGhpcy5wcm9jZXNzSW1wb3J0Tm9kZS5iaW5kKHRoaXMsIGltcG9ydE5vZGUsIGNvbnRleHQsIGltcG9ydFBhcmVudCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzSW1wb3J0Tm9kZShpbXBvcnROb2RlLCBjb250ZXh0LCBpbXBvcnRQYXJlbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgfSwKICAgIHByb2Nlc3NJbXBvcnROb2RlOiBmdW5jdGlvbihpbXBvcnROb2RlLCBjb250ZXh0LCBpbXBvcnRQYXJlbnQpIHsKICAgICAgICB2YXIgZXZhbGRJbXBvcnROb2RlLAogICAgICAgICAgICBpbmxpbmVDU1MgPSBpbXBvcnROb2RlLm9wdGlvbnMuaW5saW5lOwoKICAgICAgICB0cnkgewogICAgICAgICAgICBldmFsZEltcG9ydE5vZGUgPSBpbXBvcnROb2RlLmV2YWxGb3JJbXBvcnQoY29udGV4dCk7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIGlmICghZS5maWxlbmFtZSkgeyBlLmluZGV4ID0gaW1wb3J0Tm9kZS5pbmRleDsgZS5maWxlbmFtZSA9IGltcG9ydE5vZGUuY3VycmVudEZpbGVJbmZvLmZpbGVuYW1lOyB9CiAgICAgICAgICAgIC8vIGF0dGVtcHQgdG8gZXZhbCBwcm9wZXJseSBhbmQgdHJlYXQgYXMgY3NzCiAgICAgICAgICAgIGltcG9ydE5vZGUuY3NzID0gdHJ1ZTsKICAgICAgICAgICAgLy8gaWYgdGhhdCBmYWlscywgdGhpcyBlcnJvciB3aWxsIGJlIHRocm93bgogICAgICAgICAgICBpbXBvcnROb2RlLmVycm9yID0gZTsKICAgICAgICB9CgogICAgICAgIGlmIChldmFsZEltcG9ydE5vZGUgJiYgKCFldmFsZEltcG9ydE5vZGUuY3NzIHx8IGlubGluZUNTUykpIHsKCiAgICAgICAgICAgIGlmIChldmFsZEltcG9ydE5vZGUub3B0aW9ucy5tdWx0aXBsZSkgewogICAgICAgICAgICAgICAgY29udGV4dC5pbXBvcnRNdWx0aXBsZSA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHRyeSBhcHBlbmRpbmcgaWYgd2UgaGF2ZW4ndCBkZXRlcm1pbmVkIGlmIGl0IGlzIGNzcyBvciBub3QKICAgICAgICAgICAgdmFyIHRyeUFwcGVuZExlc3NFeHRlbnNpb24gPSBldmFsZEltcG9ydE5vZGUuY3NzID09PSB1bmRlZmluZWQ7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltcG9ydFBhcmVudC5ydWxlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGltcG9ydFBhcmVudC5ydWxlc1tpXSA9PT0gaW1wb3J0Tm9kZSkgewogICAgICAgICAgICAgICAgICAgIGltcG9ydFBhcmVudC5ydWxlc1tpXSA9IGV2YWxkSW1wb3J0Tm9kZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG9uSW1wb3J0ZWQgPSB0aGlzLm9uSW1wb3J0ZWQuYmluZCh0aGlzLCBldmFsZEltcG9ydE5vZGUsIGNvbnRleHQpLAogICAgICAgICAgICAgICAgc2VxdWVuY2VkT25JbXBvcnRlZCA9IHRoaXMuX3NlcXVlbmNlci5hZGRJbXBvcnQob25JbXBvcnRlZCk7CgogICAgICAgICAgICB0aGlzLl9pbXBvcnRlci5wdXNoKGV2YWxkSW1wb3J0Tm9kZS5nZXRQYXRoKCksIHRyeUFwcGVuZExlc3NFeHRlbnNpb24sIGV2YWxkSW1wb3J0Tm9kZS5jdXJyZW50RmlsZUluZm8sCiAgICAgICAgICAgICAgICBldmFsZEltcG9ydE5vZGUub3B0aW9ucywgc2VxdWVuY2VkT25JbXBvcnRlZCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5pbXBvcnRDb3VudC0tOwogICAgICAgICAgICBpZiAodGhpcy5pc0ZpbmlzaGVkKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZXIudHJ5UnVuKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LAogICAgb25JbXBvcnRlZDogZnVuY3Rpb24gKGltcG9ydE5vZGUsIGNvbnRleHQsIGUsIHJvb3QsIGltcG9ydGVkQXRSb290LCBmdWxsUGF0aCkgewogICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgIGlmICghZS5maWxlbmFtZSkgewogICAgICAgICAgICAgICAgZS5pbmRleCA9IGltcG9ydE5vZGUuaW5kZXg7IGUuZmlsZW5hbWUgPSBpbXBvcnROb2RlLmN1cnJlbnRGaWxlSW5mby5maWxlbmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLmVycm9yID0gZTsKICAgICAgICB9CgogICAgICAgIHZhciBpbXBvcnRWaXNpdG9yID0gdGhpcywKICAgICAgICAgICAgaW5saW5lQ1NTID0gaW1wb3J0Tm9kZS5vcHRpb25zLmlubGluZSwKICAgICAgICAgICAgaXNQbHVnaW4gPSBpbXBvcnROb2RlLm9wdGlvbnMucGx1Z2luLAogICAgICAgICAgICBpc09wdGlvbmFsID0gaW1wb3J0Tm9kZS5vcHRpb25zLm9wdGlvbmFsLAogICAgICAgICAgICBkdXBsaWNhdGVJbXBvcnQgPSBpbXBvcnRlZEF0Um9vdCB8fCBmdWxsUGF0aCBpbiBpbXBvcnRWaXNpdG9yLnJlY3Vyc2lvbkRldGVjdG9yOwoKICAgICAgICBpZiAoIWNvbnRleHQuaW1wb3J0TXVsdGlwbGUpIHsKICAgICAgICAgICAgaWYgKGR1cGxpY2F0ZUltcG9ydCkgewogICAgICAgICAgICAgICAgaW1wb3J0Tm9kZS5za2lwID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGltcG9ydE5vZGUuc2tpcCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChmdWxsUGF0aCBpbiBpbXBvcnRWaXNpdG9yLm9uY2VGaWxlRGV0ZWN0aW9uTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpbXBvcnRWaXNpdG9yLm9uY2VGaWxlRGV0ZWN0aW9uTWFwW2Z1bGxQYXRoXSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFmdWxsUGF0aCAmJiBpc09wdGlvbmFsKSB7CiAgICAgICAgICAgIGltcG9ydE5vZGUuc2tpcCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAocm9vdCkgewogICAgICAgICAgICBpbXBvcnROb2RlLnJvb3QgPSByb290OwogICAgICAgICAgICBpbXBvcnROb2RlLmltcG9ydGVkRmlsZW5hbWUgPSBmdWxsUGF0aDsKCiAgICAgICAgICAgIGlmICghaW5saW5lQ1NTICYmICFpc1BsdWdpbiAmJiAoY29udGV4dC5pbXBvcnRNdWx0aXBsZSB8fCAhZHVwbGljYXRlSW1wb3J0KSkgewogICAgICAgICAgICAgICAgaW1wb3J0VmlzaXRvci5yZWN1cnNpb25EZXRlY3RvcltmdWxsUGF0aF0gPSB0cnVlOwoKICAgICAgICAgICAgICAgIHZhciBvbGRDb250ZXh0ID0gdGhpcy5jb250ZXh0OwogICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmlzaXRvci52aXNpdChyb290KTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IG9sZENvbnRleHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGltcG9ydFZpc2l0b3IuaW1wb3J0Q291bnQtLTsKCiAgICAgICAgaWYgKGltcG9ydFZpc2l0b3IuaXNGaW5pc2hlZCkgewogICAgICAgICAgICBpbXBvcnRWaXNpdG9yLl9zZXF1ZW5jZXIudHJ5UnVuKCk7CiAgICAgICAgfQogICAgfSwKICAgIHZpc2l0UnVsZTogZnVuY3Rpb24gKHJ1bGVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICBpZiAocnVsZU5vZGUudmFsdWUudHlwZSA9PT0gIkRldGFjaGVkUnVsZXNldCIpIHsKICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZyYW1lcy51bnNoaWZ0KHJ1bGVOb2RlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKICAgICAgICB9CiAgICB9LAogICAgdmlzaXRSdWxlT3V0IDogZnVuY3Rpb24ocnVsZU5vZGUpIHsKICAgICAgICBpZiAocnVsZU5vZGUudmFsdWUudHlwZSA9PT0gIkRldGFjaGVkUnVsZXNldCIpIHsKICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZyYW1lcy5zaGlmdCgpOwogICAgICAgIH0KICAgIH0sCiAgICB2aXNpdERpcmVjdGl2ZTogZnVuY3Rpb24gKGRpcmVjdGl2ZU5vZGUsIHZpc2l0QXJncykgewogICAgICAgIHRoaXMuY29udGV4dC5mcmFtZXMudW5zaGlmdChkaXJlY3RpdmVOb2RlKTsKICAgIH0sCiAgICB2aXNpdERpcmVjdGl2ZU91dDogZnVuY3Rpb24gKGRpcmVjdGl2ZU5vZGUpIHsKICAgICAgICB0aGlzLmNvbnRleHQuZnJhbWVzLnNoaWZ0KCk7CiAgICB9LAogICAgdmlzaXRNaXhpbkRlZmluaXRpb246IGZ1bmN0aW9uIChtaXhpbkRlZmluaXRpb25Ob2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICB0aGlzLmNvbnRleHQuZnJhbWVzLnVuc2hpZnQobWl4aW5EZWZpbml0aW9uTm9kZSk7CiAgICB9LAogICAgdmlzaXRNaXhpbkRlZmluaXRpb25PdXQ6IGZ1bmN0aW9uIChtaXhpbkRlZmluaXRpb25Ob2RlKSB7CiAgICAgICAgdGhpcy5jb250ZXh0LmZyYW1lcy5zaGlmdCgpOwogICAgfSwKICAgIHZpc2l0UnVsZXNldDogZnVuY3Rpb24gKHJ1bGVzZXROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICB0aGlzLmNvbnRleHQuZnJhbWVzLnVuc2hpZnQocnVsZXNldE5vZGUpOwogICAgfSwKICAgIHZpc2l0UnVsZXNldE91dDogZnVuY3Rpb24gKHJ1bGVzZXROb2RlKSB7CiAgICAgICAgdGhpcy5jb250ZXh0LmZyYW1lcy5zaGlmdCgpOwogICAgfSwKICAgIHZpc2l0TWVkaWE6IGZ1bmN0aW9uIChtZWRpYU5vZGUsIHZpc2l0QXJncykgewogICAgICAgIHRoaXMuY29udGV4dC5mcmFtZXMudW5zaGlmdChtZWRpYU5vZGUucnVsZXNbMF0pOwogICAgfSwKICAgIHZpc2l0TWVkaWFPdXQ6IGZ1bmN0aW9uIChtZWRpYU5vZGUpIHsKICAgICAgICB0aGlzLmNvbnRleHQuZnJhbWVzLnNoaWZ0KCk7CiAgICB9Cn07Cm1vZHVsZS5leHBvcnRzID0gSW1wb3J0VmlzaXRvcjsKCn0seyIuLi9jb250ZXh0cyI6MTAsIi4vaW1wb3J0LXNlcXVlbmNlciI6ODQsIi4vdmlzaXRvciI6ODl9XSw4NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciB2aXNpdG9ycyA9IHsKICAgIFZpc2l0b3I6IHJlcXVpcmUoIi4vdmlzaXRvciIpLAogICAgSW1wb3J0VmlzaXRvcjogcmVxdWlyZSgnLi9pbXBvcnQtdmlzaXRvcicpLAogICAgRXh0ZW5kVmlzaXRvcjogcmVxdWlyZSgnLi9leHRlbmQtdmlzaXRvcicpLAogICAgSm9pblNlbGVjdG9yVmlzaXRvcjogcmVxdWlyZSgnLi9qb2luLXNlbGVjdG9yLXZpc2l0b3InKSwKICAgIFRvQ1NTVmlzaXRvcjogcmVxdWlyZSgnLi90by1jc3MtdmlzaXRvcicpCn07Cgptb2R1bGUuZXhwb3J0cyA9IHZpc2l0b3JzOwoKfSx7Ii4vZXh0ZW5kLXZpc2l0b3IiOjgzLCIuL2ltcG9ydC12aXNpdG9yIjo4NSwiLi9qb2luLXNlbGVjdG9yLXZpc2l0b3IiOjg3LCIuL3RvLWNzcy12aXNpdG9yIjo4OCwiLi92aXNpdG9yIjo4OX1dLDg3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIFZpc2l0b3IgPSByZXF1aXJlKCIuL3Zpc2l0b3IiKTsKCnZhciBKb2luU2VsZWN0b3JWaXNpdG9yID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmNvbnRleHRzID0gW1tdXTsKICAgIHRoaXMuX3Zpc2l0b3IgPSBuZXcgVmlzaXRvcih0aGlzKTsKfTsKCkpvaW5TZWxlY3RvclZpc2l0b3IucHJvdG90eXBlID0gewogICAgcnVuOiBmdW5jdGlvbiAocm9vdCkgewogICAgICAgIHJldHVybiB0aGlzLl92aXNpdG9yLnZpc2l0KHJvb3QpOwogICAgfSwKICAgIHZpc2l0UnVsZTogZnVuY3Rpb24gKHJ1bGVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKICAgIH0sCiAgICB2aXNpdE1peGluRGVmaW5pdGlvbjogZnVuY3Rpb24gKG1peGluRGVmaW5pdGlvbk5vZGUsIHZpc2l0QXJncykgewogICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgfSwKCiAgICB2aXNpdFJ1bGVzZXQ6IGZ1bmN0aW9uIChydWxlc2V0Tm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHRzW3RoaXMuY29udGV4dHMubGVuZ3RoIC0gMV0sCiAgICAgICAgICAgIHBhdGhzID0gW10sIHNlbGVjdG9yczsKCiAgICAgICAgdGhpcy5jb250ZXh0cy5wdXNoKHBhdGhzKTsKCiAgICAgICAgaWYgKCEgcnVsZXNldE5vZGUucm9vdCkgewogICAgICAgICAgICBzZWxlY3RvcnMgPSBydWxlc2V0Tm9kZS5zZWxlY3RvcnM7CiAgICAgICAgICAgIGlmIChzZWxlY3RvcnMpIHsKICAgICAgICAgICAgICAgIHNlbGVjdG9ycyA9IHNlbGVjdG9ycy5maWx0ZXIoZnVuY3Rpb24oc2VsZWN0b3IpIHsgcmV0dXJuIHNlbGVjdG9yLmdldElzT3V0cHV0KCk7IH0pOwogICAgICAgICAgICAgICAgcnVsZXNldE5vZGUuc2VsZWN0b3JzID0gc2VsZWN0b3JzLmxlbmd0aCA/IHNlbGVjdG9ycyA6IChzZWxlY3RvcnMgPSBudWxsKTsKICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvcnMpIHsgcnVsZXNldE5vZGUuam9pblNlbGVjdG9ycyhwYXRocywgY29udGV4dCwgc2VsZWN0b3JzKTsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghc2VsZWN0b3JzKSB7IHJ1bGVzZXROb2RlLnJ1bGVzID0gbnVsbDsgfQogICAgICAgICAgICBydWxlc2V0Tm9kZS5wYXRocyA9IHBhdGhzOwogICAgICAgIH0KICAgIH0sCiAgICB2aXNpdFJ1bGVzZXRPdXQ6IGZ1bmN0aW9uIChydWxlc2V0Tm9kZSkgewogICAgICAgIHRoaXMuY29udGV4dHMubGVuZ3RoID0gdGhpcy5jb250ZXh0cy5sZW5ndGggLSAxOwogICAgfSwKICAgIHZpc2l0TWVkaWE6IGZ1bmN0aW9uIChtZWRpYU5vZGUsIHZpc2l0QXJncykgewogICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0c1t0aGlzLmNvbnRleHRzLmxlbmd0aCAtIDFdOwogICAgICAgIG1lZGlhTm9kZS5ydWxlc1swXS5yb290ID0gKGNvbnRleHQubGVuZ3RoID09PSAwIHx8IGNvbnRleHRbMF0ubXVsdGlNZWRpYSk7CiAgICB9LAogICAgdmlzaXREaXJlY3RpdmU6IGZ1bmN0aW9uIChkaXJlY3RpdmVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuY29udGV4dHNbdGhpcy5jb250ZXh0cy5sZW5ndGggLSAxXTsKICAgICAgICBpZiAoZGlyZWN0aXZlTm9kZS5ydWxlcyAmJiBkaXJlY3RpdmVOb2RlLnJ1bGVzLmxlbmd0aCkgewogICAgICAgICAgICBkaXJlY3RpdmVOb2RlLnJ1bGVzWzBdLnJvb3QgPSAoZGlyZWN0aXZlTm9kZS5pc1Jvb3RlZCB8fCBjb250ZXh0Lmxlbmd0aCA9PT0gMCB8fCBudWxsKTsKICAgICAgICB9CiAgICB9Cn07Cgptb2R1bGUuZXhwb3J0cyA9IEpvaW5TZWxlY3RvclZpc2l0b3I7Cgp9LHsiLi92aXNpdG9yIjo4OX1dLDg4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKdmFyIHRyZWUgPSByZXF1aXJlKCIuLi90cmVlIiksCiAgICBWaXNpdG9yID0gcmVxdWlyZSgiLi92aXNpdG9yIik7Cgp2YXIgVG9DU1NWaXNpdG9yID0gZnVuY3Rpb24oY29udGV4dCkgewogICAgdGhpcy5fdmlzaXRvciA9IG5ldyBWaXNpdG9yKHRoaXMpOwogICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7Cn07CgpUb0NTU1Zpc2l0b3IucHJvdG90eXBlID0gewogICAgaXNSZXBsYWNpbmc6IHRydWUsCiAgICBydW46IGZ1bmN0aW9uIChyb290KSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2l0b3IudmlzaXQocm9vdCk7CiAgICB9LAoKICAgIHZpc2l0UnVsZTogZnVuY3Rpb24gKHJ1bGVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICBpZiAocnVsZU5vZGUudmFyaWFibGUpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcnVsZU5vZGU7CiAgICB9LAoKICAgIHZpc2l0TWl4aW5EZWZpbml0aW9uOiBmdW5jdGlvbiAobWl4aW5Ob2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAvLyBtaXhpbiBkZWZpbml0aW9ucyBkbyBub3QgZ2V0IGV2YWwnZCAtIHRoaXMgbWVhbnMgdGhleSBrZWVwIHN0YXRlCiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBjbGVhciB0aGF0IHN0YXRlIGhlcmUgc28gaXQgaXNuJ3QgdXNlZCBpZiB0b0NTUyBpcyBjYWxsZWQgdHdpY2UKICAgICAgICBtaXhpbk5vZGUuZnJhbWVzID0gW107CiAgICB9LAoKICAgIHZpc2l0RXh0ZW5kOiBmdW5jdGlvbiAoZXh0ZW5kTm9kZSwgdmlzaXRBcmdzKSB7CiAgICB9LAoKICAgIHZpc2l0Q29tbWVudDogZnVuY3Rpb24gKGNvbW1lbnROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICBpZiAoY29tbWVudE5vZGUuaXNTaWxlbnQodGhpcy5fY29udGV4dCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICByZXR1cm4gY29tbWVudE5vZGU7CiAgICB9LAoKICAgIHZpc2l0TWVkaWE6IGZ1bmN0aW9uKG1lZGlhTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgbWVkaWFOb2RlLmFjY2VwdCh0aGlzLl92aXNpdG9yKTsKICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKCiAgICAgICAgaWYgKCFtZWRpYU5vZGUucnVsZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG1lZGlhTm9kZTsKICAgIH0sCgogICAgdmlzaXRJbXBvcnQ6IGZ1bmN0aW9uIChpbXBvcnROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICBpZiAoaW1wb3J0Tm9kZS5wYXRoLmN1cnJlbnRGaWxlSW5mby5yZWZlcmVuY2UgIT09IHVuZGVmaW5lZCAmJiBpbXBvcnROb2RlLmNzcykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHJldHVybiBpbXBvcnROb2RlOwogICAgfSwKCiAgICB2aXNpdERpcmVjdGl2ZTogZnVuY3Rpb24oZGlyZWN0aXZlTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgaWYgKGRpcmVjdGl2ZU5vZGUubmFtZSA9PT0gIkBjaGFyc2V0IikgewogICAgICAgICAgICBpZiAoIWRpcmVjdGl2ZU5vZGUuZ2V0SXNSZWZlcmVuY2VkKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBPbmx5IG91dHB1dCB0aGUgZGVidWcgaW5mbyB0b2dldGhlciB3aXRoIHN1YnNlcXVlbnQgQGNoYXJzZXQgZGVmaW5pdGlvbnMKICAgICAgICAgICAgLy8gYSBjb21tZW50IChvciBAbWVkaWEgc3RhdGVtZW50KSBiZWZvcmUgdGhlIGFjdHVhbCBAY2hhcnNldCBkaXJlY3RpdmUgd291bGQKICAgICAgICAgICAgLy8gYmUgY29uc2lkZXJlZCBpbGxlZ2FsIGNzcyBhcyBpdCBoYXMgdG8gYmUgb24gdGhlIGZpcnN0IGxpbmUKICAgICAgICAgICAgaWYgKHRoaXMuY2hhcnNldCkgewogICAgICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZU5vZGUuZGVidWdJbmZvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbW1lbnQgPSBuZXcgdHJlZS5Db21tZW50KCIvKiAiICsgZGlyZWN0aXZlTm9kZS50b0NTUyh0aGlzLl9jb250ZXh0KS5yZXBsYWNlKC9cbi9nLCAiIikgKyAiICovXG4iKTsKICAgICAgICAgICAgICAgICAgICBjb21tZW50LmRlYnVnSW5mbyA9IGRpcmVjdGl2ZU5vZGUuZGVidWdJbmZvOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl92aXNpdG9yLnZpc2l0KGNvbW1lbnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuY2hhcnNldCA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGhhc1Zpc2libGVDaGlsZChkaXJlY3RpdmVOb2RlKSB7CiAgICAgICAgICAgIC8vcHJlcGFyZSBsaXN0IG9mIGNoaWxkcwogICAgICAgICAgICB2YXIgcnVsZSwgYm9keVJ1bGVzID0gZGlyZWN0aXZlTm9kZS5ydWxlczsKICAgICAgICAgICAgLy9pZiB0aGVyZSBpcyBvbmx5IG9uZSBuZXN0ZWQgcnVsZXNldCBhbmQgdGhhdCBvbmUgaGFzIG5vIHBhdGgsIHRoZW4gaXQgaXMKICAgICAgICAgICAgLy9qdXN0IGZha2UgcnVsZXNldCB0aGF0IGdvdCBub3QgcmVwbGFjZWQgYW5kIHdlIG5lZWQgdG8gbG9vayBpbnNpZGUgaXQgdG8KICAgICAgICAgICAgLy9nZXQgcmVhbCBjaGlsZHMKICAgICAgICAgICAgaWYgKGJvZHlSdWxlcy5sZW5ndGggPT09IDEgJiYgKCFib2R5UnVsZXNbMF0ucGF0aHMgfHwgYm9keVJ1bGVzWzBdLnBhdGhzLmxlbmd0aCA9PT0gMCkpIHsKICAgICAgICAgICAgICAgIGJvZHlSdWxlcyA9IGJvZHlSdWxlc1swXS5ydWxlczsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKHZhciByID0gMDsgciA8IGJvZHlSdWxlcy5sZW5ndGg7IHIrKykgewogICAgICAgICAgICAgICAgcnVsZSA9IGJvZHlSdWxlc1tyXTsKICAgICAgICAgICAgICAgIGlmIChydWxlLmdldElzUmVmZXJlbmNlZCAmJiBydWxlLmdldElzUmVmZXJlbmNlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgLy90aGUgZGlyZWN0aXZlIGNvbnRhaW5zIHNvbWV0aGluZyB0aGF0IHdhcyByZWZlcmVuY2VkIChsaWtlbHkgYnkgZXh0ZW5kKQogICAgICAgICAgICAgICAgICAgIC8vdGhlcmVmb3JlIGl0IG5lZWRzIHRvIGJlIHNob3duIGluIG91dHB1dCB0b28KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoZGlyZWN0aXZlTm9kZS5ydWxlcyAmJiBkaXJlY3RpdmVOb2RlLnJ1bGVzLmxlbmd0aCkgewogICAgICAgICAgICAvL2l0IGlzIHN0aWxsIHRydWUgdGhhdCBpdCBpcyBvbmx5IG9uZSBydWxlc2V0IGluIGFycmF5CiAgICAgICAgICAgIC8vdGhpcyBpcyBsYXN0IHN1Y2ggbW9tZW50CiAgICAgICAgICAgIHRoaXMuX21lcmdlUnVsZXMoZGlyZWN0aXZlTm9kZS5ydWxlc1swXS5ydWxlcyk7CiAgICAgICAgICAgIC8vcHJvY2VzcyBjaGlsZHMKICAgICAgICAgICAgZGlyZWN0aXZlTm9kZS5hY2NlcHQodGhpcy5fdmlzaXRvcik7CiAgICAgICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwoKICAgICAgICAgICAgLy8gdGhlIGRpcmVjdGl2ZSB3YXMgZGlyZWN0bHkgcmVmZXJlbmNlZCBhbmQgdGhlcmVmb3JlIG5lZWRzIHRvIGJlIHNob3duIGluIHRoZSBvdXRwdXQKICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZU5vZGUuZ2V0SXNSZWZlcmVuY2VkKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkaXJlY3RpdmVOb2RlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWRpcmVjdGl2ZU5vZGUucnVsZXMgfHwgIWRpcmVjdGl2ZU5vZGUucnVsZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL3RoZSBkaXJlY3RpdmUgd2FzIG5vdCBkaXJlY3RseSByZWZlcmVuY2VkIC0gd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIHNvbWUgb2YgaXRzIGNoaWxkcwogICAgICAgICAgICAvL3dhcyByZWZlcmVuY2VkCiAgICAgICAgICAgIGlmIChoYXNWaXNpYmxlQ2hpbGQoZGlyZWN0aXZlTm9kZSkpIHsKICAgICAgICAgICAgICAgIC8vbWFya2luZyBhcyByZWZlcmVuY2VkIGluIGNhc2UgdGhlIGRpcmVjdGl2ZSBpcyBzdG9yZWQgaW5zaWRlIGFub3RoZXIgZGlyZWN0aXZlCiAgICAgICAgICAgICAgICBkaXJlY3RpdmVOb2RlLm1hcmtSZWZlcmVuY2VkKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aXZlTm9kZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9UaGUgZGlyZWN0aXZlIHdhcyBub3QgZGlyZWN0bHkgcmVmZXJlbmNlZCBhbmQgZG9lcyBub3QgY29udGFpbiBhbnl0aGluZyB0aGF0CiAgICAgICAgICAgIC8vd2FzIHJlZmVyZW5jZWQuIFRoZXJlZm9yZSBpdCBtdXN0IG5vdCBiZSBzaG93biBpbiBvdXRwdXQuCiAgICAgICAgICAgIHJldHVybiA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFkaXJlY3RpdmVOb2RlLmdldElzUmVmZXJlbmNlZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZU5vZGU7CiAgICB9LAoKICAgIGNoZWNrUHJvcGVydGllc0luUm9vdDogZnVuY3Rpb24ocnVsZXMpIHsKICAgICAgICB2YXIgcnVsZU5vZGU7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBydWxlTm9kZSA9IHJ1bGVzW2ldOwogICAgICAgICAgICBpZiAocnVsZU5vZGUgaW5zdGFuY2VvZiB0cmVlLlJ1bGUgJiYgIXJ1bGVOb2RlLnZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyB7IG1lc3NhZ2U6ICJwcm9wZXJ0aWVzIG11c3QgYmUgaW5zaWRlIHNlbGVjdG9yIGJsb2NrcywgdGhleSBjYW5ub3QgYmUgaW4gdGhlIHJvb3QuIiwKICAgICAgICAgICAgICAgICAgICBpbmRleDogcnVsZU5vZGUuaW5kZXgsIGZpbGVuYW1lOiBydWxlTm9kZS5jdXJyZW50RmlsZUluZm8gPyBydWxlTm9kZS5jdXJyZW50RmlsZUluZm8uZmlsZW5hbWUgOiBudWxsfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCgogICAgdmlzaXRSdWxlc2V0OiBmdW5jdGlvbiAocnVsZXNldE5vZGUsIHZpc2l0QXJncykgewogICAgICAgIHZhciBydWxlLCBydWxlc2V0cyA9IFtdOwogICAgICAgIGlmIChydWxlc2V0Tm9kZS5maXJzdFJvb3QpIHsKICAgICAgICAgICAgdGhpcy5jaGVja1Byb3BlcnRpZXNJblJvb3QocnVsZXNldE5vZGUucnVsZXMpOwogICAgICAgIH0KICAgICAgICBpZiAoISBydWxlc2V0Tm9kZS5yb290KSB7CiAgICAgICAgICAgIGlmIChydWxlc2V0Tm9kZS5wYXRocykgewogICAgICAgICAgICAgICAgcnVsZXNldE5vZGUucGF0aHMgPSBydWxlc2V0Tm9kZS5wYXRocwogICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24ocCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBbMF0uZWxlbWVudHNbMF0uY29tYmluYXRvci52YWx1ZSA9PT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwWzBdLmVsZW1lbnRzWzBdLmNvbWJpbmF0b3IgPSBuZXcodHJlZS5Db21iaW5hdG9yKSgnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwW2ldLmdldElzUmVmZXJlbmNlZCgpICYmIHBbaV0uZ2V0SXNPdXRwdXQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gQ29tcGlsZSBydWxlcyBhbmQgcnVsZXNldHMKICAgICAgICAgICAgdmFyIG5vZGVSdWxlcyA9IHJ1bGVzZXROb2RlLnJ1bGVzLCBub2RlUnVsZUNudCA9IG5vZGVSdWxlcyA/IG5vZGVSdWxlcy5sZW5ndGggOiAwOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVSdWxlQ250OyApIHsKICAgICAgICAgICAgICAgIHJ1bGUgPSBub2RlUnVsZXNbaV07CiAgICAgICAgICAgICAgICBpZiAocnVsZSAmJiBydWxlLnJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gdmlzaXQgYmVjYXVzZSB3ZSBhcmUgbW92aW5nIHRoZW0gb3V0IGZyb20gYmVpbmcgYSBjaGlsZAogICAgICAgICAgICAgICAgICAgIHJ1bGVzZXRzLnB1c2godGhpcy5fdmlzaXRvci52aXNpdChydWxlKSk7CiAgICAgICAgICAgICAgICAgICAgbm9kZVJ1bGVzLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICBub2RlUnVsZUNudC0tOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGFjY2VwdCB0aGUgdmlzaXRvciB0byByZW1vdmUgcnVsZXMgYW5kIHJlZmFjdG9yIGl0c2VsZgogICAgICAgICAgICAvLyB0aGVuIHdlIGNhbiBkZWNpZGUgbm93IHdoZXRoZXIgd2Ugd2FudCBpdCBvciBub3QKICAgICAgICAgICAgaWYgKG5vZGVSdWxlQ250ID4gMCkgewogICAgICAgICAgICAgICAgcnVsZXNldE5vZGUuYWNjZXB0KHRoaXMuX3Zpc2l0b3IpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcnVsZXNldE5vZGUucnVsZXMgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwoKICAgICAgICAgICAgbm9kZVJ1bGVzID0gcnVsZXNldE5vZGUucnVsZXM7CiAgICAgICAgICAgIGlmIChub2RlUnVsZXMpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21lcmdlUnVsZXMobm9kZVJ1bGVzKTsKICAgICAgICAgICAgICAgIG5vZGVSdWxlcyA9IHJ1bGVzZXROb2RlLnJ1bGVzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChub2RlUnVsZXMpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUR1cGxpY2F0ZVJ1bGVzKG5vZGVSdWxlcyk7CiAgICAgICAgICAgICAgICBub2RlUnVsZXMgPSBydWxlc2V0Tm9kZS5ydWxlczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gbm93IGRlY2lkZSB3aGV0aGVyIHdlIGtlZXAgdGhlIHJ1bGVzZXQKICAgICAgICAgICAgaWYgKG5vZGVSdWxlcyAmJiBub2RlUnVsZXMubGVuZ3RoID4gMCAmJiBydWxlc2V0Tm9kZS5wYXRocy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBydWxlc2V0cy5zcGxpY2UoMCwgMCwgcnVsZXNldE5vZGUpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcnVsZXNldE5vZGUuYWNjZXB0KHRoaXMuX3Zpc2l0b3IpOwogICAgICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKHJ1bGVzZXROb2RlLmZpcnN0Um9vdCB8fCAocnVsZXNldE5vZGUucnVsZXMgJiYgcnVsZXNldE5vZGUucnVsZXMubGVuZ3RoID4gMCkpIHsKICAgICAgICAgICAgICAgIHJ1bGVzZXRzLnNwbGljZSgwLCAwLCBydWxlc2V0Tm9kZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHJ1bGVzZXRzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICByZXR1cm4gcnVsZXNldHNbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiBydWxlc2V0czsKICAgIH0sCgogICAgX3JlbW92ZUR1cGxpY2F0ZVJ1bGVzOiBmdW5jdGlvbihydWxlcykgewogICAgICAgIGlmICghcnVsZXMpIHsgcmV0dXJuOyB9CgogICAgICAgIC8vIHJlbW92ZSBkdXBsaWNhdGVzCiAgICAgICAgdmFyIHJ1bGVDYWNoZSA9IHt9LAogICAgICAgICAgICBydWxlTGlzdCwgcnVsZSwgaTsKCiAgICAgICAgZm9yIChpID0gcnVsZXMubGVuZ3RoIC0gMTsgaSA+PSAwIDsgaS0tKSB7CiAgICAgICAgICAgIHJ1bGUgPSBydWxlc1tpXTsKICAgICAgICAgICAgaWYgKHJ1bGUgaW5zdGFuY2VvZiB0cmVlLlJ1bGUpIHsKICAgICAgICAgICAgICAgIGlmICghcnVsZUNhY2hlW3J1bGUubmFtZV0pIHsKICAgICAgICAgICAgICAgICAgICBydWxlQ2FjaGVbcnVsZS5uYW1lXSA9IHJ1bGU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJ1bGVMaXN0ID0gcnVsZUNhY2hlW3J1bGUubmFtZV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVMaXN0IGluc3RhbmNlb2YgdHJlZS5SdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVMaXN0ID0gcnVsZUNhY2hlW3J1bGUubmFtZV0gPSBbcnVsZUNhY2hlW3J1bGUubmFtZV0udG9DU1ModGhpcy5fY29udGV4dCldOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZUNTUyA9IHJ1bGUudG9DU1ModGhpcy5fY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVMaXN0LmluZGV4T2YocnVsZUNTUykgIT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBydWxlTGlzdC5wdXNoKHJ1bGVDU1MpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCgogICAgX21lcmdlUnVsZXM6IGZ1bmN0aW9uIChydWxlcykgewogICAgICAgIGlmICghcnVsZXMpIHsgcmV0dXJuOyB9CgogICAgICAgIHZhciBncm91cHMgPSB7fSwKICAgICAgICAgICAgcGFydHMsCiAgICAgICAgICAgIHJ1bGUsCiAgICAgICAgICAgIGtleTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBydWxlID0gcnVsZXNbaV07CgogICAgICAgICAgICBpZiAoKHJ1bGUgaW5zdGFuY2VvZiB0cmVlLlJ1bGUpICYmIHJ1bGUubWVyZ2UpIHsKICAgICAgICAgICAgICAgIGtleSA9IFtydWxlLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgcnVsZS5pbXBvcnRhbnQgPyAiISIgOiAiIl0uam9pbigiLCIpOwoKICAgICAgICAgICAgICAgIGlmICghZ3JvdXBzW2tleV0pIHsKICAgICAgICAgICAgICAgICAgICBncm91cHNba2V5XSA9IFtdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBydWxlcy5zcGxpY2UoaS0tLCAxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBncm91cHNba2V5XS5wdXNoKHJ1bGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBPYmplY3Qua2V5cyhncm91cHMpLm1hcChmdW5jdGlvbiAoaykgewoKICAgICAgICAgICAgZnVuY3Rpb24gdG9FeHByZXNzaW9uKHZhbHVlcykgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5FeHByZXNzaW9uKSh2YWx1ZXMubWFwKGZ1bmN0aW9uIChwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAudmFsdWU7CiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHRvVmFsdWUodmFsdWVzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLlZhbHVlKSh2YWx1ZXMubWFwKGZ1bmN0aW9uIChwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7CiAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHBhcnRzID0gZ3JvdXBzW2tdOwoKICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIHJ1bGUgPSBwYXJ0c1swXTsKICAgICAgICAgICAgICAgIHZhciBzcGFjZWRHcm91cHMgPSBbXTsKICAgICAgICAgICAgICAgIHZhciBsYXN0U3BhY2VkR3JvdXAgPSBbXTsKICAgICAgICAgICAgICAgIHBhcnRzLm1hcChmdW5jdGlvbiAocCkgewogICAgICAgICAgICAgICAgICAgIGlmIChwLm1lcmdlID09PSAiKyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RTcGFjZWRHcm91cC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZWRHcm91cHMucHVzaCh0b0V4cHJlc3Npb24obGFzdFNwYWNlZEdyb3VwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNwYWNlZEdyb3VwID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGxhc3RTcGFjZWRHcm91cC5wdXNoKHApOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzcGFjZWRHcm91cHMucHVzaCh0b0V4cHJlc3Npb24obGFzdFNwYWNlZEdyb3VwKSk7CiAgICAgICAgICAgICAgICBydWxlLnZhbHVlID0gdG9WYWx1ZShzcGFjZWRHcm91cHMpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9LAoKICAgIHZpc2l0QW5vbnltb3VzOiBmdW5jdGlvbihhbm9ueW1vdXNOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICBpZiAoIWFub255bW91c05vZGUuZ2V0SXNSZWZlcmVuY2VkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIDsKICAgICAgICB9CgogICAgICAgIGFub255bW91c05vZGUuYWNjZXB0KHRoaXMuX3Zpc2l0b3IpOwogICAgICAgIHJldHVybiBhbm9ueW1vdXNOb2RlOwogICAgfQp9OwoKbW9kdWxlLmV4cG9ydHMgPSBUb0NTU1Zpc2l0b3I7Cgp9LHsiLi4vdHJlZSI6NjEsIi4vdmlzaXRvciI6ODl9XSw4OTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CnZhciB0cmVlID0gcmVxdWlyZSgiLi4vdHJlZSIpOwoKdmFyIF92aXNpdEFyZ3MgPSB7IHZpc2l0RGVlcGVyOiB0cnVlIH0sCiAgICBfaGFzSW5kZXhlZCA9IGZhbHNlOwoKZnVuY3Rpb24gX25vb3Aobm9kZSkgewogICAgcmV0dXJuIG5vZGU7Cn0KCmZ1bmN0aW9uIGluZGV4Tm9kZVR5cGVzKHBhcmVudCwgdGlja2VyKSB7CiAgICAvLyBhZGQgLnR5cGVJbmRleCB0byB0cmVlIG5vZGUgdHlwZXMgZm9yIGxvb2t1cCB0YWJsZQogICAgdmFyIGtleSwgY2hpbGQ7CiAgICBmb3IgKGtleSBpbiBwYXJlbnQpIHsKICAgICAgICBpZiAocGFyZW50Lmhhc093blByb3BlcnR5KGtleSkpIHsKICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnRba2V5XTsKICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgY2hpbGQpIHsKICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgYm91bmQgZnVuY3Rpb25zIGRpcmVjdGx5IG9uIHRyZWUgd2hpY2ggZG8gbm90IGhhdmUgYSBwcm90b3R5cGUKICAgICAgICAgICAgICAgICAgICAvLyBvciBhcmVuJ3Qgbm9kZXMKICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQucHJvdG90eXBlICYmIGNoaWxkLnByb3RvdHlwZS50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLnByb3RvdHlwZS50eXBlSW5kZXggPSB0aWNrZXIrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICAgIHRpY2tlciA9IGluZGV4Tm9kZVR5cGVzKGNoaWxkLCB0aWNrZXIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHRpY2tlcjsKfQoKdmFyIFZpc2l0b3IgPSBmdW5jdGlvbihpbXBsZW1lbnRhdGlvbikgewogICAgdGhpcy5faW1wbGVtZW50YXRpb24gPSBpbXBsZW1lbnRhdGlvbjsKICAgIHRoaXMuX3Zpc2l0Rm5DYWNoZSA9IFtdOwoKICAgIGlmICghX2hhc0luZGV4ZWQpIHsKICAgICAgICBpbmRleE5vZGVUeXBlcyh0cmVlLCAxKTsKICAgICAgICBfaGFzSW5kZXhlZCA9IHRydWU7CiAgICB9Cn07CgpWaXNpdG9yLnByb3RvdHlwZSA9IHsKICAgIHZpc2l0OiBmdW5jdGlvbihub2RlKSB7CiAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgIH0KCiAgICAgICAgdmFyIG5vZGVUeXBlSW5kZXggPSBub2RlLnR5cGVJbmRleDsKICAgICAgICBpZiAoIW5vZGVUeXBlSW5kZXgpIHsKICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgfQoKICAgICAgICB2YXIgdmlzaXRGbkNhY2hlID0gdGhpcy5fdmlzaXRGbkNhY2hlLAogICAgICAgICAgICBpbXBsID0gdGhpcy5faW1wbGVtZW50YXRpb24sCiAgICAgICAgICAgIGFyeUluZHggPSBub2RlVHlwZUluZGV4IDw8IDEsCiAgICAgICAgICAgIG91dEFyeUluZGV4ID0gYXJ5SW5keCB8IDEsCiAgICAgICAgICAgIGZ1bmMgPSB2aXNpdEZuQ2FjaGVbYXJ5SW5keF0sCiAgICAgICAgICAgIGZ1bmNPdXQgPSB2aXNpdEZuQ2FjaGVbb3V0QXJ5SW5kZXhdLAogICAgICAgICAgICB2aXNpdEFyZ3MgPSBfdmlzaXRBcmdzLAogICAgICAgICAgICBmbk5hbWU7CgogICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IHRydWU7CgogICAgICAgIGlmICghZnVuYykgewogICAgICAgICAgICBmbk5hbWUgPSAidmlzaXQiICsgbm9kZS50eXBlOwogICAgICAgICAgICBmdW5jID0gaW1wbFtmbk5hbWVdIHx8IF9ub29wOwogICAgICAgICAgICBmdW5jT3V0ID0gaW1wbFtmbk5hbWUgKyAiT3V0Il0gfHwgX25vb3A7CiAgICAgICAgICAgIHZpc2l0Rm5DYWNoZVthcnlJbmR4XSA9IGZ1bmM7CiAgICAgICAgICAgIHZpc2l0Rm5DYWNoZVtvdXRBcnlJbmRleF0gPSBmdW5jT3V0OwogICAgICAgIH0KCiAgICAgICAgaWYgKGZ1bmMgIT09IF9ub29wKSB7CiAgICAgICAgICAgIHZhciBuZXdOb2RlID0gZnVuYy5jYWxsKGltcGwsIG5vZGUsIHZpc2l0QXJncyk7CiAgICAgICAgICAgIGlmIChpbXBsLmlzUmVwbGFjaW5nKSB7CiAgICAgICAgICAgICAgICBub2RlID0gbmV3Tm9kZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHZpc2l0QXJncy52aXNpdERlZXBlciAmJiBub2RlICYmIG5vZGUuYWNjZXB0KSB7CiAgICAgICAgICAgIG5vZGUuYWNjZXB0KHRoaXMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZ1bmNPdXQgIT0gX25vb3ApIHsKICAgICAgICAgICAgZnVuY091dC5jYWxsKGltcGwsIG5vZGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5vZGU7CiAgICB9LAogICAgdmlzaXRBcnJheTogZnVuY3Rpb24obm9kZXMsIG5vblJlcGxhY2luZykgewogICAgICAgIGlmICghbm9kZXMpIHsKICAgICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgICAgIH0KCiAgICAgICAgdmFyIGNudCA9IG5vZGVzLmxlbmd0aCwgaTsKCiAgICAgICAgLy8gTm9uLXJlcGxhY2luZwogICAgICAgIGlmIChub25SZXBsYWNpbmcgfHwgIXRoaXMuX2ltcGxlbWVudGF0aW9uLmlzUmVwbGFjaW5nKSB7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy52aXNpdChub2Rlc1tpXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgICAgIH0KCiAgICAgICAgLy8gUmVwbGFjaW5nCiAgICAgICAgdmFyIG91dCA9IFtdOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgewogICAgICAgICAgICB2YXIgZXZhbGQgPSB0aGlzLnZpc2l0KG5vZGVzW2ldKTsKICAgICAgICAgICAgaWYgKGV2YWxkID09PSB1bmRlZmluZWQpIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKCFldmFsZC5zcGxpY2UpIHsKICAgICAgICAgICAgICAgIG91dC5wdXNoKGV2YWxkKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChldmFsZC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbihldmFsZCwgb3V0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gb3V0OwogICAgfSwKICAgIGZsYXR0ZW46IGZ1bmN0aW9uKGFyciwgb3V0KSB7CiAgICAgICAgaWYgKCFvdXQpIHsKICAgICAgICAgICAgb3V0ID0gW107CiAgICAgICAgfQoKICAgICAgICB2YXIgY250LCBpLCBpdGVtLAogICAgICAgICAgICBuZXN0ZWRDbnQsIGosIG5lc3RlZEl0ZW07CgogICAgICAgIGZvciAoaSA9IDAsIGNudCA9IGFyci5sZW5ndGg7IGkgPCBjbnQ7IGkrKykgewogICAgICAgICAgICBpdGVtID0gYXJyW2ldOwogICAgICAgICAgICBpZiAoaXRlbSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWl0ZW0uc3BsaWNlKSB7CiAgICAgICAgICAgICAgICBvdXQucHVzaChpdGVtKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKGogPSAwLCBuZXN0ZWRDbnQgPSBpdGVtLmxlbmd0aDsgaiA8IG5lc3RlZENudDsgaisrKSB7CiAgICAgICAgICAgICAgICBuZXN0ZWRJdGVtID0gaXRlbVtqXTsKICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRJdGVtID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghbmVzdGVkSXRlbS5zcGxpY2UpIHsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChuZXN0ZWRJdGVtKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobmVzdGVkSXRlbS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW4obmVzdGVkSXRlbSwgb3V0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG91dDsKICAgIH0KfTsKbW9kdWxlLmV4cG9ydHMgPSBWaXNpdG9yOwoKfSx7Ii4uL3RyZWUiOjYxfV0sOTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewovLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXIKCnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTsKdmFyIHF1ZXVlID0gW107CnZhciBkcmFpbmluZyA9IGZhbHNlOwoKZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHsKICAgIGlmIChkcmFpbmluZykgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGRyYWluaW5nID0gdHJ1ZTsKICAgIHZhciBjdXJyZW50UXVldWU7CiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoOwogICAgd2hpbGUobGVuKSB7CiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7CiAgICAgICAgcXVldWUgPSBbXTsKICAgICAgICB2YXIgaSA9IC0xOwogICAgICAgIHdoaWxlICgrK2kgPCBsZW4pIHsKICAgICAgICAgICAgY3VycmVudFF1ZXVlW2ldKCk7CiAgICAgICAgfQogICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDsKICAgIH0KICAgIGRyYWluaW5nID0gZmFsc2U7Cn0KcHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHsKICAgIHF1ZXVlLnB1c2goZnVuKTsKICAgIGlmICghZHJhaW5pbmcpIHsKICAgICAgICBzZXRUaW1lb3V0KGRyYWluUXVldWUsIDApOwogICAgfQp9OwoKcHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJzsKcHJvY2Vzcy5icm93c2VyID0gdHJ1ZTsKcHJvY2Vzcy5lbnYgPSB7fTsKcHJvY2Vzcy5hcmd2ID0gW107CnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlcwpwcm9jZXNzLnZlcnNpb25zID0ge307CgpmdW5jdGlvbiBub29wKCkge30KCnByb2Nlc3Mub24gPSBub29wOwpwcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDsKcHJvY2Vzcy5vbmNlID0gbm9vcDsKcHJvY2Vzcy5vZmYgPSBub29wOwpwcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDsKcHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wOwpwcm9jZXNzLmVtaXQgPSBub29wOwoKcHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHsKICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTsKfTsKCi8vIFRPRE8oc2h0eWxtYW4pCnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07CnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpOwp9Owpwcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9OwoKfSx7fV0sOTE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewondXNlIHN0cmljdCc7Cgp2YXIgYXNhcCA9IHJlcXVpcmUoJ2FzYXAnKQoKbW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlOwpmdW5jdGlvbiBQcm9taXNlKGZuKSB7CiAgaWYgKHR5cGVvZiB0aGlzICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3JykKICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpCiAgdmFyIHN0YXRlID0gbnVsbAogIHZhciB2YWx1ZSA9IG51bGwKICB2YXIgZGVmZXJyZWRzID0gW10KICB2YXIgc2VsZiA9IHRoaXMKCiAgdGhpcy50aGVuID0gZnVuY3Rpb24ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHsKICAgIHJldHVybiBuZXcgc2VsZi5jb25zdHJ1Y3RvcihmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKICAgICAgaGFuZGxlKG5ldyBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCByZXNvbHZlLCByZWplY3QpKQogICAgfSkKICB9CgogIGZ1bmN0aW9uIGhhbmRsZShkZWZlcnJlZCkgewogICAgaWYgKHN0YXRlID09PSBudWxsKSB7CiAgICAgIGRlZmVycmVkcy5wdXNoKGRlZmVycmVkKQogICAgICByZXR1cm4KICAgIH0KICAgIGFzYXAoZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjYiA9IHN0YXRlID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkCiAgICAgIGlmIChjYiA9PT0gbnVsbCkgewogICAgICAgIChzdGF0ZSA/IGRlZmVycmVkLnJlc29sdmUgOiBkZWZlcnJlZC5yZWplY3QpKHZhbHVlKQogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIHZhciByZXQKICAgICAgdHJ5IHsKICAgICAgICByZXQgPSBjYih2YWx1ZSkKICAgICAgfQogICAgICBjYXRjaCAoZSkgewogICAgICAgIGRlZmVycmVkLnJlamVjdChlKQogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIGRlZmVycmVkLnJlc29sdmUocmV0KQogICAgfSkKICB9CgogIGZ1bmN0aW9uIHJlc29sdmUobmV3VmFsdWUpIHsKICAgIHRyeSB7IC8vUHJvbWlzZSBSZXNvbHV0aW9uIFByb2NlZHVyZTogaHR0cHM6Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3Byb21pc2VzLXNwZWMjdGhlLXByb21pc2UtcmVzb2x1dGlvbi1wcm9jZWR1cmUKICAgICAgaWYgKG5ld1ZhbHVlID09PSBzZWxmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLicpCiAgICAgIGlmIChuZXdWYWx1ZSAmJiAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdmdW5jdGlvbicpKSB7CiAgICAgICAgdmFyIHRoZW4gPSBuZXdWYWx1ZS50aGVuCiAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICBkb1Jlc29sdmUodGhlbi5iaW5kKG5ld1ZhbHVlKSwgcmVzb2x2ZSwgcmVqZWN0KQogICAgICAgICAgcmV0dXJuCiAgICAgICAgfQogICAgICB9CiAgICAgIHN0YXRlID0gdHJ1ZQogICAgICB2YWx1ZSA9IG5ld1ZhbHVlCiAgICAgIGZpbmFsZSgpCiAgICB9IGNhdGNoIChlKSB7IHJlamVjdChlKSB9CiAgfQoKICBmdW5jdGlvbiByZWplY3QobmV3VmFsdWUpIHsKICAgIHN0YXRlID0gZmFsc2UKICAgIHZhbHVlID0gbmV3VmFsdWUKICAgIGZpbmFsZSgpCiAgfQoKICBmdW5jdGlvbiBmaW5hbGUoKSB7CiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZGVmZXJyZWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKQogICAgICBoYW5kbGUoZGVmZXJyZWRzW2ldKQogICAgZGVmZXJyZWRzID0gbnVsbAogIH0KCiAgZG9SZXNvbHZlKGZuLCByZXNvbHZlLCByZWplY3QpCn0KCgpmdW5jdGlvbiBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCByZXNvbHZlLCByZWplY3QpewogIHRoaXMub25GdWxmaWxsZWQgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IG51bGwKICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsCiAgdGhpcy5yZXNvbHZlID0gcmVzb2x2ZQogIHRoaXMucmVqZWN0ID0gcmVqZWN0Cn0KCi8qKgogKiBUYWtlIGEgcG90ZW50aWFsbHkgbWlzYmVoYXZpbmcgcmVzb2x2ZXIgZnVuY3Rpb24gYW5kIG1ha2Ugc3VyZQogKiBvbkZ1bGZpbGxlZCBhbmQgb25SZWplY3RlZCBhcmUgb25seSBjYWxsZWQgb25jZS4KICoKICogTWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBhc3luY2hyb255LgogKi8KZnVuY3Rpb24gZG9SZXNvbHZlKGZuLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgewogIHZhciBkb25lID0gZmFsc2U7CiAgdHJ5IHsKICAgIGZuKGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICBpZiAoZG9uZSkgcmV0dXJuCiAgICAgIGRvbmUgPSB0cnVlCiAgICAgIG9uRnVsZmlsbGVkKHZhbHVlKQogICAgfSwgZnVuY3Rpb24gKHJlYXNvbikgewogICAgICBpZiAoZG9uZSkgcmV0dXJuCiAgICAgIGRvbmUgPSB0cnVlCiAgICAgIG9uUmVqZWN0ZWQocmVhc29uKQogICAgfSkKICB9IGNhdGNoIChleCkgewogICAgaWYgKGRvbmUpIHJldHVybgogICAgZG9uZSA9IHRydWUKICAgIG9uUmVqZWN0ZWQoZXgpCiAgfQp9Cgp9LHsiYXNhcCI6OTN9XSw5MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cid1c2Ugc3RyaWN0JzsKCi8vVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBFUzYgZXh0ZW5zaW9ucyB0byB0aGUgY29yZSBQcm9taXNlcy9BKyBBUEkKCnZhciBQcm9taXNlID0gcmVxdWlyZSgnLi9jb3JlLmpzJykKdmFyIGFzYXAgPSByZXF1aXJlKCdhc2FwJykKCm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZQoKLyogU3RhdGljIEZ1bmN0aW9ucyAqLwoKZnVuY3Rpb24gVmFsdWVQcm9taXNlKHZhbHVlKSB7CiAgdGhpcy50aGVuID0gZnVuY3Rpb24gKG9uRnVsZmlsbGVkKSB7CiAgICBpZiAodHlwZW9mIG9uRnVsZmlsbGVkICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gdGhpcwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgYXNhcChmdW5jdGlvbiAoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJlc29sdmUob25GdWxmaWxsZWQodmFsdWUpKQogICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgICByZWplY3QoZXgpOwogICAgICAgIH0KICAgICAgfSkKICAgIH0pCiAgfQp9ClZhbHVlUHJvbWlzZS5wcm90b3R5cGUgPSBQcm9taXNlLnByb3RvdHlwZQoKdmFyIFRSVUUgPSBuZXcgVmFsdWVQcm9taXNlKHRydWUpCnZhciBGQUxTRSA9IG5ldyBWYWx1ZVByb21pc2UoZmFsc2UpCnZhciBOVUxMID0gbmV3IFZhbHVlUHJvbWlzZShudWxsKQp2YXIgVU5ERUZJTkVEID0gbmV3IFZhbHVlUHJvbWlzZSh1bmRlZmluZWQpCnZhciBaRVJPID0gbmV3IFZhbHVlUHJvbWlzZSgwKQp2YXIgRU1QVFlTVFJJTkcgPSBuZXcgVmFsdWVQcm9taXNlKCcnKQoKUHJvbWlzZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkgcmV0dXJuIHZhbHVlCgogIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIE5VTEwKICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFVOREVGSU5FRAogIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIFRSVUUKICBpZiAodmFsdWUgPT09IGZhbHNlKSByZXR1cm4gRkFMU0UKICBpZiAodmFsdWUgPT09IDApIHJldHVybiBaRVJPCiAgaWYgKHZhbHVlID09PSAnJykgcmV0dXJuIEVNUFRZU1RSSU5HCgogIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgdHJ5IHsKICAgICAgdmFyIHRoZW4gPSB2YWx1ZS50aGVuCiAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0aGVuLmJpbmQodmFsdWUpKQogICAgICB9CiAgICB9IGNhdGNoIChleCkgewogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIHJlamVjdChleCkKICAgICAgfSkKICAgIH0KICB9CgogIHJldHVybiBuZXcgVmFsdWVQcm9taXNlKHZhbHVlKQp9CgpQcm9taXNlLmFsbCA9IGZ1bmN0aW9uIChhcnIpIHsKICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikKCiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJlc29sdmUoW10pCiAgICB2YXIgcmVtYWluaW5nID0gYXJncy5sZW5ndGgKICAgIGZ1bmN0aW9uIHJlcyhpLCB2YWwpIHsKICAgICAgdHJ5IHsKICAgICAgICBpZiAodmFsICYmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSkgewogICAgICAgICAgdmFyIHRoZW4gPSB2YWwudGhlbgogICAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIHRoZW4uY2FsbCh2YWwsIGZ1bmN0aW9uICh2YWwpIHsgcmVzKGksIHZhbCkgfSwgcmVqZWN0KQogICAgICAgICAgICByZXR1cm4KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYXJnc1tpXSA9IHZhbAogICAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkgewogICAgICAgICAgcmVzb2x2ZShhcmdzKTsKICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgcmVqZWN0KGV4KQogICAgICB9CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHsKICAgICAgcmVzKGksIGFyZ3NbaV0pCiAgICB9CiAgfSkKfQoKUHJvbWlzZS5yZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyAKICAgIHJlamVjdCh2YWx1ZSk7CiAgfSk7Cn0KClByb21pc2UucmFjZSA9IGZ1bmN0aW9uICh2YWx1ZXMpIHsKICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyAKICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXsKICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKHJlc29sdmUsIHJlamVjdCk7CiAgICB9KQogIH0pOwp9CgovKiBQcm90b3R5cGUgTWV0aG9kcyAqLwoKUHJvbWlzZS5wcm90b3R5cGVbJ2NhdGNoJ10gPSBmdW5jdGlvbiAob25SZWplY3RlZCkgewogIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3RlZCk7Cn0KCn0seyIuL2NvcmUuanMiOjkxLCJhc2FwIjo5M31dLDkzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKGZ1bmN0aW9uIChwcm9jZXNzKXsKCi8vIFVzZSB0aGUgZmFzdGVzdCBwb3NzaWJsZSBtZWFucyB0byBleGVjdXRlIGEgdGFzayBpbiBhIGZ1dHVyZSB0dXJuCi8vIG9mIHRoZSBldmVudCBsb29wLgoKLy8gbGlua2VkIGxpc3Qgb2YgdGFza3MgKHNpbmdsZSwgd2l0aCBoZWFkIG5vZGUpCnZhciBoZWFkID0ge3Rhc2s6IHZvaWQgMCwgbmV4dDogbnVsbH07CnZhciB0YWlsID0gaGVhZDsKdmFyIGZsdXNoaW5nID0gZmFsc2U7CnZhciByZXF1ZXN0Rmx1c2ggPSB2b2lkIDA7CnZhciBpc05vZGVKUyA9IGZhbHNlOwoKZnVuY3Rpb24gZmx1c2goKSB7CiAgICAvKiBqc2hpbnQgbG9vcGZ1bmM6IHRydWUgKi8KCiAgICB3aGlsZSAoaGVhZC5uZXh0KSB7CiAgICAgICAgaGVhZCA9IGhlYWQubmV4dDsKICAgICAgICB2YXIgdGFzayA9IGhlYWQudGFzazsKICAgICAgICBoZWFkLnRhc2sgPSB2b2lkIDA7CiAgICAgICAgdmFyIGRvbWFpbiA9IGhlYWQuZG9tYWluOwoKICAgICAgICBpZiAoZG9tYWluKSB7CiAgICAgICAgICAgIGhlYWQuZG9tYWluID0gdm9pZCAwOwogICAgICAgICAgICBkb21haW4uZW50ZXIoKTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHRhc2soKTsKCiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBpZiAoaXNOb2RlSlMpIHsKICAgICAgICAgICAgICAgIC8vIEluIG5vZGUsIHVuY2F1Z2h0IGV4Y2VwdGlvbnMgYXJlIGNvbnNpZGVyZWQgZmF0YWwgZXJyb3JzLgogICAgICAgICAgICAgICAgLy8gUmUtdGhyb3cgdGhlbSBzeW5jaHJvbm91c2x5IHRvIGludGVycnVwdCBmbHVzaGluZyEKCiAgICAgICAgICAgICAgICAvLyBFbnN1cmUgY29udGludWF0aW9uIGlmIHRoZSB1bmNhdWdodCBleGNlcHRpb24gaXMgc3VwcHJlc3NlZAogICAgICAgICAgICAgICAgLy8gbGlzdGVuaW5nICJ1bmNhdWdodEV4Y2VwdGlvbiIgZXZlbnRzIChhcyBkb21haW5zIGRvZXMpLgogICAgICAgICAgICAgICAgLy8gQ29udGludWUgaW4gbmV4dCBldmVudCB0byBhdm9pZCB0aWNrIHJlY3Vyc2lvbi4KICAgICAgICAgICAgICAgIGlmIChkb21haW4pIHsKICAgICAgICAgICAgICAgICAgICBkb21haW4uZXhpdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0VGltZW91dChmbHVzaCwgMCk7CiAgICAgICAgICAgICAgICBpZiAoZG9tYWluKSB7CiAgICAgICAgICAgICAgICAgICAgZG9tYWluLmVudGVyKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhyb3cgZTsKCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBJbiBicm93c2VycywgdW5jYXVnaHQgZXhjZXB0aW9ucyBhcmUgbm90IGZhdGFsLgogICAgICAgICAgICAgICAgLy8gUmUtdGhyb3cgdGhlbSBhc3luY2hyb25vdXNseSB0byBhdm9pZCBzbG93LWRvd25zLgogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGRvbWFpbikgewogICAgICAgICAgICBkb21haW4uZXhpdCgpOwogICAgICAgIH0KICAgIH0KCiAgICBmbHVzaGluZyA9IGZhbHNlOwp9CgppZiAodHlwZW9mIHByb2Nlc3MgIT09ICJ1bmRlZmluZWQiICYmIHByb2Nlc3MubmV4dFRpY2spIHsKICAgIC8vIE5vZGUuanMgYmVmb3JlIDAuOS4gTm90ZSB0aGF0IHNvbWUgZmFrZS1Ob2RlIGVudmlyb25tZW50cywgbGlrZSB0aGUKICAgIC8vIE1vY2hhIHRlc3QgcnVubmVyLCBpbnRyb2R1Y2UgYSBgcHJvY2Vzc2AgZ2xvYmFsIHdpdGhvdXQgYSBgbmV4dFRpY2tgLgogICAgaXNOb2RlSlMgPSB0cnVlOwoKICAgIHJlcXVlc3RGbHVzaCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTsKICAgIH07Cgp9IGVsc2UgaWYgKHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09ICJmdW5jdGlvbiIpIHsKICAgIC8vIEluIElFMTAsIE5vZGUuanMgMC45Kywgb3IgaHR0cHM6Ly9naXRodWIuY29tL05vYmxlSlMvc2V0SW1tZWRpYXRlCiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICByZXF1ZXN0Rmx1c2ggPSBzZXRJbW1lZGlhdGUuYmluZCh3aW5kb3csIGZsdXNoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmVxdWVzdEZsdXNoID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICBzZXRJbW1lZGlhdGUoZmx1c2gpOwogICAgICAgIH07CiAgICB9Cgp9IGVsc2UgaWYgKHR5cGVvZiBNZXNzYWdlQ2hhbm5lbCAhPT0gInVuZGVmaW5lZCIpIHsKICAgIC8vIG1vZGVybiBicm93c2VycwogICAgLy8gaHR0cDovL3d3dy5ub25ibG9ja2luZy5pby8yMDExLzA2L3dpbmRvd25leHR0aWNrLmh0bWwKICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZsdXNoOwogICAgcmVxdWVzdEZsdXNoID0gZnVuY3Rpb24gKCkgewogICAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoMCk7CiAgICB9OwoKfSBlbHNlIHsKICAgIC8vIG9sZCBicm93c2VycwogICAgcmVxdWVzdEZsdXNoID0gZnVuY3Rpb24gKCkgewogICAgICAgIHNldFRpbWVvdXQoZmx1c2gsIDApOwogICAgfTsKfQoKZnVuY3Rpb24gYXNhcCh0YXNrKSB7CiAgICB0YWlsID0gdGFpbC5uZXh0ID0gewogICAgICAgIHRhc2s6IHRhc2ssCiAgICAgICAgZG9tYWluOiBpc05vZGVKUyAmJiBwcm9jZXNzLmRvbWFpbiwKICAgICAgICBuZXh0OiBudWxsCiAgICB9OwoKICAgIGlmICghZmx1c2hpbmcpIHsKICAgICAgICBmbHVzaGluZyA9IHRydWU7CiAgICAgICAgcmVxdWVzdEZsdXNoKCk7CiAgICB9Cn07Cgptb2R1bGUuZXhwb3J0cyA9IGFzYXA7CgoKfSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpCn0seyJfcHJvY2VzcyI6OTB9XSw5NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ci8vIHNob3VsZCB3b3JrIGluIGFueSBicm93c2VyIHdpdGhvdXQgYnJvd3NlcmlmeQoKaWYgKHR5cGVvZiBQcm9taXNlLnByb3RvdHlwZS5kb25lICE9PSAnZnVuY3Rpb24nKSB7CiAgUHJvbWlzZS5wcm90b3R5cGUuZG9uZSA9IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgewogICAgdmFyIHNlbGYgPSBhcmd1bWVudHMubGVuZ3RoID8gdGhpcy50aGVuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB0aGlzCiAgICBzZWxmLnRoZW4obnVsbCwgZnVuY3Rpb24gKGVycikgewogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICB0aHJvdyBlcnIKICAgICAgfSwgMCkKICAgIH0pCiAgfQp9Cn0se31dLDk1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKLy8gbm90ICJ1c2Ugc3RyaWN0IiBzbyB3ZSBjYW4gZGVjbGFyZSBnbG9iYWwgIlByb21pc2UiCgp2YXIgYXNhcCA9IHJlcXVpcmUoJ2FzYXAnKTsKCmlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICBQcm9taXNlID0gcmVxdWlyZSgnLi9saWIvY29yZS5qcycpCiAgcmVxdWlyZSgnLi9saWIvZXM2LWV4dGVuc2lvbnMuanMnKQp9CgpyZXF1aXJlKCcuL3BvbHlmaWxsLWRvbmUuanMnKTsKCn0seyIuL2xpYi9jb3JlLmpzIjo5MSwiLi9saWIvZXM2LWV4dGVuc2lvbnMuanMiOjkyLCIuL3BvbHlmaWxsLWRvbmUuanMiOjk0LCJhc2FwIjo5M31dfSx7fSxbMl0pKDIpCn0pOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/assets/less-3.13.1.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIExlc3MgLSBMZWFuZXIgQ1NTIHYzLjEzLjEKICogaHR0cDovL2xlc3Njc3Mub3JnCiAqIAogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAyMCwgQWxleGlzIFNlbGxpZXIgPHNlbGZAY2xvdWRoZWFkLm5ldD4KICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgTGljZW5zZS4KICoKICogQGxpY2Vuc2UgQXBhY2hlLTIuMAogKi8KCihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7CiAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOgogIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6CiAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwubGVzcyA9IGZhY3RvcnkoKSk7Cn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnOwoKICAvLyBFeHBvcnQgYSBuZXcgZGVmYXVsdCBlYWNoIHRpbWUKICB2YXIgZGVmYXVsdE9wdGlvbnMgPSAoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHsKICAgICAgLyogSW5saW5lIEphdmFzY3JpcHQgLSBAcGx1Z2luIHN0aWxsIGFsbG93ZWQgKi8KICAgICAgamF2YXNjcmlwdEVuYWJsZWQ6IGZhbHNlLAogICAgICAvKiBPdXRwdXRzIGEgbWFrZWZpbGUgaW1wb3J0IGRlcGVuZGVuY3kgbGlzdCB0byBzdGRvdXQuICovCiAgICAgIGRlcGVuZHM6IGZhbHNlLAogICAgICAvKiAoREVQUkVDQVRFRCkgQ29tcHJlc3MgdXNpbmcgbGVzcyBidWlsdC1pbiBjb21wcmVzc2lvbi4KICAgICogVGhpcyBkb2VzIGFuIG9rYXkgam9iIGJ1dCBkb2VzIG5vdCB1dGlsaXNlIGFsbCB0aGUgdHJpY2tzIG9mCiAgICAqIGRlZGljYXRlZCBjc3MgY29tcHJlc3Npb24uICovCiAgICAgIGNvbXByZXNzOiBmYWxzZSwKICAgICAgLyogUnVucyB0aGUgbGVzcyBwYXJzZXIgYW5kIGp1c3QgcmVwb3J0cyBlcnJvcnMgd2l0aG91dCBhbnkgb3V0cHV0LiAqLwogICAgICBsaW50OiBmYWxzZSwKICAgICAgLyogU2V0cyBhdmFpbGFibGUgaW5jbHVkZSBwYXRocy4KICAgICogSWYgdGhlIGZpbGUgaW4gYW4gQGltcG9ydCBydWxlIGRvZXMgbm90IGV4aXN0IGF0IHRoYXQgZXhhY3QgbG9jYXRpb24sCiAgICAqIGxlc3Mgd2lsbCBsb29rIGZvciBpdCBhdCB0aGUgbG9jYXRpb24ocykgcGFzc2VkIHRvIHRoaXMgb3B0aW9uLgogICAgKiBZb3UgbWlnaHQgdXNlIHRoaXMgZm9yIGluc3RhbmNlIHRvIHNwZWNpZnkgYSBwYXRoIHRvIGEgbGlicmFyeSB3aGljaAogICAgKiB5b3Ugd2FudCB0byBiZSByZWZlcmVuY2VkIHNpbXBseSBhbmQgcmVsYXRpdmVseSBpbiB0aGUgbGVzcyBmaWxlcy4gKi8KICAgICAgcGF0aHM6IFtdLAogICAgICAvKiBjb2xvciBvdXRwdXQgaW4gdGhlIHRlcm1pbmFsICovCiAgICAgIGNvbG9yOiB0cnVlLAogICAgICAvKiBUaGUgc3RyaWN0SW1wb3J0cyBjb250cm9scyB3aGV0aGVyIHRoZSBjb21waWxlciB3aWxsIGFsbG93IGFuIEBpbXBvcnQgaW5zaWRlIG9mIGVpdGhlcgogICAgKiBAbWVkaWEgYmxvY2tzIG9yIChhIGxhdGVyIGFkZGl0aW9uKSBvdGhlciBzZWxlY3RvciBibG9ja3MuCiAgICAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvNjU2ICovCiAgICAgIHN0cmljdEltcG9ydHM6IGZhbHNlLAogICAgICAvKiBBbGxvdyBJbXBvcnRzIGZyb20gSW5zZWN1cmUgSFRUUFMgSG9zdHMgKi8KICAgICAgaW5zZWN1cmU6IGZhbHNlLAogICAgICAvKiBBbGxvd3MgeW91IHRvIGFkZCBhIHBhdGggdG8gZXZlcnkgZ2VuZXJhdGVkIGltcG9ydCBhbmQgdXJsIGluIHlvdXIgY3NzLgogICAgKiBUaGlzIGRvZXMgbm90IGFmZmVjdCBsZXNzIGltcG9ydCBzdGF0ZW1lbnRzIHRoYXQgYXJlIHByb2Nlc3NlZCwganVzdCBvbmVzCiAgICAqIHRoYXQgYXJlIGxlZnQgaW4gdGhlIG91dHB1dCBjc3MuICovCiAgICAgIHJvb3RwYXRoOiAnJywKICAgICAgLyogQnkgZGVmYXVsdCBVUkxzIGFyZSBrZXB0IGFzLWlzLCBzbyBpZiB5b3UgaW1wb3J0IGEgZmlsZSBpbiBhIHN1Yi1kaXJlY3RvcnkKICAgICogdGhhdCByZWZlcmVuY2VzIGFuIGltYWdlLCBleGFjdGx5IHRoZSBzYW1lIFVSTCB3aWxsIGJlIG91dHB1dCBpbiB0aGUgY3NzLgogICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIHJlLXdyaXRlIFVSTCdzIGluIGltcG9ydGVkIGZpbGVzIHNvIHRoYXQgdGhlCiAgICAqIFVSTCBpcyBhbHdheXMgcmVsYXRpdmUgdG8gdGhlIGJhc2UgaW1wb3J0ZWQgZmlsZSAqLwogICAgICByZXdyaXRlVXJsczogZmFsc2UsCiAgICAgIC8qIEhvdyB0byBwcm9jZXNzIG1hdGgKICAgICogICAwIGFsd2F5cyAgICAgICAgICAgLSBlYWdlcmx5IHRyeSB0byBzb2x2ZSBhbGwgb3BlcmF0aW9ucwogICAgKiAgIDEgcGFyZW5zLWRpdmlzaW9uICAtIHJlcXVpcmUgcGFyZW5zIGZvciBkaXZpc2lvbiAiLyIKICAgICogICAyIHBhcmVucyB8IHN0cmljdCAgLSByZXF1aXJlIHBhcmVucyBmb3IgYWxsIG9wZXJhdGlvbnMKICAgICogICAzIHN0cmljdC1sZWdhY3kgICAgLSBsZWdhY3kgc3RyaWN0IGJlaGF2aW9yIChzdXBlci1zdHJpY3QpCiAgICAqLwogICAgICBtYXRoOiAwLAogICAgICAvKiBXaXRob3V0IHRoaXMgb3B0aW9uLCBsZXNzIGF0dGVtcHRzIHRvIGd1ZXNzIGF0IHRoZSBvdXRwdXQgdW5pdCB3aGVuIGl0IGRvZXMgbWF0aHMuICovCiAgICAgIHN0cmljdFVuaXRzOiBmYWxzZSwKICAgICAgLyogRWZmZWN0aXZlbHkgdGhlIGRlY2xhcmF0aW9uIGlzIHB1dCBhdCB0aGUgdG9wIG9mIHlvdXIgYmFzZSBMZXNzIGZpbGUsCiAgICAqIG1lYW5pbmcgaXQgY2FuIGJlIHVzZWQgYnV0IGl0IGFsc28gY2FuIGJlIG92ZXJyaWRkZW4gaWYgdGhpcyB2YXJpYWJsZQogICAgKiBpcyBkZWZpbmVkIGluIHRoZSBmaWxlLiAqLwogICAgICBnbG9iYWxWYXJzOiBudWxsLAogICAgICAvKiBBcyBvcHBvc2VkIHRvIHRoZSBnbG9iYWwgdmFyaWFibGUgb3B0aW9uLCB0aGlzIHB1dHMgdGhlIGRlY2xhcmF0aW9uIGF0IHRoZQogICAgKiBlbmQgb2YgeW91ciBiYXNlIGZpbGUsIG1lYW5pbmcgaXQgd2lsbCBvdmVycmlkZSBhbnl0aGluZyBkZWZpbmVkIGluIHlvdXIgTGVzcyBmaWxlLiAqLwogICAgICBtb2RpZnlWYXJzOiBudWxsLAogICAgICAvKiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBhcmd1bWVudCB0byBnbyBvbiB0byBldmVyeSBVUkwuICAqLwogICAgICB1cmxBcmdzOiAnJwogIH0pOyB9KTsKCiAgZnVuY3Rpb24gZXh0cmFjdElkKGhyZWYpIHsKICAgICAgcmV0dXJuIGhyZWYucmVwbGFjZSgvXlthLXotXSs6XC8rP1teXC9dKy8sICcnKSAvLyBSZW1vdmUgcHJvdG9jb2wgJiBkb21haW4KICAgICAgICAgIC5yZXBsYWNlKC9bXD9cJl1saXZlcmVsb2FkPVx3Ky8sICcnKSAvLyBSZW1vdmUgTGl2ZVJlbG9hZCBjYWNoZWJ1c3RlcgogICAgICAgICAgLnJlcGxhY2UoL15cLy8sICcnKSAvLyBSZW1vdmUgcm9vdCAvCiAgICAgICAgICAucmVwbGFjZSgvXC5bYS16QS1aXSskLywgJycpIC8vIFJlbW92ZSBzaW1wbGUgZXh0ZW5zaW9uCiAgICAgICAgICAucmVwbGFjZSgvW15cLlx3LV0rL2csICctJykgLy8gUmVwbGFjZSBpbGxlZ2FsIGNoYXJhY3RlcnMKICAgICAgICAgIC5yZXBsYWNlKC9cLi9nLCAnOicpOyAvLyBSZXBsYWNlIGRvdHMgd2l0aCBjb2xvbnMoZm9yIHZhbGlkIGlkKQogIH0KICBmdW5jdGlvbiBhZGREYXRhQXR0cihvcHRpb25zLCB0YWcpIHsKICAgICAgZm9yICh2YXIgb3B0IGluIHRhZy5kYXRhc2V0KSB7CiAgICAgICAgICBpZiAodGFnLmRhdGFzZXQuaGFzT3duUHJvcGVydHkob3B0KSkgewogICAgICAgICAgICAgIGlmIChvcHQgPT09ICdlbnYnIHx8IG9wdCA9PT0gJ2R1bXBMaW5lTnVtYmVycycgfHwgb3B0ID09PSAncm9vdHBhdGgnIHx8IG9wdCA9PT0gJ2Vycm9yUmVwb3J0aW5nJykgewogICAgICAgICAgICAgICAgICBvcHRpb25zW29wdF0gPSB0YWcuZGF0YXNldFtvcHRdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNbb3B0XSA9IEpTT04ucGFyc2UodGFnLmRhdGFzZXRbb3B0XSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogIH0KCiAgdmFyIGJyb3dzZXIgPSB7CiAgICAgIGNyZWF0ZUNTUzogZnVuY3Rpb24gKGRvY3VtZW50LCBzdHlsZXMsIHNoZWV0KSB7CiAgICAgICAgICAvLyBTdHJpcCB0aGUgcXVlcnktc3RyaW5nCiAgICAgICAgICB2YXIgaHJlZiA9IHNoZWV0LmhyZWYgfHwgJyc7CiAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyB0aXRsZSBzZXQsIHVzZSB0aGUgZmlsZW5hbWUsIG1pbnVzIHRoZSBleHRlbnNpb24KICAgICAgICAgIHZhciBpZCA9ICJsZXNzOiIgKyAoc2hlZXQudGl0bGUgfHwgZXh0cmFjdElkKGhyZWYpKTsKICAgICAgICAgIC8vIElmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBET00sIHdlIG1heSBuZWVkIHRvIHJlcGxhY2UgaXQKICAgICAgICAgIHZhciBvbGRTdHlsZU5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgICB2YXIga2VlcE9sZFN0eWxlTm9kZSA9IGZhbHNlOwogICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHN0eWxlc2hlZXQgbm9kZSBmb3IgaW5zZXJ0aW9uIG9yIChpZiBuZWNlc3NhcnkpIHJlcGxhY2VtZW50CiAgICAgICAgICB2YXIgc3R5bGVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKICAgICAgICAgIHN0eWxlTm9kZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTsKICAgICAgICAgIGlmIChzaGVldC5tZWRpYSkgewogICAgICAgICAgICAgIHN0eWxlTm9kZS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgc2hlZXQubWVkaWEpOwogICAgICAgICAgfQogICAgICAgICAgc3R5bGVOb2RlLmlkID0gaWQ7CiAgICAgICAgICBpZiAoIXN0eWxlTm9kZS5zdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICAgc3R5bGVOb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0eWxlcykpOwogICAgICAgICAgICAgIC8vIElmIG5ldyBjb250ZW50cyBtYXRjaCBjb250ZW50cyBvZiBvbGRTdHlsZU5vZGUsIGRvbid0IHJlcGxhY2Ugb2xkU3R5bGVOb2RlCiAgICAgICAgICAgICAga2VlcE9sZFN0eWxlTm9kZSA9IChvbGRTdHlsZU5vZGUgIT09IG51bGwgJiYgb2xkU3R5bGVOb2RlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCAmJiBzdHlsZU5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPiAwICYmCiAgICAgICAgICAgICAgICAgIG9sZFN0eWxlTm9kZS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9PT0gc3R5bGVOb2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlKTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsKICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG9sZFN0eWxlTm9kZSwganVzdCBhcHBlbmQ7IG90aGVyd2lzZSwgb25seSBhcHBlbmQgaWYgd2UgbmVlZAogICAgICAgICAgLy8gdG8gcmVwbGFjZSBvbGRTdHlsZU5vZGUgd2l0aCBhbiB1cGRhdGVkIHN0eWxlc2hlZXQKICAgICAgICAgIGlmIChvbGRTdHlsZU5vZGUgPT09IG51bGwgfHwga2VlcE9sZFN0eWxlTm9kZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICB2YXIgbmV4dEVsID0gc2hlZXQgJiYgc2hlZXQubmV4dFNpYmxpbmcgfHwgbnVsbDsKICAgICAgICAgICAgICBpZiAobmV4dEVsKSB7CiAgICAgICAgICAgICAgICAgIG5leHRFbC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzdHlsZU5vZGUsIG5leHRFbCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlTm9kZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKG9sZFN0eWxlTm9kZSAmJiBrZWVwT2xkU3R5bGVOb2RlID09PSBmYWxzZSkgewogICAgICAgICAgICAgIG9sZFN0eWxlTm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZFN0eWxlTm9kZSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBGb3IgSUUuCiAgICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiAqYWZ0ZXIqIHRoZSBzdHlsZSBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBET00sIG90aGVyd2lzZSBJRSA3IGFuZCA4IG1heSBjcmFzaC4KICAgICAgICAgIC8vIFNlZSBodHRwOi8vc29jaWFsLm1zZG4ubWljcm9zb2Z0LmNvbS9Gb3J1bXMvZW4tVVMvN2UwODFiNjUtODc4YS00YzIyLThlNjgtYzEwZDM5YzJlZDMyL2ludGVybmV0LWV4cGxvcmVyLWNyYXNoZXMtYXBwZW5kaW5nLXN0eWxlLWVsZW1lbnQtdG8taGVhZAogICAgICAgICAgaWYgKHN0eWxlTm9kZS5zdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgc3R5bGVOb2RlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHN0eWxlczsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZG5cJ3QgcmVhc3NpZ24gc3R5bGVTaGVldC5jc3NUZXh0LicpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfSwKICAgICAgY3VycmVudFNjcmlwdDogZnVuY3Rpb24gKHdpbmRvdykgewogICAgICAgICAgdmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OwogICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgfHwgKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICB2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsKICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0c1tzY3JpcHRzLmxlbmd0aCAtIDFdOwogICAgICAgICAgfSkoKTsKICAgICAgfQogIH07CgogIHZhciBhZGREZWZhdWx0T3B0aW9ucyA9IChmdW5jdGlvbiAod2luZG93LCBvcHRpb25zKSB7CiAgICAgIC8vIHVzZSBvcHRpb25zIGZyb20gdGhlIGN1cnJlbnQgc2NyaXB0IHRhZyBkYXRhIGF0dHJpYnVlcwogICAgICBhZGREYXRhQXR0cihvcHRpb25zLCBicm93c2VyLmN1cnJlbnRTY3JpcHQod2luZG93KSk7CiAgICAgIGlmIChvcHRpb25zLmlzRmlsZVByb3RvY29sID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgIG9wdGlvbnMuaXNGaWxlUHJvdG9jb2wgPSAvXihmaWxlfChjaHJvbWV8c2FmYXJpKSgtZXh0ZW5zaW9uKT98cmVzb3VyY2V8cXJjfGFwcCk6Ly50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCk7CiAgICAgIH0KICAgICAgLy8gTG9hZCBzdHlsZXMgYXN5bmNocm9ub3VzbHkgKGRlZmF1bHQ6IGZhbHNlKQogICAgICAvLwogICAgICAvLyBUaGlzIGlzIHNldCB0byBgZmFsc2VgIGJ5IGRlZmF1bHQsIHNvIHRoYXQgdGhlIGJvZHkKICAgICAgLy8gZG9lc24ndCBzdGFydCBsb2FkaW5nIGJlZm9yZSB0aGUgc3R5bGVzaGVldHMgYXJlIHBhcnNlZC4KICAgICAgLy8gU2V0dGluZyB0aGlzIHRvIGB0cnVlYCBjYW4gcmVzdWx0IGluIGZsaWNrZXJpbmcuCiAgICAgIC8vCiAgICAgIG9wdGlvbnMuYXN5bmMgPSBvcHRpb25zLmFzeW5jIHx8IGZhbHNlOwogICAgICBvcHRpb25zLmZpbGVBc3luYyA9IG9wdGlvbnMuZmlsZUFzeW5jIHx8IGZhbHNlOwogICAgICAvLyBJbnRlcnZhbCBiZXR3ZWVuIHdhdGNoIHBvbGxzCiAgICAgIG9wdGlvbnMucG9sbCA9IG9wdGlvbnMucG9sbCB8fCAob3B0aW9ucy5pc0ZpbGVQcm90b2NvbCA/IDEwMDAgOiAxNTAwKTsKICAgICAgb3B0aW9ucy5lbnYgPSBvcHRpb25zLmVudiB8fCAod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lID09ICcxMjcuMC4wLjEnIHx8CiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgPT0gJzAuMC4wLjAnIHx8CiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgPT0gJ2xvY2FsaG9zdCcgfHwKICAgICAgICAgICh3aW5kb3cubG9jYXRpb24ucG9ydCAmJgogICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wb3J0Lmxlbmd0aCA+IDApIHx8CiAgICAgICAgICBvcHRpb25zLmlzRmlsZVByb3RvY29sID8gJ2RldmVsb3BtZW50JwogICAgICAgICAgOiAncHJvZHVjdGlvbicpOwogICAgICB2YXIgZHVtcExpbmVOdW1iZXJzID0gLyFkdW1wTGluZU51bWJlcnM6KGNvbW1lbnRzfG1lZGlhcXVlcnl8YWxsKS8uZXhlYyh3aW5kb3cubG9jYXRpb24uaGFzaCk7CiAgICAgIGlmIChkdW1wTGluZU51bWJlcnMpIHsKICAgICAgICAgIG9wdGlvbnMuZHVtcExpbmVOdW1iZXJzID0gZHVtcExpbmVOdW1iZXJzWzFdOwogICAgICB9CiAgICAgIGlmIChvcHRpb25zLnVzZUZpbGVDYWNoZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBvcHRpb25zLnVzZUZpbGVDYWNoZSA9IHRydWU7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMub25SZWFkeSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBvcHRpb25zLm9uUmVhZHkgPSB0cnVlOwogICAgICB9CiAgICAgIGlmIChvcHRpb25zLnJlbGF0aXZlVXJscykgewogICAgICAgICAgb3B0aW9ucy5yZXdyaXRlVXJscyA9ICdhbGwnOwogICAgICB9CiAgfSk7CgogIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCgogIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCiAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAogIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SCiAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgogIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqLwogIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAogICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAogICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKQogICAgICAgICAgICAgIGlmIChiLmhhc093blByb3BlcnR5KHApKQogICAgICAgICAgICAgICAgICBkW3BdID0gYltwXTsgfTsKICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CiAgfTsKICBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikgewogICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwogICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwogIH0KICBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHsKICAgICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKQogICAgICAgICAgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoOwogICAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspCiAgICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKykKICAgICAgICAgICAgICByW2tdID0gYVtqXTsKICAgICAgcmV0dXJuIHI7CiAgfQoKICB2YXIgY29sb3JzID0gewogICAgICAnYWxpY2VibHVlJzogJyNmMGY4ZmYnLAogICAgICAnYW50aXF1ZXdoaXRlJzogJyNmYWViZDcnLAogICAgICAnYXF1YSc6ICcjMDBmZmZmJywKICAgICAgJ2FxdWFtYXJpbmUnOiAnIzdmZmZkNCcsCiAgICAgICdhenVyZSc6ICcjZjBmZmZmJywKICAgICAgJ2JlaWdlJzogJyNmNWY1ZGMnLAogICAgICAnYmlzcXVlJzogJyNmZmU0YzQnLAogICAgICAnYmxhY2snOiAnIzAwMDAwMCcsCiAgICAgICdibGFuY2hlZGFsbW9uZCc6ICcjZmZlYmNkJywKICAgICAgJ2JsdWUnOiAnIzAwMDBmZicsCiAgICAgICdibHVldmlvbGV0JzogJyM4YTJiZTInLAogICAgICAnYnJvd24nOiAnI2E1MmEyYScsCiAgICAgICdidXJseXdvb2QnOiAnI2RlYjg4NycsCiAgICAgICdjYWRldGJsdWUnOiAnIzVmOWVhMCcsCiAgICAgICdjaGFydHJldXNlJzogJyM3ZmZmMDAnLAogICAgICAnY2hvY29sYXRlJzogJyNkMjY5MWUnLAogICAgICAnY29yYWwnOiAnI2ZmN2Y1MCcsCiAgICAgICdjb3JuZmxvd2VyYmx1ZSc6ICcjNjQ5NWVkJywKICAgICAgJ2Nvcm5zaWxrJzogJyNmZmY4ZGMnLAogICAgICAnY3JpbXNvbic6ICcjZGMxNDNjJywKICAgICAgJ2N5YW4nOiAnIzAwZmZmZicsCiAgICAgICdkYXJrYmx1ZSc6ICcjMDAwMDhiJywKICAgICAgJ2RhcmtjeWFuJzogJyMwMDhiOGInLAogICAgICAnZGFya2dvbGRlbnJvZCc6ICcjYjg4NjBiJywKICAgICAgJ2RhcmtncmF5JzogJyNhOWE5YTknLAogICAgICAnZGFya2dyZXknOiAnI2E5YTlhOScsCiAgICAgICdkYXJrZ3JlZW4nOiAnIzAwNjQwMCcsCiAgICAgICdkYXJra2hha2knOiAnI2JkYjc2YicsCiAgICAgICdkYXJrbWFnZW50YSc6ICcjOGIwMDhiJywKICAgICAgJ2RhcmtvbGl2ZWdyZWVuJzogJyM1NTZiMmYnLAogICAgICAnZGFya29yYW5nZSc6ICcjZmY4YzAwJywKICAgICAgJ2RhcmtvcmNoaWQnOiAnIzk5MzJjYycsCiAgICAgICdkYXJrcmVkJzogJyM4YjAwMDAnLAogICAgICAnZGFya3NhbG1vbic6ICcjZTk5NjdhJywKICAgICAgJ2RhcmtzZWFncmVlbic6ICcjOGZiYzhmJywKICAgICAgJ2RhcmtzbGF0ZWJsdWUnOiAnIzQ4M2Q4YicsCiAgICAgICdkYXJrc2xhdGVncmF5JzogJyMyZjRmNGYnLAogICAgICAnZGFya3NsYXRlZ3JleSc6ICcjMmY0ZjRmJywKICAgICAgJ2Rhcmt0dXJxdW9pc2UnOiAnIzAwY2VkMScsCiAgICAgICdkYXJrdmlvbGV0JzogJyM5NDAwZDMnLAogICAgICAnZGVlcHBpbmsnOiAnI2ZmMTQ5MycsCiAgICAgICdkZWVwc2t5Ymx1ZSc6ICcjMDBiZmZmJywKICAgICAgJ2RpbWdyYXknOiAnIzY5Njk2OScsCiAgICAgICdkaW1ncmV5JzogJyM2OTY5NjknLAogICAgICAnZG9kZ2VyYmx1ZSc6ICcjMWU5MGZmJywKICAgICAgJ2ZpcmVicmljayc6ICcjYjIyMjIyJywKICAgICAgJ2Zsb3JhbHdoaXRlJzogJyNmZmZhZjAnLAogICAgICAnZm9yZXN0Z3JlZW4nOiAnIzIyOGIyMicsCiAgICAgICdmdWNoc2lhJzogJyNmZjAwZmYnLAogICAgICAnZ2FpbnNib3JvJzogJyNkY2RjZGMnLAogICAgICAnZ2hvc3R3aGl0ZSc6ICcjZjhmOGZmJywKICAgICAgJ2dvbGQnOiAnI2ZmZDcwMCcsCiAgICAgICdnb2xkZW5yb2QnOiAnI2RhYTUyMCcsCiAgICAgICdncmF5JzogJyM4MDgwODAnLAogICAgICAnZ3JleSc6ICcjODA4MDgwJywKICAgICAgJ2dyZWVuJzogJyMwMDgwMDAnLAogICAgICAnZ3JlZW55ZWxsb3cnOiAnI2FkZmYyZicsCiAgICAgICdob25leWRldyc6ICcjZjBmZmYwJywKICAgICAgJ2hvdHBpbmsnOiAnI2ZmNjliNCcsCiAgICAgICdpbmRpYW5yZWQnOiAnI2NkNWM1YycsCiAgICAgICdpbmRpZ28nOiAnIzRiMDA4MicsCiAgICAgICdpdm9yeSc6ICcjZmZmZmYwJywKICAgICAgJ2toYWtpJzogJyNmMGU2OGMnLAogICAgICAnbGF2ZW5kZXInOiAnI2U2ZTZmYScsCiAgICAgICdsYXZlbmRlcmJsdXNoJzogJyNmZmYwZjUnLAogICAgICAnbGF3bmdyZWVuJzogJyM3Y2ZjMDAnLAogICAgICAnbGVtb25jaGlmZm9uJzogJyNmZmZhY2QnLAogICAgICAnbGlnaHRibHVlJzogJyNhZGQ4ZTYnLAogICAgICAnbGlnaHRjb3JhbCc6ICcjZjA4MDgwJywKICAgICAgJ2xpZ2h0Y3lhbic6ICcjZTBmZmZmJywKICAgICAgJ2xpZ2h0Z29sZGVucm9keWVsbG93JzogJyNmYWZhZDInLAogICAgICAnbGlnaHRncmF5JzogJyNkM2QzZDMnLAogICAgICAnbGlnaHRncmV5JzogJyNkM2QzZDMnLAogICAgICAnbGlnaHRncmVlbic6ICcjOTBlZTkwJywKICAgICAgJ2xpZ2h0cGluayc6ICcjZmZiNmMxJywKICAgICAgJ2xpZ2h0c2FsbW9uJzogJyNmZmEwN2EnLAogICAgICAnbGlnaHRzZWFncmVlbic6ICcjMjBiMmFhJywKICAgICAgJ2xpZ2h0c2t5Ymx1ZSc6ICcjODdjZWZhJywKICAgICAgJ2xpZ2h0c2xhdGVncmF5JzogJyM3Nzg4OTknLAogICAgICAnbGlnaHRzbGF0ZWdyZXknOiAnIzc3ODg5OScsCiAgICAgICdsaWdodHN0ZWVsYmx1ZSc6ICcjYjBjNGRlJywKICAgICAgJ2xpZ2h0eWVsbG93JzogJyNmZmZmZTAnLAogICAgICAnbGltZSc6ICcjMDBmZjAwJywKICAgICAgJ2xpbWVncmVlbic6ICcjMzJjZDMyJywKICAgICAgJ2xpbmVuJzogJyNmYWYwZTYnLAogICAgICAnbWFnZW50YSc6ICcjZmYwMGZmJywKICAgICAgJ21hcm9vbic6ICcjODAwMDAwJywKICAgICAgJ21lZGl1bWFxdWFtYXJpbmUnOiAnIzY2Y2RhYScsCiAgICAgICdtZWRpdW1ibHVlJzogJyMwMDAwY2QnLAogICAgICAnbWVkaXVtb3JjaGlkJzogJyNiYTU1ZDMnLAogICAgICAnbWVkaXVtcHVycGxlJzogJyM5MzcwZDgnLAogICAgICAnbWVkaXVtc2VhZ3JlZW4nOiAnIzNjYjM3MScsCiAgICAgICdtZWRpdW1zbGF0ZWJsdWUnOiAnIzdiNjhlZScsCiAgICAgICdtZWRpdW1zcHJpbmdncmVlbic6ICcjMDBmYTlhJywKICAgICAgJ21lZGl1bXR1cnF1b2lzZSc6ICcjNDhkMWNjJywKICAgICAgJ21lZGl1bXZpb2xldHJlZCc6ICcjYzcxNTg1JywKICAgICAgJ21pZG5pZ2h0Ymx1ZSc6ICcjMTkxOTcwJywKICAgICAgJ21pbnRjcmVhbSc6ICcjZjVmZmZhJywKICAgICAgJ21pc3R5cm9zZSc6ICcjZmZlNGUxJywKICAgICAgJ21vY2Nhc2luJzogJyNmZmU0YjUnLAogICAgICAnbmF2YWpvd2hpdGUnOiAnI2ZmZGVhZCcsCiAgICAgICduYXZ5JzogJyMwMDAwODAnLAogICAgICAnb2xkbGFjZSc6ICcjZmRmNWU2JywKICAgICAgJ29saXZlJzogJyM4MDgwMDAnLAogICAgICAnb2xpdmVkcmFiJzogJyM2YjhlMjMnLAogICAgICAnb3JhbmdlJzogJyNmZmE1MDAnLAogICAgICAnb3JhbmdlcmVkJzogJyNmZjQ1MDAnLAogICAgICAnb3JjaGlkJzogJyNkYTcwZDYnLAogICAgICAncGFsZWdvbGRlbnJvZCc6ICcjZWVlOGFhJywKICAgICAgJ3BhbGVncmVlbic6ICcjOThmYjk4JywKICAgICAgJ3BhbGV0dXJxdW9pc2UnOiAnI2FmZWVlZScsCiAgICAgICdwYWxldmlvbGV0cmVkJzogJyNkODcwOTMnLAogICAgICAncGFwYXlhd2hpcCc6ICcjZmZlZmQ1JywKICAgICAgJ3BlYWNocHVmZic6ICcjZmZkYWI5JywKICAgICAgJ3BlcnUnOiAnI2NkODUzZicsCiAgICAgICdwaW5rJzogJyNmZmMwY2InLAogICAgICAncGx1bSc6ICcjZGRhMGRkJywKICAgICAgJ3Bvd2RlcmJsdWUnOiAnI2IwZTBlNicsCiAgICAgICdwdXJwbGUnOiAnIzgwMDA4MCcsCiAgICAgICdyZWJlY2NhcHVycGxlJzogJyM2NjMzOTknLAogICAgICAncmVkJzogJyNmZjAwMDAnLAogICAgICAncm9zeWJyb3duJzogJyNiYzhmOGYnLAogICAgICAncm95YWxibHVlJzogJyM0MTY5ZTEnLAogICAgICAnc2FkZGxlYnJvd24nOiAnIzhiNDUxMycsCiAgICAgICdzYWxtb24nOiAnI2ZhODA3MicsCiAgICAgICdzYW5keWJyb3duJzogJyNmNGE0NjAnLAogICAgICAnc2VhZ3JlZW4nOiAnIzJlOGI1NycsCiAgICAgICdzZWFzaGVsbCc6ICcjZmZmNWVlJywKICAgICAgJ3NpZW5uYSc6ICcjYTA1MjJkJywKICAgICAgJ3NpbHZlcic6ICcjYzBjMGMwJywKICAgICAgJ3NreWJsdWUnOiAnIzg3Y2VlYicsCiAgICAgICdzbGF0ZWJsdWUnOiAnIzZhNWFjZCcsCiAgICAgICdzbGF0ZWdyYXknOiAnIzcwODA5MCcsCiAgICAgICdzbGF0ZWdyZXknOiAnIzcwODA5MCcsCiAgICAgICdzbm93JzogJyNmZmZhZmEnLAogICAgICAnc3ByaW5nZ3JlZW4nOiAnIzAwZmY3ZicsCiAgICAgICdzdGVlbGJsdWUnOiAnIzQ2ODJiNCcsCiAgICAgICd0YW4nOiAnI2QyYjQ4YycsCiAgICAgICd0ZWFsJzogJyMwMDgwODAnLAogICAgICAndGhpc3RsZSc6ICcjZDhiZmQ4JywKICAgICAgJ3RvbWF0byc6ICcjZmY2MzQ3JywKICAgICAgJ3R1cnF1b2lzZSc6ICcjNDBlMGQwJywKICAgICAgJ3Zpb2xldCc6ICcjZWU4MmVlJywKICAgICAgJ3doZWF0JzogJyNmNWRlYjMnLAogICAgICAnd2hpdGUnOiAnI2ZmZmZmZicsCiAgICAgICd3aGl0ZXNtb2tlJzogJyNmNWY1ZjUnLAogICAgICAneWVsbG93JzogJyNmZmZmMDAnLAogICAgICAneWVsbG93Z3JlZW4nOiAnIzlhY2QzMicKICB9OwoKICB2YXIgdW5pdENvbnZlcnNpb25zID0gewogICAgICBsZW5ndGg6IHsKICAgICAgICAgICdtJzogMSwKICAgICAgICAgICdjbSc6IDAuMDEsCiAgICAgICAgICAnbW0nOiAwLjAwMSwKICAgICAgICAgICdpbic6IDAuMDI1NCwKICAgICAgICAgICdweCc6IDAuMDI1NCAvIDk2LAogICAgICAgICAgJ3B0JzogMC4wMjU0IC8gNzIsCiAgICAgICAgICAncGMnOiAwLjAyNTQgLyA3MiAqIDEyCiAgICAgIH0sCiAgICAgIGR1cmF0aW9uOiB7CiAgICAgICAgICAncyc6IDEsCiAgICAgICAgICAnbXMnOiAwLjAwMQogICAgICB9LAogICAgICBhbmdsZTogewogICAgICAgICAgJ3JhZCc6IDEgLyAoMiAqIE1hdGguUEkpLAogICAgICAgICAgJ2RlZyc6IDEgLyAzNjAsCiAgICAgICAgICAnZ3JhZCc6IDEgLyA0MDAsCiAgICAgICAgICAndHVybic6IDEKICAgICAgfQogIH07CgogIHZhciBkYXRhID0geyBjb2xvcnM6IGNvbG9ycywgdW5pdENvbnZlcnNpb25zOiB1bml0Q29udmVyc2lvbnMgfTsKCiAgLyoqCiAgICogVGhlIHJlYXNvbiB3aHkgTm9kZSBpcyBhIGNsYXNzIGFuZCBvdGhlciBub2RlcyBzaW1wbHkgZG8gbm90IGV4dGVuZAogICAqIGZyb20gTm9kZSAoc2luY2Ugd2UncmUgdHJhbnNwaWxpbmcpIGlzIGR1ZSB0byB0aGlzIGlzc3VlOgogICAqCiAgICogaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMzQzNAogICAqLwogIHZhciBOb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBOb2RlKCkgewogICAgICAgICAgdGhpcy5wYXJlbnQgPSBudWxsOwogICAgICAgICAgdGhpcy52aXNpYmlsaXR5QmxvY2tzID0gdW5kZWZpbmVkOwogICAgICAgICAgdGhpcy5ub2RlVmlzaWJsZSA9IHVuZGVmaW5lZDsKICAgICAgICAgIHRoaXMucm9vdE5vZGUgPSBudWxsOwogICAgICAgICAgdGhpcy5wYXJzZWQgPSBudWxsOwogICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjdXJyZW50RmlsZUluZm8nLCB7CiAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmLmZpbGVJbmZvKCk7IH0KICAgICAgICAgIH0pOwogICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdpbmRleCcsIHsKICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlbGYuZ2V0SW5kZXgoKTsgfQogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgTm9kZS5wcm90b3R5cGUuc2V0UGFyZW50ID0gZnVuY3Rpb24gKG5vZGVzLCBwYXJlbnQpIHsKICAgICAgICAgIGZ1bmN0aW9uIHNldChub2RlKSB7CiAgICAgICAgICAgICAgaWYgKG5vZGUgJiYgbm9kZSBpbnN0YW5jZW9mIE5vZGUpIHsKICAgICAgICAgICAgICAgICAgbm9kZS5wYXJlbnQgPSBwYXJlbnQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7CiAgICAgICAgICAgICAgbm9kZXMuZm9yRWFjaChzZXQpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgc2V0KG5vZGVzKTsKICAgICAgICAgIH0KICAgICAgfTsKICAgICAgTm9kZS5wcm90b3R5cGUuZ2V0SW5kZXggPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5faW5kZXggfHwgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmdldEluZGV4KCkpIHx8IDA7CiAgICAgIH07CiAgICAgIE5vZGUucHJvdG90eXBlLmZpbGVJbmZvID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVJbmZvIHx8ICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5maWxlSW5mbygpKSB8fCB7fTsKICAgICAgfTsKICAgICAgTm9kZS5wcm90b3R5cGUuaXNSdWxlc2V0TGlrZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfTsKICAgICAgTm9kZS5wcm90b3R5cGUudG9DU1MgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgICAgICAgdmFyIHN0cnMgPSBbXTsKICAgICAgICAgIHRoaXMuZ2VuQ1NTKGNvbnRleHQsIHsKICAgICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uIChjaHVuaywgZmlsZUluZm8sIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgIHN0cnMucHVzaChjaHVuayk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBpc0VtcHR5OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJzLmxlbmd0aCA9PT0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybiBzdHJzLmpvaW4oJycpOwogICAgICB9OwogICAgICBOb2RlLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgICAgICBvdXRwdXQuYWRkKHRoaXMudmFsdWUpOwogICAgICB9OwogICAgICBOb2RlLnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgICAgICAgdGhpcy52YWx1ZSA9IHZpc2l0b3IudmlzaXQodGhpcy52YWx1ZSk7CiAgICAgIH07CiAgICAgIE5vZGUucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9OwogICAgICBOb2RlLnByb3RvdHlwZS5fb3BlcmF0ZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBvcCwgYSwgYikgewogICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICAgICAgIGNhc2UgJysnOiByZXR1cm4gYSArIGI7CiAgICAgICAgICAgICAgY2FzZSAnLSc6IHJldHVybiBhIC0gYjsKICAgICAgICAgICAgICBjYXNlICcqJzogcmV0dXJuIGEgKiBiOwogICAgICAgICAgICAgIGNhc2UgJy8nOiByZXR1cm4gYSAvIGI7CiAgICAgICAgICB9CiAgICAgIH07CiAgICAgIE5vZGUucHJvdG90eXBlLmZyb3VuZCA9IGZ1bmN0aW9uIChjb250ZXh0LCB2YWx1ZSkgewogICAgICAgICAgdmFyIHByZWNpc2lvbiA9IGNvbnRleHQgJiYgY29udGV4dC5udW1QcmVjaXNpb247CiAgICAgICAgICAvLyBhZGQgImVwc2lsb24iIHRvIGVuc3VyZSBudW1iZXJzIGxpa2UgMS4wMDAwMDAwMDUgKHJlcHJlc2VudGVkIGFzIDEuMDAwMDAwMDA0OTk5Li4uKSBhcmUgcHJvcGVybHkgcm91bmRlZDoKICAgICAgICAgIHJldHVybiAocHJlY2lzaW9uKSA/IE51bWJlcigodmFsdWUgKyAyZS0xNikudG9GaXhlZChwcmVjaXNpb24pKSA6IHZhbHVlOwogICAgICB9OwogICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBub2RlIHJlcHJlc2VudHMgcm9vdCBvZiBhc3QgaW1wb3J0ZWQgYnkgcmVmZXJlbmNlCiAgICAgIE5vZGUucHJvdG90eXBlLmJsb2Nrc1Zpc2liaWxpdHkgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpZiAodGhpcy52aXNpYmlsaXR5QmxvY2tzID09IG51bGwpIHsKICAgICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlCbG9ja3MgPSAwOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eUJsb2NrcyAhPT0gMDsKICAgICAgfTsKICAgICAgTm9kZS5wcm90b3R5cGUuYWRkVmlzaWJpbGl0eUJsb2NrID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgaWYgKHRoaXMudmlzaWJpbGl0eUJsb2NrcyA9PSBudWxsKSB7CiAgICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5QmxvY2tzID0gMDsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMudmlzaWJpbGl0eUJsb2NrcyA9IHRoaXMudmlzaWJpbGl0eUJsb2NrcyArIDE7CiAgICAgIH07CiAgICAgIE5vZGUucHJvdG90eXBlLnJlbW92ZVZpc2liaWxpdHlCbG9jayA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmICh0aGlzLnZpc2liaWxpdHlCbG9ja3MgPT0gbnVsbCkgewogICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eUJsb2NrcyA9IDA7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnZpc2liaWxpdHlCbG9ja3MgPSB0aGlzLnZpc2liaWxpdHlCbG9ja3MgLSAxOwogICAgICB9OwogICAgICAvLyBUdXJucyBvbiBub2RlIHZpc2liaWxpdHkgLSBpZiBjYWxsZWQgbm9kZSB3aWxsIGJlIHNob3duIGluIG91dHB1dCByZWdhcmRsZXNzCiAgICAgIC8vIG9mIHdoZXRoZXIgaXQgY29tZXMgZnJvbSBpbXBvcnQgYnkgcmVmZXJlbmNlIG9yIG5vdAogICAgICBOb2RlLnByb3RvdHlwZS5lbnN1cmVWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgdGhpcy5ub2RlVmlzaWJsZSA9IHRydWU7CiAgICAgIH07CiAgICAgIC8vIFR1cm5zIG9mZiBub2RlIHZpc2liaWxpdHkgLSBpZiBjYWxsZWQgbm9kZSB3aWxsIE5PVCBiZSBzaG93biBpbiBvdXRwdXQgcmVnYXJkbGVzcwogICAgICAvLyBvZiB3aGV0aGVyIGl0IGNvbWVzIGZyb20gaW1wb3J0IGJ5IHJlZmVyZW5jZSBvciBub3QKICAgICAgTm9kZS5wcm90b3R5cGUuZW5zdXJlSW52aXNpYmlsaXR5ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgdGhpcy5ub2RlVmlzaWJsZSA9IGZhbHNlOwogICAgICB9OwogICAgICAvLyByZXR1cm4gdmFsdWVzOgogICAgICAvLyBmYWxzZSAtIHRoZSBub2RlIG11c3Qgbm90IGJlIHZpc2libGUKICAgICAgLy8gdHJ1ZSAtIHRoZSBub2RlIG11c3QgYmUgdmlzaWJsZQogICAgICAvLyB1bmRlZmluZWQgb3IgbnVsbCAtIHRoZSBub2RlIGhhcyB0aGUgc2FtZSB2aXNpYmlsaXR5IGFzIGl0cyBwYXJlbnQKICAgICAgTm9kZS5wcm90b3R5cGUuaXNWaXNpYmxlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubm9kZVZpc2libGU7CiAgICAgIH07CiAgICAgIE5vZGUucHJvdG90eXBlLnZpc2liaWxpdHlJbmZvID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICB2aXNpYmlsaXR5QmxvY2tzOiB0aGlzLnZpc2liaWxpdHlCbG9ja3MsCiAgICAgICAgICAgICAgbm9kZVZpc2libGU6IHRoaXMubm9kZVZpc2libGUKICAgICAgICAgIH07CiAgICAgIH07CiAgICAgIE5vZGUucHJvdG90eXBlLmNvcHlWaXNpYmlsaXR5SW5mbyA9IGZ1bmN0aW9uIChpbmZvKSB7CiAgICAgICAgICBpZiAoIWluZm8pIHsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnZpc2liaWxpdHlCbG9ja3MgPSBpbmZvLnZpc2liaWxpdHlCbG9ja3M7CiAgICAgICAgICB0aGlzLm5vZGVWaXNpYmxlID0gaW5mby5ub2RlVmlzaWJsZTsKICAgICAgfTsKICAgICAgcmV0dXJuIE5vZGU7CiAgfSgpKTsKICBOb2RlLmNvbXBhcmUgPSBmdW5jdGlvbiAoYSwgYikgewogICAgICAvKiByZXR1cm5zOgogICAgICAgLTE6IGEgPCBiCiAgICAgICAwOiBhID0gYgogICAgICAgMTogYSA+IGIKICAgICAgIGFuZCAqYW55KiBvdGhlciB2YWx1ZSBmb3IgYSAhPSBiIChlLmcuIHVuZGVmaW5lZCwgTmFOLCAtMiBldGMuKSAqLwogICAgICBpZiAoKGEuY29tcGFyZSkgJiYKICAgICAgICAgIC8vIGZvciAic3ltbWV0cmljIHJlc3VsdHMiIGZvcmNlIHRvQ1NTLWJhc2VkIGNvbXBhcmlzb24KICAgICAgICAgIC8vIG9mIFF1b3RlZCBvciBBbm9ueW1vdXMgaWYgZWl0aGVyIHZhbHVlIGlzIG9uZSBvZiB0aG9zZQogICAgICAgICAgIShiLnR5cGUgPT09ICdRdW90ZWQnIHx8IGIudHlwZSA9PT0gJ0Fub255bW91cycpKSB7CiAgICAgICAgICByZXR1cm4gYS5jb21wYXJlKGIpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGIuY29tcGFyZSkgewogICAgICAgICAgcmV0dXJuIC1iLmNvbXBhcmUoYSk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoYS50eXBlICE9PSBiLnR5cGUpIHsKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgYSA9IGEudmFsdWU7CiAgICAgIGIgPSBiLnZhbHVlOwogICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYSkpIHsKICAgICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IHVuZGVmaW5lZDsKICAgICAgfQogICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7CiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICB9CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKE5vZGUuY29tcGFyZShhW2ldLCBiW2ldKSAhPT0gMCkgewogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIDA7CiAgfTsKICBOb2RlLm51bWVyaWNDb21wYXJlID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgPCBiID8gLTEKICAgICAgOiBhID09PSBiID8gMAogICAgICAgICAgOiBhID4gYiA/IDEgOiB1bmRlZmluZWQ7IH07CgogIC8vCiAgLy8gUkdCIENvbG9ycyAtICNmZjAwMTQsICNlZWUKICAvLwogIHZhciBDb2xvciA9IGZ1bmN0aW9uIChyZ2IsIGEsIG9yaWdpbmFsRm9ybSkgewogICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIC8vCiAgICAgIC8vIFRoZSBlbmQgZ29hbCBoZXJlLCBpcyB0byBwYXJzZSB0aGUgYXJndW1lbnRzCiAgICAgIC8vIGludG8gYW4gaW50ZWdlciB0cmlwbGV0LCBzdWNoIGFzIGAxMjgsIDI1NSwgMGAKICAgICAgLy8KICAgICAgLy8gVGhpcyBmYWNpbGl0YXRlcyBvcGVyYXRpb25zIGFuZCBjb252ZXJzaW9ucy4KICAgICAgLy8KICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmdiKSkgewogICAgICAgICAgdGhpcy5yZ2IgPSByZ2I7CiAgICAgIH0KICAgICAgZWxzZSBpZiAocmdiLmxlbmd0aCA+PSA2KSB7CiAgICAgICAgICB0aGlzLnJnYiA9IFtdOwogICAgICAgICAgcmdiLm1hdGNoKC8uezJ9L2cpLm1hcChmdW5jdGlvbiAoYywgaSkgewogICAgICAgICAgICAgIGlmIChpIDwgMykgewogICAgICAgICAgICAgICAgICBzZWxmLnJnYi5wdXNoKHBhcnNlSW50KGMsIDE2KSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBzZWxmLmFscGhhID0gKHBhcnNlSW50KGMsIDE2KSkgLyAyNTU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICB0aGlzLnJnYiA9IFtdOwogICAgICAgICAgcmdiLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGMsIGkpIHsKICAgICAgICAgICAgICBpZiAoaSA8IDMpIHsKICAgICAgICAgICAgICAgICAgc2VsZi5yZ2IucHVzaChwYXJzZUludChjICsgYywgMTYpKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIHNlbGYuYWxwaGEgPSAocGFyc2VJbnQoYyArIGMsIDE2KSkgLyAyNTU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgdGhpcy5hbHBoYSA9IHRoaXMuYWxwaGEgfHwgKHR5cGVvZiBhID09PSAnbnVtYmVyJyA/IGEgOiAxKTsKICAgICAgaWYgKHR5cGVvZiBvcmlnaW5hbEZvcm0gIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICB0aGlzLnZhbHVlID0gb3JpZ2luYWxGb3JtOwogICAgICB9CiAgfTsKICBDb2xvci5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIENvbG9yLnByb3RvdHlwZS5sdW1hID0gZnVuY3Rpb24gKCkgewogICAgICB2YXIgciA9IHRoaXMucmdiWzBdIC8gMjU1OwogICAgICB2YXIgZyA9IHRoaXMucmdiWzFdIC8gMjU1OwogICAgICB2YXIgYiA9IHRoaXMucmdiWzJdIC8gMjU1OwogICAgICByID0gKHIgPD0gMC4wMzkyOCkgPyByIC8gMTIuOTIgOiBNYXRoLnBvdygoKHIgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7CiAgICAgIGcgPSAoZyA8PSAwLjAzOTI4KSA/IGcgLyAxMi45MiA6IE1hdGgucG93KCgoZyArIDAuMDU1KSAvIDEuMDU1KSwgMi40KTsKICAgICAgYiA9IChiIDw9IDAuMDM5MjgpID8gYiAvIDEyLjkyIDogTWF0aC5wb3coKChiICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpOwogICAgICByZXR1cm4gMC4yMTI2ICogciArIDAuNzE1MiAqIGcgKyAwLjA3MjIgKiBiOwogIH07CiAgQ29sb3IucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgICAgb3V0cHV0LmFkZCh0aGlzLnRvQ1NTKGNvbnRleHQpKTsKICB9OwogIENvbG9yLnByb3RvdHlwZS50b0NTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBkb05vdENvbXByZXNzKSB7CiAgICAgIHZhciBjb21wcmVzcyA9IGNvbnRleHQgJiYgY29udGV4dC5jb21wcmVzcyAmJiAhZG9Ob3RDb21wcmVzczsKICAgICAgdmFyIGNvbG9yOwogICAgICB2YXIgYWxwaGE7CiAgICAgIHZhciBjb2xvckZ1bmN0aW9uOwogICAgICB2YXIgYXJncyA9IFtdOwogICAgICAvLyBgdmFsdWVgIGlzIHNldCBpZiB0aGlzIGNvbG9yIHdhcyBvcmlnaW5hbGx5CiAgICAgIC8vIGNvbnZlcnRlZCBmcm9tIGEgbmFtZWQgY29sb3Igc3RyaW5nIHNvIHdlIG5lZWQKICAgICAgLy8gdG8gcmVzcGVjdCB0aGlzIGFuZCB0cnkgdG8gb3V0cHV0IG5hbWVkIGNvbG9yIHRvby4KICAgICAgYWxwaGEgPSB0aGlzLmZyb3VuZChjb250ZXh0LCB0aGlzLmFscGhhKTsKICAgICAgaWYgKHRoaXMudmFsdWUpIHsKICAgICAgICAgIGlmICh0aGlzLnZhbHVlLmluZGV4T2YoJ3JnYicpID09PSAwKSB7CiAgICAgICAgICAgICAgaWYgKGFscGhhIDwgMSkgewogICAgICAgICAgICAgICAgICBjb2xvckZ1bmN0aW9uID0gJ3JnYmEnOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHRoaXMudmFsdWUuaW5kZXhPZignaHNsJykgPT09IDApIHsKICAgICAgICAgICAgICBpZiAoYWxwaGEgPCAxKSB7CiAgICAgICAgICAgICAgICAgIGNvbG9yRnVuY3Rpb24gPSAnaHNsYSc7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBjb2xvckZ1bmN0aW9uID0gJ2hzbCc7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICBpZiAoYWxwaGEgPCAxKSB7CiAgICAgICAgICAgICAgY29sb3JGdW5jdGlvbiA9ICdyZ2JhJzsKICAgICAgICAgIH0KICAgICAgfQogICAgICBzd2l0Y2ggKGNvbG9yRnVuY3Rpb24pIHsKICAgICAgICAgIGNhc2UgJ3JnYmEnOgogICAgICAgICAgICAgIGFyZ3MgPSB0aGlzLnJnYi5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGNsYW1wKE1hdGgucm91bmQoYyksIDI1NSk7IH0pLmNvbmNhdChjbGFtcChhbHBoYSwgMSkpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnaHNsYSc6CiAgICAgICAgICAgICAgYXJncy5wdXNoKGNsYW1wKGFscGhhLCAxKSk7CiAgICAgICAgICBjYXNlICdoc2wnOgogICAgICAgICAgICAgIGNvbG9yID0gdGhpcy50b0hTTCgpOwogICAgICAgICAgICAgIGFyZ3MgPSBbCiAgICAgICAgICAgICAgICAgIHRoaXMuZnJvdW5kKGNvbnRleHQsIGNvbG9yLmgpLAogICAgICAgICAgICAgICAgICB0aGlzLmZyb3VuZChjb250ZXh0LCBjb2xvci5zICogMTAwKSArICIlIiwKICAgICAgICAgICAgICAgICAgdGhpcy5mcm91bmQoY29udGV4dCwgY29sb3IubCAqIDEwMCkgKyAiJSIKICAgICAgICAgICAgICBdLmNvbmNhdChhcmdzKTsKICAgICAgfQogICAgICBpZiAoY29sb3JGdW5jdGlvbikgewogICAgICAgICAgLy8gVmFsdWVzIGFyZSBjYXBwZWQgYmV0d2VlbiBgMGAgYW5kIGAyNTVgLCByb3VuZGVkIGFuZCB6ZXJvLXBhZGRlZC4KICAgICAgICAgIHJldHVybiBjb2xvckZ1bmN0aW9uICsgIigiICsgYXJncy5qb2luKCIsIiArIChjb21wcmVzcyA/ICcnIDogJyAnKSkgKyAiKSI7CiAgICAgIH0KICAgICAgY29sb3IgPSB0aGlzLnRvUkdCKCk7CiAgICAgIGlmIChjb21wcmVzcykgewogICAgICAgICAgdmFyIHNwbGl0Y29sb3IgPSBjb2xvci5zcGxpdCgnJyk7CiAgICAgICAgICAvLyBDb252ZXJ0IGNvbG9yIHRvIHNob3J0IGZvcm1hdAogICAgICAgICAgaWYgKHNwbGl0Y29sb3JbMV0gPT09IHNwbGl0Y29sb3JbMl0gJiYgc3BsaXRjb2xvclszXSA9PT0gc3BsaXRjb2xvcls0XSAmJiBzcGxpdGNvbG9yWzVdID09PSBzcGxpdGNvbG9yWzZdKSB7CiAgICAgICAgICAgICAgY29sb3IgPSAiIyIgKyBzcGxpdGNvbG9yWzFdICsgc3BsaXRjb2xvclszXSArIHNwbGl0Y29sb3JbNV07CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGNvbG9yOwogIH07CiAgLy8KICAvLyBPcGVyYXRpb25zIGhhdmUgdG8gYmUgZG9uZSBwZXItY2hhbm5lbCwgaWYgbm90LAogIC8vIGNoYW5uZWxzIHdpbGwgc3BpbGwgb250byBlYWNoIG90aGVyLiBPbmNlIHdlIGhhdmUKICAvLyBvdXIgcmVzdWx0LCBpbiB0aGUgZm9ybSBvZiBhbiBpbnRlZ2VyIHRyaXBsZXQsCiAgLy8gd2UgY3JlYXRlIGEgbmV3IENvbG9yIG5vZGUgdG8gaG9sZCB0aGUgcmVzdWx0LgogIC8vCiAgQ29sb3IucHJvdG90eXBlLm9wZXJhdGUgPSBmdW5jdGlvbiAoY29udGV4dCwgb3AsIG90aGVyKSB7CiAgICAgIHZhciByZ2IgPSBuZXcgQXJyYXkoMyk7CiAgICAgIHZhciBhbHBoYSA9IHRoaXMuYWxwaGEgKiAoMSAtIG90aGVyLmFscGhhKSArIG90aGVyLmFscGhhOwogICAgICBmb3IgKHZhciBjID0gMDsgYyA8IDM7IGMrKykgewogICAgICAgICAgcmdiW2NdID0gdGhpcy5fb3BlcmF0ZShjb250ZXh0LCBvcCwgdGhpcy5yZ2JbY10sIG90aGVyLnJnYltjXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5ldyBDb2xvcihyZ2IsIGFscGhhKTsKICB9OwogIENvbG9yLnByb3RvdHlwZS50b1JHQiA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIHRvSGV4KHRoaXMucmdiKTsKICB9OwogIENvbG9yLnByb3RvdHlwZS50b0hTTCA9IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHIgPSB0aGlzLnJnYlswXSAvIDI1NTsKICAgICAgdmFyIGcgPSB0aGlzLnJnYlsxXSAvIDI1NTsKICAgICAgdmFyIGIgPSB0aGlzLnJnYlsyXSAvIDI1NTsKICAgICAgdmFyIGEgPSB0aGlzLmFscGhhOwogICAgICB2YXIgbWF4ID0gTWF0aC5tYXgociwgZywgYik7CiAgICAgIHZhciBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTsKICAgICAgdmFyIGg7CiAgICAgIHZhciBzOwogICAgICB2YXIgbCA9IChtYXggKyBtaW4pIC8gMjsKICAgICAgdmFyIGQgPSBtYXggLSBtaW47CiAgICAgIGlmIChtYXggPT09IG1pbikgewogICAgICAgICAgaCA9IHMgPSAwOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pOwogICAgICAgICAgc3dpdGNoIChtYXgpIHsKICAgICAgICAgICAgICBjYXNlIHI6CiAgICAgICAgICAgICAgICAgIGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBnOgogICAgICAgICAgICAgICAgICBoID0gKGIgLSByKSAvIGQgKyAyOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIGI6CiAgICAgICAgICAgICAgICAgIGggPSAociAtIGcpIC8gZCArIDQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgaCAvPSA2OwogICAgICB9CiAgICAgIHJldHVybiB7IGg6IGggKiAzNjAsIHM6IHMsIGw6IGwsIGE6IGEgfTsKICB9OwogIC8vIEFkYXB0ZWQgZnJvbSBodHRwOi8vbWppamFja3Nvbi5jb20vMjAwOC8wMi9yZ2ItdG8taHNsLWFuZC1yZ2ItdG8taHN2LWNvbG9yLW1vZGVsLWNvbnZlcnNpb24tYWxnb3JpdGhtcy1pbi1qYXZhc2NyaXB0CiAgQ29sb3IucHJvdG90eXBlLnRvSFNWID0gZnVuY3Rpb24gKCkgewogICAgICB2YXIgciA9IHRoaXMucmdiWzBdIC8gMjU1OwogICAgICB2YXIgZyA9IHRoaXMucmdiWzFdIC8gMjU1OwogICAgICB2YXIgYiA9IHRoaXMucmdiWzJdIC8gMjU1OwogICAgICB2YXIgYSA9IHRoaXMuYWxwaGE7CiAgICAgIHZhciBtYXggPSBNYXRoLm1heChyLCBnLCBiKTsKICAgICAgdmFyIG1pbiA9IE1hdGgubWluKHIsIGcsIGIpOwogICAgICB2YXIgaDsKICAgICAgdmFyIHM7CiAgICAgIHZhciB2ID0gbWF4OwogICAgICB2YXIgZCA9IG1heCAtIG1pbjsKICAgICAgaWYgKG1heCA9PT0gMCkgewogICAgICAgICAgcyA9IDA7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICBzID0gZCAvIG1heDsKICAgICAgfQogICAgICBpZiAobWF4ID09PSBtaW4pIHsKICAgICAgICAgIGggPSAwOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgc3dpdGNoIChtYXgpIHsKICAgICAgICAgICAgICBjYXNlIHI6CiAgICAgICAgICAgICAgICAgIGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBnOgogICAgICAgICAgICAgICAgICBoID0gKGIgLSByKSAvIGQgKyAyOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIGI6CiAgICAgICAgICAgICAgICAgIGggPSAociAtIGcpIC8gZCArIDQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgaCAvPSA2OwogICAgICB9CiAgICAgIHJldHVybiB7IGg6IGggKiAzNjAsIHM6IHMsIHY6IHYsIGE6IGEgfTsKICB9OwogIENvbG9yLnByb3RvdHlwZS50b0FSR0IgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiB0b0hleChbdGhpcy5hbHBoYSAqIDI1NV0uY29uY2F0KHRoaXMucmdiKSk7CiAgfTsKICBDb2xvci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7CiAgICAgIHJldHVybiAoeC5yZ2IgJiYKICAgICAgICAgIHgucmdiWzBdID09PSB0aGlzLnJnYlswXSAmJgogICAgICAgICAgeC5yZ2JbMV0gPT09IHRoaXMucmdiWzFdICYmCiAgICAgICAgICB4LnJnYlsyXSA9PT0gdGhpcy5yZ2JbMl0gJiYKICAgICAgICAgIHguYWxwaGEgPT09IHRoaXMuYWxwaGEpID8gMCA6IHVuZGVmaW5lZDsKICB9OwogIENvbG9yLnByb3RvdHlwZS50eXBlID0gJ0NvbG9yJzsKICBmdW5jdGlvbiBjbGFtcCh2LCBtYXgpIHsKICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHYsIDApLCBtYXgpOwogIH0KICBmdW5jdGlvbiB0b0hleCh2KSB7CiAgICAgIHJldHVybiAiIyIgKyB2Lm1hcChmdW5jdGlvbiAoYykgewogICAgICAgICAgYyA9IGNsYW1wKE1hdGgucm91bmQoYyksIDI1NSk7CiAgICAgICAgICByZXR1cm4gKGMgPCAxNiA/ICcwJyA6ICcnKSArIGMudG9TdHJpbmcoMTYpOwogICAgICB9KS5qb2luKCcnKTsKICB9CiAgQ29sb3IuZnJvbUtleXdvcmQgPSBmdW5jdGlvbiAoa2V5d29yZCkgewogICAgICB2YXIgYzsKICAgICAgdmFyIGtleSA9IGtleXdvcmQudG9Mb3dlckNhc2UoKTsKICAgICAgaWYgKGNvbG9ycy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CiAgICAgICAgICBjID0gbmV3IENvbG9yKGNvbG9yc1trZXldLnNsaWNlKDEpKTsKICAgICAgfQogICAgICBlbHNlIGlmIChrZXkgPT09ICd0cmFuc3BhcmVudCcpIHsKICAgICAgICAgIGMgPSBuZXcgQ29sb3IoWzAsIDAsIDBdLCAwKTsKICAgICAgfQogICAgICBpZiAoYykgewogICAgICAgICAgYy52YWx1ZSA9IGtleXdvcmQ7CiAgICAgICAgICByZXR1cm4gYzsKICAgICAgfQogIH07CgogIHZhciBQYXJlbiA9IGZ1bmN0aW9uIChub2RlKSB7CiAgICAgIHRoaXMudmFsdWUgPSBub2RlOwogIH07CiAgUGFyZW4ucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBQYXJlbi5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICBvdXRwdXQuYWRkKCcoJyk7CiAgICAgIHRoaXMudmFsdWUuZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgIG91dHB1dC5hZGQoJyknKTsKICB9OwogIFBhcmVuLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgcmV0dXJuIG5ldyBQYXJlbih0aGlzLnZhbHVlLmV2YWwoY29udGV4dCkpOwogIH07CiAgUGFyZW4ucHJvdG90eXBlLnR5cGUgPSAnUGFyZW4nOwoKICB2YXIgX25vU3BhY2VDb21iaW5hdG9ycyA9IHsKICAgICAgJyc6IHRydWUsCiAgICAgICcgJzogdHJ1ZSwKICAgICAgJ3wnOiB0cnVlCiAgfTsKICB2YXIgQ29tYmluYXRvciA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICBpZiAodmFsdWUgPT09ICcgJykgewogICAgICAgICAgdGhpcy52YWx1ZSA9ICcgJzsKICAgICAgICAgIHRoaXMuZW1wdHlPcldoaXRlc3BhY2UgPSB0cnVlOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlID8gdmFsdWUudHJpbSgpIDogJyc7CiAgICAgICAgICB0aGlzLmVtcHR5T3JXaGl0ZXNwYWNlID0gdGhpcy52YWx1ZSA9PT0gJyc7CiAgICAgIH0KICB9OwogIENvbWJpbmF0b3IucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBDb21iaW5hdG9yLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIHZhciBzcGFjZU9yRW1wdHkgPSAoY29udGV4dC5jb21wcmVzcyB8fCBfbm9TcGFjZUNvbWJpbmF0b3JzW3RoaXMudmFsdWVdKSA/ICcnIDogJyAnOwogICAgICBvdXRwdXQuYWRkKHNwYWNlT3JFbXB0eSArIHRoaXMudmFsdWUgKyBzcGFjZU9yRW1wdHkpOwogIH07CiAgQ29tYmluYXRvci5wcm90b3R5cGUudHlwZSA9ICdDb21iaW5hdG9yJzsKCiAgdmFyIEVsZW1lbnQgPSBmdW5jdGlvbiAoY29tYmluYXRvciwgdmFsdWUsIGlzVmFyaWFibGUsIGluZGV4LCBjdXJyZW50RmlsZUluZm8sIHZpc2liaWxpdHlJbmZvKSB7CiAgICAgIHRoaXMuY29tYmluYXRvciA9IGNvbWJpbmF0b3IgaW5zdGFuY2VvZiBDb21iaW5hdG9yID8KICAgICAgICAgIGNvbWJpbmF0b3IgOiBuZXcgQ29tYmluYXRvcihjb21iaW5hdG9yKTsKICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS50cmltKCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodmFsdWUpIHsKICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHRoaXMudmFsdWUgPSAnJzsKICAgICAgfQogICAgICB0aGlzLmlzVmFyaWFibGUgPSBpc1ZhcmlhYmxlOwogICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwogICAgICB0aGlzLl9maWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKICAgICAgdGhpcy5jb3B5VmlzaWJpbGl0eUluZm8odmlzaWJpbGl0eUluZm8pOwogICAgICB0aGlzLnNldFBhcmVudCh0aGlzLmNvbWJpbmF0b3IsIHRoaXMpOwogIH07CiAgRWxlbWVudC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIEVsZW1lbnQucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7CiAgICAgIHRoaXMuY29tYmluYXRvciA9IHZpc2l0b3IudmlzaXQodGhpcy5jb21iaW5hdG9yKTsKICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHsKICAgICAgICAgIHRoaXMudmFsdWUgPSB2aXNpdG9yLnZpc2l0KHZhbHVlKTsKICAgICAgfQogIH07CiAgRWxlbWVudC5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHJldHVybiBuZXcgRWxlbWVudCh0aGlzLmNvbWJpbmF0b3IsIHRoaXMudmFsdWUuZXZhbCA/IHRoaXMudmFsdWUuZXZhbChjb250ZXh0KSA6IHRoaXMudmFsdWUsIHRoaXMuaXNWYXJpYWJsZSwgdGhpcy5nZXRJbmRleCgpLCB0aGlzLmZpbGVJbmZvKCksIHRoaXMudmlzaWJpbGl0eUluZm8oKSk7CiAgfTsKICBFbGVtZW50LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIG5ldyBFbGVtZW50KHRoaXMuY29tYmluYXRvciwgdGhpcy52YWx1ZSwgdGhpcy5pc1ZhcmlhYmxlLCB0aGlzLmdldEluZGV4KCksIHRoaXMuZmlsZUluZm8oKSwgdGhpcy52aXNpYmlsaXR5SW5mbygpKTsKICB9OwogIEVsZW1lbnQucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgICAgb3V0cHV0LmFkZCh0aGlzLnRvQ1NTKGNvbnRleHQpLCB0aGlzLmZpbGVJbmZvKCksIHRoaXMuZ2V0SW5kZXgoKSk7CiAgfTsKICBFbGVtZW50LnByb3RvdHlwZS50b0NTUyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHsgY29udGV4dCA9IHt9OyB9CiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7CiAgICAgIHZhciBmaXJzdFNlbGVjdG9yID0gY29udGV4dC5maXJzdFNlbGVjdG9yOwogICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBQYXJlbikgewogICAgICAgICAgLy8gc2VsZWN0b3IgaW4gcGFyZW5zIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgb3V0ZXIgc2VsZWN0b3IKICAgICAgICAgIC8vIGZsYWdzIChicmVha3Mgb25seSBpbnRlcnBvbGF0ZWQgc2VsZWN0b3JzIC0gc2VlICMxOTczKQogICAgICAgICAgY29udGV4dC5maXJzdFNlbGVjdG9yID0gdHJ1ZTsKICAgICAgfQogICAgICB2YWx1ZSA9IHZhbHVlLnRvQ1NTID8gdmFsdWUudG9DU1MoY29udGV4dCkgOiB2YWx1ZTsKICAgICAgY29udGV4dC5maXJzdFNlbGVjdG9yID0gZmlyc3RTZWxlY3RvcjsKICAgICAgaWYgKHZhbHVlID09PSAnJyAmJiB0aGlzLmNvbWJpbmF0b3IudmFsdWUuY2hhckF0KDApID09PSAnJicpIHsKICAgICAgICAgIHJldHVybiAnJzsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHJldHVybiB0aGlzLmNvbWJpbmF0b3IudG9DU1MoY29udGV4dCkgKyB2YWx1ZTsKICAgICAgfQogIH07CiAgRWxlbWVudC5wcm90b3R5cGUudHlwZSA9ICdFbGVtZW50JzsKCiAgdmFyIE1hdGgkMSA9IHsKICAgICAgQUxXQVlTOiAwLAogICAgICBQQVJFTlNfRElWSVNJT046IDEsCiAgICAgIFBBUkVOUzogMiwKICAgICAgU1RSSUNUX0xFR0FDWTogMwogIH07CiAgdmFyIFJld3JpdGVVcmxzID0gewogICAgICBPRkY6IDAsCiAgICAgIExPQ0FMOiAxLAogICAgICBBTEw6IDIKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBvYmplY3QgdHlwZSBvZiB0aGUgZ2l2ZW4gcGF5bG9hZAogICAqCiAgICogQHBhcmFtIHsqfSBwYXlsb2FkCiAgICogQHJldHVybnMge3N0cmluZ30KICAgKi8KICBmdW5jdGlvbiBnZXRUeXBlKHBheWxvYWQpIHsKICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwYXlsb2FkKS5zbGljZSg4LCAtMSk7CiAgfQogIC8qKgogICAqIFJldHVybnMgd2hldGhlciB0aGUgcGF5bG9hZCBpcyBhIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0IChleGNsdWRpbmcgc3BlY2lhbCBjbGFzc2VzIG9yIG9iamVjdHMgd2l0aCBvdGhlciBwcm90b3R5cGVzKQogICAqCiAgICogQHBhcmFtIHsqfSBwYXlsb2FkCiAgICogQHJldHVybnMge3BheWxvYWQgaXMgUmVjb3JkPHN0cmluZywgYW55Pn0KICAgKi8KICBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHBheWxvYWQpIHsKICAgICAgaWYgKGdldFR5cGUocGF5bG9hZCkgIT09ICdPYmplY3QnKQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gcGF5bG9hZC5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwYXlsb2FkKSA9PT0gT2JqZWN0LnByb3RvdHlwZTsKICB9CiAgLyoqCiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGFycmF5CiAgICoKICAgKiBAcGFyYW0ge2FueX0gcGF5bG9hZAogICAqIEByZXR1cm5zIHtwYXlsb2FkIGlzIGFueVtdfQogICAqLwogIGZ1bmN0aW9uIGlzQXJyYXkocGF5bG9hZCkgewogICAgICByZXR1cm4gZ2V0VHlwZShwYXlsb2FkKSA9PT0gJ0FycmF5JzsKICB9CgogIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UKICB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZQogIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogIFRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKICBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVECiAgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwKICBNRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULgoKICBTZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cyQxKCkgewogICAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspCiAgICAgICAgICBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7CiAgICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKykKICAgICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKQogICAgICAgICAgICAgIHJba10gPSBhW2pdOwogICAgICByZXR1cm4gcjsKICB9CiAgZnVuY3Rpb24gYXNzaWduUHJvcChjYXJyeSwga2V5LCBuZXdWYWwsIG9yaWdpbmFsT2JqZWN0LCBpbmNsdWRlTm9uZW51bWVyYWJsZSkgewogICAgICB2YXIgcHJvcFR5cGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9yaWdpbmFsT2JqZWN0LCBrZXkpCiAgICAgICAgICA/ICdlbnVtZXJhYmxlJwogICAgICAgICAgOiAnbm9uZW51bWVyYWJsZSc7CiAgICAgIGlmIChwcm9wVHlwZSA9PT0gJ2VudW1lcmFibGUnKQogICAgICAgICAgY2Fycnlba2V5XSA9IG5ld1ZhbDsKICAgICAgaWYgKGluY2x1ZGVOb25lbnVtZXJhYmxlICYmIHByb3BUeXBlID09PSAnbm9uZW51bWVyYWJsZScpIHsKICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYXJyeSwga2V5LCB7CiAgICAgICAgICAgICAgdmFsdWU6IG5ld1ZhbCwKICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCiAgICAgICAgICB9KTsKICAgICAgfQogIH0KICAvKioKICAgKiBDb3B5IChjbG9uZSkgYW4gb2JqZWN0IGFuZCBhbGwgaXRzIHByb3BzIHJlY3Vyc2l2ZWx5IHRvIGdldCByaWQgb2YgYW55IHByb3AgcmVmZXJlbmNlZCBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LiBBcnJheXMgYXJlIGFsc28gY2xvbmVkLCBob3dldmVyIG9iamVjdHMgaW5zaWRlIGFycmF5cyBhcmUgc3RpbGwgbGlua2VkLgogICAqCiAgICogQGV4cG9ydAogICAqIEB0ZW1wbGF0ZSBUCiAgICogQHBhcmFtIHtUfSB0YXJnZXQgVGFyZ2V0IGNhbiBiZSBhbnl0aGluZwogICAqIEBwYXJhbSB7T3B0aW9uc30gW29wdGlvbnM9e31dIE9wdGlvbnMgY2FuIGJlIGBwcm9wc2Agb3IgYG5vbmVudW1lcmFibGVgCiAgICogQHJldHVybnMge1R9IHRoZSB0YXJnZXQgd2l0aCByZXBsYWNlZCB2YWx1ZXMKICAgKiBAZXhwb3J0CiAgICovCiAgZnVuY3Rpb24gY29weSh0YXJnZXQsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIGlmIChpc0FycmF5KHRhcmdldCkpCiAgICAgICAgICByZXR1cm4gdGFyZ2V0Lm1hcChmdW5jdGlvbiAoaSkgeyByZXR1cm4gY29weShpLCBvcHRpb25zKTsgfSk7CiAgICAgIGlmICghaXNQbGFpbk9iamVjdCh0YXJnZXQpKQogICAgICAgICAgcmV0dXJuIHRhcmdldDsKICAgICAgdmFyIHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTsKICAgICAgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCk7CiAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5cyQxKHByb3BzLCBzeW1ib2xzKS5yZWR1Y2UoZnVuY3Rpb24gKGNhcnJ5LCBrZXkpIHsKICAgICAgICAgIGlmIChpc0FycmF5KG9wdGlvbnMucHJvcHMpICYmICFvcHRpb25zLnByb3BzLmluY2x1ZGVzKGtleSkpIHsKICAgICAgICAgICAgICByZXR1cm4gY2Fycnk7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgdmFsID0gdGFyZ2V0W2tleV07CiAgICAgICAgICB2YXIgbmV3VmFsID0gY29weSh2YWwsIG9wdGlvbnMpOwogICAgICAgICAgYXNzaWduUHJvcChjYXJyeSwga2V5LCBuZXdWYWwsIHRhcmdldCwgb3B0aW9ucy5ub25lbnVtZXJhYmxlKTsKICAgICAgICAgIHJldHVybiBjYXJyeTsKICAgICAgfSwge30pOwogIH0KCiAgLyoganNoaW50IHByb3RvOiB0cnVlICovCiAgZnVuY3Rpb24gZ2V0TG9jYXRpb24oaW5kZXgsIGlucHV0U3RyZWFtKSB7CiAgICAgIHZhciBuID0gaW5kZXggKyAxOwogICAgICB2YXIgbGluZSA9IG51bGw7CiAgICAgIHZhciBjb2x1bW4gPSAtMTsKICAgICAgd2hpbGUgKC0tbiA+PSAwICYmIGlucHV0U3RyZWFtLmNoYXJBdChuKSAhPT0gJ1xuJykgewogICAgICAgICAgY29sdW1uKys7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicpIHsKICAgICAgICAgIGxpbmUgPSAoaW5wdXRTdHJlYW0uc2xpY2UoMCwgaW5kZXgpLm1hdGNoKC9cbi9nKSB8fCAnJykubGVuZ3RoOwogICAgICB9CiAgICAgIHJldHVybiB7CiAgICAgICAgICBsaW5lOiBsaW5lLAogICAgICAgICAgY29sdW1uOiBjb2x1bW4KICAgICAgfTsKICB9CiAgZnVuY3Rpb24gY29weUFycmF5KGFycikgewogICAgICB2YXIgaTsKICAgICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGg7CiAgICAgIHZhciBjb3B5ID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgY29weVtpXSA9IGFycltpXTsKICAgICAgfQogICAgICByZXR1cm4gY29weTsKICB9CiAgZnVuY3Rpb24gY2xvbmUob2JqKSB7CiAgICAgIHZhciBjbG9uZWQgPSB7fTsKICAgICAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHsKICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHsKICAgICAgICAgICAgICBjbG9uZWRbcHJvcF0gPSBvYmpbcHJvcF07CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGNsb25lZDsKICB9CiAgZnVuY3Rpb24gZGVmYXVsdHMob2JqMSwgb2JqMikgewogICAgICB2YXIgbmV3T2JqID0gb2JqMiB8fCB7fTsKICAgICAgaWYgKCFvYmoyLl9kZWZhdWx0cykgewogICAgICAgICAgbmV3T2JqID0ge307CiAgICAgICAgICB2YXIgZGVmYXVsdHNfMSA9IGNvcHkob2JqMSk7CiAgICAgICAgICBuZXdPYmouX2RlZmF1bHRzID0gZGVmYXVsdHNfMTsKICAgICAgICAgIHZhciBjbG9uZWQgPSBvYmoyID8gY29weShvYmoyKSA6IHt9OwogICAgICAgICAgT2JqZWN0LmFzc2lnbihuZXdPYmosIGRlZmF1bHRzXzEsIGNsb25lZCk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5ld09iajsKICB9CiAgZnVuY3Rpb24gY29weU9wdGlvbnMob2JqMSwgb2JqMikgewogICAgICBpZiAob2JqMiAmJiBvYmoyLl9kZWZhdWx0cykgewogICAgICAgICAgcmV0dXJuIG9iajI7CiAgICAgIH0KICAgICAgdmFyIG9wdHMgPSBkZWZhdWx0cyhvYmoxLCBvYmoyKTsKICAgICAgaWYgKG9wdHMuc3RyaWN0TWF0aCkgewogICAgICAgICAgb3B0cy5tYXRoID0gTWF0aCQxLlNUUklDVF9MRUdBQ1k7CiAgICAgIH0KICAgICAgLy8gQmFjayBjb21wYXQgd2l0aCBjaGFuZ2VkIHJlbGF0aXZlVXJscyBvcHRpb24KICAgICAgaWYgKG9wdHMucmVsYXRpdmVVcmxzKSB7CiAgICAgICAgICBvcHRzLnJld3JpdGVVcmxzID0gUmV3cml0ZVVybHMuQUxMOwogICAgICB9CiAgICAgIGlmICh0eXBlb2Ygb3B0cy5tYXRoID09PSAnc3RyaW5nJykgewogICAgICAgICAgc3dpdGNoIChvcHRzLm1hdGgudG9Mb3dlckNhc2UoKSkgewogICAgICAgICAgICAgIGNhc2UgJ2Fsd2F5cyc6CiAgICAgICAgICAgICAgICAgIG9wdHMubWF0aCA9IE1hdGgkMS5BTFdBWVM7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgJ3BhcmVucy1kaXZpc2lvbic6CiAgICAgICAgICAgICAgICAgIG9wdHMubWF0aCA9IE1hdGgkMS5QQVJFTlNfRElWSVNJT047CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgJ3N0cmljdCc6CiAgICAgICAgICAgICAgY2FzZSAncGFyZW5zJzoKICAgICAgICAgICAgICAgICAgb3B0cy5tYXRoID0gTWF0aCQxLlBBUkVOUzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAnc3RyaWN0LWxlZ2FjeSc6CiAgICAgICAgICAgICAgICAgIG9wdHMubWF0aCA9IE1hdGgkMS5TVFJJQ1RfTEVHQUNZOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh0eXBlb2Ygb3B0cy5yZXdyaXRlVXJscyA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIHN3aXRjaCAob3B0cy5yZXdyaXRlVXJscy50b0xvd2VyQ2FzZSgpKSB7CiAgICAgICAgICAgICAgY2FzZSAnb2ZmJzoKICAgICAgICAgICAgICAgICAgb3B0cy5yZXdyaXRlVXJscyA9IFJld3JpdGVVcmxzLk9GRjsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAnbG9jYWwnOgogICAgICAgICAgICAgICAgICBvcHRzLnJld3JpdGVVcmxzID0gUmV3cml0ZVVybHMuTE9DQUw7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgJ2FsbCc6CiAgICAgICAgICAgICAgICAgIG9wdHMucmV3cml0ZVVybHMgPSBSZXdyaXRlVXJscy5BTEw7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBvcHRzOwogIH0KICBmdW5jdGlvbiBtZXJnZShvYmoxLCBvYmoyKSB7CiAgICAgIGZvciAodmFyIHByb3AgaW4gb2JqMikgewogICAgICAgICAgaWYgKG9iajIuaGFzT3duUHJvcGVydHkocHJvcCkpIHsKICAgICAgICAgICAgICBvYmoxW3Byb3BdID0gb2JqMltwcm9wXTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gb2JqMTsKICB9CiAgZnVuY3Rpb24gZmxhdHRlbkFycmF5KGFyciwgcmVzdWx0KSB7CiAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgeyByZXN1bHQgPSBbXTsgfQogICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBhcnIubGVuZ3RoOyBpIDwgbGVuZ3RoXzE7IGkrKykgewogICAgICAgICAgdmFyIHZhbHVlID0gYXJyW2ldOwogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7CiAgICAgICAgICAgICAgZmxhdHRlbkFycmF5KHZhbHVlLCByZXN1bHQpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogIH0KCiAgdmFyIHV0aWxzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoewogICAgX19wcm90b19fOiBudWxsLAogICAgZ2V0TG9jYXRpb246IGdldExvY2F0aW9uLAogICAgY29weUFycmF5OiBjb3B5QXJyYXksCiAgICBjbG9uZTogY2xvbmUsCiAgICBkZWZhdWx0czogZGVmYXVsdHMsCiAgICBjb3B5T3B0aW9uczogY29weU9wdGlvbnMsCiAgICBtZXJnZTogbWVyZ2UsCiAgICBmbGF0dGVuQXJyYXk6IGZsYXR0ZW5BcnJheQogIH0pOwoKICB2YXIgYW5vbnltb3VzRnVuYyA9IC8oPGFub255bW91cz58RnVuY3Rpb24pOihcZCspOihcZCspLzsKICAvKioKICAgKiBUaGlzIGlzIGEgY2VudHJhbGl6ZWQgY2xhc3Mgb2YgYW55IGVycm9yIHRoYXQgY291bGQgYmUgdGhyb3duIGludGVybmFsbHkgKG1vc3RseSBieSB0aGUgcGFyc2VyKS4KICAgKiBCZXNpZGVzIHN0YW5kYXJkIC5tZXNzYWdlIGl0IGtlZXBzIHNvbWUgYWRkaXRpb25hbCBkYXRhIGxpa2UgYSBwYXRoIHRvIHRoZSBmaWxlIHdoZXJlIHRoZSBlcnJvcgogICAqIG9jY3VycmVkIGFsb25nIHdpdGggbGluZSBhbmQgY29sdW1uIG51bWJlcnMuCiAgICoKICAgKiBAY2xhc3MKICAgKiBAZXh0ZW5kcyBFcnJvcgogICAqIEB0eXBlIHttb2R1bGUuTGVzc0Vycm9yfQogICAqCiAgICogQHByb3Age3N0cmluZ30gdHlwZQogICAqIEBwcm9wIHtzdHJpbmd9IGZpbGVuYW1lCiAgICogQHByb3Age251bWJlcn0gaW5kZXgKICAgKiBAcHJvcCB7bnVtYmVyfSBsaW5lCiAgICogQHByb3Age251bWJlcn0gY29sdW1uCiAgICogQHByb3Age251bWJlcn0gY2FsbExpbmUKICAgKiBAcHJvcCB7bnVtYmVyfSBjYWxsRXh0cmFjdAogICAqIEBwcm9wIHtzdHJpbmdbXX0gZXh0cmFjdAogICAqCiAgICogQHBhcmFtIHtPYmplY3R9IGUgICAgICAgICAgICAgIC0gQW4gZXJyb3Igb2JqZWN0IHRvIHdyYXAgYXJvdW5kIG9yIGp1c3QgYSBkZXNjcmlwdGl2ZSBvYmplY3QKICAgKiBAcGFyYW0ge09iamVjdH0gZmlsZUNvbnRlbnRNYXAgLSBBbiBvYmplY3Qgd2l0aCBmaWxlIGNvbnRlbnRzIGluICdjb250ZW50cycgcHJvcGVydHkgKGxpa2UgaW1wb3J0TWFuYWdlcikgQHRvZG8gLSBtb3ZlIHRvIGZpbGVNYW5hZ2VyPwogICAqIEBwYXJhbSB7c3RyaW5nfSBbY3VycmVudEZpbGVuYW1lXQogICAqLwogIHZhciBMZXNzRXJyb3IgPSBmdW5jdGlvbiBMZXNzRXJyb3IoZSwgZmlsZUNvbnRlbnRNYXAsIGN1cnJlbnRGaWxlbmFtZSkgewogICAgICBFcnJvci5jYWxsKHRoaXMpOwogICAgICB2YXIgZmlsZW5hbWUgPSBlLmZpbGVuYW1lIHx8IGN1cnJlbnRGaWxlbmFtZTsKICAgICAgdGhpcy5tZXNzYWdlID0gZS5tZXNzYWdlOwogICAgICB0aGlzLnN0YWNrID0gZS5zdGFjazsKICAgICAgaWYgKGZpbGVDb250ZW50TWFwICYmIGZpbGVuYW1lKSB7CiAgICAgICAgICB2YXIgaW5wdXQgPSBmaWxlQ29udGVudE1hcC5jb250ZW50c1tmaWxlbmFtZV07CiAgICAgICAgICB2YXIgbG9jID0gZ2V0TG9jYXRpb24oZS5pbmRleCwgaW5wdXQpOwogICAgICAgICAgdmFyIGxpbmUgPSBsb2MubGluZTsKICAgICAgICAgIHZhciBjb2wgPSBsb2MuY29sdW1uOwogICAgICAgICAgdmFyIGNhbGxMaW5lID0gZS5jYWxsICYmIGdldExvY2F0aW9uKGUuY2FsbCwgaW5wdXQpLmxpbmU7CiAgICAgICAgICB2YXIgbGluZXMgPSBpbnB1dCA/IGlucHV0LnNwbGl0KCdcbicpIDogJyc7CiAgICAgICAgICB0aGlzLnR5cGUgPSBlLnR5cGUgfHwgJ1N5bnRheCc7CiAgICAgICAgICB0aGlzLmZpbGVuYW1lID0gZmlsZW5hbWU7CiAgICAgICAgICB0aGlzLmluZGV4ID0gZS5pbmRleDsKICAgICAgICAgIHRoaXMubGluZSA9IHR5cGVvZiBsaW5lID09PSAnbnVtYmVyJyA/IGxpbmUgKyAxIDogbnVsbDsKICAgICAgICAgIHRoaXMuY29sdW1uID0gY29sOwogICAgICAgICAgaWYgKCF0aGlzLmxpbmUgJiYgdGhpcy5zdGFjaykgewogICAgICAgICAgICAgIHZhciBmb3VuZCA9IHRoaXMuc3RhY2subWF0Y2goYW5vbnltb3VzRnVuYyk7CiAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICogV2UgaGF2ZSB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGVudmlyb25tZW50IHN0cmluZ2lmaWVzIGFub255bW91cyBmdW5jdGlvbnMKICAgICAgICAgICAgICAgKiBzbyB3ZSBjYW4gY29ycmVjdGx5IG1hcCBwbHVnaW4gZXJyb3JzLgogICAgICAgICAgICAgICAqCiAgICAgICAgICAgICAgICogTm90ZSwgaW4gTm9kZSA4LCB0aGUgb3V0cHV0IG9mIGFub255bW91cyBmdW5jcyB2YXJpZWQgYmFzZWQgb24gcGFyYW1ldGVycwogICAgICAgICAgICAgICAqIGJlaW5nIHByZXNlbnQgb3Igbm90LCBzbyB3ZSBpbmplY3QgZHVtbXkgcGFyYW1zLgogICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgIHZhciBmdW5jID0gbmV3IEZ1bmN0aW9uKCdhJywgJ3Rocm93IG5ldyBFcnJvcigpJyk7CiAgICAgICAgICAgICAgdmFyIGxpbmVBZGp1c3QgPSAwOwogICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgIGZ1bmMoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gZS5zdGFjay5tYXRjaChhbm9ueW1vdXNGdW5jKTsKICAgICAgICAgICAgICAgICAgdmFyIGxpbmVfMSA9IHBhcnNlSW50KG1hdGNoWzJdKTsKICAgICAgICAgICAgICAgICAgbGluZUFkanVzdCA9IDEgLSBsaW5lXzE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgICBpZiAoZm91bmRbMl0pIHsKICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGluZSA9IHBhcnNlSW50KGZvdW5kWzJdKSArIGxpbmVBZGp1c3Q7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kWzNdKSB7CiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbiA9IHBhcnNlSW50KGZvdW5kWzNdKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHRoaXMuY2FsbExpbmUgPSBjYWxsTGluZSArIDE7CiAgICAgICAgICB0aGlzLmNhbGxFeHRyYWN0ID0gbGluZXNbY2FsbExpbmVdOwogICAgICAgICAgdGhpcy5leHRyYWN0ID0gWwogICAgICAgICAgICAgIGxpbmVzW3RoaXMubGluZSAtIDJdLAogICAgICAgICAgICAgIGxpbmVzW3RoaXMubGluZSAtIDFdLAogICAgICAgICAgICAgIGxpbmVzW3RoaXMubGluZV0KICAgICAgICAgIF07CiAgICAgIH0KICB9OwogIGlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoKSB7IH07CiAgICAgIEYucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlOwogICAgICBMZXNzRXJyb3IucHJvdG90eXBlID0gbmV3IEYoKTsKICB9CiAgZWxzZSB7CiAgICAgIExlc3NFcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CiAgfQogIExlc3NFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMZXNzRXJyb3I7CiAgLyoqCiAgICogQW4gb3ZlcnJpZGRlbiB2ZXJzaW9uIG9mIHRoZSBkZWZhdWx0IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcKICAgKiB3aGljaCB1c2VzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgaGVscGZ1bCBtZXNzYWdlLgogICAqCiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIExlc3NFcnJvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfQogICAgICB2YXIgbWVzc2FnZSA9ICcnOwogICAgICB2YXIgZXh0cmFjdCA9IHRoaXMuZXh0cmFjdCB8fCBbXTsKICAgICAgdmFyIGVycm9yID0gW107CiAgICAgIHZhciBzdHlsaXplID0gZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyOyB9OwogICAgICBpZiAob3B0aW9ucy5zdHlsaXplKSB7CiAgICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZiBvcHRpb25zLnN0eWxpemU7CiAgICAgICAgICBpZiAodHlwZSAhPT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgIHRocm93IEVycm9yKCJvcHRpb25zLnN0eWxpemUgc2hvdWxkIGJlIGEgZnVuY3Rpb24sIGdvdCBhICIgKyB0eXBlICsgIiEiKTsKICAgICAgICAgIH0KICAgICAgICAgIHN0eWxpemUgPSBvcHRpb25zLnN0eWxpemU7CiAgICAgIH0KICAgICAgaWYgKHRoaXMubGluZSAhPT0gbnVsbCkgewogICAgICAgICAgaWYgKHR5cGVvZiBleHRyYWN0WzBdID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgIGVycm9yLnB1c2goc3R5bGl6ZSh0aGlzLmxpbmUgLSAxICsgIiAiICsgZXh0cmFjdFswXSwgJ2dyZXknKSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhY3RbMV0gPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgdmFyIGVycm9yVHh0ID0gdGhpcy5saW5lICsgIiAiOwogICAgICAgICAgICAgIGlmIChleHRyYWN0WzFdKSB7CiAgICAgICAgICAgICAgICAgIGVycm9yVHh0ICs9IGV4dHJhY3RbMV0uc2xpY2UoMCwgdGhpcy5jb2x1bW4pICsKICAgICAgICAgICAgICAgICAgICAgIHN0eWxpemUoc3R5bGl6ZShzdHlsaXplKGV4dHJhY3RbMV0uc3Vic3RyKHRoaXMuY29sdW1uLCAxKSwgJ2JvbGQnKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdFsxXS5zbGljZSh0aGlzLmNvbHVtbiArIDEpLCAncmVkJyksICdpbnZlcnNlJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVycm9yLnB1c2goZXJyb3JUeHQpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHR5cGVvZiBleHRyYWN0WzJdID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgIGVycm9yLnB1c2goc3R5bGl6ZSh0aGlzLmxpbmUgKyAxICsgIiAiICsgZXh0cmFjdFsyXSwgJ2dyZXknKSk7CiAgICAgICAgICB9CiAgICAgICAgICBlcnJvciA9IGVycm9yLmpvaW4oJ1xuJykgKyBzdHlsaXplKCcnLCAncmVzZXQnKSArICJcbiI7CiAgICAgIH0KICAgICAgbWVzc2FnZSArPSBzdHlsaXplKHRoaXMudHlwZSArICJFcnJvcjogIiArIHRoaXMubWVzc2FnZSwgJ3JlZCcpOwogICAgICBpZiAodGhpcy5maWxlbmFtZSkgewogICAgICAgICAgbWVzc2FnZSArPSBzdHlsaXplKCcgaW4gJywgJ3JlZCcpICsgdGhpcy5maWxlbmFtZTsKICAgICAgfQogICAgICBpZiAodGhpcy5saW5lKSB7CiAgICAgICAgICBtZXNzYWdlICs9IHN0eWxpemUoIiBvbiBsaW5lICIgKyB0aGlzLmxpbmUgKyAiLCBjb2x1bW4gIiArICh0aGlzLmNvbHVtbiArIDEpICsgIjoiLCAnZ3JleScpOwogICAgICB9CiAgICAgIG1lc3NhZ2UgKz0gIlxuIiArIGVycm9yOwogICAgICBpZiAodGhpcy5jYWxsTGluZSkgewogICAgICAgICAgbWVzc2FnZSArPSBzdHlsaXplKCdmcm9tICcsICdyZWQnKSArICh0aGlzLmZpbGVuYW1lIHx8ICcnKSArICIvbiI7CiAgICAgICAgICBtZXNzYWdlICs9IHN0eWxpemUodGhpcy5jYWxsTGluZSwgJ2dyZXknKSArICIgIiArIHRoaXMuY2FsbEV4dHJhY3QgKyAiL24iOwogICAgICB9CiAgICAgIHJldHVybiBtZXNzYWdlOwogIH07CgogIHZhciBTZWxlY3RvciA9IGZ1bmN0aW9uIChlbGVtZW50cywgZXh0ZW5kTGlzdCwgY29uZGl0aW9uLCBpbmRleCwgY3VycmVudEZpbGVJbmZvLCB2aXNpYmlsaXR5SW5mbykgewogICAgICB0aGlzLmV4dGVuZExpc3QgPSBleHRlbmRMaXN0OwogICAgICB0aGlzLmNvbmRpdGlvbiA9IGNvbmRpdGlvbjsKICAgICAgdGhpcy5ldmFsZENvbmRpdGlvbiA9ICFjb25kaXRpb247CiAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CiAgICAgIHRoaXMuX2ZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogICAgICB0aGlzLmVsZW1lbnRzID0gdGhpcy5nZXRFbGVtZW50cyhlbGVtZW50cyk7CiAgICAgIHRoaXMubWl4aW5FbGVtZW50c18gPSB1bmRlZmluZWQ7CiAgICAgIHRoaXMuY29weVZpc2liaWxpdHlJbmZvKHZpc2liaWxpdHlJbmZvKTsKICAgICAgdGhpcy5zZXRQYXJlbnQodGhpcy5lbGVtZW50cywgdGhpcyk7CiAgfTsKICBTZWxlY3Rvci5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIFNlbGVjdG9yLnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgICBpZiAodGhpcy5lbGVtZW50cykgewogICAgICAgICAgdGhpcy5lbGVtZW50cyA9IHZpc2l0b3IudmlzaXRBcnJheSh0aGlzLmVsZW1lbnRzKTsKICAgICAgfQogICAgICBpZiAodGhpcy5leHRlbmRMaXN0KSB7CiAgICAgICAgICB0aGlzLmV4dGVuZExpc3QgPSB2aXNpdG9yLnZpc2l0QXJyYXkodGhpcy5leHRlbmRMaXN0KTsKICAgICAgfQogICAgICBpZiAodGhpcy5jb25kaXRpb24pIHsKICAgICAgICAgIHRoaXMuY29uZGl0aW9uID0gdmlzaXRvci52aXNpdCh0aGlzLmNvbmRpdGlvbik7CiAgICAgIH0KICB9OwogIFNlbGVjdG9yLnByb3RvdHlwZS5jcmVhdGVEZXJpdmVkID0gZnVuY3Rpb24gKGVsZW1lbnRzLCBleHRlbmRMaXN0LCBldmFsZENvbmRpdGlvbikgewogICAgICBlbGVtZW50cyA9IHRoaXMuZ2V0RWxlbWVudHMoZWxlbWVudHMpOwogICAgICB2YXIgbmV3U2VsZWN0b3IgPSBuZXcgU2VsZWN0b3IoZWxlbWVudHMsIGV4dGVuZExpc3QgfHwgdGhpcy5leHRlbmRMaXN0LCBudWxsLCB0aGlzLmdldEluZGV4KCksIHRoaXMuZmlsZUluZm8oKSwgdGhpcy52aXNpYmlsaXR5SW5mbygpKTsKICAgICAgbmV3U2VsZWN0b3IuZXZhbGRDb25kaXRpb24gPSAoZXZhbGRDb25kaXRpb24gIT0gbnVsbCkgPyBldmFsZENvbmRpdGlvbiA6IHRoaXMuZXZhbGRDb25kaXRpb247CiAgICAgIG5ld1NlbGVjdG9yLm1lZGlhRW1wdHkgPSB0aGlzLm1lZGlhRW1wdHk7CiAgICAgIHJldHVybiBuZXdTZWxlY3RvcjsKICB9OwogIFNlbGVjdG9yLnByb3RvdHlwZS5nZXRFbGVtZW50cyA9IGZ1bmN0aW9uIChlbHMpIHsKICAgICAgaWYgKCFlbHMpIHsKICAgICAgICAgIHJldHVybiBbbmV3IEVsZW1lbnQoJycsICcmJywgZmFsc2UsIHRoaXMuX2luZGV4LCB0aGlzLl9maWxlSW5mbyldOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgZWxzID09PSAnc3RyaW5nJykgewogICAgICAgICAgdGhpcy5wYXJzZS5wYXJzZU5vZGUoZWxzLCBbJ3NlbGVjdG9yJ10sIHRoaXMuX2luZGV4LCB0aGlzLl9maWxlSW5mbywgZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7CiAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTGVzc0Vycm9yKHsKICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBlcnIuaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZQogICAgICAgICAgICAgICAgICB9LCB0aGlzLnBhcnNlLmltcG9ydHMsIHRoaXMuX2ZpbGVJbmZvLmZpbGVuYW1lKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzID0gcmVzdWx0WzBdLmVsZW1lbnRzOwogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGVsczsKICB9OwogIFNlbGVjdG9yLnByb3RvdHlwZS5jcmVhdGVFbXB0eVNlbGVjdG9ycyA9IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIGVsID0gbmV3IEVsZW1lbnQoJycsICcmJywgZmFsc2UsIHRoaXMuX2luZGV4LCB0aGlzLl9maWxlSW5mbyk7CiAgICAgIHZhciBzZWxzID0gW25ldyBTZWxlY3RvcihbZWxdLCBudWxsLCBudWxsLCB0aGlzLl9pbmRleCwgdGhpcy5fZmlsZUluZm8pXTsKICAgICAgc2Vsc1swXS5tZWRpYUVtcHR5ID0gdHJ1ZTsKICAgICAgcmV0dXJuIHNlbHM7CiAgfTsKICBTZWxlY3Rvci5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbiAob3RoZXIpIHsKICAgICAgdmFyIGVsZW1lbnRzID0gdGhpcy5lbGVtZW50czsKICAgICAgdmFyIGxlbiA9IGVsZW1lbnRzLmxlbmd0aDsKICAgICAgdmFyIG9sZW47CiAgICAgIHZhciBpOwogICAgICBvdGhlciA9IG90aGVyLm1peGluRWxlbWVudHMoKTsKICAgICAgb2xlbiA9IG90aGVyLmxlbmd0aDsKICAgICAgaWYgKG9sZW4gPT09IDAgfHwgbGVuIDwgb2xlbikgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xlbjsgaSsrKSB7CiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnZhbHVlICE9PSBvdGhlcltpXSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG9sZW47IC8vIHJldHVybiBudW1iZXIgb2YgbWF0Y2hlZCBlbGVtZW50cwogIH07CiAgU2VsZWN0b3IucHJvdG90eXBlLm1peGluRWxlbWVudHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLm1peGluRWxlbWVudHNfKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5taXhpbkVsZW1lbnRzXzsKICAgICAgfQogICAgICB2YXIgZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdi5jb21iaW5hdG9yLnZhbHVlICsgKHYudmFsdWUudmFsdWUgfHwgdi52YWx1ZSk7IH0pLmpvaW4oJycpLm1hdGNoKC9bLCYjXCpcLlx3LV0oW1x3LV18KFxcLikpKi9nKTsKICAgICAgaWYgKGVsZW1lbnRzKSB7CiAgICAgICAgICBpZiAoZWxlbWVudHNbMF0gPT09ICcmJykgewogICAgICAgICAgICAgIGVsZW1lbnRzLnNoaWZ0KCk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICBlbGVtZW50cyA9IFtdOwogICAgICB9CiAgICAgIHJldHVybiAodGhpcy5taXhpbkVsZW1lbnRzXyA9IGVsZW1lbnRzKTsKICB9OwogIFNlbGVjdG9yLnByb3RvdHlwZS5pc0p1c3RQYXJlbnRTZWxlY3RvciA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuICF0aGlzLm1lZGlhRW1wdHkgJiYKICAgICAgICAgIHRoaXMuZWxlbWVudHMubGVuZ3RoID09PSAxICYmCiAgICAgICAgICB0aGlzLmVsZW1lbnRzWzBdLnZhbHVlID09PSAnJicgJiYKICAgICAgICAgICh0aGlzLmVsZW1lbnRzWzBdLmNvbWJpbmF0b3IudmFsdWUgPT09ICcgJyB8fCB0aGlzLmVsZW1lbnRzWzBdLmNvbWJpbmF0b3IudmFsdWUgPT09ICcnKTsKICB9OwogIFNlbGVjdG9yLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIGV2YWxkQ29uZGl0aW9uID0gdGhpcy5jb25kaXRpb24gJiYgdGhpcy5jb25kaXRpb24uZXZhbChjb250ZXh0KTsKICAgICAgdmFyIGVsZW1lbnRzID0gdGhpcy5lbGVtZW50czsKICAgICAgdmFyIGV4dGVuZExpc3QgPSB0aGlzLmV4dGVuZExpc3Q7CiAgICAgIGVsZW1lbnRzID0gZWxlbWVudHMgJiYgZWxlbWVudHMubWFwKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLmV2YWwoY29udGV4dCk7IH0pOwogICAgICBleHRlbmRMaXN0ID0gZXh0ZW5kTGlzdCAmJiBleHRlbmRMaXN0Lm1hcChmdW5jdGlvbiAoZXh0ZW5kKSB7IHJldHVybiBleHRlbmQuZXZhbChjb250ZXh0KTsgfSk7CiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURlcml2ZWQoZWxlbWVudHMsIGV4dGVuZExpc3QsIGV2YWxkQ29uZGl0aW9uKTsKICB9OwogIFNlbGVjdG9yLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIHZhciBpOwogICAgICB2YXIgZWxlbWVudDsKICAgICAgaWYgKCghY29udGV4dCB8fCAhY29udGV4dC5maXJzdFNlbGVjdG9yKSAmJiB0aGlzLmVsZW1lbnRzWzBdLmNvbWJpbmF0b3IudmFsdWUgPT09ICcnKSB7CiAgICAgICAgICBvdXRwdXQuYWRkKCcgJywgdGhpcy5maWxlSW5mbygpLCB0aGlzLmdldEluZGV4KCkpOwogICAgICB9CiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBlbGVtZW50ID0gdGhpcy5lbGVtZW50c1tpXTsKICAgICAgICAgIGVsZW1lbnQuZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgIH0KICB9OwogIFNlbGVjdG9yLnByb3RvdHlwZS5nZXRJc091dHB1dCA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIHRoaXMuZXZhbGRDb25kaXRpb247CiAgfTsKICBTZWxlY3Rvci5wcm90b3R5cGUudHlwZSA9ICdTZWxlY3Rvcic7CgogIHZhciBWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIHJlcXVpcmVzIGFuIGFycmF5IGFyZ3VtZW50Jyk7CiAgICAgIH0KICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgewogICAgICAgICAgdGhpcy52YWx1ZSA9IFt2YWx1ZV07CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CiAgICAgIH0KICB9OwogIFZhbHVlLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgVmFsdWUucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIGlmICh0aGlzLnZhbHVlKSB7CiAgICAgICAgICB0aGlzLnZhbHVlID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMudmFsdWUpOwogICAgICB9CiAgfTsKICBWYWx1ZS5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVbMF0uZXZhbChjb250ZXh0KTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHJldHVybiBuZXcgVmFsdWUodGhpcy52YWx1ZS5tYXAoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYuZXZhbChjb250ZXh0KTsgfSkpOwogICAgICB9CiAgfTsKICBWYWx1ZS5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICB2YXIgaTsKICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHRoaXMudmFsdWVbaV0uZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgICAgICBpZiAoaSArIDEgPCB0aGlzLnZhbHVlLmxlbmd0aCkgewogICAgICAgICAgICAgIG91dHB1dC5hZGQoKGNvbnRleHQgJiYgY29udGV4dC5jb21wcmVzcykgPyAnLCcgOiAnLCAnKTsKICAgICAgICAgIH0KICAgICAgfQogIH07CiAgVmFsdWUucHJvdG90eXBlLnR5cGUgPSAnVmFsdWUnOwoKICB2YXIgS2V5d29yZCA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CiAgfTsKICBLZXl3b3JkLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgS2V5d29yZC5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICBpZiAodGhpcy52YWx1ZSA9PT0gJyUnKSB7CiAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdTeW50YXgnLCBtZXNzYWdlOiAnSW52YWxpZCAlIHdpdGhvdXQgbnVtYmVyJyB9OwogICAgICB9CiAgICAgIG91dHB1dC5hZGQodGhpcy52YWx1ZSk7CiAgfTsKICBLZXl3b3JkLnByb3RvdHlwZS50eXBlID0gJ0tleXdvcmQnOwogIEtleXdvcmQuVHJ1ZSA9IG5ldyBLZXl3b3JkKCd0cnVlJyk7CiAgS2V5d29yZC5GYWxzZSA9IG5ldyBLZXl3b3JkKCdmYWxzZScpOwoKICB2YXIgQW5vbnltb3VzID0gZnVuY3Rpb24gKHZhbHVlLCBpbmRleCwgY3VycmVudEZpbGVJbmZvLCBtYXBMaW5lcywgcnVsZXNldExpa2UsIHZpc2liaWxpdHlJbmZvKSB7CiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKICAgICAgdGhpcy5fZmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm87CiAgICAgIHRoaXMubWFwTGluZXMgPSBtYXBMaW5lczsKICAgICAgdGhpcy5ydWxlc2V0TGlrZSA9ICh0eXBlb2YgcnVsZXNldExpa2UgPT09ICd1bmRlZmluZWQnKSA/IGZhbHNlIDogcnVsZXNldExpa2U7CiAgICAgIHRoaXMuYWxsb3dSb290ID0gdHJ1ZTsKICAgICAgdGhpcy5jb3B5VmlzaWJpbGl0eUluZm8odmlzaWJpbGl0eUluZm8pOwogIH07CiAgQW5vbnltb3VzLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgQW5vbnltb3VzLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gbmV3IEFub255bW91cyh0aGlzLnZhbHVlLCB0aGlzLl9pbmRleCwgdGhpcy5fZmlsZUluZm8sIHRoaXMubWFwTGluZXMsIHRoaXMucnVsZXNldExpa2UsIHRoaXMudmlzaWJpbGl0eUluZm8oKSk7CiAgfTsKICBBbm9ueW1vdXMucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAob3RoZXIpIHsKICAgICAgcmV0dXJuIG90aGVyLnRvQ1NTICYmIHRoaXMudG9DU1MoKSA9PT0gb3RoZXIudG9DU1MoKSA/IDAgOiB1bmRlZmluZWQ7CiAgfTsKICBBbm9ueW1vdXMucHJvdG90eXBlLmlzUnVsZXNldExpa2UgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiB0aGlzLnJ1bGVzZXRMaWtlOwogIH07CiAgQW5vbnltb3VzLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIHRoaXMubm9kZVZpc2libGUgPSBCb29sZWFuKHRoaXMudmFsdWUpOwogICAgICBpZiAodGhpcy5ub2RlVmlzaWJsZSkgewogICAgICAgICAgb3V0cHV0LmFkZCh0aGlzLnZhbHVlLCB0aGlzLl9maWxlSW5mbywgdGhpcy5faW5kZXgsIHRoaXMubWFwTGluZXMpOwogICAgICB9CiAgfTsKICBBbm9ueW1vdXMucHJvdG90eXBlLnR5cGUgPSAnQW5vbnltb3VzJzsKCiAgdmFyIE1BVEggPSBNYXRoJDE7CiAgdmFyIERlY2xhcmF0aW9uID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIG1lcmdlLCBpbmRleCwgY3VycmVudEZpbGVJbmZvLCBpbmxpbmUsIHZhcmlhYmxlKSB7CiAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgIHRoaXMudmFsdWUgPSAodmFsdWUgaW5zdGFuY2VvZiBOb2RlKSA/IHZhbHVlIDogbmV3IFZhbHVlKFt2YWx1ZSA/IG5ldyBBbm9ueW1vdXModmFsdWUpIDogbnVsbF0pOwogICAgICB0aGlzLmltcG9ydGFudCA9IGltcG9ydGFudCA/ICIgIiArIGltcG9ydGFudC50cmltKCkgOiAnJzsKICAgICAgdGhpcy5tZXJnZSA9IG1lcmdlOwogICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwogICAgICB0aGlzLl9maWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKICAgICAgdGhpcy5pbmxpbmUgPSBpbmxpbmUgfHwgZmFsc2U7CiAgICAgIHRoaXMudmFyaWFibGUgPSAodmFyaWFibGUgIT09IHVuZGVmaW5lZCkgPyB2YXJpYWJsZQogICAgICAgICAgOiAobmFtZS5jaGFyQXQgJiYgKG5hbWUuY2hhckF0KDApID09PSAnQCcpKTsKICAgICAgdGhpcy5hbGxvd1Jvb3QgPSB0cnVlOwogICAgICB0aGlzLnNldFBhcmVudCh0aGlzLnZhbHVlLCB0aGlzKTsKICB9OwogIERlY2xhcmF0aW9uLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgRGVjbGFyYXRpb24ucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgICAgb3V0cHV0LmFkZCh0aGlzLm5hbWUgKyAoY29udGV4dC5jb21wcmVzcyA/ICc6JyA6ICc6ICcpLCB0aGlzLmZpbGVJbmZvKCksIHRoaXMuZ2V0SW5kZXgoKSk7CiAgICAgIHRyeSB7CiAgICAgICAgICB0aGlzLnZhbHVlLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICB9CiAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICBlLmluZGV4ID0gdGhpcy5faW5kZXg7CiAgICAgICAgICBlLmZpbGVuYW1lID0gdGhpcy5fZmlsZUluZm8uZmlsZW5hbWU7CiAgICAgICAgICB0aHJvdyBlOwogICAgICB9CiAgICAgIG91dHB1dC5hZGQodGhpcy5pbXBvcnRhbnQgKyAoKHRoaXMuaW5saW5lIHx8IChjb250ZXh0Lmxhc3RSdWxlICYmIGNvbnRleHQuY29tcHJlc3MpKSA/ICcnIDogJzsnKSwgdGhpcy5fZmlsZUluZm8sIHRoaXMuX2luZGV4KTsKICB9OwogIERlY2xhcmF0aW9uLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIG1hdGhCeXBhc3MgPSBmYWxzZTsKICAgICAgdmFyIHByZXZNYXRoOwogICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICAgdmFyIGV2YWxkVmFsdWU7CiAgICAgIHZhciB2YXJpYWJsZSA9IHRoaXMudmFyaWFibGU7CiAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgIC8vIGV4cGFuZCAncHJpbWl0aXZlJyBuYW1lIGRpcmVjdGx5IHRvIGdldAogICAgICAgICAgLy8gdGhpbmdzIGZhc3RlciAofjEwJSBmb3IgYmVuY2htYXJrLmxlc3MpOgogICAgICAgICAgbmFtZSA9IChuYW1lLmxlbmd0aCA9PT0gMSkgJiYgKG5hbWVbMF0gaW5zdGFuY2VvZiBLZXl3b3JkKSA/CiAgICAgICAgICAgICAgbmFtZVswXS52YWx1ZSA6IGV2YWxOYW1lKGNvbnRleHQsIG5hbWUpOwogICAgICAgICAgdmFyaWFibGUgPSBmYWxzZTsgLy8gbmV2ZXIgdHJlYXQgZXhwYW5kZWQgaW50ZXJwb2xhdGlvbiBhcyBuZXcgdmFyaWFibGUgbmFtZQogICAgICB9CiAgICAgIC8vIEB0b2RvIHJlbW92ZSB3aGVuIHBhcmVucy1kaXZpc2lvbiBpcyBkZWZhdWx0CiAgICAgIGlmIChuYW1lID09PSAnZm9udCcgJiYgY29udGV4dC5tYXRoID09PSBNQVRILkFMV0FZUykgewogICAgICAgICAgbWF0aEJ5cGFzcyA9IHRydWU7CiAgICAgICAgICBwcmV2TWF0aCA9IGNvbnRleHQubWF0aDsKICAgICAgICAgIGNvbnRleHQubWF0aCA9IE1BVEguUEFSRU5TX0RJVklTSU9OOwogICAgICB9CiAgICAgIHRyeSB7CiAgICAgICAgICBjb250ZXh0LmltcG9ydGFudFNjb3BlLnB1c2goe30pOwogICAgICAgICAgZXZhbGRWYWx1ZSA9IHRoaXMudmFsdWUuZXZhbChjb250ZXh0KTsKICAgICAgICAgIGlmICghdGhpcy52YXJpYWJsZSAmJiBldmFsZFZhbHVlLnR5cGUgPT09ICdEZXRhY2hlZFJ1bGVzZXQnKSB7CiAgICAgICAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiAnUnVsZXNldHMgY2Fubm90IGJlIGV2YWx1YXRlZCBvbiBhIHByb3BlcnR5LicsCiAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmdldEluZGV4KCksIGZpbGVuYW1lOiB0aGlzLmZpbGVJbmZvKCkuZmlsZW5hbWUgfTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBpbXBvcnRhbnQgPSB0aGlzLmltcG9ydGFudDsKICAgICAgICAgIHZhciBpbXBvcnRhbnRSZXN1bHQgPSBjb250ZXh0LmltcG9ydGFudFNjb3BlLnBvcCgpOwogICAgICAgICAgaWYgKCFpbXBvcnRhbnQgJiYgaW1wb3J0YW50UmVzdWx0LmltcG9ydGFudCkgewogICAgICAgICAgICAgIGltcG9ydGFudCA9IGltcG9ydGFudFJlc3VsdC5pbXBvcnRhbnQ7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3IERlY2xhcmF0aW9uKG5hbWUsIGV2YWxkVmFsdWUsIGltcG9ydGFudCwgdGhpcy5tZXJnZSwgdGhpcy5nZXRJbmRleCgpLCB0aGlzLmZpbGVJbmZvKCksIHRoaXMuaW5saW5lLCB2YXJpYWJsZSk7CiAgICAgIH0KICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgIGlmICh0eXBlb2YgZS5pbmRleCAhPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgICBlLmluZGV4ID0gdGhpcy5nZXRJbmRleCgpOwogICAgICAgICAgICAgIGUuZmlsZW5hbWUgPSB0aGlzLmZpbGVJbmZvKCkuZmlsZW5hbWU7CiAgICAgICAgICB9CiAgICAgICAgICB0aHJvdyBlOwogICAgICB9CiAgICAgIGZpbmFsbHkgewogICAgICAgICAgaWYgKG1hdGhCeXBhc3MpIHsKICAgICAgICAgICAgICBjb250ZXh0Lm1hdGggPSBwcmV2TWF0aDsKICAgICAgICAgIH0KICAgICAgfQogIH07CiAgRGVjbGFyYXRpb24ucHJvdG90eXBlLm1ha2VJbXBvcnRhbnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiBuZXcgRGVjbGFyYXRpb24odGhpcy5uYW1lLCB0aGlzLnZhbHVlLCAnIWltcG9ydGFudCcsIHRoaXMubWVyZ2UsIHRoaXMuZ2V0SW5kZXgoKSwgdGhpcy5maWxlSW5mbygpLCB0aGlzLmlubGluZSk7CiAgfTsKICBmdW5jdGlvbiBldmFsTmFtZShjb250ZXh0LCBuYW1lKSB7CiAgICAgIHZhciB2YWx1ZSA9ICcnOwogICAgICB2YXIgaTsKICAgICAgdmFyIG4gPSBuYW1lLmxlbmd0aDsKICAgICAgdmFyIG91dHB1dCA9IHsgYWRkOiBmdW5jdGlvbiAocykgeyB2YWx1ZSArPSBzOyB9IH07CiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgIG5hbWVbaV0uZXZhbChjb250ZXh0KS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgfQogICAgICByZXR1cm4gdmFsdWU7CiAgfQogIERlY2xhcmF0aW9uLnByb3RvdHlwZS50eXBlID0gJ0RlY2xhcmF0aW9uJzsKCiAgdmFyIGRlYnVnSW5mbyA9IGZ1bmN0aW9uIChjb250ZXh0LCBjdHgsIGxpbmVTZXBhcmF0b3IpIHsKICAgICAgdmFyIHJlc3VsdCA9ICcnOwogICAgICBpZiAoY29udGV4dC5kdW1wTGluZU51bWJlcnMgJiYgIWNvbnRleHQuY29tcHJlc3MpIHsKICAgICAgICAgIHN3aXRjaCAoY29udGV4dC5kdW1wTGluZU51bWJlcnMpIHsKICAgICAgICAgICAgICBjYXNlICdjb21tZW50cyc6CiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlYnVnSW5mby5hc0NvbW1lbnQoY3R4KTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAnbWVkaWFxdWVyeSc6CiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlYnVnSW5mby5hc01lZGlhUXVlcnkoY3R4KTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAnYWxsJzoKICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVidWdJbmZvLmFzQ29tbWVudChjdHgpICsgKGxpbmVTZXBhcmF0b3IgfHwgJycpICsgZGVidWdJbmZvLmFzTWVkaWFRdWVyeShjdHgpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogIH07CiAgZGVidWdJbmZvLmFzQ29tbWVudCA9IGZ1bmN0aW9uIChjdHgpIHsgcmV0dXJuIGN0eC5kZWJ1Z0luZm8gPyAiLyogbGluZSAiICsgY3R4LmRlYnVnSW5mby5saW5lTnVtYmVyICsgIiwgIiArIGN0eC5kZWJ1Z0luZm8uZmlsZU5hbWUgKyAiICovXG4iIDogJyc7IH07CiAgZGVidWdJbmZvLmFzTWVkaWFRdWVyeSA9IGZ1bmN0aW9uIChjdHgpIHsKICAgICAgaWYgKCFjdHguZGVidWdJbmZvKSB7CiAgICAgICAgICByZXR1cm4gJyc7CiAgICAgIH0KICAgICAgdmFyIGZpbGVuYW1lV2l0aFByb3RvY29sID0gY3R4LmRlYnVnSW5mby5maWxlTmFtZTsKICAgICAgaWYgKCEvXlthLXpdKzpcL1wvL2kudGVzdChmaWxlbmFtZVdpdGhQcm90b2NvbCkpIHsKICAgICAgICAgIGZpbGVuYW1lV2l0aFByb3RvY29sID0gImZpbGU6Ly8iICsgZmlsZW5hbWVXaXRoUHJvdG9jb2w7CiAgICAgIH0KICAgICAgcmV0dXJuICJAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseToiICsgZmlsZW5hbWVXaXRoUHJvdG9jb2wucmVwbGFjZSgvKFsuOlwvXFxdKS9nLCBmdW5jdGlvbiAoYSkgewogICAgICAgICAgaWYgKGEgPT0gJ1xcJykgewogICAgICAgICAgICAgIGEgPSAnXC8nOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuICJcXCIgKyBhOwogICAgICB9KSArICJ9bGluZXtmb250LWZhbWlseTpcXDAwMDAzIiArIGN0eC5kZWJ1Z0luZm8ubGluZU51bWJlciArICJ9fVxuIjsKICB9OwoKICB2YXIgQ29tbWVudCA9IGZ1bmN0aW9uICh2YWx1ZSwgaXNMaW5lQ29tbWVudCwgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbykgewogICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CiAgICAgIHRoaXMuaXNMaW5lQ29tbWVudCA9IGlzTGluZUNvbW1lbnQ7CiAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CiAgICAgIHRoaXMuX2ZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogICAgICB0aGlzLmFsbG93Um9vdCA9IHRydWU7CiAgfTsKICBDb21tZW50LnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgQ29tbWVudC5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICBpZiAodGhpcy5kZWJ1Z0luZm8pIHsKICAgICAgICAgIG91dHB1dC5hZGQoZGVidWdJbmZvKGNvbnRleHQsIHRoaXMpLCB0aGlzLmZpbGVJbmZvKCksIHRoaXMuZ2V0SW5kZXgoKSk7CiAgICAgIH0KICAgICAgb3V0cHV0LmFkZCh0aGlzLnZhbHVlKTsKICB9OwogIENvbW1lbnQucHJvdG90eXBlLmlzU2lsZW50ID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIGlzQ29tcHJlc3NlZCA9IGNvbnRleHQuY29tcHJlc3MgJiYgdGhpcy52YWx1ZVsyXSAhPT0gJyEnOwogICAgICByZXR1cm4gdGhpcy5pc0xpbmVDb21tZW50IHx8IGlzQ29tcHJlc3NlZDsKICB9OwogIENvbW1lbnQucHJvdG90eXBlLnR5cGUgPSAnQ29tbWVudCc7CgogIHZhciBjb250ZXh0cyA9IHt9OwogIHZhciBjb3B5RnJvbU9yaWdpbmFsID0gZnVuY3Rpb24gY29weUZyb21PcmlnaW5hbChvcmlnaW5hbCwgZGVzdGluYXRpb24sIHByb3BlcnRpZXNUb0NvcHkpIHsKICAgICAgaWYgKCFvcmlnaW5hbCkgewogICAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllc1RvQ29weS5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKG9yaWdpbmFsLmhhc093blByb3BlcnR5KHByb3BlcnRpZXNUb0NvcHlbaV0pKSB7CiAgICAgICAgICAgICAgZGVzdGluYXRpb25bcHJvcGVydGllc1RvQ29weVtpXV0gPSBvcmlnaW5hbFtwcm9wZXJ0aWVzVG9Db3B5W2ldXTsKICAgICAgICAgIH0KICAgICAgfQogIH07CiAgLyoKICAgcGFyc2UgaXMgdXNlZCB3aGlsc3QgcGFyc2luZwogICAqLwogIHZhciBwYXJzZUNvcHlQcm9wZXJ0aWVzID0gWwogICAgICAvLyBvcHRpb25zCiAgICAgICdwYXRocycsCiAgICAgICdyZXdyaXRlVXJscycsCiAgICAgICdyb290cGF0aCcsCiAgICAgICdzdHJpY3RJbXBvcnRzJywKICAgICAgJ2luc2VjdXJlJywKICAgICAgJ2R1bXBMaW5lTnVtYmVycycsCiAgICAgICdjb21wcmVzcycsCiAgICAgICdzeW5jSW1wb3J0JywKICAgICAgJ2NodW5rSW5wdXQnLAogICAgICAnbWltZScsCiAgICAgICd1c2VGaWxlQ2FjaGUnLAogICAgICAvLyBjb250ZXh0CiAgICAgICdwcm9jZXNzSW1wb3J0cycsCiAgICAgIC8vIFVzZWQgYnkgdGhlIGltcG9ydCBtYW5hZ2VyIHRvIHN0b3AgbXVsdGlwbGUgaW1wb3J0IHZpc2l0b3JzIGJlaW5nIGNyZWF0ZWQuCiAgICAgICdwbHVnaW5NYW5hZ2VyJyAvLyBVc2VkIGFzIHRoZSBwbHVnaW4gbWFuYWdlciBmb3IgdGhlIHNlc3Npb24KICBdOwogIGNvbnRleHRzLlBhcnNlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgY29weUZyb21PcmlnaW5hbChvcHRpb25zLCB0aGlzLCBwYXJzZUNvcHlQcm9wZXJ0aWVzKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhdGhzID09PSAnc3RyaW5nJykgewogICAgICAgICAgdGhpcy5wYXRocyA9IFt0aGlzLnBhdGhzXTsKICAgICAgfQogIH07CiAgdmFyIGV2YWxDb3B5UHJvcGVydGllcyA9IFsKICAgICAgJ3BhdGhzJywKICAgICAgJ2NvbXByZXNzJywKICAgICAgJ21hdGgnLAogICAgICAnc3RyaWN0VW5pdHMnLAogICAgICAnc291cmNlTWFwJywKICAgICAgJ2ltcG9ydE11bHRpcGxlJywKICAgICAgJ3VybEFyZ3MnLAogICAgICAnamF2YXNjcmlwdEVuYWJsZWQnLAogICAgICAncGx1Z2luTWFuYWdlcicsCiAgICAgICdpbXBvcnRhbnRTY29wZScsCiAgICAgICdyZXdyaXRlVXJscycgLy8gb3B0aW9uIC0gd2hldGhlciB0byBhZGp1c3QgVVJMJ3MgdG8gYmUgcmVsYXRpdmUKICBdOwogIGZ1bmN0aW9uIGlzUGF0aFJlbGF0aXZlKHBhdGgpIHsKICAgICAgcmV0dXJuICEvXig/OlthLXotXSs6fFwvfCMpL2kudGVzdChwYXRoKTsKICB9CiAgZnVuY3Rpb24gaXNQYXRoTG9jYWxSZWxhdGl2ZShwYXRoKSB7CiAgICAgIHJldHVybiBwYXRoLmNoYXJBdCgwKSA9PT0gJy4nOwogIH0KICBjb250ZXh0cy5FdmFsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBFdmFsKG9wdGlvbnMsIGZyYW1lcykgewogICAgICAgICAgY29weUZyb21PcmlnaW5hbChvcHRpb25zLCB0aGlzLCBldmFsQ29weVByb3BlcnRpZXMpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhdGhzID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgIHRoaXMucGF0aHMgPSBbdGhpcy5wYXRoc107CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLmZyYW1lcyA9IGZyYW1lcyB8fCBbXTsKICAgICAgICAgIHRoaXMuaW1wb3J0YW50U2NvcGUgPSB0aGlzLmltcG9ydGFudFNjb3BlIHx8IFtdOwogICAgICAgICAgdGhpcy5pbkNhbGMgPSBmYWxzZTsKICAgICAgICAgIHRoaXMubWF0aE9uID0gdHJ1ZTsKICAgICAgfQogICAgICBFdmFsLnByb3RvdHlwZS5lbnRlckNhbGMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpZiAoIXRoaXMuY2FsY1N0YWNrKSB7CiAgICAgICAgICAgICAgdGhpcy5jYWxjU3RhY2sgPSBbXTsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMuY2FsY1N0YWNrLnB1c2godHJ1ZSk7CiAgICAgICAgICB0aGlzLmluQ2FsYyA9IHRydWU7CiAgICAgIH07CiAgICAgIEV2YWwucHJvdG90eXBlLmV4aXRDYWxjID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgdGhpcy5jYWxjU3RhY2sucG9wKCk7CiAgICAgICAgICBpZiAoIXRoaXMuY2FsY1N0YWNrLmxlbmd0aCkgewogICAgICAgICAgICAgIHRoaXMuaW5DYWxjID0gZmFsc2U7CiAgICAgICAgICB9CiAgICAgIH07CiAgICAgIEV2YWwucHJvdG90eXBlLmluUGFyZW50aGVzaXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpZiAoIXRoaXMucGFyZW5zU3RhY2spIHsKICAgICAgICAgICAgICB0aGlzLnBhcmVuc1N0YWNrID0gW107CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnBhcmVuc1N0YWNrLnB1c2godHJ1ZSk7CiAgICAgIH07CiAgICAgIEV2YWwucHJvdG90eXBlLm91dE9mUGFyZW50aGVzaXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICB0aGlzLnBhcmVuc1N0YWNrLnBvcCgpOwogICAgICB9OwogICAgICBFdmFsLnByb3RvdHlwZS5pc01hdGhPbiA9IGZ1bmN0aW9uIChvcCkgewogICAgICAgICAgaWYgKCF0aGlzLm1hdGhPbikgewogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChvcCA9PT0gJy8nICYmIHRoaXMubWF0aCAhPT0gTWF0aCQxLkFMV0FZUyAmJiAoIXRoaXMucGFyZW5zU3RhY2sgfHwgIXRoaXMucGFyZW5zU3RhY2subGVuZ3RoKSkgewogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aGlzLm1hdGggPiBNYXRoJDEuUEFSRU5TX0RJVklTSU9OKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW5zU3RhY2sgJiYgdGhpcy5wYXJlbnNTdGFjay5sZW5ndGg7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfTsKICAgICAgRXZhbC5wcm90b3R5cGUucGF0aFJlcXVpcmVzUmV3cml0ZSA9IGZ1bmN0aW9uIChwYXRoKSB7CiAgICAgICAgICB2YXIgaXNSZWxhdGl2ZSA9IHRoaXMucmV3cml0ZVVybHMgPT09IFJld3JpdGVVcmxzLkxPQ0FMID8gaXNQYXRoTG9jYWxSZWxhdGl2ZSA6IGlzUGF0aFJlbGF0aXZlOwogICAgICAgICAgcmV0dXJuIGlzUmVsYXRpdmUocGF0aCk7CiAgICAgIH07CiAgICAgIEV2YWwucHJvdG90eXBlLnJld3JpdGVQYXRoID0gZnVuY3Rpb24gKHBhdGgsIHJvb3RwYXRoKSB7CiAgICAgICAgICB2YXIgbmV3UGF0aDsKICAgICAgICAgIHJvb3RwYXRoID0gcm9vdHBhdGggfHwgJyc7CiAgICAgICAgICBuZXdQYXRoID0gdGhpcy5ub3JtYWxpemVQYXRoKHJvb3RwYXRoICsgcGF0aCk7CiAgICAgICAgICAvLyBJZiBhIHBhdGggd2FzIGV4cGxpY2l0IHJlbGF0aXZlIGFuZCB0aGUgcm9vdHBhdGggd2FzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoCiAgICAgICAgICAvLyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBuZXcgcGF0aCBpcyBhbHNvIGV4cGxpY2l0IHJlbGF0aXZlLgogICAgICAgICAgaWYgKGlzUGF0aExvY2FsUmVsYXRpdmUocGF0aCkgJiYKICAgICAgICAgICAgICBpc1BhdGhSZWxhdGl2ZShyb290cGF0aCkgJiYKICAgICAgICAgICAgICBpc1BhdGhMb2NhbFJlbGF0aXZlKG5ld1BhdGgpID09PSBmYWxzZSkgewogICAgICAgICAgICAgIG5ld1BhdGggPSAiLi8iICsgbmV3UGF0aDsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBuZXdQYXRoOwogICAgICB9OwogICAgICBFdmFsLnByb3RvdHlwZS5ub3JtYWxpemVQYXRoID0gZnVuY3Rpb24gKHBhdGgpIHsKICAgICAgICAgIHZhciBzZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKS5yZXZlcnNlKCk7CiAgICAgICAgICB2YXIgc2VnbWVudDsKICAgICAgICAgIHBhdGggPSBbXTsKICAgICAgICAgIHdoaWxlIChzZWdtZW50cy5sZW5ndGggIT09IDApIHsKICAgICAgICAgICAgICBzZWdtZW50ID0gc2VnbWVudHMucG9wKCk7CiAgICAgICAgICAgICAgc3dpdGNoIChzZWdtZW50KSB7CiAgICAgICAgICAgICAgICAgIGNhc2UgJy4nOgogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgJy4uJzoKICAgICAgICAgICAgICAgICAgICAgIGlmICgocGF0aC5sZW5ndGggPT09IDApIHx8IChwYXRoW3BhdGgubGVuZ3RoIC0gMV0gPT09ICcuLicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5wdXNoKHNlZ21lbnQpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5wb3AoKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgcGF0aC5wdXNoKHNlZ21lbnQpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHBhdGguam9pbignLycpOwogICAgICB9OwogICAgICByZXR1cm4gRXZhbDsKICB9KCkpOwoKICBmdW5jdGlvbiBtYWtlUmVnaXN0cnkoYmFzZSkgewogICAgICByZXR1cm4gewogICAgICAgICAgX2RhdGE6IHt9LAogICAgICAgICAgYWRkOiBmdW5jdGlvbiAobmFtZSwgZnVuYykgewogICAgICAgICAgICAgIC8vIHByZWNhdXRpb25hcnkgY2FzZSBjb252ZXJzaW9uLCBhcyBsYXRlciBxdWVyeWluZyBvZgogICAgICAgICAgICAgIC8vIHRoZSByZWdpc3RyeSBieSBmdW5jdGlvbi1jYWxsZXIgdXNlcyBsb3dlciBjYXNlIGFzIHdlbGwuCiAgICAgICAgICAgICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICBpZiAodGhpcy5fZGF0YS5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgOwogICAgICAgICAgICAgIHRoaXMuX2RhdGFbbmFtZV0gPSBmdW5jOwogICAgICAgICAgfSwKICAgICAgICAgIGFkZE11bHRpcGxlOiBmdW5jdGlvbiAoZnVuY3Rpb25zKSB7CiAgICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgICAgICAgICBPYmplY3Qua2V5cyhmdW5jdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgX3RoaXMuYWRkKG5hbWUsIGZ1bmN0aW9uc1tuYW1lXSk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICB9LAogICAgICAgICAgZ2V0OiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhW25hbWVdIHx8IChiYXNlICYmIGJhc2UuZ2V0KG5hbWUpKTsKICAgICAgICAgIH0sCiAgICAgICAgICBnZXRMb2NhbEZ1bmN0aW9uczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhOwogICAgICAgICAgfSwKICAgICAgICAgIGluaGVyaXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZ2lzdHJ5KHRoaXMpOwogICAgICAgICAgfSwKICAgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24gKGJhc2UpIHsKICAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZ2lzdHJ5KGJhc2UpOwogICAgICAgICAgfQogICAgICB9OwogIH0KICB2YXIgZnVuY3Rpb25SZWdpc3RyeSA9IG1ha2VSZWdpc3RyeShudWxsKTsKCiAgdmFyIGRlZmF1bHRGdW5jID0gewogICAgICBldmFsOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICB2YXIgdiA9IHRoaXMudmFsdWVfOwogICAgICAgICAgdmFyIGUgPSB0aGlzLmVycm9yXzsKICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh2ICE9IG51bGwpIHsKICAgICAgICAgICAgICByZXR1cm4gdiA/IEtleXdvcmQuVHJ1ZSA6IEtleXdvcmQuRmFsc2U7CiAgICAgICAgICB9CiAgICAgIH0sCiAgICAgIHZhbHVlOiBmdW5jdGlvbiAodikgewogICAgICAgICAgdGhpcy52YWx1ZV8gPSB2OwogICAgICB9LAogICAgICBlcnJvcjogZnVuY3Rpb24gKGUpIHsKICAgICAgICAgIHRoaXMuZXJyb3JfID0gZTsKICAgICAgfSwKICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHRoaXMudmFsdWVfID0gdGhpcy5lcnJvcl8gPSBudWxsOwogICAgICB9CiAgfTsKCiAgdmFyIFJ1bGVzZXQgPSBmdW5jdGlvbiAoc2VsZWN0b3JzLCBydWxlcywgc3RyaWN0SW1wb3J0cywgdmlzaWJpbGl0eUluZm8pIHsKICAgICAgdGhpcy5zZWxlY3RvcnMgPSBzZWxlY3RvcnM7CiAgICAgIHRoaXMucnVsZXMgPSBydWxlczsKICAgICAgdGhpcy5fbG9va3VwcyA9IHt9OwogICAgICB0aGlzLl92YXJpYWJsZXMgPSBudWxsOwogICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gbnVsbDsKICAgICAgdGhpcy5zdHJpY3RJbXBvcnRzID0gc3RyaWN0SW1wb3J0czsKICAgICAgdGhpcy5jb3B5VmlzaWJpbGl0eUluZm8odmlzaWJpbGl0eUluZm8pOwogICAgICB0aGlzLmFsbG93Um9vdCA9IHRydWU7CiAgICAgIHRoaXMuc2V0UGFyZW50KHRoaXMuc2VsZWN0b3JzLCB0aGlzKTsKICAgICAgdGhpcy5zZXRQYXJlbnQodGhpcy5ydWxlcywgdGhpcyk7CiAgfTsKICBSdWxlc2V0LnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgUnVsZXNldC5wcm90b3R5cGUuaXNSdWxlc2V0TGlrZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgfTsKICBSdWxlc2V0LnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgICBpZiAodGhpcy5wYXRocykgewogICAgICAgICAgdGhpcy5wYXRocyA9IHZpc2l0b3IudmlzaXRBcnJheSh0aGlzLnBhdGhzLCB0cnVlKTsKICAgICAgfQogICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdG9ycykgewogICAgICAgICAgdGhpcy5zZWxlY3RvcnMgPSB2aXNpdG9yLnZpc2l0QXJyYXkodGhpcy5zZWxlY3RvcnMpOwogICAgICB9CiAgICAgIGlmICh0aGlzLnJ1bGVzICYmIHRoaXMucnVsZXMubGVuZ3RoKSB7CiAgICAgICAgICB0aGlzLnJ1bGVzID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMucnVsZXMpOwogICAgICB9CiAgfTsKICBSdWxlc2V0LnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIHNlbGVjdG9yczsKICAgICAgdmFyIHNlbENudDsKICAgICAgdmFyIHNlbGVjdG9yOwogICAgICB2YXIgaTsKICAgICAgdmFyIGhhc1ZhcmlhYmxlOwogICAgICB2YXIgaGFzT25lUGFzc2luZ1NlbGVjdG9yID0gZmFsc2U7CiAgICAgIGlmICh0aGlzLnNlbGVjdG9ycyAmJiAoc2VsQ250ID0gdGhpcy5zZWxlY3RvcnMubGVuZ3RoKSkgewogICAgICAgICAgc2VsZWN0b3JzID0gbmV3IEFycmF5KHNlbENudCk7CiAgICAgICAgICBkZWZhdWx0RnVuYy5lcnJvcih7CiAgICAgICAgICAgICAgdHlwZTogJ1N5bnRheCcsCiAgICAgICAgICAgICAgbWVzc2FnZTogJ2l0IGlzIGN1cnJlbnRseSBvbmx5IGFsbG93ZWQgaW4gcGFyYW1ldHJpYyBtaXhpbiBndWFyZHMsJwogICAgICAgICAgfSk7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VsQ250OyBpKyspIHsKICAgICAgICAgICAgICBzZWxlY3RvciA9IHRoaXMuc2VsZWN0b3JzW2ldLmV2YWwoY29udGV4dCk7CiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWxlY3Rvci5lbGVtZW50cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuZWxlbWVudHNbal0uaXNWYXJpYWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgaGFzVmFyaWFibGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgc2VsZWN0b3JzW2ldID0gc2VsZWN0b3I7CiAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLmV2YWxkQ29uZGl0aW9uKSB7CiAgICAgICAgICAgICAgICAgIGhhc09uZVBhc3NpbmdTZWxlY3RvciA9IHRydWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGhhc1ZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgdmFyIHRvUGFyc2VTZWxlY3RvcnMgPSBuZXcgQXJyYXkoc2VsQ250KTsKICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VsQ250OyBpKyspIHsKICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvcnNbaV07CiAgICAgICAgICAgICAgICAgIHRvUGFyc2VTZWxlY3RvcnNbaV0gPSBzZWxlY3Rvci50b0NTUyhjb250ZXh0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdGhpcy5wYXJzZS5wYXJzZU5vZGUodG9QYXJzZVNlbGVjdG9ycy5qb2luKCcsJyksIFsic2VsZWN0b3JzIl0sIHNlbGVjdG9yc1swXS5nZXRJbmRleCgpLCBzZWxlY3RvcnNbMF0uZmlsZUluZm8oKSwgZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycyA9IGZsYXR0ZW5BcnJheShyZXN1bHQpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgICBkZWZhdWx0RnVuYy5yZXNldCgpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgaGFzT25lUGFzc2luZ1NlbGVjdG9yID0gdHJ1ZTsKICAgICAgfQogICAgICB2YXIgcnVsZXMgPSB0aGlzLnJ1bGVzID8gY29weUFycmF5KHRoaXMucnVsZXMpIDogbnVsbDsKICAgICAgdmFyIHJ1bGVzZXQgPSBuZXcgUnVsZXNldChzZWxlY3RvcnMsIHJ1bGVzLCB0aGlzLnN0cmljdEltcG9ydHMsIHRoaXMudmlzaWJpbGl0eUluZm8oKSk7CiAgICAgIHZhciBydWxlOwogICAgICB2YXIgc3ViUnVsZTsKICAgICAgcnVsZXNldC5vcmlnaW5hbFJ1bGVzZXQgPSB0aGlzOwogICAgICBydWxlc2V0LnJvb3QgPSB0aGlzLnJvb3Q7CiAgICAgIHJ1bGVzZXQuZmlyc3RSb290ID0gdGhpcy5maXJzdFJvb3Q7CiAgICAgIHJ1bGVzZXQuYWxsb3dJbXBvcnRzID0gdGhpcy5hbGxvd0ltcG9ydHM7CiAgICAgIGlmICh0aGlzLmRlYnVnSW5mbykgewogICAgICAgICAgcnVsZXNldC5kZWJ1Z0luZm8gPSB0aGlzLmRlYnVnSW5mbzsKICAgICAgfQogICAgICBpZiAoIWhhc09uZVBhc3NpbmdTZWxlY3RvcikgewogICAgICAgICAgcnVsZXMubGVuZ3RoID0gMDsKICAgICAgfQogICAgICAvLyBpbmhlcml0IGEgZnVuY3Rpb24gcmVnaXN0cnkgZnJvbSB0aGUgZnJhbWVzIHN0YWNrIHdoZW4gcG9zc2libGU7CiAgICAgIC8vIG90aGVyd2lzZSBmcm9tIHRoZSBnbG9iYWwgcmVnaXN0cnkKICAgICAgcnVsZXNldC5mdW5jdGlvblJlZ2lzdHJ5ID0gKGZ1bmN0aW9uIChmcmFtZXMpIHsKICAgICAgICAgIHZhciBpID0gMDsKICAgICAgICAgIHZhciBuID0gZnJhbWVzLmxlbmd0aDsKICAgICAgICAgIHZhciBmb3VuZDsKICAgICAgICAgIGZvciAoOyBpICE9PSBuOyArK2kpIHsKICAgICAgICAgICAgICBmb3VuZCA9IGZyYW1lc1tpXS5mdW5jdGlvblJlZ2lzdHJ5OwogICAgICAgICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uUmVnaXN0cnk7CiAgICAgIH0pKGNvbnRleHQuZnJhbWVzKS5pbmhlcml0KCk7CiAgICAgIC8vIHB1c2ggdGhlIGN1cnJlbnQgcnVsZXNldCB0byB0aGUgZnJhbWVzIHN0YWNrCiAgICAgIHZhciBjdHhGcmFtZXMgPSBjb250ZXh0LmZyYW1lczsKICAgICAgY3R4RnJhbWVzLnVuc2hpZnQocnVsZXNldCk7CiAgICAgIC8vIGN1cnJyZW50IHNlbGVjdG9ycwogICAgICB2YXIgY3R4U2VsZWN0b3JzID0gY29udGV4dC5zZWxlY3RvcnM7CiAgICAgIGlmICghY3R4U2VsZWN0b3JzKSB7CiAgICAgICAgICBjb250ZXh0LnNlbGVjdG9ycyA9IGN0eFNlbGVjdG9ycyA9IFtdOwogICAgICB9CiAgICAgIGN0eFNlbGVjdG9ycy51bnNoaWZ0KHRoaXMuc2VsZWN0b3JzKTsKICAgICAgLy8gRXZhbHVhdGUgaW1wb3J0cwogICAgICBpZiAocnVsZXNldC5yb290IHx8IHJ1bGVzZXQuYWxsb3dJbXBvcnRzIHx8ICFydWxlc2V0LnN0cmljdEltcG9ydHMpIHsKICAgICAgICAgIHJ1bGVzZXQuZXZhbEltcG9ydHMoY29udGV4dCk7CiAgICAgIH0KICAgICAgLy8gU3RvcmUgdGhlIGZyYW1lcyBhcm91bmQgbWl4aW4gZGVmaW5pdGlvbnMsCiAgICAgIC8vIHNvIHRoZXkgY2FuIGJlIGV2YWx1YXRlZCBsaWtlIGNsb3N1cmVzIHdoZW4gdGhlIHRpbWUgY29tZXMuCiAgICAgIHZhciByc1J1bGVzID0gcnVsZXNldC5ydWxlczsKICAgICAgZm9yIChpID0gMDsgKHJ1bGUgPSByc1J1bGVzW2ldKTsgaSsrKSB7CiAgICAgICAgICBpZiAocnVsZS5ldmFsRmlyc3QpIHsKICAgICAgICAgICAgICByc1J1bGVzW2ldID0gcnVsZS5ldmFsKGNvbnRleHQpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIHZhciBtZWRpYUJsb2NrQ291bnQgPSAoY29udGV4dC5tZWRpYUJsb2NrcyAmJiBjb250ZXh0Lm1lZGlhQmxvY2tzLmxlbmd0aCkgfHwgMDsKICAgICAgLy8gRXZhbHVhdGUgbWl4aW4gY2FsbHMuCiAgICAgIGZvciAoaSA9IDA7IChydWxlID0gcnNSdWxlc1tpXSk7IGkrKykgewogICAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gJ01peGluQ2FsbCcpIHsKICAgICAgICAgICAgICAvKiBqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSAqLwogICAgICAgICAgICAgIHJ1bGVzID0gcnVsZS5ldmFsKGNvbnRleHQpLmZpbHRlcihmdW5jdGlvbiAocikgewogICAgICAgICAgICAgICAgICBpZiAoKHIgaW5zdGFuY2VvZiBEZWNsYXJhdGlvbikgJiYgci52YXJpYWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHBvbGx1dGUgdGhlIHNjb3BlIGlmIHRoZSB2YXJpYWJsZSBpcwogICAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSB0aGVyZS4gY29uc2lkZXIgcmV0dXJuaW5nIGZhbHNlIGhlcmUKICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBuZWVkIGEgd2F5IHRvICJyZXR1cm4iIHZhcmlhYmxlIGZyb20gbWl4aW5zCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShydWxlc2V0LnZhcmlhYmxlKHIubmFtZSkpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIHJzUnVsZXMuc3BsaWNlLmFwcGx5KHJzUnVsZXMsIFtpLCAxXS5jb25jYXQocnVsZXMpKTsKICAgICAgICAgICAgICBpICs9IHJ1bGVzLmxlbmd0aCAtIDE7CiAgICAgICAgICAgICAgcnVsZXNldC5yZXNldENhY2hlKCk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChydWxlLnR5cGUgPT09ICdWYXJpYWJsZUNhbGwnKSB7CiAgICAgICAgICAgICAgLyoganNoaW50IGxvb3BmdW5jOnRydWUgKi8KICAgICAgICAgICAgICBydWxlcyA9IHJ1bGUuZXZhbChjb250ZXh0KS5ydWxlcy5maWx0ZXIoZnVuY3Rpb24gKHIpIHsKICAgICAgICAgICAgICAgICAgaWYgKChyIGluc3RhbmNlb2YgRGVjbGFyYXRpb24pICYmIHIudmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBwb2xsdXRlIHRoZSBzY29wZSBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICByc1J1bGVzLnNwbGljZS5hcHBseShyc1J1bGVzLCBbaSwgMV0uY29uY2F0KHJ1bGVzKSk7CiAgICAgICAgICAgICAgaSArPSBydWxlcy5sZW5ndGggLSAxOwogICAgICAgICAgICAgIHJ1bGVzZXQucmVzZXRDYWNoZSgpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIC8vIEV2YWx1YXRlIGV2ZXJ5dGhpbmcgZWxzZQogICAgICBmb3IgKGkgPSAwOyAocnVsZSA9IHJzUnVsZXNbaV0pOyBpKyspIHsKICAgICAgICAgIGlmICghcnVsZS5ldmFsRmlyc3QpIHsKICAgICAgICAgICAgICByc1J1bGVzW2ldID0gcnVsZSA9IHJ1bGUuZXZhbCA/IHJ1bGUuZXZhbChjb250ZXh0KSA6IHJ1bGU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gRXZhbHVhdGUgZXZlcnl0aGluZyBlbHNlCiAgICAgIGZvciAoaSA9IDA7IChydWxlID0gcnNSdWxlc1tpXSk7IGkrKykgewogICAgICAgICAgLy8gZm9yIHJ1bGVzZXRzLCBjaGVjayBpZiBpdCBpcyBhIGNzcyBndWFyZCBhbmQgY2FuIGJlIHJlbW92ZWQKICAgICAgICAgIGlmIChydWxlIGluc3RhbmNlb2YgUnVsZXNldCAmJiBydWxlLnNlbGVjdG9ycyAmJiBydWxlLnNlbGVjdG9ycy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAvLyBjaGVjayBpZiBpdCBjYW4gYmUgZm9sZGVkIGluIChlLmcuICYgd2hlcmUpCiAgICAgICAgICAgICAgaWYgKHJ1bGUuc2VsZWN0b3JzWzBdICYmIHJ1bGUuc2VsZWN0b3JzWzBdLmlzSnVzdFBhcmVudFNlbGVjdG9yKCkpIHsKICAgICAgICAgICAgICAgICAgcnNSdWxlcy5zcGxpY2UoaS0tLCAxKTsKICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IChzdWJSdWxlID0gcnVsZS5ydWxlc1tqXSk7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YlJ1bGUgaW5zdGFuY2VvZiBOb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViUnVsZS5jb3B5VmlzaWJpbGl0eUluZm8ocnVsZS52aXNpYmlsaXR5SW5mbygpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShzdWJSdWxlIGluc3RhbmNlb2YgRGVjbGFyYXRpb24pIHx8ICFzdWJSdWxlLnZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzUnVsZXMuc3BsaWNlKCsraSwgMCwgc3ViUnVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIC8vIFBvcCB0aGUgc3RhY2sKICAgICAgY3R4RnJhbWVzLnNoaWZ0KCk7CiAgICAgIGN0eFNlbGVjdG9ycy5zaGlmdCgpOwogICAgICBpZiAoY29udGV4dC5tZWRpYUJsb2NrcykgewogICAgICAgICAgZm9yIChpID0gbWVkaWFCbG9ja0NvdW50OyBpIDwgY29udGV4dC5tZWRpYUJsb2Nrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIGNvbnRleHQubWVkaWFCbG9ja3NbaV0uYnViYmxlU2VsZWN0b3JzKHNlbGVjdG9ycyk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHJ1bGVzZXQ7CiAgfTsKICBSdWxlc2V0LnByb3RvdHlwZS5ldmFsSW1wb3J0cyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciBydWxlcyA9IHRoaXMucnVsZXM7CiAgICAgIHZhciBpOwogICAgICB2YXIgaW1wb3J0UnVsZXM7CiAgICAgIGlmICghcnVsZXMpIHsKICAgICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBmb3IgKGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmIChydWxlc1tpXS50eXBlID09PSAnSW1wb3J0JykgewogICAgICAgICAgICAgIGltcG9ydFJ1bGVzID0gcnVsZXNbaV0uZXZhbChjb250ZXh0KTsKICAgICAgICAgICAgICBpZiAoaW1wb3J0UnVsZXMgJiYgKGltcG9ydFJ1bGVzLmxlbmd0aCB8fCBpbXBvcnRSdWxlcy5sZW5ndGggPT09IDApKSB7CiAgICAgICAgICAgICAgICAgIHJ1bGVzLnNwbGljZS5hcHBseShydWxlcywgW2ksIDFdLmNvbmNhdChpbXBvcnRSdWxlcykpOwogICAgICAgICAgICAgICAgICBpICs9IGltcG9ydFJ1bGVzLmxlbmd0aCAtIDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBydWxlcy5zcGxpY2UoaSwgMSwgaW1wb3J0UnVsZXMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLnJlc2V0Q2FjaGUoKTsKICAgICAgICAgIH0KICAgICAgfQogIH07CiAgUnVsZXNldC5wcm90b3R5cGUubWFrZUltcG9ydGFudCA9IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHJlc3VsdCA9IG5ldyBSdWxlc2V0KHRoaXMuc2VsZWN0b3JzLCB0aGlzLnJ1bGVzLm1hcChmdW5jdGlvbiAocikgewogICAgICAgICAgaWYgKHIubWFrZUltcG9ydGFudCkgewogICAgICAgICAgICAgIHJldHVybiByLm1ha2VJbXBvcnRhbnQoKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgfQogICAgICB9KSwgdGhpcy5zdHJpY3RJbXBvcnRzLCB0aGlzLnZpc2liaWxpdHlJbmZvKCkpOwogICAgICByZXR1cm4gcmVzdWx0OwogIH07CiAgUnVsZXNldC5wcm90b3R5cGUubWF0Y2hBcmdzID0gZnVuY3Rpb24gKGFyZ3MpIHsKICAgICAgcmV0dXJuICFhcmdzIHx8IGFyZ3MubGVuZ3RoID09PSAwOwogIH07CiAgLy8gbGV0cyB5b3UgY2FsbCBhIGNzcyBzZWxlY3RvciB3aXRoIGEgZ3VhcmQKICBSdWxlc2V0LnByb3RvdHlwZS5tYXRjaENvbmRpdGlvbiA9IGZ1bmN0aW9uIChhcmdzLCBjb250ZXh0KSB7CiAgICAgIHZhciBsYXN0U2VsZWN0b3IgPSB0aGlzLnNlbGVjdG9yc1t0aGlzLnNlbGVjdG9ycy5sZW5ndGggLSAxXTsKICAgICAgaWYgKCFsYXN0U2VsZWN0b3IuZXZhbGRDb25kaXRpb24pIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICBpZiAobGFzdFNlbGVjdG9yLmNvbmRpdGlvbiAmJgogICAgICAgICAgIWxhc3RTZWxlY3Rvci5jb25kaXRpb24uZXZhbChuZXcgY29udGV4dHMuRXZhbChjb250ZXh0LCBjb250ZXh0LmZyYW1lcykpKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgfTsKICBSdWxlc2V0LnByb3RvdHlwZS5yZXNldENhY2hlID0gZnVuY3Rpb24gKCkgewogICAgICB0aGlzLl9ydWxlc2V0cyA9IG51bGw7CiAgICAgIHRoaXMuX3ZhcmlhYmxlcyA9IG51bGw7CiAgICAgIHRoaXMuX3Byb3BlcnRpZXMgPSBudWxsOwogICAgICB0aGlzLl9sb29rdXBzID0ge307CiAgfTsKICBSdWxlc2V0LnByb3RvdHlwZS52YXJpYWJsZXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICghdGhpcy5fdmFyaWFibGVzKSB7CiAgICAgICAgICB0aGlzLl92YXJpYWJsZXMgPSAhdGhpcy5ydWxlcyA/IHt9IDogdGhpcy5ydWxlcy5yZWR1Y2UoZnVuY3Rpb24gKGhhc2gsIHIpIHsKICAgICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIERlY2xhcmF0aW9uICYmIHIudmFyaWFibGUgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgaGFzaFtyLm5hbWVdID0gcjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gd2hlbiBldmFsdWF0aW5nIHZhcmlhYmxlcyBpbiBhbiBpbXBvcnQgc3RhdGVtZW50LCBpbXBvcnRzIGhhdmUgbm90IGJlZW4gZXZhbCdkCiAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBnbyBpbnNpZGUgaW1wb3J0IHN0YXRlbWVudHMuCiAgICAgICAgICAgICAgLy8gZ3VhcmQgYWdhaW5zdCByb290IGJlaW5nIGEgc3RyaW5nIChpbiB0aGUgY2FzZSBvZiBpbmxpbmVkIGxlc3MpCiAgICAgICAgICAgICAgaWYgKHIudHlwZSA9PT0gJ0ltcG9ydCcgJiYgci5yb290ICYmIHIucm9vdC52YXJpYWJsZXMpIHsKICAgICAgICAgICAgICAgICAgdmFyIHZhcnMgPSByLnJvb3QudmFyaWFibGVzKCk7CiAgICAgICAgICAgICAgICAgIGZvciAodmFyIG5hbWVfMSBpbiB2YXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFycy5oYXNPd25Qcm9wZXJ0eShuYW1lXzEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaFtuYW1lXzFdID0gci5yb290LnZhcmlhYmxlKG5hbWVfMSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGhhc2g7CiAgICAgICAgICB9LCB7fSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX3ZhcmlhYmxlczsKICB9OwogIFJ1bGVzZXQucHJvdG90eXBlLnByb3BlcnRpZXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICghdGhpcy5fcHJvcGVydGllcykgewogICAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9ICF0aGlzLnJ1bGVzID8ge30gOiB0aGlzLnJ1bGVzLnJlZHVjZShmdW5jdGlvbiAoaGFzaCwgcikgewogICAgICAgICAgICAgIGlmIChyIGluc3RhbmNlb2YgRGVjbGFyYXRpb24gJiYgci52YXJpYWJsZSAhPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICB2YXIgbmFtZV8yID0gKHIubmFtZS5sZW5ndGggPT09IDEpICYmIChyLm5hbWVbMF0gaW5zdGFuY2VvZiBLZXl3b3JkKSA/CiAgICAgICAgICAgICAgICAgICAgICByLm5hbWVbMF0udmFsdWUgOiByLm5hbWU7CiAgICAgICAgICAgICAgICAgIC8vIFByb3BlcnRpZXMgZG9uJ3Qgb3ZlcndyaXRlIGFzIHRoZXkgY2FuIG1lcmdlCiAgICAgICAgICAgICAgICAgIGlmICghaGFzaFsiJCIgKyBuYW1lXzJdKSB7CiAgICAgICAgICAgICAgICAgICAgICBoYXNoWyIkIiArIG5hbWVfMl0gPSBbcl07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBoYXNoWyIkIiArIG5hbWVfMl0ucHVzaChyKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gaGFzaDsKICAgICAgICAgIH0sIHt9KTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5fcHJvcGVydGllczsKICB9OwogIFJ1bGVzZXQucHJvdG90eXBlLnZhcmlhYmxlID0gZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgdmFyIGRlY2wgPSB0aGlzLnZhcmlhYmxlcygpW25hbWVdOwogICAgICBpZiAoZGVjbCkgewogICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VWYWx1ZShkZWNsKTsKICAgICAgfQogIH07CiAgUnVsZXNldC5wcm90b3R5cGUucHJvcGVydHkgPSBmdW5jdGlvbiAobmFtZSkgewogICAgICB2YXIgZGVjbCA9IHRoaXMucHJvcGVydGllcygpW25hbWVdOwogICAgICBpZiAoZGVjbCkgewogICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VWYWx1ZShkZWNsKTsKICAgICAgfQogIH07CiAgUnVsZXNldC5wcm90b3R5cGUubGFzdERlY2xhcmF0aW9uID0gZnVuY3Rpb24gKCkgewogICAgICBmb3IgKHZhciBpID0gdGhpcy5ydWxlcy5sZW5ndGg7IGkgPiAwOyBpLS0pIHsKICAgICAgICAgIHZhciBkZWNsID0gdGhpcy5ydWxlc1tpIC0gMV07CiAgICAgICAgICBpZiAoZGVjbCBpbnN0YW5jZW9mIERlY2xhcmF0aW9uKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VWYWx1ZShkZWNsKTsKICAgICAgICAgIH0KICAgICAgfQogIH07CiAgUnVsZXNldC5wcm90b3R5cGUucGFyc2VWYWx1ZSA9IGZ1bmN0aW9uICh0b1BhcnNlKSB7CiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgZnVuY3Rpb24gdHJhbnNmb3JtRGVjbGFyYXRpb24oZGVjbCkgewogICAgICAgICAgaWYgKGRlY2wudmFsdWUgaW5zdGFuY2VvZiBBbm9ueW1vdXMgJiYgIWRlY2wucGFyc2VkKSB7CiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWNsLnZhbHVlLnZhbHVlID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlLnBhcnNlTm9kZShkZWNsLnZhbHVlLnZhbHVlLCBbJ3ZhbHVlJywgJ2ltcG9ydGFudCddLCBkZWNsLnZhbHVlLmdldEluZGV4KCksIGRlY2wuZmlsZUluZm8oKSwgZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbC5wYXJzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2wudmFsdWUgPSByZXN1bHRbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbC5pbXBvcnRhbnQgPSByZXN1bHRbMV0gfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbC5wYXJzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIGRlY2wucGFyc2VkID0gdHJ1ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZGVjbDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiAoIUFycmF5LmlzQXJyYXkodG9QYXJzZSkpIHsKICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1EZWNsYXJhdGlvbi5jYWxsKHNlbGYsIHRvUGFyc2UpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgdmFyIG5vZGVzXzEgPSBbXTsKICAgICAgICAgIHRvUGFyc2UuZm9yRWFjaChmdW5jdGlvbiAobikgewogICAgICAgICAgICAgIG5vZGVzXzEucHVzaCh0cmFuc2Zvcm1EZWNsYXJhdGlvbi5jYWxsKHNlbGYsIG4pKTsKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIG5vZGVzXzE7CiAgICAgIH0KICB9OwogIFJ1bGVzZXQucHJvdG90eXBlLnJ1bGVzZXRzID0gZnVuY3Rpb24gKCkgewogICAgICBpZiAoIXRoaXMucnVsZXMpIHsKICAgICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgICB2YXIgZmlsdFJ1bGVzID0gW107CiAgICAgIHZhciBydWxlcyA9IHRoaXMucnVsZXM7CiAgICAgIHZhciBpOwogICAgICB2YXIgcnVsZTsKICAgICAgZm9yIChpID0gMDsgKHJ1bGUgPSBydWxlc1tpXSk7IGkrKykgewogICAgICAgICAgaWYgKHJ1bGUuaXNSdWxlc2V0KSB7CiAgICAgICAgICAgICAgZmlsdFJ1bGVzLnB1c2gocnVsZSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGZpbHRSdWxlczsKICB9OwogIFJ1bGVzZXQucHJvdG90eXBlLnByZXBlbmRSdWxlID0gZnVuY3Rpb24gKHJ1bGUpIHsKICAgICAgdmFyIHJ1bGVzID0gdGhpcy5ydWxlczsKICAgICAgaWYgKHJ1bGVzKSB7CiAgICAgICAgICBydWxlcy51bnNoaWZ0KHJ1bGUpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgdGhpcy5ydWxlcyA9IFtydWxlXTsKICAgICAgfQogICAgICB0aGlzLnNldFBhcmVudChydWxlLCB0aGlzKTsKICB9OwogIFJ1bGVzZXQucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAoc2VsZWN0b3IsIHNlbGYsIGZpbHRlcikgewogICAgICBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHNlbGYgPSB0aGlzOyB9CiAgICAgIHZhciBydWxlcyA9IFtdOwogICAgICB2YXIgbWF0Y2g7CiAgICAgIHZhciBmb3VuZE1peGluczsKICAgICAgdmFyIGtleSA9IHNlbGVjdG9yLnRvQ1NTKCk7CiAgICAgIGlmIChrZXkgaW4gdGhpcy5fbG9va3VwcykgewogICAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cHNba2V5XTsKICAgICAgfQogICAgICB0aGlzLnJ1bGVzZXRzKCkuZm9yRWFjaChmdW5jdGlvbiAocnVsZSkgewogICAgICAgICAgaWYgKHJ1bGUgIT09IHNlbGYpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJ1bGUuc2VsZWN0b3JzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZWN0b3IubWF0Y2gocnVsZS5zZWxlY3RvcnNbal0pOwogICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5lbGVtZW50cy5sZW5ndGggPiBtYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsdGVyIHx8IGZpbHRlcihydWxlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZE1peGlucyA9IHJ1bGUuZmluZChuZXcgU2VsZWN0b3Ioc2VsZWN0b3IuZWxlbWVudHMuc2xpY2UobWF0Y2gpKSwgc2VsZiwgZmlsdGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3VuZE1peGlucy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRNaXhpbnNbaV0ucGF0aC5wdXNoKHJ1bGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHJ1bGVzLCBmb3VuZE1peGlucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXMucHVzaCh7IHJ1bGU6IHJ1bGUsIHBhdGg6IFtdIH0pOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0pOwogICAgICB0aGlzLl9sb29rdXBzW2tleV0gPSBydWxlczsKICAgICAgcmV0dXJuIHJ1bGVzOwogIH07CiAgUnVsZXNldC5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICB2YXIgaTsKICAgICAgdmFyIGo7CiAgICAgIHZhciBjaGFyc2V0UnVsZU5vZGVzID0gW107CiAgICAgIHZhciBydWxlTm9kZXMgPSBbXTsKICAgICAgdmFyIC8vIExpbmUgbnVtYmVyIGRlYnVnZ2luZwogICAgICBkZWJ1Z0luZm8kMTsKICAgICAgdmFyIHJ1bGU7CiAgICAgIHZhciBwYXRoOwogICAgICBjb250ZXh0LnRhYkxldmVsID0gKGNvbnRleHQudGFiTGV2ZWwgfHwgMCk7CiAgICAgIGlmICghdGhpcy5yb290KSB7CiAgICAgICAgICBjb250ZXh0LnRhYkxldmVsKys7CiAgICAgIH0KICAgICAgdmFyIHRhYlJ1bGVTdHIgPSBjb250ZXh0LmNvbXByZXNzID8gJycgOiBBcnJheShjb250ZXh0LnRhYkxldmVsICsgMSkuam9pbignICAnKTsKICAgICAgdmFyIHRhYlNldFN0ciA9IGNvbnRleHQuY29tcHJlc3MgPyAnJyA6IEFycmF5KGNvbnRleHQudGFiTGV2ZWwpLmpvaW4oJyAgJyk7CiAgICAgIHZhciBzZXA7CiAgICAgIHZhciBjaGFyc2V0Tm9kZUluZGV4ID0gMDsKICAgICAgdmFyIGltcG9ydE5vZGVJbmRleCA9IDA7CiAgICAgIGZvciAoaSA9IDA7IChydWxlID0gdGhpcy5ydWxlc1tpXSk7IGkrKykgewogICAgICAgICAgaWYgKHJ1bGUgaW5zdGFuY2VvZiBDb21tZW50KSB7CiAgICAgICAgICAgICAgaWYgKGltcG9ydE5vZGVJbmRleCA9PT0gaSkgewogICAgICAgICAgICAgICAgICBpbXBvcnROb2RlSW5kZXgrKzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcnVsZU5vZGVzLnB1c2gocnVsZSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChydWxlLmlzQ2hhcnNldCAmJiBydWxlLmlzQ2hhcnNldCgpKSB7CiAgICAgICAgICAgICAgcnVsZU5vZGVzLnNwbGljZShjaGFyc2V0Tm9kZUluZGV4LCAwLCBydWxlKTsKICAgICAgICAgICAgICBjaGFyc2V0Tm9kZUluZGV4Kys7CiAgICAgICAgICAgICAgaW1wb3J0Tm9kZUluZGV4Kys7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChydWxlLnR5cGUgPT09ICdJbXBvcnQnKSB7CiAgICAgICAgICAgICAgcnVsZU5vZGVzLnNwbGljZShpbXBvcnROb2RlSW5kZXgsIDAsIHJ1bGUpOwogICAgICAgICAgICAgIGltcG9ydE5vZGVJbmRleCsrOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcnVsZU5vZGVzLnB1c2gocnVsZSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcnVsZU5vZGVzID0gY2hhcnNldFJ1bGVOb2Rlcy5jb25jYXQocnVsZU5vZGVzKTsKICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgcm9vdCBub2RlLCB3ZSBkb24ndCByZW5kZXIKICAgICAgLy8gYSBzZWxlY3Rvciwgb3Ige30uCiAgICAgIGlmICghdGhpcy5yb290KSB7CiAgICAgICAgICBkZWJ1Z0luZm8kMSA9IGRlYnVnSW5mbyhjb250ZXh0LCB0aGlzLCB0YWJTZXRTdHIpOwogICAgICAgICAgaWYgKGRlYnVnSW5mbyQxKSB7CiAgICAgICAgICAgICAgb3V0cHV0LmFkZChkZWJ1Z0luZm8kMSk7CiAgICAgICAgICAgICAgb3V0cHV0LmFkZCh0YWJTZXRTdHIpOwogICAgICAgICAgfQogICAgICAgICAgdmFyIHBhdGhzID0gdGhpcy5wYXRoczsKICAgICAgICAgIHZhciBwYXRoQ250ID0gcGF0aHMubGVuZ3RoOwogICAgICAgICAgdmFyIHBhdGhTdWJDbnQgPSB2b2lkIDA7CiAgICAgICAgICBzZXAgPSBjb250ZXh0LmNvbXByZXNzID8gJywnIDogKCIsXG4iICsgdGFiU2V0U3RyKTsKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXRoQ250OyBpKyspIHsKICAgICAgICAgICAgICBwYXRoID0gcGF0aHNbaV07CiAgICAgICAgICAgICAgaWYgKCEocGF0aFN1YkNudCA9IHBhdGgubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7CiAgICAgICAgICAgICAgICAgIG91dHB1dC5hZGQoc2VwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY29udGV4dC5maXJzdFNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICBwYXRoWzBdLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgICAgICAgIGNvbnRleHQuZmlyc3RTZWxlY3RvciA9IGZhbHNlOwogICAgICAgICAgICAgIGZvciAoaiA9IDE7IGogPCBwYXRoU3ViQ250OyBqKyspIHsKICAgICAgICAgICAgICAgICAgcGF0aFtqXS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBvdXRwdXQuYWRkKChjb250ZXh0LmNvbXByZXNzID8gJ3snIDogJyB7XG4nKSArIHRhYlJ1bGVTdHIpOwogICAgICB9CiAgICAgIC8vIENvbXBpbGUgcnVsZXMgYW5kIHJ1bGVzZXRzCiAgICAgIGZvciAoaSA9IDA7IChydWxlID0gcnVsZU5vZGVzW2ldKTsgaSsrKSB7CiAgICAgICAgICBpZiAoaSArIDEgPT09IHJ1bGVOb2Rlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICBjb250ZXh0Lmxhc3RSdWxlID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBjdXJyZW50TGFzdFJ1bGUgPSBjb250ZXh0Lmxhc3RSdWxlOwogICAgICAgICAgaWYgKHJ1bGUuaXNSdWxlc2V0TGlrZShydWxlKSkgewogICAgICAgICAgICAgIGNvbnRleHQubGFzdFJ1bGUgPSBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChydWxlLmdlbkNTUykgewogICAgICAgICAgICAgIHJ1bGUuZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChydWxlLnZhbHVlKSB7CiAgICAgICAgICAgICAgb3V0cHV0LmFkZChydWxlLnZhbHVlLnRvU3RyaW5nKCkpOwogICAgICAgICAgfQogICAgICAgICAgY29udGV4dC5sYXN0UnVsZSA9IGN1cnJlbnRMYXN0UnVsZTsKICAgICAgICAgIGlmICghY29udGV4dC5sYXN0UnVsZSAmJiBydWxlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICAgb3V0cHV0LmFkZChjb250ZXh0LmNvbXByZXNzID8gJycgOiAoIlxuIiArIHRhYlJ1bGVTdHIpKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGNvbnRleHQubGFzdFJ1bGUgPSBmYWxzZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiAoIXRoaXMucm9vdCkgewogICAgICAgICAgb3V0cHV0LmFkZCgoY29udGV4dC5jb21wcmVzcyA/ICd9JyA6ICJcbiIgKyB0YWJTZXRTdHIgKyAifSIpKTsKICAgICAgICAgIGNvbnRleHQudGFiTGV2ZWwtLTsKICAgICAgfQogICAgICBpZiAoIW91dHB1dC5pc0VtcHR5KCkgJiYgIWNvbnRleHQuY29tcHJlc3MgJiYgdGhpcy5maXJzdFJvb3QpIHsKICAgICAgICAgIG91dHB1dC5hZGQoJ1xuJyk7CiAgICAgIH0KICB9OwogIFJ1bGVzZXQucHJvdG90eXBlLmpvaW5TZWxlY3RvcnMgPSBmdW5jdGlvbiAocGF0aHMsIGNvbnRleHQsIHNlbGVjdG9ycykgewogICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHNlbGVjdG9ycy5sZW5ndGg7IHMrKykgewogICAgICAgICAgdGhpcy5qb2luU2VsZWN0b3IocGF0aHMsIGNvbnRleHQsIHNlbGVjdG9yc1tzXSk7CiAgICAgIH0KICB9OwogIFJ1bGVzZXQucHJvdG90eXBlLmpvaW5TZWxlY3RvciA9IGZ1bmN0aW9uIChwYXRocywgY29udGV4dCwgc2VsZWN0b3IpIHsKICAgICAgZnVuY3Rpb24gY3JlYXRlUGFyZW50aGVzaXMoZWxlbWVudHNUb1Bhaywgb3JpZ2luYWxFbGVtZW50KSB7CiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnRQYXJlbjsKICAgICAgICAgIHZhciBqOwogICAgICAgICAgaWYgKGVsZW1lbnRzVG9QYWsubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXJlbiA9IG5ldyBQYXJlbihlbGVtZW50c1RvUGFrWzBdKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHZhciBpbnNpZGVQYXJlbnQgPSBuZXcgQXJyYXkoZWxlbWVudHNUb1Bhay5sZW5ndGgpOwogICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBlbGVtZW50c1RvUGFrLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgIGluc2lkZVBhcmVudFtqXSA9IG5ldyBFbGVtZW50KG51bGwsIGVsZW1lbnRzVG9QYWtbal0sIG9yaWdpbmFsRWxlbWVudC5pc1ZhcmlhYmxlLCBvcmlnaW5hbEVsZW1lbnQuX2luZGV4LCBvcmlnaW5hbEVsZW1lbnQuX2ZpbGVJbmZvKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXJlbiA9IG5ldyBQYXJlbihuZXcgU2VsZWN0b3IoaW5zaWRlUGFyZW50KSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRQYXJlbjsKICAgICAgfQogICAgICBmdW5jdGlvbiBjcmVhdGVTZWxlY3Rvcihjb250YWluZWRFbGVtZW50LCBvcmlnaW5hbEVsZW1lbnQpIHsKICAgICAgICAgIHZhciBlbGVtZW50OwogICAgICAgICAgdmFyIHNlbGVjdG9yOwogICAgICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KG51bGwsIGNvbnRhaW5lZEVsZW1lbnQsIG9yaWdpbmFsRWxlbWVudC5pc1ZhcmlhYmxlLCBvcmlnaW5hbEVsZW1lbnQuX2luZGV4LCBvcmlnaW5hbEVsZW1lbnQuX2ZpbGVJbmZvKTsKICAgICAgICAgIHNlbGVjdG9yID0gbmV3IFNlbGVjdG9yKFtlbGVtZW50XSk7CiAgICAgICAgICByZXR1cm4gc2VsZWN0b3I7CiAgICAgIH0KICAgICAgLy8gam9pbnMgc2VsZWN0b3IgcGF0aCBmcm9tIGBiZWdpbm5pbmdQYXRoYCB3aXRoIHNlbGVjdG9yIHBhdGggaW4gYGFkZFBhdGhgCiAgICAgIC8vIGByZXBsYWNlZEVsZW1lbnRgIGNvbnRhaW5zIGVsZW1lbnQgdGhhdCBpcyBiZWluZyByZXBsYWNlZCBieSBgYWRkUGF0aGAKICAgICAgLy8gcmV0dXJucyBjb25jYXRlbmF0ZWQgcGF0aAogICAgICBmdW5jdGlvbiBhZGRSZXBsYWNlbWVudEludG9QYXRoKGJlZ2lubmluZ1BhdGgsIGFkZFBhdGgsIHJlcGxhY2VkRWxlbWVudCwgb3JpZ2luYWxTZWxlY3RvcikgewogICAgICAgICAgdmFyIG5ld1NlbGVjdG9yUGF0aDsKICAgICAgICAgIHZhciBsYXN0U2VsZWN0b3I7CiAgICAgICAgICB2YXIgbmV3Sm9pbmVkU2VsZWN0b3I7CiAgICAgICAgICAvLyBvdXIgbmV3IHNlbGVjdG9yIHBhdGgKICAgICAgICAgIG5ld1NlbGVjdG9yUGF0aCA9IFtdOwogICAgICAgICAgLy8gY29uc3RydWN0IHRoZSBqb2luZWQgc2VsZWN0b3IgLSBpZiAmIGlzIHRoZSBmaXJzdCB0aGluZyB0aGlzIHdpbGwgYmUgZW1wdHksCiAgICAgICAgICAvLyBpZiBub3QgbmV3Sm9pbmVkU2VsZWN0b3Igd2lsbCBiZSB0aGUgbGFzdCBzZXQgb2YgZWxlbWVudHMgaW4gdGhlIHNlbGVjdG9yCiAgICAgICAgICBpZiAoYmVnaW5uaW5nUGF0aC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgbmV3U2VsZWN0b3JQYXRoID0gY29weUFycmF5KGJlZ2lubmluZ1BhdGgpOwogICAgICAgICAgICAgIGxhc3RTZWxlY3RvciA9IG5ld1NlbGVjdG9yUGF0aC5wb3AoKTsKICAgICAgICAgICAgICBuZXdKb2luZWRTZWxlY3RvciA9IG9yaWdpbmFsU2VsZWN0b3IuY3JlYXRlRGVyaXZlZChjb3B5QXJyYXkobGFzdFNlbGVjdG9yLmVsZW1lbnRzKSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBuZXdKb2luZWRTZWxlY3RvciA9IG9yaWdpbmFsU2VsZWN0b3IuY3JlYXRlRGVyaXZlZChbXSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoYWRkUGF0aC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgLy8gL2RlZXAvIGlzIGEgQ1NTNCBzZWxlY3RvciAtIChyZW1vdmVkLCBzbyBzaG91bGQgZGVwcmVjYXRlKQogICAgICAgICAgICAgIC8vIHRoYXQgaXMgdmFsaWQgd2l0aG91dCBhbnl0aGluZyBpbiBmcm9udCBvZiBpdAogICAgICAgICAgICAgIC8vIHNvIGlmIHRoZSAmIGRvZXMgbm90IGhhdmUgYSBjb21iaW5hdG9yIHRoYXQgaXMgIiIgb3IgIiAiIHRoZW4KICAgICAgICAgICAgICAvLyBhbmQgdGhlcmUgaXMgYSBjb21iaW5hdG9yIG9uIHRoZSBwYXJlbnQsIHRoZW4gZ3JhYiB0aGF0LgogICAgICAgICAgICAgIC8vIHRoaXMgYWxzbyBhbGxvd3MgKyBhIHsgJiAuYiB7IC5hICYgeyAuLi4gdGhvdWdoIG5vdCBzdXJlIHdoeSB5b3Ugd291bGQgd2FudCB0byBkbyB0aGF0CiAgICAgICAgICAgICAgdmFyIGNvbWJpbmF0b3IgPSByZXBsYWNlZEVsZW1lbnQuY29tYmluYXRvcjsKICAgICAgICAgICAgICB2YXIgcGFyZW50RWwgPSBhZGRQYXRoWzBdLmVsZW1lbnRzWzBdOwogICAgICAgICAgICAgIGlmIChjb21iaW5hdG9yLmVtcHR5T3JXaGl0ZXNwYWNlICYmICFwYXJlbnRFbC5jb21iaW5hdG9yLmVtcHR5T3JXaGl0ZXNwYWNlKSB7CiAgICAgICAgICAgICAgICAgIGNvbWJpbmF0b3IgPSBwYXJlbnRFbC5jb21iaW5hdG9yOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBqb2luIHRoZSBlbGVtZW50cyBzbyBmYXIgd2l0aCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgcGFyZW50CiAgICAgICAgICAgICAgbmV3Sm9pbmVkU2VsZWN0b3IuZWxlbWVudHMucHVzaChuZXcgRWxlbWVudChjb21iaW5hdG9yLCBwYXJlbnRFbC52YWx1ZSwgcmVwbGFjZWRFbGVtZW50LmlzVmFyaWFibGUsIHJlcGxhY2VkRWxlbWVudC5faW5kZXgsIHJlcGxhY2VkRWxlbWVudC5fZmlsZUluZm8pKTsKICAgICAgICAgICAgICBuZXdKb2luZWRTZWxlY3Rvci5lbGVtZW50cyA9IG5ld0pvaW5lZFNlbGVjdG9yLmVsZW1lbnRzLmNvbmNhdChhZGRQYXRoWzBdLmVsZW1lbnRzLnNsaWNlKDEpKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIG5vdyBhZGQgdGhlIGpvaW5lZCBzZWxlY3RvciAtIGJ1dCBvbmx5IGlmIGl0IGlzIG5vdCBlbXB0eQogICAgICAgICAgaWYgKG5ld0pvaW5lZFNlbGVjdG9yLmVsZW1lbnRzLmxlbmd0aCAhPT0gMCkgewogICAgICAgICAgICAgIG5ld1NlbGVjdG9yUGF0aC5wdXNoKG5ld0pvaW5lZFNlbGVjdG9yKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIHB1dCB0b2dldGhlciB0aGUgcGFyZW50IHNlbGVjdG9ycyBhZnRlciB0aGUgam9pbiAoZS5nLiB0aGUgcmVzdCBvZiB0aGUgcGFyZW50KQogICAgICAgICAgaWYgKGFkZFBhdGgubGVuZ3RoID4gMSkgewogICAgICAgICAgICAgIHZhciByZXN0T2ZQYXRoID0gYWRkUGF0aC5zbGljZSgxKTsKICAgICAgICAgICAgICByZXN0T2ZQYXRoID0gcmVzdE9mUGF0aC5tYXAoZnVuY3Rpb24gKHNlbGVjdG9yKSB7IHJldHVybiBzZWxlY3Rvci5jcmVhdGVEZXJpdmVkKHNlbGVjdG9yLmVsZW1lbnRzLCBbXSk7IH0pOwogICAgICAgICAgICAgIG5ld1NlbGVjdG9yUGF0aCA9IG5ld1NlbGVjdG9yUGF0aC5jb25jYXQocmVzdE9mUGF0aCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3U2VsZWN0b3JQYXRoOwogICAgICB9CiAgICAgIC8vIGpvaW5zIHNlbGVjdG9yIHBhdGggZnJvbSBgYmVnaW5uaW5nUGF0aGAgd2l0aCBldmVyeSBzZWxlY3RvciBwYXRoIGluIGBhZGRQYXRoc2AgYXJyYXkKICAgICAgLy8gYHJlcGxhY2VkRWxlbWVudGAgY29udGFpbnMgZWxlbWVudCB0aGF0IGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGBhZGRQYXRoYAogICAgICAvLyByZXR1cm5zIGFycmF5IHdpdGggYWxsIGNvbmNhdGVuYXRlZCBwYXRocwogICAgICBmdW5jdGlvbiBhZGRBbGxSZXBsYWNlbWVudHNJbnRvUGF0aChiZWdpbm5pbmdQYXRoLCBhZGRQYXRocywgcmVwbGFjZWRFbGVtZW50LCBvcmlnaW5hbFNlbGVjdG9yLCByZXN1bHQpIHsKICAgICAgICAgIHZhciBqOwogICAgICAgICAgZm9yIChqID0gMDsgaiA8IGJlZ2lubmluZ1BhdGgubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICB2YXIgbmV3U2VsZWN0b3JQYXRoID0gYWRkUmVwbGFjZW1lbnRJbnRvUGF0aChiZWdpbm5pbmdQYXRoW2pdLCBhZGRQYXRocywgcmVwbGFjZWRFbGVtZW50LCBvcmlnaW5hbFNlbGVjdG9yKTsKICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdTZWxlY3RvclBhdGgpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogICAgICBmdW5jdGlvbiBtZXJnZUVsZW1lbnRzT25Ub1NlbGVjdG9ycyhlbGVtZW50cywgc2VsZWN0b3JzKSB7CiAgICAgICAgICB2YXIgaTsKICAgICAgICAgIHZhciBzZWw7CiAgICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHNlbGVjdG9ycy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICBzZWxlY3RvcnMucHVzaChbbmV3IFNlbGVjdG9yKGVsZW1lbnRzKV0pOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAoaSA9IDA7IChzZWwgPSBzZWxlY3RvcnNbaV0pOyBpKyspIHsKICAgICAgICAgICAgICAvLyBpZiB0aGUgcHJldmlvdXMgdGhpbmcgaW4gc2VsIGlzIGEgcGFyZW50IHRoaXMgbmVlZHMgdG8gam9pbiBvbiB0byBpdAogICAgICAgICAgICAgIGlmIChzZWwubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICBzZWxbc2VsLmxlbmd0aCAtIDFdID0gc2VsW3NlbC5sZW5ndGggLSAxXS5jcmVhdGVEZXJpdmVkKHNlbFtzZWwubGVuZ3RoIC0gMV0uZWxlbWVudHMuY29uY2F0KGVsZW1lbnRzKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBzZWwucHVzaChuZXcgU2VsZWN0b3IoZWxlbWVudHMpKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gcmVwbGFjZSBhbGwgcGFyZW50IHNlbGVjdG9ycyBpbnNpZGUgYGluU2VsZWN0b3JgIGJ5IGNvbnRlbnQgb2YgYGNvbnRleHRgIGFycmF5CiAgICAgIC8vIHJlc3VsdGluZyBzZWxlY3RvcnMgYXJlIHJldHVybmVkIGluc2lkZSBgcGF0aHNgIGFycmF5CiAgICAgIC8vIHJldHVybnMgdHJ1ZSBpZiBgaW5TZWxlY3RvcmAgY29udGFpbmVkIGF0IGxlYXN0IG9uZSBwYXJlbnQgc2VsZWN0b3IKICAgICAgZnVuY3Rpb24gcmVwbGFjZVBhcmVudFNlbGVjdG9yKHBhdGhzLCBjb250ZXh0LCBpblNlbGVjdG9yKSB7CiAgICAgICAgICAvLyBUaGUgcGF0aHMgYXJlIFtbU2VsZWN0b3JdXQogICAgICAgICAgLy8gVGhlIGZpcnN0IGxpc3QgaXMgYSBsaXN0IG9mIGNvbW1hIHNlcGFyYXRlZCBzZWxlY3RvcnMKICAgICAgICAgIC8vIFRoZSBpbm5lciBsaXN0IGlzIGEgbGlzdCBvZiBpbmhlcml0YW5jZSBzZXBhcmF0ZWQgc2VsZWN0b3JzCiAgICAgICAgICAvLyBlLmcuCiAgICAgICAgICAvLyAuYSwgLmIgewogICAgICAgICAgLy8gICAuYyB7CiAgICAgICAgICAvLyAgIH0KICAgICAgICAgIC8vIH0KICAgICAgICAgIC8vID09IFtbLmFdIFsuY11dIFtbLmJdIFsuY11dCiAgICAgICAgICAvLwogICAgICAgICAgdmFyIGk7CiAgICAgICAgICB2YXIgajsKICAgICAgICAgIHZhciBrOwogICAgICAgICAgdmFyIGN1cnJlbnRFbGVtZW50czsKICAgICAgICAgIHZhciBuZXdTZWxlY3RvcnM7CiAgICAgICAgICB2YXIgc2VsZWN0b3JzTXVsdGlwbGllZDsKICAgICAgICAgIHZhciBzZWw7CiAgICAgICAgICB2YXIgZWw7CiAgICAgICAgICB2YXIgaGFkUGFyZW50U2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICAgIHZhciBsZW5ndGg7CiAgICAgICAgICB2YXIgbGFzdFNlbGVjdG9yOwogICAgICAgICAgZnVuY3Rpb24gZmluZE5lc3RlZFNlbGVjdG9yKGVsZW1lbnQpIHsKICAgICAgICAgICAgICB2YXIgbWF5YmVTZWxlY3RvcjsKICAgICAgICAgICAgICBpZiAoIShlbGVtZW50LnZhbHVlIGluc3RhbmNlb2YgUGFyZW4pKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBtYXliZVNlbGVjdG9yID0gZWxlbWVudC52YWx1ZS52YWx1ZTsKICAgICAgICAgICAgICBpZiAoIShtYXliZVNlbGVjdG9yIGluc3RhbmNlb2YgU2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gbWF5YmVTZWxlY3RvcjsKICAgICAgICAgIH0KICAgICAgICAgIC8vIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdG9yIHNvIGZhcgogICAgICAgICAgY3VycmVudEVsZW1lbnRzID0gW107CiAgICAgICAgICAvLyB0aGUgY3VycmVudCBsaXN0IG9mIG5ldyBzZWxlY3RvcnMgdG8gYWRkIHRvIHRoZSBwYXRoLgogICAgICAgICAgLy8gV2Ugd2lsbCBidWlsZCBpdCB1cC4gV2UgaW5pdGlhdGUgaXQgd2l0aCBvbmUgZW1wdHkgc2VsZWN0b3IgYXMgd2UgIm11bHRpcGx5IiB0aGUgbmV3IHNlbGVjdG9ycwogICAgICAgICAgLy8gYnkgdGhlIHBhcmVudHMKICAgICAgICAgIG5ld1NlbGVjdG9ycyA9IFsKICAgICAgICAgICAgICBbXQogICAgICAgICAgXTsKICAgICAgICAgIGZvciAoaSA9IDA7IChlbCA9IGluU2VsZWN0b3IuZWxlbWVudHNbaV0pOyBpKyspIHsKICAgICAgICAgICAgICAvLyBub24gcGFyZW50IHJlZmVyZW5jZSBlbGVtZW50cyBqdXN0IGdldCBhZGRlZAogICAgICAgICAgICAgIGlmIChlbC52YWx1ZSAhPT0gJyYnKSB7CiAgICAgICAgICAgICAgICAgIHZhciBuZXN0ZWRTZWxlY3RvciA9IGZpbmROZXN0ZWRTZWxlY3RvcihlbCk7CiAgICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTZWxlY3RvciAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAvLyBtZXJnZSB0aGUgY3VycmVudCBsaXN0IG9mIG5vbiBwYXJlbnQgc2VsZWN0b3IgZWxlbWVudHMKICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIHRvIHRoZSBjdXJyZW50IGxpc3Qgb2Ygc2VsZWN0b3JzIHRvIGFkZAogICAgICAgICAgICAgICAgICAgICAgbWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoY3VycmVudEVsZW1lbnRzLCBuZXdTZWxlY3RvcnMpOwogICAgICAgICAgICAgICAgICAgICAgdmFyIG5lc3RlZFBhdGhzID0gW107CiAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZWQgPSB2b2lkIDA7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZWROZXdTZWxlY3RvcnMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkID0gcmVwbGFjZVBhcmVudFNlbGVjdG9yKG5lc3RlZFBhdGhzLCBjb250ZXh0LCBuZXN0ZWRTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgICAgICBoYWRQYXJlbnRTZWxlY3RvciA9IGhhZFBhcmVudFNlbGVjdG9yIHx8IHJlcGxhY2VkOwogICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5lc3RlZFBhdGhzIGFycmF5IHNob3VsZCBoYXZlIG9ubHkgb25lIG1lbWJlciAtIHJlcGxhY2VQYXJlbnRTZWxlY3RvciBkb2VzIG5vdCBtdWx0aXBseSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBuZXN0ZWRQYXRocy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXBsYWNlbWVudFNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoY3JlYXRlUGFyZW50aGVzaXMobmVzdGVkUGF0aHNba10sIGVsKSwgZWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEFsbFJlcGxhY2VtZW50c0ludG9QYXRoKG5ld1NlbGVjdG9ycywgW3JlcGxhY2VtZW50U2VsZWN0b3JdLCBlbCwgaW5TZWxlY3RvciwgcmVwbGFjZWROZXdTZWxlY3RvcnMpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3JzID0gcmVwbGFjZWROZXdTZWxlY3RvcnM7CiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudHMgPSBbXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50cy5wdXNoKGVsKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgaGFkUGFyZW50U2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgICAgICAvLyB0aGUgbmV3IGxpc3Qgb2Ygc2VsZWN0b3JzIHRvIGFkZAogICAgICAgICAgICAgICAgICBzZWxlY3RvcnNNdWx0aXBsaWVkID0gW107CiAgICAgICAgICAgICAgICAgIC8vIG1lcmdlIHRoZSBjdXJyZW50IGxpc3Qgb2Ygbm9uIHBhcmVudCBzZWxlY3RvciBlbGVtZW50cwogICAgICAgICAgICAgICAgICAvLyBvbiB0byB0aGUgY3VycmVudCBsaXN0IG9mIHNlbGVjdG9ycyB0byBhZGQKICAgICAgICAgICAgICAgICAgbWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoY3VycmVudEVsZW1lbnRzLCBuZXdTZWxlY3RvcnMpOwogICAgICAgICAgICAgICAgICAvLyBsb29wIHRocm91Z2ggb3VyIGN1cnJlbnQgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuZXdTZWxlY3RvcnMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgIHNlbCA9IG5ld1NlbGVjdG9yc1tqXTsKICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGRvbid0IGhhdmUgYW55IHBhcmVudCBwYXRocywgdGhlICYgbWlnaHQgYmUgaW4gYSBtaXhpbiBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgICAvLyB3aGV0aGVyIHRoZXJlIGFyZSBwYXJlbnRzIG9yIG5vdAogICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvbWJpbmF0b3IgdXNlZCBvbiBlbCBzaG91bGQgbm93IGJlIGFwcGxpZWQgdG8gdGhlIG5leHQgZWxlbWVudCBpbnN0ZWFkIHNvIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBpcyBub3QgbG9zdAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWwubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxbMF0uZWxlbWVudHMucHVzaChuZXcgRWxlbWVudChlbC5jb21iaW5hdG9yLCAnJywgZWwuaXNWYXJpYWJsZSwgZWwuX2luZGV4LCBlbC5fZmlsZUluZm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzTXVsdGlwbGllZC5wdXNoKHNlbCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIHBhcmVudCBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgY29udGV4dC5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHB1dCB0aGUgY3VycmVudCBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBqb2luIHRoZSBsYXN0IHNlbGVjdG9yJ3MgZWxlbWVudHMgb24gdG8gdGhlIHBhcmVudHMgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXdTZWxlY3RvclBhdGggPSBhZGRSZXBsYWNlbWVudEludG9QYXRoKHNlbCwgY29udGV4dFtrXSwgZWwsIGluU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdGhhdCB0byBvdXIgbmV3IHNldCBvZiBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzTXVsdGlwbGllZC5wdXNoKG5ld1NlbGVjdG9yUGF0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIC8vIG91ciBuZXcgc2VsZWN0b3JzIGhhcyBiZWVuIG11bHRpcGxpZWQsIHNvIHJlc2V0IHRoZSBzdGF0ZQogICAgICAgICAgICAgICAgICBuZXdTZWxlY3RvcnMgPSBzZWxlY3RvcnNNdWx0aXBsaWVkOwogICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudHMgPSBbXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAvLyBpZiB3ZSBoYXZlIGFueSBlbGVtZW50cyBsZWZ0IG92ZXIgKGUuZy4gLmEmIC5iID09IC5iKQogICAgICAgICAgLy8gYWRkIHRoZW0gb24gdG8gYWxsIHRoZSBjdXJyZW50IHNlbGVjdG9ycwogICAgICAgICAgbWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoY3VycmVudEVsZW1lbnRzLCBuZXdTZWxlY3RvcnMpOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5ld1NlbGVjdG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIGxlbmd0aCA9IG5ld1NlbGVjdG9yc1tpXS5sZW5ndGg7CiAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgcGF0aHMucHVzaChuZXdTZWxlY3RvcnNbaV0pOwogICAgICAgICAgICAgICAgICBsYXN0U2VsZWN0b3IgPSBuZXdTZWxlY3RvcnNbaV1bbGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9yc1tpXVtsZW5ndGggLSAxXSA9IGxhc3RTZWxlY3Rvci5jcmVhdGVEZXJpdmVkKGxhc3RTZWxlY3Rvci5lbGVtZW50cywgaW5TZWxlY3Rvci5leHRlbmRMaXN0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gaGFkUGFyZW50U2VsZWN0b3I7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gZGVyaXZlU2VsZWN0b3IodmlzaWJpbGl0eUluZm8sIGRlcml2ZUZyb20pIHsKICAgICAgICAgIHZhciBuZXdTZWxlY3RvciA9IGRlcml2ZUZyb20uY3JlYXRlRGVyaXZlZChkZXJpdmVGcm9tLmVsZW1lbnRzLCBkZXJpdmVGcm9tLmV4dGVuZExpc3QsIGRlcml2ZUZyb20uZXZhbGRDb25kaXRpb24pOwogICAgICAgICAgbmV3U2VsZWN0b3IuY29weVZpc2liaWxpdHlJbmZvKHZpc2liaWxpdHlJbmZvKTsKICAgICAgICAgIHJldHVybiBuZXdTZWxlY3RvcjsKICAgICAgfQogICAgICAvLyBqb2luU2VsZWN0b3IgY29kZSBmb2xsb3dzCiAgICAgIHZhciBpOwogICAgICB2YXIgbmV3UGF0aHM7CiAgICAgIHZhciBoYWRQYXJlbnRTZWxlY3RvcjsKICAgICAgbmV3UGF0aHMgPSBbXTsKICAgICAgaGFkUGFyZW50U2VsZWN0b3IgPSByZXBsYWNlUGFyZW50U2VsZWN0b3IobmV3UGF0aHMsIGNvbnRleHQsIHNlbGVjdG9yKTsKICAgICAgaWYgKCFoYWRQYXJlbnRTZWxlY3RvcikgewogICAgICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIG5ld1BhdGhzID0gW107CiAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbnRleHQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgdmFyIGNvbmNhdGVuYXRlZCA9IGNvbnRleHRbaV0ubWFwKGRlcml2ZVNlbGVjdG9yLmJpbmQodGhpcywgc2VsZWN0b3IudmlzaWJpbGl0eUluZm8oKSkpOwogICAgICAgICAgICAgICAgICBjb25jYXRlbmF0ZWQucHVzaChzZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgIG5ld1BhdGhzLnB1c2goY29uY2F0ZW5hdGVkKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBuZXdQYXRocyA9IFtbc2VsZWN0b3JdXTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBmb3IgKGkgPSAwOyBpIDwgbmV3UGF0aHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHBhdGhzLnB1c2gobmV3UGF0aHNbaV0pOwogICAgICB9CiAgfTsKICBSdWxlc2V0LnByb3RvdHlwZS50eXBlID0gJ1J1bGVzZXQnOwogIFJ1bGVzZXQucHJvdG90eXBlLmlzUnVsZXNldCA9IHRydWU7CgogIHZhciBBdFJ1bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIHJ1bGVzLCBpbmRleCwgY3VycmVudEZpbGVJbmZvLCBkZWJ1Z0luZm8sIGlzUm9vdGVkLCB2aXNpYmlsaXR5SW5mbykgewogICAgICB2YXIgaTsKICAgICAgdGhpcy5uYW1lID0gbmFtZTsKICAgICAgdGhpcy52YWx1ZSA9ICh2YWx1ZSBpbnN0YW5jZW9mIE5vZGUpID8gdmFsdWUgOiAodmFsdWUgPyBuZXcgQW5vbnltb3VzKHZhbHVlKSA6IHZhbHVlKTsKICAgICAgaWYgKHJ1bGVzKSB7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShydWxlcykpIHsKICAgICAgICAgICAgICB0aGlzLnJ1bGVzID0gcnVsZXM7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLnJ1bGVzID0gW3J1bGVzXTsKICAgICAgICAgICAgICB0aGlzLnJ1bGVzWzBdLnNlbGVjdG9ycyA9IChuZXcgU2VsZWN0b3IoW10sIG51bGwsIG51bGwsIGluZGV4LCBjdXJyZW50RmlsZUluZm8pKS5jcmVhdGVFbXB0eVNlbGVjdG9ycygpOwogICAgICAgICAgfQogICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMucnVsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICB0aGlzLnJ1bGVzW2ldLmFsbG93SW1wb3J0cyA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnNldFBhcmVudCh0aGlzLnJ1bGVzLCB0aGlzKTsKICAgICAgfQogICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwogICAgICB0aGlzLl9maWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKICAgICAgdGhpcy5kZWJ1Z0luZm8gPSBkZWJ1Z0luZm87CiAgICAgIHRoaXMuaXNSb290ZWQgPSBpc1Jvb3RlZCB8fCBmYWxzZTsKICAgICAgdGhpcy5jb3B5VmlzaWJpbGl0eUluZm8odmlzaWJpbGl0eUluZm8pOwogICAgICB0aGlzLmFsbG93Um9vdCA9IHRydWU7CiAgfTsKICBBdFJ1bGUucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBBdFJ1bGUucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7CiAgICAgIHZhciBydWxlcyA9IHRoaXMucnVsZXM7CiAgICAgIGlmIChydWxlcykgewogICAgICAgICAgdGhpcy5ydWxlcyA9IHZpc2l0b3IudmlzaXRBcnJheShydWxlcyk7CiAgICAgIH0KICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICB0aGlzLnZhbHVlID0gdmlzaXRvci52aXNpdCh2YWx1ZSk7CiAgICAgIH0KICB9OwogIEF0UnVsZS5wcm90b3R5cGUuaXNSdWxlc2V0TGlrZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIHRoaXMucnVsZXMgfHwgIXRoaXMuaXNDaGFyc2V0KCk7CiAgfTsKICBBdFJ1bGUucHJvdG90eXBlLmlzQ2hhcnNldCA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuICdAY2hhcnNldCcgPT09IHRoaXMubmFtZTsKICB9OwogIEF0UnVsZS5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlOwogICAgICB2YXIgcnVsZXMgPSB0aGlzLnJ1bGVzOwogICAgICBvdXRwdXQuYWRkKHRoaXMubmFtZSwgdGhpcy5maWxlSW5mbygpLCB0aGlzLmdldEluZGV4KCkpOwogICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgIG91dHB1dC5hZGQoJyAnKTsKICAgICAgICAgIHZhbHVlLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICB9CiAgICAgIGlmIChydWxlcykgewogICAgICAgICAgdGhpcy5vdXRwdXRSdWxlc2V0KGNvbnRleHQsIG91dHB1dCwgcnVsZXMpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgb3V0cHV0LmFkZCgnOycpOwogICAgICB9CiAgfTsKICBBdFJ1bGUucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgICB2YXIgbWVkaWFQYXRoQmFja3VwOwogICAgICB2YXIgbWVkaWFCbG9ja3NCYWNrdXA7CiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7CiAgICAgIHZhciBydWxlcyA9IHRoaXMucnVsZXM7CiAgICAgIC8vIG1lZGlhIHN0b3JlZCBpbnNpZGUgb3RoZXIgYXRydWxlIHNob3VsZCBub3QgYnViYmxlIG92ZXIgaXQKICAgICAgLy8gYmFja3B1cCBtZWRpYSBidWJibGluZyBpbmZvcm1hdGlvbgogICAgICBtZWRpYVBhdGhCYWNrdXAgPSBjb250ZXh0Lm1lZGlhUGF0aDsKICAgICAgbWVkaWFCbG9ja3NCYWNrdXAgPSBjb250ZXh0Lm1lZGlhQmxvY2tzOwogICAgICAvLyBkZWxldGVkIG1lZGlhIGJ1YmJsaW5nIGluZm9ybWF0aW9uCiAgICAgIGNvbnRleHQubWVkaWFQYXRoID0gW107CiAgICAgIGNvbnRleHQubWVkaWFCbG9ja3MgPSBbXTsKICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmV2YWwoY29udGV4dCk7CiAgICAgIH0KICAgICAgaWYgKHJ1bGVzKSB7CiAgICAgICAgICAvLyBhc3N1bWluZyB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHJ1bGUgYXQgdGhpcyBwb2ludCAtIHRoYXQgaXMgaG93IHBhcnNlciBjb25zdHJ1Y3RzIHRoZSBydWxlCiAgICAgICAgICBydWxlcyA9IFtydWxlc1swXS5ldmFsKGNvbnRleHQpXTsKICAgICAgICAgIHJ1bGVzWzBdLnJvb3QgPSB0cnVlOwogICAgICB9CiAgICAgIC8vIHJlc3RvcmUgbWVkaWEgYnViYmxpbmcgaW5mb3JtYXRpb24KICAgICAgY29udGV4dC5tZWRpYVBhdGggPSBtZWRpYVBhdGhCYWNrdXA7CiAgICAgIGNvbnRleHQubWVkaWFCbG9ja3MgPSBtZWRpYUJsb2Nrc0JhY2t1cDsKICAgICAgcmV0dXJuIG5ldyBBdFJ1bGUodGhpcy5uYW1lLCB2YWx1ZSwgcnVsZXMsIHRoaXMuZ2V0SW5kZXgoKSwgdGhpcy5maWxlSW5mbygpLCB0aGlzLmRlYnVnSW5mbywgdGhpcy5pc1Jvb3RlZCwgdGhpcy52aXNpYmlsaXR5SW5mbygpKTsKICB9OwogIEF0UnVsZS5wcm90b3R5cGUudmFyaWFibGUgPSBmdW5jdGlvbiAobmFtZSkgewogICAgICBpZiAodGhpcy5ydWxlcykgewogICAgICAgICAgLy8gYXNzdW1pbmcgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBydWxlIGF0IHRoaXMgcG9pbnQgLSB0aGF0IGlzIGhvdyBwYXJzZXIgY29uc3RydWN0cyB0aGUgcnVsZQogICAgICAgICAgcmV0dXJuIFJ1bGVzZXQucHJvdG90eXBlLnZhcmlhYmxlLmNhbGwodGhpcy5ydWxlc1swXSwgbmFtZSk7CiAgICAgIH0KICB9OwogIEF0UnVsZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIGFyZ3MgPSBbXTsKICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTsKICAgICAgfQogICAgICBpZiAodGhpcy5ydWxlcykgewogICAgICAgICAgLy8gYXNzdW1pbmcgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBydWxlIGF0IHRoaXMgcG9pbnQgLSB0aGF0IGlzIGhvdyBwYXJzZXIgY29uc3RydWN0cyB0aGUgcnVsZQogICAgICAgICAgcmV0dXJuIFJ1bGVzZXQucHJvdG90eXBlLmZpbmQuYXBwbHkodGhpcy5ydWxlc1swXSwgYXJncyk7CiAgICAgIH0KICB9OwogIEF0UnVsZS5wcm90b3R5cGUucnVsZXNldHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLnJ1bGVzKSB7CiAgICAgICAgICAvLyBhc3N1bWluZyB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHJ1bGUgYXQgdGhpcyBwb2ludCAtIHRoYXQgaXMgaG93IHBhcnNlciBjb25zdHJ1Y3RzIHRoZSBydWxlCiAgICAgICAgICByZXR1cm4gUnVsZXNldC5wcm90b3R5cGUucnVsZXNldHMuYXBwbHkodGhpcy5ydWxlc1swXSk7CiAgICAgIH0KICB9OwogIEF0UnVsZS5wcm90b3R5cGUub3V0cHV0UnVsZXNldCA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQsIHJ1bGVzKSB7CiAgICAgIHZhciBydWxlQ250ID0gcnVsZXMubGVuZ3RoOwogICAgICB2YXIgaTsKICAgICAgY29udGV4dC50YWJMZXZlbCA9IChjb250ZXh0LnRhYkxldmVsIHwgMCkgKyAxOwogICAgICAvLyBDb21wcmVzc2VkCiAgICAgIGlmIChjb250ZXh0LmNvbXByZXNzKSB7CiAgICAgICAgICBvdXRwdXQuYWRkKCd7Jyk7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcnVsZUNudDsgaSsrKSB7CiAgICAgICAgICAgICAgcnVsZXNbaV0uZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgICAgICB9CiAgICAgICAgICBvdXRwdXQuYWRkKCd9Jyk7CiAgICAgICAgICBjb250ZXh0LnRhYkxldmVsLS07CiAgICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgLy8gTm9uLWNvbXByZXNzZWQKICAgICAgdmFyIHRhYlNldFN0ciA9ICJcbiIgKyBBcnJheShjb250ZXh0LnRhYkxldmVsKS5qb2luKCcgICcpOwogICAgICB2YXIgdGFiUnVsZVN0ciA9IHRhYlNldFN0ciArICIgICI7CiAgICAgIGlmICghcnVsZUNudCkgewogICAgICAgICAgb3V0cHV0LmFkZCgiIHsiICsgdGFiU2V0U3RyICsgIn0iKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIG91dHB1dC5hZGQoIiB7IiArIHRhYlJ1bGVTdHIpOwogICAgICAgICAgcnVsZXNbMF0uZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgcnVsZUNudDsgaSsrKSB7CiAgICAgICAgICAgICAgb3V0cHV0LmFkZCh0YWJSdWxlU3RyKTsKICAgICAgICAgICAgICBydWxlc1tpXS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgICAgIH0KICAgICAgICAgIG91dHB1dC5hZGQodGFiU2V0U3RyICsgIn0iKTsKICAgICAgfQogICAgICBjb250ZXh0LnRhYkxldmVsLS07CiAgfTsKICBBdFJ1bGUucHJvdG90eXBlLnR5cGUgPSAnQXRSdWxlJzsKCiAgdmFyIERldGFjaGVkUnVsZXNldCA9IGZ1bmN0aW9uIChydWxlc2V0LCBmcmFtZXMpIHsKICAgICAgdGhpcy5ydWxlc2V0ID0gcnVsZXNldDsKICAgICAgdGhpcy5mcmFtZXMgPSBmcmFtZXM7CiAgICAgIHRoaXMuc2V0UGFyZW50KHRoaXMucnVsZXNldCwgdGhpcyk7CiAgfTsKICBEZXRhY2hlZFJ1bGVzZXQucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBEZXRhY2hlZFJ1bGVzZXQucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIHRoaXMucnVsZXNldCA9IHZpc2l0b3IudmlzaXQodGhpcy5ydWxlc2V0KTsKICB9OwogIERldGFjaGVkUnVsZXNldC5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciBmcmFtZXMgPSB0aGlzLmZyYW1lcyB8fCBjb3B5QXJyYXkoY29udGV4dC5mcmFtZXMpOwogICAgICByZXR1cm4gbmV3IERldGFjaGVkUnVsZXNldCh0aGlzLnJ1bGVzZXQsIGZyYW1lcyk7CiAgfTsKICBEZXRhY2hlZFJ1bGVzZXQucHJvdG90eXBlLmNhbGxFdmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgcmV0dXJuIHRoaXMucnVsZXNldC5ldmFsKHRoaXMuZnJhbWVzID8gbmV3IGNvbnRleHRzLkV2YWwoY29udGV4dCwgdGhpcy5mcmFtZXMuY29uY2F0KGNvbnRleHQuZnJhbWVzKSkgOiBjb250ZXh0KTsKICB9OwogIERldGFjaGVkUnVsZXNldC5wcm90b3R5cGUudHlwZSA9ICdEZXRhY2hlZFJ1bGVzZXQnOwogIERldGFjaGVkUnVsZXNldC5wcm90b3R5cGUuZXZhbEZpcnN0ID0gdHJ1ZTsKCiAgdmFyIFVuaXQgPSBmdW5jdGlvbiAobnVtZXJhdG9yLCBkZW5vbWluYXRvciwgYmFja3VwVW5pdCkgewogICAgICB0aGlzLm51bWVyYXRvciA9IG51bWVyYXRvciA/IGNvcHlBcnJheShudW1lcmF0b3IpLnNvcnQoKSA6IFtdOwogICAgICB0aGlzLmRlbm9taW5hdG9yID0gZGVub21pbmF0b3IgPyBjb3B5QXJyYXkoZGVub21pbmF0b3IpLnNvcnQoKSA6IFtdOwogICAgICBpZiAoYmFja3VwVW5pdCkgewogICAgICAgICAgdGhpcy5iYWNrdXBVbml0ID0gYmFja3VwVW5pdDsKICAgICAgfQogICAgICBlbHNlIGlmIChudW1lcmF0b3IgJiYgbnVtZXJhdG9yLmxlbmd0aCkgewogICAgICAgICAgdGhpcy5iYWNrdXBVbml0ID0gbnVtZXJhdG9yWzBdOwogICAgICB9CiAgfTsKICBVbml0LnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgVW5pdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiBuZXcgVW5pdChjb3B5QXJyYXkodGhpcy5udW1lcmF0b3IpLCBjb3B5QXJyYXkodGhpcy5kZW5vbWluYXRvciksIHRoaXMuYmFja3VwVW5pdCk7CiAgfTsKICBVbml0LnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIC8vIERpbWVuc2lvbiBjaGVja3MgdGhlIHVuaXQgaXMgc2luZ3VsYXIgYW5kIHRocm93cyBhbiBlcnJvciBpZiBpbiBzdHJpY3QgbWF0aCBtb2RlLgogICAgICB2YXIgc3RyaWN0VW5pdHMgPSBjb250ZXh0ICYmIGNvbnRleHQuc3RyaWN0VW5pdHM7CiAgICAgIGlmICh0aGlzLm51bWVyYXRvci5sZW5ndGggPT09IDEpIHsKICAgICAgICAgIG91dHB1dC5hZGQodGhpcy5udW1lcmF0b3JbMF0pOyAvLyB0aGUgaWRlYWwgc2l0dWF0aW9uCiAgICAgIH0KICAgICAgZWxzZSBpZiAoIXN0cmljdFVuaXRzICYmIHRoaXMuYmFja3VwVW5pdCkgewogICAgICAgICAgb3V0cHV0LmFkZCh0aGlzLmJhY2t1cFVuaXQpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKCFzdHJpY3RVbml0cyAmJiB0aGlzLmRlbm9taW5hdG9yLmxlbmd0aCkgewogICAgICAgICAgb3V0cHV0LmFkZCh0aGlzLmRlbm9taW5hdG9yWzBdKTsKICAgICAgfQogIH07CiAgVW5pdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBpOwogICAgICB2YXIgcmV0dXJuU3RyID0gdGhpcy5udW1lcmF0b3Iuam9pbignKicpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5kZW5vbWluYXRvci5sZW5ndGg7IGkrKykgewogICAgICAgICAgcmV0dXJuU3RyICs9ICIvIiArIHRoaXMuZGVub21pbmF0b3JbaV07CiAgICAgIH0KICAgICAgcmV0dXJuIHJldHVyblN0cjsKICB9OwogIFVuaXQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAob3RoZXIpIHsKICAgICAgcmV0dXJuIHRoaXMuaXMob3RoZXIudG9TdHJpbmcoKSkgPyAwIDogdW5kZWZpbmVkOwogIH07CiAgVW5pdC5wcm90b3R5cGUuaXMgPSBmdW5jdGlvbiAodW5pdFN0cmluZykgewogICAgICByZXR1cm4gdGhpcy50b1N0cmluZygpLnRvVXBwZXJDYXNlKCkgPT09IHVuaXRTdHJpbmcudG9VcHBlckNhc2UoKTsKICB9OwogIFVuaXQucHJvdG90eXBlLmlzTGVuZ3RoID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gUmVnRXhwKCdeKHB4fGVtfGV4fGNofHJlbXxpbnxjbXxtbXxwY3xwdHxleHx2d3x2aHx2bWlufHZtYXgpJCcsICdnaScpLnRlc3QodGhpcy50b0NTUygpKTsKICB9OwogIFVuaXQucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiB0aGlzLm51bWVyYXRvci5sZW5ndGggPT09IDAgJiYgdGhpcy5kZW5vbWluYXRvci5sZW5ndGggPT09IDA7CiAgfTsKICBVbml0LnByb3RvdHlwZS5pc1Npbmd1bGFyID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gdGhpcy5udW1lcmF0b3IubGVuZ3RoIDw9IDEgJiYgdGhpcy5kZW5vbWluYXRvci5sZW5ndGggPT09IDA7CiAgfTsKICBVbml0LnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgICAgdmFyIGk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLm51bWVyYXRvci5sZW5ndGg7IGkrKykgewogICAgICAgICAgdGhpcy5udW1lcmF0b3JbaV0gPSBjYWxsYmFjayh0aGlzLm51bWVyYXRvcltpXSwgZmFsc2UpOwogICAgICB9CiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmRlbm9taW5hdG9yLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB0aGlzLmRlbm9taW5hdG9yW2ldID0gY2FsbGJhY2sodGhpcy5kZW5vbWluYXRvcltpXSwgdHJ1ZSk7CiAgICAgIH0KICB9OwogIFVuaXQucHJvdG90eXBlLnVzZWRVbml0cyA9IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIGdyb3VwOwogICAgICB2YXIgcmVzdWx0ID0ge307CiAgICAgIHZhciBtYXBVbml0OwogICAgICB2YXIgZ3JvdXBOYW1lOwogICAgICBtYXBVbml0ID0gZnVuY3Rpb24gKGF0b21pY1VuaXQpIHsKICAgICAgICAgIC8qIGpzaGludCBsb29wZnVuYzp0cnVlICovCiAgICAgICAgICBpZiAoZ3JvdXAuaGFzT3duUHJvcGVydHkoYXRvbWljVW5pdCkgJiYgIXJlc3VsdFtncm91cE5hbWVdKSB7CiAgICAgICAgICAgICAgcmVzdWx0W2dyb3VwTmFtZV0gPSBhdG9taWNVbml0OwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGF0b21pY1VuaXQ7CiAgICAgIH07CiAgICAgIGZvciAoZ3JvdXBOYW1lIGluIHVuaXRDb252ZXJzaW9ucykgewogICAgICAgICAgaWYgKHVuaXRDb252ZXJzaW9ucy5oYXNPd25Qcm9wZXJ0eShncm91cE5hbWUpKSB7CiAgICAgICAgICAgICAgZ3JvdXAgPSB1bml0Q29udmVyc2lvbnNbZ3JvdXBOYW1lXTsKICAgICAgICAgICAgICB0aGlzLm1hcChtYXBVbml0KTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogIH07CiAgVW5pdC5wcm90b3R5cGUuY2FuY2VsID0gZnVuY3Rpb24gKCkgewogICAgICB2YXIgY291bnRlciA9IHt9OwogICAgICB2YXIgYXRvbWljVW5pdDsKICAgICAgdmFyIGk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLm51bWVyYXRvci5sZW5ndGg7IGkrKykgewogICAgICAgICAgYXRvbWljVW5pdCA9IHRoaXMubnVtZXJhdG9yW2ldOwogICAgICAgICAgY291bnRlclthdG9taWNVbml0XSA9IChjb3VudGVyW2F0b21pY1VuaXRdIHx8IDApICsgMTsKICAgICAgfQogICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5kZW5vbWluYXRvci5sZW5ndGg7IGkrKykgewogICAgICAgICAgYXRvbWljVW5pdCA9IHRoaXMuZGVub21pbmF0b3JbaV07CiAgICAgICAgICBjb3VudGVyW2F0b21pY1VuaXRdID0gKGNvdW50ZXJbYXRvbWljVW5pdF0gfHwgMCkgLSAxOwogICAgICB9CiAgICAgIHRoaXMubnVtZXJhdG9yID0gW107CiAgICAgIHRoaXMuZGVub21pbmF0b3IgPSBbXTsKICAgICAgZm9yIChhdG9taWNVbml0IGluIGNvdW50ZXIpIHsKICAgICAgICAgIGlmIChjb3VudGVyLmhhc093blByb3BlcnR5KGF0b21pY1VuaXQpKSB7CiAgICAgICAgICAgICAgdmFyIGNvdW50ID0gY291bnRlclthdG9taWNVbml0XTsKICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWVyYXRvci5wdXNoKGF0b21pY1VuaXQpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50IDwgMCkgewogICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgLWNvdW50OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVub21pbmF0b3IucHVzaChhdG9taWNVbml0KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLm51bWVyYXRvci5zb3J0KCk7CiAgICAgIHRoaXMuZGVub21pbmF0b3Iuc29ydCgpOwogIH07CiAgVW5pdC5wcm90b3R5cGUudHlwZSA9ICdVbml0JzsKCiAgLy8KICAvLyBBIG51bWJlciB3aXRoIGEgdW5pdAogIC8vCiAgdmFyIERpbWVuc2lvbiA9IGZ1bmN0aW9uICh2YWx1ZSwgdW5pdCkgewogICAgICB0aGlzLnZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7CiAgICAgIGlmIChpc05hTih0aGlzLnZhbHVlKSkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaW1lbnNpb24gaXMgbm90IGEgbnVtYmVyLicpOwogICAgICB9CiAgICAgIHRoaXMudW5pdCA9ICh1bml0ICYmIHVuaXQgaW5zdGFuY2VvZiBVbml0KSA/IHVuaXQgOgogICAgICAgICAgbmV3IFVuaXQodW5pdCA/IFt1bml0XSA6IHVuZGVmaW5lZCk7CiAgICAgIHRoaXMuc2V0UGFyZW50KHRoaXMudW5pdCwgdGhpcyk7CiAgfTsKICBEaW1lbnNpb24ucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBEaW1lbnNpb24ucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIHRoaXMudW5pdCA9IHZpc2l0b3IudmlzaXQodGhpcy51bml0KTsKICB9OwogIERpbWVuc2lvbi5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHJldHVybiB0aGlzOwogIH07CiAgRGltZW5zaW9uLnByb3RvdHlwZS50b0NvbG9yID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gbmV3IENvbG9yKFt0aGlzLnZhbHVlLCB0aGlzLnZhbHVlLCB0aGlzLnZhbHVlXSk7CiAgfTsKICBEaW1lbnNpb24ucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgICAgaWYgKChjb250ZXh0ICYmIGNvbnRleHQuc3RyaWN0VW5pdHMpICYmICF0aGlzLnVuaXQuaXNTaW5ndWxhcigpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk11bHRpcGxlIHVuaXRzIGluIGRpbWVuc2lvbi4gQ29ycmVjdCB0aGUgdW5pdHMgb3IgdXNlIHRoZSB1bml0IGZ1bmN0aW9uLiBCYWQgdW5pdDogIiArIHRoaXMudW5pdC50b1N0cmluZygpKTsKICAgICAgfQogICAgICB2YXIgdmFsdWUgPSB0aGlzLmZyb3VuZChjb250ZXh0LCB0aGlzLnZhbHVlKTsKICAgICAgdmFyIHN0clZhbHVlID0gU3RyaW5nKHZhbHVlKTsKICAgICAgaWYgKHZhbHVlICE9PSAwICYmIHZhbHVlIDwgMC4wMDAwMDEgJiYgdmFsdWUgPiAtMC4wMDAwMDEpIHsKICAgICAgICAgIC8vIHdvdWxkIGJlIG91dHB1dCAxZS02IGV0Yy4KICAgICAgICAgIHN0clZhbHVlID0gdmFsdWUudG9GaXhlZCgyMCkucmVwbGFjZSgvMCskLywgJycpOwogICAgICB9CiAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuY29tcHJlc3MpIHsKICAgICAgICAgIC8vIFplcm8gdmFsdWVzIGRvZXNuJ3QgbmVlZCBhIHVuaXQKICAgICAgICAgIGlmICh2YWx1ZSA9PT0gMCAmJiB0aGlzLnVuaXQuaXNMZW5ndGgoKSkgewogICAgICAgICAgICAgIG91dHB1dC5hZGQoc3RyVmFsdWUpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIC8vIEZsb2F0IHZhbHVlcyBkb2Vzbid0IG5lZWQgYSBsZWFkaW5nIHplcm8KICAgICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAxKSB7CiAgICAgICAgICAgICAgc3RyVmFsdWUgPSAoc3RyVmFsdWUpLnN1YnN0cigxKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBvdXRwdXQuYWRkKHN0clZhbHVlKTsKICAgICAgdGhpcy51bml0LmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogIH07CiAgLy8gSW4gYW4gb3BlcmF0aW9uIGJldHdlZW4gdHdvIERpbWVuc2lvbnMsCiAgLy8gd2UgZGVmYXVsdCB0byB0aGUgZmlyc3QgRGltZW5zaW9uJ3MgdW5pdCwKICAvLyBzbyBgMXB4ICsgMmAgd2lsbCB5aWVsZCBgM3B4YC4KICBEaW1lbnNpb24ucHJvdG90eXBlLm9wZXJhdGUgPSBmdW5jdGlvbiAoY29udGV4dCwgb3AsIG90aGVyKSB7CiAgICAgIC8qIGpzaGludCBub2VtcHR5OmZhbHNlICovCiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX29wZXJhdGUoY29udGV4dCwgb3AsIHRoaXMudmFsdWUsIG90aGVyLnZhbHVlKTsKICAgICAgdmFyIHVuaXQgPSB0aGlzLnVuaXQuY2xvbmUoKTsKICAgICAgaWYgKG9wID09PSAnKycgfHwgb3AgPT09ICctJykgewogICAgICAgICAgaWYgKHVuaXQubnVtZXJhdG9yLmxlbmd0aCA9PT0gMCAmJiB1bml0LmRlbm9taW5hdG9yLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgIHVuaXQgPSBvdGhlci51bml0LmNsb25lKCk7CiAgICAgICAgICAgICAgaWYgKHRoaXMudW5pdC5iYWNrdXBVbml0KSB7CiAgICAgICAgICAgICAgICAgIHVuaXQuYmFja3VwVW5pdCA9IHRoaXMudW5pdC5iYWNrdXBVbml0OwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKG90aGVyLnVuaXQubnVtZXJhdG9yLmxlbmd0aCA9PT0gMCAmJiB1bml0LmRlbm9taW5hdG9yLmxlbmd0aCA9PT0gMCkgOwogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgb3RoZXIgPSBvdGhlci5jb252ZXJ0VG8odGhpcy51bml0LnVzZWRVbml0cygpKTsKICAgICAgICAgICAgICBpZiAoY29udGV4dC5zdHJpY3RVbml0cyAmJiBvdGhlci51bml0LnRvU3RyaW5nKCkgIT09IHVuaXQudG9TdHJpbmcoKSkgewogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkluY29tcGF0aWJsZSB1bml0cy4gQ2hhbmdlIHRoZSB1bml0cyBvciB1c2UgdGhlIHVuaXQgZnVuY3Rpb24uICIgKwogICAgICAgICAgICAgICAgICAgICAgKCJCYWQgdW5pdHM6ICciICsgdW5pdC50b1N0cmluZygpICsgIicgYW5kICciICsgb3RoZXIudW5pdC50b1N0cmluZygpICsgIicuIikpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX29wZXJhdGUoY29udGV4dCwgb3AsIHRoaXMudmFsdWUsIG90aGVyLnZhbHVlKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmIChvcCA9PT0gJyonKSB7CiAgICAgICAgICB1bml0Lm51bWVyYXRvciA9IHVuaXQubnVtZXJhdG9yLmNvbmNhdChvdGhlci51bml0Lm51bWVyYXRvcikuc29ydCgpOwogICAgICAgICAgdW5pdC5kZW5vbWluYXRvciA9IHVuaXQuZGVub21pbmF0b3IuY29uY2F0KG90aGVyLnVuaXQuZGVub21pbmF0b3IpLnNvcnQoKTsKICAgICAgICAgIHVuaXQuY2FuY2VsKCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAob3AgPT09ICcvJykgewogICAgICAgICAgdW5pdC5udW1lcmF0b3IgPSB1bml0Lm51bWVyYXRvci5jb25jYXQob3RoZXIudW5pdC5kZW5vbWluYXRvcikuc29ydCgpOwogICAgICAgICAgdW5pdC5kZW5vbWluYXRvciA9IHVuaXQuZGVub21pbmF0b3IuY29uY2F0KG90aGVyLnVuaXQubnVtZXJhdG9yKS5zb3J0KCk7CiAgICAgICAgICB1bml0LmNhbmNlbCgpOwogICAgICB9CiAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKHZhbHVlLCB1bml0KTsKICB9OwogIERpbWVuc2lvbi5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChvdGhlcikgewogICAgICB2YXIgYTsKICAgICAgdmFyIGI7CiAgICAgIGlmICghKG90aGVyIGluc3RhbmNlb2YgRGltZW5zaW9uKSkgewogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQogICAgICBpZiAodGhpcy51bml0LmlzRW1wdHkoKSB8fCBvdGhlci51bml0LmlzRW1wdHkoKSkgewogICAgICAgICAgYSA9IHRoaXM7CiAgICAgICAgICBiID0gb3RoZXI7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICBhID0gdGhpcy51bmlmeSgpOwogICAgICAgICAgYiA9IG90aGVyLnVuaWZ5KCk7CiAgICAgICAgICBpZiAoYS51bml0LmNvbXBhcmUoYi51bml0KSAhPT0gMCkgewogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIE5vZGUubnVtZXJpY0NvbXBhcmUoYS52YWx1ZSwgYi52YWx1ZSk7CiAgfTsKICBEaW1lbnNpb24ucHJvdG90eXBlLnVuaWZ5ID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG8oeyBsZW5ndGg6ICdweCcsIGR1cmF0aW9uOiAncycsIGFuZ2xlOiAncmFkJyB9KTsKICB9OwogIERpbWVuc2lvbi5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gKGNvbnZlcnNpb25zKSB7CiAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7CiAgICAgIHZhciB1bml0ID0gdGhpcy51bml0LmNsb25lKCk7CiAgICAgIHZhciBpOwogICAgICB2YXIgZ3JvdXBOYW1lOwogICAgICB2YXIgZ3JvdXA7CiAgICAgIHZhciB0YXJnZXRVbml0OwogICAgICB2YXIgZGVyaXZlZENvbnZlcnNpb25zID0ge307CiAgICAgIHZhciBhcHBseVVuaXQ7CiAgICAgIGlmICh0eXBlb2YgY29udmVyc2lvbnMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICBmb3IgKGkgaW4gdW5pdENvbnZlcnNpb25zKSB7CiAgICAgICAgICAgICAgaWYgKHVuaXRDb252ZXJzaW9uc1tpXS5oYXNPd25Qcm9wZXJ0eShjb252ZXJzaW9ucykpIHsKICAgICAgICAgICAgICAgICAgZGVyaXZlZENvbnZlcnNpb25zID0ge307CiAgICAgICAgICAgICAgICAgIGRlcml2ZWRDb252ZXJzaW9uc1tpXSA9IGNvbnZlcnNpb25zOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGNvbnZlcnNpb25zID0gZGVyaXZlZENvbnZlcnNpb25zOwogICAgICB9CiAgICAgIGFwcGx5VW5pdCA9IGZ1bmN0aW9uIChhdG9taWNVbml0LCBkZW5vbWluYXRvcikgewogICAgICAgICAgLyoganNoaW50IGxvb3BmdW5jOnRydWUgKi8KICAgICAgICAgIGlmIChncm91cC5oYXNPd25Qcm9wZXJ0eShhdG9taWNVbml0KSkgewogICAgICAgICAgICAgIGlmIChkZW5vbWluYXRvcikgewogICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIC8gKGdyb3VwW2F0b21pY1VuaXRdIC8gZ3JvdXBbdGFyZ2V0VW5pdF0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIChncm91cFthdG9taWNVbml0XSAvIGdyb3VwW3RhcmdldFVuaXRdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFVuaXQ7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYXRvbWljVW5pdDsKICAgICAgfTsKICAgICAgZm9yIChncm91cE5hbWUgaW4gY29udmVyc2lvbnMpIHsKICAgICAgICAgIGlmIChjb252ZXJzaW9ucy5oYXNPd25Qcm9wZXJ0eShncm91cE5hbWUpKSB7CiAgICAgICAgICAgICAgdGFyZ2V0VW5pdCA9IGNvbnZlcnNpb25zW2dyb3VwTmFtZV07CiAgICAgICAgICAgICAgZ3JvdXAgPSB1bml0Q29udmVyc2lvbnNbZ3JvdXBOYW1lXTsKICAgICAgICAgICAgICB1bml0Lm1hcChhcHBseVVuaXQpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIHVuaXQuY2FuY2VsKCk7CiAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKHZhbHVlLCB1bml0KTsKICB9OwogIERpbWVuc2lvbi5wcm90b3R5cGUudHlwZSA9ICdEaW1lbnNpb24nOwoKICB2YXIgTUFUSCQxID0gTWF0aCQxOwogIHZhciBPcGVyYXRpb24gPSBmdW5jdGlvbiAob3AsIG9wZXJhbmRzLCBpc1NwYWNlZCkgewogICAgICB0aGlzLm9wID0gb3AudHJpbSgpOwogICAgICB0aGlzLm9wZXJhbmRzID0gb3BlcmFuZHM7CiAgICAgIHRoaXMuaXNTcGFjZWQgPSBpc1NwYWNlZDsKICB9OwogIE9wZXJhdGlvbi5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIE9wZXJhdGlvbi5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgICAgdGhpcy5vcGVyYW5kcyA9IHZpc2l0b3IudmlzaXRBcnJheSh0aGlzLm9wZXJhbmRzKTsKICB9OwogIE9wZXJhdGlvbi5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciBhID0gdGhpcy5vcGVyYW5kc1swXS5ldmFsKGNvbnRleHQpOwogICAgICB2YXIgYiA9IHRoaXMub3BlcmFuZHNbMV0uZXZhbChjb250ZXh0KTsKICAgICAgdmFyIG9wOwogICAgICBpZiAoY29udGV4dC5pc01hdGhPbih0aGlzLm9wKSkgewogICAgICAgICAgb3AgPSB0aGlzLm9wID09PSAnLi8nID8gJy8nIDogdGhpcy5vcDsKICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgRGltZW5zaW9uICYmIGIgaW5zdGFuY2VvZiBDb2xvcikgewogICAgICAgICAgICAgIGEgPSBhLnRvQ29sb3IoKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChiIGluc3RhbmNlb2YgRGltZW5zaW9uICYmIGEgaW5zdGFuY2VvZiBDb2xvcikgewogICAgICAgICAgICAgIGIgPSBiLnRvQ29sb3IoKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICghYS5vcGVyYXRlKSB7CiAgICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBPcGVyYXRpb24gJiYgYS5vcCA9PT0gJy8nICYmIGNvbnRleHQubWF0aCA9PT0gTUFUSCQxLlBBUkVOU19ESVZJU0lPTikgewogICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9wZXJhdGlvbih0aGlzLm9wLCBbYSwgYl0sIHRoaXMuaXNTcGFjZWQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnT3BlcmF0aW9uIG9uIGFuIGludmFsaWQgdHlwZScgfTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBhLm9wZXJhdGUoY29udGV4dCwgb3AsIGIpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgcmV0dXJuIG5ldyBPcGVyYXRpb24odGhpcy5vcCwgW2EsIGJdLCB0aGlzLmlzU3BhY2VkKTsKICAgICAgfQogIH07CiAgT3BlcmF0aW9uLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIHRoaXMub3BlcmFuZHNbMF0uZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgIGlmICh0aGlzLmlzU3BhY2VkKSB7CiAgICAgICAgICBvdXRwdXQuYWRkKCcgJyk7CiAgICAgIH0KICAgICAgb3V0cHV0LmFkZCh0aGlzLm9wKTsKICAgICAgaWYgKHRoaXMuaXNTcGFjZWQpIHsKICAgICAgICAgIG91dHB1dC5hZGQoJyAnKTsKICAgICAgfQogICAgICB0aGlzLm9wZXJhbmRzWzFdLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogIH07CiAgT3BlcmF0aW9uLnByb3RvdHlwZS50eXBlID0gJ09wZXJhdGlvbic7CgogIHZhciBNQVRIJDIgPSBNYXRoJDE7CiAgdmFyIEV4cHJlc3Npb24gPSBmdW5jdGlvbiAodmFsdWUsIG5vU3BhY2luZykgewogICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CiAgICAgIHRoaXMubm9TcGFjaW5nID0gbm9TcGFjaW5nOwogICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cHJlc3Npb24gcmVxdWlyZXMgYW4gYXJyYXkgcGFyYW1ldGVyJyk7CiAgICAgIH0KICB9OwogIEV4cHJlc3Npb24ucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBFeHByZXNzaW9uLnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgICB0aGlzLnZhbHVlID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMudmFsdWUpOwogIH07CiAgRXhwcmVzc2lvbi5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciByZXR1cm5WYWx1ZTsKICAgICAgdmFyIG1hdGhPbiA9IGNvbnRleHQuaXNNYXRoT24oKTsKICAgICAgdmFyIGluUGFyZW50aGVzaXMgPSB0aGlzLnBhcmVucyAmJgogICAgICAgICAgKGNvbnRleHQubWF0aCAhPT0gTUFUSCQyLlNUUklDVF9MRUdBQ1kgfHwgIXRoaXMucGFyZW5zSW5PcCk7CiAgICAgIHZhciBkb3VibGVQYXJlbiA9IGZhbHNlOwogICAgICBpZiAoaW5QYXJlbnRoZXNpcykgewogICAgICAgICAgY29udGV4dC5pblBhcmVudGhlc2lzKCk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMSkgewogICAgICAgICAgcmV0dXJuVmFsdWUgPSBuZXcgRXhwcmVzc2lvbih0aGlzLnZhbHVlLm1hcChmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgIGlmICghZS5ldmFsKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gZS5ldmFsKGNvbnRleHQpOwogICAgICAgICAgfSksIHRoaXMubm9TcGFjaW5nKTsKICAgICAgfQogICAgICBlbHNlIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgaWYgKHRoaXMudmFsdWVbMF0ucGFyZW5zICYmICF0aGlzLnZhbHVlWzBdLnBhcmVuc0luT3AgJiYgIWNvbnRleHQuaW5DYWxjKSB7CiAgICAgICAgICAgICAgZG91YmxlUGFyZW4gPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuVmFsdWUgPSB0aGlzLnZhbHVlWzBdLmV2YWwoY29udGV4dCk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRoaXM7CiAgICAgIH0KICAgICAgaWYgKGluUGFyZW50aGVzaXMpIHsKICAgICAgICAgIGNvbnRleHQub3V0T2ZQYXJlbnRoZXNpcygpOwogICAgICB9CiAgICAgIGlmICh0aGlzLnBhcmVucyAmJiB0aGlzLnBhcmVuc0luT3AgJiYgIW1hdGhPbiAmJiAhZG91YmxlUGFyZW4KICAgICAgICAgICYmICghKHJldHVyblZhbHVlIGluc3RhbmNlb2YgRGltZW5zaW9uKSkpIHsKICAgICAgICAgIHJldHVyblZhbHVlID0gbmV3IFBhcmVuKHJldHVyblZhbHVlKTsKICAgICAgfQogICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgfTsKICBFeHByZXNzaW9uLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy52YWx1ZS5sZW5ndGg7IGkrKykgewogICAgICAgICAgdGhpcy52YWx1ZVtpXS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgICAgIGlmICghdGhpcy5ub1NwYWNpbmcgJiYgaSArIDEgPCB0aGlzLnZhbHVlLmxlbmd0aCkgewogICAgICAgICAgICAgIG91dHB1dC5hZGQoJyAnKTsKICAgICAgICAgIH0KICAgICAgfQogIH07CiAgRXhwcmVzc2lvbi5wcm90b3R5cGUudGhyb3dBd2F5Q29tbWVudHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gISh2IGluc3RhbmNlb2YgQ29tbWVudCk7IH0pOwogIH07CiAgRXhwcmVzc2lvbi5wcm90b3R5cGUudHlwZSA9ICdFeHByZXNzaW9uJzsKCiAgdmFyIGZ1bmN0aW9uQ2FsbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBmdW5jdGlvbkNhbGxlcihuYW1lLCBjb250ZXh0LCBpbmRleCwgY3VycmVudEZpbGVJbmZvKSB7CiAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OwogICAgICAgICAgdGhpcy5jdXJyZW50RmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm87CiAgICAgICAgICB0aGlzLmZ1bmMgPSBjb250ZXh0LmZyYW1lc1swXS5mdW5jdGlvblJlZ2lzdHJ5LmdldCh0aGlzLm5hbWUpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uQ2FsbGVyLnByb3RvdHlwZS5pc1ZhbGlkID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5mdW5jKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb25DYWxsZXIucHJvdG90eXBlLmNhbGwgPSBmdW5jdGlvbiAoYXJncykgewogICAgICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgICAgIHZhciBldmFsQXJncyA9IHRoaXMuZnVuYy5ldmFsQXJnczsKICAgICAgICAgIGlmIChldmFsQXJncyAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICBhcmdzID0gYXJncy5tYXAoZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGEuZXZhbChfdGhpcy5jb250ZXh0KTsgfSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBUaGlzIGNvZGUgaXMgdGVycmlibGUgYW5kIHNob3VsZCBiZSByZXBsYWNlZCBhcyBwZXIgdGhpcyBpc3N1ZS4uLgogICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMjQ3NwogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJncykpIHsKICAgICAgICAgICAgICBhcmdzID0gYXJncy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ0NvbW1lbnQnKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnRXhwcmVzc2lvbicpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBzdWJOb2RlcyA9IGl0ZW0udmFsdWUuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ0NvbW1lbnQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJOb2Rlcy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ViTm9kZXNbMF07CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEV4cHJlc3Npb24oc3ViTm9kZXMpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGV2YWxBcmdzID09PSBmYWxzZSkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZ1bmMuYXBwbHkodGhpcywgX19zcHJlYWRBcnJheXMoW3RoaXMuY29udGV4dF0sIGFyZ3MpKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0aGlzLmZ1bmMuYXBwbHkodGhpcywgYXJncyk7CiAgICAgIH07CiAgICAgIHJldHVybiBmdW5jdGlvbkNhbGxlcjsKICB9KCkpOwoKICAvLwogIC8vIEEgZnVuY3Rpb24gY2FsbCBub2RlLgogIC8vCiAgdmFyIENhbGwgPSBmdW5jdGlvbiAobmFtZSwgYXJncywgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbykgewogICAgICB0aGlzLm5hbWUgPSBuYW1lOwogICAgICB0aGlzLmFyZ3MgPSBhcmdzOwogICAgICB0aGlzLmNhbGMgPSBuYW1lID09PSAnY2FsYyc7CiAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CiAgICAgIHRoaXMuX2ZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogIH07CiAgQ2FsbC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIENhbGwucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIGlmICh0aGlzLmFyZ3MpIHsKICAgICAgICAgIHRoaXMuYXJncyA9IHZpc2l0b3IudmlzaXRBcnJheSh0aGlzLmFyZ3MpOwogICAgICB9CiAgfTsKICAvLwogIC8vIFdoZW4gZXZhbHVhdGluZyBhIGZ1bmN0aW9uIGNhbGwsCiAgLy8gd2UgZWl0aGVyIGZpbmQgdGhlIGZ1bmN0aW9uIGluIHRoZSBmdW5jdGlvblJlZ2lzdHJ5LAogIC8vIGluIHdoaWNoIGNhc2Ugd2UgY2FsbCBpdCwgcGFzc2luZyB0aGUgIGV2YWx1YXRlZCBhcmd1bWVudHMsCiAgLy8gaWYgdGhpcyByZXR1cm5zIG51bGwgb3Igd2UgY2Fubm90IGZpbmQgdGhlIGZ1bmN0aW9uLCB3ZQogIC8vIHNpbXBseSBwcmludCBpdCBvdXQgYXMgaXQgYXBwZWFyZWQgb3JpZ2luYWxseSBbMl0uCiAgLy8KICAvLyBUaGUgcmVhc29uIHdoeSB3ZSBldmFsdWF0ZSB0aGUgYXJndW1lbnRzLCBpcyBpbiB0aGUgY2FzZSB3aGVyZQogIC8vIHdlIHRyeSB0byBwYXNzIGEgdmFyaWFibGUgdG8gYSBmdW5jdGlvbiwgbGlrZTogYHNhdHVyYXRlKEBjb2xvcilgLgogIC8vIFRoZSBmdW5jdGlvbiBzaG91bGQgcmVjZWl2ZSB0aGUgdmFsdWUsIG5vdCB0aGUgdmFyaWFibGUuCiAgLy8KICBDYWxsLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgLyoqCiAgICAgICAqIFR1cm4gb2ZmIG1hdGggZm9yIGNhbGMoKSwgYW5kIHN3aXRjaCBiYWNrIG9uIGZvciBldmFsdWF0aW5nIG5lc3RlZCBmdW5jdGlvbnMKICAgICAgICovCiAgICAgIHZhciBjdXJyZW50TWF0aENvbnRleHQgPSBjb250ZXh0Lm1hdGhPbjsKICAgICAgY29udGV4dC5tYXRoT24gPSAhdGhpcy5jYWxjOwogICAgICBpZiAodGhpcy5jYWxjIHx8IGNvbnRleHQuaW5DYWxjKSB7CiAgICAgICAgICBjb250ZXh0LmVudGVyQ2FsYygpOwogICAgICB9CiAgICAgIHZhciBleGl0Q2FsYyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmIChfdGhpcy5jYWxjIHx8IGNvbnRleHQuaW5DYWxjKSB7CiAgICAgICAgICAgICAgY29udGV4dC5leGl0Q2FsYygpOwogICAgICAgICAgfQogICAgICAgICAgY29udGV4dC5tYXRoT24gPSBjdXJyZW50TWF0aENvbnRleHQ7CiAgICAgIH07CiAgICAgIHZhciByZXN1bHQ7CiAgICAgIHZhciBmdW5jQ2FsbGVyID0gbmV3IGZ1bmN0aW9uQ2FsbGVyKHRoaXMubmFtZSwgY29udGV4dCwgdGhpcy5nZXRJbmRleCgpLCB0aGlzLmZpbGVJbmZvKCkpOwogICAgICBpZiAoZnVuY0NhbGxlci5pc1ZhbGlkKCkpIHsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzdWx0ID0gZnVuY0NhbGxlci5jYWxsKHRoaXMuYXJncyk7CiAgICAgICAgICAgICAgZXhpdENhbGMoKTsKICAgICAgICAgIH0KICAgICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgaWYgKGUuaGFzT3duUHJvcGVydHkoJ2xpbmUnKSAmJiBlLmhhc093blByb3BlcnR5KCdjb2x1bW4nKSkgewogICAgICAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aHJvdyB7CiAgICAgICAgICAgICAgICAgIHR5cGU6IGUudHlwZSB8fCAnUnVudGltZScsCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJlcnJvciBldmFsdWF0aW5nIGZ1bmN0aW9uIGAiICsgdGhpcy5uYW1lICsgImAiICsgKGUubWVzc2FnZSA/ICI6ICIgKyBlLm1lc3NhZ2UgOiAnJyksCiAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmdldEluZGV4KCksCiAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLmZpbGVJbmZvKCkuZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgIGxpbmU6IGUubGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgY29sdW1uOiBlLmNvbHVtbk51bWJlcgogICAgICAgICAgICAgIH07CiAgICAgICAgICB9CiAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmIHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgLy8gUmVzdWx0cyB0aGF0IHRoYXQgYXJlIG5vdCBub2RlcyBhcmUgY2FzdCBhcyBBbm9ueW1vdXMgbm9kZXMKICAgICAgICAgICAgICAvLyBGYWxzeSB2YWx1ZXMgb3IgYm9vbGVhbnMgYXJlIHJldHVybmVkIGFzIGVtcHR5IG5vZGVzCiAgICAgICAgICAgICAgaWYgKCEocmVzdWx0IGluc3RhbmNlb2YgTm9kZSkpIHsKICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgQW5vbnltb3VzKG51bGwpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IEFub255bW91cyhyZXN1bHQudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmVzdWx0Ll9pbmRleCA9IHRoaXMuX2luZGV4OwogICAgICAgICAgICAgIHJlc3VsdC5fZmlsZUluZm8gPSB0aGlzLl9maWxlSW5mbzsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICB9CiAgICAgIHZhciBhcmdzID0gdGhpcy5hcmdzLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS5ldmFsKGNvbnRleHQpOyB9KTsKICAgICAgZXhpdENhbGMoKTsKICAgICAgcmV0dXJuIG5ldyBDYWxsKHRoaXMubmFtZSwgYXJncywgdGhpcy5nZXRJbmRleCgpLCB0aGlzLmZpbGVJbmZvKCkpOwogIH07CiAgQ2FsbC5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICBvdXRwdXQuYWRkKHRoaXMubmFtZSArICIoIiwgdGhpcy5maWxlSW5mbygpLCB0aGlzLmdldEluZGV4KCkpOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYXJncy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdGhpcy5hcmdzW2ldLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgICAgaWYgKGkgKyAxIDwgdGhpcy5hcmdzLmxlbmd0aCkgewogICAgICAgICAgICAgIG91dHB1dC5hZGQoJywgJyk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgb3V0cHV0LmFkZCgnKScpOwogIH07CiAgQ2FsbC5wcm90b3R5cGUudHlwZSA9ICdDYWxsJzsKCiAgdmFyIFZhcmlhYmxlID0gZnVuY3Rpb24gKG5hbWUsIGluZGV4LCBjdXJyZW50RmlsZUluZm8pIHsKICAgICAgdGhpcy5uYW1lID0gbmFtZTsKICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKICAgICAgdGhpcy5fZmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm87CiAgfTsKICBWYXJpYWJsZS5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIFZhcmlhYmxlLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIHZhcmlhYmxlOwogICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICAgaWYgKG5hbWUuaW5kZXhPZignQEAnKSA9PT0gMCkgewogICAgICAgICAgbmFtZSA9ICJAIiArIG5ldyBWYXJpYWJsZShuYW1lLnNsaWNlKDEpLCB0aGlzLmdldEluZGV4KCksIHRoaXMuZmlsZUluZm8oKSkuZXZhbChjb250ZXh0KS52YWx1ZTsKICAgICAgfQogICAgICBpZiAodGhpcy5ldmFsdWF0aW5nKSB7CiAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdOYW1lJywgbWVzc2FnZTogIlJlY3Vyc2l2ZSB2YXJpYWJsZSBkZWZpbml0aW9uIGZvciAiICsgbmFtZSwgZmlsZW5hbWU6IHRoaXMuZmlsZUluZm8oKS5maWxlbmFtZSwKICAgICAgICAgICAgICBpbmRleDogdGhpcy5nZXRJbmRleCgpIH07CiAgICAgIH0KICAgICAgdGhpcy5ldmFsdWF0aW5nID0gdHJ1ZTsKICAgICAgdmFyaWFibGUgPSB0aGlzLmZpbmQoY29udGV4dC5mcmFtZXMsIGZ1bmN0aW9uIChmcmFtZSkgewogICAgICAgICAgdmFyIHYgPSBmcmFtZS52YXJpYWJsZShuYW1lKTsKICAgICAgICAgIGlmICh2KSB7CiAgICAgICAgICAgICAgaWYgKHYuaW1wb3J0YW50KSB7CiAgICAgICAgICAgICAgICAgIHZhciBpbXBvcnRhbnRTY29wZSA9IGNvbnRleHQuaW1wb3J0YW50U2NvcGVbY29udGV4dC5pbXBvcnRhbnRTY29wZS5sZW5ndGggLSAxXTsKICAgICAgICAgICAgICAgICAgaW1wb3J0YW50U2NvcGUuaW1wb3J0YW50ID0gdi5pbXBvcnRhbnQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8vIElmIGluIGNhbGMsIHdyYXAgdmFycyBpbiBhIGZ1bmN0aW9uIGNhbGwgdG8gY2FzY2FkZSBldmFsdWF0ZSBhcmdzIGZpcnN0CiAgICAgICAgICAgICAgaWYgKGNvbnRleHQuaW5DYWxjKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiAobmV3IENhbGwoJ19TRUxGJywgW3YudmFsdWVdKSkuZXZhbChjb250ZXh0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiB2LnZhbHVlLmV2YWwoY29udGV4dCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9KTsKICAgICAgaWYgKHZhcmlhYmxlKSB7CiAgICAgICAgICB0aGlzLmV2YWx1YXRpbmcgPSBmYWxzZTsKICAgICAgICAgIHJldHVybiB2YXJpYWJsZTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHRocm93IHsgdHlwZTogJ05hbWUnLCBtZXNzYWdlOiAidmFyaWFibGUgIiArIG5hbWUgKyAiIGlzIHVuZGVmaW5lZCIsIGZpbGVuYW1lOiB0aGlzLmZpbGVJbmZvKCkuZmlsZW5hbWUsCiAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuZ2V0SW5kZXgoKSB9OwogICAgICB9CiAgfTsKICBWYXJpYWJsZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChvYmosIGZ1bikgewogICAgICBmb3IgKHZhciBpID0gMCwgciA9IHZvaWQgMDsgaSA8IG9iai5sZW5ndGg7IGkrKykgewogICAgICAgICAgciA9IGZ1bi5jYWxsKG9iaiwgb2JqW2ldKTsKICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgfTsKICBWYXJpYWJsZS5wcm90b3R5cGUudHlwZSA9ICdWYXJpYWJsZSc7CgogIHZhciBQcm9wZXJ0eSA9IGZ1bmN0aW9uIChuYW1lLCBpbmRleCwgY3VycmVudEZpbGVJbmZvKSB7CiAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CiAgICAgIHRoaXMuX2ZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogIH07CiAgUHJvcGVydHkucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBQcm9wZXJ0eS5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciBwcm9wZXJ0eTsKICAgICAgdmFyIG5hbWUgPSB0aGlzLm5hbWU7CiAgICAgIC8vIFRPRE86IHNob3J0ZW4gdGhpcyByZWZlcmVuY2UKICAgICAgdmFyIG1lcmdlUnVsZXMgPSBjb250ZXh0LnBsdWdpbk1hbmFnZXIubGVzcy52aXNpdG9ycy5Ub0NTU1Zpc2l0b3IucHJvdG90eXBlLl9tZXJnZVJ1bGVzOwogICAgICBpZiAodGhpcy5ldmFsdWF0aW5nKSB7CiAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdOYW1lJywgbWVzc2FnZTogIlJlY3Vyc2l2ZSBwcm9wZXJ0eSByZWZlcmVuY2UgZm9yICIgKyBuYW1lLCBmaWxlbmFtZTogdGhpcy5maWxlSW5mbygpLmZpbGVuYW1lLAogICAgICAgICAgICAgIGluZGV4OiB0aGlzLmdldEluZGV4KCkgfTsKICAgICAgfQogICAgICB0aGlzLmV2YWx1YXRpbmcgPSB0cnVlOwogICAgICBwcm9wZXJ0eSA9IHRoaXMuZmluZChjb250ZXh0LmZyYW1lcywgZnVuY3Rpb24gKGZyYW1lKSB7CiAgICAgICAgICB2YXIgdjsKICAgICAgICAgIHZhciB2QXJyID0gZnJhbWUucHJvcGVydHkobmFtZSk7CiAgICAgICAgICBpZiAodkFycikgewogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdkFyci5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICB2ID0gdkFycltpXTsKICAgICAgICAgICAgICAgICAgdkFycltpXSA9IG5ldyBEZWNsYXJhdGlvbih2Lm5hbWUsIHYudmFsdWUsIHYuaW1wb3J0YW50LCB2Lm1lcmdlLCB2LmluZGV4LCB2LmN1cnJlbnRGaWxlSW5mbywgdi5pbmxpbmUsIHYudmFyaWFibGUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBtZXJnZVJ1bGVzKHZBcnIpOwogICAgICAgICAgICAgIHYgPSB2QXJyW3ZBcnIubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgaWYgKHYuaW1wb3J0YW50KSB7CiAgICAgICAgICAgICAgICAgIHZhciBpbXBvcnRhbnRTY29wZSA9IGNvbnRleHQuaW1wb3J0YW50U2NvcGVbY29udGV4dC5pbXBvcnRhbnRTY29wZS5sZW5ndGggLSAxXTsKICAgICAgICAgICAgICAgICAgaW1wb3J0YW50U2NvcGUuaW1wb3J0YW50ID0gdi5pbXBvcnRhbnQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHYgPSB2LnZhbHVlLmV2YWwoY29udGV4dCk7CiAgICAgICAgICAgICAgcmV0dXJuIHY7CiAgICAgICAgICB9CiAgICAgIH0pOwogICAgICBpZiAocHJvcGVydHkpIHsKICAgICAgICAgIHRoaXMuZXZhbHVhdGluZyA9IGZhbHNlOwogICAgICAgICAgcmV0dXJuIHByb3BlcnR5OwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgdGhyb3cgeyB0eXBlOiAnTmFtZScsIG1lc3NhZ2U6ICJQcm9wZXJ0eSAnIiArIG5hbWUgKyAiJyBpcyB1bmRlZmluZWQiLCBmaWxlbmFtZTogdGhpcy5jdXJyZW50RmlsZUluZm8uZmlsZW5hbWUsCiAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXggfTsKICAgICAgfQogIH07CiAgUHJvcGVydHkucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAob2JqLCBmdW4pIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHIgPSB2b2lkIDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHIgPSBmdW4uY2FsbChvYmosIG9ialtpXSk7CiAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogIH07CiAgUHJvcGVydHkucHJvdG90eXBlLnR5cGUgPSAnUHJvcGVydHknOwoKICB2YXIgQXR0cmlidXRlID0gZnVuY3Rpb24gKGtleSwgb3AsIHZhbHVlKSB7CiAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICB0aGlzLm9wID0gb3A7CiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICB9OwogIEF0dHJpYnV0ZS5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIEF0dHJpYnV0ZS5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlKHRoaXMua2V5LmV2YWwgPyB0aGlzLmtleS5ldmFsKGNvbnRleHQpIDogdGhpcy5rZXksIHRoaXMub3AsICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUuZXZhbCkgPyB0aGlzLnZhbHVlLmV2YWwoY29udGV4dCkgOiB0aGlzLnZhbHVlKTsKICB9OwogIEF0dHJpYnV0ZS5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICBvdXRwdXQuYWRkKHRoaXMudG9DU1MoY29udGV4dCkpOwogIH07CiAgQXR0cmlidXRlLnByb3RvdHlwZS50b0NTUyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciB2YWx1ZSA9IHRoaXMua2V5LnRvQ1NTID8gdGhpcy5rZXkudG9DU1MoY29udGV4dCkgOiB0aGlzLmtleTsKICAgICAgaWYgKHRoaXMub3ApIHsKICAgICAgICAgIHZhbHVlICs9IHRoaXMub3A7CiAgICAgICAgICB2YWx1ZSArPSAodGhpcy52YWx1ZS50b0NTUyA/IHRoaXMudmFsdWUudG9DU1MoY29udGV4dCkgOiB0aGlzLnZhbHVlKTsKICAgICAgfQogICAgICByZXR1cm4gIlsiICsgdmFsdWUgKyAiXSI7CiAgfTsKICBBdHRyaWJ1dGUucHJvdG90eXBlLnR5cGUgPSAnQXR0cmlidXRlJzsKCiAgdmFyIFF1b3RlZCA9IGZ1bmN0aW9uIChzdHIsIGNvbnRlbnQsIGVzY2FwZWQsIGluZGV4LCBjdXJyZW50RmlsZUluZm8pIHsKICAgICAgdGhpcy5lc2NhcGVkID0gKGVzY2FwZWQgPT0gbnVsbCkgPyB0cnVlIDogZXNjYXBlZDsKICAgICAgdGhpcy52YWx1ZSA9IGNvbnRlbnQgfHwgJyc7CiAgICAgIHRoaXMucXVvdGUgPSBzdHIuY2hhckF0KDApOwogICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwogICAgICB0aGlzLl9maWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKICAgICAgdGhpcy52YXJpYWJsZVJlZ2V4ID0gL0BceyhbXHctXSspXH0vZzsKICAgICAgdGhpcy5wcm9wUmVnZXggPSAvXCRceyhbXHctXSspXH0vZzsKICAgICAgdGhpcy5hbGxvd1Jvb3QgPSBlc2NhcGVkOwogIH07CiAgUXVvdGVkLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgUXVvdGVkLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIGlmICghdGhpcy5lc2NhcGVkKSB7CiAgICAgICAgICBvdXRwdXQuYWRkKHRoaXMucXVvdGUsIHRoaXMuZmlsZUluZm8oKSwgdGhpcy5nZXRJbmRleCgpKTsKICAgICAgfQogICAgICBvdXRwdXQuYWRkKHRoaXMudmFsdWUpOwogICAgICBpZiAoIXRoaXMuZXNjYXBlZCkgewogICAgICAgICAgb3V0cHV0LmFkZCh0aGlzLnF1b3RlKTsKICAgICAgfQogIH07CiAgUXVvdGVkLnByb3RvdHlwZS5jb250YWluc1ZhcmlhYmxlcyA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIHRoaXMudmFsdWUubWF0Y2godGhpcy52YXJpYWJsZVJlZ2V4KTsKICB9OwogIFF1b3RlZC5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTsKICAgICAgdmFyIHZhcmlhYmxlUmVwbGFjZW1lbnQgPSBmdW5jdGlvbiAoXywgbmFtZSkgewogICAgICAgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUoIkAiICsgbmFtZSwgdGhhdC5nZXRJbmRleCgpLCB0aGF0LmZpbGVJbmZvKCkpLmV2YWwoY29udGV4dCwgdHJ1ZSk7CiAgICAgICAgICByZXR1cm4gKHYgaW5zdGFuY2VvZiBRdW90ZWQpID8gdi52YWx1ZSA6IHYudG9DU1MoKTsKICAgICAgfTsKICAgICAgdmFyIHByb3BlcnR5UmVwbGFjZW1lbnQgPSBmdW5jdGlvbiAoXywgbmFtZSkgewogICAgICAgICAgdmFyIHYgPSBuZXcgUHJvcGVydHkoIiQiICsgbmFtZSwgdGhhdC5nZXRJbmRleCgpLCB0aGF0LmZpbGVJbmZvKCkpLmV2YWwoY29udGV4dCwgdHJ1ZSk7CiAgICAgICAgICByZXR1cm4gKHYgaW5zdGFuY2VvZiBRdW90ZWQpID8gdi52YWx1ZSA6IHYudG9DU1MoKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gaXRlcmF0aXZlUmVwbGFjZSh2YWx1ZSwgcmVnZXhwLCByZXBsYWNlbWVudEZuYykgewogICAgICAgICAgdmFyIGV2YWx1YXRlZFZhbHVlID0gdmFsdWU7CiAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgdmFsdWUgPSBldmFsdWF0ZWRWYWx1ZS50b1N0cmluZygpOwogICAgICAgICAgICAgIGV2YWx1YXRlZFZhbHVlID0gdmFsdWUucmVwbGFjZShyZWdleHAsIHJlcGxhY2VtZW50Rm5jKTsKICAgICAgICAgIH0gd2hpbGUgKHZhbHVlICE9PSBldmFsdWF0ZWRWYWx1ZSk7CiAgICAgICAgICByZXR1cm4gZXZhbHVhdGVkVmFsdWU7CiAgICAgIH0KICAgICAgdmFsdWUgPSBpdGVyYXRpdmVSZXBsYWNlKHZhbHVlLCB0aGlzLnZhcmlhYmxlUmVnZXgsIHZhcmlhYmxlUmVwbGFjZW1lbnQpOwogICAgICB2YWx1ZSA9IGl0ZXJhdGl2ZVJlcGxhY2UodmFsdWUsIHRoaXMucHJvcFJlZ2V4LCBwcm9wZXJ0eVJlcGxhY2VtZW50KTsKICAgICAgcmV0dXJuIG5ldyBRdW90ZWQodGhpcy5xdW90ZSArIHZhbHVlICsgdGhpcy5xdW90ZSwgdmFsdWUsIHRoaXMuZXNjYXBlZCwgdGhpcy5nZXRJbmRleCgpLCB0aGlzLmZpbGVJbmZvKCkpOwogIH07CiAgUXVvdGVkLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKG90aGVyKSB7CiAgICAgIC8vIHdoZW4gY29tcGFyaW5nIHF1b3RlZCBzdHJpbmdzIGFsbG93IHRoZSBxdW90ZSB0byBkaWZmZXIKICAgICAgaWYgKG90aGVyLnR5cGUgPT09ICdRdW90ZWQnICYmICF0aGlzLmVzY2FwZWQgJiYgIW90aGVyLmVzY2FwZWQpIHsKICAgICAgICAgIHJldHVybiBOb2RlLm51bWVyaWNDb21wYXJlKHRoaXMudmFsdWUsIG90aGVyLnZhbHVlKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHJldHVybiBvdGhlci50b0NTUyAmJiB0aGlzLnRvQ1NTKCkgPT09IG90aGVyLnRvQ1NTKCkgPyAwIDogdW5kZWZpbmVkOwogICAgICB9CiAgfTsKICBRdW90ZWQucHJvdG90eXBlLnR5cGUgPSAnUXVvdGVkJzsKCiAgdmFyIFVSTCA9IGZ1bmN0aW9uICh2YWwsIGluZGV4LCBjdXJyZW50RmlsZUluZm8sIGlzRXZhbGQpIHsKICAgICAgdGhpcy52YWx1ZSA9IHZhbDsKICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKICAgICAgdGhpcy5fZmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm87CiAgICAgIHRoaXMuaXNFdmFsZCA9IGlzRXZhbGQ7CiAgfTsKICBVUkwucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBVUkwucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIHRoaXMudmFsdWUgPSB2aXNpdG9yLnZpc2l0KHRoaXMudmFsdWUpOwogIH07CiAgVVJMLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIG91dHB1dC5hZGQoJ3VybCgnKTsKICAgICAgdGhpcy52YWx1ZS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgb3V0cHV0LmFkZCgnKScpOwogIH07CiAgVVJMLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIHZhbCA9IHRoaXMudmFsdWUuZXZhbChjb250ZXh0KTsKICAgICAgdmFyIHJvb3RwYXRoOwogICAgICBpZiAoIXRoaXMuaXNFdmFsZCkgewogICAgICAgICAgLy8gQWRkIHRoZSByb290cGF0aCBpZiB0aGUgVVJMIHJlcXVpcmVzIGEgcmV3cml0ZQogICAgICAgICAgcm9vdHBhdGggPSB0aGlzLmZpbGVJbmZvKCkgJiYgdGhpcy5maWxlSW5mbygpLnJvb3RwYXRoOwogICAgICAgICAgaWYgKHR5cGVvZiByb290cGF0aCA9PT0gJ3N0cmluZycgJiYKICAgICAgICAgICAgICB0eXBlb2YgdmFsLnZhbHVlID09PSAnc3RyaW5nJyAmJgogICAgICAgICAgICAgIGNvbnRleHQucGF0aFJlcXVpcmVzUmV3cml0ZSh2YWwudmFsdWUpKSB7CiAgICAgICAgICAgICAgaWYgKCF2YWwucXVvdGUpIHsKICAgICAgICAgICAgICAgICAgcm9vdHBhdGggPSBlc2NhcGVQYXRoKHJvb3RwYXRoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFsLnZhbHVlID0gY29udGV4dC5yZXdyaXRlUGF0aCh2YWwudmFsdWUsIHJvb3RwYXRoKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHZhbC52YWx1ZSA9IGNvbnRleHQubm9ybWFsaXplUGF0aCh2YWwudmFsdWUpOwogICAgICAgICAgfQogICAgICAgICAgLy8gQWRkIHVybCBhcmdzIGlmIGVuYWJsZWQKICAgICAgICAgIGlmIChjb250ZXh0LnVybEFyZ3MpIHsKICAgICAgICAgICAgICBpZiAoIXZhbC52YWx1ZS5tYXRjaCgvXlxzKmRhdGE6LykpIHsKICAgICAgICAgICAgICAgICAgdmFyIGRlbGltaXRlciA9IHZhbC52YWx1ZS5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnOwogICAgICAgICAgICAgICAgICB2YXIgdXJsQXJncyA9IGRlbGltaXRlciArIGNvbnRleHQudXJsQXJnczsKICAgICAgICAgICAgICAgICAgaWYgKHZhbC52YWx1ZS5pbmRleE9mKCcjJykgIT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YWwudmFsdWUgPSB2YWwudmFsdWUucmVwbGFjZSgnIycsIHVybEFyZ3MgKyAiIyIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgdmFsLnZhbHVlICs9IHVybEFyZ3M7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG5ldyBVUkwodmFsLCB0aGlzLmdldEluZGV4KCksIHRoaXMuZmlsZUluZm8oKSwgdHJ1ZSk7CiAgfTsKICBVUkwucHJvdG90eXBlLnR5cGUgPSAnVXJsJzsKICBmdW5jdGlvbiBlc2NhcGVQYXRoKHBhdGgpIHsKICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvW1woXCknIlxzXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHsgcmV0dXJuICJcXCIgKyBtYXRjaDsgfSk7CiAgfQoKICB2YXIgTWVkaWEgPSBmdW5jdGlvbiAodmFsdWUsIGZlYXR1cmVzLCBpbmRleCwgY3VycmVudEZpbGVJbmZvLCB2aXNpYmlsaXR5SW5mbykgewogICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwogICAgICB0aGlzLl9maWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKICAgICAgdmFyIHNlbGVjdG9ycyA9IChuZXcgU2VsZWN0b3IoW10sIG51bGwsIG51bGwsIHRoaXMuX2luZGV4LCB0aGlzLl9maWxlSW5mbykpLmNyZWF0ZUVtcHR5U2VsZWN0b3JzKCk7CiAgICAgIHRoaXMuZmVhdHVyZXMgPSBuZXcgVmFsdWUoZmVhdHVyZXMpOwogICAgICB0aGlzLnJ1bGVzID0gW25ldyBSdWxlc2V0KHNlbGVjdG9ycywgdmFsdWUpXTsKICAgICAgdGhpcy5ydWxlc1swXS5hbGxvd0ltcG9ydHMgPSB0cnVlOwogICAgICB0aGlzLmNvcHlWaXNpYmlsaXR5SW5mbyh2aXNpYmlsaXR5SW5mbyk7CiAgICAgIHRoaXMuYWxsb3dSb290ID0gdHJ1ZTsKICAgICAgdGhpcy5zZXRQYXJlbnQoc2VsZWN0b3JzLCB0aGlzKTsKICAgICAgdGhpcy5zZXRQYXJlbnQodGhpcy5mZWF0dXJlcywgdGhpcyk7CiAgICAgIHRoaXMuc2V0UGFyZW50KHRoaXMucnVsZXMsIHRoaXMpOwogIH07CiAgTWVkaWEucHJvdG90eXBlID0gbmV3IEF0UnVsZSgpOwogIE1lZGlhLnByb3RvdHlwZS5pc1J1bGVzZXRMaWtlID0gZnVuY3Rpb24gKCkgewogICAgICByZXR1cm4gdHJ1ZTsKICB9OwogIE1lZGlhLnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgICBpZiAodGhpcy5mZWF0dXJlcykgewogICAgICAgICAgdGhpcy5mZWF0dXJlcyA9IHZpc2l0b3IudmlzaXQodGhpcy5mZWF0dXJlcyk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMucnVsZXMpIHsKICAgICAgICAgIHRoaXMucnVsZXMgPSB2aXNpdG9yLnZpc2l0QXJyYXkodGhpcy5ydWxlcyk7CiAgICAgIH0KICB9OwogIE1lZGlhLnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIG91dHB1dC5hZGQoJ0BtZWRpYSAnLCB0aGlzLl9maWxlSW5mbywgdGhpcy5faW5kZXgpOwogICAgICB0aGlzLmZlYXR1cmVzLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICB0aGlzLm91dHB1dFJ1bGVzZXQoY29udGV4dCwgb3V0cHV0LCB0aGlzLnJ1bGVzKTsKICB9OwogIE1lZGlhLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgaWYgKCFjb250ZXh0Lm1lZGlhQmxvY2tzKSB7CiAgICAgICAgICBjb250ZXh0Lm1lZGlhQmxvY2tzID0gW107CiAgICAgICAgICBjb250ZXh0Lm1lZGlhUGF0aCA9IFtdOwogICAgICB9CiAgICAgIHZhciBtZWRpYSA9IG5ldyBNZWRpYShudWxsLCBbXSwgdGhpcy5faW5kZXgsIHRoaXMuX2ZpbGVJbmZvLCB0aGlzLnZpc2liaWxpdHlJbmZvKCkpOwogICAgICBpZiAodGhpcy5kZWJ1Z0luZm8pIHsKICAgICAgICAgIHRoaXMucnVsZXNbMF0uZGVidWdJbmZvID0gdGhpcy5kZWJ1Z0luZm87CiAgICAgICAgICBtZWRpYS5kZWJ1Z0luZm8gPSB0aGlzLmRlYnVnSW5mbzsKICAgICAgfQogICAgICBtZWRpYS5mZWF0dXJlcyA9IHRoaXMuZmVhdHVyZXMuZXZhbChjb250ZXh0KTsKICAgICAgY29udGV4dC5tZWRpYVBhdGgucHVzaChtZWRpYSk7CiAgICAgIGNvbnRleHQubWVkaWFCbG9ja3MucHVzaChtZWRpYSk7CiAgICAgIHRoaXMucnVsZXNbMF0uZnVuY3Rpb25SZWdpc3RyeSA9IGNvbnRleHQuZnJhbWVzWzBdLmZ1bmN0aW9uUmVnaXN0cnkuaW5oZXJpdCgpOwogICAgICBjb250ZXh0LmZyYW1lcy51bnNoaWZ0KHRoaXMucnVsZXNbMF0pOwogICAgICBtZWRpYS5ydWxlcyA9IFt0aGlzLnJ1bGVzWzBdLmV2YWwoY29udGV4dCldOwogICAgICBjb250ZXh0LmZyYW1lcy5zaGlmdCgpOwogICAgICBjb250ZXh0Lm1lZGlhUGF0aC5wb3AoKTsKICAgICAgcmV0dXJuIGNvbnRleHQubWVkaWFQYXRoLmxlbmd0aCA9PT0gMCA/IG1lZGlhLmV2YWxUb3AoY29udGV4dCkgOgogICAgICAgICAgbWVkaWEuZXZhbE5lc3RlZChjb250ZXh0KTsKICB9OwogIE1lZGlhLnByb3RvdHlwZS5ldmFsVG9wID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7CiAgICAgIC8vIFJlbmRlciBhbGwgZGVwZW5kZW50IE1lZGlhIGJsb2Nrcy4KICAgICAgaWYgKGNvbnRleHQubWVkaWFCbG9ja3MubGVuZ3RoID4gMSkgewogICAgICAgICAgdmFyIHNlbGVjdG9ycyA9IChuZXcgU2VsZWN0b3IoW10sIG51bGwsIG51bGwsIHRoaXMuZ2V0SW5kZXgoKSwgdGhpcy5maWxlSW5mbygpKSkuY3JlYXRlRW1wdHlTZWxlY3RvcnMoKTsKICAgICAgICAgIHJlc3VsdCA9IG5ldyBSdWxlc2V0KHNlbGVjdG9ycywgY29udGV4dC5tZWRpYUJsb2Nrcyk7CiAgICAgICAgICByZXN1bHQubXVsdGlNZWRpYSA9IHRydWU7CiAgICAgICAgICByZXN1bHQuY29weVZpc2liaWxpdHlJbmZvKHRoaXMudmlzaWJpbGl0eUluZm8oKSk7CiAgICAgICAgICB0aGlzLnNldFBhcmVudChyZXN1bHQsIHRoaXMpOwogICAgICB9CiAgICAgIGRlbGV0ZSBjb250ZXh0Lm1lZGlhQmxvY2tzOwogICAgICBkZWxldGUgY29udGV4dC5tZWRpYVBhdGg7CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfTsKICBNZWRpYS5wcm90b3R5cGUuZXZhbE5lc3RlZCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciBpOwogICAgICB2YXIgdmFsdWU7CiAgICAgIHZhciBwYXRoID0gY29udGV4dC5tZWRpYVBhdGguY29uY2F0KFt0aGlzXSk7CiAgICAgIC8vIEV4dHJhY3QgdGhlIG1lZGlhLXF1ZXJ5IGNvbmRpdGlvbnMgc2VwYXJhdGVkIHdpdGggYCxgIChPUikuCiAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YWx1ZSA9IHBhdGhbaV0uZmVhdHVyZXMgaW5zdGFuY2VvZiBWYWx1ZSA/CiAgICAgICAgICAgICAgcGF0aFtpXS5mZWF0dXJlcy52YWx1ZSA6IHBhdGhbaV0uZmVhdHVyZXM7CiAgICAgICAgICBwYXRoW2ldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07CiAgICAgIH0KICAgICAgLy8gVHJhY2UgYWxsIHBlcm11dGF0aW9ucyB0byBnZW5lcmF0ZSB0aGUgcmVzdWx0aW5nIG1lZGlhLXF1ZXJ5LgogICAgICAvLwogICAgICAvLyAoYSwgYiBhbmQgYykgd2l0aCBuZXN0ZWQgKGQsIGUpIC0+CiAgICAgIC8vICAgIGEgYW5kIGQKICAgICAgLy8gICAgYSBhbmQgZQogICAgICAvLyAgICBiIGFuZCBjIGFuZCBkCiAgICAgIC8vICAgIGIgYW5kIGMgYW5kIGUKICAgICAgdGhpcy5mZWF0dXJlcyA9IG5ldyBWYWx1ZSh0aGlzLnBlcm11dGUocGF0aCkubWFwKGZ1bmN0aW9uIChwYXRoKSB7CiAgICAgICAgICBwYXRoID0gcGF0aC5tYXAoZnVuY3Rpb24gKGZyYWdtZW50KSB7IHJldHVybiBmcmFnbWVudC50b0NTUyA/IGZyYWdtZW50IDogbmV3IEFub255bW91cyhmcmFnbWVudCk7IH0pOwogICAgICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7CiAgICAgICAgICAgICAgcGF0aC5zcGxpY2UoaSwgMCwgbmV3IEFub255bW91cygnYW5kJykpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG5ldyBFeHByZXNzaW9uKHBhdGgpOwogICAgICB9KSk7CiAgICAgIHRoaXMuc2V0UGFyZW50KHRoaXMuZmVhdHVyZXMsIHRoaXMpOwogICAgICAvLyBGYWtlIGEgdHJlZS1ub2RlIHRoYXQgZG9lc24ndCBvdXRwdXQgYW55dGhpbmcuCiAgICAgIHJldHVybiBuZXcgUnVsZXNldChbXSwgW10pOwogIH07CiAgTWVkaWEucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiAoYXJyKSB7CiAgICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gW107CiAgICAgIH0KICAgICAgZWxzZSBpZiAoYXJyLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgcmV0dXJuIGFyclswXTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHZhciByZXN1bHQgPSBbXTsKICAgICAgICAgIHZhciByZXN0ID0gdGhpcy5wZXJtdXRlKGFyci5zbGljZSgxKSk7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFyclswXS5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbYXJyWzBdW2pdXS5jb25jYXQocmVzdFtpXSkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICB9OwogIE1lZGlhLnByb3RvdHlwZS5idWJibGVTZWxlY3RvcnMgPSBmdW5jdGlvbiAoc2VsZWN0b3JzKSB7CiAgICAgIGlmICghc2VsZWN0b3JzKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5ydWxlcyA9IFtuZXcgUnVsZXNldChjb3B5QXJyYXkoc2VsZWN0b3JzKSwgW3RoaXMucnVsZXNbMF1dKV07CiAgICAgIHRoaXMuc2V0UGFyZW50KHRoaXMucnVsZXMsIHRoaXMpOwogIH07CiAgTWVkaWEucHJvdG90eXBlLnR5cGUgPSAnTWVkaWEnOwoKICAvLwogIC8vIENTUyBAaW1wb3J0IG5vZGUKICAvLwogIC8vIFRoZSBnZW5lcmFsIHN0cmF0ZWd5IGhlcmUgaXMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHdhaXQKICAvLyBmb3IgdGhlIHBhcnNpbmcgdG8gYmUgY29tcGxldGVkLCBiZWZvcmUgd2Ugc3RhcnQgaW1wb3J0aW5nCiAgLy8gdGhlIGZpbGUuIFRoYXQncyBiZWNhdXNlIGluIHRoZSBjb250ZXh0IG9mIGEgYnJvd3NlciwKICAvLyBtb3N0IG9mIHRoZSB0aW1lIHdpbGwgYmUgc3BlbnQgd2FpdGluZyBmb3IgdGhlIHNlcnZlciB0byByZXNwb25kLgogIC8vCiAgLy8gT24gY3JlYXRpb24sIHdlIHB1c2ggdGhlIGltcG9ydCBwYXRoIHRvIG91ciBpbXBvcnQgcXVldWUsIHRob3VnaAogIC8vIGBpbXBvcnQscHVzaGAsIHdlIGFsc28gcGFzcyBpdCBhIGNhbGxiYWNrLCB3aGljaCBpdCdsbCBjYWxsIG9uY2UKICAvLyB0aGUgZmlsZSBoYXMgYmVlbiBmZXRjaGVkLCBhbmQgcGFyc2VkLgogIC8vCiAgdmFyIEltcG9ydCA9IGZ1bmN0aW9uIChwYXRoLCBmZWF0dXJlcywgb3B0aW9ucywgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbywgdmlzaWJpbGl0eUluZm8pIHsKICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKICAgICAgdGhpcy5fZmlsZUluZm8gPSBjdXJyZW50RmlsZUluZm87CiAgICAgIHRoaXMucGF0aCA9IHBhdGg7CiAgICAgIHRoaXMuZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICAgdGhpcy5hbGxvd1Jvb3QgPSB0cnVlOwogICAgICBpZiAodGhpcy5vcHRpb25zLmxlc3MgIT09IHVuZGVmaW5lZCB8fCB0aGlzLm9wdGlvbnMuaW5saW5lKSB7CiAgICAgICAgICB0aGlzLmNzcyA9ICF0aGlzLm9wdGlvbnMubGVzcyB8fCB0aGlzLm9wdGlvbnMuaW5saW5lOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgdmFyIHBhdGhWYWx1ZSA9IHRoaXMuZ2V0UGF0aCgpOwogICAgICAgICAgaWYgKHBhdGhWYWx1ZSAmJiAvWyNcLlwmXD9dY3NzKFtcPztdLiopPyQvLnRlc3QocGF0aFZhbHVlKSkgewogICAgICAgICAgICAgIHRoaXMuY3NzID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLmNvcHlWaXNpYmlsaXR5SW5mbyh2aXNpYmlsaXR5SW5mbyk7CiAgICAgIHRoaXMuc2V0UGFyZW50KHRoaXMuZmVhdHVyZXMsIHRoaXMpOwogICAgICB0aGlzLnNldFBhcmVudCh0aGlzLnBhdGgsIHRoaXMpOwogIH07CiAgSW1wb3J0LnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgSW1wb3J0LnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgICBpZiAodGhpcy5mZWF0dXJlcykgewogICAgICAgICAgdGhpcy5mZWF0dXJlcyA9IHZpc2l0b3IudmlzaXQodGhpcy5mZWF0dXJlcyk7CiAgICAgIH0KICAgICAgdGhpcy5wYXRoID0gdmlzaXRvci52aXNpdCh0aGlzLnBhdGgpOwogICAgICBpZiAoIXRoaXMub3B0aW9ucy5pc1BsdWdpbiAmJiAhdGhpcy5vcHRpb25zLmlubGluZSAmJiB0aGlzLnJvb3QpIHsKICAgICAgICAgIHRoaXMucm9vdCA9IHZpc2l0b3IudmlzaXQodGhpcy5yb290KTsKICAgICAgfQogIH07CiAgSW1wb3J0LnByb3RvdHlwZS5nZW5DU1MgPSBmdW5jdGlvbiAoY29udGV4dCwgb3V0cHV0KSB7CiAgICAgIGlmICh0aGlzLmNzcyAmJiB0aGlzLnBhdGguX2ZpbGVJbmZvLnJlZmVyZW5jZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBvdXRwdXQuYWRkKCdAaW1wb3J0ICcsIHRoaXMuX2ZpbGVJbmZvLCB0aGlzLl9pbmRleCk7CiAgICAgICAgICB0aGlzLnBhdGguZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlcykgewogICAgICAgICAgICAgIG91dHB1dC5hZGQoJyAnKTsKICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVzLmdlbkNTUyhjb250ZXh0LCBvdXRwdXQpOwogICAgICAgICAgfQogICAgICAgICAgb3V0cHV0LmFkZCgnOycpOwogICAgICB9CiAgfTsKICBJbXBvcnQucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAodGhpcy5wYXRoIGluc3RhbmNlb2YgVVJMKSA/CiAgICAgICAgICB0aGlzLnBhdGgudmFsdWUudmFsdWUgOiB0aGlzLnBhdGgudmFsdWU7CiAgfTsKICBJbXBvcnQucHJvdG90eXBlLmlzVmFyaWFibGVJbXBvcnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBwYXRoID0gdGhpcy5wYXRoOwogICAgICBpZiAocGF0aCBpbnN0YW5jZW9mIFVSTCkgewogICAgICAgICAgcGF0aCA9IHBhdGgudmFsdWU7CiAgICAgIH0KICAgICAgaWYgKHBhdGggaW5zdGFuY2VvZiBRdW90ZWQpIHsKICAgICAgICAgIHJldHVybiBwYXRoLmNvbnRhaW5zVmFyaWFibGVzKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgfTsKICBJbXBvcnQucHJvdG90eXBlLmV2YWxGb3JJbXBvcnQgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgICB2YXIgcGF0aCA9IHRoaXMucGF0aDsKICAgICAgaWYgKHBhdGggaW5zdGFuY2VvZiBVUkwpIHsKICAgICAgICAgIHBhdGggPSBwYXRoLnZhbHVlOwogICAgICB9CiAgICAgIHJldHVybiBuZXcgSW1wb3J0KHBhdGguZXZhbChjb250ZXh0KSwgdGhpcy5mZWF0dXJlcywgdGhpcy5vcHRpb25zLCB0aGlzLl9pbmRleCwgdGhpcy5fZmlsZUluZm8sIHRoaXMudmlzaWJpbGl0eUluZm8oKSk7CiAgfTsKICBJbXBvcnQucHJvdG90eXBlLmV2YWxQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIHBhdGggPSB0aGlzLnBhdGguZXZhbChjb250ZXh0KTsKICAgICAgdmFyIGZpbGVJbmZvID0gdGhpcy5fZmlsZUluZm87CiAgICAgIGlmICghKHBhdGggaW5zdGFuY2VvZiBVUkwpKSB7CiAgICAgICAgICAvLyBBZGQgdGhlIHJvb3RwYXRoIGlmIHRoZSBVUkwgcmVxdWlyZXMgYSByZXdyaXRlCiAgICAgICAgICB2YXIgcGF0aFZhbHVlID0gcGF0aC52YWx1ZTsKICAgICAgICAgIGlmIChmaWxlSW5mbyAmJgogICAgICAgICAgICAgIHBhdGhWYWx1ZSAmJgogICAgICAgICAgICAgIGNvbnRleHQucGF0aFJlcXVpcmVzUmV3cml0ZShwYXRoVmFsdWUpKSB7CiAgICAgICAgICAgICAgcGF0aC52YWx1ZSA9IGNvbnRleHQucmV3cml0ZVBhdGgocGF0aFZhbHVlLCBmaWxlSW5mby5yb290cGF0aCk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBwYXRoLnZhbHVlID0gY29udGV4dC5ub3JtYWxpemVQYXRoKHBhdGgudmFsdWUpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBwYXRoOwogIH07CiAgSW1wb3J0LnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZG9FdmFsKGNvbnRleHQpOwogICAgICBpZiAodGhpcy5vcHRpb25zLnJlZmVyZW5jZSB8fCB0aGlzLmJsb2Nrc1Zpc2liaWxpdHkoKSkgewogICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggfHwgcmVzdWx0Lmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgIHJlc3VsdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICAgICAgICAgIG5vZGUuYWRkVmlzaWJpbGl0eUJsb2NrKCk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXN1bHQuYWRkVmlzaWJpbGl0eUJsb2NrKCk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9OwogIEltcG9ydC5wcm90b3R5cGUuZG9FdmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIHJ1bGVzZXQ7CiAgICAgIHZhciByZWdpc3RyeTsKICAgICAgdmFyIGZlYXR1cmVzID0gdGhpcy5mZWF0dXJlcyAmJiB0aGlzLmZlYXR1cmVzLmV2YWwoY29udGV4dCk7CiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaXNQbHVnaW4pIHsKICAgICAgICAgIGlmICh0aGlzLnJvb3QgJiYgdGhpcy5yb290LmV2YWwpIHsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICB0aGlzLnJvb3QuZXZhbChjb250ZXh0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgZS5tZXNzYWdlID0gJ1BsdWdpbiBlcnJvciBkdXJpbmcgZXZhbHVhdGlvbic7CiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBMZXNzRXJyb3IoZSwgdGhpcy5yb290LmltcG9ydHMsIHRoaXMucm9vdC5maWxlbmFtZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmVnaXN0cnkgPSBjb250ZXh0LmZyYW1lc1swXSAmJiBjb250ZXh0LmZyYW1lc1swXS5mdW5jdGlvblJlZ2lzdHJ5OwogICAgICAgICAgaWYgKHJlZ2lzdHJ5ICYmIHRoaXMucm9vdCAmJiB0aGlzLnJvb3QuZnVuY3Rpb25zKSB7CiAgICAgICAgICAgICAgcmVnaXN0cnkuYWRkTXVsdGlwbGUodGhpcy5yb290LmZ1bmN0aW9ucyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gW107CiAgICAgIH0KICAgICAgaWYgKHRoaXMuc2tpcCkgewogICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNraXAgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICB0aGlzLnNraXAgPSB0aGlzLnNraXAoKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aGlzLnNraXApIHsKICAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKHRoaXMub3B0aW9ucy5pbmxpbmUpIHsKICAgICAgICAgIHZhciBjb250ZW50cyA9IG5ldyBBbm9ueW1vdXModGhpcy5yb290LCAwLCB7CiAgICAgICAgICAgICAgZmlsZW5hbWU6IHRoaXMuaW1wb3J0ZWRGaWxlbmFtZSwKICAgICAgICAgICAgICByZWZlcmVuY2U6IHRoaXMucGF0aC5fZmlsZUluZm8gJiYgdGhpcy5wYXRoLl9maWxlSW5mby5yZWZlcmVuY2UKICAgICAgICAgIH0sIHRydWUsIHRydWUpOwogICAgICAgICAgcmV0dXJuIHRoaXMuZmVhdHVyZXMgPyBuZXcgTWVkaWEoW2NvbnRlbnRzXSwgdGhpcy5mZWF0dXJlcy52YWx1ZSkgOiBbY29udGVudHNdOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHRoaXMuY3NzKSB7CiAgICAgICAgICB2YXIgbmV3SW1wb3J0ID0gbmV3IEltcG9ydCh0aGlzLmV2YWxQYXRoKGNvbnRleHQpLCBmZWF0dXJlcywgdGhpcy5vcHRpb25zLCB0aGlzLl9pbmRleCk7CiAgICAgICAgICBpZiAoIW5ld0ltcG9ydC5jc3MgJiYgdGhpcy5lcnJvcikgewogICAgICAgICAgICAgIHRocm93IHRoaXMuZXJyb3I7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3SW1wb3J0OwogICAgICB9CiAgICAgIGVsc2UgaWYgKHRoaXMucm9vdCkgewogICAgICAgICAgcnVsZXNldCA9IG5ldyBSdWxlc2V0KG51bGwsIGNvcHlBcnJheSh0aGlzLnJvb3QucnVsZXMpKTsKICAgICAgICAgIHJ1bGVzZXQuZXZhbEltcG9ydHMoY29udGV4dCk7CiAgICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlcyA/IG5ldyBNZWRpYShydWxlc2V0LnJ1bGVzLCB0aGlzLmZlYXR1cmVzLnZhbHVlKSA6IHJ1bGVzZXQucnVsZXM7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICByZXR1cm4gW107CiAgICAgIH0KICB9OwogIEltcG9ydC5wcm90b3R5cGUudHlwZSA9ICdJbXBvcnQnOwoKICB2YXIgSnNFdmFsTm9kZSA9IGZ1bmN0aW9uICgpIHsgfTsKICBKc0V2YWxOb2RlLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgSnNFdmFsTm9kZS5wcm90b3R5cGUuZXZhbHVhdGVKYXZhU2NyaXB0ID0gZnVuY3Rpb24gKGV4cHJlc3Npb24sIGNvbnRleHQpIHsKICAgICAgdmFyIHJlc3VsdDsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwogICAgICB2YXIgZXZhbENvbnRleHQgPSB7fTsKICAgICAgaWYgKCFjb250ZXh0LmphdmFzY3JpcHRFbmFibGVkKSB7CiAgICAgICAgICB0aHJvdyB7IG1lc3NhZ2U6ICdJbmxpbmUgSmF2YVNjcmlwdCBpcyBub3QgZW5hYmxlZC4gSXMgaXQgc2V0IGluIHlvdXIgb3B0aW9ucz8nLAogICAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLmZpbGVJbmZvKCkuZmlsZW5hbWUsCiAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuZ2V0SW5kZXgoKSB9OwogICAgICB9CiAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnJlcGxhY2UoL0BceyhbXHctXSspXH0vZywgZnVuY3Rpb24gKF8sIG5hbWUpIHsgcmV0dXJuIHRoYXQuanNpZnkobmV3IFZhcmlhYmxlKCJAIiArIG5hbWUsIHRoYXQuZ2V0SW5kZXgoKSwgdGhhdC5maWxlSW5mbygpKS5ldmFsKGNvbnRleHQpKTsgfSk7CiAgICAgIHRyeSB7CiAgICAgICAgICBleHByZXNzaW9uID0gbmV3IEZ1bmN0aW9uKCJyZXR1cm4gKCIgKyBleHByZXNzaW9uICsgIikiKTsKICAgICAgfQogICAgICBjYXRjaCAoZSkgewogICAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiAiSmF2YVNjcmlwdCBldmFsdWF0aW9uIGVycm9yOiAiICsgZS5tZXNzYWdlICsgIiBmcm9tIGAiICsgZXhwcmVzc2lvbiArICJgIiwgZmlsZW5hbWU6IHRoaXMuZmlsZUluZm8oKS5maWxlbmFtZSwKICAgICAgICAgICAgICBpbmRleDogdGhpcy5nZXRJbmRleCgpIH07CiAgICAgIH0KICAgICAgdmFyIHZhcmlhYmxlcyA9IGNvbnRleHQuZnJhbWVzWzBdLnZhcmlhYmxlcygpOwogICAgICBmb3IgKHZhciBrIGluIHZhcmlhYmxlcykgewogICAgICAgICAgaWYgKHZhcmlhYmxlcy5oYXNPd25Qcm9wZXJ0eShrKSkgewogICAgICAgICAgICAgIC8qIGpzaGludCBsb29wZnVuYzp0cnVlICovCiAgICAgICAgICAgICAgZXZhbENvbnRleHRbay5zbGljZSgxKV0gPSB7CiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YXJpYWJsZXNba10udmFsdWUsCiAgICAgICAgICAgICAgICAgIHRvSlM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmV2YWwoY29udGV4dCkudG9DU1MoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH07CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgdHJ5IHsKICAgICAgICAgIHJlc3VsdCA9IGV4cHJlc3Npb24uY2FsbChldmFsQ29udGV4dCk7CiAgICAgIH0KICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgIHRocm93IHsgbWVzc2FnZTogIkphdmFTY3JpcHQgZXZhbHVhdGlvbiBlcnJvcjogJyIgKyBlLm5hbWUgKyAiOiAiICsgZS5tZXNzYWdlLnJlcGxhY2UoL1siXS9nLCAnXCcnKSArICInIiwgZmlsZW5hbWU6IHRoaXMuZmlsZUluZm8oKS5maWxlbmFtZSwKICAgICAgICAgICAgICBpbmRleDogdGhpcy5nZXRJbmRleCgpIH07CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9OwogIEpzRXZhbE5vZGUucHJvdG90eXBlLmpzaWZ5ID0gZnVuY3Rpb24gKG9iaikgewogICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmoudmFsdWUpICYmIChvYmoudmFsdWUubGVuZ3RoID4gMSkpIHsKICAgICAgICAgIHJldHVybiAiWyIgKyBvYmoudmFsdWUubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LnRvQ1NTKCk7IH0pLmpvaW4oJywgJykgKyAiXSI7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICByZXR1cm4gb2JqLnRvQ1NTKCk7CiAgICAgIH0KICB9OwoKICB2YXIgSmF2YVNjcmlwdCA9IGZ1bmN0aW9uIChzdHJpbmcsIGVzY2FwZWQsIGluZGV4LCBjdXJyZW50RmlsZUluZm8pIHsKICAgICAgdGhpcy5lc2NhcGVkID0gZXNjYXBlZDsKICAgICAgdGhpcy5leHByZXNzaW9uID0gc3RyaW5nOwogICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwogICAgICB0aGlzLl9maWxlSW5mbyA9IGN1cnJlbnRGaWxlSW5mbzsKICB9OwogIEphdmFTY3JpcHQucHJvdG90eXBlID0gbmV3IEpzRXZhbE5vZGUoKTsKICBKYXZhU2NyaXB0LnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZXZhbHVhdGVKYXZhU2NyaXB0KHRoaXMuZXhwcmVzc2lvbiwgY29udGV4dCk7CiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHJlc3VsdDsKICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInICYmICFpc05hTihyZXN1bHQpKSB7CiAgICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihyZXN1bHQpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICByZXR1cm4gbmV3IFF1b3RlZCgiXCIiICsgcmVzdWx0ICsgIlwiIiwgcmVzdWx0LCB0aGlzLmVzY2FwZWQsIHRoaXMuX2luZGV4KTsKICAgICAgfQogICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHsKICAgICAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzKHJlc3VsdC5qb2luKCcsICcpKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzKHJlc3VsdCk7CiAgICAgIH0KICB9OwogIEphdmFTY3JpcHQucHJvdG90eXBlLnR5cGUgPSAnSmF2YVNjcmlwdCc7CgogIHZhciBBc3NpZ25tZW50ID0gZnVuY3Rpb24gKGtleSwgdmFsKSB7CiAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICB0aGlzLnZhbHVlID0gdmFsOwogIH07CiAgQXNzaWdubWVudC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIEFzc2lnbm1lbnQucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIHRoaXMudmFsdWUgPSB2aXNpdG9yLnZpc2l0KHRoaXMudmFsdWUpOwogIH07CiAgQXNzaWdubWVudC5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIGlmICh0aGlzLnZhbHVlLmV2YWwpIHsKICAgICAgICAgIHJldHVybiBuZXcgQXNzaWdubWVudCh0aGlzLmtleSwgdGhpcy52YWx1ZS5ldmFsKGNvbnRleHQpKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpczsKICB9OwogIEFzc2lnbm1lbnQucHJvdG90eXBlLmdlbkNTUyA9IGZ1bmN0aW9uIChjb250ZXh0LCBvdXRwdXQpIHsKICAgICAgb3V0cHV0LmFkZCh0aGlzLmtleSArICI9Iik7CiAgICAgIGlmICh0aGlzLnZhbHVlLmdlbkNTUykgewogICAgICAgICAgdGhpcy52YWx1ZS5nZW5DU1MoY29udGV4dCwgb3V0cHV0KTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIG91dHB1dC5hZGQodGhpcy52YWx1ZSk7CiAgICAgIH0KICB9OwogIEFzc2lnbm1lbnQucHJvdG90eXBlLnR5cGUgPSAnQXNzaWdubWVudCc7CgogIHZhciBDb25kaXRpb24gPSBmdW5jdGlvbiAob3AsIGwsIHIsIGksIG5lZ2F0ZSkgewogICAgICB0aGlzLm9wID0gb3AudHJpbSgpOwogICAgICB0aGlzLmx2YWx1ZSA9IGw7CiAgICAgIHRoaXMucnZhbHVlID0gcjsKICAgICAgdGhpcy5faW5kZXggPSBpOwogICAgICB0aGlzLm5lZ2F0ZSA9IG5lZ2F0ZTsKICB9OwogIENvbmRpdGlvbi5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIENvbmRpdGlvbi5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgICAgdGhpcy5sdmFsdWUgPSB2aXNpdG9yLnZpc2l0KHRoaXMubHZhbHVlKTsKICAgICAgdGhpcy5ydmFsdWUgPSB2aXNpdG9yLnZpc2l0KHRoaXMucnZhbHVlKTsKICB9OwogIENvbmRpdGlvbi5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciByZXN1bHQgPSAoZnVuY3Rpb24gKG9wLCBhLCBiKSB7CiAgICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgICAgICAgY2FzZSAnYW5kJzogcmV0dXJuIGEgJiYgYjsKICAgICAgICAgICAgICBjYXNlICdvcic6IHJldHVybiBhIHx8IGI7CiAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgc3dpdGNoIChOb2RlLmNvbXBhcmUoYSwgYikpIHsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgLTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wID09PSAnPCcgfHwgb3AgPT09ICc9PCcgfHwgb3AgPT09ICc8PSc7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wID09PSAnPScgfHwgb3AgPT09ICc+PScgfHwgb3AgPT09ICc9PCcgfHwgb3AgPT09ICc8PSc7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wID09PSAnPicgfHwgb3AgPT09ICc+PSc7CiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9KSh0aGlzLm9wLCB0aGlzLmx2YWx1ZS5ldmFsKGNvbnRleHQpLCB0aGlzLnJ2YWx1ZS5ldmFsKGNvbnRleHQpKTsKICAgICAgcmV0dXJuIHRoaXMubmVnYXRlID8gIXJlc3VsdCA6IHJlc3VsdDsKICB9OwogIENvbmRpdGlvbi5wcm90b3R5cGUudHlwZSA9ICdDb25kaXRpb24nOwoKICB2YXIgVW5pY29kZURlc2NyaXB0b3IgPSBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogIH07CiAgVW5pY29kZURlc2NyaXB0b3IucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBVbmljb2RlRGVzY3JpcHRvci5wcm90b3R5cGUudHlwZSA9ICdVbmljb2RlRGVzY3JpcHRvcic7CgogIHZhciBOZWdhdGl2ZSA9IGZ1bmN0aW9uIChub2RlKSB7CiAgICAgIHRoaXMudmFsdWUgPSBub2RlOwogIH07CiAgTmVnYXRpdmUucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBOZWdhdGl2ZS5wcm90b3R5cGUuZ2VuQ1NTID0gZnVuY3Rpb24gKGNvbnRleHQsIG91dHB1dCkgewogICAgICBvdXRwdXQuYWRkKCctJyk7CiAgICAgIHRoaXMudmFsdWUuZ2VuQ1NTKGNvbnRleHQsIG91dHB1dCk7CiAgfTsKICBOZWdhdGl2ZS5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIGlmIChjb250ZXh0LmlzTWF0aE9uKCkpIHsKICAgICAgICAgIHJldHVybiAobmV3IE9wZXJhdGlvbignKicsIFtuZXcgRGltZW5zaW9uKC0xKSwgdGhpcy52YWx1ZV0pKS5ldmFsKGNvbnRleHQpOwogICAgICB9CiAgICAgIHJldHVybiBuZXcgTmVnYXRpdmUodGhpcy52YWx1ZS5ldmFsKGNvbnRleHQpKTsKICB9OwogIE5lZ2F0aXZlLnByb3RvdHlwZS50eXBlID0gJ05lZ2F0aXZlJzsKCiAgdmFyIEV4dGVuZCA9IGZ1bmN0aW9uIChzZWxlY3Rvciwgb3B0aW9uLCBpbmRleCwgY3VycmVudEZpbGVJbmZvLCB2aXNpYmlsaXR5SW5mbykgewogICAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7CiAgICAgIHRoaXMub3B0aW9uID0gb3B0aW9uOwogICAgICB0aGlzLm9iamVjdF9pZCA9IEV4dGVuZC5uZXh0X2lkKys7CiAgICAgIHRoaXMucGFyZW50X2lkcyA9IFt0aGlzLm9iamVjdF9pZF07CiAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CiAgICAgIHRoaXMuX2ZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogICAgICB0aGlzLmNvcHlWaXNpYmlsaXR5SW5mbyh2aXNpYmlsaXR5SW5mbyk7CiAgICAgIHRoaXMuYWxsb3dSb290ID0gdHJ1ZTsKICAgICAgc3dpdGNoIChvcHRpb24pIHsKICAgICAgICAgIGNhc2UgJ2FsbCc6CiAgICAgICAgICAgICAgdGhpcy5hbGxvd0JlZm9yZSA9IHRydWU7CiAgICAgICAgICAgICAgdGhpcy5hbGxvd0FmdGVyID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgdGhpcy5hbGxvd0JlZm9yZSA9IGZhbHNlOwogICAgICAgICAgICAgIHRoaXMuYWxsb3dBZnRlciA9IGZhbHNlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIHRoaXMuc2V0UGFyZW50KHRoaXMuc2VsZWN0b3IsIHRoaXMpOwogIH07CiAgRXh0ZW5kLnByb3RvdHlwZSA9IG5ldyBOb2RlKCk7CiAgRXh0ZW5kLnByb3RvdHlwZS5hY2NlcHQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgICB0aGlzLnNlbGVjdG9yID0gdmlzaXRvci52aXNpdCh0aGlzLnNlbGVjdG9yKTsKICB9OwogIEV4dGVuZC5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHJldHVybiBuZXcgRXh0ZW5kKHRoaXMuc2VsZWN0b3IuZXZhbChjb250ZXh0KSwgdGhpcy5vcHRpb24sIHRoaXMuZ2V0SW5kZXgoKSwgdGhpcy5maWxlSW5mbygpLCB0aGlzLnZpc2liaWxpdHlJbmZvKCkpOwogIH07CiAgRXh0ZW5kLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHJldHVybiBuZXcgRXh0ZW5kKHRoaXMuc2VsZWN0b3IsIHRoaXMub3B0aW9uLCB0aGlzLmdldEluZGV4KCksIHRoaXMuZmlsZUluZm8oKSwgdGhpcy52aXNpYmlsaXR5SW5mbygpKTsKICB9OwogIC8vIGl0IGNvbmNhdGVuYXRlcyAoam9pbnMpIGFsbCBzZWxlY3RvcnMgaW4gc2VsZWN0b3IgYXJyYXkKICBFeHRlbmQucHJvdG90eXBlLmZpbmRTZWxmU2VsZWN0b3JzID0gZnVuY3Rpb24gKHNlbGVjdG9ycykgewogICAgICB2YXIgc2VsZkVsZW1lbnRzID0gW107CiAgICAgIHZhciBpOwogICAgICB2YXIgc2VsZWN0b3JFbGVtZW50czsKICAgICAgZm9yIChpID0gMDsgaSA8IHNlbGVjdG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgc2VsZWN0b3JFbGVtZW50cyA9IHNlbGVjdG9yc1tpXS5lbGVtZW50czsKICAgICAgICAgIC8vIGR1cGxpY2F0ZSB0aGUgbG9naWMgaW4gZ2VuQ1NTIGZ1bmN0aW9uIGluc2lkZSB0aGUgc2VsZWN0b3Igbm9kZS4KICAgICAgICAgIC8vIGZ1dHVyZSBUT0RPIC0gbW92ZSBib3RoIGxvZ2ljcyBpbnRvIHRoZSBzZWxlY3RvciBqb2luZXIgdmlzaXRvcgogICAgICAgICAgaWYgKGkgPiAwICYmIHNlbGVjdG9yRWxlbWVudHMubGVuZ3RoICYmIHNlbGVjdG9yRWxlbWVudHNbMF0uY29tYmluYXRvci52YWx1ZSA9PT0gJycpIHsKICAgICAgICAgICAgICBzZWxlY3RvckVsZW1lbnRzWzBdLmNvbWJpbmF0b3IudmFsdWUgPSAnICc7CiAgICAgICAgICB9CiAgICAgICAgICBzZWxmRWxlbWVudHMgPSBzZWxmRWxlbWVudHMuY29uY2F0KHNlbGVjdG9yc1tpXS5lbGVtZW50cyk7CiAgICAgIH0KICAgICAgdGhpcy5zZWxmU2VsZWN0b3JzID0gW25ldyBTZWxlY3RvcihzZWxmRWxlbWVudHMpXTsKICAgICAgdGhpcy5zZWxmU2VsZWN0b3JzWzBdLmNvcHlWaXNpYmlsaXR5SW5mbyh0aGlzLnZpc2liaWxpdHlJbmZvKCkpOwogIH07CiAgLyoqCiAgICogVXNlZCB3aXRoIHRoZSBleHRlbmQgdmlzaXRvcgogICAqLwogIEV4dGVuZC5uZXh0X2lkID0gMDsKICBFeHRlbmQucHJvdG90eXBlLnR5cGUgPSAnRXh0ZW5kJzsKCiAgdmFyIFZhcmlhYmxlQ2FsbCA9IGZ1bmN0aW9uICh2YXJpYWJsZSwgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbykgewogICAgICB0aGlzLnZhcmlhYmxlID0gdmFyaWFibGU7CiAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CiAgICAgIHRoaXMuX2ZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogICAgICB0aGlzLmFsbG93Um9vdCA9IHRydWU7CiAgfTsKICBWYXJpYWJsZUNhbGwucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBWYXJpYWJsZUNhbGwucHJvdG90eXBlLmV2YWwgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgICB2YXIgcnVsZXM7CiAgICAgIHZhciBkZXRhY2hlZFJ1bGVzZXQgPSBuZXcgVmFyaWFibGUodGhpcy52YXJpYWJsZSwgdGhpcy5nZXRJbmRleCgpLCB0aGlzLmZpbGVJbmZvKCkpLmV2YWwoY29udGV4dCk7CiAgICAgIHZhciBlcnJvciA9IG5ldyBMZXNzRXJyb3IoeyBtZXNzYWdlOiAiQ291bGQgbm90IGV2YWx1YXRlIHZhcmlhYmxlIGNhbGwgIiArIHRoaXMudmFyaWFibGUgfSk7CiAgICAgIGlmICghZGV0YWNoZWRSdWxlc2V0LnJ1bGVzZXQpIHsKICAgICAgICAgIGlmIChkZXRhY2hlZFJ1bGVzZXQucnVsZXMpIHsKICAgICAgICAgICAgICBydWxlcyA9IGRldGFjaGVkUnVsZXNldDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGV0YWNoZWRSdWxlc2V0KSkgewogICAgICAgICAgICAgIHJ1bGVzID0gbmV3IFJ1bGVzZXQoJycsIGRldGFjaGVkUnVsZXNldCk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRldGFjaGVkUnVsZXNldC52YWx1ZSkpIHsKICAgICAgICAgICAgICBydWxlcyA9IG5ldyBSdWxlc2V0KCcnLCBkZXRhY2hlZFJ1bGVzZXQudmFsdWUpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgICB9CiAgICAgICAgICBkZXRhY2hlZFJ1bGVzZXQgPSBuZXcgRGV0YWNoZWRSdWxlc2V0KHJ1bGVzKTsKICAgICAgfQogICAgICBpZiAoZGV0YWNoZWRSdWxlc2V0LnJ1bGVzZXQpIHsKICAgICAgICAgIHJldHVybiBkZXRhY2hlZFJ1bGVzZXQuY2FsbEV2YWwoY29udGV4dCk7CiAgICAgIH0KICAgICAgdGhyb3cgZXJyb3I7CiAgfTsKICBWYXJpYWJsZUNhbGwucHJvdG90eXBlLnR5cGUgPSAnVmFyaWFibGVDYWxsJzsKCiAgdmFyIE5hbWVzcGFjZVZhbHVlID0gZnVuY3Rpb24gKHJ1bGVDYWxsLCBsb29rdXBzLCBpbmRleCwgZmlsZUluZm8pIHsKICAgICAgdGhpcy52YWx1ZSA9IHJ1bGVDYWxsOwogICAgICB0aGlzLmxvb2t1cHMgPSBsb29rdXBzOwogICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwogICAgICB0aGlzLl9maWxlSW5mbyA9IGZpbGVJbmZvOwogIH07CiAgTmFtZXNwYWNlVmFsdWUucHJvdG90eXBlID0gbmV3IE5vZGUoKTsKICBOYW1lc3BhY2VWYWx1ZS5wcm90b3R5cGUuZXZhbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciBpOwogICAgICB2YXIgbmFtZTsKICAgICAgdmFyIHJ1bGVzID0gdGhpcy52YWx1ZS5ldmFsKGNvbnRleHQpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sb29rdXBzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBuYW1lID0gdGhpcy5sb29rdXBzW2ldOwogICAgICAgICAgLyoqCiAgICAgICAgICAgKiBFdmFsJ2QgRFJzIHJldHVybiBydWxlc2V0cy4KICAgICAgICAgICAqIEV2YWwnZCBtaXhpbnMgcmV0dXJuIHJ1bGVzLCBzbyBsZXQncyBtYWtlIGEgcnVsZXNldCBpZiB3ZSBuZWVkIGl0LgogICAgICAgICAgICogV2UgbmVlZCB0byBkbyB0aGlzIGJlY2F1c2Ugb2YgbGF0ZSBwYXJzaW5nIG9mIHZhbHVlcwogICAgICAgICAgICovCiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShydWxlcykpIHsKICAgICAgICAgICAgICBydWxlcyA9IG5ldyBSdWxlc2V0KFtuZXcgU2VsZWN0b3IoKV0sIHJ1bGVzKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChuYW1lID09PSAnJykgewogICAgICAgICAgICAgIHJ1bGVzID0gcnVsZXMubGFzdERlY2xhcmF0aW9uKCk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gJ0AnKSB7CiAgICAgICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDEpID09PSAnQCcpIHsKICAgICAgICAgICAgICAgICAgbmFtZSA9ICJAIiArIG5ldyBWYXJpYWJsZShuYW1lLnN1YnN0cigxKSkuZXZhbChjb250ZXh0KS52YWx1ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHJ1bGVzLnZhcmlhYmxlcykgewogICAgICAgICAgICAgICAgICBydWxlcyA9IHJ1bGVzLnZhcmlhYmxlKG5hbWUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIXJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ05hbWUnLCBtZXNzYWdlOiAidmFyaWFibGUgIiArIG5hbWUgKyAiIG5vdCBmb3VuZCIsIGZpbGVuYW1lOiB0aGlzLmZpbGVJbmZvKCkuZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5nZXRJbmRleCgpIH07CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgaWYgKG5hbWUuc3Vic3RyaW5nKDAsIDIpID09PSAnJEAnKSB7CiAgICAgICAgICAgICAgICAgIG5hbWUgPSAiJCIgKyBuZXcgVmFyaWFibGUobmFtZS5zdWJzdHIoMSkpLmV2YWwoY29udGV4dCkudmFsdWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5jaGFyQXQoMCkgPT09ICckJyA/IG5hbWUgOiAiJCIgKyBuYW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAocnVsZXMucHJvcGVydGllcykgewogICAgICAgICAgICAgICAgICBydWxlcyA9IHJ1bGVzLnByb3BlcnR5KG5hbWUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIXJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ05hbWUnLCBtZXNzYWdlOiAicHJvcGVydHkgXCIiICsgbmFtZS5zdWJzdHIoMSkgKyAiXCIgbm90IGZvdW5kIiwgZmlsZW5hbWU6IHRoaXMuZmlsZUluZm8oKS5maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmdldEluZGV4KCkgfTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gUHJvcGVydGllcyBhcmUgYW4gYXJyYXkgb2YgdmFsdWVzLCBzaW5jZSBhIHJ1bGVzZXQgY2FuIGhhdmUgbXVsdGlwbGUgcHJvcHMuCiAgICAgICAgICAgICAgLy8gV2UgcGljayB0aGUgbGFzdCBvbmUgKHRoZSAiY2FzY2FkZWQiIHZhbHVlKQogICAgICAgICAgICAgIHJ1bGVzID0gcnVsZXNbcnVsZXMubGVuZ3RoIC0gMV07CiAgICAgICAgICB9CiAgICAgICAgICBpZiAocnVsZXMudmFsdWUpIHsKICAgICAgICAgICAgICBydWxlcyA9IHJ1bGVzLmV2YWwoY29udGV4dCkudmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAocnVsZXMucnVsZXNldCkgewogICAgICAgICAgICAgIHJ1bGVzID0gcnVsZXMucnVsZXNldC5ldmFsKGNvbnRleHQpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBydWxlczsKICB9OwogIE5hbWVzcGFjZVZhbHVlLnByb3RvdHlwZS50eXBlID0gJ05hbWVzcGFjZVZhbHVlJzsKCiAgdmFyIERlZmluaXRpb24gPSBmdW5jdGlvbiAobmFtZSwgcGFyYW1zLCBydWxlcywgY29uZGl0aW9uLCB2YXJpYWRpYywgZnJhbWVzLCB2aXNpYmlsaXR5SW5mbykgewogICAgICB0aGlzLm5hbWUgPSBuYW1lIHx8ICdhbm9ueW1vdXMgbWl4aW4nOwogICAgICB0aGlzLnNlbGVjdG9ycyA9IFtuZXcgU2VsZWN0b3IoW25ldyBFbGVtZW50KG51bGwsIG5hbWUsIGZhbHNlLCB0aGlzLl9pbmRleCwgdGhpcy5fZmlsZUluZm8pXSldOwogICAgICB0aGlzLnBhcmFtcyA9IHBhcmFtczsKICAgICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb247CiAgICAgIHRoaXMudmFyaWFkaWMgPSB2YXJpYWRpYzsKICAgICAgdGhpcy5hcml0eSA9IHBhcmFtcy5sZW5ndGg7CiAgICAgIHRoaXMucnVsZXMgPSBydWxlczsKICAgICAgdGhpcy5fbG9va3VwcyA9IHt9OwogICAgICB2YXIgb3B0aW9uYWxQYXJhbWV0ZXJzID0gW107CiAgICAgIHRoaXMucmVxdWlyZWQgPSBwYXJhbXMucmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgcCkgewogICAgICAgICAgaWYgKCFwLm5hbWUgfHwgKHAubmFtZSAmJiAhcC52YWx1ZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gY291bnQgKyAxOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgb3B0aW9uYWxQYXJhbWV0ZXJzLnB1c2gocC5uYW1lKTsKICAgICAgICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgICAgICB9CiAgICAgIH0sIDApOwogICAgICB0aGlzLm9wdGlvbmFsUGFyYW1ldGVycyA9IG9wdGlvbmFsUGFyYW1ldGVyczsKICAgICAgdGhpcy5mcmFtZXMgPSBmcmFtZXM7CiAgICAgIHRoaXMuY29weVZpc2liaWxpdHlJbmZvKHZpc2liaWxpdHlJbmZvKTsKICAgICAgdGhpcy5hbGxvd1Jvb3QgPSB0cnVlOwogIH07CiAgRGVmaW5pdGlvbi5wcm90b3R5cGUgPSBuZXcgUnVsZXNldCgpOwogIERlZmluaXRpb24ucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICAgIGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtcy5sZW5ndGgpIHsKICAgICAgICAgIHRoaXMucGFyYW1zID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMucGFyYW1zKTsKICAgICAgfQogICAgICB0aGlzLnJ1bGVzID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMucnVsZXMpOwogICAgICBpZiAodGhpcy5jb25kaXRpb24pIHsKICAgICAgICAgIHRoaXMuY29uZGl0aW9uID0gdmlzaXRvci52aXNpdCh0aGlzLmNvbmRpdGlvbik7CiAgICAgIH0KICB9OwogIERlZmluaXRpb24ucHJvdG90eXBlLmV2YWxQYXJhbXMgPSBmdW5jdGlvbiAoY29udGV4dCwgbWl4aW5FbnYsIGFyZ3MsIGV2YWxkQXJndW1lbnRzKSB7CiAgICAgIC8qIGpzaGludCBib3NzOnRydWUgKi8KICAgICAgdmFyIGZyYW1lID0gbmV3IFJ1bGVzZXQobnVsbCwgbnVsbCk7CiAgICAgIHZhciB2YXJhcmdzOwogICAgICB2YXIgYXJnOwogICAgICB2YXIgcGFyYW1zID0gY29weUFycmF5KHRoaXMucGFyYW1zKTsKICAgICAgdmFyIGk7CiAgICAgIHZhciBqOwogICAgICB2YXIgdmFsOwogICAgICB2YXIgbmFtZTsKICAgICAgdmFyIGlzTmFtZWRGb3VuZDsKICAgICAgdmFyIGFyZ0luZGV4OwogICAgICB2YXIgYXJnc0xlbmd0aCA9IDA7CiAgICAgIGlmIChtaXhpbkVudi5mcmFtZXMgJiYgbWl4aW5FbnYuZnJhbWVzWzBdICYmIG1peGluRW52LmZyYW1lc1swXS5mdW5jdGlvblJlZ2lzdHJ5KSB7CiAgICAgICAgICBmcmFtZS5mdW5jdGlvblJlZ2lzdHJ5ID0gbWl4aW5FbnYuZnJhbWVzWzBdLmZ1bmN0aW9uUmVnaXN0cnkuaW5oZXJpdCgpOwogICAgICB9CiAgICAgIG1peGluRW52ID0gbmV3IGNvbnRleHRzLkV2YWwobWl4aW5FbnYsIFtmcmFtZV0uY29uY2F0KG1peGluRW52LmZyYW1lcykpOwogICAgICBpZiAoYXJncykgewogICAgICAgICAgYXJncyA9IGNvcHlBcnJheShhcmdzKTsKICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aDsKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBhcmcgPSBhcmdzW2ldOwogICAgICAgICAgICAgIGlmIChuYW1lID0gKGFyZyAmJiBhcmcubmFtZSkpIHsKICAgICAgICAgICAgICAgICAgaXNOYW1lZEZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBwYXJhbXMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZhbGRBcmd1bWVudHNbal0gJiYgbmFtZSA9PT0gcGFyYW1zW2pdLm5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsZEFyZ3VtZW50c1tqXSA9IGFyZy52YWx1ZS5ldmFsKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnByZXBlbmRSdWxlKG5ldyBEZWNsYXJhdGlvbihuYW1lLCBhcmcudmFsdWUuZXZhbChjb250ZXh0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmFtZWRGb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGlzTmFtZWRGb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAgYXJncy5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ1J1bnRpbWUnLCBtZXNzYWdlOiAiTmFtZWQgYXJndW1lbnQgZm9yICIgKyB0aGlzLm5hbWUgKyAiICIgKyBhcmdzW2ldLm5hbWUgKyAiIG5vdCBmb3VuZCIgfTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICBhcmdJbmRleCA9IDA7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmIChldmFsZEFyZ3VtZW50c1tpXSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgYXJnID0gYXJncyAmJiBhcmdzW2FyZ0luZGV4XTsKICAgICAgICAgIGlmIChuYW1lID0gcGFyYW1zW2ldLm5hbWUpIHsKICAgICAgICAgICAgICBpZiAocGFyYW1zW2ldLnZhcmlhZGljKSB7CiAgICAgICAgICAgICAgICAgIHZhcmFyZ3MgPSBbXTsKICAgICAgICAgICAgICAgICAgZm9yIChqID0gYXJnSW5kZXg7IGogPCBhcmdzTGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgIHZhcmFyZ3MucHVzaChhcmdzW2pdLnZhbHVlLmV2YWwoY29udGV4dCkpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZyYW1lLnByZXBlbmRSdWxlKG5ldyBEZWNsYXJhdGlvbihuYW1lLCBuZXcgRXhwcmVzc2lvbih2YXJhcmdzKS5ldmFsKGNvbnRleHQpKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICB2YWwgPSBhcmcgJiYgYXJnLnZhbHVlOwogICAgICAgICAgICAgICAgICBpZiAodmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdhcyBhIG1peGluIGNhbGwsIHBhc3MgaW4gYSBkZXRhY2hlZCBydWxlc2V0IG9mIGl0J3MgZXZhbCdkIHJ1bGVzCiAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gbmV3IERldGFjaGVkUnVsZXNldChuZXcgUnVsZXNldCgnJywgdmFsKSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuZXZhbChjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJhbXNbaV0udmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcmFtc1tpXS52YWx1ZS5ldmFsKG1peGluRW52KTsKICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnJlc2V0Q2FjaGUoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ1J1bnRpbWUnLCBtZXNzYWdlOiAid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgIiArIHRoaXMubmFtZSArICIgKCIgKyBhcmdzTGVuZ3RoICsgIiBmb3IgIiArIHRoaXMuYXJpdHkgKyAiKSIgfTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmcmFtZS5wcmVwZW5kUnVsZShuZXcgRGVjbGFyYXRpb24obmFtZSwgdmFsKSk7CiAgICAgICAgICAgICAgICAgIGV2YWxkQXJndW1lbnRzW2ldID0gdmFsOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChwYXJhbXNbaV0udmFyaWFkaWMgJiYgYXJncykgewogICAgICAgICAgICAgIGZvciAoaiA9IGFyZ0luZGV4OyBqIDwgYXJnc0xlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgIGV2YWxkQXJndW1lbnRzW2pdID0gYXJnc1tqXS52YWx1ZS5ldmFsKGNvbnRleHQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGFyZ0luZGV4Kys7CiAgICAgIH0KICAgICAgcmV0dXJuIGZyYW1lOwogIH07CiAgRGVmaW5pdGlvbi5wcm90b3R5cGUubWFrZUltcG9ydGFudCA9IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHJ1bGVzID0gIXRoaXMucnVsZXMgPyB0aGlzLnJ1bGVzIDogdGhpcy5ydWxlcy5tYXAoZnVuY3Rpb24gKHIpIHsKICAgICAgICAgIGlmIChyLm1ha2VJbXBvcnRhbnQpIHsKICAgICAgICAgICAgICByZXR1cm4gci5tYWtlSW1wb3J0YW50KHRydWUpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgICB9CiAgICAgIH0pOwogICAgICB2YXIgcmVzdWx0ID0gbmV3IERlZmluaXRpb24odGhpcy5uYW1lLCB0aGlzLnBhcmFtcywgcnVsZXMsIHRoaXMuY29uZGl0aW9uLCB0aGlzLnZhcmlhZGljLCB0aGlzLmZyYW1lcyk7CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfTsKICBEZWZpbml0aW9uLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgcmV0dXJuIG5ldyBEZWZpbml0aW9uKHRoaXMubmFtZSwgdGhpcy5wYXJhbXMsIHRoaXMucnVsZXMsIHRoaXMuY29uZGl0aW9uLCB0aGlzLnZhcmlhZGljLCB0aGlzLmZyYW1lcyB8fCBjb3B5QXJyYXkoY29udGV4dC5mcmFtZXMpKTsKICB9OwogIERlZmluaXRpb24ucHJvdG90eXBlLmV2YWxDYWxsID0gZnVuY3Rpb24gKGNvbnRleHQsIGFyZ3MsIGltcG9ydGFudCkgewogICAgICB2YXIgX2FyZ3VtZW50cyA9IFtdOwogICAgICB2YXIgbWl4aW5GcmFtZXMgPSB0aGlzLmZyYW1lcyA/IHRoaXMuZnJhbWVzLmNvbmNhdChjb250ZXh0LmZyYW1lcykgOiBjb250ZXh0LmZyYW1lczsKICAgICAgdmFyIGZyYW1lID0gdGhpcy5ldmFsUGFyYW1zKGNvbnRleHQsIG5ldyBjb250ZXh0cy5FdmFsKGNvbnRleHQsIG1peGluRnJhbWVzKSwgYXJncywgX2FyZ3VtZW50cyk7CiAgICAgIHZhciBydWxlczsKICAgICAgdmFyIHJ1bGVzZXQ7CiAgICAgIGZyYW1lLnByZXBlbmRSdWxlKG5ldyBEZWNsYXJhdGlvbignQGFyZ3VtZW50cycsIG5ldyBFeHByZXNzaW9uKF9hcmd1bWVudHMpLmV2YWwoY29udGV4dCkpKTsKICAgICAgcnVsZXMgPSBjb3B5QXJyYXkodGhpcy5ydWxlcyk7CiAgICAgIHJ1bGVzZXQgPSBuZXcgUnVsZXNldChudWxsLCBydWxlcyk7CiAgICAgIHJ1bGVzZXQub3JpZ2luYWxSdWxlc2V0ID0gdGhpczsKICAgICAgcnVsZXNldCA9IHJ1bGVzZXQuZXZhbChuZXcgY29udGV4dHMuRXZhbChjb250ZXh0LCBbdGhpcywgZnJhbWVdLmNvbmNhdChtaXhpbkZyYW1lcykpKTsKICAgICAgaWYgKGltcG9ydGFudCkgewogICAgICAgICAgcnVsZXNldCA9IHJ1bGVzZXQubWFrZUltcG9ydGFudCgpOwogICAgICB9CiAgICAgIHJldHVybiBydWxlc2V0OwogIH07CiAgRGVmaW5pdGlvbi5wcm90b3R5cGUubWF0Y2hDb25kaXRpb24gPSBmdW5jdGlvbiAoYXJncywgY29udGV4dCkgewogICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgIXRoaXMuY29uZGl0aW9uLmV2YWwobmV3IGNvbnRleHRzLkV2YWwoY29udGV4dCwgW3RoaXMuZXZhbFBhcmFtcyhjb250ZXh0LCAvKiB0aGUgcGFyYW1ldGVyIHZhcmlhYmxlcyAqLyBuZXcgY29udGV4dHMuRXZhbChjb250ZXh0LCB0aGlzLmZyYW1lcyA/IHRoaXMuZnJhbWVzLmNvbmNhdChjb250ZXh0LmZyYW1lcykgOiBjb250ZXh0LmZyYW1lcyksIGFyZ3MsIFtdKV0KICAgICAgICAgIC5jb25jYXQodGhpcy5mcmFtZXMgfHwgW10pIC8vIHRoZSBwYXJlbnQgbmFtZXNwYWNlL21peGluIGZyYW1lcwogICAgICAgICAgLmNvbmNhdChjb250ZXh0LmZyYW1lcykpKSkgeyAvLyB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBmcmFtZXMKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICB9OwogIERlZmluaXRpb24ucHJvdG90eXBlLm1hdGNoQXJncyA9IGZ1bmN0aW9uIChhcmdzLCBjb250ZXh0KSB7CiAgICAgIHZhciBhbGxBcmdzQ250ID0gKGFyZ3MgJiYgYXJncy5sZW5ndGgpIHx8IDA7CiAgICAgIHZhciBsZW47CiAgICAgIHZhciBvcHRpb25hbFBhcmFtZXRlcnMgPSB0aGlzLm9wdGlvbmFsUGFyYW1ldGVyczsKICAgICAgdmFyIHJlcXVpcmVkQXJnc0NudCA9ICFhcmdzID8gMCA6IGFyZ3MucmVkdWNlKGZ1bmN0aW9uIChjb3VudCwgcCkgewogICAgICAgICAgaWYgKG9wdGlvbmFsUGFyYW1ldGVycy5pbmRleE9mKHAubmFtZSkgPCAwKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGNvdW50ICsgMTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBjb3VudDsKICAgICAgICAgIH0KICAgICAgfSwgMCk7CiAgICAgIGlmICghdGhpcy52YXJpYWRpYykgewogICAgICAgICAgaWYgKHJlcXVpcmVkQXJnc0NudCA8IHRoaXMucmVxdWlyZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoYWxsQXJnc0NudCA+IHRoaXMucGFyYW1zLmxlbmd0aCkgewogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIGlmIChyZXF1aXJlZEFyZ3NDbnQgPCAodGhpcy5yZXF1aXJlZCAtIDEpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIC8vIGNoZWNrIHBhdHRlcm5zCiAgICAgIGxlbiA9IE1hdGgubWluKHJlcXVpcmVkQXJnc0NudCwgdGhpcy5hcml0eSk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgIGlmICghdGhpcy5wYXJhbXNbaV0ubmFtZSAmJiAhdGhpcy5wYXJhbXNbaV0udmFyaWFkaWMpIHsKICAgICAgICAgICAgICBpZiAoYXJnc1tpXS52YWx1ZS5ldmFsKGNvbnRleHQpLnRvQ1NTKCkgIT0gdGhpcy5wYXJhbXNbaV0udmFsdWUuZXZhbChjb250ZXh0KS50b0NTUygpKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgfTsKICBEZWZpbml0aW9uLnByb3RvdHlwZS50eXBlID0gJ01peGluRGVmaW5pdGlvbic7CiAgRGVmaW5pdGlvbi5wcm90b3R5cGUuZXZhbEZpcnN0ID0gdHJ1ZTsKCiAgdmFyIE1peGluQ2FsbCA9IGZ1bmN0aW9uIChlbGVtZW50cywgYXJncywgaW5kZXgsIGN1cnJlbnRGaWxlSW5mbywgaW1wb3J0YW50KSB7CiAgICAgIHRoaXMuc2VsZWN0b3IgPSBuZXcgU2VsZWN0b3IoZWxlbWVudHMpOwogICAgICB0aGlzLmFyZ3VtZW50cyA9IGFyZ3MgfHwgW107CiAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CiAgICAgIHRoaXMuX2ZpbGVJbmZvID0gY3VycmVudEZpbGVJbmZvOwogICAgICB0aGlzLmltcG9ydGFudCA9IGltcG9ydGFudDsKICAgICAgdGhpcy5hbGxvd1Jvb3QgPSB0cnVlOwogICAgICB0aGlzLnNldFBhcmVudCh0aGlzLnNlbGVjdG9yLCB0aGlzKTsKICB9OwogIE1peGluQ2FsbC5wcm90b3R5cGUgPSBuZXcgTm9kZSgpOwogIE1peGluQ2FsbC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgICAgaWYgKHRoaXMuc2VsZWN0b3IpIHsKICAgICAgICAgIHRoaXMuc2VsZWN0b3IgPSB2aXNpdG9yLnZpc2l0KHRoaXMuc2VsZWN0b3IpOwogICAgICB9CiAgICAgIGlmICh0aGlzLmFyZ3VtZW50cy5sZW5ndGgpIHsKICAgICAgICAgIHRoaXMuYXJndW1lbnRzID0gdmlzaXRvci52aXNpdEFycmF5KHRoaXMuYXJndW1lbnRzKTsKICAgICAgfQogIH07CiAgTWl4aW5DYWxsLnByb3RvdHlwZS5ldmFsID0gZnVuY3Rpb24gKGNvbnRleHQpIHsKICAgICAgdmFyIG1peGluczsKICAgICAgdmFyIG1peGluOwogICAgICB2YXIgbWl4aW5QYXRoOwogICAgICB2YXIgYXJncyA9IFtdOwogICAgICB2YXIgYXJnOwogICAgICB2YXIgYXJnVmFsdWU7CiAgICAgIHZhciBydWxlcyA9IFtdOwogICAgICB2YXIgbWF0Y2ggPSBmYWxzZTsKICAgICAgdmFyIGk7CiAgICAgIHZhciBtOwogICAgICB2YXIgZjsKICAgICAgdmFyIGlzUmVjdXJzaXZlOwogICAgICB2YXIgaXNPbmVGb3VuZDsKICAgICAgdmFyIGNhbmRpZGF0ZXMgPSBbXTsKICAgICAgdmFyIGNhbmRpZGF0ZTsKICAgICAgdmFyIGNvbmRpdGlvblJlc3VsdCA9IFtdOwogICAgICB2YXIgZGVmYXVsdFJlc3VsdDsKICAgICAgdmFyIGRlZkZhbHNlRWl0aGVyQ2FzZSA9IC0xOwogICAgICB2YXIgZGVmTm9uZSA9IDA7CiAgICAgIHZhciBkZWZUcnVlID0gMTsKICAgICAgdmFyIGRlZkZhbHNlID0gMjsKICAgICAgdmFyIGNvdW50OwogICAgICB2YXIgb3JpZ2luYWxSdWxlc2V0OwogICAgICB2YXIgbm9Bcmd1bWVudHNGaWx0ZXI7CiAgICAgIHRoaXMuc2VsZWN0b3IgPSB0aGlzLnNlbGVjdG9yLmV2YWwoY29udGV4dCk7CiAgICAgIGZ1bmN0aW9uIGNhbGNEZWZHcm91cChtaXhpbiwgbWl4aW5QYXRoKSB7CiAgICAgICAgICB2YXIgZjsKICAgICAgICAgIHZhciBwOwogICAgICAgICAgdmFyIG5hbWVzcGFjZTsKICAgICAgICAgIGZvciAoZiA9IDA7IGYgPCAyOyBmKyspIHsKICAgICAgICAgICAgICBjb25kaXRpb25SZXN1bHRbZl0gPSB0cnVlOwogICAgICAgICAgICAgIGRlZmF1bHRGdW5jLnZhbHVlKGYpOwogICAgICAgICAgICAgIGZvciAocCA9IDA7IHAgPCBtaXhpblBhdGgubGVuZ3RoICYmIGNvbmRpdGlvblJlc3VsdFtmXTsgcCsrKSB7CiAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZSA9IG1peGluUGF0aFtwXTsKICAgICAgICAgICAgICAgICAgaWYgKG5hbWVzcGFjZS5tYXRjaENvbmRpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uUmVzdWx0W2ZdID0gY29uZGl0aW9uUmVzdWx0W2ZdICYmIG5hbWVzcGFjZS5tYXRjaENvbmRpdGlvbihudWxsLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAobWl4aW4ubWF0Y2hDb25kaXRpb24pIHsKICAgICAgICAgICAgICAgICAgY29uZGl0aW9uUmVzdWx0W2ZdID0gY29uZGl0aW9uUmVzdWx0W2ZdICYmIG1peGluLm1hdGNoQ29uZGl0aW9uKGFyZ3MsIGNvbnRleHQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChjb25kaXRpb25SZXN1bHRbMF0gfHwgY29uZGl0aW9uUmVzdWx0WzFdKSB7CiAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvblJlc3VsdFswXSAhPSBjb25kaXRpb25SZXN1bHRbMV0pIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvblJlc3VsdFsxXSA/CiAgICAgICAgICAgICAgICAgICAgICBkZWZUcnVlIDogZGVmRmFsc2U7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBkZWZOb25lOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGRlZkZhbHNlRWl0aGVyQ2FzZTsKICAgICAgfQogICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5hcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGFyZyA9IHRoaXMuYXJndW1lbnRzW2ldOwogICAgICAgICAgYXJnVmFsdWUgPSBhcmcudmFsdWUuZXZhbChjb250ZXh0KTsKICAgICAgICAgIGlmIChhcmcuZXhwYW5kICYmIEFycmF5LmlzQXJyYXkoYXJnVmFsdWUudmFsdWUpKSB7CiAgICAgICAgICAgICAgYXJnVmFsdWUgPSBhcmdWYWx1ZS52YWx1ZTsKICAgICAgICAgICAgICBmb3IgKG0gPSAwOyBtIDwgYXJnVmFsdWUubGVuZ3RoOyBtKyspIHsKICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKHsgdmFsdWU6IGFyZ1ZhbHVlW21dIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGFyZ3MucHVzaCh7IG5hbWU6IGFyZy5uYW1lLCB2YWx1ZTogYXJnVmFsdWUgfSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgbm9Bcmd1bWVudHNGaWx0ZXIgPSBmdW5jdGlvbiAocnVsZSkgeyByZXR1cm4gcnVsZS5tYXRjaEFyZ3MobnVsbCwgY29udGV4dCk7IH07CiAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZXh0LmZyYW1lcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKChtaXhpbnMgPSBjb250ZXh0LmZyYW1lc1tpXS5maW5kKHRoaXMuc2VsZWN0b3IsIG51bGwsIG5vQXJndW1lbnRzRmlsdGVyKSkubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIGlzT25lRm91bmQgPSB0cnVlOwogICAgICAgICAgICAgIC8vIFRvIG1ha2UgYGRlZmF1bHQoKWAgZnVuY3Rpb24gaW5kZXBlbmRlbnQgb2YgZGVmaW5pdGlvbiBvcmRlciB3ZSBoYXZlIHR3byAic3VicGFzc2VzIiBoZXJlLgogICAgICAgICAgICAgIC8vIEF0IGZpcnN0IHdlIGV2YWx1YXRlIGVhY2ggZ3VhcmQgKnR3aWNlKiAod2l0aCBgZGVmYXVsdCgpID09IHRydWVgIGFuZCBgZGVmYXVsdCgpID09IGZhbHNlYCksCiAgICAgICAgICAgICAgLy8gYW5kIGJ1aWxkIGNhbmRpZGF0ZSBsaXN0IHdpdGggY29ycmVzcG9uZGluZyBmbGFncy4gVGhlbiwgd2hlbiB3ZSBrbm93IGFsbCBwb3NzaWJsZSBtYXRjaGVzLAogICAgICAgICAgICAgIC8vIHdlIG1ha2UgYSBmaW5hbCBkZWNpc2lvbi4KICAgICAgICAgICAgICBmb3IgKG0gPSAwOyBtIDwgbWl4aW5zLmxlbmd0aDsgbSsrKSB7CiAgICAgICAgICAgICAgICAgIG1peGluID0gbWl4aW5zW21dLnJ1bGU7CiAgICAgICAgICAgICAgICAgIG1peGluUGF0aCA9IG1peGluc1ttXS5wYXRoOwogICAgICAgICAgICAgICAgICBpc1JlY3Vyc2l2ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICBmb3IgKGYgPSAwOyBmIDwgY29udGV4dC5mcmFtZXMubGVuZ3RoOyBmKyspIHsKICAgICAgICAgICAgICAgICAgICAgIGlmICgoIShtaXhpbiBpbnN0YW5jZW9mIERlZmluaXRpb24pKSAmJiBtaXhpbiA9PT0gKGNvbnRleHQuZnJhbWVzW2ZdLm9yaWdpbmFsUnVsZXNldCB8fCBjb250ZXh0LmZyYW1lc1tmXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlY3Vyc2l2ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGlzUmVjdXJzaXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAobWl4aW4ubWF0Y2hBcmdzKGFyZ3MsIGNvbnRleHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSB7IG1peGluOiBtaXhpbiwgZ3JvdXA6IGNhbGNEZWZHcm91cChtaXhpbiwgbWl4aW5QYXRoKSB9OwogICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5ncm91cCAhPT0gZGVmRmFsc2VFaXRoZXJDYXNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHRydWU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZGVmYXVsdEZ1bmMucmVzZXQoKTsKICAgICAgICAgICAgICBjb3VudCA9IFswLCAwLCAwXTsKICAgICAgICAgICAgICBmb3IgKG0gPSAwOyBtIDwgY2FuZGlkYXRlcy5sZW5ndGg7IG0rKykgewogICAgICAgICAgICAgICAgICBjb3VudFtjYW5kaWRhdGVzW21dLmdyb3VwXSsrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoY291bnRbZGVmTm9uZV0gPiAwKSB7CiAgICAgICAgICAgICAgICAgIGRlZmF1bHRSZXN1bHQgPSBkZWZGYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIGRlZmF1bHRSZXN1bHQgPSBkZWZUcnVlOwogICAgICAgICAgICAgICAgICBpZiAoKGNvdW50W2RlZlRydWVdICsgY291bnRbZGVmRmFsc2VdKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ1J1bnRpbWUnLCBtZXNzYWdlOiAiQW1iaWd1b3VzIHVzZSBvZiBgZGVmYXVsdCgpYCBmb3VuZCB3aGVuIG1hdGNoaW5nIGZvciBgIiArIHRoaXMuZm9ybWF0KGFyZ3MpICsgImAiLCBpbmRleDogdGhpcy5nZXRJbmRleCgpLCBmaWxlbmFtZTogdGhpcy5maWxlSW5mbygpLmZpbGVuYW1lIH07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZm9yIChtID0gMDsgbSA8IGNhbmRpZGF0ZXMubGVuZ3RoOyBtKyspIHsKICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlc1ttXS5ncm91cDsKICAgICAgICAgICAgICAgICAgaWYgKChjYW5kaWRhdGUgPT09IGRlZk5vbmUpIHx8IChjYW5kaWRhdGUgPT09IGRlZmF1bHRSZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgIG1peGluID0gY2FuZGlkYXRlc1ttXS5taXhpbjsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShtaXhpbiBpbnN0YW5jZW9mIERlZmluaXRpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsUnVsZXNldCA9IG1peGluLm9yaWdpbmFsUnVsZXNldCB8fCBtaXhpbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4gPSBuZXcgRGVmaW5pdGlvbignJywgW10sIG1peGluLnJ1bGVzLCBudWxsLCBmYWxzZSwgbnVsbCwgb3JpZ2luYWxSdWxlc2V0LnZpc2liaWxpdHlJbmZvKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhpbi5vcmlnaW5hbFJ1bGVzZXQgPSBvcmlnaW5hbFJ1bGVzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXdSdWxlcyA9IG1peGluLmV2YWxDYWxsKGNvbnRleHQsIGFyZ3MsIHRoaXMuaW1wb3J0YW50KS5ydWxlczsKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRWaXNpYmlsaXR5VG9SZXBsYWNlbWVudChuZXdSdWxlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkocnVsZXMsIG5ld1J1bGVzKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiBlLm1lc3NhZ2UsIGluZGV4OiB0aGlzLmdldEluZGV4KCksIGZpbGVuYW1lOiB0aGlzLmZpbGVJbmZvKCkuZmlsZW5hbWUsIHN0YWNrOiBlLnN0YWNrIH07CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlczsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKGlzT25lRm91bmQpIHsKICAgICAgICAgIHRocm93IHsgdHlwZTogJ1J1bnRpbWUnLCBtZXNzYWdlOiAiTm8gbWF0Y2hpbmcgZGVmaW5pdGlvbiB3YXMgZm91bmQgZm9yIGAiICsgdGhpcy5mb3JtYXQoYXJncykgKyAiYCIsIGluZGV4OiB0aGlzLmdldEluZGV4KCksIGZpbGVuYW1lOiB0aGlzLmZpbGVJbmZvKCkuZmlsZW5hbWUgfTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHRocm93IHsgdHlwZTogJ05hbWUnLCBtZXNzYWdlOiB0aGlzLnNlbGVjdG9yLnRvQ1NTKCkudHJpbSgpICsgIiBpcyB1bmRlZmluZWQiLCBpbmRleDogdGhpcy5nZXRJbmRleCgpLCBmaWxlbmFtZTogdGhpcy5maWxlSW5mbygpLmZpbGVuYW1lIH07CiAgICAgIH0KICB9OwogIE1peGluQ2FsbC5wcm90b3R5cGUuX3NldFZpc2liaWxpdHlUb1JlcGxhY2VtZW50ID0gZnVuY3Rpb24gKHJlcGxhY2VtZW50KSB7CiAgICAgIHZhciBpOwogICAgICB2YXIgcnVsZTsKICAgICAgaWYgKHRoaXMuYmxvY2tzVmlzaWJpbGl0eSgpKSB7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVwbGFjZW1lbnQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBydWxlID0gcmVwbGFjZW1lbnRbaV07CiAgICAgICAgICAgICAgcnVsZS5hZGRWaXNpYmlsaXR5QmxvY2soKTsKICAgICAgICAgIH0KICAgICAgfQogIH07CiAgTWl4aW5DYWxsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbiAoYXJncykgewogICAgICByZXR1cm4gdGhpcy5zZWxlY3Rvci50b0NTUygpLnRyaW0oKSArICIoIiArIChhcmdzID8gYXJncy5tYXAoZnVuY3Rpb24gKGEpIHsKICAgICAgICAgIHZhciBhcmdWYWx1ZSA9ICcnOwogICAgICAgICAgaWYgKGEubmFtZSkgewogICAgICAgICAgICAgIGFyZ1ZhbHVlICs9IGEubmFtZSArICI6IjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChhLnZhbHVlLnRvQ1NTKSB7CiAgICAgICAgICAgICAgYXJnVmFsdWUgKz0gYS52YWx1ZS50b0NTUygpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgYXJnVmFsdWUgKz0gJz8/Pyc7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYXJnVmFsdWU7CiAgICAgIH0pLmpvaW4oJywgJykgOiAnJykgKyAiKSI7CiAgfTsKICBNaXhpbkNhbGwucHJvdG90eXBlLnR5cGUgPSAnTWl4aW5DYWxsJzsKCiAgdmFyIHRyZWUgPSB7CiAgICAgIE5vZGU6IE5vZGUsIENvbG9yOiBDb2xvciwgQXRSdWxlOiBBdFJ1bGUsIERldGFjaGVkUnVsZXNldDogRGV0YWNoZWRSdWxlc2V0LCBPcGVyYXRpb246IE9wZXJhdGlvbiwKICAgICAgRGltZW5zaW9uOiBEaW1lbnNpb24sIFVuaXQ6IFVuaXQsIEtleXdvcmQ6IEtleXdvcmQsIFZhcmlhYmxlOiBWYXJpYWJsZSwgUHJvcGVydHk6IFByb3BlcnR5LAogICAgICBSdWxlc2V0OiBSdWxlc2V0LCBFbGVtZW50OiBFbGVtZW50LCBBdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgQ29tYmluYXRvcjogQ29tYmluYXRvciwgU2VsZWN0b3I6IFNlbGVjdG9yLAogICAgICBRdW90ZWQ6IFF1b3RlZCwgRXhwcmVzc2lvbjogRXhwcmVzc2lvbiwgRGVjbGFyYXRpb246IERlY2xhcmF0aW9uLCBDYWxsOiBDYWxsLCBVUkw6IFVSTCwgSW1wb3J0OiBJbXBvcnQsCiAgICAgIENvbW1lbnQ6IENvbW1lbnQsIEFub255bW91czogQW5vbnltb3VzLCBWYWx1ZTogVmFsdWUsIEphdmFTY3JpcHQ6IEphdmFTY3JpcHQsIEFzc2lnbm1lbnQ6IEFzc2lnbm1lbnQsCiAgICAgIENvbmRpdGlvbjogQ29uZGl0aW9uLCBQYXJlbjogUGFyZW4sIE1lZGlhOiBNZWRpYSwgVW5pY29kZURlc2NyaXB0b3I6IFVuaWNvZGVEZXNjcmlwdG9yLCBOZWdhdGl2ZTogTmVnYXRpdmUsCiAgICAgIEV4dGVuZDogRXh0ZW5kLCBWYXJpYWJsZUNhbGw6IFZhcmlhYmxlQ2FsbCwgTmFtZXNwYWNlVmFsdWU6IE5hbWVzcGFjZVZhbHVlLAogICAgICBtaXhpbjogewogICAgICAgICAgQ2FsbDogTWl4aW5DYWxsLAogICAgICAgICAgRGVmaW5pdGlvbjogRGVmaW5pdGlvbgogICAgICB9CiAgfTsKCiAgdmFyIGxvZ2dlciA9IHsKICAgICAgZXJyb3I6IGZ1bmN0aW9uIChtc2cpIHsKICAgICAgICAgIHRoaXMuX2ZpcmVFdmVudCgnZXJyb3InLCBtc2cpOwogICAgICB9LAogICAgICB3YXJuOiBmdW5jdGlvbiAobXNnKSB7CiAgICAgICAgICB0aGlzLl9maXJlRXZlbnQoJ3dhcm4nLCBtc2cpOwogICAgICB9LAogICAgICBpbmZvOiBmdW5jdGlvbiAobXNnKSB7CiAgICAgICAgICB0aGlzLl9maXJlRXZlbnQoJ2luZm8nLCBtc2cpOwogICAgICB9LAogICAgICBkZWJ1ZzogZnVuY3Rpb24gKG1zZykgewogICAgICAgICAgdGhpcy5fZmlyZUV2ZW50KCdkZWJ1ZycsIG1zZyk7CiAgICAgIH0sCiAgICAgIGFkZExpc3RlbmVyOiBmdW5jdGlvbiAobGlzdGVuZXIpIHsKICAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTsKICAgICAgfSwKICAgICAgcmVtb3ZlTGlzdGVuZXI6IGZ1bmN0aW9uIChsaXN0ZW5lcikgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9saXN0ZW5lcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJzW2ldID09PSBsaXN0ZW5lcikgewogICAgICAgICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKGksIDEpOwogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9LAogICAgICBfZmlyZUV2ZW50OiBmdW5jdGlvbiAodHlwZSwgbXNnKSB7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2xpc3RlbmVycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIHZhciBsb2dGdW5jdGlvbiA9IHRoaXMuX2xpc3RlbmVyc1tpXVt0eXBlXTsKICAgICAgICAgICAgICBpZiAobG9nRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgbG9nRnVuY3Rpb24obXNnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0sCiAgICAgIF9saXN0ZW5lcnM6IFtdCiAgfTsKCiAgLyoqCiAgICogQHRvZG8gRG9jdW1lbnQgd2h5IHRoaXMgYWJzdHJhY3Rpb24gZXhpc3RzLCBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuCiAgICogICAgICAgZW52aXJvbm1lbnQsIGZpbGUgbWFuYWdlcnMsIGFuZCBwbHVnaW4gbWFuYWdlcgogICAqLwogIHZhciBlbnZpcm9ubWVudCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gZW52aXJvbm1lbnQoZXh0ZXJuYWxFbnZpcm9ubWVudCwgZmlsZU1hbmFnZXJzKSB7CiAgICAgICAgICB0aGlzLmZpbGVNYW5hZ2VycyA9IGZpbGVNYW5hZ2VycyB8fCBbXTsKICAgICAgICAgIGV4dGVybmFsRW52aXJvbm1lbnQgPSBleHRlcm5hbEVudmlyb25tZW50IHx8IHt9OwogICAgICAgICAgdmFyIG9wdGlvbmFsRnVuY3Rpb25zID0gWydlbmNvZGVCYXNlNjQnLCAnbWltZUxvb2t1cCcsICdjaGFyc2V0TG9va3VwJywgJ2dldFNvdXJjZU1hcEdlbmVyYXRvciddOwogICAgICAgICAgdmFyIHJlcXVpcmVkRnVuY3Rpb25zID0gW107CiAgICAgICAgICB2YXIgZnVuY3Rpb25zID0gcmVxdWlyZWRGdW5jdGlvbnMuY29uY2F0KG9wdGlvbmFsRnVuY3Rpb25zKTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgdmFyIHByb3BOYW1lID0gZnVuY3Rpb25zW2ldOwogICAgICAgICAgICAgIHZhciBlbnZpcm9ubWVudEZ1bmMgPSBleHRlcm5hbEVudmlyb25tZW50W3Byb3BOYW1lXTsKICAgICAgICAgICAgICBpZiAoZW52aXJvbm1lbnRGdW5jKSB7CiAgICAgICAgICAgICAgICAgIHRoaXNbcHJvcE5hbWVdID0gZW52aXJvbm1lbnRGdW5jLmJpbmQoZXh0ZXJuYWxFbnZpcm9ubWVudCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgaWYgKGkgPCByZXF1aXJlZEZ1bmN0aW9ucy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgdGhpcy53YXJuKCJtaXNzaW5nIHJlcXVpcmVkIGZ1bmN0aW9uIGluIGVudmlyb25tZW50IC0gIiArIHByb3BOYW1lKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZW52aXJvbm1lbnQucHJvdG90eXBlLmdldEZpbGVNYW5hZ2VyID0gZnVuY3Rpb24gKGZpbGVuYW1lLCBjdXJyZW50RGlyZWN0b3J5LCBvcHRpb25zLCBlbnZpcm9ubWVudCwgaXNTeW5jKSB7CiAgICAgICAgICBpZiAoIWZpbGVuYW1lKSB7CiAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ2dldEZpbGVNYW5hZ2VyIGNhbGxlZCB3aXRoIG5vIGZpbGVuYW1lLi4gUGxlYXNlIHJlcG9ydCB0aGlzIGlzc3VlLiBjb250aW51aW5nLicpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGN1cnJlbnREaXJlY3RvcnkgPT0gbnVsbCkgewogICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdnZXRGaWxlTWFuYWdlciBjYWxsZWQgd2l0aCBudWxsIGRpcmVjdG9yeS4uIFBsZWFzZSByZXBvcnQgdGhpcyBpc3N1ZS4gY29udGludWluZy4nKTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBmaWxlTWFuYWdlcnMgPSB0aGlzLmZpbGVNYW5hZ2VyczsKICAgICAgICAgIGlmIChvcHRpb25zLnBsdWdpbk1hbmFnZXIpIHsKICAgICAgICAgICAgICBmaWxlTWFuYWdlcnMgPSBbXS5jb25jYXQoZmlsZU1hbmFnZXJzKS5jb25jYXQob3B0aW9ucy5wbHVnaW5NYW5hZ2VyLmdldEZpbGVNYW5hZ2VycygpKTsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAodmFyIGkgPSBmaWxlTWFuYWdlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICB2YXIgZmlsZU1hbmFnZXIgPSBmaWxlTWFuYWdlcnNbaV07CiAgICAgICAgICAgICAgaWYgKGZpbGVNYW5hZ2VyW2lzU3luYyA/ICdzdXBwb3J0c1N5bmMnIDogJ3N1cHBvcnRzJ10oZmlsZW5hbWUsIGN1cnJlbnREaXJlY3RvcnksIG9wdGlvbnMsIGVudmlyb25tZW50KSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZU1hbmFnZXI7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH07CiAgICAgIGVudmlyb25tZW50LnByb3RvdHlwZS5hZGRGaWxlTWFuYWdlciA9IGZ1bmN0aW9uIChmaWxlTWFuYWdlcikgewogICAgICAgICAgdGhpcy5maWxlTWFuYWdlcnMucHVzaChmaWxlTWFuYWdlcik7CiAgICAgIH07CiAgICAgIGVudmlyb25tZW50LnByb3RvdHlwZS5jbGVhckZpbGVNYW5hZ2VycyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHRoaXMuZmlsZU1hbmFnZXJzID0gW107CiAgICAgIH07CiAgICAgIHJldHVybiBlbnZpcm9ubWVudDsKICB9KCkpOwoKICB2YXIgQWJzdHJhY3RGaWxlTWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gQWJzdHJhY3RGaWxlTWFuYWdlcigpIHsKICAgICAgfQogICAgICBBYnN0cmFjdEZpbGVNYW5hZ2VyLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24gKGZpbGVuYW1lKSB7CiAgICAgICAgICB2YXIgaiA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKCc/Jyk7CiAgICAgICAgICBpZiAoaiA+IDApIHsKICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnNsaWNlKDAsIGopOwogICAgICAgICAgfQogICAgICAgICAgaiA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKCcvJyk7CiAgICAgICAgICBpZiAoaiA8IDApIHsKICAgICAgICAgICAgICBqID0gZmlsZW5hbWUubGFzdEluZGV4T2YoJ1xcJyk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaiA8IDApIHsKICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gZmlsZW5hbWUuc2xpY2UoMCwgaiArIDEpOwogICAgICB9OwogICAgICBBYnN0cmFjdEZpbGVNYW5hZ2VyLnByb3RvdHlwZS50cnlBcHBlbmRFeHRlbnNpb24gPSBmdW5jdGlvbiAocGF0aCwgZXh0KSB7CiAgICAgICAgICByZXR1cm4gLyhcLlthLXpdKiQpfChbXD87XS4qKSQvLnRlc3QocGF0aCkgPyBwYXRoIDogcGF0aCArIGV4dDsKICAgICAgfTsKICAgICAgQWJzdHJhY3RGaWxlTWFuYWdlci5wcm90b3R5cGUudHJ5QXBwZW5kTGVzc0V4dGVuc2lvbiA9IGZ1bmN0aW9uIChwYXRoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy50cnlBcHBlbmRFeHRlbnNpb24ocGF0aCwgJy5sZXNzJyk7CiAgICAgIH07CiAgICAgIEFic3RyYWN0RmlsZU1hbmFnZXIucHJvdG90eXBlLnN1cHBvcnRzU3luYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgICBBYnN0cmFjdEZpbGVNYW5hZ2VyLnByb3RvdHlwZS5hbHdheXNNYWtlUGF0aHNBYnNvbHV0ZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgICBBYnN0cmFjdEZpbGVNYW5hZ2VyLnByb3RvdHlwZS5pc1BhdGhBYnNvbHV0ZSA9IGZ1bmN0aW9uIChmaWxlbmFtZSkgewogICAgICAgICAgcmV0dXJuICgvXig/OlthLXotXSs6fFwvfFxcfCMpL2kpLnRlc3QoZmlsZW5hbWUpOwogICAgICB9OwogICAgICAvLyBUT0RPOiBwdWxsIG91dCAvIHJlcGxhY2U/CiAgICAgIEFic3RyYWN0RmlsZU1hbmFnZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiAoYmFzZVBhdGgsIGxhdGVyUGF0aCkgewogICAgICAgICAgaWYgKCFiYXNlUGF0aCkgewogICAgICAgICAgICAgIHJldHVybiBsYXRlclBhdGg7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYmFzZVBhdGggKyBsYXRlclBhdGg7CiAgICAgIH07CiAgICAgIEFic3RyYWN0RmlsZU1hbmFnZXIucHJvdG90eXBlLnBhdGhEaWZmID0gZnVuY3Rpb24gKHVybCwgYmFzZVVybCkgewogICAgICAgICAgLy8gZGlmZiBiZXR3ZWVuIHR3byBwYXRocyB0byBjcmVhdGUgYSByZWxhdGl2ZSBwYXRoCiAgICAgICAgICB2YXIgdXJsUGFydHMgPSB0aGlzLmV4dHJhY3RVcmxQYXJ0cyh1cmwpOwogICAgICAgICAgdmFyIGJhc2VVcmxQYXJ0cyA9IHRoaXMuZXh0cmFjdFVybFBhcnRzKGJhc2VVcmwpOwogICAgICAgICAgdmFyIGk7CiAgICAgICAgICB2YXIgbWF4OwogICAgICAgICAgdmFyIHVybERpcmVjdG9yaWVzOwogICAgICAgICAgdmFyIGJhc2VVcmxEaXJlY3RvcmllczsKICAgICAgICAgIHZhciBkaWZmID0gJyc7CiAgICAgICAgICBpZiAodXJsUGFydHMuaG9zdFBhcnQgIT09IGJhc2VVcmxQYXJ0cy5ob3N0UGFydCkgewogICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgIH0KICAgICAgICAgIG1heCA9IE1hdGgubWF4KGJhc2VVcmxQYXJ0cy5kaXJlY3Rvcmllcy5sZW5ndGgsIHVybFBhcnRzLmRpcmVjdG9yaWVzLmxlbmd0aCk7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspIHsKICAgICAgICAgICAgICBpZiAoYmFzZVVybFBhcnRzLmRpcmVjdG9yaWVzW2ldICE9PSB1cmxQYXJ0cy5kaXJlY3Rvcmllc1tpXSkgewogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBiYXNlVXJsRGlyZWN0b3JpZXMgPSBiYXNlVXJsUGFydHMuZGlyZWN0b3JpZXMuc2xpY2UoaSk7CiAgICAgICAgICB1cmxEaXJlY3RvcmllcyA9IHVybFBhcnRzLmRpcmVjdG9yaWVzLnNsaWNlKGkpOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGJhc2VVcmxEaXJlY3Rvcmllcy5sZW5ndGggLSAxOyBpKyspIHsKICAgICAgICAgICAgICBkaWZmICs9ICcuLi8nOwogICAgICAgICAgfQogICAgICAgICAgZm9yIChpID0gMDsgaSA8IHVybERpcmVjdG9yaWVzLmxlbmd0aCAtIDE7IGkrKykgewogICAgICAgICAgICAgIGRpZmYgKz0gdXJsRGlyZWN0b3JpZXNbaV0gKyAiLyI7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gZGlmZjsKICAgICAgfTsKICAgICAgLy8gaGVscGVyIGZ1bmN0aW9uLCBub3QgcGFydCBvZiBBUEkKICAgICAgQWJzdHJhY3RGaWxlTWFuYWdlci5wcm90b3R5cGUuZXh0cmFjdFVybFBhcnRzID0gZnVuY3Rpb24gKHVybCwgYmFzZVVybCkgewogICAgICAgICAgLy8gdXJsUGFydHNbMV0gPSBwcm90b2NvbDovL2hvc3RuYW1lLyBPUiAvCiAgICAgICAgICAvLyB1cmxQYXJ0c1syXSA9IC8gaWYgcGF0aCByZWxhdGl2ZSB0byBob3N0IGJhc2UKICAgICAgICAgIC8vIHVybFBhcnRzWzNdID0gZGlyZWN0b3JpZXMKICAgICAgICAgIC8vIHVybFBhcnRzWzRdID0gZmlsZW5hbWUKICAgICAgICAgIC8vIHVybFBhcnRzWzVdID0gcGFyYW1ldGVycwogICAgICAgICAgdmFyIHVybFBhcnRzUmVnZXggPSAvXigoPzpbYS16LV0rOik/XC97Mn0oPzpbXlwvXD8jXSpcLyl8KFtcL1xcXSkpPygoPzpbXlwvXFxcPyNdKltcL1xcXSkqKShbXlwvXFxcPyNdKikoWyNcP10uKik/JC9pOwogICAgICAgICAgdmFyIHVybFBhcnRzID0gdXJsLm1hdGNoKHVybFBhcnRzUmVnZXgpOwogICAgICAgICAgdmFyIHJldHVybmVyID0ge307CiAgICAgICAgICB2YXIgcmF3RGlyZWN0b3JpZXMgPSBbXTsKICAgICAgICAgIHZhciBkaXJlY3RvcmllcyA9IFtdOwogICAgICAgICAgdmFyIGk7CiAgICAgICAgICB2YXIgYmFzZVVybFBhcnRzOwogICAgICAgICAgaWYgKCF1cmxQYXJ0cykgewogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IHBhcnNlIHNoZWV0IGhyZWYgLSAnIiArIHVybCArICInIik7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBTdHlsZXNoZWV0cyBpbiBJRSBkb24ndCBhbHdheXMgcmV0dXJuIHRoZSBmdWxsIHBhdGgKICAgICAgICAgIGlmIChiYXNlVXJsICYmICghdXJsUGFydHNbMV0gfHwgdXJsUGFydHNbMl0pKSB7CiAgICAgICAgICAgICAgYmFzZVVybFBhcnRzID0gYmFzZVVybC5tYXRjaCh1cmxQYXJ0c1JlZ2V4KTsKICAgICAgICAgICAgICBpZiAoIWJhc2VVcmxQYXJ0cykgewogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBwYXJzZSBwYWdlIHVybCAtICciICsgYmFzZVVybCArICInIik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHVybFBhcnRzWzFdID0gdXJsUGFydHNbMV0gfHwgYmFzZVVybFBhcnRzWzFdIHx8ICcnOwogICAgICAgICAgICAgIGlmICghdXJsUGFydHNbMl0pIHsKICAgICAgICAgICAgICAgICAgdXJsUGFydHNbM10gPSBiYXNlVXJsUGFydHNbM10gKyB1cmxQYXJ0c1szXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAodXJsUGFydHNbM10pIHsKICAgICAgICAgICAgICByYXdEaXJlY3RvcmllcyA9IHVybFBhcnRzWzNdLnJlcGxhY2UoL1xcL2csICcvJykuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAvLyBjb2xsYXBzZSAnLi4nIGFuZCBza2lwICcuJwogICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByYXdEaXJlY3Rvcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICBpZiAocmF3RGlyZWN0b3JpZXNbaV0gPT09ICcuLicpIHsKICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLnBvcCgpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJhd0RpcmVjdG9yaWVzW2ldICE9PSAnLicpIHsKICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLnB1c2gocmF3RGlyZWN0b3JpZXNbaV0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuZXIuaG9zdFBhcnQgPSB1cmxQYXJ0c1sxXTsKICAgICAgICAgIHJldHVybmVyLmRpcmVjdG9yaWVzID0gZGlyZWN0b3JpZXM7CiAgICAgICAgICByZXR1cm5lci5yYXdQYXRoID0gKHVybFBhcnRzWzFdIHx8ICcnKSArIHJhd0RpcmVjdG9yaWVzLmpvaW4oJy8nKTsKICAgICAgICAgIHJldHVybmVyLnBhdGggPSAodXJsUGFydHNbMV0gfHwgJycpICsgZGlyZWN0b3JpZXMuam9pbignLycpOwogICAgICAgICAgcmV0dXJuZXIuZmlsZW5hbWUgPSB1cmxQYXJ0c1s0XTsKICAgICAgICAgIHJldHVybmVyLmZpbGVVcmwgPSByZXR1cm5lci5wYXRoICsgKHVybFBhcnRzWzRdIHx8ICcnKTsKICAgICAgICAgIHJldHVybmVyLnVybCA9IHJldHVybmVyLmZpbGVVcmwgKyAodXJsUGFydHNbNV0gfHwgJycpOwogICAgICAgICAgcmV0dXJuIHJldHVybmVyOwogICAgICB9OwogICAgICByZXR1cm4gQWJzdHJhY3RGaWxlTWFuYWdlcjsKICB9KCkpOwoKICB2YXIgQWJzdHJhY3RQbHVnaW5Mb2FkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIEFic3RyYWN0UGx1Z2luTG9hZGVyKCkgewogICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgTm9kZS5qcyBwbHVnaW4gbG9hZGVyCiAgICAgICAgICB0aGlzLnJlcXVpcmUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9OwogICAgICB9CiAgICAgIEFic3RyYWN0UGx1Z2luTG9hZGVyLnByb3RvdHlwZS5ldmFsUGx1Z2luID0gZnVuY3Rpb24gKGNvbnRlbnRzLCBjb250ZXh0LCBpbXBvcnRzLCBwbHVnaW5PcHRpb25zLCBmaWxlSW5mbykgewogICAgICAgICAgdmFyIGxvYWRlcjsKICAgICAgICAgIHZhciByZWdpc3RyeTsKICAgICAgICAgIHZhciBwbHVnaW5PYmo7CiAgICAgICAgICB2YXIgbG9jYWxNb2R1bGU7CiAgICAgICAgICB2YXIgcGx1Z2luTWFuYWdlcjsKICAgICAgICAgIHZhciBmaWxlbmFtZTsKICAgICAgICAgIHZhciByZXN1bHQ7CiAgICAgICAgICBwbHVnaW5NYW5hZ2VyID0gY29udGV4dC5wbHVnaW5NYW5hZ2VyOwogICAgICAgICAgaWYgKGZpbGVJbmZvKSB7CiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWxlSW5mbyA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlSW5mbzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZUluZm8uZmlsZW5hbWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgdmFyIHNob3J0bmFtZSA9IChuZXcgdGhpcy5sZXNzLkZpbGVNYW5hZ2VyKCkpLmV4dHJhY3RVcmxQYXJ0cyhmaWxlbmFtZSkuZmlsZW5hbWU7CiAgICAgICAgICBpZiAoZmlsZW5hbWUpIHsKICAgICAgICAgICAgICBwbHVnaW5PYmogPSBwbHVnaW5NYW5hZ2VyLmdldChmaWxlbmFtZSk7CiAgICAgICAgICAgICAgaWYgKHBsdWdpbk9iaikgewogICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnRyeVNldE9wdGlvbnMocGx1Z2luT2JqLCBmaWxlbmFtZSwgc2hvcnRuYW1lLCBwbHVnaW5PcHRpb25zKTsKICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpbk9iai51c2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5PYmoudXNlLmNhbGwodGhpcy5jb250ZXh0LCBwbHVnaW5PYmopOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICBlLm1lc3NhZ2UgPSBlLm1lc3NhZ2UgfHwgJ0Vycm9yIGR1cmluZyBAcGx1Z2luIGNhbGwnOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMZXNzRXJyb3IoZSwgaW1wb3J0cywgZmlsZW5hbWUpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBwbHVnaW5PYmo7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgbG9jYWxNb2R1bGUgPSB7CiAgICAgICAgICAgICAgZXhwb3J0czoge30sCiAgICAgICAgICAgICAgcGx1Z2luTWFuYWdlcjogcGx1Z2luTWFuYWdlciwKICAgICAgICAgICAgICBmaWxlSW5mbzogZmlsZUluZm8KICAgICAgICAgIH07CiAgICAgICAgICByZWdpc3RyeSA9IGZ1bmN0aW9uUmVnaXN0cnkuY3JlYXRlKCk7CiAgICAgICAgICB2YXIgcmVnaXN0ZXJQbHVnaW4gPSBmdW5jdGlvbiAob2JqKSB7CiAgICAgICAgICAgICAgcGx1Z2luT2JqID0gb2JqOwogICAgICAgICAgfTsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgbG9hZGVyID0gbmV3IEZ1bmN0aW9uKCdtb2R1bGUnLCAncmVxdWlyZScsICdyZWdpc3RlclBsdWdpbicsICdmdW5jdGlvbnMnLCAndHJlZScsICdsZXNzJywgJ2ZpbGVJbmZvJywgY29udGVudHMpOwogICAgICAgICAgICAgIGxvYWRlcihsb2NhbE1vZHVsZSwgdGhpcy5yZXF1aXJlKGZpbGVuYW1lKSwgcmVnaXN0ZXJQbHVnaW4sIHJlZ2lzdHJ5LCB0aGlzLmxlc3MudHJlZSwgdGhpcy5sZXNzLCBmaWxlSW5mbyk7CiAgICAgICAgICB9CiAgICAgICAgICBjYXRjaCAoZSkgewogICAgICAgICAgICAgIHJldHVybiBuZXcgTGVzc0Vycm9yKGUsIGltcG9ydHMsIGZpbGVuYW1lKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICghcGx1Z2luT2JqKSB7CiAgICAgICAgICAgICAgcGx1Z2luT2JqID0gbG9jYWxNb2R1bGUuZXhwb3J0czsKICAgICAgICAgIH0KICAgICAgICAgIHBsdWdpbk9iaiA9IHRoaXMudmFsaWRhdGVQbHVnaW4ocGx1Z2luT2JqLCBmaWxlbmFtZSwgc2hvcnRuYW1lKTsKICAgICAgICAgIGlmIChwbHVnaW5PYmogaW5zdGFuY2VvZiBMZXNzRXJyb3IpIHsKICAgICAgICAgICAgICByZXR1cm4gcGx1Z2luT2JqOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHBsdWdpbk9iaikgewogICAgICAgICAgICAgIHBsdWdpbk9iai5pbXBvcnRzID0gaW1wb3J0czsKICAgICAgICAgICAgICBwbHVnaW5PYmouZmlsZW5hbWUgPSBmaWxlbmFtZTsKICAgICAgICAgICAgICAvLyBGb3IgPCAzLnggKG9yIHVuc3BlY2lmaWVkIG1pblZlcnNpb24pIC0gc2V0T3B0aW9ucygpIGJlZm9yZSBpbnN0YWxsKCkKICAgICAgICAgICAgICBpZiAoIXBsdWdpbk9iai5taW5WZXJzaW9uIHx8IHRoaXMuY29tcGFyZVZlcnNpb24oJzMuMC4wJywgcGx1Z2luT2JqLm1pblZlcnNpb24pIDwgMCkgewogICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnRyeVNldE9wdGlvbnMocGx1Z2luT2JqLCBmaWxlbmFtZSwgc2hvcnRuYW1lLCBwbHVnaW5PcHRpb25zKTsKICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBSdW4gb24gZmlyc3QgbG9hZAogICAgICAgICAgICAgIHBsdWdpbk1hbmFnZXIuYWRkUGx1Z2luKHBsdWdpbk9iaiwgZmlsZUluZm8uZmlsZW5hbWUsIHJlZ2lzdHJ5KTsKICAgICAgICAgICAgICBwbHVnaW5PYmouZnVuY3Rpb25zID0gcmVnaXN0cnkuZ2V0TG9jYWxGdW5jdGlvbnMoKTsKICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNhbGwgc2V0T3B0aW9ucyBhZ2FpbiBiZWNhdXNlIHRoZSBwbHVnaW5PYmogbWlnaHQgaGF2ZSBmdW5jdGlvbnMKICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnRyeVNldE9wdGlvbnMocGx1Z2luT2JqLCBmaWxlbmFtZSwgc2hvcnRuYW1lLCBwbHVnaW5PcHRpb25zKTsKICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8vIFJ1biBldmVyeSBAcGx1Z2luIGNhbGwKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICBpZiAocGx1Z2luT2JqLnVzZSkgewogICAgICAgICAgICAgICAgICAgICAgcGx1Z2luT2JqLnVzZS5jYWxsKHRoaXMuY29udGV4dCwgcGx1Z2luT2JqKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICBlLm1lc3NhZ2UgPSBlLm1lc3NhZ2UgfHwgJ0Vycm9yIGR1cmluZyBAcGx1Z2luIGNhbGwnOwogICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IExlc3NFcnJvcihlLCBpbXBvcnRzLCBmaWxlbmFtZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMZXNzRXJyb3IoeyBtZXNzYWdlOiAnTm90IGEgdmFsaWQgcGx1Z2luJyB9LCBpbXBvcnRzLCBmaWxlbmFtZSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcGx1Z2luT2JqOwogICAgICB9OwogICAgICBBYnN0cmFjdFBsdWdpbkxvYWRlci5wcm90b3R5cGUudHJ5U2V0T3B0aW9ucyA9IGZ1bmN0aW9uIChwbHVnaW4sIGZpbGVuYW1lLCBuYW1lLCBvcHRpb25zKSB7CiAgICAgICAgICBpZiAob3B0aW9ucyAmJiAhcGx1Z2luLnNldE9wdGlvbnMpIHsKICAgICAgICAgICAgICByZXR1cm4gbmV3IExlc3NFcnJvcih7CiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJPcHRpb25zIGhhdmUgYmVlbiBwcm92aWRlZCBidXQgdGhlIHBsdWdpbiAiICsgbmFtZSArICIgZG9lcyBub3Qgc3VwcG9ydCBhbnkgb3B0aW9ucy4iCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIHBsdWdpbi5zZXRPcHRpb25zICYmIHBsdWdpbi5zZXRPcHRpb25zKG9wdGlvbnMpOwogICAgICAgICAgfQogICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICByZXR1cm4gbmV3IExlc3NFcnJvcihlKTsKICAgICAgICAgIH0KICAgICAgfTsKICAgICAgQWJzdHJhY3RQbHVnaW5Mb2FkZXIucHJvdG90eXBlLnZhbGlkYXRlUGx1Z2luID0gZnVuY3Rpb24gKHBsdWdpbiwgZmlsZW5hbWUsIG5hbWUpIHsKICAgICAgICAgIGlmIChwbHVnaW4pIHsKICAgICAgICAgICAgICAvLyBzdXBwb3J0IHBsdWdpbnMgYmVpbmcgYSBmdW5jdGlvbgogICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHBsdWdpbiBjYW4gYmUgbW9yZSB1c2FibGUgcHJvZ3JhbW1hdGljYWxseQogICAgICAgICAgICAgIGlmICh0eXBlb2YgcGx1Z2luID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICAgIHBsdWdpbiA9IG5ldyBwbHVnaW4oKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHBsdWdpbi5taW5WZXJzaW9uKSB7CiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBhcmVWZXJzaW9uKHBsdWdpbi5taW5WZXJzaW9uLCB0aGlzLmxlc3MudmVyc2lvbikgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IExlc3NFcnJvcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIlBsdWdpbiAiICsgbmFtZSArICIgcmVxdWlyZXMgdmVyc2lvbiAiICsgdGhpcy52ZXJzaW9uVG9TdHJpbmcocGx1Z2luLm1pblZlcnNpb24pCiAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcGx1Z2luOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH07CiAgICAgIEFic3RyYWN0UGx1Z2luTG9hZGVyLnByb3RvdHlwZS5jb21wYXJlVmVyc2lvbiA9IGZ1bmN0aW9uIChhVmVyc2lvbiwgYlZlcnNpb24pIHsKICAgICAgICAgIGlmICh0eXBlb2YgYVZlcnNpb24gPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgYVZlcnNpb24gPSBhVmVyc2lvbi5tYXRjaCgvXihcZCspXC4/KFxkKyk/XC4/KFxkKyk/Lyk7CiAgICAgICAgICAgICAgYVZlcnNpb24uc2hpZnQoKTsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYVZlcnNpb24ubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBpZiAoYVZlcnNpb25baV0gIT09IGJWZXJzaW9uW2ldKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChhVmVyc2lvbltpXSkgPiBwYXJzZUludChiVmVyc2lvbltpXSkgPyAtMSA6IDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIDA7CiAgICAgIH07CiAgICAgIEFic3RyYWN0UGx1Z2luTG9hZGVyLnByb3RvdHlwZS52ZXJzaW9uVG9TdHJpbmcgPSBmdW5jdGlvbiAodmVyc2lvbikgewogICAgICAgICAgdmFyIHZlcnNpb25TdHJpbmcgPSAnJzsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmVyc2lvbi5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgKz0gKHZlcnNpb25TdHJpbmcgPyAnLicgOiAnJykgKyB2ZXJzaW9uW2ldOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHZlcnNpb25TdHJpbmc7CiAgICAgIH07CiAgICAgIEFic3RyYWN0UGx1Z2luTG9hZGVyLnByb3RvdHlwZS5wcmludFVzYWdlID0gZnVuY3Rpb24gKHBsdWdpbnMpIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIHZhciBwbHVnaW4gPSBwbHVnaW5zW2ldOwogICAgICAgICAgICAgIGlmIChwbHVnaW4ucHJpbnRVc2FnZSkgewogICAgICAgICAgICAgICAgICBwbHVnaW4ucHJpbnRVc2FnZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfTsKICAgICAgcmV0dXJuIEFic3RyYWN0UGx1Z2luTG9hZGVyOwogIH0oKSk7CgogIHZhciBfdmlzaXRBcmdzID0geyB2aXNpdERlZXBlcjogdHJ1ZSB9OwogIHZhciBfaGFzSW5kZXhlZCA9IGZhbHNlOwogIGZ1bmN0aW9uIF9ub29wKG5vZGUpIHsKICAgICAgcmV0dXJuIG5vZGU7CiAgfQogIGZ1bmN0aW9uIGluZGV4Tm9kZVR5cGVzKHBhcmVudCwgdGlja2VyKSB7CiAgICAgIC8vIGFkZCAudHlwZUluZGV4IHRvIHRyZWUgbm9kZSB0eXBlcyBmb3IgbG9va3VwIHRhYmxlCiAgICAgIHZhciBrZXk7CiAgICAgIHZhciBjaGlsZDsKICAgICAgZm9yIChrZXkgaW4gcGFyZW50KSB7CiAgICAgICAgICAvKiBlc2xpbnQgZ3VhcmQtZm9yLWluOiAwICovCiAgICAgICAgICBjaGlsZCA9IHBhcmVudFtrZXldOwogICAgICAgICAgc3dpdGNoICh0eXBlb2YgY2hpbGQpIHsKICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6CiAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBib3VuZCBmdW5jdGlvbnMgZGlyZWN0bHkgb24gdHJlZSB3aGljaCBkbyBub3QgaGF2ZSBhIHByb3RvdHlwZQogICAgICAgICAgICAgICAgICAvLyBvciBhcmVuJ3Qgbm9kZXMKICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLnByb3RvdHlwZSAmJiBjaGlsZC5wcm90b3R5cGUudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgY2hpbGQucHJvdG90eXBlLnR5cGVJbmRleCA9IHRpY2tlcisrOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6CiAgICAgICAgICAgICAgICAgIHRpY2tlciA9IGluZGV4Tm9kZVR5cGVzKGNoaWxkLCB0aWNrZXIpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdGlja2VyOwogIH0KICB2YXIgVmlzaXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gVmlzaXRvcihpbXBsZW1lbnRhdGlvbikgewogICAgICAgICAgdGhpcy5faW1wbGVtZW50YXRpb24gPSBpbXBsZW1lbnRhdGlvbjsKICAgICAgICAgIHRoaXMuX3Zpc2l0SW5DYWNoZSA9IHt9OwogICAgICAgICAgdGhpcy5fdmlzaXRPdXRDYWNoZSA9IHt9OwogICAgICAgICAgaWYgKCFfaGFzSW5kZXhlZCkgewogICAgICAgICAgICAgIGluZGV4Tm9kZVR5cGVzKHRyZWUsIDEpOwogICAgICAgICAgICAgIF9oYXNJbmRleGVkID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWaXNpdG9yLnByb3RvdHlwZS52aXNpdCA9IGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBub2RlVHlwZUluZGV4ID0gbm9kZS50eXBlSW5kZXg7CiAgICAgICAgICBpZiAoIW5vZGVUeXBlSW5kZXgpIHsKICAgICAgICAgICAgICAvLyBNaXhpbkNhbGwgYXJncyBhcmVuJ3QgYSBub2RlIHR5cGU/CiAgICAgICAgICAgICAgaWYgKG5vZGUudmFsdWUgJiYgbm9kZS52YWx1ZS50eXBlSW5kZXgpIHsKICAgICAgICAgICAgICAgICAgdGhpcy52aXNpdChub2RlLnZhbHVlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgaW1wbCA9IHRoaXMuX2ltcGxlbWVudGF0aW9uOwogICAgICAgICAgdmFyIGZ1bmMgPSB0aGlzLl92aXNpdEluQ2FjaGVbbm9kZVR5cGVJbmRleF07CiAgICAgICAgICB2YXIgZnVuY091dCA9IHRoaXMuX3Zpc2l0T3V0Q2FjaGVbbm9kZVR5cGVJbmRleF07CiAgICAgICAgICB2YXIgdmlzaXRBcmdzID0gX3Zpc2l0QXJnczsKICAgICAgICAgIHZhciBmbk5hbWU7CiAgICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSB0cnVlOwogICAgICAgICAgaWYgKCFmdW5jKSB7CiAgICAgICAgICAgICAgZm5OYW1lID0gInZpc2l0IiArIG5vZGUudHlwZTsKICAgICAgICAgICAgICBmdW5jID0gaW1wbFtmbk5hbWVdIHx8IF9ub29wOwogICAgICAgICAgICAgIGZ1bmNPdXQgPSBpbXBsW2ZuTmFtZSArICJPdXQiXSB8fCBfbm9vcDsKICAgICAgICAgICAgICB0aGlzLl92aXNpdEluQ2FjaGVbbm9kZVR5cGVJbmRleF0gPSBmdW5jOwogICAgICAgICAgICAgIHRoaXMuX3Zpc2l0T3V0Q2FjaGVbbm9kZVR5cGVJbmRleF0gPSBmdW5jT3V0OwogICAgICAgICAgfQogICAgICAgICAgaWYgKGZ1bmMgIT09IF9ub29wKSB7CiAgICAgICAgICAgICAgdmFyIG5ld05vZGUgPSBmdW5jLmNhbGwoaW1wbCwgbm9kZSwgdmlzaXRBcmdzKTsKICAgICAgICAgICAgICBpZiAobm9kZSAmJiBpbXBsLmlzUmVwbGFjaW5nKSB7CiAgICAgICAgICAgICAgICAgIG5vZGUgPSBuZXdOb2RlOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmICh2aXNpdEFyZ3MudmlzaXREZWVwZXIgJiYgbm9kZSkgewogICAgICAgICAgICAgIGlmIChub2RlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgY250ID0gbm9kZS5sZW5ndGg7IGkgPCBjbnQ7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVbaV0uYWNjZXB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZVtpXS5hY2NlcHQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS5hY2NlcHQpIHsKICAgICAgICAgICAgICAgICAgbm9kZS5hY2NlcHQodGhpcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGZ1bmNPdXQgIT0gX25vb3ApIHsKICAgICAgICAgICAgICBmdW5jT3V0LmNhbGwoaW1wbCwgbm9kZSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfTsKICAgICAgVmlzaXRvci5wcm90b3R5cGUudmlzaXRBcnJheSA9IGZ1bmN0aW9uIChub2Rlcywgbm9uUmVwbGFjaW5nKSB7CiAgICAgICAgICBpZiAoIW5vZGVzKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGNudCA9IG5vZGVzLmxlbmd0aDsKICAgICAgICAgIHZhciBpOwogICAgICAgICAgLy8gTm9uLXJlcGxhY2luZwogICAgICAgICAgaWYgKG5vblJlcGxhY2luZyB8fCAhdGhpcy5faW1wbGVtZW50YXRpb24uaXNSZXBsYWNpbmcpIHsKICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKICAgICAgICAgICAgICAgICAgdGhpcy52aXNpdChub2Rlc1tpXSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBub2RlczsKICAgICAgICAgIH0KICAgICAgICAgIC8vIFJlcGxhY2luZwogICAgICAgICAgdmFyIG91dCA9IFtdOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7CiAgICAgICAgICAgICAgdmFyIGV2YWxkID0gdGhpcy52aXNpdChub2Rlc1tpXSk7CiAgICAgICAgICAgICAgaWYgKGV2YWxkID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICghZXZhbGQuc3BsaWNlKSB7CiAgICAgICAgICAgICAgICAgIG91dC5wdXNoKGV2YWxkKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSBpZiAoZXZhbGQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbihldmFsZCwgb3V0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gb3V0OwogICAgICB9OwogICAgICBWaXNpdG9yLnByb3RvdHlwZS5mbGF0dGVuID0gZnVuY3Rpb24gKGFyciwgb3V0KSB7CiAgICAgICAgICBpZiAoIW91dCkgewogICAgICAgICAgICAgIG91dCA9IFtdOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGNudDsKICAgICAgICAgIHZhciBpOwogICAgICAgICAgdmFyIGl0ZW07CiAgICAgICAgICB2YXIgbmVzdGVkQ250OwogICAgICAgICAgdmFyIGo7CiAgICAgICAgICB2YXIgbmVzdGVkSXRlbTsKICAgICAgICAgIGZvciAoaSA9IDAsIGNudCA9IGFyci5sZW5ndGg7IGkgPCBjbnQ7IGkrKykgewogICAgICAgICAgICAgIGl0ZW0gPSBhcnJbaV07CiAgICAgICAgICAgICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKCFpdGVtLnNwbGljZSkgewogICAgICAgICAgICAgICAgICBvdXQucHVzaChpdGVtKTsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGZvciAoaiA9IDAsIG5lc3RlZENudCA9IGl0ZW0ubGVuZ3RoOyBqIDwgbmVzdGVkQ250OyBqKyspIHsKICAgICAgICAgICAgICAgICAgbmVzdGVkSXRlbSA9IGl0ZW1bal07CiAgICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRJdGVtID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICghbmVzdGVkSXRlbS5zcGxpY2UpIHsKICAgICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKG5lc3RlZEl0ZW0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5lc3RlZEl0ZW0ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW4obmVzdGVkSXRlbSwgb3V0KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgIH07CiAgICAgIHJldHVybiBWaXNpdG9yOwogIH0oKSk7CgogIHZhciBJbXBvcnRTZXF1ZW5jZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIEltcG9ydFNlcXVlbmNlcihvblNlcXVlbmNlckVtcHR5KSB7CiAgICAgICAgICB0aGlzLmltcG9ydHMgPSBbXTsKICAgICAgICAgIHRoaXMudmFyaWFibGVJbXBvcnRzID0gW107CiAgICAgICAgICB0aGlzLl9vblNlcXVlbmNlckVtcHR5ID0gb25TZXF1ZW5jZXJFbXB0eTsKICAgICAgICAgIHRoaXMuX2N1cnJlbnREZXB0aCA9IDA7CiAgICAgIH0KICAgICAgSW1wb3J0U2VxdWVuY2VyLnByb3RvdHlwZS5hZGRJbXBvcnQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgICAgICAgIHZhciBpbXBvcnRTZXF1ZW5jZXIgPSB0aGlzOwogICAgICAgICAgdmFyIGltcG9ydEl0ZW0gPSB7CiAgICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLAogICAgICAgICAgICAgIGFyZ3M6IG51bGwsCiAgICAgICAgICAgICAgaXNSZWFkeTogZmFsc2UKICAgICAgICAgIH07CiAgICAgICAgICB0aGlzLmltcG9ydHMucHVzaChpbXBvcnRJdGVtKTsKICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTsKICAgICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykgewogICAgICAgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGltcG9ydEl0ZW0uYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MsIDApOwogICAgICAgICAgICAgIGltcG9ydEl0ZW0uaXNSZWFkeSA9IHRydWU7CiAgICAgICAgICAgICAgaW1wb3J0U2VxdWVuY2VyLnRyeVJ1bigpOwogICAgICAgICAgfTsKICAgICAgfTsKICAgICAgSW1wb3J0U2VxdWVuY2VyLnByb3RvdHlwZS5hZGRWYXJpYWJsZUltcG9ydCA9IGZ1bmN0aW9uIChjYWxsYmFjaykgewogICAgICAgICAgdGhpcy52YXJpYWJsZUltcG9ydHMucHVzaChjYWxsYmFjayk7CiAgICAgIH07CiAgICAgIEltcG9ydFNlcXVlbmNlci5wcm90b3R5cGUudHJ5UnVuID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgdGhpcy5fY3VycmVudERlcHRoKys7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLmltcG9ydHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIGltcG9ydEl0ZW0gPSB0aGlzLmltcG9ydHNbMF07CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWltcG9ydEl0ZW0uaXNSZWFkeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0cyA9IHRoaXMuaW1wb3J0cy5zbGljZSgxKTsKICAgICAgICAgICAgICAgICAgICAgIGltcG9ydEl0ZW0uY2FsbGJhY2suYXBwbHkobnVsbCwgaW1wb3J0SXRlbS5hcmdzKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodGhpcy52YXJpYWJsZUltcG9ydHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB2YXIgdmFyaWFibGVJbXBvcnQgPSB0aGlzLnZhcmlhYmxlSW1wb3J0c1swXTsKICAgICAgICAgICAgICAgICAgdGhpcy52YXJpYWJsZUltcG9ydHMgPSB0aGlzLnZhcmlhYmxlSW1wb3J0cy5zbGljZSgxKTsKICAgICAgICAgICAgICAgICAgdmFyaWFibGVJbXBvcnQoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RGVwdGgtLTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50RGVwdGggPT09IDAgJiYgdGhpcy5fb25TZXF1ZW5jZXJFbXB0eSkgewogICAgICAgICAgICAgIHRoaXMuX29uU2VxdWVuY2VyRW1wdHkoKTsKICAgICAgICAgIH0KICAgICAgfTsKICAgICAgcmV0dXJuIEltcG9ydFNlcXVlbmNlcjsKICB9KCkpOwoKICB2YXIgSW1wb3J0VmlzaXRvciA9IGZ1bmN0aW9uIChpbXBvcnRlciwgZmluaXNoKSB7CiAgICAgIHRoaXMuX3Zpc2l0b3IgPSBuZXcgVmlzaXRvcih0aGlzKTsKICAgICAgdGhpcy5faW1wb3J0ZXIgPSBpbXBvcnRlcjsKICAgICAgdGhpcy5fZmluaXNoID0gZmluaXNoOwogICAgICB0aGlzLmNvbnRleHQgPSBuZXcgY29udGV4dHMuRXZhbCgpOwogICAgICB0aGlzLmltcG9ydENvdW50ID0gMDsKICAgICAgdGhpcy5vbmNlRmlsZURldGVjdGlvbk1hcCA9IHt9OwogICAgICB0aGlzLnJlY3Vyc2lvbkRldGVjdG9yID0ge307CiAgICAgIHRoaXMuX3NlcXVlbmNlciA9IG5ldyBJbXBvcnRTZXF1ZW5jZXIodGhpcy5fb25TZXF1ZW5jZXJFbXB0eS5iaW5kKHRoaXMpKTsKICB9OwogIEltcG9ydFZpc2l0b3IucHJvdG90eXBlID0gewogICAgICBpc1JlcGxhY2luZzogZmFsc2UsCiAgICAgIHJ1bjogZnVuY3Rpb24gKHJvb3QpIHsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgLy8gcHJvY2VzcyB0aGUgY29udGVudHMKICAgICAgICAgICAgICB0aGlzLl92aXNpdG9yLnZpc2l0KHJvb3QpOwogICAgICAgICAgfQogICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZTsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMuaXNGaW5pc2hlZCA9IHRydWU7CiAgICAgICAgICB0aGlzLl9zZXF1ZW5jZXIudHJ5UnVuKCk7CiAgICAgIH0sCiAgICAgIF9vblNlcXVlbmNlckVtcHR5OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpZiAoIXRoaXMuaXNGaW5pc2hlZCkgewogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMuX2ZpbmlzaCh0aGlzLmVycm9yKTsKICAgICAgfSwKICAgICAgdmlzaXRJbXBvcnQ6IGZ1bmN0aW9uIChpbXBvcnROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIHZhciBpbmxpbmVDU1MgPSBpbXBvcnROb2RlLm9wdGlvbnMuaW5saW5lOwogICAgICAgICAgaWYgKCFpbXBvcnROb2RlLmNzcyB8fCBpbmxpbmVDU1MpIHsKICAgICAgICAgICAgICB2YXIgY29udGV4dCA9IG5ldyBjb250ZXh0cy5FdmFsKHRoaXMuY29udGV4dCwgY29weUFycmF5KHRoaXMuY29udGV4dC5mcmFtZXMpKTsKICAgICAgICAgICAgICB2YXIgaW1wb3J0UGFyZW50ID0gY29udGV4dC5mcmFtZXNbMF07CiAgICAgICAgICAgICAgdGhpcy5pbXBvcnRDb3VudCsrOwogICAgICAgICAgICAgIGlmIChpbXBvcnROb2RlLmlzVmFyaWFibGVJbXBvcnQoKSkgewogICAgICAgICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZXIuYWRkVmFyaWFibGVJbXBvcnQodGhpcy5wcm9jZXNzSW1wb3J0Tm9kZS5iaW5kKHRoaXMsIGltcG9ydE5vZGUsIGNvbnRleHQsIGltcG9ydFBhcmVudCkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzSW1wb3J0Tm9kZShpbXBvcnROb2RlLCBjb250ZXh0LCBpbXBvcnRQYXJlbnQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgICB9LAogICAgICBwcm9jZXNzSW1wb3J0Tm9kZTogZnVuY3Rpb24gKGltcG9ydE5vZGUsIGNvbnRleHQsIGltcG9ydFBhcmVudCkgewogICAgICAgICAgdmFyIGV2YWxkSW1wb3J0Tm9kZTsKICAgICAgICAgIHZhciBpbmxpbmVDU1MgPSBpbXBvcnROb2RlLm9wdGlvbnMuaW5saW5lOwogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBldmFsZEltcG9ydE5vZGUgPSBpbXBvcnROb2RlLmV2YWxGb3JJbXBvcnQoY29udGV4dCk7CiAgICAgICAgICB9CiAgICAgICAgICBjYXRjaCAoZSkgewogICAgICAgICAgICAgIGlmICghZS5maWxlbmFtZSkgewogICAgICAgICAgICAgICAgICBlLmluZGV4ID0gaW1wb3J0Tm9kZS5nZXRJbmRleCgpOwogICAgICAgICAgICAgICAgICBlLmZpbGVuYW1lID0gaW1wb3J0Tm9kZS5maWxlSW5mbygpLmZpbGVuYW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBhdHRlbXB0IHRvIGV2YWwgcHJvcGVybHkgYW5kIHRyZWF0IGFzIGNzcwogICAgICAgICAgICAgIGltcG9ydE5vZGUuY3NzID0gdHJ1ZTsKICAgICAgICAgICAgICAvLyBpZiB0aGF0IGZhaWxzLCB0aGlzIGVycm9yIHdpbGwgYmUgdGhyb3duCiAgICAgICAgICAgICAgaW1wb3J0Tm9kZS5lcnJvciA9IGU7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZXZhbGRJbXBvcnROb2RlICYmICghZXZhbGRJbXBvcnROb2RlLmNzcyB8fCBpbmxpbmVDU1MpKSB7CiAgICAgICAgICAgICAgaWYgKGV2YWxkSW1wb3J0Tm9kZS5vcHRpb25zLm11bHRpcGxlKSB7CiAgICAgICAgICAgICAgICAgIGNvbnRleHQuaW1wb3J0TXVsdGlwbGUgPSB0cnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyB0cnkgYXBwZW5kaW5nIGlmIHdlIGhhdmVuJ3QgZGV0ZXJtaW5lZCBpZiBpdCBpcyBjc3Mgb3Igbm90CiAgICAgICAgICAgICAgdmFyIHRyeUFwcGVuZExlc3NFeHRlbnNpb24gPSBldmFsZEltcG9ydE5vZGUuY3NzID09PSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbXBvcnRQYXJlbnQucnVsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgaWYgKGltcG9ydFBhcmVudC5ydWxlc1tpXSA9PT0gaW1wb3J0Tm9kZSkgewogICAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGFyZW50LnJ1bGVzW2ldID0gZXZhbGRJbXBvcnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIG9uSW1wb3J0ZWQgPSB0aGlzLm9uSW1wb3J0ZWQuYmluZCh0aGlzLCBldmFsZEltcG9ydE5vZGUsIGNvbnRleHQpOwogICAgICAgICAgICAgIHZhciBzZXF1ZW5jZWRPbkltcG9ydGVkID0gdGhpcy5fc2VxdWVuY2VyLmFkZEltcG9ydChvbkltcG9ydGVkKTsKICAgICAgICAgICAgICB0aGlzLl9pbXBvcnRlci5wdXNoKGV2YWxkSW1wb3J0Tm9kZS5nZXRQYXRoKCksIHRyeUFwcGVuZExlc3NFeHRlbnNpb24sIGV2YWxkSW1wb3J0Tm9kZS5maWxlSW5mbygpLCBldmFsZEltcG9ydE5vZGUub3B0aW9ucywgc2VxdWVuY2VkT25JbXBvcnRlZCk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLmltcG9ydENvdW50LS07CiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNGaW5pc2hlZCkgewogICAgICAgICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZXIudHJ5UnVuKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9LAogICAgICBvbkltcG9ydGVkOiBmdW5jdGlvbiAoaW1wb3J0Tm9kZSwgY29udGV4dCwgZSwgcm9vdCwgaW1wb3J0ZWRBdFJvb3QsIGZ1bGxQYXRoKSB7CiAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgIGlmICghZS5maWxlbmFtZSkgewogICAgICAgICAgICAgICAgICBlLmluZGV4ID0gaW1wb3J0Tm9kZS5nZXRJbmRleCgpOwogICAgICAgICAgICAgICAgICBlLmZpbGVuYW1lID0gaW1wb3J0Tm9kZS5maWxlSW5mbygpLmZpbGVuYW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBpbXBvcnRWaXNpdG9yID0gdGhpczsKICAgICAgICAgIHZhciBpbmxpbmVDU1MgPSBpbXBvcnROb2RlLm9wdGlvbnMuaW5saW5lOwogICAgICAgICAgdmFyIGlzUGx1Z2luID0gaW1wb3J0Tm9kZS5vcHRpb25zLmlzUGx1Z2luOwogICAgICAgICAgdmFyIGlzT3B0aW9uYWwgPSBpbXBvcnROb2RlLm9wdGlvbnMub3B0aW9uYWw7CiAgICAgICAgICB2YXIgZHVwbGljYXRlSW1wb3J0ID0gaW1wb3J0ZWRBdFJvb3QgfHwgZnVsbFBhdGggaW4gaW1wb3J0VmlzaXRvci5yZWN1cnNpb25EZXRlY3RvcjsKICAgICAgICAgIGlmICghY29udGV4dC5pbXBvcnRNdWx0aXBsZSkgewogICAgICAgICAgICAgIGlmIChkdXBsaWNhdGVJbXBvcnQpIHsKICAgICAgICAgICAgICAgICAgaW1wb3J0Tm9kZS5za2lwID0gdHJ1ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIGltcG9ydE5vZGUuc2tpcCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmdWxsUGF0aCBpbiBpbXBvcnRWaXNpdG9yLm9uY2VGaWxlRGV0ZWN0aW9uTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRWaXNpdG9yLm9uY2VGaWxlRGV0ZWN0aW9uTWFwW2Z1bGxQYXRoXSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKCFmdWxsUGF0aCAmJiBpc09wdGlvbmFsKSB7CiAgICAgICAgICAgICAgaW1wb3J0Tm9kZS5za2lwID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChyb290KSB7CiAgICAgICAgICAgICAgaW1wb3J0Tm9kZS5yb290ID0gcm9vdDsKICAgICAgICAgICAgICBpbXBvcnROb2RlLmltcG9ydGVkRmlsZW5hbWUgPSBmdWxsUGF0aDsKICAgICAgICAgICAgICBpZiAoIWlubGluZUNTUyAmJiAhaXNQbHVnaW4gJiYgKGNvbnRleHQuaW1wb3J0TXVsdGlwbGUgfHwgIWR1cGxpY2F0ZUltcG9ydCkpIHsKICAgICAgICAgICAgICAgICAgaW1wb3J0VmlzaXRvci5yZWN1cnNpb25EZXRlY3RvcltmdWxsUGF0aF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICB2YXIgb2xkQ29udGV4dCA9IHRoaXMuY29udGV4dDsKICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsKICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Zpc2l0b3IudmlzaXQocm9vdCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IG9sZENvbnRleHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaW1wb3J0VmlzaXRvci5pbXBvcnRDb3VudC0tOwogICAgICAgICAgaWYgKGltcG9ydFZpc2l0b3IuaXNGaW5pc2hlZCkgewogICAgICAgICAgICAgIGltcG9ydFZpc2l0b3IuX3NlcXVlbmNlci50cnlSdW4oKTsKICAgICAgICAgIH0KICAgICAgfSwKICAgICAgdmlzaXREZWNsYXJhdGlvbjogZnVuY3Rpb24gKGRlY2xOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIGlmIChkZWNsTm9kZS52YWx1ZS50eXBlID09PSAnRGV0YWNoZWRSdWxlc2V0JykgewogICAgICAgICAgICAgIHRoaXMuY29udGV4dC5mcmFtZXMudW5zaGlmdChkZWNsTm9kZSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKICAgICAgICAgIH0KICAgICAgfSwKICAgICAgdmlzaXREZWNsYXJhdGlvbk91dDogZnVuY3Rpb24gKGRlY2xOb2RlKSB7CiAgICAgICAgICBpZiAoZGVjbE5vZGUudmFsdWUudHlwZSA9PT0gJ0RldGFjaGVkUnVsZXNldCcpIHsKICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZnJhbWVzLnNoaWZ0KCk7CiAgICAgICAgICB9CiAgICAgIH0sCiAgICAgIHZpc2l0QXRSdWxlOiBmdW5jdGlvbiAoYXRSdWxlTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgICB0aGlzLmNvbnRleHQuZnJhbWVzLnVuc2hpZnQoYXRSdWxlTm9kZSk7CiAgICAgIH0sCiAgICAgIHZpc2l0QXRSdWxlT3V0OiBmdW5jdGlvbiAoYXRSdWxlTm9kZSkgewogICAgICAgICAgdGhpcy5jb250ZXh0LmZyYW1lcy5zaGlmdCgpOwogICAgICB9LAogICAgICB2aXNpdE1peGluRGVmaW5pdGlvbjogZnVuY3Rpb24gKG1peGluRGVmaW5pdGlvbk5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgdGhpcy5jb250ZXh0LmZyYW1lcy51bnNoaWZ0KG1peGluRGVmaW5pdGlvbk5vZGUpOwogICAgICB9LAogICAgICB2aXNpdE1peGluRGVmaW5pdGlvbk91dDogZnVuY3Rpb24gKG1peGluRGVmaW5pdGlvbk5vZGUpIHsKICAgICAgICAgIHRoaXMuY29udGV4dC5mcmFtZXMuc2hpZnQoKTsKICAgICAgfSwKICAgICAgdmlzaXRSdWxlc2V0OiBmdW5jdGlvbiAocnVsZXNldE5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgdGhpcy5jb250ZXh0LmZyYW1lcy51bnNoaWZ0KHJ1bGVzZXROb2RlKTsKICAgICAgfSwKICAgICAgdmlzaXRSdWxlc2V0T3V0OiBmdW5jdGlvbiAocnVsZXNldE5vZGUpIHsKICAgICAgICAgIHRoaXMuY29udGV4dC5mcmFtZXMuc2hpZnQoKTsKICAgICAgfSwKICAgICAgdmlzaXRNZWRpYTogZnVuY3Rpb24gKG1lZGlhTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgICB0aGlzLmNvbnRleHQuZnJhbWVzLnVuc2hpZnQobWVkaWFOb2RlLnJ1bGVzWzBdKTsKICAgICAgfSwKICAgICAgdmlzaXRNZWRpYU91dDogZnVuY3Rpb24gKG1lZGlhTm9kZSkgewogICAgICAgICAgdGhpcy5jb250ZXh0LmZyYW1lcy5zaGlmdCgpOwogICAgICB9CiAgfTsKCiAgdmFyIFNldFRyZWVWaXNpYmlsaXR5VmlzaXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gU2V0VHJlZVZpc2liaWxpdHlWaXNpdG9yKHZpc2libGUpIHsKICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGU7CiAgICAgIH0KICAgICAgU2V0VHJlZVZpc2liaWxpdHlWaXNpdG9yLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAocm9vdCkgewogICAgICAgICAgdGhpcy52aXNpdChyb290KTsKICAgICAgfTsKICAgICAgU2V0VHJlZVZpc2liaWxpdHlWaXNpdG9yLnByb3RvdHlwZS52aXNpdEFycmF5ID0gZnVuY3Rpb24gKG5vZGVzKSB7CiAgICAgICAgICBpZiAoIW5vZGVzKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGNudCA9IG5vZGVzLmxlbmd0aDsKICAgICAgICAgIHZhciBpOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7CiAgICAgICAgICAgICAgdGhpcy52aXNpdChub2Rlc1tpXSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbm9kZXM7CiAgICAgIH07CiAgICAgIFNldFRyZWVWaXNpYmlsaXR5VmlzaXRvci5wcm90b3R5cGUudmlzaXQgPSBmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAobm9kZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy52aXNpdEFycmF5KG5vZGUpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKCFub2RlLmJsb2Nrc1Zpc2liaWxpdHkgfHwgbm9kZS5ibG9ja3NWaXNpYmlsaXR5KCkpIHsKICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aGlzLnZpc2libGUpIHsKICAgICAgICAgICAgICBub2RlLmVuc3VyZVZpc2liaWxpdHkoKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIG5vZGUuZW5zdXJlSW52aXNpYmlsaXR5KCk7CiAgICAgICAgICB9CiAgICAgICAgICBub2RlLmFjY2VwdCh0aGlzKTsKICAgICAgICAgIHJldHVybiBub2RlOwogICAgICB9OwogICAgICByZXR1cm4gU2V0VHJlZVZpc2liaWxpdHlWaXNpdG9yOwogIH0oKSk7CgogIC8qIGpzaGludCBsb29wZnVuYzp0cnVlICovCiAgdmFyIEV4dGVuZEZpbmRlclZpc2l0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIEV4dGVuZEZpbmRlclZpc2l0b3IoKSB7CiAgICAgICAgICB0aGlzLl92aXNpdG9yID0gbmV3IFZpc2l0b3IodGhpcyk7CiAgICAgICAgICB0aGlzLmNvbnRleHRzID0gW107CiAgICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFjayA9IFtbXV07CiAgICAgIH0KICAgICAgRXh0ZW5kRmluZGVyVmlzaXRvci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHJvb3QpIHsKICAgICAgICAgIHJvb3QgPSB0aGlzLl92aXNpdG9yLnZpc2l0KHJvb3QpOwogICAgICAgICAgcm9vdC5hbGxFeHRlbmRzID0gdGhpcy5hbGxFeHRlbmRzU3RhY2tbMF07CiAgICAgICAgICByZXR1cm4gcm9vdDsKICAgICAgfTsKICAgICAgRXh0ZW5kRmluZGVyVmlzaXRvci5wcm90b3R5cGUudmlzaXREZWNsYXJhdGlvbiA9IGZ1bmN0aW9uIChkZWNsTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKICAgICAgfTsKICAgICAgRXh0ZW5kRmluZGVyVmlzaXRvci5wcm90b3R5cGUudmlzaXRNaXhpbkRlZmluaXRpb24gPSBmdW5jdGlvbiAobWl4aW5EZWZpbml0aW9uTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgICB2aXNpdEFyZ3MudmlzaXREZWVwZXIgPSBmYWxzZTsKICAgICAgfTsKICAgICAgRXh0ZW5kRmluZGVyVmlzaXRvci5wcm90b3R5cGUudmlzaXRSdWxlc2V0ID0gZnVuY3Rpb24gKHJ1bGVzZXROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIGlmIChydWxlc2V0Tm9kZS5yb290KSB7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGk7CiAgICAgICAgICB2YXIgajsKICAgICAgICAgIHZhciBleHRlbmQ7CiAgICAgICAgICB2YXIgYWxsU2VsZWN0b3JzRXh0ZW5kTGlzdCA9IFtdOwogICAgICAgICAgdmFyIGV4dGVuZExpc3Q7CiAgICAgICAgICAvLyBnZXQgJjpleHRlbmQoLmEpOyBydWxlcyB3aGljaCBhcHBseSB0byBhbGwgc2VsZWN0b3JzIGluIHRoaXMgcnVsZXNldAogICAgICAgICAgdmFyIHJ1bGVzID0gcnVsZXNldE5vZGUucnVsZXM7CiAgICAgICAgICB2YXIgcnVsZUNudCA9IHJ1bGVzID8gcnVsZXMubGVuZ3RoIDogMDsKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBydWxlQ250OyBpKyspIHsKICAgICAgICAgICAgICBpZiAocnVsZXNldE5vZGUucnVsZXNbaV0gaW5zdGFuY2VvZiB0cmVlLkV4dGVuZCkgewogICAgICAgICAgICAgICAgICBhbGxTZWxlY3RvcnNFeHRlbmRMaXN0LnB1c2gocnVsZXNbaV0pOwogICAgICAgICAgICAgICAgICBydWxlc2V0Tm9kZS5leHRlbmRPbkV2ZXJ5UGF0aCA9IHRydWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLy8gbm93IGZpbmQgZXZlcnkgc2VsZWN0b3IgYW5kIGFwcGx5IHRoZSBleHRlbmRzIHRoYXQgYXBwbHkgdG8gYWxsIGV4dGVuZHMKICAgICAgICAgIC8vIGFuZCB0aGUgb25lcyB3aGljaCBhcHBseSB0byBhbiBpbmRpdmlkdWFsIGV4dGVuZAogICAgICAgICAgdmFyIHBhdGhzID0gcnVsZXNldE5vZGUucGF0aHM7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGF0aHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JQYXRoID0gcGF0aHNbaV07CiAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gc2VsZWN0b3JQYXRoW3NlbGVjdG9yUGF0aC5sZW5ndGggLSAxXTsKICAgICAgICAgICAgICB2YXIgc2VsRXh0ZW5kTGlzdCA9IHNlbGVjdG9yLmV4dGVuZExpc3Q7CiAgICAgICAgICAgICAgZXh0ZW5kTGlzdCA9IHNlbEV4dGVuZExpc3QgPyBjb3B5QXJyYXkoc2VsRXh0ZW5kTGlzdCkuY29uY2F0KGFsbFNlbGVjdG9yc0V4dGVuZExpc3QpCiAgICAgICAgICAgICAgICAgIDogYWxsU2VsZWN0b3JzRXh0ZW5kTGlzdDsKICAgICAgICAgICAgICBpZiAoZXh0ZW5kTGlzdCkgewogICAgICAgICAgICAgICAgICBleHRlbmRMaXN0ID0gZXh0ZW5kTGlzdC5tYXAoZnVuY3Rpb24gKGFsbFNlbGVjdG9yc0V4dGVuZCkgeyByZXR1cm4gYWxsU2VsZWN0b3JzRXh0ZW5kLmNsb25lKCk7IH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZXh0ZW5kTGlzdC5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICB0aGlzLmZvdW5kRXh0ZW5kcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgIGV4dGVuZCA9IGV4dGVuZExpc3Rbal07CiAgICAgICAgICAgICAgICAgIGV4dGVuZC5maW5kU2VsZlNlbGVjdG9ycyhzZWxlY3RvclBhdGgpOwogICAgICAgICAgICAgICAgICBleHRlbmQucnVsZXNldCA9IHJ1bGVzZXROb2RlOwogICAgICAgICAgICAgICAgICBpZiAoaiA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kLmZpcnN0RXh0ZW5kT25UaGlzU2VsZWN0b3JQYXRoID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFja1t0aGlzLmFsbEV4dGVuZHNTdGFjay5sZW5ndGggLSAxXS5wdXNoKGV4dGVuZCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgdGhpcy5jb250ZXh0cy5wdXNoKHJ1bGVzZXROb2RlLnNlbGVjdG9ycyk7CiAgICAgIH07CiAgICAgIEV4dGVuZEZpbmRlclZpc2l0b3IucHJvdG90eXBlLnZpc2l0UnVsZXNldE91dCA9IGZ1bmN0aW9uIChydWxlc2V0Tm9kZSkgewogICAgICAgICAgaWYgKCFydWxlc2V0Tm9kZS5yb290KSB7CiAgICAgICAgICAgICAgdGhpcy5jb250ZXh0cy5sZW5ndGggPSB0aGlzLmNvbnRleHRzLmxlbmd0aCAtIDE7CiAgICAgICAgICB9CiAgICAgIH07CiAgICAgIEV4dGVuZEZpbmRlclZpc2l0b3IucHJvdG90eXBlLnZpc2l0TWVkaWEgPSBmdW5jdGlvbiAobWVkaWFOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIG1lZGlhTm9kZS5hbGxFeHRlbmRzID0gW107CiAgICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFjay5wdXNoKG1lZGlhTm9kZS5hbGxFeHRlbmRzKTsKICAgICAgfTsKICAgICAgRXh0ZW5kRmluZGVyVmlzaXRvci5wcm90b3R5cGUudmlzaXRNZWRpYU91dCA9IGZ1bmN0aW9uIChtZWRpYU5vZGUpIHsKICAgICAgICAgIHRoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCA9IHRoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCAtIDE7CiAgICAgIH07CiAgICAgIEV4dGVuZEZpbmRlclZpc2l0b3IucHJvdG90eXBlLnZpc2l0QXRSdWxlID0gZnVuY3Rpb24gKGF0UnVsZU5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgYXRSdWxlTm9kZS5hbGxFeHRlbmRzID0gW107CiAgICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFjay5wdXNoKGF0UnVsZU5vZGUuYWxsRXh0ZW5kcyk7CiAgICAgIH07CiAgICAgIEV4dGVuZEZpbmRlclZpc2l0b3IucHJvdG90eXBlLnZpc2l0QXRSdWxlT3V0ID0gZnVuY3Rpb24gKGF0UnVsZU5vZGUpIHsKICAgICAgICAgIHRoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCA9IHRoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCAtIDE7CiAgICAgIH07CiAgICAgIHJldHVybiBFeHRlbmRGaW5kZXJWaXNpdG9yOwogIH0oKSk7CiAgdmFyIFByb2Nlc3NFeHRlbmRzVmlzaXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gUHJvY2Vzc0V4dGVuZHNWaXNpdG9yKCkgewogICAgICAgICAgdGhpcy5fdmlzaXRvciA9IG5ldyBWaXNpdG9yKHRoaXMpOwogICAgICB9CiAgICAgIFByb2Nlc3NFeHRlbmRzVmlzaXRvci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHJvb3QpIHsKICAgICAgICAgIHZhciBleHRlbmRGaW5kZXIgPSBuZXcgRXh0ZW5kRmluZGVyVmlzaXRvcigpOwogICAgICAgICAgdGhpcy5leHRlbmRJbmRpY2VzID0ge307CiAgICAgICAgICBleHRlbmRGaW5kZXIucnVuKHJvb3QpOwogICAgICAgICAgaWYgKCFleHRlbmRGaW5kZXIuZm91bmRFeHRlbmRzKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7CiAgICAgICAgICB9CiAgICAgICAgICByb290LmFsbEV4dGVuZHMgPSByb290LmFsbEV4dGVuZHMuY29uY2F0KHRoaXMuZG9FeHRlbmRDaGFpbmluZyhyb290LmFsbEV4dGVuZHMsIHJvb3QuYWxsRXh0ZW5kcykpOwogICAgICAgICAgdGhpcy5hbGxFeHRlbmRzU3RhY2sgPSBbcm9vdC5hbGxFeHRlbmRzXTsKICAgICAgICAgIHZhciBuZXdSb290ID0gdGhpcy5fdmlzaXRvci52aXNpdChyb290KTsKICAgICAgICAgIHRoaXMuY2hlY2tFeHRlbmRzRm9yTm9uTWF0Y2hlZChyb290LmFsbEV4dGVuZHMpOwogICAgICAgICAgcmV0dXJuIG5ld1Jvb3Q7CiAgICAgIH07CiAgICAgIFByb2Nlc3NFeHRlbmRzVmlzaXRvci5wcm90b3R5cGUuY2hlY2tFeHRlbmRzRm9yTm9uTWF0Y2hlZCA9IGZ1bmN0aW9uIChleHRlbmRMaXN0KSB7CiAgICAgICAgICB2YXIgaW5kaWNlcyA9IHRoaXMuZXh0ZW5kSW5kaWNlczsKICAgICAgICAgIGV4dGVuZExpc3QuZmlsdGVyKGZ1bmN0aW9uIChleHRlbmQpIHsgcmV0dXJuICFleHRlbmQuaGFzRm91bmRNYXRjaGVzICYmIGV4dGVuZC5wYXJlbnRfaWRzLmxlbmd0aCA9PSAxOyB9KS5mb3JFYWNoKGZ1bmN0aW9uIChleHRlbmQpIHsKICAgICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSAnX3Vua25vd25fJzsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGV4dGVuZC5zZWxlY3Rvci50b0NTUyh7fSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhdGNoIChfKSB7IH0KICAgICAgICAgICAgICBpZiAoIWluZGljZXNbZXh0ZW5kLmluZGV4ICsgIiAiICsgc2VsZWN0b3JdKSB7CiAgICAgICAgICAgICAgICAgIGluZGljZXNbZXh0ZW5kLmluZGV4ICsgIiAiICsgc2VsZWN0b3JdID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oImV4dGVuZCAnIiArIHNlbGVjdG9yICsgIicgaGFzIG5vIG1hdGNoZXMiKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgfTsKICAgICAgUHJvY2Vzc0V4dGVuZHNWaXNpdG9yLnByb3RvdHlwZS5kb0V4dGVuZENoYWluaW5nID0gZnVuY3Rpb24gKGV4dGVuZHNMaXN0LCBleHRlbmRzTGlzdFRhcmdldCwgaXRlcmF0aW9uQ291bnQpIHsKICAgICAgICAgIC8vCiAgICAgICAgICAvLyBjaGFpbmluZyBpcyBkaWZmZXJlbnQgZnJvbSBub3JtYWwgZXh0ZW5zaW9uLi4gaWYgd2UgZXh0ZW5kIGFuIGV4dGVuZCB0aGVuIHdlIGFyZSBub3QganVzdCBjb3B5aW5nLCBhbHRlcmluZwogICAgICAgICAgLy8gYW5kIHBhc3RpbmcgdGhlIHNlbGVjdG9yIHdlIHdvdWxkIGRvIG5vcm1hbGx5LCBidXQgd2UgYXJlIGFsc28gYWRkaW5nIGFuIGV4dGVuZCB3aXRoIHRoZSBzYW1lIHRhcmdldCBzZWxlY3RvcgogICAgICAgICAgLy8gdGhpcyBtZWFucyB0aGlzIG5ldyBleHRlbmQgY2FuIHRoZW4gZ28gYW5kIGFsdGVyIG90aGVyIGV4dGVuZHMKICAgICAgICAgIC8vCiAgICAgICAgICAvLyB0aGlzIG1ldGhvZCBkZWFscyB3aXRoIGFsbCB0aGUgY2hhaW5pbmcgd29yayAtIHdpdGhvdXQgaXQsIGV4dGVuZCBpcyBmbGF0IGFuZCBkb2Vzbid0IHdvcmsgb24gb3RoZXIgZXh0ZW5kIHNlbGVjdG9ycwogICAgICAgICAgLy8gdGhpcyBpcyBhbHNvIHRoZSBtb3N0IGV4cGVuc2l2ZS4uIGFuZCBhIG1hdGNoIG9uIG9uZSBzZWxlY3RvciBjYW4gY2F1c2UgYW4gZXh0ZW5zaW9uIG9mIGEgc2VsZWN0b3Igd2UgaGFkIGFscmVhZHkKICAgICAgICAgIC8vIHByb2Nlc3NlZCBpZiB3ZSBsb29rIGF0IGVhY2ggc2VsZWN0b3IgYXQgYSB0aW1lLCBhcyBpcyBkb25lIGluIHZpc2l0UnVsZXNldAogICAgICAgICAgdmFyIGV4dGVuZEluZGV4OwogICAgICAgICAgdmFyIHRhcmdldEV4dGVuZEluZGV4OwogICAgICAgICAgdmFyIG1hdGNoZXM7CiAgICAgICAgICB2YXIgZXh0ZW5kc1RvQWRkID0gW107CiAgICAgICAgICB2YXIgbmV3U2VsZWN0b3I7CiAgICAgICAgICB2YXIgZXh0ZW5kVmlzaXRvciA9IHRoaXM7CiAgICAgICAgICB2YXIgc2VsZWN0b3JQYXRoOwogICAgICAgICAgdmFyIGV4dGVuZDsKICAgICAgICAgIHZhciB0YXJnZXRFeHRlbmQ7CiAgICAgICAgICB2YXIgbmV3RXh0ZW5kOwogICAgICAgICAgaXRlcmF0aW9uQ291bnQgPSBpdGVyYXRpb25Db3VudCB8fCAwOwogICAgICAgICAgLy8gbG9vcCB0aHJvdWdoIGNvbXBhcmluZyBldmVyeSBleHRlbmQgd2l0aCBldmVyeSB0YXJnZXQgZXh0ZW5kLgogICAgICAgICAgLy8gYSB0YXJnZXQgZXh0ZW5kIGlzIHRoZSBvbmUgb24gdGhlIHJ1bGVzZXQgd2UgYXJlIGxvb2tpbmcgYXQgY29weS9lZGl0L3Bhc3RpbmcgaW4gcGxhY2UKICAgICAgICAgIC8vIGUuZy4gIC5hOmV4dGVuZCguYikge30gIGFuZCAuYjpleHRlbmQoLmMpIHt9IHRoZW4gdGhlIGZpcnN0IGV4dGVuZCBleHRlbmRzIHRoZSBzZWNvbmQgb25lCiAgICAgICAgICAvLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGFyZ2V0LgogICAgICAgICAgLy8gdGhlIHNlcGFyYXRpb24gaW50byB0d28gbGlzdHMgYWxsb3dzIHVzIHRvIHByb2Nlc3MgYSBzdWJzZXQgb2YgY2hhaW5zIHdpdGggYSBiaWdnZXIgc2V0LCBhcyBpcyB0aGUKICAgICAgICAgIC8vIGNhc2Ugd2hlbiBwcm9jZXNzaW5nIG1lZGlhIHF1ZXJpZXMKICAgICAgICAgIGZvciAoZXh0ZW5kSW5kZXggPSAwOyBleHRlbmRJbmRleCA8IGV4dGVuZHNMaXN0Lmxlbmd0aDsgZXh0ZW5kSW5kZXgrKykgewogICAgICAgICAgICAgIGZvciAodGFyZ2V0RXh0ZW5kSW5kZXggPSAwOyB0YXJnZXRFeHRlbmRJbmRleCA8IGV4dGVuZHNMaXN0VGFyZ2V0Lmxlbmd0aDsgdGFyZ2V0RXh0ZW5kSW5kZXgrKykgewogICAgICAgICAgICAgICAgICBleHRlbmQgPSBleHRlbmRzTGlzdFtleHRlbmRJbmRleF07CiAgICAgICAgICAgICAgICAgIHRhcmdldEV4dGVuZCA9IGV4dGVuZHNMaXN0VGFyZ2V0W3RhcmdldEV4dGVuZEluZGV4XTsKICAgICAgICAgICAgICAgICAgLy8gbG9vayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kLnBhcmVudF9pZHMuaW5kZXhPZih0YXJnZXRFeHRlbmQub2JqZWN0X2lkKSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAvLyBmaW5kIGEgbWF0Y2ggaW4gdGhlIHRhcmdldCBleHRlbmRzIHNlbGYgc2VsZWN0b3IgKHRoZSBiaXQgYmVmb3JlIDpleHRlbmQpCiAgICAgICAgICAgICAgICAgIHNlbGVjdG9yUGF0aCA9IFt0YXJnZXRFeHRlbmQuc2VsZlNlbGVjdG9yc1swXV07CiAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBleHRlbmRWaXNpdG9yLmZpbmRNYXRjaChleHRlbmQsIHNlbGVjdG9yUGF0aCk7CiAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kLmhhc0ZvdW5kTWF0Y2hlcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBmb3VuZCBhIG1hdGNoLCBzbyBmb3IgZWFjaCBzZWxmIHNlbGVjdG9yLi4KICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZC5zZWxmU2VsZWN0b3JzLmZvckVhY2goZnVuY3Rpb24gKHNlbGZTZWxlY3RvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmZvID0gdGFyZ2V0RXh0ZW5kLnZpc2liaWxpdHlJbmZvKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvY2VzcyB0aGUgZXh0ZW5kIGFzIHVzdWFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0b3IgPSBleHRlbmRWaXNpdG9yLmV4dGVuZFNlbGVjdG9yKG1hdGNoZXMsIHNlbGVjdG9yUGF0aCwgc2VsZlNlbGVjdG9yLCBleHRlbmQuaXNWaXNpYmxlKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBub3cgd2UgY3JlYXRlIGEgbmV3IGV4dGVuZCBmcm9tIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXh0ZW5kID0gbmV3ICh0cmVlLkV4dGVuZCkodGFyZ2V0RXh0ZW5kLnNlbGVjdG9yLCB0YXJnZXRFeHRlbmQub3B0aW9uLCAwLCB0YXJnZXRFeHRlbmQuZmlsZUluZm8oKSwgaW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXh0ZW5kLnNlbGZTZWxlY3RvcnMgPSBuZXdTZWxlY3RvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdGhlIGV4dGVuZCBvbnRvIHRoZSBsaXN0IG9mIGV4dGVuZHMgZm9yIHRoYXQgc2VsZWN0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RvcltuZXdTZWxlY3Rvci5sZW5ndGggLSAxXS5leHRlbmRMaXN0ID0gW25ld0V4dGVuZF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVjb3JkIHRoYXQgd2UgbmVlZCB0byBhZGQgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kc1RvQWRkLnB1c2gobmV3RXh0ZW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFeHRlbmQucnVsZXNldCA9IHRhcmdldEV4dGVuZC5ydWxlc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbWVtYmVyIGl0cyBwYXJlbnRzIGZvciBjaXJjdWxhciByZWZlcmVuY2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXh0ZW5kLnBhcmVudF9pZHMgPSBuZXdFeHRlbmQucGFyZW50X2lkcy5jb25jYXQodGFyZ2V0RXh0ZW5kLnBhcmVudF9pZHMsIGV4dGVuZC5wYXJlbnRfaWRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHByb2Nlc3MgdGhlIHNlbGVjdG9yIG9uY2UuLiBpZiB3ZSBoYXZlIDpleHRlbmQoLmEsLmIpIHRoZW4gbXVsdGlwbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleHRlbmRzIHdpbGwgbG9vayBhdCB0aGUgc2FtZSBzZWxlY3RvciBwYXRoLCBzbyB3aGVuIGV4dGVuZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGtub3cgdGhhdCBhbnkgb3RoZXJzIHdpbGwgYmUgZHVwbGljYXRlcyBpbiB0ZXJtcyBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBjc3MKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RXh0ZW5kLmZpcnN0RXh0ZW5kT25UaGlzU2VsZWN0b3JQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0V4dGVuZC5maXJzdEV4dGVuZE9uVGhpc1NlbGVjdG9yUGF0aCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEV4dGVuZC5ydWxlc2V0LnBhdGhzLnB1c2gobmV3U2VsZWN0b3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGV4dGVuZHNUb0FkZC5sZW5ndGgpIHsKICAgICAgICAgICAgICAvLyB0cnkgdG8gZGV0ZWN0IGNpcmN1bGFyIHJlZmVyZW5jZXMgdG8gc3RvcCBhIHN0YWNrIG92ZXJmbG93LgogICAgICAgICAgICAgIC8vIG1heSBubyBsb25nZXIgYmUgbmVlZGVkLgogICAgICAgICAgICAgIHRoaXMuZXh0ZW5kQ2hhaW5Db3VudCsrOwogICAgICAgICAgICAgIGlmIChpdGVyYXRpb25Db3VudCA+IDEwMCkgewogICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JPbmUgPSAne3VuYWJsZSB0byBjYWxjdWxhdGV9JzsKICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yVHdvID0gJ3t1bmFibGUgdG8gY2FsY3VsYXRlfSc7CiAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvck9uZSA9IGV4dGVuZHNUb0FkZFswXS5zZWxmU2VsZWN0b3JzWzBdLnRvQ1NTKCk7CiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvclR3byA9IGV4dGVuZHNUb0FkZFswXS5zZWxlY3Rvci50b0NTUygpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7IH0KICAgICAgICAgICAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiAiZXh0ZW5kIGNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZC4gT25lIG9mIHRoZSBjaXJjdWxhciBleHRlbmRzIGlzIGN1cnJlbnRseToiICsgc2VsZWN0b3JPbmUgKyAiOmV4dGVuZCgiICsgc2VsZWN0b3JUd28gKyAiKSIgfTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gbm93IHByb2Nlc3MgdGhlIG5ldyBleHRlbmRzIG9uIHRoZSBleGlzdGluZyBydWxlcyBzbyB0aGF0IHdlIGNhbiBoYW5kbGUgYSBleHRlbmRpbmcgYiBleHRlbmRpbmcgYyBleHRlbmRpbmcKICAgICAgICAgICAgICAvLyBkIGV4dGVuZGluZyBlLi4uCiAgICAgICAgICAgICAgcmV0dXJuIGV4dGVuZHNUb0FkZC5jb25jYXQoZXh0ZW5kVmlzaXRvci5kb0V4dGVuZENoYWluaW5nKGV4dGVuZHNUb0FkZCwgZXh0ZW5kc0xpc3RUYXJnZXQsIGl0ZXJhdGlvbkNvdW50ICsgMSkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGV4dGVuZHNUb0FkZDsKICAgICAgICAgIH0KICAgICAgfTsKICAgICAgUHJvY2Vzc0V4dGVuZHNWaXNpdG9yLnByb3RvdHlwZS52aXNpdERlY2xhcmF0aW9uID0gZnVuY3Rpb24gKHJ1bGVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgICB9OwogICAgICBQcm9jZXNzRXh0ZW5kc1Zpc2l0b3IucHJvdG90eXBlLnZpc2l0TWl4aW5EZWZpbml0aW9uID0gZnVuY3Rpb24gKG1peGluRGVmaW5pdGlvbk5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgdmlzaXRBcmdzLnZpc2l0RGVlcGVyID0gZmFsc2U7CiAgICAgIH07CiAgICAgIFByb2Nlc3NFeHRlbmRzVmlzaXRvci5wcm90b3R5cGUudmlzaXRTZWxlY3RvciA9IGZ1bmN0aW9uIChzZWxlY3Rvck5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgdmlzaXRBcmdzLnZpc2l0RGVlcGVyID0gZmFsc2U7CiAgICAgIH07CiAgICAgIFByb2Nlc3NFeHRlbmRzVmlzaXRvci5wcm90b3R5cGUudmlzaXRSdWxlc2V0ID0gZnVuY3Rpb24gKHJ1bGVzZXROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIGlmIChydWxlc2V0Tm9kZS5yb290KSB7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgdmFyIG1hdGNoZXM7CiAgICAgICAgICB2YXIgcGF0aEluZGV4OwogICAgICAgICAgdmFyIGV4dGVuZEluZGV4OwogICAgICAgICAgdmFyIGFsbEV4dGVuZHMgPSB0aGlzLmFsbEV4dGVuZHNTdGFja1t0aGlzLmFsbEV4dGVuZHNTdGFjay5sZW5ndGggLSAxXTsKICAgICAgICAgIHZhciBzZWxlY3RvcnNUb0FkZCA9IFtdOwogICAgICAgICAgdmFyIGV4dGVuZFZpc2l0b3IgPSB0aGlzOwogICAgICAgICAgdmFyIHNlbGVjdG9yUGF0aDsKICAgICAgICAgIC8vIGxvb2sgYXQgZWFjaCBzZWxlY3RvciBwYXRoIGluIHRoZSBydWxlc2V0LCBmaW5kIGFueSBleHRlbmQgbWF0Y2hlcyBhbmQgdGhlbiBjb3B5LCBmaW5kIGFuZCByZXBsYWNlCiAgICAgICAgICBmb3IgKGV4dGVuZEluZGV4ID0gMDsgZXh0ZW5kSW5kZXggPCBhbGxFeHRlbmRzLmxlbmd0aDsgZXh0ZW5kSW5kZXgrKykgewogICAgICAgICAgICAgIGZvciAocGF0aEluZGV4ID0gMDsgcGF0aEluZGV4IDwgcnVsZXNldE5vZGUucGF0aHMubGVuZ3RoOyBwYXRoSW5kZXgrKykgewogICAgICAgICAgICAgICAgICBzZWxlY3RvclBhdGggPSBydWxlc2V0Tm9kZS5wYXRoc1twYXRoSW5kZXhdOwogICAgICAgICAgICAgICAgICAvLyBleHRlbmRpbmcgZXh0ZW5kcyBoYXBwZW5zIGluaXRpYWxseSwgYmVmb3JlIHRoZSBtYWluIHBhc3MKICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVzZXROb2RlLmV4dGVuZE9uRXZlcnlQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB2YXIgZXh0ZW5kTGlzdCA9IHNlbGVjdG9yUGF0aFtzZWxlY3RvclBhdGgubGVuZ3RoIC0gMV0uZXh0ZW5kTGlzdDsKICAgICAgICAgICAgICAgICAgaWYgKGV4dGVuZExpc3QgJiYgZXh0ZW5kTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSB0aGlzLmZpbmRNYXRjaChhbGxFeHRlbmRzW2V4dGVuZEluZGV4XSwgc2VsZWN0b3JQYXRoKTsKICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICBhbGxFeHRlbmRzW2V4dGVuZEluZGV4XS5oYXNGb3VuZE1hdGNoZXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgYWxsRXh0ZW5kc1tleHRlbmRJbmRleF0uc2VsZlNlbGVjdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChzZWxmU2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXh0ZW5kZWRTZWxlY3RvcnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRTZWxlY3RvcnMgPSBleHRlbmRWaXNpdG9yLmV4dGVuZFNlbGVjdG9yKG1hdGNoZXMsIHNlbGVjdG9yUGF0aCwgc2VsZlNlbGVjdG9yLCBhbGxFeHRlbmRzW2V4dGVuZEluZGV4XS5pc1Zpc2libGUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzVG9BZGQucHVzaChleHRlbmRlZFNlbGVjdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJ1bGVzZXROb2RlLnBhdGhzID0gcnVsZXNldE5vZGUucGF0aHMuY29uY2F0KHNlbGVjdG9yc1RvQWRkKTsKICAgICAgfTsKICAgICAgUHJvY2Vzc0V4dGVuZHNWaXNpdG9yLnByb3RvdHlwZS5maW5kTWF0Y2ggPSBmdW5jdGlvbiAoZXh0ZW5kLCBoYXlzdGFja1NlbGVjdG9yUGF0aCkgewogICAgICAgICAgLy8KICAgICAgICAgIC8vIGxvb2sgdGhyb3VnaCB0aGUgaGF5c3RhY2sgc2VsZWN0b3IgcGF0aCB0byB0cnkgYW5kIGZpbmQgdGhlIG5lZWRsZSAtIGV4dGVuZC5zZWxlY3RvcgogICAgICAgICAgLy8gcmV0dXJucyBhbiBhcnJheSBvZiBzZWxlY3RvciBtYXRjaGVzIHRoYXQgY2FuIHRoZW4gYmUgcmVwbGFjZWQKICAgICAgICAgIC8vCiAgICAgICAgICB2YXIgaGF5c3RhY2tTZWxlY3RvckluZGV4OwogICAgICAgICAgdmFyIGhhY2tzdGFja1NlbGVjdG9yOwogICAgICAgICAgdmFyIGhhY2tzdGFja0VsZW1lbnRJbmRleDsKICAgICAgICAgIHZhciBoYXlzdGFja0VsZW1lbnQ7CiAgICAgICAgICB2YXIgdGFyZ2V0Q29tYmluYXRvcjsKICAgICAgICAgIHZhciBpOwogICAgICAgICAgdmFyIGV4dGVuZFZpc2l0b3IgPSB0aGlzOwogICAgICAgICAgdmFyIG5lZWRsZUVsZW1lbnRzID0gZXh0ZW5kLnNlbGVjdG9yLmVsZW1lbnRzOwogICAgICAgICAgdmFyIHBvdGVudGlhbE1hdGNoZXMgPSBbXTsKICAgICAgICAgIHZhciBwb3RlbnRpYWxNYXRjaDsKICAgICAgICAgIHZhciBtYXRjaGVzID0gW107CiAgICAgICAgICAvLyBsb29wIHRocm91Z2ggdGhlIGhheXN0YWNrIGVsZW1lbnRzCiAgICAgICAgICBmb3IgKGhheXN0YWNrU2VsZWN0b3JJbmRleCA9IDA7IGhheXN0YWNrU2VsZWN0b3JJbmRleCA8IGhheXN0YWNrU2VsZWN0b3JQYXRoLmxlbmd0aDsgaGF5c3RhY2tTZWxlY3RvckluZGV4KyspIHsKICAgICAgICAgICAgICBoYWNrc3RhY2tTZWxlY3RvciA9IGhheXN0YWNrU2VsZWN0b3JQYXRoW2hheXN0YWNrU2VsZWN0b3JJbmRleF07CiAgICAgICAgICAgICAgZm9yIChoYWNrc3RhY2tFbGVtZW50SW5kZXggPSAwOyBoYWNrc3RhY2tFbGVtZW50SW5kZXggPCBoYWNrc3RhY2tTZWxlY3Rvci5lbGVtZW50cy5sZW5ndGg7IGhhY2tzdGFja0VsZW1lbnRJbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgIGhheXN0YWNrRWxlbWVudCA9IGhhY2tzdGFja1NlbGVjdG9yLmVsZW1lbnRzW2hhY2tzdGFja0VsZW1lbnRJbmRleF07CiAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGFsbG93IGVsZW1lbnRzIGJlZm9yZSBvdXIgbWF0Y2ggd2UgY2FuIGFkZCBhIHBvdGVudGlhbCBtYXRjaCBldmVyeSB0aW1lLiBvdGhlcndpc2Ugb25seSBhdCB0aGUgZmlyc3QgZWxlbWVudC4KICAgICAgICAgICAgICAgICAgaWYgKGV4dGVuZC5hbGxvd0JlZm9yZSB8fCAoaGF5c3RhY2tTZWxlY3RvckluZGV4ID09PSAwICYmIGhhY2tzdGFja0VsZW1lbnRJbmRleCA9PT0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbE1hdGNoZXMucHVzaCh7IHBhdGhJbmRleDogaGF5c3RhY2tTZWxlY3RvckluZGV4LCBpbmRleDogaGFja3N0YWNrRWxlbWVudEluZGV4LCBtYXRjaGVkOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxDb21iaW5hdG9yOiBoYXlzdGFja0VsZW1lbnQuY29tYmluYXRvciB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcG90ZW50aWFsTWF0Y2hlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2ggPSBwb3RlbnRpYWxNYXRjaGVzW2ldOwogICAgICAgICAgICAgICAgICAgICAgLy8gc2VsZWN0b3JzIGFkZCAiICIgb250byB0aGUgZmlyc3QgZWxlbWVudC4gV2hlbiB3ZSB1c2UgJiBpdCBqb2lucyB0aGUgc2VsZWN0b3JzIHRvZ2V0aGVyLCBidXQgaWYgd2UgZG9uJ3QKICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gZWFjaCBzZWxlY3RvciBpbiBoYXlzdGFja1NlbGVjdG9yUGF0aCBoYXMgYSBzcGFjZSBiZWZvcmUgaXQgYWRkZWQgaW4gdGhlIHRvQ1NTIHBoYXNlLiBzbyB3ZSBuZWVkIHRvCiAgICAgICAgICAgICAgICAgICAgICAvLyB3b3JrIG91dCB3aGF0IHRoZSByZXN1bHRpbmcgY29tYmluYXRvciB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRDb21iaW5hdG9yID0gaGF5c3RhY2tFbGVtZW50LmNvbWJpbmF0b3IudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Q29tYmluYXRvciA9PT0gJycgJiYgaGFja3N0YWNrRWxlbWVudEluZGV4ID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29tYmluYXRvciA9ICcgJzsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGRvbid0IG1hdGNoLCBudWxsIG91ciBtYXRjaCB0byBpbmRpY2F0ZSBmYWlsdXJlCiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV4dGVuZFZpc2l0b3IuaXNFbGVtZW50VmFsdWVzRXF1YWwobmVlZGxlRWxlbWVudHNbcG90ZW50aWFsTWF0Y2gubWF0Y2hlZF0udmFsdWUsIGhheXN0YWNrRWxlbWVudC52YWx1ZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAocG90ZW50aWFsTWF0Y2gubWF0Y2hlZCA+IDAgJiYgbmVlZGxlRWxlbWVudHNbcG90ZW50aWFsTWF0Y2gubWF0Y2hlZF0uY29tYmluYXRvci52YWx1ZSAhPT0gdGFyZ2V0Q29tYmluYXRvcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaC5tYXRjaGVkKys7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBhcmUgc3RpbGwgdmFsaWQgYW5kIGhhdmUgZmluaXNoZWQsIHRlc3Qgd2hldGhlciB3ZSBoYXZlIGVsZW1lbnRzIGFmdGVyIGFuZCB3aGV0aGVyIHRoZXNlIGFyZSBhbGxvd2VkCiAgICAgICAgICAgICAgICAgICAgICBpZiAocG90ZW50aWFsTWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaC5maW5pc2hlZCA9IHBvdGVudGlhbE1hdGNoLm1hdGNoZWQgPT09IG5lZWRsZUVsZW1lbnRzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG90ZW50aWFsTWF0Y2guZmluaXNoZWQgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFleHRlbmQuYWxsb3dBZnRlciAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhY2tzdGFja0VsZW1lbnRJbmRleCArIDEgPCBoYWNrc3RhY2tTZWxlY3Rvci5lbGVtZW50cy5sZW5ndGggfHwgaGF5c3RhY2tTZWxlY3RvckluZGV4ICsgMSA8IGhheXN0YWNrU2VsZWN0b3JQYXRoLmxlbmd0aCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbE1hdGNoID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBudWxsIHdlIHJlbW92ZSwgaWYgbm90LCB3ZSBhcmUgc3RpbGwgdmFsaWQsIHNvIGVpdGhlciBwdXNoIGFzIGEgdmFsaWQgbWF0Y2ggb3IgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxNYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxNYXRjaC5maW5pc2hlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaC5sZW5ndGggPSBuZWVkbGVFbGVtZW50cy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbE1hdGNoLmVuZFBhdGhJbmRleCA9IGhheXN0YWNrU2VsZWN0b3JJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2guZW5kUGF0aEVsZW1lbnRJbmRleCA9IGhhY2tzdGFja0VsZW1lbnRJbmRleCArIDE7IC8vIGluZGV4IGFmdGVyIGVuZCBvZiBtYXRjaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaGVzLmxlbmd0aCA9IDA7IC8vIHdlIGRvbid0IGFsbG93IG1hdGNoZXMgdG8gb3ZlcmxhcCwgc28gc3RhcnQgbWF0Y2hpbmcgYWdhaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHBvdGVudGlhbE1hdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaGVzLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbWF0Y2hlczsKICAgICAgfTsKICAgICAgUHJvY2Vzc0V4dGVuZHNWaXNpdG9yLnByb3RvdHlwZS5pc0VsZW1lbnRWYWx1ZXNFcXVhbCA9IGZ1bmN0aW9uIChlbGVtZW50VmFsdWUxLCBlbGVtZW50VmFsdWUyKSB7CiAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnRWYWx1ZTEgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlbGVtZW50VmFsdWUyID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgIHJldHVybiBlbGVtZW50VmFsdWUxID09PSBlbGVtZW50VmFsdWUyOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGVsZW1lbnRWYWx1ZTEgaW5zdGFuY2VvZiB0cmVlLkF0dHJpYnV0ZSkgewogICAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUxLm9wICE9PSBlbGVtZW50VmFsdWUyLm9wIHx8IGVsZW1lbnRWYWx1ZTEua2V5ICE9PSBlbGVtZW50VmFsdWUyLmtleSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICghZWxlbWVudFZhbHVlMS52YWx1ZSB8fCAhZWxlbWVudFZhbHVlMi52YWx1ZSkgewogICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFZhbHVlMS52YWx1ZSB8fCBlbGVtZW50VmFsdWUyLnZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsZW1lbnRWYWx1ZTEgPSBlbGVtZW50VmFsdWUxLnZhbHVlLnZhbHVlIHx8IGVsZW1lbnRWYWx1ZTEudmFsdWU7CiAgICAgICAgICAgICAgZWxlbWVudFZhbHVlMiA9IGVsZW1lbnRWYWx1ZTIudmFsdWUudmFsdWUgfHwgZWxlbWVudFZhbHVlMi52YWx1ZTsKICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudFZhbHVlMSA9PT0gZWxlbWVudFZhbHVlMjsKICAgICAgICAgIH0KICAgICAgICAgIGVsZW1lbnRWYWx1ZTEgPSBlbGVtZW50VmFsdWUxLnZhbHVlOwogICAgICAgICAgZWxlbWVudFZhbHVlMiA9IGVsZW1lbnRWYWx1ZTIudmFsdWU7CiAgICAgICAgICBpZiAoZWxlbWVudFZhbHVlMSBpbnN0YW5jZW9mIHRyZWUuU2VsZWN0b3IpIHsKICAgICAgICAgICAgICBpZiAoIShlbGVtZW50VmFsdWUyIGluc3RhbmNlb2YgdHJlZS5TZWxlY3RvcikgfHwgZWxlbWVudFZhbHVlMS5lbGVtZW50cy5sZW5ndGggIT09IGVsZW1lbnRWYWx1ZTIuZWxlbWVudHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50VmFsdWUxLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50VmFsdWUxLmVsZW1lbnRzW2ldLmNvbWJpbmF0b3IudmFsdWUgIT09IGVsZW1lbnRWYWx1ZTIuZWxlbWVudHNbaV0uY29tYmluYXRvci52YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IDAgfHwgKGVsZW1lbnRWYWx1ZTEuZWxlbWVudHNbaV0uY29tYmluYXRvci52YWx1ZSB8fCAnICcpICE9PSAoZWxlbWVudFZhbHVlMi5lbGVtZW50c1tpXS5jb21iaW5hdG9yLnZhbHVlIHx8ICcgJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRWxlbWVudFZhbHVlc0VxdWFsKGVsZW1lbnRWYWx1ZTEuZWxlbWVudHNbaV0udmFsdWUsIGVsZW1lbnRWYWx1ZTIuZWxlbWVudHNbaV0udmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH07CiAgICAgIFByb2Nlc3NFeHRlbmRzVmlzaXRvci5wcm90b3R5cGUuZXh0ZW5kU2VsZWN0b3IgPSBmdW5jdGlvbiAobWF0Y2hlcywgc2VsZWN0b3JQYXRoLCByZXBsYWNlbWVudFNlbGVjdG9yLCBpc1Zpc2libGUpIHsKICAgICAgICAgIC8vIGZvciBhIHNldCBvZiBtYXRjaGVzLCByZXBsYWNlIGVhY2ggbWF0Y2ggd2l0aCB0aGUgcmVwbGFjZW1lbnQgc2VsZWN0b3IKICAgICAgICAgIHZhciBjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXggPSAwOwogICAgICAgICAgdmFyIGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPSAwOwogICAgICAgICAgdmFyIHBhdGggPSBbXTsKICAgICAgICAgIHZhciBtYXRjaEluZGV4OwogICAgICAgICAgdmFyIHNlbGVjdG9yOwogICAgICAgICAgdmFyIGZpcnN0RWxlbWVudDsKICAgICAgICAgIHZhciBtYXRjaDsKICAgICAgICAgIHZhciBuZXdFbGVtZW50czsKICAgICAgICAgIGZvciAobWF0Y2hJbmRleCA9IDA7IG1hdGNoSW5kZXggPCBtYXRjaGVzLmxlbmd0aDsgbWF0Y2hJbmRleCsrKSB7CiAgICAgICAgICAgICAgbWF0Y2ggPSBtYXRjaGVzW21hdGNoSW5kZXhdOwogICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JQYXRoW21hdGNoLnBhdGhJbmRleF07CiAgICAgICAgICAgICAgZmlyc3RFbGVtZW50ID0gbmV3IHRyZWUuRWxlbWVudChtYXRjaC5pbml0aWFsQ29tYmluYXRvciwgcmVwbGFjZW1lbnRTZWxlY3Rvci5lbGVtZW50c1swXS52YWx1ZSwgcmVwbGFjZW1lbnRTZWxlY3Rvci5lbGVtZW50c1swXS5pc1ZhcmlhYmxlLCByZXBsYWNlbWVudFNlbGVjdG9yLmVsZW1lbnRzWzBdLmdldEluZGV4KCksIHJlcGxhY2VtZW50U2VsZWN0b3IuZWxlbWVudHNbMF0uZmlsZUluZm8oKSk7CiAgICAgICAgICAgICAgaWYgKG1hdGNoLnBhdGhJbmRleCA+IGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCAmJiBjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID4gMCkgewogICAgICAgICAgICAgICAgICBwYXRoW3BhdGgubGVuZ3RoIC0gMV0uZWxlbWVudHMgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0KICAgICAgICAgICAgICAgICAgICAgIC5lbGVtZW50cy5jb25jYXQoc2VsZWN0b3JQYXRoW2N1cnJlbnRTZWxlY3RvclBhdGhJbmRleF0uZWxlbWVudHMuc2xpY2UoY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCkpOwogICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdG9yUGF0aEluZGV4Kys7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG5ld0VsZW1lbnRzID0gc2VsZWN0b3IuZWxlbWVudHMKICAgICAgICAgICAgICAgICAgLnNsaWNlKGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXgsIG1hdGNoLmluZGV4KQogICAgICAgICAgICAgICAgICAuY29uY2F0KFtmaXJzdEVsZW1lbnRdKQogICAgICAgICAgICAgICAgICAuY29uY2F0KHJlcGxhY2VtZW50U2VsZWN0b3IuZWxlbWVudHMuc2xpY2UoMSkpOwogICAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXggPT09IG1hdGNoLnBhdGhJbmRleCAmJiBtYXRjaEluZGV4ID4gMCkgewogICAgICAgICAgICAgICAgICBwYXRoW3BhdGgubGVuZ3RoIC0gMV0uZWxlbWVudHMgPQogICAgICAgICAgICAgICAgICAgICAgcGF0aFtwYXRoLmxlbmd0aCAtIDFdLmVsZW1lbnRzLmNvbmNhdChuZXdFbGVtZW50cyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5jb25jYXQoc2VsZWN0b3JQYXRoLnNsaWNlKGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCwgbWF0Y2gucGF0aEluZGV4KSk7CiAgICAgICAgICAgICAgICAgIHBhdGgucHVzaChuZXcgdHJlZS5TZWxlY3RvcihuZXdFbGVtZW50cykpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXggPSBtYXRjaC5lbmRQYXRoSW5kZXg7CiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCA9IG1hdGNoLmVuZFBhdGhFbGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPj0gc2VsZWN0b3JQYXRoW2N1cnJlbnRTZWxlY3RvclBhdGhJbmRleF0uZWxlbWVudHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPSAwOwogICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXgrKzsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdG9yUGF0aEluZGV4IDwgc2VsZWN0b3JQYXRoLmxlbmd0aCAmJiBjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID4gMCkgewogICAgICAgICAgICAgIHBhdGhbcGF0aC5sZW5ndGggLSAxXS5lbGVtZW50cyA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXQogICAgICAgICAgICAgICAgICAuZWxlbWVudHMuY29uY2F0KHNlbGVjdG9yUGF0aFtjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXhdLmVsZW1lbnRzLnNsaWNlKGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXgpKTsKICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXgrKzsKICAgICAgICAgIH0KICAgICAgICAgIHBhdGggPSBwYXRoLmNvbmNhdChzZWxlY3RvclBhdGguc2xpY2UoY3VycmVudFNlbGVjdG9yUGF0aEluZGV4LCBzZWxlY3RvclBhdGgubGVuZ3RoKSk7CiAgICAgICAgICBwYXRoID0gcGF0aC5tYXAoZnVuY3Rpb24gKGN1cnJlbnRWYWx1ZSkgewogICAgICAgICAgICAgIC8vIHdlIGNhbiByZS11c2UgZWxlbWVudHMgaGVyZSwgYmVjYXVzZSB0aGUgdmlzaWJpbGl0eSBwcm9wZXJ0eSBtYXR0ZXJzIG9ubHkgZm9yIHNlbGVjdG9ycwogICAgICAgICAgICAgIHZhciBkZXJpdmVkID0gY3VycmVudFZhbHVlLmNyZWF0ZURlcml2ZWQoY3VycmVudFZhbHVlLmVsZW1lbnRzKTsKICAgICAgICAgICAgICBpZiAoaXNWaXNpYmxlKSB7CiAgICAgICAgICAgICAgICAgIGRlcml2ZWQuZW5zdXJlVmlzaWJpbGl0eSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgZGVyaXZlZC5lbnN1cmVJbnZpc2liaWxpdHkoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGRlcml2ZWQ7CiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybiBwYXRoOwogICAgICB9OwogICAgICBQcm9jZXNzRXh0ZW5kc1Zpc2l0b3IucHJvdG90eXBlLnZpc2l0TWVkaWEgPSBmdW5jdGlvbiAobWVkaWFOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIHZhciBuZXdBbGxFeHRlbmRzID0gbWVkaWFOb2RlLmFsbEV4dGVuZHMuY29uY2F0KHRoaXMuYWxsRXh0ZW5kc1N0YWNrW3RoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCAtIDFdKTsKICAgICAgICAgIG5ld0FsbEV4dGVuZHMgPSBuZXdBbGxFeHRlbmRzLmNvbmNhdCh0aGlzLmRvRXh0ZW5kQ2hhaW5pbmcobmV3QWxsRXh0ZW5kcywgbWVkaWFOb2RlLmFsbEV4dGVuZHMpKTsKICAgICAgICAgIHRoaXMuYWxsRXh0ZW5kc1N0YWNrLnB1c2gobmV3QWxsRXh0ZW5kcyk7CiAgICAgIH07CiAgICAgIFByb2Nlc3NFeHRlbmRzVmlzaXRvci5wcm90b3R5cGUudmlzaXRNZWRpYU91dCA9IGZ1bmN0aW9uIChtZWRpYU5vZGUpIHsKICAgICAgICAgIHZhciBsYXN0SW5kZXggPSB0aGlzLmFsbEV4dGVuZHNTdGFjay5sZW5ndGggLSAxOwogICAgICAgICAgdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoID0gbGFzdEluZGV4OwogICAgICB9OwogICAgICBQcm9jZXNzRXh0ZW5kc1Zpc2l0b3IucHJvdG90eXBlLnZpc2l0QXRSdWxlID0gZnVuY3Rpb24gKGF0UnVsZU5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgdmFyIG5ld0FsbEV4dGVuZHMgPSBhdFJ1bGVOb2RlLmFsbEV4dGVuZHMuY29uY2F0KHRoaXMuYWxsRXh0ZW5kc1N0YWNrW3RoaXMuYWxsRXh0ZW5kc1N0YWNrLmxlbmd0aCAtIDFdKTsKICAgICAgICAgIG5ld0FsbEV4dGVuZHMgPSBuZXdBbGxFeHRlbmRzLmNvbmNhdCh0aGlzLmRvRXh0ZW5kQ2hhaW5pbmcobmV3QWxsRXh0ZW5kcywgYXRSdWxlTm9kZS5hbGxFeHRlbmRzKSk7CiAgICAgICAgICB0aGlzLmFsbEV4dGVuZHNTdGFjay5wdXNoKG5ld0FsbEV4dGVuZHMpOwogICAgICB9OwogICAgICBQcm9jZXNzRXh0ZW5kc1Zpc2l0b3IucHJvdG90eXBlLnZpc2l0QXRSdWxlT3V0ID0gZnVuY3Rpb24gKGF0UnVsZU5vZGUpIHsKICAgICAgICAgIHZhciBsYXN0SW5kZXggPSB0aGlzLmFsbEV4dGVuZHNTdGFjay5sZW5ndGggLSAxOwogICAgICAgICAgdGhpcy5hbGxFeHRlbmRzU3RhY2subGVuZ3RoID0gbGFzdEluZGV4OwogICAgICB9OwogICAgICByZXR1cm4gUHJvY2Vzc0V4dGVuZHNWaXNpdG9yOwogIH0oKSk7CgogIHZhciBKb2luU2VsZWN0b3JWaXNpdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBKb2luU2VsZWN0b3JWaXNpdG9yKCkgewogICAgICAgICAgdGhpcy5jb250ZXh0cyA9IFtbXV07CiAgICAgICAgICB0aGlzLl92aXNpdG9yID0gbmV3IFZpc2l0b3IodGhpcyk7CiAgICAgIH0KICAgICAgSm9pblNlbGVjdG9yVmlzaXRvci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHJvb3QpIHsKICAgICAgICAgIHJldHVybiB0aGlzLl92aXNpdG9yLnZpc2l0KHJvb3QpOwogICAgICB9OwogICAgICBKb2luU2VsZWN0b3JWaXNpdG9yLnByb3RvdHlwZS52aXNpdERlY2xhcmF0aW9uID0gZnVuY3Rpb24gKGRlY2xOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgICB9OwogICAgICBKb2luU2VsZWN0b3JWaXNpdG9yLnByb3RvdHlwZS52aXNpdE1peGluRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIChtaXhpbkRlZmluaXRpb25Ob2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgICB9OwogICAgICBKb2luU2VsZWN0b3JWaXNpdG9yLnByb3RvdHlwZS52aXNpdFJ1bGVzZXQgPSBmdW5jdGlvbiAocnVsZXNldE5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHRzW3RoaXMuY29udGV4dHMubGVuZ3RoIC0gMV07CiAgICAgICAgICB2YXIgcGF0aHMgPSBbXTsKICAgICAgICAgIHZhciBzZWxlY3RvcnM7CiAgICAgICAgICB0aGlzLmNvbnRleHRzLnB1c2gocGF0aHMpOwogICAgICAgICAgaWYgKCFydWxlc2V0Tm9kZS5yb290KSB7CiAgICAgICAgICAgICAgc2VsZWN0b3JzID0gcnVsZXNldE5vZGUuc2VsZWN0b3JzOwogICAgICAgICAgICAgIGlmIChzZWxlY3RvcnMpIHsKICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzID0gc2VsZWN0b3JzLmZpbHRlcihmdW5jdGlvbiAoc2VsZWN0b3IpIHsgcmV0dXJuIHNlbGVjdG9yLmdldElzT3V0cHV0KCk7IH0pOwogICAgICAgICAgICAgICAgICBydWxlc2V0Tm9kZS5zZWxlY3RvcnMgPSBzZWxlY3RvcnMubGVuZ3RoID8gc2VsZWN0b3JzIDogKHNlbGVjdG9ycyA9IG51bGwpOwogICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICBydWxlc2V0Tm9kZS5qb2luU2VsZWN0b3JzKHBhdGhzLCBjb250ZXh0LCBzZWxlY3RvcnMpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICghc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICAgICAgIHJ1bGVzZXROb2RlLnJ1bGVzID0gbnVsbDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcnVsZXNldE5vZGUucGF0aHMgPSBwYXRoczsKICAgICAgICAgIH0KICAgICAgfTsKICAgICAgSm9pblNlbGVjdG9yVmlzaXRvci5wcm90b3R5cGUudmlzaXRSdWxlc2V0T3V0ID0gZnVuY3Rpb24gKHJ1bGVzZXROb2RlKSB7CiAgICAgICAgICB0aGlzLmNvbnRleHRzLmxlbmd0aCA9IHRoaXMuY29udGV4dHMubGVuZ3RoIC0gMTsKICAgICAgfTsKICAgICAgSm9pblNlbGVjdG9yVmlzaXRvci5wcm90b3R5cGUudmlzaXRNZWRpYSA9IGZ1bmN0aW9uIChtZWRpYU5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHRzW3RoaXMuY29udGV4dHMubGVuZ3RoIC0gMV07CiAgICAgICAgICBtZWRpYU5vZGUucnVsZXNbMF0ucm9vdCA9IChjb250ZXh0Lmxlbmd0aCA9PT0gMCB8fCBjb250ZXh0WzBdLm11bHRpTWVkaWEpOwogICAgICB9OwogICAgICBKb2luU2VsZWN0b3JWaXNpdG9yLnByb3RvdHlwZS52aXNpdEF0UnVsZSA9IGZ1bmN0aW9uIChhdFJ1bGVOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0c1t0aGlzLmNvbnRleHRzLmxlbmd0aCAtIDFdOwogICAgICAgICAgaWYgKGF0UnVsZU5vZGUucnVsZXMgJiYgYXRSdWxlTm9kZS5ydWxlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICBhdFJ1bGVOb2RlLnJ1bGVzWzBdLnJvb3QgPSAoYXRSdWxlTm9kZS5pc1Jvb3RlZCB8fCBjb250ZXh0Lmxlbmd0aCA9PT0gMCB8fCBudWxsKTsKICAgICAgICAgIH0KICAgICAgfTsKICAgICAgcmV0dXJuIEpvaW5TZWxlY3RvclZpc2l0b3I7CiAgfSgpKTsKCiAgdmFyIENTU1Zpc2l0b3JVdGlscyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gQ1NTVmlzaXRvclV0aWxzKGNvbnRleHQpIHsKICAgICAgICAgIHRoaXMuX3Zpc2l0b3IgPSBuZXcgVmlzaXRvcih0aGlzKTsKICAgICAgICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0OwogICAgICB9CiAgICAgIENTU1Zpc2l0b3JVdGlscy5wcm90b3R5cGUuY29udGFpbnNTaWxlbnROb25CbG9ja2VkQ2hpbGQgPSBmdW5jdGlvbiAoYm9keVJ1bGVzKSB7CiAgICAgICAgICB2YXIgcnVsZTsKICAgICAgICAgIGlmICghYm9keVJ1bGVzKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgZm9yICh2YXIgciA9IDA7IHIgPCBib2R5UnVsZXMubGVuZ3RoOyByKyspIHsKICAgICAgICAgICAgICBydWxlID0gYm9keVJ1bGVzW3JdOwogICAgICAgICAgICAgIGlmIChydWxlLmlzU2lsZW50ICYmIHJ1bGUuaXNTaWxlbnQodGhpcy5fY29udGV4dCkgJiYgIXJ1bGUuYmxvY2tzVmlzaWJpbGl0eSgpKSB7CiAgICAgICAgICAgICAgICAgIC8vIHRoZSBhdHJ1bGUgY29udGFpbnMgc29tZXRoaW5nIHRoYXQgd2FzIHJlZmVyZW5jZWQgKGxpa2VseSBieSBleHRlbmQpCiAgICAgICAgICAgICAgICAgIC8vIHRoZXJlZm9yZSBpdCBuZWVkcyB0byBiZSBzaG93biBpbiBvdXRwdXQgdG9vCiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfTsKICAgICAgQ1NTVmlzaXRvclV0aWxzLnByb3RvdHlwZS5rZWVwT25seVZpc2libGVDaGlsZHMgPSBmdW5jdGlvbiAob3duZXIpIHsKICAgICAgICAgIGlmIChvd25lciAmJiBvd25lci5ydWxlcykgewogICAgICAgICAgICAgIG93bmVyLnJ1bGVzID0gb3duZXIucnVsZXMuZmlsdGVyKGZ1bmN0aW9uICh0aGluZykgeyByZXR1cm4gdGhpbmcuaXNWaXNpYmxlKCk7IH0pOwogICAgICAgICAgfQogICAgICB9OwogICAgICBDU1NWaXNpdG9yVXRpbHMucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAob3duZXIpIHsKICAgICAgICAgIHJldHVybiAob3duZXIgJiYgb3duZXIucnVsZXMpCiAgICAgICAgICAgICAgPyAob3duZXIucnVsZXMubGVuZ3RoID09PSAwKSA6IHRydWU7CiAgICAgIH07CiAgICAgIENTU1Zpc2l0b3JVdGlscy5wcm90b3R5cGUuaGFzVmlzaWJsZVNlbGVjdG9yID0gZnVuY3Rpb24gKHJ1bGVzZXROb2RlKSB7CiAgICAgICAgICByZXR1cm4gKHJ1bGVzZXROb2RlICYmIHJ1bGVzZXROb2RlLnBhdGhzKQogICAgICAgICAgICAgID8gKHJ1bGVzZXROb2RlLnBhdGhzLmxlbmd0aCA+IDApIDogZmFsc2U7CiAgICAgIH07CiAgICAgIENTU1Zpc2l0b3JVdGlscy5wcm90b3R5cGUucmVzb2x2ZVZpc2liaWxpdHkgPSBmdW5jdGlvbiAobm9kZSwgb3JpZ2luYWxSdWxlcykgewogICAgICAgICAgaWYgKCFub2RlLmJsb2Nrc1Zpc2liaWxpdHkoKSkgewogICAgICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHkobm9kZSkgJiYgIXRoaXMuY29udGFpbnNTaWxlbnROb25CbG9ja2VkQ2hpbGQob3JpZ2luYWxSdWxlcykpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBjb21waWxlZFJ1bGVzQm9keSA9IG5vZGUucnVsZXNbMF07CiAgICAgICAgICB0aGlzLmtlZXBPbmx5VmlzaWJsZUNoaWxkcyhjb21waWxlZFJ1bGVzQm9keSk7CiAgICAgICAgICBpZiAodGhpcy5pc0VtcHR5KGNvbXBpbGVkUnVsZXNCb2R5KSkgewogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIG5vZGUuZW5zdXJlVmlzaWJpbGl0eSgpOwogICAgICAgICAgbm9kZS5yZW1vdmVWaXNpYmlsaXR5QmxvY2soKTsKICAgICAgICAgIHJldHVybiBub2RlOwogICAgICB9OwogICAgICBDU1NWaXNpdG9yVXRpbHMucHJvdG90eXBlLmlzVmlzaWJsZVJ1bGVzZXQgPSBmdW5jdGlvbiAocnVsZXNldE5vZGUpIHsKICAgICAgICAgIGlmIChydWxlc2V0Tm9kZS5maXJzdFJvb3QpIHsKICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHkocnVsZXNldE5vZGUpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKCFydWxlc2V0Tm9kZS5yb290ICYmICF0aGlzLmhhc1Zpc2libGVTZWxlY3RvcihydWxlc2V0Tm9kZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfTsKICAgICAgcmV0dXJuIENTU1Zpc2l0b3JVdGlsczsKICB9KCkpOwogIHZhciBUb0NTU1Zpc2l0b3IgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgICB0aGlzLl92aXNpdG9yID0gbmV3IFZpc2l0b3IodGhpcyk7CiAgICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0OwogICAgICB0aGlzLnV0aWxzID0gbmV3IENTU1Zpc2l0b3JVdGlscyhjb250ZXh0KTsKICB9OwogIFRvQ1NTVmlzaXRvci5wcm90b3R5cGUgPSB7CiAgICAgIGlzUmVwbGFjaW5nOiB0cnVlLAogICAgICBydW46IGZ1bmN0aW9uIChyb290KSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5fdmlzaXRvci52aXNpdChyb290KTsKICAgICAgfSwKICAgICAgdmlzaXREZWNsYXJhdGlvbjogZnVuY3Rpb24gKGRlY2xOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIGlmIChkZWNsTm9kZS5ibG9ja3NWaXNpYmlsaXR5KCkgfHwgZGVjbE5vZGUudmFyaWFibGUpIHsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gZGVjbE5vZGU7CiAgICAgIH0sCiAgICAgIHZpc2l0TWl4aW5EZWZpbml0aW9uOiBmdW5jdGlvbiAobWl4aW5Ob2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIC8vIG1peGluIGRlZmluaXRpb25zIGRvIG5vdCBnZXQgZXZhbCdkIC0gdGhpcyBtZWFucyB0aGV5IGtlZXAgc3RhdGUKICAgICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gY2xlYXIgdGhhdCBzdGF0ZSBoZXJlIHNvIGl0IGlzbid0IHVzZWQgaWYgdG9DU1MgaXMgY2FsbGVkIHR3aWNlCiAgICAgICAgICBtaXhpbk5vZGUuZnJhbWVzID0gW107CiAgICAgIH0sCiAgICAgIHZpc2l0RXh0ZW5kOiBmdW5jdGlvbiAoZXh0ZW5kTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgIH0sCiAgICAgIHZpc2l0Q29tbWVudDogZnVuY3Rpb24gKGNvbW1lbnROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIGlmIChjb21tZW50Tm9kZS5ibG9ja3NWaXNpYmlsaXR5KCkgfHwgY29tbWVudE5vZGUuaXNTaWxlbnQodGhpcy5fY29udGV4dCkpIHsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gY29tbWVudE5vZGU7CiAgICAgIH0sCiAgICAgIHZpc2l0TWVkaWE6IGZ1bmN0aW9uIChtZWRpYU5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgdmFyIG9yaWdpbmFsUnVsZXMgPSBtZWRpYU5vZGUucnVsZXNbMF0ucnVsZXM7CiAgICAgICAgICBtZWRpYU5vZGUuYWNjZXB0KHRoaXMuX3Zpc2l0b3IpOwogICAgICAgICAgdmlzaXRBcmdzLnZpc2l0RGVlcGVyID0gZmFsc2U7CiAgICAgICAgICByZXR1cm4gdGhpcy51dGlscy5yZXNvbHZlVmlzaWJpbGl0eShtZWRpYU5vZGUsIG9yaWdpbmFsUnVsZXMpOwogICAgICB9LAogICAgICB2aXNpdEltcG9ydDogZnVuY3Rpb24gKGltcG9ydE5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgaWYgKGltcG9ydE5vZGUuYmxvY2tzVmlzaWJpbGl0eSgpKSB7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGltcG9ydE5vZGU7CiAgICAgIH0sCiAgICAgIHZpc2l0QXRSdWxlOiBmdW5jdGlvbiAoYXRSdWxlTm9kZSwgdmlzaXRBcmdzKSB7CiAgICAgICAgICBpZiAoYXRSdWxlTm9kZS5ydWxlcyAmJiBhdFJ1bGVOb2RlLnJ1bGVzLmxlbmd0aCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLnZpc2l0QXRSdWxlV2l0aEJvZHkoYXRSdWxlTm9kZSwgdmlzaXRBcmdzKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLnZpc2l0QXRSdWxlV2l0aG91dEJvZHkoYXRSdWxlTm9kZSwgdmlzaXRBcmdzKTsKICAgICAgICAgIH0KICAgICAgfSwKICAgICAgdmlzaXRBbm9ueW1vdXM6IGZ1bmN0aW9uIChhbm9ueW1vdXNOb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIGlmICghYW5vbnltb3VzTm9kZS5ibG9ja3NWaXNpYmlsaXR5KCkpIHsKICAgICAgICAgICAgICBhbm9ueW1vdXNOb2RlLmFjY2VwdCh0aGlzLl92aXNpdG9yKTsKICAgICAgICAgICAgICByZXR1cm4gYW5vbnltb3VzTm9kZTsKICAgICAgICAgIH0KICAgICAgfSwKICAgICAgdmlzaXRBdFJ1bGVXaXRoQm9keTogZnVuY3Rpb24gKGF0UnVsZU5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUgbmVzdGVkIHJ1bGVzZXQgYW5kIHRoYXQgb25lIGhhcyBubyBwYXRoLCB0aGVuIGl0IGlzCiAgICAgICAgICAvLyBqdXN0IGZha2UgcnVsZXNldAogICAgICAgICAgZnVuY3Rpb24gaGFzRmFrZVJ1bGVzZXQoYXRSdWxlTm9kZSkgewogICAgICAgICAgICAgIHZhciBib2R5UnVsZXMgPSBhdFJ1bGVOb2RlLnJ1bGVzOwogICAgICAgICAgICAgIHJldHVybiBib2R5UnVsZXMubGVuZ3RoID09PSAxICYmICghYm9keVJ1bGVzWzBdLnBhdGhzIHx8IGJvZHlSdWxlc1swXS5wYXRocy5sZW5ndGggPT09IDApOwogICAgICAgICAgfQogICAgICAgICAgZnVuY3Rpb24gZ2V0Qm9keVJ1bGVzKGF0UnVsZU5vZGUpIHsKICAgICAgICAgICAgICB2YXIgbm9kZVJ1bGVzID0gYXRSdWxlTm9kZS5ydWxlczsKICAgICAgICAgICAgICBpZiAoaGFzRmFrZVJ1bGVzZXQoYXRSdWxlTm9kZSkpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVSdWxlc1swXS5ydWxlczsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVSdWxlczsKICAgICAgICAgIH0KICAgICAgICAgIC8vIGl0IGlzIHN0aWxsIHRydWUgdGhhdCBpdCBpcyBvbmx5IG9uZSBydWxlc2V0IGluIGFycmF5CiAgICAgICAgICAvLyB0aGlzIGlzIGxhc3Qgc3VjaCBtb21lbnQKICAgICAgICAgIC8vIHByb2Nlc3MgY2hpbGRzCiAgICAgICAgICB2YXIgb3JpZ2luYWxSdWxlcyA9IGdldEJvZHlSdWxlcyhhdFJ1bGVOb2RlKTsKICAgICAgICAgIGF0UnVsZU5vZGUuYWNjZXB0KHRoaXMuX3Zpc2l0b3IpOwogICAgICAgICAgdmlzaXRBcmdzLnZpc2l0RGVlcGVyID0gZmFsc2U7CiAgICAgICAgICBpZiAoIXRoaXMudXRpbHMuaXNFbXB0eShhdFJ1bGVOb2RlKSkgewogICAgICAgICAgICAgIHRoaXMuX21lcmdlUnVsZXMoYXRSdWxlTm9kZS5ydWxlc1swXS5ydWxlcyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdGhpcy51dGlscy5yZXNvbHZlVmlzaWJpbGl0eShhdFJ1bGVOb2RlLCBvcmlnaW5hbFJ1bGVzKTsKICAgICAgfSwKICAgICAgdmlzaXRBdFJ1bGVXaXRob3V0Qm9keTogZnVuY3Rpb24gKGF0UnVsZU5vZGUsIHZpc2l0QXJncykgewogICAgICAgICAgaWYgKGF0UnVsZU5vZGUuYmxvY2tzVmlzaWJpbGl0eSgpKSB7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGF0UnVsZU5vZGUubmFtZSA9PT0gJ0BjaGFyc2V0JykgewogICAgICAgICAgICAgIC8vIE9ubHkgb3V0cHV0IHRoZSBkZWJ1ZyBpbmZvIHRvZ2V0aGVyIHdpdGggc3Vic2VxdWVudCBAY2hhcnNldCBkZWZpbml0aW9ucwogICAgICAgICAgICAgIC8vIGEgY29tbWVudCAob3IgQG1lZGlhIHN0YXRlbWVudCkgYmVmb3JlIHRoZSBhY3R1YWwgQGNoYXJzZXQgYXRydWxlIHdvdWxkCiAgICAgICAgICAgICAgLy8gYmUgY29uc2lkZXJlZCBpbGxlZ2FsIGNzcyBhcyBpdCBoYXMgdG8gYmUgb24gdGhlIGZpcnN0IGxpbmUKICAgICAgICAgICAgICBpZiAodGhpcy5jaGFyc2V0KSB7CiAgICAgICAgICAgICAgICAgIGlmIChhdFJ1bGVOb2RlLmRlYnVnSW5mbykgewogICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbW1lbnQgPSBuZXcgdHJlZS5Db21tZW50KCIvKiAiICsgYXRSdWxlTm9kZS50b0NTUyh0aGlzLl9jb250ZXh0KS5yZXBsYWNlKC9cbi9nLCAnJykgKyAiICovXG4iKTsKICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuZGVidWdJbmZvID0gYXRSdWxlTm9kZS5kZWJ1Z0luZm87CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmlzaXRvci52aXNpdChjb21tZW50KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHRoaXMuY2hhcnNldCA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYXRSdWxlTm9kZTsKICAgICAgfSwKICAgICAgY2hlY2tWYWxpZE5vZGVzOiBmdW5jdGlvbiAocnVsZXMsIGlzUm9vdCkgewogICAgICAgICAgaWYgKCFydWxlcykgewogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICB2YXIgcnVsZU5vZGUgPSBydWxlc1tpXTsKICAgICAgICAgICAgICBpZiAoaXNSb290ICYmIHJ1bGVOb2RlIGluc3RhbmNlb2YgdHJlZS5EZWNsYXJhdGlvbiAmJiAhcnVsZU5vZGUudmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICAgdGhyb3cgeyBtZXNzYWdlOiAnUHJvcGVydGllcyBtdXN0IGJlIGluc2lkZSBzZWxlY3RvciBibG9ja3MuIFRoZXkgY2Fubm90IGJlIGluIHRoZSByb290JywKICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBydWxlTm9kZS5nZXRJbmRleCgpLCBmaWxlbmFtZTogcnVsZU5vZGUuZmlsZUluZm8oKSAmJiBydWxlTm9kZS5maWxlSW5mbygpLmZpbGVuYW1lIH07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChydWxlTm9kZSBpbnN0YW5jZW9mIHRyZWUuQ2FsbCkgewogICAgICAgICAgICAgICAgICB0aHJvdyB7IG1lc3NhZ2U6ICJGdW5jdGlvbiAnIiArIHJ1bGVOb2RlLm5hbWUgKyAiJyBpcyB1bmRlZmluZWQiLCBpbmRleDogcnVsZU5vZGUuZ2V0SW5kZXgoKSwgZmlsZW5hbWU6IHJ1bGVOb2RlLmZpbGVJbmZvKCkgJiYgcnVsZU5vZGUuZmlsZUluZm8oKS5maWxlbmFtZSB9OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAocnVsZU5vZGUudHlwZSAmJiAhcnVsZU5vZGUuYWxsb3dSb290KSB7CiAgICAgICAgICAgICAgICAgIHRocm93IHsgbWVzc2FnZTogcnVsZU5vZGUudHlwZSArICIgbm9kZSByZXR1cm5lZCBieSBhIGZ1bmN0aW9uIGlzIG5vdCB2YWxpZCBoZXJlIiwgaW5kZXg6IHJ1bGVOb2RlLmdldEluZGV4KCksIGZpbGVuYW1lOiBydWxlTm9kZS5maWxlSW5mbygpICYmIHJ1bGVOb2RlLmZpbGVJbmZvKCkuZmlsZW5hbWUgfTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0sCiAgICAgIHZpc2l0UnVsZXNldDogZnVuY3Rpb24gKHJ1bGVzZXROb2RlLCB2aXNpdEFyZ3MpIHsKICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgcnVsZXNldHMgYXJlIG5lc3RlZCBpbnRvIGVhY2ggb3RoZXIKICAgICAgICAgIHZhciBydWxlOwogICAgICAgICAgdmFyIHJ1bGVzZXRzID0gW107CiAgICAgICAgICB0aGlzLmNoZWNrVmFsaWROb2RlcyhydWxlc2V0Tm9kZS5ydWxlcywgcnVsZXNldE5vZGUuZmlyc3RSb290KTsKICAgICAgICAgIGlmICghcnVsZXNldE5vZGUucm9vdCkgewogICAgICAgICAgICAgIC8vIHJlbW92ZSBpbnZpc2libGUgcGF0aHMKICAgICAgICAgICAgICB0aGlzLl9jb21waWxlUnVsZXNldFBhdGhzKHJ1bGVzZXROb2RlKTsKICAgICAgICAgICAgICAvLyByZW1vdmUgcnVsZXNldHMgZnJvbSB0aGlzIHJ1bGVzZXQgYm9keSBhbmQgY29tcGlsZSB0aGVtIHNlcGFyYXRlbHkKICAgICAgICAgICAgICB2YXIgbm9kZVJ1bGVzID0gcnVsZXNldE5vZGUucnVsZXM7CiAgICAgICAgICAgICAgdmFyIG5vZGVSdWxlQ250ID0gbm9kZVJ1bGVzID8gbm9kZVJ1bGVzLmxlbmd0aCA6IDA7CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlUnVsZUNudDspIHsKICAgICAgICAgICAgICAgICAgcnVsZSA9IG5vZGVSdWxlc1tpXTsKICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUgJiYgcnVsZS5ydWxlcykgewogICAgICAgICAgICAgICAgICAgICAgLy8gdmlzaXQgYmVjYXVzZSB3ZSBhcmUgbW92aW5nIHRoZW0gb3V0IGZyb20gYmVpbmcgYSBjaGlsZAogICAgICAgICAgICAgICAgICAgICAgcnVsZXNldHMucHVzaCh0aGlzLl92aXNpdG9yLnZpc2l0KHJ1bGUpKTsKICAgICAgICAgICAgICAgICAgICAgIG5vZGVSdWxlcy5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICBub2RlUnVsZUNudC0tOwogICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBhY2NlcHQgdGhlIHZpc2l0b3IgdG8gcmVtb3ZlIHJ1bGVzIGFuZCByZWZhY3RvciBpdHNlbGYKICAgICAgICAgICAgICAvLyB0aGVuIHdlIGNhbiBkZWNpZGUgbm9ndyB3aGV0aGVyIHdlIHdhbnQgaXQgb3Igbm90CiAgICAgICAgICAgICAgLy8gY29tcGlsZSBib2R5CiAgICAgICAgICAgICAgaWYgKG5vZGVSdWxlQ250ID4gMCkgewogICAgICAgICAgICAgICAgICBydWxlc2V0Tm9kZS5hY2NlcHQodGhpcy5fdmlzaXRvcik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBydWxlc2V0Tm9kZS5ydWxlcyA9IG51bGw7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHZpc2l0QXJncy52aXNpdERlZXBlciA9IGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7IC8vIGlmICghIHJ1bGVzZXROb2RlLnJvb3QpIHsKICAgICAgICAgICAgICBydWxlc2V0Tm9kZS5hY2NlcHQodGhpcy5fdmlzaXRvcik7CiAgICAgICAgICAgICAgdmlzaXRBcmdzLnZpc2l0RGVlcGVyID0gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAocnVsZXNldE5vZGUucnVsZXMpIHsKICAgICAgICAgICAgICB0aGlzLl9tZXJnZVJ1bGVzKHJ1bGVzZXROb2RlLnJ1bGVzKTsKICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVEdXBsaWNhdGVSdWxlcyhydWxlc2V0Tm9kZS5ydWxlcyk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBub3cgZGVjaWRlIHdoZXRoZXIgd2Uga2VlcCB0aGUgcnVsZXNldAogICAgICAgICAgaWYgKHRoaXMudXRpbHMuaXNWaXNpYmxlUnVsZXNldChydWxlc2V0Tm9kZSkpIHsKICAgICAgICAgICAgICBydWxlc2V0Tm9kZS5lbnN1cmVWaXNpYmlsaXR5KCk7CiAgICAgICAgICAgICAgcnVsZXNldHMuc3BsaWNlKDAsIDAsIHJ1bGVzZXROb2RlKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChydWxlc2V0cy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICByZXR1cm4gcnVsZXNldHNbMF07CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcnVsZXNldHM7CiAgICAgIH0sCiAgICAgIF9jb21waWxlUnVsZXNldFBhdGhzOiBmdW5jdGlvbiAocnVsZXNldE5vZGUpIHsKICAgICAgICAgIGlmIChydWxlc2V0Tm9kZS5wYXRocykgewogICAgICAgICAgICAgIHJ1bGVzZXROb2RlLnBhdGhzID0gcnVsZXNldE5vZGUucGF0aHMKICAgICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAocCkgewogICAgICAgICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgICAgICAgaWYgKHBbMF0uZWxlbWVudHNbMF0uY29tYmluYXRvci52YWx1ZSA9PT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgICAgICBwWzBdLmVsZW1lbnRzWzBdLmNvbWJpbmF0b3IgPSBuZXcgKHRyZWUuQ29tYmluYXRvcikoJycpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAocFtpXS5pc1Zpc2libGUoKSAmJiBwW2ldLmdldElzT3V0cHV0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgIH0sCiAgICAgIF9yZW1vdmVEdXBsaWNhdGVSdWxlczogZnVuY3Rpb24gKHJ1bGVzKSB7CiAgICAgICAgICBpZiAoIXJ1bGVzKSB7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgLy8gcmVtb3ZlIGR1cGxpY2F0ZXMKICAgICAgICAgIHZhciBydWxlQ2FjaGUgPSB7fTsKICAgICAgICAgIHZhciBydWxlTGlzdDsKICAgICAgICAgIHZhciBydWxlOwogICAgICAgICAgdmFyIGk7CiAgICAgICAgICBmb3IgKGkgPSBydWxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgIHJ1bGUgPSBydWxlc1tpXTsKICAgICAgICAgICAgICBpZiAocnVsZSBpbnN0YW5jZW9mIHRyZWUuRGVjbGFyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgaWYgKCFydWxlQ2FjaGVbcnVsZS5uYW1lXSkgewogICAgICAgICAgICAgICAgICAgICAgcnVsZUNhY2hlW3J1bGUubmFtZV0gPSBydWxlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgcnVsZUxpc3QgPSBydWxlQ2FjaGVbcnVsZS5uYW1lXTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlTGlzdCBpbnN0YW5jZW9mIHRyZWUuRGVjbGFyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlTGlzdCA9IHJ1bGVDYWNoZVtydWxlLm5hbWVdID0gW3J1bGVDYWNoZVtydWxlLm5hbWVdLnRvQ1NTKHRoaXMuX2NvbnRleHQpXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHZhciBydWxlQ1NTID0gcnVsZS50b0NTUyh0aGlzLl9jb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlTGlzdC5pbmRleE9mKHJ1bGVDU1MpICE9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVMaXN0LnB1c2gocnVsZUNTUyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0sCiAgICAgIF9tZXJnZVJ1bGVzOiBmdW5jdGlvbiAocnVsZXMpIHsKICAgICAgICAgIGlmICghcnVsZXMpIHsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgZ3JvdXBzID0ge307CiAgICAgICAgICB2YXIgZ3JvdXBzQXJyID0gW107CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgdmFyIHJ1bGUgPSBydWxlc1tpXTsKICAgICAgICAgICAgICBpZiAocnVsZS5tZXJnZSkgewogICAgICAgICAgICAgICAgICB2YXIga2V5ID0gcnVsZS5uYW1lOwogICAgICAgICAgICAgICAgICBncm91cHNba2V5XSA/IHJ1bGVzLnNwbGljZShpLS0sIDEpIDoKICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwc0Fyci5wdXNoKGdyb3Vwc1trZXldID0gW10pOwogICAgICAgICAgICAgICAgICBncm91cHNba2V5XS5wdXNoKHJ1bGUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGdyb3Vwc0Fyci5mb3JFYWNoKGZ1bmN0aW9uIChncm91cCkgewogICAgICAgICAgICAgIGlmIChncm91cC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRfMSA9IGdyb3VwWzBdOwogICAgICAgICAgICAgICAgICB2YXIgc3BhY2VfMSA9IFtdOwogICAgICAgICAgICAgICAgICB2YXIgY29tbWFfMSA9IFtuZXcgdHJlZS5FeHByZXNzaW9uKHNwYWNlXzEpXTsKICAgICAgICAgICAgICAgICAgZ3JvdXAuZm9yRWFjaChmdW5jdGlvbiAocnVsZSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKChydWxlLm1lcmdlID09PSAnKycpICYmIChzcGFjZV8xLmxlbmd0aCA+IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFfMS5wdXNoKG5ldyB0cmVlLkV4cHJlc3Npb24oc3BhY2VfMSA9IFtdKSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBzcGFjZV8xLnB1c2gocnVsZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfMS5pbXBvcnRhbnQgPSByZXN1bHRfMS5pbXBvcnRhbnQgfHwgcnVsZS5pbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICByZXN1bHRfMS52YWx1ZSA9IG5ldyB0cmVlLlZhbHVlKGNvbW1hXzEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICB9CiAgfTsKCiAgdmFyIHZpc2l0b3JzID0gewogICAgICBWaXNpdG9yOiBWaXNpdG9yLAogICAgICBJbXBvcnRWaXNpdG9yOiBJbXBvcnRWaXNpdG9yLAogICAgICBNYXJrVmlzaWJsZVNlbGVjdG9yc1Zpc2l0b3I6IFNldFRyZWVWaXNpYmlsaXR5VmlzaXRvciwKICAgICAgRXh0ZW5kVmlzaXRvcjogUHJvY2Vzc0V4dGVuZHNWaXNpdG9yLAogICAgICBKb2luU2VsZWN0b3JWaXNpdG9yOiBKb2luU2VsZWN0b3JWaXNpdG9yLAogICAgICBUb0NTU1Zpc2l0b3I6IFRvQ1NTVmlzaXRvcgogIH07CgogIC8vIFNwbGl0IHRoZSBpbnB1dCBpbnRvIGNodW5rcy4KICB2YXIgY2h1bmtlciA9IChmdW5jdGlvbiAoaW5wdXQsIGZhaWwpIHsKICAgICAgdmFyIGxlbiA9IGlucHV0Lmxlbmd0aDsKICAgICAgdmFyIGxldmVsID0gMDsKICAgICAgdmFyIHBhcmVuTGV2ZWwgPSAwOwogICAgICB2YXIgbGFzdE9wZW5pbmc7CiAgICAgIHZhciBsYXN0T3BlbmluZ1BhcmVuOwogICAgICB2YXIgbGFzdE11bHRpQ29tbWVudDsKICAgICAgdmFyIGxhc3RNdWx0aUNvbW1lbnRFbmRCcmFjZTsKICAgICAgdmFyIGNodW5rcyA9IFtdOwogICAgICB2YXIgZW1pdEZyb20gPSAwOwogICAgICB2YXIgY2h1bmtlckN1cnJlbnRJbmRleDsKICAgICAgdmFyIGN1cnJlbnRDaHVua1N0YXJ0SW5kZXg7CiAgICAgIHZhciBjYzsKICAgICAgdmFyIGNjMjsKICAgICAgdmFyIG1hdGNoZWQ7CiAgICAgIGZ1bmN0aW9uIGVtaXRDaHVuayhmb3JjZSkgewogICAgICAgICAgdmFyIGxlbiA9IGNodW5rZXJDdXJyZW50SW5kZXggLSBlbWl0RnJvbTsKICAgICAgICAgIGlmICgoKGxlbiA8IDUxMikgJiYgIWZvcmNlKSB8fCAhbGVuKSB7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgY2h1bmtzLnB1c2goaW5wdXQuc2xpY2UoZW1pdEZyb20sIGNodW5rZXJDdXJyZW50SW5kZXggKyAxKSk7CiAgICAgICAgICBlbWl0RnJvbSA9IGNodW5rZXJDdXJyZW50SW5kZXggKyAxOwogICAgICB9CiAgICAgIGZvciAoY2h1bmtlckN1cnJlbnRJbmRleCA9IDA7IGNodW5rZXJDdXJyZW50SW5kZXggPCBsZW47IGNodW5rZXJDdXJyZW50SW5kZXgrKykgewogICAgICAgICAgY2MgPSBpbnB1dC5jaGFyQ29kZUF0KGNodW5rZXJDdXJyZW50SW5kZXgpOwogICAgICAgICAgaWYgKCgoY2MgPj0gOTcpICYmIChjYyA8PSAxMjIpKSB8fCAoY2MgPCAzNCkpIHsKICAgICAgICAgICAgICAvLyBhLXogb3Igd2hpdGVzcGFjZQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgc3dpdGNoIChjYykgewogICAgICAgICAgICAgIGNhc2UgNDA6IC8vICgKICAgICAgICAgICAgICAgICAgcGFyZW5MZXZlbCsrOwogICAgICAgICAgICAgICAgICBsYXN0T3BlbmluZ1BhcmVuID0gY2h1bmtlckN1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgY2FzZSA0MTogLy8gKQogICAgICAgICAgICAgICAgICBpZiAoLS1wYXJlbkxldmVsIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoJ21pc3Npbmcgb3BlbmluZyBgKGAnLCBjaHVua2VyQ3VycmVudEluZGV4KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBjYXNlIDU5OiAvLyA7CiAgICAgICAgICAgICAgICAgIGlmICghcGFyZW5MZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgZW1pdENodW5rKCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgY2FzZSAxMjM6IC8vIHsKICAgICAgICAgICAgICAgICAgbGV2ZWwrKzsKICAgICAgICAgICAgICAgICAgbGFzdE9wZW5pbmcgPSBjaHVua2VyQ3VycmVudEluZGV4OwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBjYXNlIDEyNTogLy8gfQogICAgICAgICAgICAgICAgICBpZiAoLS1sZXZlbCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCdtaXNzaW5nIG9wZW5pbmcgYHtgJywgY2h1bmtlckN1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCFsZXZlbCAmJiAhcGFyZW5MZXZlbCkgewogICAgICAgICAgICAgICAgICAgICAgZW1pdENodW5rKCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgY2FzZSA5MjogLy8gXAogICAgICAgICAgICAgICAgICBpZiAoY2h1bmtlckN1cnJlbnRJbmRleCA8IGxlbiAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgIGNodW5rZXJDdXJyZW50SW5kZXgrKzsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCd1bmVzY2FwZWQgYFxcYCcsIGNodW5rZXJDdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgIGNhc2UgMzQ6CiAgICAgICAgICAgICAgY2FzZSAzOToKICAgICAgICAgICAgICBjYXNlIDk2OiAvLyAiLCAnIGFuZCBgCiAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSAwOwogICAgICAgICAgICAgICAgICBjdXJyZW50Q2h1bmtTdGFydEluZGV4ID0gY2h1bmtlckN1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgICAgZm9yIChjaHVua2VyQ3VycmVudEluZGV4ID0gY2h1bmtlckN1cnJlbnRJbmRleCArIDE7IGNodW5rZXJDdXJyZW50SW5kZXggPCBsZW47IGNodW5rZXJDdXJyZW50SW5kZXgrKykgewogICAgICAgICAgICAgICAgICAgICAgY2MyID0gaW5wdXQuY2hhckNvZGVBdChjaHVua2VyQ3VycmVudEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjYzIgPiA5NikgewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGNjMiA9PSBjYykgewogICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGNjMiA9PSA5MikgeyAvLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNodW5rZXJDdXJyZW50SW5kZXggPT0gbGVuIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgndW5lc2NhcGVkIGBcXGAnLCBjaHVua2VyQ3VycmVudEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtlckN1cnJlbnRJbmRleCsrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgidW5tYXRjaGVkIGAiICsgU3RyaW5nLmZyb21DaGFyQ29kZShjYykgKyAiYCIsIGN1cnJlbnRDaHVua1N0YXJ0SW5kZXgpOwogICAgICAgICAgICAgIGNhc2UgNDc6IC8vIC8sIGNoZWNrIGZvciBjb21tZW50CiAgICAgICAgICAgICAgICAgIGlmIChwYXJlbkxldmVsIHx8IChjaHVua2VyQ3VycmVudEluZGV4ID09IGxlbiAtIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBjYzIgPSBpbnB1dC5jaGFyQ29kZUF0KGNodW5rZXJDdXJyZW50SW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICAgaWYgKGNjMiA9PSA0NykgewogICAgICAgICAgICAgICAgICAgICAgLy8gLy8sIGZpbmQgbG5mZWVkCiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNodW5rZXJDdXJyZW50SW5kZXggPSBjaHVua2VyQ3VycmVudEluZGV4ICsgMjsgY2h1bmtlckN1cnJlbnRJbmRleCA8IGxlbjsgY2h1bmtlckN1cnJlbnRJbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2MyID0gaW5wdXQuY2hhckNvZGVBdChjaHVua2VyQ3VycmVudEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNjMiA8PSAxMykgJiYgKChjYzIgPT0gMTApIHx8IChjYzIgPT0gMTMpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2MyID09IDQyKSB7CiAgICAgICAgICAgICAgICAgICAgICAvLyAvKiwgZmluZCAqLwogICAgICAgICAgICAgICAgICAgICAgbGFzdE11bHRpQ29tbWVudCA9IGN1cnJlbnRDaHVua1N0YXJ0SW5kZXggPSBjaHVua2VyQ3VycmVudEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgZm9yIChjaHVua2VyQ3VycmVudEluZGV4ID0gY2h1bmtlckN1cnJlbnRJbmRleCArIDI7IGNodW5rZXJDdXJyZW50SW5kZXggPCBsZW4gLSAxOyBjaHVua2VyQ3VycmVudEluZGV4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjYzIgPSBpbnB1dC5jaGFyQ29kZUF0KGNodW5rZXJDdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYzIgPT0gMTI1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RNdWx0aUNvbW1lbnRFbmRCcmFjZSA9IGNodW5rZXJDdXJyZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYzIgIT0gNDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KGNodW5rZXJDdXJyZW50SW5kZXggKyAxKSA9PSA0NykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoY2h1bmtlckN1cnJlbnRJbmRleCA9PSBsZW4gLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoJ21pc3NpbmcgY2xvc2luZyBgKi9gJywgY3VycmVudENodW5rU3RhcnRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBjaHVua2VyQ3VycmVudEluZGV4Kys7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgY2FzZSA0MjogLy8gKiwgY2hlY2sgZm9yIHVubWF0Y2hlZCAqLwogICAgICAgICAgICAgICAgICBpZiAoKGNodW5rZXJDdXJyZW50SW5kZXggPCBsZW4gLSAxKSAmJiAoaW5wdXQuY2hhckNvZGVBdChjaHVua2VyQ3VycmVudEluZGV4ICsgMSkgPT0gNDcpKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgndW5tYXRjaGVkIGAvKmAnLCBjaHVua2VyQ3VycmVudEluZGV4KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiAobGV2ZWwgIT09IDApIHsKICAgICAgICAgIGlmICgobGFzdE11bHRpQ29tbWVudCA+IGxhc3RPcGVuaW5nKSAmJiAobGFzdE11bHRpQ29tbWVudEVuZEJyYWNlID4gbGFzdE11bHRpQ29tbWVudCkpIHsKICAgICAgICAgICAgICByZXR1cm4gZmFpbCgnbWlzc2luZyBjbG9zaW5nIGB9YCBvciBgKi9gJywgbGFzdE9wZW5pbmcpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoJ21pc3NpbmcgY2xvc2luZyBgfWAnLCBsYXN0T3BlbmluZyk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSBpZiAocGFyZW5MZXZlbCAhPT0gMCkgewogICAgICAgICAgcmV0dXJuIGZhaWwoJ21pc3NpbmcgY2xvc2luZyBgKWAnLCBsYXN0T3BlbmluZ1BhcmVuKTsKICAgICAgfQogICAgICBlbWl0Q2h1bmsodHJ1ZSk7CiAgICAgIHJldHVybiBjaHVua3M7CiAgfSk7CgogIHZhciBnZXRQYXJzZXJJbnB1dCA9IChmdW5jdGlvbiAoKSB7CiAgICAgIHZhciAvLyBMZXNzIGlucHV0IHN0cmluZwogICAgICBpbnB1dDsKICAgICAgdmFyIC8vIGN1cnJlbnQgY2h1bmsKICAgICAgajsKICAgICAgdmFyIC8vIGhvbGRzIHN0YXRlIGZvciBiYWNrdHJhY2tpbmcKICAgICAgc2F2ZVN0YWNrID0gW107CiAgICAgIHZhciAvLyBmdXJ0aGVzdCBpbmRleCB0aGUgcGFyc2VyIGhhcyBnb25lIHRvCiAgICAgIGZ1cnRoZXN0OwogICAgICB2YXIgLy8gaWYgdGhpcyBpcyBmdXJ0aGVzdCB3ZSBnb3QgdG8sIHRoaXMgaXMgdGhlIHByb2JhYmx5IGNhdXNlCiAgICAgIGZ1cnRoZXN0UG9zc2libGVFcnJvck1lc3NhZ2U7CiAgICAgIHZhciAvLyBjaHVua2lmaWVkIGlucHV0CiAgICAgIGNodW5rczsKICAgICAgdmFyIC8vIGN1cnJlbnQgY2h1bmsKICAgICAgY3VycmVudDsKICAgICAgdmFyIC8vIGluZGV4IG9mIGN1cnJlbnQgY2h1bmssIGluIGBpbnB1dGAKICAgICAgY3VycmVudFBvczsKICAgICAgdmFyIHBhcnNlcklucHV0ID0ge307CiAgICAgIHZhciBDSEFSQ09ERV9TUEFDRSA9IDMyOwogICAgICB2YXIgQ0hBUkNPREVfVEFCID0gOTsKICAgICAgdmFyIENIQVJDT0RFX0xGID0gMTA7CiAgICAgIHZhciBDSEFSQ09ERV9DUiA9IDEzOwogICAgICB2YXIgQ0hBUkNPREVfUExVUyA9IDQzOwogICAgICB2YXIgQ0hBUkNPREVfQ09NTUEgPSA0NDsKICAgICAgdmFyIENIQVJDT0RFX0ZPUldBUkRfU0xBU0ggPSA0NzsKICAgICAgdmFyIENIQVJDT0RFXzkgPSA1NzsKICAgICAgZnVuY3Rpb24gc2tpcFdoaXRlc3BhY2UobGVuZ3RoKSB7CiAgICAgICAgICB2YXIgb2xkaSA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICB2YXIgb2xkaiA9IGo7CiAgICAgICAgICB2YXIgY3VyciA9IHBhcnNlcklucHV0LmkgLSBjdXJyZW50UG9zOwogICAgICAgICAgdmFyIGVuZEluZGV4ID0gcGFyc2VySW5wdXQuaSArIGN1cnJlbnQubGVuZ3RoIC0gY3VycjsKICAgICAgICAgIHZhciBtZW0gPSAocGFyc2VySW5wdXQuaSArPSBsZW5ndGgpOwogICAgICAgICAgdmFyIGlucCA9IGlucHV0OwogICAgICAgICAgdmFyIGM7CiAgICAgICAgICB2YXIgbmV4dENoYXI7CiAgICAgICAgICB2YXIgY29tbWVudDsKICAgICAgICAgIGZvciAoOyBwYXJzZXJJbnB1dC5pIDwgZW5kSW5kZXg7IHBhcnNlcklucHV0LmkrKykgewogICAgICAgICAgICAgIGMgPSBpbnAuY2hhckNvZGVBdChwYXJzZXJJbnB1dC5pKTsKICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuYXV0b0NvbW1lbnRBYnNvcmIgJiYgYyA9PT0gQ0hBUkNPREVfRk9SV0FSRF9TTEFTSCkgewogICAgICAgICAgICAgICAgICBuZXh0Q2hhciA9IGlucC5jaGFyQXQocGFyc2VySW5wdXQuaSArIDEpOwogICAgICAgICAgICAgICAgICBpZiAobmV4dENoYXIgPT09ICcvJykgewogICAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IHsgaW5kZXg6IHBhcnNlcklucHV0LmksIGlzTGluZUNvbW1lbnQ6IHRydWUgfTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0TmV3TGluZSA9IGlucC5pbmRleE9mKCdcbicsIHBhcnNlcklucHV0LmkgKyAyKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0TmV3TGluZSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TmV3TGluZSA9IGVuZEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuaSA9IG5leHROZXdMaW5lOwogICAgICAgICAgICAgICAgICAgICAgY29tbWVudC50ZXh0ID0gaW5wLnN1YnN0cihjb21tZW50LmluZGV4LCBwYXJzZXJJbnB1dC5pIC0gY29tbWVudC5pbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5jb21tZW50U3RvcmUucHVzaChjb21tZW50KTsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHRDaGFyID09PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0U3RhclNsYXNoID0gaW5wLmluZGV4T2YoJyovJywgcGFyc2VySW5wdXQuaSArIDIpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRTdGFyU2xhc2ggPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBwYXJzZXJJbnB1dC5pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpbnAuc3Vic3RyKHBhcnNlcklucHV0LmksIG5leHRTdGFyU2xhc2ggKyAyIC0gcGFyc2VySW5wdXQuaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGluZUNvbW1lbnQ6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5pICs9IGNvbW1lbnQudGV4dC5sZW5ndGggLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmNvbW1lbnRTdG9yZS5wdXNoKGNvbW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoKGMgIT09IENIQVJDT0RFX1NQQUNFKSAmJiAoYyAhPT0gQ0hBUkNPREVfTEYpICYmIChjICE9PSBDSEFSQ09ERV9UQUIpICYmIChjICE9PSBDSEFSQ09ERV9DUikpIHsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuc2xpY2UobGVuZ3RoICsgcGFyc2VySW5wdXQuaSAtIG1lbSArIGN1cnIpOwogICAgICAgICAgY3VycmVudFBvcyA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICBpZiAoIWN1cnJlbnQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgaWYgKGogPCBjaHVua3MubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2h1bmtzWysral07CiAgICAgICAgICAgICAgICAgIHNraXBXaGl0ZXNwYWNlKDApOyAvLyBza2lwIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjaHVuawogICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gdGhpbmdzIGNoYW5nZWQKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZmluaXNoZWQgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG9sZGkgIT09IHBhcnNlcklucHV0LmkgfHwgb2xkaiAhPT0gajsKICAgICAgfQogICAgICBwYXJzZXJJbnB1dC5zYXZlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgY3VycmVudFBvcyA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICBzYXZlU3RhY2sucHVzaCh7IGN1cnJlbnQ6IGN1cnJlbnQsIGk6IHBhcnNlcklucHV0LmksIGo6IGogfSk7CiAgICAgIH07CiAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUgPSBmdW5jdGlvbiAocG9zc2libGVFcnJvck1lc3NhZ2UpIHsKICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5pID4gZnVydGhlc3QgfHwgKHBhcnNlcklucHV0LmkgPT09IGZ1cnRoZXN0ICYmIHBvc3NpYmxlRXJyb3JNZXNzYWdlICYmICFmdXJ0aGVzdFBvc3NpYmxlRXJyb3JNZXNzYWdlKSkgewogICAgICAgICAgICAgIGZ1cnRoZXN0ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICBmdXJ0aGVzdFBvc3NpYmxlRXJyb3JNZXNzYWdlID0gcG9zc2libGVFcnJvck1lc3NhZ2U7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgc3RhdGUgPSBzYXZlU3RhY2sucG9wKCk7CiAgICAgICAgICBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsKICAgICAgICAgIGN1cnJlbnRQb3MgPSBwYXJzZXJJbnB1dC5pID0gc3RhdGUuaTsKICAgICAgICAgIGogPSBzdGF0ZS5qOwogICAgICB9OwogICAgICBwYXJzZXJJbnB1dC5mb3JnZXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBzYXZlU3RhY2sucG9wKCk7CiAgICAgIH07CiAgICAgIHBhcnNlcklucHV0LmlzV2hpdGVzcGFjZSA9IGZ1bmN0aW9uIChvZmZzZXQpIHsKICAgICAgICAgIHZhciBwb3MgPSBwYXJzZXJJbnB1dC5pICsgKG9mZnNldCB8fCAwKTsKICAgICAgICAgIHZhciBjb2RlID0gaW5wdXQuY2hhckNvZGVBdChwb3MpOwogICAgICAgICAgcmV0dXJuIChjb2RlID09PSBDSEFSQ09ERV9TUEFDRSB8fCBjb2RlID09PSBDSEFSQ09ERV9DUiB8fCBjb2RlID09PSBDSEFSQ09ERV9UQUIgfHwgY29kZSA9PT0gQ0hBUkNPREVfTEYpOwogICAgICB9OwogICAgICAvLyBTcGVjaWFsaXphdGlvbiBvZiAkKHRvaykKICAgICAgcGFyc2VySW5wdXQuJHJlID0gZnVuY3Rpb24gKHRvaykgewogICAgICAgICAgaWYgKHBhcnNlcklucHV0LmkgPiBjdXJyZW50UG9zKSB7CiAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuc2xpY2UocGFyc2VySW5wdXQuaSAtIGN1cnJlbnRQb3MpOwogICAgICAgICAgICAgIGN1cnJlbnRQb3MgPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgfQogICAgICAgICAgdmFyIG0gPSB0b2suZXhlYyhjdXJyZW50KTsKICAgICAgICAgIGlmICghbSkgewogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgc2tpcFdoaXRlc3BhY2UobVswXS5sZW5ndGgpOwogICAgICAgICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgIHJldHVybiBtOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG0ubGVuZ3RoID09PSAxID8gbVswXSA6IG07CiAgICAgIH07CiAgICAgIHBhcnNlcklucHV0LiRjaGFyID0gZnVuY3Rpb24gKHRvaykgewogICAgICAgICAgaWYgKGlucHV0LmNoYXJBdChwYXJzZXJJbnB1dC5pKSAhPT0gdG9rKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICBza2lwV2hpdGVzcGFjZSgxKTsKICAgICAgICAgIHJldHVybiB0b2s7CiAgICAgIH07CiAgICAgIHBhcnNlcklucHV0LiRzdHIgPSBmdW5jdGlvbiAodG9rKSB7CiAgICAgICAgICB2YXIgdG9rTGVuZ3RoID0gdG9rLmxlbmd0aDsKICAgICAgICAgIC8vIGh0dHBzOi8vanNwZXJmLmNvbS9zdHJpbmctc3RhcnRzd2l0aC8yMQogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tMZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQXQocGFyc2VySW5wdXQuaSArIGkpICE9PSB0b2suY2hhckF0KGkpKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHNraXBXaGl0ZXNwYWNlKHRva0xlbmd0aCk7CiAgICAgICAgICByZXR1cm4gdG9rOwogICAgICB9OwogICAgICBwYXJzZXJJbnB1dC4kcXVvdGVkID0gZnVuY3Rpb24gKGxvYykgewogICAgICAgICAgdmFyIHBvcyA9IGxvYyB8fCBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgdmFyIHN0YXJ0Q2hhciA9IGlucHV0LmNoYXJBdChwb3MpOwogICAgICAgICAgaWYgKHN0YXJ0Q2hhciAhPT0gJ1wnJyAmJiBzdGFydENoYXIgIT09ICciJykgewogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBsZW5ndGggPSBpbnB1dC5sZW5ndGg7CiAgICAgICAgICB2YXIgY3VycmVudFBvc2l0aW9uID0gcG9zOwogICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgKyBjdXJyZW50UG9zaXRpb24gPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIHZhciBuZXh0Q2hhciA9IGlucHV0LmNoYXJBdChpICsgY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgICAgICBzd2l0Y2ggKG5leHRDaGFyKSB7CiAgICAgICAgICAgICAgICAgIGNhc2UgJ1xcJzoKICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICBjYXNlICdccic6CiAgICAgICAgICAgICAgICAgIGNhc2UgJ1xuJzoKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICBjYXNlIHN0YXJ0Q2hhcjoKICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBpbnB1dC5zdWJzdHIoY3VycmVudFBvc2l0aW9uLCBpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvYyAmJiBsb2MgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwV2hpdGVzcGFjZShpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc3RhcnRDaGFyLCBzdHJdOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBudWxsOwogICAgICB9OwogICAgICAvKioKICAgICAgICogUGVybWlzc2l2ZSBwYXJzaW5nLiBJZ25vcmVzIGV2ZXJ5dGhpbmcgZXhjZXB0IG1hdGNoaW5nIHt9IFtdICgpIGFuZCBxdW90ZXMKICAgICAgICogdW50aWwgbWF0Y2hpbmcgdG9rZW4gKG91dHNpZGUgb2YgYmxvY2tzKQogICAgICAgKi8KICAgICAgcGFyc2VySW5wdXQuJHBhcnNlVW50aWwgPSBmdW5jdGlvbiAodG9rKSB7CiAgICAgICAgICB2YXIgcXVvdGUgPSAnJzsKICAgICAgICAgIHZhciByZXR1cm5WYWwgPSBudWxsOwogICAgICAgICAgdmFyIGluQ29tbWVudCA9IGZhbHNlOwogICAgICAgICAgdmFyIGJsb2NrRGVwdGggPSAwOwogICAgICAgICAgdmFyIGJsb2NrU3RhY2sgPSBbXTsKICAgICAgICAgIHZhciBwYXJzZUdyb3VwcyA9IFtdOwogICAgICAgICAgdmFyIGxlbmd0aCA9IGlucHV0Lmxlbmd0aDsKICAgICAgICAgIHZhciBzdGFydFBvcyA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICB2YXIgbGFzdFBvcyA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICB2YXIgaSA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICB2YXIgbG9vcCA9IHRydWU7CiAgICAgICAgICB2YXIgdGVzdENoYXI7CiAgICAgICAgICBpZiAodHlwZW9mIHRvayA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICB0ZXN0Q2hhciA9IGZ1bmN0aW9uIChjaGFyKSB7IHJldHVybiBjaGFyID09PSB0b2s7IH07CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB0ZXN0Q2hhciA9IGZ1bmN0aW9uIChjaGFyKSB7IHJldHVybiB0b2sudGVzdChjaGFyKTsgfTsKICAgICAgICAgIH0KICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICB2YXIgbmV4dENoYXIgPSBpbnB1dC5jaGFyQXQoaSk7CiAgICAgICAgICAgICAgaWYgKGJsb2NrRGVwdGggPT09IDAgJiYgdGVzdENoYXIobmV4dENoYXIpKSB7CiAgICAgICAgICAgICAgICAgIHJldHVyblZhbCA9IGlucHV0LnN1YnN0cihsYXN0UG9zLCBpIC0gbGFzdFBvcyk7CiAgICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWwpIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlR3JvdXBzLnB1c2gocmV0dXJuVmFsKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlR3JvdXBzLnB1c2goJyAnKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm5WYWwgPSBwYXJzZUdyb3VwczsKICAgICAgICAgICAgICAgICAgc2tpcFdoaXRlc3BhY2UoaSAtIHN0YXJ0UG9zKTsKICAgICAgICAgICAgICAgICAgbG9vcCA9IGZhbHNlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgaWYgKGluQ29tbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRDaGFyID09PSAnKicgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5jaGFyQXQoaSArIDEpID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tEZXB0aC0tOwogICAgICAgICAgICAgICAgICAgICAgICAgIGluQ29tbWVudCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgc3dpdGNoIChuZXh0Q2hhcikgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAnXFwnOgogICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q2hhciA9IGlucHV0LmNoYXJBdChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUdyb3Vwcy5wdXNoKGlucHV0LnN1YnN0cihsYXN0UG9zLCBpIC0gbGFzdFBvcyArIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0UG9zID0gaSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICcvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckF0KGkgKyAxKSA9PT0gJyonKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Db21tZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tEZXB0aCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1wnJzoKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJyInOgogICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlID0gcGFyc2VySW5wdXQuJHF1b3RlZChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVvdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VHcm91cHMucHVzaChpbnB1dC5zdWJzdHIobGFzdFBvcywgaSAtIGxhc3RQb3MpLCBxdW90ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gcXVvdGVbMV0ubGVuZ3RoIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFBvcyA9IGkgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcFdoaXRlc3BhY2UoaSAtIHN0YXJ0UG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsID0gbmV4dENoYXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICd7JzoKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1N0YWNrLnB1c2goJ30nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja0RlcHRoKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICcoJzoKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1N0YWNrLnB1c2goJyknKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja0RlcHRoKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzoKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1N0YWNrLnB1c2goJ10nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja0RlcHRoKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICBjYXNlICd9JzoKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJyknOgogICAgICAgICAgICAgICAgICAgICAgY2FzZSAnXSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4cGVjdGVkID0gYmxvY2tTdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dENoYXIgPT09IGV4cGVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrRGVwdGgtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgdGhlIHBhcnNlciB0byB0aGUgZXJyb3IgYW5kIHJldHVybiBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwV2hpdGVzcGFjZShpIC0gc3RhcnRQb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWwgPSBleHBlY3RlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgIGlmIChpID4gbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICBsb29wID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9IHdoaWxlIChsb29wKTsKICAgICAgICAgIHJldHVybiByZXR1cm5WYWwgPyByZXR1cm5WYWwgOiBudWxsOwogICAgICB9OwogICAgICBwYXJzZXJJbnB1dC5hdXRvQ29tbWVudEFic29yYiA9IHRydWU7CiAgICAgIHBhcnNlcklucHV0LmNvbW1lbnRTdG9yZSA9IFtdOwogICAgICBwYXJzZXJJbnB1dC5maW5pc2hlZCA9IGZhbHNlOwogICAgICAvLyBTYW1lIGFzICQoKSwgYnV0IGRvbid0IGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHBhcnNlciwKICAgICAgLy8ganVzdCByZXR1cm4gdGhlIG1hdGNoLgogICAgICBwYXJzZXJJbnB1dC5wZWVrID0gZnVuY3Rpb24gKHRvaykgewogICAgICAgICAgaWYgKHR5cGVvZiB0b2sgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9qc3BlcmYuY29tL3N0cmluZy1zdGFydHN3aXRoLzIxCiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2subGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJBdChwYXJzZXJJbnB1dC5pICsgaSkgIT09IHRvay5jaGFyQXQoaSkpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiB0b2sudGVzdChjdXJyZW50KTsKICAgICAgICAgIH0KICAgICAgfTsKICAgICAgLy8gU3BlY2lhbGl6YXRpb24gb2YgcGVlaygpCiAgICAgIC8vIFRPRE8gcmVtb3ZlIG9yIGNoYW5nZSBzb21lIGN1cnJlbnRDaGFyIGNhbGxzIHRvIHBlZWtDaGFyCiAgICAgIHBhcnNlcklucHV0LnBlZWtDaGFyID0gZnVuY3Rpb24gKHRvaykgeyByZXR1cm4gaW5wdXQuY2hhckF0KHBhcnNlcklucHV0LmkpID09PSB0b2s7IH07CiAgICAgIHBhcnNlcklucHV0LmN1cnJlbnRDaGFyID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaW5wdXQuY2hhckF0KHBhcnNlcklucHV0LmkpOyB9OwogICAgICBwYXJzZXJJbnB1dC5wcmV2Q2hhciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGlucHV0LmNoYXJBdChwYXJzZXJJbnB1dC5pIC0gMSk7IH07CiAgICAgIHBhcnNlcklucHV0LmdldElucHV0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaW5wdXQ7IH07CiAgICAgIHBhcnNlcklucHV0LnBlZWtOb3ROdW1lcmljID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgdmFyIGMgPSBpbnB1dC5jaGFyQ29kZUF0KHBhcnNlcklucHV0LmkpOwogICAgICAgICAgLy8gSXMgdGhlIGZpcnN0IGNoYXIgb2YgdGhlIGRpbWVuc2lvbiAwLTksICcuJywgJysnIG9yICctJwogICAgICAgICAgcmV0dXJuIChjID4gQ0hBUkNPREVfOSB8fCBjIDwgQ0hBUkNPREVfUExVUykgfHwgYyA9PT0gQ0hBUkNPREVfRk9SV0FSRF9TTEFTSCB8fCBjID09PSBDSEFSQ09ERV9DT01NQTsKICAgICAgfTsKICAgICAgcGFyc2VySW5wdXQuc3RhcnQgPSBmdW5jdGlvbiAoc3RyLCBjaHVua0lucHV0LCBmYWlsRnVuY3Rpb24pIHsKICAgICAgICAgIGlucHV0ID0gc3RyOwogICAgICAgICAgcGFyc2VySW5wdXQuaSA9IGogPSBjdXJyZW50UG9zID0gZnVydGhlc3QgPSAwOwogICAgICAgICAgLy8gY2h1bmtpbmcgYXBwYXJlbnRseSBtYWtlcyB0aGluZ3MgcXVpY2tlciAoYnV0IG15IHRlc3RzIGluZGljYXRlCiAgICAgICAgICAvLyBpdCBtaWdodCBhY3R1YWxseSBtYWtlIHRoaW5ncyBzbG93ZXIgaW4gbm9kZSBhdCBsZWFzdCkKICAgICAgICAgIC8vIGFuZCBpdCBpcyBhIG5vbi1wZXJmZWN0IHBhcnNlIC0gaXQgY2FuJ3QgcmVjb2duaXNlCiAgICAgICAgICAvLyB1bnF1b3RlZCB1cmxzLCBtZWFuaW5nIGl0IGNhbid0IGRpc3Rpbmd1aXNoIGNvbW1lbnRzCiAgICAgICAgICAvLyBtZWFuaW5nIGNvbW1lbnRzIHdpdGggcXVvdGVzIG9yIHt9KCkgaW4gdGhlbSBnZXQgJ2NvdW50ZWQnCiAgICAgICAgICAvLyBhbmQgdGhlbiBsZWFkIHRvIHBhcnNlIGVycm9ycy4KICAgICAgICAgIC8vIEluIGFkZGl0aW9uIGlmIHRoZSBjaHVua2luZyBjaHVua3MgaW4gdGhlIHdyb25nIHBsYWNlIHdlIG1pZ2h0CiAgICAgICAgICAvLyBub3QgYmUgYWJsZSB0byBwYXJzZSBhIHBhcnNlciBzdGF0ZW1lbnQgaW4gb25lIGdvCiAgICAgICAgICAvLyB0aGlzIGlzIG9mZmljaWFsbHkgZGVwcmVjYXRlZCBidXQgY2FuIGJlIHN3aXRjaGVkIG9uIHZpYSBhbiBvcHRpb24KICAgICAgICAgIC8vIGluIHRoZSBjYXNlIGl0IGNhdXNlcyB0b28gbXVjaCBwZXJmb3JtYW5jZSBpc3N1ZXMuCiAgICAgICAgICBpZiAoY2h1bmtJbnB1dCkgewogICAgICAgICAgICAgIGNodW5rcyA9IGNodW5rZXIoc3RyLCBmYWlsRnVuY3Rpb24pOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgY2h1bmtzID0gW3N0cl07CiAgICAgICAgICB9CiAgICAgICAgICBjdXJyZW50ID0gY2h1bmtzWzBdOwogICAgICAgICAgc2tpcFdoaXRlc3BhY2UoMCk7CiAgICAgIH07CiAgICAgIHBhcnNlcklucHV0LmVuZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBtZXNzYWdlOwogICAgICAgICAgdmFyIGlzRmluaXNoZWQgPSBwYXJzZXJJbnB1dC5pID49IGlucHV0Lmxlbmd0aDsKICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5pIDwgZnVydGhlc3QpIHsKICAgICAgICAgICAgICBtZXNzYWdlID0gZnVydGhlc3RQb3NzaWJsZUVycm9yTWVzc2FnZTsKICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5pID0gZnVydGhlc3Q7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIGlzRmluaXNoZWQ6IGlzRmluaXNoZWQsCiAgICAgICAgICAgICAgZnVydGhlc3Q6IHBhcnNlcklucHV0LmksCiAgICAgICAgICAgICAgZnVydGhlc3RQb3NzaWJsZUVycm9yTWVzc2FnZTogbWVzc2FnZSwKICAgICAgICAgICAgICBmdXJ0aGVzdFJlYWNoZWRFbmQ6IHBhcnNlcklucHV0LmkgPj0gaW5wdXQubGVuZ3RoIC0gMSwKICAgICAgICAgICAgICBmdXJ0aGVzdENoYXI6IGlucHV0W3BhcnNlcklucHV0LmldCiAgICAgICAgICB9OwogICAgICB9OwogICAgICByZXR1cm4gcGFyc2VySW5wdXQ7CiAgfSk7CgogIC8vCiAgLy8gbGVzcy5qcyAtIHBhcnNlcgogIC8vCiAgLy8gICAgQSByZWxhdGl2ZWx5IHN0cmFpZ2h0LWZvcndhcmQgcHJlZGljdGl2ZSBwYXJzZXIuCiAgLy8gICAgVGhlcmUgaXMgbm8gdG9rZW5pemF0aW9uL2xleGluZyBzdGFnZSwgdGhlIGlucHV0IGlzIHBhcnNlZAogIC8vICAgIGluIG9uZSBzd2VlcC4KICAvLwogIC8vICAgIFRvIG1ha2UgdGhlIHBhcnNlciBmYXN0IGVub3VnaCB0byBydW4gaW4gdGhlIGJyb3dzZXIsIHNldmVyYWwKICAvLyAgICBvcHRpbWl6YXRpb24gaGFkIHRvIGJlIG1hZGU6CiAgLy8KICAvLyAgICAtIE1hdGNoaW5nIGFuZCBzbGljaW5nIG9uIGEgaHVnZSBpbnB1dCBpcyBvZnRlbiBjYXVzZSBvZiBzbG93ZG93bnMuCiAgLy8gICAgICBUaGUgc29sdXRpb24gaXMgdG8gY2h1bmtpZnkgdGhlIGlucHV0IGludG8gc21hbGxlciBzdHJpbmdzLgogIC8vICAgICAgVGhlIGNodW5rcyBhcmUgc3RvcmVkIGluIHRoZSBgY2h1bmtzYCB2YXIsCiAgLy8gICAgICBgamAgaG9sZHMgdGhlIGN1cnJlbnQgY2h1bmsgaW5kZXgsIGFuZCBgY3VycmVudFBvc2AgaG9sZHMKICAvLyAgICAgIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBjaHVuayBpbiByZWxhdGlvbiB0byBgaW5wdXRgLgogIC8vICAgICAgVGhpcyBnaXZlcyB1cyBhbiBhbG1vc3QgNHggc3BlZWQtdXAuCiAgLy8KICAvLyAgICAtIEluIG1hbnkgY2FzZXMsIHdlIGRvbid0IG5lZWQgdG8gbWF0Y2ggaW5kaXZpZHVhbCB0b2tlbnM7CiAgLy8gICAgICBmb3IgZXhhbXBsZSwgaWYgYSB2YWx1ZSBkb2Vzbid0IGhvbGQgYW55IHZhcmlhYmxlcywgb3BlcmF0aW9ucwogIC8vICAgICAgb3IgZHluYW1pYyByZWZlcmVuY2VzLCB0aGUgcGFyc2VyIGNhbiBlZmZlY3RpdmVseSAnc2tpcCcgaXQsCiAgLy8gICAgICB0cmVhdGluZyBpdCBhcyBhIGxpdGVyYWwuCiAgLy8gICAgICBBbiBleGFtcGxlIHdvdWxkIGJlICcxcHggc29saWQgIzAwMCcgLSB3aGljaCBldmFsdWF0ZXMgdG8gaXRzZWxmLAogIC8vICAgICAgd2UgZG9uJ3QgbmVlZCB0byBrbm93IHdoYXQgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBhcmUuCiAgLy8gICAgICBUaGUgZHJhd2JhY2ssIG9mIGNvdXJzZSBpcyB0aGF0IHlvdSBkb24ndCBnZXQgdGhlIGJlbmVmaXRzIG9mCiAgLy8gICAgICBzeW50YXgtY2hlY2tpbmcgb24gdGhlIENTUy4gVGhpcyBnaXZlcyB1cyBhIDUwJSBzcGVlZC11cCBpbiB0aGUgcGFyc2VyLAogIC8vICAgICAgYW5kIGEgc21hbGxlciBzcGVlZC11cCBpbiB0aGUgY29kZS1nZW4uCiAgLy8KICAvLwogIC8vICAgIFRva2VuIG1hdGNoaW5nIGlzIGRvbmUgd2l0aCB0aGUgYCRgIGZ1bmN0aW9uLCB3aGljaCBlaXRoZXIgdGFrZXMKICAvLyAgICBhIHRlcm1pbmFsIHN0cmluZyBvciByZWdleHAsIG9yIGEgbm9uLXRlcm1pbmFsIGZ1bmN0aW9uIHRvIGNhbGwuCiAgLy8gICAgSXQgYWxzbyB0YWtlcyBjYXJlIG9mIG1vdmluZyBhbGwgdGhlIGluZGljZXMgZm9yd2FyZHMuCiAgLy8KICB2YXIgUGFyc2VyID0gZnVuY3Rpb24gUGFyc2VyKGNvbnRleHQsIGltcG9ydHMsIGZpbGVJbmZvKSB7CiAgICAgIHZhciBwYXJzZXJzOwogICAgICB2YXIgcGFyc2VySW5wdXQgPSBnZXRQYXJzZXJJbnB1dCgpOwogICAgICBmdW5jdGlvbiBlcnJvcihtc2csIHR5cGUpIHsKICAgICAgICAgIHRocm93IG5ldyBMZXNzRXJyb3IoewogICAgICAgICAgICAgIGluZGV4OiBwYXJzZXJJbnB1dC5pLAogICAgICAgICAgICAgIGZpbGVuYW1lOiBmaWxlSW5mby5maWxlbmFtZSwKICAgICAgICAgICAgICB0eXBlOiB0eXBlIHx8ICdTeW50YXgnLAogICAgICAgICAgICAgIG1lc3NhZ2U6IG1zZwogICAgICAgICAgfSwgaW1wb3J0cyk7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gZXhwZWN0KGFyZywgbXNnKSB7CiAgICAgICAgICAvLyBzb21lIG9sZGVyIGJyb3dzZXJzIHJldHVybiB0eXBlb2YgJ2Z1bmN0aW9uJyBmb3IgUmVnRXhwCiAgICAgICAgICB2YXIgcmVzdWx0ID0gKGFyZyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSA/IGFyZy5jYWxsKHBhcnNlcnMpIDogcGFyc2VySW5wdXQuJHJlKGFyZyk7CiAgICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVycm9yKG1zZyB8fCAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycKICAgICAgICAgICAgICA/ICJleHBlY3RlZCAnIiArIGFyZyArICInIGdvdCAnIiArIHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgKyAiJyIKICAgICAgICAgICAgICA6ICd1bmV4cGVjdGVkIHRva2VuJykpOwogICAgICB9CiAgICAgIC8vIFNwZWNpYWxpemF0aW9uIG9mIGV4cGVjdCgpCiAgICAgIGZ1bmN0aW9uIGV4cGVjdENoYXIoYXJnLCBtc2cpIHsKICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcihhcmcpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGFyZzsKICAgICAgICAgIH0KICAgICAgICAgIGVycm9yKG1zZyB8fCAiZXhwZWN0ZWQgJyIgKyBhcmcgKyAiJyBnb3QgJyIgKyBwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpICsgIiciKTsKICAgICAgfQogICAgICBmdW5jdGlvbiBnZXREZWJ1Z0luZm8oaW5kZXgpIHsKICAgICAgICAgIHZhciBmaWxlbmFtZSA9IGZpbGVJbmZvLmZpbGVuYW1lOwogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBnZXRMb2NhdGlvbihpbmRleCwgcGFyc2VySW5wdXQuZ2V0SW5wdXQoKSkubGluZSArIDEsCiAgICAgICAgICAgICAgZmlsZU5hbWU6IGZpbGVuYW1lCiAgICAgICAgICB9OwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiAgVXNlZCBhZnRlciBpbml0aWFsIHBhcnNpbmcgdG8gY3JlYXRlIG5vZGVzIG9uIHRoZSBmbHkKICAgICAgICoKICAgICAgICogIEBwYXJhbSB7U3RyaW5nfSBzdHIgICAgICAgICAgLSBzdHJpbmcgdG8gcGFyc2UKICAgICAgICogIEBwYXJhbSB7QXJyYXl9ICBwYXJzZUxpc3QgICAgLSBhcnJheSBvZiBwYXJzZXJzIHRvIHJ1biBpbnB1dCB0aHJvdWdoIGUuZy4gWyJ2YWx1ZSIsICJpbXBvcnRhbnQiXQogICAgICAgKiAgQHBhcmFtIHtOdW1iZXJ9IGN1cnJlbnRJbmRleCAtIHN0YXJ0IG51bWJlciB0byBiZWdpbiBpbmRleGluZwogICAgICAgKiAgQHBhcmFtIHtPYmplY3R9IGZpbGVJbmZvICAgICAtIGZpbGVJbmZvIHRvIGF0dGFjaCB0byBjcmVhdGVkIG5vZGVzCiAgICAgICAqLwogICAgICBmdW5jdGlvbiBwYXJzZU5vZGUoc3RyLCBwYXJzZUxpc3QsIGN1cnJlbnRJbmRleCwgZmlsZUluZm8sIGNhbGxiYWNrKSB7CiAgICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgICAgdmFyIHJldHVybk5vZGVzID0gW107CiAgICAgICAgICB2YXIgcGFyc2VyID0gcGFyc2VySW5wdXQ7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIHBhcnNlci5zdGFydChzdHIsIGZhbHNlLCBmdW5jdGlvbiBmYWlsKG1zZywgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgY2FsbGJhY2soewogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbXNnLAogICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4ICsgY3VycmVudEluZGV4CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGZvciAodmFyIHggPSAwLCBwID0gdm9pZCAwLCBpID0gdm9pZCAwOyAocCA9IHBhcnNlTGlzdFt4XSk7IHgrKykgewogICAgICAgICAgICAgICAgICBpID0gcGFyc2VyLmk7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlcnNbcF0oKTsKICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuX2luZGV4ID0gaSArIGN1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuX2ZpbGVJbmZvID0gZmlsZUluZm87CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkgeyB9CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm5Ob2Rlcy5wdXNoKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm5Ob2Rlcy5wdXNoKG51bGwpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHZhciBlbmRJbmZvID0gcGFyc2VyLmVuZCgpOwogICAgICAgICAgICAgIGlmIChlbmRJbmZvLmlzRmluaXNoZWQpIHsKICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmV0dXJuTm9kZXMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSwgbnVsbCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgTGVzc0Vycm9yKHsKICAgICAgICAgICAgICAgICAgaW5kZXg6IGUuaW5kZXggKyBjdXJyZW50SW5kZXgsCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZQogICAgICAgICAgICAgIH0sIGltcG9ydHMsIGZpbGVJbmZvLmZpbGVuYW1lKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvLwogICAgICAvLyBUaGUgUGFyc2VyCiAgICAgIC8vCiAgICAgIHJldHVybiB7CiAgICAgICAgICBwYXJzZXJJbnB1dDogcGFyc2VySW5wdXQsCiAgICAgICAgICBpbXBvcnRzOiBpbXBvcnRzLAogICAgICAgICAgZmlsZUluZm86IGZpbGVJbmZvLAogICAgICAgICAgcGFyc2VOb2RlOiBwYXJzZU5vZGUsCiAgICAgICAgICAvLwogICAgICAgICAgLy8gUGFyc2UgYW4gaW5wdXQgc3RyaW5nIGludG8gYW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUsCiAgICAgICAgICAvLyBAcGFyYW0gc3RyIEEgc3RyaW5nIGNvbnRhaW5pbmcgJ2xlc3MnIG1hcmt1cAogICAgICAgICAgLy8gQHBhcmFtIGNhbGxiYWNrIGNhbGwgYGNhbGxiYWNrYCB3aGVuIGRvbmUuCiAgICAgICAgICAvLyBAcGFyYW0gW2FkZGl0aW9uYWxEYXRhXSBBbiBvcHRpb25hbCBtYXAgd2hpY2ggY2FuIGNvbnRhaW5zIHZhcnMgLSBhIG1hcCAoa2V5LCB2YWx1ZSkgb2YgdmFyaWFibGVzIHRvIGFwcGx5CiAgICAgICAgICAvLwogICAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIChzdHIsIGNhbGxiYWNrLCBhZGRpdGlvbmFsRGF0YSkgewogICAgICAgICAgICAgIHZhciByb290OwogICAgICAgICAgICAgIHZhciBlcnJvciA9IG51bGw7CiAgICAgICAgICAgICAgdmFyIGdsb2JhbFZhcnM7CiAgICAgICAgICAgICAgdmFyIG1vZGlmeVZhcnM7CiAgICAgICAgICAgICAgdmFyIGlnbm9yZWQ7CiAgICAgICAgICAgICAgdmFyIHByZVRleHQgPSAnJzsKICAgICAgICAgICAgICBnbG9iYWxWYXJzID0gKGFkZGl0aW9uYWxEYXRhICYmIGFkZGl0aW9uYWxEYXRhLmdsb2JhbFZhcnMpID8gUGFyc2VyLnNlcmlhbGl6ZVZhcnMoYWRkaXRpb25hbERhdGEuZ2xvYmFsVmFycykgKyAiXG4iIDogJyc7CiAgICAgICAgICAgICAgbW9kaWZ5VmFycyA9IChhZGRpdGlvbmFsRGF0YSAmJiBhZGRpdGlvbmFsRGF0YS5tb2RpZnlWYXJzKSA/ICJcbiIgKyBQYXJzZXIuc2VyaWFsaXplVmFycyhhZGRpdGlvbmFsRGF0YS5tb2RpZnlWYXJzKSA6ICcnOwogICAgICAgICAgICAgIGlmIChjb250ZXh0LnBsdWdpbk1hbmFnZXIpIHsKICAgICAgICAgICAgICAgICAgdmFyIHByZVByb2Nlc3NvcnMgPSBjb250ZXh0LnBsdWdpbk1hbmFnZXIuZ2V0UHJlUHJvY2Vzc29ycygpOwogICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByZVByb2Nlc3NvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHByZVByb2Nlc3NvcnNbaV0ucHJvY2VzcyhzdHIsIHsgY29udGV4dDogY29udGV4dCwgaW1wb3J0czogaW1wb3J0cywgZmlsZUluZm86IGZpbGVJbmZvIH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChnbG9iYWxWYXJzIHx8IChhZGRpdGlvbmFsRGF0YSAmJiBhZGRpdGlvbmFsRGF0YS5iYW5uZXIpKSB7CiAgICAgICAgICAgICAgICAgIHByZVRleHQgPSAoKGFkZGl0aW9uYWxEYXRhICYmIGFkZGl0aW9uYWxEYXRhLmJhbm5lcikgPyBhZGRpdGlvbmFsRGF0YS5iYW5uZXIgOiAnJykgKyBnbG9iYWxWYXJzOwogICAgICAgICAgICAgICAgICBpZ25vcmVkID0gaW1wb3J0cy5jb250ZW50c0lnbm9yZWRDaGFyczsKICAgICAgICAgICAgICAgICAgaWdub3JlZFtmaWxlSW5mby5maWxlbmFtZV0gPSBpZ25vcmVkW2ZpbGVJbmZvLmZpbGVuYW1lXSB8fCAwOwogICAgICAgICAgICAgICAgICBpZ25vcmVkW2ZpbGVJbmZvLmZpbGVuYW1lXSArPSBwcmVUZXh0Lmxlbmd0aDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL1xyXG4/L2csICdcbicpOwogICAgICAgICAgICAgIC8vIFJlbW92ZSBwb3RlbnRpYWwgVVRGIEJ5dGUgT3JkZXIgTWFyawogICAgICAgICAgICAgIHN0ciA9IHByZVRleHQgKyBzdHIucmVwbGFjZSgvXlx1RkVGRi8sICcnKSArIG1vZGlmeVZhcnM7CiAgICAgICAgICAgICAgaW1wb3J0cy5jb250ZW50c1tmaWxlSW5mby5maWxlbmFtZV0gPSBzdHI7CiAgICAgICAgICAgICAgLy8gU3RhcnQgd2l0aCB0aGUgcHJpbWFyeSBydWxlLgogICAgICAgICAgICAgIC8vIFRoZSB3aG9sZSBzeW50YXggdHJlZSBpcyBoZWxkIHVuZGVyIGEgUnVsZXNldCBub2RlLAogICAgICAgICAgICAgIC8vIHdpdGggdGhlIGByb290YCBwcm9wZXJ0eSBzZXQgdG8gdHJ1ZSwgc28gbm8gYHt9YCBhcmUKICAgICAgICAgICAgICAvLyBvdXRwdXQuIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgaW5wdXQgaXMgcGFyc2VkLgogICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnN0YXJ0KHN0ciwgY29udGV4dC5jaHVua0lucHV0LCBmdW5jdGlvbiBmYWlsKG1zZywgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBMZXNzRXJyb3IoewogICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUGFyc2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZTogZmlsZUluZm8uZmlsZW5hbWUKICAgICAgICAgICAgICAgICAgICAgIH0sIGltcG9ydHMpOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgdHJlZS5Ob2RlLnByb3RvdHlwZS5wYXJzZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgIHJvb3QgPSBuZXcgdHJlZS5SdWxlc2V0KG51bGwsIHRoaXMucGFyc2Vycy5wcmltYXJ5KCkpOwogICAgICAgICAgICAgICAgICB0cmVlLk5vZGUucHJvdG90eXBlLnJvb3ROb2RlID0gcm9vdDsKICAgICAgICAgICAgICAgICAgcm9vdC5yb290ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgcm9vdC5maXJzdFJvb3QgPSB0cnVlOwogICAgICAgICAgICAgICAgICByb290LmZ1bmN0aW9uUmVnaXN0cnkgPSBmdW5jdGlvblJlZ2lzdHJ5LmluaGVyaXQoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBMZXNzRXJyb3IoZSwgaW1wb3J0cywgZmlsZUluZm8uZmlsZW5hbWUpKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gSWYgYGlgIGlzIHNtYWxsZXIgdGhhbiB0aGUgYGlucHV0Lmxlbmd0aCAtIDFgLAogICAgICAgICAgICAgIC8vIGl0IG1lYW5zIHRoZSBwYXJzZXIgd2Fzbid0IGFibGUgdG8gcGFyc2UgdGhlIHdob2xlCiAgICAgICAgICAgICAgLy8gc3RyaW5nLCBzbyB3ZSd2ZSBnb3QgYSBwYXJzaW5nIGVycm9yLgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gV2UgdHJ5IHRvIGV4dHJhY3QgYSBcbiBkZWxpbWl0ZWQgc3RyaW5nLAogICAgICAgICAgICAgIC8vIHNob3dpbmcgdGhlIGxpbmUgd2hlcmUgdGhlIHBhcnNlIGVycm9yIG9jY3VycmVkLgogICAgICAgICAgICAgIC8vIFdlIHNwbGl0IGl0IHVwIGludG8gdHdvIHBhcnRzICh0aGUgcGFydCB3aGljaCBwYXJzZWQsCiAgICAgICAgICAgICAgLy8gYW5kIHRoZSBwYXJ0IHdoaWNoIGRpZG4ndCksIHNvIHdlIGNhbiBjb2xvciB0aGVtIGRpZmZlcmVudGx5LgogICAgICAgICAgICAgIHZhciBlbmRJbmZvID0gcGFyc2VySW5wdXQuZW5kKCk7CiAgICAgICAgICAgICAgaWYgKCFlbmRJbmZvLmlzRmluaXNoZWQpIHsKICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBlbmRJbmZvLmZ1cnRoZXN0UG9zc2libGVFcnJvck1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgIGlmICghbWVzc2FnZSkgewogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdVbnJlY29nbmlzZWQgaW5wdXQnOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZEluZm8uZnVydGhlc3RDaGFyID09PSAnfScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcuIFBvc3NpYmx5IG1pc3Npbmcgb3BlbmluZyBcJ3tcJyc7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbmRJbmZvLmZ1cnRoZXN0Q2hhciA9PT0gJyknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAnLiBQb3NzaWJseSBtaXNzaW5nIG9wZW5pbmcgXCcoXCcnOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZW5kSW5mby5mdXJ0aGVzdFJlYWNoZWRFbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcuIFBvc3NpYmx5IG1pc3Npbmcgc29tZXRoaW5nJzsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlcnJvciA9IG5ldyBMZXNzRXJyb3IoewogICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BhcnNlJywKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogZW5kSW5mby5mdXJ0aGVzdCwKICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBmaWxlSW5mby5maWxlbmFtZQogICAgICAgICAgICAgICAgICB9LCBpbXBvcnRzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIGZpbmlzaCA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgIGUgPSBlcnJvciB8fCBlIHx8IGltcG9ydHMuZXJyb3I7CiAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgTGVzc0Vycm9yKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgTGVzc0Vycm9yKGUsIGltcG9ydHMsIGZpbGVJbmZvLmZpbGVuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByb290KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHJvY2Vzc0ltcG9ydHMgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgIG5ldyB2aXNpdG9ycy5JbXBvcnRWaXNpdG9yKGltcG9ydHMsIGZpbmlzaCkKICAgICAgICAgICAgICAgICAgICAgIC5ydW4ocm9vdCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICByZXR1cm4gZmluaXNoKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIC8vCiAgICAgICAgICAvLyBIZXJlIGluLCB0aGUgcGFyc2luZyBydWxlcy9mdW5jdGlvbnMKICAgICAgICAgIC8vCiAgICAgICAgICAvLyBUaGUgYmFzaWMgc3RydWN0dXJlIG9mIHRoZSBzeW50YXggdHJlZSBnZW5lcmF0ZWQgaXMgYXMgZm9sbG93czoKICAgICAgICAgIC8vCiAgICAgICAgICAvLyAgIFJ1bGVzZXQgLT4gIERlY2xhcmF0aW9uIC0+IFZhbHVlIC0+IEV4cHJlc3Npb24gLT4gRW50aXR5CiAgICAgICAgICAvLwogICAgICAgICAgLy8gSGVyZSdzIHNvbWUgTGVzcyBjb2RlOgogICAgICAgICAgLy8KICAgICAgICAgIC8vICAgIC5jbGFzcyB7CiAgICAgICAgICAvLyAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgICAgLy8gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogICAgICAgICAgLy8gICAgICB3aWR0aDogQHcgKyA0cHg7CiAgICAgICAgICAvLyAgICAgID4gLmNoaWxkIHsuLi59CiAgICAgICAgICAvLyAgICB9CiAgICAgICAgICAvLwogICAgICAgICAgLy8gQW5kIGhlcmUncyB3aGF0IHRoZSBwYXJzZSB0cmVlIG1pZ2h0IGxvb2sgbGlrZToKICAgICAgICAgIC8vCiAgICAgICAgICAvLyAgICAgUnVsZXNldCAoU2VsZWN0b3IgJy5jbGFzcycsIFsKICAgICAgICAgIC8vICAgICAgICAgRGVjbGFyYXRpb24gKCJjb2xvciIsICBWYWx1ZSAoW0V4cHJlc3Npb24gW0NvbG9yICNmZmZdXSkpCiAgICAgICAgICAvLyAgICAgICAgIERlY2xhcmF0aW9uICgiYm9yZGVyIiwgVmFsdWUgKFtFeHByZXNzaW9uIFtEaW1lbnNpb24gMXB4XVtLZXl3b3JkICJzb2xpZCJdW0NvbG9yICMwMDBdXSkpCiAgICAgICAgICAvLyAgICAgICAgIERlY2xhcmF0aW9uICgid2lkdGgiLCAgVmFsdWUgKFtFeHByZXNzaW9uIFtPcGVyYXRpb24gIiArICIgW1ZhcmlhYmxlICJAdyJdW0RpbWVuc2lvbiA0cHhdXV0pKQogICAgICAgICAgLy8gICAgICAgICBSdWxlc2V0IChTZWxlY3RvciBbRWxlbWVudCAnPicsICcuY2hpbGQnXSwgWy4uLl0pCiAgICAgICAgICAvLyAgICAgXSkKICAgICAgICAgIC8vCiAgICAgICAgICAvLyAgSW4gZ2VuZXJhbCwgbW9zdCBydWxlcyB3aWxsIHRyeSB0byBwYXJzZSBhIHRva2VuIHdpdGggdGhlIGAkcmUoKWAgZnVuY3Rpb24sIGFuZCBpZiB0aGUgcmV0dXJuCiAgICAgICAgICAvLyAgdmFsdWUgaXMgdHJ1bHksIHdpbGwgcmV0dXJuIGEgbmV3IG5vZGUsIG9mIHRoZSByZWxldmFudCB0eXBlLiBTb21ldGltZXMsIHdlIG5lZWQgdG8gY2hlY2sKICAgICAgICAgIC8vICBmaXJzdCwgYmVmb3JlIHBhcnNpbmcsIHRoYXQncyB3aGVuIHdlIHVzZSBgcGVlaygpYC4KICAgICAgICAgIC8vCiAgICAgICAgICBwYXJzZXJzOiBwYXJzZXJzID0gewogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gVGhlIGBwcmltYXJ5YCBydWxlIGlzIHRoZSAqZW50cnkqIGFuZCAqZXhpdCogcG9pbnQgb2YgdGhlIHBhcnNlci4KICAgICAgICAgICAgICAvLyBUaGUgcnVsZXMgaGVyZSBjYW4gYXBwZWFyIGF0IGFueSBsZXZlbCBvZiB0aGUgcGFyc2UgdHJlZS4KICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIFRoZSByZWN1cnNpdmUgbmF0dXJlIG9mIHRoZSBncmFtbWFyIGlzIGFuIGludGVycGxheSBiZXR3ZWVuIHRoZSBgYmxvY2tgCiAgICAgICAgICAgICAgLy8gcnVsZSwgd2hpY2ggcmVwcmVzZW50cyBgeyAuLi4gfWAsIHRoZSBgcnVsZXNldGAgcnVsZSwgYW5kIHRoaXMgYHByaW1hcnlgIHJ1bGUsCiAgICAgICAgICAgICAgLy8gYXMgcmVwcmVzZW50ZWQgYnkgdGhpcyBzaW1wbGlmaWVkIGdyYW1tYXI6CiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyAgICAgcHJpbWFyeSAg4oaSICAocnVsZXNldCB8IGRlY2xhcmF0aW9uKSsKICAgICAgICAgICAgICAvLyAgICAgcnVsZXNldCAg4oaSICBzZWxlY3RvcisgYmxvY2sKICAgICAgICAgICAgICAvLyAgICAgYmxvY2sgICAg4oaSICAneycgcHJpbWFyeSAnfScKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIE9ubHkgYXQgb25lIHBvaW50IGlzIHRoZSBwcmltYXJ5IHJ1bGUgbm90IGNhbGxlZCBmcm9tIHRoZQogICAgICAgICAgICAgIC8vIGJsb2NrIHJ1bGU6IGF0IHRoZSByb290IGxldmVsLgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgcHJpbWFyeTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICB2YXIgbWl4aW4gPSB0aGlzLm1peGluOwogICAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IFtdOwogICAgICAgICAgICAgICAgICB2YXIgbm9kZTsKICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHRoaXMuY29tbWVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5wdXNoKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgLy8gYWx3YXlzIHByb2Nlc3MgY29tbWVudHMgYmVmb3JlIGRlY2lkaW5nIGlmIGZpbmlzaGVkCiAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuZmluaXNoZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5wZWVrKCd9JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSB0aGlzLmV4dGVuZFJ1bGUoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCA9IHJvb3QuY29uY2F0KG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG1peGluLmRlZmluaXRpb24oKSB8fCB0aGlzLmRlY2xhcmF0aW9uKCkgfHwgbWl4aW4uY2FsbChmYWxzZSwgZmFsc2UpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc2V0KCkgfHwgdGhpcy52YXJpYWJsZUNhbGwoKSB8fCB0aGlzLmVudGl0aWVzLmNhbGwoKSB8fCB0aGlzLmF0cnVsZSgpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByb290LnB1c2gobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm91bmRTZW1pQ29sb24gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGFyc2VySW5wdXQuJGNoYXIoJzsnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFNlbWlDb2xvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRTZW1pQ29sb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiByb290OwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8gY29tbWVudHMgYXJlIGNvbGxlY3RlZCBieSB0aGUgbWFpbiBwYXJzaW5nIG1lY2hhbmlzbSBhbmQgdGhlbiBhc3NpZ25lZCB0byBub2RlcwogICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBhbGxvd3MgaXQKICAgICAgICAgICAgICBjb21tZW50OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5jb21tZW50U3RvcmUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgY29tbWVudCA9IHBhcnNlcklucHV0LmNvbW1lbnRTdG9yZS5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5Db21tZW50KShjb21tZW50LnRleHQsIGNvbW1lbnQuaXNMaW5lQ29tbWVudCwgY29tbWVudC5pbmRleCwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIEVudGl0aWVzIGFyZSB0b2tlbnMgd2hpY2ggY2FuIGJlIGZvdW5kIGluc2lkZSBhbiBFeHByZXNzaW9uCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICBlbnRpdGllczogewogICAgICAgICAgICAgICAgICBtaXhpbkxvb2t1cDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlcnMubWl4aW4uY2FsbCh0cnVlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gQSBzdHJpbmcsIHdoaWNoIHN1cHBvcnRzIGVzY2FwaW5nICIgYW5kICcKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gICAgICJtaWxreSB3YXkiICdoZVwncyB0aGUgb25lIScKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgcXVvdGVkOiBmdW5jdGlvbiAoZm9yY2VFc2NhcGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RyOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBpc0VzY2FwZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignficpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcmNlRXNjYXBlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBwYXJzZXJJbnB1dC4kcXVvdGVkKCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cikgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuUXVvdGVkKShzdHIuY2hhckF0KDApLCBzdHIuc3Vic3RyKDEsIHN0ci5sZW5ndGggLSAyKSwgaXNFc2NhcGVkLCBpbmRleCwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBBIGNhdGNoLWFsbCB3b3JkLCBzdWNoIGFzOgogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyAgICAgYmxhY2sgYm9yZGVyLWNvbGxhcHNlCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIGtleXdvcmQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBrID0gcGFyc2VySW5wdXQuJGNoYXIoJyUnKSB8fCBwYXJzZXJJbnB1dC4kcmUoL15cWz8oPzpbXHctXXxcXCg/OltBLUZhLWYwLTldezEsNn0gP3xbXkEtRmEtZjAtOV0pKStcXT8vKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWUuQ29sb3IuZnJvbUtleXdvcmQoaykgfHwgbmV3ICh0cmVlLktleXdvcmQpKGspOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBBIGZ1bmN0aW9uIGNhbGwKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gICAgIHJnYigyNTUsIDAsIDI1NSkKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFyc2VkIHdpdGggdGhlIGBlbnRpdGllcy5hcmd1bWVudHNgIHBhcnNlci4KICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgY2FsbDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWU7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJnczsKICAgICAgICAgICAgICAgICAgICAgIHZhciBmdW5jOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL2Nhc2UtaW5zZW5zaXRpdmUtcmVnZXgtdnMtc3RydG9sb3dlci10aGVuLXJlZ2V4LzE4CiAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQucGVlaygvXnVybFwoL2kpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBhcnNlcklucHV0LiRyZSgvXihbXHctXSt8JXxwcm9naWQ6W1x3XC5dKylcKC8pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbMV07CiAgICAgICAgICAgICAgICAgICAgICBmdW5jID0gdGhpcy5jdXN0b21GdW5jQ2FsbChuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChmdW5jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IGZ1bmMucGFyc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJncyAmJiBmdW5jLnN0b3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmdzOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSB0aGlzLmFyZ3VtZW50cyhhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQuJGNoYXIoJyknKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoJ0NvdWxkIG5vdCBwYXJzZSBjYWxsIGFyZ3VtZW50cyBvciBtaXNzaW5nIFwnKVwnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkNhbGwpKG5hbWUsIGFyZ3MsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vIFBhcnNpbmcgcnVsZXMgZm9yIGZ1bmN0aW9ucyB3aXRoIG5vbi1zdGFuZGFyZCBhcmdzLCBlLmcuOgogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyAgICAgYm9vbGVhbihub3QoMiA+IDEpKQogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyAgICAgVGhpcyBpcyBhIHF1aWNrIHByb3RvdHlwZSwgdG8gYmUgbW9kaWZpZWQvaW1wcm92ZWQgd2hlbgogICAgICAgICAgICAgICAgICAvLyAgICAgbW9yZSBjdXN0b20tcGFyc2VkIGZ1bmNzIGNvbWUgKGUuZy4gYHNlbGVjdG9yKC4uLilgKQogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICBjdXN0b21GdW5jQ2FsbDogZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgIC8qIElkZWFsbHkgdGhlIHRhYmxlIGlzIHRvIGJlIG1vdmVkIG91dCBvZiBoZXJlIGZvciBmYXN0ZXIgcGVyZi4sCiAgICAgICAgICAgICAgICAgICAgICAgICBidXQgaXQncyBxdWl0ZSB0cmlja3kgc2luY2UgaXQgcmVsaWVzIG9uIGFsbCB0aGVzZSBgcGFyc2Vyc2AKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBgZXhwZWN0YCBhdmFpbGFibGUgb25seSBoZXJlICovCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhOiBmKHBhcnNlcnMuaWVBbHBoYSwgdHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbjogZihjb25kaXRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICdpZic6IGYoY29uZGl0aW9uKQogICAgICAgICAgICAgICAgICAgICAgfVtuYW1lLnRvTG93ZXJDYXNlKCldOwogICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZihwYXJzZSwgc3RvcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlOiBwYXJzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcDogc3RvcCAvLyB3aGVuIHRydWUgLSBzdG9wIGFmdGVyIHBhcnNlKCkgYW5kIHJldHVybiBpdHMgcmVzdWx0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGNvbnRpbnVlIGZvciBwbGFpbiBhcmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNvbmRpdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2V4cGVjdChwYXJzZXJzLmNvbmRpdGlvbiwgJ2V4cGVjdGVkIGNvbmRpdGlvbicpXTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgYXJndW1lbnRzOiBmdW5jdGlvbiAocHJldkFyZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzQ29tbWEgPSBwcmV2QXJncyB8fCBbXTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzU2VtaUNvbG9uID0gW107CiAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNTZW1pQ29sb25TZXBhcmF0ZWQ7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2QXJncykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2QXJncyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZXJzLmRldGFjaGVkUnVsZXNldCgpIHx8IHRoaXMuYXNzaWdubWVudCgpIHx8IHBhcnNlcnMuZXhwcmVzc2lvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUudmFsdWUgJiYgdmFsdWUudmFsdWUubGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWVbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc0NvbW1hLnB1c2godmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJGNoYXIoJywnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCc7JykgfHwgaXNTZW1pQ29sb25TZXBhcmF0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZW1pQ29sb25TZXBhcmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChhcmdzQ29tbWEubGVuZ3RoIDwgMSkgPyBhcmdzQ29tbWFbMF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IHRyZWUuVmFsdWUoYXJnc0NvbW1hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1NlbWlDb2xvbi5wdXNoKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc0NvbW1hID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNTZW1pQ29sb25TZXBhcmF0ZWQgPyBhcmdzU2VtaUNvbG9uIDogYXJnc0NvbW1hOwogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICBsaXRlcmFsOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaW1lbnNpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3IoKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVvdGVkKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaWNvZGVEZXNjcmlwdG9yKCk7CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIC8vIEFzc2lnbm1lbnRzIGFyZSBhcmd1bWVudCBlbnRpdGllcyBmb3IgY2FsbHMuCiAgICAgICAgICAgICAgICAgIC8vIFRoZXkgYXJlIHByZXNlbnQgaW4gaWUgZmlsdGVyIHByb3BlcnRpZXMgYXMgc2hvd24gYmVsb3cuCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vICAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYSggKm9wYWNpdHk9NTAqICkKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgYXNzaWdubWVudDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIGtleTsKICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgIGtleSA9IHBhcnNlcklucHV0LiRyZSgvXlx3Kyg/PVxzPz0pL2kpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCFrZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignPScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2Vycy5lbnRpdHkoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuQXNzaWdubWVudCkoa2V5LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vIFBhcnNlIHVybCgpIHRva2VucwogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBXZSB1c2UgYSBzcGVjaWZpYyBydWxlIGZvciB1cmxzLCBiZWNhdXNlIHRoZXkgZG9uJ3QgcmVhbGx5IGJlaGF2ZSBsaWtlCiAgICAgICAgICAgICAgICAgIC8vIHN0YW5kYXJkIGZ1bmN0aW9uIGNhbGxzLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBhcmd1bWVudCBkb2Vzbid0IGhhdmUKICAgICAgICAgICAgICAgICAgLy8gdG8gYmUgZW5jbG9zZWQgd2l0aGluIGEgc3RyaW5nLCBzbyBpdCBjYW4ndCBiZSBwYXJzZWQgYXMgYW4gRXhwcmVzc2lvbi4KICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgdXJsOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuYXV0b0NvbW1lbnRBYnNvcmIgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQuJHN0cigndXJsKCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuYXV0b0NvbW1lbnRBYnNvcmIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5xdW90ZWQoKSB8fCB0aGlzLnZhcmlhYmxlKCkgfHwgdGhpcy5wcm9wZXJ0eSgpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuJHJlKC9eKD86KD86XFxbXChcKSciXSl8W15cKFwpJyJdKSsvKSB8fCAnJzsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmF1dG9Db21tZW50QWJzb3JiID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdENoYXIoJyknKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuVVJMKSgodmFsdWUudmFsdWUgIT0gbnVsbCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGluc3RhbmNlb2YgdHJlZS5WYXJpYWJsZSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGluc3RhbmNlb2YgdHJlZS5Qcm9wZXJ0eSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDogbmV3ICh0cmVlLkFub255bW91cykodmFsdWUsIGluZGV4KSwgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gQSBWYXJpYWJsZSBlbnRpdHksIHN1Y2ggYXMgYEBmaW5rYCwgaW4KICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gICAgIHdpZHRoOiBAZmluayArIDJweAogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBXZSB1c2UgYSBkaWZmZXJlbnQgcGFyc2VyIGZvciB2YXJpYWJsZSBkZWZpbml0aW9ucywKICAgICAgICAgICAgICAgICAgLy8gc2VlIGBwYXJzZXJzLnZhcmlhYmxlYC4KICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgdmFyaWFibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBjaDsKICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpID09PSAnQCcgJiYgKG5hbWUgPSBwYXJzZXJJbnB1dC4kcmUoL15AQD9bXHctXSsvKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSAnKCcgfHwgY2ggPT09ICdbJyAmJiAhcGFyc2VySW5wdXQucHJldkNoYXIoKS5tYXRjaCgvXlxzLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBtYXkgYmUgYSBWYXJpYWJsZUNhbGwgbG9va3VwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBwYXJzZXJzLnZhcmlhYmxlQ2FsbChuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuVmFyaWFibGUpKG5hbWUsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIC8vIEEgdmFyaWFibGUgZW50aXR5IHVzaW5nIHRoZSBwcm90ZWN0aXZlIHt9IGUuZy4gQHt2YXJ9CiAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQ3VybHk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJseTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuY3VycmVudENoYXIoKSA9PT0gJ0AnICYmIChjdXJseSA9IHBhcnNlcklucHV0LiRyZSgvXkBceyhbXHctXSspXH0vKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLlZhcmlhYmxlKSgiQCIgKyBjdXJseVsxXSwgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gQSBQcm9wZXJ0eSBhY2Nlc3Nvciwgc3VjaCBhcyBgJGNvbG9yYCwgaW4KICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcgogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWU7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgPT09ICckJyAmJiAobmFtZSA9IHBhcnNlcklucHV0LiRyZSgvXlwkW1x3LV0rLykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5Qcm9wZXJ0eSkobmFtZSwgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgLy8gQSBwcm9wZXJ0eSBlbnRpdHkgdXNlaW5nIHRoZSBwcm90ZWN0aXZlIHt9IGUuZy4gJHtwcm9wfQogICAgICAgICAgICAgICAgICBwcm9wZXJ0eUN1cmx5OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VybHk7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgPT09ICckJyAmJiAoY3VybHkgPSBwYXJzZXJJbnB1dC4kcmUoL15cJFx7KFtcdy1dKylcfS8pKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuUHJvcGVydHkpKCIkIiArIGN1cmx5WzFdLCBpbmRleCwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBBIEhleGFkZWNpbWFsIGNvbG9yCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vICAgICAjNEYzQzJGCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vIGByZ2JgIGFuZCBgaHNsYCBjb2xvcnMgYXJlIHBhcnNlZCB0aHJvdWdoIHRoZSBgZW50aXRpZXMuY2FsbGAgcGFyc2VyLgogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICBjb2xvcjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIHJnYjsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpID09PSAnIycgJiYgKHJnYiA9IHBhcnNlcklucHV0LiRyZSgvXiMoW0EtRmEtZjAtOV17OH18W0EtRmEtZjAtOV17Nn18W0EtRmEtZjAtOV17Myw0fSkoW1x3LiNcW10pPy8pKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmdiWzJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkNvbG9yKShyZ2JbMV0sIHVuZGVmaW5lZCwgcmdiWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIGNvbG9yS2V5d29yZDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGF1dG9Db21tZW50QWJzb3JiID0gcGFyc2VySW5wdXQuYXV0b0NvbW1lbnRBYnNvcmI7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5hdXRvQ29tbWVudEFic29yYiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBwYXJzZXJJbnB1dC4kcmUoL15bX0EtWmEtei1dW19BLVphLXowLTktXSsvKTsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmF1dG9Db21tZW50QWJzb3JiID0gYXV0b0NvbW1lbnRBYnNvcmI7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSB0cmVlLkNvbG9yLmZyb21LZXl3b3JkKGspOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuJHN0cihrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vIEEgRGltZW5zaW9uLCB0aGF0IGlzLCBhIG51bWJlciBhbmQgYSB1bml0CiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vICAgICAwLjVlbSA5NSUKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgZGltZW5zaW9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQucGVla05vdE51bWVyaWMoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlcklucHV0LiRyZSgvXihbKy1dP1xkKlwuP1xkKykoJXxbYS16X10rKT8vaSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkRpbWVuc2lvbikodmFsdWVbMV0sIHZhbHVlWzJdKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gQSB1bmljb2RlIGRlc2NyaXB0b3IsIGFzIGlzIHVzZWQgaW4gdW5pY29kZS1yYW5nZQogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBVKzA/PyAgb3IgVSswMEExLTAwQTkKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgdW5pY29kZURlc2NyaXB0b3I6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciB1ZDsKICAgICAgICAgICAgICAgICAgICAgIHVkID0gcGFyc2VySW5wdXQuJHJlKC9eVVwrWzAtOWEtZkEtRj9dKyhcLVswLTlhLWZBLUY/XSspPy8pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5Vbmljb2RlRGVzY3JpcHRvcikodWRbMF0pOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGNvZGUgdG8gYmUgZXZhbHVhdGVkCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vICAgICBgd2luZG93LmxvY2F0aW9uLmhyZWZgCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIGphdmFzY3JpcHQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBqczsKICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgZXNjYXBlID0gcGFyc2VySW5wdXQuJGNoYXIoJ34nKTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBqc1F1b3RlID0gcGFyc2VySW5wdXQuJGNoYXIoJ2AnKTsKICAgICAgICAgICAgICAgICAgICAgIGlmICghanNRdW90ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBqcyA9IHBhcnNlcklucHV0LiRyZSgvXlteYF0qYC8pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGpzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5KYXZhU2NyaXB0KShqcy5zdWJzdHIoMCwganMubGVuZ3RoIC0gMSksIEJvb2xlYW4oZXNjYXBlKSwgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoJ2ludmFsaWQgamF2YXNjcmlwdCBkZWZpbml0aW9uJyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gVGhlIHZhcmlhYmxlIHBhcnQgb2YgYSB2YXJpYWJsZSBkZWZpbml0aW9uLiBVc2VkIGluIHRoZSBgcnVsZWAgcGFyc2VyCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyAgICAgQGZpbms6CiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICB2YXJpYWJsZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICB2YXIgbmFtZTsKICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgPT09ICdAJyAmJiAobmFtZSA9IHBhcnNlcklucHV0LiRyZSgvXihAW1x3LV0rKVxzKjovKSkpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lWzFdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIENhbGwgYSB2YXJpYWJsZSB2YWx1ZSB0byByZXRyaWV2ZSBhIGRldGFjaGVkIHJ1bGVzZXQKICAgICAgICAgICAgICAvLyBvciBhIHZhbHVlIGZyb20gYSBkZXRhY2hlZCBydWxlc2V0J3MgcnVsZXMuCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyAgICAgQGZpbmsoKTsKICAgICAgICAgICAgICAvLyAgICAgQGZpbms7CiAgICAgICAgICAgICAgLy8gICAgIGNvbG9yOiBAZmlua1tAY29sb3JdOwogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgdmFyaWFibGVDYWxsOiBmdW5jdGlvbiAocGFyc2VkTmFtZSkgewogICAgICAgICAgICAgICAgICB2YXIgbG9va3VwczsKICAgICAgICAgICAgICAgICAgdmFyIGkgPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICB2YXIgaW5WYWx1ZSA9ICEhcGFyc2VkTmFtZTsKICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBwYXJzZWROYW1lOwogICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgIGlmIChuYW1lIHx8IChwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpID09PSAnQCcKICAgICAgICAgICAgICAgICAgICAgICYmIChuYW1lID0gcGFyc2VySW5wdXQuJHJlKC9eKEBbXHctXSspKFwoXHMqXCkpPy8pKSkpIHsKICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cHMgPSB0aGlzLm1peGluLnJ1bGVMb29rdXBzKCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvb2t1cHMgJiYgKChpblZhbHVlICYmIHBhcnNlcklucHV0LiRzdHIoJygpJykgIT09ICcoKScpIHx8IChuYW1lWzJdICE9PSAnKCknKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCdNaXNzaW5nIFwnWy4uLl1cJyBsb29rdXAgaW4gdmFyaWFibGUgY2FsbCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5WYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lWzFdOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgdmFyIGNhbGwgPSBuZXcgdHJlZS5WYXJpYWJsZUNhbGwobmFtZSwgaSwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCFpblZhbHVlICYmIHBhcnNlcnMuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdHJlZS5OYW1lc3BhY2VWYWx1ZShjYWxsLCBsb29rdXBzLCBpLCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBleHRlbmQgc3ludGF4IC0gdXNlZCB0byBleHRlbmQgc2VsZWN0b3JzCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICBleHRlbmQ6IGZ1bmN0aW9uIChpc1J1bGUpIHsKICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRzOwogICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgdmFyIG9wdGlvbjsKICAgICAgICAgICAgICAgICAgdmFyIGV4dGVuZExpc3Q7CiAgICAgICAgICAgICAgICAgIHZhciBleHRlbmQ7CiAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQuJHN0cihpc1J1bGUgPyAnJjpleHRlbmQoJyA6ICc6ZXh0ZW5kKCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghKG9wdGlvbiA9IHBhcnNlcklucHV0LiRyZSgvXihhbGwpKD89XHMqKFwpfCwpKS8pKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLmVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gb3B0aW9uICYmIG9wdGlvblsxXTsKICAgICAgICAgICAgICAgICAgICAgIGlmICghZWxlbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcignTWlzc2luZyB0YXJnZXQgc2VsZWN0b3IgZm9yIDpleHRlbmQoKS4nKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZCA9IG5ldyAodHJlZS5FeHRlbmQpKG5ldyAodHJlZS5TZWxlY3RvcikoZWxlbWVudHMpLCBvcHRpb24sIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kTGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZExpc3QucHVzaChleHRlbmQpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kTGlzdCA9IFtleHRlbmRdOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9IHdoaWxlIChwYXJzZXJJbnB1dC4kY2hhcignLCcpKTsKICAgICAgICAgICAgICAgICAgZXhwZWN0KC9eXCkvKTsKICAgICAgICAgICAgICAgICAgaWYgKGlzUnVsZSkgewogICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KC9eOy8pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBleHRlbmRMaXN0OwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBleHRlbmRSdWxlIC0gdXNlZCBpbiBhIHJ1bGUgdG8gZXh0ZW5kIGFsbCB0aGUgcGFyZW50IHNlbGVjdG9ycwogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgZXh0ZW5kUnVsZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRlbmQodHJ1ZSk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIE1peGlucwogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgbWl4aW46IHsKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gQSBNaXhpbiBjYWxsLCB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGxpc3QKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gICAgICNtaXhpbnMgPiAuc3F1YXJlKCNmZmYpOwogICAgICAgICAgICAgICAgICAvLyAgICAgI21peGlucy5zcXVhcmUoI2ZmZik7CiAgICAgICAgICAgICAgICAgIC8vICAgICAucm91bmRlZCg0cHgsIGJsYWNrKTsKICAgICAgICAgICAgICAgICAgLy8gICAgIC5idXR0b247CiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBsb29rdXAgLyByZXR1cm4gYSB2YWx1ZSB1c2luZyB0aGUgbG9va3VwIHN5bnRheDoKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gICAgIGNvbG9yOiAjbWl4aW4uc3F1YXJlKCNmZmYpW0Bjb2xvcl07CiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vIFRoZSBgd2hpbGVgIGxvb3AgaXMgdGhlcmUgYmVjYXVzZSBtaXhpbnMgY2FuIGJlCiAgICAgICAgICAgICAgICAgIC8vIG5hbWVzcGFjZWQsIGJ1dCB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNoaWxkIGFuZCBkZXNjZW5kYW50CiAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdG9yIGZvciBub3cuCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIGNhbGw6IGZ1bmN0aW9uIChpblZhbHVlLCBnZXRMb29rdXApIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gcGFyc2VySW5wdXQuY3VycmVudENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBpbXBvcnRhbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBsb29rdXBzOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50czsKICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGhhc1BhcmVuczsKICAgICAgICAgICAgICAgICAgICAgIGlmIChzICE9PSAnLicgJiYgcyAhPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOyAvLyBzdG9wIHVzIGFic29yYmluZyBwYXJ0IG9mIGFuIGludmFsaWQgc2VsZWN0b3IKICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gdGhpcy5lbGVtZW50cygpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCcoJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IHRoaXMuYXJncyh0cnVlKS5hcmdzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RDaGFyKCcpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BhcmVucyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRMb29rdXAgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cHMgPSB0aGlzLnJ1bGVMb29rdXBzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRMb29rdXAgPT09IHRydWUgJiYgIWxvb2t1cHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpblZhbHVlICYmICFsb29rdXBzICYmICFoYXNQYXJlbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpc24ndCBhIHZhbGlkIGluLXZhbHVlIG1peGluIGNhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5WYWx1ZSAmJiBwYXJzZXJzLmltcG9ydGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGFudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpblZhbHVlIHx8IHBhcnNlcnMuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaXhpbiA9IG5ldyAodHJlZS5taXhpbi5DYWxsKShlbGVtZW50cywgYXJncywgaW5kZXgsIGZpbGVJbmZvLCAhbG9va3VwcyAmJiBpbXBvcnRhbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9va3VwcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0cmVlLk5hbWVzcGFjZVZhbHVlKG1peGluLCBsb29rdXBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtaXhpbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICAgICAqIE1hdGNoaW5nIGVsZW1lbnRzIGZvciBtaXhpbnMKICAgICAgICAgICAgICAgICAgICogKFN0YXJ0IHdpdGggLiBvciAjIGFuZCBjYW4gaGF2ZSA+ICkKICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgIGVsZW1lbnRzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHM7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBjOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW07CiAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbUluZGV4OwogICAgICAgICAgICAgICAgICAgICAgdmFyIHJlID0gL15bIy5dKD86W1x3LV18XFwoPzpbQS1GYS1mMC05XXsxLDZ9ID98W15BLUZhLWYwLTldKSkrLzsKICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbUluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gcGFyc2VySW5wdXQuJHJlKHJlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBuZXcgKHRyZWUuRWxlbWVudCkoYywgZSwgZmFsc2UsIGVsZW1JbmRleCwgZmlsZUluZm8pOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGVsZW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwYXJzZXJJbnB1dC4kY2hhcignPicpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzOwogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICBhcmdzOiBmdW5jdGlvbiAoaXNDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgZW50aXRpZXMgPSBwYXJzZXJzLmVudGl0aWVzOwogICAgICAgICAgICAgICAgICAgICAgdmFyIHJldHVybmVyID0geyBhcmdzOiBudWxsLCB2YXJpYWRpYzogZmFsc2UgfTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBleHByZXNzaW9ucyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3NTZW1pQ29sb24gPSBbXTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzQ29tbWEgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBpc1NlbWlDb2xvblNlcGFyYXRlZDsKICAgICAgICAgICAgICAgICAgICAgIHZhciBleHByZXNzaW9uQ29udGFpbnNOYW1lZDsKICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lOwogICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWVMb29wOwogICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGFyZzsKICAgICAgICAgICAgICAgICAgICAgIHZhciBleHBhbmQ7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFzU2VwID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2FsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBwYXJzZXJzLmRldGFjaGVkUnVsZXNldCgpIHx8IHBhcnNlcnMuZXhwcmVzc2lvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuY29tbWVudFN0b3JlLmxlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kc3RyKCcuLi4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZXIudmFyaWFkaWMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCc7JykgJiYgIWlzU2VtaUNvbG9uU2VwYXJhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZW1pQ29sb25TZXBhcmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2VtaUNvbG9uU2VwYXJhdGVkID8gYXJnc1NlbWlDb2xvbiA6IGFyZ3NDb21tYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHVzaCh7IHZhcmlhZGljOiB0cnVlIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gZW50aXRpZXMudmFyaWFibGUoKSB8fCBlbnRpdGllcy5wcm9wZXJ0eSgpIHx8IGVudGl0aWVzLmxpdGVyYWwoKSB8fCBlbnRpdGllcy5rZXl3b3JkKCkgfHwgdGhpcy5jYWxsKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZyB8fCAhaGFzU2VwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lTG9vcCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZy50aHJvd0F3YXlDb21tZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcudGhyb3dBd2F5Q29tbWVudHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBhcmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2FsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYXJpYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnLnZhbHVlICYmIGFyZy52YWx1ZS5sZW5ndGggPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gYXJnLnZhbHVlWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgJiYgKHZhbCBpbnN0YW5jZW9mIHRyZWUuVmFyaWFibGUgfHwgdmFsIGluc3RhbmNlb2YgdHJlZS5Qcm9wZXJ0eSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCc6JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHByZXNzaW9ucy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2VtaUNvbG9uU2VwYXJhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCdDYW5ub3QgbWl4IDsgYW5kICwgYXMgZGVsaW1pdGVyIHR5cGVzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25Db250YWluc05hbWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2Vycy5kZXRhY2hlZFJ1bGVzZXQoKSB8fCBwYXJzZXJzLmV4cHJlc3Npb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNDYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCdjb3VsZCBub3QgdW5kZXJzdGFuZCB2YWx1ZSBmb3IgbmFtZWQgYXJndW1lbnQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZXIuYXJncyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUxvb3AgPSAobmFtZSA9IHZhbC5uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJzZXJJbnB1dC4kc3RyKCcuLi4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0NhbGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lci52YXJpYWRpYyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCc7JykgJiYgIWlzU2VtaUNvbG9uU2VwYXJhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VtaUNvbG9uU2VwYXJhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2VtaUNvbG9uU2VwYXJhdGVkID8gYXJnc1NlbWlDb2xvbiA6IGFyZ3NDb21tYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnB1c2goeyBuYW1lOiBhcmcubmFtZSwgdmFyaWFkaWM6IHRydWUgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc0NhbGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lTG9vcCA9IHZhbC5uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucy5wdXNoKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc0NvbW1hLnB1c2goeyBuYW1lOiBuYW1lTG9vcCwgdmFsdWU6IHZhbHVlLCBleHBhbmQ6IGV4cGFuZCB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJGNoYXIoJywnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNTZXAgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzU2VwID0gcGFyc2VySW5wdXQuJGNoYXIoJzsnKSA9PT0gJzsnOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNTZXAgfHwgaXNTZW1pQ29sb25TZXBhcmF0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb25Db250YWluc05hbWVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcignQ2Fubm90IG1peCA7IGFuZCAsIGFzIGRlbGltaXRlciB0eXBlcycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VtaUNvbG9uU2VwYXJhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb25zLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3ICh0cmVlLlZhbHVlKShleHByZXNzaW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1NlbWlDb2xvbi5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlLCBleHBhbmQ6IGV4cGFuZCB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25Db250YWluc05hbWVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lci5hcmdzID0gaXNTZW1pQ29sb25TZXBhcmF0ZWQgPyBhcmdzU2VtaUNvbG9uIDogYXJnc0NvbW1hOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybmVyOwogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBBIE1peGluIGRlZmluaXRpb24sIHdpdGggYSBsaXN0IG9mIHBhcmFtZXRlcnMKICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgLy8gICAgIC5yb3VuZGVkIChAcmFkaXVzOiAycHgsIEBjb2xvcikgewogICAgICAgICAgICAgICAgICAvLyAgICAgICAgLi4uCiAgICAgICAgICAgICAgICAgIC8vICAgICB9CiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vIFVudGlsIHdlIGhhdmUgYSBmaW5lciBncmFpbmVkIHN0YXRlLW1hY2hpbmUsIHdlIGhhdmUgdG8KICAgICAgICAgICAgICAgICAgLy8gZG8gYSBsb29rLWFoZWFkLCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBhIG1peGluIGNhbGwuCiAgICAgICAgICAgICAgICAgIC8vIFNlZSB0aGUgYHJ1bGVgIGZ1bmN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBXZSBzdGFydCBieSBtYXRjaGluZyBgLnJvdW5kZWQgKGAsIGFuZCB0aGVuIHByb2NlZWQgb24gdG8KICAgICAgICAgICAgICAgICAgLy8gdGhlIGFyZ3VtZW50IGxpc3QsIHdoaWNoIGhhcyBvcHRpb25hbCBkZWZhdWx0IHZhbHVlcy4KICAgICAgICAgICAgICAgICAgLy8gV2Ugc3RvcmUgdGhlIHBhcmFtZXRlcnMgaW4gYHBhcmFtc2AsIHdpdGggYSBgdmFsdWVgIGtleSwKICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSB2YWx1ZSwgc3VjaCBhcyBpbiB0aGUgY2FzZSBvZiBgQHJhZGl1c2AuCiAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgIC8vIE9uY2Ugd2UndmUgZ290IG91ciBwYXJhbXMgbGlzdCwgYW5kIGEgY2xvc2luZyBgKWAsIHdlIHBhcnNlCiAgICAgICAgICAgICAgICAgIC8vIHRoZSBgey4uLn1gIGJsb2NrLgogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICBkZWZpbml0aW9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJhbXMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaDsKICAgICAgICAgICAgICAgICAgICAgIHZhciBydWxlc2V0OwogICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmQ7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFyaWFkaWMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgIGlmICgocGFyc2VySW5wdXQuY3VycmVudENoYXIoKSAhPT0gJy4nICYmIHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgIT09ICcjJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5wZWVrKC9eW157XSpcfS8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBwYXJzZXJJbnB1dC4kcmUoL14oWyMuXSg/Oltcdy1dfFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKylccypcKC8pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG1hdGNoWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdJbmZvID0gdGhpcy5hcmdzKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBhcmdJbmZvLmFyZ3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFkaWMgPSBhcmdJbmZvLnZhcmlhZGljOwogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC5taXhpbmNhbGwoIkB7YX0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29rcyBhIGJpdCBsaWtlIGEgbWl4aW4gZGVmaW5pdGlvbi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxzbwogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC5taXhpbmNhbGwoQGE6IHtydWxlOiBzZXQ7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBiZSBuaWNlIGFuZCByZXN0b3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignKScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoJ01pc3NpbmcgY2xvc2luZyBcJylcJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmNvbW1lbnRTdG9yZS5sZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kc3RyKCd3aGVuJykpIHsgLy8gR3VhcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZCA9IGV4cGVjdChwYXJzZXJzLmNvbmRpdGlvbnMsICdleHBlY3RlZCBjb25kaXRpb24nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXNldCA9IHBhcnNlcnMuYmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZXNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5taXhpbi5EZWZpbml0aW9uKShuYW1lLCBwYXJhbXMsIHJ1bGVzZXQsIGNvbmQsIHZhcmlhZGljKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHJ1bGVMb29rdXBzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBsb29rdXBzID0gW107CiAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuY3VycmVudENoYXIoKSAhPT0gJ1snKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZSA9IHRoaXMubG9va3VwVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJ1bGUgJiYgcnVsZSAhPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3Vwcy5wdXNoKHJ1bGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGxvb2t1cHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb29rdXBzOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICBsb29rdXBWYWx1ZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignWycpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcGFyc2VySW5wdXQuJHJlKC9eKD86W0AkXXswLDJ9KVtfYS16QS1aMC05LV0qLyk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LiRjaGFyKCddJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgfHwgbmFtZSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBFbnRpdGllcyBhcmUgdGhlIHNtYWxsZXN0IHJlY29nbml6ZWQgdG9rZW4sCiAgICAgICAgICAgICAgLy8gYW5kIGNhbiBiZSBmb3VuZCBpbnNpZGUgYSBydWxlJ3MgdmFsdWUuCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICBlbnRpdHk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGVudGl0aWVzID0gdGhpcy5lbnRpdGllczsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbWVudCgpIHx8IGVudGl0aWVzLmxpdGVyYWwoKSB8fCBlbnRpdGllcy52YXJpYWJsZSgpIHx8IGVudGl0aWVzLnVybCgpIHx8CiAgICAgICAgICAgICAgICAgICAgICBlbnRpdGllcy5wcm9wZXJ0eSgpIHx8IGVudGl0aWVzLmNhbGwoKSB8fCBlbnRpdGllcy5rZXl3b3JkKCkgfHwgdGhpcy5taXhpbi5jYWxsKHRydWUpIHx8CiAgICAgICAgICAgICAgICAgICAgICBlbnRpdGllcy5qYXZhc2NyaXB0KCk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIEEgRGVjbGFyYXRpb24gdGVybWluYXRvci4gTm90ZSB0aGF0IHdlIHVzZSBgcGVlaygpYCB0byBjaGVjayBmb3IgJ30nLAogICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlIGBibG9ja2AgcnVsZSB3aWxsIGJlIGV4cGVjdGluZyBpdCwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gbWFrZSBzdXJlCiAgICAgICAgICAgICAgLy8gaXQncyB0aGVyZSwgaWYgJzsnIHdhcyBvbWl0dGVkLgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgZW5kOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZXJJbnB1dC4kY2hhcignOycpIHx8IHBhcnNlcklucHV0LnBlZWsoJ30nKTsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gSUUncyBhbHBoYSBmdW5jdGlvbgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gICAgIGFscGhhKG9wYWNpdHk9ODgpCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICBpZUFscGhhOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZTsKICAgICAgICAgICAgICAgICAgLy8gaHR0cDovL2pzcGVyZi5jb20vY2FzZS1pbnNlbnNpdGl2ZS1yZWdleC12cy1zdHJ0b2xvd2VyLXRoZW4tcmVnZXgvMTgKICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kcmUoL15vcGFjaXR5PS9pKSkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VySW5wdXQuJHJlKC9eXGQrLyk7CiAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhwZWN0KHBhcnNlcnMuZW50aXRpZXMudmFyaWFibGUsICdDb3VsZCBub3QgcGFyc2UgYWxwaGEnKTsKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gIkB7IiArIHZhbHVlLm5hbWUuc2xpY2UoMSkgKyAifSI7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZXhwZWN0Q2hhcignKScpOwogICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRyZWUuUXVvdGVkKCcnLCAiYWxwaGEob3BhY2l0eT0iICsgdmFsdWUgKyAiKSIpOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBBIFNlbGVjdG9yIEVsZW1lbnQKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vICAgICBkaXYKICAgICAgICAgICAgICAvLyAgICAgKyBoMQogICAgICAgICAgICAgIC8vICAgICAjc29ja3MKICAgICAgICAgICAgICAvLyAgICAgaW5wdXRbdHlwZT0idGV4dCJdCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBFbGVtZW50cyBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgU2VsZWN0b3JzLAogICAgICAgICAgICAgIC8vIHRoZXkgYXJlIG1hZGUgb3V0IG9mIGEgYENvbWJpbmF0b3JgIChzZWUgY29tYmluYXRvciBydWxlKSwKICAgICAgICAgICAgICAvLyBhbmQgYW4gZWxlbWVudCBuYW1lLCBzdWNoIGFzIGEgdGFnIGEgY2xhc3MsIG9yIGAqYC4KICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIGVsZW1lbnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgICAgICAgIHZhciBjOwogICAgICAgICAgICAgICAgICB2YXIgdjsKICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgYyA9IHRoaXMuY29tYmluYXRvcigpOwogICAgICAgICAgICAgICAgICBlID0gcGFyc2VySW5wdXQuJHJlKC9eKD86XGQrXC5cZCt8XGQrKSUvKSB8fAogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuJHJlKC9eKD86Wy4jXT98OiopKD86W1x3LV18W15ceDAwLVx4OWZdfFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKy8pIHx8CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC4kY2hhcignKicpIHx8IHBhcnNlcklucHV0LiRjaGFyKCcmJykgfHwgdGhpcy5hdHRyaWJ1dGUoKSB8fAogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuJHJlKC9eXChbXiYoKUBdK1wpLykgfHwgcGFyc2VySW5wdXQuJHJlKC9eW1wuIzpdKD89QCkvKSB8fAogICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRpdGllcy52YXJpYWJsZUN1cmx5KCk7CiAgICAgICAgICAgICAgICAgIGlmICghZSkgewogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCcoJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHYgPSB0aGlzLnNlbGVjdG9yKGZhbHNlKSkgJiYgcGFyc2VySW5wdXQuJGNoYXIoJyknKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gbmV3ICh0cmVlLlBhcmVuKSh2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCdNaXNzaW5nIGNsb3NpbmcgXCcpXCcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5FbGVtZW50KShjLCBlLCBlIGluc3RhbmNlb2YgdHJlZS5WYXJpYWJsZSwgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBDb21iaW5hdG9ycyBjb21iaW5lIGVsZW1lbnRzIHRvZ2V0aGVyLCBpbiBhIFNlbGVjdG9yLgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gQmVjYXVzZSBvdXIgcGFyc2VyIGlzbid0IHdoaXRlLXNwYWNlIHNlbnNpdGl2ZSwgc3BlY2lhbCBjYXJlCiAgICAgICAgICAgICAgLy8gaGFzIHRvIGJlIHRha2VuLCB3aGVuIHBhcnNpbmcgdGhlIGRlc2NlbmRhbnQgY29tYmluYXRvciwgYCBgLAogICAgICAgICAgICAgIC8vIGFzIGl0J3MgYW4gZW1wdHkgc3BhY2UuIFdlIGhhdmUgdG8gY2hlY2sgdGhlIHByZXZpb3VzIGNoYXJhY3RlcgogICAgICAgICAgICAgIC8vIGluIHRoZSBpbnB1dCwgdG8gc2VlIGlmIGl0J3MgYSBgIGAgY2hhcmFjdGVyLiBNb3JlIGluZm8gb24gaG93CiAgICAgICAgICAgICAgLy8gd2UgZGVhbCB3aXRoIHRoaXMgaW4gKmNvbWJpbmF0b3IuanMqLgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgY29tYmluYXRvcjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICB2YXIgYyA9IHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCk7CiAgICAgICAgICAgICAgICAgIGlmIChjID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgIHZhciBzbGFzaGVkQ29tYmluYXRvciA9IHBhcnNlcklucHV0LiRyZSgvXlwvW2Etel0rXC8vaSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoc2xhc2hlZENvbWJpbmF0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkNvbWJpbmF0b3IpKHNsYXNoZWRDb21iaW5hdG9yKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJz4nIHx8IGMgPT09ICcrJyB8fCBjID09PSAnficgfHwgYyA9PT0gJ3wnIHx8IGMgPT09ICdeJykgewogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuaSsrOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT09ICdeJyAmJiBwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpID09PSAnXicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gJ15eJzsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5pKys7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGFyc2VySW5wdXQuaXNXaGl0ZXNwYWNlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5pKys7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkNvbWJpbmF0b3IpKGMpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlcklucHV0LmlzV2hpdGVzcGFjZSgtMSkpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuQ29tYmluYXRvcikoJyAnKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuQ29tYmluYXRvcikobnVsbCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gQSBDU1MgU2VsZWN0b3IKICAgICAgICAgICAgICAvLyB3aXRoIGxlc3MgZXh0ZW5zaW9ucyBlLmcuIHRoZSBhYmlsaXR5IHRvIGV4dGVuZCBhbmQgZ3VhcmQKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vICAgICAuY2xhc3MgPiBkaXYgKyBoMQogICAgICAgICAgICAgIC8vICAgICBsaSBhOmhvdmVyCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBTZWxlY3RvcnMgYXJlIG1hZGUgb3V0IG9mIG9uZSBvciBtb3JlIEVsZW1lbnRzLCBzZWUgYWJvdmUuCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICBzZWxlY3RvcjogZnVuY3Rpb24gKGlzTGVzcykgewogICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHM7CiAgICAgICAgICAgICAgICAgIHZhciBleHRlbmRMaXN0OwogICAgICAgICAgICAgICAgICB2YXIgYzsKICAgICAgICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgICAgICAgIHZhciBhbGxFeHRlbmRzOwogICAgICAgICAgICAgICAgICB2YXIgd2hlbjsKICAgICAgICAgICAgICAgICAgdmFyIGNvbmRpdGlvbjsKICAgICAgICAgICAgICAgICAgaXNMZXNzID0gaXNMZXNzICE9PSBmYWxzZTsKICAgICAgICAgICAgICAgICAgd2hpbGUgKChpc0xlc3MgJiYgKGV4dGVuZExpc3QgPSB0aGlzLmV4dGVuZCgpKSkgfHwgKGlzTGVzcyAmJiAod2hlbiA9IHBhcnNlcklucHV0LiRzdHIoJ3doZW4nKSkpIHx8IChlID0gdGhpcy5lbGVtZW50KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAod2hlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGV4cGVjdCh0aGlzLmNvbmRpdGlvbnMsICdleHBlY3RlZCBjb25kaXRpb24nKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbmRpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCdDU1MgZ3VhcmQgY2FuIG9ubHkgYmUgdXNlZCBhdCB0aGUgZW5kIG9mIHNlbGVjdG9yJyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChleHRlbmRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEV4dGVuZHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRXh0ZW5kcyA9IGFsbEV4dGVuZHMuY29uY2F0KGV4dGVuZExpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRXh0ZW5kcyA9IGV4dGVuZExpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEV4dGVuZHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoJ0V4dGVuZCBjYW4gb25seSBiZSB1c2VkIGF0IHRoZSBlbmQgb2Ygc2VsZWN0b3InKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9IFtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJ3snIHx8IGMgPT09ICd9JyB8fCBjID09PSAnOycgfHwgYyA9PT0gJywnIHx8IGMgPT09ICcpJykgewogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cykgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5TZWxlY3RvcikoZWxlbWVudHMsIGFsbEV4dGVuZHMsIGNvbmRpdGlvbiwgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoYWxsRXh0ZW5kcykgewogICAgICAgICAgICAgICAgICAgICAgZXJyb3IoJ0V4dGVuZCBtdXN0IGJlIHVzZWQgdG8gZXh0ZW5kIGEgc2VsZWN0b3IsIGl0IGNhbm5vdCBiZSB1c2VkIG9uIGl0cyBvd24nKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgc2VsZWN0b3JzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBzOwogICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JzOwogICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuc2VsZWN0b3IoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmICghcykgewogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9ycykgewogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycy5wdXNoKHMpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzID0gW3NdOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuY29tbWVudFN0b3JlLmxlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICBpZiAocy5jb25kaXRpb24gJiYgc2VsZWN0b3JzLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiR3VhcmRzIGFyZSBvbmx5IGN1cnJlbnRseSBhbGxvd2VkIG9uIGEgc2luZ2xlIHNlbGVjdG9yLiIpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignLCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAocy5jb25kaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiR3VhcmRzIGFyZSBvbmx5IGN1cnJlbnRseSBhbGxvd2VkIG9uIGEgc2luZ2xlIHNlbGVjdG9yLiIpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuY29tbWVudFN0b3JlLmxlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yczsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGF0dHJpYnV0ZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LiRjaGFyKCdbJykpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB2YXIgZW50aXRpZXMgPSB0aGlzLmVudGl0aWVzOwogICAgICAgICAgICAgICAgICB2YXIga2V5OwogICAgICAgICAgICAgICAgICB2YXIgdmFsOwogICAgICAgICAgICAgICAgICB2YXIgb3A7CiAgICAgICAgICAgICAgICAgIGlmICghKGtleSA9IGVudGl0aWVzLnZhcmlhYmxlQ3VybHkoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgIGtleSA9IGV4cGVjdCgvXig/OltfQS1aYS16MC05LVwqXSpcfCk/KD86W19BLVphLXowLTktXXxcXC4pKy8pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIG9wID0gcGFyc2VySW5wdXQuJHJlKC9eW3x+KiReXT89Lyk7CiAgICAgICAgICAgICAgICAgIGlmIChvcCkgewogICAgICAgICAgICAgICAgICAgICAgdmFsID0gZW50aXRpZXMucXVvdGVkKCkgfHwgcGFyc2VySW5wdXQuJHJlKC9eWzAtOV0rJS8pIHx8IHBhcnNlcklucHV0LiRyZSgvXltcdy1dKy8pIHx8IGVudGl0aWVzLnZhcmlhYmxlQ3VybHkoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBleHBlY3RDaGFyKCddJyk7CiAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuQXR0cmlidXRlKShrZXksIG9wLCB2YWwpOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBUaGUgYGJsb2NrYCBydWxlIGlzIHVzZWQgYnkgYHJ1bGVzZXRgIGFuZCBgbWl4aW4uZGVmaW5pdGlvbmAuCiAgICAgICAgICAgICAgLy8gSXQncyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBgcHJpbWFyeWAgcnVsZSwgd2l0aCBhZGRlZCBge31gLgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgYmxvY2s6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQ7CiAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcigneycpICYmIChjb250ZW50ID0gdGhpcy5wcmltYXJ5KCkpICYmIHBhcnNlcklucHV0LiRjaGFyKCd9JykpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBibG9ja1J1bGVzZXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gdGhpcy5ibG9jaygpOwogICAgICAgICAgICAgICAgICBpZiAoYmxvY2spIHsKICAgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gbmV3IHRyZWUuUnVsZXNldChudWxsLCBibG9jayk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgZGV0YWNoZWRSdWxlc2V0OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBhcmdJbmZvOwogICAgICAgICAgICAgICAgICB2YXIgcGFyYW1zOwogICAgICAgICAgICAgICAgICB2YXIgdmFyaWFkaWM7CiAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRyZSgvXlsuI11cKC8pKSB7CiAgICAgICAgICAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAgICAgICAgICAqIERSIGFyZ3MgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgZm9yIGVhY2goKSBmdW5jdGlvbiwgYW5kIG5vdAogICAgICAgICAgICAgICAgICAgICAgICogeWV0IHNldHRhYmxlIGFzIGBAZHI6ICMoQGFyZykge31gCiAgICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIHNob3VsZCBiZSBkb25lIHdoZW4gRFJzIGFyZSBtZXJnZWQgd2l0aCBtaXhpbnMuCiAgICAgICAgICAgICAgICAgICAgICAgKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MtbWV0YS9pc3N1ZXMvMTYKICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAgYXJnSW5mbyA9IHRoaXMubWl4aW4uYXJncyhmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBhcmdJbmZvLmFyZ3M7CiAgICAgICAgICAgICAgICAgICAgICB2YXJpYWRpYyA9IGFyZ0luZm8udmFyaWFkaWM7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LiRjaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHZhciBibG9ja1J1bGVzZXQgPSB0aGlzLmJsb2NrUnVsZXNldCgpOwogICAgICAgICAgICAgICAgICBpZiAoYmxvY2tSdWxlc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRyZWUubWl4aW4uRGVmaW5pdGlvbihudWxsLCBwYXJhbXMsIGJsb2NrUnVsZXNldCwgbnVsbCwgdmFyaWFkaWMpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0cmVlLkRldGFjaGVkUnVsZXNldChibG9ja1J1bGVzZXQpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gZGl2LCAuY2xhc3MsIGJvZHkgPiBwIHsuLi59CiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICBydWxlc2V0OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvcnM7CiAgICAgICAgICAgICAgICAgIHZhciBydWxlczsKICAgICAgICAgICAgICAgICAgdmFyIGRlYnVnSW5mbzsKICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5kdW1wTGluZU51bWJlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgIGRlYnVnSW5mbyA9IGdldERlYnVnSW5mbyhwYXJzZXJJbnB1dC5pKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBzZWxlY3RvcnMgPSB0aGlzLnNlbGVjdG9ycygpOwogICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JzICYmIChydWxlcyA9IHRoaXMuYmxvY2soKSkpIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgdmFyIHJ1bGVzZXQgPSBuZXcgKHRyZWUuUnVsZXNldCkoc2VsZWN0b3JzLCBydWxlcywgY29udGV4dC5zdHJpY3RJbXBvcnRzKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmR1bXBMaW5lTnVtYmVycykgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzZXQuZGVidWdJbmZvID0gZGVidWdJbmZvOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVzZXQ7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGRlY2xhcmF0aW9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBuYW1lOwogICAgICAgICAgICAgICAgICB2YXIgdmFsdWU7CiAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICAgICAgICAgIHZhciBoYXNEUjsKICAgICAgICAgICAgICAgICAgdmFyIGMgPSBwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpOwogICAgICAgICAgICAgICAgICB2YXIgaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICB2YXIgbWVyZ2U7CiAgICAgICAgICAgICAgICAgIHZhciBpc1ZhcmlhYmxlOwogICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJy4nIHx8IGMgPT09ICcjJyB8fCBjID09PSAnJicgfHwgYyA9PT0gJzonKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICBuYW1lID0gdGhpcy52YXJpYWJsZSgpIHx8IHRoaXMucnVsZVByb3BlcnR5KCk7CiAgICAgICAgICAgICAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICBpc1ZhcmlhYmxlID0gdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGlzVmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZGV0YWNoZWRSdWxlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0RSID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5jb21tZW50U3RvcmUubGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIG5hbWUgcmV0dXJuZWQgYnkgdGhpcy5ydWxlUHJvcGVydHkoKSBpcyBhbHdheXMgYW4gYXJyYXkgb2YgdGhlIGZvcm06CiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gW3N0cmluZy0xLCAuLi4sIHN0cmluZy1uLCAiIl0gb3IgW3N0cmluZy0xLCAuLi4sIHN0cmluZy1uLCAiKyJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgZWFjaCBpdGVtIGlzIGEgdHJlZS5LZXl3b3JkIG9yIHRyZWUuVmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZSA9ICFpc1ZhcmlhYmxlICYmIG5hbWUubGVuZ3RoID4gMSAmJiBuYW1lLnBvcCgpLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEN1c3RvbSBwcm9wZXJ0eSB2YWx1ZXMgZ2V0IHBlcm1pc3NpdmUgcGFyc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lWzBdLnZhbHVlICYmIG5hbWVbMF0udmFsdWUuc2xpY2UoMCwgMikgPT09ICctLScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnBlcm1pc3NpdmVWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gc3RvcmUgdmFsdWVzIGFzIGFub255bW91cwogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIG5lZWQgdGhlIHZhbHVlIGxhdGVyIHdlJ2xsIHJlLXBhcnNlIGl0IGluIHJ1bGVzZXQucGFyc2VWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuYW5vbnltb3VzVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbm9ueW1vdXMgdmFsdWVzIGFic29yYiB0aGUgZW5kICc7JyB3aGljaCBpcyByZXF1aXJlZCBmb3IgdGhlbSB0byB3b3JrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuRGVjbGFyYXRpb24pKG5hbWUsIHZhbHVlLCBmYWxzZSwgbWVyZ2UsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQgPSB0aGlzLmltcG9ydGFudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1ZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzIGEgbGFzdCByZXNvcnQsIHRyeSBwZXJtaXNzaXZlVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnBlcm1pc3NpdmVWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiAodGhpcy5lbmQoKSB8fCBoYXNEUikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkRlY2xhcmF0aW9uKShuYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBtZXJnZSwgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgYW5vbnltb3VzVmFsdWU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gcGFyc2VySW5wdXQuJHJlKC9eKFteLiNAXCQrXC8nIipgKDt7fS1dKik7Lyk7CiAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5Bbm9ueW1vdXMpKG1hdGNoWzFdLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAqIFVzZWQgZm9yIGN1c3RvbSBwcm9wZXJ0aWVzLCBhdC1ydWxlcywgYW5kIHZhcmlhYmxlcyAoYXMgZmFsbGJhY2spCiAgICAgICAgICAgICAgICogUGFyc2VzIGFsbW9zdCBhbnl0aGluZyBpbnNpZGUgb2Yge30gW10gKCkgIiIgYmxvY2tzCiAgICAgICAgICAgICAgICogdW50aWwgaXQgcmVhY2hlcyBvdXRlci1tb3N0IHRva2Vucy4KICAgICAgICAgICAgICAgKgogICAgICAgICAgICAgICAqIEZpcnN0LCBpdCB3aWxsIHRyeSB0byBwYXJzZSBjb21tZW50cyBhbmQgZW50aXRpZXMgdG8gcmVhY2gKICAgICAgICAgICAgICAgKiB0aGUgZW5kLiBUaGlzIGlzIG1vc3RseSBsaWtlIHRoZSBFeHByZXNzaW9uIHBhcnNlciBleGNlcHQgbm8KICAgICAgICAgICAgICAgKiBtYXRoIGlzIGFsbG93ZWQuCiAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgcGVybWlzc2l2ZVZhbHVlOiBmdW5jdGlvbiAodW50aWxUb2tlbnMpIHsKICAgICAgICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICB2YXIgZG9uZTsKICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlOwogICAgICAgICAgICAgICAgICB2YXIgdG9rID0gdW50aWxUb2tlbnMgfHwgJzsnOwogICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RDdXJyZW50Q2hhcigpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGFyID0gcGFyc2VySW5wdXQuY3VycmVudENoYXIoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdG9rID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFyID09PSB0b2s7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rLnRlc3QoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHRlc3RDdXJyZW50Q2hhcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbXTsKICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuY29tbWVudCgpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wdXNoKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGUpOwogICAgICAgICAgICAgICAgICBkb25lID0gdGVzdEN1cnJlbnRDaGFyKCk7CiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyAodHJlZS5FeHByZXNzaW9uKSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXNlcnZlIHNwYWNlIGJlZm9yZSAkcGFyc2VVbnRpbCBhcyBpdCB3aWxsIG5vdAogICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LnByZXZDaGFyKCkgPT09ICcgJykgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyB0cmVlLkFub255bW91cygnICcsIGluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlcklucHV0LiRwYXJzZVVudGlsKHRvayk7CiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiRXhwZWN0ZWQgJyIgKyB2YWx1ZSArICInIiwgJ1BhcnNlJyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxICYmIHZhbHVlWzBdID09PSAnICcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRyZWUuQW5vbnltb3VzKCcnLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHZvaWQgMDsKICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB2YWx1ZVtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmVhdCBhY3R1YWwgcXVvdGVzIGFzIG5vcm1hbCBxdW90ZWQgdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyB0cmVlLlF1b3RlZChpdGVtWzBdLCBpdGVtWzFdLCB0cnVlLCBpbmRleCwgZmlsZUluZm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSB2YWx1ZS5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS50cmltKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHJlYXQgbGlrZSBxdW90ZWQgdmFsdWVzLCBidXQgcmVwbGFjZSB2YXJzIGxpa2UgdW5xdW90ZWQgZXhwcmVzc2lvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHF1b3RlID0gbmV3IHRyZWUuUXVvdGVkKCdcJycsIGl0ZW0sIHRydWUsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlLnZhcmlhYmxlUmVnZXggPSAvQChbXHctXSspL2c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlLnByb3BSZWdleCA9IC9cJChbXHctXSspL2c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHF1b3RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdHJlZS5FeHByZXNzaW9uKHJlc3VsdCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBBbiBAaW1wb3J0IGF0cnVsZQogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gICAgIEBpbXBvcnQgImxpYiI7CiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBEZXBlbmRpbmcgb24gb3VyIGVudmlyb25tZW50LCBpbXBvcnRpbmcgaXMgZG9uZSBkaWZmZXJlbnRseToKICAgICAgICAgICAgICAvLyBJbiB0aGUgYnJvd3NlciwgaXQncyBhbiBYSFIgcmVxdWVzdCwgaW4gTm9kZSwgaXQgd291bGQgYmUgYQogICAgICAgICAgICAgIC8vIGZpbGUtc3lzdGVtIG9wZXJhdGlvbi4gVGhlIGZ1bmN0aW9uIHVzZWQgZm9yIGltcG9ydGluZyBpcwogICAgICAgICAgICAgIC8vIHN0b3JlZCBpbiBgaW1wb3J0YCwgd2hpY2ggd2UgcGFzcyB0byB0aGUgSW1wb3J0IGNvbnN0cnVjdG9yLgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgJ2ltcG9ydCc6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIHBhdGg7CiAgICAgICAgICAgICAgICAgIHZhciBmZWF0dXJlczsKICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHBhcnNlcklucHV0LiRyZSgvXkBpbXBvcnQ/XHMrLyk7CiAgICAgICAgICAgICAgICAgIGlmIChkaXIpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gKGRpciA/IHRoaXMuaW1wb3J0T3B0aW9ucygpIDogbnVsbCkgfHwge307CiAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBhdGggPSB0aGlzLmVudGl0aWVzLnF1b3RlZCgpIHx8IHRoaXMuZW50aXRpZXMudXJsKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSB0aGlzLm1lZGlhRmVhdHVyZXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LiRjaGFyKCc7JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuaSA9IGluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcignbWlzc2luZyBzZW1pLWNvbG9uIG9yIHVucmVjb2duaXNlZCBtZWRpYSBmZWF0dXJlcyBvbiBpbXBvcnQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcyAmJiBuZXcgKHRyZWUuVmFsdWUpKGZlYXR1cmVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkltcG9ydCkocGF0aCwgZmVhdHVyZXMsIG9wdGlvbnMsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5pID0gaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoJ21hbGZvcm1lZCBpbXBvcnQgc3RhdGVtZW50Jyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGltcG9ydE9wdGlvbnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIG87CiAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0ge307CiAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25OYW1lOwogICAgICAgICAgICAgICAgICB2YXIgdmFsdWU7CiAgICAgICAgICAgICAgICAgIC8vIGxpc3Qgb2Ygb3B0aW9ucywgc3Vycm91bmRlZCBieSBwYXJlbnMKICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignKCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5pbXBvcnRPcHRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZSA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob3B0aW9uTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjc3MnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZSA9ICdsZXNzJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb25jZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25OYW1lID0gJ211bHRpcGxlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1tvcHRpb25OYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQuJGNoYXIoJywnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKG8pOwogICAgICAgICAgICAgICAgICBleHBlY3RDaGFyKCcpJyk7CiAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgaW1wb3J0T3B0aW9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBvcHQgPSBwYXJzZXJJbnB1dC4kcmUoL14obGVzc3xjc3N8bXVsdGlwbGV8b25jZXxpbmxpbmV8cmVmZXJlbmNlfG9wdGlvbmFsKS8pOwogICAgICAgICAgICAgICAgICBpZiAob3B0KSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0WzFdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBtZWRpYUZlYXR1cmU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGVudGl0aWVzID0gdGhpcy5lbnRpdGllczsKICAgICAgICAgICAgICAgICAgdmFyIG5vZGVzID0gW107CiAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICB2YXIgcDsKICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICBlID0gZW50aXRpZXMua2V5d29yZCgpIHx8IGVudGl0aWVzLnZhcmlhYmxlKCkgfHwgZW50aXRpZXMubWl4aW5Mb29rdXAoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChlKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlcklucHV0LiRjaGFyKCcoJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdGhpcy5wcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgJiYgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChuZXcgKHRyZWUuUGFyZW4pKG5ldyAodHJlZS5EZWNsYXJhdGlvbikocCwgZSwgbnVsbCwgbnVsbCwgcGFyc2VySW5wdXQuaSwgZmlsZUluZm8sIHRydWUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChuZXcgKHRyZWUuUGFyZW4pKGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCdiYWRseSBmb3JtZWQgbWVkaWEgZmVhdHVyZSBkZWZpbml0aW9uJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCdNaXNzaW5nIGNsb3NpbmcgXCcpXCcnLCAnUGFyc2UnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGUpOwogICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRyZWUuRXhwcmVzc2lvbikobm9kZXMpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBtZWRpYUZlYXR1cmVzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBlbnRpdGllcyA9IHRoaXMuZW50aXRpZXM7CiAgICAgICAgICAgICAgICAgIHZhciBmZWF0dXJlcyA9IFtdOwogICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMubWVkaWFGZWF0dXJlKCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignLCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlbnRpdGllcy52YXJpYWJsZSgpIHx8IGVudGl0aWVzLm1peGluTG9va3VwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMucHVzaChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignLCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoZSk7CiAgICAgICAgICAgICAgICAgIHJldHVybiBmZWF0dXJlcy5sZW5ndGggPiAwID8gZmVhdHVyZXMgOiBudWxsOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgbWVkaWE6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGZlYXR1cmVzOwogICAgICAgICAgICAgICAgICB2YXIgcnVsZXM7CiAgICAgICAgICAgICAgICAgIHZhciBtZWRpYTsKICAgICAgICAgICAgICAgICAgdmFyIGRlYnVnSW5mbzsKICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZHVtcExpbmVOdW1iZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z0luZm8gPSBnZXREZWJ1Z0luZm8oaW5kZXgpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRzdHIoJ0BtZWRpYScpKSB7CiAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyA9IHRoaXMubWVkaWFGZWF0dXJlcygpOwogICAgICAgICAgICAgICAgICAgICAgcnVsZXMgPSB0aGlzLmJsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoJ21lZGlhIGRlZmluaXRpb25zIHJlcXVpcmUgYmxvY2sgc3RhdGVtZW50cyBhZnRlciBhbnkgZmVhdHVyZXMnKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgbWVkaWEgPSBuZXcgKHRyZWUuTWVkaWEpKHJ1bGVzLCBmZWF0dXJlcywgaW5kZXgsIGZpbGVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmR1bXBMaW5lTnVtYmVycykgewogICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhLmRlYnVnSW5mbyA9IGRlYnVnSW5mbzsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZWRpYTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIEEgQHBsdWdpbiBkaXJlY3RpdmUsIHVzZWQgdG8gaW1wb3J0IHBsdWdpbnMgZHluYW1pY2FsbHkuCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyAgICAgQHBsdWdpbiAoYXJncykgImxpYiI7CiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICBwbHVnaW46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIHBhdGg7CiAgICAgICAgICAgICAgICAgIHZhciBhcmdzOwogICAgICAgICAgICAgICAgICB2YXIgb3B0aW9uczsKICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHBhcnNlcklucHV0LiRyZSgvXkBwbHVnaW4/XHMrLyk7CiAgICAgICAgICAgICAgICAgIGlmIChkaXIpIHsKICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSB0aGlzLnBsdWdpbkFyZ3MoKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luQXJnczogYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQbHVnaW46IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHsgaXNQbHVnaW46IHRydWUgfTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICgocGF0aCA9IHRoaXMuZW50aXRpZXMucXVvdGVkKCkgfHwgdGhpcy5lbnRpdGllcy51cmwoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LiRjaGFyKCc7JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuaSA9IGluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcignbWlzc2luZyBzZW1pLWNvbG9uIG9uIEBwbHVnaW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5JbXBvcnQpKHBhdGgsIG51bGwsIG9wdGlvbnMsIGluZGV4LCBmaWxlSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5pID0gaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoJ21hbGZvcm1lZCBAcGx1Z2luIHN0YXRlbWVudCcpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBwbHVnaW5BcmdzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIC8vIGxpc3Qgb2Ygb3B0aW9ucywgc3Vycm91bmRlZCBieSBwYXJlbnMKICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuc2F2ZSgpOwogICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlcklucHV0LiRjaGFyKCcoJykpIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gcGFyc2VySW5wdXQuJHJlKC9eXHMqKFteXCk7XSspXClccyovKTsKICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMV0pIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbMV0udHJpbSgpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gQSBDU1MgQXRSdWxlCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyAgICAgQGNoYXJzZXQgInV0Zi04IjsKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIGF0cnVsZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICB2YXIgbmFtZTsKICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlOwogICAgICAgICAgICAgICAgICB2YXIgcnVsZXM7CiAgICAgICAgICAgICAgICAgIHZhciBub25WZW5kb3JTcGVjaWZpY05hbWU7CiAgICAgICAgICAgICAgICAgIHZhciBoYXNJZGVudGlmaWVyOwogICAgICAgICAgICAgICAgICB2YXIgaGFzRXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICAgdmFyIGhhc1Vua25vd247CiAgICAgICAgICAgICAgICAgIHZhciBoYXNCbG9jayA9IHRydWU7CiAgICAgICAgICAgICAgICAgIHZhciBpc1Jvb3RlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC5jdXJyZW50Q2hhcigpICE9PSAnQCcpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXNbJ2ltcG9ydCddKCkgfHwgdGhpcy5wbHVnaW4oKSB8fCB0aGlzLm1lZGlhKCk7CiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgbmFtZSA9IHBhcnNlcklucHV0LiRyZSgvXkBbYS16LV0rLyk7CiAgICAgICAgICAgICAgICAgIGlmICghbmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIG5vblZlbmRvclNwZWNpZmljTmFtZSA9IG5hbWU7CiAgICAgICAgICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgxKSA9PSAnLScgJiYgbmFtZS5pbmRleE9mKCctJywgMikgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICBub25WZW5kb3JTcGVjaWZpY05hbWUgPSAiQCIgKyBuYW1lLnNsaWNlKG5hbWUuaW5kZXhPZignLScsIDIpICsgMSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgc3dpdGNoIChub25WZW5kb3JTcGVjaWZpY05hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0BjaGFyc2V0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNCbG9jayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQG5hbWVzcGFjZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXhwcmVzc2lvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmxvY2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0BrZXlmcmFtZXMnOgogICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQGNvdW50ZXItc3R5bGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0lkZW50aWZpZXIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQGRvY3VtZW50JzoKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0BzdXBwb3J0cyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVW5rbm93biA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSb290ZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVW5rbm93biA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuY29tbWVudFN0b3JlLmxlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgIGlmIChoYXNJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoImV4cGVjdGVkICIgKyBuYW1lICsgIiBpZGVudGlmaWVyIik7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzRXhwcmVzc2lvbikgewogICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmV4cHJlc3Npb24oKTsKICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiZXhwZWN0ZWQgIiArIG5hbWUgKyAiIGV4cHJlc3Npb24iKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVbmtub3duKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMucGVybWlzc2l2ZVZhbHVlKC9eW3s7XS8pOwogICAgICAgICAgICAgICAgICAgICAgaGFzQmxvY2sgPSAocGFyc2VySW5wdXQuY3VycmVudENoYXIoKSA9PT0gJ3snKTsKICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0Jsb2NrICYmIHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgIT09ICc7JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihuYW1lICsgIiBydWxlIGlzIG1pc3NpbmcgYmxvY2sgb3IgZW5kaW5nIHNlbWktY29sb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdmFsdWUudmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGhhc0Jsb2NrKSB7CiAgICAgICAgICAgICAgICAgICAgICBydWxlcyA9IHRoaXMuYmxvY2tSdWxlc2V0KCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVzIHx8ICghaGFzQmxvY2sgJiYgdmFsdWUgJiYgcGFyc2VySW5wdXQuJGNoYXIoJzsnKSkpIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAodHJlZS5BdFJ1bGUpKG5hbWUsIHZhbHVlLCBydWxlcywgaW5kZXgsIGZpbGVJbmZvLCBjb250ZXh0LmR1bXBMaW5lTnVtYmVycyA/IGdldERlYnVnSW5mbyhpbmRleCkgOiBudWxsLCBpc1Jvb3RlZCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgnYXQtcnVsZSBvcHRpb25zIG5vdCByZWNvZ25pc2VkJyk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgIC8vIEEgVmFsdWUgaXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBFeHByZXNzaW9ucwogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gICAgIGZvbnQtZmFtaWx5OiBCYXNrZXJ2aWxsZSwgR2VvcmdpYSwgc2VyaWY7CiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBJbiBhIFJ1bGUsIGEgVmFsdWUgcmVwcmVzZW50cyBldmVyeXRoaW5nIGFmdGVyIHRoZSBgOmAsCiAgICAgICAgICAgICAgLy8gYW5kIGJlZm9yZSB0aGUgYDtgLgogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGU7CiAgICAgICAgICAgICAgICAgIHZhciBleHByZXNzaW9ucyA9IFtdOwogICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5leHByZXNzaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignLCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoZSk7CiAgICAgICAgICAgICAgICAgIGlmIChleHByZXNzaW9ucy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLlZhbHVlKShleHByZXNzaW9ucywgaW5kZXgpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBpbXBvcnRhbnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LmN1cnJlbnRDaGFyKCkgPT09ICchJykgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlcklucHV0LiRyZSgvXiEgKmltcG9ydGFudC8pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBzdWI6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgICAgICAgIHZhciBlOwogICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignKCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5hZGRpdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKGEgJiYgcGFyc2VySW5wdXQuJGNoYXIoJyknKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgKHRyZWUuRXhwcmVzc2lvbikoW2FdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBlLnBhcmVucyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCdFeHBlY3RlZCBcJylcJycpOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIG11bHRpcGxpY2F0aW9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBtOwogICAgICAgICAgICAgICAgICB2YXIgYTsKICAgICAgICAgICAgICAgICAgdmFyIG9wOwogICAgICAgICAgICAgICAgICB2YXIgb3BlcmF0aW9uOwogICAgICAgICAgICAgICAgICB2YXIgaXNTcGFjZWQ7CiAgICAgICAgICAgICAgICAgIG0gPSB0aGlzLm9wZXJhbmQoKTsKICAgICAgICAgICAgICAgICAgaWYgKG0pIHsKICAgICAgICAgICAgICAgICAgICAgIGlzU3BhY2VkID0gcGFyc2VySW5wdXQuaXNXaGl0ZXNwYWNlKC0xKTsKICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LnBlZWsoL15cL1sqXC9dLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IHBhcnNlcklucHV0LiRjaGFyKCcvJykgfHwgcGFyc2VySW5wdXQuJGNoYXIoJyonKSB8fCBwYXJzZXJJbnB1dC4kc3RyKCcuLycpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdGhpcy5vcGVyYW5kKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIG0ucGFyZW5zSW5PcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYS5wYXJlbnNJbk9wID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBuZXcgKHRyZWUuT3BlcmF0aW9uKShvcCwgW29wZXJhdGlvbiB8fCBtLCBhXSwgaXNTcGFjZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3BhY2VkID0gcGFyc2VySW5wdXQuaXNXaGl0ZXNwYWNlKC0xKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb24gfHwgbTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgYWRkaXRpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIG07CiAgICAgICAgICAgICAgICAgIHZhciBhOwogICAgICAgICAgICAgICAgICB2YXIgb3A7CiAgICAgICAgICAgICAgICAgIHZhciBvcGVyYXRpb247CiAgICAgICAgICAgICAgICAgIHZhciBpc1NwYWNlZDsKICAgICAgICAgICAgICAgICAgbSA9IHRoaXMubXVsdGlwbGljYXRpb24oKTsKICAgICAgICAgICAgICAgICAgaWYgKG0pIHsKICAgICAgICAgICAgICAgICAgICAgIGlzU3BhY2VkID0gcGFyc2VySW5wdXQuaXNXaGl0ZXNwYWNlKC0xKTsKICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBwYXJzZXJJbnB1dC4kcmUoL15bLStdXHMrLykgfHwgKCFpc1NwYWNlZCAmJiAocGFyc2VySW5wdXQuJGNoYXIoJysnKSB8fCBwYXJzZXJJbnB1dC4kY2hhcignLScpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMubXVsdGlwbGljYXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIG0ucGFyZW5zSW5PcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYS5wYXJlbnNJbk9wID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBuZXcgKHRyZWUuT3BlcmF0aW9uKShvcCwgW29wZXJhdGlvbiB8fCBtLCBhXSwgaXNTcGFjZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3BhY2VkID0gcGFyc2VySW5wdXQuaXNXaGl0ZXNwYWNlKC0xKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb24gfHwgbTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgY29uZGl0aW9uczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICB2YXIgYTsKICAgICAgICAgICAgICAgICAgdmFyIGI7CiAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHBhcnNlcklucHV0Lmk7CiAgICAgICAgICAgICAgICAgIHZhciBjb25kaXRpb247CiAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLmNvbmRpdGlvbih0cnVlKTsKICAgICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC5wZWVrKC9eLFxzKihub3RccyopP1woLykgfHwgIXBhcnNlcklucHV0LiRjaGFyKCcsJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLmNvbmRpdGlvbih0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IG5ldyAodHJlZS5Db25kaXRpb24pKCdvcicsIGNvbmRpdGlvbiB8fCBhLCBiLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uIHx8IGE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIGNvbmRpdGlvbjogZnVuY3Rpb24gKG5lZWRzUGFyZW5zKSB7CiAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQ7CiAgICAgICAgICAgICAgICAgIHZhciBsb2dpY2FsOwogICAgICAgICAgICAgICAgICB2YXIgbmV4dDsKICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IoKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VySW5wdXQuJHN0cignb3InKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmNvbmRpdGlvbkFuZChuZWVkc1BhcmVucyk7CiAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgbG9naWNhbCA9IG9yKCk7CiAgICAgICAgICAgICAgICAgIGlmIChsb2dpY2FsKSB7CiAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gdGhpcy5jb25kaXRpb24obmVlZHNQYXJlbnMpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgKHRyZWUuQ29uZGl0aW9uKShsb2dpY2FsLCByZXN1bHQsIG5leHQpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBjb25kaXRpb25BbmQ6IGZ1bmN0aW9uIChuZWVkc1BhcmVucykgewogICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgICAgICAgICAgICB2YXIgbG9naWNhbDsKICAgICAgICAgICAgICAgICAgdmFyIG5leHQ7CiAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5zaWRlQ29uZGl0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmQgPSBzZWxmLm5lZ2F0ZWRDb25kaXRpb24obmVlZHNQYXJlbnMpIHx8IHNlbGYucGFyZW50aGVzaXNDb25kaXRpb24obmVlZHNQYXJlbnMpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kICYmICFuZWVkc1BhcmVucykgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmF0b21pY0NvbmRpdGlvbihuZWVkc1BhcmVucyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uZDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhbmQoKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VySW5wdXQuJHN0cignYW5kJyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5zaWRlQ29uZGl0aW9uKCk7CiAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgbG9naWNhbCA9IGFuZCgpOwogICAgICAgICAgICAgICAgICBpZiAobG9naWNhbCkgewogICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHRoaXMuY29uZGl0aW9uQW5kKG5lZWRzUGFyZW5zKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3ICh0cmVlLkNvbmRpdGlvbikobG9naWNhbCwgcmVzdWx0LCBuZXh0KTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgbmVnYXRlZENvbmRpdGlvbjogZnVuY3Rpb24gKG5lZWRzUGFyZW5zKSB7CiAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kc3RyKCdub3QnKSkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMucGFyZW50aGVzaXNDb25kaXRpb24obmVlZHNQYXJlbnMpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uZWdhdGUgPSAhcmVzdWx0Lm5lZ2F0ZTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHBhcmVudGhlc2lzQ29uZGl0aW9uOiBmdW5jdGlvbiAobmVlZHNQYXJlbnMpIHsKICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdHJ5Q29uZGl0aW9uRm9sbG93ZWRCeVBhcmVudGhlc2lzKG1lKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgYm9keTsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBtZS5jb25kaXRpb24obmVlZHNQYXJlbnMpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQuJGNoYXIoJyknKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBib2R5OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHZhciBib2R5OwogICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQuJHN0cignKCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYm9keSA9IHRyeUNvbmRpdGlvbkZvbGxvd2VkQnlQYXJlbnRoZXNpcyh0aGlzKTsKICAgICAgICAgICAgICAgICAgaWYgKGJvZHkpIHsKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LmZvcmdldCgpOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvZHk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgYm9keSA9IHRoaXMuYXRvbWljQ29uZGl0aW9uKG5lZWRzUGFyZW5zKTsKICAgICAgICAgICAgICAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXJJbnB1dC4kY2hhcignKScpKSB7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5yZXN0b3JlKCJleHBlY3RlZCAnKScgZ290ICciICsgcGFyc2VySW5wdXQuY3VycmVudENoYXIoKSArICInIik7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgIHJldHVybiBib2R5OwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgYXRvbWljQ29uZGl0aW9uOiBmdW5jdGlvbiAobmVlZHNQYXJlbnMpIHsKICAgICAgICAgICAgICAgICAgdmFyIGVudGl0aWVzID0gdGhpcy5lbnRpdGllczsKICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VySW5wdXQuaTsKICAgICAgICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgICAgICAgIHZhciBiOwogICAgICAgICAgICAgICAgICB2YXIgYzsKICAgICAgICAgICAgICAgICAgdmFyIG9wOwogICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjb25kKCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkaXRpb24oKSB8fCBlbnRpdGllcy5rZXl3b3JkKCkgfHwgZW50aXRpZXMucXVvdGVkKCkgfHwgZW50aXRpZXMubWl4aW5Mb29rdXAoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBjb25kID0gY29uZC5iaW5kKHRoaXMpOwogICAgICAgICAgICAgICAgICBhID0gY29uZCgpOwogICAgICAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCc+JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQuJGNoYXIoJz0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICc+PSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICc+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJzZXJJbnB1dC4kY2hhcignPCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlcklucHV0LiRjaGFyKCc9JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSAnPD0nOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSAnPCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VySW5wdXQuJGNoYXIoJz0nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXJJbnB1dC4kY2hhcignPicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gJz0+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VySW5wdXQuJGNoYXIoJzwnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICc9PCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9ICc9JzsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAob3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY29uZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBuZXcgKHRyZWUuQ29uZGl0aW9uKShvcCwgYSwgYiwgaW5kZXgsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCdleHBlY3RlZCBleHByZXNzaW9uJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG5ldyAodHJlZS5Db25kaXRpb24pKCc9JywgYSwgbmV3ICh0cmVlLktleXdvcmQpKCd0cnVlJyksIGluZGV4LCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYzsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBBbiBvcGVyYW5kIGlzIGFueXRoaW5nIHRoYXQgY2FuIGJlIHBhcnQgb2YgYW4gb3BlcmF0aW9uLAogICAgICAgICAgICAgIC8vIHN1Y2ggYXMgYSBDb2xvciwgb3IgYSBWYXJpYWJsZQogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgb3BlcmFuZDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICB2YXIgZW50aXRpZXMgPSB0aGlzLmVudGl0aWVzOwogICAgICAgICAgICAgICAgICB2YXIgbmVnYXRlOwogICAgICAgICAgICAgICAgICBpZiAocGFyc2VySW5wdXQucGVlaygvXi1bQFwkXChdLykpIHsKICAgICAgICAgICAgICAgICAgICAgIG5lZ2F0ZSA9IHBhcnNlcklucHV0LiRjaGFyKCctJyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgdmFyIG8gPSB0aGlzLnN1YigpIHx8IGVudGl0aWVzLmRpbWVuc2lvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICBlbnRpdGllcy5jb2xvcigpIHx8IGVudGl0aWVzLnZhcmlhYmxlKCkgfHwKICAgICAgICAgICAgICAgICAgICAgIGVudGl0aWVzLnByb3BlcnR5KCkgfHwgZW50aXRpZXMuY2FsbCgpIHx8CiAgICAgICAgICAgICAgICAgICAgICBlbnRpdGllcy5xdW90ZWQodHJ1ZSkgfHwgZW50aXRpZXMuY29sb3JLZXl3b3JkKCkgfHwKICAgICAgICAgICAgICAgICAgICAgIGVudGl0aWVzLm1peGluTG9va3VwKCk7CiAgICAgICAgICAgICAgICAgIGlmIChuZWdhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgIG8ucGFyZW5zSW5PcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICBvID0gbmV3ICh0cmVlLk5lZ2F0aXZlKShvKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gbzsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gRXhwcmVzc2lvbnMgZWl0aGVyIHJlcHJlc2VudCBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucywKICAgICAgICAgICAgICAvLyBvciB3aGl0ZS1zcGFjZSBkZWxpbWl0ZWQgRW50aXRpZXMuCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyAgICAgMXB4IHNvbGlkIGJsYWNrCiAgICAgICAgICAgICAgLy8gICAgIEB2YXIgKiAyCiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICBleHByZXNzaW9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBlbnRpdGllcyA9IFtdOwogICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgdmFyIGRlbGltOwogICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5jb21tZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0aWVzLnB1c2goZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5hZGRpdGlvbigpIHx8IHRoaXMuZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIHRyZWUuQ29tbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdGllcy5wdXNoKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wZXJhdGlvbnMgZG8gbm90IGFsbG93IGtleXdvcmQgIi8iIGRpbWVuc2lvbiAoZS5nLiBzbWFsbC8yMHB4KSBzbyB3ZSBzdXBwb3J0IHRoYXQgaGVyZQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VySW5wdXQucGVlaygvXlwvW1wvKl0vKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbSA9IHBhcnNlcklucHV0LiRjaGFyKCcvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWxpbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXRpZXMucHVzaChuZXcgKHRyZWUuQW5vbnltb3VzKShkZWxpbSwgaW5kZXgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoZSk7CiAgICAgICAgICAgICAgICAgIGlmIChlbnRpdGllcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICh0cmVlLkV4cHJlc3Npb24pKGVudGl0aWVzKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgcHJvcGVydHk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBwYXJzZXJJbnB1dC4kcmUoL14oXCo/LT9bX2EtekEtWjAtOS1dKylccyo6Lyk7CiAgICAgICAgICAgICAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZVsxXTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgcnVsZVByb3BlcnR5OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gW107CiAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IFtdOwogICAgICAgICAgICAgICAgICB2YXIgczsKICAgICAgICAgICAgICAgICAgdmFyIGs7CiAgICAgICAgICAgICAgICAgIHBhcnNlcklucHV0LnNhdmUoKTsKICAgICAgICAgICAgICAgICAgdmFyIHNpbXBsZVByb3BlcnR5ID0gcGFyc2VySW5wdXQuJHJlKC9eKFtfYS16QS1aMC05LV0rKVxzKjovKTsKICAgICAgICAgICAgICAgICAgaWYgKHNpbXBsZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gW25ldyAodHJlZS5LZXl3b3JkKShzaW1wbGVQcm9wZXJ0eVsxXSldOwogICAgICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQuZm9yZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBmdW5jdGlvbiBtYXRjaChyZSkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBwYXJzZXJJbnB1dC5pOwogICAgICAgICAgICAgICAgICAgICAgdmFyIGNodW5rID0gcGFyc2VySW5wdXQuJHJlKHJlKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjaHVuaykgewogICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LnB1c2goaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUucHVzaChjaHVua1sxXSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgbWF0Y2goL14oXCo/KS8pOwogICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCgvXigoPzpbXHctXSspfCg/OltAXCRdXHtbXHctXStcfSkpLykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAoKG5hbWUubGVuZ3RoID4gMSkgJiYgbWF0Y2goL14oKD86XCtffFwrKT8pXHMqOi8pKSB7CiAgICAgICAgICAgICAgICAgICAgICBwYXJzZXJJbnB1dC5mb3JnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgIC8vIGF0IGxhc3QsIHdlIGhhdmUgdGhlIGNvbXBsZXRlIG1hdGNoIG5vdy4gbW92ZSBmb3J3YXJkLAogICAgICAgICAgICAgICAgICAgICAgLy8gY29udmVydCBuYW1lIHBhcnRpY2xlcyB0byB0cmVlIG9iamVjdHMgYW5kIHJldHVybjoKICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lWzBdID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleC5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG5hbWUubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbmFtZVtrXTsKICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lW2tdID0gKHMuY2hhckF0KDApICE9PSAnQCcgJiYgcy5jaGFyQXQoMCkgIT09ICckJykgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgKHRyZWUuS2V5d29yZCkocykgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocy5jaGFyQXQoMCkgPT09ICdAJyA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgKHRyZWUuVmFyaWFibGUpKCJAIiArIHMuc2xpY2UoMiwgLTEpLCBpbmRleFtrXSwgZmlsZUluZm8pIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyAodHJlZS5Qcm9wZXJ0eSkoIiQiICsgcy5zbGljZSgyLCAtMSksIGluZGV4W2tdLCBmaWxlSW5mbykpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcGFyc2VySW5wdXQucmVzdG9yZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfTsKICB9OwogIFBhcnNlci5zZXJpYWxpemVWYXJzID0gZnVuY3Rpb24gKHZhcnMpIHsKICAgICAgdmFyIHMgPSAnJzsKICAgICAgZm9yICh2YXIgbmFtZV8xIGluIHZhcnMpIHsKICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh2YXJzLCBuYW1lXzEpKSB7CiAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdmFyc1tuYW1lXzFdOwogICAgICAgICAgICAgIHMgKz0gKChuYW1lXzFbMF0gPT09ICdAJykgPyAnJyA6ICdAJykgKyBuYW1lXzEgKyAiOiAiICsgdmFsdWUgKyAoKFN0cmluZyh2YWx1ZSkuc2xpY2UoLTEpID09PSAnOycpID8gJycgOiAnOycpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBzOwogIH07CgogIGZ1bmN0aW9uIGJvb2xlYW4oY29uZGl0aW9uKSB7CiAgICAgIHJldHVybiBjb25kaXRpb24gPyBLZXl3b3JkLlRydWUgOiBLZXl3b3JkLkZhbHNlOwogIH0KICAvKioKICAgKiBGdW5jdGlvbnMgd2l0aCBldmFsQXJncyBzZXQgdG8gZmFsc2UgYXJlIHNlbnQgY29udGV4dAogICAqIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4KICAgKi8KICBmdW5jdGlvbiBJZihjb250ZXh0LCBjb25kaXRpb24sIHRydWVWYWx1ZSwgZmFsc2VWYWx1ZSkgewogICAgICByZXR1cm4gY29uZGl0aW9uLmV2YWwoY29udGV4dCkgPyB0cnVlVmFsdWUuZXZhbChjb250ZXh0KQogICAgICAgICAgOiAoZmFsc2VWYWx1ZSA/IGZhbHNlVmFsdWUuZXZhbChjb250ZXh0KSA6IG5ldyBBbm9ueW1vdXMpOwogIH0KICBJZi5ldmFsQXJncyA9IGZhbHNlOwogIHZhciBib29sZWFuJDEgPSB7IGJvb2xlYW46IGJvb2xlYW4sICdpZic6IElmIH07CgogIHZhciBjb2xvckZ1bmN0aW9uczsKICBmdW5jdGlvbiBjbGFtcCQxKHZhbCkgewogICAgICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdmFsKSk7CiAgfQogIGZ1bmN0aW9uIGhzbGEob3JpZ0NvbG9yLCBoc2wpIHsKICAgICAgdmFyIGNvbG9yID0gY29sb3JGdW5jdGlvbnMuaHNsYShoc2wuaCwgaHNsLnMsIGhzbC5sLCBoc2wuYSk7CiAgICAgIGlmIChjb2xvcikgewogICAgICAgICAgaWYgKG9yaWdDb2xvci52YWx1ZSAmJgogICAgICAgICAgICAgIC9eKHJnYnxoc2wpLy50ZXN0KG9yaWdDb2xvci52YWx1ZSkpIHsKICAgICAgICAgICAgICBjb2xvci52YWx1ZSA9IG9yaWdDb2xvci52YWx1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGNvbG9yLnZhbHVlID0gJ3JnYic7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgIH0KICB9CiAgZnVuY3Rpb24gdG9IU0woY29sb3IpIHsKICAgICAgaWYgKGNvbG9yLnRvSFNMKSB7CiAgICAgICAgICByZXR1cm4gY29sb3IudG9IU0woKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgY2Fubm90IGJlIGV2YWx1YXRlZCB0byBhIGNvbG9yJyk7CiAgICAgIH0KICB9CiAgZnVuY3Rpb24gdG9IU1YoY29sb3IpIHsKICAgICAgaWYgKGNvbG9yLnRvSFNWKSB7CiAgICAgICAgICByZXR1cm4gY29sb3IudG9IU1YoKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgY2Fubm90IGJlIGV2YWx1YXRlZCB0byBhIGNvbG9yJyk7CiAgICAgIH0KICB9CiAgZnVuY3Rpb24gbnVtYmVyKG4pIHsKICAgICAgaWYgKG4gaW5zdGFuY2VvZiBEaW1lbnNpb24pIHsKICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG4udW5pdC5pcygnJScpID8gbi52YWx1ZSAvIDEwMCA6IG4udmFsdWUpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHR5cGVvZiBuID09PSAnbnVtYmVyJykgewogICAgICAgICAgcmV0dXJuIG47CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICB0aHJvdyB7CiAgICAgICAgICAgICAgdHlwZTogJ0FyZ3VtZW50JywKICAgICAgICAgICAgICBtZXNzYWdlOiAnY29sb3IgZnVuY3Rpb25zIHRha2UgbnVtYmVycyBhcyBwYXJhbWV0ZXJzJwogICAgICAgICAgfTsKICAgICAgfQogIH0KICBmdW5jdGlvbiBzY2FsZWQobiwgc2l6ZSkgewogICAgICBpZiAobiBpbnN0YW5jZW9mIERpbWVuc2lvbiAmJiBuLnVuaXQuaXMoJyUnKSkgewogICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobi52YWx1ZSAqIHNpemUgLyAxMDApOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgcmV0dXJuIG51bWJlcihuKTsKICAgICAgfQogIH0KICBjb2xvckZ1bmN0aW9ucyA9IHsKICAgICAgcmdiOiBmdW5jdGlvbiAociwgZywgYikgewogICAgICAgICAgdmFyIGNvbG9yID0gY29sb3JGdW5jdGlvbnMucmdiYShyLCBnLCBiLCAxLjApOwogICAgICAgICAgaWYgKGNvbG9yKSB7CiAgICAgICAgICAgICAgY29sb3IudmFsdWUgPSAncmdiJzsKICAgICAgICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgICAgICB9CiAgICAgIH0sCiAgICAgIHJnYmE6IGZ1bmN0aW9uIChyLCBnLCBiLCBhKSB7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIGlmIChyIGluc3RhbmNlb2YgQ29sb3IpIHsKICAgICAgICAgICAgICAgICAgaWYgKGcpIHsKICAgICAgICAgICAgICAgICAgICAgIGEgPSBudW1iZXIoZyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBhID0gci5hbHBoYTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbG9yKHIucmdiLCBhLCAncmdiYScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgcmdiID0gW3IsIGcsIGJdLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gc2NhbGVkKGMsIDI1NSk7IH0pOwogICAgICAgICAgICAgIGEgPSBudW1iZXIoYSk7CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvcihyZ2IsIGEsICdyZ2JhJyk7CiAgICAgICAgICB9CiAgICAgICAgICBjYXRjaCAoZSkgeyB9CiAgICAgIH0sCiAgICAgIGhzbDogZnVuY3Rpb24gKGgsIHMsIGwpIHsKICAgICAgICAgIHZhciBjb2xvciA9IGNvbG9yRnVuY3Rpb25zLmhzbGEoaCwgcywgbCwgMS4wKTsKICAgICAgICAgIGlmIChjb2xvcikgewogICAgICAgICAgICAgIGNvbG9yLnZhbHVlID0gJ2hzbCc7CiAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgICAgICAgfQogICAgICB9LAogICAgICBoc2xhOiBmdW5jdGlvbiAoaCwgcywgbCwgYSkgewogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBpZiAoaCBpbnN0YW5jZW9mIENvbG9yKSB7CiAgICAgICAgICAgICAgICAgIGlmIChzKSB7CiAgICAgICAgICAgICAgICAgICAgICBhID0gbnVtYmVyKHMpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgYSA9IGguYWxwaGE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvcihoLnJnYiwgYSwgJ2hzbGEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIG0xXzE7CiAgICAgICAgICAgICAgdmFyIG0yXzE7CiAgICAgICAgICAgICAgZnVuY3Rpb24gaHVlKGgpIHsKICAgICAgICAgICAgICAgICAgaCA9IGggPCAwID8gaCArIDEgOiAoaCA+IDEgPyBoIC0gMSA6IGgpOwogICAgICAgICAgICAgICAgICBpZiAoaCAqIDYgPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbTFfMSArIChtMl8xIC0gbTFfMSkgKiBoICogNjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIGlmIChoICogMiA8IDEpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtMl8xOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGggKiAzIDwgMikgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0xXzEgKyAobTJfMSAtIG0xXzEpICogKDIgLyAzIC0gaCkgKiA2OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0xXzE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaCA9IChudW1iZXIoaCkgJSAzNjApIC8gMzYwOwogICAgICAgICAgICAgIHMgPSBjbGFtcCQxKG51bWJlcihzKSk7CiAgICAgICAgICAgICAgbCA9IGNsYW1wJDEobnVtYmVyKGwpKTsKICAgICAgICAgICAgICBhID0gY2xhbXAkMShudW1iZXIoYSkpOwogICAgICAgICAgICAgIG0yXzEgPSBsIDw9IDAuNSA/IGwgKiAocyArIDEpIDogbCArIHMgLSBsICogczsKICAgICAgICAgICAgICBtMV8xID0gbCAqIDIgLSBtMl8xOwogICAgICAgICAgICAgIHZhciByZ2IgPSBbCiAgICAgICAgICAgICAgICAgIGh1ZShoICsgMSAvIDMpICogMjU1LAogICAgICAgICAgICAgICAgICBodWUoaCkgKiAyNTUsCiAgICAgICAgICAgICAgICAgIGh1ZShoIC0gMSAvIDMpICogMjU1CiAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICBhID0gbnVtYmVyKGEpOwogICAgICAgICAgICAgIHJldHVybiBuZXcgQ29sb3IocmdiLCBhLCAnaHNsYScpOwogICAgICAgICAgfQogICAgICAgICAgY2F0Y2ggKGUpIHsgfQogICAgICB9LAogICAgICBoc3Y6IGZ1bmN0aW9uIChoLCBzLCB2KSB7CiAgICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMuaHN2YShoLCBzLCB2LCAxLjApOwogICAgICB9LAogICAgICBoc3ZhOiBmdW5jdGlvbiAoaCwgcywgdiwgYSkgewogICAgICAgICAgaCA9ICgobnVtYmVyKGgpICUgMzYwKSAvIDM2MCkgKiAzNjA7CiAgICAgICAgICBzID0gbnVtYmVyKHMpOwogICAgICAgICAgdiA9IG51bWJlcih2KTsKICAgICAgICAgIGEgPSBudW1iZXIoYSk7CiAgICAgICAgICB2YXIgaTsKICAgICAgICAgIHZhciBmOwogICAgICAgICAgaSA9IE1hdGguZmxvb3IoKGggLyA2MCkgJSA2KTsKICAgICAgICAgIGYgPSAoaCAvIDYwKSAtIGk7CiAgICAgICAgICB2YXIgdnMgPSBbdiwKICAgICAgICAgICAgICB2ICogKDEgLSBzKSwKICAgICAgICAgICAgICB2ICogKDEgLSBmICogcyksCiAgICAgICAgICAgICAgdiAqICgxIC0gKDEgLSBmKSAqIHMpXTsKICAgICAgICAgIHZhciBwZXJtID0gW1swLCAzLCAxXSwKICAgICAgICAgICAgICBbMiwgMCwgMV0sCiAgICAgICAgICAgICAgWzEsIDAsIDNdLAogICAgICAgICAgICAgIFsxLCAyLCAwXSwKICAgICAgICAgICAgICBbMywgMSwgMF0sCiAgICAgICAgICAgICAgWzAsIDEsIDJdXTsKICAgICAgICAgIHJldHVybiBjb2xvckZ1bmN0aW9ucy5yZ2JhKHZzW3Blcm1baV1bMF1dICogMjU1LCB2c1twZXJtW2ldWzFdXSAqIDI1NSwgdnNbcGVybVtpXVsyXV0gKiAyNTUsIGEpOwogICAgICB9LAogICAgICBodWU6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24odG9IU0woY29sb3IpLmgpOwogICAgICB9LAogICAgICBzYXR1cmF0aW9uOiBmdW5jdGlvbiAoY29sb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKHRvSFNMKGNvbG9yKS5zICogMTAwLCAnJScpOwogICAgICB9LAogICAgICBsaWdodG5lc3M6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24odG9IU0woY29sb3IpLmwgKiAxMDAsICclJyk7CiAgICAgIH0sCiAgICAgIGhzdmh1ZTogZnVuY3Rpb24gKGNvbG9yKSB7CiAgICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbih0b0hTVihjb2xvcikuaCk7CiAgICAgIH0sCiAgICAgIGhzdnNhdHVyYXRpb246IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24odG9IU1YoY29sb3IpLnMgKiAxMDAsICclJyk7CiAgICAgIH0sCiAgICAgIGhzdnZhbHVlOiBmdW5jdGlvbiAoY29sb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKHRvSFNWKGNvbG9yKS52ICogMTAwLCAnJScpOwogICAgICB9LAogICAgICByZWQ6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oY29sb3IucmdiWzBdKTsKICAgICAgfSwKICAgICAgZ3JlZW46IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oY29sb3IucmdiWzFdKTsKICAgICAgfSwKICAgICAgYmx1ZTogZnVuY3Rpb24gKGNvbG9yKSB7CiAgICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihjb2xvci5yZ2JbMl0pOwogICAgICB9LAogICAgICBhbHBoYTogZnVuY3Rpb24gKGNvbG9yKSB7CiAgICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbih0b0hTTChjb2xvcikuYSk7CiAgICAgIH0sCiAgICAgIGx1bWE6IGZ1bmN0aW9uIChjb2xvcikgewogICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oY29sb3IubHVtYSgpICogY29sb3IuYWxwaGEgKiAxMDAsICclJyk7CiAgICAgIH0sCiAgICAgIGx1bWluYW5jZTogZnVuY3Rpb24gKGNvbG9yKSB7CiAgICAgICAgICB2YXIgbHVtaW5hbmNlID0gKDAuMjEyNiAqIGNvbG9yLnJnYlswXSAvIDI1NSkgKwogICAgICAgICAgICAgICgwLjcxNTIgKiBjb2xvci5yZ2JbMV0gLyAyNTUpICsKICAgICAgICAgICAgICAoMC4wNzIyICogY29sb3IucmdiWzJdIC8gMjU1KTsKICAgICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGx1bWluYW5jZSAqIGNvbG9yLmFscGhhICogMTAwLCAnJScpOwogICAgICB9LAogICAgICBzYXR1cmF0ZTogZnVuY3Rpb24gKGNvbG9yLCBhbW91bnQsIG1ldGhvZCkgewogICAgICAgICAgLy8gZmlsdGVyOiBzYXR1cmF0ZSgzLjIpOwogICAgICAgICAgLy8gc2hvdWxkIGJlIGtlcHQgYXMgaXMsIHNvIGNoZWNrIGZvciBjb2xvcgogICAgICAgICAgaWYgKCFjb2xvci5yZ2IpIHsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBoc2wgPSB0b0hTTChjb2xvcik7CiAgICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gJ3VuZGVmaW5lZCcgJiYgbWV0aG9kLnZhbHVlID09PSAncmVsYXRpdmUnKSB7CiAgICAgICAgICAgICAgaHNsLnMgKz0gaHNsLnMgKiBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBoc2wucyArPSBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgICB9CiAgICAgICAgICBoc2wucyA9IGNsYW1wJDEoaHNsLnMpOwogICAgICAgICAgcmV0dXJuIGhzbGEoY29sb3IsIGhzbCk7CiAgICAgIH0sCiAgICAgIGRlc2F0dXJhdGU6IGZ1bmN0aW9uIChjb2xvciwgYW1vdW50LCBtZXRob2QpIHsKICAgICAgICAgIHZhciBoc2wgPSB0b0hTTChjb2xvcik7CiAgICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gJ3VuZGVmaW5lZCcgJiYgbWV0aG9kLnZhbHVlID09PSAncmVsYXRpdmUnKSB7CiAgICAgICAgICAgICAgaHNsLnMgLT0gaHNsLnMgKiBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBoc2wucyAtPSBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgICB9CiAgICAgICAgICBoc2wucyA9IGNsYW1wJDEoaHNsLnMpOwogICAgICAgICAgcmV0dXJuIGhzbGEoY29sb3IsIGhzbCk7CiAgICAgIH0sCiAgICAgIGxpZ2h0ZW46IGZ1bmN0aW9uIChjb2xvciwgYW1vdW50LCBtZXRob2QpIHsKICAgICAgICAgIHZhciBoc2wgPSB0b0hTTChjb2xvcik7CiAgICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gJ3VuZGVmaW5lZCcgJiYgbWV0aG9kLnZhbHVlID09PSAncmVsYXRpdmUnKSB7CiAgICAgICAgICAgICAgaHNsLmwgKz0gaHNsLmwgKiBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBoc2wubCArPSBhbW91bnQudmFsdWUgLyAxMDA7CiAgICAgICAgICB9CiAgICAgICAgICBoc2wubCA9IGNsYW1wJDEoaHNsLmwpOwogICAgICAgICAgcmV0dXJuIGhzbGEoY29sb3IsIGhzbCk7CiAgICAgIH0sCiAgICAgIGRhcmtlbjogZnVuY3Rpb24gKGNvbG9yLCBhbW91bnQsIG1ldGhvZCkgewogICAgICAgICAgdmFyIGhzbCA9IHRvSFNMKGNvbG9yKTsKICAgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kICE9PSAndW5kZWZpbmVkJyAmJiBtZXRob2QudmFsdWUgPT09ICdyZWxhdGl2ZScpIHsKICAgICAgICAgICAgICBoc2wubCAtPSBoc2wubCAqIGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGhzbC5sIC09IGFtb3VudC52YWx1ZSAvIDEwMDsKICAgICAgICAgIH0KICAgICAgICAgIGhzbC5sID0gY2xhbXAkMShoc2wubCk7CiAgICAgICAgICByZXR1cm4gaHNsYShjb2xvciwgaHNsKTsKICAgICAgfSwKICAgICAgZmFkZWluOiBmdW5jdGlvbiAoY29sb3IsIGFtb3VudCwgbWV0aG9kKSB7CiAgICAgICAgICB2YXIgaHNsID0gdG9IU0woY29sb3IpOwogICAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgIT09ICd1bmRlZmluZWQnICYmIG1ldGhvZC52YWx1ZSA9PT0gJ3JlbGF0aXZlJykgewogICAgICAgICAgICAgIGhzbC5hICs9IGhzbC5hICogYW1vdW50LnZhbHVlIC8gMTAwOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgaHNsLmEgKz0gYW1vdW50LnZhbHVlIC8gMTAwOwogICAgICAgICAgfQogICAgICAgICAgaHNsLmEgPSBjbGFtcCQxKGhzbC5hKTsKICAgICAgICAgIHJldHVybiBoc2xhKGNvbG9yLCBoc2wpOwogICAgICB9LAogICAgICBmYWRlb3V0OiBmdW5jdGlvbiAoY29sb3IsIGFtb3VudCwgbWV0aG9kKSB7CiAgICAgICAgICB2YXIgaHNsID0gdG9IU0woY29sb3IpOwogICAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgIT09ICd1bmRlZmluZWQnICYmIG1ldGhvZC52YWx1ZSA9PT0gJ3JlbGF0aXZlJykgewogICAgICAgICAgICAgIGhzbC5hIC09IGhzbC5hICogYW1vdW50LnZhbHVlIC8gMTAwOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgaHNsLmEgLT0gYW1vdW50LnZhbHVlIC8gMTAwOwogICAgICAgICAgfQogICAgICAgICAgaHNsLmEgPSBjbGFtcCQxKGhzbC5hKTsKICAgICAgICAgIHJldHVybiBoc2xhKGNvbG9yLCBoc2wpOwogICAgICB9LAogICAgICBmYWRlOiBmdW5jdGlvbiAoY29sb3IsIGFtb3VudCkgewogICAgICAgICAgdmFyIGhzbCA9IHRvSFNMKGNvbG9yKTsKICAgICAgICAgIGhzbC5hID0gYW1vdW50LnZhbHVlIC8gMTAwOwogICAgICAgICAgaHNsLmEgPSBjbGFtcCQxKGhzbC5hKTsKICAgICAgICAgIHJldHVybiBoc2xhKGNvbG9yLCBoc2wpOwogICAgICB9LAogICAgICBzcGluOiBmdW5jdGlvbiAoY29sb3IsIGFtb3VudCkgewogICAgICAgICAgdmFyIGhzbCA9IHRvSFNMKGNvbG9yKTsKICAgICAgICAgIHZhciBodWUgPSAoaHNsLmggKyBhbW91bnQudmFsdWUpICUgMzYwOwogICAgICAgICAgaHNsLmggPSBodWUgPCAwID8gMzYwICsgaHVlIDogaHVlOwogICAgICAgICAgcmV0dXJuIGhzbGEoY29sb3IsIGhzbCk7CiAgICAgIH0sCiAgICAgIC8vCiAgICAgIC8vIENvcHlyaWdodCAoYykgMjAwNi0yMDA5IEhhbXB0b24gQ2F0bGluLCBOYXRhbGllIFdlaXplbmJhdW0sIGFuZCBDaHJpcyBFcHBzdGVpbgogICAgICAvLyBodHRwOi8vc2Fzcy1sYW5nLmNvbQogICAgICAvLwogICAgICBtaXg6IGZ1bmN0aW9uIChjb2xvcjEsIGNvbG9yMiwgd2VpZ2h0KSB7CiAgICAgICAgICBpZiAoIXdlaWdodCkgewogICAgICAgICAgICAgIHdlaWdodCA9IG5ldyBEaW1lbnNpb24oNTApOwogICAgICAgICAgfQogICAgICAgICAgdmFyIHAgPSB3ZWlnaHQudmFsdWUgLyAxMDAuMDsKICAgICAgICAgIHZhciB3ID0gcCAqIDIgLSAxOwogICAgICAgICAgdmFyIGEgPSB0b0hTTChjb2xvcjEpLmEgLSB0b0hTTChjb2xvcjIpLmE7CiAgICAgICAgICB2YXIgdzEgPSAoKCh3ICogYSA9PSAtMSkgPyB3IDogKHcgKyBhKSAvICgxICsgdyAqIGEpKSArIDEpIC8gMi4wOwogICAgICAgICAgdmFyIHcyID0gMSAtIHcxOwogICAgICAgICAgdmFyIHJnYiA9IFtjb2xvcjEucmdiWzBdICogdzEgKyBjb2xvcjIucmdiWzBdICogdzIsCiAgICAgICAgICAgICAgY29sb3IxLnJnYlsxXSAqIHcxICsgY29sb3IyLnJnYlsxXSAqIHcyLAogICAgICAgICAgICAgIGNvbG9yMS5yZ2JbMl0gKiB3MSArIGNvbG9yMi5yZ2JbMl0gKiB3Ml07CiAgICAgICAgICB2YXIgYWxwaGEgPSBjb2xvcjEuYWxwaGEgKiBwICsgY29sb3IyLmFscGhhICogKDEgLSBwKTsKICAgICAgICAgIHJldHVybiBuZXcgQ29sb3IocmdiLCBhbHBoYSk7CiAgICAgIH0sCiAgICAgIGdyZXlzY2FsZTogZnVuY3Rpb24gKGNvbG9yKSB7CiAgICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMuZGVzYXR1cmF0ZShjb2xvciwgbmV3IERpbWVuc2lvbigxMDApKTsKICAgICAgfSwKICAgICAgY29udHJhc3Q6IGZ1bmN0aW9uIChjb2xvciwgZGFyaywgbGlnaHQsIHRocmVzaG9sZCkgewogICAgICAgICAgLy8gZmlsdGVyOiBjb250cmFzdCgzLjIpOwogICAgICAgICAgLy8gc2hvdWxkIGJlIGtlcHQgYXMgaXMsIHNvIGNoZWNrIGZvciBjb2xvcgogICAgICAgICAgaWYgKCFjb2xvci5yZ2IpIHsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0eXBlb2YgbGlnaHQgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgbGlnaHQgPSBjb2xvckZ1bmN0aW9ucy5yZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAodHlwZW9mIGRhcmsgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgZGFyayA9IGNvbG9yRnVuY3Rpb25zLnJnYmEoMCwgMCwgMCwgMS4wKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hpY2ggaXMgYWN0dWFsbHkgbGlnaHQgYW5kIGRhcms6CiAgICAgICAgICBpZiAoZGFyay5sdW1hKCkgPiBsaWdodC5sdW1hKCkpIHsKICAgICAgICAgICAgICB2YXIgdCA9IGxpZ2h0OwogICAgICAgICAgICAgIGxpZ2h0ID0gZGFyazsKICAgICAgICAgICAgICBkYXJrID0gdDsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0eXBlb2YgdGhyZXNob2xkID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgIHRocmVzaG9sZCA9IDAuNDM7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB0aHJlc2hvbGQgPSBudW1iZXIodGhyZXNob2xkKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChjb2xvci5sdW1hKCkgPCB0aHJlc2hvbGQpIHsKICAgICAgICAgICAgICByZXR1cm4gbGlnaHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZGFyazsKICAgICAgICAgIH0KICAgICAgfSwKICAgICAgLy8gQ2hhbmdlcyBtYWRlIGluIDIuNy4wIC0gUmV2ZXJ0ZWQgaW4gMy4wLjAKICAgICAgLy8gY29udHJhc3Q6IGZ1bmN0aW9uIChjb2xvciwgY29sb3IxLCBjb2xvcjIsIHRocmVzaG9sZCkgewogICAgICAvLyAgICAgLy8gUmV0dXJuIHdoaWNoIG9mIGBjb2xvcjFgIGFuZCBgY29sb3IyYCBoYXMgdGhlIGdyZWF0ZXN0IGNvbnRyYXN0IHdpdGggYGNvbG9yYAogICAgICAvLyAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCBXQ0FHIGNvbnRyYXN0IHJhdGlvIGNhbGN1bGF0aW9uLgogICAgICAvLyAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvV0NBRzIwLyNjb250cmFzdC1yYXRpb2RlZgogICAgICAvLyAgICAgLy8gVGhlIHRocmVzaG9sZCBwYXJhbSBpcyBubyBsb25nZXIgdXNlZCwgaW4gbGluZSB3aXRoIFNBU1MuCiAgICAgIC8vICAgICAvLyBmaWx0ZXI6IGNvbnRyYXN0KDMuMik7CiAgICAgIC8vICAgICAvLyBzaG91bGQgYmUga2VwdCBhcyBpcywgc28gY2hlY2sgZm9yIGNvbG9yCiAgICAgIC8vICAgICBpZiAoIWNvbG9yLnJnYikgewogICAgICAvLyAgICAgICAgIHJldHVybiBudWxsOwogICAgICAvLyAgICAgfQogICAgICAvLyAgICAgaWYgKHR5cGVvZiBjb2xvcjEgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIC8vICAgICAgICAgY29sb3IxID0gY29sb3JGdW5jdGlvbnMucmdiYSgwLCAwLCAwLCAxLjApOwogICAgICAvLyAgICAgfQogICAgICAvLyAgICAgaWYgKHR5cGVvZiBjb2xvcjIgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIC8vICAgICAgICAgY29sb3IyID0gY29sb3JGdW5jdGlvbnMucmdiYSgyNTUsIDI1NSwgMjU1LCAxLjApOwogICAgICAvLyAgICAgfQogICAgICAvLyAgICAgdmFyIGNvbnRyYXN0MSwgY29udHJhc3QyOwogICAgICAvLyAgICAgdmFyIGx1bWEgPSBjb2xvci5sdW1hKCk7CiAgICAgIC8vICAgICB2YXIgbHVtYTEgPSBjb2xvcjEubHVtYSgpOwogICAgICAvLyAgICAgdmFyIGx1bWEyID0gY29sb3IyLmx1bWEoKTsKICAgICAgLy8gICAgIC8vIENhbGN1bGF0ZSBjb250cmFzdCByYXRpb3MgZm9yIGVhY2ggY29sb3IKICAgICAgLy8gICAgIGlmIChsdW1hID4gbHVtYTEpIHsKICAgICAgLy8gICAgICAgICBjb250cmFzdDEgPSAobHVtYSArIDAuMDUpIC8gKGx1bWExICsgMC4wNSk7CiAgICAgIC8vICAgICB9IGVsc2UgewogICAgICAvLyAgICAgICAgIGNvbnRyYXN0MSA9IChsdW1hMSArIDAuMDUpIC8gKGx1bWEgKyAwLjA1KTsKICAgICAgLy8gICAgIH0KICAgICAgLy8gICAgIGlmIChsdW1hID4gbHVtYTIpIHsKICAgICAgLy8gICAgICAgICBjb250cmFzdDIgPSAobHVtYSArIDAuMDUpIC8gKGx1bWEyICsgMC4wNSk7CiAgICAgIC8vICAgICB9IGVsc2UgewogICAgICAvLyAgICAgICAgIGNvbnRyYXN0MiA9IChsdW1hMiArIDAuMDUpIC8gKGx1bWEgKyAwLjA1KTsKICAgICAgLy8gICAgIH0KICAgICAgLy8gICAgIGlmIChjb250cmFzdDEgPiBjb250cmFzdDIpIHsKICAgICAgLy8gICAgICAgICByZXR1cm4gY29sb3IxOwogICAgICAvLyAgICAgfSBlbHNlIHsKICAgICAgLy8gICAgICAgICByZXR1cm4gY29sb3IyOwogICAgICAvLyAgICAgfQogICAgICAvLyB9LAogICAgICBhcmdiOiBmdW5jdGlvbiAoY29sb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzKGNvbG9yLnRvQVJHQigpKTsKICAgICAgfSwKICAgICAgY29sb3I6IGZ1bmN0aW9uIChjKSB7CiAgICAgICAgICBpZiAoKGMgaW5zdGFuY2VvZiBRdW90ZWQpICYmCiAgICAgICAgICAgICAgKC9eIyhbQS1GYS1mMC05XXs4fXxbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszLDR9KSQvaS50ZXN0KGMudmFsdWUpKSkgewogICAgICAgICAgICAgIHZhciB2YWwgPSBjLnZhbHVlLnNsaWNlKDEpOwogICAgICAgICAgICAgIHJldHVybiBuZXcgQ29sb3IodmFsLCB1bmRlZmluZWQsICIjIiArIHZhbCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoKGMgaW5zdGFuY2VvZiBDb2xvcikgfHwgKGMgPSBDb2xvci5mcm9tS2V5d29yZChjLnZhbHVlKSkpIHsKICAgICAgICAgICAgICBjLnZhbHVlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgIHJldHVybiBjOwogICAgICAgICAgfQogICAgICAgICAgdGhyb3cgewogICAgICAgICAgICAgIHR5cGU6ICdBcmd1bWVudCcsCiAgICAgICAgICAgICAgbWVzc2FnZTogJ2FyZ3VtZW50IG11c3QgYmUgYSBjb2xvciBrZXl3b3JkIG9yIDN8NHw2fDggZGlnaXQgaGV4IGUuZy4gI0ZGRicKICAgICAgICAgIH07CiAgICAgIH0sCiAgICAgIHRpbnQ6IGZ1bmN0aW9uIChjb2xvciwgYW1vdW50KSB7CiAgICAgICAgICByZXR1cm4gY29sb3JGdW5jdGlvbnMubWl4KGNvbG9yRnVuY3Rpb25zLnJnYigyNTUsIDI1NSwgMjU1KSwgY29sb3IsIGFtb3VudCk7CiAgICAgIH0sCiAgICAgIHNoYWRlOiBmdW5jdGlvbiAoY29sb3IsIGFtb3VudCkgewogICAgICAgICAgcmV0dXJuIGNvbG9yRnVuY3Rpb25zLm1peChjb2xvckZ1bmN0aW9ucy5yZ2IoMCwgMCwgMCksIGNvbG9yLCBhbW91bnQpOwogICAgICB9CiAgfTsKICB2YXIgY29sb3IgPSBjb2xvckZ1bmN0aW9uczsKCiAgLy8gQ29sb3IgQmxlbmRpbmcKICAvLyByZWY6IGh0dHA6Ly93d3cudzMub3JnL1RSL2NvbXBvc2l0aW5nLTEKICBmdW5jdGlvbiBjb2xvckJsZW5kKG1vZGUsIGNvbG9yMSwgY29sb3IyKSB7CiAgICAgIHZhciBhYiA9IGNvbG9yMS5hbHBoYTsgLy8gcmVzdWx0CiAgICAgIHZhciAvLyBiYWNrZHJvcAogICAgICBjYjsKICAgICAgdmFyIGFzID0gY29sb3IyLmFscGhhOwogICAgICB2YXIgLy8gc291cmNlCiAgICAgIGNzOwogICAgICB2YXIgYXI7CiAgICAgIHZhciBjcjsKICAgICAgdmFyIHIgPSBbXTsKICAgICAgYXIgPSBhcyArIGFiICogKDEgLSBhcyk7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgICBjYiA9IGNvbG9yMS5yZ2JbaV0gLyAyNTU7CiAgICAgICAgICBjcyA9IGNvbG9yMi5yZ2JbaV0gLyAyNTU7CiAgICAgICAgICBjciA9IG1vZGUoY2IsIGNzKTsKICAgICAgICAgIGlmIChhcikgewogICAgICAgICAgICAgIGNyID0gKGFzICogY3MgKyBhYiAqIChjYiAtCiAgICAgICAgICAgICAgICAgIGFzICogKGNiICsgY3MgLSBjcikpKSAvIGFyOwogICAgICAgICAgfQogICAgICAgICAgcltpXSA9IGNyICogMjU1OwogICAgICB9CiAgICAgIHJldHVybiBuZXcgQ29sb3IociwgYXIpOwogIH0KICB2YXIgY29sb3JCbGVuZE1vZGVGdW5jdGlvbnMgPSB7CiAgICAgIG11bHRpcGx5OiBmdW5jdGlvbiAoY2IsIGNzKSB7CiAgICAgICAgICByZXR1cm4gY2IgKiBjczsKICAgICAgfSwKICAgICAgc2NyZWVuOiBmdW5jdGlvbiAoY2IsIGNzKSB7CiAgICAgICAgICByZXR1cm4gY2IgKyBjcyAtIGNiICogY3M7CiAgICAgIH0sCiAgICAgIG92ZXJsYXk6IGZ1bmN0aW9uIChjYiwgY3MpIHsKICAgICAgICAgIGNiICo9IDI7CiAgICAgICAgICByZXR1cm4gKGNiIDw9IDEpID8KICAgICAgICAgICAgICBjb2xvckJsZW5kTW9kZUZ1bmN0aW9ucy5tdWx0aXBseShjYiwgY3MpIDoKICAgICAgICAgICAgICBjb2xvckJsZW5kTW9kZUZ1bmN0aW9ucy5zY3JlZW4oY2IgLSAxLCBjcyk7CiAgICAgIH0sCiAgICAgIHNvZnRsaWdodDogZnVuY3Rpb24gKGNiLCBjcykgewogICAgICAgICAgdmFyIGQgPSAxOwogICAgICAgICAgdmFyIGUgPSBjYjsKICAgICAgICAgIGlmIChjcyA+IDAuNSkgewogICAgICAgICAgICAgIGUgPSAxOwogICAgICAgICAgICAgIGQgPSAoY2IgPiAwLjI1KSA/IE1hdGguc3FydChjYikKICAgICAgICAgICAgICAgICAgOiAoKDE2ICogY2IgLSAxMikgKiBjYiArIDQpICogY2I7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gY2IgLSAoMSAtIDIgKiBjcykgKiBlICogKGQgLSBjYik7CiAgICAgIH0sCiAgICAgIGhhcmRsaWdodDogZnVuY3Rpb24gKGNiLCBjcykgewogICAgICAgICAgcmV0dXJuIGNvbG9yQmxlbmRNb2RlRnVuY3Rpb25zLm92ZXJsYXkoY3MsIGNiKTsKICAgICAgfSwKICAgICAgZGlmZmVyZW5jZTogZnVuY3Rpb24gKGNiLCBjcykgewogICAgICAgICAgcmV0dXJuIE1hdGguYWJzKGNiIC0gY3MpOwogICAgICB9LAogICAgICBleGNsdXNpb246IGZ1bmN0aW9uIChjYiwgY3MpIHsKICAgICAgICAgIHJldHVybiBjYiArIGNzIC0gMiAqIGNiICogY3M7CiAgICAgIH0sCiAgICAgIC8vIG5vbi13M2MgZnVuY3Rpb25zOgogICAgICBhdmVyYWdlOiBmdW5jdGlvbiAoY2IsIGNzKSB7CiAgICAgICAgICByZXR1cm4gKGNiICsgY3MpIC8gMjsKICAgICAgfSwKICAgICAgbmVnYXRpb246IGZ1bmN0aW9uIChjYiwgY3MpIHsKICAgICAgICAgIHJldHVybiAxIC0gTWF0aC5hYnMoY2IgKyBjcyAtIDEpOwogICAgICB9CiAgfTsKICBmb3IgKHZhciBmIGluIGNvbG9yQmxlbmRNb2RlRnVuY3Rpb25zKSB7CiAgICAgIGlmIChjb2xvckJsZW5kTW9kZUZ1bmN0aW9ucy5oYXNPd25Qcm9wZXJ0eShmKSkgewogICAgICAgICAgY29sb3JCbGVuZFtmXSA9IGNvbG9yQmxlbmQuYmluZChudWxsLCBjb2xvckJsZW5kTW9kZUZ1bmN0aW9uc1tmXSk7CiAgICAgIH0KICB9CgogIHZhciBkYXRhVXJpID0gKGZ1bmN0aW9uIChlbnZpcm9ubWVudCkgewogICAgICB2YXIgZmFsbGJhY2sgPSBmdW5jdGlvbiAoZnVuY3Rpb25UaGlzLCBub2RlKSB7IHJldHVybiBuZXcgVVJMKG5vZGUsIGZ1bmN0aW9uVGhpcy5pbmRleCwgZnVuY3Rpb25UaGlzLmN1cnJlbnRGaWxlSW5mbykuZXZhbChmdW5jdGlvblRoaXMuY29udGV4dCk7IH07CiAgICAgIHJldHVybiB7ICdkYXRhLXVyaSc6IGZ1bmN0aW9uIChtaW1ldHlwZU5vZGUsIGZpbGVQYXRoTm9kZSkgewogICAgICAgICAgICAgIGlmICghZmlsZVBhdGhOb2RlKSB7CiAgICAgICAgICAgICAgICAgIGZpbGVQYXRoTm9kZSA9IG1pbWV0eXBlTm9kZTsKICAgICAgICAgICAgICAgICAgbWltZXR5cGVOb2RlID0gbnVsbDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIG1pbWV0eXBlID0gbWltZXR5cGVOb2RlICYmIG1pbWV0eXBlTm9kZS52YWx1ZTsKICAgICAgICAgICAgICB2YXIgZmlsZVBhdGggPSBmaWxlUGF0aE5vZGUudmFsdWU7CiAgICAgICAgICAgICAgdmFyIGN1cnJlbnRGaWxlSW5mbyA9IHRoaXMuY3VycmVudEZpbGVJbmZvOwogICAgICAgICAgICAgIHZhciBjdXJyZW50RGlyZWN0b3J5ID0gY3VycmVudEZpbGVJbmZvLnJld3JpdGVVcmxzID8KICAgICAgICAgICAgICAgICAgY3VycmVudEZpbGVJbmZvLmN1cnJlbnREaXJlY3RvcnkgOiBjdXJyZW50RmlsZUluZm8uZW50cnlQYXRoOwogICAgICAgICAgICAgIHZhciBmcmFnbWVudFN0YXJ0ID0gZmlsZVBhdGguaW5kZXhPZignIycpOwogICAgICAgICAgICAgIHZhciBmcmFnbWVudCA9ICcnOwogICAgICAgICAgICAgIGlmIChmcmFnbWVudFN0YXJ0ICE9PSAtMSkgewogICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGZpbGVQYXRoLnNsaWNlKGZyYWdtZW50U3RhcnQpOwogICAgICAgICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnNsaWNlKDAsIGZyYWdtZW50U3RhcnQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgY29udGV4dCA9IGNsb25lKHRoaXMuY29udGV4dCk7CiAgICAgICAgICAgICAgY29udGV4dC5yYXdCdWZmZXIgPSB0cnVlOwogICAgICAgICAgICAgIHZhciBmaWxlTWFuYWdlciA9IGVudmlyb25tZW50LmdldEZpbGVNYW5hZ2VyKGZpbGVQYXRoLCBjdXJyZW50RGlyZWN0b3J5LCBjb250ZXh0LCBlbnZpcm9ubWVudCwgdHJ1ZSk7CiAgICAgICAgICAgICAgaWYgKCFmaWxlTWFuYWdlcikgewogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sodGhpcywgZmlsZVBhdGhOb2RlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIHVzZUJhc2U2NCA9IGZhbHNlOwogICAgICAgICAgICAgIC8vIGRldGVjdCB0aGUgbWltZXR5cGUgaWYgbm90IGdpdmVuCiAgICAgICAgICAgICAgaWYgKCFtaW1ldHlwZU5vZGUpIHsKICAgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBlbnZpcm9ubWVudC5taW1lTG9va3VwKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICAgaWYgKG1pbWV0eXBlID09PSAnaW1hZ2Uvc3ZnK3htbCcpIHsKICAgICAgICAgICAgICAgICAgICAgIHVzZUJhc2U2NCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIGJhc2UgNjQgdW5sZXNzIGl0J3MgYW4gQVNDSUkgb3IgVVRGLTggZm9ybWF0CiAgICAgICAgICAgICAgICAgICAgICB2YXIgY2hhcnNldCA9IGVudmlyb25tZW50LmNoYXJzZXRMb29rdXAobWltZXR5cGUpOwogICAgICAgICAgICAgICAgICAgICAgdXNlQmFzZTY0ID0gWydVUy1BU0NJSScsICdVVEYtOCddLmluZGV4T2YoY2hhcnNldCkgPCAwOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICh1c2VCYXNlNjQpIHsKICAgICAgICAgICAgICAgICAgICAgIG1pbWV0eXBlICs9ICc7YmFzZTY0JzsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgdXNlQmFzZTY0ID0gLztiYXNlNjQkLy50ZXN0KG1pbWV0eXBlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIGZpbGVTeW5jID0gZmlsZU1hbmFnZXIubG9hZEZpbGVTeW5jKGZpbGVQYXRoLCBjdXJyZW50RGlyZWN0b3J5LCBjb250ZXh0LCBlbnZpcm9ubWVudCk7CiAgICAgICAgICAgICAgaWYgKCFmaWxlU3luYy5jb250ZW50cykgewogICAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiU2tpcHBlZCBkYXRhLXVyaSBlbWJlZGRpbmcgb2YgIiArIGZpbGVQYXRoICsgIiBiZWNhdXNlIGZpbGUgbm90IGZvdW5kIik7CiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFjayh0aGlzLCBmaWxlUGF0aE5vZGUgfHwgbWltZXR5cGVOb2RlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIGJ1ZiA9IGZpbGVTeW5jLmNvbnRlbnRzOwogICAgICAgICAgICAgIGlmICh1c2VCYXNlNjQgJiYgIWVudmlyb25tZW50LmVuY29kZUJhc2U2NCkgewogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sodGhpcywgZmlsZVBhdGhOb2RlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnVmID0gdXNlQmFzZTY0ID8gZW52aXJvbm1lbnQuZW5jb2RlQmFzZTY0KGJ1ZikgOiBlbmNvZGVVUklDb21wb25lbnQoYnVmKTsKICAgICAgICAgICAgICB2YXIgdXJpID0gImRhdGE6IiArIG1pbWV0eXBlICsgIiwiICsgYnVmICsgZnJhZ21lbnQ7CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVUkwobmV3IFF1b3RlZCgiXCIiICsgdXJpICsgIlwiIiwgdXJpLCBmYWxzZSwgdGhpcy5pbmRleCwgdGhpcy5jdXJyZW50RmlsZUluZm8pLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbyk7CiAgICAgICAgICB9IH07CiAgfSk7CgogIHZhciBnZXRJdGVtc0Zyb21Ob2RlID0gZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgLy8gaGFuZGxlIG5vbi1hcnJheSB2YWx1ZXMgYXMgYW4gYXJyYXkgb2YgbGVuZ3RoIDEKICAgICAgLy8gcmV0dXJuICd1bmRlZmluZWQnIGlmIGluZGV4IGlzIGludmFsaWQKICAgICAgdmFyIGl0ZW1zID0gQXJyYXkuaXNBcnJheShub2RlLnZhbHVlKSA/CiAgICAgICAgICBub2RlLnZhbHVlIDogQXJyYXkobm9kZSk7CiAgICAgIHJldHVybiBpdGVtczsKICB9OwogIHZhciBsaXN0ID0gewogICAgICBfU0VMRjogZnVuY3Rpb24gKG4pIHsKICAgICAgICAgIHJldHVybiBuOwogICAgICB9LAogICAgICBleHRyYWN0OiBmdW5jdGlvbiAodmFsdWVzLCBpbmRleCkgewogICAgICAgICAgLy8gKDEtYmFzZWQgaW5kZXgpCiAgICAgICAgICBpbmRleCA9IGluZGV4LnZhbHVlIC0gMTsKICAgICAgICAgIHJldHVybiBnZXRJdGVtc0Zyb21Ob2RlKHZhbHVlcylbaW5kZXhdOwogICAgICB9LAogICAgICBsZW5ndGg6IGZ1bmN0aW9uICh2YWx1ZXMpIHsKICAgICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGdldEl0ZW1zRnJvbU5vZGUodmFsdWVzKS5sZW5ndGgpOwogICAgICB9LAogICAgICAvKioKICAgICAgICogQ3JlYXRlcyBhIExlc3MgbGlzdCBvZiBpbmNyZW1lbnRhbCB2YWx1ZXMuCiAgICAgICAqIE1vZGVsZWQgYWZ0ZXIgTG9kYXNoJ3MgcmFuZ2UgZnVuY3Rpb24sIGFsc28gZXhpc3RzIG5hdGl2ZWx5IGluIFBIUAogICAgICAgKgogICAgICAgKiBAcGFyYW0ge0RpbWVuc2lvbn0gW3N0YXJ0PTFdCiAgICAgICAqIEBwYXJhbSB7RGltZW5zaW9ufSBlbmQgIC0gZS5nLiAxMCBvciAxMHB4IC0gdW5pdCBpcyBhZGRlZCB0byBvdXRwdXQKICAgICAgICogQHBhcmFtIHtEaW1lbnNpb259IFtzdGVwPTFdCiAgICAgICAqLwogICAgICByYW5nZTogZnVuY3Rpb24gKHN0YXJ0LCBlbmQsIHN0ZXApIHsKICAgICAgICAgIHZhciBmcm9tOwogICAgICAgICAgdmFyIHRvOwogICAgICAgICAgdmFyIHN0ZXBWYWx1ZSA9IDE7CiAgICAgICAgICB2YXIgbGlzdCA9IFtdOwogICAgICAgICAgaWYgKGVuZCkgewogICAgICAgICAgICAgIHRvID0gZW5kOwogICAgICAgICAgICAgIGZyb20gPSBzdGFydC52YWx1ZTsKICAgICAgICAgICAgICBpZiAoc3RlcCkgewogICAgICAgICAgICAgICAgICBzdGVwVmFsdWUgPSBzdGVwLnZhbHVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGZyb20gPSAxOwogICAgICAgICAgICAgIHRvID0gc3RhcnQ7CiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKHZhciBpID0gZnJvbTsgaSA8PSB0by52YWx1ZTsgaSArPSBzdGVwVmFsdWUpIHsKICAgICAgICAgICAgICBsaXN0LnB1c2gobmV3IERpbWVuc2lvbihpLCB0by51bml0KSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3IEV4cHJlc3Npb24obGlzdCk7CiAgICAgIH0sCiAgICAgIGVhY2g6IGZ1bmN0aW9uIChsaXN0LCBycykgewogICAgICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgICAgIHZhciBydWxlcyA9IFtdOwogICAgICAgICAgdmFyIG5ld1J1bGVzOwogICAgICAgICAgdmFyIGl0ZXJhdG9yOwogICAgICAgICAgdmFyIHRyeUV2YWwgPSBmdW5jdGlvbiAodmFsKSB7CiAgICAgICAgICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5vZGUpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbC5ldmFsKF90aGlzLmNvbnRleHQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gdmFsOwogICAgICAgICAgfTsKICAgICAgICAgIGlmIChsaXN0LnZhbHVlICYmICEobGlzdCBpbnN0YW5jZW9mIFF1b3RlZCkpIHsKICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0LnZhbHVlKSkgewogICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IGxpc3QudmFsdWUubWFwKHRyeUV2YWwpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBbdHJ5RXZhbChsaXN0LnZhbHVlKV07CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAobGlzdC5ydWxlc2V0KSB7CiAgICAgICAgICAgICAgaXRlcmF0b3IgPSB0cnlFdmFsKGxpc3QucnVsZXNldCkucnVsZXM7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChsaXN0LnJ1bGVzKSB7CiAgICAgICAgICAgICAgaXRlcmF0b3IgPSBsaXN0LnJ1bGVzLm1hcCh0cnlFdmFsKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobGlzdCkpIHsKICAgICAgICAgICAgICBpdGVyYXRvciA9IGxpc3QubWFwKHRyeUV2YWwpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgaXRlcmF0b3IgPSBbdHJ5RXZhbChsaXN0KV07CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgdmFsdWVOYW1lID0gJ0B2YWx1ZSc7CiAgICAgICAgICB2YXIga2V5TmFtZSA9ICdAa2V5JzsKICAgICAgICAgIHZhciBpbmRleE5hbWUgPSAnQGluZGV4JzsKICAgICAgICAgIGlmIChycy5wYXJhbXMpIHsKICAgICAgICAgICAgICB2YWx1ZU5hbWUgPSBycy5wYXJhbXNbMF0gJiYgcnMucGFyYW1zWzBdLm5hbWU7CiAgICAgICAgICAgICAga2V5TmFtZSA9IHJzLnBhcmFtc1sxXSAmJiBycy5wYXJhbXNbMV0ubmFtZTsKICAgICAgICAgICAgICBpbmRleE5hbWUgPSBycy5wYXJhbXNbMl0gJiYgcnMucGFyYW1zWzJdLm5hbWU7CiAgICAgICAgICAgICAgcnMgPSBycy5ydWxlczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJzID0gcnMucnVsZXNldDsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0b3IubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICB2YXIga2V5ID0gdm9pZCAwOwogICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHZvaWQgMDsKICAgICAgICAgICAgICB2YXIgaXRlbSA9IGl0ZXJhdG9yW2ldOwogICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgRGVjbGFyYXRpb24pIHsKICAgICAgICAgICAgICAgICAga2V5ID0gdHlwZW9mIGl0ZW0ubmFtZSA9PT0gJ3N0cmluZycgPyBpdGVtLm5hbWUgOiBpdGVtLm5hbWVbMF0udmFsdWU7CiAgICAgICAgICAgICAgICAgIHZhbHVlID0gaXRlbS52YWx1ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIGtleSA9IG5ldyBEaW1lbnNpb24oaSArIDEpOwogICAgICAgICAgICAgICAgICB2YWx1ZSA9IGl0ZW07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgQ29tbWVudCkgewogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbmV3UnVsZXMgPSBycy5ydWxlcy5zbGljZSgwKTsKICAgICAgICAgICAgICBpZiAodmFsdWVOYW1lKSB7CiAgICAgICAgICAgICAgICAgIG5ld1J1bGVzLnB1c2gobmV3IERlY2xhcmF0aW9uKHZhbHVlTmFtZSwgdmFsdWUsIGZhbHNlLCBmYWxzZSwgdGhpcy5pbmRleCwgdGhpcy5jdXJyZW50RmlsZUluZm8pKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGluZGV4TmFtZSkgewogICAgICAgICAgICAgICAgICBuZXdSdWxlcy5wdXNoKG5ldyBEZWNsYXJhdGlvbihpbmRleE5hbWUsIG5ldyBEaW1lbnNpb24oaSArIDEpLCBmYWxzZSwgZmFsc2UsIHRoaXMuaW5kZXgsIHRoaXMuY3VycmVudEZpbGVJbmZvKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChrZXlOYW1lKSB7CiAgICAgICAgICAgICAgICAgIG5ld1J1bGVzLnB1c2gobmV3IERlY2xhcmF0aW9uKGtleU5hbWUsIGtleSwgZmFsc2UsIGZhbHNlLCB0aGlzLmluZGV4LCB0aGlzLmN1cnJlbnRGaWxlSW5mbykpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBydWxlcy5wdXNoKG5ldyBSdWxlc2V0KFtuZXcgKFNlbGVjdG9yKShbbmV3IEVsZW1lbnQoIiIsICcmJyldKV0sIG5ld1J1bGVzLCBycy5zdHJpY3RJbXBvcnRzLCBycy52aXNpYmlsaXR5SW5mbygpKSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3IFJ1bGVzZXQoW25ldyAoU2VsZWN0b3IpKFtuZXcgRWxlbWVudCgiIiwgJyYnKV0pXSwgcnVsZXMsIHJzLnN0cmljdEltcG9ydHMsIHJzLnZpc2liaWxpdHlJbmZvKCkpLmV2YWwodGhpcy5jb250ZXh0KTsKICAgICAgfQogIH07CgogIHZhciBNYXRoSGVscGVyID0gZnVuY3Rpb24gKGZuLCB1bml0LCBuKSB7CiAgICAgIGlmICghKG4gaW5zdGFuY2VvZiBEaW1lbnNpb24pKSB7CiAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdBcmd1bWVudCcsIG1lc3NhZ2U6ICdhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyB9OwogICAgICB9CiAgICAgIGlmICh1bml0ID09IG51bGwpIHsKICAgICAgICAgIHVuaXQgPSBuLnVuaXQ7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICBuID0gbi51bmlmeSgpOwogICAgICB9CiAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGZuKHBhcnNlRmxvYXQobi52YWx1ZSkpLCB1bml0KTsKICB9OwoKICB2YXIgbWF0aEZ1bmN0aW9ucyA9IHsKICAgICAgLy8gbmFtZSwgIHVuaXQKICAgICAgY2VpbDogbnVsbCwKICAgICAgZmxvb3I6IG51bGwsCiAgICAgIHNxcnQ6IG51bGwsCiAgICAgIGFiczogbnVsbCwKICAgICAgdGFuOiAnJywKICAgICAgc2luOiAnJywKICAgICAgY29zOiAnJywKICAgICAgYXRhbjogJ3JhZCcsCiAgICAgIGFzaW46ICdyYWQnLAogICAgICBhY29zOiAncmFkJwogIH07CiAgZm9yICh2YXIgZiQxIGluIG1hdGhGdW5jdGlvbnMpIHsKICAgICAgaWYgKG1hdGhGdW5jdGlvbnMuaGFzT3duUHJvcGVydHkoZiQxKSkgewogICAgICAgICAgbWF0aEZ1bmN0aW9uc1tmJDFdID0gTWF0aEhlbHBlci5iaW5kKG51bGwsIE1hdGhbZiQxXSwgbWF0aEZ1bmN0aW9uc1tmJDFdKTsKICAgICAgfQogIH0KICBtYXRoRnVuY3Rpb25zLnJvdW5kID0gZnVuY3Rpb24gKG4sIGYpIHsKICAgICAgdmFyIGZyYWN0aW9uID0gdHlwZW9mIGYgPT09ICd1bmRlZmluZWQnID8gMCA6IGYudmFsdWU7CiAgICAgIHJldHVybiBNYXRoSGVscGVyKGZ1bmN0aW9uIChudW0pIHsgcmV0dXJuIG51bS50b0ZpeGVkKGZyYWN0aW9uKTsgfSwgbnVsbCwgbik7CiAgfTsKCiAgdmFyIG1pbk1heCA9IGZ1bmN0aW9uIChpc01pbiwgYXJncykgewogICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7CiAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHsKICAgICAgICAgIGNhc2UgMDogdGhyb3cgeyB0eXBlOiAnQXJndW1lbnQnLCBtZXNzYWdlOiAnb25lIG9yIG1vcmUgYXJndW1lbnRzIHJlcXVpcmVkJyB9OwogICAgICB9CiAgICAgIHZhciBpOyAvLyBrZXkgaXMgdGhlIHVuaXQudG9TdHJpbmcoKSBmb3IgdW5pZmllZCBEaW1lbnNpb24gdmFsdWVzLAogICAgICB2YXIgajsKICAgICAgdmFyIGN1cnJlbnQ7CiAgICAgIHZhciBjdXJyZW50VW5pZmllZDsKICAgICAgdmFyIHJlZmVyZW5jZVVuaWZpZWQ7CiAgICAgIHZhciB1bml0OwogICAgICB2YXIgdW5pdFN0YXRpYzsKICAgICAgdmFyIHVuaXRDbG9uZTsKICAgICAgdmFyIC8vIGVsZW1zIG9ubHkgY29udGFpbnMgb3JpZ2luYWwgYXJndW1lbnQgdmFsdWVzLgogICAgICBvcmRlciA9IFtdOwogICAgICB2YXIgdmFsdWVzID0ge307CiAgICAgIC8vIHZhbHVlIGlzIHRoZSBpbmRleCBpbnRvIHRoZSBvcmRlciBhcnJheS4KICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGN1cnJlbnQgPSBhcmdzW2ldOwogICAgICAgICAgaWYgKCEoY3VycmVudCBpbnN0YW5jZW9mIERpbWVuc2lvbikpIHsKICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmdzW2ldLnZhbHVlKSkgewogICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcmdzLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzW2ldLnZhbHVlKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudFVuaWZpZWQgPSBjdXJyZW50LnVuaXQudG9TdHJpbmcoKSA9PT0gJycgJiYgdW5pdENsb25lICE9PSB1bmRlZmluZWQgPyBuZXcgRGltZW5zaW9uKGN1cnJlbnQudmFsdWUsIHVuaXRDbG9uZSkudW5pZnkoKSA6IGN1cnJlbnQudW5pZnkoKTsKICAgICAgICAgIHVuaXQgPSBjdXJyZW50VW5pZmllZC51bml0LnRvU3RyaW5nKCkgPT09ICcnICYmIHVuaXRTdGF0aWMgIT09IHVuZGVmaW5lZCA/IHVuaXRTdGF0aWMgOiBjdXJyZW50VW5pZmllZC51bml0LnRvU3RyaW5nKCk7CiAgICAgICAgICB1bml0U3RhdGljID0gdW5pdCAhPT0gJycgJiYgdW5pdFN0YXRpYyA9PT0gdW5kZWZpbmVkIHx8IHVuaXQgIT09ICcnICYmIG9yZGVyWzBdLnVuaWZ5KCkudW5pdC50b1N0cmluZygpID09PSAnJyA/IHVuaXQgOiB1bml0U3RhdGljOwogICAgICAgICAgdW5pdENsb25lID0gdW5pdCAhPT0gJycgJiYgdW5pdENsb25lID09PSB1bmRlZmluZWQgPyBjdXJyZW50LnVuaXQudG9TdHJpbmcoKSA6IHVuaXRDbG9uZTsKICAgICAgICAgIGogPSB2YWx1ZXNbJyddICE9PSB1bmRlZmluZWQgJiYgdW5pdCAhPT0gJycgJiYgdW5pdCA9PT0gdW5pdFN0YXRpYyA/IHZhbHVlc1snJ10gOiB2YWx1ZXNbdW5pdF07CiAgICAgICAgICBpZiAoaiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgaWYgKHVuaXRTdGF0aWMgIT09IHVuZGVmaW5lZCAmJiB1bml0ICE9PSB1bml0U3RhdGljKSB7CiAgICAgICAgICAgICAgICAgIHRocm93IHsgdHlwZTogJ0FyZ3VtZW50JywgbWVzc2FnZTogJ2luY29tcGF0aWJsZSB0eXBlcycgfTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFsdWVzW3VuaXRdID0gb3JkZXIubGVuZ3RoOwogICAgICAgICAgICAgIG9yZGVyLnB1c2goY3VycmVudCk7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICByZWZlcmVuY2VVbmlmaWVkID0gb3JkZXJbal0udW5pdC50b1N0cmluZygpID09PSAnJyAmJiB1bml0Q2xvbmUgIT09IHVuZGVmaW5lZCA/IG5ldyBEaW1lbnNpb24ob3JkZXJbal0udmFsdWUsIHVuaXRDbG9uZSkudW5pZnkoKSA6IG9yZGVyW2pdLnVuaWZ5KCk7CiAgICAgICAgICBpZiAoaXNNaW4gJiYgY3VycmVudFVuaWZpZWQudmFsdWUgPCByZWZlcmVuY2VVbmlmaWVkLnZhbHVlIHx8CiAgICAgICAgICAgICAgIWlzTWluICYmIGN1cnJlbnRVbmlmaWVkLnZhbHVlID4gcmVmZXJlbmNlVW5pZmllZC52YWx1ZSkgewogICAgICAgICAgICAgIG9yZGVyW2pdID0gY3VycmVudDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiAob3JkZXIubGVuZ3RoID09IDEpIHsKICAgICAgICAgIHJldHVybiBvcmRlclswXTsKICAgICAgfQogICAgICBhcmdzID0gb3JkZXIubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiBhLnRvQ1NTKHRoaXMuY29udGV4dCk7IH0pLmpvaW4odGhpcy5jb250ZXh0LmNvbXByZXNzID8gJywnIDogJywgJyk7CiAgICAgIHJldHVybiBuZXcgQW5vbnltb3VzKChpc01pbiA/ICdtaW4nIDogJ21heCcpICsgIigiICsgYXJncyArICIpIik7CiAgfTsKICB2YXIgbnVtYmVyJDEgPSB7CiAgICAgIG1pbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgdmFyIGFyZ3MgPSBbXTsKICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7CiAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG1pbk1heCh0cnVlLCBhcmdzKTsKICAgICAgfSwKICAgICAgbWF4OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICB2YXIgYXJncyA9IFtdOwogICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKICAgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbWluTWF4KGZhbHNlLCBhcmdzKTsKICAgICAgfSwKICAgICAgY29udmVydDogZnVuY3Rpb24gKHZhbCwgdW5pdCkgewogICAgICAgICAgcmV0dXJuIHZhbC5jb252ZXJ0VG8odW5pdC52YWx1ZSk7CiAgICAgIH0sCiAgICAgIHBpOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihNYXRoLlBJKTsKICAgICAgfSwKICAgICAgbW9kOiBmdW5jdGlvbiAoYSwgYikgewogICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oYS52YWx1ZSAlIGIudmFsdWUsIGEudW5pdCk7CiAgICAgIH0sCiAgICAgIHBvdzogZnVuY3Rpb24gKHgsIHkpIHsKICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHkgPT09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgeCA9IG5ldyBEaW1lbnNpb24oeCk7CiAgICAgICAgICAgICAgeSA9IG5ldyBEaW1lbnNpb24oeSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICghKHggaW5zdGFuY2VvZiBEaW1lbnNpb24pIHx8ICEoeSBpbnN0YW5jZW9mIERpbWVuc2lvbikpIHsKICAgICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdBcmd1bWVudCcsIG1lc3NhZ2U6ICdhcmd1bWVudHMgbXVzdCBiZSBudW1iZXJzJyB9OwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oTWF0aC5wb3coeC52YWx1ZSwgeS52YWx1ZSksIHgudW5pdCk7CiAgICAgIH0sCiAgICAgIHBlcmNlbnRhZ2U6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgICB2YXIgcmVzdWx0ID0gTWF0aEhlbHBlcihmdW5jdGlvbiAobnVtKSB7IHJldHVybiBudW0gKiAxMDA7IH0sICclJywgbik7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfTsKCiAgdmFyIHN0cmluZyA9IHsKICAgICAgZTogZnVuY3Rpb24gKHN0cikgewogICAgICAgICAgcmV0dXJuIG5ldyBRdW90ZWQoJyInLCBzdHIgaW5zdGFuY2VvZiBKYXZhU2NyaXB0ID8gc3RyLmV2YWx1YXRlZCA6IHN0ci52YWx1ZSwgdHJ1ZSk7CiAgICAgIH0sCiAgICAgIGVzY2FwZTogZnVuY3Rpb24gKHN0cikgewogICAgICAgICAgcmV0dXJuIG5ldyBBbm9ueW1vdXMoZW5jb2RlVVJJKHN0ci52YWx1ZSkucmVwbGFjZSgvPS9nLCAnJTNEJykucmVwbGFjZSgvOi9nLCAnJTNBJykucmVwbGFjZSgvIy9nLCAnJTIzJykucmVwbGFjZSgvOy9nLCAnJTNCJykKICAgICAgICAgICAgICAucmVwbGFjZSgvXCgvZywgJyUyOCcpLnJlcGxhY2UoL1wpL2csICclMjknKSk7CiAgICAgIH0sCiAgICAgIHJlcGxhY2U6IGZ1bmN0aW9uIChzdHJpbmcsIHBhdHRlcm4sIHJlcGxhY2VtZW50LCBmbGFncykgewogICAgICAgICAgdmFyIHJlc3VsdCA9IHN0cmluZy52YWx1ZTsKICAgICAgICAgIHJlcGxhY2VtZW50ID0gKHJlcGxhY2VtZW50LnR5cGUgPT09ICdRdW90ZWQnKSA/CiAgICAgICAgICAgICAgcmVwbGFjZW1lbnQudmFsdWUgOiByZXBsYWNlbWVudC50b0NTUygpOwogICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UobmV3IFJlZ0V4cChwYXR0ZXJuLnZhbHVlLCBmbGFncyA/IGZsYWdzLnZhbHVlIDogJycpLCByZXBsYWNlbWVudCk7CiAgICAgICAgICByZXR1cm4gbmV3IFF1b3RlZChzdHJpbmcucXVvdGUgfHwgJycsIHJlc3VsdCwgc3RyaW5nLmVzY2FwZWQpOwogICAgICB9LAogICAgICAnJSc6IGZ1bmN0aW9uIChzdHJpbmcgLyogYXJnLCBhcmcsIC4uLiAqLykgewogICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwogICAgICAgICAgdmFyIHJlc3VsdCA9IHN0cmluZy52YWx1ZTsKICAgICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgICAvKiBqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSAqLwogICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC8lW3NkYV0vaSwgZnVuY3Rpb24gKHRva2VuKSB7CiAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICgoYXJnc1tpXS50eXBlID09PSAnUXVvdGVkJykgJiYKICAgICAgICAgICAgICAgICAgICAgIHRva2VuLm1hdGNoKC9zL2kpKSA/IGFyZ3NbaV0udmFsdWUgOiBhcmdzW2ldLnRvQ1NTKCk7CiAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi5tYXRjaCgvW0EtWl0kLykgPyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpIDogdmFsdWU7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICB9OwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgX2xvb3BfMShpKTsKICAgICAgICAgIH0KICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC8lJS9nLCAnJScpOwogICAgICAgICAgcmV0dXJuIG5ldyBRdW90ZWQoc3RyaW5nLnF1b3RlIHx8ICcnLCByZXN1bHQsIHN0cmluZy5lc2NhcGVkKTsKICAgICAgfQogIH07CgogIHZhciBzdmcgPSAoZnVuY3Rpb24gKGVudmlyb25tZW50KSB7CiAgICAgIHJldHVybiB7ICdzdmctZ3JhZGllbnQnOiBmdW5jdGlvbiAoZGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgdmFyIHN0b3BzOwogICAgICAgICAgICAgIHZhciBncmFkaWVudERpcmVjdGlvblN2ZzsKICAgICAgICAgICAgICB2YXIgZ3JhZGllbnRUeXBlID0gJ2xpbmVhcic7CiAgICAgICAgICAgICAgdmFyIHJlY3RhbmdsZURpbWVuc2lvbiA9ICd4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIic7CiAgICAgICAgICAgICAgdmFyIHJlbmRlckVudiA9IHsgY29tcHJlc3M6IGZhbHNlIH07CiAgICAgICAgICAgICAgdmFyIHJldHVybmVyOwogICAgICAgICAgICAgIHZhciBkaXJlY3Rpb25WYWx1ZSA9IGRpcmVjdGlvbi50b0NTUyhyZW5kZXJFbnYpOwogICAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICAgIHZhciBjb2xvcjsKICAgICAgICAgICAgICB2YXIgcG9zaXRpb247CiAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uVmFsdWU7CiAgICAgICAgICAgICAgdmFyIGFscGhhOwogICAgICAgICAgICAgIGZ1bmN0aW9uIHRocm93QXJndW1lbnREZXNjcmlwdG9yKCkgewogICAgICAgICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdBcmd1bWVudCcsCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnc3ZnLWdyYWRpZW50IGV4cGVjdHMgZGlyZWN0aW9uLCBzdGFydF9jb2xvciBbc3RhcnRfcG9zaXRpb25dLCBbY29sb3IgcG9zaXRpb24sXS4uLiwnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAnIGVuZF9jb2xvciBbZW5kX3Bvc2l0aW9uXSBvciBkaXJlY3Rpb24sIGNvbG9yIGxpc3QnIH07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsKICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1sxXS52YWx1ZS5sZW5ndGggPCAyKSB7CiAgICAgICAgICAgICAgICAgICAgICB0aHJvd0FyZ3VtZW50RGVzY3JpcHRvcigpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHN0b3BzID0gYXJndW1lbnRzWzFdLnZhbHVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykgewogICAgICAgICAgICAgICAgICB0aHJvd0FyZ3VtZW50RGVzY3JpcHRvcigpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgc3RvcHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvblZhbHVlKSB7CiAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvIGJvdHRvbSc6CiAgICAgICAgICAgICAgICAgICAgICBncmFkaWVudERpcmVjdGlvblN2ZyA9ICd4MT0iMCUiIHkxPSIwJSIgeDI9IjAlIiB5Mj0iMTAwJSInOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvIHJpZ2h0JzoKICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIic7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgY2FzZSAndG8gYm90dG9tIHJpZ2h0JzoKICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiJzsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICBjYXNlICd0byB0b3AgcmlnaHQnOgogICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMTAwJSIgeDI9IjEwMCUiIHkyPSIwJSInOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgJ2VsbGlwc2UnOgogICAgICAgICAgICAgICAgICBjYXNlICdlbGxpcHNlIGF0IGNlbnRlcic6CiAgICAgICAgICAgICAgICAgICAgICBncmFkaWVudFR5cGUgPSAncmFkaWFsJzsKICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ2N4PSI1MCUiIGN5PSI1MCUiIHI9Ijc1JSInOwogICAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlRGltZW5zaW9uID0gJ3g9Ii01MCIgeT0iLTUwIiB3aWR0aD0iMTAxIiBoZWlnaHQ9IjEwMSInOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdBcmd1bWVudCcsIG1lc3NhZ2U6ICdzdmctZ3JhZGllbnQgZGlyZWN0aW9uIG11c3QgYmUgXCd0byBib3R0b21cJywgXCd0byByaWdodFwnLCcgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIFwndG8gYm90dG9tIHJpZ2h0XCcsIFwndG8gdG9wIHJpZ2h0XCcgb3IgXCdlbGxpcHNlIGF0IGNlbnRlclwnJyB9OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm5lciA9ICI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDEgMVwiPjwiICsgZ3JhZGllbnRUeXBlICsgIkdyYWRpZW50IGlkPVwiZ1wiICIgKyBncmFkaWVudERpcmVjdGlvblN2ZyArICI+IjsKICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3RvcHMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgICAgaWYgKHN0b3BzW2ldIGluc3RhbmNlb2YgRXhwcmVzc2lvbikgewogICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBzdG9wc1tpXS52YWx1ZVswXTsKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gc3RvcHNbaV0udmFsdWVbMV07CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IHN0b3BzW2ldOwogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKCEoY29sb3IgaW5zdGFuY2VvZiBDb2xvcikgfHwgKCEoKGkgPT09IDAgfHwgaSArIDEgPT09IHN0b3BzLmxlbmd0aCkgJiYgcG9zaXRpb24gPT09IHVuZGVmaW5lZCkgJiYgIShwb3NpdGlvbiBpbnN0YW5jZW9mIERpbWVuc2lvbikpKSB7CiAgICAgICAgICAgICAgICAgICAgICB0aHJvd0FyZ3VtZW50RGVzY3JpcHRvcigpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uVmFsdWUgPSBwb3NpdGlvbiA/IHBvc2l0aW9uLnRvQ1NTKHJlbmRlckVudikgOiBpID09PSAwID8gJzAlJyA6ICcxMDAlJzsKICAgICAgICAgICAgICAgICAgYWxwaGEgPSBjb2xvci5hbHBoYTsKICAgICAgICAgICAgICAgICAgcmV0dXJuZXIgKz0gIjxzdG9wIG9mZnNldD1cIiIgKyBwb3NpdGlvblZhbHVlICsgIlwiIHN0b3AtY29sb3I9XCIiICsgY29sb3IudG9SR0IoKSArICJcIiIgKyAoYWxwaGEgPCAxID8gIiBzdG9wLW9wYWNpdHk9XCIiICsgYWxwaGEgKyAiXCIiIDogJycpICsgIi8+IjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuZXIgKz0gIjwvIiArIGdyYWRpZW50VHlwZSArICJHcmFkaWVudD48cmVjdCAiICsgcmVjdGFuZ2xlRGltZW5zaW9uICsgIiBmaWxsPVwidXJsKCNnKVwiIC8+PC9zdmc+IjsKICAgICAgICAgICAgICByZXR1cm5lciA9IGVuY29kZVVSSUNvbXBvbmVudChyZXR1cm5lcik7CiAgICAgICAgICAgICAgcmV0dXJuZXIgPSAiZGF0YTppbWFnZS9zdmcreG1sLCIgKyByZXR1cm5lcjsKICAgICAgICAgICAgICByZXR1cm4gbmV3IFVSTChuZXcgUXVvdGVkKCInIiArIHJldHVybmVyICsgIiciLCByZXR1cm5lciwgZmFsc2UsIHRoaXMuaW5kZXgsIHRoaXMuY3VycmVudEZpbGVJbmZvKSwgdGhpcy5pbmRleCwgdGhpcy5jdXJyZW50RmlsZUluZm8pOwogICAgICAgICAgfSB9OwogIH0pOwoKICB2YXIgaXNhID0gZnVuY3Rpb24gKG4sIFR5cGUpIHsgcmV0dXJuIChuIGluc3RhbmNlb2YgVHlwZSkgPyBLZXl3b3JkLlRydWUgOiBLZXl3b3JkLkZhbHNlOyB9OwogIHZhciBpc3VuaXQgPSBmdW5jdGlvbiAobiwgdW5pdCkgewogICAgICBpZiAodW5pdCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB0aHJvdyB7IHR5cGU6ICdBcmd1bWVudCcsIG1lc3NhZ2U6ICdtaXNzaW5nIHRoZSByZXF1aXJlZCBzZWNvbmQgYXJndW1lbnQgdG8gaXN1bml0LicgfTsKICAgICAgfQogICAgICB1bml0ID0gdHlwZW9mIHVuaXQudmFsdWUgPT09ICdzdHJpbmcnID8gdW5pdC52YWx1ZSA6IHVuaXQ7CiAgICAgIGlmICh0eXBlb2YgdW5pdCAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgIHRocm93IHsgdHlwZTogJ0FyZ3VtZW50JywgbWVzc2FnZTogJ1NlY29uZCBhcmd1bWVudCB0byBpc3VuaXQgc2hvdWxkIGJlIGEgdW5pdCBvciBhIHN0cmluZy4nIH07CiAgICAgIH0KICAgICAgcmV0dXJuIChuIGluc3RhbmNlb2YgRGltZW5zaW9uKSAmJiBuLnVuaXQuaXModW5pdCkgPyBLZXl3b3JkLlRydWUgOiBLZXl3b3JkLkZhbHNlOwogIH07CiAgdmFyIHR5cGVzID0gewogICAgICBpc3J1bGVzZXQ6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgICByZXR1cm4gaXNhKG4sIERldGFjaGVkUnVsZXNldCk7CiAgICAgIH0sCiAgICAgIGlzY29sb3I6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgICByZXR1cm4gaXNhKG4sIENvbG9yKTsKICAgICAgfSwKICAgICAgaXNudW1iZXI6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgICByZXR1cm4gaXNhKG4sIERpbWVuc2lvbik7CiAgICAgIH0sCiAgICAgIGlzc3RyaW5nOiBmdW5jdGlvbiAobikgewogICAgICAgICAgcmV0dXJuIGlzYShuLCBRdW90ZWQpOwogICAgICB9LAogICAgICBpc2tleXdvcmQ6IGZ1bmN0aW9uIChuKSB7CiAgICAgICAgICByZXR1cm4gaXNhKG4sIEtleXdvcmQpOwogICAgICB9LAogICAgICBpc3VybDogZnVuY3Rpb24gKG4pIHsKICAgICAgICAgIHJldHVybiBpc2EobiwgVVJMKTsKICAgICAgfSwKICAgICAgaXNwaXhlbDogZnVuY3Rpb24gKG4pIHsKICAgICAgICAgIHJldHVybiBpc3VuaXQobiwgJ3B4Jyk7CiAgICAgIH0sCiAgICAgIGlzcGVyY2VudGFnZTogZnVuY3Rpb24gKG4pIHsKICAgICAgICAgIHJldHVybiBpc3VuaXQobiwgJyUnKTsKICAgICAgfSwKICAgICAgaXNlbTogZnVuY3Rpb24gKG4pIHsKICAgICAgICAgIHJldHVybiBpc3VuaXQobiwgJ2VtJyk7CiAgICAgIH0sCiAgICAgIGlzdW5pdDogaXN1bml0LAogICAgICB1bml0OiBmdW5jdGlvbiAodmFsLCB1bml0KSB7CiAgICAgICAgICBpZiAoISh2YWwgaW5zdGFuY2VvZiBEaW1lbnNpb24pKSB7CiAgICAgICAgICAgICAgdGhyb3cgeyB0eXBlOiAnQXJndW1lbnQnLCBtZXNzYWdlOiAidGhlIGZpcnN0IGFyZ3VtZW50IHRvIHVuaXQgbXVzdCBiZSBhIG51bWJlciIgKyAodmFsIGluc3RhbmNlb2YgT3BlcmF0aW9uID8gJy4gSGF2ZSB5b3UgZm9yZ290dGVuIHBhcmVudGhlc2lzPycgOiAnJykgfTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh1bml0KSB7CiAgICAgICAgICAgICAgaWYgKHVuaXQgaW5zdGFuY2VvZiBLZXl3b3JkKSB7CiAgICAgICAgICAgICAgICAgIHVuaXQgPSB1bml0LnZhbHVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgdW5pdCA9IHVuaXQudG9DU1MoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB1bml0ID0gJyc7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbih2YWwudmFsdWUsIHVuaXQpOwogICAgICB9LAogICAgICAnZ2V0LXVuaXQnOiBmdW5jdGlvbiAobikgewogICAgICAgICAgcmV0dXJuIG5ldyBBbm9ueW1vdXMobi51bml0KTsKICAgICAgfQogIH07CgogIHZhciBGdW5jdGlvbnMgPSAoZnVuY3Rpb24gKGVudmlyb25tZW50KSB7CiAgICAgIHZhciBmdW5jdGlvbnMgPSB7IGZ1bmN0aW9uUmVnaXN0cnk6IGZ1bmN0aW9uUmVnaXN0cnksIGZ1bmN0aW9uQ2FsbGVyOiBmdW5jdGlvbkNhbGxlciB9OwogICAgICAvLyByZWdpc3RlciBmdW5jdGlvbnMKICAgICAgZnVuY3Rpb25SZWdpc3RyeS5hZGRNdWx0aXBsZShib29sZWFuJDEpOwogICAgICBmdW5jdGlvblJlZ2lzdHJ5LmFkZCgnZGVmYXVsdCcsIGRlZmF1bHRGdW5jLmV2YWwuYmluZChkZWZhdWx0RnVuYykpOwogICAgICBmdW5jdGlvblJlZ2lzdHJ5LmFkZE11bHRpcGxlKGNvbG9yKTsKICAgICAgZnVuY3Rpb25SZWdpc3RyeS5hZGRNdWx0aXBsZShjb2xvckJsZW5kKTsKICAgICAgZnVuY3Rpb25SZWdpc3RyeS5hZGRNdWx0aXBsZShkYXRhVXJpKGVudmlyb25tZW50KSk7CiAgICAgIGZ1bmN0aW9uUmVnaXN0cnkuYWRkTXVsdGlwbGUobGlzdCk7CiAgICAgIGZ1bmN0aW9uUmVnaXN0cnkuYWRkTXVsdGlwbGUobWF0aEZ1bmN0aW9ucyk7CiAgICAgIGZ1bmN0aW9uUmVnaXN0cnkuYWRkTXVsdGlwbGUobnVtYmVyJDEpOwogICAgICBmdW5jdGlvblJlZ2lzdHJ5LmFkZE11bHRpcGxlKHN0cmluZyk7CiAgICAgIGZ1bmN0aW9uUmVnaXN0cnkuYWRkTXVsdGlwbGUoc3ZnKCkpOwogICAgICBmdW5jdGlvblJlZ2lzdHJ5LmFkZE11bHRpcGxlKHR5cGVzKTsKICAgICAgcmV0dXJuIGZ1bmN0aW9uczsKICB9KTsKCiAgdmFyIHNvdXJjZU1hcE91dHB1dCA9IChmdW5jdGlvbiAoZW52aXJvbm1lbnQpIHsKICAgICAgdmFyIFNvdXJjZU1hcE91dHB1dCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGZ1bmN0aW9uIFNvdXJjZU1hcE91dHB1dChvcHRpb25zKSB7CiAgICAgICAgICAgICAgdGhpcy5fY3NzID0gW107CiAgICAgICAgICAgICAgdGhpcy5fcm9vdE5vZGUgPSBvcHRpb25zLnJvb3ROb2RlOwogICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRzTWFwID0gb3B0aW9ucy5jb250ZW50c01hcDsKICAgICAgICAgICAgICB0aGlzLl9jb250ZW50c0lnbm9yZWRDaGFyc01hcCA9IG9wdGlvbnMuY29udGVudHNJZ25vcmVkQ2hhcnNNYXA7CiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc291cmNlTWFwRmlsZW5hbWUpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRmlsZW5hbWUgPSBvcHRpb25zLnNvdXJjZU1hcEZpbGVuYW1lLnJlcGxhY2UoL1xcL2csICcvJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHRoaXMuX291dHB1dEZpbGVuYW1lID0gb3B0aW9ucy5vdXRwdXRGaWxlbmFtZTsKICAgICAgICAgICAgICB0aGlzLnNvdXJjZU1hcFVSTCA9IG9wdGlvbnMuc291cmNlTWFwVVJMOwogICAgICAgICAgICAgIGlmIChvcHRpb25zLnNvdXJjZU1hcEJhc2VwYXRoKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEJhc2VwYXRoID0gb3B0aW9ucy5zb3VyY2VNYXBCYXNlcGF0aC5yZXBsYWNlKC9cXC9nLCAnLycpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zb3VyY2VNYXBSb290cGF0aCkgewogICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBSb290cGF0aCA9IG9wdGlvbnMuc291cmNlTWFwUm9vdHBhdGgucmVwbGFjZSgvXFwvZywgJy8nKTsKICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZU1hcFJvb3RwYXRoLmNoYXJBdCh0aGlzLl9zb3VyY2VNYXBSb290cGF0aC5sZW5ndGggLSAxKSAhPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBSb290cGF0aCArPSAnLyc7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcFJvb3RwYXRoID0gJyc7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHRoaXMuX291dHB1dFNvdXJjZUZpbGVzID0gb3B0aW9ucy5vdXRwdXRTb3VyY2VGaWxlczsKICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBHZW5lcmF0b3JDb25zdHJ1Y3RvciA9IGVudmlyb25tZW50LmdldFNvdXJjZU1hcEdlbmVyYXRvcigpOwogICAgICAgICAgICAgIHRoaXMuX2xpbmVOdW1iZXIgPSAwOwogICAgICAgICAgICAgIHRoaXMuX2NvbHVtbiA9IDA7CiAgICAgICAgICB9CiAgICAgICAgICBTb3VyY2VNYXBPdXRwdXQucHJvdG90eXBlLnJlbW92ZUJhc2VwYXRoID0gZnVuY3Rpb24gKHBhdGgpIHsKICAgICAgICAgICAgICBpZiAodGhpcy5fc291cmNlTWFwQmFzZXBhdGggJiYgcGF0aC5pbmRleE9mKHRoaXMuX3NvdXJjZU1hcEJhc2VwYXRoKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcodGhpcy5fc291cmNlTWFwQmFzZXBhdGgubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnXFwnIHx8IHBhdGguY2hhckF0KDApID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygxKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcGF0aDsKICAgICAgICAgIH07CiAgICAgICAgICBTb3VyY2VNYXBPdXRwdXQucHJvdG90eXBlLm5vcm1hbGl6ZUZpbGVuYW1lID0gZnVuY3Rpb24gKGZpbGVuYW1lKSB7CiAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cXC9nLCAnLycpOwogICAgICAgICAgICAgIGZpbGVuYW1lID0gdGhpcy5yZW1vdmVCYXNlcGF0aChmaWxlbmFtZSk7CiAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLl9zb3VyY2VNYXBSb290cGF0aCB8fCAnJykgKyBmaWxlbmFtZTsKICAgICAgICAgIH07CiAgICAgICAgICBTb3VyY2VNYXBPdXRwdXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChjaHVuaywgZmlsZUluZm8sIGluZGV4LCBtYXBMaW5lcykgewogICAgICAgICAgICAgIC8vIGlnbm9yZSBhZGRpbmcgZW1wdHkgc3RyaW5ncwogICAgICAgICAgICAgIGlmICghY2h1bmspIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgbGluZXM7CiAgICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmVzOwogICAgICAgICAgICAgIHZhciBjb2x1bW5zOwogICAgICAgICAgICAgIHZhciBzb3VyY2VDb2x1bW5zOwogICAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICAgIGlmIChmaWxlSW5mbyAmJiBmaWxlSW5mby5maWxlbmFtZSkgewogICAgICAgICAgICAgICAgICB2YXIgaW5wdXRTb3VyY2UgPSB0aGlzLl9jb250ZW50c01hcFtmaWxlSW5mby5maWxlbmFtZV07CiAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB2YXJzL2Jhbm5lciBhZGRlZCB0byB0aGUgdG9wIG9mIHRoZSBmaWxlCiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c0lnbm9yZWRDaGFyc01hcFtmaWxlSW5mby5maWxlbmFtZV0pIHsKICAgICAgICAgICAgICAgICAgICAgIC8vIGFkanVzdCB0aGUgaW5kZXgKICAgICAgICAgICAgICAgICAgICAgIGluZGV4IC09IHRoaXMuX2NvbnRlbnRzSWdub3JlZENoYXJzTWFwW2ZpbGVJbmZvLmZpbGVuYW1lXTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAvLyBhZGp1c3QgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgaW5wdXRTb3VyY2UgPSBpbnB1dFNvdXJjZS5zbGljZSh0aGlzLl9jb250ZW50c0lnbm9yZWRDaGFyc01hcFtmaWxlSW5mby5maWxlbmFtZV0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICAgKiBpZ25vcmUgZW1wdHkgY29udGVudCwgb3IgZmFpbHNhZmUKICAgICAgICAgICAgICAgICAgICogaWYgY29udGVudHMgbWFwIGlzIGluY29ycmVjdAogICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgaWYgKGlucHV0U291cmNlID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nzcy5wdXNoKGNodW5rKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpbnB1dFNvdXJjZSA9IGlucHV0U291cmNlLnN1YnN0cmluZygwLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgIHNvdXJjZUxpbmVzID0gaW5wdXRTb3VyY2Uuc3BsaXQoJ1xuJyk7CiAgICAgICAgICAgICAgICAgIHNvdXJjZUNvbHVtbnMgPSBzb3VyY2VMaW5lc1tzb3VyY2VMaW5lcy5sZW5ndGggLSAxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbGluZXMgPSBjaHVuay5zcGxpdCgnXG4nKTsKICAgICAgICAgICAgICBjb2x1bW5zID0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgaWYgKGZpbGVJbmZvICYmIGZpbGVJbmZvLmZpbGVuYW1lKSB7CiAgICAgICAgICAgICAgICAgIGlmICghbWFwTGluZXMpIHsKICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEdlbmVyYXRvci5hZGRNYXBwaW5nKHsgZ2VuZXJhdGVkOiB7IGxpbmU6IHRoaXMuX2xpbmVOdW1iZXIgKyAxLCBjb2x1bW46IHRoaXMuX2NvbHVtbiB9LAogICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsOiB7IGxpbmU6IHNvdXJjZUxpbmVzLmxlbmd0aCwgY29sdW1uOiBzb3VyY2VDb2x1bW5zLmxlbmd0aCB9LAogICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5ub3JtYWxpemVGaWxlbmFtZShmaWxlSW5mby5maWxlbmFtZSkgfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBHZW5lcmF0b3IuYWRkTWFwcGluZyh7IGdlbmVyYXRlZDogeyBsaW5lOiB0aGlzLl9saW5lTnVtYmVyICsgaSArIDEsIGNvbHVtbjogaSA9PT0gMCA/IHRoaXMuX2NvbHVtbiA6IDAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWw6IHsgbGluZTogc291cmNlTGluZXMubGVuZ3RoICsgaSwgY29sdW1uOiBpID09PSAwID8gc291cmNlQ29sdW1ucy5sZW5ndGggOiAwIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5ub3JtYWxpemVGaWxlbmFtZShmaWxlSW5mby5maWxlbmFtZSkgfSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW4gKz0gY29sdW1ucy5sZW5ndGg7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICB0aGlzLl9saW5lTnVtYmVyICs9IGxpbmVzLmxlbmd0aCAtIDE7CiAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbiA9IGNvbHVtbnMubGVuZ3RoOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLl9jc3MucHVzaChjaHVuayk7CiAgICAgICAgICB9OwogICAgICAgICAgU291cmNlTWFwT3V0cHV0LnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jc3MubGVuZ3RoID09PSAwOwogICAgICAgICAgfTsKICAgICAgICAgIFNvdXJjZU1hcE91dHB1dC5wcm90b3R5cGUudG9DU1MgPSBmdW5jdGlvbiAoY29udGV4dCkgewogICAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEdlbmVyYXRvciA9IG5ldyB0aGlzLl9zb3VyY2VNYXBHZW5lcmF0b3JDb25zdHJ1Y3Rvcih7IGZpbGU6IHRoaXMuX291dHB1dEZpbGVuYW1lLCBzb3VyY2VSb290OiBudWxsIH0pOwogICAgICAgICAgICAgIGlmICh0aGlzLl9vdXRwdXRTb3VyY2VGaWxlcykgewogICAgICAgICAgICAgICAgICBmb3IgKHZhciBmaWxlbmFtZSBpbiB0aGlzLl9jb250ZW50c01hcCkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzTWFwLmhhc093blByb3BlcnR5KGZpbGVuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLl9jb250ZW50c01hcFtmaWxlbmFtZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzSWdub3JlZENoYXJzTWFwW2ZpbGVuYW1lXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2Uuc2xpY2UodGhpcy5fY29udGVudHNJZ25vcmVkQ2hhcnNNYXBbZmlsZW5hbWVdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwR2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQodGhpcy5ub3JtYWxpemVGaWxlbmFtZShmaWxlbmFtZSksIHNvdXJjZSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdGhpcy5fcm9vdE5vZGUuZ2VuQ1NTKGNvbnRleHQsIHRoaXMpOwogICAgICAgICAgICAgIGlmICh0aGlzLl9jc3MubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICB2YXIgc291cmNlTWFwVVJMID0gdm9pZCAwOwogICAgICAgICAgICAgICAgICB2YXIgc291cmNlTWFwQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3NvdXJjZU1hcEdlbmVyYXRvci50b0pTT04oKSk7CiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvdXJjZU1hcFVSTCkgewogICAgICAgICAgICAgICAgICAgICAgc291cmNlTWFwVVJMID0gdGhpcy5zb3VyY2VNYXBVUkw7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fc291cmNlTWFwRmlsZW5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZU1hcFVSTCA9IHRoaXMuX3NvdXJjZU1hcEZpbGVuYW1lOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlTWFwVVJMID0gc291cmNlTWFwVVJMOwogICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZU1hcCA9IHNvdXJjZU1hcENvbnRlbnQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jc3Muam9pbignJyk7CiAgICAgICAgICB9OwogICAgICAgICAgcmV0dXJuIFNvdXJjZU1hcE91dHB1dDsKICAgICAgfSgpKTsKICAgICAgcmV0dXJuIFNvdXJjZU1hcE91dHB1dDsKICB9KTsKCiAgdmFyIHNvdXJjZU1hcEJ1aWxkZXIgPSAoZnVuY3Rpb24gKFNvdXJjZU1hcE91dHB1dCwgZW52aXJvbm1lbnQpIHsKICAgICAgdmFyIFNvdXJjZU1hcEJ1aWxkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBmdW5jdGlvbiBTb3VyY2VNYXBCdWlsZGVyKG9wdGlvbnMpIHsKICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgICAgICAgfQogICAgICAgICAgU291cmNlTWFwQnVpbGRlci5wcm90b3R5cGUudG9DU1MgPSBmdW5jdGlvbiAocm9vdE5vZGUsIG9wdGlvbnMsIGltcG9ydHMpIHsKICAgICAgICAgICAgICB2YXIgc291cmNlTWFwT3V0cHV0ID0gbmV3IFNvdXJjZU1hcE91dHB1dCh7CiAgICAgICAgICAgICAgICAgIGNvbnRlbnRzSWdub3JlZENoYXJzTWFwOiBpbXBvcnRzLmNvbnRlbnRzSWdub3JlZENoYXJzLAogICAgICAgICAgICAgICAgICByb290Tm9kZTogcm9vdE5vZGUsCiAgICAgICAgICAgICAgICAgIGNvbnRlbnRzTWFwOiBpbXBvcnRzLmNvbnRlbnRzLAogICAgICAgICAgICAgICAgICBzb3VyY2VNYXBGaWxlbmFtZTogdGhpcy5vcHRpb25zLnNvdXJjZU1hcEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICBzb3VyY2VNYXBVUkw6IHRoaXMub3B0aW9ucy5zb3VyY2VNYXBVUkwsCiAgICAgICAgICAgICAgICAgIG91dHB1dEZpbGVuYW1lOiB0aGlzLm9wdGlvbnMuc291cmNlTWFwT3V0cHV0RmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgIHNvdXJjZU1hcEJhc2VwYXRoOiB0aGlzLm9wdGlvbnMuc291cmNlTWFwQmFzZXBhdGgsCiAgICAgICAgICAgICAgICAgIHNvdXJjZU1hcFJvb3RwYXRoOiB0aGlzLm9wdGlvbnMuc291cmNlTWFwUm9vdHBhdGgsCiAgICAgICAgICAgICAgICAgIG91dHB1dFNvdXJjZUZpbGVzOiB0aGlzLm9wdGlvbnMub3V0cHV0U291cmNlRmlsZXMsCiAgICAgICAgICAgICAgICAgIHNvdXJjZU1hcEdlbmVyYXRvcjogdGhpcy5vcHRpb25zLnNvdXJjZU1hcEdlbmVyYXRvciwKICAgICAgICAgICAgICAgICAgc291cmNlTWFwRmlsZUlubGluZTogdGhpcy5vcHRpb25zLnNvdXJjZU1hcEZpbGVJbmxpbmUsCiAgICAgICAgICAgICAgICAgIGRpc2FibGVTb3VyY2VtYXBBbm5vdGF0aW9uOiB0aGlzLm9wdGlvbnMuZGlzYWJsZVNvdXJjZW1hcEFubm90YXRpb24KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB2YXIgY3NzID0gc291cmNlTWFwT3V0cHV0LnRvQ1NTKG9wdGlvbnMpOwogICAgICAgICAgICAgIHRoaXMuc291cmNlTWFwID0gc291cmNlTWFwT3V0cHV0LnNvdXJjZU1hcDsKICAgICAgICAgICAgICB0aGlzLnNvdXJjZU1hcFVSTCA9IHNvdXJjZU1hcE91dHB1dC5zb3VyY2VNYXBVUkw7CiAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VNYXBJbnB1dEZpbGVuYW1lKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlTWFwSW5wdXRGaWxlbmFtZSA9IHNvdXJjZU1hcE91dHB1dC5ub3JtYWxpemVGaWxlbmFtZSh0aGlzLm9wdGlvbnMuc291cmNlTWFwSW5wdXRGaWxlbmFtZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlTWFwQmFzZXBhdGggIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNvdXJjZU1hcFVSTCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlTWFwVVJMID0gc291cmNlTWFwT3V0cHV0LnJlbW92ZUJhc2VwYXRoKHRoaXMuc291cmNlTWFwVVJMKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIGNzcyArIHRoaXMuZ2V0Q1NTQXBwZW5kYWdlKCk7CiAgICAgICAgICB9OwogICAgICAgICAgU291cmNlTWFwQnVpbGRlci5wcm90b3R5cGUuZ2V0Q1NTQXBwZW5kYWdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIHZhciBzb3VyY2VNYXBVUkwgPSB0aGlzLnNvdXJjZU1hcFVSTDsKICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNvdXJjZU1hcEZpbGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlTWFwID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBzb3VyY2VNYXBVUkwgPSAiZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwiICsgZW52aXJvbm1lbnQuZW5jb2RlQmFzZTY0KHRoaXMuc291cmNlTWFwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlU291cmNlbWFwQW5ub3RhdGlvbikgewogICAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChzb3VyY2VNYXBVUkwpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuICIvKiMgc291cmNlTWFwcGluZ1VSTD0iICsgc291cmNlTWFwVVJMICsgIiAqLyI7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgIH07CiAgICAgICAgICBTb3VyY2VNYXBCdWlsZGVyLnByb3RvdHlwZS5nZXRFeHRlcm5hbFNvdXJjZU1hcCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VNYXA7CiAgICAgICAgICB9OwogICAgICAgICAgU291cmNlTWFwQnVpbGRlci5wcm90b3R5cGUuc2V0RXh0ZXJuYWxTb3VyY2VNYXAgPSBmdW5jdGlvbiAoc291cmNlTWFwKSB7CiAgICAgICAgICAgICAgdGhpcy5zb3VyY2VNYXAgPSBzb3VyY2VNYXA7CiAgICAgICAgICB9OwogICAgICAgICAgU291cmNlTWFwQnVpbGRlci5wcm90b3R5cGUuaXNJbmxpbmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zb3VyY2VNYXBGaWxlSW5saW5lOwogICAgICAgICAgfTsKICAgICAgICAgIFNvdXJjZU1hcEJ1aWxkZXIucHJvdG90eXBlLmdldFNvdXJjZU1hcFVSTCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VNYXBVUkw7CiAgICAgICAgICB9OwogICAgICAgICAgU291cmNlTWFwQnVpbGRlci5wcm90b3R5cGUuZ2V0T3V0cHV0RmlsZW5hbWUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zb3VyY2VNYXBPdXRwdXRGaWxlbmFtZTsKICAgICAgICAgIH07CiAgICAgICAgICBTb3VyY2VNYXBCdWlsZGVyLnByb3RvdHlwZS5nZXRJbnB1dEZpbGVuYW1lID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLnNvdXJjZU1hcElucHV0RmlsZW5hbWU7CiAgICAgICAgICB9OwogICAgICAgICAgcmV0dXJuIFNvdXJjZU1hcEJ1aWxkZXI7CiAgICAgIH0oKSk7CiAgICAgIHJldHVybiBTb3VyY2VNYXBCdWlsZGVyOwogIH0pOwoKICB2YXIgdHJhbnNmb3JtVHJlZSA9IChmdW5jdGlvbiAocm9vdCwgb3B0aW9ucykgewogICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfQogICAgICB2YXIgZXZhbGRSb290OwogICAgICB2YXIgdmFyaWFibGVzID0gb3B0aW9ucy52YXJpYWJsZXM7CiAgICAgIHZhciBldmFsRW52ID0gbmV3IGNvbnRleHRzLkV2YWwob3B0aW9ucyk7CiAgICAgIC8vCiAgICAgIC8vIEFsbG93cyBzZXR0aW5nIHZhcmlhYmxlcyB3aXRoIGEgaGFzaCwgc286CiAgICAgIC8vCiAgICAgIC8vICAgYHsgY29sb3I6IG5ldyB0cmVlLkNvbG9yKCcjZjAxJykgfWAgd2lsbCBiZWNvbWU6CiAgICAgIC8vCiAgICAgIC8vICAgbmV3IHRyZWUuRGVjbGFyYXRpb24oJ0Bjb2xvcicsCiAgICAgIC8vICAgICBuZXcgdHJlZS5WYWx1ZShbCiAgICAgIC8vICAgICAgIG5ldyB0cmVlLkV4cHJlc3Npb24oWwogICAgICAvLyAgICAgICAgIG5ldyB0cmVlLkNvbG9yKCcjZjAxJykKICAgICAgLy8gICAgICAgXSkKICAgICAgLy8gICAgIF0pCiAgICAgIC8vICAgKQogICAgICAvLwogICAgICBpZiAodHlwZW9mIHZhcmlhYmxlcyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFyaWFibGVzKSkgewogICAgICAgICAgdmFyaWFibGVzID0gT2JqZWN0LmtleXModmFyaWFibGVzKS5tYXAoZnVuY3Rpb24gKGspIHsKICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB2YXJpYWJsZXNba107CiAgICAgICAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiB0cmVlLlZhbHVlKSkgewogICAgICAgICAgICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIHRyZWUuRXhwcmVzc2lvbikpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IHRyZWUuRXhwcmVzc2lvbihbdmFsdWVdKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyB0cmVlLlZhbHVlKFt2YWx1ZV0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gbmV3IHRyZWUuRGVjbGFyYXRpb24oIkAiICsgaywgdmFsdWUsIGZhbHNlLCBudWxsLCAwKTsKICAgICAgICAgIH0pOwogICAgICAgICAgZXZhbEVudi5mcmFtZXMgPSBbbmV3IHRyZWUuUnVsZXNldChudWxsLCB2YXJpYWJsZXMpXTsKICAgICAgfQogICAgICB2YXIgdmlzaXRvcnMkMSA9IFsKICAgICAgICAgIG5ldyB2aXNpdG9ycy5Kb2luU2VsZWN0b3JWaXNpdG9yKCksCiAgICAgICAgICBuZXcgdmlzaXRvcnMuTWFya1Zpc2libGVTZWxlY3RvcnNWaXNpdG9yKHRydWUpLAogICAgICAgICAgbmV3IHZpc2l0b3JzLkV4dGVuZFZpc2l0b3IoKSwKICAgICAgICAgIG5ldyB2aXNpdG9ycy5Ub0NTU1Zpc2l0b3IoeyBjb21wcmVzczogQm9vbGVhbihvcHRpb25zLmNvbXByZXNzKSB9KQogICAgICBdOwogICAgICB2YXIgcHJlRXZhbFZpc2l0b3JzID0gW107CiAgICAgIHZhciB2OwogICAgICB2YXIgdmlzaXRvckl0ZXJhdG9yOwogICAgICAvKioKICAgICAgICogZmlyc3QoKSAvIGdldCgpIGFsbG93cyB2aXNpdG9ycyB0byBiZSBhZGRlZCB3aGlsZSB2aXNpdGluZwogICAgICAgKgogICAgICAgKiBAdG9kbyBBZGQgc2NvcGluZyBmb3IgdmlzaXRvcnMganVzdCBsaWtlIGZ1bmN0aW9ucyBmb3IgQHBsdWdpbjsgcmlnaHQgbm93IHRoZXkncmUgZ2xvYmFsCiAgICAgICAqLwogICAgICBpZiAob3B0aW9ucy5wbHVnaW5NYW5hZ2VyKSB7CiAgICAgICAgICB2aXNpdG9ySXRlcmF0b3IgPSBvcHRpb25zLnBsdWdpbk1hbmFnZXIudmlzaXRvcigpOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgICAgICB2aXNpdG9ySXRlcmF0b3IuZmlyc3QoKTsKICAgICAgICAgICAgICB3aGlsZSAoKHYgPSB2aXNpdG9ySXRlcmF0b3IuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgIGlmICh2LmlzUHJlRXZhbFZpc2l0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwIHx8IHByZUV2YWxWaXNpdG9ycy5pbmRleE9mKHYpID09PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHByZUV2YWxWaXNpdG9ycy5wdXNoKHYpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHYucnVuKHJvb3QpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgfHwgdmlzaXRvcnMkMS5pbmRleE9mKHYpID09PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2LmlzUHJlVmlzaXRvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9ycyQxLnVuc2hpZnQodik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9ycyQxLnB1c2godik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIGV2YWxkUm9vdCA9IHJvb3QuZXZhbChldmFsRW52KTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aXNpdG9ycyQxLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2aXNpdG9ycyQxW2ldLnJ1bihldmFsZFJvb3QpOwogICAgICB9CiAgICAgIC8vIFJ1biBhbnkgcmVtYWluaW5nIHZpc2l0b3JzIGFkZGVkIGFmdGVyIGV2YWwgcGFzcwogICAgICBpZiAob3B0aW9ucy5wbHVnaW5NYW5hZ2VyKSB7CiAgICAgICAgICB2aXNpdG9ySXRlcmF0b3IuZmlyc3QoKTsKICAgICAgICAgIHdoaWxlICgodiA9IHZpc2l0b3JJdGVyYXRvci5nZXQoKSkpIHsKICAgICAgICAgICAgICBpZiAodmlzaXRvcnMkMS5pbmRleE9mKHYpID09PSAtMSAmJiBwcmVFdmFsVmlzaXRvcnMuaW5kZXhPZih2KSA9PT0gLTEpIHsKICAgICAgICAgICAgICAgICAgdi5ydW4oZXZhbGRSb290KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGV2YWxkUm9vdDsKICB9KTsKCiAgdmFyIHBhcnNlVHJlZSA9IChmdW5jdGlvbiAoU291cmNlTWFwQnVpbGRlcikgewogICAgICB2YXIgUGFyc2VUcmVlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewogICAgICAgICAgZnVuY3Rpb24gUGFyc2VUcmVlKHJvb3QsIGltcG9ydHMpIHsKICAgICAgICAgICAgICB0aGlzLnJvb3QgPSByb290OwogICAgICAgICAgICAgIHRoaXMuaW1wb3J0cyA9IGltcG9ydHM7CiAgICAgICAgICB9CiAgICAgICAgICBQYXJzZVRyZWUucHJvdG90eXBlLnRvQ1NTID0gZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICAgICAgICB2YXIgZXZhbGRSb290OwogICAgICAgICAgICAgIHZhciByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICB2YXIgc291cmNlTWFwQnVpbGRlcjsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICBldmFsZFJvb3QgPSB0cmFuc2Zvcm1UcmVlKHRoaXMucm9vdCwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBMZXNzRXJyb3IoZSwgdGhpcy5pbXBvcnRzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgdmFyIGNvbXByZXNzID0gQm9vbGVhbihvcHRpb25zLmNvbXByZXNzKTsKICAgICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzKSB7CiAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybignVGhlIGNvbXByZXNzIG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkLiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAnV2UgcmVjb21tZW5kIHlvdSB1c2UgYSBkZWRpY2F0ZWQgY3NzIG1pbmlmaWVyLCBmb3IgaW5zdGFuY2Ugc2VlIGxlc3MtcGx1Z2luLWNsZWFuLWNzcy4nKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB2YXIgdG9DU1NPcHRpb25zID0gewogICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3M6IGNvbXByZXNzLAogICAgICAgICAgICAgICAgICAgICAgZHVtcExpbmVOdW1iZXJzOiBvcHRpb25zLmR1bXBMaW5lTnVtYmVycywKICAgICAgICAgICAgICAgICAgICAgIHN0cmljdFVuaXRzOiBCb29sZWFuKG9wdGlvbnMuc3RyaWN0VW5pdHMpLAogICAgICAgICAgICAgICAgICAgICAgbnVtUHJlY2lzaW9uOiA4CiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNvdXJjZU1hcCkgewogICAgICAgICAgICAgICAgICAgICAgc291cmNlTWFwQnVpbGRlciA9IG5ldyBTb3VyY2VNYXBCdWlsZGVyKG9wdGlvbnMuc291cmNlTWFwKTsKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jc3MgPSBzb3VyY2VNYXBCdWlsZGVyLnRvQ1NTKGV2YWxkUm9vdCwgdG9DU1NPcHRpb25zLCB0aGlzLmltcG9ydHMpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmNzcyA9IGV2YWxkUm9vdC50b0NTUyh0b0NTU09wdGlvbnMpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBMZXNzRXJyb3IoZSwgdGhpcy5pbXBvcnRzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucGx1Z2luTWFuYWdlcikgewogICAgICAgICAgICAgICAgICB2YXIgcG9zdFByb2Nlc3NvcnMgPSBvcHRpb25zLnBsdWdpbk1hbmFnZXIuZ2V0UG9zdFByb2Nlc3NvcnMoKTsKICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3N0UHJvY2Vzc29ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmNzcyA9IHBvc3RQcm9jZXNzb3JzW2ldLnByb2Nlc3MocmVzdWx0LmNzcywgeyBzb3VyY2VNYXA6IHNvdXJjZU1hcEJ1aWxkZXIsIG9wdGlvbnM6IG9wdGlvbnMsIGltcG9ydHM6IHRoaXMuaW1wb3J0cyB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zb3VyY2VNYXApIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1hcCA9IHNvdXJjZU1hcEJ1aWxkZXIuZ2V0RXh0ZXJuYWxTb3VyY2VNYXAoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmVzdWx0LmltcG9ydHMgPSBbXTsKICAgICAgICAgICAgICBmb3IgKHZhciBmaWxlIGluIHRoaXMuaW1wb3J0cy5maWxlcykgewogICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbXBvcnRzLmZpbGVzLmhhc093blByb3BlcnR5KGZpbGUpICYmIGZpbGUgIT09IHRoaXMuaW1wb3J0cy5yb290RmlsZW5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbXBvcnRzLnB1c2goZmlsZSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH07CiAgICAgICAgICByZXR1cm4gUGFyc2VUcmVlOwogICAgICB9KCkpOwogICAgICByZXR1cm4gUGFyc2VUcmVlOwogIH0pOwoKICBmdW5jdGlvbiBpbXBvcnRNYW5hZ2VyIChlbnZpcm9ubWVudCkgewogICAgICAvLyBGaWxlSW5mbyA9IHsKICAgICAgLy8gICdyZXdyaXRlVXJscycgLSBvcHRpb24gLSB3aGV0aGVyIHRvIGFkanVzdCBVUkwncyB0byBiZSByZWxhdGl2ZQogICAgICAvLyAgJ2ZpbGVuYW1lJyAtIGZ1bGwgcmVzb2x2ZWQgZmlsZW5hbWUgb2YgY3VycmVudCBmaWxlCiAgICAgIC8vICAncm9vdHBhdGgnIC0gcGF0aCB0byBhcHBlbmQgdG8gbm9ybWFsIFVSTHMgZm9yIHRoaXMgbm9kZQogICAgICAvLyAgJ2N1cnJlbnREaXJlY3RvcnknIC0gcGF0aCB0byB0aGUgY3VycmVudCBmaWxlLCBhYnNvbHV0ZQogICAgICAvLyAgJ3Jvb3RGaWxlbmFtZScgLSBmaWxlbmFtZSBvZiB0aGUgYmFzZSBmaWxlCiAgICAgIC8vICAnZW50cnlQYXRoJyAtIGFic29sdXRlIHBhdGggdG8gdGhlIGVudHJ5IGZpbGUKICAgICAgLy8gICdyZWZlcmVuY2UnIC0gd2hldGhlciB0aGUgZmlsZSBzaG91bGQgbm90IGJlIG91dHB1dCBhbmQgb25seSBvdXRwdXQgcGFydHMgdGhhdCBhcmUgcmVmZXJlbmNlZAogICAgICB2YXIgSW1wb3J0TWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGZ1bmN0aW9uIEltcG9ydE1hbmFnZXIobGVzcywgY29udGV4dCwgcm9vdEZpbGVJbmZvKSB7CiAgICAgICAgICAgICAgdGhpcy5sZXNzID0gbGVzczsKICAgICAgICAgICAgICB0aGlzLnJvb3RGaWxlbmFtZSA9IHJvb3RGaWxlSW5mby5maWxlbmFtZTsKICAgICAgICAgICAgICB0aGlzLnBhdGhzID0gY29udGV4dC5wYXRocyB8fCBbXTsgLy8gU2VhcmNoIHBhdGhzLCB3aGVuIGltcG9ydGluZwogICAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSB7fTsgLy8gbWFwIC0gZmlsZW5hbWUgdG8gY29udGVudHMgb2YgYWxsIHRoZSBmaWxlcwogICAgICAgICAgICAgIHRoaXMuY29udGVudHNJZ25vcmVkQ2hhcnMgPSB7fTsgLy8gbWFwIC0gZmlsZW5hbWUgdG8gbGluZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGZpbGUgdG8gaWdub3JlCiAgICAgICAgICAgICAgdGhpcy5taW1lID0gY29udGV4dC5taW1lOwogICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBudWxsOwogICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7CiAgICAgICAgICAgICAgLy8gRGVwcmVjYXRlZD8gVW51c2VkIG91dHNpZGUgb2YgaGVyZSwgY291bGQgYmUgdXNlZnVsLgogICAgICAgICAgICAgIHRoaXMucXVldWUgPSBbXTsgLy8gRmlsZXMgd2hpY2ggaGF2ZW4ndCBiZWVuIGltcG9ydGVkIHlldAogICAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB7fTsgLy8gSG9sZHMgdGhlIGltcG9ydGVkIHBhcnNlIHRyZWVzLgogICAgICAgICAgfQogICAgICAgICAgLyoqCiAgICAgICAgICAgKiBBZGQgYW4gaW1wb3J0IHRvIGJlIGltcG9ydGVkCiAgICAgICAgICAgKiBAcGFyYW0gcGF0aCAtIHRoZSByYXcgcGF0aAogICAgICAgICAgICogQHBhcmFtIHRyeUFwcGVuZEV4dGVuc2lvbiAtIHdoZXRoZXIgdG8gdHJ5IGFwcGVuZGluZyBhIGZpbGUgZXh0ZW5zaW9uICgubGVzcyBvciAuanMgaWYgdGhlIHBhdGggaGFzIG5vIGV4dGVuc2lvbikKICAgICAgICAgICAqIEBwYXJhbSBjdXJyZW50RmlsZUluZm8gLSB0aGUgY3VycmVudCBmaWxlIGluZm8gKHVzZWQgZm9yIGluc3RhbmNlIHRvIHdvcmsgb3V0IHJlbGF0aXZlIHBhdGhzKQogICAgICAgICAgICogQHBhcmFtIGltcG9ydE9wdGlvbnMgLSBpbXBvcnQgb3B0aW9ucwogICAgICAgICAgICogQHBhcmFtIGNhbGxiYWNrIC0gY2FsbGJhY2sgZm9yIHdoZW4gaXQgaXMgaW1wb3J0ZWQKICAgICAgICAgICAqLwogICAgICAgICAgSW1wb3J0TWFuYWdlci5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChwYXRoLCB0cnlBcHBlbmRFeHRlbnNpb24sIGN1cnJlbnRGaWxlSW5mbywgaW1wb3J0T3B0aW9ucywgY2FsbGJhY2spIHsKICAgICAgICAgICAgICB2YXIgaW1wb3J0TWFuYWdlciA9IHRoaXMsIHBsdWdpbkxvYWRlciA9IHRoaXMuY29udGV4dC5wbHVnaW5NYW5hZ2VyLkxvYWRlcjsKICAgICAgICAgICAgICB0aGlzLnF1ZXVlLnB1c2gocGF0aCk7CiAgICAgICAgICAgICAgdmFyIGZpbGVQYXJzZWRGdW5jID0gZnVuY3Rpb24gKGUsIHJvb3QsIGZ1bGxQYXRoKSB7CiAgICAgICAgICAgICAgICAgIGltcG9ydE1hbmFnZXIucXVldWUuc3BsaWNlKGltcG9ydE1hbmFnZXIucXVldWUuaW5kZXhPZihwYXRoKSwgMSk7IC8vIFJlbW92ZSB0aGUgcGF0aCBmcm9tIHRoZSBxdWV1ZQogICAgICAgICAgICAgICAgICB2YXIgaW1wb3J0ZWRFcXVhbHNSb290ID0gZnVsbFBhdGggPT09IGltcG9ydE1hbmFnZXIucm9vdEZpbGVuYW1lOwogICAgICAgICAgICAgICAgICBpZiAoaW1wb3J0T3B0aW9ucy5vcHRpb25hbCAmJiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB7IHJ1bGVzOiBbXSB9LCBmYWxzZSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVGhlIGZpbGUgIiArIGZ1bGxQYXRoICsgIiB3YXMgc2tpcHBlZCBiZWNhdXNlIGl0IHdhcyBub3QgZm91bmQgYW5kIHRoZSBpbXBvcnQgd2FzIG1hcmtlZCBvcHRpb25hbC4iKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIC8vIElubGluZSBpbXBvcnRzIGFyZW4ndCBjYWNoZWQgaGVyZS4KICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHN0YXJ0IHRvIGNhY2hlIHRoZW0sIHBsZWFzZSBtYWtlIHN1cmUgdGhleSB3b24ndCBjb25mbGljdCB3aXRoIG5vbi1pbmxpbmUgaW1wb3J0cyBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgIC8vIHNhbWUgbmFtZSBhcyB0aGV5IHVzZWQgdG8gZG8gYmVmb3JlIHRoaXMgY29tbWVudCBhbmQgdGhlIGNvbmRpdGlvbiBiZWxvdyBoYXZlIGJlZW4gYWRkZWQuCiAgICAgICAgICAgICAgICAgICAgICBpZiAoIWltcG9ydE1hbmFnZXIuZmlsZXNbZnVsbFBhdGhdICYmICFpbXBvcnRPcHRpb25zLmlubGluZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydE1hbmFnZXIuZmlsZXNbZnVsbFBhdGhdID0geyByb290OiByb290LCBvcHRpb25zOiBpbXBvcnRPcHRpb25zIH07CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiAhaW1wb3J0TWFuYWdlci5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydE1hbmFnZXIuZXJyb3IgPSBlOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZSwgcm9vdCwgaW1wb3J0ZWRFcXVhbHNSb290LCBmdWxsUGF0aCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIHZhciBuZXdGaWxlSW5mbyA9IHsKICAgICAgICAgICAgICAgICAgcmV3cml0ZVVybHM6IHRoaXMuY29udGV4dC5yZXdyaXRlVXJscywKICAgICAgICAgICAgICAgICAgZW50cnlQYXRoOiBjdXJyZW50RmlsZUluZm8uZW50cnlQYXRoLAogICAgICAgICAgICAgICAgICByb290cGF0aDogY3VycmVudEZpbGVJbmZvLnJvb3RwYXRoLAogICAgICAgICAgICAgICAgICByb290RmlsZW5hbWU6IGN1cnJlbnRGaWxlSW5mby5yb290RmlsZW5hbWUKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIHZhciBmaWxlTWFuYWdlciA9IGVudmlyb25tZW50LmdldEZpbGVNYW5hZ2VyKHBhdGgsIGN1cnJlbnRGaWxlSW5mby5jdXJyZW50RGlyZWN0b3J5LCB0aGlzLmNvbnRleHQsIGVudmlyb25tZW50KTsKICAgICAgICAgICAgICBpZiAoIWZpbGVNYW5hZ2VyKSB7CiAgICAgICAgICAgICAgICAgIGZpbGVQYXJzZWRGdW5jKHsgbWVzc2FnZTogIkNvdWxkIG5vdCBmaW5kIGEgZmlsZS1tYW5hZ2VyIGZvciAiICsgcGF0aCB9KTsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgbG9hZEZpbGVDYWxsYmFjayA9IGZ1bmN0aW9uIChsb2FkZWRGaWxlKSB7CiAgICAgICAgICAgICAgICAgIHZhciBwbHVnaW47CiAgICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZEZpbGVuYW1lID0gbG9hZGVkRmlsZS5maWxlbmFtZTsKICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRzID0gbG9hZGVkRmlsZS5jb250ZW50cy5yZXBsYWNlKC9eXHVGRUZGLywgJycpOwogICAgICAgICAgICAgICAgICAvLyBQYXNzIG9uIGFuIHVwZGF0ZWQgcm9vdHBhdGggaWYgcGF0aCBvZiBpbXBvcnRlZCBmaWxlIGlzIHJlbGF0aXZlIGFuZCBmaWxlCiAgICAgICAgICAgICAgICAgIC8vIGlzIGluIGEgKHN1YnxzdXApIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlczoKICAgICAgICAgICAgICAgICAgLy8gLSBJZiBwYXRoIG9mIGltcG9ydGVkIGZpbGUgaXMgJ21vZHVsZS9uYXYvbmF2Lmxlc3MnIGFuZCByb290cGF0aCBpcyAnbGVzcy8nLAogICAgICAgICAgICAgICAgICAvLyAgIHRoZW4gcm9vdHBhdGggc2hvdWxkIGJlY29tZSAnbGVzcy9tb2R1bGUvbmF2LycKICAgICAgICAgICAgICAgICAgLy8gLSBJZiBwYXRoIG9mIGltcG9ydGVkIGZpbGUgaXMgJy4uL21peGlucy5sZXNzJyBhbmQgcm9vdHBhdGggaXMgJ2xlc3MvJywKICAgICAgICAgICAgICAgICAgLy8gICB0aGVuIHJvb3RwYXRoIHNob3VsZCBiZWNvbWUgJ2xlc3MvLi4vJwogICAgICAgICAgICAgICAgICBuZXdGaWxlSW5mby5jdXJyZW50RGlyZWN0b3J5ID0gZmlsZU1hbmFnZXIuZ2V0UGF0aChyZXNvbHZlZEZpbGVuYW1lKTsKICAgICAgICAgICAgICAgICAgaWYgKG5ld0ZpbGVJbmZvLnJld3JpdGVVcmxzKSB7CiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWxlSW5mby5yb290cGF0aCA9IGZpbGVNYW5hZ2VyLmpvaW4oKGltcG9ydE1hbmFnZXIuY29udGV4dC5yb290cGF0aCB8fCAnJyksIGZpbGVNYW5hZ2VyLnBhdGhEaWZmKG5ld0ZpbGVJbmZvLmN1cnJlbnREaXJlY3RvcnksIG5ld0ZpbGVJbmZvLmVudHJ5UGF0aCkpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlTWFuYWdlci5pc1BhdGhBYnNvbHV0ZShuZXdGaWxlSW5mby5yb290cGF0aCkgJiYgZmlsZU1hbmFnZXIuYWx3YXlzTWFrZVBhdGhzQWJzb2x1dGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGVJbmZvLnJvb3RwYXRoID0gZmlsZU1hbmFnZXIuam9pbihuZXdGaWxlSW5mby5lbnRyeVBhdGgsIG5ld0ZpbGVJbmZvLnJvb3RwYXRoKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBuZXdGaWxlSW5mby5maWxlbmFtZSA9IHJlc29sdmVkRmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgIHZhciBuZXdFbnYgPSBuZXcgY29udGV4dHMuUGFyc2UoaW1wb3J0TWFuYWdlci5jb250ZXh0KTsKICAgICAgICAgICAgICAgICAgbmV3RW52LnByb2Nlc3NJbXBvcnRzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgIGltcG9ydE1hbmFnZXIuY29udGVudHNbcmVzb2x2ZWRGaWxlbmFtZV0gPSBjb250ZW50czsKICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGaWxlSW5mby5yZWZlcmVuY2UgfHwgaW1wb3J0T3B0aW9ucy5yZWZlcmVuY2UpIHsKICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGVJbmZvLnJlZmVyZW5jZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKGltcG9ydE9wdGlvbnMuaXNQbHVnaW4pIHsKICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbiA9IHBsdWdpbkxvYWRlci5ldmFsUGx1Z2luKGNvbnRlbnRzLCBuZXdFbnYsIGltcG9ydE1hbmFnZXIsIGltcG9ydE9wdGlvbnMucGx1Z2luQXJncywgbmV3RmlsZUluZm8pOwogICAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpbiBpbnN0YW5jZW9mIExlc3NFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVQYXJzZWRGdW5jKHBsdWdpbiwgbnVsbCwgcmVzb2x2ZWRGaWxlbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlUGFyc2VkRnVuYyhudWxsLCBwbHVnaW4sIHJlc29sdmVkRmlsZW5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGltcG9ydE9wdGlvbnMuaW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgICBmaWxlUGFyc2VkRnVuYyhudWxsLCBjb250ZW50cywgcmVzb2x2ZWRGaWxlbmFtZSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBvcnQgKG11bHRpcGxlKSBwYXJzZSB0cmVlcyBhcHBhcmVudGx5IGdldCBhbHRlcmVkIGFuZCBjYW4ndCBiZSBjYWNoZWQuCiAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSB3aHkgdGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgaWYgKGltcG9ydE1hbmFnZXIuZmlsZXNbcmVzb2x2ZWRGaWxlbmFtZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhaW1wb3J0TWFuYWdlci5maWxlc1tyZXNvbHZlZEZpbGVuYW1lXS5vcHRpb25zLm11bHRpcGxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWltcG9ydE9wdGlvbnMubXVsdGlwbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlUGFyc2VkRnVuYyhudWxsLCBpbXBvcnRNYW5hZ2VyLmZpbGVzW3Jlc29sdmVkRmlsZW5hbWVdLnJvb3QsIHJlc29sdmVkRmlsZW5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBhcnNlcihuZXdFbnYsIGltcG9ydE1hbmFnZXIsIG5ld0ZpbGVJbmZvKS5wYXJzZShjb250ZW50cywgZnVuY3Rpb24gKGUsIHJvb3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVBhcnNlZEZ1bmMoZSwgcm9vdCwgcmVzb2x2ZWRGaWxlbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIHZhciBsb2FkZWRGaWxlOwogICAgICAgICAgICAgIHZhciBwcm9taXNlOwogICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2xvbmUodGhpcy5jb250ZXh0KTsKICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kRXh0ZW5zaW9uKSB7CiAgICAgICAgICAgICAgICAgIGNvbnRleHQuZXh0ID0gaW1wb3J0T3B0aW9ucy5pc1BsdWdpbiA/ICcuanMnIDogJy5sZXNzJzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGltcG9ydE9wdGlvbnMuaXNQbHVnaW4pIHsKICAgICAgICAgICAgICAgICAgY29udGV4dC5taW1lID0gJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnOwogICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5zeW5jSW1wb3J0KSB7CiAgICAgICAgICAgICAgICAgICAgICBsb2FkZWRGaWxlID0gcGx1Z2luTG9hZGVyLmxvYWRQbHVnaW5TeW5jKHBhdGgsIGN1cnJlbnRGaWxlSW5mby5jdXJyZW50RGlyZWN0b3J5LCBjb250ZXh0LCBlbnZpcm9ubWVudCwgZmlsZU1hbmFnZXIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IHBsdWdpbkxvYWRlci5sb2FkUGx1Z2luKHBhdGgsIGN1cnJlbnRGaWxlSW5mby5jdXJyZW50RGlyZWN0b3J5LCBjb250ZXh0LCBlbnZpcm9ubWVudCwgZmlsZU1hbmFnZXIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5zeW5jSW1wb3J0KSB7CiAgICAgICAgICAgICAgICAgICAgICBsb2FkZWRGaWxlID0gZmlsZU1hbmFnZXIubG9hZEZpbGVTeW5jKHBhdGgsIGN1cnJlbnRGaWxlSW5mby5jdXJyZW50RGlyZWN0b3J5LCBjb250ZXh0LCBlbnZpcm9ubWVudCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlID0gZmlsZU1hbmFnZXIubG9hZEZpbGUocGF0aCwgY3VycmVudEZpbGVJbmZvLmN1cnJlbnREaXJlY3RvcnksIGNvbnRleHQsIGVudmlyb25tZW50LCBmdW5jdGlvbiAoZXJyLCBsb2FkZWRGaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlUGFyc2VkRnVuYyhlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZEZpbGVDYWxsYmFjayhsb2FkZWRGaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAobG9hZGVkRmlsZSkgewogICAgICAgICAgICAgICAgICBpZiAoIWxvYWRlZEZpbGUuZmlsZW5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgIGZpbGVQYXJzZWRGdW5jKGxvYWRlZEZpbGUpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgbG9hZEZpbGVDYWxsYmFjayhsb2FkZWRGaWxlKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIGlmIChwcm9taXNlKSB7CiAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihsb2FkRmlsZUNhbGxiYWNrLCBmaWxlUGFyc2VkRnVuYyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfTsKICAgICAgICAgIHJldHVybiBJbXBvcnRNYW5hZ2VyOwogICAgICB9KCkpOwogICAgICByZXR1cm4gSW1wb3J0TWFuYWdlcjsKICB9CgogIHZhciBSZW5kZXIgPSAoZnVuY3Rpb24gKGVudmlyb25tZW50LCBQYXJzZVRyZWUsIEltcG9ydE1hbmFnZXIpIHsKICAgICAgdmFyIHJlbmRlciA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucywgY2FsbGJhY2spIHsKICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgIGNhbGxiYWNrID0gb3B0aW9uczsKICAgICAgICAgICAgICBvcHRpb25zID0gY29weU9wdGlvbnModGhpcy5vcHRpb25zLCB7fSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBvcHRpb25zID0gY29weU9wdGlvbnModGhpcy5vcHRpb25zLCBvcHRpb25zIHx8IHt9KTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICghY2FsbGJhY2spIHsKICAgICAgICAgICAgICB2YXIgc2VsZl8xID0gdGhpczsKICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgICByZW5kZXIuY2FsbChzZWxmXzEsIGlucHV0LCBvcHRpb25zLCBmdW5jdGlvbiAoZXJyLCBvdXRwdXQpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob3V0cHV0KTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLnBhcnNlKGlucHV0LCBvcHRpb25zLCBmdW5jdGlvbiAoZXJyLCByb290LCBpbXBvcnRzLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQ7CiAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyc2VUcmVlID0gbmV3IFBhcnNlVHJlZShyb290LCBpbXBvcnRzKTsKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlVHJlZS50b0NTUyhvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICB9OwogICAgICByZXR1cm4gcmVuZGVyOwogIH0pOwoKICAvKioKICAgKiBQbHVnaW4gTWFuYWdlcgogICAqLwogIHZhciBQbHVnaW5NYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBQbHVnaW5NYW5hZ2VyKGxlc3MpIHsKICAgICAgICAgIHRoaXMubGVzcyA9IGxlc3M7CiAgICAgICAgICB0aGlzLnZpc2l0b3JzID0gW107CiAgICAgICAgICB0aGlzLnByZVByb2Nlc3NvcnMgPSBbXTsKICAgICAgICAgIHRoaXMucG9zdFByb2Nlc3NvcnMgPSBbXTsKICAgICAgICAgIHRoaXMuaW5zdGFsbGVkUGx1Z2lucyA9IFtdOwogICAgICAgICAgdGhpcy5maWxlTWFuYWdlcnMgPSBbXTsKICAgICAgICAgIHRoaXMuaXRlcmF0b3IgPSAtMTsKICAgICAgICAgIHRoaXMucGx1Z2luQ2FjaGUgPSB7fTsKICAgICAgICAgIHRoaXMuTG9hZGVyID0gbmV3IGxlc3MuUGx1Z2luTG9hZGVyKGxlc3MpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBBZGRzIGFsbCB0aGUgcGx1Z2lucyBpbiB0aGUgYXJyYXkKICAgICAgICogQHBhcmFtIHtBcnJheX0gcGx1Z2lucwogICAgICAgKi8KICAgICAgUGx1Z2luTWFuYWdlci5wcm90b3R5cGUuYWRkUGx1Z2lucyA9IGZ1bmN0aW9uIChwbHVnaW5zKSB7CiAgICAgICAgICBpZiAocGx1Z2lucykgewogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICB0aGlzLmFkZFBsdWdpbihwbHVnaW5zW2ldKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH07CiAgICAgIC8qKgogICAgICAgKgogICAgICAgKiBAcGFyYW0gcGx1Z2luCiAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlbmFtZQogICAgICAgKi8KICAgICAgUGx1Z2luTWFuYWdlci5wcm90b3R5cGUuYWRkUGx1Z2luID0gZnVuY3Rpb24gKHBsdWdpbiwgZmlsZW5hbWUsIGZ1bmN0aW9uUmVnaXN0cnkpIHsKICAgICAgICAgIHRoaXMuaW5zdGFsbGVkUGx1Z2lucy5wdXNoKHBsdWdpbik7CiAgICAgICAgICBpZiAoZmlsZW5hbWUpIHsKICAgICAgICAgICAgICB0aGlzLnBsdWdpbkNhY2hlW2ZpbGVuYW1lXSA9IHBsdWdpbjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChwbHVnaW4uaW5zdGFsbCkgewogICAgICAgICAgICAgIHBsdWdpbi5pbnN0YWxsKHRoaXMubGVzcywgdGhpcywgZnVuY3Rpb25SZWdpc3RyeSB8fCB0aGlzLmxlc3MuZnVuY3Rpb25zLmZ1bmN0aW9uUmVnaXN0cnkpOwogICAgICAgICAgfQogICAgICB9OwogICAgICAvKioKICAgICAgICoKICAgICAgICogQHBhcmFtIGZpbGVuYW1lCiAgICAgICAqLwogICAgICBQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoZmlsZW5hbWUpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnBsdWdpbkNhY2hlW2ZpbGVuYW1lXTsKICAgICAgfTsKICAgICAgLyoqCiAgICAgICAqIEFkZHMgYSB2aXNpdG9yLiBUaGUgdmlzaXRvciBvYmplY3QgaGFzIG9wdGlvbnMgb24gaXRzZWxmIHRvIGRldGVybWluZQogICAgICAgKiB3aGVuIGl0IHNob3VsZCBydW4uCiAgICAgICAqIEBwYXJhbSB2aXNpdG9yCiAgICAgICAqLwogICAgICBQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS5hZGRWaXNpdG9yID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgICAgICAgIHRoaXMudmlzaXRvcnMucHVzaCh2aXNpdG9yKTsKICAgICAgfTsKICAgICAgLyoqCiAgICAgICAqIEFkZHMgYSBwcmUgcHJvY2Vzc29yIG9iamVjdAogICAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJlUHJvY2Vzc29yCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwcmlvcml0eSAtIGd1aWRlbGluZXMgMSA9IGJlZm9yZSBpbXBvcnQsIDEwMDAgPSBpbXBvcnQsIDIwMDAgPSBhZnRlciBpbXBvcnQKICAgICAgICovCiAgICAgIFBsdWdpbk1hbmFnZXIucHJvdG90eXBlLmFkZFByZVByb2Nlc3NvciA9IGZ1bmN0aW9uIChwcmVQcm9jZXNzb3IsIHByaW9yaXR5KSB7CiAgICAgICAgICB2YXIgaW5kZXhUb0luc2VydEF0OwogICAgICAgICAgZm9yIChpbmRleFRvSW5zZXJ0QXQgPSAwOyBpbmRleFRvSW5zZXJ0QXQgPCB0aGlzLnByZVByb2Nlc3NvcnMubGVuZ3RoOyBpbmRleFRvSW5zZXJ0QXQrKykgewogICAgICAgICAgICAgIGlmICh0aGlzLnByZVByb2Nlc3NvcnNbaW5kZXhUb0luc2VydEF0XS5wcmlvcml0eSA+PSBwcmlvcml0eSkgewogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnByZVByb2Nlc3NvcnMuc3BsaWNlKGluZGV4VG9JbnNlcnRBdCwgMCwgeyBwcmVQcm9jZXNzb3I6IHByZVByb2Nlc3NvciwgcHJpb3JpdHk6IHByaW9yaXR5IH0pOwogICAgICB9OwogICAgICAvKioKICAgICAgICogQWRkcyBhIHBvc3QgcHJvY2Vzc29yIG9iamVjdAogICAgICAgKiBAcGFyYW0ge29iamVjdH0gcG9zdFByb2Nlc3NvcgogICAgICAgKiBAcGFyYW0ge251bWJlcn0gcHJpb3JpdHkgLSBndWlkZWxpbmVzIDEgPSBiZWZvcmUgY29tcHJlc3Npb24sIDEwMDAgPSBjb21wcmVzc2lvbiwgMjAwMCA9IGFmdGVyIGNvbXByZXNzaW9uCiAgICAgICAqLwogICAgICBQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS5hZGRQb3N0UHJvY2Vzc29yID0gZnVuY3Rpb24gKHBvc3RQcm9jZXNzb3IsIHByaW9yaXR5KSB7CiAgICAgICAgICB2YXIgaW5kZXhUb0luc2VydEF0OwogICAgICAgICAgZm9yIChpbmRleFRvSW5zZXJ0QXQgPSAwOyBpbmRleFRvSW5zZXJ0QXQgPCB0aGlzLnBvc3RQcm9jZXNzb3JzLmxlbmd0aDsgaW5kZXhUb0luc2VydEF0KyspIHsKICAgICAgICAgICAgICBpZiAodGhpcy5wb3N0UHJvY2Vzc29yc1tpbmRleFRvSW5zZXJ0QXRdLnByaW9yaXR5ID49IHByaW9yaXR5KSB7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHRoaXMucG9zdFByb2Nlc3NvcnMuc3BsaWNlKGluZGV4VG9JbnNlcnRBdCwgMCwgeyBwb3N0UHJvY2Vzc29yOiBwb3N0UHJvY2Vzc29yLCBwcmlvcml0eTogcHJpb3JpdHkgfSk7CiAgICAgIH07CiAgICAgIC8qKgogICAgICAgKgogICAgICAgKiBAcGFyYW0gbWFuYWdlcgogICAgICAgKi8KICAgICAgUGx1Z2luTWFuYWdlci5wcm90b3R5cGUuYWRkRmlsZU1hbmFnZXIgPSBmdW5jdGlvbiAobWFuYWdlcikgewogICAgICAgICAgdGhpcy5maWxlTWFuYWdlcnMucHVzaChtYW5hZ2VyKTsKICAgICAgfTsKICAgICAgLyoqCiAgICAgICAqCiAgICAgICAqIEByZXR1cm5zIHtBcnJheX0KICAgICAgICogQHByaXZhdGUKICAgICAgICovCiAgICAgIFBsdWdpbk1hbmFnZXIucHJvdG90eXBlLmdldFByZVByb2Nlc3NvcnMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICB2YXIgcHJlUHJvY2Vzc29ycyA9IFtdOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnByZVByb2Nlc3NvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBwcmVQcm9jZXNzb3JzLnB1c2godGhpcy5wcmVQcm9jZXNzb3JzW2ldLnByZVByb2Nlc3Nvcik7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcHJlUHJvY2Vzc29yczsKICAgICAgfTsKICAgICAgLyoqCiAgICAgICAqCiAgICAgICAqIEByZXR1cm5zIHtBcnJheX0KICAgICAgICogQHByaXZhdGUKICAgICAgICovCiAgICAgIFBsdWdpbk1hbmFnZXIucHJvdG90eXBlLmdldFBvc3RQcm9jZXNzb3JzID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgdmFyIHBvc3RQcm9jZXNzb3JzID0gW107CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucG9zdFByb2Nlc3NvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBwb3N0UHJvY2Vzc29ycy5wdXNoKHRoaXMucG9zdFByb2Nlc3NvcnNbaV0ucG9zdFByb2Nlc3Nvcik7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcG9zdFByb2Nlc3NvcnM7CiAgICAgIH07CiAgICAgIC8qKgogICAgICAgKgogICAgICAgKiBAcmV0dXJucyB7QXJyYXl9CiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICBQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS5nZXRWaXNpdG9ycyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnZpc2l0b3JzOwogICAgICB9OwogICAgICBQbHVnaW5NYW5hZ2VyLnByb3RvdHlwZS52aXNpdG9yID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICBmaXJzdDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICBzZWxmLml0ZXJhdG9yID0gLTE7CiAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZpc2l0b3JzW3NlbGYuaXRlcmF0b3JdOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIHNlbGYuaXRlcmF0b3IgKz0gMTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRvcnNbc2VsZi5pdGVyYXRvcl07CiAgICAgICAgICAgICAgfQogICAgICAgICAgfTsKICAgICAgfTsKICAgICAgLyoqCiAgICAgICAqCiAgICAgICAqIEByZXR1cm5zIHtBcnJheX0KICAgICAgICogQHByaXZhdGUKICAgICAgICovCiAgICAgIFBsdWdpbk1hbmFnZXIucHJvdG90eXBlLmdldEZpbGVNYW5hZ2VycyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmZpbGVNYW5hZ2VyczsKICAgICAgfTsKICAgICAgcmV0dXJuIFBsdWdpbk1hbmFnZXI7CiAgfSgpKTsKICB2YXIgcG07CiAgZnVuY3Rpb24gUGx1Z2luTWFuYWdlckZhY3RvcnkobGVzcywgbmV3RmFjdG9yeSkgewogICAgICBpZiAobmV3RmFjdG9yeSB8fCAhcG0pIHsKICAgICAgICAgIHBtID0gbmV3IFBsdWdpbk1hbmFnZXIobGVzcyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHBtOwogIH0KCiAgdmFyIFBhcnNlID0gKGZ1bmN0aW9uIChlbnZpcm9ubWVudCwgUGFyc2VUcmVlLCBJbXBvcnRNYW5hZ2VyKSB7CiAgICAgIHZhciBwYXJzZSA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucywgY2FsbGJhY2spIHsKICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgIGNhbGxiYWNrID0gb3B0aW9uczsKICAgICAgICAgICAgICBvcHRpb25zID0gY29weU9wdGlvbnModGhpcy5vcHRpb25zLCB7fSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBvcHRpb25zID0gY29weU9wdGlvbnModGhpcy5vcHRpb25zLCBvcHRpb25zIHx8IHt9KTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICghY2FsbGJhY2spIHsKICAgICAgICAgICAgICB2YXIgc2VsZl8xID0gdGhpczsKICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgICBwYXJzZS5jYWxsKHNlbGZfMSwgaW5wdXQsIG9wdGlvbnMsIGZ1bmN0aW9uIChlcnIsIG91dHB1dCkgewogICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvdXRwdXQpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHZhciBjb250ZXh0XzE7CiAgICAgICAgICAgICAgdmFyIHJvb3RGaWxlSW5mbyA9IHZvaWQgMDsKICAgICAgICAgICAgICB2YXIgcGx1Z2luTWFuYWdlcl8xID0gbmV3IFBsdWdpbk1hbmFnZXJGYWN0b3J5KHRoaXMsICFvcHRpb25zLnJlVXNlUGx1Z2luTWFuYWdlcik7CiAgICAgICAgICAgICAgb3B0aW9ucy5wbHVnaW5NYW5hZ2VyID0gcGx1Z2luTWFuYWdlcl8xOwogICAgICAgICAgICAgIGNvbnRleHRfMSA9IG5ldyBjb250ZXh0cy5QYXJzZShvcHRpb25zKTsKICAgICAgICAgICAgICBpZiAob3B0aW9ucy5yb290RmlsZUluZm8pIHsKICAgICAgICAgICAgICAgICAgcm9vdEZpbGVJbmZvID0gb3B0aW9ucy5yb290RmlsZUluZm87CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICB2YXIgZmlsZW5hbWUgPSBvcHRpb25zLmZpbGVuYW1lIHx8ICdpbnB1dCc7CiAgICAgICAgICAgICAgICAgIHZhciBlbnRyeVBhdGggPSBmaWxlbmFtZS5yZXBsYWNlKC9bXlwvXFxdKiQvLCAnJyk7CiAgICAgICAgICAgICAgICAgIHJvb3RGaWxlSW5mbyA9IHsKICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVVcmxzOiBjb250ZXh0XzEucmV3cml0ZVVybHMsCiAgICAgICAgICAgICAgICAgICAgICByb290cGF0aDogY29udGV4dF8xLnJvb3RwYXRoIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgY3VycmVudERpcmVjdG9yeTogZW50cnlQYXRoLAogICAgICAgICAgICAgICAgICAgICAgZW50cnlQYXRoOiBlbnRyeVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICByb290RmlsZW5hbWU6IGZpbGVuYW1lCiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgIC8vIGFkZCBpbiBhIG1pc3NpbmcgdHJhaWxpbmcgc2xhc2gKICAgICAgICAgICAgICAgICAgaWYgKHJvb3RGaWxlSW5mby5yb290cGF0aCAmJiByb290RmlsZUluZm8ucm9vdHBhdGguc2xpY2UoLTEpICE9PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAgIHJvb3RGaWxlSW5mby5yb290cGF0aCArPSAnLyc7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIGltcG9ydHNfMSA9IG5ldyBJbXBvcnRNYW5hZ2VyKHRoaXMsIGNvbnRleHRfMSwgcm9vdEZpbGVJbmZvKTsKICAgICAgICAgICAgICB0aGlzLmltcG9ydE1hbmFnZXIgPSBpbXBvcnRzXzE7CiAgICAgICAgICAgICAgLy8gVE9ETzogYWxsb3cgdGhlIHBsdWdpbnMgdG8gYmUganVzdCBhIGxpc3Qgb2YgcGF0aHMgb3IgbmFtZXMKICAgICAgICAgICAgICAvLyBEbyBhbiBhc3luYyBwbHVnaW4gcXVldWUgbGlrZSBsZXNzYwogICAgICAgICAgICAgIGlmIChvcHRpb25zLnBsdWdpbnMpIHsKICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikgewogICAgICAgICAgICAgICAgICAgICAgdmFyIGV2YWxSZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudHM7CiAgICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luLmZpbGVDb250ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgPSBwbHVnaW4uZmlsZUNvbnRlbnQucmVwbGFjZSgvXlx1RkVGRi8sICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsUmVzdWx0ID0gcGx1Z2luTWFuYWdlcl8xLkxvYWRlci5ldmFsUGx1Z2luKGNvbnRlbnRzLCBjb250ZXh0XzEsIGltcG9ydHNfMSwgcGx1Z2luLm9wdGlvbnMsIHBsdWdpbi5maWxlbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2YWxSZXN1bHQgaW5zdGFuY2VvZiBMZXNzRXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGV2YWxSZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbk1hbmFnZXJfMS5hZGRQbHVnaW4ocGx1Z2luKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG5ldyBQYXJzZXIoY29udGV4dF8xLCBpbXBvcnRzXzEsIHJvb3RGaWxlSW5mbykKICAgICAgICAgICAgICAgICAgLnBhcnNlKGlucHV0LCBmdW5jdGlvbiAoZSwgcm9vdCkgewogICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGUpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJvb3QsIGltcG9ydHNfMSwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgfSwgb3B0aW9ucyk7CiAgICAgICAgICB9CiAgICAgIH07CiAgICAgIHJldHVybiBwYXJzZTsKICB9KTsKCiAgdmFyIGxlc3NSb290ID0gKGZ1bmN0aW9uIChlbnZpcm9ubWVudCQxLCBmaWxlTWFuYWdlcnMpIHsKICAgICAgLyoqCiAgICAgICAqIEB0b2RvCiAgICAgICAqIFRoaXMgb3JpZ2luYWwgY29kZSBjb3VsZCBiZSBpbXByb3ZlZCBxdWl0ZSBhIGJpdC4KICAgICAgICogTWFueSBjbGFzc2VzIC8gbW9kdWxlcyBjdXJyZW50bHkgYWRkIHNpZGUtZWZmZWN0cyAvIG11dGF0aW9ucyB0byBwYXNzZWQgaW4gb2JqZWN0cywKICAgICAgICogd2hpY2ggbWFrZXMgaXQgaGFyZCB0byByZWZhY3RvciBhbmQgcmVhc29uIGFib3V0LgogICAgICAgKi8KICAgICAgZW52aXJvbm1lbnQkMSA9IG5ldyBlbnZpcm9ubWVudChlbnZpcm9ubWVudCQxLCBmaWxlTWFuYWdlcnMpOwogICAgICB2YXIgU291cmNlTWFwT3V0cHV0ID0gc291cmNlTWFwT3V0cHV0KGVudmlyb25tZW50JDEpOwogICAgICB2YXIgU291cmNlTWFwQnVpbGRlciA9IHNvdXJjZU1hcEJ1aWxkZXIoU291cmNlTWFwT3V0cHV0LCBlbnZpcm9ubWVudCQxKTsKICAgICAgdmFyIFBhcnNlVHJlZSA9IHBhcnNlVHJlZShTb3VyY2VNYXBCdWlsZGVyKTsKICAgICAgdmFyIEltcG9ydE1hbmFnZXIgPSBpbXBvcnRNYW5hZ2VyKGVudmlyb25tZW50JDEpOwogICAgICB2YXIgcmVuZGVyID0gUmVuZGVyKGVudmlyb25tZW50JDEsIFBhcnNlVHJlZSk7CiAgICAgIHZhciBwYXJzZSA9IFBhcnNlKGVudmlyb25tZW50JDEsIFBhcnNlVHJlZSwgSW1wb3J0TWFuYWdlcik7CiAgICAgIHZhciBmdW5jdGlvbnMgPSBGdW5jdGlvbnMoZW52aXJvbm1lbnQkMSk7CiAgICAgIC8qKgogICAgICAgKiBAdG9kbwogICAgICAgKiBUaGlzIHJvb3QgcHJvcGVydGllcyAvIG1ldGhvZHMgbmVlZCB0byBiZSBvcmdhbml6ZWQuCiAgICAgICAqIEl0J3Mgbm90IGNsZWFyIHdoYXQgc2hvdWxkIC8gbXVzdCBiZSBwdWJsaWMgYW5kIHdoeS4KICAgICAgICovCiAgICAgIHZhciBpbml0aWFsID0gewogICAgICAgICAgdmVyc2lvbjogWzMsIDEzLCAxXSwKICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICB0cmVlOiB0cmVlLAogICAgICAgICAgRW52aXJvbm1lbnQ6IGVudmlyb25tZW50LAogICAgICAgICAgQWJzdHJhY3RGaWxlTWFuYWdlcjogQWJzdHJhY3RGaWxlTWFuYWdlciwKICAgICAgICAgIEFic3RyYWN0UGx1Z2luTG9hZGVyOiBBYnN0cmFjdFBsdWdpbkxvYWRlciwKICAgICAgICAgIGVudmlyb25tZW50OiBlbnZpcm9ubWVudCQxLAogICAgICAgICAgdmlzaXRvcnM6IHZpc2l0b3JzLAogICAgICAgICAgUGFyc2VyOiBQYXJzZXIsCiAgICAgICAgICBmdW5jdGlvbnM6IGZ1bmN0aW9ucywKICAgICAgICAgIGNvbnRleHRzOiBjb250ZXh0cywKICAgICAgICAgIFNvdXJjZU1hcE91dHB1dDogU291cmNlTWFwT3V0cHV0LAogICAgICAgICAgU291cmNlTWFwQnVpbGRlcjogU291cmNlTWFwQnVpbGRlciwKICAgICAgICAgIFBhcnNlVHJlZTogUGFyc2VUcmVlLAogICAgICAgICAgSW1wb3J0TWFuYWdlcjogSW1wb3J0TWFuYWdlciwKICAgICAgICAgIHJlbmRlcjogcmVuZGVyLAogICAgICAgICAgcGFyc2U6IHBhcnNlLAogICAgICAgICAgTGVzc0Vycm9yOiBMZXNzRXJyb3IsCiAgICAgICAgICB0cmFuc2Zvcm1UcmVlOiB0cmFuc2Zvcm1UcmVlLAogICAgICAgICAgdXRpbHM6IHV0aWxzLAogICAgICAgICAgUGx1Z2luTWFuYWdlcjogUGx1Z2luTWFuYWdlckZhY3RvcnksCiAgICAgICAgICBsb2dnZXI6IGxvZ2dlcgogICAgICB9OwogICAgICAvLyBDcmVhdGUgYSBwdWJsaWMgQVBJCiAgICAgIHZhciBjdG9yID0gZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBhcmdzID0gW107CiAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykgewogICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBuZXcgKHQuYmluZC5hcHBseSh0LCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpOwogICAgICB9OyB9OwogICAgICB2YXIgdDsKICAgICAgdmFyIGFwaSA9IE9iamVjdC5jcmVhdGUoaW5pdGlhbCk7CiAgICAgIGZvciAodmFyIG4gaW4gaW5pdGlhbC50cmVlKSB7CiAgICAgICAgICAvKiBlc2xpbnQgZ3VhcmQtZm9yLWluOiAwICovCiAgICAgICAgICB0ID0gaW5pdGlhbC50cmVlW25dOwogICAgICAgICAgaWYgKHR5cGVvZiB0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgYXBpW24udG9Mb3dlckNhc2UoKV0gPSBjdG9yKHQpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgYXBpW25dID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICAgICAgICBmb3IgKHZhciBvIGluIHQpIHsKICAgICAgICAgICAgICAgICAgLyogZXNsaW50IGd1YXJkLWZvci1pbjogMCAqLwogICAgICAgICAgICAgICAgICBhcGlbbl1bby50b0xvd2VyQ2FzZSgpXSA9IGN0b3IodFtvXSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBTb21lIG9mIHRoZSBmdW5jdGlvbnMgYXNzdW1lIGEgYHRoaXNgIGNvbnRleHQgb2YgdGhlIEFQSSBvYmplY3QsCiAgICAgICAqIHdoaWNoIGNhdXNlcyBpdCB0byBmYWlsIHdoZW4gd3JhcHBlZCBmb3IgRVM2IGltcG9ydHMuCiAgICAgICAqCiAgICAgICAqIEFuIGFzc3VtZWQgYHRoaXNgIHNob3VsZCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuCiAgICAgICAqLwogICAgICBpbml0aWFsLnBhcnNlID0gaW5pdGlhbC5wYXJzZS5iaW5kKGFwaSk7CiAgICAgIGluaXRpYWwucmVuZGVyID0gaW5pdGlhbC5yZW5kZXIuYmluZChhcGkpOwogICAgICByZXR1cm4gYXBpOwogIH0pOwoKICAvKiBnbG9iYWwgd2luZG93LCBYTUxIdHRwUmVxdWVzdCAqLwogIHZhciBvcHRpb25zOwogIHZhciBsb2dnZXIkMTsKICB2YXIgZmlsZUNhY2hlID0ge307CiAgLy8gVE9ET1MgLSBtb3ZlIGxvZyBzb21ld2hlcmUuIHBhdGhEaWZmIGFuZCBkb2luZyBzb21ldGhpbmcgc2ltaWxhciBpbiBub2RlLiB1c2UgcGF0aERpZmYgaW4gdGhlIG90aGVyIGJyb3dzZXIgZmlsZSBmb3IgdGhlIGluaXRpYWwgbG9hZAogIHZhciBGaWxlTWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKICAgICAgX19leHRlbmRzKEZpbGVNYW5hZ2VyLCBfc3VwZXIpOwogICAgICBmdW5jdGlvbiBGaWxlTWFuYWdlcigpIHsKICAgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKICAgICAgfQogICAgICBGaWxlTWFuYWdlci5wcm90b3R5cGUuYWx3YXlzTWFrZVBhdGhzQWJzb2x1dGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfTsKICAgICAgRmlsZU1hbmFnZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiAoYmFzZVBhdGgsIGxhdGVyUGF0aCkgewogICAgICAgICAgaWYgKCFiYXNlUGF0aCkgewogICAgICAgICAgICAgIHJldHVybiBsYXRlclBhdGg7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdGhpcy5leHRyYWN0VXJsUGFydHMobGF0ZXJQYXRoLCBiYXNlUGF0aCkucGF0aDsKICAgICAgfTsKICAgICAgRmlsZU1hbmFnZXIucHJvdG90eXBlLmRvWEhSID0gZnVuY3Rpb24gKHVybCwgdHlwZSwgY2FsbGJhY2ssIGVycmJhY2spIHsKICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgIHZhciBhc3luYyA9IG9wdGlvbnMuaXNGaWxlUHJvdG9jb2wgPyBvcHRpb25zLmZpbGVBc3luYyA6IHRydWU7CiAgICAgICAgICBpZiAodHlwZW9mIHhoci5vdmVycmlkZU1pbWVUeXBlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgeGhyLm92ZXJyaWRlTWltZVR5cGUoJ3RleHQvY3NzJyk7CiAgICAgICAgICB9CiAgICAgICAgICBsb2dnZXIkMS5kZWJ1ZygiWEhSOiBHZXR0aW5nICciICsgdXJsICsgIiciKTsKICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIGFzeW5jKTsKICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCB0eXBlIHx8ICd0ZXh0L3gtbGVzcywgdGV4dC9jc3M7IHE9MC45LCAqLyo7IHE9MC41Jyk7CiAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlKHhociwgY2FsbGJhY2ssIGVycmJhY2spIHsKICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkgewogICAgICAgICAgICAgICAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0LCB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0xhc3QtTW9kaWZpZWQnKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBlcnJiYWNrID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICAgIGVycmJhY2soeGhyLnN0YXR1cywgdXJsKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAob3B0aW9ucy5pc0ZpbGVQcm90b2NvbCAmJiAhb3B0aW9ucy5maWxlQXN5bmMpIHsKICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMCB8fCAoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkpIHsKICAgICAgICAgICAgICAgICAgY2FsbGJhY2soeGhyLnJlc3BvbnNlVGV4dCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBlcnJiYWNrKHhoci5zdGF0dXMsIHVybCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoYXN5bmMpIHsKICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmVzcG9uc2UoeGhyLCBjYWxsYmFjaywgZXJyYmFjayk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgaGFuZGxlUmVzcG9uc2UoeGhyLCBjYWxsYmFjaywgZXJyYmFjayk7CiAgICAgICAgICB9CiAgICAgIH07CiAgICAgIEZpbGVNYW5hZ2VyLnByb3RvdHlwZS5zdXBwb3J0cyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICB9OwogICAgICBGaWxlTWFuYWdlci5wcm90b3R5cGUuY2xlYXJGaWxlQ2FjaGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBmaWxlQ2FjaGUgPSB7fTsKICAgICAgfTsKICAgICAgRmlsZU1hbmFnZXIucHJvdG90eXBlLmxvYWRGaWxlID0gZnVuY3Rpb24gKGZpbGVuYW1lLCBjdXJyZW50RGlyZWN0b3J5LCBvcHRpb25zLCBlbnZpcm9ubWVudCkgewogICAgICAgICAgLy8gVE9ETzogQWRkIHByZWZpeCBzdXBwb3J0IGxpa2UgbGVzcy1ub2RlPwogICAgICAgICAgLy8gV2hhdCBhYm91dCBtdWx0aXBsZSBwYXRocz8KICAgICAgICAgIGlmIChjdXJyZW50RGlyZWN0b3J5ICYmICF0aGlzLmlzUGF0aEFic29sdXRlKGZpbGVuYW1lKSkgewogICAgICAgICAgICAgIGZpbGVuYW1lID0gY3VycmVudERpcmVjdG9yeSArIGZpbGVuYW1lOwogICAgICAgICAgfQogICAgICAgICAgZmlsZW5hbWUgPSBvcHRpb25zLmV4dCA/IHRoaXMudHJ5QXBwZW5kRXh0ZW5zaW9uKGZpbGVuYW1lLCBvcHRpb25zLmV4dCkgOiBmaWxlbmFtZTsKICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgICAgLy8gc2hlZXQgbWF5IGJlIHNldCB0byB0aGUgc3R5bGVzaGVldCBmb3IgdGhlIGluaXRpYWwgbG9hZCBvciBhIGNvbGxlY3Rpb24gb2YgcHJvcGVydGllcyBpbmNsdWRpbmcKICAgICAgICAgIC8vIHNvbWUgY29udGV4dCB2YXJpYWJsZXMgZm9yIGltcG9ydHMKICAgICAgICAgIHZhciBocmVmUGFydHMgPSB0aGlzLmV4dHJhY3RVcmxQYXJ0cyhmaWxlbmFtZSwgd2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgICAgICAgdmFyIGhyZWYgPSBocmVmUGFydHMudXJsOwogICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICBpZiAob3B0aW9ucy51c2VGaWxlQ2FjaGUgJiYgZmlsZUNhY2hlW2hyZWZdKSB7CiAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgbGVzc1RleHQgPSBmaWxlQ2FjaGVbaHJlZl07CiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh7IGNvbnRlbnRzOiBsZXNzVGV4dCwgZmlsZW5hbWU6IGhyZWYsIHdlYkluZm86IHsgbGFzdE1vZGlmaWVkOiBuZXcgRGF0ZSgpIH0gfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoeyBmaWxlbmFtZTogaHJlZiwgbWVzc2FnZTogIkVycm9yIGxvYWRpbmcgZmlsZSAiICsgaHJlZiArICIgZXJyb3Igd2FzICIgKyBlLm1lc3NhZ2UgfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgc2VsZi5kb1hIUihocmVmLCBvcHRpb25zLm1pbWUsIGZ1bmN0aW9uIGRvWEhSQ2FsbGJhY2soZGF0YSwgbGFzdE1vZGlmaWVkKSB7CiAgICAgICAgICAgICAgICAgIC8vIHBlciBmaWxlIGNhY2hlCiAgICAgICAgICAgICAgICAgIGZpbGVDYWNoZVtocmVmXSA9IGRhdGE7CiAgICAgICAgICAgICAgICAgIC8vIFVzZSByZW1vdGUgY29weSAocmUtcGFyc2UpCiAgICAgICAgICAgICAgICAgIHJlc29sdmUoeyBjb250ZW50czogZGF0YSwgZmlsZW5hbWU6IGhyZWYsIHdlYkluZm86IHsgbGFzdE1vZGlmaWVkOiBsYXN0TW9kaWZpZWQgfSB9KTsKICAgICAgICAgICAgICB9LCBmdW5jdGlvbiBkb1hIUkVycm9yKHN0YXR1cywgdXJsKSB7CiAgICAgICAgICAgICAgICAgIHJlamVjdCh7IHR5cGU6ICdGaWxlJywgbWVzc2FnZTogIiciICsgdXJsICsgIicgd2Fzbid0IGZvdW5kICgiICsgc3RhdHVzICsgIikiLCBocmVmOiBocmVmIH0pOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgfSk7CiAgICAgIH07CiAgICAgIHJldHVybiBGaWxlTWFuYWdlcjsKICB9KEFic3RyYWN0RmlsZU1hbmFnZXIpKTsKICB2YXIgRk0gPSAoZnVuY3Rpb24gKG9wdHMsIGxvZykgewogICAgICBvcHRpb25zID0gb3B0czsKICAgICAgbG9nZ2VyJDEgPSBsb2c7CiAgICAgIHJldHVybiBGaWxlTWFuYWdlcjsKICB9KTsKCiAgLy8gVE9ETzogQWRkIHRlc3RzIGZvciBicm93c2VyIEBwbHVnaW4KICAvKioKICAgKiBCcm93c2VyIFBsdWdpbiBMb2FkZXIKICAgKi8KICB2YXIgUGx1Z2luTG9hZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewogICAgICBfX2V4dGVuZHMoUGx1Z2luTG9hZGVyLCBfc3VwZXIpOwogICAgICBmdW5jdGlvbiBQbHVnaW5Mb2FkZXIobGVzcykgewogICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsKICAgICAgICAgIF90aGlzLmxlc3MgPSBsZXNzOwogICAgICAgICAgcmV0dXJuIF90aGlzOwogICAgICAgICAgLy8gU2hvdWxkIHdlIHNoaW0gdGhpcy5yZXF1aXJlIGZvciBicm93c2VyPyBQcm9iYWJseSBub3Q/CiAgICAgIH0KICAgICAgUGx1Z2luTG9hZGVyLnByb3RvdHlwZS5sb2FkUGx1Z2luID0gZnVuY3Rpb24gKGZpbGVuYW1lLCBiYXNlUGF0aCwgY29udGV4dCwgZW52aXJvbm1lbnQsIGZpbGVNYW5hZ2VyKSB7CiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGZ1bGZpbGwsIHJlamVjdCkgewogICAgICAgICAgICAgIGZpbGVNYW5hZ2VyLmxvYWRGaWxlKGZpbGVuYW1lLCBiYXNlUGF0aCwgY29udGV4dCwgZW52aXJvbm1lbnQpCiAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bGZpbGwpLmNhdGNoKHJlamVjdCk7CiAgICAgICAgICB9KTsKICAgICAgfTsKICAgICAgcmV0dXJuIFBsdWdpbkxvYWRlcjsKICB9KEFic3RyYWN0UGx1Z2luTG9hZGVyKSk7CgogIHZhciBMb2dMaXN0ZW5lciA9IChmdW5jdGlvbiAobGVzcywgb3B0aW9ucykgewogICAgICB2YXIgbG9nTGV2ZWxfZGVidWcgPSA0OwogICAgICB2YXIgbG9nTGV2ZWxfaW5mbyA9IDM7CiAgICAgIHZhciBsb2dMZXZlbF93YXJuID0gMjsKICAgICAgdmFyIGxvZ0xldmVsX2Vycm9yID0gMTsKICAgICAgLy8gVGhlIGFtb3VudCBvZiBsb2dnaW5nIGluIHRoZSBqYXZhc2NyaXB0IGNvbnNvbGUuCiAgICAgIC8vIDMgLSBEZWJ1ZywgaW5mb3JtYXRpb24gYW5kIGVycm9ycwogICAgICAvLyAyIC0gSW5mb3JtYXRpb24gYW5kIGVycm9ycwogICAgICAvLyAxIC0gRXJyb3JzCiAgICAgIC8vIDAgLSBOb25lCiAgICAgIC8vIERlZmF1bHRzIHRvIDIKICAgICAgb3B0aW9ucy5sb2dMZXZlbCA9IHR5cGVvZiBvcHRpb25zLmxvZ0xldmVsICE9PSAndW5kZWZpbmVkJyA/IG9wdGlvbnMubG9nTGV2ZWwgOiAob3B0aW9ucy5lbnYgPT09ICdkZXZlbG9wbWVudCcgPyBsb2dMZXZlbF9pbmZvIDogbG9nTGV2ZWxfZXJyb3IpOwogICAgICBpZiAoIW9wdGlvbnMubG9nZ2VycykgewogICAgICAgICAgb3B0aW9ucy5sb2dnZXJzID0gW3sKICAgICAgICAgICAgICAgICAgZGVidWc6IGZ1bmN0aW9uIChtc2cpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ0xldmVsID49IGxvZ0xldmVsX2RlYnVnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobXNnKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgaW5mbzogZnVuY3Rpb24gKG1zZykgewogICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nTGV2ZWwgPj0gbG9nTGV2ZWxfaW5mbykgewogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHdhcm46IGZ1bmN0aW9uIChtc2cpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ0xldmVsID49IGxvZ0xldmVsX3dhcm4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4obXNnKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChtc2cpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ0xldmVsID49IGxvZ0xldmVsX2Vycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihtc2cpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfV07CiAgICAgIH0KICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxvZ2dlcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGxlc3MubG9nZ2VyLmFkZExpc3RlbmVyKG9wdGlvbnMubG9nZ2Vyc1tpXSk7CiAgICAgIH0KICB9KTsKCiAgdmFyIEVycm9yUmVwb3J0aW5nID0gKGZ1bmN0aW9uICh3aW5kb3csIGxlc3MsIG9wdGlvbnMpIHsKICAgICAgZnVuY3Rpb24gZXJyb3JIVE1MKGUsIHJvb3RIcmVmKSB7CiAgICAgICAgICB2YXIgaWQgPSAibGVzcy1lcnJvci1tZXNzYWdlOiIgKyBleHRyYWN0SWQocm9vdEhyZWYgfHwgJycpOwogICAgICAgICAgdmFyIHRlbXBsYXRlID0gJzxsaT48bGFiZWw+e2xpbmV9PC9sYWJlbD48cHJlIGNsYXNzPSJ7Y2xhc3N9Ij57Y29udGVudH08L3ByZT48L2xpPic7CiAgICAgICAgICB2YXIgZWxlbSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgIHZhciB0aW1lcjsKICAgICAgICAgIHZhciBjb250ZW50OwogICAgICAgICAgdmFyIGVycm9ycyA9IFtdOwogICAgICAgICAgdmFyIGZpbGVuYW1lID0gZS5maWxlbmFtZSB8fCByb290SHJlZjsKICAgICAgICAgIHZhciBmaWxlbmFtZU5vUGF0aCA9IGZpbGVuYW1lLm1hdGNoKC8oW15cL10rKFw/LiopPykkLylbMV07CiAgICAgICAgICBlbGVtLmlkID0gaWQ7CiAgICAgICAgICBlbGVtLmNsYXNzTmFtZSA9ICdsZXNzLWVycm9yLW1lc3NhZ2UnOwogICAgICAgICAgY29udGVudCA9ICI8aDM+IiArIChlLnR5cGUgfHwgJ1N5bnRheCcpICsgIkVycm9yOiAiICsgKGUubWVzc2FnZSB8fCAnVGhlcmUgaXMgYW4gZXJyb3IgaW4geW91ciAubGVzcyBmaWxlJykgKwogICAgICAgICAgICAgICgiPC9oMz48cD5pbiA8YSBocmVmPVwiIiArIGZpbGVuYW1lICsgIlwiPiIgKyBmaWxlbmFtZU5vUGF0aCArICI8L2E+ICIpOwogICAgICAgICAgdmFyIGVycm9ybGluZSA9IGZ1bmN0aW9uIChlLCBpLCBjbGFzc25hbWUpIHsKICAgICAgICAgICAgICBpZiAoZS5leHRyYWN0W2ldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2godGVtcGxhdGUucmVwbGFjZSgvXHtsaW5lXH0vLCAocGFyc2VJbnQoZS5saW5lLCAxMCkgfHwgMCkgKyAoaSAtIDEpKQogICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1x7Y2xhc3NcfS8sIGNsYXNzbmFtZSkKICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ce2NvbnRlbnRcfS8sIGUuZXh0cmFjdFtpXSkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH07CiAgICAgICAgICBpZiAoZS5saW5lKSB7CiAgICAgICAgICAgICAgZXJyb3JsaW5lKGUsIDAsICcnKTsKICAgICAgICAgICAgICBlcnJvcmxpbmUoZSwgMSwgJ2xpbmUnKTsKICAgICAgICAgICAgICBlcnJvcmxpbmUoZSwgMiwgJycpOwogICAgICAgICAgICAgIGNvbnRlbnQgKz0gIm9uIGxpbmUgIiArIGUubGluZSArICIsIGNvbHVtbiAiICsgKGUuY29sdW1uICsgMSkgKyAiOjwvcD48dWw+IiArIGVycm9ycy5qb2luKCcnKSArICI8L3VsPiI7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZS5zdGFjayAmJiAoZS5leHRyYWN0IHx8IG9wdGlvbnMubG9nTGV2ZWwgPj0gNCkpIHsKICAgICAgICAgICAgICBjb250ZW50ICs9ICI8YnIvPlN0YWNrIFRyYWNlPC9iciAvPiIgKyBlLnN0YWNrLnNwbGl0KCdcbicpLnNsaWNlKDEpLmpvaW4oJzxici8+Jyk7CiAgICAgICAgICB9CiAgICAgICAgICBlbGVtLmlubmVySFRNTCA9IGNvbnRlbnQ7CiAgICAgICAgICAvLyBDU1MgZm9yIGVycm9yIG1lc3NhZ2VzCiAgICAgICAgICBicm93c2VyLmNyZWF0ZUNTUyh3aW5kb3cuZG9jdW1lbnQsIFsKICAgICAgICAgICAgICAnLmxlc3MtZXJyb3ItbWVzc2FnZSB1bCwgLmxlc3MtZXJyb3ItbWVzc2FnZSBsaSB7JywKICAgICAgICAgICAgICAnbGlzdC1zdHlsZS10eXBlOiBub25lOycsCiAgICAgICAgICAgICAgJ21hcmdpbi1yaWdodDogMTVweDsnLAogICAgICAgICAgICAgICdwYWRkaW5nOiA0cHggMDsnLAogICAgICAgICAgICAgICdtYXJnaW46IDA7JywKICAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICAgJy5sZXNzLWVycm9yLW1lc3NhZ2UgbGFiZWwgeycsCiAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZTogMTJweDsnLAogICAgICAgICAgICAgICdtYXJnaW4tcmlnaHQ6IDE1cHg7JywKICAgICAgICAgICAgICAncGFkZGluZzogNHB4IDA7JywKICAgICAgICAgICAgICAnY29sb3I6ICNjYzc3Nzc7JywKICAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICAgJy5sZXNzLWVycm9yLW1lc3NhZ2UgcHJlIHsnLAogICAgICAgICAgICAgICdjb2xvcjogI2RkNjY2NjsnLAogICAgICAgICAgICAgICdwYWRkaW5nOiA0cHggMDsnLAogICAgICAgICAgICAgICdtYXJnaW46IDA7JywKICAgICAgICAgICAgICAnZGlzcGxheTogaW5saW5lLWJsb2NrOycsCiAgICAgICAgICAgICAgJ30nLAogICAgICAgICAgICAgICcubGVzcy1lcnJvci1tZXNzYWdlIHByZS5saW5lIHsnLAogICAgICAgICAgICAgICdjb2xvcjogI2ZmMDAwMDsnLAogICAgICAgICAgICAgICd9JywKICAgICAgICAgICAgICAnLmxlc3MtZXJyb3ItbWVzc2FnZSBoMyB7JywKICAgICAgICAgICAgICAnZm9udC1zaXplOiAyMHB4OycsCiAgICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOycsCiAgICAgICAgICAgICAgJ3BhZGRpbmc6IDE1cHggMCA1cHggMDsnLAogICAgICAgICAgICAgICdtYXJnaW46IDA7JywKICAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICAgJy5sZXNzLWVycm9yLW1lc3NhZ2UgYSB7JywKICAgICAgICAgICAgICAnY29sb3I6ICMxMGEnLAogICAgICAgICAgICAgICd9JywKICAgICAgICAgICAgICAnLmxlc3MtZXJyb3ItbWVzc2FnZSAuZXJyb3IgeycsCiAgICAgICAgICAgICAgJ2NvbG9yOiByZWQ7JywKICAgICAgICAgICAgICAnZm9udC13ZWlnaHQ6IGJvbGQ7JywKICAgICAgICAgICAgICAncGFkZGluZy1ib3R0b206IDJweDsnLAogICAgICAgICAgICAgICdib3JkZXItYm90dG9tOiAxcHggZGFzaGVkIHJlZDsnLAogICAgICAgICAgICAgICd9JwogICAgICAgICAgXS5qb2luKCdcbicpLCB7IHRpdGxlOiAnZXJyb3ItbWVzc2FnZScgfSk7CiAgICAgICAgICBlbGVtLnN0eWxlLmNzc1RleHQgPSBbCiAgICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZicsCiAgICAgICAgICAgICAgJ2JvcmRlcjogMXB4IHNvbGlkICNlMDAnLAogICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlJywKICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1czogNXB4JywKICAgICAgICAgICAgICAnLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHgnLAogICAgICAgICAgICAgICctbW96LWJvcmRlci1yYWRpdXM6IDVweCcsCiAgICAgICAgICAgICAgJ2NvbG9yOiAjZTAwJywKICAgICAgICAgICAgICAncGFkZGluZzogMTVweCcsCiAgICAgICAgICAgICAgJ21hcmdpbi1ib3R0b206IDE1cHgnCiAgICAgICAgICBdLmpvaW4oJzsnKTsKICAgICAgICAgIGlmIChvcHRpb25zLmVudiA9PT0gJ2RldmVsb3BtZW50JykgewogICAgICAgICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICB2YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7CiAgICAgICAgICAgICAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keTsKICAgICAgICAgICAgICAgICAgaWYgKGJvZHkpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LnJlcGxhY2VDaGlsZChlbGVtLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keS5pbnNlcnRCZWZvcmUoZWxlbSwgYm9keS5maXJzdENoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwgMTApOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIHJlbW92ZUVycm9ySFRNTChwYXRoKSB7CiAgICAgICAgICB2YXIgbm9kZSA9IHdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVzcy1lcnJvci1tZXNzYWdlOiIgKyBleHRyYWN0SWQocGF0aCkpOwogICAgICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gcmVtb3ZlRXJyb3IocGF0aCkgewogICAgICAgICAgaWYgKCFvcHRpb25zLmVycm9yUmVwb3J0aW5nIHx8IG9wdGlvbnMuZXJyb3JSZXBvcnRpbmcgPT09ICdodG1sJykgewogICAgICAgICAgICAgIHJlbW92ZUVycm9ySFRNTChwYXRoKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZXJyb3JSZXBvcnRpbmcgPT09ICdjb25zb2xlJykgOwogICAgICAgICAgZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMuZXJyb3JSZXBvcnRpbmcgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICBvcHRpb25zLmVycm9yUmVwb3J0aW5nKCdyZW1vdmUnLCBwYXRoKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBmdW5jdGlvbiBlcnJvckNvbnNvbGUoZSwgcm9vdEhyZWYpIHsKICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9ICd7bGluZX0ge2NvbnRlbnR9JzsKICAgICAgICAgIHZhciBmaWxlbmFtZSA9IGUuZmlsZW5hbWUgfHwgcm9vdEhyZWY7CiAgICAgICAgICB2YXIgZXJyb3JzID0gW107CiAgICAgICAgICB2YXIgY29udGVudCA9IChlLnR5cGUgfHwgJ1N5bnRheCcpICsgIkVycm9yOiAiICsgKGUubWVzc2FnZSB8fCAnVGhlcmUgaXMgYW4gZXJyb3IgaW4geW91ciAubGVzcyBmaWxlJykgKyAiIGluICIgKyBmaWxlbmFtZTsKICAgICAgICAgIHZhciBlcnJvcmxpbmUgPSBmdW5jdGlvbiAoZSwgaSwgY2xhc3NuYW1lKSB7CiAgICAgICAgICAgICAgaWYgKGUuZXh0cmFjdFtpXSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHRlbXBsYXRlLnJlcGxhY2UoL1x7bGluZVx9LywgKHBhcnNlSW50KGUubGluZSwgMTApIHx8IDApICsgKGkgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ce2NsYXNzXH0vLCBjbGFzc25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXHtjb250ZW50XH0vLCBlLmV4dHJhY3RbaV0pKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9OwogICAgICAgICAgaWYgKGUubGluZSkgewogICAgICAgICAgICAgIGVycm9ybGluZShlLCAwLCAnJyk7CiAgICAgICAgICAgICAgZXJyb3JsaW5lKGUsIDEsICdsaW5lJyk7CiAgICAgICAgICAgICAgZXJyb3JsaW5lKGUsIDIsICcnKTsKICAgICAgICAgICAgICBjb250ZW50ICs9ICIgb24gbGluZSAiICsgZS5saW5lICsgIiwgY29sdW1uICIgKyAoZS5jb2x1bW4gKyAxKSArICI6XG4iICsgZXJyb3JzLmpvaW4oJ1xuJyk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZS5zdGFjayAmJiAoZS5leHRyYWN0IHx8IG9wdGlvbnMubG9nTGV2ZWwgPj0gNCkpIHsKICAgICAgICAgICAgICBjb250ZW50ICs9ICJcblN0YWNrIFRyYWNlXG4iICsgZS5zdGFjazsKICAgICAgICAgIH0KICAgICAgICAgIGxlc3MubG9nZ2VyLmVycm9yKGNvbnRlbnQpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGVycm9yKGUsIHJvb3RIcmVmKSB7CiAgICAgICAgICBpZiAoIW9wdGlvbnMuZXJyb3JSZXBvcnRpbmcgfHwgb3B0aW9ucy5lcnJvclJlcG9ydGluZyA9PT0gJ2h0bWwnKSB7CiAgICAgICAgICAgICAgZXJyb3JIVE1MKGUsIHJvb3RIcmVmKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZXJyb3JSZXBvcnRpbmcgPT09ICdjb25zb2xlJykgewogICAgICAgICAgICAgIGVycm9yQ29uc29sZShlLCByb290SHJlZik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5lcnJvclJlcG9ydGluZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgIG9wdGlvbnMuZXJyb3JSZXBvcnRpbmcoJ2FkZCcsIGUsIHJvb3RIcmVmKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gewogICAgICAgICAgYWRkOiBlcnJvciwKICAgICAgICAgIHJlbW92ZTogcmVtb3ZlRXJyb3IKICAgICAgfTsKICB9KTsKCiAgLy8gQ2FjaGUgc3lzdGVtIGlzIGEgYml0IG91dGRhdGVkIGFuZCBjb3VsZCBkbyB3aXRoIHdvcmsKICB2YXIgQ2FjaGUgPSAoZnVuY3Rpb24gKHdpbmRvdywgb3B0aW9ucywgbG9nZ2VyKSB7CiAgICAgIHZhciBjYWNoZSA9IG51bGw7CiAgICAgIGlmIChvcHRpb25zLmVudiAhPT0gJ2RldmVsb3BtZW50JykgewogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBjYWNoZSA9ICh0eXBlb2Ygd2luZG93LmxvY2FsU3RvcmFnZSA9PT0gJ3VuZGVmaW5lZCcpID8gbnVsbCA6IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CiAgICAgICAgICB9CiAgICAgICAgICBjYXRjaCAoXykgeyB9CiAgICAgIH0KICAgICAgcmV0dXJuIHsKICAgICAgICAgIHNldENTUzogZnVuY3Rpb24gKHBhdGgsIGxhc3RNb2RpZmllZCwgbW9kaWZ5VmFycywgc3R5bGVzKSB7CiAgICAgICAgICAgICAgaWYgKGNhY2hlKSB7CiAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJzYXZpbmcgIiArIHBhdGggKyAiIHRvIGNhY2hlLiIpOwogICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgY2FjaGUuc2V0SXRlbShwYXRoLCBzdHlsZXMpOwogICAgICAgICAgICAgICAgICAgICAgY2FjaGUuc2V0SXRlbShwYXRoICsgIjp0aW1lc3RhbXAiLCBsYXN0TW9kaWZpZWQpOwogICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGlmeVZhcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS5zZXRJdGVtKHBhdGggKyAiOnZhcnMiLCBKU09OLnN0cmluZ2lmeShtb2RpZnlWYXJzKSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gLSBjb3VsZCBkbyB3aXRoIGFkZGluZyBtb3JlIHJvYnVzdCBlcnJvciBoYW5kbGluZwogICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJmYWlsZWQgdG8gc2F2ZSBcIiIgKyBwYXRoICsgIlwiIHRvIGxvY2FsIHN0b3JhZ2UgZm9yIGNhY2hpbmcuIik7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgZ2V0Q1NTOiBmdW5jdGlvbiAocGF0aCwgd2ViSW5mbywgbW9kaWZ5VmFycykgewogICAgICAgICAgICAgIHZhciBjc3MgPSBjYWNoZSAmJiBjYWNoZS5nZXRJdGVtKHBhdGgpOwogICAgICAgICAgICAgIHZhciB0aW1lc3RhbXAgPSBjYWNoZSAmJiBjYWNoZS5nZXRJdGVtKHBhdGggKyAiOnRpbWVzdGFtcCIpOwogICAgICAgICAgICAgIHZhciB2YXJzID0gY2FjaGUgJiYgY2FjaGUuZ2V0SXRlbShwYXRoICsgIjp2YXJzIik7CiAgICAgICAgICAgICAgbW9kaWZ5VmFycyA9IG1vZGlmeVZhcnMgfHwge307CiAgICAgICAgICAgICAgdmFycyA9IHZhcnMgfHwgInt9IjsgLy8gaWYgbm90IHNldCwgdHJlYXQgYXMgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYW4gZW1wdHkgb2JqZWN0CiAgICAgICAgICAgICAgaWYgKHRpbWVzdGFtcCAmJiB3ZWJJbmZvLmxhc3RNb2RpZmllZCAmJgogICAgICAgICAgICAgICAgICAobmV3IERhdGUod2ViSW5mby5sYXN0TW9kaWZpZWQpLnZhbHVlT2YoKSA9PT0KICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKHRpbWVzdGFtcCkudmFsdWVPZigpKSAmJgogICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShtb2RpZnlWYXJzKSA9PT0gdmFycykgewogICAgICAgICAgICAgICAgICAvLyBVc2UgbG9jYWwgY29weQogICAgICAgICAgICAgICAgICByZXR1cm4gY3NzOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfTsKICB9KTsKCiAgdmFyIEltYWdlU2l6ZSA9IChmdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIGltYWdlU2l6ZSgpIHsKICAgICAgICAgIHRocm93IHsKICAgICAgICAgICAgICB0eXBlOiAnUnVudGltZScsCiAgICAgICAgICAgICAgbWVzc2FnZTogJ0ltYWdlIHNpemUgZnVuY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgdmVyc2lvbiBvZiBsZXNzJwogICAgICAgICAgfTsKICAgICAgfQogICAgICB2YXIgaW1hZ2VGdW5jdGlvbnMgPSB7CiAgICAgICAgICAnaW1hZ2Utc2l6ZSc6IGZ1bmN0aW9uIChmaWxlUGF0aE5vZGUpIHsKICAgICAgICAgICAgICBpbWFnZVNpemUoKTsKICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICB9LAogICAgICAgICAgJ2ltYWdlLXdpZHRoJzogZnVuY3Rpb24gKGZpbGVQYXRoTm9kZSkgewogICAgICAgICAgICAgIGltYWdlU2l6ZSgpOwogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIH0sCiAgICAgICAgICAnaW1hZ2UtaGVpZ2h0JzogZnVuY3Rpb24gKGZpbGVQYXRoTm9kZSkgewogICAgICAgICAgICAgIGltYWdlU2l6ZSgpOwogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIH0KICAgICAgfTsKICAgICAgZnVuY3Rpb25SZWdpc3RyeS5hZGRNdWx0aXBsZShpbWFnZUZ1bmN0aW9ucyk7CiAgfSk7CgogIC8vCiAgdmFyIHJvb3QgPSAoZnVuY3Rpb24gKHdpbmRvdywgb3B0aW9ucykgewogICAgICB2YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7CiAgICAgIHZhciBsZXNzID0gbGVzc1Jvb3QoKTsKICAgICAgbGVzcy5vcHRpb25zID0gb3B0aW9uczsKICAgICAgdmFyIGVudmlyb25tZW50ID0gbGVzcy5lbnZpcm9ubWVudDsKICAgICAgdmFyIEZpbGVNYW5hZ2VyID0gRk0ob3B0aW9ucywgbGVzcy5sb2dnZXIpOwogICAgICB2YXIgZmlsZU1hbmFnZXIgPSBuZXcgRmlsZU1hbmFnZXIoKTsKICAgICAgZW52aXJvbm1lbnQuYWRkRmlsZU1hbmFnZXIoZmlsZU1hbmFnZXIpOwogICAgICBsZXNzLkZpbGVNYW5hZ2VyID0gRmlsZU1hbmFnZXI7CiAgICAgIGxlc3MuUGx1Z2luTG9hZGVyID0gUGx1Z2luTG9hZGVyOwogICAgICBMb2dMaXN0ZW5lcihsZXNzLCBvcHRpb25zKTsKICAgICAgdmFyIGVycm9ycyA9IEVycm9yUmVwb3J0aW5nKHdpbmRvdywgbGVzcywgb3B0aW9ucyk7CiAgICAgIHZhciBjYWNoZSA9IGxlc3MuY2FjaGUgPSBvcHRpb25zLmNhY2hlIHx8IENhY2hlKHdpbmRvdywgb3B0aW9ucywgbGVzcy5sb2dnZXIpOwogICAgICBJbWFnZVNpemUobGVzcy5lbnZpcm9ubWVudCk7CiAgICAgIC8vIFNldHVwIHVzZXIgZnVuY3Rpb25zIC0gRGVwcmVjYXRlPwogICAgICBpZiAob3B0aW9ucy5mdW5jdGlvbnMpIHsKICAgICAgICAgIGxlc3MuZnVuY3Rpb25zLmZ1bmN0aW9uUmVnaXN0cnkuYWRkTXVsdGlwbGUob3B0aW9ucy5mdW5jdGlvbnMpOwogICAgICB9CiAgICAgIHZhciB0eXBlUGF0dGVybiA9IC9edGV4dFwvKHgtKT9sZXNzJC87CiAgICAgIGZ1bmN0aW9uIGNsb25lKG9iaikgewogICAgICAgICAgdmFyIGNsb25lZCA9IHt9OwogICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHsKICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7CiAgICAgICAgICAgICAgICAgIGNsb25lZFtwcm9wXSA9IG9ialtwcm9wXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gY2xvbmVkOwogICAgICB9CiAgICAgIC8vIG9ubHkgcmVhbGx5IG5lZWRlZCBmb3IgcGhhbnRvbQogICAgICBmdW5jdGlvbiBiaW5kKGZ1bmMsIHRoaXNBcmcpIHsKICAgICAgICAgIHZhciBjdXJyeUFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpOwogICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICB2YXIgYXJncyA9IGN1cnJ5QXJncy5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7CiAgICAgICAgICB9OwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGxvYWRTdHlsZXMobW9kaWZ5VmFycykgewogICAgICAgICAgdmFyIHN0eWxlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpOwogICAgICAgICAgdmFyIHN0eWxlOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBzdHlsZSA9IHN0eWxlc1tpXTsKICAgICAgICAgICAgICBpZiAoc3R5bGUudHlwZS5tYXRjaCh0eXBlUGF0dGVybikpIHsKICAgICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlT3B0aW9ucyA9IGNsb25lKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICBpbnN0YW5jZU9wdGlvbnMubW9kaWZ5VmFycyA9IG1vZGlmeVZhcnM7CiAgICAgICAgICAgICAgICAgIHZhciBsZXNzVGV4dCA9IHN0eWxlLmlubmVySFRNTCB8fCAnJzsKICAgICAgICAgICAgICAgICAgaW5zdGFuY2VPcHRpb25zLmZpbGVuYW1lID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZi5yZXBsYWNlKC8jLiokLywgJycpOwogICAgICAgICAgICAgICAgICAvKiBqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSAqLwogICAgICAgICAgICAgICAgICAvLyB1c2UgY2xvc3VyZSB0byBzdG9yZSBjdXJyZW50IHN0eWxlCiAgICAgICAgICAgICAgICAgIGxlc3MucmVuZGVyKGxlc3NUZXh0LCBpbnN0YW5jZU9wdGlvbnMsIGJpbmQoZnVuY3Rpb24gKHN0eWxlLCBlLCByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFkZChlLCAnaW5saW5lJyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJzsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGUuc3R5bGVTaGVldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXN1bHQuY3NzOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuaW5uZXJIVE1MID0gcmVzdWx0LmNzczsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sIG51bGwsIHN0eWxlKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGxvYWRTdHlsZVNoZWV0KHNoZWV0LCBjYWxsYmFjaywgcmVsb2FkLCByZW1haW5pbmcsIG1vZGlmeVZhcnMpIHsKICAgICAgICAgIHZhciBpbnN0YW5jZU9wdGlvbnMgPSBjbG9uZShvcHRpb25zKTsKICAgICAgICAgIGFkZERhdGFBdHRyKGluc3RhbmNlT3B0aW9ucywgc2hlZXQpOwogICAgICAgICAgaW5zdGFuY2VPcHRpb25zLm1pbWUgPSBzaGVldC50eXBlOwogICAgICAgICAgaWYgKG1vZGlmeVZhcnMpIHsKICAgICAgICAgICAgICBpbnN0YW5jZU9wdGlvbnMubW9kaWZ5VmFycyA9IG1vZGlmeVZhcnM7CiAgICAgICAgICB9CiAgICAgICAgICBmdW5jdGlvbiBsb2FkSW5pdGlhbEZpbGVDYWxsYmFjayhsb2FkZWRGaWxlKSB7CiAgICAgICAgICAgICAgdmFyIGRhdGEgPSBsb2FkZWRGaWxlLmNvbnRlbnRzOwogICAgICAgICAgICAgIHZhciBwYXRoID0gbG9hZGVkRmlsZS5maWxlbmFtZTsKICAgICAgICAgICAgICB2YXIgd2ViSW5mbyA9IGxvYWRlZEZpbGUud2ViSW5mbzsKICAgICAgICAgICAgICB2YXIgbmV3RmlsZUluZm8gPSB7CiAgICAgICAgICAgICAgICAgIGN1cnJlbnREaXJlY3Rvcnk6IGZpbGVNYW5hZ2VyLmdldFBhdGgocGF0aCksCiAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBwYXRoLAogICAgICAgICAgICAgICAgICByb290RmlsZW5hbWU6IHBhdGgsCiAgICAgICAgICAgICAgICAgIHJld3JpdGVVcmxzOiBpbnN0YW5jZU9wdGlvbnMucmV3cml0ZVVybHMKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIG5ld0ZpbGVJbmZvLmVudHJ5UGF0aCA9IG5ld0ZpbGVJbmZvLmN1cnJlbnREaXJlY3Rvcnk7CiAgICAgICAgICAgICAgbmV3RmlsZUluZm8ucm9vdHBhdGggPSBpbnN0YW5jZU9wdGlvbnMucm9vdHBhdGggfHwgbmV3RmlsZUluZm8uY3VycmVudERpcmVjdG9yeTsKICAgICAgICAgICAgICBpZiAod2ViSW5mbykgewogICAgICAgICAgICAgICAgICB3ZWJJbmZvLnJlbWFpbmluZyA9IHJlbWFpbmluZzsKICAgICAgICAgICAgICAgICAgdmFyIGNzcyA9IGNhY2hlLmdldENTUyhwYXRoLCB3ZWJJbmZvLCBpbnN0YW5jZU9wdGlvbnMubW9kaWZ5VmFycyk7CiAgICAgICAgICAgICAgICAgIGlmICghcmVsb2FkICYmIGNzcykgewogICAgICAgICAgICAgICAgICAgICAgd2ViSW5mby5sb2NhbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCBjc3MsIGRhdGEsIHNoZWV0LCB3ZWJJbmZvLCBwYXRoKTsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBUT0RPIGFkZCB0ZXN0cyBhcm91bmQgaG93IHRoaXMgYmVoYXZlcyB3aGVuIHJlbG9hZGluZwogICAgICAgICAgICAgIGVycm9ycy5yZW1vdmUocGF0aCk7CiAgICAgICAgICAgICAgaW5zdGFuY2VPcHRpb25zLnJvb3RGaWxlSW5mbyA9IG5ld0ZpbGVJbmZvOwogICAgICAgICAgICAgIGxlc3MucmVuZGVyKGRhdGEsIGluc3RhbmNlT3B0aW9ucywgZnVuY3Rpb24gKGUsIHJlc3VsdCkgewogICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgZS5ocmVmID0gcGF0aDsKICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGUpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgY2FjaGUuc2V0Q1NTKHNoZWV0LmhyZWYsIHdlYkluZm8ubGFzdE1vZGlmaWVkLCBpbnN0YW5jZU9wdGlvbnMubW9kaWZ5VmFycywgcmVzdWx0LmNzcyk7CiAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQuY3NzLCBkYXRhLCBzaGVldCwgd2ViSW5mbywgcGF0aCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGZpbGVNYW5hZ2VyLmxvYWRGaWxlKHNoZWV0LmhyZWYsIG51bGwsIGluc3RhbmNlT3B0aW9ucywgZW52aXJvbm1lbnQpCiAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGxvYWRlZEZpbGUpIHsKICAgICAgICAgICAgICBsb2FkSW5pdGlhbEZpbGVDYWxsYmFjayhsb2FkZWRGaWxlKTsKICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpOwogICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7CiAgICAgICAgICB9KTsKICAgICAgfQogICAgICBmdW5jdGlvbiBsb2FkU3R5bGVTaGVldHMoY2FsbGJhY2ssIHJlbG9hZCwgbW9kaWZ5VmFycykgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZXNzLnNoZWV0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIGxvYWRTdHlsZVNoZWV0KGxlc3Muc2hlZXRzW2ldLCBjYWxsYmFjaywgcmVsb2FkLCBsZXNzLnNoZWV0cy5sZW5ndGggLSAoaSArIDEpLCBtb2RpZnlWYXJzKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBmdW5jdGlvbiBpbml0UnVubmluZ01vZGUoKSB7CiAgICAgICAgICBpZiAobGVzcy5lbnYgPT09ICdkZXZlbG9wbWVudCcpIHsKICAgICAgICAgICAgICBsZXNzLndhdGNoVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgIGlmIChsZXNzLndhdGNoTW9kZSkgewogICAgICAgICAgICAgICAgICAgICAgZmlsZU1hbmFnZXIuY2xlYXJGaWxlQ2FjaGUoKTsKICAgICAgICAgICAgICAgICAgICAgIGxvYWRTdHlsZVNoZWV0cyhmdW5jdGlvbiAoZSwgY3NzLCBfLCBzaGVldCwgd2ViSW5mbykgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hZGQoZSwgZS5ocmVmIHx8IHNoZWV0LmhyZWYpOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlci5jcmVhdGVDU1Mod2luZG93LmRvY3VtZW50LCBjc3MsIHNoZWV0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0sIG9wdGlvbnMucG9sbCk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8KICAgICAgLy8gV2F0Y2ggbW9kZQogICAgICAvLwogICAgICBsZXNzLndhdGNoID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgaWYgKCFsZXNzLndhdGNoTW9kZSkgewogICAgICAgICAgICAgIGxlc3MuZW52ID0gJ2RldmVsb3BtZW50JzsKICAgICAgICAgICAgICBpbml0UnVubmluZ01vZGUoKTsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMud2F0Y2hNb2RlID0gdHJ1ZTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICB9OwogICAgICBsZXNzLnVud2F0Y2ggPSBmdW5jdGlvbiAoKSB7IGNsZWFySW50ZXJ2YWwobGVzcy53YXRjaFRpbWVyKTsgdGhpcy53YXRjaE1vZGUgPSBmYWxzZTsgcmV0dXJuIGZhbHNlOyB9OwogICAgICAvLwogICAgICAvLyBTeW5jaHJvbm91c2x5IGdldCBhbGwgPGxpbms+IHRhZ3Mgd2l0aCB0aGUgJ3JlbCcgYXR0cmlidXRlIHNldCB0bwogICAgICAvLyAic3R5bGVzaGVldC9sZXNzIi4KICAgICAgLy8KICAgICAgbGVzcy5yZWdpc3RlclN0eWxlc2hlZXRzSW1tZWRpYXRlbHkgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICB2YXIgbGlua3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGluaycpOwogICAgICAgICAgbGVzcy5zaGVldHMgPSBbXTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBpZiAobGlua3NbaV0ucmVsID09PSAnc3R5bGVzaGVldC9sZXNzJyB8fCAobGlua3NbaV0ucmVsLm1hdGNoKC9zdHlsZXNoZWV0LykgJiYKICAgICAgICAgICAgICAgICAgKGxpbmtzW2ldLnR5cGUubWF0Y2godHlwZVBhdHRlcm4pKSkpIHsKICAgICAgICAgICAgICAgICAgbGVzcy5zaGVldHMucHVzaChsaW5rc1tpXSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9OwogICAgICAvLwogICAgICAvLyBBc3luY2hyb25vdXNseSBnZXQgYWxsIDxsaW5rPiB0YWdzIHdpdGggdGhlICdyZWwnIGF0dHJpYnV0ZSBzZXQgdG8KICAgICAgLy8gInN0eWxlc2hlZXQvbGVzcyIsIHJldHVybmluZyBhIFByb21pc2UuCiAgICAgIC8vCiAgICAgIGxlc3MucmVnaXN0ZXJTdHlsZXNoZWV0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgIGxlc3MucmVnaXN0ZXJTdHlsZXNoZWV0c0ltbWVkaWF0ZWx5KCk7CiAgICAgICAgICByZXNvbHZlKCk7CiAgICAgIH0pOyB9OwogICAgICAvLwogICAgICAvLyBXaXRoIHRoaXMgZnVuY3Rpb24sIGl0J3MgcG9zc2libGUgdG8gYWx0ZXIgdmFyaWFibGVzIGFuZCByZS1yZW5kZXIKICAgICAgLy8gQ1NTIHdpdGhvdXQgcmVsb2FkaW5nIGxlc3MtZmlsZXMKICAgICAgLy8KICAgICAgbGVzcy5tb2RpZnlWYXJzID0gZnVuY3Rpb24gKHJlY29yZCkgeyByZXR1cm4gbGVzcy5yZWZyZXNoKHRydWUsIHJlY29yZCwgZmFsc2UpOyB9OwogICAgICBsZXNzLnJlZnJlc2ggPSBmdW5jdGlvbiAocmVsb2FkLCBtb2RpZnlWYXJzLCBjbGVhckZpbGVDYWNoZSkgewogICAgICAgICAgaWYgKChyZWxvYWQgfHwgY2xlYXJGaWxlQ2FjaGUpICYmIGNsZWFyRmlsZUNhY2hlICE9PSBmYWxzZSkgewogICAgICAgICAgICAgIGZpbGVNYW5hZ2VyLmNsZWFyRmlsZUNhY2hlKCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgIHZhciBzdGFydFRpbWU7CiAgICAgICAgICAgICAgdmFyIGVuZFRpbWU7CiAgICAgICAgICAgICAgdmFyIHRvdGFsTWlsbGlzZWNvbmRzOwogICAgICAgICAgICAgIHZhciByZW1haW5pbmdTaGVldHM7CiAgICAgICAgICAgICAgc3RhcnRUaW1lID0gZW5kVGltZSA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgLy8gU2V0IGNvdW50ZXIgZm9yIHJlbWFpbmluZyB1bnByb2Nlc3NlZCBzaGVldHMKICAgICAgICAgICAgICByZW1haW5pbmdTaGVldHMgPSBsZXNzLnNoZWV0cy5sZW5ndGg7CiAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1NoZWV0cyA9PT0gMCkgewogICAgICAgICAgICAgICAgICBlbmRUaW1lID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgICAgdG90YWxNaWxsaXNlY29uZHMgPSBlbmRUaW1lIC0gc3RhcnRUaW1lOwogICAgICAgICAgICAgICAgICBsZXNzLmxvZ2dlci5pbmZvKCdMZXNzIGhhcyBmaW5pc2hlZCBhbmQgbm8gc2hlZXRzIHdlcmUgbG9hZGVkLicpOwogICAgICAgICAgICAgICAgICByZXNvbHZlKHsKICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgZW5kVGltZTogZW5kVGltZSwKICAgICAgICAgICAgICAgICAgICAgIHRvdGFsTWlsbGlzZWNvbmRzOiB0b3RhbE1pbGxpc2Vjb25kcywKICAgICAgICAgICAgICAgICAgICAgIHNoZWV0czogbGVzcy5zaGVldHMubGVuZ3RoCiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgLy8gUmVsaWVzIG9uIGxlc3Muc2hlZXRzIGFycmF5LCBjYWxsYmFjayBzZWVtcyB0byBiZSBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCBmb3IgZXZlcnkgZWxlbWVudCBvZiB0aGUgYXJyYXkKICAgICAgICAgICAgICAgICAgbG9hZFN0eWxlU2hlZXRzKGZ1bmN0aW9uIChlLCBjc3MsIF8sIHNoZWV0LCB3ZWJJbmZvKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hZGQoZSwgZS5ocmVmIHx8IHNoZWV0LmhyZWYpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBpZiAod2ViSW5mby5sb2NhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGxlc3MubG9nZ2VyLmluZm8oIkxvYWRpbmcgIiArIHNoZWV0LmhyZWYgKyAiIGZyb20gY2FjaGUuIik7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBsZXNzLmxvZ2dlci5pbmZvKCJSZW5kZXJlZCAiICsgc2hlZXQuaHJlZiArICIgc3VjY2Vzc2Z1bGx5LiIpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlci5jcmVhdGVDU1Mod2luZG93LmRvY3VtZW50LCBjc3MsIHNoZWV0KTsKICAgICAgICAgICAgICAgICAgICAgIGxlc3MubG9nZ2VyLmluZm8oIkNTUyBmb3IgIiArIHNoZWV0LmhyZWYgKyAiIGdlbmVyYXRlZCBpbiAiICsgKG5ldyBEYXRlKCkgLSBlbmRUaW1lKSArICJtcyIpOwogICAgICAgICAgICAgICAgICAgICAgLy8gQ291bnQgY29tcGxldGVkIHNoZWV0CiAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdTaGVldHMtLTsKICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IHJlbWFpbmluZyBzaGVldCB3YXMgcHJvY2Vzc2VkIGFuZCB0aGVuIGNhbGwgdGhlIHByb21pc2UKICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdTaGVldHMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbE1pbGxpc2Vjb25kcyA9IG5ldyBEYXRlKCkgLSBzdGFydFRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgbGVzcy5sb2dnZXIuaW5mbygiTGVzcyBoYXMgZmluaXNoZWQuIENTUyBnZW5lcmF0ZWQgaW4gIiArIHRvdGFsTWlsbGlzZWNvbmRzICsgIm1zIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRUaW1lOiBlbmRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbE1pbGxpc2Vjb25kczogdG90YWxNaWxsaXNlY29uZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWV0czogbGVzcy5zaGVldHMubGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBlbmRUaW1lID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgICAgfSwgcmVsb2FkLCBtb2RpZnlWYXJzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbG9hZFN0eWxlcyhtb2RpZnlWYXJzKTsKICAgICAgICAgIH0pOwogICAgICB9OwogICAgICBsZXNzLnJlZnJlc2hTdHlsZXMgPSBsb2FkU3R5bGVzOwogICAgICByZXR1cm4gbGVzczsKICB9KTsKCiAgLyoqCiAgICogS2lja3Mgb2ZmIGxlc3MgYW5kIGNvbXBpbGVzIGFueSBzdHlsZXNoZWV0cwogICAqIHVzZWQgaW4gdGhlIGJyb3dzZXIgZGlzdHJpYnV0ZWQgdmVyc2lvbiBvZiBsZXNzCiAgICogdG8ga2ljay1zdGFydCBsZXNzIHVzaW5nIHRoZSBicm93c2VyIGFwaQogICAqLwogIHZhciBvcHRpb25zJDEgPSBkZWZhdWx0T3B0aW9ucygpOwogIGlmICh3aW5kb3cubGVzcykgewogICAgICBmb3IgKHZhciBrZXkgaW4gd2luZG93Lmxlc3MpIHsKICAgICAgICAgIGlmICh3aW5kb3cubGVzcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CiAgICAgICAgICAgICAgb3B0aW9ucyQxW2tleV0gPSB3aW5kb3cubGVzc1trZXldOwogICAgICAgICAgfQogICAgICB9CiAgfQogIGFkZERlZmF1bHRPcHRpb25zKHdpbmRvdywgb3B0aW9ucyQxKTsKICBvcHRpb25zJDEucGx1Z2lucyA9IG9wdGlvbnMkMS5wbHVnaW5zIHx8IFtdOwogIGlmICh3aW5kb3cuTEVTU19QTFVHSU5TKSB7CiAgICAgIG9wdGlvbnMkMS5wbHVnaW5zID0gb3B0aW9ucyQxLnBsdWdpbnMuY29uY2F0KHdpbmRvdy5MRVNTX1BMVUdJTlMpOwogIH0KICB2YXIgbGVzcyA9IHJvb3Qod2luZG93LCBvcHRpb25zJDEpOwogIHdpbmRvdy5sZXNzID0gbGVzczsKICB2YXIgY3NzOwogIHZhciBoZWFkOwogIHZhciBzdHlsZTsKICAvLyBBbHdheXMgcmVzdG9yZSBwYWdlIHZpc2liaWxpdHkKICBmdW5jdGlvbiByZXNvbHZlT3JSZWplY3QoZGF0YSkgewogICAgICBpZiAoZGF0YS5maWxlbmFtZSkgewogICAgICAgICAgY29uc29sZS53YXJuKGRhdGEpOwogICAgICB9CiAgICAgIGlmICghb3B0aW9ucyQxLmFzeW5jKSB7CiAgICAgICAgICBoZWFkLnJlbW92ZUNoaWxkKHN0eWxlKTsKICAgICAgfQogIH0KICBpZiAob3B0aW9ucyQxLm9uUmVhZHkpIHsKICAgICAgaWYgKC8hd2F0Y2gvLnRlc3Qod2luZG93LmxvY2F0aW9uLmhhc2gpKSB7CiAgICAgICAgICBsZXNzLndhdGNoKCk7CiAgICAgIH0KICAgICAgLy8gU2ltdWxhdGUgc3luY2hyb25vdXMgc3R5bGVzaGVldCBsb2FkaW5nIGJ5IGhpZGluZyBwYWdlIHJlbmRlcmluZwogICAgICBpZiAoIW9wdGlvbnMkMS5hc3luYykgewogICAgICAgICAgY3NzID0gJ2JvZHkgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQgfSc7CiAgICAgICAgICBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwogICAgICAgICAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgICAgICAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7CiAgICAgICAgICBpZiAoc3R5bGUuc3R5bGVTaGVldCkgewogICAgICAgICAgICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpOwogICAgICAgICAgfQogICAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CiAgICAgIH0KICAgICAgbGVzcy5yZWdpc3RlclN0eWxlc2hlZXRzSW1tZWRpYXRlbHkoKTsKICAgICAgbGVzcy5wYWdlTG9hZEZpbmlzaGVkID0gbGVzcy5yZWZyZXNoKGxlc3MuZW52ID09PSAnZGV2ZWxvcG1lbnQnKS50aGVuKHJlc29sdmVPclJlamVjdCwgcmVzb2x2ZU9yUmVqZWN0KTsKICB9CgogIHJldHVybiBsZXNzOwoKfSkpKTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/bench.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy8uLi92ZW5kb3IvYXV0b2xvYWQucGhwJzsKCmNsYXNzIExlc3NQaHBCZW5jaG1hcmsgewoJcHJpdmF0ZSBjb25zdCBDQVNFUyA9IFsKCQknc3RyaW5ncycgPT4gWwoJCQknY291bnQnID0+IDUwMCwKCQkJJ2ZpbGVzJyA9PiBbCgkJCQlfX0RJUl9fIC4gJy9GaXh0dXJlcy9iZW5jaC1zdHJpbmdzLyoubGVzcycsCgkJCV0sCgkJCSdvcHRpb25zJyA9PiBbXSwKCQldLAoJCSdib290c3RyYXAtMy4wLjMnID0+IFsKCQkJJ2NvdW50JyA9PiA1MCwKCQkJJ2ZpbGVzJyA9PiBbCgkJCQlfX0RJUl9fIC4gJy9GaXh0dXJlcy9ib290c3RyYXAtMy4wLjMvbGVzcy9ib290c3RyYXAubGVzcycsCgkJCV0sCgkJCS8vIFNhbWUgYXMgaW4gL3Rlc3QvZml4dHVyZXMucGhwCgkJCSdvcHRpb25zJyA9PiBbCgkJCQknbWF0aCcgPT4gJ2Fsd2F5cycsCgkJCV0KCQldLAoJXTsKCglwdWJsaWMgZnVuY3Rpb24gcnVuKCkgewoJCWVjaG8gc3ByaW50ZiggIlxud2lraW1lZGlhL2xlc3MucGhwICVzIEJlbmNobWFyayBvbiAoUEhQICVzKVxuXG4iLAoJCQlMZXNzX1ZlcnNpb246OnZlcnNpb24sCgkJCVBIUF9WRVJTSU9OCgkJKTsKCQlmb3JlYWNoICggc2VsZjo6Q0FTRVMgYXMgJG5hbWUgPT4gJGluZm8gKSB7CgkJCSRmaWxlcyA9IFtdOwoJCQlmb3JlYWNoICggJGluZm9bJ2ZpbGVzJ10gYXMgJHBhdHRlcm4gKSB7CgkJCQkkZmlsZXMgPSBhcnJheV9tZXJnZSgKCQkJCQkkZmlsZXMsCgkJCQkJZ2xvYiggJHBhdHRlcm4gKQoJCQkJKTsKCQkJfQoJCQkkdGhpcy0+YmVuY2goICRuYW1lLCAkaW5mb1snY291bnQnXSwgJGluZm9bJ29wdGlvbnMnXSwgJGZpbGVzICk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBiZW5jaCggJG5hbWUsICRpdGVyYXRpb25zLCAkb3B0aW9ucywgJGZpbGVzICkgewoJCSRuYW1lID0gc3ByaW50ZiggJG5hbWUsIGNvdW50KCAkZmlsZXMgKSApOwoJCSR0b3RhbCA9IDA7CgkJJG1heCA9IC1JTkY7CgkJZm9yICggJGkgPSAxOyAkaSA8PSAkaXRlcmF0aW9uczsgJGkrKyApIHsKCQkJJHN0YXJ0ID0gbWljcm90aW1lKCB0cnVlICk7CgkJCWZvcmVhY2ggKCAkZmlsZXMgYXMgJGxlc3NGaWxlICkgewoJCQkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlciggJG9wdGlvbnMgKTsKCQkJCSRwYXJzZXItPnBhcnNlRmlsZSggJGxlc3NGaWxlICk7CgkJCQl0cnkgewoJCQkJCSRjc3MgPSAkcGFyc2VyLT5nZXRDc3MoKTsKCQkJCX0gY2F0Y2ggKCBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIgJGUgKSB7CgkJCQkJZWNobyAiJGxlc3NGaWxlXG4iOwoJCQkJCXRocm93ICRlOwoJCQkJfQoJCQl9CgkJCSR0b29rID0gKCBtaWNyb3RpbWUoIHRydWUgKSAtICRzdGFydCApICogMTAwMDsKCQkJJG1heCA9IG1heCggJG1heCwgJHRvb2sgKTsKCQkJJHRvdGFsICs9ICR0b29rOwoJCX0KCQkkdGhpcy0+b3V0cHV0U3RhdCggJG5hbWUsICRpdGVyYXRpb25zLCAkdG90YWwsICRtYXggKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gb3V0cHV0U3RhdCggJG5hbWUsICRpdGVyYXRpb25zLCAkdG90YWwsICRtYXggKSB7CgkJJG1lYW4gPSAkdG90YWwgLyAkaXRlcmF0aW9uczsgLy8gaW4gbWlsbGlzZWNvbmRzCgkJJHJhdGVQZXJTZWNvbmQgPSAxLjAgLyAoICRtZWFuIC8gMTAwMC4wICk7CgoJCWVjaG8gc3ByaW50ZigKCQkJIiogJS0yNXMgaXRlcmF0aW9ucz0lZCBtYXg9JS4yZm1zIG1lYW49JS4yZm1zIHJhdGU9JS4wZi9zXG4iLAoJCQkkbmFtZSwKCQkJJGl0ZXJhdGlvbnMsCgkJCSRtYXgsCgkJCSRtZWFuLAoJCQkkcmF0ZVBlclNlY29uZAoJCSk7Cgl9Cn0KCiggbmV3IExlc3NQaHBCZW5jaG1hcmsgKS0+cnVuKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/compare.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgZGVjbGFyZSggc3RyaWN0X3R5cGVzID0gMSApOwoKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnLy4uL3ZlbmRvci9hdXRvbG9hZC5waHAnOwoKY29uc3QgVVNBR0UgPSA8PDxURVhUClVzYWdlOiBwaHAgY29tcGFyZS5waHAgWy0tb3ZlcnJpZGVdIFs8Zml4dHVyZURpcj5dCgpPcHRpb25zOgoKICAgIGZpeHR1cmVEaXIgIFBhc3Mgb25lIG9mIHRoZSB0ZXN0L0ZpeHR1cmVzLyBkaXJlY3Rvcmllcy4KICAgICAgICAgICAgICAgIFRoZSBjb21wYXJlIHRvb2wgd2lsbCBjb21waWxlIGVhY2ggZmlsZSBpbiB0aGUgImxlc3MvIgogICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5LCBhbmQgY29tcGFyZSBpdCB0byBhbiBlcG9ueW1vdXMgZmlsZSBpbiB0aGUKICAgICAgICAgICAgICAgICJjc3MvIiBzdWJkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCBwYXNzIG9uZSBvZiB0aGUgImxlc3MvIiBzdWItc3ViIGRpcmVjdG9yaWVzCiAgICAgICAgICAgICAgICBkaXJlY3RseSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgImNzcy8iIGRpcmVjdG9yeSB3aWxsIGJlIGZvdW5kCiAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5LgoKICAgICAgICAgICAgICAgIC0ge3tGSVhUVVJFX0RJUn19CgogICAgICAgICAgICAgICAgRGVmYXVsdDogdGVzdC9GaXh0dXJlcy9sZXNzanMtMy4xMy4xL2xlc3MvX21haW4vCgogICAgLS1vdmVycmlkZSAgQnkgZGVmYXVsdCwgdGhlIGNvbXBhcmUgdG9vbCB2YWxpZGF0ZXMgdGhlIGZ1bGwgdXBzdHJlYW0KICAgICAgICAgICAgICAgIExlc3MuanMgc3BlY2lmaWNhdGlvbiwgYXMgc3RvcmVkIGluIHRoZSBmaXh0dXJlJ3MgImNzcy8iCiAgICAgICAgICAgICAgICBzdWJkaXJlY3RvcnkuIFRoaXMgd2F5IGFsbCBkaWZmZXJlbmNlcyBhcmUgc2hvd24sIGluY2x1ZGluZwogICAgICAgICAgICAgICAgd2VsbC1rbm93biBvciBhY2NlcHRlZCBkaWZmZXJlbmNlcy4KCiAgICAgICAgICAgICAgICBXZSBzb21ldGltZXMgY3JlYXRlIGEgY29weSBvZiBhbiB1cHN0cmVhbSBzcGVjIGFuZCBhbHRlciBpdCwKICAgICAgICAgICAgICAgIHRvIGFjY29tb2RhdGUga25vd24gZGlmZmVyZW5jZXMsIHdoZXJlIGl0IGlzIHdvcnRoIGtlZXBpbmcgYQogICAgICAgICAgICAgICAgdmFyaWF0aW9uIG9mIGEgdGVzdCBjYXNlIGVuYWJsZWQgaW4gUEhQVW5pdCwgaW5zdGVhZCBvZgogICAgICAgICAgICAgICAgZGlzYWJsaW5nIGl0IGVudGlyZWx5IGluIHBocHVuaXQvRml4dHVyZVRlc3QucGhwLiBUaGlzIGNvcHkgaXMKICAgICAgICAgICAgICAgIHN0b3JlZCBpbiB0aGUgIm92ZXJyaWRlLyIgc3ViZGlyZWN0b3J5IGFuZCB1c2VkIGJ5IFBIUFVuaXQuCgogICAgICAgICAgICAgICAgVG8gcnVuIHRlc3QvY29tcGFyZS5waHAgYWdhaW5zdCB0aGUgc2FtZSBleHBlY3RhdGlvbiBhcyBQSFBVbml0LAogICAgICAgICAgICAgICAgc2V0IHRoZSAtLW92ZXJyaWRlIG9wdGlvbi4gVGhpcyBzaG93cyB1bnNvbHZlZCBkaWZmZXJlbmNlcyB0aGF0CiAgICAgICAgICAgICAgICBhcmUgZGlzYWJsZWQgaW4gQ0kgdmlhIEZpeHR1cmVUZXN0OjpLTk9XTl9GQUlMVVJFLCB3aGlsc3Qgc3RpbGwKICAgICAgICAgICAgICAgIGFjY2VwdGluZyBkaWZmZXJlbmNlcyBmcm9tIGFueSBvdmVycmlkZSBmaWxlcy4KClRFWFQ7CgpkZWZpbmUoICdGSVhUVVJFUycsIHJlcXVpcmUgX19ESVJfXyAuICcvZml4dHVyZXMucGhwJyApOwoKY2xhc3MgTGVzc0ZpeHR1cmVEaWZmIHsKCXByaXZhdGUgaW50ICRzdW1tYXJ5T0sgPSAwOwoJcHJpdmF0ZSBhcnJheSAkc3VtbWFyeUZhaWwgPSBbXTsKCXByaXZhdGUgYXJyYXkgJHN1bW1hcnlVbnN1cHBvcnRlZCA9IFtdOwoKCXB1YmxpYyBmdW5jdGlvbiBjbGkoICRhcmdzICkgewoJCSR1c2VPdmVycmlkZSA9IGZhbHNlOwoJCSRmaXh0dXJlRGlyID0gbnVsbDsKCgkJZm9yZWFjaCAoICRhcmdzIGFzICRhcmcgKSB7CgkJCWlmICggJGFyZyA9PT0gJy0tb3ZlcnJpZGUnICkgewoJCQkJJHVzZU92ZXJyaWRlID0gdHJ1ZTsKCQkJfSBlbHNlaWYgKCBzdHJfc3RhcnRzX3dpdGgoICRhcmcsICctLScgKSApIHsKCQkJCSR0aGlzLT5lcnJvciggIkludmFsaWQgb3B0aW9uICRhcmciICk7CgkJCX0gZWxzZWlmICggJGZpeHR1cmVEaXIgPT09IG51bGwgKSB7CgkJCQkvLyBGaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50CgkJCQkkZml4dHVyZURpciA9ICRhcmc7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+ZXJyb3IoICJVbmV4cGVjdGVkIGFyZ3VtZW50ICRhcmciICk7CgkJCX0KCQl9CgoJCSR0aGlzLT5jb21wYXJlKAoJCQkkZml4dHVyZURpciA/PyAnbGVzc2pzLTMuMTMuMScsCgkJCSR1c2VPdmVycmlkZQoJCSk7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBlcnJvciggJG1lc3NhZ2UgKSB7CgkJcHJpbnQgIkVycm9yOiAkbWVzc2FnZVxuXG4iOwoJCXByaW50IHByZWdfcmVwbGFjZV9jYWxsYmFjaygKCQkJJy9eKC4qKXt7RklYVFVSRV9ESVJ9fSQvbScsCgkJCXN0YXRpYyBmdW5jdGlvbiAoICRtYXRjaGVzICkgewoJCQkJJHByZWZpeCA9ICRtYXRjaGVzWzFdOwoJCQkJcmV0dXJuICRwcmVmaXggLiBpbXBsb2RlKCAiXG4kcHJlZml4IiwgYXJyYXlfa2V5cyggRklYVFVSRVMgKSApOwoJCQl9LAoJCQlVU0FHRQoJCSk7CgkJZXhpdCggMSApOwoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkZml4dHVyZURpciBGaXh0dXJlIGdyb3VwIG5hbWUgYXMgZGVmaW5lZCBpbiB0ZXN0L2ZpeHR1cmVzLnBocCwKCSAqICBvciBwYXRoIHRvIGEgZml4dHVyZSBkaXJlY3RvcnksCgkgKiAgb3IgcGF0aCB0byBhIGZpeHR1cmUgY3NzL2xlc3Mgc3ViZGlyZWN0b3J5LgoJICogQHJldHVybiBhcnJheXxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gZ2V0Rml4dHVyZSggc3RyaW5nICRmaXh0dXJlRGlyICk6ID9hcnJheSB7CgkJZm9yZWFjaCAoIEZJWFRVUkVTIGFzICRncm91cCA9PiAkZml4dHVyZSApIHsKCQkJaWYgKCAkZml4dHVyZURpciA9PT0gJGdyb3VwCgkJCQl8fCByZWFscGF0aCggJGZpeHR1cmVEaXIgKSA9PT0gcmVhbHBhdGgoICRmaXh0dXJlWydjc3NEaXInXSApCgkJCQl8fCByZWFscGF0aCggJGZpeHR1cmVEaXIgKSA9PT0gcmVhbHBhdGgoICRmaXh0dXJlWydsZXNzRGlyJ10gKQoJCQkJfHwgcmVhbHBhdGgoICRmaXh0dXJlRGlyICkgPT09IHJlYWxwYXRoKCAkZml4dHVyZVsnY3NzRGlyJ10gLiAiLy4uIiApCgkJCSkgewoJCQkJcmV0dXJuICRmaXh0dXJlOwoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCBzdHJpbmcgJGZpeHR1cmVEaXIsIGJvb2wgJHVzZU92ZXJyaWRlICk6IHZvaWQgewoJCSRmaXh0dXJlID0gJHRoaXMtPmdldEZpeHR1cmUoICRmaXh0dXJlRGlyICk7CgkJaWYgKCAhJGZpeHR1cmUgKSB7CgkJCSR0aGlzLT5lcnJvciggIlVuZGVmaW5lZCBmaXh0dXJlICRmaXh0dXJlRGlyIiApOwoJCX0KCQkkY3NzRGlyID0gJGZpeHR1cmVbJ2Nzc0RpciddOwoJCSRsZXNzRGlyID0gJGZpeHR1cmVbJ2xlc3NEaXInXTsKCQkkb3ZlcnJpZGVEaXIgPSAkdXNlT3ZlcnJpZGUgPyAoICRmaXh0dXJlWydvdmVycmlkZURpciddID8/IG51bGwgKSA6IG51bGw7CgkJJG9wdGlvbnMgPSAkZml4dHVyZVsnb3B0aW9ucyddID8/IFtdOwoJCSR1bnN1cHBvcnRlZCA9ICRmaXh0dXJlWyd1bnN1cHBvcnRlZCddID8/IFtdOwoJCWZvcmVhY2ggKCBnbG9iKCAiJGNzc0Rpci8qLmNzcyIgKSBhcyAkY3NzRmlsZSApIHsKCQkJJG5hbWUgPSBiYXNlbmFtZSggJGNzc0ZpbGUsICcuY3NzJyApOwoJCQkkbGVzc0ZpbGUgPSAiJGxlc3NEaXIvJG5hbWUubGVzcyI7CgkJCWlmICggaW5fYXJyYXkoICRuYW1lLCAkdW5zdXBwb3J0ZWQgKSApIHsKCQkJCSR0aGlzLT5zdW1tYXJ5VW5zdXBwb3J0ZWRbXSA9IGJhc2VuYW1lKCAkbGVzc0ZpbGUgKTsKCQkJCWNvbnRpbnVlOwoJCQl9CgkJCSRvdmVycmlkZUNzc0ZpbGUgPSAkb3ZlcnJpZGVEaXIgPyAiJG92ZXJyaWRlRGlyLyRuYW1lLmNzcyIgOiBudWxsOwoJCQlpZiAoICRvdmVycmlkZUNzc0ZpbGUgJiYgZmlsZV9leGlzdHMoICRvdmVycmlkZUNzc0ZpbGUgKSApIHsKCQkJCSRjc3NGaWxlID0gJG92ZXJyaWRlQ3NzRmlsZTsKCQkJfQoJCQkkb3ZlcnJpZGVMZXNzRmlsZSA9ICRvdmVycmlkZURpciA/ICIkb3ZlcnJpZGVEaXIvJG5hbWUubGVzcyIgOiBudWxsOwoJCQlpZiAoICRvdmVycmlkZUxlc3NGaWxlICYmIGZpbGVfZXhpc3RzKCAkb3ZlcnJpZGVMZXNzRmlsZSApICkgewoJCQkJJGxlc3NGaWxlID0gJG92ZXJyaWRlTGVzc0ZpbGU7CgkJCX0KCgkJCSR0aGlzLT5oYW5kbGVGaXh0dXJlKCAkY3NzRmlsZSwgJGxlc3NGaWxlLCAkb3B0aW9ucyApOwoJCX0KCgkJLy8gQ3JlYXRlIGEgc2ltcGxlIHRvIHVuZGVyc3RhbmQgc3VtbWFyeSBhdCB0aGUgZW5kLAoJCS8vIHNlcGFyYXRlIGZyb20gdGhlIHBvdGVudGlhbGx5IGxvbmcgZGlmZnMKCQlwcmludCAiXG5TdW1tYXJ5OlxuIjsKCQlwcmludCBzcHJpbnRmKCAiKiBPSzogJWRcbiIsCgkJCSR0aGlzLT5zdW1tYXJ5T0sKCQkpOwoJCXByaW50IHNwcmludGYoICIqIEZhaWw6ICVkJXNcbiIsCgkJCWNvdW50KCAkdGhpcy0+c3VtbWFyeUZhaWwgKSwKCQkJJHRoaXMtPnN1bW1hcnlGYWlsCgkJCQk/ICcgKCcgLiBpbXBsb2RlKCAnLCAnLCAkdGhpcy0+c3VtbWFyeUZhaWwgKSAuICcpJwoJCQkJOiAnJwoJCSk7CgkJaWYgKCAkdGhpcy0+c3VtbWFyeVVuc3VwcG9ydGVkICkgewoJCQlwcmludCBzcHJpbnRmKCAiKiBVbnN1cHBvcnRlZDogJWQgKCVzKVxuIiwKCQkJCWNvdW50KCAkdGhpcy0+c3VtbWFyeVVuc3VwcG9ydGVkICksCgkJCQlpbXBsb2RlKCAnLCAnLCAkdGhpcy0+c3VtbWFyeVVuc3VwcG9ydGVkICkKCQkJKTsKCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBhZGRUb1N1bW1hcnkoIHN0cmluZyAkbGluZSApIHsKCQkkdGhpcy0+c3VtbWFyeSAuPSAkbGluZSAuICJcbiI7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGhhbmRsZUZpeHR1cmUoICRjc3NGaWxlLCAkbGVzc0ZpbGUsICRvcHRpb25zICkgewoJCSRleHBlY3RlZENTUyA9IHRyaW0oIGZpbGVfZ2V0X2NvbnRlbnRzKCAkY3NzRmlsZSApICk7CgoJCS8vIENoZWNrIHdpdGggc3RhbmRhcmQgcGFyc2VyCgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlciggJG9wdGlvbnMgKTsKCQl0cnkgewoJCQkkcGFyc2VyLT5wYXJzZUZpbGUoICRsZXNzRmlsZSApOwoJCQkkY3NzID0gJHBhcnNlci0+Z2V0Q3NzKCk7CgkJfSBjYXRjaCAoIExlc3NfRXhjZXB0aW9uX1BhcnNlciAkZSApIHsKCQkJJGNzcyA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJfSBjYXRjaCAoIFRocm93YWJsZSAkZSApIHsKCQkJJGNzcyA9ICRlLT5fX3RvU3RyaW5nKCk7CgkJfQoJCSRjc3MgPSB0cmltKCAkY3NzICk7CgoJCWlmICggJGNzcyA9PT0gJGV4cGVjdGVkQ1NTICkgewoJCQlwcmludCAiLi4uIHBhcnNlICRsZXNzRmlsZSBPS1xuIjsKCQkJJHRoaXMtPnN1bW1hcnlPSysrOwoJCX0gZWxzZSB7CgkJCXByaW50ICIuLi4gcGFyc2UgJGxlc3NGaWxlIEZhaWxcbiI7CgkJCSR0bXBBY3R1YWwgPSB0ZW1wbmFtKCBzeXNfZ2V0X3RlbXBfZGlyKCksICdsZXNzcGhwXycgKTsKCQkJJHRtcEV4cGVjdGVkID0gdGVtcG5hbSggc3lzX2dldF90ZW1wX2RpcigpLCAnbGVzc3BocF8nICk7CgkJCWZpbGVfcHV0X2NvbnRlbnRzKCAkdG1wQWN0dWFsLCAiJGNzc1xuIiApOwoJCQlmaWxlX3B1dF9jb250ZW50cyggJHRtcEV4cGVjdGVkLCAiJGV4cGVjdGVkQ1NTXG4iICk7CgkJCSRvdXRwdXQgPSBudWxsOwoJCQlleGVjKAoJCQkJc3ByaW50ZiggJ2RpZmYgLXUgLS1jb2xvcj1hbHdheXMgLS1sYWJlbD0lcyAtLWxhYmVsPSVzICVzICVzJywKCQkJCQllc2NhcGVzaGVsbGFyZyggJ2FjdHVhbCcgKSwKCQkJCQllc2NhcGVzaGVsbGFyZyggJGNzc0ZpbGUgKSwKCQkJCQllc2NhcGVzaGVsbGFyZyggJHRtcEFjdHVhbCApLAoJCQkJCWVzY2FwZXNoZWxsYXJnKCAkdG1wRXhwZWN0ZWQgKQoJCQkJKSwKCQkJCSRvdXRwdXQKCQkJKTsKCQkJdW5saW5rKCAkdG1wQWN0dWFsICk7CgkJCXVubGluayggJHRtcEV4cGVjdGVkICk7CgkJCXByaW50IGltcGxvZGUoICJcbiIsICRvdXRwdXQgKSAuICJcbiI7CgoJCQkkdGhpcy0+c3VtbWFyeUZhaWxbXSA9IGJhc2VuYW1lKCAkbGVzc0ZpbGUgKTsKCQl9Cgl9Cn0KCiggbmV3IExlc3NGaXh0dXJlRGlmZiApLT5jbGkoIGFycmF5X3NsaWNlKCAkYXJndiwgMSApICk7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/fixtures.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIFVzZWQgYnkgcGhwdW5pdC9GaXh0dXJlc1Rlc3QucGhwIGFuZCB0ZXN0L2NvbXBhcmUucGhwCgokZml4dHVyZURpciA9IF9fRElSX18gLiAnL0ZpeHR1cmVzJzsKCnJldHVybiBbCgknbGVzcy5waHAnID0+IFsKCQknbGVzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3MucGhwL2xlc3MiLAoJCSdjc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzLnBocC9jc3MiLAoJCSdvcHRpb25zJyA9PiBbCgkJCSdtYXRoJyA9PiAiYWx3YXlzIiwKCQldLAoJXSwKCSdib290c3RyYXAtMy4wLjMnID0+IFsKCQknbGVzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2Jvb3RzdHJhcC0zLjAuMy9sZXNzIiwKCQknY3NzRGlyJyA9PiAiJGZpeHR1cmVEaXIvYm9vdHN0cmFwLTMuMC4zL2NzcyIsCgkJJ29wdGlvbnMnID0+IFsKCQkJJ21hdGgnID0+ICJhbHdheXMiLAoJCV0sCgldLAoJJ2Jvb3RzdHJhcC0zLjEnID0+IFsKCQknbGVzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2Jvb3RzdHJhcC0zLjEvbGVzcyIsCgkJJ2Nzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2Jvb3RzdHJhcC0zLjEvY3NzIiwKCV0sCgknYm9vdHN0cmFwLTMuMicgPT4gWwoJCSdsZXNzRGlyJyA9PiAiJGZpeHR1cmVEaXIvYm9vdHN0cmFwLTMuMi9sZXNzIiwKCQknY3NzRGlyJyA9PiAiJGZpeHR1cmVEaXIvYm9vdHN0cmFwLTMuMi9jc3MiLAoJXSwKCgkvLyBVcHN0cmVhbSBmaXh0dXJlcyBhbmQgcGFyc2VyIG9wdGlvbnMgYXJlIGRlY2xhcmVkCgkvLyBhdCBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2Jsb2IvdjIuNS4zL3Rlc3QvaW5kZXguanMjTDE3CgoJJ2xlc3Nqcy0yLjUuMycgPT4gWwoJCSdsZXNzRGlyJyA9PiAiJGZpeHR1cmVEaXIvbGVzc2pzLTIuNS4zL2xlc3MiLAoJCSdjc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMi41LjMvY3NzIiwKCQknb3ZlcnJpZGVEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMi41LjMvb3ZlcnJpZGUiLAoJCSd1bnN1cHBvcnRlZCcgPT4gWwoJCQkvLyBQZXJtYW5lbnRseSBkaXNhYmxlZCwgaW50ZW50aW9uYWxseSBub3Qgc3VwcG9ydGVkLgoJCQknamF2YXNjcmlwdCcsCgkJCSdwbHVnaW4nLAoJCV0sCgkJJ29wdGlvbnMnID0+IFsKCQkJJ3N0cmljdE1hdGgnID0+IHRydWUKCQldCgldLAoJJ2xlc3Nqcy0yLjUuMy9jb21wcmVzc2lvbicgPT4gWwoJCSdsZXNzRGlyJyA9PiAiJGZpeHR1cmVEaXIvbGVzc2pzLTIuNS4zL2xlc3MvY29tcHJlc3Npb24iLAoJCSdjc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMi41LjMvY3NzL2NvbXByZXNzaW9uIiwKCQknb3ZlcnJpZGVEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMi41LjMvb3ZlcnJpZGUvY29tcHJlc3Npb24iLAoJCSdvcHRpb25zJyA9PiBbCgkJCSdjb21wcmVzcycgPT4gdHJ1ZSwKCQldLAoJXSwKCSdsZXNzanMtMi41LjMvaW5jbHVkZS1wYXRoJyA9PiBbCgkJJ2xlc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMi41LjMvbGVzcy9pbmNsdWRlLXBhdGgiLAoJCSdjc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMi41LjMvY3NzL2luY2x1ZGUtcGF0aCIsCgkJJ292ZXJyaWRlRGlyJyA9PiAiJGZpeHR1cmVEaXIvbGVzc2pzLTIuNS4zL292ZXJyaWRlL2luY2x1ZGUtcGF0aCIsCgkJJ29wdGlvbnMnID0+IFsKCQkJJ2ltcG9ydF9kaXJzJyA9PiBbCgkJCQkiJGZpeHR1cmVEaXIvbGVzc2pzLTIuNS4zL2RhdGEiID0+ICcnLAoJCQkJIiRmaXh0dXJlRGlyL2xlc3Nqcy0yLjUuMy9sZXNzL2ltcG9ydCIgPT4gJycsCgkJCV0sCgkJXSwKCV0sCgknbGVzc2pzLTIuNS4zL3N0cmljdC11bml0cycgPT4gWwoJCSdsZXNzRGlyJyA9PiAiJGZpeHR1cmVEaXIvbGVzc2pzLTIuNS4zL2xlc3Mvc3RyaWN0LXVuaXRzIiwKCQknY3NzRGlyJyA9PiAiJGZpeHR1cmVEaXIvbGVzc2pzLTIuNS4zL2Nzcy9zdHJpY3QtdW5pdHMiLAoJCSdvcHRpb25zJyA9PiBbCgkJCSdzdHJpY3RVbml0cycgPT4gdHJ1ZSwKCQldLAoJXSwKCgkvLyBVcHN0cmVhbSBmaXh0dXJlcyBhbmQgcGFyc2VyIG9wdGlvbnMgYXJlIGRlY2xhcmVkCgkvLyBhdCBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2Jsb2IvdjMuMTMuMS9wYWNrYWdlcy9sZXNzL3Rlc3QvaW5kZXguanMjTDgKCgknbGVzc2pzLTMuMTMuMScgPT4gWwoJCSdsZXNzRGlyJyA9PiAiJGZpeHR1cmVEaXIvbGVzc2pzLTMuMTMuMS9sZXNzL19tYWluIiwKCQknY3NzRGlyJyA9PiAiJGZpeHR1cmVEaXIvbGVzc2pzLTMuMTMuMS9jc3MvX21haW4iLAoJCSdvdmVycmlkZURpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvb3ZlcnJpZGUvX21haW4iLAoJCSd1bnN1cHBvcnRlZCcgPT4gWwoJCQkvLyBQZXJtYW5lbnRseSBkaXNhYmxlZCwgaW50ZW50aW9uYWxseSBub3Qgc3VwcG9ydGVkLgoJCQknamF2YXNjcmlwdCcsCgkJCSdwbHVnaW4nLAoJCQkncGx1Z2luLW1vZHVsZScsCgkJCSdwbHVnaW4tcHJlZXZhbCcsCgkJXSwKCV0sCgknbGVzc2pzLTMuMTMuMS9pbmNsdWRlLXBhdGgnID0+IFsKCQknbGVzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvbGVzcy9pbmNsdWRlLXBhdGgiLAoJCSdjc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMy4xMy4xL2Nzcy9pbmNsdWRlLXBhdGgiLAoJCS8vICdvdmVycmlkZURpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvb3ZlcnJpZGUvaW5jbHVkZS1wYXRoIiwKCQknb3B0aW9ucycgPT4gWwoJCQknaW1wb3J0X2RpcnMnID0+IFsKCQkJCSIkZml4dHVyZURpci9sZXNzanMtMy4xMy4xL2xlc3MvZGF0YSIgPT4gJycsCgkJCQkiJGZpeHR1cmVEaXIvbGVzc2pzLTMuMTMuMS9sZXNzL19tYWluL2ltcG9ydCIgPT4gJycsCgkJCV0sCgkJXSwKCV0sCgknbGVzc2pzLTMuMTMuMS9sZWdhY3knID0+IFsKCQknbGVzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvbGVzcy9sZWdhY3kiLAoJCSdjc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMy4xMy4xL2Nzcy9sZWdhY3kiLAoJCSdvcHRpb25zJyA9PiBbCgkJCSdtYXRoJyA9PiAiYWx3YXlzIgoJCV0sCgldLAoJJ2xlc3Nqcy0zLjEzLjEvY29tcHJlc3Npb24nID0+IFsKCQknbGVzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvbGVzcy9jb21wcmVzc2lvbiIsCgkJJ2Nzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvY3NzL2NvbXByZXNzaW9uIiwKCQknb3ZlcnJpZGVEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMy4xMy4xL292ZXJyaWRlL2NvbXByZXNzaW9uIiwKCQknb3B0aW9ucycgPT4gWwoJCQknY29tcHJlc3MnID0+IHRydWUsCgkJXSwKCV0sCgknbGVzc2pzLTMuMTMuMS9zdHJpY3QtdW5pdHMnID0+IFsKCQknbGVzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvbGVzcy9zdHJpY3QtdW5pdHMiLAoJCSdjc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMy4xMy4xL2Nzcy9zdHJpY3QtdW5pdHMiLAoJCSdvcHRpb25zJyA9PiBbCgkJCSdzdHJpY3RVbml0cycgPT4gdHJ1ZSwKCQldLAoJXSwKCSdsZXNzanMtMy4xMy4xL21hdGgvcGFyZW5zLWRpdmlzaW9uJyA9PiBbCgkJJ2xlc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMy4xMy4xL2xlc3MvbWF0aC9wYXJlbnMtZGl2aXNpb24iLAoJCSdjc3NEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMy4xMy4xL2Nzcy9tYXRoL3BhcmVucy1kaXZpc2lvbiIsCgldLAoJJ2xlc3Nqcy0zLjEzLjEvbWF0aC9zdHJpY3QnID0+IFsKCQknbGVzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvbGVzcy9tYXRoL3N0cmljdCIsCgkJJ2Nzc0RpcicgPT4gIiRmaXh0dXJlRGlyL2xlc3Nqcy0zLjEzLjEvY3NzL21hdGgvc3RyaWN0IiwKCQknb3ZlcnJpZGVEaXInID0+ICIkZml4dHVyZURpci9sZXNzanMtMy4xMy4xL292ZXJyaWRlL21hdGgvc3RyaWN0IiwKCQknb3B0aW9ucycgPT4gWwoJCQknbWF0aCcgPT4gInBhcmVucyIsCgkJXSwKCV0sCl07Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bench-strings/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bench-strings/codex-icon-paths.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNkeC1pY29uLWFkZDogJzxwYXRoIGQ9Ik0xMSA5VjRIOXY1SDR2Mmg1djVoMnYtNWg1Vjl6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWFsZXJ0OiAnPHBhdGggZD0iTTExLjUzIDIuM0ExLjg1IDEuODUgMCAwMDEwIDEuMjEgMS44NSAxLjg1IDAgMDA4LjQ4IDIuM0wuMzYgMTYuMzZDLS40OCAxNy44MS4yMSAxOSAxLjg4IDE5aDE2LjI0YzEuNjcgMCAyLjM2LTEuMTkgMS41Mi0yLjY0ek0xMSAxNkg5di0yaDJ6bTAtNEg5VjZoMnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYWxpZ24tY2VudGVyOiAnPHBhdGggZD0iTTEgMTVoMTh2Mkgxek0xIDNoMTh2MkgxeiIvPjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjYiIHg9IjYiIHk9IjciIHJ4PSIxIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWFsaWduLWxlZnQ6ICc8cGF0aCBkPSJNMTIgN2g3djJoLTd6bTAgNGg3djJoLTd6TTEgMTVoMTh2Mkgxek0xIDNoMTh2MkgxeiIvPjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjYiIHg9IjEiIHk9IjciIHJ4PSIxIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWFsaWduLXJpZ2h0OiAnPHBhdGggZD0iTTEgN2g3djJIMXptMCA0aDd2Mkgxem0wIDRoMTh2Mkgxek0xIDNoMTh2MkgxeiIvPjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjYiIHg9IjExIiB5PSI3IiByeD0iMSIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1hcnJvdy1uZXh0OiAnPHBhdGggZD0iTTguNTkgMy40MiAxNC4xNyA5SDJ2MmgxMi4xN2wtNS41OCA1LjU5TDEwIDE4bDgtOC04LTh6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYXJyb3ctcHJldmlvdXM6ICc8cGF0aCBkPSJtNS44MyA5IDUuNTgtNS41OEwxMCAybC04IDggOCA4IDEuNDEtMS40MUw1LjgzIDExSDE4Vjl6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYXJ0aWNsZTogJzxwYXRoIGQ9Ik01IDFhMiAyIDAgMDAtMiAydjE0YTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjNhMiAyIDAgMDAtMi0yem0wIDNoNXYxSDV6bTAgMmg1djFINXptMCAyaDV2MUg1em0xMCA3SDV2LTFoMTB6bTAtMkg1di0xaDEwem0wLTJINXYtMWgxMHptMC0yaC00VjRoNHoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1hcnRpY2xlLWFkZDogJzxwYXRoIGQ9Ik01IDFjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMTAgMTBoLTR2NEg5di00SDVWOWg0VjVoMnY0aDR6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWFydGljbGUtY2hlY2s6ICc8cGF0aCBkPSJtOSAxNy00LjU5LTQuNTlMNS44MyAxMSA5IDE0LjE3bDgtOFYzYTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY5eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1hcnRpY2xlLWRpc2FtYmlndWF0aW9uOiAnPHBhdGggZD0iTTE1IDFINWMtMS4xIDAtMiAuOS0yIDJ2Nmg0LjZsMy43LTMuN0wxMCA0aDR2NGwtMS4zLTEuM0w5LjQgMTBsMy4zIDMuM0wxNCAxMnY0aC00bDEuMy0xLjNMNy42IDExSDN2NmMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYXJ0aWNsZS1ub3QtZm91bmQ6ICc8cGF0aCBkPSJNMTUgMUg1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlYzYTIgMiAwIDAwLTItMnptLTQgMTVIOXYtMmgyem0yLjctNy42YTQuODggNC44OCAwIDAxLS4zLjcgMi42NSAyLjY1IDAgMDEtLjUuNmwtLjUuNWEyLjY1IDIuNjUgMCAwMS0uNi41Yy0uMi4yLS4zLjQtLjUuNmExLjkxIDEuOTEgMCAwMC0uMy44IDMuNCAzLjQgMCAwMC0uMSAxSDkuMWE0Ljg3IDQuODcgMCAwMS4xLTEuMiAyLjkyIDIuOTIgMCAwMS4yLS45IDIuNTEgMi41MSAwIDAxLjQtLjdsLjYtLjZhMS43NiAxLjc2IDAgMDEuNS0uNGMuMi0uMS4zLS4zLjQtLjRsLjMtLjZhMS43IDEuNyAwIDAwLjEtLjcgMi45MiAyLjkyIDAgMDAtLjItLjkgMi4xOSAyLjE5IDAgMDAtMS0uOS45LjkgMCAwMC0uNS0uMSAxLjY4IDEuNjggMCAwMC0xLjUuN0EyLjg2IDIuODYgMCAwMDggOC4xSDYuMmE1LjA4IDUuMDggMCAwMS4zLTEuNyAzLjUzIDMuNTMgMCAwMS44LTEuMyAzLjYgMy42IDAgMDExLjItLjggNS4wOCA1LjA4IDAgMDExLjctLjMgNS45IDUuOSAwIDAxMS40LjIgMi41OSAyLjU5IDAgMDExLjEuNyA0LjQ0IDQuNDQgMCAwMS44IDEuMSA0IDQgMCAwMS4zIDEuNSAzLjA4IDMuMDggMCAwMS0uMS45eiIvPicsICd0cnVlJywgJ2hlIHlpJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWFydGljbGUtcmVkaXJlY3Q6ICc8cGF0aCBkPSJNNSAxYTIgMiAwIDAwLTIgMnYxYzAgNSAyIDggNyA4VjlsNSA0LTUgNHYtM2MtMy4xOCAwLTUuNTEtLjg1LTctMi42OFYxN2EyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlYzYTIgMiAwIDAwLTItMnoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1hcnRpY2xlLXNlYXJjaDogJzxwYXRoIGQ9Ik0xMi40MyAxNC4zNEE1IDUgMCAwMTEwIDE1YTUgNSAwIDExMy45NS0yTDE3IDE2LjA5VjNhMiAyIDAgMDAtMi0ySDVhMiAyIDAgMDAtMiAydjE0YTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMS40NS0uNjN6Ii8+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iMyIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1hcnRpY2xlczogJzxwYXRoIGQ9Ik03IDBhMiAyIDAgMDAtMiAyaDlhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDAyLTJWMmEyIDIgMCAwMC0yLTJ6Ii8+PHBhdGggZD0iTTEzIDIwYTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDRhMiAyIDAgMDAtMiAydjEzYTIgMiAwIDAwMiAyek05IDVoNHY1SDl6TTQgNWg0djFINHptMCAyaDR2MUg0em0wIDJoNHYxSDR6bTAgMmg5djFINHptMCAyaDl2MUg0em0wIDJoOXYxSDR6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYXJ0aWNsZXMtc2VhcmNoOiAnPHBhdGggZD0iTTcgMGEyIDIgMCAwMC0yIDJoOWEyIDIgMCAwMTIgMnYxMmEyIDIgMCAwMDItMlYyYTIgMiAwIDAwLTItMnoiLz48cGF0aCBkPSJNMTAuOCAxNS42YTQuNiA0LjcgMCAwMS0yLjMuNiA0LjYgNC43IDAgMTEzLjctMS45bDIuOCAzVjQuOUExLjkgMS45IDAgMDAxMy4xIDNINGExLjkgMS45IDAgMDAtMiAxLjlWMThhMS45IDEuOSAwIDAwMS45IDJIMTNhMS45IDEuOSAwIDAwMS40LS42eiIvPjxjaXJjbGUgY3g9IjguNSIgY3k9IjExLjUiIHI9IjMiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnPHBhdGggZD0iTTEzIDBhMiAyIDAgMDEyIDJINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDEtMi0yVjJhMiAyIDAgMDEyLTJ6Ii8+PHBhdGggZD0iTTEzLjggMTUuNWE0LjYgNC43IDAgMDEtMi4zLjYgNC42IDQuNyAwIDExMy43LTEuOWwyLjggM1Y1YTEuOSAxLjkgMCAwMC0xLjktMkg3YTEuOSAxLjkgMCAwMC0yIDEuOVYxOGExLjkgMS45IDAgMDAxLjkgMkgxNmExLjkgMS45IDAgMDAxLjQtLjZ6Ii8+PGNpcmNsZSBjeD0iMTEuNSIgY3k9IjExLjUiIHI9IjMiLz4nLCAnZmFsc2UnOwpAY2R4LWljb24tYXR0YWNobWVudDogJzxwYXRoIGQ9Ik05LjUgMTkuNzVhNC4yNSA0LjI1IDAgMDEtNC4yNS00LjI1VjlhMi43NSAyLjc1IDAgMDE1LjUgMHY2aC0xLjVWOWExLjI1IDEuMjUgMCAwMC0yLjUgMHY2LjVhMi43NSAyLjc1IDAgMDA1LjUgMFY0YTIuMjUgMi4yNSAwIDAwLTQuNSAwdjFoLTEuNVY0YTMuNzUgMy43NSAwIDAxNy41IDB2MTEuNWE0LjI1IDQuMjUgMCAwMS00LjI1IDQuMjV6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWJlbGw6ICc8cGF0aCBkPSJNMTYgN2E1LjM4IDUuMzggMCAwMC00LjQ2LTQuODVDMTEuNiAxLjQ2IDExLjUzIDAgMTAgMFM4LjQgMS40NiA4LjQ2IDIuMTVBNS4zOCA1LjM4IDAgMDA0IDd2NmwtMiAydjFoMTZ2LTFsLTItMnptLTYgMTNhMyAzIDAgMDAzLTNIN2EzIDMgMCAwMDMgM3oiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYmVsbC1vdXRsaW5lOiAnPHBhdGggZD0iTTExLjUgMi4xOUMxNC4wOSAyLjg2IDE2IDUuMiAxNiA4djZsMiAydjFIMnYtMWwyLTJWOGMwLTIuOCAxLjkxLTUuMTQgNC41LTUuODFWMS41QzguNS42NyA5LjE3IDAgMTAgMHMxLjUuNjcgMS41IDEuNXYuNjl6TTEwIDRDNy43OSA0IDYgNS43OSA2IDh2N2g4VjhjMC0yLjIxLTEuNzktNC00LTR6TTggMThoNGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWJpZ2dlcjogJzxwYXRoIGQ9Ik0xNCAxOGgtMS41N2EuNjYuNjYgMCAwMS0uNDQtLjEzLjg3Ljg3IDAgMDEtLjI1LS4zNGwtMS0yLjc3SDUuM2wtMSAyLjc3YS44My44MyAwIDAxLS4yNC4zMi42NS42NSAwIDAxLS40NC4xNUgyTDcgNS40N2gyem0tMy44NS00LjdMOC40MiA4LjcyQTEyLjY2IDEyLjY2IDAgMDE4IDcuMzdxLS4xLjQxLS4yMS43NXQtLjIxLjZMNS44NSAxMy4zek0xNSAybDMgNGgtNnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYmxvY2s6ICc8cGF0aCBkPSJNMTAgMWE5IDkgMCAxMDkgOSA5IDkgMCAwMC05LTl6bTUgMTBINVY5aDEweiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1ib2xkOiAnPHBhdGggZD0iTTEzLjUgMTVoLTdMNSAxOUgxTDggMWg0bDcgMThoLTRabS02LTNoNUwxMCA0WiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICd0cnVlJywgYXIgJzxwYXRoIGQ9Ik02Ljg5IDExLjljMCAxLjU3IDEuNjEgMi40NCA0Ljg1IDIuNjNsMi41NS0uMDQuMzcuMDVjLS4wMy4xNC0uMjkuNC0uNzcuNzZsLS4xLjA3QTYuOTcgNi45NyAwIDAxOS42MyAxN2E0LjMgNC4zIDAgMDEtMy4xNi0xLjE2IDQuMyA0LjMgMCAwMS0xLjEzLTMuMTVjMC0xLjU4LjY2LTMgMS45Ni00LjI3di0uMDVsLS43LS42NEExLjExIDEuMTEgMCAwMTYuMzMgN2MwLS41OC4yOC0xLjMuODQtMi4xOEM3LjkzIDMuNiA4LjcgMyA5LjQ2IDNjMS4wMyAwIDEuODkuNDkgMi41NiAxLjQ1LjM4LjU2LS4wMy42NS0xLjI0LjI2LS45OC0uMzgtMS43OC0uMDYtMi40Ljk2bC4wMi4xIDEuMzEgMWguMDZjMS42NC0uNTcgMi44Mi0uODYgMy41NS0uODRhNS41IDUuNSAwIDAwLS4yOC44NiAzMi40IDMyLjQgMCAwMS0uMzYgMS4xNGwtLjE0LjQ0LS40NS4wNWMtMi4wNC4yOC0zLjUuODQtNC4zNyAxLjY3YTIuNSAyLjUgMCAwMC0uODMgMS43OCIvPicsIGJlICc8cGF0aCBkPSJNMTIgMTlIOFY0SDNWMWgxNHYzaC01djE1WiIvPicsIGNlICc8cGF0aCBkPSJNMTQgMTlINnYtMmwyLTFWNEw2IDNWMWg4djJsLTIgMXYxMmwyIDF2MloiLz4nLCBjcyAnPHBhdGggZD0iTTguNDYgMWMxLjU1IDAgMi44NS4xNSAzLjkuNDUgMS4wNy4yOSAxLjg2Ljc3IDIuMzkgMS40NC41NC42Ni44IDEuNTUuOCAyLjY3IDAgLjY4LS4xIDEuMjktLjMxIDEuODRhMy4zNCAzLjM0IDAgMDEtLjk0IDEuMzdjLS4zOS4zNS0uOTguNjMtMS41NS43My41OS4xMiAxLjIzLjQgMS43LjcuNDguMy44NS43NCAxLjEzIDEuMzEuMjguNTcuNDIgMS4zMy40MiAyLjI3IDAgMS4xLS4yNiAyLjA0LS43OSAyLjgzYTQuOSA0LjkgMCAwMS0yLjIgMS43OWMtLjk3LjQtMi4xMi42LTMuNDUuNkgzVjFoNS40NlptLjQxIDdjMS4wOSAwIDEuODMtLjA0IDIuMjQtLjQuNDMtLjM1LjY0LS44Ni42NC0xLjUzIDAtLjctLjI1LTEuMzgtLjc0LTEuNjgtLjQ5LS4zLTEuMjctLjQtMi4zMy0uNEg3djRoMS44N1pNNyAxMXY1aDIuMTRhMy4zIDMuMyAwIDAwMi4zNC0uOCAyLjUgMi41IDAgMDAuNjYtMS44YzAtLjQ1LS4xLS44NS0uMy0xLjE4YTIgMiAwIDAwLS45NS0uOTMgNS4wNyA1LjA3IDAgMDAtMS44Ny0uM0g3WiIvPicsIGVuICc8cGF0aCBkPSJNOC40NiAxYzEuNTUgMCAyLjg1LjE1IDMuOS40NSAxLjA3LjI5IDEuODYuNzcgMi4zOSAxLjQ0LjU0LjY2LjggMS41NS44IDIuNjcgMCAuNjgtLjEgMS4yOS0uMzEgMS44NGEzLjM0IDMuMzQgMCAwMS0uOTQgMS4zN2MtLjM5LjM1LS45OC42My0xLjU1LjczLjU5LjEyIDEuMjMuNCAxLjcuNy40OC4zLjg1Ljc0IDEuMTMgMS4zMS4yOC41Ny40MiAxLjMzLjQyIDIuMjcgMCAxLjEtLjI2IDIuMDQtLjc5IDIuODNhNC45IDQuOSAwIDAxLTIuMiAxLjc5Yy0uOTcuNC0yLjEyLjYtMy40NS42SDNWMWg1LjQ2Wm0uNDEgN2MxLjA5IDAgMS44My0uMDQgMi4yNC0uNC40My0uMzUuNjQtLjg2LjY0LTEuNTMgMC0uNy0uMjUtMS4zOC0uNzQtMS42OC0uNDktLjMtMS4yNy0uNC0yLjMzLS40SDd2NGgxLjg3Wk03IDExdjVoMi4xNGEzLjMgMy4zIDAgMDAyLjM0LS44IDIuNSAyLjUgMCAwMC42Ni0xLjhjMC0uNDUtLjEtLjg1LS4zLTEuMThhMiAyIDAgMDAtLjk1LS45MyA1LjA3IDUuMDcgMCAwMC0xLjg3LS4zSDdaIi8+JywgaGUgJzxwYXRoIGQ9Ik04LjQ2IDFjMS41NSAwIDIuODUuMTUgMy45LjQ1IDEuMDcuMjkgMS44Ni43NyAyLjM5IDEuNDQuNTQuNjYuOCAxLjU1LjggMi42NyAwIC42OC0uMSAxLjI5LS4zMSAxLjg0YTMuMzQgMy4zNCAwIDAxLS45NCAxLjM3Yy0uMzkuMzUtLjk4LjYzLTEuNTUuNzMuNTkuMTIgMS4yMy40IDEuNy43LjQ4LjMuODUuNzQgMS4xMyAxLjMxLjI4LjU3LjQyIDEuMzMuNDIgMi4yNyAwIDEuMS0uMjYgMi4wNC0uNzkgMi44M2E0LjkgNC45IDAgMDEtMi4yIDEuNzljLS45Ny40LTIuMTIuNi0zLjQ1LjZIM1YxaDUuNDZabS40MSA3YzEuMDkgMCAxLjgzLS4wNCAyLjI0LS40LjQzLS4zNS42NC0uODYuNjQtMS41MyAwLS43LS4yNS0xLjM4LS43NC0xLjY4LS40OS0uMy0xLjI3LS40LTIuMzMtLjRIN3Y0aDEuODdaTTcgMTF2NWgyLjE0YTMuMyAzLjMgMCAwMDIuMzQtLjggMi41IDIuNSAwIDAwLjY2LTEuOGMwLS40NS0uMS0uODUtLjMtMS4xOGEyIDIgMCAwMC0uOTUtLjkzIDUuMDcgNS4wNyAwIDAwLTEuODctLjNIN1oiLz4nLCBtbCAnPHBhdGggZD0iTTguNDYgMWMxLjU1IDAgMi44NS4xNSAzLjkuNDUgMS4wNy4yOSAxLjg2Ljc3IDIuMzkgMS40NC41NC42Ni44IDEuNTUuOCAyLjY3IDAgLjY4LS4xIDEuMjktLjMxIDEuODRhMy4zNCAzLjM0IDAgMDEtLjk0IDEuMzdjLS4zOS4zNS0uOTguNjMtMS41NS43My41OS4xMiAxLjIzLjQgMS43LjcuNDguMy44NS43NCAxLjEzIDEuMzEuMjguNTcuNDIgMS4zMy40MiAyLjI3IDAgMS4xLS4yNiAyLjA0LS43OSAyLjgzYTQuOSA0LjkgMCAwMS0yLjIgMS43OWMtLjk3LjQtMi4xMi42LTMuNDUuNkgzVjFoNS40NlptLjQxIDdjMS4wOSAwIDEuODMtLjA0IDIuMjQtLjQuNDMtLjM1LjY0LS44Ni42NC0xLjUzIDAtLjctLjI1LTEuMzgtLjc0LTEuNjgtLjQ5LS4zLTEuMjctLjQtMi4zMy0uNEg3djRoMS44N1pNNyAxMXY1aDIuMTRhMy4zIDMuMyAwIDAwMi4zNC0uOCAyLjUgMi41IDAgMDAuNjYtMS44YzAtLjQ1LS4xLS44NS0uMy0xLjE4YTIgMiAwIDAwLS45NS0uOTMgNS4wNyA1LjA3IDAgMDAtMS44Ny0uM0g3WiIvPicsIHBsICc8cGF0aCBkPSJNOC40NiAxYzEuNTUgMCAyLjg1LjE1IDMuOS40NSAxLjA3LjI5IDEuODYuNzcgMi4zOSAxLjQ0LjU0LjY2LjggMS41NS44IDIuNjcgMCAuNjgtLjEgMS4yOS0uMzEgMS44NGEzLjM0IDMuMzQgMCAwMS0uOTQgMS4zN2MtLjM5LjM1LS45OC42My0xLjU1LjczLjU5LjEyIDEuMjMuNCAxLjcuNy40OC4zLjg1Ljc0IDEuMTMgMS4zMS4yOC41Ny40MiAxLjMzLjQyIDIuMjcgMCAxLjEtLjI2IDIuMDQtLjc5IDIuODNhNC45IDQuOSAwIDAxLTIuMiAxLjc5Yy0uOTcuNC0yLjEyLjYtMy40NS42SDNWMWg1LjQ2Wm0uNDEgN2MxLjA5IDAgMS44My0uMDQgMi4yNC0uNC40My0uMzUuNjQtLjg2LjY0LTEuNTMgMC0uNy0uMjUtMS4zOC0uNzQtMS42OC0uNDktLjMtMS4yNy0uNC0yLjMzLS40SDd2NGgxLjg3Wk03IDExdjVoMi4xNGEzLjMgMy4zIDAgMDAyLjM0LS44IDIuNSAyLjUgMCAwMC42Ni0xLjhjMC0uNDUtLjEtLjg1LS4zLTEuMThhMiAyIDAgMDAtLjk1LS45MyA1LjA3IDUuMDcgMCAwMC0xLjg3LS4zSDdaIi8+Jywgc2NvICc8cGF0aCBkPSJNOC40NiAxYzEuNTUgMCAyLjg1LjE1IDMuOS40NSAxLjA3LjI5IDEuODYuNzcgMi4zOSAxLjQ0LjU0LjY2LjggMS41NS44IDIuNjcgMCAuNjgtLjEgMS4yOS0uMzEgMS44NGEzLjM0IDMuMzQgMCAwMS0uOTQgMS4zN2MtLjM5LjM1LS45OC42My0xLjU1LjczLjU5LjEyIDEuMjMuNCAxLjcuNy40OC4zLjg1Ljc0IDEuMTMgMS4zMS4yOC41Ny40MiAxLjMzLjQyIDIuMjcgMCAxLjEtLjI2IDIuMDQtLjc5IDIuODNhNC45IDQuOSAwIDAxLTIuMiAxLjc5Yy0uOTcuNC0yLjEyLjYtMy40NS42SDNWMWg1LjQ2Wm0uNDEgN2MxLjA5IDAgMS44My0uMDQgMi4yNC0uNC40My0uMzUuNjQtLjg2LjY0LTEuNTMgMC0uNy0uMjUtMS4zOC0uNzQtMS42OC0uNDktLjMtMS4yNy0uNC0yLjMzLS40SDd2NGgxLjg3Wk03IDExdjVoMi4xNGEzLjMgMy4zIDAgMDAyLjM0LS44IDIuNSAyLjUgMCAwMC42Ni0xLjhjMC0uNDUtLjEtLjg1LS4zLTEuMThhMiAyIDAgMDAtLjk1LS45MyA1LjA3IDUuMDcgMCAwMC0xLjg3LS4zSDdaIi8+JywgZGEgJzxwYXRoIGQ9Ik05IDE5SDVWMWgxMHYzSDl2NWg1djNIOXY3WiIvPicsIGRlICc8cGF0aCBkPSJNOSAxOUg1VjFoMTB2M0g5djVoNXYzSDl2N1oiLz4nLCBodSAnPHBhdGggZD0iTTkgMTlINVYxaDEwdjNIOXY1aDV2M0g5djdaIi8+Jywga3NoICc8cGF0aCBkPSJNOSAxOUg1VjFoMTB2M0g5djVoNXYzSDl2N1oiLz4nLCBubiAnPHBhdGggZD0iTTkgMTlINVYxaDEwdjNIOXY1aDV2M0g5djdaIi8+Jywgbm8gJzxwYXRoIGQ9Ik05IDE5SDVWMWgxMHYzSDl2NWg1djNIOXY3WiIvPicsIHN2ICc8cGF0aCBkPSJNOSAxOUg1VjFoMTB2M0g5djVoNXYzSDl2N1oiLz4nLCBlcyAnPHBhdGggZD0iTTE4IDE5aC00TDUgNXYxNEgyVjFoNWw4IDEzYy0uMDItLjg0IDAtMSAwLTJWMWgzdjE4WiIvPicsIGdsICc8cGF0aCBkPSJNMTggMTloLTRMNSA1djE0SDJWMWg1bDggMTNjLS4wMi0uODQgMC0xIDAtMlYxaDN2MThaIi8+JywgcHQgJzxwYXRoIGQ9Ik0xOCAxOWgtNEw1IDV2MTRIMlYxaDVsOCAxM2MtLjAyLS44NCAwLTEgMC0yVjFoM3YxOFoiLz4nLCBldSAnPHBhdGggZD0iTTUgMTlWMWg0djE1aDd2M0g1WiIvPicsIGZpICc8cGF0aCBkPSJNNSAxOVYxaDR2MTVoN3YzSDVaIi8+JywgZmEgJzxwYXRoIGQ9Ik0xNS41IDYuNmMuNCAwIC43LS4yLjktLjRhMS4zIDEuMyAwIDAwMC0xLjhjLS4yLS4zLS41LS40LS45LS40cy0uNy4xLTEgLjRhMS4zIDEuMyAwIDAwMCAxLjhjLjMuMi42LjQgMSAuNFpNOS44IDE0bC40LTEgLjYuMmExMC4xIDEwLjEgMCAwMDIuNi4yYzEgMCAxLjggMCAyLjUtLjJzMS4zLS40IDEuNy0uN0EzIDMgMCAwMDE5IDEwYzAtLjYtLjEtMS0uNC0xLjVhMiAyIDAgMDAtMS0xYy0uNS0uMy0xLS41LTEuNy0uNWwtMS4zLjNjLS40IDAtLjguMy0xLjIuNWE4LjcgOC43IDAgMDAtMi4zIDJsLS43LjhhLjcuNyAwIDAxLS4yLS4ybC0uMi0uM2EyNy41IDI3LjUgMCAwMC0uNC0xLjdsLS4xLS4zLTIuOC43LjEuMy41IDEuNi4yIDEuMy0uMS42LS40LjUtLjYuMmE0IDQgMCAwMS0xIC4xbC0xLS4xLS41LS41YTEgMSAwIDAxLS4yLS42di0uNGwuMi0uNC4yLS44LjEtLjMtMi40LS44LS4xLjMtLjUgMS4yYTYuNyA2LjcgMCAwMC0uMiAxLjZjMCAuNi4xIDEgLjQgMS41LjIuNS41LjggMSAxLjEuNC4zLjkuNSAxLjQuNmE3LjIgNy4yIDAgMDAzLjQgMCA1IDUgMCAwMDEuNS0uN2wxLjEtMVptMy40LTNjLjMtLjUgMS4xLTEuNCAyLjMtMS41IDEgMCAxIC44LjUgMS0uMy4yLTEuMi41LTIuOC41WiIvPicsIGZyICc8cGF0aCBkPSJNMTAgOWg3djlhMjAuNDEgMjAuNDEgMCAwMS02LjUgMSA5LjY3IDkuNjcgMCAwMS00LjY0LTEuMDMgNi44IDYuOCAwIDAxLTIuODktMy4wNEExMS4yMSAxMS4yMSAwIDAxMiAxMGE5LjkgOS45IDAgMDExLjEtNC43OEE3LjcgNy43IDAgMDE2LjM1IDIuMUM3Ljc3IDEuMzcgOS45NSAxIDEyIDFjLjk3IDAgMS40OC4xIDIuNDIuMy45My4xOSAxLjgxLjM3IDIuNTguN2wtMSAzYy0uNTYtLjI4LTEuNS0uNDYtMi4yMy0uNjRBOS4yNCA5LjI0IDAgMDAxMS41MyA0Yy0xLjEyIDAtMi4xLjM0LTIuOTQuODNBNS4wNSA1LjA1IDAgMDA2LjY2IDYuOSA2LjcyIDYuNzIgMCAwMDYgMTBhOSA5IDAgMDAuNDggMy4wOWMuMzIuODguODQgMS41OCAxLjUzIDIuMDguNy41IDEuNjIuODMgMi43NS44My4zNyAwIC44LjAyIDEuMDggMCAuMy0uMDMuNjYgMCAxLjE2LS4zNFYxMmgtM1Y5WiIvPicsIGl0ICc8cGF0aCBkPSJNMTAgOWg3djlhMjAuNDEgMjAuNDEgMCAwMS02LjUgMSA5LjY3IDkuNjcgMCAwMS00LjY0LTEuMDMgNi44IDYuOCAwIDAxLTIuODktMy4wNEExMS4yMSAxMS4yMSAwIDAxMiAxMGE5LjkgOS45IDAgMDExLjEtNC43OEE3LjcgNy43IDAgMDE2LjM1IDIuMUM3Ljc3IDEuMzcgOS45NSAxIDEyIDFjLjk3IDAgMS40OC4xIDIuNDIuMy45My4xOSAxLjgxLjM3IDIuNTguN2wtMSAzYy0uNTYtLjI4LTEuNS0uNDYtMi4yMy0uNjRBOS4yNCA5LjI0IDAgMDAxMS41MyA0Yy0xLjEyIDAtMi4xLjM0LTIuOTQuODNBNS4wNSA1LjA1IDAgMDA2LjY2IDYuOSA2LjcyIDYuNzIgMCAwMDYgMTBhOSA5IDAgMDAuNDggMy4wOWMuMzIuODguODQgMS41OCAxLjUzIDIuMDguNy41IDEuNjIuODMgMi43NS44My4zNyAwIC44LjAyIDEuMDggMCAuMy0uMDMuNjYgMCAxLjE2LS4zNFYxMmgtM1Y5WiIvPicsIGh5ICc8cGF0aCBkPSJNMSAxOFY5YzAtMS4zNC4yOS0yLjYxLjg2LTMuNjRhNi4xMyA2LjEzIDAgMDEyLjU1LTIuNDVDNS41NCAyLjMgNy4zOCAyIDkgMmMyLjE5IDAgMy40Ny40MyA0LjczIDEuMjhBNS4zIDUuMyAwIDAxMTYgN2gzdjNoLTNjMCAxLjc4LS4yNyAyLjczLTEuMTYgMy42OWE0LjU1IDQuNTUgMCAwMS0zLjQ4IDEuNDQgNS41IDUuNSAwIDAxLTIuNS0uNTMgMy45NCAzLjk0IDAgMDEtMS42Mi0xLjQ2IDQuMSA0LjEgMCAwMS0uNTgtMi4xNyAzLjYgMy42IDAgMDExLjI2LTIuOTRjLjg1LS43IDIuMS0xLjA2IDMuNzQtMS4wNkwxMyA3YzAtLjUtLjc2LTEuMDMtMS40Ny0xLjRBNS4yIDUuMiAwIDAwOSA1Yy0xLjQ0IDAtMyAuMDQtNCAxLS43Ni43NC0xIDEuNjEtMSAzdjlIMVptMTItOC40MmgtMS4zMWMtLjUzIDAtLjk3LjEyLTEuMy4zNS0uMzQuMjItLjUxLjU2LS41MSAxLjAyIDAgLjQ0LjEuODIuMyAxLjEzLjIzLjMuNjIuNDQgMS4yLjQ0LjUxIDAgLjkyLS4yIDEuMjMtLjYyLjMyLS40MS4zOS0xLjE5LjM5LTIuMzJaIi8+Jywga2EgJzxwYXRoIGQ9Ik0xMCAxOWE2LjQgNi40IDAgMDEtMy4xNS0uNzQgNS4xMyA1LjEzIDAgMDEtMi4xMi0yLjE1QTYuMiA2LjIgMCAwMTQgMTNjMC0yLjAyLjQ2LTMuODQgMS4zNi00Ljg3YTQuNTQgNC41NCAwIDAxMy41OC0xLjU1Yy42MSAwIDEuMTUuMDcgMS42LjIxYTIyIDIyIDAgMDExLjE1LjQxQzEyLjUgNy41IDEzIDggMTMgOFY2YzAtMS0uNS0xLjUtLjUtMS41cy0uNS0uNS0uOTctLjczYzAgMC0uNTMtLjI3LTEuNTMtLjMgMCAwLS4zMy0uMDItLjc4LjEzLS40Mi4xNC0uOC4zLTEuMDIuNjUtLjE2LjI1LS4yLjQ0LS4yLjc1SDVjLS4wMi0uMTUgMC0uNCAwLS41MyAwLS43Ny4wMi0xLjIuNS0xLjc2LjUtLjU2IDEuMTgtLjk4IDItMS4yN0M4LjM1IDEuMTQgOC45NyAxIDEwIDFjMS4xOCAwIDIuNS4yMSAzLjM0LjY1QTQuNTQgNC41NCAwIDAxMTYgNnY3YzAgMi0uNTEgMy4yNS0xLjUzIDQuMzYtMSAxLjEtMi41NyAxLjY0LTQuNDcgMS42NFptMC0zYy44OCAwIDEuNjUtLjA2IDIuMDctLjY1LjQyLS42LjY0LTEuMzcuNjQtMi4zdi0uNDdjMC0xLS4yLTEuOC0uNTctMi40Mi0uMzgtLjYxLTEuMDctLjkyLTIuMS0uOTJhMi4xIDIuMSAwIDAwLTEuODMuOTRBNS40NCA1LjQ0IDAgMDA3LjU4IDEzYzAgMSAuMTggMS42LjU2IDIuMjYuNC42NS45My43NCAxLjg2Ljc0WiIvPicsIGt5ICc8cGF0aCBkPSJNNC41IDEwIDEgM2g0bDMgN1YzaDR2N2wzLTdoNGwtMy41IDcgMy41IDdoLTRsLTMtN3Y3SDh2LTdsLTMgN0gxbDMuNS03WiIvPicsIHJ1ICc8cGF0aCBkPSJNNC41IDEwIDEgM2g0bDMgN1YzaDR2N2wzLTdoNGwtMy41IDcgMy41IDdoLTRsLTMtN3Y3SDh2LTdsLTMgN0gxbDMuNS03WiIvPicsIHVrICc8cGF0aCBkPSJNNC41IDEwIDEgM2g0bDMgN1YzaDR2N2wzLTdoNGwtMy41IDcgMy41IDdoLTRsLTMtN3Y3SDh2LTdsLTMgN0gxbDMuNS03WiIvPicsIG5sICc8cGF0aCBkPSJtMTIgMTkgNi0xOGgtNGwtNCAxNEw2IDFIMmw2IDE4aDRaIi8+Jywgb3MgJzxwYXRoIGQ9Ik00IDE5VjFoMTJ2M0g4djRoMWMyIDAgMy42Mi4xNCA0LjcyLjYxYTUuMjcgNS4yNyAwIDAxMi40OCAxLjk1Yy41My44Mi44IDEuODguOCAyLjk0IDAgMS43OC0uNzggMy0yIDQtMS4yLjk3LTMuMzUgMS41LTYgMS41SDRabTUtM2E2LjcgNi43IDAgMDAzLjAxLS42OGMuNy0uMzcuOTktLjkuOTktMS44MiAwLS45Ni0uMzMtMS43MS0xLjA3LTIuMDFBNy42MSA3LjYxIDAgMDA5IDExSDh2NWgxWiIvPicsIHVyICc8cGF0aCBkPSJNMTEuNjEgMTMuNzU2Yy0uNDM3IDAtLjgxLS4xNTItMS4xMi0uNDU3YTEuNDk3IDEuNDk3IDAgMDEtLjQ2My0xLjEwNmMwLS40NDUuMTU0LS44Mi40NjMtMS4xMjUuMzEtLjMxOC42ODMtLjQ3NyAxLjEyLS40NzcuNDM5IDAgLjgwNi4xNTkgMS4xMDIuNDc3LjMwOS4zMDUuNDYzLjY4LjQ2MyAxLjEyNSAwIC40MzItLjE1NC44LS40NjMgMS4xMDZhMS40NzMgMS40NzMgMCAwMS0xLjEwMS40NTdaTTExLjEwOSAxOWE5Ljc4OCA5Ljc4OCAwIDAxLTIuODU4LS40IDYuNjk1IDYuNjk1IDAgMDEtMi4yNi0xLjE4MyA1LjE5NSA1LjE5NSAwIDAxLTEuNDY4LTEuODg3QzQuMTc0IDE0Ljc4IDQgMTMuOTIyIDQgMTIuOTU2YzAtLjk1NC4xNTUtMS44MTguNDY0LTIuNTk0YTYuODIyIDYuODIyIDAgMDExLjI5NC0yLjA3OEE4LjgyIDguODIgMCAwMTcuNjcgNi43Yy43MzQtLjQ1NyAxLjUyLS44MzIgMi4zNTctMS4xMjUuODUtLjI5Mi45MTQtLjM5NCAxLjgxNi0uNTM0LS40LS4xMDEtLjgzOC0uMTk3LTEuMzE0LS4yODZhMjQuMzQ3IDI0LjM0NyAwIDAwLTEuNDg3LS4yMjggMTIuOTI1IDEyLjkyNSAwIDAwLTEuNTg0LS4wOTZjLS41MTUgMC0xLjAxOC4wMjYtMS41MDcuMDc2YTguODA5IDguODA5IDAgMDAtMS4yMzYuMjFMNC4yMzIgMS4zOGMuMzg2LS4xMDEuODA1LS4xOSAxLjI1NS0uMjY3QTguNDcgOC40NyAwIDAxNi44NzggMWMuNzk5IDAgMS41MjYuMDY0IDIuMTgzLjE5LjY3LjEyOCAxLjI4MS4yODcgMS44MzUuNDc3LjU2Ny4xNzggMS4wODguMzYzIDEuNTY1LjU1My40ODkuMTkxLjk0Ni4zNSAxLjM3MS40NzcuNDM4LjEyNy44NTYuMTkgMS4yNTYuMTloMS4wMDRsLjM4NyAzLjY2MmMtLjQgMC0uOTAyLjA1Ny0xLjUwNy4xNzFhMTUuMDggMTUuMDggMCAwMC0xLjkxMy41MTVjLS42ODIuMjI5LTEuMzU4LjUxNS0yLjAyOC44NThhOS42MjggOS42MjggMCAwMC0xLjc5NiAxLjE2MyA1LjgxIDUuODEgMCAwMC0xLjMxNCAxLjQ1IDMuMzM0IDMuMzM0IDAgMDAtLjQ4MyAxLjc1NGMwIC41ODQuMDk3IDEuMDc0LjI5IDEuNDY4LjIwNi40MDcuNDgzLjczLjgzLjk3Mi4zNjEuMjU1Ljc4LjQzOSAxLjI1Ni41NTMuNDkuMTE1IDEuMDE4LjE3MiAxLjU4NC4xNzIuNzYgMCAxLjUyNi0uMDc2IDIuMjk5LS4yMjlhMTIuODkzIDEyLjg5MyAwIDAwMi4zMzctLjcwNUwxNyAxNy42ODRjLTEuMDU2LjQ3LTIuMDkzLjgwNy0zLjExIDEuMDEtMS4wMTcuMjA0LTEuOTQ1LjMwNi0yLjc4Mi4zMDZaIi8+JzsKQGNkeC1pY29uLWJvb2s6ICc8cGF0aCBkPSJNMTUgMmE3LjY1IDcuNjUgMCAwMC01IDIgNy42NSA3LjY1IDAgMDAtNS0ySDF2MTVoNGE3LjY1IDcuNjUgMCAwMTUgMiA3LjY1IDcuNjUgMCAwMTUtMmg0VjJ6bTIuNSAxMy41SDE0YTQuMzggNC4zOCAwIDAwLTMgMVY1czEtMS41IDQtMS41aDIuNXoiLz48cGF0aCBkPSJNOSAzLjVoMnYxSDl6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYm9va21hcms6ICc8cGF0aCBkPSJNNSAxYTIgMiAwIDAwLTIgMnYxNmw3LTUgNyA1VjNhMiAyIDAgMDAtMi0yeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1ib29rbWFyay1vdXRsaW5lOiAnPHBhdGggZD0iTTUgMWEyIDIgMCAwMC0yIDJ2MTZsNy01IDcgNVYzYTIgMiAwIDAwLTItMnptMTAgMTQuMjUtNS0zLjUtNSAzLjVWM2gxMHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tYnJpZ2h0OiAnPHBhdGggZD0iTTE3LjA3IDcuMDdWMi45M2gtNC4xNEwxMCAwIDcuMDcgMi45M0gyLjkzdjQuMTRMMCAxMGwyLjkzIDIuOTN2NC4xNGg0LjE0TDEwIDIwbDIuOTMtMi45M2g0LjE0di00LjE0TDIwIDEwek0xMCAxNmE2IDYgMCAxMTYtNiA2IDYgMCAwMS02IDZ6Ii8+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iNC41Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWJyb3dzZXI6ICc8cGF0aCBkPSJNMiAyYTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxNmEyIDIgMCAwMDItMlY0YTIgMiAwIDAwLTItMnptMiAxLjVBMS41IDEuNSAwIDExMi41IDUgMS41IDEuNSAwIDAxNCAzLjV6TTE4IDE2SDJWOGgxNnoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1jYWxlbmRhcjogJzxwYXRoIGQ9Ik0xNSAzVjFoLTJ2Mkg3VjFINXYySDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDE2YTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0yem0zIDE0SDJWOGgxNnptLTItNmgtNHY0aDR6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWNhbWVyYTogJzxwYXRoIGQ9Ik0xMCAxNmMtNC40NTUgMC02LjY4NS01LjM4Ni0zLjUzNS04LjUzNUM5LjYxNSA0LjMxNSAxNSA2LjU0NSAxNSAxMWE1IDUgMCAwMS01IDV6TTYuNDIgMi41NmwtLjY3LjY0Yy0uMzcuMzU3LS44NjUuODA4LTEuMzguODFIMkMuOTE0IDQgMCA0LjcxMiAwIDUuNzZ2MTAuNDhDMCAxNy4yNyAxIDE4IDIgMThoMTZjMSAwIDItLjcxNiAyLTEuNzZWNS43NkMyMCA0LjcyMyAxOSA0IDE4IDRoLTIuMzdjLS41MTUtLjAwMi0xLjAxLS40NTMtMS4zOC0uODFsLS42Ny0uNjRBMiAyIDAgMDAxMi4yIDJINy44YTIgMiAwIDAwLTEuMzguNTZ6Ii8+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMSIgcj0iMyIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1jYW5jZWw6ICc8cGF0aCBkPSJNMTAgMGExMCAxMCAwIDEwMTAgMTBBMTAgMTAgMCAwMDEwIDB6TTIgMTBhOCA4IDAgMDExLjY5LTQuOUwxNC45IDE2LjMxQTggOCAwIDAxMiAxMHptMTQuMzEgNC45TDUuMSAzLjY5QTggOCAwIDAxMTYuMzEgMTQuOXoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tY2hhcnQ6ICc8cGF0aCBkPSJNMyAzSDF2MTZoMTh2LTJIM3oiLz48cGF0aCBkPSJNMTEgMTEgOCA5bC00IDR2M2gxNFY1eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1jaGVjazogJzxwYXRoIGQ9Ik03IDE0LjE3IDIuODMgMTBsLTEuNDEgMS40MUw3IDE3IDE5IDVsLTEuNDEtMS40MnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tY2hlY2stYWxsOiAnPHBhdGggZD0ibS4yOSAxMi43MSAxLjQyLTEuNDIgMi4yMiAyLjIyIDguMy0xMC4xNCAxLjU0IDEuMjYtOS43IDExLjg2ek0xMiAxMGg1djJoLTV6bS0zIDRoNXYySDl6bTYtOGg1djJoLTV6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWNsZWFyOiAnPHBhdGggZD0iTTEwIDBhMTAgMTAgMCAxMDEwIDEwQTEwIDEwIDAgMDAxMCAwem01LjY2IDE0LjI0LTEuNDEgMS40MUwxMCAxMS40MWwtNC4yNCA0LjI1LTEuNDItMS40Mkw4LjU5IDEwIDQuMzQgNS43NmwxLjQyLTEuNDJMMTAgOC41OWw0LjI0LTQuMjQgMS40MSAxLjQxTDExLjQxIDEweiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1jbG9jazogJzxwYXRoIGQ9Ik0xMCAwYTEwIDEwIDAgMTAxMCAxMEExMCAxMCAwIDAwMTAgMHptMi41IDE0LjVMOSAxMVY0aDJ2NmwzIDN6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWNsb3NlOiAnPHBhdGggZD0ibTQuMzQgMi45MyAxMi43MyAxMi43My0xLjQxIDEuNDFMMi45MyA0LjM1eiIvPjxwYXRoIGQ9Ik0xNy4wNyA0LjM0IDQuMzQgMTcuMDdsLTEuNDEtMS40MUwxNS42NiAyLjkzeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1jb2RlOiAnPHBhdGggaWQ9ImNkeC1pY29uLWNvZGUtYSIgZD0iTTEgMTAuMDhWOC45MmgxLjE1YzEuMTUgMCAxLjE1IDAgMS4xNS0xLjE1VjVhNy40MiA3LjQyIDAgMDEuMDktMS4zIDIgMiAwIDAxLjMtLjcgMS44NCAxLjg0IDAgMDEuOTMtLjY4QTYuNDQgNi40NCAwIDAxNi43NCAyaDEuMTh2MS4xNWgtLjg2QTEuMzIgMS4zMiAwIDAwNiAzLjYyYTEuNzEgMS43MSAwIDAwLS4zNiAxLjIzVjdhMy4yMiAzLjIyIDAgMDEtLjI4IDEuNzIgMiAyIDAgMDEtMS4yNi43NyAyLjE1IDIuMTUgMCAwMTEuMjYuNzlBMy4yNiAzLjI2IDAgMDE1LjYyIDEydjMuMTVBMS42NyAxLjY3IDAgMDA2IDE2LjM3YTEuMzEgMS4zMSAwIDAwMS4wOC40N2guODdWMThINi43NGE2LjMgNi4zIDAgMDEtMi4xMi0uMjkgMS44MiAxLjgyIDAgMDEtLjkzLS43MSAxLjk0IDEuOTQgMCAwMS0uMy0uNzJBNy40NiA3LjQ2IDAgMDEzLjMxIDE1di0zLjc3YzAtMS4xNSAwLTEuMTUtMS4xNS0xLjE1em0xOCAwVjguOTJoLTEuMTVjLTEuMTUgMC0xLjE1IDAtMS4xNS0xLjE1VjVhNy40MiA3LjQyIDAgMDAtLjA4LTEuMzIgMiAyIDAgMDAtLjMtLjczIDEuODQgMS44NCAwIDAwLS45My0uNjhBNi40NCA2LjQ0IDAgMDAxMy4yNiAyaC0xLjE4djEuMTVoLjg3YTEuMzIgMS4zMiAwIDAxMS4wNS40NyAxLjcxIDEuNzEgMCAwMS4zNiAxLjIzVjdhMy4yMiAzLjIyIDAgMDAuMjggMS43MiAyIDIgMCAwMDEuMjYuNzcgMi4xNSAyLjE1IDAgMDAtMS4yNi43OSAzLjI2IDMuMjYgMCAwMC0uMjYgMS43MnYzLjE1YTEuNjcgMS42NyAwIDAxLS4zOCAxLjIyIDEuMzEgMS4zMSAwIDAxLTEuMDguNDdoLS44N1YxOGgxLjE5YTYuMyA2LjMgMCAwMDIuMTItLjI5IDEuODIgMS44MiAwIDAwLjkzLS42OCAxLjk0IDEuOTQgMCAwMC4zLS43MiA3LjQ2IDcuNDYgMCAwMC4xLTEuMzF2LTMuNzdjMC0xLjE1IDAtMS4xNSAxLjE1LTEuMTV6Ii8+PHVzZSB4bGluazpocmVmPSIlMjNjZHgtaWNvbi1jb2RlLWEiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDIwIDApIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWNvbGxhcHNlOiAnPHBhdGggZD0ibTIuNSAxNS4yNSA3LjUtNy41IDcuNSA3LjUgMS41LTEuNS05LTktOSA5eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1jb3B5OiAnPHBhdGggZD0iTTMgM2g4djJoMlYzYzAtMS4xLS44OTUtMi0yLTJIM2MtMS4xIDAtMiAuODk1LTIgMnY4YzAgMS4xLjg5NSAyIDIgMmgydi0ySDN6Ii8+PHBhdGggZD0iTTkgOWg4djhIOXptMC0yYy0xLjEgMC0yIC44OTUtMiAydjhjMCAxLjEuODk1IDIgMiAyaDhjMS4xIDAgMi0uODk1IDItMlY5YzAtMS4xLS44OTUtMi0yLTJ6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tY3V0OiAnPHBhdGggZD0iTTkuOTcgMGMtMS42NiAwLTMgMS4zNC0zIDN2M2wtMi40LTEuNWEzLjAwMyAzLjAwMyAwIDAwLTMgNS4yIDMuMDAzIDMuMDAzIDAgMDA0LjQ1Mi0yLjA1MWwuOTUyLjU1djYuOGgydi01LjY1bDQuMDEgMi4zMi45ODgtMS43My01LTIuOTR2LTEuMTdhMi45OTYgMi45OTYgMCAwMDQtMi44MjljMC0xLjY2LTEuMzQtMy0zLTN6TTkgM2ExIDEgMCAwMTIgMCAxIDEgMCAwMS0yIDB6TTIgN2ExIDEgMCAwMTIgMCAxIDEgMCAwMS0yIDB6bTE1IDEyaC0ydi0yaDJWOWgtM1Y3aDNjMS4xIDAgMiAuODk1IDIgMnY4YzAgMS4xLS44OTUgMi0yIDJ6bS02IDBoMnYtMmgtMnptLTQtMmMwIDEuMS44OTUgMiAyIDJ2LTJ6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tZGF0YWJhc2U6ICc8cGF0aCBkPSJNNCAxaDEybDIgMnYySDJWM3pNMiA4aDE2djRIMnptMTYgOXYtMkgydjJsMiAyaDEyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1kaWU6ICc8cGF0aCBkPSJNMyAxYTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMlYzYTIgMiAwIDAwLTItMnptMiAxNmEyIDIgMCAxMTItMiAyIDIgMCAwMS0yIDJ6TTUgN2EyIDIgMCAxMTItMiAyIDIgMCAwMS0yIDJ6bTUgNWEyIDIgMCAxMTItMiAyIDIgMCAwMS0yIDJ6bTUgNWEyIDIgMCAxMTItMiAyIDIgMCAwMS0yIDJ6bTAtMTBhMiAyIDAgMTEyLTIgMiAyIDAgMDEtMiAyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1kb3VibGUtY2hldnJvbi1lbmQ6ICc8cGF0aCBkPSJNMTEgMiA5LjcgMy4zbDYuNiA2LjctNi42IDYuN0wxMSAxOGw4LTh6TTIuNSAyIDEgMy4zIDcuOCAxMGwtNi43IDYuN0wyLjUgMThsOC04eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWRvdWJsZS1jaGV2cm9uLXN0YXJ0OiAnPHBhdGggZD0ibTkgMiAxLjMgMS4zTDMuNyAxMGw2LjYgNi43TDkgMThsLTgtOCA4LTh6bTguNSAwTDE5IDMuMyAxMi4yIDEwbDYuNyA2LjctMS40IDEuMy04LTggOC04eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWRvd24tdHJpYW5nbGU6ICc8cGF0aCBkPSJNMTAgMTUgMiA1aDE2eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1kb3dubG9hZDogJzxwYXRoIGQ9Ik0xNyAxMnY1SDN2LTVIMXY1YTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0ydi01eiIvPjxwYXRoIGQ9Ik0xNSA5aC00VjFIOXY4SDVsNSA2eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1kcmFnZ2FibGU6ICc8cGF0aCBkPSJNMiAxMWgxNnYySDJ6bTAtNGgxNnYySDJ6bTExIDhIN2wzIDN6TTcgNWg2bC0zLTN6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWVkaXQ6ICc8cGF0aCBkPSJtMTYuNzcgOCAxLjk0LTJhMSAxIDAgMDAwLTEuNDFsLTMuMzQtMy4zYTEgMSAwIDAwLTEuNDEgMEwxMiAzLjIzek0xIDE0LjI1VjE5aDQuNzVsOS45Ni05Ljk2LTQuNzUtNC43NXoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tZWRpdC1sb2NrOiAnPHBhdGggZD0iTTEyIDEyYTIgMiAwIDAxLTItMlY1LjI1bC05IDlWMTloNC43NWw3LTd6bTctOGgtLjVWMi41YTIuNSAyLjUgMCAwMC01IDBWNEgxM2ExIDEgMCAwMC0xIDF2NGExIDEgMCAwMDEgMWg2YTEgMSAwIDAwMS0xVjVhMSAxIDAgMDAtMS0xem0tMyA0YTEgMSAwIDExMS0xIDEgMSAwIDAxLTEgMXptMS41LTRoLTNWMi43NUMxNC41IDIgMTQuNSAxIDE2IDFzMS41IDEgMS41IDEuNzV6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWVkaXQtdW5kbzogJzxwYXRoIGQ9Ik0xIDE0LjI1VjE5aDQuNzVsOC4zMy04LjMzLTUuMjctNC4yM3pNMTMgMi44NlYwTDggNGw1IDRWNWguODZjMi4yOSAwIDQgMS40MyA0IDQuMjlIMjBhNi41MSA2LjUxIDAgMDAtNi4xNC02LjQzeiIvPicsICdmYWxzZScsICdmYWxzZScsICc8cGF0aCBkPSJNMyAxNS4yNVYyMGg0Ljc1bDguMzMtOC4zMy01LjI3LTQuMjN6Ii8+PHBhdGggZD0iTTEzIDIuODZWMGw1IDQtNSA0VjVoLS44NmMtMi4yOCAwLTQgMS40My00IDQuMjlINmE2LjUxIDYuNTEgMCAwMTYuMTQtNi40M3oiLz4nLCAnZmFsc2UnOwpAY2R4LWljb24tZWxsaXBzaXM6ICc8Y2lyY2xlIGN4PSIxMCIgY3k9IjEwIiByPSIyIi8+PGNpcmNsZSBjeD0iMyIgY3k9IjEwIiByPSIyIi8+PGNpcmNsZSBjeD0iMTciIGN5PSIxMCIgcj0iMiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1lcnJvcjogJzxwYXRoIGQ9Ik0xMy43MjggMUg2LjI3MkwxIDYuMjcydjcuNDU2TDYuMjcyIDE5aDcuNDU2TDE5IDEzLjcyOFY2LjI3MnpNMTEgMTVIOXYtMmgyem0wLTRIOVY1aDJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWV4aXQtZnVsbHNjcmVlbjogJzxwYXRoIGQ9Ik03IDdWMUg1djRIMXYyek01IDE5aDJ2LTZIMXYyaDR6bTEwLTRoNHYtMmgtNnY2aDJ6bTAtOGg0VjVoLTRWMWgtMnY2eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1leHBhbmQ6ICc8cGF0aCBkPSJtMTcuNSA0Ljc1LTcuNSA3LjUtNy41LTcuNUwxIDYuMjVsOSA5IDktOXoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tZXllOiAnPHBhdGggZD0iTTEwIDE0LjVhNC41IDQuNSAwIDExNC41LTQuNSA0LjUgNC41IDAgMDEtNC41IDQuNXpNMTAgM0MzIDMgMCAxMCAwIDEwczMgNyAxMCA3IDEwLTcgMTAtNy0zLTctMTAtN3oiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjEwIiByPSIyLjUiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tZXllLWNsb3NlZDogJzxwYXRoIGQ9Ik0xMi40OSA5Ljk0QTIuNSAyLjUgMCAwMDEwIDcuNXoiLz48cGF0aCBkPSJNOC4yIDUuOWE0LjM4IDQuMzggMCAwMTEuOC0uNCA0LjUgNC41IDAgMDE0LjUgNC41IDQuMzQgNC4zNCAwIDAxLS4yOSAxLjU1TDE3IDE0LjE0QTE0IDE0IDAgMDAyMCAxMHMtMy03LTEwLTdhOS42MyA5LjYzIDAgMDAtNCAuODV6TTIgMiAxIDNsMi41NSAyLjRBMTMuODkgMTMuODkgMCAwMDAgMTBzMyA3IDEwIDdhOS42NyA5LjY3IDAgMDA0LjY0LTEuMTZMMTggMTlsMS0xem04IDEyLjVBNC41IDQuNSAwIDAxNS41IDEwYTQuNDUgNC40NSAwIDAxLjYtMi4ybDEuNTMgMS40NGEyLjQ3IDIuNDcgMCAwMC0uMTMuNzYgMi40OSAyLjQ5IDAgMDAzLjQxIDIuMzJsMS41NCAxLjQ1YTQuNDcgNC40NyAwIDAxLTIuNDUuNzN6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWZlZWRiYWNrOiAnPHBhdGggZD0iTTE5IDE2IDIgMTJhMy44MyAzLjgzIDAgMDEtMS0yLjVBMy44MyAzLjgzIDAgMDEyIDdsMTctNHoiLz48cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI4IiB4PSI0IiB5PSI5IiByeD0iMiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWZsYWc6ICc8cGF0aCBkPSJNMTcgNiAzIDF2MThoMnYtNi44N3oiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1mb2xkZXItcGxhY2Vob2xkZXI6ICc8cGF0aCBkPSJNOCAySDJhMiAyIDAgMDAtMiAydjJoMTJ6Ii8+PHJlY3Qgd2lkdGg9IjIwIiBoZWlnaHQ9IjE0IiB5PSI0IiByeD0iMiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWZ1bGwtc2NyZWVuOiAnPHBhdGggZD0iTTEgMXY2aDJWM2g0VjF6bTIgMTJIMXY2aDZ2LTJIM3ptMTQgNGgtNHYyaDZ2LTZoLTJ6bTAtMTZoLTR2Mmg0djRoMlYxeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1mdW5jdGlvbjogJzxwYXRoIGQ9Ik0xMy4yNjMgMGE0IDQgMCAwMC0zLjg0NiAyLjkwMUw4LjI0NiA3SDV2MmgyLjY3NEw2LjY2IDEyLjU1QTIgMiAwIDAxNC43MzcgMTRoLS4xMzFhMiAyIDAgMDEtMS42NjUtLjg5bC0uNjY0LS45OTctMS42NjQgMS4xMS42NjQuOTk2QTQgNCAwIDAwNC42MDYgMTZoLjEzMWE0IDQgMCAwMDMuODQ2LTIuOTAxTDkuNzU0IDlIMTNWN2gtMi42NzRsMS4wMTQtMy41NUEyIDIgMCAwMTEzLjI2MyAyaC4xMzJhMiAyIDAgMDExLjY2NC44OWwuNjY0Ljk5NyAxLjY2NC0xLjExLS42NjQtLjk5NkE0IDQgMCAwMDEzLjM5NSAwaC0uMTMyWm02LjE1MSAxOC0yLjUtMi41IDIuNS0yLjVMMTggMTEuNTg2bC0yLjUgMi41LTIuNS0yLjVMMTEuNTg2IDEzbDIuNSAyLjUtMi41IDIuNUwxMyAxOS40MTRsMi41LTIuNSAyLjUgMi41TDE5LjQxNCAxOFoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tZnVuY3Rpb24tYXJndW1lbnQ6ICc8cGF0aCBkPSJNMTggMTBhOCA4IDAgMDEtMTQuOTMgNEguODMyQzIuMzc1IDE3LjUzMiA1LjkgMjAgMTAgMjBjNS41MjMgMCAxMC00LjQ3NyAxMC0xMFMxNS41MjMgMCAxMCAwQzUuOSAwIDIuMzc1IDIuNDY4LjgzMiA2SDMuMDdBOCA4IDAgMDExOCAxMFpNMi4wNjIgMTFIOHY0bDYtNS02LTV2NEgwdjJoMi4wNjJaIi8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tZnVubmVsOiAnPHBhdGggZD0iTTEwIDEzIDEgMWgxOHoiLz48cGF0aCBkPSJNOCA5djhsNCAyVjl6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tZ2xvYmU6ICc8cGF0aCBkPSJNMTIuMiAxNy45NGMxLjI2LTIgMi00LjQ1IDIuMTQtNy4wNmgzLjg2YTguMjYgOC4yNiAwIDAxLTYgNy4wNk0xLjggMTAuODhoMy44NmMuMTQgMi42Ljg4IDUuMDYgMi4xNCA3LjA2YTguMjYgOC4yNiAwIDAxLTYtNy4wNm02LTguODJjLTEuMjYgMi0yIDQuNDUtMi4xNCA3LjA3SDEuOGE4LjI2IDguMjYgMCAwMTYtNy4wN200Ljc5IDguODJBMTIuNSAxMi41IDAgMDExMCAxOGExMi41MSAxMi41MSAwIDAxLTIuNTktNy4xM3pNNy40IDkuMTNBMTIuNTEgMTIuNTEgMCAwMTEwIDEuOTlhMTIuNSAxMi41IDAgMDEyLjU5IDcuMTR6bTEwLjggMGgtMy44N2ExNC43OSAxNC43OSAwIDAwLTIuMTQtNy4wNyA4LjI2IDguMjYgMCAwMTYgNy4wN00xMCAwYTEwIDEwIDAgMTAwIDIwIDEwIDEwIDAgMDAwLTIwIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWhhbGYtYnJpZ2h0OiAnPHBhdGggZD0iTTE3IDYuNjdWM2gtNC4yTDkuODcuMDcgNi45NCAzSDN2My42N0wuMDcgOS42IDMgMTIuNTNWMTdoMy45NGwyLjkzIDIuOTNMMTIuOCAxN0gxN3YtNC40N2wyLjkzLTIuOTN6bS03IDguOTN2LTEyYTYuMjEgNi4yMSAwIDAxNiA2IDYuMjEgNi4yMSAwIDAxLTYgNnoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1oYWxmLXN0YXI6ICc8cGF0aCBkPSJNMjAgN2gtN0wxMCAuNSA3IDdIMGw1LjQ2IDUuNDctMS42NCA3IDYuMTgtMy43IDYuMTggMy43My0xLjYzLTd6bS0xMCA2LjlWNC42bDEuOSAzLjloNC42bC0zLjczIDMuNCAxIDQuMjh6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24taGFuZDogJzxwYXRoIGQ9Ik0xOCA0LjZWMTdjMCAxLjktLjUgMy0yLjQgM0g5LjVjLS45IDAtMS44LS40LTIuNC0xbC00LjYtNS0uNS0xYzAtMSAuNS0xIC41LTEgLjMgMCAuNiAwIDEgLjJMNyAxNFYzLjNDNyAyLjYgNy4zIDIgOCAyYy42IDAgMSAuNyAxIDEuNFY5aDFWMS4yYzAtLjYuMy0xLjIgMS0xLjJzMSAuNiAxIDEuM1Y5aDFWMmMwLS43LjMtMS4zIDEtMS4zczEgLjYgMSAxLjN2N2gxVjQuNmMwLS43LjMtMS4zIDEtMS4zczEgLjYgMSAxLjNaIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWhlYXJ0OiAnPHBhdGggZD0iTTE0Ljc1IDFBNS4yNCA1LjI0IDAgMDAxMCA0IDUuMjQgNS4yNCAwIDAwMCA2LjI1QzAgMTEuNzUgMTAgMTkgMTAgMTlzMTAtNy4yNSAxMC0xMi43NUE1LjI1IDUuMjUgMCAwMDE0Ljc1IDF6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWhlbHA6ICc8cGF0aCBkPSJNMTAuMDYgMUMxMyAxIDE1IDIuODkgMTUgNS41M2E0LjU5IDQuNTkgMCAwMS0yLjI5IDQuMDhjLTEuNDIuOTItMS44MiAxLjUzLTEuODIgMi43MVYxM0g4LjM4di0uODFhMy44NCAzLjg0IDAgMDEyLTMuODRjMS4zNC0uOSAxLjc5LTEuNTMgMS43OS0yLjcxYTIuMSAyLjEgMCAwMC0yLjA4LTIuMTRoLS4xN2EyLjMgMi4zIDAgMDAtMi4zOCAyLjIydi4xN0g1QTQuNzEgNC43MSAwIDAxOS41MSAxYTUgNSAwIDAxLjU1IDB6Ii8+PGNpcmNsZSBjeD0iMTAiIGN5PSIxNyIgcj0iMiIvPicsICd0cnVlJywgJ2hlIHlpJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWhlbHAtbm90aWNlOiAnPHBhdGggZD0iTTEwIDBhMTAgMTAgMCAxMDEwIDEwQTEwIDEwIDAgMDAxMCAwem0xIDE2SDl2LTJoMnptMi43MS03LjZhMi42NCAyLjY0IDAgMDEtLjMzLjc0IDMuMTYgMy4xNiAwIDAxLS40OC41NWwtLjU0LjQ4Yy0uMjEuMTgtLjQxLjM1LS41OC41MmEyLjU0IDIuNTQgMCAwMC0uNDcuNTZBMi4zIDIuMyAwIDAwMTEgMTJhMy43OSAzLjc5IDAgMDAtLjExIDFIOS4wOGE4LjkgOC45IDAgMDEuMDctMS4yNSAzLjI4IDMuMjggMCAwMS4yNS0uOSAyLjc5IDIuNzkgMCAwMS40MS0uNjcgNCA0IDAgMDEuNTgtLjU4Yy4xNy0uMTYuMzQtLjMuNTEtLjQ0YTMgMyAwIDAwLjQzLS40NCAxLjgzIDEuODMgMCAwMC4zLS41NSAyIDIgMCAwMC4xMS0uNzIgMi4wNiAyLjA2IDAgMDAtLjE3LS44NiAxLjcxIDEuNzEgMCAwMC0xLS45IDEuNyAxLjcgMCAwMC0uNS0uMSAxLjc3IDEuNzcgMCAwMC0xLjUzLjY4IDMgMyAwIDAwLS41IDEuODJINi4xNmE0Ljc0IDQuNzQgMCAwMS4yOC0xLjY4IDMuNTYgMy41NiAwIDAxLjgtMS4yOSAzLjg4IDMuODggMCAwMTEuMjgtLjgzQTQuNTkgNC41OSAwIDAxMTAuMTggNGE0LjQ0IDQuNDQgMCAwMTEuNDQuMjMgMy41MSAzLjUxIDAgMDExLjE1LjY1IDMuMDggMy4wOCAwIDAxLjc4IDEuMDYgMy41NCAzLjU0IDAgMDEuMjkgMS40NSAzLjM5IDMuMzkgMCAwMS0uMTMgMS4wMXoiLz4nLCAndHJ1ZScsICdoZSB5aScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1oaWVyb2dseXBoOiAnPHBhdGggZD0iTTE1IDExaC0zLjc1bDIuNTUtMy40YTQuNzUgNC43NSAwIDEwLTcuNiAwTDguNzUgMTFINXYyaDR2N2gydi03aDR6TTcuNTQgMy41MkEyLjc1IDIuNzUgMCAxMTEyLjIgNi40TDEwIDkuMzMgNy44IDYuNGEyLjY5IDIuNjkgMCAwMS0uMjYtMi44OHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24taGlnaGxpZ2h0OiAnPHBhdGggZD0iTTE1LjE0IDIuMjdhMSAxIDAgMDAtMS40MSAwbC0xMCAxMGExIDEgMCAwMDAgMS40MUw0IDE0bC0zIDRoNWwxLTEgLjI5LjI5YTEgMSAwIDAwMS40MSAwbDEwLTEwYTEgMSAwIDAwLjAzLTEuNDN6TTcgMTVsLTItMiA5LTkgMiAyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1oaXN0b3J5OiAnPHBhdGggZD0iTTkgNnY1aC4wNmwyLjQ4IDIuNDcgMS40MS0xLjQxTDExIDEwLjExVjZ6Ii8+PHBhdGggZD0iTTEwIDFhOSA5IDAgMDAtNy44NSAxMy4zNUwuNSAxNkg2di01LjVsLTIuMzggMi4zOEE3IDcgMCAxMTEwIDE3djJhOSA5IDAgMDAwLTE4eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1ob21lOiAnPHBhdGggZD0iTTEwIDEgMCAxMGgzdjloNHYtNC42YzAtMS40NyAxLjMxLTIuNjYgMy0yLjY2czMgMS4xOSAzIDIuNjZWMTloNHYtOWgzTDEwIDF6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWltYWdlOiAnPHBhdGggZD0iTTIgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTZhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJ6bS0uMTcgMTMgNC4wOS01LjI1IDIuOTIgMy41MUwxMi45MiA4bDUuMjUgN3oiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24taW1hZ2UtYWRkOiAnPHBhdGggZD0iTTE2IDE3SDJsMy41LTQuNSAyLjUgMyAzLjUtNC41LjUuNjdWOEg4VjZIMmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTZoLTUuNzV6Ii8+PHBhdGggZD0iTTE2IDRWMGgtMnY0aC00djJoNHY0aDJWNmg0VjR6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJzxwYXRoIGQ9Ik0xMiA2djJIOHY0SDJ2NmEyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMlY4YTIgMiAwIDAwLTItMnpNMy44MyAxN2wzLjU1LTQuNSAyLjUyIDMgMy41NS00LjVMMTggMTd6TTQgMTBoMlY2aDRWNEg2VjBINHY0SDB2Mmg0eiIvPicsICdmYWxzZSc7CkBjZHgtaWNvbi1pbWFnZS1icm9rZW46ICc8cGF0aCBkPSJNMTYuNjcgOS40NyAyMCAxMi4xM3Y0LjA5QTIgMiAwIDAxMTcuNzggMThIMi4yMkEyIDIgMCAwMTAgMTYuMjJ2LTUuODZMMy4zMyAxM2w0LjQ1LTMuNTNMMTIuMjIgMTN6Ii8+PHBhdGggZD0iTTIwIDkuNjQgMTYuNjcgN2wtNC40NCAzLjU2TDcuNzggN2wtNC40NSAzLjUzTDAgNy44N1YzLjc4QTIgMiAwIDAxMi4yMiAyaDE1LjU2QTIgMiAwIDAxMjAgMy43OHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24taW1hZ2UtZ2FsbGVyeTogJzxwYXRoIGQ9Ik0zIDVhMiAyIDAgMDAtMiAydjEwYTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yVjdhMiAyIDAgMDAtMi0yem0wIDExIDMuNS00LjUgMi41IDMgMy41LTQuNSA0LjUgNnpNMTYgMmEyIDIgMCAwMTIgMkgyYTIgMiAwIDAxMi0yeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1pbWFnZS1sYXlvdXQtYmFzaWM6ICc8cGF0aCBkPSJNMSAzdjE0aDE4VjN6bTE3IDEzSDJWNGgxNnoiLz48cGF0aCBkPSJNOC41OCAxNGguODFsMy4xMS00IDMgNEgxN2wtNC41LTZMOSAxMi41MSA2LjUgOS41IDMgMTRoMS41NmwxLjk0LTIuNXoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24taW1hZ2UtbGF5b3V0LWZyYW1lOiAnPHBhdGggZD0iTTMgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJ6bTAgMTVhMSAxIDAgMDEtMS0xVjRhMSAxIDAgMDExLTFoMTRhMSAxIDAgMDExIDF2MTJhMSAxIDAgMDEtMSAxeiIvPjxwYXRoIGQ9Ik0xNyA0SDN2MTJoMTR6TTUgMTNsMi41LTMgMiAyTDEyIDlsMyA0eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1pbWFnZS1sYXlvdXQtZnJhbWVsZXNzOiAnPHBhdGggZD0iTTE5IDNIMXYxNGgxOHpNMyAxNGwzLjUtNC41IDIuNSAzTDEyLjUgOGw0LjUgNnoiLz48cGF0aCBkPSJNMTkgNUgxVjNoMTh6bTAgMTJIMXYtMmgxOHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24taW1hZ2UtbGF5b3V0LXRodW1ibmFpbDogJzxwYXRoIGQ9Ik0zIDJhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyaDE0YTIgMiAwIDAwMi0yVjRhMiAyIDAgMDAtMi0yem0wIDE1YTEgMSAwIDAxLTEtMVY0YTEgMSAwIDAxMS0xaDE0YTEgMSAwIDAxMSAxdjEyYTEgMSAwIDAxLTEgMXoiLz48cGF0aCBkPSJNMTcgNEgzdjEwaDE0ek01IDEybDIuNS0zIDIgMkwxMiA4bDMgNHptLTEgM2gxMnYxSDR6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWltYWdlLWxvY2s6ICc8cGF0aCBkPSJNMTYgMTdIMmwzLjUtNC41IDIuNSAzIDMtMy44MUEyIDIgMCAwMTEwIDEwVjZIMmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTZoLTUuNzV6Ii8+PHBhdGggZD0iTTE5IDRoLS41VjIuNWEyLjUgMi41IDAgMDAtNSAwVjRIMTNhMSAxIDAgMDAtMSAxdjRhMSAxIDAgMDAxIDFoNmExIDEgMCAwMDEtMVY1YTEgMSAwIDAwLTEtMXptLTMgNGExIDEgMCAxMTEtMSAxIDEgMCAwMS0xIDF6bTEuNS00aC0zVjIuNzVDMTQuNSAyIDE0LjUgMSAxNiAxczEuNSAxIDEuNSAxLjc1eiIvPicsICdmYWxzZScsICdmYWxzZScsICc8cGF0aCBkPSJNOCA1YTEgMSAwIDAwLTEtMWgtLjVWMi41QTIuNDUgMi40NSAwIDAwNCAwYTIuNDUgMi40NSAwIDAwLTIuNSAyLjVWNEgxYTEgMSAwIDAwLTEgMXY0YTEgMSAwIDAwMSAxaDZhMSAxIDAgMDAxLTF6TTQgOGExIDEgMCAxMTEtMSAxIDEgMCAwMS0xIDF6bTEuNS00aC0zVjIuNzVDMi41IDIgMi41IDEgNCAxczEuNSAxIDEuNSAxLjc1ek0xMCA2djRhMiAyIDAgMDEtMiAySDJ2NmEyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMlY4YTIgMiAwIDAwLTItMnpNNCAxN2wzLjU0LTQuNSAyLjUzIDMgMy41NC00LjUgNC41NiA2eiIvPicsICdmYWxzZSc7CkBjZHgtaWNvbi1pbmRlbnQ6ICc8cGF0aCBkPSJNMSAxNmgxOHYySDF6bTgtOWgxMHYySDl6bTAgNGgxMHYySDl6TTEgMmgxOHYySDF6bTUgOC01IDRWNnoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1pbmZvOiAnPHBhdGggZD0iTTQgMTBhNiA2IDAgMTAxMiAwIDYgNiAwIDAwLTEyIDBtNi04YTggOCAwIDExMCAxNiA4IDggMCAwMTAtMTZtMSA3djVIOVY5em0wLTFWNkg5djJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ3RydWUnLCBhciAnPHBhdGggZD0iTTggMTlhMSAxIDAgMDAxIDFoMmExIDEgMCAwMDEtMXYtMUg4em05LTEyYTcgNyAwIDEwLTEyIDQuOVM3IDE0IDcgMTV2MWExIDEgMCAwMDEgMWg0YTEgMSAwIDAwMS0xdi0xYzAtMSAyLTMuMSAyLTMuMUE3IDcgMCAwMDE3IDd6Ii8+JzsKQGNkeC1pY29uLWluZm8tZmlsbGVkOiAnPHBhdGggZD0iTTEwIDBDNC40NzcgMCAwIDQuNDc3IDAgMTBzNC40NzcgMTAgMTAgMTAgMTAtNC40NzcgMTAtMTBTMTUuNTIzIDAgMTAgMHpNOSA1aDJ2Mkg5em0wIDRoMnY2SDl6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ3RydWUnLCBhciAnPHBhdGggZD0iTTggMTlhMSAxIDAgMDAxIDFoMmExIDEgMCAwMDEtMXYtMUg4em05LTEyYTcgNyAwIDEwLTEyIDQuOVM3IDE0IDcgMTV2MWExIDEgMCAwMDEgMWg0YTEgMSAwIDAwMS0xdi0xYzAtMSAyLTMuMSAyLTMuMUE3IDcgMCAwMDE3IDd6Ii8+JzsKQGNkeC1pY29uLWluc3RhbmNlOiAnPHBhdGggZD0iTTguNzAzIDEuODQ1IDQuNjQxIDcuNjVhNC4xMTUgNC4xMTUgMCAwMC0uMDk5LjE0OEwzIDEwbDEuNTQyIDIuMjAzYy4wMzIuMDUuMDY1LjEuMS4xNDhsMi45MTQgNC4xNjQgMS4xNDcgMS42NGEyLjAwMiAyLjAwMiAwIDAxLTIuNzgzLS40OTZsLTQuNTU4LTYuNTEyYTIgMiAwIDAxMC0yLjI5NEw1LjkyIDIuMzQxYTIuMDAyIDIuMDAyIDAgMDEyLjc4My0uNDk2Wm0tMi4zNDEgOS4zMDIgNC41NTggNi41MTJhMiAyIDAgMDAzLjI3NyAwbDQuNTU5LTYuNTEyYTIgMiAwIDAwMC0yLjI5NGwtNC41NTktNi41MTJhMiAyIDAgMDAtMy4yNzcgMEw2LjM2MiA4Ljg1M2EyIDIgMCAwMDAgMi4yOTRabTcuODM1LTguODA2TDEyLjU2IDMuNDg4IDE3LjExNyAxMGwtNC41NTggNi41MTItMS42MzkgMS4xNDcgMS42MzktMS4xNDdMOCAxMGw0LjU1OS02LjUxMiAxLjYzOC0xLjE0N1oiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1pdGFsaWM6ICc8cGF0aCBkPSJtMyAxOSA5Ljk5Mi0xOEgxNmwyIDE4aC0zbC0uNC01SDguNUw2IDE5SDNabTctOGg0LjVjLS4wNTEtLjY5LS40ODMtNi40MjktLjUtNy0uMjU1LjU4OC0zLjY5MyA2LjM2MS00IDdaIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ3RydWUnLCBhciAnPHBhdGggZD0iTTYuMjkgMTlhNTQuMjUgNTQuMjUgMCAwMS0uNzMtMi44OCAzMC45NiAzMC45NiAwIDAxLS40Mi0yLjQ3QTE1LjE3IDE1LjE3IDAgMDE1IDExLjc5YzAtLjk3LjE4LTEuNzguNTQtMi40M2E0LjIyIDQuMjIgMCAwMTEuNDMtMS41NyA2LjAzIDYuMDMgMCAwMTEuOTktLjg0IDkuMyA5LjMgMCAwMTIuMi0uMjJjLjc0LjAxIDEuNDUuMDggMi4xLjIyYTMuOTMgMy45MyAwIDAwLS4xMi0xLjMgMi44IDIuOCAwIDAwLS40Ni0xLjA3IDIuMSAyLjEgMCAwMC0uNzUtLjcgMS44OCAxLjg4IDAgMDAtLjk5LS4yNyAyLjIzIDIuMjMgMCAwMC0uOTYuMjIgMy4wMiAzLjAyIDAgMDAtLjg5LjY2Yy0uMjguMy0uNTQuNjctLjc5IDEuMUw2LjE3IDQuNDhjLjQyLS44NS45LTEuNTMgMS40My0yLjAzLjU0LS41IDEuMTEtLjg2IDEuNy0xLjA5QTQuOSA0LjkgMCAwMTExLjEgMWMuODkgMCAxLjY0LjE4IDIuMjcuNTNhNC4yMiA0LjIyIDAgMDExLjUyIDEuNGMuMzkuNTUuNjcgMS4xNi44NCAxLjhBNi40OCA2LjQ4IDAgMDExNiA2LjU4YTYuODIgNi44MiAwIDAxLS44OSAzLjIzIDIwLjEyIDIwLjEyIDAgMDAtMi40MS0uNDggOS44IDkuOCAwIDAwLTIuMDQtLjEgNC4yIDQuMiAwIDAwLTEuNTQuMzYgMi4xNiAyLjE2IDAgMDAtMSAuODZjLS4yNC4zOS0uMzYuODctLjM2IDEuNDYgMCAuNTUuMDUgMS4xOC4xNCAxLjkuMS43My4yMyAxLjQ4LjQgMi4yNi4xNy43OC4zNyAxLjU1LjU4IDIuMzJsLTIuNi42MloiLz4nLCBjcyAnPHBhdGggZD0ibTUgMTkgLjMzLTEuNTEgMi4xNy0uNjYgMi45LTEzLjY2LTEuOS0uNjNMOSAxaDdsLS43MSAxLjYtMi4yOS41Ny0yLjgzIDEzLjY2IDIuMTQuNjZMMTIgMTlINVoiLz4nLCBlbiAnPHBhdGggZD0ibTUgMTkgLjMzLTEuNTEgMi4xNy0uNjYgMi45LTEzLjY2LTEuOS0uNjNMOSAxaDdsLS43MSAxLjYtMi4yOS41Ny0yLjgzIDEzLjY2IDIuMTQuNjZMMTIgMTlINVoiLz4nLCBmciAnPHBhdGggZD0ibTUgMTkgLjMzLTEuNTEgMi4xNy0uNjYgMi45LTEzLjY2LTEuOS0uNjNMOSAxaDdsLS43MSAxLjYtMi4yOS41Ny0yLjgzIDEzLjY2IDIuMTQuNjZMMTIgMTlINVoiLz4nLCBoZSAnPHBhdGggZD0ibTUgMTkgLjMzLTEuNTEgMi4xNy0uNjYgMi45LTEzLjY2LTEuOS0uNjNMOSAxaDdsLS43MSAxLjYtMi4yOS41Ny0yLjgzIDEzLjY2IDIuMTQuNjZMMTIgMTlINVoiLz4nLCBtbCAnPHBhdGggZD0ibTUgMTkgLjMzLTEuNTEgMi4xNy0uNjYgMi45LTEzLjY2LTEuOS0uNjNMOSAxaDdsLS43MSAxLjYtMi4yOS41Ny0yLjgzIDEzLjY2IDIuMTQuNjZMMTIgMTlINVoiLz4nLCBwbCAnPHBhdGggZD0ibTUgMTkgLjMzLTEuNTEgMi4xNy0uNjYgMi45LTEzLjY2LTEuOS0uNjNMOSAxaDdsLS43MSAxLjYtMi4yOS41Ny0yLjgzIDEzLjY2IDIuMTQuNjZMMTIgMTlINVoiLz4nLCBwdCAnPHBhdGggZD0ibTUgMTkgLjMzLTEuNTEgMi4xNy0uNjYgMi45LTEzLjY2LTEuOS0uNjNMOSAxaDdsLS43MSAxLjYtMi4yOS41Ny0yLjgzIDEzLjY2IDIuMTQuNjZMMTIgMTlINVoiLz4nLCBzY28gJzxwYXRoIGQ9Im01IDE5IC4zMy0xLjUxIDIuMTctLjY2IDIuOS0xMy42Ni0xLjktLjYzTDkgMWg3bC0uNzEgMS42LTIuMjkuNTctMi44MyAxMy42NiAyLjE0LjY2TDEyIDE5SDVaIi8+JywgYmUgJzxwYXRoIGQ9Ik0yIDE5IDYgMWgzTDcgOS41IDE1IDFoM2wtOC41IDkgNS41IDloLTNsLTUtOS0yIDlIMloiLz4nLCBjZSAnPHBhdGggZD0iTTIgMTkgNiAxaDNMNyA5LjUgMTUgMWgzbC04LjUgOSA1LjUgOWgtM2wtNS05LTIgOUgyWiIvPicsIGRhICc8cGF0aCBkPSJNMiAxOSA2IDFoM0w3IDkuNSAxNSAxaDNsLTguNSA5IDUuNSA5aC0zbC01LTktMiA5SDJaIi8+JywgZGUgJzxwYXRoIGQ9Ik0yIDE5IDYgMWgzTDcgOS41IDE1IDFoM2wtOC41IDkgNS41IDloLTNsLTUtOS0yIDlIMloiLz4nLCBmaSAnPHBhdGggZD0iTTIgMTkgNiAxaDNMNyA5LjUgMTUgMWgzbC04LjUgOSA1LjUgOWgtM2wtNS05LTIgOUgyWiIvPicsIGt5ICc8cGF0aCBkPSJNMiAxOSA2IDFoM0w3IDkuNSAxNSAxaDNsLTguNSA5IDUuNSA5aC0zbC01LTktMiA5SDJaIi8+Jywgbm4gJzxwYXRoIGQ9Ik0yIDE5IDYgMWgzTDcgOS41IDE1IDFoM2wtOC41IDkgNS41IDloLTNsLTUtOS0yIDlIMloiLz4nLCBubyAnPHBhdGggZD0iTTIgMTkgNiAxaDNMNyA5LjUgMTUgMWgzbC04LjUgOSA1LjUgOWgtM2wtNS05LTIgOUgyWiIvPicsIG9zICc8cGF0aCBkPSJNMiAxOSA2IDFoM0w3IDkuNSAxNSAxaDNsLTguNSA5IDUuNSA5aC0zbC01LTktMiA5SDJaIi8+Jywgc3YgJzxwYXRoIGQ9Ik0yIDE5IDYgMWgzTDcgOS41IDE1IDFoM2wtOC41IDkgNS41IDloLTNsLTUtOS0yIDlIMloiLz4nLCBydSAnPHBhdGggZD0iTTIgMTkgNiAxaDNMNyA5LjUgMTUgMWgzbC04LjUgOSA1LjUgOWgtM2wtNS05LTIgOUgyWiIvPicsIHVrICc8cGF0aCBkPSJNMiAxOSA2IDFoM0w3IDkuNSAxNSAxaDNsLTguNSA5IDUuNSA5aC0zbC01LTktMiA5SDJaIi8+JywgZXMgJzxwYXRoIGQ9Ik05IDE5Yy0yLjAxIDAtMy4yNi0uNi00LjM1LTEuODFTMyAxNC4zMiAzIDEyLjI1YTE0LjA1IDE0LjA1IDAgMDExLjQ3LTYuMjMgMTAuOTIgMTAuOTIgMCAwMTEuODctMi41OCA4IDggMCAwMTIuNjUtMS43OSAxMC4xNiAxMC4xNiAwIDAxNS45Mi0uNCA3Ljg0IDcuODQgMCAwMTIuMDkuOEwxNS45NCA0LjJhOC44MSA4LjgxIDAgMDAtMS41NC0uNjYgNi4zIDYuMyAwIDAwLTEuOTQtLjI3IDUuNiA1LjYgMCAwMC0zIC43OCA2LjYgNi42IDAgMDAtMi4wOSAyLjExYy0uNTQuODctLjk1IDEuODMtMS4yMyAyLjg3YTEyLjc4IDEyLjc4IDAgMDAtLjM5IDMuMTIgNSA1IDAgMDAxLjAzIDMuMzZjLjcuOCAxLjcxIDEuMiAzLjAyIDEuMi42NyAwIDEuMzQtLjA3IDItLjIyYTE2LjM5IDE2LjM5IDAgMDAxLjkzLS41N3YyLjI4YTEzLjYzIDEzLjYzIDAgMDEtNC43My43OVoiLz4nLCBnbCAnPHBhdGggZD0iTTkgMTljLTIuMDEgMC0zLjI2LS42LTQuMzUtMS44MVMzIDE0LjMyIDMgMTIuMjVhMTQuMDUgMTQuMDUgMCAwMTEuNDctNi4yMyAxMC45MiAxMC45MiAwIDAxMS44Ny0yLjU4IDggOCAwIDAxMi42NS0xLjc5IDEwLjE2IDEwLjE2IDAgMDE1LjkyLS40IDcuODQgNy44NCAwIDAxMi4wOS44TDE1Ljk0IDQuMmE4LjgxIDguODEgMCAwMC0xLjU0LS42NiA2LjMgNi4zIDAgMDAtMS45NC0uMjcgNS42IDUuNiAwIDAwLTMgLjc4IDYuNiA2LjYgMCAwMC0yLjA5IDIuMTFjLS41NC44Ny0uOTUgMS44My0xLjIzIDIuODdhMTIuNzggMTIuNzggMCAwMC0uMzkgMy4xMiA1IDUgMCAwMDEuMDMgMy4zNmMuNy44IDEuNzEgMS4yIDMuMDIgMS4yLjY3IDAgMS4zNC0uMDcgMi0uMjJhMTYuMzkgMTYuMzkgMCAwMDEuOTMtLjU3djIuMjhhMTMuNjMgMTMuNjMgMCAwMS00LjczLjc5WiIvPicsIGl0ICc8cGF0aCBkPSJNOSAxOWMtMi4wMSAwLTMuMjYtLjYtNC4zNS0xLjgxUzMgMTQuMzIgMyAxMi4yNWExNC4wNSAxNC4wNSAwIDAxMS40Ny02LjIzIDEwLjkyIDEwLjkyIDAgMDExLjg3LTIuNTggOCA4IDAgMDEyLjY1LTEuNzkgMTAuMTYgMTAuMTYgMCAwMTUuOTItLjQgNy44NCA3Ljg0IDAgMDEyLjA5LjhMMTUuOTQgNC4yYTguODEgOC44MSAwIDAwLTEuNTQtLjY2IDYuMyA2LjMgMCAwMC0xLjk0LS4yNyA1LjYgNS42IDAgMDAtMyAuNzggNi42IDYuNiAwIDAwLTIuMDkgMi4xMWMtLjU0Ljg3LS45NSAxLjgzLTEuMjMgMi44N2ExMi43OCAxMi43OCAwIDAwLS4zOSAzLjEyIDUgNSAwIDAwMS4wMyAzLjM2Yy43LjggMS43MSAxLjIgMy4wMiAxLjIuNjcgMCAxLjM0LS4wNyAyLS4yMmExNi4zOSAxNi4zOSAwIDAwMS45My0uNTd2Mi4yOGExMy42MyAxMy42MyAwIDAxLTQuNzMuNzlaIi8+JywgbmwgJzxwYXRoIGQ9Ik05IDE5Yy0yLjAxIDAtMy4yNi0uNi00LjM1LTEuODFTMyAxNC4zMiAzIDEyLjI1YTE0LjA1IDE0LjA1IDAgMDExLjQ3LTYuMjMgMTAuOTIgMTAuOTIgMCAwMTEuODctMi41OCA4IDggMCAwMTIuNjUtMS43OSAxMC4xNiAxMC4xNiAwIDAxNS45Mi0uNCA3Ljg0IDcuODQgMCAwMTIuMDkuOEwxNS45NCA0LjJhOC44MSA4LjgxIDAgMDAtMS41NC0uNjYgNi4zIDYuMyAwIDAwLTEuOTQtLjI3IDUuNiA1LjYgMCAwMC0zIC43OCA2LjYgNi42IDAgMDAtMi4wOSAyLjExYy0uNTQuODctLjk1IDEuODMtMS4yMyAyLjg3YTEyLjc4IDEyLjc4IDAgMDAtLjM5IDMuMTIgNSA1IDAgMDAxLjAzIDMuMzZjLjcuOCAxLjcxIDEuMiAzLjAyIDEuMi42NyAwIDEuMzQtLjA3IDItLjIyYTE2LjM5IDE2LjM5IDAgMDAxLjkzLS41N3YyLjI4YTEzLjYzIDEzLjYzIDAgMDEtNC43My43OVoiLz4nLCBldSAnPHBhdGggZD0iTTQgMTkgOCAxaDlsLS42IDJIMTBMOC42IDlIMTVsLS42IDJIOC4yTDcgMTdoNi41bC0uNSAySDRaIi8+JywgZmEgJzxwYXRoIGQ9Ik0xMC43IDExLjhoLTFsLTEuMS0uNWEyIDIgMCAwMS0uNy0xVjguOGExMC43IDEwLjcgMCAwMC0zIDEuNWwtMSAxYTMgMyAwIDAwLS42IDEuM3YxYy4xLjQuMy42LjUuOGwuOS40IDEuMS4xYy42IDAgMSAwIDEuNi0uMi42IDAgMS4xLS4yIDEuNy0uNGwuMyAxLjhhMTEgMTEgMCAwMS00LjEuOWMtLjcgMC0xLjQgMC0yLS4zLS41LS4xLTEtLjQtMS4zLS44YTIgMiAwIDAxLS44LTEuMkMxIDE0IDEgMTMuNiAxIDEyLjlhNSA1IDAgMDEuNi0xLjdjLjMtLjYuNy0xIDEuMS0xLjVhOS42IDkuNiAwIDAxNC43LTIuMyAyNSAyNSAwIDAwLTItLjQgNi43IDYuNyAwIDAwLTIgMGgtLjhWNWExMC40IDEwLjQgMCAwMTEuOS0uMiA2LjcgNi43IDAgMDEyLjUuNGwxIC40IDEgLjMuOS4yaC42bC0uMiAyLjItMSAuMVY5aC4xYzAgLjMuMi41LjQuNmwuNy4ySDE0YS44LjggMCAwMC41LS4ybC4xLS4zLS4xLS42LS42LS45YTMwLjUgMzAuNSAwIDAwLTEuNC0xLjRWNmE0LjcgNC43IDAgMDEuMi0xbC4yLS4zLjktLjZhMjMgMjMgMCAwMTIuOS0xLjRsMS43LS43LjUgMS44YTE4OC4zIDE4OC4zIDAgMDAtNCAxLjggOC44IDguOCAwIDAwMS41IDJjLjIuNC40LjcuNCAxdjFsLS4zLjctLjcuOC0xLjMuNS0xLjguMmgtMi4xWm0tNS40IDEuNmMuMS4yLjQuMy43LjMuMyAwIC41LS4xLjgtLjNsLjQtLjdjMC0uMyAwLS42LS4yLS44YS44LjggMCAwMC0uNi0uM2wtLjkuMy0uNC44YzAgLjIgMCAuNS4yLjdaIi8+JywgaHUgJzxwYXRoIGQ9Ik0yIDE5IDYgMWg0LjZjMi4yOSAwIDQuMTcuNTkgNS40NiAxLjc2QzE3LjM2IDMuOTQgMTggNS43MiAxOCA4LjA5YzAgMi4xNC0uNDIgNC4wMy0xLjI4IDUuNjhhOS4zNiA5LjM2IDAgMDEtMy43NCAzLjg1QTExLjk4IDExLjk4IDAgMDE3IDE5SDJabTUuMTYtMi4zYzEuNzEgMCAzLjE2LS4zOCA0LjMzLTEuMTVhNy4zNyA3LjM3IDAgMDAyLjY2LTMuMWMuNi0xLjMuOS0yLjc0LjktNC4zNCAwLTEuNjgtLjQzLTIuOS0xLjI4LTMuNjZhNC44NiA0Ljg2IDAgMDAtMy40LTEuMTZIOC4zM2wtMyAxMy40MmgxLjgzWiIvPicsIGh5ICc8cGF0aCBkPSJNNC4zNyAxIDE3IDMuMTgzbC0uMjk3IDIuMTU4LTQuOTE4LS44NTlhMTQuMjI1IDE0LjIyNSAwIDAwLTIuNzE4IDIuMzA1IDEwLjY4NSAxMC42ODUgMCAwMC0xLjgzIDIuNzIzYy0uNDI4Ljk2NC0uNjQyIDEuOTI5LS42NDIgMi44OTMgMCAxLjM1Ny4zNDYgMi40MzYgMS4wMzggMy4yMzcuNzA5LjgwMSAxLjY3MiAxLjIwMiAyLjg5MiAxLjIwMiAxLjM4NCAwIDIuMzcyLS4zNzYgMi45NjYtMS4xMjguNTkzLS43NTIuODktMS43NjYuODktMy4wNDF2LTEuMDc5SDE3djEuMjI2YzAgMS44OTctLjU2IDMuNC0xLjY4IDQuNTEyQzE0LjE5OCAxOC40NDQgMTIuNiAxOSAxMC41MjQgMTljLTEuMzM1IDAtMi40OTYtLjI3LTMuNDg1LS44MWE1LjczNCA1LjczNCAwIDAxLTIuMjUtMi4zMDRjLS41MjYtLjk5OC0uNzktMi4xNTktLjc5LTMuNDgzIDAtMS4wMTMuMjE0LTIuMDQzLjY0My0zLjA5YTExLjU2NyAxMS41NjcgMCAwMTEuNzU0LTIuOTY3IDExLjkxNSAxMS45MTUgMCAwMTIuNTIxLTIuMzc5bC00Ljg0NC0uODMzTDQuMzcxIDFaIi8+Jywga3NoICc8cGF0aCBkPSJNOCAxOWMtLjgzNiAwLTEuNTc4LS4wNzQtMi4yMjUtLjIyLS42NDctLjE0OC0xLjIzOS0uNDg2LTEuNzc1LS43OHYtMi4zNmMuNTUyLjI5NSAxLjE1Mi41NTYgMS43OTkuNzg1LjY2My4yMTMgMS40MDQuMzE5IDIuMjI1LjMxOWE1LjE0IDUuMTQgMCAwMDEuNzc1LS4yOTQgMi44NDIgMi44NDIgMCAwMDEuMzI1LS45MzJjLjMzMi0uNDI1LjQ5Ny0uOTY1LjQ5Ny0xLjYxOXMtLjIwNS0xLjIwMS0uNjE1LTEuNjQzYy0uNDEtLjQ1OC0xLjA2NS0uOTY0LTEuOTY1LTEuNTItLjU2OC0uMzYtMS4wOC0uNzQ0LTEuNTM4LTEuMTUzYTUuMTM0IDUuMTM0IDAgMDEtMS4wODktMS40NDdjLS4yNjgtLjU1Ni0uNDAyLTEuMjE4LS40MDItMS45ODYgMC0xLjA2My4yNDQtMS45NzguNzM0LTIuNzQ3QTQuOTQyIDQuOTQyIDAgMDE4Ljc4IDEuNjM4QzkuNjMzIDEuMjEzIDEwLjU4OCAxIDExLjY0NSAxYy44ODQgMCAxLjY3My4wOTggMi4zNjcuMjk0LjY5NC4xOCAxLjM1Ny40NDIgMS45ODguNzg1bC0uOTQ3IDIuMTM0YTkuMzE4IDkuMzE4IDAgMDAtMS42MS0uNjM4IDUuNjEgNS42MSAwIDAwLTEuNzk4LS4yOTRjLS44NjggMC0xLjU3OC4yMzctMi4xMy43MS0uNTUyLjQ3NS0uODI5IDEuMTI5LS44MjkgMS45NjMgMCAuNzE5LjE5IDEuMjc1LjU2OCAxLjY2Ny4zOTUuMzc2Ljk3LjgxIDEuNzI4IDEuMy42NjMuNDI1IDEuMjM5Ljg1OCAxLjcyOCAxLjMuNDkuNDI1Ljg2LjkxNSAxLjExMiAxLjQ3MS4yNjkuNTQuNDAzIDEuMTk0LjQwMyAxLjk2MiAwIDEuMTc3LS4yNjggMi4xNjYtLjgwNSAyLjk2Ny0uNTIuNzg1LTEuMjU0IDEuMzgyLTIuMjAxIDEuNzlDMTAuMjg4IDE4LjgwNCA5LjIxNSAxOSA4IDE5WiIvPicsIGthICc8cGF0aCBkPSJNMTAuNSAxOWMtMS4wOCAwLTIuMS0uMjItMi45My0uNjVhNC45IDQuOSAwIDAxLTEuOTEtMS43NiA0Ljc3IDQuNzcgMCAwMS0uNjYtMi41YzAtLjQyLjA0LS44Mi4xMS0xLjJBNC41MyA0LjUzIDAgMDE1LjQgMTJoMi4zYTUuOTIgNS45MiAwIDAwLS4zIDEuODQgMy44IDMuOCAwIDAwLjMyIDEuNTZjLjIxLjQ4LjU0Ljg3Ljk4IDEuMTcuNDYuMzEgMS4xLjQzIDEuNzkuNDMuNzEgMCAxLjIyLS4xMiAxLjY3LS40M2EyLjc0IDIuNzQgMCAwMDEtMS4yOWMuMjMtLjUyLjM1LTEuMTIuMzUtMS43OCAwLS43LS4xMy0xLjMzLS4zOS0xLjg5QTIuNyAyLjcgMCAwMDEyIDEwLjRhMy4wNSAzLjA1IDAgMDAtMS43Ny0uNEg5VjhoMS4zM2EzLjIgMy4yIDAgMDAxLjY0LS40N2MuNC0uMjUuNy0uNTcuODktLjk0YTIuOCAyLjggMCAwMC0uMDMtMi40NCAyLjMgMi4zIDAgMDAtLjg0LS45UzExLjUyIDMgMTEgM1YxYy45NiAwIDEuNDcuMTkgMi4yLjU2LjczLjM2IDEuMy44NSAxLjcgMS40N2EzLjQ5IDMuNDkgMCAwMS42NCAyLjAzYzAgLjk2LS4zIDEuNzctLjg4IDIuNDMtLjU4LjY0LTEuMiAxLjMtMi4xNiAxLjUxLjY0LjA5IDEuMDkuMiAxLjYzLjU4LjU2LjM4IDEuMDEuOSAxLjM1IDEuNTguMzUuNjYuNTIgMS40OS41MiAyLjQ4YTUuNCA1LjQgMCAwMS0uNyAyLjgxIDQuNjMgNC42MyAwIDAxLTEuOTQgMS44NyA1LjcgNS43IDAgMDEtMi44Ni42OFoiLz4nLCB1ciAnPHBhdGggZD0ibTguNSAxNiAuMzctMi4yOGMxLjM0IDAgMi41LS4wNCAzLjUtLjEyLjk5LS4wNyAxLjgtLjIgMi40NS0uMzRhMy41NCAzLjU0IDAgMDAxLjQzLS42MmMuMzMtLjI3LjQ5LS42LjQ5LS45OSAwLS40OC0uMDktMS4wNC0uMjUtMS42OGExNy43IDE3LjcgMCAwMC0uNjItMi4wMWwyLjEyLS42NmExOC43NiAxOC43NiAwIDAxLjg1IDIuOWMuMS40OS4xNi45NS4xNiAxLjM3YTMuOCAzLjggMCAwMS0uNTIgMi4wMyAzLjc5IDMuNzkgMCAwMS0xLjc0IDEuMzdjLS44LjM1LTEuODguNjEtMy4yNS43OC0xLjM3LjE3LTIuOTQuMjUtNC45OS4yNVptMCAwYy0xLjMgMC0yLjU3LS4xLTMuNS0uMjlhNi45IDYuOSAwIDAxLTIuMjYtLjgxYy0uNi0uMzYtMS4wMy0uOC0xLjMyLTEuMzJBMy42NCAzLjY0IDAgMDExIDExLjhhMTAuNzcgMTAuNzcgMCAwMS4zNS0yLjNsLjI5LTEuMDYgMi4wNS41LS4xOC43NGExNy45MiAxNy45MiAwIDAwLS4xNy43NyA0Ljg0IDQuODQgMCAwMC0uMDYuNzJjMCAuNTQuMTcgMSAuNSAxLjM5LjM1LjM5LjkzLjY4IDEuNzQuODcuODIuMiAxLjkyLjI5IDMuMzMuMjlsLjM5IDEuNjYtLjc0LjYyWm0zLjA2LTguNThhMS4yIDEuMiAwIDAxLS44Ni0uMzUgMS4yIDEuMiAwIDAxLS4zNC0uODUgMS4yIDEuMiAwIDAxLjM0LS44NWMuMjQtLjI1LjUyLS4zNy44Ni0uMzcuMzIgMCAuNi4xMi44My4zN2ExLjIgMS4yIDAgMDEuMzQuODUgMS4yIDEuMiAwIDAxLS4zNC44NSAxLjEzIDEuMTMgMCAwMS0uODQuMzVaTTguNDcgNy40YTEuMjIgMS4yMiAwIDAxLS44Ny0uMzUgMS4xNCAxLjE0IDAgMDEtLjM1LS44MyAxLjIgMS4yIDAgMDEuMzUtLjg1Yy4yMy0uMjUuNTItLjM3Ljg3LS4zNy4zMiAwIC42LjEyLjgzLjM3YTEuMiAxLjIgMCAwMS4zNS44NWMwIC4zMi0uMTIuNi0uMzUuODMtLjIzLjIzLS41LjM1LS44My4zNVoiLz4nOwpAY2R4LWljb24tam91cm5hbDogJzxwYXRoIGQ9Ik0yIDE4LjVBMS41IDEuNSAwIDAwMy41IDIwSDVWMEgzLjVBMS41IDEuNSAwIDAwMiAxLjV6TTYgMHYyMGgxMGEyIDIgMCAwMDItMlYyYTIgMiAwIDAwLTItMnptNyA4SDhWN2g1em0zLTJIOFY1aDh6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24ta2V5OiAnPHBhdGggZD0iTTE1IDZhMS41NCAxLjU0IDAgMDEtMS41LTEuNSAxLjUgMS41IDAgMDEzIDBBMS41NCAxLjU0IDAgMDExNSA2em0tMS41LTVBNS41NSA1LjU1IDAgMDA4IDYuNWE2LjgxIDYuODEgMCAwMC43IDIuOEwxIDE3djJoNHYtMmgydi0yaDJsMy4yLTMuMmE1Ljg1IDUuODUgMCAwMDEuMy4yQTUuNTUgNS41NSAwIDAwMTkgNi41IDUuNTUgNS41NSAwIDAwMTMuNSAxeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1rZXlib2FyZDogJzxwYXRoIGQ9Ik0wIDE1YTIgMiAwIDAwMiAyaDE2YTIgMiAwIDAwMi0yVjVhMiAyIDAgMDAtMi0ySDJhMiAyIDAgMDAtMiAyem05LTloMnYySDl6bTAgM2gydjJIOXpNNiA2aDJ2Mkg2em0wIDNoMnYySDZ6bS0xIDVIM3YtMmgyem0wLTNIM1Y5aDJ6bTAtM0gzVjZoMnptOSA2SDZ2LTJoOHptMC0zaC0yVjloMnptMC0zaC0yVjZoMnptMyA2aC0ydi0yaDJ6bTAtM2gtMlY5aDJ6bTAtM2gtMlY2aDJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxhYi1mbGFzazogJzxwYXRoIGQ9Ik0xMyA3LjYxVjNoMVYxSDZ2MmgxdjQuNjFsLTUuODYgOS44OEExIDEgMCAwMDIgMTloMTZhMSAxIDAgMDAuODYtMS41MXptLTQuMi44OGExIDEgMCAwMC4yLS42VjNoMnY0Ljg5YTEgMSAwIDAwLjE0LjUxbDIuMTQgMy42SDYuNzJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxhbmd1YWdlOiAnPHBhdGggZD0iTTIwIDE4aC0xLjQ0YS42MS42MSAwIDAxLS40LS4xMi44MS44MSAwIDAxLS4yMy0uMzFMMTcgMTVoLTVsLTEgMi41NGEuNzcuNzcgMCAwMS0uMjIuMy41OS41OSAwIDAxLS40LjE0SDlsNC41NS0xMS40N2gxLjg5em0tMy41My00LjMxTDE0Ljg5IDkuNWExMS42MiAxMS42MiAwIDAxLS4zOS0xLjI0cS0uMDkuMzctLjE5LjY5bC0uMTkuNTYtMS41OCA0LjE5em0tNi4zLTEuNThhMTMuNDMgMTMuNDMgMCAwMS0yLjkxLTEuNDEgMTEuNDYgMTEuNDYgMCAwMDIuODEtNS4zN0gxMlY0SDcuMzFhNCA0IDAgMDAtLjItLjU2QzYuODcgMi43OSA2LjYgMiA2LjYgMmwtMS40Ny41cy40Ljg5LjYgMS41SDB2MS4zM2gyLjE1QTExLjIzIDExLjIzIDAgMDA1IDEwLjdhMTcuMTkgMTcuMTkgMCAwMS01IDIuMXEuNTYuODIuODcgMS4zOGEyMy4yOCAyMy4yOCAwIDAwNS4yMi0yLjUxIDE1LjY0IDE1LjY0IDAgMDAzLjU2IDEuNzd6TTMuNjMgNS4zM2g0LjkxYTguMTEgOC4xMSAwIDAxLTIuNDUgNC40NSA5LjExIDkuMTEgMCAwMS0yLjQ2LTQuNDV6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxhcmdlci10ZXh0OiAnPHBhdGggZD0iTTE3LjY2IDE4aC0yYS44NS44NSAwIDAxLS41Ni0uMTcgMS4xMSAxLjExIDAgMDEtLjMyLS40M2wtMS4zMy0zLjUzaC02LjlMNS4yMiAxNy40YTEuMDYgMS4wNiAwIDAxLS4zMS40MS44My44MyAwIDAxLS41Ni4xOWgtMkw4LjY4IDJoMi42M3ptLTQuOTItNi0yLjItNS44NEExNi4xNyAxNi4xNyAwIDAxMTAgNC40M3EtLjEyLjUyLS4yNyAxdC0uMjcuNzdMNy4yNiAxMnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbGF5b3V0OiAnPHBhdGggZD0iTTggMTJWMUgxdjE4aDE4di03eiIvPjxwYXRoIGQ9Ik0xMSAxdjhoOFYxem02IDZoLTRWM2g0eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxpbms6ICc8cGF0aCBkPSJNNC44MyAxNWgyLjkxYTQuODggNC44OCAwIDAxLTEuNTUtMkg1YTMgMyAwIDExMC02aDNhMyAzIDAgMDEyLjgyIDRoMi4xYTQuODIgNC44MiAwIDAwLjA4LS44M3YtLjM0QTQuODMgNC44MyAwIDAwOC4xNyA1SDQuODNBNC44MyA0LjgzIDAgMDAwIDkuODN2LjM0QTQuODMgNC44MyAwIDAwNC44MyAxNXoiLz48cGF0aCBkPSJNMTUuMTcgNWgtMi45MWE0Ljg4IDQuODggMCAwMTEuNTUgMkgxNWEzIDMgMCAxMTAgNmgtM2EzIDMgMCAwMS0yLjgyLTRoLTIuMWE0LjgyIDQuODIgMCAwMC0uMDguODN2LjM0QTQuODMgNC44MyAwIDAwMTEuODMgMTVoMy4zNEE0LjgzIDQuODMgMCAwMDIwIDEwLjE3di0uMzRBNC44MyA0LjgzIDAgMDAxNS4xNyA1eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1saW5rLWV4dGVybmFsOiAnPHBhdGggZD0iTTE3IDE3SDNWM2g1VjFIM2EyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTVoLTJ6Ii8+PHBhdGggZD0ibTExIDEgMy4yOSAzLjI5LTUuNzMgNS43MyAxLjQyIDEuNDIgNS43My01LjczTDE5IDlWMXoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1saW5rLXNlY3VyZTogJzxwYXRoIGQ9Ik0xNi4wNyA4SDE1VjVzMC01LTUtNS01IDUtNSA1djNIMy45M0ExLjkzIDEuOTMgMCAwMDIgOS45M3Y4LjE1QTEuOTMgMS45MyAwIDAwMy45MyAyMGgxMi4xNEExLjkzIDEuOTMgMCAwMDE4IDE4LjA3VjkuOTNBMS45MyAxLjkzIDAgMDAxNi4wNyA4ek03IDUuNUM3IDQgNyAyIDEwIDJzMyAyIDMgMy41VjhIN3pNMTAgMTZhMiAyIDAgMTEyLTIgMiAyIDAgMDEtMiAyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1saXN0LWJ1bGxldDogJzxwYXRoIGQ9Ik03IDE1aDEydjJIN3ptMC02aDEydjJIN3ptMC02aDEydjJIN3oiLz48Y2lyY2xlIGN4PSIzIiBjeT0iNCIgcj0iMiIvPjxjaXJjbGUgY3g9IjMiIGN5PSIxMCIgcj0iMiIvPjxjaXJjbGUgY3g9IjMiIGN5PSIxNiIgcj0iMiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxpc3QtbnVtYmVyZWQ6ICc8cGF0aCBkPSJNNyAxNWgxMnYySDd6bTAtNmgxMnYySDd6bTAtNmgxMnYySDd6TTIgNmgxVjFIMXYxaDF6bTEgOXYxSDJ2MWgxdjFIMXYxaDN2LTVIMXYxek0xIDh2MWgydjFIMS41YS41LjUgMCAwMC0uNS41VjEzaDN2LTFIMnYtMWgxLjVhLjUuNSAwIDAwLjUtLjV2LTJhLjUuNSAwIDAwLS41LS41eiIvPicsICdmYWxzZScsICdmYWxzZScsICc8cGF0aCBkPSJNMiAxNWgxMXYySDJ6bTAtNmgxMXYySDJ6bTAtNmgxMXYySDJ6bTE1LTJoLTF2MWgxdjRoMVYxem0tMiAxMnYxaDJ2MWgtMXYxaDF2MWgtMnYxaDN2LTV6bTAtNnYxaDJ2MWgtMS41Yy0uMyAwLS41LjItLjUuNVYxMmgzdi0xaC0ydi0xaDEuNWMuMyAwIC41LS4yLjUtLjV2LTJjMC0uMy0uMi0uNS0uNS0uNXoiLz4nLCAnZmFsc2UnOwpAY2R4LWljb24tbGl0ZXJhbDogJzxwYXRoIGQ9Ik02IDNINVYxaDFjLjc2OCAwIDEuNDcuMjg5IDIgLjc2NEEyLjk4OSAyLjk4OSAwIDAxMTAgMWgxdjJoLTFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDF2MmgtMWMtLjc2OCAwLTEuNDctLjI4OS0yLS43NjRBMi45ODkgMi45ODkgMCAwMTYgMTlINXYtMmgxYTEgMSAwIDAwMS0xVjRhMSAxIDAgMDAtMS0xWm02IDEyaDZhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTZ2Mmg2djZoLTZ2MlptLTgtMnYySDJhMiAyIDAgMDEtMi0yVjdhMiAyIDAgMDEyLTJoMnYySDJ2NmgyWiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxvY2s6ICc8cGF0aCBkPSJNMTYuMDcgOEgxNVY1czAtNS01LTUtNSA1LTUgNXYzSDMuOTNBMS45MyAxLjkzIDAgMDAyIDkuOTN2OC4xNUExLjkzIDEuOTMgMCAwMDMuOTMgMjBoMTIuMTRBMS45MyAxLjkzIDAgMDAxOCAxOC4wN1Y5LjkzQTEuOTMgMS45MyAwIDAwMTYuMDcgOHpNMTAgMTZhMiAyIDAgMTEyLTIgMiAyIDAgMDEtMiAyem0zLThIN1Y1LjVDNyA0IDcgMiAxMCAyczMgMiAzIDMuNXoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbG9nLWluOiAnPHBhdGggZD0iTTEgMTF2NmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2Nmg4VjVsNC43NSA1TDkgMTV2LTRIMXoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1sb2ctb3V0OiAnPHBhdGggZD0iTTMgM2g4VjFIM2EyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJoOHYtMkgzeiIvPjxwYXRoIGQ9Ik0xMyA1djRINXYyaDh2NGw2LTV6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbG9nby1jLWM6ICc8cGF0aCBkPSJNMTAgMThhOCA4IDAgMTE4LTggOCA4IDAgMDEtOCA4em0wLTE4QTkuOTQgOS45NCAwIDAwMCAxMGE5Ljk0IDkuOTQgMCAwMDEwIDEwIDkuOTQgOS45NCAwIDAwMTAtMTBBOS45NCA5Ljk0IDAgMDAxMCAweiIvPjxwYXRoIGQ9Ik0xMy40OSAxMS42N2MtMSAwLTEuNDMtLjU3LTEuNDMtMS43MXMuNDMtMS43MSAxLjQzLTEuNzFjLjU3IDAgLjg2LjI5IDEuMTQuODZsMS4yOS0uNzFBMi44IDIuOCAwIDAwMTMuMiA3YTIuOTEgMi45MSAwIDAwLTIuMTQuODZBMi43IDIuNyAwIDAwMTAuMiAxMGEzIDMgMCAwMC44NiAyLjI5IDIuOTEgMi45MSAwIDAwMi4xNC44NiAzLjI0IDMuMjQgMCAwMDIuNzEtMS41N0wxNC42MyAxMWExLjQ2IDEuNDYgMCAwMS0xLjE0Ljcxem0tNiAwYy0xIDAtMS40My0uNTctMS40My0xLjcxcy40My0xLjcxIDEuNDMtMS43MWMuNTcgMCAuODYuMjkgMS4xNC44NmwxLjI5LS43MUEyLjggMi44IDAgMDA3LjIgN2EyLjkxIDIuOTEgMCAwMC0yLjE0Ljg2QTIuNyAyLjcgMCAwMDQuMiAxMGEzIDMgMCAwMC44NiAyLjI5IDIuOTEgMi45MSAwIDAwMi4xNC44NiAzLjI0IDMuMjQgMCAwMDIuNzEtMS41N0w4LjYzIDExYTEuNDYgMS40NiAwIDAxLTEuMTQuNzF6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxvZ28tbWVkaWEtd2lraTogJzxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwIDEwKSI+PGcgaWQ9ImNkeC1pY29uLWxvZ28tTWVkaWFXaWtpLWIiPjxwYXRoIGlkPSJjZHgtaWNvbi1sb2dvLU1lZGlhV2lraS1hIiBkPSJNMCAxMGMtMi45LTMuMy0uOC01LjkgMC01LjlTMi45IDYuNyAwIDEweiIvPjx1c2UgeGxpbms6aHJlZj0iJTIzY2R4LWljb24tbG9nby1NZWRpYVdpa2ktYSIgdHJhbnNmb3JtPSJyb3RhdGUoMTUpIi8+PHVzZSB4bGluazpocmVmPSIlMjNjZHgtaWNvbi1sb2dvLU1lZGlhV2lraS1hIiB0cmFuc2Zvcm09InJvdGF0ZSgzMCkiLz48dXNlIHhsaW5rOmhyZWY9IiUyM2NkeC1pY29uLWxvZ28tTWVkaWFXaWtpLWEiIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIvPjx1c2UgeGxpbms6aHJlZj0iJTIzY2R4LWljb24tbG9nby1NZWRpYVdpa2ktYSIgdHJhbnNmb3JtPSJyb3RhdGUoNjApIi8+PHVzZSB4bGluazpocmVmPSIlMjNjZHgtaWNvbi1sb2dvLU1lZGlhV2lraS1hIiB0cmFuc2Zvcm09InJvdGF0ZSg3NSkiLz48L2c+PHVzZSB4bGluazpocmVmPSIlMjNjZHgtaWNvbi1sb2dvLU1lZGlhV2lraS1iIiB0cmFuc2Zvcm09InJvdGF0ZSg5MCkiLz48dXNlIHhsaW5rOmhyZWY9IiUyM2NkeC1pY29uLWxvZ28tTWVkaWFXaWtpLWIiIHRyYW5zZm9ybT0icm90YXRlKDE4MCkiLz48dXNlIHhsaW5rOmhyZWY9IiUyM2NkeC1pY29uLWxvZ28tTWVkaWFXaWtpLWIiIHRyYW5zZm9ybT0icm90YXRlKDI3MCkiLz48L2c+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxvZ28tbWV0YS13aWtpOiAnPHBhdGggZD0iTTUuMzQ2IDEuMTVBOS45NjYgOS45NjYgMCAwMTkuOTkxIDBhOS45NjMgOS45NjMgMCAwMTQuNjUyIDEuMTQ2IDkuOTk3IDkuOTk3IDAgMDEzLjU4NSAzLjE4N2wtMS45MzIgMS4xMDhhNy43NzggNy43NzggMCAwMC0yLjc2Mi0yLjM3NSA3Ljc1MSA3Ljc1MSAwIDAwLTkuODM1IDIuMzc1TDEuNzY3IDQuMzMzQTEwIDEwIDAgMDE1LjM0NiAxLjE1Wm0tLjE5NyA0LjI5NEE2LjcwMSA2LjcwMSAwIDAxNy4wMzQgNC4wNGMtLjQxOS40MS0uNzg2Ljg2OS0xLjA5MyAxLjM2OC0uMjYzLjAzLS41MjguMDQyLS43OTIuMDM2Wm0yLjU2LTEuNjgzLS4wNDguMDAydi4wMTdsLjA0OC0uMDJabTAgMGE3LjE1NiA3LjE1NiAwIDAxMS42MjIuMTE4IDYuNDcgNi40NyAwIDAwLjUyNy0uNTU0IDYuNjA4IDYuNjA4IDAgMDAtMi4xNS40MzZabS0xLjE4IDEuNTQ0Yy4yMzQtLjMzMi40OTctLjY0My43ODctLjkyN2wuMjYuNjAzYy0uMzQuMTQtLjY5LjI0OC0xLjA0Ny4zMjRabTEuMTk3LTEuMUw3LjcyNCA0LjJ2LjAwNmguMDAyWm0wIDAgLjI1NS41OTRjLjMxMi0uMTYuNjEtLjM0NS44OTItLjU1NGE2LjYyMiA2LjYyMiAwIDAwLTEuMTQ3LS4wNFptMi4xMjctLjIwN2E2Ljg4IDYuODggMCAwMC41Ny0uNjQ4di4wMDZhNi43MjEgNi43MjEgMCAwMTIuOTk5LjkyMiA5LjQ5IDkuNDkgMCAwMS0uODA5IDEuMTQ0IDcuMTk3IDcuMTk3IDAgMDAtMi43Ni0xLjQyNFpNMy40NjIgOC43MTFhNi43NDYgNi43NDYgMCAwMTEuMzE3LTIuODQ0di4wMDZjLjI5Ny4wMi41OTYuMDIuODk0IDBhNy4yNDEgNy4yNDEgMCAwMC0uODA5IDMuMDA0IDkuODkgOS44OSAwIDAxLTEuNDAyLS4xNjZabTYuMDAyLTQuMzUuMDA4LS4wMDYtLjAxMS4wMDZoLjAwM1ptMCAwYTYuNTI0IDYuNTI0IDAgMDEtMS4yOTUuODQ1bDEuMTkgMi43NjhhOS40NTEgOS40NTEgMCAwMDIuOTY0LTIuMjE1IDYuNzQyIDYuNzQyIDAgMDAtMi44NTktMS4zOTdabS0zLjI1MiAxLjQ2LjAwMi0uMDA0LS4wMS4wMDYuMDA4LS4wMDFabTAgMGE2Ljc5NiA2Ljc5NiAwIDAwLS45MTQgMy4wNyA5LjQ5IDkuNDkgMCAwMDMuNjM1LS43NDVsLTEuMTktMi43NTJhNi41NTcgNi41NTcgMCAwMS0xLjUzMS40MjhabTcuNTc3LTEuMjkuMDA1LS4wMS0uMDEuMDA2LjAwNS4wMDRabTAgMGE5LjY5NiA5LjY5NiAwIDAxLS44NDUgMS4xODcgNy4wODkgNy4wODkgMCAwMTEuODM5IDIuODc3Yy40NDgtLjQ2Ljg2Mi0uOTU0IDEuMjM3LTEuNDc2YTYuNjE3IDYuNjE3IDAgMDAtMi4yMzEtMi41ODhaTTMuNCA5LjE1NmwuMDAxLS4wMDctLjAxLjAwNS4wMS4wMDJabTAgMGE2LjY2NCA2LjY2NCAwIDAwLjQ0IDMuMzk4Yy42MzcuMDcgMS4yNzguMDk0IDEuOTE5LjA3MmE2Ljc3OSA2Ljc3OSAwIDAxLS4zMDQtLjYyIDcuMDIzIDcuMDIzIDAgMDEtLjU4NS0yLjY4MyAxMC4wMyAxMC4wMyAwIDAxLTEuNDctLjE2N1ptOS4yNDctMy4wOTUuMDA3LS4wMDgtLjAxLjAwNS4wMDMuMDAzWm0wIDBhOS45NCA5Ljk0IDAgMDEtMy4xMSAyLjMwN2wxLjMxIDMuMDMyYTEzLjI0OCAxMy4yNDggMCAwMDMuNTg4LTIuNDQgNy4wNyA3LjA3IDAgMDAtLjI3Ni0uNzQyIDYuNjE0IDYuNjE0IDAgMDAtMS41MTItMi4xNTdaTTUuODUgMTEuODI2YTYuNjYzIDYuNjYzIDAgMDEtLjU1Mi0yLjQ5MiA5LjkxMiA5LjkxMiAwIDAwMy44Mi0uOGwxLjMxMiAzLjA0NmMtMS4zMzEuNTY3LTIuNzQ2LjkxLTQuMTg4IDEuMDE2YTYuNDg4IDYuNDg4IDAgMDEtLjM5Mi0uNzdaTTE0LjkxMyA5LjFjLjQ2Ni0uNDY2Ljg5OS0uOTY1IDEuMjk0LTEuNDkzaC4wMDNhNi42MiA2LjYyIDAgMDEuMzM3IDMuNjkxYy0uNTE1LjQ4Ny0xLjA2Ljk0LTEuNjM1IDEuMzU0YTcuMTAxIDcuMTAxIDAgMDAwLTMuNTUyWm0tOC4zNjUgNi42NWE2LjYzNyA2LjYzNyAwIDAxLTIuNTEtMi43MjFjLjY1NS4wNiAxLjMxMy4wNzMgMS45Ny4wMzhhNy4wOTIgNy4wOTIgMCAwMDIuNjAyIDIuMzg1Yy0uNjguMTQ0LTEuMzY5LjI0NC0yLjA2Mi4yOTlabTQuNDY3LTMuOTRhMTMuNjMzIDEzLjYzMyAwIDAwMy41My0yLjM1MyA2LjcxMiA2LjcxMiAwIDAxLS4yMTUgMy42MDJjLS43MTQuNDczLTEuNDYzLjg4OC0yLjI0MiAxLjI0NGwtMS4wNzMtMi40OTNabS0xLjczNyAzLjQ4NGE2LjY1IDYuNjUgMCAwMS0yLjc2LTIuMjY1IDEzLjQ5NCAxMy40OTQgMCAwMDQuMDc3LTEuMDQxbDEuMDc0IDIuNDkyYy0uNzc1LjMzMi0xLjU3NC42MDQtMi4zOS44MTRabTUuNDA1LTEuOTM4YTE2LjQ0IDE2LjQ0IDAgMDAxLjY1Ny0xLjI2OSA2LjY2MyA2LjY2MyAwIDAxLTMuMzkzIDMuOTQzIDcuMTg0IDcuMTg0IDAgMDAxLjczNi0yLjY3NVptLTQuOTA2IDMuMzY4YTYuNjI3IDYuNjI3IDAgMDEtMi41MjgtLjU5MWwuMDA2LS4wMDlhMTYuODY4IDE2Ljg2OCAwIDAwMi4wMDEtLjM1NyA3LjE3NyA3LjE3NyAwIDAwMy4wODEuNTMyIDYuNjI2IDYuNjI2IDAgMDEtMi41Ni40MjVabTIuNDgzLTIuMDA2Yy42MS0uMjc3IDEuMjAzLS41OTIgMS43NzUtLjk0MmwuMDA1LS4wMDhhNi43NzcgNi43NzcgMCAwMS0xLjM2MyAxLjkxNmwtLjQxNy0uOTY2Wm0uMDA1IDEuMTM4YTYuNjc4IDYuNjc4IDAgMDEtMi4yNzQtLjI5NmMuNjMtLjE4OSAxLjI1LS40MTIgMS44NTUtLjY3bC40Mi45NjZaTS43MTUgNi4zMDJhMTAuMDYyIDEwLjA2MiAwIDAwLjcwNCA4Ljg3OSAxMC4wMiAxMC4wMiAwIDAwMy4xNzIgMy4yODZBOS45ODQgOS45ODQgMCAwMDguODg2IDIwdi0yLjI0OGE3Ljc3MSA3Ljc3MSAwIDAxLTUuNTQyLTMuNjg2IDcuODI1IDcuODI1IDAgMDEtLjY4My02LjYzNEwuNzE1IDYuMzAyWm0xNi42MTkgMS4xMyAxLjk1MS0xLjEzYTEwLjA2MyAxMC4wNjMgMCAwMS0uNzA0IDguODggMTAuMDIxIDEwLjAyMSAwIDAxLTMuMTczIDMuMjg2QTkuOTg1IDkuOTg1IDAgMDExMS4xMTIgMjB2LTIuMjQ4YTcuNzYzIDcuNzYzIDAgMDA1LjU0NC0zLjY4NCA3LjgxNyA3LjgxNyAwIDAwLjY3OC02LjYzNloiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbG9nby13aWtpYm9va3M6ICc8cGF0aCBkPSJNMTQuMjIyLjAzYy0xLjgxMiAxLjc1My0zLjYwNCAzLjQ5LTMuNjA0IDMuNDlsLjY0NCAxLjMxYy44NzMtLjg2NCAxLjc1LTEuNjI1IDIuNTg3LTIuNDcyIDEuNzYyIDMuODY5IDIuOTYzIDYuOTg3IDQuNDQgMTEuMTA5LjQ4MyAxLjMzOS4zODQgMS4zOTktLjc3MSAyLjEyMi0xLjg1Ny45MjMtMi40NDUgMS41My00LjY1OCAzLjg4NGgxLjUxNWMxLjg1LTEuNjczIDIuNTM2LTIuMjYzIDQuODUzLTMuNDg0LjgyLS40NzMuOTMyLTEuMDcuNTk2LTJDMTguNzQgMTAuOTc3IDE2LjM5IDQuNDg0IDE0LjIyMi4wM1oiLz48cGF0aCBkPSJNOS40OTguMDcxQzguMTcyLjk2NiA3LjE0OSAyLjI1NCA1Ljk5NiAzLjM1OGwuNDczIDEuNTA4Yy45MDMtLjcxIDEuNjg4LTEuNTY5IDIuNS0yLjM4bDQuMzc2IDEwLjk3N2MuMjUyLjc0My0uMTQ1IDEuNDA1LS45NDQgMi4xMjUtLjk1Ni43NjktMi45MjUgMi41Ni0zLjgxOCAzLjkyNmgxLjM1OGMxLjQyNi0xLjQ2NCAxLjY4My0xLjY2MyAzLjMwNi0zLjA2OCAxLjA5LTEuMTEyIDIuMDc0LTEuNjgxIDEuNTYtMy4xMDZMOS40OTcuMDcxWiIvPjxwYXRoIGQ9Ik01LjAyMyAwQzQuNjcuMTIgNC4zNzYuMzQ3IDQuMS41ODhhODc5LjUgODc5LjUgMCAwMC0zLjg4OSAzLjc1Yy0uMTk2LjE4Mi0uMjEzLjQ1LS4yMS43MThMLjAxNyA2LjU3UzEuNzQzIDQuODkyIDQuMzIgMi40MWMxLjM5IDMuNjE1IDIuODM3IDcuMjEgNC4yNjMgMTAuODEzLjE5NS41NDQtLjI3Mi45OS0uODY0IDEuNTg1LS44MTguNzk4LTIuNTMgMi40NC00LjI4MSA0LjYzNWgxLjc1Nmw0LjIyLTQuNjI5Yy40MDItLjU1Mi45LTEuMDkxLjY5LTEuNTkxTDUuMDI0IDBaIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxvZ28td2lraWRhdGE6ICc8cGF0aCBkPSJNMCA0djEyLjI1OGguNzQyVjR6bTEuNDgyIDB2MTIuMjU4aDIuMjIzVjR6bTIuOTYgMHYxMi4yNThINi42N1Y0em0yLjk2NCAwdjEyLjI1OGguNzQ0VjR6bTEuNDggMHYxMi4yNThoLjc0NVY0em0xLjQ4MyAwdjEyLjI1OGgyLjIyNFY0em0yLjk2MiAwdjEyLjI1OGguNzQyVjR6bTEuNDgyIDB2MTIuMjU4aDIuMjIzVjR6bTIuOTYgMHYxMi4yNThoLjc0NFY0em0xLjQ4NCAwdjEyLjI1OEgyMFY0eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1sb2dvLXdpa2lmdW5jdGlvbnM6ICc8cGF0aCBkPSJNMTUuNzUyIDcuMDZjLS4xNjUgMC0uMzUyLjAxLS41Ni4wMy0uMTc1LjAyLS4zNTIuMDMtLjUyOC4wMzItLjE0NSAwLS4zMjUtLjAxLS41NC0uMDMyYTcuNjMxIDcuNjMxIDAgMDAtLjYtLjAzYy0uMDYzIDAtLjA5NC4wNDctLjA5NC4xNDQgMCAuMDk4LjAyLjE0NS4wNjIuMTQ1LjQ2NC4wMjEuNjk3LjIuNjk3LjUzOC0uMDA0LjE2LS4wNC4zMTgtLjEwNC40NjVsLTEuNDE1IDMuMjg0LjIzLjUxNSAxLjY3Mi0zLjc1OGMuMTc1LS4zOTMuMzQtLjY2LjUwMy0uNzk4LjE3OC0uMTQ2LjM5Ny0uMjMzLjYyNy0uMjQ2YS4xMS4xMSAwIDAwLjA4Ny0uMDUyLjE4OC4xODggMCAwMC4wNC0uMTE0Yy0uMDAzLS4wODMtLjAyOC0uMTI0LS4wNzctLjEyNFptLTUuMDM4LjI4OWMuNDY1LjAyMi42OTcuMTkuNjk3LjUwNmExLjExNyAxLjExNyAwIDAxLS4xNTYuNDk3bC0uMDI4LjA1My4yMy41MTYuMjg2LS41MjhjLjI0NS0uNDI3LjQ0OC0uNzAxLjYxLS44MjIuMTkzLS4xMy40MTgtLjIwNy42NS0uMjIyLjA3NiAwIC4xMTUtLjA1Ni4xMTUtLjE2NiAwLS4wODctLjAyMS0uMTI0LS4wNjItLjEyNC0uMTc0IDAtLjM5Ni4wMTItLjY1OS4wMzZhNi4yNDYgNi4yNDYgMCAwMS0uNDcuMDI3Yy0uMTUgMC0uMzQtLjAxLS41NzEtLjAzMmE4LjA3NSA4LjA3NSAwIDAwLS42MS0uMDNjLS4wMiAwLS4wNDEuMDE1LS4wNjIuMDQ2YS4xNzMuMTczIDAgMDAtLjAzMS4wOThjLS4wMDIuMDk1LjAxOS4xNDUuMDYxLjE0NVpNOC4wNyAxMS42MjUgNi41NiA4LjIyOGEuODAzLjgwMyAwIDAxLS4wODctLjMxLjQ3LjQ3IDAgMDEuMi0uMzk0Yy4xNjMtLjEwOC4zNTMtLjE2OS41NDgtLjE3NC4wMzQgMCAuMDUxLS4wNDcuMDUxLS4xNDQgMC0uMDk2LS4wMjgtLjE0NS0uMDg3LS4xNDUtLjIzIDAtLjQ5Ny4wMS0uNzk4LjAzYTcuNjQ4IDcuNjQ4IDAgMDEtMS40MSAwIDkuNjYgOS42NiAwIDAwLS43MjctLjAzYy0uMDU0IDAtLjA4Ny4wNDgtLjA4Ny4xNDUgMCAuMDM3LjAxMy4wNzIuMDM3LjFhLjEwMy4xMDMgMCAwMC4wNzguMDQ0Yy4yNzIuMDE3LjUzMi4xMTEuNzUxLjI3Mi4xOC4xNDYuMzUxLjQwNC41MTMuNzczbDEuOTEgNC4zNjguNjE2LTEuMTM4WiIvPjxwYXRoIGQ9Ik0xMS45NzkgMTQuMzEyYS4xMzguMTM4IDAgMDAuMTI1LjA4N2gxLjEzN2EuMTM0LjEzNCAwIDAwLjEyMi0uMTlsLTIuNzc3LTYuMjE1YTEuNjcgMS42NyAwIDAwLS4zNTgtLjUwNiAxLjQxMyAxLjQxMyAwIDAwLS41NTItLjMxNCAyLjk2OCAyLjk2OCAwIDAwLS44NzgtLjExYy0uMzQ3IDAtLjY5Mi4wNS0xLjAyNS4xNDhhLjEzNS4xMzUgMCAwMC0uMDkyLjE1bC4xNi45NjNhLjEzMi4xMzIgMCAwMC4xMy4xMTIuMTUuMTUgMCAwMC4wNDMtLjAwOGMuMTgtLjA2LjM3LS4wODkuNTYtLjA4Ny4xNC0uMDA0LjI4LjAxNC40MTQuMDU1YS42OC42OCAwIDAxLjI2OS4xNjIuODc3Ljg3NyAwIDAxLjE3NC4yNmMuMDQ4LjEwMi4wOTguMjIuMTUxLjM0OGwuMTEzLjI4NC0yLjUzNiA0Ljc2NWEuMTM1LjEzNSAwIDAwLjEyNi4xODJIOC42M2EuMTMzLjEzMyAwIDAwLjEyMi0uMDhsLjAwOC0uMDE1IDEuNzA3LTMuMTQ4IDEuNTEzIDMuMTU3Wk0zLjc1MiA1LjIwOGE3Ljg1NSA3Ljg1NSAwIDAxNi4yMjUtMy4wODVBNy44NzUgNy44NzUgMCAwMTE2LjIyIDUuMTdsMS43Ny0xLjE4NmExMC4wMDkgMTAuMDA5IDAgMDAtMTYuMDI3LjA2NGwxLjc5IDEuMTZaIi8+PHBhdGggZD0iTTE3LjI4OCA3LjAxYTcuOCA3LjggMCAwMS41ODUgMi45NjVjMCA0LjMzMS0zLjUzMSA3LjkwMy03Ljg3MyA3LjkwMy00LjM0MSAwLTcuODcxLTMuNTcyLTcuODcxLTcuOTAzLS4wMDEtMSAuMTkxLTEuOTkzLjU2Ny0yLjkyTC44ODMgNS44OGE5Ljg4NiA5Ljg4NiAwIDAwLS44ODIgNC4wOTVDMCAxNS40NzcgNC40ODcgMjAgMTAgMjBjNS41MTMgMCAxMC00LjUyMyAxMC0xMC4wMjVhOS45IDkuOSAwIDAwLS45MTctNC4xN0wxNy4yODggNy4wMVoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbG9nby13aWtpbWVkaWE6ICc8cGF0aCBkPSJNNi4wOCA1LjU1NWE2LjA0OCA2LjA0OCAwIDAwMy4wNTUgMTAuNTkzdi03LjU0TDYuMDggNS41NTZ6bTcuODI4LjAwNC0zLjA1IDMuMDV2Ny41MzZhNi4wNDggNi4wNDggMCAwMDMuMDUtMTAuNTg3eiIvPjxwYXRoIGQ9Ik0zLjQxNCAyLjg5QzEuNDI0IDQuNjkuMTY0IDcuMjg3LjE2OCAxMC4xNzNjLjAwNyA1LjQwNiA0LjQyIDkuODA2IDkuODI4IDkuODA2IDUuNDA3IDAgOS44Mi00LjQgOS44MjgtOS44MDYuMDA0LTIuODg2LTEuMjU1LTUuNDgyLTMuMjQ2LTcuMjg1TDE0Ljg2NSA0LjZhNy4zNTUgNy4zNTUgMCAwMTIuNTI0IDUuNTY4Yy0uMDA3IDQuMDktMy4zIDcuMzc1LTcuMzk0IDcuMzc1UzIuNjEgMTQuMjYgMi42MDQgMTAuMTdhNy4zNTUgNy4zNTUgMCAwMTIuNTIzLTUuNTY4TDMuNDE0IDIuODl6Ii8+PGNpcmNsZSBjeD0iMTAiIGN5PSIzLjMyIiByPSIzLjMyIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxvZ28td2lraW1lZGlhLWNvbW1vbnM6ICc8cGF0aCBkPSJNMTMuMDkgNi4xOGEzLjY4IDMuNjggMCAwMS0yLjE4LTIuNTVjLjA5LjA5IDEuODIuOTEgMS44Mi45MUwxMCAwIDcuMjcgNC41NWwxLjgyLS45MWE1LjA4IDUuMDggMCAwMC41NSAxLjkxIDUuMTMgNS4xMyAwIDAwMiAyIDguODYgOC44NiAwIDAxMiAxLjE4bC0uNjQuNjMtLjQ1LS40NS0uMjYgMS41NCAxLjU0LS4yNi0uNDUtLjQ1LjYyLS42NWE1LjY5IDUuNjkgMCAwMTEuNDUgMy40NWgtLjkxdi0uNzNsLTEuMjYuOTEgMS4yNi45MXYtLjczaC45MUE1LjIxIDUuMjEgMCAwMTE0IDE2LjM2bC0uNjQtLjY0LjQ1LS40NS0xLjUzLS4yNy4yNiAxLjU0LjQ1LS40NS42NC42NGE1LjY5IDUuNjkgMCAwMS0zLjQ1IDEuNDV2LS45MWguNzNMMTAgMTZsLS45MSAxLjI3aC43M3YuOTFhNS4yMSA1LjIxIDAgMDEtMy40NS0xLjQ1bC42My0uNjQuNDUuNDUuMjctMS41NC0xLjU0LjI2LjQ1LjQ1LS42My42NWE1LjY5IDUuNjkgMCAwMS0xLjQ1LTMuNDVoLjkxdi43M2wxLjI2LS45MS0xLjI2LS45MXYuNzNoLS45MUE1LjIxIDUuMjEgMCAwMTYgOS4wOWwuNjQuNjQtLjQ1LjQ1IDEuNTQuMjYtLjI4LTEuNTMtLjQ1LjQ1LS42NC0uNjRMNSA3LjQ1YTcuMjkgNy4yOSAwIDEwOC4wOS0xLjI3eiIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTIuNyIgcj0iMi41Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLWxvZ28td2lraW1lZGlhLWRpc2NvdmVyeTogJzxwYXRoIGQ9Ik0xMiAxN2MwIDEuMS0yIDItMiAycy0yLS45LTItMm0yLTEwYTEuNTQgMS41NCAwIDAxLTEuNS0xLjUgMS41IDEuNSAwIDAxMyAwQTEuNTQgMS41NCAwIDAxMTAgN3ptMy4zIDQuN0MxNC4xIDcuOSAxMi43IDEgMTAgMVM1LjggNy43IDYuNiAxMS41TDUgMTVoMi43bC4zIDFoNGMuMi0uMy4xLS41LjMtMUgxNXoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbG9nby13aWtpbmV3czogJzxwYXRoIGQ9Ik0xNiAxMGE2IDYgMCAwMS02IDYgNiA2IDAgMDEtNi02IDYgNiAwIDAxNi02IDYgNiAwIDAxNiA2ek03LjU1IDguOTRhOS45NyA5Ljk3IDAgMDExLjMzLTMuODEgNSA1IDAgMDAtMy44NiA0LjQ1SDcuNWMwLS4yMi4wMy0uNDMuMDUtLjY0Wm0xIC4xMmE3Ljk2IDcuOTYgMCAwMC0uMDUuNTJoMy4wNmE3Ljk5IDcuOTkgMCAwMC0uMDUtLjUyIDkuMDkgOS4wOSAwIDAwLTEuNDgtMy44OSA5LjA3IDkuMDcgMCAwMC0xLjQ4IDMuOVptNC4wMS41MmgyLjQyYTUgNSAwIDAwLTMuNzktNC40NCA5Ljk5IDkuOTkgMCAwMTEuMzcgNC40NHptLTcuNTMgMWE1IDUgMCAwMDMuODcgNC4zIDkuMzcgOS4zNyAwIDAxLTEuNC00LjN6bTUgNC4yMWMxLTEuNDcgMS40My0yLjkgMS41Mi00LjIxSDguNTJhOC41MyA4LjUzIDAgMDAxLjUyIDQuMjF6bTEuMTQuMDdhNSA1IDAgMDAzLjgtNC4yOGgtMi40MWE5LjM1IDkuMzUgMCAwMS0xLjM5IDQuMjh6TTMuMDcgNmE3Ljk3IDcuOTcgMCAwMDAgOGgxLjE4QTYuOTYgNi45NiAwIDAxMyAxMGMwLTEuNDkuNDYtMi44NyAxLjI1LTRabTEyLjY4IDBoMS4xOGE3Ljk3IDcuOTcgMCAwMTAgOGgtMS4xOEE2Ljk2IDYuOTYgMCAwMDE3IDEwYzAtMS40OS0uNDYtMi44Ny0xLjI1LTRabTIuNzQgN2gxLjA1YTkuOSA5LjkgMCAwMDAtNmgtMS4wNWE5LjA0IDkuMDQgMCAwMTAgNnpNLjQ2IDEzaDEuMDVhOS4wNCA5LjA0IDAgMDEwLTZILjQ2YTkuOSA5LjkgMCAwMDAgNnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbG9nby13aWtpcGVkaWE6ICc8cGF0aCBkPSJNMTEuMTQgNEgxNGEuNjkuNjkgMCAwMTAgLjY1Yy0xIC4xNi0xLjM2LjkxLTEuODEgMS44M2wtMS40IDIuNzUgMi4zNSA1LjIxaC4wN2wzLjUyLTguMWMuNDQtMS4wNy40LTEuNTktLjc5LTEuN2EuNjguNjggMCAwMTAtLjY1aDMuNDVhLjY4LjY4IDAgMDEwIC42NWMtMS4yMS4xNi0xLjQyLjkxLTEuODEgMS44M2wtNC4zNyAxMC4wOGMtLjEzLjMtLjI0LjQ1LS40NC40NXMtLjMzLS4xNi0uNDItLjQ1bC0yLjQ4LTUuNzMtMi43MiA1LjczYy0uMTEuMy0uMjQuNDUtLjQ0LjQ1cy0uMzEtLjE2LS40Mi0uNDVsLTQtMTAuMDljLS41Ny0xLjQtLjYtMS43LTEuNjUtMS44QS42OC42OCAwIDAxLjYyIDRoMy45MWEuNjguNjggMCAwMTAgLjY1Yy0xLjE2LjEzLTEuMjEuNDUtLjc0IDEuNThsMy40MSA4LjE5aC4wNUw5LjMgMTAgNy43OCA2LjQ1QzcuMTcgNS4wNSA3IDQuNzcgNi4yNCA0LjY2YS42OS42OSAwIDAxMC0uNjVoMy4zMmEuNjguNjggMCAwMTAgLjY1Yy0uNzQuMTItLjcuNDUtLjE5IDEuNThsLjg3IDIgLjA4LjA5IDEtMmMuNTctMS4xNC42NC0xLjU4LS4xNS0xLjdhLjY5LjY5IDAgMDEtLjAzLS42M3oiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbG9nby13aWtpcXVvdGU6ICc8cGF0aCBkPSJNOS4xMzMgNC42NDNhNi41MjEgNi41MjEgMCAwMTIuNzkgNS4zNTQgNi41MiA2LjUyIDAgMDEtMi42NzIgNS4yNjlsLS4xMi4wODYtLjkyMy0xLjMyMmE0LjkwOCA0LjkwOCAwIDAwMi4xMDMtNC4wMzNjMC0xLjU3OC0uNzQ4LTMuMDMtMS45ODgtMy45NWwtLjExNC0uMDgyLjkyNC0xLjMyMloiLz48cGF0aCBkPSJNNS4zNDcgMTMuMjc1YTMuMzQ3IDMuMzQ3IDAgMTAtLjAwMS02LjY5NSAzLjM0NyAzLjM0NyAwIDAwLjAwMSA2LjY5NVpNMTMuODc0IDBhMTMuMDgyIDEzLjA4MiAwIDAxNC42MjcgOS45OTdjMCAzLjg2LTEuNjc4IDcuNDQ4LTQuNTM4IDkuOTJsLS4wOTYuMDgzLTEuMTUtMS4zNTdhMTEuMzAzIDExLjMwMyAwIDAwNC4wMDYtOC42NDZjMC0zLjMzLTEuNDQ0LTYuNDI0LTMuOTA4LTguNTYybC0uMDkxLS4wNzlMMTMuODczIDBaIi8+PHBhdGggZD0iTTExLjQ1MyAyLjM4NmE5LjcxIDkuNzEgMCAwMTMuNjY4IDcuNjExIDkuNzEgOS43MSAwIDAxLTMuNTc2IDcuNTM3bC0uMDkuMDczLTEuMDc0LTEuMzQ3QTcuOTg4IDcuOTg4IDAgMDAxMy40IDkuOTk3YTcuOTg3IDcuOTg3IDAgMDAtMi45MzItNi4xOTRsLS4wODctLjA3IDEuMDczLTEuMzQ3WiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1sb2dvLXdpa2lzb3VyY2U6ICc8cGF0aCBkPSJNOS45NCAwYTEwIDEwIDAgMDAtOC4wOCA0LjJoNC4yMWMuMDYtLjM1LjE2LS43Mi40OS0xLjA0LjItLjIzLjY3LS4yIDEtLjI2LjMzLS4wNy44Ny0uOTIgMS40LTEuMTcuNjQuMzMgMS4zNC44MyAxLjcgMS4wOC42Mi0uNDkgMS4xNi0xLjMzIDEuNC0uNjUuMi0uMzMuNTMtLjU0LjktLjYzLjE3LS4wNC40LS4wMy41Mi0uMDUuMTQtLjA2LjQyLS4yNy42Ni0uMzQtLjM4LjU4LS40MyAyLjI1LS40NCAzLjA2di4zNWMuNTUuMTIgMS4yNS4wMyAxLjQ5LS4zNWgyLjk1QTkuOTkgOS45OSAwIDAwMTAgMGgtLjA2em0tLjM2IDIuNWMuMTcuNDcuMzEuOTQuMjYgMS40LS4wNi4zLjA3LjI4LjMxLjE2LjI0LS4xMi4zNi0uMjYuNzItLjM3LjI3LS4wNy4wOC0uMjYtLjA1LS40LS40LS4zNC0uODItLjU2LTEuMjQtLjh6bS04LjMgMi42QTkuOTUgOS45NSAwIDAwMCAxMGExMCAxMCAwIDAwMjAgMCA5Ljk0IDkuOTQgMCAwMC0xLjI4LTQuOUgyLjhjLjUyIDEuMS44MSAxLjcgMi42IDEuNDYuNjItLjEgMS0uMTYgMSAuNDguMDguMzkuMzguNTIgMS4xNS4zOC4zLS4xMS41Ny0uMjguNzktLjE0aC4wMmEuMS4xIDAgMDEwIC4wMS4wNC4wNCAwIDAxLjAxLjAyYzAgLjEtLjE5LjMxLjA0LjU3LjU3LjU1IDEuMTIgMS4wNCAxLjcgMS42LjEzLjY0LjcuNTUgMS4xNS40Mi42OC0uMi4zOC4xLjYzLjQxLjE0LjIyLjQ2LjgxLjg0LjYuMDEgMS4wOC4yOCAxLjg1Ljg0IDIuMjctLjE3LjYzLS4zMyAxLjUtLjAzIDIuMDItLjUtLjE2LS4zLjgxLS40NSAxLjIyLS4yNi42OC0uNDguNjUtLjcyLjcxLjIyLjI0LjUuNDkuOTIuNjR2LjAxbC4wMi4wMWMwIC4yMy4wNC40My4xOC41Ny0uMjYtLjA2LS41Ny0uNDItMS4wOC0uMTktLjU2LjI1LS42OC4wOC0uNDgtLjI5LjI2LS41Ny0uMy0uNzgtLjg4LS45MnYtLjIzYy4xMi0uMDQuMjYtLjA4LjQyLS4xLjI1LS4wNS40Mi0uMTQuNC0uNS0uMDEtLjUtLjAzLTEgMC0xLjQ4YTYuMDggNi4wOCAwIDAxLjE4LTEuMjFjLjA3LS4yLjQ0LS4zOC4xMy0uNjRBNDIuMDcgNDIuMDcgMCAwMDguMyA5LjNhLjQ3LjQ3IDAgMDAtLjA2LS4wMmwxLjY1IDIuOTNjLjIuNDkuNTggMS0uMSAxLjEzdi4wMWMtLjAzLjQ3LjA2IDEuMjgtLjI2IDEuNDQtLjM2LjI1LS4zOS40OC0uNDIuODYtLjA2LjQtLjA2Ljg2LjA2IDEuMTguMTIuMDUuMjQuMDguMzcuMWwuMzIuMDRjLS40My41Ni0uOTYuMzktMS4yNy0uMTNsLTEuNjctMi41OGMuMDgtMi41MS4xMy00LjItLjA1LTYuMy0uOTIuMDgtMS44NS4wMS0yLjgzLS41Ni0uMjItLjQtLjQ3LS4zNi0uODktLjI2LjA1LS4zNy0uMS0uNzMtLjMyLTEuMWwtLjEtLjkzSDEuMjl6bTE0LjUxIDEuMDNjMS42LS4wNCAxLjE0IDIuNzggMS4xNCA0LjE1aC4wMWwtLjEzLjctLjIgMS4yMWMuMDcuNi0uMDkuNjgtLjIgMS4wMiAwIDEuMzItLjE4IDEuNy0xLjI5IDIuN2EyLjE2IDIuMTYgMCAwMS0xLjE3LTIuMjVjLjA0LS4yNC4yLS41MS0uMDEtLjlhNy4zOSA3LjM5IDAgMDEuMTQtMy4zNS42NC42NCAwIDAxLjItLjAyLjYzLjYzIDAgMDAuNTctLjc0IDMuMzQgMy4zNCAwIDAwLjYtLjJjLS44MS0uNzYtLjUyLTIuMy4zNC0yLjMyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1sb2dvLXdpa2lzcGVjaWVzOiAnPGNpcmNsZSBjeD0iOS41IiBjeT0iMi41IiByPSIyLjUiLz48cGF0aCBkPSJNMTQuNDM0IDcuMzNhNi40MDcgNi40MDcgMCAwMTEuNjc3IDQuMzIyYzAgMy41ODItMi45NTEgNi40ODgtNi41OSA2LjQ4OC0zLjY0IDAtNi41OTUtMi45MDYtNi41OTUtNi40ODggMC0xLjY0My42MjQtMy4xNDEgMS42NDgtNC4yODRMMy4xMzggNS45NjdhOC4zNzQgOC4zNzQgMCAwMC0yLjEzNyA1LjU5MkMxIDE2LjIxOSA0LjgxIDIwIDkuNTAzIDIwczguNDk4LTMuNzggOC40OTgtOC40NDFhOC4zODMgOC4zODMgMCAwMC0yLjE1Mi01LjYxNVoiLz48cGF0aCBkPSJNNC4zNjggMy43NTQgNC4zNCA1LjUyNXMuMjIuOTMgMS43NSAxLjQxMWMxLjQ4Ny40NjggMy41ODEuMyA1LjA0OC45NjQgMS4yNzMuNTc1IDEuNzEgMS41MyAxLjcxIDEuNTNsLjAzLTEuNjZzLS4xMS0uODc2LTEuMjg1LTEuMjM5Yy0xLjE3Ni0uMzYyLTMuMTQxLS40OC01LjQyOC0xLjI2NS0xLjAyNS0uMzUyLTEuODEyLTEuNDg1LTEuNzk4LTEuNTEyWm0xLjY2NSAzLjc5OEw1Ljk3IDkuNXMuMTYuNDE1IDEuNTc4LjgyNmMuODQ4LjI0NiAzLjM2NC40NjcgNC42NjYuOTk4IDEuMTM5LjQ2NCAxLjY2NSAxLjU1NCAxLjY2NSAxLjU1NGwuMTItMS42MjNjLS4zNzYtLjkyLS44MS0xLjE0OC0yLjM0Mi0xLjU0NC0xLjA0NC0uMjctMi4yNC0uMzE4LTMuMTYzLS42MjUtMS44MTEtLjYwMy0yLjQ2LTEuNTMzLTIuNDYtMS41MzNaIi8+PHBhdGggZD0iTTE0LjQ5MiAzLjc0djEuNzM4cy0uMjQ0LjgwNy0xLjU1NiAxLjI5NWMtMS42OS42MjgtNC4yNzMuNTgzLTYuMDA0IDEuNTU2YTIuMDMzIDIuMDMzIDAgMDAtLjk2MiAxLjE2N2wuMDI3LTEuOTk5cy4zLS43NDMgMS44My0xLjIyYzEuOTY0LS42MTQgMy4yMS0uMzggNC45NjItMS4xMjggMS4xNC0uNDg3IDEuNzE2LTEuMzk1IDEuNzAzLTEuNDA5Wm0tOS42IDcuNDc0LS4wNjkgMS45MThzLjMwMS42MSAxLjE5Mi45OWMxLjcwMy43MjggMi45MDQuMTkzIDUuNDA1IDEuMzMyIDEuMTI5LjUxMyAxLjM5NSAxLjM2MiAxLjM5NSAxLjM2MmwtLjAwNi0xLjkyNnMtLjE0Ny0uNTktMS4yNDItLjk1M2MtMS4wOTUtLjM2Mi0zLjQ4OC0uNjA5LTUuMTEzLTEuMjItMS4xMTctLjQyLTEuNTc2LTEuNTE3LTEuNTYyLTEuNTAzWiIvPjxwYXRoIGQ9Im01Ljk4NCAxNi42Mi4wMjctMS44MzdzLjEyNi0uNTMgMS44My0xLjA3NGMxLjYwNi0uNTEyIDMuNjAyLS41MDIgNC41MzctLjg5LjkzNS0uMzkgMS42Mi0xLjU2NiAxLjYyLTEuNTY2bC0uMDA3IDEuOTVzLjA0OS42OTYtMS4zNzggMS4xNWMtMS44NTYuNTktMy4wMy4zOC00Ljg1OSAxLjA2NS0xLjAzNi4zODktMS43NDMgMS4yNDMtMS43NyAxLjIwM1ptNi44OTYtOC44NTEuMDIyIDEuNjc0cy0uMjYyLjQ5Mi0xLjQxNy45NmMtMS41NzMuNjQtMy4wMDMuMjc4LTUuMDA3IDEuMTMzLS43NDguMzE4LTEuNjU2IDEuNTk2LTEuNjU2IDEuNTk2bC4wNTMtMi4wMjZzLjUzOS0uODcgMS41MS0xLjIyYzIuMDgzLS43NTIgMi44NTgtLjIwMiA1LjAzNS0xLjEuNzM2LS4zMDUgMS40MzgtLjkzNCAxLjQ2LTEuMDE3WiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1sb2dvLXdpa2l2ZXJzaXR5OiAnPHBhdGggZD0iTTkuOTgyIDNjLS4yLjA0LS40NC4xOTYtLjY0MS40Ny0uMi4yMzQtLjM2MS41ODUtLjUyMS45NzZoMi4yODRjLS4xNi0uNDMtLjMyLS43NDItLjUyLS45NzctLjE2MS0uMjczLS40MDItLjQzLS42MDItLjQ2OVptLjcyMi4wNzljLjA4LjA3OC4xMi4xMTcuMTYuMTk1LjI0LjMxMi40NC43MDMuNjAxIDEuMTcyaDEuNjA0Yy0uNjQyLS43MDMtMS40NDMtMS4yMTEtMi4zNjUtMS4zNjdabS0xLjQ0NCAwYTQuMzY1IDQuMzY1IDAgMDAtMi4zNjUgMS40MDZIOC41Yy4xNi0uNDY5LjM2LS44OTkuNjAxLTEuMTcyYS42LjYgMCAwMS4xNi0uMjM0Wm0tMS4xNjIuMDM5YTYuMzQ2IDYuMzQ2IDAgMDAtMi4yODUgMS4zMjhoLjY4MmE1LjE2MyA1LjE2MyAwIDAxMS42MDMtMS4zMjhabTMuODQ4LjAzOWMuNjAxLjMxMiAxLjEyMy43NDIgMS42MDQgMS4zMjhoLjY4MWE2LjEyNCA2LjEyNCAwIDAwLTIuMjg1LTEuMzI4Wm0tNi40OTQgMS42NEE2LjA4IDYuMDggMCAwMDQuMjkgNi41OTZoMS4wNDJhNy41IDcuNSAwIDAxLjg4Mi0xLjc5N2gtLjc2MlptMS4xNjMgMGE3LjA4IDcuMDggMCAwMC0uOTYyIDEuNzk4aDIuMzY1Yy4wOC0uNTg2LjItMS4yMTEuNC0xLjc5N0g2LjYxNlptMi4xMjQgMGMtLjIuNTg3LS4zMiAxLjE3My0uNCAxLjc5OGgzLjMyN2E5LjY0OSA5LjY0OSAwIDAwLS40MDEtMS43OTdIOC43MzlabTIuODg3IDBjLjE2LjU4Ny4zMiAxLjE3My40IDEuNzk4aDIuMzI1YTUuNjEgNS42MSAwIDAwLS45NjItMS43OTdoLTEuNzYzWm0yLjE2NCAwYy40MDEuNTQ4LjY4MiAxLjEzNC44ODIgMS43OThoMS4wNDJjLS4yOC0uNjY0LS42ODEtMS4yNS0xLjE2Mi0xLjc5N2gtLjc2MlptLTkuNjIgMi4xMWE2LjA5MSA2LjA5MSAwIDAwLS4zNjEgMi4wNzJINC45N2MwLS43MDQuMDgtMS40MDcuMjgtMi4wNzFINC4xN1ptMS40MDMgMGE3LjE4IDcuMTggMCAwMC0uMjgxIDIuMDcyaDIuNTY2YzAtLjcwNC4wNC0xLjM2OC4xMi0yLjA3MUg1LjU3M1ptMi43MjUgMGMtLjA4LjcwNC0uMTIgMS4zNjgtLjEyIDIuMDcyaDMuNjQ4YzAtLjcwNC0uMDQtMS4zNjgtLjEyLTIuMDcxSDguMjk4Wm0zLjcyOCAwYy4wOC43MDQuMTIgMS4zNjguMTIgMi4wNzJoMi41NjZhNy4xOCA3LjE4IDAgMDAtLjI4LTIuMDcxaC0yLjQwNlptMi43MjYgMGMuMi42NjUuMjggMS4zNjguMjggMi4wNzJoMS4xNjNhNi4xIDYuMSAwIDAwLS4zNi0yLjA3MWgtMS4wODNaTTIwIDkuMzMySDB2LjY0NmgyMHYtLjY0NlptLTE2LjY0NSAxSC42ODV2Ni43MDdoMi42N3YtNi43MDdabTUuMzIxIDBINi4wMDV2Ni43MDdoMi42N3YtNi43MDdabTUuMzIgMGgtMi42N3Y2LjcwN2gyLjY3di02LjcwN1ptNS4zMjEgMGgtMi42NzF2Ni43MDdoMi42N3YtNi43MDdaTTIwIDE3LjM1NUgwVjE4aDIwdi0uNjQ1WiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1sb2dvLXdpa2l2b3lhZ2U6ICc8cGF0aCBkPSJNMTUuODc0IDguMTkgMjAgMGwtOC4yNTQgNC4wOTVjLjk5LjI2MyAxLjg5Mi43OCAyLjYxNyAxLjQ5OGE1Ljc4IDUuNzggMCAwMTEuNTEgMi41OTZabS02LjM0OSA0LjA0M0wxNC42NzggMjBsLjU2LTkuMjkxYTUuOTE2IDUuOTE2IDAgMDEtMi42NSAxLjUyMyA1Ljk1IDUuOTUgMCAwMS0zLjA2MyAwWm0tLjE1OS03LjUwOEwuMDAxIDUuMjhsNy44MjkgNS4xMTNhNS44MTMgNS44MTMgMCAwMTAtMy4wMzhjLjI3LS45OTUuOC0xLjkwMiAxLjUzNi0yLjYzWiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1sb2dvLXdpa3Rpb25hcnk6ICc8cGF0aCBkPSJNMi4yMiAxOC42di4wMWMtLjM1LS4yMS0uNjEtLjUtLjcxLS44NGwtLjA3LS4zN0wuMjEgMy4zNmMtLjAzLS40NS4xNy0uOS41Ny0xLjI1LjM5LS4zNi45Ny0uNiAxLjYyLS42NkwxNS4zNS4yMmEyLjgxIDIuODEgMCAwMTEuNy4zNSAxLjUgMS41IDAgMDEuNzcgMS4xM2wxLjIzIDE0LjEyYy4wMy40NS0uMTcuOS0uNTcgMS4yNWEyLjg1IDIuODUgMCAwMS0xLjYyLjY3TDMuOTIgMTguOTVhMi43NSAyLjc1IDAgMDEtMS43LS4zNVptLTEtMS4xYy4wMi4xOC4wNy4zNS4xNS41bC4wMi4yNWMuMDUuNTYuNCAxLjAzLjkgMS4zNC41MS4zIDEuMTkuNDYgMS45LjRsMTMuMzQtMS4yN2EzLjE1IDMuMTUgMCAwMDEuOC0uNzRjLjQ1LS40LjcxLS45My42Ni0xLjQ5TDE4LjczIDEuODdhMS43NyAxLjc3IDAgMDAtLjktMS4zMyAyLjkyIDIuOTIgMCAwMC0xLjI0LS40IDMuMjMgMy4yMyAwIDAwLTEuMjctLjEyTDIuNCAxLjIzYTMuMSAzLjEgMCAwMC0xLjc0LjcyYy0uNDQuMzktLjcuOS0uNjQgMS40NGwxLjIyIDE0LjF6bTEuMiAxLjlhMS42IDEuNiAwIDAxLS43OC0xIDIgMiAwIDAwLjQ3LjM5Yy40OS4zIDEuMTQuNDQgMS44NC4zOGwxMi45My0xLjIyYy43LS4wNiAxLjMxLS4zMyAxLjc0LS43Mi40NC0uMzguNy0uOS42NC0xLjQzTDE4LjA0IDEuNjlhMS42MiAxLjYyIDAgMDAtLjYyLTEuMTFjLjEuMDQuMi4wOS4yOS4xNS40Ni4yOC43Ni43LjggMS4xNmwxLjI2IDE0LjYyYy4wNC40OC0uMTguOTQtLjU5IDEuMy0uNC4zNy0xIC42My0xLjY3LjdMNC4xNyAxOS43NWEyLjkgMi45IDAgMDEtMS43Ni0uMzZaTTEuMjEgNS4zbDQuMzQtLjUuMDYuNDctLjI4LjA0Yy0uMjguMDMtLjQ4LjEyLS42LjI2YS41Ny41NyAwIDAwLS4xNS40NiAxMS44IDExLjggMCAwMC41MyAxLjMzbDIuOTEgNi4xMiAxLjE1LTUuNTYtLjgtMS42OGMtLjE2LS4yNy0uMzEtLjUtLjQ4LS43YS45Ny45NyAwIDAwLS4yOC0uMjMgMS40MiAxLjQyIDAgMDAtLjQyLS4xN2MtLjEtLjAyLS4yNS0uMDItLjQ4IDBsLS4wOC4wMi0uMDYtLjQ4IDQuNTYtLjUzLjA2LjQ4LS4zOC4wNGMtLjMuMDQtLjUuMTMtLjYuMjZhLjY3LjY3IDAgMDAtLjEzLjUzYzAgLjAyIDAgLjA2LjAzLjE1bC4xNS40IDMuMiA2Ljg0IDEuMzItNi40OGMuMTYtLjc1LjIyLTEuMjUuMTgtMS41MWEuNTcuNTcgMCAwMC0uMTQtLjMyLjU3LjU3IDAgMDAtLjMtLjE4Yy0uMi0uMDUtLjQ3LS4wNi0uOC0uMDJoLS4wOGwtLjA2LS40OCAzLjUzLS40LjA2LjQ4aC0uMDhjLS4yOS4wNC0uNS4xMi0uNjYuMjQtLjE1LjEyLS4zLjMzLS40Mi42NC0uMDguMi0uMi43LS4zNSAxLjVsLTIuMDEgOS45LS40NS4wNS0zLjQtNy4wNi0xLjYxIDcuNjQtLjQyLjA0LTQuNTYtOS40MmMtLjM0LS43LS41NS0xLjExLS42My0xLjIzYS45OS45OSAwIDAwLS40Ny0uNCAxLjYgMS42IDAgMDAtLjc2LS4wN2gtLjA4WiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1tYXA6ICc8cGF0aCBkPSJNMTMgMyA3IDEgMSAzdjE2bDYtMiA2IDIgNi0yVjF6TTcgMTQuODlsLTQgMS4zNlY0LjM1TDcgM3ptMTAgLjc1TDEzIDE3VjUuMWw0LTEuMzZ6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbWFwLXBpbjogJzxwYXRoIGQ9Ik0xMCAwYTcuNjUgNy42NSAwIDAwLTggOGMwIDIuNTIgMiA1IDMgNnM1IDYgNSA2IDQtNSA1LTYgMy0zLjQ4IDMtNmE3LjY1IDcuNjUgMCAwMC04LTh6bTAgMTEuMjVBMy4yNSAzLjI1IDAgMTExMy4yNSA4IDMuMjUgMy4yNSAwIDAxMTAgMTEuMjV6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW1hcC1waW4tYWRkOiAnPHBhdGggZD0iTTEwIDBhNy42NSA3LjY1IDAgMDAtOCA4YzAgMi41MiAyIDUgMyA2czUgNiA1IDYgNC01IDUtNiAzLTMuNDggMy02YTcuNjUgNy42NSAwIDAwLTgtOHptNSA5aC00djRIOVY5SDVWN2g0VjNoMnY0aDR6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW1hcC10cmFpbDogJzxwYXRoIGQ9Im0yMCA2LTEtMS0xLjUgMS41TDE2IDVsLTEgMSAxLjUgMS41TDE1IDlsMSAxIDEuNS0xLjVMMTkgMTBsMS0xLTEuNS0xLjV6Ii8+PGNpcmNsZSBjeD0iNy41IiBjeT0iMTQuNSIgcj0iMy41Ii8+PGNpcmNsZSBjeD0iNyIgY3k9IjMiIHI9IjIiLz48Y2lyY2xlIGN4PSIxMyIgY3k9IjciIHI9IjEiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjYiIHI9IjEiLz48Y2lyY2xlIGN4PSIzIiBjeT0iMyIgcj0iMSIvPjxjaXJjbGUgY3g9IjEiIGN5PSI2IiByPSIxIi8+PGNpcmNsZSBjeD0iMSIgY3k9IjkiIHI9IjEiLz48Y2lyY2xlIGN4PSIzIiBjeT0iMTIiIHI9IjEiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbWFya3VwOiAnPHBhdGggZD0iTTYuNSAzLjUgMCAxMGwxLjUgMS41IDUgNUw4IDE1bC01LTUgNS01em03IDBMMTIgNWw1IDUtNSA1IDEuNSAxLjVMMjAgMTB6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW1hdGhlbWF0aWNzOiAnPHBhdGggZD0iTTE0IDJINGw1IDgtNSA4aDEydi00aC0ydjJIOC4yNUwxMiAxMCA4LjI1IDRIMTR2MmgyVjJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW1hdGhlbWF0aWNzLWRpc3BsYXktYmxvY2s6ICc8cGF0aCBkPSJNMTMgNUg1bDMgNS0zIDVoMTB2LTNoLTJ2MUg5LjJsMS44LTMtMS44LTNIMTN2MWgyVjV6TTIgMWgxNnYySDJ6bTAgMTZoMTZ2MkgyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1tYXRoZW1hdGljcy1kaXNwbGF5LWRlZmF1bHQ6ICc8cGF0aCBkPSJNMTIgNUg0bDMgNS0zIDVoMTB2LTNoLTJ2MUg4LjJsMS44LTMtMS44LTNIMTJ2MWgyVjV6TTEgOWgzdjJIMXptMTUgMGgzdjJoLTN6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW1hdGhlbWF0aWNzLWRpc3BsYXktaW5saW5lOiAnPHBhdGggZD0iTTQgMTNIMFY3aDR6bTEyLTZoNHY2aC00ek02IDZsMyA0LTMgNGg4di0zaC0ydjFIOS41bDEuNS0yLTEuNS0ySDEydjFoMlY2eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1tZW51OiAnPHBhdGggZD0iTTEgM3YyaDE4VjN6bTAgOGgxOFY5SDF6bTAgNmgxOHYtMkgxeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1tZXNzYWdlOiAnPHBhdGggZD0iTTAgOHY4YTIgMiAwIDAwMiAyaDE2YTIgMiAwIDAwMi0yVjhsLTEwIDR6Ii8+PHBhdGggZD0iTTIgMmEyIDIgMCAwMC0yIDJ2MmwxMCA0IDEwLTRWNGEyIDIgMCAwMC0yLTJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW1vb246ICc8cGF0aCBkPSJNMTcuMzkgMTUuMTRBNy4zMyA3LjMzIDAgMDExMS43NSAxLjZjLjIzLS4xMS41Ni0uMjMuNzktLjM0YTguMTkgOC4xOSAwIDAwLTUuNDEuNDUgOSA5IDAgMTA3IDE2LjU4IDguNDIgOC40MiAwIDAwNC4yOS0zLjg0IDUuMyA1LjMgMCAwMS0xLjAzLjY5eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1tb3ZlOiAnPHBhdGggZD0ibTE5IDEwLTQtM3YyaC00VjVoMmwtMy00LTMgNGgydjRINVY3bC00IDMgNCAzdi0yaDR2NEg3bDMgNCAzLTRoLTJ2LTRoNHYyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1tb3ZlLWZpcnN0OiAnPHBhdGggZD0iTTMgMWgydjE4SDN6bTEzLjUgMS41TDE1IDFsLTkgOSA5IDkgMS41LTEuNUw5IDEweiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW1vdmUtbGFzdDogJzxwYXRoIGQ9Ik0xNSAxaDJ2MThoLTJ6TTMuNSAyLjUgMTEgMTBsLTcuNSA3LjVMNSAxOWw5LTktOS05eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW11c2ljYWwtc2NvcmU6ICc8cGF0aCBkPSJNOCAxNVY1aDh2MTBoMlYySDZ2MTMiLz48Y2lyY2xlIGN4PSIxNSIgY3k9IjE1IiByPSIzIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjE1IiByPSIzIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW5ldHdvcms6ICc8Y2lyY2xlIGN4PSIxMCIgY3k9IjE1IiByPSIyIi8+PHBhdGggZD0iTTEgNy40YTEyIDEzIDAgMDExOCAwbC0xLjUgMS40YTEwIDExLjEgMCAwMC0xNSAwem0zLjcgMy4yYTcgNy4zIDAgMDExMC43IDBMMTQgMTJhNSA1LjMgMCAwMC03LjggMHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbmV0d29yay1vZmY6ICc8Y2lyY2xlIGN4PSIxMCIgY3k9IjE2IiByPSIyIi8+PHBhdGggZD0iTTE2LjQgMTEuNkE3LjEgNy4xIDAgMDAxMiA5LjFsMy40IDMuNHpNMTkgOC40QTEyLjIgMTQgMCAwMDguMiA0LjJMMTAgNmE5LjkgOS45IDAgMDE3LjQgMy43ek0zLjUgMiAyIDMuNGwyLjIgMi4yQTEzLjEgMTMuMSAwIDAwMSA4LjRsMS41IDEuM2ExMC43IDEwLjcgMCAwMTMuMi0yLjZMOCA5LjNhNy4zIDcuMyAwIDAwLTMuMyAyLjNMNi4xIDEzYTUuMiA1LjIgMCAwMTMuNi0ybDYuOCA3IDEuNS0xLjV6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW5ldy13aW5kb3c6ICc8cGF0aCBkPSJNMTcgMTdIM1YzaDVWMUgzYTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMnYtNWgtMnoiLz48cGF0aCBkPSJtMTEgMSAzLjI5IDMuMjktNS43MyA1LjczIDEuNDIgMS40MiA1LjczLTUuNzNMMTkgOVYxeiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW5ld2xpbmU6ICc8cGF0aCBkPSJNMTcgNHY2SDdWNmwtNiA1IDYgNXYtNGgxMlY0eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW5ld3NwYXBlcjogJzxwYXRoIGQ9Ik01IDJhMiAyIDAgMDAtMiAydjEyYTEgMSAwIDAxLTEtMVY1aC0uNUExLjUgMS41IDAgMDAwIDYuNXYxMEExLjUgMS41IDAgMDAxLjUgMThIMThhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJ6bTEgMmgxMXY0SDZ6bTAgNmg2djFINnptMCAyaDZ2MUg2em0wIDJoNnYxSDZ6bTctNGg0djVoLTR6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbmV4dDogJzxwYXRoIGQ9Ik03IDEgNS42IDIuNSAxMyAxMGwtNy40IDcuNUw3IDE5bDktOXoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1uby13aWtpLXRleHQ6ICc8cGF0aCBkPSJNMTYgM3YyaDF2MTBsMiAyVjN6TTkgNVYzSDVsMiAyek0xIDEgMCAybDEgMXYxNGgzdi0ySDNWNWwyIDJ2MTBoNHYtMkg3VjlsNiA2aC0ydjJoNGwzIDMgMS0xem0xMiAxMCAyIDJWM2gtNHYyaDJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW5vdC1icmlnaHQ6ICc8Y2lyY2xlIGN4PSI5Ljg1IiBjeT0iMTAiIHI9IjkiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tbm90aWNlOiAnPHBhdGggZD0iTTEwIDBhMTAgMTAgMCAxMDEwIDEwQTEwIDEwIDAgMDAxMCAwem0xIDE2SDl2LTJoMnptMC00SDlWNGgyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1vbmdvaW5nLWNvbnZlcnNhdGlvbjogJzxwYXRoIGQ9Ik0yIDBhMiAyIDAgMDAtMiAydjE4bDQtNGgxNGEyIDIgMCAwMDItMlYyYTIgMiAwIDAwLTItMnptMyA5LjA2YTEuMzkgMS4zOSAwIDExMS4zNy0xLjM5QTEuMzkgMS4zOSAwIDAxNSA5LjA2em01LjE2IDBhMS4zOSAxLjM5IDAgMTExLjM5LTEuMzkgMS4zOSAxLjM5IDAgMDEtMS40MiAxLjM5em01LjE2IDBhMS4zOSAxLjM5IDAgMTExLjM5LTEuMzkgMS4zOSAxLjM5IDAgMDEtMS40MiAxLjM5eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLW91dGRlbnQ6ICc8cGF0aCBkPSJNMSAxNmgxOHYySDF6bTgtOWgxMHYySDl6bTAgNGgxMHYySDl6TTEgMmgxOHYySDF6bTAgOCA1IDRWNnoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1vdXRsaW5lOiAnPHBhdGggZD0iTTEgMTJoMTh2N0gxek0xIDF2OGg4VjF6bTYgNkgzVjNoNHoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1wYWdlLXNldHRpbmdzOiAnPGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iMS43NSIvPjxwYXRoIGQ9Ik0xNSAxSDVhMiAyIDAgMDAtMiAydjE0YTIgMiAwIDAwMiAyaDEwYTIgMiAwIDAwMi0yVjNhMiAyIDAgMDAtMi0yem0wIDkuNzUtMS4zNy4yNWEzLjczIDMuNzMgMCAwMS0uMzguOTNsLjgyIDEuMDdMMTMgMTQuMDdsLTEuMTItLjgyYTMuNzMgMy43MyAwIDAxLS45My4zOGwtLjIgMS4zN2gtMS41TDkgMTMuNjNhMy43MyAzLjczIDAgMDEtLjkzLS4zOEw3IDE0LjA3IDUuOTMgMTNsLjgyLTEuMTJhMy43MyAzLjczIDAgMDEtLjM4LS44OEw1IDEwLjc1di0xLjVMNi4zNyA5YTMuNzIgMy43MiAwIDAxLjM4LS45M0w1LjkzIDcgNyA1LjkzbDEuMTIuODJBMy43MyAzLjczIDAgMDE5IDYuMzdMOS4yNSA1aDEuNUwxMSA2LjM3YTMuNzQgMy43NCAwIDAxLjkzLjM4TDEzIDUuOTMgMTQuMDcgN2wtLjgyIDEuMTJhMy43MyAzLjczIDAgMDEuMzguOTNsMS4zNy4yeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1wYWxldHRlOiAnPHBhdGggZD0iTTEzIDE1djJhMyAzIDAgMDEtMyAzIDEwIDEwIDAgMTExMC0xMCA1IDUgMCAwMS01IDVaTTMgOC41YTEuNSAxLjUgMCAxMDMgMCAxLjUgMS41IDAgMTAtMyAwbTMtNGExLjUgMS41IDAgMTAzIDAgMS41IDEuNSAwIDEwLTMgMG01IDBhMS41IDEuNSAwIDEwMyAwIDEuNSAxLjUgMCAxMC0zIDBtMyA0YTEuNSAxLjUgMCAxMDMgMCAxLjUgMS41IDAgMTAtMyAwIi8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tcGFzdGU6ICc8cGF0aCBkPSJNMyAzaDh2MmgyVjNjMC0xLjEtLjg5NS0yLTItMkgzYy0xLjEgMC0yIC44OTUtMiAydjhjMCAxLjEuODk1IDIgMiAyaDJ2LTJIM3ptNCAxMnYyYzAgMS4xLjg5NSAyIDIgMmg4YzEuMSAwIDItLjg5NSAyLTJWOWMwLTEuMS0uODk1LTItMi0yaC0ydjJoMnY4SDl2LTJ6Ii8+PHBhdGggZD0iTTEwIDVIOHYzSDV2MmgzdjNoMnYtM2gzVjhoLTN6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tcGF1c2U6ICc8cmVjdCB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgeD0iMyIgeT0iMiIgcng9IjEiLz48cmVjdCB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgeD0iMTEiIHk9IjIiIHJ4PSIxIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXBsYXk6ICc8cGF0aCBkPSJNNC41NSAxOUExIDEgMCAwMTMgMTguMTNWMS44N0ExIDEgMCAwMTQuNTUgMWwxMi4yIDguMTNhMSAxIDAgMDEwIDEuN3oiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tcHJldmlvdXM6ICc8cGF0aCBkPSJtNCAxMCA5IDkgMS40LTEuNUw3IDEwbDcuNC03LjVMMTMgMXoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1wcmludGVyOiAnPHBhdGggZD0iTTUgMWgxMHY0SDV6TTMgNmEyIDIgMCAwMC0yIDJ2N2g0djRoMTB2LTRoNFY4YTIgMiAwIDAwLTItMnptMTEgMTJINnYtNmg4em0yLThhMSAxIDAgMTExLTEgMSAxIDAgMDEtMSAxeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1wdXNoLXBpbjogJzxwYXRoIGQ9Ik0xMyA4VjJhMiAyIDAgMDAyLTJINWEyIDIgMCAwMDIgMnY2SDZhMiAyIDAgMDAtMiAydjFoNXY1bDEgNCAxLTR2LTVoNXYtMWEyIDIgMCAwMC0yLTJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXB1enpsZTogJzxjaXJjbGUgY3g9IjE3IiBjeT0iMTAiIHI9IjMiLz48cGF0aCBkPSJNMTAuNTggM0EzIDMgMCAwMTExIDQuNWEzIDMgMCAwMS02IDBBMyAzIDAgMDE1LjQyIDNIMXYxMmEyIDIgMCAwMDIgMmgxMlYzeiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXFyLWNvZGU6ICc8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zIDNoNHY0SDNWM1pNMSA5VjFoOHY4SDFabTIgNGg0djRIM3YtNFptLTIgNnYtOGg4djhIMVpNMTcgM2gtNHY0aDRWM1ptLTYtMnY4aDhWMWgtOFptMiAxMGgtMnY0aDJ2MmgtMnYyaDJ2LTJoMnYyaDR2LTRoLTJ2LTJoMnYtMmgtNHYyaC0ydi0yWm00IDRoLTJ2Mmgydi0yWiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1xdW90ZXM6ICc8cGF0aCBkPSJtNyA2IDEtMkg2QzMuNzkgNCAyIDYuNzkgMiA5djdoN1Y5SDVjMC0zIDItMyAyLTN6bTcgM2MwLTMgMi0zIDItM2wxLTJoLTJjLTIuMjEgMC00IDIuNzktNCA1djdoN1Y5eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXJlY2VudC1jaGFuZ2VzOiAnPHBhdGggZD0iTTEgM2gxNnYySDFWM1ptMCA2aDExdjJIMVY5Wm0wIDZoN3YySDF2LTJabTE3LjgtMy4xIDEtMS4xYS42LjYgMCAwMDAtLjhMMTggOC4yYS42LjYgMCAwMC0uOCAwbC0xIDEgMi42IDIuN1ptLTMuMy0yTDEwIDE1LjNWMThoMi42bDUuNi01LjUtMi43LTIuN1oiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnPHBhdGggZD0iTTE5IDNIM3YyaDE2em0wIDZoLTd2Mmg3em0wIDZIOHYyaDExek04LjggMTEuOWwxLTEuMWEuNi42IDAgMDAwLS44TDggOC4yYS42LjYgMCAwMC0uOCAwbC0xIDFMOC43IDEyem0tMy4zLTJMMCAxNS4zVjE4aDIuNmw1LjYtNS41LTIuNy0yLjdaIi8+JywgJ2ZhbHNlJzsKQGNkeC1pY29uLXJlZG86ICc8cGF0aCBkPSJNMTkgOC41IDEyIDN2MTF6TTEyIDd2M2gtMWMtNCAwLTcgMi03IDZ2MUgxdi0xYzAtNiA1LTkgMTAtOXoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1yZWZlcmVuY2U6ICc8cGF0aCBkPSJtMTUgMTAtMi43OC0yLjc4TDkuNDQgMTBWMUg1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlYzYTIgMiAwIDAwLTItMnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tcmVmZXJlbmNlLWV4aXN0aW5nOiAnPHBhdGggZD0iTTcgMGEyIDIgMCAwMC0yIDJoOWEyIDIgMCAwMTIgMnYxMmEyIDIgMCAwMDItMlYyYTIgMiAwIDAwLTItMnoiLz48cGF0aCBkPSJtMTMgMTItMi44LTIuOEw3LjQgMTJWM0g0Yy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnY5eiIvPicsICdmYWxzZScsICdmYWxzZScsICc8cGF0aCBkPSJNMTMgMGEyIDIgMCAwMTIgMkg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMS0yLTJWMmEyIDIgMCAwMTItMnoiLz48cGF0aCBkPSJNNSAxOGMwIDEuMS45IDIgMiAyaDljMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnY5bC0yLjgtMi44LTIuOCAyLjhWM0g3QzUuNCAzIDUgNC42IDUgNXYxM3oiLz4nLCAnZmFsc2UnOwpAY2R4LWljb24tcmVmZXJlbmNlczogJzxwYXRoIGQ9Ik0wIDN2MTZoNVYzem00IDEySDF2LTFoM3ptMC0zSDF2LTFoM3ptMi05djE2aDVWM3ptNCAxMkg3di0xaDN6bTAtM0g3di0xaDN6bTEtOC41IDQuMSAxNS40IDQuOC0xLjMtNC0xNS4zem03IDEwLjYtMi45LjgtLjMtMSAyLjktLjh6bS0uOC0yLjktMi45LjgtLjItMSAyLjktLjh6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tcmVsb2FkOiAnPHBhdGggZD0iTTE1LjY1IDQuMzVBOCA4IDAgMTAxNy40IDEzaC0yLjIyYTYgNiAwIDExLTEtNy4yMkwxMSA5aDdWMnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tcmVzdG9yZTogJzxwYXRoIGQ9Ik0xLjIyIDAgMCAxLjIybDQgNFYxN2EyIDIgMCAwMDIgMmg4YTIgMiAwIDAwMi0xLjhsMi44IDIuOCAxLjItMS4yMnpNMTcgNFYyaC0zLjVsLTEtMWgtNWwtMSAxaC0uODRsMiAyek04LjY2IDVIMTZ2Ny4zNHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tcm9ib3Q6ICc8cGF0aCBkPSJNMTAuNSA1aDYuNTA1QzE4LjEwNyA1IDE5IDUuODk2IDE5IDYuOTk3VjE0aC03djJoNS4wMDVjMS4xMDIgMCAxLjk5NS44ODggMS45OTUgMnYySDF2LTJjMC0xLjEwNS44OTMtMiAxLjk5NS0ySDh2LTJIMVY2Ljk5N0MxIDUuODk0IDEuODkzIDUgMi45OTUgNUg5LjVWMi45MTVhMS41IDEuNSAwIDExMSAwem0tNCA2YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6bTcgMGExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1zYW5kYm94OiAnPHBhdGggZD0iTTggMTJWOWw2LTYgMyAzLTYgNkg4Wm0xMC03LTMtMyAyLTIgMyAzLTIgMlpNOCAyaDJ2Mkg4ek00IDJoMnYySDR6TTAgM2ExIDEgMCAwMTEtMWgxdjJIMFYzWm0wIDNoMnYySDB6bTAgNGgydjJIMHptMCA0aDJ2Mkgwem0wIDRoMnYySDFhMSAxIDAgMDEtMS0xdi0xWm00IDBoMnYySDR6bTQgMGgydjJIOHptNCAwaDJ2MWExIDEgMCAwMS0xIDFoLTF2LTJabTAtNGgydjJoLTJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXNlYXJjaDogJzxwYXRoIGQ9Ik0xMi4yIDEzLjZhNyA3IDAgMTExLjQtMS40bDUuNCA1LjQtMS40IDEuNHpNMyA4YTUgNSAwIDEwMTAgMEE1IDUgMCAwMDMgOHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tc2VhcmNoLWNhc2Utc2Vuc2l0aXZlOiAnPHBhdGggZD0iTTExLjU5IDE1Ljg3aC0xLjUyYS42NC42NCAwIDAxLS40Mi0uMTMuODQuODQgMCAwMS0uMjQtLjMybC0xLTIuNjdIMy4xOGwtMSAyLjY3YS44LjggMCAwMS0uMjMuMzEuNjMuNjMgMCAwMS0uNDIuMTRIMEw0LjggMy43Nmgyem0tMy43Mi00LjU0TDYuMiA2LjkxYTEyLjEyIDEyLjEyIDAgMDEtLjQxLTEuM3EtLjA5LjQtLjIuNzNjLS4wNy4yMi0uMTQuNDItLjIuNThsLTEuNjcgNC40MXptNS41OC0yLjg0YTQuOTEgNC45MSAwIDAxMy40Ni0xLjM1IDMuNDEgMy40MSAwIDAxMS4zMi4yNCAyLjYyIDIuNjIgMCAwMTEgLjY4IDMgMyAwIDAxLjYgMSA0LjA4IDQuMDggMCAwMS4xNyAxLjM2djUuNDVoLS44MWEuNzguNzggMCAwMS0uMzktLjA4LjYxLjYxIDAgMDEtLjIzLS4zMmwtLjE4LS43YTcuODcgNy44NyAwIDAxLS42NS41MyA0LjEyIDQuMTIgMCAwMS0uNjYuMzkgMy4zIDMuMyAwIDAxLS43My4yNCA0LjMgNC4zIDAgMDEtLjg2LjA4IDMuMTggMy4xOCAwIDAxLTEtLjE0IDIuMTIgMi4xMiAwIDAxLS43OC0uNDMgMiAyIDAgMDEtLjUyLS43MiAyLjQ4IDIuNDggMCAwMS0uMTktMSAyIDIgMCAwMS4yNi0xIDIuNDIgMi40MiAwIDAxLjg3LS44NSA1LjY2IDUuNjYgMCAwMTEuNi0uNjIgMTEuNyAxMS43IDAgMDEyLjUxLS4yNXYtLjU3QTIuMDYgMi4wNiAwIDAwMTcuODUgOWExLjQ2IDEuNDYgMCAwMC0xLjE2LS40NSAyLjUzIDIuNTMgMCAwMC0uODcuMTMgMy45IDMuOSAwIDAwLS42Mi4zMmwtLjQ2LjI4YS43Ny43NyAwIDAxLS40My4xMy41Mi41MiAwIDAxLS4zMi0uMS44MS44MSAwIDAxLS4yMS0uMjR6bTQuNzkgMy42M2ExMS40OSAxMS40OSAwIDAwLTEuNjMuMTUgNC42MSA0LjYxIDAgMDAtMS4wOC4zMSAxLjQyIDEuNDIgMCAwMC0uNTkuNDUgMSAxIDAgMDAtLjE4LjU3IDEuMjUgMS4yNSAwIDAwLjEuNTIuOTQuOTQgMCAwMC4yNy4zNSAxLjA4IDEuMDggMCAwMC40LjIgMS45MyAxLjkzIDAgMDAuNTEuMDYgMi41OSAyLjU5IDAgMDAxLjIxLS4yNyAzLjc5IDMuNzkgMCAwMDEtLjc3eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1zZWFyY2gtZGlhY3JpdGljczogJzxwYXRoIGQ9Ik01LjMgNy45YTcuMyA3LjMgMCAwMTUuMS0yIDUgNSAwIDAxMiAuMyA0IDQgMCAwMTEuNCAxIDQuNCA0LjQgMCAwMS45IDEuNiA2IDYgMCAwMS4zIDJ2OGgtMS4yYTEuMiAxLjIgMCAwMS0uNi0uMSAxIDEgMCAwMS0uMy0uNWwtLjMtMWExMS41IDExLjUgMCAwMS0xIC44IDYgNiAwIDAxLTEgLjYgNC44IDQuOCAwIDAxLTEgLjMgNi40IDYuNCAwIDAxLTEuMy4xIDQuNyA0LjcgMCAwMS0xLjQtLjIgMy4xIDMuMSAwIDAxLTEuMi0uNyAzIDMgMCAwMS0uNy0xIDMuNyAzLjcgMCAwMS0uMy0xLjUgMi45IDIuOSAwIDAxLjQtMS40IDMuNiAzLjYgMCAwMTEuMy0xLjMgOC40IDguNCAwIDAxMi40LS45IDE3LjIgMTcuMiAwIDAxMy42LS40di0uOWEzIDMgMCAwMC0uNi0yIDIuMSAyLjEgMCAwMC0xLjctLjcgMy44IDMuOCAwIDAwLTEuMy4yIDUuOSA1LjkgMCAwMC0uOS40bC0uNy40YTEuMSAxLjEgMCAwMS0uNi4yQS44LjggMCAwMTYgOWExLjIgMS4yIDAgMDEtLjMtLjR6bTYuMi01LjhhLjkuOSAwIDAwLjktMS4xSDE0YTMuOCAzLjggMCAwMS0uMiAxLjIgMi43IDIuNyAwIDAxLS41LjkgMi4yIDIuMiAwIDAxLS43LjUgMi4zIDIuMyAwIDAxLTEgLjIgMiAyIDAgMDEtLjgtLjEgNi41IDYuNSAwIDAxLS44LS40TDkuNCAzYTEuMiAxLjIgMCAwMC0uNS0uMi44LjggMCAwMC0uNy4zIDEuMSAxLjEgMCAwMC0uMi44SDYuNGEzLjcgMy43IDAgMDEuMS0xLjIgMi44IDIuOCAwIDAxLjUtLjkgMi4zIDIuMyAwIDAxLjgtLjYgMi4yIDIuMiAwIDAxMS0uMiAyIDIgMCAwMS44LjIgNi40IDYuNCAwIDAxLjcuM3ptMSAxMS4yYTE3IDE3IDAgMDAtMi41LjIgNi45IDYuOSAwIDAwLTEuNi40IDIuMSAyLjEgMCAwMC0uOS43IDEuNCAxLjQgMCAwMC0uMi45IDEuOSAxLjkgMCAwMDAgLjcgMS40IDEuNCAwIDAwLjUuNiAxLjYgMS42IDAgMDAuNi4yIDIuOSAyLjkgMCAwMC43LjEgMy44IDMuOCAwIDAwMS44LS40IDUuNiA1LjYgMCAwMDEuNS0xeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1zZWFyY2gtcmVndWxhci1leHByZXNzaW9uOiAnPHBhdGggZD0iTTE3LjYgMmExNC41IDE0LjUgMCAwMTAgMTZsLS45LS41NmMtLjI4LS4xOC0uMTctLjQ5LS4wNS0uN2ExMy45NyAxMy45NyAwIDAwLS4wOS0xMy42Yy0uMDgtLjE4LS4xNi0uNDQuMTctLjY1ek0yLjQgMmMtMi45IDMuODctMy4zOCAxMC45LjAzIDE1Ljk0bC45MS0uNTZjLjI4LS4xNy4xNi0uNS4wNC0uN0MuNTcgMTEuNjUgMS40OSA2LjU1IDMuNDMgMy4xYy4wOC0uMTguMTItLjM4LS4yLS41OXpNMTIgNGgxdjIuNDFsLS4xLjM1LjM1LS4zNCAxLjk4LTEuMTUuNTQuOTQtMi4wMiAxLjE1LS40My4xMy40My4xMkwxNS44IDguOGwtLjU0Ljk0LTEuOTgtMS4xNC0uMzgtLjM1LjEuNDNWMTFoLTFWOC43NmwuMTItLjUyLS4zNC4zNEw5LjggOS43MmwtLjU0LS45NCAyLTEuMTUuNDgtLjE0LS40Ny0uMTNMOS4yIDYuMmwuNTQtLjk0IDEuOTcgMS4xNC4zOC4zNy0uMDktLjQxeiIvPjxjaXJjbGUgY3g9IjYuNSIgY3k9IjEzLjUiIHI9IjEuNSIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1zZXR0aW5nczogJzxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwIDEwKSI+PHBhdGggaWQ9ImNkeC1pY29uLXNldHRpbmdzLWEiIGQ9Ik0xLjUtMTBoLTNsLTEgNi41aDVtMCA3aC01bDEgNi41aDMiLz48dXNlIHhsaW5rOmhyZWY9IiUyM2NkeC1pY29uLXNldHRpbmdzLWEiIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIvPjx1c2UgeGxpbms6aHJlZj0iJTIzY2R4LWljb24tc2V0dGluZ3MtYSIgdHJhbnNmb3JtPSJyb3RhdGUoOTApIi8+PHVzZSB4bGluazpocmVmPSIlMjNjZHgtaWNvbi1zZXR0aW5ncy1hIiB0cmFuc2Zvcm09InJvdGF0ZSgxMzUpIi8+PC9nPjxwYXRoIGQ9Ik0xMCAyLjVhNy41IDcuNSAwIDAwMCAxNSA3LjUgNy41IDAgMDAwLTE1djRhMy41IDMuNSAwIDAxMCA3IDMuNSAzLjUgMCAwMTAtNyIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1zaGFyZTogJzxwYXRoIGQ9Ik0xMiA2VjJsNyA3LTcgN3YtNGMtNSAwLTguNSAxLjUtMTEgNWwuOC0zIC4yLS40QTEyIDEyIDAgMDExMiA2eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1zaWduYXR1cmU6ICc8cGF0aCBkPSJNMCAxOGgyMHYxSDB6bS0uMDAzLTYuMTU1IDEuMDYtMS4wNiA0LjM2MyA0LjM2Mi0xLjA2IDEuMDZ6Ii8+PHBhdGggZD0ibS4wMDQgMTUuMTQ3IDQuMzYzLTQuMzYzIDEuMDYgMS4wNjEtNC4zNjIgNC4zNjN6TTE3IDVjMCA5LTExIDktMTEgOXYtMS41czggLjUgOS41LTYuNUMxNiA0IDE1IDIuNSAxNCAyLjVTMTEgNCAxMC43NSAxMGMtLjA4IDIgLjc1IDQuNSAzLjI1IDQuNSAxLjUgMCAyLTEgMy41LTFhMi4wNyAyLjA3IDAgMDEyLjI1IDIuNWgtMS41cy4xMy0xLS41LTFDMTYgMTUgMTYgMTYgMTQgMTZjMCAwLTQuNzUgMC00Ljc1LTZTMTIgMSAxNCAxYy41IDAgMyAwIDMgNHoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1zbWFsbGVyOiAnPHBhdGggZD0iTTEyIDE2aC0xLjA1YS40NC40NCAwIDAxLS4yOS0uMDkuNTguNTggMCAwMS0uMTctLjIybC0uNy0xLjg0SDYuMmwtLjcgMS44NGEuNTYuNTYgMCAwMS0uMTYuMjEuNDMuNDMgMCAwMS0uMjkuMUg0bDMuMzEtOC4zNWgxLjM4em0tMi41Ny0zLjEzTDguMjggOS44MmE4LjUgOC41IDAgMDEtLjI4LS45cS0uMDYuMjctLjE0LjVsLS4xNC40LTEuMTUgM3pNMTUgNmwzLTRoLTZ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXNtYWxsZXItdGV4dDogJzxwYXRoIGQ9Ik0xNS43NSAxOGgtMS41MWEuNjQuNjQgMCAwMS0uNDItLjEzLjgzLjgzIDAgMDEtLjI0LS4zMmwtMS0yLjY1SDcuNDFsLTEgMi42NWEuNzkuNzkgMCAwMS0uMjMuMzEuNjIuNjIgMCAwMS0uNDIuMTRINC4yNUw5IDZoMnptLTMuNjktNC41TDEwLjQgOS4xMmExMi4xMyAxMi4xMyAwIDAxLS40LTEuM3EtLjA5LjM5LS4yLjcydC0uMi41OEw3Ljk1IDEzLjV6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXNwZWNpYWwtY2hhcmFjdGVyOiAnPHBhdGggZD0iTTE5IDE1Ljl2MS4yOWEuNzcuNzcgMCAwMS0uMjMuNTguODYuODYgMCAwMS0uNjMuMjNoLTYuNzZ2LTIuODdhNC40MSA0LjQxIDAgMDAxLjc0LS43MSA1LjUxIDUuNTEgMCAwMDEuNC0xLjQyIDYuOTIgNi45MiAwIDAwLjkzLTEuOTEgNy40NyA3LjQ3IDAgMDAuMzQtMi4yOCA2LjE1IDYuMTUgMCAwMC0uNDctMi40OCA1LjEgNS4xIDAgMDAtMS4yNi0xLjc4IDUuMiA1LjIgMCAwMC0xLjg1LTEuMDcgNy4xNSA3LjE1IDAgMDAtNC40MyAwIDUuMDggNS4wOCAwIDAwLTMuMTEgMi44NyA2LjA4IDYuMDggMCAwMC0uNDcgMi40OCA3LjQ3IDcuNDcgMCAwMC4zNCAyLjI4QTYuODEgNi44MSAwIDAwNS40NyAxM2E1LjU5IDUuNTkgMCAwMDEuNDEgMS4zOSA0LjQxIDQuNDEgMCAwMDEuNzQuNzFWMThIMS44NmEuODYuODYgMCAwMS0uNjMtLjIzLjc3Ljc3IDAgMDEtLjIzLS41OFYxNS45aDQuNzZsMSAuMTJhNi45NCA2Ljk0IDAgMDEtMi0xLjA1IDcuMzkgNy4zOSAwIDAxLTEuNTgtMS42MyA3Ljc1IDcuNzUgMCAwMS0xLTIuMSA4IDggMCAwMS0uMzgtMi40NyA3LjYxIDcuNjEgMCAwMS42NS0zLjE3QTcuNDggNy40OCAwIDAxNC4xIDMuMTdhOC4xNCA4LjE0IDAgMDEyLjY1LTEuNkE5LjE5IDkuMTkgMCAwMTEwIDFhOS4xOCA5LjE4IDAgMDEzLjI1LjU3IDguMTQgOC4xNCAwIDAxMi42NSAxLjYgNy40OCA3LjQ4IDAgMDExLjc4IDIuNDcgNy42MSA3LjYxIDAgMDEuNjUgMy4xNyA4IDggMCAwMS0uMzMgMi40OCA3Ljc0IDcuNzQgMCAwMS0xIDIuMUE3LjM3IDcuMzcgMCAwMTE1LjMzIDE1YTcgNyAwIDAxLTIgMS4wNWwxLS4xMmgxeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi1zcGVjaWFsLXBhZ2VzOiAnPHBhdGggZD0iTTcgMGEyIDIgMCAwMC0yIDJoOWEyIDIgMCAwMTIgMnYxMmEyIDIgMCAwMDItMlYyYTIgMiAwIDAwLTItMnoiLz48cGF0aCBkPSJNMTMgMjBINGEyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMmg5YTIgMiAwIDAxMiAydjEzYTIgMiAwIDAxLTIgMnptLTYuNS0zLjUuNDEtMS4wOUw4IDE1bC0xLjA5LS40MS0uNDEtMS4wOS0uNDEgMS4wOUw1IDE1bDEuMDkuNDEuNDEgMS4wOXptMi45ODItLjk0OS45NTItMi41NjEgMi41My0uOTY0LTIuNTMtLjk2NEw5LjQ4MiA4LjVsLS45NTIgMi41NjItMi41My45NjQgMi41My45NjQuOTUyIDIuNTYxek02IDEwLjVsLjU0Ny0xLjQ1M0w4IDguNWwtMS40NTMtLjU0N0w2IDYuNWwtLjU0NyAxLjQ1M0w0IDguNWwxLjQ1My41NDdMNiAxMC41eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXNwZWVjaC1idWJibGU6ICc8cGF0aCBkPSJNNiAxNEgwdjZ6Ii8+PHJlY3Qgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXNwZWVjaC1idWJibGUtYWRkOiAnPHBhdGggZD0iTTMgMWEyIDIgMCAwMC0yIDJ2MTZsNC00aDEyYTIgMiAwIDAwMi0yVjNhMiAyIDAgMDAtMi0yem0xMiA4aC00djRIOVY5SDVWN2g0VjNoMnY0aDR6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tc3BlZWNoLWJ1YmJsZXM6ICc8cGF0aCBkPSJNMTcgNHY3YTIgMiAwIDAxLTIgMkg0djFhMiAyIDAgMDAyIDJoMTBsNCA0VjZhMiAyIDAgMDAtMi0yek02IDEwSDB2NnoiLz48cmVjdCB3aWR0aD0iMTYiIGhlaWdodD0iMTIiIHJ4PSIyIi8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tc3RhcjogJzxwYXRoIGQ9Ik0yMCA3aC03TDEwIC41IDcgN0gwbDUuNDYgNS40Ny0xLjY0IDcgNi4xOC0zLjcgNi4xOCAzLjczLTEuNjMtN3ptLTEwIDYuOS0zLjc2IDIuMjcgMS00LjI4TDMuNSA4LjVoNC42MUwxMCA0LjZsMS45IDMuOWg0LjZsLTMuNzMgMy40IDEgNC4yOHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tc3RvcDogJzxyZWN0IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgeD0iMiIgeT0iMiIgcng9IjEiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tc3RyaWtldGhyb3VnaDogJzxwYXRoIGQ9Ik02IDhoMi42TDEwIDRsMS40IDRoMi43bC0yLjQtNkg4LjN6bS01IDJ2MmgzLjRMMiAxOGgzbDEuNy00LjZoNi42TDE1IDE4aDNsLTIuNC02SDE5di0yeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICd0cnVlJywgZW4gJzxwYXRoIGQ9Ik01LjYgOWg1LjlsLS40LS4yLTEuNC0uNGE3IDcgMCAwMS0xLjMtLjYgMi45IDIuOSAwIDAxLS45LS43IDEuNiAxLjYgMCAwMS0uMy0xIDIuMyAyLjMgMCAwMS4yLTEgMiAyIDAgMDEuNS0uNyAyLjUgMi41IDAgMDEuOS0uNSAzLjkgMy45IDAgMDExLjItLjEgMy45IDMuOSAwIDAxMS4zLjIgNS44IDUuOCAwIDAxMSAuNGwuNi40YS45LjkgMCAwMC41LjIuNi42IDAgMDAuMy0uMSAxIDEgMCAwMC4zLS4zbC43LTEuM2E2IDYgMCAwMC0yLTEuMyA3LjQgNy40IDAgMDAtMi43LS41IDYuMSA2LjEgMCAwMC0yLjMuNEE1IDUgMCAwMDYuMSAzYTQuNSA0LjUgMCAwMC0xLjQgMy4yQTQuNyA0LjcgMCAwMDUgOC4xYTQgNCAwIDAwLjYuOXpNMTkgMTFIMXYyaDExLjRhMi4zIDIuMyAwIDAxMCAuNiAyLjUgMi41IDAgMDEtLjcgMiAzLjMgMy4zIDAgMDEtMi4zLjdBNC4zIDQuMyAwIDAxOCAxNmE2IDYgMCAwMS0xLjEtLjVsLS44LS42YTEgMSAwIDAwLS42LS4yLjcuNyAwIDAwLS40IDAgLjguOCAwIDAwLS4yLjNMNCAxNi4zYTYuNCA2LjQgMCAwMDEgMSA3LjIgNy4yIDAgMDAxLjQuNiA4IDggMCAwMDEuNC41IDcuNyA3LjcgMCAwMDEuNS4xIDYuNSA2LjUgMCAwMDIuNC0uNCA1LjEgNS4xIDAgMDAxLjgtMS4xIDQuOSA0LjkgMCAwMDEuMS0xLjcgNS42IDUuNiAwIDAwLjQtMi4xVjEzaDR6Ii8+JywgZmkgJzxwYXRoIGQ9Ik03LjMgOGgyLjNsLTQtNkgzLjN6bTMuMSAwaDIuM2w0LTZoLTIuM3pNMSAxMHYyaDh2Nmgydi02aDh2LTJ6Ii8+JzsKQGNkeC1pY29uLXN1YnNjcmlwdDogJzxwYXRoIGQ9Ik0xMy42OCAxNmgtMi40MmEuNjcuNjcgMCAwMS0uNDYtLjE1IDEuMzMgMS4zMyAwIDAxLS4yOC0uMzRsLTIuNzctNC40NGEyLjY1IDIuNjUgMCAwMS0uMjguNjlMNSAxNS41MWEyLjIyIDIuMjIgMCAwMS0uMjkuMzQuNTguNTggMCAwMS0uNDIuMTVIMmw0LjE1LTYuMTlMMi4xNyA0aDIuNDJhLjgxLjgxIDAgMDEuNDEuMDkuOC44IDAgMDEuMjQuMjZMOCA4LjU5YTIuNzEgMi43MSAwIDAxLjMzLS43NEwxMC42IDQuNGEuNjkuNjkgMCAwMS42LS40aDIuMzJsLTQgNS43MXptMy44Mi00aC41di0xaC0uNWExLjQ5IDEuNDkgMCAwMC0xIC4zOSAxLjQ5IDEuNDkgMCAwMC0xLS4zOUgxNXYxaC41YS41LjUgMCAwMS41LjV2NmEuNS41IDAgMDEtLjUuNUgxNXYxaC41YTEuNDkgMS40OSAwIDAwMS0uMzkgMS40OSAxLjQ5IDAgMDAxIC4zOWguNXYtMWgtLjVhLjUuNSAwIDAxLS41LS41di02YS41LjUgMCAwMS41LS41eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXN1YnRyYWN0OiAnPHBhdGggZD0iTTQgOWgxMnYySDR6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXN1Y2Nlc3M6ICc8cGF0aCBkPSJNMTAgMjBhMTAgMTAgMCAwMTAtMjAgMTAgMTAgMCAxMTAgMjBabS0yLTUgOS04LjVMMTUuNSA1IDggMTIgNC41IDguNSAzIDEwbDUgNVoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tc3VwZXJzY3JpcHQ6ICc8cGF0aCBkPSJNMTggMVYwaC0uNWExLjQ5IDEuNDkgMCAwMC0xIC4zOSAxLjQ5IDEuNDkgMCAwMC0xLS4zOUgxNXYxaC41YS41LjUgMCAwMS41LjV2NmEuNS41IDAgMDEtLjUuNUgxNXYxaC41YTEuNDkgMS40OSAwIDAwMS0uMzkgMS40OSAxLjQ5IDAgMDAxIC4zOWguNVY4aC0uNWEuNS41IDAgMDEtLjUtLjV2LTZhLjUuNSAwIDAxLjUtLjV6bS00LjMyIDE1aC0yLjQyYS42Ny42NyAwIDAxLS40Ni0uMTUgMS4zMyAxLjMzIDAgMDEtLjI4LS4zNGwtMi43Ny00LjQ0YTIuNjUgMi42NSAwIDAxLS4yOC42OUw1IDE1LjUxYTIuMjIgMi4yMiAwIDAxLS4yOS4zNC41OC41OCAwIDAxLS40Mi4xNUgybDQuMTUtNi4xOUwyLjE3IDRoMi40MmEuODEuODEgMCAwMS40MS4wOS44LjggMCAwMS4yNC4yNkw4IDguNTlhMi43MSAyLjcxIDAgMDEuMzMtLjc0TDEwLjYgNC40YS42OS42OSAwIDAxLjYtLjRoMi4zMmwtNCA1LjcxeiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXRhYmxlOiAnPHBhdGggZD0iTTIgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTZhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJ6bTAgNGg3djRIMnptMCAxMHYtNGg3djR6bTE2IDBoLTd2LTRoN3ptMC02aC03VjZoN3oiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdGFibGUtYWRkLWNvbHVtbi1hZnRlcjogJzxwYXRoIGQ9Ik0wIDN2MTRoOHYxaDEyVjJIOHYxem0xMCA2aDNWNmgydjNoM3YyaC0zdjNoLTJ2LTNoLTN6TTYgNWgydjEwSDZ6TTIgNWgydjEwSDJ6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdGFibGUtYWRkLWNvbHVtbi1iZWZvcmU6ICc8cGF0aCBkPSJNMTggM2gtNlYySDB2MTZoMTJ2LTFoOFYzem0tOCA4SDd2M0g1di0zSDJWOWgzVjZoMnYzaDN6bTQgNGgtMlY1aDJ6bTQgMGgtMlY1aDJ6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdGFibGUtYWRkLXJvdy1hZnRlcjogJzxwYXRoIGQ9Ik0zIDB2OEgydjEyaDE2VjhoLTFWMHptOCAxMHYzaDN2MmgtM3YzSDl2LTNINnYtMmgzdi0zem00LTR2Mkg1VjZ6bTAtNHYySDVWMnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdGFibGUtYWRkLXJvdy1iZWZvcmU6ICc8cGF0aCBkPSJNMTcgMjB2LThoMVYwSDJ2MTJoMXY4ek05IDEwVjdINlY1aDNWMmgydjNoM3YyaC0zdjN6bS00IDR2LTJoMTB2MnptMCA0di0yaDEwdjJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXRhYmxlLWNhcHRpb246ICc8cGF0aCBkPSJNMiA4YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyaDE2YTIgMiAwIDAwMi0ydi02YTIgMiAwIDAwLTItMnptMCAyaDd2Mkgyem0wIDZ2LTJoN3Yyem0xNiAwaC03di0yaDd6bTAtNGgtN3YtMmg3ek0yIDJoMTZ2NEgyeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi10YWJsZS1tZXJnZS1jZWxsczogJzxwYXRoIGlkPSJjZHgtaWNvbi10YWJsZU1lcmdlQ2VsbHMtYSIgZD0iTTkgMTAgNCA2djNIMHYyaDR2M3ptLTcgM0gwdjVoOHYtMkgyek0wIDJ2NWgyVjRoNlYyeiIvPjx1c2UgeGxpbms6aHJlZj0iJTIzY2R4LWljb24tdGFibGVNZXJnZUNlbGxzLWEiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDIwIDApIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXRhYmxlLW1vdmUtY29sdW1uLWFmdGVyOiAnPHBhdGggZD0ibTE2IDEwLTUtNHYzSDZ2Mmg1djN6Ii8+PHBhdGggZD0iTTAgMmgyMHYxNkgwem01IDZ2NGg1djRoOFY0aC04djR6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdGFibGUtbW92ZS1jb2x1bW4tYmVmb3JlOiAnPHBhdGggZD0ibTQgMTAgNS00djNoNXYySDl2M3oiLz48cGF0aCBkPSJNMCAydjE2aDIwVjJ6bTIgMmg4djRoNXY0aC01djRIMnoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi10YWJsZS1tb3ZlLXJvdy1hZnRlcjogJzxwYXRoIGQ9Im0xMCAxNi00LTVoM1Y2aDJ2NWgzeiIvPjxwYXRoIGQ9Ik0yIDB2MjBoMTZWMHptMiAxMGg0VjVoNHY1aDR2OEg0eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi10YWJsZS1tb3ZlLXJvdy1iZWZvcmU6ICc8cGF0aCBkPSJNOSA5SDZsNC01IDQgNWgtM3Y1SDl6Ii8+PHBhdGggZD0iTTIgMGgxNnYyMEgyem0yIDJ2OGg0djVoNHYtNWg0VjJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXRhZzogJzxwYXRoIGQ9Ik05IDEuMjhBMSAxIDAgMDA4LjM1IDFIMmExIDEgMCAwMC0xIDF2Ni4zNWExIDEgMCAwMC4yOC42NUwxMSAxOC43MmExIDEgMCAwMDEuMzcgMGw2LjM4LTYuMzhhMSAxIDAgMDAtLjAzLTEuMzR6TTUgN2EyIDIgMCAxMTItMiAyIDIgMCAwMS0yIDJ6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdGVtcGxhdGUtYWRkOiAnPHBhdGggZD0iTTE2IDVWMWgtMnY0aC00djJoNHY0aDJWN2g0VjV6Ii8+PHBhdGggZD0iTTAgMTdWNWg4djJIMnY4aDEydi0yaDJ2NHoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi10ZXh0LWRpci1sLXQtcjogJzxwYXRoIGQ9Im0xOSAxMC02LTV2NEg2djJoN3Y0ek02IDJWMUg0LjVhMS40OSAxLjQ5IDAgMDAtMSAuMzkgMS40OSAxLjQ5IDAgMDAtMS0uMzlIMXYxaDEuNWEuNS41IDAgMDEuNS41djE1YS41LjUgMCAwMS0uNS41SDF2MWgxLjVhMS40OSAxLjQ5IDAgMDAxLS4zOSAxLjQ5IDEuNDkgMCAwMDEgLjM5SDZ2LTFINC41YS41LjUgMCAwMS0uNS0uNXYtMTVhLjUuNSAwIDAxLjUtLjV6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXRleHQtZGlyLXItdC1sOiAnPHBhdGggZD0ibTEgMTAgNi01djRoN3YySDd2NHptMTMtOFYxaDEuNWExLjQ5IDEuNDkgMCAwMTEgLjM5IDEuNDkgMS40OSAwIDAxMS0uMzlIMTl2MWgtMS41YS41LjUgMCAwMC0uNS41djE1YS41LjUgMCAwMC41LjVIMTl2MWgtMS41YTEuNDkgMS40OSAwIDAxLTEtLjM5IDEuNDkgMS40OSAwIDAxLTEgLjM5SDE0di0xaDEuNWEuNS41IDAgMDAuNS0uNXYtMTVhLjUuNSAwIDAwLS41LS41eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi10ZXh0LWZsb3c6ICc8cGF0aCBkPSJNMSAzaDE4djJIMXptMCA0aDE0djJIMXptMCA0aDEwdjJIMXptMCA0aDE4djJIMXoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi10ZXh0LXN0eWxlOiAnPHBhdGggZD0iTTIgMTdoMTZ2Mkgyem05LjM0LTE1aDMuMzFsMiAxNGgtMy4xOWwtLjI5LTIuODhIOEw2LjQzIDE2SDMuMzd6bS0yIDguNzFoMy41NWwtLjYxLTUuNTF6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXRleHQtc3VtbWFyeTogJzxwYXRoIGQ9Ik0xIDdoMTh2Mkgxem0wIDRoMTR2MkgxeiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXRyYXNoOiAnPHBhdGggZD0iTTE3IDJoLTMuNWwtMS0xaC01bC0xIDFIM3YyaDE0ek00IDE3YTIgMiAwIDAwMiAyaDhhMiAyIDAgMDAyLTJWNUg0eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi10cmF5OiAnPHBhdGggZD0iTTMgMWEyIDIgMCAwMC0yIDJ2MTRhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJWM2EyIDIgMCAwMC0yLTJ6bTE0IDEyaC00bC0xIDJIOGwtMS0ySDNWM2gxNHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdW4tYmxvY2s6ICc8cGF0aCBkPSJNMS4yMiAwIDAgMS4yMmwzLjA2IDMuMDZhOSA5IDAgMDAxMi42NiAxMi42NkwxOC43OCAyMCAyMCAxOC43OHpNNSAxMVY5aDIuNzhsMiAyem01LTEwYTkgOSAwIDAwLTQuMjYgMS4wOEwxMi42NiA5SDE1djJoLS4zNGwzLjI2IDMuMjZBOSA5IDAgMDAxMCAxeiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi11bi1mbGFnOiAnPHBhdGggZD0iTTEyLjE0IDguNDggMTcgNiA1LjU4IDEuOTJ6TTEuMjIgMCAwIDEuMjJsMyAzVjE5aDJ2LTYuODdsMy45MS0yTDE4Ljc4IDIwIDIwIDE4Ljc4eiIvPicsICdmYWxzZScsICdmYWxzZScsICc8cGF0aCBkPSJtMCAxLjIgNC4yNyA0LjI3TDAgN2wxMS44NCA2LjA0LjE2LjE2VjIwaDJ2LTQuOGw0Ljc0IDQuNzQgMS4xOTgtMS4xOThMMS4xOTguMDAyek0xNCAyIDcuODA5IDQuMjA5IDE0IDEwLjM5OXoiLz4nLCAnZmFsc2UnOwpAY2R4LWljb24tdW4tbGluazogJzxwYXRoIGQ9Ik00LjgzIDVBNC44MyA0LjgzIDAgMDAwIDkuODN2LjM0QTQuODMgNC44MyAwIDAwNC44MyAxNWgyLjkxYTQuODggNC44OCAwIDAxLTEuNTUtMkg1Yy00IDAtNC02IDAtNmgzYy4wNzUuMDAxLjE1LjAwNS4yMjUuMDEyTDYuMjE1IDV6bTcuNDMgMGE0Ljg4IDQuODggMCAwMTEuNTUgMkgxNWMzLjE3OS4wMDMgNC4xNyA0LjMgMS4zMTQgNS42OTVsMS41MDggMS41MDhBNC44MyA0LjgzIDAgMDAyMCAxMC4xN3YtLjM0QTQuODMgNC44MyAwIDAwMTUuMTcgNXptLTMuNjEyLjAzIDQuMzI5IDQuMzI3QTQuODMgNC44MyAwIDAwOC42NDggNS4wM3pNNy4yMjcgOC40MTFDNy4xNyA4LjU5NSA3LjA4IDkgNy4wOCA5Yy0uMDQ1LjI3My0uMDguNTg0LS4wOC44M3YuMzRBNC44MyA0LjgzIDAgMDAxMS44MyAxNWgzLjM0Yy4zMTYgMCAuNjMxLS4wMzIuOTQxLS4wOTRMMTQuMjA1IDEzSDEyYy0yLjA2Ny0uMDA2LTMuNTEtMi4wNTEtMi44Mi00em0zLjc1NSAxLjM2QTMgMyAwIDAxMTAuODIgMTFoMS4zODl6Ii8+PHBhdGggZD0iTTEuMjIgMCAwIDEuMjIgMTguOCAyMGwxLjItMS4yMnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdW4tbG9jazogJzxwYXRoIGQ9Ik0xNSA4VjVzMC01LTUtNWE0LjYzIDQuNjMgMCAwMC00Ljg4IDRoMkM3LjMxIDIuOTMgOCAyIDEwIDJjMyAwIDMgMiAzIDMuNVY4SDMuOTNBMS45MyAxLjkzIDAgMDAyIDkuOTN2OC4xNUExLjkzIDEuOTMgMCAwMDMuOTMgMjBoMTIuMTRBMS45MyAxLjkzIDAgMDAxOCAxOC4wN1Y5LjkzQTEuOTMgMS45MyAwIDAwMTYuMDcgOHptLTUgOGEyIDIgMCAxMTItMiAyIDIgMCAwMS0yIDJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXVuLXN0YXI6ICc8cGF0aCBkPSJNMjAgN2gtN0wxMCAuNSA3IDdIMGw1LjQ2IDUuNDctMS42NCA3IDYuMTgtMy43IDYuMTggMy43My0xLjYzLTd6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXVuZGVybGluZTogJzxwYXRoIGQ9Ik0zIDE3aDE0djJIM3ptNC43LTYuN0wxMCAzLjdsMi4zIDYuNnptNi42IDUuN0gxN0wxMS41IDJoLTNMMyAxNmgyLjdMNyAxMmg1Ljh6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ3RydWUnLCBlbiAnPHBhdGggZD0iTTMgMTdoMTR2Mkgzem0yLjYtMi43YTUuNSA1LjUgMCAwMDEuOSAxLjIgNi42IDYuNiAwIDAwMi41LjUgNi42IDYuNiAwIDAwMi41LS41IDUuNCA1LjQgMCAwMDMtMy4xQTYuOCA2LjggMCAwMDE2IDEwVjJoLTIuMnY4YTUgNSAwIDAxLS4zIDEuNyAzLjcgMy43IDAgMDEtLjcgMS4zIDMuMyAzLjMgMCAwMS0xLjIuOCA0IDQgMCAwMS0xLjYuMyA0IDQgMCAwMS0xLjYtLjMgMy4zIDMuMyAwIDAxLTEuMi0uOSAzLjYgMy42IDAgMDEtLjctMS4zIDUuMiA1LjIgMCAwMS0uMy0xLjZWMkg0djhhNi44IDYuOCAwIDAwLjQgMi40IDUuNSA1LjUgMCAwMDEuMiAxLjl6Ii8+JywgZGUgJzxwYXRoIGQ9Ik0zIDE3aDE0djJIM3ptMi42LTIuN2E1LjUgNS41IDAgMDAxLjkgMS4yIDYuNiA2LjYgMCAwMDIuNS41IDYuNiA2LjYgMCAwMDIuNS0uNSA1LjQgNS40IDAgMDAzLTMuMUE2LjggNi44IDAgMDAxNiAxMFYyaC0yLjJ2OGE1IDUgMCAwMS0uMyAxLjcgMy43IDMuNyAwIDAxLS43IDEuMyAzLjMgMy4zIDAgMDEtMS4yLjggNCA0IDAgMDEtMS42LjMgNCA0IDAgMDEtMS42LS4zIDMuMyAzLjMgMCAwMS0xLjItLjkgMy42IDMuNiAwIDAxLS43LTEuMyA1LjIgNS4yIDAgMDEtLjMtMS42VjJINHY4YTYuOCA2LjggMCAwMC40IDIuNCA1LjUgNS41IDAgMDAxLjIgMS45eiIvPic7CkBjZHgtaWNvbi11bmRvOiAnPHBhdGggZD0iTTEgOC41IDggMTR2LTRoMWM0IDAgNyAyIDcgNnYxaDN2LTFjMC02LTUtOS0xMC05SDhWM3oiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi11cC10cmlhbmdsZTogJzxwYXRoIGQ9Im0xMCA1IDggMTBIMnoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdXBsb2FkOiAnPHBhdGggZD0iTTE3IDEydjVIM3YtNUgxdjVhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTV6Ii8+PHBhdGggZD0iTTEwIDEgNSA3aDR2OGgyVjdoNHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdXNlci1hY3RpdmU6ICc8cGF0aCBkPSJNMTAgMTIuNWMtNS45MiAwLTkgMy41LTkgNS41djFoMTh2LTFjMC0yLTMuMDgtNS41LTktNS41eiIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iNiIgcj0iNSIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi11c2VyLWFkZDogJzxjaXJjbGUgY3g9IjguNSIgY3k9IjEwLjUiIHI9IjMuNSIvPjxwYXRoIGQ9Ik0xNCAwdjRoLTR2Mmg0djRoMlY2aDRWNGgtNFYwaC0yek04IDE1Yy00LjYgMC03IDIuNjktNyA0LjIzVjIwaDE0di0uNzdDMTUgMTcuNjkgMTIuNiAxNSA4IDE1eiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXVzZXItYW5vbnltb3VzOiAnPHBhdGggZD0iTTE1IDJINUw0IDhoMTJ6TTAgMTBzMiAxIDEwIDEgMTAtMSAxMC0xbC00LTJINHptOCA0aDR2MUg4eiIvPjxjaXJjbGUgY3g9IjYiIGN5PSIxNSIgcj0iMyIvPjxjaXJjbGUgY3g9IjE0IiBjeT0iMTUiIHI9IjMiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdXNlci1hdmF0YXI6ICc8cGF0aCBkPSJNMTAgMTFjLTUuOTIgMC04IDMtOCA1djNoMTZ2LTNjMC0yLTIuMDgtNS04LTV6Ii8+PGNpcmNsZSBjeD0iMTAiIGN5PSI1LjUiIHI9IjQuNSIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi11c2VyLWF2YXRhci1vdXRsaW5lOiAnPHBhdGggZD0iTTEwIDhjMS43IDAgMy4wNi0xLjM1IDMuMDYtM1MxMS43IDIgMTAgMiA2Ljk0IDMuMzUgNi45NCA1IDguMyA4IDEwIDh6bTAgMmMtMi44IDAtNS4wNi0yLjI0LTUuMDYtNVM3LjIgMCAxMCAwczUuMDYgMi4yNCA1LjA2IDUtMi4yNiA1LTUuMDYgNXptLTcgOGgxNHYtMS4zM2MwLTEuNzUtMi4zMS0zLjU2LTctMy41NnMtNyAxLjgxLTcgMy41NlYxOHptNy02Ljg5YzYuNjYgMCA5IDMuMzMgOSA1LjU2VjIwSDF2LTMuMzNjMC0yLjIzIDIuMzQtNS41NiA5LTUuNTZ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXVzZXItY29udHJpYnV0aW9uczogJzxjaXJjbGUgY3g9IjE1LjUiIGN5PSIxMC41IiByPSIyLjUiLz48cGF0aCBkPSJNMSAxNWg4djJIMVptMC02aDEwdjJIMVptMC02aDE2djJIMVptMTQuNSAxMC42Yy0zLjMgMC00LjUgMS42LTQuNSAyLjdWMThoOXYtMS43YzAtMS0xLjItMi43LTQuNS0yLjd6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdXNlci1ncm91cDogJzxjaXJjbGUgY3g9IjYiIGN5PSI2IiByPSIzIi8+PGNpcmNsZSBjeD0iMTQiIGN5PSI2IiByPSIzIi8+PHBhdGggZD0iTTE0IDEwYzMuMzEgMCA2IDEuNzkgNiA0djJoLTZ2LTJjMC0xLjQ4LTEuMjEtMi43Ny0zLTMuNDYuODgtLjM1IDEuOTEtLjU0IDMtLjU0em0tOCAwYzMuMzEgMCA2IDEuNzkgNiA0djJIMHYtMmMwLTIuMjEgMi42OS00IDYtNHoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi11c2VyLXJpZ2h0czogJzxwYXRoIGQ9Ik0xNC41IDUuNWE0LjUgNC41IDAgMTEtOSAwIDQuNSA0LjUgMCAwMTkgMFpNMjAgMTYuMjg4di0xLjYzMmwtMS4wMTItLjE2OGMtLjA1NS0uMjItLjE2NC0uNDM3LS4zMjQtLjc2bC0uMDE0LS4wMjguNjE5LS44NDQtMS4xODEtMS4xOC0uODQ0LjYxOGEzLjAwMyAzLjAwMyAwIDAwLS43ODgtLjMzOGwtLjExMi0xLjAxMmgtMS42MzJsLS4xNDEuODUxLS4wMjcuMTYxYy0uMjgyLjA1Ni0uNTA3LjE3LS43ODguMzM4bC0uODQ0LS42MTktMS4xOCAxLjE4MS41NjIuODQ0Yy0uMTA2LjE3Ni0uMTY4LjMzLS4yMjcuNDlsLS4wMjUuMDctLjAxLjAyN2MtLjAyNC4wNjQtLjA0OC4xMy0uMDc2LjJMMTEgMTQuNnYxLjYzMWwxLjAxMi4xN2MuMDU3LjI4LjE3LjUwNS4zMzguNzg2bC0uNTYzLjg0NC45NjkuOTY5LjIxMy4yMTMuMzItLjIxMy41MjQtLjM1Yy4xOTkuMS40NDMuMi42OTEuM2wuMDUuMDIuMDQ2LjAxOC4wMDIuMDEyLjE2NyAxaDEuNjg3bC4xNjctMSAuMDAyLS4wMTJjLjI4MS0uMDU3LjUwNi0uMTcuNzg3LS4zMzhsLjQ3Ny4zNS4zNjcuMjcgMS4xODItMS4xODItLjYyLS44NDRjLjE3LS4yOC4yODItLjU2My4zMzgtLjc4OGwuODQ0LS4xNjhabS00LjUuODQzYTEuNjU5IDEuNjU5IDAgMDEtMS42ODgtMS42ODdjMC0uOTU2LjczMi0xLjY4OCAxLjY4OC0xLjY4OHMxLjY4OC43MzIgMS42ODggMS42ODgtLjczMiAxLjY4Ny0xLjY4OCAxLjY4N1pNMTAgMTFjLjczOSAwIDEuNDE4LjA0NyAyLjA0LjEzM2wtMS41OTQgMS41OTYuNTc0Ljg2Mi0xLjAyLjEydjMuMzY3bDEuMDk4LjE4My0uNTk4Ljg5Ny44NDIuODQySDJ2LTNjMC0yIDIuMDgzLTUgOC01WiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXVzZXItdGFsazogJzxwYXRoIGQ9Ik0xOCAwSDJhMiAyIDAgMDAtMiAydjE4bDQtNGgxNGEyIDIgMCAwMDItMlYyYTIgMiAwIDAwLTItMnptLTQgNGExLjUgMS41IDAgMTEtMS41IDEuNUExLjUgMS41IDAgMDExNCA0ek02IDRhMS41IDEuNSAwIDExLTEuNSAxLjVBMS41IDEuNSAwIDAxNiA0em00IDhjLTIuNjEgMC00LjgzLS42Ny01LjY1LTNoMTEuM2MtLjgyIDIuMzMtMy4wNCAzLTUuNjUgM3oiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi11c2VyLXRlbXBvcmFyeTogJzxwYXRoIGQ9Ik0xOCAxNmMwLTItMi4wODMtNS04LTUtLjM1NiAwLS42OTguMDEtMS4wMjYuMDMybC4yNzYgMS45ODZjLjIzOS0uMDEyLjQ4OS0uMDE4Ljc1LS4wMTh2NEg2djJoMnYtMmgydjJoOHYtM1ptLTgtNmE0LjUgNC41IDAgMTAtLjg3OC04LjkxNGwuMzg4IDEuOTYyQzkuNjY3IDMuMDE3IDkuODMgMyAxMCAzdjVjLS4xNyAwLS4zMzMtLjAxNy0uNDktLjA0OGwtLjM4OCAxLjk2MmMuMjg0LjA1Ny41NzcuMDg2Ljg3OC4wODZabS0yLjkzMyAxLjI5Yy0uNjkuMTQ5LTEuMy4zNS0xLjgzNC41OWwxLjA1MSAxLjcxM2MuMzUxLS4xNC43NTUtLjI2MyAxLjIxOC0uMzZsLS40MzUtMS45NDRaTTQgMTl2LTJIMnYyaDJabS0xLjg0LTRoMi4yMjhjLjEyNC0uMTguMjg0LS4zNy40OS0uNTU3TDMuNjQgMTIuODY2Yy0uNzguNjYtMS4yNTQgMS40MTYtMS40OCAyLjEzNFpNNy41IDEuNzU4IDguNjEzIDMuNDJjLS4yNzQuMTgzLS41MS40MTktLjY5My42OTNMNi4yNTggM2MuMzI5LS40OS43NTEtLjkxMyAxLjI0Mi0xLjI0MlpNNS41ODYgNC42MjJsMS45NjIuMzg4YTIuNTIxIDIuNTIxIDAgMDAwIC45OGwtMS45NjIuMzg4YTQuNTIgNC41MiAwIDAxMC0xLjc1NlpNNi4yNTggOCA3LjkyIDYuODg3Yy4xODMuMjc0LjQxOS41MS42OTMuNjkzTDcuNSA5LjI0MkE0LjUyNSA0LjUyNSAwIDAxNi4yNTggOFoiLz4nLCAndHJ1ZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi12aWV3LWNvbXBhY3Q6ICc8cGF0aCBkPSJNMiAyaDR2NEgyem0xMiAwaDR2NGgtNHpNOCAyaDR2NEg4ek0yIDE0aDR2NEgyem0xMiAwaDR2NGgtNHptLTYgMGg0djRIOHpNMiA4aDR2NEgyem0xMiAwaDR2NGgtNHpNOCA4aDR2NEg4eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi12aWV3LWRldGFpbHM6ICc8cGF0aCBkPSJNOCA2aDl2Mkg4em0wLTNoMTF2Mkg4ek0xIDNoNnY2SDF6bTcgMTFoOXYySDh6bTAtM2gxMXYySDh6bS03IDBoNnY2SDF6Ii8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tdmlzaW9uLXNpbXVsYXRvcjogJzxwYXRoIGQ9Ik0xNy41IDExLjgzYS43OS43OSAwIDAxLS44My44M2gtMy4zNEExLjQ5IDEuNDkgMCAwMTExLjY3IDExVjkuMzNhLjc5Ljc5IDAgMDEuODMtLjgzaDQuMTdhLjc5Ljc5IDAgMDEuODMuODN6TTguMzMgMTFhMS40OSAxLjQ5IDAgMDEtMS42NyAxLjY3SDMuMzNhLjc5Ljc5IDAgMDEtLjgzLS44M1Y5LjMzYS43OS43OSAwIDAxLjgzLS44M0g3LjVhLjc5Ljc5IDAgMDEuODMuODN6TTAgNi4ydjYuMjhhLjIuMiAwIDAwLjIuMmgxLjcyYTEuNjEgMS42MSAwIDAwMS40Mi44M2gzLjMzQTIuNDYgMi40NiAwIDAwOS4xMyAxMmEuMTkuMTkgMCAwMS4xOC0uMTNoMS4zOWEuMTkuMTkgMCAwMS4xOC4xMyAyLjQ2IDIuNDYgMCAwMDIuNDYgMS41M2gzLjMzYy41NSAwIDEuMSAwIDEuMzctLjdhLjIuMiAwIDAxLjE4LS4xM2gxLjU4YS4yLjIgMCAwMC4yLS4yVjYuMmEuMi4yIDAgMDAtLjItLjJILjJhLjIuMiAwIDAwLS4yLjJ6Ii8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXZvbHVtZS1kb3duOiAnPHBhdGggZD0ibTQgMTQgNS4yIDMuOWMuMy4zLjggMCAuOC0uNVYyLjZjMC0uNS0uNS0uOC0uOC0uNUw0IDZtMCA4SDFjLS42IDAtMS0uNC0xLTFWN2MwLS42LjQtMSAxLTFoM205LjUgOC41Yy0uMyAwLS41LS4xLS43LS4zLS40LS40LS40LTEgMC0xLjQgMS42LTEuNiAxLjYtNC4xIDAtNS43LS40LS40LS4zLTEuMS4xLTEuNC40LS4zLjktLjMgMS4zIDAgMi4zIDIuMyAyLjMgNi4xIDAgOC41LS4xLjItLjQuMy0uNy4zeiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXZvbHVtZS1vZmY6ICc8cGF0aCBkPSJtMjAgMTguNi0yLjMtMi4zLTEuNC0xLjQtMS40LTEuNC0xLjUtMS41TDEwIDguNmwtNC00TDEuNCAwIDAgMS40bDQuMyA0LjNMNCA2SDFjLS42IDAtMSAuNC0xIDF2NmMwIC42LjQgMSAxIDFoM2w1LjIgMy45Yy4zLjMuOCAwIC44LS41di02bDUuNiA1LjYgMi45IDIuOSAxLjUtMS4zem0tMTAtMTZjMC0uNS0uNS0uOC0uOC0uNUw3LjYgMy4zIDEwIDUuOFYyLjZ6bTUuNyAxLjdjMi40IDIuNCAyLjkgNS45IDEuNyA4LjhsMS41IDEuNWMyLTMuOCAxLjQtOC41LTEuOC0xMS43LS40LS4zLS45LS4zLTEuMyAwLS40LjQtLjUgMS0uMSAxLjR6bS0yLjkgMi45Yy43LjcgMS4xIDEuNiAxLjEgMi42bDEuOCAxLjhjLjUtMiAwLTQuMi0xLjUtNS44LS40LS4zLS45LS4zLTEuMyAwcy0uNCAxLS4xIDEuNHoiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnPHBhdGggZD0iTTIwIDE4LjYgMTguNiAyMGwtNC41LTQuNS0zLjMgMi40Yy0uMy4zLS44IDAtLjgtLjV2LTZMNi42IDhjLS45IDEuNS0uNyAzLjMuNSA0LjdsLjIuMmMuNC40LjQgMSAwIDEuNC0uMi4yLS40LjMtLjcuMy0uMyAwLS42LS4xLS43LS4zLTItMi4xLTIuMy01LjQtLjctNy43TDMuNyA1LjFjLTIuNSAzLjEtMi4yIDcuNy42IDEwLjYuMi4yLjMuNC4zLjcgMCAuNS0uNCAxLTEgMS0uMiAwLS41LS4xLS43LS4zQy0uNyAxMy40LTEgNy42IDIuMyAzLjdMMCAxLjQgMS40IDBtOS40IDIuMUwxNiA2aDNjLjYgMCAuOS4zIDEgLjlWMTNjMCAuNi0uMy45LS45IDFoLS44TDEwIDUuOFYyLjdjMC0uNi41LS45LjgtLjZ6Ii8+JywgJ2ZhbHNlJzsKQGNkeC1pY29uLXZvbHVtZS11cDogJzxwYXRoIGQ9Ik00IDZ2OGw1LjIgMy45Yy4zLjMuOCAwIC44LS41VjIuNmMwLS41LS41LS44LS44LS41em0wIDhIMWExIDEgMCAwMS0xLTFWN2ExIDEgMCAwMTEtMWgzbTEyLjQgMTEuNGExIDEgMCAwMS0uNy0xLjcgOCA4IDAgMDAwLTExLjRBMSAxIDAgMDExNyAzYTEwIDEwIDAgMDEwIDE0LjIgMSAxIDAgMDEtLjcuM3oiLz48cGF0aCBkPSJNMTMuNSAxNC41YTEgMSAwIDAxLS43LS4zIDEgMSAwIDAxMC0xLjQgNCA0IDAgMDAwLTUuNiAxIDEgMCAwMTEuNC0xLjQgNiA2IDAgMDEwIDguNCAxIDEgMCAwMS0uNy4zeiIvPicsICd0cnVlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsKQGNkeC1pY29uLXdhdGNobGlzdDogJzxwYXRoIGQ9Ik0xIDNoMTZ2MkgxWm0wIDZoNnYySDFabTAgNmg4djJIMVptOC00LjI0aDMuODVMMTQuNSA3bDEuNjUgMy43NkgyMGwtMyAzLjE3LjkgNC4wNS0zLjQtMi4xNEwxMS4xIDE4bC45LTQuMDVaIi8+JywgJ3RydWUnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24td2lraS10ZXh0OiAnPHBhdGggZD0iTTEgM3YxNGgzdi0ySDNWNWgxVjN6bTQgMHYxNGg0di0ySDdWNWgyVjN6bTExIDB2MmgxdjEwaC0xdjJoM1Yzem0tNSAwdjJoMnYxMGgtMnYyaDRWM3oiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24td2luZG93OiAnPHBhdGggZD0iTTIgMmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTZhMiAyIDAgMDAyLTJWNGEyIDIgMCAwMC0yLTJ6bTAgMmgxNnYxMkgyeiIvPjxwYXRoIGQ9Ik00IDZoMTJ2Mkg0eiIvPicsICdmYWxzZScsICdmYWxzZScsICdmYWxzZScsICdmYWxzZSc7CkBjZHgtaWNvbi16b29tLWluOiAnPHBhdGggZD0iTTggMTVhNyA3IDAgMDA0LjItMS40bDUuNCA1LjQgMS40LTEuNC01LjQtNS40QTcgNyAwIDEwOCAxNVptMC0yQTUgNSAwIDExOCAzYTUgNSAwIDAxMCAxMFptMS02aDJ2Mkg5djJIN1Y5SDVWN2gyVjVoMloiLz4nLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnLCAnZmFsc2UnOwpAY2R4LWljb24tem9vbS1vdXQ6ICc8cGF0aCBkPSJNOCAxNWE3IDcgMCAwMDQuMi0xLjRsNS40IDUuNCAxLjQtMS40LTUuNC01LjRBNyA3IDAgMTA4IDE1Wm0wLTJBNSA1IDAgMTE4IDNhNSA1IDAgMDEwIDEwWk01IDdoNnYySDVaIi8+JywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJywgJ2ZhbHNlJzsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bench-strings/lessjs-1.5.0-strings.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3N0cmluZ3MgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL3Nvbi1vZi1hLWJhbmFuYS5jb20iKTsKICBxdW90ZXM6ICJ+IiAifiI7CiAgY29udGVudDogIiMqJTomXiwpIS4ofip9KSI7CiAgZW1wdHk6ICIiOwogIGJyYWNrZXRzOiAieyIgIn0iOwogIGVzY2FwZXM6ICJcImhlbGxvXCIgXFx3b3JsZCI7CiAgZXNjYXBlczI6ICJcImxsbyI7Cn0KI2NvbW1lbnRzIHsKICBjb250ZW50OiAiLyogaGVsbG8gKi8gLy8gbm90LXNvLXNlY3JldCI7Cn0KI3NpbmdsZS1xdW90ZSB7CiAgcXVvdGVzOiAiJyIgIiciOwogIGNvbnRlbnQ6ICciIiMhJiIiJzsKICBlbXB0eTogJyc7CiAgc2VtaS1jb2xvbjogJzsnOwp9CiNlc2NhcGVkIHsKICBmaWx0ZXI6IH4iRFguVHJhbnNmb3JtLk1TLkJTLmZpbHRlcihvcGFjaXR5PTUwKSI7Cn0KI29uZS1saW5lIHsgaW1hZ2U6IHVybChodHRwOi8vdG9va3MuY29tKSB9CiNjcmF6eSB7IGltYWdlOiB1cmwoaHR0cDovLyksICJ9IiwgdXJsKCJodHRwOi8vfSIpIH0KI2ludGVycG9sYXRpb24gewogIEB2YXI6ICcvZGV2JzsKICB1cmw6ICJodHRwOi8vbGVzc2Nzcy5vcmdAe3Zhcn0vaW1hZ2UuanBnIjsKCiAgQHZhcjI6IDI1NjsKICB1cmwyOiAiaHR0cDovL2xlc3Njc3Mub3JnL2ltYWdlLUB7dmFyMn0uanBnIjsKCiAgQHZhcjM6ICM0NTY7CiAgdXJsMzogImh0dHA6Ly9sZXNzY3NzLm9yZ0B7dmFyM30iOwoKICBAdmFyNDogaGVsbG87CiAgdXJsNDogImh0dHA6Ly9sZXNzY3NzLm9yZy9Ae3ZhcjR9IjsKCiAgQHZhcjU6IDU0LjRweDsKICB1cmw1OiAiaHR0cDovL2xlc3Njc3Mub3JnL0B7dmFyNX0iOwp9CgovLyBtdWx0aXBsZSBjYWxscyB3aXRoIHN0cmluZyBpbnRlcnBvbGF0aW9uCgoubWl4LW11bCAoQGE6IGdyZWVuKSB7CiAgICBjb2xvcjogfiJAe2F9IjsKfQoubWl4LW11bC1jbGFzcyB7CiAgICAubWl4LW11bChibHVlKTsKICAgIC5taXgtbXVsKHJlZCk7CiAgICAubWl4LW11bChibGFjayk7CiAgICAubWl4LW11bChvcmFuZ2UpOwp9CgpAdGVzdDogQXJpYWwsIFZlcmRhbmEsIFNhbi1TZXJpZjsKLndhdGVybWFyayB7CiAgQGZhbWlseTogfiJVbml2ZXJzLCBAe3Rlc3R9IjsKICBmYW1pbHk6IEBmYW1pbHk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/css/bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIG5vcm1hbGl6ZS5jc3MgdjIuMS4zIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovCmFydGljbGUsCmFzaWRlLApkZXRhaWxzLApmaWdjYXB0aW9uLApmaWd1cmUsCmZvb3RlciwKaGVhZGVyLApoZ3JvdXAsCm1haW4sCm5hdiwKc2VjdGlvbiwKc3VtbWFyeSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KYXVkaW8sCmNhbnZhcywKdmlkZW8gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQphdWRpbzpub3QoW2NvbnRyb2xzXSkgewogIGRpc3BsYXk6IG5vbmU7CiAgaGVpZ2h0OiAwOwp9CltoaWRkZW5dLAp0ZW1wbGF0ZSB7CiAgZGlzcGxheTogbm9uZTsKfQpodG1sIHsKICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7Cn0KYm9keSB7CiAgbWFyZ2luOiAwOwp9CmEgewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CmE6Zm9jdXMgewogIG91dGxpbmU6IHRoaW4gZG90dGVkOwp9CmE6YWN0aXZlLAphOmhvdmVyIHsKICBvdXRsaW5lOiAwOwp9CmgxIHsKICBmb250LXNpemU6IDJlbTsKICBtYXJnaW46IDAuNjdlbSAwOwp9CmFiYnJbdGl0bGVdIHsKICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkOwp9CmIsCnN0cm9uZyB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KZGZuIHsKICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KaHIgewogIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7CiAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgaGVpZ2h0OiAwOwp9Cm1hcmsgewogIGJhY2tncm91bmQ6ICNmZjA7CiAgY29sb3I6ICMwMDA7Cn0KY29kZSwKa2JkLApwcmUsCnNhbXAgewogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIHNlcmlmOwogIGZvbnQtc2l6ZTogMWVtOwp9CnByZSB7CiAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwp9CnEgewogIHF1b3RlczogIlwyMDFDIiAiXDIwMUQiICJcMjAxOCIgIlwyMDE5IjsKfQpzbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7Cn0Kc3ViLApzdXAgewogIGZvbnQtc2l6ZTogNzUlOwogIGxpbmUtaGVpZ2h0OiAwOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0Kc3VwIHsKICB0b3A6IC0wLjVlbTsKfQpzdWIgewogIGJvdHRvbTogLTAuMjVlbTsKfQppbWcgewogIGJvcmRlcjogMDsKfQpzdmc6bm90KDpyb290KSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQpmaWd1cmUgewogIG1hcmdpbjogMDsKfQpmaWVsZHNldCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsKICBtYXJnaW46IDAgMnB4OwogIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsKfQpsZWdlbmQgewogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwp9CmJ1dHRvbiwKaW5wdXQsCnNlbGVjdCwKdGV4dGFyZWEgewogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtc2l6ZTogMTAwJTsKICBtYXJnaW46IDA7Cn0KYnV0dG9uLAppbnB1dCB7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQpidXR0b24sCnNlbGVjdCB7CiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KYnV0dG9uLApodG1sIGlucHV0W3R5cGU9ImJ1dHRvbiJdLAppbnB1dFt0eXBlPSJyZXNldCJdLAppbnB1dFt0eXBlPSJzdWJtaXQiXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247CiAgY3Vyc29yOiBwb2ludGVyOwp9CmJ1dHRvbltkaXNhYmxlZF0sCmh0bWwgaW5wdXRbZGlzYWJsZWRdIHsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKaW5wdXRbdHlwZT0icmFkaW8iXSB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBwYWRkaW5nOiAwOwp9CmlucHV0W3R5cGU9InNlYXJjaCJdIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsKICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7CiAgYm94LXNpemluZzogY29udGVudC1ib3g7Cn0KaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sCmlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLAppbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7Cn0KdGV4dGFyZWEgewogIG92ZXJmbG93OiBhdXRvOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KdGFibGUgewogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgYm9yZGVyLXNwYWNpbmc6IDA7Cn0KQG1lZGlhIHByaW50IHsKICAqIHsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgYSwKICBhOnZpc2l0ZWQgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQogIGFbaHJlZl06YWZ0ZXIgewogICAgY29udGVudDogIiAoIiBhdHRyKGhyZWYpICIpIjsKICB9CiAgYWJiclt0aXRsZV06YWZ0ZXIgewogICAgY29udGVudDogIiAoIiBhdHRyKHRpdGxlKSAiKSI7CiAgfQogIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIsCiAgYVtocmVmXj0iIyJdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogIH0KICBwcmUsCiAgYmxvY2txdW90ZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwogIH0KICB0aGVhZCB7CiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7CiAgfQogIHRyLAogIGltZyB7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgfQogIGltZyB7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICB9CiAgQHBhZ2UgewogICAgbWFyZ2luOiAyY20gMC41Y207CiAgfQogIHAsCiAgaDIsCiAgaDMgewogICAgb3JwaGFuczogMzsKICAgIHdpZG93czogMzsKICB9CiAgaDIsCiAgaDMgewogICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgfQogIHNlbGVjdCB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLnRhYmxlIHRkLAogIC50YWJsZSB0aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgfQogIC5idG4gPiAuY2FyZXQsCiAgLmRyb3B1cCA+IC5idG4gPiAuY2FyZXQgewogICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMCAhaW1wb3J0YW50OwogIH0KICAubGFiZWwgewogICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICB9CiAgLnRhYmxlIHsKICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWJvcmRlcmVkIHRoLAogIC50YWJsZS1ib3JkZXJlZCB0ZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7CiAgfQp9CiosCio6YmVmb3JlLAoqOmFmdGVyIHsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KaHRtbCB7CiAgZm9udC1zaXplOiA2Mi41JTsKICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7Cn0KYm9keSB7CiAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjMzMzMzMzOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KaW5wdXQsCmJ1dHRvbiwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CmEgewogIGNvbG9yOiAjNDI4YmNhOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQphOmhvdmVyLAphOmZvY3VzIHsKICBjb2xvcjogIzJhNjQ5NjsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQphOmZvY3VzIHsKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7Cn0KaW1nIHsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5pbWctcmVzcG9uc2l2ZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWF4LXdpZHRoOiAxMDAlOwogIGhlaWdodDogYXV0bzsKfQouaW1nLXJvdW5kZWQgewogIGJvcmRlci1yYWRpdXM6IDZweDsKfQouaW1nLXRodW1ibmFpbCB7CiAgcGFkZGluZzogNHB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDsKICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWF4LXdpZHRoOiAxMDAlOwogIGhlaWdodDogYXV0bzsKfQouaW1nLWNpcmNsZSB7CiAgYm9yZGVyLXJhZGl1czogNTAlOwp9CmhyIHsKICBtYXJnaW4tdG9wOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYm9yZGVyOiAwOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlZWVlOwp9Ci5zci1vbmx5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDFweDsKICBoZWlnaHQ6IDFweDsKICBtYXJnaW46IC0xcHg7CiAgcGFkZGluZzogMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgYm9yZGVyOiAwOwp9CmgxLApoMiwKaDMsCmg0LApoNSwKaDYsCi5oMSwKLmgyLAouaDMsCi5oNCwKLmg1LAouaDYgewogIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgbGluZS1oZWlnaHQ6IDEuMTsKICBjb2xvcjogaW5oZXJpdDsKfQpoMSBzbWFsbCwKaDIgc21hbGwsCmgzIHNtYWxsLApoNCBzbWFsbCwKaDUgc21hbGwsCmg2IHNtYWxsLAouaDEgc21hbGwsCi5oMiBzbWFsbCwKLmgzIHNtYWxsLAouaDQgc21hbGwsCi5oNSBzbWFsbCwKLmg2IHNtYWxsLApoMSAuc21hbGwsCmgyIC5zbWFsbCwKaDMgLnNtYWxsLApoNCAuc21hbGwsCmg1IC5zbWFsbCwKaDYgLnNtYWxsLAouaDEgLnNtYWxsLAouaDIgLnNtYWxsLAouaDMgLnNtYWxsLAouaDQgLnNtYWxsLAouaDUgLnNtYWxsLAouaDYgLnNtYWxsIHsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiAjOTk5OTk5Owp9CmgxLApoMiwKaDMgewogIG1hcmdpbi10b3A6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQpoMSBzbWFsbCwKaDIgc21hbGwsCmgzIHNtYWxsLApoMSAuc21hbGwsCmgyIC5zbWFsbCwKaDMgLnNtYWxsIHsKICBmb250LXNpemU6IDY1JTsKfQpoNCwKaDUsCmg2IHsKICBtYXJnaW4tdG9wOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KaDQgc21hbGwsCmg1IHNtYWxsLApoNiBzbWFsbCwKaDQgLnNtYWxsLApoNSAuc21hbGwsCmg2IC5zbWFsbCB7CiAgZm9udC1zaXplOiA3NSU7Cn0KaDEsCi5oMSB7CiAgZm9udC1zaXplOiAzNnB4Owp9CmgyLAouaDIgewogIGZvbnQtc2l6ZTogMzBweDsKfQpoMywKLmgzIHsKICBmb250LXNpemU6IDI0cHg7Cn0KaDQsCi5oNCB7CiAgZm9udC1zaXplOiAxOHB4Owp9Cmg1LAouaDUgewogIGZvbnQtc2l6ZTogMTRweDsKfQpoNiwKLmg2IHsKICBmb250LXNpemU6IDEycHg7Cn0KcCB7CiAgbWFyZ2luOiAwIDAgMTBweDsKfQoubGVhZCB7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBmb250LXNpemU6IDE2cHg7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBsaW5lLWhlaWdodDogMS40Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5sZWFkIHsKICAgIGZvbnQtc2l6ZTogMjFweDsKICB9Cn0Kc21hbGwsCi5zbWFsbCB7CiAgZm9udC1zaXplOiA4NSU7Cn0KY2l0ZSB7CiAgZm9udC1zdHlsZTogbm9ybWFsOwp9Ci50ZXh0LW11dGVkIHsKICBjb2xvcjogIzk5OTk5OTsKfQoudGV4dC1wcmltYXJ5IHsKICBjb2xvcjogIzQyOGJjYTsKfQoudGV4dC1wcmltYXJ5OmhvdmVyIHsKICBjb2xvcjogIzMwNzFhOTsKfQoudGV4dC13YXJuaW5nIHsKICBjb2xvcjogIzhhNmQzYjsKfQoudGV4dC13YXJuaW5nOmhvdmVyIHsKICBjb2xvcjogIzY2NTEyYzsKfQoudGV4dC1kYW5nZXIgewogIGNvbG9yOiAjYTk0NDQyOwp9Ci50ZXh0LWRhbmdlcjpob3ZlciB7CiAgY29sb3I6ICM4NDM1MzQ7Cn0KLnRleHQtc3VjY2VzcyB7CiAgY29sb3I6ICMzYzc2M2Q7Cn0KLnRleHQtc3VjY2Vzczpob3ZlciB7CiAgY29sb3I6ICMyYjU0MmM7Cn0KLnRleHQtaW5mbyB7CiAgY29sb3I6ICMzMTcwOGY7Cn0KLnRleHQtaW5mbzpob3ZlciB7CiAgY29sb3I6ICMyNDUyNjk7Cn0KLnRleHQtbGVmdCB7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoudGV4dC1yaWdodCB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLnRleHQtY2VudGVyIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnBhZ2UtaGVhZGVyIHsKICBwYWRkaW5nLWJvdHRvbTogOXB4OwogIG1hcmdpbjogNDBweCAwIDIwcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWVlZWU7Cn0KdWwsCm9sIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KdWwgdWwsCm9sIHVsLAp1bCBvbCwKb2wgb2wgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmxpc3QtdW5zdHlsZWQgewogIHBhZGRpbmctbGVmdDogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5saXN0LWlubGluZSB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmxpc3QtaW5saW5lID4gbGkgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLWxlZnQ6IDVweDsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7Cn0KLmxpc3QtaW5saW5lID4gbGk6Zmlyc3QtY2hpbGQgewogIHBhZGRpbmctbGVmdDogMDsKfQpkbCB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CmR0LApkZCB7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7Cn0KZHQgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CmRkIHsKICBtYXJnaW4tbGVmdDogMDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZGwtaG9yaXpvbnRhbCBkdCB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiAxNjBweDsKICAgIGNsZWFyOiBsZWZ0OwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIH0KICAuZGwtaG9yaXpvbnRhbCBkZCB7CiAgICBtYXJnaW4tbGVmdDogMTgwcHg7CiAgfQogIC5kbC1ob3Jpem9udGFsIGRkOmJlZm9yZSwKICAuZGwtaG9yaXpvbnRhbCBkZDphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgLmRsLWhvcml6b250YWwgZGQ6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7CiAgfQogIC5kbC1ob3Jpem9udGFsIGRkOmJlZm9yZSwKICAuZGwtaG9yaXpvbnRhbCBkZDphZnRlciB7CiAgICBjb250ZW50OiAiICI7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgLmRsLWhvcml6b250YWwgZGQ6YWZ0ZXIgewogICAgY2xlYXI6IGJvdGg7CiAgfQp9CmFiYnJbdGl0bGVdLAphYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHsKICBjdXJzb3I6IGhlbHA7CiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjOTk5OTk5Owp9Ci5pbml0aWFsaXNtIHsKICBmb250LXNpemU6IDkwJTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CmJsb2NrcXVvdGUgewogIHBhZGRpbmc6IDEwcHggMjBweDsKICBtYXJnaW46IDAgMCAyMHB4OwogIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2VlZWVlZTsKfQpibG9ja3F1b3RlIHAgewogIGZvbnQtc2l6ZTogMTcuNXB4OwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjU7Cn0KYmxvY2txdW90ZSBwOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KYmxvY2txdW90ZSBzbWFsbCwKYmxvY2txdW90ZSAuc21hbGwgewogIGRpc3BsYXk6IGJsb2NrOwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjOTk5OTk5Owp9CmJsb2NrcXVvdGUgc21hbGw6YmVmb3JlLApibG9ja3F1b3RlIC5zbWFsbDpiZWZvcmUgewogIGNvbnRlbnQ6ICdcMjAxNCBcMDBBMCc7Cn0KYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMDsKICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCAjZWVlZWVlOwogIGJvcmRlci1sZWZ0OiAwOwp9CmJsb2NrcXVvdGUucHVsbC1yaWdodCBwLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGwsCmJsb2NrcXVvdGUucHVsbC1yaWdodCAuc21hbGwgewogIHRleHQtYWxpZ246IHJpZ2h0Owp9CmJsb2NrcXVvdGUucHVsbC1yaWdodCBzbWFsbDpiZWZvcmUsCmJsb2NrcXVvdGUucHVsbC1yaWdodCAuc21hbGw6YmVmb3JlIHsKICBjb250ZW50OiAnJzsKfQpibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGw6YWZ0ZXIsCmJsb2NrcXVvdGUucHVsbC1yaWdodCAuc21hbGw6YWZ0ZXIgewogIGNvbnRlbnQ6ICdcMDBBMCBcMjAxNCc7Cn0KYmxvY2txdW90ZTpiZWZvcmUsCmJsb2NrcXVvdGU6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwp9CmFkZHJlc3MgewogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwp9CmNvZGUsCmtiZCwKcHJlLApzYW1wIHsKICBmb250LWZhbWlseTogTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKfQpjb2RlIHsKICBwYWRkaW5nOiAycHggNHB4OwogIGZvbnQtc2l6ZTogOTAlOwogIGNvbG9yOiAjYzcyNTRlOwogIGJhY2tncm91bmQtY29sb3I6ICNmOWYyZjQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KcHJlIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiA5LjVweDsKICBtYXJnaW46IDAgMCAxMHB4OwogIGZvbnQtc2l6ZTogMTNweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgd29yZC13cmFwOiBicmVhay13b3JkOwogIGNvbG9yOiAjMzMzMzMzOwogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KcHJlIGNvZGUgewogIHBhZGRpbmc6IDA7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGNvbG9yOiBpbmhlcml0OwogIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5wcmUtc2Nyb2xsYWJsZSB7CiAgbWF4LWhlaWdodDogMzQwcHg7CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwp9Ci5jb250YWluZXIgewogIG1hcmdpbi1yaWdodDogYXV0bzsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgcGFkZGluZy1yaWdodDogMTVweDsKfQouY29udGFpbmVyOmJlZm9yZSwKLmNvbnRhaW5lcjphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5jb250YWluZXI6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5jb250YWluZXI6YmVmb3JlLAouY29udGFpbmVyOmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLmNvbnRhaW5lcjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICB3aWR0aDogNzUwcHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5jb250YWluZXIgewogICAgd2lkdGg6IDk3MHB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICB3aWR0aDogMTE3MHB4OwogIH0KfQoucm93IHsKICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKfQoucm93OmJlZm9yZSwKLnJvdzphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5yb3c6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5yb3c6YmVmb3JlLAoucm93OmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLnJvdzphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLmNvbC14cy0xLCAuY29sLXNtLTEsIC5jb2wtbWQtMSwgLmNvbC1sZy0xLCAuY29sLXhzLTIsIC5jb2wtc20tMiwgLmNvbC1tZC0yLCAuY29sLWxnLTIsIC5jb2wteHMtMywgLmNvbC1zbS0zLCAuY29sLW1kLTMsIC5jb2wtbGctMywgLmNvbC14cy00LCAuY29sLXNtLTQsIC5jb2wtbWQtNCwgLmNvbC1sZy00LCAuY29sLXhzLTUsIC5jb2wtc20tNSwgLmNvbC1tZC01LCAuY29sLWxnLTUsIC5jb2wteHMtNiwgLmNvbC1zbS02LCAuY29sLW1kLTYsIC5jb2wtbGctNiwgLmNvbC14cy03LCAuY29sLXNtLTcsIC5jb2wtbWQtNywgLmNvbC1sZy03LCAuY29sLXhzLTgsIC5jb2wtc20tOCwgLmNvbC1tZC04LCAuY29sLWxnLTgsIC5jb2wteHMtOSwgLmNvbC1zbS05LCAuY29sLW1kLTksIC5jb2wtbGctOSwgLmNvbC14cy0xMCwgLmNvbC1zbS0xMCwgLmNvbC1tZC0xMCwgLmNvbC1sZy0xMCwgLmNvbC14cy0xMSwgLmNvbC1zbS0xMSwgLmNvbC1tZC0xMSwgLmNvbC1sZy0xMSwgLmNvbC14cy0xMiwgLmNvbC1zbS0xMiwgLmNvbC1tZC0xMiwgLmNvbC1sZy0xMiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgcGFkZGluZy1yaWdodDogMTVweDsKfQouY29sLXhzLTEsIC5jb2wteHMtMiwgLmNvbC14cy0zLCAuY29sLXhzLTQsIC5jb2wteHMtNSwgLmNvbC14cy02LCAuY29sLXhzLTcsIC5jb2wteHMtOCwgLmNvbC14cy05LCAuY29sLXhzLTEwLCAuY29sLXhzLTExLCAuY29sLXhzLTEyIHsKICBmbG9hdDogbGVmdDsKfQouY29sLXhzLTEyIHsKICB3aWR0aDogMTAwJTsKfQouY29sLXhzLTExIHsKICB3aWR0aDogOTEuNjY2NjY2NjclOwp9Ci5jb2wteHMtMTAgewogIHdpZHRoOiA4My4zMzMzMzMzMyU7Cn0KLmNvbC14cy05IHsKICB3aWR0aDogNzUlOwp9Ci5jb2wteHMtOCB7CiAgd2lkdGg6IDY2LjY2NjY2NjY3JTsKfQouY29sLXhzLTcgewogIHdpZHRoOiA1OC4zMzMzMzMzMyU7Cn0KLmNvbC14cy02IHsKICB3aWR0aDogNTAlOwp9Ci5jb2wteHMtNSB7CiAgd2lkdGg6IDQxLjY2NjY2NjY3JTsKfQouY29sLXhzLTQgewogIHdpZHRoOiAzMy4zMzMzMzMzMyU7Cn0KLmNvbC14cy0zIHsKICB3aWR0aDogMjUlOwp9Ci5jb2wteHMtMiB7CiAgd2lkdGg6IDE2LjY2NjY2NjY3JTsKfQouY29sLXhzLTEgewogIHdpZHRoOiA4LjMzMzMzMzMzJTsKfQouY29sLXhzLXB1bGwtMTIgewogIHJpZ2h0OiAxMDAlOwp9Ci5jb2wteHMtcHVsbC0xMSB7CiAgcmlnaHQ6IDkxLjY2NjY2NjY3JTsKfQouY29sLXhzLXB1bGwtMTAgewogIHJpZ2h0OiA4My4zMzMzMzMzMyU7Cn0KLmNvbC14cy1wdWxsLTkgewogIHJpZ2h0OiA3NSU7Cn0KLmNvbC14cy1wdWxsLTggewogIHJpZ2h0OiA2Ni42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdWxsLTcgewogIHJpZ2h0OiA1OC4zMzMzMzMzMyU7Cn0KLmNvbC14cy1wdWxsLTYgewogIHJpZ2h0OiA1MCU7Cn0KLmNvbC14cy1wdWxsLTUgewogIHJpZ2h0OiA0MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdWxsLTQgewogIHJpZ2h0OiAzMy4zMzMzMzMzMyU7Cn0KLmNvbC14cy1wdWxsLTMgewogIHJpZ2h0OiAyNSU7Cn0KLmNvbC14cy1wdWxsLTIgewogIHJpZ2h0OiAxNi42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdWxsLTEgewogIHJpZ2h0OiA4LjMzMzMzMzMzJTsKfQouY29sLXhzLXB1bGwtMCB7CiAgcmlnaHQ6IDAlOwp9Ci5jb2wteHMtcHVzaC0xMiB7CiAgbGVmdDogMTAwJTsKfQouY29sLXhzLXB1c2gtMTEgewogIGxlZnQ6IDkxLjY2NjY2NjY3JTsKfQouY29sLXhzLXB1c2gtMTAgewogIGxlZnQ6IDgzLjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtOSB7CiAgbGVmdDogNzUlOwp9Ci5jb2wteHMtcHVzaC04IHsKICBsZWZ0OiA2Ni42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTcgewogIGxlZnQ6IDU4LjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtNiB7CiAgbGVmdDogNTAlOwp9Ci5jb2wteHMtcHVzaC01IHsKICBsZWZ0OiA0MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTQgewogIGxlZnQ6IDMzLjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtMyB7CiAgbGVmdDogMjUlOwp9Ci5jb2wteHMtcHVzaC0yIHsKICBsZWZ0OiAxNi42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTEgewogIGxlZnQ6IDguMzMzMzMzMzMlOwp9Ci5jb2wteHMtcHVzaC0wIHsKICBsZWZ0OiAwJTsKfQouY29sLXhzLW9mZnNldC0xMiB7CiAgbWFyZ2luLWxlZnQ6IDEwMCU7Cn0KLmNvbC14cy1vZmZzZXQtMTEgewogIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1vZmZzZXQtMTAgewogIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7Cn0KLmNvbC14cy1vZmZzZXQtOSB7CiAgbWFyZ2luLWxlZnQ6IDc1JTsKfQouY29sLXhzLW9mZnNldC04IHsKICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwp9Ci5jb2wteHMtb2Zmc2V0LTcgewogIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7Cn0KLmNvbC14cy1vZmZzZXQtNiB7CiAgbWFyZ2luLWxlZnQ6IDUwJTsKfQouY29sLXhzLW9mZnNldC01IHsKICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwp9Ci5jb2wteHMtb2Zmc2V0LTQgewogIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7Cn0KLmNvbC14cy1vZmZzZXQtMyB7CiAgbWFyZ2luLWxlZnQ6IDI1JTsKfQouY29sLXhzLW9mZnNldC0yIHsKICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwp9Ci5jb2wteHMtb2Zmc2V0LTEgewogIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKfQouY29sLXhzLW9mZnNldC0wIHsKICBtYXJnaW4tbGVmdDogMCU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbC1zbS0xLCAuY29sLXNtLTIsIC5jb2wtc20tMywgLmNvbC1zbS00LCAuY29sLXNtLTUsIC5jb2wtc20tNiwgLmNvbC1zbS03LCAuY29sLXNtLTgsIC5jb2wtc20tOSwgLmNvbC1zbS0xMCwgLmNvbC1zbS0xMSwgLmNvbC1zbS0xMiB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgLmNvbC1zbS0xMiB7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgLmNvbC1zbS0xMSB7CiAgICB3aWR0aDogOTEuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLTEwIHsKICAgIHdpZHRoOiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tOSB7CiAgICB3aWR0aDogNzUlOwogIH0KICAuY29sLXNtLTggewogICAgd2lkdGg6IDY2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS03IHsKICAgIHdpZHRoOiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tNiB7CiAgICB3aWR0aDogNTAlOwogIH0KICAuY29sLXNtLTUgewogICAgd2lkdGg6IDQxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS00IHsKICAgIHdpZHRoOiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tMyB7CiAgICB3aWR0aDogMjUlOwogIH0KICAuY29sLXNtLTIgewogICAgd2lkdGg6IDE2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS0xIHsKICAgIHdpZHRoOiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdWxsLTEyIHsKICAgIHJpZ2h0OiAxMDAlOwogIH0KICAuY29sLXNtLXB1bGwtMTEgewogICAgcmlnaHQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS1wdWxsLTEwIHsKICAgIHJpZ2h0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVsbC05IHsKICAgIHJpZ2h0OiA3NSU7CiAgfQogIC5jb2wtc20tcHVsbC04IHsKICAgIHJpZ2h0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVsbC03IHsKICAgIHJpZ2h0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVsbC02IHsKICAgIHJpZ2h0OiA1MCU7CiAgfQogIC5jb2wtc20tcHVsbC01IHsKICAgIHJpZ2h0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVsbC00IHsKICAgIHJpZ2h0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVsbC0zIHsKICAgIHJpZ2h0OiAyNSU7CiAgfQogIC5jb2wtc20tcHVsbC0yIHsKICAgIHJpZ2h0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVsbC0xIHsKICAgIHJpZ2h0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdWxsLTAgewogICAgcmlnaHQ6IDAlOwogIH0KICAuY29sLXNtLXB1c2gtMTIgewogICAgbGVmdDogMTAwJTsKICB9CiAgLmNvbC1zbS1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS1wdXNoLTEwIHsKICAgIGxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdXNoLTkgewogICAgbGVmdDogNzUlOwogIH0KICAuY29sLXNtLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVzaC03IHsKICAgIGxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdXNoLTYgewogICAgbGVmdDogNTAlOwogIH0KICAuY29sLXNtLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVzaC00IHsKICAgIGxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdXNoLTMgewogICAgbGVmdDogMjUlOwogIH0KICAuY29sLXNtLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVzaC0xIHsKICAgIGxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLXNtLXB1c2gtMCB7CiAgICBsZWZ0OiAwJTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMTIgewogICAgbWFyZ2luLWxlZnQ6IDEwMCU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMCB7CiAgICBtYXJnaW4tbGVmdDogMCU7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5jb2wtbWQtMSwgLmNvbC1tZC0yLCAuY29sLW1kLTMsIC5jb2wtbWQtNCwgLmNvbC1tZC01LCAuY29sLW1kLTYsIC5jb2wtbWQtNywgLmNvbC1tZC04LCAuY29sLW1kLTksIC5jb2wtbWQtMTAsIC5jb2wtbWQtMTEsIC5jb2wtbWQtMTIgewogICAgZmxvYXQ6IGxlZnQ7CiAgfQogIC5jb2wtbWQtMTIgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtbWQtMTEgewogICAgd2lkdGg6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC0xMCB7CiAgICB3aWR0aDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTkgewogICAgd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1tZC04IHsKICAgIHdpZHRoOiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtNyB7CiAgICB3aWR0aDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTYgewogICAgd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1tZC01IHsKICAgIHdpZHRoOiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtNCB7CiAgICB3aWR0aDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTMgewogICAgd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1tZC0yIHsKICAgIHdpZHRoOiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtMSB7CiAgICB3aWR0aDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVsbC0xMiB7CiAgICByaWdodDogMTAwJTsKICB9CiAgLmNvbC1tZC1wdWxsLTExIHsKICAgIHJpZ2h0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtcHVsbC0xMCB7CiAgICByaWdodDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtOSB7CiAgICByaWdodDogNzUlOwogIH0KICAuY29sLW1kLXB1bGwtOCB7CiAgICByaWdodDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtNyB7CiAgICByaWdodDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtNiB7CiAgICByaWdodDogNTAlOwogIH0KICAuY29sLW1kLXB1bGwtNSB7CiAgICByaWdodDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtNCB7CiAgICByaWdodDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtMyB7CiAgICByaWdodDogMjUlOwogIH0KICAuY29sLW1kLXB1bGwtMiB7CiAgICByaWdodDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtMSB7CiAgICByaWdodDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVsbC0wIHsKICAgIHJpZ2h0OiAwJTsKICB9CiAgLmNvbC1tZC1wdXNoLTEyIHsKICAgIGxlZnQ6IDEwMCU7CiAgfQogIC5jb2wtbWQtcHVzaC0xMSB7CiAgICBsZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtcHVzaC0xMCB7CiAgICBsZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVzaC05IHsKICAgIGxlZnQ6IDc1JTsKICB9CiAgLmNvbC1tZC1wdXNoLTggewogICAgbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1c2gtNyB7CiAgICBsZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVzaC02IHsKICAgIGxlZnQ6IDUwJTsKICB9CiAgLmNvbC1tZC1wdXNoLTUgewogICAgbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1c2gtNCB7CiAgICBsZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVzaC0zIHsKICAgIGxlZnQ6IDI1JTsKICB9CiAgLmNvbC1tZC1wdXNoLTIgewogICAgbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1c2gtMSB7CiAgICBsZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC1wdXNoLTAgewogICAgbGVmdDogMCU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTEyIHsKICAgIG1hcmdpbi1sZWZ0OiAxMDAlOwogIH0KICAuY29sLW1kLW9mZnNldC0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLW9mZnNldC0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLW9mZnNldC05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTggewogICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLW9mZnNldC02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLW9mZnNldC0zIHsKICAgIG1hcmdpbi1sZWZ0OiAyNSU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTAgewogICAgbWFyZ2luLWxlZnQ6IDAlOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmNvbC1sZy0xLCAuY29sLWxnLTIsIC5jb2wtbGctMywgLmNvbC1sZy00LCAuY29sLWxnLTUsIC5jb2wtbGctNiwgLmNvbC1sZy03LCAuY29sLWxnLTgsIC5jb2wtbGctOSwgLmNvbC1sZy0xMCwgLmNvbC1sZy0xMSwgLmNvbC1sZy0xMiB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgLmNvbC1sZy0xMiB7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgLmNvbC1sZy0xMSB7CiAgICB3aWR0aDogOTEuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLTEwIHsKICAgIHdpZHRoOiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctOSB7CiAgICB3aWR0aDogNzUlOwogIH0KICAuY29sLWxnLTggewogICAgd2lkdGg6IDY2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy03IHsKICAgIHdpZHRoOiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctNiB7CiAgICB3aWR0aDogNTAlOwogIH0KICAuY29sLWxnLTUgewogICAgd2lkdGg6IDQxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy00IHsKICAgIHdpZHRoOiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctMyB7CiAgICB3aWR0aDogMjUlOwogIH0KICAuY29sLWxnLTIgewogICAgd2lkdGg6IDE2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy0xIHsKICAgIHdpZHRoOiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdWxsLTEyIHsKICAgIHJpZ2h0OiAxMDAlOwogIH0KICAuY29sLWxnLXB1bGwtMTEgewogICAgcmlnaHQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy1wdWxsLTEwIHsKICAgIHJpZ2h0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctcHVsbC05IHsKICAgIHJpZ2h0OiA3NSU7CiAgfQogIC5jb2wtbGctcHVsbC04IHsKICAgIHJpZ2h0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVsbC03IHsKICAgIHJpZ2h0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctcHVsbC02IHsKICAgIHJpZ2h0OiA1MCU7CiAgfQogIC5jb2wtbGctcHVsbC01IHsKICAgIHJpZ2h0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVsbC00IHsKICAgIHJpZ2h0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctcHVsbC0zIHsKICAgIHJpZ2h0OiAyNSU7CiAgfQogIC5jb2wtbGctcHVsbC0yIHsKICAgIHJpZ2h0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVsbC0xIHsKICAgIHJpZ2h0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdWxsLTAgewogICAgcmlnaHQ6IDAlOwogIH0KICAuY29sLWxnLXB1c2gtMTIgewogICAgbGVmdDogMTAwJTsKICB9CiAgLmNvbC1sZy1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy1wdXNoLTEwIHsKICAgIGxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTkgewogICAgbGVmdDogNzUlOwogIH0KICAuY29sLWxnLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC03IHsKICAgIGxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTYgewogICAgbGVmdDogNTAlOwogIH0KICAuY29sLWxnLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC00IHsKICAgIGxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTMgewogICAgbGVmdDogMjUlOwogIH0KICAuY29sLWxnLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC0xIHsKICAgIGxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLXB1c2gtMCB7CiAgICBsZWZ0OiAwJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMTIgewogICAgbWFyZ2luLWxlZnQ6IDEwMCU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLW9mZnNldC03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLW9mZnNldC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLW9mZnNldC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMCB7CiAgICBtYXJnaW4tbGVmdDogMCU7CiAgfQp9CnRhYmxlIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KdGggewogIHRleHQtYWxpZ246IGxlZnQ7Cn0KLnRhYmxlIHsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGgsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQgewogIHBhZGRpbmc6IDhweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCB7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RkZDsKfQoudGFibGUgPiBjYXB0aW9uICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiBjb2xncm91cCArIHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCwKLnRhYmxlID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiBjYXB0aW9uICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkLAoudGFibGUgPiBjb2xncm91cCArIHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0ZCwKLnRhYmxlID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkIHsKICBib3JkZXItdG9wOiAwOwp9Ci50YWJsZSA+IHRib2R5ICsgdGJvZHkgewogIGJvcmRlci10b3A6IDJweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSAudGFibGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLnRhYmxlLWNvbmRlbnNlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRib2R5ID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRmb290ID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRmb290ID4gdHIgPiB0ZCB7CiAgcGFkZGluZzogNXB4Owp9Ci50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKfQoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGgsCi50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoLAoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGQsCi50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KLnRhYmxlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1jaGlsZChvZGQpID4gdGQsCi50YWJsZS1zdHJpcGVkID4gdGJvZHkgPiB0cjpudGgtY2hpbGQob2RkKSA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9CnRhYmxlIGNvbFtjbGFzcyo9ImNvbC0iXSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBmbG9hdDogbm9uZTsKICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47Cn0KdGFibGUgdGRbY2xhc3MqPSJjb2wtIl0sCnRhYmxlIHRoW2NsYXNzKj0iY29sLSJdIHsKICBmbG9hdDogbm9uZTsKICBkaXNwbGF5OiB0YWJsZS1jZWxsOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiAuYWN0aXZlLAoudGFibGUgPiB0Ym9keSA+IHRyID4gLmFjdGl2ZSwKLnRhYmxlID4gdGZvb3QgPiB0ciA+IC5hY3RpdmUsCi50YWJsZSA+IHRoZWFkID4gLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0Ym9keSA+IC5hY3RpdmUgPiB0ZCwKLnRhYmxlID4gdGZvb3QgPiAuYWN0aXZlID4gdGQsCi50YWJsZSA+IHRoZWFkID4gLmFjdGl2ZSA+IHRoLAoudGFibGUgPiB0Ym9keSA+IC5hY3RpdmUgPiB0aCwKLnRhYmxlID4gdGZvb3QgPiAuYWN0aXZlID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IC5hY3RpdmU6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gLmFjdGl2ZTpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IC5hY3RpdmU6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZThlODsKfQoudGFibGUgPiB0aGVhZCA+IHRyID4gLnN1Y2Nlc3MsCi50YWJsZSA+IHRib2R5ID4gdHIgPiAuc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IC5zdWNjZXNzLAoudGFibGUgPiB0aGVhZCA+IC5zdWNjZXNzID4gdGQsCi50YWJsZSA+IHRib2R5ID4gLnN1Y2Nlc3MgPiB0ZCwKLnRhYmxlID4gdGZvb3QgPiAuc3VjY2VzcyA+IHRkLAoudGFibGUgPiB0aGVhZCA+IC5zdWNjZXNzID4gdGgsCi50YWJsZSA+IHRib2R5ID4gLnN1Y2Nlc3MgPiB0aCwKLnRhYmxlID4gdGZvb3QgPiAuc3VjY2VzcyA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmMGQ4Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiAuc3VjY2Vzczpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiAuc3VjY2Vzczpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IC5zdWNjZXNzOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNkMGU5YzY7Cn0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiAuZGFuZ2VyLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gLmRhbmdlciwKLnRhYmxlID4gdGhlYWQgPiAuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRib2R5ID4gLmRhbmdlciA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IC5kYW5nZXIgPiB0ZCwKLnRhYmxlID4gdGhlYWQgPiAuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRib2R5ID4gLmRhbmdlciA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IC5kYW5nZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKfQoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiAuZGFuZ2VyOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gLmRhbmdlcjpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJjY2NjOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiAud2FybmluZywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IC53YXJuaW5nLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gLndhcm5pbmcsCi50YWJsZSA+IHRoZWFkID4gLndhcm5pbmcgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiAud2FybmluZyA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IC53YXJuaW5nID4gdGQsCi50YWJsZSA+IHRoZWFkID4gLndhcm5pbmcgPiB0aCwKLnRhYmxlID4gdGJvZHkgPiAud2FybmluZyA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IC53YXJuaW5nID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IC53YXJuaW5nOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IC53YXJuaW5nOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gLndhcm5pbmc6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZjJjYzsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBvdmVyZmxvdy15OiBoaWRkZW47CiAgICBvdmVyZmxvdy14OiBzY3JvbGw7CiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLWxlZnQ6IDA7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGg6bGFzdC1jaGlsZCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0aDpsYXN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmxhc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGQ6bGFzdC1jaGlsZCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0ZDpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1yaWdodDogMDsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmxhc3QtY2hpbGQgPiB0aCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHI6bGFzdC1jaGlsZCA+IHRoLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0cjpsYXN0LWNoaWxkID4gdGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0ZCB7CiAgICBib3JkZXItYm90dG9tOiAwOwogIH0KfQpmaWVsZHNldCB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDA7CiAgYm9yZGVyOiAwOwp9CmxlZ2VuZCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGZvbnQtc2l6ZTogMjFweDsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICBjb2xvcjogIzMzMzMzMzsKICBib3JkZXI6IDA7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTU7Cn0KbGFiZWwgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQppbnB1dFt0eXBlPSJyYWRpbyJdLAppbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBtYXJnaW46IDRweCAwIDA7CiAgbWFyZ2luLXRvcDogMXB4IFw5OwogIC8qIElFOC05ICovCiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQppbnB1dFt0eXBlPSJmaWxlIl0gewogIGRpc3BsYXk6IGJsb2NrOwp9CnNlbGVjdFttdWx0aXBsZV0sCnNlbGVjdFtzaXplXSB7CiAgaGVpZ2h0OiBhdXRvOwp9CnNlbGVjdCBvcHRncm91cCB7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGZvbnQtc3R5bGU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Cn0KaW5wdXRbdHlwZT0iZmlsZSJdOmZvY3VzLAppbnB1dFt0eXBlPSJyYWRpbyJdOmZvY3VzLAppbnB1dFt0eXBlPSJjaGVja2JveCJdOmZvY3VzIHsKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7Cn0KaW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sCmlucHV0W3R5cGU9Im51bWJlciJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKICBoZWlnaHQ6IGF1dG87Cn0Kb3V0cHV0IHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLXRvcDogN3B4OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICBjb2xvcjogIzU1NTU1NTsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5mb3JtLWNvbnRyb2wgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMzRweDsKICBwYWRkaW5nOiA2cHggMTJweDsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgY29sb3I6ICM1NTU1NTU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsKICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cywgYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOwp9Ci5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzY2YWZlOTsKICBvdXRsaW5lOiAwOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksIDAgMCA4cHggcmdiYSgxMDIsIDE3NSwgMjMzLCAwLjYpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgOHB4IHJnYmEoMTAyLCAxNzUsIDIzMywgMC42KTsKfQouZm9ybS1jb250cm9sOi1tb3otcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5OTk5OwogIG9wYWNpdHk6IDE7Cn0KLmZvcm0tY29udHJvbDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5mb3JtLWNvbnRyb2w6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5mb3JtLWNvbnRyb2xbZGlzYWJsZWRdLAouZm9ybS1jb250cm9sW3JlYWRvbmx5XSwKZmllbGRzZXRbZGlzYWJsZWRdIC5mb3JtLWNvbnRyb2wgewogIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKfQp0ZXh0YXJlYS5mb3JtLWNvbnRyb2wgewogIGhlaWdodDogYXV0bzsKfQouZm9ybS1ncm91cCB7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoucmFkaW8sCi5jaGVja2JveCB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWluLWhlaWdodDogMjBweDsKICBtYXJnaW4tdG9wOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnJhZGlvIGxhYmVsLAouY2hlY2tib3ggbGFiZWwgewogIGRpc3BsYXk6IGlubGluZTsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdLAoucmFkaW8taW5saW5lIGlucHV0W3R5cGU9InJhZGlvIl0sCi5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdLAouY2hlY2tib3gtaW5saW5lIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbi1sZWZ0OiAtMjBweDsKfQoucmFkaW8gKyAucmFkaW8sCi5jaGVja2JveCArIC5jaGVja2JveCB7CiAgbWFyZ2luLXRvcDogLTVweDsKfQoucmFkaW8taW5saW5lLAouY2hlY2tib3gtaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDA7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGN1cnNvcjogcG9pbnRlcjsKfQoucmFkaW8taW5saW5lICsgLnJhZGlvLWlubGluZSwKLmNoZWNrYm94LWlubGluZSArIC5jaGVja2JveC1pbmxpbmUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KaW5wdXRbdHlwZT0icmFkaW8iXVtkaXNhYmxlZF0sCmlucHV0W3R5cGU9ImNoZWNrYm94Il1bZGlzYWJsZWRdLAoucmFkaW9bZGlzYWJsZWRdLAoucmFkaW8taW5saW5lW2Rpc2FibGVkXSwKLmNoZWNrYm94W2Rpc2FibGVkXSwKLmNoZWNrYm94LWlubGluZVtkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSBpbnB1dFt0eXBlPSJyYWRpbyJdLApmaWVsZHNldFtkaXNhYmxlZF0gaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5yYWRpbywKZmllbGRzZXRbZGlzYWJsZWRdIC5yYWRpby1pbmxpbmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuY2hlY2tib3gsCmZpZWxkc2V0W2Rpc2FibGVkXSAuY2hlY2tib3gtaW5saW5lIHsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Ci5pbnB1dC1zbSB7CiAgaGVpZ2h0OiAzMHB4OwogIHBhZGRpbmc6IDVweCAxMHB4OwogIGZvbnQtc2l6ZTogMTJweDsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDNweDsKfQpzZWxlY3QuaW5wdXQtc20gewogIGhlaWdodDogMzBweDsKICBsaW5lLWhlaWdodDogMzBweDsKfQp0ZXh0YXJlYS5pbnB1dC1zbSB7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5pbnB1dC1sZyB7CiAgaGVpZ2h0OiA0NnB4OwogIHBhZGRpbmc6IDEwcHggMTZweDsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDEuMzM7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9CnNlbGVjdC5pbnB1dC1sZyB7CiAgaGVpZ2h0OiA0NnB4OwogIGxpbmUtaGVpZ2h0OiA0NnB4Owp9CnRleHRhcmVhLmlucHV0LWxnIHsKICBoZWlnaHQ6IGF1dG87Cn0KLmhhcy13YXJuaW5nIC5oZWxwLWJsb2NrLAouaGFzLXdhcm5pbmcgLmNvbnRyb2wtbGFiZWwsCi5oYXMtd2FybmluZyAucmFkaW8sCi5oYXMtd2FybmluZyAuY2hlY2tib3gsCi5oYXMtd2FybmluZyAucmFkaW8taW5saW5lLAouaGFzLXdhcm5pbmcgLmNoZWNrYm94LWlubGluZSB7CiAgY29sb3I6ICM4YTZkM2I7Cn0KLmhhcy13YXJuaW5nIC5mb3JtLWNvbnRyb2wgewogIGJvcmRlci1jb2xvcjogIzhhNmQzYjsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLmhhcy13YXJuaW5nIC5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzY2NTEyYzsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDZweCAjYzBhMTZiOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDZweCAjYzBhMTZiOwp9Ci5oYXMtd2FybmluZyAuaW5wdXQtZ3JvdXAtYWRkb24gewogIGNvbG9yOiAjOGE2ZDNiOwogIGJvcmRlci1jb2xvcjogIzhhNmQzYjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwp9Ci5oYXMtZXJyb3IgLmhlbHAtYmxvY2ssCi5oYXMtZXJyb3IgLmNvbnRyb2wtbGFiZWwsCi5oYXMtZXJyb3IgLnJhZGlvLAouaGFzLWVycm9yIC5jaGVja2JveCwKLmhhcy1lcnJvciAucmFkaW8taW5saW5lLAouaGFzLWVycm9yIC5jaGVja2JveC1pbmxpbmUgewogIGNvbG9yOiAjYTk0NDQyOwp9Ci5oYXMtZXJyb3IgLmZvcm0tY29udHJvbCB7CiAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQouaGFzLWVycm9yIC5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzg0MzUzNDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDZweCAjY2U4NDgzOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDZweCAjY2U4NDgzOwp9Ci5oYXMtZXJyb3IgLmlucHV0LWdyb3VwLWFkZG9uIHsKICBjb2xvcjogI2E5NDQ0MjsKICBib3JkZXItY29sb3I6ICNhOTQ0NDI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKfQouaGFzLXN1Y2Nlc3MgLmhlbHAtYmxvY2ssCi5oYXMtc3VjY2VzcyAuY29udHJvbC1sYWJlbCwKLmhhcy1zdWNjZXNzIC5yYWRpbywKLmhhcy1zdWNjZXNzIC5jaGVja2JveCwKLmhhcy1zdWNjZXNzIC5yYWRpby1pbmxpbmUsCi5oYXMtc3VjY2VzcyAuY2hlY2tib3gtaW5saW5lIHsKICBjb2xvcjogIzNjNzYzZDsKfQouaGFzLXN1Y2Nlc3MgLmZvcm0tY29udHJvbCB7CiAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQouaGFzLXN1Y2Nlc3MgLmZvcm0tY29udHJvbDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjMmI1NDJjOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgNnB4ICM2N2IxNjg7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgNnB4ICM2N2IxNjg7Cn0KLmhhcy1zdWNjZXNzIC5pbnB1dC1ncm91cC1hZGRvbiB7CiAgY29sb3I6ICMzYzc2M2Q7CiAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KLmZvcm0tY29udHJvbC1zdGF0aWMgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmhlbHAtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi10b3A6IDVweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIGNvbG9yOiAjNzM3MzczOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5mb3JtLWlubGluZSAuZm9ybS1ncm91cCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIH0KICAuZm9ybS1pbmxpbmUgc2VsZWN0LmZvcm0tY29udHJvbCB7CiAgICB3aWR0aDogYXV0bzsKICB9CiAgLmZvcm0taW5saW5lIC5yYWRpbywKICAuZm9ybS1pbmxpbmUgLmNoZWNrYm94IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLnJhZGlvIGlucHV0W3R5cGU9InJhZGlvIl0sCiAgLmZvcm0taW5saW5lIC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgIGZsb2F0OiBub25lOwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQp9Ci5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtbGFiZWwsCi5mb3JtLWhvcml6b250YWwgLnJhZGlvLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCwKLmZvcm0taG9yaXpvbnRhbCAucmFkaW8taW5saW5lLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveC1pbmxpbmUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBwYWRkaW5nLXRvcDogN3B4Owp9Ci5mb3JtLWhvcml6b250YWwgLnJhZGlvLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCB7CiAgbWluLWhlaWdodDogMjdweDsKfQouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwIHsKICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKfQouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmJlZm9yZSwKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cDphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YmVmb3JlLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cDphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgcGFkZGluZy10b3A6IDdweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxhYmVsIHsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogIH0KfQouYnRuIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgcGFkZGluZzogNnB4IDEycHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIC1vLXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9Ci5idG46Zm9jdXMgewogIG91dGxpbmU6IHRoaW4gZG90dGVkOwogIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsKICBvdXRsaW5lLW9mZnNldDogLTJweDsKfQouYnRuOmhvdmVyLAouYnRuOmZvY3VzIHsKICBjb2xvcjogIzMzMzsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmJ0bjphY3RpdmUsCi5idG4uYWN0aXZlIHsKICBvdXRsaW5lOiAwOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOwp9Ci5idG4uZGlzYWJsZWQsCi5idG5bZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0biB7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBvcGFjaXR5OiAwLjY1OwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT02NSk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ0bi1kZWZhdWx0IHsKICBjb2xvcjogIzMzMzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlci1jb2xvcjogI2NjYzsKfQouYnRuLWRlZmF1bHQ6aG92ZXIsCi5idG4tZGVmYXVsdDpmb2N1cywKLmJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmJ0bi1kZWZhdWx0LmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGVmYXVsdCB7CiAgY29sb3I6ICMzMzM7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ViZWJlYjsKICBib3JkZXItY29sb3I6ICNhZGFkYWQ7Cn0KLmJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmJ0bi1kZWZhdWx0LmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGVmYXVsdCB7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQouYnRuLWRlZmF1bHQuZGlzYWJsZWQsCi5idG4tZGVmYXVsdFtkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQsCi5idG4tZGVmYXVsdC5kaXNhYmxlZDpob3ZlciwKLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdDpob3ZlciwKLmJ0bi1kZWZhdWx0LmRpc2FibGVkOmZvY3VzLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0OmZvY3VzLAouYnRuLWRlZmF1bHQuZGlzYWJsZWQ6YWN0aXZlLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdDphY3RpdmUsCi5idG4tZGVmYXVsdC5kaXNhYmxlZC5hY3RpdmUsCi5idG4tZGVmYXVsdFtkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0LmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNjY2M7Cn0KLmJ0bi1kZWZhdWx0IC5iYWRnZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQouYnRuLXByaW1hcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7CiAgYm9yZGVyLWNvbG9yOiAjMzU3ZWJkOwp9Ci5idG4tcHJpbWFyeTpob3ZlciwKLmJ0bi1wcmltYXJ5OmZvY3VzLAouYnRuLXByaW1hcnk6YWN0aXZlLAouYnRuLXByaW1hcnkuYWN0aXZlLAoub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1wcmltYXJ5IHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzI3NmIxOwogIGJvcmRlci1jb2xvcjogIzI4NWU4ZTsKfQouYnRuLXByaW1hcnk6YWN0aXZlLAouYnRuLXByaW1hcnkuYWN0aXZlLAoub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4tcHJpbWFyeS5kaXNhYmxlZCwKLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeSwKLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmhvdmVyLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmhvdmVyLAouYnRuLXByaW1hcnkuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tcHJpbWFyeVtkaXNhYmxlZF06Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnk6Zm9jdXMsCi5idG4tcHJpbWFyeS5kaXNhYmxlZDphY3RpdmUsCi5idG4tcHJpbWFyeVtkaXNhYmxlZF06YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5LmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnkuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwogIGJvcmRlci1jb2xvcjogIzM1N2ViZDsKfQouYnRuLXByaW1hcnkgLmJhZGdlIHsKICBjb2xvcjogIzQyOGJjYTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5idG4td2FybmluZyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTsKICBib3JkZXItY29sb3I6ICNlZWEyMzY7Cn0KLmJ0bi13YXJuaW5nOmhvdmVyLAouYnRuLXdhcm5pbmc6Zm9jdXMsCi5idG4td2FybmluZzphY3RpdmUsCi5idG4td2FybmluZy5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLXdhcm5pbmcgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNlZDljMjg7CiAgYm9yZGVyLWNvbG9yOiAjZDU4NTEyOwp9Ci5idG4td2FybmluZzphY3RpdmUsCi5idG4td2FybmluZy5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLXdhcm5pbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi13YXJuaW5nLmRpc2FibGVkLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nLAouYnRuLXdhcm5pbmcuZGlzYWJsZWQ6aG92ZXIsCi5idG4td2FybmluZ1tkaXNhYmxlZF06aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6aG92ZXIsCi5idG4td2FybmluZy5kaXNhYmxlZDpmb2N1cywKLmJ0bi13YXJuaW5nW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZzpmb2N1cywKLmJ0bi13YXJuaW5nLmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi13YXJuaW5nW2Rpc2FibGVkXTphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6YWN0aXZlLAouYnRuLXdhcm5pbmcuZGlzYWJsZWQuYWN0aXZlLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZy5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGU7CiAgYm9yZGVyLWNvbG9yOiAjZWVhMjM2Owp9Ci5idG4td2FybmluZyAuYmFkZ2UgewogIGNvbG9yOiAjZjBhZDRlOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmJ0bi1kYW5nZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGY7CiAgYm9yZGVyLWNvbG9yOiAjZDQzZjNhOwp9Ci5idG4tZGFuZ2VyOmhvdmVyLAouYnRuLWRhbmdlcjpmb2N1cywKLmJ0bi1kYW5nZXI6YWN0aXZlLAouYnRuLWRhbmdlci5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWRhbmdlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QyMzIyZDsKICBib3JkZXItY29sb3I6ICNhYzI5MjU7Cn0KLmJ0bi1kYW5nZXI6YWN0aXZlLAouYnRuLWRhbmdlci5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWRhbmdlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQouYnRuLWRhbmdlci5kaXNhYmxlZCwKLmJ0bi1kYW5nZXJbZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXIsCi5idG4tZGFuZ2VyLmRpc2FibGVkOmhvdmVyLAouYnRuLWRhbmdlcltkaXNhYmxlZF06aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlcjpob3ZlciwKLmJ0bi1kYW5nZXIuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tZGFuZ2VyW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmZvY3VzLAouYnRuLWRhbmdlci5kaXNhYmxlZDphY3RpdmUsCi5idG4tZGFuZ2VyW2Rpc2FibGVkXTphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlcjphY3RpdmUsCi5idG4tZGFuZ2VyLmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi1kYW5nZXJbZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q5NTM0ZjsKICBib3JkZXItY29sb3I6ICNkNDNmM2E7Cn0KLmJ0bi1kYW5nZXIgLmJhZGdlIHsKICBjb2xvcjogI2Q5NTM0ZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5idG4tc3VjY2VzcyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YzsKICBib3JkZXItY29sb3I6ICM0Y2FlNGM7Cn0KLmJ0bi1zdWNjZXNzOmhvdmVyLAouYnRuLXN1Y2Nlc3M6Zm9jdXMsCi5idG4tc3VjY2VzczphY3RpdmUsCi5idG4tc3VjY2Vzcy5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLXN1Y2Nlc3MgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM0N2E0NDc7CiAgYm9yZGVyLWNvbG9yOiAjMzk4NDM5Owp9Ci5idG4tc3VjY2VzczphY3RpdmUsCi5idG4tc3VjY2Vzcy5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1zdWNjZXNzLmRpc2FibGVkLAouYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzLAouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6aG92ZXIsCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF06aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3M6aG92ZXIsCi5idG4tc3VjY2Vzcy5kaXNhYmxlZDpmb2N1cywKLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzczpmb2N1cywKLmJ0bi1zdWNjZXNzLmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXTphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3M6YWN0aXZlLAouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQuYWN0aXZlLAouYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzcy5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICM1Y2I4NWM7CiAgYm9yZGVyLWNvbG9yOiAjNGNhZTRjOwp9Ci5idG4tc3VjY2VzcyAuYmFkZ2UgewogIGNvbG9yOiAjNWNiODVjOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmJ0bi1pbmZvIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwogIGJvcmRlci1jb2xvcjogIzQ2YjhkYTsKfQouYnRuLWluZm86aG92ZXIsCi5idG4taW5mbzpmb2N1cywKLmJ0bi1pbmZvOmFjdGl2ZSwKLmJ0bi1pbmZvLmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4taW5mbyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM5YjNkNzsKICBib3JkZXItY29sb3I6ICMyNjlhYmM7Cn0KLmJ0bi1pbmZvOmFjdGl2ZSwKLmJ0bi1pbmZvLmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4taW5mbyB7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQouYnRuLWluZm8uZGlzYWJsZWQsCi5idG4taW5mb1tkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm8sCi5idG4taW5mby5kaXNhYmxlZDpob3ZlciwKLmJ0bi1pbmZvW2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbzpob3ZlciwKLmJ0bi1pbmZvLmRpc2FibGVkOmZvY3VzLAouYnRuLWluZm9bZGlzYWJsZWRdOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmZvY3VzLAouYnRuLWluZm8uZGlzYWJsZWQ6YWN0aXZlLAouYnRuLWluZm9bZGlzYWJsZWRdOmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbzphY3RpdmUsCi5idG4taW5mby5kaXNhYmxlZC5hY3RpdmUsCi5idG4taW5mb1tkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKICBib3JkZXItY29sb3I6ICM0NmI4ZGE7Cn0KLmJ0bi1pbmZvIC5iYWRnZSB7CiAgY29sb3I6ICM1YmMwZGU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQouYnRuLWxpbmsgewogIGNvbG9yOiAjNDI4YmNhOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmJ0bi1saW5rLAouYnRuLWxpbms6YWN0aXZlLAouYnRuLWxpbmtbZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1saW5rIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgYm94LXNoYWRvdzogbm9uZTsKfQouYnRuLWxpbmssCi5idG4tbGluazpob3ZlciwKLmJ0bi1saW5rOmZvY3VzLAouYnRuLWxpbms6YWN0aXZlIHsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tbGluazpob3ZlciwKLmJ0bi1saW5rOmZvY3VzIHsKICBjb2xvcjogIzJhNjQ5NjsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1saW5rOmhvdmVyLAouYnRuLWxpbmtbZGlzYWJsZWRdOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1saW5rOmZvY3VzIHsKICBjb2xvcjogIzk5OTk5OTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmJ0bi1sZyB7CiAgcGFkZGluZzogMTBweCAxNnB4OwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogMS4zMzsKICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KLmJ0bi1zbSB7CiAgcGFkZGluZzogNXB4IDEwcHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5idG4teHMgewogIHBhZGRpbmc6IDFweCA1cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5idG4tYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctbGVmdDogMDsKICBwYWRkaW5nLXJpZ2h0OiAwOwp9Ci5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KaW5wdXRbdHlwZT0ic3VibWl0Il0uYnRuLWJsb2NrLAppbnB1dFt0eXBlPSJyZXNldCJdLmJ0bi1ibG9jaywKaW5wdXRbdHlwZT0iYnV0dG9uIl0uYnRuLWJsb2NrIHsKICB3aWR0aDogMTAwJTsKfQouZmFkZSB7CiAgb3BhY2l0eTogMDsKICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwp9Ci5mYWRlLmluIHsKICBvcGFjaXR5OiAxOwp9Ci5jb2xsYXBzZSB7CiAgZGlzcGxheTogbm9uZTsKfQouY29sbGFwc2UuaW4gewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5jb2xsYXBzaW5nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgaGVpZ2h0OiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBoZWlnaHQgMC4zNXMgZWFzZTsKICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zNXMgZWFzZTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJzsKICBzcmM6IHVybCgnLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5lb3QnKTsKICBzcmM6IHVybCgnLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLCB1cmwoJy4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCB1cmwoJy4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuc3ZnI2dseXBoaWNvbnMtaGFsZmxpbmdzcmVndWxhcicpIGZvcm1hdCgnc3ZnJyk7Cn0KLmdseXBoaWNvbiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogMXB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMTsKICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwp9Ci5nbHlwaGljb246ZW1wdHkgewogIHdpZHRoOiAxZW07Cn0KLmdseXBoaWNvbi1hc3RlcmlzazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMmEiOwp9Ci5nbHlwaGljb24tcGx1czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMmIiOwp9Ci5nbHlwaGljb24tZXVybzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjBhYyI7Cn0KLmdseXBoaWNvbi1taW51czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjIxMiI7Cn0KLmdseXBoaWNvbi1jbG91ZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjYwMSI7Cn0KLmdseXBoaWNvbi1lbnZlbG9wZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjcwOSI7Cn0KLmdseXBoaWNvbi1wZW5jaWw6YmVmb3JlIHsKICBjb250ZW50OiAiXDI3MGYiOwp9Ci5nbHlwaGljb24tZ2xhc3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDEiOwp9Ci5nbHlwaGljb24tbXVzaWM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDIiOwp9Ci5nbHlwaGljb24tc2VhcmNoOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDAzIjsKfQouZ2x5cGhpY29uLWhlYXJ0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDA1IjsKfQouZ2x5cGhpY29uLXN0YXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDYiOwp9Ci5nbHlwaGljb24tc3Rhci1lbXB0eTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAwNyI7Cn0KLmdseXBoaWNvbi11c2VyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDA4IjsKfQouZ2x5cGhpY29uLWZpbG06YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDkiOwp9Ci5nbHlwaGljb24tdGgtbGFyZ2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTAiOwp9Ci5nbHlwaGljb24tdGg6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTEiOwp9Ci5nbHlwaGljb24tdGgtbGlzdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxMiI7Cn0KLmdseXBoaWNvbi1vazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxMyI7Cn0KLmdseXBoaWNvbi1yZW1vdmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTQiOwp9Ci5nbHlwaGljb24tem9vbS1pbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxNSI7Cn0KLmdseXBoaWNvbi16b29tLW91dDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxNiI7Cn0KLmdseXBoaWNvbi1vZmY6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTciOwp9Ci5nbHlwaGljb24tc2lnbmFsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDE4IjsKfQouZ2x5cGhpY29uLWNvZzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxOSI7Cn0KLmdseXBoaWNvbi10cmFzaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyMCI7Cn0KLmdseXBoaWNvbi1ob21lOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDIxIjsKfQouZ2x5cGhpY29uLWZpbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjIiOwp9Ci5nbHlwaGljb24tdGltZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyMyI7Cn0KLmdseXBoaWNvbi1yb2FkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDI0IjsKfQouZ2x5cGhpY29uLWRvd25sb2FkLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyNSI7Cn0KLmdseXBoaWNvbi1kb3dubG9hZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyNiI7Cn0KLmdseXBoaWNvbi11cGxvYWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjciOwp9Ci5nbHlwaGljb24taW5ib3g6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjgiOwp9Ci5nbHlwaGljb24tcGxheS1jaXJjbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjkiOwp9Ci5nbHlwaGljb24tcmVwZWF0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDMwIjsKfQouZ2x5cGhpY29uLXJlZnJlc2g6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzEiOwp9Ci5nbHlwaGljb24tbGlzdC1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzIiOwp9Ci5nbHlwaGljb24tbG9jazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzMyI7Cn0KLmdseXBoaWNvbi1mbGFnOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDM0IjsKfQouZ2x5cGhpY29uLWhlYWRwaG9uZXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzUiOwp9Ci5nbHlwaGljb24tdm9sdW1lLW9mZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzNiI7Cn0KLmdseXBoaWNvbi12b2x1bWUtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzNyI7Cn0KLmdseXBoaWNvbi12b2x1bWUtdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzgiOwp9Ci5nbHlwaGljb24tcXJjb2RlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDM5IjsKfQouZ2x5cGhpY29uLWJhcmNvZGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNDAiOwp9Ci5nbHlwaGljb24tdGFnOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQxIjsKfQouZ2x5cGhpY29uLXRhZ3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNDIiOwp9Ci5nbHlwaGljb24tYm9vazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0MyI7Cn0KLmdseXBoaWNvbi1ib29rbWFyazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0NCI7Cn0KLmdseXBoaWNvbi1wcmludDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0NSI7Cn0KLmdseXBoaWNvbi1jYW1lcmE6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNDYiOwp9Ci5nbHlwaGljb24tZm9udDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0NyI7Cn0KLmdseXBoaWNvbi1ib2xkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQ4IjsKfQouZ2x5cGhpY29uLWl0YWxpYzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0OSI7Cn0KLmdseXBoaWNvbi10ZXh0LWhlaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1MCI7Cn0KLmdseXBoaWNvbi10ZXh0LXdpZHRoOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDUxIjsKfQouZ2x5cGhpY29uLWFsaWduLWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTIiOwp9Ci5nbHlwaGljb24tYWxpZ24tY2VudGVyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDUzIjsKfQouZ2x5cGhpY29uLWFsaWduLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDU0IjsKfQouZ2x5cGhpY29uLWFsaWduLWp1c3RpZnk6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTUiOwp9Ci5nbHlwaGljb24tbGlzdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1NiI7Cn0KLmdseXBoaWNvbi1pbmRlbnQtbGVmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1NyI7Cn0KLmdseXBoaWNvbi1pbmRlbnQtcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTgiOwp9Ci5nbHlwaGljb24tZmFjZXRpbWUtdmlkZW86YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTkiOwp9Ci5nbHlwaGljb24tcGljdHVyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2MCI7Cn0KLmdseXBoaWNvbi1tYXAtbWFya2VyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDYyIjsKfQouZ2x5cGhpY29uLWFkanVzdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2MyI7Cn0KLmdseXBoaWNvbi10aW50OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDY0IjsKfQouZ2x5cGhpY29uLWVkaXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjUiOwp9Ci5nbHlwaGljb24tc2hhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjYiOwp9Ci5nbHlwaGljb24tY2hlY2s6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjciOwp9Ci5nbHlwaGljb24tbW92ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2OCI7Cn0KLmdseXBoaWNvbi1zdGVwLWJhY2t3YXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDY5IjsKfQouZ2x5cGhpY29uLWZhc3QtYmFja3dhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzAiOwp9Ci5nbHlwaGljb24tYmFja3dhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzEiOwp9Ci5nbHlwaGljb24tcGxheTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3MiI7Cn0KLmdseXBoaWNvbi1wYXVzZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3MyI7Cn0KLmdseXBoaWNvbi1zdG9wOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDc0IjsKfQouZ2x5cGhpY29uLWZvcndhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzUiOwp9Ci5nbHlwaGljb24tZmFzdC1mb3J3YXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDc2IjsKfQouZ2x5cGhpY29uLXN0ZXAtZm9yd2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3NyI7Cn0KLmdseXBoaWNvbi1lamVjdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3OCI7Cn0KLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzkiOwp9Ci5nbHlwaGljb24tY2hldnJvbi1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4MCI7Cn0KLmdseXBoaWNvbi1wbHVzLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODEiOwp9Ci5nbHlwaGljb24tbWludXMtc2lnbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4MiI7Cn0KLmdseXBoaWNvbi1yZW1vdmUtc2lnbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4MyI7Cn0KLmdseXBoaWNvbi1vay1zaWduOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDg0IjsKfQouZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODUiOwp9Ci5nbHlwaGljb24taW5mby1zaWduOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDg2IjsKfQouZ2x5cGhpY29uLXNjcmVlbnNob3Q6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODciOwp9Ci5nbHlwaGljb24tcmVtb3ZlLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4OCI7Cn0KLmdseXBoaWNvbi1vay1jaXJjbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODkiOwp9Ci5nbHlwaGljb24tYmFuLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA5MCI7Cn0KLmdseXBoaWNvbi1hcnJvdy1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDkxIjsKfQouZ2x5cGhpY29uLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDkyIjsKfQouZ2x5cGhpY29uLWFycm93LXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDkzIjsKfQouZ2x5cGhpY29uLWFycm93LWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGUwOTQiOwp9Ci5nbHlwaGljb24tc2hhcmUtYWx0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDk1IjsKfQouZ2x5cGhpY29uLXJlc2l6ZS1mdWxsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDk2IjsKfQouZ2x5cGhpY29uLXJlc2l6ZS1zbWFsbDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA5NyI7Cn0KLmdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTAxIjsKfQouZ2x5cGhpY29uLWdpZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDIiOwp9Ci5nbHlwaGljb24tbGVhZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEwMyI7Cn0KLmdseXBoaWNvbi1maXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTA0IjsKfQouZ2x5cGhpY29uLWV5ZS1vcGVuOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTA1IjsKfQouZ2x5cGhpY29uLWV5ZS1jbG9zZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEwNiI7Cn0KLmdseXBoaWNvbi13YXJuaW5nLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDciOwp9Ci5nbHlwaGljb24tcGxhbmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDgiOwp9Ci5nbHlwaGljb24tY2FsZW5kYXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDkiOwp9Ci5nbHlwaGljb24tcmFuZG9tOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTEwIjsKfQouZ2x5cGhpY29uLWNvbW1lbnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTEiOwp9Ci5nbHlwaGljb24tbWFnbmV0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTEyIjsKfQouZ2x5cGhpY29uLWNoZXZyb24tdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTMiOwp9Ci5nbHlwaGljb24tY2hldnJvbi1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTE0IjsKfQouZ2x5cGhpY29uLXJldHdlZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTUiOwp9Ci5nbHlwaGljb24tc2hvcHBpbmctY2FydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTExNiI7Cn0KLmdseXBoaWNvbi1mb2xkZXItY2xvc2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTciOwp9Ci5nbHlwaGljb24tZm9sZGVyLW9wZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTgiOwp9Ci5nbHlwaGljb24tcmVzaXplLXZlcnRpY2FsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTE5IjsKfQouZ2x5cGhpY29uLXJlc2l6ZS1ob3Jpem9udGFsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTIwIjsKfQouZ2x5cGhpY29uLWhkZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyMSI7Cn0KLmdseXBoaWNvbi1idWxsaG9ybjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyMiI7Cn0KLmdseXBoaWNvbi1iZWxsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTIzIjsKfQouZ2x5cGhpY29uLWNlcnRpZmljYXRlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI0IjsKfQouZ2x5cGhpY29uLXRodW1icy11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyNSI7Cn0KLmdseXBoaWNvbi10aHVtYnMtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyNiI7Cn0KLmdseXBoaWNvbi1oYW5kLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI3IjsKfQouZ2x5cGhpY29uLWhhbmQtbGVmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyOCI7Cn0KLmdseXBoaWNvbi1oYW5kLXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI5IjsKfQouZ2x5cGhpY29uLWhhbmQtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzMCI7Cn0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzEiOwp9Ci5nbHlwaGljb24tY2lyY2xlLWFycm93LWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzIiOwp9Ci5nbHlwaGljb24tY2lyY2xlLWFycm93LXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTMzIjsKfQouZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTM0IjsKfQouZ2x5cGhpY29uLWdsb2JlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTM1IjsKfQouZ2x5cGhpY29uLXdyZW5jaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzNiI7Cn0KLmdseXBoaWNvbi10YXNrczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzNyI7Cn0KLmdseXBoaWNvbi1maWx0ZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzgiOwp9Ci5nbHlwaGljb24tYnJpZWZjYXNlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTM5IjsKfQouZ2x5cGhpY29uLWZ1bGxzY3JlZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNDAiOwp9Ci5nbHlwaGljb24tZGFzaGJvYXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQxIjsKfQouZ2x5cGhpY29uLXBhcGVyY2xpcDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE0MiI7Cn0KLmdseXBoaWNvbi1oZWFydC1lbXB0eTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE0MyI7Cn0KLmdseXBoaWNvbi1saW5rOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQ0IjsKfQouZ2x5cGhpY29uLXBob25lOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQ1IjsKfQouZ2x5cGhpY29uLXB1c2hwaW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNDYiOwp9Ci5nbHlwaGljb24tdXNkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQ4IjsKfQouZ2x5cGhpY29uLWdicDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE0OSI7Cn0KLmdseXBoaWNvbi1zb3J0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTUwIjsKfQouZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTEiOwp9Ci5nbHlwaGljb24tc29ydC1ieS1hbHBoYWJldC1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTIiOwp9Ci5nbHlwaGljb24tc29ydC1ieS1vcmRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1MyI7Cn0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1NCI7Cn0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTUiOwp9Ci5nbHlwaGljb24tc29ydC1ieS1hdHRyaWJ1dGVzLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1NiI7Cn0KLmdseXBoaWNvbi11bmNoZWNrZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTciOwp9Ci5nbHlwaGljb24tZXhwYW5kOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTU4IjsKfQouZ2x5cGhpY29uLWNvbGxhcHNlLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTkiOwp9Ci5nbHlwaGljb24tY29sbGFwc2UtdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjAiOwp9Ci5nbHlwaGljb24tbG9nLWluOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTYxIjsKfQouZ2x5cGhpY29uLWZsYXNoOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTYyIjsKfQouZ2x5cGhpY29uLWxvZy1vdXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjMiOwp9Ci5nbHlwaGljb24tbmV3LXdpbmRvdzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2NCI7Cn0KLmdseXBoaWNvbi1yZWNvcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjUiOwp9Ci5nbHlwaGljb24tc2F2ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2NiI7Cn0KLmdseXBoaWNvbi1vcGVuOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTY3IjsKfQouZ2x5cGhpY29uLXNhdmVkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTY4IjsKfQouZ2x5cGhpY29uLWltcG9ydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2OSI7Cn0KLmdseXBoaWNvbi1leHBvcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNzAiOwp9Ci5nbHlwaGljb24tc2VuZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3MSI7Cn0KLmdseXBoaWNvbi1mbG9wcHktZGlzazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3MiI7Cn0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNzMiOwp9Ci5nbHlwaGljb24tZmxvcHB5LXJlbW92ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3NCI7Cn0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3NSI7Cn0KLmdseXBoaWNvbi1mbG9wcHktb3BlbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3NiI7Cn0KLmdseXBoaWNvbi1jcmVkaXQtY2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3NyI7Cn0KLmdseXBoaWNvbi10cmFuc2ZlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3OCI7Cn0KLmdseXBoaWNvbi1jdXRsZXJ5OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTc5IjsKfQouZ2x5cGhpY29uLWhlYWRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4MCI7Cn0KLmdseXBoaWNvbi1jb21wcmVzc2VkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTgxIjsKfQouZ2x5cGhpY29uLWVhcnBob25lOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTgyIjsKfQouZ2x5cGhpY29uLXBob25lLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4MyI7Cn0KLmdseXBoaWNvbi10b3dlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4NCI7Cn0KLmdseXBoaWNvbi1zdGF0czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4NSI7Cn0KLmdseXBoaWNvbi1zZC12aWRlbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4NiI7Cn0KLmdseXBoaWNvbi1oZC12aWRlbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4NyI7Cn0KLmdseXBoaWNvbi1zdWJ0aXRsZXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxODgiOwp9Ci5nbHlwaGljb24tc291bmQtc3RlcmVvOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTg5IjsKfQouZ2x5cGhpY29uLXNvdW5kLWRvbGJ5OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTkwIjsKfQouZ2x5cGhpY29uLXNvdW5kLTUtMTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE5MSI7Cn0KLmdseXBoaWNvbi1zb3VuZC02LTE6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTIiOwp9Ci5nbHlwaGljb24tc291bmQtNy0xOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTkzIjsKfQouZ2x5cGhpY29uLWNvcHlyaWdodC1tYXJrOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTk0IjsKfQouZ2x5cGhpY29uLXJlZ2lzdHJhdGlvbi1tYXJrOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTk1IjsKfQouZ2x5cGhpY29uLWNsb3VkLWRvd25sb2FkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTk3IjsKfQouZ2x5cGhpY29uLWNsb3VkLXVwbG9hZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE5OCI7Cn0KLmdseXBoaWNvbi10cmVlLWNvbmlmZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTkiOwp9Ci5nbHlwaGljb24tdHJlZS1kZWNpZHVvdXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUyMDAiOwp9Ci5jYXJldCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tbGVmdDogMnB4OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgYm9yZGVyLXRvcDogNHB4IHNvbGlkOwogIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7Cn0KLmRyb3Bkb3duIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgb3V0bGluZTogMDsKfQouZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwMDA7CiAgZGlzcGxheTogbm9uZTsKICBmbG9hdDogbGVmdDsKICBtaW4td2lkdGg6IDE2MHB4OwogIHBhZGRpbmc6IDVweCAwOwogIG1hcmdpbjogMnB4IDAgMDsKICBsaXN0LXN0eWxlOiBub25lOwogIGZvbnQtc2l6ZTogMTRweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDZweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNzUpOwogIGJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE3NSk7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKfQouZHJvcGRvd24tbWVudS5wdWxsLXJpZ2h0IHsKICByaWdodDogMDsKICBsZWZ0OiBhdXRvOwp9Ci5kcm9wZG93bi1tZW51IC5kaXZpZGVyIHsKICBoZWlnaHQ6IDFweDsKICBtYXJnaW46IDlweCAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKfQouZHJvcGRvd24tbWVudSA+IGxpID4gYSB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogM3B4IDIwcHg7CiAgY2xlYXI6IGJvdGg7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICBjb2xvcjogIzMzMzMzMzsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmhvdmVyLAouZHJvcGRvd24tbWVudSA+IGxpID4gYTpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGNvbG9yOiAjMjYyNjI2OwogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Cn0KLmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYSwKLmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYTpob3ZlciwKLmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIG91dGxpbmU6IDA7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKfQouZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGEsCi5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYTpob3ZlciwKLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmZvY3VzIHsKICBjb2xvcjogIzk5OTk5OTsKfQouZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGE6aG92ZXIsCi5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYTpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKTsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Ci5vcGVuID4gLmRyb3Bkb3duLW1lbnUgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5vcGVuID4gYSB7CiAgb3V0bGluZTogMDsKfQouZHJvcGRvd24taGVhZGVyIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAzcHggMjBweDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgY29sb3I6ICM5OTk5OTk7Cn0KLmRyb3Bkb3duLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgdG9wOiAwOwogIHotaW5kZXg6IDk5MDsKfQoucHVsbC1yaWdodCA+IC5kcm9wZG93bi1tZW51IHsKICByaWdodDogMDsKICBsZWZ0OiBhdXRvOwp9Ci5kcm9wdXAgLmNhcmV0LAoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmNhcmV0IHsKICBib3JkZXItdG9wOiAwOwogIGJvcmRlci1ib3R0b206IDRweCBzb2xpZDsKICBjb250ZW50OiAiIjsKfQouZHJvcHVwIC5kcm9wZG93bi1tZW51LAoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUgewogIHRvcDogYXV0bzsKICBib3R0b206IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItcmlnaHQgLmRyb3Bkb3duLW1lbnUgewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvOwogIH0KfQouYnRuLWdyb3VwLAouYnRuLWdyb3VwLXZlcnRpY2FsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLmJ0bi1ncm91cCA+IC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmhvdmVyLAouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsCi5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLAouYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7CiAgei1pbmRleDogMjsKfQouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMgewogIG91dGxpbmU6IG5vbmU7Cn0KLmJ0bi1ncm91cCAuYnRuICsgLmJ0biwKLmJ0bi1ncm91cCAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwICsgLmJ0biwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmJ0bi10b29sYmFyOmJlZm9yZSwKLmJ0bi10b29sYmFyOmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLmJ0bi10b29sYmFyOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQouYnRuLXRvb2xiYXI6YmVmb3JlLAouYnRuLXRvb2xiYXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIgIjsKICBkaXNwbGF5OiB0YWJsZTsKfQouYnRuLXRvb2xiYXI6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5idG4tdG9vbGJhciAuYnRuLWdyb3VwIHsKICBmbG9hdDogbGVmdDsKfQouYnRuLXRvb2xiYXIgPiAuYnRuICsgLmJ0biwKLmJ0bi10b29sYmFyID4gLmJ0bi1ncm91cCArIC5idG4sCi5idG4tdG9vbGJhciA+IC5idG4gKyAuYnRuLWdyb3VwLAouYnRuLXRvb2xiYXIgPiAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgbWFyZ2luLWxlZnQ6IDVweDsKfQouYnRuLWdyb3VwID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAgPiAuZHJvcGRvd24tdG9nZ2xlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXAgewogIGZsb2F0OiBsZWZ0Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkID4gLmJ0bjpsYXN0LWNoaWxkLAouYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpmaXJzdC1jaGlsZCA+IC5kcm9wZG93bi10b2dnbGUgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmxhc3QtY2hpbGQgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwKLmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUgewogIG91dGxpbmU6IDA7Cn0KLmJ0bi1ncm91cC14cyA+IC5idG4gewogIHBhZGRpbmc6IDFweCA1cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5idG4tZ3JvdXAtc20gPiAuYnRuIHsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0KLmJ0bi1ncm91cC1sZyA+IC5idG4gewogIHBhZGRpbmc6IDEwcHggMTZweDsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDEuMzM7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgcGFkZGluZy1yaWdodDogOHB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiAxMnB4OwogIHBhZGRpbmctcmlnaHQ6IDEycHg7Cn0KLmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUgewogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tbGluayB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ0biAuY2FyZXQgewogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IDVweCA1cHggMDsKICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwp9Ci5kcm9wdXAgLmJ0bi1sZyAuY2FyZXQgewogIGJvcmRlci13aWR0aDogMCA1cHggNXB4Owp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICBkaXNwbGF5OiBibG9jazsKICBmbG9hdDogbm9uZTsKICB3aWR0aDogMTAwJTsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6YmVmb3JlLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpiZWZvcmUsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwID4gLmJ0biB7CiAgZmxvYXQ6IG5vbmU7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKICBtYXJnaW4tdG9wOiAtMXB4OwogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkID4gLmJ0bjpsYXN0LWNoaWxkLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpmaXJzdC1jaGlsZCA+IC5kcm9wZG93bi10b2dnbGUgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bGFzdC1jaGlsZCA+IC5idG46Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC1qdXN0aWZpZWQgewogIGRpc3BsYXk6IHRhYmxlOwogIHdpZHRoOiAxMDAlOwogIHRhYmxlLWxheW91dDogZml4ZWQ7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKfQouYnRuLWdyb3VwLWp1c3RpZmllZCA+IC5idG4sCi5idG4tZ3JvdXAtanVzdGlmaWVkID4gLmJ0bi1ncm91cCB7CiAgZmxvYXQ6IG5vbmU7CiAgZGlzcGxheTogdGFibGUtY2VsbDsKICB3aWR0aDogMSU7Cn0KLmJ0bi1ncm91cC1qdXN0aWZpZWQgPiAuYnRuLWdyb3VwIC5idG4gewogIHdpZHRoOiAxMDAlOwp9CltkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdID4gLmJ0biA+IGlucHV0W3R5cGU9InJhZGlvIl0sCltkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdID4gLmJ0biA+IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIGRpc3BsYXk6IG5vbmU7Cn0KLmlucHV0LWdyb3VwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogdGFibGU7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKfQouaW5wdXQtZ3JvdXBbY2xhc3MqPSJjb2wtIl0gewogIGZsb2F0OiBub25lOwogIHBhZGRpbmctbGVmdDogMDsKICBwYWRkaW5nLXJpZ2h0OiAwOwp9Ci5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIGhlaWdodDogNDZweDsKICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAxLjMzOwogIGJvcmRlci1yYWRpdXM6IDZweDsKfQpzZWxlY3QuaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLApzZWxlY3QuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYWRkb24sCnNlbGVjdC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsKICBoZWlnaHQ6IDQ2cHg7CiAgbGluZS1oZWlnaHQ6IDQ2cHg7Cn0KdGV4dGFyZWEuaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLAp0ZXh0YXJlYS5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbiwKdGV4dGFyZWEuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIGhlaWdodDogMzBweDsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0Kc2VsZWN0LmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKc2VsZWN0LmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3QuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgaGVpZ2h0OiAzMHB4OwogIGxpbmUtaGVpZ2h0OiAzMHB4Owp9CnRleHRhcmVhLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKdGV4dGFyZWEuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYWRkb24sCnRleHRhcmVhLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIGhlaWdodDogYXV0bzsKfQouaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1idG4sCi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsOwp9Ci5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksCi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtYnRuIHsKICB3aWR0aDogMSU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5pbnB1dC1ncm91cC1hZGRvbiB7CiAgcGFkZGluZzogNnB4IDEycHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6ICM1NTU1NTU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLmlucHV0LWdyb3VwLWFkZG9uLmlucHV0LXNtIHsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5pbnB1dC1ncm91cC1hZGRvbi5pbnB1dC1sZyB7CiAgcGFkZGluZzogMTBweCAxNnB4OwogIGZvbnQtc2l6ZTogMThweDsKICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KLmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9InJhZGlvIl0sCi5pbnB1dC1ncm91cC1hZGRvbiBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBtYXJnaW4tdG9wOiAwOwp9Ci5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmZpcnN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmRyb3Bkb3duLXRvZ2dsZSwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkIHsKICBib3JkZXItcmlnaHQ6IDA7Cn0KLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bGFzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5kcm9wZG93bi10b2dnbGUsCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQgewogIGJvcmRlci1sZWZ0OiAwOwp9Ci5pbnB1dC1ncm91cC1idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuIHsKICBtYXJnaW4tcmlnaHQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0biB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biArIC5idG4gewogIG1hcmdpbi1sZWZ0OiAtNHB4Owp9Ci5pbnB1dC1ncm91cC1idG4gPiAuYnRuOmhvdmVyLAouaW5wdXQtZ3JvdXAtYnRuID4gLmJ0bjphY3RpdmUgewogIHotaW5kZXg6IDI7Cn0KLm5hdiB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoubmF2OmJlZm9yZSwKLm5hdjphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5uYXY6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5uYXY6YmVmb3JlLAoubmF2OmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLm5hdjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLm5hdiA+IGxpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7Cn0KLm5hdiA+IGxpID4gYSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDEwcHggMTVweDsKfQoubmF2ID4gbGkgPiBhOmhvdmVyLAoubmF2ID4gbGkgPiBhOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKfQoubmF2ID4gbGkuZGlzYWJsZWQgPiBhIHsKICBjb2xvcjogIzk5OTk5OTsKfQoubmF2ID4gbGkuZGlzYWJsZWQgPiBhOmhvdmVyLAoubmF2ID4gbGkuZGlzYWJsZWQgPiBhOmZvY3VzIHsKICBjb2xvcjogIzk5OTk5OTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoubmF2IC5vcGVuID4gYSwKLm5hdiAub3BlbiA+IGE6aG92ZXIsCi5uYXYgLm9wZW4gPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwogIGJvcmRlci1jb2xvcjogIzQyOGJjYTsKfQoubmF2IC5uYXYtZGl2aWRlciB7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiA5cHggMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJhY2tncm91bmQtY29sb3I6ICNlNWU1ZTU7Cn0KLm5hdiA+IGxpID4gYSA+IGltZyB7CiAgbWF4LXdpZHRoOiBub25lOwp9Ci5uYXYtdGFicyB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7Cn0KLm5hdi10YWJzID4gbGkgewogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbi1ib3R0b206IC0xcHg7Cn0KLm5hdi10YWJzID4gbGkgPiBhIHsKICBtYXJnaW4tcmlnaHQ6IDJweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsKfQoubmF2LXRhYnMgPiBsaSA+IGE6aG92ZXIgewogIGJvcmRlci1jb2xvcjogI2VlZWVlZSAjZWVlZWVlICNkZGQ7Cn0KLm5hdi10YWJzID4gbGkuYWN0aXZlID4gYSwKLm5hdi10YWJzID4gbGkuYWN0aXZlID4gYTpob3ZlciwKLm5hdi10YWJzID4gbGkuYWN0aXZlID4gYTpmb2N1cyB7CiAgY29sb3I6ICM1NTU1NTU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogZGVmYXVsdDsKfQoubmF2LXRhYnMubmF2LWp1c3RpZmllZCB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IGxpIHsKICBmbG9hdDogbm9uZTsKfQoubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IGxpID4gYSB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IC5kcm9wZG93biAuZHJvcGRvd24tbWVudSB7CiAgdG9wOiBhdXRvOwogIGxlZnQ6IGF1dG87Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiBsaSB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgd2lkdGg6IDElOwogIH0KICAubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IGxpID4gYSB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KfQoubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IGxpID4gYSB7CiAgbWFyZ2luLXJpZ2h0OiAwOwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQoubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhLAoubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhOmhvdmVyLAoubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gbGkgPiBhIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7CiAgfQogIC5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGEsCiAgLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYTpob3ZlciwKICAubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7CiAgfQp9Ci5uYXYtcGlsbHMgPiBsaSB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLm5hdi1waWxscyA+IGxpID4gYSB7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5uYXYtcGlsbHMgPiBsaSArIGxpIHsKICBtYXJnaW4tbGVmdDogMnB4Owp9Ci5uYXYtcGlsbHMgPiBsaS5hY3RpdmUgPiBhLAoubmF2LXBpbGxzID4gbGkuYWN0aXZlID4gYTpob3ZlciwKLm5hdi1waWxscyA+IGxpLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7Cn0KLm5hdi1zdGFja2VkID4gbGkgewogIGZsb2F0OiBub25lOwp9Ci5uYXYtc3RhY2tlZCA+IGxpICsgbGkgewogIG1hcmdpbi10b3A6IDJweDsKICBtYXJnaW4tbGVmdDogMDsKfQoubmF2LWp1c3RpZmllZCB7CiAgd2lkdGg6IDEwMCU7Cn0KLm5hdi1qdXN0aWZpZWQgPiBsaSB7CiAgZmxvYXQ6IG5vbmU7Cn0KLm5hdi1qdXN0aWZpZWQgPiBsaSA+IGEgewogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLm5hdi1qdXN0aWZpZWQgPiAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUgewogIHRvcDogYXV0bzsKICBsZWZ0OiBhdXRvOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXYtanVzdGlmaWVkID4gbGkgewogICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgIHdpZHRoOiAxJTsKICB9CiAgLm5hdi1qdXN0aWZpZWQgPiBsaSA+IGEgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KLm5hdi10YWJzLWp1c3RpZmllZCB7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoubmF2LXRhYnMtanVzdGlmaWVkID4gbGkgPiBhIHsKICBtYXJnaW4tcmlnaHQ6IDA7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5uYXYtdGFicy1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYSwKLm5hdi10YWJzLWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhOmhvdmVyLAoubmF2LXRhYnMtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdi10YWJzLWp1c3RpZmllZCA+IGxpID4gYSB7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOwogIH0KICAubmF2LXRhYnMtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGEsCiAgLm5hdi10YWJzLWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhOmhvdmVyLAogIC5uYXYtdGFicy1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwogIH0KfQoudGFiLWNvbnRlbnQgPiAudGFiLXBhbmUgewogIGRpc3BsYXk6IG5vbmU7Cn0KLnRhYi1jb250ZW50ID4gLmFjdGl2ZSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLm5hdi10YWJzIC5kcm9wZG93bi1tZW51IHsKICBtYXJnaW4tdG9wOiAtMXB4OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLm5hdmJhciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi1oZWlnaHQ6IDUwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoubmF2YmFyOmJlZm9yZSwKLm5hdmJhcjphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5uYXZiYXI6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5uYXZiYXI6YmVmb3JlLAoubmF2YmFyOmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLm5hdmJhcjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhciB7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgfQp9Ci5uYXZiYXItaGVhZGVyOmJlZm9yZSwKLm5hdmJhci1oZWFkZXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIgIjsKICBkaXNwbGF5OiB0YWJsZTsKfQoubmF2YmFyLWhlYWRlcjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLm5hdmJhci1oZWFkZXI6YmVmb3JlLAoubmF2YmFyLWhlYWRlcjphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5uYXZiYXItaGVhZGVyOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWhlYWRlciB7CiAgICBmbG9hdDogbGVmdDsKICB9Cn0KLm5hdmJhci1jb2xsYXBzZSB7CiAgbWF4LWhlaWdodDogMzQwcHg7CiAgb3ZlcmZsb3cteDogdmlzaWJsZTsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwp9Ci5uYXZiYXItY29sbGFwc2U6YmVmb3JlLAoubmF2YmFyLWNvbGxhcHNlOmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLm5hdmJhci1jb2xsYXBzZTphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLm5hdmJhci1jb2xsYXBzZTpiZWZvcmUsCi5uYXZiYXItY29sbGFwc2U6YWZ0ZXIgewogIGNvbnRlbnQ6ICIgIjsKICBkaXNwbGF5OiB0YWJsZTsKfQoubmF2YmFyLWNvbGxhcHNlOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQoubmF2YmFyLWNvbGxhcHNlLmluIHsKICBvdmVyZmxvdy15OiBhdXRvOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItY29sbGFwc2UgewogICAgd2lkdGg6IGF1dG87CiAgICBib3JkZXItdG9wOiAwOwogICAgYm94LXNoYWRvdzogbm9uZTsKICB9CiAgLm5hdmJhci1jb2xsYXBzZS5jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWJvdHRvbTogMDsKICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXItY29sbGFwc2UuaW4gewogICAgb3ZlcmZsb3cteTogdmlzaWJsZTsKICB9CiAgLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZSwKICAubmF2YmFyLXN0YXRpYy10b3AgLm5hdmJhci1jb2xsYXBzZSwKICAubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2YmFyLWNvbGxhcHNlIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgfQp9Ci5jb250YWluZXIgPiAubmF2YmFyLWhlYWRlciwKLmNvbnRhaW5lciA+IC5uYXZiYXItY29sbGFwc2UgewogIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgbWFyZ2luLWxlZnQ6IC0xNXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5jb250YWluZXIgPiAubmF2YmFyLWhlYWRlciwKICAuY29udGFpbmVyID4gLm5hdmJhci1jb2xsYXBzZSB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9Cn0KLm5hdmJhci1zdGF0aWMtdG9wIHsKICB6LWluZGV4OiAxMDAwOwogIGJvcmRlci13aWR0aDogMCAwIDFweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLXN0YXRpYy10b3AgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KLm5hdmJhci1maXhlZC10b3AsCi5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItZml4ZWQtdG9wLAogIC5uYXZiYXItZml4ZWQtYm90dG9tIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQp9Ci5uYXZiYXItZml4ZWQtdG9wIHsKICB0b3A6IDA7CiAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4Owp9Ci5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBib3R0b206IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBib3JkZXItd2lkdGg6IDFweCAwIDA7Cn0KLm5hdmJhci1icmFuZCB7CiAgZmxvYXQ6IGxlZnQ7CiAgcGFkZGluZzogMTVweCAxNXB4OwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogMjBweDsKfQoubmF2YmFyLWJyYW5kOmhvdmVyLAoubmF2YmFyLWJyYW5kOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhciA+IC5jb250YWluZXIgLm5hdmJhci1icmFuZCB7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgfQp9Ci5uYXZiYXItdG9nZ2xlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxvYXQ6IHJpZ2h0OwogIG1hcmdpbi1yaWdodDogMTVweDsKICBwYWRkaW5nOiA5cHggMTBweDsKICBtYXJnaW4tdG9wOiA4cHg7CiAgbWFyZ2luLWJvdHRvbTogOHB4OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5uYXZiYXItdG9nZ2xlIC5pY29uLWJhciB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDIycHg7CiAgaGVpZ2h0OiAycHg7CiAgYm9yZGVyLXJhZGl1czogMXB4Owp9Ci5uYXZiYXItdG9nZ2xlIC5pY29uLWJhciArIC5pY29uLWJhciB7CiAgbWFyZ2luLXRvcDogNHB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItdG9nZ2xlIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9Ci5uYXZiYXItbmF2IHsKICBtYXJnaW46IDcuNXB4IC0xNXB4Owp9Ci5uYXZiYXItbmF2ID4gbGkgPiBhIHsKICBwYWRkaW5nLXRvcDogMTBweDsKICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICBsaW5lLWhlaWdodDogMjBweDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSB7CiAgICBwb3NpdGlvbjogc3RhdGljOwogICAgZmxvYXQ6IG5vbmU7CiAgICB3aWR0aDogYXV0bzsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMDsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgfQogIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhLAogIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1oZWFkZXIgewogICAgcGFkZGluZzogNXB4IDE1cHggNXB4IDI1cHg7CiAgfQogIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhIHsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogIH0KICAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IGxpID4gYTpob3ZlciwKICAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IGxpID4gYTpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLW5hdiB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbjogMDsKICB9CiAgLm5hdmJhci1uYXYgPiBsaSB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgLm5hdmJhci1uYXYgPiBsaSA+IGEgewogICAgcGFkZGluZy10b3A6IDE1cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTVweDsKICB9CiAgLm5hdmJhci1uYXYubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXItcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQp9Ci5uYXZiYXItZm9ybSB7CiAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgcGFkZGluZzogMTBweCAxNXB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogIG1hcmdpbi10b3A6IDhweDsKICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1mb3JtIC5mb3JtLWdyb3VwIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIH0KICAubmF2YmFyLWZvcm0gLmZvcm0tY29udHJvbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgfQogIC5uYXZiYXItZm9ybSBzZWxlY3QuZm9ybS1jb250cm9sIHsKICAgIHdpZHRoOiBhdXRvOwogIH0KICAubmF2YmFyLWZvcm0gLnJhZGlvLAogIC5uYXZiYXItZm9ybSAuY2hlY2tib3ggewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQogIC5uYXZiYXItZm9ybSAucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKICAubmF2YmFyLWZvcm0gLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgZmxvYXQ6IG5vbmU7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLm5hdmJhci1mb3JtIC5mb3JtLWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1mb3JtIHsKICAgIHdpZHRoOiBhdXRvOwogICAgYm9yZGVyOiAwOwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBwYWRkaW5nLXRvcDogMDsKICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgYm94LXNoYWRvdzogbm9uZTsKICB9CiAgLm5hdmJhci1mb3JtLm5hdmJhci1yaWdodDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgfQp9Ci5uYXZiYXItbmF2ID4gbGkgPiAuZHJvcGRvd24tbWVudSB7CiAgbWFyZ2luLXRvcDogMDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9Ci5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItbmF2ID4gbGkgPiAuZHJvcGRvd24tbWVudSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoubmF2YmFyLW5hdi5wdWxsLXJpZ2h0ID4gbGkgPiAuZHJvcGRvd24tbWVudSwKLm5hdmJhci1uYXYgPiBsaSA+IC5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQgewogIGxlZnQ6IGF1dG87CiAgcmlnaHQ6IDA7Cn0KLm5hdmJhci1idG4gewogIG1hcmdpbi10b3A6IDhweDsKICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KLm5hdmJhci1idG4uYnRuLXNtIHsKICBtYXJnaW4tdG9wOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLm5hdmJhci1idG4uYnRuLXhzIHsKICBtYXJnaW4tdG9wOiAxNHB4OwogIG1hcmdpbi1ib3R0b206IDE0cHg7Cn0KLm5hdmJhci10ZXh0IHsKICBtYXJnaW4tdG9wOiAxNXB4OwogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci10ZXh0IHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgfQogIC5uYXZiYXItdGV4dC5uYXZiYXItcmlnaHQ6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgfQp9Ci5uYXZiYXItZGVmYXVsdCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjhmODsKICBib3JkZXItY29sb3I6ICNlN2U3ZTc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItYnJhbmQgewogIGNvbG9yOiAjNzc3Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWJyYW5kOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZDpmb2N1cyB7CiAgY29sb3I6ICM1ZTVlNWU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdGV4dCB7CiAgY29sb3I6ICM3Nzc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gbGkgPiBhIHsKICBjb2xvcjogIzc3NzsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiBsaSA+IGE6aG92ZXIsCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IGxpID4gYTpmb2N1cyB7CiAgY29sb3I6ICMzMzM7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmFjdGl2ZSA+IGEsCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgY29sb3I6ICM1NTU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U3ZTdlNzsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAuZGlzYWJsZWQgPiBhLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAuZGlzYWJsZWQgPiBhOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAuZGlzYWJsZWQgPiBhOmZvY3VzIHsKICBjb2xvcjogI2NjYzsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGUgewogIGJvcmRlci1jb2xvcjogI2RkZDsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGU6aG92ZXIsCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRvZ2dsZTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGUgLmljb24tYmFyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOwp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWNvbGxhcHNlLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1mb3JtIHsKICBib3JkZXItY29sb3I6ICNlN2U3ZTc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLm9wZW4gPiBhLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAub3BlbiA+IGE6aG92ZXIsCi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IC5vcGVuID4gYTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U3ZTdlNzsKICBjb2xvcjogIzU1NTsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgewogICAgY29sb3I6ICM3Nzc7CiAgfQogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IGxpID4gYTpob3ZlciwKICAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6Zm9jdXMgewogICAgY29sb3I6ICMzMzM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9CiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGEsCiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6aG92ZXIsCiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogICAgY29sb3I6ICM1NTU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlN2U3OwogIH0KICAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhLAogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGE6aG92ZXIsCiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYTpmb2N1cyB7CiAgICBjb2xvcjogI2NjYzsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1saW5rIHsKICBjb2xvcjogIzc3NzsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1saW5rOmhvdmVyIHsKICBjb2xvcjogIzMzMzsKfQoubmF2YmFyLWludmVyc2UgewogIGJhY2tncm91bmQtY29sb3I6ICMyMjI7CiAgYm9yZGVyLWNvbG9yOiAjMDgwODA4Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kIHsKICBjb2xvcjogIzk5OTk5OTsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZDpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRleHQgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IGxpID4gYSB7CiAgY29sb3I6ICM5OTk5OTk7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gbGkgPiBhOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiBsaSA+IGE6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYTpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwODA4MDg7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYSwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYTpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYTpmb2N1cyB7CiAgY29sb3I6ICM0NDQ7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlIHsKICBib3JkZXItY29sb3I6ICMzMzM7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGU6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMzMzM7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1jb2xsYXBzZSwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItZm9ybSB7CiAgYm9yZGVyLWNvbG9yOiAjMTAxMDEwOwp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5vcGVuID4gYSwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLm9wZW4gPiBhOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAub3BlbiA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMwODA4MDg7CiAgY29sb3I6ICNmZmY7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmRyb3Bkb3duLWhlYWRlciB7CiAgICBib3JkZXItY29sb3I6ICMwODA4MDg7CiAgfQogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSAuZGl2aWRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4OwogIH0KICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgewogICAgY29sb3I6ICM5OTk5OTk7CiAgfQogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IGxpID4gYTpob3ZlciwKICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9CiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGEsCiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6aG92ZXIsCiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogICAgY29sb3I6ICNmZmY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4OwogIH0KICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhLAogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGE6aG92ZXIsCiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYTpmb2N1cyB7CiAgICBjb2xvcjogIzQ0NDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1saW5rIHsKICBjb2xvcjogIzk5OTk5OTsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1saW5rOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKfQouYnJlYWRjcnVtYiB7CiAgcGFkZGluZzogOHB4IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBsaXN0LXN0eWxlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5icmVhZGNydW1iID4gbGkgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQouYnJlYWRjcnVtYiA+IGxpICsgbGk6YmVmb3JlIHsKICBjb250ZW50OiAiL1wwMGEwIjsKICBwYWRkaW5nOiAwIDVweDsKICBjb2xvcjogI2NjYzsKfQouYnJlYWRjcnVtYiA+IC5hY3RpdmUgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5wYWdpbmF0aW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogMjBweCAwOwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQoucGFnaW5hdGlvbiA+IGxpIHsKICBkaXNwbGF5OiBpbmxpbmU7Cn0KLnBhZ2luYXRpb24gPiBsaSA+IGEsCi5wYWdpbmF0aW9uID4gbGkgPiBzcGFuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxvYXQ6IGxlZnQ7CiAgcGFkZGluZzogNnB4IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBtYXJnaW4tbGVmdDogLTFweDsKfQoucGFnaW5hdGlvbiA+IGxpOmZpcnN0LWNoaWxkID4gYSwKLnBhZ2luYXRpb24gPiBsaTpmaXJzdC1jaGlsZCA+IHNwYW4gewogIG1hcmdpbi1sZWZ0OiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Cn0KLnBhZ2luYXRpb24gPiBsaTpsYXN0LWNoaWxkID4gYSwKLnBhZ2luYXRpb24gPiBsaTpsYXN0LWNoaWxkID4gc3BhbiB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4Owp9Ci5wYWdpbmF0aW9uID4gbGkgPiBhOmhvdmVyLAoucGFnaW5hdGlvbiA+IGxpID4gc3Bhbjpob3ZlciwKLnBhZ2luYXRpb24gPiBsaSA+IGE6Zm9jdXMsCi5wYWdpbmF0aW9uID4gbGkgPiBzcGFuOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwp9Ci5wYWdpbmF0aW9uID4gLmFjdGl2ZSA+IGEsCi5wYWdpbmF0aW9uID4gLmFjdGl2ZSA+IHNwYW4sCi5wYWdpbmF0aW9uID4gLmFjdGl2ZSA+IGE6aG92ZXIsCi5wYWdpbmF0aW9uID4gLmFjdGl2ZSA+IHNwYW46aG92ZXIsCi5wYWdpbmF0aW9uID4gLmFjdGl2ZSA+IGE6Zm9jdXMsCi5wYWdpbmF0aW9uID4gLmFjdGl2ZSA+IHNwYW46Zm9jdXMgewogIHotaW5kZXg6IDI7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKICBib3JkZXItY29sb3I6ICM0MjhiY2E7CiAgY3Vyc29yOiBkZWZhdWx0Owp9Ci5wYWdpbmF0aW9uID4gLmRpc2FibGVkID4gc3BhbiwKLnBhZ2luYXRpb24gPiAuZGlzYWJsZWQgPiBzcGFuOmhvdmVyLAoucGFnaW5hdGlvbiA+IC5kaXNhYmxlZCA+IHNwYW46Zm9jdXMsCi5wYWdpbmF0aW9uID4gLmRpc2FibGVkID4gYSwKLnBhZ2luYXRpb24gPiAuZGlzYWJsZWQgPiBhOmhvdmVyLAoucGFnaW5hdGlvbiA+IC5kaXNhYmxlZCA+IGE6Zm9jdXMgewogIGNvbG9yOiAjOTk5OTk5OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyLWNvbG9yOiAjZGRkOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLnBhZ2luYXRpb24tbGcgPiBsaSA+IGEsCi5wYWdpbmF0aW9uLWxnID4gbGkgPiBzcGFuIHsKICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgZm9udC1zaXplOiAxOHB4Owp9Ci5wYWdpbmF0aW9uLWxnID4gbGk6Zmlyc3QtY2hpbGQgPiBhLAoucGFnaW5hdGlvbi1sZyA+IGxpOmZpcnN0LWNoaWxkID4gc3BhbiB7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNnB4OwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDZweDsKfQoucGFnaW5hdGlvbi1sZyA+IGxpOmxhc3QtY2hpbGQgPiBhLAoucGFnaW5hdGlvbi1sZyA+IGxpOmxhc3QtY2hpbGQgPiBzcGFuIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA2cHg7Cn0KLnBhZ2luYXRpb24tc20gPiBsaSA+IGEsCi5wYWdpbmF0aW9uLXNtID4gbGkgPiBzcGFuIHsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7Cn0KLnBhZ2luYXRpb24tc20gPiBsaTpmaXJzdC1jaGlsZCA+IGEsCi5wYWdpbmF0aW9uLXNtID4gbGk6Zmlyc3QtY2hpbGQgPiBzcGFuIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYWdpbmF0aW9uLXNtID4gbGk6bGFzdC1jaGlsZCA+IGEsCi5wYWdpbmF0aW9uLXNtID4gbGk6bGFzdC1jaGlsZCA+IHNwYW4gewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsKfQoucGFnZXIgewogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW46IDIwcHggMDsKICBsaXN0LXN0eWxlOiBub25lOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoucGFnZXI6YmVmb3JlLAoucGFnZXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIgIjsKICBkaXNwbGF5OiB0YWJsZTsKfQoucGFnZXI6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5wYWdlcjpiZWZvcmUsCi5wYWdlcjphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5wYWdlcjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLnBhZ2VyIGxpIHsKICBkaXNwbGF5OiBpbmxpbmU7Cn0KLnBhZ2VyIGxpID4gYSwKLnBhZ2VyIGxpID4gc3BhbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDVweCAxNHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItcmFkaXVzOiAxNXB4Owp9Ci5wYWdlciBsaSA+IGE6aG92ZXIsCi5wYWdlciBsaSA+IGE6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwp9Ci5wYWdlciAubmV4dCA+IGEsCi5wYWdlciAubmV4dCA+IHNwYW4gewogIGZsb2F0OiByaWdodDsKfQoucGFnZXIgLnByZXZpb3VzID4gYSwKLnBhZ2VyIC5wcmV2aW91cyA+IHNwYW4gewogIGZsb2F0OiBsZWZ0Owp9Ci5wYWdlciAuZGlzYWJsZWQgPiBhLAoucGFnZXIgLmRpc2FibGVkID4gYTpob3ZlciwKLnBhZ2VyIC5kaXNhYmxlZCA+IGE6Zm9jdXMsCi5wYWdlciAuZGlzYWJsZWQgPiBzcGFuIHsKICBjb2xvcjogIzk5OTk5OTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLmxhYmVsIHsKICBkaXNwbGF5OiBpbmxpbmU7CiAgcGFkZGluZzogMC4yZW0gMC42ZW0gMC4zZW07CiAgZm9udC1zaXplOiA3NSU7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogIGJvcmRlci1yYWRpdXM6IDAuMjVlbTsKfQoubGFiZWxbaHJlZl06aG92ZXIsCi5sYWJlbFtocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsKfQoubGFiZWw6ZW1wdHkgewogIGRpc3BsYXk6IG5vbmU7Cn0KLmJ0biAubGFiZWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IC0xcHg7Cn0KLmxhYmVsLWRlZmF1bHQgewogIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7Cn0KLmxhYmVsLWRlZmF1bHRbaHJlZl06aG92ZXIsCi5sYWJlbC1kZWZhdWx0W2hyZWZdOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjODA4MDgwOwp9Ci5sYWJlbC1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwp9Ci5sYWJlbC1wcmltYXJ5W2hyZWZdOmhvdmVyLAoubGFiZWwtcHJpbWFyeVtocmVmXTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMwNzFhOTsKfQoubGFiZWwtc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YzsKfQoubGFiZWwtc3VjY2Vzc1tocmVmXTpob3ZlciwKLmxhYmVsLXN1Y2Nlc3NbaHJlZl06Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICM0NDlkNDQ7Cn0KLmxhYmVsLWluZm8gewogIGJhY2tncm91bmQtY29sb3I6ICM1YmMwZGU7Cn0KLmxhYmVsLWluZm9baHJlZl06aG92ZXIsCi5sYWJlbC1pbmZvW2hyZWZdOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzFiMGQ1Owp9Ci5sYWJlbC13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOwp9Ci5sYWJlbC13YXJuaW5nW2hyZWZdOmhvdmVyLAoubGFiZWwtd2FybmluZ1tocmVmXTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VjOTcxZjsKfQoubGFiZWwtZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwp9Ci5sYWJlbC1kYW5nZXJbaHJlZl06aG92ZXIsCi5sYWJlbC1kYW5nZXJbaHJlZl06Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNjOTMwMmM7Cn0KLmJhZGdlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWluLXdpZHRoOiAxMHB4OwogIHBhZGRpbmc6IDNweCA3cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGNvbG9yOiAjZmZmOwogIGxpbmUtaGVpZ2h0OiAxOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OwogIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KLmJhZGdlOmVtcHR5IHsKICBkaXNwbGF5OiBub25lOwp9Ci5idG4gLmJhZGdlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAtMXB4Owp9CmEuYmFkZ2U6aG92ZXIsCmEuYmFkZ2U6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlID4gLmJhZGdlLAoubmF2LXBpbGxzID4gLmFjdGl2ZSA+IGEgPiAuYmFkZ2UgewogIGNvbG9yOiAjNDI4YmNhOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLm5hdi1waWxscyA+IGxpID4gYSA+IC5iYWRnZSB7CiAgbWFyZ2luLWxlZnQ6IDNweDsKfQouanVtYm90cm9uIHsKICBwYWRkaW5nOiAzMHB4OwogIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgZm9udC1zaXplOiAyMXB4OwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IDIuMTQyODU3MTQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKfQouanVtYm90cm9uIGgxLAouanVtYm90cm9uIC5oMSB7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLmp1bWJvdHJvbiBwIHsKICBsaW5lLWhlaWdodDogMS40Owp9Ci5jb250YWluZXIgLmp1bWJvdHJvbiB7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5qdW1ib3Ryb24gLmNvbnRhaW5lciB7CiAgbWF4LXdpZHRoOiAxMDAlOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmp1bWJvdHJvbiB7CiAgICBwYWRkaW5nLXRvcDogNDhweDsKICAgIHBhZGRpbmctYm90dG9tOiA0OHB4OwogIH0KICAuY29udGFpbmVyIC5qdW1ib3Ryb24gewogICAgcGFkZGluZy1sZWZ0OiA2MHB4OwogICAgcGFkZGluZy1yaWdodDogNjBweDsKICB9CiAgLmp1bWJvdHJvbiBoMSwKICAuanVtYm90cm9uIC5oMSB7CiAgICBmb250LXNpemU6IDYzcHg7CiAgfQp9Ci50aHVtYm5haWwgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDRweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDsKICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDsKfQoudGh1bWJuYWlsID4gaW1nLAoudGh1bWJuYWlsIGEgPiBpbWcgewogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CmEudGh1bWJuYWlsOmhvdmVyLAphLnRodW1ibmFpbDpmb2N1cywKYS50aHVtYm5haWwuYWN0aXZlIHsKICBib3JkZXItY29sb3I6ICM0MjhiY2E7Cn0KLnRodW1ibmFpbCAuY2FwdGlvbiB7CiAgcGFkZGluZzogOXB4OwogIGNvbG9yOiAjMzMzMzMzOwp9Ci5hbGVydCB7CiAgcGFkZGluZzogMTVweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQouYWxlcnQgaDQgewogIG1hcmdpbi10b3A6IDA7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLmFsZXJ0IC5hbGVydC1saW5rIHsKICBmb250LXdlaWdodDogYm9sZDsKfQouYWxlcnQgPiBwLAouYWxlcnQgPiB1bCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouYWxlcnQgPiBwICsgcCB7CiAgbWFyZ2luLXRvcDogNXB4Owp9Ci5hbGVydC1kaXNtaXNzYWJsZSB7CiAgcGFkZGluZy1yaWdodDogMzVweDsKfQouYWxlcnQtZGlzbWlzc2FibGUgLmNsb3NlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAtMnB4OwogIHJpZ2h0OiAtMjFweDsKICBjb2xvcjogaW5oZXJpdDsKfQouYWxlcnQtc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICBib3JkZXItY29sb3I6ICNkNmU5YzY7CiAgY29sb3I6ICMzYzc2M2Q7Cn0KLmFsZXJ0LXN1Y2Nlc3MgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNjOWUyYjM7Cn0KLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjMmI1NDJjOwp9Ci5hbGVydC1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3OwogIGJvcmRlci1jb2xvcjogI2JjZThmMTsKICBjb2xvcjogIzMxNzA4ZjsKfQouYWxlcnQtaW5mbyBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2E2ZTFlYzsKfQouYWxlcnQtaW5mbyAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMyNDUyNjk7Cn0KLmFsZXJ0LXdhcm5pbmcgewogIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7CiAgYm9yZGVyLWNvbG9yOiAjZmFlYmNjOwogIGNvbG9yOiAjOGE2ZDNiOwp9Ci5hbGVydC13YXJuaW5nIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjZjdlMWI1Owp9Ci5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzY2NTEyYzsKfQouYWxlcnQtZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwogIGJvcmRlci1jb2xvcjogI2ViY2NkMTsKICBjb2xvcjogI2E5NDQ0MjsKfQouYWxlcnQtZGFuZ2VyIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjZTRiOWMwOwp9Ci5hbGVydC1kYW5nZXIgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjODQzNTM0Owp9CkAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MHB4IDA7CiAgfQogIHRvIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9Cn0KQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MHB4IDA7CiAgfQogIHRvIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9Cn0KLnByb2dyZXNzIHsKICBvdmVyZmxvdzogaGlkZGVuOwogIGhlaWdodDogMjBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpOwp9Ci5wcm9ncmVzcy1iYXIgewogIGZsb2F0OiBsZWZ0OwogIHdpZHRoOiAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwogIHRyYW5zaXRpb246IHdpZHRoIDAuNnMgZWFzZTsKfQoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtc2l6ZTogNDBweCA0MHB4Owp9Ci5wcm9ncmVzcy5hY3RpdmUgLnByb2dyZXNzLWJhciB7CiAgLXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTsKICBhbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTsKfQoucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtY29sb3I6ICM1Y2I4NWM7Cn0KLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9Ci5wcm9ncmVzcy1iYXItaW5mbyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKfQoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWluZm8gewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7Cn0KLnByb2dyZXNzLWJhci13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOwp9Ci5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItd2FybmluZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKfQoucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q5NTM0ZjsKfQoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKfQoubWVkaWEsCi5tZWRpYS1ib2R5IHsKICBvdmVyZmxvdzogaGlkZGVuOwogIHpvb206IDE7Cn0KLm1lZGlhLAoubWVkaWEgLm1lZGlhIHsKICBtYXJnaW4tdG9wOiAxNXB4Owp9Ci5tZWRpYTpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLXRvcDogMDsKfQoubWVkaWEtb2JqZWN0IHsKICBkaXNwbGF5OiBibG9jazsKfQoubWVkaWEtaGVhZGluZyB7CiAgbWFyZ2luOiAwIDAgNXB4Owp9Ci5tZWRpYSA+IC5wdWxsLWxlZnQgewogIG1hcmdpbi1yaWdodDogMTBweDsKfQoubWVkaWEgPiAucHVsbC1yaWdodCB7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KLm1lZGlhLWxpc3QgewogIHBhZGRpbmctbGVmdDogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5saXN0LWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIHBhZGRpbmctbGVmdDogMDsKfQoubGlzdC1ncm91cC1pdGVtIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMTBweCAxNXB4OwogIG1hcmdpbi1ib3R0b206IC0xcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9Ci5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4Owp9Ci5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKfQoubGlzdC1ncm91cC1pdGVtID4gLmJhZGdlIHsKICBmbG9hdDogcmlnaHQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbSA+IC5iYWRnZSArIC5iYWRnZSB7CiAgbWFyZ2luLXJpZ2h0OiA1cHg7Cn0KYS5saXN0LWdyb3VwLWl0ZW0gewogIGNvbG9yOiAjNTU1Owp9CmEubGlzdC1ncm91cC1pdGVtIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgY29sb3I6ICMzMzM7Cn0KYS5saXN0LWdyb3VwLWl0ZW06aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKfQphLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUsCmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIHsKICB6LWluZGV4OiAyOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7CiAgYm9yZGVyLWNvbG9yOiAjNDI4YmNhOwp9CmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogIGNvbG9yOiBpbmhlcml0Owp9CmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLXRleHQsCmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciAubGlzdC1ncm91cC1pdGVtLXRleHQsCmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyAubGlzdC1ncm91cC1pdGVtLXRleHQgewogIGNvbG9yOiAjZTFlZGY3Owp9Ci5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLmxpc3QtZ3JvdXAtaXRlbS10ZXh0IHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KLnBhbmVsIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Cn0KLnBhbmVsLWJvZHkgewogIHBhZGRpbmc6IDE1cHg7Cn0KLnBhbmVsLWJvZHk6YmVmb3JlLAoucGFuZWwtYm9keTphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5wYW5lbC1ib2R5OmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQoucGFuZWwtYm9keTpiZWZvcmUsCi5wYW5lbC1ib2R5OmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLnBhbmVsLWJvZHk6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5wYW5lbCA+IC5saXN0LWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5wYW5lbCA+IC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW0gewogIGJvcmRlci13aWR0aDogMXB4IDA7Cn0KLnBhbmVsID4gLmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKfQoucGFuZWwgPiAubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b206IDA7Cn0KLnBhbmVsLWhlYWRpbmcgKyAubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLXdpZHRoOiAwOwp9Ci5wYW5lbCA+IC50YWJsZSwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnBhbmVsID4gLnBhbmVsLWJvZHkgKyAudGFibGUsCi5wYW5lbCA+IC5wYW5lbC1ib2R5ICsgLnRhYmxlLXJlc3BvbnNpdmUgewogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwp9Ci5wYW5lbCA+IC50YWJsZSA+IHRib2R5OmZpcnN0LWNoaWxkIHRoLAoucGFuZWwgPiAudGFibGUgPiB0Ym9keTpmaXJzdC1jaGlsZCB0ZCB7CiAgYm9yZGVyLXRvcDogMDsKfQoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDA7Cn0KLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLWxlZnQ6IDA7Cn0KLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQ6bGFzdC1jaGlsZCB7CiAgYm9yZGVyLXJpZ2h0OiAwOwp9Ci5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHI6bGFzdC1jaGlsZCA+IHRoLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHI6bGFzdC1jaGlsZCA+IHRoLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmxhc3QtY2hpbGQgPiB0aCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmxhc3QtY2hpbGQgPiB0aCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0cjpsYXN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0cjpsYXN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHI6bGFzdC1jaGlsZCA+IHRkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHI6bGFzdC1jaGlsZCA+IHRkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmxhc3QtY2hpbGQgPiB0ZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmxhc3QtY2hpbGQgPiB0ZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0cjpsYXN0LWNoaWxkID4gdGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0cjpsYXN0LWNoaWxkID4gdGQgewogIGJvcmRlci1ib3R0b206IDA7Cn0KLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgewogIGJvcmRlcjogMDsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5wYW5lbC1oZWFkaW5nIHsKICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYW5lbC1oZWFkaW5nID4gLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiBpbmhlcml0Owp9Ci5wYW5lbC10aXRsZSB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMTZweDsKICBjb2xvcjogaW5oZXJpdDsKfQoucGFuZWwtdGl0bGUgPiBhIHsKICBjb2xvcjogaW5oZXJpdDsKfQoucGFuZWwtZm9vdGVyIHsKICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5wYW5lbC1ncm91cCAucGFuZWwgKyAucGFuZWwgewogIG1hcmdpbi10b3A6IDVweDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsLWhlYWRpbmcgewogIGJvcmRlci1ib3R0b206IDA7Cn0KLnBhbmVsLWdyb3VwIC5wYW5lbC1oZWFkaW5nICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsLWZvb3RlciB7CiAgYm9yZGVyLXRvcDogMDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7Cn0KLnBhbmVsLWRlZmF1bHQgewogIGJvcmRlci1jb2xvcjogI2RkZDsKfQoucGFuZWwtZGVmYXVsdCA+IC5wYW5lbC1oZWFkaW5nIHsKICBjb2xvcjogIzMzMzMzMzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGJvcmRlci1jb2xvcjogI2RkZDsKfQoucGFuZWwtZGVmYXVsdCA+IC5wYW5lbC1oZWFkaW5nICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjZGRkOwp9Ci5wYW5lbC1kZWZhdWx0ID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2RkZDsKfQoucGFuZWwtcHJpbWFyeSB7CiAgYm9yZGVyLWNvbG9yOiAjNDI4YmNhOwp9Ci5wYW5lbC1wcmltYXJ5ID4gLnBhbmVsLWhlYWRpbmcgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7CiAgYm9yZGVyLWNvbG9yOiAjNDI4YmNhOwp9Ci5wYW5lbC1wcmltYXJ5ID4gLnBhbmVsLWhlYWRpbmcgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogIGJvcmRlci10b3AtY29sb3I6ICM0MjhiY2E7Cn0KLnBhbmVsLXByaW1hcnkgPiAucGFuZWwtZm9vdGVyICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjNDI4YmNhOwp9Ci5wYW5lbC1zdWNjZXNzIHsKICBib3JkZXItY29sb3I6ICNkNmU5YzY7Cn0KLnBhbmVsLXN1Y2Nlc3MgPiAucGFuZWwtaGVhZGluZyB7CiAgY29sb3I6ICMzYzc2M2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICBib3JkZXItY29sb3I6ICNkNmU5YzY7Cn0KLnBhbmVsLXN1Y2Nlc3MgPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2Q2ZTljNjsKfQoucGFuZWwtc3VjY2VzcyA+IC5wYW5lbC1mb290ZXIgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogIGJvcmRlci1ib3R0b20tY29sb3I6ICNkNmU5YzY7Cn0KLnBhbmVsLXdhcm5pbmcgewogIGJvcmRlci1jb2xvcjogI2ZhZWJjYzsKfQoucGFuZWwtd2FybmluZyA+IC5wYW5lbC1oZWFkaW5nIHsKICBjb2xvcjogIzhhNmQzYjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogIGJvcmRlci1jb2xvcjogI2ZhZWJjYzsKfQoucGFuZWwtd2FybmluZyA+IC5wYW5lbC1oZWFkaW5nICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjZmFlYmNjOwp9Ci5wYW5lbC13YXJuaW5nID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZhZWJjYzsKfQoucGFuZWwtZGFuZ2VyIHsKICBib3JkZXItY29sb3I6ICNlYmNjZDE7Cn0KLnBhbmVsLWRhbmdlciA+IC5wYW5lbC1oZWFkaW5nIHsKICBjb2xvcjogI2E5NDQ0MjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwogIGJvcmRlci1jb2xvcjogI2ViY2NkMTsKfQoucGFuZWwtZGFuZ2VyID4gLnBhbmVsLWhlYWRpbmcgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogIGJvcmRlci10b3AtY29sb3I6ICNlYmNjZDE7Cn0KLnBhbmVsLWRhbmdlciA+IC5wYW5lbC1mb290ZXIgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogIGJvcmRlci1ib3R0b20tY29sb3I6ICNlYmNjZDE7Cn0KLnBhbmVsLWluZm8gewogIGJvcmRlci1jb2xvcjogI2JjZThmMTsKfQoucGFuZWwtaW5mbyA+IC5wYW5lbC1oZWFkaW5nIHsKICBjb2xvcjogIzMxNzA4ZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3OwogIGJvcmRlci1jb2xvcjogI2JjZThmMTsKfQoucGFuZWwtaW5mbyA+IC5wYW5lbC1oZWFkaW5nICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjYmNlOGYxOwp9Ci5wYW5lbC1pbmZvID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2JjZThmMTsKfQoud2VsbCB7CiAgbWluLWhlaWdodDogMjBweDsKICBwYWRkaW5nOiAxOXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBib3JkZXI6IDFweCBzb2xpZCAjZTNlM2UzOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci53ZWxsIGJsb2NrcXVvdGUgewogIGJvcmRlci1jb2xvcjogI2RkZDsKICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7Cn0KLndlbGwtbGcgewogIHBhZGRpbmc6IDI0cHg7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci53ZWxsLXNtIHsKICBwYWRkaW5nOiA5cHg7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5jbG9zZSB7CiAgZmxvYXQ6IHJpZ2h0OwogIGZvbnQtc2l6ZTogMjFweDsKICBmb250LXdlaWdodDogYm9sZDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogIzAwMDsKICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwogIG9wYWNpdHk6IDAuMjsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MjApOwp9Ci5jbG9zZTpob3ZlciwKLmNsb3NlOmZvY3VzIHsKICBjb2xvcjogIzAwMDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIG9wYWNpdHk6IDAuNTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NTApOwp9CmJ1dHRvbi5jbG9zZSB7CiAgcGFkZGluZzogMDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQoubW9kYWwtb3BlbiB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoubW9kYWwgewogIGRpc3BsYXk6IG5vbmU7CiAgb3ZlcmZsb3c6IGF1dG87CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTA0MDsKfQoubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsKICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7CiAgLW1vei10cmFuc2l0aW9uOiAtbW96LXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0Owp9Ci5tb2RhbC5pbiAubW9kYWwtZGlhbG9nIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKfQoubW9kYWwtZGlhbG9nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IGF1dG87CiAgbWFyZ2luOiAxMHB4OwogIHotaW5kZXg6IDEwNTA7Cn0KLm1vZGFsLWNvbnRlbnQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1yYWRpdXM6IDZweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgYm94LXNoYWRvdzogMCAzcHggOXB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIG91dGxpbmU6IG5vbmU7Cn0KLm1vZGFsLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwMzA7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoubW9kYWwtYmFja2Ryb3AuZmFkZSB7CiAgb3BhY2l0eTogMDsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7Cn0KLm1vZGFsLWJhY2tkcm9wLmluIHsKICBvcGFjaXR5OiAwLjU7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTsKfQoubW9kYWwtaGVhZGVyIHsKICBwYWRkaW5nOiAxNXB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlNWU1OwogIG1pbi1oZWlnaHQ6IDE2LjQyODU3MTQzcHg7Cn0KLm1vZGFsLWhlYWRlciAuY2xvc2UgewogIG1hcmdpbi10b3A6IC0ycHg7Cn0KLm1vZGFsLXRpdGxlIHsKICBtYXJnaW46IDA7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7Cn0KLm1vZGFsLWJvZHkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAyMHB4Owp9Ci5tb2RhbC1mb290ZXIgewogIG1hcmdpbi10b3A6IDE1cHg7CiAgcGFkZGluZzogMTlweCAyMHB4IDIwcHg7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU1ZTU7Cn0KLm1vZGFsLWZvb3RlcjpiZWZvcmUsCi5tb2RhbC1mb290ZXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIgIjsKICBkaXNwbGF5OiB0YWJsZTsKfQoubW9kYWwtZm9vdGVyOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQoubW9kYWwtZm9vdGVyOmJlZm9yZSwKLm1vZGFsLWZvb3RlcjphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5tb2RhbC1mb290ZXI6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5tb2RhbC1mb290ZXIgLmJ0biArIC5idG4gewogIG1hcmdpbi1sZWZ0OiA1cHg7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoubW9kYWwtZm9vdGVyIC5idG4tZ3JvdXAgLmJ0biArIC5idG4gewogIG1hcmdpbi1sZWZ0OiAtMXB4Owp9Ci5tb2RhbC1mb290ZXIgLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewogIG1hcmdpbi1sZWZ0OiAwOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm1vZGFsLWRpYWxvZyB7CiAgICB3aWR0aDogNjAwcHg7CiAgICBtYXJnaW46IDMwcHggYXV0bzsKICB9CiAgLm1vZGFsLWNvbnRlbnQgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjUpOwogIH0KfQoudG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDEwMzA7CiAgZGlzcGxheTogYmxvY2s7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNDsKICBvcGFjaXR5OiAwOwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKfQoudG9vbHRpcC5pbiB7CiAgb3BhY2l0eTogMC45OwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT05MCk7Cn0KLnRvb2x0aXAudG9wIHsKICBtYXJnaW4tdG9wOiAtM3B4OwogIHBhZGRpbmc6IDVweCAwOwp9Ci50b29sdGlwLnJpZ2h0IHsKICBtYXJnaW4tbGVmdDogM3B4OwogIHBhZGRpbmc6IDAgNXB4Owp9Ci50b29sdGlwLmJvdHRvbSB7CiAgbWFyZ2luLXRvcDogM3B4OwogIHBhZGRpbmc6IDVweCAwOwp9Ci50b29sdGlwLmxlZnQgewogIG1hcmdpbi1sZWZ0OiAtM3B4OwogIHBhZGRpbmc6IDAgNXB4Owp9Ci50b29sdGlwLWlubmVyIHsKICBtYXgtd2lkdGg6IDIwMHB4OwogIHBhZGRpbmc6IDNweCA4cHg7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQoudG9vbHRpcC1hcnJvdyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1zdHlsZTogc29saWQ7Cn0KLnRvb2x0aXAudG9wIC50b29sdGlwLWFycm93IHsKICBib3R0b206IDA7CiAgbGVmdDogNTAlOwogIG1hcmdpbi1sZWZ0OiAtNXB4OwogIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogIGJvcmRlci10b3AtY29sb3I6ICMwMDA7Cn0KLnRvb2x0aXAudG9wLWxlZnQgLnRvb2x0aXAtYXJyb3cgewogIGJvdHRvbTogMDsKICBsZWZ0OiA1cHg7CiAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoudG9vbHRpcC50b3AtcmlnaHQgLnRvb2x0aXAtYXJyb3cgewogIGJvdHRvbTogMDsKICByaWdodDogNXB4OwogIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogIGJvcmRlci10b3AtY29sb3I6ICMwMDA7Cn0KLnRvb2x0aXAucmlnaHQgLnRvb2x0aXAtYXJyb3cgewogIHRvcDogNTAlOwogIGxlZnQ6IDA7CiAgbWFyZ2luLXRvcDogLTVweDsKICBib3JkZXItd2lkdGg6IDVweCA1cHggNXB4IDA7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLmxlZnQgLnRvb2x0aXAtYXJyb3cgewogIHRvcDogNTAlOwogIHJpZ2h0OiAwOwogIG1hcmdpbi10b3A6IC01cHg7CiAgYm9yZGVyLXdpZHRoOiA1cHggMCA1cHggNXB4OwogIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLmJvdHRvbSAudG9vbHRpcC1hcnJvdyB7CiAgdG9wOiAwOwogIGxlZnQ6IDUwJTsKICBtYXJnaW4tbGVmdDogLTVweDsKICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLmJvdHRvbS1sZWZ0IC50b29sdGlwLWFycm93IHsKICB0b3A6IDA7CiAgbGVmdDogNXB4OwogIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7Cn0KLnRvb2x0aXAuYm90dG9tLXJpZ2h0IC50b29sdGlwLWFycm93IHsKICB0b3A6IDA7CiAgcmlnaHQ6IDVweDsKICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9Ci5wb3BvdmVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAxMDsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogMjc2cHg7CiAgcGFkZGluZzogMXB4OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1yYWRpdXM6IDZweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJveC1zaGFkb3c6IDAgNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KLnBvcG92ZXIudG9wIHsKICBtYXJnaW4tdG9wOiAtMTBweDsKfQoucG9wb3Zlci5yaWdodCB7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KLnBvcG92ZXIuYm90dG9tIHsKICBtYXJnaW4tdG9wOiAxMHB4Owp9Ci5wb3BvdmVyLmxlZnQgewogIG1hcmdpbi1sZWZ0OiAtMTBweDsKfQoucG9wb3Zlci10aXRsZSB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDhweCAxNHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgYm9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7Cn0KLnBvcG92ZXItY29udGVudCB7CiAgcGFkZGluZzogOXB4IDE0cHg7Cn0KLnBvcG92ZXIgLmFycm93LAoucG9wb3ZlciAuYXJyb3c6YWZ0ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci5wb3BvdmVyIC5hcnJvdyB7CiAgYm9yZGVyLXdpZHRoOiAxMXB4Owp9Ci5wb3BvdmVyIC5hcnJvdzphZnRlciB7CiAgYm9yZGVyLXdpZHRoOiAxMHB4OwogIGNvbnRlbnQ6ICIiOwp9Ci5wb3BvdmVyLnRvcCAuYXJyb3cgewogIGxlZnQ6IDUwJTsKICBtYXJnaW4tbGVmdDogLTExcHg7CiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKICBib3JkZXItdG9wLWNvbG9yOiAjOTk5OwogIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7CiAgYm90dG9tOiAtMTFweDsKfQoucG9wb3Zlci50b3AgLmFycm93OmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgYm90dG9tOiAxcHg7CiAgbWFyZ2luLWxlZnQ6IC0xMHB4OwogIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjsKfQoucG9wb3Zlci5yaWdodCAuYXJyb3cgewogIHRvcDogNTAlOwogIGxlZnQ6IC0xMXB4OwogIG1hcmdpbi10b3A6IC0xMXB4OwogIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogIzk5OTsKICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KLnBvcG92ZXIucmlnaHQgLmFycm93OmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgbGVmdDogMXB4OwogIGJvdHRvbTogLTEwcHg7CiAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmOwp9Ci5wb3BvdmVyLmJvdHRvbSAuYXJyb3cgewogIGxlZnQ6IDUwJTsKICBtYXJnaW4tbGVmdDogLTExcHg7CiAgYm9yZGVyLXRvcC13aWR0aDogMDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTk5OwogIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7CiAgdG9wOiAtMTFweDsKfQoucG9wb3Zlci5ib3R0b20gLmFycm93OmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgdG9wOiAxcHg7CiAgbWFyZ2luLWxlZnQ6IC0xMHB4OwogIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKfQoucG9wb3Zlci5sZWZ0IC5hcnJvdyB7CiAgdG9wOiA1MCU7CiAgcmlnaHQ6IC0xMXB4OwogIG1hcmdpbi10b3A6IC0xMXB4OwogIGJvcmRlci1yaWdodC13aWR0aDogMDsKICBib3JkZXItbGVmdC1jb2xvcjogIzk5OTsKICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoucG9wb3Zlci5sZWZ0IC5hcnJvdzphZnRlciB7CiAgY29udGVudDogIiAiOwogIHJpZ2h0OiAxcHg7CiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmOwogIGJvdHRvbTogLTEwcHg7Cn0KLmNhcm91c2VsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmNhcm91c2VsLWlubmVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB3aWR0aDogMTAwJTsKfQouY2Fyb3VzZWwtaW5uZXIgPiAuaXRlbSB7CiAgZGlzcGxheTogbm9uZTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjZzIGVhc2UtaW4tb3V0IGxlZnQ7CiAgdHJhbnNpdGlvbjogMC42cyBlYXNlLWluLW91dCBsZWZ0Owp9Ci5jYXJvdXNlbC1pbm5lciA+IC5pdGVtID4gaW1nLAouY2Fyb3VzZWwtaW5uZXIgPiAuaXRlbSA+IGEgPiBpbWcgewogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87CiAgbGluZS1oZWlnaHQ6IDE7Cn0KLmNhcm91c2VsLWlubmVyID4gLmFjdGl2ZSwKLmNhcm91c2VsLWlubmVyID4gLm5leHQsCi5jYXJvdXNlbC1pbm5lciA+IC5wcmV2IHsKICBkaXNwbGF5OiBibG9jazsKfQouY2Fyb3VzZWwtaW5uZXIgPiAuYWN0aXZlIHsKICBsZWZ0OiAwOwp9Ci5jYXJvdXNlbC1pbm5lciA+IC5uZXh0LAouY2Fyb3VzZWwtaW5uZXIgPiAucHJldiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICB3aWR0aDogMTAwJTsKfQouY2Fyb3VzZWwtaW5uZXIgPiAubmV4dCB7CiAgbGVmdDogMTAwJTsKfQouY2Fyb3VzZWwtaW5uZXIgPiAucHJldiB7CiAgbGVmdDogLTEwMCU7Cn0KLmNhcm91c2VsLWlubmVyID4gLm5leHQubGVmdCwKLmNhcm91c2VsLWlubmVyID4gLnByZXYucmlnaHQgewogIGxlZnQ6IDA7Cn0KLmNhcm91c2VsLWlubmVyID4gLmFjdGl2ZS5sZWZ0IHsKICBsZWZ0OiAtMTAwJTsKfQouY2Fyb3VzZWwtaW5uZXIgPiAuYWN0aXZlLnJpZ2h0IHsKICBsZWZ0OiAxMDAlOwp9Ci5jYXJvdXNlbC1jb250cm9sIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgYm90dG9tOiAwOwogIHdpZHRoOiAxNSU7CiAgb3BhY2l0eTogMC41OwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7CiAgZm9udC1zaXplOiAyMHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC42KTsKfQouY2Fyb3VzZWwtY29udHJvbC5sZWZ0IHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCBjb2xvci1zdG9wKHJnYmEoMCwgMCwgMCwgMC41KSAwJSksIGNvbG9yLXN0b3AocmdiYSgwLCAwLCAwLCAwLjAwMDEpIDEwMCUpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC41KSAwJSwgcmdiYSgwLCAwLCAwLCAwLjAwMDEpIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjODAwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzAwMDAwMDAwJywgR3JhZGllbnRUeXBlPTEpOwp9Ci5jYXJvdXNlbC1jb250cm9sLnJpZ2h0IHsKICBsZWZ0OiBhdXRvOwogIHJpZ2h0OiAwOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsIGNvbG9yLXN0b3AocmdiYSgwLCAwLCAwLCAwLjAwMDEpIDAlKSwgY29sb3Itc3RvcChyZ2JhKDAsIDAsIDAsIDAuNSkgMTAwJSkpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjAwMDEpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNSkgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMwMDAwMDAwMCcsIGVuZENvbG9yc3RyPScjODAwMDAwMDAnLCBHcmFkaWVudFR5cGU9MSk7Cn0KLmNhcm91c2VsLWNvbnRyb2w6aG92ZXIsCi5jYXJvdXNlbC1jb250cm9sOmZvY3VzIHsKICBvdXRsaW5lOiBub25lOwogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBvcGFjaXR5OiAwLjk7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTkwKTsKfQouY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2LAouY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0LAouY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwKLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA1MCU7CiAgei1pbmRleDogNTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiwKLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQgewogIGxlZnQ6IDUwJTsKfQouY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0LAouY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQgewogIHJpZ2h0OiA1MCU7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiwKLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCB7CiAgd2lkdGg6IDIwcHg7CiAgaGVpZ2h0OiAyMHB4OwogIG1hcmdpbi10b3A6IC0xMHB4OwogIG1hcmdpbi1sZWZ0OiAtMTBweDsKICBmb250LWZhbWlseTogc2VyaWY7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldjpiZWZvcmUgewogIGNvbnRlbnQ6ICdcMjAzOSc7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dDpiZWZvcmUgewogIGNvbnRlbnQ6ICdcMjAzYSc7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDEwcHg7CiAgbGVmdDogNTAlOwogIHotaW5kZXg6IDE1OwogIHdpZHRoOiA2MCU7CiAgbWFyZ2luLWxlZnQ6IC0zMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAxMHB4OwogIG1hcmdpbjogMXB4OwogIHRleHQtaW5kZW50OiAtOTk5cHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwIFw5OwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgLmFjdGl2ZSB7CiAgbWFyZ2luOiAwOwogIHdpZHRoOiAxMnB4OwogIGhlaWdodDogMTJweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5jYXJvdXNlbC1jYXB0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMTUlOwogIHJpZ2h0OiAxNSU7CiAgYm90dG9tOiAyMHB4OwogIHotaW5kZXg6IDEwOwogIHBhZGRpbmctdG9wOiAyMHB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC42KTsKfQouY2Fyb3VzZWwtY2FwdGlvbiAuYnRuIHsKICB0ZXh0LXNoYWRvdzogbm9uZTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogIC5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb25zLWNoZXZyb24tbGVmdCwKICAuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29ucy1jaGV2cm9uLXJpZ2h0LAogIC5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsCiAgLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCB7CiAgICB3aWR0aDogMzBweDsKICAgIGhlaWdodDogMzBweDsKICAgIG1hcmdpbi10b3A6IC0xNXB4OwogICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogICAgZm9udC1zaXplOiAzMHB4OwogIH0KICAuY2Fyb3VzZWwtY2FwdGlvbiB7CiAgICBsZWZ0OiAyMCU7CiAgICByaWdodDogMjAlOwogICAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgfQogIC5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICAgIGJvdHRvbTogMjBweDsKICB9Cn0KLmNsZWFyZml4OmJlZm9yZSwKLmNsZWFyZml4OmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgZGlzcGxheTogdGFibGU7Cn0KLmNsZWFyZml4OmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQouY2VudGVyLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KLnB1bGwtcmlnaHQgewogIGZsb2F0OiByaWdodCAhaW1wb3J0YW50Owp9Ci5wdWxsLWxlZnQgewogIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KLmhpZGUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQouc2hvdyB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQouaW52aXNpYmxlIHsKICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KLnRleHQtaGlkZSB7CiAgZm9udDogMC8wIGE7CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIHRleHQtc2hhZG93OiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKfQouaGlkZGVuIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7Cn0KLmFmZml4IHsKICBwb3NpdGlvbjogZml4ZWQ7Cn0KQC1tcy12aWV3cG9ydCB7CiAgd2lkdGg6IGRldmljZS13aWR0aDsKfQoudmlzaWJsZS14cywKdHIudmlzaWJsZS14cywKdGgudmlzaWJsZS14cywKdGQudmlzaWJsZS14cyB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIC52aXNpYmxlLXhzIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIHRhYmxlLnZpc2libGUteHMgewogICAgZGlzcGxheTogdGFibGU7CiAgfQogIHRyLnZpc2libGUteHMgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIHRoLnZpc2libGUteHMsCiAgdGQudmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgLnZpc2libGUteHMudmlzaWJsZS1zbSB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXhzLnZpc2libGUtc20gewogICAgZGlzcGxheTogdGFibGU7CiAgfQogIHRyLnZpc2libGUteHMudmlzaWJsZS1zbSB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS14cy52aXNpYmxlLXNtLAogIHRkLnZpc2libGUteHMudmlzaWJsZS1zbSB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkgewogIC52aXNpYmxlLXhzLnZpc2libGUtbWQgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS14cy52aXNpYmxlLW1kIHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLXhzLnZpc2libGUtbWQgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIHRoLnZpc2libGUteHMudmlzaWJsZS1tZCwKICB0ZC52aXNpYmxlLXhzLnZpc2libGUtbWQgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLnZpc2libGUteHMudmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXhzLnZpc2libGUtbGcgewogICAgZGlzcGxheTogdGFibGU7CiAgfQogIHRyLnZpc2libGUteHMudmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS14cy52aXNpYmxlLWxnLAogIHRkLnZpc2libGUteHMudmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLXNtLAp0ci52aXNpYmxlLXNtLAp0aC52aXNpYmxlLXNtLAp0ZC52aXNpYmxlLXNtIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLnZpc2libGUtc20udmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXNtLnZpc2libGUteHMgewogICAgZGlzcGxheTogdGFibGU7CiAgfQogIHRyLnZpc2libGUtc20udmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS1zbS52aXNpYmxlLXhzLAogIHRkLnZpc2libGUtc20udmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgLnZpc2libGUtc20gewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS1zbSB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1zbSB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS1zbSwKICB0ZC52aXNpYmxlLXNtIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgLnZpc2libGUtc20udmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXNtLnZpc2libGUtbWQgewogICAgZGlzcGxheTogdGFibGU7CiAgfQogIHRyLnZpc2libGUtc20udmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS1zbS52aXNpYmxlLW1kLAogIHRkLnZpc2libGUtc20udmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAudmlzaWJsZS1zbS52aXNpYmxlLWxnIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIHRhYmxlLnZpc2libGUtc20udmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1zbS52aXNpYmxlLWxnIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLXNtLnZpc2libGUtbGcsCiAgdGQudmlzaWJsZS1zbS52aXNpYmxlLWxnIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KLnZpc2libGUtbWQsCnRyLnZpc2libGUtbWQsCnRoLnZpc2libGUtbWQsCnRkLnZpc2libGUtbWQgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAudmlzaWJsZS1tZC52aXNpYmxlLXhzIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIHRhYmxlLnZpc2libGUtbWQudmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1tZC52aXNpYmxlLXhzIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLW1kLnZpc2libGUteHMsCiAgdGQudmlzaWJsZS1tZC52aXNpYmxlLXhzIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpIHsKICAudmlzaWJsZS1tZC52aXNpYmxlLXNtIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIHRhYmxlLnZpc2libGUtbWQudmlzaWJsZS1zbSB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1tZC52aXNpYmxlLXNtIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLW1kLnZpc2libGUtc20sCiAgdGQudmlzaWJsZS1tZC52aXNpYmxlLXNtIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgLnZpc2libGUtbWQgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS1tZCwKICB0ZC52aXNpYmxlLW1kIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC52aXNpYmxlLW1kLnZpc2libGUtbGcgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS1tZC52aXNpYmxlLWxnIHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLW1kLnZpc2libGUtbGcgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIHRoLnZpc2libGUtbWQudmlzaWJsZS1sZywKICB0ZC52aXNpYmxlLW1kLnZpc2libGUtbGcgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQoudmlzaWJsZS1sZywKdHIudmlzaWJsZS1sZywKdGgudmlzaWJsZS1sZywKdGQudmlzaWJsZS1sZyB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIC52aXNpYmxlLWxnLnZpc2libGUteHMgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS1sZy52aXNpYmxlLXhzIHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLWxnLnZpc2libGUteHMgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIHRoLnZpc2libGUtbGcudmlzaWJsZS14cywKICB0ZC52aXNpYmxlLWxnLnZpc2libGUteHMgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogIC52aXNpYmxlLWxnLnZpc2libGUtc20gewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS1sZy52aXNpYmxlLXNtIHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLWxnLnZpc2libGUtc20gewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIHRoLnZpc2libGUtbGcudmlzaWJsZS1zbSwKICB0ZC52aXNpYmxlLWxnLnZpc2libGUtc20gewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAudmlzaWJsZS1sZy52aXNpYmxlLW1kIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIHRhYmxlLnZpc2libGUtbGcudmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1sZy52aXNpYmxlLW1kIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLWxnLnZpc2libGUtbWQsCiAgdGQudmlzaWJsZS1sZy52aXNpYmxlLW1kIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC52aXNpYmxlLWxnIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIHRhYmxlLnZpc2libGUtbGcgewogICAgZGlzcGxheTogdGFibGU7CiAgfQogIHRyLnZpc2libGUtbGcgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIHRoLnZpc2libGUtbGcsCiAgdGQudmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQp9Ci5oaWRkZW4teHMgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KdGFibGUuaGlkZGVuLXhzIHsKICBkaXNwbGF5OiB0YWJsZTsKfQp0ci5oaWRkZW4teHMgewogIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50Owp9CnRoLmhpZGRlbi14cywKdGQuaGlkZGVuLXhzIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmhpZGRlbi14cywKICB0ci5oaWRkZW4teHMsCiAgdGguaGlkZGVuLXhzLAogIHRkLmhpZGRlbi14cyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgLmhpZGRlbi14cy5oaWRkZW4tc20sCiAgdHIuaGlkZGVuLXhzLmhpZGRlbi1zbSwKICB0aC5oaWRkZW4teHMuaGlkZGVuLXNtLAogIHRkLmhpZGRlbi14cy5oaWRkZW4tc20gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAuaGlkZGVuLXhzLmhpZGRlbi1tZCwKICB0ci5oaWRkZW4teHMuaGlkZGVuLW1kLAogIHRoLmhpZGRlbi14cy5oaWRkZW4tbWQsCiAgdGQuaGlkZGVuLXhzLmhpZGRlbi1tZCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuaGlkZGVuLXhzLmhpZGRlbi1sZywKICB0ci5oaWRkZW4teHMuaGlkZGVuLWxnLAogIHRoLmhpZGRlbi14cy5oaWRkZW4tbGcsCiAgdGQuaGlkZGVuLXhzLmhpZGRlbi1sZyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9Ci5oaWRkZW4tc20gewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KdGFibGUuaGlkZGVuLXNtIHsKICBkaXNwbGF5OiB0YWJsZTsKfQp0ci5oaWRkZW4tc20gewogIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50Owp9CnRoLmhpZGRlbi1zbSwKdGQuaGlkZGVuLXNtIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmhpZGRlbi1zbS5oaWRkZW4teHMsCiAgdHIuaGlkZGVuLXNtLmhpZGRlbi14cywKICB0aC5oaWRkZW4tc20uaGlkZGVuLXhzLAogIHRkLmhpZGRlbi1zbS5oaWRkZW4teHMgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogIC5oaWRkZW4tc20sCiAgdHIuaGlkZGVuLXNtLAogIHRoLmhpZGRlbi1zbSwKICB0ZC5oaWRkZW4tc20gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAuaGlkZGVuLXNtLmhpZGRlbi1tZCwKICB0ci5oaWRkZW4tc20uaGlkZGVuLW1kLAogIHRoLmhpZGRlbi1zbS5oaWRkZW4tbWQsCiAgdGQuaGlkZGVuLXNtLmhpZGRlbi1tZCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuaGlkZGVuLXNtLmhpZGRlbi1sZywKICB0ci5oaWRkZW4tc20uaGlkZGVuLWxnLAogIHRoLmhpZGRlbi1zbS5oaWRkZW4tbGcsCiAgdGQuaGlkZGVuLXNtLmhpZGRlbi1sZyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9Ci5oaWRkZW4tbWQgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KdGFibGUuaGlkZGVuLW1kIHsKICBkaXNwbGF5OiB0YWJsZTsKfQp0ci5oaWRkZW4tbWQgewogIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50Owp9CnRoLmhpZGRlbi1tZCwKdGQuaGlkZGVuLW1kIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmhpZGRlbi1tZC5oaWRkZW4teHMsCiAgdHIuaGlkZGVuLW1kLmhpZGRlbi14cywKICB0aC5oaWRkZW4tbWQuaGlkZGVuLXhzLAogIHRkLmhpZGRlbi1tZC5oaWRkZW4teHMgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogIC5oaWRkZW4tbWQuaGlkZGVuLXNtLAogIHRyLmhpZGRlbi1tZC5oaWRkZW4tc20sCiAgdGguaGlkZGVuLW1kLmhpZGRlbi1zbSwKICB0ZC5oaWRkZW4tbWQuaGlkZGVuLXNtIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgLmhpZGRlbi1tZCwKICB0ci5oaWRkZW4tbWQsCiAgdGguaGlkZGVuLW1kLAogIHRkLmhpZGRlbi1tZCB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuaGlkZGVuLW1kLmhpZGRlbi1sZywKICB0ci5oaWRkZW4tbWQuaGlkZGVuLWxnLAogIHRoLmhpZGRlbi1tZC5oaWRkZW4tbGcsCiAgdGQuaGlkZGVuLW1kLmhpZGRlbi1sZyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9Ci5oaWRkZW4tbGcgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KdGFibGUuaGlkZGVuLWxnIHsKICBkaXNwbGF5OiB0YWJsZTsKfQp0ci5oaWRkZW4tbGcgewogIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50Owp9CnRoLmhpZGRlbi1sZywKdGQuaGlkZGVuLWxnIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmhpZGRlbi1sZy5oaWRkZW4teHMsCiAgdHIuaGlkZGVuLWxnLmhpZGRlbi14cywKICB0aC5oaWRkZW4tbGcuaGlkZGVuLXhzLAogIHRkLmhpZGRlbi1sZy5oaWRkZW4teHMgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogIC5oaWRkZW4tbGcuaGlkZGVuLXNtLAogIHRyLmhpZGRlbi1sZy5oaWRkZW4tc20sCiAgdGguaGlkZGVuLWxnLmhpZGRlbi1zbSwKICB0ZC5oaWRkZW4tbGcuaGlkZGVuLXNtIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgLmhpZGRlbi1sZy5oaWRkZW4tbWQsCiAgdHIuaGlkZGVuLWxnLmhpZGRlbi1tZCwKICB0aC5oaWRkZW4tbGcuaGlkZGVuLW1kLAogIHRkLmhpZGRlbi1sZy5oaWRkZW4tbWQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmhpZGRlbi1sZywKICB0ci5oaWRkZW4tbGcsCiAgdGguaGlkZGVuLWxnLAogIHRkLmhpZGRlbi1sZyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLXByaW50LAp0ci52aXNpYmxlLXByaW50LAp0aC52aXNpYmxlLXByaW50LAp0ZC52aXNpYmxlLXByaW50IHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIHByaW50IHsKICAudmlzaWJsZS1wcmludCB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXByaW50IHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLXByaW50IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLXByaW50LAogIHRkLnZpc2libGUtcHJpbnQgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAuaGlkZGVuLXByaW50LAogIHRyLmhpZGRlbi1wcmludCwKICB0aC5oaWRkZW4tcHJpbnQsCiAgdGQuaGlkZGVuLXByaW50IHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/alerts.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQWxlcnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBzdHlsZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmFsZXJ0IHsKICBwYWRkaW5nOiBAYWxlcnQtcGFkZGluZzsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQGFsZXJ0LWJvcmRlci1yYWRpdXM7CgogIC8vIEhlYWRpbmdzIGZvciBsYXJnZXIgYWxlcnRzCiAgaDQgewogICAgbWFyZ2luLXRvcDogMDsKICAgIC8vIFNwZWNpZmllZCBmb3IgdGhlIGg0IHRvIHByZXZlbnQgY29uZmxpY3RzIG9mIGNoYW5naW5nIEBoZWFkaW5ncy1jb2xvcgogICAgY29sb3I6IGluaGVyaXQ7CiAgfQogIC8vIFByb3ZpZGUgY2xhc3MgZm9yIGxpbmtzIHRoYXQgbWF0Y2ggYWxlcnRzCiAgLmFsZXJ0LWxpbmsgewogICAgZm9udC13ZWlnaHQ6IEBhbGVydC1saW5rLWZvbnQtd2VpZ2h0OwogIH0KCiAgLy8gSW1wcm92ZSBhbGlnbm1lbnQgYW5kIHNwYWNpbmcgb2YgaW5uZXIgY29udGVudAogID4gcCwKICA+IHVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogID4gcCArIHAgewogICAgbWFyZ2luLXRvcDogNXB4OwogIH0KfQoKLy8gRGlzbWlzc2FibGUgYWxlcnRzCi8vCi8vIEV4cGFuZCB0aGUgcmlnaHQgcGFkZGluZyBhbmQgYWNjb3VudCBmb3IgdGhlIGNsb3NlIGJ1dHRvbidzIHBvc2l0aW9uaW5nLgoKLmFsZXJ0LWRpc21pc3NhYmxlIHsKIHBhZGRpbmctcmlnaHQ6IChAYWxlcnQtcGFkZGluZyArIDIwKTsKCiAgLy8gQWRqdXN0IGNsb3NlIGxpbmsgcG9zaXRpb24KICAuY2xvc2UgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMnB4OwogICAgcmlnaHQ6IC0yMXB4OwogICAgY29sb3I6IGluaGVyaXQ7CiAgfQp9CgovLyBBbHRlcm5hdGUgc3R5bGVzCi8vCi8vIEdlbmVyYXRlIGNvbnRleHR1YWwgbW9kaWZpZXIgY2xhc3NlcyBmb3IgY29sb3JpemluZyB0aGUgYWxlcnQuCgouYWxlcnQtc3VjY2VzcyB7CiAgLmFsZXJ0LXZhcmlhbnQoQGFsZXJ0LXN1Y2Nlc3MtYmc7IEBhbGVydC1zdWNjZXNzLWJvcmRlcjsgQGFsZXJ0LXN1Y2Nlc3MtdGV4dCk7Cn0KLmFsZXJ0LWluZm8gewogIC5hbGVydC12YXJpYW50KEBhbGVydC1pbmZvLWJnOyBAYWxlcnQtaW5mby1ib3JkZXI7IEBhbGVydC1pbmZvLXRleHQpOwp9Ci5hbGVydC13YXJuaW5nIHsKICAuYWxlcnQtdmFyaWFudChAYWxlcnQtd2FybmluZy1iZzsgQGFsZXJ0LXdhcm5pbmctYm9yZGVyOyBAYWxlcnQtd2FybmluZy10ZXh0KTsKfQouYWxlcnQtZGFuZ2VyIHsKICAuYWxlcnQtdmFyaWFudChAYWxlcnQtZGFuZ2VyLWJnOyBAYWxlcnQtZGFuZ2VyLWJvcmRlcjsgQGFsZXJ0LWRhbmdlci10ZXh0KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/badges.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQmFkZ2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBjbGFzc2VzCi5iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1pbi13aWR0aDogMTBweDsKICBwYWRkaW5nOiAzcHggN3B4OwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1zbWFsbDsKICBmb250LXdlaWdodDogQGJhZGdlLWZvbnQtd2VpZ2h0OwogIGNvbG9yOiBAYmFkZ2UtY29sb3I7CiAgbGluZS1oZWlnaHQ6IEBiYWRnZS1saW5lLWhlaWdodDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJhZGdlLWJnOwogIGJvcmRlci1yYWRpdXM6IEBiYWRnZS1ib3JkZXItcmFkaXVzOwoKICAvLyBFbXB0eSBiYWRnZXMgY29sbGFwc2UgYXV0b21hdGljYWxseSAobm90IGF2YWlsYWJsZSBpbiBJRTgpCiAgJjplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KCiAgLy8gUXVpY2sgZml4IGZvciBiYWRnZXMgaW4gYnV0dG9ucwogIC5idG4gJiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0xcHg7CiAgfQp9CgovLyBIb3ZlciBzdGF0ZSwgYnV0IG9ubHkgZm9yIGxpbmtzCmEuYmFkZ2UgewogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGJhZGdlLWxpbmstaG92ZXItY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgfQp9CgovLyBBY2NvdW50IGZvciBjb3VudGVycyBpbiBuYXZzCmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSA+IC5iYWRnZSwKLm5hdi1waWxscyA+IC5hY3RpdmUgPiBhID4gLmJhZGdlIHsKICBjb2xvcjogQGJhZGdlLWFjdGl2ZS1jb2xvcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmFkZ2UtYWN0aXZlLWJnOwp9Ci5uYXYtcGlsbHMgPiBsaSA+IGEgPiAuYmFkZ2UgewogIG1hcmdpbi1sZWZ0OiAzcHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/bootstrap.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQ29yZSB2YXJpYWJsZXMgYW5kIG1peGlucwpAaW1wb3J0ICJ2YXJpYWJsZXMubGVzcyI7CkBpbXBvcnQgIm1peGlucy5sZXNzIjsKCi8vIFJlc2V0CkBpbXBvcnQgIm5vcm1hbGl6ZS5sZXNzIjsKQGltcG9ydCAicHJpbnQubGVzcyI7CgovLyBDb3JlIENTUwpAaW1wb3J0ICJzY2FmZm9sZGluZy5sZXNzIjsKQGltcG9ydCAidHlwZS5sZXNzIjsKQGltcG9ydCAiY29kZS5sZXNzIjsKQGltcG9ydCAiZ3JpZC5sZXNzIjsKQGltcG9ydCAidGFibGVzLmxlc3MiOwpAaW1wb3J0ICJmb3Jtcy5sZXNzIjsKQGltcG9ydCAiYnV0dG9ucy5sZXNzIjsKCi8vIENvbXBvbmVudHMKQGltcG9ydCAiY29tcG9uZW50LWFuaW1hdGlvbnMubGVzcyI7CkBpbXBvcnQgImdseXBoaWNvbnMubGVzcyI7CkBpbXBvcnQgImRyb3Bkb3ducy5sZXNzIjsKQGltcG9ydCAiYnV0dG9uLWdyb3Vwcy5sZXNzIjsKQGltcG9ydCAiaW5wdXQtZ3JvdXBzLmxlc3MiOwpAaW1wb3J0ICJuYXZzLmxlc3MiOwpAaW1wb3J0ICJuYXZiYXIubGVzcyI7CkBpbXBvcnQgImJyZWFkY3J1bWJzLmxlc3MiOwpAaW1wb3J0ICJwYWdpbmF0aW9uLmxlc3MiOwpAaW1wb3J0ICJwYWdlci5sZXNzIjsKQGltcG9ydCAibGFiZWxzLmxlc3MiOwpAaW1wb3J0ICJiYWRnZXMubGVzcyI7CkBpbXBvcnQgImp1bWJvdHJvbi5sZXNzIjsKQGltcG9ydCAidGh1bWJuYWlscy5sZXNzIjsKQGltcG9ydCAiYWxlcnRzLmxlc3MiOwpAaW1wb3J0ICJwcm9ncmVzcy1iYXJzLmxlc3MiOwpAaW1wb3J0ICJtZWRpYS5sZXNzIjsKQGltcG9ydCAibGlzdC1ncm91cC5sZXNzIjsKQGltcG9ydCAicGFuZWxzLmxlc3MiOwpAaW1wb3J0ICJ3ZWxscy5sZXNzIjsKQGltcG9ydCAiY2xvc2UubGVzcyI7CgovLyBDb21wb25lbnRzIHcvIEphdmFTY3JpcHQKQGltcG9ydCAibW9kYWxzLmxlc3MiOwpAaW1wb3J0ICJ0b29sdGlwLmxlc3MiOwpAaW1wb3J0ICJwb3BvdmVycy5sZXNzIjsKQGltcG9ydCAiY2Fyb3VzZWwubGVzcyI7CgovLyBVdGlsaXR5IGNsYXNzZXMKQGltcG9ydCAidXRpbGl0aWVzLmxlc3MiOwpAaW1wb3J0ICJyZXNwb25zaXZlLXV0aWxpdGllcy5sZXNzIjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/breadcrumbs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnJlYWRjcnVtYnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgouYnJlYWRjcnVtYiB7CiAgcGFkZGluZzogOHB4IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJyZWFkY3J1bWItYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICA+IGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICsgbGk6YmVmb3JlIHsKICAgICAgY29udGVudDogIkB7YnJlYWRjcnVtYi1zZXBhcmF0b3J9XDAwYTAiOyAvLyBVbmljb2RlIHNwYWNlIGFkZGVkIHNpbmNlIGlubGluZS1ibG9jayBtZWFucyBub24tY29sbGFwc2luZyB3aGl0ZS1zcGFjZQogICAgICBwYWRkaW5nOiAwIDVweDsKICAgICAgY29sb3I6IEBicmVhZGNydW1iLWNvbG9yOwogICAgfQogIH0KICA+IC5hY3RpdmUgewogICAgY29sb3I6IEBicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/button-groups.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnV0dG9uIGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gTWFrZSB0aGUgZGl2IGJlaGF2ZSBsaWtlIGEgYnV0dG9uCi5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLy8gbWF0Y2ggLmJ0biBhbGlnbm1lbnQgZ2l2ZW4gZm9udC1zaXplIGhhY2sgYWJvdmUKICA+IC5idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZmxvYXQ6IGxlZnQ7CiAgICAvLyBCcmluZyB0aGUgImFjdGl2ZSIgYnV0dG9uIHRvIHRoZSBmcm9udAogICAgJjpob3ZlciwKICAgICY6Zm9jdXMsCiAgICAmOmFjdGl2ZSwKICAgICYuYWN0aXZlIHsKICAgICAgei1pbmRleDogMjsKICAgIH0KICAgICY6Zm9jdXMgewogICAgICAvLyBSZW1vdmUgZm9jdXMgb3V0bGluZSB3aGVuIGRyb3Bkb3duIEpTIGFkZHMgaXQgYWZ0ZXIgY2xvc2luZyB0aGUgbWVudQogICAgICBvdXRsaW5lOiBub25lOwogICAgfQogIH0KfQoKLy8gUHJldmVudCBkb3VibGUgYm9yZGVycyB3aGVuIGJ1dHRvbnMgYXJlIG5leHQgdG8gZWFjaCBvdGhlcgouYnRuLWdyb3VwIHsKICAuYnRuICsgLmJ0biwKICAuYnRuICsgLmJ0bi1ncm91cCwKICAuYnRuLWdyb3VwICsgLmJ0biwKICAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgICBtYXJnaW4tbGVmdDogLTFweDsKICB9Cn0KCi8vIE9wdGlvbmFsOiBHcm91cCBtdWx0aXBsZSBidXR0b24gZ3JvdXBzIHRvZ2V0aGVyIGZvciBhIHRvb2xiYXIKLmJ0bi10b29sYmFyIHsKICAuY2xlYXJmaXgoKTsKCiAgLmJ0bi1ncm91cCB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgLy8gU3BhY2Ugb3V0IHNlcmllcyBvZiBidXR0b24gZ3JvdXBzCiAgPiAuYnRuLAogID4gLmJ0bi1ncm91cCB7CiAgICArIC5idG4sCiAgICArIC5idG4tZ3JvdXAgewogICAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgfQogIH0KfQoKLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkgewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KCi8vIFNldCBjb3JuZXJzIGluZGl2aWR1YWwgYmVjYXVzZSBzb21ldGltZXMgYSBzaW5nbGUgYnV0dG9uIGNhbiBiZSBpbiBhIC5idG4tZ3JvdXAgYW5kIHdlIG5lZWQgOmZpcnN0LWNoaWxkIGFuZCA6bGFzdC1jaGlsZCB0byBib3RoIG1hdGNoCi5idG4tZ3JvdXAgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tbGVmdDogMDsKICAmOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHsKICAgIC5ib3JkZXItcmlnaHQtcmFkaXVzKDApOwogIH0KfQovLyBOZWVkIC5kcm9wZG93bi10b2dnbGUgc2luY2UgOmxhc3QtY2hpbGQgZG9lc24ndCBhcHBseSBnaXZlbiBhIC5kcm9wZG93bi1tZW51IGltbWVkaWF0ZWx5IGFmdGVyIGl0Ci5idG4tZ3JvdXAgPiAuYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAgPiAuZHJvcGRvd24tdG9nZ2xlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9CgovLyBDdXN0b20gZWRpdHMgZm9yIGluY2x1ZGluZyBidG4tZ3JvdXBzIHdpdGhpbiBidG4tZ3JvdXBzICh1c2VmdWwgZm9yIGluY2x1ZGluZyBkcm9wZG93biBidXR0b25zIHdpdGhpbiBhIGJ0bi1ncm91cCkKLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXAgewogIGZsb2F0OiBsZWZ0Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkIHsKICA+IC5idG46bGFzdC1jaGlsZCwKICA+IC5kcm9wZG93bi10b2dnbGUgewogICAgLmJvcmRlci1yaWdodC1yYWRpdXMoMCk7CiAgfQp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmxhc3QtY2hpbGQgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9CgovLyBPbiBhY3RpdmUgYW5kIG9wZW4sIGRvbid0IHNob3cgb3V0bGluZQouYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLAouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgb3V0bGluZTogMDsKfQoKCi8vIFNpemluZwovLwovLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi4KCi5idG4tZ3JvdXAteHMgPiAuYnRuIHsgLmJ0bi14cygpOyB9Ci5idG4tZ3JvdXAtc20gPiAuYnRuIHsgLmJ0bi1zbSgpOyB9Ci5idG4tZ3JvdXAtbGcgPiAuYnRuIHsgLmJ0bi1sZygpOyB9CgoKLy8gU3BsaXQgYnV0dG9uIGRyb3Bkb3ducwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBHaXZlIHRoZSBsaW5lIGJldHdlZW4gYnV0dG9ucyBzb21lIGRlcHRoCi5idG4tZ3JvdXAgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgcGFkZGluZy1yaWdodDogOHB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiAxMnB4OwogIHBhZGRpbmctcmlnaHQ6IDEycHg7Cn0KCi8vIFRoZSBjbGlja2FibGUgYnV0dG9uIGZvciB0b2dnbGluZyB0aGUgbWVudQovLyBSZW1vdmUgdGhlIGdyYWRpZW50IGFuZCBzZXQgdGhlIHNhbWUgaW5zZXQgc2hhZG93IGFzIHRoZSA6YWN0aXZlIHN0YXRlCi5idG4tZ3JvdXAub3BlbiAuZHJvcGRvd24tdG9nZ2xlIHsKICAuYm94LXNoYWRvdyhpbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KSk7CgogIC8vIFNob3cgbm8gc2hhZG93IGZvciBgLmJ0bi1saW5rYCBzaW5jZSBpdCBoYXMgbm8gb3RoZXIgYnV0dG9uIHN0eWxlcy4KICAmLmJ0bi1saW5rIHsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwogIH0KfQoKCi8vIFJlcG9zaXRpb24gdGhlIGNhcmV0Ci5idG4gLmNhcmV0IHsKICBtYXJnaW4tbGVmdDogMDsKfQovLyBDYXJldHMgaW4gb3RoZXIgYnV0dG9uIHNpemVzCi5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IEBjYXJldC13aWR0aC1sYXJnZSBAY2FyZXQtd2lkdGgtbGFyZ2UgMDsKICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwp9Ci8vIFVwc2lkZSBkb3duIGNhcmV0cyBmb3IgLmRyb3B1cAouZHJvcHVwIC5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IDAgQGNhcmV0LXdpZHRoLWxhcmdlIEBjYXJldC13aWR0aC1sYXJnZTsKfQoKCi8vIFZlcnRpY2FsIGJ1dHRvbiBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CiAgPiAuYnRuLAogID4gLmJ0bi1ncm91cCwKICA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IG5vbmU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CgogIC8vIENsZWFyIGZsb2F0cyBzbyBkcm9wZG93biBtZW51cyBjYW4gYmUgcHJvcGVybHkgcGxhY2VkCiAgPiAuYnRuLWdyb3VwIHsKICAgIC5jbGVhcmZpeCgpOwogICAgPiAuYnRuIHsKICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgfQoKICA+IC5idG4gKyAuYnRuLAogID4gLmJ0biArIC5idG4tZ3JvdXAsCiAgPiAuYnRuLWdyb3VwICsgLmJ0biwKICA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9Cn0KCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHsKICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9CiAgJjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogICAgLmJvcmRlci1ib3R0b20tcmFkaXVzKDApOwogIH0KICAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICAgIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKICB9Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQgewogID4gLmJ0bjpsYXN0LWNoaWxkLAogID4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICAuYm9yZGVyLWJvdHRvbS1yYWRpdXMoMCk7CiAgfQp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmxhc3QtY2hpbGQgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICAuYm9yZGVyLXRvcC1yYWRpdXMoMCk7Cn0KCgoKLy8gSnVzdGlmaWVkIGJ1dHRvbiBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmJ0bi1ncm91cC1qdXN0aWZpZWQgewogIGRpc3BsYXk6IHRhYmxlOwogIHdpZHRoOiAxMDAlOwogIHRhYmxlLWxheW91dDogZml4ZWQ7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKICA+IC5idG4sCiAgPiAuYnRuLWdyb3VwIHsKICAgIGZsb2F0OiBub25lOwogICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgIHdpZHRoOiAxJTsKICB9CiAgPiAuYnRuLWdyb3VwIC5idG4gewogICAgd2lkdGg6IDEwMCU7CiAgfQp9CgoKLy8gQ2hlY2tib3ggYW5kIHJhZGlvIG9wdGlvbnMKW2RhdGEtdG9nZ2xlPSJidXR0b25zIl0gPiAuYnRuID4gaW5wdXRbdHlwZT0icmFkaW8iXSwKW2RhdGEtdG9nZ2xlPSJidXR0b25zIl0gPiAuYnRuID4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgZGlzcGxheTogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/buttons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhc2Ugc3R5bGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gRm9yIGlucHV0LmJ0bgogIGZvbnQtd2VpZ2h0OiBAYnRuLWZvbnQtd2VpZ2h0OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyAvLyBSZXNldCB1bnVzdWFsIEZpcmVmb3gtb24tQW5kcm9pZCBkZWZhdWx0IHN0eWxlOyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9pc3N1ZXMvMjE0CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAuYnV0dG9uLXNpemUoQHBhZGRpbmctYmFzZS12ZXJ0aWNhbDsgQHBhZGRpbmctYmFzZS1ob3Jpem9udGFsOyBAZm9udC1zaXplLWJhc2U7IEBsaW5lLWhlaWdodC1iYXNlOyBAYm9yZGVyLXJhZGl1cy1iYXNlKTsKICAudXNlci1zZWxlY3Qobm9uZSk7CgogICY6Zm9jdXMgewogICAgLnRhYi1mb2N1cygpOwogIH0KCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAYnRuLWRlZmF1bHQtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgfQoKICAmOmFjdGl2ZSwKICAmLmFjdGl2ZSB7CiAgICBvdXRsaW5lOiAwOwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgIC5ib3gtc2hhZG93KGluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpKTsKICB9CgogICYuZGlzYWJsZWQsCiAgJltkaXNhYmxlZF0sCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvLyBGdXR1cmUtcHJvb2YgZGlzYWJsaW5nIG9mIGNsaWNrcwogICAgLm9wYWNpdHkoLjY1KTsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwogIH0KfQoKCi8vIEFsdGVybmF0ZSBidXR0b25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuLWRlZmF1bHQgewogIC5idXR0b24tdmFyaWFudChAYnRuLWRlZmF1bHQtY29sb3I7IEBidG4tZGVmYXVsdC1iZzsgQGJ0bi1kZWZhdWx0LWJvcmRlcik7Cn0KLmJ0bi1wcmltYXJ5IHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi1wcmltYXJ5LWNvbG9yOyBAYnRuLXByaW1hcnktYmc7IEBidG4tcHJpbWFyeS1ib3JkZXIpOwp9Ci8vIFdhcm5pbmcgYXBwZWFycyBhcyBvcmFuZ2UKLmJ0bi13YXJuaW5nIHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi13YXJuaW5nLWNvbG9yOyBAYnRuLXdhcm5pbmctYmc7IEBidG4td2FybmluZy1ib3JkZXIpOwp9Ci8vIERhbmdlciBhbmQgZXJyb3IgYXBwZWFyIGFzIHJlZAouYnRuLWRhbmdlciB7CiAgLmJ1dHRvbi12YXJpYW50KEBidG4tZGFuZ2VyLWNvbG9yOyBAYnRuLWRhbmdlci1iZzsgQGJ0bi1kYW5nZXItYm9yZGVyKTsKfQovLyBTdWNjZXNzIGFwcGVhcnMgYXMgZ3JlZW4KLmJ0bi1zdWNjZXNzIHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi1zdWNjZXNzLWNvbG9yOyBAYnRuLXN1Y2Nlc3MtYmc7IEBidG4tc3VjY2Vzcy1ib3JkZXIpOwp9Ci8vIEluZm8gYXBwZWFycyBhcyBibHVlLWdyZWVuCi5idG4taW5mbyB7CiAgLmJ1dHRvbi12YXJpYW50KEBidG4taW5mby1jb2xvcjsgQGJ0bi1pbmZvLWJnOyBAYnRuLWluZm8tYm9yZGVyKTsKfQoKCi8vIExpbmsgYnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBNYWtlIGEgYnV0dG9uIGxvb2sgYW5kIGJlaGF2ZSBsaWtlIGEgbGluawouYnRuLWxpbmsgewogIGNvbG9yOiBAbGluay1jb2xvcjsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXItcmFkaXVzOiAwOwoKICAmLAogICY6YWN0aXZlLAogICZbZGlzYWJsZWRdLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgLmJveC1zaGFkb3cobm9uZSk7CiAgfQogICYsCiAgJjpob3ZlciwKICAmOmZvY3VzLAogICY6YWN0aXZlIHsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGxpbmstaG92ZXItY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KICAmW2Rpc2FibGVkXSwKICBmaWVsZHNldFtkaXNhYmxlZF0gJiB7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAYnRuLWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIH0KICB9Cn0KCgovLyBCdXR0b24gU2l6ZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5idG4tbGcgewogIC8vIGxpbmUtaGVpZ2h0OiBlbnN1cmUgZXZlbi1udW1iZXJlZCBoZWlnaHQgb2YgYnV0dG9uIG5leHQgdG8gbGFyZ2UgaW5wdXQKICAuYnV0dG9uLXNpemUoQHBhZGRpbmctbGFyZ2UtdmVydGljYWw7IEBwYWRkaW5nLWxhcmdlLWhvcml6b250YWw7IEBmb250LXNpemUtbGFyZ2U7IEBsaW5lLWhlaWdodC1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9Ci5idG4tc20gewogIC8vIGxpbmUtaGVpZ2h0OiBlbnN1cmUgcHJvcGVyIGhlaWdodCBvZiBidXR0b24gbmV4dCB0byBzbWFsbCBpbnB1dAogIC5idXR0b24tc2l6ZShAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGxpbmUtaGVpZ2h0LXNtYWxsOyBAYm9yZGVyLXJhZGl1cy1zbWFsbCk7Cn0KLmJ0bi14cyB7CiAgLmJ1dHRvbi1zaXplKEBwYWRkaW5nLXhzLXZlcnRpY2FsOyBAcGFkZGluZy14cy1ob3Jpem9udGFsOyBAZm9udC1zaXplLXNtYWxsOyBAbGluZS1oZWlnaHQtc21hbGw7IEBib3JkZXItcmFkaXVzLXNtYWxsKTsKfQoKCi8vIEJsb2NrIGJ1dHRvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmJ0bi1ibG9jayB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIHBhZGRpbmctcmlnaHQ6IDA7Cn0KCi8vIFZlcnRpY2FsbHkgc3BhY2Ugb3V0IG11bHRpcGxlIGJsb2NrIGJ1dHRvbnMKLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewogIG1hcmdpbi10b3A6IDVweDsKfQoKLy8gU3BlY2lmaWNpdHkgb3ZlcnJpZGVzCmlucHV0W3R5cGU9InN1Ym1pdCJdLAppbnB1dFt0eXBlPSJyZXNldCJdLAppbnB1dFt0eXBlPSJidXR0b24iXSB7CiAgJi5idG4tYmxvY2sgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/carousel.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ2Fyb3VzZWwKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBXcmFwcGVyIGZvciB0aGUgc2xpZGUgY29udGFpbmVyIGFuZCBpbmRpY2F0b3JzCi5jYXJvdXNlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouY2Fyb3VzZWwtaW5uZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdpZHRoOiAxMDAlOwoKICA+IC5pdGVtIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAudHJhbnNpdGlvbiguNnMgZWFzZS1pbi1vdXQgbGVmdCk7CgogICAgLy8gQWNjb3VudCBmb3IgamFua2l0dWRlIG9uIGltYWdlcwogICAgPiBpbWcsCiAgICA+IGEgPiBpbWcgewogICAgICAuaW1nLXJlc3BvbnNpdmUoKTsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICB9CiAgfQoKICA+IC5hY3RpdmUsCiAgPiAubmV4dCwKICA+IC5wcmV2IHsgZGlzcGxheTogYmxvY2s7IH0KCiAgPiAuYWN0aXZlIHsKICAgIGxlZnQ6IDA7CiAgfQoKICA+IC5uZXh0LAogID4gLnByZXYgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgd2lkdGg6IDEwMCU7CiAgfQoKICA+IC5uZXh0IHsKICAgIGxlZnQ6IDEwMCU7CiAgfQogID4gLnByZXYgewogICAgbGVmdDogLTEwMCU7CiAgfQogID4gLm5leHQubGVmdCwKICA+IC5wcmV2LnJpZ2h0IHsKICAgIGxlZnQ6IDA7CiAgfQoKICA+IC5hY3RpdmUubGVmdCB7CiAgICBsZWZ0OiAtMTAwJTsKICB9CiAgPiAuYWN0aXZlLnJpZ2h0IHsKICAgIGxlZnQ6IDEwMCU7CiAgfQoKfQoKLy8gTGVmdC9yaWdodCBjb250cm9scyBmb3IgbmF2Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmNhcm91c2VsLWNvbnRyb2wgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICBib3R0b206IDA7CiAgd2lkdGg6IEBjYXJvdXNlbC1jb250cm9sLXdpZHRoOwogIC5vcGFjaXR5KEBjYXJvdXNlbC1jb250cm9sLW9wYWNpdHkpOwogIGZvbnQtc2l6ZTogQGNhcm91c2VsLWNvbnRyb2wtZm9udC1zaXplOwogIGNvbG9yOiBAY2Fyb3VzZWwtY29udHJvbC1jb2xvcjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1zaGFkb3c6IEBjYXJvdXNlbC10ZXh0LXNoYWRvdzsKICAvLyBXZSBjYW4ndCBoYXZlIHRoaXMgdHJhbnNpdGlvbiBoZXJlIGJlY2F1c2UgV2ViS2l0IGNhbmNlbHMgdGhlIGNhcm91c2VsCiAgLy8gYW5pbWF0aW9uIGlmIHlvdSB0cmlwIHRoaXMgd2hpbGUgaW4gdGhlIG1pZGRsZSBvZiBhbm90aGVyIGFuaW1hdGlvbi4KCiAgLy8gU2V0IGdyYWRpZW50cyBmb3IgYmFja2dyb3VuZHMKICAmLmxlZnQgewogICAgI2dyYWRpZW50ID4gLmhvcml6b250YWwoQHN0YXJ0LWNvbG9yOiByZ2JhKDAsMCwwLC41KTsgQGVuZC1jb2xvcjogcmdiYSgwLDAsMCwuMDAwMSkpOwogIH0KICAmLnJpZ2h0IHsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKICAgICNncmFkaWVudCA+IC5ob3Jpem9udGFsKEBzdGFydC1jb2xvcjogcmdiYSgwLDAsMCwuMDAwMSk7IEBlbmQtY29sb3I6IHJnYmEoMCwwLDAsLjUpKTsKICB9CgogIC8vIEhvdmVyL2ZvY3VzIHN0YXRlCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIG91dGxpbmU6IG5vbmU7CiAgICBjb2xvcjogQGNhcm91c2VsLWNvbnRyb2wtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAub3BhY2l0eSguOSk7CiAgfQoKICAvLyBUb2dnbGVzCiAgLmljb24tcHJldiwKICAuaWNvbi1uZXh0LAogIC5nbHlwaGljb24tY2hldnJvbi1sZWZ0LAogIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIHotaW5kZXg6IDU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgfQogIC5pY29uLXByZXYsCiAgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQgewogICAgbGVmdDogNTAlOwogIH0KICAuaWNvbi1uZXh0LAogIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCB7CiAgICByaWdodDogNTAlOwogIH0KICAuaWNvbi1wcmV2LAogIC5pY29uLW5leHQgewogICAgd2lkdGg6ICAyMHB4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgbWFyZ2luLXRvcDogLTEwcHg7CiAgICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgICBmb250LWZhbWlseTogc2VyaWY7CiAgfQoKICAuaWNvbi1wcmV2IHsKICAgICY6YmVmb3JlIHsKICAgICAgY29udGVudDogJ1wyMDM5JzsvLyBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAoVSsyMDM5KQogICAgfQogIH0KICAuaWNvbi1uZXh0IHsKICAgICY6YmVmb3JlIHsKICAgICAgY29udGVudDogJ1wyMDNhJzsvLyBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKFUrMjAzQSkKICAgIH0KICB9Cn0KCi8vIE9wdGlvbmFsIGluZGljYXRvciBwaXBzCi8vCi8vIEFkZCBhbiB1bm9yZGVyZWQgbGlzdCB3aXRoIHRoZSBmb2xsb3dpbmcgY2xhc3MgYW5kIGFkZCBhIGxpc3QgaXRlbSBmb3IgZWFjaAovLyBzbGlkZSB5b3VyIGNhcm91c2VsIGhvbGRzLgoKLmNhcm91c2VsLWluZGljYXRvcnMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDEwcHg7CiAgbGVmdDogNTAlOwogIHotaW5kZXg6IDE1OwogIHdpZHRoOiA2MCU7CiAgbWFyZ2luLWxlZnQ6IC0zMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwoKICBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogIDEwcHg7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBtYXJnaW46IDFweDsKICAgIHRleHQtaW5kZW50OiAtOTk5cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCBAY2Fyb3VzZWwtaW5kaWNhdG9yLWJvcmRlci1jb2xvcjsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CgogICAgLy8gSUU4LTkgaGFjayBmb3IgZXZlbnQgaGFuZGxpbmcKICAgIC8vCiAgICAvLyBJbnRlcm5ldCBFeHBsb3JlciA4LTkgZG9lcyBub3Qgc3VwcG9ydCBjbGlja3Mgb24gZWxlbWVudHMgd2l0aG91dCBhIHNldAogICAgLy8gYGJhY2tncm91bmQtY29sb3JgLiBXZSBjYW5ub3QgdXNlIGBmaWx0ZXJgIHNpbmNlIHRoYXQncyBub3Qgdmlld2VkIGFzIGEKICAgIC8vIGJhY2tncm91bmQgY29sb3IgYnkgdGhlIGJyb3dzZXIuIFRodXMsIGEgaGFjayBpcyBuZWVkZWQuCiAgICAvLwogICAgLy8gRm9yIElFOCwgd2Ugc2V0IHNvbGlkIGJsYWNrIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydCBgcmdiYSgpYC4gRm9yIElFOSwgd2UKICAgIC8vIHNldCBhbHBoYSB0cmFuc3BhcmVuY3kgZm9yIHRoZSBiZXN0IHJlc3VsdHMgcG9zc2libGUuCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwIFw5OyAvLyBJRTgKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMCk7IC8vIElFOQogIH0KICAuYWN0aXZlIHsKICAgIG1hcmdpbjogMDsKICAgIHdpZHRoOiAgMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIGJhY2tncm91bmQtY29sb3I6IEBjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOwogIH0KfQoKLy8gT3B0aW9uYWwgY2FwdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSGlkZGVuIGJ5IGRlZmF1bHQgZm9yIHNtYWxsZXIgdmlld3BvcnRzCi5jYXJvdXNlbC1jYXB0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMTUlOwogIHJpZ2h0OiAxNSU7CiAgYm90dG9tOiAyMHB4OwogIHotaW5kZXg6IDEwOwogIHBhZGRpbmctdG9wOiAyMHB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4OwogIGNvbG9yOiBAY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1zaGFkb3c6IEBjYXJvdXNlbC10ZXh0LXNoYWRvdzsKICAmIC5idG4gewogICAgdGV4dC1zaGFkb3c6IG5vbmU7IC8vIE5vIHNoYWRvdyBmb3IgYnV0dG9uIGVsZW1lbnRzIGluIGNhcm91c2VsLWNhcHRpb24KICB9Cn0KCgovLyBTY2FsZSB1cCBjb250cm9scyBmb3IgdGFibGV0cyBhbmQgdXAKQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKCiAgLy8gU2NhbGUgdXAgdGhlIGNvbnRyb2xzIGEgc21pZGdlCiAgLmNhcm91c2VsLWNvbnRyb2wgewogICAgLmdseXBoaWNvbnMtY2hldnJvbi1sZWZ0LAogICAgLmdseXBoaWNvbnMtY2hldnJvbi1yaWdodCwKICAgIC5pY29uLXByZXYsCiAgICAuaWNvbi1uZXh0IHsKICAgICAgd2lkdGg6IDMwcHg7CiAgICAgIGhlaWdodDogMzBweDsKICAgICAgbWFyZ2luLXRvcDogLTE1cHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgICAgZm9udC1zaXplOiAzMHB4OwogICAgfQogIH0KCiAgLy8gU2hvdyBhbmQgbGVmdCBhbGlnbiB0aGUgY2FwdGlvbnMKICAuY2Fyb3VzZWwtY2FwdGlvbiB7CiAgICBsZWZ0OiAyMCU7CiAgICByaWdodDogMjAlOwogICAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgfQoKICAvLyBNb3ZlIHVwIHRoZSBpbmRpY2F0b3JzCiAgLmNhcm91c2VsLWluZGljYXRvcnMgewogICAgYm90dG9tOiAyMHB4OwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/close.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ2xvc2UgaWNvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgouY2xvc2UgewogIGZsb2F0OiByaWdodDsKICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjUpOwogIGZvbnQtd2VpZ2h0OiBAY2xvc2UtZm9udC13ZWlnaHQ7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6IEBjbG9zZS1jb2xvcjsKICB0ZXh0LXNoYWRvdzogQGNsb3NlLXRleHQtc2hhZG93OwogIC5vcGFjaXR5KC4yKTsKCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAY2xvc2UtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAub3BhY2l0eSguNSk7CiAgfQoKICAvLyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGJ1dHRvbiB2ZXJzaW9uCiAgLy8gaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuCiAgLy8gSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj0iIyJgLgogIGJ1dHRvbiYgewogICAgcGFkZGluZzogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAwOwogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/code.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ29kZSAoaW5saW5lIGFuZCBibG9jaykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBJbmxpbmUgYW5kIGJsb2NrIGNvZGUgc3R5bGVzCmNvZGUsCmtiZCwKcHJlLApzYW1wIHsKICBmb250LWZhbWlseTogQGZvbnQtZmFtaWx5LW1vbm9zcGFjZTsKfQoKLy8gSW5saW5lIGNvZGUKY29kZSB7CiAgcGFkZGluZzogMnB4IDRweDsKICBmb250LXNpemU6IDkwJTsKICBjb2xvcjogQGNvZGUtY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGNvZGUtYmc7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwp9CgovLyBCbG9ja3Mgb2YgY29kZQpwcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6ICgoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC0gMSkgLyAyKTsKICBtYXJnaW46IDAgMCAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7CiAgZm9udC1zaXplOiAoQGZvbnQtc2l6ZS1iYXNlIC0gMSk7IC8vIDE0cHggdG8gMTNweAogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgd29yZC13cmFwOiBicmVhay13b3JkOwogIGNvbG9yOiBAcHJlLWNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBwcmUtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgQHByZS1ib3JkZXItY29sb3I7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgLy8gQWNjb3VudCBmb3Igc29tZSBjb2RlIG91dHB1dHMgdGhhdCBwbGFjZSBjb2RlIHRhZ3MgaW4gcHJlIHRhZ3MKICBjb2RlIHsKICAgIHBhZGRpbmc6IDA7CiAgICBmb250LXNpemU6IGluaGVyaXQ7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KCi8vIEVuYWJsZSBzY3JvbGxhYmxlIGJsb2NrcyBvZiBjb2RlCi5wcmUtc2Nyb2xsYWJsZSB7CiAgbWF4LWhlaWdodDogQHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ7CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/component-animations.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ29tcG9uZW50IGFuaW1hdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEhlYWRzIHVwIQovLwovLyBXZSBkb24ndCB1c2UgdGhlIGAub3BhY2l0eSgpYCBtaXhpbiBoZXJlIHNpbmNlIGl0IGNhdXNlcyBhIGJ1ZyB3aXRoIHRleHQKLy8gZmllbGRzIGluIElFNy04LiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2l0dGVyL2Jvb3RzdHJhcC9wdWxsLzM1NTIuCgouZmFkZSB7CiAgb3BhY2l0eTogMDsKICAudHJhbnNpdGlvbihvcGFjaXR5IC4xNXMgbGluZWFyKTsKICAmLmluIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgouY29sbGFwc2UgewogIGRpc3BsYXk6IG5vbmU7CiAgJi5pbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9Cn0KLmNvbGxhcHNpbmcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAudHJhbnNpdGlvbihoZWlnaHQgLjM1cyBlYXNlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/dropdowns.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gRHJvcGRvd24gbWVudXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBEcm9wZG93biBhcnJvdy9jYXJldAouY2FyZXQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDJweDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGJvcmRlci10b3A6ICAgQGNhcmV0LXdpZHRoLWJhc2Ugc29saWQ7CiAgYm9yZGVyLXJpZ2h0OiBAY2FyZXQtd2lkdGgtYmFzZSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItbGVmdDogIEBjYXJldC13aWR0aC1iYXNlIHNvbGlkIHRyYW5zcGFyZW50Owp9CgovLyBUaGUgZHJvcGRvd24gd3JhcHBlciAoZGl2KQouZHJvcGRvd24gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLy8gUHJldmVudCB0aGUgZm9jdXMgb24gdGhlIGRyb3Bkb3duIHRvZ2dsZSB3aGVuIGNsb3NpbmcgZHJvcGRvd25zCi5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIG91dGxpbmU6IDA7Cn0KCi8vIFRoZSBkcm9wZG93biBtZW51ICh1bCkKLmRyb3Bkb3duLW1lbnUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LWRyb3Bkb3duOwogIGRpc3BsYXk6IG5vbmU7IC8vIG5vbmUgYnkgZGVmYXVsdCwgYnV0IGJsb2NrIG9uICJvcGVuIiBvZiB0aGUgbWVudQogIGZsb2F0OiBsZWZ0OwogIG1pbi13aWR0aDogMTYwcHg7CiAgcGFkZGluZzogNXB4IDA7CiAgbWFyZ2luOiAycHggMCAwOyAvLyBvdmVycmlkZSBkZWZhdWx0IHVsCiAgbGlzdC1zdHlsZTogbm9uZTsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAZHJvcGRvd24tYmc7CiAgYm9yZGVyOiAxcHggc29saWQgQGRyb3Bkb3duLWZhbGxiYWNrLWJvcmRlcjsgLy8gSUU4IGZhbGxiYWNrCiAgYm9yZGVyOiAxcHggc29saWQgQGRyb3Bkb3duLWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogIC5ib3gtc2hhZG93KDAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KSk7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKCiAgLy8gQWxpZ25zIHRoZSBkcm9wZG93biBtZW51IHRvIHJpZ2h0CiAgJi5wdWxsLXJpZ2h0IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKICB9CgogIC8vIERpdmlkZXJzIChiYXNpY2FsbHkgYW4gaHIpIHdpdGhpbiB0aGUgZHJvcGRvd24KICAuZGl2aWRlciB7CiAgICAubmF2LWRpdmlkZXIoQGRyb3Bkb3duLWRpdmlkZXItYmcpOwogIH0KCiAgLy8gTGlua3Mgd2l0aGluIHRoZSBkcm9wZG93biBtZW51CiAgPiBsaSA+IGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiAzcHggMjBweDsKICAgIGNsZWFyOiBib3RoOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICAgIGNvbG9yOiBAZHJvcGRvd24tbGluay1jb2xvcjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8vIHByZXZlbnQgbGlua3MgZnJvbSByYW5kb21seSBicmVha2luZyBvbnRvIG5ldyBsaW5lcwogIH0KfQoKLy8gSG92ZXIvRm9jdXMgc3RhdGUKLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgewogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjb2xvcjogQGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZHJvcGRvd24tbGluay1ob3Zlci1iZzsKICB9Cn0KCi8vIEFjdGl2ZSBzdGF0ZQouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhIHsKICAmLAogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgb3V0bGluZTogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IEBkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzsKICB9Cn0KCi8vIERpc2FibGVkIHN0YXRlCi8vCi8vIEdyYXkgb3V0IHRleHQgYW5kIGVuc3VyZSB0aGUgaG92ZXIvZm9jdXMgc3RhdGUgcmVtYWlucyBncmF5CgouZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGEgewogICYsCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjsKICB9Cn0KLy8gTnVrZSBob3Zlci9mb2N1cyBlZmZlY3RzCi5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSB7CiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLy8gUmVtb3ZlIENTUyBncmFkaWVudAogICAgLnJlc2V0LWZpbHRlcigpOwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICB9Cn0KCi8vIE9wZW4gc3RhdGUgZm9yIHRoZSBkcm9wZG93bgoub3BlbiB7CiAgLy8gU2hvdyB0aGUgbWVudQogID4gLmRyb3Bkb3duLW1lbnUgewogICAgZGlzcGxheTogYmxvY2s7CiAgfQoKICAvLyBSZW1vdmUgdGhlIG91dGxpbmUgd2hlbiA6Zm9jdXMgaXMgdHJpZ2dlcmVkCiAgPiBhIHsKICAgIG91dGxpbmU6IDA7CiAgfQp9CgovLyBEcm9wZG93biBzZWN0aW9uIGhlYWRlcnMKLmRyb3Bkb3duLWhlYWRlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogM3B4IDIwcHg7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICBjb2xvcjogQGRyb3Bkb3duLWhlYWRlci1jb2xvcjsKfQoKLy8gQmFja2Ryb3AgdG8gY2F0Y2ggYm9keSBjbGlja3Mgb24gbW9iaWxlLCBldGMuCi5kcm9wZG93bi1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIHRvcDogMDsKICB6LWluZGV4OiBAemluZGV4LWRyb3Bkb3duIC0gMTA7Cn0KCi8vIFJpZ2h0IGFsaWduZWQgZHJvcGRvd25zCi5wdWxsLXJpZ2h0ID4gLmRyb3Bkb3duLW1lbnUgewogIHJpZ2h0OiAwOwogIGxlZnQ6IGF1dG87Cn0KCi8vIEFsbG93IGZvciBkcm9wZG93bnMgdG8gZ28gYm90dG9tIHVwIChha2EsIGRyb3B1cC1tZW51KQovLwovLyBKdXN0IGFkZCAuZHJvcHVwIGFmdGVyIHRoZSBzdGFuZGFyZCAuZHJvcGRvd24gY2xhc3MgYW5kIHlvdSdyZSBzZXQsIGJyby4KLy8gVE9ETzogYWJzdHJhY3QgdGhpcyBzbyB0aGF0IHRoZSBuYXZiYXIgZml4ZWQgc3R5bGVzIGFyZSBub3QgcGxhY2VkIGhlcmU/CgouZHJvcHVwLAoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gewogIC8vIFJldmVyc2UgdGhlIGNhcmV0CiAgLmNhcmV0IHsKICAgIGJvcmRlci10b3A6IDA7CiAgICBib3JkZXItYm90dG9tOiBAY2FyZXQtd2lkdGgtYmFzZSBzb2xpZDsKICAgIGNvbnRlbnQ6ICIiOwogIH0KICAvLyBEaWZmZXJlbnQgcG9zaXRpb25pbmcgZm9yIGJvdHRvbSB1cCBtZW51CiAgLmRyb3Bkb3duLW1lbnUgewogICAgdG9wOiBhdXRvOwogICAgYm90dG9tOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogMXB4OwogIH0KfQoKCi8vIENvbXBvbmVudCBhbGlnbm1lbnQKLy8KLy8gUmVpdGVyYXRlIHBlciBuYXZiYXIubGVzcyBhbmQgdGhlIG1vZGlmaWVkIGNvbXBvbmVudCBhbGlnbm1lbnQgdGhlcmUuCgpAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogIC5uYXZiYXItcmlnaHQgewogICAgLmRyb3Bkb3duLW1lbnUgewogICAgICAucHVsbC1yaWdodCA+IC5kcm9wZG93bi1tZW51KCk7CiAgICB9CiAgfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/forms.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gRm9ybXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBOb3JtYWxpemUgbm9uLWNvbnRyb2xzCi8vCi8vIFJlc3R5bGUgYW5kIGJhc2VsaW5lIG5vbi1jb250cm9sIGZvcm0gZWxlbWVudHMuCgpmaWVsZHNldCB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDA7CiAgYm9yZGVyOiAwOwp9CgpsZWdlbmQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGZvbnQtc2l6ZTogKEBmb250LXNpemUtYmFzZSAqIDEuNSk7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgY29sb3I6IEBsZWdlbmQtY29sb3I7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAbGVnZW5kLWJvcmRlci1jb2xvcjsKfQoKbGFiZWwgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCgovLyBOb3JtYWxpemUgZm9ybSBjb250cm9scwoKLy8gT3ZlcnJpZGUgY29udGVudC1ib3ggaW4gTm9ybWFsaXplICgqIGlzbid0IHNwZWNpZmljIGVub3VnaCkKaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC5ib3gtc2l6aW5nKGJvcmRlci1ib3gpOwp9CgovLyBQb3NpdGlvbiByYWRpb3MgYW5kIGNoZWNrYm94ZXMgYmV0dGVyCmlucHV0W3R5cGU9InJhZGlvIl0sCmlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIG1hcmdpbjogNHB4IDAgMDsKICBtYXJnaW4tdG9wOiAxcHggXDk7IC8qIElFOC05ICovCiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLy8gU2V0IHRoZSBoZWlnaHQgb2Ygc2VsZWN0IGFuZCBmaWxlIGNvbnRyb2xzIHRvIG1hdGNoIHRleHQgaW5wdXRzCmlucHV0W3R5cGU9ImZpbGUiXSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi8vIE1ha2UgbXVsdGlwbGUgc2VsZWN0IGVsZW1lbnRzIGhlaWdodCBub3QgZml4ZWQKc2VsZWN0W211bHRpcGxlXSwKc2VsZWN0W3NpemVdIHsKICBoZWlnaHQ6IGF1dG87Cn0KCi8vIEZpeCBvcHRncm91cCBGaXJlZm94IGJ1ZyBwZXIgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy83NjExCnNlbGVjdCBvcHRncm91cCB7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGZvbnQtc3R5bGU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Cn0KCi8vIEZvY3VzIGZvciBzZWxlY3QsIGZpbGUsIHJhZGlvLCBhbmQgY2hlY2tib3gKaW5wdXRbdHlwZT0iZmlsZSJdOmZvY3VzLAppbnB1dFt0eXBlPSJyYWRpbyJdOmZvY3VzLAppbnB1dFt0eXBlPSJjaGVja2JveCJdOmZvY3VzIHsKICAudGFiLWZvY3VzKCk7Cn0KCi8vIEZpeCBmb3IgQ2hyb21lIG51bWJlciBpbnB1dAovLyBTZXR0aW5nIGNlcnRhaW4gZm9udC1zaXplcyBjYXVzZXMgdGhlIGBJYCBiYXIgdG8gYXBwZWFyIG9uIGhvdmVyIG9mIHRoZSBib3R0b20gaW5jcmVtZW50IGJ1dHRvbi4KLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvODM1MCBmb3IgbW9yZS4KaW5wdXRbdHlwZT0ibnVtYmVyIl0gewogICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sCiAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CiAgICBoZWlnaHQ6IGF1dG87CiAgfQp9CgovLyBBZGp1c3Qgb3V0cHV0IGVsZW1lbnQKb3V0cHV0IHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLXRvcDogKEBwYWRkaW5nLWJhc2UtdmVydGljYWwgKyAxKTsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgY29sb3I6IEBpbnB1dC1jb2xvcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgoKLy8gQ29tbW9uIGZvcm0gY29udHJvbHMKLy8KLy8gU2hhcmVkIHNpemUgYW5kIHR5cGUgcmVzZXRzIGZvciBmb3JtIGNvbnRyb2xzLiBBcHBseSBgLmZvcm0tY29udHJvbGAgdG8gYW55Ci8vIG9mIHRoZSBmb2xsb3dpbmcgZm9ybSBjb250cm9sczoKLy8KLy8gc2VsZWN0Ci8vIHRleHRhcmVhCi8vIGlucHV0W3R5cGU9InRleHQiXQovLyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdCi8vIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0KLy8gaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXQovLyBpbnB1dFt0eXBlPSJkYXRlIl0KLy8gaW5wdXRbdHlwZT0ibW9udGgiXQovLyBpbnB1dFt0eXBlPSJ0aW1lIl0KLy8gaW5wdXRbdHlwZT0id2VlayJdCi8vIGlucHV0W3R5cGU9Im51bWJlciJdCi8vIGlucHV0W3R5cGU9ImVtYWlsIl0KLy8gaW5wdXRbdHlwZT0idXJsIl0KLy8gaW5wdXRbdHlwZT0ic2VhcmNoIl0KLy8gaW5wdXRbdHlwZT0idGVsIl0KLy8gaW5wdXRbdHlwZT0iY29sb3IiXQoKLmZvcm0tY29udHJvbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBAaW5wdXQtaGVpZ2h0LWJhc2U7IC8vIE1ha2UgaW5wdXRzIGF0IGxlYXN0IHRoZSBoZWlnaHQgb2YgdGhlaXIgYnV0dG9uIGNvdW50ZXJwYXJ0IChiYXNlIGxpbmUtaGVpZ2h0ICsgcGFkZGluZyArIGJvcmRlcikKICBwYWRkaW5nOiBAcGFkZGluZy1iYXNlLXZlcnRpY2FsIEBwYWRkaW5nLWJhc2UtaG9yaXpvbnRhbDsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgY29sb3I6IEBpbnB1dC1jb2xvcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGJhY2tncm91bmQtY29sb3I6IEBpbnB1dC1iZzsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyAvLyBSZXNldCB1bnVzdWFsIEZpcmVmb3gtb24tQW5kcm9pZCBkZWZhdWx0IHN0eWxlOyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9pc3N1ZXMvMjE0CiAgYm9yZGVyOiAxcHggc29saWQgQGlucHV0LWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAaW5wdXQtYm9yZGVyLXJhZGl1czsKICAuYm94LXNoYWRvdyhpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSk7CiAgLnRyYW5zaXRpb24ofiJib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cywgYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzIik7CgogIC8vIEN1c3RvbWl6ZSB0aGUgYDpmb2N1c2Agc3RhdGUgdG8gaW1pdGF0ZSBuYXRpdmUgV2ViS2l0IHN0eWxlcy4KICAuZm9ybS1jb250cm9sLWZvY3VzKCk7CgogIC8vIFBsYWNlaG9sZGVyCiAgLy8KICAvLyBQbGFjZWhvbGRlciB0ZXh0IGdldHMgc3BlY2lhbCBzdHlsZXMgYmVjYXVzZSB3aGVuIGJyb3dzZXJzIGludmFsaWRhdGUgZW50aXJlCiAgLy8gbGluZXMgaWYgaXQgZG9lc24ndCB1bmRlcnN0YW5kIGEgc2VsZWN0b3IvCiAgLnBsYWNlaG9sZGVyKCk7CgogIC8vIERpc2FibGVkIGFuZCByZWFkLW9ubHkgaW5wdXRzCiAgLy8gTm90ZTogSFRNTDUgc2F5cyB0aGF0IGNvbnRyb2xzIHVuZGVyIGEgZmllbGRzZXQgPiBsZWdlbmQ6Zmlyc3QtY2hpbGQgd29uJ3QKICAvLyBiZSBkaXNhYmxlZCBpZiB0aGUgZmllbGRzZXQgaXMgZGlzYWJsZWQuIER1ZSB0byBpbXBsZW1lbnRhdGlvbiBkaWZmaWN1bHR5LAogIC8vIHdlIGRvbid0IGhvbm9yIHRoYXQgZWRnZSBjYXNlOyB3ZSBzdHlsZSB0aGVtIGFzIGRpc2FibGVkIGFueXdheS4KICAmW2Rpc2FibGVkXSwKICAmW3JlYWRvbmx5XSwKICBmaWVsZHNldFtkaXNhYmxlZF0gJiB7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGlucHV0LWJnLWRpc2FibGVkOwogIH0KCiAgLy8gUmVzZXQgaGVpZ2h0IGZvciBgdGV4dGFyZWFgcwogIHRleHRhcmVhJiB7CiAgICBoZWlnaHQ6IGF1dG87CiAgfQp9CgoKLy8gRm9ybSBncm91cHMKLy8KLy8gRGVzaWduZWQgdG8gaGVscCB3aXRoIHRoZSBvcmdhbml6YXRpb24gYW5kIHNwYWNpbmcgb2YgdmVydGljYWwgZm9ybXMuIEZvcgovLyBob3Jpem9udGFsIGZvcm1zLCB1c2UgdGhlIHByZWRlZmluZWQgZ3JpZCBjbGFzc2VzLgoKLmZvcm0tZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KCgovLyBDaGVja2JveGVzIGFuZCByYWRpb3MKLy8KLy8gSW5kZW50IHRoZSBsYWJlbHMgdG8gcG9zaXRpb24gcmFkaW9zL2NoZWNrYm94ZXMgYXMgaGFuZ2luZyBjb250cm9scy4KCi5yYWRpbywKLmNoZWNrYm94IHsKICBkaXNwbGF5OiBibG9jazsKICBtaW4taGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7IC8vIGNsZWFyIHRoZSBmbG9hdGluZyBpbnB1dCBpZiB0aGVyZSBpcyBubyBsYWJlbCB0ZXh0CiAgbWFyZ2luLXRvcDogMTBweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIHBhZGRpbmctbGVmdDogMjBweDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGxhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KfQoucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKLnJhZGlvLWlubGluZSBpbnB1dFt0eXBlPSJyYWRpbyJdLAouY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKLmNoZWNrYm94LWlubGluZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBmbG9hdDogbGVmdDsKICBtYXJnaW4tbGVmdDogLTIwcHg7Cn0KLnJhZGlvICsgLnJhZGlvLAouY2hlY2tib3ggKyAuY2hlY2tib3ggewogIG1hcmdpbi10b3A6IC01cHg7IC8vIE1vdmUgdXAgc2libGluZyByYWRpb3Mgb3IgY2hlY2tib3hlcyBmb3IgdGlnaHRlciBzcGFjaW5nCn0KCi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBvbiBzYW1lIGxpbmUKLnJhZGlvLWlubGluZSwKLmNoZWNrYm94LWlubGluZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBtYXJnaW4tYm90dG9tOiAwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLnJhZGlvLWlubGluZSArIC5yYWRpby1pbmxpbmUsCi5jaGVja2JveC1pbmxpbmUgKyAuY2hlY2tib3gtaW5saW5lIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1sZWZ0OiAxMHB4OyAvLyBzcGFjZSBvdXQgY29uc2VjdXRpdmUgaW5saW5lIGNvbnRyb2xzCn0KCi8vIEFwcGx5IHNhbWUgZGlzYWJsZWQgY3Vyc29yIHR3ZWFrIGFzIGZvciBpbnB1dHMKLy8KLy8gTm90ZTogTmVpdGhlciByYWRpb3Mgbm9yIGNoZWNrYm94ZXMgY2FuIGJlIHJlYWRvbmx5LgppbnB1dFt0eXBlPSJyYWRpbyJdLAppbnB1dFt0eXBlPSJjaGVja2JveCJdLAoucmFkaW8sCi5yYWRpby1pbmxpbmUsCi5jaGVja2JveCwKLmNoZWNrYm94LWlubGluZSB7CiAgJltkaXNhYmxlZF0sCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICB9Cn0KCi8vIEZvcm0gY29udHJvbCBzaXppbmcKLmlucHV0LXNtIHsKICAuaW5wdXQtc2l6ZShAaW5wdXQtaGVpZ2h0LXNtYWxsOyBAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGxpbmUtaGVpZ2h0LXNtYWxsOyBAYm9yZGVyLXJhZGl1cy1zbWFsbCk7Cn0KCi5pbnB1dC1sZyB7CiAgLmlucHV0LXNpemUoQGlucHV0LWhlaWdodC1sYXJnZTsgQHBhZGRpbmctbGFyZ2UtdmVydGljYWw7IEBwYWRkaW5nLWxhcmdlLWhvcml6b250YWw7IEBmb250LXNpemUtbGFyZ2U7IEBsaW5lLWhlaWdodC1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9CgoKLy8gRm9ybSBjb250cm9sIGZlZWRiYWNrIHN0YXRlcwovLwovLyBBcHBseSBjb250ZXh0dWFsIGFuZCBzZW1hbnRpYyBzdGF0ZXMgdG8gaW5kaXZpZHVhbCBmb3JtIGNvbnRyb2xzLgoKLy8gV2FybmluZwouaGFzLXdhcm5pbmcgewogIC5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAc3RhdGUtd2FybmluZy10ZXh0OyBAc3RhdGUtd2FybmluZy10ZXh0OyBAc3RhdGUtd2FybmluZy1iZyk7Cn0KLy8gRXJyb3IKLmhhcy1lcnJvciB7CiAgLmZvcm0tY29udHJvbC12YWxpZGF0aW9uKEBzdGF0ZS1kYW5nZXItdGV4dDsgQHN0YXRlLWRhbmdlci10ZXh0OyBAc3RhdGUtZGFuZ2VyLWJnKTsKfQovLyBTdWNjZXNzCi5oYXMtc3VjY2VzcyB7CiAgLmZvcm0tY29udHJvbC12YWxpZGF0aW9uKEBzdGF0ZS1zdWNjZXNzLXRleHQ7IEBzdGF0ZS1zdWNjZXNzLXRleHQ7IEBzdGF0ZS1zdWNjZXNzLWJnKTsKfQoKCi8vIFN0YXRpYyBmb3JtIGNvbnRyb2wgdGV4dAovLwovLyBBcHBseSBjbGFzcyB0byBhIGBwYCBlbGVtZW50IHRvIG1ha2UgYW55IHN0cmluZyBvZiB0ZXh0IGFsaWduIHdpdGggbGFiZWxzIGluCi8vIGEgaG9yaXpvbnRhbCBmb3JtIGxheW91dC4KCi5mb3JtLWNvbnRyb2wtc3RhdGljIHsKICBtYXJnaW4tYm90dG9tOiAwOyAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW4gZnJvbSBgcGAKfQoKCi8vIEhlbHAgdGV4dAovLwovLyBBcHBseSB0byBhbnkgZWxlbWVudCB5b3Ugd2lzaCB0byBjcmVhdGUgbGlnaHQgdGV4dCBmb3IgcGxhY2VtZW50IGltbWVkaWF0ZWx5Ci8vIGJlbG93IGEgZm9ybSBjb250cm9sLiBVc2UgZm9yIGdlbmVyYWwgaGVscCwgZm9ybWF0dGluZywgb3IgaW5zdHJ1Y3Rpb25hbCB0ZXh0LgoKLmhlbHAtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOyAvLyBhY2NvdW50IGZvciBhbnkgZWxlbWVudCB1c2luZyBoZWxwLWJsb2NrCiAgbWFyZ2luLXRvcDogNXB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgY29sb3I6IGxpZ2h0ZW4oQHRleHQtY29sb3IsIDI1JSk7IC8vIGxpZ2h0ZW4gdGhlIHRleHQgc29tZSBmb3IgY29udHJhc3QKfQoKCgovLyBJbmxpbmUgZm9ybXMKLy8KLy8gTWFrZSBmb3JtcyBhcHBlYXIgaW5saW5lKC1ibG9jaykgYnkgYWRkaW5nIHRoZSBgLmZvcm0taW5saW5lYCBjbGFzcy4gSW5saW5lCi8vIGZvcm1zIGJlZ2luIHN0YWNrZWQgb24gZXh0cmEgc21hbGwgKG1vYmlsZSkgZGV2aWNlcyBhbmQgdGhlbiBnbyBpbmxpbmUgd2hlbgovLyB2aWV3cG9ydHMgcmVhY2ggPDc2OHB4LgovLwovLyBSZXF1aXJlcyB3cmFwcGluZyBpbnB1dHMgYW5kIGxhYmVscyB3aXRoIGAuZm9ybS1ncm91cGAgZm9yIHByb3BlciBkaXNwbGF5IG9mCi8vIGRlZmF1bHQgSFRNTCBmb3JtIGNvbnRyb2xzIGFuZCBvdXIgY3VzdG9tIGZvcm0gY29udHJvbHMgKGUuZy4sIGlucHV0IGdyb3VwcykuCi8vCi8vIEhlYWRzIHVwISBUaGlzIGlzIG1peGluLWVkIGludG8gYC5uYXZiYXItZm9ybWAgaW4gbmF2YmFycy5sZXNzLgoKLmZvcm0taW5saW5lIHsKCiAgLy8gS2ljayBpbiB0aGUgaW5saW5lCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20pIHsKICAgIC8vIElubGluZS1ibG9jayBhbGwgdGhlIHRoaW5ncyBmb3IgImlubGluZSIKICAgIC5mb3JtLWdyb3VwICB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIH0KCiAgICAvLyBJbiBuYXZiYXItZm9ybSwgYWxsb3cgZm9sa3MgdG8gKm5vdCogdXNlIGAuZm9ybS1ncm91cGAKICAgIC5mb3JtLWNvbnRyb2wgewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB9CgogICAgLy8gT3ZlcnJpZGUgYHdpZHRoOiAxMDAlO2Agd2hlbiBub3Qgd2l0aGluIGEgYC5mb3JtLWdyb3VwYAogICAgc2VsZWN0LmZvcm0tY29udHJvbCB7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgfQoKICAgIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbiBvbiByYWRpb3MvY2hlY2tib3hlcyB0aGF0IHdlcmUgdXNlZCBmb3Igc3RhY2tpbmcsIGFuZAogICAgLy8gdGhlbiB1bmRvIHRoZSBmbG9hdGluZyBvZiByYWRpb3MgYW5kIGNoZWNrYm94ZXMgdG8gbWF0Y2ggKHdoaWNoIGFsc28gYXZvaWRzCiAgICAvLyBhIGJ1ZyBpbiBXZWJLaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTk2OSkuCiAgICAucmFkaW8sCiAgICAuY2hlY2tib3ggewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIHBhZGRpbmctbGVmdDogMDsKICAgIH0KICAgIC5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdLAogICAgLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgICBmbG9hdDogbm9uZTsKICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9CiAgfQp9CgoKLy8gSG9yaXpvbnRhbCBmb3JtcwovLwovLyBIb3Jpem9udGFsIGZvcm1zIGFyZSBidWlsdCBvbiBncmlkIGNsYXNzZXMgYW5kIGFsbG93IHlvdSB0byBjcmVhdGUgZm9ybXMgd2l0aAovLyBsYWJlbHMgb24gdGhlIGxlZnQgYW5kIGlucHV0cyBvbiB0aGUgcmlnaHQuCgouZm9ybS1ob3Jpem9udGFsIHsKCiAgLy8gQ29uc2lzdGVudCB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgbGFiZWxzLCByYWRpb3MsIGFuZCBjaGVja2JveGVzCiAgLmNvbnRyb2wtbGFiZWwsCiAgLnJhZGlvLAogIC5jaGVja2JveCwKICAucmFkaW8taW5saW5lLAogIC5jaGVja2JveC1pbmxpbmUgewogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBwYWRkaW5nLXRvcDogKEBwYWRkaW5nLWJhc2UtdmVydGljYWwgKyAxKTsgLy8gRGVmYXVsdCBwYWRkaW5nIHBsdXMgYSBib3JkZXIKICB9CiAgLy8gQWNjb3VudCBmb3IgcGFkZGluZyB3ZSdyZSBhZGRpbmcgdG8gZW5zdXJlIHRoZSBhbGlnbm1lbnQgYW5kIG9mIGhlbHAgdGV4dAogIC8vIGFuZCBvdGhlciBjb250ZW50IGJlbG93IGl0ZW1zCiAgLnJhZGlvLAogIC5jaGVja2JveCB7CiAgICBtaW4taGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQgKyAoQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCArIDEpOwogIH0KCiAgLy8gTWFrZSBmb3JtIGdyb3VwcyBiZWhhdmUgbGlrZSByb3dzCiAgLmZvcm0tZ3JvdXAgewogICAgLm1ha2Utcm93KCk7CiAgfQoKICAuZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgICBwYWRkaW5nLXRvcDogKEBwYWRkaW5nLWJhc2UtdmVydGljYWwgKyAxKTsKICB9CgogIC8vIE9ubHkgcmlnaHQgYWxpZ24gZm9ybSBsYWJlbHMgaGVyZSB3aGVuIHRoZSBjb2x1bW5zIHN0b3Agc3RhY2tpbmcKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAgIC5jb250cm9sLWxhYmVsIHsKICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/glyphicons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gR2x5cGhpY29ucyBmb3IgQm9vdHN0cmFwCi8vCi8vIFNpbmNlIGljb25zIGFyZSBmb250cywgdGhleSBjYW4gYmUgcGxhY2VkIGFueXdoZXJlIHRleHQgaXMgcGxhY2VkIGFuZCBhcmUKLy8gdGh1cyBhdXRvbWF0aWNhbGx5IHNpemVkIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBjaGlsZC4gVG8gdXNlLCBjcmVhdGUgYW4KLy8gaW5saW5lIGVsZW1lbnQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2xhc3NlcywgbGlrZSBzbzoKLy8KLy8gPGEgaHJlZj0iIyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc3RhciI+PC9zcGFuPiBTdGFyPC9hPgoKLy8gSW1wb3J0IHRoZSBmb250cwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJzsKICBzcmM6IH4idXJsKCdAe2ljb24tZm9udC1wYXRofUB7aWNvbi1mb250LW5hbWV9LmVvdCcpIjsKICBzcmM6IH4idXJsKCdAe2ljb24tZm9udC1wYXRofUB7aWNvbi1mb250LW5hbWV9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJykiLAogICAgICAgfiJ1cmwoJ0B7aWNvbi1mb250LXBhdGh9QHtpY29uLWZvbnQtbmFtZX0ud29mZicpIGZvcm1hdCgnd29mZicpIiwKICAgICAgIH4idXJsKCdAe2ljb24tZm9udC1wYXRofUB7aWNvbi1mb250LW5hbWV9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSIsCiAgICAgICB+InVybCgnQHtpY29uLWZvbnQtcGF0aH1Ae2ljb24tZm9udC1uYW1lfS5zdmcjZ2x5cGhpY29ucy1oYWxmbGluZ3NyZWd1bGFyJykgZm9ybWF0KCdzdmcnKSI7Cn0KCi8vIENhdGNoYWxsIGJhc2VjbGFzcwouZ2x5cGhpY29uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAxcHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CgogICY6ZW1wdHkgewogICAgd2lkdGg6IDFlbTsKICB9Cn0KCi8vIEluZGl2aWR1YWwgaWNvbnMKLmdseXBoaWNvbi1hc3RlcmlzayAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDJhIjsgfSB9Ci5nbHlwaGljb24tcGx1cyAgICAgICAgICAgICAgICAgICB7ICY6YmVmb3JlIHsgY29udGVudDogIlwyYiI7IH0gfQouZ2x5cGhpY29uLWV1cm8gICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMjBhYyI7IH0gfQouZ2x5cGhpY29uLW1pbnVzICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMjIxMiI7IH0gfQouZ2x5cGhpY29uLWNsb3VkICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMjYwMSI7IH0gfQouZ2x5cGhpY29uLWVudmVsb3BlICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMjcwOSI7IH0gfQouZ2x5cGhpY29uLXBlbmNpbCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMjcwZiI7IH0gfQouZ2x5cGhpY29uLWdsYXNzICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAwMSI7IH0gfQouZ2x5cGhpY29uLW11c2ljICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAwMiI7IH0gfQouZ2x5cGhpY29uLXNlYXJjaCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAwMyI7IH0gfQouZ2x5cGhpY29uLWhlYXJ0ICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAwNSI7IH0gfQouZ2x5cGhpY29uLXN0YXIgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAwNiI7IH0gfQouZ2x5cGhpY29uLXN0YXItZW1wdHkgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAwNyI7IH0gfQouZ2x5cGhpY29uLXVzZXIgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAwOCI7IH0gfQouZ2x5cGhpY29uLWZpbG0gICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAwOSI7IH0gfQouZ2x5cGhpY29uLXRoLWxhcmdlICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxMCI7IH0gfQouZ2x5cGhpY29uLXRoICAgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxMSI7IH0gfQouZ2x5cGhpY29uLXRoLWxpc3QgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxMiI7IH0gfQouZ2x5cGhpY29uLW9rICAgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxMyI7IH0gfQouZ2x5cGhpY29uLXJlbW92ZSAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxNCI7IH0gfQouZ2x5cGhpY29uLXpvb20taW4gICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxNSI7IH0gfQouZ2x5cGhpY29uLXpvb20tb3V0ICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxNiI7IH0gfQouZ2x5cGhpY29uLW9mZiAgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxNyI7IH0gfQouZ2x5cGhpY29uLXNpZ25hbCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxOCI7IH0gfQouZ2x5cGhpY29uLWNvZyAgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAxOSI7IH0gfQouZ2x5cGhpY29uLXRyYXNoICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyMCI7IH0gfQouZ2x5cGhpY29uLWhvbWUgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyMSI7IH0gfQouZ2x5cGhpY29uLWZpbGUgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyMiI7IH0gfQouZ2x5cGhpY29uLXRpbWUgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyMyI7IH0gfQouZ2x5cGhpY29uLXJvYWQgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyNCI7IH0gfQouZ2x5cGhpY29uLWRvd25sb2FkLWFsdCAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyNSI7IH0gfQouZ2x5cGhpY29uLWRvd25sb2FkICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyNiI7IH0gfQouZ2x5cGhpY29uLXVwbG9hZCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyNyI7IH0gfQouZ2x5cGhpY29uLWluYm94ICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyOCI7IH0gfQouZ2x5cGhpY29uLXBsYXktY2lyY2xlICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAyOSI7IH0gfQouZ2x5cGhpY29uLXJlcGVhdCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzMCI7IH0gfQouZ2x5cGhpY29uLXJlZnJlc2ggICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzMSI7IH0gfQouZ2x5cGhpY29uLWxpc3QtYWx0ICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzMiI7IH0gfQouZ2x5cGhpY29uLWxvY2sgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzMyI7IH0gfQouZ2x5cGhpY29uLWZsYWcgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzNCI7IH0gfQouZ2x5cGhpY29uLWhlYWRwaG9uZXMgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzNSI7IH0gfQouZ2x5cGhpY29uLXZvbHVtZS1vZmYgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzNiI7IH0gfQouZ2x5cGhpY29uLXZvbHVtZS1kb3duICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzNyI7IH0gfQouZ2x5cGhpY29uLXZvbHVtZS11cCAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzOCI7IH0gfQouZ2x5cGhpY29uLXFyY29kZSAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTAzOSI7IH0gfQouZ2x5cGhpY29uLWJhcmNvZGUgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0MCI7IH0gfQouZ2x5cGhpY29uLXRhZyAgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0MSI7IH0gfQouZ2x5cGhpY29uLXRhZ3MgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0MiI7IH0gfQouZ2x5cGhpY29uLWJvb2sgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0MyI7IH0gfQouZ2x5cGhpY29uLWJvb2ttYXJrICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0NCI7IH0gfQouZ2x5cGhpY29uLXByaW50ICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0NSI7IH0gfQouZ2x5cGhpY29uLWNhbWVyYSAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0NiI7IH0gfQouZ2x5cGhpY29uLWZvbnQgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0NyI7IH0gfQouZ2x5cGhpY29uLWJvbGQgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0OCI7IH0gfQouZ2x5cGhpY29uLWl0YWxpYyAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA0OSI7IH0gfQouZ2x5cGhpY29uLXRleHQtaGVpZ2h0ICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1MCI7IH0gfQouZ2x5cGhpY29uLXRleHQtd2lkdGggICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1MSI7IH0gfQouZ2x5cGhpY29uLWFsaWduLWxlZnQgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1MiI7IH0gfQouZ2x5cGhpY29uLWFsaWduLWNlbnRlciAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1MyI7IH0gfQouZ2x5cGhpY29uLWFsaWduLXJpZ2h0ICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1NCI7IH0gfQouZ2x5cGhpY29uLWFsaWduLWp1c3RpZnkgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1NSI7IH0gfQouZ2x5cGhpY29uLWxpc3QgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1NiI7IH0gfQouZ2x5cGhpY29uLWluZGVudC1sZWZ0ICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1NyI7IH0gfQouZ2x5cGhpY29uLWluZGVudC1yaWdodCAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1OCI7IH0gfQouZ2x5cGhpY29uLWZhY2V0aW1lLXZpZGVvICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA1OSI7IH0gfQouZ2x5cGhpY29uLXBpY3R1cmUgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2MCI7IH0gfQouZ2x5cGhpY29uLW1hcC1tYXJrZXIgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2MiI7IH0gfQouZ2x5cGhpY29uLWFkanVzdCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2MyI7IH0gfQouZ2x5cGhpY29uLXRpbnQgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2NCI7IH0gfQouZ2x5cGhpY29uLWVkaXQgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2NSI7IH0gfQouZ2x5cGhpY29uLXNoYXJlICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2NiI7IH0gfQouZ2x5cGhpY29uLWNoZWNrICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2NyI7IH0gfQouZ2x5cGhpY29uLW1vdmUgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2OCI7IH0gfQouZ2x5cGhpY29uLXN0ZXAtYmFja3dhcmQgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA2OSI7IH0gfQouZ2x5cGhpY29uLWZhc3QtYmFja3dhcmQgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3MCI7IH0gfQouZ2x5cGhpY29uLWJhY2t3YXJkICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3MSI7IH0gfQouZ2x5cGhpY29uLXBsYXkgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3MiI7IH0gfQouZ2x5cGhpY29uLXBhdXNlICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3MyI7IH0gfQouZ2x5cGhpY29uLXN0b3AgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3NCI7IH0gfQouZ2x5cGhpY29uLWZvcndhcmQgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3NSI7IH0gfQouZ2x5cGhpY29uLWZhc3QtZm9yd2FyZCAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3NiI7IH0gfQouZ2x5cGhpY29uLXN0ZXAtZm9yd2FyZCAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3NyI7IH0gfQouZ2x5cGhpY29uLWVqZWN0ICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3OCI7IH0gfQouZ2x5cGhpY29uLWNoZXZyb24tbGVmdCAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA3OSI7IH0gfQouZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4MCI7IH0gfQouZ2x5cGhpY29uLXBsdXMtc2lnbiAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4MSI7IH0gfQouZ2x5cGhpY29uLW1pbnVzLXNpZ24gICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4MiI7IH0gfQouZ2x5cGhpY29uLXJlbW92ZS1zaWduICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4MyI7IH0gfQouZ2x5cGhpY29uLW9rLXNpZ24gICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4NCI7IH0gfQouZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4NSI7IH0gfQouZ2x5cGhpY29uLWluZm8tc2lnbiAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4NiI7IH0gfQouZ2x5cGhpY29uLXNjcmVlbnNob3QgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4NyI7IH0gfQouZ2x5cGhpY29uLXJlbW92ZS1jaXJjbGUgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4OCI7IH0gfQouZ2x5cGhpY29uLW9rLWNpcmNsZSAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA4OSI7IH0gfQouZ2x5cGhpY29uLWJhbi1jaXJjbGUgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA5MCI7IH0gfQouZ2x5cGhpY29uLWFycm93LWxlZnQgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA5MSI7IH0gfQouZ2x5cGhpY29uLWFycm93LXJpZ2h0ICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA5MiI7IH0gfQouZ2x5cGhpY29uLWFycm93LXVwICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA5MyI7IH0gfQouZ2x5cGhpY29uLWFycm93LWRvd24gICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA5NCI7IH0gfQouZ2x5cGhpY29uLXNoYXJlLWFsdCAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA5NSI7IH0gfQouZ2x5cGhpY29uLXJlc2l6ZS1mdWxsICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA5NiI7IH0gfQouZ2x5cGhpY29uLXJlc2l6ZS1zbWFsbCAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTA5NyI7IH0gfQouZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ24gICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwMSI7IH0gfQouZ2x5cGhpY29uLWdpZnQgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwMiI7IH0gfQouZ2x5cGhpY29uLWxlYWYgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwMyI7IH0gfQouZ2x5cGhpY29uLWZpcmUgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwNCI7IH0gfQouZ2x5cGhpY29uLWV5ZS1vcGVuICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwNSI7IH0gfQouZ2x5cGhpY29uLWV5ZS1jbG9zZSAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwNiI7IH0gfQouZ2x5cGhpY29uLXdhcm5pbmctc2lnbiAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwNyI7IH0gfQouZ2x5cGhpY29uLXBsYW5lICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwOCI7IH0gfQouZ2x5cGhpY29uLWNhbGVuZGFyICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEwOSI7IH0gfQouZ2x5cGhpY29uLXJhbmRvbSAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExMCI7IH0gfQouZ2x5cGhpY29uLWNvbW1lbnQgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExMSI7IH0gfQouZ2x5cGhpY29uLW1hZ25ldCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExMiI7IH0gfQouZ2x5cGhpY29uLWNoZXZyb24tdXAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExMyI7IH0gfQouZ2x5cGhpY29uLWNoZXZyb24tZG93biAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExNCI7IH0gfQouZ2x5cGhpY29uLXJldHdlZXQgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExNSI7IH0gfQouZ2x5cGhpY29uLXNob3BwaW5nLWNhcnQgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExNiI7IH0gfQouZ2x5cGhpY29uLWZvbGRlci1jbG9zZSAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExNyI7IH0gfQouZ2x5cGhpY29uLWZvbGRlci1vcGVuICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExOCI7IH0gfQouZ2x5cGhpY29uLXJlc2l6ZS12ZXJ0aWNhbCAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTExOSI7IH0gfQouZ2x5cGhpY29uLXJlc2l6ZS1ob3Jpem9udGFsICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyMCI7IH0gfQouZ2x5cGhpY29uLWhkZCAgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyMSI7IH0gfQouZ2x5cGhpY29uLWJ1bGxob3JuICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyMiI7IH0gfQouZ2x5cGhpY29uLWJlbGwgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyMyI7IH0gfQouZ2x5cGhpY29uLWNlcnRpZmljYXRlICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyNCI7IH0gfQouZ2x5cGhpY29uLXRodW1icy11cCAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyNSI7IH0gfQouZ2x5cGhpY29uLXRodW1icy1kb3duICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyNiI7IH0gfQouZ2x5cGhpY29uLWhhbmQtcmlnaHQgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyNyI7IH0gfQouZ2x5cGhpY29uLWhhbmQtbGVmdCAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyOCI7IH0gfQouZ2x5cGhpY29uLWhhbmQtdXAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEyOSI7IH0gfQouZ2x5cGhpY29uLWhhbmQtZG93biAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzMCI7IH0gfQouZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1yaWdodCAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzMSI7IH0gfQouZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1sZWZ0ICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzMiI7IH0gfQouZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy11cCAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzMyI7IH0gfQouZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1kb3duICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzNCI7IH0gfQouZ2x5cGhpY29uLWdsb2JlICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzNSI7IH0gfQouZ2x5cGhpY29uLXdyZW5jaCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzNiI7IH0gfQouZ2x5cGhpY29uLXRhc2tzICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzNyI7IH0gfQouZ2x5cGhpY29uLWZpbHRlciAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzOCI7IH0gfQouZ2x5cGhpY29uLWJyaWVmY2FzZSAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTEzOSI7IH0gfQouZ2x5cGhpY29uLWZ1bGxzY3JlZW4gICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0MCI7IH0gfQouZ2x5cGhpY29uLWRhc2hib2FyZCAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0MSI7IH0gfQouZ2x5cGhpY29uLXBhcGVyY2xpcCAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0MiI7IH0gfQouZ2x5cGhpY29uLWhlYXJ0LWVtcHR5ICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0MyI7IH0gfQouZ2x5cGhpY29uLWxpbmsgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0NCI7IH0gfQouZ2x5cGhpY29uLXBob25lICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0NSI7IH0gfQouZ2x5cGhpY29uLXB1c2hwaW4gICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0NiI7IH0gfQouZ2x5cGhpY29uLXVzZCAgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0OCI7IH0gfQouZ2x5cGhpY29uLWdicCAgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE0OSI7IH0gfQouZ2x5cGhpY29uLXNvcnQgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1MCI7IH0gfQouZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1MSI7IH0gfQouZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQtYWx0ICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1MiI7IH0gfQouZ2x5cGhpY29uLXNvcnQtYnktb3JkZXIgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1MyI7IH0gfQouZ2x5cGhpY29uLXNvcnQtYnktb3JkZXItYWx0ICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1NCI7IH0gfQouZ2x5cGhpY29uLXNvcnQtYnktYXR0cmlidXRlcyAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1NSI7IH0gfQouZ2x5cGhpY29uLXNvcnQtYnktYXR0cmlidXRlcy1hbHQgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1NiI7IH0gfQouZ2x5cGhpY29uLXVuY2hlY2tlZCAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1NyI7IH0gfQouZ2x5cGhpY29uLWV4cGFuZCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1OCI7IH0gfQouZ2x5cGhpY29uLWNvbGxhcHNlLWRvd24gICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE1OSI7IH0gfQouZ2x5cGhpY29uLWNvbGxhcHNlLXVwICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2MCI7IH0gfQouZ2x5cGhpY29uLWxvZy1pbiAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2MSI7IH0gfQouZ2x5cGhpY29uLWZsYXNoICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2MiI7IH0gfQouZ2x5cGhpY29uLWxvZy1vdXQgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2MyI7IH0gfQouZ2x5cGhpY29uLW5ldy13aW5kb3cgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2NCI7IH0gfQouZ2x5cGhpY29uLXJlY29yZCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2NSI7IH0gfQouZ2x5cGhpY29uLXNhdmUgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2NiI7IH0gfQouZ2x5cGhpY29uLW9wZW4gICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2NyI7IH0gfQouZ2x5cGhpY29uLXNhdmVkICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2OCI7IH0gfQouZ2x5cGhpY29uLWltcG9ydCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE2OSI7IH0gfQouZ2x5cGhpY29uLWV4cG9ydCAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3MCI7IH0gfQouZ2x5cGhpY29uLXNlbmQgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3MSI7IH0gfQouZ2x5cGhpY29uLWZsb3BweS1kaXNrICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3MiI7IH0gfQouZ2x5cGhpY29uLWZsb3BweS1zYXZlZCAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3MyI7IH0gfQouZ2x5cGhpY29uLWZsb3BweS1yZW1vdmUgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3NCI7IH0gfQouZ2x5cGhpY29uLWZsb3BweS1zYXZlICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3NSI7IH0gfQouZ2x5cGhpY29uLWZsb3BweS1vcGVuICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3NiI7IH0gfQouZ2x5cGhpY29uLWNyZWRpdC1jYXJkICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3NyI7IH0gfQouZ2x5cGhpY29uLXRyYW5zZmVyICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3OCI7IH0gfQouZ2x5cGhpY29uLWN1dGxlcnkgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE3OSI7IH0gfQouZ2x5cGhpY29uLWhlYWRlciAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4MCI7IH0gfQouZ2x5cGhpY29uLWNvbXByZXNzZWQgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4MSI7IH0gfQouZ2x5cGhpY29uLWVhcnBob25lICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4MiI7IH0gfQouZ2x5cGhpY29uLXBob25lLWFsdCAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4MyI7IH0gfQouZ2x5cGhpY29uLXRvd2VyICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4NCI7IH0gfQouZ2x5cGhpY29uLXN0YXRzICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4NSI7IH0gfQouZ2x5cGhpY29uLXNkLXZpZGVvICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4NiI7IH0gfQouZ2x5cGhpY29uLWhkLXZpZGVvICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4NyI7IH0gfQouZ2x5cGhpY29uLXN1YnRpdGxlcyAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4OCI7IH0gfQouZ2x5cGhpY29uLXNvdW5kLXN0ZXJlbyAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE4OSI7IH0gfQouZ2x5cGhpY29uLXNvdW5kLWRvbGJ5ICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5MCI7IH0gfQouZ2x5cGhpY29uLXNvdW5kLTUtMSAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5MSI7IH0gfQouZ2x5cGhpY29uLXNvdW5kLTYtMSAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5MiI7IH0gfQouZ2x5cGhpY29uLXNvdW5kLTctMSAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5MyI7IH0gfQouZ2x5cGhpY29uLWNvcHlyaWdodC1tYXJrICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5NCI7IH0gfQouZ2x5cGhpY29uLXJlZ2lzdHJhdGlvbi1tYXJrICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5NSI7IH0gfQouZ2x5cGhpY29uLWNsb3VkLWRvd25sb2FkICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5NyI7IH0gfQouZ2x5cGhpY29uLWNsb3VkLXVwbG9hZCAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5OCI7IH0gfQouZ2x5cGhpY29uLXRyZWUtY29uaWZlciAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTE5OSI7IH0gfQouZ2x5cGhpY29uLXRyZWUtZGVjaWR1b3VzICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTIwMCI7IH0gfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/grid.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gR3JpZCBzeXN0ZW0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFNldCB0aGUgY29udGFpbmVyIHdpZHRoLCBhbmQgb3ZlcnJpZGUgaXQgZm9yIGZpeGVkIG5hdmJhcnMgaW4gbWVkaWEgcXVlcmllcwouY29udGFpbmVyIHsKICAuY29udGFpbmVyLWZpeGVkKCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtKSB7CiAgICB3aWR0aDogQGNvbnRhaW5lci1zbTsKICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQpIHsKICAgIHdpZHRoOiBAY29udGFpbmVyLW1kOwogIH0KICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIHdpZHRoOiBAY29udGFpbmVyLWxnOwogIH0KfQoKLy8gbW9iaWxlIGZpcnN0IGRlZmF1bHRzCi5yb3cgewogIC5tYWtlLXJvdygpOwp9CgovLyBDb21tb24gc3R5bGVzIGZvciBzbWFsbCBhbmQgbGFyZ2UgZ3JpZCBjb2x1bW5zCi5tYWtlLWdyaWQtY29sdW1ucygpOwoKCi8vIEV4dHJhIHNtYWxsIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIGV4dHJhIHNtYWxsIGRldmljZXMgbGlrZQovLyBzbWFydHBob25lcy4KCi5tYWtlLWdyaWQtY29sdW1ucy1mbG9hdCh4cyk7Ci5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgeHMsIHdpZHRoKTsKLm1ha2UtZ3JpZChAZ3JpZC1jb2x1bW5zLCB4cywgcHVsbCk7Ci5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgeHMsIHB1c2gpOwoubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIHhzLCBvZmZzZXQpOwoKCi8vIFNtYWxsIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIHRoZSBzbWFsbCBkZXZpY2UgcmFuZ2UsIGZyb20gcGhvbmVzCi8vIHRvIHRhYmxldHMuCgpAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAubWFrZS1ncmlkLWNvbHVtbnMtZmxvYXQoc20pOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgc20sIHdpZHRoKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIHNtLCBwdWxsKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIHNtLCBwdXNoKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIHNtLCBvZmZzZXQpOwp9CgoKLy8gTWVkaXVtIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIHRoZSBkZXNrdG9wIGRldmljZSByYW5nZS4KCkBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgewogIC5tYWtlLWdyaWQtY29sdW1ucy1mbG9hdChtZCk7CiAgLm1ha2UtZ3JpZChAZ3JpZC1jb2x1bW5zLCBtZCwgd2lkdGgpOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgbWQsIHB1bGwpOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgbWQsIHB1c2gpOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgbWQsIG9mZnNldCk7Cn0KCgovLyBMYXJnZSBncmlkCi8vCi8vIENvbHVtbnMsIG9mZnNldHMsIHB1c2hlcywgYW5kIHB1bGxzIGZvciB0aGUgbGFyZ2UgZGVza3RvcCBkZXZpY2UgcmFuZ2UuCgpAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAubWFrZS1ncmlkLWNvbHVtbnMtZmxvYXQobGcpOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgbGcsIHdpZHRoKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIGxnLCBwdWxsKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIGxnLCBwdXNoKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIGxnLCBvZmZzZXQpOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/input-groups.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gSW5wdXQgZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBCYXNlIHN0eWxlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5pbnB1dC1ncm91cCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOyAvLyBGb3IgZHJvcGRvd25zCiAgZGlzcGxheTogdGFibGU7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgLy8gcHJldmVudCBpbnB1dCBncm91cHMgZnJvbSBpbmhlcml0aW5nIGJvcmRlciBzdHlsZXMgZnJvbSB0YWJsZSBjZWxscyB3aGVuIHBsYWNlZCB3aXRoaW4gYSB0YWJsZQoKICAvLyBVbmRvIHBhZGRpbmcgYW5kIGZsb2F0IG9mIGdyaWQgY2xhc3NlcwogICZbY2xhc3MqPSJjb2wtIl0gewogICAgZmxvYXQ6IG5vbmU7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogIH0KCiAgLmZvcm0tY29udHJvbCB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQp9CgovLyBTaXppbmcgb3B0aW9ucwovLwovLyBSZW1peCB0aGUgZGVmYXVsdCBmb3JtIGNvbnRyb2wgc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyCi8vIG1hbmlwdWxhdGlvbi4KCi5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4geyAuaW5wdXQtbGcoKTsgfQouaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsgLmlucHV0LXNtKCk7IH0KCgovLyBEaXNwbGF5IGFzIHRhYmxlLWNlbGwKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1idG4sCi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsOwoKICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KLy8gQWRkb24gYW5kIGFkZG9uIHdyYXBwZXIgZm9yIGJ1dHRvbnMKLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtYnRuIHsKICB3aWR0aDogMSU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvLyBNYXRjaCB0aGUgaW5wdXRzCn0KCi8vIFRleHQgaW5wdXQgZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmlucHV0LWdyb3VwLWFkZG9uIHsKICBwYWRkaW5nOiBAcGFkZGluZy1iYXNlLXZlcnRpY2FsIEBwYWRkaW5nLWJhc2UtaG9yaXpvbnRhbDsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiBAaW5wdXQtY29sb3I7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IEBpbnB1dC1ncm91cC1hZGRvbi1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CgogIC8vIFNpemluZwogICYuaW5wdXQtc20gewogICAgcGFkZGluZzogQHBhZGRpbmctc21hbGwtdmVydGljYWwgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsKICAgIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1zbWFsbDsKICAgIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLXNtYWxsOwogIH0KICAmLmlucHV0LWxnIHsKICAgIHBhZGRpbmc6IEBwYWRkaW5nLWxhcmdlLXZlcnRpY2FsIEBwYWRkaW5nLWxhcmdlLWhvcml6b250YWw7CiAgICBmb250LXNpemU6IEBmb250LXNpemUtbGFyZ2U7CiAgICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKICB9CgogIC8vIE51a2UgZGVmYXVsdCBtYXJnaW5zIGZyb20gY2hlY2tib3hlcyBhbmQgcmFkaW9zIHRvIHZlcnRpY2FsbHkgY2VudGVyIHdpdGhpbi4KICBpbnB1dFt0eXBlPSJyYWRpbyJdLAogIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgbWFyZ2luLXRvcDogMDsKICB9Cn0KCi8vIFJlc2V0IHJvdW5kZWQgY29ybmVycwouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpmaXJzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0biwKLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZCA+IC5kcm9wZG93bi10b2dnbGUsCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkgewogIC5ib3JkZXItcmlnaHQtcmFkaXVzKDApOwp9Ci5pbnB1dC1ncm91cC1hZGRvbjpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXJpZ2h0OiAwOwp9Ci5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmxhc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1hZGRvbjpsYXN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuZHJvcGRvd24tdG9nZ2xlLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSB7CiAgLmJvcmRlci1sZWZ0LXJhZGl1cygwKTsKfQouaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWxlZnQ6IDA7Cn0KCi8vIEJ1dHRvbiBpbnB1dCBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouaW5wdXQtZ3JvdXAtYnRuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKCiAgLy8gTmVnYXRpdmUgbWFyZ2luIHRvIG9ubHkgaGF2ZSBhIDFweCBib3JkZXIgYmV0d2VlbiB0aGUgdHdvCiAgJjpmaXJzdC1jaGlsZCA+IC5idG4gewogICAgbWFyZ2luLXJpZ2h0OiAtMXB4OwogIH0KICAmOmxhc3QtY2hpbGQgPiAuYnRuIHsKICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogIH0KfQouaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC8vIEphbmtpbHkgcHJldmVudCBpbnB1dCBidXR0b24gZ3JvdXBzIGZyb20gd3JhcHBpbmcKICArIC5idG4gewogICAgbWFyZ2luLWxlZnQ6IC00cHg7CiAgfQogIC8vIEJyaW5nIHRoZSAiYWN0aXZlIiBidXR0b24gdG8gdGhlIGZyb250CiAgJjpob3ZlciwKICAmOmFjdGl2ZSB7CiAgICB6LWluZGV4OiAyOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/jumbotron.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gSnVtYm90cm9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLmp1bWJvdHJvbiB7CiAgcGFkZGluZzogQGp1bWJvdHJvbi1wYWRkaW5nOwogIG1hcmdpbi1ib3R0b206IEBqdW1ib3Ryb24tcGFkZGluZzsKICBmb250LXNpemU6IEBqdW1ib3Ryb24tZm9udC1zaXplOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IChAbGluZS1oZWlnaHQtYmFzZSAqIDEuNSk7CiAgY29sb3I6IEBqdW1ib3Ryb24tY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGp1bWJvdHJvbi1iZzsKCiAgaDEsCiAgLmgxIHsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgY29sb3I6IEBqdW1ib3Ryb24taGVhZGluZy1jb2xvcjsKICB9CiAgcCB7CiAgICBsaW5lLWhlaWdodDogMS40OwogIH0KCiAgLmNvbnRhaW5lciAmIHsKICAgIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWxhcmdlOyAvLyBPbmx5IHJvdW5kIGNvcm5lcnMgYXQgaGlnaGVyIHJlc29sdXRpb25zIGlmIGNvbnRhaW5lZCBpbiBhIGNvbnRhaW5lcgogIH0KCiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQoKICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgcGFkZGluZy10b3A6ICAgIChAanVtYm90cm9uLXBhZGRpbmcgKiAxLjYpOwogICAgcGFkZGluZy1ib3R0b206IChAanVtYm90cm9uLXBhZGRpbmcgKiAxLjYpOwoKICAgIC5jb250YWluZXIgJiB7CiAgICAgIHBhZGRpbmctbGVmdDogIChAanVtYm90cm9uLXBhZGRpbmcgKiAyKTsKICAgICAgcGFkZGluZy1yaWdodDogKEBqdW1ib3Ryb24tcGFkZGluZyAqIDIpOwogICAgfQoKICAgIGgxLAogICAgLmgxIHsKICAgICAgZm9udC1zaXplOiAoQGZvbnQtc2l6ZS1iYXNlICogNC41KTsKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/labels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTGFiZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoubGFiZWwgewogIGRpc3BsYXk6IGlubGluZTsKICBwYWRkaW5nOiAuMmVtIC42ZW0gLjNlbTsKICBmb250LXNpemU6IDc1JTsKICBmb250LXdlaWdodDogYm9sZDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogQGxhYmVsLWNvbG9yOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAuMjVlbTsKCiAgLy8gQWRkIGhvdmVyIGVmZmVjdHMsIGJ1dCBvbmx5IGZvciBsaW5rcwogICZbaHJlZl0gewogICAgJjpob3ZlciwKICAgICY6Zm9jdXMgewogICAgICBjb2xvcjogQGxhYmVsLWxpbmstaG92ZXItY29sb3I7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogIH0KCiAgLy8gRW1wdHkgbGFiZWxzIGNvbGxhcHNlIGF1dG9tYXRpY2FsbHkgKG5vdCBhdmFpbGFibGUgaW4gSUU4KQogICY6ZW1wdHkgewogICAgZGlzcGxheTogbm9uZTsKICB9CgogIC8vIFF1aWNrIGZpeCBmb3IgbGFiZWxzIGluIGJ1dHRvbnMKICAuYnRuICYgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMXB4OwogIH0KfQoKLy8gQ29sb3JzCi8vIENvbnRleHR1YWwgdmFyaWF0aW9ucyAobGlua2VkIGxhYmVscyBnZXQgZGFya2VyIG9uIDpob3ZlcikKCi5sYWJlbC1kZWZhdWx0IHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtZGVmYXVsdC1iZyk7Cn0KCi5sYWJlbC1wcmltYXJ5IHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtcHJpbWFyeS1iZyk7Cn0KCi5sYWJlbC1zdWNjZXNzIHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtc3VjY2Vzcy1iZyk7Cn0KCi5sYWJlbC1pbmZvIHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtaW5mby1iZyk7Cn0KCi5sYWJlbC13YXJuaW5nIHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtd2FybmluZy1iZyk7Cn0KCi5sYWJlbC1kYW5nZXIgewogIC5sYWJlbC12YXJpYW50KEBsYWJlbC1kYW5nZXItYmcpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/list-group.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTGlzdCBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEJhc2UgY2xhc3MKLy8KLy8gRWFzaWx5IHVzYWJsZSBvbiA8dWw+LCA8b2w+LCBvciA8ZGl2Pi4KLmxpc3QtZ3JvdXAgewogIC8vIE5vIG5lZWQgdG8gc2V0IGxpc3Qtc3R5bGU6IG5vbmU7IHNpbmNlIC5saXN0LWdyb3VwLWl0ZW0gaXMgYmxvY2sgbGV2ZWwKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIHBhZGRpbmctbGVmdDogMDsgLy8gcmVzZXQgcGFkZGluZyBiZWNhdXNlIHVsIGFuZCBvbAp9CgovLyBJbmRpdmlkdWFsIGxpc3QgaXRlbXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmxpc3QtZ3JvdXAtaXRlbSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDEwcHggMTVweDsKICAvLyBQbGFjZSB0aGUgYm9yZGVyIG9uIHRoZSBsaXN0IGl0ZW1zIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdXAgZm9yIGJldHRlciBzdHlsaW5nCiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbGlzdC1ncm91cC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAbGlzdC1ncm91cC1ib3JkZXI7CgogIC8vIFJvdW5kIHRoZSBmaXJzdCBhbmQgbGFzdCBpdGVtcwogICY6Zmlyc3QtY2hpbGQgewogICAgLmJvcmRlci10b3AtcmFkaXVzKEBsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpOwogIH0KICAmOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIC5ib3JkZXItYm90dG9tLXJhZGl1cyhAbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTsKICB9CgogIC8vIEFsaWduIGJhZGdlcyB3aXRoaW4gbGlzdCBpdGVtcwogID4gLmJhZGdlIHsKICAgIGZsb2F0OiByaWdodDsKICB9CiAgPiAuYmFkZ2UgKyAuYmFkZ2UgewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgfQp9CgovLyBMaW5rZWQgbGlzdCBpdGVtcwphLmxpc3QtZ3JvdXAtaXRlbSB7CiAgY29sb3I6IEBsaXN0LWdyb3VwLWxpbmstY29sb3I7CgogIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgICBjb2xvcjogQGxpc3QtZ3JvdXAtbGluay1oZWFkaW5nLWNvbG9yOwogIH0KCiAgLy8gSG92ZXIgc3RhdGUKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGxpc3QtZ3JvdXAtaG92ZXItYmc7CiAgfQoKICAvLyBBY3RpdmUgY2xhc3Mgb24gaXRlbSBpdHNlbGYsIG5vdCBwYXJlbnQKICAmLmFjdGl2ZSwKICAmLmFjdGl2ZTpob3ZlciwKICAmLmFjdGl2ZTpmb2N1cyB7CiAgICB6LWluZGV4OiAyOyAvLyBQbGFjZSBhY3RpdmUgaXRlbXMgYWJvdmUgdGhlaXIgc2libGluZ3MgZm9yIHByb3BlciBib3JkZXIgc3R5bGluZwogICAgY29sb3I6IEBsaXN0LWdyb3VwLWFjdGl2ZS1jb2xvcjsKICAgIGJhY2tncm91bmQtY29sb3I6IEBsaXN0LWdyb3VwLWFjdGl2ZS1iZzsKICAgIGJvcmRlci1jb2xvcjogQGxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlcjsKCiAgICAvLyBGb3JjZSBjb2xvciB0byBpbmhlcml0IGZvciBjdXN0b20gY29udGVudAogICAgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICB9CiAgICAubGlzdC1ncm91cC1pdGVtLXRleHQgewogICAgICBjb2xvcjogbGlnaHRlbihAbGlzdC1ncm91cC1hY3RpdmUtYmcsIDQwJSk7CiAgICB9CiAgfQp9CgovLyBDdXN0b20gY29udGVudCBvcHRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLmxpc3QtZ3JvdXAtaXRlbS10ZXh0IHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGxpbmUtaGVpZ2h0OiAxLjM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTWVkaWEgb2JqZWN0cwovLyBTb3VyY2U6IGh0dHA6Ly9zdHViYm9ybmVsbGEub3JnL2NvbnRlbnQvP3A9NDk3Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQ29tbW9uIHN0eWxlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBDbGVhciB0aGUgZmxvYXRzCi5tZWRpYSwKLm1lZGlhLWJvZHkgewogIG92ZXJmbG93OiBoaWRkZW47CiAgem9vbTogMTsKfQoKLy8gUHJvcGVyIHNwYWNpbmcgYmV0d2VlbiBpbnN0YW5jZXMgb2YgLm1lZGlhCi5tZWRpYSwKLm1lZGlhIC5tZWRpYSB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQoubWVkaWE6Zmlyc3QtY2hpbGQgewogIG1hcmdpbi10b3A6IDA7Cn0KCi8vIEZvciBpbWFnZXMgYW5kIHZpZGVvcywgc2V0IHRvIGJsb2NrCi5tZWRpYS1vYmplY3QgewogIGRpc3BsYXk6IGJsb2NrOwp9CgovLyBSZXNldCBtYXJnaW5zIG9uIGhlYWRpbmdzIGZvciB0aWdodGVyIGRlZmF1bHQgc3BhY2luZwoubWVkaWEtaGVhZGluZyB7CiAgbWFyZ2luOiAwIDAgNXB4Owp9CgoKLy8gTWVkaWEgaW1hZ2UgYWxpZ25tZW50Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5tZWRpYSB7CiAgPiAucHVsbC1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICB9CiAgPiAucHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICB9Cn0KCgovLyBNZWRpYSBsaXN0IHZhcmlhdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBVbmRvIGRlZmF1bHQgdWwvb2wgc3R5bGVzCi5tZWRpYS1saXN0IHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/mixins.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTWl4aW5zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gVXRpbGl0aWVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENsZWFyZml4Ci8vIFNvdXJjZTogaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svCi8vCi8vIEZvciBtb2Rlcm4gYnJvd3NlcnMKLy8gMS4gVGhlIHNwYWNlIGNvbnRlbnQgaXMgb25lIHdheSB0byBhdm9pZCBhbiBPcGVyYSBidWcgd2hlbiB0aGUKLy8gICAgY29udGVudGVkaXRhYmxlIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudC4KLy8gICAgT3RoZXJ3aXNlIGl0IGNhdXNlcyBzcGFjZSB0byBhcHBlYXIgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVsZW1lbnRzCi8vICAgIHRoYXQgYXJlIGNsZWFyZml4ZWQuCi8vIDIuIFRoZSB1c2Ugb2YgYHRhYmxlYCByYXRoZXIgdGhhbiBgYmxvY2tgIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHVzaW5nCi8vICAgIGA6YmVmb3JlYCB0byBjb250YWluIHRoZSB0b3AtbWFyZ2lucyBvZiBjaGlsZCBlbGVtZW50cy4KLmNsZWFyZml4KCkgewogICY6YmVmb3JlLAogICY6YWZ0ZXIgewogICAgY29udGVudDogIiAiOyAvLyAxCiAgICBkaXNwbGF5OiB0YWJsZTsgLy8gMgogIH0KICAmOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwogIH0KfQoKLy8gV2ViS2l0LXN0eWxlIGZvY3VzCi50YWItZm9jdXMoKSB7CiAgLy8gRGVmYXVsdAogIG91dGxpbmU6IHRoaW4gZG90dGVkOwogIC8vIFdlYktpdAogIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsKICBvdXRsaW5lLW9mZnNldDogLTJweDsKfQoKLy8gQ2VudGVyLWFsaWduIGEgYmxvY2sgbGV2ZWwgZWxlbWVudAouY2VudGVyLWJsb2NrKCkgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLy8gU2l6aW5nIHNob3J0Y3V0cwouc2l6ZShAd2lkdGg7IEBoZWlnaHQpIHsKICB3aWR0aDogQHdpZHRoOwogIGhlaWdodDogQGhlaWdodDsKfQouc3F1YXJlKEBzaXplKSB7CiAgLnNpemUoQHNpemU7IEBzaXplKTsKfQoKLy8gUGxhY2Vob2xkZXIgdGV4dAoucGxhY2Vob2xkZXIoQGNvbG9yOiBAaW5wdXQtY29sb3ItcGxhY2Vob2xkZXIpIHsKICAmOi1tb3otcGxhY2Vob2xkZXIgICAgICAgICAgICB7IGNvbG9yOiBAY29sb3I7IH0gLy8gRmlyZWZveCA0LTE4CiAgJjo6LW1vei1wbGFjZWhvbGRlciAgICAgICAgICAgeyBjb2xvcjogQGNvbG9yOyAgIC8vIEZpcmVmb3ggMTkrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOyB9IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMTUyNgogICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyICAgICAgIHsgY29sb3I6IEBjb2xvcjsgfSAvLyBJbnRlcm5ldCBFeHBsb3JlciAxMCsKICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyICB7IGNvbG9yOiBAY29sb3I7IH0gLy8gU2FmYXJpIGFuZCBDaHJvbWUKfQoKLy8gVGV4dCBvdmVyZmxvdwovLyBSZXF1aXJlcyBpbmxpbmUtYmxvY2sgb3IgYmxvY2sgZm9yIHByb3BlciBzdHlsaW5nCi50ZXh0LW92ZXJmbG93KCkgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLy8gQ1NTIGltYWdlIHJlcGxhY2VtZW50Ci8vCi8vIEhlYWRzIHVwISB2MyBsYXVuY2hlZCB3aXRoIHdpdGggb25seSBgLmhpZGUtdGV4dCgpYCwgYnV0IHBlciBvdXIgcGF0dGVybiBmb3IKLy8gbWl4aW5zIGJlaW5nIHJldXNlZCBhcyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSwgdGhpcyBkb2Vzbid0IGhvbGQgdXAuIEFzCi8vIG9mIHYzLjAuMSB3ZSBoYXZlIGFkZGVkIGAudGV4dC1oaWRlKClgIGFuZCBkZXByZWNhdGVkIGAuaGlkZS10ZXh0KClgLiBOb3RlCi8vIHRoYXQgd2UgY2Fubm90IGNoYWluIHRoZSBtaXhpbnMgdG9nZXRoZXIgaW4gTGVzcywgc28gdGhleSBhcmUgcmVwZWF0ZWQuCi8vCi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvY29tbWl0L2FhMDM5NmVhZTc1NwoKLy8gRGVwcmVjYXRlZCBhcyBvZiB2My4wLjEgKHdpbGwgYmUgcmVtb3ZlZCBpbiB2NCkKLmhpZGUtdGV4dCgpIHsKICBmb250OiB+IjAvMCIgYTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9Ci8vIE5ldyBtaXhpbiB0byB1c2UgYXMgb2YgdjMuMC4xCi50ZXh0LWhpZGUoKSB7CiAgLmhpZGUtdGV4dCgpOwp9CgoKCi8vIENTUzMgUFJPUEVSVElFUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gU2luZ2xlIHNpZGUgYm9yZGVyLXJhZGl1cwouYm9yZGVyLXRvcC1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBAcmFkaXVzOwogICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBAcmFkaXVzOwp9Ci5ib3JkZXItcmlnaHQtcmFkaXVzKEByYWRpdXMpIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogQHJhZGl1czsKICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogQHJhZGl1czsKfQouYm9yZGVyLWJvdHRvbS1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiBAcmFkaXVzOwogICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBAcmFkaXVzOwp9Ci5ib3JkZXItbGVmdC1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IEByYWRpdXM7CiAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogQHJhZGl1czsKfQoKLy8gRHJvcCBzaGFkb3dzCi5ib3gtc2hhZG93KEBzaGFkb3cpIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IEBzaGFkb3c7IC8vIGlPUyA8NC4zICYgQW5kcm9pZCA8NC4xCiAgICAgICAgICBib3gtc2hhZG93OiBAc2hhZG93Owp9CgovLyBUcmFuc2l0aW9ucwoudHJhbnNpdGlvbihAdHJhbnNpdGlvbikgewogIC13ZWJraXQtdHJhbnNpdGlvbjogQHRyYW5zaXRpb247CiAgICAgICAgICB0cmFuc2l0aW9uOiBAdHJhbnNpdGlvbjsKfQoudHJhbnNpdGlvbi1wcm9wZXJ0eShAdHJhbnNpdGlvbi1wcm9wZXJ0eSkgewogIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogQHRyYW5zaXRpb24tcHJvcGVydHk7CiAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBAdHJhbnNpdGlvbi1wcm9wZXJ0eTsKfQoudHJhbnNpdGlvbi1kZWxheShAdHJhbnNpdGlvbi1kZWxheSkgewogIC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheTogQHRyYW5zaXRpb24tZGVsYXk7CiAgICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiBAdHJhbnNpdGlvbi1kZWxheTsKfQoudHJhbnNpdGlvbi1kdXJhdGlvbihAdHJhbnNpdGlvbi1kdXJhdGlvbikgewogIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogQHRyYW5zaXRpb24tZHVyYXRpb247CiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiBAdHJhbnNpdGlvbi1kdXJhdGlvbjsKfQoudHJhbnNpdGlvbi10cmFuc2Zvcm0oQHRyYW5zaXRpb24pIHsKICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIEB0cmFuc2l0aW9uOwogICAgIC1tb3otdHJhbnNpdGlvbjogLW1vei10cmFuc2Zvcm0gQHRyYW5zaXRpb247CiAgICAgICAtby10cmFuc2l0aW9uOiAtby10cmFuc2Zvcm0gQHRyYW5zaXRpb247CiAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gQHRyYW5zaXRpb247Cn0KCi8vIFRyYW5zZm9ybWF0aW9ucwoucm90YXRlKEBkZWdyZWVzKSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZShAZGVncmVlcyk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZShAZGVncmVlcyk7IC8vIElFOSsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKEBkZWdyZWVzKTsKfQouc2NhbGUoQHJhdGlvKSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKEByYXRpbyk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKEByYXRpbyk7IC8vIElFOSsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoQHJhdGlvKTsKfQoudHJhbnNsYXRlKEB4OyBAeSkgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoQHgsIEB5KTsKICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKEB4LCBAeSk7IC8vIElFOSsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKEB4LCBAeSk7Cn0KLnNrZXcoQHg7IEB5KSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoQHgsIEB5KTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2tld1goQHgpIHNrZXdZKEB5KTsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvNDg4NTsgSUU5KwogICAgICAgICAgdHJhbnNmb3JtOiBza2V3KEB4LCBAeSk7Cn0KLnRyYW5zbGF0ZTNkKEB4OyBAeTsgQHopIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoQHgsIEB5LCBAeik7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKEB4LCBAeSwgQHopOwp9Cgoucm90YXRlWChAZGVncmVlcykgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKEBkZWdyZWVzKTsKICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWChAZGVncmVlcyk7IC8vIElFOSsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWChAZGVncmVlcyk7Cn0KLnJvdGF0ZVkoQGRlZ3JlZXMpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWShAZGVncmVlcyk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVkoQGRlZ3JlZXMpOyAvLyBJRTkrCiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoQGRlZ3JlZXMpOwp9Ci5wZXJzcGVjdGl2ZShAcGVyc3BlY3RpdmUpIHsKICAtd2Via2l0LXBlcnNwZWN0aXZlOiBAcGVyc3BlY3RpdmU7CiAgICAgLW1vei1wZXJzcGVjdGl2ZTogQHBlcnNwZWN0aXZlOwogICAgICAgICAgcGVyc3BlY3RpdmU6IEBwZXJzcGVjdGl2ZTsKfQoucGVyc3BlY3RpdmUtb3JpZ2luKEBwZXJzcGVjdGl2ZSkgewogIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luOiBAcGVyc3BlY3RpdmU7CiAgICAgLW1vei1wZXJzcGVjdGl2ZS1vcmlnaW46IEBwZXJzcGVjdGl2ZTsKICAgICAgICAgIHBlcnNwZWN0aXZlLW9yaWdpbjogQHBlcnNwZWN0aXZlOwp9Ci50cmFuc2Zvcm0tb3JpZ2luKEBvcmlnaW4pIHsKICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IEBvcmlnaW47CiAgICAgLW1vei10cmFuc2Zvcm0tb3JpZ2luOiBAb3JpZ2luOwogICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogQG9yaWdpbjsKfQoKLy8gQW5pbWF0aW9ucwouYW5pbWF0aW9uKEBhbmltYXRpb24pIHsKICAtd2Via2l0LWFuaW1hdGlvbjogQGFuaW1hdGlvbjsKICAgICAgICAgIGFuaW1hdGlvbjogQGFuaW1hdGlvbjsKfQoKLy8gQmFja2ZhY2UgdmlzaWJpbGl0eQovLyBQcmV2ZW50IGJyb3dzZXJzIGZyb20gZmxpY2tlcmluZyB3aGVuIHVzaW5nIENTUyAzRCB0cmFuc2Zvcm1zLgovLyBEZWZhdWx0IHZhbHVlIGlzIGB2aXNpYmxlYCwgYnV0IGNhbiBiZSBjaGFuZ2VkIHRvIGBoaWRkZW5gCi5iYWNrZmFjZS12aXNpYmlsaXR5KEB2aXNpYmlsaXR5KXsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IEB2aXNpYmlsaXR5OwogICAgIC1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTogQHZpc2liaWxpdHk7CiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBAdmlzaWJpbGl0eTsKfQoKLy8gQm94IHNpemluZwouYm94LXNpemluZyhAYm94bW9kZWwpIHsKICAtd2Via2l0LWJveC1zaXppbmc6IEBib3htb2RlbDsKICAgICAtbW96LWJveC1zaXppbmc6IEBib3htb2RlbDsKICAgICAgICAgIGJveC1zaXppbmc6IEBib3htb2RlbDsKfQoKLy8gVXNlciBzZWxlY3QKLy8gRm9yIHNlbGVjdGluZyB0ZXh0IG9uIHRoZSBwYWdlCi51c2VyLXNlbGVjdChAc2VsZWN0KSB7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogQHNlbGVjdDsKICAgICAtbW96LXVzZXItc2VsZWN0OiBAc2VsZWN0OwogICAgICAtbXMtdXNlci1zZWxlY3Q6IEBzZWxlY3Q7IC8vIElFMTArCiAgICAgICAtby11c2VyLXNlbGVjdDogQHNlbGVjdDsKICAgICAgICAgIHVzZXItc2VsZWN0OiBAc2VsZWN0Owp9CgovLyBSZXNpemUgYW55dGhpbmcKLnJlc2l6YWJsZShAZGlyZWN0aW9uKSB7CiAgcmVzaXplOiBAZGlyZWN0aW9uOyAvLyBPcHRpb25zOiBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgYm90aAogIG92ZXJmbG93OiBhdXRvOyAvLyBTYWZhcmkgZml4Cn0KCi8vIENTUzMgQ29udGVudCBDb2x1bW5zCi5jb250ZW50LWNvbHVtbnMoQGNvbHVtbi1jb3VudDsgQGNvbHVtbi1nYXA6IEBncmlkLWd1dHRlci13aWR0aCkgewogIC13ZWJraXQtY29sdW1uLWNvdW50OiBAY29sdW1uLWNvdW50OwogICAgIC1tb3otY29sdW1uLWNvdW50OiBAY29sdW1uLWNvdW50OwogICAgICAgICAgY29sdW1uLWNvdW50OiBAY29sdW1uLWNvdW50OwogIC13ZWJraXQtY29sdW1uLWdhcDogQGNvbHVtbi1nYXA7CiAgICAgLW1vei1jb2x1bW4tZ2FwOiBAY29sdW1uLWdhcDsKICAgICAgICAgIGNvbHVtbi1nYXA6IEBjb2x1bW4tZ2FwOwp9CgovLyBPcHRpb25hbCBoeXBoZW5hdGlvbgouaHlwaGVucyhAbW9kZTogYXV0bykgewogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAtd2Via2l0LWh5cGhlbnM6IEBtb2RlOwogICAgIC1tb3otaHlwaGVuczogQG1vZGU7CiAgICAgIC1tcy1oeXBoZW5zOiBAbW9kZTsgLy8gSUUxMCsKICAgICAgIC1vLWh5cGhlbnM6IEBtb2RlOwogICAgICAgICAgaHlwaGVuczogQG1vZGU7Cn0KCi8vIE9wYWNpdHkKLm9wYWNpdHkoQG9wYWNpdHkpIHsKICBvcGFjaXR5OiBAb3BhY2l0eTsKICAvLyBJRTggZmlsdGVyCiAgQG9wYWNpdHktaWU6IChAb3BhY2l0eSAqIDEwMCk7CiAgZmlsdGVyOiB+ImFscGhhKG9wYWNpdHk9QHtvcGFjaXR5LWllfSkiOwp9CgoKCi8vIEdSQURJRU5UUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKI2dyYWRpZW50IHsKCiAgLy8gSG9yaXpvbnRhbCBncmFkaWVudCwgZnJvbSBsZWZ0IHRvIHJpZ2h0CiAgLy8KICAvLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLgogIC8vIENvbG9yIHN0b3BzIGFyZSBub3QgYXZhaWxhYmxlIGluIElFOSBhbmQgYmVsb3cuCiAgLmhvcml6b250YWwoQHN0YXJ0LWNvbG9yOiAjNTU1OyBAZW5kLWNvbG9yOiAjMzMzOyBAc3RhcnQtcGVyY2VudDogMCU7IEBlbmQtcGVyY2VudDogMTAwJSkgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgY29sb3Itc3RvcChAc3RhcnQtY29sb3IgQHN0YXJ0LXBlcmNlbnQpLCBjb2xvci1zdG9wKEBlbmQtY29sb3IgQGVuZC1wZXJjZW50KSk7IC8vIFNhZmFyaSA1LjEtNiwgQ2hyb21lIDEwKwogICAgYmFja2dyb3VuZC1pbWFnZTogIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgQHN0YXJ0LWNvbG9yIEBzdGFydC1wZXJjZW50LCBAZW5kLWNvbG9yIEBlbmQtcGVyY2VudCk7IC8vIFN0YW5kYXJkLCBJRTEwLCBGaXJlZm94IDE2KywgT3BlcmEgMTIuMTArLCBTYWZhcmkgNyssIENocm9tZSAyNisKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJWQnLCBlbmRDb2xvcnN0cj0nJWQnLCBHcmFkaWVudFR5cGU9MSkiLGFyZ2IoQHN0YXJ0LWNvbG9yKSxhcmdiKEBlbmQtY29sb3IpKSk7IC8vIElFOSBhbmQgZG93bgogIH0KCiAgLy8gVmVydGljYWwgZ3JhZGllbnQsIGZyb20gdG9wIHRvIGJvdHRvbQogIC8vCiAgLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC4KICAvLyBDb2xvciBzdG9wcyBhcmUgbm90IGF2YWlsYWJsZSBpbiBJRTkgYW5kIGJlbG93LgogIC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6ICM1NTU7IEBlbmQtY29sb3I6ICMzMzM7IEBzdGFydC1wZXJjZW50OiAwJTsgQGVuZC1wZXJjZW50OiAxMDAlKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIEBzdGFydC1jb2xvciBAc3RhcnQtcGVyY2VudCwgQGVuZC1jb2xvciBAZW5kLXBlcmNlbnQpOyAgLy8gU2FmYXJpIDUuMS02LCBDaHJvbWUgMTArCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBAc3RhcnQtY29sb3IgQHN0YXJ0LXBlcmNlbnQsIEBlbmQtY29sb3IgQGVuZC1wZXJjZW50KTsgLy8gU3RhbmRhcmQsIElFMTAsIEZpcmVmb3ggMTYrLCBPcGVyYSAxMi4xMCssIFNhZmFyaSA3KywgQ2hyb21lIDI2KwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgZmlsdGVyOiBlKCUoInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSclZCcsIGVuZENvbG9yc3RyPSclZCcsIEdyYWRpZW50VHlwZT0wKSIsYXJnYihAc3RhcnQtY29sb3IpLGFyZ2IoQGVuZC1jb2xvcikpKTsgLy8gSUU5IGFuZCBkb3duCiAgfQoKICAuZGlyZWN0aW9uYWwoQHN0YXJ0LWNvbG9yOiAjNTU1OyBAZW5kLWNvbG9yOiAjMzMzOyBAZGVnOiA0NWRlZykgewogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoQGRlZywgQHN0YXJ0LWNvbG9yLCBAZW5kLWNvbG9yKTsgLy8gU2FmYXJpIDUuMS02LCBDaHJvbWUgMTArCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoQGRlZywgQHN0YXJ0LWNvbG9yLCBAZW5kLWNvbG9yKTsgLy8gU3RhbmRhcmQsIElFMTAsIEZpcmVmb3ggMTYrLCBPcGVyYSAxMi4xMCssIFNhZmFyaSA3KywgQ2hyb21lIDI2KwogIH0KICAuaG9yaXpvbnRhbC10aHJlZS1jb2xvcnMoQHN0YXJ0LWNvbG9yOiAjMDBiM2VlOyBAbWlkLWNvbG9yOiAjN2E0M2I2OyBAY29sb3Itc3RvcDogNTAlOyBAZW5kLWNvbG9yOiAjYzMzMjVmKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCBAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCBAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJWQnLCBlbmRDb2xvcnN0cj0nJWQnLCBHcmFkaWVudFR5cGU9MSkiLGFyZ2IoQHN0YXJ0LWNvbG9yKSxhcmdiKEBlbmQtY29sb3IpKSk7IC8vIElFOSBhbmQgZG93biwgZ2V0cyBubyBjb2xvci1zdG9wIGF0IGFsbCBmb3IgcHJvcGVyIGZhbGxiYWNrCiAgfQogIC52ZXJ0aWNhbC10aHJlZS1jb2xvcnMoQHN0YXJ0LWNvbG9yOiAjMDBiM2VlOyBAbWlkLWNvbG9yOiAjN2E0M2I2OyBAY29sb3Itc3RvcDogNTAlOyBAZW5kLWNvbG9yOiAjYzMzMjVmKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KEBzdGFydC1jb2xvciwgQG1pZC1jb2xvciBAY29sb3Itc3RvcCwgQGVuZC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgZmlsdGVyOiBlKCUoInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSclZCcsIGVuZENvbG9yc3RyPSclZCcsIEdyYWRpZW50VHlwZT0wKSIsYXJnYihAc3RhcnQtY29sb3IpLGFyZ2IoQGVuZC1jb2xvcikpKTsgLy8gSUU5IGFuZCBkb3duLCBnZXRzIG5vIGNvbG9yLXN0b3AgYXQgYWxsIGZvciBwcm9wZXIgZmFsbGJhY2sKICB9CiAgLnJhZGlhbChAaW5uZXItY29sb3I6ICM1NTU7IEBvdXRlci1jb2xvcjogIzMzMykgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCBAaW5uZXItY29sb3IsIEBvdXRlci1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCBAaW5uZXItY29sb3IsIEBvdXRlci1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIH0KICAuc3RyaXBlZChAY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgQGFuZ2xlOiA0NWRlZykgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoQGFuZ2xlLCBAY29sb3IgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgQGNvbG9yIDUwJSwgQGNvbG9yIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoQGFuZ2xlLCBAY29sb3IgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgQGNvbG9yIDUwJSwgQGNvbG9yIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgfQp9CgovLyBSZXNldCBmaWx0ZXJzIGZvciBJRQovLwovLyBXaGVuIHlvdSBuZWVkIHRvIHJlbW92ZSBhIGdyYWRpZW50IGJhY2tncm91bmQsIGRvIG5vdCBmb3JnZXQgdG8gdXNlIHRoaXMgdG8gcmVzZXQKLy8gdGhlIElFIGZpbHRlciBmb3IgSUU5IGFuZCBiZWxvdy4KLnJlc2V0LWZpbHRlcigpIHsKICBmaWx0ZXI6IGUoJSgicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSkiKSk7Cn0KCgoKLy8gUmV0aW5hIGltYWdlcwovLwovLyBTaG9ydCByZXRpbmEgbWl4aW4gZm9yIHNldHRpbmcgYmFja2dyb3VuZC1pbWFnZSBhbmQgLXNpemUKCi5pbWctcmV0aW5hKEBmaWxlLTF4OyBAZmlsZS0yeDsgQHdpZHRoLTF4OyBAaGVpZ2h0LTF4KSB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJAe2ZpbGUtMXh9Iik7CgogIEBtZWRpYQogIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwKICBvbmx5IHNjcmVlbiBhbmQgKCAgIG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksCiAgb25seSBzY3JlZW4gYW5kICggICAgIC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIvMSksCiAgb25seSBzY3JlZW4gYW5kICggICAgICAgIG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLAogIG9ubHkgc2NyZWVuIGFuZCAoICAgICAgICAgICAgICAgIG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLAogIG9ubHkgc2NyZWVuIGFuZCAoICAgICAgICAgICAgICAgIG1pbi1yZXNvbHV0aW9uOiAyZHBweCkgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJAe2ZpbGUtMnh9Iik7CiAgICBiYWNrZ3JvdW5kLXNpemU6IEB3aWR0aC0xeCBAaGVpZ2h0LTF4OwogIH0KfQoKCi8vIFJlc3BvbnNpdmUgaW1hZ2UKLy8KLy8gS2VlcCBpbWFnZXMgZnJvbSBzY2FsaW5nIGJleW9uZCB0aGUgd2lkdGggb2YgdGhlaXIgcGFyZW50cy4KCi5pbWctcmVzcG9uc2l2ZShAZGlzcGxheTogYmxvY2s7KSB7CiAgZGlzcGxheTogQGRpc3BsYXk7CiAgbWF4LXdpZHRoOiAxMDAlOyAvLyBQYXJ0IDE6IFNldCBhIG1heGltdW0gcmVsYXRpdmUgdG8gdGhlIHBhcmVudAogIGhlaWdodDogYXV0bzsgLy8gUGFydCAyOiBTY2FsZSB0aGUgaGVpZ2h0IGFjY29yZGluZyB0byB0aGUgd2lkdGgsIG90aGVyd2lzZSB5b3UgZ2V0IHN0cmV0Y2hpbmcKfQoKCi8vIENPTVBPTkVOVCBNSVhJTlMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEhvcml6b250YWwgZGl2aWRlcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBEaXZpZGVycyAoYmFzaWNhbGx5IGFuIGhyKSB3aXRoaW4gZHJvcGRvd25zIGFuZCBuYXYgbGlzdHMKLm5hdi1kaXZpZGVyKEBjb2xvcjogI2U1ZTVlNSkgewogIGhlaWdodDogMXB4OwogIG1hcmdpbjogKChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLyAyKSAtIDEpIDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAY29sb3I7Cn0KCi8vIFBhbmVscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5wYW5lbC12YXJpYW50KEBib3JkZXI7IEBoZWFkaW5nLXRleHQtY29sb3I7IEBoZWFkaW5nLWJnLWNvbG9yOyBAaGVhZGluZy1ib3JkZXIpIHsKICBib3JkZXItY29sb3I6IEBib3JkZXI7CgogICYgPiAucGFuZWwtaGVhZGluZyB7CiAgICBjb2xvcjogQGhlYWRpbmctdGV4dC1jb2xvcjsKICAgIGJhY2tncm91bmQtY29sb3I6IEBoZWFkaW5nLWJnLWNvbG9yOwogICAgYm9yZGVyLWNvbG9yOiBAaGVhZGluZy1ib3JkZXI7CgogICAgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogICAgICBib3JkZXItdG9wLWNvbG9yOiBAYm9yZGVyOwogICAgfQogIH0KICAmID4gLnBhbmVsLWZvb3RlciB7CiAgICArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBib3JkZXI7CiAgICB9CiAgfQp9CgovLyBBbGVydHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouYWxlcnQtdmFyaWFudChAYmFja2dyb3VuZDsgQGJvcmRlcjsgQHRleHQtY29sb3IpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmFja2dyb3VuZDsKICBib3JkZXItY29sb3I6IEBib3JkZXI7CiAgY29sb3I6IEB0ZXh0LWNvbG9yOwoKICBociB7CiAgICBib3JkZXItdG9wLWNvbG9yOiBkYXJrZW4oQGJvcmRlciwgNSUpOwogIH0KICAuYWxlcnQtbGluayB7CiAgICBjb2xvcjogZGFya2VuKEB0ZXh0LWNvbG9yLCAxMCUpOwogIH0KfQoKLy8gVGFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnRhYmxlLXJvdy12YXJpYW50KEBzdGF0ZTsgQGJhY2tncm91bmQpIHsKICAvLyBFeGFjdCBzZWxlY3RvcnMgYmVsb3cgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgYC50YWJsZS1zdHJpcGVkYCBhbmQgcHJldmVudAogIC8vIGluaGVyaXRhbmNlIHRvIG5lc3RlZCB0YWJsZXMuCiAgLnRhYmxlIHsKICAgID4gdGhlYWQsCiAgICA+IHRib2R5LAogICAgPiB0Zm9vdCB7CiAgICAgID4gdHIgPiAuQHtzdGF0ZX0sCiAgICAgID4gLkB7c3RhdGV9ID4gdGQsCiAgICAgID4gLkB7c3RhdGV9ID4gdGggewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBIb3ZlciBzdGF0ZXMgZm9yIGAudGFibGUtaG92ZXJgCiAgLy8gTm90ZTogdGhpcyBpcyBub3QgYXZhaWxhYmxlIGZvciBjZWxscyBvciByb3dzIHdpdGhpbiBgdGhlYWRgIG9yIGB0Zm9vdGAuCiAgLnRhYmxlLWhvdmVyID4gdGJvZHkgewogICAgPiB0ciA+IC5Ae3N0YXRlfTpob3ZlciwKICAgID4gLkB7c3RhdGV9OmhvdmVyID4gdGQsCiAgICA+IC5Ae3N0YXRlfTpob3ZlciA+IHRoIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKEBiYWNrZ3JvdW5kLCA1JSk7CiAgICB9CiAgfQp9CgovLyBCdXR0b24gdmFyaWFudHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBFYXNpbHkgcHVtcCBvdXQgZGVmYXVsdCBzdHlsZXMsIGFzIHdlbGwgYXMgOmhvdmVyLCA6Zm9jdXMsIDphY3RpdmUsCi8vIGFuZCBkaXNhYmxlZCBvcHRpb25zIGZvciBhbGwgYnV0dG9ucwouYnV0dG9uLXZhcmlhbnQoQGNvbG9yOyBAYmFja2dyb3VuZDsgQGJvcmRlcikgewogIGNvbG9yOiBAY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJhY2tncm91bmQ7CiAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyOwoKICAmOmhvdmVyLAogICY6Zm9jdXMsCiAgJjphY3RpdmUsCiAgJi5hY3RpdmUsCiAgLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSYgewogICAgY29sb3I6IEBjb2xvcjsKICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihAYmFja2dyb3VuZCwgOCUpOwogICAgICAgIGJvcmRlci1jb2xvcjogZGFya2VuKEBib3JkZXIsIDEyJSk7CiAgfQogICY6YWN0aXZlLAogICYuYWN0aXZlLAogIC5vcGVuIC5kcm9wZG93bi10b2dnbGUmIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgfQogICYuZGlzYWJsZWQsCiAgJltkaXNhYmxlZF0sCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgJiwKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzLAogICAgJjphY3RpdmUsCiAgICAmLmFjdGl2ZSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kOwogICAgICAgICAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyOwogICAgfQogIH0KCiAgLmJhZGdlIHsKICAgIGNvbG9yOiBAYmFja2dyb3VuZDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgfQp9CgovLyBCdXR0b24gc2l6ZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouYnV0dG9uLXNpemUoQHBhZGRpbmctdmVydGljYWw7IEBwYWRkaW5nLWhvcml6b250YWw7IEBmb250LXNpemU7IEBsaW5lLWhlaWdodDsgQGJvcmRlci1yYWRpdXMpIHsKICBwYWRkaW5nOiBAcGFkZGluZy12ZXJ0aWNhbCBAcGFkZGluZy1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0OwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzOwp9CgovLyBQYWdpbmF0aW9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy12ZXJ0aWNhbDsgQHBhZGRpbmctaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZTsgQGJvcmRlci1yYWRpdXMpIHsKICA+IGxpIHsKICAgID4gYSwKICAgID4gc3BhbiB7CiAgICAgIHBhZGRpbmc6IEBwYWRkaW5nLXZlcnRpY2FsIEBwYWRkaW5nLWhvcml6b250YWw7CiAgICAgIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZTsKICAgIH0KICAgICY6Zmlyc3QtY2hpbGQgewogICAgICA+IGEsCiAgICAgID4gc3BhbiB7CiAgICAgICAgLmJvcmRlci1sZWZ0LXJhZGl1cyhAYm9yZGVyLXJhZGl1cyk7CiAgICAgIH0KICAgIH0KICAgICY6bGFzdC1jaGlsZCB7CiAgICAgID4gYSwKICAgICAgPiBzcGFuIHsKICAgICAgICAuYm9yZGVyLXJpZ2h0LXJhZGl1cyhAYm9yZGVyLXJhZGl1cyk7CiAgICAgIH0KICAgIH0KICB9Cn0KCi8vIExhYmVscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5sYWJlbC12YXJpYW50KEBjb2xvcikgewogIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKICAmW2hyZWZdIHsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKEBjb2xvciwgMTAlKTsKICAgIH0KICB9Cn0KCi8vIE5hdmJhciB2ZXJ0aWNhbCBhbGlnbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFZlcnRpY2FsbHkgY2VudGVyIGVsZW1lbnRzIGluIHRoZSBuYXZiYXIuCi8vIEV4YW1wbGU6IGFuIGVsZW1lbnQgaGFzIGEgaGVpZ2h0IG9mIDMwcHgsIHNvIHdyaXRlIG91dCBgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbigzMHB4KTtgIHRvIGNhbGN1bGF0ZSB0aGUgYXBwcm9wcmlhdGUgdG9wIG1hcmdpbi4KLm5hdmJhci12ZXJ0aWNhbC1hbGlnbihAZWxlbWVudC1oZWlnaHQpIHsKICBtYXJnaW4tdG9wOiAoKEBuYXZiYXItaGVpZ2h0IC0gQGVsZW1lbnQtaGVpZ2h0KSAvIDIpOwogIG1hcmdpbi1ib3R0b206ICgoQG5hdmJhci1oZWlnaHQgLSBAZWxlbWVudC1oZWlnaHQpIC8gMik7Cn0KCi8vIFByb2dyZXNzIGJhcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoucHJvZ3Jlc3MtYmFyLXZhcmlhbnQoQGNvbG9yKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogQGNvbG9yOwogIC5wcm9ncmVzcy1zdHJpcGVkICYgewogICAgI2dyYWRpZW50ID4gLnN0cmlwZWQoKTsKICB9Cn0KCi8vIFJlc3BvbnNpdmUgdXRpbGl0aWVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTW9yZSBlYXNpbHkgaW5jbHVkZSBhbGwgdGhlIHN0YXRlcyBmb3IgcmVzcG9uc2l2ZS11dGlsaXRpZXMubGVzcy4KLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpIHsKICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIHRhYmxlJiAgeyBkaXNwbGF5OiB0YWJsZTsgfQogIHRyJiAgICAgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfQogIHRoJiwKICB0ZCYgICAgIHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9Cn0KCi5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpIHsKICAgICYsCiAgdHImLAogIHRoJiwKICB0ZCYgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KfQoKCi8vIEdyaWQgU3lzdGVtCi8vIC0tLS0tLS0tLS0tCgovLyBDZW50ZXJlZCBjb250YWluZXIgZWxlbWVudAouY29udGFpbmVyLWZpeGVkKCkgewogIG1hcmdpbi1yaWdodDogYXV0bzsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBwYWRkaW5nLWxlZnQ6ICAoQGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBncmlkLWd1dHRlci13aWR0aCAvIDIpOwogIC5jbGVhcmZpeCgpOwp9CgovLyBDcmVhdGVzIGEgd3JhcHBlciBmb3IgYSBzZXJpZXMgb2YgY29sdW1ucwoubWFrZS1yb3coQGd1dHRlcjogQGdyaWQtZ3V0dGVyLXdpZHRoKSB7CiAgbWFyZ2luLWxlZnQ6ICAoQGd1dHRlciAvIC0yKTsKICBtYXJnaW4tcmlnaHQ6IChAZ3V0dGVyIC8gLTIpOwogIC5jbGVhcmZpeCgpOwp9CgovLyBHZW5lcmF0ZSB0aGUgZXh0cmEgc21hbGwgY29sdW1ucwoubWFrZS14cy1jb2x1bW4oQGNvbHVtbnM7IEBndXR0ZXI6IEBncmlkLWd1dHRlci13aWR0aCkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbG9hdDogbGVmdDsKICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gY29sbGFwc2luZyB3aGVuIGVtcHR5CiAgbWluLWhlaWdodDogMXB4OwogIC8vIElubmVyIGd1dHRlciB2aWEgcGFkZGluZwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKfQoKLy8gR2VuZXJhdGUgdGhlIHNtYWxsIGNvbHVtbnMKLm1ha2Utc20tY29sdW1uKEBjb2x1bW5zOyBAZ3V0dGVyOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gY29sbGFwc2luZyB3aGVuIGVtcHR5CiAgbWluLWhlaWdodDogMXB4OwogIC8vIElubmVyIGd1dHRlciB2aWEgcGFkZGluZwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKCiAgLy8gQ2FsY3VsYXRlIHdpZHRoIGJhc2VkIG9uIG51bWJlciBvZiBjb2x1bW5zIGF2YWlsYWJsZQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9CgovLyBHZW5lcmF0ZSB0aGUgc21hbGwgY29sdW1uIG9mZnNldHMKLm1ha2Utc20tY29sdW1uLW9mZnNldChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS1zbS1jb2x1bW4tcHVzaChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLXNtLWNvbHVtbi1wdWxsKEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICByaWdodDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9CgovLyBHZW5lcmF0ZSB0aGUgbWVkaXVtIGNvbHVtbnMKLm1ha2UtbWQtY29sdW1uKEBjb2x1bW5zOyBAZ3V0dGVyOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gY29sbGFwc2luZyB3aGVuIGVtcHR5CiAgbWluLWhlaWdodDogMXB4OwogIC8vIElubmVyIGd1dHRlciB2aWEgcGFkZGluZwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKCiAgLy8gQ2FsY3VsYXRlIHdpZHRoIGJhc2VkIG9uIG51bWJlciBvZiBjb2x1bW5zIGF2YWlsYWJsZQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9CgovLyBHZW5lcmF0ZSB0aGUgbWVkaXVtIGNvbHVtbiBvZmZzZXRzCi5tYWtlLW1kLWNvbHVtbi1vZmZzZXQoQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIHsKICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2UtbWQtY29sdW1uLXB1c2goQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZCkgewogICAgbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLW1kLWNvbHVtbi1wdWxsKEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSB7CiAgICByaWdodDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9CgovLyBHZW5lcmF0ZSB0aGUgbGFyZ2UgY29sdW1ucwoubWFrZS1sZy1jb2x1bW4oQGNvbHVtbnM7IEBndXR0ZXI6IEBncmlkLWd1dHRlci13aWR0aCkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBjb2xsYXBzaW5nIHdoZW4gZW1wdHkKICBtaW4taGVpZ2h0OiAxcHg7CiAgLy8gSW5uZXIgZ3V0dGVyIHZpYSBwYWRkaW5nCiAgcGFkZGluZy1sZWZ0OiAgKEBndXR0ZXIgLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiAoQGd1dHRlciAvIDIpOwoKICAvLyBDYWxjdWxhdGUgd2lkdGggYmFzZWQgb24gbnVtYmVyIG9mIGNvbHVtbnMgYXZhaWxhYmxlCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KCi8vIEdlbmVyYXRlIHRoZSBsYXJnZSBjb2x1bW4gb2Zmc2V0cwoubWFrZS1sZy1jb2x1bW4tb2Zmc2V0KEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLWxnLWNvbHVtbi1wdXNoKEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICBsZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2UtbGctY29sdW1uLXB1bGwoQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIHJpZ2h0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KCgovLyBGcmFtZXdvcmsgZ3JpZCBnZW5lcmF0aW9uCi8vCi8vIFVzZWQgb25seSBieSBCb290c3RyYXAgdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGdyaWQgY2xhc3NlcyBnaXZlbgovLyBhbnkgdmFsdWUgb2YgYEBncmlkLWNvbHVtbnNgLgoKLm1ha2UtZ3JpZC1jb2x1bW5zKCkgewogIC8vIENvbW1vbiBzdHlsZXMgZm9yIGFsbCBzaXplcyBvZiBncmlkIGNvbHVtbnMsIHdpZHRocyAxLTEyCiAgLmNvbChAaW5kZXgpIHdoZW4gKEBpbmRleCA9IDEpIHsgLy8gaW5pdGlhbAogICAgQGl0ZW06IH4iLmNvbC14cy1Ae2luZGV4fSwgLmNvbC1zbS1Ae2luZGV4fSwgLmNvbC1tZC1Ae2luZGV4fSwgLmNvbC1sZy1Ae2luZGV4fSI7CiAgICAuY29sKEBpbmRleCArIDEsIEBpdGVtKTsKICB9CiAgLmNvbChAaW5kZXgsIEBsaXN0KSB3aGVuIChAaW5kZXggPTwgQGdyaWQtY29sdW1ucykgeyAvLyBnZW5lcmFsOyAiPTwiIGlzbid0IGEgdHlwbwogICAgQGl0ZW06IH4iLmNvbC14cy1Ae2luZGV4fSwgLmNvbC1zbS1Ae2luZGV4fSwgLmNvbC1tZC1Ae2luZGV4fSwgLmNvbC1sZy1Ae2luZGV4fSI7CiAgICAuY29sKEBpbmRleCArIDEsIH4iQHtsaXN0fSwgQHtpdGVtfSIpOwogIH0KICAuY29sKEBpbmRleCwgQGxpc3QpIHdoZW4gKEBpbmRleCA+IEBncmlkLWNvbHVtbnMpIHsgLy8gdGVybWluYWwKICAgIEB7bGlzdH0gewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIC8vIFByZXZlbnQgY29sdW1ucyBmcm9tIGNvbGxhcHNpbmcgd2hlbiBlbXB0eQogICAgICBtaW4taGVpZ2h0OiAxcHg7CiAgICAgIC8vIElubmVyIGd1dHRlciB2aWEgcGFkZGluZwogICAgICBwYWRkaW5nLWxlZnQ6ICAoQGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7CiAgICAgIHBhZGRpbmctcmlnaHQ6IChAZ3JpZC1ndXR0ZXItd2lkdGggLyAyKTsKICAgIH0KICB9CiAgLmNvbCgxKTsgLy8ga2lja3N0YXJ0IGl0Cn0KCi5tYWtlLWdyaWQtY29sdW1ucy1mbG9hdChAY2xhc3MpIHsKICAuY29sKEBpbmRleCkgd2hlbiAoQGluZGV4ID0gMSkgeyAvLyBpbml0aWFsCiAgICBAaXRlbTogfiIuY29sLUB7Y2xhc3N9LUB7aW5kZXh9IjsKICAgIC5jb2woQGluZGV4ICsgMSwgQGl0ZW0pOwogIH0KICAuY29sKEBpbmRleCwgQGxpc3QpIHdoZW4gKEBpbmRleCA9PCBAZ3JpZC1jb2x1bW5zKSB7IC8vIGdlbmVyYWwKICAgIEBpdGVtOiB+Ii5jb2wtQHtjbGFzc30tQHtpbmRleH0iOwogICAgLmNvbChAaW5kZXggKyAxLCB+IkB7bGlzdH0sIEB7aXRlbX0iKTsKICB9CiAgLmNvbChAaW5kZXgsIEBsaXN0KSB3aGVuIChAaW5kZXggPiBAZ3JpZC1jb2x1bW5zKSB7IC8vIHRlcm1pbmFsCiAgICBAe2xpc3R9IHsKICAgICAgZmxvYXQ6IGxlZnQ7CiAgICB9CiAgfQogIC5jb2woMSk7IC8vIGtpY2tzdGFydCBpdAp9CgouY2FsYy1ncmlkKEBpbmRleCwgQGNsYXNzLCBAdHlwZSkgd2hlbiAoQHR5cGUgPSB3aWR0aCkgYW5kIChAaW5kZXggPiAwKSB7CiAgLmNvbC1Ae2NsYXNzfS1Ae2luZGV4fSB7CiAgICB3aWR0aDogcGVyY2VudGFnZSgoQGluZGV4IC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQouY2FsYy1ncmlkKEBpbmRleCwgQGNsYXNzLCBAdHlwZSkgd2hlbiAoQHR5cGUgPSBwdXNoKSB7CiAgLmNvbC1Ae2NsYXNzfS1wdXNoLUB7aW5kZXh9IHsKICAgIGxlZnQ6IHBlcmNlbnRhZ2UoKEBpbmRleCAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLmNhbGMtZ3JpZChAaW5kZXgsIEBjbGFzcywgQHR5cGUpIHdoZW4gKEB0eXBlID0gcHVsbCkgewogIC5jb2wtQHtjbGFzc30tcHVsbC1Ae2luZGV4fSB7CiAgICByaWdodDogcGVyY2VudGFnZSgoQGluZGV4IC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQouY2FsYy1ncmlkKEBpbmRleCwgQGNsYXNzLCBAdHlwZSkgd2hlbiAoQHR5cGUgPSBvZmZzZXQpIHsKICAuY29sLUB7Y2xhc3N9LW9mZnNldC1Ae2luZGV4fSB7CiAgICBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoQGluZGV4IC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoKLy8gQmFzaWMgbG9vcGluZyBpbiBMRVNTCi5tYWtlLWdyaWQoQGluZGV4LCBAY2xhc3MsIEB0eXBlKSB3aGVuIChAaW5kZXggPj0gMCkgewogIC5jYWxjLWdyaWQoQGluZGV4LCBAY2xhc3MsIEB0eXBlKTsKICAvLyBuZXh0IGl0ZXJhdGlvbgogIC5tYWtlLWdyaWQoQGluZGV4IC0gMSwgQGNsYXNzLCBAdHlwZSk7Cn0KCgovLyBGb3JtIHZhbGlkYXRpb24gc3RhdGVzCi8vCi8vIFVzZWQgaW4gZm9ybXMubGVzcyB0byBnZW5lcmF0ZSB0aGUgZm9ybSB2YWxpZGF0aW9uIENTUyBmb3Igd2FybmluZ3MsIGVycm9ycywKLy8gYW5kIHN1Y2Nlc3Nlcy4KCi5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAdGV4dC1jb2xvcjogIzU1NTsgQGJvcmRlci1jb2xvcjogI2NjYzsgQGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjUpIHsKICAvLyBDb2xvciB0aGUgbGFiZWwgYW5kIGhlbHAgdGV4dAogIC5oZWxwLWJsb2NrLAogIC5jb250cm9sLWxhYmVsLAogIC5yYWRpbywKICAuY2hlY2tib3gsCiAgLnJhZGlvLWlubGluZSwKICAuY2hlY2tib3gtaW5saW5lICB7CiAgICBjb2xvcjogQHRleHQtY29sb3I7CiAgfQogIC8vIFNldCB0aGUgYm9yZGVyIGFuZCBib3ggc2hhZG93IG9uIHNwZWNpZmljIGlucHV0cyB0byBtYXRjaAogIC5mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyLWNvbG9yOwogICAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSkpOyAvLyBSZWRlY2xhcmUgc28gdHJhbnNpdGlvbnMgd29yawogICAgJjpmb2N1cyB7CiAgICAgIGJvcmRlci1jb2xvcjogZGFya2VuKEBib3JkZXItY29sb3IsIDEwJSk7CiAgICAgIEBzaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgNnB4IGxpZ2h0ZW4oQGJvcmRlci1jb2xvciwgMjAlKTsKICAgICAgLmJveC1zaGFkb3coQHNoYWRvdyk7CiAgICB9CiAgfQogIC8vIFNldCB2YWxpZGF0aW9uIHN0YXRlcyBhbHNvIGZvciBhZGRvbnMKICAuaW5wdXQtZ3JvdXAtYWRkb24gewogICAgY29sb3I6IEB0ZXh0LWNvbG9yOwogICAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyLWNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGJhY2tncm91bmQtY29sb3I7CiAgfQp9CgovLyBGb3JtIGNvbnRyb2wgZm9jdXMgc3RhdGUKLy8KLy8gR2VuZXJhdGUgYSBjdXN0b21pemVkIGZvY3VzIHN0YXRlIGFuZCBmb3IgYW55IGlucHV0IHdpdGggdGhlIHNwZWNpZmllZCBjb2xvciwKLy8gd2hpY2ggZGVmYXVsdHMgdG8gdGhlIGBAaW5wdXQtZm9jdXMtYm9yZGVyYCB2YXJpYWJsZS4KLy8KLy8gV2UgaGlnaGx5IGVuY291cmFnZSB5b3UgdG8gbm90IGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCB2YWx1ZSwgYnV0IGluc3RlYWQgdXNlCi8vIHRoaXMgdG8gdHdlYWsgY29sb3JzIG9uIGFuIGFzLW5lZWRlZCBiYXNpcy4gVGhpcyBhZXN0aGV0aWMgY2hhbmdlIGlzIGJhc2VkIG9uCi8vIFdlYktpdCdzIGRlZmF1bHQgc3R5bGVzLCBidXQgYXBwbGljYWJsZSB0byBhIHdpZGVyIHJhbmdlIG9mIGJyb3dzZXJzLiBJdHMKLy8gdXNhYmlsaXR5IGFuZCBhY2Nlc3NpYmlsaXR5IHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2l0aCBhbnkgY2hhbmdlLgovLwovLyBFeGFtcGxlIHVzYWdlOiBjaGFuZ2UgdGhlIGRlZmF1bHQgYmx1ZSBib3JkZXIgYW5kIHNoYWRvdyB0byB3aGl0ZSBmb3IgYmV0dGVyCi8vIGNvbnRyYXN0IGFnYWluc3QgYSBkYXJrIGdyYXkgYmFja2dyb3VuZC4KCi5mb3JtLWNvbnRyb2wtZm9jdXMoQGNvbG9yOiBAaW5wdXQtYm9yZGVyLWZvY3VzKSB7CiAgQGNvbG9yLXJnYmE6IHJnYmEocmVkKEBjb2xvciksIGdyZWVuKEBjb2xvciksIGJsdWUoQGNvbG9yKSwgLjYpOwogICY6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiBAY29sb3I7CiAgICBvdXRsaW5lOiAwOwogICAgLmJveC1zaGFkb3cofiJpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwgMCAwIDhweCBAe2NvbG9yLXJnYmF9Iik7CiAgfQp9CgovLyBGb3JtIGNvbnRyb2wgc2l6aW5nCi8vCi8vIFJlbGF0aXZlIHRleHQgc2l6ZSwgcGFkZGluZywgYW5kIGJvcmRlci1yYWRpaSBjaGFuZ2VzIGZvciBmb3JtIGNvbnRyb2xzLiBGb3IKLy8gaG9yaXpvbnRhbCBzaXppbmcsIHdyYXAgY29udHJvbHMgaW4gdGhlIHByZWRlZmluZWQgZ3JpZCBjbGFzc2VzLiBgPHNlbGVjdD5gCi8vIGVsZW1lbnQgZ2V0cyBzcGVjaWFsIGxvdmUgYmVjYXVzZSBpdCdzIHNwZWNpYWwsIGFuZCB0aGF0J3MgYSBmYWN0IQoKLmlucHV0LXNpemUoQGlucHV0LWhlaWdodDsgQHBhZGRpbmctdmVydGljYWw7IEBwYWRkaW5nLWhvcml6b250YWw7IEBmb250LXNpemU7IEBsaW5lLWhlaWdodDsgQGJvcmRlci1yYWRpdXMpIHsKICBoZWlnaHQ6IEBpbnB1dC1oZWlnaHQ7CiAgcGFkZGluZzogQHBhZGRpbmctdmVydGljYWwgQHBhZGRpbmctaG9yaXpvbnRhbDsKICBmb250LXNpemU6IEBmb250LXNpemU7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1czsKCiAgc2VsZWN0JiB7CiAgICBoZWlnaHQ6IEBpbnB1dC1oZWlnaHQ7CiAgICBsaW5lLWhlaWdodDogQGlucHV0LWhlaWdodDsKICB9CgogIHRleHRhcmVhJiB7CiAgICBoZWlnaHQ6IGF1dG87CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/modals.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTW9kYWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyAubW9kYWwtb3BlbiAgICAgIC0gYm9keSBjbGFzcyBmb3Iga2lsbGluZyB0aGUgc2Nyb2xsCi8vIC5tb2RhbCAgICAgICAgICAgLSBjb250YWluZXIgdG8gc2Nyb2xsIHdpdGhpbgovLyAubW9kYWwtZGlhbG9nICAgIC0gcG9zaXRpb25pbmcgc2hlbGwgZm9yIHRoZSBhY3R1YWwgbW9kYWwKLy8gLm1vZGFsLWNvbnRlbnQgICAtIGFjdHVhbCBtb2RhbCB3LyBiZyBhbmQgY29ybmVycyBhbmQgc2hpdAoKLy8gS2lsbCB0aGUgc2Nyb2xsIG9uIHRoZSBib2R5Ci5tb2RhbC1vcGVuIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgovLyBDb250YWluZXIgdGhhdCB0aGUgbW9kYWwgc2Nyb2xscyB3aXRoaW4KLm1vZGFsIHsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBhdXRvOwogIG92ZXJmbG93LXk6IHNjcm9sbDsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IEB6aW5kZXgtbW9kYWwtYmFja2dyb3VuZDsKCiAgLy8gV2hlbiBmYWRpbmcgaW4gdGhlIG1vZGFsLCBhbmltYXRlIGl0IHRvIHNsaWRlIGRvd24KICAmLmZhZGUgLm1vZGFsLWRpYWxvZyB7CiAgICAudHJhbnNsYXRlKDAsIC0yNSUpOwogICAgLnRyYW5zaXRpb24tdHJhbnNmb3JtKH4iMC4zcyBlYXNlLW91dCIpOwogIH0KICAmLmluIC5tb2RhbC1kaWFsb2cgeyAudHJhbnNsYXRlKDAsIDApfQp9CgovLyBTaGVsbCBkaXYgdG8gcG9zaXRpb24gdGhlIG1vZGFsIHdpdGggYm90dG9tIHBhZGRpbmcKLm1vZGFsLWRpYWxvZyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiBhdXRvOwogIG1hcmdpbjogMTBweDsKICB6LWluZGV4OiAoQHppbmRleC1tb2RhbC1iYWNrZ3JvdW5kICsgMTApOwp9CgovLyBBY3R1YWwgbW9kYWwKLm1vZGFsLWNvbnRlbnQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbW9kYWwtY29udGVudC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAbW9kYWwtY29udGVudC1mYWxsYmFjay1ib3JkZXItY29sb3I7IC8vb2xkIGJyb3dzZXJzIGZhbGxiYWNrIChpZTggZXRjKQogIGJvcmRlcjogMXB4IHNvbGlkIEBtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKICAuYm94LXNoYWRvdygwIDNweCA5cHggcmdiYSgwLDAsMCwuNSkpOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgLy8gUmVtb3ZlIGZvY3VzIG91dGxpbmUgZnJvbSBvcGVuZWQgbW9kYWwKICBvdXRsaW5lOiBub25lOwp9CgovLyBNb2RhbCBiYWNrZ3JvdW5kCi5tb2RhbC1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAoQHppbmRleC1tb2RhbC1iYWNrZ3JvdW5kIC0gMTApOwogIGJhY2tncm91bmQtY29sb3I6IEBtb2RhbC1iYWNrZHJvcC1iZzsKICAvLyBGYWRlIGZvciBiYWNrZHJvcAogICYuZmFkZSB7IC5vcGFjaXR5KDApOyB9CiAgJi5pbiB7IC5vcGFjaXR5KC41KTsgfQp9CgovLyBNb2RhbCBoZWFkZXIKLy8gVG9wIHNlY3Rpb24gb2YgdGhlIG1vZGFsIHcvIHRpdGxlIGFuZCBkaXNtaXNzCi5tb2RhbC1oZWFkZXIgewogIHBhZGRpbmc6IEBtb2RhbC10aXRsZS1wYWRkaW5nOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjsKICBtaW4taGVpZ2h0OiAoQG1vZGFsLXRpdGxlLXBhZGRpbmcgKyBAbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQpOwp9Ci8vIENsb3NlIGljb24KLm1vZGFsLWhlYWRlciAuY2xvc2UgewogIG1hcmdpbi10b3A6IC0ycHg7Cn0KCi8vIFRpdGxlIHRleHQgd2l0aGluIGhlYWRlcgoubW9kYWwtdGl0bGUgewogIG1hcmdpbjogMDsKICBsaW5lLWhlaWdodDogQG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0Owp9CgovLyBNb2RhbCBib2R5Ci8vIFdoZXJlIGFsbCBtb2RhbCBjb250ZW50IHJlc2lkZXMgKHNpYmxpbmcgb2YgLm1vZGFsLWhlYWRlciBhbmQgLm1vZGFsLWZvb3RlcikKLm1vZGFsLWJvZHkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiBAbW9kYWwtaW5uZXItcGFkZGluZzsKfQoKLy8gRm9vdGVyIChmb3IgYWN0aW9ucykKLm1vZGFsLWZvb3RlciB7CiAgbWFyZ2luLXRvcDogMTVweDsKICBwYWRkaW5nOiAoQG1vZGFsLWlubmVyLXBhZGRpbmcgLSAxKSBAbW9kYWwtaW5uZXItcGFkZGluZyBAbW9kYWwtaW5uZXItcGFkZGluZzsKICB0ZXh0LWFsaWduOiByaWdodDsgLy8gcmlnaHQgYWxpZ24gYnV0dG9ucwogIGJvcmRlci10b3A6IDFweCBzb2xpZCBAbW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcjsKICAuY2xlYXJmaXgoKTsgLy8gY2xlYXIgaXQgaW4gY2FzZSBmb2xrcyB1c2UgLnB1bGwtKiBjbGFzc2VzIG9uIGJ1dHRvbnMKCiAgLy8gUHJvcGVybHkgc3BhY2Ugb3V0IGJ1dHRvbnMKICAuYnRuICsgLmJ0biB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsgLy8gYWNjb3VudCBmb3IgaW5wdXRbdHlwZT0ic3VibWl0Il0gd2hpY2ggZ2V0cyB0aGUgYm90dG9tIG1hcmdpbiBsaWtlIGFsbCBvdGhlciBpbnB1dHMKICB9CiAgLy8gYnV0IG92ZXJyaWRlIHRoYXQgZm9yIGJ1dHRvbiBncm91cHMKICAuYnRuLWdyb3VwIC5idG4gKyAuYnRuIHsKICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogIH0KICAvLyBhbmQgb3ZlcnJpZGUgaXQgZm9yIGJsb2NrIGJ1dHRvbnMgYXMgd2VsbAogIC5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KfQoKLy8gU2NhbGUgdXAgdGhlIG1vZGFsCkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CgogIC5tb2RhbC1kaWFsb2cgewogICAgd2lkdGg6IDYwMHB4OwogICAgbWFyZ2luOiAzMHB4IGF1dG87CiAgfQogIC5tb2RhbC1jb250ZW50IHsKICAgIC5ib3gtc2hhZG93KDAgNXB4IDE1cHggcmdiYSgwLDAsMCwuNSkpOwogIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/navbar.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTmF2YmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIFdyYXBwZXIgYW5kIGJhc2UgY2xhc3MKLy8KLy8gUHJvdmlkZSBhIHN0YXRpYyBuYXZiYXIgZnJvbSB3aGljaCB3ZSBleHBhbmQgdG8gY3JlYXRlIGZ1bGwtd2lkdGgsIGZpeGVkLCBhbmQKLy8gb3RoZXIgbmF2YmFyIHZhcmlhdGlvbnMuCgoubmF2YmFyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWluLWhlaWdodDogQG5hdmJhci1oZWlnaHQ7IC8vIEVuc3VyZSBhIG5hdmJhciBhbHdheXMgc2hvd3MgKGUuZy4sIHdpdGhvdXQgYSAubmF2YmFyLWJyYW5kIGluIGNvbGxhcHNlZCBtb2RlKQogIG1hcmdpbi1ib3R0b206IEBuYXZiYXItbWFyZ2luLWJvdHRvbTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKCiAgLy8gUHJldmVudCBmbG9hdHMgZnJvbSBicmVha2luZyB0aGUgbmF2YmFyCiAgLmNsZWFyZml4KCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBib3JkZXItcmFkaXVzOiBAbmF2YmFyLWJvcmRlci1yYWRpdXM7CiAgfQp9CgoKLy8gTmF2YmFyIGhlYWRpbmcKLy8KLy8gR3JvdXBzIGAubmF2YmFyLWJyYW5kYCBhbmQgYC5uYXZiYXItdG9nZ2xlYCBpbnRvIGEgc2luZ2xlIGNvbXBvbmVudCBmb3IgZWFzeQovLyBzdHlsaW5nIG9mIHJlc3BvbnNpdmUgYXNwZWN0cy4KCi5uYXZiYXItaGVhZGVyIHsKICAuY2xlYXJmaXgoKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIGZsb2F0OiBsZWZ0OwogIH0KfQoKCi8vIE5hdmJhciBjb2xsYXBzZSAoYm9keSkKLy8KLy8gR3JvdXAgeW91ciBuYXZiYXIgY29udGVudCBpbnRvIHRoaXMgZm9yIGVhc3kgY29sbGFwc2luZyBhbmQgZXhwYW5kaW5nIGFjcm9zcwovLyB2YXJpb3VzIGRldmljZSBzaXplcy4gQnkgZGVmYXVsdCwgdGhpcyBjb250ZW50IGlzIGNvbGxhcHNlZCB3aGVuIDw3NjhweCwgYnV0Ci8vIHdpbGwgZXhwYW5kIHBhc3QgdGhhdCBmb3IgYSBob3Jpem9udGFsIGRpc3BsYXkuCi8vCi8vIFRvIHN0YXJ0IChvbiBtb2JpbGUgZGV2aWNlcykgdGhlIG5hdmJhciBsaW5rcywgZm9ybXMsIGFuZCBidXR0b25zIGFyZSBzdGFja2VkCi8vIHZlcnRpY2FsbHkgYW5kIGluY2x1ZGUgYSBgbWF4LWhlaWdodGAgdG8gb3ZlcmZsb3cgaW4gY2FzZSB5b3UgaGF2ZSB0b28gbXVjaAovLyBjb250ZW50IGZvciB0aGUgdXNlcidzIHZpZXdwb3J0LgoKLm5hdmJhci1jb2xsYXBzZSB7CiAgbWF4LWhlaWdodDogMzQwcHg7CiAgb3ZlcmZsb3cteDogdmlzaWJsZTsKICBwYWRkaW5nLXJpZ2h0OiBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBwYWRkaW5nLWxlZnQ6ICBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKTsKICAuY2xlYXJmaXgoKTsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CgogICYuaW4gewogICAgb3ZlcmZsb3cteTogYXV0bzsKICB9CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICB3aWR0aDogYXV0bzsKICAgIGJvcmRlci10b3A6IDA7CiAgICBib3gtc2hhZG93OiBub25lOwoKICAgICYuY29sbGFwc2UgewogICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgcGFkZGluZy1ib3R0b206IDA7IC8vIE92ZXJyaWRlIGRlZmF1bHQgc2V0dGluZwogICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgfQoKICAgICYuaW4gewogICAgICBvdmVyZmxvdy15OiB2aXNpYmxlOwogICAgfQoKICAgIC8vIFVuZG8gdGhlIGNvbGxhcHNlIHNpZGUgcGFkZGluZyBmb3IgbmF2YmFycyB3aXRoIGNvbnRhaW5lcnMgdG8gZW5zdXJlCiAgICAvLyBhbGlnbm1lbnQgb2YgcmlnaHQtYWxpZ25lZCBjb250ZW50cy4KICAgIC5uYXZiYXItZml4ZWQtdG9wICYsCiAgICAubmF2YmFyLXN0YXRpYy10b3AgJiwKICAgIC5uYXZiYXItZml4ZWQtYm90dG9tICYgewogICAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICB9CiAgfQp9CgoKLy8gQm90aCBuYXZiYXIgaGVhZGVyIGFuZCBjb2xsYXBzZQovLwovLyBXaGVuIGEgY29udGFpbmVyIGlzIHByZXNlbnQsIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGhlYWRlciBhbmQgY29sbGFwc2UuCgouY29udGFpbmVyID4gLm5hdmJhci1oZWFkZXIsCi5jb250YWluZXIgPiAubmF2YmFyLWNvbGxhcHNlIHsKICBtYXJnaW4tcmlnaHQ6IC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBtYXJnaW4tbGVmdDogIC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIG1hcmdpbi1sZWZ0OiAgMDsKICB9Cn0KCgovLwovLyBOYXZiYXIgYWxpZ25tZW50IG9wdGlvbnMKLy8KLy8gRGlzcGxheSB0aGUgbmF2YmFyIGFjcm9zcyB0aGUgZW50aXJldHkgb2YgdGhlIHBhZ2Ugb3IgZml4ZWQgaXQgdG8gdGhlIHRvcCBvcgovLyBib3R0b20gb2YgdGhlIHBhZ2UuCgovLyBTdGF0aWMgdG9wICh1bmZpeGVkLCBidXQgMTAwJSB3aWRlKSBuYXZiYXIKLm5hdmJhci1zdGF0aWMtdG9wIHsKICB6LWluZGV4OiBAemluZGV4LW5hdmJhcjsKICBib3JkZXItd2lkdGg6IDAgMCAxcHg7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQoKLy8gRml4IHRoZSB0b3AvYm90dG9tIG5hdmJhcnMgd2hlbiBzY3JlZW4gcmVhbCBlc3RhdGUgc3VwcG9ydHMgaXQKLm5hdmJhci1maXhlZC10b3AsCi5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LW5hdmJhci1maXhlZDsKCiAgLy8gVW5kbyB0aGUgcm91bmRlZCBjb3JuZXJzCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQp9Ci5uYXZiYXItZml4ZWQtdG9wIHsKICB0b3A6IDA7CiAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4Owp9Ci5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBib3R0b206IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gb3ZlcnJpZGUgLm5hdmJhciBkZWZhdWx0cwogIGJvcmRlci13aWR0aDogMXB4IDAgMDsKfQoKCi8vIEJyYW5kL3Byb2plY3QgbmFtZQoKLm5hdmJhci1icmFuZCB7CiAgZmxvYXQ6IGxlZnQ7CiAgcGFkZGluZzogQG5hdmJhci1wYWRkaW5nLXZlcnRpY2FsIEBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1sYXJnZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwoKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIC5uYXZiYXIgPiAuY29udGFpbmVyICYgewogICAgICBtYXJnaW4tbGVmdDogLUBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogICAgfQogIH0KfQoKCi8vIE5hdmJhciB0b2dnbGUKLy8KLy8gQ3VzdG9tIGJ1dHRvbiBmb3IgdG9nZ2xpbmcgdGhlIGAubmF2YmFyLWNvbGxhcHNlYCwgcG93ZXJlZCBieSB0aGUgY29sbGFwc2UKLy8gSmF2YVNjcmlwdCBwbHVnaW4uCgoubmF2YmFyLXRvZ2dsZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsb2F0OiByaWdodDsKICBtYXJnaW4tcmlnaHQ6IEBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogIHBhZGRpbmc6IDlweCAxMHB4OwogIC5uYXZiYXItdmVydGljYWwtYWxpZ24oMzRweCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLy8gUmVzZXQgdW51c3VhbCBGaXJlZm94LW9uLUFuZHJvaWQgZGVmYXVsdCBzdHlsZTsgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MvaXNzdWVzLzIxNAogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CgogIC8vIEJhcnMKICAuaWNvbi1iYXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMjJweDsKICAgIGhlaWdodDogMnB4OwogICAgYm9yZGVyLXJhZGl1czogMXB4OwogIH0KICAuaWNvbi1iYXIgKyAuaWNvbi1iYXIgewogICAgbWFyZ2luLXRvcDogNHB4OwogIH0KCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CgoKLy8gTmF2YmFyIG5hdiBsaW5rcwovLwovLyBCdWlsZHMgb24gdG9wIG9mIHRoZSBgLm5hdmAgY29tcG9uZW50cyB3aXRoIGl0J3Mgb3duIG1vZGlmaWVyIGNsYXNzIHRvIG1ha2UKLy8gdGhlIG5hdiB0aGUgZnVsbCBoZWlnaHQgb2YgdGhlIGhvcml6b250YWwgbmF2IChhYm92ZSA3NjhweCkuCgoubmF2YmFyLW5hdiB7CiAgbWFyZ2luOiAoQG5hdmJhci1wYWRkaW5nLXZlcnRpY2FsIC8gMikgLUBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwoKICA+IGxpID4gYSB7CiAgICBwYWRkaW5nLXRvcDogICAgMTBweDsKICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICB9CgogIEBtZWRpYSAobWF4LXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50LW1heCkgewogICAgLy8gRHJvcGRvd25zIGdldCBjdXN0b20gZGlzcGxheSB3aGVuIGNvbGxhcHNlZAogICAgLm9wZW4gLmRyb3Bkb3duLW1lbnUgewogICAgICBwb3NpdGlvbjogc3RhdGljOwogICAgICBmbG9hdDogbm9uZTsKICAgICAgd2lkdGg6IGF1dG87CiAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICBib3JkZXI6IDA7CiAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgID4gbGkgPiBhLAogICAgICAuZHJvcGRvd24taGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiA1cHggMTVweCA1cHggMjVweDsKICAgICAgfQogICAgICA+IGxpID4gYSB7CiAgICAgICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICAgICAgICAmOmhvdmVyLAogICAgICAgICY6Zm9jdXMgewogICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFVuY29sbGFwc2UgdGhlIG5hdgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbjogMDsKCiAgICA+IGxpIHsKICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgID4gYSB7CiAgICAgICAgcGFkZGluZy10b3A6ICAgIEBuYXZiYXItcGFkZGluZy12ZXJ0aWNhbDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogQG5hdmJhci1wYWRkaW5nLXZlcnRpY2FsOwogICAgICB9CiAgICB9CgogICAgJi5uYXZiYXItcmlnaHQ6bGFzdC1jaGlsZCB7CiAgICAgIG1hcmdpbi1yaWdodDogLUBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogICAgfQogIH0KfQoKCi8vIENvbXBvbmVudCBhbGlnbm1lbnQKLy8KLy8gUmVwdXJwb3NlIHRoZSBwdWxsIHV0aWxpdGllcyBhcyB0aGVpciBvd24gbmF2YmFyIHV0aWxpdGllcyB0byBhdm9pZCBzcGVjaWZpY2l0eQovLyBpc3N1ZXMgd2l0aCBwYXJlbnRzIGFuZCBjaGFpbmluZy4gT25seSBkbyB0aGlzIHdoZW4gdGhlIG5hdmJhciBpcyB1bmNvbGxhcHNlZAovLyB0aG91Z2ggc28gdGhhdCBuYXZiYXIgY29udGVudHMgcHJvcGVybHkgc3RhY2sgYW5kIGFsaWduIGluIG1vYmlsZS4KCkBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgLm5hdmJhci1sZWZ0ICB7IC5wdWxsLWxlZnQoKTsgfQogIC5uYXZiYXItcmlnaHQgeyAucHVsbC1yaWdodCgpOyB9Cn0KCgovLyBOYXZiYXIgZm9ybQovLwovLyBFeHRlbnNpb24gb2YgdGhlIGAuZm9ybS1pbmxpbmVgIHdpdGggc29tZSBleHRyYSBmbGF2b3IgZm9yIG9wdGltdW0gZGlzcGxheSBpbgovLyBvdXIgbmF2YmFycy4KCi5uYXZiYXItZm9ybSB7CiAgbWFyZ2luLWxlZnQ6IC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBtYXJnaW4tcmlnaHQ6IC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBwYWRkaW5nOiAxMHB4IEBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgQHNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKSwgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKTsKICAuYm94LXNoYWRvdyhAc2hhZG93KTsKCiAgLy8gTWl4aW4gYmVoYXZpb3IgZm9yIG9wdGltdW0gZGlzcGxheQogIC5mb3JtLWlubGluZSgpOwoKICAuZm9ybS1ncm91cCB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXgpIHsKICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgfQogIH0KCiAgLy8gVmVydGljYWxseSBjZW50ZXIgaW4gZXhwYW5kZWQsIGhvcml6b250YWwgbmF2YmFyCiAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbihAaW5wdXQtaGVpZ2h0LWJhc2UpOwoKICAvLyBVbmRvIDEwMCUgd2lkdGggZm9yIHB1bGwgY2xhc3NlcwogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICB3aWR0aDogYXV0bzsKICAgIGJvcmRlcjogMDsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgcGFkZGluZy10b3A6IDA7CiAgICBwYWRkaW5nLWJvdHRvbTogMDsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwoKICAgIC8vIE91dGRlbnQgdGhlIGZvcm0gaWYgbGFzdCBjaGlsZCB0byBsaW5lIHVwIHdpdGggY29udGVudCBkb3duIHRoZSBwYWdlCiAgICAmLm5hdmJhci1yaWdodDpsYXN0LWNoaWxkIHsKICAgICAgbWFyZ2luLXJpZ2h0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgICB9CiAgfQp9CgoKLy8gRHJvcGRvd24gbWVudXMKCi8vIE1lbnUgcG9zaXRpb24gYW5kIG1lbnUgY2FyZXRzCi5uYXZiYXItbmF2ID4gbGkgPiAuZHJvcGRvd24tbWVudSB7CiAgbWFyZ2luLXRvcDogMDsKICAuYm9yZGVyLXRvcC1yYWRpdXMoMCk7Cn0KLy8gTWVudSBwb3NpdGlvbiBhbmQgbWVudSBjYXJldCBzdXBwb3J0IGZvciBkcm9wdXBzIHZpYSBleHRyYSBkcm9wdXAgY2xhc3MKLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1uYXYgPiBsaSA+IC5kcm9wZG93bi1tZW51IHsKICAuYm9yZGVyLWJvdHRvbS1yYWRpdXMoMCk7Cn0KCi8vIFJpZ2h0IGFsaWduZWQgbWVudXMgbmVlZCBhbHQgcG9zaXRpb24KLm5hdmJhci1uYXYucHVsbC1yaWdodCA+IGxpID4gLmRyb3Bkb3duLW1lbnUsCi5uYXZiYXItbmF2ID4gbGkgPiAuZHJvcGRvd24tbWVudS5wdWxsLXJpZ2h0IHsKICBsZWZ0OiBhdXRvOwogIHJpZ2h0OiAwOwp9CgoKLy8gQnV0dG9ucyBpbiBuYXZiYXJzCi8vCi8vIFZlcnRpY2FsbHkgY2VudGVyIGEgYnV0dG9uIHdpdGhpbiBhIG5hdmJhciAod2hlbiAqbm90KiBpbiBhIGZvcm0pLgoKLm5hdmJhci1idG4gewogIC5uYXZiYXItdmVydGljYWwtYWxpZ24oQGlucHV0LWhlaWdodC1iYXNlKTsKCiAgJi5idG4tc20gewogICAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbihAaW5wdXQtaGVpZ2h0LXNtYWxsKTsKICB9CiAgJi5idG4teHMgewogICAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbigyMik7CiAgfQp9CgoKLy8gVGV4dCBpbiBuYXZiYXJzCi8vCi8vIEFkZCBhIGNsYXNzIHRvIG1ha2UgYW55IGVsZW1lbnQgcHJvcGVybHkgYWxpZ24gaXRzZWxmIHZlcnRpY2FsbHkgd2l0aGluIHRoZSBuYXZiYXJzLgoKLm5hdmJhci10ZXh0IHsKICAubmF2YmFyLXZlcnRpY2FsLWFsaWduKEBsaW5lLWhlaWdodC1jb21wdXRlZCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICAgIG1hcmdpbi1yaWdodDogQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CgogICAgLy8gT3V0ZGVudCB0aGUgZm9ybSBpZiBsYXN0IGNoaWxkIHRvIGxpbmUgdXAgd2l0aCBjb250ZW50IGRvd24gdGhlIHBhZ2UKICAgICYubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9CiAgfQp9CgovLyBBbHRlcm5hdGUgbmF2YmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gRGVmYXVsdCBuYXZiYXIKLm5hdmJhci1kZWZhdWx0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYmc7CiAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYm9yZGVyOwoKICAubmF2YmFyLWJyYW5kIHsKICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYnJhbmQtY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYnJhbmQtaG92ZXItY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1icmFuZC1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uYXZiYXItdGV4dCB7CiAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWNvbG9yOwogIH0KCiAgLm5hdmJhci1uYXYgewogICAgPiBsaSA+IGEgewogICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CgogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItYmc7CiAgICAgIH0KICAgIH0KICAgID4gLmFjdGl2ZSA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1iZzsKICAgICAgfQogICAgfQogICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWJnOwogICAgICB9CiAgICB9CiAgfQoKICAubmF2YmFyLXRvZ2dsZSB7CiAgICBib3JkZXItY29sb3I6IEBuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOwogICAgJjpob3ZlciwKICAgICY6Zm9jdXMgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOwogICAgfQogICAgLmljb24tYmFyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzsKICAgIH0KICB9CgogIC5uYXZiYXItY29sbGFwc2UsCiAgLm5hdmJhci1mb3JtIHsKICAgIGJvcmRlci1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWJvcmRlcjsKICB9CgogIC8vIERyb3Bkb3duIG1lbnUgaXRlbXMKICAubmF2YmFyLW5hdiB7CiAgICAvLyBSZW1vdmUgYmFja2dyb3VuZCBjb2xvciBmcm9tIG9wZW4gZHJvcGRvd24KICAgID4gLm9wZW4gPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWJnOwogICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I7CiAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKG1heC13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXgpIHsKICAgICAgLy8gRHJvcGRvd25zIGdldCBjdXN0b20gZGlzcGxheSB3aGVuIGNvbGxhcHNlZAogICAgICAub3BlbiAuZHJvcGRvd24tbWVudSB7CiAgICAgICAgPiBsaSA+IGEgewogICAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOwogICAgICAgICAgJjpob3ZlciwKICAgICAgICAgICY6Zm9jdXMgewogICAgICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWJnOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICA+IC5hY3RpdmUgPiBhIHsKICAgICAgICAgICYsCiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1iZzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgICAgICYsCiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1kaXNhYmxlZC1jb2xvcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstZGlzYWJsZWQtYmc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKCiAgLy8gTGlua3MgaW4gbmF2YmFycwogIC8vCiAgLy8gQWRkIGEgY2xhc3MgdG8gZW5zdXJlIGxpbmtzIG91dHNpZGUgdGhlIG5hdmJhciBuYXYgYXJlIGNvbG9yZWQgY29ycmVjdGx5LgoKICAubmF2YmFyLWxpbmsgewogICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOwogICAgJjpob3ZlciB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjsKICAgIH0KICB9Cgp9CgovLyBJbnZlcnNlIG5hdmJhcgoKLm5hdmJhci1pbnZlcnNlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtYmc7CiAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtYm9yZGVyOwoKICAubmF2YmFyLWJyYW5kIHsKICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtYnJhbmQtY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtYnJhbmQtaG92ZXItY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1icmFuZC1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uYXZiYXItdGV4dCB7CiAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWNvbG9yOwogIH0KCiAgLm5hdmJhci1uYXYgewogICAgPiBsaSA+IGEgewogICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I7CgogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItYmc7CiAgICAgIH0KICAgIH0KICAgID4gLmFjdGl2ZSA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWFjdGl2ZS1iZzsKICAgICAgfQogICAgfQogICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWJnOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBEYXJrZW4gdGhlIHJlc3BvbnNpdmUgbmF2IHRvZ2dsZQogIC5uYXZiYXItdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogQG5hdmJhci1pbnZlcnNlLXRvZ2dsZS1ib3JkZXItY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS10b2dnbGUtaG92ZXItYmc7CiAgICB9CiAgICAuaWNvbi1iYXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtdG9nZ2xlLWljb24tYmFyLWJnOwogICAgfQogIH0KCiAgLm5hdmJhci1jb2xsYXBzZSwKICAubmF2YmFyLWZvcm0gewogICAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQG5hdmJhci1pbnZlcnNlLWJnLCA3JSk7CiAgfQoKICAvLyBEcm9wZG93bnMKICAubmF2YmFyLW5hdiB7CiAgICA+IC5vcGVuID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWFjdGl2ZS1iZzsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOwogICAgICB9CiAgICB9CgogICAgQG1lZGlhIChtYXgtd2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQtbWF4KSB7CiAgICAgIC8vIERyb3Bkb3ducyBnZXQgY3VzdG9tIGRpc3BsYXkKICAgICAgLm9wZW4gLmRyb3Bkb3duLW1lbnUgewogICAgICAgID4gLmRyb3Bkb3duLWhlYWRlciB7CiAgICAgICAgICBib3JkZXItY29sb3I6IEBuYXZiYXItaW52ZXJzZS1ib3JkZXI7CiAgICAgICAgfQogICAgICAgIC5kaXZpZGVyIHsKICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1ib3JkZXI7CiAgICAgICAgfQogICAgICAgID4gbGkgPiBhIHsKICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1jb2xvcjsKICAgICAgICAgICY6aG92ZXIsCiAgICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWhvdmVyLWNvbG9yOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1iZzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgPiAuYWN0aXZlID4gYSB7CiAgICAgICAgICAmLAogICAgICAgICAgJjpob3ZlciwKICAgICAgICAgICY6Zm9jdXMgewogICAgICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtYmc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgID4gLmRpc2FibGVkID4gYSB7CiAgICAgICAgICAmLAogICAgICAgICAgJjpob3ZlciwKICAgICAgICAgICY6Zm9jdXMgewogICAgICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWJnOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KCiAgLm5hdmJhci1saW5rIHsKICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1jb2xvcjsKICAgICY6aG92ZXIgewogICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I7CiAgICB9CiAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/navs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTmF2cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhc2UgY2xhc3MKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5uYXYgewogIG1hcmdpbi1ib3R0b206IDA7CiAgcGFkZGluZy1sZWZ0OiAwOyAvLyBPdmVycmlkZSBkZWZhdWx0IHVsL29sCiAgbGlzdC1zdHlsZTogbm9uZTsKICAuY2xlYXJmaXgoKTsKCiAgPiBsaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKCiAgICA+IGEgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwYWRkaW5nOiBAbmF2LWxpbmstcGFkZGluZzsKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXYtbGluay1ob3Zlci1iZzsKICAgICAgfQogICAgfQoKICAgIC8vIERpc2FibGVkIHN0YXRlIHNldHMgdGV4dCB0byBncmF5IGFuZCBudWtlcyBob3Zlci90YWIgZWZmZWN0cwogICAgJi5kaXNhYmxlZCA+IGEgewogICAgICBjb2xvcjogQG5hdi1kaXNhYmxlZC1saW5rLWNvbG9yOwoKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXYtZGlzYWJsZWQtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQogICAgfQogIH0KCiAgLy8gT3BlbiBkcm9wZG93bnMKICAub3BlbiA+IGEgewogICAgJiwKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdi1saW5rLWhvdmVyLWJnOwogICAgICBib3JkZXItY29sb3I6IEBsaW5rLWNvbG9yOwogICAgfQogIH0KCiAgLy8gTmF2IGRpdmlkZXJzIChkZXByZWNhdGVkIHdpdGggdjMuMC4xKQogIC8vCiAgLy8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdjMgd2l0aCB0aGUgZHJvcHBpbmcgb2YgYC5uYXYtbGlzdGAsIGJ1dAogIC8vIHdlIG1pc3NlZCBpdC4gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgdGhpcyBhbnl3aGVyZSwgYnV0IGluIHRoZSBpbnRlcmVzdAogIC8vIG9mIG1haW50YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaW4gY2FzZSB5b3UgdXNlIGl0LCBpdCdzIGRlcHJlY2F0ZWQuCiAgLm5hdi1kaXZpZGVyIHsKICAgIC5uYXYtZGl2aWRlcigpOwogIH0KCiAgLy8gUHJldmVudCBJRTggZnJvbSBtaXNwbGFjaW5nIGltZ3MKICAvLwogIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9pc3N1ZXMvOTg0I2lzc3VlY29tbWVudC0zOTg1OTg5CiAgPiBsaSA+IGEgPiBpbWcgewogICAgbWF4LXdpZHRoOiBub25lOwogIH0KfQoKCi8vIFRhYnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gR2l2ZSB0aGUgdGFicyBzb21ldGhpbmcgdG8gc2l0IG9uCi5uYXYtdGFicyB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBuYXYtdGFicy1ib3JkZXItY29sb3I7CiAgPiBsaSB7CiAgICBmbG9hdDogbGVmdDsKICAgIC8vIE1ha2UgdGhlIGxpc3QtaXRlbXMgb3ZlcmxheSB0aGUgYm90dG9tIGJvcmRlcgogICAgbWFyZ2luLWJvdHRvbTogLTFweDsKCiAgICAvLyBBY3R1YWwgdGFicyAoYXMgbGlua3MpCiAgICA+IGEgewogICAgICBtYXJnaW4tcmlnaHQ6IDJweDsKICAgICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZSBAYm9yZGVyLXJhZGl1cy1iYXNlIDAgMDsKICAgICAgJjpob3ZlciB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiBAbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3IgQG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yIEBuYXYtdGFicy1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KCiAgICAvLyBBY3RpdmUgc3RhdGUsIGFuZCBpdCdzIDpob3ZlciB0byBvdmVycmlkZSBub3JtYWwgOmhvdmVyCiAgICAmLmFjdGl2ZSA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1iZzsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBAbmF2LXRhYnMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOwogICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQogICAgfQogIH0KICAvLyBwdWxsaW5nIHRoaXMgaW4gbWFpbmx5IGZvciBsZXNzIHNob3J0aGFuZAogICYubmF2LWp1c3RpZmllZCB7CiAgICAubmF2LWp1c3RpZmllZCgpOwogICAgLm5hdi10YWJzLWp1c3RpZmllZCgpOwogIH0KfQoKCi8vIFBpbGxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLm5hdi1waWxscyB7CiAgPiBsaSB7CiAgICBmbG9hdDogbGVmdDsKCiAgICAvLyBMaW5rcyByZW5kZXJlZCBhcyBwaWxscwogICAgPiBhIHsKICAgICAgYm9yZGVyLXJhZGl1czogQG5hdi1waWxscy1ib3JkZXItcmFkaXVzOwogICAgfQogICAgKyBsaSB7CiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICB9CgogICAgLy8gQWN0aXZlIHN0YXRlCiAgICAmLmFjdGl2ZSA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOwogICAgICB9CiAgICB9CiAgfQp9CgoKLy8gU3RhY2tlZCBwaWxscwoubmF2LXN0YWNrZWQgewogID4gbGkgewogICAgZmxvYXQ6IG5vbmU7CiAgICArIGxpIHsKICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICBtYXJnaW4tbGVmdDogMDsgLy8gbm8gbmVlZCBmb3IgdGhpcyBnYXAgYmV0d2VlbiBuYXYgaXRlbXMKICAgIH0KICB9Cn0KCgovLyBOYXYgdmFyaWF0aW9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gSnVzdGlmaWVkIG5hdiBsaW5rcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoubmF2LWp1c3RpZmllZCB7CiAgd2lkdGg6IDEwMCU7CgogID4gbGkgewogICAgZmxvYXQ6IG5vbmU7CiAgICAgPiBhIHsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICB9CiAgfQoKICA+IC5kcm9wZG93biAuZHJvcGRvd24tbWVudSB7CiAgICB0b3A6IGF1dG87CiAgICBsZWZ0OiBhdXRvOwogIH0KCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICA+IGxpIHsKICAgICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgICAgd2lkdGg6IDElOwogICAgICA+IGEgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIH0KICAgIH0KICB9Cn0KCi8vIE1vdmUgYm9yZGVycyB0byBhbmNob3JzIGluc3RlYWQgb2YgYm90dG9tIG9mIGxpc3QKLy8KLy8gTWl4aW4gZm9yIGFkZGluZyBvbiB0b3AgdGhlIHNoYXJlZCBgLm5hdi1qdXN0aWZpZWRgIHN0eWxlcyBmb3Igb3VyIHRhYnMKLm5hdi10YWJzLWp1c3RpZmllZCB7CiAgYm9yZGVyLWJvdHRvbTogMDsKCiAgPiBsaSA+IGEgewogICAgLy8gT3ZlcnJpZGUgbWFyZ2luIGZyb20gLm5hdi10YWJzCiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogIH0KCiAgPiAuYWN0aXZlID4gYSwKICA+IC5hY3RpdmUgPiBhOmhvdmVyLAogID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogICAgYm9yZGVyOiAxcHggc29saWQgQG5hdi10YWJzLWp1c3RpZmllZC1saW5rLWJvcmRlci1jb2xvcjsKICB9CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgPiBsaSA+IGEgewogICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQG5hdi10YWJzLWp1c3RpZmllZC1saW5rLWJvcmRlci1jb2xvcjsKICAgICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZSBAYm9yZGVyLXJhZGl1cy1iYXNlIDAgMDsKICAgIH0KICAgID4gLmFjdGl2ZSA+IGEsCiAgICA+IC5hY3RpdmUgPiBhOmhvdmVyLAogICAgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBuYXYtdGFicy1qdXN0aWZpZWQtYWN0aXZlLWxpbmstYm9yZGVyLWNvbG9yOwogICAgfQogIH0KfQoKCi8vIFRhYmJhYmxlIHRhYnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gSGlkZSB0YWJiYWJsZSBwYW5lcyB0byBzdGFydCwgc2hvdyB0aGVtIHdoZW4gYC5hY3RpdmVgCi50YWItY29udGVudCB7CiAgPiAudGFiLXBhbmUgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgPiAuYWN0aXZlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogIH0KfQoKCi8vIERyb3Bkb3ducwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBTcGVjaWZpYyBkcm9wZG93bnMKLm5hdi10YWJzIC5kcm9wZG93bi1tZW51IHsKICAvLyBtYWtlIGRyb3Bkb3duIGJvcmRlciBvdmVybGFwIHRhYiBib3JkZXIKICBtYXJnaW4tdG9wOiAtMXB4OwogIC8vIFJlbW92ZSB0aGUgdG9wIHJvdW5kZWQgY29ybmVycyBoZXJlIHNpbmNlIHRoZXJlIGlzIGEgaGFyZCBlZGdlIGFib3ZlIHRoZSBtZW51CiAgLmJvcmRlci10b3AtcmFkaXVzKDApOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/normalize.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIG5vcm1hbGl6ZS5jc3MgdjIuMS4zIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovCgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLwovLyBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuCi8vCgphcnRpY2xlLAphc2lkZSwKZGV0YWlscywKZmlnY2FwdGlvbiwKZmlndXJlLApmb290ZXIsCmhlYWRlciwKaGdyb3VwLAptYWluLApuYXYsCnNlY3Rpb24sCnN1bW1hcnkgewogIGRpc3BsYXk6IGJsb2NrOwp9CgovLwovLyBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LgovLwoKYXVkaW8sCmNhbnZhcywKdmlkZW8gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLy8KLy8gUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy4KLy8gUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy4KLy8KCmF1ZGlvOm5vdChbY29udHJvbHNdKSB7CiAgZGlzcGxheTogbm9uZTsKICBoZWlnaHQ6IDA7Cn0KCi8vCi8vIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS4KLy8gSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFLCBTYWZhcmksIGFuZCBGaXJlZm94IDwgMjIuCi8vCgpbaGlkZGVuXSwKdGVtcGxhdGUgewogIGRpc3BsYXk6IG5vbmU7Cn0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEJhc2UKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuCi8vIDIuIFByZXZlbnQgaU9TIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlLCB3aXRob3V0IGRpc2FibGluZwovLyAgICB1c2VyIHpvb20uCi8vCgpodG1sIHsKICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLy8gMQogIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAyCiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAyCn0KCi8vCi8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi4KLy8KCmJvZHkgewogIG1hcmdpbjogMDsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTGlua3MKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gYWN0aXZlIGxpbmtzIGluIElFIDEwLgovLwoKYSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KCi8vCi8vIEFkZHJlc3MgYG91dGxpbmVgIGluY29uc2lzdGVuY3kgYmV0d2VlbiBDaHJvbWUgYW5kIG90aGVyIGJyb3dzZXJzLgovLwoKYTpmb2N1cyB7CiAgb3V0bGluZTogdGhpbiBkb3R0ZWQ7Cn0KCi8vCi8vIEltcHJvdmUgcmVhZGFiaWxpdHkgd2hlbiBmb2N1c2VkIGFuZCBhbHNvIG1vdXNlIGhvdmVyZWQgaW4gYWxsIGJyb3dzZXJzLgovLwoKYTphY3RpdmUsCmE6aG92ZXIgewogIG91dGxpbmU6IDA7Cn0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIFR5cG9ncmFwaHkKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWAKLy8gY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpIDUsIGFuZCBDaHJvbWUuCi8vCgpoMSB7CiAgZm9udC1zaXplOiAyZW07CiAgbWFyZ2luOiAwLjY3ZW0gMDsKfQoKLy8KLy8gQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOSwgU2FmYXJpIDUsIGFuZCBDaHJvbWUuCi8vCgphYmJyW3RpdGxlXSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDsKfQoKLy8KLy8gQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpIDUsIGFuZCBDaHJvbWUuCi8vCgpiLApzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgovLwovLyBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIDUgYW5kIENocm9tZS4KLy8KCmRmbiB7CiAgZm9udC1zdHlsZTogaXRhbGljOwp9CgovLwovLyBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuCi8vCgpociB7CiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBoZWlnaHQ6IDA7Cn0KCi8vCi8vIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuCi8vCgptYXJrIHsKICBiYWNrZ3JvdW5kOiAjZmYwOwogIGNvbG9yOiAjMDAwOwp9CgovLwovLyBDb3JyZWN0IGZvbnQgZmFtaWx5IHNldCBvZGRseSBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lLgovLwoKY29kZSwKa2JkLApwcmUsCnNhbXAgewogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIHNlcmlmOwogIGZvbnQtc2l6ZTogMWVtOwp9CgovLwovLyBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIHByZS1mb3JtYXR0ZWQgdGV4dCBpbiBhbGwgYnJvd3NlcnMuCi8vCgpwcmUgewogIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKfQoKLy8KLy8gU2V0IGNvbnNpc3RlbnQgcXVvdGUgdHlwZXMuCi8vCgpxIHsKICBxdW90ZXM6ICJcMjAxQyIgIlwyMDFEIiAiXDIwMTgiICJcMjAxOSI7Cn0KCi8vCi8vIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLgovLwoKc21hbGwgewogIGZvbnQtc2l6ZTogODAlOwp9CgovLwovLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuCi8vCgpzdWIsCnN1cCB7CiAgZm9udC1zaXplOiA3NSU7CiAgbGluZS1oZWlnaHQ6IDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKc3VwIHsKICB0b3A6IC0wLjVlbTsKfQoKc3ViIHsKICBib3R0b206IC0wLjI1ZW07Cn0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEVtYmVkZGVkIGNvbnRlbnQKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LgovLwoKaW1nIHsKICBib3JkZXI6IDA7Cn0KCi8vCi8vIENvcnJlY3Qgb3ZlcmZsb3cgZGlzcGxheWVkIG9kZGx5IGluIElFIDkuCi8vCgpzdmc6bm90KDpyb290KSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gRmlndXJlcwovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkgNS4KLy8KCmZpZ3VyZSB7CiAgbWFyZ2luOiAwOwp9CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBGb3JtcwovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLgovLwoKZmllbGRzZXQgewogIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7CiAgbWFyZ2luOiAwIDJweDsKICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07Cn0KCi8vCi8vIDEuIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS4KLy8gMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLgovLwoKbGVnZW5kIHsKICBib3JkZXI6IDA7IC8vIDEKICBwYWRkaW5nOiAwOyAvLyAyCn0KCi8vCi8vIDEuIENvcnJlY3QgZm9udCBmYW1pbHkgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBhbGwgYnJvd3NlcnMuCi8vIDIuIENvcnJlY3QgZm9udCBzaXplIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gYWxsIGJyb3dzZXJzLgovLyAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSA1LCBhbmQgQ2hyb21lLgovLwoKYnV0dG9uLAppbnB1dCwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7IC8vIDEKICBmb250LXNpemU6IDEwMCU7IC8vIDIKICBtYXJnaW46IDA7IC8vIDMKfQoKLy8KLy8gQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpbgovLyB0aGUgVUEgc3R5bGVzaGVldC4KLy8KCmJ1dHRvbiwKaW5wdXQgewogIGxpbmUtaGVpZ2h0OiBub3JtYWw7Cn0KCi8vCi8vIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC4KLy8gQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy4KLy8gQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBDaHJvbWUsIFNhZmFyaSA1KywgYW5kIElFIDgrLgovLyBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3ggNCsgYW5kIE9wZXJhLgovLwoKYnV0dG9uLApzZWxlY3QgewogIHRleHQtdHJhbnNmb3JtOiBub25lOwp9CgovLwovLyAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYAovLyAgICBhbmQgYHZpZGVvYCBjb250cm9scy4KLy8gMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLgovLyAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZQovLyAgICBgaW5wdXRgIGFuZCBvdGhlcnMuCi8vCgpidXR0b24sCmh0bWwgaW5wdXRbdHlwZT0iYnV0dG9uIl0sIC8vIDEKaW5wdXRbdHlwZT0icmVzZXQiXSwKaW5wdXRbdHlwZT0ic3VibWl0Il0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyCiAgY3Vyc29yOiBwb2ludGVyOyAvLyAzCn0KCi8vCi8vIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuCi8vCgpidXR0b25bZGlzYWJsZWRdLApodG1sIGlucHV0W2Rpc2FibGVkXSB7CiAgY3Vyc29yOiBkZWZhdWx0Owp9CgovLwovLyAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLgovLyAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLgovLwoKaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKaW5wdXRbdHlwZT0icmFkaW8iXSB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gMQogIHBhZGRpbmc6IDA7IC8vIDIKfQoKLy8KLy8gMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIDUgYW5kIENocm9tZS4KLy8gMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lCi8vICAgIChpbmNsdWRlIGAtbW96YCB0byBmdXR1cmUtcHJvb2YpLgovLwoKaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvLyAxCiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvLyAyCiAgYm94LXNpemluZzogY29udGVudC1ib3g7Cn0KCi8vCi8vIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lCi8vIG9uIE9TIFguCi8vCgppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwKaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQoKLy8KLy8gUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLgovLwoKYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLAppbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7Cn0KCi8vCi8vIDEuIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkuCi8vIDIuIEltcHJvdmUgcmVhZGFiaWxpdHkgYW5kIGFsaWdubWVudCBpbiBhbGwgYnJvd3NlcnMuCi8vCgp0ZXh0YXJlYSB7CiAgb3ZlcmZsb3c6IGF1dG87IC8vIDEKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOyAvLyAyCn0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIFRhYmxlcwovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLgovLwoKdGFibGUgewogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgYm9yZGVyLXNwYWNpbmc6IDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/pager.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFnZXIgcGFnaW5hdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi5wYWdlciB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgLmNsZWFyZml4KCk7CiAgbGkgewogICAgZGlzcGxheTogaW5saW5lOwogICAgPiBhLAogICAgPiBzcGFuIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2luYXRpb24tYmc7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBwYWdpbmF0aW9uLWJvcmRlcjsKICAgICAgYm9yZGVyLXJhZGl1czogQHBhZ2VyLWJvcmRlci1yYWRpdXM7CiAgICB9CgogICAgPiBhOmhvdmVyLAogICAgPiBhOmZvY3VzIHsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnaW5hdGlvbi1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uZXh0IHsKICAgID4gYSwKICAgID4gc3BhbiB7CiAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICB9CgogIC5wcmV2aW91cyB7CiAgICA+IGEsCiAgICA+IHNwYW4gewogICAgICBmbG9hdDogbGVmdDsKICAgIH0KICB9CgogIC5kaXNhYmxlZCB7CiAgICA+IGEsCiAgICA+IGE6aG92ZXIsCiAgICA+IGE6Zm9jdXMsCiAgICA+IHNwYW4gewogICAgICBjb2xvcjogQHBhZ2VyLWRpc2FibGVkLWNvbG9yOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnaW5hdGlvbi1iZzsKICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIH0KICB9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/pagination.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFnaW5hdGlvbiAobXVsdGlwbGUgcGFnZXMpCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5wYWdpbmF0aW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIDA7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmU7IC8vIFJlbW92ZSBsaXN0LXN0eWxlIGFuZCBibG9jay1sZXZlbCBkZWZhdWx0cwogICAgPiBhLAogICAgPiBzcGFuIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBmbG9hdDogbGVmdDsgLy8gQ29sbGFwc2Ugd2hpdGUtc3BhY2UKICAgICAgcGFkZGluZzogQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCBAcGFkZGluZy1iYXNlLWhvcml6b250YWw7CiAgICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnaW5hdGlvbi1iZzsKICAgICAgYm9yZGVyOiAxcHggc29saWQgQHBhZ2luYXRpb24tYm9yZGVyOwogICAgICBtYXJnaW4tbGVmdDogLTFweDsKICAgIH0KICAgICY6Zmlyc3QtY2hpbGQgewogICAgICA+IGEsCiAgICAgID4gc3BhbiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgICAgLmJvcmRlci1sZWZ0LXJhZGl1cyhAYm9yZGVyLXJhZGl1cy1iYXNlKTsKICAgICAgfQogICAgfQogICAgJjpsYXN0LWNoaWxkIHsKICAgICAgPiBhLAogICAgICA+IHNwYW4gewogICAgICAgIC5ib3JkZXItcmlnaHQtcmFkaXVzKEBib3JkZXItcmFkaXVzLWJhc2UpOwogICAgICB9CiAgICB9CiAgfQoKICA+IGxpID4gYSwKICA+IGxpID4gc3BhbiB7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwYWdpbmF0aW9uLWhvdmVyLWJnOwogICAgfQogIH0KCiAgPiAuYWN0aXZlID4gYSwKICA+IC5hY3RpdmUgPiBzcGFuIHsKICAgICYsCiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIHotaW5kZXg6IDI7CiAgICAgIGNvbG9yOiBAcGFnaW5hdGlvbi1hY3RpdmUtY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwYWdpbmF0aW9uLWFjdGl2ZS1iZzsKICAgICAgYm9yZGVyLWNvbG9yOiBAcGFnaW5hdGlvbi1hY3RpdmUtYmc7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KICB9CgogID4gLmRpc2FibGVkIHsKICAgID4gc3BhbiwKICAgID4gc3Bhbjpob3ZlciwKICAgID4gc3Bhbjpmb2N1cywKICAgID4gYSwKICAgID4gYTpob3ZlciwKICAgID4gYTpmb2N1cyB7CiAgICAgIGNvbG9yOiBAcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2luYXRpb24tYmc7CiAgICAgIGJvcmRlci1jb2xvcjogQHBhZ2luYXRpb24tYm9yZGVyOwogICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgfQogIH0KfQoKLy8gU2l6aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBMYXJnZQoucGFnaW5hdGlvbi1sZyB7CiAgLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy1sYXJnZS12ZXJ0aWNhbDsgQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9CgovLyBTbWFsbAoucGFnaW5hdGlvbi1zbSB7CiAgLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGJvcmRlci1yYWRpdXMtc21hbGwpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/panels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFuZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBjbGFzcwoucGFuZWwgewogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFuZWwtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQHBhbmVsLWJvcmRlci1yYWRpdXM7CiAgLmJveC1zaGFkb3coMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KSk7Cn0KCi8vIFBhbmVsIGNvbnRlbnRzCi5wYW5lbC1ib2R5IHsKICBwYWRkaW5nOiAxNXB4OwogIC5jbGVhcmZpeCgpOwp9CgoKLy8gTGlzdCBncm91cHMgaW4gcGFuZWxzCi8vCi8vIEJ5IGRlZmF1bHQsIHNwYWNlIG91dCBsaXN0IGdyb3VwIGNvbnRlbnQgZnJvbSBwYW5lbCBoZWFkaW5ncyB0byBhY2NvdW50IGZvcgovLyBhbnkga2luZCBvZiBjdXN0b20gY29udGVudCBiZXR3ZWVuIHRoZSB0d28uCgoucGFuZWwgewogID4gLmxpc3QtZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogMDsKCiAgICAubGlzdC1ncm91cC1pdGVtIHsKICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMDsKCiAgICAgIC8vIFJlbW92ZSBib3JkZXIgcmFkaXVzIGZvciB0b3Agb25lCiAgICAgICY6Zmlyc3QtY2hpbGQgewogICAgICAgIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKICAgICAgfQogICAgICAvLyBCdXQga2VlcCBpdCBmb3IgdGhlIGxhc3Qgb25lCiAgICAgICY6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDsKICAgICAgfQogICAgfQogIH0KfQovLyBDb2xsYXBzZSBzcGFjZSBiZXR3ZWVuIHdoZW4gdGhlcmUncyBubyBhZGRpdGlvbmFsIGNvbnRlbnQuCi5wYW5lbC1oZWFkaW5nICsgLmxpc3QtZ3JvdXAgewogIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC13aWR0aDogMDsKICB9Cn0KCgovLyBUYWJsZXMgaW4gcGFuZWxzCi8vCi8vIFBsYWNlIGEgbm9uLWJvcmRlcmVkIGAudGFibGVgIHdpdGhpbiBhIHBhbmVsIChub3Qgd2l0aGluIGEgYC5wYW5lbC1ib2R5YCkgYW5kCi8vIHdhdGNoIGl0IGdvIGZ1bGwgd2lkdGguCgoucGFuZWwgewogID4gLnRhYmxlLAogID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgPiAucGFuZWwtYm9keSArIC50YWJsZSwKICA+IC5wYW5lbC1ib2R5ICsgLnRhYmxlLXJlc3BvbnNpdmUgewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgfQogID4gLnRhYmxlID4gdGJvZHk6Zmlyc3QtY2hpbGQgdGgsCiAgPiAudGFibGUgPiB0Ym9keTpmaXJzdC1jaGlsZCB0ZCB7CiAgICBib3JkZXItdG9wOiAwOwogIH0KICA+IC50YWJsZS1ib3JkZXJlZCwKICA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICAgID4gdGhlYWQsCiAgICA+IHRib2R5LAogICAgPiB0Zm9vdCB7CiAgICAgID4gdHIgewogICAgICAgID4gdGg6Zmlyc3QtY2hpbGQsCiAgICAgICAgPiB0ZDpmaXJzdC1jaGlsZCB7CiAgICAgICAgICBib3JkZXItbGVmdDogMDsKICAgICAgICB9CiAgICAgICAgPiB0aDpsYXN0LWNoaWxkLAogICAgICAgID4gdGQ6bGFzdC1jaGlsZCB7CiAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7CiAgICAgICAgfQoKICAgICAgICAmOmxhc3QtY2hpbGQgPiB0aCwKICAgICAgICAmOmxhc3QtY2hpbGQgPiB0ZCB7CiAgICAgICAgICBib3JkZXItYm90dG9tOiAwOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICA+IC50YWJsZS1yZXNwb25zaXZlIHsKICAgIGJvcmRlcjogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQp9CgoKLy8gT3B0aW9uYWwgaGVhZGluZwoucGFuZWwtaGVhZGluZyB7CiAgcGFkZGluZzogMTBweCAxNXB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAuYm9yZGVyLXRvcC1yYWRpdXMoQHBhbmVsLWJvcmRlci1yYWRpdXMgLSAxKTsKCiAgPiAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9Cn0KCi8vIFdpdGhpbiBoZWFkaW5nLCBzdHJpcCBhbnkgYGgqYCB0YWcgb2YgaXQncyBkZWZhdWx0IG1hcmdpbnMgZm9yIHNwYWNpbmcuCi5wYW5lbC10aXRsZSB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogY2VpbCgoQGZvbnQtc2l6ZS1iYXNlICogMS4xMjUpKTsKICBjb2xvcjogaW5oZXJpdDsKCiAgPiBhIHsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KfQoKLy8gT3B0aW9uYWwgZm9vdGVyIChzdGF5cyBncmF5IGluIGV2ZXJ5IG1vZGlmaWVyIGNsYXNzKQoucGFuZWwtZm9vdGVyIHsKICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogQHBhbmVsLWZvb3Rlci1iZzsKICBib3JkZXItdG9wOiAxcHggc29saWQgQHBhbmVsLWlubmVyLWJvcmRlcjsKICAuYm9yZGVyLWJvdHRvbS1yYWRpdXMoQHBhbmVsLWJvcmRlci1yYWRpdXMgLSAxKTsKfQoKCi8vIENvbGxhcHNhYmxlIHBhbmVscyAoYWthLCBhY2NvcmRpb24pCi8vCi8vIFdyYXAgYSBzZXJpZXMgb2YgcGFuZWxzIGluIGAucGFuZWwtZ3JvdXBgIHRvIHR1cm4gdGhlbSBpbnRvIGFuIGFjY29yZGlvbiB3aXRoCi8vIHRoZSBoZWxwIG9mIG91ciBjb2xsYXBzZSBKYXZhU2NyaXB0IHBsdWdpbi4KCi5wYW5lbC1ncm91cCB7CiAgLy8gVGlnaHRlbiB1cCBtYXJnaW4gc28gaXQncyBvbmx5IGJldHdlZW4gcGFuZWxzCiAgLnBhbmVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBib3JkZXItcmFkaXVzOiBAcGFuZWwtYm9yZGVyLXJhZGl1czsKICAgIG92ZXJmbG93OiBoaWRkZW47IC8vIGNyb3AgY29udGVudHMgd2hlbiBjb2xsYXBzZWQKICAgICsgLnBhbmVsIHsKICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgfQogIH0KCiAgLnBhbmVsLWhlYWRpbmcgewogICAgYm9yZGVyLWJvdHRvbTogMDsKICAgICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBwYW5lbC1pbm5lci1ib3JkZXI7CiAgICB9CiAgfQogIC5wYW5lbC1mb290ZXIgewogICAgYm9yZGVyLXRvcDogMDsKICAgICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwYW5lbC1pbm5lci1ib3JkZXI7CiAgICB9CiAgfQp9CgoKLy8gQ29udGV4dHVhbCB2YXJpYXRpb25zCi5wYW5lbC1kZWZhdWx0IHsKICAucGFuZWwtdmFyaWFudChAcGFuZWwtZGVmYXVsdC1ib3JkZXI7IEBwYW5lbC1kZWZhdWx0LXRleHQ7IEBwYW5lbC1kZWZhdWx0LWhlYWRpbmctYmc7IEBwYW5lbC1kZWZhdWx0LWJvcmRlcik7Cn0KLnBhbmVsLXByaW1hcnkgewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC1wcmltYXJ5LWJvcmRlcjsgQHBhbmVsLXByaW1hcnktdGV4dDsgQHBhbmVsLXByaW1hcnktaGVhZGluZy1iZzsgQHBhbmVsLXByaW1hcnktYm9yZGVyKTsKfQoucGFuZWwtc3VjY2VzcyB7CiAgLnBhbmVsLXZhcmlhbnQoQHBhbmVsLXN1Y2Nlc3MtYm9yZGVyOyBAcGFuZWwtc3VjY2Vzcy10ZXh0OyBAcGFuZWwtc3VjY2Vzcy1oZWFkaW5nLWJnOyBAcGFuZWwtc3VjY2Vzcy1ib3JkZXIpOwp9Ci5wYW5lbC13YXJuaW5nIHsKICAucGFuZWwtdmFyaWFudChAcGFuZWwtd2FybmluZy1ib3JkZXI7IEBwYW5lbC13YXJuaW5nLXRleHQ7IEBwYW5lbC13YXJuaW5nLWhlYWRpbmctYmc7IEBwYW5lbC13YXJuaW5nLWJvcmRlcik7Cn0KLnBhbmVsLWRhbmdlciB7CiAgLnBhbmVsLXZhcmlhbnQoQHBhbmVsLWRhbmdlci1ib3JkZXI7IEBwYW5lbC1kYW5nZXItdGV4dDsgQHBhbmVsLWRhbmdlci1oZWFkaW5nLWJnOyBAcGFuZWwtZGFuZ2VyLWJvcmRlcik7Cn0KLnBhbmVsLWluZm8gewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC1pbmZvLWJvcmRlcjsgQHBhbmVsLWluZm8tdGV4dDsgQHBhbmVsLWluZm8taGVhZGluZy1iZzsgQHBhbmVsLWluZm8tYm9yZGVyKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/popovers.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUG9wb3ZlcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoucG9wb3ZlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IEB6aW5kZXgtcG9wb3ZlcjsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogQHBvcG92ZXItbWF4LXdpZHRoOwogIHBhZGRpbmc6IDFweDsKICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBSZXNldCBnaXZlbiBuZXcgaW5zZXJ0aW9uIG1ldGhvZAogIGJhY2tncm91bmQtY29sb3I6IEBwb3BvdmVyLWJnOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgQHBvcG92ZXItZmFsbGJhY2stYm9yZGVyLWNvbG9yOwogIGJvcmRlcjogMXB4IHNvbGlkIEBwb3BvdmVyLWJvcmRlci1jb2xvcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKICAuYm94LXNoYWRvdygwIDVweCAxMHB4IHJnYmEoMCwwLDAsLjIpKTsKCiAgLy8gT3ZlcnJpZGVzIGZvciBwcm9wZXIgaW5zZXJ0aW9uCiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKCiAgLy8gT2Zmc2V0IHRoZSBwb3BvdmVyIHRvIGFjY291bnQgZm9yIHRoZSBwb3BvdmVyIGFycm93CiAgJi50b3AgICAgIHsgbWFyZ2luLXRvcDogLTEwcHg7IH0KICAmLnJpZ2h0ICAgeyBtYXJnaW4tbGVmdDogMTBweDsgfQogICYuYm90dG9tICB7IG1hcmdpbi10b3A6IDEwcHg7IH0KICAmLmxlZnQgICAgeyBtYXJnaW4tbGVmdDogLTEwcHg7IH0KfQoKLnBvcG92ZXItdGl0bGUgewogIG1hcmdpbjogMDsgLy8gcmVzZXQgaGVhZGluZyBtYXJnaW4KICBwYWRkaW5nOiA4cHggMTRweDsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGJhY2tncm91bmQtY29sb3I6IEBwb3BvdmVyLXRpdGxlLWJnOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oQHBvcG92ZXItdGl0bGUtYmcsIDUlKTsKICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMDsKfQoKLnBvcG92ZXItY29udGVudCB7CiAgcGFkZGluZzogOXB4IDE0cHg7Cn0KCi8vIEFycm93cwovLwovLyAuYXJyb3cgaXMgb3V0ZXIsIC5hcnJvdzphZnRlciBpcyBpbm5lcgoKLnBvcG92ZXIgLmFycm93IHsKICAmLAogICY6YWZ0ZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogIH0KfQoucG9wb3ZlciAuYXJyb3cgewogIGJvcmRlci13aWR0aDogQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7Cn0KLnBvcG92ZXIgLmFycm93OmFmdGVyIHsKICBib3JkZXItd2lkdGg6IEBwb3BvdmVyLWFycm93LXdpZHRoOwogIGNvbnRlbnQ6ICIiOwp9CgoucG9wb3ZlciB7CiAgJi50b3AgLmFycm93IHsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLXRvcC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I7CiAgICBib3R0b206IC1AcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiICI7CiAgICAgIGJvdHRvbTogMXB4OwogICAgICBtYXJnaW4tbGVmdDogLUBwb3BvdmVyLWFycm93LXdpZHRoOwogICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogICAgICBib3JkZXItdG9wLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1jb2xvcjsKICAgIH0KICB9CiAgJi5yaWdodCAuYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBtYXJnaW4tdG9wOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItbGVmdC13aWR0aDogMDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiICI7CiAgICAgIGxlZnQ6IDFweDsKICAgICAgYm90dG9tOiAtQHBvcG92ZXItYXJyb3ctd2lkdGg7CiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogICAgICBib3JkZXItcmlnaHQtY29sb3I6IEBwb3BvdmVyLWFycm93LWNvbG9yOwogICAgfQogIH0KICAmLmJvdHRvbSAuYXJyb3cgewogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC1AcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDsKICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1mYWxsYmFjay1jb2xvcjsgLy8gSUU4IGZhbGxiYWNrCiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjsKICAgIHRvcDogLUBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOwogICAgJjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICIgIjsKICAgICAgdG9wOiAxcHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAtQHBvcG92ZXItYXJyb3ctd2lkdGg7CiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBwb3BvdmVyLWFycm93LWNvbG9yOwogICAgfQogIH0KCiAgJi5sZWZ0IC5hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBtYXJnaW4tdG9wOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7CiAgICBib3JkZXItbGVmdC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLWxlZnQtY29sb3I6IEBwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOwogICAgJjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICIgIjsKICAgICAgcmlnaHQ6IDFweDsKICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgICBib3JkZXItbGVmdC1jb2xvcjogQHBvcG92ZXItYXJyb3ctY29sb3I7CiAgICAgIGJvdHRvbTogLUBwb3BvdmVyLWFycm93LXdpZHRoOwogICAgfQogIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/print.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQmFzaWMgcHJpbnQgc3R5bGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvY3NzL21haW4uY3NzCgpAbWVkaWEgcHJpbnQgewoKICAqIHsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zCiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogIH0KCiAgYSwKICBhOnZpc2l0ZWQgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQoKICBhW2hyZWZdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgKCIgYXR0cihocmVmKSAiKSI7CiAgfQoKICBhYmJyW3RpdGxlXTphZnRlciB7CiAgICBjb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKICB9CgogIC8vIERvbid0IHNob3cgbGlua3MgZm9yIGltYWdlcywgb3IgamF2YXNjcmlwdC9pbnRlcm5hbCBsaW5rcwogIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIsCiAgYVtocmVmXj0iIyJdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogIH0KCiAgcHJlLAogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CgogIHRoZWFkIHsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgLy8gaDVicC5jb20vdAogIH0KCiAgdHIsCiAgaW1nIHsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CgogIGltZyB7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICB9CgogIEBwYWdlIHsKICAgIG1hcmdpbjogMmNtIC41Y207CiAgfQoKICBwLAogIGgyLAogIGgzIHsKICAgIG9ycGhhbnM6IDM7CiAgICB3aWRvd3M6IDM7CiAgfQoKICBoMiwKICBoMyB7CiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsKICB9CgogIC8vIENocm9tZSAoT1NYKSBmaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTEyNDUKICAvLyBPbmNlIGZpeGVkLCB3ZSBjYW4ganVzdCBzdHJhaWdodCB1cCByZW1vdmUgdGhpcy4KICBzZWxlY3QgewogICAgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50OwogIH0KCiAgLy8gQm9vdHN0cmFwIGNvbXBvbmVudHMKICAubmF2YmFyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQogIC50YWJsZSB7CiAgICB0ZCwKICAgIHRoIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogICAgfQogIH0KICAuYnRuLAogIC5kcm9wdXAgPiAuYnRuIHsKICAgID4gLmNhcmV0IHsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMCAhaW1wb3J0YW50OwogICAgfQogIH0KICAubGFiZWwgewogICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICB9CgogIC50YWJsZSB7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7CiAgfQogIC50YWJsZS1ib3JkZXJlZCB7CiAgICB0aCwKICAgIHRkIHsKICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZCAhaW1wb3J0YW50OwogICAgfQogIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/progress-bars.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUHJvZ3Jlc3MgYmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhciBhbmltYXRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFdlYktpdApALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOyB9CiAgdG8gICAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KfQoKLy8gU3BlYyBhbmQgSUUxMCsKQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MHB4IDA7IH0KICB0byAgICB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfQp9CgoKCi8vIEJhciBpdHNlbGYKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gT3V0ZXIgY29udGFpbmVyCi5wcm9ncmVzcyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBoZWlnaHQ6IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYmFja2dyb3VuZC1jb2xvcjogQHByb2dyZXNzLWJnOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpKTsKfQoKLy8gQmFyIG9mIHByb2dyZXNzCi5wcm9ncmVzcy1iYXIgewogIGZsb2F0OiBsZWZ0OwogIHdpZHRoOiAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgY29sb3I6IEBwcm9ncmVzcy1iYXItY29sb3I7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IEBwcm9ncmVzcy1iYXItYmc7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwuMTUpKTsKICAudHJhbnNpdGlvbih3aWR0aCAuNnMgZWFzZSk7Cn0KCi8vIFN0cmlwZWQgYmFycwoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyIHsKICAjZ3JhZGllbnQgPiAuc3RyaXBlZCgpOwogIGJhY2tncm91bmQtc2l6ZTogNDBweCA0MHB4Owp9CgovLyBDYWxsIGFuaW1hdGlvbiBmb3IgdGhlIGFjdGl2ZSBvbmUKLnByb2dyZXNzLmFjdGl2ZSAucHJvZ3Jlc3MtYmFyIHsKICAuYW5pbWF0aW9uKHByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZSk7Cn0KCgoKLy8gVmFyaWF0aW9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogIC5wcm9ncmVzcy1iYXItdmFyaWFudChAcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MtYmcpOwp9CgoucHJvZ3Jlc3MtYmFyLWluZm8gewogIC5wcm9ncmVzcy1iYXItdmFyaWFudChAcHJvZ3Jlc3MtYmFyLWluZm8tYmcpOwp9CgoucHJvZ3Jlc3MtYmFyLXdhcm5pbmcgewogIC5wcm9ncmVzcy1iYXItdmFyaWFudChAcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmcpOwp9CgoucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgLnByb2dyZXNzLWJhci12YXJpYW50KEBwcm9ncmVzcy1iYXItZGFuZ2VyLWJnKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/responsive-utilities.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUmVzcG9uc2l2ZTogVXRpbGl0eSBjbGFzc2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gSUUxMCBpbiBXaW5kb3dzIChQaG9uZSkgOAovLwovLyBTdXBwb3J0IGZvciByZXNwb25zaXZlIHZpZXdzIHZpYSBtZWRpYSBxdWVyaWVzIGlzIGtpbmQgb2YgYm9ya2VkIGluIElFMTAsIGZvcgovLyBTdXJmYWNlL2Rlc2t0b3AgaW4gc3BsaXQgdmlldyBhbmQgZm9yIFdpbmRvd3MgUGhvbmUgOC4gVGhpcyBwYXJ0aWN1bGFyIGZpeAovLyBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgc25pcHBldCBvZiBKYXZhU2NyaXB0IHRvIHNuaWZmIHRoZSB1c2VyIGFnZW50IGFuZAovLyBhcHBseSBzb21lIGNvbmRpdGlvbmFsIENTUyB0byAqb25seSogdGhlIFN1cmZhY2UvZGVza3RvcCBXaW5kb3dzIDguIExvb2sgYXQKLy8gb3VyIEdldHRpbmcgU3RhcnRlZCBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgYnVnLgovLwovLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBmb2xsb3dpbmc6Ci8vCi8vIElzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzEwNDk3Ci8vIERvY3M6IGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2dldHRpbmctc3RhcnRlZC8jYnJvd3NlcnMKLy8gU291cmNlOiBodHRwOi8vdGlta2FkbGVjLmNvbS8yMDEyLzEwL2llMTAtc25hcC1tb2RlLWFuZC1yZXNwb25zaXZlLWRlc2lnbi8KCkAtbXMtdmlld3BvcnQgewogIHdpZHRoOiBkZXZpY2Utd2lkdGg7Cn0KCgovLyBWaXNpYmlsaXR5IHV0aWxpdGllcwoKLnZpc2libGUteHMgewogIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KICAmLnZpc2libGUtc20gewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLnZpc2libGUtbWQgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLnZpc2libGUtbGcgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICAgIH0KICB9Cn0KLnZpc2libGUtc20gewogIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICYudmlzaWJsZS14cyB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KICAmLnZpc2libGUtbWQgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLnZpc2libGUtbGcgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICAgIH0KICB9Cn0KLnZpc2libGUtbWQgewogIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICYudmlzaWJsZS14cyB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLnZpc2libGUtc20gewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLW1kLW1heCkgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KICAmLnZpc2libGUtbGcgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICAgIH0KICB9Cn0KLnZpc2libGUtbGcgewogIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICYudmlzaWJsZS14cyB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLnZpc2libGUtc20gewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLnZpc2libGUtbWQgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICB9Cn0KCi5oaWRkZW4teHMgewogIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KICAmLmhpZGRlbi1zbSB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0KICB9CiAgJi5oaWRkZW4tbWQgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgICB9CiAgfQogICYuaGlkZGVuLWxnIHsKICAgIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLW1pbikgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0KICB9Cn0KLmhpZGRlbi1zbSB7CiAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICYuaGlkZGVuLXhzIHsKICAgIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0KICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KICAmLmhpZGRlbi1tZCB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLW1kLW1heCkgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0KICB9CiAgJi5oaWRkZW4tbGcgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICAgfQogIH0KfQouaGlkZGVuLW1kIHsKICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgJi5oaWRkZW4teHMgewogICAgQG1lZGlhIChtYXgtd2lkdGg6IEBzY3JlZW4teHMtbWF4KSB7CiAgICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLmhpZGRlbi1zbSB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0KICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KICAmLmhpZGRlbi1sZyB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgICB9CiAgfQp9Ci5oaWRkZW4tbGcgewogIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICAmLmhpZGRlbi14cyB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgICB9CiAgfQogICYuaGlkZGVuLXNtIHsKICAgIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tc20tbWF4KSB7CiAgICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLmhpZGRlbi1tZCB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLW1kLW1heCkgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0KICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICB9Cn0KCi8vIFByaW50IHV0aWxpdGllcwoudmlzaWJsZS1wcmludCB7CiAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7Cn0KCkBtZWRpYSBwcmludCB7CiAgLnZpc2libGUtcHJpbnQgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KICAuaGlkZGVuLXByaW50IHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/scaffolding.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gU2NhZmZvbGRpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBSZXNldCB0aGUgYm94LXNpemluZwoKKiwKKjpiZWZvcmUsCio6YWZ0ZXIgewogIC5ib3gtc2l6aW5nKGJvcmRlci1ib3gpOwp9CgoKLy8gQm9keSByZXNldAoKaHRtbCB7CiAgZm9udC1zaXplOiA2Mi41JTsKICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwwLDAsMCk7Cn0KCmJvZHkgewogIGZvbnQtZmFtaWx5OiBAZm9udC1mYW1pbHktYmFzZTsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgY29sb3I6IEB0ZXh0LWNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBib2R5LWJnOwp9CgovLyBSZXNldCBmb250cyBmb3IgcmVsZXZhbnQgZWxlbWVudHMKaW5wdXQsCmJ1dHRvbiwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CgoKLy8gTGlua3MKCmEgewogIGNvbG9yOiBAbGluay1jb2xvcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CgogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGxpbmstaG92ZXItY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB9CgogICY6Zm9jdXMgewogICAgLnRhYi1mb2N1cygpOwogIH0KfQoKCi8vIEltYWdlcwoKaW1nIHsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgovLyBSZXNwb25zaXZlIGltYWdlcyAoZW5zdXJlIGltYWdlcyBkb24ndCBzY2FsZSBiZXlvbmQgdGhlaXIgcGFyZW50cykKLmltZy1yZXNwb25zaXZlIHsKICAuaW1nLXJlc3BvbnNpdmUoKTsKfQoKLy8gUm91bmRlZCBjb3JuZXJzCi5pbWctcm91bmRlZCB7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtbGFyZ2U7Cn0KCi8vIEltYWdlIHRodW1ibmFpbHMKLy8KLy8gSGVhZHMgdXAhIFRoaXMgaXMgbWl4aW4tZWQgaW50byB0aHVtYm5haWxzLmxlc3MgZm9yIGAudGh1bWJuYWlsYC4KLmltZy10aHVtYm5haWwgewogIHBhZGRpbmc6IEB0aHVtYm5haWwtcGFkZGluZzsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgYmFja2dyb3VuZC1jb2xvcjogQHRodW1ibmFpbC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAdGh1bWJuYWlsLWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAdGh1bWJuYWlsLWJvcmRlci1yYWRpdXM7CiAgLnRyYW5zaXRpb24oYWxsIC4ycyBlYXNlLWluLW91dCk7CgogIC8vIEtlZXAgdGhlbSBhdCBtb3N0IDEwMCUgd2lkZQogIC5pbWctcmVzcG9uc2l2ZShpbmxpbmUtYmxvY2spOwp9CgovLyBQZXJmZWN0IGNpcmNsZQouaW1nLWNpcmNsZSB7CiAgYm9yZGVyLXJhZGl1czogNTAlOyAvLyBzZXQgcmFkaXVzIGluIHBlcmNlbnRzCn0KCgovLyBIb3Jpem9udGFsIHJ1bGVzCgpociB7CiAgbWFyZ2luLXRvcDogICAgQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBoci1ib3JkZXI7Cn0KCgovLyBPbmx5IGRpc3BsYXkgY29udGVudCB0byBzY3JlZW4gcmVhZGVycwovLwovLyBTZWU6IGh0dHA6Ly9hMTF5cHJvamVjdC5jb20vcG9zdHMvaG93LXRvLWhpZGUtY29udGVudC8KCi5zci1vbmx5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDFweDsKICBoZWlnaHQ6IDFweDsKICBtYXJnaW46IC0xcHg7CiAgcGFkZGluZzogMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGNsaXA6IHJlY3QoMCwwLDAsMCk7CiAgYm9yZGVyOiAwOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/tables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVGFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdGFibGUgewogIG1heC13aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAdGFibGUtYmc7Cn0KdGggewogIHRleHQtYWxpZ246IGxlZnQ7Cn0KCgovLyBCYXNlbGluZSBzdHlsZXMKCi50YWJsZSB7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIC8vIENlbGxzCiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIHBhZGRpbmc6IEB0YWJsZS1jZWxsLXBhZGRpbmc7CiAgICAgICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KICB9CiAgLy8gQm90dG9tIGFsaWduIGZvciBjb2x1bW4gaGVhZGluZ3MKICA+IHRoZWFkID4gdHIgPiB0aCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgfQogIC8vIFJlbW92ZSB0b3AgYm9yZGVyIGZyb20gdGhlYWQgYnkgZGVmYXVsdAogID4gY2FwdGlvbiArIHRoZWFkLAogID4gY29sZ3JvdXAgKyB0aGVhZCwKICA+IHRoZWFkOmZpcnN0LWNoaWxkIHsKICAgID4gdHI6Zmlyc3QtY2hpbGQgewogICAgICA+IHRoLAogICAgICA+IHRkIHsKICAgICAgICBib3JkZXItdG9wOiAwOwogICAgICB9CiAgICB9CiAgfQogIC8vIEFjY291bnQgZm9yIG11bHRpcGxlIHRib2R5IGluc3RhbmNlcwogID4gdGJvZHkgKyB0Ym9keSB7CiAgICBib3JkZXItdG9wOiAycHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKICB9CgogIC8vIE5lc3RpbmcKICAudGFibGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogQGJvZHktYmc7CiAgfQp9CgoKLy8gQ29uZGVuc2VkIHRhYmxlIHcvIGhhbGYgcGFkZGluZwoKLnRhYmxlLWNvbmRlbnNlZCB7CiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIHBhZGRpbmc6IEB0YWJsZS1jb25kZW5zZWQtY2VsbC1wYWRkaW5nOwogICAgICB9CiAgICB9CiAgfQp9CgoKLy8gQm9yZGVyZWQgdmVyc2lvbgovLwovLyBBZGQgYm9yZGVycyBhbGwgYXJvdW5kIHRoZSB0YWJsZSBhbmQgYmV0d2VlbiBhbGwgdGhlIGNvbHVtbnMuCgoudGFibGUtYm9yZGVyZWQgewogIGJvcmRlcjogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KICB9CiAgPiB0aGVhZCA+IHRyIHsKICAgID4gdGgsCiAgICA+IHRkIHsKICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4OwogICAgfQogIH0KfQoKCi8vIFplYnJhLXN0cmlwaW5nCi8vCi8vIERlZmF1bHQgemVicmEtc3RyaXBlIHN0eWxlcyAoYWx0ZXJuYXRpbmcgZ3JheSBhbmQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMpCgoudGFibGUtc3RyaXBlZCB7CiAgPiB0Ym9keSA+IHRyOm50aC1jaGlsZChvZGQpIHsKICAgID4gdGQsCiAgICA+IHRoIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHRhYmxlLWJnLWFjY2VudDsKICAgIH0KICB9Cn0KCgovLyBIb3ZlciBlZmZlY3QKLy8KLy8gUGxhY2VkIGhlcmUgc2luY2UgaXQgaGFzIHRvIGNvbWUgYWZ0ZXIgdGhlIHBvdGVudGlhbCB6ZWJyYSBzdHJpcGluZwoKLnRhYmxlLWhvdmVyIHsKICA+IHRib2R5ID4gdHI6aG92ZXIgewogICAgPiB0ZCwKICAgID4gdGggewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAdGFibGUtYmctaG92ZXI7CiAgICB9CiAgfQp9CgoKLy8gVGFibGUgY2VsbCBzaXppbmcKLy8KLy8gUmVzZXQgZGVmYXVsdCB0YWJsZSBiZWhhdmlvcgoKdGFibGUgY29sW2NsYXNzKj0iY29sLSJdIHsKICBwb3NpdGlvbjogc3RhdGljOyAvLyBQcmV2ZW50IGJvcmRlciBoaWRpbmcgaW4gRmlyZWZveCBhbmQgSUU5LzEwIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTYyMykKICBmbG9hdDogbm9uZTsKICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47Cn0KdGFibGUgewogIHRkLAogIHRoIHsKICAgICZbY2xhc3MqPSJjb2wtIl0gewogICAgICBmbG9hdDogbm9uZTsKICAgICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgIH0KICB9Cn0KCgovLyBUYWJsZSBiYWNrZ3JvdW5kcwovLwovLyBFeGFjdCBzZWxlY3RvcnMgYmVsb3cgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgYC50YWJsZS1zdHJpcGVkYCBhbmQgcHJldmVudAovLyBpbmhlcml0YW5jZSB0byBuZXN0ZWQgdGFibGVzLgoKLy8gR2VuZXJhdGUgdGhlIGNvbnRleHR1YWwgdmFyaWFudHMKLnRhYmxlLXJvdy12YXJpYW50KGFjdGl2ZTsgQHRhYmxlLWJnLWFjdGl2ZSk7Ci50YWJsZS1yb3ctdmFyaWFudChzdWNjZXNzOyBAc3RhdGUtc3VjY2Vzcy1iZyk7Ci50YWJsZS1yb3ctdmFyaWFudChkYW5nZXI7IEBzdGF0ZS1kYW5nZXItYmcpOwoudGFibGUtcm93LXZhcmlhbnQod2FybmluZzsgQHN0YXRlLXdhcm5pbmctYmcpOwoKCi8vIFJlc3BvbnNpdmUgdGFibGVzCi8vCi8vIFdyYXAgeW91ciB0YWJsZXMgaW4gYC50YWJsZS1yZXNwb25zaXZlYCBhbmQgd2UnbGwgbWFrZSB0aGVtIG1vYmlsZSBmcmllbmRseQovLyBieSBlbmFibGluZyBob3Jpem9udGFsIHNjcm9sbGluZy4gT25seSBhcHBsaWVzIDw3NjhweC4gRXZlcnl0aGluZyBhYm92ZSB0aGF0Ci8vIHdpbGwgZGlzcGxheSBub3JtYWxseS4KCkBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogIC50YWJsZS1yZXNwb25zaXZlIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAqIDAuNzUpOwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgb3ZlcmZsb3cteDogc2Nyb2xsOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7CiAgICBib3JkZXI6IDFweCBzb2xpZCBAdGFibGUtYm9yZGVyLWNvbG9yOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoKICAgIC8vIFRpZ2h0ZW4gdXAgc3BhY2luZwogICAgPiAudGFibGUgewogICAgICBtYXJnaW4tYm90dG9tOiAwOwoKICAgICAgLy8gRW5zdXJlIHRoZSBjb250ZW50IGRvZXNuJ3Qgd3JhcAogICAgICA+IHRoZWFkLAogICAgICA+IHRib2R5LAogICAgICA+IHRmb290IHsKICAgICAgICA+IHRyIHsKICAgICAgICAgID4gdGgsCiAgICAgICAgICA+IHRkIHsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBTcGVjaWFsIG92ZXJyaWRlcyBmb3IgdGhlIGJvcmRlcmVkIHRhYmxlcwogICAgPiAudGFibGUtYm9yZGVyZWQgewogICAgICBib3JkZXI6IDA7CgogICAgICAvLyBOdWtlIHRoZSBhcHByb3ByaWF0ZSBib3JkZXJzIHNvIHRoYXQgdGhlIHBhcmVudCBjYW4gaGFuZGxlIHRoZW0KICAgICAgPiB0aGVhZCwKICAgICAgPiB0Ym9keSwKICAgICAgPiB0Zm9vdCB7CiAgICAgICAgPiB0ciB7CiAgICAgICAgICA+IHRoOmZpcnN0LWNoaWxkLAogICAgICAgICAgPiB0ZDpmaXJzdC1jaGlsZCB7CiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAwOwogICAgICAgICAgfQogICAgICAgICAgPiB0aDpsYXN0LWNoaWxkLAogICAgICAgICAgPiB0ZDpsYXN0LWNoaWxkIHsKICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gT25seSBudWtlIHRoZSBsYXN0IHJvdydzIGJvdHRvbS1ib3JkZXIgaW4gYHRib2R5YCBhbmQgYHRmb290YCBzaW5jZQogICAgICAvLyBjaGFuY2VzIGFyZSB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIGB0cmAgaW4gYSBgdGhlYWRgIGFuZCB0aGF0IHdvdWxkCiAgICAgIC8vIHJlbW92ZSB0aGUgYm9yZGVyIGFsdG9nZXRoZXIuCiAgICAgID4gdGJvZHksCiAgICAgID4gdGZvb3QgewogICAgICAgID4gdHI6bGFzdC1jaGlsZCB7CiAgICAgICAgICA+IHRoLAogICAgICAgICAgPiB0ZCB7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgfQogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/thumbnails.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVGh1bWJuYWlscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIE1peGluIGFuZCBhZGp1c3QgdGhlIHJlZ3VsYXIgaW1hZ2UgY2xhc3MKLnRodW1ibmFpbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogQHRodW1ibmFpbC1wYWRkaW5nOwogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgYmFja2dyb3VuZC1jb2xvcjogQHRodW1ibmFpbC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAdGh1bWJuYWlsLWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAdGh1bWJuYWlsLWJvcmRlci1yYWRpdXM7CiAgLnRyYW5zaXRpb24oYWxsIC4ycyBlYXNlLWluLW91dCk7CgogID4gaW1nLAogIGEgPiBpbWcgewogICAgLmltZy1yZXNwb25zaXZlKCk7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICB9CgogIC8vIEFkZCBhIGhvdmVyIHN0YXRlIGZvciBsaW5rZWQgdmVyc2lvbnMgb25seQogIGEmOmhvdmVyLAogIGEmOmZvY3VzLAogIGEmLmFjdGl2ZSB7CiAgICBib3JkZXItY29sb3I6IEBsaW5rLWNvbG9yOwogIH0KCiAgLy8gSW1hZ2UgY2FwdGlvbnMKICAuY2FwdGlvbiB7CiAgICBwYWRkaW5nOiBAdGh1bWJuYWlsLWNhcHRpb24tcGFkZGluZzsKICAgIGNvbG9yOiBAdGh1bWJuYWlsLWNhcHRpb24tY29sb3I7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/tooltip.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVG9vbHRpcHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi50b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogQHppbmRleC10b29sdGlwOwogIGRpc3BsYXk6IGJsb2NrOwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgLm9wYWNpdHkoMCk7CgogICYuaW4gICAgIHsgLm9wYWNpdHkoLjkpOyB9CiAgJi50b3AgICAgeyBtYXJnaW4tdG9wOiAgLTNweDsgcGFkZGluZzogQHRvb2x0aXAtYXJyb3ctd2lkdGggMDsgfQogICYucmlnaHQgIHsgbWFyZ2luLWxlZnQ6ICAzcHg7IHBhZGRpbmc6IDAgQHRvb2x0aXAtYXJyb3ctd2lkdGg7IH0KICAmLmJvdHRvbSB7IG1hcmdpbi10b3A6ICAgM3B4OyBwYWRkaW5nOiBAdG9vbHRpcC1hcnJvdy13aWR0aCAwOyB9CiAgJi5sZWZ0ICAgeyBtYXJnaW4tbGVmdDogLTNweDsgcGFkZGluZzogMCBAdG9vbHRpcC1hcnJvdy13aWR0aDsgfQp9CgovLyBXcmFwcGVyIGZvciB0aGUgdG9vbHRpcCBjb250ZW50Ci50b29sdGlwLWlubmVyIHsKICBtYXgtd2lkdGg6IEB0b29sdGlwLW1heC13aWR0aDsKICBwYWRkaW5nOiAzcHggOHB4OwogIGNvbG9yOiBAdG9vbHRpcC1jb2xvcjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IEB0b29sdGlwLWJnOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7Cn0KCi8vIEFycm93cwoudG9vbHRpcC1hcnJvdyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1zdHlsZTogc29saWQ7Cn0KLnRvb2x0aXAgewogICYudG9wIC50b29sdGlwLWFycm93IHsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtQHRvb2x0aXAtYXJyb3ctd2lkdGg7CiAgICBib3JkZXItd2lkdGg6IEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoIDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiBAdG9vbHRpcC1hcnJvdy1jb2xvcjsKICB9CiAgJi50b3AtbGVmdCAudG9vbHRpcC1hcnJvdyB7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggMDsKICAgIGJvcmRlci10b3AtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLnRvcC1yaWdodCAudG9vbHRpcC1hcnJvdyB7CiAgICBib3R0b206IDA7CiAgICByaWdodDogQHRvb2x0aXAtYXJyb3ctd2lkdGg7CiAgICBib3JkZXItd2lkdGg6IEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoIDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiBAdG9vbHRpcC1hcnJvdy1jb2xvcjsKICB9CiAgJi5yaWdodCAudG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDA7CiAgICBtYXJnaW4tdG9wOiAtQHRvb2x0aXAtYXJyb3ctd2lkdGg7CiAgICBib3JkZXItd2lkdGg6IEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoIDA7CiAgICBib3JkZXItcmlnaHQtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLmxlZnQgLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICByaWdodDogMDsKICAgIG1hcmdpbi10b3A6IC1AdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggMCBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiBAdG9vbHRpcC1hcnJvdy1jb2xvcjsKICB9CiAgJi5ib3R0b20gLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC1AdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogMCBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLmJvdHRvbS1sZWZ0IC50b29sdGlwLWFycm93IHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiAwIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYuYm90dG9tLXJpZ2h0IC50b29sdGlwLWFycm93IHsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogMCBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/type.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVHlwb2dyYXBoeQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEhlYWRpbmdzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsCi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYgewogIGZvbnQtZmFtaWx5OiBAaGVhZGluZ3MtZm9udC1mYW1pbHk7CiAgZm9udC13ZWlnaHQ6IEBoZWFkaW5ncy1mb250LXdlaWdodDsKICBsaW5lLWhlaWdodDogQGhlYWRpbmdzLWxpbmUtaGVpZ2h0OwogIGNvbG9yOiBAaGVhZGluZ3MtY29sb3I7CgogIHNtYWxsLAogIC5zbWFsbCB7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogQGhlYWRpbmdzLXNtYWxsLWNvbG9yOwogIH0KfQoKaDEsCmgyLApoMyB7CiAgbWFyZ2luLXRvcDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIG1hcmdpbi1ib3R0b206IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLyAyKTsKCiAgc21hbGwsCiAgLnNtYWxsIHsKICAgIGZvbnQtc2l6ZTogNjUlOwogIH0KfQpoNCwKaDUsCmg2IHsKICBtYXJnaW4tdG9wOiAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7CiAgbWFyZ2luLWJvdHRvbTogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpOwoKICBzbWFsbCwKICAuc21hbGwgewogICAgZm9udC1zaXplOiA3NSU7CiAgfQp9CgpoMSwgLmgxIHsgZm9udC1zaXplOiBAZm9udC1zaXplLWgxOyB9CmgyLCAuaDIgeyBmb250LXNpemU6IEBmb250LXNpemUtaDI7IH0KaDMsIC5oMyB7IGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1oMzsgfQpoNCwgLmg0IHsgZm9udC1zaXplOiBAZm9udC1zaXplLWg0OyB9Cmg1LCAuaDUgeyBmb250LXNpemU6IEBmb250LXNpemUtaDU7IH0KaDYsIC5oNiB7IGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1oNjsgfQoKCi8vIEJvZHkgdGV4dAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpwIHsKICBtYXJnaW46IDAgMCAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7Cn0KCi5sZWFkIHsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgZm9udC1zaXplOiBmbG9vcihAZm9udC1zaXplLWJhc2UgKiAxLjE1KTsKICBmb250LXdlaWdodDogMjAwOwogIGxpbmUtaGVpZ2h0OiAxLjQ7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgZm9udC1zaXplOiAoQGZvbnQtc2l6ZS1iYXNlICogMS41KTsKICB9Cn0KCgovLyBFbXBoYXNpcyAmIG1pc2MKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gRXg6IDE0cHggYmFzZSBmb250ICogODUlID0gYWJvdXQgMTJweApzbWFsbCwKLnNtYWxsICB7IGZvbnQtc2l6ZTogODUlOyB9CgovLyBVbmRvIGJyb3dzZXIgZGVmYXVsdCBzdHlsaW5nCmNpdGUgICAgeyBmb250LXN0eWxlOiBub3JtYWw7IH0KCi8vIENvbnRleHR1YWwgZW1waGFzaXMKLnRleHQtbXV0ZWQgewogIGNvbG9yOiBAdGV4dC1tdXRlZDsKfQoudGV4dC1wcmltYXJ5IHsKICBjb2xvcjogQGJyYW5kLXByaW1hcnk7CiAgJjpob3ZlciB7CiAgICBjb2xvcjogZGFya2VuKEBicmFuZC1wcmltYXJ5LCAxMCUpOwogIH0KfQoudGV4dC13YXJuaW5nIHsKICBjb2xvcjogQHN0YXRlLXdhcm5pbmctdGV4dDsKICAmOmhvdmVyIHsKICAgIGNvbG9yOiBkYXJrZW4oQHN0YXRlLXdhcm5pbmctdGV4dCwgMTAlKTsKICB9Cn0KLnRleHQtZGFuZ2VyIHsKICBjb2xvcjogQHN0YXRlLWRhbmdlci10ZXh0OwogICY6aG92ZXIgewogICAgY29sb3I6IGRhcmtlbihAc3RhdGUtZGFuZ2VyLXRleHQsIDEwJSk7CiAgfQp9Ci50ZXh0LXN1Y2Nlc3MgewogIGNvbG9yOiBAc3RhdGUtc3VjY2Vzcy10ZXh0OwogICY6aG92ZXIgewogICAgY29sb3I6IGRhcmtlbihAc3RhdGUtc3VjY2Vzcy10ZXh0LCAxMCUpOwogIH0KfQoudGV4dC1pbmZvIHsKICBjb2xvcjogQHN0YXRlLWluZm8tdGV4dDsKICAmOmhvdmVyIHsKICAgIGNvbG9yOiBkYXJrZW4oQHN0YXRlLWluZm8tdGV4dCwgMTAlKTsKICB9Cn0KCi8vIEFsaWdubWVudAoudGV4dC1sZWZ0ICAgICAgICAgICB7IHRleHQtYWxpZ246IGxlZnQ7IH0KLnRleHQtcmlnaHQgICAgICAgICAgeyB0ZXh0LWFsaWduOiByaWdodDsgfQoudGV4dC1jZW50ZXIgICAgICAgICB7IHRleHQtYWxpZ246IGNlbnRlcjsgfQoKCi8vIFBhZ2UgaGVhZGVyCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5wYWdlLWhlYWRlciB7CiAgcGFkZGluZy1ib3R0b206ICgoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMikgLSAxKTsKICBtYXJnaW46IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgKiAyKSAwIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQHBhZ2UtaGVhZGVyLWJvcmRlci1jb2xvcjsKfQoKCi8vIExpc3RzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBVbm9yZGVyZWQgYW5kIE9yZGVyZWQgbGlzdHMKdWwsCm9sIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLyAyKTsKICB1bCwKICBvbCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KfQoKLy8gTGlzdCBvcHRpb25zCgovLyBVbnN0eWxlZCBrZWVwcyBsaXN0IGl0ZW1zIGJsb2NrIGxldmVsLCBqdXN0IHJlbW92ZXMgZGVmYXVsdCBicm93c2VyIHBhZGRpbmcgYW5kIGxpc3Qtc3R5bGUKLmxpc3QtdW5zdHlsZWQgewogIHBhZGRpbmctbGVmdDogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9CgovLyBJbmxpbmUgdHVybnMgbGlzdCBpdGVtcyBpbnRvIGlubGluZS1ibG9jawoubGlzdC1pbmxpbmUgewogIC5saXN0LXVuc3R5bGVkKCk7CgogID4gbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7CgogICAgJjpmaXJzdC1jaGlsZCB7CiAgICAgIHBhZGRpbmctbGVmdDogMDsKICAgIH0KICB9Cn0KCi8vIERlc2NyaXB0aW9uIExpc3RzCmRsIHsKICBtYXJnaW4tdG9wOiAwOyAvLyBSZW1vdmUgYnJvd3NlciBkZWZhdWx0CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwp9CmR0LApkZCB7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwp9CmR0IHsKICBmb250LXdlaWdodDogYm9sZDsKfQpkZCB7CiAgbWFyZ2luLWxlZnQ6IDA7IC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0Cn0KCi8vIEhvcml6b250YWwgZGVzY3JpcHRpb24gbGlzdHMKLy8KLy8gRGVmYXVsdHMgdG8gYmVpbmcgc3RhY2tlZCB3aXRob3V0IGFueSBvZiB0aGUgYmVsb3cgc3R5bGVzIGFwcGxpZWQsIHVudGlsIHRoZQovLyBncmlkIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCAoZGVmYXVsdCBvZiB+NzY4cHgpLgoKQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAuZGwtaG9yaXpvbnRhbCB7CiAgICBkdCB7CiAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB3aWR0aDogKEBjb21wb25lbnQtb2Zmc2V0LWhvcml6b250YWwgLSAyMCk7CiAgICAgIGNsZWFyOiBsZWZ0OwogICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgLnRleHQtb3ZlcmZsb3coKTsKICAgIH0KICAgIGRkIHsKICAgICAgbWFyZ2luLWxlZnQ6IEBjb21wb25lbnQtb2Zmc2V0LWhvcml6b250YWw7CiAgICAgIC5jbGVhcmZpeCgpOyAvLyBDbGVhciB0aGUgZmxvYXRlZCBgZHRgIGlmIGFuIGVtcHR5IGBkZGAgaXMgcHJlc2VudAogICAgfQogIH0KfQoKLy8gTUlTQwovLyAtLS0tCgovLyBBYmJyZXZpYXRpb25zIGFuZCBhY3JvbnltcwphYmJyW3RpdGxlXSwKLy8gQWRkIGRhdGEtKiBhdHRyaWJ1dGUgdG8gaGVscCBvdXQgb3VyIHRvb2x0aXAgcGx1Z2luLCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy81MjU3CmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0gewogIGN1cnNvcjogaGVscDsKICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIEBhYmJyLWJvcmRlci1jb2xvcjsKfQouaW5pdGlhbGlzbSB7CiAgZm9udC1zaXplOiA5MCU7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLy8gQmxvY2txdW90ZXMKYmxvY2txdW90ZSB7CiAgcGFkZGluZzogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBtYXJnaW46IDAgMCBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAYmxvY2txdW90ZS1ib3JkZXItY29sb3I7CiAgcCB7CiAgICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjI1KTsKICAgIGZvbnQtd2VpZ2h0OiAzMDA7CiAgICBsaW5lLWhlaWdodDogMS4yNTsKICB9CiAgcDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIHNtYWxsLAogIC5zbWFsbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICAgIGNvbG9yOiBAYmxvY2txdW90ZS1zbWFsbC1jb2xvcjsKICAgICY6YmVmb3JlIHsKICAgICAgY29udGVudDogJ1wyMDE0IFwwMEEwJzsgLy8gRU0gREFTSCwgTkJTUAogICAgfQogIH0KCiAgLy8gRmxvYXQgcmlnaHQgd2l0aCB0ZXh0LWFsaWduOiByaWdodAogICYucHVsbC1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgQGJsb2NrcXVvdGUtYm9yZGVyLWNvbG9yOwogICAgYm9yZGVyLWxlZnQ6IDA7CiAgICBwLAogICAgc21hbGwsCiAgICAuc21hbGwgewogICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIH0KICAgIHNtYWxsLAogICAgLnNtYWxsIHsKICAgICAgJjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICB9CiAgICAgICY6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICdcMDBBMCBcMjAxNCc7IC8vIE5CU1AsIEVNIERBU0gKICAgICAgfQogICAgfQogIH0KfQoKLy8gUXVvdGVzCmJsb2NrcXVvdGU6YmVmb3JlLApibG9ja3F1b3RlOmFmdGVyIHsKICBjb250ZW50OiAiIjsKfQoKLy8gQWRkcmVzc2VzCmFkZHJlc3MgewogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/utilities.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVXRpbGl0eSBjbGFzc2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gRmxvYXRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5jbGVhcmZpeCB7CiAgLmNsZWFyZml4KCk7Cn0KLmNlbnRlci1ibG9jayB7CiAgLmNlbnRlci1ibG9jaygpOwp9Ci5wdWxsLXJpZ2h0IHsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQoucHVsbC1sZWZ0IHsKICBmbG9hdDogbGVmdCAhaW1wb3J0YW50Owp9CgoKLy8gVG9nZ2xpbmcgY29udGVudAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBOb3RlOiBEZXByZWNhdGVkIC5oaWRlIGluIGZhdm9yIG9mIC5oaWRkZW4gb3IgLnNyLW9ubHkgKGFzIGFwcHJvcHJpYXRlKSBpbiB2My4wLjEKLmhpZGUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQouc2hvdyB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQouaW52aXNpYmxlIHsKICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KLnRleHQtaGlkZSB7CiAgLnRleHQtaGlkZSgpOwp9CgoKLy8gSGlkZSBmcm9tIHNjcmVlbnJlYWRlcnMgYW5kIGJyb3dzZXJzCi8vCi8vIENyZWRpdDogSFRNTDUgQm9pbGVycGxhdGUKCi5oaWRkZW4gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQoKCi8vIEZvciBBZmZpeCBwbHVnaW4KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmFmZml4IHsKICBwb3NpdGlvbjogZml4ZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/variables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVmFyaWFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gR2xvYmFsIHZhbHVlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gR3JheXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGdyYXktZGFya2VyOiAgICAgICAgICAgIGxpZ2h0ZW4oIzAwMCwgMTMuNSUpOyAvLyAjMjIyCkBncmF5LWRhcms6ICAgICAgICAgICAgICBsaWdodGVuKCMwMDAsIDIwJSk7ICAgLy8gIzMzMwpAZ3JheTogICAgICAgICAgICAgICAgICAgbGlnaHRlbigjMDAwLCAzMy41JSk7IC8vICM1NTUKQGdyYXktbGlnaHQ6ICAgICAgICAgICAgIGxpZ2h0ZW4oIzAwMCwgNjAlKTsgICAvLyAjOTk5CkBncmF5LWxpZ2h0ZXI6ICAgICAgICAgICBsaWdodGVuKCMwMDAsIDkzLjUlKTsgLy8gI2VlZQoKLy8gQnJhbmQgY29sb3JzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBicmFuZC1wcmltYXJ5OiAgICAgICAgICM0MjhiY2E7CkBicmFuZC1zdWNjZXNzOiAgICAgICAgICM1Y2I4NWM7CkBicmFuZC13YXJuaW5nOiAgICAgICAgICNmMGFkNGU7CkBicmFuZC1kYW5nZXI6ICAgICAgICAgICNkOTUzNGY7CkBicmFuZC1pbmZvOiAgICAgICAgICAgICM1YmMwZGU7CgovLyBTY2FmZm9sZGluZwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAYm9keS1iZzogICAgICAgICAgICAgICAjZmZmOwpAdGV4dC1jb2xvcjogICAgICAgICAgICBAZ3JheS1kYXJrOwoKLy8gTGlua3MKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGxpbmstY29sb3I6ICAgICAgICAgICAgQGJyYW5kLXByaW1hcnk7CkBsaW5rLWhvdmVyLWNvbG9yOiAgICAgIGRhcmtlbihAbGluay1jb2xvciwgMTUlKTsKCi8vIFR5cG9ncmFwaHkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwpAZm9udC1mYW1pbHktc2VyaWY6ICAgICAgIEdlb3JnaWEsICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CkBmb250LWZhbWlseS1tb25vc3BhY2U6ICAgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKQGZvbnQtZmFtaWx5LWJhc2U6ICAgICAgICBAZm9udC1mYW1pbHktc2Fucy1zZXJpZjsKCkBmb250LXNpemUtYmFzZTogICAgICAgICAgMTRweDsKQGZvbnQtc2l6ZS1sYXJnZTogICAgICAgICBjZWlsKEBmb250LXNpemUtYmFzZSAqIDEuMjUpOyAvLyB+MThweApAZm9udC1zaXplLXNtYWxsOiAgICAgICAgIGNlaWwoQGZvbnQtc2l6ZS1iYXNlICogMC44NSk7IC8vIH4xMnB4CgpAZm9udC1zaXplLWgxOiAgICAgICAgICAgIGZsb29yKEBmb250LXNpemUtYmFzZSAqIDIuNik7IC8vIH4zNnB4CkBmb250LXNpemUtaDI6ICAgICAgICAgICAgZmxvb3IoQGZvbnQtc2l6ZS1iYXNlICogMi4xNSk7IC8vIH4zMHB4CkBmb250LXNpemUtaDM6ICAgICAgICAgICAgY2VpbChAZm9udC1zaXplLWJhc2UgKiAxLjcpOyAvLyB+MjRweApAZm9udC1zaXplLWg0OiAgICAgICAgICAgIGNlaWwoQGZvbnQtc2l6ZS1iYXNlICogMS4yNSk7IC8vIH4xOHB4CkBmb250LXNpemUtaDU6ICAgICAgICAgICAgQGZvbnQtc2l6ZS1iYXNlOwpAZm9udC1zaXplLWg2OiAgICAgICAgICAgIGNlaWwoQGZvbnQtc2l6ZS1iYXNlICogMC44NSk7IC8vIH4xMnB4CgpAbGluZS1oZWlnaHQtYmFzZTogICAgICAgIDEuNDI4NTcxNDI5OyAvLyAyMC8xNApAbGluZS1oZWlnaHQtY29tcHV0ZWQ6ICAgIGZsb29yKEBmb250LXNpemUtYmFzZSAqIEBsaW5lLWhlaWdodC1iYXNlKTsgLy8gfjIwcHgKCkBoZWFkaW5ncy1mb250LWZhbWlseTogICAgQGZvbnQtZmFtaWx5LWJhc2U7CkBoZWFkaW5ncy1mb250LXdlaWdodDogICAgNTAwOwpAaGVhZGluZ3MtbGluZS1oZWlnaHQ6ICAgIDEuMTsKQGhlYWRpbmdzLWNvbG9yOiAgICAgICAgICBpbmhlcml0OwoKCi8vIEljb25vZ3JhcGh5Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBpY29uLWZvbnQtcGF0aDogICAgICAgICAgIi4uL2ZvbnRzLyI7CkBpY29uLWZvbnQtbmFtZTogICAgICAgICAgImdseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIiOwoKCi8vIENvbXBvbmVudHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBCYXNlZCBvbiAxNHB4IGZvbnQtc2l6ZSBhbmQgMS40MjggbGluZS1oZWlnaHQgKH4yMHB4IHRvIHN0YXJ0KQoKQHBhZGRpbmctYmFzZS12ZXJ0aWNhbDogICAgICAgICAgNnB4OwpAcGFkZGluZy1iYXNlLWhvcml6b250YWw6ICAgICAgICAxMnB4OwoKQHBhZGRpbmctbGFyZ2UtdmVydGljYWw6ICAgICAgICAgMTBweDsKQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDogICAgICAgMTZweDsKCkBwYWRkaW5nLXNtYWxsLXZlcnRpY2FsOiAgICAgICAgIDVweDsKQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDogICAgICAgMTBweDsKCkBwYWRkaW5nLXhzLXZlcnRpY2FsOiAgICAgICAgICAgIDFweDsKQHBhZGRpbmcteHMtaG9yaXpvbnRhbDogICAgICAgICAgNXB4OwoKQGxpbmUtaGVpZ2h0LWxhcmdlOiAgICAgICAgICAgICAgMS4zMzsKQGxpbmUtaGVpZ2h0LXNtYWxsOiAgICAgICAgICAgICAgMS41OwoKQGJvcmRlci1yYWRpdXMtYmFzZTogICAgICAgICAgICAgNHB4OwpAYm9yZGVyLXJhZGl1cy1sYXJnZTogICAgICAgICAgICA2cHg7CkBib3JkZXItcmFkaXVzLXNtYWxsOiAgICAgICAgICAgIDNweDsKCkBjb21wb25lbnQtYWN0aXZlLWNvbG9yOiAgICAgICAgICNmZmY7CkBjb21wb25lbnQtYWN0aXZlLWJnOiAgICAgICAgICAgIEBicmFuZC1wcmltYXJ5OwoKQGNhcmV0LXdpZHRoLWJhc2U6ICAgICAgICAgICAgICAgNHB4OwpAY2FyZXQtd2lkdGgtbGFyZ2U6ICAgICAgICAgICAgICA1cHg7CgovLyBUYWJsZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQHRhYmxlLWNlbGwtcGFkZGluZzogICAgICAgICAgICAgICAgIDhweDsKQHRhYmxlLWNvbmRlbnNlZC1jZWxsLXBhZGRpbmc6ICAgICAgIDVweDsKCkB0YWJsZS1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BhcmVudDsgLy8gb3ZlcmFsbCBiYWNrZ3JvdW5kLWNvbG9yCkB0YWJsZS1iZy1hY2NlbnQ6ICAgICAgICAgICAgICAgICAgICAjZjlmOWY5OyAvLyBmb3Igc3RyaXBpbmcKQHRhYmxlLWJnLWhvdmVyOiAgICAgICAgICAgICAgICAgICAgICNmNWY1ZjU7CkB0YWJsZS1iZy1hY3RpdmU6ICAgICAgICAgICAgICAgICAgICBAdGFibGUtYmctaG92ZXI7CgpAdGFibGUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgI2RkZDsgLy8gdGFibGUgYW5kIGNlbGwgYm9yZGVyCgoKLy8gQnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAYnRuLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICBub3JtYWw7CgpAYnRuLWRlZmF1bHQtY29sb3I6ICAgICAgICAgICAgICAjMzMzOwpAYnRuLWRlZmF1bHQtYmc6ICAgICAgICAgICAgICAgICAjZmZmOwpAYnRuLWRlZmF1bHQtYm9yZGVyOiAgICAgICAgICAgICAjY2NjOwoKQGJ0bi1wcmltYXJ5LWNvbG9yOiAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi1wcmltYXJ5LWJnOiAgICAgICAgICAgICAgICAgQGJyYW5kLXByaW1hcnk7CkBidG4tcHJpbWFyeS1ib3JkZXI6ICAgICAgICAgICAgIGRhcmtlbihAYnRuLXByaW1hcnktYmcsIDUlKTsKCkBidG4tc3VjY2Vzcy1jb2xvcjogICAgICAgICAgICAgICNmZmY7CkBidG4tc3VjY2Vzcy1iZzogICAgICAgICAgICAgICAgIEBicmFuZC1zdWNjZXNzOwpAYnRuLXN1Y2Nlc3MtYm9yZGVyOiAgICAgICAgICAgICBkYXJrZW4oQGJ0bi1zdWNjZXNzLWJnLCA1JSk7CgpAYnRuLXdhcm5pbmctY29sb3I6ICAgICAgICAgICAgICAjZmZmOwpAYnRuLXdhcm5pbmctYmc6ICAgICAgICAgICAgICAgICBAYnJhbmQtd2FybmluZzsKQGJ0bi13YXJuaW5nLWJvcmRlcjogICAgICAgICAgICAgZGFya2VuKEBidG4td2FybmluZy1iZywgNSUpOwoKQGJ0bi1kYW5nZXItY29sb3I6ICAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi1kYW5nZXItYmc6ICAgICAgICAgICAgICAgICAgQGJyYW5kLWRhbmdlcjsKQGJ0bi1kYW5nZXItYm9yZGVyOiAgICAgICAgICAgICAgZGFya2VuKEBidG4tZGFuZ2VyLWJnLCA1JSk7CgpAYnRuLWluZm8tY29sb3I6ICAgICAgICAgICAgICAgICAjZmZmOwpAYnRuLWluZm8tYmc6ICAgICAgICAgICAgICAgICAgICBAYnJhbmQtaW5mbzsKQGJ0bi1pbmZvLWJvcmRlcjogICAgICAgICAgICAgICAgZGFya2VuKEBidG4taW5mby1iZywgNSUpOwoKQGJ0bi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgQGdyYXktbGlnaHQ7CgoKLy8gRm9ybXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQGlucHV0LWJnLWRpc2FibGVkOiAgICAgICAgICAgICAgQGdyYXktbGlnaHRlcjsKCkBpbnB1dC1jb2xvcjogICAgICAgICAgICAgICAgICAgIEBncmF5OwpAaW5wdXQtYm9yZGVyOiAgICAgICAgICAgICAgICAgICAjY2NjOwpAaW5wdXQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwpAaW5wdXQtYm9yZGVyLWZvY3VzOiAgICAgICAgICAgICAjNjZhZmU5OwoKQGlucHV0LWNvbG9yLXBsYWNlaG9sZGVyOiAgICAgICAgQGdyYXktbGlnaHQ7CgpAaW5wdXQtaGVpZ2h0LWJhc2U6ICAgICAgICAgICAgICAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkICsgKEBwYWRkaW5nLWJhc2UtdmVydGljYWwgKiAyKSArIDIpOwpAaW5wdXQtaGVpZ2h0LWxhcmdlOiAgICAgICAgICAgICAoY2VpbChAZm9udC1zaXplLWxhcmdlICogQGxpbmUtaGVpZ2h0LWxhcmdlKSArIChAcGFkZGluZy1sYXJnZS12ZXJ0aWNhbCAqIDIpICsgMik7CkBpbnB1dC1oZWlnaHQtc21hbGw6ICAgICAgICAgICAgIChmbG9vcihAZm9udC1zaXplLXNtYWxsICogQGxpbmUtaGVpZ2h0LXNtYWxsKSArIChAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbCAqIDIpICsgMik7CgpAbGVnZW5kLWNvbG9yOiAgICAgICAgICAgICAgICAgICBAZ3JheS1kYXJrOwpAbGVnZW5kLWJvcmRlci1jb2xvcjogICAgICAgICAgICAjZTVlNWU1OwoKQGlucHV0LWdyb3VwLWFkZG9uLWJnOiAgICAgICAgICAgQGdyYXktbGlnaHRlcjsKQGlucHV0LWdyb3VwLWFkZG9uLWJvcmRlci1jb2xvcjogQGlucHV0LWJvcmRlcjsKCgovLyBEcm9wZG93bnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGRyb3Bkb3duLWJnOiAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQGRyb3Bkb3duLWJvcmRlcjogICAgICAgICAgICAgICAgcmdiYSgwLDAsMCwuMTUpOwpAZHJvcGRvd24tZmFsbGJhY2stYm9yZGVyOiAgICAgICAjY2NjOwpAZHJvcGRvd24tZGl2aWRlci1iZzogICAgICAgICAgICAjZTVlNWU1OwoKQGRyb3Bkb3duLWxpbmstY29sb3I6ICAgICAgICAgICAgQGdyYXktZGFyazsKQGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6ICAgICAgZGFya2VuKEBncmF5LWRhcmssIDUlKTsKQGRyb3Bkb3duLWxpbmstaG92ZXItYmc6ICAgICAgICAgI2Y1ZjVmNTsKCkBkcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvcjogICAgIEBjb21wb25lbnQtYWN0aXZlLWNvbG9yOwpAZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICAgICAgICBAY29tcG9uZW50LWFjdGl2ZS1iZzsKCkBkcm9wZG93bi1saW5rLWRpc2FibGVkLWNvbG9yOiAgIEBncmF5LWxpZ2h0OwoKQGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgQGdyYXktbGlnaHQ7CgoKLy8gQ09NUE9ORU5UIFZBUklBQkxFUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIFotaW5kZXggbWFzdGVyIGxpc3QKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBVc2VkIGZvciBhIGJpcmQncyBleWUgdmlldyBvZiBjb21wb25lbnRzIGRlcGVuZGVudCBvbiB0aGUgei1heGlzCi8vIFRyeSB0byBhdm9pZCBjdXN0b21pemluZyB0aGVzZSA6KQoKQHppbmRleC1uYXZiYXI6ICAgICAgICAgICAgMTAwMDsKQHppbmRleC1kcm9wZG93bjogICAgICAgICAgMTAwMDsKQHppbmRleC1wb3BvdmVyOiAgICAgICAgICAgMTAxMDsKQHppbmRleC10b29sdGlwOiAgICAgICAgICAgMTAzMDsKQHppbmRleC1uYXZiYXItZml4ZWQ6ICAgICAgMTAzMDsKQHppbmRleC1tb2RhbC1iYWNrZ3JvdW5kOiAgMTA0MDsKQHppbmRleC1tb2RhbDogICAgICAgICAgICAgMTA1MDsKCi8vIE1lZGlhIHF1ZXJpZXMgYnJlYWtwb2ludHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEV4dHJhIHNtYWxsIHNjcmVlbiAvIHBob25lCi8vIE5vdGU6IERlcHJlY2F0ZWQgQHNjcmVlbi14cyBhbmQgQHNjcmVlbi1waG9uZSBhcyBvZiB2My4wLjEKQHNjcmVlbi14czogICAgICAgICAgICAgICAgICA0ODBweDsKQHNjcmVlbi14cy1taW46ICAgICAgICAgICAgICBAc2NyZWVuLXhzOwpAc2NyZWVuLXBob25lOiAgICAgICAgICAgICAgIEBzY3JlZW4teHMtbWluOwoKLy8gU21hbGwgc2NyZWVuIC8gdGFibGV0Ci8vIE5vdGU6IERlcHJlY2F0ZWQgQHNjcmVlbi1zbSBhbmQgQHNjcmVlbi10YWJsZXQgYXMgb2YgdjMuMC4xCkBzY3JlZW4tc206ICAgICAgICAgICAgICAgICAgNzY4cHg7CkBzY3JlZW4tc20tbWluOiAgICAgICAgICAgICAgQHNjcmVlbi1zbTsKQHNjcmVlbi10YWJsZXQ6ICAgICAgICAgICAgICBAc2NyZWVuLXNtLW1pbjsKCi8vIE1lZGl1bSBzY3JlZW4gLyBkZXNrdG9wCi8vIE5vdGU6IERlcHJlY2F0ZWQgQHNjcmVlbi1tZCBhbmQgQHNjcmVlbi1kZXNrdG9wIGFzIG9mIHYzLjAuMQpAc2NyZWVuLW1kOiAgICAgICAgICAgICAgICAgIDk5MnB4OwpAc2NyZWVuLW1kLW1pbjogICAgICAgICAgICAgIEBzY3JlZW4tbWQ7CkBzY3JlZW4tZGVza3RvcDogICAgICAgICAgICAgQHNjcmVlbi1tZC1taW47CgovLyBMYXJnZSBzY3JlZW4gLyB3aWRlIGRlc2t0b3AKLy8gTm90ZTogRGVwcmVjYXRlZCBAc2NyZWVuLWxnIGFuZCBAc2NyZWVuLWxnLWRlc2t0b3AgYXMgb2YgdjMuMC4xCkBzY3JlZW4tbGc6ICAgICAgICAgICAgICAgICAgMTIwMHB4OwpAc2NyZWVuLWxnLW1pbjogICAgICAgICAgICAgIEBzY3JlZW4tbGc7CkBzY3JlZW4tbGctZGVza3RvcDogICAgICAgICAgQHNjcmVlbi1sZy1taW47CgovLyBTbyBtZWRpYSBxdWVyaWVzIGRvbid0IG92ZXJsYXAgd2hlbiByZXF1aXJlZCwgcHJvdmlkZSBhIG1heGltdW0KQHNjcmVlbi14cy1tYXg6ICAgICAgICAgICAgICAoQHNjcmVlbi1zbS1taW4gLSAxKTsKQHNjcmVlbi1zbS1tYXg6ICAgICAgICAgICAgICAoQHNjcmVlbi1tZC1taW4gLSAxKTsKQHNjcmVlbi1tZC1tYXg6ICAgICAgICAgICAgICAoQHNjcmVlbi1sZy1taW4gLSAxKTsKCgovLyBHcmlkIHN5c3RlbQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gTnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQgc3lzdGVtCkBncmlkLWNvbHVtbnM6ICAgICAgICAgICAgICAxMjsKLy8gUGFkZGluZywgdG8gYmUgZGl2aWRlZCBieSB0d28gYW5kIGFwcGxpZWQgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0IG9mIGFsbCBjb2x1bW5zCkBncmlkLWd1dHRlci13aWR0aDogICAgICAgICAzMHB4OwoKLy8gTmF2YmFyIGNvbGxhcHNlCgovLyBQb2ludCBhdCB3aGljaCB0aGUgbmF2YmFyIGJlY29tZXMgdW5jb2xsYXBzZWQKQGdyaWQtZmxvYXQtYnJlYWtwb2ludDogICAgIEBzY3JlZW4tc20tbWluOwovLyBQb2ludCBhdCB3aGljaCB0aGUgbmF2YmFyIGJlZ2lucyBjb2xsYXBzaW5nCkBncmlkLWZsb2F0LWJyZWFrcG9pbnQtbWF4OiAoQGdyaWQtZmxvYXQtYnJlYWtwb2ludCAtIDEpOwoKCi8vIE5hdmJhcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBCYXNpY3Mgb2YgYSBuYXZiYXIKQG5hdmJhci1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICA1MHB4OwpAbmF2YmFyLW1hcmdpbi1ib3R0b206ICAgICAgICAgICAgIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKQG5hdmJhci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwpAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDogICAgICAgIGZsb29yKEBncmlkLWd1dHRlci13aWR0aCAvIDIpOwpAbmF2YmFyLXBhZGRpbmctdmVydGljYWw6ICAgICAgICAgICgoQG5hdmJhci1oZWlnaHQgLSBAbGluZS1oZWlnaHQtY29tcHV0ZWQpIC8gMik7CgpAbmF2YmFyLWRlZmF1bHQtY29sb3I6ICAgICAgICAgICAgICM3Nzc7CkBuYXZiYXItZGVmYXVsdC1iZzogICAgICAgICAgICAgICAgI2Y4ZjhmODsKQG5hdmJhci1kZWZhdWx0LWJvcmRlcjogICAgICAgICAgICBkYXJrZW4oQG5hdmJhci1kZWZhdWx0LWJnLCA2LjUlKTsKCi8vIE5hdmJhciBsaW5rcwpAbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogICAgICAgICAgICAgICAgIzc3NzsKQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICMzMzM7CkBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICB0cmFuc3BhcmVudDsKQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgICM1NTU7CkBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICBkYXJrZW4oQG5hdmJhci1kZWZhdWx0LWJnLCA2LjUlKTsKQG5hdmJhci1kZWZhdWx0LWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgICNjY2M7CkBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWJnOiAgICAgICAgICB0cmFuc3BhcmVudDsKCi8vIE5hdmJhciBicmFuZCBsYWJlbApAbmF2YmFyLWRlZmF1bHQtYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CkBuYXZiYXItZGVmYXVsdC1icmFuZC1ob3Zlci1jb2xvcjogICAgICAgICBkYXJrZW4oQG5hdmJhci1kZWZhdWx0LWJyYW5kLWNvbG9yLCAxMCUpOwpAbmF2YmFyLWRlZmF1bHQtYnJhbmQtaG92ZXItYmc6ICAgICAgICAgICAgdHJhbnNwYXJlbnQ7CgovLyBOYXZiYXIgdG9nZ2xlCkBuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6ICAgICAgICAgICAjZGRkOwpAbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiAgICAgICAgI2NjYzsKQG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6ICAgICAgICNkZGQ7CgoKLy8gSW52ZXJ0ZWQgbmF2YmFyCi8vCi8vIFJlc2V0IGludmVydGVkIG5hdmJhciBiYXNpY3MKQG5hdmJhci1pbnZlcnNlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodDsKQG5hdmJhci1pbnZlcnNlLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAjMjIyOwpAbmF2YmFyLWludmVyc2UtYm9yZGVyOiAgICAgICAgICAgICAgICAgICAgIGRhcmtlbihAbmF2YmFyLWludmVyc2UtYmcsIDEwJSk7CgovLyBJbnZlcnRlZCBuYXZiYXIgbGlua3MKQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I6ICAgICAgICAgICAgICAgICBAZ3JheS1saWdodDsKQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAjZmZmOwpAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1iZzogICAgICAgICAgICAgIHRyYW5zcGFyZW50OwpAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAgIEBuYXZiYXItaW52ZXJzZS1saW5rLWhvdmVyLWNvbG9yOwpAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAgIGRhcmtlbihAbmF2YmFyLWludmVyc2UtYmcsIDEwJSk7CkBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgIzQ0NDsKQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtYmc6ICAgICAgICAgICB0cmFuc3BhcmVudDsKCi8vIEludmVydGVkIG5hdmJhciBicmFuZCBsYWJlbApAbmF2YmFyLWludmVyc2UtYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgIEBuYXZiYXItaW52ZXJzZS1saW5rLWNvbG9yOwpAbmF2YmFyLWludmVyc2UtYnJhbmQtaG92ZXItY29sb3I6ICAgICAgICAgICNmZmY7CkBuYXZiYXItaW52ZXJzZS1icmFuZC1ob3Zlci1iZzogICAgICAgICAgICAgdHJhbnNwYXJlbnQ7CgovLyBJbnZlcnRlZCBuYXZiYXIgdG9nZ2xlCkBuYXZiYXItaW52ZXJzZS10b2dnbGUtaG92ZXItYmc6ICAgICAgICAgICAgIzMzMzsKQG5hdmJhci1pbnZlcnNlLXRvZ2dsZS1pY29uLWJhci1iZzogICAgICAgICAjZmZmOwpAbmF2YmFyLWludmVyc2UtdG9nZ2xlLWJvcmRlci1jb2xvcjogICAgICAgICMzMzM7CgoKLy8gTmF2cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAbmF2LWxpbmstcGFkZGluZzogICAgICAgICAgICAgICAgICAgICAgICAgIDEwcHggMTVweDsKQG5hdi1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodGVyOwoKQG5hdi1kaXNhYmxlZC1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodDsKQG5hdi1kaXNhYmxlZC1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICBAZ3JheS1saWdodDsKCkBuYXYtb3Blbi1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAgICAgI2ZmZjsKCi8vIFRhYnMKQG5hdi10YWJzLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICAjZGRkOwoKQG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICBAZ3JheS1saWdodGVyOwoKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICBAYm9keS1iZzsKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICBAZ3JheTsKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogICAjZGRkOwoKQG5hdi10YWJzLWp1c3RpZmllZC1saW5rLWJvcmRlci1jb2xvcjogICAgICAgICAgICAjZGRkOwpAbmF2LXRhYnMtanVzdGlmaWVkLWFjdGl2ZS1saW5rLWJvcmRlci1jb2xvcjogICAgIEBib2R5LWJnOwoKLy8gUGlsbHMKQG5hdi1waWxscy1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwpAbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgIEBjb21wb25lbnQtYWN0aXZlLWJnOwpAbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgIEBjb21wb25lbnQtYWN0aXZlLWNvbG9yOwoKCi8vIFBhZ2luYXRpb24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQHBhZ2luYXRpb24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQHBhZ2luYXRpb24tYm9yZGVyOiAgICAgICAgICAgICAgICAgICAgI2RkZDsKCkBwYWdpbmF0aW9uLWhvdmVyLWJnOiAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7CgpAcGFnaW5hdGlvbi1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKQHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiAgICAgICAgICAgICAgI2ZmZjsKCkBwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgIEBncmF5LWxpZ2h0OwoKCi8vIFBhZ2VyCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBwYWdlci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgIDE1cHg7CkBwYWdlci1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwoKCi8vIEp1bWJvdHJvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAanVtYm90cm9uLXBhZGRpbmc6ICAgICAgICAgICAgICAzMHB4OwpAanVtYm90cm9uLWNvbG9yOiAgICAgICAgICAgICAgICBpbmhlcml0OwpAanVtYm90cm9uLWJnOiAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodGVyOwpAanVtYm90cm9uLWhlYWRpbmctY29sb3I6ICAgICAgICBpbmhlcml0OwpAanVtYm90cm9uLWZvbnQtc2l6ZTogICAgICAgICAgICBjZWlsKEBmb250LXNpemUtYmFzZSAqIDEuNSk7CgoKLy8gRm9ybSBzdGF0ZXMgYW5kIGFsZXJ0cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAc3RhdGUtc3VjY2Vzcy10ZXh0OiAgICAgICAgICAgICAjM2M3NjNkOwpAc3RhdGUtc3VjY2Vzcy1iZzogICAgICAgICAgICAgICAjZGZmMGQ4OwpAc3RhdGUtc3VjY2Vzcy1ib3JkZXI6ICAgICAgICAgICBkYXJrZW4oc3BpbihAc3RhdGUtc3VjY2Vzcy1iZywgLTEwKSwgNSUpOwoKQHN0YXRlLWluZm8tdGV4dDogICAgICAgICAgICAgICAgIzMxNzA4ZjsKQHN0YXRlLWluZm8tYmc6ICAgICAgICAgICAgICAgICAgI2Q5ZWRmNzsKQHN0YXRlLWluZm8tYm9yZGVyOiAgICAgICAgICAgICAgZGFya2VuKHNwaW4oQHN0YXRlLWluZm8tYmcsIC0xMCksIDclKTsKCkBzdGF0ZS13YXJuaW5nLXRleHQ6ICAgICAgICAgICAgICM4YTZkM2I7CkBzdGF0ZS13YXJuaW5nLWJnOiAgICAgICAgICAgICAgICNmY2Y4ZTM7CkBzdGF0ZS13YXJuaW5nLWJvcmRlcjogICAgICAgICAgIGRhcmtlbihzcGluKEBzdGF0ZS13YXJuaW5nLWJnLCAtMTApLCA1JSk7CgpAc3RhdGUtZGFuZ2VyLXRleHQ6ICAgICAgICAgICAgICAjYTk0NDQyOwpAc3RhdGUtZGFuZ2VyLWJnOiAgICAgICAgICAgICAgICAjZjJkZWRlOwpAc3RhdGUtZGFuZ2VyLWJvcmRlcjogICAgICAgICAgICBkYXJrZW4oc3BpbihAc3RhdGUtZGFuZ2VyLWJnLCAtMTApLCA1JSk7CgoKLy8gVG9vbHRpcHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAdG9vbHRpcC1tYXgtd2lkdGg6ICAgICAgICAgICAyMDBweDsKQHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgI2ZmZjsKQHRvb2x0aXAtYmc6ICAgICAgICAgICAgICAgICAgIzAwMDsKCkB0b29sdGlwLWFycm93LXdpZHRoOiAgICAgICAgIDVweDsKQHRvb2x0aXAtYXJyb3ctY29sb3I6ICAgICAgICAgQHRvb2x0aXAtYmc7CgoKLy8gUG9wb3ZlcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAcG9wb3Zlci1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICNmZmY7CkBwb3BvdmVyLW1heC13aWR0aDogICAgICAgICAgICAgICAgICAgMjc2cHg7CkBwb3BvdmVyLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgcmdiYSgwLDAsMCwuMik7CkBwb3BvdmVyLWZhbGxiYWNrLWJvcmRlci1jb2xvcjogICAgICAgI2NjYzsKCkBwb3BvdmVyLXRpdGxlLWJnOiAgICAgICAgICAgICAgICAgICAgZGFya2VuKEBwb3BvdmVyLWJnLCAzJSk7CgpAcG9wb3Zlci1hcnJvdy13aWR0aDogICAgICAgICAgICAgICAgIDEwcHg7CkBwb3BvdmVyLWFycm93LWNvbG9yOiAgICAgICAgICAgICAgICAgI2ZmZjsKCkBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOiAgICAgICAgICAgKEBwb3BvdmVyLWFycm93LXdpZHRoICsgMSk7CkBwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOiAgICAgICAgICAgcmdiYSgwLDAsMCwuMjUpOwpAcG9wb3Zlci1hcnJvdy1vdXRlci1mYWxsYmFjay1jb2xvcjogICM5OTk7CgoKLy8gTGFiZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBsYWJlbC1kZWZhdWx0LWJnOiAgICAgICAgICAgIEBncmF5LWxpZ2h0OwpAbGFiZWwtcHJpbWFyeS1iZzogICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKQGxhYmVsLXN1Y2Nlc3MtYmc6ICAgICAgICAgICAgQGJyYW5kLXN1Y2Nlc3M7CkBsYWJlbC1pbmZvLWJnOiAgICAgICAgICAgICAgIEBicmFuZC1pbmZvOwpAbGFiZWwtd2FybmluZy1iZzogICAgICAgICAgICBAYnJhbmQtd2FybmluZzsKQGxhYmVsLWRhbmdlci1iZzogICAgICAgICAgICAgQGJyYW5kLWRhbmdlcjsKCkBsYWJlbC1jb2xvcjogICAgICAgICAgICAgICAgICNmZmY7CkBsYWJlbC1saW5rLWhvdmVyLWNvbG9yOiAgICAgICNmZmY7CgoKLy8gTW9kYWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQG1vZGFsLWlubmVyLXBhZGRpbmc6ICAgICAgICAgMjBweDsKCkBtb2RhbC10aXRsZS1wYWRkaW5nOiAgICAgICAgIDE1cHg7CkBtb2RhbC10aXRsZS1saW5lLWhlaWdodDogICAgIEBsaW5lLWhlaWdodC1iYXNlOwoKQG1vZGFsLWNvbnRlbnQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZmZmOwpAbW9kYWwtY29udGVudC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgIHJnYmEoMCwwLDAsLjIpOwpAbW9kYWwtY29udGVudC1mYWxsYmFjay1ib3JkZXItY29sb3I6ICAgICAgICAgICM5OTk7CgpAbW9kYWwtYmFja2Ryb3AtYmc6ICAgICAgICAgICAjMDAwOwpAbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAjZTVlNWU1OwpAbW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcjogICBAbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjsKCgovLyBBbGVydHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAYWxlcnQtcGFkZGluZzogICAgICAgICAgICAgICAxNXB4OwpAYWxlcnQtYm9yZGVyLXJhZGl1czogICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwpAYWxlcnQtbGluay1mb250LXdlaWdodDogICAgICBib2xkOwoKQGFsZXJ0LXN1Y2Nlc3MtYmc6ICAgICAgICAgICAgQHN0YXRlLXN1Y2Nlc3MtYmc7CkBhbGVydC1zdWNjZXNzLXRleHQ6ICAgICAgICAgIEBzdGF0ZS1zdWNjZXNzLXRleHQ7CkBhbGVydC1zdWNjZXNzLWJvcmRlcjogICAgICAgIEBzdGF0ZS1zdWNjZXNzLWJvcmRlcjsKCkBhbGVydC1pbmZvLWJnOiAgICAgICAgICAgICAgIEBzdGF0ZS1pbmZvLWJnOwpAYWxlcnQtaW5mby10ZXh0OiAgICAgICAgICAgICBAc3RhdGUtaW5mby10ZXh0OwpAYWxlcnQtaW5mby1ib3JkZXI6ICAgICAgICAgICBAc3RhdGUtaW5mby1ib3JkZXI7CgpAYWxlcnQtd2FybmluZy1iZzogICAgICAgICAgICBAc3RhdGUtd2FybmluZy1iZzsKQGFsZXJ0LXdhcm5pbmctdGV4dDogICAgICAgICAgQHN0YXRlLXdhcm5pbmctdGV4dDsKQGFsZXJ0LXdhcm5pbmctYm9yZGVyOiAgICAgICAgQHN0YXRlLXdhcm5pbmctYm9yZGVyOwoKQGFsZXJ0LWRhbmdlci1iZzogICAgICAgICAgICAgQHN0YXRlLWRhbmdlci1iZzsKQGFsZXJ0LWRhbmdlci10ZXh0OiAgICAgICAgICAgQHN0YXRlLWRhbmdlci10ZXh0OwpAYWxlcnQtZGFuZ2VyLWJvcmRlcjogICAgICAgICBAc3RhdGUtZGFuZ2VyLWJvcmRlcjsKCgovLyBQcm9ncmVzcyBiYXJzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQHByb2dyZXNzLWJnOiAgICAgICAgICAgICAgICAgI2Y1ZjVmNTsKQHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgI2ZmZjsKCkBwcm9ncmVzcy1iYXItYmc6ICAgICAgICAgICAgIEBicmFuZC1wcmltYXJ5OwpAcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MtYmc6ICAgICBAYnJhbmQtc3VjY2VzczsKQHByb2dyZXNzLWJhci13YXJuaW5nLWJnOiAgICAgQGJyYW5kLXdhcm5pbmc7CkBwcm9ncmVzcy1iYXItZGFuZ2VyLWJnOiAgICAgIEBicmFuZC1kYW5nZXI7CkBwcm9ncmVzcy1iYXItaW5mby1iZzogICAgICAgIEBicmFuZC1pbmZvOwoKCi8vIExpc3QgZ3JvdXAKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAbGlzdC1ncm91cC1iZzogICAgICAgICAgICAgICAjZmZmOwpAbGlzdC1ncm91cC1ib3JkZXI6ICAgICAgICAgICAjZGRkOwpAbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOiAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwoKQGxpc3QtZ3JvdXAtaG92ZXItYmc6ICAgICAgICAgI2Y1ZjVmNTsKQGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOiAgICAgQGNvbXBvbmVudC1hY3RpdmUtY29sb3I7CkBsaXN0LWdyb3VwLWFjdGl2ZS1iZzogICAgICAgIEBjb21wb25lbnQtYWN0aXZlLWJnOwpAbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyOiAgICBAbGlzdC1ncm91cC1hY3RpdmUtYmc7CgpAbGlzdC1ncm91cC1saW5rLWNvbG9yOiAgICAgICAgICAjNTU1OwpAbGlzdC1ncm91cC1saW5rLWhlYWRpbmctY29sb3I6ICAjMzMzOwoKCi8vIFBhbmVscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBwYW5lbC1iZzogICAgICAgICAgICAgICAgICAgICNmZmY7CkBwYW5lbC1pbm5lci1ib3JkZXI6ICAgICAgICAgICNkZGQ7CkBwYW5lbC1ib3JkZXItcmFkaXVzOiAgICAgICAgIEBib3JkZXItcmFkaXVzLWJhc2U7CkBwYW5lbC1mb290ZXItYmc6ICAgICAgICAgICAgICNmNWY1ZjU7CgpAcGFuZWwtZGVmYXVsdC10ZXh0OiAgICAgICAgICBAZ3JheS1kYXJrOwpAcGFuZWwtZGVmYXVsdC1ib3JkZXI6ICAgICAgICAjZGRkOwpAcGFuZWwtZGVmYXVsdC1oZWFkaW5nLWJnOiAgICAjZjVmNWY1OwoKQHBhbmVsLXByaW1hcnktdGV4dDogICAgICAgICAgI2ZmZjsKQHBhbmVsLXByaW1hcnktYm9yZGVyOiAgICAgICAgQGJyYW5kLXByaW1hcnk7CkBwYW5lbC1wcmltYXJ5LWhlYWRpbmctYmc6ICAgIEBicmFuZC1wcmltYXJ5OwoKQHBhbmVsLXN1Y2Nlc3MtdGV4dDogICAgICAgICAgQHN0YXRlLXN1Y2Nlc3MtdGV4dDsKQHBhbmVsLXN1Y2Nlc3MtYm9yZGVyOiAgICAgICAgQHN0YXRlLXN1Y2Nlc3MtYm9yZGVyOwpAcGFuZWwtc3VjY2Vzcy1oZWFkaW5nLWJnOiAgICBAc3RhdGUtc3VjY2Vzcy1iZzsKCkBwYW5lbC13YXJuaW5nLXRleHQ6ICAgICAgICAgIEBzdGF0ZS13YXJuaW5nLXRleHQ7CkBwYW5lbC13YXJuaW5nLWJvcmRlcjogICAgICAgIEBzdGF0ZS13YXJuaW5nLWJvcmRlcjsKQHBhbmVsLXdhcm5pbmctaGVhZGluZy1iZzogICAgQHN0YXRlLXdhcm5pbmctYmc7CgpAcGFuZWwtZGFuZ2VyLXRleHQ6ICAgICAgICAgICBAc3RhdGUtZGFuZ2VyLXRleHQ7CkBwYW5lbC1kYW5nZXItYm9yZGVyOiAgICAgICAgIEBzdGF0ZS1kYW5nZXItYm9yZGVyOwpAcGFuZWwtZGFuZ2VyLWhlYWRpbmctYmc6ICAgICBAc3RhdGUtZGFuZ2VyLWJnOwoKQHBhbmVsLWluZm8tdGV4dDogICAgICAgICAgICAgQHN0YXRlLWluZm8tdGV4dDsKQHBhbmVsLWluZm8tYm9yZGVyOiAgICAgICAgICAgQHN0YXRlLWluZm8tYm9yZGVyOwpAcGFuZWwtaW5mby1oZWFkaW5nLWJnOiAgICAgICBAc3RhdGUtaW5mby1iZzsKCgovLyBUaHVtYm5haWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQHRodW1ibmFpbC1wYWRkaW5nOiAgICAgICAgICAgNHB4OwpAdGh1bWJuYWlsLWJnOiAgICAgICAgICAgICAgICBAYm9keS1iZzsKQHRodW1ibmFpbC1ib3JkZXI6ICAgICAgICAgICAgI2RkZDsKQHRodW1ibmFpbC1ib3JkZXItcmFkaXVzOiAgICAgQGJvcmRlci1yYWRpdXMtYmFzZTsKCkB0aHVtYm5haWwtY2FwdGlvbi1jb2xvcjogICAgIEB0ZXh0LWNvbG9yOwpAdGh1bWJuYWlsLWNhcHRpb24tcGFkZGluZzogICA5cHg7CgoKLy8gV2VsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAd2VsbC1iZzogICAgICAgICAgICAgICAgICAgICAjZjVmNWY1OwoKCi8vIEJhZGdlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBiYWRnZS1jb2xvcjogICAgICAgICAgICAgICAgICNmZmY7CkBiYWRnZS1saW5rLWhvdmVyLWNvbG9yOiAgICAgICNmZmY7CkBiYWRnZS1iZzogICAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwoKQGJhZGdlLWFjdGl2ZS1jb2xvcjogICAgICAgICAgQGxpbmstY29sb3I7CkBiYWRnZS1hY3RpdmUtYmc6ICAgICAgICAgICAgICNmZmY7CgpAYmFkZ2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICBib2xkOwpAYmFkZ2UtbGluZS1oZWlnaHQ6ICAgICAgICAgICAxOwpAYmFkZ2UtYm9yZGVyLXJhZGl1czogICAgICAgICAxMHB4OwoKCi8vIEJyZWFkY3J1bWJzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQGJyZWFkY3J1bWItYmc6ICAgICAgICAgICAgICAgI2Y1ZjVmNTsKQGJyZWFkY3J1bWItY29sb3I6ICAgICAgICAgICAgI2NjYzsKQGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yOiAgICAgQGdyYXktbGlnaHQ7CkBicmVhZGNydW1iLXNlcGFyYXRvcjogICAgICAgICIvIjsKCgovLyBDYXJvdXNlbAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBjYXJvdXNlbC10ZXh0LXNoYWRvdzogICAgICAgICAgICAgICAgICAgICAgICAwIDFweCAycHggcmdiYSgwLDAsMCwuNik7CgpAY2Fyb3VzZWwtY29udHJvbC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQGNhcm91c2VsLWNvbnRyb2wtd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgIDE1JTsKQGNhcm91c2VsLWNvbnRyb2wtb3BhY2l0eTogICAgICAgICAgICAgICAgICAgIC41OwpAY2Fyb3VzZWwtY29udHJvbC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgMjBweDsKCkBjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAjZmZmOwpAY2Fyb3VzZWwtaW5kaWNhdG9yLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgI2ZmZjsKCkBjYXJvdXNlbC1jYXB0aW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAjZmZmOwoKCi8vIENsb3NlCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAY2xvc2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICBib2xkOwpAY2xvc2UtY29sb3I6ICAgICAgICAgICAgICAgICAjMDAwOwpAY2xvc2UtdGV4dC1zaGFkb3c6ICAgICAgICAgICAwIDFweCAwICNmZmY7CgoKLy8gQ29kZQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQGNvZGUtY29sb3I6ICAgICAgICAgICAgICAgICAgI2M3MjU0ZTsKQGNvZGUtYmc6ICAgICAgICAgICAgICAgICAgICAgI2Y5ZjJmNDsKCkBwcmUtYmc6ICAgICAgICAgICAgICAgICAgICAgICNmNWY1ZjU7CkBwcmUtY29sb3I6ICAgICAgICAgICAgICAgICAgIEBncmF5LWRhcms7CkBwcmUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICNjY2M7CkBwcmUtc2Nyb2xsYWJsZS1tYXgtaGVpZ2h0OiAgIDM0MHB4OwoKLy8gVHlwZQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQHRleHQtbXV0ZWQ6ICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHQ7CkBhYmJyLWJvcmRlci1jb2xvcjogICAgICAgICAgIEBncmF5LWxpZ2h0OwpAaGVhZGluZ3Mtc21hbGwtY29sb3I6ICAgICAgICBAZ3JheS1saWdodDsKQGJsb2NrcXVvdGUtc21hbGwtY29sb3I6ICAgICAgQGdyYXktbGlnaHQ7CkBibG9ja3F1b3RlLWJvcmRlci1jb2xvcjogICAgIEBncmF5LWxpZ2h0ZXI7CkBwYWdlLWhlYWRlci1ib3JkZXItY29sb3I6ICAgIEBncmF5LWxpZ2h0ZXI7CgovLyBNaXNjZWxsYW5lb3VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEhyIGJvcmRlciBjb2xvcgpAaHItYm9yZGVyOiAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodGVyOwoKLy8gSG9yaXpvbnRhbCBmb3JtcyAmIGxpc3RzCkBjb21wb25lbnQtb2Zmc2V0LWhvcml6b250YWw6IDE4MHB4OwoKCi8vIENvbnRhaW5lciBzaXplcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gU21hbGwgc2NyZWVuIC8gdGFibGV0CkBjb250YWluZXItdGFibGV0OiAgICAgICAgICAgICAoKDcyMHB4ICsgQGdyaWQtZ3V0dGVyLXdpZHRoKSk7CkBjb250YWluZXItc206ICAgICAgICAgICAgICAgICBAY29udGFpbmVyLXRhYmxldDsKCi8vIE1lZGl1bSBzY3JlZW4gLyBkZXNrdG9wCkBjb250YWluZXItZGVza3RvcDogICAgICAgICAgICAoKDk0MHB4ICsgQGdyaWQtZ3V0dGVyLXdpZHRoKSk7CkBjb250YWluZXItbWQ6ICAgICAgICAgICAgICAgICBAY29udGFpbmVyLWRlc2t0b3A7CgovLyBMYXJnZSBzY3JlZW4gLyB3aWRlIGRlc2t0b3AKQGNvbnRhaW5lci1sYXJnZS1kZXNrdG9wOiAgICAgICgoMTE0MHB4ICsgQGdyaWQtZ3V0dGVyLXdpZHRoKSk7CkBjb250YWluZXItbGc6ICAgICAgICAgICAgICAgICBAY29udGFpbmVyLWxhcmdlLWRlc2t0b3A7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/less/wells.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gV2VsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi53ZWxsIHsKICBtaW4taGVpZ2h0OiAyMHB4OwogIHBhZGRpbmc6IDE5cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2VsbC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBkYXJrZW4oQHdlbGwtYmcsIDclKTsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogIC5ib3gtc2hhZG93KGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSkpOwogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLC4xNSk7CiAgfQp9CgovLyBTaXplcwoud2VsbC1sZyB7CiAgcGFkZGluZzogMjRweDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKfQoud2VsbC1zbSB7CiAgcGFkZGluZzogOXB4OwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLXNtYWxsOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.0.3/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R2VuZXJhdGVkIG9uIDE1IE1hcmNoIDIwMjQuCgpgYGAKZnJlc2gtbm9kZTIwOmxlc3MucGhwJCBub2RlIC0tdmVyc2lvbgp2MjAuNS4wCgpmcmVzaC1ub2RlMjA6bGVzcy5waHAkIG5vZGUgLS12ZXJzaW9uCjkuOC4wCgpmcmVzaC1ub2RlMjA6bGVzcy5waHAkIG5wbSBpbnN0YWxsIGxlc3NAMi43LjIK4oCmCgpmcmVzaC1ub2RlMjA6bGVzcy5waHAkIG5vZGVfbW9kdWxlcy8uYmluL2xlc3NjIHRlc3QvRml4dHVyZXMvYm9vdHN0cmFwLTMuMC4zL2xlc3MvYm9vdHN0cmFwLmxlc3MgPiB0ZXN0L0ZpeHR1cmVzL2Jvb3RzdHJhcC0zLjAuMy9jc3MvYm9vdHN0cmFwLmNzcwpgYGAKCjxodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2Jsb2IvdjIuNy4zL0NIQU5HRUxPRy5tZD4K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/css/bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovCmh0bWwgewogIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOwogIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKfQpib2R5IHsKICBtYXJnaW46IDA7Cn0KYXJ0aWNsZSwKYXNpZGUsCmRldGFpbHMsCmZpZ2NhcHRpb24sCmZpZ3VyZSwKZm9vdGVyLApoZWFkZXIsCmhncm91cCwKbWFpbiwKbmF2LApzZWN0aW9uLApzdW1tYXJ5IHsKICBkaXNwbGF5OiBibG9jazsKfQphdWRpbywKY2FudmFzLApwcm9ncmVzcywKdmlkZW8gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KYXVkaW86bm90KFtjb250cm9sc10pIHsKICBkaXNwbGF5OiBub25lOwogIGhlaWdodDogMDsKfQpbaGlkZGVuXSwKdGVtcGxhdGUgewogIGRpc3BsYXk6IG5vbmU7Cn0KYSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KYTphY3RpdmUsCmE6aG92ZXIgewogIG91dGxpbmU6IDA7Cn0KYWJiclt0aXRsZV0gewogIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7Cn0KYiwKc3Ryb25nIHsKICBmb250LXdlaWdodDogYm9sZDsKfQpkZm4gewogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQpoMSB7CiAgZm9udC1zaXplOiAyZW07CiAgbWFyZ2luOiAwLjY3ZW0gMDsKfQptYXJrIHsKICBiYWNrZ3JvdW5kOiAjZmYwOwogIGNvbG9yOiAjMDAwOwp9CnNtYWxsIHsKICBmb250LXNpemU6IDgwJTsKfQpzdWIsCnN1cCB7CiAgZm9udC1zaXplOiA3NSU7CiAgbGluZS1oZWlnaHQ6IDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQpzdXAgewogIHRvcDogLTAuNWVtOwp9CnN1YiB7CiAgYm90dG9tOiAtMC4yNWVtOwp9CmltZyB7CiAgYm9yZGVyOiAwOwp9CnN2Zzpub3QoOnJvb3QpIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CmZpZ3VyZSB7CiAgbWFyZ2luOiAxZW0gNDBweDsKfQpociB7CiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBoZWlnaHQ6IDA7Cn0KcHJlIHsKICBvdmVyZmxvdzogYXV0bzsKfQpjb2RlLAprYmQsCnByZSwKc2FtcCB7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMWVtOwp9CmJ1dHRvbiwKaW5wdXQsCm9wdGdyb3VwLApzZWxlY3QsCnRleHRhcmVhIHsKICBjb2xvcjogaW5oZXJpdDsKICBmb250OiBpbmhlcml0OwogIG1hcmdpbjogMDsKfQpidXR0b24gewogIG92ZXJmbG93OiB2aXNpYmxlOwp9CmJ1dHRvbiwKc2VsZWN0IHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQpidXR0b24sCmh0bWwgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCmlucHV0W3R5cGU9InJlc2V0Il0sCmlucHV0W3R5cGU9InN1Ym1pdCJdIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KYnV0dG9uW2Rpc2FibGVkXSwKaHRtbCBpbnB1dFtkaXNhYmxlZF0gewogIGN1cnNvcjogZGVmYXVsdDsKfQpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsCmlucHV0OjotbW96LWZvY3VzLWlubmVyIHsKICBib3JkZXI6IDA7CiAgcGFkZGluZzogMDsKfQppbnB1dCB7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQppbnB1dFt0eXBlPSJjaGVja2JveCJdLAppbnB1dFt0eXBlPSJyYWRpbyJdIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHBhZGRpbmc6IDA7Cn0KaW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sCmlucHV0W3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKICBoZWlnaHQ6IGF1dG87Cn0KaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOwogIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwKaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQpmaWVsZHNldCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsKICBtYXJnaW46IDAgMnB4OwogIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsKfQpsZWdlbmQgewogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwp9CnRleHRhcmVhIHsKICBvdmVyZmxvdzogYXV0bzsKfQpvcHRncm91cCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KdGFibGUgewogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgYm9yZGVyLXNwYWNpbmc6IDA7Cn0KdGQsCnRoIHsKICBwYWRkaW5nOiAwOwp9CkBtZWRpYSBwcmludCB7CiAgKiB7CiAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIGEsCiAgYTp2aXNpdGVkIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KICBhW2hyZWZdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgKCIgYXR0cihocmVmKSAiKSI7CiAgfQogIGFiYnJbdGl0bGVdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgKCIgYXR0cih0aXRsZSkgIikiOwogIH0KICBhW2hyZWZePSJqYXZhc2NyaXB0OiJdOmFmdGVyLAogIGFbaHJlZl49IiMiXTphZnRlciB7CiAgICBjb250ZW50OiAiIjsKICB9CiAgcHJlLAogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CiAgdGhlYWQgewogICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogIH0KICB0ciwKICBpbWcgewogICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwogIH0KICBpbWcgewogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgfQogIHAsCiAgaDIsCiAgaDMgewogICAgb3JwaGFuczogMzsKICAgIHdpZG93czogMzsKICB9CiAgaDIsCiAgaDMgewogICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgfQogIHNlbGVjdCB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLnRhYmxlIHRkLAogIC50YWJsZSB0aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgfQogIC5idG4gPiAuY2FyZXQsCiAgLmRyb3B1cCA+IC5idG4gPiAuY2FyZXQgewogICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMCAhaW1wb3J0YW50OwogIH0KICAubGFiZWwgewogICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICB9CiAgLnRhYmxlIHsKICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWJvcmRlcmVkIHRoLAogIC50YWJsZS1ib3JkZXJlZCB0ZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7CiAgfQp9CiogewogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoqOmJlZm9yZSwKKjphZnRlciB7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Cmh0bWwgewogIGZvbnQtc2l6ZTogNjIuNSU7CiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwp9CmJvZHkgewogIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICBjb2xvcjogIzMzMzMzMzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CmlucHV0LApidXR0b24sCnNlbGVjdCwKdGV4dGFyZWEgewogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKfQphIHsKICBjb2xvcjogIzQyOGJjYTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KYTpob3ZlciwKYTpmb2N1cyB7CiAgY29sb3I6ICMyYTY0OTY7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KYTpmb2N1cyB7CiAgb3V0bGluZTogdGhpbiBkb3R0ZWQ7CiAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yOwogIG91dGxpbmUtb2Zmc2V0OiAtMnB4Owp9CmZpZ3VyZSB7CiAgbWFyZ2luOiAwOwp9CmltZyB7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQouaW1nLXJlc3BvbnNpdmUgewogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87Cn0KLmltZy1yb3VuZGVkIHsKICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KLmltZy10aHVtYm5haWwgewogIHBhZGRpbmc6IDRweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7CiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87Cn0KLmltZy1jaXJjbGUgewogIGJvcmRlci1yYWRpdXM6IDUwJTsKfQpociB7CiAgbWFyZ2luLXRvcDogMjBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJvcmRlcjogMDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZWVlZTsKfQouc3Itb25seSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiAtMXB4OwogIHBhZGRpbmc6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIGJvcmRlcjogMDsKfQpoMSwKaDIsCmgzLApoNCwKaDUsCmg2LAouaDEsCi5oMiwKLmgzLAouaDQsCi5oNSwKLmg2IHsKICBmb250LWZhbWlseTogaW5oZXJpdDsKICBmb250LXdlaWdodDogNTAwOwogIGxpbmUtaGVpZ2h0OiAxLjE7CiAgY29sb3I6IGluaGVyaXQ7Cn0KaDEgc21hbGwsCmgyIHNtYWxsLApoMyBzbWFsbCwKaDQgc21hbGwsCmg1IHNtYWxsLApoNiBzbWFsbCwKLmgxIHNtYWxsLAouaDIgc21hbGwsCi5oMyBzbWFsbCwKLmg0IHNtYWxsLAouaDUgc21hbGwsCi5oNiBzbWFsbCwKaDEgLnNtYWxsLApoMiAuc21hbGwsCmgzIC5zbWFsbCwKaDQgLnNtYWxsLApoNSAuc21hbGwsCmg2IC5zbWFsbCwKLmgxIC5zbWFsbCwKLmgyIC5zbWFsbCwKLmgzIC5zbWFsbCwKLmg0IC5zbWFsbCwKLmg1IC5zbWFsbCwKLmg2IC5zbWFsbCB7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogIzk5OTk5OTsKfQpoMSwKLmgxLApoMiwKLmgyLApoMywKLmgzIHsKICBtYXJnaW4tdG9wOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KaDEgc21hbGwsCi5oMSBzbWFsbCwKaDIgc21hbGwsCi5oMiBzbWFsbCwKaDMgc21hbGwsCi5oMyBzbWFsbCwKaDEgLnNtYWxsLAouaDEgLnNtYWxsLApoMiAuc21hbGwsCi5oMiAuc21hbGwsCmgzIC5zbWFsbCwKLmgzIC5zbWFsbCB7CiAgZm9udC1zaXplOiA2NSU7Cn0KaDQsCi5oNCwKaDUsCi5oNSwKaDYsCi5oNiB7CiAgbWFyZ2luLXRvcDogMTBweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Cmg0IHNtYWxsLAouaDQgc21hbGwsCmg1IHNtYWxsLAouaDUgc21hbGwsCmg2IHNtYWxsLAouaDYgc21hbGwsCmg0IC5zbWFsbCwKLmg0IC5zbWFsbCwKaDUgLnNtYWxsLAouaDUgLnNtYWxsLApoNiAuc21hbGwsCi5oNiAuc21hbGwgewogIGZvbnQtc2l6ZTogNzUlOwp9CmgxLAouaDEgewogIGZvbnQtc2l6ZTogMzZweDsKfQpoMiwKLmgyIHsKICBmb250LXNpemU6IDMwcHg7Cn0KaDMsCi5oMyB7CiAgZm9udC1zaXplOiAyNHB4Owp9Cmg0LAouaDQgewogIGZvbnQtc2l6ZTogMThweDsKfQpoNSwKLmg1IHsKICBmb250LXNpemU6IDE0cHg7Cn0KaDYsCi5oNiB7CiAgZm9udC1zaXplOiAxMnB4Owp9CnAgewogIG1hcmdpbjogMCAwIDEwcHg7Cn0KLmxlYWQgewogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IDEuNDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubGVhZCB7CiAgICBmb250LXNpemU6IDIxcHg7CiAgfQp9CnNtYWxsLAouc21hbGwgewogIGZvbnQtc2l6ZTogODUlOwp9CmNpdGUgewogIGZvbnQtc3R5bGU6IG5vcm1hbDsKfQoudGV4dC1sZWZ0IHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci50ZXh0LXJpZ2h0IHsKICB0ZXh0LWFsaWduOiByaWdodDsKfQoudGV4dC1jZW50ZXIgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudGV4dC1qdXN0aWZ5IHsKICB0ZXh0LWFsaWduOiBqdXN0aWZ5Owp9Ci50ZXh0LW11dGVkIHsKICBjb2xvcjogIzk5OTk5OTsKfQoudGV4dC1wcmltYXJ5IHsKICBjb2xvcjogIzQyOGJjYTsKfQphLnRleHQtcHJpbWFyeTpob3ZlciB7CiAgY29sb3I6ICMzMDcxYTk7Cn0KLnRleHQtc3VjY2VzcyB7CiAgY29sb3I6ICMzYzc2M2Q7Cn0KYS50ZXh0LXN1Y2Nlc3M6aG92ZXIgewogIGNvbG9yOiAjMmI1NDJjOwp9Ci50ZXh0LWluZm8gewogIGNvbG9yOiAjMzE3MDhmOwp9CmEudGV4dC1pbmZvOmhvdmVyIHsKICBjb2xvcjogIzI0NTI2OTsKfQoudGV4dC13YXJuaW5nIHsKICBjb2xvcjogIzhhNmQzYjsKfQphLnRleHQtd2FybmluZzpob3ZlciB7CiAgY29sb3I6ICM2NjUxMmM7Cn0KLnRleHQtZGFuZ2VyIHsKICBjb2xvcjogI2E5NDQ0MjsKfQphLnRleHQtZGFuZ2VyOmhvdmVyIHsKICBjb2xvcjogIzg0MzUzNDsKfQouYmctcHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKfQphLmJnLXByaW1hcnk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICMzMDcxYTk7Cn0KLmJnLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KYS5iZy1zdWNjZXNzOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzFlMmIzOwp9Ci5iZy1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3Owp9CmEuYmctaW5mbzpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2FmZDllZTsKfQouYmctd2FybmluZyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQphLmJnLXdhcm5pbmc6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmN2VjYjU7Cn0KLmJnLWRhbmdlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKfQphLmJnLWRhbmdlcjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U0YjliOTsKfQoucGFnZS1oZWFkZXIgewogIHBhZGRpbmctYm90dG9tOiA5cHg7CiAgbWFyZ2luOiA0MHB4IDAgMjBweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZWVlZTsKfQp1bCwKb2wgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQp1bCB1bCwKb2wgdWwsCnVsIG9sLApvbCBvbCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoubGlzdC11bnN0eWxlZCB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmxpc3QtaW5saW5lIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoubGlzdC1pbmxpbmUgPiBsaSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctbGVmdDogNXB4OwogIHBhZGRpbmctcmlnaHQ6IDVweDsKfQoubGlzdC1pbmxpbmUgPiBsaTpmaXJzdC1jaGlsZCB7CiAgcGFkZGluZy1sZWZ0OiAwOwp9CmRsIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KZHQsCmRkIHsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKfQpkdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KZGQgewogIG1hcmdpbi1sZWZ0OiAwOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5kbC1ob3Jpem9udGFsIGR0IHsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IDE2MHB4OwogICAgY2xlYXI6IGxlZnQ7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgfQogIC5kbC1ob3Jpem9udGFsIGRkIHsKICAgIG1hcmdpbi1sZWZ0OiAxODBweDsKICB9Cn0KYWJiclt0aXRsZV0sCmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0gewogIGN1cnNvcjogaGVscDsKICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkICM5OTk5OTk7Cn0KLmluaXRpYWxpc20gewogIGZvbnQtc2l6ZTogOTAlOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KYmxvY2txdW90ZSB7CiAgcGFkZGluZzogMTBweCAyMHB4OwogIG1hcmdpbjogMCAwIDIwcHg7CiAgZm9udC1zaXplOiAxNy41cHg7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjZWVlZWVlOwp9CmJsb2NrcXVvdGUgcDpsYXN0LWNoaWxkLApibG9ja3F1b3RlIHVsOmxhc3QtY2hpbGQsCmJsb2NrcXVvdGUgb2w6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQpibG9ja3F1b3RlIGZvb3RlciwKYmxvY2txdW90ZSBzbWFsbCwKYmxvY2txdW90ZSAuc21hbGwgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogODAlOwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjOTk5OTk5Owp9CmJsb2NrcXVvdGUgZm9vdGVyOmJlZm9yZSwKYmxvY2txdW90ZSBzbWFsbDpiZWZvcmUsCmJsb2NrcXVvdGUgLnNtYWxsOmJlZm9yZSB7CiAgY29udGVudDogJ1wyMDE0IFwwMEEwJzsKfQouYmxvY2txdW90ZS1yZXZlcnNlLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgewogIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGJvcmRlci1yaWdodDogNXB4IHNvbGlkICNlZWVlZWU7CiAgYm9yZGVyLWxlZnQ6IDA7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLmJsb2NrcXVvdGUtcmV2ZXJzZSBmb290ZXI6YmVmb3JlLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgZm9vdGVyOmJlZm9yZSwKLmJsb2NrcXVvdGUtcmV2ZXJzZSBzbWFsbDpiZWZvcmUsCmJsb2NrcXVvdGUucHVsbC1yaWdodCBzbWFsbDpiZWZvcmUsCi5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmJlZm9yZSwKYmxvY2txdW90ZS5wdWxsLXJpZ2h0IC5zbWFsbDpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwp9Ci5ibG9ja3F1b3RlLXJldmVyc2UgZm9vdGVyOmFmdGVyLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgZm9vdGVyOmFmdGVyLAouYmxvY2txdW90ZS1yZXZlcnNlIHNtYWxsOmFmdGVyLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGw6YWZ0ZXIsCi5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmFmdGVyLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgLnNtYWxsOmFmdGVyIHsKICBjb250ZW50OiAnXDAwQTAgXDIwMTQnOwp9CmJsb2NrcXVvdGU6YmVmb3JlLApibG9ja3F1b3RlOmFmdGVyIHsKICBjb250ZW50OiAiIjsKfQphZGRyZXNzIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKfQpjb2RlLAprYmQsCnByZSwKc2FtcCB7CiAgZm9udC1mYW1pbHk6IE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7Cn0KY29kZSB7CiAgcGFkZGluZzogMnB4IDRweDsKICBmb250LXNpemU6IDkwJTsKICBjb2xvcjogI2M3MjU0ZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmMmY0OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9CmtiZCB7CiAgcGFkZGluZzogMnB4IDRweDsKICBmb250LXNpemU6IDkwJTsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpOwp9CnByZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogOS41cHg7CiAgbWFyZ2luOiAwIDAgMTBweDsKICBmb250LXNpemU6IDEzcHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgd29yZC1icmVhazogYnJlYWstYWxsOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBjb2xvcjogIzMzMzMzMzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9CnByZSBjb2RlIHsKICBwYWRkaW5nOiAwOwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBjb2xvcjogaW5oZXJpdDsKICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoucHJlLXNjcm9sbGFibGUgewogIG1heC1oZWlnaHQ6IDM0MHB4OwogIG92ZXJmbG93LXk6IHNjcm9sbDsKfQouY29udGFpbmVyIHsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIHBhZGRpbmctcmlnaHQ6IDE1cHg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICB3aWR0aDogNzUwcHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5jb250YWluZXIgewogICAgd2lkdGg6IDk3MHB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICB3aWR0aDogMTE3MHB4OwogIH0KfQouY29udGFpbmVyLWZsdWlkIHsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIHBhZGRpbmctcmlnaHQ6IDE1cHg7Cn0KLnJvdyB7CiAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogIG1hcmdpbi1yaWdodDogLTE1cHg7Cn0KLmNvbC14cy0xLCAuY29sLXNtLTEsIC5jb2wtbWQtMSwgLmNvbC1sZy0xLCAuY29sLXhzLTIsIC5jb2wtc20tMiwgLmNvbC1tZC0yLCAuY29sLWxnLTIsIC5jb2wteHMtMywgLmNvbC1zbS0zLCAuY29sLW1kLTMsIC5jb2wtbGctMywgLmNvbC14cy00LCAuY29sLXNtLTQsIC5jb2wtbWQtNCwgLmNvbC1sZy00LCAuY29sLXhzLTUsIC5jb2wtc20tNSwgLmNvbC1tZC01LCAuY29sLWxnLTUsIC5jb2wteHMtNiwgLmNvbC1zbS02LCAuY29sLW1kLTYsIC5jb2wtbGctNiwgLmNvbC14cy03LCAuY29sLXNtLTcsIC5jb2wtbWQtNywgLmNvbC1sZy03LCAuY29sLXhzLTgsIC5jb2wtc20tOCwgLmNvbC1tZC04LCAuY29sLWxnLTgsIC5jb2wteHMtOSwgLmNvbC1zbS05LCAuY29sLW1kLTksIC5jb2wtbGctOSwgLmNvbC14cy0xMCwgLmNvbC1zbS0xMCwgLmNvbC1tZC0xMCwgLmNvbC1sZy0xMCwgLmNvbC14cy0xMSwgLmNvbC1zbS0xMSwgLmNvbC1tZC0xMSwgLmNvbC1sZy0xMSwgLmNvbC14cy0xMiwgLmNvbC1zbS0xMiwgLmNvbC1tZC0xMiwgLmNvbC1sZy0xMiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgcGFkZGluZy1yaWdodDogMTVweDsKfQouY29sLXhzLTEsIC5jb2wteHMtMiwgLmNvbC14cy0zLCAuY29sLXhzLTQsIC5jb2wteHMtNSwgLmNvbC14cy02LCAuY29sLXhzLTcsIC5jb2wteHMtOCwgLmNvbC14cy05LCAuY29sLXhzLTEwLCAuY29sLXhzLTExLCAuY29sLXhzLTEyIHsKICBmbG9hdDogbGVmdDsKfQouY29sLXhzLTEyIHsKICB3aWR0aDogMTAwJTsKfQouY29sLXhzLTExIHsKICB3aWR0aDogOTEuNjY2NjY2NjclOwp9Ci5jb2wteHMtMTAgewogIHdpZHRoOiA4My4zMzMzMzMzMyU7Cn0KLmNvbC14cy05IHsKICB3aWR0aDogNzUlOwp9Ci5jb2wteHMtOCB7CiAgd2lkdGg6IDY2LjY2NjY2NjY3JTsKfQouY29sLXhzLTcgewogIHdpZHRoOiA1OC4zMzMzMzMzMyU7Cn0KLmNvbC14cy02IHsKICB3aWR0aDogNTAlOwp9Ci5jb2wteHMtNSB7CiAgd2lkdGg6IDQxLjY2NjY2NjY3JTsKfQouY29sLXhzLTQgewogIHdpZHRoOiAzMy4zMzMzMzMzMyU7Cn0KLmNvbC14cy0zIHsKICB3aWR0aDogMjUlOwp9Ci5jb2wteHMtMiB7CiAgd2lkdGg6IDE2LjY2NjY2NjY3JTsKfQouY29sLXhzLTEgewogIHdpZHRoOiA4LjMzMzMzMzMzJTsKfQouY29sLXhzLXB1bGwtMTIgewogIHJpZ2h0OiAxMDAlOwp9Ci5jb2wteHMtcHVsbC0xMSB7CiAgcmlnaHQ6IDkxLjY2NjY2NjY3JTsKfQouY29sLXhzLXB1bGwtMTAgewogIHJpZ2h0OiA4My4zMzMzMzMzMyU7Cn0KLmNvbC14cy1wdWxsLTkgewogIHJpZ2h0OiA3NSU7Cn0KLmNvbC14cy1wdWxsLTggewogIHJpZ2h0OiA2Ni42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdWxsLTcgewogIHJpZ2h0OiA1OC4zMzMzMzMzMyU7Cn0KLmNvbC14cy1wdWxsLTYgewogIHJpZ2h0OiA1MCU7Cn0KLmNvbC14cy1wdWxsLTUgewogIHJpZ2h0OiA0MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdWxsLTQgewogIHJpZ2h0OiAzMy4zMzMzMzMzMyU7Cn0KLmNvbC14cy1wdWxsLTMgewogIHJpZ2h0OiAyNSU7Cn0KLmNvbC14cy1wdWxsLTIgewogIHJpZ2h0OiAxNi42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdWxsLTEgewogIHJpZ2h0OiA4LjMzMzMzMzMzJTsKfQouY29sLXhzLXB1bGwtMCB7CiAgcmlnaHQ6IDAlOwp9Ci5jb2wteHMtcHVzaC0xMiB7CiAgbGVmdDogMTAwJTsKfQouY29sLXhzLXB1c2gtMTEgewogIGxlZnQ6IDkxLjY2NjY2NjY3JTsKfQouY29sLXhzLXB1c2gtMTAgewogIGxlZnQ6IDgzLjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtOSB7CiAgbGVmdDogNzUlOwp9Ci5jb2wteHMtcHVzaC04IHsKICBsZWZ0OiA2Ni42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTcgewogIGxlZnQ6IDU4LjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtNiB7CiAgbGVmdDogNTAlOwp9Ci5jb2wteHMtcHVzaC01IHsKICBsZWZ0OiA0MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTQgewogIGxlZnQ6IDMzLjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtMyB7CiAgbGVmdDogMjUlOwp9Ci5jb2wteHMtcHVzaC0yIHsKICBsZWZ0OiAxNi42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTEgewogIGxlZnQ6IDguMzMzMzMzMzMlOwp9Ci5jb2wteHMtcHVzaC0wIHsKICBsZWZ0OiAwJTsKfQouY29sLXhzLW9mZnNldC0xMiB7CiAgbWFyZ2luLWxlZnQ6IDEwMCU7Cn0KLmNvbC14cy1vZmZzZXQtMTEgewogIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1vZmZzZXQtMTAgewogIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7Cn0KLmNvbC14cy1vZmZzZXQtOSB7CiAgbWFyZ2luLWxlZnQ6IDc1JTsKfQouY29sLXhzLW9mZnNldC04IHsKICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwp9Ci5jb2wteHMtb2Zmc2V0LTcgewogIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7Cn0KLmNvbC14cy1vZmZzZXQtNiB7CiAgbWFyZ2luLWxlZnQ6IDUwJTsKfQouY29sLXhzLW9mZnNldC01IHsKICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwp9Ci5jb2wteHMtb2Zmc2V0LTQgewogIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7Cn0KLmNvbC14cy1vZmZzZXQtMyB7CiAgbWFyZ2luLWxlZnQ6IDI1JTsKfQouY29sLXhzLW9mZnNldC0yIHsKICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwp9Ci5jb2wteHMtb2Zmc2V0LTEgewogIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKfQouY29sLXhzLW9mZnNldC0wIHsKICBtYXJnaW4tbGVmdDogMCU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbC1zbS0xLCAuY29sLXNtLTIsIC5jb2wtc20tMywgLmNvbC1zbS00LCAuY29sLXNtLTUsIC5jb2wtc20tNiwgLmNvbC1zbS03LCAuY29sLXNtLTgsIC5jb2wtc20tOSwgLmNvbC1zbS0xMCwgLmNvbC1zbS0xMSwgLmNvbC1zbS0xMiB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgLmNvbC1zbS0xMiB7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgLmNvbC1zbS0xMSB7CiAgICB3aWR0aDogOTEuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLTEwIHsKICAgIHdpZHRoOiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tOSB7CiAgICB3aWR0aDogNzUlOwogIH0KICAuY29sLXNtLTggewogICAgd2lkdGg6IDY2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS03IHsKICAgIHdpZHRoOiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tNiB7CiAgICB3aWR0aDogNTAlOwogIH0KICAuY29sLXNtLTUgewogICAgd2lkdGg6IDQxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS00IHsKICAgIHdpZHRoOiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tMyB7CiAgICB3aWR0aDogMjUlOwogIH0KICAuY29sLXNtLTIgewogICAgd2lkdGg6IDE2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS0xIHsKICAgIHdpZHRoOiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdWxsLTEyIHsKICAgIHJpZ2h0OiAxMDAlOwogIH0KICAuY29sLXNtLXB1bGwtMTEgewogICAgcmlnaHQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS1wdWxsLTEwIHsKICAgIHJpZ2h0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVsbC05IHsKICAgIHJpZ2h0OiA3NSU7CiAgfQogIC5jb2wtc20tcHVsbC04IHsKICAgIHJpZ2h0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVsbC03IHsKICAgIHJpZ2h0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVsbC02IHsKICAgIHJpZ2h0OiA1MCU7CiAgfQogIC5jb2wtc20tcHVsbC01IHsKICAgIHJpZ2h0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVsbC00IHsKICAgIHJpZ2h0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVsbC0zIHsKICAgIHJpZ2h0OiAyNSU7CiAgfQogIC5jb2wtc20tcHVsbC0yIHsKICAgIHJpZ2h0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVsbC0xIHsKICAgIHJpZ2h0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdWxsLTAgewogICAgcmlnaHQ6IDAlOwogIH0KICAuY29sLXNtLXB1c2gtMTIgewogICAgbGVmdDogMTAwJTsKICB9CiAgLmNvbC1zbS1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS1wdXNoLTEwIHsKICAgIGxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdXNoLTkgewogICAgbGVmdDogNzUlOwogIH0KICAuY29sLXNtLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVzaC03IHsKICAgIGxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdXNoLTYgewogICAgbGVmdDogNTAlOwogIH0KICAuY29sLXNtLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVzaC00IHsKICAgIGxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdXNoLTMgewogICAgbGVmdDogMjUlOwogIH0KICAuY29sLXNtLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVzaC0xIHsKICAgIGxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLXNtLXB1c2gtMCB7CiAgICBsZWZ0OiAwJTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMTIgewogICAgbWFyZ2luLWxlZnQ6IDEwMCU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMCB7CiAgICBtYXJnaW4tbGVmdDogMCU7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5jb2wtbWQtMSwgLmNvbC1tZC0yLCAuY29sLW1kLTMsIC5jb2wtbWQtNCwgLmNvbC1tZC01LCAuY29sLW1kLTYsIC5jb2wtbWQtNywgLmNvbC1tZC04LCAuY29sLW1kLTksIC5jb2wtbWQtMTAsIC5jb2wtbWQtMTEsIC5jb2wtbWQtMTIgewogICAgZmxvYXQ6IGxlZnQ7CiAgfQogIC5jb2wtbWQtMTIgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtbWQtMTEgewogICAgd2lkdGg6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC0xMCB7CiAgICB3aWR0aDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTkgewogICAgd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1tZC04IHsKICAgIHdpZHRoOiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtNyB7CiAgICB3aWR0aDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTYgewogICAgd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1tZC01IHsKICAgIHdpZHRoOiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtNCB7CiAgICB3aWR0aDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTMgewogICAgd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1tZC0yIHsKICAgIHdpZHRoOiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtMSB7CiAgICB3aWR0aDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVsbC0xMiB7CiAgICByaWdodDogMTAwJTsKICB9CiAgLmNvbC1tZC1wdWxsLTExIHsKICAgIHJpZ2h0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtcHVsbC0xMCB7CiAgICByaWdodDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtOSB7CiAgICByaWdodDogNzUlOwogIH0KICAuY29sLW1kLXB1bGwtOCB7CiAgICByaWdodDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtNyB7CiAgICByaWdodDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtNiB7CiAgICByaWdodDogNTAlOwogIH0KICAuY29sLW1kLXB1bGwtNSB7CiAgICByaWdodDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtNCB7CiAgICByaWdodDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtMyB7CiAgICByaWdodDogMjUlOwogIH0KICAuY29sLW1kLXB1bGwtMiB7CiAgICByaWdodDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtMSB7CiAgICByaWdodDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVsbC0wIHsKICAgIHJpZ2h0OiAwJTsKICB9CiAgLmNvbC1tZC1wdXNoLTEyIHsKICAgIGxlZnQ6IDEwMCU7CiAgfQogIC5jb2wtbWQtcHVzaC0xMSB7CiAgICBsZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtcHVzaC0xMCB7CiAgICBsZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVzaC05IHsKICAgIGxlZnQ6IDc1JTsKICB9CiAgLmNvbC1tZC1wdXNoLTggewogICAgbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1c2gtNyB7CiAgICBsZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVzaC02IHsKICAgIGxlZnQ6IDUwJTsKICB9CiAgLmNvbC1tZC1wdXNoLTUgewogICAgbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1c2gtNCB7CiAgICBsZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVzaC0zIHsKICAgIGxlZnQ6IDI1JTsKICB9CiAgLmNvbC1tZC1wdXNoLTIgewogICAgbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1c2gtMSB7CiAgICBsZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC1wdXNoLTAgewogICAgbGVmdDogMCU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTEyIHsKICAgIG1hcmdpbi1sZWZ0OiAxMDAlOwogIH0KICAuY29sLW1kLW9mZnNldC0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLW9mZnNldC0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLW9mZnNldC05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTggewogICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLW9mZnNldC02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLW9mZnNldC0zIHsKICAgIG1hcmdpbi1sZWZ0OiAyNSU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTAgewogICAgbWFyZ2luLWxlZnQ6IDAlOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmNvbC1sZy0xLCAuY29sLWxnLTIsIC5jb2wtbGctMywgLmNvbC1sZy00LCAuY29sLWxnLTUsIC5jb2wtbGctNiwgLmNvbC1sZy03LCAuY29sLWxnLTgsIC5jb2wtbGctOSwgLmNvbC1sZy0xMCwgLmNvbC1sZy0xMSwgLmNvbC1sZy0xMiB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgLmNvbC1sZy0xMiB7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgLmNvbC1sZy0xMSB7CiAgICB3aWR0aDogOTEuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLTEwIHsKICAgIHdpZHRoOiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctOSB7CiAgICB3aWR0aDogNzUlOwogIH0KICAuY29sLWxnLTggewogICAgd2lkdGg6IDY2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy03IHsKICAgIHdpZHRoOiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctNiB7CiAgICB3aWR0aDogNTAlOwogIH0KICAuY29sLWxnLTUgewogICAgd2lkdGg6IDQxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy00IHsKICAgIHdpZHRoOiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctMyB7CiAgICB3aWR0aDogMjUlOwogIH0KICAuY29sLWxnLTIgewogICAgd2lkdGg6IDE2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy0xIHsKICAgIHdpZHRoOiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdWxsLTEyIHsKICAgIHJpZ2h0OiAxMDAlOwogIH0KICAuY29sLWxnLXB1bGwtMTEgewogICAgcmlnaHQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy1wdWxsLTEwIHsKICAgIHJpZ2h0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctcHVsbC05IHsKICAgIHJpZ2h0OiA3NSU7CiAgfQogIC5jb2wtbGctcHVsbC04IHsKICAgIHJpZ2h0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVsbC03IHsKICAgIHJpZ2h0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctcHVsbC02IHsKICAgIHJpZ2h0OiA1MCU7CiAgfQogIC5jb2wtbGctcHVsbC01IHsKICAgIHJpZ2h0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVsbC00IHsKICAgIHJpZ2h0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctcHVsbC0zIHsKICAgIHJpZ2h0OiAyNSU7CiAgfQogIC5jb2wtbGctcHVsbC0yIHsKICAgIHJpZ2h0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVsbC0xIHsKICAgIHJpZ2h0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdWxsLTAgewogICAgcmlnaHQ6IDAlOwogIH0KICAuY29sLWxnLXB1c2gtMTIgewogICAgbGVmdDogMTAwJTsKICB9CiAgLmNvbC1sZy1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy1wdXNoLTEwIHsKICAgIGxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTkgewogICAgbGVmdDogNzUlOwogIH0KICAuY29sLWxnLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC03IHsKICAgIGxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTYgewogICAgbGVmdDogNTAlOwogIH0KICAuY29sLWxnLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC00IHsKICAgIGxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTMgewogICAgbGVmdDogMjUlOwogIH0KICAuY29sLWxnLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC0xIHsKICAgIGxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLXB1c2gtMCB7CiAgICBsZWZ0OiAwJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMTIgewogICAgbWFyZ2luLWxlZnQ6IDEwMCU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLW9mZnNldC03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLW9mZnNldC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLW9mZnNldC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMCB7CiAgICBtYXJnaW4tbGVmdDogMCU7CiAgfQp9CnRhYmxlIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KdGggewogIHRleHQtYWxpZ246IGxlZnQ7Cn0KLnRhYmxlIHsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGgsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQgewogIHBhZGRpbmc6IDhweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCB7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RkZDsKfQoudGFibGUgPiBjYXB0aW9uICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiBjb2xncm91cCArIHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCwKLnRhYmxlID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiBjYXB0aW9uICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkLAoudGFibGUgPiBjb2xncm91cCArIHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0ZCwKLnRhYmxlID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkIHsKICBib3JkZXItdG9wOiAwOwp9Ci50YWJsZSA+IHRib2R5ICsgdGJvZHkgewogIGJvcmRlci10b3A6IDJweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSAudGFibGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLnRhYmxlLWNvbmRlbnNlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRib2R5ID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRmb290ID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRmb290ID4gdHIgPiB0ZCB7CiAgcGFkZGluZzogNXB4Owp9Ci50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKfQoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGgsCi50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoLAoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGQsCi50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KLnRhYmxlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1jaGlsZChvZGQpID4gdGQsCi50YWJsZS1zdHJpcGVkID4gdGJvZHkgPiB0cjpudGgtY2hpbGQob2RkKSA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9CnRhYmxlIGNvbFtjbGFzcyo9ImNvbC0iXSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBmbG9hdDogbm9uZTsKICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47Cn0KdGFibGUgdGRbY2xhc3MqPSJjb2wtIl0sCnRhYmxlIHRoW2NsYXNzKj0iY29sLSJdIHsKICBwb3NpdGlvbjogc3RhdGljOwogIGZsb2F0OiBub25lOwogIGRpc3BsYXk6IHRhYmxlLWNlbGw7Cn0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLmFjdGl2ZSwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLmFjdGl2ZSwKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkLmFjdGl2ZSwKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLmFjdGl2ZSwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLmFjdGl2ZSwKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLmFjdGl2ZSwKLnRhYmxlID4gdGhlYWQgPiB0ci5hY3RpdmUgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ci5hY3RpdmUgPiB0ZCwKLnRhYmxlID4gdGZvb3QgPiB0ci5hY3RpdmUgPiB0ZCwKLnRhYmxlID4gdGhlYWQgPiB0ci5hY3RpdmUgPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ci5hY3RpdmUgPiB0aCwKLnRhYmxlID4gdGZvb3QgPiB0ci5hY3RpdmUgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKfQoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGQuYWN0aXZlOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGguYWN0aXZlOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLmFjdGl2ZTpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLmFjdGl2ZTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4Owp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5zdWNjZXNzLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQuc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkLnN1Y2Nlc3MsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5zdWNjZXNzLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGguc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLnN1Y2Nlc3MsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0ZCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0aCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRkLnN1Y2Nlc3M6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0aC5zdWNjZXNzOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLnN1Y2Nlc3M6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5zdWNjZXNzOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNkMGU5YzY7Cn0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLmluZm8sCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5pbmZvLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQuaW5mbywKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLmluZm8sCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC5pbmZvLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGguaW5mbywKLnRhYmxlID4gdGhlYWQgPiB0ci5pbmZvID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIuaW5mbyA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLmluZm8gPiB0ZCwKLnRhYmxlID4gdGhlYWQgPiB0ci5pbmZvID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIuaW5mbyA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyLmluZm8gPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNzsKfQoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGQuaW5mbzpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRoLmluZm86aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIuaW5mbzpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLmluZm86aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M0ZTNmMzsKfQoudGFibGUgPiB0aGVhZCA+IHRyID4gdGQud2FybmluZywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLndhcm5pbmcsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC53YXJuaW5nLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGgud2FybmluZywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLndhcm5pbmcsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC53YXJuaW5nLAoudGFibGUgPiB0aGVhZCA+IHRyLndhcm5pbmcgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ci53YXJuaW5nID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIud2FybmluZyA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyLndhcm5pbmcgPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ci53YXJuaW5nID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIud2FybmluZyA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0ZC53YXJuaW5nOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGgud2FybmluZzpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci53YXJuaW5nOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIud2FybmluZzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmMmNjOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRkLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRoLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5kYW5nZXI6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5kYW5nZXI6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ViY2NjYzsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBvdmVyZmxvdy15OiBoaWRkZW47CiAgICBvdmVyZmxvdy14OiBzY3JvbGw7CiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLWxlZnQ6IDA7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGg6bGFzdC1jaGlsZCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0aDpsYXN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmxhc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGQ6bGFzdC1jaGlsZCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0ZDpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci1yaWdodDogMDsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmxhc3QtY2hpbGQgPiB0aCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHI6bGFzdC1jaGlsZCA+IHRoLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0cjpsYXN0LWNoaWxkID4gdGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0ZCB7CiAgICBib3JkZXItYm90dG9tOiAwOwogIH0KfQpmaWVsZHNldCB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDA7CiAgYm9yZGVyOiAwOwogIG1pbi13aWR0aDogMDsKfQpsZWdlbmQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBmb250LXNpemU6IDIxcHg7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgY29sb3I6ICMzMzMzMzM7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlNWU1Owp9CmxhYmVsIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CmlucHV0W3R5cGU9InNlYXJjaCJdIHsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KaW5wdXRbdHlwZT0icmFkaW8iXSwKaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgbWFyZ2luOiA0cHggMCAwOwogIG1hcmdpbi10b3A6IDFweCBcOTsKICAvKiBJRTgtOSAqLwogIGxpbmUtaGVpZ2h0OiBub3JtYWw7Cn0KaW5wdXRbdHlwZT0iZmlsZSJdIHsKICBkaXNwbGF5OiBibG9jazsKfQppbnB1dFt0eXBlPSJyYW5nZSJdIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKfQpzZWxlY3RbbXVsdGlwbGVdLApzZWxlY3Rbc2l6ZV0gewogIGhlaWdodDogYXV0bzsKfQppbnB1dFt0eXBlPSJmaWxlIl06Zm9jdXMsCmlucHV0W3R5cGU9InJhZGlvIl06Zm9jdXMsCmlucHV0W3R5cGU9ImNoZWNrYm94Il06Zm9jdXMgewogIG91dGxpbmU6IHRoaW4gZG90dGVkOwogIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsKICBvdXRsaW5lLW9mZnNldDogLTJweDsKfQpvdXRwdXQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmctdG9wOiA3cHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjNTU1NTU1Owp9Ci5mb3JtLWNvbnRyb2wgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMzRweDsKICBwYWRkaW5nOiA2cHggMTJweDsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgY29sb3I6ICM1NTU1NTU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLCBib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7CiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsKfQouZm9ybS1jb250cm9sOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICM2NmFmZTk7CiAgb3V0bGluZTogMDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgOHB4IHJnYmEoMTAyLCAxNzUsIDIzMywgMC42KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwgMCAwIDhweCByZ2JhKDEwMiwgMTc1LCAyMzMsIDAuNik7Cn0KLmZvcm0tY29udHJvbDotbW96LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzk5OTk5OTsKfQouZm9ybS1jb250cm9sOjotbW96LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzk5OTk5OTsKICBvcGFjaXR5OiAxOwp9Ci5mb3JtLWNvbnRyb2w6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzk5OTk5OTsKfQouZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzk5OTk5OTsKfQouZm9ybS1jb250cm9sW2Rpc2FibGVkXSwKLmZvcm0tY29udHJvbFtyZWFkb25seV0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuZm9ybS1jb250cm9sIHsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgb3BhY2l0eTogMTsKfQp0ZXh0YXJlYS5mb3JtLWNvbnRyb2wgewogIGhlaWdodDogYXV0bzsKfQppbnB1dFt0eXBlPSJkYXRlIl0gewogIGxpbmUtaGVpZ2h0OiAzNHB4Owp9Ci5mb3JtLWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5yYWRpbywKLmNoZWNrYm94IHsKICBkaXNwbGF5OiBibG9jazsKICBtaW4taGVpZ2h0OiAyMHB4OwogIG1hcmdpbi10b3A6IDEwcHg7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7Cn0KLnJhZGlvIGxhYmVsLAouY2hlY2tib3ggbGFiZWwgewogIGRpc3BsYXk6IGlubGluZTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGN1cnNvcjogcG9pbnRlcjsKfQoucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKLnJhZGlvLWlubGluZSBpbnB1dFt0eXBlPSJyYWRpbyJdLAouY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKLmNoZWNrYm94LWlubGluZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBmbG9hdDogbGVmdDsKICBtYXJnaW4tbGVmdDogLTIwcHg7Cn0KLnJhZGlvICsgLnJhZGlvLAouY2hlY2tib3ggKyAuY2hlY2tib3ggewogIG1hcmdpbi10b3A6IC01cHg7Cn0KLnJhZGlvLWlubGluZSwKLmNoZWNrYm94LWlubGluZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBtYXJnaW4tYm90dG9tOiAwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLnJhZGlvLWlubGluZSArIC5yYWRpby1pbmxpbmUsCi5jaGVja2JveC1pbmxpbmUgKyAuY2hlY2tib3gtaW5saW5lIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1sZWZ0OiAxMHB4Owp9CmlucHV0W3R5cGU9InJhZGlvIl1bZGlzYWJsZWRdLAppbnB1dFt0eXBlPSJjaGVja2JveCJdW2Rpc2FibGVkXSwKLnJhZGlvW2Rpc2FibGVkXSwKLnJhZGlvLWlubGluZVtkaXNhYmxlZF0sCi5jaGVja2JveFtkaXNhYmxlZF0sCi5jaGVja2JveC1pbmxpbmVbZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gaW5wdXRbdHlwZT0icmFkaW8iXSwKZmllbGRzZXRbZGlzYWJsZWRdIGlucHV0W3R5cGU9ImNoZWNrYm94Il0sCmZpZWxkc2V0W2Rpc2FibGVkXSAucmFkaW8sCmZpZWxkc2V0W2Rpc2FibGVkXSAucmFkaW8taW5saW5lLApmaWVsZHNldFtkaXNhYmxlZF0gLmNoZWNrYm94LApmaWVsZHNldFtkaXNhYmxlZF0gLmNoZWNrYm94LWlubGluZSB7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQouaW5wdXQtc20gewogIGhlaWdodDogMzBweDsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0Kc2VsZWN0LmlucHV0LXNtIHsKICBoZWlnaHQ6IDMwcHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KdGV4dGFyZWEuaW5wdXQtc20sCnNlbGVjdFttdWx0aXBsZV0uaW5wdXQtc20gewogIGhlaWdodDogYXV0bzsKfQouaW5wdXQtbGcgewogIGhlaWdodDogNDZweDsKICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAxLjMzOwogIGJvcmRlci1yYWRpdXM6IDZweDsKfQpzZWxlY3QuaW5wdXQtbGcgewogIGhlaWdodDogNDZweDsKICBsaW5lLWhlaWdodDogNDZweDsKfQp0ZXh0YXJlYS5pbnB1dC1sZywKc2VsZWN0W211bHRpcGxlXS5pbnB1dC1sZyB7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5oYXMtZmVlZGJhY2sgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wgewogIHBhZGRpbmctcmlnaHQ6IDQyLjVweDsKfQouaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDI1cHg7CiAgcmlnaHQ6IDA7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDM0cHg7CiAgaGVpZ2h0OiAzNHB4OwogIGxpbmUtaGVpZ2h0OiAzNHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouaGFzLXN1Y2Nlc3MgLmhlbHAtYmxvY2ssCi5oYXMtc3VjY2VzcyAuY29udHJvbC1sYWJlbCwKLmhhcy1zdWNjZXNzIC5yYWRpbywKLmhhcy1zdWNjZXNzIC5jaGVja2JveCwKLmhhcy1zdWNjZXNzIC5yYWRpby1pbmxpbmUsCi5oYXMtc3VjY2VzcyAuY2hlY2tib3gtaW5saW5lIHsKICBjb2xvcjogIzNjNzYzZDsKfQouaGFzLXN1Y2Nlc3MgLmZvcm0tY29udHJvbCB7CiAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQouaGFzLXN1Y2Nlc3MgLmZvcm0tY29udHJvbDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjMmI1NDJjOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgNnB4ICM2N2IxNjg7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgNnB4ICM2N2IxNjg7Cn0KLmhhcy1zdWNjZXNzIC5pbnB1dC1ncm91cC1hZGRvbiB7CiAgY29sb3I6ICMzYzc2M2Q7CiAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KLmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIGNvbG9yOiAjM2M3NjNkOwp9Ci5oYXMtd2FybmluZyAuaGVscC1ibG9jaywKLmhhcy13YXJuaW5nIC5jb250cm9sLWxhYmVsLAouaGFzLXdhcm5pbmcgLnJhZGlvLAouaGFzLXdhcm5pbmcgLmNoZWNrYm94LAouaGFzLXdhcm5pbmcgLnJhZGlvLWlubGluZSwKLmhhcy13YXJuaW5nIC5jaGVja2JveC1pbmxpbmUgewogIGNvbG9yOiAjOGE2ZDNiOwp9Ci5oYXMtd2FybmluZyAuZm9ybS1jb250cm9sIHsKICBib3JkZXItY29sb3I6ICM4YTZkM2I7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwp9Ci5oYXMtd2FybmluZyAuZm9ybS1jb250cm9sOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICM2NjUxMmM7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCA2cHggI2MwYTE2YjsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCA2cHggI2MwYTE2YjsKfQouaGFzLXdhcm5pbmcgLmlucHV0LWdyb3VwLWFkZG9uIHsKICBjb2xvcjogIzhhNmQzYjsKICBib3JkZXItY29sb3I6ICM4YTZkM2I7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQouaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgY29sb3I6ICM4YTZkM2I7Cn0KLmhhcy1lcnJvciAuaGVscC1ibG9jaywKLmhhcy1lcnJvciAuY29udHJvbC1sYWJlbCwKLmhhcy1lcnJvciAucmFkaW8sCi5oYXMtZXJyb3IgLmNoZWNrYm94LAouaGFzLWVycm9yIC5yYWRpby1pbmxpbmUsCi5oYXMtZXJyb3IgLmNoZWNrYm94LWlubGluZSB7CiAgY29sb3I6ICNhOTQ0NDI7Cn0KLmhhcy1lcnJvciAuZm9ybS1jb250cm9sIHsKICBib3JkZXItY29sb3I6ICNhOTQ0NDI7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwp9Ci5oYXMtZXJyb3IgLmZvcm0tY29udHJvbDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjODQzNTM0OwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgNnB4ICNjZTg0ODM7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgNnB4ICNjZTg0ODM7Cn0KLmhhcy1lcnJvciAuaW5wdXQtZ3JvdXAtYWRkb24gewogIGNvbG9yOiAjYTk0NDQyOwogIGJvcmRlci1jb2xvcjogI2E5NDQ0MjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJkZWRlOwp9Ci5oYXMtZXJyb3IgLmZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgY29sb3I6ICNhOTQ0NDI7Cn0KLmZvcm0tY29udHJvbC1zdGF0aWMgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmhlbHAtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi10b3A6IDVweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIGNvbG9yOiAjNzM3MzczOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5mb3JtLWlubGluZSAuZm9ybS1ncm91cCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IGF1dG87CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIH0KICAuZm9ybS1pbmxpbmUgLmNvbnRyb2wtbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5mb3JtLWlubGluZSAucmFkaW8sCiAgLmZvcm0taW5saW5lIC5jaGVja2JveCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5mb3JtLWlubGluZSAucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKICAuZm9ybS1pbmxpbmUgLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgZmxvYXQ6IG5vbmU7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLmZvcm0taW5saW5lIC5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICB0b3A6IDA7CiAgfQp9Ci5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtbGFiZWwsCi5mb3JtLWhvcml6b250YWwgLnJhZGlvLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCwKLmZvcm0taG9yaXpvbnRhbCAucmFkaW8taW5saW5lLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveC1pbmxpbmUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBwYWRkaW5nLXRvcDogN3B4Owp9Ci5mb3JtLWhvcml6b250YWwgLnJhZGlvLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCB7CiAgbWluLWhlaWdodDogMjdweDsKfQouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwIHsKICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKfQouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWNvbnRyb2wtc3RhdGljIHsKICBwYWRkaW5nLXRvcDogN3B4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtbGFiZWwgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgfQp9Ci5mb3JtLWhvcml6b250YWwgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICB0b3A6IDA7CiAgcmlnaHQ6IDE1cHg7Cn0KLmJ0biB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHBhZGRpbmc6IDZweCAxMnB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAtby11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKfQouYnRuOmZvY3VzIHsKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7Cn0KLmJ0bjpob3ZlciwKLmJ0bjpmb2N1cyB7CiAgY29sb3I6ICMzMzM7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5idG46YWN0aXZlLAouYnRuLmFjdGl2ZSB7CiAgb3V0bGluZTogMDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQouYnRuLmRpc2FibGVkLAouYnRuW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4gewogIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgb3BhY2l0eTogMC42NTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjUpOwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICBib3gtc2hhZG93OiBub25lOwp9Ci5idG4tZGVmYXVsdCB7CiAgY29sb3I6ICMzMzM7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNjY2M7Cn0KLmJ0bi1kZWZhdWx0OmhvdmVyLAouYnRuLWRlZmF1bHQ6Zm9jdXMsCi5idG4tZGVmYXVsdDphY3RpdmUsCi5idG4tZGVmYXVsdC5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWRlZmF1bHQgewogIGNvbG9yOiAjMzMzOwogIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7CiAgYm9yZGVyLWNvbG9yOiAjYWRhZGFkOwp9Ci5idG4tZGVmYXVsdDphY3RpdmUsCi5idG4tZGVmYXVsdC5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWRlZmF1bHQgewogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1kZWZhdWx0LmRpc2FibGVkLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0LAouYnRuLWRlZmF1bHQuZGlzYWJsZWQ6aG92ZXIsCi5idG4tZGVmYXVsdFtkaXNhYmxlZF06aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6aG92ZXIsCi5idG4tZGVmYXVsdC5kaXNhYmxlZDpmb2N1cywKLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdDpmb2N1cywKLmJ0bi1kZWZhdWx0LmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXTphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6YWN0aXZlLAouYnRuLWRlZmF1bHQuZGlzYWJsZWQuYWN0aXZlLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdC5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyLWNvbG9yOiAjY2NjOwp9Ci5idG4tZGVmYXVsdCAuYmFkZ2UgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzMzM7Cn0KLmJ0bi1wcmltYXJ5IHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwogIGJvcmRlci1jb2xvcjogIzM1N2ViZDsKfQouYnRuLXByaW1hcnk6aG92ZXIsCi5idG4tcHJpbWFyeTpmb2N1cywKLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5LmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tcHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMyNzZiMTsKICBib3JkZXItY29sb3I6ICMyODVlOGU7Cn0KLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5LmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tcHJpbWFyeSB7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQouYnRuLXByaW1hcnkuZGlzYWJsZWQsCi5idG4tcHJpbWFyeVtkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnksCi5idG4tcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwKLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeTpob3ZlciwKLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmZvY3VzLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmZvY3VzLAouYnRuLXByaW1hcnkuZGlzYWJsZWQ6YWN0aXZlLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdOmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeTphY3RpdmUsCi5idG4tcHJpbWFyeS5kaXNhYmxlZC5hY3RpdmUsCi5idG4tcHJpbWFyeVtkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5LmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKICBib3JkZXItY29sb3I6ICMzNTdlYmQ7Cn0KLmJ0bi1wcmltYXJ5IC5iYWRnZSB7CiAgY29sb3I6ICM0MjhiY2E7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQouYnRuLXN1Y2Nlc3MgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM1Y2I4NWM7CiAgYm9yZGVyLWNvbG9yOiAjNGNhZTRjOwp9Ci5idG4tc3VjY2Vzczpob3ZlciwKLmJ0bi1zdWNjZXNzOmZvY3VzLAouYnRuLXN1Y2Nlc3M6YWN0aXZlLAouYnRuLXN1Y2Nlc3MuYWN0aXZlLAoub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1zdWNjZXNzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdhNDQ3OwogIGJvcmRlci1jb2xvcjogIzM5ODQzOTsKfQouYnRuLXN1Y2Nlc3M6YWN0aXZlLAouYnRuLXN1Y2Nlc3MuYWN0aXZlLAoub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4tc3VjY2Vzcy5kaXNhYmxlZCwKLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2VzcywKLmJ0bi1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLAouYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzOmhvdmVyLAouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF06Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3M6Zm9jdXMsCi5idG4tc3VjY2Vzcy5kaXNhYmxlZDphY3RpdmUsCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF06YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmJ0bi1zdWNjZXNzLmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3MuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjOwogIGJvcmRlci1jb2xvcjogIzRjYWU0YzsKfQouYnRuLXN1Y2Nlc3MgLmJhZGdlIHsKICBjb2xvcjogIzVjYjg1YzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5idG4taW5mbyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKICBib3JkZXItY29sb3I6ICM0NmI4ZGE7Cn0KLmJ0bi1pbmZvOmhvdmVyLAouYnRuLWluZm86Zm9jdXMsCi5idG4taW5mbzphY3RpdmUsCi5idG4taW5mby5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWluZm8gewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzOWIzZDc7CiAgYm9yZGVyLWNvbG9yOiAjMjY5YWJjOwp9Ci5idG4taW5mbzphY3RpdmUsCi5idG4taW5mby5hY3RpdmUsCi5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWluZm8gewogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1pbmZvLmRpc2FibGVkLAouYnRuLWluZm9bZGlzYWJsZWRdLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvLAouYnRuLWluZm8uZGlzYWJsZWQ6aG92ZXIsCi5idG4taW5mb1tkaXNhYmxlZF06aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm86aG92ZXIsCi5idG4taW5mby5kaXNhYmxlZDpmb2N1cywKLmJ0bi1pbmZvW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbzpmb2N1cywKLmJ0bi1pbmZvLmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi1pbmZvW2Rpc2FibGVkXTphY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm86YWN0aXZlLAouYnRuLWluZm8uZGlzYWJsZWQuYWN0aXZlLAouYnRuLWluZm9bZGlzYWJsZWRdLmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mby5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICM1YmMwZGU7CiAgYm9yZGVyLWNvbG9yOiAjNDZiOGRhOwp9Ci5idG4taW5mbyAuYmFkZ2UgewogIGNvbG9yOiAjNWJjMGRlOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmJ0bi13YXJuaW5nIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOwogIGJvcmRlci1jb2xvcjogI2VlYTIzNjsKfQouYnRuLXdhcm5pbmc6aG92ZXIsCi5idG4td2FybmluZzpmb2N1cywKLmJ0bi13YXJuaW5nOmFjdGl2ZSwKLmJ0bi13YXJuaW5nLmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4td2FybmluZyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VkOWMyODsKICBib3JkZXItY29sb3I6ICNkNTg1MTI7Cn0KLmJ0bi13YXJuaW5nOmFjdGl2ZSwKLmJ0bi13YXJuaW5nLmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4td2FybmluZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQouYnRuLXdhcm5pbmcuZGlzYWJsZWQsCi5idG4td2FybmluZ1tkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmcsCi5idG4td2FybmluZy5kaXNhYmxlZDpob3ZlciwKLmJ0bi13YXJuaW5nW2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZzpob3ZlciwKLmJ0bi13YXJuaW5nLmRpc2FibGVkOmZvY3VzLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nOmZvY3VzLAouYnRuLXdhcm5pbmcuZGlzYWJsZWQ6YWN0aXZlLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZzphY3RpdmUsCi5idG4td2FybmluZy5kaXNhYmxlZC5hY3RpdmUsCi5idG4td2FybmluZ1tkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTsKICBib3JkZXItY29sb3I6ICNlZWEyMzY7Cn0KLmJ0bi13YXJuaW5nIC5iYWRnZSB7CiAgY29sb3I6ICNmMGFkNGU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQouYnRuLWRhbmdlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q5NTM0ZjsKICBib3JkZXItY29sb3I6ICNkNDNmM2E7Cn0KLmJ0bi1kYW5nZXI6aG92ZXIsCi5idG4tZGFuZ2VyOmZvY3VzLAouYnRuLWRhbmdlcjphY3RpdmUsCi5idG4tZGFuZ2VyLmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2VyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDIzMjJkOwogIGJvcmRlci1jb2xvcjogI2FjMjkyNTsKfQouYnRuLWRhbmdlcjphY3RpdmUsCi5idG4tZGFuZ2VyLmFjdGl2ZSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4tZGFuZ2VyLmRpc2FibGVkLAouYnRuLWRhbmdlcltkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlciwKLmJ0bi1kYW5nZXIuZGlzYWJsZWQ6aG92ZXIsCi5idG4tZGFuZ2VyW2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmhvdmVyLAouYnRuLWRhbmdlci5kaXNhYmxlZDpmb2N1cywKLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXI6Zm9jdXMsCi5idG4tZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmFjdGl2ZSwKLmJ0bi1kYW5nZXIuZGlzYWJsZWQuYWN0aXZlLAouYnRuLWRhbmdlcltkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXIuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwogIGJvcmRlci1jb2xvcjogI2Q0M2YzYTsKfQouYnRuLWRhbmdlciAuYmFkZ2UgewogIGNvbG9yOiAjZDk1MzRmOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmJ0bi1saW5rIHsKICBjb2xvcjogIzQyOGJjYTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tbGluaywKLmJ0bi1saW5rOmFjdGl2ZSwKLmJ0bi1saW5rW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluayB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ0bi1saW5rLAouYnRuLWxpbms6aG92ZXIsCi5idG4tbGluazpmb2N1cywKLmJ0bi1saW5rOmFjdGl2ZSB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLWxpbms6aG92ZXIsCi5idG4tbGluazpmb2N1cyB7CiAgY29sb3I6ICMyYTY0OTY7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1saW5rW2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpob3ZlciwKLmJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpmb2N1cyB7CiAgY29sb3I6ICM5OTk5OTk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5idG4tbGcgewogIHBhZGRpbmc6IDEwcHggMTZweDsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDEuMzM7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5idG4tc20gewogIHBhZGRpbmc6IDVweCAxMHB4OwogIGZvbnQtc2l6ZTogMTJweDsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDNweDsKfQouYnRuLXhzIHsKICBwYWRkaW5nOiAxcHggNXB4OwogIGZvbnQtc2l6ZTogMTJweDsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDNweDsKfQouYnRuLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgcGFkZGluZy1yaWdodDogMDsKfQouYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7CiAgbWFyZ2luLXRvcDogNXB4Owp9CmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywKaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssCmlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7CiAgd2lkdGg6IDEwMCU7Cn0KLmZhZGUgewogIG9wYWNpdHk6IDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKfQouZmFkZS5pbiB7CiAgb3BhY2l0eTogMTsKfQouY29sbGFwc2UgewogIGRpc3BsYXk6IG5vbmU7Cn0KLmNvbGxhcHNlLmluIHsKICBkaXNwbGF5OiBibG9jazsKfQouY29sbGFwc2luZyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGhlaWdodDogMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIC13ZWJraXQtdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7CiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdHbHlwaGljb25zIEhhbGZsaW5ncyc7CiAgc3JjOiB1cmwoJy4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuZW90Jyk7CiAgc3JjOiB1cmwoJy4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgdXJsKCcuLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSwgdXJsKCcuLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnN2ZyNnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXInKSBmb3JtYXQoJ3N2ZycpOwp9Ci5nbHlwaGljb24gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDFweDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZm9udC1mYW1pbHk6ICdHbHlwaGljb25zIEhhbGZsaW5ncyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IDE7CiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKfQouZ2x5cGhpY29uLWFzdGVyaXNrOmJlZm9yZSB7CiAgY29udGVudDogIlwyYSI7Cn0KLmdseXBoaWNvbi1wbHVzOmJlZm9yZSB7CiAgY29udGVudDogIlwyYiI7Cn0KLmdseXBoaWNvbi1ldXJvOmJlZm9yZSB7CiAgY29udGVudDogIlwyMGFjIjsKfQouZ2x5cGhpY29uLW1pbnVzOmJlZm9yZSB7CiAgY29udGVudDogIlwyMjEyIjsKfQouZ2x5cGhpY29uLWNsb3VkOmJlZm9yZSB7CiAgY29udGVudDogIlwyNjAxIjsKfQouZ2x5cGhpY29uLWVudmVsb3BlOmJlZm9yZSB7CiAgY29udGVudDogIlwyNzA5IjsKfQouZ2x5cGhpY29uLXBlbmNpbDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjcwZiI7Cn0KLmdseXBoaWNvbi1nbGFzczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAwMSI7Cn0KLmdseXBoaWNvbi1tdXNpYzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAwMiI7Cn0KLmdseXBoaWNvbi1zZWFyY2g6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDMiOwp9Ci5nbHlwaGljb24taGVhcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDUiOwp9Ci5nbHlwaGljb24tc3RhcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAwNiI7Cn0KLmdseXBoaWNvbi1zdGFyLWVtcHR5OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDA3IjsKfQouZ2x5cGhpY29uLXVzZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDgiOwp9Ci5nbHlwaGljb24tZmlsbTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAwOSI7Cn0KLmdseXBoaWNvbi10aC1sYXJnZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxMCI7Cn0KLmdseXBoaWNvbi10aDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxMSI7Cn0KLmdseXBoaWNvbi10aC1saXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDEyIjsKfQouZ2x5cGhpY29uLW9rOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDEzIjsKfQouZ2x5cGhpY29uLXJlbW92ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxNCI7Cn0KLmdseXBoaWNvbi16b29tLWluOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDE1IjsKfQouZ2x5cGhpY29uLXpvb20tb3V0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDE2IjsKfQouZ2x5cGhpY29uLW9mZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxNyI7Cn0KLmdseXBoaWNvbi1zaWduYWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTgiOwp9Ci5nbHlwaGljb24tY29nOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDE5IjsKfQouZ2x5cGhpY29uLXRyYXNoOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDIwIjsKfQouZ2x5cGhpY29uLWhvbWU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjEiOwp9Ci5nbHlwaGljb24tZmlsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyMiI7Cn0KLmdseXBoaWNvbi10aW1lOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDIzIjsKfQouZ2x5cGhpY29uLXJvYWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjQiOwp9Ci5nbHlwaGljb24tZG93bmxvYWQtYWx0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDI1IjsKfQouZ2x5cGhpY29uLWRvd25sb2FkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDI2IjsKfQouZ2x5cGhpY29uLXVwbG9hZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyNyI7Cn0KLmdseXBoaWNvbi1pbmJveDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyOCI7Cn0KLmdseXBoaWNvbi1wbGF5LWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyOSI7Cn0KLmdseXBoaWNvbi1yZXBlYXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzAiOwp9Ci5nbHlwaGljb24tcmVmcmVzaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzMSI7Cn0KLmdseXBoaWNvbi1saXN0LWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzMiI7Cn0KLmdseXBoaWNvbi1sb2NrOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDMzIjsKfQouZ2x5cGhpY29uLWZsYWc6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzQiOwp9Ci5nbHlwaGljb24taGVhZHBob25lczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzNSI7Cn0KLmdseXBoaWNvbi12b2x1bWUtb2ZmOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDM2IjsKfQouZ2x5cGhpY29uLXZvbHVtZS1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDM3IjsKfQouZ2x5cGhpY29uLXZvbHVtZS11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzOCI7Cn0KLmdseXBoaWNvbi1xcmNvZGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzkiOwp9Ci5nbHlwaGljb24tYmFyY29kZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0MCI7Cn0KLmdseXBoaWNvbi10YWc6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNDEiOwp9Ci5nbHlwaGljb24tdGFnczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0MiI7Cn0KLmdseXBoaWNvbi1ib29rOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQzIjsKfQouZ2x5cGhpY29uLWJvb2ttYXJrOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQ0IjsKfQouZ2x5cGhpY29uLXByaW50OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQ1IjsKfQouZ2x5cGhpY29uLWNhbWVyYTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0NiI7Cn0KLmdseXBoaWNvbi1mb250OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQ3IjsKfQouZ2x5cGhpY29uLWJvbGQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNDgiOwp9Ci5nbHlwaGljb24taXRhbGljOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQ5IjsKfQouZ2x5cGhpY29uLXRleHQtaGVpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDUwIjsKfQouZ2x5cGhpY29uLXRleHQtd2lkdGg6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTEiOwp9Ci5nbHlwaGljb24tYWxpZ24tbGVmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1MiI7Cn0KLmdseXBoaWNvbi1hbGlnbi1jZW50ZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTMiOwp9Ci5nbHlwaGljb24tYWxpZ24tcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTQiOwp9Ci5nbHlwaGljb24tYWxpZ24tanVzdGlmeTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1NSI7Cn0KLmdseXBoaWNvbi1saXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDU2IjsKfQouZ2x5cGhpY29uLWluZGVudC1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDU3IjsKfQouZ2x5cGhpY29uLWluZGVudC1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1OCI7Cn0KLmdseXBoaWNvbi1mYWNldGltZS12aWRlbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1OSI7Cn0KLmdseXBoaWNvbi1waWN0dXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDYwIjsKfQouZ2x5cGhpY29uLW1hcC1tYXJrZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjIiOwp9Ci5nbHlwaGljb24tYWRqdXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDYzIjsKfQouZ2x5cGhpY29uLXRpbnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjQiOwp9Ci5nbHlwaGljb24tZWRpdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2NSI7Cn0KLmdseXBoaWNvbi1zaGFyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2NiI7Cn0KLmdseXBoaWNvbi1jaGVjazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2NyI7Cn0KLmdseXBoaWNvbi1tb3ZlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDY4IjsKfQouZ2x5cGhpY29uLXN0ZXAtYmFja3dhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjkiOwp9Ci5nbHlwaGljb24tZmFzdC1iYWNrd2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3MCI7Cn0KLmdseXBoaWNvbi1iYWNrd2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3MSI7Cn0KLmdseXBoaWNvbi1wbGF5OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDcyIjsKfQouZ2x5cGhpY29uLXBhdXNlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDczIjsKfQouZ2x5cGhpY29uLXN0b3A6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzQiOwp9Ci5nbHlwaGljb24tZm9yd2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3NSI7Cn0KLmdseXBoaWNvbi1mYXN0LWZvcndhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzYiOwp9Ci5nbHlwaGljb24tc3RlcC1mb3J3YXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDc3IjsKfQouZ2x5cGhpY29uLWVqZWN0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDc4IjsKfQouZ2x5cGhpY29uLWNoZXZyb24tbGVmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3OSI7Cn0KLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDgwIjsKfQouZ2x5cGhpY29uLXBsdXMtc2lnbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4MSI7Cn0KLmdseXBoaWNvbi1taW51cy1zaWduOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDgyIjsKfQouZ2x5cGhpY29uLXJlbW92ZS1zaWduOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDgzIjsKfQouZ2x5cGhpY29uLW9rLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODQiOwp9Ci5nbHlwaGljb24tcXVlc3Rpb24tc2lnbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4NSI7Cn0KLmdseXBoaWNvbi1pbmZvLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODYiOwp9Ci5nbHlwaGljb24tc2NyZWVuc2hvdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4NyI7Cn0KLmdseXBoaWNvbi1yZW1vdmUtY2lyY2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDg4IjsKfQouZ2x5cGhpY29uLW9rLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4OSI7Cn0KLmdseXBoaWNvbi1iYW4tY2lyY2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDkwIjsKfQouZ2x5cGhpY29uLWFycm93LWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwOTEiOwp9Ci5nbHlwaGljb24tYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwOTIiOwp9Ci5nbHlwaGljb24tYXJyb3ctdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwOTMiOwp9Ci5nbHlwaGljb24tYXJyb3ctZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA5NCI7Cn0KLmdseXBoaWNvbi1zaGFyZS1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwOTUiOwp9Ci5nbHlwaGljb24tcmVzaXplLWZ1bGw6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwOTYiOwp9Ci5nbHlwaGljb24tcmVzaXplLXNtYWxsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDk3IjsKfQouZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDEiOwp9Ci5nbHlwaGljb24tZ2lmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEwMiI7Cn0KLmdseXBoaWNvbi1sZWFmOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTAzIjsKfQouZ2x5cGhpY29uLWZpcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDQiOwp9Ci5nbHlwaGljb24tZXllLW9wZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDUiOwp9Ci5nbHlwaGljb24tZXllLWNsb3NlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTA2IjsKfQouZ2x5cGhpY29uLXdhcm5pbmctc2lnbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEwNyI7Cn0KLmdseXBoaWNvbi1wbGFuZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEwOCI7Cn0KLmdseXBoaWNvbi1jYWxlbmRhcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEwOSI7Cn0KLmdseXBoaWNvbi1yYW5kb206YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTAiOwp9Ci5nbHlwaGljb24tY29tbWVudDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTExMSI7Cn0KLmdseXBoaWNvbi1tYWduZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTIiOwp9Ci5nbHlwaGljb24tY2hldnJvbi11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTExMyI7Cn0KLmdseXBoaWNvbi1jaGV2cm9uLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTQiOwp9Ci5nbHlwaGljb24tcmV0d2VldDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTExNSI7Cn0KLmdseXBoaWNvbi1zaG9wcGluZy1jYXJ0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTE2IjsKfQouZ2x5cGhpY29uLWZvbGRlci1jbG9zZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTExNyI7Cn0KLmdseXBoaWNvbi1mb2xkZXItb3BlbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTExOCI7Cn0KLmdseXBoaWNvbi1yZXNpemUtdmVydGljYWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTkiOwp9Ci5nbHlwaGljb24tcmVzaXplLWhvcml6b250YWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMjAiOwp9Ci5nbHlwaGljb24taGRkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTIxIjsKfQouZ2x5cGhpY29uLWJ1bGxob3JuOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTIyIjsKfQouZ2x5cGhpY29uLWJlbGw6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMjMiOwp9Ci5nbHlwaGljb24tY2VydGlmaWNhdGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMjQiOwp9Ci5nbHlwaGljb24tdGh1bWJzLXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI1IjsKfQouZ2x5cGhpY29uLXRodW1icy1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI2IjsKfQouZ2x5cGhpY29uLWhhbmQtcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMjciOwp9Ci5nbHlwaGljb24taGFuZC1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI4IjsKfQouZ2x5cGhpY29uLWhhbmQtdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMjkiOwp9Ci5nbHlwaGljb24taGFuZC1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTMwIjsKfQouZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzMSI7Cn0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctbGVmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzMiI7Cn0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzMiOwp9Ci5nbHlwaGljb24tY2lyY2xlLWFycm93LWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzQiOwp9Ci5nbHlwaGljb24tZ2xvYmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzUiOwp9Ci5nbHlwaGljb24td3JlbmNoOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTM2IjsKfQouZ2x5cGhpY29uLXRhc2tzOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTM3IjsKfQouZ2x5cGhpY29uLWZpbHRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzOCI7Cn0KLmdseXBoaWNvbi1icmllZmNhc2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzkiOwp9Ci5nbHlwaGljb24tZnVsbHNjcmVlbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE0MCI7Cn0KLmdseXBoaWNvbi1kYXNoYm9hcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNDEiOwp9Ci5nbHlwaGljb24tcGFwZXJjbGlwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQyIjsKfQouZ2x5cGhpY29uLWhlYXJ0LWVtcHR5OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQzIjsKfQouZ2x5cGhpY29uLWxpbms6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNDQiOwp9Ci5nbHlwaGljb24tcGhvbmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNDUiOwp9Ci5nbHlwaGljb24tcHVzaHBpbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE0NiI7Cn0KLmdseXBoaWNvbi11c2Q6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNDgiOwp9Ci5nbHlwaGljb24tZ2JwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQ5IjsKfQouZ2x5cGhpY29uLXNvcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTAiOwp9Ci5nbHlwaGljb24tc29ydC1ieS1hbHBoYWJldDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1MSI7Cn0KLmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0LWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1MiI7Cn0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTUzIjsKfQouZ2x5cGhpY29uLXNvcnQtYnktb3JkZXItYWx0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTU0IjsKfQouZ2x5cGhpY29uLXNvcnQtYnktYXR0cmlidXRlczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1NSI7Cn0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMtYWx0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTU2IjsKfQouZ2x5cGhpY29uLXVuY2hlY2tlZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1NyI7Cn0KLmdseXBoaWNvbi1leHBhbmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTgiOwp9Ci5nbHlwaGljb24tY29sbGFwc2UtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1OSI7Cn0KLmdseXBoaWNvbi1jb2xsYXBzZS11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2MCI7Cn0KLmdseXBoaWNvbi1sb2ctaW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjEiOwp9Ci5nbHlwaGljb24tZmxhc2g6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjIiOwp9Ci5nbHlwaGljb24tbG9nLW91dDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2MyI7Cn0KLmdseXBoaWNvbi1uZXctd2luZG93OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTY0IjsKfQouZ2x5cGhpY29uLXJlY29yZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2NSI7Cn0KLmdseXBoaWNvbi1zYXZlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTY2IjsKfQouZ2x5cGhpY29uLW9wZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjciOwp9Ci5nbHlwaGljb24tc2F2ZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjgiOwp9Ci5nbHlwaGljb24taW1wb3J0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTY5IjsKfQouZ2x5cGhpY29uLWV4cG9ydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3MCI7Cn0KLmdseXBoaWNvbi1zZW5kOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTcxIjsKfQouZ2x5cGhpY29uLWZsb3BweS1kaXNrOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTcyIjsKfQouZ2x5cGhpY29uLWZsb3BweS1zYXZlZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3MyI7Cn0KLmdseXBoaWNvbi1mbG9wcHktcmVtb3ZlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTc0IjsKfQouZ2x5cGhpY29uLWZsb3BweS1zYXZlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTc1IjsKfQouZ2x5cGhpY29uLWZsb3BweS1vcGVuOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTc2IjsKfQouZ2x5cGhpY29uLWNyZWRpdC1jYXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTc3IjsKfQouZ2x5cGhpY29uLXRyYW5zZmVyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTc4IjsKfQouZ2x5cGhpY29uLWN1dGxlcnk6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNzkiOwp9Ci5nbHlwaGljb24taGVhZGVyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTgwIjsKfQouZ2x5cGhpY29uLWNvbXByZXNzZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxODEiOwp9Ci5nbHlwaGljb24tZWFycGhvbmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxODIiOwp9Ci5nbHlwaGljb24tcGhvbmUtYWx0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTgzIjsKfQouZ2x5cGhpY29uLXRvd2VyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTg0IjsKfQouZ2x5cGhpY29uLXN0YXRzOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTg1IjsKfQouZ2x5cGhpY29uLXNkLXZpZGVvOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTg2IjsKfQouZ2x5cGhpY29uLWhkLXZpZGVvOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTg3IjsKfQouZ2x5cGhpY29uLXN1YnRpdGxlczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4OCI7Cn0KLmdseXBoaWNvbi1zb3VuZC1zdGVyZW86YmVmb3JlIHsKICBjb250ZW50OiAiXGUxODkiOwp9Ci5nbHlwaGljb24tc291bmQtZG9sYnk6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTAiOwp9Ci5nbHlwaGljb24tc291bmQtNS0xOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTkxIjsKfQouZ2x5cGhpY29uLXNvdW5kLTYtMTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE5MiI7Cn0KLmdseXBoaWNvbi1zb3VuZC03LTE6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTMiOwp9Ci5nbHlwaGljb24tY29weXJpZ2h0LW1hcms6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTQiOwp9Ci5nbHlwaGljb24tcmVnaXN0cmF0aW9uLW1hcms6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTUiOwp9Ci5nbHlwaGljb24tY2xvdWQtZG93bmxvYWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTciOwp9Ci5nbHlwaGljb24tY2xvdWQtdXBsb2FkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTk4IjsKfQouZ2x5cGhpY29uLXRyZWUtY29uaWZlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE5OSI7Cn0KLmdseXBoaWNvbi10cmVlLWRlY2lkdW91czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTIwMCI7Cn0KLmNhcmV0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAycHg7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBib3JkZXItdG9wOiA0cHggc29saWQ7CiAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKfQouZHJvcGRvd24gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBvdXRsaW5lOiAwOwp9Ci5kcm9wZG93bi1tZW51IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMDAlOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAwMDsKICBkaXNwbGF5OiBub25lOwogIGZsb2F0OiBsZWZ0OwogIG1pbi13aWR0aDogMTYwcHg7CiAgcGFkZGluZzogNXB4IDA7CiAgbWFyZ2luOiAycHggMCAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgZm9udC1zaXplOiAxNHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE3NSk7CiAgYm94LXNoYWRvdzogMCA2cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTc1KTsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94Owp9Ci5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQgewogIHJpZ2h0OiAwOwogIGxlZnQ6IGF1dG87Cn0KLmRyb3Bkb3duLW1lbnUgLmRpdmlkZXIgewogIGhlaWdodDogMXB4OwogIG1hcmdpbjogOXB4IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1Owp9Ci5kcm9wZG93bi1tZW51ID4gbGkgPiBhIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAzcHggMjBweDsKICBjbGVhcjogYm90aDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjMzMzMzMzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsCi5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICMyNjI2MjY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKfQouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhLAouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmhvdmVyLAouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgb3V0bGluZTogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwp9Ci5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSwKLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmhvdmVyLAouZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGE6Zm9jdXMgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYTpob3ZlciwKLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkID0gZmFsc2UpOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLm9wZW4gPiAuZHJvcGRvd24tbWVudSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLm9wZW4gPiBhIHsKICBvdXRsaW5lOiAwOwp9Ci5kcm9wZG93bi1tZW51LXJpZ2h0IHsKICBsZWZ0OiBhdXRvOwogIHJpZ2h0OiAwOwp9Ci5kcm9wZG93bi1tZW51LWxlZnQgewogIGxlZnQ6IDA7CiAgcmlnaHQ6IGF1dG87Cn0KLmRyb3Bkb3duLWhlYWRlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogM3B4IDIwcHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjOTk5OTk5Owp9Ci5kcm9wZG93bi1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIHRvcDogMDsKICB6LWluZGV4OiA5OTA7Cn0KLnB1bGwtcmlnaHQgPiAuZHJvcGRvd24tbWVudSB7CiAgcmlnaHQ6IDA7CiAgbGVmdDogYXV0bzsKfQouZHJvcHVwIC5jYXJldCwKLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIC5jYXJldCB7CiAgYm9yZGVyLXRvcDogMDsKICBib3JkZXItYm90dG9tOiA0cHggc29saWQ7CiAgY29udGVudDogIiI7Cn0KLmRyb3B1cCAuZHJvcGRvd24tbWVudSwKLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51IHsKICB0b3A6IGF1dG87CiAgYm90dG9tOiAxMDAlOwogIG1hcmdpbi1ib3R0b206IDFweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLXJpZ2h0IC5kcm9wZG93bi1tZW51IHsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKICB9CiAgLm5hdmJhci1yaWdodCAuZHJvcGRvd24tbWVudS1sZWZ0IHsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogYXV0bzsKICB9Cn0KLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsb2F0OiBsZWZ0Owp9Ci5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciwKLmJ0bi1ncm91cCA+IC5idG46Zm9jdXMsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmZvY3VzLAouYnRuLWdyb3VwID4gLmJ0bjphY3RpdmUsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmFjdGl2ZSwKLmJ0bi1ncm91cCA+IC5idG4uYWN0aXZlLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi5hY3RpdmUgewogIHotaW5kZXg6IDI7Cn0KLmJ0bi1ncm91cCA+IC5idG46Zm9jdXMsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmZvY3VzIHsKICBvdXRsaW5lOiBub25lOwp9Ci5idG4tZ3JvdXAgLmJ0biArIC5idG4sCi5idG4tZ3JvdXAgLmJ0biArIC5idG4tZ3JvdXAsCi5idG4tZ3JvdXAgLmJ0bi1ncm91cCArIC5idG4sCi5idG4tZ3JvdXAgLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAgewogIG1hcmdpbi1sZWZ0OiAtMXB4Owp9Ci5idG4tdG9vbGJhciB7CiAgbWFyZ2luLWxlZnQ6IC01cHg7Cn0KLmJ0bi10b29sYmFyIC5idG4tZ3JvdXAsCi5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXAgewogIGZsb2F0OiBsZWZ0Owp9Ci5idG4tdG9vbGJhciA+IC5idG4sCi5idG4tdG9vbGJhciA+IC5idG4tZ3JvdXAsCi5idG4tdG9vbGJhciA+IC5pbnB1dC1ncm91cCB7CiAgbWFyZ2luLWxlZnQ6IDVweDsKfQouYnRuLWdyb3VwID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAgPiAuZHJvcGRvd24tdG9nZ2xlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXAgewogIGZsb2F0OiBsZWZ0Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkID4gLmJ0bjpsYXN0LWNoaWxkLAouYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpmaXJzdC1jaGlsZCA+IC5kcm9wZG93bi10b2dnbGUgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmxhc3QtY2hpbGQgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwKLmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUgewogIG91dGxpbmU6IDA7Cn0KLmJ0bi1ncm91cC14cyA+IC5idG4gewogIHBhZGRpbmc6IDFweCA1cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5idG4tZ3JvdXAtc20gPiAuYnRuIHsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0KLmJ0bi1ncm91cC1sZyA+IC5idG4gewogIHBhZGRpbmc6IDEwcHggMTZweDsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDEuMzM7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgcGFkZGluZy1yaWdodDogOHB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiAxMnB4OwogIHBhZGRpbmctcmlnaHQ6IDEycHg7Cn0KLmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUgewogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tbGluayB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ0biAuY2FyZXQgewogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IDVweCA1cHggMDsKICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwp9Ci5kcm9wdXAgLmJ0bi1sZyAuY2FyZXQgewogIGJvcmRlci13aWR0aDogMCA1cHggNXB4Owp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICBkaXNwbGF5OiBibG9jazsKICBmbG9hdDogbm9uZTsKICB3aWR0aDogMTAwJTsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICBmbG9hdDogbm9uZTsKfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSA+IC5idG46bGFzdC1jaGlsZCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSA+IC5kcm9wZG93bi10b2dnbGUgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG46Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC1qdXN0aWZpZWQgewogIGRpc3BsYXk6IHRhYmxlOwogIHdpZHRoOiAxMDAlOwogIHRhYmxlLWxheW91dDogZml4ZWQ7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKfQouYnRuLWdyb3VwLWp1c3RpZmllZCA+IC5idG4sCi5idG4tZ3JvdXAtanVzdGlmaWVkID4gLmJ0bi1ncm91cCB7CiAgZmxvYXQ6IG5vbmU7CiAgZGlzcGxheTogdGFibGUtY2VsbDsKICB3aWR0aDogMSU7Cn0KLmJ0bi1ncm91cC1qdXN0aWZpZWQgPiAuYnRuLWdyb3VwIC5idG4gewogIHdpZHRoOiAxMDAlOwp9CltkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdID4gLmJ0biA+IGlucHV0W3R5cGU9InJhZGlvIl0sCltkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdID4gLmJ0biA+IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIGRpc3BsYXk6IG5vbmU7Cn0KLmlucHV0LWdyb3VwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogdGFibGU7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKfQouaW5wdXQtZ3JvdXBbY2xhc3MqPSJjb2wtIl0gewogIGZsb2F0OiBub25lOwogIHBhZGRpbmctbGVmdDogMDsKICBwYWRkaW5nLXJpZ2h0OiAwOwp9Ci5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHsKICBmbG9hdDogbGVmdDsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIGhlaWdodDogNDZweDsKICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAxLjMzOwogIGJvcmRlci1yYWRpdXM6IDZweDsKfQpzZWxlY3QuaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLApzZWxlY3QuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYWRkb24sCnNlbGVjdC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsKICBoZWlnaHQ6IDQ2cHg7CiAgbGluZS1oZWlnaHQ6IDQ2cHg7Cn0KdGV4dGFyZWEuaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLAp0ZXh0YXJlYS5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbiwKdGV4dGFyZWEuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biwKc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wsCnNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYWRkb24sCnNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIGhlaWdodDogMzBweDsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0Kc2VsZWN0LmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKc2VsZWN0LmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3QuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgaGVpZ2h0OiAzMHB4OwogIGxpbmUtaGVpZ2h0OiAzMHB4Owp9CnRleHRhcmVhLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKdGV4dGFyZWEuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYWRkb24sCnRleHRhcmVhLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4sCnNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLApzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIGhlaWdodDogYXV0bzsKfQouaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1idG4sCi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsOwp9Ci5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCksCi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtYnRuIHsKICB3aWR0aDogMSU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5pbnB1dC1ncm91cC1hZGRvbiB7CiAgcGFkZGluZzogNnB4IDEycHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6ICM1NTU1NTU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLmlucHV0LWdyb3VwLWFkZG9uLmlucHV0LXNtIHsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5pbnB1dC1ncm91cC1hZGRvbi5pbnB1dC1sZyB7CiAgcGFkZGluZzogMTBweCAxNnB4OwogIGZvbnQtc2l6ZTogMThweDsKICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KLmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9InJhZGlvIl0sCi5pbnB1dC1ncm91cC1hZGRvbiBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBtYXJnaW4tdG9wOiAwOwp9Ci5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmZpcnN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0bi1ncm91cCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuZHJvcGRvd24tdG9nZ2xlLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQouaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGQgewogIGJvcmRlci1yaWdodDogMDsKfQouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpsYXN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0biwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bi1ncm91cCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5kcm9wZG93bi10b2dnbGUsCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKfQouaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWxlZnQ6IDA7Cn0KLmlucHV0LWdyb3VwLWJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZvbnQtc2l6ZTogMDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gKyAuYnRuIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQouaW5wdXQtZ3JvdXAtYnRuID4gLmJ0bjpob3ZlciwKLmlucHV0LWdyb3VwLWJ0biA+IC5idG46Zm9jdXMsCi5pbnB1dC1ncm91cC1idG4gPiAuYnRuOmFjdGl2ZSB7CiAgei1pbmRleDogMjsKfQouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0biwKLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZCA+IC5idG4tZ3JvdXAgewogIG1hcmdpbi1yaWdodDogLTFweDsKfQouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuYnRuLWdyb3VwIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQoubmF2IHsKICBtYXJnaW4tYm90dG9tOiAwOwogIHBhZGRpbmctbGVmdDogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5uYXYgPiBsaSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwp9Ci5uYXYgPiBsaSA+IGEgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAxMHB4IDE1cHg7Cn0KLm5hdiA+IGxpID4gYTpob3ZlciwKLm5hdiA+IGxpID4gYTpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7Cn0KLm5hdiA+IGxpLmRpc2FibGVkID4gYSB7CiAgY29sb3I6ICM5OTk5OTk7Cn0KLm5hdiA+IGxpLmRpc2FibGVkID4gYTpob3ZlciwKLm5hdiA+IGxpLmRpc2FibGVkID4gYTpmb2N1cyB7CiAgY29sb3I6ICM5OTk5OTk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLm5hdiAub3BlbiA+IGEsCi5uYXYgLm9wZW4gPiBhOmhvdmVyLAoubmF2IC5vcGVuID4gYTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKICBib3JkZXItY29sb3I6ICM0MjhiY2E7Cn0KLm5hdiAubmF2LWRpdmlkZXIgewogIGhlaWdodDogMXB4OwogIG1hcmdpbjogOXB4IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1Owp9Ci5uYXYgPiBsaSA+IGEgPiBpbWcgewogIG1heC13aWR0aDogbm9uZTsKfQoubmF2LXRhYnMgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOwp9Ci5uYXYtdGFicyA+IGxpIHsKICBmbG9hdDogbGVmdDsKICBtYXJnaW4tYm90dG9tOiAtMXB4Owp9Ci5uYXYtdGFicyA+IGxpID4gYSB7CiAgbWFyZ2luLXJpZ2h0OiAycHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7Cn0KLm5hdi10YWJzID4gbGkgPiBhOmhvdmVyIHsKICBib3JkZXItY29sb3I6ICNlZWVlZWUgI2VlZWVlZSAjZGRkOwp9Ci5uYXYtdGFicyA+IGxpLmFjdGl2ZSA+IGEsCi5uYXYtdGFicyA+IGxpLmFjdGl2ZSA+IGE6aG92ZXIsCi5uYXYtdGFicyA+IGxpLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGNvbG9yOiAjNTU1NTU1OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlci1ib3R0b206IDA7Cn0KLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiBsaSB7CiAgZmxvYXQ6IG5vbmU7Cn0KLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiBsaSA+IGEgewogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUgewogIHRvcDogYXV0bzsKICBsZWZ0OiBhdXRvOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gbGkgewogICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgIHdpZHRoOiAxJTsKICB9CiAgLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiBsaSA+IGEgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiBsaSA+IGEgewogIG1hcmdpbi1yaWdodDogMDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYSwKLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYTpob3ZlciwKLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IGxpID4gYSB7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOwogIH0KICAubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhLAogIC5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGE6aG92ZXIsCiAgLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwogIH0KfQoubmF2LXBpbGxzID4gbGkgewogIGZsb2F0OiBsZWZ0Owp9Ci5uYXYtcGlsbHMgPiBsaSA+IGEgewogIGJvcmRlci1yYWRpdXM6IDRweDsKfQoubmF2LXBpbGxzID4gbGkgKyBsaSB7CiAgbWFyZ2luLWxlZnQ6IDJweDsKfQoubmF2LXBpbGxzID4gbGkuYWN0aXZlID4gYSwKLm5hdi1waWxscyA+IGxpLmFjdGl2ZSA+IGE6aG92ZXIsCi5uYXYtcGlsbHMgPiBsaS5hY3RpdmUgPiBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwp9Ci5uYXYtc3RhY2tlZCA+IGxpIHsKICBmbG9hdDogbm9uZTsKfQoubmF2LXN0YWNrZWQgPiBsaSArIGxpIHsKICBtYXJnaW4tdG9wOiAycHg7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLm5hdi1qdXN0aWZpZWQgewogIHdpZHRoOiAxMDAlOwp9Ci5uYXYtanVzdGlmaWVkID4gbGkgewogIGZsb2F0OiBub25lOwp9Ci5uYXYtanVzdGlmaWVkID4gbGkgPiBhIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogNXB4Owp9Ci5uYXYtanVzdGlmaWVkID4gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51IHsKICB0b3A6IGF1dG87CiAgbGVmdDogYXV0bzsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2LWp1c3RpZmllZCA+IGxpIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICB3aWR0aDogMSU7CiAgfQogIC5uYXYtanVzdGlmaWVkID4gbGkgPiBhIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQp9Ci5uYXYtdGFicy1qdXN0aWZpZWQgewogIGJvcmRlci1ib3R0b206IDA7Cn0KLm5hdi10YWJzLWp1c3RpZmllZCA+IGxpID4gYSB7CiAgbWFyZ2luLXJpZ2h0OiAwOwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQoubmF2LXRhYnMtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGEsCi5uYXYtdGFicy1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYTpob3ZlciwKLm5hdi10YWJzLWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXYtdGFicy1qdXN0aWZpZWQgPiBsaSA+IGEgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsKICB9CiAgLm5hdi10YWJzLWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhLAogIC5uYXYtdGFicy1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYTpob3ZlciwKICAubmF2LXRhYnMtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKICB9Cn0KLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHsKICBkaXNwbGF5OiBub25lOwp9Ci50YWItY29udGVudCA+IC5hY3RpdmUgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CiAgbWFyZ2luLXRvcDogLTFweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9Ci5uYXZiYXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtaW4taGVpZ2h0OiA1MHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhciB7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItaGVhZGVyIHsKICAgIGZsb2F0OiBsZWZ0OwogIH0KfQoubmF2YmFyLWNvbGxhcHNlIHsKICBtYXgtaGVpZ2h0OiAzNDBweDsKICBvdmVyZmxvdy14OiB2aXNpYmxlOwogIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7Cn0KLm5hdmJhci1jb2xsYXBzZS5pbiB7CiAgb3ZlcmZsb3cteTogYXV0bzsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWNvbGxhcHNlIHsKICAgIHdpZHRoOiBhdXRvOwogICAgYm9yZGVyLXRvcDogMDsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgfQogIC5uYXZiYXItY29sbGFwc2UuY29sbGFwc2UgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgcGFkZGluZy1ib3R0b206IDA7CiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogIH0KICAubmF2YmFyLWNvbGxhcHNlLmluIHsKICAgIG92ZXJmbG93LXk6IHZpc2libGU7CiAgfQogIC5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItY29sbGFwc2UsCiAgLm5hdmJhci1zdGF0aWMtdG9wIC5uYXZiYXItY29sbGFwc2UsCiAgLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1jb2xsYXBzZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogIH0KfQouY29udGFpbmVyID4gLm5hdmJhci1oZWFkZXIsCi5jb250YWluZXItZmx1aWQgPiAubmF2YmFyLWhlYWRlciwKLmNvbnRhaW5lciA+IC5uYXZiYXItY29sbGFwc2UsCi5jb250YWluZXItZmx1aWQgPiAubmF2YmFyLWNvbGxhcHNlIHsKICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogIG1hcmdpbi1sZWZ0OiAtMTVweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuY29udGFpbmVyID4gLm5hdmJhci1oZWFkZXIsCiAgLmNvbnRhaW5lci1mbHVpZCA+IC5uYXZiYXItaGVhZGVyLAogIC5jb250YWluZXIgPiAubmF2YmFyLWNvbGxhcHNlLAogIC5jb250YWluZXItZmx1aWQgPiAubmF2YmFyLWNvbGxhcHNlIHsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KfQoubmF2YmFyLXN0YXRpYy10b3AgewogIHotaW5kZXg6IDEwMDA7CiAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItc3RhdGljLXRvcCB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQoubmF2YmFyLWZpeGVkLXRvcCwKLm5hdmJhci1maXhlZC1ib3R0b20gewogIHBvc2l0aW9uOiBmaXhlZDsKICByaWdodDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwMzA7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1maXhlZC10b3AsCiAgLm5hdmJhci1maXhlZC1ib3R0b20gewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KLm5hdmJhci1maXhlZC10b3AgewogIHRvcDogMDsKICBib3JkZXItd2lkdGg6IDAgMCAxcHg7Cn0KLm5hdmJhci1maXhlZC1ib3R0b20gewogIGJvdHRvbTogMDsKICBtYXJnaW4tYm90dG9tOiAwOwogIGJvcmRlci13aWR0aDogMXB4IDAgMDsKfQoubmF2YmFyLWJyYW5kIHsKICBmbG9hdDogbGVmdDsKICBwYWRkaW5nOiAxNXB4IDE1cHg7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGhlaWdodDogMjBweDsKfQoubmF2YmFyLWJyYW5kOmhvdmVyLAoubmF2YmFyLWJyYW5kOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhciA+IC5jb250YWluZXIgLm5hdmJhci1icmFuZCwKICAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCAubmF2YmFyLWJyYW5kIHsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICB9Cn0KLm5hdmJhci10b2dnbGUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbG9hdDogcmlnaHQ7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmc6IDlweCAxMHB4OwogIG1hcmdpbi10b3A6IDhweDsKICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLm5hdmJhci10b2dnbGU6Zm9jdXMgewogIG91dGxpbmU6IG5vbmU7Cn0KLm5hdmJhci10b2dnbGUgLmljb24tYmFyIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMjJweDsKICBoZWlnaHQ6IDJweDsKICBib3JkZXItcmFkaXVzOiAxcHg7Cn0KLm5hdmJhci10b2dnbGUgLmljb24tYmFyICsgLmljb24tYmFyIHsKICBtYXJnaW4tdG9wOiA0cHg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci10b2dnbGUgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLm5hdmJhci1uYXYgewogIG1hcmdpbjogNy41cHggLTE1cHg7Cn0KLm5hdmJhci1uYXYgPiBsaSA+IGEgewogIHBhZGRpbmctdG9wOiAxMHB4OwogIHBhZGRpbmctYm90dG9tOiAxMHB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51IHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiBhdXRvOwogICAgbWFyZ2luLXRvcDogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAwOwogICAgYm94LXNoYWRvdzogbm9uZTsKICB9CiAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEsCiAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlciB7CiAgICBwYWRkaW5nOiA1cHggMTVweCA1cHggMjVweDsKICB9CiAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgewogICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgfQogIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmhvdmVyLAogIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItbmF2IHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luOiAwOwogIH0KICAubmF2YmFyLW5hdiA+IGxpIHsKICAgIGZsb2F0OiBsZWZ0OwogIH0KICAubmF2YmFyLW5hdiA+IGxpID4gYSB7CiAgICBwYWRkaW5nLXRvcDogMTVweDsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4OwogIH0KICAubmF2YmFyLW5hdi5uYXZiYXItcmlnaHQ6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLm5hdmJhci1yaWdodCB7CiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKICB9Cn0KLm5hdmJhci1mb3JtIHsKICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgbWFyZ2luLXRvcDogOHB4OwogIG1hcmdpbi1ib3R0b206IDhweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5uYXZiYXItZm9ybSAuZm9ybS1jb250cm9sIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiBhdXRvOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLm5hdmJhci1mb3JtIC5jb250cm9sLWxhYmVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIH0KICAubmF2YmFyLWZvcm0gLnJhZGlvLAogIC5uYXZiYXItZm9ybSAuY2hlY2tib3ggewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIH0KICAubmF2YmFyLWZvcm0gLnJhZGlvIGlucHV0W3R5cGU9InJhZGlvIl0sCiAgLm5hdmJhci1mb3JtIC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgIGZsb2F0OiBub25lOwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5uYXZiYXItZm9ybSAuaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgdG9wOiAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogNXB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWZvcm0gewogICAgd2lkdGg6IGF1dG87CiAgICBib3JkZXI6IDA7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIHBhZGRpbmctdG9wOiAwOwogICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogIH0KICAubmF2YmFyLWZvcm0ubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICB9Cn0KLm5hdmJhci1uYXYgPiBsaSA+IC5kcm9wZG93bi1tZW51IHsKICBtYXJnaW4tdG9wOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1uYXYgPiBsaSA+IC5kcm9wZG93bi1tZW51IHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5uYXZiYXItYnRuIHsKICBtYXJnaW4tdG9wOiA4cHg7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Ci5uYXZiYXItYnRuLmJ0bi1zbSB7CiAgbWFyZ2luLXRvcDogMTBweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci5uYXZiYXItYnRuLmJ0bi14cyB7CiAgbWFyZ2luLXRvcDogMTRweDsKICBtYXJnaW4tYm90dG9tOiAxNHB4Owp9Ci5uYXZiYXItdGV4dCB7CiAgbWFyZ2luLXRvcDogMTVweDsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItdGV4dCB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIH0KICAubmF2YmFyLXRleHQubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogIH0KfQoubmF2YmFyLWRlZmF1bHQgewogIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7CiAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWJyYW5kIHsKICBjb2xvcjogIzc3NzsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZDpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIGNvbG9yOiAjNWU1ZTVlOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRleHQgewogIGNvbG9yOiAjNzc3Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IGxpID4gYSB7CiAgY29sb3I6ICM3Nzc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gbGkgPiBhOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiBsaSA+IGE6Zm9jdXMgewogIGNvbG9yOiAjMzMzOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYTpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGNvbG9yOiAjNTU1OwogIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYTpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYTpmb2N1cyB7CiAgY29sb3I6ICNjY2M7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlIHsKICBib3JkZXItY29sb3I6ICNkZGQ7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGU6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhciB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzg4ODsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1jb2xsYXBzZSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItZm9ybSB7CiAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IC5vcGVuID4gYSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLm9wZW4gPiBhOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAub3BlbiA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTc7CiAgY29sb3I6ICM1NTU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhIHsKICAgIGNvbG9yOiAjNzc3OwogIH0KICAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsCiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsKICAgIGNvbG9yOiAjMzMzOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhLAogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmhvdmVyLAogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICAgIGNvbG9yOiAjNTU1OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U3ZTdlNzsKICB9CiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSwKICAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmhvdmVyLAogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGE6Zm9jdXMgewogICAgY29sb3I6ICNjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbGluayB7CiAgY29sb3I6ICM3Nzc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbGluazpob3ZlciB7CiAgY29sb3I6ICMzMzM7Cn0KLm5hdmJhci1pbnZlcnNlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOwogIGJvcmRlci1jb2xvcjogIzA4MDgwODsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZCB7CiAgY29sb3I6ICM5OTk5OTk7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItYnJhbmQ6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci10ZXh0IHsKICBjb2xvcjogIzk5OTk5OTsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiBsaSA+IGEgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IGxpID4gYTpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gbGkgPiBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYSwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLmFjdGl2ZSA+IGE6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5kaXNhYmxlZCA+IGEsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5kaXNhYmxlZCA+IGE6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5kaXNhYmxlZCA+IGE6Zm9jdXMgewogIGNvbG9yOiAjNDQ0OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRvZ2dsZSB7CiAgYm9yZGVyLWNvbG9yOiAjMzMzOwp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRvZ2dsZTpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzOwp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRvZ2dsZSAuaWNvbi1iYXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItY29sbGFwc2UsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWZvcm0gewogIGJvcmRlci1jb2xvcjogIzEwMTAxMDsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAub3BlbiA+IGEsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5vcGVuID4gYTpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLm9wZW4gPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwODA4OwogIGNvbG9yOiAjZmZmOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5kcm9wZG93bi1oZWFkZXIgewogICAgYm9yZGVyLWNvbG9yOiAjMDgwODA4OwogIH0KICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgLmRpdmlkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDgwODsKICB9CiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhIHsKICAgIGNvbG9yOiAjOTk5OTk5OwogIH0KICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsCiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhLAogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmhvdmVyLAogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDgwODsKICB9CiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSwKICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmhvdmVyLAogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGE6Zm9jdXMgewogICAgY29sb3I6ICM0NDQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbGluayB7CiAgY29sb3I6ICM5OTk5OTk7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbGluazpob3ZlciB7CiAgY29sb3I6ICNmZmY7Cn0KLmJyZWFkY3J1bWIgewogIHBhZGRpbmc6IDhweCAxNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQouYnJlYWRjcnVtYiA+IGxpIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLmJyZWFkY3J1bWIgPiBsaSArIGxpOmJlZm9yZSB7CiAgY29udGVudDogIi9cMDBhMCI7CiAgcGFkZGluZzogMCA1cHg7CiAgY29sb3I6ICNjY2M7Cn0KLmJyZWFkY3J1bWIgPiAuYWN0aXZlIHsKICBjb2xvcjogIzk5OTk5OTsKfQoucGFnaW5hdGlvbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW46IDIwcHggMDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLnBhZ2luYXRpb24gPiBsaSB7CiAgZGlzcGxheTogaW5saW5lOwp9Ci5wYWdpbmF0aW9uID4gbGkgPiBhLAoucGFnaW5hdGlvbiA+IGxpID4gc3BhbiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsb2F0OiBsZWZ0OwogIHBhZGRpbmc6IDZweCAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjb2xvcjogIzQyOGJjYTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLnBhZ2luYXRpb24gPiBsaTpmaXJzdC1jaGlsZCA+IGEsCi5wYWdpbmF0aW9uID4gbGk6Zmlyc3QtY2hpbGQgPiBzcGFuIHsKICBtYXJnaW4tbGVmdDogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4Owp9Ci5wYWdpbmF0aW9uID4gbGk6bGFzdC1jaGlsZCA+IGEsCi5wYWdpbmF0aW9uID4gbGk6bGFzdC1jaGlsZCA+IHNwYW4gewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKfQoucGFnaW5hdGlvbiA+IGxpID4gYTpob3ZlciwKLnBhZ2luYXRpb24gPiBsaSA+IHNwYW46aG92ZXIsCi5wYWdpbmF0aW9uID4gbGkgPiBhOmZvY3VzLAoucGFnaW5hdGlvbiA+IGxpID4gc3Bhbjpmb2N1cyB7CiAgY29sb3I6ICMyYTY0OTY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKICBib3JkZXItY29sb3I6ICNkZGQ7Cn0KLnBhZ2luYXRpb24gPiAuYWN0aXZlID4gYSwKLnBhZ2luYXRpb24gPiAuYWN0aXZlID4gc3BhbiwKLnBhZ2luYXRpb24gPiAuYWN0aXZlID4gYTpob3ZlciwKLnBhZ2luYXRpb24gPiAuYWN0aXZlID4gc3Bhbjpob3ZlciwKLnBhZ2luYXRpb24gPiAuYWN0aXZlID4gYTpmb2N1cywKLnBhZ2luYXRpb24gPiAuYWN0aXZlID4gc3Bhbjpmb2N1cyB7CiAgei1pbmRleDogMjsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwogIGJvcmRlci1jb2xvcjogIzQyOGJjYTsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KLnBhZ2luYXRpb24gPiAuZGlzYWJsZWQgPiBzcGFuLAoucGFnaW5hdGlvbiA+IC5kaXNhYmxlZCA+IHNwYW46aG92ZXIsCi5wYWdpbmF0aW9uID4gLmRpc2FibGVkID4gc3Bhbjpmb2N1cywKLnBhZ2luYXRpb24gPiAuZGlzYWJsZWQgPiBhLAoucGFnaW5hdGlvbiA+IC5kaXNhYmxlZCA+IGE6aG92ZXIsCi5wYWdpbmF0aW9uID4gLmRpc2FibGVkID4gYTpmb2N1cyB7CiAgY29sb3I6ICM5OTk5OTk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNkZGQ7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoucGFnaW5hdGlvbi1sZyA+IGxpID4gYSwKLnBhZ2luYXRpb24tbGcgPiBsaSA+IHNwYW4gewogIHBhZGRpbmc6IDEwcHggMTZweDsKICBmb250LXNpemU6IDE4cHg7Cn0KLnBhZ2luYXRpb24tbGcgPiBsaTpmaXJzdC1jaGlsZCA+IGEsCi5wYWdpbmF0aW9uLWxnID4gbGk6Zmlyc3QtY2hpbGQgPiBzcGFuIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNnB4Owp9Ci5wYWdpbmF0aW9uLWxnID4gbGk6bGFzdC1jaGlsZCA+IGEsCi5wYWdpbmF0aW9uLWxnID4gbGk6bGFzdC1jaGlsZCA+IHNwYW4gewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA2cHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDZweDsKfQoucGFnaW5hdGlvbi1zbSA+IGxpID4gYSwKLnBhZ2luYXRpb24tc20gPiBsaSA+IHNwYW4gewogIHBhZGRpbmc6IDVweCAxMHB4OwogIGZvbnQtc2l6ZTogMTJweDsKfQoucGFnaW5hdGlvbi1zbSA+IGxpOmZpcnN0LWNoaWxkID4gYSwKLnBhZ2luYXRpb24tc20gPiBsaTpmaXJzdC1jaGlsZCA+IHNwYW4gewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7Cn0KLnBhZ2luYXRpb24tc20gPiBsaTpsYXN0LWNoaWxkID4gYSwKLnBhZ2luYXRpb24tc20gPiBsaTpsYXN0LWNoaWxkID4gc3BhbiB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4Owp9Ci5wYWdlciB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogMjBweCAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5wYWdlciBsaSB7CiAgZGlzcGxheTogaW5saW5lOwp9Ci5wYWdlciBsaSA+IGEsCi5wYWdlciBsaSA+IHNwYW4gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nOiA1cHggMTRweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgYm9yZGVyLXJhZGl1czogMTVweDsKfQoucGFnZXIgbGkgPiBhOmhvdmVyLAoucGFnZXIgbGkgPiBhOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKfQoucGFnZXIgLm5leHQgPiBhLAoucGFnZXIgLm5leHQgPiBzcGFuIHsKICBmbG9hdDogcmlnaHQ7Cn0KLnBhZ2VyIC5wcmV2aW91cyA+IGEsCi5wYWdlciAucHJldmlvdXMgPiBzcGFuIHsKICBmbG9hdDogbGVmdDsKfQoucGFnZXIgLmRpc2FibGVkID4gYSwKLnBhZ2VyIC5kaXNhYmxlZCA+IGE6aG92ZXIsCi5wYWdlciAuZGlzYWJsZWQgPiBhOmZvY3VzLAoucGFnZXIgLmRpc2FibGVkID4gc3BhbiB7CiAgY29sb3I6ICM5OTk5OTk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Ci5sYWJlbCB7CiAgZGlzcGxheTogaW5saW5lOwogIHBhZGRpbmc6IDAuMmVtIDAuNmVtIDAuM2VtOwogIGZvbnQtc2l6ZTogNzUlOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAwLjI1ZW07Cn0KLmxhYmVsW2hyZWZdOmhvdmVyLAoubGFiZWxbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLmxhYmVsOmVtcHR5IHsKICBkaXNwbGF5OiBub25lOwp9Ci5idG4gLmxhYmVsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAtMXB4Owp9Ci5sYWJlbC1kZWZhdWx0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5Owp9Ci5sYWJlbC1kZWZhdWx0W2hyZWZdOmhvdmVyLAoubGFiZWwtZGVmYXVsdFtocmVmXTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzgwODA4MDsKfQoubGFiZWwtcHJpbWFyeSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKfQoubGFiZWwtcHJpbWFyeVtocmVmXTpob3ZlciwKLmxhYmVsLXByaW1hcnlbaHJlZl06Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMzMDcxYTk7Cn0KLmxhYmVsLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtY29sb3I6ICM1Y2I4NWM7Cn0KLmxhYmVsLXN1Y2Nlc3NbaHJlZl06aG92ZXIsCi5sYWJlbC1zdWNjZXNzW2hyZWZdOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ5ZDQ0Owp9Ci5sYWJlbC1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwp9Ci5sYWJlbC1pbmZvW2hyZWZdOmhvdmVyLAoubGFiZWwtaW5mb1tocmVmXTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMxYjBkNTsKfQoubGFiZWwtd2FybmluZyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTsKfQoubGFiZWwtd2FybmluZ1tocmVmXTpob3ZlciwKLmxhYmVsLXdhcm5pbmdbaHJlZl06Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNlYzk3MWY7Cn0KLmxhYmVsLWRhbmdlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q5NTM0ZjsKfQoubGFiZWwtZGFuZ2VyW2hyZWZdOmhvdmVyLAoubGFiZWwtZGFuZ2VyW2hyZWZdOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzkzMDJjOwp9Ci5iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1pbi13aWR0aDogMTBweDsKICBwYWRkaW5nOiAzcHggN3B4OwogIGZvbnQtc2l6ZTogMTJweDsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogI2ZmZjsKICBsaW5lLWhlaWdodDogMTsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsKICBib3JkZXItcmFkaXVzOiAxMHB4Owp9Ci5iYWRnZTplbXB0eSB7CiAgZGlzcGxheTogbm9uZTsKfQouYnRuIC5iYWRnZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogLTFweDsKfQouYnRuLXhzIC5iYWRnZSB7CiAgdG9wOiAwOwogIHBhZGRpbmc6IDFweCA1cHg7Cn0KYS5iYWRnZTpob3ZlciwKYS5iYWRnZTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsKfQphLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgPiAuYmFkZ2UsCi5uYXYtcGlsbHMgPiAuYWN0aXZlID4gYSA+IC5iYWRnZSB7CiAgY29sb3I6ICM0MjhiY2E7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoubmF2LXBpbGxzID4gbGkgPiBhID4gLmJhZGdlIHsKICBtYXJnaW4tbGVmdDogM3B4Owp9Ci5qdW1ib3Ryb24gewogIHBhZGRpbmc6IDMwcHg7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBjb2xvcjogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwp9Ci5qdW1ib3Ryb24gaDEsCi5qdW1ib3Ryb24gLmgxIHsKICBjb2xvcjogaW5oZXJpdDsKfQouanVtYm90cm9uIHAgewogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgZm9udC1zaXplOiAyMXB4OwogIGZvbnQtd2VpZ2h0OiAyMDA7Cn0KLmNvbnRhaW5lciAuanVtYm90cm9uIHsKICBib3JkZXItcmFkaXVzOiA2cHg7Cn0KLmp1bWJvdHJvbiAuY29udGFpbmVyIHsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuanVtYm90cm9uIHsKICAgIHBhZGRpbmctdG9wOiA0OHB4OwogICAgcGFkZGluZy1ib3R0b206IDQ4cHg7CiAgfQogIC5jb250YWluZXIgLmp1bWJvdHJvbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDYwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA2MHB4OwogIH0KICAuanVtYm90cm9uIGgxLAogIC5qdW1ib3Ryb24gLmgxIHsKICAgIGZvbnQtc2l6ZTogNjNweDsKICB9Cn0KLnRodW1ibmFpbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogNHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0OwogIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0Owp9Ci50aHVtYm5haWwgPiBpbWcsCi50aHVtYm5haWwgYSA+IGltZyB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWF4LXdpZHRoOiAxMDAlOwogIGhlaWdodDogYXV0bzsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KYS50aHVtYm5haWw6aG92ZXIsCmEudGh1bWJuYWlsOmZvY3VzLAphLnRodW1ibmFpbC5hY3RpdmUgewogIGJvcmRlci1jb2xvcjogIzQyOGJjYTsKfQoudGh1bWJuYWlsIC5jYXB0aW9uIHsKICBwYWRkaW5nOiA5cHg7CiAgY29sb3I6ICMzMzMzMzM7Cn0KLmFsZXJ0IHsKICBwYWRkaW5nOiAxNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5hbGVydCBoNCB7CiAgbWFyZ2luLXRvcDogMDsKICBjb2xvcjogaW5oZXJpdDsKfQouYWxlcnQgLmFsZXJ0LWxpbmsgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5hbGVydCA+IHAsCi5hbGVydCA+IHVsIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5hbGVydCA+IHAgKyBwIHsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KLmFsZXJ0LWRpc21pc3NhYmxlIHsKICBwYWRkaW5nLXJpZ2h0OiAzNXB4Owp9Ci5hbGVydC1kaXNtaXNzYWJsZSAuY2xvc2UgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IC0ycHg7CiAgcmlnaHQ6IC0yMXB4OwogIGNvbG9yOiBpbmhlcml0Owp9Ci5hbGVydC1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmMGQ4OwogIGJvcmRlci1jb2xvcjogI2Q2ZTljNjsKICBjb2xvcjogIzNjNzYzZDsKfQouYWxlcnQtc3VjY2VzcyBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2M5ZTJiMzsKfQouYWxlcnQtc3VjY2VzcyAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMyYjU0MmM7Cn0KLmFsZXJ0LWluZm8gewogIGJhY2tncm91bmQtY29sb3I6ICNkOWVkZjc7CiAgYm9yZGVyLWNvbG9yOiAjYmNlOGYxOwogIGNvbG9yOiAjMzE3MDhmOwp9Ci5hbGVydC1pbmZvIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYTZlMWVjOwp9Ci5hbGVydC1pbmZvIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzI0NTI2OTsKfQouYWxlcnQtd2FybmluZyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKICBib3JkZXItY29sb3I6ICNmYWViY2M7CiAgY29sb3I6ICM4YTZkM2I7Cn0KLmFsZXJ0LXdhcm5pbmcgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNmN2UxYjU7Cn0KLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjNjY1MTJjOwp9Ci5hbGVydC1kYW5nZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7CiAgYm9yZGVyLWNvbG9yOiAjZWJjY2QxOwogIGNvbG9yOiAjYTk0NDQyOwp9Ci5hbGVydC1kYW5nZXIgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNlNGI5YzA7Cn0KLmFsZXJ0LWRhbmdlciAuYWxlcnQtbGluayB7CiAgY29sb3I6ICM4NDM1MzQ7Cn0KQC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDQwcHggMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KfQpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDQwcHggMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KfQoucHJvZ3Jlc3MgewogIG92ZXJmbG93OiBoaWRkZW47CiAgaGVpZ2h0OiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KLnByb2dyZXNzLWJhciB7CiAgZmxvYXQ6IGxlZnQ7CiAgd2lkdGg6IDAlOwogIGhlaWdodDogMTAwJTsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAwLjZzIGVhc2U7CiAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwp9Ci5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXIgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7Cn0KLnByb2dyZXNzLmFjdGl2ZSAucHJvZ3Jlc3MtYmFyIHsKICAtd2Via2l0LWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwogIGFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwp9Ci5wcm9ncmVzcy1iYXItc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YzsKfQoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7Cn0KLnByb2dyZXNzLWJhci1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwp9Ci5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItaW5mbyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKfQoucHJvZ3Jlc3MtYmFyLXdhcm5pbmcgewogIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGU7Cn0KLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9Ci5wcm9ncmVzcy1iYXItZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwp9Ci5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9Ci5tZWRpYSwKLm1lZGlhLWJvZHkgewogIG92ZXJmbG93OiBoaWRkZW47CiAgem9vbTogMTsKfQoubWVkaWEsCi5tZWRpYSAubWVkaWEgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLm1lZGlhOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tdG9wOiAwOwp9Ci5tZWRpYS1vYmplY3QgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5tZWRpYS1oZWFkaW5nIHsKICBtYXJnaW46IDAgMCA1cHg7Cn0KLm1lZGlhID4gLnB1bGwtbGVmdCB7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9Ci5tZWRpYSA+IC5wdWxsLXJpZ2h0IHsKICBtYXJnaW4tbGVmdDogMTBweDsKfQoubWVkaWEtbGlzdCB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmxpc3QtZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgcGFkZGluZy1sZWZ0OiAwOwp9Ci5saXN0LWdyb3VwLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Cn0KLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4Owp9Ci5saXN0LWdyb3VwLWl0ZW0gPiAuYmFkZ2UgewogIGZsb2F0OiByaWdodDsKfQoubGlzdC1ncm91cC1pdGVtID4gLmJhZGdlICsgLmJhZGdlIHsKICBtYXJnaW4tcmlnaHQ6IDVweDsKfQphLmxpc3QtZ3JvdXAtaXRlbSB7CiAgY29sb3I6ICM1NTU7Cn0KYS5saXN0LWdyb3VwLWl0ZW0gLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICBjb2xvcjogIzMzMzsKfQphLmxpc3QtZ3JvdXAtaXRlbTpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9CmEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSwKYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyLAphLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgewogIHotaW5kZXg6IDI7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKICBib3JkZXItY29sb3I6ICM0MjhiY2E7Cn0KYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwKYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwKYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCB7CiAgY29sb3I6ICNlMWVkZjc7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsKICBjb2xvcjogIzNjNzYzZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmMGQ4Owp9CmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MgewogIGNvbG9yOiAjM2M3NjNkOwp9CmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICBjb2xvcjogaW5oZXJpdDsKfQphLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzOmhvdmVyLAphLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzOmZvY3VzIHsKICBjb2xvcjogIzNjNzYzZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBlOWM2Owp9CmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlLAphLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmFjdGl2ZTpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hY3RpdmU6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzYzc2M2Q7CiAgYm9yZGVyLWNvbG9yOiAjM2M3NjNkOwp9Ci5saXN0LWdyb3VwLWl0ZW0taW5mbyB7CiAgY29sb3I6ICMzMTcwOGY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNzsKfQphLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICBjb2xvcjogIzMxNzA4ZjsKfQphLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KYS5saXN0LWdyb3VwLWl0ZW0taW5mbzpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW0taW5mbzpmb2N1cyB7CiAgY29sb3I6ICMzMTcwOGY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M0ZTNmMzsKfQphLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZSwKYS5saXN0LWdyb3VwLWl0ZW0taW5mby5hY3RpdmU6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLWluZm8uYWN0aXZlOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE3MDhmOwogIGJvcmRlci1jb2xvcjogIzMxNzA4ZjsKfQoubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgewogIGNvbG9yOiAjOGE2ZDNiOwogIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7Cn0KYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZyB7CiAgY29sb3I6ICM4YTZkM2I7Cn0KYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogIGNvbG9yOiBpbmhlcml0Owp9CmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6Zm9jdXMgewogIGNvbG9yOiAjOGE2ZDNiOwogIGJhY2tncm91bmQtY29sb3I6ICNmYWYyY2M7Cn0KYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmUsCmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYWN0aXZlOmhvdmVyLAphLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmFjdGl2ZTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzhhNmQzYjsKICBib3JkZXItY29sb3I6ICM4YTZkM2I7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewogIGNvbG9yOiAjYTk0NDQyOwogIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7Cn0KYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyIHsKICBjb2xvcjogI2E5NDQ0MjsKfQphLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICBjb2xvcjogaW5oZXJpdDsKfQphLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLWRhbmdlcjpmb2N1cyB7CiAgY29sb3I6ICNhOTQ0NDI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ViY2NjYzsKfQphLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlLAphLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlOmhvdmVyLAphLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTk0NDQyOwogIGJvcmRlci1jb2xvcjogI2E5NDQ0MjsKfQoubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogNXB4Owp9Ci5saXN0LWdyb3VwLWl0ZW0tdGV4dCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaW5lLWhlaWdodDogMS4zOwp9Ci5wYW5lbCB7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5wYW5lbC1ib2R5IHsKICBwYWRkaW5nOiAxNXB4Owp9Ci5wYW5lbCA+IC5saXN0LWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5wYW5lbCA+IC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW0gewogIGJvcmRlci13aWR0aDogMXB4IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoucGFuZWwgPiAubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wOiAwOwp9Ci5wYW5lbCA+IC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoucGFuZWwgPiAubGlzdC1ncm91cDpmaXJzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsKfQoucGFuZWwgPiAubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7Cn0KLnBhbmVsLWhlYWRpbmcgKyAubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLXdpZHRoOiAwOwp9Ci5wYW5lbCA+IC50YWJsZSwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnBhbmVsID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0aGVhZDpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0Ym9keTpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRoZWFkOmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGJvZHk6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0Ym9keTpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7Cn0KLnBhbmVsID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRoZWFkOmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGJvZHk6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRoZWFkOmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGJvZHk6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsKfQoucGFuZWwgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRib2R5Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Ym9keTpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Zm9vdDpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGZvb3Q6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGJvZHk6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRib2R5Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRmb290Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Zm9vdDpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYW5lbCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGJvZHk6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGJvZHk6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Zm9vdDpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Zm9vdDpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRib2R5Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRib2R5Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGZvb3Q6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGZvb3Q6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKfQoucGFuZWwgPiAucGFuZWwtYm9keSArIC50YWJsZSwKLnBhbmVsID4gLnBhbmVsLWJvZHkgKyAudGFibGUtcmVzcG9uc2l2ZSB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7Cn0KLnBhbmVsID4gLnRhYmxlID4gdGJvZHk6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0aCwKLnBhbmVsID4gLnRhYmxlID4gdGJvZHk6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0ZCB7CiAgYm9yZGVyLXRvcDogMDsKfQoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDA7Cn0KLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLWxlZnQ6IDA7Cn0KLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQ6bGFzdC1jaGlsZCB7CiAgYm9yZGVyLXJpZ2h0OiAwOwp9Ci5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyOmZpcnN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmZpcnN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmZpcnN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0ZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyOmZpcnN0LWNoaWxkID4gdGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6Zmlyc3QtY2hpbGQgPiB0ZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmZpcnN0LWNoaWxkID4gdGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHI6Zmlyc3QtY2hpbGQgPiB0ZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmZpcnN0LWNoaWxkID4gdGQgewogIGJvcmRlci10b3A6IDA7Cn0KLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0cjpsYXN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0cjpsYXN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6bGFzdC1jaGlsZCA+IHRoLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6bGFzdC1jaGlsZCA+IHRoLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0aCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0aCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0cjpsYXN0LWNoaWxkID4gdGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0cjpsYXN0LWNoaWxkID4gdGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6bGFzdC1jaGlsZCA+IHRkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6bGFzdC1jaGlsZCA+IHRkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0ZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0ZCB7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSB7CiAgYm9yZGVyOiAwOwogIG1hcmdpbi1ib3R0b206IDA7Cn0KLnBhbmVsLWhlYWRpbmcgewogIHBhZGRpbmc6IDEwcHggMTVweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7Cn0KLnBhbmVsLWhlYWRpbmcgPiAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLnBhbmVsLXRpdGxlIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxNnB4OwogIGNvbG9yOiBpbmhlcml0Owp9Ci5wYW5lbC10aXRsZSA+IGEgewogIGNvbG9yOiBpbmhlcml0Owp9Ci5wYW5lbC1mb290ZXIgewogIHBhZGRpbmc6IDEwcHggMTVweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYW5lbC1ncm91cCB7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5wYW5lbC1ncm91cCAucGFuZWwgKyAucGFuZWwgewogIG1hcmdpbi10b3A6IDVweDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsLWhlYWRpbmcgewogIGJvcmRlci1ib3R0b206IDA7Cn0KLnBhbmVsLWdyb3VwIC5wYW5lbC1oZWFkaW5nICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsLWZvb3RlciB7CiAgYm9yZGVyLXRvcDogMDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7Cn0KLnBhbmVsLWRlZmF1bHQgewogIGJvcmRlci1jb2xvcjogI2RkZDsKfQoucGFuZWwtZGVmYXVsdCA+IC5wYW5lbC1oZWFkaW5nIHsKICBjb2xvcjogIzMzMzMzMzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGJvcmRlci1jb2xvcjogI2RkZDsKfQoucGFuZWwtZGVmYXVsdCA+IC5wYW5lbC1oZWFkaW5nICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjZGRkOwp9Ci5wYW5lbC1kZWZhdWx0ID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2RkZDsKfQoucGFuZWwtcHJpbWFyeSB7CiAgYm9yZGVyLWNvbG9yOiAjNDI4YmNhOwp9Ci5wYW5lbC1wcmltYXJ5ID4gLnBhbmVsLWhlYWRpbmcgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7CiAgYm9yZGVyLWNvbG9yOiAjNDI4YmNhOwp9Ci5wYW5lbC1wcmltYXJ5ID4gLnBhbmVsLWhlYWRpbmcgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogIGJvcmRlci10b3AtY29sb3I6ICM0MjhiY2E7Cn0KLnBhbmVsLXByaW1hcnkgPiAucGFuZWwtZm9vdGVyICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjNDI4YmNhOwp9Ci5wYW5lbC1zdWNjZXNzIHsKICBib3JkZXItY29sb3I6ICNkNmU5YzY7Cn0KLnBhbmVsLXN1Y2Nlc3MgPiAucGFuZWwtaGVhZGluZyB7CiAgY29sb3I6ICMzYzc2M2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICBib3JkZXItY29sb3I6ICNkNmU5YzY7Cn0KLnBhbmVsLXN1Y2Nlc3MgPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2Q2ZTljNjsKfQoucGFuZWwtc3VjY2VzcyA+IC5wYW5lbC1mb290ZXIgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogIGJvcmRlci1ib3R0b20tY29sb3I6ICNkNmU5YzY7Cn0KLnBhbmVsLWluZm8gewogIGJvcmRlci1jb2xvcjogI2JjZThmMTsKfQoucGFuZWwtaW5mbyA+IC5wYW5lbC1oZWFkaW5nIHsKICBjb2xvcjogIzMxNzA4ZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3OwogIGJvcmRlci1jb2xvcjogI2JjZThmMTsKfQoucGFuZWwtaW5mbyA+IC5wYW5lbC1oZWFkaW5nICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjYmNlOGYxOwp9Ci5wYW5lbC1pbmZvID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2JjZThmMTsKfQoucGFuZWwtd2FybmluZyB7CiAgYm9yZGVyLWNvbG9yOiAjZmFlYmNjOwp9Ci5wYW5lbC13YXJuaW5nID4gLnBhbmVsLWhlYWRpbmcgewogIGNvbG9yOiAjOGE2ZDNiOwogIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7CiAgYm9yZGVyLWNvbG9yOiAjZmFlYmNjOwp9Ci5wYW5lbC13YXJuaW5nID4gLnBhbmVsLWhlYWRpbmcgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogIGJvcmRlci10b3AtY29sb3I6ICNmYWViY2M7Cn0KLnBhbmVsLXdhcm5pbmcgPiAucGFuZWwtZm9vdGVyICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmFlYmNjOwp9Ci5wYW5lbC1kYW5nZXIgewogIGJvcmRlci1jb2xvcjogI2ViY2NkMTsKfQoucGFuZWwtZGFuZ2VyID4gLnBhbmVsLWhlYWRpbmcgewogIGNvbG9yOiAjYTk0NDQyOwogIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7CiAgYm9yZGVyLWNvbG9yOiAjZWJjY2QxOwp9Ci5wYW5lbC1kYW5nZXIgPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2ViY2NkMTsKfQoucGFuZWwtZGFuZ2VyID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ViY2NkMTsKfQoud2VsbCB7CiAgbWluLWhlaWdodDogMjBweDsKICBwYWRkaW5nOiAxOXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBib3JkZXI6IDFweCBzb2xpZCAjZTNlM2UzOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci53ZWxsIGJsb2NrcXVvdGUgewogIGJvcmRlci1jb2xvcjogI2RkZDsKICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7Cn0KLndlbGwtbGcgewogIHBhZGRpbmc6IDI0cHg7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci53ZWxsLXNtIHsKICBwYWRkaW5nOiA5cHg7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5jbG9zZSB7CiAgZmxvYXQ6IHJpZ2h0OwogIGZvbnQtc2l6ZTogMjFweDsKICBmb250LXdlaWdodDogYm9sZDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogIzAwMDsKICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwogIG9wYWNpdHk6IDAuMjsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MjApOwp9Ci5jbG9zZTpob3ZlciwKLmNsb3NlOmZvY3VzIHsKICBjb2xvcjogIzAwMDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIG9wYWNpdHk6IDAuNTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NTApOwp9CmJ1dHRvbi5jbG9zZSB7CiAgcGFkZGluZzogMDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQoubW9kYWwtb3BlbiB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoubW9kYWwgewogIGRpc3BsYXk6IG5vbmU7CiAgb3ZlcmZsb3c6IGF1dG87CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTA1MDsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgb3V0bGluZTogMDsKfQoubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsKICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7CiAgLW1vei10cmFuc2l0aW9uOiAtbW96LXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0Owp9Ci5tb2RhbC5pbiAubW9kYWwtZGlhbG9nIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKfQoubW9kYWwtZGlhbG9nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IGF1dG87CiAgbWFyZ2luOiAxMHB4Owp9Ci5tb2RhbC1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTsKICBib3JkZXItcmFkaXVzOiA2cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDNweCA5cHggcmdiYSgwLCAwLCAwLCAwLjUpOwogIGJveC1zaGFkb3c6IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBvdXRsaW5lOiBub25lOwp9Ci5tb2RhbC1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDQwOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDA7Cn0KLm1vZGFsLWJhY2tkcm9wLmZhZGUgewogIG9wYWNpdHk6IDA7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwp9Ci5tb2RhbC1iYWNrZHJvcC5pbiB7CiAgb3BhY2l0eTogMC41OwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7Cn0KLm1vZGFsLWhlYWRlciB7CiAgcGFkZGluZzogMTVweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTVlNTsKICBtaW4taGVpZ2h0OiAxNi40Mjg1NzE0M3B4Owp9Ci5tb2RhbC1oZWFkZXIgLmNsb3NlIHsKICBtYXJnaW4tdG9wOiAtMnB4Owp9Ci5tb2RhbC10aXRsZSB7CiAgbWFyZ2luOiAwOwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwp9Ci5tb2RhbC1ib2R5IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMjBweDsKfQoubW9kYWwtZm9vdGVyIHsKICBtYXJnaW4tdG9wOiAxNXB4OwogIHBhZGRpbmc6IDE5cHggMjBweCAyMHB4OwogIHRleHQtYWxpZ246IHJpZ2h0OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlNWU1Owp9Ci5tb2RhbC1mb290ZXIgLmJ0biArIC5idG4gewogIG1hcmdpbi1sZWZ0OiA1cHg7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoubW9kYWwtZm9vdGVyIC5idG4tZ3JvdXAgLmJ0biArIC5idG4gewogIG1hcmdpbi1sZWZ0OiAtMXB4Owp9Ci5tb2RhbC1mb290ZXIgLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewogIG1hcmdpbi1sZWZ0OiAwOwp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5tb2RhbC1kaWFsb2cgewogICAgd2lkdGg6IDYwMHB4OwogICAgbWFyZ2luOiAzMHB4IGF1dG87CiAgfQogIC5tb2RhbC1jb250ZW50IHsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA1cHggMTVweCByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgICBib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICB9CiAgLm1vZGFsLXNtIHsKICAgIHdpZHRoOiAzMDBweDsKICB9CiAgLm1vZGFsLWxnIHsKICAgIHdpZHRoOiA5MDBweDsKICB9Cn0KLnRvb2x0aXAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAxMDMwOwogIGRpc3BsYXk6IGJsb2NrOwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgb3BhY2l0eTogMDsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7Cn0KLnRvb2x0aXAuaW4gewogIG9wYWNpdHk6IDAuOTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9OTApOwp9Ci50b29sdGlwLnRvcCB7CiAgbWFyZ2luLXRvcDogLTNweDsKICBwYWRkaW5nOiA1cHggMDsKfQoudG9vbHRpcC5yaWdodCB7CiAgbWFyZ2luLWxlZnQ6IDNweDsKICBwYWRkaW5nOiAwIDVweDsKfQoudG9vbHRpcC5ib3R0b20gewogIG1hcmdpbi10b3A6IDNweDsKICBwYWRkaW5nOiA1cHggMDsKfQoudG9vbHRpcC5sZWZ0IHsKICBtYXJnaW4tbGVmdDogLTNweDsKICBwYWRkaW5nOiAwIDVweDsKfQoudG9vbHRpcC1pbm5lciB7CiAgbWF4LXdpZHRoOiAyMDBweDsKICBwYWRkaW5nOiAzcHggOHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLnRvb2x0aXAtYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci50b29sdGlwLnRvcCAudG9vbHRpcC1hcnJvdyB7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDUwJTsKICBtYXJnaW4tbGVmdDogLTVweDsKICBib3JkZXItd2lkdGg6IDVweCA1cHggMDsKICBib3JkZXItdG9wLWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLnRvcC1sZWZ0IC50b29sdGlwLWFycm93IHsKICBib3R0b206IDA7CiAgbGVmdDogNXB4OwogIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogIGJvcmRlci10b3AtY29sb3I6ICMwMDA7Cn0KLnRvb2x0aXAudG9wLXJpZ2h0IC50b29sdGlwLWFycm93IHsKICBib3R0b206IDA7CiAgcmlnaHQ6IDVweDsKICBib3JkZXItd2lkdGg6IDVweCA1cHggMDsKICBib3JkZXItdG9wLWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLnJpZ2h0IC50b29sdGlwLWFycm93IHsKICB0b3A6IDUwJTsKICBsZWZ0OiAwOwogIG1hcmdpbi10b3A6IC01cHg7CiAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDVweCAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogIzAwMDsKfQoudG9vbHRpcC5sZWZ0IC50b29sdGlwLWFycm93IHsKICB0b3A6IDUwJTsKICByaWdodDogMDsKICBtYXJnaW4tdG9wOiAtNXB4OwogIGJvcmRlci13aWR0aDogNXB4IDAgNXB4IDVweDsKICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDsKfQoudG9vbHRpcC5ib3R0b20gLnRvb2x0aXAtYXJyb3cgewogIHRvcDogMDsKICBsZWZ0OiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgYm9yZGVyLXdpZHRoOiAwIDVweCA1cHg7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMDsKfQoudG9vbHRpcC5ib3R0b20tbGVmdCAudG9vbHRpcC1hcnJvdyB7CiAgdG9wOiAwOwogIGxlZnQ6IDVweDsKICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLmJvdHRvbS1yaWdodCAudG9vbHRpcC1hcnJvdyB7CiAgdG9wOiAwOwogIHJpZ2h0OiA1cHg7CiAgYm9yZGVyLXdpZHRoOiAwIDVweCA1cHg7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMDsKfQoucG9wb3ZlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwMTA7CiAgZGlzcGxheTogbm9uZTsKICBtYXgtd2lkdGg6IDI3NnB4OwogIHBhZGRpbmc6IDFweDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTsKICBib3JkZXItcmFkaXVzOiA2cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICBib3gtc2hhZG93OiAwIDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICB3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Ci5wb3BvdmVyLnRvcCB7CiAgbWFyZ2luLXRvcDogLTEwcHg7Cn0KLnBvcG92ZXIucmlnaHQgewogIG1hcmdpbi1sZWZ0OiAxMHB4Owp9Ci5wb3BvdmVyLmJvdHRvbSB7CiAgbWFyZ2luLXRvcDogMTBweDsKfQoucG9wb3Zlci5sZWZ0IHsKICBtYXJnaW4tbGVmdDogLTEwcHg7Cn0KLnBvcG92ZXItdGl0bGUgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiA4cHggMTRweDsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMThweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwogIGJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwOwp9Ci5wb3BvdmVyLWNvbnRlbnQgewogIHBhZGRpbmc6IDlweCAxNHB4Owp9Ci5wb3BvdmVyIC5hcnJvdywKLnBvcG92ZXIgLmFycm93OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoucG9wb3ZlciAuYXJyb3cgewogIGJvcmRlci13aWR0aDogMTFweDsKfQoucG9wb3ZlciAuYXJyb3c6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMTBweDsKICBjb250ZW50OiAiIjsKfQoucG9wb3Zlci50b3AgLmFycm93IHsKICBsZWZ0OiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC0xMXB4OwogIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzk5OTsKICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIGJvdHRvbTogLTExcHg7Cn0KLnBvcG92ZXIudG9wIC5hcnJvdzphZnRlciB7CiAgY29udGVudDogIiAiOwogIGJvdHRvbTogMXB4OwogIG1hcmdpbi1sZWZ0OiAtMTBweDsKICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogIGJvcmRlci10b3AtY29sb3I6ICNmZmY7Cn0KLnBvcG92ZXIucmlnaHQgLmFycm93IHsKICB0b3A6IDUwJTsKICBsZWZ0OiAtMTFweDsKICBtYXJnaW4tdG9wOiAtMTFweDsKICBib3JkZXItbGVmdC13aWR0aDogMDsKICBib3JkZXItcmlnaHQtY29sb3I6ICM5OTk7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpOwp9Ci5wb3BvdmVyLnJpZ2h0IC5hcnJvdzphZnRlciB7CiAgY29udGVudDogIiAiOwogIGxlZnQ6IDFweDsKICBib3R0b206IC0xMHB4OwogIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjsKfQoucG9wb3Zlci5ib3R0b20gLmFycm93IHsKICBsZWZ0OiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC0xMXB4OwogIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzk5OTsKICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIHRvcDogLTExcHg7Cn0KLnBvcG92ZXIuYm90dG9tIC5hcnJvdzphZnRlciB7CiAgY29udGVudDogIiAiOwogIHRvcDogMXB4OwogIG1hcmdpbi1sZWZ0OiAtMTBweDsKICBib3JkZXItdG9wLXdpZHRoOiAwOwogIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cn0KLnBvcG92ZXIubGVmdCAuYXJyb3cgewogIHRvcDogNTAlOwogIHJpZ2h0OiAtMTFweDsKICBtYXJnaW4tdG9wOiAtMTFweDsKICBib3JkZXItcmlnaHQtd2lkdGg6IDA7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5OTk7CiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KLnBvcG92ZXIubGVmdCAuYXJyb3c6YWZ0ZXIgewogIGNvbnRlbnQ6ICIgIjsKICByaWdodDogMXB4OwogIGJvcmRlci1yaWdodC13aWR0aDogMDsKICBib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKICBib3R0b206IC0xMHB4Owp9Ci5jYXJvdXNlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5jYXJvdXNlbC1pbm5lciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG92ZXJmbG93OiBoaWRkZW47CiAgd2lkdGg6IDEwMCU7Cn0KLmNhcm91c2VsLWlubmVyID4gLml0ZW0gewogIGRpc3BsYXk6IG5vbmU7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogMC42cyBlYXNlLWluLW91dCBsZWZ0OwogIHRyYW5zaXRpb246IDAuNnMgZWFzZS1pbi1vdXQgbGVmdDsKfQouY2Fyb3VzZWwtaW5uZXIgPiAuaXRlbSA+IGltZywKLmNhcm91c2VsLWlubmVyID4gLml0ZW0gPiBhID4gaW1nIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwogIGxpbmUtaGVpZ2h0OiAxOwp9Ci5jYXJvdXNlbC1pbm5lciA+IC5hY3RpdmUsCi5jYXJvdXNlbC1pbm5lciA+IC5uZXh0LAouY2Fyb3VzZWwtaW5uZXIgPiAucHJldiB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLmNhcm91c2VsLWlubmVyID4gLmFjdGl2ZSB7CiAgbGVmdDogMDsKfQouY2Fyb3VzZWwtaW5uZXIgPiAubmV4dCwKLmNhcm91c2VsLWlubmVyID4gLnByZXYgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgd2lkdGg6IDEwMCU7Cn0KLmNhcm91c2VsLWlubmVyID4gLm5leHQgewogIGxlZnQ6IDEwMCU7Cn0KLmNhcm91c2VsLWlubmVyID4gLnByZXYgewogIGxlZnQ6IC0xMDAlOwp9Ci5jYXJvdXNlbC1pbm5lciA+IC5uZXh0LmxlZnQsCi5jYXJvdXNlbC1pbm5lciA+IC5wcmV2LnJpZ2h0IHsKICBsZWZ0OiAwOwp9Ci5jYXJvdXNlbC1pbm5lciA+IC5hY3RpdmUubGVmdCB7CiAgbGVmdDogLTEwMCU7Cn0KLmNhcm91c2VsLWlubmVyID4gLmFjdGl2ZS5yaWdodCB7CiAgbGVmdDogMTAwJTsKfQouY2Fyb3VzZWwtY29udHJvbCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIGJvdHRvbTogMDsKICB3aWR0aDogMTUlOwogIG9wYWNpdHk6IDAuNTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NTApOwogIGZvbnQtc2l6ZTogMjBweDsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuNik7Cn0KLmNhcm91c2VsLWNvbnRyb2wubGVmdCB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgY29sb3Itc3RvcChyZ2JhKDAsIDAsIDAsIDAuNSkgMCUpLCBjb2xvci1zdG9wKHJnYmEoMCwgMCwgMCwgMC4wMDAxKSAxMDAlKSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNSkgMCUsIHJnYmEoMCwgMCwgMCwgMC4wMDAxKSAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzgwMDAwMDAwJywgZW5kQ29sb3JzdHI9JyMwMDAwMDAwMCcsIEdyYWRpZW50VHlwZT0xKTsKfQouY2Fyb3VzZWwtY29udHJvbC5yaWdodCB7CiAgbGVmdDogYXV0bzsKICByaWdodDogMDsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCBjb2xvci1zdG9wKHJnYmEoMCwgMCwgMCwgMC4wMDAxKSAwJSksIGNvbG9yLXN0b3AocmdiYSgwLCAwLCAwLCAwLjUpIDEwMCUpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wMDAxKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjUpIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDAwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzgwMDAwMDAwJywgR3JhZGllbnRUeXBlPTEpOwp9Ci5jYXJvdXNlbC1jb250cm9sOmhvdmVyLAouY2Fyb3VzZWwtY29udHJvbDpmb2N1cyB7CiAgb3V0bGluZTogbm9uZTsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgb3BhY2l0eTogMC45OwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT05MCk7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiwKLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwKLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCi5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIHotaW5kZXg6IDU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsCi5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1sZWZ0IHsKICBsZWZ0OiA1MCU7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwKLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0IHsKICByaWdodDogNTAlOwp9Ci5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsCi5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQgewogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBtYXJnaW4tdG9wOiAtMTBweDsKICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgZm9udC1mYW1pbHk6IHNlcmlmOwp9Ci5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXY6YmVmb3JlIHsKICBjb250ZW50OiAnXDIwMzknOwp9Ci5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQ6YmVmb3JlIHsKICBjb250ZW50OiAnXDIwM2EnOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAxMHB4OwogIGxlZnQ6IDUwJTsKICB6LWluZGV4OiAxNTsKICB3aWR0aDogNjAlOwogIG1hcmdpbi1sZWZ0OiAtMzAlOwogIHBhZGRpbmctbGVmdDogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMHB4OwogIGhlaWdodDogMTBweDsKICBtYXJnaW46IDFweDsKICB0ZXh0LWluZGVudDogLTk5OXB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMCBcOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewogIG1hcmdpbjogMDsKICB3aWR0aDogMTJweDsKICBoZWlnaHQ6IDEycHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQouY2Fyb3VzZWwtY2FwdGlvbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDE1JTsKICByaWdodDogMTUlOwogIGJvdHRvbTogMjBweDsKICB6LWluZGV4OiAxMDsKICBwYWRkaW5nLXRvcDogMjBweDsKICBwYWRkaW5nLWJvdHRvbTogMjBweDsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuNik7Cn0KLmNhcm91c2VsLWNhcHRpb24gLmJ0biB7CiAgdGV4dC1zaGFkb3c6IG5vbmU7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29ucy1jaGV2cm9uLWxlZnQsCiAgLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbnMtY2hldnJvbi1yaWdodCwKICAuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2LAogIC5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQgewogICAgd2lkdGg6IDMwcHg7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBtYXJnaW4tdG9wOiAtMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgIGZvbnQtc2l6ZTogMzBweDsKICB9CiAgLmNhcm91c2VsLWNhcHRpb24gewogICAgbGVmdDogMjAlOwogICAgcmlnaHQ6IDIwJTsKICAgIHBhZGRpbmctYm90dG9tOiAzMHB4OwogIH0KICAuY2Fyb3VzZWwtaW5kaWNhdG9ycyB7CiAgICBib3R0b206IDIwcHg7CiAgfQp9Ci5jbGVhcmZpeDpiZWZvcmUsCi5jbGVhcmZpeDphZnRlciwKLmNvbnRhaW5lcjpiZWZvcmUsCi5jb250YWluZXI6YWZ0ZXIsCi5jb250YWluZXItZmx1aWQ6YmVmb3JlLAouY29udGFpbmVyLWZsdWlkOmFmdGVyLAoucm93OmJlZm9yZSwKLnJvdzphZnRlciwKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cDpiZWZvcmUsCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YWZ0ZXIsCi5idG4tdG9vbGJhcjpiZWZvcmUsCi5idG4tdG9vbGJhcjphZnRlciwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6YmVmb3JlLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDphZnRlciwKLm5hdjpiZWZvcmUsCi5uYXY6YWZ0ZXIsCi5uYXZiYXI6YmVmb3JlLAoubmF2YmFyOmFmdGVyLAoubmF2YmFyLWhlYWRlcjpiZWZvcmUsCi5uYXZiYXItaGVhZGVyOmFmdGVyLAoubmF2YmFyLWNvbGxhcHNlOmJlZm9yZSwKLm5hdmJhci1jb2xsYXBzZTphZnRlciwKLnBhZ2VyOmJlZm9yZSwKLnBhZ2VyOmFmdGVyLAoucGFuZWwtYm9keTpiZWZvcmUsCi5wYW5lbC1ib2R5OmFmdGVyLAoubW9kYWwtZm9vdGVyOmJlZm9yZSwKLm1vZGFsLWZvb3RlcjphZnRlciB7CiAgY29udGVudDogIiAiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5jbGVhcmZpeDphZnRlciwKLmNvbnRhaW5lcjphZnRlciwKLmNvbnRhaW5lci1mbHVpZDphZnRlciwKLnJvdzphZnRlciwKLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cDphZnRlciwKLmJ0bi10b29sYmFyOmFmdGVyLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDphZnRlciwKLm5hdjphZnRlciwKLm5hdmJhcjphZnRlciwKLm5hdmJhci1oZWFkZXI6YWZ0ZXIsCi5uYXZiYXItY29sbGFwc2U6YWZ0ZXIsCi5wYWdlcjphZnRlciwKLnBhbmVsLWJvZHk6YWZ0ZXIsCi5tb2RhbC1mb290ZXI6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5jZW50ZXItYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKfQoucHVsbC1yaWdodCB7CiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KLnB1bGwtbGVmdCB7CiAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKfQouaGlkZSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5zaG93IHsKICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9Ci5pbnZpc2libGUgewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoudGV4dC1oaWRlIHsKICBmb250OiAwLzAgYTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9Ci5oaWRkZW4gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQouYWZmaXggewogIHBvc2l0aW9uOiBmaXhlZDsKfQpALW1zLXZpZXdwb3J0IHsKICB3aWR0aDogZGV2aWNlLXdpZHRoOwp9Ci52aXNpYmxlLXhzLAp0ci52aXNpYmxlLXhzLAp0aC52aXNpYmxlLXhzLAp0ZC52aXNpYmxlLXhzIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLnZpc2libGUteHMgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS14cywKICB0ZC52aXNpYmxlLXhzIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KLnZpc2libGUtc20sCnRyLnZpc2libGUtc20sCnRoLnZpc2libGUtc20sCnRkLnZpc2libGUtc20gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogIC52aXNpYmxlLXNtIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIHRhYmxlLnZpc2libGUtc20gewogICAgZGlzcGxheTogdGFibGU7CiAgfQogIHRyLnZpc2libGUtc20gewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIHRoLnZpc2libGUtc20sCiAgdGQudmlzaWJsZS1zbSB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLW1kLAp0ci52aXNpYmxlLW1kLAp0aC52aXNpYmxlLW1kLAp0ZC52aXNpYmxlLW1kIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgLnZpc2libGUtbWQgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS1tZCwKICB0ZC52aXNpYmxlLW1kIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KLnZpc2libGUtbGcsCnRyLnZpc2libGUtbGcsCnRoLnZpc2libGUtbGcsCnRkLnZpc2libGUtbGcgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLnZpc2libGUtbGcgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS1sZywKICB0ZC52aXNpYmxlLWxnIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmhpZGRlbi14cywKICB0ci5oaWRkZW4teHMsCiAgdGguaGlkZGVuLXhzLAogIHRkLmhpZGRlbi14cyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgLmhpZGRlbi1zbSwKICB0ci5oaWRkZW4tc20sCiAgdGguaGlkZGVuLXNtLAogIHRkLmhpZGRlbi1zbSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkgewogIC5oaWRkZW4tbWQsCiAgdHIuaGlkZGVuLW1kLAogIHRoLmhpZGRlbi1tZCwKICB0ZC5oaWRkZW4tbWQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmhpZGRlbi1sZywKICB0ci5oaWRkZW4tbGcsCiAgdGguaGlkZGVuLWxnLAogIHRkLmhpZGRlbi1sZyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLXByaW50LAp0ci52aXNpYmxlLXByaW50LAp0aC52aXNpYmxlLXByaW50LAp0ZC52aXNpYmxlLXByaW50IHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIHByaW50IHsKICAudmlzaWJsZS1wcmludCB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXByaW50IHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLXByaW50IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLXByaW50LAogIHRkLnZpc2libGUtcHJpbnQgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgcHJpbnQgewogIC5oaWRkZW4tcHJpbnQsCiAgdHIuaGlkZGVuLXByaW50LAogIHRoLmhpZGRlbi1wcmludCwKICB0ZC5oaWRkZW4tcHJpbnQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/css/theme.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmJ0bi1kZWZhdWx0LAouYnRuLXByaW1hcnksCi5idG4tc3VjY2VzcywKLmJ0bi1pbmZvLAouYnRuLXdhcm5pbmcsCi5idG4tZGFuZ2VyIHsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLmJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmJ0bi1pbmZvOmFjdGl2ZSwKLmJ0bi13YXJuaW5nOmFjdGl2ZSwKLmJ0bi1kYW5nZXI6YWN0aXZlLAouYnRuLWRlZmF1bHQuYWN0aXZlLAouYnRuLXByaW1hcnkuYWN0aXZlLAouYnRuLXN1Y2Nlc3MuYWN0aXZlLAouYnRuLWluZm8uYWN0aXZlLAouYnRuLXdhcm5pbmcuYWN0aXZlLAouYnRuLWRhbmdlci5hY3RpdmUgewogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQouYnRuOmFjdGl2ZSwKLmJ0bi5hY3RpdmUgewogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1kZWZhdWx0IHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmYgMCUsICNlMGUwZTAgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ZmZiAwJSwgI2UwZTBlMCAxMDAlKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmZmZmZmYnLCBlbmRDb2xvcnN0cj0nI2ZmZTBlMGUwJywgR3JhZGllbnRUeXBlPTApOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGJvcmRlci1jb2xvcjogI2RiZGJkYjsKICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwogIGJvcmRlci1jb2xvcjogI2NjYzsKfQouYnRuLWRlZmF1bHQ6aG92ZXIsCi5idG4tZGVmYXVsdDpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNXB4Owp9Ci5idG4tZGVmYXVsdDphY3RpdmUsCi5idG4tZGVmYXVsdC5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7CiAgYm9yZGVyLWNvbG9yOiAjZGJkYmRiOwp9Ci5idG4tcHJpbWFyeSB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNDI4YmNhIDAlLCAjMmQ2Y2EyIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM0MjhiY2EgMCUsICMyZDZjYTIgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNDI4YmNhJywgZW5kQ29sb3JzdHI9JyNmZjJkNmNhMicsIEdyYWRpZW50VHlwZT0wKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkID0gZmFsc2UpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBib3JkZXItY29sb3I6ICMyYjY2OWE7Cn0KLmJ0bi1wcmltYXJ5OmhvdmVyLAouYnRuLXByaW1hcnk6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMyZDZjYTI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTVweDsKfQouYnRuLXByaW1hcnk6YWN0aXZlLAouYnRuLXByaW1hcnkuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQ2Y2EyOwogIGJvcmRlci1jb2xvcjogIzJiNjY5YTsKfQouYnRuLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzVjYjg1YyAwJSwgIzQxOTY0MSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNWNiODVjIDAlLCAjNDE5NjQxIDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjVjYjg1YycsIGVuZENvbG9yc3RyPScjZmY0MTk2NDEnLCBHcmFkaWVudFR5cGU9MCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYm9yZGVyLWNvbG9yOiAjM2U4ZjNlOwp9Ci5idG4tc3VjY2Vzczpob3ZlciwKLmJ0bi1zdWNjZXNzOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE5NjQxOwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cn0KLmJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmJ0bi1zdWNjZXNzLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQxOTY0MTsKICBib3JkZXItY29sb3I6ICMzZThmM2U7Cn0KLmJ0bi1pbmZvIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUgMCUsICMyYWFiZDIgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzViYzBkZSAwJSwgIzJhYWJkMiAxMDAlKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmY1YmMwZGUnLCBlbmRDb2xvcnN0cj0nI2ZmMmFhYmQyJywgR3JhZGllbnRUeXBlPTApOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGJvcmRlci1jb2xvcjogIzI4YTRjOTsKfQouYnRuLWluZm86aG92ZXIsCi5idG4taW5mbzpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzJhYWJkMjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNXB4Owp9Ci5idG4taW5mbzphY3RpdmUsCi5idG4taW5mby5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICMyYWFiZDI7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNGM5Owp9Ci5idG4td2FybmluZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZjBhZDRlIDAlLCAjZWI5MzE2IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmMGFkNGUgMCUsICNlYjkzMTYgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZjBhZDRlJywgZW5kQ29sb3JzdHI9JyNmZmViOTMxNicsIEdyYWRpZW50VHlwZT0wKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkID0gZmFsc2UpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBib3JkZXItY29sb3I6ICNlMzhkMTM7Cn0KLmJ0bi13YXJuaW5nOmhvdmVyLAouYnRuLXdhcm5pbmc6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNlYjkzMTY7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTVweDsKfQouYnRuLXdhcm5pbmc6YWN0aXZlLAouYnRuLXdhcm5pbmcuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWI5MzE2OwogIGJvcmRlci1jb2xvcjogI2UzOGQxMzsKfQouYnRuLWRhbmdlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZDk1MzRmIDAlLCAjYzEyZTJhIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkOTUzNGYgMCUsICNjMTJlMmEgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZDk1MzRmJywgZW5kQ29sb3JzdHI9JyNmZmMxMmUyYScsIEdyYWRpZW50VHlwZT0wKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkID0gZmFsc2UpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBib3JkZXItY29sb3I6ICNiOTJjMjg7Cn0KLmJ0bi1kYW5nZXI6aG92ZXIsCi5idG4tZGFuZ2VyOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzEyZTJhOwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cn0KLmJ0bi1kYW5nZXI6YWN0aXZlLAouYnRuLWRhbmdlci5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNjMTJlMmE7CiAgYm9yZGVyLWNvbG9yOiAjYjkyYzI4Owp9Ci50aHVtYm5haWwsCi5pbWctdGh1bWJuYWlsIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsCi5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmNWY1ZjUgMCUsICNlOGU4ZTggMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2Y1ZjVmNSAwJSwgI2U4ZThlOCAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZjVmNWY1JywgZW5kQ29sb3JzdHI9JyNmZmU4ZThlOCcsIEdyYWRpZW50VHlwZT0wKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4Owp9Ci5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGEsCi5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6aG92ZXIsCi5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzQyOGJjYSAwJSwgIzM1N2ViZCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNDI4YmNhIDAlLCAjMzU3ZWJkIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmY0MjhiY2EnLCBlbmRDb2xvcnN0cj0nI2ZmMzU3ZWJkJywgR3JhZGllbnRUeXBlPTApOwogIGJhY2tncm91bmQtY29sb3I6ICMzNTdlYmQ7Cn0KLm5hdmJhci1kZWZhdWx0IHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYgMCUsICNmOGY4ZjggMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ZmZmZmZiAwJSwgI2Y4ZjhmOCAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZmZmZmZmJywgZW5kQ29sb3JzdHI9JyNmZmY4ZjhmOCcsIEdyYWRpZW50VHlwZT0wKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkID0gZmFsc2UpOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSwgMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSwgMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNlYmViZWIgMCUsICNmM2YzZjMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ViZWJlYiAwJSwgI2YzZjNmMyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZWJlYmViJywgZW5kQ29sb3JzdHI9JyNmZmYzZjNmMycsIEdyYWRpZW50VHlwZT0wKTsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDNweCA5cHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLm5hdmJhci1icmFuZCwKLm5hdmJhci1uYXYgPiBsaSA+IGEgewogIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7Cn0KLm5hdmJhci1pbnZlcnNlIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMzYzNjM2MgMCUsICMyMjIgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzNjM2MzYyAwJSwgIzIyMiAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmM2MzYzNjJywgZW5kQ29sb3JzdHI9JyNmZjIyMjIyMicsIEdyYWRpZW50VHlwZT0wKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkID0gZmFsc2UpOwp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMyMjIgMCUsICMyODI4MjggMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzIyMiAwJSwgIzI4MjgyOCAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmMjIyMjIyJywgZW5kQ29sb3JzdHI9JyNmZjI4MjgyOCcsIEdyYWRpZW50VHlwZT0wKTsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIDAuMjUpOwp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiBsaSA+IGEgewogIHRleHQtc2hhZG93OiAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpOwp9Ci5uYXZiYXItc3RhdGljLXRvcCwKLm5hdmJhci1maXhlZC10b3AsCi5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5hbGVydCB7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5hbGVydC1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNkZmYwZDggMCUsICNjOGU1YmMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2RmZjBkOCAwJSwgI2M4ZTViYyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZGZmMGQ4JywgZW5kQ29sb3JzdHI9JyNmZmM4ZTViYycsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXItY29sb3I6ICNiMmRiYTE7Cn0KLmFsZXJ0LWluZm8gewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Q5ZWRmNyAwJSwgI2I5ZGVmMCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZDllZGY3IDAlLCAjYjlkZWYwIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZkOWVkZjcnLCBlbmRDb2xvcnN0cj0nI2ZmYjlkZWYwJywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlci1jb2xvcjogIzlhY2ZlYTsKfQouYWxlcnQtd2FybmluZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmNmOGUzIDAlLCAjZjhlZmMwIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmY2Y4ZTMgMCUsICNmOGVmYzAgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmZjZjhlMycsIGVuZENvbG9yc3RyPScjZmZmOGVmYzAnLCBHcmFkaWVudFR5cGU9MCk7CiAgYm9yZGVyLWNvbG9yOiAjZjVlNzllOwp9Ci5hbGVydC1kYW5nZXIgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2YyZGVkZSAwJSwgI2U3YzNjMyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZjJkZWRlIDAlLCAjZTdjM2MzIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmMmRlZGUnLCBlbmRDb2xvcnN0cj0nI2ZmZTdjM2MzJywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlci1jb2xvcjogI2RjYTdhNzsKfQoucHJvZ3Jlc3MgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ViZWJlYiAwJSwgI2Y1ZjVmNSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZWJlYmViIDAlLCAjZjVmNWY1IDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZlYmViZWInLCBlbmRDb2xvcnN0cj0nI2ZmZjVmNWY1JywgR3JhZGllbnRUeXBlPTApOwp9Ci5wcm9ncmVzcy1iYXIgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzQyOGJjYSAwJSwgIzMwNzFhOSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNDI4YmNhIDAlLCAjMzA3MWE5IDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmY0MjhiY2EnLCBlbmRDb2xvcnN0cj0nI2ZmMzA3MWE5JywgR3JhZGllbnRUeXBlPTApOwp9Ci5wcm9ncmVzcy1iYXItc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNWNiODVjIDAlLCAjNDQ5ZDQ0IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM1Y2I4NWMgMCUsICM0NDlkNDQgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjVjYjg1YycsIGVuZENvbG9yc3RyPScjZmY0NDlkNDQnLCBHcmFkaWVudFR5cGU9MCk7Cn0KLnByb2dyZXNzLWJhci1pbmZvIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUgMCUsICMzMWIwZDUgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzViYzBkZSAwJSwgIzMxYjBkNSAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNWJjMGRlJywgZW5kQ29sb3JzdHI9JyNmZjMxYjBkNScsIEdyYWRpZW50VHlwZT0wKTsKfQoucHJvZ3Jlc3MtYmFyLXdhcm5pbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2YwYWQ0ZSAwJSwgI2VjOTcxZiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZjBhZDRlIDAlLCAjZWM5NzFmIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmMGFkNGUnLCBlbmRDb2xvcnN0cj0nI2ZmZWM5NzFmJywgR3JhZGllbnRUeXBlPTApOwp9Ci5wcm9ncmVzcy1iYXItZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNkOTUzNGYgMCUsICNjOTMwMmMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2Q5NTM0ZiAwJSwgI2M5MzAyYyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZDk1MzRmJywgZW5kQ29sb3JzdHI9JyNmZmM5MzAyYycsIEdyYWRpZW50VHlwZT0wKTsKfQoubGlzdC1ncm91cCB7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSwKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6aG92ZXIsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIHsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgIzMwNzFhOTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM0MjhiY2EgMCUsICMzMjc4YjMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzQyOGJjYSAwJSwgIzMyNzhiMyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNDI4YmNhJywgZW5kQ29sb3JzdHI9JyNmZjMyNzhiMycsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXItY29sb3I6ICMzMjc4YjM7Cn0KLnBhbmVsIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5wYW5lbC1kZWZhdWx0ID4gLnBhbmVsLWhlYWRpbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Y1ZjVmNSAwJSwgI2U4ZThlOCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZjVmNWY1IDAlLCAjZThlOGU4IDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmNWY1ZjUnLCBlbmRDb2xvcnN0cj0nI2ZmZThlOGU4JywgR3JhZGllbnRUeXBlPTApOwp9Ci5wYW5lbC1wcmltYXJ5ID4gLnBhbmVsLWhlYWRpbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzQyOGJjYSAwJSwgIzM1N2ViZCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNDI4YmNhIDAlLCAjMzU3ZWJkIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmY0MjhiY2EnLCBlbmRDb2xvcnN0cj0nI2ZmMzU3ZWJkJywgR3JhZGllbnRUeXBlPTApOwp9Ci5wYW5lbC1zdWNjZXNzID4gLnBhbmVsLWhlYWRpbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2RmZjBkOCAwJSwgI2QwZTljNiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZGZmMGQ4IDAlLCAjZDBlOWM2IDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZkZmYwZDgnLCBlbmRDb2xvcnN0cj0nI2ZmZDBlOWM2JywgR3JhZGllbnRUeXBlPTApOwp9Ci5wYW5lbC1pbmZvID4gLnBhbmVsLWhlYWRpbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Q5ZWRmNyAwJSwgI2M0ZTNmMyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZDllZGY3IDAlLCAjYzRlM2YzIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZkOWVkZjcnLCBlbmRDb2xvcnN0cj0nI2ZmYzRlM2YzJywgR3JhZGllbnRUeXBlPTApOwp9Ci5wYW5lbC13YXJuaW5nID4gLnBhbmVsLWhlYWRpbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZjZjhlMyAwJSwgI2ZhZjJjYyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZmNmOGUzIDAlLCAjZmFmMmNjIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmY2Y4ZTMnLCBlbmRDb2xvcnN0cj0nI2ZmZmFmMmNjJywgR3JhZGllbnRUeXBlPTApOwp9Ci5wYW5lbC1kYW5nZXIgPiAucGFuZWwtaGVhZGluZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZjJkZWRlIDAlLCAjZWJjY2NjIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmMmRlZGUgMCUsICNlYmNjY2MgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmYyZGVkZScsIGVuZENvbG9yc3RyPScjZmZlYmNjY2MnLCBHcmFkaWVudFR5cGU9MCk7Cn0KLndlbGwgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2U4ZThlOCAwJSwgI2Y1ZjVmNSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZThlOGU4IDAlLCAjZjVmNWY1IDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZlOGU4ZTgnLCBlbmRDb2xvcnN0cj0nI2ZmZjVmNWY1JywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlci1jb2xvcjogI2RjZGNkYzsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjA1KSwgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/alerts.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQWxlcnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBzdHlsZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmFsZXJ0IHsKICBwYWRkaW5nOiBAYWxlcnQtcGFkZGluZzsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQGFsZXJ0LWJvcmRlci1yYWRpdXM7CgogIC8vIEhlYWRpbmdzIGZvciBsYXJnZXIgYWxlcnRzCiAgaDQgewogICAgbWFyZ2luLXRvcDogMDsKICAgIC8vIFNwZWNpZmllZCBmb3IgdGhlIGg0IHRvIHByZXZlbnQgY29uZmxpY3RzIG9mIGNoYW5naW5nIEBoZWFkaW5ncy1jb2xvcgogICAgY29sb3I6IGluaGVyaXQ7CiAgfQogIC8vIFByb3ZpZGUgY2xhc3MgZm9yIGxpbmtzIHRoYXQgbWF0Y2ggYWxlcnRzCiAgLmFsZXJ0LWxpbmsgewogICAgZm9udC13ZWlnaHQ6IEBhbGVydC1saW5rLWZvbnQtd2VpZ2h0OwogIH0KCiAgLy8gSW1wcm92ZSBhbGlnbm1lbnQgYW5kIHNwYWNpbmcgb2YgaW5uZXIgY29udGVudAogID4gcCwKICA+IHVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogID4gcCArIHAgewogICAgbWFyZ2luLXRvcDogNXB4OwogIH0KfQoKLy8gRGlzbWlzc2FibGUgYWxlcnRzCi8vCi8vIEV4cGFuZCB0aGUgcmlnaHQgcGFkZGluZyBhbmQgYWNjb3VudCBmb3IgdGhlIGNsb3NlIGJ1dHRvbidzIHBvc2l0aW9uaW5nLgoKLmFsZXJ0LWRpc21pc3NhYmxlIHsKIHBhZGRpbmctcmlnaHQ6IChAYWxlcnQtcGFkZGluZyArIDIwKTsKCiAgLy8gQWRqdXN0IGNsb3NlIGxpbmsgcG9zaXRpb24KICAuY2xvc2UgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMnB4OwogICAgcmlnaHQ6IC0yMXB4OwogICAgY29sb3I6IGluaGVyaXQ7CiAgfQp9CgovLyBBbHRlcm5hdGUgc3R5bGVzCi8vCi8vIEdlbmVyYXRlIGNvbnRleHR1YWwgbW9kaWZpZXIgY2xhc3NlcyBmb3IgY29sb3JpemluZyB0aGUgYWxlcnQuCgouYWxlcnQtc3VjY2VzcyB7CiAgLmFsZXJ0LXZhcmlhbnQoQGFsZXJ0LXN1Y2Nlc3MtYmc7IEBhbGVydC1zdWNjZXNzLWJvcmRlcjsgQGFsZXJ0LXN1Y2Nlc3MtdGV4dCk7Cn0KLmFsZXJ0LWluZm8gewogIC5hbGVydC12YXJpYW50KEBhbGVydC1pbmZvLWJnOyBAYWxlcnQtaW5mby1ib3JkZXI7IEBhbGVydC1pbmZvLXRleHQpOwp9Ci5hbGVydC13YXJuaW5nIHsKICAuYWxlcnQtdmFyaWFudChAYWxlcnQtd2FybmluZy1iZzsgQGFsZXJ0LXdhcm5pbmctYm9yZGVyOyBAYWxlcnQtd2FybmluZy10ZXh0KTsKfQouYWxlcnQtZGFuZ2VyIHsKICAuYWxlcnQtdmFyaWFudChAYWxlcnQtZGFuZ2VyLWJnOyBAYWxlcnQtZGFuZ2VyLWJvcmRlcjsgQGFsZXJ0LWRhbmdlci10ZXh0KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/badges.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQmFkZ2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBjbGFzc2VzCi5iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1pbi13aWR0aDogMTBweDsKICBwYWRkaW5nOiAzcHggN3B4OwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1zbWFsbDsKICBmb250LXdlaWdodDogQGJhZGdlLWZvbnQtd2VpZ2h0OwogIGNvbG9yOiBAYmFkZ2UtY29sb3I7CiAgbGluZS1oZWlnaHQ6IEBiYWRnZS1saW5lLWhlaWdodDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJhZGdlLWJnOwogIGJvcmRlci1yYWRpdXM6IEBiYWRnZS1ib3JkZXItcmFkaXVzOwoKICAvLyBFbXB0eSBiYWRnZXMgY29sbGFwc2UgYXV0b21hdGljYWxseSAobm90IGF2YWlsYWJsZSBpbiBJRTgpCiAgJjplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KCiAgLy8gUXVpY2sgZml4IGZvciBiYWRnZXMgaW4gYnV0dG9ucwogIC5idG4gJiB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0xcHg7CiAgfQogIC5idG4teHMgJiB7CiAgICB0b3A6IDA7CiAgICBwYWRkaW5nOiAxcHggNXB4OwogIH0KfQoKLy8gSG92ZXIgc3RhdGUsIGJ1dCBvbmx5IGZvciBsaW5rcwphLmJhZGdlIHsKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgY29sb3I6IEBiYWRnZS1saW5rLWhvdmVyLWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KfQoKLy8gQWNjb3VudCBmb3IgY291bnRlcnMgaW4gbmF2cwphLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgPiAuYmFkZ2UsCi5uYXYtcGlsbHMgPiAuYWN0aXZlID4gYSA+IC5iYWRnZSB7CiAgY29sb3I6IEBiYWRnZS1hY3RpdmUtY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJhZGdlLWFjdGl2ZS1iZzsKfQoubmF2LXBpbGxzID4gbGkgPiBhID4gLmJhZGdlIHsKICBtYXJnaW4tbGVmdDogM3B4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/bootstrap.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQ29yZSB2YXJpYWJsZXMgYW5kIG1peGlucwpAaW1wb3J0ICJ2YXJpYWJsZXMubGVzcyI7CkBpbXBvcnQgIm1peGlucy5sZXNzIjsKCi8vIFJlc2V0CkBpbXBvcnQgIm5vcm1hbGl6ZS5sZXNzIjsKQGltcG9ydCAicHJpbnQubGVzcyI7CgovLyBDb3JlIENTUwpAaW1wb3J0ICJzY2FmZm9sZGluZy5sZXNzIjsKQGltcG9ydCAidHlwZS5sZXNzIjsKQGltcG9ydCAiY29kZS5sZXNzIjsKQGltcG9ydCAiZ3JpZC5sZXNzIjsKQGltcG9ydCAidGFibGVzLmxlc3MiOwpAaW1wb3J0ICJmb3Jtcy5sZXNzIjsKQGltcG9ydCAiYnV0dG9ucy5sZXNzIjsKCi8vIENvbXBvbmVudHMKQGltcG9ydCAiY29tcG9uZW50LWFuaW1hdGlvbnMubGVzcyI7CkBpbXBvcnQgImdseXBoaWNvbnMubGVzcyI7CkBpbXBvcnQgImRyb3Bkb3ducy5sZXNzIjsKQGltcG9ydCAiYnV0dG9uLWdyb3Vwcy5sZXNzIjsKQGltcG9ydCAiaW5wdXQtZ3JvdXBzLmxlc3MiOwpAaW1wb3J0ICJuYXZzLmxlc3MiOwpAaW1wb3J0ICJuYXZiYXIubGVzcyI7CkBpbXBvcnQgImJyZWFkY3J1bWJzLmxlc3MiOwpAaW1wb3J0ICJwYWdpbmF0aW9uLmxlc3MiOwpAaW1wb3J0ICJwYWdlci5sZXNzIjsKQGltcG9ydCAibGFiZWxzLmxlc3MiOwpAaW1wb3J0ICJiYWRnZXMubGVzcyI7CkBpbXBvcnQgImp1bWJvdHJvbi5sZXNzIjsKQGltcG9ydCAidGh1bWJuYWlscy5sZXNzIjsKQGltcG9ydCAiYWxlcnRzLmxlc3MiOwpAaW1wb3J0ICJwcm9ncmVzcy1iYXJzLmxlc3MiOwpAaW1wb3J0ICJtZWRpYS5sZXNzIjsKQGltcG9ydCAibGlzdC1ncm91cC5sZXNzIjsKQGltcG9ydCAicGFuZWxzLmxlc3MiOwpAaW1wb3J0ICJ3ZWxscy5sZXNzIjsKQGltcG9ydCAiY2xvc2UubGVzcyI7CgovLyBDb21wb25lbnRzIHcvIEphdmFTY3JpcHQKQGltcG9ydCAibW9kYWxzLmxlc3MiOwpAaW1wb3J0ICJ0b29sdGlwLmxlc3MiOwpAaW1wb3J0ICJwb3BvdmVycy5sZXNzIjsKQGltcG9ydCAiY2Fyb3VzZWwubGVzcyI7CgovLyBVdGlsaXR5IGNsYXNzZXMKQGltcG9ydCAidXRpbGl0aWVzLmxlc3MiOwpAaW1wb3J0ICJyZXNwb25zaXZlLXV0aWxpdGllcy5sZXNzIjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/breadcrumbs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnJlYWRjcnVtYnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgouYnJlYWRjcnVtYiB7CiAgcGFkZGluZzogQGJyZWFkY3J1bWItcGFkZGluZy12ZXJ0aWNhbCBAYnJlYWRjcnVtYi1wYWRkaW5nLWhvcml6b250YWw7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJyZWFkY3J1bWItYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CgogICAgKyBsaTpiZWZvcmUgewogICAgICBjb250ZW50OiAiQHticmVhZGNydW1iLXNlcGFyYXRvcn1cMDBhMCI7IC8vIFVuaWNvZGUgc3BhY2UgYWRkZWQgc2luY2UgaW5saW5lLWJsb2NrIG1lYW5zIG5vbi1jb2xsYXBzaW5nIHdoaXRlLXNwYWNlCiAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICBjb2xvcjogQGJyZWFkY3J1bWItY29sb3I7CiAgICB9CiAgfQoKICA+IC5hY3RpdmUgewogICAgY29sb3I6IEBicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/button-groups.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnV0dG9uIGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gTWFrZSB0aGUgZGl2IGJlaGF2ZSBsaWtlIGEgYnV0dG9uCi5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLy8gbWF0Y2ggLmJ0biBhbGlnbm1lbnQgZ2l2ZW4gZm9udC1zaXplIGhhY2sgYWJvdmUKICA+IC5idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZmxvYXQ6IGxlZnQ7CiAgICAvLyBCcmluZyB0aGUgImFjdGl2ZSIgYnV0dG9uIHRvIHRoZSBmcm9udAogICAgJjpob3ZlciwKICAgICY6Zm9jdXMsCiAgICAmOmFjdGl2ZSwKICAgICYuYWN0aXZlIHsKICAgICAgei1pbmRleDogMjsKICAgIH0KICAgICY6Zm9jdXMgewogICAgICAvLyBSZW1vdmUgZm9jdXMgb3V0bGluZSB3aGVuIGRyb3Bkb3duIEpTIGFkZHMgaXQgYWZ0ZXIgY2xvc2luZyB0aGUgbWVudQogICAgICBvdXRsaW5lOiBub25lOwogICAgfQogIH0KfQoKLy8gUHJldmVudCBkb3VibGUgYm9yZGVycyB3aGVuIGJ1dHRvbnMgYXJlIG5leHQgdG8gZWFjaCBvdGhlcgouYnRuLWdyb3VwIHsKICAuYnRuICsgLmJ0biwKICAuYnRuICsgLmJ0bi1ncm91cCwKICAuYnRuLWdyb3VwICsgLmJ0biwKICAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgICBtYXJnaW4tbGVmdDogLTFweDsKICB9Cn0KCi8vIE9wdGlvbmFsOiBHcm91cCBtdWx0aXBsZSBidXR0b24gZ3JvdXBzIHRvZ2V0aGVyIGZvciBhIHRvb2xiYXIKLmJ0bi10b29sYmFyIHsKICBtYXJnaW4tbGVmdDogLTVweDsgLy8gT2Zmc2V0IHRoZSBmaXJzdCBjaGlsZCdzIG1hcmdpbgogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwoKICAuYnRuLWdyb3VwLAogIC5pbnB1dC1ncm91cCB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgPiAuYnRuLAogID4gLmJ0bi1ncm91cCwKICA+IC5pbnB1dC1ncm91cCB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogIH0KfQoKLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkgewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KCi8vIFNldCBjb3JuZXJzIGluZGl2aWR1YWwgYmVjYXVzZSBzb21ldGltZXMgYSBzaW5nbGUgYnV0dG9uIGNhbiBiZSBpbiBhIC5idG4tZ3JvdXAgYW5kIHdlIG5lZWQgOmZpcnN0LWNoaWxkIGFuZCA6bGFzdC1jaGlsZCB0byBib3RoIG1hdGNoCi5idG4tZ3JvdXAgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tbGVmdDogMDsKICAmOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHsKICAgIC5ib3JkZXItcmlnaHQtcmFkaXVzKDApOwogIH0KfQovLyBOZWVkIC5kcm9wZG93bi10b2dnbGUgc2luY2UgOmxhc3QtY2hpbGQgZG9lc24ndCBhcHBseSBnaXZlbiBhIC5kcm9wZG93bi1tZW51IGltbWVkaWF0ZWx5IGFmdGVyIGl0Ci5idG4tZ3JvdXAgPiAuYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAgPiAuZHJvcGRvd24tdG9nZ2xlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9CgovLyBDdXN0b20gZWRpdHMgZm9yIGluY2x1ZGluZyBidG4tZ3JvdXBzIHdpdGhpbiBidG4tZ3JvdXBzICh1c2VmdWwgZm9yIGluY2x1ZGluZyBkcm9wZG93biBidXR0b25zIHdpdGhpbiBhIGJ0bi1ncm91cCkKLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXAgewogIGZsb2F0OiBsZWZ0Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkIHsKICA+IC5idG46bGFzdC1jaGlsZCwKICA+IC5kcm9wZG93bi10b2dnbGUgewogICAgLmJvcmRlci1yaWdodC1yYWRpdXMoMCk7CiAgfQp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmxhc3QtY2hpbGQgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9CgovLyBPbiBhY3RpdmUgYW5kIG9wZW4sIGRvbid0IHNob3cgb3V0bGluZQouYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLAouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgb3V0bGluZTogMDsKfQoKCi8vIFNpemluZwovLwovLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi4KCi5idG4tZ3JvdXAteHMgPiAuYnRuIHsgLmJ0bi14cygpOyB9Ci5idG4tZ3JvdXAtc20gPiAuYnRuIHsgLmJ0bi1zbSgpOyB9Ci5idG4tZ3JvdXAtbGcgPiAuYnRuIHsgLmJ0bi1sZygpOyB9CgoKLy8gU3BsaXQgYnV0dG9uIGRyb3Bkb3ducwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBHaXZlIHRoZSBsaW5lIGJldHdlZW4gYnV0dG9ucyBzb21lIGRlcHRoCi5idG4tZ3JvdXAgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgcGFkZGluZy1yaWdodDogOHB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiAxMnB4OwogIHBhZGRpbmctcmlnaHQ6IDEycHg7Cn0KCi8vIFRoZSBjbGlja2FibGUgYnV0dG9uIGZvciB0b2dnbGluZyB0aGUgbWVudQovLyBSZW1vdmUgdGhlIGdyYWRpZW50IGFuZCBzZXQgdGhlIHNhbWUgaW5zZXQgc2hhZG93IGFzIHRoZSA6YWN0aXZlIHN0YXRlCi5idG4tZ3JvdXAub3BlbiAuZHJvcGRvd24tdG9nZ2xlIHsKICAuYm94LXNoYWRvdyhpbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KSk7CgogIC8vIFNob3cgbm8gc2hhZG93IGZvciBgLmJ0bi1saW5rYCBzaW5jZSBpdCBoYXMgbm8gb3RoZXIgYnV0dG9uIHN0eWxlcy4KICAmLmJ0bi1saW5rIHsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwogIH0KfQoKCi8vIFJlcG9zaXRpb24gdGhlIGNhcmV0Ci5idG4gLmNhcmV0IHsKICBtYXJnaW4tbGVmdDogMDsKfQovLyBDYXJldHMgaW4gb3RoZXIgYnV0dG9uIHNpemVzCi5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IEBjYXJldC13aWR0aC1sYXJnZSBAY2FyZXQtd2lkdGgtbGFyZ2UgMDsKICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwp9Ci8vIFVwc2lkZSBkb3duIGNhcmV0cyBmb3IgLmRyb3B1cAouZHJvcHVwIC5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IDAgQGNhcmV0LXdpZHRoLWxhcmdlIEBjYXJldC13aWR0aC1sYXJnZTsKfQoKCi8vIFZlcnRpY2FsIGJ1dHRvbiBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CiAgPiAuYnRuLAogID4gLmJ0bi1ncm91cCwKICA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IG5vbmU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CgogIC8vIENsZWFyIGZsb2F0cyBzbyBkcm9wZG93biBtZW51cyBjYW4gYmUgcHJvcGVybHkgcGxhY2VkCiAgPiAuYnRuLWdyb3VwIHsKICAgICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwogICAgPiAuYnRuIHsKICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgfQoKICA+IC5idG4gKyAuYnRuLAogID4gLmJ0biArIC5idG4tZ3JvdXAsCiAgPiAuYnRuLWdyb3VwICsgLmJ0biwKICA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9Cn0KCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHsKICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9CiAgJjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogICAgLmJvcmRlci1ib3R0b20tcmFkaXVzKDApOwogIH0KICAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICAgIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKICB9Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgPiAuYnRuOmxhc3QtY2hpbGQsCiAgPiAuZHJvcGRvd24tdG9nZ2xlIHsKICAgIC5ib3JkZXItYm90dG9tLXJhZGl1cygwKTsKICB9Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG46Zmlyc3QtY2hpbGQgewogIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKfQoKCgovLyBKdXN0aWZpZWQgYnV0dG9uIGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuLWdyb3VwLWp1c3RpZmllZCB7CiAgZGlzcGxheTogdGFibGU7CiAgd2lkdGg6IDEwMCU7CiAgdGFibGUtbGF5b3V0OiBmaXhlZDsKICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOwogID4gLmJ0biwKICA+IC5idG4tZ3JvdXAgewogICAgZmxvYXQ6IG5vbmU7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgd2lkdGg6IDElOwogIH0KICA+IC5idG4tZ3JvdXAgLmJ0biB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KCgovLyBDaGVja2JveCBhbmQgcmFkaW8gb3B0aW9ucwpbZGF0YS10b2dnbGU9ImJ1dHRvbnMiXSA+IC5idG4gPiBpbnB1dFt0eXBlPSJyYWRpbyJdLApbZGF0YS10b2dnbGU9ImJ1dHRvbnMiXSA+IC5idG4gPiBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBkaXNwbGF5OiBub25lOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/buttons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhc2Ugc3R5bGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gRm9yIGlucHV0LmJ0bgogIGZvbnQtd2VpZ2h0OiBAYnRuLWZvbnQtd2VpZ2h0OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyAvLyBSZXNldCB1bnVzdWFsIEZpcmVmb3gtb24tQW5kcm9pZCBkZWZhdWx0IHN0eWxlOyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9pc3N1ZXMvMjE0CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAuYnV0dG9uLXNpemUoQHBhZGRpbmctYmFzZS12ZXJ0aWNhbDsgQHBhZGRpbmctYmFzZS1ob3Jpem9udGFsOyBAZm9udC1zaXplLWJhc2U7IEBsaW5lLWhlaWdodC1iYXNlOyBAYm9yZGVyLXJhZGl1cy1iYXNlKTsKICAudXNlci1zZWxlY3Qobm9uZSk7CgogICY6Zm9jdXMgewogICAgLnRhYi1mb2N1cygpOwogIH0KCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAYnRuLWRlZmF1bHQtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgfQoKICAmOmFjdGl2ZSwKICAmLmFjdGl2ZSB7CiAgICBvdXRsaW5lOiAwOwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgIC5ib3gtc2hhZG93KGluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpKTsKICB9CgogICYuZGlzYWJsZWQsCiAgJltkaXNhYmxlZF0sCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvLyBGdXR1cmUtcHJvb2YgZGlzYWJsaW5nIG9mIGNsaWNrcwogICAgLm9wYWNpdHkoLjY1KTsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwogIH0KfQoKCi8vIEFsdGVybmF0ZSBidXR0b25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuLWRlZmF1bHQgewogIC5idXR0b24tdmFyaWFudChAYnRuLWRlZmF1bHQtY29sb3I7IEBidG4tZGVmYXVsdC1iZzsgQGJ0bi1kZWZhdWx0LWJvcmRlcik7Cn0KLmJ0bi1wcmltYXJ5IHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi1wcmltYXJ5LWNvbG9yOyBAYnRuLXByaW1hcnktYmc7IEBidG4tcHJpbWFyeS1ib3JkZXIpOwp9Ci8vIFN1Y2Nlc3MgYXBwZWFycyBhcyBncmVlbgouYnRuLXN1Y2Nlc3MgewogIC5idXR0b24tdmFyaWFudChAYnRuLXN1Y2Nlc3MtY29sb3I7IEBidG4tc3VjY2Vzcy1iZzsgQGJ0bi1zdWNjZXNzLWJvcmRlcik7Cn0KLy8gSW5mbyBhcHBlYXJzIGFzIGJsdWUtZ3JlZW4KLmJ0bi1pbmZvIHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi1pbmZvLWNvbG9yOyBAYnRuLWluZm8tYmc7IEBidG4taW5mby1ib3JkZXIpOwp9Ci8vIFdhcm5pbmcgYXBwZWFycyBhcyBvcmFuZ2UKLmJ0bi13YXJuaW5nIHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi13YXJuaW5nLWNvbG9yOyBAYnRuLXdhcm5pbmctYmc7IEBidG4td2FybmluZy1ib3JkZXIpOwp9Ci8vIERhbmdlciBhbmQgZXJyb3IgYXBwZWFyIGFzIHJlZAouYnRuLWRhbmdlciB7CiAgLmJ1dHRvbi12YXJpYW50KEBidG4tZGFuZ2VyLWNvbG9yOyBAYnRuLWRhbmdlci1iZzsgQGJ0bi1kYW5nZXItYm9yZGVyKTsKfQoKCi8vIExpbmsgYnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBNYWtlIGEgYnV0dG9uIGxvb2sgYW5kIGJlaGF2ZSBsaWtlIGEgbGluawouYnRuLWxpbmsgewogIGNvbG9yOiBAbGluay1jb2xvcjsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXItcmFkaXVzOiAwOwoKICAmLAogICY6YWN0aXZlLAogICZbZGlzYWJsZWRdLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgLmJveC1zaGFkb3cobm9uZSk7CiAgfQogICYsCiAgJjpob3ZlciwKICAmOmZvY3VzLAogICY6YWN0aXZlIHsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGxpbmstaG92ZXItY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KICAmW2Rpc2FibGVkXSwKICBmaWVsZHNldFtkaXNhYmxlZF0gJiB7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAYnRuLWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIH0KICB9Cn0KCgovLyBCdXR0b24gU2l6ZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5idG4tbGcgewogIC8vIGxpbmUtaGVpZ2h0OiBlbnN1cmUgZXZlbi1udW1iZXJlZCBoZWlnaHQgb2YgYnV0dG9uIG5leHQgdG8gbGFyZ2UgaW5wdXQKICAuYnV0dG9uLXNpemUoQHBhZGRpbmctbGFyZ2UtdmVydGljYWw7IEBwYWRkaW5nLWxhcmdlLWhvcml6b250YWw7IEBmb250LXNpemUtbGFyZ2U7IEBsaW5lLWhlaWdodC1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9Ci5idG4tc20gewogIC8vIGxpbmUtaGVpZ2h0OiBlbnN1cmUgcHJvcGVyIGhlaWdodCBvZiBidXR0b24gbmV4dCB0byBzbWFsbCBpbnB1dAogIC5idXR0b24tc2l6ZShAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGxpbmUtaGVpZ2h0LXNtYWxsOyBAYm9yZGVyLXJhZGl1cy1zbWFsbCk7Cn0KLmJ0bi14cyB7CiAgLmJ1dHRvbi1zaXplKEBwYWRkaW5nLXhzLXZlcnRpY2FsOyBAcGFkZGluZy14cy1ob3Jpem9udGFsOyBAZm9udC1zaXplLXNtYWxsOyBAbGluZS1oZWlnaHQtc21hbGw7IEBib3JkZXItcmFkaXVzLXNtYWxsKTsKfQoKCi8vIEJsb2NrIGJ1dHRvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmJ0bi1ibG9jayB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIHBhZGRpbmctcmlnaHQ6IDA7Cn0KCi8vIFZlcnRpY2FsbHkgc3BhY2Ugb3V0IG11bHRpcGxlIGJsb2NrIGJ1dHRvbnMKLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewogIG1hcmdpbi10b3A6IDVweDsKfQoKLy8gU3BlY2lmaWNpdHkgb3ZlcnJpZGVzCmlucHV0W3R5cGU9InN1Ym1pdCJdLAppbnB1dFt0eXBlPSJyZXNldCJdLAppbnB1dFt0eXBlPSJidXR0b24iXSB7CiAgJi5idG4tYmxvY2sgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/carousel.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ2Fyb3VzZWwKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBXcmFwcGVyIGZvciB0aGUgc2xpZGUgY29udGFpbmVyIGFuZCBpbmRpY2F0b3JzCi5jYXJvdXNlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouY2Fyb3VzZWwtaW5uZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdpZHRoOiAxMDAlOwoKICA+IC5pdGVtIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAudHJhbnNpdGlvbiguNnMgZWFzZS1pbi1vdXQgbGVmdCk7CgogICAgLy8gQWNjb3VudCBmb3IgamFua2l0dWRlIG9uIGltYWdlcwogICAgPiBpbWcsCiAgICA+IGEgPiBpbWcgewogICAgICAuaW1nLXJlc3BvbnNpdmUoKTsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICB9CiAgfQoKICA+IC5hY3RpdmUsCiAgPiAubmV4dCwKICA+IC5wcmV2IHsgZGlzcGxheTogYmxvY2s7IH0KCiAgPiAuYWN0aXZlIHsKICAgIGxlZnQ6IDA7CiAgfQoKICA+IC5uZXh0LAogID4gLnByZXYgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgd2lkdGg6IDEwMCU7CiAgfQoKICA+IC5uZXh0IHsKICAgIGxlZnQ6IDEwMCU7CiAgfQogID4gLnByZXYgewogICAgbGVmdDogLTEwMCU7CiAgfQogID4gLm5leHQubGVmdCwKICA+IC5wcmV2LnJpZ2h0IHsKICAgIGxlZnQ6IDA7CiAgfQoKICA+IC5hY3RpdmUubGVmdCB7CiAgICBsZWZ0OiAtMTAwJTsKICB9CiAgPiAuYWN0aXZlLnJpZ2h0IHsKICAgIGxlZnQ6IDEwMCU7CiAgfQoKfQoKLy8gTGVmdC9yaWdodCBjb250cm9scyBmb3IgbmF2Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmNhcm91c2VsLWNvbnRyb2wgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICBib3R0b206IDA7CiAgd2lkdGg6IEBjYXJvdXNlbC1jb250cm9sLXdpZHRoOwogIC5vcGFjaXR5KEBjYXJvdXNlbC1jb250cm9sLW9wYWNpdHkpOwogIGZvbnQtc2l6ZTogQGNhcm91c2VsLWNvbnRyb2wtZm9udC1zaXplOwogIGNvbG9yOiBAY2Fyb3VzZWwtY29udHJvbC1jb2xvcjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1zaGFkb3c6IEBjYXJvdXNlbC10ZXh0LXNoYWRvdzsKICAvLyBXZSBjYW4ndCBoYXZlIHRoaXMgdHJhbnNpdGlvbiBoZXJlIGJlY2F1c2UgV2ViS2l0IGNhbmNlbHMgdGhlIGNhcm91c2VsCiAgLy8gYW5pbWF0aW9uIGlmIHlvdSB0cmlwIHRoaXMgd2hpbGUgaW4gdGhlIG1pZGRsZSBvZiBhbm90aGVyIGFuaW1hdGlvbi4KCiAgLy8gU2V0IGdyYWRpZW50cyBmb3IgYmFja2dyb3VuZHMKICAmLmxlZnQgewogICAgI2dyYWRpZW50ID4gLmhvcml6b250YWwoQHN0YXJ0LWNvbG9yOiByZ2JhKDAsMCwwLC41KTsgQGVuZC1jb2xvcjogcmdiYSgwLDAsMCwuMDAwMSkpOwogIH0KICAmLnJpZ2h0IHsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKICAgICNncmFkaWVudCA+IC5ob3Jpem9udGFsKEBzdGFydC1jb2xvcjogcmdiYSgwLDAsMCwuMDAwMSk7IEBlbmQtY29sb3I6IHJnYmEoMCwwLDAsLjUpKTsKICB9CgogIC8vIEhvdmVyL2ZvY3VzIHN0YXRlCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIG91dGxpbmU6IG5vbmU7CiAgICBjb2xvcjogQGNhcm91c2VsLWNvbnRyb2wtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAub3BhY2l0eSguOSk7CiAgfQoKICAvLyBUb2dnbGVzCiAgLmljb24tcHJldiwKICAuaWNvbi1uZXh0LAogIC5nbHlwaGljb24tY2hldnJvbi1sZWZ0LAogIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIHotaW5kZXg6IDU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgfQogIC5pY29uLXByZXYsCiAgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQgewogICAgbGVmdDogNTAlOwogIH0KICAuaWNvbi1uZXh0LAogIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCB7CiAgICByaWdodDogNTAlOwogIH0KICAuaWNvbi1wcmV2LAogIC5pY29uLW5leHQgewogICAgd2lkdGg6ICAyMHB4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgbWFyZ2luLXRvcDogLTEwcHg7CiAgICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgICBmb250LWZhbWlseTogc2VyaWY7CiAgfQoKICAuaWNvbi1wcmV2IHsKICAgICY6YmVmb3JlIHsKICAgICAgY29udGVudDogJ1wyMDM5JzsvLyBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAoVSsyMDM5KQogICAgfQogIH0KICAuaWNvbi1uZXh0IHsKICAgICY6YmVmb3JlIHsKICAgICAgY29udGVudDogJ1wyMDNhJzsvLyBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKFUrMjAzQSkKICAgIH0KICB9Cn0KCi8vIE9wdGlvbmFsIGluZGljYXRvciBwaXBzCi8vCi8vIEFkZCBhbiB1bm9yZGVyZWQgbGlzdCB3aXRoIHRoZSBmb2xsb3dpbmcgY2xhc3MgYW5kIGFkZCBhIGxpc3QgaXRlbSBmb3IgZWFjaAovLyBzbGlkZSB5b3VyIGNhcm91c2VsIGhvbGRzLgoKLmNhcm91c2VsLWluZGljYXRvcnMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDEwcHg7CiAgbGVmdDogNTAlOwogIHotaW5kZXg6IDE1OwogIHdpZHRoOiA2MCU7CiAgbWFyZ2luLWxlZnQ6IC0zMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwoKICBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogIDEwcHg7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBtYXJnaW46IDFweDsKICAgIHRleHQtaW5kZW50OiAtOTk5cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCBAY2Fyb3VzZWwtaW5kaWNhdG9yLWJvcmRlci1jb2xvcjsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CgogICAgLy8gSUU4LTkgaGFjayBmb3IgZXZlbnQgaGFuZGxpbmcKICAgIC8vCiAgICAvLyBJbnRlcm5ldCBFeHBsb3JlciA4LTkgZG9lcyBub3Qgc3VwcG9ydCBjbGlja3Mgb24gZWxlbWVudHMgd2l0aG91dCBhIHNldAogICAgLy8gYGJhY2tncm91bmQtY29sb3JgLiBXZSBjYW5ub3QgdXNlIGBmaWx0ZXJgIHNpbmNlIHRoYXQncyBub3Qgdmlld2VkIGFzIGEKICAgIC8vIGJhY2tncm91bmQgY29sb3IgYnkgdGhlIGJyb3dzZXIuIFRodXMsIGEgaGFjayBpcyBuZWVkZWQuCiAgICAvLwogICAgLy8gRm9yIElFOCwgd2Ugc2V0IHNvbGlkIGJsYWNrIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydCBgcmdiYSgpYC4gRm9yIElFOSwgd2UKICAgIC8vIHNldCBhbHBoYSB0cmFuc3BhcmVuY3kgZm9yIHRoZSBiZXN0IHJlc3VsdHMgcG9zc2libGUuCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwIFw5OyAvLyBJRTgKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMCk7IC8vIElFOQogIH0KICAuYWN0aXZlIHsKICAgIG1hcmdpbjogMDsKICAgIHdpZHRoOiAgMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIGJhY2tncm91bmQtY29sb3I6IEBjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOwogIH0KfQoKLy8gT3B0aW9uYWwgY2FwdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSGlkZGVuIGJ5IGRlZmF1bHQgZm9yIHNtYWxsZXIgdmlld3BvcnRzCi5jYXJvdXNlbC1jYXB0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMTUlOwogIHJpZ2h0OiAxNSU7CiAgYm90dG9tOiAyMHB4OwogIHotaW5kZXg6IDEwOwogIHBhZGRpbmctdG9wOiAyMHB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4OwogIGNvbG9yOiBAY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1zaGFkb3c6IEBjYXJvdXNlbC10ZXh0LXNoYWRvdzsKICAmIC5idG4gewogICAgdGV4dC1zaGFkb3c6IG5vbmU7IC8vIE5vIHNoYWRvdyBmb3IgYnV0dG9uIGVsZW1lbnRzIGluIGNhcm91c2VsLWNhcHRpb24KICB9Cn0KCgovLyBTY2FsZSB1cCBjb250cm9scyBmb3IgdGFibGV0cyBhbmQgdXAKQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKCiAgLy8gU2NhbGUgdXAgdGhlIGNvbnRyb2xzIGEgc21pZGdlCiAgLmNhcm91c2VsLWNvbnRyb2wgewogICAgLmdseXBoaWNvbnMtY2hldnJvbi1sZWZ0LAogICAgLmdseXBoaWNvbnMtY2hldnJvbi1yaWdodCwKICAgIC5pY29uLXByZXYsCiAgICAuaWNvbi1uZXh0IHsKICAgICAgd2lkdGg6IDMwcHg7CiAgICAgIGhlaWdodDogMzBweDsKICAgICAgbWFyZ2luLXRvcDogLTE1cHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgICAgZm9udC1zaXplOiAzMHB4OwogICAgfQogIH0KCiAgLy8gU2hvdyBhbmQgbGVmdCBhbGlnbiB0aGUgY2FwdGlvbnMKICAuY2Fyb3VzZWwtY2FwdGlvbiB7CiAgICBsZWZ0OiAyMCU7CiAgICByaWdodDogMjAlOwogICAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgfQoKICAvLyBNb3ZlIHVwIHRoZSBpbmRpY2F0b3JzCiAgLmNhcm91c2VsLWluZGljYXRvcnMgewogICAgYm90dG9tOiAyMHB4OwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/close.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ2xvc2UgaWNvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgouY2xvc2UgewogIGZsb2F0OiByaWdodDsKICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjUpOwogIGZvbnQtd2VpZ2h0OiBAY2xvc2UtZm9udC13ZWlnaHQ7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6IEBjbG9zZS1jb2xvcjsKICB0ZXh0LXNoYWRvdzogQGNsb3NlLXRleHQtc2hhZG93OwogIC5vcGFjaXR5KC4yKTsKCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAY2xvc2UtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAub3BhY2l0eSguNSk7CiAgfQoKICAvLyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGJ1dHRvbiB2ZXJzaW9uCiAgLy8gaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuCiAgLy8gSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj0iIyJgLgogIGJ1dHRvbiYgewogICAgcGFkZGluZzogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAwOwogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/code.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ29kZSAoaW5saW5lIGFuZCBibG9jaykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBJbmxpbmUgYW5kIGJsb2NrIGNvZGUgc3R5bGVzCmNvZGUsCmtiZCwKcHJlLApzYW1wIHsKICBmb250LWZhbWlseTogQGZvbnQtZmFtaWx5LW1vbm9zcGFjZTsKfQoKLy8gSW5saW5lIGNvZGUKY29kZSB7CiAgcGFkZGluZzogMnB4IDRweDsKICBmb250LXNpemU6IDkwJTsKICBjb2xvcjogQGNvZGUtY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGNvZGUtYmc7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwp9CgovLyBVc2VyIGlucHV0IHR5cGljYWxseSBlbnRlcmVkIHZpYSBrZXlib2FyZAprYmQgewogIHBhZGRpbmc6IDJweCA0cHg7CiAgZm9udC1zaXplOiA5MCU7CiAgY29sb3I6IEBrYmQtY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGtiZC1iZzsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1zbWFsbDsKICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLC4yNSk7Cn0KCi8vIEJsb2NrcyBvZiBjb2RlCnByZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogKChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLSAxKSAvIDIpOwogIG1hcmdpbjogMCAwIChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLyAyKTsKICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgLSAxKTsgLy8gMTRweCB0byAxM3B4CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgY29sb3I6IEBwcmUtY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQHByZS1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAcHJlLWJvcmRlci1jb2xvcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwoKICAvLyBBY2NvdW50IGZvciBzb21lIGNvZGUgb3V0cHV0cyB0aGF0IHBsYWNlIGNvZGUgdGFncyBpbiBwcmUgdGFncwogIGNvZGUgewogICAgcGFkZGluZzogMDsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQoKLy8gRW5hYmxlIHNjcm9sbGFibGUgYmxvY2tzIG9mIGNvZGUKLnByZS1zY3JvbGxhYmxlIHsKICBtYXgtaGVpZ2h0OiBAcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDsKICBvdmVyZmxvdy15OiBzY3JvbGw7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/component-animations.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ29tcG9uZW50IGFuaW1hdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEhlYWRzIHVwIQovLwovLyBXZSBkb24ndCB1c2UgdGhlIGAub3BhY2l0eSgpYCBtaXhpbiBoZXJlIHNpbmNlIGl0IGNhdXNlcyBhIGJ1ZyB3aXRoIHRleHQKLy8gZmllbGRzIGluIElFNy04LiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2l0dGVyL2Jvb3RzdHJhcC9wdWxsLzM1NTIuCgouZmFkZSB7CiAgb3BhY2l0eTogMDsKICAudHJhbnNpdGlvbihvcGFjaXR5IC4xNXMgbGluZWFyKTsKICAmLmluIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgouY29sbGFwc2UgewogIGRpc3BsYXk6IG5vbmU7CiAgJi5pbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9Cn0KLmNvbGxhcHNpbmcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAudHJhbnNpdGlvbihoZWlnaHQgLjM1cyBlYXNlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/dropdowns.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gRHJvcGRvd24gbWVudXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBEcm9wZG93biBhcnJvdy9jYXJldAouY2FyZXQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDJweDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGJvcmRlci10b3A6ICAgQGNhcmV0LXdpZHRoLWJhc2Ugc29saWQ7CiAgYm9yZGVyLXJpZ2h0OiBAY2FyZXQtd2lkdGgtYmFzZSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItbGVmdDogIEBjYXJldC13aWR0aC1iYXNlIHNvbGlkIHRyYW5zcGFyZW50Owp9CgovLyBUaGUgZHJvcGRvd24gd3JhcHBlciAoZGl2KQouZHJvcGRvd24gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLy8gUHJldmVudCB0aGUgZm9jdXMgb24gdGhlIGRyb3Bkb3duIHRvZ2dsZSB3aGVuIGNsb3NpbmcgZHJvcGRvd25zCi5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIG91dGxpbmU6IDA7Cn0KCi8vIFRoZSBkcm9wZG93biBtZW51ICh1bCkKLmRyb3Bkb3duLW1lbnUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LWRyb3Bkb3duOwogIGRpc3BsYXk6IG5vbmU7IC8vIG5vbmUgYnkgZGVmYXVsdCwgYnV0IGJsb2NrIG9uICJvcGVuIiBvZiB0aGUgbWVudQogIGZsb2F0OiBsZWZ0OwogIG1pbi13aWR0aDogMTYwcHg7CiAgcGFkZGluZzogNXB4IDA7CiAgbWFyZ2luOiAycHggMCAwOyAvLyBvdmVycmlkZSBkZWZhdWx0IHVsCiAgbGlzdC1zdHlsZTogbm9uZTsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAZHJvcGRvd24tYmc7CiAgYm9yZGVyOiAxcHggc29saWQgQGRyb3Bkb3duLWZhbGxiYWNrLWJvcmRlcjsgLy8gSUU4IGZhbGxiYWNrCiAgYm9yZGVyOiAxcHggc29saWQgQGRyb3Bkb3duLWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogIC5ib3gtc2hhZG93KDAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KSk7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKCiAgLy8gQWxpZ25zIHRoZSBkcm9wZG93biBtZW51IHRvIHJpZ2h0CiAgLy8KICAvLyBEZXByZWNhdGVkIGFzIG9mIDMuMS4wIGluIGZhdm9yIG9mIGAuZHJvcGRvd24tbWVudS1bZGlyXWAKICAmLnB1bGwtcmlnaHQgewogICAgcmlnaHQ6IDA7CiAgICBsZWZ0OiBhdXRvOwogIH0KCiAgLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBocikgd2l0aGluIHRoZSBkcm9wZG93bgogIC5kaXZpZGVyIHsKICAgIC5uYXYtZGl2aWRlcihAZHJvcGRvd24tZGl2aWRlci1iZyk7CiAgfQoKICAvLyBMaW5rcyB3aXRoaW4gdGhlIGRyb3Bkb3duIG1lbnUKICA+IGxpID4gYSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDNweCAyMHB4OwogICAgY2xlYXI6IGJvdGg7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgY29sb3I6IEBkcm9wZG93bi1saW5rLWNvbG9yOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLy8gcHJldmVudCBsaW5rcyBmcm9tIHJhbmRvbWx5IGJyZWFraW5nIG9udG8gbmV3IGxpbmVzCiAgfQp9CgovLyBIb3Zlci9Gb2N1cyBzdGF0ZQouZHJvcGRvd24tbWVudSA+IGxpID4gYSB7CiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGNvbG9yOiBAZHJvcGRvd24tbGluay1ob3Zlci1jb2xvcjsKICAgIGJhY2tncm91bmQtY29sb3I6IEBkcm9wZG93bi1saW5rLWhvdmVyLWJnOwogIH0KfQoKLy8gQWN0aXZlIHN0YXRlCi5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGEgewogICYsCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBvdXRsaW5lOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnOwogIH0KfQoKLy8gRGlzYWJsZWQgc3RhdGUKLy8KLy8gR3JheSBvdXQgdGV4dCBhbmQgZW5zdXJlIHRoZSBob3Zlci9mb2N1cyBzdGF0ZSByZW1haW5zIGdyYXkKCi5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSB7CiAgJiwKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgY29sb3I6IEBkcm9wZG93bi1saW5rLWRpc2FibGVkLWNvbG9yOwogIH0KfQovLyBOdWtlIGhvdmVyL2ZvY3VzIGVmZmVjdHMKLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhIHsKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50CiAgICAucmVzZXQtZmlsdGVyKCk7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogIH0KfQoKLy8gT3BlbiBzdGF0ZSBmb3IgdGhlIGRyb3Bkb3duCi5vcGVuIHsKICAvLyBTaG93IHRoZSBtZW51CiAgPiAuZHJvcGRvd24tbWVudSB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9CgogIC8vIFJlbW92ZSB0aGUgb3V0bGluZSB3aGVuIDpmb2N1cyBpcyB0cmlnZ2VyZWQKICA+IGEgewogICAgb3V0bGluZTogMDsKICB9Cn0KCi8vIE1lbnUgcG9zaXRpb25pbmcKLy8KLy8gQWRkIGV4dHJhIGNsYXNzIHRvIGAuZHJvcGRvd24tbWVudWAgdG8gZmxpcCB0aGUgYWxpZ25tZW50IG9mIHRoZSBkcm9wZG93bgovLyBtZW51IHdpdGggdGhlIHBhcmVudC4KLmRyb3Bkb3duLW1lbnUtcmlnaHQgewogIGxlZnQ6IGF1dG87IC8vIFJlc2V0IHRoZSBkZWZhdWx0IGZyb20gYC5kcm9wZG93bi1tZW51YAogIHJpZ2h0OiAwOwp9Ci8vIFdpdGggdjMsIHdlIGVuYWJsZWQgYXV0by1mbGlwcGluZyBpZiB5b3UgaGF2ZSBhIGRyb3Bkb3duIHdpdGhpbiBhIHJpZ2h0Ci8vIGFsaWduZWQgbmF2IGNvbXBvbmVudC4gVG8gZW5hYmxlIHRoZSB1bmRvaW5nIG9mIHRoYXQsIHdlIHByb3ZpZGUgYW4gb3ZlcnJpZGUKLy8gdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCBkcm9wZG93biBtZW51IGFsaWdubWVudC4KLy8KLy8gVGhpcyBpcyBvbmx5IGZvciBsZWZ0LWFsaWduaW5nIGEgZHJvcGRvd24gbWVudSB3aXRoaW4gYSBgLm5hdmJhci1yaWdodGAgb3IKLy8gYC5wdWxsLXJpZ2h0YCBuYXYgY29tcG9uZW50LgouZHJvcGRvd24tbWVudS1sZWZ0IHsKICBsZWZ0OiAwOwogIHJpZ2h0OiBhdXRvOwp9CgovLyBEcm9wZG93biBzZWN0aW9uIGhlYWRlcnMKLmRyb3Bkb3duLWhlYWRlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogM3B4IDIwcHg7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICBjb2xvcjogQGRyb3Bkb3duLWhlYWRlci1jb2xvcjsKfQoKLy8gQmFja2Ryb3AgdG8gY2F0Y2ggYm9keSBjbGlja3Mgb24gbW9iaWxlLCBldGMuCi5kcm9wZG93bi1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIHRvcDogMDsKICB6LWluZGV4OiAoQHppbmRleC1kcm9wZG93biAtIDEwKTsKfQoKLy8gUmlnaHQgYWxpZ25lZCBkcm9wZG93bnMKLnB1bGwtcmlnaHQgPiAuZHJvcGRvd24tbWVudSB7CiAgcmlnaHQ6IDA7CiAgbGVmdDogYXV0bzsKfQoKLy8gQWxsb3cgZm9yIGRyb3Bkb3ducyB0byBnbyBib3R0b20gdXAgKGFrYSwgZHJvcHVwLW1lbnUpCi8vCi8vIEp1c3QgYWRkIC5kcm9wdXAgYWZ0ZXIgdGhlIHN0YW5kYXJkIC5kcm9wZG93biBjbGFzcyBhbmQgeW91J3JlIHNldCwgYnJvLgovLyBUT0RPOiBhYnN0cmFjdCB0aGlzIHNvIHRoYXQgdGhlIG5hdmJhciBmaXhlZCBzdHlsZXMgYXJlIG5vdCBwbGFjZWQgaGVyZT8KCi5kcm9wdXAsCi5uYXZiYXItZml4ZWQtYm90dG9tIC5kcm9wZG93biB7CiAgLy8gUmV2ZXJzZSB0aGUgY2FyZXQKICAuY2FyZXQgewogICAgYm9yZGVyLXRvcDogMDsKICAgIGJvcmRlci1ib3R0b206IEBjYXJldC13aWR0aC1iYXNlIHNvbGlkOwogICAgY29udGVudDogIiI7CiAgfQogIC8vIERpZmZlcmVudCBwb3NpdGlvbmluZyBmb3IgYm90dG9tIHVwIG1lbnUKICAuZHJvcGRvd24tbWVudSB7CiAgICB0b3A6IGF1dG87CiAgICBib3R0b206IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiAxcHg7CiAgfQp9CgoKLy8gQ29tcG9uZW50IGFsaWdubWVudAovLwovLyBSZWl0ZXJhdGUgcGVyIG5hdmJhci5sZXNzIGFuZCB0aGUgbW9kaWZpZWQgY29tcG9uZW50IGFsaWdubWVudCB0aGVyZS4KCkBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgLm5hdmJhci1yaWdodCB7CiAgICAuZHJvcGRvd24tbWVudSB7CiAgICAgIC5kcm9wZG93bi1tZW51LXJpZ2h0KCk7CiAgICB9CiAgICAvLyBOZWNlc3NhcnkgZm9yIG92ZXJyaWRlcyBvZiB0aGUgZGVmYXVsdCByaWdodCBhbGlnbmVkIG1lbnUuCiAgICAvLyBXaWxsIHJlbW92ZSBjb21lIHY0IGluIGFsbCBsaWtlbGlob29kLgogICAgLmRyb3Bkb3duLW1lbnUtbGVmdCB7CiAgICAgIC5kcm9wZG93bi1tZW51LWxlZnQoKTsKICAgIH0KICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/forms.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gRm9ybXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBOb3JtYWxpemUgbm9uLWNvbnRyb2xzCi8vCi8vIFJlc3R5bGUgYW5kIGJhc2VsaW5lIG5vbi1jb250cm9sIGZvcm0gZWxlbWVudHMuCgpmaWVsZHNldCB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDA7CiAgYm9yZGVyOiAwOwogIC8vIENocm9tZSBhbmQgRmlyZWZveCBzZXQgYSBgbWluLXdpZHRoOiAtd2Via2l0LW1pbi1jb250ZW50O2Agb24gZmllbGRzZXRzLAogIC8vIHNvIHdlIHJlc2V0IHRoYXQgdG8gZW5zdXJlIGl0IGJlaGF2ZXMgbW9yZSBsaWtlIGEgc3RhbmRhcmQgYmxvY2sgZWxlbWVudC4KICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMjM1OS4KICBtaW4td2lkdGg6IDA7Cn0KCmxlZ2VuZCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMDsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgZm9udC1zaXplOiAoQGZvbnQtc2l6ZS1iYXNlICogMS41KTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICBjb2xvcjogQGxlZ2VuZC1jb2xvcjsKICBib3JkZXI6IDA7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBsZWdlbmQtYm9yZGVyLWNvbG9yOwp9CgpsYWJlbCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbi1ib3R0b206IDVweDsKICBmb250LXdlaWdodDogYm9sZDsKfQoKCi8vIE5vcm1hbGl6ZSBmb3JtIGNvbnRyb2xzCi8vCi8vIFdoaWxlIG1vc3Qgb2Ygb3VyIGZvcm0gc3R5bGVzIHJlcXVpcmUgZXh0cmEgY2xhc3Nlcywgc29tZSBiYXNpYyBub3JtYWxpemF0aW9uCi8vIGlzIHJlcXVpcmVkIHRvIGVuc3VyZSBvcHRpbXVtIGRpc3BsYXkgd2l0aCBvciB3aXRob3V0IHRob3NlIGNsYXNzZXMgdG8gYmV0dGVyCi8vIGFkZHJlc3MgYnJvd3NlciBpbmNvbnNpc3RlbmNpZXMuCgovLyBPdmVycmlkZSBjb250ZW50LWJveCBpbiBOb3JtYWxpemUgKCogaXNuJ3Qgc3BlY2lmaWMgZW5vdWdoKQppbnB1dFt0eXBlPSJzZWFyY2giXSB7CiAgLmJveC1zaXppbmcoYm9yZGVyLWJveCk7Cn0KCi8vIFBvc2l0aW9uIHJhZGlvcyBhbmQgY2hlY2tib3hlcyBiZXR0ZXIKaW5wdXRbdHlwZT0icmFkaW8iXSwKaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgbWFyZ2luOiA0cHggMCAwOwogIG1hcmdpbi10b3A6IDFweCBcOTsgLyogSUU4LTkgKi8KICBsaW5lLWhlaWdodDogbm9ybWFsOwp9CgovLyBTZXQgdGhlIGhlaWdodCBvZiBmaWxlIGNvbnRyb2xzIHRvIG1hdGNoIHRleHQgaW5wdXRzCmlucHV0W3R5cGU9ImZpbGUiXSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi8vIE1ha2UgcmFuZ2UgaW5wdXRzIGJlaGF2ZSBsaWtlIHRleHR1YWwgZm9ybSBjb250cm9scwppbnB1dFt0eXBlPSJyYW5nZSJdIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKfQoKLy8gTWFrZSBtdWx0aXBsZSBzZWxlY3QgZWxlbWVudHMgaGVpZ2h0IG5vdCBmaXhlZApzZWxlY3RbbXVsdGlwbGVdLApzZWxlY3Rbc2l6ZV0gewogIGhlaWdodDogYXV0bzsKfQoKLy8gRm9jdXMgZm9yIGZpbGUsIHJhZGlvLCBhbmQgY2hlY2tib3gKaW5wdXRbdHlwZT0iZmlsZSJdOmZvY3VzLAppbnB1dFt0eXBlPSJyYWRpbyJdOmZvY3VzLAppbnB1dFt0eXBlPSJjaGVja2JveCJdOmZvY3VzIHsKICAudGFiLWZvY3VzKCk7Cn0KCi8vIEFkanVzdCBvdXRwdXQgZWxlbWVudApvdXRwdXQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmctdG9wOiAoQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCArIDEpOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1iYXNlOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICBjb2xvcjogQGlucHV0LWNvbG9yOwp9CgoKLy8gQ29tbW9uIGZvcm0gY29udHJvbHMKLy8KLy8gU2hhcmVkIHNpemUgYW5kIHR5cGUgcmVzZXRzIGZvciBmb3JtIGNvbnRyb2xzLiBBcHBseSBgLmZvcm0tY29udHJvbGAgdG8gYW55Ci8vIG9mIHRoZSBmb2xsb3dpbmcgZm9ybSBjb250cm9sczoKLy8KLy8gc2VsZWN0Ci8vIHRleHRhcmVhCi8vIGlucHV0W3R5cGU9InRleHQiXQovLyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdCi8vIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0KLy8gaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXQovLyBpbnB1dFt0eXBlPSJkYXRlIl0KLy8gaW5wdXRbdHlwZT0ibW9udGgiXQovLyBpbnB1dFt0eXBlPSJ0aW1lIl0KLy8gaW5wdXRbdHlwZT0id2VlayJdCi8vIGlucHV0W3R5cGU9Im51bWJlciJdCi8vIGlucHV0W3R5cGU9ImVtYWlsIl0KLy8gaW5wdXRbdHlwZT0idXJsIl0KLy8gaW5wdXRbdHlwZT0ic2VhcmNoIl0KLy8gaW5wdXRbdHlwZT0idGVsIl0KLy8gaW5wdXRbdHlwZT0iY29sb3IiXQoKLmZvcm0tY29udHJvbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBAaW5wdXQtaGVpZ2h0LWJhc2U7IC8vIE1ha2UgaW5wdXRzIGF0IGxlYXN0IHRoZSBoZWlnaHQgb2YgdGhlaXIgYnV0dG9uIGNvdW50ZXJwYXJ0IChiYXNlIGxpbmUtaGVpZ2h0ICsgcGFkZGluZyArIGJvcmRlcikKICBwYWRkaW5nOiBAcGFkZGluZy1iYXNlLXZlcnRpY2FsIEBwYWRkaW5nLWJhc2UtaG9yaXpvbnRhbDsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgY29sb3I6IEBpbnB1dC1jb2xvcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAaW5wdXQtYmc7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLy8gUmVzZXQgdW51c3VhbCBGaXJlZm94LW9uLUFuZHJvaWQgZGVmYXVsdCBzdHlsZTsgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MvaXNzdWVzLzIxNAogIGJvcmRlcjogMXB4IHNvbGlkIEBpbnB1dC1ib3JkZXI7CiAgYm9yZGVyLXJhZGl1czogQGlucHV0LWJvcmRlci1yYWRpdXM7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSkpOwogIC50cmFuc2l0aW9uKH4iYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cyIpOwoKICAvLyBDdXN0b21pemUgdGhlIGA6Zm9jdXNgIHN0YXRlIHRvIGltaXRhdGUgbmF0aXZlIFdlYktpdCBzdHlsZXMuCiAgLmZvcm0tY29udHJvbC1mb2N1cygpOwoKICAvLyBQbGFjZWhvbGRlcgogIC5wbGFjZWhvbGRlcigpOwoKICAvLyBEaXNhYmxlZCBhbmQgcmVhZC1vbmx5IGlucHV0cwogIC8vIE5vdGU6IEhUTUw1IHNheXMgdGhhdCBjb250cm9scyB1bmRlciBhIGZpZWxkc2V0ID4gbGVnZW5kOmZpcnN0LWNoaWxkIHdvbid0CiAgLy8gYmUgZGlzYWJsZWQgaWYgdGhlIGZpZWxkc2V0IGlzIGRpc2FibGVkLiBEdWUgdG8gaW1wbGVtZW50YXRpb24gZGlmZmljdWx0eSwKICAvLyB3ZSBkb24ndCBob25vciB0aGF0IGVkZ2UgY2FzZTsgd2Ugc3R5bGUgdGhlbSBhcyBkaXNhYmxlZCBhbnl3YXkuCiAgJltkaXNhYmxlZF0sCiAgJltyZWFkb25seV0sCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIGJhY2tncm91bmQtY29sb3I6IEBpbnB1dC1iZy1kaXNhYmxlZDsKICAgIG9wYWNpdHk6IDE7IC8vIGlPUyBmaXggZm9yIHVucmVhZGFibGUgZGlzYWJsZWQgY29udGVudAogIH0KCiAgLy8gUmVzZXQgaGVpZ2h0IGZvciBgdGV4dGFyZWFgcwogIHRleHRhcmVhJiB7CiAgICBoZWlnaHQ6IGF1dG87CiAgfQp9CgovLyBTcGVjaWFsIHN0eWxlcyBmb3IgaU9TIGRhdGUgaW5wdXQKLy8KLy8gSW4gTW9iaWxlIFNhZmFyaSwgZGF0ZSBpbnB1dHMgcmVxdWlyZSBhIHBpeGVsIGxpbmUtaGVpZ2h0IHRoYXQgbWF0Y2hlcyB0aGUKLy8gZ2l2ZW4gaGVpZ2h0IG9mIHRoZSBpbnB1dC4KaW5wdXRbdHlwZT0iZGF0ZSJdIHsKICBsaW5lLWhlaWdodDogQGlucHV0LWhlaWdodC1iYXNlOwp9CgoKLy8gRm9ybSBncm91cHMKLy8KLy8gRGVzaWduZWQgdG8gaGVscCB3aXRoIHRoZSBvcmdhbml6YXRpb24gYW5kIHNwYWNpbmcgb2YgdmVydGljYWwgZm9ybXMuIEZvcgovLyBob3Jpem9udGFsIGZvcm1zLCB1c2UgdGhlIHByZWRlZmluZWQgZ3JpZCBjbGFzc2VzLgoKLmZvcm0tZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KCgovLyBDaGVja2JveGVzIGFuZCByYWRpb3MKLy8KLy8gSW5kZW50IHRoZSBsYWJlbHMgdG8gcG9zaXRpb24gcmFkaW9zL2NoZWNrYm94ZXMgYXMgaGFuZ2luZyBjb250cm9scy4KCi5yYWRpbywKLmNoZWNrYm94IHsKICBkaXNwbGF5OiBibG9jazsKICBtaW4taGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7IC8vIGNsZWFyIHRoZSBmbG9hdGluZyBpbnB1dCBpZiB0aGVyZSBpcyBubyBsYWJlbCB0ZXh0CiAgbWFyZ2luLXRvcDogMTBweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIHBhZGRpbmctbGVmdDogMjBweDsKICBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KfQoucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKLnJhZGlvLWlubGluZSBpbnB1dFt0eXBlPSJyYWRpbyJdLAouY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKLmNoZWNrYm94LWlubGluZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBmbG9hdDogbGVmdDsKICBtYXJnaW4tbGVmdDogLTIwcHg7Cn0KLnJhZGlvICsgLnJhZGlvLAouY2hlY2tib3ggKyAuY2hlY2tib3ggewogIG1hcmdpbi10b3A6IC01cHg7IC8vIE1vdmUgdXAgc2libGluZyByYWRpb3Mgb3IgY2hlY2tib3hlcyBmb3IgdGlnaHRlciBzcGFjaW5nCn0KCi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBvbiBzYW1lIGxpbmUKLnJhZGlvLWlubGluZSwKLmNoZWNrYm94LWlubGluZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBtYXJnaW4tYm90dG9tOiAwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLnJhZGlvLWlubGluZSArIC5yYWRpby1pbmxpbmUsCi5jaGVja2JveC1pbmxpbmUgKyAuY2hlY2tib3gtaW5saW5lIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1sZWZ0OiAxMHB4OyAvLyBzcGFjZSBvdXQgY29uc2VjdXRpdmUgaW5saW5lIGNvbnRyb2xzCn0KCi8vIEFwcGx5IHNhbWUgZGlzYWJsZWQgY3Vyc29yIHR3ZWFrIGFzIGZvciBpbnB1dHMKLy8KLy8gTm90ZTogTmVpdGhlciByYWRpb3Mgbm9yIGNoZWNrYm94ZXMgY2FuIGJlIHJlYWRvbmx5LgppbnB1dFt0eXBlPSJyYWRpbyJdLAppbnB1dFt0eXBlPSJjaGVja2JveCJdLAoucmFkaW8sCi5yYWRpby1pbmxpbmUsCi5jaGVja2JveCwKLmNoZWNrYm94LWlubGluZSB7CiAgJltkaXNhYmxlZF0sCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICB9Cn0KCgovLyBGb3JtIGNvbnRyb2wgc2l6aW5nCi8vCi8vIEJ1aWxkIG9uIGAuZm9ybS1jb250cm9sYCB3aXRoIG1vZGlmaWVyIGNsYXNzZXMgdG8gZGVjcmVhc2Ugb3IgaW5jcmVhc2UgdGhlCi8vIGhlaWdodCBhbmQgZm9udC1zaXplIG9mIGZvcm0gY29udHJvbHMuCgouaW5wdXQtc20gewogIC5pbnB1dC1zaXplKEBpbnB1dC1oZWlnaHQtc21hbGw7IEBwYWRkaW5nLXNtYWxsLXZlcnRpY2FsOyBAcGFkZGluZy1zbWFsbC1ob3Jpem9udGFsOyBAZm9udC1zaXplLXNtYWxsOyBAbGluZS1oZWlnaHQtc21hbGw7IEBib3JkZXItcmFkaXVzLXNtYWxsKTsKfQoKLmlucHV0LWxnIHsKICAuaW5wdXQtc2l6ZShAaW5wdXQtaGVpZ2h0LWxhcmdlOyBAcGFkZGluZy1sYXJnZS12ZXJ0aWNhbDsgQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1sYXJnZTsgQGxpbmUtaGVpZ2h0LWxhcmdlOyBAYm9yZGVyLXJhZGl1cy1sYXJnZSk7Cn0KCgovLyBGb3JtIGNvbnRyb2wgZmVlZGJhY2sgc3RhdGVzCi8vCi8vIEFwcGx5IGNvbnRleHR1YWwgYW5kIHNlbWFudGljIHN0YXRlcyB0byBpbmRpdmlkdWFsIGZvcm0gY29udHJvbHMuCgouaGFzLWZlZWRiYWNrIHsKICAvLyBFbmFibGUgYWJzb2x1dGUgcG9zaXRpb25pbmcKICBwb3NpdGlvbjogcmVsYXRpdmU7CgogIC8vIEVuc3VyZSBpY29ucyBkb24ndCBvdmVybGFwIHRleHQKICAuZm9ybS1jb250cm9sIHsKICAgIHBhZGRpbmctcmlnaHQ6IChAaW5wdXQtaGVpZ2h0LWJhc2UgKiAxLjI1KTsKICB9CgogIC8vIEZlZWRiYWNrIGljb24gKHJlcXVpcmVzIC5nbHlwaGljb24gY2xhc3NlcykKICAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogKEBsaW5lLWhlaWdodC1jb21wdXRlZCArIDUpOyAvLyBIZWlnaHQgb2YgdGhlIGBsYWJlbGAgYW5kIGl0cyBtYXJnaW4KICAgIHJpZ2h0OiAwOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogQGlucHV0LWhlaWdodC1iYXNlOwogICAgaGVpZ2h0OiBAaW5wdXQtaGVpZ2h0LWJhc2U7CiAgICBsaW5lLWhlaWdodDogQGlucHV0LWhlaWdodC1iYXNlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KfQoKLy8gRmVlZGJhY2sgc3RhdGVzCi5oYXMtc3VjY2VzcyB7CiAgLmZvcm0tY29udHJvbC12YWxpZGF0aW9uKEBzdGF0ZS1zdWNjZXNzLXRleHQ7IEBzdGF0ZS1zdWNjZXNzLXRleHQ7IEBzdGF0ZS1zdWNjZXNzLWJnKTsKfQouaGFzLXdhcm5pbmcgewogIC5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAc3RhdGUtd2FybmluZy10ZXh0OyBAc3RhdGUtd2FybmluZy10ZXh0OyBAc3RhdGUtd2FybmluZy1iZyk7Cn0KLmhhcy1lcnJvciB7CiAgLmZvcm0tY29udHJvbC12YWxpZGF0aW9uKEBzdGF0ZS1kYW5nZXItdGV4dDsgQHN0YXRlLWRhbmdlci10ZXh0OyBAc3RhdGUtZGFuZ2VyLWJnKTsKfQoKCi8vIFN0YXRpYyBmb3JtIGNvbnRyb2wgdGV4dAovLwovLyBBcHBseSBjbGFzcyB0byBhIGBwYCBlbGVtZW50IHRvIG1ha2UgYW55IHN0cmluZyBvZiB0ZXh0IGFsaWduIHdpdGggbGFiZWxzIGluCi8vIGEgaG9yaXpvbnRhbCBmb3JtIGxheW91dC4KCi5mb3JtLWNvbnRyb2wtc3RhdGljIHsKICBtYXJnaW4tYm90dG9tOiAwOyAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW4gZnJvbSBgcGAKfQoKCi8vIEhlbHAgdGV4dAovLwovLyBBcHBseSB0byBhbnkgZWxlbWVudCB5b3Ugd2lzaCB0byBjcmVhdGUgbGlnaHQgdGV4dCBmb3IgcGxhY2VtZW50IGltbWVkaWF0ZWx5Ci8vIGJlbG93IGEgZm9ybSBjb250cm9sLiBVc2UgZm9yIGdlbmVyYWwgaGVscCwgZm9ybWF0dGluZywgb3IgaW5zdHJ1Y3Rpb25hbCB0ZXh0LgoKLmhlbHAtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOyAvLyBhY2NvdW50IGZvciBhbnkgZWxlbWVudCB1c2luZyBoZWxwLWJsb2NrCiAgbWFyZ2luLXRvcDogNXB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgY29sb3I6IGxpZ2h0ZW4oQHRleHQtY29sb3IsIDI1JSk7IC8vIGxpZ2h0ZW4gdGhlIHRleHQgc29tZSBmb3IgY29udHJhc3QKfQoKCgovLyBJbmxpbmUgZm9ybXMKLy8KLy8gTWFrZSBmb3JtcyBhcHBlYXIgaW5saW5lKC1ibG9jaykgYnkgYWRkaW5nIHRoZSBgLmZvcm0taW5saW5lYCBjbGFzcy4gSW5saW5lCi8vIGZvcm1zIGJlZ2luIHN0YWNrZWQgb24gZXh0cmEgc21hbGwgKG1vYmlsZSkgZGV2aWNlcyBhbmQgdGhlbiBnbyBpbmxpbmUgd2hlbgovLyB2aWV3cG9ydHMgcmVhY2ggPDc2OHB4LgovLwovLyBSZXF1aXJlcyB3cmFwcGluZyBpbnB1dHMgYW5kIGxhYmVscyB3aXRoIGAuZm9ybS1ncm91cGAgZm9yIHByb3BlciBkaXNwbGF5IG9mCi8vIGRlZmF1bHQgSFRNTCBmb3JtIGNvbnRyb2xzIGFuZCBvdXIgY3VzdG9tIGZvcm0gY29udHJvbHMgKGUuZy4sIGlucHV0IGdyb3VwcykuCi8vCi8vIEhlYWRzIHVwISBUaGlzIGlzIG1peGluLWVkIGludG8gYC5uYXZiYXItZm9ybWAgaW4gbmF2YmFycy5sZXNzLgoKLmZvcm0taW5saW5lIHsKCiAgLy8gS2ljayBpbiB0aGUgaW5saW5lCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICAvLyBJbmxpbmUtYmxvY2sgYWxsIHRoZSB0aGluZ3MgZm9yICJpbmxpbmUiCiAgICAuZm9ybS1ncm91cCB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIH0KCiAgICAvLyBJbiBuYXZiYXItZm9ybSwgYWxsb3cgZm9sa3MgdG8gKm5vdCogdXNlIGAuZm9ybS1ncm91cGAKICAgIC5mb3JtLWNvbnRyb2wgewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHdpZHRoOiBhdXRvOyAvLyBQcmV2ZW50IGxhYmVscyBmcm9tIHN0YWNraW5nIGFib3ZlIGlucHV0cyBpbiBgLmZvcm0tZ3JvdXBgCiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB9CgogICAgLmNvbnRyb2wtbGFiZWwgewogICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgfQoKICAgIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbiBvbiByYWRpb3MvY2hlY2tib3hlcyB0aGF0IHdlcmUgdXNlZCBmb3Igc3RhY2tpbmcsIGFuZAogICAgLy8gdGhlbiB1bmRvIHRoZSBmbG9hdGluZyBvZiByYWRpb3MgYW5kIGNoZWNrYm94ZXMgdG8gbWF0Y2ggKHdoaWNoIGFsc28gYXZvaWRzCiAgICAvLyBhIGJ1ZyBpbiBXZWJLaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTk2OSkuCiAgICAucmFkaW8sCiAgICAuY2hlY2tib3ggewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIHBhZGRpbmctbGVmdDogMDsKICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIH0KICAgIC5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdLAogICAgLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgICBmbG9hdDogbm9uZTsKICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9CgogICAgLy8gVmFsaWRhdGlvbiBzdGF0ZXMKICAgIC8vCiAgICAvLyBSZXBvc2l0aW9uIHRoZSBpY29uIGJlY2F1c2UgaXQncyBub3cgd2l0aGluIGEgZ3JpZCBjb2x1bW4gYW5kIGNvbHVtbnMgaGF2ZQogICAgLy8gYHBvc2l0aW9uOiByZWxhdGl2ZTtgIG9uIHRoZW0uIEFsc28gYWNjb3VudHMgZm9yIHRoZSBncmlkIGd1dHRlciBwYWRkaW5nLgogICAgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgICAgdG9wOiAwOwogICAgfQogIH0KfQoKCi8vIEhvcml6b250YWwgZm9ybXMKLy8KLy8gSG9yaXpvbnRhbCBmb3JtcyBhcmUgYnVpbHQgb24gZ3JpZCBjbGFzc2VzIGFuZCBhbGxvdyB5b3UgdG8gY3JlYXRlIGZvcm1zIHdpdGgKLy8gbGFiZWxzIG9uIHRoZSBsZWZ0IGFuZCBpbnB1dHMgb24gdGhlIHJpZ2h0LgoKLmZvcm0taG9yaXpvbnRhbCB7CgogIC8vIENvbnNpc3RlbnQgdmVydGljYWwgYWxpZ25tZW50IG9mIGxhYmVscywgcmFkaW9zLCBhbmQgY2hlY2tib3hlcwogIC5jb250cm9sLWxhYmVsLAogIC5yYWRpbywKICAuY2hlY2tib3gsCiAgLnJhZGlvLWlubGluZSwKICAuY2hlY2tib3gtaW5saW5lIHsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgcGFkZGluZy10b3A6IChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSk7IC8vIERlZmF1bHQgcGFkZGluZyBwbHVzIGEgYm9yZGVyCiAgfQogIC8vIEFjY291bnQgZm9yIHBhZGRpbmcgd2UncmUgYWRkaW5nIHRvIGVuc3VyZSB0aGUgYWxpZ25tZW50IGFuZCBvZiBoZWxwIHRleHQKICAvLyBhbmQgb3RoZXIgY29udGVudCBiZWxvdyBpdGVtcwogIC5yYWRpbywKICAuY2hlY2tib3ggewogICAgbWluLWhlaWdodDogKEBsaW5lLWhlaWdodC1jb21wdXRlZCArIChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSkpOwogIH0KCiAgLy8gTWFrZSBmb3JtIGdyb3VwcyBiZWhhdmUgbGlrZSByb3dzCiAgLmZvcm0tZ3JvdXAgewogICAgLm1ha2Utcm93KCk7CiAgfQoKICAuZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgICBwYWRkaW5nLXRvcDogKEBwYWRkaW5nLWJhc2UtdmVydGljYWwgKyAxKTsKICB9CgogIC8vIE9ubHkgcmlnaHQgYWxpZ24gZm9ybSBsYWJlbHMgaGVyZSB3aGVuIHRoZSBjb2x1bW5zIHN0b3Agc3RhY2tpbmcKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAgIC5jb250cm9sLWxhYmVsIHsKICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICB9CiAgfQoKICAvLyBWYWxpZGF0aW9uIHN0YXRlcwogIC8vCiAgLy8gUmVwb3NpdGlvbiB0aGUgaWNvbiBiZWNhdXNlIGl0J3Mgbm93IHdpdGhpbiBhIGdyaWQgY29sdW1uIGFuZCBjb2x1bW5zIGhhdmUKICAvLyBgcG9zaXRpb246IHJlbGF0aXZlO2Agb24gdGhlbS4gQWxzbyBhY2NvdW50cyBmb3IgdGhlIGdyaWQgZ3V0dGVyIHBhZGRpbmcuCiAgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAoQGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/glyphicons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gR2x5cGhpY29ucyBmb3IgQm9vdHN0cmFwCi8vCi8vIFNpbmNlIGljb25zIGFyZSBmb250cywgdGhleSBjYW4gYmUgcGxhY2VkIGFueXdoZXJlIHRleHQgaXMgcGxhY2VkIGFuZCBhcmUKLy8gdGh1cyBhdXRvbWF0aWNhbGx5IHNpemVkIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBjaGlsZC4gVG8gdXNlLCBjcmVhdGUgYW4KLy8gaW5saW5lIGVsZW1lbnQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2xhc3NlcywgbGlrZSBzbzoKLy8KLy8gPGEgaHJlZj0iIyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc3RhciI+PC9zcGFuPiBTdGFyPC9hPgoKLy8gSW1wb3J0IHRoZSBmb250cwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJzsKICBzcmM6IH4idXJsKCdAe2ljb24tZm9udC1wYXRofUB7aWNvbi1mb250LW5hbWV9LmVvdCcpIjsKICBzcmM6IH4idXJsKCdAe2ljb24tZm9udC1wYXRofUB7aWNvbi1mb250LW5hbWV9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJykiLAogICAgICAgfiJ1cmwoJ0B7aWNvbi1mb250LXBhdGh9QHtpY29uLWZvbnQtbmFtZX0ud29mZicpIGZvcm1hdCgnd29mZicpIiwKICAgICAgIH4idXJsKCdAe2ljb24tZm9udC1wYXRofUB7aWNvbi1mb250LW5hbWV9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSIsCiAgICAgICB+InVybCgnQHtpY29uLWZvbnQtcGF0aH1Ae2ljb24tZm9udC1uYW1lfS5zdmcjQHtpY29uLWZvbnQtc3ZnLWlkfScpIGZvcm1hdCgnc3ZnJykiOwp9CgovLyBDYXRjaGFsbCBiYXNlY2xhc3MKLmdseXBoaWNvbiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogMXB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMTsKICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwp9CgovLyBJbmRpdmlkdWFsIGljb25zCi5nbHlwaGljb24tYXN0ZXJpc2sgICAgICAgICAgICAgICB7ICY6YmVmb3JlIHsgY29udGVudDogIlwyYSI7IH0gfQouZ2x5cGhpY29uLXBsdXMgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMmIiOyB9IH0KLmdseXBoaWNvbi1ldXJvICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDIwYWMiOyB9IH0KLmdseXBoaWNvbi1taW51cyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDIyMTIiOyB9IH0KLmdseXBoaWNvbi1jbG91ZCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI2MDEiOyB9IH0KLmdseXBoaWNvbi1lbnZlbG9wZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI3MDkiOyB9IH0KLmdseXBoaWNvbi1wZW5jaWwgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI3MGYiOyB9IH0KLmdseXBoaWNvbi1nbGFzcyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDEiOyB9IH0KLmdseXBoaWNvbi1tdXNpYyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDIiOyB9IH0KLmdseXBoaWNvbi1zZWFyY2ggICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDMiOyB9IH0KLmdseXBoaWNvbi1oZWFydCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDUiOyB9IH0KLmdseXBoaWNvbi1zdGFyICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDYiOyB9IH0KLmdseXBoaWNvbi1zdGFyLWVtcHR5ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDciOyB9IH0KLmdseXBoaWNvbi11c2VyICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDgiOyB9IH0KLmdseXBoaWNvbi1maWxtICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDkiOyB9IH0KLmdseXBoaWNvbi10aC1sYXJnZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTAiOyB9IH0KLmdseXBoaWNvbi10aCAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTEiOyB9IH0KLmdseXBoaWNvbi10aC1saXN0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTIiOyB9IH0KLmdseXBoaWNvbi1vayAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTMiOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTQiOyB9IH0KLmdseXBoaWNvbi16b29tLWluICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTUiOyB9IH0KLmdseXBoaWNvbi16b29tLW91dCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTYiOyB9IH0KLmdseXBoaWNvbi1vZmYgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTciOyB9IH0KLmdseXBoaWNvbi1zaWduYWwgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTgiOyB9IH0KLmdseXBoaWNvbi1jb2cgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTkiOyB9IH0KLmdseXBoaWNvbi10cmFzaCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjAiOyB9IH0KLmdseXBoaWNvbi1ob21lICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjEiOyB9IH0KLmdseXBoaWNvbi1maWxlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjIiOyB9IH0KLmdseXBoaWNvbi10aW1lICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjMiOyB9IH0KLmdseXBoaWNvbi1yb2FkICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjQiOyB9IH0KLmdseXBoaWNvbi1kb3dubG9hZC1hbHQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjUiOyB9IH0KLmdseXBoaWNvbi1kb3dubG9hZCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjYiOyB9IH0KLmdseXBoaWNvbi11cGxvYWQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjciOyB9IH0KLmdseXBoaWNvbi1pbmJveCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjgiOyB9IH0KLmdseXBoaWNvbi1wbGF5LWNpcmNsZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjkiOyB9IH0KLmdseXBoaWNvbi1yZXBlYXQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzAiOyB9IH0KLmdseXBoaWNvbi1yZWZyZXNoICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzEiOyB9IH0KLmdseXBoaWNvbi1saXN0LWFsdCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzIiOyB9IH0KLmdseXBoaWNvbi1sb2NrICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzMiOyB9IH0KLmdseXBoaWNvbi1mbGFnICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzQiOyB9IH0KLmdseXBoaWNvbi1oZWFkcGhvbmVzICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzUiOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtb2ZmICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzYiOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtZG93biAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzciOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtdXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzgiOyB9IH0KLmdseXBoaWNvbi1xcmNvZGUgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzkiOyB9IH0KLmdseXBoaWNvbi1iYXJjb2RlICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDAiOyB9IH0KLmdseXBoaWNvbi10YWcgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDEiOyB9IH0KLmdseXBoaWNvbi10YWdzICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDIiOyB9IH0KLmdseXBoaWNvbi1ib29rICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDMiOyB9IH0KLmdseXBoaWNvbi1ib29rbWFyayAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDQiOyB9IH0KLmdseXBoaWNvbi1wcmludCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDUiOyB9IH0KLmdseXBoaWNvbi1jYW1lcmEgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDYiOyB9IH0KLmdseXBoaWNvbi1mb250ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDciOyB9IH0KLmdseXBoaWNvbi1ib2xkICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDgiOyB9IH0KLmdseXBoaWNvbi1pdGFsaWMgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDkiOyB9IH0KLmdseXBoaWNvbi10ZXh0LWhlaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTAiOyB9IH0KLmdseXBoaWNvbi10ZXh0LXdpZHRoICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTEiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1sZWZ0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTIiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1jZW50ZXIgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTMiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1yaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTQiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1qdXN0aWZ5ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTUiOyB9IH0KLmdseXBoaWNvbi1saXN0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTYiOyB9IH0KLmdseXBoaWNvbi1pbmRlbnQtbGVmdCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTciOyB9IH0KLmdseXBoaWNvbi1pbmRlbnQtcmlnaHQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTgiOyB9IH0KLmdseXBoaWNvbi1mYWNldGltZS12aWRlbyAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTkiOyB9IH0KLmdseXBoaWNvbi1waWN0dXJlICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjAiOyB9IH0KLmdseXBoaWNvbi1tYXAtbWFya2VyICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjIiOyB9IH0KLmdseXBoaWNvbi1hZGp1c3QgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjMiOyB9IH0KLmdseXBoaWNvbi10aW50ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjQiOyB9IH0KLmdseXBoaWNvbi1lZGl0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjUiOyB9IH0KLmdseXBoaWNvbi1zaGFyZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjYiOyB9IH0KLmdseXBoaWNvbi1jaGVjayAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjciOyB9IH0KLmdseXBoaWNvbi1tb3ZlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjgiOyB9IH0KLmdseXBoaWNvbi1zdGVwLWJhY2t3YXJkICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjkiOyB9IH0KLmdseXBoaWNvbi1mYXN0LWJhY2t3YXJkICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzAiOyB9IH0KLmdseXBoaWNvbi1iYWNrd2FyZCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzEiOyB9IH0KLmdseXBoaWNvbi1wbGF5ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzIiOyB9IH0KLmdseXBoaWNvbi1wYXVzZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzMiOyB9IH0KLmdseXBoaWNvbi1zdG9wICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzQiOyB9IH0KLmdseXBoaWNvbi1mb3J3YXJkICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzUiOyB9IH0KLmdseXBoaWNvbi1mYXN0LWZvcndhcmQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzYiOyB9IH0KLmdseXBoaWNvbi1zdGVwLWZvcndhcmQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzciOyB9IH0KLmdseXBoaWNvbi1lamVjdCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzgiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzkiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODAiOyB9IH0KLmdseXBoaWNvbi1wbHVzLXNpZ24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODEiOyB9IH0KLmdseXBoaWNvbi1taW51cy1zaWduICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODIiOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUtc2lnbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODMiOyB9IH0KLmdseXBoaWNvbi1vay1zaWduICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODQiOyB9IH0KLmdseXBoaWNvbi1xdWVzdGlvbi1zaWduICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODUiOyB9IH0KLmdseXBoaWNvbi1pbmZvLXNpZ24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODYiOyB9IH0KLmdseXBoaWNvbi1zY3JlZW5zaG90ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODciOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUtY2lyY2xlICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODgiOyB9IH0KLmdseXBoaWNvbi1vay1jaXJjbGUgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODkiOyB9IH0KLmdseXBoaWNvbi1iYW4tY2lyY2xlICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTAiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1sZWZ0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTEiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1yaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTIiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy11cCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTMiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1kb3duICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTQiOyB9IH0KLmdseXBoaWNvbi1zaGFyZS1hbHQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTUiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtZnVsbCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTYiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtc21hbGwgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTciOyB9IH0KLmdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDEiOyB9IH0KLmdseXBoaWNvbi1naWZ0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDIiOyB9IH0KLmdseXBoaWNvbi1sZWFmICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDMiOyB9IH0KLmdseXBoaWNvbi1maXJlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDQiOyB9IH0KLmdseXBoaWNvbi1leWUtb3BlbiAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDUiOyB9IH0KLmdseXBoaWNvbi1leWUtY2xvc2UgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDYiOyB9IH0KLmdseXBoaWNvbi13YXJuaW5nLXNpZ24gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDciOyB9IH0KLmdseXBoaWNvbi1wbGFuZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDgiOyB9IH0KLmdseXBoaWNvbi1jYWxlbmRhciAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDkiOyB9IH0KLmdseXBoaWNvbi1yYW5kb20gICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTAiOyB9IH0KLmdseXBoaWNvbi1jb21tZW50ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTEiOyB9IH0KLmdseXBoaWNvbi1tYWduZXQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTIiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLXVwICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTMiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLWRvd24gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTQiOyB9IH0KLmdseXBoaWNvbi1yZXR3ZWV0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTUiOyB9IH0KLmdseXBoaWNvbi1zaG9wcGluZy1jYXJ0ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTYiOyB9IH0KLmdseXBoaWNvbi1mb2xkZXItY2xvc2UgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTciOyB9IH0KLmdseXBoaWNvbi1mb2xkZXItb3BlbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTgiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtdmVydGljYWwgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTkiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtaG9yaXpvbnRhbCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjAiOyB9IH0KLmdseXBoaWNvbi1oZGQgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjEiOyB9IH0KLmdseXBoaWNvbi1idWxsaG9ybiAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjIiOyB9IH0KLmdseXBoaWNvbi1iZWxsICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjMiOyB9IH0KLmdseXBoaWNvbi1jZXJ0aWZpY2F0ZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjQiOyB9IH0KLmdseXBoaWNvbi10aHVtYnMtdXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjUiOyB9IH0KLmdseXBoaWNvbi10aHVtYnMtZG93biAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjYiOyB9IH0KLmdseXBoaWNvbi1oYW5kLXJpZ2h0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjciOyB9IH0KLmdseXBoaWNvbi1oYW5kLWxlZnQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjgiOyB9IH0KLmdseXBoaWNvbi1oYW5kLXVwICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjkiOyB9IH0KLmdseXBoaWNvbi1oYW5kLWRvd24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzAiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctcmlnaHQgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzEiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctbGVmdCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzIiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctdXAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzMiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctZG93biAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzQiOyB9IH0KLmdseXBoaWNvbi1nbG9iZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzUiOyB9IH0KLmdseXBoaWNvbi13cmVuY2ggICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzYiOyB9IH0KLmdseXBoaWNvbi10YXNrcyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzciOyB9IH0KLmdseXBoaWNvbi1maWx0ZXIgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzgiOyB9IH0KLmdseXBoaWNvbi1icmllZmNhc2UgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzkiOyB9IH0KLmdseXBoaWNvbi1mdWxsc2NyZWVuICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDAiOyB9IH0KLmdseXBoaWNvbi1kYXNoYm9hcmQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDEiOyB9IH0KLmdseXBoaWNvbi1wYXBlcmNsaXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDIiOyB9IH0KLmdseXBoaWNvbi1oZWFydC1lbXB0eSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDMiOyB9IH0KLmdseXBoaWNvbi1saW5rICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDQiOyB9IH0KLmdseXBoaWNvbi1waG9uZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDUiOyB9IH0KLmdseXBoaWNvbi1wdXNocGluICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDYiOyB9IH0KLmdseXBoaWNvbi11c2QgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDgiOyB9IH0KLmdseXBoaWNvbi1nYnAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDkiOyB9IH0KLmdseXBoaWNvbi1zb3J0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTAiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0ICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTEiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0LWFsdCAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTIiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTMiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyLWFsdCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTQiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTUiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMtYWx0IHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTYiOyB9IH0KLmdseXBoaWNvbi11bmNoZWNrZWQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTciOyB9IH0KLmdseXBoaWNvbi1leHBhbmQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTgiOyB9IH0KLmdseXBoaWNvbi1jb2xsYXBzZS1kb3duICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTkiOyB9IH0KLmdseXBoaWNvbi1jb2xsYXBzZS11cCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjAiOyB9IH0KLmdseXBoaWNvbi1sb2ctaW4gICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjEiOyB9IH0KLmdseXBoaWNvbi1mbGFzaCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjIiOyB9IH0KLmdseXBoaWNvbi1sb2ctb3V0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjMiOyB9IH0KLmdseXBoaWNvbi1uZXctd2luZG93ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjQiOyB9IH0KLmdseXBoaWNvbi1yZWNvcmQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjUiOyB9IH0KLmdseXBoaWNvbi1zYXZlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjYiOyB9IH0KLmdseXBoaWNvbi1vcGVuICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjciOyB9IH0KLmdseXBoaWNvbi1zYXZlZCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjgiOyB9IH0KLmdseXBoaWNvbi1pbXBvcnQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjkiOyB9IH0KLmdseXBoaWNvbi1leHBvcnQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzAiOyB9IH0KLmdseXBoaWNvbi1zZW5kICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzEiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktZGlzayAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzIiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZWQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzMiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktcmVtb3ZlICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzQiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzUiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktb3BlbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzYiOyB9IH0KLmdseXBoaWNvbi1jcmVkaXQtY2FyZCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzciOyB9IH0KLmdseXBoaWNvbi10cmFuc2ZlciAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzgiOyB9IH0KLmdseXBoaWNvbi1jdXRsZXJ5ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzkiOyB9IH0KLmdseXBoaWNvbi1oZWFkZXIgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODAiOyB9IH0KLmdseXBoaWNvbi1jb21wcmVzc2VkICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODEiOyB9IH0KLmdseXBoaWNvbi1lYXJwaG9uZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODIiOyB9IH0KLmdseXBoaWNvbi1waG9uZS1hbHQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODMiOyB9IH0KLmdseXBoaWNvbi10b3dlciAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODQiOyB9IH0KLmdseXBoaWNvbi1zdGF0cyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODUiOyB9IH0KLmdseXBoaWNvbi1zZC12aWRlbyAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODYiOyB9IH0KLmdseXBoaWNvbi1oZC12aWRlbyAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODciOyB9IH0KLmdseXBoaWNvbi1zdWJ0aXRsZXMgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODgiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC1zdGVyZW8gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODkiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC1kb2xieSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTAiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC01LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTEiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC02LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTIiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC03LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTMiOyB9IH0KLmdseXBoaWNvbi1jb3B5cmlnaHQtbWFyayAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTQiOyB9IH0KLmdseXBoaWNvbi1yZWdpc3RyYXRpb24tbWFyayAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTUiOyB9IH0KLmdseXBoaWNvbi1jbG91ZC1kb3dubG9hZCAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTciOyB9IH0KLmdseXBoaWNvbi1jbG91ZC11cGxvYWQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTgiOyB9IH0KLmdseXBoaWNvbi10cmVlLWNvbmlmZXIgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTkiOyB9IH0KLmdseXBoaWNvbi10cmVlLWRlY2lkdW91cyAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUyMDAiOyB9IH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/grid.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gR3JpZCBzeXN0ZW0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBDb250YWluZXIgd2lkdGhzCi8vCi8vIFNldCB0aGUgY29udGFpbmVyIHdpZHRoLCBhbmQgb3ZlcnJpZGUgaXQgZm9yIGZpeGVkIG5hdmJhcnMgaW4gbWVkaWEgcXVlcmllcy4KCi5jb250YWluZXIgewogIC5jb250YWluZXItZml4ZWQoKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICB3aWR0aDogQGNvbnRhaW5lci1zbTsKICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSB7CiAgICB3aWR0aDogQGNvbnRhaW5lci1tZDsKICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICB3aWR0aDogQGNvbnRhaW5lci1sZzsKICB9Cn0KCgovLyBGbHVpZCBjb250YWluZXIKLy8KLy8gVXRpbGl6ZXMgdGhlIG1peGluIG1lYW50IGZvciBmaXhlZCB3aWR0aCBjb250YWluZXJzLCBidXQgd2l0aG91dCBhbnkgZGVmaW5lZAovLyB3aWR0aCBmb3IgZmx1aWQsIGZ1bGwgd2lkdGggbGF5b3V0cy4KCi5jb250YWluZXItZmx1aWQgewogIC5jb250YWluZXItZml4ZWQoKTsKfQoKCi8vIFJvdwovLwovLyBSb3dzIGNvbnRhaW4gYW5kIGNsZWFyIHRoZSBmbG9hdHMgb2YgeW91ciBjb2x1bW5zLgoKLnJvdyB7CiAgLm1ha2Utcm93KCk7Cn0KCgovLyBDb2x1bW5zCi8vCi8vIENvbW1vbiBzdHlsZXMgZm9yIHNtYWxsIGFuZCBsYXJnZSBncmlkIGNvbHVtbnMKCi5tYWtlLWdyaWQtY29sdW1ucygpOwoKCi8vIEV4dHJhIHNtYWxsIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIGV4dHJhIHNtYWxsIGRldmljZXMgbGlrZQovLyBzbWFydHBob25lcy4KCi5tYWtlLWdyaWQtY29sdW1ucy1mbG9hdCh4cyk7Ci5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgeHMsIHdpZHRoKTsKLm1ha2UtZ3JpZChAZ3JpZC1jb2x1bW5zLCB4cywgcHVsbCk7Ci5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgeHMsIHB1c2gpOwoubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIHhzLCBvZmZzZXQpOwoKCi8vIFNtYWxsIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIHRoZSBzbWFsbCBkZXZpY2UgcmFuZ2UsIGZyb20gcGhvbmVzCi8vIHRvIHRhYmxldHMuCgpAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAubWFrZS1ncmlkLWNvbHVtbnMtZmxvYXQoc20pOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgc20sIHdpZHRoKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIHNtLCBwdWxsKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIHNtLCBwdXNoKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIHNtLCBvZmZzZXQpOwp9CgoKLy8gTWVkaXVtIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIHRoZSBkZXNrdG9wIGRldmljZSByYW5nZS4KCkBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgewogIC5tYWtlLWdyaWQtY29sdW1ucy1mbG9hdChtZCk7CiAgLm1ha2UtZ3JpZChAZ3JpZC1jb2x1bW5zLCBtZCwgd2lkdGgpOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgbWQsIHB1bGwpOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgbWQsIHB1c2gpOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgbWQsIG9mZnNldCk7Cn0KCgovLyBMYXJnZSBncmlkCi8vCi8vIENvbHVtbnMsIG9mZnNldHMsIHB1c2hlcywgYW5kIHB1bGxzIGZvciB0aGUgbGFyZ2UgZGVza3RvcCBkZXZpY2UgcmFuZ2UuCgpAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAubWFrZS1ncmlkLWNvbHVtbnMtZmxvYXQobGcpOwogIC5tYWtlLWdyaWQoQGdyaWQtY29sdW1ucywgbGcsIHdpZHRoKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIGxnLCBwdWxsKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIGxnLCBwdXNoKTsKICAubWFrZS1ncmlkKEBncmlkLWNvbHVtbnMsIGxnLCBvZmZzZXQpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/input-groups.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gSW5wdXQgZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBCYXNlIHN0eWxlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5pbnB1dC1ncm91cCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOyAvLyBGb3IgZHJvcGRvd25zCiAgZGlzcGxheTogdGFibGU7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgLy8gcHJldmVudCBpbnB1dCBncm91cHMgZnJvbSBpbmhlcml0aW5nIGJvcmRlciBzdHlsZXMgZnJvbSB0YWJsZSBjZWxscyB3aGVuIHBsYWNlZCB3aXRoaW4gYSB0YWJsZQoKICAvLyBVbmRvIHBhZGRpbmcgYW5kIGZsb2F0IG9mIGdyaWQgY2xhc3NlcwogICZbY2xhc3MqPSJjb2wtIl0gewogICAgZmxvYXQ6IG5vbmU7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogIH0KCiAgLmZvcm0tY29udHJvbCB7CiAgICAvLyBJRTkgZnViYXJzIHRoZSBwbGFjZWhvbGRlciBhdHRyaWJ1dGUgaW4gdGV4dCBpbnB1dHMgYW5kIHRoZSBhcnJvd3Mgb24KICAgIC8vIHNlbGVjdCBlbGVtZW50cyBpbiBpbnB1dCBncm91cHMuIFRvIGZpeCBpdCwgd2UgZmxvYXQgdGhlIGlucHV0LiBEZXRhaWxzOgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTU2MSNpc3N1ZWNvbW1lbnQtMjg5MzY4NTUKICAgIGZsb2F0OiBsZWZ0OwoKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KCi8vIFNpemluZyBvcHRpb25zCi8vCi8vIFJlbWl4IHRoZSBkZWZhdWx0IGZvcm0gY29udHJvbCBzaXppbmcgY2xhc3NlcyBpbnRvIG5ldyBvbmVzIGZvciBlYXNpZXIKLy8gbWFuaXB1bGF0aW9uLgoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7IC5pbnB1dC1sZygpOyB9Ci5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4geyAuaW5wdXQtc20oKTsgfQoKCi8vIERpc3BsYXkgYXMgdGFibGUtY2VsbAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLWJ0biwKLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2wgewogIGRpc3BsYXk6IHRhYmxlLWNlbGw7CgogICY6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQovLyBBZGRvbiBhbmQgYWRkb24gd3JhcHBlciBmb3IgYnV0dG9ucwouaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1idG4gewogIHdpZHRoOiAxJTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC8vIE1hdGNoIHRoZSBpbnB1dHMKfQoKLy8gVGV4dCBpbnB1dCBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouaW5wdXQtZ3JvdXAtYWRkb24gewogIHBhZGRpbmc6IEBwYWRkaW5nLWJhc2UtdmVydGljYWwgQHBhZGRpbmctYmFzZS1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1iYXNlOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6IEBpbnB1dC1jb2xvcjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogQGlucHV0LWdyb3VwLWFkZG9uLWJnOwogIGJvcmRlcjogMXB4IHNvbGlkIEBpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgLy8gU2l6aW5nCiAgJi5pbnB1dC1zbSB7CiAgICBwYWRkaW5nOiBAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbCBAcGFkZGluZy1zbWFsbC1ob3Jpem9udGFsOwogICAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtc21hbGw7CiAgfQogICYuaW5wdXQtbGcgewogICAgcGFkZGluZzogQHBhZGRpbmctbGFyZ2UtdmVydGljYWwgQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDsKICAgIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1sYXJnZTsKICAgIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWxhcmdlOwogIH0KCiAgLy8gTnVrZSBkZWZhdWx0IG1hcmdpbnMgZnJvbSBjaGVja2JveGVzIGFuZCByYWRpb3MgdG8gdmVydGljYWxseSBjZW50ZXIgd2l0aGluLgogIGlucHV0W3R5cGU9InJhZGlvIl0sCiAgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgICBtYXJnaW4tdG9wOiAwOwogIH0KfQoKLy8gUmVzZXQgcm91bmRlZCBjb3JuZXJzCi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmZpcnN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0bi1ncm91cCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuZHJvcGRvd24tdG9nZ2xlLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICAuYm9yZGVyLXJpZ2h0LXJhZGl1cygwKTsKfQouaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGQgewogIGJvcmRlci1yaWdodDogMDsKfQouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpsYXN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0biwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bi1ncm91cCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5kcm9wZG93bi10b2dnbGUsCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewogIC5ib3JkZXItbGVmdC1yYWRpdXMoMCk7Cn0KLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQgewogIGJvcmRlci1sZWZ0OiAwOwp9CgovLyBCdXR0b24gaW5wdXQgZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmlucHV0LWdyb3VwLWJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC8vIEphbmtpbHkgcHJldmVudCBpbnB1dCBidXR0b24gZ3JvdXBzIGZyb20gd3JhcHBpbmcgd2l0aCBgd2hpdGUtc3BhY2VgIGFuZAogIC8vIGBmb250LXNpemVgIGluIGNvbWJpbmF0aW9uIHdpdGggYGlubGluZS1ibG9ja2Agb24gYnV0dG9ucy4KICBmb250LXNpemU6IDA7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKCiAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBzcGFjaW5nLCBwb3NpdGlvbiBmb3IgYnJpbmdpbmcgaG92ZXJlZC9mb2N1c2VkL2FjdGl2ZWQKICAvLyBlbGVtZW50IGFib3ZlIHRoZSBzaWJsaW5ncy4KICA+IC5idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgKyAuYnRuIHsKICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgICB9CiAgICAvLyBCcmluZyB0aGUgImFjdGl2ZSIgYnV0dG9uIHRvIHRoZSBmcm9udAogICAgJjpob3ZlciwKICAgICY6Zm9jdXMsCiAgICAmOmFjdGl2ZSB7CiAgICAgIHotaW5kZXg6IDI7CiAgICB9CiAgfQoKICAvLyBOZWdhdGl2ZSBtYXJnaW4gdG8gb25seSBoYXZlIGEgMXB4IGJvcmRlciBiZXR3ZWVuIHRoZSB0d28KICAmOmZpcnN0LWNoaWxkIHsKICAgID4gLmJ0biwKICAgID4gLmJ0bi1ncm91cCB7CiAgICAgIG1hcmdpbi1yaWdodDogLTFweDsKICAgIH0KICB9CiAgJjpsYXN0LWNoaWxkIHsKICAgID4gLmJ0biwKICAgID4gLmJ0bi1ncm91cCB7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgfQogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/jumbotron.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gSnVtYm90cm9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLmp1bWJvdHJvbiB7CiAgcGFkZGluZzogQGp1bWJvdHJvbi1wYWRkaW5nOwogIG1hcmdpbi1ib3R0b206IEBqdW1ib3Ryb24tcGFkZGluZzsKICBjb2xvcjogQGp1bWJvdHJvbi1jb2xvcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAanVtYm90cm9uLWJnOwoKICBoMSwKICAuaDEgewogICAgY29sb3I6IEBqdW1ib3Ryb24taGVhZGluZy1jb2xvcjsKICB9CiAgcCB7CiAgICBtYXJnaW4tYm90dG9tOiAoQGp1bWJvdHJvbi1wYWRkaW5nIC8gMik7CiAgICBmb250LXNpemU6IEBqdW1ib3Ryb24tZm9udC1zaXplOwogICAgZm9udC13ZWlnaHQ6IDIwMDsKICB9CgogIC5jb250YWluZXIgJiB7CiAgICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsgLy8gT25seSByb3VuZCBjb3JuZXJzIGF0IGhpZ2hlciByZXNvbHV0aW9ucyBpZiBjb250YWluZWQgaW4gYSBjb250YWluZXIKICB9CgogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KCiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAgIHBhZGRpbmctdG9wOiAgICAoQGp1bWJvdHJvbi1wYWRkaW5nICogMS42KTsKICAgIHBhZGRpbmctYm90dG9tOiAoQGp1bWJvdHJvbi1wYWRkaW5nICogMS42KTsKCiAgICAuY29udGFpbmVyICYgewogICAgICBwYWRkaW5nLWxlZnQ6ICAoQGp1bWJvdHJvbi1wYWRkaW5nICogMik7CiAgICAgIHBhZGRpbmctcmlnaHQ6IChAanVtYm90cm9uLXBhZGRpbmcgKiAyKTsKICAgIH0KCiAgICBoMSwKICAgIC5oMSB7CiAgICAgIGZvbnQtc2l6ZTogKEBmb250LXNpemUtYmFzZSAqIDQuNSk7CiAgICB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/labels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTGFiZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoubGFiZWwgewogIGRpc3BsYXk6IGlubGluZTsKICBwYWRkaW5nOiAuMmVtIC42ZW0gLjNlbTsKICBmb250LXNpemU6IDc1JTsKICBmb250LXdlaWdodDogYm9sZDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogQGxhYmVsLWNvbG9yOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAuMjVlbTsKCiAgLy8gQWRkIGhvdmVyIGVmZmVjdHMsIGJ1dCBvbmx5IGZvciBsaW5rcwogICZbaHJlZl0gewogICAgJjpob3ZlciwKICAgICY6Zm9jdXMgewogICAgICBjb2xvcjogQGxhYmVsLWxpbmstaG92ZXItY29sb3I7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogIH0KCiAgLy8gRW1wdHkgbGFiZWxzIGNvbGxhcHNlIGF1dG9tYXRpY2FsbHkgKG5vdCBhdmFpbGFibGUgaW4gSUU4KQogICY6ZW1wdHkgewogICAgZGlzcGxheTogbm9uZTsKICB9CgogIC8vIFF1aWNrIGZpeCBmb3IgbGFiZWxzIGluIGJ1dHRvbnMKICAuYnRuICYgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMXB4OwogIH0KfQoKLy8gQ29sb3JzCi8vIENvbnRleHR1YWwgdmFyaWF0aW9ucyAobGlua2VkIGxhYmVscyBnZXQgZGFya2VyIG9uIDpob3ZlcikKCi5sYWJlbC1kZWZhdWx0IHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtZGVmYXVsdC1iZyk7Cn0KCi5sYWJlbC1wcmltYXJ5IHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtcHJpbWFyeS1iZyk7Cn0KCi5sYWJlbC1zdWNjZXNzIHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtc3VjY2Vzcy1iZyk7Cn0KCi5sYWJlbC1pbmZvIHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtaW5mby1iZyk7Cn0KCi5sYWJlbC13YXJuaW5nIHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtd2FybmluZy1iZyk7Cn0KCi5sYWJlbC1kYW5nZXIgewogIC5sYWJlbC12YXJpYW50KEBsYWJlbC1kYW5nZXItYmcpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/list-group.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTGlzdCBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi8vCi8vIEVhc2lseSB1c2FibGUgb24gPHVsPiwgPG9sPiwgb3IgPGRpdj4uCgoubGlzdC1ncm91cCB7CiAgLy8gTm8gbmVlZCB0byBzZXQgbGlzdC1zdHlsZTogbm9uZTsgc2luY2UgLmxpc3QtZ3JvdXAtaXRlbSBpcyBibG9jayBsZXZlbAogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgcGFkZGluZy1sZWZ0OiAwOyAvLyByZXNldCBwYWRkaW5nIGJlY2F1c2UgdWwgYW5kIG9sCn0KCgovLyBJbmRpdmlkdWFsIGxpc3QgaXRlbXMKLy8KLy8gVXNlIG9uIGBsaWBzIG9yIGBkaXZgcyB3aXRoaW4gdGhlIGAubGlzdC1ncm91cGAgcGFyZW50LgoKLmxpc3QtZ3JvdXAtaXRlbSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDEwcHggMTVweDsKICAvLyBQbGFjZSB0aGUgYm9yZGVyIG9uIHRoZSBsaXN0IGl0ZW1zIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdXAgZm9yIGJldHRlciBzdHlsaW5nCiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbGlzdC1ncm91cC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAbGlzdC1ncm91cC1ib3JkZXI7CgogIC8vIFJvdW5kIHRoZSBmaXJzdCBhbmQgbGFzdCBpdGVtcwogICY6Zmlyc3QtY2hpbGQgewogICAgLmJvcmRlci10b3AtcmFkaXVzKEBsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpOwogIH0KICAmOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIC5ib3JkZXItYm90dG9tLXJhZGl1cyhAbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTsKICB9CgogIC8vIEFsaWduIGJhZGdlcyB3aXRoaW4gbGlzdCBpdGVtcwogID4gLmJhZGdlIHsKICAgIGZsb2F0OiByaWdodDsKICB9CiAgPiAuYmFkZ2UgKyAuYmFkZ2UgewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgfQp9CgoKLy8gTGlua2VkIGxpc3QgaXRlbXMKLy8KLy8gVXNlIGFuY2hvciBlbGVtZW50cyBpbnN0ZWFkIG9mIGBsaWBzIG9yIGBkaXZgcyB0byBjcmVhdGUgbGlua2VkIGxpc3QgaXRlbXMuCi8vIEluY2x1ZGVzIGFuIGV4dHJhIGAuYWN0aXZlYCBtb2RpZmllciBjbGFzcyBmb3Igc2hvd2luZyBzZWxlY3RlZCBpdGVtcy4KCmEubGlzdC1ncm91cC1pdGVtIHsKICBjb2xvcjogQGxpc3QtZ3JvdXAtbGluay1jb2xvcjsKCiAgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIGNvbG9yOiBAbGlzdC1ncm91cC1saW5rLWhlYWRpbmctY29sb3I7CiAgfQoKICAvLyBIb3ZlciBzdGF0ZQogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbGlzdC1ncm91cC1ob3Zlci1iZzsKICB9CgogIC8vIEFjdGl2ZSBjbGFzcyBvbiBpdGVtIGl0c2VsZiwgbm90IHBhcmVudAogICYuYWN0aXZlLAogICYuYWN0aXZlOmhvdmVyLAogICYuYWN0aXZlOmZvY3VzIHsKICAgIHotaW5kZXg6IDI7IC8vIFBsYWNlIGFjdGl2ZSBpdGVtcyBhYm92ZSB0aGVpciBzaWJsaW5ncyBmb3IgcHJvcGVyIGJvcmRlciBzdHlsaW5nCiAgICBjb2xvcjogQGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGxpc3QtZ3JvdXAtYWN0aXZlLWJnOwogICAgYm9yZGVyLWNvbG9yOiBAbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyOwoKICAgIC8vIEZvcmNlIGNvbG9yIHRvIGluaGVyaXQgZm9yIGN1c3RvbSBjb250ZW50CiAgICAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgICBjb2xvcjogaW5oZXJpdDsKICAgIH0KICAgIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCB7CiAgICAgIGNvbG9yOiBAbGlzdC1ncm91cC1hY3RpdmUtdGV4dC1jb2xvcjsKICAgIH0KICB9Cn0KCgovLyBDb250ZXh0dWFsIHZhcmlhbnRzCi8vCi8vIEFkZCBtb2RpZmllciBjbGFzc2VzIHRvIGNoYW5nZSB0ZXh0IGFuZCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGluZGl2aWR1YWwgaXRlbXMuCi8vIE9yZ2FuaXphdGlvbmFsbHksIHRoaXMgbXVzdCBjb21lIGFmdGVyIHRoZSBgOmhvdmVyYCBzdGF0ZXMuCgoubGlzdC1ncm91cC1pdGVtLXZhcmlhbnQoc3VjY2VzczsgQHN0YXRlLXN1Y2Nlc3MtYmc7IEBzdGF0ZS1zdWNjZXNzLXRleHQpOwoubGlzdC1ncm91cC1pdGVtLXZhcmlhbnQoaW5mbzsgQHN0YXRlLWluZm8tYmc7IEBzdGF0ZS1pbmZvLXRleHQpOwoubGlzdC1ncm91cC1pdGVtLXZhcmlhbnQod2FybmluZzsgQHN0YXRlLXdhcm5pbmctYmc7IEBzdGF0ZS13YXJuaW5nLXRleHQpOwoubGlzdC1ncm91cC1pdGVtLXZhcmlhbnQoZGFuZ2VyOyBAc3RhdGUtZGFuZ2VyLWJnOyBAc3RhdGUtZGFuZ2VyLXRleHQpOwoKCi8vIEN1c3RvbSBjb250ZW50IG9wdGlvbnMKLy8KLy8gRXh0cmEgY2xhc3NlcyBmb3IgY3JlYXRpbmcgd2VsbC1mb3JtYXR0ZWQgY29udGVudCB3aXRoaW4gYC5saXN0LWdyb3VwLWl0ZW1gcy4KCi5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLmxpc3QtZ3JvdXAtaXRlbS10ZXh0IHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGxpbmUtaGVpZ2h0OiAxLjM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTWVkaWEgb2JqZWN0cwovLyBTb3VyY2U6IGh0dHA6Ly9zdHViYm9ybmVsbGEub3JnL2NvbnRlbnQvP3A9NDk3Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQ29tbW9uIHN0eWxlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBDbGVhciB0aGUgZmxvYXRzCi5tZWRpYSwKLm1lZGlhLWJvZHkgewogIG92ZXJmbG93OiBoaWRkZW47CiAgem9vbTogMTsKfQoKLy8gUHJvcGVyIHNwYWNpbmcgYmV0d2VlbiBpbnN0YW5jZXMgb2YgLm1lZGlhCi5tZWRpYSwKLm1lZGlhIC5tZWRpYSB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQoubWVkaWE6Zmlyc3QtY2hpbGQgewogIG1hcmdpbi10b3A6IDA7Cn0KCi8vIEZvciBpbWFnZXMgYW5kIHZpZGVvcywgc2V0IHRvIGJsb2NrCi5tZWRpYS1vYmplY3QgewogIGRpc3BsYXk6IGJsb2NrOwp9CgovLyBSZXNldCBtYXJnaW5zIG9uIGhlYWRpbmdzIGZvciB0aWdodGVyIGRlZmF1bHQgc3BhY2luZwoubWVkaWEtaGVhZGluZyB7CiAgbWFyZ2luOiAwIDAgNXB4Owp9CgoKLy8gTWVkaWEgaW1hZ2UgYWxpZ25tZW50Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5tZWRpYSB7CiAgPiAucHVsbC1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICB9CiAgPiAucHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICB9Cn0KCgovLyBNZWRpYSBsaXN0IHZhcmlhdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBVbmRvIGRlZmF1bHQgdWwvb2wgc3R5bGVzCi5tZWRpYS1saXN0IHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/mixins.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTWl4aW5zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gVXRpbGl0aWVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENsZWFyZml4Ci8vIFNvdXJjZTogaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svCi8vCi8vIEZvciBtb2Rlcm4gYnJvd3NlcnMKLy8gMS4gVGhlIHNwYWNlIGNvbnRlbnQgaXMgb25lIHdheSB0byBhdm9pZCBhbiBPcGVyYSBidWcgd2hlbiB0aGUKLy8gICAgY29udGVudGVkaXRhYmxlIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudC4KLy8gICAgT3RoZXJ3aXNlIGl0IGNhdXNlcyBzcGFjZSB0byBhcHBlYXIgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVsZW1lbnRzCi8vICAgIHRoYXQgYXJlIGNsZWFyZml4ZWQuCi8vIDIuIFRoZSB1c2Ugb2YgYHRhYmxlYCByYXRoZXIgdGhhbiBgYmxvY2tgIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHVzaW5nCi8vICAgIGA6YmVmb3JlYCB0byBjb250YWluIHRoZSB0b3AtbWFyZ2lucyBvZiBjaGlsZCBlbGVtZW50cy4KLmNsZWFyZml4KCkgewogICY6YmVmb3JlLAogICY6YWZ0ZXIgewogICAgY29udGVudDogIiAiOyAvLyAxCiAgICBkaXNwbGF5OiB0YWJsZTsgLy8gMgogIH0KICAmOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwogIH0KfQoKLy8gV2ViS2l0LXN0eWxlIGZvY3VzCi50YWItZm9jdXMoKSB7CiAgLy8gRGVmYXVsdAogIG91dGxpbmU6IHRoaW4gZG90dGVkOwogIC8vIFdlYktpdAogIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsKICBvdXRsaW5lLW9mZnNldDogLTJweDsKfQoKLy8gQ2VudGVyLWFsaWduIGEgYmxvY2sgbGV2ZWwgZWxlbWVudAouY2VudGVyLWJsb2NrKCkgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLy8gU2l6aW5nIHNob3J0Y3V0cwouc2l6ZShAd2lkdGg7IEBoZWlnaHQpIHsKICB3aWR0aDogQHdpZHRoOwogIGhlaWdodDogQGhlaWdodDsKfQouc3F1YXJlKEBzaXplKSB7CiAgLnNpemUoQHNpemU7IEBzaXplKTsKfQoKLy8gUGxhY2Vob2xkZXIgdGV4dAoucGxhY2Vob2xkZXIoQGNvbG9yOiBAaW5wdXQtY29sb3ItcGxhY2Vob2xkZXIpIHsKICAmOi1tb3otcGxhY2Vob2xkZXIgICAgICAgICAgICB7IGNvbG9yOiBAY29sb3I7IH0gLy8gRmlyZWZveCA0LTE4CiAgJjo6LW1vei1wbGFjZWhvbGRlciAgICAgICAgICAgeyBjb2xvcjogQGNvbG9yOyAgIC8vIEZpcmVmb3ggMTkrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOyB9IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMTUyNgogICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyICAgICAgIHsgY29sb3I6IEBjb2xvcjsgfSAvLyBJbnRlcm5ldCBFeHBsb3JlciAxMCsKICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyICB7IGNvbG9yOiBAY29sb3I7IH0gLy8gU2FmYXJpIGFuZCBDaHJvbWUKfQoKLy8gVGV4dCBvdmVyZmxvdwovLyBSZXF1aXJlcyBpbmxpbmUtYmxvY2sgb3IgYmxvY2sgZm9yIHByb3BlciBzdHlsaW5nCi50ZXh0LW92ZXJmbG93KCkgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLy8gQ1NTIGltYWdlIHJlcGxhY2VtZW50Ci8vCi8vIEhlYWRzIHVwISB2MyBsYXVuY2hlZCB3aXRoIHdpdGggb25seSBgLmhpZGUtdGV4dCgpYCwgYnV0IHBlciBvdXIgcGF0dGVybiBmb3IKLy8gbWl4aW5zIGJlaW5nIHJldXNlZCBhcyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSwgdGhpcyBkb2Vzbid0IGhvbGQgdXAuIEFzCi8vIG9mIHYzLjAuMSB3ZSBoYXZlIGFkZGVkIGAudGV4dC1oaWRlKClgIGFuZCBkZXByZWNhdGVkIGAuaGlkZS10ZXh0KClgLiBOb3RlCi8vIHRoYXQgd2UgY2Fubm90IGNoYWluIHRoZSBtaXhpbnMgdG9nZXRoZXIgaW4gTGVzcywgc28gdGhleSBhcmUgcmVwZWF0ZWQuCi8vCi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvY29tbWl0L2FhMDM5NmVhZTc1NwoKLy8gRGVwcmVjYXRlZCBhcyBvZiB2My4wLjEgKHdpbGwgYmUgcmVtb3ZlZCBpbiB2NCkKLmhpZGUtdGV4dCgpIHsKICBmb250OiB+IjAvMCIgYTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9Ci8vIE5ldyBtaXhpbiB0byB1c2UgYXMgb2YgdjMuMC4xCi50ZXh0LWhpZGUoKSB7CiAgLmhpZGUtdGV4dCgpOwp9CgoKCi8vIENTUzMgUFJPUEVSVElFUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gU2luZ2xlIHNpZGUgYm9yZGVyLXJhZGl1cwouYm9yZGVyLXRvcC1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBAcmFkaXVzOwogICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBAcmFkaXVzOwp9Ci5ib3JkZXItcmlnaHQtcmFkaXVzKEByYWRpdXMpIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogQHJhZGl1czsKICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogQHJhZGl1czsKfQouYm9yZGVyLWJvdHRvbS1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiBAcmFkaXVzOwogICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBAcmFkaXVzOwp9Ci5ib3JkZXItbGVmdC1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IEByYWRpdXM7CiAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogQHJhZGl1czsKfQoKLy8gRHJvcCBzaGFkb3dzCi8vCi8vIE5vdGU6IERlcHJlY2F0ZWQgYC5ib3gtc2hhZG93KClgIGFzIG9mIHYzLjEuMCBzaW5jZSBhbGwgb2YgQm9vdHN0cmFwJ3MKLy8gICBzdXBwb3J0ZWQgYnJvd3NlcnMgdGhhdCBoYXZlIGJveCBzaGFkb3cgY2FwYWJpbGl0aWVzIG5vdyBzdXBwb3J0IHRoZQovLyAgIHN0YW5kYXJkIGBib3gtc2hhZG93YCBwcm9wZXJ0eS4KLmJveC1zaGFkb3coQHNoYWRvdykgewogIC13ZWJraXQtYm94LXNoYWRvdzogQHNoYWRvdzsgLy8gaU9TIDw0LjMgJiBBbmRyb2lkIDw0LjEKICAgICAgICAgIGJveC1zaGFkb3c6IEBzaGFkb3c7Cn0KCi8vIFRyYW5zaXRpb25zCi50cmFuc2l0aW9uKEB0cmFuc2l0aW9uKSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBAdHJhbnNpdGlvbjsKICAgICAgICAgIHRyYW5zaXRpb246IEB0cmFuc2l0aW9uOwp9Ci50cmFuc2l0aW9uLXByb3BlcnR5KEB0cmFuc2l0aW9uLXByb3BlcnR5KSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBAdHJhbnNpdGlvbi1wcm9wZXJ0eTsKICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IEB0cmFuc2l0aW9uLXByb3BlcnR5Owp9Ci50cmFuc2l0aW9uLWRlbGF5KEB0cmFuc2l0aW9uLWRlbGF5KSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiBAdHJhbnNpdGlvbi1kZWxheTsKICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IEB0cmFuc2l0aW9uLWRlbGF5Owp9Ci50cmFuc2l0aW9uLWR1cmF0aW9uKEB0cmFuc2l0aW9uLWR1cmF0aW9uKSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiBAdHJhbnNpdGlvbi1kdXJhdGlvbjsKICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IEB0cmFuc2l0aW9uLWR1cmF0aW9uOwp9Ci50cmFuc2l0aW9uLXRyYW5zZm9ybShAdHJhbnNpdGlvbikgewogIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gQHRyYW5zaXRpb247CiAgICAgLW1vei10cmFuc2l0aW9uOiAtbW96LXRyYW5zZm9ybSBAdHJhbnNpdGlvbjsKICAgICAgIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSBAdHJhbnNpdGlvbjsKICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSBAdHJhbnNpdGlvbjsKfQoKLy8gVHJhbnNmb3JtYXRpb25zCi5yb3RhdGUoQGRlZ3JlZXMpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKEBkZWdyZWVzKTsKICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKEBkZWdyZWVzKTsgLy8gSUU5IG9ubHkKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKEBkZWdyZWVzKTsKfQouc2NhbGUoQHJhdGlvOyBAcmF0aW8teS4uLikgewogIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZShAcmF0aW8sIEByYXRpby15KTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoQHJhdGlvLCBAcmF0aW8teSk7IC8vIElFOSBvbmx5CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKEByYXRpbywgQHJhdGlvLXkpOwp9Ci50cmFuc2xhdGUoQHg7IEB5KSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZShAeCwgQHkpOwogICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoQHgsIEB5KTsgLy8gSUU5IG9ubHkKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKEB4LCBAeSk7Cn0KLnNrZXcoQHg7IEB5KSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoQHgsIEB5KTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2tld1goQHgpIHNrZXdZKEB5KTsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvNDg4NTsgSUU5KwogICAgICAgICAgdHJhbnNmb3JtOiBza2V3KEB4LCBAeSk7Cn0KLnRyYW5zbGF0ZTNkKEB4OyBAeTsgQHopIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoQHgsIEB5LCBAeik7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKEB4LCBAeSwgQHopOwp9Cgoucm90YXRlWChAZGVncmVlcykgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKEBkZWdyZWVzKTsKICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlWChAZGVncmVlcyk7IC8vIElFOSBvbmx5CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoQGRlZ3JlZXMpOwp9Ci5yb3RhdGVZKEBkZWdyZWVzKSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVkoQGRlZ3JlZXMpOwogICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKEBkZWdyZWVzKTsgLy8gSUU5IG9ubHkKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWShAZGVncmVlcyk7Cn0KLnBlcnNwZWN0aXZlKEBwZXJzcGVjdGl2ZSkgewogIC13ZWJraXQtcGVyc3BlY3RpdmU6IEBwZXJzcGVjdGl2ZTsKICAgICAtbW96LXBlcnNwZWN0aXZlOiBAcGVyc3BlY3RpdmU7CiAgICAgICAgICBwZXJzcGVjdGl2ZTogQHBlcnNwZWN0aXZlOwp9Ci5wZXJzcGVjdGl2ZS1vcmlnaW4oQHBlcnNwZWN0aXZlKSB7CiAgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IEBwZXJzcGVjdGl2ZTsKICAgICAtbW96LXBlcnNwZWN0aXZlLW9yaWdpbjogQHBlcnNwZWN0aXZlOwogICAgICAgICAgcGVyc3BlY3RpdmUtb3JpZ2luOiBAcGVyc3BlY3RpdmU7Cn0KLnRyYW5zZm9ybS1vcmlnaW4oQG9yaWdpbikgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogQG9yaWdpbjsKICAgICAtbW96LXRyYW5zZm9ybS1vcmlnaW46IEBvcmlnaW47CiAgICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBAb3JpZ2luOyAvLyBJRTkgb25seQogICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogQG9yaWdpbjsKfQoKLy8gQW5pbWF0aW9ucwouYW5pbWF0aW9uKEBhbmltYXRpb24pIHsKICAtd2Via2l0LWFuaW1hdGlvbjogQGFuaW1hdGlvbjsKICAgICAgICAgIGFuaW1hdGlvbjogQGFuaW1hdGlvbjsKfQouYW5pbWF0aW9uLW5hbWUoQG5hbWUpIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBAbmFtZTsKICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBAbmFtZTsKfQouYW5pbWF0aW9uLWR1cmF0aW9uKEBkdXJhdGlvbikgewogIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiBAZHVyYXRpb247CiAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IEBkdXJhdGlvbjsKfQouYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbihAdGltaW5nLWZ1bmN0aW9uKSB7CiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBAdGltaW5nLWZ1bmN0aW9uOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogQHRpbWluZy1mdW5jdGlvbjsKfQouYW5pbWF0aW9uLWRlbGF5KEBkZWxheSkgewogIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiBAZGVsYXk7CiAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IEBkZWxheTsKfQouYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudChAaXRlcmF0aW9uLWNvdW50KSB7CiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBAaXRlcmF0aW9uLWNvdW50OwogICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogQGl0ZXJhdGlvbi1jb3VudDsKfQouYW5pbWF0aW9uLWRpcmVjdGlvbihAZGlyZWN0aW9uKSB7CiAgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOiBAZGlyZWN0aW9uOwogICAgICAgICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogQGRpcmVjdGlvbjsKfQoKLy8gQmFja2ZhY2UgdmlzaWJpbGl0eQovLyBQcmV2ZW50IGJyb3dzZXJzIGZyb20gZmxpY2tlcmluZyB3aGVuIHVzaW5nIENTUyAzRCB0cmFuc2Zvcm1zLgovLyBEZWZhdWx0IHZhbHVlIGlzIGB2aXNpYmxlYCwgYnV0IGNhbiBiZSBjaGFuZ2VkIHRvIGBoaWRkZW5gCi5iYWNrZmFjZS12aXNpYmlsaXR5KEB2aXNpYmlsaXR5KXsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IEB2aXNpYmlsaXR5OwogICAgIC1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTogQHZpc2liaWxpdHk7CiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBAdmlzaWJpbGl0eTsKfQoKLy8gQm94IHNpemluZwouYm94LXNpemluZyhAYm94bW9kZWwpIHsKICAtd2Via2l0LWJveC1zaXppbmc6IEBib3htb2RlbDsKICAgICAtbW96LWJveC1zaXppbmc6IEBib3htb2RlbDsKICAgICAgICAgIGJveC1zaXppbmc6IEBib3htb2RlbDsKfQoKLy8gVXNlciBzZWxlY3QKLy8gRm9yIHNlbGVjdGluZyB0ZXh0IG9uIHRoZSBwYWdlCi51c2VyLXNlbGVjdChAc2VsZWN0KSB7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogQHNlbGVjdDsKICAgICAtbW96LXVzZXItc2VsZWN0OiBAc2VsZWN0OwogICAgICAtbXMtdXNlci1zZWxlY3Q6IEBzZWxlY3Q7IC8vIElFMTArCiAgICAgICAtby11c2VyLXNlbGVjdDogQHNlbGVjdDsKICAgICAgICAgIHVzZXItc2VsZWN0OiBAc2VsZWN0Owp9CgovLyBSZXNpemUgYW55dGhpbmcKLnJlc2l6YWJsZShAZGlyZWN0aW9uKSB7CiAgcmVzaXplOiBAZGlyZWN0aW9uOyAvLyBPcHRpb25zOiBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgYm90aAogIG92ZXJmbG93OiBhdXRvOyAvLyBTYWZhcmkgZml4Cn0KCi8vIENTUzMgQ29udGVudCBDb2x1bW5zCi5jb250ZW50LWNvbHVtbnMoQGNvbHVtbi1jb3VudDsgQGNvbHVtbi1nYXA6IEBncmlkLWd1dHRlci13aWR0aCkgewogIC13ZWJraXQtY29sdW1uLWNvdW50OiBAY29sdW1uLWNvdW50OwogICAgIC1tb3otY29sdW1uLWNvdW50OiBAY29sdW1uLWNvdW50OwogICAgICAgICAgY29sdW1uLWNvdW50OiBAY29sdW1uLWNvdW50OwogIC13ZWJraXQtY29sdW1uLWdhcDogQGNvbHVtbi1nYXA7CiAgICAgLW1vei1jb2x1bW4tZ2FwOiBAY29sdW1uLWdhcDsKICAgICAgICAgIGNvbHVtbi1nYXA6IEBjb2x1bW4tZ2FwOwp9CgovLyBPcHRpb25hbCBoeXBoZW5hdGlvbgouaHlwaGVucyhAbW9kZTogYXV0bykgewogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAtd2Via2l0LWh5cGhlbnM6IEBtb2RlOwogICAgIC1tb3otaHlwaGVuczogQG1vZGU7CiAgICAgIC1tcy1oeXBoZW5zOiBAbW9kZTsgLy8gSUUxMCsKICAgICAgIC1vLWh5cGhlbnM6IEBtb2RlOwogICAgICAgICAgaHlwaGVuczogQG1vZGU7Cn0KCi8vIE9wYWNpdHkKLm9wYWNpdHkoQG9wYWNpdHkpIHsKICBvcGFjaXR5OiBAb3BhY2l0eTsKICAvLyBJRTggZmlsdGVyCiAgQG9wYWNpdHktaWU6IChAb3BhY2l0eSAqIDEwMCk7CiAgZmlsdGVyOiB+ImFscGhhKG9wYWNpdHk9QHtvcGFjaXR5LWllfSkiOwp9CgoKCi8vIEdSQURJRU5UUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKI2dyYWRpZW50IHsKCiAgLy8gSG9yaXpvbnRhbCBncmFkaWVudCwgZnJvbSBsZWZ0IHRvIHJpZ2h0CiAgLy8KICAvLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLgogIC8vIENvbG9yIHN0b3BzIGFyZSBub3QgYXZhaWxhYmxlIGluIElFOSBhbmQgYmVsb3cuCiAgLmhvcml6b250YWwoQHN0YXJ0LWNvbG9yOiAjNTU1OyBAZW5kLWNvbG9yOiAjMzMzOyBAc3RhcnQtcGVyY2VudDogMCU7IEBlbmQtcGVyY2VudDogMTAwJSkgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgY29sb3Itc3RvcChAc3RhcnQtY29sb3IgQHN0YXJ0LXBlcmNlbnQpLCBjb2xvci1zdG9wKEBlbmQtY29sb3IgQGVuZC1wZXJjZW50KSk7IC8vIFNhZmFyaSA1LjEtNiwgQ2hyb21lIDEwKwogICAgYmFja2dyb3VuZC1pbWFnZTogIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgQHN0YXJ0LWNvbG9yIEBzdGFydC1wZXJjZW50LCBAZW5kLWNvbG9yIEBlbmQtcGVyY2VudCk7IC8vIFN0YW5kYXJkLCBJRTEwLCBGaXJlZm94IDE2KywgT3BlcmEgMTIuMTArLCBTYWZhcmkgNyssIENocm9tZSAyNisKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJWQnLCBlbmRDb2xvcnN0cj0nJWQnLCBHcmFkaWVudFR5cGU9MSkiLGFyZ2IoQHN0YXJ0LWNvbG9yKSxhcmdiKEBlbmQtY29sb3IpKSk7IC8vIElFOSBhbmQgZG93bgogIH0KCiAgLy8gVmVydGljYWwgZ3JhZGllbnQsIGZyb20gdG9wIHRvIGJvdHRvbQogIC8vCiAgLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC4KICAvLyBDb2xvciBzdG9wcyBhcmUgbm90IGF2YWlsYWJsZSBpbiBJRTkgYW5kIGJlbG93LgogIC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6ICM1NTU7IEBlbmQtY29sb3I6ICMzMzM7IEBzdGFydC1wZXJjZW50OiAwJTsgQGVuZC1wZXJjZW50OiAxMDAlKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIEBzdGFydC1jb2xvciBAc3RhcnQtcGVyY2VudCwgQGVuZC1jb2xvciBAZW5kLXBlcmNlbnQpOyAgLy8gU2FmYXJpIDUuMS02LCBDaHJvbWUgMTArCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBAc3RhcnQtY29sb3IgQHN0YXJ0LXBlcmNlbnQsIEBlbmQtY29sb3IgQGVuZC1wZXJjZW50KTsgLy8gU3RhbmRhcmQsIElFMTAsIEZpcmVmb3ggMTYrLCBPcGVyYSAxMi4xMCssIFNhZmFyaSA3KywgQ2hyb21lIDI2KwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgZmlsdGVyOiBlKCUoInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSclZCcsIGVuZENvbG9yc3RyPSclZCcsIEdyYWRpZW50VHlwZT0wKSIsYXJnYihAc3RhcnQtY29sb3IpLGFyZ2IoQGVuZC1jb2xvcikpKTsgLy8gSUU5IGFuZCBkb3duCiAgfQoKICAuZGlyZWN0aW9uYWwoQHN0YXJ0LWNvbG9yOiAjNTU1OyBAZW5kLWNvbG9yOiAjMzMzOyBAZGVnOiA0NWRlZykgewogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoQGRlZywgQHN0YXJ0LWNvbG9yLCBAZW5kLWNvbG9yKTsgLy8gU2FmYXJpIDUuMS02LCBDaHJvbWUgMTArCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoQGRlZywgQHN0YXJ0LWNvbG9yLCBAZW5kLWNvbG9yKTsgLy8gU3RhbmRhcmQsIElFMTAsIEZpcmVmb3ggMTYrLCBPcGVyYSAxMi4xMCssIFNhZmFyaSA3KywgQ2hyb21lIDI2KwogIH0KICAuaG9yaXpvbnRhbC10aHJlZS1jb2xvcnMoQHN0YXJ0LWNvbG9yOiAjMDBiM2VlOyBAbWlkLWNvbG9yOiAjN2E0M2I2OyBAY29sb3Itc3RvcDogNTAlOyBAZW5kLWNvbG9yOiAjYzMzMjVmKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCBAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCBAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJWQnLCBlbmRDb2xvcnN0cj0nJWQnLCBHcmFkaWVudFR5cGU9MSkiLGFyZ2IoQHN0YXJ0LWNvbG9yKSxhcmdiKEBlbmQtY29sb3IpKSk7IC8vIElFOSBhbmQgZG93biwgZ2V0cyBubyBjb2xvci1zdG9wIGF0IGFsbCBmb3IgcHJvcGVyIGZhbGxiYWNrCiAgfQogIC52ZXJ0aWNhbC10aHJlZS1jb2xvcnMoQHN0YXJ0LWNvbG9yOiAjMDBiM2VlOyBAbWlkLWNvbG9yOiAjN2E0M2I2OyBAY29sb3Itc3RvcDogNTAlOyBAZW5kLWNvbG9yOiAjYzMzMjVmKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KEBzdGFydC1jb2xvciwgQG1pZC1jb2xvciBAY29sb3Itc3RvcCwgQGVuZC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgZmlsdGVyOiBlKCUoInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSclZCcsIGVuZENvbG9yc3RyPSclZCcsIEdyYWRpZW50VHlwZT0wKSIsYXJnYihAc3RhcnQtY29sb3IpLGFyZ2IoQGVuZC1jb2xvcikpKTsgLy8gSUU5IGFuZCBkb3duLCBnZXRzIG5vIGNvbG9yLXN0b3AgYXQgYWxsIGZvciBwcm9wZXIgZmFsbGJhY2sKICB9CiAgLnJhZGlhbChAaW5uZXItY29sb3I6ICM1NTU7IEBvdXRlci1jb2xvcjogIzMzMykgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCBAaW5uZXItY29sb3IsIEBvdXRlci1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCBAaW5uZXItY29sb3IsIEBvdXRlci1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIH0KICAuc3RyaXBlZChAY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgQGFuZ2xlOiA0NWRlZykgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoQGFuZ2xlLCBAY29sb3IgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgQGNvbG9yIDUwJSwgQGNvbG9yIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoQGFuZ2xlLCBAY29sb3IgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgQGNvbG9yIDUwJSwgQGNvbG9yIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgfQp9CgovLyBSZXNldCBmaWx0ZXJzIGZvciBJRQovLwovLyBXaGVuIHlvdSBuZWVkIHRvIHJlbW92ZSBhIGdyYWRpZW50IGJhY2tncm91bmQsIGRvIG5vdCBmb3JnZXQgdG8gdXNlIHRoaXMgdG8gcmVzZXQKLy8gdGhlIElFIGZpbHRlciBmb3IgSUU5IGFuZCBiZWxvdy4KLnJlc2V0LWZpbHRlcigpIHsKICBmaWx0ZXI6IGUoJSgicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSkiKSk7Cn0KCgoKLy8gUmV0aW5hIGltYWdlcwovLwovLyBTaG9ydCByZXRpbmEgbWl4aW4gZm9yIHNldHRpbmcgYmFja2dyb3VuZC1pbWFnZSBhbmQgLXNpemUKCi5pbWctcmV0aW5hKEBmaWxlLTF4OyBAZmlsZS0yeDsgQHdpZHRoLTF4OyBAaGVpZ2h0LTF4KSB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJAe2ZpbGUtMXh9Iik7CgogIEBtZWRpYQogIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwKICBvbmx5IHNjcmVlbiBhbmQgKCAgIG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksCiAgb25seSBzY3JlZW4gYW5kICggICAgIC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIvMSksCiAgb25seSBzY3JlZW4gYW5kICggICAgICAgIG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLAogIG9ubHkgc2NyZWVuIGFuZCAoICAgICAgICAgICAgICAgIG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLAogIG9ubHkgc2NyZWVuIGFuZCAoICAgICAgICAgICAgICAgIG1pbi1yZXNvbHV0aW9uOiAyZHBweCkgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJAe2ZpbGUtMnh9Iik7CiAgICBiYWNrZ3JvdW5kLXNpemU6IEB3aWR0aC0xeCBAaGVpZ2h0LTF4OwogIH0KfQoKCi8vIFJlc3BvbnNpdmUgaW1hZ2UKLy8KLy8gS2VlcCBpbWFnZXMgZnJvbSBzY2FsaW5nIGJleW9uZCB0aGUgd2lkdGggb2YgdGhlaXIgcGFyZW50cy4KCi5pbWctcmVzcG9uc2l2ZShAZGlzcGxheTogYmxvY2spIHsKICBkaXNwbGF5OiBAZGlzcGxheTsKICBtYXgtd2lkdGg6IDEwMCU7IC8vIFBhcnQgMTogU2V0IGEgbWF4aW11bSByZWxhdGl2ZSB0byB0aGUgcGFyZW50CiAgaGVpZ2h0OiBhdXRvOyAvLyBQYXJ0IDI6IFNjYWxlIHRoZSBoZWlnaHQgYWNjb3JkaW5nIHRvIHRoZSB3aWR0aCwgb3RoZXJ3aXNlIHlvdSBnZXQgc3RyZXRjaGluZwp9CgoKLy8gQ09NUE9ORU5UIE1JWElOUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gSG9yaXpvbnRhbCBkaXZpZGVycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIERpdmlkZXJzIChiYXNpY2FsbHkgYW4gaHIpIHdpdGhpbiBkcm9wZG93bnMgYW5kIG5hdiBsaXN0cwoubmF2LWRpdmlkZXIoQGNvbG9yOiAjZTVlNWU1KSB7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiAoKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpIC0gMSkgMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKfQoKLy8gUGFuZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnBhbmVsLXZhcmlhbnQoQGJvcmRlcjsgQGhlYWRpbmctdGV4dC1jb2xvcjsgQGhlYWRpbmctYmctY29sb3I7IEBoZWFkaW5nLWJvcmRlcikgewogIGJvcmRlci1jb2xvcjogQGJvcmRlcjsKCiAgJiA+IC5wYW5lbC1oZWFkaW5nIHsKICAgIGNvbG9yOiBAaGVhZGluZy10ZXh0LWNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGhlYWRpbmctYmctY29sb3I7CiAgICBib3JkZXItY29sb3I6IEBoZWFkaW5nLWJvcmRlcjsKCiAgICArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgICAgIGJvcmRlci10b3AtY29sb3I6IEBib3JkZXI7CiAgICB9CiAgfQogICYgPiAucGFuZWwtZm9vdGVyIHsKICAgICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQGJvcmRlcjsKICAgIH0KICB9Cn0KCi8vIEFsZXJ0cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5hbGVydC12YXJpYW50KEBiYWNrZ3JvdW5kOyBAYm9yZGVyOyBAdGV4dC1jb2xvcikgewogIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kOwogIGJvcmRlci1jb2xvcjogQGJvcmRlcjsKICBjb2xvcjogQHRleHQtY29sb3I7CgogIGhyIHsKICAgIGJvcmRlci10b3AtY29sb3I6IGRhcmtlbihAYm9yZGVyLCA1JSk7CiAgfQogIC5hbGVydC1saW5rIHsKICAgIGNvbG9yOiBkYXJrZW4oQHRleHQtY29sb3IsIDEwJSk7CiAgfQp9CgovLyBUYWJsZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoudGFibGUtcm93LXZhcmlhbnQoQHN0YXRlOyBAYmFja2dyb3VuZCkgewogIC8vIEV4YWN0IHNlbGVjdG9ycyBiZWxvdyByZXF1aXJlZCB0byBvdmVycmlkZSBgLnRhYmxlLXN0cmlwZWRgIGFuZCBwcmV2ZW50CiAgLy8gaW5oZXJpdGFuY2UgdG8gbmVzdGVkIHRhYmxlcy4KICAudGFibGUgPiB0aGVhZCA+IHRyLAogIC50YWJsZSA+IHRib2R5ID4gdHIsCiAgLnRhYmxlID4gdGZvb3QgPiB0ciB7CiAgICA+IHRkLkB7c3RhdGV9LAogICAgPiB0aC5Ae3N0YXRlfSwKICAgICYuQHtzdGF0ZX0gPiB0ZCwKICAgICYuQHtzdGF0ZX0gPiB0aCB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kOwogICAgfQogIH0KCiAgLy8gSG92ZXIgc3RhdGVzIGZvciBgLnRhYmxlLWhvdmVyYAogIC8vIE5vdGU6IHRoaXMgaXMgbm90IGF2YWlsYWJsZSBmb3IgY2VsbHMgb3Igcm93cyB3aXRoaW4gYHRoZWFkYCBvciBgdGZvb3RgLgogIC50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgewogICAgPiB0ZC5Ae3N0YXRlfTpob3ZlciwKICAgID4gdGguQHtzdGF0ZX06aG92ZXIsCiAgICAmLkB7c3RhdGV9OmhvdmVyID4gdGQsCiAgICAmLkB7c3RhdGV9OmhvdmVyID4gdGggewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGJhY2tncm91bmQsIDUlKTsKICAgIH0KICB9Cn0KCi8vIExpc3QgR3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmxpc3QtZ3JvdXAtaXRlbS12YXJpYW50KEBzdGF0ZTsgQGJhY2tncm91bmQ7IEBjb2xvcikgewogIC5saXN0LWdyb3VwLWl0ZW0tQHtzdGF0ZX0gewogICAgY29sb3I6IEBjb2xvcjsKICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kOwoKICAgIGEmIHsKICAgICAgY29sb3I6IEBjb2xvcjsKCiAgICAgIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7IGNvbG9yOiBpbmhlcml0OyB9CgogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQGNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihAYmFja2dyb3VuZCwgNSUpOwogICAgICB9CiAgICAgICYuYWN0aXZlLAogICAgICAmLmFjdGl2ZTpob3ZlciwKICAgICAgJi5hY3RpdmU6Zm9jdXMgewogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKICAgICAgICBib3JkZXItY29sb3I6IEBjb2xvcjsKICAgICAgfQogICAgfQogIH0KfQoKLy8gQnV0dG9uIHZhcmlhbnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRWFzaWx5IHB1bXAgb3V0IGRlZmF1bHQgc3R5bGVzLCBhcyB3ZWxsIGFzIDpob3ZlciwgOmZvY3VzLCA6YWN0aXZlLAovLyBhbmQgZGlzYWJsZWQgb3B0aW9ucyBmb3IgYWxsIGJ1dHRvbnMKLmJ1dHRvbi12YXJpYW50KEBjb2xvcjsgQGJhY2tncm91bmQ7IEBib3JkZXIpIHsKICBjb2xvcjogQGNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kOwogIGJvcmRlci1jb2xvcjogQGJvcmRlcjsKCiAgJjpob3ZlciwKICAmOmZvY3VzLAogICY6YWN0aXZlLAogICYuYWN0aXZlLAogIC5vcGVuIC5kcm9wZG93bi10b2dnbGUmIHsKICAgIGNvbG9yOiBAY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGJhY2tncm91bmQsIDglKTsKICAgICAgICBib3JkZXItY29sb3I6IGRhcmtlbihAYm9yZGVyLCAxMiUpOwogIH0KICAmOmFjdGl2ZSwKICAmLmFjdGl2ZSwKICAub3BlbiAuZHJvcGRvd24tdG9nZ2xlJiB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIH0KICAmLmRpc2FibGVkLAogICZbZGlzYWJsZWRdLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgICYsCiAgICAmOmhvdmVyLAogICAgJjpmb2N1cywKICAgICY6YWN0aXZlLAogICAgJi5hY3RpdmUgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmFja2dyb3VuZDsKICAgICAgICAgIGJvcmRlci1jb2xvcjogQGJvcmRlcjsKICAgIH0KICB9CgogIC5iYWRnZSB7CiAgICBjb2xvcjogQGJhY2tncm91bmQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAY29sb3I7CiAgfQp9CgovLyBCdXR0b24gc2l6ZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouYnV0dG9uLXNpemUoQHBhZGRpbmctdmVydGljYWw7IEBwYWRkaW5nLWhvcml6b250YWw7IEBmb250LXNpemU7IEBsaW5lLWhlaWdodDsgQGJvcmRlci1yYWRpdXMpIHsKICBwYWRkaW5nOiBAcGFkZGluZy12ZXJ0aWNhbCBAcGFkZGluZy1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0OwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzOwp9CgovLyBQYWdpbmF0aW9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy12ZXJ0aWNhbDsgQHBhZGRpbmctaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZTsgQGJvcmRlci1yYWRpdXMpIHsKICA+IGxpIHsKICAgID4gYSwKICAgID4gc3BhbiB7CiAgICAgIHBhZGRpbmc6IEBwYWRkaW5nLXZlcnRpY2FsIEBwYWRkaW5nLWhvcml6b250YWw7CiAgICAgIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZTsKICAgIH0KICAgICY6Zmlyc3QtY2hpbGQgewogICAgICA+IGEsCiAgICAgID4gc3BhbiB7CiAgICAgICAgLmJvcmRlci1sZWZ0LXJhZGl1cyhAYm9yZGVyLXJhZGl1cyk7CiAgICAgIH0KICAgIH0KICAgICY6bGFzdC1jaGlsZCB7CiAgICAgID4gYSwKICAgICAgPiBzcGFuIHsKICAgICAgICAuYm9yZGVyLXJpZ2h0LXJhZGl1cyhAYm9yZGVyLXJhZGl1cyk7CiAgICAgIH0KICAgIH0KICB9Cn0KCi8vIExhYmVscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5sYWJlbC12YXJpYW50KEBjb2xvcikgewogIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKICAmW2hyZWZdIHsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKEBjb2xvciwgMTAlKTsKICAgIH0KICB9Cn0KCi8vIENvbnRleHR1YWwgYmFja2dyb3VuZHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouYmctdmFyaWFudChAY29sb3IpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAY29sb3I7CiAgYSY6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKEBjb2xvciwgMTAlKTsKICB9Cn0KCi8vIFR5cG9ncmFwaHkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoudGV4dC1lbXBoYXNpcy12YXJpYW50KEBjb2xvcikgewogIGNvbG9yOiBAY29sb3I7CiAgYSY6aG92ZXIgewogICAgY29sb3I6IGRhcmtlbihAY29sb3IsIDEwJSk7CiAgfQp9CgovLyBOYXZiYXIgdmVydGljYWwgYWxpZ24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBWZXJ0aWNhbGx5IGNlbnRlciBlbGVtZW50cyBpbiB0aGUgbmF2YmFyLgovLyBFeGFtcGxlOiBhbiBlbGVtZW50IGhhcyBhIGhlaWdodCBvZiAzMHB4LCBzbyB3cml0ZSBvdXQgYC5uYXZiYXItdmVydGljYWwtYWxpZ24oMzBweCk7YCB0byBjYWxjdWxhdGUgdGhlIGFwcHJvcHJpYXRlIHRvcCBtYXJnaW4uCi5uYXZiYXItdmVydGljYWwtYWxpZ24oQGVsZW1lbnQtaGVpZ2h0KSB7CiAgbWFyZ2luLXRvcDogKChAbmF2YmFyLWhlaWdodCAtIEBlbGVtZW50LWhlaWdodCkgLyAyKTsKICBtYXJnaW4tYm90dG9tOiAoKEBuYXZiYXItaGVpZ2h0IC0gQGVsZW1lbnQtaGVpZ2h0KSAvIDIpOwp9CgovLyBQcm9ncmVzcyBiYXJzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnByb2dyZXNzLWJhci12YXJpYW50KEBjb2xvcikgewogIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKICAucHJvZ3Jlc3Mtc3RyaXBlZCAmIHsKICAgICNncmFkaWVudCA+IC5zdHJpcGVkKCk7CiAgfQp9CgovLyBSZXNwb25zaXZlIHV0aWxpdGllcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE1vcmUgZWFzaWx5IGluY2x1ZGUgYWxsIHRoZSBzdGF0ZXMgZm9yIHJlc3BvbnNpdmUtdXRpbGl0aWVzLmxlc3MuCi5yZXNwb25zaXZlLXZpc2liaWxpdHkoKSB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB0YWJsZSYgIHsgZGlzcGxheTogdGFibGU7IH0KICB0ciYgICAgIHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH0KICB0aCYsCiAgdGQmICAgICB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfQp9CgoucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKSB7CiAgICAmLAogIHRyJiwKICB0aCYsCiAgdGQmIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9Cn0KCgovLyBHcmlkIFN5c3RlbQovLyAtLS0tLS0tLS0tLQoKLy8gQ2VudGVyZWQgY29udGFpbmVyIGVsZW1lbnQKLmNvbnRhaW5lci1maXhlZCgpIHsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgcGFkZGluZy1sZWZ0OiAgKEBncmlkLWd1dHRlci13aWR0aCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IChAZ3JpZC1ndXR0ZXItd2lkdGggLyAyKTsKICAmOmV4dGVuZCguY2xlYXJmaXggYWxsKTsKfQoKLy8gQ3JlYXRlcyBhIHdyYXBwZXIgZm9yIGEgc2VyaWVzIG9mIGNvbHVtbnMKLm1ha2Utcm93KEBndXR0ZXI6IEBncmlkLWd1dHRlci13aWR0aCkgewogIG1hcmdpbi1sZWZ0OiAgKEBndXR0ZXIgLyAtMik7CiAgbWFyZ2luLXJpZ2h0OiAoQGd1dHRlciAvIC0yKTsKICAmOmV4dGVuZCguY2xlYXJmaXggYWxsKTsKfQoKLy8gR2VuZXJhdGUgdGhlIGV4dHJhIHNtYWxsIGNvbHVtbnMKLm1ha2UteHMtY29sdW1uKEBjb2x1bW5zOyBAZ3V0dGVyOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxvYXQ6IGxlZnQ7CiAgd2lkdGg6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLWxlZnQ6ICAoQGd1dHRlciAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IChAZ3V0dGVyIC8gMik7Cn0KLm1ha2UteHMtY29sdW1uLW9mZnNldChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXhzLW1pbikgewogICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS14cy1jb2x1bW4tcHVzaChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXhzLW1pbikgewogICAgbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLXhzLWNvbHVtbi1wdWxsKEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4teHMtbWluKSB7CiAgICByaWdodDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9CgoKLy8gR2VuZXJhdGUgdGhlIHNtYWxsIGNvbHVtbnMKLm1ha2Utc20tY29sdW1uKEBjb2x1bW5zOyBAZ3V0dGVyOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWluLWhlaWdodDogMXB4OwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2Utc20tY29sdW1uLW9mZnNldChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS1zbS1jb2x1bW4tcHVzaChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLXNtLWNvbHVtbi1wdWxsKEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICByaWdodDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9CgoKLy8gR2VuZXJhdGUgdGhlIG1lZGl1bSBjb2x1bW5zCi5tYWtlLW1kLWNvbHVtbihAY29sdW1uczsgQGd1dHRlcjogQGdyaWQtZ3V0dGVyLXdpZHRoKSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLWxlZnQ6ICAoQGd1dHRlciAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IChAZ3V0dGVyIC8gMik7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLW1kLWNvbHVtbi1vZmZzZXQoQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIHsKICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2UtbWQtY29sdW1uLXB1c2goQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIHsKICAgIGxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS1tZC1jb2x1bW4tcHVsbChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgewogICAgcmlnaHQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoKCi8vIEdlbmVyYXRlIHRoZSBsYXJnZSBjb2x1bW5zCi5tYWtlLWxnLWNvbHVtbihAY29sdW1uczsgQGd1dHRlcjogQGdyaWQtZ3V0dGVyLXdpZHRoKSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLWxlZnQ6ICAoQGd1dHRlciAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IChAZ3V0dGVyIC8gMik7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLW1pbikgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLWxnLWNvbHVtbi1vZmZzZXQoQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2UtbGctY29sdW1uLXB1c2goQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIGxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS1sZy1jb2x1bW4tcHVsbChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLW1pbikgewogICAgcmlnaHQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoKCi8vIEZyYW1ld29yayBncmlkIGdlbmVyYXRpb24KLy8KLy8gVXNlZCBvbmx5IGJ5IEJvb3RzdHJhcCB0byBnZW5lcmF0ZSB0aGUgY29ycmVjdCBudW1iZXIgb2YgZ3JpZCBjbGFzc2VzIGdpdmVuCi8vIGFueSB2YWx1ZSBvZiBgQGdyaWQtY29sdW1uc2AuCgoubWFrZS1ncmlkLWNvbHVtbnMoKSB7CiAgLy8gQ29tbW9uIHN0eWxlcyBmb3IgYWxsIHNpemVzIG9mIGdyaWQgY29sdW1ucywgd2lkdGhzIDEtMTIKICAuY29sKEBpbmRleCkgd2hlbiAoQGluZGV4ID0gMSkgeyAvLyBpbml0aWFsCiAgICBAaXRlbTogfiIuY29sLXhzLUB7aW5kZXh9LCAuY29sLXNtLUB7aW5kZXh9LCAuY29sLW1kLUB7aW5kZXh9LCAuY29sLWxnLUB7aW5kZXh9IjsKICAgIC5jb2woKEBpbmRleCArIDEpLCBAaXRlbSk7CiAgfQogIC5jb2woQGluZGV4LCBAbGlzdCkgd2hlbiAoQGluZGV4ID08IEBncmlkLWNvbHVtbnMpIHsgLy8gZ2VuZXJhbDsgIj08IiBpc24ndCBhIHR5cG8KICAgIEBpdGVtOiB+Ii5jb2wteHMtQHtpbmRleH0sIC5jb2wtc20tQHtpbmRleH0sIC5jb2wtbWQtQHtpbmRleH0sIC5jb2wtbGctQHtpbmRleH0iOwogICAgLmNvbCgoQGluZGV4ICsgMSksIH4iQHtsaXN0fSwgQHtpdGVtfSIpOwogIH0KICAuY29sKEBpbmRleCwgQGxpc3QpIHdoZW4gKEBpbmRleCA+IEBncmlkLWNvbHVtbnMpIHsgLy8gdGVybWluYWwKICAgIEB7bGlzdH0gewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIC8vIFByZXZlbnQgY29sdW1ucyBmcm9tIGNvbGxhcHNpbmcgd2hlbiBlbXB0eQogICAgICBtaW4taGVpZ2h0OiAxcHg7CiAgICAgIC8vIElubmVyIGd1dHRlciB2aWEgcGFkZGluZwogICAgICBwYWRkaW5nLWxlZnQ6ICAoQGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7CiAgICAgIHBhZGRpbmctcmlnaHQ6IChAZ3JpZC1ndXR0ZXItd2lkdGggLyAyKTsKICAgIH0KICB9CiAgLmNvbCgxKTsgLy8ga2lja3N0YXJ0IGl0Cn0KCi5tYWtlLWdyaWQtY29sdW1ucy1mbG9hdChAY2xhc3MpIHsKICAuY29sKEBpbmRleCkgd2hlbiAoQGluZGV4ID0gMSkgeyAvLyBpbml0aWFsCiAgICBAaXRlbTogfiIuY29sLUB7Y2xhc3N9LUB7aW5kZXh9IjsKICAgIC5jb2woKEBpbmRleCArIDEpLCBAaXRlbSk7CiAgfQogIC5jb2woQGluZGV4LCBAbGlzdCkgd2hlbiAoQGluZGV4ID08IEBncmlkLWNvbHVtbnMpIHsgLy8gZ2VuZXJhbAogICAgQGl0ZW06IH4iLmNvbC1Ae2NsYXNzfS1Ae2luZGV4fSI7CiAgICAuY29sKChAaW5kZXggKyAxKSwgfiJAe2xpc3R9LCBAe2l0ZW19Iik7CiAgfQogIC5jb2woQGluZGV4LCBAbGlzdCkgd2hlbiAoQGluZGV4ID4gQGdyaWQtY29sdW1ucykgeyAvLyB0ZXJtaW5hbAogICAgQHtsaXN0fSB7CiAgICAgIGZsb2F0OiBsZWZ0OwogICAgfQogIH0KICAuY29sKDEpOyAvLyBraWNrc3RhcnQgaXQKfQoKLmNhbGMtZ3JpZChAaW5kZXgsIEBjbGFzcywgQHR5cGUpIHdoZW4gKEB0eXBlID0gd2lkdGgpIGFuZCAoQGluZGV4ID4gMCkgewogIC5jb2wtQHtjbGFzc30tQHtpbmRleH0gewogICAgd2lkdGg6IHBlcmNlbnRhZ2UoKEBpbmRleCAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLmNhbGMtZ3JpZChAaW5kZXgsIEBjbGFzcywgQHR5cGUpIHdoZW4gKEB0eXBlID0gcHVzaCkgewogIC5jb2wtQHtjbGFzc30tcHVzaC1Ae2luZGV4fSB7CiAgICBsZWZ0OiBwZXJjZW50YWdlKChAaW5kZXggLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5jYWxjLWdyaWQoQGluZGV4LCBAY2xhc3MsIEB0eXBlKSB3aGVuIChAdHlwZSA9IHB1bGwpIHsKICAuY29sLUB7Y2xhc3N9LXB1bGwtQHtpbmRleH0gewogICAgcmlnaHQ6IHBlcmNlbnRhZ2UoKEBpbmRleCAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLmNhbGMtZ3JpZChAaW5kZXgsIEBjbGFzcywgQHR5cGUpIHdoZW4gKEB0eXBlID0gb2Zmc2V0KSB7CiAgLmNvbC1Ae2NsYXNzfS1vZmZzZXQtQHtpbmRleH0gewogICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKEBpbmRleCAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KCi8vIEJhc2ljIGxvb3BpbmcgaW4gTEVTUwoubWFrZS1ncmlkKEBpbmRleCwgQGNsYXNzLCBAdHlwZSkgd2hlbiAoQGluZGV4ID49IDApIHsKICAuY2FsYy1ncmlkKEBpbmRleCwgQGNsYXNzLCBAdHlwZSk7CiAgLy8gbmV4dCBpdGVyYXRpb24KICAubWFrZS1ncmlkKChAaW5kZXggLSAxKSwgQGNsYXNzLCBAdHlwZSk7Cn0KCgovLyBGb3JtIHZhbGlkYXRpb24gc3RhdGVzCi8vCi8vIFVzZWQgaW4gZm9ybXMubGVzcyB0byBnZW5lcmF0ZSB0aGUgZm9ybSB2YWxpZGF0aW9uIENTUyBmb3Igd2FybmluZ3MsIGVycm9ycywKLy8gYW5kIHN1Y2Nlc3Nlcy4KCi5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAdGV4dC1jb2xvcjogIzU1NTsgQGJvcmRlci1jb2xvcjogI2NjYzsgQGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjUpIHsKICAvLyBDb2xvciB0aGUgbGFiZWwgYW5kIGhlbHAgdGV4dAogIC5oZWxwLWJsb2NrLAogIC5jb250cm9sLWxhYmVsLAogIC5yYWRpbywKICAuY2hlY2tib3gsCiAgLnJhZGlvLWlubGluZSwKICAuY2hlY2tib3gtaW5saW5lICB7CiAgICBjb2xvcjogQHRleHQtY29sb3I7CiAgfQogIC8vIFNldCB0aGUgYm9yZGVyIGFuZCBib3ggc2hhZG93IG9uIHNwZWNpZmljIGlucHV0cyB0byBtYXRjaAogIC5mb3JtLWNvbnRyb2wgewogICAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyLWNvbG9yOwogICAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSkpOyAvLyBSZWRlY2xhcmUgc28gdHJhbnNpdGlvbnMgd29yawogICAgJjpmb2N1cyB7CiAgICAgIGJvcmRlci1jb2xvcjogZGFya2VuKEBib3JkZXItY29sb3IsIDEwJSk7CiAgICAgIEBzaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgNnB4IGxpZ2h0ZW4oQGJvcmRlci1jb2xvciwgMjAlKTsKICAgICAgLmJveC1zaGFkb3coQHNoYWRvdyk7CiAgICB9CiAgfQogIC8vIFNldCB2YWxpZGF0aW9uIHN0YXRlcyBhbHNvIGZvciBhZGRvbnMKICAuaW5wdXQtZ3JvdXAtYWRkb24gewogICAgY29sb3I6IEB0ZXh0LWNvbG9yOwogICAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyLWNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGJhY2tncm91bmQtY29sb3I7CiAgfQogIC8vIE9wdGlvbmFsIGZlZWRiYWNrIGljb24KICAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIGNvbG9yOiBAdGV4dC1jb2xvcjsKICB9Cn0KCi8vIEZvcm0gY29udHJvbCBmb2N1cyBzdGF0ZQovLwovLyBHZW5lcmF0ZSBhIGN1c3RvbWl6ZWQgZm9jdXMgc3RhdGUgYW5kIGZvciBhbnkgaW5wdXQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yLAovLyB3aGljaCBkZWZhdWx0cyB0byB0aGUgYEBpbnB1dC1mb2N1cy1ib3JkZXJgIHZhcmlhYmxlLgovLwovLyBXZSBoaWdobHkgZW5jb3VyYWdlIHlvdSB0byBub3QgY3VzdG9taXplIHRoZSBkZWZhdWx0IHZhbHVlLCBidXQgaW5zdGVhZCB1c2UKLy8gdGhpcyB0byB0d2VhayBjb2xvcnMgb24gYW4gYXMtbmVlZGVkIGJhc2lzLiBUaGlzIGFlc3RoZXRpYyBjaGFuZ2UgaXMgYmFzZWQgb24KLy8gV2ViS2l0J3MgZGVmYXVsdCBzdHlsZXMsIGJ1dCBhcHBsaWNhYmxlIHRvIGEgd2lkZXIgcmFuZ2Ugb2YgYnJvd3NlcnMuIEl0cwovLyB1c2FiaWxpdHkgYW5kIGFjY2Vzc2liaWxpdHkgc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3VudCB3aXRoIGFueSBjaGFuZ2UuCi8vCi8vIEV4YW1wbGUgdXNhZ2U6IGNoYW5nZSB0aGUgZGVmYXVsdCBibHVlIGJvcmRlciBhbmQgc2hhZG93IHRvIHdoaXRlIGZvciBiZXR0ZXIKLy8gY29udHJhc3QgYWdhaW5zdCBhIGRhcmsgZ3JheSBiYWNrZ3JvdW5kLgoKLmZvcm0tY29udHJvbC1mb2N1cyhAY29sb3I6IEBpbnB1dC1ib3JkZXItZm9jdXMpIHsKICBAY29sb3ItcmdiYTogcmdiYShyZWQoQGNvbG9yKSwgZ3JlZW4oQGNvbG9yKSwgYmx1ZShAY29sb3IpLCAuNik7CiAgJjpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IEBjb2xvcjsKICAgIG91dGxpbmU6IDA7CiAgICAuYm94LXNoYWRvdyh+Imluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgOHB4IEB7Y29sb3ItcmdiYX0iKTsKICB9Cn0KCi8vIEZvcm0gY29udHJvbCBzaXppbmcKLy8KLy8gUmVsYXRpdmUgdGV4dCBzaXplLCBwYWRkaW5nLCBhbmQgYm9yZGVyLXJhZGlpIGNoYW5nZXMgZm9yIGZvcm0gY29udHJvbHMuIEZvcgovLyBob3Jpem9udGFsIHNpemluZywgd3JhcCBjb250cm9scyBpbiB0aGUgcHJlZGVmaW5lZCBncmlkIGNsYXNzZXMuIGA8c2VsZWN0PmAKLy8gZWxlbWVudCBnZXRzIHNwZWNpYWwgbG92ZSBiZWNhdXNlIGl0J3Mgc3BlY2lhbCwgYW5kIHRoYXQncyBhIGZhY3QhCgouaW5wdXQtc2l6ZShAaW5wdXQtaGVpZ2h0OyBAcGFkZGluZy12ZXJ0aWNhbDsgQHBhZGRpbmctaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZTsgQGxpbmUtaGVpZ2h0OyBAYm9yZGVyLXJhZGl1cykgewogIGhlaWdodDogQGlucHV0LWhlaWdodDsKICBwYWRkaW5nOiBAcGFkZGluZy12ZXJ0aWNhbCBAcGFkZGluZy1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0OwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzOwoKICBzZWxlY3QmIHsKICAgIGhlaWdodDogQGlucHV0LWhlaWdodDsKICAgIGxpbmUtaGVpZ2h0OiBAaW5wdXQtaGVpZ2h0OwogIH0KCiAgdGV4dGFyZWEmLAogIHNlbGVjdFttdWx0aXBsZV0mIHsKICAgIGhlaWdodDogYXV0bzsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/modals.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTW9kYWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyAubW9kYWwtb3BlbiAgICAgIC0gYm9keSBjbGFzcyBmb3Iga2lsbGluZyB0aGUgc2Nyb2xsCi8vIC5tb2RhbCAgICAgICAgICAgLSBjb250YWluZXIgdG8gc2Nyb2xsIHdpdGhpbgovLyAubW9kYWwtZGlhbG9nICAgIC0gcG9zaXRpb25pbmcgc2hlbGwgZm9yIHRoZSBhY3R1YWwgbW9kYWwKLy8gLm1vZGFsLWNvbnRlbnQgICAtIGFjdHVhbCBtb2RhbCB3LyBiZyBhbmQgY29ybmVycyBhbmQgc2hpdAoKLy8gS2lsbCB0aGUgc2Nyb2xsIG9uIHRoZSBib2R5Ci5tb2RhbC1vcGVuIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgovLyBDb250YWluZXIgdGhhdCB0aGUgbW9kYWwgc2Nyb2xscyB3aXRoaW4KLm1vZGFsIHsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBhdXRvOwogIG92ZXJmbG93LXk6IHNjcm9sbDsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IEB6aW5kZXgtbW9kYWw7CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoKICAvLyBQcmV2ZW50IENocm9tZSBvbiBXaW5kb3dzIGZyb20gYWRkaW5nIGEgZm9jdXMgb3V0bGluZS4gRm9yIGRldGFpbHMsIHNlZQogIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzEwOTUxLgogIG91dGxpbmU6IDA7CgogIC8vIFdoZW4gZmFkaW5nIGluIHRoZSBtb2RhbCwgYW5pbWF0ZSBpdCB0byBzbGlkZSBkb3duCiAgJi5mYWRlIC5tb2RhbC1kaWFsb2cgewogICAgLnRyYW5zbGF0ZSgwLCAtMjUlKTsKICAgIC50cmFuc2l0aW9uLXRyYW5zZm9ybSh+IjAuM3MgZWFzZS1vdXQiKTsKICB9CiAgJi5pbiAubW9kYWwtZGlhbG9nIHsgLnRyYW5zbGF0ZSgwLCAwKX0KfQoKLy8gU2hlbGwgZGl2IHRvIHBvc2l0aW9uIHRoZSBtb2RhbCB3aXRoIGJvdHRvbSBwYWRkaW5nCi5tb2RhbC1kaWFsb2cgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aWR0aDogYXV0bzsKICBtYXJnaW46IDEwcHg7Cn0KCi8vIEFjdHVhbCBtb2RhbAoubW9kYWwtY29udGVudCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJhY2tncm91bmQtY29sb3I6IEBtb2RhbC1jb250ZW50LWJnOwogIGJvcmRlcjogMXB4IHNvbGlkIEBtb2RhbC1jb250ZW50LWZhbGxiYWNrLWJvcmRlci1jb2xvcjsgLy9vbGQgYnJvd3NlcnMgZmFsbGJhY2sgKGllOCBldGMpCiAgYm9yZGVyOiAxcHggc29saWQgQG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWxhcmdlOwogIC5ib3gtc2hhZG93KDAgM3B4IDlweCByZ2JhKDAsMCwwLC41KSk7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAvLyBSZW1vdmUgZm9jdXMgb3V0bGluZSBmcm9tIG9wZW5lZCBtb2RhbAogIG91dGxpbmU6IG5vbmU7Cn0KCi8vIE1vZGFsIGJhY2tncm91bmQKLm1vZGFsLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IEB6aW5kZXgtbW9kYWwtYmFja2dyb3VuZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbW9kYWwtYmFja2Ryb3AtYmc7CiAgLy8gRmFkZSBmb3IgYmFja2Ryb3AKICAmLmZhZGUgeyAub3BhY2l0eSgwKTsgfQogICYuaW4geyAub3BhY2l0eShAbW9kYWwtYmFja2Ryb3Atb3BhY2l0eSk7IH0KfQoKLy8gTW9kYWwgaGVhZGVyCi8vIFRvcCBzZWN0aW9uIG9mIHRoZSBtb2RhbCB3LyB0aXRsZSBhbmQgZGlzbWlzcwoubW9kYWwtaGVhZGVyIHsKICBwYWRkaW5nOiBAbW9kYWwtdGl0bGUtcGFkZGluZzsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I7CiAgbWluLWhlaWdodDogKEBtb2RhbC10aXRsZS1wYWRkaW5nICsgQG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0KTsKfQovLyBDbG9zZSBpY29uCi5tb2RhbC1oZWFkZXIgLmNsb3NlIHsKICBtYXJnaW4tdG9wOiAtMnB4Owp9CgovLyBUaXRsZSB0ZXh0IHdpdGhpbiBoZWFkZXIKLm1vZGFsLXRpdGxlIHsKICBtYXJnaW46IDA7CiAgbGluZS1oZWlnaHQ6IEBtb2RhbC10aXRsZS1saW5lLWhlaWdodDsKfQoKLy8gTW9kYWwgYm9keQovLyBXaGVyZSBhbGwgbW9kYWwgY29udGVudCByZXNpZGVzIChzaWJsaW5nIG9mIC5tb2RhbC1oZWFkZXIgYW5kIC5tb2RhbC1mb290ZXIpCi5tb2RhbC1ib2R5IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogQG1vZGFsLWlubmVyLXBhZGRpbmc7Cn0KCi8vIEZvb3RlciAoZm9yIGFjdGlvbnMpCi5tb2RhbC1mb290ZXIgewogIG1hcmdpbi10b3A6IDE1cHg7CiAgcGFkZGluZzogKEBtb2RhbC1pbm5lci1wYWRkaW5nIC0gMSkgQG1vZGFsLWlubmVyLXBhZGRpbmcgQG1vZGFsLWlubmVyLXBhZGRpbmc7CiAgdGV4dC1hbGlnbjogcmlnaHQ7IC8vIHJpZ2h0IGFsaWduIGJ1dHRvbnMKICBib3JkZXItdG9wOiAxcHggc29saWQgQG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I7CiAgJjpleHRlbmQoLmNsZWFyZml4IGFsbCk7IC8vIGNsZWFyIGl0IGluIGNhc2UgZm9sa3MgdXNlIC5wdWxsLSogY2xhc3NlcyBvbiBidXR0b25zCgogIC8vIFByb3Blcmx5IHNwYWNlIG91dCBidXR0b25zCiAgLmJ0biArIC5idG4gewogICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgIG1hcmdpbi1ib3R0b206IDA7IC8vIGFjY291bnQgZm9yIGlucHV0W3R5cGU9InN1Ym1pdCJdIHdoaWNoIGdldHMgdGhlIGJvdHRvbSBtYXJnaW4gbGlrZSBhbGwgb3RoZXIgaW5wdXRzCiAgfQogIC8vIGJ1dCBvdmVycmlkZSB0aGF0IGZvciBidXR0b24gZ3JvdXBzCiAgLmJ0bi1ncm91cCAuYnRuICsgLmJ0biB7CiAgICBtYXJnaW4tbGVmdDogLTFweDsKICB9CiAgLy8gYW5kIG92ZXJyaWRlIGl0IGZvciBibG9jayBidXR0b25zIGFzIHdlbGwKICAuYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9Cn0KCi8vIFNjYWxlIHVwIHRoZSBtb2RhbApAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKCiAgLy8gQXV0b21hdGljYWxseSBzZXQgbW9kYWwncyB3aWR0aCBmb3IgbGFyZ2VyIHZpZXdwb3J0cwogIC5tb2RhbC1kaWFsb2cgewogICAgd2lkdGg6IEBtb2RhbC1tZDsKICAgIG1hcmdpbjogMzBweCBhdXRvOwogIH0KICAubW9kYWwtY29udGVudCB7CiAgICAuYm94LXNoYWRvdygwIDVweCAxNXB4IHJnYmEoMCwwLDAsLjUpKTsKICB9CgogIC8vIE1vZGFsIHNpemVzCiAgLm1vZGFsLXNtIHsgd2lkdGg6IEBtb2RhbC1zbTsgfQogIC5tb2RhbC1sZyB7IHdpZHRoOiBAbW9kYWwtbGc7IH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/navbar.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTmF2YmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIFdyYXBwZXIgYW5kIGJhc2UgY2xhc3MKLy8KLy8gUHJvdmlkZSBhIHN0YXRpYyBuYXZiYXIgZnJvbSB3aGljaCB3ZSBleHBhbmQgdG8gY3JlYXRlIGZ1bGwtd2lkdGgsIGZpeGVkLCBhbmQKLy8gb3RoZXIgbmF2YmFyIHZhcmlhdGlvbnMuCgoubmF2YmFyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWluLWhlaWdodDogQG5hdmJhci1oZWlnaHQ7IC8vIEVuc3VyZSBhIG5hdmJhciBhbHdheXMgc2hvd3MgKGUuZy4sIHdpdGhvdXQgYSAubmF2YmFyLWJyYW5kIGluIGNvbGxhcHNlZCBtb2RlKQogIG1hcmdpbi1ib3R0b206IEBuYXZiYXItbWFyZ2luLWJvdHRvbTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKCiAgLy8gUHJldmVudCBmbG9hdHMgZnJvbSBicmVha2luZyB0aGUgbmF2YmFyCiAgJjpleHRlbmQoLmNsZWFyZml4IGFsbCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBib3JkZXItcmFkaXVzOiBAbmF2YmFyLWJvcmRlci1yYWRpdXM7CiAgfQp9CgoKLy8gTmF2YmFyIGhlYWRpbmcKLy8KLy8gR3JvdXBzIGAubmF2YmFyLWJyYW5kYCBhbmQgYC5uYXZiYXItdG9nZ2xlYCBpbnRvIGEgc2luZ2xlIGNvbXBvbmVudCBmb3IgZWFzeQovLyBzdHlsaW5nIG9mIHJlc3BvbnNpdmUgYXNwZWN0cy4KCi5uYXZiYXItaGVhZGVyIHsKICAmOmV4dGVuZCguY2xlYXJmaXggYWxsKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIGZsb2F0OiBsZWZ0OwogIH0KfQoKCi8vIE5hdmJhciBjb2xsYXBzZSAoYm9keSkKLy8KLy8gR3JvdXAgeW91ciBuYXZiYXIgY29udGVudCBpbnRvIHRoaXMgZm9yIGVhc3kgY29sbGFwc2luZyBhbmQgZXhwYW5kaW5nIGFjcm9zcwovLyB2YXJpb3VzIGRldmljZSBzaXplcy4gQnkgZGVmYXVsdCwgdGhpcyBjb250ZW50IGlzIGNvbGxhcHNlZCB3aGVuIDw3NjhweCwgYnV0Ci8vIHdpbGwgZXhwYW5kIHBhc3QgdGhhdCBmb3IgYSBob3Jpem9udGFsIGRpc3BsYXkuCi8vCi8vIFRvIHN0YXJ0IChvbiBtb2JpbGUgZGV2aWNlcykgdGhlIG5hdmJhciBsaW5rcywgZm9ybXMsIGFuZCBidXR0b25zIGFyZSBzdGFja2VkCi8vIHZlcnRpY2FsbHkgYW5kIGluY2x1ZGUgYSBgbWF4LWhlaWdodGAgdG8gb3ZlcmZsb3cgaW4gY2FzZSB5b3UgaGF2ZSB0b28gbXVjaAovLyBjb250ZW50IGZvciB0aGUgdXNlcidzIHZpZXdwb3J0LgoKLm5hdmJhci1jb2xsYXBzZSB7CiAgbWF4LWhlaWdodDogQG5hdmJhci1jb2xsYXBzZS1tYXgtaGVpZ2h0OwogIG92ZXJmbG93LXg6IHZpc2libGU7CiAgcGFkZGluZy1yaWdodDogQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgcGFkZGluZy1sZWZ0OiAgQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7CiAgJjpleHRlbmQoLmNsZWFyZml4IGFsbCk7CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoKICAmLmluIHsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgfQoKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgd2lkdGg6IGF1dG87CiAgICBib3JkZXItdG9wOiAwOwogICAgYm94LXNoYWRvdzogbm9uZTsKCiAgICAmLmNvbGxhcHNlIHsKICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctYm90dG9tOiAwOyAvLyBPdmVycmlkZSBkZWZhdWx0IHNldHRpbmcKICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKICAgIH0KCiAgICAmLmluIHsKICAgICAgb3ZlcmZsb3cteTogdmlzaWJsZTsKICAgIH0KCiAgICAvLyBVbmRvIHRoZSBjb2xsYXBzZSBzaWRlIHBhZGRpbmcgZm9yIG5hdmJhcnMgd2l0aCBjb250YWluZXJzIHRvIGVuc3VyZQogICAgLy8gYWxpZ25tZW50IG9mIHJpZ2h0LWFsaWduZWQgY29udGVudHMuCiAgICAubmF2YmFyLWZpeGVkLXRvcCAmLAogICAgLm5hdmJhci1zdGF0aWMtdG9wICYsCiAgICAubmF2YmFyLWZpeGVkLWJvdHRvbSAmIHsKICAgICAgcGFkZGluZy1sZWZ0OiAwOwogICAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgfQogIH0KfQoKCi8vIEJvdGggbmF2YmFyIGhlYWRlciBhbmQgY29sbGFwc2UKLy8KLy8gV2hlbiBhIGNvbnRhaW5lciBpcyBwcmVzZW50LCBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBoZWFkZXIgYW5kIGNvbGxhcHNlLgoKLmNvbnRhaW5lciwKLmNvbnRhaW5lci1mbHVpZCB7CiAgPiAubmF2YmFyLWhlYWRlciwKICA+IC5uYXZiYXItY29sbGFwc2UgewogICAgbWFyZ2luLXJpZ2h0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgICBtYXJnaW4tbGVmdDogIC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKCiAgICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgIG1hcmdpbi1sZWZ0OiAgMDsKICAgIH0KICB9Cn0KCgovLwovLyBOYXZiYXIgYWxpZ25tZW50IG9wdGlvbnMKLy8KLy8gRGlzcGxheSB0aGUgbmF2YmFyIGFjcm9zcyB0aGUgZW50aXJldHkgb2YgdGhlIHBhZ2Ugb3IgZml4ZWQgaXQgdG8gdGhlIHRvcCBvcgovLyBib3R0b20gb2YgdGhlIHBhZ2UuCgovLyBTdGF0aWMgdG9wICh1bmZpeGVkLCBidXQgMTAwJSB3aWRlKSBuYXZiYXIKLm5hdmJhci1zdGF0aWMtdG9wIHsKICB6LWluZGV4OiBAemluZGV4LW5hdmJhcjsKICBib3JkZXItd2lkdGg6IDAgMCAxcHg7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQoKLy8gRml4IHRoZSB0b3AvYm90dG9tIG5hdmJhcnMgd2hlbiBzY3JlZW4gcmVhbCBlc3RhdGUgc3VwcG9ydHMgaXQKLm5hdmJhci1maXhlZC10b3AsCi5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LW5hdmJhci1maXhlZDsKCiAgLy8gVW5kbyB0aGUgcm91bmRlZCBjb3JuZXJzCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQp9Ci5uYXZiYXItZml4ZWQtdG9wIHsKICB0b3A6IDA7CiAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4Owp9Ci5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBib3R0b206IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gb3ZlcnJpZGUgLm5hdmJhciBkZWZhdWx0cwogIGJvcmRlci13aWR0aDogMXB4IDAgMDsKfQoKCi8vIEJyYW5kL3Byb2plY3QgbmFtZQoKLm5hdmJhci1icmFuZCB7CiAgZmxvYXQ6IGxlZnQ7CiAgcGFkZGluZzogQG5hdmJhci1wYWRkaW5nLXZlcnRpY2FsIEBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1sYXJnZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGhlaWdodDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwoKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIC5uYXZiYXIgPiAuY29udGFpbmVyICYsCiAgICAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCAmIHsKICAgICAgbWFyZ2luLWxlZnQ6IC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICAgIH0KICB9Cn0KCgovLyBOYXZiYXIgdG9nZ2xlCi8vCi8vIEN1c3RvbSBidXR0b24gZm9yIHRvZ2dsaW5nIHRoZSBgLm5hdmJhci1jb2xsYXBzZWAsIHBvd2VyZWQgYnkgdGhlIGNvbGxhcHNlCi8vIEphdmFTY3JpcHQgcGx1Z2luLgoKLm5hdmJhci10b2dnbGUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbG9hdDogcmlnaHQ7CiAgbWFyZ2luLXJpZ2h0OiBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBwYWRkaW5nOiA5cHggMTBweDsKICAubmF2YmFyLXZlcnRpY2FsLWFsaWduKDM0cHgpOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IC8vIFJlc2V0IHVudXN1YWwgRmlyZWZveC1vbi1BbmRyb2lkIGRlZmF1bHQgc3R5bGU7IHNlZSBodHRwczovL2dpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzL2lzc3Vlcy8yMTQKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwoKICAvLyBXZSByZW1vdmUgdGhlIGBvdXRsaW5lYCBoZXJlLCBidXQgbGF0ZXIgY29tcGVuc2F0ZSBieSBhdHRhY2hpbmcgYDpob3ZlcmAKICAvLyBzdHlsZXMgdG8gYDpmb2N1c2AuCiAgJjpmb2N1cyB7CiAgICBvdXRsaW5lOiBub25lOwogIH0KCiAgLy8gQmFycwogIC5pY29uLWJhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAyMnB4OwogICAgaGVpZ2h0OiAycHg7CiAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgfQogIC5pY29uLWJhciArIC5pY29uLWJhciB7CiAgICBtYXJnaW4tdG9wOiA0cHg7CiAgfQoKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KCgovLyBOYXZiYXIgbmF2IGxpbmtzCi8vCi8vIEJ1aWxkcyBvbiB0b3Agb2YgdGhlIGAubmF2YCBjb21wb25lbnRzIHdpdGggaXRzIG93biBtb2RpZmllciBjbGFzcyB0byBtYWtlCi8vIHRoZSBuYXYgdGhlIGZ1bGwgaGVpZ2h0IG9mIHRoZSBob3Jpem9udGFsIG5hdiAoYWJvdmUgNzY4cHgpLgoKLm5hdmJhci1uYXYgewogIG1hcmdpbjogKEBuYXZiYXItcGFkZGluZy12ZXJ0aWNhbCAvIDIpIC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKCiAgPiBsaSA+IGEgewogICAgcGFkZGluZy10b3A6ICAgIDEwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgfQoKICBAbWVkaWEgKG1heC13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXgpIHsKICAgIC8vIERyb3Bkb3ducyBnZXQgY3VzdG9tIGRpc3BsYXkgd2hlbiBjb2xsYXBzZWQKICAgIC5vcGVuIC5kcm9wZG93bi1tZW51IHsKICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgZmxvYXQ6IG5vbmU7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgICBtYXJnaW4tdG9wOiAwOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyOiAwOwogICAgICBib3gtc2hhZG93OiBub25lOwogICAgICA+IGxpID4gYSwKICAgICAgLmRyb3Bkb3duLWhlYWRlciB7CiAgICAgICAgcGFkZGluZzogNXB4IDE1cHggNXB4IDI1cHg7CiAgICAgIH0KICAgICAgPiBsaSA+IGEgewogICAgICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgICAgICAgJjpob3ZlciwKICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICAvLyBVbmNvbGxhcHNlIHRoZSBuYXYKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW46IDA7CgogICAgPiBsaSB7CiAgICAgIGZsb2F0OiBsZWZ0OwogICAgICA+IGEgewogICAgICAgIHBhZGRpbmctdG9wOiAgICBAbmF2YmFyLXBhZGRpbmctdmVydGljYWw7CiAgICAgICAgcGFkZGluZy1ib3R0b206IEBuYXZiYXItcGFkZGluZy12ZXJ0aWNhbDsKICAgICAgfQogICAgfQoKICAgICYubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgICBtYXJnaW4tcmlnaHQ6IC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICAgIH0KICB9Cn0KCgovLyBDb21wb25lbnQgYWxpZ25tZW50Ci8vCi8vIFJlcHVycG9zZSB0aGUgcHVsbCB1dGlsaXRpZXMgYXMgdGhlaXIgb3duIG5hdmJhciB1dGlsaXRpZXMgdG8gYXZvaWQgc3BlY2lmaWNpdHkKLy8gaXNzdWVzIHdpdGggcGFyZW50cyBhbmQgY2hhaW5pbmcuIE9ubHkgZG8gdGhpcyB3aGVuIHRoZSBuYXZiYXIgaXMgdW5jb2xsYXBzZWQKLy8gdGhvdWdoIHNvIHRoYXQgbmF2YmFyIGNvbnRlbnRzIHByb3Blcmx5IHN0YWNrIGFuZCBhbGlnbiBpbiBtb2JpbGUuCgpAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogIC5uYXZiYXItbGVmdCAgeyAucHVsbC1sZWZ0KCk7IH0KICAubmF2YmFyLXJpZ2h0IHsgLnB1bGwtcmlnaHQoKTsgfQp9CgoKLy8gTmF2YmFyIGZvcm0KLy8KLy8gRXh0ZW5zaW9uIG9mIHRoZSBgLmZvcm0taW5saW5lYCB3aXRoIHNvbWUgZXh0cmEgZmxhdm9yIGZvciBvcHRpbXVtIGRpc3BsYXkgaW4KLy8gb3VyIG5hdmJhcnMuCgoubmF2YmFyLWZvcm0gewogIG1hcmdpbi1sZWZ0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgbWFyZ2luLXJpZ2h0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgcGFkZGluZzogMTBweCBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIEBzaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSksIDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7CiAgLmJveC1zaGFkb3coQHNoYWRvdyk7CgogIC8vIE1peGluIGJlaGF2aW9yIGZvciBvcHRpbXVtIGRpc3BsYXkKICAuZm9ybS1pbmxpbmUoKTsKCiAgLmZvcm0tZ3JvdXAgewogICAgQG1lZGlhIChtYXgtd2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQtbWF4KSB7CiAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIH0KICB9CgogIC8vIFZlcnRpY2FsbHkgY2VudGVyIGluIGV4cGFuZGVkLCBob3Jpem9udGFsIG5hdmJhcgogIC5uYXZiYXItdmVydGljYWwtYWxpZ24oQGlucHV0LWhlaWdodC1iYXNlKTsKCiAgLy8gVW5kbyAxMDAlIHdpZHRoIGZvciBwdWxsIGNsYXNzZXMKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgd2lkdGg6IGF1dG87CiAgICBib3JkZXI6IDA7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIHBhZGRpbmctdG9wOiAwOwogICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAuYm94LXNoYWRvdyhub25lKTsKCiAgICAvLyBPdXRkZW50IHRoZSBmb3JtIGlmIGxhc3QgY2hpbGQgdG8gbGluZSB1cCB3aXRoIGNvbnRlbnQgZG93biB0aGUgcGFnZQogICAgJi5uYXZiYXItcmlnaHQ6bGFzdC1jaGlsZCB7CiAgICAgIG1hcmdpbi1yaWdodDogLUBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogICAgfQogIH0KfQoKCi8vIERyb3Bkb3duIG1lbnVzCgovLyBNZW51IHBvc2l0aW9uIGFuZCBtZW51IGNhcmV0cwoubmF2YmFyLW5hdiA+IGxpID4gLmRyb3Bkb3duLW1lbnUgewogIG1hcmdpbi10b3A6IDA7CiAgLmJvcmRlci10b3AtcmFkaXVzKDApOwp9Ci8vIE1lbnUgcG9zaXRpb24gYW5kIG1lbnUgY2FyZXQgc3VwcG9ydCBmb3IgZHJvcHVwcyB2aWEgZXh0cmEgZHJvcHVwIGNsYXNzCi5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItbmF2ID4gbGkgPiAuZHJvcGRvd24tbWVudSB7CiAgLmJvcmRlci1ib3R0b20tcmFkaXVzKDApOwp9CgoKLy8gQnV0dG9ucyBpbiBuYXZiYXJzCi8vCi8vIFZlcnRpY2FsbHkgY2VudGVyIGEgYnV0dG9uIHdpdGhpbiBhIG5hdmJhciAod2hlbiAqbm90KiBpbiBhIGZvcm0pLgoKLm5hdmJhci1idG4gewogIC5uYXZiYXItdmVydGljYWwtYWxpZ24oQGlucHV0LWhlaWdodC1iYXNlKTsKCiAgJi5idG4tc20gewogICAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbihAaW5wdXQtaGVpZ2h0LXNtYWxsKTsKICB9CiAgJi5idG4teHMgewogICAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbigyMik7CiAgfQp9CgoKLy8gVGV4dCBpbiBuYXZiYXJzCi8vCi8vIEFkZCBhIGNsYXNzIHRvIG1ha2UgYW55IGVsZW1lbnQgcHJvcGVybHkgYWxpZ24gaXRzZWxmIHZlcnRpY2FsbHkgd2l0aGluIHRoZSBuYXZiYXJzLgoKLm5hdmJhci10ZXh0IHsKICAubmF2YmFyLXZlcnRpY2FsLWFsaWduKEBsaW5lLWhlaWdodC1jb21wdXRlZCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICAgIG1hcmdpbi1yaWdodDogQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CgogICAgLy8gT3V0ZGVudCB0aGUgZm9ybSBpZiBsYXN0IGNoaWxkIHRvIGxpbmUgdXAgd2l0aCBjb250ZW50IGRvd24gdGhlIHBhZ2UKICAgICYubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9CiAgfQp9CgovLyBBbHRlcm5hdGUgbmF2YmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gRGVmYXVsdCBuYXZiYXIKLm5hdmJhci1kZWZhdWx0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYmc7CiAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYm9yZGVyOwoKICAubmF2YmFyLWJyYW5kIHsKICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYnJhbmQtY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYnJhbmQtaG92ZXItY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1icmFuZC1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uYXZiYXItdGV4dCB7CiAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWNvbG9yOwogIH0KCiAgLm5hdmJhci1uYXYgewogICAgPiBsaSA+IGEgewogICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CgogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItYmc7CiAgICAgIH0KICAgIH0KICAgID4gLmFjdGl2ZSA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1iZzsKICAgICAgfQogICAgfQogICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWJnOwogICAgICB9CiAgICB9CiAgfQoKICAubmF2YmFyLXRvZ2dsZSB7CiAgICBib3JkZXItY29sb3I6IEBuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOwogICAgJjpob3ZlciwKICAgICY6Zm9jdXMgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOwogICAgfQogICAgLmljb24tYmFyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzsKICAgIH0KICB9CgogIC5uYXZiYXItY29sbGFwc2UsCiAgLm5hdmJhci1mb3JtIHsKICAgIGJvcmRlci1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWJvcmRlcjsKICB9CgogIC8vIERyb3Bkb3duIG1lbnUgaXRlbXMKICAubmF2YmFyLW5hdiB7CiAgICAvLyBSZW1vdmUgYmFja2dyb3VuZCBjb2xvciBmcm9tIG9wZW4gZHJvcGRvd24KICAgID4gLm9wZW4gPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWJnOwogICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I7CiAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKG1heC13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXgpIHsKICAgICAgLy8gRHJvcGRvd25zIGdldCBjdXN0b20gZGlzcGxheSB3aGVuIGNvbGxhcHNlZAogICAgICAub3BlbiAuZHJvcGRvd24tbWVudSB7CiAgICAgICAgPiBsaSA+IGEgewogICAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOwogICAgICAgICAgJjpob3ZlciwKICAgICAgICAgICY6Zm9jdXMgewogICAgICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWJnOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICA+IC5hY3RpdmUgPiBhIHsKICAgICAgICAgICYsCiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1iZzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgICAgICYsCiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1kaXNhYmxlZC1jb2xvcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstZGlzYWJsZWQtYmc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKCiAgLy8gTGlua3MgaW4gbmF2YmFycwogIC8vCiAgLy8gQWRkIGEgY2xhc3MgdG8gZW5zdXJlIGxpbmtzIG91dHNpZGUgdGhlIG5hdmJhciBuYXYgYXJlIGNvbG9yZWQgY29ycmVjdGx5LgoKICAubmF2YmFyLWxpbmsgewogICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOwogICAgJjpob3ZlciB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjsKICAgIH0KICB9Cgp9CgovLyBJbnZlcnNlIG5hdmJhcgoKLm5hdmJhci1pbnZlcnNlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtYmc7CiAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtYm9yZGVyOwoKICAubmF2YmFyLWJyYW5kIHsKICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtYnJhbmQtY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtYnJhbmQtaG92ZXItY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1icmFuZC1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uYXZiYXItdGV4dCB7CiAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWNvbG9yOwogIH0KCiAgLm5hdmJhci1uYXYgewogICAgPiBsaSA+IGEgewogICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I7CgogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItYmc7CiAgICAgIH0KICAgIH0KICAgID4gLmFjdGl2ZSA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWFjdGl2ZS1iZzsKICAgICAgfQogICAgfQogICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWJnOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBEYXJrZW4gdGhlIHJlc3BvbnNpdmUgbmF2IHRvZ2dsZQogIC5uYXZiYXItdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogQG5hdmJhci1pbnZlcnNlLXRvZ2dsZS1ib3JkZXItY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS10b2dnbGUtaG92ZXItYmc7CiAgICB9CiAgICAuaWNvbi1iYXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtdG9nZ2xlLWljb24tYmFyLWJnOwogICAgfQogIH0KCiAgLm5hdmJhci1jb2xsYXBzZSwKICAubmF2YmFyLWZvcm0gewogICAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQG5hdmJhci1pbnZlcnNlLWJnLCA3JSk7CiAgfQoKICAvLyBEcm9wZG93bnMKICAubmF2YmFyLW5hdiB7CiAgICA+IC5vcGVuID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWFjdGl2ZS1iZzsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOwogICAgICB9CiAgICB9CgogICAgQG1lZGlhIChtYXgtd2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQtbWF4KSB7CiAgICAgIC8vIERyb3Bkb3ducyBnZXQgY3VzdG9tIGRpc3BsYXkKICAgICAgLm9wZW4gLmRyb3Bkb3duLW1lbnUgewogICAgICAgID4gLmRyb3Bkb3duLWhlYWRlciB7CiAgICAgICAgICBib3JkZXItY29sb3I6IEBuYXZiYXItaW52ZXJzZS1ib3JkZXI7CiAgICAgICAgfQogICAgICAgIC5kaXZpZGVyIHsKICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1ib3JkZXI7CiAgICAgICAgfQogICAgICAgID4gbGkgPiBhIHsKICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1jb2xvcjsKICAgICAgICAgICY6aG92ZXIsCiAgICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWhvdmVyLWNvbG9yOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1iZzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgPiAuYWN0aXZlID4gYSB7CiAgICAgICAgICAmLAogICAgICAgICAgJjpob3ZlciwKICAgICAgICAgICY6Zm9jdXMgewogICAgICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtYmc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgID4gLmRpc2FibGVkID4gYSB7CiAgICAgICAgICAmLAogICAgICAgICAgJjpob3ZlciwKICAgICAgICAgICY6Zm9jdXMgewogICAgICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWJnOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KCiAgLm5hdmJhci1saW5rIHsKICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1jb2xvcjsKICAgICY6aG92ZXIgewogICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I7CiAgICB9CiAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/navs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTmF2cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhc2UgY2xhc3MKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5uYXYgewogIG1hcmdpbi1ib3R0b206IDA7CiAgcGFkZGluZy1sZWZ0OiAwOyAvLyBPdmVycmlkZSBkZWZhdWx0IHVsL29sCiAgbGlzdC1zdHlsZTogbm9uZTsKICAmOmV4dGVuZCguY2xlYXJmaXggYWxsKTsKCiAgPiBsaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKCiAgICA+IGEgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwYWRkaW5nOiBAbmF2LWxpbmstcGFkZGluZzsKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXYtbGluay1ob3Zlci1iZzsKICAgICAgfQogICAgfQoKICAgIC8vIERpc2FibGVkIHN0YXRlIHNldHMgdGV4dCB0byBncmF5IGFuZCBudWtlcyBob3Zlci90YWIgZWZmZWN0cwogICAgJi5kaXNhYmxlZCA+IGEgewogICAgICBjb2xvcjogQG5hdi1kaXNhYmxlZC1saW5rLWNvbG9yOwoKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXYtZGlzYWJsZWQtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQogICAgfQogIH0KCiAgLy8gT3BlbiBkcm9wZG93bnMKICAub3BlbiA+IGEgewogICAgJiwKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdi1saW5rLWhvdmVyLWJnOwogICAgICBib3JkZXItY29sb3I6IEBsaW5rLWNvbG9yOwogICAgfQogIH0KCiAgLy8gTmF2IGRpdmlkZXJzIChkZXByZWNhdGVkIHdpdGggdjMuMC4xKQogIC8vCiAgLy8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdjMgd2l0aCB0aGUgZHJvcHBpbmcgb2YgYC5uYXYtbGlzdGAsIGJ1dAogIC8vIHdlIG1pc3NlZCBpdC4gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgdGhpcyBhbnl3aGVyZSwgYnV0IGluIHRoZSBpbnRlcmVzdAogIC8vIG9mIG1haW50YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaW4gY2FzZSB5b3UgdXNlIGl0LCBpdCdzIGRlcHJlY2F0ZWQuCiAgLm5hdi1kaXZpZGVyIHsKICAgIC5uYXYtZGl2aWRlcigpOwogIH0KCiAgLy8gUHJldmVudCBJRTggZnJvbSBtaXNwbGFjaW5nIGltZ3MKICAvLwogIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9pc3N1ZXMvOTg0I2lzc3VlY29tbWVudC0zOTg1OTg5CiAgPiBsaSA+IGEgPiBpbWcgewogICAgbWF4LXdpZHRoOiBub25lOwogIH0KfQoKCi8vIFRhYnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gR2l2ZSB0aGUgdGFicyBzb21ldGhpbmcgdG8gc2l0IG9uCi5uYXYtdGFicyB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBuYXYtdGFicy1ib3JkZXItY29sb3I7CiAgPiBsaSB7CiAgICBmbG9hdDogbGVmdDsKICAgIC8vIE1ha2UgdGhlIGxpc3QtaXRlbXMgb3ZlcmxheSB0aGUgYm90dG9tIGJvcmRlcgogICAgbWFyZ2luLWJvdHRvbTogLTFweDsKCiAgICAvLyBBY3R1YWwgdGFicyAoYXMgbGlua3MpCiAgICA+IGEgewogICAgICBtYXJnaW4tcmlnaHQ6IDJweDsKICAgICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZSBAYm9yZGVyLXJhZGl1cy1iYXNlIDAgMDsKICAgICAgJjpob3ZlciB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiBAbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3IgQG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yIEBuYXYtdGFicy1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KCiAgICAvLyBBY3RpdmUgc3RhdGUsIGFuZCBpdHMgOmhvdmVyIHRvIG92ZXJyaWRlIG5vcm1hbCA6aG92ZXIKICAgICYuYWN0aXZlID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2LXRhYnMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CiAgICB9CiAgfQogIC8vIHB1bGxpbmcgdGhpcyBpbiBtYWlubHkgZm9yIGxlc3Mgc2hvcnRoYW5kCiAgJi5uYXYtanVzdGlmaWVkIHsKICAgIC5uYXYtanVzdGlmaWVkKCk7CiAgICAubmF2LXRhYnMtanVzdGlmaWVkKCk7CiAgfQp9CgoKLy8gUGlsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoubmF2LXBpbGxzIHsKICA+IGxpIHsKICAgIGZsb2F0OiBsZWZ0OwoKICAgIC8vIExpbmtzIHJlbmRlcmVkIGFzIHBpbGxzCiAgICA+IGEgewogICAgICBib3JkZXItcmFkaXVzOiBAbmF2LXBpbGxzLWJvcmRlci1yYWRpdXM7CiAgICB9CiAgICArIGxpIHsKICAgICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgIH0KCiAgICAvLyBBY3RpdmUgc3RhdGUKICAgICYuYWN0aXZlID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc7CiAgICAgIH0KICAgIH0KICB9Cn0KCgovLyBTdGFja2VkIHBpbGxzCi5uYXYtc3RhY2tlZCB7CiAgPiBsaSB7CiAgICBmbG9hdDogbm9uZTsKICAgICsgbGkgewogICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAwOyAvLyBubyBuZWVkIGZvciB0aGlzIGdhcCBiZXR3ZWVuIG5hdiBpdGVtcwogICAgfQogIH0KfQoKCi8vIE5hdiB2YXJpYXRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBKdXN0aWZpZWQgbmF2IGxpbmtzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5uYXYtanVzdGlmaWVkIHsKICB3aWR0aDogMTAwJTsKCiAgPiBsaSB7CiAgICBmbG9hdDogbm9uZTsKICAgICA+IGEgewogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIH0KICB9CgogID4gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51IHsKICAgIHRvcDogYXV0bzsKICAgIGxlZnQ6IGF1dG87CiAgfQoKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAgID4gbGkgewogICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgICB3aWR0aDogMSU7CiAgICAgID4gYSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgfQogICAgfQogIH0KfQoKLy8gTW92ZSBib3JkZXJzIHRvIGFuY2hvcnMgaW5zdGVhZCBvZiBib3R0b20gb2YgbGlzdAovLwovLyBNaXhpbiBmb3IgYWRkaW5nIG9uIHRvcCB0aGUgc2hhcmVkIGAubmF2LWp1c3RpZmllZGAgc3R5bGVzIGZvciBvdXIgdGFicwoubmF2LXRhYnMtanVzdGlmaWVkIHsKICBib3JkZXItYm90dG9tOiAwOwoKICA+IGxpID4gYSB7CiAgICAvLyBPdmVycmlkZSBtYXJnaW4gZnJvbSAubmF2LXRhYnMKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CiAgfQoKICA+IC5hY3RpdmUgPiBhLAogID4gLmFjdGl2ZSA+IGE6aG92ZXIsCiAgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgICBib3JkZXI6IDFweCBzb2xpZCBAbmF2LXRhYnMtanVzdGlmaWVkLWxpbmstYm9yZGVyLWNvbG9yOwogIH0KCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICA+IGxpID4gYSB7CiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAbmF2LXRhYnMtanVzdGlmaWVkLWxpbmstYm9yZGVyLWNvbG9yOwogICAgICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlIEBib3JkZXItcmFkaXVzLWJhc2UgMCAwOwogICAgfQogICAgPiAuYWN0aXZlID4gYSwKICAgID4gLmFjdGl2ZSA+IGE6aG92ZXIsCiAgICA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQG5hdi10YWJzLWp1c3RpZmllZC1hY3RpdmUtbGluay1ib3JkZXItY29sb3I7CiAgICB9CiAgfQp9CgoKLy8gVGFiYmFibGUgdGFicwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBIaWRlIHRhYmJhYmxlIHBhbmVzIHRvIHN0YXJ0LCBzaG93IHRoZW0gd2hlbiBgLmFjdGl2ZWAKLnRhYi1jb250ZW50IHsKICA+IC50YWItcGFuZSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KICA+IC5hY3RpdmUgewogICAgZGlzcGxheTogYmxvY2s7CiAgfQp9CgoKLy8gRHJvcGRvd25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFNwZWNpZmljIGRyb3Bkb3ducwoubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnUgewogIC8vIG1ha2UgZHJvcGRvd24gYm9yZGVyIG92ZXJsYXAgdGFiIGJvcmRlcgogIG1hcmdpbi10b3A6IC0xcHg7CiAgLy8gUmVtb3ZlIHRoZSB0b3Agcm91bmRlZCBjb3JuZXJzIGhlcmUgc2luY2UgdGhlcmUgaXMgYSBoYXJkIGVkZ2UgYWJvdmUgdGhlIG1lbnUKICAuYm9yZGVyLXRvcC1yYWRpdXMoMCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/normalize.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovCgovLwovLyAxLiBTZXQgZGVmYXVsdCBmb250IGZhbWlseSB0byBzYW5zLXNlcmlmLgovLyAyLiBQcmV2ZW50IGlPUyB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZSwgd2l0aG91dCBkaXNhYmxpbmcKLy8gICAgdXNlciB6b29tLgovLwoKaHRtbCB7CiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8vIDEKICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gMgogIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gMgp9CgovLwovLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uCi8vCgpib2R5IHsKICBtYXJnaW46IDA7Cn0KCi8vIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnMKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS4KLy8KCmFydGljbGUsCmFzaWRlLApkZXRhaWxzLApmaWdjYXB0aW9uLApmaWd1cmUsCmZvb3RlciwKaGVhZGVyLApoZ3JvdXAsCm1haW4sCm5hdiwKc2VjdGlvbiwKc3VtbWFyeSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi8vCi8vIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuCi8vIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS4KLy8KCmF1ZGlvLApjYW52YXMsCnByb2dyZXNzLAp2aWRlbyB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvLyAxCiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvLyAyCn0KCi8vCi8vIFByZXZlbnQgbW9kZXJuIGJyb3dzZXJzIGZyb20gZGlzcGxheWluZyBgYXVkaW9gIHdpdGhvdXQgY29udHJvbHMuCi8vIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuCi8vCgphdWRpbzpub3QoW2NvbnRyb2xzXSkgewogIGRpc3BsYXk6IG5vbmU7CiAgaGVpZ2h0OiAwOwp9CgovLwovLyBBZGRyZXNzIGBbaGlkZGVuXWAgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuCi8vIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLgovLwoKW2hpZGRlbl0sCnRlbXBsYXRlIHsKICBkaXNwbGF5OiBub25lOwp9CgovLyBMaW5rcwovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuCi8vCgphIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLy8KLy8gSW1wcm92ZSByZWFkYWJpbGl0eSB3aGVuIGZvY3VzZWQgYW5kIGFsc28gbW91c2UgaG92ZXJlZCBpbiBhbGwgYnJvd3NlcnMuCi8vCgphOmFjdGl2ZSwKYTpob3ZlciB7CiAgb3V0bGluZTogMDsKfQoKLy8gVGV4dC1sZXZlbCBzZW1hbnRpY3MKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzksIFNhZmFyaSA1LCBhbmQgQ2hyb21lLgovLwoKYWJiclt0aXRsZV0gewogIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7Cn0KCi8vCi8vIEFkZHJlc3Mgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSA1LCBhbmQgQ2hyb21lLgovLwoKYiwKc3Ryb25nIHsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLy8KLy8gQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSA1IGFuZCBDaHJvbWUuCi8vCgpkZm4gewogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLy8KLy8gQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYAovLyBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmkgNSwgYW5kIENocm9tZS4KLy8KCmgxIHsKICBmb250LXNpemU6IDJlbTsKICBtYXJnaW46IDAuNjdlbSAwOwp9CgovLwovLyBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LgovLwoKbWFyayB7CiAgYmFja2dyb3VuZDogI2ZmMDsKICBjb2xvcjogIzAwMDsKfQoKLy8KLy8gQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuCi8vCgpzbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7Cn0KCi8vCi8vIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy4KLy8KCnN1YiwKc3VwIHsKICBmb250LXNpemU6IDc1JTsKICBsaW5lLWhlaWdodDogMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwp9CgpzdXAgewogIHRvcDogLTAuNWVtOwp9CgpzdWIgewogIGJvdHRvbTogLTAuMjVlbTsKfQoKLy8gRW1iZWRkZWQgY29udGVudAovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkuCi8vCgppbWcgewogIGJvcmRlcjogMDsKfQoKLy8KLy8gQ29ycmVjdCBvdmVyZmxvdyBkaXNwbGF5ZWQgb2RkbHkgaW4gSUUgOS4KLy8KCnN2Zzpub3QoOnJvb3QpIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgovLyBHcm91cGluZyBjb250ZW50Ci8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLwovLyBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaSA1LgovLwoKZmlndXJlIHsKICBtYXJnaW46IDFlbSA0MHB4Owp9CgovLwovLyBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuCi8vCgpociB7CiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBoZWlnaHQ6IDA7Cn0KCi8vCi8vIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLgovLwoKcHJlIHsKICBvdmVyZmxvdzogYXV0bzsKfQoKLy8KLy8gQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLgovLwoKY29kZSwKa2JkLApwcmUsCnNhbXAgewogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsKICBmb250LXNpemU6IDFlbTsKfQoKLy8gRm9ybXMKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkCi8vIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC4KLy8KCi8vCi8vIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC4KLy8gICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuCi8vIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuCi8vIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpIDUsIGFuZCBDaHJvbWUuCi8vCgpidXR0b24sCmlucHV0LApvcHRncm91cCwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgY29sb3I6IGluaGVyaXQ7IC8vIDEKICBmb250OiBpbmhlcml0OyAvLyAyCiAgbWFyZ2luOiAwOyAvLyAzCn0KCi8vCi8vIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLgovLwoKYnV0dG9uIHsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQoKLy8KLy8gQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLgovLyBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLgovLyBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgrLCBhbmQgT3BlcmEKLy8gQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LgovLwoKYnV0dG9uLApzZWxlY3QgewogIHRleHQtdHJhbnNmb3JtOiBub25lOwp9CgovLwovLyAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYAovLyAgICBhbmQgYHZpZGVvYCBjb250cm9scy4KLy8gMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLgovLyAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZQovLyAgICBgaW5wdXRgIGFuZCBvdGhlcnMuCi8vCgpidXR0b24sCmh0bWwgaW5wdXRbdHlwZT0iYnV0dG9uIl0sIC8vIDEKaW5wdXRbdHlwZT0icmVzZXQiXSwKaW5wdXRbdHlwZT0ic3VibWl0Il0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyCiAgY3Vyc29yOiBwb2ludGVyOyAvLyAzCn0KCi8vCi8vIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuCi8vCgpidXR0b25bZGlzYWJsZWRdLApodG1sIGlucHV0W2Rpc2FibGVkXSB7CiAgY3Vyc29yOiBkZWZhdWx0Owp9CgovLwovLyBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuCi8vCgpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsCmlucHV0OjotbW96LWZvY3VzLWlubmVyIHsKICBib3JkZXI6IDA7CiAgcGFkZGluZzogMDsKfQoKLy8KLy8gQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpbgovLyB0aGUgVUEgc3R5bGVzaGVldC4KLy8KCmlucHV0IHsKICBsaW5lLWhlaWdodDogbm9ybWFsOwp9CgovLwovLyBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuCi8vIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguCi8vCi8vIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuCi8vIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuCi8vCgppbnB1dFt0eXBlPSJjaGVja2JveCJdLAppbnB1dFt0eXBlPSJyYWRpbyJdIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxCiAgcGFkZGluZzogMDsgLy8gMgp9CgovLwovLyBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpbgovLyBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZQovLyBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuCi8vCgppbnB1dFt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwKaW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogIGhlaWdodDogYXV0bzsKfQoKLy8KLy8gMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIDUgYW5kIENocm9tZS4KLy8gMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lCi8vICAgIChpbmNsdWRlIGAtbW96YCB0byBmdXR1cmUtcHJvb2YpLgovLwoKaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvLyAxCiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvLyAyCiAgYm94LXNpemluZzogY29udGVudC1ib3g7Cn0KCi8vCi8vIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLgovLyBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzCi8vIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS4KLy8KCmlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLAppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgovLwovLyBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuCi8vCgpmaWVsZHNldCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsKICBtYXJnaW46IDAgMnB4OwogIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsKfQoKLy8KLy8gMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LgovLyAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuCi8vCgpsZWdlbmQgewogIGJvcmRlcjogMDsgLy8gMQogIHBhZGRpbmc6IDA7IC8vIDIKfQoKLy8KLy8gUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS4KLy8KCnRleHRhcmVhIHsKICBvdmVyZmxvdzogYXV0bzsKfQoKLy8KLy8gRG9uJ3QgaW5oZXJpdCB0aGUgYGZvbnQtd2VpZ2h0YCAoYXBwbGllZCBieSBhIHJ1bGUgYWJvdmUpLgovLyBOT1RFOiB0aGUgZGVmYXVsdCBjYW5ub3Qgc2FmZWx5IGJlIGNoYW5nZWQgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC4KLy8KCm9wdGdyb3VwIHsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLy8gVGFibGVzCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLwovLyBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuCi8vCgp0YWJsZSB7CiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICBib3JkZXItc3BhY2luZzogMDsKfQoKdGQsCnRoIHsKICBwYWRkaW5nOiAwOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/pager.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFnZXIgcGFnaW5hdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi5wYWdlciB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgJjpleHRlbmQoLmNsZWFyZml4IGFsbCk7CiAgbGkgewogICAgZGlzcGxheTogaW5saW5lOwogICAgPiBhLAogICAgPiBzcGFuIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2VyLWJnOwogICAgICBib3JkZXI6IDFweCBzb2xpZCBAcGFnZXItYm9yZGVyOwogICAgICBib3JkZXItcmFkaXVzOiBAcGFnZXItYm9yZGVyLXJhZGl1czsKICAgIH0KCiAgICA+IGE6aG92ZXIsCiAgICA+IGE6Zm9jdXMgewogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwYWdlci1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uZXh0IHsKICAgID4gYSwKICAgID4gc3BhbiB7CiAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICB9CgogIC5wcmV2aW91cyB7CiAgICA+IGEsCiAgICA+IHNwYW4gewogICAgICBmbG9hdDogbGVmdDsKICAgIH0KICB9CgogIC5kaXNhYmxlZCB7CiAgICA+IGEsCiAgICA+IGE6aG92ZXIsCiAgICA+IGE6Zm9jdXMsCiAgICA+IHNwYW4gewogICAgICBjb2xvcjogQHBhZ2VyLWRpc2FibGVkLWNvbG9yOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnZXItYmc7CiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICB9CiAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/pagination.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFnaW5hdGlvbiAobXVsdGlwbGUgcGFnZXMpCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5wYWdpbmF0aW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIDA7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmU7IC8vIFJlbW92ZSBsaXN0LXN0eWxlIGFuZCBibG9jay1sZXZlbCBkZWZhdWx0cwogICAgPiBhLAogICAgPiBzcGFuIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBmbG9hdDogbGVmdDsgLy8gQ29sbGFwc2Ugd2hpdGUtc3BhY2UKICAgICAgcGFkZGluZzogQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCBAcGFkZGluZy1iYXNlLWhvcml6b250YWw7CiAgICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBjb2xvcjogQHBhZ2luYXRpb24tY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwYWdpbmF0aW9uLWJnOwogICAgICBib3JkZXI6IDFweCBzb2xpZCBAcGFnaW5hdGlvbi1ib3JkZXI7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgfQogICAgJjpmaXJzdC1jaGlsZCB7CiAgICAgID4gYSwKICAgICAgPiBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICAuYm9yZGVyLWxlZnQtcmFkaXVzKEBib3JkZXItcmFkaXVzLWJhc2UpOwogICAgICB9CiAgICB9CiAgICAmOmxhc3QtY2hpbGQgewogICAgICA+IGEsCiAgICAgID4gc3BhbiB7CiAgICAgICAgLmJvcmRlci1yaWdodC1yYWRpdXMoQGJvcmRlci1yYWRpdXMtYmFzZSk7CiAgICAgIH0KICAgIH0KICB9CgogID4gbGkgPiBhLAogID4gbGkgPiBzcGFuIHsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgY29sb3I6IEBwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnaW5hdGlvbi1ob3Zlci1iZzsKICAgICAgYm9yZGVyLWNvbG9yOiBAcGFnaW5hdGlvbi1ob3Zlci1ib3JkZXI7CiAgICB9CiAgfQoKICA+IC5hY3RpdmUgPiBhLAogID4gLmFjdGl2ZSA+IHNwYW4gewogICAgJiwKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgei1pbmRleDogMjsKICAgICAgY29sb3I6IEBwYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2luYXRpb24tYWN0aXZlLWJnOwogICAgICBib3JkZXItY29sb3I6IEBwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXI7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KICB9CgogID4gLmRpc2FibGVkIHsKICAgID4gc3BhbiwKICAgID4gc3Bhbjpob3ZlciwKICAgID4gc3Bhbjpmb2N1cywKICAgID4gYSwKICAgID4gYTpob3ZlciwKICAgID4gYTpmb2N1cyB7CiAgICAgIGNvbG9yOiBAcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2luYXRpb24tZGlzYWJsZWQtYmc7CiAgICAgIGJvcmRlci1jb2xvcjogQHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyOwogICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgfQogIH0KfQoKLy8gU2l6aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBMYXJnZQoucGFnaW5hdGlvbi1sZyB7CiAgLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy1sYXJnZS12ZXJ0aWNhbDsgQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9CgovLyBTbWFsbAoucGFnaW5hdGlvbi1zbSB7CiAgLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGJvcmRlci1yYWRpdXMtc21hbGwpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/panels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFuZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBjbGFzcwoucGFuZWwgewogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFuZWwtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQHBhbmVsLWJvcmRlci1yYWRpdXM7CiAgLmJveC1zaGFkb3coMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KSk7Cn0KCi8vIFBhbmVsIGNvbnRlbnRzCi5wYW5lbC1ib2R5IHsKICBwYWRkaW5nOiBAcGFuZWwtYm9keS1wYWRkaW5nOwogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwp9CgoKLy8gTGlzdCBncm91cHMgaW4gcGFuZWxzCi8vCi8vIEJ5IGRlZmF1bHQsIHNwYWNlIG91dCBsaXN0IGdyb3VwIGNvbnRlbnQgZnJvbSBwYW5lbCBoZWFkaW5ncyB0byBhY2NvdW50IGZvcgovLyBhbnkga2luZCBvZiBjdXN0b20gY29udGVudCBiZXR3ZWVuIHRoZSB0d28uCgoucGFuZWwgewogID4gLmxpc3QtZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIC5saXN0LWdyb3VwLWl0ZW0gewogICAgICBib3JkZXItd2lkdGg6IDFweCAwOwogICAgICBib3JkZXItcmFkaXVzOiAwOwogICAgICAmOmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItdG9wOiAwOwogICAgICB9CiAgICAgICY6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDsKICAgICAgfQogICAgfQogICAgLy8gQWRkIGJvcmRlciB0b3AgcmFkaXVzIGZvciBmaXJzdCBvbmUKICAgICY6Zmlyc3QtY2hpbGQgewogICAgICAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICAgICAgICAuYm9yZGVyLXRvcC1yYWRpdXMoKEBwYW5lbC1ib3JkZXItcmFkaXVzIC0gMSkpOwogICAgICB9CiAgICB9CiAgICAvLyBBZGQgYm9yZGVyIGJvdHRvbSByYWRpdXMgZm9yIGxhc3Qgb25lCiAgICAmOmxhc3QtY2hpbGQgewogICAgICAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewogICAgICAgIC5ib3JkZXItYm90dG9tLXJhZGl1cygoQHBhbmVsLWJvcmRlci1yYWRpdXMgLSAxKSk7CiAgICAgIH0KICAgIH0KICB9Cn0KLy8gQ29sbGFwc2Ugc3BhY2UgYmV0d2VlbiB3aGVuIHRoZXJlJ3Mgbm8gYWRkaXRpb25hbCBjb250ZW50LgoucGFuZWwtaGVhZGluZyArIC5saXN0LWdyb3VwIHsKICAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgfQp9CgoKLy8gVGFibGVzIGluIHBhbmVscwovLwovLyBQbGFjZSBhIG5vbi1ib3JkZXJlZCBgLnRhYmxlYCB3aXRoaW4gYSBwYW5lbCAobm90IHdpdGhpbiBhIGAucGFuZWwtYm9keWApIGFuZAovLyB3YXRjaCBpdCBnbyBmdWxsIHdpZHRoLgoKLnBhbmVsIHsKICA+IC50YWJsZSwKICA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC8vIEFkZCBib3JkZXIgdG9wIHJhZGl1cyBmb3IgZmlyc3Qgb25lCiAgPiAudGFibGU6Zmlyc3QtY2hpbGQsCiAgPiAudGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZCA+IC50YWJsZTpmaXJzdC1jaGlsZCB7CiAgICA+IHRoZWFkOmZpcnN0LWNoaWxkLAogICAgPiB0Ym9keTpmaXJzdC1jaGlsZCB7CiAgICAgID4gdHI6Zmlyc3QtY2hpbGQgewogICAgICAgIHRkOmZpcnN0LWNoaWxkLAogICAgICAgIHRoOmZpcnN0LWNoaWxkIHsKICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpOwogICAgICAgIH0KICAgICAgICB0ZDpsYXN0LWNoaWxkLAogICAgICAgIHRoOmxhc3QtY2hpbGQgewogICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICAvLyBBZGQgYm9yZGVyIGJvdHRvbSByYWRpdXMgZm9yIGxhc3Qgb25lCiAgPiAudGFibGU6bGFzdC1jaGlsZCwKICA+IC50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQgPiAudGFibGU6bGFzdC1jaGlsZCB7CiAgICA+IHRib2R5Omxhc3QtY2hpbGQsCiAgICA+IHRmb290Omxhc3QtY2hpbGQgewogICAgICA+IHRyOmxhc3QtY2hpbGQgewogICAgICAgIHRkOmZpcnN0LWNoaWxkLAogICAgICAgIHRoOmZpcnN0LWNoaWxkIHsKICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpOwogICAgICAgIH0KICAgICAgICB0ZDpsYXN0LWNoaWxkLAogICAgICAgIHRoOmxhc3QtY2hpbGQgewogICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICA+IC5wYW5lbC1ib2R5ICsgLnRhYmxlLAogID4gLnBhbmVsLWJvZHkgKyAudGFibGUtcmVzcG9uc2l2ZSB7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKICB9CiAgPiAudGFibGUgPiB0Ym9keTpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRoLAogID4gLnRhYmxlID4gdGJvZHk6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0ZCB7CiAgICBib3JkZXItdG9wOiAwOwogIH0KICA+IC50YWJsZS1ib3JkZXJlZCwKICA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICAgID4gdGhlYWQsCiAgICA+IHRib2R5LAogICAgPiB0Zm9vdCB7CiAgICAgID4gdHIgewogICAgICAgID4gdGg6Zmlyc3QtY2hpbGQsCiAgICAgICAgPiB0ZDpmaXJzdC1jaGlsZCB7CiAgICAgICAgICBib3JkZXItbGVmdDogMDsKICAgICAgICB9CiAgICAgICAgPiB0aDpsYXN0LWNoaWxkLAogICAgICAgID4gdGQ6bGFzdC1jaGlsZCB7CiAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7CiAgICAgICAgfQogICAgICAgICY6Zmlyc3QtY2hpbGQgPiB0aCwKICAgICAgICAmOmZpcnN0LWNoaWxkID4gdGQgewogICAgICAgICAgYm9yZGVyLXRvcDogMDsKICAgICAgICB9CiAgICAgICAgJjpsYXN0LWNoaWxkID4gdGgsCiAgICAgICAgJjpsYXN0LWNoaWxkID4gdGQgewogICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CiAgPiAudGFibGUtcmVzcG9uc2l2ZSB7CiAgICBib3JkZXI6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KfQoKCi8vIE9wdGlvbmFsIGhlYWRpbmcKLnBhbmVsLWhlYWRpbmcgewogIHBhZGRpbmc6IDEwcHggMTVweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgLmJvcmRlci10b3AtcmFkaXVzKChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpKTsKCiAgPiAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9Cn0KCi8vIFdpdGhpbiBoZWFkaW5nLCBzdHJpcCBhbnkgYGgqYCB0YWcgb2YgaXRzIGRlZmF1bHQgbWFyZ2lucyBmb3Igc3BhY2luZy4KLnBhbmVsLXRpdGxlIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiBjZWlsKChAZm9udC1zaXplLWJhc2UgKiAxLjEyNSkpOwogIGNvbG9yOiBpbmhlcml0OwoKICA+IGEgewogICAgY29sb3I6IGluaGVyaXQ7CiAgfQp9CgovLyBPcHRpb25hbCBmb290ZXIgKHN0YXlzIGdyYXkgaW4gZXZlcnkgbW9kaWZpZXIgY2xhc3MpCi5wYW5lbC1mb290ZXIgewogIHBhZGRpbmc6IDEwcHggMTVweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFuZWwtZm9vdGVyLWJnOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCBAcGFuZWwtaW5uZXItYm9yZGVyOwogIC5ib3JkZXItYm90dG9tLXJhZGl1cygoQHBhbmVsLWJvcmRlci1yYWRpdXMgLSAxKSk7Cn0KCgovLyBDb2xsYXBzYWJsZSBwYW5lbHMgKGFrYSwgYWNjb3JkaW9uKQovLwovLyBXcmFwIGEgc2VyaWVzIG9mIHBhbmVscyBpbiBgLnBhbmVsLWdyb3VwYCB0byB0dXJuIHRoZW0gaW50byBhbiBhY2NvcmRpb24gd2l0aAovLyB0aGUgaGVscCBvZiBvdXIgY29sbGFwc2UgSmF2YVNjcmlwdCBwbHVnaW4uCgoucGFuZWwtZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKCiAgLy8gVGlnaHRlbiB1cCBtYXJnaW4gc28gaXQncyBvbmx5IGJldHdlZW4gcGFuZWxzCiAgLnBhbmVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBib3JkZXItcmFkaXVzOiBAcGFuZWwtYm9yZGVyLXJhZGl1czsKICAgIG92ZXJmbG93OiBoaWRkZW47IC8vIGNyb3AgY29udGVudHMgd2hlbiBjb2xsYXBzZWQKICAgICsgLnBhbmVsIHsKICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgfQogIH0KCiAgLnBhbmVsLWhlYWRpbmcgewogICAgYm9yZGVyLWJvdHRvbTogMDsKICAgICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBwYW5lbC1pbm5lci1ib3JkZXI7CiAgICB9CiAgfQogIC5wYW5lbC1mb290ZXIgewogICAgYm9yZGVyLXRvcDogMDsKICAgICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwYW5lbC1pbm5lci1ib3JkZXI7CiAgICB9CiAgfQp9CgoKLy8gQ29udGV4dHVhbCB2YXJpYXRpb25zCi5wYW5lbC1kZWZhdWx0IHsKICAucGFuZWwtdmFyaWFudChAcGFuZWwtZGVmYXVsdC1ib3JkZXI7IEBwYW5lbC1kZWZhdWx0LXRleHQ7IEBwYW5lbC1kZWZhdWx0LWhlYWRpbmctYmc7IEBwYW5lbC1kZWZhdWx0LWJvcmRlcik7Cn0KLnBhbmVsLXByaW1hcnkgewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC1wcmltYXJ5LWJvcmRlcjsgQHBhbmVsLXByaW1hcnktdGV4dDsgQHBhbmVsLXByaW1hcnktaGVhZGluZy1iZzsgQHBhbmVsLXByaW1hcnktYm9yZGVyKTsKfQoucGFuZWwtc3VjY2VzcyB7CiAgLnBhbmVsLXZhcmlhbnQoQHBhbmVsLXN1Y2Nlc3MtYm9yZGVyOyBAcGFuZWwtc3VjY2Vzcy10ZXh0OyBAcGFuZWwtc3VjY2Vzcy1oZWFkaW5nLWJnOyBAcGFuZWwtc3VjY2Vzcy1ib3JkZXIpOwp9Ci5wYW5lbC1pbmZvIHsKICAucGFuZWwtdmFyaWFudChAcGFuZWwtaW5mby1ib3JkZXI7IEBwYW5lbC1pbmZvLXRleHQ7IEBwYW5lbC1pbmZvLWhlYWRpbmctYmc7IEBwYW5lbC1pbmZvLWJvcmRlcik7Cn0KLnBhbmVsLXdhcm5pbmcgewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC13YXJuaW5nLWJvcmRlcjsgQHBhbmVsLXdhcm5pbmctdGV4dDsgQHBhbmVsLXdhcm5pbmctaGVhZGluZy1iZzsgQHBhbmVsLXdhcm5pbmctYm9yZGVyKTsKfQoucGFuZWwtZGFuZ2VyIHsKICAucGFuZWwtdmFyaWFudChAcGFuZWwtZGFuZ2VyLWJvcmRlcjsgQHBhbmVsLWRhbmdlci10ZXh0OyBAcGFuZWwtZGFuZ2VyLWhlYWRpbmctYmc7IEBwYW5lbC1kYW5nZXItYm9yZGVyKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/popovers.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUG9wb3ZlcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoucG9wb3ZlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IEB6aW5kZXgtcG9wb3ZlcjsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogQHBvcG92ZXItbWF4LXdpZHRoOwogIHBhZGRpbmc6IDFweDsKICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBSZXNldCBnaXZlbiBuZXcgaW5zZXJ0aW9uIG1ldGhvZAogIGJhY2tncm91bmQtY29sb3I6IEBwb3BvdmVyLWJnOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgQHBvcG92ZXItZmFsbGJhY2stYm9yZGVyLWNvbG9yOwogIGJvcmRlcjogMXB4IHNvbGlkIEBwb3BvdmVyLWJvcmRlci1jb2xvcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKICAuYm94LXNoYWRvdygwIDVweCAxMHB4IHJnYmEoMCwwLDAsLjIpKTsKCiAgLy8gT3ZlcnJpZGVzIGZvciBwcm9wZXIgaW5zZXJ0aW9uCiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKCiAgLy8gT2Zmc2V0IHRoZSBwb3BvdmVyIHRvIGFjY291bnQgZm9yIHRoZSBwb3BvdmVyIGFycm93CiAgJi50b3AgICAgIHsgbWFyZ2luLXRvcDogLTEwcHg7IH0KICAmLnJpZ2h0ICAgeyBtYXJnaW4tbGVmdDogMTBweDsgfQogICYuYm90dG9tICB7IG1hcmdpbi10b3A6IDEwcHg7IH0KICAmLmxlZnQgICAgeyBtYXJnaW4tbGVmdDogLTEwcHg7IH0KfQoKLnBvcG92ZXItdGl0bGUgewogIG1hcmdpbjogMDsgLy8gcmVzZXQgaGVhZGluZyBtYXJnaW4KICBwYWRkaW5nOiA4cHggMTRweDsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGJhY2tncm91bmQtY29sb3I6IEBwb3BvdmVyLXRpdGxlLWJnOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oQHBvcG92ZXItdGl0bGUtYmcsIDUlKTsKICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMDsKfQoKLnBvcG92ZXItY29udGVudCB7CiAgcGFkZGluZzogOXB4IDE0cHg7Cn0KCi8vIEFycm93cwovLwovLyAuYXJyb3cgaXMgb3V0ZXIsIC5hcnJvdzphZnRlciBpcyBpbm5lcgoKLnBvcG92ZXIgLmFycm93IHsKICAmLAogICY6YWZ0ZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogIH0KfQoucG9wb3ZlciAuYXJyb3cgewogIGJvcmRlci13aWR0aDogQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7Cn0KLnBvcG92ZXIgLmFycm93OmFmdGVyIHsKICBib3JkZXItd2lkdGg6IEBwb3BvdmVyLWFycm93LXdpZHRoOwogIGNvbnRlbnQ6ICIiOwp9CgoucG9wb3ZlciB7CiAgJi50b3AgLmFycm93IHsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLXRvcC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I7CiAgICBib3R0b206IC1AcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiICI7CiAgICAgIGJvdHRvbTogMXB4OwogICAgICBtYXJnaW4tbGVmdDogLUBwb3BvdmVyLWFycm93LXdpZHRoOwogICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogICAgICBib3JkZXItdG9wLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1jb2xvcjsKICAgIH0KICB9CiAgJi5yaWdodCAuYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBtYXJnaW4tdG9wOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItbGVmdC13aWR0aDogMDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiICI7CiAgICAgIGxlZnQ6IDFweDsKICAgICAgYm90dG9tOiAtQHBvcG92ZXItYXJyb3ctd2lkdGg7CiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogICAgICBib3JkZXItcmlnaHQtY29sb3I6IEBwb3BvdmVyLWFycm93LWNvbG9yOwogICAgfQogIH0KICAmLmJvdHRvbSAuYXJyb3cgewogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC1AcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDsKICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1mYWxsYmFjay1jb2xvcjsgLy8gSUU4IGZhbGxiYWNrCiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjsKICAgIHRvcDogLUBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOwogICAgJjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICIgIjsKICAgICAgdG9wOiAxcHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAtQHBvcG92ZXItYXJyb3ctd2lkdGg7CiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBwb3BvdmVyLWFycm93LWNvbG9yOwogICAgfQogIH0KCiAgJi5sZWZ0IC5hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBtYXJnaW4tdG9wOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7CiAgICBib3JkZXItbGVmdC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLWxlZnQtY29sb3I6IEBwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOwogICAgJjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICIgIjsKICAgICAgcmlnaHQ6IDFweDsKICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgICBib3JkZXItbGVmdC1jb2xvcjogQHBvcG92ZXItYXJyb3ctY29sb3I7CiAgICAgIGJvdHRvbTogLUBwb3BvdmVyLWFycm93LXdpZHRoOwogICAgfQogIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/print.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQmFzaWMgcHJpbnQgc3R5bGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvY3NzL21haW4uY3NzCgpAbWVkaWEgcHJpbnQgewoKICAqIHsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zCiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogIH0KCiAgYSwKICBhOnZpc2l0ZWQgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQoKICBhW2hyZWZdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgKCIgYXR0cihocmVmKSAiKSI7CiAgfQoKICBhYmJyW3RpdGxlXTphZnRlciB7CiAgICBjb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKICB9CgogIC8vIERvbid0IHNob3cgbGlua3MgZm9yIGltYWdlcywgb3IgamF2YXNjcmlwdC9pbnRlcm5hbCBsaW5rcwogIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIsCiAgYVtocmVmXj0iIyJdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogIH0KCiAgcHJlLAogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CgogIHRoZWFkIHsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgLy8gaDVicC5jb20vdAogIH0KCiAgdHIsCiAgaW1nIHsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CgogIGltZyB7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICB9CgogIHAsCiAgaDIsCiAgaDMgewogICAgb3JwaGFuczogMzsKICAgIHdpZG93czogMzsKICB9CgogIGgyLAogIGgzIHsKICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOwogIH0KCiAgLy8gQ2hyb21lIChPU1gpIGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTI0NQogIC8vIE9uY2UgZml4ZWQsIHdlIGNhbiBqdXN0IHN0cmFpZ2h0IHVwIHJlbW92ZSB0aGlzLgogIHNlbGVjdCB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7CiAgfQoKICAvLyBCb290c3RyYXAgY29tcG9uZW50cwogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLnRhYmxlIHsKICAgIHRkLAogICAgdGggewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgICB9CiAgfQogIC5idG4sCiAgLmRyb3B1cCA+IC5idG4gewogICAgPiAuY2FyZXQgewogICAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7CiAgICB9CiAgfQogIC5sYWJlbCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogIH0KCiAgLnRhYmxlIHsKICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWJvcmRlcmVkIHsKICAgIHRoLAogICAgdGQgewogICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7CiAgICB9CiAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/progress-bars.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUHJvZ3Jlc3MgYmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhciBhbmltYXRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFdlYktpdApALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOyB9CiAgdG8gICAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KfQoKLy8gU3BlYyBhbmQgSUUxMCsKQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MHB4IDA7IH0KICB0byAgICB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfQp9CgoKCi8vIEJhciBpdHNlbGYKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gT3V0ZXIgY29udGFpbmVyCi5wcm9ncmVzcyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBoZWlnaHQ6IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYmFja2dyb3VuZC1jb2xvcjogQHByb2dyZXNzLWJnOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpKTsKfQoKLy8gQmFyIG9mIHByb2dyZXNzCi5wcm9ncmVzcy1iYXIgewogIGZsb2F0OiBsZWZ0OwogIHdpZHRoOiAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgY29sb3I6IEBwcm9ncmVzcy1iYXItY29sb3I7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IEBwcm9ncmVzcy1iYXItYmc7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwuMTUpKTsKICAudHJhbnNpdGlvbih3aWR0aCAuNnMgZWFzZSk7Cn0KCi8vIFN0cmlwZWQgYmFycwoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyIHsKICAjZ3JhZGllbnQgPiAuc3RyaXBlZCgpOwogIGJhY2tncm91bmQtc2l6ZTogNDBweCA0MHB4Owp9CgovLyBDYWxsIGFuaW1hdGlvbiBmb3IgdGhlIGFjdGl2ZSBvbmUKLnByb2dyZXNzLmFjdGl2ZSAucHJvZ3Jlc3MtYmFyIHsKICAuYW5pbWF0aW9uKHByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZSk7Cn0KCgoKLy8gVmFyaWF0aW9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogIC5wcm9ncmVzcy1iYXItdmFyaWFudChAcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MtYmcpOwp9CgoucHJvZ3Jlc3MtYmFyLWluZm8gewogIC5wcm9ncmVzcy1iYXItdmFyaWFudChAcHJvZ3Jlc3MtYmFyLWluZm8tYmcpOwp9CgoucHJvZ3Jlc3MtYmFyLXdhcm5pbmcgewogIC5wcm9ncmVzcy1iYXItdmFyaWFudChAcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmcpOwp9CgoucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgLnByb2dyZXNzLWJhci12YXJpYW50KEBwcm9ncmVzcy1iYXItZGFuZ2VyLWJnKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/responsive-utilities.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUmVzcG9uc2l2ZTogVXRpbGl0eSBjbGFzc2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gSUUxMCBpbiBXaW5kb3dzIChQaG9uZSkgOAovLwovLyBTdXBwb3J0IGZvciByZXNwb25zaXZlIHZpZXdzIHZpYSBtZWRpYSBxdWVyaWVzIGlzIGtpbmQgb2YgYm9ya2VkIGluIElFMTAsIGZvcgovLyBTdXJmYWNlL2Rlc2t0b3AgaW4gc3BsaXQgdmlldyBhbmQgZm9yIFdpbmRvd3MgUGhvbmUgOC4gVGhpcyBwYXJ0aWN1bGFyIGZpeAovLyBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgc25pcHBldCBvZiBKYXZhU2NyaXB0IHRvIHNuaWZmIHRoZSB1c2VyIGFnZW50IGFuZAovLyBhcHBseSBzb21lIGNvbmRpdGlvbmFsIENTUyB0byAqb25seSogdGhlIFN1cmZhY2UvZGVza3RvcCBXaW5kb3dzIDguIExvb2sgYXQKLy8gb3VyIEdldHRpbmcgU3RhcnRlZCBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgYnVnLgovLwovLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBmb2xsb3dpbmc6Ci8vCi8vIElzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzEwNDk3Ci8vIERvY3M6IGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2dldHRpbmctc3RhcnRlZC8jYnJvd3NlcnMKLy8gU291cmNlOiBodHRwOi8vdGlta2FkbGVjLmNvbS8yMDEyLzEwL2llMTAtc25hcC1tb2RlLWFuZC1yZXNwb25zaXZlLWRlc2lnbi8KCkAtbXMtdmlld3BvcnQgewogIHdpZHRoOiBkZXZpY2Utd2lkdGg7Cn0KCgovLyBWaXNpYmlsaXR5IHV0aWxpdGllcwoudmlzaWJsZS14cyB7CiAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CgogIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KfQoudmlzaWJsZS1zbSB7CiAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tc20tbWF4KSB7CiAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgfQp9Ci52aXNpYmxlLW1kIHsKICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICB9Cn0KLnZpc2libGUtbGcgewogIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwoKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICB9Cn0KCi5oaWRkZW4teHMgewogIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgfQp9Ci5oaWRkZW4tc20gewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tc20tbWF4KSB7CiAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICB9Cn0KLmhpZGRlbi1tZCB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KfQouaGlkZGVuLWxnIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KfQoKCi8vIFByaW50IHV0aWxpdGllcwovLwovLyBNZWRpYSBxdWVyaWVzIGFyZSBwbGFjZWQgb24gdGhlIGluc2lkZSB0byBiZSBtaXhpbi1mcmllbmRseS4KCi52aXNpYmxlLXByaW50IHsKICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKCiAgQG1lZGlhIHByaW50IHsKICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICB9Cn0KCi5oaWRkZW4tcHJpbnQgewogIEBtZWRpYSBwcmludCB7CiAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/scaffolding.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gU2NhZmZvbGRpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBSZXNldCB0aGUgYm94LXNpemluZwovLwovLyBIZWFkcyB1cCEgVGhpcyByZXNldCBtYXkgY2F1c2UgY29uZmxpY3RzIHdpdGggc29tZSB0aGlyZC1wYXJ0eSB3aWRnZXRzLgovLyBGb3IgcmVjb21tZW5kYXRpb25zIG9uIHJlc29sdmluZyBzdWNoIGNvbmZsaWN0cywgc2VlCi8vIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2dldHRpbmctc3RhcnRlZC8jdGhpcmQtYm94LXNpemluZwoqIHsKICAuYm94LXNpemluZyhib3JkZXItYm94KTsKfQoqOmJlZm9yZSwKKjphZnRlciB7CiAgLmJveC1zaXppbmcoYm9yZGVyLWJveCk7Cn0KCgovLyBCb2R5IHJlc2V0CgpodG1sIHsKICBmb250LXNpemU6IDYyLjUlOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLDAsMCwwKTsKfQoKYm9keSB7CiAgZm9udC1mYW1pbHk6IEBmb250LWZhbWlseS1iYXNlOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1iYXNlOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICBjb2xvcjogQHRleHQtY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJvZHktYmc7Cn0KCi8vIFJlc2V0IGZvbnRzIGZvciByZWxldmFudCBlbGVtZW50cwppbnB1dCwKYnV0dG9uLApzZWxlY3QsCnRleHRhcmVhIHsKICBmb250LWZhbWlseTogaW5oZXJpdDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCgovLyBMaW5rcwoKYSB7CiAgY29sb3I6IEBsaW5rLWNvbG9yOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAbGluay1ob3Zlci1jb2xvcjsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KCiAgJjpmb2N1cyB7CiAgICAudGFiLWZvY3VzKCk7CiAgfQp9CgoKLy8gRmlndXJlcwovLwovLyBXZSByZXNldCB0aGlzIGhlcmUgYmVjYXVzZSBwcmV2aW91c2x5IE5vcm1hbGl6ZSBoYWQgbm8gYGZpZ3VyZWAgbWFyZ2lucy4gVGhpcwovLyBlbnN1cmVzIHdlIGRvbid0IGJyZWFrIGFueW9uZSdzIHVzZSBvZiB0aGUgZWxlbWVudC4KCmZpZ3VyZSB7CiAgbWFyZ2luOiAwOwp9CgoKLy8gSW1hZ2VzCgppbWcgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi8vIFJlc3BvbnNpdmUgaW1hZ2VzIChlbnN1cmUgaW1hZ2VzIGRvbid0IHNjYWxlIGJleW9uZCB0aGVpciBwYXJlbnRzKQouaW1nLXJlc3BvbnNpdmUgewogIC5pbWctcmVzcG9uc2l2ZSgpOwp9CgovLyBSb3VuZGVkIGNvcm5lcnMKLmltZy1yb3VuZGVkIHsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKfQoKLy8gSW1hZ2UgdGh1bWJuYWlscwovLwovLyBIZWFkcyB1cCEgVGhpcyBpcyBtaXhpbi1lZCBpbnRvIHRodW1ibmFpbHMubGVzcyBmb3IgYC50aHVtYm5haWxgLgouaW1nLXRodW1ibmFpbCB7CiAgcGFkZGluZzogQHRodW1ibmFpbC1wYWRkaW5nOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAdGh1bWJuYWlsLWJnOwogIGJvcmRlcjogMXB4IHNvbGlkIEB0aHVtYm5haWwtYm9yZGVyOwogIGJvcmRlci1yYWRpdXM6IEB0aHVtYm5haWwtYm9yZGVyLXJhZGl1czsKICAudHJhbnNpdGlvbihhbGwgLjJzIGVhc2UtaW4tb3V0KTsKCiAgLy8gS2VlcCB0aGVtIGF0IG1vc3QgMTAwJSB3aWRlCiAgLmltZy1yZXNwb25zaXZlKGlubGluZS1ibG9jayk7Cn0KCi8vIFBlcmZlY3QgY2lyY2xlCi5pbWctY2lyY2xlIHsKICBib3JkZXItcmFkaXVzOiA1MCU7IC8vIHNldCByYWRpdXMgaW4gcGVyY2VudHMKfQoKCi8vIEhvcml6b250YWwgcnVsZXMKCmhyIHsKICBtYXJnaW4tdG9wOiAgICBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGJvcmRlcjogMDsKICBib3JkZXItdG9wOiAxcHggc29saWQgQGhyLWJvcmRlcjsKfQoKCi8vIE9ubHkgZGlzcGxheSBjb250ZW50IHRvIHNjcmVlbiByZWFkZXJzCi8vCi8vIFNlZTogaHR0cDovL2ExMXlwcm9qZWN0LmNvbS9wb3N0cy9ob3ctdG8taGlkZS1jb250ZW50LwoKLnNyLW9ubHkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIG1hcmdpbjogLTFweDsKICBwYWRkaW5nOiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLDAsMCwwKTsKICBib3JkZXI6IDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/tables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVGFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdGFibGUgewogIG1heC13aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAdGFibGUtYmc7Cn0KdGggewogIHRleHQtYWxpZ246IGxlZnQ7Cn0KCgovLyBCYXNlbGluZSBzdHlsZXMKCi50YWJsZSB7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIC8vIENlbGxzCiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIHBhZGRpbmc6IEB0YWJsZS1jZWxsLXBhZGRpbmc7CiAgICAgICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KICB9CiAgLy8gQm90dG9tIGFsaWduIGZvciBjb2x1bW4gaGVhZGluZ3MKICA+IHRoZWFkID4gdHIgPiB0aCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgfQogIC8vIFJlbW92ZSB0b3AgYm9yZGVyIGZyb20gdGhlYWQgYnkgZGVmYXVsdAogID4gY2FwdGlvbiArIHRoZWFkLAogID4gY29sZ3JvdXAgKyB0aGVhZCwKICA+IHRoZWFkOmZpcnN0LWNoaWxkIHsKICAgID4gdHI6Zmlyc3QtY2hpbGQgewogICAgICA+IHRoLAogICAgICA+IHRkIHsKICAgICAgICBib3JkZXItdG9wOiAwOwogICAgICB9CiAgICB9CiAgfQogIC8vIEFjY291bnQgZm9yIG11bHRpcGxlIHRib2R5IGluc3RhbmNlcwogID4gdGJvZHkgKyB0Ym9keSB7CiAgICBib3JkZXItdG9wOiAycHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKICB9CgogIC8vIE5lc3RpbmcKICAudGFibGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogQGJvZHktYmc7CiAgfQp9CgoKLy8gQ29uZGVuc2VkIHRhYmxlIHcvIGhhbGYgcGFkZGluZwoKLnRhYmxlLWNvbmRlbnNlZCB7CiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIHBhZGRpbmc6IEB0YWJsZS1jb25kZW5zZWQtY2VsbC1wYWRkaW5nOwogICAgICB9CiAgICB9CiAgfQp9CgoKLy8gQm9yZGVyZWQgdmVyc2lvbgovLwovLyBBZGQgYm9yZGVycyBhbGwgYXJvdW5kIHRoZSB0YWJsZSBhbmQgYmV0d2VlbiBhbGwgdGhlIGNvbHVtbnMuCgoudGFibGUtYm9yZGVyZWQgewogIGJvcmRlcjogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KICB9CiAgPiB0aGVhZCA+IHRyIHsKICAgID4gdGgsCiAgICA+IHRkIHsKICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4OwogICAgfQogIH0KfQoKCi8vIFplYnJhLXN0cmlwaW5nCi8vCi8vIERlZmF1bHQgemVicmEtc3RyaXBlIHN0eWxlcyAoYWx0ZXJuYXRpbmcgZ3JheSBhbmQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMpCgoudGFibGUtc3RyaXBlZCB7CiAgPiB0Ym9keSA+IHRyOm50aC1jaGlsZChvZGQpIHsKICAgID4gdGQsCiAgICA+IHRoIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHRhYmxlLWJnLWFjY2VudDsKICAgIH0KICB9Cn0KCgovLyBIb3ZlciBlZmZlY3QKLy8KLy8gUGxhY2VkIGhlcmUgc2luY2UgaXQgaGFzIHRvIGNvbWUgYWZ0ZXIgdGhlIHBvdGVudGlhbCB6ZWJyYSBzdHJpcGluZwoKLnRhYmxlLWhvdmVyIHsKICA+IHRib2R5ID4gdHI6aG92ZXIgewogICAgPiB0ZCwKICAgID4gdGggewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAdGFibGUtYmctaG92ZXI7CiAgICB9CiAgfQp9CgoKLy8gVGFibGUgY2VsbCBzaXppbmcKLy8KLy8gUmVzZXQgZGVmYXVsdCB0YWJsZSBiZWhhdmlvcgoKdGFibGUgY29sW2NsYXNzKj0iY29sLSJdIHsKICBwb3NpdGlvbjogc3RhdGljOyAvLyBQcmV2ZW50IGJvcmRlciBoaWRpbmcgaW4gRmlyZWZveCBhbmQgSUU5LzEwIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTYyMykKICBmbG9hdDogbm9uZTsKICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47Cn0KdGFibGUgewogIHRkLAogIHRoIHsKICAgICZbY2xhc3MqPSJjb2wtIl0gewogICAgICBwb3NpdGlvbjogc3RhdGljOyAvLyBQcmV2ZW50IGJvcmRlciBoaWRpbmcgaW4gRmlyZWZveCBhbmQgSUU5LzEwIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTYyMykKICAgICAgZmxvYXQ6IG5vbmU7CiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICB9CiAgfQp9CgoKLy8gVGFibGUgYmFja2dyb3VuZHMKLy8KLy8gRXhhY3Qgc2VsZWN0b3JzIGJlbG93IHJlcXVpcmVkIHRvIG92ZXJyaWRlIGAudGFibGUtc3RyaXBlZGAgYW5kIHByZXZlbnQKLy8gaW5oZXJpdGFuY2UgdG8gbmVzdGVkIHRhYmxlcy4KCi8vIEdlbmVyYXRlIHRoZSBjb250ZXh0dWFsIHZhcmlhbnRzCi50YWJsZS1yb3ctdmFyaWFudChhY3RpdmU7IEB0YWJsZS1iZy1hY3RpdmUpOwoudGFibGUtcm93LXZhcmlhbnQoc3VjY2VzczsgQHN0YXRlLXN1Y2Nlc3MtYmcpOwoudGFibGUtcm93LXZhcmlhbnQoaW5mbzsgQHN0YXRlLWluZm8tYmcpOwoudGFibGUtcm93LXZhcmlhbnQod2FybmluZzsgQHN0YXRlLXdhcm5pbmctYmcpOwoudGFibGUtcm93LXZhcmlhbnQoZGFuZ2VyOyBAc3RhdGUtZGFuZ2VyLWJnKTsKCgovLyBSZXNwb25zaXZlIHRhYmxlcwovLwovLyBXcmFwIHlvdXIgdGFibGVzIGluIGAudGFibGUtcmVzcG9uc2l2ZWAgYW5kIHdlJ2xsIG1ha2UgdGhlbSBtb2JpbGUgZnJpZW5kbHkKLy8gYnkgZW5hYmxpbmcgaG9yaXpvbnRhbCBzY3JvbGxpbmcuIE9ubHkgYXBwbGllcyA8NzY4cHguIEV2ZXJ5dGhpbmcgYWJvdmUgdGhhdAovLyB3aWxsIGRpc3BsYXkgbm9ybWFsbHkuCgpAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAudGFibGUtcmVzcG9uc2l2ZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgKiAwLjc1KTsKICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKICAgIG92ZXJmbG93LXg6IHNjcm9sbDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogICAgYm9yZGVyOiAxcHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCiAgICAvLyBUaWdodGVuIHVwIHNwYWNpbmcKICAgID4gLnRhYmxlIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMDsKCiAgICAgIC8vIEVuc3VyZSB0aGUgY29udGVudCBkb2Vzbid0IHdyYXAKICAgICAgPiB0aGVhZCwKICAgICAgPiB0Ym9keSwKICAgICAgPiB0Zm9vdCB7CiAgICAgICAgPiB0ciB7CiAgICAgICAgICA+IHRoLAogICAgICAgICAgPiB0ZCB7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gU3BlY2lhbCBvdmVycmlkZXMgZm9yIHRoZSBib3JkZXJlZCB0YWJsZXMKICAgID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgICAgYm9yZGVyOiAwOwoKICAgICAgLy8gTnVrZSB0aGUgYXBwcm9wcmlhdGUgYm9yZGVycyBzbyB0aGF0IHRoZSBwYXJlbnQgY2FuIGhhbmRsZSB0aGVtCiAgICAgID4gdGhlYWQsCiAgICAgID4gdGJvZHksCiAgICAgID4gdGZvb3QgewogICAgICAgID4gdHIgewogICAgICAgICAgPiB0aDpmaXJzdC1jaGlsZCwKICAgICAgICAgID4gdGQ6Zmlyc3QtY2hpbGQgewogICAgICAgICAgICBib3JkZXItbGVmdDogMDsKICAgICAgICAgIH0KICAgICAgICAgID4gdGg6bGFzdC1jaGlsZCwKICAgICAgICAgID4gdGQ6bGFzdC1jaGlsZCB7CiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIE9ubHkgbnVrZSB0aGUgbGFzdCByb3cncyBib3R0b20tYm9yZGVyIGluIGB0Ym9keWAgYW5kIGB0Zm9vdGAgc2luY2UKICAgICAgLy8gY2hhbmNlcyBhcmUgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSBgdHJgIGluIGEgYHRoZWFkYCBhbmQgdGhhdCB3b3VsZAogICAgICAvLyByZW1vdmUgdGhlIGJvcmRlciBhbHRvZ2V0aGVyLgogICAgICA+IHRib2R5LAogICAgICA+IHRmb290IHsKICAgICAgICA+IHRyOmxhc3QtY2hpbGQgewogICAgICAgICAgPiB0aCwKICAgICAgICAgID4gdGQgewogICAgICAgICAgICBib3JkZXItYm90dG9tOiAwOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/theme.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vCi8vIExvYWQgY29yZSB2YXJpYWJsZXMgYW5kIG1peGlucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGltcG9ydCAidmFyaWFibGVzLmxlc3MiOwpAaW1wb3J0ICJtaXhpbnMubGVzcyI7CgoKCi8vCi8vIEJ1dHRvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENvbW1vbiBzdHlsZXMKLmJ0bi1kZWZhdWx0LAouYnRuLXByaW1hcnksCi5idG4tc3VjY2VzcywKLmJ0bi1pbmZvLAouYnRuLXdhcm5pbmcsCi5idG4tZGFuZ2VyIHsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLDAsMCwuMik7CiAgQHNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xNSksIDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOwogIC5ib3gtc2hhZG93KEBzaGFkb3cpOwoKICAvLyBSZXNldCB0aGUgc2hhZG93CiAgJjphY3RpdmUsCiAgJi5hY3RpdmUgewogICAgLmJveC1zaGFkb3coaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSkpOwogIH0KfQoKLy8gTWl4aW4gZm9yIGdlbmVyYXRpbmcgbmV3IHN0eWxlcwouYnRuLXN0eWxlcyhAYnRuLWNvbG9yOiAjNTU1KSB7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogQGJ0bi1jb2xvcjsgQGVuZC1jb2xvcjogZGFya2VuKEBidG4tY29sb3IsIDEyJSkpOwogIC5yZXNldC1maWx0ZXIoKTsgLy8gRGlzYWJsZSBncmFkaWVudHMgZm9yIElFOSBiZWNhdXNlIGZpbHRlciBibGVlZHMgdGhyb3VnaCByb3VuZGVkIGNvcm5lcnMKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQGJ0bi1jb2xvciwgMTQlKTsKCiAgJjpob3ZlciwKICAmOmZvY3VzICB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGJ0bi1jb2xvciwgMTIlKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7CiAgfQoKICAmOmFjdGl2ZSwKICAmLmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGJ0bi1jb2xvciwgMTIlKTsKICAgIGJvcmRlci1jb2xvcjogZGFya2VuKEBidG4tY29sb3IsIDE0JSk7CiAgfQp9CgovLyBDb21tb24gc3R5bGVzCi5idG4gewogIC8vIFJlbW92ZSB0aGUgZ3JhZGllbnQgZm9yIHRoZSBwcmVzc2VkL2FjdGl2ZSBzdGF0ZQogICY6YWN0aXZlLAogICYuYWN0aXZlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgfQp9CgovLyBBcHBseSB0aGUgbWl4aW4gdG8gdGhlIGJ1dHRvbnMKLmJ0bi1kZWZhdWx0IHsgLmJ0bi1zdHlsZXMoQGJ0bi1kZWZhdWx0LWJnKTsgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjsgYm9yZGVyLWNvbG9yOiAjY2NjOyB9Ci5idG4tcHJpbWFyeSB7IC5idG4tc3R5bGVzKEBidG4tcHJpbWFyeS1iZyk7IH0KLmJ0bi1zdWNjZXNzIHsgLmJ0bi1zdHlsZXMoQGJ0bi1zdWNjZXNzLWJnKTsgfQouYnRuLWluZm8gICAgeyAuYnRuLXN0eWxlcyhAYnRuLWluZm8tYmcpOyB9Ci5idG4td2FybmluZyB7IC5idG4tc3R5bGVzKEBidG4td2FybmluZy1iZyk7IH0KLmJ0bi1kYW5nZXIgIHsgLmJ0bi1zdHlsZXMoQGJ0bi1kYW5nZXItYmcpOyB9CgoKCi8vCi8vIEltYWdlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLnRodW1ibmFpbCwKLmltZy10aHVtYm5haWwgewogIC5ib3gtc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wNzUpKTsKfQoKCgovLwovLyBEcm9wZG93bnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmhvdmVyLAouZHJvcGRvd24tbWVudSA+IGxpID4gYTpmb2N1cyB7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogQGRyb3Bkb3duLWxpbmstaG92ZXItYmc7IEBlbmQtY29sb3I6IGRhcmtlbihAZHJvcGRvd24tbGluay1ob3Zlci1iZywgNSUpKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGRyb3Bkb3duLWxpbmstaG92ZXItYmcsIDUlKTsKfQouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhLAouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmhvdmVyLAouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICAjZ3JhZGllbnQgPiAudmVydGljYWwoQHN0YXJ0LWNvbG9yOiBAZHJvcGRvd24tbGluay1hY3RpdmUtYmc7IEBlbmQtY29sb3I6IGRhcmtlbihAZHJvcGRvd24tbGluay1hY3RpdmUtYmcsIDUlKSk7CiAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKEBkcm9wZG93bi1saW5rLWFjdGl2ZS1iZywgNSUpOwp9CgoKCi8vCi8vIE5hdmJhcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gRGVmYXVsdCBuYXZiYXIKLm5hdmJhci1kZWZhdWx0IHsKICAjZ3JhZGllbnQgPiAudmVydGljYWwoQHN0YXJ0LWNvbG9yOiBsaWdodGVuKEBuYXZiYXItZGVmYXVsdC1iZywgMTAlKTsgQGVuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWJnKTsKICAucmVzZXQtZmlsdGVyKCk7IC8vIFJlbW92ZSBncmFkaWVudCBpbiBJRTwxMCB0byBmaXggYnVnIHdoZXJlIGRyb3Bkb3ducyBkb24ndCBnZXQgdHJpZ2dlcmVkCiAgYm9yZGVyLXJhZGl1czogQG5hdmJhci1ib3JkZXItcmFkaXVzOwogIEBzaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMTUpLCAwIDFweCA1cHggcmdiYSgwLDAsMCwuMDc1KTsKICAuYm94LXNoYWRvdyhAc2hhZG93KTsKCiAgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYSB7CiAgICAjZ3JhZGllbnQgPiAudmVydGljYWwoQHN0YXJ0LWNvbG9yOiBkYXJrZW4oQG5hdmJhci1kZWZhdWx0LWJnLCA1JSk7IEBlbmQtY29sb3I6IGRhcmtlbihAbmF2YmFyLWRlZmF1bHQtYmcsIDIlKSk7CiAgICAuYm94LXNoYWRvdyhpbnNldCAwIDNweCA5cHggcmdiYSgwLDAsMCwuMDc1KSk7CiAgfQp9Ci5uYXZiYXItYnJhbmQsCi5uYXZiYXItbmF2ID4gbGkgPiBhIHsKICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4yNSk7Cn0KCi8vIEludmVydGVkIG5hdmJhcgoubmF2YmFyLWludmVyc2UgewogICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IGxpZ2h0ZW4oQG5hdmJhci1pbnZlcnNlLWJnLCAxMCUpOyBAZW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtYmcpOwogIC5yZXNldC1maWx0ZXIoKTsgLy8gUmVtb3ZlIGdyYWRpZW50IGluIElFPDEwIHRvIGZpeCBidWcgd2hlcmUgZHJvcGRvd25zIGRvbid0IGdldCB0cmlnZ2VyZWQKCiAgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYSB7CiAgICAjZ3JhZGllbnQgPiAudmVydGljYWwoQHN0YXJ0LWNvbG9yOiBAbmF2YmFyLWludmVyc2UtYmc7IEBlbmQtY29sb3I6IGxpZ2h0ZW4oQG5hdmJhci1pbnZlcnNlLWJnLCAyLjUlKSk7CiAgICAuYm94LXNoYWRvdyhpbnNldCAwIDNweCA5cHggcmdiYSgwLDAsMCwuMjUpKTsKICB9CgogIC5uYXZiYXItYnJhbmQsCiAgLm5hdmJhci1uYXYgPiBsaSA+IGEgewogICAgdGV4dC1zaGFkb3c6IDAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KTsKICB9Cn0KCi8vIFVuZG8gcm91bmRlZCBjb3JuZXJzIGluIHN0YXRpYyBhbmQgZml4ZWQgbmF2YmFycwoubmF2YmFyLXN0YXRpYy10b3AsCi5uYXZiYXItZml4ZWQtdG9wLAoubmF2YmFyLWZpeGVkLWJvdHRvbSB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoKCgovLwovLyBBbGVydHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENvbW1vbiBzdHlsZXMKLmFsZXJ0IHsKICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4yKTsKICBAc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjI1KSwgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjA1KTsKICAuYm94LXNoYWRvdyhAc2hhZG93KTsKfQoKLy8gTWl4aW4gZm9yIGdlbmVyYXRpbmcgbmV3IHN0eWxlcwouYWxlcnQtc3R5bGVzKEBjb2xvcikgewogICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IEBjb2xvcjsgQGVuZC1jb2xvcjogZGFya2VuKEBjb2xvciwgNy41JSkpOwogIGJvcmRlci1jb2xvcjogZGFya2VuKEBjb2xvciwgMTUlKTsKfQoKLy8gQXBwbHkgdGhlIG1peGluIHRvIHRoZSBhbGVydHMKLmFsZXJ0LXN1Y2Nlc3MgICAgeyAuYWxlcnQtc3R5bGVzKEBhbGVydC1zdWNjZXNzLWJnKTsgfQouYWxlcnQtaW5mbyAgICAgICB7IC5hbGVydC1zdHlsZXMoQGFsZXJ0LWluZm8tYmcpOyB9Ci5hbGVydC13YXJuaW5nICAgIHsgLmFsZXJ0LXN0eWxlcyhAYWxlcnQtd2FybmluZy1iZyk7IH0KLmFsZXJ0LWRhbmdlciAgICAgeyAuYWxlcnQtc3R5bGVzKEBhbGVydC1kYW5nZXItYmcpOyB9CgoKCi8vCi8vIFByb2dyZXNzIGJhcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEdpdmUgdGhlIHByb2dyZXNzIGJhY2tncm91bmQgc29tZSBkZXB0aAoucHJvZ3Jlc3MgewogICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IGRhcmtlbihAcHJvZ3Jlc3MtYmcsIDQlKTsgQGVuZC1jb2xvcjogQHByb2dyZXNzLWJnKQp9CgovLyBNaXhpbiBmb3IgZ2VuZXJhdGluZyBuZXcgc3R5bGVzCi5wcm9ncmVzcy1iYXItc3R5bGVzKEBjb2xvcikgewogICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IEBjb2xvcjsgQGVuZC1jb2xvcjogZGFya2VuKEBjb2xvciwgMTAlKSk7Cn0KCi8vIEFwcGx5IHRoZSBtaXhpbiB0byB0aGUgcHJvZ3Jlc3MgYmFycwoucHJvZ3Jlc3MtYmFyICAgICAgICAgICAgeyAucHJvZ3Jlc3MtYmFyLXN0eWxlcyhAcHJvZ3Jlc3MtYmFyLWJnKTsgfQoucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgICAgeyAucHJvZ3Jlc3MtYmFyLXN0eWxlcyhAcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MtYmcpOyB9Ci5wcm9ncmVzcy1iYXItaW5mbyAgICAgICB7IC5wcm9ncmVzcy1iYXItc3R5bGVzKEBwcm9ncmVzcy1iYXItaW5mby1iZyk7IH0KLnByb2dyZXNzLWJhci13YXJuaW5nICAgIHsgLnByb2dyZXNzLWJhci1zdHlsZXMoQHByb2dyZXNzLWJhci13YXJuaW5nLWJnKTsgfQoucHJvZ3Jlc3MtYmFyLWRhbmdlciAgICAgeyAucHJvZ3Jlc3MtYmFyLXN0eWxlcyhAcHJvZ3Jlc3MtYmFyLWRhbmdlci1iZyk7IH0KCgoKLy8KLy8gTGlzdCBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5saXN0LWdyb3VwIHsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogIC5ib3gtc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wNzUpKTsKfQoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSwKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6aG92ZXIsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIHsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgZGFya2VuKEBsaXN0LWdyb3VwLWFjdGl2ZS1iZywgMTAlKTsKICAjZ3JhZGllbnQgPiAudmVydGljYWwoQHN0YXJ0LWNvbG9yOiBAbGlzdC1ncm91cC1hY3RpdmUtYmc7IEBlbmQtY29sb3I6IGRhcmtlbihAbGlzdC1ncm91cC1hY3RpdmUtYmcsIDcuNSUpKTsKICBib3JkZXItY29sb3I6IGRhcmtlbihAbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLCA3LjUlKTsKfQoKCgovLwovLyBQYW5lbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENvbW1vbiBzdHlsZXMKLnBhbmVsIHsKICAuYm94LXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwuMDUpKTsKfQoKLy8gTWl4aW4gZm9yIGdlbmVyYXRpbmcgbmV3IHN0eWxlcwoucGFuZWwtaGVhZGluZy1zdHlsZXMoQGNvbG9yKSB7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogQGNvbG9yOyBAZW5kLWNvbG9yOiBkYXJrZW4oQGNvbG9yLCA1JSkpOwp9CgovLyBBcHBseSB0aGUgbWl4aW4gdG8gdGhlIHBhbmVsIGhlYWRpbmdzIG9ubHkKLnBhbmVsLWRlZmF1bHQgPiAucGFuZWwtaGVhZGluZyAgIHsgLnBhbmVsLWhlYWRpbmctc3R5bGVzKEBwYW5lbC1kZWZhdWx0LWhlYWRpbmctYmcpOyB9Ci5wYW5lbC1wcmltYXJ5ID4gLnBhbmVsLWhlYWRpbmcgICB7IC5wYW5lbC1oZWFkaW5nLXN0eWxlcyhAcGFuZWwtcHJpbWFyeS1oZWFkaW5nLWJnKTsgfQoucGFuZWwtc3VjY2VzcyA+IC5wYW5lbC1oZWFkaW5nICAgeyAucGFuZWwtaGVhZGluZy1zdHlsZXMoQHBhbmVsLXN1Y2Nlc3MtaGVhZGluZy1iZyk7IH0KLnBhbmVsLWluZm8gPiAucGFuZWwtaGVhZGluZyAgICAgIHsgLnBhbmVsLWhlYWRpbmctc3R5bGVzKEBwYW5lbC1pbmZvLWhlYWRpbmctYmcpOyB9Ci5wYW5lbC13YXJuaW5nID4gLnBhbmVsLWhlYWRpbmcgICB7IC5wYW5lbC1oZWFkaW5nLXN0eWxlcyhAcGFuZWwtd2FybmluZy1oZWFkaW5nLWJnKTsgfQoucGFuZWwtZGFuZ2VyID4gLnBhbmVsLWhlYWRpbmcgICAgeyAucGFuZWwtaGVhZGluZy1zdHlsZXMoQHBhbmVsLWRhbmdlci1oZWFkaW5nLWJnKTsgfQoKCgovLwovLyBXZWxscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLndlbGwgewogICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IGRhcmtlbihAd2VsbC1iZywgNSUpOyBAZW5kLWNvbG9yOiBAd2VsbC1iZyk7CiAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQHdlbGwtYmcsIDEwJSk7CiAgQHNoYWRvdzogaW5zZXQgMCAxcHggM3B4IHJnYmEoMCwwLDAsLjA1KSwgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKTsKICAuYm94LXNoYWRvdyhAc2hhZG93KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/thumbnails.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVGh1bWJuYWlscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIE1peGluIGFuZCBhZGp1c3QgdGhlIHJlZ3VsYXIgaW1hZ2UgY2xhc3MKLnRodW1ibmFpbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogQHRodW1ibmFpbC1wYWRkaW5nOwogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgYmFja2dyb3VuZC1jb2xvcjogQHRodW1ibmFpbC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAdGh1bWJuYWlsLWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAdGh1bWJuYWlsLWJvcmRlci1yYWRpdXM7CiAgLnRyYW5zaXRpb24oYWxsIC4ycyBlYXNlLWluLW91dCk7CgogID4gaW1nLAogIGEgPiBpbWcgewogICAgLmltZy1yZXNwb25zaXZlKCk7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICB9CgogIC8vIEFkZCBhIGhvdmVyIHN0YXRlIGZvciBsaW5rZWQgdmVyc2lvbnMgb25seQogIGEmOmhvdmVyLAogIGEmOmZvY3VzLAogIGEmLmFjdGl2ZSB7CiAgICBib3JkZXItY29sb3I6IEBsaW5rLWNvbG9yOwogIH0KCiAgLy8gSW1hZ2UgY2FwdGlvbnMKICAuY2FwdGlvbiB7CiAgICBwYWRkaW5nOiBAdGh1bWJuYWlsLWNhcHRpb24tcGFkZGluZzsKICAgIGNvbG9yOiBAdGh1bWJuYWlsLWNhcHRpb24tY29sb3I7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/tooltip.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVG9vbHRpcHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi50b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogQHppbmRleC10b29sdGlwOwogIGRpc3BsYXk6IGJsb2NrOwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgLm9wYWNpdHkoMCk7CgogICYuaW4gICAgIHsgLm9wYWNpdHkoQHRvb2x0aXAtb3BhY2l0eSk7IH0KICAmLnRvcCAgICB7IG1hcmdpbi10b3A6ICAtM3B4OyBwYWRkaW5nOiBAdG9vbHRpcC1hcnJvdy13aWR0aCAwOyB9CiAgJi5yaWdodCAgeyBtYXJnaW4tbGVmdDogIDNweDsgcGFkZGluZzogMCBAdG9vbHRpcC1hcnJvdy13aWR0aDsgfQogICYuYm90dG9tIHsgbWFyZ2luLXRvcDogICAzcHg7IHBhZGRpbmc6IEB0b29sdGlwLWFycm93LXdpZHRoIDA7IH0KICAmLmxlZnQgICB7IG1hcmdpbi1sZWZ0OiAtM3B4OyBwYWRkaW5nOiAwIEB0b29sdGlwLWFycm93LXdpZHRoOyB9Cn0KCi8vIFdyYXBwZXIgZm9yIHRoZSB0b29sdGlwIGNvbnRlbnQKLnRvb2x0aXAtaW5uZXIgewogIG1heC13aWR0aDogQHRvb2x0aXAtbWF4LXdpZHRoOwogIHBhZGRpbmc6IDNweCA4cHg7CiAgY29sb3I6IEB0b29sdGlwLWNvbG9yOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogQHRvb2x0aXAtYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKfQoKLy8gQXJyb3dzCi50b29sdGlwLWFycm93IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoudG9vbHRpcCB7CiAgJi50b3AgLnRvb2x0aXAtYXJyb3cgewogICAgYm90dG9tOiAwOwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC1AdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggMDsKICAgIGJvcmRlci10b3AtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLnRvcC1sZWZ0IC50b29sdGlwLWFycm93IHsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aCAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYudG9wLXJpZ2h0IC50b29sdGlwLWFycm93IHsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggMDsKICAgIGJvcmRlci10b3AtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLnJpZ2h0IC50b29sdGlwLWFycm93IHsKICAgIHRvcDogNTAlOwogICAgbGVmdDogMDsKICAgIG1hcmdpbi10b3A6IC1AdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggMDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYubGVmdCAudG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAwOwogICAgbWFyZ2luLXRvcDogLUB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiBAdG9vbHRpcC1hcnJvdy13aWR0aCAwIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLWxlZnQtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLmJvdHRvbSAudG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLUB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiAwIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYuYm90dG9tLWxlZnQgLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgbGVmdDogQHRvb2x0aXAtYXJyb3ctd2lkdGg7CiAgICBib3JkZXItd2lkdGg6IDAgQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGg7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAdG9vbHRpcC1hcnJvdy1jb2xvcjsKICB9CiAgJi5ib3R0b20tcmlnaHQgLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgcmlnaHQ6IEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiAwIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/type.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVHlwb2dyYXBoeQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEhlYWRpbmdzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsCi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYgewogIGZvbnQtZmFtaWx5OiBAaGVhZGluZ3MtZm9udC1mYW1pbHk7CiAgZm9udC13ZWlnaHQ6IEBoZWFkaW5ncy1mb250LXdlaWdodDsKICBsaW5lLWhlaWdodDogQGhlYWRpbmdzLWxpbmUtaGVpZ2h0OwogIGNvbG9yOiBAaGVhZGluZ3MtY29sb3I7CgogIHNtYWxsLAogIC5zbWFsbCB7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogQGhlYWRpbmdzLXNtYWxsLWNvbG9yOwogIH0KfQoKaDEsIC5oMSwKaDIsIC5oMiwKaDMsIC5oMyB7CiAgbWFyZ2luLXRvcDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIG1hcmdpbi1ib3R0b206IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLyAyKTsKCiAgc21hbGwsCiAgLnNtYWxsIHsKICAgIGZvbnQtc2l6ZTogNjUlOwogIH0KfQpoNCwgLmg0LApoNSwgLmg1LApoNiwgLmg2IHsKICBtYXJnaW4tdG9wOiAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7CiAgbWFyZ2luLWJvdHRvbTogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpOwoKICBzbWFsbCwKICAuc21hbGwgewogICAgZm9udC1zaXplOiA3NSU7CiAgfQp9CgpoMSwgLmgxIHsgZm9udC1zaXplOiBAZm9udC1zaXplLWgxOyB9CmgyLCAuaDIgeyBmb250LXNpemU6IEBmb250LXNpemUtaDI7IH0KaDMsIC5oMyB7IGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1oMzsgfQpoNCwgLmg0IHsgZm9udC1zaXplOiBAZm9udC1zaXplLWg0OyB9Cmg1LCAuaDUgeyBmb250LXNpemU6IEBmb250LXNpemUtaDU7IH0KaDYsIC5oNiB7IGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1oNjsgfQoKCi8vIEJvZHkgdGV4dAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpwIHsKICBtYXJnaW46IDAgMCAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7Cn0KCi5sZWFkIHsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgZm9udC1zaXplOiBmbG9vcigoQGZvbnQtc2l6ZS1iYXNlICogMS4xNSkpOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IDEuNDsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjUpOwogIH0KfQoKCi8vIEVtcGhhc2lzICYgbWlzYwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBFeDogMTRweCBiYXNlIGZvbnQgKiA4NSUgPSBhYm91dCAxMnB4CnNtYWxsLAouc21hbGwgIHsgZm9udC1zaXplOiA4NSU7IH0KCi8vIFVuZG8gYnJvd3NlciBkZWZhdWx0IHN0eWxpbmcKY2l0ZSAgICB7IGZvbnQtc3R5bGU6IG5vcm1hbDsgfQoKLy8gQWxpZ25tZW50Ci50ZXh0LWxlZnQgICAgICAgICAgIHsgdGV4dC1hbGlnbjogbGVmdDsgfQoudGV4dC1yaWdodCAgICAgICAgICB7IHRleHQtYWxpZ246IHJpZ2h0OyB9Ci50ZXh0LWNlbnRlciAgICAgICAgIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9Ci50ZXh0LWp1c3RpZnkgICAgICAgIHsgdGV4dC1hbGlnbjoganVzdGlmeTsgfQoKLy8gQ29udGV4dHVhbCBjb2xvcnMKLnRleHQtbXV0ZWQgewogIGNvbG9yOiBAdGV4dC1tdXRlZDsKfQoudGV4dC1wcmltYXJ5IHsKICAudGV4dC1lbXBoYXNpcy12YXJpYW50KEBicmFuZC1wcmltYXJ5KTsKfQoudGV4dC1zdWNjZXNzIHsKICAudGV4dC1lbXBoYXNpcy12YXJpYW50KEBzdGF0ZS1zdWNjZXNzLXRleHQpOwp9Ci50ZXh0LWluZm8gewogIC50ZXh0LWVtcGhhc2lzLXZhcmlhbnQoQHN0YXRlLWluZm8tdGV4dCk7Cn0KLnRleHQtd2FybmluZyB7CiAgLnRleHQtZW1waGFzaXMtdmFyaWFudChAc3RhdGUtd2FybmluZy10ZXh0KTsKfQoudGV4dC1kYW5nZXIgewogIC50ZXh0LWVtcGhhc2lzLXZhcmlhbnQoQHN0YXRlLWRhbmdlci10ZXh0KTsKfQoKLy8gQ29udGV4dHVhbCBiYWNrZ3JvdW5kcwovLyBGb3Igbm93IHdlJ2xsIGxlYXZlIHRoZXNlIGFsb25nc2lkZSB0aGUgdGV4dCBjbGFzc2VzIHVudGlsIHY0IHdoZW4gd2UgY2FuCi8vIHNhZmVseSBzaGlmdCB0aGluZ3MgYXJvdW5kIChwZXIgU2VtVmVyIHJ1bGVzKS4KLmJnLXByaW1hcnkgewogIC8vIEdpdmVuIHRoZSBjb250cmFzdCBoZXJlLCB0aGlzIGlzIHRoZSBvbmx5IGNsYXNzIHRvIGhhdmUgaXRzIGNvbG9yIGludmVydGVkCiAgLy8gYXV0b21hdGljYWxseS4KICBjb2xvcjogI2ZmZjsKICAuYmctdmFyaWFudChAYnJhbmQtcHJpbWFyeSk7Cn0KLmJnLXN1Y2Nlc3MgewogIC5iZy12YXJpYW50KEBzdGF0ZS1zdWNjZXNzLWJnKTsKfQouYmctaW5mbyB7CiAgLmJnLXZhcmlhbnQoQHN0YXRlLWluZm8tYmcpOwp9Ci5iZy13YXJuaW5nIHsKICAuYmctdmFyaWFudChAc3RhdGUtd2FybmluZy1iZyk7Cn0KLmJnLWRhbmdlciB7CiAgLmJnLXZhcmlhbnQoQHN0YXRlLWRhbmdlci1iZyk7Cn0KCgovLyBQYWdlIGhlYWRlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoucGFnZS1oZWFkZXIgewogIHBhZGRpbmctYm90dG9tOiAoKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpIC0gMSk7CiAgbWFyZ2luOiAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkICogMikgMCBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwYWdlLWhlYWRlci1ib3JkZXItY29sb3I7Cn0KCgovLyBMaXN0cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gVW5vcmRlcmVkIGFuZCBPcmRlcmVkIGxpc3RzCnVsLApvbCB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7CiAgdWwsCiAgb2wgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KCi8vIExpc3Qgb3B0aW9ucwoKLy8gVW5zdHlsZWQga2VlcHMgbGlzdCBpdGVtcyBibG9jayBsZXZlbCwganVzdCByZW1vdmVzIGRlZmF1bHQgYnJvd3NlciBwYWRkaW5nIGFuZCBsaXN0LXN0eWxlCi5saXN0LXVuc3R5bGVkIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLy8gSW5saW5lIHR1cm5zIGxpc3QgaXRlbXMgaW50byBpbmxpbmUtYmxvY2sKLmxpc3QtaW5saW5lIHsKICAubGlzdC11bnN0eWxlZCgpOwoKICA+IGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgcGFkZGluZy1yaWdodDogNXB4OwoKICAgICY6Zmlyc3QtY2hpbGQgewogICAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICB9CiAgfQp9CgovLyBEZXNjcmlwdGlvbiBMaXN0cwpkbCB7CiAgbWFyZ2luLXRvcDogMDsgLy8gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdAogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKfQpkdCwKZGQgewogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKfQpkdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KZGQgewogIG1hcmdpbi1sZWZ0OiAwOyAvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdAp9CgovLyBIb3Jpem9udGFsIGRlc2NyaXB0aW9uIGxpc3RzCi8vCi8vIERlZmF1bHRzIHRvIGJlaW5nIHN0YWNrZWQgd2l0aG91dCBhbnkgb2YgdGhlIGJlbG93IHN0eWxlcyBhcHBsaWVkLCB1bnRpbCB0aGUKLy8gZ3JpZCBicmVha3BvaW50IGlzIHJlYWNoZWQgKGRlZmF1bHQgb2Ygfjc2OHB4KS4KCkBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgLmRsLWhvcml6b250YWwgewogICAgZHQgewogICAgICBmbG9hdDogbGVmdDsKICAgICAgd2lkdGg6IChAY29tcG9uZW50LW9mZnNldC1ob3Jpem9udGFsIC0gMjApOwogICAgICBjbGVhcjogbGVmdDsKICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgIC50ZXh0LW92ZXJmbG93KCk7CiAgICB9CiAgICBkZCB7CiAgICAgIG1hcmdpbi1sZWZ0OiBAY29tcG9uZW50LW9mZnNldC1ob3Jpem9udGFsOwogICAgICAmOmV4dGVuZCguY2xlYXJmaXggYWxsKTsgLy8gQ2xlYXIgdGhlIGZsb2F0ZWQgYGR0YCBpZiBhbiBlbXB0eSBgZGRgIGlzIHByZXNlbnQKICAgIH0KICB9Cn0KCi8vIE1JU0MKLy8gLS0tLQoKLy8gQWJicmV2aWF0aW9ucyBhbmQgYWNyb255bXMKYWJiclt0aXRsZV0sCi8vIEFkZCBkYXRhLSogYXR0cmlidXRlIHRvIGhlbHAgb3V0IG91ciB0b29sdGlwIHBsdWdpbiwgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvNTI1NwphYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHsKICBjdXJzb3I6IGhlbHA7CiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCBAYWJici1ib3JkZXItY29sb3I7Cn0KLmluaXRpYWxpc20gewogIGZvbnQtc2l6ZTogOTAlOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi8vIEJsb2NrcXVvdGVzCmJsb2NrcXVvdGUgewogIHBhZGRpbmc6IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLyAyKSBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgbWFyZ2luOiAwIDAgQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGZvbnQtc2l6ZTogKEBmb250LXNpemUtYmFzZSAqIDEuMjUpOwogIGJvcmRlci1sZWZ0OiA1cHggc29saWQgQGJsb2NrcXVvdGUtYm9yZGVyLWNvbG9yOwoKICBwLAogIHVsLAogIG9sIHsKICAgICY6bGFzdC1jaGlsZCB7CiAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB9CiAgfQoKICAvLyBOb3RlOiBEZXByZWNhdGVkIHNtYWxsIGFuZCAuc21hbGwgYXMgb2YgdjMuMS4wCiAgLy8gQ29udGV4dDogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTY2MAogIGZvb3RlciwKICBzbWFsbCwKICAuc21hbGwgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IDgwJTsgLy8gYmFjayB0byBkZWZhdWx0IGZvbnQtc2l6ZQogICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgY29sb3I6IEBibG9ja3F1b3RlLXNtYWxsLWNvbG9yOwoKICAgICY6YmVmb3JlIHsKICAgICAgY29udGVudDogJ1wyMDE0IFwwMEEwJzsgLy8gZW0gZGFzaCwgbmJzcAogICAgfQogIH0KfQoKLy8gT3Bwb3NpdGUgYWxpZ25tZW50IG9mIGJsb2NrcXVvdGUKLy8KLy8gSGVhZHMgdXA6IGBibG9ja3F1b3RlLnB1bGwtcmlnaHRgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYXMgb2YgdjMuMS4wLgouYmxvY2txdW90ZS1yZXZlcnNlLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgewogIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGJvcmRlci1yaWdodDogNXB4IHNvbGlkIEBibG9ja3F1b3RlLWJvcmRlci1jb2xvcjsKICBib3JkZXItbGVmdDogMDsKICB0ZXh0LWFsaWduOiByaWdodDsKCiAgLy8gQWNjb3VudCBmb3IgY2l0YXRpb24KICBmb290ZXIsCiAgc21hbGwsCiAgLnNtYWxsIHsKICAgICY6YmVmb3JlIHsgY29udGVudDogJyc7IH0KICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAnXDAwQTAgXDIwMTQnOyAvLyBuYnNwLCBlbSBkYXNoCiAgICB9CiAgfQp9CgovLyBRdW90ZXMKYmxvY2txdW90ZTpiZWZvcmUsCmJsb2NrcXVvdGU6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwp9CgovLyBBZGRyZXNzZXMKYWRkcmVzcyB7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/utilities.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVXRpbGl0eSBjbGFzc2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gRmxvYXRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5jbGVhcmZpeCB7CiAgLmNsZWFyZml4KCk7Cn0KLmNlbnRlci1ibG9jayB7CiAgLmNlbnRlci1ibG9jaygpOwp9Ci5wdWxsLXJpZ2h0IHsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQoucHVsbC1sZWZ0IHsKICBmbG9hdDogbGVmdCAhaW1wb3J0YW50Owp9CgoKLy8gVG9nZ2xpbmcgY29udGVudAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBOb3RlOiBEZXByZWNhdGVkIC5oaWRlIGluIGZhdm9yIG9mIC5oaWRkZW4gb3IgLnNyLW9ubHkgKGFzIGFwcHJvcHJpYXRlKSBpbiB2My4wLjEKLmhpZGUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQouc2hvdyB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQouaW52aXNpYmxlIHsKICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KLnRleHQtaGlkZSB7CiAgLnRleHQtaGlkZSgpOwp9CgoKLy8gSGlkZSBmcm9tIHNjcmVlbnJlYWRlcnMgYW5kIGJyb3dzZXJzCi8vCi8vIENyZWRpdDogSFRNTDUgQm9pbGVycGxhdGUKCi5oaWRkZW4gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQoKCi8vIEZvciBBZmZpeCBwbHVnaW4KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmFmZml4IHsKICBwb3NpdGlvbjogZml4ZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/variables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVmFyaWFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy89PSBDb2xvcnMKLy8KLy8jIyBHcmF5IGFuZCBicmFuZCBjb2xvcnMgZm9yIHVzZSBhY3Jvc3MgQm9vdHN0cmFwLgoKQGdyYXktZGFya2VyOiAgICAgICAgICAgIGxpZ2h0ZW4oIzAwMCwgMTMuNSUpOyAvLyAjMjIyCkBncmF5LWRhcms6ICAgICAgICAgICAgICBsaWdodGVuKCMwMDAsIDIwJSk7ICAgLy8gIzMzMwpAZ3JheTogICAgICAgICAgICAgICAgICAgbGlnaHRlbigjMDAwLCAzMy41JSk7IC8vICM1NTUKQGdyYXktbGlnaHQ6ICAgICAgICAgICAgIGxpZ2h0ZW4oIzAwMCwgNjAlKTsgICAvLyAjOTk5CkBncmF5LWxpZ2h0ZXI6ICAgICAgICAgICBsaWdodGVuKCMwMDAsIDkzLjUlKTsgLy8gI2VlZQoKQGJyYW5kLXByaW1hcnk6ICAgICAgICAgIzQyOGJjYTsKQGJyYW5kLXN1Y2Nlc3M6ICAgICAgICAgIzVjYjg1YzsKQGJyYW5kLWluZm86ICAgICAgICAgICAgIzViYzBkZTsKQGJyYW5kLXdhcm5pbmc6ICAgICAgICAgI2YwYWQ0ZTsKQGJyYW5kLWRhbmdlcjogICAgICAgICAgI2Q5NTM0ZjsKCgovLz09IFNjYWZmb2xkaW5nCi8vCi8vICMjIFNldHRpbmdzIGZvciBzb21lIG9mIHRoZSBtb3N0IGdsb2JhbCBzdHlsZXMuCgovLyoqIEJhY2tncm91bmQgY29sb3IgZm9yIGA8Ym9keT5gLgpAYm9keS1iZzogICAgICAgICAgICAgICAjZmZmOwovLyoqIEdsb2JhbCB0ZXh0IGNvbG9yIG9uIGA8Ym9keT5gLgpAdGV4dC1jb2xvcjogICAgICAgICAgICBAZ3JheS1kYXJrOwoKLy8qKiBHbG9iYWwgdGV4dHVhbCBsaW5rIGNvbG9yLgpAbGluay1jb2xvcjogICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKLy8qKiBMaW5rIGhvdmVyIGNvbG9yIHNldCB2aWEgYGRhcmtlbigpYCBmdW5jdGlvbi4KQGxpbmstaG92ZXItY29sb3I6ICAgICAgZGFya2VuKEBsaW5rLWNvbG9yLCAxNSUpOwoKCi8vPT0gVHlwb2dyYXBoeQovLwovLyMjIEZvbnQsIGxpbmUtaGVpZ2h0LCBhbmQgY29sb3IgZm9yIGJvZHkgdGV4dCwgaGVhZGluZ3MsIGFuZCBtb3JlLgoKQGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwpAZm9udC1mYW1pbHktc2VyaWY6ICAgICAgIEdlb3JnaWEsICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7Ci8vKiogRGVmYXVsdCBtb25vc3BhY2UgZm9udHMgZm9yIGA8Y29kZT5gLCBgPGtiZD5gLCBhbmQgYDxwcmU+YC4KQGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogICBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwpAZm9udC1mYW1pbHktYmFzZTogICAgICAgIEBmb250LWZhbWlseS1zYW5zLXNlcmlmOwoKQGZvbnQtc2l6ZS1iYXNlOiAgICAgICAgICAxNHB4OwpAZm9udC1zaXplLWxhcmdlOiAgICAgICAgIGNlaWwoKEBmb250LXNpemUtYmFzZSAqIDEuMjUpKTsgLy8gfjE4cHgKQGZvbnQtc2l6ZS1zbWFsbDogICAgICAgICBjZWlsKChAZm9udC1zaXplLWJhc2UgKiAwLjg1KSk7IC8vIH4xMnB4CgpAZm9udC1zaXplLWgxOiAgICAgICAgICAgIGZsb29yKChAZm9udC1zaXplLWJhc2UgKiAyLjYpKTsgLy8gfjM2cHgKQGZvbnQtc2l6ZS1oMjogICAgICAgICAgICBmbG9vcigoQGZvbnQtc2l6ZS1iYXNlICogMi4xNSkpOyAvLyB+MzBweApAZm9udC1zaXplLWgzOiAgICAgICAgICAgIGNlaWwoKEBmb250LXNpemUtYmFzZSAqIDEuNykpOyAvLyB+MjRweApAZm9udC1zaXplLWg0OiAgICAgICAgICAgIGNlaWwoKEBmb250LXNpemUtYmFzZSAqIDEuMjUpKTsgLy8gfjE4cHgKQGZvbnQtc2l6ZS1oNTogICAgICAgICAgICBAZm9udC1zaXplLWJhc2U7CkBmb250LXNpemUtaDY6ICAgICAgICAgICAgY2VpbCgoQGZvbnQtc2l6ZS1iYXNlICogMC44NSkpOyAvLyB+MTJweAoKLy8qKiBVbml0LWxlc3MgYGxpbmUtaGVpZ2h0YCBmb3IgdXNlIGluIGNvbXBvbmVudHMgbGlrZSBidXR0b25zLgpAbGluZS1oZWlnaHQtYmFzZTogICAgICAgIDEuNDI4NTcxNDI5OyAvLyAyMC8xNAovLyoqIENvbXB1dGVkICJsaW5lLWhlaWdodCIgKGBmb250LXNpemVgICogYGxpbmUtaGVpZ2h0YCkgZm9yIHVzZSB3aXRoIGBtYXJnaW5gLCBgcGFkZGluZ2AsIGV0Yy4KQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOiAgICBmbG9vcigoQGZvbnQtc2l6ZS1iYXNlICogQGxpbmUtaGVpZ2h0LWJhc2UpKTsgLy8gfjIwcHgKCi8vKiogQnkgZGVmYXVsdCwgdGhpcyBpbmhlcml0cyBmcm9tIHRoZSBgPGJvZHk+YC4KQGhlYWRpbmdzLWZvbnQtZmFtaWx5OiAgICBpbmhlcml0OwpAaGVhZGluZ3MtZm9udC13ZWlnaHQ6ICAgIDUwMDsKQGhlYWRpbmdzLWxpbmUtaGVpZ2h0OiAgICAxLjE7CkBoZWFkaW5ncy1jb2xvcjogICAgICAgICAgaW5oZXJpdDsKCgovLy0tIEljb25vZ3JhcGh5Ci8vCi8vIyMgU3BlY2lmeSBjdXN0b20gbG9jYXRpb25zIG9mIHRoZSBpbmNsdWRlIEdseXBoaWNvbnMgaWNvbiBmb250LiBVc2VmdWwgZm9yIHRob3NlIGluY2x1ZGluZyBCb290c3RyYXAgdmlhIEJvd2VyLgoKQGljb24tZm9udC1wYXRoOiAgICAgICAgICAiLi4vZm9udHMvIjsKQGljb24tZm9udC1uYW1lOiAgICAgICAgICAiZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhciI7CkBpY29uLWZvbnQtc3ZnLWlkOgkJCQkiZ2x5cGhpY29uc19oYWxmbGluZ3NyZWd1bGFyIjsKCi8vPT0gQ29tcG9uZW50cwovLwovLyMjIERlZmluZSBjb21tb24gcGFkZGluZyBhbmQgYm9yZGVyIHJhZGl1cyBzaXplcyBhbmQgbW9yZS4gVmFsdWVzIGJhc2VkIG9uIDE0cHggdGV4dCBhbmQgMS40MjggbGluZS1oZWlnaHQgKH4yMHB4IHRvIHN0YXJ0KS4KCkBwYWRkaW5nLWJhc2UtdmVydGljYWw6ICAgICA2cHg7CkBwYWRkaW5nLWJhc2UtaG9yaXpvbnRhbDogICAxMnB4OwoKQHBhZGRpbmctbGFyZ2UtdmVydGljYWw6ICAgIDEwcHg7CkBwYWRkaW5nLWxhcmdlLWhvcml6b250YWw6ICAxNnB4OwoKQHBhZGRpbmctc21hbGwtdmVydGljYWw6ICAgIDVweDsKQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDogIDEwcHg7CgpAcGFkZGluZy14cy12ZXJ0aWNhbDogICAgICAgMXB4OwpAcGFkZGluZy14cy1ob3Jpem9udGFsOiAgICAgNXB4OwoKQGxpbmUtaGVpZ2h0LWxhcmdlOiAgICAgICAgIDEuMzM7CkBsaW5lLWhlaWdodC1zbWFsbDogICAgICAgICAxLjU7CgpAYm9yZGVyLXJhZGl1cy1iYXNlOiAgICAgICAgNHB4OwpAYm9yZGVyLXJhZGl1cy1sYXJnZTogICAgICAgNnB4OwpAYm9yZGVyLXJhZGl1cy1zbWFsbDogICAgICAgM3B4OwoKLy8qKiBHbG9iYWwgY29sb3IgZm9yIGFjdGl2ZSBpdGVtcyAoZS5nLiwgbmF2cyBvciBkcm9wZG93bnMpLgpAY29tcG9uZW50LWFjdGl2ZS1jb2xvcjogICAgI2ZmZjsKLy8qKiBHbG9iYWwgYmFja2dyb3VuZCBjb2xvciBmb3IgYWN0aXZlIGl0ZW1zIChlLmcuLCBuYXZzIG9yIGRyb3Bkb3ducykuCkBjb21wb25lbnQtYWN0aXZlLWJnOiAgICAgICBAYnJhbmQtcHJpbWFyeTsKCi8vKiogV2lkdGggb2YgdGhlIGBib3JkZXJgIGZvciBnZW5lcmF0aW5nIGNhcmV0cyB0aGF0IGluZGljYXRvciBkcm9wZG93bnMuCkBjYXJldC13aWR0aC1iYXNlOiAgICAgICAgICA0cHg7Ci8vKiogQ2FyZXRzIGluY3JlYXNlIHNsaWdodGx5IGluIHNpemUgZm9yIGxhcmdlciBjb21wb25lbnRzLgpAY2FyZXQtd2lkdGgtbGFyZ2U6ICAgICAgICAgNXB4OwoKCi8vPT0gVGFibGVzCi8vCi8vIyMgQ3VzdG9taXplcyB0aGUgYC50YWJsZWAgY29tcG9uZW50IHdpdGggYmFzaWMgdmFsdWVzLCBlYWNoIHVzZWQgYWNyb3NzIGFsbCB0YWJsZSB2YXJpYXRpb25zLgoKLy8qKiBQYWRkaW5nIGZvciBgPHRoPmBzIGFuZCBgPHRkPmBzLgpAdGFibGUtY2VsbC1wYWRkaW5nOiAgICAgICAgICAgIDhweDsKLy8qKiBQYWRkaW5nIGZvciBjZWxscyBpbiBgLnRhYmxlLWNvbmRlbnNlZGAuCkB0YWJsZS1jb25kZW5zZWQtY2VsbC1wYWRkaW5nOiAgNXB4OwoKLy8qKiBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgdXNlZCBmb3IgYWxsIHRhYmxlcy4KQHRhYmxlLWJnOiAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BhcmVudDsKLy8qKiBCYWNrZ3JvdW5kIGNvbG9yIHVzZWQgZm9yIGAudGFibGUtc3RyaXBlZGAuCkB0YWJsZS1iZy1hY2NlbnQ6ICAgICAgICAgICAgICAgI2Y5ZjlmOTsKLy8qKiBCYWNrZ3JvdW5kIGNvbG9yIHVzZWQgZm9yIGAudGFibGUtaG92ZXJgLgpAdGFibGUtYmctaG92ZXI6ICAgICAgICAgICAgICAgICNmNWY1ZjU7CkB0YWJsZS1iZy1hY3RpdmU6ICAgICAgICAgICAgICAgQHRhYmxlLWJnLWhvdmVyOwoKLy8qKiBCb3JkZXIgY29sb3IgZm9yIHRhYmxlIGFuZCBjZWxsIGJvcmRlcnMuCkB0YWJsZS1ib3JkZXItY29sb3I6ICAgICAgICAgICAgI2RkZDsKCgovLz09IEJ1dHRvbnMKLy8KLy8jIyBGb3IgZWFjaCBvZiBCb290c3RyYXAncyBidXR0b25zLCBkZWZpbmUgdGV4dCwgYmFja2dyb3VuZCBhbmQgYm9yZGVyIGNvbG9yLgoKQGJ0bi1mb250LXdlaWdodDogICAgICAgICAgICAgICAgbm9ybWFsOwoKQGJ0bi1kZWZhdWx0LWNvbG9yOiAgICAgICAgICAgICAgIzMzMzsKQGJ0bi1kZWZhdWx0LWJnOiAgICAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi1kZWZhdWx0LWJvcmRlcjogICAgICAgICAgICAgI2NjYzsKCkBidG4tcHJpbWFyeS1jb2xvcjogICAgICAgICAgICAgICNmZmY7CkBidG4tcHJpbWFyeS1iZzogICAgICAgICAgICAgICAgIEBicmFuZC1wcmltYXJ5OwpAYnRuLXByaW1hcnktYm9yZGVyOiAgICAgICAgICAgICBkYXJrZW4oQGJ0bi1wcmltYXJ5LWJnLCA1JSk7CgpAYnRuLXN1Y2Nlc3MtY29sb3I6ICAgICAgICAgICAgICAjZmZmOwpAYnRuLXN1Y2Nlc3MtYmc6ICAgICAgICAgICAgICAgICBAYnJhbmQtc3VjY2VzczsKQGJ0bi1zdWNjZXNzLWJvcmRlcjogICAgICAgICAgICAgZGFya2VuKEBidG4tc3VjY2Vzcy1iZywgNSUpOwoKQGJ0bi1pbmZvLWNvbG9yOiAgICAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi1pbmZvLWJnOiAgICAgICAgICAgICAgICAgICAgQGJyYW5kLWluZm87CkBidG4taW5mby1ib3JkZXI6ICAgICAgICAgICAgICAgIGRhcmtlbihAYnRuLWluZm8tYmcsIDUlKTsKCkBidG4td2FybmluZy1jb2xvcjogICAgICAgICAgICAgICNmZmY7CkBidG4td2FybmluZy1iZzogICAgICAgICAgICAgICAgIEBicmFuZC13YXJuaW5nOwpAYnRuLXdhcm5pbmctYm9yZGVyOiAgICAgICAgICAgICBkYXJrZW4oQGJ0bi13YXJuaW5nLWJnLCA1JSk7CgpAYnRuLWRhbmdlci1jb2xvcjogICAgICAgICAgICAgICAjZmZmOwpAYnRuLWRhbmdlci1iZzogICAgICAgICAgICAgICAgICBAYnJhbmQtZGFuZ2VyOwpAYnRuLWRhbmdlci1ib3JkZXI6ICAgICAgICAgICAgICBkYXJrZW4oQGJ0bi1kYW5nZXItYmcsIDUlKTsKCkBidG4tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgIEBncmF5LWxpZ2h0OwoKCi8vPT0gRm9ybXMKLy8KLy8jIwoKLy8qKiBgPGlucHV0PmAgYmFja2dyb3VuZCBjb2xvcgpAaW5wdXQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAjZmZmOwovLyoqIGA8aW5wdXQgZGlzYWJsZWQ+YCBiYWNrZ3JvdW5kIGNvbG9yCkBpbnB1dC1iZy1kaXNhYmxlZDogICAgICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7CgovLyoqIFRleHQgY29sb3IgZm9yIGA8aW5wdXQ+YHMKQGlucHV0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgQGdyYXk7Ci8vKiogYDxpbnB1dD5gIGJvcmRlciBjb2xvcgpAaW5wdXQtYm9yZGVyOiAgICAgICAgICAgICAgICAgICAjY2NjOwovLyoqIGA8aW5wdXQ+YCBib3JkZXIgcmFkaXVzCkBpbnB1dC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgIEBib3JkZXItcmFkaXVzLWJhc2U7Ci8vKiogQm9yZGVyIGNvbG9yIGZvciBpbnB1dHMgb24gZm9jdXMKQGlucHV0LWJvcmRlci1mb2N1czogICAgICAgICAgICAgIzY2YWZlOTsKCi8vKiogUGxhY2Vob2xkZXIgdGV4dCBjb2xvcgpAaW5wdXQtY29sb3ItcGxhY2Vob2xkZXI6ICAgICAgICBAZ3JheS1saWdodDsKCi8vKiogRGVmYXVsdCBgLmZvcm0tY29udHJvbGAgaGVpZ2h0CkBpbnB1dC1oZWlnaHQtYmFzZTogICAgICAgICAgICAgIChAbGluZS1oZWlnaHQtY29tcHV0ZWQgKyAoQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCAqIDIpICsgMik7Ci8vKiogTGFyZ2UgYC5mb3JtLWNvbnRyb2xgIGhlaWdodApAaW5wdXQtaGVpZ2h0LWxhcmdlOiAgICAgICAgICAgICAoY2VpbChAZm9udC1zaXplLWxhcmdlICogQGxpbmUtaGVpZ2h0LWxhcmdlKSArIChAcGFkZGluZy1sYXJnZS12ZXJ0aWNhbCAqIDIpICsgMik7Ci8vKiogU21hbGwgYC5mb3JtLWNvbnRyb2xgIGhlaWdodApAaW5wdXQtaGVpZ2h0LXNtYWxsOiAgICAgICAgICAgICAoZmxvb3IoQGZvbnQtc2l6ZS1zbWFsbCAqIEBsaW5lLWhlaWdodC1zbWFsbCkgKyAoQHBhZGRpbmctc21hbGwtdmVydGljYWwgKiAyKSArIDIpOwoKQGxlZ2VuZC1jb2xvcjogICAgICAgICAgICAgICAgICAgQGdyYXktZGFyazsKQGxlZ2VuZC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgI2U1ZTVlNTsKCi8vKiogQmFja2dyb3VuZCBjb2xvciBmb3IgdGV4dHVhbCBpbnB1dCBhZGRvbnMKQGlucHV0LWdyb3VwLWFkZG9uLWJnOiAgICAgICAgICAgQGdyYXktbGlnaHRlcjsKLy8qKiBCb3JkZXIgY29sb3IgZm9yIHRleHR1YWwgaW5wdXQgYWRkb25zCkBpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I6IEBpbnB1dC1ib3JkZXI7CgoKLy89PSBEcm9wZG93bnMKLy8KLy8jIyBEcm9wZG93biBtZW51IGNvbnRhaW5lciBhbmQgY29udGVudHMuCgovLyoqIEJhY2tncm91bmQgZm9yIHRoZSBkcm9wZG93biBtZW51LgpAZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAjZmZmOwovLyoqIERyb3Bkb3duIG1lbnUgYGJvcmRlci1jb2xvcmAuCkBkcm9wZG93bi1ib3JkZXI6ICAgICAgICAgICAgICAgIHJnYmEoMCwwLDAsLjE1KTsKLy8qKiBEcm9wZG93biBtZW51IGBib3JkZXItY29sb3JgICoqZm9yIElFOCoqLgpAZHJvcGRvd24tZmFsbGJhY2stYm9yZGVyOiAgICAgICAjY2NjOwovLyoqIERpdmlkZXIgY29sb3IgZm9yIGJldHdlZW4gZHJvcGRvd24gaXRlbXMuCkBkcm9wZG93bi1kaXZpZGVyLWJnOiAgICAgICAgICAgICNlNWU1ZTU7CgovLyoqIERyb3Bkb3duIGxpbmsgdGV4dCBjb2xvci4KQGRyb3Bkb3duLWxpbmstY29sb3I6ICAgICAgICAgICAgQGdyYXktZGFyazsKLy8qKiBIb3ZlciBjb2xvciBmb3IgZHJvcGRvd24gbGlua3MuCkBkcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiAgICAgIGRhcmtlbihAZ3JheS1kYXJrLCA1JSk7Ci8vKiogSG92ZXIgYmFja2dyb3VuZCBmb3IgZHJvcGRvd24gbGlua3MuCkBkcm9wZG93bi1saW5rLWhvdmVyLWJnOiAgICAgICAgICNmNWY1ZjU7CgovLyoqIEFjdGl2ZSBkcm9wZG93biBtZW51IGl0ZW0gdGV4dCBjb2xvci4KQGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOiAgICAgQGNvbXBvbmVudC1hY3RpdmUtY29sb3I7Ci8vKiogQWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbSBiYWNrZ3JvdW5kIGNvbG9yLgpAZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICAgICAgICBAY29tcG9uZW50LWFjdGl2ZS1iZzsKCi8vKiogRGlzYWJsZWQgZHJvcGRvd24gbWVudSBpdGVtIGJhY2tncm91bmQgY29sb3IuCkBkcm9wZG93bi1saW5rLWRpc2FibGVkLWNvbG9yOiAgIEBncmF5LWxpZ2h0OwoKLy8qKiBUZXh0IGNvbG9yIGZvciBoZWFkZXJzIHdpdGhpbiBkcm9wZG93biBtZW51cy4KQGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgQGdyYXktbGlnaHQ7CgovLyBOb3RlOiBEZXByZWNhdGVkIEBkcm9wZG93bi1jYXJldC1jb2xvciBhcyBvZiB2My4xLjAKQGRyb3Bkb3duLWNhcmV0LWNvbG9yOiAgICAgICAgICAgIzAwMDsKCgovLy0tIFotaW5kZXggbWFzdGVyIGxpc3QKLy8KLy8gV2FybmluZzogQXZvaWQgY3VzdG9taXppbmcgdGhlc2UgdmFsdWVzLiBUaGV5J3JlIHVzZWQgZm9yIGEgYmlyZCdzIGV5ZSB2aWV3Ci8vIG9mIGNvbXBvbmVudHMgZGVwZW5kZW50IG9uIHRoZSB6LWF4aXMgYW5kIGFyZSBkZXNpZ25lZCB0byBhbGwgd29yayB0b2dldGhlci4KLy8KLy8gTm90ZTogVGhlc2UgdmFyaWFibGVzIGFyZSBub3QgZ2VuZXJhdGVkIGludG8gdGhlIEN1c3RvbWl6ZXIuCgpAemluZGV4LW5hdmJhcjogICAgICAgICAgICAxMDAwOwpAemluZGV4LWRyb3Bkb3duOiAgICAgICAgICAxMDAwOwpAemluZGV4LXBvcG92ZXI6ICAgICAgICAgICAxMDEwOwpAemluZGV4LXRvb2x0aXA6ICAgICAgICAgICAxMDMwOwpAemluZGV4LW5hdmJhci1maXhlZDogICAgICAxMDMwOwpAemluZGV4LW1vZGFsLWJhY2tncm91bmQ6ICAxMDQwOwpAemluZGV4LW1vZGFsOiAgICAgICAgICAgICAxMDUwOwoKCi8vPT0gTWVkaWEgcXVlcmllcyBicmVha3BvaW50cwovLwovLyMjIERlZmluZSB0aGUgYnJlYWtwb2ludHMgYXQgd2hpY2ggeW91ciBsYXlvdXQgd2lsbCBjaGFuZ2UsIGFkYXB0aW5nIHRvIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuCgovLyBFeHRyYSBzbWFsbCBzY3JlZW4gLyBwaG9uZQovLyBOb3RlOiBEZXByZWNhdGVkIEBzY3JlZW4teHMgYW5kIEBzY3JlZW4tcGhvbmUgYXMgb2YgdjMuMC4xCkBzY3JlZW4teHM6ICAgICAgICAgICAgICAgICAgNDgwcHg7CkBzY3JlZW4teHMtbWluOiAgICAgICAgICAgICAgQHNjcmVlbi14czsKQHNjcmVlbi1waG9uZTogICAgICAgICAgICAgICBAc2NyZWVuLXhzLW1pbjsKCi8vIFNtYWxsIHNjcmVlbiAvIHRhYmxldAovLyBOb3RlOiBEZXByZWNhdGVkIEBzY3JlZW4tc20gYW5kIEBzY3JlZW4tdGFibGV0IGFzIG9mIHYzLjAuMQpAc2NyZWVuLXNtOiAgICAgICAgICAgICAgICAgIDc2OHB4OwpAc2NyZWVuLXNtLW1pbjogICAgICAgICAgICAgIEBzY3JlZW4tc207CkBzY3JlZW4tdGFibGV0OiAgICAgICAgICAgICAgQHNjcmVlbi1zbS1taW47CgovLyBNZWRpdW0gc2NyZWVuIC8gZGVza3RvcAovLyBOb3RlOiBEZXByZWNhdGVkIEBzY3JlZW4tbWQgYW5kIEBzY3JlZW4tZGVza3RvcCBhcyBvZiB2My4wLjEKQHNjcmVlbi1tZDogICAgICAgICAgICAgICAgICA5OTJweDsKQHNjcmVlbi1tZC1taW46ICAgICAgICAgICAgICBAc2NyZWVuLW1kOwpAc2NyZWVuLWRlc2t0b3A6ICAgICAgICAgICAgIEBzY3JlZW4tbWQtbWluOwoKLy8gTGFyZ2Ugc2NyZWVuIC8gd2lkZSBkZXNrdG9wCi8vIE5vdGU6IERlcHJlY2F0ZWQgQHNjcmVlbi1sZyBhbmQgQHNjcmVlbi1sZy1kZXNrdG9wIGFzIG9mIHYzLjAuMQpAc2NyZWVuLWxnOiAgICAgICAgICAgICAgICAgIDEyMDBweDsKQHNjcmVlbi1sZy1taW46ICAgICAgICAgICAgICBAc2NyZWVuLWxnOwpAc2NyZWVuLWxnLWRlc2t0b3A6ICAgICAgICAgIEBzY3JlZW4tbGctbWluOwoKLy8gU28gbWVkaWEgcXVlcmllcyBkb24ndCBvdmVybGFwIHdoZW4gcmVxdWlyZWQsIHByb3ZpZGUgYSBtYXhpbXVtCkBzY3JlZW4teHMtbWF4OiAgICAgICAgICAgICAgKEBzY3JlZW4tc20tbWluIC0gMSk7CkBzY3JlZW4tc20tbWF4OiAgICAgICAgICAgICAgKEBzY3JlZW4tbWQtbWluIC0gMSk7CkBzY3JlZW4tbWQtbWF4OiAgICAgICAgICAgICAgKEBzY3JlZW4tbGctbWluIC0gMSk7CgoKLy89PSBHcmlkIHN5c3RlbQovLwovLyMjIERlZmluZSB5b3VyIGN1c3RvbSByZXNwb25zaXZlIGdyaWQuCgovLyoqIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBncmlkLgpAZ3JpZC1jb2x1bW5zOiAgICAgICAgICAgICAgMTI7Ci8vKiogUGFkZGluZyBiZXR3ZWVuIGNvbHVtbnMuIEdldHMgZGl2aWRlZCBpbiBoYWxmIGZvciB0aGUgbGVmdCBhbmQgcmlnaHQuCkBncmlkLWd1dHRlci13aWR0aDogICAgICAgICAzMHB4OwovLyBOYXZiYXIgY29sbGFwc2UKLy8qKiBQb2ludCBhdCB3aGljaCB0aGUgbmF2YmFyIGJlY29tZXMgdW5jb2xsYXBzZWQuCkBncmlkLWZsb2F0LWJyZWFrcG9pbnQ6ICAgICBAc2NyZWVuLXNtLW1pbjsKLy8qKiBQb2ludCBhdCB3aGljaCB0aGUgbmF2YmFyIGJlZ2lucyBjb2xsYXBzaW5nLgpAZ3JpZC1mbG9hdC1icmVha3BvaW50LW1heDogKEBncmlkLWZsb2F0LWJyZWFrcG9pbnQgLSAxKTsKCgovLz09IE5hdmJhcgovLwovLyMjCgovLyBCYXNpY3Mgb2YgYSBuYXZiYXIKQG5hdmJhci1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICA1MHB4OwpAbmF2YmFyLW1hcmdpbi1ib3R0b206ICAgICAgICAgICAgIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKQG5hdmJhci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwpAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDogICAgICAgIGZsb29yKChAZ3JpZC1ndXR0ZXItd2lkdGggLyAyKSk7CkBuYXZiYXItcGFkZGluZy12ZXJ0aWNhbDogICAgICAgICAgKChAbmF2YmFyLWhlaWdodCAtIEBsaW5lLWhlaWdodC1jb21wdXRlZCkgLyAyKTsKQG5hdmJhci1jb2xsYXBzZS1tYXgtaGVpZ2h0OiAgICAgICAzNDBweDsKCkBuYXZiYXItZGVmYXVsdC1jb2xvcjogICAgICAgICAgICAgIzc3NzsKQG5hdmJhci1kZWZhdWx0LWJnOiAgICAgICAgICAgICAgICAjZjhmOGY4OwpAbmF2YmFyLWRlZmF1bHQtYm9yZGVyOiAgICAgICAgICAgIGRhcmtlbihAbmF2YmFyLWRlZmF1bHQtYmcsIDYuNSUpOwoKLy8gTmF2YmFyIGxpbmtzCkBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICAjNzc3OwpAbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgIzMzMzsKQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItYmc6ICAgICAgICAgICAgIHRyYW5zcGFyZW50OwpAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAgIzU1NTsKQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWJnOiAgICAgICAgICAgIGRhcmtlbihAbmF2YmFyLWRlZmF1bHQtYmcsIDYuNSUpOwpAbmF2YmFyLWRlZmF1bHQtbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgI2NjYzsKQG5hdmJhci1kZWZhdWx0LWxpbmstZGlzYWJsZWQtYmc6ICAgICAgICAgIHRyYW5zcGFyZW50OwoKLy8gTmF2YmFyIGJyYW5kIGxhYmVsCkBuYXZiYXItZGVmYXVsdC1icmFuZC1jb2xvcjogICAgICAgICAgICAgICBAbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjsKQG5hdmJhci1kZWZhdWx0LWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgICAgIGRhcmtlbihAbmF2YmFyLWRlZmF1bHQtYnJhbmQtY29sb3IsIDEwJSk7CkBuYXZiYXItZGVmYXVsdC1icmFuZC1ob3Zlci1iZzogICAgICAgICAgICB0cmFuc3BhcmVudDsKCi8vIE5hdmJhciB0b2dnbGUKQG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogICAgICAgICAgICNkZGQ7CkBuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6ICAgICAgICAjODg4OwpAbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogICAgICAgI2RkZDsKCgovLyBJbnZlcnRlZCBuYXZiYXIKLy8gUmVzZXQgaW52ZXJ0ZWQgbmF2YmFyIGJhc2ljcwpAbmF2YmFyLWludmVyc2UtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwpAbmF2YmFyLWludmVyc2UtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICMyMjI7CkBuYXZiYXItaW52ZXJzZS1ib3JkZXI6ICAgICAgICAgICAgICAgICAgICAgZGFya2VuKEBuYXZiYXItaW52ZXJzZS1iZywgMTAlKTsKCi8vIEludmVydGVkIG5hdmJhciBsaW5rcwpAbmF2YmFyLWludmVyc2UtbGluay1jb2xvcjogICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwpAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgICNmZmY7CkBuYXZiYXItaW52ZXJzZS1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICAgdHJhbnNwYXJlbnQ7CkBuYXZiYXItaW52ZXJzZS1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgICAgQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I7CkBuYXZiYXItaW52ZXJzZS1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICAgZGFya2VuKEBuYXZiYXItaW52ZXJzZS1iZywgMTAlKTsKQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgICAjNDQ0OwpAbmF2YmFyLWludmVyc2UtbGluay1kaXNhYmxlZC1iZzogICAgICAgICAgIHRyYW5zcGFyZW50OwoKLy8gSW52ZXJ0ZWQgbmF2YmFyIGJyYW5kIGxhYmVsCkBuYXZiYXItaW52ZXJzZS1icmFuZC1jb2xvcjogICAgICAgICAgICAgICAgQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I7CkBuYXZiYXItaW52ZXJzZS1icmFuZC1ob3Zlci1jb2xvcjogICAgICAgICAgI2ZmZjsKQG5hdmJhci1pbnZlcnNlLWJyYW5kLWhvdmVyLWJnOiAgICAgICAgICAgICB0cmFuc3BhcmVudDsKCi8vIEludmVydGVkIG5hdmJhciB0b2dnbGUKQG5hdmJhci1pbnZlcnNlLXRvZ2dsZS1ob3Zlci1iZzogICAgICAgICAgICAjMzMzOwpAbmF2YmFyLWludmVyc2UtdG9nZ2xlLWljb24tYmFyLWJnOiAgICAgICAgICNmZmY7CkBuYXZiYXItaW52ZXJzZS10b2dnbGUtYm9yZGVyLWNvbG9yOiAgICAgICAgIzMzMzsKCgovLz09IE5hdnMKLy8KLy8jIwoKLy89PT0gU2hhcmVkIG5hdiBzdHlsZXMKQG5hdi1saW5rLXBhZGRpbmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAxMHB4IDE1cHg7CkBuYXYtbGluay1ob3Zlci1iZzogICAgICAgICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHRlcjsKCkBuYXYtZGlzYWJsZWQtbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHQ7CkBuYXYtZGlzYWJsZWQtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgICAgQGdyYXktbGlnaHQ7CgpAbmF2LW9wZW4tbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgICAgICAgICNmZmY7CgovLz09IFRhYnMKQG5hdi10YWJzLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICAjZGRkOwoKQG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICBAZ3JheS1saWdodGVyOwoKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICBAYm9keS1iZzsKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICBAZ3JheTsKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogICAjZGRkOwoKQG5hdi10YWJzLWp1c3RpZmllZC1saW5rLWJvcmRlci1jb2xvcjogICAgICAgICAgICAjZGRkOwpAbmF2LXRhYnMtanVzdGlmaWVkLWFjdGl2ZS1saW5rLWJvcmRlci1jb2xvcjogICAgIEBib2R5LWJnOwoKLy89PSBQaWxscwpAbmF2LXBpbGxzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICAgIEBib3JkZXItcmFkaXVzLWJhc2U7CkBuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICAgICAgICAgICAgQGNvbXBvbmVudC1hY3RpdmUtYmc7CkBuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgQGNvbXBvbmVudC1hY3RpdmUtY29sb3I7CgoKLy89PSBQYWdpbmF0aW9uCi8vCi8vIyMKCkBwYWdpbmF0aW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgIEBsaW5rLWNvbG9yOwpAcGFnaW5hdGlvbi1iZzogICAgICAgICAgICAgICAgICAgICAgICAjZmZmOwpAcGFnaW5hdGlvbi1ib3JkZXI6ICAgICAgICAgICAgICAgICAgICAjZGRkOwoKQHBhZ2luYXRpb24taG92ZXItY29sb3I6ICAgICAgICAgICAgICAgQGxpbmstaG92ZXItY29sb3I7CkBwYWdpbmF0aW9uLWhvdmVyLWJnOiAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7CkBwYWdpbmF0aW9uLWhvdmVyLWJvcmRlcjogICAgICAgICAgICAgICNkZGQ7CgpAcGFnaW5hdGlvbi1hY3RpdmUtY29sb3I6ICAgICAgICAgICAgICAjZmZmOwpAcGFnaW5hdGlvbi1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKQHBhZ2luYXRpb24tYWN0aXZlLWJvcmRlcjogICAgICAgICAgICAgQGJyYW5kLXByaW1hcnk7CgpAcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICBAZ3JheS1saWdodDsKQHBhZ2luYXRpb24tZGlzYWJsZWQtYmc6ICAgICAgICAgICAgICAgI2ZmZjsKQHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyOiAgICAgICAgICAgI2RkZDsKCgovLz09IFBhZ2VyCi8vCi8vIyMKCkBwYWdlci1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBwYWdpbmF0aW9uLWJnOwpAcGFnZXItYm9yZGVyOiAgICAgICAgICAgICAgICAgICAgICAgICBAcGFnaW5hdGlvbi1ib3JkZXI7CkBwYWdlci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgIDE1cHg7CgpAcGFnZXItaG92ZXItYmc6ICAgICAgICAgICAgICAgICAgICAgICBAcGFnaW5hdGlvbi1ob3Zlci1iZzsKCkBwYWdlci1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgICAgICAgIEBwYWdpbmF0aW9uLWFjdGl2ZS1iZzsKQHBhZ2VyLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICAgICAgICAgQHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOwoKQHBhZ2VyLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgICAgICAgQHBhZ2luYXRpb24tZGlzYWJsZWQtY29sb3I7CgoKLy89PSBKdW1ib3Ryb24KLy8KLy8jIwoKQGp1bWJvdHJvbi1wYWRkaW5nOiAgICAgICAgICAgICAgMzBweDsKQGp1bWJvdHJvbi1jb2xvcjogICAgICAgICAgICAgICAgaW5oZXJpdDsKQGp1bWJvdHJvbi1iZzogICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHRlcjsKQGp1bWJvdHJvbi1oZWFkaW5nLWNvbG9yOiAgICAgICAgaW5oZXJpdDsKQGp1bWJvdHJvbi1mb250LXNpemU6ICAgICAgICAgICAgY2VpbCgoQGZvbnQtc2l6ZS1iYXNlICogMS41KSk7CgoKLy89PSBGb3JtIHN0YXRlcyBhbmQgYWxlcnRzCi8vCi8vIyMgRGVmaW5lIGNvbG9ycyBmb3IgZm9ybSBmZWVkYmFjayBzdGF0ZXMgYW5kLCBieSBkZWZhdWx0LCBhbGVydHMuCgpAc3RhdGUtc3VjY2Vzcy10ZXh0OiAgICAgICAgICAgICAjM2M3NjNkOwpAc3RhdGUtc3VjY2Vzcy1iZzogICAgICAgICAgICAgICAjZGZmMGQ4OwpAc3RhdGUtc3VjY2Vzcy1ib3JkZXI6ICAgICAgICAgICBkYXJrZW4oc3BpbihAc3RhdGUtc3VjY2Vzcy1iZywgLTEwKSwgNSUpOwoKQHN0YXRlLWluZm8tdGV4dDogICAgICAgICAgICAgICAgIzMxNzA4ZjsKQHN0YXRlLWluZm8tYmc6ICAgICAgICAgICAgICAgICAgI2Q5ZWRmNzsKQHN0YXRlLWluZm8tYm9yZGVyOiAgICAgICAgICAgICAgZGFya2VuKHNwaW4oQHN0YXRlLWluZm8tYmcsIC0xMCksIDclKTsKCkBzdGF0ZS13YXJuaW5nLXRleHQ6ICAgICAgICAgICAgICM4YTZkM2I7CkBzdGF0ZS13YXJuaW5nLWJnOiAgICAgICAgICAgICAgICNmY2Y4ZTM7CkBzdGF0ZS13YXJuaW5nLWJvcmRlcjogICAgICAgICAgIGRhcmtlbihzcGluKEBzdGF0ZS13YXJuaW5nLWJnLCAtMTApLCA1JSk7CgpAc3RhdGUtZGFuZ2VyLXRleHQ6ICAgICAgICAgICAgICAjYTk0NDQyOwpAc3RhdGUtZGFuZ2VyLWJnOiAgICAgICAgICAgICAgICAjZjJkZWRlOwpAc3RhdGUtZGFuZ2VyLWJvcmRlcjogICAgICAgICAgICBkYXJrZW4oc3BpbihAc3RhdGUtZGFuZ2VyLWJnLCAtMTApLCA1JSk7CgoKLy89PSBUb29sdGlwcwovLwovLyMjCgovLyoqIFRvb2x0aXAgbWF4IHdpZHRoCkB0b29sdGlwLW1heC13aWR0aDogICAgICAgICAgIDIwMHB4OwovLyoqIFRvb2x0aXAgdGV4dCBjb2xvcgpAdG9vbHRpcC1jb2xvcjogICAgICAgICAgICAgICAjZmZmOwovLyoqIFRvb2x0aXAgYmFja2dyb3VuZCBjb2xvcgpAdG9vbHRpcC1iZzogICAgICAgICAgICAgICAgICAjMDAwOwpAdG9vbHRpcC1vcGFjaXR5OiAgICAgICAgICAgICAuOTsKCi8vKiogVG9vbHRpcCBhcnJvdyB3aWR0aApAdG9vbHRpcC1hcnJvdy13aWR0aDogICAgICAgICA1cHg7Ci8vKiogVG9vbHRpcCBhcnJvdyBjb2xvcgpAdG9vbHRpcC1hcnJvdy1jb2xvcjogICAgICAgICBAdG9vbHRpcC1iZzsKCgovLz09IFBvcG92ZXJzCi8vCi8vIyMKCi8vKiogUG9wb3ZlciBib2R5IGJhY2tncm91bmQgY29sb3IKQHBvcG92ZXItYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAjZmZmOwovLyoqIFBvcG92ZXIgbWF4aW11bSB3aWR0aApAcG9wb3Zlci1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAgIDI3NnB4OwovLyoqIFBvcG92ZXIgYm9yZGVyIGNvbG9yCkBwb3BvdmVyLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgcmdiYSgwLDAsMCwuMik7Ci8vKiogUG9wb3ZlciBmYWxsYmFjayBib3JkZXIgY29sb3IKQHBvcG92ZXItZmFsbGJhY2stYm9yZGVyLWNvbG9yOiAgICAgICAjY2NjOwoKLy8qKiBQb3BvdmVyIHRpdGxlIGJhY2tncm91bmQgY29sb3IKQHBvcG92ZXItdGl0bGUtYmc6ICAgICAgICAgICAgICAgICAgICBkYXJrZW4oQHBvcG92ZXItYmcsIDMlKTsKCi8vKiogUG9wb3ZlciBhcnJvdyB3aWR0aApAcG9wb3Zlci1hcnJvdy13aWR0aDogICAgICAgICAgICAgICAgIDEwcHg7Ci8vKiogUG9wb3ZlciBhcnJvdyBjb2xvcgpAcG9wb3Zlci1hcnJvdy1jb2xvcjogICAgICAgICAgICAgICAgICNmZmY7CgovLyoqIFBvcG92ZXIgb3V0ZXIgYXJyb3cgd2lkdGgKQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg6ICAgICAgICAgICAoQHBvcG92ZXItYXJyb3ctd2lkdGggKyAxKTsKLy8qKiBQb3BvdmVyIG91dGVyIGFycm93IGNvbG9yCkBwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOiAgICAgICAgICAgcmdiYSgwLDAsMCwuMjUpOwovLyoqIFBvcG92ZXIgb3V0ZXIgYXJyb3cgZmFsbGJhY2sgY29sb3IKQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I6ICAjOTk5OwoKCi8vPT0gTGFiZWxzCi8vCi8vIyMKCi8vKiogRGVmYXVsdCBsYWJlbCBiYWNrZ3JvdW5kIGNvbG9yCkBsYWJlbC1kZWZhdWx0LWJnOiAgICAgICAgICAgIEBncmF5LWxpZ2h0OwovLyoqIFByaW1hcnkgbGFiZWwgYmFja2dyb3VuZCBjb2xvcgpAbGFiZWwtcHJpbWFyeS1iZzogICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKLy8qKiBTdWNjZXNzIGxhYmVsIGJhY2tncm91bmQgY29sb3IKQGxhYmVsLXN1Y2Nlc3MtYmc6ICAgICAgICAgICAgQGJyYW5kLXN1Y2Nlc3M7Ci8vKiogSW5mbyBsYWJlbCBiYWNrZ3JvdW5kIGNvbG9yCkBsYWJlbC1pbmZvLWJnOiAgICAgICAgICAgICAgIEBicmFuZC1pbmZvOwovLyoqIFdhcm5pbmcgbGFiZWwgYmFja2dyb3VuZCBjb2xvcgpAbGFiZWwtd2FybmluZy1iZzogICAgICAgICAgICBAYnJhbmQtd2FybmluZzsKLy8qKiBEYW5nZXIgbGFiZWwgYmFja2dyb3VuZCBjb2xvcgpAbGFiZWwtZGFuZ2VyLWJnOiAgICAgICAgICAgICBAYnJhbmQtZGFuZ2VyOwoKLy8qKiBEZWZhdWx0IGxhYmVsIHRleHQgY29sb3IKQGxhYmVsLWNvbG9yOiAgICAgICAgICAgICAgICAgI2ZmZjsKLy8qKiBEZWZhdWx0IHRleHQgY29sb3Igb2YgYSBsaW5rZWQgbGFiZWwKQGxhYmVsLWxpbmstaG92ZXItY29sb3I6ICAgICAgI2ZmZjsKCgovLz09IE1vZGFscwovLwovLyMjCgovLyoqIFBhZGRpbmcgYXBwbGllZCB0byB0aGUgbW9kYWwgYm9keQpAbW9kYWwtaW5uZXItcGFkZGluZzogICAgICAgICAyMHB4OwoKLy8qKiBQYWRkaW5nIGFwcGxpZWQgdG8gdGhlIG1vZGFsIHRpdGxlCkBtb2RhbC10aXRsZS1wYWRkaW5nOiAgICAgICAgIDE1cHg7Ci8vKiogTW9kYWwgdGl0bGUgbGluZS1oZWlnaHQKQG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OiAgICAgQGxpbmUtaGVpZ2h0LWJhc2U7CgovLyoqIEJhY2tncm91bmQgY29sb3Igb2YgbW9kYWwgY29udGVudCBhcmVhCkBtb2RhbC1jb250ZW50LWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKLy8qKiBNb2RhbCBjb250ZW50IGJvcmRlciBjb2xvcgpAbW9kYWwtY29udGVudC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgIHJnYmEoMCwwLDAsLjIpOwovLyoqIE1vZGFsIGNvbnRlbnQgYm9yZGVyIGNvbG9yICoqZm9yIElFOCoqCkBtb2RhbC1jb250ZW50LWZhbGxiYWNrLWJvcmRlci1jb2xvcjogICAgICAgICAgIzk5OTsKCi8vKiogTW9kYWwgYmFja2Ryb3AgYmFja2dyb3VuZCBjb2xvcgpAbW9kYWwtYmFja2Ryb3AtYmc6ICAgICAgICAgICAjMDAwOwovLyoqIE1vZGFsIGJhY2tkcm9wIG9wYWNpdHkKQG1vZGFsLWJhY2tkcm9wLW9wYWNpdHk6ICAgICAgLjU7Ci8vKiogTW9kYWwgaGVhZGVyIGJvcmRlciBjb2xvcgpAbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAjZTVlNWU1OwovLyoqIE1vZGFsIGZvb3RlciBib3JkZXIgY29sb3IKQG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I6ICAgQG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I7CgpAbW9kYWwtbGc6ICAgICAgICAgICAgICAgICAgICA5MDBweDsKQG1vZGFsLW1kOiAgICAgICAgICAgICAgICAgICAgNjAwcHg7CkBtb2RhbC1zbTogICAgICAgICAgICAgICAgICAgIDMwMHB4OwoKCi8vPT0gQWxlcnRzCi8vCi8vIyMgRGVmaW5lIGFsZXJ0IGNvbG9ycywgYm9yZGVyIHJhZGl1cywgYW5kIHBhZGRpbmcuCgpAYWxlcnQtcGFkZGluZzogICAgICAgICAgICAgICAxNXB4OwpAYWxlcnQtYm9yZGVyLXJhZGl1czogICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwpAYWxlcnQtbGluay1mb250LXdlaWdodDogICAgICBib2xkOwoKQGFsZXJ0LXN1Y2Nlc3MtYmc6ICAgICAgICAgICAgQHN0YXRlLXN1Y2Nlc3MtYmc7CkBhbGVydC1zdWNjZXNzLXRleHQ6ICAgICAgICAgIEBzdGF0ZS1zdWNjZXNzLXRleHQ7CkBhbGVydC1zdWNjZXNzLWJvcmRlcjogICAgICAgIEBzdGF0ZS1zdWNjZXNzLWJvcmRlcjsKCkBhbGVydC1pbmZvLWJnOiAgICAgICAgICAgICAgIEBzdGF0ZS1pbmZvLWJnOwpAYWxlcnQtaW5mby10ZXh0OiAgICAgICAgICAgICBAc3RhdGUtaW5mby10ZXh0OwpAYWxlcnQtaW5mby1ib3JkZXI6ICAgICAgICAgICBAc3RhdGUtaW5mby1ib3JkZXI7CgpAYWxlcnQtd2FybmluZy1iZzogICAgICAgICAgICBAc3RhdGUtd2FybmluZy1iZzsKQGFsZXJ0LXdhcm5pbmctdGV4dDogICAgICAgICAgQHN0YXRlLXdhcm5pbmctdGV4dDsKQGFsZXJ0LXdhcm5pbmctYm9yZGVyOiAgICAgICAgQHN0YXRlLXdhcm5pbmctYm9yZGVyOwoKQGFsZXJ0LWRhbmdlci1iZzogICAgICAgICAgICAgQHN0YXRlLWRhbmdlci1iZzsKQGFsZXJ0LWRhbmdlci10ZXh0OiAgICAgICAgICAgQHN0YXRlLWRhbmdlci10ZXh0OwpAYWxlcnQtZGFuZ2VyLWJvcmRlcjogICAgICAgICBAc3RhdGUtZGFuZ2VyLWJvcmRlcjsKCgovLz09IFByb2dyZXNzIGJhcnMKLy8KLy8jIwoKLy8qKiBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSB3aG9sZSBwcm9ncmVzcyBjb21wb25lbnQKQHByb2dyZXNzLWJnOiAgICAgICAgICAgICAgICAgI2Y1ZjVmNTsKLy8qKiBQcm9ncmVzcyBiYXIgdGV4dCBjb2xvcgpAcHJvZ3Jlc3MtYmFyLWNvbG9yOiAgICAgICAgICAjZmZmOwoKLy8qKiBEZWZhdWx0IHByb2dyZXNzIGJhciBjb2xvcgpAcHJvZ3Jlc3MtYmFyLWJnOiAgICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKLy8qKiBTdWNjZXNzIHByb2dyZXNzIGJhciBjb2xvcgpAcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MtYmc6ICAgICBAYnJhbmQtc3VjY2VzczsKLy8qKiBXYXJuaW5nIHByb2dyZXNzIGJhciBjb2xvcgpAcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmc6ICAgICBAYnJhbmQtd2FybmluZzsKLy8qKiBEYW5nZXIgcHJvZ3Jlc3MgYmFyIGNvbG9yCkBwcm9ncmVzcy1iYXItZGFuZ2VyLWJnOiAgICAgIEBicmFuZC1kYW5nZXI7Ci8vKiogSW5mbyBwcm9ncmVzcyBiYXIgY29sb3IKQHByb2dyZXNzLWJhci1pbmZvLWJnOiAgICAgICAgQGJyYW5kLWluZm87CgoKLy89PSBMaXN0IGdyb3VwCi8vCi8vIyMKCi8vKiogQmFja2dyb3VuZCBjb2xvciBvbiBgLmxpc3QtZ3JvdXAtaXRlbWAKQGxpc3QtZ3JvdXAtYmc6ICAgICAgICAgICAgICAgICAjZmZmOwovLyoqIGAubGlzdC1ncm91cC1pdGVtYCBib3JkZXIgY29sb3IKQGxpc3QtZ3JvdXAtYm9yZGVyOiAgICAgICAgICAgICAjZGRkOwovLyoqIExpc3QgZ3JvdXAgYm9yZGVyIHJhZGl1cwpAbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOiAgICAgIEBib3JkZXItcmFkaXVzLWJhc2U7CgovLyoqIEJhY2tncm91bmQgY29sb3Igb2Ygc2luZ2xlIGxpc3QgZWxlbWVudHMgb24gaG92ZXIKQGxpc3QtZ3JvdXAtaG92ZXItYmc6ICAgICAgICAgICAjZjVmNWY1OwovLyoqIFRleHQgY29sb3Igb2YgYWN0aXZlIGxpc3QgZWxlbWVudHMKQGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOiAgICAgICBAY29tcG9uZW50LWFjdGl2ZS1jb2xvcjsKLy8qKiBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFjdGl2ZSBsaXN0IGVsZW1lbnRzCkBsaXN0LWdyb3VwLWFjdGl2ZS1iZzogICAgICAgICAgQGNvbXBvbmVudC1hY3RpdmUtYmc7Ci8vKiogQm9yZGVyIGNvbG9yIG9mIGFjdGl2ZSBsaXN0IGVsZW1lbnRzCkBsaXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXI6ICAgICAgQGxpc3QtZ3JvdXAtYWN0aXZlLWJnOwpAbGlzdC1ncm91cC1hY3RpdmUtdGV4dC1jb2xvcjogIGxpZ2h0ZW4oQGxpc3QtZ3JvdXAtYWN0aXZlLWJnLCA0MCUpOwoKQGxpc3QtZ3JvdXAtbGluay1jb2xvcjogICAgICAgICAjNTU1OwpAbGlzdC1ncm91cC1saW5rLWhlYWRpbmctY29sb3I6ICMzMzM7CgoKLy89PSBQYW5lbHMKLy8KLy8jIwoKQHBhbmVsLWJnOiAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQHBhbmVsLWJvZHktcGFkZGluZzogICAgICAgICAgMTVweDsKQHBhbmVsLWJvcmRlci1yYWRpdXM6ICAgICAgICAgQGJvcmRlci1yYWRpdXMtYmFzZTsKCi8vKiogQm9yZGVyIGNvbG9yIGZvciBlbGVtZW50cyB3aXRoaW4gcGFuZWxzCkBwYW5lbC1pbm5lci1ib3JkZXI6ICAgICAgICAgICNkZGQ7CkBwYW5lbC1mb290ZXItYmc6ICAgICAgICAgICAgICNmNWY1ZjU7CgpAcGFuZWwtZGVmYXVsdC10ZXh0OiAgICAgICAgICBAZ3JheS1kYXJrOwpAcGFuZWwtZGVmYXVsdC1ib3JkZXI6ICAgICAgICAjZGRkOwpAcGFuZWwtZGVmYXVsdC1oZWFkaW5nLWJnOiAgICAjZjVmNWY1OwoKQHBhbmVsLXByaW1hcnktdGV4dDogICAgICAgICAgI2ZmZjsKQHBhbmVsLXByaW1hcnktYm9yZGVyOiAgICAgICAgQGJyYW5kLXByaW1hcnk7CkBwYW5lbC1wcmltYXJ5LWhlYWRpbmctYmc6ICAgIEBicmFuZC1wcmltYXJ5OwoKQHBhbmVsLXN1Y2Nlc3MtdGV4dDogICAgICAgICAgQHN0YXRlLXN1Y2Nlc3MtdGV4dDsKQHBhbmVsLXN1Y2Nlc3MtYm9yZGVyOiAgICAgICAgQHN0YXRlLXN1Y2Nlc3MtYm9yZGVyOwpAcGFuZWwtc3VjY2Vzcy1oZWFkaW5nLWJnOiAgICBAc3RhdGUtc3VjY2Vzcy1iZzsKCkBwYW5lbC1pbmZvLXRleHQ6ICAgICAgICAgICAgIEBzdGF0ZS1pbmZvLXRleHQ7CkBwYW5lbC1pbmZvLWJvcmRlcjogICAgICAgICAgIEBzdGF0ZS1pbmZvLWJvcmRlcjsKQHBhbmVsLWluZm8taGVhZGluZy1iZzogICAgICAgQHN0YXRlLWluZm8tYmc7CgpAcGFuZWwtd2FybmluZy10ZXh0OiAgICAgICAgICBAc3RhdGUtd2FybmluZy10ZXh0OwpAcGFuZWwtd2FybmluZy1ib3JkZXI6ICAgICAgICBAc3RhdGUtd2FybmluZy1ib3JkZXI7CkBwYW5lbC13YXJuaW5nLWhlYWRpbmctYmc6ICAgIEBzdGF0ZS13YXJuaW5nLWJnOwoKQHBhbmVsLWRhbmdlci10ZXh0OiAgICAgICAgICAgQHN0YXRlLWRhbmdlci10ZXh0OwpAcGFuZWwtZGFuZ2VyLWJvcmRlcjogICAgICAgICBAc3RhdGUtZGFuZ2VyLWJvcmRlcjsKQHBhbmVsLWRhbmdlci1oZWFkaW5nLWJnOiAgICAgQHN0YXRlLWRhbmdlci1iZzsKCgovLz09IFRodW1ibmFpbHMKLy8KLy8jIwoKLy8qKiBQYWRkaW5nIGFyb3VuZCB0aGUgdGh1bWJuYWlsIGltYWdlCkB0aHVtYm5haWwtcGFkZGluZzogICAgICAgICAgIDRweDsKLy8qKiBUaHVtYm5haWwgYmFja2dyb3VuZCBjb2xvcgpAdGh1bWJuYWlsLWJnOiAgICAgICAgICAgICAgICBAYm9keS1iZzsKLy8qKiBUaHVtYm5haWwgYm9yZGVyIGNvbG9yCkB0aHVtYm5haWwtYm9yZGVyOiAgICAgICAgICAgICNkZGQ7Ci8vKiogVGh1bWJuYWlsIGJvcmRlciByYWRpdXMKQHRodW1ibmFpbC1ib3JkZXItcmFkaXVzOiAgICAgQGJvcmRlci1yYWRpdXMtYmFzZTsKCi8vKiogQ3VzdG9tIHRleHQgY29sb3IgZm9yIHRodW1ibmFpbCBjYXB0aW9ucwpAdGh1bWJuYWlsLWNhcHRpb24tY29sb3I6ICAgICBAdGV4dC1jb2xvcjsKLy8qKiBQYWRkaW5nIGFyb3VuZCB0aGUgdGh1bWJuYWlsIGNhcHRpb24KQHRodW1ibmFpbC1jYXB0aW9uLXBhZGRpbmc6ICAgOXB4OwoKCi8vPT0gV2VsbHMKLy8KLy8jIwoKQHdlbGwtYmc6ICAgICAgICAgICAgICAgICAgICAgI2Y1ZjVmNTsKQHdlbGwtYm9yZGVyOiAgICAgICAgICAgICAgICAgZGFya2VuKEB3ZWxsLWJnLCA3JSk7CgoKLy89PSBCYWRnZXMKLy8KLy8jIwoKQGJhZGdlLWNvbG9yOiAgICAgICAgICAgICAgICAgI2ZmZjsKLy8qKiBMaW5rZWQgYmFkZ2UgdGV4dCBjb2xvciBvbiBob3ZlcgpAYmFkZ2UtbGluay1ob3Zlci1jb2xvcjogICAgICAjZmZmOwpAYmFkZ2UtYmc6ICAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodDsKCi8vKiogQmFkZ2UgdGV4dCBjb2xvciBpbiBhY3RpdmUgbmF2IGxpbmsKQGJhZGdlLWFjdGl2ZS1jb2xvcjogICAgICAgICAgQGxpbmstY29sb3I7Ci8vKiogQmFkZ2UgYmFja2dyb3VuZCBjb2xvciBpbiBhY3RpdmUgbmF2IGxpbmsKQGJhZGdlLWFjdGl2ZS1iZzogICAgICAgICAgICAgI2ZmZjsKCkBiYWRnZS1mb250LXdlaWdodDogICAgICAgICAgIGJvbGQ7CkBiYWRnZS1saW5lLWhlaWdodDogICAgICAgICAgIDE7CkBiYWRnZS1ib3JkZXItcmFkaXVzOiAgICAgICAgIDEwcHg7CgoKLy89PSBCcmVhZGNydW1icwovLwovLyMjCgpAYnJlYWRjcnVtYi1wYWRkaW5nLXZlcnRpY2FsOiAgIDhweDsKQGJyZWFkY3J1bWItcGFkZGluZy1ob3Jpem9udGFsOiAxNXB4OwovLyoqIEJyZWFkY3J1bWIgYmFja2dyb3VuZCBjb2xvcgpAYnJlYWRjcnVtYi1iZzogICAgICAgICAgICAgICAgICNmNWY1ZjU7Ci8vKiogQnJlYWRjcnVtYiB0ZXh0IGNvbG9yCkBicmVhZGNydW1iLWNvbG9yOiAgICAgICAgICAgICAgI2NjYzsKLy8qKiBUZXh0IGNvbG9yIG9mIGN1cnJlbnQgcGFnZSBpbiB0aGUgYnJlYWRjcnVtYgpAYnJlYWRjcnVtYi1hY3RpdmUtY29sb3I6ICAgICAgIEBncmF5LWxpZ2h0OwovLyoqIFRleHR1YWwgc2VwYXJhdG9yIGZvciBiZXR3ZWVuIGJyZWFkY3J1bWIgZWxlbWVudHMKQGJyZWFkY3J1bWItc2VwYXJhdG9yOiAgICAgICAgICAiLyI7CgoKLy89PSBDYXJvdXNlbAovLwovLyMjCgpAY2Fyb3VzZWwtdGV4dC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgICAgICAgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjYpOwoKQGNhcm91c2VsLWNvbnRyb2wtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICNmZmY7CkBjYXJvdXNlbC1jb250cm9sLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICAxNSU7CkBjYXJvdXNlbC1jb250cm9sLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgICAuNTsKQGNhcm91c2VsLWNvbnRyb2wtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgIDIwcHg7CgpAY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1iZzogICAgICAgICAgICAgICAgI2ZmZjsKQGNhcm91c2VsLWluZGljYXRvci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICNmZmY7CgpAY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKCgovLz09IENsb3NlCi8vCi8vIyMKCkBjbG9zZS1mb250LXdlaWdodDogICAgICAgICAgIGJvbGQ7CkBjbG9zZS1jb2xvcjogICAgICAgICAgICAgICAgICMwMDA7CkBjbG9zZS10ZXh0LXNoYWRvdzogICAgICAgICAgIDAgMXB4IDAgI2ZmZjsKCgovLz09IENvZGUKLy8KLy8jIwoKQGNvZGUtY29sb3I6ICAgICAgICAgICAgICAgICAgI2M3MjU0ZTsKQGNvZGUtYmc6ICAgICAgICAgICAgICAgICAgICAgI2Y5ZjJmNDsKCkBrYmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICNmZmY7CkBrYmQtYmc6ICAgICAgICAgICAgICAgICAgICAgICMzMzM7CgpAcHJlLWJnOiAgICAgICAgICAgICAgICAgICAgICAjZjVmNWY1OwpAcHJlLWNvbG9yOiAgICAgICAgICAgICAgICAgICBAZ3JheS1kYXJrOwpAcHJlLWJvcmRlci1jb2xvcjogICAgICAgICAgICAjY2NjOwpAcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDogICAzNDBweDsKCgovLz09IFR5cGUKLy8KLy8jIwoKLy8qKiBUZXh0IG11dGVkIGNvbG9yCkB0ZXh0LW11dGVkOiAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwovLyoqIEFiYnJldmlhdGlvbnMgYW5kIGFjcm9ueW1zIGJvcmRlciBjb2xvcgpAYWJici1ib3JkZXItY29sb3I6ICAgICAgICAgICBAZ3JheS1saWdodDsKLy8qKiBIZWFkaW5ncyBzbWFsbCBjb2xvcgpAaGVhZGluZ3Mtc21hbGwtY29sb3I6ICAgICAgICBAZ3JheS1saWdodDsKLy8qKiBCbG9ja3F1b3RlIHNtYWxsIGNvbG9yCkBibG9ja3F1b3RlLXNtYWxsLWNvbG9yOiAgICAgIEBncmF5LWxpZ2h0OwovLyoqIEJsb2NrcXVvdGUgYm9yZGVyIGNvbG9yCkBibG9ja3F1b3RlLWJvcmRlci1jb2xvcjogICAgIEBncmF5LWxpZ2h0ZXI7Ci8vKiogUGFnZSBoZWFkZXIgYm9yZGVyIGNvbG9yCkBwYWdlLWhlYWRlci1ib3JkZXItY29sb3I6ICAgIEBncmF5LWxpZ2h0ZXI7CgoKLy89PSBNaXNjZWxsYW5lb3VzCi8vCi8vIyMKCi8vKiogSG9yaXpvbnRhbCBsaW5lIGNvbG9yLgpAaHItYm9yZGVyOiAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodGVyOwoKLy8qKiBIb3Jpem9udGFsIG9mZnNldCBmb3IgZm9ybXMgYW5kIGxpc3RzLgpAY29tcG9uZW50LW9mZnNldC1ob3Jpem9udGFsOiAxODBweDsKCgovLz09IENvbnRhaW5lciBzaXplcwovLwovLyMjIERlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBvZiBgLmNvbnRhaW5lcmAgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuCgovLyBTbWFsbCBzY3JlZW4gLyB0YWJsZXQKQGNvbnRhaW5lci10YWJsZXQ6ICAgICAgICAgICAgICgoNzIwcHggKyBAZ3JpZC1ndXR0ZXItd2lkdGgpKTsKLy8qKiBGb3IgYEBzY3JlZW4tc20tbWluYCBhbmQgdXAuCkBjb250YWluZXItc206ICAgICAgICAgICAgICAgICBAY29udGFpbmVyLXRhYmxldDsKCi8vIE1lZGl1bSBzY3JlZW4gLyBkZXNrdG9wCkBjb250YWluZXItZGVza3RvcDogICAgICAgICAgICAoKDk0MHB4ICsgQGdyaWQtZ3V0dGVyLXdpZHRoKSk7Ci8vKiogRm9yIGBAc2NyZWVuLW1kLW1pbmAgYW5kIHVwLgpAY29udGFpbmVyLW1kOiAgICAgICAgICAgICAgICAgQGNvbnRhaW5lci1kZXNrdG9wOwoKLy8gTGFyZ2Ugc2NyZWVuIC8gd2lkZSBkZXNrdG9wCkBjb250YWluZXItbGFyZ2UtZGVza3RvcDogICAgICAoKDExNDBweCArIEBncmlkLWd1dHRlci13aWR0aCkpOwovLyoqIEZvciBgQHNjcmVlbi1sZy1taW5gIGFuZCB1cC4KQGNvbnRhaW5lci1sZzogICAgICAgICAgICAgICAgIEBjb250YWluZXItbGFyZ2UtZGVza3RvcDsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/less/wells.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gV2VsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi53ZWxsIHsKICBtaW4taGVpZ2h0OiAyMHB4OwogIHBhZGRpbmc6IDE5cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2VsbC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAd2VsbC1ib3JkZXI7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICAuYm94LXNoYWRvdyhpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDUpKTsKICBibG9ja3F1b3RlIHsKICAgIGJvcmRlci1jb2xvcjogI2RkZDsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLDAsMCwuMTUpOwogIH0KfQoKLy8gU2l6ZXMKLndlbGwtbGcgewogIHBhZGRpbmc6IDI0cHg7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtbGFyZ2U7Cn0KLndlbGwtc20gewogIHBhZGRpbmc6IDlweDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1zbWFsbDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.1/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R2VuZXJhdGVkIG9uIDE1IE1hcmNoIDIwMjQuCgpgYGAKZnJlc2gtbm9kZTIwOmxlc3MucGhwJCBub2RlIC0tdmVyc2lvbgp2MjAuNS4wCgpmcmVzaC1ub2RlMjA6bGVzcy5waHAkIG5vZGUgLS12ZXJzaW9uCjkuOC4wCgpmcmVzaC1ub2RlMjA6bGVzcy5waHAkIG5wbSBpbnN0YWxsIGxlc3NAMi43LjIK4oCmCgpmcmVzaC1ub2RlMjA6bGVzcy5waHAkIG5vZGVfbW9kdWxlcy8uYmluL2xlc3NjIHRlc3QvRml4dHVyZXMvYm9vdHN0cmFwLTMuMS9sZXNzL2Jvb3RzdHJhcC5sZXNzID4gdGVzdC9GaXh0dXJlcy9ib290c3RyYXAtMy4xL2Nzcy9ib290c3RyYXAuY3NzCmBgYAoKPGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvYmxvYi92Mi43LjMvQ0hBTkdFTE9HLm1kPgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/css/bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovCmh0bWwgewogIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOwogIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKfQpib2R5IHsKICBtYXJnaW46IDA7Cn0KYXJ0aWNsZSwKYXNpZGUsCmRldGFpbHMsCmZpZ2NhcHRpb24sCmZpZ3VyZSwKZm9vdGVyLApoZWFkZXIsCmhncm91cCwKbWFpbiwKbmF2LApzZWN0aW9uLApzdW1tYXJ5IHsKICBkaXNwbGF5OiBibG9jazsKfQphdWRpbywKY2FudmFzLApwcm9ncmVzcywKdmlkZW8gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KYXVkaW86bm90KFtjb250cm9sc10pIHsKICBkaXNwbGF5OiBub25lOwogIGhlaWdodDogMDsKfQpbaGlkZGVuXSwKdGVtcGxhdGUgewogIGRpc3BsYXk6IG5vbmU7Cn0KYSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KYTphY3RpdmUsCmE6aG92ZXIgewogIG91dGxpbmU6IDA7Cn0KYWJiclt0aXRsZV0gewogIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7Cn0KYiwKc3Ryb25nIHsKICBmb250LXdlaWdodDogYm9sZDsKfQpkZm4gewogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQpoMSB7CiAgZm9udC1zaXplOiAyZW07CiAgbWFyZ2luOiAwLjY3ZW0gMDsKfQptYXJrIHsKICBiYWNrZ3JvdW5kOiAjZmYwOwogIGNvbG9yOiAjMDAwOwp9CnNtYWxsIHsKICBmb250LXNpemU6IDgwJTsKfQpzdWIsCnN1cCB7CiAgZm9udC1zaXplOiA3NSU7CiAgbGluZS1oZWlnaHQ6IDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQpzdXAgewogIHRvcDogLTAuNWVtOwp9CnN1YiB7CiAgYm90dG9tOiAtMC4yNWVtOwp9CmltZyB7CiAgYm9yZGVyOiAwOwp9CnN2Zzpub3QoOnJvb3QpIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CmZpZ3VyZSB7CiAgbWFyZ2luOiAxZW0gNDBweDsKfQpociB7CiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBoZWlnaHQ6IDA7Cn0KcHJlIHsKICBvdmVyZmxvdzogYXV0bzsKfQpjb2RlLAprYmQsCnByZSwKc2FtcCB7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMWVtOwp9CmJ1dHRvbiwKaW5wdXQsCm9wdGdyb3VwLApzZWxlY3QsCnRleHRhcmVhIHsKICBjb2xvcjogaW5oZXJpdDsKICBmb250OiBpbmhlcml0OwogIG1hcmdpbjogMDsKfQpidXR0b24gewogIG92ZXJmbG93OiB2aXNpYmxlOwp9CmJ1dHRvbiwKc2VsZWN0IHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQpidXR0b24sCmh0bWwgaW5wdXRbdHlwZT0iYnV0dG9uIl0sCmlucHV0W3R5cGU9InJlc2V0Il0sCmlucHV0W3R5cGU9InN1Ym1pdCJdIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KYnV0dG9uW2Rpc2FibGVkXSwKaHRtbCBpbnB1dFtkaXNhYmxlZF0gewogIGN1cnNvcjogZGVmYXVsdDsKfQpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsCmlucHV0OjotbW96LWZvY3VzLWlubmVyIHsKICBib3JkZXI6IDA7CiAgcGFkZGluZzogMDsKfQppbnB1dCB7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQppbnB1dFt0eXBlPSJjaGVja2JveCJdLAppbnB1dFt0eXBlPSJyYWRpbyJdIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHBhZGRpbmc6IDA7Cn0KaW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sCmlucHV0W3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKICBoZWlnaHQ6IGF1dG87Cn0KaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOwogIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwKaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQpmaWVsZHNldCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsKICBtYXJnaW46IDAgMnB4OwogIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsKfQpsZWdlbmQgewogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwp9CnRleHRhcmVhIHsKICBvdmVyZmxvdzogYXV0bzsKfQpvcHRncm91cCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KdGFibGUgewogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgYm9yZGVyLXNwYWNpbmc6IDA7Cn0KdGQsCnRoIHsKICBwYWRkaW5nOiAwOwp9CkBtZWRpYSBwcmludCB7CiAgKiB7CiAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIGEsCiAgYTp2aXNpdGVkIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KICBhW2hyZWZdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgKCIgYXR0cihocmVmKSAiKSI7CiAgfQogIGFiYnJbdGl0bGVdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgKCIgYXR0cih0aXRsZSkgIikiOwogIH0KICBhW2hyZWZePSJqYXZhc2NyaXB0OiJdOmFmdGVyLAogIGFbaHJlZl49IiMiXTphZnRlciB7CiAgICBjb250ZW50OiAiIjsKICB9CiAgcHJlLAogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CiAgdGhlYWQgewogICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogIH0KICB0ciwKICBpbWcgewogICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwogIH0KICBpbWcgewogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgfQogIHAsCiAgaDIsCiAgaDMgewogICAgb3JwaGFuczogMzsKICAgIHdpZG93czogMzsKICB9CiAgaDIsCiAgaDMgewogICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgfQogIHNlbGVjdCB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLnRhYmxlIHRkLAogIC50YWJsZSB0aCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgfQogIC5idG4gPiAuY2FyZXQsCiAgLmRyb3B1cCA+IC5idG4gPiAuY2FyZXQgewogICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMCAhaW1wb3J0YW50OwogIH0KICAubGFiZWwgewogICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICB9CiAgLnRhYmxlIHsKICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWJvcmRlcmVkIHRoLAogIC50YWJsZS1ib3JkZXJlZCB0ZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7CiAgfQp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnOwogIHNyYzogdXJsKCcuLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdCcpOwogIHNyYzogdXJsKCcuLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgnLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksIHVybCgnLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5zdmcjZ2x5cGhpY29uc19oYWxmbGluZ3NyZWd1bGFyJykgZm9ybWF0KCdzdmcnKTsKfQouZ2x5cGhpY29uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAxcHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cn0KLmdseXBoaWNvbi1hc3RlcmlzazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMmEiOwp9Ci5nbHlwaGljb24tcGx1czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMmIiOwp9Ci5nbHlwaGljb24tZXVybzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjBhYyI7Cn0KLmdseXBoaWNvbi1taW51czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjIxMiI7Cn0KLmdseXBoaWNvbi1jbG91ZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjYwMSI7Cn0KLmdseXBoaWNvbi1lbnZlbG9wZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcMjcwOSI7Cn0KLmdseXBoaWNvbi1wZW5jaWw6YmVmb3JlIHsKICBjb250ZW50OiAiXDI3MGYiOwp9Ci5nbHlwaGljb24tZ2xhc3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDEiOwp9Ci5nbHlwaGljb24tbXVzaWM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDIiOwp9Ci5nbHlwaGljb24tc2VhcmNoOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDAzIjsKfQouZ2x5cGhpY29uLWhlYXJ0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDA1IjsKfQouZ2x5cGhpY29uLXN0YXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDYiOwp9Ci5nbHlwaGljb24tc3Rhci1lbXB0eTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAwNyI7Cn0KLmdseXBoaWNvbi11c2VyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDA4IjsKfQouZ2x5cGhpY29uLWZpbG06YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMDkiOwp9Ci5nbHlwaGljb24tdGgtbGFyZ2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTAiOwp9Ci5nbHlwaGljb24tdGg6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTEiOwp9Ci5nbHlwaGljb24tdGgtbGlzdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxMiI7Cn0KLmdseXBoaWNvbi1vazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxMyI7Cn0KLmdseXBoaWNvbi1yZW1vdmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTQiOwp9Ci5nbHlwaGljb24tem9vbS1pbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxNSI7Cn0KLmdseXBoaWNvbi16b29tLW91dDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxNiI7Cn0KLmdseXBoaWNvbi1vZmY6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMTciOwp9Ci5nbHlwaGljb24tc2lnbmFsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDE4IjsKfQouZ2x5cGhpY29uLWNvZzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAxOSI7Cn0KLmdseXBoaWNvbi10cmFzaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyMCI7Cn0KLmdseXBoaWNvbi1ob21lOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDIxIjsKfQouZ2x5cGhpY29uLWZpbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjIiOwp9Ci5nbHlwaGljb24tdGltZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyMyI7Cn0KLmdseXBoaWNvbi1yb2FkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDI0IjsKfQouZ2x5cGhpY29uLWRvd25sb2FkLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyNSI7Cn0KLmdseXBoaWNvbi1kb3dubG9hZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAyNiI7Cn0KLmdseXBoaWNvbi11cGxvYWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjciOwp9Ci5nbHlwaGljb24taW5ib3g6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjgiOwp9Ci5nbHlwaGljb24tcGxheS1jaXJjbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMjkiOwp9Ci5nbHlwaGljb24tcmVwZWF0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDMwIjsKfQouZ2x5cGhpY29uLXJlZnJlc2g6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzEiOwp9Ci5nbHlwaGljb24tbGlzdC1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzIiOwp9Ci5nbHlwaGljb24tbG9jazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzMyI7Cn0KLmdseXBoaWNvbi1mbGFnOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDM0IjsKfQouZ2x5cGhpY29uLWhlYWRwaG9uZXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzUiOwp9Ci5nbHlwaGljb24tdm9sdW1lLW9mZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzNiI7Cn0KLmdseXBoaWNvbi12b2x1bWUtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTAzNyI7Cn0KLmdseXBoaWNvbi12b2x1bWUtdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwMzgiOwp9Ci5nbHlwaGljb24tcXJjb2RlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDM5IjsKfQouZ2x5cGhpY29uLWJhcmNvZGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNDAiOwp9Ci5nbHlwaGljb24tdGFnOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQxIjsKfQouZ2x5cGhpY29uLXRhZ3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNDIiOwp9Ci5nbHlwaGljb24tYm9vazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0MyI7Cn0KLmdseXBoaWNvbi1ib29rbWFyazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0NCI7Cn0KLmdseXBoaWNvbi1wcmludDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0NSI7Cn0KLmdseXBoaWNvbi1jYW1lcmE6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNDYiOwp9Ci5nbHlwaGljb24tZm9udDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0NyI7Cn0KLmdseXBoaWNvbi1ib2xkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDQ4IjsKfQouZ2x5cGhpY29uLWl0YWxpYzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA0OSI7Cn0KLmdseXBoaWNvbi10ZXh0LWhlaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1MCI7Cn0KLmdseXBoaWNvbi10ZXh0LXdpZHRoOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDUxIjsKfQouZ2x5cGhpY29uLWFsaWduLWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTIiOwp9Ci5nbHlwaGljb24tYWxpZ24tY2VudGVyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDUzIjsKfQouZ2x5cGhpY29uLWFsaWduLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDU0IjsKfQouZ2x5cGhpY29uLWFsaWduLWp1c3RpZnk6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTUiOwp9Ci5nbHlwaGljb24tbGlzdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1NiI7Cn0KLmdseXBoaWNvbi1pbmRlbnQtbGVmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA1NyI7Cn0KLmdseXBoaWNvbi1pbmRlbnQtcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTgiOwp9Ci5nbHlwaGljb24tZmFjZXRpbWUtdmlkZW86YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNTkiOwp9Ci5nbHlwaGljb24tcGljdHVyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2MCI7Cn0KLmdseXBoaWNvbi1tYXAtbWFya2VyOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDYyIjsKfQouZ2x5cGhpY29uLWFkanVzdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2MyI7Cn0KLmdseXBoaWNvbi10aW50OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDY0IjsKfQouZ2x5cGhpY29uLWVkaXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjUiOwp9Ci5nbHlwaGljb24tc2hhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjYiOwp9Ci5nbHlwaGljb24tY2hlY2s6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNjciOwp9Ci5nbHlwaGljb24tbW92ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA2OCI7Cn0KLmdseXBoaWNvbi1zdGVwLWJhY2t3YXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDY5IjsKfQouZ2x5cGhpY29uLWZhc3QtYmFja3dhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzAiOwp9Ci5nbHlwaGljb24tYmFja3dhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzEiOwp9Ci5nbHlwaGljb24tcGxheTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3MiI7Cn0KLmdseXBoaWNvbi1wYXVzZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3MyI7Cn0KLmdseXBoaWNvbi1zdG9wOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDc0IjsKfQouZ2x5cGhpY29uLWZvcndhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzUiOwp9Ci5nbHlwaGljb24tZmFzdC1mb3J3YXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDc2IjsKfQouZ2x5cGhpY29uLXN0ZXAtZm9yd2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3NyI7Cn0KLmdseXBoaWNvbi1lamVjdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA3OCI7Cn0KLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwNzkiOwp9Ci5nbHlwaGljb24tY2hldnJvbi1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4MCI7Cn0KLmdseXBoaWNvbi1wbHVzLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODEiOwp9Ci5nbHlwaGljb24tbWludXMtc2lnbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4MiI7Cn0KLmdseXBoaWNvbi1yZW1vdmUtc2lnbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4MyI7Cn0KLmdseXBoaWNvbi1vay1zaWduOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDg0IjsKfQouZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODUiOwp9Ci5nbHlwaGljb24taW5mby1zaWduOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDg2IjsKfQouZ2x5cGhpY29uLXNjcmVlbnNob3Q6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODciOwp9Ci5nbHlwaGljb24tcmVtb3ZlLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA4OCI7Cn0KLmdseXBoaWNvbi1vay1jaXJjbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUwODkiOwp9Ci5nbHlwaGljb24tYmFuLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA5MCI7Cn0KLmdseXBoaWNvbi1hcnJvdy1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDkxIjsKfQouZ2x5cGhpY29uLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDkyIjsKfQouZ2x5cGhpY29uLWFycm93LXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDkzIjsKfQouZ2x5cGhpY29uLWFycm93LWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGUwOTQiOwp9Ci5nbHlwaGljb24tc2hhcmUtYWx0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMDk1IjsKfQouZ2x5cGhpY29uLXJlc2l6ZS1mdWxsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMDk2IjsKfQouZ2x5cGhpY29uLXJlc2l6ZS1zbWFsbDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTA5NyI7Cn0KLmdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTAxIjsKfQouZ2x5cGhpY29uLWdpZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDIiOwp9Ci5nbHlwaGljb24tbGVhZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEwMyI7Cn0KLmdseXBoaWNvbi1maXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTA0IjsKfQouZ2x5cGhpY29uLWV5ZS1vcGVuOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTA1IjsKfQouZ2x5cGhpY29uLWV5ZS1jbG9zZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEwNiI7Cn0KLmdseXBoaWNvbi13YXJuaW5nLXNpZ246YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDciOwp9Ci5nbHlwaGljb24tcGxhbmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDgiOwp9Ci5nbHlwaGljb24tY2FsZW5kYXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMDkiOwp9Ci5nbHlwaGljb24tcmFuZG9tOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTEwIjsKfQouZ2x5cGhpY29uLWNvbW1lbnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTEiOwp9Ci5nbHlwaGljb24tbWFnbmV0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTEyIjsKfQouZ2x5cGhpY29uLWNoZXZyb24tdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTMiOwp9Ci5nbHlwaGljb24tY2hldnJvbi1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTE0IjsKfQouZ2x5cGhpY29uLXJldHdlZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTUiOwp9Ci5nbHlwaGljb24tc2hvcHBpbmctY2FydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTExNiI7Cn0KLmdseXBoaWNvbi1mb2xkZXItY2xvc2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTciOwp9Ci5nbHlwaGljb24tZm9sZGVyLW9wZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMTgiOwp9Ci5nbHlwaGljb24tcmVzaXplLXZlcnRpY2FsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTE5IjsKfQouZ2x5cGhpY29uLXJlc2l6ZS1ob3Jpem9udGFsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTIwIjsKfQouZ2x5cGhpY29uLWhkZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyMSI7Cn0KLmdseXBoaWNvbi1idWxsaG9ybjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyMiI7Cn0KLmdseXBoaWNvbi1iZWxsOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTIzIjsKfQouZ2x5cGhpY29uLWNlcnRpZmljYXRlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI0IjsKfQouZ2x5cGhpY29uLXRodW1icy11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyNSI7Cn0KLmdseXBoaWNvbi10aHVtYnMtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyNiI7Cn0KLmdseXBoaWNvbi1oYW5kLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI3IjsKfQouZ2x5cGhpY29uLWhhbmQtbGVmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEyOCI7Cn0KLmdseXBoaWNvbi1oYW5kLXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTI5IjsKfQouZ2x5cGhpY29uLWhhbmQtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzMCI7Cn0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzEiOwp9Ci5nbHlwaGljb24tY2lyY2xlLWFycm93LWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzIiOwp9Ci5nbHlwaGljb24tY2lyY2xlLWFycm93LXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTMzIjsKfQouZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTM0IjsKfQouZ2x5cGhpY29uLWdsb2JlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTM1IjsKfQouZ2x5cGhpY29uLXdyZW5jaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzNiI7Cn0KLmdseXBoaWNvbi10YXNrczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTEzNyI7Cn0KLmdseXBoaWNvbi1maWx0ZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxMzgiOwp9Ci5nbHlwaGljb24tYnJpZWZjYXNlOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTM5IjsKfQouZ2x5cGhpY29uLWZ1bGxzY3JlZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNDAiOwp9Ci5nbHlwaGljb24tZGFzaGJvYXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQxIjsKfQouZ2x5cGhpY29uLXBhcGVyY2xpcDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE0MiI7Cn0KLmdseXBoaWNvbi1oZWFydC1lbXB0eTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE0MyI7Cn0KLmdseXBoaWNvbi1saW5rOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQ0IjsKfQouZ2x5cGhpY29uLXBob25lOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQ1IjsKfQouZ2x5cGhpY29uLXB1c2hwaW46YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNDYiOwp9Ci5nbHlwaGljb24tdXNkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTQ4IjsKfQouZ2x5cGhpY29uLWdicDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE0OSI7Cn0KLmdseXBoaWNvbi1zb3J0OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTUwIjsKfQouZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTEiOwp9Ci5nbHlwaGljb24tc29ydC1ieS1hbHBoYWJldC1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTIiOwp9Ci5nbHlwaGljb24tc29ydC1ieS1vcmRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1MyI7Cn0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1NCI7Cn0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTUiOwp9Ci5nbHlwaGljb24tc29ydC1ieS1hdHRyaWJ1dGVzLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE1NiI7Cn0KLmdseXBoaWNvbi11bmNoZWNrZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTciOwp9Ci5nbHlwaGljb24tZXhwYW5kOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTU4IjsKfQouZ2x5cGhpY29uLWNvbGxhcHNlLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNTkiOwp9Ci5nbHlwaGljb24tY29sbGFwc2UtdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjAiOwp9Ci5nbHlwaGljb24tbG9nLWluOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTYxIjsKfQouZ2x5cGhpY29uLWZsYXNoOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTYyIjsKfQouZ2x5cGhpY29uLWxvZy1vdXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjMiOwp9Ci5nbHlwaGljb24tbmV3LXdpbmRvdzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2NCI7Cn0KLmdseXBoaWNvbi1yZWNvcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNjUiOwp9Ci5nbHlwaGljb24tc2F2ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2NiI7Cn0KLmdseXBoaWNvbi1vcGVuOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTY3IjsKfQouZ2x5cGhpY29uLXNhdmVkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTY4IjsKfQouZ2x5cGhpY29uLWltcG9ydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE2OSI7Cn0KLmdseXBoaWNvbi1leHBvcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNzAiOwp9Ci5nbHlwaGljb24tc2VuZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3MSI7Cn0KLmdseXBoaWNvbi1mbG9wcHktZGlzazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3MiI7Cn0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxNzMiOwp9Ci5nbHlwaGljb24tZmxvcHB5LXJlbW92ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3NCI7Cn0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3NSI7Cn0KLmdseXBoaWNvbi1mbG9wcHktb3BlbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3NiI7Cn0KLmdseXBoaWNvbi1jcmVkaXQtY2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3NyI7Cn0KLmdseXBoaWNvbi10cmFuc2ZlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE3OCI7Cn0KLmdseXBoaWNvbi1jdXRsZXJ5OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTc5IjsKfQouZ2x5cGhpY29uLWhlYWRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4MCI7Cn0KLmdseXBoaWNvbi1jb21wcmVzc2VkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTgxIjsKfQouZ2x5cGhpY29uLWVhcnBob25lOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTgyIjsKfQouZ2x5cGhpY29uLXBob25lLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4MyI7Cn0KLmdseXBoaWNvbi10b3dlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4NCI7Cn0KLmdseXBoaWNvbi1zdGF0czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4NSI7Cn0KLmdseXBoaWNvbi1zZC12aWRlbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4NiI7Cn0KLmdseXBoaWNvbi1oZC12aWRlbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE4NyI7Cn0KLmdseXBoaWNvbi1zdWJ0aXRsZXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxODgiOwp9Ci5nbHlwaGljb24tc291bmQtc3RlcmVvOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTg5IjsKfQouZ2x5cGhpY29uLXNvdW5kLWRvbGJ5OmJlZm9yZSB7CiAgY29udGVudDogIlxlMTkwIjsKfQouZ2x5cGhpY29uLXNvdW5kLTUtMTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE5MSI7Cn0KLmdseXBoaWNvbi1zb3VuZC02LTE6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTIiOwp9Ci5nbHlwaGljb24tc291bmQtNy0xOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTkzIjsKfQouZ2x5cGhpY29uLWNvcHlyaWdodC1tYXJrOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTk0IjsKfQouZ2x5cGhpY29uLXJlZ2lzdHJhdGlvbi1tYXJrOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTk1IjsKfQouZ2x5cGhpY29uLWNsb3VkLWRvd25sb2FkOmJlZm9yZSB7CiAgY29udGVudDogIlxlMTk3IjsKfQouZ2x5cGhpY29uLWNsb3VkLXVwbG9hZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZTE5OCI7Cn0KLmdseXBoaWNvbi10cmVlLWNvbmlmZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGUxOTkiOwp9Ci5nbHlwaGljb24tdHJlZS1kZWNpZHVvdXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGUyMDAiOwp9CiogewogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoqOmJlZm9yZSwKKjphZnRlciB7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Cmh0bWwgewogIGZvbnQtc2l6ZTogMTBweDsKICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7Cn0KYm9keSB7CiAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjMzMzMzMzOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KaW5wdXQsCmJ1dHRvbiwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CmEgewogIGNvbG9yOiAjNDI4YmNhOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQphOmhvdmVyLAphOmZvY3VzIHsKICBjb2xvcjogIzJhNjQ5NjsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQphOmZvY3VzIHsKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7Cn0KZmlndXJlIHsKICBtYXJnaW46IDA7Cn0KaW1nIHsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5pbWctcmVzcG9uc2l2ZSwKLnRodW1ibmFpbCA+IGltZywKLnRodW1ibmFpbCBhID4gaW1nLAouY2Fyb3VzZWwtaW5uZXIgPiAuaXRlbSA+IGltZywKLmNhcm91c2VsLWlubmVyID4gLml0ZW0gPiBhID4gaW1nIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJSBcOTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5pbWctcm91bmRlZCB7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5pbWctdGh1bWJuYWlsIHsKICBwYWRkaW5nOiA0cHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0OwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0OwogIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJSBcOTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5pbWctY2lyY2xlIHsKICBib3JkZXItcmFkaXVzOiA1MCU7Cn0KaHIgewogIG1hcmdpbi10b3A6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWVlZWU7Cn0KLnNyLW9ubHkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIG1hcmdpbjogLTFweDsKICBwYWRkaW5nOiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICBib3JkZXI6IDA7Cn0KLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICBwb3NpdGlvbjogc3RhdGljOwogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICBtYXJnaW46IDA7CiAgb3ZlcmZsb3c6IHZpc2libGU7CiAgY2xpcDogYXV0bzsKfQpoMSwKaDIsCmgzLApoNCwKaDUsCmg2LAouaDEsCi5oMiwKLmgzLAouaDQsCi5oNSwKLmg2IHsKICBmb250LWZhbWlseTogaW5oZXJpdDsKICBmb250LXdlaWdodDogNTAwOwogIGxpbmUtaGVpZ2h0OiAxLjE7CiAgY29sb3I6IGluaGVyaXQ7Cn0KaDEgc21hbGwsCmgyIHNtYWxsLApoMyBzbWFsbCwKaDQgc21hbGwsCmg1IHNtYWxsLApoNiBzbWFsbCwKLmgxIHNtYWxsLAouaDIgc21hbGwsCi5oMyBzbWFsbCwKLmg0IHNtYWxsLAouaDUgc21hbGwsCi5oNiBzbWFsbCwKaDEgLnNtYWxsLApoMiAuc21hbGwsCmgzIC5zbWFsbCwKaDQgLnNtYWxsLApoNSAuc21hbGwsCmg2IC5zbWFsbCwKLmgxIC5zbWFsbCwKLmgyIC5zbWFsbCwKLmgzIC5zbWFsbCwKLmg0IC5zbWFsbCwKLmg1IC5zbWFsbCwKLmg2IC5zbWFsbCB7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogIzc3Nzc3NzsKfQpoMSwKLmgxLApoMiwKLmgyLApoMywKLmgzIHsKICBtYXJnaW4tdG9wOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KaDEgc21hbGwsCi5oMSBzbWFsbCwKaDIgc21hbGwsCi5oMiBzbWFsbCwKaDMgc21hbGwsCi5oMyBzbWFsbCwKaDEgLnNtYWxsLAouaDEgLnNtYWxsLApoMiAuc21hbGwsCi5oMiAuc21hbGwsCmgzIC5zbWFsbCwKLmgzIC5zbWFsbCB7CiAgZm9udC1zaXplOiA2NSU7Cn0KaDQsCi5oNCwKaDUsCi5oNSwKaDYsCi5oNiB7CiAgbWFyZ2luLXRvcDogMTBweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Cmg0IHNtYWxsLAouaDQgc21hbGwsCmg1IHNtYWxsLAouaDUgc21hbGwsCmg2IHNtYWxsLAouaDYgc21hbGwsCmg0IC5zbWFsbCwKLmg0IC5zbWFsbCwKaDUgLnNtYWxsLAouaDUgLnNtYWxsLApoNiAuc21hbGwsCi5oNiAuc21hbGwgewogIGZvbnQtc2l6ZTogNzUlOwp9CmgxLAouaDEgewogIGZvbnQtc2l6ZTogMzZweDsKfQpoMiwKLmgyIHsKICBmb250LXNpemU6IDMwcHg7Cn0KaDMsCi5oMyB7CiAgZm9udC1zaXplOiAyNHB4Owp9Cmg0LAouaDQgewogIGZvbnQtc2l6ZTogMThweDsKfQpoNSwKLmg1IHsKICBmb250LXNpemU6IDE0cHg7Cn0KaDYsCi5oNiB7CiAgZm9udC1zaXplOiAxMnB4Owp9CnAgewogIG1hcmdpbjogMCAwIDEwcHg7Cn0KLmxlYWQgewogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuNDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubGVhZCB7CiAgICBmb250LXNpemU6IDIxcHg7CiAgfQp9CnNtYWxsLAouc21hbGwgewogIGZvbnQtc2l6ZTogODUlOwp9CmNpdGUgewogIGZvbnQtc3R5bGU6IG5vcm1hbDsKfQptYXJrLAoubWFyayB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKICBwYWRkaW5nOiAwLjJlbTsKfQoudGV4dC1sZWZ0IHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci50ZXh0LXJpZ2h0IHsKICB0ZXh0LWFsaWduOiByaWdodDsKfQoudGV4dC1jZW50ZXIgewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudGV4dC1qdXN0aWZ5IHsKICB0ZXh0LWFsaWduOiBqdXN0aWZ5Owp9Ci50ZXh0LW5vd3JhcCB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoudGV4dC1sb3dlcmNhc2UgewogIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7Cn0KLnRleHQtdXBwZXJjYXNlIHsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9Ci50ZXh0LWNhcGl0YWxpemUgewogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9Ci50ZXh0LW11dGVkIHsKICBjb2xvcjogIzc3Nzc3NzsKfQoudGV4dC1wcmltYXJ5IHsKICBjb2xvcjogIzQyOGJjYTsKfQphLnRleHQtcHJpbWFyeTpob3ZlciB7CiAgY29sb3I6ICMzMDcxYTk7Cn0KLnRleHQtc3VjY2VzcyB7CiAgY29sb3I6ICMzYzc2M2Q7Cn0KYS50ZXh0LXN1Y2Nlc3M6aG92ZXIgewogIGNvbG9yOiAjMmI1NDJjOwp9Ci50ZXh0LWluZm8gewogIGNvbG9yOiAjMzE3MDhmOwp9CmEudGV4dC1pbmZvOmhvdmVyIHsKICBjb2xvcjogIzI0NTI2OTsKfQoudGV4dC13YXJuaW5nIHsKICBjb2xvcjogIzhhNmQzYjsKfQphLnRleHQtd2FybmluZzpob3ZlciB7CiAgY29sb3I6ICM2NjUxMmM7Cn0KLnRleHQtZGFuZ2VyIHsKICBjb2xvcjogI2E5NDQ0MjsKfQphLnRleHQtZGFuZ2VyOmhvdmVyIHsKICBjb2xvcjogIzg0MzUzNDsKfQouYmctcHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKfQphLmJnLXByaW1hcnk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICMzMDcxYTk7Cn0KLmJnLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KYS5iZy1zdWNjZXNzOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzFlMmIzOwp9Ci5iZy1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3Owp9CmEuYmctaW5mbzpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2FmZDllZTsKfQouYmctd2FybmluZyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQphLmJnLXdhcm5pbmc6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmN2VjYjU7Cn0KLmJnLWRhbmdlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKfQphLmJnLWRhbmdlcjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U0YjliOTsKfQoucGFnZS1oZWFkZXIgewogIHBhZGRpbmctYm90dG9tOiA5cHg7CiAgbWFyZ2luOiA0MHB4IDAgMjBweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZWVlZTsKfQp1bCwKb2wgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQp1bCB1bCwKb2wgdWwsCnVsIG9sLApvbCBvbCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoubGlzdC11bnN0eWxlZCB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmxpc3QtaW5saW5lIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBtYXJnaW4tbGVmdDogLTVweDsKfQoubGlzdC1pbmxpbmUgPiBsaSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctbGVmdDogNXB4OwogIHBhZGRpbmctcmlnaHQ6IDVweDsKfQpkbCB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CmR0LApkZCB7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7Cn0KZHQgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CmRkIHsKICBtYXJnaW4tbGVmdDogMDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZGwtaG9yaXpvbnRhbCBkdCB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiAxNjBweDsKICAgIGNsZWFyOiBsZWZ0OwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIH0KICAuZGwtaG9yaXpvbnRhbCBkZCB7CiAgICBtYXJnaW4tbGVmdDogMTgwcHg7CiAgfQp9CmFiYnJbdGl0bGVdLAphYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHsKICBjdXJzb3I6IGhlbHA7CiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjNzc3Nzc3Owp9Ci5pbml0aWFsaXNtIHsKICBmb250LXNpemU6IDkwJTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CmJsb2NrcXVvdGUgewogIHBhZGRpbmc6IDEwcHggMjBweDsKICBtYXJnaW46IDAgMCAyMHB4OwogIGZvbnQtc2l6ZTogMTcuNXB4OwogIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2VlZWVlZTsKfQpibG9ja3F1b3RlIHA6bGFzdC1jaGlsZCwKYmxvY2txdW90ZSB1bDpsYXN0LWNoaWxkLApibG9ja3F1b3RlIG9sOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KYmxvY2txdW90ZSBmb290ZXIsCmJsb2NrcXVvdGUgc21hbGwsCmJsb2NrcXVvdGUgLnNtYWxsIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDgwJTsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICBjb2xvcjogIzc3Nzc3NzsKfQpibG9ja3F1b3RlIGZvb3RlcjpiZWZvcmUsCmJsb2NrcXVvdGUgc21hbGw6YmVmb3JlLApibG9ja3F1b3RlIC5zbWFsbDpiZWZvcmUgewogIGNvbnRlbnQ6ICdcMjAxNCBcMDBBMCc7Cn0KLmJsb2NrcXVvdGUtcmV2ZXJzZSwKYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMDsKICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCAjZWVlZWVlOwogIGJvcmRlci1sZWZ0OiAwOwogIHRleHQtYWxpZ246IHJpZ2h0Owp9Ci5ibG9ja3F1b3RlLXJldmVyc2UgZm9vdGVyOmJlZm9yZSwKYmxvY2txdW90ZS5wdWxsLXJpZ2h0IGZvb3RlcjpiZWZvcmUsCi5ibG9ja3F1b3RlLXJldmVyc2Ugc21hbGw6YmVmb3JlLApibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGw6YmVmb3JlLAouYmxvY2txdW90ZS1yZXZlcnNlIC5zbWFsbDpiZWZvcmUsCmJsb2NrcXVvdGUucHVsbC1yaWdodCAuc21hbGw6YmVmb3JlIHsKICBjb250ZW50OiAnJzsKfQouYmxvY2txdW90ZS1yZXZlcnNlIGZvb3RlcjphZnRlciwKYmxvY2txdW90ZS5wdWxsLXJpZ2h0IGZvb3RlcjphZnRlciwKLmJsb2NrcXVvdGUtcmV2ZXJzZSBzbWFsbDphZnRlciwKYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHNtYWxsOmFmdGVyLAouYmxvY2txdW90ZS1yZXZlcnNlIC5zbWFsbDphZnRlciwKYmxvY2txdW90ZS5wdWxsLXJpZ2h0IC5zbWFsbDphZnRlciB7CiAgY29udGVudDogJ1wwMEEwIFwyMDE0JzsKfQpibG9ja3F1b3RlOmJlZm9yZSwKYmxvY2txdW90ZTphZnRlciB7CiAgY29udGVudDogIiI7Cn0KYWRkcmVzcyB7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7Cn0KY29kZSwKa2JkLApwcmUsCnNhbXAgewogIGZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9CmNvZGUgewogIHBhZGRpbmc6IDJweCA0cHg7CiAgZm9udC1zaXplOiA5MCU7CiAgY29sb3I6ICNjNzI1NGU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjJmNDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0Ka2JkIHsKICBwYWRkaW5nOiAycHggNHB4OwogIGZvbnQtc2l6ZTogOTAlOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzMzM7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0Ka2JkIGtiZCB7CiAgcGFkZGluZzogMDsKICBmb250LXNpemU6IDEwMCU7CiAgYm94LXNoYWRvdzogbm9uZTsKfQpwcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDkuNXB4OwogIG1hcmdpbjogMCAwIDEwcHg7CiAgZm9udC1zaXplOiAxM3B4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgY29sb3I6ICMzMzMzMzM7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQpwcmUgY29kZSB7CiAgcGFkZGluZzogMDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLnByZS1zY3JvbGxhYmxlIHsKICBtYXgtaGVpZ2h0OiAzNDBweDsKICBvdmVyZmxvdy15OiBzY3JvbGw7Cn0KLmNvbnRhaW5lciB7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIHBhZGRpbmctbGVmdDogMTVweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5jb250YWluZXIgewogICAgd2lkdGg6IDc1MHB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuY29udGFpbmVyIHsKICAgIHdpZHRoOiA5NzBweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5jb250YWluZXIgewogICAgd2lkdGg6IDExNzBweDsKICB9Cn0KLmNvbnRhaW5lci1mbHVpZCB7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIHBhZGRpbmctbGVmdDogMTVweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4Owp9Ci5yb3cgewogIG1hcmdpbi1sZWZ0OiAtMTVweDsKICBtYXJnaW4tcmlnaHQ6IC0xNXB4Owp9Ci5jb2wteHMtMSwgLmNvbC1zbS0xLCAuY29sLW1kLTEsIC5jb2wtbGctMSwgLmNvbC14cy0yLCAuY29sLXNtLTIsIC5jb2wtbWQtMiwgLmNvbC1sZy0yLCAuY29sLXhzLTMsIC5jb2wtc20tMywgLmNvbC1tZC0zLCAuY29sLWxnLTMsIC5jb2wteHMtNCwgLmNvbC1zbS00LCAuY29sLW1kLTQsIC5jb2wtbGctNCwgLmNvbC14cy01LCAuY29sLXNtLTUsIC5jb2wtbWQtNSwgLmNvbC1sZy01LCAuY29sLXhzLTYsIC5jb2wtc20tNiwgLmNvbC1tZC02LCAuY29sLWxnLTYsIC5jb2wteHMtNywgLmNvbC1zbS03LCAuY29sLW1kLTcsIC5jb2wtbGctNywgLmNvbC14cy04LCAuY29sLXNtLTgsIC5jb2wtbWQtOCwgLmNvbC1sZy04LCAuY29sLXhzLTksIC5jb2wtc20tOSwgLmNvbC1tZC05LCAuY29sLWxnLTksIC5jb2wteHMtMTAsIC5jb2wtc20tMTAsIC5jb2wtbWQtMTAsIC5jb2wtbGctMTAsIC5jb2wteHMtMTEsIC5jb2wtc20tMTEsIC5jb2wtbWQtMTEsIC5jb2wtbGctMTEsIC5jb2wteHMtMTIsIC5jb2wtc20tMTIsIC5jb2wtbWQtMTIsIC5jb2wtbGctMTIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtaW4taGVpZ2h0OiAxcHg7CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIHBhZGRpbmctcmlnaHQ6IDE1cHg7Cn0KLmNvbC14cy0xLCAuY29sLXhzLTIsIC5jb2wteHMtMywgLmNvbC14cy00LCAuY29sLXhzLTUsIC5jb2wteHMtNiwgLmNvbC14cy03LCAuY29sLXhzLTgsIC5jb2wteHMtOSwgLmNvbC14cy0xMCwgLmNvbC14cy0xMSwgLmNvbC14cy0xMiB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmNvbC14cy0xMiB7CiAgd2lkdGg6IDEwMCU7Cn0KLmNvbC14cy0xMSB7CiAgd2lkdGg6IDkxLjY2NjY2NjY3JTsKfQouY29sLXhzLTEwIHsKICB3aWR0aDogODMuMzMzMzMzMzMlOwp9Ci5jb2wteHMtOSB7CiAgd2lkdGg6IDc1JTsKfQouY29sLXhzLTggewogIHdpZHRoOiA2Ni42NjY2NjY2NyU7Cn0KLmNvbC14cy03IHsKICB3aWR0aDogNTguMzMzMzMzMzMlOwp9Ci5jb2wteHMtNiB7CiAgd2lkdGg6IDUwJTsKfQouY29sLXhzLTUgewogIHdpZHRoOiA0MS42NjY2NjY2NyU7Cn0KLmNvbC14cy00IHsKICB3aWR0aDogMzMuMzMzMzMzMzMlOwp9Ci5jb2wteHMtMyB7CiAgd2lkdGg6IDI1JTsKfQouY29sLXhzLTIgewogIHdpZHRoOiAxNi42NjY2NjY2NyU7Cn0KLmNvbC14cy0xIHsKICB3aWR0aDogOC4zMzMzMzMzMyU7Cn0KLmNvbC14cy1wdWxsLTEyIHsKICByaWdodDogMTAwJTsKfQouY29sLXhzLXB1bGwtMTEgewogIHJpZ2h0OiA5MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdWxsLTEwIHsKICByaWdodDogODMuMzMzMzMzMzMlOwp9Ci5jb2wteHMtcHVsbC05IHsKICByaWdodDogNzUlOwp9Ci5jb2wteHMtcHVsbC04IHsKICByaWdodDogNjYuNjY2NjY2NjclOwp9Ci5jb2wteHMtcHVsbC03IHsKICByaWdodDogNTguMzMzMzMzMzMlOwp9Ci5jb2wteHMtcHVsbC02IHsKICByaWdodDogNTAlOwp9Ci5jb2wteHMtcHVsbC01IHsKICByaWdodDogNDEuNjY2NjY2NjclOwp9Ci5jb2wteHMtcHVsbC00IHsKICByaWdodDogMzMuMzMzMzMzMzMlOwp9Ci5jb2wteHMtcHVsbC0zIHsKICByaWdodDogMjUlOwp9Ci5jb2wteHMtcHVsbC0yIHsKICByaWdodDogMTYuNjY2NjY2NjclOwp9Ci5jb2wteHMtcHVsbC0xIHsKICByaWdodDogOC4zMzMzMzMzMyU7Cn0KLmNvbC14cy1wdWxsLTAgewogIHJpZ2h0OiBhdXRvOwp9Ci5jb2wteHMtcHVzaC0xMiB7CiAgbGVmdDogMTAwJTsKfQouY29sLXhzLXB1c2gtMTEgewogIGxlZnQ6IDkxLjY2NjY2NjY3JTsKfQouY29sLXhzLXB1c2gtMTAgewogIGxlZnQ6IDgzLjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtOSB7CiAgbGVmdDogNzUlOwp9Ci5jb2wteHMtcHVzaC04IHsKICBsZWZ0OiA2Ni42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTcgewogIGxlZnQ6IDU4LjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtNiB7CiAgbGVmdDogNTAlOwp9Ci5jb2wteHMtcHVzaC01IHsKICBsZWZ0OiA0MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTQgewogIGxlZnQ6IDMzLjMzMzMzMzMzJTsKfQouY29sLXhzLXB1c2gtMyB7CiAgbGVmdDogMjUlOwp9Ci5jb2wteHMtcHVzaC0yIHsKICBsZWZ0OiAxNi42NjY2NjY2NyU7Cn0KLmNvbC14cy1wdXNoLTEgewogIGxlZnQ6IDguMzMzMzMzMzMlOwp9Ci5jb2wteHMtcHVzaC0wIHsKICBsZWZ0OiBhdXRvOwp9Ci5jb2wteHMtb2Zmc2V0LTEyIHsKICBtYXJnaW4tbGVmdDogMTAwJTsKfQouY29sLXhzLW9mZnNldC0xMSB7CiAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY3JTsKfQouY29sLXhzLW9mZnNldC0xMCB7CiAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzJTsKfQouY29sLXhzLW9mZnNldC05IHsKICBtYXJnaW4tbGVmdDogNzUlOwp9Ci5jb2wteHMtb2Zmc2V0LTggewogIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NyU7Cn0KLmNvbC14cy1vZmZzZXQtNyB7CiAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzJTsKfQouY29sLXhzLW9mZnNldC02IHsKICBtYXJnaW4tbGVmdDogNTAlOwp9Ci5jb2wteHMtb2Zmc2V0LTUgewogIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NyU7Cn0KLmNvbC14cy1vZmZzZXQtNCB7CiAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzJTsKfQouY29sLXhzLW9mZnNldC0zIHsKICBtYXJnaW4tbGVmdDogMjUlOwp9Ci5jb2wteHMtb2Zmc2V0LTIgewogIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NyU7Cn0KLmNvbC14cy1vZmZzZXQtMSB7CiAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMlOwp9Ci5jb2wteHMtb2Zmc2V0LTAgewogIG1hcmdpbi1sZWZ0OiAwJTsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuY29sLXNtLTEsIC5jb2wtc20tMiwgLmNvbC1zbS0zLCAuY29sLXNtLTQsIC5jb2wtc20tNSwgLmNvbC1zbS02LCAuY29sLXNtLTcsIC5jb2wtc20tOCwgLmNvbC1zbS05LCAuY29sLXNtLTEwLCAuY29sLXNtLTExLCAuY29sLXNtLTEyIHsKICAgIGZsb2F0OiBsZWZ0OwogIH0KICAuY29sLXNtLTEyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KICAuY29sLXNtLTExIHsKICAgIHdpZHRoOiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tMTAgewogICAgd2lkdGg6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS05IHsKICAgIHdpZHRoOiA3NSU7CiAgfQogIC5jb2wtc20tOCB7CiAgICB3aWR0aDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLTcgewogICAgd2lkdGg6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS02IHsKICAgIHdpZHRoOiA1MCU7CiAgfQogIC5jb2wtc20tNSB7CiAgICB3aWR0aDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLTQgewogICAgd2lkdGg6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS0zIHsKICAgIHdpZHRoOiAyNSU7CiAgfQogIC5jb2wtc20tMiB7CiAgICB3aWR0aDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLTEgewogICAgd2lkdGg6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLXNtLXB1bGwtMTIgewogICAgcmlnaHQ6IDEwMCU7CiAgfQogIC5jb2wtc20tcHVsbC0xMSB7CiAgICByaWdodDogOTEuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLXB1bGwtMTAgewogICAgcmlnaHQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdWxsLTkgewogICAgcmlnaHQ6IDc1JTsKICB9CiAgLmNvbC1zbS1wdWxsLTggewogICAgcmlnaHQ6IDY2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS1wdWxsLTcgewogICAgcmlnaHQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdWxsLTYgewogICAgcmlnaHQ6IDUwJTsKICB9CiAgLmNvbC1zbS1wdWxsLTUgewogICAgcmlnaHQ6IDQxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS1wdWxsLTQgewogICAgcmlnaHQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdWxsLTMgewogICAgcmlnaHQ6IDI1JTsKICB9CiAgLmNvbC1zbS1wdWxsLTIgewogICAgcmlnaHQ6IDE2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS1wdWxsLTEgewogICAgcmlnaHQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLXNtLXB1bGwtMCB7CiAgICByaWdodDogYXV0bzsKICB9CiAgLmNvbC1zbS1wdXNoLTEyIHsKICAgIGxlZnQ6IDEwMCU7CiAgfQogIC5jb2wtc20tcHVzaC0xMSB7CiAgICBsZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tcHVzaC0xMCB7CiAgICBsZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVzaC05IHsKICAgIGxlZnQ6IDc1JTsKICB9CiAgLmNvbC1zbS1wdXNoLTggewogICAgbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLXB1c2gtNyB7CiAgICBsZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVzaC02IHsKICAgIGxlZnQ6IDUwJTsKICB9CiAgLmNvbC1zbS1wdXNoLTUgewogICAgbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLXB1c2gtNCB7CiAgICBsZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tcHVzaC0zIHsKICAgIGxlZnQ6IDI1JTsKICB9CiAgLmNvbC1zbS1wdXNoLTIgewogICAgbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLXB1c2gtMSB7CiAgICBsZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1wdXNoLTAgewogICAgbGVmdDogYXV0bzsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMTIgewogICAgbWFyZ2luLWxlZnQ6IDEwMCU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tb2Zmc2V0LTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLXNtLW9mZnNldC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS1vZmZzZXQtMCB7CiAgICBtYXJnaW4tbGVmdDogMCU7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5jb2wtbWQtMSwgLmNvbC1tZC0yLCAuY29sLW1kLTMsIC5jb2wtbWQtNCwgLmNvbC1tZC01LCAuY29sLW1kLTYsIC5jb2wtbWQtNywgLmNvbC1tZC04LCAuY29sLW1kLTksIC5jb2wtbWQtMTAsIC5jb2wtbWQtMTEsIC5jb2wtbWQtMTIgewogICAgZmxvYXQ6IGxlZnQ7CiAgfQogIC5jb2wtbWQtMTIgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtbWQtMTEgewogICAgd2lkdGg6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC0xMCB7CiAgICB3aWR0aDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTkgewogICAgd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1tZC04IHsKICAgIHdpZHRoOiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtNyB7CiAgICB3aWR0aDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTYgewogICAgd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1tZC01IHsKICAgIHdpZHRoOiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtNCB7CiAgICB3aWR0aDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTMgewogICAgd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1tZC0yIHsKICAgIHdpZHRoOiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtMSB7CiAgICB3aWR0aDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVsbC0xMiB7CiAgICByaWdodDogMTAwJTsKICB9CiAgLmNvbC1tZC1wdWxsLTExIHsKICAgIHJpZ2h0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtcHVsbC0xMCB7CiAgICByaWdodDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtOSB7CiAgICByaWdodDogNzUlOwogIH0KICAuY29sLW1kLXB1bGwtOCB7CiAgICByaWdodDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtNyB7CiAgICByaWdodDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtNiB7CiAgICByaWdodDogNTAlOwogIH0KICAuY29sLW1kLXB1bGwtNSB7CiAgICByaWdodDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtNCB7CiAgICByaWdodDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1bGwtMyB7CiAgICByaWdodDogMjUlOwogIH0KICAuY29sLW1kLXB1bGwtMiB7CiAgICByaWdodDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLXB1bGwtMSB7CiAgICByaWdodDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtcHVsbC0wIHsKICAgIHJpZ2h0OiBhdXRvOwogIH0KICAuY29sLW1kLXB1c2gtMTIgewogICAgbGVmdDogMTAwJTsKICB9CiAgLmNvbC1tZC1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC1wdXNoLTEwIHsKICAgIGxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC1wdXNoLTkgewogICAgbGVmdDogNzUlOwogIH0KICAuY29sLW1kLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtcHVzaC03IHsKICAgIGxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC1wdXNoLTYgewogICAgbGVmdDogNTAlOwogIH0KICAuY29sLW1kLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtcHVzaC00IHsKICAgIGxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC1wdXNoLTMgewogICAgbGVmdDogMjUlOwogIH0KICAuY29sLW1kLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtcHVzaC0xIHsKICAgIGxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLXB1c2gtMCB7CiAgICBsZWZ0OiBhdXRvOwogIH0KICAuY29sLW1kLW9mZnNldC0xMiB7CiAgICBtYXJnaW4tbGVmdDogMTAwJTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtMTEgewogICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlOwogIH0KICAuY29sLW1kLW9mZnNldC04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlOwogIH0KICAuY29sLW1kLW9mZnNldC01IHsKICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC1vZmZzZXQtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAuY29sLW1kLW9mZnNldC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtb2Zmc2V0LTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLW9mZnNldC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwJTsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5jb2wtbGctMSwgLmNvbC1sZy0yLCAuY29sLWxnLTMsIC5jb2wtbGctNCwgLmNvbC1sZy01LCAuY29sLWxnLTYsIC5jb2wtbGctNywgLmNvbC1sZy04LCAuY29sLWxnLTksIC5jb2wtbGctMTAsIC5jb2wtbGctMTEsIC5jb2wtbGctMTIgewogICAgZmxvYXQ6IGxlZnQ7CiAgfQogIC5jb2wtbGctMTIgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtbGctMTEgewogICAgd2lkdGg6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy0xMCB7CiAgICB3aWR0aDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLTkgewogICAgd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1sZy04IHsKICAgIHdpZHRoOiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctNyB7CiAgICB3aWR0aDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLTYgewogICAgd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1sZy01IHsKICAgIHdpZHRoOiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctNCB7CiAgICB3aWR0aDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLTMgewogICAgd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1sZy0yIHsKICAgIHdpZHRoOiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctMSB7CiAgICB3aWR0aDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctcHVsbC0xMiB7CiAgICByaWdodDogMTAwJTsKICB9CiAgLmNvbC1sZy1wdWxsLTExIHsKICAgIHJpZ2h0OiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVsbC0xMCB7CiAgICByaWdodDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLXB1bGwtOSB7CiAgICByaWdodDogNzUlOwogIH0KICAuY29sLWxnLXB1bGwtOCB7CiAgICByaWdodDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLXB1bGwtNyB7CiAgICByaWdodDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLXB1bGwtNiB7CiAgICByaWdodDogNTAlOwogIH0KICAuY29sLWxnLXB1bGwtNSB7CiAgICByaWdodDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLXB1bGwtNCB7CiAgICByaWdodDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLXB1bGwtMyB7CiAgICByaWdodDogMjUlOwogIH0KICAuY29sLWxnLXB1bGwtMiB7CiAgICByaWdodDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLXB1bGwtMSB7CiAgICByaWdodDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctcHVsbC0wIHsKICAgIHJpZ2h0OiBhdXRvOwogIH0KICAuY29sLWxnLXB1c2gtMTIgewogICAgbGVmdDogMTAwJTsKICB9CiAgLmNvbC1sZy1wdXNoLTExIHsKICAgIGxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy1wdXNoLTEwIHsKICAgIGxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTkgewogICAgbGVmdDogNzUlOwogIH0KICAuY29sLWxnLXB1c2gtOCB7CiAgICBsZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC03IHsKICAgIGxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTYgewogICAgbGVmdDogNTAlOwogIH0KICAuY29sLWxnLXB1c2gtNSB7CiAgICBsZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC00IHsKICAgIGxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1wdXNoLTMgewogICAgbGVmdDogMjUlOwogIH0KICAuY29sLWxnLXB1c2gtMiB7CiAgICBsZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctcHVzaC0xIHsKICAgIGxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLXB1c2gtMCB7CiAgICBsZWZ0OiBhdXRvOwogIH0KICAuY29sLWxnLW9mZnNldC0xMiB7CiAgICBtYXJnaW4tbGVmdDogMTAwJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMTEgewogICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlOwogIH0KICAuY29sLWxnLW9mZnNldC04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlOwogIH0KICAuY29sLWxnLW9mZnNldC01IHsKICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy1vZmZzZXQtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAuY29sLWxnLW9mZnNldC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctb2Zmc2V0LTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLW9mZnNldC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwJTsKICB9Cn0KdGFibGUgewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CnRoIHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci50YWJsZSB7CiAgd2lkdGg6IDEwMCU7CiAgbWF4LXdpZHRoOiAxMDAlOwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aCwKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZCB7CiAgcGFkZGluZzogOHB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7Cn0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoIHsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSA+IGNhcHRpb24gKyB0aGVhZCA+IHRyOmZpcnN0LWNoaWxkID4gdGgsCi50YWJsZSA+IGNvbGdyb3VwICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiB0aGVhZDpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkID4gdGgsCi50YWJsZSA+IGNhcHRpb24gKyB0aGVhZCA+IHRyOmZpcnN0LWNoaWxkID4gdGQsCi50YWJsZSA+IGNvbGdyb3VwICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkLAoudGFibGUgPiB0aGVhZDpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkID4gdGQgewogIGJvcmRlci10b3A6IDA7Cn0KLnRhYmxlID4gdGJvZHkgKyB0Ym9keSB7CiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNkZGQ7Cn0KLnRhYmxlIC50YWJsZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoudGFibGUtY29uZGVuc2VkID4gdGhlYWQgPiB0ciA+IHRoLAoudGFibGUtY29uZGVuc2VkID4gdGJvZHkgPiB0ciA+IHRoLAoudGFibGUtY29uZGVuc2VkID4gdGZvb3QgPiB0ciA+IHRoLAoudGFibGUtY29uZGVuc2VkID4gdGhlYWQgPiB0ciA+IHRkLAoudGFibGUtY29uZGVuc2VkID4gdGJvZHkgPiB0ciA+IHRkLAoudGFibGUtY29uZGVuc2VkID4gdGZvb3QgPiB0ciA+IHRkIHsKICBwYWRkaW5nOiA1cHg7Cn0KLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRoLAoudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGgsCi50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRkLAoudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQgewogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoLAoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGQgewogIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDsKfQoudGFibGUtc3RyaXBlZCA+IHRib2R5ID4gdHI6bnRoLWNoaWxkKG9kZCkgPiB0ZCwKLnRhYmxlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1jaGlsZChvZGQpID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Cn0KdGFibGUgY29sW2NsYXNzKj0iY29sLSJdIHsKICBwb3NpdGlvbjogc3RhdGljOwogIGZsb2F0OiBub25lOwogIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjsKfQp0YWJsZSB0ZFtjbGFzcyo9ImNvbC0iXSwKdGFibGUgdGhbY2xhc3MqPSJjb2wtIl0gewogIHBvc2l0aW9uOiBzdGF0aWM7CiAgZmxvYXQ6IG5vbmU7CiAgZGlzcGxheTogdGFibGUtY2VsbDsKfQoudGFibGUgPiB0aGVhZCA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0aGVhZCA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyLmFjdGl2ZSA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyLmFjdGl2ZSA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyLmFjdGl2ZSA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0ZC5hY3RpdmU6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0aC5hY3RpdmU6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIuYWN0aXZlOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgPiAuYWN0aXZlLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLmFjdGl2ZTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4Owp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5zdWNjZXNzLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQuc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkLnN1Y2Nlc3MsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5zdWNjZXNzLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGguc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLnN1Y2Nlc3MsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0ZCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0aCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRkLnN1Y2Nlc3M6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0aC5zdWNjZXNzOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLnN1Y2Nlc3M6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IC5zdWNjZXNzLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLnN1Y2Nlc3M6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QwZTljNjsKfQoudGFibGUgPiB0aGVhZCA+IHRyID4gdGQuaW5mbywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLmluZm8sCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5pbmZvLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGguaW5mbywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLmluZm8sCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5pbmZvLAoudGFibGUgPiB0aGVhZCA+IHRyLmluZm8gPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ci5pbmZvID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIuaW5mbyA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyLmluZm8gPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ci5pbmZvID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIuaW5mbyA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0ZC5pbmZvOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGguaW5mbzpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5pbmZvOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgPiAuaW5mbywKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5pbmZvOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNjNGUzZjM7Cn0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLndhcm5pbmcsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC53YXJuaW5nLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQud2FybmluZywKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLndhcm5pbmcsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC53YXJuaW5nLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGgud2FybmluZywKLnRhYmxlID4gdGhlYWQgPiB0ci53YXJuaW5nID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIud2FybmluZyA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLndhcm5pbmcgPiB0ZCwKLnRhYmxlID4gdGhlYWQgPiB0ci53YXJuaW5nID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIud2FybmluZyA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyLndhcm5pbmcgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGQud2FybmluZzpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRoLndhcm5pbmc6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIud2FybmluZzpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyOmhvdmVyID4gLndhcm5pbmcsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIud2FybmluZzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmMmNjOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRkLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRoLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5kYW5nZXI6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IC5kYW5nZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIuZGFuZ2VyOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNlYmNjY2M7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICBvdmVyZmxvdy15OiBoaWRkZW47CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSA+IHRib2R5ID4gdHIgPiB0aCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSA+IHRmb290ID4gdHIgPiB0aCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSA+IHRmb290ID4gdHIgPiB0ZCB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkOmZpcnN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRkOmZpcnN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci1sZWZ0OiAwOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aDpsYXN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGg6bGFzdC1jaGlsZCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0ZDpsYXN0LWNoaWxkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0ciA+IHRkOmxhc3QtY2hpbGQsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQ6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItcmlnaHQ6IDA7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0cjpsYXN0LWNoaWxkID4gdGgsCiAgLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0aCwKICAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6bGFzdC1jaGlsZCA+IHRkLAogIC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0cjpsYXN0LWNoaWxkID4gdGQgewogICAgYm9yZGVyLWJvdHRvbTogMDsKICB9Cn0KZmllbGRzZXQgewogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwogIGJvcmRlcjogMDsKICBtaW4td2lkdGg6IDA7Cn0KbGVnZW5kIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgZm9udC1zaXplOiAyMXB4OwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogIGNvbG9yOiAjMzMzMzMzOwogIGJvcmRlcjogMDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTVlNTsKfQpsYWJlbCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1heC13aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQppbnB1dFt0eXBlPSJyYWRpbyJdLAppbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBtYXJnaW46IDRweCAwIDA7CiAgbWFyZ2luLXRvcDogMXB4IFw5OwogIGxpbmUtaGVpZ2h0OiBub3JtYWw7Cn0KaW5wdXRbdHlwZT0iZmlsZSJdIHsKICBkaXNwbGF5OiBibG9jazsKfQppbnB1dFt0eXBlPSJyYW5nZSJdIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKfQpzZWxlY3RbbXVsdGlwbGVdLApzZWxlY3Rbc2l6ZV0gewogIGhlaWdodDogYXV0bzsKfQppbnB1dFt0eXBlPSJmaWxlIl06Zm9jdXMsCmlucHV0W3R5cGU9InJhZGlvIl06Zm9jdXMsCmlucHV0W3R5cGU9ImNoZWNrYm94Il06Zm9jdXMgewogIG91dGxpbmU6IHRoaW4gZG90dGVkOwogIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsKICBvdXRsaW5lLW9mZnNldDogLTJweDsKfQpvdXRwdXQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmctdG9wOiA3cHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjNTU1NTU1Owp9Ci5mb3JtLWNvbnRyb2wgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMzRweDsKICBwYWRkaW5nOiA2cHggMTJweDsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgY29sb3I6ICM1NTU1NTU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLCBib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7CiAgLW8tdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsKICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cywgYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOwp9Ci5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzY2YWZlOTsKICBvdXRsaW5lOiAwOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksIDAgMCA4cHggcmdiYSgxMDIsIDE3NSwgMjMzLCAwLjYpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgOHB4IHJnYmEoMTAyLCAxNzUsIDIzMywgMC42KTsKfQouZm9ybS1jb250cm9sOjotbW96LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzc3Nzc3NzsKICBvcGFjaXR5OiAxOwp9Ci5mb3JtLWNvbnRyb2w6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzc3Nzc3NzsKfQouZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzc3Nzc3NzsKfQouZm9ybS1jb250cm9sW2Rpc2FibGVkXSwKLmZvcm0tY29udHJvbFtyZWFkb25seV0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuZm9ybS1jb250cm9sIHsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgb3BhY2l0eTogMTsKfQp0ZXh0YXJlYS5mb3JtLWNvbnRyb2wgewogIGhlaWdodDogYXV0bzsKfQppbnB1dFt0eXBlPSJzZWFyY2giXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CmlucHV0W3R5cGU9ImRhdGUiXSwKaW5wdXRbdHlwZT0idGltZSJdLAppbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLAppbnB1dFt0eXBlPSJtb250aCJdIHsKICBsaW5lLWhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MyBcMDsKfQppbnB1dFt0eXBlPSJkYXRlIl0uaW5wdXQtc20sCmlucHV0W3R5cGU9InRpbWUiXS5pbnB1dC1zbSwKaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXS5pbnB1dC1zbSwKaW5wdXRbdHlwZT0ibW9udGgiXS5pbnB1dC1zbSB7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KaW5wdXRbdHlwZT0iZGF0ZSJdLmlucHV0LWxnLAppbnB1dFt0eXBlPSJ0aW1lIl0uaW5wdXQtbGcsCmlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0uaW5wdXQtbGcsCmlucHV0W3R5cGU9Im1vbnRoIl0uaW5wdXQtbGcgewogIGxpbmUtaGVpZ2h0OiA0NnB4Owp9Ci5mb3JtLWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci5yYWRpbywKLmNoZWNrYm94IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgbWluLWhlaWdodDogMjBweDsKICBtYXJnaW4tdG9wOiAxMHB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLnJhZGlvIGxhYmVsLAouY2hlY2tib3ggbGFiZWwgewogIHBhZGRpbmctbGVmdDogMjBweDsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdLAoucmFkaW8taW5saW5lIGlucHV0W3R5cGU9InJhZGlvIl0sCi5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdLAouY2hlY2tib3gtaW5saW5lIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtYXJnaW4tbGVmdDogLTIwcHg7CiAgbWFyZ2luLXRvcDogNHB4IFw5Owp9Ci5yYWRpbyArIC5yYWRpbywKLmNoZWNrYm94ICsgLmNoZWNrYm94IHsKICBtYXJnaW4tdG9wOiAtNXB4Owp9Ci5yYWRpby1pbmxpbmUsCi5jaGVja2JveC1pbmxpbmUgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5yYWRpby1pbmxpbmUgKyAucmFkaW8taW5saW5lLAouY2hlY2tib3gtaW5saW5lICsgLmNoZWNrYm94LWlubGluZSB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tbGVmdDogMTBweDsKfQppbnB1dFt0eXBlPSJyYWRpbyJdW2Rpc2FibGVkXSwKaW5wdXRbdHlwZT0iY2hlY2tib3giXVtkaXNhYmxlZF0sCmlucHV0W3R5cGU9InJhZGlvIl0uZGlzYWJsZWQsCmlucHV0W3R5cGU9ImNoZWNrYm94Il0uZGlzYWJsZWQsCmZpZWxkc2V0W2Rpc2FibGVkXSBpbnB1dFt0eXBlPSJyYWRpbyJdLApmaWVsZHNldFtkaXNhYmxlZF0gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoucmFkaW8taW5saW5lLmRpc2FibGVkLAouY2hlY2tib3gtaW5saW5lLmRpc2FibGVkLApmaWVsZHNldFtkaXNhYmxlZF0gLnJhZGlvLWlubGluZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5jaGVja2JveC1pbmxpbmUgewogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLnJhZGlvLmRpc2FibGVkIGxhYmVsLAouY2hlY2tib3guZGlzYWJsZWQgbGFiZWwsCmZpZWxkc2V0W2Rpc2FibGVkXSAucmFkaW8gbGFiZWwsCmZpZWxkc2V0W2Rpc2FibGVkXSAuY2hlY2tib3ggbGFiZWwgewogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLmZvcm0tY29udHJvbC1zdGF0aWMgewogIHBhZGRpbmctdG9wOiA3cHg7CiAgcGFkZGluZy1ib3R0b206IDdweDsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5mb3JtLWNvbnRyb2wtc3RhdGljLmlucHV0LWxnLAouZm9ybS1jb250cm9sLXN0YXRpYy5pbnB1dC1zbSB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIHBhZGRpbmctcmlnaHQ6IDA7Cn0KLmlucHV0LXNtLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLXNtIC5mb3JtLWNvbnRyb2wgewogIGhlaWdodDogMzBweDsKICBwYWRkaW5nOiA1cHggMTBweDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0Kc2VsZWN0LmlucHV0LXNtIHsKICBoZWlnaHQ6IDMwcHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KdGV4dGFyZWEuaW5wdXQtc20sCnNlbGVjdFttdWx0aXBsZV0uaW5wdXQtc20gewogIGhlaWdodDogYXV0bzsKfQouaW5wdXQtbGcsCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtbGcgLmZvcm0tY29udHJvbCB7CiAgaGVpZ2h0OiA0NnB4OwogIHBhZGRpbmc6IDEwcHggMTZweDsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDEuMzM7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9CnNlbGVjdC5pbnB1dC1sZyB7CiAgaGVpZ2h0OiA0NnB4OwogIGxpbmUtaGVpZ2h0OiA0NnB4Owp9CnRleHRhcmVhLmlucHV0LWxnLApzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWxnIHsKICBoZWlnaHQ6IGF1dG87Cn0KLmhhcy1mZWVkYmFjayB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbCB7CiAgcGFkZGluZy1yaWdodDogNDIuNXB4Owp9Ci5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDI1cHg7CiAgcmlnaHQ6IDA7CiAgei1pbmRleDogMjsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMzRweDsKICBoZWlnaHQ6IDM0cHg7CiAgbGluZS1oZWlnaHQ6IDM0cHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5pbnB1dC1sZyArIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIHdpZHRoOiA0NnB4OwogIGhlaWdodDogNDZweDsKICBsaW5lLWhlaWdodDogNDZweDsKfQouaW5wdXQtc20gKyAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICB3aWR0aDogMzBweDsKICBoZWlnaHQ6IDMwcHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KLmhhcy1zdWNjZXNzIC5oZWxwLWJsb2NrLAouaGFzLXN1Y2Nlc3MgLmNvbnRyb2wtbGFiZWwsCi5oYXMtc3VjY2VzcyAucmFkaW8sCi5oYXMtc3VjY2VzcyAuY2hlY2tib3gsCi5oYXMtc3VjY2VzcyAucmFkaW8taW5saW5lLAouaGFzLXN1Y2Nlc3MgLmNoZWNrYm94LWlubGluZSB7CiAgY29sb3I6ICMzYzc2M2Q7Cn0KLmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2wgewogIGJvcmRlci1jb2xvcjogIzNjNzYzZDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzJiNTQyYzsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDZweCAjNjdiMTY4OwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDZweCAjNjdiMTY4Owp9Ci5oYXMtc3VjY2VzcyAuaW5wdXQtZ3JvdXAtYWRkb24gewogIGNvbG9yOiAjM2M3NjNkOwogIGJvcmRlci1jb2xvcjogIzNjNzYzZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmMGQ4Owp9Ci5oYXMtc3VjY2VzcyAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICBjb2xvcjogIzNjNzYzZDsKfQouaGFzLXdhcm5pbmcgLmhlbHAtYmxvY2ssCi5oYXMtd2FybmluZyAuY29udHJvbC1sYWJlbCwKLmhhcy13YXJuaW5nIC5yYWRpbywKLmhhcy13YXJuaW5nIC5jaGVja2JveCwKLmhhcy13YXJuaW5nIC5yYWRpby1pbmxpbmUsCi5oYXMtd2FybmluZyAuY2hlY2tib3gtaW5saW5lIHsKICBjb2xvcjogIzhhNmQzYjsKfQouaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbCB7CiAgYm9yZGVyLWNvbG9yOiAjOGE2ZDNiOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQouaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjNjY1MTJjOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgNnB4ICNjMGExNmI7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgNnB4ICNjMGExNmI7Cn0KLmhhcy13YXJuaW5nIC5pbnB1dC1ncm91cC1hZGRvbiB7CiAgY29sb3I6ICM4YTZkM2I7CiAgYm9yZGVyLWNvbG9yOiAjOGE2ZDNiOwogIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7Cn0KLmhhcy13YXJuaW5nIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIGNvbG9yOiAjOGE2ZDNiOwp9Ci5oYXMtZXJyb3IgLmhlbHAtYmxvY2ssCi5oYXMtZXJyb3IgLmNvbnRyb2wtbGFiZWwsCi5oYXMtZXJyb3IgLnJhZGlvLAouaGFzLWVycm9yIC5jaGVja2JveCwKLmhhcy1lcnJvciAucmFkaW8taW5saW5lLAouaGFzLWVycm9yIC5jaGVja2JveC1pbmxpbmUgewogIGNvbG9yOiAjYTk0NDQyOwp9Ci5oYXMtZXJyb3IgLmZvcm0tY29udHJvbCB7CiAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQouaGFzLWVycm9yIC5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzg0MzUzNDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDZweCAjY2U4NDgzOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDZweCAjY2U4NDgzOwp9Ci5oYXMtZXJyb3IgLmlucHV0LWdyb3VwLWFkZG9uIHsKICBjb2xvcjogI2E5NDQ0MjsKICBib3JkZXItY29sb3I6ICNhOTQ0NDI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKfQouaGFzLWVycm9yIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIGNvbG9yOiAjYTk0NDQyOwp9Ci5oYXMtZmVlZGJhY2sgbGFiZWwuc3Itb25seSB+IC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIHRvcDogMDsKfQouaGVscC1ibG9jayB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLXRvcDogNXB4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgY29sb3I6ICM3MzczNzM7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogYXV0bzsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAgewogICAgZGlzcGxheTogaW5saW5lLXRhYmxlOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtYWRkb24sCiAgLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtYnRuLAogIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCB7CiAgICB3aWR0aDogYXV0bzsKICB9CiAgLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC5mb3JtLWlubGluZSAuY29udHJvbC1sYWJlbCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLmZvcm0taW5saW5lIC5yYWRpbywKICAuZm9ybS1pbmxpbmUgLmNoZWNrYm94IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLmZvcm0taW5saW5lIC5yYWRpbyBsYWJlbCwKICAuZm9ybS1pbmxpbmUgLmNoZWNrYm94IGxhYmVsIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9CiAgLmZvcm0taW5saW5lIC5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdLAogIC5mb3JtLWlubGluZSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLmZvcm0taW5saW5lIC5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICB0b3A6IDA7CiAgfQp9Ci5mb3JtLWhvcml6b250YWwgLnJhZGlvLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCwKLmZvcm0taG9yaXpvbnRhbCAucmFkaW8taW5saW5lLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveC1pbmxpbmUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBwYWRkaW5nLXRvcDogN3B4Owp9Ci5mb3JtLWhvcml6b250YWwgLnJhZGlvLAouZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCB7CiAgbWluLWhlaWdodDogMjdweDsKfQouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwIHsKICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxhYmVsIHsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHBhZGRpbmctdG9wOiA3cHg7CiAgfQp9Ci5mb3JtLWhvcml6b250YWwgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICB0b3A6IDA7CiAgcmlnaHQ6IDE1cHg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cC1sZyAuY29udHJvbC1sYWJlbCB7CiAgICBwYWRkaW5nLXRvcDogMTQuM3B4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLXNtIC5jb250cm9sLWxhYmVsIHsKICAgIHBhZGRpbmctdG9wOiA2cHg7CiAgfQp9Ci5idG4gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBwYWRkaW5nOiA2cHggMTJweDsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KLmJ0bjpmb2N1cywKLmJ0bjphY3RpdmU6Zm9jdXMsCi5idG4uYWN0aXZlOmZvY3VzIHsKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7Cn0KLmJ0bjpob3ZlciwKLmJ0bjpmb2N1cyB7CiAgY29sb3I6ICMzMzM7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5idG46YWN0aXZlLAouYnRuLmFjdGl2ZSB7CiAgb3V0bGluZTogMDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQouYnRuLmRpc2FibGVkLAouYnRuW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4gewogIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgb3BhY2l0eTogMC42NTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjUpOwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICBib3gtc2hhZG93OiBub25lOwp9Ci5idG4tZGVmYXVsdCB7CiAgY29sb3I6ICMzMzM7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNjY2M7Cn0KLmJ0bi1kZWZhdWx0OmhvdmVyLAouYnRuLWRlZmF1bHQ6Zm9jdXMsCi5idG4tZGVmYXVsdDphY3RpdmUsCi5idG4tZGVmYXVsdC5hY3RpdmUsCi5vcGVuID4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGVmYXVsdCB7CiAgY29sb3I6ICMzMzM7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsKICBib3JkZXItY29sb3I6ICNhZGFkYWQ7Cn0KLmJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmJ0bi1kZWZhdWx0LmFjdGl2ZSwKLm9wZW4gPiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1kZWZhdWx0IHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4tZGVmYXVsdC5kaXNhYmxlZCwKLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdCwKLmJ0bi1kZWZhdWx0LmRpc2FibGVkOmhvdmVyLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0OmhvdmVyLAouYnRuLWRlZmF1bHQuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tZGVmYXVsdFtkaXNhYmxlZF06Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6Zm9jdXMsCi5idG4tZGVmYXVsdC5kaXNhYmxlZDphY3RpdmUsCi5idG4tZGVmYXVsdFtkaXNhYmxlZF06YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmJ0bi1kZWZhdWx0LmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlci1jb2xvcjogI2NjYzsKfQouYnRuLWRlZmF1bHQgLmJhZGdlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzOwp9Ci5idG4tcHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKICBib3JkZXItY29sb3I6ICMzNTdlYmQ7Cn0KLmJ0bi1wcmltYXJ5OmhvdmVyLAouYnRuLXByaW1hcnk6Zm9jdXMsCi5idG4tcHJpbWFyeTphY3RpdmUsCi5idG4tcHJpbWFyeS5hY3RpdmUsCi5vcGVuID4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tcHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMwNzFhOTsKICBib3JkZXItY29sb3I6ICMyODVlOGU7Cn0KLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5LmFjdGl2ZSwKLm9wZW4gPiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4tcHJpbWFyeS5kaXNhYmxlZCwKLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeSwKLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmhvdmVyLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmhvdmVyLAouYnRuLXByaW1hcnkuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tcHJpbWFyeVtkaXNhYmxlZF06Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnk6Zm9jdXMsCi5idG4tcHJpbWFyeS5kaXNhYmxlZDphY3RpdmUsCi5idG4tcHJpbWFyeVtkaXNhYmxlZF06YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5LmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnkuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwogIGJvcmRlci1jb2xvcjogIzM1N2ViZDsKfQouYnRuLXByaW1hcnkgLmJhZGdlIHsKICBjb2xvcjogIzQyOGJjYTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5idG4tc3VjY2VzcyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YzsKICBib3JkZXItY29sb3I6ICM0Y2FlNGM7Cn0KLmJ0bi1zdWNjZXNzOmhvdmVyLAouYnRuLXN1Y2Nlc3M6Zm9jdXMsCi5idG4tc3VjY2VzczphY3RpdmUsCi5idG4tc3VjY2Vzcy5hY3RpdmUsCi5vcGVuID4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tc3VjY2VzcyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OWQ0NDsKICBib3JkZXItY29sb3I6ICMzOTg0Mzk7Cn0KLmJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmJ0bi1zdWNjZXNzLmFjdGl2ZSwKLm9wZW4gPiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4tc3VjY2Vzcy5kaXNhYmxlZCwKLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2VzcywKLmJ0bi1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLAouYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzOmhvdmVyLAouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6Zm9jdXMsCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF06Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3M6Zm9jdXMsCi5idG4tc3VjY2Vzcy5kaXNhYmxlZDphY3RpdmUsCi5idG4tc3VjY2Vzc1tkaXNhYmxlZF06YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmJ0bi1zdWNjZXNzLmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3MuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjOwogIGJvcmRlci1jb2xvcjogIzRjYWU0YzsKfQouYnRuLXN1Y2Nlc3MgLmJhZGdlIHsKICBjb2xvcjogIzVjYjg1YzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5idG4taW5mbyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKICBib3JkZXItY29sb3I6ICM0NmI4ZGE7Cn0KLmJ0bi1pbmZvOmhvdmVyLAouYnRuLWluZm86Zm9jdXMsCi5idG4taW5mbzphY3RpdmUsCi5idG4taW5mby5hY3RpdmUsCi5vcGVuID4gLmRyb3Bkb3duLXRvZ2dsZS5idG4taW5mbyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMxYjBkNTsKICBib3JkZXItY29sb3I6ICMyNjlhYmM7Cn0KLmJ0bi1pbmZvOmFjdGl2ZSwKLmJ0bi1pbmZvLmFjdGl2ZSwKLm9wZW4gPiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1pbmZvIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4taW5mby5kaXNhYmxlZCwKLmJ0bi1pbmZvW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbywKLmJ0bi1pbmZvLmRpc2FibGVkOmhvdmVyLAouYnRuLWluZm9bZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmhvdmVyLAouYnRuLWluZm8uZGlzYWJsZWQ6Zm9jdXMsCi5idG4taW5mb1tkaXNhYmxlZF06Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm86Zm9jdXMsCi5idG4taW5mby5kaXNhYmxlZDphY3RpdmUsCi5idG4taW5mb1tkaXNhYmxlZF06YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmFjdGl2ZSwKLmJ0bi1pbmZvLmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi1pbmZvW2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm8uYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwogIGJvcmRlci1jb2xvcjogIzQ2YjhkYTsKfQouYnRuLWluZm8gLmJhZGdlIHsKICBjb2xvcjogIzViYzBkZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5idG4td2FybmluZyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTsKICBib3JkZXItY29sb3I6ICNlZWEyMzY7Cn0KLmJ0bi13YXJuaW5nOmhvdmVyLAouYnRuLXdhcm5pbmc6Zm9jdXMsCi5idG4td2FybmluZzphY3RpdmUsCi5idG4td2FybmluZy5hY3RpdmUsCi5vcGVuID4gLmRyb3Bkb3duLXRvZ2dsZS5idG4td2FybmluZyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VjOTcxZjsKICBib3JkZXItY29sb3I6ICNkNTg1MTI7Cn0KLmJ0bi13YXJuaW5nOmFjdGl2ZSwKLmJ0bi13YXJuaW5nLmFjdGl2ZSwKLm9wZW4gPiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4td2FybmluZy5kaXNhYmxlZCwKLmJ0bi13YXJuaW5nW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZywKLmJ0bi13YXJuaW5nLmRpc2FibGVkOmhvdmVyLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nOmhvdmVyLAouYnRuLXdhcm5pbmcuZGlzYWJsZWQ6Zm9jdXMsCi5idG4td2FybmluZ1tkaXNhYmxlZF06Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6Zm9jdXMsCi5idG4td2FybmluZy5kaXNhYmxlZDphY3RpdmUsCi5idG4td2FybmluZ1tkaXNhYmxlZF06YWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nOmFjdGl2ZSwKLmJ0bi13YXJuaW5nLmRpc2FibGVkLmFjdGl2ZSwKLmJ0bi13YXJuaW5nW2Rpc2FibGVkXS5hY3RpdmUsCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmcuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOwogIGJvcmRlci1jb2xvcjogI2VlYTIzNjsKfQouYnRuLXdhcm5pbmcgLmJhZGdlIHsKICBjb2xvcjogI2YwYWQ0ZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5idG4tZGFuZ2VyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwogIGJvcmRlci1jb2xvcjogI2Q0M2YzYTsKfQouYnRuLWRhbmdlcjpob3ZlciwKLmJ0bi1kYW5nZXI6Zm9jdXMsCi5idG4tZGFuZ2VyOmFjdGl2ZSwKLmJ0bi1kYW5nZXIuYWN0aXZlLAoub3BlbiA+IC5kcm9wZG93bi10b2dnbGUuYnRuLWRhbmdlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M5MzAyYzsKICBib3JkZXItY29sb3I6ICNhYzI5MjU7Cn0KLmJ0bi1kYW5nZXI6YWN0aXZlLAouYnRuLWRhbmdlci5hY3RpdmUsCi5vcGVuID4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5idG4tZGFuZ2VyLmRpc2FibGVkLAouYnRuLWRhbmdlcltkaXNhYmxlZF0sCmZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlciwKLmJ0bi1kYW5nZXIuZGlzYWJsZWQ6aG92ZXIsCi5idG4tZGFuZ2VyW2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmhvdmVyLAouYnRuLWRhbmdlci5kaXNhYmxlZDpmb2N1cywKLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmZvY3VzLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXI6Zm9jdXMsCi5idG4tZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwKLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmFjdGl2ZSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmFjdGl2ZSwKLmJ0bi1kYW5nZXIuZGlzYWJsZWQuYWN0aXZlLAouYnRuLWRhbmdlcltkaXNhYmxlZF0uYWN0aXZlLApmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXIuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwogIGJvcmRlci1jb2xvcjogI2Q0M2YzYTsKfQouYnRuLWRhbmdlciAuYmFkZ2UgewogIGNvbG9yOiAjZDk1MzRmOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmJ0bi1saW5rIHsKICBjb2xvcjogIzQyOGJjYTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tbGluaywKLmJ0bi1saW5rOmFjdGl2ZSwKLmJ0bi1saW5rW2Rpc2FibGVkXSwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluayB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ0bi1saW5rLAouYnRuLWxpbms6aG92ZXIsCi5idG4tbGluazpmb2N1cywKLmJ0bi1saW5rOmFjdGl2ZSB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLWxpbms6aG92ZXIsCi5idG4tbGluazpmb2N1cyB7CiAgY29sb3I6ICMyYTY0OTY7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1saW5rW2Rpc2FibGVkXTpob3ZlciwKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpob3ZlciwKLmJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpmb2N1cyB7CiAgY29sb3I6ICM3Nzc3Nzc7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5idG4tbGcsCi5idG4tZ3JvdXAtbGcgPiAuYnRuIHsKICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAxLjMzOwogIGJvcmRlci1yYWRpdXM6IDZweDsKfQouYnRuLXNtLAouYnRuLWdyb3VwLXNtID4gLmJ0biB7CiAgcGFkZGluZzogNXB4IDEwcHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5idG4teHMsCi5idG4tZ3JvdXAteHMgPiAuYnRuIHsKICBwYWRkaW5nOiAxcHggNXB4OwogIGZvbnQtc2l6ZTogMTJweDsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDNweDsKfQouYnRuLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKfQouYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7CiAgbWFyZ2luLXRvcDogNXB4Owp9CmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywKaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssCmlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7CiAgd2lkdGg6IDEwMCU7Cn0KLmZhZGUgewogIG9wYWNpdHk6IDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKfQouZmFkZS5pbiB7CiAgb3BhY2l0eTogMTsKfQouY29sbGFwc2UgewogIGRpc3BsYXk6IG5vbmU7Cn0KLmNvbGxhcHNlLmluIHsKICBkaXNwbGF5OiBibG9jazsKfQp0ci5jb2xsYXBzZS5pbiB7CiAgZGlzcGxheTogdGFibGUtcm93Owp9CnRib2R5LmNvbGxhcHNlLmluIHsKICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7Cn0KLmNvbGxhcHNpbmcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAtd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAwLjM1cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGhlaWdodCAwLjM1cyBlYXNlOwogIHRyYW5zaXRpb246IGhlaWdodCAwLjM1cyBlYXNlOwp9Ci5jYXJldCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tbGVmdDogMnB4OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgYm9yZGVyLXRvcDogNHB4IHNvbGlkOwogIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7Cn0KLmRyb3Bkb3duIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgb3V0bGluZTogMDsKfQouZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwMDA7CiAgZGlzcGxheTogbm9uZTsKICBmbG9hdDogbGVmdDsKICBtaW4td2lkdGg6IDE2MHB4OwogIHBhZGRpbmc6IDVweCAwOwogIG1hcmdpbjogMnB4IDAgMDsKICBsaXN0LXN0eWxlOiBub25lOwogIGZvbnQtc2l6ZTogMTRweDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE3NSk7CiAgYm94LXNoYWRvdzogMCA2cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTc1KTsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94Owp9Ci5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQgewogIHJpZ2h0OiAwOwogIGxlZnQ6IGF1dG87Cn0KLmRyb3Bkb3duLW1lbnUgLmRpdmlkZXIgewogIGhlaWdodDogMXB4OwogIG1hcmdpbjogOXB4IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1Owp9Ci5kcm9wZG93bi1tZW51ID4gbGkgPiBhIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAzcHggMjBweDsKICBjbGVhcjogYm90aDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjMzMzMzMzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsCi5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICMyNjI2MjY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKfQouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhLAouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmhvdmVyLAouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgb3V0bGluZTogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwp9Ci5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSwKLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmhvdmVyLAouZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGE6Zm9jdXMgewogIGNvbG9yOiAjNzc3Nzc3Owp9Ci5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYTpob3ZlciwKLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkID0gZmFsc2UpOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLm9wZW4gPiAuZHJvcGRvd24tbWVudSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLm9wZW4gPiBhIHsKICBvdXRsaW5lOiAwOwp9Ci5kcm9wZG93bi1tZW51LXJpZ2h0IHsKICBsZWZ0OiBhdXRvOwogIHJpZ2h0OiAwOwp9Ci5kcm9wZG93bi1tZW51LWxlZnQgewogIGxlZnQ6IDA7CiAgcmlnaHQ6IGF1dG87Cn0KLmRyb3Bkb3duLWhlYWRlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogM3B4IDIwcHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGNvbG9yOiAjNzc3Nzc3OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRyb3Bkb3duLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgdG9wOiAwOwogIHotaW5kZXg6IDk5MDsKfQoucHVsbC1yaWdodCA+IC5kcm9wZG93bi1tZW51IHsKICByaWdodDogMDsKICBsZWZ0OiBhdXRvOwp9Ci5kcm9wdXAgLmNhcmV0LAoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmNhcmV0IHsKICBib3JkZXItdG9wOiAwOwogIGJvcmRlci1ib3R0b206IDRweCBzb2xpZDsKICBjb250ZW50OiAiIjsKfQouZHJvcHVwIC5kcm9wZG93bi1tZW51LAoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUgewogIHRvcDogYXV0bzsKICBib3R0b206IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItcmlnaHQgLmRyb3Bkb3duLW1lbnUgewogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAwOwogIH0KICAubmF2YmFyLXJpZ2h0IC5kcm9wZG93bi1tZW51LWxlZnQgewogICAgbGVmdDogMDsKICAgIHJpZ2h0OiBhdXRvOwogIH0KfQouYnRuLWdyb3VwLAouYnRuLWdyb3VwLXZlcnRpY2FsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLmJ0bi1ncm91cCA+IC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmhvdmVyLAouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsCi5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLAouYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7CiAgei1pbmRleDogMjsKfQouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMgewogIG91dGxpbmU6IDA7Cn0KLmJ0bi1ncm91cCAuYnRuICsgLmJ0biwKLmJ0bi1ncm91cCAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwICsgLmJ0biwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmJ0bi10b29sYmFyIHsKICBtYXJnaW4tbGVmdDogLTVweDsKfQouYnRuLXRvb2xiYXIgLmJ0bi1ncm91cCwKLmJ0bi10b29sYmFyIC5pbnB1dC1ncm91cCB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmJ0bi10b29sYmFyID4gLmJ0biwKLmJ0bi10b29sYmFyID4gLmJ0bi1ncm91cCwKLmJ0bi10b29sYmFyID4gLmlucHV0LWdyb3VwIHsKICBtYXJnaW4tbGVmdDogNXB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tbGVmdDogMDsKfQouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG46bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSwKLmJ0bi1ncm91cCA+IC5kcm9wZG93bi10b2dnbGU6bm90KDpmaXJzdC1jaGlsZCkgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKfQouYnRuLWdyb3VwID4gLmJ0bi1ncm91cCB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQgPiAuYnRuOmxhc3QtY2hpbGQsCi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkID4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXA6bGFzdC1jaGlsZCA+IC5idG46Zmlyc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKfQouYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLAouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgb3V0bGluZTogMDsKfQouYnRuLWdyb3VwID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUgewogIHBhZGRpbmctbGVmdDogOHB4OwogIHBhZGRpbmctcmlnaHQ6IDhweDsKfQouYnRuLWdyb3VwID4gLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUgewogIHBhZGRpbmctbGVmdDogMTJweDsKICBwYWRkaW5nLXJpZ2h0OiAxMnB4Owp9Ci5idG4tZ3JvdXAub3BlbiAuZHJvcGRvd24tdG9nZ2xlIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KLmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWxpbmsgewogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICBib3gtc2hhZG93OiBub25lOwp9Ci5idG4gLmNhcmV0IHsKICBtYXJnaW4tbGVmdDogMDsKfQouYnRuLWxnIC5jYXJldCB7CiAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKfQouZHJvcHVwIC5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDsKfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwID4gLmJ0biB7CiAgZGlzcGxheTogYmxvY2s7CiAgZmxvYXQ6IG5vbmU7CiAgd2lkdGg6IDEwMCU7CiAgbWF4LXdpZHRoOiAxMDAlOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwID4gLmJ0biB7CiAgZmxvYXQ6IG5vbmU7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKICBtYXJnaW4tdG9wOiAtMXB4OwogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuOmxhc3QtY2hpbGQsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkgPiAuZHJvcGRvd24tdG9nZ2xlIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtanVzdGlmaWVkIHsKICBkaXNwbGF5OiB0YWJsZTsKICB3aWR0aDogMTAwJTsKICB0YWJsZS1sYXlvdXQ6IGZpeGVkOwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7Cn0KLmJ0bi1ncm91cC1qdXN0aWZpZWQgPiAuYnRuLAouYnRuLWdyb3VwLWp1c3RpZmllZCA+IC5idG4tZ3JvdXAgewogIGZsb2F0OiBub25lOwogIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgd2lkdGg6IDElOwp9Ci5idG4tZ3JvdXAtanVzdGlmaWVkID4gLmJ0bi1ncm91cCAuYnRuIHsKICB3aWR0aDogMTAwJTsKfQouYnRuLWdyb3VwLWp1c3RpZmllZCA+IC5idG4tZ3JvdXAgLmRyb3Bkb3duLW1lbnUgewogIGxlZnQ6IGF1dG87Cn0KW2RhdGEtdG9nZ2xlPSJidXR0b25zIl0gPiAuYnRuID4gaW5wdXRbdHlwZT0icmFkaW8iXSwKW2RhdGEtdG9nZ2xlPSJidXR0b25zIl0gPiAuYnRuID4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwogIG9wYWNpdHk6IDA7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApOwp9Ci5pbnB1dC1ncm91cCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IHRhYmxlOwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7Cn0KLmlucHV0LWdyb3VwW2NsYXNzKj0iY29sLSJdIHsKICBmbG9hdDogbm9uZTsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgcGFkZGluZy1yaWdodDogMDsKfQouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDI7CiAgZmxvYXQ6IGxlZnQ7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsKICBoZWlnaHQ6IDQ2cHg7CiAgcGFkZGluZzogMTBweCAxNnB4OwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogMS4zMzsKICBib3JkZXItcmFkaXVzOiA2cHg7Cn0Kc2VsZWN0LmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwKc2VsZWN0LmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3QuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgaGVpZ2h0OiA0NnB4OwogIGxpbmUtaGVpZ2h0OiA0NnB4Owp9CnRleHRhcmVhLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwKdGV4dGFyZWEuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYWRkb24sCnRleHRhcmVhLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4sCnNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLApzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFkZG9uLApzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIGhlaWdodDogYXV0bzsKfQouaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsKICBoZWlnaHQ6IDMwcHg7CiAgcGFkZGluZzogNXB4IDEwcHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9CnNlbGVjdC5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2wsCnNlbGVjdC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbiwKc2VsZWN0LmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gewogIGhlaWdodDogMzBweDsKICBsaW5lLWhlaWdodDogMzBweDsKfQp0ZXh0YXJlYS5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2wsCnRleHRhcmVhLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFkZG9uLAp0ZXh0YXJlYS5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuLApzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbiwKc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsKICBoZWlnaHQ6IGF1dG87Cn0KLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtYnRuLAouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCB7CiAgZGlzcGxheTogdGFibGUtY2VsbDsKfQouaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwKLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLWJ0biB7CiAgd2lkdGg6IDElOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQouaW5wdXQtZ3JvdXAtYWRkb24gewogIHBhZGRpbmc6IDZweCAxMnB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiAjNTU1NTU1OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5pbnB1dC1ncm91cC1hZGRvbi5pbnB1dC1zbSB7CiAgcGFkZGluZzogNXB4IDEwcHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKfQouaW5wdXQtZ3JvdXAtYWRkb24uaW5wdXQtbGcgewogIHBhZGRpbmc6IDEwcHggMTZweDsKICBmb250LXNpemU6IDE4cHg7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5pbnB1dC1ncm91cC1hZGRvbiBpbnB1dFt0eXBlPSJyYWRpbyJdLAouaW5wdXQtZ3JvdXAtYWRkb24gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgbWFyZ2luLXRvcDogMDsKfQouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpmaXJzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0biwKLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZCA+IC5idG4tZ3JvdXAgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmRyb3Bkb3duLXRvZ2dsZSwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkIHsKICBib3JkZXItcmlnaHQ6IDA7Cn0KLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bGFzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5idG4tZ3JvdXAgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuZHJvcGRvd24tdG9nZ2xlLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwKLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQgewogIGJvcmRlci1sZWZ0OiAwOwp9Ci5pbnB1dC1ncm91cC1idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmb250LXNpemU6IDA7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQouaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5pbnB1dC1ncm91cC1idG4gPiAuYnRuICsgLmJ0biB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLWJ0biA+IC5idG46aG92ZXIsCi5pbnB1dC1ncm91cC1idG4gPiAuYnRuOmZvY3VzLAouaW5wdXQtZ3JvdXAtYnRuID4gLmJ0bjphY3RpdmUgewogIHotaW5kZXg6IDI7Cn0KLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuLWdyb3VwIHsKICBtYXJnaW4tcmlnaHQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0biwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bi1ncm91cCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLm5hdiB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoubmF2ID4gbGkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKfQoubmF2ID4gbGkgPiBhIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMTBweCAxNXB4Owp9Ci5uYXYgPiBsaSA+IGE6aG92ZXIsCi5uYXYgPiBsaSA+IGE6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwp9Ci5uYXYgPiBsaS5kaXNhYmxlZCA+IGEgewogIGNvbG9yOiAjNzc3Nzc3Owp9Ci5uYXYgPiBsaS5kaXNhYmxlZCA+IGE6aG92ZXIsCi5uYXYgPiBsaS5kaXNhYmxlZCA+IGE6Zm9jdXMgewogIGNvbG9yOiAjNzc3Nzc3OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Ci5uYXYgLm9wZW4gPiBhLAoubmF2IC5vcGVuID4gYTpob3ZlciwKLm5hdiAub3BlbiA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgYm9yZGVyLWNvbG9yOiAjNDI4YmNhOwp9Ci5uYXYgLm5hdi1kaXZpZGVyIHsKICBoZWlnaHQ6IDFweDsKICBtYXJnaW46IDlweCAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKfQoubmF2ID4gbGkgPiBhID4gaW1nIHsKICBtYXgtd2lkdGg6IG5vbmU7Cn0KLm5hdi10YWJzIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKfQoubmF2LXRhYnMgPiBsaSB7CiAgZmxvYXQ6IGxlZnQ7CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKfQoubmF2LXRhYnMgPiBsaSA+IGEgewogIG1hcmdpbi1yaWdodDogMnB4OwogIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzOwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOwp9Ci5uYXYtdGFicyA+IGxpID4gYTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjZWVlZWVlICNlZWVlZWUgI2RkZDsKfQoubmF2LXRhYnMgPiBsaS5hY3RpdmUgPiBhLAoubmF2LXRhYnMgPiBsaS5hY3RpdmUgPiBhOmhvdmVyLAoubmF2LXRhYnMgPiBsaS5hY3RpdmUgPiBhOmZvY3VzIHsKICBjb2xvcjogIzU1NTU1NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgY3Vyc29yOiBkZWZhdWx0Owp9Ci5uYXYtdGFicy5uYXYtanVzdGlmaWVkIHsKICB3aWR0aDogMTAwJTsKICBib3JkZXItYm90dG9tOiAwOwp9Ci5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gbGkgewogIGZsb2F0OiBub25lOwp9Ci5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gbGkgPiBhIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogNXB4Owp9Ci5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51IHsKICB0b3A6IGF1dG87CiAgbGVmdDogYXV0bzsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IGxpIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICB3aWR0aDogMSU7CiAgfQogIC5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gbGkgPiBhIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQp9Ci5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gbGkgPiBhIHsKICBtYXJnaW4tcmlnaHQ6IDA7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGEsCi5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGE6aG92ZXIsCi5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiBsaSA+IGEgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsKICB9CiAgLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYSwKICAubmF2LXRhYnMubmF2LWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhOmhvdmVyLAogIC5uYXYtdGFicy5uYXYtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKICB9Cn0KLm5hdi1waWxscyA+IGxpIHsKICBmbG9hdDogbGVmdDsKfQoubmF2LXBpbGxzID4gbGkgPiBhIHsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLm5hdi1waWxscyA+IGxpICsgbGkgewogIG1hcmdpbi1sZWZ0OiAycHg7Cn0KLm5hdi1waWxscyA+IGxpLmFjdGl2ZSA+IGEsCi5uYXYtcGlsbHMgPiBsaS5hY3RpdmUgPiBhOmhvdmVyLAoubmF2LXBpbGxzID4gbGkuYWN0aXZlID4gYTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKfQoubmF2LXN0YWNrZWQgPiBsaSB7CiAgZmxvYXQ6IG5vbmU7Cn0KLm5hdi1zdGFja2VkID4gbGkgKyBsaSB7CiAgbWFyZ2luLXRvcDogMnB4OwogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5uYXYtanVzdGlmaWVkIHsKICB3aWR0aDogMTAwJTsKfQoubmF2LWp1c3RpZmllZCA+IGxpIHsKICBmbG9hdDogbm9uZTsKfQoubmF2LWp1c3RpZmllZCA+IGxpID4gYSB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoubmF2LWp1c3RpZmllZCA+IC5kcm9wZG93biAuZHJvcGRvd24tbWVudSB7CiAgdG9wOiBhdXRvOwogIGxlZnQ6IGF1dG87Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdi1qdXN0aWZpZWQgPiBsaSB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgd2lkdGg6IDElOwogIH0KICAubmF2LWp1c3RpZmllZCA+IGxpID4gYSB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KfQoubmF2LXRhYnMtanVzdGlmaWVkIHsKICBib3JkZXItYm90dG9tOiAwOwp9Ci5uYXYtdGFicy1qdXN0aWZpZWQgPiBsaSA+IGEgewogIG1hcmdpbi1yaWdodDogMDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLm5hdi10YWJzLWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhLAoubmF2LXRhYnMtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGE6aG92ZXIsCi5uYXYtdGFicy1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2LXRhYnMtanVzdGlmaWVkID4gbGkgPiBhIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7CiAgfQogIC5uYXYtdGFicy1qdXN0aWZpZWQgPiAuYWN0aXZlID4gYSwKICAubmF2LXRhYnMtanVzdGlmaWVkID4gLmFjdGl2ZSA+IGE6aG92ZXIsCiAgLm5hdi10YWJzLWp1c3RpZmllZCA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7CiAgfQp9Ci50YWItY29udGVudCA+IC50YWItcGFuZSB7CiAgZGlzcGxheTogbm9uZTsKfQoudGFiLWNvbnRlbnQgPiAuYWN0aXZlIHsKICBkaXNwbGF5OiBibG9jazsKfQoubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnUgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKfQoubmF2YmFyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWluLWhlaWdodDogNTBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXIgewogICAgYm9yZGVyLXJhZGl1czogNHB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWhlYWRlciB7CiAgICBmbG9hdDogbGVmdDsKICB9Cn0KLm5hdmJhci1jb2xsYXBzZSB7CiAgb3ZlcmZsb3cteDogdmlzaWJsZTsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwp9Ci5uYXZiYXItY29sbGFwc2UuaW4gewogIG92ZXJmbG93LXk6IGF1dG87Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1jb2xsYXBzZSB7CiAgICB3aWR0aDogYXV0bzsKICAgIGJvcmRlci10b3A6IDA7CiAgICBib3gtc2hhZG93OiBub25lOwogIH0KICAubmF2YmFyLWNvbGxhcHNlLmNvbGxhcHNlIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKICB9CiAgLm5hdmJhci1jb2xsYXBzZS5pbiB7CiAgICBvdmVyZmxvdy15OiB2aXNpYmxlOwogIH0KICAubmF2YmFyLWZpeGVkLXRvcCAubmF2YmFyLWNvbGxhcHNlLAogIC5uYXZiYXItc3RhdGljLXRvcCAubmF2YmFyLWNvbGxhcHNlLAogIC5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UgewogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFkZGluZy1yaWdodDogMDsKICB9Cn0KLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZSwKLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1jb2xsYXBzZSB7CiAgbWF4LWhlaWdodDogMzQwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHsKICAubmF2YmFyLWZpeGVkLXRvcCAubmF2YmFyLWNvbGxhcHNlLAogIC5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UgewogICAgbWF4LWhlaWdodDogMjAwcHg7CiAgfQp9Ci5jb250YWluZXIgPiAubmF2YmFyLWhlYWRlciwKLmNvbnRhaW5lci1mbHVpZCA+IC5uYXZiYXItaGVhZGVyLAouY29udGFpbmVyID4gLm5hdmJhci1jb2xsYXBzZSwKLmNvbnRhaW5lci1mbHVpZCA+IC5uYXZiYXItY29sbGFwc2UgewogIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgbWFyZ2luLWxlZnQ6IC0xNXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5jb250YWluZXIgPiAubmF2YmFyLWhlYWRlciwKICAuY29udGFpbmVyLWZsdWlkID4gLm5hdmJhci1oZWFkZXIsCiAgLmNvbnRhaW5lciA+IC5uYXZiYXItY29sbGFwc2UsCiAgLmNvbnRhaW5lci1mbHVpZCA+IC5uYXZiYXItY29sbGFwc2UgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQp9Ci5uYXZiYXItc3RhdGljLXRvcCB7CiAgei1pbmRleDogMTAwMDsKICBib3JkZXItd2lkdGg6IDAgMCAxcHg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1zdGF0aWMtdG9wIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQp9Ci5uYXZiYXItZml4ZWQtdG9wLAoubmF2YmFyLWZpeGVkLWJvdHRvbSB7CiAgcG9zaXRpb246IGZpeGVkOwogIHJpZ2h0OiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAzMDsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWZpeGVkLXRvcCwKICAubmF2YmFyLWZpeGVkLWJvdHRvbSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQoubmF2YmFyLWZpeGVkLXRvcCB7CiAgdG9wOiAwOwogIGJvcmRlci13aWR0aDogMCAwIDFweDsKfQoubmF2YmFyLWZpeGVkLWJvdHRvbSB7CiAgYm90dG9tOiAwOwogIG1hcmdpbi1ib3R0b206IDA7CiAgYm9yZGVyLXdpZHRoOiAxcHggMCAwOwp9Ci5uYXZiYXItYnJhbmQgewogIGZsb2F0OiBsZWZ0OwogIHBhZGRpbmc6IDE1cHggMTVweDsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgaGVpZ2h0OiA1MHB4Owp9Ci5uYXZiYXItYnJhbmQ6aG92ZXIsCi5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyID4gLmNvbnRhaW5lciAubmF2YmFyLWJyYW5kLAogIC5uYXZiYXIgPiAuY29udGFpbmVyLWZsdWlkIC5uYXZiYXItYnJhbmQgewogICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogIH0KfQoubmF2YmFyLXRvZ2dsZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsb2F0OiByaWdodDsKICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgcGFkZGluZzogOXB4IDEwcHg7CiAgbWFyZ2luLXRvcDogOHB4OwogIG1hcmdpbi1ib3R0b206IDhweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQoubmF2YmFyLXRvZ2dsZTpmb2N1cyB7CiAgb3V0bGluZTogMDsKfQoubmF2YmFyLXRvZ2dsZSAuaWNvbi1iYXIgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAyMnB4OwogIGhlaWdodDogMnB4OwogIGJvcmRlci1yYWRpdXM6IDFweDsKfQoubmF2YmFyLXRvZ2dsZSAuaWNvbi1iYXIgKyAuaWNvbi1iYXIgewogIG1hcmdpbi10b3A6IDRweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLXRvZ2dsZSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoubmF2YmFyLW5hdiB7CiAgbWFyZ2luOiA3LjVweCAtMTVweDsKfQoubmF2YmFyLW5hdiA+IGxpID4gYSB7CiAgcGFkZGluZy10b3A6IDEwcHg7CiAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgbGluZS1oZWlnaHQ6IDIwcHg7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IHN0YXRpYzsKICAgIGZsb2F0OiBub25lOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXJnaW4tdG9wOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IDA7CiAgICBib3gtc2hhZG93OiBub25lOwogIH0KICAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IGxpID4gYSwKICAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVyIHsKICAgIHBhZGRpbmc6IDVweCAxNXB4IDVweCAyNXB4OwogIH0KICAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IGxpID4gYSB7CiAgICBsaW5lLWhlaWdodDogMjBweDsKICB9CiAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsCiAgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6Zm9jdXMgewogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1uYXYgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW46IDA7CiAgfQogIC5uYXZiYXItbmF2ID4gbGkgewogICAgZmxvYXQ6IGxlZnQ7CiAgfQogIC5uYXZiYXItbmF2ID4gbGkgPiBhIHsKICAgIHBhZGRpbmctdG9wOiAxNXB4OwogICAgcGFkZGluZy1ib3R0b206IDE1cHg7CiAgfQogIC5uYXZiYXItbmF2Lm5hdmJhci1yaWdodDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAubmF2YmFyLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KfQoubmF2YmFyLWZvcm0gewogIG1hcmdpbi1sZWZ0OiAtMTVweDsKICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogIHBhZGRpbmc6IDEwcHggMTVweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICBtYXJnaW4tdG9wOiA4cHg7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItZm9ybSAuZm9ybS1ncm91cCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLm5hdmJhci1mb3JtIC5mb3JtLWNvbnRyb2wgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IGF1dG87CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIH0KICAubmF2YmFyLWZvcm0gLmlucHV0LWdyb3VwIHsKICAgIGRpc3BsYXk6IGlubGluZS10YWJsZTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWFkZG9uLAogIC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWJ0biwKICAubmF2YmFyLWZvcm0gLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2wgewogICAgd2lkdGg6IGF1dG87CiAgfQogIC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KICAubmF2YmFyLWZvcm0gLmNvbnRyb2wtbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5uYXZiYXItZm9ybSAucmFkaW8sCiAgLm5hdmJhci1mb3JtIC5jaGVja2JveCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5uYXZiYXItZm9ybSAucmFkaW8gbGFiZWwsCiAgLm5hdmJhci1mb3JtIC5jaGVja2JveCBsYWJlbCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQogIC5uYXZiYXItZm9ybSAucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKICAubmF2YmFyLWZvcm0gLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5uYXZiYXItZm9ybSAuaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgdG9wOiAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogNXB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWZvcm0gewogICAgd2lkdGg6IGF1dG87CiAgICBib3JkZXI6IDA7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIHBhZGRpbmctdG9wOiAwOwogICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogIH0KICAubmF2YmFyLWZvcm0ubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICB9Cn0KLm5hdmJhci1uYXYgPiBsaSA+IC5kcm9wZG93bi1tZW51IHsKICBtYXJnaW4tdG9wOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cn0KLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1uYXYgPiBsaSA+IC5kcm9wZG93bi1tZW51IHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5uYXZiYXItYnRuIHsKICBtYXJnaW4tdG9wOiA4cHg7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Ci5uYXZiYXItYnRuLmJ0bi1zbSB7CiAgbWFyZ2luLXRvcDogMTBweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci5uYXZiYXItYnRuLmJ0bi14cyB7CiAgbWFyZ2luLXRvcDogMTRweDsKICBtYXJnaW4tYm90dG9tOiAxNHB4Owp9Ci5uYXZiYXItdGV4dCB7CiAgbWFyZ2luLXRvcDogMTVweDsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5uYXZiYXItdGV4dCB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIH0KICAubmF2YmFyLXRleHQubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogIH0KfQoubmF2YmFyLWRlZmF1bHQgewogIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7CiAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWJyYW5kIHsKICBjb2xvcjogIzc3NzsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZDpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIGNvbG9yOiAjNWU1ZTVlOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRleHQgewogIGNvbG9yOiAjNzc3Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IGxpID4gYSB7CiAgY29sb3I6ICM3Nzc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gbGkgPiBhOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiBsaSA+IGE6Zm9jdXMgewogIGNvbG9yOiAjMzMzOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYTpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGNvbG9yOiAjNTU1OwogIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYTpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLmRpc2FibGVkID4gYTpmb2N1cyB7CiAgY29sb3I6ICNjY2M7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlIHsKICBib3JkZXItY29sb3I6ICNkZGQ7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGU6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhciB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzg4ODsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1jb2xsYXBzZSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItZm9ybSB7CiAgYm9yZGVyLWNvbG9yOiAjZTdlN2U3Owp9Ci5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IC5vcGVuID4gYSwKLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2ID4gLm9wZW4gPiBhOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAub3BlbiA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNlN2U3ZTc7CiAgY29sb3I6ICM1NTU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhIHsKICAgIGNvbG9yOiAjNzc3OwogIH0KICAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsCiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsKICAgIGNvbG9yOiAjMzMzOwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhLAogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmhvdmVyLAogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICAgIGNvbG9yOiAjNTU1OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2U3ZTdlNzsKICB9CiAgLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSwKICAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmhvdmVyLAogIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGE6Zm9jdXMgewogICAgY29sb3I6ICNjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbGluayB7CiAgY29sb3I6ICM3Nzc7Cn0KLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbGluazpob3ZlciB7CiAgY29sb3I6ICMzMzM7Cn0KLm5hdmJhci1kZWZhdWx0IC5idG4tbGluayB7CiAgY29sb3I6ICM3Nzc7Cn0KLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpob3ZlciwKLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpmb2N1cyB7CiAgY29sb3I6ICMzMzM7Cn0KLm5hdmJhci1kZWZhdWx0IC5idG4tbGlua1tkaXNhYmxlZF06aG92ZXIsCmZpZWxkc2V0W2Rpc2FibGVkXSAubmF2YmFyLWRlZmF1bHQgLmJ0bi1saW5rOmhvdmVyLAoubmF2YmFyLWRlZmF1bHQgLmJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywKZmllbGRzZXRbZGlzYWJsZWRdIC5uYXZiYXItZGVmYXVsdCAuYnRuLWxpbms6Zm9jdXMgewogIGNvbG9yOiAjY2NjOwp9Ci5uYXZiYXItaW52ZXJzZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjsKICBib3JkZXItY29sb3I6ICMwODA4MDg7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItYnJhbmQgewogIGNvbG9yOiAjNzc3Nzc3Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZDpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdGV4dCB7CiAgY29sb3I6ICM3Nzc3Nzc7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gbGkgPiBhIHsKICBjb2xvcjogIzc3Nzc3NzsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiBsaSA+IGE6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IGxpID4gYTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLmFjdGl2ZSA+IGEsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDgwODsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAuZGlzYWJsZWQgPiBhLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAuZGlzYWJsZWQgPiBhOmhvdmVyLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAuZGlzYWJsZWQgPiBhOmZvY3VzIHsKICBjb2xvcjogIzQ0NDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGUgewogIGJvcmRlci1jb2xvcjogIzMzMzsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGU6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRvZ2dsZTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGUgLmljb24tYmFyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWNvbGxhcHNlLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1mb3JtIHsKICBib3JkZXItY29sb3I6ICMxMDEwMTA7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLm9wZW4gPiBhLAoubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgPiAub3BlbiA+IGE6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiA+IC5vcGVuID4gYTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDgwODsKICBjb2xvcjogI2ZmZjsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuZHJvcGRvd24taGVhZGVyIHsKICAgIGJvcmRlci1jb2xvcjogIzA4MDgwODsKICB9CiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51IC5kaXZpZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwODA4MDg7CiAgfQogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IGxpID4gYSB7CiAgICBjb2xvcjogIzc3Nzc3NzsKICB9CiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmhvdmVyLAogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IGxpID4gYTpmb2N1cyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYSwKICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYTpob3ZlciwKICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlID4gYTpmb2N1cyB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwODA4MDg7CiAgfQogIC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGEsCiAgLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYTpob3ZlciwKICAubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgPiAuZGlzYWJsZWQgPiBhOmZvY3VzIHsKICAgIGNvbG9yOiAjNDQ0OwogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWxpbmsgewogIGNvbG9yOiAjNzc3Nzc3Owp9Ci5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWxpbms6aG92ZXIgewogIGNvbG9yOiAjZmZmOwp9Ci5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbmsgewogIGNvbG9yOiAjNzc3Nzc3Owp9Ci5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbms6aG92ZXIsCi5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbms6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwp9Ci5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLApmaWVsZHNldFtkaXNhYmxlZF0gLm5hdmJhci1pbnZlcnNlIC5idG4tbGluazpob3ZlciwKLm5hdmJhci1pbnZlcnNlIC5idG4tbGlua1tkaXNhYmxlZF06Zm9jdXMsCmZpZWxkc2V0W2Rpc2FibGVkXSAubmF2YmFyLWludmVyc2UgLmJ0bi1saW5rOmZvY3VzIHsKICBjb2xvcjogIzQ0NDsKfQouYnJlYWRjcnVtYiB7CiAgcGFkZGluZzogOHB4IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBsaXN0LXN0eWxlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5icmVhZGNydW1iID4gbGkgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQouYnJlYWRjcnVtYiA+IGxpICsgbGk6YmVmb3JlIHsKICBjb250ZW50OiAiL1wwMGEwIjsKICBwYWRkaW5nOiAwIDVweDsKICBjb2xvcjogI2NjYzsKfQouYnJlYWRjcnVtYiA+IC5hY3RpdmUgewogIGNvbG9yOiAjNzc3Nzc3Owp9Ci5wYWdpbmF0aW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogMjBweCAwOwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQoucGFnaW5hdGlvbiA+IGxpIHsKICBkaXNwbGF5OiBpbmxpbmU7Cn0KLnBhZ2luYXRpb24gPiBsaSA+IGEsCi5wYWdpbmF0aW9uID4gbGkgPiBzcGFuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxvYXQ6IGxlZnQ7CiAgcGFkZGluZzogNnB4IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGNvbG9yOiAjNDI4YmNhOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBtYXJnaW4tbGVmdDogLTFweDsKfQoucGFnaW5hdGlvbiA+IGxpOmZpcnN0LWNoaWxkID4gYSwKLnBhZ2luYXRpb24gPiBsaTpmaXJzdC1jaGlsZCA+IHNwYW4gewogIG1hcmdpbi1sZWZ0OiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Cn0KLnBhZ2luYXRpb24gPiBsaTpsYXN0LWNoaWxkID4gYSwKLnBhZ2luYXRpb24gPiBsaTpsYXN0LWNoaWxkID4gc3BhbiB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4Owp9Ci5wYWdpbmF0aW9uID4gbGkgPiBhOmhvdmVyLAoucGFnaW5hdGlvbiA+IGxpID4gc3Bhbjpob3ZlciwKLnBhZ2luYXRpb24gPiBsaSA+IGE6Zm9jdXMsCi5wYWdpbmF0aW9uID4gbGkgPiBzcGFuOmZvY3VzIHsKICBjb2xvcjogIzJhNjQ5NjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwogIGJvcmRlci1jb2xvcjogI2RkZDsKfQoucGFnaW5hdGlvbiA+IC5hY3RpdmUgPiBhLAoucGFnaW5hdGlvbiA+IC5hY3RpdmUgPiBzcGFuLAoucGFnaW5hdGlvbiA+IC5hY3RpdmUgPiBhOmhvdmVyLAoucGFnaW5hdGlvbiA+IC5hY3RpdmUgPiBzcGFuOmhvdmVyLAoucGFnaW5hdGlvbiA+IC5hY3RpdmUgPiBhOmZvY3VzLAoucGFnaW5hdGlvbiA+IC5hY3RpdmUgPiBzcGFuOmZvY3VzIHsKICB6LWluZGV4OiAyOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7CiAgYm9yZGVyLWNvbG9yOiAjNDI4YmNhOwogIGN1cnNvcjogZGVmYXVsdDsKfQoucGFnaW5hdGlvbiA+IC5kaXNhYmxlZCA+IHNwYW4sCi5wYWdpbmF0aW9uID4gLmRpc2FibGVkID4gc3Bhbjpob3ZlciwKLnBhZ2luYXRpb24gPiAuZGlzYWJsZWQgPiBzcGFuOmZvY3VzLAoucGFnaW5hdGlvbiA+IC5kaXNhYmxlZCA+IGEsCi5wYWdpbmF0aW9uID4gLmRpc2FibGVkID4gYTpob3ZlciwKLnBhZ2luYXRpb24gPiAuZGlzYWJsZWQgPiBhOmZvY3VzIHsKICBjb2xvcjogIzc3Nzc3NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlci1jb2xvcjogI2RkZDsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Ci5wYWdpbmF0aW9uLWxnID4gbGkgPiBhLAoucGFnaW5hdGlvbi1sZyA+IGxpID4gc3BhbiB7CiAgcGFkZGluZzogMTBweCAxNnB4OwogIGZvbnQtc2l6ZTogMThweDsKfQoucGFnaW5hdGlvbi1sZyA+IGxpOmZpcnN0LWNoaWxkID4gYSwKLnBhZ2luYXRpb24tbGcgPiBsaTpmaXJzdC1jaGlsZCA+IHNwYW4gewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDZweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA2cHg7Cn0KLnBhZ2luYXRpb24tbGcgPiBsaTpsYXN0LWNoaWxkID4gYSwKLnBhZ2luYXRpb24tbGcgPiBsaTpsYXN0LWNoaWxkID4gc3BhbiB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDZweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNnB4Owp9Ci5wYWdpbmF0aW9uLXNtID4gbGkgPiBhLAoucGFnaW5hdGlvbi1zbSA+IGxpID4gc3BhbiB7CiAgcGFkZGluZzogNXB4IDEwcHg7CiAgZm9udC1zaXplOiAxMnB4Owp9Ci5wYWdpbmF0aW9uLXNtID4gbGk6Zmlyc3QtY2hpbGQgPiBhLAoucGFnaW5hdGlvbi1zbSA+IGxpOmZpcnN0LWNoaWxkID4gc3BhbiB7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4OwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsKfQoucGFnaW5hdGlvbi1zbSA+IGxpOmxhc3QtY2hpbGQgPiBhLAoucGFnaW5hdGlvbi1zbSA+IGxpOmxhc3QtY2hpbGQgPiBzcGFuIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7Cn0KLnBhZ2VyIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luOiAyMHB4IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnBhZ2VyIGxpIHsKICBkaXNwbGF5OiBpbmxpbmU7Cn0KLnBhZ2VyIGxpID4gYSwKLnBhZ2VyIGxpID4gc3BhbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDVweCAxNHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItcmFkaXVzOiAxNXB4Owp9Ci5wYWdlciBsaSA+IGE6aG92ZXIsCi5wYWdlciBsaSA+IGE6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwp9Ci5wYWdlciAubmV4dCA+IGEsCi5wYWdlciAubmV4dCA+IHNwYW4gewogIGZsb2F0OiByaWdodDsKfQoucGFnZXIgLnByZXZpb3VzID4gYSwKLnBhZ2VyIC5wcmV2aW91cyA+IHNwYW4gewogIGZsb2F0OiBsZWZ0Owp9Ci5wYWdlciAuZGlzYWJsZWQgPiBhLAoucGFnZXIgLmRpc2FibGVkID4gYTpob3ZlciwKLnBhZ2VyIC5kaXNhYmxlZCA+IGE6Zm9jdXMsCi5wYWdlciAuZGlzYWJsZWQgPiBzcGFuIHsKICBjb2xvcjogIzc3Nzc3NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLmxhYmVsIHsKICBkaXNwbGF5OiBpbmxpbmU7CiAgcGFkZGluZzogMC4yZW0gMC42ZW0gMC4zZW07CiAgZm9udC1zaXplOiA3NSU7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogIGJvcmRlci1yYWRpdXM6IDAuMjVlbTsKfQphLmxhYmVsOmhvdmVyLAphLmxhYmVsOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5sYWJlbDplbXB0eSB7CiAgZGlzcGxheTogbm9uZTsKfQouYnRuIC5sYWJlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogLTFweDsKfQoubGFiZWwtZGVmYXVsdCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzc3Nzc3NzsKfQoubGFiZWwtZGVmYXVsdFtocmVmXTpob3ZlciwKLmxhYmVsLWRlZmF1bHRbaHJlZl06Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICM1ZTVlNWU7Cn0KLmxhYmVsLXByaW1hcnkgewogIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7Cn0KLmxhYmVsLXByaW1hcnlbaHJlZl06aG92ZXIsCi5sYWJlbC1wcmltYXJ5W2hyZWZdOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzA3MWE5Owp9Ci5sYWJlbC1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjOwp9Ci5sYWJlbC1zdWNjZXNzW2hyZWZdOmhvdmVyLAoubGFiZWwtc3VjY2Vzc1tocmVmXTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0OWQ0NDsKfQoubGFiZWwtaW5mbyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTsKfQoubGFiZWwtaW5mb1tocmVmXTpob3ZlciwKLmxhYmVsLWluZm9baHJlZl06Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMzMWIwZDU7Cn0KLmxhYmVsLXdhcm5pbmcgewogIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGU7Cn0KLmxhYmVsLXdhcm5pbmdbaHJlZl06aG92ZXIsCi5sYWJlbC13YXJuaW5nW2hyZWZdOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWM5NzFmOwp9Ci5sYWJlbC1kYW5nZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGY7Cn0KLmxhYmVsLWRhbmdlcltocmVmXTpob3ZlciwKLmxhYmVsLWRhbmdlcltocmVmXTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M5MzAyYzsKfQouYmFkZ2UgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtaW4td2lkdGg6IDEwcHg7CiAgcGFkZGluZzogM3B4IDdweDsKICBmb250LXNpemU6IDEycHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6ICNmZmY7CiAgbGluZS1oZWlnaHQ6IDE7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6ICM3Nzc3Nzc7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKfQouYmFkZ2U6ZW1wdHkgewogIGRpc3BsYXk6IG5vbmU7Cn0KLmJ0biAuYmFkZ2UgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IC0xcHg7Cn0KLmJ0bi14cyAuYmFkZ2UgewogIHRvcDogMDsKICBwYWRkaW5nOiAxcHggNXB4Owp9CmEuYmFkZ2U6aG92ZXIsCmEuYmFkZ2U6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlID4gLmJhZGdlLAoubmF2LXBpbGxzID4gLmFjdGl2ZSA+IGEgPiAuYmFkZ2UgewogIGNvbG9yOiAjNDI4YmNhOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLm5hdi1waWxscyA+IGxpID4gYSA+IC5iYWRnZSB7CiAgbWFyZ2luLWxlZnQ6IDNweDsKfQouanVtYm90cm9uIHsKICBwYWRkaW5nOiAzMHB4OwogIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgY29sb3I6IGluaGVyaXQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKfQouanVtYm90cm9uIGgxLAouanVtYm90cm9uIC5oMSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLmp1bWJvdHJvbiBwIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIGZvbnQtc2l6ZTogMjFweDsKICBmb250LXdlaWdodDogMjAwOwp9Ci5qdW1ib3Ryb24gPiBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2Q1ZDVkNTsKfQouY29udGFpbmVyIC5qdW1ib3Ryb24gewogIGJvcmRlci1yYWRpdXM6IDZweDsKfQouanVtYm90cm9uIC5jb250YWluZXIgewogIG1heC13aWR0aDogMTAwJTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogIC5qdW1ib3Ryb24gewogICAgcGFkZGluZy10b3A6IDQ4cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNDhweDsKICB9CiAgLmNvbnRhaW5lciAuanVtYm90cm9uIHsKICAgIHBhZGRpbmctbGVmdDogNjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7CiAgfQogIC5qdW1ib3Ryb24gaDEsCiAgLmp1bWJvdHJvbiAuaDEgewogICAgZm9udC1zaXplOiA2M3B4OwogIH0KfQoudGh1bWJuYWlsIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiA0cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7CiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7Cn0KLnRodW1ibmFpbCA+IGltZywKLnRodW1ibmFpbCBhID4gaW1nIHsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KYS50aHVtYm5haWw6aG92ZXIsCmEudGh1bWJuYWlsOmZvY3VzLAphLnRodW1ibmFpbC5hY3RpdmUgewogIGJvcmRlci1jb2xvcjogIzQyOGJjYTsKfQoudGh1bWJuYWlsIC5jYXB0aW9uIHsKICBwYWRkaW5nOiA5cHg7CiAgY29sb3I6ICMzMzMzMzM7Cn0KLmFsZXJ0IHsKICBwYWRkaW5nOiAxNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5hbGVydCBoNCB7CiAgbWFyZ2luLXRvcDogMDsKICBjb2xvcjogaW5oZXJpdDsKfQouYWxlcnQgLmFsZXJ0LWxpbmsgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5hbGVydCA+IHAsCi5hbGVydCA+IHVsIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5hbGVydCA+IHAgKyBwIHsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KLmFsZXJ0LWRpc21pc3NhYmxlLAouYWxlcnQtZGlzbWlzc2libGUgewogIHBhZGRpbmctcmlnaHQ6IDM1cHg7Cn0KLmFsZXJ0LWRpc21pc3NhYmxlIC5jbG9zZSwKLmFsZXJ0LWRpc21pc3NpYmxlIC5jbG9zZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogLTJweDsKICByaWdodDogLTIxcHg7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLmFsZXJ0LXN1Y2Nlc3MgewogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7CiAgYm9yZGVyLWNvbG9yOiAjZDZlOWM2OwogIGNvbG9yOiAjM2M3NjNkOwp9Ci5hbGVydC1zdWNjZXNzIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYzllMmIzOwp9Ci5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzJiNTQyYzsKfQouYWxlcnQtaW5mbyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNzsKICBib3JkZXItY29sb3I6ICNiY2U4ZjE7CiAgY29sb3I6ICMzMTcwOGY7Cn0KLmFsZXJ0LWluZm8gaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNhNmUxZWM7Cn0KLmFsZXJ0LWluZm8gLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjMjQ1MjY5Owp9Ci5hbGVydC13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzOwogIGJvcmRlci1jb2xvcjogI2ZhZWJjYzsKICBjb2xvcjogIzhhNmQzYjsKfQouYWxlcnQtd2FybmluZyBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2Y3ZTFiNTsKfQouYWxlcnQtd2FybmluZyAuYWxlcnQtbGluayB7CiAgY29sb3I6ICM2NjUxMmM7Cn0KLmFsZXJ0LWRhbmdlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKICBib3JkZXItY29sb3I6ICNlYmNjZDE7CiAgY29sb3I6ICNhOTQ0NDI7Cn0KLmFsZXJ0LWRhbmdlciBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2U0YjljMDsKfQouYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzg0MzUzNDsKfQpALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOwogIH0KICB0byB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7CiAgfQp9CkBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOwogIH0KICB0byB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7CiAgfQp9Ci5wcm9ncmVzcyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBoZWlnaHQ6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoucHJvZ3Jlc3MtYmFyIHsKICBmbG9hdDogbGVmdDsKICB3aWR0aDogMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGZvbnQtc2l6ZTogMTJweDsKICBsaW5lLWhlaWdodDogMjBweDsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAtd2Via2l0LXRyYW5zaXRpb246IHdpZHRoIDAuNnMgZWFzZTsKICAtby10cmFuc2l0aW9uOiB3aWR0aCAwLjZzIGVhc2U7CiAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwp9Ci5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXIsCi5wcm9ncmVzcy1iYXItc3RyaXBlZCB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweDsKfQoucHJvZ3Jlc3MuYWN0aXZlIC5wcm9ncmVzcy1iYXIsCi5wcm9ncmVzcy1iYXIuYWN0aXZlIHsKICAtd2Via2l0LWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwogIC1vLWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwogIGFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwp9Ci5wcm9ncmVzcy1iYXJbYXJpYS12YWx1ZW5vdz0iMSJdLAoucHJvZ3Jlc3MtYmFyW2FyaWEtdmFsdWVub3c9IjIiXSB7CiAgbWluLXdpZHRoOiAzMHB4Owp9Ci5wcm9ncmVzcy1iYXJbYXJpYS12YWx1ZW5vdz0iMCJdIHsKICBjb2xvcjogIzc3Nzc3NzsKICBtaW4td2lkdGg6IDMwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3gtc2hhZG93OiBub25lOwp9Ci5wcm9ncmVzcy1iYXItc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YzsKfQoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7Cn0KLnByb2dyZXNzLWJhci1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOwp9Ci5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItaW5mbyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKfQoucHJvZ3Jlc3MtYmFyLXdhcm5pbmcgewogIGJhY2tncm91bmQtY29sb3I6ICNmMGFkNGU7Cn0KLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9Ci5wcm9ncmVzcy1iYXItZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmOwp9Ci5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9Ci5tZWRpYSwKLm1lZGlhLWJvZHkgewogIG92ZXJmbG93OiBoaWRkZW47CiAgem9vbTogMTsKfQoubWVkaWEsCi5tZWRpYSAubWVkaWEgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLm1lZGlhOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tdG9wOiAwOwp9Ci5tZWRpYS1vYmplY3QgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5tZWRpYS1oZWFkaW5nIHsKICBtYXJnaW46IDAgMCA1cHg7Cn0KLm1lZGlhID4gLnB1bGwtbGVmdCB7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9Ci5tZWRpYSA+IC5wdWxsLXJpZ2h0IHsKICBtYXJnaW4tbGVmdDogMTBweDsKfQoubWVkaWEtbGlzdCB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmxpc3QtZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgcGFkZGluZy1sZWZ0OiAwOwp9Ci5saXN0LWdyb3VwLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Cn0KLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4Owp9Ci5saXN0LWdyb3VwLWl0ZW0gPiAuYmFkZ2UgewogIGZsb2F0OiByaWdodDsKfQoubGlzdC1ncm91cC1pdGVtID4gLmJhZGdlICsgLmJhZGdlIHsKICBtYXJnaW4tcmlnaHQ6IDVweDsKfQphLmxpc3QtZ3JvdXAtaXRlbSB7CiAgY29sb3I6ICM1NTU7Cn0KYS5saXN0LWdyb3VwLWl0ZW0gLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICBjb2xvcjogIzMzMzsKfQphLmxpc3QtZ3JvdXAtaXRlbTpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjb2xvcjogIzU1NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9Ci5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsCi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQ6aG92ZXIsCi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiAgY29sb3I6ICM3Nzc3Nzc7Cn0KLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQ6aG92ZXIgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLAoubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCAubGlzdC1ncm91cC1pdGVtLXRleHQsCi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQ6aG92ZXIgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0LAoubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCB7CiAgY29sb3I6ICM3Nzc3Nzc7Cn0KLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyB7CiAgei1pbmRleDogMjsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOwogIGJvcmRlci1jb2xvcjogIzQyOGJjYTsKfQoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZywKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgPiBzbWFsbCwKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6aG92ZXIgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nID4gc21hbGwsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyA+IHNtYWxsLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgPiAuc21hbGwsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyA+IC5zbWFsbCwKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nID4gLnNtYWxsIHsKICBjb2xvcjogaW5oZXJpdDsKfQoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLXRleHQsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0IHsKICBjb2xvcjogI2UxZWRmNzsKfQoubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MgewogIGNvbG9yOiAjM2M3NjNkOwogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyB7CiAgY29sb3I6ICMzYzc2M2Q7Cn0KYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogIGNvbG9yOiBpbmhlcml0Owp9CmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6Zm9jdXMgewogIGNvbG9yOiAjM2M3NjNkOwogIGJhY2tncm91bmQtY29sb3I6ICNkMGU5YzY7Cn0KYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hY3RpdmUsCmEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlOmhvdmVyLAphLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmFjdGl2ZTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzNjNzYzZDsKICBib3JkZXItY29sb3I6ICMzYzc2M2Q7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICBjb2xvcjogIzMxNzA4ZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3Owp9CmEubGlzdC1ncm91cC1pdGVtLWluZm8gewogIGNvbG9yOiAjMzE3MDhmOwp9CmEubGlzdC1ncm91cC1pdGVtLWluZm8gLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICBjb2xvcjogaW5oZXJpdDsKfQphLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmhvdmVyLAphLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzIHsKICBjb2xvcjogIzMxNzA4ZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRlM2YzOwp9CmEubGlzdC1ncm91cC1pdGVtLWluZm8uYWN0aXZlLAphLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW0taW5mby5hY3RpdmU6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzMTcwOGY7CiAgYm9yZGVyLWNvbG9yOiAjMzE3MDhmOwp9Ci5saXN0LWdyb3VwLWl0ZW0td2FybmluZyB7CiAgY29sb3I6ICM4YTZkM2I7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQphLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHsKICBjb2xvcjogIzhhNmQzYjsKfQphLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZzpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZzpmb2N1cyB7CiAgY29sb3I6ICM4YTZkM2I7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZjJjYzsKfQphLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmFjdGl2ZSwKYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYWN0aXZlOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGE2ZDNiOwogIGJvcmRlci1jb2xvcjogIzhhNmQzYjsKfQoubGlzdC1ncm91cC1pdGVtLWRhbmdlciB7CiAgY29sb3I6ICNhOTQ0NDI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZGVkZTsKfQphLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewogIGNvbG9yOiAjYTk0NDQyOwp9CmEubGlzdC1ncm91cC1pdGVtLWRhbmdlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogIGNvbG9yOiBpbmhlcml0Owp9CmEubGlzdC1ncm91cC1pdGVtLWRhbmdlcjpob3ZlciwKYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmZvY3VzIHsKICBjb2xvcjogI2E5NDQ0MjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJjY2NjOwp9CmEubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmUsCmEubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmU6aG92ZXIsCmEubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmU6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNhOTQ0NDI7CiAgYm9yZGVyLWNvbG9yOiAjYTk0NDQyOwp9Ci5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLmxpc3QtZ3JvdXAtaXRlbS10ZXh0IHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KLnBhbmVsIHsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Cn0KLnBhbmVsLWJvZHkgewogIHBhZGRpbmc6IDE1cHg7Cn0KLnBhbmVsLWhlYWRpbmcgewogIHBhZGRpbmc6IDEwcHggMTVweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7Cn0KLnBhbmVsLWhlYWRpbmcgPiAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLnBhbmVsLXRpdGxlIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxNnB4OwogIGNvbG9yOiBpbmhlcml0Owp9Ci5wYW5lbC10aXRsZSA+IGEgewogIGNvbG9yOiBpbmhlcml0Owp9Ci5wYW5lbC1mb290ZXIgewogIHBhZGRpbmc6IDEwcHggMTVweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYW5lbCA+IC5saXN0LWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5wYW5lbCA+IC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW0gewogIGJvcmRlci13aWR0aDogMXB4IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoucGFuZWwgPiAubGlzdC1ncm91cDpmaXJzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYW5lbCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKICBib3JkZXItYm90dG9tOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYW5lbC1oZWFkaW5nICsgLmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC13aWR0aDogMDsKfQoubGlzdC1ncm91cCArIC5wYW5lbC1mb290ZXIgewogIGJvcmRlci10b3Atd2lkdGg6IDA7Cn0KLnBhbmVsID4gLnRhYmxlLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSwKLnBhbmVsID4gLnBhbmVsLWNvbGxhcHNlID4gLnRhYmxlIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5wYW5lbCA+IC50YWJsZTpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYW5lbCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRoZWFkOmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGJvZHk6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0Ym9keTpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0aGVhZDpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRoZWFkOmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkID4gLnRhYmxlOmZpcnN0LWNoaWxkID4gdGJvZHk6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4Owp9Ci5wYW5lbCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRoZWFkOmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0aGVhZDpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0Ym9keTpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRoZWFkOmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0aGVhZDpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpmaXJzdC1jaGlsZCA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgPiB0Ym9keTpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7Cn0KLnBhbmVsID4gLnRhYmxlOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQgPiAudGFibGU6bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7Cn0KLnBhbmVsID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Ym9keTpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGJvZHk6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGZvb3Q6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRmb290Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRib2R5Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Ym9keTpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Zm9vdDpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGZvb3Q6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKfQoucGFuZWwgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRib2R5Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRib2R5Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGZvb3Q6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZCA+IC50YWJsZTpsYXN0LWNoaWxkID4gdGZvb3Q6bGFzdC1jaGlsZCA+IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Ym9keTpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkID4gLnRhYmxlOmxhc3QtY2hpbGQgPiB0Ym9keTpsYXN0LWNoaWxkID4gdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRmb290Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQgPiAudGFibGU6bGFzdC1jaGlsZCA+IHRmb290Omxhc3QtY2hpbGQgPiB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7Cn0KLnBhbmVsID4gLnBhbmVsLWJvZHkgKyAudGFibGUsCi5wYW5lbCA+IC5wYW5lbC1ib2R5ICsgLnRhYmxlLXJlc3BvbnNpdmUgewogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwp9Ci5wYW5lbCA+IC50YWJsZSA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGgsCi5wYW5lbCA+IC50YWJsZSA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGQgewogIGJvcmRlci10b3A6IDA7Cn0KLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAwOwp9Ci5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0aDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGg6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQgewogIGJvcmRlci1sZWZ0OiAwOwp9Ci5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGg6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0ZDpsYXN0LWNoaWxkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyID4gdGQ6bGFzdC1jaGlsZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkOmxhc3QtY2hpbGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkOmxhc3QtY2hpbGQgewogIGJvcmRlci1yaWdodDogMDsKfQoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyOmZpcnN0LWNoaWxkID4gdGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmZpcnN0LWNoaWxkID4gdGQsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0cjpmaXJzdC1jaGlsZCA+IHRkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyOmZpcnN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Ym9keSA+IHRyOmZpcnN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0cjpmaXJzdC1jaGlsZCA+IHRoIHsKICBib3JkZXItYm90dG9tOiAwOwp9Ci5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6bGFzdC1jaGlsZCA+IHRkLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHI6bGFzdC1jaGlsZCA+IHRkLAoucGFuZWwgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0ZCwKLnBhbmVsID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgPiB0Zm9vdCA+IHRyOmxhc3QtY2hpbGQgPiB0ZCwKLnBhbmVsID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0cjpsYXN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkID4gdGJvZHkgPiB0cjpsYXN0LWNoaWxkID4gdGgsCi5wYW5lbCA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHI6bGFzdC1jaGlsZCA+IHRoLAoucGFuZWwgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCA+IHRmb290ID4gdHI6bGFzdC1jaGlsZCA+IHRoIHsKICBib3JkZXItYm90dG9tOiAwOwp9Ci5wYW5lbCA+IC50YWJsZS1yZXNwb25zaXZlIHsKICBib3JkZXI6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoucGFuZWwtZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLnBhbmVsLWdyb3VwIC5wYW5lbCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLnBhbmVsLWdyb3VwIC5wYW5lbCArIC5wYW5lbCB7CiAgbWFyZ2luLXRvcDogNXB4Owp9Ci5wYW5lbC1ncm91cCAucGFuZWwtaGVhZGluZyB7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoucGFuZWwtZ3JvdXAgLnBhbmVsLWhlYWRpbmcgKyAucGFuZWwtY29sbGFwc2UgPiAucGFuZWwtYm9keSB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7Cn0KLnBhbmVsLWdyb3VwIC5wYW5lbC1mb290ZXIgewogIGJvcmRlci10b3A6IDA7Cn0KLnBhbmVsLWdyb3VwIC5wYW5lbC1mb290ZXIgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOwp9Ci5wYW5lbC1kZWZhdWx0IHsKICBib3JkZXItY29sb3I6ICNkZGQ7Cn0KLnBhbmVsLWRlZmF1bHQgPiAucGFuZWwtaGVhZGluZyB7CiAgY29sb3I6ICMzMzMzMzM7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBib3JkZXItY29sb3I6ICNkZGQ7Cn0KLnBhbmVsLWRlZmF1bHQgPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjZGRkOwp9Ci5wYW5lbC1kZWZhdWx0ID4gLnBhbmVsLWhlYWRpbmcgLmJhZGdlIHsKICBjb2xvcjogI2Y1ZjVmNTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzMzMzOwp9Ci5wYW5lbC1kZWZhdWx0ID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjZGRkOwp9Ci5wYW5lbC1wcmltYXJ5IHsKICBib3JkZXItY29sb3I6ICM0MjhiY2E7Cn0KLnBhbmVsLXByaW1hcnkgPiAucGFuZWwtaGVhZGluZyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTsKICBib3JkZXItY29sb3I6ICM0MjhiY2E7Cn0KLnBhbmVsLXByaW1hcnkgPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjNDI4YmNhOwp9Ci5wYW5lbC1wcmltYXJ5ID4gLnBhbmVsLWhlYWRpbmcgLmJhZGdlIHsKICBjb2xvcjogIzQyOGJjYTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5wYW5lbC1wcmltYXJ5ID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjNDI4YmNhOwp9Ci5wYW5lbC1zdWNjZXNzIHsKICBib3JkZXItY29sb3I6ICNkNmU5YzY7Cn0KLnBhbmVsLXN1Y2Nlc3MgPiAucGFuZWwtaGVhZGluZyB7CiAgY29sb3I6ICMzYzc2M2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RmZjBkODsKICBib3JkZXItY29sb3I6ICNkNmU5YzY7Cn0KLnBhbmVsLXN1Y2Nlc3MgPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjZDZlOWM2Owp9Ci5wYW5lbC1zdWNjZXNzID4gLnBhbmVsLWhlYWRpbmcgLmJhZGdlIHsKICBjb2xvcjogI2RmZjBkODsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2M3NjNkOwp9Ci5wYW5lbC1zdWNjZXNzID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjZDZlOWM2Owp9Ci5wYW5lbC1pbmZvIHsKICBib3JkZXItY29sb3I6ICNiY2U4ZjE7Cn0KLnBhbmVsLWluZm8gPiAucGFuZWwtaGVhZGluZyB7CiAgY29sb3I6ICMzMTcwOGY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZWRmNzsKICBib3JkZXItY29sb3I6ICNiY2U4ZjE7Cn0KLnBhbmVsLWluZm8gPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjYmNlOGYxOwp9Ci5wYW5lbC1pbmZvID4gLnBhbmVsLWhlYWRpbmcgLmJhZGdlIHsKICBjb2xvcjogI2Q5ZWRmNzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE3MDhmOwp9Ci5wYW5lbC1pbmZvID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjYmNlOGYxOwp9Ci5wYW5lbC13YXJuaW5nIHsKICBib3JkZXItY29sb3I6ICNmYWViY2M7Cn0KLnBhbmVsLXdhcm5pbmcgPiAucGFuZWwtaGVhZGluZyB7CiAgY29sb3I6ICM4YTZkM2I7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKICBib3JkZXItY29sb3I6ICNmYWViY2M7Cn0KLnBhbmVsLXdhcm5pbmcgPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjZmFlYmNjOwp9Ci5wYW5lbC13YXJuaW5nID4gLnBhbmVsLWhlYWRpbmcgLmJhZGdlIHsKICBjb2xvcjogI2ZjZjhlMzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGE2ZDNiOwp9Ci5wYW5lbC13YXJuaW5nID4gLnBhbmVsLWZvb3RlciArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmFlYmNjOwp9Ci5wYW5lbC1kYW5nZXIgewogIGJvcmRlci1jb2xvcjogI2ViY2NkMTsKfQoucGFuZWwtZGFuZ2VyID4gLnBhbmVsLWhlYWRpbmcgewogIGNvbG9yOiAjYTk0NDQyOwogIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7CiAgYm9yZGVyLWNvbG9yOiAjZWJjY2QxOwp9Ci5wYW5lbC1kYW5nZXIgPiAucGFuZWwtaGVhZGluZyArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICBib3JkZXItdG9wLWNvbG9yOiAjZWJjY2QxOwp9Ci5wYW5lbC1kYW5nZXIgPiAucGFuZWwtaGVhZGluZyAuYmFkZ2UgewogIGNvbG9yOiAjZjJkZWRlOwogIGJhY2tncm91bmQtY29sb3I6ICNhOTQ0NDI7Cn0KLnBhbmVsLWRhbmdlciA+IC5wYW5lbC1mb290ZXIgKyAucGFuZWwtY29sbGFwc2UgPiAucGFuZWwtYm9keSB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ViY2NkMTsKfQouZW1iZWQtcmVzcG9uc2l2ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMDsKICBwYWRkaW5nOiAwOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmVtYmVkLXJlc3BvbnNpdmUgLmVtYmVkLXJlc3BvbnNpdmUtaXRlbSwKLmVtYmVkLXJlc3BvbnNpdmUgaWZyYW1lLAouZW1iZWQtcmVzcG9uc2l2ZSBlbWJlZCwKLmVtYmVkLXJlc3BvbnNpdmUgb2JqZWN0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgYm90dG9tOiAwOwogIGhlaWdodDogMTAwJTsKICB3aWR0aDogMTAwJTsKICBib3JkZXI6IDA7Cn0KLmVtYmVkLXJlc3BvbnNpdmUuZW1iZWQtcmVzcG9uc2l2ZS0xNmJ5OSB7CiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTsKfQouZW1iZWQtcmVzcG9uc2l2ZS5lbWJlZC1yZXNwb25zaXZlLTRieTMgewogIHBhZGRpbmctYm90dG9tOiA3NSU7Cn0KLndlbGwgewogIG1pbi1oZWlnaHQ6IDIwcHg7CiAgcGFkZGluZzogMTlweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMzsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKfQoud2VsbCBibG9ja3F1b3RlIHsKICBib3JkZXItY29sb3I6ICNkZGQ7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpOwp9Ci53ZWxsLWxnIHsKICBwYWRkaW5nOiAyNHB4OwogIGJvcmRlci1yYWRpdXM6IDZweDsKfQoud2VsbC1zbSB7CiAgcGFkZGluZzogOXB4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKfQouY2xvc2UgewogIGZsb2F0OiByaWdodDsKICBmb250LXNpemU6IDIxcHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6ICMwMDA7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjsKICBvcGFjaXR5OiAwLjI7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTIwKTsKfQouY2xvc2U6aG92ZXIsCi5jbG9zZTpmb2N1cyB7CiAgY29sb3I6ICMwMDA7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsKICBvcGFjaXR5OiAwLjU7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTsKfQpidXR0b24uY2xvc2UgewogIHBhZGRpbmc6IDA7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KLm1vZGFsLW9wZW4gewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLm1vZGFsIHsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDUwOwogIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICBvdXRsaW5lOiAwOwp9Ci5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjUlLCAwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yNSUsIDApOwogIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDsKICAtbW96LXRyYW5zaXRpb246IC1tb3otdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7CiAgLW8tdHJhbnNpdGlvbjogLW8tdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7Cn0KLm1vZGFsLmluIC5tb2RhbC1kaWFsb2cgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwp9Ci5tb2RhbC1vcGVuIC5tb2RhbCB7CiAgb3ZlcmZsb3cteDogaGlkZGVuOwogIG92ZXJmbG93LXk6IGF1dG87Cn0KLm1vZGFsLWRpYWxvZyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiBhdXRvOwogIG1hcmdpbjogMTBweDsKfQoubW9kYWwtY29udGVudCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgYm9yZGVyLXJhZGl1czogNnB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggOXB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICBib3gtc2hhZG93OiAwIDNweCA5cHggcmdiYSgwLCAwLCAwLCAwLjUpOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgb3V0bGluZTogMDsKfQoubW9kYWwtYmFja2Ryb3AgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTA0MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwp9Ci5tb2RhbC1iYWNrZHJvcC5mYWRlIHsKICBvcGFjaXR5OiAwOwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKfQoubW9kYWwtYmFja2Ryb3AuaW4gewogIG9wYWNpdHk6IDAuNTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NTApOwp9Ci5tb2RhbC1oZWFkZXIgewogIHBhZGRpbmc6IDE1cHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTU7CiAgbWluLWhlaWdodDogMTYuNDI4NTcxNDNweDsKfQoubW9kYWwtaGVhZGVyIC5jbG9zZSB7CiAgbWFyZ2luLXRvcDogLTJweDsKfQoubW9kYWwtdGl0bGUgewogIG1hcmdpbjogMDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKfQoubW9kYWwtYm9keSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmc6IDE1cHg7Cn0KLm1vZGFsLWZvb3RlciB7CiAgcGFkZGluZzogMTVweDsKICB0ZXh0LWFsaWduOiByaWdodDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTVlNTsKfQoubW9kYWwtZm9vdGVyIC5idG4gKyAuYnRuIHsKICBtYXJnaW4tbGVmdDogNXB4OwogIG1hcmdpbi1ib3R0b206IDA7Cn0KLm1vZGFsLWZvb3RlciAuYnRuLWdyb3VwIC5idG4gKyAuYnRuIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQoubW9kYWwtZm9vdGVyIC5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHsKICBtYXJnaW4tbGVmdDogMDsKfQoubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC05OTk5cHg7CiAgd2lkdGg6IDUwcHg7CiAgaGVpZ2h0OiA1MHB4OwogIG92ZXJmbG93OiBzY3JvbGw7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm1vZGFsLWRpYWxvZyB7CiAgICB3aWR0aDogNjAwcHg7CiAgICBtYXJnaW46IDMwcHggYXV0bzsKICB9CiAgLm1vZGFsLWNvbnRlbnQgewogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC41KTsKICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjUpOwogIH0KICAubW9kYWwtc20gewogICAgd2lkdGg6IDMwMHB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAubW9kYWwtbGcgewogICAgd2lkdGg6IDkwMHB4OwogIH0KfQoudG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDEwNzA7CiAgZGlzcGxheTogYmxvY2s7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDEuNDsKICBvcGFjaXR5OiAwOwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKfQoudG9vbHRpcC5pbiB7CiAgb3BhY2l0eTogMC45OwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT05MCk7Cn0KLnRvb2x0aXAudG9wIHsKICBtYXJnaW4tdG9wOiAtM3B4OwogIHBhZGRpbmc6IDVweCAwOwp9Ci50b29sdGlwLnJpZ2h0IHsKICBtYXJnaW4tbGVmdDogM3B4OwogIHBhZGRpbmc6IDAgNXB4Owp9Ci50b29sdGlwLmJvdHRvbSB7CiAgbWFyZ2luLXRvcDogM3B4OwogIHBhZGRpbmc6IDVweCAwOwp9Ci50b29sdGlwLmxlZnQgewogIG1hcmdpbi1sZWZ0OiAtM3B4OwogIHBhZGRpbmc6IDAgNXB4Owp9Ci50b29sdGlwLWlubmVyIHsKICBtYXgtd2lkdGg6IDIwMHB4OwogIHBhZGRpbmc6IDNweCA4cHg7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQoudG9vbHRpcC1hcnJvdyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1zdHlsZTogc29saWQ7Cn0KLnRvb2x0aXAudG9wIC50b29sdGlwLWFycm93IHsKICBib3R0b206IDA7CiAgbGVmdDogNTAlOwogIG1hcmdpbi1sZWZ0OiAtNXB4OwogIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogIGJvcmRlci10b3AtY29sb3I6ICMwMDA7Cn0KLnRvb2x0aXAudG9wLWxlZnQgLnRvb2x0aXAtYXJyb3cgewogIGJvdHRvbTogMDsKICBsZWZ0OiA1cHg7CiAgYm9yZGVyLXdpZHRoOiA1cHggNXB4IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoudG9vbHRpcC50b3AtcmlnaHQgLnRvb2x0aXAtYXJyb3cgewogIGJvdHRvbTogMDsKICByaWdodDogNXB4OwogIGJvcmRlci13aWR0aDogNXB4IDVweCAwOwogIGJvcmRlci10b3AtY29sb3I6ICMwMDA7Cn0KLnRvb2x0aXAucmlnaHQgLnRvb2x0aXAtYXJyb3cgewogIHRvcDogNTAlOwogIGxlZnQ6IDA7CiAgbWFyZ2luLXRvcDogLTVweDsKICBib3JkZXItd2lkdGg6IDVweCA1cHggNXB4IDA7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLmxlZnQgLnRvb2x0aXAtYXJyb3cgewogIHRvcDogNTAlOwogIHJpZ2h0OiAwOwogIG1hcmdpbi10b3A6IC01cHg7CiAgYm9yZGVyLXdpZHRoOiA1cHggMCA1cHggNXB4OwogIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLmJvdHRvbSAudG9vbHRpcC1hcnJvdyB7CiAgdG9wOiAwOwogIGxlZnQ6IDUwJTsKICBtYXJnaW4tbGVmdDogLTVweDsKICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLmJvdHRvbS1sZWZ0IC50b29sdGlwLWFycm93IHsKICB0b3A6IDA7CiAgbGVmdDogNXB4OwogIGJvcmRlci13aWR0aDogMCA1cHggNXB4OwogIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7Cn0KLnRvb2x0aXAuYm90dG9tLXJpZ2h0IC50b29sdGlwLWFycm93IHsKICB0b3A6IDA7CiAgcmlnaHQ6IDVweDsKICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9Ci5wb3BvdmVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTA2MDsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogMjc2cHg7CiAgcGFkZGluZzogMXB4OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1yYWRpdXM6IDZweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJveC1zaGFkb3c6IDAgNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KLnBvcG92ZXIudG9wIHsKICBtYXJnaW4tdG9wOiAtMTBweDsKfQoucG9wb3Zlci5yaWdodCB7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KLnBvcG92ZXIuYm90dG9tIHsKICBtYXJnaW4tdG9wOiAxMHB4Owp9Ci5wb3BvdmVyLmxlZnQgewogIG1hcmdpbi1sZWZ0OiAtMTBweDsKfQoucG9wb3Zlci10aXRsZSB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDhweCAxNHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgYm9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7Cn0KLnBvcG92ZXItY29udGVudCB7CiAgcGFkZGluZzogOXB4IDE0cHg7Cn0KLnBvcG92ZXIgPiAuYXJyb3csCi5wb3BvdmVyID4gLmFycm93OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoucG9wb3ZlciA+IC5hcnJvdyB7CiAgYm9yZGVyLXdpZHRoOiAxMXB4Owp9Ci5wb3BvdmVyID4gLmFycm93OmFmdGVyIHsKICBib3JkZXItd2lkdGg6IDEwcHg7CiAgY29udGVudDogIiI7Cn0KLnBvcG92ZXIudG9wID4gLmFycm93IHsKICBsZWZ0OiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC0xMXB4OwogIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzk5OTk5OTsKICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIGJvdHRvbTogLTExcHg7Cn0KLnBvcG92ZXIudG9wID4gLmFycm93OmFmdGVyIHsKICBjb250ZW50OiAiICI7CiAgYm90dG9tOiAxcHg7CiAgbWFyZ2luLWxlZnQ6IC0xMHB4OwogIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjsKfQoucG9wb3Zlci5yaWdodCA+IC5hcnJvdyB7CiAgdG9wOiA1MCU7CiAgbGVmdDogLTExcHg7CiAgbWFyZ2luLXRvcDogLTExcHg7CiAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTk5OTk5OwogIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoucG9wb3Zlci5yaWdodCA+IC5hcnJvdzphZnRlciB7CiAgY29udGVudDogIiAiOwogIGxlZnQ6IDFweDsKICBib3R0b206IC0xMHB4OwogIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjsKfQoucG9wb3Zlci5ib3R0b20gPiAuYXJyb3cgewogIGxlZnQ6IDUwJTsKICBtYXJnaW4tbGVmdDogLTExcHg7CiAgYm9yZGVyLXRvcC13aWR0aDogMDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTk5OTk5OwogIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7CiAgdG9wOiAtMTFweDsKfQoucG9wb3Zlci5ib3R0b20gPiAuYXJyb3c6YWZ0ZXIgewogIGNvbnRlbnQ6ICIgIjsKICB0b3A6IDFweDsKICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgYm9yZGVyLXRvcC13aWR0aDogMDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwp9Ci5wb3BvdmVyLmxlZnQgPiAuYXJyb3cgewogIHRvcDogNTAlOwogIHJpZ2h0OiAtMTFweDsKICBtYXJnaW4tdG9wOiAtMTFweDsKICBib3JkZXItcmlnaHQtd2lkdGg6IDA7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5OTk5OTk7CiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KLnBvcG92ZXIubGVmdCA+IC5hcnJvdzphZnRlciB7CiAgY29udGVudDogIiAiOwogIHJpZ2h0OiAxcHg7CiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmOwogIGJvdHRvbTogLTEwcHg7Cn0KLmNhcm91c2VsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmNhcm91c2VsLWlubmVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB3aWR0aDogMTAwJTsKfQouY2Fyb3VzZWwtaW5uZXIgPiAuaXRlbSB7CiAgZGlzcGxheTogbm9uZTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjZzIGVhc2UtaW4tb3V0IGxlZnQ7CiAgLW8tdHJhbnNpdGlvbjogMC42cyBlYXNlLWluLW91dCBsZWZ0OwogIHRyYW5zaXRpb246IDAuNnMgZWFzZS1pbi1vdXQgbGVmdDsKfQouY2Fyb3VzZWwtaW5uZXIgPiAuaXRlbSA+IGltZywKLmNhcm91c2VsLWlubmVyID4gLml0ZW0gPiBhID4gaW1nIHsKICBsaW5lLWhlaWdodDogMTsKfQouY2Fyb3VzZWwtaW5uZXIgPiAuYWN0aXZlLAouY2Fyb3VzZWwtaW5uZXIgPiAubmV4dCwKLmNhcm91c2VsLWlubmVyID4gLnByZXYgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5jYXJvdXNlbC1pbm5lciA+IC5hY3RpdmUgewogIGxlZnQ6IDA7Cn0KLmNhcm91c2VsLWlubmVyID4gLm5leHQsCi5jYXJvdXNlbC1pbm5lciA+IC5wcmV2IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIHdpZHRoOiAxMDAlOwp9Ci5jYXJvdXNlbC1pbm5lciA+IC5uZXh0IHsKICBsZWZ0OiAxMDAlOwp9Ci5jYXJvdXNlbC1pbm5lciA+IC5wcmV2IHsKICBsZWZ0OiAtMTAwJTsKfQouY2Fyb3VzZWwtaW5uZXIgPiAubmV4dC5sZWZ0LAouY2Fyb3VzZWwtaW5uZXIgPiAucHJldi5yaWdodCB7CiAgbGVmdDogMDsKfQouY2Fyb3VzZWwtaW5uZXIgPiAuYWN0aXZlLmxlZnQgewogIGxlZnQ6IC0xMDAlOwp9Ci5jYXJvdXNlbC1pbm5lciA+IC5hY3RpdmUucmlnaHQgewogIGxlZnQ6IDEwMCU7Cn0KLmNhcm91c2VsLWNvbnRyb2wgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICBib3R0b206IDA7CiAgd2lkdGg6IDE1JTsKICBvcGFjaXR5OiAwLjU7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTsKICBmb250LXNpemU6IDIwcHg7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjYpOwp9Ci5jYXJvdXNlbC1jb250cm9sLmxlZnQgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsIHJnYmEoMCwgMCwgMCwgMC41KSAwJSwgcmdiYSgwLCAwLCAwLCAwLjAwMDEpIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCByZ2JhKDAsIDAsIDAsIDAuNSkgMCUsIHJnYmEoMCwgMCwgMCwgMC4wMDAxKSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC41KSAwJSwgcmdiYSgwLCAwLCAwLCAwLjAwMDEpIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjODAwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzAwMDAwMDAwJywgR3JhZGllbnRUeXBlPTEpOwp9Ci5jYXJvdXNlbC1jb250cm9sLnJpZ2h0IHsKICBsZWZ0OiBhdXRvOwogIHJpZ2h0OiAwOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsIHJnYmEoMCwgMCwgMCwgMC4wMDAxKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjUpIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCByZ2JhKDAsIDAsIDAsIDAuMDAwMSkgMCUsIHJnYmEoMCwgMCwgMCwgMC41KSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wMDAxKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjUpIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDAwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzgwMDAwMDAwJywgR3JhZGllbnRUeXBlPTEpOwp9Ci5jYXJvdXNlbC1jb250cm9sOmhvdmVyLAouY2Fyb3VzZWwtY29udHJvbDpmb2N1cyB7CiAgb3V0bGluZTogMDsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgb3BhY2l0eTogMC45OwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT05MCk7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiwKLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwKLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCi5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIHotaW5kZXg6IDU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsCi5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1sZWZ0IHsKICBsZWZ0OiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC0xMHB4Owp9Ci5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQsCi5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCB7CiAgcmlnaHQ6IDUwJTsKICBtYXJnaW4tcmlnaHQ6IC0xMHB4Owp9Ci5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsCi5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQgewogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBtYXJnaW4tdG9wOiAtMTBweDsKICBmb250LWZhbWlseTogc2VyaWY7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldjpiZWZvcmUgewogIGNvbnRlbnQ6ICdcMjAzOSc7Cn0KLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dDpiZWZvcmUgewogIGNvbnRlbnQ6ICdcMjAzYSc7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDEwcHg7CiAgbGVmdDogNTAlOwogIHotaW5kZXg6IDE1OwogIHdpZHRoOiA2MCU7CiAgbWFyZ2luLWxlZnQ6IC0zMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAxMHB4OwogIG1hcmdpbjogMXB4OwogIHRleHQtaW5kZW50OiAtOTk5cHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwIFw5OwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgLmFjdGl2ZSB7CiAgbWFyZ2luOiAwOwogIHdpZHRoOiAxMnB4OwogIGhlaWdodDogMTJweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5jYXJvdXNlbC1jYXB0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMTUlOwogIHJpZ2h0OiAxNSU7CiAgYm90dG9tOiAyMHB4OwogIHotaW5kZXg6IDEwOwogIHBhZGRpbmctdG9wOiAyMHB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC42KTsKfQouY2Fyb3VzZWwtY2FwdGlvbiAuYnRuIHsKICB0ZXh0LXNoYWRvdzogbm9uZTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogIC5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1sZWZ0LAogIC5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCwKICAuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2LAogIC5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQgewogICAgd2lkdGg6IDMwcHg7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBtYXJnaW4tdG9wOiAtMTVweDsKICAgIGZvbnQtc2l6ZTogMzBweDsKICB9CiAgLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCiAgLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiB7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgfQogIC5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCwKICAuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0IHsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgfQogIC5jYXJvdXNlbC1jYXB0aW9uIHsKICAgIGxlZnQ6IDIwJTsKICAgIHJpZ2h0OiAyMCU7CiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsKICB9CiAgLmNhcm91c2VsLWluZGljYXRvcnMgewogICAgYm90dG9tOiAyMHB4OwogIH0KfQouY2xlYXJmaXg6YmVmb3JlLAouY2xlYXJmaXg6YWZ0ZXIsCi5kbC1ob3Jpem9udGFsIGRkOmJlZm9yZSwKLmRsLWhvcml6b250YWwgZGQ6YWZ0ZXIsCi5jb250YWluZXI6YmVmb3JlLAouY29udGFpbmVyOmFmdGVyLAouY29udGFpbmVyLWZsdWlkOmJlZm9yZSwKLmNvbnRhaW5lci1mbHVpZDphZnRlciwKLnJvdzpiZWZvcmUsCi5yb3c6YWZ0ZXIsCi5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YmVmb3JlLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmFmdGVyLAouYnRuLXRvb2xiYXI6YmVmb3JlLAouYnRuLXRvb2xiYXI6YWZ0ZXIsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmJlZm9yZSwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6YWZ0ZXIsCi5uYXY6YmVmb3JlLAoubmF2OmFmdGVyLAoubmF2YmFyOmJlZm9yZSwKLm5hdmJhcjphZnRlciwKLm5hdmJhci1oZWFkZXI6YmVmb3JlLAoubmF2YmFyLWhlYWRlcjphZnRlciwKLm5hdmJhci1jb2xsYXBzZTpiZWZvcmUsCi5uYXZiYXItY29sbGFwc2U6YWZ0ZXIsCi5wYWdlcjpiZWZvcmUsCi5wYWdlcjphZnRlciwKLnBhbmVsLWJvZHk6YmVmb3JlLAoucGFuZWwtYm9keTphZnRlciwKLm1vZGFsLWZvb3RlcjpiZWZvcmUsCi5tb2RhbC1mb290ZXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIgIjsKICBkaXNwbGF5OiB0YWJsZTsKfQouY2xlYXJmaXg6YWZ0ZXIsCi5kbC1ob3Jpem9udGFsIGRkOmFmdGVyLAouY29udGFpbmVyOmFmdGVyLAouY29udGFpbmVyLWZsdWlkOmFmdGVyLAoucm93OmFmdGVyLAouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmFmdGVyLAouYnRuLXRvb2xiYXI6YWZ0ZXIsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOmFmdGVyLAoubmF2OmFmdGVyLAoubmF2YmFyOmFmdGVyLAoubmF2YmFyLWhlYWRlcjphZnRlciwKLm5hdmJhci1jb2xsYXBzZTphZnRlciwKLnBhZ2VyOmFmdGVyLAoucGFuZWwtYm9keTphZnRlciwKLm1vZGFsLWZvb3RlcjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLmNlbnRlci1ibG9jayB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9Ci5wdWxsLXJpZ2h0IHsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQoucHVsbC1sZWZ0IHsKICBmbG9hdDogbGVmdCAhaW1wb3J0YW50Owp9Ci5oaWRlIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnNob3cgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KLmludmlzaWJsZSB7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwp9Ci50ZXh0LWhpZGUgewogIGZvbnQ6IDAvMCBhOwogIGNvbG9yOiB0cmFuc3BhcmVudDsKICB0ZXh0LXNoYWRvdzogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDA7Cn0KLmhpZGRlbiB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9Ci5hZmZpeCB7CiAgcG9zaXRpb246IGZpeGVkOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwp9CkAtbXMtdmlld3BvcnQgewogIHdpZHRoOiBkZXZpY2Utd2lkdGg7Cn0KLnZpc2libGUteHMsCi52aXNpYmxlLXNtLAoudmlzaWJsZS1tZCwKLnZpc2libGUtbGcgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoudmlzaWJsZS14cy1ibG9jaywKLnZpc2libGUteHMtaW5saW5lLAoudmlzaWJsZS14cy1pbmxpbmUtYmxvY2ssCi52aXNpYmxlLXNtLWJsb2NrLAoudmlzaWJsZS1zbS1pbmxpbmUsCi52aXNpYmxlLXNtLWlubGluZS1ibG9jaywKLnZpc2libGUtbWQtYmxvY2ssCi52aXNpYmxlLW1kLWlubGluZSwKLnZpc2libGUtbWQtaW5saW5lLWJsb2NrLAoudmlzaWJsZS1sZy1ibG9jaywKLnZpc2libGUtbGctaW5saW5lLAoudmlzaWJsZS1sZy1pbmxpbmUtYmxvY2sgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAudmlzaWJsZS14cyB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXhzIHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLXhzIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLXhzLAogIHRkLnZpc2libGUteHMgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAudmlzaWJsZS14cy1ibG9jayB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAudmlzaWJsZS14cy1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIC52aXNpYmxlLXhzLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpIHsKICAudmlzaWJsZS1zbSB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXNtIHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLXNtIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLXNtLAogIHRkLnZpc2libGUtc20gewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogIC52aXNpYmxlLXNtLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgLnZpc2libGUtc20taW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgewogIC52aXNpYmxlLXNtLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgLnZpc2libGUtbWQgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgdGFibGUudmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICB9CiAgdHIudmlzaWJsZS1tZCB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgdGgudmlzaWJsZS1tZCwKICB0ZC52aXNpYmxlLW1kIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgLnZpc2libGUtbWQtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgLnZpc2libGUtbWQtaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAudmlzaWJsZS1tZC1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAudmlzaWJsZS1sZyB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLWxnIHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLWxnIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLWxnLAogIHRkLnZpc2libGUtbGcgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLnZpc2libGUtbGctYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC52aXNpYmxlLWxnLWlubGluZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC52aXNpYmxlLWxnLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgLmhpZGRlbi14cyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7CiAgLmhpZGRlbi1zbSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkgewogIC5oaWRkZW4tbWQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmhpZGRlbi1sZyB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLXByaW50IHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIHByaW50IHsKICAudmlzaWJsZS1wcmludCB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICB0YWJsZS52aXNpYmxlLXByaW50IHsKICAgIGRpc3BsYXk6IHRhYmxlOwogIH0KICB0ci52aXNpYmxlLXByaW50IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICB0aC52aXNpYmxlLXByaW50LAogIHRkLnZpc2libGUtcHJpbnQgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KfQoudmlzaWJsZS1wcmludC1ibG9jayB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CkBtZWRpYSBwcmludCB7CiAgLnZpc2libGUtcHJpbnQtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KLnZpc2libGUtcHJpbnQtaW5saW5lIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIHByaW50IHsKICAudmlzaWJsZS1wcmludC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLXByaW50LWlubGluZS1ibG9jayB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CkBtZWRpYSBwcmludCB7CiAgLnZpc2libGUtcHJpbnQtaW5saW5lLWJsb2NrIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgcHJpbnQgewogIC5oaWRkZW4tcHJpbnQgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/css/theme.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmJ0bi1kZWZhdWx0LAouYnRuLXByaW1hcnksCi5idG4tc3VjY2VzcywKLmJ0bi1pbmZvLAouYnRuLXdhcm5pbmcsCi5idG4tZGFuZ2VyIHsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLmJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmJ0bi1pbmZvOmFjdGl2ZSwKLmJ0bi13YXJuaW5nOmFjdGl2ZSwKLmJ0bi1kYW5nZXI6YWN0aXZlLAouYnRuLWRlZmF1bHQuYWN0aXZlLAouYnRuLXByaW1hcnkuYWN0aXZlLAouYnRuLXN1Y2Nlc3MuYWN0aXZlLAouYnRuLWluZm8uYWN0aXZlLAouYnRuLXdhcm5pbmcuYWN0aXZlLAouYnRuLWRhbmdlci5hY3RpdmUgewogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQouYnRuOmFjdGl2ZSwKLmJ0bi5hY3RpdmUgewogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1kZWZhdWx0IHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmYgMCUsICNlMGUwZTAgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZiAwJSwgI2UwZTBlMCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZmZmIDAlLCAjZTBlMGUwIDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmZmZmZmZicsIGVuZENvbG9yc3RyPScjZmZlMGUwZTAnLCBHcmFkaWVudFR5cGU9MCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYm9yZGVyLWNvbG9yOiAjZGJkYmRiOwogIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7CiAgYm9yZGVyLWNvbG9yOiAjY2NjOwp9Ci5idG4tZGVmYXVsdDpob3ZlciwKLmJ0bi1kZWZhdWx0OmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cn0KLmJ0bi1kZWZhdWx0OmFjdGl2ZSwKLmJ0bi1kZWZhdWx0LmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsKICBib3JkZXItY29sb3I6ICNkYmRiZGI7Cn0KLmJ0bi1kZWZhdWx0OmRpc2FibGVkLAouYnRuLWRlZmF1bHRbZGlzYWJsZWRdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM0MjhiY2EgMCUsICMyZDZjYTIgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzQyOGJjYSAwJSwgIzJkNmNhMiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNDI4YmNhIDAlLCAjMmQ2Y2EyIDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjQyOGJjYScsIGVuZENvbG9yc3RyPScjZmYyZDZjYTInLCBHcmFkaWVudFR5cGU9MCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYm9yZGVyLWNvbG9yOiAjMmI2NjlhOwp9Ci5idG4tcHJpbWFyeTpob3ZlciwKLmJ0bi1wcmltYXJ5OmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQ2Y2EyOwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cn0KLmJ0bi1wcmltYXJ5OmFjdGl2ZSwKLmJ0bi1wcmltYXJ5LmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzJkNmNhMjsKICBib3JkZXItY29sb3I6ICMyYjY2OWE7Cn0KLmJ0bi1wcmltYXJ5OmRpc2FibGVkLAouYnRuLXByaW1hcnlbZGlzYWJsZWRdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQ2Y2EyOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM1Y2I4NWMgMCUsICM0MTk2NDEgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzVjYjg1YyAwJSwgIzQxOTY0MSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNWNiODVjIDAlLCAjNDE5NjQxIDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjVjYjg1YycsIGVuZENvbG9yc3RyPScjZmY0MTk2NDEnLCBHcmFkaWVudFR5cGU9MCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYm9yZGVyLWNvbG9yOiAjM2U4ZjNlOwp9Ci5idG4tc3VjY2Vzczpob3ZlciwKLmJ0bi1zdWNjZXNzOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE5NjQxOwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cn0KLmJ0bi1zdWNjZXNzOmFjdGl2ZSwKLmJ0bi1zdWNjZXNzLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQxOTY0MTsKICBib3JkZXItY29sb3I6ICMzZThmM2U7Cn0KLmJ0bi1zdWNjZXNzOmRpc2FibGVkLAouYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE5NjQxOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1pbmZvIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUgMCUsICMyYWFiZDIgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzViYzBkZSAwJSwgIzJhYWJkMiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNWJjMGRlIDAlLCAjMmFhYmQyIDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjViYzBkZScsIGVuZENvbG9yc3RyPScjZmYyYWFiZDInLCBHcmFkaWVudFR5cGU9MCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNGM5Owp9Ci5idG4taW5mbzpob3ZlciwKLmJ0bi1pbmZvOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmFhYmQyOwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cn0KLmJ0bi1pbmZvOmFjdGl2ZSwKLmJ0bi1pbmZvLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzJhYWJkMjsKICBib3JkZXItY29sb3I6ICMyOGE0Yzk7Cn0KLmJ0bi1pbmZvOmRpc2FibGVkLAouYnRuLWluZm9bZGlzYWJsZWRdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmFhYmQyOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmMGFkNGUgMCUsICNlYjkzMTYgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2YwYWQ0ZSAwJSwgI2ViOTMxNiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZjBhZDRlIDAlLCAjZWI5MzE2IDEwMCUpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmYwYWQ0ZScsIGVuZENvbG9yc3RyPScjZmZlYjkzMTYnLCBHcmFkaWVudFR5cGU9MCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYm9yZGVyLWNvbG9yOiAjZTM4ZDEzOwp9Ci5idG4td2FybmluZzpob3ZlciwKLmJ0bi13YXJuaW5nOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWI5MzE2OwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cn0KLmJ0bi13YXJuaW5nOmFjdGl2ZSwKLmJ0bi13YXJuaW5nLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ViOTMxNjsKICBib3JkZXItY29sb3I6ICNlMzhkMTM7Cn0KLmJ0bi13YXJuaW5nOmRpc2FibGVkLAouYnRuLXdhcm5pbmdbZGlzYWJsZWRdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWI5MzE2OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmJ0bi1kYW5nZXIgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Q5NTM0ZiAwJSwgI2MxMmUyYSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZDk1MzRmIDAlLCAjYzEyZTJhIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkOTUzNGYgMCUsICNjMTJlMmEgMTAwJSk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZDk1MzRmJywgZW5kQ29sb3JzdHI9JyNmZmMxMmUyYScsIEdyYWRpZW50VHlwZT0wKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkID0gZmFsc2UpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBib3JkZXItY29sb3I6ICNiOTJjMjg7Cn0KLmJ0bi1kYW5nZXI6aG92ZXIsCi5idG4tZGFuZ2VyOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzEyZTJhOwogIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cn0KLmJ0bi1kYW5nZXI6YWN0aXZlLAouYnRuLWRhbmdlci5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNjMTJlMmE7CiAgYm9yZGVyLWNvbG9yOiAjYjkyYzI4Owp9Ci5idG4tZGFuZ2VyOmRpc2FibGVkLAouYnRuLWRhbmdlcltkaXNhYmxlZF0gewogIGJhY2tncm91bmQtY29sb3I6ICNjMTJlMmE7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQoudGh1bWJuYWlsLAouaW1nLXRodW1ibmFpbCB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7CiAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwp9Ci5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmhvdmVyLAouZHJvcGRvd24tbWVudSA+IGxpID4gYTpmb2N1cyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZjVmNWY1IDAlLCAjZThlOGU4IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmNWY1ZjUgMCUsICNlOGU4ZTggMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2Y1ZjVmNSAwJSwgI2U4ZThlOCAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZjVmNWY1JywgZW5kQ29sb3JzdHI9JyNmZmU4ZThlOCcsIEdyYWRpZW50VHlwZT0wKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4Owp9Ci5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGEsCi5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6aG92ZXIsCi5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzQyOGJjYSAwJSwgIzM1N2ViZCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjNDI4YmNhIDAlLCAjMzU3ZWJkIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM0MjhiY2EgMCUsICMzNTdlYmQgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjQyOGJjYScsIGVuZENvbG9yc3RyPScjZmYzNTdlYmQnLCBHcmFkaWVudFR5cGU9MCk7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM1N2ViZDsKfQoubmF2YmFyLWRlZmF1bHQgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiAwJSwgI2Y4ZjhmOCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmIDAlLCAjZjhmOGY4IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmZmZmZmYgMCUsICNmOGY4ZjggMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmZmZmZmZicsIGVuZENvbG9yc3RyPScjZmZmOGY4ZjgnLCBHcmFkaWVudFR5cGU9MCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSksIDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSksIDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYSB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZWJlYmViIDAlLCAjZjNmM2YzIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNlYmViZWIgMCUsICNmM2YzZjMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ViZWJlYiAwJSwgI2YzZjNmMyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZWJlYmViJywgZW5kQ29sb3JzdHI9JyNmZmYzZjNmMycsIEdyYWRpZW50VHlwZT0wKTsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgM3B4IDlweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDNweCA5cHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLm5hdmJhci1icmFuZCwKLm5hdmJhci1uYXYgPiBsaSA+IGEgewogIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7Cn0KLm5hdmJhci1pbnZlcnNlIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMzYzNjM2MgMCUsICMyMjIgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzNjM2MzYyAwJSwgIzIyMiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjM2MzYzNjIDAlLCAjMjIyIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmYzYzNjM2MnLCBlbmRDb2xvcnN0cj0nI2ZmMjIyMjIyJywgR3JhZGllbnRUeXBlPTApOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSk7Cn0KLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gLmFjdGl2ZSA+IGEgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzIyMiAwJSwgIzI4MjgyOCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjMjIyIDAlLCAjMjgyODI4IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMyMjIgMCUsICMyODI4MjggMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjIyMjIyMicsIGVuZENvbG9yc3RyPScjZmYyODI4MjgnLCBHcmFkaWVudFR5cGU9MCk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDNweCA5cHggcmdiYSgwLCAwLCAwLCAwLjI1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDNweCA5cHggcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZCwKLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2ID4gbGkgPiBhIHsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoubmF2YmFyLXN0YXRpYy10b3AsCi5uYXZiYXItZml4ZWQtdG9wLAoubmF2YmFyLWZpeGVkLWJvdHRvbSB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouYWxlcnQgewogIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKfQouYWxlcnQtc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZGZmMGQ4IDAlLCAjYzhlNWJjIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNkZmYwZDggMCUsICNjOGU1YmMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2RmZjBkOCAwJSwgI2M4ZTViYyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZGZmMGQ4JywgZW5kQ29sb3JzdHI9JyNmZmM4ZTViYycsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXItY29sb3I6ICNiMmRiYTE7Cn0KLmFsZXJ0LWluZm8gewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Q5ZWRmNyAwJSwgI2I5ZGVmMCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZDllZGY3IDAlLCAjYjlkZWYwIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkOWVkZjcgMCUsICNiOWRlZjAgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmQ5ZWRmNycsIGVuZENvbG9yc3RyPScjZmZiOWRlZjAnLCBHcmFkaWVudFR5cGU9MCk7CiAgYm9yZGVyLWNvbG9yOiAjOWFjZmVhOwp9Ci5hbGVydC13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmY2Y4ZTMgMCUsICNmOGVmYzAgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZjZjhlMyAwJSwgI2Y4ZWZjMCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZmNmOGUzIDAlLCAjZjhlZmMwIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmY2Y4ZTMnLCBlbmRDb2xvcnN0cj0nI2ZmZjhlZmMwJywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlci1jb2xvcjogI2Y1ZTc5ZTsKfQouYWxlcnQtZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmMmRlZGUgMCUsICNlN2MzYzMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2YyZGVkZSAwJSwgI2U3YzNjMyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZjJkZWRlIDAlLCAjZTdjM2MzIDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmMmRlZGUnLCBlbmRDb2xvcnN0cj0nI2ZmZTdjM2MzJywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlci1jb2xvcjogI2RjYTdhNzsKfQoucHJvZ3Jlc3MgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ViZWJlYiAwJSwgI2Y1ZjVmNSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZWJlYmViIDAlLCAjZjVmNWY1IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNlYmViZWIgMCUsICNmNWY1ZjUgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmViZWJlYicsIGVuZENvbG9yc3RyPScjZmZmNWY1ZjUnLCBHcmFkaWVudFR5cGU9MCk7Cn0KLnByb2dyZXNzLWJhciB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNDI4YmNhIDAlLCAjMzA3MWE5IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM0MjhiY2EgMCUsICMzMDcxYTkgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzQyOGJjYSAwJSwgIzMwNzFhOSAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNDI4YmNhJywgZW5kQ29sb3JzdHI9JyNmZjMwNzFhOScsIEdyYWRpZW50VHlwZT0wKTsKfQoucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzVjYjg1YyAwJSwgIzQ0OWQ0NCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjNWNiODVjIDAlLCAjNDQ5ZDQ0IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM1Y2I4NWMgMCUsICM0NDlkNDQgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjVjYjg1YycsIGVuZENvbG9yc3RyPScjZmY0NDlkNDQnLCBHcmFkaWVudFR5cGU9MCk7Cn0KLnByb2dyZXNzLWJhci1pbmZvIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUgMCUsICMzMWIwZDUgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzViYzBkZSAwJSwgIzMxYjBkNSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNWJjMGRlIDAlLCAjMzFiMGQ1IDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmY1YmMwZGUnLCBlbmRDb2xvcnN0cj0nI2ZmMzFiMGQ1JywgR3JhZGllbnRUeXBlPTApOwp9Ci5wcm9ncmVzcy1iYXItd2FybmluZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZjBhZDRlIDAlLCAjZWM5NzFmIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmMGFkNGUgMCUsICNlYzk3MWYgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2YwYWQ0ZSAwJSwgI2VjOTcxZiAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZjBhZDRlJywgZW5kQ29sb3JzdHI9JyNmZmVjOTcxZicsIEdyYWRpZW50VHlwZT0wKTsKfQoucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZDk1MzRmIDAlLCAjYzkzMDJjIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNkOTUzNGYgMCUsICNjOTMwMmMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2Q5NTM0ZiAwJSwgI2M5MzAyYyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZDk1MzRmJywgZW5kQ29sb3JzdHI9JyNmZmM5MzAyYycsIEdyYWRpZW50VHlwZT0wKTsKfQoucHJvZ3Jlc3MtYmFyLXN0cmlwZWQgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7Cn0KLmxpc3QtZ3JvdXAgewogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyB7CiAgdGV4dC1zaGFkb3c6IDAgLTFweCAwICMzMDcxYTk7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNDI4YmNhIDAlLCAjMzI3OGIzIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM0MjhiY2EgMCUsICMzMjc4YjMgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzQyOGJjYSAwJSwgIzMyNzhiMyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNDI4YmNhJywgZW5kQ29sb3JzdHI9JyNmZjMyNzhiMycsIEdyYWRpZW50VHlwZT0wKTsKICBib3JkZXItY29sb3I6ICMzMjc4YjM7Cn0KLnBhbmVsIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5wYW5lbC1kZWZhdWx0ID4gLnBhbmVsLWhlYWRpbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Y1ZjVmNSAwJSwgI2U4ZThlOCAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZjVmNWY1IDAlLCAjZThlOGU4IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmNWY1ZjUgMCUsICNlOGU4ZTggMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmY1ZjVmNScsIGVuZENvbG9yc3RyPScjZmZlOGU4ZTgnLCBHcmFkaWVudFR5cGU9MCk7Cn0KLnBhbmVsLXByaW1hcnkgPiAucGFuZWwtaGVhZGluZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNDI4YmNhIDAlLCAjMzU3ZWJkIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM0MjhiY2EgMCUsICMzNTdlYmQgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzQyOGJjYSAwJSwgIzM1N2ViZCAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNDI4YmNhJywgZW5kQ29sb3JzdHI9JyNmZjM1N2ViZCcsIEdyYWRpZW50VHlwZT0wKTsKfQoucGFuZWwtc3VjY2VzcyA+IC5wYW5lbC1oZWFkaW5nIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNkZmYwZDggMCUsICNkMGU5YzYgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2RmZjBkOCAwJSwgI2QwZTljNiAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZGZmMGQ4IDAlLCAjZDBlOWM2IDEwMCUpOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZkZmYwZDgnLCBlbmRDb2xvcnN0cj0nI2ZmZDBlOWM2JywgR3JhZGllbnRUeXBlPTApOwp9Ci5wYW5lbC1pbmZvID4gLnBhbmVsLWhlYWRpbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Q5ZWRmNyAwJSwgI2M0ZTNmMyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZDllZGY3IDAlLCAjYzRlM2YzIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkOWVkZjcgMCUsICNjNGUzZjMgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmQ5ZWRmNycsIGVuZENvbG9yc3RyPScjZmZjNGUzZjMnLCBHcmFkaWVudFR5cGU9MCk7Cn0KLnBhbmVsLXdhcm5pbmcgPiAucGFuZWwtaGVhZGluZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmNmOGUzIDAlLCAjZmFmMmNjIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmY2Y4ZTMgMCUsICNmYWYyY2MgMTAwJSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ZjZjhlMyAwJSwgI2ZhZjJjYyAxMDAlKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZmNmOGUzJywgZW5kQ29sb3JzdHI9JyNmZmZhZjJjYycsIEdyYWRpZW50VHlwZT0wKTsKfQoucGFuZWwtZGFuZ2VyID4gLnBhbmVsLWhlYWRpbmcgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2YyZGVkZSAwJSwgI2ViY2NjYyAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZjJkZWRlIDAlLCAjZWJjY2NjIDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmMmRlZGUgMCUsICNlYmNjY2MgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmYyZGVkZScsIGVuZENvbG9yc3RyPScjZmZlYmNjY2MnLCBHcmFkaWVudFR5cGU9MCk7Cn0KLndlbGwgewogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2U4ZThlOCAwJSwgI2Y1ZjVmNSAxMDAlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZThlOGU4IDAlLCAjZjVmNWY1IDEwMCUpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNlOGU4ZTggMCUsICNmNWY1ZjUgMTAwJSk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmU4ZThlOCcsIGVuZENvbG9yc3RyPScjZmZmNWY1ZjUnLCBHcmFkaWVudFR5cGU9MCk7CiAgYm9yZGVyLWNvbG9yOiAjZGNkY2RjOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNSksIDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDUpLCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/.csscomb.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJhbHdheXMtc2VtaWNvbG9uIjogdHJ1ZSwKICAiYmxvY2staW5kZW50IjogMiwKICAiY29sb24tc3BhY2UiOiBbMCwgMV0sCiAgImNvbG9yLWNhc2UiOiAibG93ZXIiLAogICJjb2xvci1zaG9ydGhhbmQiOiB0cnVlLAogICJjb21iaW5hdG9yLXNwYWNlIjogdHJ1ZSwKICAiZWxlbWVudC1jYXNlIjogImxvd2VyIiwKICAiZW9mLW5ld2xpbmUiOiB0cnVlLAogICJsZWFkaW5nLXplcm8iOiBmYWxzZSwKICAicmVtb3ZlLWVtcHR5LXJ1bGVzZXRzIjogdHJ1ZSwKICAicnVsZS1pbmRlbnQiOiAyLAogICJzdGljay1icmFjZSI6ICIgIiwKICAic3RyaXAtc3BhY2VzIjogdHJ1ZSwKICAidW5pdGxlc3MtemVybyI6IHRydWUsCiAgInZlbmRvci1wcmVmaXgtYWxpZ24iOiB0cnVlLAogICJzb3J0LW9yZGVyIjogWwogICAgWwogICAgICAicG9zaXRpb24iLAogICAgICAidG9wIiwKICAgICAgInJpZ2h0IiwKICAgICAgImJvdHRvbSIsCiAgICAgICJsZWZ0IiwKICAgICAgInotaW5kZXgiLAogICAgICAiZGlzcGxheSIsCiAgICAgICJmbG9hdCIsCiAgICAgICJ3aWR0aCIsCiAgICAgICJtaW4td2lkdGgiLAogICAgICAibWF4LXdpZHRoIiwKICAgICAgImhlaWdodCIsCiAgICAgICJtaW4taGVpZ2h0IiwKICAgICAgIm1heC1oZWlnaHQiLAogICAgICAiLXdlYmtpdC1ib3gtc2l6aW5nIiwKICAgICAgIi1tb3otYm94LXNpemluZyIsCiAgICAgICJib3gtc2l6aW5nIiwKICAgICAgIi13ZWJraXQtYXBwZWFyYW5jZSIsCiAgICAgICJwYWRkaW5nIiwKICAgICAgInBhZGRpbmctdG9wIiwKICAgICAgInBhZGRpbmctcmlnaHQiLAogICAgICAicGFkZGluZy1ib3R0b20iLAogICAgICAicGFkZGluZy1sZWZ0IiwKICAgICAgIm1hcmdpbiIsCiAgICAgICJtYXJnaW4tdG9wIiwKICAgICAgIm1hcmdpbi1yaWdodCIsCiAgICAgICJtYXJnaW4tYm90dG9tIiwKICAgICAgIm1hcmdpbi1sZWZ0IiwKICAgICAgIm92ZXJmbG93IiwKICAgICAgIm92ZXJmbG93LXgiLAogICAgICAib3ZlcmZsb3cteSIsCiAgICAgICItd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyIsCiAgICAgICItbXMtb3ZlcmZsb3cteCIsCiAgICAgICItbXMtb3ZlcmZsb3cteSIsCiAgICAgICItbXMtb3ZlcmZsb3ctc3R5bGUiLAogICAgICAiY2xpcCIsCiAgICAgICJjbGVhciIsCiAgICAgICJmb250IiwKICAgICAgImZvbnQtZmFtaWx5IiwKICAgICAgImZvbnQtc2l6ZSIsCiAgICAgICJmb250LXN0eWxlIiwKICAgICAgImZvbnQtd2VpZ2h0IiwKICAgICAgImZvbnQtdmFyaWFudCIsCiAgICAgICJmb250LXNpemUtYWRqdXN0IiwKICAgICAgImZvbnQtc3RyZXRjaCIsCiAgICAgICJmb250LWVmZmVjdCIsCiAgICAgICJmb250LWVtcGhhc2l6ZSIsCiAgICAgICJmb250LWVtcGhhc2l6ZS1wb3NpdGlvbiIsCiAgICAgICJmb250LWVtcGhhc2l6ZS1zdHlsZSIsCiAgICAgICJmb250LXNtb290aCIsCiAgICAgICItd2Via2l0LWh5cGhlbnMiLAogICAgICAiLW1vei1oeXBoZW5zIiwKICAgICAgImh5cGhlbnMiLAogICAgICAibGluZS1oZWlnaHQiLAogICAgICAiY29sb3IiLAogICAgICAidGV4dC1hbGlnbiIsCiAgICAgICItd2Via2l0LXRleHQtYWxpZ24tbGFzdCIsCiAgICAgICItbW96LXRleHQtYWxpZ24tbGFzdCIsCiAgICAgICItbXMtdGV4dC1hbGlnbi1sYXN0IiwKICAgICAgInRleHQtYWxpZ24tbGFzdCIsCiAgICAgICJ0ZXh0LWVtcGhhc2lzIiwKICAgICAgInRleHQtZW1waGFzaXMtY29sb3IiLAogICAgICAidGV4dC1lbXBoYXNpcy1zdHlsZSIsCiAgICAgICJ0ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIiwKICAgICAgInRleHQtZGVjb3JhdGlvbiIsCiAgICAgICJ0ZXh0LWluZGVudCIsCiAgICAgICJ0ZXh0LWp1c3RpZnkiLAogICAgICAidGV4dC1vdXRsaW5lIiwKICAgICAgIi1tcy10ZXh0LW92ZXJmbG93IiwKICAgICAgInRleHQtb3ZlcmZsb3ciLAogICAgICAidGV4dC1vdmVyZmxvdy1lbGxpcHNpcyIsCiAgICAgICJ0ZXh0LW92ZXJmbG93LW1vZGUiLAogICAgICAidGV4dC1zaGFkb3ciLAogICAgICAidGV4dC10cmFuc2Zvcm0iLAogICAgICAidGV4dC13cmFwIiwKICAgICAgIi13ZWJraXQtdGV4dC1zaXplLWFkanVzdCIsCiAgICAgICItbXMtdGV4dC1zaXplLWFkanVzdCIsCiAgICAgICJsZXR0ZXItc3BhY2luZyIsCiAgICAgICItbXMtd29yZC1icmVhayIsCiAgICAgICJ3b3JkLWJyZWFrIiwKICAgICAgIndvcmQtc3BhY2luZyIsCiAgICAgICItbXMtd29yZC13cmFwIiwKICAgICAgIndvcmQtd3JhcCIsCiAgICAgICItbW96LXRhYi1zaXplIiwKICAgICAgIi1vLXRhYi1zaXplIiwKICAgICAgInRhYi1zaXplIiwKICAgICAgIndoaXRlLXNwYWNlIiwKICAgICAgInZlcnRpY2FsLWFsaWduIiwKICAgICAgImxpc3Qtc3R5bGUiLAogICAgICAibGlzdC1zdHlsZS1wb3NpdGlvbiIsCiAgICAgICJsaXN0LXN0eWxlLXR5cGUiLAogICAgICAibGlzdC1zdHlsZS1pbWFnZSIsCiAgICAgICJwb2ludGVyLWV2ZW50cyIsCiAgICAgICJjdXJzb3IiLAogICAgICAidmlzaWJpbGl0eSIsCiAgICAgICJ6b29tIiwKICAgICAgImZsZXgtZGlyZWN0aW9uIiwKICAgICAgImZsZXgtb3JkZXIiLAogICAgICAiZmxleC1wYWNrIiwKICAgICAgImZsZXgtYWxpZ24iLAogICAgICAidGFibGUtbGF5b3V0IiwKICAgICAgImVtcHR5LWNlbGxzIiwKICAgICAgImNhcHRpb24tc2lkZSIsCiAgICAgICJib3JkZXItc3BhY2luZyIsCiAgICAgICJib3JkZXItY29sbGFwc2UiLAogICAgICAiY29udGVudCIsCiAgICAgICJxdW90ZXMiLAogICAgICAiY291bnRlci1yZXNldCIsCiAgICAgICJjb3VudGVyLWluY3JlbWVudCIsCiAgICAgICJyZXNpemUiLAogICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdCIsCiAgICAgICItbW96LXVzZXItc2VsZWN0IiwKICAgICAgIi1tcy11c2VyLXNlbGVjdCIsCiAgICAgICItby11c2VyLXNlbGVjdCIsCiAgICAgICJ1c2VyLXNlbGVjdCIsCiAgICAgICJuYXYtaW5kZXgiLAogICAgICAibmF2LXVwIiwKICAgICAgIm5hdi1yaWdodCIsCiAgICAgICJuYXYtZG93biIsCiAgICAgICJuYXYtbGVmdCIsCiAgICAgICJiYWNrZ3JvdW5kIiwKICAgICAgImJhY2tncm91bmQtY29sb3IiLAogICAgICAiYmFja2dyb3VuZC1pbWFnZSIsCiAgICAgICItbXMtZmlsdGVyOlxcJ3Byb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudCIsCiAgICAgICJmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50IiwKICAgICAgImZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlciIsCiAgICAgICJmaWx0ZXIiLAogICAgICAiYmFja2dyb3VuZC1yZXBlYXQiLAogICAgICAiYmFja2dyb3VuZC1hdHRhY2htZW50IiwKICAgICAgImJhY2tncm91bmQtcG9zaXRpb24iLAogICAgICAiYmFja2dyb3VuZC1wb3NpdGlvbi14IiwKICAgICAgImJhY2tncm91bmQtcG9zaXRpb24teSIsCiAgICAgICItd2Via2l0LWJhY2tncm91bmQtY2xpcCIsCiAgICAgICItbW96LWJhY2tncm91bmQtY2xpcCIsCiAgICAgICJiYWNrZ3JvdW5kLWNsaXAiLAogICAgICAiYmFja2dyb3VuZC1vcmlnaW4iLAogICAgICAiLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemUiLAogICAgICAiLW1vei1iYWNrZ3JvdW5kLXNpemUiLAogICAgICAiLW8tYmFja2dyb3VuZC1zaXplIiwKICAgICAgImJhY2tncm91bmQtc2l6ZSIsCiAgICAgICJib3JkZXIiLAogICAgICAiYm9yZGVyLWNvbG9yIiwKICAgICAgImJvcmRlci1zdHlsZSIsCiAgICAgICJib3JkZXItd2lkdGgiLAogICAgICAiYm9yZGVyLXRvcCIsCiAgICAgICJib3JkZXItdG9wLWNvbG9yIiwKICAgICAgImJvcmRlci10b3Atc3R5bGUiLAogICAgICAiYm9yZGVyLXRvcC13aWR0aCIsCiAgICAgICJib3JkZXItcmlnaHQiLAogICAgICAiYm9yZGVyLXJpZ2h0LWNvbG9yIiwKICAgICAgImJvcmRlci1yaWdodC1zdHlsZSIsCiAgICAgICJib3JkZXItcmlnaHQtd2lkdGgiLAogICAgICAiYm9yZGVyLWJvdHRvbSIsCiAgICAgICJib3JkZXItYm90dG9tLWNvbG9yIiwKICAgICAgImJvcmRlci1ib3R0b20tc3R5bGUiLAogICAgICAiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiAgICAgICJib3JkZXItbGVmdCIsCiAgICAgICJib3JkZXItbGVmdC1jb2xvciIsCiAgICAgICJib3JkZXItbGVmdC1zdHlsZSIsCiAgICAgICJib3JkZXItbGVmdC13aWR0aCIsCiAgICAgICJib3JkZXItcmFkaXVzIiwKICAgICAgImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLAogICAgICAiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLAogICAgICAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiLAogICAgICAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsCiAgICAgICItd2Via2l0LWJvcmRlci1pbWFnZSIsCiAgICAgICItbW96LWJvcmRlci1pbWFnZSIsCiAgICAgICItby1ib3JkZXItaW1hZ2UiLAogICAgICAiYm9yZGVyLWltYWdlIiwKICAgICAgIi13ZWJraXQtYm9yZGVyLWltYWdlLXNvdXJjZSIsCiAgICAgICItbW96LWJvcmRlci1pbWFnZS1zb3VyY2UiLAogICAgICAiLW8tYm9yZGVyLWltYWdlLXNvdXJjZSIsCiAgICAgICJib3JkZXItaW1hZ2Utc291cmNlIiwKICAgICAgIi13ZWJraXQtYm9yZGVyLWltYWdlLXNsaWNlIiwKICAgICAgIi1tb3otYm9yZGVyLWltYWdlLXNsaWNlIiwKICAgICAgIi1vLWJvcmRlci1pbWFnZS1zbGljZSIsCiAgICAgICJib3JkZXItaW1hZ2Utc2xpY2UiLAogICAgICAiLXdlYmtpdC1ib3JkZXItaW1hZ2Utd2lkdGgiLAogICAgICAiLW1vei1ib3JkZXItaW1hZ2Utd2lkdGgiLAogICAgICAiLW8tYm9yZGVyLWltYWdlLXdpZHRoIiwKICAgICAgImJvcmRlci1pbWFnZS13aWR0aCIsCiAgICAgICItd2Via2l0LWJvcmRlci1pbWFnZS1vdXRzZXQiLAogICAgICAiLW1vei1ib3JkZXItaW1hZ2Utb3V0c2V0IiwKICAgICAgIi1vLWJvcmRlci1pbWFnZS1vdXRzZXQiLAogICAgICAiYm9yZGVyLWltYWdlLW91dHNldCIsCiAgICAgICItd2Via2l0LWJvcmRlci1pbWFnZS1yZXBlYXQiLAogICAgICAiLW1vei1ib3JkZXItaW1hZ2UtcmVwZWF0IiwKICAgICAgIi1vLWJvcmRlci1pbWFnZS1yZXBlYXQiLAogICAgICAiYm9yZGVyLWltYWdlLXJlcGVhdCIsCiAgICAgICJvdXRsaW5lIiwKICAgICAgIm91dGxpbmUtd2lkdGgiLAogICAgICAib3V0bGluZS1zdHlsZSIsCiAgICAgICJvdXRsaW5lLWNvbG9yIiwKICAgICAgIm91dGxpbmUtb2Zmc2V0IiwKICAgICAgIi13ZWJraXQtYm94LXNoYWRvdyIsCiAgICAgICItbW96LWJveC1zaGFkb3ciLAogICAgICAiYm94LXNoYWRvdyIsCiAgICAgICJmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHkiLAogICAgICAiLW1zLWZpbHRlcjpcXCdwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEiLAogICAgICAib3BhY2l0eSIsCiAgICAgICItbXMtaW50ZXJwb2xhdGlvbi1tb2RlIiwKICAgICAgIi13ZWJraXQtdHJhbnNpdGlvbiIsCiAgICAgICItbW96LXRyYW5zaXRpb24iLAogICAgICAiLW1zLXRyYW5zaXRpb24iLAogICAgICAiLW8tdHJhbnNpdGlvbiIsCiAgICAgICJ0cmFuc2l0aW9uIiwKICAgICAgIi13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSIsCiAgICAgICItbW96LXRyYW5zaXRpb24tZGVsYXkiLAogICAgICAiLW1zLXRyYW5zaXRpb24tZGVsYXkiLAogICAgICAiLW8tdHJhbnNpdGlvbi1kZWxheSIsCiAgICAgICJ0cmFuc2l0aW9uLWRlbGF5IiwKICAgICAgIi13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLAogICAgICAiLW1vei10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsCiAgICAgICItbXMtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLAogICAgICAiLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLAogICAgICAidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLAogICAgICAiLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uIiwKICAgICAgIi1tb3otdHJhbnNpdGlvbi1kdXJhdGlvbiIsCiAgICAgICItbXMtdHJhbnNpdGlvbi1kdXJhdGlvbiIsCiAgICAgICItby10cmFuc2l0aW9uLWR1cmF0aW9uIiwKICAgICAgInRyYW5zaXRpb24tZHVyYXRpb24iLAogICAgICAiLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5IiwKICAgICAgIi1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eSIsCiAgICAgICItbXMtdHJhbnNpdGlvbi1wcm9wZXJ0eSIsCiAgICAgICItby10cmFuc2l0aW9uLXByb3BlcnR5IiwKICAgICAgInRyYW5zaXRpb24tcHJvcGVydHkiLAogICAgICAiLXdlYmtpdC10cmFuc2Zvcm0iLAogICAgICAiLW1vei10cmFuc2Zvcm0iLAogICAgICAiLW1zLXRyYW5zZm9ybSIsCiAgICAgICItby10cmFuc2Zvcm0iLAogICAgICAidHJhbnNmb3JtIiwKICAgICAgIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiIsCiAgICAgICItbW96LXRyYW5zZm9ybS1vcmlnaW4iLAogICAgICAiLW1zLXRyYW5zZm9ybS1vcmlnaW4iLAogICAgICAiLW8tdHJhbnNmb3JtLW9yaWdpbiIsCiAgICAgICJ0cmFuc2Zvcm0tb3JpZ2luIiwKICAgICAgIi13ZWJraXQtYW5pbWF0aW9uIiwKICAgICAgIi1tb3otYW5pbWF0aW9uIiwKICAgICAgIi1tcy1hbmltYXRpb24iLAogICAgICAiLW8tYW5pbWF0aW9uIiwKICAgICAgImFuaW1hdGlvbiIsCiAgICAgICItd2Via2l0LWFuaW1hdGlvbi1uYW1lIiwKICAgICAgIi1tb3otYW5pbWF0aW9uLW5hbWUiLAogICAgICAiLW1zLWFuaW1hdGlvbi1uYW1lIiwKICAgICAgIi1vLWFuaW1hdGlvbi1uYW1lIiwKICAgICAgImFuaW1hdGlvbi1uYW1lIiwKICAgICAgIi13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uIiwKICAgICAgIi1tb3otYW5pbWF0aW9uLWR1cmF0aW9uIiwKICAgICAgIi1tcy1hbmltYXRpb24tZHVyYXRpb24iLAogICAgICAiLW8tYW5pbWF0aW9uLWR1cmF0aW9uIiwKICAgICAgImFuaW1hdGlvbi1kdXJhdGlvbiIsCiAgICAgICItd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlIiwKICAgICAgIi1tb3otYW5pbWF0aW9uLXBsYXktc3RhdGUiLAogICAgICAiLW1zLWFuaW1hdGlvbi1wbGF5LXN0YXRlIiwKICAgICAgIi1vLWFuaW1hdGlvbi1wbGF5LXN0YXRlIiwKICAgICAgImFuaW1hdGlvbi1wbGF5LXN0YXRlIiwKICAgICAgIi13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsCiAgICAgICItbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLAogICAgICAiLW1zLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLAogICAgICAiLW8tYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsCiAgICAgICJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIiwKICAgICAgIi13ZWJraXQtYW5pbWF0aW9uLWRlbGF5IiwKICAgICAgIi1tb3otYW5pbWF0aW9uLWRlbGF5IiwKICAgICAgIi1tcy1hbmltYXRpb24tZGVsYXkiLAogICAgICAiLW8tYW5pbWF0aW9uLWRlbGF5IiwKICAgICAgImFuaW1hdGlvbi1kZWxheSIsCiAgICAgICItd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLAogICAgICAiLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50IiwKICAgICAgIi1tcy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50IiwKICAgICAgIi1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLAogICAgICAiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsCiAgICAgICItd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb24iLAogICAgICAiLW1vei1hbmltYXRpb24tZGlyZWN0aW9uIiwKICAgICAgIi1tcy1hbmltYXRpb24tZGlyZWN0aW9uIiwKICAgICAgIi1vLWFuaW1hdGlvbi1kaXJlY3Rpb24iLAogICAgICAiYW5pbWF0aW9uLWRpcmVjdGlvbiIKICAgIF0KICBdCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/.csslintrc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJhZGpvaW5pbmctY2xhc3NlcyI6IGZhbHNlLAogICJib3gtc2l6aW5nIjogZmFsc2UsCiAgImJveC1tb2RlbCI6IGZhbHNlLAogICJjb21wYXRpYmxlLXZlbmRvci1wcmVmaXhlcyI6IGZhbHNlLAogICJmbG9hdHMiOiBmYWxzZSwKICAiZm9udC1zaXplcyI6IGZhbHNlLAogICJncmFkaWVudHMiOiBmYWxzZSwKICAiaW1wb3J0YW50IjogZmFsc2UsCiAgImtub3duLXByb3BlcnRpZXMiOiBmYWxzZSwKICAib3V0bGluZS1ub25lIjogZmFsc2UsCiAgInF1YWxpZmllZC1oZWFkaW5ncyI6IGZhbHNlLAogICJyZWdleC1zZWxlY3RvcnMiOiBmYWxzZSwKICAic2hvcnRoYW5kIjogZmFsc2UsCiAgInRleHQtaW5kZW50IjogZmFsc2UsCiAgInVuaXF1ZS1oZWFkaW5ncyI6IGZhbHNlLAogICJ1bml2ZXJzYWwtc2VsZWN0b3IiOiBmYWxzZSwKICAidW5xdWFsaWZpZWQtYXR0cmlidXRlcyI6IGZhbHNlCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/alerts.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQWxlcnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBzdHlsZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmFsZXJ0IHsKICBwYWRkaW5nOiBAYWxlcnQtcGFkZGluZzsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQGFsZXJ0LWJvcmRlci1yYWRpdXM7CgogIC8vIEhlYWRpbmdzIGZvciBsYXJnZXIgYWxlcnRzCiAgaDQgewogICAgbWFyZ2luLXRvcDogMDsKICAgIC8vIFNwZWNpZmllZCBmb3IgdGhlIGg0IHRvIHByZXZlbnQgY29uZmxpY3RzIG9mIGNoYW5naW5nIEBoZWFkaW5ncy1jb2xvcgogICAgY29sb3I6IGluaGVyaXQ7CiAgfQogIC8vIFByb3ZpZGUgY2xhc3MgZm9yIGxpbmtzIHRoYXQgbWF0Y2ggYWxlcnRzCiAgLmFsZXJ0LWxpbmsgewogICAgZm9udC13ZWlnaHQ6IEBhbGVydC1saW5rLWZvbnQtd2VpZ2h0OwogIH0KCiAgLy8gSW1wcm92ZSBhbGlnbm1lbnQgYW5kIHNwYWNpbmcgb2YgaW5uZXIgY29udGVudAogID4gcCwKICA+IHVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogID4gcCArIHAgewogICAgbWFyZ2luLXRvcDogNXB4OwogIH0KfQoKLy8gRGlzbWlzc2libGUgYWxlcnRzCi8vCi8vIEV4cGFuZCB0aGUgcmlnaHQgcGFkZGluZyBhbmQgYWNjb3VudCBmb3IgdGhlIGNsb3NlIGJ1dHRvbidzIHBvc2l0aW9uaW5nLgoKLmFsZXJ0LWRpc21pc3NhYmxlLCAvLyBUaGUgbWlzc3BlbGxlZCAuYWxlcnQtZGlzbWlzc2FibGUgd2FzIGRlcHJlY2F0ZWQgaW4gMy4yLjAuCi5hbGVydC1kaXNtaXNzaWJsZSB7CiAgcGFkZGluZy1yaWdodDogKEBhbGVydC1wYWRkaW5nICsgMjApOwoKICAvLyBBZGp1c3QgY2xvc2UgbGluayBwb3NpdGlvbgogIC5jbG9zZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0ycHg7CiAgICByaWdodDogLTIxcHg7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9Cn0KCi8vIEFsdGVybmF0ZSBzdHlsZXMKLy8KLy8gR2VuZXJhdGUgY29udGV4dHVhbCBtb2RpZmllciBjbGFzc2VzIGZvciBjb2xvcml6aW5nIHRoZSBhbGVydC4KCi5hbGVydC1zdWNjZXNzIHsKICAuYWxlcnQtdmFyaWFudChAYWxlcnQtc3VjY2Vzcy1iZzsgQGFsZXJ0LXN1Y2Nlc3MtYm9yZGVyOyBAYWxlcnQtc3VjY2Vzcy10ZXh0KTsKfQouYWxlcnQtaW5mbyB7CiAgLmFsZXJ0LXZhcmlhbnQoQGFsZXJ0LWluZm8tYmc7IEBhbGVydC1pbmZvLWJvcmRlcjsgQGFsZXJ0LWluZm8tdGV4dCk7Cn0KLmFsZXJ0LXdhcm5pbmcgewogIC5hbGVydC12YXJpYW50KEBhbGVydC13YXJuaW5nLWJnOyBAYWxlcnQtd2FybmluZy1ib3JkZXI7IEBhbGVydC13YXJuaW5nLXRleHQpOwp9Ci5hbGVydC1kYW5nZXIgewogIC5hbGVydC12YXJpYW50KEBhbGVydC1kYW5nZXItYmc7IEBhbGVydC1kYW5nZXItYm9yZGVyOyBAYWxlcnQtZGFuZ2VyLXRleHQpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/badges.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQmFkZ2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBjbGFzcwouYmFkZ2UgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtaW4td2lkdGg6IDEwcHg7CiAgcGFkZGluZzogM3B4IDdweDsKICBmb250LXNpemU6IEBmb250LXNpemUtc21hbGw7CiAgZm9udC13ZWlnaHQ6IEBiYWRnZS1mb250LXdlaWdodDsKICBjb2xvcjogQGJhZGdlLWNvbG9yOwogIGxpbmUtaGVpZ2h0OiBAYmFkZ2UtbGluZS1oZWlnaHQ7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IEBiYWRnZS1iZzsKICBib3JkZXItcmFkaXVzOiBAYmFkZ2UtYm9yZGVyLXJhZGl1czsKCiAgLy8gRW1wdHkgYmFkZ2VzIGNvbGxhcHNlIGF1dG9tYXRpY2FsbHkgKG5vdCBhdmFpbGFibGUgaW4gSUU4KQogICY6ZW1wdHkgewogICAgZGlzcGxheTogbm9uZTsKICB9CgogIC8vIFF1aWNrIGZpeCBmb3IgYmFkZ2VzIGluIGJ1dHRvbnMKICAuYnRuICYgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMXB4OwogIH0KICAuYnRuLXhzICYgewogICAgdG9wOiAwOwogICAgcGFkZGluZzogMXB4IDVweDsKICB9CgogIC8vIEhvdmVyIHN0YXRlLCBidXQgb25seSBmb3IgbGlua3MKICBhJiB7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAYmFkZ2UtbGluay1ob3Zlci1jb2xvcjsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CiAgfQoKICAvLyBBY2NvdW50IGZvciBiYWRnZXMgaW4gbmF2cwogIGEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSA+ICYsCiAgLm5hdi1waWxscyA+IC5hY3RpdmUgPiBhID4gJiB7CiAgICBjb2xvcjogQGJhZGdlLWFjdGl2ZS1jb2xvcjsKICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWRnZS1hY3RpdmUtYmc7CiAgfQogIC5uYXYtcGlsbHMgPiBsaSA+IGEgPiAmIHsKICAgIG1hcmdpbi1sZWZ0OiAzcHg7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/bootstrap.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQ29yZSB2YXJpYWJsZXMgYW5kIG1peGlucwpAaW1wb3J0ICJ2YXJpYWJsZXMubGVzcyI7CkBpbXBvcnQgIm1peGlucy5sZXNzIjsKCi8vIFJlc2V0IGFuZCBkZXBlbmRlbmNpZXMKQGltcG9ydCAibm9ybWFsaXplLmxlc3MiOwpAaW1wb3J0ICJwcmludC5sZXNzIjsKQGltcG9ydCAiZ2x5cGhpY29ucy5sZXNzIjsKCi8vIENvcmUgQ1NTCkBpbXBvcnQgInNjYWZmb2xkaW5nLmxlc3MiOwpAaW1wb3J0ICJ0eXBlLmxlc3MiOwpAaW1wb3J0ICJjb2RlLmxlc3MiOwpAaW1wb3J0ICJncmlkLmxlc3MiOwpAaW1wb3J0ICJ0YWJsZXMubGVzcyI7CkBpbXBvcnQgImZvcm1zLmxlc3MiOwpAaW1wb3J0ICJidXR0b25zLmxlc3MiOwoKLy8gQ29tcG9uZW50cwpAaW1wb3J0ICJjb21wb25lbnQtYW5pbWF0aW9ucy5sZXNzIjsKQGltcG9ydCAiZHJvcGRvd25zLmxlc3MiOwpAaW1wb3J0ICJidXR0b24tZ3JvdXBzLmxlc3MiOwpAaW1wb3J0ICJpbnB1dC1ncm91cHMubGVzcyI7CkBpbXBvcnQgIm5hdnMubGVzcyI7CkBpbXBvcnQgIm5hdmJhci5sZXNzIjsKQGltcG9ydCAiYnJlYWRjcnVtYnMubGVzcyI7CkBpbXBvcnQgInBhZ2luYXRpb24ubGVzcyI7CkBpbXBvcnQgInBhZ2VyLmxlc3MiOwpAaW1wb3J0ICJsYWJlbHMubGVzcyI7CkBpbXBvcnQgImJhZGdlcy5sZXNzIjsKQGltcG9ydCAianVtYm90cm9uLmxlc3MiOwpAaW1wb3J0ICJ0aHVtYm5haWxzLmxlc3MiOwpAaW1wb3J0ICJhbGVydHMubGVzcyI7CkBpbXBvcnQgInByb2dyZXNzLWJhcnMubGVzcyI7CkBpbXBvcnQgIm1lZGlhLmxlc3MiOwpAaW1wb3J0ICJsaXN0LWdyb3VwLmxlc3MiOwpAaW1wb3J0ICJwYW5lbHMubGVzcyI7CkBpbXBvcnQgInJlc3BvbnNpdmUtZW1iZWQubGVzcyI7CkBpbXBvcnQgIndlbGxzLmxlc3MiOwpAaW1wb3J0ICJjbG9zZS5sZXNzIjsKCi8vIENvbXBvbmVudHMgdy8gSmF2YVNjcmlwdApAaW1wb3J0ICJtb2RhbHMubGVzcyI7CkBpbXBvcnQgInRvb2x0aXAubGVzcyI7CkBpbXBvcnQgInBvcG92ZXJzLmxlc3MiOwpAaW1wb3J0ICJjYXJvdXNlbC5sZXNzIjsKCi8vIFV0aWxpdHkgY2xhc3NlcwpAaW1wb3J0ICJ1dGlsaXRpZXMubGVzcyI7CkBpbXBvcnQgInJlc3BvbnNpdmUtdXRpbGl0aWVzLmxlc3MiOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/breadcrumbs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnJlYWRjcnVtYnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgouYnJlYWRjcnVtYiB7CiAgcGFkZGluZzogQGJyZWFkY3J1bWItcGFkZGluZy12ZXJ0aWNhbCBAYnJlYWRjcnVtYi1wYWRkaW5nLWhvcml6b250YWw7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJyZWFkY3J1bWItYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CgogICAgKyBsaTpiZWZvcmUgewogICAgICBjb250ZW50OiAiQHticmVhZGNydW1iLXNlcGFyYXRvcn1cMDBhMCI7IC8vIFVuaWNvZGUgc3BhY2UgYWRkZWQgc2luY2UgaW5saW5lLWJsb2NrIG1lYW5zIG5vbi1jb2xsYXBzaW5nIHdoaXRlLXNwYWNlCiAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICBjb2xvcjogQGJyZWFkY3J1bWItY29sb3I7CiAgICB9CiAgfQoKICA+IC5hY3RpdmUgewogICAgY29sb3I6IEBicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/button-groups.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnV0dG9uIGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gTWFrZSB0aGUgZGl2IGJlaGF2ZSBsaWtlIGEgYnV0dG9uCi5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLy8gbWF0Y2ggLmJ0biBhbGlnbm1lbnQgZ2l2ZW4gZm9udC1zaXplIGhhY2sgYWJvdmUKICA+IC5idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZmxvYXQ6IGxlZnQ7CiAgICAvLyBCcmluZyB0aGUgImFjdGl2ZSIgYnV0dG9uIHRvIHRoZSBmcm9udAogICAgJjpob3ZlciwKICAgICY6Zm9jdXMsCiAgICAmOmFjdGl2ZSwKICAgICYuYWN0aXZlIHsKICAgICAgei1pbmRleDogMjsKICAgIH0KICAgICY6Zm9jdXMgewogICAgICAvLyBSZW1vdmUgZm9jdXMgb3V0bGluZSB3aGVuIGRyb3Bkb3duIEpTIGFkZHMgaXQgYWZ0ZXIgY2xvc2luZyB0aGUgbWVudQogICAgICBvdXRsaW5lOiAwOwogICAgfQogIH0KfQoKLy8gUHJldmVudCBkb3VibGUgYm9yZGVycyB3aGVuIGJ1dHRvbnMgYXJlIG5leHQgdG8gZWFjaCBvdGhlcgouYnRuLWdyb3VwIHsKICAuYnRuICsgLmJ0biwKICAuYnRuICsgLmJ0bi1ncm91cCwKICAuYnRuLWdyb3VwICsgLmJ0biwKICAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgICBtYXJnaW4tbGVmdDogLTFweDsKICB9Cn0KCi8vIE9wdGlvbmFsOiBHcm91cCBtdWx0aXBsZSBidXR0b24gZ3JvdXBzIHRvZ2V0aGVyIGZvciBhIHRvb2xiYXIKLmJ0bi10b29sYmFyIHsKICBtYXJnaW4tbGVmdDogLTVweDsgLy8gT2Zmc2V0IHRoZSBmaXJzdCBjaGlsZCdzIG1hcmdpbgogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwoKICAuYnRuLWdyb3VwLAogIC5pbnB1dC1ncm91cCB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgPiAuYnRuLAogID4gLmJ0bi1ncm91cCwKICA+IC5pbnB1dC1ncm91cCB7CiAgICBtYXJnaW4tbGVmdDogNXB4OwogIH0KfQoKLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkgewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KCi8vIFNldCBjb3JuZXJzIGluZGl2aWR1YWwgYmVjYXVzZSBzb21ldGltZXMgYSBzaW5nbGUgYnV0dG9uIGNhbiBiZSBpbiBhIC5idG4tZ3JvdXAgYW5kIHdlIG5lZWQgOmZpcnN0LWNoaWxkIGFuZCA6bGFzdC1jaGlsZCB0byBib3RoIG1hdGNoCi5idG4tZ3JvdXAgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tbGVmdDogMDsKICAmOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHsKICAgIC5ib3JkZXItcmlnaHQtcmFkaXVzKDApOwogIH0KfQovLyBOZWVkIC5kcm9wZG93bi10b2dnbGUgc2luY2UgOmxhc3QtY2hpbGQgZG9lc24ndCBhcHBseSBnaXZlbiBhIC5kcm9wZG93bi1tZW51IGltbWVkaWF0ZWx5IGFmdGVyIGl0Ci5idG4tZ3JvdXAgPiAuYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAgPiAuZHJvcGRvd24tdG9nZ2xlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9CgovLyBDdXN0b20gZWRpdHMgZm9yIGluY2x1ZGluZyBidG4tZ3JvdXBzIHdpdGhpbiBidG4tZ3JvdXBzICh1c2VmdWwgZm9yIGluY2x1ZGluZyBkcm9wZG93biBidXR0b25zIHdpdGhpbiBhIGJ0bi1ncm91cCkKLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXAgewogIGZsb2F0OiBsZWZ0Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkIHsKICA+IC5idG46bGFzdC1jaGlsZCwKICA+IC5kcm9wZG93bi10b2dnbGUgewogICAgLmJvcmRlci1yaWdodC1yYWRpdXMoMCk7CiAgfQp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmxhc3QtY2hpbGQgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9CgovLyBPbiBhY3RpdmUgYW5kIG9wZW4sIGRvbid0IHNob3cgb3V0bGluZQouYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLAouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgb3V0bGluZTogMDsKfQoKCi8vIFNpemluZwovLwovLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi4KCi5idG4tZ3JvdXAteHMgPiAuYnRuIHsgJjpleHRlbmQoLmJ0bi14cyk7IH0KLmJ0bi1ncm91cC1zbSA+IC5idG4geyAmOmV4dGVuZCguYnRuLXNtKTsgfQouYnRuLWdyb3VwLWxnID4gLmJ0biB7ICY6ZXh0ZW5kKC5idG4tbGcpOyB9CgoKLy8gU3BsaXQgYnV0dG9uIGRyb3Bkb3ducwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBHaXZlIHRoZSBsaW5lIGJldHdlZW4gYnV0dG9ucyBzb21lIGRlcHRoCi5idG4tZ3JvdXAgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgcGFkZGluZy1yaWdodDogOHB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiAxMnB4OwogIHBhZGRpbmctcmlnaHQ6IDEycHg7Cn0KCi8vIFRoZSBjbGlja2FibGUgYnV0dG9uIGZvciB0b2dnbGluZyB0aGUgbWVudQovLyBSZW1vdmUgdGhlIGdyYWRpZW50IGFuZCBzZXQgdGhlIHNhbWUgaW5zZXQgc2hhZG93IGFzIHRoZSA6YWN0aXZlIHN0YXRlCi5idG4tZ3JvdXAub3BlbiAuZHJvcGRvd24tdG9nZ2xlIHsKICAuYm94LXNoYWRvdyhpbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KSk7CgogIC8vIFNob3cgbm8gc2hhZG93IGZvciBgLmJ0bi1saW5rYCBzaW5jZSBpdCBoYXMgbm8gb3RoZXIgYnV0dG9uIHN0eWxlcy4KICAmLmJ0bi1saW5rIHsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwogIH0KfQoKCi8vIFJlcG9zaXRpb24gdGhlIGNhcmV0Ci5idG4gLmNhcmV0IHsKICBtYXJnaW4tbGVmdDogMDsKfQovLyBDYXJldHMgaW4gb3RoZXIgYnV0dG9uIHNpemVzCi5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IEBjYXJldC13aWR0aC1sYXJnZSBAY2FyZXQtd2lkdGgtbGFyZ2UgMDsKICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwp9Ci8vIFVwc2lkZSBkb3duIGNhcmV0cyBmb3IgLmRyb3B1cAouZHJvcHVwIC5idG4tbGcgLmNhcmV0IHsKICBib3JkZXItd2lkdGg6IDAgQGNhcmV0LXdpZHRoLWxhcmdlIEBjYXJldC13aWR0aC1sYXJnZTsKfQoKCi8vIFZlcnRpY2FsIGJ1dHRvbiBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CiAgPiAuYnRuLAogID4gLmJ0bi1ncm91cCwKICA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IG5vbmU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CgogIC8vIENsZWFyIGZsb2F0cyBzbyBkcm9wZG93biBtZW51cyBjYW4gYmUgcHJvcGVybHkgcGxhY2VkCiAgPiAuYnRuLWdyb3VwIHsKICAgICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwogICAgPiAuYnRuIHsKICAgICAgZmxvYXQ6IG5vbmU7CiAgICB9CiAgfQoKICA+IC5idG4gKyAuYnRuLAogID4gLmJ0biArIC5idG4tZ3JvdXAsCiAgPiAuYnRuLWdyb3VwICsgLmJ0biwKICA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9Cn0KCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHsKICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9CiAgJjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogICAgLmJvcmRlci1ib3R0b20tcmFkaXVzKDApOwogIH0KICAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICAgIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKICB9Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgPiAuYnRuOmxhc3QtY2hpbGQsCiAgPiAuZHJvcGRvd24tdG9nZ2xlIHsKICAgIC5ib3JkZXItYm90dG9tLXJhZGl1cygwKTsKICB9Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG46Zmlyc3QtY2hpbGQgewogIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKfQoKCgovLyBKdXN0aWZpZWQgYnV0dG9uIGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuLWdyb3VwLWp1c3RpZmllZCB7CiAgZGlzcGxheTogdGFibGU7CiAgd2lkdGg6IDEwMCU7CiAgdGFibGUtbGF5b3V0OiBmaXhlZDsKICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOwogID4gLmJ0biwKICA+IC5idG4tZ3JvdXAgewogICAgZmxvYXQ6IG5vbmU7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgd2lkdGg6IDElOwogIH0KICA+IC5idG4tZ3JvdXAgLmJ0biB7CiAgICB3aWR0aDogMTAwJTsKICB9CgogID4gLmJ0bi1ncm91cCAuZHJvcGRvd24tbWVudSB7CiAgICBsZWZ0OiBhdXRvOwogIH0KfQoKCi8vIENoZWNrYm94IGFuZCByYWRpbyBvcHRpb25zCi8vCi8vIEluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIGJyb3dzZXIncyBmb3JtIHZhbGlkYXRpb24gZmVlZGJhY2ssIHBvd2VyZWQgYnkgdGhlCi8vIGByZXF1aXJlZGAgYXR0cmlidXRlLCB3ZSBoYXZlIHRvICJoaWRlIiB0aGUgaW5wdXRzIHZpYSBgb3BhY2l0eWAuIFdlIGNhbm5vdAovLyB1c2UgYGRpc3BsYXk6IG5vbmU7YCBvciBgdmlzaWJpbGl0eTogaGlkZGVuO2AgYXMgdGhhdCBhbHNvIGhpZGVzIHRoZSBwb3BvdmVyLgovLyBUaGlzIHdheSwgd2UgZW5zdXJlIGEgRE9NIGVsZW1lbnQgaXMgdmlzaWJsZSB0byBwb3NpdGlvbiB0aGUgcG9wb3ZlciBmcm9tLgovLwovLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTI3OTQgZm9yIG1vcmUuCgpbZGF0YS10b2dnbGU9ImJ1dHRvbnMiXSA+IC5idG4gPiBpbnB1dFt0eXBlPSJyYWRpbyJdLApbZGF0YS10b2dnbGU9ImJ1dHRvbnMiXSA+IC5idG4gPiBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogLTE7CiAgLm9wYWNpdHkoMCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/buttons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhc2Ugc3R5bGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gRm9yIGlucHV0LmJ0bgogIGZvbnQtd2VpZ2h0OiBAYnRuLWZvbnQtd2VpZ2h0OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyAvLyBSZXNldCB1bnVzdWFsIEZpcmVmb3gtb24tQW5kcm9pZCBkZWZhdWx0IHN0eWxlOyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9pc3N1ZXMvMjE0CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAuYnV0dG9uLXNpemUoQHBhZGRpbmctYmFzZS12ZXJ0aWNhbDsgQHBhZGRpbmctYmFzZS1ob3Jpem9udGFsOyBAZm9udC1zaXplLWJhc2U7IEBsaW5lLWhlaWdodC1iYXNlOyBAYm9yZGVyLXJhZGl1cy1iYXNlKTsKICAudXNlci1zZWxlY3Qobm9uZSk7CgogICYsCiAgJjphY3RpdmUsCiAgJi5hY3RpdmUgewogICAgJjpmb2N1cyB7CiAgICAgIC50YWItZm9jdXMoKTsKICAgIH0KICB9CgogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGJ0bi1kZWZhdWx0LWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgJjphY3RpdmUsCiAgJi5hY3RpdmUgewogICAgb3V0bGluZTogMDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICAuYm94LXNoYWRvdyhpbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KSk7CiAgfQoKICAmLmRpc2FibGVkLAogICZbZGlzYWJsZWRdLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgLy8gRnV0dXJlLXByb29mIGRpc2FibGluZyBvZiBjbGlja3MKICAgIC5vcGFjaXR5KC42NSk7CiAgICAuYm94LXNoYWRvdyhub25lKTsKICB9Cn0KCgovLyBBbHRlcm5hdGUgYnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmJ0bi1kZWZhdWx0IHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi1kZWZhdWx0LWNvbG9yOyBAYnRuLWRlZmF1bHQtYmc7IEBidG4tZGVmYXVsdC1ib3JkZXIpOwp9Ci5idG4tcHJpbWFyeSB7CiAgLmJ1dHRvbi12YXJpYW50KEBidG4tcHJpbWFyeS1jb2xvcjsgQGJ0bi1wcmltYXJ5LWJnOyBAYnRuLXByaW1hcnktYm9yZGVyKTsKfQovLyBTdWNjZXNzIGFwcGVhcnMgYXMgZ3JlZW4KLmJ0bi1zdWNjZXNzIHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi1zdWNjZXNzLWNvbG9yOyBAYnRuLXN1Y2Nlc3MtYmc7IEBidG4tc3VjY2Vzcy1ib3JkZXIpOwp9Ci8vIEluZm8gYXBwZWFycyBhcyBibHVlLWdyZWVuCi5idG4taW5mbyB7CiAgLmJ1dHRvbi12YXJpYW50KEBidG4taW5mby1jb2xvcjsgQGJ0bi1pbmZvLWJnOyBAYnRuLWluZm8tYm9yZGVyKTsKfQovLyBXYXJuaW5nIGFwcGVhcnMgYXMgb3JhbmdlCi5idG4td2FybmluZyB7CiAgLmJ1dHRvbi12YXJpYW50KEBidG4td2FybmluZy1jb2xvcjsgQGJ0bi13YXJuaW5nLWJnOyBAYnRuLXdhcm5pbmctYm9yZGVyKTsKfQovLyBEYW5nZXIgYW5kIGVycm9yIGFwcGVhciBhcyByZWQKLmJ0bi1kYW5nZXIgewogIC5idXR0b24tdmFyaWFudChAYnRuLWRhbmdlci1jb2xvcjsgQGJ0bi1kYW5nZXItYmc7IEBidG4tZGFuZ2VyLWJvcmRlcik7Cn0KCgovLyBMaW5rIGJ1dHRvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gTWFrZSBhIGJ1dHRvbiBsb29rIGFuZCBiZWhhdmUgbGlrZSBhIGxpbmsKLmJ0bi1saW5rIHsKICBjb2xvcjogQGxpbmstY29sb3I7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyLXJhZGl1czogMDsKCiAgJiwKICAmOmFjdGl2ZSwKICAmW2Rpc2FibGVkXSwKICBmaWVsZHNldFtkaXNhYmxlZF0gJiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwogIH0KICAmLAogICY6aG92ZXIsCiAgJjpmb2N1cywKICAmOmFjdGl2ZSB7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIH0KICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgY29sb3I6IEBsaW5rLWhvdmVyLWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9CiAgJltkaXNhYmxlZF0sCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgJjpob3ZlciwKICAgICY6Zm9jdXMgewogICAgICBjb2xvcjogQGJ0bi1saW5rLWRpc2FibGVkLWNvbG9yOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICB9CiAgfQp9CgoKLy8gQnV0dG9uIFNpemVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuLWxnIHsKICAvLyBsaW5lLWhlaWdodDogZW5zdXJlIGV2ZW4tbnVtYmVyZWQgaGVpZ2h0IG9mIGJ1dHRvbiBuZXh0IHRvIGxhcmdlIGlucHV0CiAgLmJ1dHRvbi1zaXplKEBwYWRkaW5nLWxhcmdlLXZlcnRpY2FsOyBAcGFkZGluZy1sYXJnZS1ob3Jpem9udGFsOyBAZm9udC1zaXplLWxhcmdlOyBAbGluZS1oZWlnaHQtbGFyZ2U7IEBib3JkZXItcmFkaXVzLWxhcmdlKTsKfQouYnRuLXNtIHsKICAvLyBsaW5lLWhlaWdodDogZW5zdXJlIHByb3BlciBoZWlnaHQgb2YgYnV0dG9uIG5leHQgdG8gc21hbGwgaW5wdXQKICAuYnV0dG9uLXNpemUoQHBhZGRpbmctc21hbGwtdmVydGljYWw7IEBwYWRkaW5nLXNtYWxsLWhvcml6b250YWw7IEBmb250LXNpemUtc21hbGw7IEBsaW5lLWhlaWdodC1zbWFsbDsgQGJvcmRlci1yYWRpdXMtc21hbGwpOwp9Ci5idG4teHMgewogIC5idXR0b24tc2l6ZShAcGFkZGluZy14cy12ZXJ0aWNhbDsgQHBhZGRpbmcteHMtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGxpbmUtaGVpZ2h0LXNtYWxsOyBAYm9yZGVyLXJhZGl1cy1zbWFsbCk7Cn0KCgovLyBCbG9jayBidXR0b24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5idG4tYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwp9CgovLyBWZXJ0aWNhbGx5IHNwYWNlIG91dCBtdWx0aXBsZSBibG9jayBidXR0b25zCi5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KCi8vIFNwZWNpZmljaXR5IG92ZXJyaWRlcwppbnB1dFt0eXBlPSJzdWJtaXQiXSwKaW5wdXRbdHlwZT0icmVzZXQiXSwKaW5wdXRbdHlwZT0iYnV0dG9uIl0gewogICYuYnRuLWJsb2NrIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/carousel.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ2Fyb3VzZWwKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBXcmFwcGVyIGZvciB0aGUgc2xpZGUgY29udGFpbmVyIGFuZCBpbmRpY2F0b3JzCi5jYXJvdXNlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouY2Fyb3VzZWwtaW5uZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdpZHRoOiAxMDAlOwoKICA+IC5pdGVtIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAudHJhbnNpdGlvbiguNnMgZWFzZS1pbi1vdXQgbGVmdCk7CgogICAgLy8gQWNjb3VudCBmb3IgamFua2l0dWRlIG9uIGltYWdlcwogICAgPiBpbWcsCiAgICA+IGEgPiBpbWcgewogICAgICAmOmV4dGVuZCguaW1nLXJlc3BvbnNpdmUpOwogICAgICBsaW5lLWhlaWdodDogMTsKICAgIH0KICB9CgogID4gLmFjdGl2ZSwKICA+IC5uZXh0LAogID4gLnByZXYgewogICAgZGlzcGxheTogYmxvY2s7CiAgfQoKICA+IC5hY3RpdmUgewogICAgbGVmdDogMDsKICB9CgogID4gLm5leHQsCiAgPiAucHJldiB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICB3aWR0aDogMTAwJTsKICB9CgogID4gLm5leHQgewogICAgbGVmdDogMTAwJTsKICB9CiAgPiAucHJldiB7CiAgICBsZWZ0OiAtMTAwJTsKICB9CiAgPiAubmV4dC5sZWZ0LAogID4gLnByZXYucmlnaHQgewogICAgbGVmdDogMDsKICB9CgogID4gLmFjdGl2ZS5sZWZ0IHsKICAgIGxlZnQ6IC0xMDAlOwogIH0KICA+IC5hY3RpdmUucmlnaHQgewogICAgbGVmdDogMTAwJTsKICB9Cgp9CgovLyBMZWZ0L3JpZ2h0IGNvbnRyb2xzIGZvciBuYXYKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouY2Fyb3VzZWwtY29udHJvbCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIGJvdHRvbTogMDsKICB3aWR0aDogQGNhcm91c2VsLWNvbnRyb2wtd2lkdGg7CiAgLm9wYWNpdHkoQGNhcm91c2VsLWNvbnRyb2wtb3BhY2l0eSk7CiAgZm9udC1zaXplOiBAY2Fyb3VzZWwtY29udHJvbC1mb250LXNpemU7CiAgY29sb3I6IEBjYXJvdXNlbC1jb250cm9sLWNvbG9yOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LXNoYWRvdzogQGNhcm91c2VsLXRleHQtc2hhZG93OwogIC8vIFdlIGNhbid0IGhhdmUgdGhpcyB0cmFuc2l0aW9uIGhlcmUgYmVjYXVzZSBXZWJLaXQgY2FuY2VscyB0aGUgY2Fyb3VzZWwKICAvLyBhbmltYXRpb24gaWYgeW91IHRyaXAgdGhpcyB3aGlsZSBpbiB0aGUgbWlkZGxlIG9mIGFub3RoZXIgYW5pbWF0aW9uLgoKICAvLyBTZXQgZ3JhZGllbnRzIGZvciBiYWNrZ3JvdW5kcwogICYubGVmdCB7CiAgICAjZ3JhZGllbnQgPiAuaG9yaXpvbnRhbChAc3RhcnQtY29sb3I6IHJnYmEoMCwwLDAsLjUpOyBAZW5kLWNvbG9yOiByZ2JhKDAsMCwwLC4wMDAxKSk7CiAgfQogICYucmlnaHQgewogICAgbGVmdDogYXV0bzsKICAgIHJpZ2h0OiAwOwogICAgI2dyYWRpZW50ID4gLmhvcml6b250YWwoQHN0YXJ0LWNvbG9yOiByZ2JhKDAsMCwwLC4wMDAxKTsgQGVuZC1jb2xvcjogcmdiYSgwLDAsMCwuNSkpOwogIH0KCiAgLy8gSG92ZXIvZm9jdXMgc3RhdGUKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgb3V0bGluZTogMDsKICAgIGNvbG9yOiBAY2Fyb3VzZWwtY29udHJvbC1jb2xvcjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIC5vcGFjaXR5KC45KTsKICB9CgogIC8vIFRvZ2dsZXMKICAuaWNvbi1wcmV2LAogIC5pY29uLW5leHQsCiAgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCiAgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgei1pbmRleDogNTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB9CiAgLmljb24tcHJldiwKICAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCB7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgfQogIC5pY29uLW5leHQsCiAgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0IHsKICAgIHJpZ2h0OiA1MCU7CiAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4OwogIH0KICAuaWNvbi1wcmV2LAogIC5pY29uLW5leHQgewogICAgd2lkdGg6ICAyMHB4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgbWFyZ2luLXRvcDogLTEwcHg7CiAgICBmb250LWZhbWlseTogc2VyaWY7CiAgfQoKCiAgLmljb24tcHJldiB7CiAgICAmOmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcMjAzOSc7Ly8gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKFUrMjAzOSkKICAgIH0KICB9CiAgLmljb24tbmV4dCB7CiAgICAmOmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcMjAzYSc7Ly8gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLIChVKzIwM0EpCiAgICB9CiAgfQp9CgovLyBPcHRpb25hbCBpbmRpY2F0b3IgcGlwcwovLwovLyBBZGQgYW4gdW5vcmRlcmVkIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIGNsYXNzIGFuZCBhZGQgYSBsaXN0IGl0ZW0gZm9yIGVhY2gKLy8gc2xpZGUgeW91ciBjYXJvdXNlbCBob2xkcy4KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAxMHB4OwogIGxlZnQ6IDUwJTsKICB6LWluZGV4OiAxNTsKICB3aWR0aDogNjAlOwogIG1hcmdpbi1sZWZ0OiAtMzAlOwogIHBhZGRpbmctbGVmdDogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIHRleHQtYWxpZ246IGNlbnRlcjsKCiAgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6ICAxMHB4OwogICAgaGVpZ2h0OiAxMHB4OwogICAgbWFyZ2luOiAxcHg7CiAgICB0ZXh0LWluZGVudDogLTk5OXB4OwogICAgYm9yZGVyOiAxcHggc29saWQgQGNhcm91c2VsLWluZGljYXRvci1ib3JkZXItY29sb3I7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwoKICAgIC8vIElFOC05IGhhY2sgZm9yIGV2ZW50IGhhbmRsaW5nCiAgICAvLwogICAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgOC05IGRvZXMgbm90IHN1cHBvcnQgY2xpY2tzIG9uIGVsZW1lbnRzIHdpdGhvdXQgYSBzZXQKICAgIC8vIGBiYWNrZ3JvdW5kLWNvbG9yYC4gV2UgY2Fubm90IHVzZSBgZmlsdGVyYCBzaW5jZSB0aGF0J3Mgbm90IHZpZXdlZCBhcyBhCiAgICAvLyBiYWNrZ3JvdW5kIGNvbG9yIGJ5IHRoZSBicm93c2VyLiBUaHVzLCBhIGhhY2sgaXMgbmVlZGVkLgogICAgLy8KICAgIC8vIEZvciBJRTgsIHdlIHNldCBzb2xpZCBibGFjayBhcyBpdCBkb2Vzbid0IHN1cHBvcnQgYHJnYmEoKWAuIEZvciBJRTksIHdlCiAgICAvLyBzZXQgYWxwaGEgdHJhbnNwYXJlbmN5IGZvciB0aGUgYmVzdCByZXN1bHRzIHBvc3NpYmxlLgogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMCBcOTsgLy8gSUU4CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDApOyAvLyBJRTkKICB9CiAgLmFjdGl2ZSB7CiAgICBtYXJnaW46IDA7CiAgICB3aWR0aDogIDEycHg7CiAgICBoZWlnaHQ6IDEycHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1iZzsKICB9Cn0KCi8vIE9wdGlvbmFsIGNhcHRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEhpZGRlbiBieSBkZWZhdWx0IGZvciBzbWFsbGVyIHZpZXdwb3J0cwouY2Fyb3VzZWwtY2FwdGlvbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDE1JTsKICByaWdodDogMTUlOwogIGJvdHRvbTogMjBweDsKICB6LWluZGV4OiAxMDsKICBwYWRkaW5nLXRvcDogMjBweDsKICBwYWRkaW5nLWJvdHRvbTogMjBweDsKICBjb2xvcjogQGNhcm91c2VsLWNhcHRpb24tY29sb3I7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtc2hhZG93OiBAY2Fyb3VzZWwtdGV4dC1zaGFkb3c7CiAgJiAuYnRuIHsKICAgIHRleHQtc2hhZG93OiBub25lOyAvLyBObyBzaGFkb3cgZm9yIGJ1dHRvbiBlbGVtZW50cyBpbiBjYXJvdXNlbC1jYXB0aW9uCiAgfQp9CgoKLy8gU2NhbGUgdXAgY29udHJvbHMgZm9yIHRhYmxldHMgYW5kIHVwCkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CgogIC8vIFNjYWxlIHVwIHRoZSBjb250cm9scyBhIHNtaWRnZQogIC5jYXJvdXNlbC1jb250cm9sIHsKICAgIC5nbHlwaGljb24tY2hldnJvbi1sZWZ0LAogICAgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0LAogICAgLmljb24tcHJldiwKICAgIC5pY29uLW5leHQgewogICAgICB3aWR0aDogMzBweDsKICAgICAgaGVpZ2h0OiAzMHB4OwogICAgICBtYXJnaW4tdG9wOiAtMTVweDsKICAgICAgZm9udC1zaXplOiAzMHB4OwogICAgfQogICAgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCiAgICAuaWNvbi1wcmV2IHsKICAgICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogICAgfQogICAgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0LAogICAgLmljb24tbmV4dCB7CiAgICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICB9CiAgfQoKICAvLyBTaG93IGFuZCBsZWZ0IGFsaWduIHRoZSBjYXB0aW9ucwogIC5jYXJvdXNlbC1jYXB0aW9uIHsKICAgIGxlZnQ6IDIwJTsKICAgIHJpZ2h0OiAyMCU7CiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsKICB9CgogIC8vIE1vdmUgdXAgdGhlIGluZGljYXRvcnMKICAuY2Fyb3VzZWwtaW5kaWNhdG9ycyB7CiAgICBib3R0b206IDIwcHg7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/close.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ2xvc2UgaWNvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgouY2xvc2UgewogIGZsb2F0OiByaWdodDsKICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjUpOwogIGZvbnQtd2VpZ2h0OiBAY2xvc2UtZm9udC13ZWlnaHQ7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6IEBjbG9zZS1jb2xvcjsKICB0ZXh0LXNoYWRvdzogQGNsb3NlLXRleHQtc2hhZG93OwogIC5vcGFjaXR5KC4yKTsKCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAY2xvc2UtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAub3BhY2l0eSguNSk7CiAgfQoKICAvLyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGJ1dHRvbiB2ZXJzaW9uCiAgLy8gaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuCiAgLy8gSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj0iIyJgLgogIGJ1dHRvbiYgewogICAgcGFkZGluZzogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAwOwogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/code.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ29kZSAoaW5saW5lIGFuZCBibG9jaykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBJbmxpbmUgYW5kIGJsb2NrIGNvZGUgc3R5bGVzCmNvZGUsCmtiZCwKcHJlLApzYW1wIHsKICBmb250LWZhbWlseTogQGZvbnQtZmFtaWx5LW1vbm9zcGFjZTsKfQoKLy8gSW5saW5lIGNvZGUKY29kZSB7CiAgcGFkZGluZzogMnB4IDRweDsKICBmb250LXNpemU6IDkwJTsKICBjb2xvcjogQGNvZGUtY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGNvZGUtYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKfQoKLy8gVXNlciBpbnB1dCB0eXBpY2FsbHkgZW50ZXJlZCB2aWEga2V5Ym9hcmQKa2JkIHsKICBwYWRkaW5nOiAycHggNHB4OwogIGZvbnQtc2l6ZTogOTAlOwogIGNvbG9yOiBAa2JkLWNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBrYmQtYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtc21hbGw7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwuMjUpOwoKICBrYmQgewogICAgcGFkZGluZzogMDsKICAgIGZvbnQtc2l6ZTogMTAwJTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgfQp9CgovLyBCbG9ja3Mgb2YgY29kZQpwcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6ICgoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC0gMSkgLyAyKTsKICBtYXJnaW46IDAgMCAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7CiAgZm9udC1zaXplOiAoQGZvbnQtc2l6ZS1iYXNlIC0gMSk7IC8vIDE0cHggdG8gMTNweAogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgd29yZC13cmFwOiBicmVhay13b3JkOwogIGNvbG9yOiBAcHJlLWNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBwcmUtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgQHByZS1ib3JkZXItY29sb3I7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgLy8gQWNjb3VudCBmb3Igc29tZSBjb2RlIG91dHB1dHMgdGhhdCBwbGFjZSBjb2RlIHRhZ3MgaW4gcHJlIHRhZ3MKICBjb2RlIHsKICAgIHBhZGRpbmc6IDA7CiAgICBmb250LXNpemU6IGluaGVyaXQ7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KCi8vIEVuYWJsZSBzY3JvbGxhYmxlIGJsb2NrcyBvZiBjb2RlCi5wcmUtc2Nyb2xsYWJsZSB7CiAgbWF4LWhlaWdodDogQHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ7CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/component-animations.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ29tcG9uZW50IGFuaW1hdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEhlYWRzIHVwIQovLwovLyBXZSBkb24ndCB1c2UgdGhlIGAub3BhY2l0eSgpYCBtaXhpbiBoZXJlIHNpbmNlIGl0IGNhdXNlcyBhIGJ1ZyB3aXRoIHRleHQKLy8gZmllbGRzIGluIElFNy04LiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzM1NTIuCgouZmFkZSB7CiAgb3BhY2l0eTogMDsKICAudHJhbnNpdGlvbihvcGFjaXR5IC4xNXMgbGluZWFyKTsKICAmLmluIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgouY29sbGFwc2UgewogIGRpc3BsYXk6IG5vbmU7CgogICYuaW4gICAgICB7IGRpc3BsYXk6IGJsb2NrOyB9CiAgdHImLmluICAgIHsgZGlzcGxheTogdGFibGUtcm93OyB9CiAgdGJvZHkmLmluIHsgZGlzcGxheTogdGFibGUtcm93LWdyb3VwOyB9Cn0KCi5jb2xsYXBzaW5nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgaGVpZ2h0OiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgLnRyYW5zaXRpb24oaGVpZ2h0IC4zNXMgZWFzZSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/dropdowns.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gRHJvcGRvd24gbWVudXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBEcm9wZG93biBhcnJvdy9jYXJldAouY2FyZXQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDJweDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGJvcmRlci10b3A6ICAgQGNhcmV0LXdpZHRoLWJhc2Ugc29saWQ7CiAgYm9yZGVyLXJpZ2h0OiBAY2FyZXQtd2lkdGgtYmFzZSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItbGVmdDogIEBjYXJldC13aWR0aC1iYXNlIHNvbGlkIHRyYW5zcGFyZW50Owp9CgovLyBUaGUgZHJvcGRvd24gd3JhcHBlciAoZGl2KQouZHJvcGRvd24gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLy8gUHJldmVudCB0aGUgZm9jdXMgb24gdGhlIGRyb3Bkb3duIHRvZ2dsZSB3aGVuIGNsb3NpbmcgZHJvcGRvd25zCi5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIG91dGxpbmU6IDA7Cn0KCi8vIFRoZSBkcm9wZG93biBtZW51ICh1bCkKLmRyb3Bkb3duLW1lbnUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LWRyb3Bkb3duOwogIGRpc3BsYXk6IG5vbmU7IC8vIG5vbmUgYnkgZGVmYXVsdCwgYnV0IGJsb2NrIG9uICJvcGVuIiBvZiB0aGUgbWVudQogIGZsb2F0OiBsZWZ0OwogIG1pbi13aWR0aDogMTYwcHg7CiAgcGFkZGluZzogNXB4IDA7CiAgbWFyZ2luOiAycHggMCAwOyAvLyBvdmVycmlkZSBkZWZhdWx0IHVsCiAgbGlzdC1zdHlsZTogbm9uZTsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBFbnN1cmVzIHByb3BlciBhbGlnbm1lbnQgaWYgcGFyZW50IGhhcyBpdCBjaGFuZ2VkIChlLmcuLCBtb2RhbCBmb290ZXIpCiAgYmFja2dyb3VuZC1jb2xvcjogQGRyb3Bkb3duLWJnOwogIGJvcmRlcjogMXB4IHNvbGlkIEBkcm9wZG93bi1mYWxsYmFjay1ib3JkZXI7IC8vIElFOCBmYWxsYmFjawogIGJvcmRlcjogMXB4IHNvbGlkIEBkcm9wZG93bi1ib3JkZXI7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICAuYm94LXNoYWRvdygwIDZweCAxMnB4IHJnYmEoMCwwLDAsLjE3NSkpOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgogIC8vIEFsaWducyB0aGUgZHJvcGRvd24gbWVudSB0byByaWdodAogIC8vCiAgLy8gRGVwcmVjYXRlZCBhcyBvZiAzLjEuMCBpbiBmYXZvciBvZiBgLmRyb3Bkb3duLW1lbnUtW2Rpcl1gCiAgJi5wdWxsLXJpZ2h0IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKICB9CgogIC8vIERpdmlkZXJzIChiYXNpY2FsbHkgYW4gaHIpIHdpdGhpbiB0aGUgZHJvcGRvd24KICAuZGl2aWRlciB7CiAgICAubmF2LWRpdmlkZXIoQGRyb3Bkb3duLWRpdmlkZXItYmcpOwogIH0KCiAgLy8gTGlua3Mgd2l0aGluIHRoZSBkcm9wZG93biBtZW51CiAgPiBsaSA+IGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiAzcHggMjBweDsKICAgIGNsZWFyOiBib3RoOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICAgIGNvbG9yOiBAZHJvcGRvd24tbGluay1jb2xvcjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8vIHByZXZlbnQgbGlua3MgZnJvbSByYW5kb21seSBicmVha2luZyBvbnRvIG5ldyBsaW5lcwogIH0KfQoKLy8gSG92ZXIvRm9jdXMgc3RhdGUKLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgewogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjb2xvcjogQGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZHJvcGRvd24tbGluay1ob3Zlci1iZzsKICB9Cn0KCi8vIEFjdGl2ZSBzdGF0ZQouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhIHsKICAmLAogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgb3V0bGluZTogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IEBkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzsKICB9Cn0KCi8vIERpc2FibGVkIHN0YXRlCi8vCi8vIEdyYXkgb3V0IHRleHQgYW5kIGVuc3VyZSB0aGUgaG92ZXIvZm9jdXMgc3RhdGUgcmVtYWlucyBncmF5CgouZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGEgewogICYsCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjsKICB9Cn0KLy8gTnVrZSBob3Zlci9mb2N1cyBlZmZlY3RzCi5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSB7CiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLy8gUmVtb3ZlIENTUyBncmFkaWVudAogICAgLnJlc2V0LWZpbHRlcigpOwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICB9Cn0KCi8vIE9wZW4gc3RhdGUgZm9yIHRoZSBkcm9wZG93bgoub3BlbiB7CiAgLy8gU2hvdyB0aGUgbWVudQogID4gLmRyb3Bkb3duLW1lbnUgewogICAgZGlzcGxheTogYmxvY2s7CiAgfQoKICAvLyBSZW1vdmUgdGhlIG91dGxpbmUgd2hlbiA6Zm9jdXMgaXMgdHJpZ2dlcmVkCiAgPiBhIHsKICAgIG91dGxpbmU6IDA7CiAgfQp9CgovLyBNZW51IHBvc2l0aW9uaW5nCi8vCi8vIEFkZCBleHRyYSBjbGFzcyB0byBgLmRyb3Bkb3duLW1lbnVgIHRvIGZsaXAgdGhlIGFsaWdubWVudCBvZiB0aGUgZHJvcGRvd24KLy8gbWVudSB3aXRoIHRoZSBwYXJlbnQuCi5kcm9wZG93bi1tZW51LXJpZ2h0IHsKICBsZWZ0OiBhdXRvOyAvLyBSZXNldCB0aGUgZGVmYXVsdCBmcm9tIGAuZHJvcGRvd24tbWVudWAKICByaWdodDogMDsKfQovLyBXaXRoIHYzLCB3ZSBlbmFibGVkIGF1dG8tZmxpcHBpbmcgaWYgeW91IGhhdmUgYSBkcm9wZG93biB3aXRoaW4gYSByaWdodAovLyBhbGlnbmVkIG5hdiBjb21wb25lbnQuIFRvIGVuYWJsZSB0aGUgdW5kb2luZyBvZiB0aGF0LCB3ZSBwcm92aWRlIGFuIG92ZXJyaWRlCi8vIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgZHJvcGRvd24gbWVudSBhbGlnbm1lbnQuCi8vCi8vIFRoaXMgaXMgb25seSBmb3IgbGVmdC1hbGlnbmluZyBhIGRyb3Bkb3duIG1lbnUgd2l0aGluIGEgYC5uYXZiYXItcmlnaHRgIG9yCi8vIGAucHVsbC1yaWdodGAgbmF2IGNvbXBvbmVudC4KLmRyb3Bkb3duLW1lbnUtbGVmdCB7CiAgbGVmdDogMDsKICByaWdodDogYXV0bzsKfQoKLy8gRHJvcGRvd24gc2VjdGlvbiBoZWFkZXJzCi5kcm9wZG93bi1oZWFkZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDNweCAyMHB4OwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1zbWFsbDsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgY29sb3I6IEBkcm9wZG93bi1oZWFkZXItY29sb3I7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLy8gYXMgd2l0aCA+IGxpID4gYQp9CgovLyBCYWNrZHJvcCB0byBjYXRjaCBib2R5IGNsaWNrcyBvbiBtb2JpbGUsIGV0Yy4KLmRyb3Bkb3duLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgdG9wOiAwOwogIHotaW5kZXg6IChAemluZGV4LWRyb3Bkb3duIC0gMTApOwp9CgovLyBSaWdodCBhbGlnbmVkIGRyb3Bkb3ducwoucHVsbC1yaWdodCA+IC5kcm9wZG93bi1tZW51IHsKICByaWdodDogMDsKICBsZWZ0OiBhdXRvOwp9CgovLyBBbGxvdyBmb3IgZHJvcGRvd25zIHRvIGdvIGJvdHRvbSB1cCAoYWthLCBkcm9wdXAtbWVudSkKLy8KLy8gSnVzdCBhZGQgLmRyb3B1cCBhZnRlciB0aGUgc3RhbmRhcmQgLmRyb3Bkb3duIGNsYXNzIGFuZCB5b3UncmUgc2V0LCBicm8uCi8vIFRPRE86IGFic3RyYWN0IHRoaXMgc28gdGhhdCB0aGUgbmF2YmFyIGZpeGVkIHN0eWxlcyBhcmUgbm90IHBsYWNlZCBoZXJlPwoKLmRyb3B1cCwKLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIHsKICAvLyBSZXZlcnNlIHRoZSBjYXJldAogIC5jYXJldCB7CiAgICBib3JkZXItdG9wOiAwOwogICAgYm9yZGVyLWJvdHRvbTogQGNhcmV0LXdpZHRoLWJhc2Ugc29saWQ7CiAgICBjb250ZW50OiAiIjsKICB9CiAgLy8gRGlmZmVyZW50IHBvc2l0aW9uaW5nIGZvciBib3R0b20gdXAgbWVudQogIC5kcm9wZG93bi1tZW51IHsKICAgIHRvcDogYXV0bzsKICAgIGJvdHRvbTogMTAwJTsKICAgIG1hcmdpbi1ib3R0b206IDFweDsKICB9Cn0KCgovLyBDb21wb25lbnQgYWxpZ25tZW50Ci8vCi8vIFJlaXRlcmF0ZSBwZXIgbmF2YmFyLmxlc3MgYW5kIHRoZSBtb2RpZmllZCBjb21wb25lbnQgYWxpZ25tZW50IHRoZXJlLgoKQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAubmF2YmFyLXJpZ2h0IHsKICAgIC5kcm9wZG93bi1tZW51IHsKICAgICAgLmRyb3Bkb3duLW1lbnUtcmlnaHQoKTsKICAgIH0KICAgIC8vIE5lY2Vzc2FyeSBmb3Igb3ZlcnJpZGVzIG9mIHRoZSBkZWZhdWx0IHJpZ2h0IGFsaWduZWQgbWVudS4KICAgIC8vIFdpbGwgcmVtb3ZlIGNvbWUgdjQgaW4gYWxsIGxpa2VsaWhvb2QuCiAgICAuZHJvcGRvd24tbWVudS1sZWZ0IHsKICAgICAgLmRyb3Bkb3duLW1lbnUtbGVmdCgpOwogICAgfQogIH0KfQoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/forms.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gRm9ybXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBOb3JtYWxpemUgbm9uLWNvbnRyb2xzCi8vCi8vIFJlc3R5bGUgYW5kIGJhc2VsaW5lIG5vbi1jb250cm9sIGZvcm0gZWxlbWVudHMuCgpmaWVsZHNldCB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDA7CiAgYm9yZGVyOiAwOwogIC8vIENocm9tZSBhbmQgRmlyZWZveCBzZXQgYSBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgIG9uIGZpZWxkc2V0cywKICAvLyBzbyB3ZSByZXNldCB0aGF0IHRvIGVuc3VyZSBpdCBiZWhhdmVzIG1vcmUgbGlrZSBhIHN0YW5kYXJkIGJsb2NrIGVsZW1lbnQuCiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTIzNTkuCiAgbWluLXdpZHRoOiAwOwp9CgpsZWdlbmQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGZvbnQtc2l6ZTogKEBmb250LXNpemUtYmFzZSAqIDEuNSk7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgY29sb3I6IEBsZWdlbmQtY29sb3I7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAbGVnZW5kLWJvcmRlci1jb2xvcjsKfQoKbGFiZWwgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXgtd2lkdGg6IDEwMCU7IC8vIEZvcmNlIElFOCB0byB3cmFwIGxvbmcgY29udGVudCAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTMxNDEpCiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoKLy8gTm9ybWFsaXplIGZvcm0gY29udHJvbHMKLy8KLy8gV2hpbGUgbW9zdCBvZiBvdXIgZm9ybSBzdHlsZXMgcmVxdWlyZSBleHRyYSBjbGFzc2VzLCBzb21lIGJhc2ljIG5vcm1hbGl6YXRpb24KLy8gaXMgcmVxdWlyZWQgdG8gZW5zdXJlIG9wdGltdW0gZGlzcGxheSB3aXRoIG9yIHdpdGhvdXQgdGhvc2UgY2xhc3NlcyB0byBiZXR0ZXIKLy8gYWRkcmVzcyBicm93c2VyIGluY29uc2lzdGVuY2llcy4KCi8vIE92ZXJyaWRlIGNvbnRlbnQtYm94IGluIE5vcm1hbGl6ZSAoKiBpc24ndCBzcGVjaWZpYyBlbm91Z2gpCmlucHV0W3R5cGU9InNlYXJjaCJdIHsKICAuYm94LXNpemluZyhib3JkZXItYm94KTsKfQoKLy8gUG9zaXRpb24gcmFkaW9zIGFuZCBjaGVja2JveGVzIGJldHRlcgppbnB1dFt0eXBlPSJyYWRpbyJdLAppbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBtYXJnaW46IDRweCAwIDA7CiAgbWFyZ2luLXRvcDogMXB4IFw5OyAvLyBJRTgtOQogIGxpbmUtaGVpZ2h0OiBub3JtYWw7Cn0KCi8vIFNldCB0aGUgaGVpZ2h0IG9mIGZpbGUgY29udHJvbHMgdG8gbWF0Y2ggdGV4dCBpbnB1dHMKaW5wdXRbdHlwZT0iZmlsZSJdIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLy8gTWFrZSByYW5nZSBpbnB1dHMgYmVoYXZlIGxpa2UgdGV4dHVhbCBmb3JtIGNvbnRyb2xzCmlucHV0W3R5cGU9InJhbmdlIl0gewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwp9CgovLyBNYWtlIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50cyBoZWlnaHQgbm90IGZpeGVkCnNlbGVjdFttdWx0aXBsZV0sCnNlbGVjdFtzaXplXSB7CiAgaGVpZ2h0OiBhdXRvOwp9CgovLyBGb2N1cyBmb3IgZmlsZSwgcmFkaW8sIGFuZCBjaGVja2JveAppbnB1dFt0eXBlPSJmaWxlIl06Zm9jdXMsCmlucHV0W3R5cGU9InJhZGlvIl06Zm9jdXMsCmlucHV0W3R5cGU9ImNoZWNrYm94Il06Zm9jdXMgewogIC50YWItZm9jdXMoKTsKfQoKLy8gQWRqdXN0IG91dHB1dCBlbGVtZW50Cm91dHB1dCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZy10b3A6IChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSk7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLWJhc2U7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogIGNvbG9yOiBAaW5wdXQtY29sb3I7Cn0KCgovLyBDb21tb24gZm9ybSBjb250cm9scwovLwovLyBTaGFyZWQgc2l6ZSBhbmQgdHlwZSByZXNldHMgZm9yIGZvcm0gY29udHJvbHMuIEFwcGx5IGAuZm9ybS1jb250cm9sYCB0byBhbnkKLy8gb2YgdGhlIGZvbGxvd2luZyBmb3JtIGNvbnRyb2xzOgovLwovLyBzZWxlY3QKLy8gdGV4dGFyZWEKLy8gaW5wdXRbdHlwZT0idGV4dCJdCi8vIGlucHV0W3R5cGU9InBhc3N3b3JkIl0KLy8gaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXQovLyBpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdCi8vIGlucHV0W3R5cGU9ImRhdGUiXQovLyBpbnB1dFt0eXBlPSJtb250aCJdCi8vIGlucHV0W3R5cGU9InRpbWUiXQovLyBpbnB1dFt0eXBlPSJ3ZWVrIl0KLy8gaW5wdXRbdHlwZT0ibnVtYmVyIl0KLy8gaW5wdXRbdHlwZT0iZW1haWwiXQovLyBpbnB1dFt0eXBlPSJ1cmwiXQovLyBpbnB1dFt0eXBlPSJzZWFyY2giXQovLyBpbnB1dFt0eXBlPSJ0ZWwiXQovLyBpbnB1dFt0eXBlPSJjb2xvciJdCgouZm9ybS1jb250cm9sIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IEBpbnB1dC1oZWlnaHQtYmFzZTsgLy8gTWFrZSBpbnB1dHMgYXQgbGVhc3QgdGhlIGhlaWdodCBvZiB0aGVpciBidXR0b24gY291bnRlcnBhcnQgKGJhc2UgbGluZS1oZWlnaHQgKyBwYWRkaW5nICsgYm9yZGVyKQogIHBhZGRpbmc6IEBwYWRkaW5nLWJhc2UtdmVydGljYWwgQHBhZGRpbmctYmFzZS1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1iYXNlOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICBjb2xvcjogQGlucHV0LWNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBpbnB1dC1iZzsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyAvLyBSZXNldCB1bnVzdWFsIEZpcmVmb3gtb24tQW5kcm9pZCBkZWZhdWx0IHN0eWxlOyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9pc3N1ZXMvMjE0CiAgYm9yZGVyOiAxcHggc29saWQgQGlucHV0LWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAaW5wdXQtYm9yZGVyLXJhZGl1czsKICAuYm94LXNoYWRvdyhpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSk7CiAgLnRyYW5zaXRpb24ofiJib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cywgYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzIik7CgogIC8vIEN1c3RvbWl6ZSB0aGUgYDpmb2N1c2Agc3RhdGUgdG8gaW1pdGF0ZSBuYXRpdmUgV2ViS2l0IHN0eWxlcy4KICAuZm9ybS1jb250cm9sLWZvY3VzKCk7CgogIC8vIFBsYWNlaG9sZGVyCiAgLnBsYWNlaG9sZGVyKCk7CgogIC8vIERpc2FibGVkIGFuZCByZWFkLW9ubHkgaW5wdXRzCiAgLy8KICAvLyBIVE1MNSBzYXlzIHRoYXQgY29udHJvbHMgdW5kZXIgYSBmaWVsZHNldCA+IGxlZ2VuZDpmaXJzdC1jaGlsZCB3b24ndCBiZQogIC8vIGRpc2FibGVkIGlmIHRoZSBmaWVsZHNldCBpcyBkaXNhYmxlZC4gRHVlIHRvIGltcGxlbWVudGF0aW9uIGRpZmZpY3VsdHksIHdlCiAgLy8gZG9uJ3QgaG9ub3IgdGhhdCBlZGdlIGNhc2U7IHdlIHN0eWxlIHRoZW0gYXMgZGlzYWJsZWQgYW55d2F5LgogICZbZGlzYWJsZWRdLAogICZbcmVhZG9ubHldLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaW5wdXQtYmctZGlzYWJsZWQ7CiAgICBvcGFjaXR5OiAxOyAvLyBpT1MgZml4IGZvciB1bnJlYWRhYmxlIGRpc2FibGVkIGNvbnRlbnQKICB9CgogIC8vIFJlc2V0IGhlaWdodCBmb3IgYHRleHRhcmVhYHMKICB0ZXh0YXJlYSYgewogICAgaGVpZ2h0OiBhdXRvOwogIH0KfQoKCi8vIFNlYXJjaCBpbnB1dHMgaW4gaU9TCi8vCi8vIFRoaXMgb3ZlcnJpZGVzIHRoZSBleHRyYSByb3VuZGVkIGNvcm5lcnMgb24gc2VhcmNoIGlucHV0cyBpbiBpT1Mgc28gdGhhdCBvdXIKLy8gYC5mb3JtLWNvbnRyb2xgIGNsYXNzIGNhbiBwcm9wZXJseSBzdHlsZSB0aGVtLiBOb3RlIHRoYXQgdGhpcyBjYW5ub3Qgc2ltcGx5Ci8vIGJlIGFkZGVkIHRvIGAuZm9ybS1jb250cm9sYCBhcyBpdCdzIG5vdCBzcGVjaWZpYyBlbm91Z2guIEZvciBkZXRhaWxzLCBzZWUKLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTU4Ni4KCmlucHV0W3R5cGU9InNlYXJjaCJdIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCgovLyBTcGVjaWFsIHN0eWxlcyBmb3IgaU9TIHRlbXBvcmFsIGlucHV0cwovLwovLyBJbiBNb2JpbGUgU2FmYXJpLCBzZXR0aW5nIGBkaXNwbGF5OiBibG9ja2Agb24gdGVtcG9yYWwgaW5wdXRzIGNhdXNlcyB0aGUKLy8gdGV4dCB3aXRoaW4gdGhlIGlucHV0IHRvIGJlY29tZSB2ZXJ0aWNhbGx5IG1pc2FsaWduZWQuCi8vIEFzIGEgd29ya2Fyb3VuZCwgd2Ugc2V0IGEgcGl4ZWwgbGluZS1oZWlnaHQgdGhhdCBtYXRjaGVzIHRoZQovLyBnaXZlbiBoZWlnaHQgb2YgdGhlIGlucHV0LiBTaW5jZSB0aGlzIGZ1Y2tzIHVwIGV2ZXJ5dGhpbmcgZWxzZSwgd2UgaGF2ZSB0bwovLyBhcHByb3ByaWF0ZWx5IHJlc2V0IGl0IGZvciBJbnRlcm5ldCBFeHBsb3JlciBhbmQgdGhlIHNpemUgdmFyaWF0aW9ucy4KCmlucHV0W3R5cGU9ImRhdGUiXSwKaW5wdXRbdHlwZT0idGltZSJdLAppbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLAppbnB1dFt0eXBlPSJtb250aCJdIHsKICBsaW5lLWhlaWdodDogQGlucHV0LWhlaWdodC1iYXNlOwogIC8vIElFOCsgbWlzYWxpZ25zIHRoZSB0ZXh0IHdpdGhpbiBkYXRlIGlucHV0cywgc28gd2UgcmVzZXQKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2UgfiJcMCI7CgogICYuaW5wdXQtc20gewogICAgbGluZS1oZWlnaHQ6IEBpbnB1dC1oZWlnaHQtc21hbGw7CiAgfQogICYuaW5wdXQtbGcgewogICAgbGluZS1oZWlnaHQ6IEBpbnB1dC1oZWlnaHQtbGFyZ2U7CiAgfQp9CgoKLy8gRm9ybSBncm91cHMKLy8KLy8gRGVzaWduZWQgdG8gaGVscCB3aXRoIHRoZSBvcmdhbml6YXRpb24gYW5kIHNwYWNpbmcgb2YgdmVydGljYWwgZm9ybXMuIEZvcgovLyBob3Jpem9udGFsIGZvcm1zLCB1c2UgdGhlIHByZWRlZmluZWQgZ3JpZCBjbGFzc2VzLgoKLmZvcm0tZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KCgovLyBDaGVja2JveGVzIGFuZCByYWRpb3MKLy8KLy8gSW5kZW50IHRoZSBsYWJlbHMgdG8gcG9zaXRpb24gcmFkaW9zL2NoZWNrYm94ZXMgYXMgaGFuZ2luZyBjb250cm9scy4KCi5yYWRpbywKLmNoZWNrYm94IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgbWluLWhlaWdodDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOyAvLyBjbGVhciB0aGUgZmxvYXRpbmcgaW5wdXQgaWYgdGhlcmUgaXMgbm8gbGFiZWwgdGV4dAogIG1hcmdpbi10b3A6IDEwcHg7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKCiAgbGFiZWwgewogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgfQp9Ci5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdLAoucmFkaW8taW5saW5lIGlucHV0W3R5cGU9InJhZGlvIl0sCi5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdLAouY2hlY2tib3gtaW5saW5lIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtYXJnaW4tbGVmdDogLTIwcHg7CiAgbWFyZ2luLXRvcDogNHB4IFw5Owp9CgoucmFkaW8gKyAucmFkaW8sCi5jaGVja2JveCArIC5jaGVja2JveCB7CiAgbWFyZ2luLXRvcDogLTVweDsgLy8gTW92ZSB1cCBzaWJsaW5nIHJhZGlvcyBvciBjaGVja2JveGVzIGZvciB0aWdodGVyIHNwYWNpbmcKfQoKLy8gUmFkaW9zIGFuZCBjaGVja2JveGVzIG9uIHNhbWUgbGluZQoucmFkaW8taW5saW5lLAouY2hlY2tib3gtaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDA7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGN1cnNvcjogcG9pbnRlcjsKfQoucmFkaW8taW5saW5lICsgLnJhZGlvLWlubGluZSwKLmNoZWNrYm94LWlubGluZSArIC5jaGVja2JveC1pbmxpbmUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7IC8vIHNwYWNlIG91dCBjb25zZWN1dGl2ZSBpbmxpbmUgY29udHJvbHMKfQoKLy8gQXBwbHkgc2FtZSBkaXNhYmxlZCBjdXJzb3IgdHdlYWsgYXMgZm9yIGlucHV0cwovLyBTb21lIHNwZWNpYWwgY2FyZSBpcyBuZWVkZWQgYmVjYXVzZSA8bGFiZWw+cyBkb24ndCBpbmhlcml0IHRoZWlyIHBhcmVudCdzIGBjdXJzb3JgLgovLwovLyBOb3RlOiBOZWl0aGVyIHJhZGlvcyBub3IgY2hlY2tib3hlcyBjYW4gYmUgcmVhZG9ubHkuCmlucHV0W3R5cGU9InJhZGlvIl0sCmlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICZbZGlzYWJsZWRdLAogICYuZGlzYWJsZWQsCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICB9Cn0KLy8gVGhlc2UgY2xhc3NlcyBhcmUgdXNlZCBkaXJlY3RseSBvbiA8bGFiZWw+cwoucmFkaW8taW5saW5lLAouY2hlY2tib3gtaW5saW5lIHsKICAmLmRpc2FibGVkLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgfQp9Ci8vIFRoZXNlIGNsYXNzZXMgYXJlIHVzZWQgb24gZWxlbWVudHMgd2l0aCA8bGFiZWw+IGRlc2NlbmRhbnRzCi5yYWRpbywKLmNoZWNrYm94IHsKICAmLmRpc2FibGVkLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgIGxhYmVsIHsKICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIH0KICB9Cn0KCgovLyBTdGF0aWMgZm9ybSBjb250cm9sIHRleHQKLy8KLy8gQXBwbHkgY2xhc3MgdG8gYSBgcGAgZWxlbWVudCB0byBtYWtlIGFueSBzdHJpbmcgb2YgdGV4dCBhbGlnbiB3aXRoIGxhYmVscyBpbgovLyBhIGhvcml6b250YWwgZm9ybSBsYXlvdXQuCgouZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgLy8gU2l6ZSBpdCBhcHByb3ByaWF0ZWx5IG5leHQgdG8gcmVhbCBmb3JtIGNvbnRyb2xzCiAgcGFkZGluZy10b3A6IChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSk7CiAgcGFkZGluZy1ib3R0b206IChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSk7CiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2luIGZyb20gYHBgCiAgbWFyZ2luLWJvdHRvbTogMDsKCiAgJi5pbnB1dC1sZywKICAmLmlucHV0LXNtIHsKICAgIHBhZGRpbmctbGVmdDogMDsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgfQp9CgoKLy8gRm9ybSBjb250cm9sIHNpemluZwovLwovLyBCdWlsZCBvbiBgLmZvcm0tY29udHJvbGAgd2l0aCBtb2RpZmllciBjbGFzc2VzIHRvIGRlY3JlYXNlIG9yIGluY3JlYXNlIHRoZQovLyBoZWlnaHQgYW5kIGZvbnQtc2l6ZSBvZiBmb3JtIGNvbnRyb2xzLgoKLmlucHV0LXNtIHsKICAuaW5wdXQtc2l6ZShAaW5wdXQtaGVpZ2h0LXNtYWxsOyBAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGxpbmUtaGVpZ2h0LXNtYWxsOyBAYm9yZGVyLXJhZGl1cy1zbWFsbCk7Cn0KCi5pbnB1dC1sZyB7CiAgLmlucHV0LXNpemUoQGlucHV0LWhlaWdodC1sYXJnZTsgQHBhZGRpbmctbGFyZ2UtdmVydGljYWw7IEBwYWRkaW5nLWxhcmdlLWhvcml6b250YWw7IEBmb250LXNpemUtbGFyZ2U7IEBsaW5lLWhlaWdodC1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9CgoKLy8gRm9ybSBjb250cm9sIGZlZWRiYWNrIHN0YXRlcwovLwovLyBBcHBseSBjb250ZXh0dWFsIGFuZCBzZW1hbnRpYyBzdGF0ZXMgdG8gaW5kaXZpZHVhbCBmb3JtIGNvbnRyb2xzLgoKLmhhcy1mZWVkYmFjayB7CiAgLy8gRW5hYmxlIGFic29sdXRlIHBvc2l0aW9uaW5nCiAgcG9zaXRpb246IHJlbGF0aXZlOwoKICAvLyBFbnN1cmUgaWNvbnMgZG9uJ3Qgb3ZlcmxhcCB0ZXh0CiAgLmZvcm0tY29udHJvbCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAoQGlucHV0LWhlaWdodC1iYXNlICogMS4yNSk7CiAgfQp9Ci8vIEZlZWRiYWNrIGljb24gKHJlcXVpcmVzIC5nbHlwaGljb24gY2xhc3NlcykKLmZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogKEBsaW5lLWhlaWdodC1jb21wdXRlZCArIDUpOyAvLyBIZWlnaHQgb2YgdGhlIGBsYWJlbGAgYW5kIGl0cyBtYXJnaW4KICByaWdodDogMDsKICB6LWluZGV4OiAyOyAvLyBFbnN1cmUgaWNvbiBpcyBhYm92ZSBpbnB1dCBncm91cHMKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogQGlucHV0LWhlaWdodC1iYXNlOwogIGhlaWdodDogQGlucHV0LWhlaWdodC1iYXNlOwogIGxpbmUtaGVpZ2h0OiBAaW5wdXQtaGVpZ2h0LWJhc2U7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5pbnB1dC1sZyArIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIHdpZHRoOiBAaW5wdXQtaGVpZ2h0LWxhcmdlOwogIGhlaWdodDogQGlucHV0LWhlaWdodC1sYXJnZTsKICBsaW5lLWhlaWdodDogQGlucHV0LWhlaWdodC1sYXJnZTsKfQouaW5wdXQtc20gKyAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICB3aWR0aDogQGlucHV0LWhlaWdodC1zbWFsbDsKICBoZWlnaHQ6IEBpbnB1dC1oZWlnaHQtc21hbGw7CiAgbGluZS1oZWlnaHQ6IEBpbnB1dC1oZWlnaHQtc21hbGw7Cn0KCi8vIEZlZWRiYWNrIHN0YXRlcwouaGFzLXN1Y2Nlc3MgewogIC5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAc3RhdGUtc3VjY2Vzcy10ZXh0OyBAc3RhdGUtc3VjY2Vzcy10ZXh0OyBAc3RhdGUtc3VjY2Vzcy1iZyk7Cn0KLmhhcy13YXJuaW5nIHsKICAuZm9ybS1jb250cm9sLXZhbGlkYXRpb24oQHN0YXRlLXdhcm5pbmctdGV4dDsgQHN0YXRlLXdhcm5pbmctdGV4dDsgQHN0YXRlLXdhcm5pbmctYmcpOwp9Ci5oYXMtZXJyb3IgewogIC5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAc3RhdGUtZGFuZ2VyLXRleHQ7IEBzdGF0ZS1kYW5nZXItdGV4dDsgQHN0YXRlLWRhbmdlci1iZyk7Cn0KCgovLyBSZXBvc2l0aW9uIGZlZWRiYWNrIGljb24gaWYgbGFiZWwgaXMgaGlkZGVuIHdpdGggInNjcmVlbnJlYWRlciBvbmx5IiBzdGF0ZQouaGFzLWZlZWRiYWNrIGxhYmVsLnNyLW9ubHkgfiAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICB0b3A6IDA7Cn0KCgovLyBIZWxwIHRleHQKLy8KLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgeW91IHdpc2ggdG8gY3JlYXRlIGxpZ2h0IHRleHQgZm9yIHBsYWNlbWVudCBpbW1lZGlhdGVseQovLyBiZWxvdyBhIGZvcm0gY29udHJvbC4gVXNlIGZvciBnZW5lcmFsIGhlbHAsIGZvcm1hdHRpbmcsIG9yIGluc3RydWN0aW9uYWwgdGV4dC4KCi5oZWxwLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jazsgLy8gYWNjb3VudCBmb3IgYW55IGVsZW1lbnQgdXNpbmcgaGVscC1ibG9jawogIG1hcmdpbi10b3A6IDVweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIGNvbG9yOiBsaWdodGVuKEB0ZXh0LWNvbG9yLCAyNSUpOyAvLyBsaWdodGVuIHRoZSB0ZXh0IHNvbWUgZm9yIGNvbnRyYXN0Cn0KCgoKLy8gSW5saW5lIGZvcm1zCi8vCi8vIE1ha2UgZm9ybXMgYXBwZWFyIGlubGluZSgtYmxvY2spIGJ5IGFkZGluZyB0aGUgYC5mb3JtLWlubGluZWAgY2xhc3MuIElubGluZQovLyBmb3JtcyBiZWdpbiBzdGFja2VkIG9uIGV4dHJhIHNtYWxsIChtb2JpbGUpIGRldmljZXMgYW5kIHRoZW4gZ28gaW5saW5lIHdoZW4KLy8gdmlld3BvcnRzIHJlYWNoIDw3NjhweC4KLy8KLy8gUmVxdWlyZXMgd3JhcHBpbmcgaW5wdXRzIGFuZCBsYWJlbHMgd2l0aCBgLmZvcm0tZ3JvdXBgIGZvciBwcm9wZXIgZGlzcGxheSBvZgovLyBkZWZhdWx0IEhUTUwgZm9ybSBjb250cm9scyBhbmQgb3VyIGN1c3RvbSBmb3JtIGNvbnRyb2xzIChlLmcuLCBpbnB1dCBncm91cHMpLgovLwovLyBIZWFkcyB1cCEgVGhpcyBpcyBtaXhpbi1lZCBpbnRvIGAubmF2YmFyLWZvcm1gIGluIG5hdmJhcnMubGVzcy4KCi5mb3JtLWlubGluZSB7CgogIC8vIEtpY2sgaW4gdGhlIGlubGluZQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgLy8gSW5saW5lLWJsb2NrIGFsbCB0aGUgdGhpbmdzIGZvciAiaW5saW5lIgogICAgLmZvcm0tZ3JvdXAgewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB9CgogICAgLy8gSW4gbmF2YmFyLWZvcm0sIGFsbG93IGZvbGtzIHRvICpub3QqIHVzZSBgLmZvcm0tZ3JvdXBgCiAgICAuZm9ybS1jb250cm9sIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB3aWR0aDogYXV0bzsgLy8gUHJldmVudCBsYWJlbHMgZnJvbSBzdGFja2luZyBhYm92ZSBpbnB1dHMgaW4gYC5mb3JtLWdyb3VwYAogICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgfQoKICAgIC5pbnB1dC1ncm91cCB7CiAgICAgIGRpc3BsYXk6IGlubGluZS10YWJsZTsKICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICAgIC5pbnB1dC1ncm91cC1hZGRvbiwKICAgICAgLmlucHV0LWdyb3VwLWJ0biwKICAgICAgLmZvcm0tY29udHJvbCB7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgIH0KICAgIH0KCiAgICAvLyBJbnB1dCBncm91cHMgbmVlZCB0aGF0IDEwMCUgd2lkdGggdGhvdWdoCiAgICAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgLmNvbnRyb2wtbGFiZWwgewogICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgfQoKICAgIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbiBvbiByYWRpb3MvY2hlY2tib3hlcyB0aGF0IHdlcmUgdXNlZCBmb3Igc3RhY2tpbmcsIGFuZAogICAgLy8gdGhlbiB1bmRvIHRoZSBmbG9hdGluZyBvZiByYWRpb3MgYW5kIGNoZWNrYm94ZXMgdG8gbWF0Y2ggKHdoaWNoIGFsc28gYXZvaWRzCiAgICAvLyBhIGJ1ZyBpbiBXZWJLaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTk2OSkuCiAgICAucmFkaW8sCiAgICAuY2hlY2tib3ggewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgICBsYWJlbCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAwOwogICAgICB9CiAgICB9CiAgICAucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKICAgIC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBtYXJnaW4tbGVmdDogMDsKICAgIH0KCiAgICAvLyBWYWxpZGF0aW9uIHN0YXRlcwogICAgLy8KICAgIC8vIFJlcG9zaXRpb24gdGhlIGljb24gYmVjYXVzZSBpdCdzIG5vdyB3aXRoaW4gYSBncmlkIGNvbHVtbiBhbmQgY29sdW1ucyBoYXZlCiAgICAvLyBgcG9zaXRpb246IHJlbGF0aXZlO2Agb24gdGhlbS4gQWxzbyBhY2NvdW50cyBmb3IgdGhlIGdyaWQgZ3V0dGVyIHBhZGRpbmcuCiAgICAuaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogICAgICB0b3A6IDA7CiAgICB9CiAgfQp9CgoKLy8gSG9yaXpvbnRhbCBmb3JtcwovLwovLyBIb3Jpem9udGFsIGZvcm1zIGFyZSBidWlsdCBvbiBncmlkIGNsYXNzZXMgYW5kIGFsbG93IHlvdSB0byBjcmVhdGUgZm9ybXMgd2l0aAovLyBsYWJlbHMgb24gdGhlIGxlZnQgYW5kIGlucHV0cyBvbiB0aGUgcmlnaHQuCgouZm9ybS1ob3Jpem9udGFsIHsKCiAgLy8gQ29uc2lzdGVudCB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgcmFkaW9zIGFuZCBjaGVja2JveGVzCiAgLy8KICAvLyBMYWJlbHMgYWxzbyBnZXQgc29tZSByZXNldCBzdHlsZXMsIGJ1dCB0aGF0IGlzIHNjb3BlZCB0byBhIG1lZGlhIHF1ZXJ5IGJlbG93LgogIC5yYWRpbywKICAuY2hlY2tib3gsCiAgLnJhZGlvLWlubGluZSwKICAuY2hlY2tib3gtaW5saW5lIHsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgcGFkZGluZy10b3A6IChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSk7IC8vIERlZmF1bHQgcGFkZGluZyBwbHVzIGEgYm9yZGVyCiAgfQogIC8vIEFjY291bnQgZm9yIHBhZGRpbmcgd2UncmUgYWRkaW5nIHRvIGVuc3VyZSB0aGUgYWxpZ25tZW50IGFuZCBvZiBoZWxwIHRleHQKICAvLyBhbmQgb3RoZXIgY29udGVudCBiZWxvdyBpdGVtcwogIC5yYWRpbywKICAuY2hlY2tib3ggewogICAgbWluLWhlaWdodDogKEBsaW5lLWhlaWdodC1jb21wdXRlZCArIChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSkpOwogIH0KCiAgLy8gTWFrZSBmb3JtIGdyb3VwcyBiZWhhdmUgbGlrZSByb3dzCiAgLmZvcm0tZ3JvdXAgewogICAgLm1ha2Utcm93KCk7CiAgfQoKICAvLyBSZXNldCBzcGFjaW5nIGFuZCByaWdodCBhbGlnbiBsYWJlbHMsIGJ1dCBzY29wZSB0byBtZWRpYSBxdWVyaWVzIHNvIHRoYXQKICAvLyBsYWJlbHMgb24gbmFycm93IHZpZXdwb3J0cyBzdGFjayB0aGUgc2FtZSBhcyBhIGRlZmF1bHQgZm9ybSBleGFtcGxlLgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgLmNvbnRyb2wtbGFiZWwgewogICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgcGFkZGluZy10b3A6IChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSk7IC8vIERlZmF1bHQgcGFkZGluZyBwbHVzIGEgYm9yZGVyCiAgICB9CiAgfQoKICAvLyBWYWxpZGF0aW9uIHN0YXRlcwogIC8vCiAgLy8gUmVwb3NpdGlvbiB0aGUgaWNvbiBiZWNhdXNlIGl0J3Mgbm93IHdpdGhpbiBhIGdyaWQgY29sdW1uIGFuZCBjb2x1bW5zIGhhdmUKICAvLyBgcG9zaXRpb246IHJlbGF0aXZlO2Agb24gdGhlbS4gQWxzbyBhY2NvdW50cyBmb3IgdGhlIGdyaWQgZ3V0dGVyIHBhZGRpbmcuCiAgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHsKICAgIHRvcDogMDsKICAgIHJpZ2h0OiAoQGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7CiAgfQoKICAvLyBGb3JtIGdyb3VwIHNpemVzCiAgLy8KICAvLyBRdWljayB1dGlsaXR5IGNsYXNzIGZvciBhcHBseWluZyBgLmlucHV0LWxnYCBhbmQgYC5pbnB1dC1zbWAgc3R5bGVzIHRvIHRoZQogIC8vIGlucHV0cyBhbmQgbGFiZWxzIHdpdGhpbiBhIGAuZm9ybS1ncm91cGAuCiAgLmZvcm0tZ3JvdXAtbGcgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICAgIC5jb250cm9sLWxhYmVsIHsKICAgICAgICBwYWRkaW5nLXRvcDogKChAcGFkZGluZy1sYXJnZS12ZXJ0aWNhbCAqIEBsaW5lLWhlaWdodC1sYXJnZSkgKyAxKTsKICAgICAgfQogICAgfQogICAgLmZvcm0tY29udHJvbCB7CiAgICAgICY6ZXh0ZW5kKC5pbnB1dC1sZyk7CiAgICB9CiAgfQogIC5mb3JtLWdyb3VwLXNtIHsKICAgIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgICAuY29udHJvbC1sYWJlbCB7CiAgICAgICAgcGFkZGluZy10b3A6IChAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbCArIDEpOwogICAgICB9CiAgICB9CiAgICAuZm9ybS1jb250cm9sIHsKICAgICAgJjpleHRlbmQoLmlucHV0LXNtKTsKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/glyphicons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gR2x5cGhpY29ucyBmb3IgQm9vdHN0cmFwCi8vCi8vIFNpbmNlIGljb25zIGFyZSBmb250cywgdGhleSBjYW4gYmUgcGxhY2VkIGFueXdoZXJlIHRleHQgaXMgcGxhY2VkIGFuZCBhcmUKLy8gdGh1cyBhdXRvbWF0aWNhbGx5IHNpemVkIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBjaGlsZC4gVG8gdXNlLCBjcmVhdGUgYW4KLy8gaW5saW5lIGVsZW1lbnQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2xhc3NlcywgbGlrZSBzbzoKLy8KLy8gPGEgaHJlZj0iIyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc3RhciI+PC9zcGFuPiBTdGFyPC9hPgoKLy8gSW1wb3J0IHRoZSBmb250cwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJzsKICBzcmM6IHVybCgnQHtpY29uLWZvbnQtcGF0aH1Ae2ljb24tZm9udC1uYW1lfS5lb3QnKTsKICBzcmM6IHVybCgnQHtpY29uLWZvbnQtcGF0aH1Ae2ljb24tZm9udC1uYW1lfS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLAogICAgICAgdXJsKCdAe2ljb24tZm9udC1wYXRofUB7aWNvbi1mb250LW5hbWV9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwKICAgICAgIHVybCgnQHtpY29uLWZvbnQtcGF0aH1Ae2ljb24tZm9udC1uYW1lfS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksCiAgICAgICB1cmwoJ0B7aWNvbi1mb250LXBhdGh9QHtpY29uLWZvbnQtbmFtZX0uc3ZnI0B7aWNvbi1mb250LXN2Zy1pZH0nKSBmb3JtYXQoJ3N2ZycpOwp9CgovLyBDYXRjaGFsbCBiYXNlY2xhc3MKLmdseXBoaWNvbiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogMXB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMTsKICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwp9CgovLyBJbmRpdmlkdWFsIGljb25zCi5nbHlwaGljb24tYXN0ZXJpc2sgICAgICAgICAgICAgICB7ICY6YmVmb3JlIHsgY29udGVudDogIlwyYSI7IH0gfQouZ2x5cGhpY29uLXBsdXMgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMmIiOyB9IH0KLmdseXBoaWNvbi1ldXJvICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDIwYWMiOyB9IH0KLmdseXBoaWNvbi1taW51cyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDIyMTIiOyB9IH0KLmdseXBoaWNvbi1jbG91ZCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI2MDEiOyB9IH0KLmdseXBoaWNvbi1lbnZlbG9wZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI3MDkiOyB9IH0KLmdseXBoaWNvbi1wZW5jaWwgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI3MGYiOyB9IH0KLmdseXBoaWNvbi1nbGFzcyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDEiOyB9IH0KLmdseXBoaWNvbi1tdXNpYyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDIiOyB9IH0KLmdseXBoaWNvbi1zZWFyY2ggICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDMiOyB9IH0KLmdseXBoaWNvbi1oZWFydCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDUiOyB9IH0KLmdseXBoaWNvbi1zdGFyICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDYiOyB9IH0KLmdseXBoaWNvbi1zdGFyLWVtcHR5ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDciOyB9IH0KLmdseXBoaWNvbi11c2VyICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDgiOyB9IH0KLmdseXBoaWNvbi1maWxtICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDkiOyB9IH0KLmdseXBoaWNvbi10aC1sYXJnZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTAiOyB9IH0KLmdseXBoaWNvbi10aCAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTEiOyB9IH0KLmdseXBoaWNvbi10aC1saXN0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTIiOyB9IH0KLmdseXBoaWNvbi1vayAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTMiOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTQiOyB9IH0KLmdseXBoaWNvbi16b29tLWluICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTUiOyB9IH0KLmdseXBoaWNvbi16b29tLW91dCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTYiOyB9IH0KLmdseXBoaWNvbi1vZmYgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTciOyB9IH0KLmdseXBoaWNvbi1zaWduYWwgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTgiOyB9IH0KLmdseXBoaWNvbi1jb2cgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTkiOyB9IH0KLmdseXBoaWNvbi10cmFzaCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjAiOyB9IH0KLmdseXBoaWNvbi1ob21lICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjEiOyB9IH0KLmdseXBoaWNvbi1maWxlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjIiOyB9IH0KLmdseXBoaWNvbi10aW1lICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjMiOyB9IH0KLmdseXBoaWNvbi1yb2FkICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjQiOyB9IH0KLmdseXBoaWNvbi1kb3dubG9hZC1hbHQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjUiOyB9IH0KLmdseXBoaWNvbi1kb3dubG9hZCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjYiOyB9IH0KLmdseXBoaWNvbi11cGxvYWQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjciOyB9IH0KLmdseXBoaWNvbi1pbmJveCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjgiOyB9IH0KLmdseXBoaWNvbi1wbGF5LWNpcmNsZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjkiOyB9IH0KLmdseXBoaWNvbi1yZXBlYXQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzAiOyB9IH0KLmdseXBoaWNvbi1yZWZyZXNoICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzEiOyB9IH0KLmdseXBoaWNvbi1saXN0LWFsdCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzIiOyB9IH0KLmdseXBoaWNvbi1sb2NrICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzMiOyB9IH0KLmdseXBoaWNvbi1mbGFnICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzQiOyB9IH0KLmdseXBoaWNvbi1oZWFkcGhvbmVzICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzUiOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtb2ZmICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzYiOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtZG93biAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzciOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtdXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzgiOyB9IH0KLmdseXBoaWNvbi1xcmNvZGUgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzkiOyB9IH0KLmdseXBoaWNvbi1iYXJjb2RlICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDAiOyB9IH0KLmdseXBoaWNvbi10YWcgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDEiOyB9IH0KLmdseXBoaWNvbi10YWdzICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDIiOyB9IH0KLmdseXBoaWNvbi1ib29rICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDMiOyB9IH0KLmdseXBoaWNvbi1ib29rbWFyayAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDQiOyB9IH0KLmdseXBoaWNvbi1wcmludCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDUiOyB9IH0KLmdseXBoaWNvbi1jYW1lcmEgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDYiOyB9IH0KLmdseXBoaWNvbi1mb250ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDciOyB9IH0KLmdseXBoaWNvbi1ib2xkICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDgiOyB9IH0KLmdseXBoaWNvbi1pdGFsaWMgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDkiOyB9IH0KLmdseXBoaWNvbi10ZXh0LWhlaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTAiOyB9IH0KLmdseXBoaWNvbi10ZXh0LXdpZHRoICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTEiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1sZWZ0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTIiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1jZW50ZXIgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTMiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1yaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTQiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1qdXN0aWZ5ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTUiOyB9IH0KLmdseXBoaWNvbi1saXN0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTYiOyB9IH0KLmdseXBoaWNvbi1pbmRlbnQtbGVmdCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTciOyB9IH0KLmdseXBoaWNvbi1pbmRlbnQtcmlnaHQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTgiOyB9IH0KLmdseXBoaWNvbi1mYWNldGltZS12aWRlbyAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTkiOyB9IH0KLmdseXBoaWNvbi1waWN0dXJlICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjAiOyB9IH0KLmdseXBoaWNvbi1tYXAtbWFya2VyICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjIiOyB9IH0KLmdseXBoaWNvbi1hZGp1c3QgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjMiOyB9IH0KLmdseXBoaWNvbi10aW50ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjQiOyB9IH0KLmdseXBoaWNvbi1lZGl0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjUiOyB9IH0KLmdseXBoaWNvbi1zaGFyZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjYiOyB9IH0KLmdseXBoaWNvbi1jaGVjayAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjciOyB9IH0KLmdseXBoaWNvbi1tb3ZlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjgiOyB9IH0KLmdseXBoaWNvbi1zdGVwLWJhY2t3YXJkICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjkiOyB9IH0KLmdseXBoaWNvbi1mYXN0LWJhY2t3YXJkICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzAiOyB9IH0KLmdseXBoaWNvbi1iYWNrd2FyZCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzEiOyB9IH0KLmdseXBoaWNvbi1wbGF5ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzIiOyB9IH0KLmdseXBoaWNvbi1wYXVzZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzMiOyB9IH0KLmdseXBoaWNvbi1zdG9wICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzQiOyB9IH0KLmdseXBoaWNvbi1mb3J3YXJkICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzUiOyB9IH0KLmdseXBoaWNvbi1mYXN0LWZvcndhcmQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzYiOyB9IH0KLmdseXBoaWNvbi1zdGVwLWZvcndhcmQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzciOyB9IH0KLmdseXBoaWNvbi1lamVjdCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzgiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzkiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODAiOyB9IH0KLmdseXBoaWNvbi1wbHVzLXNpZ24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODEiOyB9IH0KLmdseXBoaWNvbi1taW51cy1zaWduICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODIiOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUtc2lnbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODMiOyB9IH0KLmdseXBoaWNvbi1vay1zaWduICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODQiOyB9IH0KLmdseXBoaWNvbi1xdWVzdGlvbi1zaWduICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODUiOyB9IH0KLmdseXBoaWNvbi1pbmZvLXNpZ24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODYiOyB9IH0KLmdseXBoaWNvbi1zY3JlZW5zaG90ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODciOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUtY2lyY2xlICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODgiOyB9IH0KLmdseXBoaWNvbi1vay1jaXJjbGUgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODkiOyB9IH0KLmdseXBoaWNvbi1iYW4tY2lyY2xlICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTAiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1sZWZ0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTEiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1yaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTIiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy11cCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTMiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1kb3duICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTQiOyB9IH0KLmdseXBoaWNvbi1zaGFyZS1hbHQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTUiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtZnVsbCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTYiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtc21hbGwgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTciOyB9IH0KLmdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDEiOyB9IH0KLmdseXBoaWNvbi1naWZ0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDIiOyB9IH0KLmdseXBoaWNvbi1sZWFmICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDMiOyB9IH0KLmdseXBoaWNvbi1maXJlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDQiOyB9IH0KLmdseXBoaWNvbi1leWUtb3BlbiAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDUiOyB9IH0KLmdseXBoaWNvbi1leWUtY2xvc2UgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDYiOyB9IH0KLmdseXBoaWNvbi13YXJuaW5nLXNpZ24gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDciOyB9IH0KLmdseXBoaWNvbi1wbGFuZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDgiOyB9IH0KLmdseXBoaWNvbi1jYWxlbmRhciAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDkiOyB9IH0KLmdseXBoaWNvbi1yYW5kb20gICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTAiOyB9IH0KLmdseXBoaWNvbi1jb21tZW50ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTEiOyB9IH0KLmdseXBoaWNvbi1tYWduZXQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTIiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLXVwICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTMiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLWRvd24gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTQiOyB9IH0KLmdseXBoaWNvbi1yZXR3ZWV0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTUiOyB9IH0KLmdseXBoaWNvbi1zaG9wcGluZy1jYXJ0ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTYiOyB9IH0KLmdseXBoaWNvbi1mb2xkZXItY2xvc2UgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTciOyB9IH0KLmdseXBoaWNvbi1mb2xkZXItb3BlbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTgiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtdmVydGljYWwgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTkiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtaG9yaXpvbnRhbCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjAiOyB9IH0KLmdseXBoaWNvbi1oZGQgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjEiOyB9IH0KLmdseXBoaWNvbi1idWxsaG9ybiAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjIiOyB9IH0KLmdseXBoaWNvbi1iZWxsICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjMiOyB9IH0KLmdseXBoaWNvbi1jZXJ0aWZpY2F0ZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjQiOyB9IH0KLmdseXBoaWNvbi10aHVtYnMtdXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjUiOyB9IH0KLmdseXBoaWNvbi10aHVtYnMtZG93biAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjYiOyB9IH0KLmdseXBoaWNvbi1oYW5kLXJpZ2h0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjciOyB9IH0KLmdseXBoaWNvbi1oYW5kLWxlZnQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjgiOyB9IH0KLmdseXBoaWNvbi1oYW5kLXVwICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjkiOyB9IH0KLmdseXBoaWNvbi1oYW5kLWRvd24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzAiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctcmlnaHQgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzEiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctbGVmdCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzIiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctdXAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzMiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctZG93biAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzQiOyB9IH0KLmdseXBoaWNvbi1nbG9iZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzUiOyB9IH0KLmdseXBoaWNvbi13cmVuY2ggICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzYiOyB9IH0KLmdseXBoaWNvbi10YXNrcyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzciOyB9IH0KLmdseXBoaWNvbi1maWx0ZXIgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzgiOyB9IH0KLmdseXBoaWNvbi1icmllZmNhc2UgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzkiOyB9IH0KLmdseXBoaWNvbi1mdWxsc2NyZWVuICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDAiOyB9IH0KLmdseXBoaWNvbi1kYXNoYm9hcmQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDEiOyB9IH0KLmdseXBoaWNvbi1wYXBlcmNsaXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDIiOyB9IH0KLmdseXBoaWNvbi1oZWFydC1lbXB0eSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDMiOyB9IH0KLmdseXBoaWNvbi1saW5rICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDQiOyB9IH0KLmdseXBoaWNvbi1waG9uZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDUiOyB9IH0KLmdseXBoaWNvbi1wdXNocGluICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDYiOyB9IH0KLmdseXBoaWNvbi11c2QgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDgiOyB9IH0KLmdseXBoaWNvbi1nYnAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDkiOyB9IH0KLmdseXBoaWNvbi1zb3J0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTAiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0ICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTEiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0LWFsdCAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTIiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTMiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyLWFsdCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTQiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTUiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMtYWx0IHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTYiOyB9IH0KLmdseXBoaWNvbi11bmNoZWNrZWQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTciOyB9IH0KLmdseXBoaWNvbi1leHBhbmQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTgiOyB9IH0KLmdseXBoaWNvbi1jb2xsYXBzZS1kb3duICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTkiOyB9IH0KLmdseXBoaWNvbi1jb2xsYXBzZS11cCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjAiOyB9IH0KLmdseXBoaWNvbi1sb2ctaW4gICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjEiOyB9IH0KLmdseXBoaWNvbi1mbGFzaCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjIiOyB9IH0KLmdseXBoaWNvbi1sb2ctb3V0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjMiOyB9IH0KLmdseXBoaWNvbi1uZXctd2luZG93ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjQiOyB9IH0KLmdseXBoaWNvbi1yZWNvcmQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjUiOyB9IH0KLmdseXBoaWNvbi1zYXZlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjYiOyB9IH0KLmdseXBoaWNvbi1vcGVuICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjciOyB9IH0KLmdseXBoaWNvbi1zYXZlZCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjgiOyB9IH0KLmdseXBoaWNvbi1pbXBvcnQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjkiOyB9IH0KLmdseXBoaWNvbi1leHBvcnQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzAiOyB9IH0KLmdseXBoaWNvbi1zZW5kICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzEiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktZGlzayAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzIiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZWQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzMiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktcmVtb3ZlICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzQiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzUiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktb3BlbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzYiOyB9IH0KLmdseXBoaWNvbi1jcmVkaXQtY2FyZCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzciOyB9IH0KLmdseXBoaWNvbi10cmFuc2ZlciAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzgiOyB9IH0KLmdseXBoaWNvbi1jdXRsZXJ5ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzkiOyB9IH0KLmdseXBoaWNvbi1oZWFkZXIgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODAiOyB9IH0KLmdseXBoaWNvbi1jb21wcmVzc2VkICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODEiOyB9IH0KLmdseXBoaWNvbi1lYXJwaG9uZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODIiOyB9IH0KLmdseXBoaWNvbi1waG9uZS1hbHQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODMiOyB9IH0KLmdseXBoaWNvbi10b3dlciAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODQiOyB9IH0KLmdseXBoaWNvbi1zdGF0cyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODUiOyB9IH0KLmdseXBoaWNvbi1zZC12aWRlbyAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODYiOyB9IH0KLmdseXBoaWNvbi1oZC12aWRlbyAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODciOyB9IH0KLmdseXBoaWNvbi1zdWJ0aXRsZXMgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODgiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC1zdGVyZW8gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODkiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC1kb2xieSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTAiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC01LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTEiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC02LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTIiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC03LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTMiOyB9IH0KLmdseXBoaWNvbi1jb3B5cmlnaHQtbWFyayAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTQiOyB9IH0KLmdseXBoaWNvbi1yZWdpc3RyYXRpb24tbWFyayAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTUiOyB9IH0KLmdseXBoaWNvbi1jbG91ZC1kb3dubG9hZCAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTciOyB9IH0KLmdseXBoaWNvbi1jbG91ZC11cGxvYWQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTgiOyB9IH0KLmdseXBoaWNvbi10cmVlLWNvbmlmZXIgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTkiOyB9IH0KLmdseXBoaWNvbi10cmVlLWRlY2lkdW91cyAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUyMDAiOyB9IH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/grid.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gR3JpZCBzeXN0ZW0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBDb250YWluZXIgd2lkdGhzCi8vCi8vIFNldCB0aGUgY29udGFpbmVyIHdpZHRoLCBhbmQgb3ZlcnJpZGUgaXQgZm9yIGZpeGVkIG5hdmJhcnMgaW4gbWVkaWEgcXVlcmllcy4KCi5jb250YWluZXIgewogIC5jb250YWluZXItZml4ZWQoKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICB3aWR0aDogQGNvbnRhaW5lci1zbTsKICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSB7CiAgICB3aWR0aDogQGNvbnRhaW5lci1tZDsKICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICB3aWR0aDogQGNvbnRhaW5lci1sZzsKICB9Cn0KCgovLyBGbHVpZCBjb250YWluZXIKLy8KLy8gVXRpbGl6ZXMgdGhlIG1peGluIG1lYW50IGZvciBmaXhlZCB3aWR0aCBjb250YWluZXJzLCBidXQgd2l0aG91dCBhbnkgZGVmaW5lZAovLyB3aWR0aCBmb3IgZmx1aWQsIGZ1bGwgd2lkdGggbGF5b3V0cy4KCi5jb250YWluZXItZmx1aWQgewogIC5jb250YWluZXItZml4ZWQoKTsKfQoKCi8vIFJvdwovLwovLyBSb3dzIGNvbnRhaW4gYW5kIGNsZWFyIHRoZSBmbG9hdHMgb2YgeW91ciBjb2x1bW5zLgoKLnJvdyB7CiAgLm1ha2Utcm93KCk7Cn0KCgovLyBDb2x1bW5zCi8vCi8vIENvbW1vbiBzdHlsZXMgZm9yIHNtYWxsIGFuZCBsYXJnZSBncmlkIGNvbHVtbnMKCi5tYWtlLWdyaWQtY29sdW1ucygpOwoKCi8vIEV4dHJhIHNtYWxsIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIGV4dHJhIHNtYWxsIGRldmljZXMgbGlrZQovLyBzbWFydHBob25lcy4KCi5tYWtlLWdyaWQoeHMpOwoKCi8vIFNtYWxsIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIHRoZSBzbWFsbCBkZXZpY2UgcmFuZ2UsIGZyb20gcGhvbmVzCi8vIHRvIHRhYmxldHMuCgpAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAubWFrZS1ncmlkKHNtKTsKfQoKCi8vIE1lZGl1bSBncmlkCi8vCi8vIENvbHVtbnMsIG9mZnNldHMsIHB1c2hlcywgYW5kIHB1bGxzIGZvciB0aGUgZGVza3RvcCBkZXZpY2UgcmFuZ2UuCgpAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIHsKICAubWFrZS1ncmlkKG1kKTsKfQoKCi8vIExhcmdlIGdyaWQKLy8KLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIHRoZSBsYXJnZSBkZXNrdG9wIGRldmljZSByYW5nZS4KCkBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLW1pbikgewogIC5tYWtlLWdyaWQobGcpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/input-groups.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gSW5wdXQgZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBCYXNlIHN0eWxlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5pbnB1dC1ncm91cCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOyAvLyBGb3IgZHJvcGRvd25zCiAgZGlzcGxheTogdGFibGU7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgLy8gcHJldmVudCBpbnB1dCBncm91cHMgZnJvbSBpbmhlcml0aW5nIGJvcmRlciBzdHlsZXMgZnJvbSB0YWJsZSBjZWxscyB3aGVuIHBsYWNlZCB3aXRoaW4gYSB0YWJsZQoKICAvLyBVbmRvIHBhZGRpbmcgYW5kIGZsb2F0IG9mIGdyaWQgY2xhc3NlcwogICZbY2xhc3MqPSJjb2wtIl0gewogICAgZmxvYXQ6IG5vbmU7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogIH0KCiAgLmZvcm0tY29udHJvbCB7CiAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW5wdXQgaXMgYWx3YXlzIGFib3ZlIHRoZSAqYXBwZW5kZWQqIGFkZG9uIGJ1dHRvbiBmb3IKICAgIC8vIHByb3BlciBib3JkZXIgY29sb3JzLgogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjsKCiAgICAvLyBJRTkgZnViYXJzIHRoZSBwbGFjZWhvbGRlciBhdHRyaWJ1dGUgaW4gdGV4dCBpbnB1dHMgYW5kIHRoZSBhcnJvd3Mgb24KICAgIC8vIHNlbGVjdCBlbGVtZW50cyBpbiBpbnB1dCBncm91cHMuIFRvIGZpeCBpdCwgd2UgZmxvYXQgdGhlIGlucHV0LiBEZXRhaWxzOgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTU2MSNpc3N1ZWNvbW1lbnQtMjg5MzY4NTUKICAgIGZsb2F0OiBsZWZ0OwoKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KCi8vIFNpemluZyBvcHRpb25zCi8vCi8vIFJlbWl4IHRoZSBkZWZhdWx0IGZvcm0gY29udHJvbCBzaXppbmcgY2xhc3NlcyBpbnRvIG5ldyBvbmVzIGZvciBlYXNpZXIKLy8gbWFuaXB1bGF0aW9uLgoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgLmlucHV0LWxnKCk7Cn0KLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgLmlucHV0LXNtKCk7Cn0KCgovLyBEaXNwbGF5IGFzIHRhYmxlLWNlbGwKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1idG4sCi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsOwoKICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KLy8gQWRkb24gYW5kIGFkZG9uIHdyYXBwZXIgZm9yIGJ1dHRvbnMKLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtYnRuIHsKICB3aWR0aDogMSU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvLyBNYXRjaCB0aGUgaW5wdXRzCn0KCi8vIFRleHQgaW5wdXQgZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmlucHV0LWdyb3VwLWFkZG9uIHsKICBwYWRkaW5nOiBAcGFkZGluZy1iYXNlLXZlcnRpY2FsIEBwYWRkaW5nLWJhc2UtaG9yaXpvbnRhbDsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiBAaW5wdXQtY29sb3I7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IEBpbnB1dC1ncm91cC1hZGRvbi1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CgogIC8vIFNpemluZwogICYuaW5wdXQtc20gewogICAgcGFkZGluZzogQHBhZGRpbmctc21hbGwtdmVydGljYWwgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsKICAgIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1zbWFsbDsKICAgIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLXNtYWxsOwogIH0KICAmLmlucHV0LWxnIHsKICAgIHBhZGRpbmc6IEBwYWRkaW5nLWxhcmdlLXZlcnRpY2FsIEBwYWRkaW5nLWxhcmdlLWhvcml6b250YWw7CiAgICBmb250LXNpemU6IEBmb250LXNpemUtbGFyZ2U7CiAgICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKICB9CgogIC8vIE51a2UgZGVmYXVsdCBtYXJnaW5zIGZyb20gY2hlY2tib3hlcyBhbmQgcmFkaW9zIHRvIHZlcnRpY2FsbHkgY2VudGVyIHdpdGhpbi4KICBpbnB1dFt0eXBlPSJyYWRpbyJdLAogIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgbWFyZ2luLXRvcDogMDsKICB9Cn0KCi8vIFJlc2V0IHJvdW5kZWQgY29ybmVycwouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpmaXJzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0biwKLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZCA+IC5idG4tZ3JvdXAgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmRyb3Bkb3duLXRvZ2dsZSwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7CiAgLmJvcmRlci1yaWdodC1yYWRpdXMoMCk7Cn0KLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkIHsKICBib3JkZXItcmlnaHQ6IDA7Cn0KLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bGFzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5idG4tZ3JvdXAgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQgPiAuZHJvcGRvd24tdG9nZ2xlLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwKLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9Ci5pbnB1dC1ncm91cC1hZGRvbjpsYXN0LWNoaWxkIHsKICBib3JkZXItbGVmdDogMDsKfQoKLy8gQnV0dG9uIGlucHV0IGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5pbnB1dC1ncm91cC1idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAvLyBKYW5raWx5IHByZXZlbnQgaW5wdXQgYnV0dG9uIGdyb3VwcyBmcm9tIHdyYXBwaW5nIHdpdGggYHdoaXRlLXNwYWNlYCBhbmQKICAvLyBgZm9udC1zaXplYCBpbiBjb21iaW5hdGlvbiB3aXRoIGBpbmxpbmUtYmxvY2tgIG9uIGJ1dHRvbnMuCiAgZm9udC1zaXplOiAwOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CgogIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3Igc3BhY2luZywgcG9zaXRpb24gZm9yIGJyaW5naW5nIGhvdmVyZWQvZm9jdXNlZC9hY3RpdmVkCiAgLy8gZWxlbWVudCBhYm92ZSB0aGUgc2libGluZ3MuCiAgPiAuYnRuIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICsgLmJ0biB7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgfQogICAgLy8gQnJpbmcgdGhlICJhY3RpdmUiIGJ1dHRvbiB0byB0aGUgZnJvbnQKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzLAogICAgJjphY3RpdmUgewogICAgICB6LWluZGV4OiAyOwogICAgfQogIH0KCiAgLy8gTmVnYXRpdmUgbWFyZ2luIHRvIG9ubHkgaGF2ZSBhIDFweCBib3JkZXIgYmV0d2VlbiB0aGUgdHdvCiAgJjpmaXJzdC1jaGlsZCB7CiAgICA+IC5idG4sCiAgICA+IC5idG4tZ3JvdXAgewogICAgICBtYXJnaW4tcmlnaHQ6IC0xcHg7CiAgICB9CiAgfQogICY6bGFzdC1jaGlsZCB7CiAgICA+IC5idG4sCiAgICA+IC5idG4tZ3JvdXAgewogICAgICBtYXJnaW4tbGVmdDogLTFweDsKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/jumbotron.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gSnVtYm90cm9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLmp1bWJvdHJvbiB7CiAgcGFkZGluZzogQGp1bWJvdHJvbi1wYWRkaW5nOwogIG1hcmdpbi1ib3R0b206IEBqdW1ib3Ryb24tcGFkZGluZzsKICBjb2xvcjogQGp1bWJvdHJvbi1jb2xvcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAanVtYm90cm9uLWJnOwoKICBoMSwKICAuaDEgewogICAgY29sb3I6IEBqdW1ib3Ryb24taGVhZGluZy1jb2xvcjsKICB9CiAgcCB7CiAgICBtYXJnaW4tYm90dG9tOiAoQGp1bWJvdHJvbi1wYWRkaW5nIC8gMik7CiAgICBmb250LXNpemU6IEBqdW1ib3Ryb24tZm9udC1zaXplOwogICAgZm9udC13ZWlnaHQ6IDIwMDsKICB9CgogID4gaHIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogZGFya2VuKEBqdW1ib3Ryb24tYmcsIDEwJSk7CiAgfQoKICAuY29udGFpbmVyICYgewogICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtbGFyZ2U7IC8vIE9ubHkgcm91bmQgY29ybmVycyBhdCBoaWdoZXIgcmVzb2x1dGlvbnMgaWYgY29udGFpbmVkIGluIGEgY29udGFpbmVyCiAgfQoKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CgogIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICBwYWRkaW5nLXRvcDogICAgKEBqdW1ib3Ryb24tcGFkZGluZyAqIDEuNik7CiAgICBwYWRkaW5nLWJvdHRvbTogKEBqdW1ib3Ryb24tcGFkZGluZyAqIDEuNik7CgogICAgLmNvbnRhaW5lciAmIHsKICAgICAgcGFkZGluZy1sZWZ0OiAgKEBqdW1ib3Ryb24tcGFkZGluZyAqIDIpOwogICAgICBwYWRkaW5nLXJpZ2h0OiAoQGp1bWJvdHJvbi1wYWRkaW5nICogMik7CiAgICB9CgogICAgaDEsCiAgICAuaDEgewogICAgICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiA0LjUpOwogICAgfQogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/labels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTGFiZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoubGFiZWwgewogIGRpc3BsYXk6IGlubGluZTsKICBwYWRkaW5nOiAuMmVtIC42ZW0gLjNlbTsKICBmb250LXNpemU6IDc1JTsKICBmb250LXdlaWdodDogYm9sZDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogQGxhYmVsLWNvbG9yOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAuMjVlbTsKCiAgLy8gQWRkIGhvdmVyIGVmZmVjdHMsIGJ1dCBvbmx5IGZvciBsaW5rcwogIGEmIHsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgY29sb3I6IEBsYWJlbC1saW5rLWhvdmVyLWNvbG9yOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KICB9CgogIC8vIEVtcHR5IGxhYmVscyBjb2xsYXBzZSBhdXRvbWF0aWNhbGx5IChub3QgYXZhaWxhYmxlIGluIElFOCkKICAmOmVtcHR5IHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQoKICAvLyBRdWljayBmaXggZm9yIGxhYmVscyBpbiBidXR0b25zCiAgLmJ0biAmIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogLTFweDsKICB9Cn0KCi8vIENvbG9ycwovLyBDb250ZXh0dWFsIHZhcmlhdGlvbnMgKGxpbmtlZCBsYWJlbHMgZ2V0IGRhcmtlciBvbiA6aG92ZXIpCgoubGFiZWwtZGVmYXVsdCB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLWRlZmF1bHQtYmcpOwp9CgoubGFiZWwtcHJpbWFyeSB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLXByaW1hcnktYmcpOwp9CgoubGFiZWwtc3VjY2VzcyB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLXN1Y2Nlc3MtYmcpOwp9CgoubGFiZWwtaW5mbyB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLWluZm8tYmcpOwp9CgoubGFiZWwtd2FybmluZyB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLXdhcm5pbmctYmcpOwp9CgoubGFiZWwtZGFuZ2VyIHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtZGFuZ2VyLWJnKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/list-group.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTGlzdCBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi8vCi8vIEVhc2lseSB1c2FibGUgb24gPHVsPiwgPG9sPiwgb3IgPGRpdj4uCgoubGlzdC1ncm91cCB7CiAgLy8gTm8gbmVlZCB0byBzZXQgbGlzdC1zdHlsZTogbm9uZTsgc2luY2UgLmxpc3QtZ3JvdXAtaXRlbSBpcyBibG9jayBsZXZlbAogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgcGFkZGluZy1sZWZ0OiAwOyAvLyByZXNldCBwYWRkaW5nIGJlY2F1c2UgdWwgYW5kIG9sCn0KCgovLyBJbmRpdmlkdWFsIGxpc3QgaXRlbXMKLy8KLy8gVXNlIG9uIGBsaWBzIG9yIGBkaXZgcyB3aXRoaW4gdGhlIGAubGlzdC1ncm91cGAgcGFyZW50LgoKLmxpc3QtZ3JvdXAtaXRlbSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDEwcHggMTVweDsKICAvLyBQbGFjZSB0aGUgYm9yZGVyIG9uIHRoZSBsaXN0IGl0ZW1zIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdXAgZm9yIGJldHRlciBzdHlsaW5nCiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbGlzdC1ncm91cC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAbGlzdC1ncm91cC1ib3JkZXI7CgogIC8vIFJvdW5kIHRoZSBmaXJzdCBhbmQgbGFzdCBpdGVtcwogICY6Zmlyc3QtY2hpbGQgewogICAgLmJvcmRlci10b3AtcmFkaXVzKEBsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpOwogIH0KICAmOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIC5ib3JkZXItYm90dG9tLXJhZGl1cyhAbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTsKICB9CgogIC8vIEFsaWduIGJhZGdlcyB3aXRoaW4gbGlzdCBpdGVtcwogID4gLmJhZGdlIHsKICAgIGZsb2F0OiByaWdodDsKICB9CiAgPiAuYmFkZ2UgKyAuYmFkZ2UgewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgfQp9CgoKLy8gTGlua2VkIGxpc3QgaXRlbXMKLy8KLy8gVXNlIGFuY2hvciBlbGVtZW50cyBpbnN0ZWFkIG9mIGBsaWBzIG9yIGBkaXZgcyB0byBjcmVhdGUgbGlua2VkIGxpc3QgaXRlbXMuCi8vIEluY2x1ZGVzIGFuIGV4dHJhIGAuYWN0aXZlYCBtb2RpZmllciBjbGFzcyBmb3Igc2hvd2luZyBzZWxlY3RlZCBpdGVtcy4KCmEubGlzdC1ncm91cC1pdGVtIHsKICBjb2xvcjogQGxpc3QtZ3JvdXAtbGluay1jb2xvcjsKCiAgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgIGNvbG9yOiBAbGlzdC1ncm91cC1saW5rLWhlYWRpbmctY29sb3I7CiAgfQoKICAvLyBIb3ZlciBzdGF0ZQogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjb2xvcjogQGxpc3QtZ3JvdXAtbGluay1ob3Zlci1jb2xvcjsKICAgIGJhY2tncm91bmQtY29sb3I6IEBsaXN0LWdyb3VwLWhvdmVyLWJnOwogIH0KfQoKLmxpc3QtZ3JvdXAtaXRlbSB7CiAgLy8gRGlzYWJsZWQgc3RhdGUKICAmLmRpc2FibGVkLAogICYuZGlzYWJsZWQ6aG92ZXIsCiAgJi5kaXNhYmxlZDpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbGlzdC1ncm91cC1kaXNhYmxlZC1iZzsKICAgIGNvbG9yOiBAbGlzdC1ncm91cC1kaXNhYmxlZC1jb2xvcjsKCiAgICAvLyBGb3JjZSBjb2xvciB0byBpbmhlcml0IGZvciBjdXN0b20gY29udGVudAogICAgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICB9CiAgICAubGlzdC1ncm91cC1pdGVtLXRleHQgewogICAgICBjb2xvcjogQGxpc3QtZ3JvdXAtZGlzYWJsZWQtdGV4dC1jb2xvcjsKICAgIH0KICB9CgogIC8vIEFjdGl2ZSBjbGFzcyBvbiBpdGVtIGl0c2VsZiwgbm90IHBhcmVudAogICYuYWN0aXZlLAogICYuYWN0aXZlOmhvdmVyLAogICYuYWN0aXZlOmZvY3VzIHsKICAgIHotaW5kZXg6IDI7IC8vIFBsYWNlIGFjdGl2ZSBpdGVtcyBhYm92ZSB0aGVpciBzaWJsaW5ncyBmb3IgcHJvcGVyIGJvcmRlciBzdHlsaW5nCiAgICBjb2xvcjogQGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGxpc3QtZ3JvdXAtYWN0aXZlLWJnOwogICAgYm9yZGVyLWNvbG9yOiBAbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyOwoKICAgIC8vIEZvcmNlIGNvbG9yIHRvIGluaGVyaXQgZm9yIGN1c3RvbSBjb250ZW50CiAgICAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsCiAgICAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgPiBzbWFsbCwKICAgIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyA+IC5zbWFsbCB7CiAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgfQogICAgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0IHsKICAgICAgY29sb3I6IEBsaXN0LWdyb3VwLWFjdGl2ZS10ZXh0LWNvbG9yOwogICAgfQogIH0KfQoKCi8vIENvbnRleHR1YWwgdmFyaWFudHMKLy8KLy8gQWRkIG1vZGlmaWVyIGNsYXNzZXMgdG8gY2hhbmdlIHRleHQgYW5kIGJhY2tncm91bmQgY29sb3Igb24gaW5kaXZpZHVhbCBpdGVtcy4KLy8gT3JnYW5pemF0aW9uYWxseSwgdGhpcyBtdXN0IGNvbWUgYWZ0ZXIgdGhlIGA6aG92ZXJgIHN0YXRlcy4KCi5saXN0LWdyb3VwLWl0ZW0tdmFyaWFudChzdWNjZXNzOyBAc3RhdGUtc3VjY2Vzcy1iZzsgQHN0YXRlLXN1Y2Nlc3MtdGV4dCk7Ci5saXN0LWdyb3VwLWl0ZW0tdmFyaWFudChpbmZvOyBAc3RhdGUtaW5mby1iZzsgQHN0YXRlLWluZm8tdGV4dCk7Ci5saXN0LWdyb3VwLWl0ZW0tdmFyaWFudCh3YXJuaW5nOyBAc3RhdGUtd2FybmluZy1iZzsgQHN0YXRlLXdhcm5pbmctdGV4dCk7Ci5saXN0LWdyb3VwLWl0ZW0tdmFyaWFudChkYW5nZXI7IEBzdGF0ZS1kYW5nZXItYmc7IEBzdGF0ZS1kYW5nZXItdGV4dCk7CgoKLy8gQ3VzdG9tIGNvbnRlbnQgb3B0aW9ucwovLwovLyBFeHRyYSBjbGFzc2VzIGZvciBjcmVhdGluZyB3ZWxsLWZvcm1hdHRlZCBjb250ZW50IHdpdGhpbiBgLmxpc3QtZ3JvdXAtaXRlbWBzLgoKLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoubGlzdC1ncm91cC1pdGVtLXRleHQgewogIG1hcmdpbi1ib3R0b206IDA7CiAgbGluZS1oZWlnaHQ6IDEuMzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTWVkaWEgb2JqZWN0cwovLyBTb3VyY2U6IGh0dHA6Ly9zdHViYm9ybmVsbGEub3JnL2NvbnRlbnQvP3A9NDk3Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQ29tbW9uIHN0eWxlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBDbGVhciB0aGUgZmxvYXRzCi5tZWRpYSwKLm1lZGlhLWJvZHkgewogIG92ZXJmbG93OiBoaWRkZW47CiAgem9vbTogMTsKfQoKLy8gUHJvcGVyIHNwYWNpbmcgYmV0d2VlbiBpbnN0YW5jZXMgb2YgLm1lZGlhCi5tZWRpYSwKLm1lZGlhIC5tZWRpYSB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQoubWVkaWE6Zmlyc3QtY2hpbGQgewogIG1hcmdpbi10b3A6IDA7Cn0KCi8vIEZvciBpbWFnZXMgYW5kIHZpZGVvcywgc2V0IHRvIGJsb2NrCi5tZWRpYS1vYmplY3QgewogIGRpc3BsYXk6IGJsb2NrOwp9CgovLyBSZXNldCBtYXJnaW5zIG9uIGhlYWRpbmdzIGZvciB0aWdodGVyIGRlZmF1bHQgc3BhY2luZwoubWVkaWEtaGVhZGluZyB7CiAgbWFyZ2luOiAwIDAgNXB4Owp9CgoKLy8gTWVkaWEgaW1hZ2UgYWxpZ25tZW50Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5tZWRpYSB7CiAgPiAucHVsbC1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICB9CiAgPiAucHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICB9Cn0KCgovLyBNZWRpYSBsaXN0IHZhcmlhdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBVbmRvIGRlZmF1bHQgdWwvb2wgc3R5bGVzCi5tZWRpYS1saXN0IHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTWl4aW5zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBVdGlsaXRpZXMKQGltcG9ydCAibWl4aW5zL2hpZGUtdGV4dC5sZXNzIjsKQGltcG9ydCAibWl4aW5zL29wYWNpdHkubGVzcyI7CkBpbXBvcnQgIm1peGlucy9pbWFnZS5sZXNzIjsKQGltcG9ydCAibWl4aW5zL2xhYmVscy5sZXNzIjsKQGltcG9ydCAibWl4aW5zL3Jlc2V0LWZpbHRlci5sZXNzIjsKQGltcG9ydCAibWl4aW5zL3Jlc2l6ZS5sZXNzIjsKQGltcG9ydCAibWl4aW5zL3Jlc3BvbnNpdmUtdmlzaWJpbGl0eS5sZXNzIjsKQGltcG9ydCAibWl4aW5zL3NpemUubGVzcyI7CkBpbXBvcnQgIm1peGlucy90YWItZm9jdXMubGVzcyI7CkBpbXBvcnQgIm1peGlucy90ZXh0LWVtcGhhc2lzLmxlc3MiOwpAaW1wb3J0ICJtaXhpbnMvdGV4dC1vdmVyZmxvdy5sZXNzIjsKQGltcG9ydCAibWl4aW5zL3ZlbmRvci1wcmVmaXhlcy5sZXNzIjsKCi8vIENvbXBvbmVudHMKQGltcG9ydCAibWl4aW5zL2FsZXJ0cy5sZXNzIjsKQGltcG9ydCAibWl4aW5zL2J1dHRvbnMubGVzcyI7CkBpbXBvcnQgIm1peGlucy9wYW5lbHMubGVzcyI7CkBpbXBvcnQgIm1peGlucy9wYWdpbmF0aW9uLmxlc3MiOwpAaW1wb3J0ICJtaXhpbnMvbGlzdC1ncm91cC5sZXNzIjsKQGltcG9ydCAibWl4aW5zL25hdi1kaXZpZGVyLmxlc3MiOwpAaW1wb3J0ICJtaXhpbnMvZm9ybXMubGVzcyI7CkBpbXBvcnQgIm1peGlucy9wcm9ncmVzcy1iYXIubGVzcyI7CkBpbXBvcnQgIm1peGlucy90YWJsZS1yb3cubGVzcyI7CgovLyBTa2lucwpAaW1wb3J0ICJtaXhpbnMvYmFja2dyb3VuZC12YXJpYW50Lmxlc3MiOwpAaW1wb3J0ICJtaXhpbnMvYm9yZGVyLXJhZGl1cy5sZXNzIjsKQGltcG9ydCAibWl4aW5zL2dyYWRpZW50cy5sZXNzIjsKCi8vIExheW91dApAaW1wb3J0ICJtaXhpbnMvY2xlYXJmaXgubGVzcyI7CkBpbXBvcnQgIm1peGlucy9jZW50ZXItYmxvY2subGVzcyI7CkBpbXBvcnQgIm1peGlucy9uYXYtdmVydGljYWwtYWxpZ24ubGVzcyI7CkBpbXBvcnQgIm1peGlucy9ncmlkLWZyYW1ld29yay5sZXNzIjsKQGltcG9ydCAibWl4aW5zL2dyaWQubGVzcyI7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/alerts.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQWxlcnRzCgouYWxlcnQtdmFyaWFudChAYmFja2dyb3VuZDsgQGJvcmRlcjsgQHRleHQtY29sb3IpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmFja2dyb3VuZDsKICBib3JkZXItY29sb3I6IEBib3JkZXI7CiAgY29sb3I6IEB0ZXh0LWNvbG9yOwoKICBociB7CiAgICBib3JkZXItdG9wLWNvbG9yOiBkYXJrZW4oQGJvcmRlciwgNSUpOwogIH0KICAuYWxlcnQtbGluayB7CiAgICBjb2xvcjogZGFya2VuKEB0ZXh0LWNvbG9yLCAxMCUpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/background-variant.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQ29udGV4dHVhbCBiYWNrZ3JvdW5kcwoKLmJnLXZhcmlhbnQoQGNvbG9yKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogQGNvbG9yOwogIGEmOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihAY29sb3IsIDEwJSk7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/border-radius.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gU2luZ2xlIHNpZGUgYm9yZGVyLXJhZGl1cwoKLmJvcmRlci10b3AtcmFkaXVzKEByYWRpdXMpIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogQHJhZGl1czsKICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogQHJhZGl1czsKfQouYm9yZGVyLXJpZ2h0LXJhZGl1cyhAcmFkaXVzKSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IEByYWRpdXM7CiAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IEByYWRpdXM7Cn0KLmJvcmRlci1ib3R0b20tcmFkaXVzKEByYWRpdXMpIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogQHJhZGl1czsKICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogQHJhZGl1czsKfQouYm9yZGVyLWxlZnQtcmFkaXVzKEByYWRpdXMpIHsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBAcmFkaXVzOwogICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IEByYWRpdXM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/buttons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQnV0dG9uIHZhcmlhbnRzCi8vCi8vIEVhc2lseSBwdW1wIG91dCBkZWZhdWx0IHN0eWxlcywgYXMgd2VsbCBhcyA6aG92ZXIsIDpmb2N1cywgOmFjdGl2ZSwKLy8gYW5kIGRpc2FibGVkIG9wdGlvbnMgZm9yIGFsbCBidXR0b25zCgouYnV0dG9uLXZhcmlhbnQoQGNvbG9yOyBAYmFja2dyb3VuZDsgQGJvcmRlcikgewogIGNvbG9yOiBAY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJhY2tncm91bmQ7CiAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyOwoKICAmOmhvdmVyLAogICY6Zm9jdXMsCiAgJjphY3RpdmUsCiAgJi5hY3RpdmUsCiAgLm9wZW4gPiAuZHJvcGRvd24tdG9nZ2xlJiB7CiAgICBjb2xvcjogQGNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKEBiYWNrZ3JvdW5kLCAxMCUpOwogICAgICAgIGJvcmRlci1jb2xvcjogZGFya2VuKEBib3JkZXIsIDEyJSk7CiAgfQogICY6YWN0aXZlLAogICYuYWN0aXZlLAogIC5vcGVuID4gLmRyb3Bkb3duLXRvZ2dsZSYgewogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICB9CiAgJi5kaXNhYmxlZCwKICAmW2Rpc2FibGVkXSwKICBmaWVsZHNldFtkaXNhYmxlZF0gJiB7CiAgICAmLAogICAgJjpob3ZlciwKICAgICY6Zm9jdXMsCiAgICAmOmFjdGl2ZSwKICAgICYuYWN0aXZlIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGJhY2tncm91bmQ7CiAgICAgICAgICBib3JkZXItY29sb3I6IEBib3JkZXI7CiAgICB9CiAgfQoKICAuYmFkZ2UgewogICAgY29sb3I6IEBiYWNrZ3JvdW5kOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGNvbG9yOwogIH0KfQoKLy8gQnV0dG9uIHNpemVzCi5idXR0b24tc2l6ZShAcGFkZGluZy12ZXJ0aWNhbDsgQHBhZGRpbmctaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZTsgQGxpbmUtaGVpZ2h0OyBAYm9yZGVyLXJhZGl1cykgewogIHBhZGRpbmc6IEBwYWRkaW5nLXZlcnRpY2FsIEBwYWRkaW5nLWhvcml6b250YWw7CiAgZm9udC1zaXplOiBAZm9udC1zaXplOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQ7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/center-block.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQ2VudGVyLWFsaWduIGEgYmxvY2sgbGV2ZWwgZWxlbWVudAoKLmNlbnRlci1ibG9jaygpIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/clearfix.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQ2xlYXJmaXgKLy8KLy8gRm9yIG1vZGVybiBicm93c2VycwovLyAxLiBUaGUgc3BhY2UgY29udGVudCBpcyBvbmUgd2F5IHRvIGF2b2lkIGFuIE9wZXJhIGJ1ZyB3aGVuIHRoZQovLyAgICBjb250ZW50ZWRpdGFibGUgYXR0cmlidXRlIGlzIGluY2x1ZGVkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGRvY3VtZW50LgovLyAgICBPdGhlcndpc2UgaXQgY2F1c2VzIHNwYWNlIHRvIGFwcGVhciBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgZWxlbWVudHMKLy8gICAgdGhhdCBhcmUgY2xlYXJmaXhlZC4KLy8gMi4gVGhlIHVzZSBvZiBgdGFibGVgIHJhdGhlciB0aGFuIGBibG9ja2AgaXMgb25seSBuZWNlc3NhcnkgaWYgdXNpbmcKLy8gICAgYDpiZWZvcmVgIHRvIGNvbnRhaW4gdGhlIHRvcC1tYXJnaW5zIG9mIGNoaWxkIGVsZW1lbnRzLgovLwovLyBTb3VyY2U6IGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLwoKLmNsZWFyZml4KCkgewogICY6YmVmb3JlLAogICY6YWZ0ZXIgewogICAgY29udGVudDogIiAiOyAvLyAxCiAgICBkaXNwbGF5OiB0YWJsZTsgLy8gMgogIH0KICAmOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/forms.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gRm9ybSB2YWxpZGF0aW9uIHN0YXRlcwovLwovLyBVc2VkIGluIGZvcm1zLmxlc3MgdG8gZ2VuZXJhdGUgdGhlIGZvcm0gdmFsaWRhdGlvbiBDU1MgZm9yIHdhcm5pbmdzLCBlcnJvcnMsCi8vIGFuZCBzdWNjZXNzZXMuCgouZm9ybS1jb250cm9sLXZhbGlkYXRpb24oQHRleHQtY29sb3I6ICM1NTU7IEBib3JkZXItY29sb3I6ICNjY2M7IEBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1KSB7CiAgLy8gQ29sb3IgdGhlIGxhYmVsIGFuZCBoZWxwIHRleHQKICAuaGVscC1ibG9jaywKICAuY29udHJvbC1sYWJlbCwKICAucmFkaW8sCiAgLmNoZWNrYm94LAogIC5yYWRpby1pbmxpbmUsCiAgLmNoZWNrYm94LWlubGluZSAgewogICAgY29sb3I6IEB0ZXh0LWNvbG9yOwogIH0KICAvLyBTZXQgdGhlIGJvcmRlciBhbmQgYm94IHNoYWRvdyBvbiBzcGVjaWZpYyBpbnB1dHMgdG8gbWF0Y2gKICAuZm9ybS1jb250cm9sIHsKICAgIGJvcmRlci1jb2xvcjogQGJvcmRlci1jb2xvcjsKICAgIC5ib3gtc2hhZG93KGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpKTsgLy8gUmVkZWNsYXJlIHNvIHRyYW5zaXRpb25zIHdvcmsKICAgICY6Zm9jdXMgewogICAgICBib3JkZXItY29sb3I6IGRhcmtlbihAYm9yZGVyLWNvbG9yLCAxMCUpOwogICAgICBAc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwgMCAwIDZweCBsaWdodGVuKEBib3JkZXItY29sb3IsIDIwJSk7CiAgICAgIC5ib3gtc2hhZG93KEBzaGFkb3cpOwogICAgfQogIH0KICAvLyBTZXQgdmFsaWRhdGlvbiBzdGF0ZXMgYWxzbyBmb3IgYWRkb25zCiAgLmlucHV0LWdyb3VwLWFkZG9uIHsKICAgIGNvbG9yOiBAdGV4dC1jb2xvcjsKICAgIGJvcmRlci1jb2xvcjogQGJvcmRlci1jb2xvcjsKICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kLWNvbG9yOwogIH0KICAvLyBPcHRpb25hbCBmZWVkYmFjayBpY29uCiAgLmZvcm0tY29udHJvbC1mZWVkYmFjayB7CiAgICBjb2xvcjogQHRleHQtY29sb3I7CiAgfQp9CgoKLy8gRm9ybSBjb250cm9sIGZvY3VzIHN0YXRlCi8vCi8vIEdlbmVyYXRlIGEgY3VzdG9taXplZCBmb2N1cyBzdGF0ZSBhbmQgZm9yIGFueSBpbnB1dCB3aXRoIHRoZSBzcGVjaWZpZWQgY29sb3IsCi8vIHdoaWNoIGRlZmF1bHRzIHRvIHRoZSBgQGlucHV0LWJvcmRlci1mb2N1c2AgdmFyaWFibGUuCi8vCi8vIFdlIGhpZ2hseSBlbmNvdXJhZ2UgeW91IHRvIG5vdCBjdXN0b21pemUgdGhlIGRlZmF1bHQgdmFsdWUsIGJ1dCBpbnN0ZWFkIHVzZQovLyB0aGlzIHRvIHR3ZWFrIGNvbG9ycyBvbiBhbiBhcy1uZWVkZWQgYmFzaXMuIFRoaXMgYWVzdGhldGljIGNoYW5nZSBpcyBiYXNlZCBvbgovLyBXZWJLaXQncyBkZWZhdWx0IHN0eWxlcywgYnV0IGFwcGxpY2FibGUgdG8gYSB3aWRlciByYW5nZSBvZiBicm93c2Vycy4gSXRzCi8vIHVzYWJpbGl0eSBhbmQgYWNjZXNzaWJpbGl0eSBzaG91bGQgYmUgdGFrZW4gaW50byBhY2NvdW50IHdpdGggYW55IGNoYW5nZS4KLy8KLy8gRXhhbXBsZSB1c2FnZTogY2hhbmdlIHRoZSBkZWZhdWx0IGJsdWUgYm9yZGVyIGFuZCBzaGFkb3cgdG8gd2hpdGUgZm9yIGJldHRlcgovLyBjb250cmFzdCBhZ2FpbnN0IGEgZGFyayBncmF5IGJhY2tncm91bmQuCi5mb3JtLWNvbnRyb2wtZm9jdXMoQGNvbG9yOiBAaW5wdXQtYm9yZGVyLWZvY3VzKSB7CiAgQGNvbG9yLXJnYmE6IHJnYmEocmVkKEBjb2xvciksIGdyZWVuKEBjb2xvciksIGJsdWUoQGNvbG9yKSwgLjYpOwogICY6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiBAY29sb3I7CiAgICBvdXRsaW5lOiAwOwogICAgLmJveC1zaGFkb3cofiJpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwgMCAwIDhweCBAe2NvbG9yLXJnYmF9Iik7CiAgfQp9CgovLyBGb3JtIGNvbnRyb2wgc2l6aW5nCi8vCi8vIFJlbGF0aXZlIHRleHQgc2l6ZSwgcGFkZGluZywgYW5kIGJvcmRlci1yYWRpaSBjaGFuZ2VzIGZvciBmb3JtIGNvbnRyb2xzLiBGb3IKLy8gaG9yaXpvbnRhbCBzaXppbmcsIHdyYXAgY29udHJvbHMgaW4gdGhlIHByZWRlZmluZWQgZ3JpZCBjbGFzc2VzLiBgPHNlbGVjdD5gCi8vIGVsZW1lbnQgZ2V0cyBzcGVjaWFsIGxvdmUgYmVjYXVzZSBpdCdzIHNwZWNpYWwsIGFuZCB0aGF0J3MgYSBmYWN0IQouaW5wdXQtc2l6ZShAaW5wdXQtaGVpZ2h0OyBAcGFkZGluZy12ZXJ0aWNhbDsgQHBhZGRpbmctaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZTsgQGxpbmUtaGVpZ2h0OyBAYm9yZGVyLXJhZGl1cykgewogIGhlaWdodDogQGlucHV0LWhlaWdodDsKICBwYWRkaW5nOiBAcGFkZGluZy12ZXJ0aWNhbCBAcGFkZGluZy1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0OwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzOwoKICBzZWxlY3QmIHsKICAgIGhlaWdodDogQGlucHV0LWhlaWdodDsKICAgIGxpbmUtaGVpZ2h0OiBAaW5wdXQtaGVpZ2h0OwogIH0KCiAgdGV4dGFyZWEmLAogIHNlbGVjdFttdWx0aXBsZV0mIHsKICAgIGhlaWdodDogYXV0bzsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/gradients.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gR3JhZGllbnRzCgojZ3JhZGllbnQgewoKICAvLyBIb3Jpem9udGFsIGdyYWRpZW50LCBmcm9tIGxlZnQgdG8gcmlnaHQKICAvLwogIC8vIENyZWF0ZXMgdHdvIGNvbG9yIHN0b3BzLCBzdGFydCBhbmQgZW5kLCBieSBzcGVjaWZ5aW5nIGEgY29sb3IgYW5kIHBvc2l0aW9uIGZvciBlYWNoIGNvbG9yIHN0b3AuCiAgLy8gQ29sb3Igc3RvcHMgYXJlIG5vdCBhdmFpbGFibGUgaW4gSUU5IGFuZCBiZWxvdy4KICAuaG9yaXpvbnRhbChAc3RhcnQtY29sb3I6ICM1NTU7IEBlbmQtY29sb3I6ICMzMzM7IEBzdGFydC1wZXJjZW50OiAwJTsgQGVuZC1wZXJjZW50OiAxMDAlKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCBAc3RhcnQtY29sb3IgQHN0YXJ0LXBlcmNlbnQsIEBlbmQtY29sb3IgQGVuZC1wZXJjZW50KTsgLy8gU2FmYXJpIDUuMS02LCBDaHJvbWUgMTArCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQobGVmdCwgQHN0YXJ0LWNvbG9yIEBzdGFydC1wZXJjZW50LCBAZW5kLWNvbG9yIEBlbmQtcGVyY2VudCk7IC8vIE9wZXJhIDEyCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIEBzdGFydC1jb2xvciBAc3RhcnQtcGVyY2VudCwgQGVuZC1jb2xvciBAZW5kLXBlcmNlbnQpOyAvLyBTdGFuZGFyZCwgSUUxMCwgRmlyZWZveCAxNissIE9wZXJhIDEyLjEwKywgU2FmYXJpIDcrLCBDaHJvbWUgMjYrCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IGUoJSgicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyVkJywgZW5kQ29sb3JzdHI9JyVkJywgR3JhZGllbnRUeXBlPTEpIixhcmdiKEBzdGFydC1jb2xvciksYXJnYihAZW5kLWNvbG9yKSkpOyAvLyBJRTkgYW5kIGRvd24KICB9CgogIC8vIFZlcnRpY2FsIGdyYWRpZW50LCBmcm9tIHRvcCB0byBib3R0b20KICAvLwogIC8vIENyZWF0ZXMgdHdvIGNvbG9yIHN0b3BzLCBzdGFydCBhbmQgZW5kLCBieSBzcGVjaWZ5aW5nIGEgY29sb3IgYW5kIHBvc2l0aW9uIGZvciBlYWNoIGNvbG9yIHN0b3AuCiAgLy8gQ29sb3Igc3RvcHMgYXJlIG5vdCBhdmFpbGFibGUgaW4gSUU5IGFuZCBiZWxvdy4KICAudmVydGljYWwoQHN0YXJ0LWNvbG9yOiAjNTU1OyBAZW5kLWNvbG9yOiAjMzMzOyBAc3RhcnQtcGVyY2VudDogMCU7IEBlbmQtcGVyY2VudDogMTAwJSkgewogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCBAc3RhcnQtY29sb3IgQHN0YXJ0LXBlcmNlbnQsIEBlbmQtY29sb3IgQGVuZC1wZXJjZW50KTsgIC8vIFNhZmFyaSA1LjEtNiwgQ2hyb21lIDEwKwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgQHN0YXJ0LWNvbG9yIEBzdGFydC1wZXJjZW50LCBAZW5kLWNvbG9yIEBlbmQtcGVyY2VudCk7ICAvLyBPcGVyYSAxMgogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgQHN0YXJ0LWNvbG9yIEBzdGFydC1wZXJjZW50LCBAZW5kLWNvbG9yIEBlbmQtcGVyY2VudCk7IC8vIFN0YW5kYXJkLCBJRTEwLCBGaXJlZm94IDE2KywgT3BlcmEgMTIuMTArLCBTYWZhcmkgNyssIENocm9tZSAyNisKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJWQnLCBlbmRDb2xvcnN0cj0nJWQnLCBHcmFkaWVudFR5cGU9MCkiLGFyZ2IoQHN0YXJ0LWNvbG9yKSxhcmdiKEBlbmQtY29sb3IpKSk7IC8vIElFOSBhbmQgZG93bgogIH0KCiAgLmRpcmVjdGlvbmFsKEBzdGFydC1jb2xvcjogIzU1NTsgQGVuZC1jb2xvcjogIzMzMzsgQGRlZzogNDVkZWcpIHsKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KEBkZWcsIEBzdGFydC1jb2xvciwgQGVuZC1jb2xvcik7IC8vIFNhZmFyaSA1LjEtNiwgQ2hyb21lIDEwKwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KEBkZWcsIEBzdGFydC1jb2xvciwgQGVuZC1jb2xvcik7IC8vIE9wZXJhIDEyCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoQGRlZywgQHN0YXJ0LWNvbG9yLCBAZW5kLWNvbG9yKTsgLy8gU3RhbmRhcmQsIElFMTAsIEZpcmVmb3ggMTYrLCBPcGVyYSAxMi4xMCssIFNhZmFyaSA3KywgQ2hyb21lIDI2KwogIH0KICAuaG9yaXpvbnRhbC10aHJlZS1jb2xvcnMoQHN0YXJ0LWNvbG9yOiAjMDBiM2VlOyBAbWlkLWNvbG9yOiAjN2E0M2I2OyBAY29sb3Itc3RvcDogNTAlOyBAZW5kLWNvbG9yOiAjYzMzMjVmKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCBAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsIEBzdGFydC1jb2xvciwgQG1pZC1jb2xvciBAY29sb3Itc3RvcCwgQGVuZC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIEBzdGFydC1jb2xvciwgQG1pZC1jb2xvciBAY29sb3Itc3RvcCwgQGVuZC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgZmlsdGVyOiBlKCUoInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSclZCcsIGVuZENvbG9yc3RyPSclZCcsIEdyYWRpZW50VHlwZT0xKSIsYXJnYihAc3RhcnQtY29sb3IpLGFyZ2IoQGVuZC1jb2xvcikpKTsgLy8gSUU5IGFuZCBkb3duLCBnZXRzIG5vIGNvbG9yLXN0b3AgYXQgYWxsIGZvciBwcm9wZXIgZmFsbGJhY2sKICB9CiAgLnZlcnRpY2FsLXRocmVlLWNvbG9ycyhAc3RhcnQtY29sb3I6ICMwMGIzZWU7IEBtaWQtY29sb3I6ICM3YTQzYjY7IEBjb2xvci1zdG9wOiA1MCU7IEBlbmQtY29sb3I6ICNjMzMyNWYpIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KEBzdGFydC1jb2xvciwgQG1pZC1jb2xvciBAY29sb3Itc3RvcCwgQGVuZC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoQHN0YXJ0LWNvbG9yLCBAbWlkLWNvbG9yIEBjb2xvci1zdG9wLCBAZW5kLWNvbG9yKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJWQnLCBlbmRDb2xvcnN0cj0nJWQnLCBHcmFkaWVudFR5cGU9MCkiLGFyZ2IoQHN0YXJ0LWNvbG9yKSxhcmdiKEBlbmQtY29sb3IpKSk7IC8vIElFOSBhbmQgZG93biwgZ2V0cyBubyBjb2xvci1zdG9wIGF0IGFsbCBmb3IgcHJvcGVyIGZhbGxiYWNrCiAgfQogIC5yYWRpYWwoQGlubmVyLWNvbG9yOiAjNTU1OyBAb3V0ZXItY29sb3I6ICMzMzMpIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgQGlubmVyLWNvbG9yLCBAb3V0ZXItY29sb3IpOwogICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgQGlubmVyLWNvbG9yLCBAb3V0ZXItY29sb3IpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICB9CiAgLnN0cmlwZWQoQGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC4xNSk7IEBhbmdsZTogNDVkZWcpIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KEBhbmdsZSwgQGNvbG9yIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIEBjb2xvciA1MCUsIEBjb2xvciA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KEBhbmdsZSwgQGNvbG9yIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIEBjb2xvciA1MCUsIEBjb2xvciA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KEBhbmdsZSwgQGNvbG9yIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIEBjb2xvciA1MCUsIEBjb2xvciA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/grid-framework.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gRnJhbWV3b3JrIGdyaWQgZ2VuZXJhdGlvbgovLwovLyBVc2VkIG9ubHkgYnkgQm9vdHN0cmFwIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBncmlkIGNsYXNzZXMgZ2l2ZW4KLy8gYW55IHZhbHVlIG9mIGBAZ3JpZC1jb2x1bW5zYC4KCi5tYWtlLWdyaWQtY29sdW1ucygpIHsKICAvLyBDb21tb24gc3R5bGVzIGZvciBhbGwgc2l6ZXMgb2YgZ3JpZCBjb2x1bW5zLCB3aWR0aHMgMS0xMgogIC5jb2woQGluZGV4KSB3aGVuIChAaW5kZXggPSAxKSB7IC8vIGluaXRpYWwKICAgIEBpdGVtOiB+Ii5jb2wteHMtQHtpbmRleH0sIC5jb2wtc20tQHtpbmRleH0sIC5jb2wtbWQtQHtpbmRleH0sIC5jb2wtbGctQHtpbmRleH0iOwogICAgLmNvbCgoQGluZGV4ICsgMSksIEBpdGVtKTsKICB9CiAgLmNvbChAaW5kZXgsIEBsaXN0KSB3aGVuIChAaW5kZXggPTwgQGdyaWQtY29sdW1ucykgeyAvLyBnZW5lcmFsOyAiPTwiIGlzbid0IGEgdHlwbwogICAgQGl0ZW06IH4iLmNvbC14cy1Ae2luZGV4fSwgLmNvbC1zbS1Ae2luZGV4fSwgLmNvbC1tZC1Ae2luZGV4fSwgLmNvbC1sZy1Ae2luZGV4fSI7CiAgICAuY29sKChAaW5kZXggKyAxKSwgfiJAe2xpc3R9LCBAe2l0ZW19Iik7CiAgfQogIC5jb2woQGluZGV4LCBAbGlzdCkgd2hlbiAoQGluZGV4ID4gQGdyaWQtY29sdW1ucykgeyAvLyB0ZXJtaW5hbAogICAgQHtsaXN0fSB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gY29sbGFwc2luZyB3aGVuIGVtcHR5CiAgICAgIG1pbi1oZWlnaHQ6IDFweDsKICAgICAgLy8gSW5uZXIgZ3V0dGVyIHZpYSBwYWRkaW5nCiAgICAgIHBhZGRpbmctbGVmdDogIChAZ3JpZC1ndXR0ZXItd2lkdGggLyAyKTsKICAgICAgcGFkZGluZy1yaWdodDogKEBncmlkLWd1dHRlci13aWR0aCAvIDIpOwogICAgfQogIH0KICAuY29sKDEpOyAvLyBraWNrc3RhcnQgaXQKfQoKLmZsb2F0LWdyaWQtY29sdW1ucyhAY2xhc3MpIHsKICAuY29sKEBpbmRleCkgd2hlbiAoQGluZGV4ID0gMSkgeyAvLyBpbml0aWFsCiAgICBAaXRlbTogfiIuY29sLUB7Y2xhc3N9LUB7aW5kZXh9IjsKICAgIC5jb2woKEBpbmRleCArIDEpLCBAaXRlbSk7CiAgfQogIC5jb2woQGluZGV4LCBAbGlzdCkgd2hlbiAoQGluZGV4ID08IEBncmlkLWNvbHVtbnMpIHsgLy8gZ2VuZXJhbAogICAgQGl0ZW06IH4iLmNvbC1Ae2NsYXNzfS1Ae2luZGV4fSI7CiAgICAuY29sKChAaW5kZXggKyAxKSwgfiJAe2xpc3R9LCBAe2l0ZW19Iik7CiAgfQogIC5jb2woQGluZGV4LCBAbGlzdCkgd2hlbiAoQGluZGV4ID4gQGdyaWQtY29sdW1ucykgeyAvLyB0ZXJtaW5hbAogICAgQHtsaXN0fSB7CiAgICAgIGZsb2F0OiBsZWZ0OwogICAgfQogIH0KICAuY29sKDEpOyAvLyBraWNrc3RhcnQgaXQKfQoKLmNhbGMtZ3JpZC1jb2x1bW4oQGluZGV4LCBAY2xhc3MsIEB0eXBlKSB3aGVuIChAdHlwZSA9IHdpZHRoKSBhbmQgKEBpbmRleCA+IDApIHsKICAuY29sLUB7Y2xhc3N9LUB7aW5kZXh9IHsKICAgIHdpZHRoOiBwZXJjZW50YWdlKChAaW5kZXggLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5jYWxjLWdyaWQtY29sdW1uKEBpbmRleCwgQGNsYXNzLCBAdHlwZSkgd2hlbiAoQHR5cGUgPSBwdXNoKSBhbmQgKEBpbmRleCA+IDApIHsKICAuY29sLUB7Y2xhc3N9LXB1c2gtQHtpbmRleH0gewogICAgbGVmdDogcGVyY2VudGFnZSgoQGluZGV4IC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQouY2FsYy1ncmlkLWNvbHVtbihAaW5kZXgsIEBjbGFzcywgQHR5cGUpIHdoZW4gKEB0eXBlID0gcHVzaCkgYW5kIChAaW5kZXggPSAwKSB7CiAgLmNvbC1Ae2NsYXNzfS1wdXNoLTAgewogICAgbGVmdDogYXV0bzsKICB9Cn0KLmNhbGMtZ3JpZC1jb2x1bW4oQGluZGV4LCBAY2xhc3MsIEB0eXBlKSB3aGVuIChAdHlwZSA9IHB1bGwpIGFuZCAoQGluZGV4ID4gMCkgewogIC5jb2wtQHtjbGFzc30tcHVsbC1Ae2luZGV4fSB7CiAgICByaWdodDogcGVyY2VudGFnZSgoQGluZGV4IC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQouY2FsYy1ncmlkLWNvbHVtbihAaW5kZXgsIEBjbGFzcywgQHR5cGUpIHdoZW4gKEB0eXBlID0gcHVsbCkgYW5kIChAaW5kZXggPSAwKSB7CiAgLmNvbC1Ae2NsYXNzfS1wdWxsLTAgewogICAgcmlnaHQ6IGF1dG87CiAgfQp9Ci5jYWxjLWdyaWQtY29sdW1uKEBpbmRleCwgQGNsYXNzLCBAdHlwZSkgd2hlbiAoQHR5cGUgPSBvZmZzZXQpIHsKICAuY29sLUB7Y2xhc3N9LW9mZnNldC1Ae2luZGV4fSB7CiAgICBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoQGluZGV4IC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoKLy8gQmFzaWMgbG9vcGluZyBpbiBMRVNTCi5sb29wLWdyaWQtY29sdW1ucyhAaW5kZXgsIEBjbGFzcywgQHR5cGUpIHdoZW4gKEBpbmRleCA+PSAwKSB7CiAgLmNhbGMtZ3JpZC1jb2x1bW4oQGluZGV4LCBAY2xhc3MsIEB0eXBlKTsKICAvLyBuZXh0IGl0ZXJhdGlvbgogIC5sb29wLWdyaWQtY29sdW1ucygoQGluZGV4IC0gMSksIEBjbGFzcywgQHR5cGUpOwp9CgovLyBDcmVhdGUgZ3JpZCBmb3Igc3BlY2lmaWMgY2xhc3MKLm1ha2UtZ3JpZChAY2xhc3MpIHsKICAuZmxvYXQtZ3JpZC1jb2x1bW5zKEBjbGFzcyk7CiAgLmxvb3AtZ3JpZC1jb2x1bW5zKEBncmlkLWNvbHVtbnMsIEBjbGFzcywgd2lkdGgpOwogIC5sb29wLWdyaWQtY29sdW1ucyhAZ3JpZC1jb2x1bW5zLCBAY2xhc3MsIHB1bGwpOwogIC5sb29wLWdyaWQtY29sdW1ucyhAZ3JpZC1jb2x1bW5zLCBAY2xhc3MsIHB1c2gpOwogIC5sb29wLWdyaWQtY29sdW1ucyhAZ3JpZC1jb2x1bW5zLCBAY2xhc3MsIG9mZnNldCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/grid.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gR3JpZCBzeXN0ZW0KLy8KLy8gR2VuZXJhdGUgc2VtYW50aWMgZ3JpZCBjb2x1bW5zIHdpdGggdGhlc2UgbWl4aW5zLgoKLy8gQ2VudGVyZWQgY29udGFpbmVyIGVsZW1lbnQKLmNvbnRhaW5lci1maXhlZChAZ3V0dGVyOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgcGFkZGluZy1sZWZ0OiAgKEBndXR0ZXIgLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiAoQGd1dHRlciAvIDIpOwogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwp9CgovLyBDcmVhdGVzIGEgd3JhcHBlciBmb3IgYSBzZXJpZXMgb2YgY29sdW1ucwoubWFrZS1yb3coQGd1dHRlcjogQGdyaWQtZ3V0dGVyLXdpZHRoKSB7CiAgbWFyZ2luLWxlZnQ6ICAoQGd1dHRlciAvIC0yKTsKICBtYXJnaW4tcmlnaHQ6IChAZ3V0dGVyIC8gLTIpOwogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwp9CgovLyBHZW5lcmF0ZSB0aGUgZXh0cmEgc21hbGwgY29sdW1ucwoubWFrZS14cy1jb2x1bW4oQGNvbHVtbnM7IEBndXR0ZXI6IEBncmlkLWd1dHRlci13aWR0aCkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbG9hdDogbGVmdDsKICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgbWluLWhlaWdodDogMXB4OwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKfQoubWFrZS14cy1jb2x1bW4tb2Zmc2V0KEBjb2x1bW5zKSB7CiAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwp9Ci5tYWtlLXhzLWNvbHVtbi1wdXNoKEBjb2x1bW5zKSB7CiAgbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7Cn0KLm1ha2UteHMtY29sdW1uLXB1bGwoQGNvbHVtbnMpIHsKICByaWdodDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7Cn0KCi8vIEdlbmVyYXRlIHRoZSBzbWFsbCBjb2x1bW5zCi5tYWtlLXNtLWNvbHVtbihAY29sdW1uczsgQGd1dHRlcjogQGdyaWQtZ3V0dGVyLXdpZHRoKSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLWxlZnQ6ICAoQGd1dHRlciAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IChAZ3V0dGVyIC8gMik7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLXNtLWNvbHVtbi1vZmZzZXQoQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2Utc20tY29sdW1uLXB1c2goQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAgIGxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS1zbS1jb2x1bW4tcHVsbChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgcmlnaHQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoKLy8gR2VuZXJhdGUgdGhlIG1lZGl1bSBjb2x1bW5zCi5tYWtlLW1kLWNvbHVtbihAY29sdW1uczsgQGd1dHRlcjogQGdyaWQtZ3V0dGVyLXdpZHRoKSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLWxlZnQ6ICAoQGd1dHRlciAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IChAZ3V0dGVyIC8gMik7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLW1kLWNvbHVtbi1vZmZzZXQoQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIHsKICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2UtbWQtY29sdW1uLXB1c2goQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIHsKICAgIGxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS1tZC1jb2x1bW4tcHVsbChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgewogICAgcmlnaHQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoKLy8gR2VuZXJhdGUgdGhlIGxhcmdlIGNvbHVtbnMKLm1ha2UtbGctY29sdW1uKEBjb2x1bW5zOyBAZ3V0dGVyOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWluLWhlaWdodDogMXB4OwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2UtbGctY29sdW1uLW9mZnNldChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLW1pbikgewogICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS1sZy1jb2x1bW4tcHVzaChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLW1pbikgewogICAgbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLWxnLWNvbHVtbi1wdWxsKEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICByaWdodDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/hide-text.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQ1NTIGltYWdlIHJlcGxhY2VtZW50Ci8vCi8vIEhlYWRzIHVwISB2MyBsYXVuY2hlZCB3aXRoIHdpdGggb25seSBgLmhpZGUtdGV4dCgpYCwgYnV0IHBlciBvdXIgcGF0dGVybiBmb3IKLy8gbWl4aW5zIGJlaW5nIHJldXNlZCBhcyBjbGFzc2VzIHdpdGggdGhlIHNhbWUgbmFtZSwgdGhpcyBkb2Vzbid0IGhvbGQgdXAuIEFzCi8vIG9mIHYzLjAuMSB3ZSBoYXZlIGFkZGVkIGAudGV4dC1oaWRlKClgIGFuZCBkZXByZWNhdGVkIGAuaGlkZS10ZXh0KClgLgovLwovLyBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2NvbW1pdC9hYTAzOTZlYWU3NTcKCi8vIERlcHJlY2F0ZWQgYXMgb2YgdjMuMC4xICh3aWxsIGJlIHJlbW92ZWQgaW4gdjQpCi5oaWRlLXRleHQoKSB7CiAgZm9udDogfiIwLzAiIGE7CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIHRleHQtc2hhZG93OiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKfQoKLy8gTmV3IG1peGluIHRvIHVzZSBhcyBvZiB2My4wLjEKLnRleHQtaGlkZSgpIHsKICAuaGlkZS10ZXh0KCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/image.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gSW1hZ2UgTWl4aW5zCi8vIC0gUmVzcG9uc2l2ZSBpbWFnZQovLyAtIFJldGluYSBpbWFnZQoKCi8vIFJlc3BvbnNpdmUgaW1hZ2UKLy8KLy8gS2VlcCBpbWFnZXMgZnJvbSBzY2FsaW5nIGJleW9uZCB0aGUgd2lkdGggb2YgdGhlaXIgcGFyZW50cy4KLmltZy1yZXNwb25zaXZlKEBkaXNwbGF5OiBibG9jaykgewogIGRpc3BsYXk6IEBkaXNwbGF5OwogIHdpZHRoOiAxMDAlIFw5OyAvLyBGb3JjZSBJRTEwIGFuZCBiZWxvdyB0byBzaXplIFNWRyBpbWFnZXMgY29ycmVjdGx5CiAgbWF4LXdpZHRoOiAxMDAlOyAvLyBQYXJ0IDE6IFNldCBhIG1heGltdW0gcmVsYXRpdmUgdG8gdGhlIHBhcmVudAogIGhlaWdodDogYXV0bzsgLy8gUGFydCAyOiBTY2FsZSB0aGUgaGVpZ2h0IGFjY29yZGluZyB0byB0aGUgd2lkdGgsIG90aGVyd2lzZSB5b3UgZ2V0IHN0cmV0Y2hpbmcKfQoKCi8vIFJldGluYSBpbWFnZQovLwovLyBTaG9ydCByZXRpbmEgbWl4aW4gZm9yIHNldHRpbmcgYmFja2dyb3VuZC1pbWFnZSBhbmQgLXNpemUuIE5vdGUgdGhhdCB0aGUKLy8gc3BlbGxpbmcgb2YgYG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpb2AgaXMgaW50ZW50aW9uYWwuCi5pbWctcmV0aW5hKEBmaWxlLTF4OyBAZmlsZS0yeDsgQHdpZHRoLTF4OyBAaGVpZ2h0LTF4KSB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJAe2ZpbGUtMXh9Iik7CgogIEBtZWRpYQogIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwKICBvbmx5IHNjcmVlbiBhbmQgKCAgIG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksCiAgb25seSBzY3JlZW4gYW5kICggICAgIC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIvMSksCiAgb25seSBzY3JlZW4gYW5kICggICAgICAgIG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLAogIG9ubHkgc2NyZWVuIGFuZCAoICAgICAgICAgICAgICAgIG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLAogIG9ubHkgc2NyZWVuIGFuZCAoICAgICAgICAgICAgICAgIG1pbi1yZXNvbHV0aW9uOiAyZHBweCkgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJAe2ZpbGUtMnh9Iik7CiAgICBiYWNrZ3JvdW5kLXNpemU6IEB3aWR0aC0xeCBAaGVpZ2h0LTF4OwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/labels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTGFiZWxzCgoubGFiZWwtdmFyaWFudChAY29sb3IpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAY29sb3I7CiAgCiAgJltocmVmXSB7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihAY29sb3IsIDEwJSk7CiAgICB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/list-group.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTGlzdCBHcm91cHMKCi5saXN0LWdyb3VwLWl0ZW0tdmFyaWFudChAc3RhdGU7IEBiYWNrZ3JvdW5kOyBAY29sb3IpIHsKICAubGlzdC1ncm91cC1pdGVtLUB7c3RhdGV9IHsKICAgIGNvbG9yOiBAY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmFja2dyb3VuZDsKCiAgICBhJiB7CiAgICAgIGNvbG9yOiBAY29sb3I7CgogICAgICAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICB9CgogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQGNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihAYmFja2dyb3VuZCwgNSUpOwogICAgICB9CiAgICAgICYuYWN0aXZlLAogICAgICAmLmFjdGl2ZTpob3ZlciwKICAgICAgJi5hY3RpdmU6Zm9jdXMgewogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKICAgICAgICBib3JkZXItY29sb3I6IEBjb2xvcjsKICAgICAgfQogICAgfQogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/nav-divider.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gSG9yaXpvbnRhbCBkaXZpZGVycwovLwovLyBEaXZpZGVycyAoYmFzaWNhbGx5IGFuIGhyKSB3aXRoaW4gZHJvcGRvd25zIGFuZCBuYXYgbGlzdHMKCi5uYXYtZGl2aWRlcihAY29sb3I6ICNlNWU1ZTUpIHsKICBoZWlnaHQ6IDFweDsKICBtYXJnaW46ICgoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMikgLSAxKSAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYmFja2dyb3VuZC1jb2xvcjogQGNvbG9yOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/nav-vertical-align.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTmF2YmFyIHZlcnRpY2FsIGFsaWduCi8vCi8vIFZlcnRpY2FsbHkgY2VudGVyIGVsZW1lbnRzIGluIHRoZSBuYXZiYXIuCi8vIEV4YW1wbGU6IGFuIGVsZW1lbnQgaGFzIGEgaGVpZ2h0IG9mIDMwcHgsIHNvIHdyaXRlIG91dCBgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbigzMHB4KTtgIHRvIGNhbGN1bGF0ZSB0aGUgYXBwcm9wcmlhdGUgdG9wIG1hcmdpbi4KCi5uYXZiYXItdmVydGljYWwtYWxpZ24oQGVsZW1lbnQtaGVpZ2h0KSB7CiAgbWFyZ2luLXRvcDogKChAbmF2YmFyLWhlaWdodCAtIEBlbGVtZW50LWhlaWdodCkgLyAyKTsKICBtYXJnaW4tYm90dG9tOiAoKEBuYXZiYXItaGVpZ2h0IC0gQGVsZW1lbnQtaGVpZ2h0KSAvIDIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/opacity.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gT3BhY2l0eQoKLm9wYWNpdHkoQG9wYWNpdHkpIHsKICBvcGFjaXR5OiBAb3BhY2l0eTsKICAvLyBJRTggZmlsdGVyCiAgQG9wYWNpdHktaWU6IChAb3BhY2l0eSAqIDEwMCk7CiAgZmlsdGVyOiB+ImFscGhhKG9wYWNpdHk9QHtvcGFjaXR5LWllfSkiOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/pagination.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gUGFnaW5hdGlvbgoKLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy12ZXJ0aWNhbDsgQHBhZGRpbmctaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZTsgQGJvcmRlci1yYWRpdXMpIHsKICA+IGxpIHsKICAgID4gYSwKICAgID4gc3BhbiB7CiAgICAgIHBhZGRpbmc6IEBwYWRkaW5nLXZlcnRpY2FsIEBwYWRkaW5nLWhvcml6b250YWw7CiAgICAgIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZTsKICAgIH0KICAgICY6Zmlyc3QtY2hpbGQgewogICAgICA+IGEsCiAgICAgID4gc3BhbiB7CiAgICAgICAgLmJvcmRlci1sZWZ0LXJhZGl1cyhAYm9yZGVyLXJhZGl1cyk7CiAgICAgIH0KICAgIH0KICAgICY6bGFzdC1jaGlsZCB7CiAgICAgID4gYSwKICAgICAgPiBzcGFuIHsKICAgICAgICAuYm9yZGVyLXJpZ2h0LXJhZGl1cyhAYm9yZGVyLXJhZGl1cyk7CiAgICAgIH0KICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/panels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gUGFuZWxzCgoucGFuZWwtdmFyaWFudChAYm9yZGVyOyBAaGVhZGluZy10ZXh0LWNvbG9yOyBAaGVhZGluZy1iZy1jb2xvcjsgQGhlYWRpbmctYm9yZGVyKSB7CiAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyOwoKICAmID4gLnBhbmVsLWhlYWRpbmcgewogICAgY29sb3I6IEBoZWFkaW5nLXRleHQtY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaGVhZGluZy1iZy1jb2xvcjsKICAgIGJvcmRlci1jb2xvcjogQGhlYWRpbmctYm9yZGVyOwoKICAgICsgLnBhbmVsLWNvbGxhcHNlID4gLnBhbmVsLWJvZHkgewogICAgICBib3JkZXItdG9wLWNvbG9yOiBAYm9yZGVyOwogICAgfQogICAgLmJhZGdlIHsKICAgICAgY29sb3I6IEBoZWFkaW5nLWJnLWNvbG9yOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAaGVhZGluZy10ZXh0LWNvbG9yOwogICAgfQogIH0KICAmID4gLnBhbmVsLWZvb3RlciB7CiAgICArIC5wYW5lbC1jb2xsYXBzZSA+IC5wYW5lbC1ib2R5IHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQGJvcmRlcjsKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/progress-bar.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gUHJvZ3Jlc3MgYmFycwoKLnByb2dyZXNzLWJhci12YXJpYW50KEBjb2xvcikgewogIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKCiAgLy8gRGVwcmVjYXRlZCBwYXJlbnQgY2xhc3MgcmVxdWlyZW1lbnQgYXMgb2YgdjMuMi4wCiAgLnByb2dyZXNzLXN0cmlwZWQgJiB7CiAgICAjZ3JhZGllbnQgPiAuc3RyaXBlZCgpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/reset-filter.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gUmVzZXQgZmlsdGVycyBmb3IgSUUKLy8KLy8gV2hlbiB5b3UgbmVlZCB0byByZW1vdmUgYSBncmFkaWVudCBiYWNrZ3JvdW5kLCBkbyBub3QgZm9yZ2V0IHRvIHVzZSB0aGlzIHRvIHJlc2V0Ci8vIHRoZSBJRSBmaWx0ZXIgZm9yIElFOSBhbmQgYmVsb3cuCgoucmVzZXQtZmlsdGVyKCkgewogIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKSIpKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/resize.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gUmVzaXplIGFueXRoaW5nCgoucmVzaXphYmxlKEBkaXJlY3Rpb24pIHsKICByZXNpemU6IEBkaXJlY3Rpb247IC8vIE9wdGlvbnM6IGhvcml6b250YWwsIHZlcnRpY2FsLCBib3RoCiAgb3ZlcmZsb3c6IGF1dG87IC8vIFBlciBDU1MzIFVJLCBgcmVzaXplYCBvbmx5IGFwcGxpZXMgd2hlbiBgb3ZlcmZsb3dgIGlzbid0IGB2aXNpYmxlYAp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/responsive-visibility.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gUmVzcG9uc2l2ZSB1dGlsaXRpZXMKCi8vCi8vIE1vcmUgZWFzaWx5IGluY2x1ZGUgYWxsIHRoZSBzdGF0ZXMgZm9yIHJlc3BvbnNpdmUtdXRpbGl0aWVzLmxlc3MuCi5yZXNwb25zaXZlLXZpc2liaWxpdHkoKSB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB0YWJsZSYgIHsgZGlzcGxheTogdGFibGU7IH0KICB0ciYgICAgIHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH0KICB0aCYsCiAgdGQmICAgICB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfQp9CgoucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/size.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gU2l6aW5nIHNob3J0Y3V0cwoKLnNpemUoQHdpZHRoOyBAaGVpZ2h0KSB7CiAgd2lkdGg6IEB3aWR0aDsKICBoZWlnaHQ6IEBoZWlnaHQ7Cn0KCi5zcXVhcmUoQHNpemUpIHsKICAuc2l6ZShAc2l6ZTsgQHNpemUpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/tab-focus.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gV2ViS2l0LXN0eWxlIGZvY3VzCgoudGFiLWZvY3VzKCkgewogIC8vIERlZmF1bHQKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKICAvLyBXZWJLaXQKICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7CiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/table-row.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gVGFibGVzCgoudGFibGUtcm93LXZhcmlhbnQoQHN0YXRlOyBAYmFja2dyb3VuZCkgewogIC8vIEV4YWN0IHNlbGVjdG9ycyBiZWxvdyByZXF1aXJlZCB0byBvdmVycmlkZSBgLnRhYmxlLXN0cmlwZWRgIGFuZCBwcmV2ZW50CiAgLy8gaW5oZXJpdGFuY2UgdG8gbmVzdGVkIHRhYmxlcy4KICAudGFibGUgPiB0aGVhZCA+IHRyLAogIC50YWJsZSA+IHRib2R5ID4gdHIsCiAgLnRhYmxlID4gdGZvb3QgPiB0ciB7CiAgICA+IHRkLkB7c3RhdGV9LAogICAgPiB0aC5Ae3N0YXRlfSwKICAgICYuQHtzdGF0ZX0gPiB0ZCwKICAgICYuQHtzdGF0ZX0gPiB0aCB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kOwogICAgfQogIH0KCiAgLy8gSG92ZXIgc3RhdGVzIGZvciBgLnRhYmxlLWhvdmVyYAogIC8vIE5vdGU6IHRoaXMgaXMgbm90IGF2YWlsYWJsZSBmb3IgY2VsbHMgb3Igcm93cyB3aXRoaW4gYHRoZWFkYCBvciBgdGZvb3RgLgogIC50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgewogICAgPiB0ZC5Ae3N0YXRlfTpob3ZlciwKICAgID4gdGguQHtzdGF0ZX06aG92ZXIsCiAgICAmLkB7c3RhdGV9OmhvdmVyID4gdGQsCiAgICAmOmhvdmVyID4gLkB7c3RhdGV9LAogICAgJi5Ae3N0YXRlfTpob3ZlciA+IHRoIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKEBiYWNrZ3JvdW5kLCA1JSk7CiAgICB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/text-emphasis.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gVHlwb2dyYXBoeQoKLnRleHQtZW1waGFzaXMtdmFyaWFudChAY29sb3IpIHsKICBjb2xvcjogQGNvbG9yOwogIGEmOmhvdmVyIHsKICAgIGNvbG9yOiBkYXJrZW4oQGNvbG9yLCAxMCUpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/text-overflow.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gVGV4dCBvdmVyZmxvdwovLyBSZXF1aXJlcyBpbmxpbmUtYmxvY2sgb3IgYmxvY2sgZm9yIHByb3BlciBzdHlsaW5nCgoudGV4dC1vdmVyZmxvdygpIHsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/mixins/vendor-prefixes.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gVmVuZG9yIFByZWZpeGVzCi8vCi8vIEFsbCB2ZW5kb3IgbWl4aW5zIGFyZSBkZXByZWNhdGVkIGFzIG9mIHYzLjIuMCBkdWUgdG8gdGhlIGludHJvZHVjdGlvbiBvZgovLyBBdXRvcHJlZml4ZXIgaW4gb3VyIEdydW50ZmlsZS4gVGhleSB3aWxsIGJlIHJlbW92ZWQgaW4gdjQuCgovLyAtIEFuaW1hdGlvbnMKLy8gLSBCYWNrZmFjZSB2aXNpYmlsaXR5Ci8vIC0gQm94IHNoYWRvdwovLyAtIEJveCBzaXppbmcKLy8gLSBDb250ZW50IGNvbHVtbnMKLy8gLSBIeXBoZW5zCi8vIC0gUGxhY2Vob2xkZXIgdGV4dAovLyAtIFRyYW5zZm9ybWF0aW9ucwovLyAtIFRyYW5zaXRpb25zCi8vIC0gVXNlciBTZWxlY3QKCgovLyBBbmltYXRpb25zCi5hbmltYXRpb24oQGFuaW1hdGlvbikgewogIC13ZWJraXQtYW5pbWF0aW9uOiBAYW5pbWF0aW9uOwogICAgICAgLW8tYW5pbWF0aW9uOiBAYW5pbWF0aW9uOwogICAgICAgICAgYW5pbWF0aW9uOiBAYW5pbWF0aW9uOwp9Ci5hbmltYXRpb24tbmFtZShAbmFtZSkgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IEBuYW1lOwogICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IEBuYW1lOwp9Ci5hbmltYXRpb24tZHVyYXRpb24oQGR1cmF0aW9uKSB7CiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IEBkdXJhdGlvbjsKICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogQGR1cmF0aW9uOwp9Ci5hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKEB0aW1pbmctZnVuY3Rpb24pIHsKICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IEB0aW1pbmctZnVuY3Rpb247CiAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBAdGltaW5nLWZ1bmN0aW9uOwp9Ci5hbmltYXRpb24tZGVsYXkoQGRlbGF5KSB7CiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IEBkZWxheTsKICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogQGRlbGF5Owp9Ci5hbmltYXRpb24taXRlcmF0aW9uLWNvdW50KEBpdGVyYXRpb24tY291bnQpIHsKICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IEBpdGVyYXRpb24tY291bnQ7CiAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBAaXRlcmF0aW9uLWNvdW50Owp9Ci5hbmltYXRpb24tZGlyZWN0aW9uKEBkaXJlY3Rpb24pIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246IEBkaXJlY3Rpb247CiAgICAgICAgICBhbmltYXRpb24tZGlyZWN0aW9uOiBAZGlyZWN0aW9uOwp9Ci5hbmltYXRpb24tZmlsbC1tb2RlKEBmaWxsLW1vZGUpIHsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IEBmaWxsLW1vZGU7CiAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBAZmlsbC1tb2RlOwp9CgovLyBCYWNrZmFjZSB2aXNpYmlsaXR5Ci8vIFByZXZlbnQgYnJvd3NlcnMgZnJvbSBmbGlja2VyaW5nIHdoZW4gdXNpbmcgQ1NTIDNEIHRyYW5zZm9ybXMuCi8vIERlZmF1bHQgdmFsdWUgaXMgYHZpc2libGVgLCBidXQgY2FuIGJlIGNoYW5nZWQgdG8gYGhpZGRlbmAKCi5iYWNrZmFjZS12aXNpYmlsaXR5KEB2aXNpYmlsaXR5KXsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IEB2aXNpYmlsaXR5OwogICAgIC1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTogQHZpc2liaWxpdHk7CiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBAdmlzaWJpbGl0eTsKfQoKLy8gRHJvcCBzaGFkb3dzCi8vCi8vIE5vdGU6IERlcHJlY2F0ZWQgYC5ib3gtc2hhZG93KClgIGFzIG9mIHYzLjEuMCBzaW5jZSBhbGwgb2YgQm9vdHN0cmFwJ3MKLy8gc3VwcG9ydGVkIGJyb3dzZXJzIHRoYXQgaGF2ZSBib3ggc2hhZG93IGNhcGFiaWxpdGllcyBub3cgc3VwcG9ydCBpdC4KCi5ib3gtc2hhZG93KEBzaGFkb3cpIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IEBzaGFkb3c7IC8vIGlPUyA8NC4zICYgQW5kcm9pZCA8NC4xCiAgICAgICAgICBib3gtc2hhZG93OiBAc2hhZG93Owp9CgovLyBCb3ggc2l6aW5nCi5ib3gtc2l6aW5nKEBib3htb2RlbCkgewogIC13ZWJraXQtYm94LXNpemluZzogQGJveG1vZGVsOwogICAgIC1tb3otYm94LXNpemluZzogQGJveG1vZGVsOwogICAgICAgICAgYm94LXNpemluZzogQGJveG1vZGVsOwp9CgovLyBDU1MzIENvbnRlbnQgQ29sdW1ucwouY29udGVudC1jb2x1bW5zKEBjb2x1bW4tY291bnQ7IEBjb2x1bW4tZ2FwOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICAtd2Via2l0LWNvbHVtbi1jb3VudDogQGNvbHVtbi1jb3VudDsKICAgICAtbW96LWNvbHVtbi1jb3VudDogQGNvbHVtbi1jb3VudDsKICAgICAgICAgIGNvbHVtbi1jb3VudDogQGNvbHVtbi1jb3VudDsKICAtd2Via2l0LWNvbHVtbi1nYXA6IEBjb2x1bW4tZ2FwOwogICAgIC1tb3otY29sdW1uLWdhcDogQGNvbHVtbi1nYXA7CiAgICAgICAgICBjb2x1bW4tZ2FwOiBAY29sdW1uLWdhcDsKfQoKLy8gT3B0aW9uYWwgaHlwaGVuYXRpb24KLmh5cGhlbnMoQG1vZGU6IGF1dG8pIHsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgLXdlYmtpdC1oeXBoZW5zOiBAbW9kZTsKICAgICAtbW96LWh5cGhlbnM6IEBtb2RlOwogICAgICAtbXMtaHlwaGVuczogQG1vZGU7IC8vIElFMTArCiAgICAgICAtby1oeXBoZW5zOiBAbW9kZTsKICAgICAgICAgIGh5cGhlbnM6IEBtb2RlOwp9CgovLyBQbGFjZWhvbGRlciB0ZXh0Ci5wbGFjZWhvbGRlcihAY29sb3I6IEBpbnB1dC1jb2xvci1wbGFjZWhvbGRlcikgewogICY6Oi1tb3otcGxhY2Vob2xkZXIgICAgICAgICAgIHsgY29sb3I6IEBjb2xvcjsgICAvLyBGaXJlZm94CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOyB9IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMTUyNgogICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyICAgICAgIHsgY29sb3I6IEBjb2xvcjsgfSAvLyBJbnRlcm5ldCBFeHBsb3JlciAxMCsKICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyICB7IGNvbG9yOiBAY29sb3I7IH0gLy8gU2FmYXJpIGFuZCBDaHJvbWUKfQoKLy8gVHJhbnNmb3JtYXRpb25zCi5zY2FsZShAcmF0aW8pIHsKICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoQHJhdGlvKTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoQHJhdGlvKTsgLy8gSUU5IG9ubHkKICAgICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoQHJhdGlvKTsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoQHJhdGlvKTsKfQouc2NhbGUoQHJhdGlvWDsgQHJhdGlvWSkgewogIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZShAcmF0aW9YLCBAcmF0aW9ZKTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoQHJhdGlvWCwgQHJhdGlvWSk7IC8vIElFOSBvbmx5CiAgICAgICAtby10cmFuc2Zvcm06IHNjYWxlKEByYXRpb1gsIEByYXRpb1kpOwogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZShAcmF0aW9YLCBAcmF0aW9ZKTsKfQouc2NhbGVYKEByYXRpbykgewogIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoQHJhdGlvKTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGVYKEByYXRpbyk7IC8vIElFOSBvbmx5CiAgICAgICAtby10cmFuc2Zvcm06IHNjYWxlWChAcmF0aW8pOwogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoQHJhdGlvKTsKfQouc2NhbGVZKEByYXRpbykgewogIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoQHJhdGlvKTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2NhbGVZKEByYXRpbyk7IC8vIElFOSBvbmx5CiAgICAgICAtby10cmFuc2Zvcm06IHNjYWxlWShAcmF0aW8pOwogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoQHJhdGlvKTsKfQouc2tldyhAeDsgQHkpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogc2tld1goQHgpIHNrZXdZKEB5KTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2tld1goQHgpIHNrZXdZKEB5KTsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvNDg4NTsgSUU5KwogICAgICAgLW8tdHJhbnNmb3JtOiBza2V3WChAeCkgc2tld1koQHkpOwogICAgICAgICAgdHJhbnNmb3JtOiBza2V3WChAeCkgc2tld1koQHkpOwp9Ci50cmFuc2xhdGUoQHg7IEB5KSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZShAeCwgQHkpOwogICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoQHgsIEB5KTsgLy8gSUU5IG9ubHkKICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKEB4LCBAeSk7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShAeCwgQHkpOwp9Ci50cmFuc2xhdGUzZChAeDsgQHk7IEB6KSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKEB4LCBAeSwgQHopOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZChAeCwgQHksIEB6KTsKfQoucm90YXRlKEBkZWdyZWVzKSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZShAZGVncmVlcyk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZShAZGVncmVlcyk7IC8vIElFOSBvbmx5CiAgICAgICAtby10cmFuc2Zvcm06IHJvdGF0ZShAZGVncmVlcyk7CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZShAZGVncmVlcyk7Cn0KLnJvdGF0ZVgoQGRlZ3JlZXMpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWChAZGVncmVlcyk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoQGRlZ3JlZXMpOyAvLyBJRTkgb25seQogICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGVYKEBkZWdyZWVzKTsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWChAZGVncmVlcyk7Cn0KLnJvdGF0ZVkoQGRlZ3JlZXMpIHsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWShAZGVncmVlcyk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVkoQGRlZ3JlZXMpOyAvLyBJRTkgb25seQogICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGVZKEBkZWdyZWVzKTsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWShAZGVncmVlcyk7Cn0KLnBlcnNwZWN0aXZlKEBwZXJzcGVjdGl2ZSkgewogIC13ZWJraXQtcGVyc3BlY3RpdmU6IEBwZXJzcGVjdGl2ZTsKICAgICAtbW96LXBlcnNwZWN0aXZlOiBAcGVyc3BlY3RpdmU7CiAgICAgICAgICBwZXJzcGVjdGl2ZTogQHBlcnNwZWN0aXZlOwp9Ci5wZXJzcGVjdGl2ZS1vcmlnaW4oQHBlcnNwZWN0aXZlKSB7CiAgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IEBwZXJzcGVjdGl2ZTsKICAgICAtbW96LXBlcnNwZWN0aXZlLW9yaWdpbjogQHBlcnNwZWN0aXZlOwogICAgICAgICAgcGVyc3BlY3RpdmUtb3JpZ2luOiBAcGVyc3BlY3RpdmU7Cn0KLnRyYW5zZm9ybS1vcmlnaW4oQG9yaWdpbikgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogQG9yaWdpbjsKICAgICAtbW96LXRyYW5zZm9ybS1vcmlnaW46IEBvcmlnaW47CiAgICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBAb3JpZ2luOyAvLyBJRTkgb25seQogICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogQG9yaWdpbjsKfQoKCi8vIFRyYW5zaXRpb25zCgoudHJhbnNpdGlvbihAdHJhbnNpdGlvbikgewogIC13ZWJraXQtdHJhbnNpdGlvbjogQHRyYW5zaXRpb247CiAgICAgICAtby10cmFuc2l0aW9uOiBAdHJhbnNpdGlvbjsKICAgICAgICAgIHRyYW5zaXRpb246IEB0cmFuc2l0aW9uOwp9Ci50cmFuc2l0aW9uLXByb3BlcnR5KEB0cmFuc2l0aW9uLXByb3BlcnR5KSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBAdHJhbnNpdGlvbi1wcm9wZXJ0eTsKICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IEB0cmFuc2l0aW9uLXByb3BlcnR5Owp9Ci50cmFuc2l0aW9uLWRlbGF5KEB0cmFuc2l0aW9uLWRlbGF5KSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiBAdHJhbnNpdGlvbi1kZWxheTsKICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IEB0cmFuc2l0aW9uLWRlbGF5Owp9Ci50cmFuc2l0aW9uLWR1cmF0aW9uKEB0cmFuc2l0aW9uLWR1cmF0aW9uKSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiBAdHJhbnNpdGlvbi1kdXJhdGlvbjsKICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IEB0cmFuc2l0aW9uLWR1cmF0aW9uOwp9Ci50cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbihAdGltaW5nLWZ1bmN0aW9uKSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogQHRpbWluZy1mdW5jdGlvbjsKICAgICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBAdGltaW5nLWZ1bmN0aW9uOwp9Ci50cmFuc2l0aW9uLXRyYW5zZm9ybShAdHJhbnNpdGlvbikgewogIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gQHRyYW5zaXRpb247CiAgICAgLW1vei10cmFuc2l0aW9uOiAtbW96LXRyYW5zZm9ybSBAdHJhbnNpdGlvbjsKICAgICAgIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSBAdHJhbnNpdGlvbjsKICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSBAdHJhbnNpdGlvbjsKfQoKCi8vIFVzZXIgc2VsZWN0Ci8vIEZvciBzZWxlY3RpbmcgdGV4dCBvbiB0aGUgcGFnZQoKLnVzZXItc2VsZWN0KEBzZWxlY3QpIHsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBAc2VsZWN0OwogICAgIC1tb3otdXNlci1zZWxlY3Q6IEBzZWxlY3Q7CiAgICAgIC1tcy11c2VyLXNlbGVjdDogQHNlbGVjdDsgLy8gSUUxMCsKICAgICAgICAgIHVzZXItc2VsZWN0OiBAc2VsZWN0Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/modals.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTW9kYWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyAubW9kYWwtb3BlbiAgICAgIC0gYm9keSBjbGFzcyBmb3Iga2lsbGluZyB0aGUgc2Nyb2xsCi8vIC5tb2RhbCAgICAgICAgICAgLSBjb250YWluZXIgdG8gc2Nyb2xsIHdpdGhpbgovLyAubW9kYWwtZGlhbG9nICAgIC0gcG9zaXRpb25pbmcgc2hlbGwgZm9yIHRoZSBhY3R1YWwgbW9kYWwKLy8gLm1vZGFsLWNvbnRlbnQgICAtIGFjdHVhbCBtb2RhbCB3LyBiZyBhbmQgY29ybmVycyBhbmQgc2hpdAoKLy8gS2lsbCB0aGUgc2Nyb2xsIG9uIHRoZSBib2R5Ci5tb2RhbC1vcGVuIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgovLyBDb250YWluZXIgdGhhdCB0aGUgbW9kYWwgc2Nyb2xscyB3aXRoaW4KLm1vZGFsIHsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LW1vZGFsOwogIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCiAgLy8gUHJldmVudCBDaHJvbWUgb24gV2luZG93cyBmcm9tIGFkZGluZyBhIGZvY3VzIG91dGxpbmUuIEZvciBkZXRhaWxzLCBzZWUKICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMDk1MS4KICBvdXRsaW5lOiAwOwoKICAvLyBXaGVuIGZhZGluZyBpbiB0aGUgbW9kYWwsIGFuaW1hdGUgaXQgdG8gc2xpZGUgZG93bgogICYuZmFkZSAubW9kYWwtZGlhbG9nIHsKICAgIC50cmFuc2xhdGUzZCgwLCAtMjUlLCAwKTsKICAgIC50cmFuc2l0aW9uLXRyYW5zZm9ybSh+IjAuM3MgZWFzZS1vdXQiKTsKICB9CiAgJi5pbiAubW9kYWwtZGlhbG9nIHsgLnRyYW5zbGF0ZTNkKDAsIDAsIDApIH0KfQoubW9kYWwtb3BlbiAubW9kYWwgewogIG92ZXJmbG93LXg6IGhpZGRlbjsKICBvdmVyZmxvdy15OiBhdXRvOwp9CgovLyBTaGVsbCBkaXYgdG8gcG9zaXRpb24gdGhlIG1vZGFsIHdpdGggYm90dG9tIHBhZGRpbmcKLm1vZGFsLWRpYWxvZyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiBhdXRvOwogIG1hcmdpbjogMTBweDsKfQoKLy8gQWN0dWFsIG1vZGFsCi5tb2RhbC1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgYmFja2dyb3VuZC1jb2xvcjogQG1vZGFsLWNvbnRlbnQtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgQG1vZGFsLWNvbnRlbnQtZmFsbGJhY2stYm9yZGVyLWNvbG9yOyAvL29sZCBicm93c2VycyBmYWxsYmFjayAoaWU4IGV0YykKICBib3JkZXI6IDFweCBzb2xpZCBAbW9kYWwtY29udGVudC1ib3JkZXItY29sb3I7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtbGFyZ2U7CiAgLmJveC1zaGFkb3coMCAzcHggOXB4IHJnYmEoMCwwLDAsLjUpKTsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIC8vIFJlbW92ZSBmb2N1cyBvdXRsaW5lIGZyb20gb3BlbmVkIG1vZGFsCiAgb3V0bGluZTogMDsKfQoKLy8gTW9kYWwgYmFja2dyb3VuZAoubW9kYWwtYmFja2Ryb3AgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogQHppbmRleC1tb2RhbC1iYWNrZ3JvdW5kOwogIGJhY2tncm91bmQtY29sb3I6IEBtb2RhbC1iYWNrZHJvcC1iZzsKICAvLyBGYWRlIGZvciBiYWNrZHJvcAogICYuZmFkZSB7IC5vcGFjaXR5KDApOyB9CiAgJi5pbiB7IC5vcGFjaXR5KEBtb2RhbC1iYWNrZHJvcC1vcGFjaXR5KTsgfQp9CgovLyBNb2RhbCBoZWFkZXIKLy8gVG9wIHNlY3Rpb24gb2YgdGhlIG1vZGFsIHcvIHRpdGxlIGFuZCBkaXNtaXNzCi5tb2RhbC1oZWFkZXIgewogIHBhZGRpbmc6IEBtb2RhbC10aXRsZS1wYWRkaW5nOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjsKICBtaW4taGVpZ2h0OiAoQG1vZGFsLXRpdGxlLXBhZGRpbmcgKyBAbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQpOwp9Ci8vIENsb3NlIGljb24KLm1vZGFsLWhlYWRlciAuY2xvc2UgewogIG1hcmdpbi10b3A6IC0ycHg7Cn0KCi8vIFRpdGxlIHRleHQgd2l0aGluIGhlYWRlcgoubW9kYWwtdGl0bGUgewogIG1hcmdpbjogMDsKICBsaW5lLWhlaWdodDogQG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0Owp9CgovLyBNb2RhbCBib2R5Ci8vIFdoZXJlIGFsbCBtb2RhbCBjb250ZW50IHJlc2lkZXMgKHNpYmxpbmcgb2YgLm1vZGFsLWhlYWRlciBhbmQgLm1vZGFsLWZvb3RlcikKLm1vZGFsLWJvZHkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiBAbW9kYWwtaW5uZXItcGFkZGluZzsKfQoKLy8gRm9vdGVyIChmb3IgYWN0aW9ucykKLm1vZGFsLWZvb3RlciB7CiAgcGFkZGluZzogQG1vZGFsLWlubmVyLXBhZGRpbmc7CiAgdGV4dC1hbGlnbjogcmlnaHQ7IC8vIHJpZ2h0IGFsaWduIGJ1dHRvbnMKICBib3JkZXItdG9wOiAxcHggc29saWQgQG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I7CiAgJjpleHRlbmQoLmNsZWFyZml4IGFsbCk7IC8vIGNsZWFyIGl0IGluIGNhc2UgZm9sa3MgdXNlIC5wdWxsLSogY2xhc3NlcyBvbiBidXR0b25zCgogIC8vIFByb3Blcmx5IHNwYWNlIG91dCBidXR0b25zCiAgLmJ0biArIC5idG4gewogICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgIG1hcmdpbi1ib3R0b206IDA7IC8vIGFjY291bnQgZm9yIGlucHV0W3R5cGU9InN1Ym1pdCJdIHdoaWNoIGdldHMgdGhlIGJvdHRvbSBtYXJnaW4gbGlrZSBhbGwgb3RoZXIgaW5wdXRzCiAgfQogIC8vIGJ1dCBvdmVycmlkZSB0aGF0IGZvciBidXR0b24gZ3JvdXBzCiAgLmJ0bi1ncm91cCAuYnRuICsgLmJ0biB7CiAgICBtYXJnaW4tbGVmdDogLTFweDsKICB9CiAgLy8gYW5kIG92ZXJyaWRlIGl0IGZvciBibG9jayBidXR0b25zIGFzIHdlbGwKICAuYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9Cn0KCi8vIE1lYXN1cmUgc2Nyb2xsYmFyIHdpZHRoIGZvciBwYWRkaW5nIGJvZHkgZHVyaW5nIG1vZGFsIHNob3cvaGlkZQoubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC05OTk5cHg7CiAgd2lkdGg6IDUwcHg7CiAgaGVpZ2h0OiA1MHB4OwogIG92ZXJmbG93OiBzY3JvbGw7Cn0KCi8vIFNjYWxlIHVwIHRoZSBtb2RhbApAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAvLyBBdXRvbWF0aWNhbGx5IHNldCBtb2RhbCdzIHdpZHRoIGZvciBsYXJnZXIgdmlld3BvcnRzCiAgLm1vZGFsLWRpYWxvZyB7CiAgICB3aWR0aDogQG1vZGFsLW1kOwogICAgbWFyZ2luOiAzMHB4IGF1dG87CiAgfQogIC5tb2RhbC1jb250ZW50IHsKICAgIC5ib3gtc2hhZG93KDAgNXB4IDE1cHggcmdiYSgwLDAsMCwuNSkpOwogIH0KCiAgLy8gTW9kYWwgc2l6ZXMKICAubW9kYWwtc20geyB3aWR0aDogQG1vZGFsLXNtOyB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgewogIC5tb2RhbC1sZyB7IHdpZHRoOiBAbW9kYWwtbGc7IH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/navbar.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTmF2YmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIFdyYXBwZXIgYW5kIGJhc2UgY2xhc3MKLy8KLy8gUHJvdmlkZSBhIHN0YXRpYyBuYXZiYXIgZnJvbSB3aGljaCB3ZSBleHBhbmQgdG8gY3JlYXRlIGZ1bGwtd2lkdGgsIGZpeGVkLCBhbmQKLy8gb3RoZXIgbmF2YmFyIHZhcmlhdGlvbnMuCgoubmF2YmFyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWluLWhlaWdodDogQG5hdmJhci1oZWlnaHQ7IC8vIEVuc3VyZSBhIG5hdmJhciBhbHdheXMgc2hvd3MgKGUuZy4sIHdpdGhvdXQgYSAubmF2YmFyLWJyYW5kIGluIGNvbGxhcHNlZCBtb2RlKQogIG1hcmdpbi1ib3R0b206IEBuYXZiYXItbWFyZ2luLWJvdHRvbTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKCiAgLy8gUHJldmVudCBmbG9hdHMgZnJvbSBicmVha2luZyB0aGUgbmF2YmFyCiAgJjpleHRlbmQoLmNsZWFyZml4IGFsbCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBib3JkZXItcmFkaXVzOiBAbmF2YmFyLWJvcmRlci1yYWRpdXM7CiAgfQp9CgoKLy8gTmF2YmFyIGhlYWRpbmcKLy8KLy8gR3JvdXBzIGAubmF2YmFyLWJyYW5kYCBhbmQgYC5uYXZiYXItdG9nZ2xlYCBpbnRvIGEgc2luZ2xlIGNvbXBvbmVudCBmb3IgZWFzeQovLyBzdHlsaW5nIG9mIHJlc3BvbnNpdmUgYXNwZWN0cy4KCi5uYXZiYXItaGVhZGVyIHsKICAmOmV4dGVuZCguY2xlYXJmaXggYWxsKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIGZsb2F0OiBsZWZ0OwogIH0KfQoKCi8vIE5hdmJhciBjb2xsYXBzZSAoYm9keSkKLy8KLy8gR3JvdXAgeW91ciBuYXZiYXIgY29udGVudCBpbnRvIHRoaXMgZm9yIGVhc3kgY29sbGFwc2luZyBhbmQgZXhwYW5kaW5nIGFjcm9zcwovLyB2YXJpb3VzIGRldmljZSBzaXplcy4gQnkgZGVmYXVsdCwgdGhpcyBjb250ZW50IGlzIGNvbGxhcHNlZCB3aGVuIDw3NjhweCwgYnV0Ci8vIHdpbGwgZXhwYW5kIHBhc3QgdGhhdCBmb3IgYSBob3Jpem9udGFsIGRpc3BsYXkuCi8vCi8vIFRvIHN0YXJ0IChvbiBtb2JpbGUgZGV2aWNlcykgdGhlIG5hdmJhciBsaW5rcywgZm9ybXMsIGFuZCBidXR0b25zIGFyZSBzdGFja2VkCi8vIHZlcnRpY2FsbHkgYW5kIGluY2x1ZGUgYSBgbWF4LWhlaWdodGAgdG8gb3ZlcmZsb3cgaW4gY2FzZSB5b3UgaGF2ZSB0b28gbXVjaAovLyBjb250ZW50IGZvciB0aGUgdXNlcidzIHZpZXdwb3J0LgoKLm5hdmJhci1jb2xsYXBzZSB7CiAgb3ZlcmZsb3cteDogdmlzaWJsZTsKICBwYWRkaW5nLXJpZ2h0OiBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBwYWRkaW5nLWxlZnQ6ICBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKTsKICAmOmV4dGVuZCguY2xlYXJmaXggYWxsKTsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CgogICYuaW4gewogICAgb3ZlcmZsb3cteTogYXV0bzsKICB9CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICB3aWR0aDogYXV0bzsKICAgIGJvcmRlci10b3A6IDA7CiAgICBib3gtc2hhZG93OiBub25lOwoKICAgICYuY29sbGFwc2UgewogICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgcGFkZGluZy1ib3R0b206IDA7IC8vIE92ZXJyaWRlIGRlZmF1bHQgc2V0dGluZwogICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgfQoKICAgICYuaW4gewogICAgICBvdmVyZmxvdy15OiB2aXNpYmxlOwogICAgfQoKICAgIC8vIFVuZG8gdGhlIGNvbGxhcHNlIHNpZGUgcGFkZGluZyBmb3IgbmF2YmFycyB3aXRoIGNvbnRhaW5lcnMgdG8gZW5zdXJlCiAgICAvLyBhbGlnbm1lbnQgb2YgcmlnaHQtYWxpZ25lZCBjb250ZW50cy4KICAgIC5uYXZiYXItZml4ZWQtdG9wICYsCiAgICAubmF2YmFyLXN0YXRpYy10b3AgJiwKICAgIC5uYXZiYXItZml4ZWQtYm90dG9tICYgewogICAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICB9CiAgfQp9CgoubmF2YmFyLWZpeGVkLXRvcCwKLm5hdmJhci1maXhlZC1ib3R0b20gewogIC5uYXZiYXItY29sbGFwc2UgewogICAgbWF4LWhlaWdodDogQG5hdmJhci1jb2xsYXBzZS1tYXgtaGVpZ2h0OwoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1pbikgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7CiAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgfQogIH0KfQoKCi8vIEJvdGggbmF2YmFyIGhlYWRlciBhbmQgY29sbGFwc2UKLy8KLy8gV2hlbiBhIGNvbnRhaW5lciBpcyBwcmVzZW50LCBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBoZWFkZXIgYW5kIGNvbGxhcHNlLgoKLmNvbnRhaW5lciwKLmNvbnRhaW5lci1mbHVpZCB7CiAgPiAubmF2YmFyLWhlYWRlciwKICA+IC5uYXZiYXItY29sbGFwc2UgewogICAgbWFyZ2luLXJpZ2h0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgICBtYXJnaW4tbGVmdDogIC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKCiAgICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAgIG1hcmdpbi1sZWZ0OiAgMDsKICAgIH0KICB9Cn0KCgovLwovLyBOYXZiYXIgYWxpZ25tZW50IG9wdGlvbnMKLy8KLy8gRGlzcGxheSB0aGUgbmF2YmFyIGFjcm9zcyB0aGUgZW50aXJldHkgb2YgdGhlIHBhZ2Ugb3IgZml4ZWQgaXQgdG8gdGhlIHRvcCBvcgovLyBib3R0b20gb2YgdGhlIHBhZ2UuCgovLyBTdGF0aWMgdG9wICh1bmZpeGVkLCBidXQgMTAwJSB3aWRlKSBuYXZiYXIKLm5hdmJhci1zdGF0aWMtdG9wIHsKICB6LWluZGV4OiBAemluZGV4LW5hdmJhcjsKICBib3JkZXItd2lkdGg6IDAgMCAxcHg7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQoKLy8gRml4IHRoZSB0b3AvYm90dG9tIG5hdmJhcnMgd2hlbiBzY3JlZW4gcmVhbCBlc3RhdGUgc3VwcG9ydHMgaXQKLm5hdmJhci1maXhlZC10b3AsCi5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LW5hdmJhci1maXhlZDsKICAudHJhbnNsYXRlM2QoMCwgMCwgMCk7CgogIC8vIFVuZG8gdGhlIHJvdW5kZWQgY29ybmVycwogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQoubmF2YmFyLWZpeGVkLXRvcCB7CiAgdG9wOiAwOwogIGJvcmRlci13aWR0aDogMCAwIDFweDsKfQoubmF2YmFyLWZpeGVkLWJvdHRvbSB7CiAgYm90dG9tOiAwOwogIG1hcmdpbi1ib3R0b206IDA7IC8vIG92ZXJyaWRlIC5uYXZiYXIgZGVmYXVsdHMKICBib3JkZXItd2lkdGg6IDFweCAwIDA7Cn0KCgovLyBCcmFuZC9wcm9qZWN0IG5hbWUKCi5uYXZiYXItYnJhbmQgewogIGZsb2F0OiBsZWZ0OwogIHBhZGRpbmc6IEBuYXZiYXItcGFkZGluZy12ZXJ0aWNhbCBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBmb250LXNpemU6IEBmb250LXNpemUtbGFyZ2U7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBoZWlnaHQ6IEBuYXZiYXItaGVpZ2h0OwoKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIC5uYXZiYXIgPiAuY29udGFpbmVyICYsCiAgICAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCAmIHsKICAgICAgbWFyZ2luLWxlZnQ6IC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICAgIH0KICB9Cn0KCgovLyBOYXZiYXIgdG9nZ2xlCi8vCi8vIEN1c3RvbSBidXR0b24gZm9yIHRvZ2dsaW5nIHRoZSBgLm5hdmJhci1jb2xsYXBzZWAsIHBvd2VyZWQgYnkgdGhlIGNvbGxhcHNlCi8vIEphdmFTY3JpcHQgcGx1Z2luLgoKLm5hdmJhci10b2dnbGUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbG9hdDogcmlnaHQ7CiAgbWFyZ2luLXJpZ2h0OiBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBwYWRkaW5nOiA5cHggMTBweDsKICAubmF2YmFyLXZlcnRpY2FsLWFsaWduKDM0cHgpOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IC8vIFJlc2V0IHVudXN1YWwgRmlyZWZveC1vbi1BbmRyb2lkIGRlZmF1bHQgc3R5bGU7IHNlZSBodHRwczovL2dpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzL2lzc3Vlcy8yMTQKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwoKICAvLyBXZSByZW1vdmUgdGhlIGBvdXRsaW5lYCBoZXJlLCBidXQgbGF0ZXIgY29tcGVuc2F0ZSBieSBhdHRhY2hpbmcgYDpob3ZlcmAKICAvLyBzdHlsZXMgdG8gYDpmb2N1c2AuCiAgJjpmb2N1cyB7CiAgICBvdXRsaW5lOiAwOwogIH0KCiAgLy8gQmFycwogIC5pY29uLWJhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAyMnB4OwogICAgaGVpZ2h0OiAycHg7CiAgICBib3JkZXItcmFkaXVzOiAxcHg7CiAgfQogIC5pY29uLWJhciArIC5pY29uLWJhciB7CiAgICBtYXJnaW4tdG9wOiA0cHg7CiAgfQoKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KCgovLyBOYXZiYXIgbmF2IGxpbmtzCi8vCi8vIEJ1aWxkcyBvbiB0b3Agb2YgdGhlIGAubmF2YCBjb21wb25lbnRzIHdpdGggaXRzIG93biBtb2RpZmllciBjbGFzcyB0byBtYWtlCi8vIHRoZSBuYXYgdGhlIGZ1bGwgaGVpZ2h0IG9mIHRoZSBob3Jpem9udGFsIG5hdiAoYWJvdmUgNzY4cHgpLgoKLm5hdmJhci1uYXYgewogIG1hcmdpbjogKEBuYXZiYXItcGFkZGluZy12ZXJ0aWNhbCAvIDIpIC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKCiAgPiBsaSA+IGEgewogICAgcGFkZGluZy10b3A6ICAgIDEwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgfQoKICBAbWVkaWEgKG1heC13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXgpIHsKICAgIC8vIERyb3Bkb3ducyBnZXQgY3VzdG9tIGRpc3BsYXkgd2hlbiBjb2xsYXBzZWQKICAgIC5vcGVuIC5kcm9wZG93bi1tZW51IHsKICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgZmxvYXQ6IG5vbmU7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgICBtYXJnaW4tdG9wOiAwOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyOiAwOwogICAgICBib3gtc2hhZG93OiBub25lOwogICAgICA+IGxpID4gYSwKICAgICAgLmRyb3Bkb3duLWhlYWRlciB7CiAgICAgICAgcGFkZGluZzogNXB4IDE1cHggNXB4IDI1cHg7CiAgICAgIH0KICAgICAgPiBsaSA+IGEgewogICAgICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgICAgICAgJjpob3ZlciwKICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICAvLyBVbmNvbGxhcHNlIHRoZSBuYXYKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW46IDA7CgogICAgPiBsaSB7CiAgICAgIGZsb2F0OiBsZWZ0OwogICAgICA+IGEgewogICAgICAgIHBhZGRpbmctdG9wOiAgICBAbmF2YmFyLXBhZGRpbmctdmVydGljYWw7CiAgICAgICAgcGFkZGluZy1ib3R0b206IEBuYXZiYXItcGFkZGluZy12ZXJ0aWNhbDsKICAgICAgfQogICAgfQoKICAgICYubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgICBtYXJnaW4tcmlnaHQ6IC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICAgIH0KICB9Cn0KCgovLyBDb21wb25lbnQgYWxpZ25tZW50Ci8vCi8vIFJlcHVycG9zZSB0aGUgcHVsbCB1dGlsaXRpZXMgYXMgdGhlaXIgb3duIG5hdmJhciB1dGlsaXRpZXMgdG8gYXZvaWQgc3BlY2lmaWNpdHkKLy8gaXNzdWVzIHdpdGggcGFyZW50cyBhbmQgY2hhaW5pbmcuIE9ubHkgZG8gdGhpcyB3aGVuIHRoZSBuYXZiYXIgaXMgdW5jb2xsYXBzZWQKLy8gdGhvdWdoIHNvIHRoYXQgbmF2YmFyIGNvbnRlbnRzIHByb3Blcmx5IHN0YWNrIGFuZCBhbGlnbiBpbiBtb2JpbGUuCgpAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogIC5uYXZiYXItbGVmdCAgeyAucHVsbC1sZWZ0KCk7IH0KICAubmF2YmFyLXJpZ2h0IHsgLnB1bGwtcmlnaHQoKTsgfQp9CgoKLy8gTmF2YmFyIGZvcm0KLy8KLy8gRXh0ZW5zaW9uIG9mIHRoZSBgLmZvcm0taW5saW5lYCB3aXRoIHNvbWUgZXh0cmEgZmxhdm9yIGZvciBvcHRpbXVtIGRpc3BsYXkgaW4KLy8gb3VyIG5hdmJhcnMuCgoubmF2YmFyLWZvcm0gewogIG1hcmdpbi1sZWZ0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgbWFyZ2luLXJpZ2h0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgcGFkZGluZzogMTBweCBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIEBzaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSksIDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7CiAgLmJveC1zaGFkb3coQHNoYWRvdyk7CgogIC8vIE1peGluIGJlaGF2aW9yIGZvciBvcHRpbXVtIGRpc3BsYXkKICAuZm9ybS1pbmxpbmUoKTsKCiAgLmZvcm0tZ3JvdXAgewogICAgQG1lZGlhIChtYXgtd2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQtbWF4KSB7CiAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIH0KICB9CgogIC8vIFZlcnRpY2FsbHkgY2VudGVyIGluIGV4cGFuZGVkLCBob3Jpem9udGFsIG5hdmJhcgogIC5uYXZiYXItdmVydGljYWwtYWxpZ24oQGlucHV0LWhlaWdodC1iYXNlKTsKCiAgLy8gVW5kbyAxMDAlIHdpZHRoIGZvciBwdWxsIGNsYXNzZXMKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgd2lkdGg6IGF1dG87CiAgICBib3JkZXI6IDA7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIHBhZGRpbmctdG9wOiAwOwogICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAuYm94LXNoYWRvdyhub25lKTsKCiAgICAvLyBPdXRkZW50IHRoZSBmb3JtIGlmIGxhc3QgY2hpbGQgdG8gbGluZSB1cCB3aXRoIGNvbnRlbnQgZG93biB0aGUgcGFnZQogICAgJi5uYXZiYXItcmlnaHQ6bGFzdC1jaGlsZCB7CiAgICAgIG1hcmdpbi1yaWdodDogLUBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogICAgfQogIH0KfQoKCi8vIERyb3Bkb3duIG1lbnVzCgovLyBNZW51IHBvc2l0aW9uIGFuZCBtZW51IGNhcmV0cwoubmF2YmFyLW5hdiA+IGxpID4gLmRyb3Bkb3duLW1lbnUgewogIG1hcmdpbi10b3A6IDA7CiAgLmJvcmRlci10b3AtcmFkaXVzKDApOwp9Ci8vIE1lbnUgcG9zaXRpb24gYW5kIG1lbnUgY2FyZXQgc3VwcG9ydCBmb3IgZHJvcHVwcyB2aWEgZXh0cmEgZHJvcHVwIGNsYXNzCi5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItbmF2ID4gbGkgPiAuZHJvcGRvd24tbWVudSB7CiAgLmJvcmRlci1ib3R0b20tcmFkaXVzKDApOwp9CgoKLy8gQnV0dG9ucyBpbiBuYXZiYXJzCi8vCi8vIFZlcnRpY2FsbHkgY2VudGVyIGEgYnV0dG9uIHdpdGhpbiBhIG5hdmJhciAod2hlbiAqbm90KiBpbiBhIGZvcm0pLgoKLm5hdmJhci1idG4gewogIC5uYXZiYXItdmVydGljYWwtYWxpZ24oQGlucHV0LWhlaWdodC1iYXNlKTsKCiAgJi5idG4tc20gewogICAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbihAaW5wdXQtaGVpZ2h0LXNtYWxsKTsKICB9CiAgJi5idG4teHMgewogICAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbigyMik7CiAgfQp9CgoKLy8gVGV4dCBpbiBuYXZiYXJzCi8vCi8vIEFkZCBhIGNsYXNzIHRvIG1ha2UgYW55IGVsZW1lbnQgcHJvcGVybHkgYWxpZ24gaXRzZWxmIHZlcnRpY2FsbHkgd2l0aGluIHRoZSBuYXZiYXJzLgoKLm5hdmJhci10ZXh0IHsKICAubmF2YmFyLXZlcnRpY2FsLWFsaWduKEBsaW5lLWhlaWdodC1jb21wdXRlZCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICAgIG1hcmdpbi1yaWdodDogQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CgogICAgLy8gT3V0ZGVudCB0aGUgZm9ybSBpZiBsYXN0IGNoaWxkIHRvIGxpbmUgdXAgd2l0aCBjb250ZW50IGRvd24gdGhlIHBhZ2UKICAgICYubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGQgewogICAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICB9CiAgfQp9CgovLyBBbHRlcm5hdGUgbmF2YmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gRGVmYXVsdCBuYXZiYXIKLm5hdmJhci1kZWZhdWx0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYmc7CiAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYm9yZGVyOwoKICAubmF2YmFyLWJyYW5kIHsKICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYnJhbmQtY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYnJhbmQtaG92ZXItY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1icmFuZC1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uYXZiYXItdGV4dCB7CiAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWNvbG9yOwogIH0KCiAgLm5hdmJhci1uYXYgewogICAgPiBsaSA+IGEgewogICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CgogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItYmc7CiAgICAgIH0KICAgIH0KICAgID4gLmFjdGl2ZSA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1iZzsKICAgICAgfQogICAgfQogICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWJnOwogICAgICB9CiAgICB9CiAgfQoKICAubmF2YmFyLXRvZ2dsZSB7CiAgICBib3JkZXItY29sb3I6IEBuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOwogICAgJjpob3ZlciwKICAgICY6Zm9jdXMgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOwogICAgfQogICAgLmljb24tYmFyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzsKICAgIH0KICB9CgogIC5uYXZiYXItY29sbGFwc2UsCiAgLm5hdmJhci1mb3JtIHsKICAgIGJvcmRlci1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWJvcmRlcjsKICB9CgogIC8vIERyb3Bkb3duIG1lbnUgaXRlbXMKICAubmF2YmFyLW5hdiB7CiAgICAvLyBSZW1vdmUgYmFja2dyb3VuZCBjb2xvciBmcm9tIG9wZW4gZHJvcGRvd24KICAgID4gLm9wZW4gPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWJnOwogICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I7CiAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKG1heC13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXgpIHsKICAgICAgLy8gRHJvcGRvd25zIGdldCBjdXN0b20gZGlzcGxheSB3aGVuIGNvbGxhcHNlZAogICAgICAub3BlbiAuZHJvcGRvd24tbWVudSB7CiAgICAgICAgPiBsaSA+IGEgewogICAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOwogICAgICAgICAgJjpob3ZlciwKICAgICAgICAgICY6Zm9jdXMgewogICAgICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWJnOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICA+IC5hY3RpdmUgPiBhIHsKICAgICAgICAgICYsCiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1iZzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgICAgICYsCiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1kaXNhYmxlZC1jb2xvcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstZGlzYWJsZWQtYmc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKCiAgLy8gTGlua3MgaW4gbmF2YmFycwogIC8vCiAgLy8gQWRkIGEgY2xhc3MgdG8gZW5zdXJlIGxpbmtzIG91dHNpZGUgdGhlIG5hdmJhciBuYXYgYXJlIGNvbG9yZWQgY29ycmVjdGx5LgoKICAubmF2YmFyLWxpbmsgewogICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOwogICAgJjpob3ZlciB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjsKICAgIH0KICB9CgogIC5idG4tbGluayB7CiAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjsKICAgIH0KICAgICZbZGlzYWJsZWRdLAogICAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgIH0KICAgIH0KICB9Cn0KCi8vIEludmVyc2UgbmF2YmFyCgoubmF2YmFyLWludmVyc2UgewogIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1iZzsKICBib3JkZXItY29sb3I6IEBuYXZiYXItaW52ZXJzZS1ib3JkZXI7CgogIC5uYXZiYXItYnJhbmQgewogICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1icmFuZC1jb2xvcjsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1icmFuZC1ob3Zlci1jb2xvcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWJyYW5kLWhvdmVyLWJnOwogICAgfQogIH0KCiAgLm5hdmJhci10ZXh0IHsKICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtY29sb3I7CiAgfQoKICAubmF2YmFyLW5hdiB7CiAgICA+IGxpID4gYSB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1jb2xvcjsKCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1iZzsKICAgICAgfQogICAgfQogICAgPiAuYWN0aXZlID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWJnOwogICAgICB9CiAgICB9CiAgICA+IC5kaXNhYmxlZCA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtYmc7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIERhcmtlbiB0aGUgcmVzcG9uc2l2ZSBuYXYgdG9nZ2xlCiAgLm5hdmJhci10b2dnbGUgewogICAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtdG9nZ2xlLWJvcmRlci1jb2xvcjsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLXRvZ2dsZS1ob3Zlci1iZzsKICAgIH0KICAgIC5pY29uLWJhciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS10b2dnbGUtaWNvbi1iYXItYmc7CiAgICB9CiAgfQoKICAubmF2YmFyLWNvbGxhcHNlLAogIC5uYXZiYXItZm9ybSB7CiAgICBib3JkZXItY29sb3I6IGRhcmtlbihAbmF2YmFyLWludmVyc2UtYmcsIDclKTsKICB9CgogIC8vIERyb3Bkb3ducwogIC5uYXZiYXItbmF2IHsKICAgID4gLm9wZW4gPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWJnOwogICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtY29sb3I7CiAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKG1heC13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXgpIHsKICAgICAgLy8gRHJvcGRvd25zIGdldCBjdXN0b20gZGlzcGxheQogICAgICAub3BlbiAuZHJvcGRvd24tbWVudSB7CiAgICAgICAgPiAuZHJvcGRvd24taGVhZGVyIHsKICAgICAgICAgIGJvcmRlci1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWJvcmRlcjsKICAgICAgICB9CiAgICAgICAgLmRpdmlkZXIgewogICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWJvcmRlcjsKICAgICAgICB9CiAgICAgICAgPiBsaSA+IGEgewogICAgICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWNvbG9yOwogICAgICAgICAgJjpob3ZlciwKICAgICAgICAgICY6Zm9jdXMgewogICAgICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWhvdmVyLWJnOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICA+IC5hY3RpdmUgPiBhIHsKICAgICAgICAgICYsCiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtY29sb3I7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWFjdGl2ZS1iZzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgPiAuZGlzYWJsZWQgPiBhIHsKICAgICAgICAgICYsCiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1kaXNhYmxlZC1jb2xvcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtYmc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICAubmF2YmFyLWxpbmsgewogICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWNvbG9yOwogICAgJjpob3ZlciB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1jb2xvcjsKICAgIH0KICB9CgogIC5idG4tbGluayB7CiAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1jb2xvcjsKICAgIH0KICAgICZbZGlzYWJsZWRdLAogICAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgIH0KICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/navs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTmF2cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhc2UgY2xhc3MKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5uYXYgewogIG1hcmdpbi1ib3R0b206IDA7CiAgcGFkZGluZy1sZWZ0OiAwOyAvLyBPdmVycmlkZSBkZWZhdWx0IHVsL29sCiAgbGlzdC1zdHlsZTogbm9uZTsKICAmOmV4dGVuZCguY2xlYXJmaXggYWxsKTsKCiAgPiBsaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKCiAgICA+IGEgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwYWRkaW5nOiBAbmF2LWxpbmstcGFkZGluZzsKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXYtbGluay1ob3Zlci1iZzsKICAgICAgfQogICAgfQoKICAgIC8vIERpc2FibGVkIHN0YXRlIHNldHMgdGV4dCB0byBncmF5IGFuZCBudWtlcyBob3Zlci90YWIgZWZmZWN0cwogICAgJi5kaXNhYmxlZCA+IGEgewogICAgICBjb2xvcjogQG5hdi1kaXNhYmxlZC1saW5rLWNvbG9yOwoKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXYtZGlzYWJsZWQtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQogICAgfQogIH0KCiAgLy8gT3BlbiBkcm9wZG93bnMKICAub3BlbiA+IGEgewogICAgJiwKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdi1saW5rLWhvdmVyLWJnOwogICAgICBib3JkZXItY29sb3I6IEBsaW5rLWNvbG9yOwogICAgfQogIH0KCiAgLy8gTmF2IGRpdmlkZXJzIChkZXByZWNhdGVkIHdpdGggdjMuMC4xKQogIC8vCiAgLy8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdjMgd2l0aCB0aGUgZHJvcHBpbmcgb2YgYC5uYXYtbGlzdGAsIGJ1dAogIC8vIHdlIG1pc3NlZCBpdC4gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgdGhpcyBhbnl3aGVyZSwgYnV0IGluIHRoZSBpbnRlcmVzdAogIC8vIG9mIG1haW50YWluaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaW4gY2FzZSB5b3UgdXNlIGl0LCBpdCdzIGRlcHJlY2F0ZWQuCiAgLm5hdi1kaXZpZGVyIHsKICAgIC5uYXYtZGl2aWRlcigpOwogIH0KCiAgLy8gUHJldmVudCBJRTggZnJvbSBtaXNwbGFjaW5nIGltZ3MKICAvLwogIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9pc3N1ZXMvOTg0I2lzc3VlY29tbWVudC0zOTg1OTg5CiAgPiBsaSA+IGEgPiBpbWcgewogICAgbWF4LXdpZHRoOiBub25lOwogIH0KfQoKCi8vIFRhYnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gR2l2ZSB0aGUgdGFicyBzb21ldGhpbmcgdG8gc2l0IG9uCi5uYXYtdGFicyB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBuYXYtdGFicy1ib3JkZXItY29sb3I7CiAgPiBsaSB7CiAgICBmbG9hdDogbGVmdDsKICAgIC8vIE1ha2UgdGhlIGxpc3QtaXRlbXMgb3ZlcmxheSB0aGUgYm90dG9tIGJvcmRlcgogICAgbWFyZ2luLWJvdHRvbTogLTFweDsKCiAgICAvLyBBY3R1YWwgdGFicyAoYXMgbGlua3MpCiAgICA+IGEgewogICAgICBtYXJnaW4tcmlnaHQ6IDJweDsKICAgICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZSBAYm9yZGVyLXJhZGl1cy1iYXNlIDAgMDsKICAgICAgJjpob3ZlciB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiBAbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3IgQG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yIEBuYXYtdGFicy1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KCiAgICAvLyBBY3RpdmUgc3RhdGUsIGFuZCBpdHMgOmhvdmVyIHRvIG92ZXJyaWRlIG5vcm1hbCA6aG92ZXIKICAgICYuYWN0aXZlID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2LXRhYnMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CiAgICB9CiAgfQogIC8vIHB1bGxpbmcgdGhpcyBpbiBtYWlubHkgZm9yIGxlc3Mgc2hvcnRoYW5kCiAgJi5uYXYtanVzdGlmaWVkIHsKICAgIC5uYXYtanVzdGlmaWVkKCk7CiAgICAubmF2LXRhYnMtanVzdGlmaWVkKCk7CiAgfQp9CgoKLy8gUGlsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoubmF2LXBpbGxzIHsKICA+IGxpIHsKICAgIGZsb2F0OiBsZWZ0OwoKICAgIC8vIExpbmtzIHJlbmRlcmVkIGFzIHBpbGxzCiAgICA+IGEgewogICAgICBib3JkZXItcmFkaXVzOiBAbmF2LXBpbGxzLWJvcmRlci1yYWRpdXM7CiAgICB9CiAgICArIGxpIHsKICAgICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgIH0KCiAgICAvLyBBY3RpdmUgc3RhdGUKICAgICYuYWN0aXZlID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc7CiAgICAgIH0KICAgIH0KICB9Cn0KCgovLyBTdGFja2VkIHBpbGxzCi5uYXYtc3RhY2tlZCB7CiAgPiBsaSB7CiAgICBmbG9hdDogbm9uZTsKICAgICsgbGkgewogICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAwOyAvLyBubyBuZWVkIGZvciB0aGlzIGdhcCBiZXR3ZWVuIG5hdiBpdGVtcwogICAgfQogIH0KfQoKCi8vIE5hdiB2YXJpYXRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBKdXN0aWZpZWQgbmF2IGxpbmtzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5uYXYtanVzdGlmaWVkIHsKICB3aWR0aDogMTAwJTsKCiAgPiBsaSB7CiAgICBmbG9hdDogbm9uZTsKICAgID4gYSB7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgfQogIH0KCiAgPiAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUgewogICAgdG9wOiBhdXRvOwogICAgbGVmdDogYXV0bzsKICB9CgogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgewogICAgPiBsaSB7CiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICAgIHdpZHRoOiAxJTsKICAgICAgPiBhIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB9CiAgICB9CiAgfQp9CgovLyBNb3ZlIGJvcmRlcnMgdG8gYW5jaG9ycyBpbnN0ZWFkIG9mIGJvdHRvbSBvZiBsaXN0Ci8vCi8vIE1peGluIGZvciBhZGRpbmcgb24gdG9wIHRoZSBzaGFyZWQgYC5uYXYtanVzdGlmaWVkYCBzdHlsZXMgZm9yIG91ciB0YWJzCi5uYXYtdGFicy1qdXN0aWZpZWQgewogIGJvcmRlci1ib3R0b206IDA7CgogID4gbGkgPiBhIHsKICAgIC8vIE92ZXJyaWRlIG1hcmdpbiBmcm9tIC5uYXYtdGFicwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICB9CgogID4gLmFjdGl2ZSA+IGEsCiAgPiAuYWN0aXZlID4gYTpob3ZlciwKICA+IC5hY3RpdmUgPiBhOmZvY3VzIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkIEBuYXYtdGFicy1qdXN0aWZpZWQtbGluay1ib3JkZXItY29sb3I7CiAgfQoKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIHsKICAgID4gbGkgPiBhIHsKICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBuYXYtdGFicy1qdXN0aWZpZWQtbGluay1ib3JkZXItY29sb3I7CiAgICAgIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2UgQGJvcmRlci1yYWRpdXMtYmFzZSAwIDA7CiAgICB9CiAgICA+IC5hY3RpdmUgPiBhLAogICAgPiAuYWN0aXZlID4gYTpob3ZlciwKICAgID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogICAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAbmF2LXRhYnMtanVzdGlmaWVkLWFjdGl2ZS1saW5rLWJvcmRlci1jb2xvcjsKICAgIH0KICB9Cn0KCgovLyBUYWJiYWJsZSB0YWJzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEhpZGUgdGFiYmFibGUgcGFuZXMgdG8gc3RhcnQsIHNob3cgdGhlbSB3aGVuIGAuYWN0aXZlYAoudGFiLWNvbnRlbnQgewogID4gLnRhYi1wYW5lIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQogID4gLmFjdGl2ZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9Cn0KCgovLyBEcm9wZG93bnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gU3BlY2lmaWMgZHJvcGRvd25zCi5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CiAgLy8gbWFrZSBkcm9wZG93biBib3JkZXIgb3ZlcmxhcCB0YWIgYm9yZGVyCiAgbWFyZ2luLXRvcDogLTFweDsKICAvLyBSZW1vdmUgdGhlIHRvcCByb3VuZGVkIGNvcm5lcnMgaGVyZSBzaW5jZSB0aGVyZSBpcyBhIGhhcmQgZWRnZSBhYm92ZSB0aGUgbWVudQogIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/normalize.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovCgovLwovLyAxLiBTZXQgZGVmYXVsdCBmb250IGZhbWlseSB0byBzYW5zLXNlcmlmLgovLyAyLiBQcmV2ZW50IGlPUyB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZSwgd2l0aG91dCBkaXNhYmxpbmcKLy8gICAgdXNlciB6b29tLgovLwoKaHRtbCB7CiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8vIDEKICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gMgogIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gMgp9CgovLwovLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uCi8vCgpib2R5IHsKICBtYXJnaW46IDA7Cn0KCi8vIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnMKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuCi8vIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExIGFuZCBGaXJlZm94LgovLyBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLgovLwoKYXJ0aWNsZSwKYXNpZGUsCmRldGFpbHMsCmZpZ2NhcHRpb24sCmZpZ3VyZSwKZm9vdGVyLApoZWFkZXIsCmhncm91cCwKbWFpbiwKbmF2LApzZWN0aW9uLApzdW1tYXJ5IHsKICBkaXNwbGF5OiBibG9jazsKfQoKLy8KLy8gMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS4KLy8gMi4gTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLgovLwoKYXVkaW8sCmNhbnZhcywKcHJvZ3Jlc3MsCnZpZGVvIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8vIDEKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8vIDIKfQoKLy8KLy8gUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy4KLy8gUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy4KLy8KCmF1ZGlvOm5vdChbY29udHJvbHNdKSB7CiAgZGlzcGxheTogbm9uZTsKICBoZWlnaHQ6IDA7Cn0KCi8vCi8vIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC4KLy8gSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLgovLwoKW2hpZGRlbl0sCnRlbXBsYXRlIHsKICBkaXNwbGF5OiBub25lOwp9CgovLyBMaW5rcwovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuCi8vCgphIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLy8KLy8gSW1wcm92ZSByZWFkYWJpbGl0eSB3aGVuIGZvY3VzZWQgYW5kIGFsc28gbW91c2UgaG92ZXJlZCBpbiBhbGwgYnJvd3NlcnMuCi8vCgphOmFjdGl2ZSwKYTpob3ZlciB7CiAgb3V0bGluZTogMDsKfQoKLy8gVGV4dC1sZXZlbCBzZW1hbnRpY3MKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS4KLy8KCmFiYnJbdGl0bGVdIHsKICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkOwp9CgovLwovLyBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuCi8vCgpiLApzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgovLwovLyBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIGFuZCBDaHJvbWUuCi8vCgpkZm4gewogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLy8KLy8gQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYAovLyBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuCi8vCgpoMSB7CiAgZm9udC1zaXplOiAyZW07CiAgbWFyZ2luOiAwLjY3ZW0gMDsKfQoKLy8KLy8gQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS4KLy8KCm1hcmsgewogIGJhY2tncm91bmQ6ICNmZjA7CiAgY29sb3I6ICMwMDA7Cn0KCi8vCi8vIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLgovLwoKc21hbGwgewogIGZvbnQtc2l6ZTogODAlOwp9CgovLwovLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuCi8vCgpzdWIsCnN1cCB7CiAgZm9udC1zaXplOiA3NSU7CiAgbGluZS1oZWlnaHQ6IDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKc3VwIHsKICB0b3A6IC0wLjVlbTsKfQoKc3ViIHsKICBib3R0b206IC0wLjI1ZW07Cn0KCi8vIEVtYmVkZGVkIGNvbnRlbnQKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLgovLwoKaW1nIHsKICBib3JkZXI6IDA7Cn0KCi8vCi8vIENvcnJlY3Qgb3ZlcmZsb3cgbm90IGhpZGRlbiBpbiBJRSA5LzEwLzExLgovLwoKc3ZnOm5vdCg6cm9vdCkgewogIG92ZXJmbG93OiBoaWRkZW47Cn0KCi8vIEdyb3VwaW5nIGNvbnRlbnQKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLgovLwoKZmlndXJlIHsKICBtYXJnaW46IDFlbSA0MHB4Owp9CgovLwovLyBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuCi8vCgpociB7CiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBoZWlnaHQ6IDA7Cn0KCi8vCi8vIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLgovLwoKcHJlIHsKICBvdmVyZmxvdzogYXV0bzsKfQoKLy8KLy8gQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLgovLwoKY29kZSwKa2JkLApwcmUsCnNhbXAgewogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsKICBmb250LXNpemU6IDFlbTsKfQoKLy8gRm9ybXMKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkCi8vIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC4KLy8KCi8vCi8vIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC4KLy8gICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuCi8vIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuCi8vIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLgovLwoKYnV0dG9uLAppbnB1dCwKb3B0Z3JvdXAsCnNlbGVjdCwKdGV4dGFyZWEgewogIGNvbG9yOiBpbmhlcml0OyAvLyAxCiAgZm9udDogaW5oZXJpdDsgLy8gMgogIG1hcmdpbjogMDsgLy8gMwp9CgovLwovLyBBZGRyZXNzIGBvdmVyZmxvd2Agc2V0IHRvIGBoaWRkZW5gIGluIElFIDgvOS8xMC8xMS4KLy8KCmJ1dHRvbiB7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCi8vCi8vIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC4KLy8gQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy4KLy8gQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS4KLy8gQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LgovLwoKYnV0dG9uLApzZWxlY3QgewogIHRleHQtdHJhbnNmb3JtOiBub25lOwp9CgovLwovLyAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYAovLyAgICBhbmQgYHZpZGVvYCBjb250cm9scy4KLy8gMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLgovLyAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZQovLyAgICBgaW5wdXRgIGFuZCBvdGhlcnMuCi8vCgpidXR0b24sCmh0bWwgaW5wdXRbdHlwZT0iYnV0dG9uIl0sIC8vIDEKaW5wdXRbdHlwZT0icmVzZXQiXSwKaW5wdXRbdHlwZT0ic3VibWl0Il0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyCiAgY3Vyc29yOiBwb2ludGVyOyAvLyAzCn0KCi8vCi8vIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuCi8vCgpidXR0b25bZGlzYWJsZWRdLApodG1sIGlucHV0W2Rpc2FibGVkXSB7CiAgY3Vyc29yOiBkZWZhdWx0Owp9CgovLwovLyBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuCi8vCgpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsCmlucHV0OjotbW96LWZvY3VzLWlubmVyIHsKICBib3JkZXI6IDA7CiAgcGFkZGluZzogMDsKfQoKLy8KLy8gQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpbgovLyB0aGUgVUEgc3R5bGVzaGVldC4KLy8KCmlucHV0IHsKICBsaW5lLWhlaWdodDogbm9ybWFsOwp9CgovLwovLyBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuCi8vIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguCi8vCi8vIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuCi8vIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuCi8vCgppbnB1dFt0eXBlPSJjaGVja2JveCJdLAppbnB1dFt0eXBlPSJyYWRpbyJdIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxCiAgcGFkZGluZzogMDsgLy8gMgp9CgovLwovLyBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpbgovLyBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZQovLyBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuCi8vCgppbnB1dFt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwKaW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogIGhlaWdodDogYXV0bzsKfQoKLy8KLy8gMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuCi8vIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUKLy8gICAgKGluY2x1ZGUgYC1tb3pgIHRvIGZ1dHVyZS1wcm9vZikuCi8vCgppbnB1dFt0eXBlPSJzZWFyY2giXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIDEKICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IC8vIDIKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQoKLy8KLy8gUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguCi8vIFNhZmFyaSAoYnV0IG5vdCBDaHJvbWUpIGNsaXBzIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBoYXMKLy8gcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLgovLwoKaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sCmlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi8vCi8vIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy4KLy8KCmZpZWxkc2V0IHsKICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwOwogIG1hcmdpbjogMCAycHg7CiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtOwp9CgovLwovLyAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuCi8vIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy4KLy8KCmxlZ2VuZCB7CiAgYm9yZGVyOiAwOyAvLyAxCiAgcGFkZGluZzogMDsgLy8gMgp9CgovLwovLyBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLgovLwoKdGV4dGFyZWEgewogIG92ZXJmbG93OiBhdXRvOwp9CgovLwovLyBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuCi8vIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLgovLwoKb3B0Z3JvdXAgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgovLyBUYWJsZXMKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vCi8vIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy4KLy8KCnRhYmxlIHsKICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogIGJvcmRlci1zcGFjaW5nOiAwOwp9Cgp0ZCwKdGggewogIHBhZGRpbmc6IDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/pager.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFnZXIgcGFnaW5hdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi5wYWdlciB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgJjpleHRlbmQoLmNsZWFyZml4IGFsbCk7CiAgbGkgewogICAgZGlzcGxheTogaW5saW5lOwogICAgPiBhLAogICAgPiBzcGFuIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2VyLWJnOwogICAgICBib3JkZXI6IDFweCBzb2xpZCBAcGFnZXItYm9yZGVyOwogICAgICBib3JkZXItcmFkaXVzOiBAcGFnZXItYm9yZGVyLXJhZGl1czsKICAgIH0KCiAgICA+IGE6aG92ZXIsCiAgICA+IGE6Zm9jdXMgewogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwYWdlci1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uZXh0IHsKICAgID4gYSwKICAgID4gc3BhbiB7CiAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICB9CgogIC5wcmV2aW91cyB7CiAgICA+IGEsCiAgICA+IHNwYW4gewogICAgICBmbG9hdDogbGVmdDsKICAgIH0KICB9CgogIC5kaXNhYmxlZCB7CiAgICA+IGEsCiAgICA+IGE6aG92ZXIsCiAgICA+IGE6Zm9jdXMsCiAgICA+IHNwYW4gewogICAgICBjb2xvcjogQHBhZ2VyLWRpc2FibGVkLWNvbG9yOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnZXItYmc7CiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgICB9CiAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/pagination.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFnaW5hdGlvbiAobXVsdGlwbGUgcGFnZXMpCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5wYWdpbmF0aW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIDA7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmU7IC8vIFJlbW92ZSBsaXN0LXN0eWxlIGFuZCBibG9jay1sZXZlbCBkZWZhdWx0cwogICAgPiBhLAogICAgPiBzcGFuIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBmbG9hdDogbGVmdDsgLy8gQ29sbGFwc2Ugd2hpdGUtc3BhY2UKICAgICAgcGFkZGluZzogQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCBAcGFkZGluZy1iYXNlLWhvcml6b250YWw7CiAgICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBjb2xvcjogQHBhZ2luYXRpb24tY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwYWdpbmF0aW9uLWJnOwogICAgICBib3JkZXI6IDFweCBzb2xpZCBAcGFnaW5hdGlvbi1ib3JkZXI7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgfQogICAgJjpmaXJzdC1jaGlsZCB7CiAgICAgID4gYSwKICAgICAgPiBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICAuYm9yZGVyLWxlZnQtcmFkaXVzKEBib3JkZXItcmFkaXVzLWJhc2UpOwogICAgICB9CiAgICB9CiAgICAmOmxhc3QtY2hpbGQgewogICAgICA+IGEsCiAgICAgID4gc3BhbiB7CiAgICAgICAgLmJvcmRlci1yaWdodC1yYWRpdXMoQGJvcmRlci1yYWRpdXMtYmFzZSk7CiAgICAgIH0KICAgIH0KICB9CgogID4gbGkgPiBhLAogID4gbGkgPiBzcGFuIHsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgY29sb3I6IEBwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnaW5hdGlvbi1ob3Zlci1iZzsKICAgICAgYm9yZGVyLWNvbG9yOiBAcGFnaW5hdGlvbi1ob3Zlci1ib3JkZXI7CiAgICB9CiAgfQoKICA+IC5hY3RpdmUgPiBhLAogID4gLmFjdGl2ZSA+IHNwYW4gewogICAgJiwKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgei1pbmRleDogMjsKICAgICAgY29sb3I6IEBwYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2luYXRpb24tYWN0aXZlLWJnOwogICAgICBib3JkZXItY29sb3I6IEBwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXI7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KICB9CgogID4gLmRpc2FibGVkIHsKICAgID4gc3BhbiwKICAgID4gc3Bhbjpob3ZlciwKICAgID4gc3Bhbjpmb2N1cywKICAgID4gYSwKICAgID4gYTpob3ZlciwKICAgID4gYTpmb2N1cyB7CiAgICAgIGNvbG9yOiBAcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2luYXRpb24tZGlzYWJsZWQtYmc7CiAgICAgIGJvcmRlci1jb2xvcjogQHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyOwogICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgfQogIH0KfQoKLy8gU2l6aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBMYXJnZQoucGFnaW5hdGlvbi1sZyB7CiAgLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy1sYXJnZS12ZXJ0aWNhbDsgQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9CgovLyBTbWFsbAoucGFnaW5hdGlvbi1zbSB7CiAgLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGJvcmRlci1yYWRpdXMtc21hbGwpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/panels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFuZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBjbGFzcwoucGFuZWwgewogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFuZWwtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQHBhbmVsLWJvcmRlci1yYWRpdXM7CiAgLmJveC1zaGFkb3coMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KSk7Cn0KCi8vIFBhbmVsIGNvbnRlbnRzCi5wYW5lbC1ib2R5IHsKICBwYWRkaW5nOiBAcGFuZWwtYm9keS1wYWRkaW5nOwogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwp9CgovLyBPcHRpb25hbCBoZWFkaW5nCi5wYW5lbC1oZWFkaW5nIHsKICBwYWRkaW5nOiBAcGFuZWwtaGVhZGluZy1wYWRkaW5nOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAuYm9yZGVyLXRvcC1yYWRpdXMoKEBwYW5lbC1ib3JkZXItcmFkaXVzIC0gMSkpOwoKICA+IC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KfQoKLy8gV2l0aGluIGhlYWRpbmcsIHN0cmlwIGFueSBgaCpgIHRhZyBvZiBpdHMgZGVmYXVsdCBtYXJnaW5zIGZvciBzcGFjaW5nLgoucGFuZWwtdGl0bGUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IGNlaWwoKEBmb250LXNpemUtYmFzZSAqIDEuMTI1KSk7CiAgY29sb3I6IGluaGVyaXQ7CgogID4gYSB7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9Cn0KCi8vIE9wdGlvbmFsIGZvb3RlciAoc3RheXMgZ3JheSBpbiBldmVyeSBtb2RpZmllciBjbGFzcykKLnBhbmVsLWZvb3RlciB7CiAgcGFkZGluZzogQHBhbmVsLWZvb3Rlci1wYWRkaW5nOwogIGJhY2tncm91bmQtY29sb3I6IEBwYW5lbC1mb290ZXItYmc7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBwYW5lbC1pbm5lci1ib3JkZXI7CiAgLmJvcmRlci1ib3R0b20tcmFkaXVzKChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpKTsKfQoKCi8vIExpc3QgZ3JvdXBzIGluIHBhbmVscwovLwovLyBCeSBkZWZhdWx0LCBzcGFjZSBvdXQgbGlzdCBncm91cCBjb250ZW50IGZyb20gcGFuZWwgaGVhZGluZ3MgdG8gYWNjb3VudCBmb3IKLy8gYW55IGtpbmQgb2YgY3VzdG9tIGNvbnRlbnQgYmV0d2VlbiB0aGUgdHdvLgoKLnBhbmVsIHsKICA+IC5saXN0LWdyb3VwIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CgogICAgLmxpc3QtZ3JvdXAtaXRlbSB7CiAgICAgIGJvcmRlci13aWR0aDogMXB4IDA7CiAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICB9CgogICAgLy8gQWRkIGJvcmRlciB0b3AgcmFkaXVzIGZvciBmaXJzdCBvbmUKICAgICY6Zmlyc3QtY2hpbGQgewogICAgICAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItdG9wOiAwOwogICAgICAgIC5ib3JkZXItdG9wLXJhZGl1cygoQHBhbmVsLWJvcmRlci1yYWRpdXMgLSAxKSk7CiAgICAgIH0KICAgIH0KICAgIC8vIEFkZCBib3JkZXIgYm90dG9tIHJhZGl1cyBmb3IgbGFzdCBvbmUKICAgICY6bGFzdC1jaGlsZCB7CiAgICAgIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDsKICAgICAgICAuYm9yZGVyLWJvdHRvbS1yYWRpdXMoKEBwYW5lbC1ib3JkZXItcmFkaXVzIC0gMSkpOwogICAgICB9CiAgICB9CiAgfQp9Ci8vIENvbGxhcHNlIHNwYWNlIGJldHdlZW4gd2hlbiB0aGVyZSdzIG5vIGFkZGl0aW9uYWwgY29udGVudC4KLnBhbmVsLWhlYWRpbmcgKyAubGlzdC1ncm91cCB7CiAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLXdpZHRoOiAwOwogIH0KfQoubGlzdC1ncm91cCArIC5wYW5lbC1mb290ZXIgewogIGJvcmRlci10b3Atd2lkdGg6IDA7Cn0KCi8vIFRhYmxlcyBpbiBwYW5lbHMKLy8KLy8gUGxhY2UgYSBub24tYm9yZGVyZWQgYC50YWJsZWAgd2l0aGluIGEgcGFuZWwgKG5vdCB3aXRoaW4gYSBgLnBhbmVsLWJvZHlgKSBhbmQKLy8gd2F0Y2ggaXQgZ28gZnVsbCB3aWR0aC4KCi5wYW5lbCB7CiAgPiAudGFibGUsCiAgPiAudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZSwKICA+IC5wYW5lbC1jb2xsYXBzZSA+IC50YWJsZSB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAvLyBBZGQgYm9yZGVyIHRvcCByYWRpdXMgZm9yIGZpcnN0IG9uZQogID4gLnRhYmxlOmZpcnN0LWNoaWxkLAogID4gLnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQgPiAudGFibGU6Zmlyc3QtY2hpbGQgewogICAgLmJvcmRlci10b3AtcmFkaXVzKChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpKTsKCiAgICA+IHRoZWFkOmZpcnN0LWNoaWxkLAogICAgPiB0Ym9keTpmaXJzdC1jaGlsZCB7CiAgICAgID4gdHI6Zmlyc3QtY2hpbGQgewogICAgICAgIHRkOmZpcnN0LWNoaWxkLAogICAgICAgIHRoOmZpcnN0LWNoaWxkIHsKICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpOwogICAgICAgIH0KICAgICAgICB0ZDpsYXN0LWNoaWxkLAogICAgICAgIHRoOmxhc3QtY2hpbGQgewogICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IChAcGFuZWwtYm9yZGVyLXJhZGl1cyAtIDEpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICAvLyBBZGQgYm9yZGVyIGJvdHRvbSByYWRpdXMgZm9yIGxhc3Qgb25lCiAgPiAudGFibGU6bGFzdC1jaGlsZCwKICA+IC50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQgPiAudGFibGU6bGFzdC1jaGlsZCB7CiAgICAuYm9yZGVyLWJvdHRvbS1yYWRpdXMoKEBwYW5lbC1ib3JkZXItcmFkaXVzIC0gMSkpOwoKICAgID4gdGJvZHk6bGFzdC1jaGlsZCwKICAgID4gdGZvb3Q6bGFzdC1jaGlsZCB7CiAgICAgID4gdHI6bGFzdC1jaGlsZCB7CiAgICAgICAgdGQ6Zmlyc3QtY2hpbGQsCiAgICAgICAgdGg6Zmlyc3QtY2hpbGQgewogICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogKEBwYW5lbC1ib3JkZXItcmFkaXVzIC0gMSk7CiAgICAgICAgfQogICAgICAgIHRkOmxhc3QtY2hpbGQsCiAgICAgICAgdGg6bGFzdC1jaGlsZCB7CiAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogKEBwYW5lbC1ib3JkZXItcmFkaXVzIC0gMSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogID4gLnBhbmVsLWJvZHkgKyAudGFibGUsCiAgPiAucGFuZWwtYm9keSArIC50YWJsZS1yZXNwb25zaXZlIHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBAdGFibGUtYm9yZGVyLWNvbG9yOwogIH0KICA+IC50YWJsZSA+IHRib2R5OmZpcnN0LWNoaWxkID4gdHI6Zmlyc3QtY2hpbGQgdGgsCiAgPiAudGFibGUgPiB0Ym9keTpmaXJzdC1jaGlsZCA+IHRyOmZpcnN0LWNoaWxkIHRkIHsKICAgIGJvcmRlci10b3A6IDA7CiAgfQogID4gLnRhYmxlLWJvcmRlcmVkLAogID4gLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgewogICAgYm9yZGVyOiAwOwogICAgPiB0aGVhZCwKICAgID4gdGJvZHksCiAgICA+IHRmb290IHsKICAgICAgPiB0ciB7CiAgICAgICAgPiB0aDpmaXJzdC1jaGlsZCwKICAgICAgICA+IHRkOmZpcnN0LWNoaWxkIHsKICAgICAgICAgIGJvcmRlci1sZWZ0OiAwOwogICAgICAgIH0KICAgICAgICA+IHRoOmxhc3QtY2hpbGQsCiAgICAgICAgPiB0ZDpsYXN0LWNoaWxkIHsKICAgICAgICAgIGJvcmRlci1yaWdodDogMDsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgID4gdGhlYWQsCiAgICA+IHRib2R5IHsKICAgICAgPiB0cjpmaXJzdC1jaGlsZCB7CiAgICAgICAgPiB0ZCwKICAgICAgICA+IHRoIHsKICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICA+IHRib2R5LAogICAgPiB0Zm9vdCB7CiAgICAgID4gdHI6bGFzdC1jaGlsZCB7CiAgICAgICAgPiB0ZCwKICAgICAgICA+IHRoIHsKICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogID4gLnRhYmxlLXJlc3BvbnNpdmUgewogICAgYm9yZGVyOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KCgovLyBDb2xsYXBzYWJsZSBwYW5lbHMgKGFrYSwgYWNjb3JkaW9uKQovLwovLyBXcmFwIGEgc2VyaWVzIG9mIHBhbmVscyBpbiBgLnBhbmVsLWdyb3VwYCB0byB0dXJuIHRoZW0gaW50byBhbiBhY2NvcmRpb24gd2l0aAovLyB0aGUgaGVscCBvZiBvdXIgY29sbGFwc2UgSmF2YVNjcmlwdCBwbHVnaW4uCgoucGFuZWwtZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKCiAgLy8gVGlnaHRlbiB1cCBtYXJnaW4gc28gaXQncyBvbmx5IGJldHdlZW4gcGFuZWxzCiAgLnBhbmVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBib3JkZXItcmFkaXVzOiBAcGFuZWwtYm9yZGVyLXJhZGl1czsKICAgICsgLnBhbmVsIHsKICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgfQogIH0KCiAgLnBhbmVsLWhlYWRpbmcgewogICAgYm9yZGVyLWJvdHRvbTogMDsKICAgICsgLnBhbmVsLWNvbGxhcHNlID4gLnBhbmVsLWJvZHkgewogICAgICBib3JkZXItdG9wOiAxcHggc29saWQgQHBhbmVsLWlubmVyLWJvcmRlcjsKICAgIH0KICB9CiAgLnBhbmVsLWZvb3RlciB7CiAgICBib3JkZXItdG9wOiAwOwogICAgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQHBhbmVsLWlubmVyLWJvcmRlcjsKICAgIH0KICB9Cn0KCgovLyBDb250ZXh0dWFsIHZhcmlhdGlvbnMKLnBhbmVsLWRlZmF1bHQgewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC1kZWZhdWx0LWJvcmRlcjsgQHBhbmVsLWRlZmF1bHQtdGV4dDsgQHBhbmVsLWRlZmF1bHQtaGVhZGluZy1iZzsgQHBhbmVsLWRlZmF1bHQtYm9yZGVyKTsKfQoucGFuZWwtcHJpbWFyeSB7CiAgLnBhbmVsLXZhcmlhbnQoQHBhbmVsLXByaW1hcnktYm9yZGVyOyBAcGFuZWwtcHJpbWFyeS10ZXh0OyBAcGFuZWwtcHJpbWFyeS1oZWFkaW5nLWJnOyBAcGFuZWwtcHJpbWFyeS1ib3JkZXIpOwp9Ci5wYW5lbC1zdWNjZXNzIHsKICAucGFuZWwtdmFyaWFudChAcGFuZWwtc3VjY2Vzcy1ib3JkZXI7IEBwYW5lbC1zdWNjZXNzLXRleHQ7IEBwYW5lbC1zdWNjZXNzLWhlYWRpbmctYmc7IEBwYW5lbC1zdWNjZXNzLWJvcmRlcik7Cn0KLnBhbmVsLWluZm8gewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC1pbmZvLWJvcmRlcjsgQHBhbmVsLWluZm8tdGV4dDsgQHBhbmVsLWluZm8taGVhZGluZy1iZzsgQHBhbmVsLWluZm8tYm9yZGVyKTsKfQoucGFuZWwtd2FybmluZyB7CiAgLnBhbmVsLXZhcmlhbnQoQHBhbmVsLXdhcm5pbmctYm9yZGVyOyBAcGFuZWwtd2FybmluZy10ZXh0OyBAcGFuZWwtd2FybmluZy1oZWFkaW5nLWJnOyBAcGFuZWwtd2FybmluZy1ib3JkZXIpOwp9Ci5wYW5lbC1kYW5nZXIgewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC1kYW5nZXItYm9yZGVyOyBAcGFuZWwtZGFuZ2VyLXRleHQ7IEBwYW5lbC1kYW5nZXItaGVhZGluZy1iZzsgQHBhbmVsLWRhbmdlci1ib3JkZXIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/popovers.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUG9wb3ZlcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoucG9wb3ZlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IEB6aW5kZXgtcG9wb3ZlcjsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogQHBvcG92ZXItbWF4LXdpZHRoOwogIHBhZGRpbmc6IDFweDsKICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBSZXNldCBnaXZlbiBuZXcgaW5zZXJ0aW9uIG1ldGhvZAogIGJhY2tncm91bmQtY29sb3I6IEBwb3BvdmVyLWJnOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgQHBvcG92ZXItZmFsbGJhY2stYm9yZGVyLWNvbG9yOwogIGJvcmRlcjogMXB4IHNvbGlkIEBwb3BvdmVyLWJvcmRlci1jb2xvcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKICAuYm94LXNoYWRvdygwIDVweCAxMHB4IHJnYmEoMCwwLDAsLjIpKTsKCiAgLy8gT3ZlcnJpZGVzIGZvciBwcm9wZXIgaW5zZXJ0aW9uCiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKCiAgLy8gT2Zmc2V0IHRoZSBwb3BvdmVyIHRvIGFjY291bnQgZm9yIHRoZSBwb3BvdmVyIGFycm93CiAgJi50b3AgICAgIHsgbWFyZ2luLXRvcDogLUBwb3BvdmVyLWFycm93LXdpZHRoOyB9CiAgJi5yaWdodCAgIHsgbWFyZ2luLWxlZnQ6IEBwb3BvdmVyLWFycm93LXdpZHRoOyB9CiAgJi5ib3R0b20gIHsgbWFyZ2luLXRvcDogQHBvcG92ZXItYXJyb3ctd2lkdGg7IH0KICAmLmxlZnQgICAgeyBtYXJnaW4tbGVmdDogLUBwb3BvdmVyLWFycm93LXdpZHRoOyB9Cn0KCi5wb3BvdmVyLXRpdGxlIHsKICBtYXJnaW46IDA7IC8vIHJlc2V0IGhlYWRpbmcgbWFyZ2luCiAgcGFkZGluZzogOHB4IDE0cHg7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLWJhc2U7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMThweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAcG9wb3Zlci10aXRsZS1iZzsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgZGFya2VuKEBwb3BvdmVyLXRpdGxlLWJnLCA1JSk7CiAgYm9yZGVyLXJhZGl1czogKEBib3JkZXItcmFkaXVzLWxhcmdlIC0gMSkgKEBib3JkZXItcmFkaXVzLWxhcmdlIC0gMSkgMCAwOwp9CgoucG9wb3Zlci1jb250ZW50IHsKICBwYWRkaW5nOiA5cHggMTRweDsKfQoKLy8gQXJyb3dzCi8vCi8vIC5hcnJvdyBpcyBvdXRlciwgLmFycm93OmFmdGVyIGlzIGlubmVyCgoucG9wb3ZlciA+IC5hcnJvdyB7CiAgJiwKICAmOmFmdGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDA7CiAgICBoZWlnaHQ6IDA7CiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICB9Cn0KLnBvcG92ZXIgPiAuYXJyb3cgewogIGJvcmRlci13aWR0aDogQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7Cn0KLnBvcG92ZXIgPiAuYXJyb3c6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogQHBvcG92ZXItYXJyb3ctd2lkdGg7CiAgY29udGVudDogIiI7Cn0KCi5wb3BvdmVyIHsKICAmLnRvcCA+IC5hcnJvdyB7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLUBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKICAgIGJvcmRlci10b3AtY29sb3I6IEBwb3BvdmVyLWFycm93LW91dGVyLWZhbGxiYWNrLWNvbG9yOyAvLyBJRTggZmFsbGJhY2sKICAgIGJvcmRlci10b3AtY29sb3I6IEBwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOwogICAgYm90dG9tOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICAmOmFmdGVyIHsKICAgICAgY29udGVudDogIiAiOwogICAgICBib3R0b206IDFweDsKICAgICAgbWFyZ2luLWxlZnQ6IC1AcG9wb3Zlci1hcnJvdy13aWR0aDsKICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogQHBvcG92ZXItYXJyb3ctY29sb3I7CiAgICB9CiAgfQogICYucmlnaHQgPiAuYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBtYXJnaW4tdG9wOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItbGVmdC13aWR0aDogMDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiICI7CiAgICAgIGxlZnQ6IDFweDsKICAgICAgYm90dG9tOiAtQHBvcG92ZXItYXJyb3ctd2lkdGg7CiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogICAgICBib3JkZXItcmlnaHQtY29sb3I6IEBwb3BvdmVyLWFycm93LWNvbG9yOwogICAgfQogIH0KICAmLmJvdHRvbSA+IC5hcnJvdyB7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLUBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOwogICAgYm9yZGVyLXRvcC13aWR0aDogMDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBwb3BvdmVyLWFycm93LW91dGVyLWZhbGxiYWNrLWNvbG9yOyAvLyBJRTggZmFsbGJhY2sKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOwogICAgdG9wOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICAmOmFmdGVyIHsKICAgICAgY29udGVudDogIiAiOwogICAgICB0b3A6IDFweDsKICAgICAgbWFyZ2luLWxlZnQ6IC1AcG9wb3Zlci1hcnJvdy13aWR0aDsKICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHBvcG92ZXItYXJyb3ctY29sb3I7CiAgICB9CiAgfQoKICAmLmxlZnQgPiAuYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICByaWdodDogLUBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOwogICAgbWFyZ2luLXRvcDogLUBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgYm9yZGVyLWxlZnQtY29sb3I6IEBwb3BvdmVyLWFycm93LW91dGVyLWZhbGxiYWNrLWNvbG9yOyAvLyBJRTggZmFsbGJhY2sKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiICI7CiAgICAgIHJpZ2h0OiAxcHg7CiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDsKICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IEBwb3BvdmVyLWFycm93LWNvbG9yOwogICAgICBib3R0b206IC1AcG9wb3Zlci1hcnJvdy13aWR0aDsKICAgIH0KICB9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/print.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQmFzaWMgcHJpbnQgc3R5bGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvY3NzL21haW4uY3NzCgpAbWVkaWEgcHJpbnQgewoKICAqIHsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zCiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogIH0KCiAgYSwKICBhOnZpc2l0ZWQgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQoKICBhW2hyZWZdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgKCIgYXR0cihocmVmKSAiKSI7CiAgfQoKICBhYmJyW3RpdGxlXTphZnRlciB7CiAgICBjb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKICB9CgogIC8vIERvbid0IHNob3cgbGlua3MgZm9yIGltYWdlcywgb3IgamF2YXNjcmlwdC9pbnRlcm5hbCBsaW5rcwogIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIsCiAgYVtocmVmXj0iIyJdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogIH0KCiAgcHJlLAogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CgogIHRoZWFkIHsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgLy8gaDVicC5jb20vdAogIH0KCiAgdHIsCiAgaW1nIHsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CgogIGltZyB7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICB9CgogIHAsCiAgaDIsCiAgaDMgewogICAgb3JwaGFuczogMzsKICAgIHdpZG93czogMzsKICB9CgogIGgyLAogIGgzIHsKICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOwogIH0KCiAgLy8gQ2hyb21lIChPU1gpIGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTI0NQogIC8vIE9uY2UgZml4ZWQsIHdlIGNhbiBqdXN0IHN0cmFpZ2h0IHVwIHJlbW92ZSB0aGlzLgogIHNlbGVjdCB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7CiAgfQoKICAvLyBCb290c3RyYXAgY29tcG9uZW50cwogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLnRhYmxlIHsKICAgIHRkLAogICAgdGggewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7CiAgICB9CiAgfQogIC5idG4sCiAgLmRyb3B1cCA+IC5idG4gewogICAgPiAuY2FyZXQgewogICAgICBib3JkZXItdG9wLWNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7CiAgICB9CiAgfQogIC5sYWJlbCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogIH0KCiAgLnRhYmxlIHsKICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWJvcmRlcmVkIHsKICAgIHRoLAogICAgdGQgewogICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkICFpbXBvcnRhbnQ7CiAgICB9CiAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/progress-bars.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUHJvZ3Jlc3MgYmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhciBhbmltYXRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFdlYktpdApALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOyB9CiAgdG8gICAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KfQoKLy8gU3BlYyBhbmQgSUUxMCsKQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MHB4IDA7IH0KICB0byAgICB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfQp9CgoKCi8vIEJhciBpdHNlbGYKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gT3V0ZXIgY29udGFpbmVyCi5wcm9ncmVzcyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBoZWlnaHQ6IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYmFja2dyb3VuZC1jb2xvcjogQHByb2dyZXNzLWJnOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpKTsKfQoKLy8gQmFyIG9mIHByb2dyZXNzCi5wcm9ncmVzcy1iYXIgewogIGZsb2F0OiBsZWZ0OwogIHdpZHRoOiAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgY29sb3I6IEBwcm9ncmVzcy1iYXItY29sb3I7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IEBwcm9ncmVzcy1iYXItYmc7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwuMTUpKTsKICAudHJhbnNpdGlvbih3aWR0aCAuNnMgZWFzZSk7Cn0KCi8vIFN0cmlwZWQgYmFycwovLwovLyBgLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhcmAgaXMgZGVwcmVjYXRlZCBhcyBvZiB2My4yLjAgaW4gZmF2b3Igb2YgdGhlCi8vIGAucHJvZ3Jlc3MtYmFyLXN0cmlwZWRgIGNsYXNzLCB3aGljaCB5b3UganVzdCBhZGQgdG8gYW4gZXhpc3RpbmcKLy8gYC5wcm9ncmVzcy1iYXJgLgoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLAoucHJvZ3Jlc3MtYmFyLXN0cmlwZWQgewogICNncmFkaWVudCA+IC5zdHJpcGVkKCk7CiAgYmFja2dyb3VuZC1zaXplOiA0MHB4IDQwcHg7Cn0KCi8vIENhbGwgYW5pbWF0aW9uIGZvciB0aGUgYWN0aXZlIG9uZQovLwovLyBgLnByb2dyZXNzLmFjdGl2ZSAucHJvZ3Jlc3MtYmFyYCBpcyBkZXByZWNhdGVkIGFzIG9mIHYzLjIuMCBpbiBmYXZvciBvZiB0aGUKLy8gYC5wcm9ncmVzcy1iYXIuYWN0aXZlYCBhcHByb2FjaC4KLnByb2dyZXNzLmFjdGl2ZSAucHJvZ3Jlc3MtYmFyLAoucHJvZ3Jlc3MtYmFyLmFjdGl2ZSB7CiAgLmFuaW1hdGlvbihwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGUpOwp9CgovLyBBY2NvdW50IGZvciBsb3dlciBwZXJjZW50YWdlcwoucHJvZ3Jlc3MtYmFyIHsKICAmW2FyaWEtdmFsdWVub3c9IjEiXSwKICAmW2FyaWEtdmFsdWVub3c9IjIiXSB7CiAgICBtaW4td2lkdGg6IDMwcHg7CiAgfQoKICAmW2FyaWEtdmFsdWVub3c9IjAiXSB7CiAgICBjb2xvcjogQGdyYXktbGlnaHQ7CiAgICBtaW4td2lkdGg6IDMwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICBib3gtc2hhZG93OiBub25lOwogIH0KfQoKCgovLyBWYXJpYXRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5wcm9ncmVzcy1iYXItc3VjY2VzcyB7CiAgLnByb2dyZXNzLWJhci12YXJpYW50KEBwcm9ncmVzcy1iYXItc3VjY2Vzcy1iZyk7Cn0KCi5wcm9ncmVzcy1iYXItaW5mbyB7CiAgLnByb2dyZXNzLWJhci12YXJpYW50KEBwcm9ncmVzcy1iYXItaW5mby1iZyk7Cn0KCi5wcm9ncmVzcy1iYXItd2FybmluZyB7CiAgLnByb2dyZXNzLWJhci12YXJpYW50KEBwcm9ncmVzcy1iYXItd2FybmluZy1iZyk7Cn0KCi5wcm9ncmVzcy1iYXItZGFuZ2VyIHsKICAucHJvZ3Jlc3MtYmFyLXZhcmlhbnQoQHByb2dyZXNzLWJhci1kYW5nZXItYmcpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/responsive-embed.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gRW1iZWRzIHJlc3BvbnNpdmUKLy8KLy8gQ3JlZGl0OiBOaWNvbGFzIEdhbGxhZ2hlciBhbmQgU1VJVCBDU1MuCgouZW1iZWQtcmVzcG9uc2l2ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMDsKICBwYWRkaW5nOiAwOwogIG92ZXJmbG93OiBoaWRkZW47CgogIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sCiAgaWZyYW1lLAogIGVtYmVkLAogIG9iamVjdCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgYm90dG9tOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IDA7CiAgfQoKICAvLyBNb2RpZmllciBjbGFzcyBmb3IgMTY6OSBhc3BlY3QgcmF0aW8KICAmLmVtYmVkLXJlc3BvbnNpdmUtMTZieTkgewogICAgcGFkZGluZy1ib3R0b206IDU2LjI1JTsKICB9CgogIC8vIE1vZGlmaWVyIGNsYXNzIGZvciA0OjMgYXNwZWN0IHJhdGlvCiAgJi5lbWJlZC1yZXNwb25zaXZlLTRieTMgewogICAgcGFkZGluZy1ib3R0b206IDc1JTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/responsive-utilities.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUmVzcG9uc2l2ZTogVXRpbGl0eSBjbGFzc2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gSUUxMCBpbiBXaW5kb3dzIChQaG9uZSkgOAovLwovLyBTdXBwb3J0IGZvciByZXNwb25zaXZlIHZpZXdzIHZpYSBtZWRpYSBxdWVyaWVzIGlzIGtpbmQgb2YgYm9ya2VkIGluIElFMTAsIGZvcgovLyBTdXJmYWNlL2Rlc2t0b3AgaW4gc3BsaXQgdmlldyBhbmQgZm9yIFdpbmRvd3MgUGhvbmUgOC4gVGhpcyBwYXJ0aWN1bGFyIGZpeAovLyBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgc25pcHBldCBvZiBKYXZhU2NyaXB0IHRvIHNuaWZmIHRoZSB1c2VyIGFnZW50IGFuZAovLyBhcHBseSBzb21lIGNvbmRpdGlvbmFsIENTUyB0byAqb25seSogdGhlIFN1cmZhY2UvZGVza3RvcCBXaW5kb3dzIDguIExvb2sgYXQKLy8gb3VyIEdldHRpbmcgU3RhcnRlZCBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgYnVnLgovLwovLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBmb2xsb3dpbmc6Ci8vCi8vIElzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzEwNDk3Ci8vIERvY3M6IGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2dldHRpbmctc3RhcnRlZC8jc3VwcG9ydC1pZTEwLXdpZHRoCi8vIFNvdXJjZTogaHR0cDovL3RpbWthZGxlYy5jb20vMjAxMy8wMS93aW5kb3dzLXBob25lLTgtYW5kLWRldmljZS13aWR0aC8KLy8gU291cmNlOiBodHRwOi8vdGlta2FkbGVjLmNvbS8yMDEyLzEwL2llMTAtc25hcC1tb2RlLWFuZC1yZXNwb25zaXZlLWRlc2lnbi8KCkAtbXMtdmlld3BvcnQgewogIHdpZHRoOiBkZXZpY2Utd2lkdGg7Cn0KCgovLyBWaXNpYmlsaXR5IHV0aWxpdGllcwovLyBOb3RlOiBEZXByZWNhdGVkIC52aXNpYmxlLXhzLCAudmlzaWJsZS1zbSwgLnZpc2libGUtbWQsIGFuZCAudmlzaWJsZS1sZyBhcyBvZiB2My4yLjAKLnZpc2libGUteHMsCi52aXNpYmxlLXNtLAoudmlzaWJsZS1tZCwKLnZpc2libGUtbGcgewogIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwp9CgoudmlzaWJsZS14cy1ibG9jaywKLnZpc2libGUteHMtaW5saW5lLAoudmlzaWJsZS14cy1pbmxpbmUtYmxvY2ssCi52aXNpYmxlLXNtLWJsb2NrLAoudmlzaWJsZS1zbS1pbmxpbmUsCi52aXNpYmxlLXNtLWlubGluZS1ibG9jaywKLnZpc2libGUtbWQtYmxvY2ssCi52aXNpYmxlLW1kLWlubGluZSwKLnZpc2libGUtbWQtaW5saW5lLWJsb2NrLAoudmlzaWJsZS1sZy1ibG9jaywKLnZpc2libGUtbGctaW5saW5lLAoudmlzaWJsZS1sZy1pbmxpbmUtYmxvY2sgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLnZpc2libGUteHMgewogIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KfQoudmlzaWJsZS14cy1ibG9jayB7CiAgQG1lZGlhIChtYXgtd2lkdGg6IEBzY3JlZW4teHMtbWF4KSB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KfQoudmlzaWJsZS14cy1pbmxpbmUgewogIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLXhzLWlubGluZS1ibG9jayB7CiAgQG1lZGlhIChtYXgtd2lkdGg6IEBzY3JlZW4teHMtbWF4KSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KCi52aXNpYmxlLXNtIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KfQoudmlzaWJsZS1zbS1ibG9jayB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLXNtLWlubGluZSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KfQoudmlzaWJsZS1zbS1pbmxpbmUtYmxvY2sgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtLW1pbikgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tc20tbWF4KSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KCi52aXNpYmxlLW1kIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZC1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLW1kLW1heCkgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KfQoudmlzaWJsZS1tZC1ibG9jayB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQp9Ci52aXNpYmxlLW1kLWlubGluZSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQtbWluKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KfQoudmlzaWJsZS1tZC1pbmxpbmUtYmxvY2sgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tbWQtbWF4KSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KCi52aXNpYmxlLWxnIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICB9Cn0KLnZpc2libGUtbGctYmxvY2sgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLW1pbikgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9Cn0KLnZpc2libGUtbGctaW5saW5lIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZy1taW4pIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KfQoudmlzaWJsZS1sZy1pbmxpbmUtYmxvY2sgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLW1pbikgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQp9CgouaGlkZGVuLXhzIHsKICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KfQouaGlkZGVuLXNtIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbS1taW4pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgfQp9Ci5oaWRkZW4tbWQgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kLW1pbikgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tbWQtbWF4KSB7CiAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICB9Cn0KLmhpZGRlbi1sZyB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGctbWluKSB7CiAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICB9Cn0KCgovLyBQcmludCB1dGlsaXRpZXMKLy8KLy8gTWVkaWEgcXVlcmllcyBhcmUgcGxhY2VkIG9uIHRoZSBpbnNpZGUgdG8gYmUgbWl4aW4tZnJpZW5kbHkuCgovLyBOb3RlOiBEZXByZWNhdGVkIC52aXNpYmxlLXByaW50IGFzIG9mIHYzLjIuMAoudmlzaWJsZS1wcmludCB7CiAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CgogIEBtZWRpYSBwcmludCB7CiAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgfQp9Ci52aXNpYmxlLXByaW50LWJsb2NrIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CgogIEBtZWRpYSBwcmludCB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KfQoudmlzaWJsZS1wcmludC1pbmxpbmUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKCiAgQG1lZGlhIHByaW50IHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KfQoudmlzaWJsZS1wcmludC1pbmxpbmUtYmxvY2sgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKCiAgQG1lZGlhIHByaW50IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KfQoKLmhpZGRlbi1wcmludCB7CiAgQG1lZGlhIHByaW50IHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/scaffolding.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gU2NhZmZvbGRpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBSZXNldCB0aGUgYm94LXNpemluZwovLwovLyBIZWFkcyB1cCEgVGhpcyByZXNldCBtYXkgY2F1c2UgY29uZmxpY3RzIHdpdGggc29tZSB0aGlyZC1wYXJ0eSB3aWRnZXRzLgovLyBGb3IgcmVjb21tZW5kYXRpb25zIG9uIHJlc29sdmluZyBzdWNoIGNvbmZsaWN0cywgc2VlCi8vIGh0dHA6Ly9nZXRib290c3RyYXAuY29tL2dldHRpbmctc3RhcnRlZC8jdGhpcmQtYm94LXNpemluZwoqIHsKICAuYm94LXNpemluZyhib3JkZXItYm94KTsKfQoqOmJlZm9yZSwKKjphZnRlciB7CiAgLmJveC1zaXppbmcoYm9yZGVyLWJveCk7Cn0KCgovLyBCb2R5IHJlc2V0CgpodG1sIHsKICBmb250LXNpemU6IDEwcHg7CiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLDApOwp9Cgpib2R5IHsKICBmb250LWZhbWlseTogQGZvbnQtZmFtaWx5LWJhc2U7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLWJhc2U7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogIGNvbG9yOiBAdGV4dC1jb2xvcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAYm9keS1iZzsKfQoKLy8gUmVzZXQgZm9udHMgZm9yIHJlbGV2YW50IGVsZW1lbnRzCmlucHV0LApidXR0b24sCnNlbGVjdCwKdGV4dGFyZWEgewogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKfQoKCi8vIExpbmtzCgphIHsKICBjb2xvcjogQGxpbmstY29sb3I7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwoKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgY29sb3I6IEBsaW5rLWhvdmVyLWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQoKICAmOmZvY3VzIHsKICAgIC50YWItZm9jdXMoKTsKICB9Cn0KCgovLyBGaWd1cmVzCi8vCi8vIFdlIHJlc2V0IHRoaXMgaGVyZSBiZWNhdXNlIHByZXZpb3VzbHkgTm9ybWFsaXplIGhhZCBubyBgZmlndXJlYCBtYXJnaW5zLiBUaGlzCi8vIGVuc3VyZXMgd2UgZG9uJ3QgYnJlYWsgYW55b25lJ3MgdXNlIG9mIHRoZSBlbGVtZW50LgoKZmlndXJlIHsKICBtYXJnaW46IDA7Cn0KCgovLyBJbWFnZXMKCmltZyB7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLy8gUmVzcG9uc2l2ZSBpbWFnZXMgKGVuc3VyZSBpbWFnZXMgZG9uJ3Qgc2NhbGUgYmV5b25kIHRoZWlyIHBhcmVudHMpCi5pbWctcmVzcG9uc2l2ZSB7CiAgLmltZy1yZXNwb25zaXZlKCk7Cn0KCi8vIFJvdW5kZWQgY29ybmVycwouaW1nLXJvdW5kZWQgewogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWxhcmdlOwp9CgovLyBJbWFnZSB0aHVtYm5haWxzCi8vCi8vIEhlYWRzIHVwISBUaGlzIGlzIG1peGluLWVkIGludG8gdGh1bWJuYWlscy5sZXNzIGZvciBgLnRodW1ibmFpbGAuCi5pbWctdGh1bWJuYWlsIHsKICBwYWRkaW5nOiBAdGh1bWJuYWlsLXBhZGRpbmc7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogIGJhY2tncm91bmQtY29sb3I6IEB0aHVtYm5haWwtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgQHRodW1ibmFpbC1ib3JkZXI7CiAgYm9yZGVyLXJhZGl1czogQHRodW1ibmFpbC1ib3JkZXItcmFkaXVzOwogIC50cmFuc2l0aW9uKGFsbCAuMnMgZWFzZS1pbi1vdXQpOwoKICAvLyBLZWVwIHRoZW0gYXQgbW9zdCAxMDAlIHdpZGUKICAuaW1nLXJlc3BvbnNpdmUoaW5saW5lLWJsb2NrKTsKfQoKLy8gUGVyZmVjdCBjaXJjbGUKLmltZy1jaXJjbGUgewogIGJvcmRlci1yYWRpdXM6IDUwJTsgLy8gc2V0IHJhZGl1cyBpbiBwZXJjZW50cwp9CgoKLy8gSG9yaXpvbnRhbCBydWxlcwoKaHIgewogIG1hcmdpbi10b3A6ICAgIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyOiAwOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCBAaHItYm9yZGVyOwp9CgoKLy8gT25seSBkaXNwbGF5IGNvbnRlbnQgdG8gc2NyZWVuIHJlYWRlcnMKLy8KLy8gU2VlOiBodHRwOi8vYTExeXByb2plY3QuY29tL3Bvc3RzL2hvdy10by1oaWRlLWNvbnRlbnQvCgouc3Itb25seSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiAtMXB4OwogIHBhZGRpbmc6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsMCwwLDApOwogIGJvcmRlcjogMDsKfQoKLy8gVXNlIGluIGNvbmp1bmN0aW9uIHdpdGggLnNyLW9ubHkgdG8gb25seSBkaXNwbGF5IGNvbnRlbnQgd2hlbiBpdCdzIGZvY3VzZWQuCi8vIFVzZWZ1bCBmb3IgIlNraXAgdG8gbWFpbiBjb250ZW50IiBsaW5rczsgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMvTk9URS1XQ0FHMjAtVEVDSFMtMjAxMzA5MDUvRzEKLy8gQ3JlZGl0OiBIVE1MNSBCb2lsZXJwbGF0ZQoKLnNyLW9ubHktZm9jdXNhYmxlIHsKICAmOmFjdGl2ZSwKICAmOmZvY3VzIHsKICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICB3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIG1hcmdpbjogMDsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgY2xpcDogYXV0bzsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/tables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVGFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdGFibGUgewogIGJhY2tncm91bmQtY29sb3I6IEB0YWJsZS1iZzsKfQp0aCB7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoKCi8vIEJhc2VsaW5lIHN0eWxlcwoKLnRhYmxlIHsKICB3aWR0aDogMTAwJTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIC8vIENlbGxzCiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIHBhZGRpbmc6IEB0YWJsZS1jZWxsLXBhZGRpbmc7CiAgICAgICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KICB9CiAgLy8gQm90dG9tIGFsaWduIGZvciBjb2x1bW4gaGVhZGluZ3MKICA+IHRoZWFkID4gdHIgPiB0aCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgfQogIC8vIFJlbW92ZSB0b3AgYm9yZGVyIGZyb20gdGhlYWQgYnkgZGVmYXVsdAogID4gY2FwdGlvbiArIHRoZWFkLAogID4gY29sZ3JvdXAgKyB0aGVhZCwKICA+IHRoZWFkOmZpcnN0LWNoaWxkIHsKICAgID4gdHI6Zmlyc3QtY2hpbGQgewogICAgICA+IHRoLAogICAgICA+IHRkIHsKICAgICAgICBib3JkZXItdG9wOiAwOwogICAgICB9CiAgICB9CiAgfQogIC8vIEFjY291bnQgZm9yIG11bHRpcGxlIHRib2R5IGluc3RhbmNlcwogID4gdGJvZHkgKyB0Ym9keSB7CiAgICBib3JkZXItdG9wOiAycHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKICB9CgogIC8vIE5lc3RpbmcKICAudGFibGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogQGJvZHktYmc7CiAgfQp9CgoKLy8gQ29uZGVuc2VkIHRhYmxlIHcvIGhhbGYgcGFkZGluZwoKLnRhYmxlLWNvbmRlbnNlZCB7CiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIHBhZGRpbmc6IEB0YWJsZS1jb25kZW5zZWQtY2VsbC1wYWRkaW5nOwogICAgICB9CiAgICB9CiAgfQp9CgoKLy8gQm9yZGVyZWQgdmVyc2lvbgovLwovLyBBZGQgYm9yZGVycyBhbGwgYXJvdW5kIHRoZSB0YWJsZSBhbmQgYmV0d2VlbiBhbGwgdGhlIGNvbHVtbnMuCgoudGFibGUtYm9yZGVyZWQgewogIGJvcmRlcjogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgPiB0aGVhZCwKICA+IHRib2R5LAogID4gdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KICB9CiAgPiB0aGVhZCA+IHRyIHsKICAgID4gdGgsCiAgICA+IHRkIHsKICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4OwogICAgfQogIH0KfQoKCi8vIFplYnJhLXN0cmlwaW5nCi8vCi8vIERlZmF1bHQgemVicmEtc3RyaXBlIHN0eWxlcyAoYWx0ZXJuYXRpbmcgZ3JheSBhbmQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMpCgoudGFibGUtc3RyaXBlZCB7CiAgPiB0Ym9keSA+IHRyOm50aC1jaGlsZChvZGQpIHsKICAgID4gdGQsCiAgICA+IHRoIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHRhYmxlLWJnLWFjY2VudDsKICAgIH0KICB9Cn0KCgovLyBIb3ZlciBlZmZlY3QKLy8KLy8gUGxhY2VkIGhlcmUgc2luY2UgaXQgaGFzIHRvIGNvbWUgYWZ0ZXIgdGhlIHBvdGVudGlhbCB6ZWJyYSBzdHJpcGluZwoKLnRhYmxlLWhvdmVyIHsKICA+IHRib2R5ID4gdHI6aG92ZXIgewogICAgPiB0ZCwKICAgID4gdGggewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAdGFibGUtYmctaG92ZXI7CiAgICB9CiAgfQp9CgoKLy8gVGFibGUgY2VsbCBzaXppbmcKLy8KLy8gUmVzZXQgZGVmYXVsdCB0YWJsZSBiZWhhdmlvcgoKdGFibGUgY29sW2NsYXNzKj0iY29sLSJdIHsKICBwb3NpdGlvbjogc3RhdGljOyAvLyBQcmV2ZW50IGJvcmRlciBoaWRpbmcgaW4gRmlyZWZveCBhbmQgSUU5LzEwIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTYyMykKICBmbG9hdDogbm9uZTsKICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47Cn0KdGFibGUgewogIHRkLAogIHRoIHsKICAgICZbY2xhc3MqPSJjb2wtIl0gewogICAgICBwb3NpdGlvbjogc3RhdGljOyAvLyBQcmV2ZW50IGJvcmRlciBoaWRpbmcgaW4gRmlyZWZveCBhbmQgSUU5LzEwIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xMTYyMykKICAgICAgZmxvYXQ6IG5vbmU7CiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICB9CiAgfQp9CgoKLy8gVGFibGUgYmFja2dyb3VuZHMKLy8KLy8gRXhhY3Qgc2VsZWN0b3JzIGJlbG93IHJlcXVpcmVkIHRvIG92ZXJyaWRlIGAudGFibGUtc3RyaXBlZGAgYW5kIHByZXZlbnQKLy8gaW5oZXJpdGFuY2UgdG8gbmVzdGVkIHRhYmxlcy4KCi8vIEdlbmVyYXRlIHRoZSBjb250ZXh0dWFsIHZhcmlhbnRzCi50YWJsZS1yb3ctdmFyaWFudChhY3RpdmU7IEB0YWJsZS1iZy1hY3RpdmUpOwoudGFibGUtcm93LXZhcmlhbnQoc3VjY2VzczsgQHN0YXRlLXN1Y2Nlc3MtYmcpOwoudGFibGUtcm93LXZhcmlhbnQoaW5mbzsgQHN0YXRlLWluZm8tYmcpOwoudGFibGUtcm93LXZhcmlhbnQod2FybmluZzsgQHN0YXRlLXdhcm5pbmctYmcpOwoudGFibGUtcm93LXZhcmlhbnQoZGFuZ2VyOyBAc3RhdGUtZGFuZ2VyLWJnKTsKCgovLyBSZXNwb25zaXZlIHRhYmxlcwovLwovLyBXcmFwIHlvdXIgdGFibGVzIGluIGAudGFibGUtcmVzcG9uc2l2ZWAgYW5kIHdlJ2xsIG1ha2UgdGhlbSBtb2JpbGUgZnJpZW5kbHkKLy8gYnkgZW5hYmxpbmcgaG9yaXpvbnRhbCBzY3JvbGxpbmcuIE9ubHkgYXBwbGllcyA8NzY4cHguIEV2ZXJ5dGhpbmcgYWJvdmUgdGhhdAovLyB3aWxsIGRpc3BsYXkgbm9ybWFsbHkuCgoudGFibGUtcmVzcG9uc2l2ZSB7CiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWFyZ2luLWJvdHRvbTogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAqIDAuNzUpOwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogICAgYm9yZGVyOiAxcHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCiAgICAvLyBUaWdodGVuIHVwIHNwYWNpbmcKICAgID4gLnRhYmxlIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMDsKCiAgICAgIC8vIEVuc3VyZSB0aGUgY29udGVudCBkb2Vzbid0IHdyYXAKICAgICAgPiB0aGVhZCwKICAgICAgPiB0Ym9keSwKICAgICAgPiB0Zm9vdCB7CiAgICAgICAgPiB0ciB7CiAgICAgICAgICA+IHRoLAogICAgICAgICAgPiB0ZCB7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gU3BlY2lhbCBvdmVycmlkZXMgZm9yIHRoZSBib3JkZXJlZCB0YWJsZXMKICAgID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgICAgYm9yZGVyOiAwOwoKICAgICAgLy8gTnVrZSB0aGUgYXBwcm9wcmlhdGUgYm9yZGVycyBzbyB0aGF0IHRoZSBwYXJlbnQgY2FuIGhhbmRsZSB0aGVtCiAgICAgID4gdGhlYWQsCiAgICAgID4gdGJvZHksCiAgICAgID4gdGZvb3QgewogICAgICAgID4gdHIgewogICAgICAgICAgPiB0aDpmaXJzdC1jaGlsZCwKICAgICAgICAgID4gdGQ6Zmlyc3QtY2hpbGQgewogICAgICAgICAgICBib3JkZXItbGVmdDogMDsKICAgICAgICAgIH0KICAgICAgICAgID4gdGg6bGFzdC1jaGlsZCwKICAgICAgICAgID4gdGQ6bGFzdC1jaGlsZCB7CiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIE9ubHkgbnVrZSB0aGUgbGFzdCByb3cncyBib3R0b20tYm9yZGVyIGluIGB0Ym9keWAgYW5kIGB0Zm9vdGAgc2luY2UKICAgICAgLy8gY2hhbmNlcyBhcmUgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSBgdHJgIGluIGEgYHRoZWFkYCBhbmQgdGhhdCB3b3VsZAogICAgICAvLyByZW1vdmUgdGhlIGJvcmRlciBhbHRvZ2V0aGVyLgogICAgICA+IHRib2R5LAogICAgICA+IHRmb290IHsKICAgICAgICA+IHRyOmxhc3QtY2hpbGQgewogICAgICAgICAgPiB0aCwKICAgICAgICAgID4gdGQgewogICAgICAgICAgICBib3JkZXItYm90dG9tOiAwOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/theme.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vCi8vIExvYWQgY29yZSB2YXJpYWJsZXMgYW5kIG1peGlucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGltcG9ydCAidmFyaWFibGVzLmxlc3MiOwpAaW1wb3J0ICJtaXhpbnMubGVzcyI7CgoKCi8vCi8vIEJ1dHRvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENvbW1vbiBzdHlsZXMKLmJ0bi1kZWZhdWx0LAouYnRuLXByaW1hcnksCi5idG4tc3VjY2VzcywKLmJ0bi1pbmZvLAouYnRuLXdhcm5pbmcsCi5idG4tZGFuZ2VyIHsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLDAsMCwuMik7CiAgQHNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xNSksIDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpOwogIC5ib3gtc2hhZG93KEBzaGFkb3cpOwoKICAvLyBSZXNldCB0aGUgc2hhZG93CiAgJjphY3RpdmUsCiAgJi5hY3RpdmUgewogICAgLmJveC1zaGFkb3coaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSkpOwogIH0KfQoKLy8gTWl4aW4gZm9yIGdlbmVyYXRpbmcgbmV3IHN0eWxlcwouYnRuLXN0eWxlcyhAYnRuLWNvbG9yOiAjNTU1KSB7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogQGJ0bi1jb2xvcjsgQGVuZC1jb2xvcjogZGFya2VuKEBidG4tY29sb3IsIDEyJSkpOwogIC5yZXNldC1maWx0ZXIoKTsgLy8gRGlzYWJsZSBncmFkaWVudHMgZm9yIElFOSBiZWNhdXNlIGZpbHRlciBibGVlZHMgdGhyb3VnaCByb3VuZGVkIGNvcm5lcnMKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQGJ0bi1jb2xvciwgMTQlKTsKCiAgJjpob3ZlciwKICAmOmZvY3VzICB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGJ0bi1jb2xvciwgMTIlKTsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7CiAgfQoKICAmOmFjdGl2ZSwKICAmLmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGJ0bi1jb2xvciwgMTIlKTsKICAgIGJvcmRlci1jb2xvcjogZGFya2VuKEBidG4tY29sb3IsIDE0JSk7CiAgfQoKICAmOmRpc2FibGVkLAogICZbZGlzYWJsZWRdIHsKICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihAYnRuLWNvbG9yLCAxMiUpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICB9Cn0KCi8vIENvbW1vbiBzdHlsZXMKLmJ0biB7CiAgLy8gUmVtb3ZlIHRoZSBncmFkaWVudCBmb3IgdGhlIHByZXNzZWQvYWN0aXZlIHN0YXRlCiAgJjphY3RpdmUsCiAgJi5hY3RpdmUgewogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICB9Cn0KCi8vIEFwcGx5IHRoZSBtaXhpbiB0byB0aGUgYnV0dG9ucwouYnRuLWRlZmF1bHQgeyAuYnRuLXN0eWxlcyhAYnRuLWRlZmF1bHQtYmcpOyB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOyBib3JkZXItY29sb3I6ICNjY2M7IH0KLmJ0bi1wcmltYXJ5IHsgLmJ0bi1zdHlsZXMoQGJ0bi1wcmltYXJ5LWJnKTsgfQouYnRuLXN1Y2Nlc3MgeyAuYnRuLXN0eWxlcyhAYnRuLXN1Y2Nlc3MtYmcpOyB9Ci5idG4taW5mbyAgICB7IC5idG4tc3R5bGVzKEBidG4taW5mby1iZyk7IH0KLmJ0bi13YXJuaW5nIHsgLmJ0bi1zdHlsZXMoQGJ0bi13YXJuaW5nLWJnKTsgfQouYnRuLWRhbmdlciAgeyAuYnRuLXN0eWxlcyhAYnRuLWRhbmdlci1iZyk7IH0KCgoKLy8KLy8gSW1hZ2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoudGh1bWJuYWlsLAouaW1nLXRodW1ibmFpbCB7CiAgLmJveC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwwLDAsLjA3NSkpOwp9CgoKCi8vCi8vIERyb3Bkb3ducwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGE6aG92ZXIsCi5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmZvY3VzIHsKICAjZ3JhZGllbnQgPiAudmVydGljYWwoQHN0YXJ0LWNvbG9yOiBAZHJvcGRvd24tbGluay1ob3Zlci1iZzsgQGVuZC1jb2xvcjogZGFya2VuKEBkcm9wZG93bi1saW5rLWhvdmVyLWJnLCA1JSkpOwogIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihAZHJvcGRvd24tbGluay1ob3Zlci1iZywgNSUpOwp9Ci5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGEsCi5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6aG92ZXIsCi5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSA+IGE6Zm9jdXMgewogICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IEBkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzsgQGVuZC1jb2xvcjogZGFya2VuKEBkcm9wZG93bi1saW5rLWFjdGl2ZS1iZywgNSUpKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnLCA1JSk7Cn0KCgoKLy8KLy8gTmF2YmFyCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBEZWZhdWx0IG5hdmJhcgoubmF2YmFyLWRlZmF1bHQgewogICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IGxpZ2h0ZW4oQG5hdmJhci1kZWZhdWx0LWJnLCAxMCUpOyBAZW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYmcpOwogIC5yZXNldC1maWx0ZXIoKTsgLy8gUmVtb3ZlIGdyYWRpZW50IGluIElFPDEwIHRvIGZpeCBidWcgd2hlcmUgZHJvcGRvd25zIGRvbid0IGdldCB0cmlnZ2VyZWQKICBib3JkZXItcmFkaXVzOiBAbmF2YmFyLWJvcmRlci1yYWRpdXM7CiAgQHNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xNSksIDAgMXB4IDVweCByZ2JhKDAsMCwwLC4wNzUpOwogIC5ib3gtc2hhZG93KEBzaGFkb3cpOwoKICAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhIHsKICAgICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IGRhcmtlbihAbmF2YmFyLWRlZmF1bHQtYmcsIDUlKTsgQGVuZC1jb2xvcjogZGFya2VuKEBuYXZiYXItZGVmYXVsdC1iZywgMiUpKTsKICAgIC5ib3gtc2hhZG93KGluc2V0IDAgM3B4IDlweCByZ2JhKDAsMCwwLC4wNzUpKTsKICB9Cn0KLm5hdmJhci1icmFuZCwKLm5hdmJhci1uYXYgPiBsaSA+IGEgewogIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjI1KTsKfQoKLy8gSW52ZXJ0ZWQgbmF2YmFyCi5uYXZiYXItaW52ZXJzZSB7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogbGlnaHRlbihAbmF2YmFyLWludmVyc2UtYmcsIDEwJSk7IEBlbmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1iZyk7CiAgLnJlc2V0LWZpbHRlcigpOyAvLyBSZW1vdmUgZ3JhZGllbnQgaW4gSUU8MTAgdG8gZml4IGJ1ZyB3aGVyZSBkcm9wZG93bnMgZG9uJ3QgZ2V0IHRyaWdnZXJlZAoKICAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhIHsKICAgICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1iZzsgQGVuZC1jb2xvcjogbGlnaHRlbihAbmF2YmFyLWludmVyc2UtYmcsIDIuNSUpKTsKICAgIC5ib3gtc2hhZG93KGluc2V0IDAgM3B4IDlweCByZ2JhKDAsMCwwLC4yNSkpOwogIH0KCiAgLm5hdmJhci1icmFuZCwKICAubmF2YmFyLW5hdiA+IGxpID4gYSB7CiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLDAsMCwuMjUpOwogIH0KfQoKLy8gVW5kbyByb3VuZGVkIGNvcm5lcnMgaW4gc3RhdGljIGFuZCBmaXhlZCBuYXZiYXJzCi5uYXZiYXItc3RhdGljLXRvcCwKLm5hdmJhci1maXhlZC10b3AsCi5uYXZiYXItZml4ZWQtYm90dG9tIHsKICBib3JkZXItcmFkaXVzOiAwOwp9CgoKCi8vCi8vIEFsZXJ0cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gQ29tbW9uIHN0eWxlcwouYWxlcnQgewogIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjIpOwogIEBzaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMjUpLCAwIDFweCAycHggcmdiYSgwLDAsMCwuMDUpOwogIC5ib3gtc2hhZG93KEBzaGFkb3cpOwp9CgovLyBNaXhpbiBmb3IgZ2VuZXJhdGluZyBuZXcgc3R5bGVzCi5hbGVydC1zdHlsZXMoQGNvbG9yKSB7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogQGNvbG9yOyBAZW5kLWNvbG9yOiBkYXJrZW4oQGNvbG9yLCA3LjUlKSk7CiAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQGNvbG9yLCAxNSUpOwp9CgovLyBBcHBseSB0aGUgbWl4aW4gdG8gdGhlIGFsZXJ0cwouYWxlcnQtc3VjY2VzcyAgICB7IC5hbGVydC1zdHlsZXMoQGFsZXJ0LXN1Y2Nlc3MtYmcpOyB9Ci5hbGVydC1pbmZvICAgICAgIHsgLmFsZXJ0LXN0eWxlcyhAYWxlcnQtaW5mby1iZyk7IH0KLmFsZXJ0LXdhcm5pbmcgICAgeyAuYWxlcnQtc3R5bGVzKEBhbGVydC13YXJuaW5nLWJnKTsgfQouYWxlcnQtZGFuZ2VyICAgICB7IC5hbGVydC1zdHlsZXMoQGFsZXJ0LWRhbmdlci1iZyk7IH0KCgoKLy8KLy8gUHJvZ3Jlc3MgYmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gR2l2ZSB0aGUgcHJvZ3Jlc3MgYmFja2dyb3VuZCBzb21lIGRlcHRoCi5wcm9ncmVzcyB7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogZGFya2VuKEBwcm9ncmVzcy1iZywgNCUpOyBAZW5kLWNvbG9yOiBAcHJvZ3Jlc3MtYmcpCn0KCi8vIE1peGluIGZvciBnZW5lcmF0aW5nIG5ldyBzdHlsZXMKLnByb2dyZXNzLWJhci1zdHlsZXMoQGNvbG9yKSB7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogQGNvbG9yOyBAZW5kLWNvbG9yOiBkYXJrZW4oQGNvbG9yLCAxMCUpKTsKfQoKLy8gQXBwbHkgdGhlIG1peGluIHRvIHRoZSBwcm9ncmVzcyBiYXJzCi5wcm9ncmVzcy1iYXIgICAgICAgICAgICB7IC5wcm9ncmVzcy1iYXItc3R5bGVzKEBwcm9ncmVzcy1iYXItYmcpOyB9Ci5wcm9ncmVzcy1iYXItc3VjY2VzcyAgICB7IC5wcm9ncmVzcy1iYXItc3R5bGVzKEBwcm9ncmVzcy1iYXItc3VjY2Vzcy1iZyk7IH0KLnByb2dyZXNzLWJhci1pbmZvICAgICAgIHsgLnByb2dyZXNzLWJhci1zdHlsZXMoQHByb2dyZXNzLWJhci1pbmZvLWJnKTsgfQoucHJvZ3Jlc3MtYmFyLXdhcm5pbmcgICAgeyAucHJvZ3Jlc3MtYmFyLXN0eWxlcyhAcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmcpOyB9Ci5wcm9ncmVzcy1iYXItZGFuZ2VyICAgICB7IC5wcm9ncmVzcy1iYXItc3R5bGVzKEBwcm9ncmVzcy1iYXItZGFuZ2VyLWJnKTsgfQoKLy8gUmVzZXQgdGhlIHN0cmlwZWQgY2xhc3MgYmVjYXVzZSBvdXIgbWl4aW5zIGRvbid0IGRvIG11bHRpcGxlIGdyYWRpZW50cyBhbmQKLy8gdGhlIGFib3ZlIGN1c3RvbSBzdHlsZXMgb3ZlcnJpZGUgdGhlIG5ldyBgLnByb2dyZXNzLWJhci1zdHJpcGVkYCBpbiB2My4yLjAuCi5wcm9ncmVzcy1iYXItc3RyaXBlZCB7CiAgI2dyYWRpZW50ID4gLnN0cmlwZWQoKTsKfQoKCi8vCi8vIExpc3QgZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoubGlzdC1ncm91cCB7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICAuYm94LXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwuMDc1KSk7Cn0KLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUsCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyLAoubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyB7CiAgdGV4dC1zaGFkb3c6IDAgLTFweCAwIGRhcmtlbihAbGlzdC1ncm91cC1hY3RpdmUtYmcsIDEwJSk7CiAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogQGxpc3QtZ3JvdXAtYWN0aXZlLWJnOyBAZW5kLWNvbG9yOiBkYXJrZW4oQGxpc3QtZ3JvdXAtYWN0aXZlLWJnLCA3LjUlKSk7CiAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQGxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlciwgNy41JSk7Cn0KCgoKLy8KLy8gUGFuZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBDb21tb24gc3R5bGVzCi5wYW5lbCB7CiAgLmJveC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwwLDAsLjA1KSk7Cn0KCi8vIE1peGluIGZvciBnZW5lcmF0aW5nIG5ldyBzdHlsZXMKLnBhbmVsLWhlYWRpbmctc3R5bGVzKEBjb2xvcikgewogICNncmFkaWVudCA+IC52ZXJ0aWNhbChAc3RhcnQtY29sb3I6IEBjb2xvcjsgQGVuZC1jb2xvcjogZGFya2VuKEBjb2xvciwgNSUpKTsKfQoKLy8gQXBwbHkgdGhlIG1peGluIHRvIHRoZSBwYW5lbCBoZWFkaW5ncyBvbmx5Ci5wYW5lbC1kZWZhdWx0ID4gLnBhbmVsLWhlYWRpbmcgICB7IC5wYW5lbC1oZWFkaW5nLXN0eWxlcyhAcGFuZWwtZGVmYXVsdC1oZWFkaW5nLWJnKTsgfQoucGFuZWwtcHJpbWFyeSA+IC5wYW5lbC1oZWFkaW5nICAgeyAucGFuZWwtaGVhZGluZy1zdHlsZXMoQHBhbmVsLXByaW1hcnktaGVhZGluZy1iZyk7IH0KLnBhbmVsLXN1Y2Nlc3MgPiAucGFuZWwtaGVhZGluZyAgIHsgLnBhbmVsLWhlYWRpbmctc3R5bGVzKEBwYW5lbC1zdWNjZXNzLWhlYWRpbmctYmcpOyB9Ci5wYW5lbC1pbmZvID4gLnBhbmVsLWhlYWRpbmcgICAgICB7IC5wYW5lbC1oZWFkaW5nLXN0eWxlcyhAcGFuZWwtaW5mby1oZWFkaW5nLWJnKTsgfQoucGFuZWwtd2FybmluZyA+IC5wYW5lbC1oZWFkaW5nICAgeyAucGFuZWwtaGVhZGluZy1zdHlsZXMoQHBhbmVsLXdhcm5pbmctaGVhZGluZy1iZyk7IH0KLnBhbmVsLWRhbmdlciA+IC5wYW5lbC1oZWFkaW5nICAgIHsgLnBhbmVsLWhlYWRpbmctc3R5bGVzKEBwYW5lbC1kYW5nZXItaGVhZGluZy1iZyk7IH0KCgoKLy8KLy8gV2VsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi53ZWxsIHsKICAjZ3JhZGllbnQgPiAudmVydGljYWwoQHN0YXJ0LWNvbG9yOiBkYXJrZW4oQHdlbGwtYmcsIDUlKTsgQGVuZC1jb2xvcjogQHdlbGwtYmcpOwogIGJvcmRlci1jb2xvcjogZGFya2VuKEB3ZWxsLWJnLCAxMCUpOwogIEBzaGFkb3c6IGluc2V0IDAgMXB4IDNweCByZ2JhKDAsMCwwLC4wNSksIDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7CiAgLmJveC1zaGFkb3coQHNoYWRvdyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/thumbnails.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVGh1bWJuYWlscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIE1peGluIGFuZCBhZGp1c3QgdGhlIHJlZ3VsYXIgaW1hZ2UgY2xhc3MKLnRodW1ibmFpbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogQHRodW1ibmFpbC1wYWRkaW5nOwogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgYmFja2dyb3VuZC1jb2xvcjogQHRodW1ibmFpbC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAdGh1bWJuYWlsLWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAdGh1bWJuYWlsLWJvcmRlci1yYWRpdXM7CiAgLnRyYW5zaXRpb24oYWxsIC4ycyBlYXNlLWluLW91dCk7CgogID4gaW1nLAogIGEgPiBpbWcgewogICAgJjpleHRlbmQoLmltZy1yZXNwb25zaXZlKTsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIH0KCiAgLy8gQWRkIGEgaG92ZXIgc3RhdGUgZm9yIGxpbmtlZCB2ZXJzaW9ucyBvbmx5CiAgYSY6aG92ZXIsCiAgYSY6Zm9jdXMsCiAgYSYuYWN0aXZlIHsKICAgIGJvcmRlci1jb2xvcjogQGxpbmstY29sb3I7CiAgfQoKICAvLyBJbWFnZSBjYXB0aW9ucwogIC5jYXB0aW9uIHsKICAgIHBhZGRpbmc6IEB0aHVtYm5haWwtY2FwdGlvbi1wYWRkaW5nOwogICAgY29sb3I6IEB0aHVtYm5haWwtY2FwdGlvbi1jb2xvcjsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/tooltip.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVG9vbHRpcHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi50b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogQHppbmRleC10b29sdGlwOwogIGRpc3BsYXk6IGJsb2NrOwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgLm9wYWNpdHkoMCk7CgogICYuaW4gICAgIHsgLm9wYWNpdHkoQHRvb2x0aXAtb3BhY2l0eSk7IH0KICAmLnRvcCAgICB7IG1hcmdpbi10b3A6ICAtM3B4OyBwYWRkaW5nOiBAdG9vbHRpcC1hcnJvdy13aWR0aCAwOyB9CiAgJi5yaWdodCAgeyBtYXJnaW4tbGVmdDogIDNweDsgcGFkZGluZzogMCBAdG9vbHRpcC1hcnJvdy13aWR0aDsgfQogICYuYm90dG9tIHsgbWFyZ2luLXRvcDogICAzcHg7IHBhZGRpbmc6IEB0b29sdGlwLWFycm93LXdpZHRoIDA7IH0KICAmLmxlZnQgICB7IG1hcmdpbi1sZWZ0OiAtM3B4OyBwYWRkaW5nOiAwIEB0b29sdGlwLWFycm93LXdpZHRoOyB9Cn0KCi8vIFdyYXBwZXIgZm9yIHRoZSB0b29sdGlwIGNvbnRlbnQKLnRvb2x0aXAtaW5uZXIgewogIG1heC13aWR0aDogQHRvb2x0aXAtbWF4LXdpZHRoOwogIHBhZGRpbmc6IDNweCA4cHg7CiAgY29sb3I6IEB0b29sdGlwLWNvbG9yOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogQHRvb2x0aXAtYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKfQoKLy8gQXJyb3dzCi50b29sdGlwLWFycm93IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoudG9vbHRpcCB7CiAgJi50b3AgLnRvb2x0aXAtYXJyb3cgewogICAgYm90dG9tOiAwOwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC1AdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggMDsKICAgIGJvcmRlci10b3AtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLnRvcC1sZWZ0IC50b29sdGlwLWFycm93IHsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aCAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYudG9wLXJpZ2h0IC50b29sdGlwLWFycm93IHsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggMDsKICAgIGJvcmRlci10b3AtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLnJpZ2h0IC50b29sdGlwLWFycm93IHsKICAgIHRvcDogNTAlOwogICAgbGVmdDogMDsKICAgIG1hcmdpbi10b3A6IC1AdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGggMDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYubGVmdCAudG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAwOwogICAgbWFyZ2luLXRvcDogLUB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiBAdG9vbHRpcC1hcnJvdy13aWR0aCAwIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLWxlZnQtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLmJvdHRvbSAudG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLUB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiAwIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYuYm90dG9tLWxlZnQgLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgbGVmdDogQHRvb2x0aXAtYXJyb3ctd2lkdGg7CiAgICBib3JkZXItd2lkdGg6IDAgQHRvb2x0aXAtYXJyb3ctd2lkdGggQHRvb2x0aXAtYXJyb3ctd2lkdGg7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAdG9vbHRpcC1hcnJvdy1jb2xvcjsKICB9CiAgJi5ib3R0b20tcmlnaHQgLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgcmlnaHQ6IEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiAwIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/type.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVHlwb2dyYXBoeQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEhlYWRpbmdzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsCi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYgewogIGZvbnQtZmFtaWx5OiBAaGVhZGluZ3MtZm9udC1mYW1pbHk7CiAgZm9udC13ZWlnaHQ6IEBoZWFkaW5ncy1mb250LXdlaWdodDsKICBsaW5lLWhlaWdodDogQGhlYWRpbmdzLWxpbmUtaGVpZ2h0OwogIGNvbG9yOiBAaGVhZGluZ3MtY29sb3I7CgogIHNtYWxsLAogIC5zbWFsbCB7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogQGhlYWRpbmdzLXNtYWxsLWNvbG9yOwogIH0KfQoKaDEsIC5oMSwKaDIsIC5oMiwKaDMsIC5oMyB7CiAgbWFyZ2luLXRvcDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIG1hcmdpbi1ib3R0b206IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLyAyKTsKCiAgc21hbGwsCiAgLnNtYWxsIHsKICAgIGZvbnQtc2l6ZTogNjUlOwogIH0KfQpoNCwgLmg0LApoNSwgLmg1LApoNiwgLmg2IHsKICBtYXJnaW4tdG9wOiAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7CiAgbWFyZ2luLWJvdHRvbTogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpOwoKICBzbWFsbCwKICAuc21hbGwgewogICAgZm9udC1zaXplOiA3NSU7CiAgfQp9CgpoMSwgLmgxIHsgZm9udC1zaXplOiBAZm9udC1zaXplLWgxOyB9CmgyLCAuaDIgeyBmb250LXNpemU6IEBmb250LXNpemUtaDI7IH0KaDMsIC5oMyB7IGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1oMzsgfQpoNCwgLmg0IHsgZm9udC1zaXplOiBAZm9udC1zaXplLWg0OyB9Cmg1LCAuaDUgeyBmb250LXNpemU6IEBmb250LXNpemUtaDU7IH0KaDYsIC5oNiB7IGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1oNjsgfQoKCi8vIEJvZHkgdGV4dAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpwIHsKICBtYXJnaW46IDAgMCAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7Cn0KCi5sZWFkIHsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgZm9udC1zaXplOiBmbG9vcigoQGZvbnQtc2l6ZS1iYXNlICogMS4xNSkpOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuNDsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20tbWluKSB7CiAgICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjUpOwogIH0KfQoKCi8vIEVtcGhhc2lzICYgbWlzYwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBFeDogKDEycHggc21hbGwgZm9udCAvIDE0cHggYmFzZSBmb250KSAqIDEwMCUgPSBhYm91dCA4NSUKc21hbGwsCi5zbWFsbCB7CiAgZm9udC1zaXplOiBmbG9vcigoMTAwJSAqIEBmb250LXNpemUtc21hbGwgLyBAZm9udC1zaXplLWJhc2UpKTsKfQoKLy8gVW5kbyBicm93c2VyIGRlZmF1bHQgc3R5bGluZwpjaXRlIHsKICBmb250LXN0eWxlOiBub3JtYWw7Cn0KCm1hcmssCi5tYXJrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAc3RhdGUtd2FybmluZy1iZzsKICBwYWRkaW5nOiAuMmVtOwp9CgovLyBBbGlnbm1lbnQKLnRleHQtbGVmdCAgICAgICAgICAgeyB0ZXh0LWFsaWduOiBsZWZ0OyB9Ci50ZXh0LXJpZ2h0ICAgICAgICAgIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH0KLnRleHQtY2VudGVyICAgICAgICAgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KLnRleHQtanVzdGlmeSAgICAgICAgeyB0ZXh0LWFsaWduOiBqdXN0aWZ5OyB9Ci50ZXh0LW5vd3JhcCAgICAgICAgIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKLy8gVHJhbnNmb3JtYXRpb24KLnRleHQtbG93ZXJjYXNlICAgICAgeyB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlOyB9Ci50ZXh0LXVwcGVyY2FzZSAgICAgIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQoudGV4dC1jYXBpdGFsaXplICAgICB7IHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9CgovLyBDb250ZXh0dWFsIGNvbG9ycwoudGV4dC1tdXRlZCB7CiAgY29sb3I6IEB0ZXh0LW11dGVkOwp9Ci50ZXh0LXByaW1hcnkgewogIC50ZXh0LWVtcGhhc2lzLXZhcmlhbnQoQGJyYW5kLXByaW1hcnkpOwp9Ci50ZXh0LXN1Y2Nlc3MgewogIC50ZXh0LWVtcGhhc2lzLXZhcmlhbnQoQHN0YXRlLXN1Y2Nlc3MtdGV4dCk7Cn0KLnRleHQtaW5mbyB7CiAgLnRleHQtZW1waGFzaXMtdmFyaWFudChAc3RhdGUtaW5mby10ZXh0KTsKfQoudGV4dC13YXJuaW5nIHsKICAudGV4dC1lbXBoYXNpcy12YXJpYW50KEBzdGF0ZS13YXJuaW5nLXRleHQpOwp9Ci50ZXh0LWRhbmdlciB7CiAgLnRleHQtZW1waGFzaXMtdmFyaWFudChAc3RhdGUtZGFuZ2VyLXRleHQpOwp9CgovLyBDb250ZXh0dWFsIGJhY2tncm91bmRzCi8vIEZvciBub3cgd2UnbGwgbGVhdmUgdGhlc2UgYWxvbmdzaWRlIHRoZSB0ZXh0IGNsYXNzZXMgdW50aWwgdjQgd2hlbiB3ZSBjYW4KLy8gc2FmZWx5IHNoaWZ0IHRoaW5ncyBhcm91bmQgKHBlciBTZW1WZXIgcnVsZXMpLgouYmctcHJpbWFyeSB7CiAgLy8gR2l2ZW4gdGhlIGNvbnRyYXN0IGhlcmUsIHRoaXMgaXMgdGhlIG9ubHkgY2xhc3MgdG8gaGF2ZSBpdHMgY29sb3IgaW52ZXJ0ZWQKICAvLyBhdXRvbWF0aWNhbGx5LgogIGNvbG9yOiAjZmZmOwogIC5iZy12YXJpYW50KEBicmFuZC1wcmltYXJ5KTsKfQouYmctc3VjY2VzcyB7CiAgLmJnLXZhcmlhbnQoQHN0YXRlLXN1Y2Nlc3MtYmcpOwp9Ci5iZy1pbmZvIHsKICAuYmctdmFyaWFudChAc3RhdGUtaW5mby1iZyk7Cn0KLmJnLXdhcm5pbmcgewogIC5iZy12YXJpYW50KEBzdGF0ZS13YXJuaW5nLWJnKTsKfQouYmctZGFuZ2VyIHsKICAuYmctdmFyaWFudChAc3RhdGUtZGFuZ2VyLWJnKTsKfQoKCi8vIFBhZ2UgaGVhZGVyCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5wYWdlLWhlYWRlciB7CiAgcGFkZGluZy1ib3R0b206ICgoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMikgLSAxKTsKICBtYXJnaW46IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgKiAyKSAwIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQHBhZ2UtaGVhZGVyLWJvcmRlci1jb2xvcjsKfQoKCi8vIExpc3RzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFVub3JkZXJlZCBhbmQgT3JkZXJlZCBsaXN0cwp1bCwKb2wgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpOwogIHVsLAogIG9sIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQp9CgovLyBMaXN0IG9wdGlvbnMKCi8vIFVuc3R5bGVkIGtlZXBzIGxpc3QgaXRlbXMgYmxvY2sgbGV2ZWwsIGp1c3QgcmVtb3ZlcyBkZWZhdWx0IGJyb3dzZXIgcGFkZGluZyBhbmQgbGlzdC1zdHlsZQoubGlzdC11bnN0eWxlZCB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi8vIElubGluZSB0dXJucyBsaXN0IGl0ZW1zIGludG8gaW5saW5lLWJsb2NrCi5saXN0LWlubGluZSB7CiAgLmxpc3QtdW5zdHlsZWQoKTsKICBtYXJnaW4tbGVmdDogLTVweDsKCiAgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDVweDsKICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKICB9Cn0KCi8vIERlc2NyaXB0aW9uIExpc3RzCmRsIHsKICBtYXJnaW4tdG9wOiAwOyAvLyBSZW1vdmUgYnJvd3NlciBkZWZhdWx0CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwp9CmR0LApkZCB7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwp9CmR0IHsKICBmb250LXdlaWdodDogYm9sZDsKfQpkZCB7CiAgbWFyZ2luLWxlZnQ6IDA7IC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0Cn0KCi8vIEhvcml6b250YWwgZGVzY3JpcHRpb24gbGlzdHMKLy8KLy8gRGVmYXVsdHMgdG8gYmVpbmcgc3RhY2tlZCB3aXRob3V0IGFueSBvZiB0aGUgYmVsb3cgc3R5bGVzIGFwcGxpZWQsIHVudGlsIHRoZQovLyBncmlkIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCAoZGVmYXVsdCBvZiB+NzY4cHgpLgoKLmRsLWhvcml6b250YWwgewogIGRkIHsKICAgICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOyAvLyBDbGVhciB0aGUgZmxvYXRlZCBgZHRgIGlmIGFuIGVtcHR5IGBkZGAgaXMgcHJlc2VudAogIH0KCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIGR0IHsKICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIHdpZHRoOiAoQGRsLWhvcml6b250YWwtb2Zmc2V0IC0gMjApOwogICAgICBjbGVhcjogbGVmdDsKICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgIC50ZXh0LW92ZXJmbG93KCk7CiAgICB9CiAgICBkZCB7CiAgICAgIG1hcmdpbi1sZWZ0OiBAZGwtaG9yaXpvbnRhbC1vZmZzZXQ7CiAgICB9CiAgfQp9CgoKLy8gTWlzYwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBBYmJyZXZpYXRpb25zIGFuZCBhY3JvbnltcwphYmJyW3RpdGxlXSwKLy8gQWRkIGRhdGEtKiBhdHRyaWJ1dGUgdG8gaGVscCBvdXQgb3VyIHRvb2x0aXAgcGx1Z2luLCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy81MjU3CmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0gewogIGN1cnNvcjogaGVscDsKICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkIEBhYmJyLWJvcmRlci1jb2xvcjsKfQouaW5pdGlhbGlzbSB7CiAgZm9udC1zaXplOiA5MCU7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLy8gQmxvY2txdW90ZXMKYmxvY2txdW90ZSB7CiAgcGFkZGluZzogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBtYXJnaW46IDAgMCBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgZm9udC1zaXplOiBAYmxvY2txdW90ZS1mb250LXNpemU7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCBAYmxvY2txdW90ZS1ib3JkZXItY29sb3I7CgogIHAsCiAgdWwsCiAgb2wgewogICAgJjpsYXN0LWNoaWxkIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIH0KICB9CgogIC8vIE5vdGU6IERlcHJlY2F0ZWQgc21hbGwgYW5kIC5zbWFsbCBhcyBvZiB2My4xLjAKICAvLyBDb250ZXh0OiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNjYwCiAgZm9vdGVyLAogIHNtYWxsLAogIC5zbWFsbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogODAlOyAvLyBiYWNrIHRvIGRlZmF1bHQgZm9udC1zaXplCiAgICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgICBjb2xvcjogQGJsb2NrcXVvdGUtc21hbGwtY29sb3I7CgogICAgJjpiZWZvcmUgewogICAgICBjb250ZW50OiAnXDIwMTQgXDAwQTAnOyAvLyBlbSBkYXNoLCBuYnNwCiAgICB9CiAgfQp9CgovLyBPcHBvc2l0ZSBhbGlnbm1lbnQgb2YgYmxvY2txdW90ZQovLwovLyBIZWFkcyB1cDogYGJsb2NrcXVvdGUucHVsbC1yaWdodGAgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBvZiB2My4xLjAuCi5ibG9ja3F1b3RlLXJldmVyc2UsCmJsb2NrcXVvdGUucHVsbC1yaWdodCB7CiAgcGFkZGluZy1yaWdodDogMTVweDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgQGJsb2NrcXVvdGUtYm9yZGVyLWNvbG9yOwogIGJvcmRlci1sZWZ0OiAwOwogIHRleHQtYWxpZ246IHJpZ2h0OwoKICAvLyBBY2NvdW50IGZvciBjaXRhdGlvbgogIGZvb3RlciwKICBzbWFsbCwKICAuc21hbGwgewogICAgJjpiZWZvcmUgeyBjb250ZW50OiAnJzsgfQogICAgJjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICdcMDBBMCBcMjAxNCc7IC8vIG5ic3AsIGVtIGRhc2gKICAgIH0KICB9Cn0KCi8vIFF1b3RlcwpibG9ja3F1b3RlOmJlZm9yZSwKYmxvY2txdW90ZTphZnRlciB7CiAgY29udGVudDogIiI7Cn0KCi8vIEFkZHJlc3NlcwphZGRyZXNzIHsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/utilities.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVXRpbGl0eSBjbGFzc2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gRmxvYXRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5jbGVhcmZpeCB7CiAgLmNsZWFyZml4KCk7Cn0KLmNlbnRlci1ibG9jayB7CiAgLmNlbnRlci1ibG9jaygpOwp9Ci5wdWxsLXJpZ2h0IHsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQoucHVsbC1sZWZ0IHsKICBmbG9hdDogbGVmdCAhaW1wb3J0YW50Owp9CgoKLy8gVG9nZ2xpbmcgY29udGVudAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBOb3RlOiBEZXByZWNhdGVkIC5oaWRlIGluIGZhdm9yIG9mIC5oaWRkZW4gb3IgLnNyLW9ubHkgKGFzIGFwcHJvcHJpYXRlKSBpbiB2My4wLjEKLmhpZGUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQouc2hvdyB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQouaW52aXNpYmxlIHsKICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KLnRleHQtaGlkZSB7CiAgLnRleHQtaGlkZSgpOwp9CgoKLy8gSGlkZSBmcm9tIHNjcmVlbnJlYWRlcnMgYW5kIGJyb3dzZXJzCi8vCi8vIENyZWRpdDogSFRNTDUgQm9pbGVycGxhdGUKCi5oaWRkZW4gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQoKCi8vIEZvciBBZmZpeCBwbHVnaW4KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmFmZml4IHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgLnRyYW5zbGF0ZTNkKDAsIDAsIDApOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/variables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVmFyaWFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy89PSBDb2xvcnMKLy8KLy8jIyBHcmF5IGFuZCBicmFuZCBjb2xvcnMgZm9yIHVzZSBhY3Jvc3MgQm9vdHN0cmFwLgoKQGdyYXktZGFya2VyOiAgICAgICAgICAgIGxpZ2h0ZW4oIzAwMCwgMTMuNSUpOyAvLyAjMjIyCkBncmF5LWRhcms6ICAgICAgICAgICAgICBsaWdodGVuKCMwMDAsIDIwJSk7ICAgLy8gIzMzMwpAZ3JheTogICAgICAgICAgICAgICAgICAgbGlnaHRlbigjMDAwLCAzMy41JSk7IC8vICM1NTUKQGdyYXktbGlnaHQ6ICAgICAgICAgICAgIGxpZ2h0ZW4oIzAwMCwgNDYuNyUpOyAvLyAjNzc3CkBncmF5LWxpZ2h0ZXI6ICAgICAgICAgICBsaWdodGVuKCMwMDAsIDkzLjUlKTsgLy8gI2VlZQoKQGJyYW5kLXByaW1hcnk6ICAgICAgICAgIzQyOGJjYTsKQGJyYW5kLXN1Y2Nlc3M6ICAgICAgICAgIzVjYjg1YzsKQGJyYW5kLWluZm86ICAgICAgICAgICAgIzViYzBkZTsKQGJyYW5kLXdhcm5pbmc6ICAgICAgICAgI2YwYWQ0ZTsKQGJyYW5kLWRhbmdlcjogICAgICAgICAgI2Q5NTM0ZjsKCgovLz09IFNjYWZmb2xkaW5nCi8vCi8vIyMgU2V0dGluZ3MgZm9yIHNvbWUgb2YgdGhlIG1vc3QgZ2xvYmFsIHN0eWxlcy4KCi8vKiogQmFja2dyb3VuZCBjb2xvciBmb3IgYDxib2R5PmAuCkBib2R5LWJnOiAgICAgICAgICAgICAgICNmZmY7Ci8vKiogR2xvYmFsIHRleHQgY29sb3Igb24gYDxib2R5PmAuCkB0ZXh0LWNvbG9yOiAgICAgICAgICAgIEBncmF5LWRhcms7CgovLyoqIEdsb2JhbCB0ZXh0dWFsIGxpbmsgY29sb3IuCkBsaW5rLWNvbG9yOiAgICAgICAgICAgIEBicmFuZC1wcmltYXJ5OwovLyoqIExpbmsgaG92ZXIgY29sb3Igc2V0IHZpYSBgZGFya2VuKClgIGZ1bmN0aW9uLgpAbGluay1ob3Zlci1jb2xvcjogICAgICBkYXJrZW4oQGxpbmstY29sb3IsIDE1JSk7CgoKLy89PSBUeXBvZ3JhcGh5Ci8vCi8vIyMgRm9udCwgbGluZS1oZWlnaHQsIGFuZCBjb2xvciBmb3IgYm9keSB0ZXh0LCBoZWFkaW5ncywgYW5kIG1vcmUuCgpAZm9udC1mYW1pbHktc2Fucy1zZXJpZjogICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CkBmb250LWZhbWlseS1zZXJpZjogICAgICAgR2VvcmdpYSwgIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKLy8qKiBEZWZhdWx0IG1vbm9zcGFjZSBmb250cyBmb3IgYDxjb2RlPmAsIGA8a2JkPmAsIGFuZCBgPHByZT5gLgpAZm9udC1mYW1pbHktbW9ub3NwYWNlOiAgIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7CkBmb250LWZhbWlseS1iYXNlOiAgICAgICAgQGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY7CgpAZm9udC1zaXplLWJhc2U6ICAgICAgICAgIDE0cHg7CkBmb250LXNpemUtbGFyZ2U6ICAgICAgICAgY2VpbCgoQGZvbnQtc2l6ZS1iYXNlICogMS4yNSkpOyAvLyB+MThweApAZm9udC1zaXplLXNtYWxsOiAgICAgICAgIGNlaWwoKEBmb250LXNpemUtYmFzZSAqIDAuODUpKTsgLy8gfjEycHgKCkBmb250LXNpemUtaDE6ICAgICAgICAgICAgZmxvb3IoKEBmb250LXNpemUtYmFzZSAqIDIuNikpOyAvLyB+MzZweApAZm9udC1zaXplLWgyOiAgICAgICAgICAgIGZsb29yKChAZm9udC1zaXplLWJhc2UgKiAyLjE1KSk7IC8vIH4zMHB4CkBmb250LXNpemUtaDM6ICAgICAgICAgICAgY2VpbCgoQGZvbnQtc2l6ZS1iYXNlICogMS43KSk7IC8vIH4yNHB4CkBmb250LXNpemUtaDQ6ICAgICAgICAgICAgY2VpbCgoQGZvbnQtc2l6ZS1iYXNlICogMS4yNSkpOyAvLyB+MThweApAZm9udC1zaXplLWg1OiAgICAgICAgICAgIEBmb250LXNpemUtYmFzZTsKQGZvbnQtc2l6ZS1oNjogICAgICAgICAgICBjZWlsKChAZm9udC1zaXplLWJhc2UgKiAwLjg1KSk7IC8vIH4xMnB4CgovLyoqIFVuaXQtbGVzcyBgbGluZS1oZWlnaHRgIGZvciB1c2UgaW4gY29tcG9uZW50cyBsaWtlIGJ1dHRvbnMuCkBsaW5lLWhlaWdodC1iYXNlOiAgICAgICAgMS40Mjg1NzE0Mjk7IC8vIDIwLzE0Ci8vKiogQ29tcHV0ZWQgImxpbmUtaGVpZ2h0IiAoYGZvbnQtc2l6ZWAgKiBgbGluZS1oZWlnaHRgKSBmb3IgdXNlIHdpdGggYG1hcmdpbmAsIGBwYWRkaW5nYCwgZXRjLgpAbGluZS1oZWlnaHQtY29tcHV0ZWQ6ICAgIGZsb29yKChAZm9udC1zaXplLWJhc2UgKiBAbGluZS1oZWlnaHQtYmFzZSkpOyAvLyB+MjBweAoKLy8qKiBCeSBkZWZhdWx0LCB0aGlzIGluaGVyaXRzIGZyb20gdGhlIGA8Ym9keT5gLgpAaGVhZGluZ3MtZm9udC1mYW1pbHk6ICAgIGluaGVyaXQ7CkBoZWFkaW5ncy1mb250LXdlaWdodDogICAgNTAwOwpAaGVhZGluZ3MtbGluZS1oZWlnaHQ6ICAgIDEuMTsKQGhlYWRpbmdzLWNvbG9yOiAgICAgICAgICBpbmhlcml0OwoKCi8vPT0gSWNvbm9ncmFwaHkKLy8KLy8jIyBTcGVjaWZ5IGN1c3RvbSBsb2NhdGlvbiBhbmQgZmlsZW5hbWUgb2YgdGhlIGluY2x1ZGVkIEdseXBoaWNvbnMgaWNvbiBmb250LiBVc2VmdWwgZm9yIHRob3NlIGluY2x1ZGluZyBCb290c3RyYXAgdmlhIEJvd2VyLgoKLy8qKiBMb2FkIGZvbnRzIGZyb20gdGhpcyBkaXJlY3RvcnkuCkBpY29uLWZvbnQtcGF0aDogICAgICAgICAgIi4uL2ZvbnRzLyI7Ci8vKiogRmlsZSBuYW1lIGZvciBhbGwgZm9udCBmaWxlcy4KQGljb24tZm9udC1uYW1lOiAgICAgICAgICAiZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhciI7Ci8vKiogRWxlbWVudCBJRCB3aXRoaW4gU1ZHIGljb24gZmlsZS4KQGljb24tZm9udC1zdmctaWQ6ICAgICAgICAiZ2x5cGhpY29uc19oYWxmbGluZ3NyZWd1bGFyIjsKCgovLz09IENvbXBvbmVudHMKLy8KLy8jIyBEZWZpbmUgY29tbW9uIHBhZGRpbmcgYW5kIGJvcmRlciByYWRpdXMgc2l6ZXMgYW5kIG1vcmUuIFZhbHVlcyBiYXNlZCBvbiAxNHB4IHRleHQgYW5kIDEuNDI4IGxpbmUtaGVpZ2h0ICh+MjBweCB0byBzdGFydCkuCgpAcGFkZGluZy1iYXNlLXZlcnRpY2FsOiAgICAgNnB4OwpAcGFkZGluZy1iYXNlLWhvcml6b250YWw6ICAgMTJweDsKCkBwYWRkaW5nLWxhcmdlLXZlcnRpY2FsOiAgICAxMHB4OwpAcGFkZGluZy1sYXJnZS1ob3Jpem9udGFsOiAgMTZweDsKCkBwYWRkaW5nLXNtYWxsLXZlcnRpY2FsOiAgICA1cHg7CkBwYWRkaW5nLXNtYWxsLWhvcml6b250YWw6ICAxMHB4OwoKQHBhZGRpbmcteHMtdmVydGljYWw6ICAgICAgIDFweDsKQHBhZGRpbmcteHMtaG9yaXpvbnRhbDogICAgIDVweDsKCkBsaW5lLWhlaWdodC1sYXJnZTogICAgICAgICAxLjMzOwpAbGluZS1oZWlnaHQtc21hbGw6ICAgICAgICAgMS41OwoKQGJvcmRlci1yYWRpdXMtYmFzZTogICAgICAgIDRweDsKQGJvcmRlci1yYWRpdXMtbGFyZ2U6ICAgICAgIDZweDsKQGJvcmRlci1yYWRpdXMtc21hbGw6ICAgICAgIDNweDsKCi8vKiogR2xvYmFsIGNvbG9yIGZvciBhY3RpdmUgaXRlbXMgKGUuZy4sIG5hdnMgb3IgZHJvcGRvd25zKS4KQGNvbXBvbmVudC1hY3RpdmUtY29sb3I6ICAgICNmZmY7Ci8vKiogR2xvYmFsIGJhY2tncm91bmQgY29sb3IgZm9yIGFjdGl2ZSBpdGVtcyAoZS5nLiwgbmF2cyBvciBkcm9wZG93bnMpLgpAY29tcG9uZW50LWFjdGl2ZS1iZzogICAgICAgQGJyYW5kLXByaW1hcnk7CgovLyoqIFdpZHRoIG9mIHRoZSBgYm9yZGVyYCBmb3IgZ2VuZXJhdGluZyBjYXJldHMgdGhhdCBpbmRpY2F0b3IgZHJvcGRvd25zLgpAY2FyZXQtd2lkdGgtYmFzZTogICAgICAgICAgNHB4OwovLyoqIENhcmV0cyBpbmNyZWFzZSBzbGlnaHRseSBpbiBzaXplIGZvciBsYXJnZXIgY29tcG9uZW50cy4KQGNhcmV0LXdpZHRoLWxhcmdlOiAgICAgICAgIDVweDsKCgovLz09IFRhYmxlcwovLwovLyMjIEN1c3RvbWl6ZXMgdGhlIGAudGFibGVgIGNvbXBvbmVudCB3aXRoIGJhc2ljIHZhbHVlcywgZWFjaCB1c2VkIGFjcm9zcyBhbGwgdGFibGUgdmFyaWF0aW9ucy4KCi8vKiogUGFkZGluZyBmb3IgYDx0aD5gcyBhbmQgYDx0ZD5gcy4KQHRhYmxlLWNlbGwtcGFkZGluZzogICAgICAgICAgICA4cHg7Ci8vKiogUGFkZGluZyBmb3IgY2VsbHMgaW4gYC50YWJsZS1jb25kZW5zZWRgLgpAdGFibGUtY29uZGVuc2VkLWNlbGwtcGFkZGluZzogIDVweDsKCi8vKiogRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIHVzZWQgZm9yIGFsbCB0YWJsZXMuCkB0YWJsZS1iZzogICAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQ7Ci8vKiogQmFja2dyb3VuZCBjb2xvciB1c2VkIGZvciBgLnRhYmxlLXN0cmlwZWRgLgpAdGFibGUtYmctYWNjZW50OiAgICAgICAgICAgICAgICNmOWY5Zjk7Ci8vKiogQmFja2dyb3VuZCBjb2xvciB1c2VkIGZvciBgLnRhYmxlLWhvdmVyYC4KQHRhYmxlLWJnLWhvdmVyOiAgICAgICAgICAgICAgICAjZjVmNWY1OwpAdGFibGUtYmctYWN0aXZlOiAgICAgICAgICAgICAgIEB0YWJsZS1iZy1ob3ZlcjsKCi8vKiogQm9yZGVyIGNvbG9yIGZvciB0YWJsZSBhbmQgY2VsbCBib3JkZXJzLgpAdGFibGUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICNkZGQ7CgoKLy89PSBCdXR0b25zCi8vCi8vIyMgRm9yIGVhY2ggb2YgQm9vdHN0cmFwJ3MgYnV0dG9ucywgZGVmaW5lIHRleHQsIGJhY2tncm91bmQgYW5kIGJvcmRlciBjb2xvci4KCkBidG4tZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgIG5vcm1hbDsKCkBidG4tZGVmYXVsdC1jb2xvcjogICAgICAgICAgICAgICMzMzM7CkBidG4tZGVmYXVsdC1iZzogICAgICAgICAgICAgICAgICNmZmY7CkBidG4tZGVmYXVsdC1ib3JkZXI6ICAgICAgICAgICAgICNjY2M7CgpAYnRuLXByaW1hcnktY29sb3I6ICAgICAgICAgICAgICAjZmZmOwpAYnRuLXByaW1hcnktYmc6ICAgICAgICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKQGJ0bi1wcmltYXJ5LWJvcmRlcjogICAgICAgICAgICAgZGFya2VuKEBidG4tcHJpbWFyeS1iZywgNSUpOwoKQGJ0bi1zdWNjZXNzLWNvbG9yOiAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi1zdWNjZXNzLWJnOiAgICAgICAgICAgICAgICAgQGJyYW5kLXN1Y2Nlc3M7CkBidG4tc3VjY2Vzcy1ib3JkZXI6ICAgICAgICAgICAgIGRhcmtlbihAYnRuLXN1Y2Nlc3MtYmcsIDUlKTsKCkBidG4taW5mby1jb2xvcjogICAgICAgICAgICAgICAgICNmZmY7CkBidG4taW5mby1iZzogICAgICAgICAgICAgICAgICAgIEBicmFuZC1pbmZvOwpAYnRuLWluZm8tYm9yZGVyOiAgICAgICAgICAgICAgICBkYXJrZW4oQGJ0bi1pbmZvLWJnLCA1JSk7CgpAYnRuLXdhcm5pbmctY29sb3I6ICAgICAgICAgICAgICAjZmZmOwpAYnRuLXdhcm5pbmctYmc6ICAgICAgICAgICAgICAgICBAYnJhbmQtd2FybmluZzsKQGJ0bi13YXJuaW5nLWJvcmRlcjogICAgICAgICAgICAgZGFya2VuKEBidG4td2FybmluZy1iZywgNSUpOwoKQGJ0bi1kYW5nZXItY29sb3I6ICAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi1kYW5nZXItYmc6ICAgICAgICAgICAgICAgICAgQGJyYW5kLWRhbmdlcjsKQGJ0bi1kYW5nZXItYm9yZGVyOiAgICAgICAgICAgICAgZGFya2VuKEBidG4tZGFuZ2VyLWJnLCA1JSk7CgpAYnRuLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgICBAZ3JheS1saWdodDsKCgovLz09IEZvcm1zCi8vCi8vIyMKCi8vKiogYDxpbnB1dD5gIGJhY2tncm91bmQgY29sb3IKQGlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKLy8qKiBgPGlucHV0IGRpc2FibGVkPmAgYmFja2dyb3VuZCBjb2xvcgpAaW5wdXQtYmctZGlzYWJsZWQ6ICAgICAgICAgICAgICBAZ3JheS1saWdodGVyOwoKLy8qKiBUZXh0IGNvbG9yIGZvciBgPGlucHV0PmBzCkBpbnB1dC1jb2xvcjogICAgICAgICAgICAgICAgICAgIEBncmF5OwovLyoqIGA8aW5wdXQ+YCBib3JkZXIgY29sb3IKQGlucHV0LWJvcmRlcjogICAgICAgICAgICAgICAgICAgI2NjYzsKLy8qKiBgPGlucHV0PmAgYm9yZGVyIHJhZGl1cwpAaW5wdXQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwovLyoqIEJvcmRlciBjb2xvciBmb3IgaW5wdXRzIG9uIGZvY3VzCkBpbnB1dC1ib3JkZXItZm9jdXM6ICAgICAgICAgICAgICM2NmFmZTk7CgovLyoqIFBsYWNlaG9sZGVyIHRleHQgY29sb3IKQGlucHV0LWNvbG9yLXBsYWNlaG9sZGVyOiAgICAgICAgQGdyYXktbGlnaHQ7CgovLyoqIERlZmF1bHQgYC5mb3JtLWNvbnRyb2xgIGhlaWdodApAaW5wdXQtaGVpZ2h0LWJhc2U6ICAgICAgICAgICAgICAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkICsgKEBwYWRkaW5nLWJhc2UtdmVydGljYWwgKiAyKSArIDIpOwovLyoqIExhcmdlIGAuZm9ybS1jb250cm9sYCBoZWlnaHQKQGlucHV0LWhlaWdodC1sYXJnZTogICAgICAgICAgICAgKGNlaWwoQGZvbnQtc2l6ZS1sYXJnZSAqIEBsaW5lLWhlaWdodC1sYXJnZSkgKyAoQHBhZGRpbmctbGFyZ2UtdmVydGljYWwgKiAyKSArIDIpOwovLyoqIFNtYWxsIGAuZm9ybS1jb250cm9sYCBoZWlnaHQKQGlucHV0LWhlaWdodC1zbWFsbDogICAgICAgICAgICAgKGZsb29yKEBmb250LXNpemUtc21hbGwgKiBAbGluZS1oZWlnaHQtc21hbGwpICsgKEBwYWRkaW5nLXNtYWxsLXZlcnRpY2FsICogMikgKyAyKTsKCkBsZWdlbmQtY29sb3I6ICAgICAgICAgICAgICAgICAgIEBncmF5LWRhcms7CkBsZWdlbmQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICNlNWU1ZTU7CgovLyoqIEJhY2tncm91bmQgY29sb3IgZm9yIHRleHR1YWwgaW5wdXQgYWRkb25zCkBpbnB1dC1ncm91cC1hZGRvbi1iZzogICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7Ci8vKiogQm9yZGVyIGNvbG9yIGZvciB0ZXh0dWFsIGlucHV0IGFkZG9ucwpAaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOiBAaW5wdXQtYm9yZGVyOwoKCi8vPT0gRHJvcGRvd25zCi8vCi8vIyMgRHJvcGRvd24gbWVudSBjb250YWluZXIgYW5kIGNvbnRlbnRzLgoKLy8qKiBCYWNrZ3JvdW5kIGZvciB0aGUgZHJvcGRvd24gbWVudS4KQGRyb3Bkb3duLWJnOiAgICAgICAgICAgICAgICAgICAgI2ZmZjsKLy8qKiBEcm9wZG93biBtZW51IGBib3JkZXItY29sb3JgLgpAZHJvcGRvd24tYm9yZGVyOiAgICAgICAgICAgICAgICByZ2JhKDAsMCwwLC4xNSk7Ci8vKiogRHJvcGRvd24gbWVudSBgYm9yZGVyLWNvbG9yYCAqKmZvciBJRTgqKi4KQGRyb3Bkb3duLWZhbGxiYWNrLWJvcmRlcjogICAgICAgI2NjYzsKLy8qKiBEaXZpZGVyIGNvbG9yIGZvciBiZXR3ZWVuIGRyb3Bkb3duIGl0ZW1zLgpAZHJvcGRvd24tZGl2aWRlci1iZzogICAgICAgICAgICAjZTVlNWU1OwoKLy8qKiBEcm9wZG93biBsaW5rIHRleHQgY29sb3IuCkBkcm9wZG93bi1saW5rLWNvbG9yOiAgICAgICAgICAgIEBncmF5LWRhcms7Ci8vKiogSG92ZXIgY29sb3IgZm9yIGRyb3Bkb3duIGxpbmtzLgpAZHJvcGRvd24tbGluay1ob3Zlci1jb2xvcjogICAgICBkYXJrZW4oQGdyYXktZGFyaywgNSUpOwovLyoqIEhvdmVyIGJhY2tncm91bmQgZm9yIGRyb3Bkb3duIGxpbmtzLgpAZHJvcGRvd24tbGluay1ob3Zlci1iZzogICAgICAgICAjZjVmNWY1OwoKLy8qKiBBY3RpdmUgZHJvcGRvd24gbWVudSBpdGVtIHRleHQgY29sb3IuCkBkcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvcjogICAgIEBjb21wb25lbnQtYWN0aXZlLWNvbG9yOwovLyoqIEFjdGl2ZSBkcm9wZG93biBtZW51IGl0ZW0gYmFja2dyb3VuZCBjb2xvci4KQGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnOiAgICAgICAgQGNvbXBvbmVudC1hY3RpdmUtYmc7CgovLyoqIERpc2FibGVkIGRyb3Bkb3duIG1lbnUgaXRlbSBiYWNrZ3JvdW5kIGNvbG9yLgpAZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogICBAZ3JheS1saWdodDsKCi8vKiogVGV4dCBjb2xvciBmb3IgaGVhZGVycyB3aXRoaW4gZHJvcGRvd24gbWVudXMuCkBkcm9wZG93bi1oZWFkZXItY29sb3I6ICAgICAgICAgIEBncmF5LWxpZ2h0OwoKLy8qKiBEZXByZWNhdGVkIGBAZHJvcGRvd24tY2FyZXQtY29sb3JgIGFzIG9mIHYzLjEuMApAZHJvcGRvd24tY2FyZXQtY29sb3I6ICAgICAgICAgICAjMDAwOwoKCi8vLS0gWi1pbmRleCBtYXN0ZXIgbGlzdAovLwovLyBXYXJuaW5nOiBBdm9pZCBjdXN0b21pemluZyB0aGVzZSB2YWx1ZXMuIFRoZXkncmUgdXNlZCBmb3IgYSBiaXJkJ3MgZXllIHZpZXcKLy8gb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcyBhbmQgYXJlIGRlc2lnbmVkIHRvIGFsbCB3b3JrIHRvZ2V0aGVyLgovLwovLyBOb3RlOiBUaGVzZSB2YXJpYWJsZXMgYXJlIG5vdCBnZW5lcmF0ZWQgaW50byB0aGUgQ3VzdG9taXplci4KCkB6aW5kZXgtbmF2YmFyOiAgICAgICAgICAgIDEwMDA7CkB6aW5kZXgtZHJvcGRvd246ICAgICAgICAgIDEwMDA7CkB6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgIDEwNjA7CkB6aW5kZXgtdG9vbHRpcDogICAgICAgICAgIDEwNzA7CkB6aW5kZXgtbmF2YmFyLWZpeGVkOiAgICAgIDEwMzA7CkB6aW5kZXgtbW9kYWwtYmFja2dyb3VuZDogIDEwNDA7CkB6aW5kZXgtbW9kYWw6ICAgICAgICAgICAgIDEwNTA7CgoKLy89PSBNZWRpYSBxdWVyaWVzIGJyZWFrcG9pbnRzCi8vCi8vIyMgRGVmaW5lIHRoZSBicmVha3BvaW50cyBhdCB3aGljaCB5b3VyIGxheW91dCB3aWxsIGNoYW5nZSwgYWRhcHRpbmcgdG8gZGlmZmVyZW50IHNjcmVlbiBzaXplcy4KCi8vIEV4dHJhIHNtYWxsIHNjcmVlbiAvIHBob25lCi8vKiogRGVwcmVjYXRlZCBgQHNjcmVlbi14c2AgYXMgb2YgdjMuMC4xCkBzY3JlZW4teHM6ICAgICAgICAgICAgICAgICAgNDgwcHg7Ci8vKiogRGVwcmVjYXRlZCBgQHNjcmVlbi14cy1taW5gIGFzIG9mIHYzLjIuMApAc2NyZWVuLXhzLW1pbjogICAgICAgICAgICAgIEBzY3JlZW4teHM7Ci8vKiogRGVwcmVjYXRlZCBgQHNjcmVlbi1waG9uZWAgYXMgb2YgdjMuMC4xCkBzY3JlZW4tcGhvbmU6ICAgICAgICAgICAgICAgQHNjcmVlbi14cy1taW47CgovLyBTbWFsbCBzY3JlZW4gLyB0YWJsZXQKLy8qKiBEZXByZWNhdGVkIGBAc2NyZWVuLXNtYCBhcyBvZiB2My4wLjEKQHNjcmVlbi1zbTogICAgICAgICAgICAgICAgICA3NjhweDsKQHNjcmVlbi1zbS1taW46ICAgICAgICAgICAgICBAc2NyZWVuLXNtOwovLyoqIERlcHJlY2F0ZWQgYEBzY3JlZW4tdGFibGV0YCBhcyBvZiB2My4wLjEKQHNjcmVlbi10YWJsZXQ6ICAgICAgICAgICAgICBAc2NyZWVuLXNtLW1pbjsKCi8vIE1lZGl1bSBzY3JlZW4gLyBkZXNrdG9wCi8vKiogRGVwcmVjYXRlZCBgQHNjcmVlbi1tZGAgYXMgb2YgdjMuMC4xCkBzY3JlZW4tbWQ6ICAgICAgICAgICAgICAgICAgOTkycHg7CkBzY3JlZW4tbWQtbWluOiAgICAgICAgICAgICAgQHNjcmVlbi1tZDsKLy8qKiBEZXByZWNhdGVkIGBAc2NyZWVuLWRlc2t0b3BgIGFzIG9mIHYzLjAuMQpAc2NyZWVuLWRlc2t0b3A6ICAgICAgICAgICAgIEBzY3JlZW4tbWQtbWluOwoKLy8gTGFyZ2Ugc2NyZWVuIC8gd2lkZSBkZXNrdG9wCi8vKiogRGVwcmVjYXRlZCBgQHNjcmVlbi1sZ2AgYXMgb2YgdjMuMC4xCkBzY3JlZW4tbGc6ICAgICAgICAgICAgICAgICAgMTIwMHB4OwpAc2NyZWVuLWxnLW1pbjogICAgICAgICAgICAgIEBzY3JlZW4tbGc7Ci8vKiogRGVwcmVjYXRlZCBgQHNjcmVlbi1sZy1kZXNrdG9wYCBhcyBvZiB2My4wLjEKQHNjcmVlbi1sZy1kZXNrdG9wOiAgICAgICAgICBAc2NyZWVuLWxnLW1pbjsKCi8vIFNvIG1lZGlhIHF1ZXJpZXMgZG9uJ3Qgb3ZlcmxhcCB3aGVuIHJlcXVpcmVkLCBwcm92aWRlIGEgbWF4aW11bQpAc2NyZWVuLXhzLW1heDogICAgICAgICAgICAgIChAc2NyZWVuLXNtLW1pbiAtIDEpOwpAc2NyZWVuLXNtLW1heDogICAgICAgICAgICAgIChAc2NyZWVuLW1kLW1pbiAtIDEpOwpAc2NyZWVuLW1kLW1heDogICAgICAgICAgICAgIChAc2NyZWVuLWxnLW1pbiAtIDEpOwoKCi8vPT0gR3JpZCBzeXN0ZW0KLy8KLy8jIyBEZWZpbmUgeW91ciBjdXN0b20gcmVzcG9uc2l2ZSBncmlkLgoKLy8qKiBOdW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZC4KQGdyaWQtY29sdW1uczogICAgICAgICAgICAgIDEyOwovLyoqIFBhZGRpbmcgYmV0d2VlbiBjb2x1bW5zLiBHZXRzIGRpdmlkZWQgaW4gaGFsZiBmb3IgdGhlIGxlZnQgYW5kIHJpZ2h0LgpAZ3JpZC1ndXR0ZXItd2lkdGg6ICAgICAgICAgMzBweDsKLy8gTmF2YmFyIGNvbGxhcHNlCi8vKiogUG9pbnQgYXQgd2hpY2ggdGhlIG5hdmJhciBiZWNvbWVzIHVuY29sbGFwc2VkLgpAZ3JpZC1mbG9hdC1icmVha3BvaW50OiAgICAgQHNjcmVlbi1zbS1taW47Ci8vKiogUG9pbnQgYXQgd2hpY2ggdGhlIG5hdmJhciBiZWdpbnMgY29sbGFwc2luZy4KQGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXg6IChAZ3JpZC1mbG9hdC1icmVha3BvaW50IC0gMSk7CgoKLy89PSBDb250YWluZXIgc2l6ZXMKLy8KLy8jIyBEZWZpbmUgdGhlIG1heGltdW0gd2lkdGggb2YgYC5jb250YWluZXJgIGZvciBkaWZmZXJlbnQgc2NyZWVuIHNpemVzLgoKLy8gU21hbGwgc2NyZWVuIC8gdGFibGV0CkBjb250YWluZXItdGFibGV0OiAgICAgICAgICAgICAoKDcyMHB4ICsgQGdyaWQtZ3V0dGVyLXdpZHRoKSk7Ci8vKiogRm9yIGBAc2NyZWVuLXNtLW1pbmAgYW5kIHVwLgpAY29udGFpbmVyLXNtOiAgICAgICAgICAgICAgICAgQGNvbnRhaW5lci10YWJsZXQ7CgovLyBNZWRpdW0gc2NyZWVuIC8gZGVza3RvcApAY29udGFpbmVyLWRlc2t0b3A6ICAgICAgICAgICAgKCg5NDBweCArIEBncmlkLWd1dHRlci13aWR0aCkpOwovLyoqIEZvciBgQHNjcmVlbi1tZC1taW5gIGFuZCB1cC4KQGNvbnRhaW5lci1tZDogICAgICAgICAgICAgICAgIEBjb250YWluZXItZGVza3RvcDsKCi8vIExhcmdlIHNjcmVlbiAvIHdpZGUgZGVza3RvcApAY29udGFpbmVyLWxhcmdlLWRlc2t0b3A6ICAgICAgKCgxMTQwcHggKyBAZ3JpZC1ndXR0ZXItd2lkdGgpKTsKLy8qKiBGb3IgYEBzY3JlZW4tbGctbWluYCBhbmQgdXAuCkBjb250YWluZXItbGc6ICAgICAgICAgICAgICAgICBAY29udGFpbmVyLWxhcmdlLWRlc2t0b3A7CgoKLy89PSBOYXZiYXIKLy8KLy8jIwoKLy8gQmFzaWNzIG9mIGEgbmF2YmFyCkBuYXZiYXItaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgNTBweDsKQG5hdmJhci1tYXJnaW4tYm90dG9tOiAgICAgICAgICAgICBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CkBuYXZiYXItYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgQGJvcmRlci1yYWRpdXMtYmFzZTsKQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw6ICAgICAgICBmbG9vcigoQGdyaWQtZ3V0dGVyLXdpZHRoIC8gMikpOwpAbmF2YmFyLXBhZGRpbmctdmVydGljYWw6ICAgICAgICAgICgoQG5hdmJhci1oZWlnaHQgLSBAbGluZS1oZWlnaHQtY29tcHV0ZWQpIC8gMik7CkBuYXZiYXItY29sbGFwc2UtbWF4LWhlaWdodDogICAgICAgMzQwcHg7CgpAbmF2YmFyLWRlZmF1bHQtY29sb3I6ICAgICAgICAgICAgICM3Nzc7CkBuYXZiYXItZGVmYXVsdC1iZzogICAgICAgICAgICAgICAgI2Y4ZjhmODsKQG5hdmJhci1kZWZhdWx0LWJvcmRlcjogICAgICAgICAgICBkYXJrZW4oQG5hdmJhci1kZWZhdWx0LWJnLCA2LjUlKTsKCi8vIE5hdmJhciBsaW5rcwpAbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogICAgICAgICAgICAgICAgIzc3NzsKQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICMzMzM7CkBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICB0cmFuc3BhcmVudDsKQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgICM1NTU7CkBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICBkYXJrZW4oQG5hdmJhci1kZWZhdWx0LWJnLCA2LjUlKTsKQG5hdmJhci1kZWZhdWx0LWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgICNjY2M7CkBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWJnOiAgICAgICAgICB0cmFuc3BhcmVudDsKCi8vIE5hdmJhciBicmFuZCBsYWJlbApAbmF2YmFyLWRlZmF1bHQtYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CkBuYXZiYXItZGVmYXVsdC1icmFuZC1ob3Zlci1jb2xvcjogICAgICAgICBkYXJrZW4oQG5hdmJhci1kZWZhdWx0LWJyYW5kLWNvbG9yLCAxMCUpOwpAbmF2YmFyLWRlZmF1bHQtYnJhbmQtaG92ZXItYmc6ICAgICAgICAgICAgdHJhbnNwYXJlbnQ7CgovLyBOYXZiYXIgdG9nZ2xlCkBuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6ICAgICAgICAgICAjZGRkOwpAbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiAgICAgICAgIzg4ODsKQG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6ICAgICAgICNkZGQ7CgoKLy8gSW52ZXJ0ZWQgbmF2YmFyCi8vIFJlc2V0IGludmVydGVkIG5hdmJhciBiYXNpY3MKQG5hdmJhci1pbnZlcnNlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodDsKQG5hdmJhci1pbnZlcnNlLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAjMjIyOwpAbmF2YmFyLWludmVyc2UtYm9yZGVyOiAgICAgICAgICAgICAgICAgICAgIGRhcmtlbihAbmF2YmFyLWludmVyc2UtYmcsIDEwJSk7CgovLyBJbnZlcnRlZCBuYXZiYXIgbGlua3MKQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I6ICAgICAgICAgICAgICAgICBAZ3JheS1saWdodDsKQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAjZmZmOwpAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1iZzogICAgICAgICAgICAgIHRyYW5zcGFyZW50OwpAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAgIEBuYXZiYXItaW52ZXJzZS1saW5rLWhvdmVyLWNvbG9yOwpAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAgIGRhcmtlbihAbmF2YmFyLWludmVyc2UtYmcsIDEwJSk7CkBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgIzQ0NDsKQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtYmc6ICAgICAgICAgICB0cmFuc3BhcmVudDsKCi8vIEludmVydGVkIG5hdmJhciBicmFuZCBsYWJlbApAbmF2YmFyLWludmVyc2UtYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgIEBuYXZiYXItaW52ZXJzZS1saW5rLWNvbG9yOwpAbmF2YmFyLWludmVyc2UtYnJhbmQtaG92ZXItY29sb3I6ICAgICAgICAgICNmZmY7CkBuYXZiYXItaW52ZXJzZS1icmFuZC1ob3Zlci1iZzogICAgICAgICAgICAgdHJhbnNwYXJlbnQ7CgovLyBJbnZlcnRlZCBuYXZiYXIgdG9nZ2xlCkBuYXZiYXItaW52ZXJzZS10b2dnbGUtaG92ZXItYmc6ICAgICAgICAgICAgIzMzMzsKQG5hdmJhci1pbnZlcnNlLXRvZ2dsZS1pY29uLWJhci1iZzogICAgICAgICAjZmZmOwpAbmF2YmFyLWludmVyc2UtdG9nZ2xlLWJvcmRlci1jb2xvcjogICAgICAgICMzMzM7CgoKLy89PSBOYXZzCi8vCi8vIyMKCi8vPT09IFNoYXJlZCBuYXYgc3R5bGVzCkBuYXYtbGluay1wYWRkaW5nOiAgICAgICAgICAgICAgICAgICAgICAgICAgMTBweCAxNXB4OwpAbmF2LWxpbmstaG92ZXItYmc6ICAgICAgICAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7CgpAbmF2LWRpc2FibGVkLWxpbmstY29sb3I6ICAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwpAbmF2LWRpc2FibGVkLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwoKQG5hdi1vcGVuLWxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAgICAgICAjZmZmOwoKLy89PSBUYWJzCkBuYXYtdGFicy1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAgI2RkZDsKCkBuYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogICAgICAgICAgQGdyYXktbGlnaHRlcjsKCkBuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1iZzogICAgICAgICAgICAgQGJvZHktYmc7CkBuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgQGdyYXk7CkBuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6ICAgI2RkZDsKCkBuYXYtdGFicy1qdXN0aWZpZWQtbGluay1ib3JkZXItY29sb3I6ICAgICAgICAgICAgI2RkZDsKQG5hdi10YWJzLWp1c3RpZmllZC1hY3RpdmUtbGluay1ib3JkZXItY29sb3I6ICAgICBAYm9keS1iZzsKCi8vPT0gUGlsbHMKQG5hdi1waWxscy1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwpAbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgIEBjb21wb25lbnQtYWN0aXZlLWJnOwpAbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgIEBjb21wb25lbnQtYWN0aXZlLWNvbG9yOwoKCi8vPT0gUGFnaW5hdGlvbgovLwovLyMjCgpAcGFnaW5hdGlvbi1jb2xvcjogICAgICAgICAgICAgICAgICAgICBAbGluay1jb2xvcjsKQHBhZ2luYXRpb24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQHBhZ2luYXRpb24tYm9yZGVyOiAgICAgICAgICAgICAgICAgICAgI2RkZDsKCkBwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAgIEBsaW5rLWhvdmVyLWNvbG9yOwpAcGFnaW5hdGlvbi1ob3Zlci1iZzogICAgICAgICAgICAgICAgICBAZ3JheS1saWdodGVyOwpAcGFnaW5hdGlvbi1ob3Zlci1ib3JkZXI6ICAgICAgICAgICAgICAjZGRkOwoKQHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiAgICAgICAgICAgICAgI2ZmZjsKQHBhZ2luYXRpb24tYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAgQGJyYW5kLXByaW1hcnk7CkBwYWdpbmF0aW9uLWFjdGl2ZS1ib3JkZXI6ICAgICAgICAgICAgIEBicmFuZC1wcmltYXJ5OwoKQHBhZ2luYXRpb24tZGlzYWJsZWQtY29sb3I6ICAgICAgICAgICAgQGdyYXktbGlnaHQ7CkBwYWdpbmF0aW9uLWRpc2FibGVkLWJnOiAgICAgICAgICAgICAgICNmZmY7CkBwYWdpbmF0aW9uLWRpc2FibGVkLWJvcmRlcjogICAgICAgICAgICNkZGQ7CgoKLy89PSBQYWdlcgovLwovLyMjCgpAcGFnZXItYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcGFnaW5hdGlvbi1iZzsKQHBhZ2VyLWJvcmRlcjogICAgICAgICAgICAgICAgICAgICAgICAgQHBhZ2luYXRpb24tYm9yZGVyOwpAcGFnZXItYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAgICAxNXB4OwoKQHBhZ2VyLWhvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgQHBhZ2luYXRpb24taG92ZXItYmc7CgpAcGFnZXItYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAgICAgICBAcGFnaW5hdGlvbi1hY3RpdmUtYmc7CkBwYWdlci1hY3RpdmUtY29sb3I6ICAgICAgICAgICAgICAgICAgIEBwYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcjsKCkBwYWdlci1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICAgICAgIEBwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOwoKCi8vPT0gSnVtYm90cm9uCi8vCi8vIyMKCkBqdW1ib3Ryb24tcGFkZGluZzogICAgICAgICAgICAgIDMwcHg7CkBqdW1ib3Ryb24tY29sb3I6ICAgICAgICAgICAgICAgIGluaGVyaXQ7CkBqdW1ib3Ryb24tYmc6ICAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7CkBqdW1ib3Ryb24taGVhZGluZy1jb2xvcjogICAgICAgIGluaGVyaXQ7CkBqdW1ib3Ryb24tZm9udC1zaXplOiAgICAgICAgICAgIGNlaWwoKEBmb250LXNpemUtYmFzZSAqIDEuNSkpOwoKCi8vPT0gRm9ybSBzdGF0ZXMgYW5kIGFsZXJ0cwovLwovLyMjIERlZmluZSBjb2xvcnMgZm9yIGZvcm0gZmVlZGJhY2sgc3RhdGVzIGFuZCwgYnkgZGVmYXVsdCwgYWxlcnRzLgoKQHN0YXRlLXN1Y2Nlc3MtdGV4dDogICAgICAgICAgICAgIzNjNzYzZDsKQHN0YXRlLXN1Y2Nlc3MtYmc6ICAgICAgICAgICAgICAgI2RmZjBkODsKQHN0YXRlLXN1Y2Nlc3MtYm9yZGVyOiAgICAgICAgICAgZGFya2VuKHNwaW4oQHN0YXRlLXN1Y2Nlc3MtYmcsIC0xMCksIDUlKTsKCkBzdGF0ZS1pbmZvLXRleHQ6ICAgICAgICAgICAgICAgICMzMTcwOGY7CkBzdGF0ZS1pbmZvLWJnOiAgICAgICAgICAgICAgICAgICNkOWVkZjc7CkBzdGF0ZS1pbmZvLWJvcmRlcjogICAgICAgICAgICAgIGRhcmtlbihzcGluKEBzdGF0ZS1pbmZvLWJnLCAtMTApLCA3JSk7CgpAc3RhdGUtd2FybmluZy10ZXh0OiAgICAgICAgICAgICAjOGE2ZDNiOwpAc3RhdGUtd2FybmluZy1iZzogICAgICAgICAgICAgICAjZmNmOGUzOwpAc3RhdGUtd2FybmluZy1ib3JkZXI6ICAgICAgICAgICBkYXJrZW4oc3BpbihAc3RhdGUtd2FybmluZy1iZywgLTEwKSwgNSUpOwoKQHN0YXRlLWRhbmdlci10ZXh0OiAgICAgICAgICAgICAgI2E5NDQ0MjsKQHN0YXRlLWRhbmdlci1iZzogICAgICAgICAgICAgICAgI2YyZGVkZTsKQHN0YXRlLWRhbmdlci1ib3JkZXI6ICAgICAgICAgICAgZGFya2VuKHNwaW4oQHN0YXRlLWRhbmdlci1iZywgLTEwKSwgNSUpOwoKCi8vPT0gVG9vbHRpcHMKLy8KLy8jIwoKLy8qKiBUb29sdGlwIG1heCB3aWR0aApAdG9vbHRpcC1tYXgtd2lkdGg6ICAgICAgICAgICAyMDBweDsKLy8qKiBUb29sdGlwIHRleHQgY29sb3IKQHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgI2ZmZjsKLy8qKiBUb29sdGlwIGJhY2tncm91bmQgY29sb3IKQHRvb2x0aXAtYmc6ICAgICAgICAgICAgICAgICAgIzAwMDsKQHRvb2x0aXAtb3BhY2l0eTogICAgICAgICAgICAgLjk7CgovLyoqIFRvb2x0aXAgYXJyb3cgd2lkdGgKQHRvb2x0aXAtYXJyb3ctd2lkdGg6ICAgICAgICAgNXB4OwovLyoqIFRvb2x0aXAgYXJyb3cgY29sb3IKQHRvb2x0aXAtYXJyb3ctY29sb3I6ICAgICAgICAgQHRvb2x0aXAtYmc7CgoKLy89PSBQb3BvdmVycwovLwovLyMjCgovLyoqIFBvcG92ZXIgYm9keSBiYWNrZ3JvdW5kIGNvbG9yCkBwb3BvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKLy8qKiBQb3BvdmVyIG1heGltdW0gd2lkdGgKQHBvcG92ZXItbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgICAyNzZweDsKLy8qKiBQb3BvdmVyIGJvcmRlciBjb2xvcgpAcG9wb3Zlci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgIHJnYmEoMCwwLDAsLjIpOwovLyoqIFBvcG92ZXIgZmFsbGJhY2sgYm9yZGVyIGNvbG9yCkBwb3BvdmVyLWZhbGxiYWNrLWJvcmRlci1jb2xvcjogICAgICAgI2NjYzsKCi8vKiogUG9wb3ZlciB0aXRsZSBiYWNrZ3JvdW5kIGNvbG9yCkBwb3BvdmVyLXRpdGxlLWJnOiAgICAgICAgICAgICAgICAgICAgZGFya2VuKEBwb3BvdmVyLWJnLCAzJSk7CgovLyoqIFBvcG92ZXIgYXJyb3cgd2lkdGgKQHBvcG92ZXItYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgICAxMHB4OwovLyoqIFBvcG92ZXIgYXJyb3cgY29sb3IKQHBvcG92ZXItYXJyb3ctY29sb3I6ICAgICAgICAgICAgICAgICAjZmZmOwoKLy8qKiBQb3BvdmVyIG91dGVyIGFycm93IHdpZHRoCkBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOiAgICAgICAgICAgKEBwb3BvdmVyLWFycm93LXdpZHRoICsgMSk7Ci8vKiogUG9wb3ZlciBvdXRlciBhcnJvdyBjb2xvcgpAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjogICAgICAgICAgIGZhZGVpbihAcG9wb3Zlci1ib3JkZXItY29sb3IsIDUlKTsKLy8qKiBQb3BvdmVyIG91dGVyIGFycm93IGZhbGxiYWNrIGNvbG9yCkBwb3BvdmVyLWFycm93LW91dGVyLWZhbGxiYWNrLWNvbG9yOiAgZGFya2VuKEBwb3BvdmVyLWZhbGxiYWNrLWJvcmRlci1jb2xvciwgMjAlKTsKCgovLz09IExhYmVscwovLwovLyMjCgovLyoqIERlZmF1bHQgbGFiZWwgYmFja2dyb3VuZCBjb2xvcgpAbGFiZWwtZGVmYXVsdC1iZzogICAgICAgICAgICBAZ3JheS1saWdodDsKLy8qKiBQcmltYXJ5IGxhYmVsIGJhY2tncm91bmQgY29sb3IKQGxhYmVsLXByaW1hcnktYmc6ICAgICAgICAgICAgQGJyYW5kLXByaW1hcnk7Ci8vKiogU3VjY2VzcyBsYWJlbCBiYWNrZ3JvdW5kIGNvbG9yCkBsYWJlbC1zdWNjZXNzLWJnOiAgICAgICAgICAgIEBicmFuZC1zdWNjZXNzOwovLyoqIEluZm8gbGFiZWwgYmFja2dyb3VuZCBjb2xvcgpAbGFiZWwtaW5mby1iZzogICAgICAgICAgICAgICBAYnJhbmQtaW5mbzsKLy8qKiBXYXJuaW5nIGxhYmVsIGJhY2tncm91bmQgY29sb3IKQGxhYmVsLXdhcm5pbmctYmc6ICAgICAgICAgICAgQGJyYW5kLXdhcm5pbmc7Ci8vKiogRGFuZ2VyIGxhYmVsIGJhY2tncm91bmQgY29sb3IKQGxhYmVsLWRhbmdlci1iZzogICAgICAgICAgICAgQGJyYW5kLWRhbmdlcjsKCi8vKiogRGVmYXVsdCBsYWJlbCB0ZXh0IGNvbG9yCkBsYWJlbC1jb2xvcjogICAgICAgICAgICAgICAgICNmZmY7Ci8vKiogRGVmYXVsdCB0ZXh0IGNvbG9yIG9mIGEgbGlua2VkIGxhYmVsCkBsYWJlbC1saW5rLWhvdmVyLWNvbG9yOiAgICAgICNmZmY7CgoKLy89PSBNb2RhbHMKLy8KLy8jIwoKLy8qKiBQYWRkaW5nIGFwcGxpZWQgdG8gdGhlIG1vZGFsIGJvZHkKQG1vZGFsLWlubmVyLXBhZGRpbmc6ICAgICAgICAgMTVweDsKCi8vKiogUGFkZGluZyBhcHBsaWVkIHRvIHRoZSBtb2RhbCB0aXRsZQpAbW9kYWwtdGl0bGUtcGFkZGluZzogICAgICAgICAxNXB4OwovLyoqIE1vZGFsIHRpdGxlIGxpbmUtaGVpZ2h0CkBtb2RhbC10aXRsZS1saW5lLWhlaWdodDogICAgIEBsaW5lLWhlaWdodC1iYXNlOwoKLy8qKiBCYWNrZ3JvdW5kIGNvbG9yIG9mIG1vZGFsIGNvbnRlbnQgYXJlYQpAbW9kYWwtY29udGVudC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmZmY7Ci8vKiogTW9kYWwgY29udGVudCBib3JkZXIgY29sb3IKQG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICByZ2JhKDAsMCwwLC4yKTsKLy8qKiBNb2RhbCBjb250ZW50IGJvcmRlciBjb2xvciAqKmZvciBJRTgqKgpAbW9kYWwtY29udGVudC1mYWxsYmFjay1ib3JkZXItY29sb3I6ICAgICAgICAgICM5OTk7CgovLyoqIE1vZGFsIGJhY2tkcm9wIGJhY2tncm91bmQgY29sb3IKQG1vZGFsLWJhY2tkcm9wLWJnOiAgICAgICAgICAgIzAwMDsKLy8qKiBNb2RhbCBiYWNrZHJvcCBvcGFjaXR5CkBtb2RhbC1iYWNrZHJvcC1vcGFjaXR5OiAgICAgIC41OwovLyoqIE1vZGFsIGhlYWRlciBib3JkZXIgY29sb3IKQG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I6ICAgI2U1ZTVlNTsKLy8qKiBNb2RhbCBmb290ZXIgYm9yZGVyIGNvbG9yCkBtb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOiAgIEBtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yOwoKQG1vZGFsLWxnOiAgICAgICAgICAgICAgICAgICAgOTAwcHg7CkBtb2RhbC1tZDogICAgICAgICAgICAgICAgICAgIDYwMHB4OwpAbW9kYWwtc206ICAgICAgICAgICAgICAgICAgICAzMDBweDsKCgovLz09IEFsZXJ0cwovLwovLyMjIERlZmluZSBhbGVydCBjb2xvcnMsIGJvcmRlciByYWRpdXMsIGFuZCBwYWRkaW5nLgoKQGFsZXJ0LXBhZGRpbmc6ICAgICAgICAgICAgICAgMTVweDsKQGFsZXJ0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgQGJvcmRlci1yYWRpdXMtYmFzZTsKQGFsZXJ0LWxpbmstZm9udC13ZWlnaHQ6ICAgICAgYm9sZDsKCkBhbGVydC1zdWNjZXNzLWJnOiAgICAgICAgICAgIEBzdGF0ZS1zdWNjZXNzLWJnOwpAYWxlcnQtc3VjY2Vzcy10ZXh0OiAgICAgICAgICBAc3RhdGUtc3VjY2Vzcy10ZXh0OwpAYWxlcnQtc3VjY2Vzcy1ib3JkZXI6ICAgICAgICBAc3RhdGUtc3VjY2Vzcy1ib3JkZXI7CgpAYWxlcnQtaW5mby1iZzogICAgICAgICAgICAgICBAc3RhdGUtaW5mby1iZzsKQGFsZXJ0LWluZm8tdGV4dDogICAgICAgICAgICAgQHN0YXRlLWluZm8tdGV4dDsKQGFsZXJ0LWluZm8tYm9yZGVyOiAgICAgICAgICAgQHN0YXRlLWluZm8tYm9yZGVyOwoKQGFsZXJ0LXdhcm5pbmctYmc6ICAgICAgICAgICAgQHN0YXRlLXdhcm5pbmctYmc7CkBhbGVydC13YXJuaW5nLXRleHQ6ICAgICAgICAgIEBzdGF0ZS13YXJuaW5nLXRleHQ7CkBhbGVydC13YXJuaW5nLWJvcmRlcjogICAgICAgIEBzdGF0ZS13YXJuaW5nLWJvcmRlcjsKCkBhbGVydC1kYW5nZXItYmc6ICAgICAgICAgICAgIEBzdGF0ZS1kYW5nZXItYmc7CkBhbGVydC1kYW5nZXItdGV4dDogICAgICAgICAgIEBzdGF0ZS1kYW5nZXItdGV4dDsKQGFsZXJ0LWRhbmdlci1ib3JkZXI6ICAgICAgICAgQHN0YXRlLWRhbmdlci1ib3JkZXI7CgoKLy89PSBQcm9ncmVzcyBiYXJzCi8vCi8vIyMKCi8vKiogQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgd2hvbGUgcHJvZ3Jlc3MgY29tcG9uZW50CkBwcm9ncmVzcy1iZzogICAgICAgICAgICAgICAgICNmNWY1ZjU7Ci8vKiogUHJvZ3Jlc3MgYmFyIHRleHQgY29sb3IKQHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgI2ZmZjsKCi8vKiogRGVmYXVsdCBwcm9ncmVzcyBiYXIgY29sb3IKQHByb2dyZXNzLWJhci1iZzogICAgICAgICAgICAgQGJyYW5kLXByaW1hcnk7Ci8vKiogU3VjY2VzcyBwcm9ncmVzcyBiYXIgY29sb3IKQHByb2dyZXNzLWJhci1zdWNjZXNzLWJnOiAgICAgQGJyYW5kLXN1Y2Nlc3M7Ci8vKiogV2FybmluZyBwcm9ncmVzcyBiYXIgY29sb3IKQHByb2dyZXNzLWJhci13YXJuaW5nLWJnOiAgICAgQGJyYW5kLXdhcm5pbmc7Ci8vKiogRGFuZ2VyIHByb2dyZXNzIGJhciBjb2xvcgpAcHJvZ3Jlc3MtYmFyLWRhbmdlci1iZzogICAgICBAYnJhbmQtZGFuZ2VyOwovLyoqIEluZm8gcHJvZ3Jlc3MgYmFyIGNvbG9yCkBwcm9ncmVzcy1iYXItaW5mby1iZzogICAgICAgIEBicmFuZC1pbmZvOwoKCi8vPT0gTGlzdCBncm91cAovLwovLyMjCgovLyoqIEJhY2tncm91bmQgY29sb3Igb24gYC5saXN0LWdyb3VwLWl0ZW1gCkBsaXN0LWdyb3VwLWJnOiAgICAgICAgICAgICAgICAgI2ZmZjsKLy8qKiBgLmxpc3QtZ3JvdXAtaXRlbWAgYm9yZGVyIGNvbG9yCkBsaXN0LWdyb3VwLWJvcmRlcjogICAgICAgICAgICAgI2RkZDsKLy8qKiBMaXN0IGdyb3VwIGJvcmRlciByYWRpdXMKQGxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1czogICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwoKLy8qKiBCYWNrZ3JvdW5kIGNvbG9yIG9mIHNpbmdsZSBsaXN0IGl0ZW1zIG9uIGhvdmVyCkBsaXN0LWdyb3VwLWhvdmVyLWJnOiAgICAgICAgICAgI2Y1ZjVmNTsKLy8qKiBUZXh0IGNvbG9yIG9mIGFjdGl2ZSBsaXN0IGl0ZW1zCkBsaXN0LWdyb3VwLWFjdGl2ZS1jb2xvcjogICAgICAgQGNvbXBvbmVudC1hY3RpdmUtY29sb3I7Ci8vKiogQmFja2dyb3VuZCBjb2xvciBvZiBhY3RpdmUgbGlzdCBpdGVtcwpAbGlzdC1ncm91cC1hY3RpdmUtYmc6ICAgICAgICAgIEBjb21wb25lbnQtYWN0aXZlLWJnOwovLyoqIEJvcmRlciBjb2xvciBvZiBhY3RpdmUgbGlzdCBlbGVtZW50cwpAbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyOiAgICAgIEBsaXN0LWdyb3VwLWFjdGl2ZS1iZzsKLy8qKiBUZXh0IGNvbG9yIGZvciBjb250ZW50IHdpdGhpbiBhY3RpdmUgbGlzdCBpdGVtcwpAbGlzdC1ncm91cC1hY3RpdmUtdGV4dC1jb2xvcjogIGxpZ2h0ZW4oQGxpc3QtZ3JvdXAtYWN0aXZlLWJnLCA0MCUpOwoKLy8qKiBUZXh0IGNvbG9yIG9mIGRpc2FibGVkIGxpc3QgaXRlbXMKQGxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3I6ICAgICAgQGdyYXktbGlnaHQ7Ci8vKiogQmFja2dyb3VuZCBjb2xvciBvZiBkaXNhYmxlZCBsaXN0IGl0ZW1zCkBsaXN0LWdyb3VwLWRpc2FibGVkLWJnOiAgICAgICAgIEBncmF5LWxpZ2h0ZXI7Ci8vKiogVGV4dCBjb2xvciBmb3IgY29udGVudCB3aXRoaW4gZGlzYWJsZWQgbGlzdCBpdGVtcwpAbGlzdC1ncm91cC1kaXNhYmxlZC10ZXh0LWNvbG9yOiBAbGlzdC1ncm91cC1kaXNhYmxlZC1jb2xvcjsKCkBsaXN0LWdyb3VwLWxpbmstY29sb3I6ICAgICAgICAgIzU1NTsKQGxpc3QtZ3JvdXAtbGluay1ob3Zlci1jb2xvcjogICBAbGlzdC1ncm91cC1saW5rLWNvbG9yOwpAbGlzdC1ncm91cC1saW5rLWhlYWRpbmctY29sb3I6ICMzMzM7CgoKLy89PSBQYW5lbHMKLy8KLy8jIwoKQHBhbmVsLWJnOiAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQHBhbmVsLWJvZHktcGFkZGluZzogICAgICAgICAgMTVweDsKQHBhbmVsLWhlYWRpbmctcGFkZGluZzogICAgICAgMTBweCAxNXB4OwpAcGFuZWwtZm9vdGVyLXBhZGRpbmc6ICAgICAgICBAcGFuZWwtaGVhZGluZy1wYWRkaW5nOwpAcGFuZWwtYm9yZGVyLXJhZGl1czogICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwoKLy8qKiBCb3JkZXIgY29sb3IgZm9yIGVsZW1lbnRzIHdpdGhpbiBwYW5lbHMKQHBhbmVsLWlubmVyLWJvcmRlcjogICAgICAgICAgI2RkZDsKQHBhbmVsLWZvb3Rlci1iZzogICAgICAgICAgICAgI2Y1ZjVmNTsKCkBwYW5lbC1kZWZhdWx0LXRleHQ6ICAgICAgICAgIEBncmF5LWRhcms7CkBwYW5lbC1kZWZhdWx0LWJvcmRlcjogICAgICAgICNkZGQ7CkBwYW5lbC1kZWZhdWx0LWhlYWRpbmctYmc6ICAgICNmNWY1ZjU7CgpAcGFuZWwtcHJpbWFyeS10ZXh0OiAgICAgICAgICAjZmZmOwpAcGFuZWwtcHJpbWFyeS1ib3JkZXI6ICAgICAgICBAYnJhbmQtcHJpbWFyeTsKQHBhbmVsLXByaW1hcnktaGVhZGluZy1iZzogICAgQGJyYW5kLXByaW1hcnk7CgpAcGFuZWwtc3VjY2Vzcy10ZXh0OiAgICAgICAgICBAc3RhdGUtc3VjY2Vzcy10ZXh0OwpAcGFuZWwtc3VjY2Vzcy1ib3JkZXI6ICAgICAgICBAc3RhdGUtc3VjY2Vzcy1ib3JkZXI7CkBwYW5lbC1zdWNjZXNzLWhlYWRpbmctYmc6ICAgIEBzdGF0ZS1zdWNjZXNzLWJnOwoKQHBhbmVsLWluZm8tdGV4dDogICAgICAgICAgICAgQHN0YXRlLWluZm8tdGV4dDsKQHBhbmVsLWluZm8tYm9yZGVyOiAgICAgICAgICAgQHN0YXRlLWluZm8tYm9yZGVyOwpAcGFuZWwtaW5mby1oZWFkaW5nLWJnOiAgICAgICBAc3RhdGUtaW5mby1iZzsKCkBwYW5lbC13YXJuaW5nLXRleHQ6ICAgICAgICAgIEBzdGF0ZS13YXJuaW5nLXRleHQ7CkBwYW5lbC13YXJuaW5nLWJvcmRlcjogICAgICAgIEBzdGF0ZS13YXJuaW5nLWJvcmRlcjsKQHBhbmVsLXdhcm5pbmctaGVhZGluZy1iZzogICAgQHN0YXRlLXdhcm5pbmctYmc7CgpAcGFuZWwtZGFuZ2VyLXRleHQ6ICAgICAgICAgICBAc3RhdGUtZGFuZ2VyLXRleHQ7CkBwYW5lbC1kYW5nZXItYm9yZGVyOiAgICAgICAgIEBzdGF0ZS1kYW5nZXItYm9yZGVyOwpAcGFuZWwtZGFuZ2VyLWhlYWRpbmctYmc6ICAgICBAc3RhdGUtZGFuZ2VyLWJnOwoKCi8vPT0gVGh1bWJuYWlscwovLwovLyMjCgovLyoqIFBhZGRpbmcgYXJvdW5kIHRoZSB0aHVtYm5haWwgaW1hZ2UKQHRodW1ibmFpbC1wYWRkaW5nOiAgICAgICAgICAgNHB4OwovLyoqIFRodW1ibmFpbCBiYWNrZ3JvdW5kIGNvbG9yCkB0aHVtYm5haWwtYmc6ICAgICAgICAgICAgICAgIEBib2R5LWJnOwovLyoqIFRodW1ibmFpbCBib3JkZXIgY29sb3IKQHRodW1ibmFpbC1ib3JkZXI6ICAgICAgICAgICAgI2RkZDsKLy8qKiBUaHVtYm5haWwgYm9yZGVyIHJhZGl1cwpAdGh1bWJuYWlsLWJvcmRlci1yYWRpdXM6ICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwoKLy8qKiBDdXN0b20gdGV4dCBjb2xvciBmb3IgdGh1bWJuYWlsIGNhcHRpb25zCkB0aHVtYm5haWwtY2FwdGlvbi1jb2xvcjogICAgIEB0ZXh0LWNvbG9yOwovLyoqIFBhZGRpbmcgYXJvdW5kIHRoZSB0aHVtYm5haWwgY2FwdGlvbgpAdGh1bWJuYWlsLWNhcHRpb24tcGFkZGluZzogICA5cHg7CgoKLy89PSBXZWxscwovLwovLyMjCgpAd2VsbC1iZzogICAgICAgICAgICAgICAgICAgICAjZjVmNWY1OwpAd2VsbC1ib3JkZXI6ICAgICAgICAgICAgICAgICBkYXJrZW4oQHdlbGwtYmcsIDclKTsKCgovLz09IEJhZGdlcwovLwovLyMjCgpAYmFkZ2UtY29sb3I6ICAgICAgICAgICAgICAgICAjZmZmOwovLyoqIExpbmtlZCBiYWRnZSB0ZXh0IGNvbG9yIG9uIGhvdmVyCkBiYWRnZS1saW5rLWhvdmVyLWNvbG9yOiAgICAgICNmZmY7CkBiYWRnZS1iZzogICAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwoKLy8qKiBCYWRnZSB0ZXh0IGNvbG9yIGluIGFjdGl2ZSBuYXYgbGluawpAYmFkZ2UtYWN0aXZlLWNvbG9yOiAgICAgICAgICBAbGluay1jb2xvcjsKLy8qKiBCYWRnZSBiYWNrZ3JvdW5kIGNvbG9yIGluIGFjdGl2ZSBuYXYgbGluawpAYmFkZ2UtYWN0aXZlLWJnOiAgICAgICAgICAgICAjZmZmOwoKQGJhZGdlLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgYm9sZDsKQGJhZGdlLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgMTsKQGJhZGdlLWJvcmRlci1yYWRpdXM6ICAgICAgICAgMTBweDsKCgovLz09IEJyZWFkY3J1bWJzCi8vCi8vIyMKCkBicmVhZGNydW1iLXBhZGRpbmctdmVydGljYWw6ICAgOHB4OwpAYnJlYWRjcnVtYi1wYWRkaW5nLWhvcml6b250YWw6IDE1cHg7Ci8vKiogQnJlYWRjcnVtYiBiYWNrZ3JvdW5kIGNvbG9yCkBicmVhZGNydW1iLWJnOiAgICAgICAgICAgICAgICAgI2Y1ZjVmNTsKLy8qKiBCcmVhZGNydW1iIHRleHQgY29sb3IKQGJyZWFkY3J1bWItY29sb3I6ICAgICAgICAgICAgICAjY2NjOwovLyoqIFRleHQgY29sb3Igb2YgY3VycmVudCBwYWdlIGluIHRoZSBicmVhZGNydW1iCkBicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjogICAgICAgQGdyYXktbGlnaHQ7Ci8vKiogVGV4dHVhbCBzZXBhcmF0b3IgZm9yIGJldHdlZW4gYnJlYWRjcnVtYiBlbGVtZW50cwpAYnJlYWRjcnVtYi1zZXBhcmF0b3I6ICAgICAgICAgICIvIjsKCgovLz09IENhcm91c2VsCi8vCi8vIyMKCkBjYXJvdXNlbC10ZXh0LXNoYWRvdzogICAgICAgICAgICAgICAgICAgICAgICAwIDFweCAycHggcmdiYSgwLDAsMCwuNik7CgpAY2Fyb3VzZWwtY29udHJvbC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQGNhcm91c2VsLWNvbnRyb2wtd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgIDE1JTsKQGNhcm91c2VsLWNvbnRyb2wtb3BhY2l0eTogICAgICAgICAgICAgICAgICAgIC41OwpAY2Fyb3VzZWwtY29udHJvbC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgMjBweDsKCkBjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAjZmZmOwpAY2Fyb3VzZWwtaW5kaWNhdG9yLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgI2ZmZjsKCkBjYXJvdXNlbC1jYXB0aW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAjZmZmOwoKCi8vPT0gQ2xvc2UKLy8KLy8jIwoKQGNsb3NlLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgYm9sZDsKQGNsb3NlLWNvbG9yOiAgICAgICAgICAgICAgICAgIzAwMDsKQGNsb3NlLXRleHQtc2hhZG93OiAgICAgICAgICAgMCAxcHggMCAjZmZmOwoKCi8vPT0gQ29kZQovLwovLyMjCgpAY29kZS1jb2xvcjogICAgICAgICAgICAgICAgICAjYzcyNTRlOwpAY29kZS1iZzogICAgICAgICAgICAgICAgICAgICAjZjlmMmY0OwoKQGtiZC1jb2xvcjogICAgICAgICAgICAgICAgICAgI2ZmZjsKQGtiZC1iZzogICAgICAgICAgICAgICAgICAgICAgIzMzMzsKCkBwcmUtYmc6ICAgICAgICAgICAgICAgICAgICAgICNmNWY1ZjU7CkBwcmUtY29sb3I6ICAgICAgICAgICAgICAgICAgIEBncmF5LWRhcms7CkBwcmUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICNjY2M7CkBwcmUtc2Nyb2xsYWJsZS1tYXgtaGVpZ2h0OiAgIDM0MHB4OwoKCi8vPT0gVHlwZQovLwovLyMjCgovLyoqIEhvcml6b250YWwgb2Zmc2V0IGZvciBmb3JtcyBhbmQgbGlzdHMuCkBjb21wb25lbnQtb2Zmc2V0LWhvcml6b250YWw6IDE4MHB4OwovLyoqIFRleHQgbXV0ZWQgY29sb3IKQHRleHQtbXV0ZWQ6ICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHQ7Ci8vKiogQWJicmV2aWF0aW9ucyBhbmQgYWNyb255bXMgYm9yZGVyIGNvbG9yCkBhYmJyLWJvcmRlci1jb2xvcjogICAgICAgICAgIEBncmF5LWxpZ2h0OwovLyoqIEhlYWRpbmdzIHNtYWxsIGNvbG9yCkBoZWFkaW5ncy1zbWFsbC1jb2xvcjogICAgICAgIEBncmF5LWxpZ2h0OwovLyoqIEJsb2NrcXVvdGUgc21hbGwgY29sb3IKQGJsb2NrcXVvdGUtc21hbGwtY29sb3I6ICAgICAgQGdyYXktbGlnaHQ7Ci8vKiogQmxvY2txdW90ZSBmb250IHNpemUKQGJsb2NrcXVvdGUtZm9udC1zaXplOiAgICAgICAgKEBmb250LXNpemUtYmFzZSAqIDEuMjUpOwovLyoqIEJsb2NrcXVvdGUgYm9yZGVyIGNvbG9yCkBibG9ja3F1b3RlLWJvcmRlci1jb2xvcjogICAgIEBncmF5LWxpZ2h0ZXI7Ci8vKiogUGFnZSBoZWFkZXIgYm9yZGVyIGNvbG9yCkBwYWdlLWhlYWRlci1ib3JkZXItY29sb3I6ICAgIEBncmF5LWxpZ2h0ZXI7Ci8vKiogV2lkdGggb2YgaG9yaXpvbnRhbCBkZXNjcmlwdGlvbiBsaXN0IHRpdGxlcwpAZGwtaG9yaXpvbnRhbC1vZmZzZXQ6ICAgICAgICBAY29tcG9uZW50LW9mZnNldC1ob3Jpem9udGFsOwovLyoqIEhvcml6b250YWwgbGluZSBjb2xvci4KQGhyLWJvcmRlcjogICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHRlcjsKCgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap-3.2/less/wells.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gV2VsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi53ZWxsIHsKICBtaW4taGVpZ2h0OiAyMHB4OwogIHBhZGRpbmc6IDE5cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2VsbC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAd2VsbC1ib3JkZXI7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICAuYm94LXNoYWRvdyhpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDUpKTsKICBibG9ja3F1b3RlIHsKICAgIGJvcmRlci1jb2xvcjogI2RkZDsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLDAsMCwuMTUpOwogIH0KfQoKLy8gU2l6ZXMKLndlbGwtbGcgewogIHBhZGRpbmc6IDI0cHg7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtbGFyZ2U7Cn0KLndlbGwtc20gewogIHBhZGRpbmc6IDlweDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1zbWFsbDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/css/bootstrap.map</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxlc3Mvbm9ybWFsaXplLmxlc3MiLCJsZXNzL3ByaW50Lmxlc3MiLCJsZXNzL3NjYWZmb2xkaW5nLmxlc3MiLCJsZXNzL21peGlucy5sZXNzIiwibGVzcy92YXJpYWJsZXMubGVzcyIsImxlc3MvdHlwZS5sZXNzIiwibGVzcy9jb2RlLmxlc3MiLCJsZXNzL2dyaWQubGVzcyIsImxlc3MvdGFibGVzLmxlc3MiLCJsZXNzL2Zvcm1zLmxlc3MiLCJsZXNzL2J1dHRvbnMubGVzcyIsImxlc3MvY29tcG9uZW50LWFuaW1hdGlvbnMubGVzcyIsImxlc3MvZ2x5cGhpY29ucy5sZXNzIiwibGVzcy9kcm9wZG93bnMubGVzcyIsImxlc3MvYnV0dG9uLWdyb3Vwcy5sZXNzIiwibGVzcy9pbnB1dC1ncm91cHMubGVzcyIsImxlc3MvbmF2cy5sZXNzIiwibGVzcy9uYXZiYXIubGVzcyIsImxlc3MvdXRpbGl0aWVzLmxlc3MiLCJsZXNzL2JyZWFkY3J1bWJzLmxlc3MiLCJsZXNzL3BhZ2luYXRpb24ubGVzcyIsImxlc3MvcGFnZXIubGVzcyIsImxlc3MvbGFiZWxzLmxlc3MiLCJsZXNzL2JhZGdlcy5sZXNzIiwibGVzcy9qdW1ib3Ryb24ubGVzcyIsImxlc3MvdGh1bWJuYWlscy5sZXNzIiwibGVzcy9hbGVydHMubGVzcyIsImxlc3MvcHJvZ3Jlc3MtYmFycy5sZXNzIiwibGVzcy9tZWRpYS5sZXNzIiwibGVzcy9saXN0LWdyb3VwLmxlc3MiLCJsZXNzL3BhbmVscy5sZXNzIiwibGVzcy93ZWxscy5sZXNzIiwibGVzcy9jbG9zZS5sZXNzIiwibGVzcy9tb2RhbHMubGVzcyIsImxlc3MvdG9vbHRpcC5sZXNzIiwibGVzcy9wb3BvdmVycy5sZXNzIiwibGVzcy9jYXJvdXNlbC5sZXNzIiwibGVzcy9yZXNwb25zaXZlLXV0aWxpdGllcy5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFVTztBQUNGO0FBQ0U7QUFDRztBQUNKO0FBQ0E7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDO0FBQ0M7RUFDVCxXQUFBOztBQUVTO0VBQUUseUJBQUE7O0FBQ0Y7RUFBRSwwQkFBQTs7QUFDRjtFQUFFLFVBQUE7O0FBQ0Y7RUFBRSx5QkFBQTs7QUFDRjtFQUFFLHlCQUFBOztBQUNGO0VBQUUsVUFBQTs7QUFDRjtFQUFFLDBCQUFBOztBQUNGO0VBQUUseUJBQUE7O0FBQ0Y7RUFBRSxVQUFBOztBQUNGO0VBQUUseUJBQUE7O0FBQ0Y7RUFBRSx5QkFBQTs7QUFDRjtFQUFFLFdBQUE7O0FBK0VaLFFBcEVrQztFQUN0QjtJQUNULGdCQUFBOztFQUdPO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNDO0VBQ0M7SUFDVCxXQUFBOztFQUVTO0lBQUUseUJBQUE7O0VBQ0Y7SUFBRSwwQkFBQTs7RUFDRjtJQUFFLFVBQUE7O0VBQ0Y7SUFBRSx5QkFBQTs7RUFDRjtJQUFFLHlCQUFBOztFQUNGO0lBQUUsVUFBQTs7RUFDRjtJQUFFLDBCQUFBOztFQUNGO0lBQUUseUJBQUE7O0VBQ0Y7SUFBRSxVQUFBOztFQUNGO0lBQUUseUJBQUE7O0VBQ0Y7SUFBRSx5QkFBQTs7RUFDRjtJQUFFLFdBQUE7O0VBR0c7SUFBRSx3QkFBQTs7RUFDRjtJQUFFLHlCQUFBOztFQUNGO0lBQUUsU0FBQTs7RUFDRjtJQUFFLHdCQUFBOztFQUNGO0lBQUUsd0JBQUE7O0VBQ0Y7SUFBRSxTQUFBOztFQUNGO0lBQUUseUJBQUE7O0VBQ0Y7SUFBRSx3QkFBQTs7RUFDRjtJQUFFLFNBQUE7O0VBQ0Y7SUFBRSx3QkFBQTs7RUFDRjtJQUFFLHdCQUFBOztFQUVGO0lBQUUseUJBQUE7O0VBQ0Y7SUFBRSwwQkFBQTs7RUFDRjtJQUFFLFVBQUE7O0VBQ0Y7SUFBRSx5QkFBQTs7RUFDRjtJQUFFLHlCQUFBOztFQUNGO0lBQUUsVUFBQTs7RUFDRjtJQUFFLDBCQUFBOztFQUNGO0lBQUUseUJBQUE7O0VBQ0Y7SUFBRSxVQUFBOztFQUNGO0lBQUUseUJBQUE7O0VBQ0Y7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LGNBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsaUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsY0FBUTtFQUFFLFNBQVMsT0FBVDs7QUFDVixnQkFBUTtFQUFFLFNBQVMsT0FBVDs7QUFDVixlQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGVBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsZUFBUTtFQUFFLFNBQVMsT0FBVDs7QUFDVixlQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLHVCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLG1CQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGlCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGdCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLHNCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGlCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGtCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLG1CQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGVBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YscUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YscUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysc0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysb0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsaUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysa0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsY0FBUTtFQUFFLFNBQVMsT0FBVDs7QUFDVixlQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGVBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsZ0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsZUFBUTtFQUFFLFNBQVMsT0FBVDs7QUFDVixlQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGlCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLHNCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLHFCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLHFCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLHVCQUFRO0VBQUUsU0FBUyxPQUFU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QUFFLFNBQVMsT0FBVDs7QUFDVixlQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGdCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGlCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGlCQUFRO0VBQUUsU0FBUyxPQUFUOztBQUNWLGVBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysc0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsdUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysd0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysc0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysc0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysc0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsbUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysa0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsaUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YscUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsbUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysb0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsZ0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsZ0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsbUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsbUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysb0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsdUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysc0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysb0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysb0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1Ysb0JBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YseUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsNEJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YseUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsdUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YsdUJBQVE7RUFBRSxTQUFTLE9BQVQ7O0FBQ1YseUJBQVE7RUFBRSxTQUFTLE9B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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/expected/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/expected/bootstrap.map</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxlc3NcL25vcm1hbGl6ZS5sZXNzIiwibGVzc1wvcHJpbnQubGVzcyIsImxlc3NcL3NjYWZmb2xkaW5nLmxlc3MiLCJsZXNzXC9taXhpbnMubGVzcyIsImxlc3NcL3ZhcmlhYmxlcy5sZXNzIiwibGVzc1wvdHlwZS5sZXNzIiwibGVzc1wvY29kZS5sZXNzIiwibGVzc1wvZ3JpZC5sZXNzIiwibGVzc1wvdGFibGVzLmxlc3MiLCJsZXNzXC9mb3Jtcy5sZXNzIiwibGVzc1wvYnV0dG9ucy5sZXNzIiwibGVzc1wvY29tcG9uZW50LWFuaW1hdGlvbnMubGVzcyIsImxlc3NcL2dseXBoaWNvbnMubGVzcyIsImxlc3NcL2Ryb3Bkb3ducy5sZXNzIiwibGVzc1wvYnV0dG9uLWdyb3Vwcy5sZXNzIiwibGVzc1wvaW5wdXQtZ3JvdXBzLmxlc3MiLCJsZXNzXC9uYXZzLmxlc3MiLCJsZXNzXC9uYXZiYXIubGVzcyIsImxlc3NcL3V0aWxpdGllcy5sZXNzIiwibGVzc1wvYnJlYWRjcnVtYnMubGVzcyIsImxlc3NcL3BhZ2luYXRpb24ubGVzcyIsImxlc3NcL3BhZ2VyLmxlc3MiLCJsZXNzXC9sYWJlbHMubGVzcyIsImxlc3NcL2JhZGdlcy5sZXNzIiwibGVzc1wvanVtYm90cm9uLmxlc3MiLCJsZXNzXC90aHVtYm5haWxzLmxlc3MiLCJsZXNzXC9hbGVydHMubGVzcyIsImxlc3NcL3Byb2dyZXNzLWJhcnMubGVzcyIsImxlc3NcL21lZGlhLmxlc3MiLCJsZXNzXC9saXN0LWdyb3VwLmxlc3MiLCJsZXNzXC9wYW5lbHMubGVzcyIsImxlc3NcL3dlbGxzLmxlc3MiLCJsZXNzXC9jbG9zZS5sZXNzIiwibGVzc1wvbW9kYWxzLmxlc3MiLCJsZXNzXC90b29sdGlwLmxlc3MiLCJsZXNzXC9wb3BvdmVycy5sZXNzIiwibGVzc1wvY2Fyb3VzZWwubGVzcyIsImxlc3NcL3Jlc3BvbnNpdmUtdXRpbGl0aWVzLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztB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QVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZUFBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxlQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGdCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JB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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/alerts.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQWxlcnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBzdHlsZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmFsZXJ0IHsKICBwYWRkaW5nOiBAYWxlcnQtcGFkZGluZzsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQGFsZXJ0LWJvcmRlci1yYWRpdXM7CgogIC8vIEhlYWRpbmdzIGZvciBsYXJnZXIgYWxlcnRzCiAgaDQgewogICAgbWFyZ2luLXRvcDogMDsKICAgIC8vIFNwZWNpZmllZCBmb3IgdGhlIGg0IHRvIHByZXZlbnQgY29uZmxpY3RzIG9mIGNoYW5naW5nIEBoZWFkaW5nc0NvbG9yCiAgICBjb2xvcjogaW5oZXJpdDsKICB9CiAgLy8gUHJvdmlkZSBjbGFzcyBmb3IgbGlua3MgdGhhdCBtYXRjaCBhbGVydHMKICAuYWxlcnQtbGluayB7CiAgICBmb250LXdlaWdodDogQGFsZXJ0LWxpbmstZm9udC13ZWlnaHQ7CiAgfQoKICAvLyBJbXByb3ZlIGFsaWdubWVudCBhbmQgc3BhY2luZyBvZiBpbm5lciBjb250ZW50CiAgPiBwLAogID4gdWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgPiBwICsgcCB7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgfQp9CgovLyBEaXNtaXNzYWJsZSBhbGVydHMKLy8KLy8gRXhwYW5kIHRoZSByaWdodCBwYWRkaW5nIGFuZCBhY2NvdW50IGZvciB0aGUgY2xvc2UgYnV0dG9uJ3MgcG9zaXRpb25pbmcuCgouYWxlcnQtZGlzbWlzc2FibGUgewogcGFkZGluZy1yaWdodDogKEBhbGVydC1wYWRkaW5nICsgMjApOwoKICAvLyBBZGp1c3QgY2xvc2UgbGluayBwb3NpdGlvbgogIC5jbG9zZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IC0ycHg7CiAgICByaWdodDogLTIxcHg7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9Cn0KCi8vIEFsdGVybmF0ZSBzdHlsZXMKLy8KLy8gR2VuZXJhdGUgY29udGV4dHVhbCBtb2RpZmllciBjbGFzc2VzIGZvciBjb2xvcml6aW5nIHRoZSBhbGVydC4KCi5hbGVydC1zdWNjZXNzIHsKICAuYWxlcnQtdmFyaWFudChAYWxlcnQtc3VjY2Vzcy1iZzsgQGFsZXJ0LXN1Y2Nlc3MtYm9yZGVyOyBAYWxlcnQtc3VjY2Vzcy10ZXh0KTsKfQouYWxlcnQtaW5mbyB7CiAgLmFsZXJ0LXZhcmlhbnQoQGFsZXJ0LWluZm8tYmc7IEBhbGVydC1pbmZvLWJvcmRlcjsgQGFsZXJ0LWluZm8tdGV4dCk7Cn0KLmFsZXJ0LXdhcm5pbmcgewogIC5hbGVydC12YXJpYW50KEBhbGVydC13YXJuaW5nLWJnOyBAYWxlcnQtd2FybmluZy1ib3JkZXI7IEBhbGVydC13YXJuaW5nLXRleHQpOwp9Ci5hbGVydC1kYW5nZXIgewogIC5hbGVydC12YXJpYW50KEBhbGVydC1kYW5nZXItYmc7IEBhbGVydC1kYW5nZXItYm9yZGVyOyBAYWxlcnQtZGFuZ2VyLXRleHQpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/badges.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQmFkZ2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBjbGFzc2VzCi5iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1pbi13aWR0aDogMTBweDsKICBwYWRkaW5nOiAzcHggN3B4OwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1zbWFsbDsKICBmb250LXdlaWdodDogQGJhZGdlLWZvbnQtd2VpZ2h0OwogIGNvbG9yOiBAYmFkZ2UtY29sb3I7CiAgbGluZS1oZWlnaHQ6IEBiYWRnZS1saW5lLWhlaWdodDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJhZGdlLWJnOwogIGJvcmRlci1yYWRpdXM6IEBiYWRnZS1ib3JkZXItcmFkaXVzOwoKICAvLyBFbXB0eSBiYWRnZXMgY29sbGFwc2UgYXV0b21hdGljYWxseSAobm90IGF2YWlsYWJsZSBpbiBJRTgpCiAgJjplbXB0eSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoKLy8gSG92ZXIgc3RhdGUsIGJ1dCBvbmx5IGZvciBsaW5rcwphLmJhZGdlIHsKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgY29sb3I6IEBiYWRnZS1saW5rLWhvdmVyLWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KfQoKLy8gUXVpY2sgZml4IGZvciBsYWJlbHMvYmFkZ2VzIGluIGJ1dHRvbnMKLmJ0biAuYmFkZ2UgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IC0xcHg7Cn0KCi8vIEFjY291bnQgZm9yIGNvdW50ZXJzIGluIG5hdnMKYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlID4gLmJhZGdlLAoubmF2LXBpbGxzID4gLmFjdGl2ZSA+IGEgPiAuYmFkZ2UgewogIGNvbG9yOiBAYmFkZ2UtYWN0aXZlLWNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBiYWRnZS1hY3RpdmUtYmc7Cn0KLm5hdi1waWxscyA+IGxpID4gYSA+IC5iYWRnZSB7CiAgbWFyZ2luLWxlZnQ6IDNweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/bootstrap.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2My4wLjAKICoKICogQ29weXJpZ2h0IDIwMTMgVHdpdHRlciwgSW5jCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBEZXNpZ25lZCBhbmQgYnVpbHQgd2l0aCBhbGwgdGhlIGxvdmUgaW4gdGhlIHdvcmxkIGJ5IEBtZG8gYW5kIEBmYXQuCiAqLwoKLy8gQ29yZSB2YXJpYWJsZXMgYW5kIG1peGlucwpAaW1wb3J0ICJ2YXJpYWJsZXMubGVzcyI7CkBpbXBvcnQgIm1peGlucy5sZXNzIjsKCi8vIFJlc2V0CkBpbXBvcnQgIm5vcm1hbGl6ZS5sZXNzIjsKQGltcG9ydCAicHJpbnQubGVzcyI7CgovLyBDb3JlIENTUwpAaW1wb3J0ICJzY2FmZm9sZGluZy5sZXNzIjsKQGltcG9ydCAidHlwZS5sZXNzIjsKQGltcG9ydCAiY29kZS5sZXNzIjsKQGltcG9ydCAiZ3JpZC5sZXNzIjsKQGltcG9ydCAidGFibGVzLmxlc3MiOwpAaW1wb3J0ICJmb3Jtcy5sZXNzIjsKQGltcG9ydCAiYnV0dG9ucy5sZXNzIjsKCi8vIENvbXBvbmVudHMKQGltcG9ydCAiY29tcG9uZW50LWFuaW1hdGlvbnMubGVzcyI7CkBpbXBvcnQgImdseXBoaWNvbnMubGVzcyI7CkBpbXBvcnQgImRyb3Bkb3ducy5sZXNzIjsKQGltcG9ydCAiYnV0dG9uLWdyb3Vwcy5sZXNzIjsKQGltcG9ydCAiaW5wdXQtZ3JvdXBzLmxlc3MiOwpAaW1wb3J0ICJuYXZzLmxlc3MiOwpAaW1wb3J0ICJuYXZiYXIubGVzcyI7CkBpbXBvcnQgImJyZWFkY3J1bWJzLmxlc3MiOwpAaW1wb3J0ICJwYWdpbmF0aW9uLmxlc3MiOwpAaW1wb3J0ICJwYWdlci5sZXNzIjsKQGltcG9ydCAibGFiZWxzLmxlc3MiOwpAaW1wb3J0ICJiYWRnZXMubGVzcyI7CkBpbXBvcnQgImp1bWJvdHJvbi5sZXNzIjsKQGltcG9ydCAidGh1bWJuYWlscy5sZXNzIjsKQGltcG9ydCAiYWxlcnRzLmxlc3MiOwpAaW1wb3J0ICJwcm9ncmVzcy1iYXJzLmxlc3MiOwpAaW1wb3J0ICJtZWRpYS5sZXNzIjsKQGltcG9ydCAibGlzdC1ncm91cC5sZXNzIjsKQGltcG9ydCAicGFuZWxzLmxlc3MiOwpAaW1wb3J0ICJ3ZWxscy5sZXNzIjsKQGltcG9ydCAiY2xvc2UubGVzcyI7CgovLyBDb21wb25lbnRzIHcvIEphdmFTY3JpcHQKQGltcG9ydCAibW9kYWxzLmxlc3MiOwpAaW1wb3J0ICJ0b29sdGlwLmxlc3MiOwpAaW1wb3J0ICJwb3BvdmVycy5sZXNzIjsKQGltcG9ydCAiY2Fyb3VzZWwubGVzcyI7CgovLyBVdGlsaXR5IGNsYXNzZXMKQGltcG9ydCAidXRpbGl0aWVzLmxlc3MiOwpAaW1wb3J0ICJyZXNwb25zaXZlLXV0aWxpdGllcy5sZXNzIjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/breadcrumbs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnJlYWRjcnVtYnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgouYnJlYWRjcnVtYiB7CiAgcGFkZGluZzogOHB4IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJyZWFkY3J1bWItYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICA+IGxpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICYrbGk6YmVmb3JlIHsKICAgICAgY29udGVudDogIi9cMDBhMCI7IC8vIFVuaWNvZGUgc3BhY2UgYWRkZWQgc2luY2UgaW5saW5lLWJsb2NrIG1lYW5zIG5vbi1jb2xsYXBzaW5nIHdoaXRlLXNwYWNlCiAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICBjb2xvcjogQGJyZWFkY3J1bWItY29sb3I7CiAgICB9CiAgfQogID4gLmFjdGl2ZSB7CiAgICBjb2xvcjogQGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/button-groups.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnV0dG9uIGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gQnV0dG9uIGNhcmV0cwovLwovLyBNYXRjaCB0aGUgYnV0dG9uIHRleHQgY29sb3IgdG8gdGhlIGFycm93L2NhcmV0IGZvciBpbmRpY2F0aW5nIGRyb3Bkb3duLW5lc3MuCgouY2FyZXQgewogIC5idG4tZGVmYXVsdCAmIHsKICAgIGJvcmRlci10b3AtY29sb3I6IEBidG4tZGVmYXVsdC1jb2xvcjsKICB9CiAgLmJ0bi1wcmltYXJ5ICYsCiAgLmJ0bi1zdWNjZXNzICYsCiAgLmJ0bi13YXJuaW5nICYsCiAgLmJ0bi1kYW5nZXIgJiwKICAuYnRuLWluZm8gJiB7CiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOwogIH0KfQouZHJvcHVwIHsKICAmIC5idG4tZGVmYXVsdCAuY2FyZXQgewogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQGJ0bi1kZWZhdWx0LWNvbG9yOwogIH0KICAuYnRuLXByaW1hcnksCiAgLmJ0bi1zdWNjZXNzLAogIC5idG4td2FybmluZywKICAuYnRuLWRhbmdlciwKICAuYnRuLWluZm8gewogICAuY2FyZXQgewogICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwogICAgfQogIH0KfQoKLy8gTWFrZSB0aGUgZGl2IGJlaGF2ZSBsaWtlIGEgYnV0dG9uCi5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLy8gbWF0Y2ggLmJ0biBhbGlnbm1lbnQgZ2l2ZW4gZm9udC1zaXplIGhhY2sgYWJvdmUKICA+IC5idG4gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZmxvYXQ6IGxlZnQ7CiAgICAvLyBCcmluZyB0aGUgImFjdGl2ZSIgYnV0dG9uIHRvIHRoZSBmcm9udAogICAgJjpob3ZlciwKICAgICY6Zm9jdXMsCiAgICAmOmFjdGl2ZSwKICAgICYuYWN0aXZlIHsKICAgICAgei1pbmRleDogMjsKICAgIH0KICAgICY6Zm9jdXMgewogICAgICAvLyBSZW1vdmUgZm9jdXMgb3V0bGluZSB3aGVuIGRyb3Bkb3duIEpTIGFkZHMgaXQgYWZ0ZXIgY2xvc2luZyB0aGUgbWVudQogICAgICBvdXRsaW5lOiBub25lOwogICAgfQogIH0KfQoKLy8gUHJldmVudCBkb3VibGUgYm9yZGVycyB3aGVuIGJ1dHRvbnMgYXJlIG5leHQgdG8gZWFjaCBvdGhlcgouYnRuLWdyb3VwIHsKICAuYnRuICsgLmJ0biwKICAuYnRuICsgLmJ0bi1ncm91cCwKICAuYnRuLWdyb3VwICsgLmJ0biwKICAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgICBtYXJnaW4tbGVmdDogLTFweDsKICB9Cn0KCi8vIE9wdGlvbmFsOiBHcm91cCBtdWx0aXBsZSBidXR0b24gZ3JvdXBzIHRvZ2V0aGVyIGZvciBhIHRvb2xiYXIKLmJ0bi10b29sYmFyIHsKICAuY2xlYXJmaXgoKTsKCiAgLmJ0bi1ncm91cCB7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgLy8gU3BhY2Ugb3V0IHNlcmllcyBvZiBidXR0b24gZ3JvdXBzCiAgPiAuYnRuLAogID4gLmJ0bi1ncm91cCB7CiAgICArIC5idG4sCiAgICArIC5idG4tZ3JvdXAgewogICAgICBtYXJnaW4tbGVmdDogNXB4OwogICAgfQogIH0KfQoKLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkgewogIGJvcmRlci1yYWRpdXM6IDA7Cn0KCi8vIFNldCBjb3JuZXJzIGluZGl2aWR1YWwgYmVjYXVzZSBzb21ldGltZXMgYSBzaW5nbGUgYnV0dG9uIGNhbiBiZSBpbiBhIC5idG4tZ3JvdXAgYW5kIHdlIG5lZWQgOmZpcnN0LWNoaWxkIGFuZCA6bGFzdC1jaGlsZCB0byBib3RoIG1hdGNoCi5idG4tZ3JvdXAgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tbGVmdDogMDsKICAmOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHsKICAgIC5ib3JkZXItcmlnaHQtcmFkaXVzKDApOwogIH0KfQovLyBOZWVkIC5kcm9wZG93bi10b2dnbGUgc2luY2UgOmxhc3QtY2hpbGQgZG9lc24ndCBhcHBseSBnaXZlbiBhIC5kcm9wZG93bi1tZW51IGltbWVkaWF0ZWx5IGFmdGVyIGl0Ci5idG4tZ3JvdXAgPiAuYnRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAgPiAuZHJvcGRvd24tdG9nZ2xlOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9CgovLyBDdXN0b20gZWRpdHMgZm9yIGluY2x1ZGluZyBidG4tZ3JvdXBzIHdpdGhpbiBidG4tZ3JvdXBzICh1c2VmdWwgZm9yIGluY2x1ZGluZyBkcm9wZG93biBidXR0b25zIHdpdGhpbiBhIGJ0bi1ncm91cCkKLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXAgewogIGZsb2F0OiBsZWZ0Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkIHsKICA+IC5idG46bGFzdC1jaGlsZCwKICA+IC5kcm9wZG93bi10b2dnbGUgewogICAgLmJvcmRlci1yaWdodC1yYWRpdXMoMCk7CiAgfQp9Ci5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmxhc3QtY2hpbGQgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9CgovLyBPbiBhY3RpdmUgYW5kIG9wZW4sIGRvbid0IHNob3cgb3V0bGluZQouYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLAouYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgb3V0bGluZTogMDsKfQoKCi8vIFNpemluZwovLwovLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi4KCi5idG4tZ3JvdXAteHMgPiAuYnRuIHsgLmJ0bi14cygpOyB9Ci5idG4tZ3JvdXAtc20gPiAuYnRuIHsgLmJ0bi1zbSgpOyB9Ci5idG4tZ3JvdXAtbGcgPiAuYnRuIHsgLmJ0bi1sZygpOyB9CgoKLy8gU3BsaXQgYnV0dG9uIGRyb3Bkb3ducwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBHaXZlIHRoZSBsaW5lIGJldHdlZW4gYnV0dG9ucyBzb21lIGRlcHRoCi5idG4tZ3JvdXAgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgcGFkZGluZy1yaWdodDogOHB4Owp9Ci5idG4tZ3JvdXAgPiAuYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgcGFkZGluZy1sZWZ0OiAxMnB4OwogIHBhZGRpbmctcmlnaHQ6IDEycHg7Cn0KCi8vIFRoZSBjbGlja2FibGUgYnV0dG9uIGZvciB0b2dnbGluZyB0aGUgbWVudQovLyBSZW1vdmUgdGhlIGdyYWRpZW50IGFuZCBzZXQgdGhlIHNhbWUgaW5zZXQgc2hhZG93IGFzIHRoZSA6YWN0aXZlIHN0YXRlCi5idG4tZ3JvdXAub3BlbiAuZHJvcGRvd24tdG9nZ2xlIHsKICAuYm94LXNoYWRvdyhpbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KSk7Cn0KCgovLyBSZXBvc2l0aW9uIHRoZSBjYXJldAouYnRuIC5jYXJldCB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLy8gQ2FyZXRzIGluIG90aGVyIGJ1dHRvbiBzaXplcwouYnRuLWxnIC5jYXJldCB7CiAgYm9yZGVyLXdpZHRoOiBAY2FyZXQtd2lkdGgtbGFyZ2UgQGNhcmV0LXdpZHRoLWxhcmdlIDA7CiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKfQovLyBVcHNpZGUgZG93biBjYXJldHMgZm9yIC5kcm9wdXAKLmRyb3B1cCAuYnRuLWxnIC5jYXJldCB7CiAgYm9yZGVyLXdpZHRoOiAwIEBjYXJldC13aWR0aC1sYXJnZSBAY2FyZXQtd2lkdGgtbGFyZ2U7Cn0KCgovLyBWZXJ0aWNhbCBidXR0b24gZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5idG4tZ3JvdXAtdmVydGljYWwgewogID4gLmJ0biwKICA+IC5idG4tZ3JvdXAgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KCiAgLy8gQ2xlYXIgZmxvYXRzIHNvIGRyb3Bkb3duIG1lbnVzIGNhbiBiZSBwcm9wZXJseSBwbGFjZWQKICA+IC5idG4tZ3JvdXAgewogICAgLmNsZWFyZml4KCk7CiAgICA+IC5idG4gewogICAgICBmbG9hdDogbm9uZTsKICAgIH0KICB9CgogID4gLmJ0biArIC5idG4sCiAgPiAuYnRuICsgLmJ0bi1ncm91cCwKICA+IC5idG4tZ3JvdXAgKyAuYnRuLAogID4gLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAgewogICAgbWFyZ2luLXRvcDogLTFweDsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gewogICY6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KICAmOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CiAgICAuYm9yZGVyLWJvdHRvbS1yYWRpdXMoMCk7CiAgfQogICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogICAgLmJvcmRlci10b3AtcmFkaXVzKDApOwogIH0KfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpmaXJzdC1jaGlsZCB7CiAgPiAuYnRuOmxhc3QtY2hpbGQsCiAgPiAuZHJvcGRvd24tdG9nZ2xlIHsKICAgIC5ib3JkZXItYm90dG9tLXJhZGl1cygwKTsKICB9Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bGFzdC1jaGlsZCA+IC5idG46Zmlyc3QtY2hpbGQgewogIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKfQoKCgovLyBKdXN0aWZpZWQgYnV0dG9uIGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuLWdyb3VwLWp1c3RpZmllZCB7CiAgZGlzcGxheTogdGFibGU7CiAgd2lkdGg6IDEwMCU7CiAgdGFibGUtbGF5b3V0OiBmaXhlZDsKICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOwogIC5idG4gewogICAgZmxvYXQ6IG5vbmU7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgd2lkdGg6IDElOwogIH0KfQoKCi8vIENoZWNrYm94IGFuZCByYWRpbyBvcHRpb25zCltkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdID4gLmJ0biA+IGlucHV0W3R5cGU9InJhZGlvIl0sCltkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdID4gLmJ0biA+IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIGRpc3BsYXk6IG5vbmU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/buttons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhc2Ugc3R5bGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBDb3JlIHN0eWxlcwouYnRuIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZzogQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCBAcGFkZGluZy1iYXNlLWhvcml6b250YWw7CiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gRm9yIGlucHV0LmJ0bgogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1iYXNlOwogIGZvbnQtd2VpZ2h0OiBAYnRuLWZvbnQtd2VpZ2h0OwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIC51c2VyLXNlbGVjdChub25lKTsKCiAgJjpmb2N1cyB7CiAgICAudGFiLWZvY3VzKCk7CiAgfQoKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgY29sb3I6IEBidG4tZGVmYXVsdC1jb2xvcjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB9CgogICY6YWN0aXZlLAogICYuYWN0aXZlIHsKICAgIG91dGxpbmU6IDA7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogICAgLmJveC1zaGFkb3coaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSkpOwogIH0KCiAgJi5kaXNhYmxlZCwKICAmW2Rpc2FibGVkXSwKICBmaWVsZHNldFtkaXNhYmxlZF0gJiB7CiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8vIEZ1dHVyZS1wcm9vZiBkaXNhYmxpbmcgb2YgY2xpY2tzCiAgICAub3BhY2l0eSguNjUpOwogICAgLmJveC1zaGFkb3cobm9uZSk7CiAgfQoKfQoKCi8vIEFsdGVybmF0ZSBidXR0b25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgouYnRuLWRlZmF1bHQgewogIC5idXR0b24tdmFyaWFudChAYnRuLWRlZmF1bHQtY29sb3I7IEBidG4tZGVmYXVsdC1iZzsgQGJ0bi1kZWZhdWx0LWJvcmRlcik7Cn0KLmJ0bi1wcmltYXJ5IHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi1wcmltYXJ5LWNvbG9yOyBAYnRuLXByaW1hcnktYmc7IEBidG4tcHJpbWFyeS1ib3JkZXIpOwp9Ci8vIFdhcm5pbmcgYXBwZWFycyBhcyBvcmFuZ2UKLmJ0bi13YXJuaW5nIHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi13YXJuaW5nLWNvbG9yOyBAYnRuLXdhcm5pbmctYmc7IEBidG4td2FybmluZy1ib3JkZXIpOwp9Ci8vIERhbmdlciBhbmQgZXJyb3IgYXBwZWFyIGFzIHJlZAouYnRuLWRhbmdlciB7CiAgLmJ1dHRvbi12YXJpYW50KEBidG4tZGFuZ2VyLWNvbG9yOyBAYnRuLWRhbmdlci1iZzsgQGJ0bi1kYW5nZXItYm9yZGVyKTsKfQovLyBTdWNjZXNzIGFwcGVhcnMgYXMgZ3JlZW4KLmJ0bi1zdWNjZXNzIHsKICAuYnV0dG9uLXZhcmlhbnQoQGJ0bi1zdWNjZXNzLWNvbG9yOyBAYnRuLXN1Y2Nlc3MtYmc7IEBidG4tc3VjY2Vzcy1ib3JkZXIpOwp9Ci8vIEluZm8gYXBwZWFycyBhcyBibHVlLWdyZWVuCi5idG4taW5mbyB7CiAgLmJ1dHRvbi12YXJpYW50KEBidG4taW5mby1jb2xvcjsgQGJ0bi1pbmZvLWJnOyBAYnRuLWluZm8tYm9yZGVyKTsKfQoKCi8vIExpbmsgYnV0dG9ucwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBNYWtlIGEgYnV0dG9uIGxvb2sgYW5kIGJlaGF2ZSBsaWtlIGEgbGluawouYnRuLWxpbmsgewogIGNvbG9yOiBAbGluay1jb2xvcjsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXItcmFkaXVzOiAwOwoKICAmLAogICY6YWN0aXZlLAogICZbZGlzYWJsZWRdLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgLmJveC1zaGFkb3cobm9uZSk7CiAgfQogICYsCiAgJjpob3ZlciwKICAmOmZvY3VzLAogICY6YWN0aXZlIHsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGxpbmstaG92ZXItY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KICAmW2Rpc2FibGVkXSwKICBmaWVsZHNldFtkaXNhYmxlZF0gJiB7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGNvbG9yOiBAYnRuLWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIH0KICB9Cn0KCgovLyBCdXR0b24gU2l6ZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5idG4tbGcgewogIC8vIGxpbmUtaGVpZ2h0OiBlbnN1cmUgZXZlbi1udW1iZXJlZCBoZWlnaHQgb2YgYnV0dG9uIG5leHQgdG8gbGFyZ2UgaW5wdXQKICAuYnV0dG9uLXNpemUoQHBhZGRpbmctbGFyZ2UtdmVydGljYWw7IEBwYWRkaW5nLWxhcmdlLWhvcml6b250YWw7IEBmb250LXNpemUtbGFyZ2U7IEBsaW5lLWhlaWdodC1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9Ci5idG4tc20sCi5idG4teHMgewogIC8vIGxpbmUtaGVpZ2h0OiBlbnN1cmUgcHJvcGVyIGhlaWdodCBvZiBidXR0b24gbmV4dCB0byBzbWFsbCBpbnB1dAogIC5idXR0b24tc2l6ZShAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGxpbmUtaGVpZ2h0LXNtYWxsOyBAYm9yZGVyLXJhZGl1cy1zbWFsbCk7Cn0KLmJ0bi14cyB7CiAgcGFkZGluZzogMXB4IDVweDsKfQoKCi8vIEJsb2NrIGJ1dHRvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmJ0bi1ibG9jayB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIHBhZGRpbmctcmlnaHQ6IDA7Cn0KCi8vIFZlcnRpY2FsbHkgc3BhY2Ugb3V0IG11bHRpcGxlIGJsb2NrIGJ1dHRvbnMKLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewogIG1hcmdpbi10b3A6IDVweDsKfQoKLy8gU3BlY2lmaWNpdHkgb3ZlcnJpZGVzCmlucHV0W3R5cGU9InN1Ym1pdCJdLAppbnB1dFt0eXBlPSJyZXNldCJdLAppbnB1dFt0eXBlPSJidXR0b24iXSB7CiAgJi5idG4tYmxvY2sgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/carousel.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ2Fyb3VzZWwKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBXcmFwcGVyIGZvciB0aGUgc2xpZGUgY29udGFpbmVyIGFuZCBpbmRpY2F0b3JzCi5jYXJvdXNlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouY2Fyb3VzZWwtaW5uZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdpZHRoOiAxMDAlOwoKICA+IC5pdGVtIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAudHJhbnNpdGlvbiguNnMgZWFzZS1pbi1vdXQgbGVmdCk7CgogICAgLy8gQWNjb3VudCBmb3IgamFua2l0dWRlIG9uIGltYWdlcwogICAgPiBpbWcsCiAgICA+IGEgPiBpbWcgewogICAgICAuaW1nLXJlc3BvbnNpdmUoKTsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICB9CiAgfQoKICA+IC5hY3RpdmUsCiAgPiAubmV4dCwKICA+IC5wcmV2IHsgZGlzcGxheTogYmxvY2s7IH0KCiAgPiAuYWN0aXZlIHsKICAgIGxlZnQ6IDA7CiAgfQoKICA+IC5uZXh0LAogID4gLnByZXYgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgd2lkdGg6IDEwMCU7CiAgfQoKICA+IC5uZXh0IHsKICAgIGxlZnQ6IDEwMCU7CiAgfQogID4gLnByZXYgewogICAgbGVmdDogLTEwMCU7CiAgfQogID4gLm5leHQubGVmdCwKICA+IC5wcmV2LnJpZ2h0IHsKICAgIGxlZnQ6IDA7CiAgfQoKICA+IC5hY3RpdmUubGVmdCB7CiAgICBsZWZ0OiAtMTAwJTsKICB9CiAgPiAuYWN0aXZlLnJpZ2h0IHsKICAgIGxlZnQ6IDEwMCU7CiAgfQoKfQoKLy8gTGVmdC9yaWdodCBjb250cm9scyBmb3IgbmF2Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmNhcm91c2VsLWNvbnRyb2wgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICBib3R0b206IDA7CiAgd2lkdGg6IEBjYXJvdXNlbC1jb250cm9sLXdpZHRoOwogIC5vcGFjaXR5KEBjYXJvdXNlbC1jb250cm9sLW9wYWNpdHkpOwogIGZvbnQtc2l6ZTogQGNhcm91c2VsLWNvbnRyb2wtZm9udC1zaXplOwogIGNvbG9yOiBAY2Fyb3VzZWwtY29udHJvbC1jb2xvcjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1zaGFkb3c6IEBjYXJvdXNlbC10ZXh0LXNoYWRvdzsKICAvLyBXZSBjYW4ndCBoYXZlIHRoaXMgdHJhbnNpdGlvbiBoZXJlIGJlY2F1c2Ugd2Via2l0IGNhbmNlbHMgdGhlIGNhcm91c2VsCiAgLy8gYW5pbWF0aW9uIGlmIHlvdSB0cmlwIHRoaXMgd2hpbGUgaW4gdGhlIG1pZGRsZSBvZiBhbm90aGVyIGFuaW1hdGlvbi4KCiAgLy8gU2V0IGdyYWRpZW50cyBmb3IgYmFja2dyb3VuZHMKICAmLmxlZnQgewogICAgI2dyYWRpZW50ID4gLmhvcml6b250YWwoQHN0YXJ0LWNvbG9yOiByZ2JhKDAsMCwwLC41KTsgQGVuZC1jb2xvcjogcmdiYSgwLDAsMCwuMDAwMSkpOwogIH0KICAmLnJpZ2h0IHsKICAgIGxlZnQ6IGF1dG87CiAgICByaWdodDogMDsKICAgICNncmFkaWVudCA+IC5ob3Jpem9udGFsKEBzdGFydC1jb2xvcjogcmdiYSgwLDAsMCwuMDAwMSk7IEBlbmQtY29sb3I6IHJnYmEoMCwwLDAsLjUpKTsKICB9CgogIC8vIEhvdmVyL2ZvY3VzIHN0YXRlCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAY2Fyb3VzZWwtY29udHJvbC1jb2xvcjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIC5vcGFjaXR5KC45KTsKICB9CgogIC8vIFRvZ2dsZXMKICAuaWNvbi1wcmV2LAogIC5pY29uLW5leHQsCiAgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsCiAgLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgei1pbmRleDogNTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB9CiAgLmljb24tcHJldiwKICAuaWNvbi1uZXh0IHsKICAgIHdpZHRoOiAgMjBweDsKICAgIGhlaWdodDogMjBweDsKICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgbWFyZ2luLWxlZnQ6IC0xMHB4OwogICAgZm9udC1mYW1pbHk6IHNlcmlmOwogIH0KCiAgLmljb24tcHJldiB7CiAgICAmOmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcMjAzOSc7Ly8gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKFUrMjAzOSkKICAgIH0KICB9CiAgLmljb24tbmV4dCB7CiAgICAmOmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcMjAzYSc7Ly8gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLIChVKzIwM0EpCiAgICB9CiAgfQp9CgovLyBPcHRpb25hbCBpbmRpY2F0b3IgcGlwcwovLwovLyBBZGQgYW4gdW5vcmRlcmVkIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIGNsYXNzIGFuZCBhZGQgYSBsaXN0IGl0ZW0gZm9yIGVhY2gKLy8gc2xpZGUgeW91ciBjYXJvdXNlbCBob2xkcy4KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAxMHB4OwogIGxlZnQ6IDUwJTsKICB6LWluZGV4OiAxNTsKICB3aWR0aDogNjAlOwogIG1hcmdpbi1sZWZ0OiAtMzAlOwogIHBhZGRpbmctbGVmdDogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIHRleHQtYWxpZ246IGNlbnRlcjsKCiAgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6ICAxMHB4OwogICAgaGVpZ2h0OiAxMHB4OwogICAgbWFyZ2luOiAxcHg7CiAgICB0ZXh0LWluZGVudDogLTk5OXB4OwogICAgYm9yZGVyOiAxcHggc29saWQgQGNhcm91c2VsLWluZGljYXRvci1ib3JkZXItY29sb3I7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KICAuYWN0aXZlIHsKICAgIG1hcmdpbjogMDsKICAgIHdpZHRoOiAgMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIGJhY2tncm91bmQtY29sb3I6IEBjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOwogIH0KfQoKLy8gT3B0aW9uYWwgY2FwdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSGlkZGVuIGJ5IGRlZmF1bHQgZm9yIHNtYWxsZXIgdmlld3BvcnRzCi5jYXJvdXNlbC1jYXB0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMTUlOwogIHJpZ2h0OiAxNSU7CiAgYm90dG9tOiAyMHB4OwogIHotaW5kZXg6IDEwOwogIHBhZGRpbmctdG9wOiAyMHB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4OwogIGNvbG9yOiBAY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdGV4dC1zaGFkb3c6IEBjYXJvdXNlbC10ZXh0LXNoYWRvdzsKICAmIC5idG4gewogICAgdGV4dC1zaGFkb3c6IG5vbmU7IC8vIE5vIHNoYWRvdyBmb3IgYnV0dG9uIGVsZW1lbnRzIGluIGNhcm91c2VsLWNhcHRpb24KICB9Cn0KCgovLyBTY2FsZSB1cCBjb250cm9scyBmb3IgdGFibGV0cyBhbmQgdXAKQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogQHNjcmVlbi10YWJsZXQpIHsKCiAgLy8gU2NhbGUgdXAgdGhlIGNvbnRyb2xzIGEgc21pZGdlCiAgLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiwKICAuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0IHsKICAgIHdpZHRoOiAzMHB4OwogICAgaGVpZ2h0OiAzMHB4OwogICAgbWFyZ2luLXRvcDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgICBmb250LXNpemU6IDMwcHg7CiAgfQoKICAvLyBTaG93IGFuZCBsZWZ0IGFsaWduIHRoZSBjYXB0aW9ucwogIC5jYXJvdXNlbC1jYXB0aW9uIHsKICAgIGxlZnQ6IDIwJTsKICAgIHJpZ2h0OiAyMCU7CiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsKICB9CgogIC8vIE1vdmUgdXAgdGhlIGluZGljYXRvcnMKICAuY2Fyb3VzZWwtaW5kaWNhdG9ycyB7CiAgICBib3R0b206IDIwcHg7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/close.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ2xvc2UgaWNvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgouY2xvc2UgewogIGZsb2F0OiByaWdodDsKICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjUpOwogIGZvbnQtd2VpZ2h0OiBAY2xvc2UtZm9udC13ZWlnaHQ7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6IEBjbG9zZS1jb2xvcjsKICB0ZXh0LXNoYWRvdzogQGNsb3NlLXRleHQtc2hhZG93OwogIC5vcGFjaXR5KC4yKTsKCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAY2xvc2UtY29sb3I7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAub3BhY2l0eSguNSk7CiAgfQoKICAvLyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGJ1dHRvbiB2ZXJzaW9uCiAgLy8gaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuCiAgLy8gSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj0iIyJgLgogIGJ1dHRvbiYgewogICAgcGFkZGluZzogMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAwOwogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/code.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ29kZSAoaW5saW5lIGFuZCBibG9jSykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBJbmxpbmUgYW5kIGJsb2NrIGNvZGUgc3R5bGVzCmNvZGUsCnByZSB7CiAgZm9udC1mYW1pbHk6IEBmb250LWZhbWlseS1tb25vc3BhY2U7Cn0KCi8vIElubGluZSBjb2RlCmNvZGUgewogIHBhZGRpbmc6IDJweCA0cHg7CiAgZm9udC1zaXplOiA5MCU7CiAgY29sb3I6IEBjb2RlLWNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBjb2RlLWJnOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKfQoKLy8gQmxvY2tzIG9mIGNvZGUKcHJlIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAoKEBsaW5lLWhlaWdodC1jb21wdXRlZCAtIDEpIC8gMik7CiAgbWFyZ2luOiAwIDAgKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpOwogIGZvbnQtc2l6ZTogKEBmb250LXNpemUtYmFzZSAtIDEpOyAvLyAxNHB4IHRvIDEzcHgKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgd29yZC1icmVhazogYnJlYWstYWxsOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBjb2xvcjogQHByZS1jb2xvcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAcHJlLWJnOwogIGJvcmRlcjogMXB4IHNvbGlkIEBwcmUtYm9yZGVyLWNvbG9yOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWJhc2U7CgogIC8vIE1ha2UgcHJldHR5cHJpbnQgc3R5bGVzIG1vcmUgc3BhY2VkIG91dCBmb3IgcmVhZGFiaWxpdHkKICAmLnByZXR0eXByaW50IHsKICAgIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICB9CgogIC8vIEFjY291bnQgZm9yIHNvbWUgY29kZSBvdXRwdXRzIHRoYXQgcGxhY2UgY29kZSB0YWdzIGluIHByZSB0YWdzCiAgY29kZSB7CiAgICBwYWRkaW5nOiAwOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgY29sb3I6IGluaGVyaXQ7CiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMDsKICB9Cn0KCi8vIEVuYWJsZSBzY3JvbGxhYmxlIGJsb2NrcyBvZiBjb2RlCi5wcmUtc2Nyb2xsYWJsZSB7CiAgbWF4LWhlaWdodDogQHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ7CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/component-animations.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQ29tcG9uZW50IGFuaW1hdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEhlYWRzIHVwIQovLwovLyBXZSBkb24ndCB1c2UgdGhlIGAub3BhY2l0eSgpYCBtaXhpbiBoZXJlIHNpbmNlIGl0IGNhdXNlcyBhIGJ1ZyB3aXRoIHRleHQKLy8gZmllbGRzIGluIElFNy04LiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2l0dGVyL2Jvb3RzdHJhcC9wdWxsLzM1NTIuCgouZmFkZSB7CiAgb3BhY2l0eTogMDsKICAudHJhbnNpdGlvbihvcGFjaXR5IC4xNXMgbGluZWFyKTsKICAmLmluIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgouY29sbGFwc2UgewogIGRpc3BsYXk6IG5vbmU7CiAgJi5pbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9Cn0KLmNvbGxhcHNpbmcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAudHJhbnNpdGlvbihoZWlnaHQgLjM1cyBlYXNlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/dropdowns.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gRHJvcGRvd24gbWVudXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBEcm9wZG93biBhcnJvdy9jYXJldAouY2FyZXQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDJweDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGJvcmRlci10b3A6ICAgQGNhcmV0LXdpZHRoLWJhc2Ugc29saWQgQGRyb3Bkb3duLWNhcmV0LWNvbG9yOwogIGJvcmRlci1yaWdodDogQGNhcmV0LXdpZHRoLWJhc2Ugc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWxlZnQ6ICBAY2FyZXQtd2lkdGgtYmFzZSBzb2xpZCB0cmFuc3BhcmVudDsKICAvLyBGaXJlZm94IGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy85NTM4LiBPbmNlIGZpeGVkLAogIC8vIHdlIGNhbiBqdXN0IHN0cmFpZ2h0IHVwIHJlbW92ZSB0aGlzLgogIGJvcmRlci1ib3R0b206IDAgZG90dGVkOwogIGNvbnRlbnQ6ICIiOwp9CgovLyBUaGUgZHJvcGRvd24gd3JhcHBlciAoZGl2KQouZHJvcGRvd24gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLy8gUHJldmVudCB0aGUgZm9jdXMgb24gdGhlIGRyb3Bkb3duIHRvZ2dsZSB3aGVuIGNsb3NpbmcgZHJvcGRvd25zCi5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIG91dGxpbmU6IDA7Cn0KCi8vIFRoZSBkcm9wZG93biBtZW51ICh1bCkKLmRyb3Bkb3duLW1lbnUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LWRyb3Bkb3duOwogIGRpc3BsYXk6IG5vbmU7IC8vIG5vbmUgYnkgZGVmYXVsdCwgYnV0IGJsb2NrIG9uICJvcGVuIiBvZiB0aGUgbWVudQogIGZsb2F0OiBsZWZ0OwogIG1pbi13aWR0aDogMTYwcHg7CiAgcGFkZGluZzogNXB4IDA7CiAgbWFyZ2luOiAycHggMCAwOyAvLyBvdmVycmlkZSBkZWZhdWx0IHVsCiAgbGlzdC1zdHlsZTogbm9uZTsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAZHJvcGRvd24tYmc7CiAgYm9yZGVyOiAxcHggc29saWQgQGRyb3Bkb3duLWZhbGxiYWNrLWJvcmRlcjsgLy8gSUU4IGZhbGxiYWNrCiAgYm9yZGVyOiAxcHggc29saWQgQGRyb3Bkb3duLWJvcmRlcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogIC5ib3gtc2hhZG93KDAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KSk7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKCiAgLy8gQWxpZ25zIHRoZSBkcm9wZG93biBtZW51IHRvIHJpZ2h0CiAgJi5wdWxsLXJpZ2h0IHsKICAgIHJpZ2h0OiAwOwogICAgbGVmdDogYXV0bzsKICB9CgogIC8vIERpdmlkZXJzIChiYXNpY2FsbHkgYW4gaHIpIHdpdGhpbiB0aGUgZHJvcGRvd24KICAuZGl2aWRlciB7CiAgICAubmF2LWRpdmlkZXIoQGRyb3Bkb3duLWRpdmlkZXItYmcpOwogIH0KCiAgLy8gTGlua3Mgd2l0aGluIHRoZSBkcm9wZG93biBtZW51CiAgPiBsaSA+IGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiAzcHggMjBweDsKICAgIGNsZWFyOiBib3RoOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICAgIGNvbG9yOiBAZHJvcGRvd24tbGluay1jb2xvcjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8vIHByZXZlbnQgbGlua3MgZnJvbSByYW5kb21seSBicmVha2luZyBvbnRvIG5ldyBsaW5lcwogIH0KfQoKLy8gSG92ZXIvRm9jdXMgc3RhdGUKLmRyb3Bkb3duLW1lbnUgPiBsaSA+IGEgewogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBjb2xvcjogQGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAZHJvcGRvd24tbGluay1ob3Zlci1iZzsKICB9Cn0KCi8vIEFjdGl2ZSBzdGF0ZQouZHJvcGRvd24tbWVudSA+IC5hY3RpdmUgPiBhIHsKICAmLAogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICBjb2xvcjogQGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgb3V0bGluZTogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IEBkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzsKICB9Cn0KCi8vIERpc2FibGVkIHN0YXRlCi8vCi8vIEdyYXkgb3V0IHRleHQgYW5kIGVuc3VyZSB0aGUgaG92ZXIvZm9jdXMgc3RhdGUgcmVtYWlucyBncmF5CgouZHJvcGRvd24tbWVudSA+IC5kaXNhYmxlZCA+IGEgewogICYsCiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIGNvbG9yOiBAZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjsKICB9Cn0KLy8gTnVrZSBob3Zlci9mb2N1cyBlZmZlY3RzCi5kcm9wZG93bi1tZW51ID4gLmRpc2FibGVkID4gYSB7CiAgJjpob3ZlciwKICAmOmZvY3VzIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLy8gUmVtb3ZlIENTUyBncmFkaWVudAogICAgLnJlc2V0LWZpbHRlcigpOwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICB9Cn0KCi8vIE9wZW4gc3RhdGUgZm9yIHRoZSBkcm9wZG93bgoub3BlbiB7CiAgLy8gU2hvdyB0aGUgbWVudQogID4gLmRyb3Bkb3duLW1lbnUgewogICAgZGlzcGxheTogYmxvY2s7CiAgfQoKICAvLyBSZW1vdmUgdGhlIG91dGxpbmUgd2hlbiA6Zm9jdXMgaXMgdHJpZ2dlcmVkCiAgPiBhIHsKICAgIG91dGxpbmU6IDA7CiAgfQp9CgovLyBEcm9wZG93biBzZWN0aW9uIGhlYWRlcnMKLmRyb3Bkb3duLWhlYWRlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogM3B4IDIwcHg7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICBjb2xvcjogQGRyb3Bkb3duLWhlYWRlci1jb2xvcjsKfQoKLy8gQmFja2Ryb3AgdG8gY2F0Y2ggYm9keSBjbGlja3Mgb24gbW9iaWxlLCBldGMuCi5kcm9wZG93bi1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIHRvcDogMDsKICB6LWluZGV4OiBAemluZGV4LWRyb3Bkb3duIC0gMTA7Cn0KCi8vIFJpZ2h0IGFsaWduZWQgZHJvcGRvd25zCi5wdWxsLXJpZ2h0ID4gLmRyb3Bkb3duLW1lbnUgewogIHJpZ2h0OiAwOwogIGxlZnQ6IGF1dG87Cn0KCi8vIEFsbG93IGZvciBkcm9wZG93bnMgdG8gZ28gYm90dG9tIHVwIChha2EsIGRyb3B1cC1tZW51KQovLwovLyBKdXN0IGFkZCAuZHJvcHVwIGFmdGVyIHRoZSBzdGFuZGFyZCAuZHJvcGRvd24gY2xhc3MgYW5kIHlvdSdyZSBzZXQsIGJyby4KLy8gVE9ETzogYWJzdHJhY3QgdGhpcyBzbyB0aGF0IHRoZSBuYXZiYXIgZml4ZWQgc3R5bGVzIGFyZSBub3QgcGxhY2VkIGhlcmU/CgouZHJvcHVwLAoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gewogIC8vIFJldmVyc2UgdGhlIGNhcmV0CiAgLmNhcmV0IHsKICAgIC8vIEZpcmVmb3ggZml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzk1MzguIE9uY2UgdGhpcwogICAgLy8gZ2V0cyBmaXhlZCwgcmVzdG9yZSBgYm9yZGVyLXRvcDogMDtgLgogICAgYm9yZGVyLXRvcDogMCBkb3R0ZWQ7CiAgICBib3JkZXItYm90dG9tOiA0cHggc29saWQgQGRyb3Bkb3duLWNhcmV0LWNvbG9yOwogICAgY29udGVudDogIiI7CiAgfQogIC8vIERpZmZlcmVudCBwb3NpdGlvbmluZyBmb3IgYm90dG9tIHVwIG1lbnUKICAuZHJvcGRvd24tbWVudSB7CiAgICB0b3A6IGF1dG87CiAgICBib3R0b206IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiAxcHg7CiAgfQp9CgoKLy8gQ29tcG9uZW50IGFsaWdubWVudAovLwovLyBSZWl0ZXJhdGUgcGVyIG5hdmJhci5sZXNzIGFuZCB0aGUgbW9kaWZpZWQgY29tcG9uZW50IGFsaWdubWVudCB0aGVyZS4KCkBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgLm5hdmJhci1yaWdodCB7CiAgICAuZHJvcGRvd24tbWVudSB7CiAgICAgIC5wdWxsLXJpZ2h0ID4gLmRyb3Bkb3duLW1lbnUoKTsKICAgIH0KICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/forms.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gRm9ybXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBOb3JtYWxpemUgbm9uLWNvbnRyb2xzCi8vCi8vIFJlc3R5bGUgYW5kIGJhc2VsaW5lIG5vbi1jb250cm9sIGZvcm0gZWxlbWVudHMuCgpmaWVsZHNldCB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDA7CiAgYm9yZGVyOiAwOwp9CgpsZWdlbmQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIGZvbnQtc2l6ZTogKEBmb250LXNpemUtYmFzZSAqIDEuNSk7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgY29sb3I6IEBsZWdlbmQtY29sb3I7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAbGVnZW5kLWJvcmRlci1jb2xvcjsKfQoKbGFiZWwgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCgovLyBOb3JtYWxpemUgZm9ybSBjb250cm9scwoKLy8gT3ZlcnJpZGUgY29udGVudC1ib3ggaW4gTm9ybWFsaXplICgqIGlzbid0IHNwZWNpZmljIGVub3VnaCkKaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC5ib3gtc2l6aW5nKGJvcmRlci1ib3gpOwp9CgovLyBQb3NpdGlvbiByYWRpb3MgYW5kIGNoZWNrYm94ZXMgYmV0dGVyCmlucHV0W3R5cGU9InJhZGlvIl0sCmlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIG1hcmdpbjogNHB4IDAgMDsKICBtYXJnaW4tdG9wOiAxcHggXDk7IC8qIElFOC05ICovCiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLy8gU2V0IHRoZSBoZWlnaHQgb2Ygc2VsZWN0IGFuZCBmaWxlIGNvbnRyb2xzIHRvIG1hdGNoIHRleHQgaW5wdXRzCmlucHV0W3R5cGU9ImZpbGUiXSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi8vIE1ha2UgbXVsdGlwbGUgc2VsZWN0IGVsZW1lbnRzIGhlaWdodCBub3QgZml4ZWQKc2VsZWN0W211bHRpcGxlXSwKc2VsZWN0W3NpemVdIHsKICBoZWlnaHQ6IGF1dG87Cn0KCi8vIEZpeCBvcHRncm91cCBGaXJlZm94IGJ1ZyBwZXIgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy83NjExCnNlbGVjdCBvcHRncm91cCB7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGZvbnQtc3R5bGU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7Cn0KCi8vIEZvY3VzIGZvciBzZWxlY3QsIGZpbGUsIHJhZGlvLCBhbmQgY2hlY2tib3gKaW5wdXRbdHlwZT0iZmlsZSJdOmZvY3VzLAppbnB1dFt0eXBlPSJyYWRpbyJdOmZvY3VzLAppbnB1dFt0eXBlPSJjaGVja2JveCJdOmZvY3VzIHsKICAudGFiLWZvY3VzKCk7Cn0KCi8vIEZpeCBmb3IgQ2hyb21lIG51bWJlciBpbnB1dAovLyBTZXR0aW5nIGNlcnRhaW4gZm9udC1zaXplcyBjYXVzZXMgdGhlIGBJYCBiYXIgdG8gYXBwZWFyIG9uIGhvdmVyIG9mIHRoZSBib3R0b20gaW5jcmVtZW50IGJ1dHRvbi4KLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvODM1MCBmb3IgbW9yZS4KaW5wdXRbdHlwZT0ibnVtYmVyIl0gewogICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sCiAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CiAgICBoZWlnaHQ6IGF1dG87CiAgfQp9CgoKLy8gUGxhY2Vob2xkZXIKLy8KLy8gUGxhY2Vob2xkZXIgdGV4dCBnZXRzIHNwZWNpYWwgc3R5bGVzIGJlY2F1c2Ugd2hlbiBicm93c2VycyBpbnZhbGlkYXRlIGVudGlyZQovLyBsaW5lcyBpZiBpdCBkb2Vzbid0IHVuZGVyc3RhbmQgYSBzZWxlY3Rvci8KLmZvcm0tY29udHJvbCB7CiAgLnBsYWNlaG9sZGVyKCk7Cn0KCgovLyBDb21tb24gZm9ybSBjb250cm9scwovLwovLyBTaGFyZWQgc2l6ZSBhbmQgdHlwZSByZXNldHMgZm9yIGZvcm0gY29udHJvbHMuIEFwcGx5IGAuZm9ybS1jb250cm9sYCB0byBhbnkKLy8gb2YgdGhlIGZvbGxvd2luZyBmb3JtIGNvbnRyb2xzOgovLwovLyBzZWxlY3QKLy8gdGV4dGFyZWEKLy8gaW5wdXRbdHlwZT0idGV4dCJdCi8vIGlucHV0W3R5cGU9InBhc3N3b3JkIl0KLy8gaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXQovLyBpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdCi8vIGlucHV0W3R5cGU9ImRhdGUiXQovLyBpbnB1dFt0eXBlPSJtb250aCJdCi8vIGlucHV0W3R5cGU9InRpbWUiXQovLyBpbnB1dFt0eXBlPSJ3ZWVrIl0KLy8gaW5wdXRbdHlwZT0ibnVtYmVyIl0KLy8gaW5wdXRbdHlwZT0iZW1haWwiXQovLyBpbnB1dFt0eXBlPSJ1cmwiXQovLyBpbnB1dFt0eXBlPSJzZWFyY2giXQovLyBpbnB1dFt0eXBlPSJ0ZWwiXQovLyBpbnB1dFt0eXBlPSJjb2xvciJdCgouZm9ybS1jb250cm9sIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IEBpbnB1dC1oZWlnaHQtYmFzZTsgLy8gTWFrZSBpbnB1dHMgYXQgbGVhc3QgdGhlIGhlaWdodCBvZiB0aGVpciBidXR0b24gY291bnRlcnBhcnQgKGJhc2UgbGluZS1oZWlnaHQgKyBwYWRkaW5nICsgYm9yZGVyKQogIHBhZGRpbmc6IEBwYWRkaW5nLWJhc2UtdmVydGljYWwgQHBhZGRpbmctYmFzZS1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1iYXNlOwogIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICBjb2xvcjogQGlucHV0LWNvbG9yOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgYmFja2dyb3VuZC1jb2xvcjogQGlucHV0LWJnOwogIGJvcmRlcjogMXB4IHNvbGlkIEBpbnB1dC1ib3JkZXI7CiAgYm9yZGVyLXJhZGl1czogQGlucHV0LWJvcmRlci1yYWRpdXM7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSkpOwogIC50cmFuc2l0aW9uKH4iYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cyIpOwoKICAvLyBDdXN0b21pemUgdGhlIGA6Zm9jdXNgIHN0YXRlIHRvIGltaXRhdGUgbmF0aXZlIFdlYktpdCBzdHlsZXMuCiAgLmZvcm0tY29udHJvbC1mb2N1cygpOwoKICAvLyBEaXNhYmxlZCBhbmQgcmVhZC1vbmx5IGlucHV0cwogIC8vIE5vdGU6IEhUTUw1IHNheXMgdGhhdCBjb250cm9scyB1bmRlciBhIGZpZWxkc2V0ID4gbGVnZW5kOmZpcnN0LWNoaWxkIHdvbid0CiAgLy8gYmUgZGlzYWJsZWQgaWYgdGhlIGZpZWxkc2V0IGlzIGRpc2FibGVkLiBEdWUgdG8gaW1wbGVtZW50YXRpb24gZGlmZmljdWx0eSwKICAvLyB3ZSBkb24ndCBob25vciB0aGF0IGVkZ2UgY2FzZTsgd2Ugc3R5bGUgdGhlbSBhcyBkaXNhYmxlZCBhbnl3YXkuCiAgJltkaXNhYmxlZF0sCiAgJltyZWFkb25seV0sCiAgZmllbGRzZXRbZGlzYWJsZWRdICYgewogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIGJhY2tncm91bmQtY29sb3I6IEBpbnB1dC1iZy1kaXNhYmxlZDsKICB9CgogIC8vIFJlc2V0IGhlaWdodCBmb3IgYHRleHRhcmVhYHMKICB0ZXh0YXJlYSYgewogICAgaGVpZ2h0OiBhdXRvOwogIH0KfQoKCi8vIEZvcm0gZ3JvdXBzCi8vCi8vIERlc2lnbmVkIHRvIGhlbHAgd2l0aCB0aGUgb3JnYW5pemF0aW9uIGFuZCBzcGFjaW5nIG9mIHZlcnRpY2FsIGZvcm1zLiBGb3IKLy8gaG9yaXpvbnRhbCBmb3JtcywgdXNlIHRoZSBwcmVkZWZpbmVkIGdyaWQgY2xhc3Nlcy4KCi5mb3JtLWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CgoKLy8gQ2hlY2tib3hlcyBhbmQgcmFkaW9zCi8vCi8vIEluZGVudCB0aGUgbGFiZWxzIHRvIHBvc2l0aW9uIHJhZGlvcy9jaGVja2JveGVzIGFzIGhhbmdpbmcgY29udHJvbHMuCgoucmFkaW8sCi5jaGVja2JveCB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWluLWhlaWdodDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOyAvLyBjbGVhciB0aGUgZmxvYXRpbmcgaW5wdXQgaWYgdGhlcmUgaXMgbm8gbGFiZWwgdGV4dAogIG1hcmdpbi10b3A6IDEwcHg7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICB9Cn0KLnJhZGlvIGlucHV0W3R5cGU9InJhZGlvIl0sCi5yYWRpby1pbmxpbmUgaW5wdXRbdHlwZT0icmFkaW8iXSwKLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0sCi5jaGVja2JveC1pbmxpbmUgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgZmxvYXQ6IGxlZnQ7CiAgbWFyZ2luLWxlZnQ6IC0yMHB4Owp9Ci5yYWRpbyArIC5yYWRpbywKLmNoZWNrYm94ICsgLmNoZWNrYm94IHsKICBtYXJnaW4tdG9wOiAtNXB4OyAvLyBNb3ZlIHVwIHNpYmxpbmcgcmFkaW9zIG9yIGNoZWNrYm94ZXMgZm9yIHRpZ2h0ZXIgc3BhY2luZwp9CgovLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgb24gc2FtZSBsaW5lCi5yYWRpby1pbmxpbmUsCi5jaGVja2JveC1pbmxpbmUgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5yYWRpby1pbmxpbmUgKyAucmFkaW8taW5saW5lLAouY2hlY2tib3gtaW5saW5lICsgLmNoZWNrYm94LWlubGluZSB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tbGVmdDogMTBweDsgLy8gc3BhY2Ugb3V0IGNvbnNlY3V0aXZlIGlubGluZSBjb250cm9scwp9CgovLyBBcHBseSBzYW1lIGRpc2FibGVkIGN1cnNvciB0d2VhayBhcyBmb3IgaW5wdXRzCi8vCi8vIE5vdGU6IE5laXRoZXIgcmFkaW9zIG5vciBjaGVja2JveGVzIGNhbiBiZSByZWFkb25seS4KaW5wdXRbdHlwZT0icmFkaW8iXSwKaW5wdXRbdHlwZT0iY2hlY2tib3giXSwKLnJhZGlvLAoucmFkaW8taW5saW5lLAouY2hlY2tib3gsCi5jaGVja2JveC1pbmxpbmUgewogICZbZGlzYWJsZWRdLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgfQp9CgovLyBGb3JtIGNvbnRyb2wgc2l6aW5nCi5pbnB1dC1zbSB7CiAgLmlucHV0LXNpemUoQGlucHV0LWhlaWdodC1zbWFsbDsgQHBhZGRpbmctc21hbGwtdmVydGljYWw7IEBwYWRkaW5nLXNtYWxsLWhvcml6b250YWw7IEBmb250LXNpemUtc21hbGw7IEBsaW5lLWhlaWdodC1zbWFsbDsgQGJvcmRlci1yYWRpdXMtc21hbGwpOwp9CgouaW5wdXQtbGcgewogIC5pbnB1dC1zaXplKEBpbnB1dC1oZWlnaHQtbGFyZ2U7IEBwYWRkaW5nLWxhcmdlLXZlcnRpY2FsOyBAcGFkZGluZy1sYXJnZS1ob3Jpem9udGFsOyBAZm9udC1zaXplLWxhcmdlOyBAbGluZS1oZWlnaHQtbGFyZ2U7IEBib3JkZXItcmFkaXVzLWxhcmdlKTsKfQoKCi8vIEZvcm0gY29udHJvbCBmZWVkYmFjayBzdGF0ZXMKLy8KLy8gQXBwbHkgY29udGV4dHVhbCBhbmQgc2VtYW50aWMgc3RhdGVzIHRvIGluZGl2aWR1YWwgZm9ybSBjb250cm9scy4KCi8vIFdhcm5pbmcKLmhhcy13YXJuaW5nIHsKICAuZm9ybS1jb250cm9sLXZhbGlkYXRpb24oQHN0YXRlLXdhcm5pbmctdGV4dDsgQHN0YXRlLXdhcm5pbmctdGV4dDsgQHN0YXRlLXdhcm5pbmctYmcpOwp9Ci8vIEVycm9yCi5oYXMtZXJyb3IgewogIC5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAc3RhdGUtZGFuZ2VyLXRleHQ7IEBzdGF0ZS1kYW5nZXItdGV4dDsgQHN0YXRlLWRhbmdlci1iZyk7Cn0KLy8gU3VjY2VzcwouaGFzLXN1Y2Nlc3MgewogIC5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAc3RhdGUtc3VjY2Vzcy10ZXh0OyBAc3RhdGUtc3VjY2Vzcy10ZXh0OyBAc3RhdGUtc3VjY2Vzcy1iZyk7Cn0KCgovLyBTdGF0aWMgZm9ybSBjb250cm9sIHRleHQKLy8KLy8gQXBwbHkgY2xhc3MgdG8gYSBgcGAgZWxlbWVudCB0byBtYWtlIGFueSBzdHJpbmcgb2YgdGV4dCBhbGlnbiB3aXRoIGxhYmVscyBpbgovLyBhIGhvcml6b250YWwgZm9ybSBsYXlvdXQuCgouZm9ybS1jb250cm9sLXN0YXRpYyB7CiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2luIGZyb20gYHBgCiAgcGFkZGluZy10b3A6IChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSk7Cn0KCgovLyBIZWxwIHRleHQKLy8KLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgeW91IHdpc2ggdG8gY3JlYXRlIGxpZ2h0IHRleHQgZm9yIHBsYWNlbWVudCBpbW1lZGlhdGVseQovLyBiZWxvdyBhIGZvcm0gY29udHJvbC4gVXNlIGZvciBnZW5lcmFsIGhlbHAsIGZvcm1hdHRpbmcsIG9yIGluc3RydWN0aW9uYWwgdGV4dC4KCi5oZWxwLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jazsgLy8gYWNjb3VudCBmb3IgYW55IGVsZW1lbnQgdXNpbmcgaGVscC1ibG9jawogIG1hcmdpbi10b3A6IDVweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIGNvbG9yOiBsaWdodGVuKEB0ZXh0LWNvbG9yLCAyNSUpOyAvLyBsaWdodGVuIHRoZSB0ZXh0IHNvbWUgZm9yIGNvbnRyYXN0Cn0KCgoKLy8gSW5saW5lIGZvcm1zCi8vCi8vIE1ha2UgZm9ybXMgYXBwZWFyIGlubGluZSgtYmxvY2spIGJ5IGFkZGluZyB0aGUgYC5mb3JtLWlubGluZWAgY2xhc3MuIElubGluZQovLyBmb3JtcyBiZWdpbiBzdGFja2VkIG9uIGV4dHJhIHNtYWxsIChtb2JpbGUpIGRldmljZXMgYW5kIHRoZW4gZ28gaW5saW5lIHdoZW4KLy8gdmlld3BvcnRzIHJlYWNoIDw3NjhweC4KLy8KLy8gUmVxdWlyZXMgd3JhcHBpbmcgaW5wdXRzIGFuZCBsYWJlbHMgd2l0aCBgLmZvcm0tZ3JvdXBgIGZvciBwcm9wZXIgZGlzcGxheSBvZgovLyBkZWZhdWx0IEhUTUwgZm9ybSBjb250cm9scyBhbmQgb3VyIGN1c3RvbSBmb3JtIGNvbnRyb2xzIChlLmcuLCBpbnB1dCBncm91cHMpLgovLwovLyBIZWFkcyB1cCEgVGhpcyBpcyBtaXhpbi1lZCBpbnRvIGAubmF2YmFyLWZvcm1gIGluIG5hdmJhcnMubGVzcy4KCi5mb3JtLWlubGluZSB7CgogIC8vIEtpY2sgaW4gdGhlIGlubGluZQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXRhYmxldCkgewogICAgLy8gSW5saW5lLWJsb2NrIGFsbCB0aGUgdGhpbmdzIGZvciAiaW5saW5lIgogICAgLmZvcm0tZ3JvdXAgIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgfQoKICAgIC8vIEluIG5hdmJhci1mb3JtLCBhbGxvdyBmb2xrcyB0byAqbm90KiB1c2UgYC5mb3JtLWdyb3VwYAogICAgLmZvcm0tY29udHJvbCB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIH0KCiAgICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW4gb24gcmFkaW9zL2NoZWNrYm94ZXMgdGhhdCB3ZXJlIHVzZWQgZm9yIHN0YWNraW5nLCBhbmQKICAgIC8vIHRoZW4gdW5kbyB0aGUgZmxvYXRpbmcgb2YgcmFkaW9zIGFuZCBjaGVja2JveGVzIHRvIG1hdGNoICh3aGljaCBhbHNvIGF2b2lkcwogICAgLy8gYSBidWcgaW4gV2ViS2l0OiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE5NjkpLgogICAgLnJhZGlvLAogICAgLmNoZWNrYm94IHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBtYXJnaW4tdG9wOiAwOwogICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICB9CiAgICAucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwKICAgIC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICAgICAgZmxvYXQ6IG5vbmU7CiAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgfQogIH0KfQoKCi8vIEhvcml6b250YWwgZm9ybXMKLy8KLy8gSG9yaXpvbnRhbCBmb3JtcyBhcmUgYnVpbHQgb24gZ3JpZCBjbGFzc2VzIGFuZCBhbGxvdyB5b3UgdG8gY3JlYXRlIGZvcm1zIHdpdGgKLy8gbGFiZWxzIG9uIHRoZSBsZWZ0IGFuZCBpbnB1dHMgb24gdGhlIHJpZ2h0LgoKLmZvcm0taG9yaXpvbnRhbCB7CgogIC8vIENvbnNpc3RlbnQgdmVydGljYWwgYWxpZ25tZW50IG9mIGxhYmVscywgcmFkaW9zLCBhbmQgY2hlY2tib3hlcwogIC5jb250cm9sLWxhYmVsLAogIC5yYWRpbywKICAuY2hlY2tib3gsCiAgLnJhZGlvLWlubGluZSwKICAuY2hlY2tib3gtaW5saW5lIHsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgcGFkZGluZy10b3A6IChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICsgMSk7IC8vIERlZmF1bHQgcGFkZGluZyBwbHVzIGEgYm9yZGVyCiAgfQoKICAvLyBNYWtlIGZvcm0gZ3JvdXBzIGJlaGF2ZSBsaWtlIHJvd3MKICAuZm9ybS1ncm91cCB7CiAgICAubWFrZS1yb3coKTsKICB9CgogIC8vIE9ubHkgcmlnaHQgYWxpZ24gZm9ybSBsYWJlbHMgaGVyZSB3aGVuIHRoZSBjb2x1bW5zIHN0b3Agc3RhY2tpbmcKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi10YWJsZXQpIHsKICAgIC5jb250cm9sLWxhYmVsIHsKICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/glyphicons.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gR2x5cGhpY29ucyBmb3IgQm9vdHN0cmFwCi8vCi8vIFNpbmNlIGljb25zIGFyZSBmb250cywgdGhleSBjYW4gYmUgcGxhY2VkIGFueXdoZXJlIHRleHQgaXMgcGxhY2VkIGFuZCBhcmUKLy8gdGh1cyBhdXRvbWF0aWNhbGx5IHNpemVkIHRvIG1hdGNoIHRoZSBzdXJyb3VuZGluZyBjaGlsZC4gVG8gdXNlLCBjcmVhdGUgYW4KLy8gaW5saW5lIGVsZW1lbnQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgY2xhc3NlcywgbGlrZSBzbzoKLy8KLy8gPGEgaHJlZj0iIyI+PHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tc3RhciI+PC9zcGFuPiBTdGFyPC9hPgoKLy8gSW1wb3J0IHRoZSBmb250cwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJzsKICBzcmM6IHVybCgnQHtpY29uLWZvbnQtcGF0aH1Ae2ljb24tZm9udC1uYW1lfS5lb3QnKTsKICBzcmM6IHVybCgnQHtpY29uLWZvbnQtcGF0aH1Ae2ljb24tZm9udC1uYW1lfS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLAogICAgICAgdXJsKCdAe2ljb24tZm9udC1wYXRofUB7aWNvbi1mb250LW5hbWV9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwKICAgICAgIHVybCgnQHtpY29uLWZvbnQtcGF0aH1Ae2ljb24tZm9udC1uYW1lfS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksCiAgICAgICB1cmwoJ0B7aWNvbi1mb250LXBhdGh9QHtpY29uLWZvbnQtbmFtZX0uc3ZnI2dseXBoaWNvbnMtaGFsZmxpbmdzcmVndWxhcicpIGZvcm1hdCgnc3ZnJyk7Cn0KCi8vIENhdGNoYWxsIGJhc2VjbGFzcwouZ2x5cGhpY29uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAxcHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwp9CgovLyBJbmRpdmlkdWFsIGljb25zCi5nbHlwaGljb24tYXN0ZXJpc2sgICAgICAgICAgICAgICB7ICY6YmVmb3JlIHsgY29udGVudDogIlwyYSI7IH0gfQouZ2x5cGhpY29uLXBsdXMgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMmIiOyB9IH0KLmdseXBoaWNvbi1ldXJvICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDIwYWMiOyB9IH0KLmdseXBoaWNvbi1taW51cyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDIyMTIiOyB9IH0KLmdseXBoaWNvbi1jbG91ZCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI2MDEiOyB9IH0KLmdseXBoaWNvbi1lbnZlbG9wZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI3MDkiOyB9IH0KLmdseXBoaWNvbi1wZW5jaWwgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDI3MGYiOyB9IH0KLmdseXBoaWNvbi1nbGFzcyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDEiOyB9IH0KLmdseXBoaWNvbi1tdXNpYyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDIiOyB9IH0KLmdseXBoaWNvbi1zZWFyY2ggICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDMiOyB9IH0KLmdseXBoaWNvbi1oZWFydCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDUiOyB9IH0KLmdseXBoaWNvbi1zdGFyICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDYiOyB9IH0KLmdseXBoaWNvbi1zdGFyLWVtcHR5ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDciOyB9IH0KLmdseXBoaWNvbi11c2VyICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDgiOyB9IH0KLmdseXBoaWNvbi1maWxtICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMDkiOyB9IH0KLmdseXBoaWNvbi10aC1sYXJnZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTAiOyB9IH0KLmdseXBoaWNvbi10aCAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTEiOyB9IH0KLmdseXBoaWNvbi10aC1saXN0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTIiOyB9IH0KLmdseXBoaWNvbi1vayAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTMiOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTQiOyB9IH0KLmdseXBoaWNvbi16b29tLWluICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTUiOyB9IH0KLmdseXBoaWNvbi16b29tLW91dCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTYiOyB9IH0KLmdseXBoaWNvbi1vZmYgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTciOyB9IH0KLmdseXBoaWNvbi1zaWduYWwgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTgiOyB9IH0KLmdseXBoaWNvbi1jb2cgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMTkiOyB9IH0KLmdseXBoaWNvbi10cmFzaCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjAiOyB9IH0KLmdseXBoaWNvbi1ob21lICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjEiOyB9IH0KLmdseXBoaWNvbi1maWxlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjIiOyB9IH0KLmdseXBoaWNvbi10aW1lICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjMiOyB9IH0KLmdseXBoaWNvbi1yb2FkICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjQiOyB9IH0KLmdseXBoaWNvbi1kb3dubG9hZC1hbHQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjUiOyB9IH0KLmdseXBoaWNvbi1kb3dubG9hZCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjYiOyB9IH0KLmdseXBoaWNvbi11cGxvYWQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjciOyB9IH0KLmdseXBoaWNvbi1pbmJveCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjgiOyB9IH0KLmdseXBoaWNvbi1wbGF5LWNpcmNsZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMjkiOyB9IH0KLmdseXBoaWNvbi1yZXBlYXQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzAiOyB9IH0KLmdseXBoaWNvbi1yZWZyZXNoICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzEiOyB9IH0KLmdseXBoaWNvbi1saXN0LWFsdCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzIiOyB9IH0KLmdseXBoaWNvbi1mbGFnICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzQiOyB9IH0KLmdseXBoaWNvbi1oZWFkcGhvbmVzICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzUiOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtb2ZmICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzYiOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtZG93biAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzciOyB9IH0KLmdseXBoaWNvbi12b2x1bWUtdXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzgiOyB9IH0KLmdseXBoaWNvbi1xcmNvZGUgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwMzkiOyB9IH0KLmdseXBoaWNvbi1iYXJjb2RlICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDAiOyB9IH0KLmdseXBoaWNvbi10YWcgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDEiOyB9IH0KLmdseXBoaWNvbi10YWdzICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDIiOyB9IH0KLmdseXBoaWNvbi1ib29rICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDMiOyB9IH0KLmdseXBoaWNvbi1wcmludCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDUiOyB9IH0KLmdseXBoaWNvbi1mb250ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDciOyB9IH0KLmdseXBoaWNvbi1ib2xkICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDgiOyB9IH0KLmdseXBoaWNvbi1pdGFsaWMgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNDkiOyB9IH0KLmdseXBoaWNvbi10ZXh0LWhlaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTAiOyB9IH0KLmdseXBoaWNvbi10ZXh0LXdpZHRoICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTEiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1sZWZ0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTIiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1jZW50ZXIgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTMiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1yaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTQiOyB9IH0KLmdseXBoaWNvbi1hbGlnbi1qdXN0aWZ5ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTUiOyB9IH0KLmdseXBoaWNvbi1saXN0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTYiOyB9IH0KLmdseXBoaWNvbi1pbmRlbnQtbGVmdCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTciOyB9IH0KLmdseXBoaWNvbi1pbmRlbnQtcmlnaHQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTgiOyB9IH0KLmdseXBoaWNvbi1mYWNldGltZS12aWRlbyAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNTkiOyB9IH0KLmdseXBoaWNvbi1waWN0dXJlICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjAiOyB9IH0KLmdseXBoaWNvbi1tYXAtbWFya2VyICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjIiOyB9IH0KLmdseXBoaWNvbi1hZGp1c3QgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjMiOyB9IH0KLmdseXBoaWNvbi10aW50ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjQiOyB9IH0KLmdseXBoaWNvbi1lZGl0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjUiOyB9IH0KLmdseXBoaWNvbi1zaGFyZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjYiOyB9IH0KLmdseXBoaWNvbi1jaGVjayAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjciOyB9IH0KLmdseXBoaWNvbi1tb3ZlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjgiOyB9IH0KLmdseXBoaWNvbi1zdGVwLWJhY2t3YXJkICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNjkiOyB9IH0KLmdseXBoaWNvbi1mYXN0LWJhY2t3YXJkICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzAiOyB9IH0KLmdseXBoaWNvbi1iYWNrd2FyZCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzEiOyB9IH0KLmdseXBoaWNvbi1wbGF5ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzIiOyB9IH0KLmdseXBoaWNvbi1wYXVzZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzMiOyB9IH0KLmdseXBoaWNvbi1zdG9wICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzQiOyB9IH0KLmdseXBoaWNvbi1mb3J3YXJkICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzUiOyB9IH0KLmdseXBoaWNvbi1mYXN0LWZvcndhcmQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzYiOyB9IH0KLmdseXBoaWNvbi1zdGVwLWZvcndhcmQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzciOyB9IH0KLmdseXBoaWNvbi1lamVjdCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzgiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwNzkiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODAiOyB9IH0KLmdseXBoaWNvbi1wbHVzLXNpZ24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODEiOyB9IH0KLmdseXBoaWNvbi1taW51cy1zaWduICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODIiOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUtc2lnbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODMiOyB9IH0KLmdseXBoaWNvbi1vay1zaWduICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODQiOyB9IH0KLmdseXBoaWNvbi1xdWVzdGlvbi1zaWduICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODUiOyB9IH0KLmdseXBoaWNvbi1pbmZvLXNpZ24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODYiOyB9IH0KLmdseXBoaWNvbi1zY3JlZW5zaG90ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODciOyB9IH0KLmdseXBoaWNvbi1yZW1vdmUtY2lyY2xlICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODgiOyB9IH0KLmdseXBoaWNvbi1vay1jaXJjbGUgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwODkiOyB9IH0KLmdseXBoaWNvbi1iYW4tY2lyY2xlICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTAiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1sZWZ0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTEiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1yaWdodCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTIiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy11cCAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTMiOyB9IH0KLmdseXBoaWNvbi1hcnJvdy1kb3duICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTQiOyB9IH0KLmdseXBoaWNvbi1zaGFyZS1hbHQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTUiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtZnVsbCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTYiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtc21hbGwgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUwOTciOyB9IH0KLmdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDEiOyB9IH0KLmdseXBoaWNvbi1naWZ0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDIiOyB9IH0KLmdseXBoaWNvbi1sZWFmICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDMiOyB9IH0KLmdseXBoaWNvbi1leWUtb3BlbiAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDUiOyB9IH0KLmdseXBoaWNvbi1leWUtY2xvc2UgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDYiOyB9IH0KLmdseXBoaWNvbi13YXJuaW5nLXNpZ24gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDciOyB9IH0KLmdseXBoaWNvbi1wbGFuZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMDgiOyB9IH0KLmdseXBoaWNvbi1yYW5kb20gICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTAiOyB9IH0KLmdseXBoaWNvbi1jb21tZW50ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTEiOyB9IH0KLmdseXBoaWNvbi1tYWduZXQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTIiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLXVwICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTMiOyB9IH0KLmdseXBoaWNvbi1jaGV2cm9uLWRvd24gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTQiOyB9IH0KLmdseXBoaWNvbi1yZXR3ZWV0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTUiOyB9IH0KLmdseXBoaWNvbi1zaG9wcGluZy1jYXJ0ICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTYiOyB9IH0KLmdseXBoaWNvbi1mb2xkZXItY2xvc2UgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTciOyB9IH0KLmdseXBoaWNvbi1mb2xkZXItb3BlbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTgiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtdmVydGljYWwgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMTkiOyB9IH0KLmdseXBoaWNvbi1yZXNpemUtaG9yaXpvbnRhbCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjAiOyB9IH0KLmdseXBoaWNvbi1oZGQgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjEiOyB9IH0KLmdseXBoaWNvbi1idWxsaG9ybiAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjIiOyB9IH0KLmdseXBoaWNvbi1jZXJ0aWZpY2F0ZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjQiOyB9IH0KLmdseXBoaWNvbi10aHVtYnMtdXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjUiOyB9IH0KLmdseXBoaWNvbi10aHVtYnMtZG93biAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjYiOyB9IH0KLmdseXBoaWNvbi1oYW5kLXJpZ2h0ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjciOyB9IH0KLmdseXBoaWNvbi1oYW5kLWxlZnQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjgiOyB9IH0KLmdseXBoaWNvbi1oYW5kLXVwICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMjkiOyB9IH0KLmdseXBoaWNvbi1oYW5kLWRvd24gICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzAiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctcmlnaHQgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzEiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctbGVmdCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzIiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctdXAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzMiOyB9IH0KLmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctZG93biAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzQiOyB9IH0KLmdseXBoaWNvbi1nbG9iZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzUiOyB9IH0KLmdseXBoaWNvbi10YXNrcyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzciOyB9IH0KLmdseXBoaWNvbi1maWx0ZXIgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxMzgiOyB9IH0KLmdseXBoaWNvbi1mdWxsc2NyZWVuICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDAiOyB9IH0KLmdseXBoaWNvbi1kYXNoYm9hcmQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDEiOyB9IH0KLmdseXBoaWNvbi1oZWFydC1lbXB0eSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDMiOyB9IH0KLmdseXBoaWNvbi1saW5rICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDQiOyB9IH0KLmdseXBoaWNvbi1waG9uZSAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDUiOyB9IH0KLmdseXBoaWNvbi11c2QgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDgiOyB9IH0KLmdseXBoaWNvbi1nYnAgICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNDkiOyB9IH0KLmdseXBoaWNvbi1zb3J0ICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTAiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0ICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTEiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0LWFsdCAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTIiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTMiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyLWFsdCAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTQiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTUiOyB9IH0KLmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMtYWx0IHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTYiOyB9IH0KLmdseXBoaWNvbi11bmNoZWNrZWQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTciOyB9IH0KLmdseXBoaWNvbi1leHBhbmQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTgiOyB9IH0KLmdseXBoaWNvbi1jb2xsYXBzZS1kb3duICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNTkiOyB9IH0KLmdseXBoaWNvbi1jb2xsYXBzZS11cCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjAiOyB9IH0KLmdseXBoaWNvbi1sb2ctaW4gICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjEiOyB9IH0KLmdseXBoaWNvbi1mbGFzaCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjIiOyB9IH0KLmdseXBoaWNvbi1sb2ctb3V0ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjMiOyB9IH0KLmdseXBoaWNvbi1uZXctd2luZG93ICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjQiOyB9IH0KLmdseXBoaWNvbi1yZWNvcmQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjUiOyB9IH0KLmdseXBoaWNvbi1zYXZlICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjYiOyB9IH0KLmdseXBoaWNvbi1vcGVuICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjciOyB9IH0KLmdseXBoaWNvbi1zYXZlZCAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjgiOyB9IH0KLmdseXBoaWNvbi1pbXBvcnQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNjkiOyB9IH0KLmdseXBoaWNvbi1leHBvcnQgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzAiOyB9IH0KLmdseXBoaWNvbi1zZW5kICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzEiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktZGlzayAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzIiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZWQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzMiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktcmVtb3ZlICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzQiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktc2F2ZSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzUiOyB9IH0KLmdseXBoaWNvbi1mbG9wcHktb3BlbiAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzYiOyB9IH0KLmdseXBoaWNvbi1jcmVkaXQtY2FyZCAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzciOyB9IH0KLmdseXBoaWNvbi10cmFuc2ZlciAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzgiOyB9IH0KLmdseXBoaWNvbi1jdXRsZXJ5ICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxNzkiOyB9IH0KLmdseXBoaWNvbi1oZWFkZXIgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODAiOyB9IH0KLmdseXBoaWNvbi1jb21wcmVzc2VkICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODEiOyB9IH0KLmdseXBoaWNvbi1lYXJwaG9uZSAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODIiOyB9IH0KLmdseXBoaWNvbi1waG9uZS1hbHQgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODMiOyB9IH0KLmdseXBoaWNvbi10b3dlciAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODQiOyB9IH0KLmdseXBoaWNvbi1zdGF0cyAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODUiOyB9IH0KLmdseXBoaWNvbi1zZC12aWRlbyAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODYiOyB9IH0KLmdseXBoaWNvbi1oZC12aWRlbyAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODciOyB9IH0KLmdseXBoaWNvbi1zdWJ0aXRsZXMgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODgiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC1zdGVyZW8gICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxODkiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC1kb2xieSAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTAiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC01LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTEiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC02LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTIiOyB9IH0KLmdseXBoaWNvbi1zb3VuZC03LTEgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTMiOyB9IH0KLmdseXBoaWNvbi1jb3B5cmlnaHQtbWFyayAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTQiOyB9IH0KLmdseXBoaWNvbi1yZWdpc3RyYXRpb24tbWFyayAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTUiOyB9IH0KLmdseXBoaWNvbi1jbG91ZC1kb3dubG9hZCAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTciOyB9IH0KLmdseXBoaWNvbi1jbG91ZC11cGxvYWQgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTgiOyB9IH0KLmdseXBoaWNvbi10cmVlLWNvbmlmZXIgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUxOTkiOyB9IH0KLmdseXBoaWNvbi10cmVlLWRlY2lkdW91cyAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXGUyMDAiOyB9IH0KLmdseXBoaWNvbi1icmllZmNhc2UgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDFmNGJjIjsgfSB9Ci5nbHlwaGljb24tY2FsZW5kYXIgICAgICAgICAgICAgICB7ICY6YmVmb3JlIHsgY29udGVudDogIlwxZjRjNSI7IH0gfQouZ2x5cGhpY29uLXB1c2hwaW4gICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMWY0Y2MiOyB9IH0KLmdseXBoaWNvbi1wYXBlcmNsaXAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDFmNGNlIjsgfSB9Ci5nbHlwaGljb24tY2FtZXJhICAgICAgICAgICAgICAgICB7ICY6YmVmb3JlIHsgY29udGVudDogIlwxZjRmNyI7IH0gfQouZ2x5cGhpY29uLWxvY2sgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMWY1MTIiOyB9IH0KLmdseXBoaWNvbi1iZWxsICAgICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDFmNTE0IjsgfSB9Ci5nbHlwaGljb24tYm9va21hcmsgICAgICAgICAgICAgICB7ICY6YmVmb3JlIHsgY29udGVudDogIlwxZjUxNiI7IH0gfQouZ2x5cGhpY29uLWZpcmUgICAgICAgICAgICAgICAgICAgeyAmOmJlZm9yZSB7IGNvbnRlbnQ6ICJcMWY1MjUiOyB9IH0KLmdseXBoaWNvbi13cmVuY2ggICAgICAgICAgICAgICAgIHsgJjpiZWZvcmUgeyBjb250ZW50OiAiXDFmNTI3IjsgfSB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/grid.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gR3JpZCBzeXN0ZW0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBTZXQgdGhlIGNvbnRhaW5lciB3aWR0aCwgYW5kIG92ZXJyaWRlIGl0IGZvciBmaXhlZCBuYXZiYXJzIGluIG1lZGlhIHF1ZXJpZXMKLmNvbnRhaW5lciB7CiAgLmNvbnRhaW5lci1maXhlZCgpOwp9CgovLyBtb2JpbGUgZmlyc3QgZGVmYXVsdHMKLnJvdyB7CiAgLm1ha2Utcm93KCk7Cn0KCi8vIENvbW1vbiBzdHlsZXMgZm9yIHNtYWxsIGFuZCBsYXJnZSBncmlkIGNvbHVtbnMKLmNvbC14cy0xLAouY29sLXhzLTIsCi5jb2wteHMtMywKLmNvbC14cy00LAouY29sLXhzLTUsCi5jb2wteHMtNiwKLmNvbC14cy03LAouY29sLXhzLTgsCi5jb2wteHMtOSwKLmNvbC14cy0xMCwKLmNvbC14cy0xMSwKLmNvbC14cy0xMiwKLmNvbC1zbS0xLAouY29sLXNtLTIsCi5jb2wtc20tMywKLmNvbC1zbS00LAouY29sLXNtLTUsCi5jb2wtc20tNiwKLmNvbC1zbS03LAouY29sLXNtLTgsCi5jb2wtc20tOSwKLmNvbC1zbS0xMCwKLmNvbC1zbS0xMSwKLmNvbC1zbS0xMiwKLmNvbC1tZC0xLAouY29sLW1kLTIsCi5jb2wtbWQtMywKLmNvbC1tZC00LAouY29sLW1kLTUsCi5jb2wtbWQtNiwKLmNvbC1tZC03LAouY29sLW1kLTgsCi5jb2wtbWQtOSwKLmNvbC1tZC0xMCwKLmNvbC1tZC0xMSwKLmNvbC1tZC0xMiwKLmNvbC1sZy0xLAouY29sLWxnLTIsCi5jb2wtbGctMywKLmNvbC1sZy00LAouY29sLWxnLTUsCi5jb2wtbGctNiwKLmNvbC1sZy03LAouY29sLWxnLTgsCi5jb2wtbGctOSwKLmNvbC1sZy0xMCwKLmNvbC1sZy0xMSwKLmNvbC1sZy0xMiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC8vIFByZXZlbnQgY29sdW1ucyBmcm9tIGNvbGxhcHNpbmcgd2hlbiBlbXB0eQogIG1pbi1oZWlnaHQ6IDFweDsKICAvLyBJbm5lciBndXR0ZXIgdmlhIHBhZGRpbmcKICBwYWRkaW5nLWxlZnQ6ICAoQGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBncmlkLWd1dHRlci13aWR0aCAvIDIpOwp9CgoKLy8gRXh0cmEgc21hbGwgZ3JpZAovLwovLyBHcmlkIGNsYXNzZXMgZm9yIGV4dHJhIHNtYWxsIGRldmljZXMgbGlrZSBzbWFydHBob25lcy4gTm8gb2Zmc2V0LCBwdXNoLCBvcgovLyBwdWxsIGNsYXNzZXMgYXJlIHByZXNlbnQgaGVyZSBkdWUgdG8gdGhlIHNpemUgb2YgdGhlIHRhcmdldC4KLy8KLy8gTm90ZSB0aGF0IGAuY29sLXhzLTEyYCBkb2Vzbid0IGdldCBmbG9hdGVkIG9uIHB1cnBvc2XigJR0aGVyZSdzIG5vIG5lZWQgc2luY2UKLy8gaXQncyBmdWxsLXdpZHRoLgoKLmNvbC14cy0xLAouY29sLXhzLTIsCi5jb2wteHMtMywKLmNvbC14cy00LAouY29sLXhzLTUsCi5jb2wteHMtNiwKLmNvbC14cy03LAouY29sLXhzLTgsCi5jb2wteHMtOSwKLmNvbC14cy0xMCwKLmNvbC14cy0xMSB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmNvbC14cy0xICB7IHdpZHRoOiBwZXJjZW50YWdlKCgxIC8gQGdyaWQtY29sdW1ucykpOyB9Ci5jb2wteHMtMiAgeyB3aWR0aDogcGVyY2VudGFnZSgoMiAvIEBncmlkLWNvbHVtbnMpKTsgfQouY29sLXhzLTMgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDMgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KLmNvbC14cy00ICB7IHdpZHRoOiBwZXJjZW50YWdlKCg0IC8gQGdyaWQtY29sdW1ucykpOyB9Ci5jb2wteHMtNSAgeyB3aWR0aDogcGVyY2VudGFnZSgoNSAvIEBncmlkLWNvbHVtbnMpKTsgfQouY29sLXhzLTYgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDYgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KLmNvbC14cy03ICB7IHdpZHRoOiBwZXJjZW50YWdlKCg3IC8gQGdyaWQtY29sdW1ucykpOyB9Ci5jb2wteHMtOCAgeyB3aWR0aDogcGVyY2VudGFnZSgoOCAvIEBncmlkLWNvbHVtbnMpKTsgfQouY29sLXhzLTkgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDkgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KLmNvbC14cy0xMCB7IHdpZHRoOiBwZXJjZW50YWdlKCgxMC8gQGdyaWQtY29sdW1ucykpOyB9Ci5jb2wteHMtMTEgeyB3aWR0aDogcGVyY2VudGFnZSgoMTEvIEBncmlkLWNvbHVtbnMpKTsgfQouY29sLXhzLTEyIHsgd2lkdGg6IDEwMCU7IH0KCgovLyBTbWFsbCBncmlkCi8vCi8vIENvbHVtbnMsIG9mZnNldHMsIHB1c2hlcywgYW5kIHB1bGxzIGZvciB0aGUgc21hbGwgZGV2aWNlIHJhbmdlLCBmcm9tIHBob25lcwovLyB0byB0YWJsZXRzLgovLwovLyBOb3RlIHRoYXQgYC5jb2wtc20tMTJgIGRvZXNuJ3QgZ2V0IGZsb2F0ZWQgb24gcHVycG9zZeKAlHRoZXJlJ3Mgbm8gbmVlZCBzaW5jZQovLyBpdCdzIGZ1bGwtd2lkdGguCgpAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi10YWJsZXQpIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogQGNvbnRhaW5lci10YWJsZXQ7CiAgfQoKICAuY29sLXNtLTEsCiAgLmNvbC1zbS0yLAogIC5jb2wtc20tMywKICAuY29sLXNtLTQsCiAgLmNvbC1zbS01LAogIC5jb2wtc20tNiwKICAuY29sLXNtLTcsCiAgLmNvbC1zbS04LAogIC5jb2wtc20tOSwKICAuY29sLXNtLTEwLAogIC5jb2wtc20tMTEgewogICAgZmxvYXQ6IGxlZnQ7CiAgfQogIC5jb2wtc20tMSAgeyB3aWR0aDogcGVyY2VudGFnZSgoMSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tMiAgeyB3aWR0aDogcGVyY2VudGFnZSgoMiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tMyAgeyB3aWR0aDogcGVyY2VudGFnZSgoMyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tNCAgeyB3aWR0aDogcGVyY2VudGFnZSgoNCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tNSAgeyB3aWR0aDogcGVyY2VudGFnZSgoNSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tNiAgeyB3aWR0aDogcGVyY2VudGFnZSgoNiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tNyAgeyB3aWR0aDogcGVyY2VudGFnZSgoNyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tOCAgeyB3aWR0aDogcGVyY2VudGFnZSgoOCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tOSAgeyB3aWR0aDogcGVyY2VudGFnZSgoOSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tMTAgeyB3aWR0aDogcGVyY2VudGFnZSgoMTAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tMTEgeyB3aWR0aDogcGVyY2VudGFnZSgoMTEvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tMTIgeyB3aWR0aDogMTAwJTsgfQoKICAvLyBQdXNoIGFuZCBwdWxsIGNvbHVtbnMgZm9yIHNvdXJjZSBvcmRlciBjaGFuZ2VzCiAgLmNvbC1zbS1wdXNoLTEgIHsgbGVmdDogcGVyY2VudGFnZSgoMSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tcHVzaC0yICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDIgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLXB1c2gtMyAgeyBsZWZ0OiBwZXJjZW50YWdlKCgzIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1wdXNoLTQgIHsgbGVmdDogcGVyY2VudGFnZSgoNCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tcHVzaC01ICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDUgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLXB1c2gtNiAgeyBsZWZ0OiBwZXJjZW50YWdlKCg2IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1wdXNoLTcgIHsgbGVmdDogcGVyY2VudGFnZSgoNyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tcHVzaC04ICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDggLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLXB1c2gtOSAgeyBsZWZ0OiBwZXJjZW50YWdlKCg5IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1wdXNoLTEwIHsgbGVmdDogcGVyY2VudGFnZSgoMTAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tcHVzaC0xMSB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDExLyBAZ3JpZC1jb2x1bW5zKSk7IH0KCiAgLmNvbC1zbS1wdWxsLTEgIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDEgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLXB1bGwtMiAgeyByaWdodDogcGVyY2VudGFnZSgoMiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tcHVsbC0zICB7IHJpZ2h0OiBwZXJjZW50YWdlKCgzIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1wdWxsLTQgIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDQgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLXB1bGwtNSAgeyByaWdodDogcGVyY2VudGFnZSgoNSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tcHVsbC02ICB7IHJpZ2h0OiBwZXJjZW50YWdlKCg2IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1wdWxsLTcgIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDcgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLXB1bGwtOCAgeyByaWdodDogcGVyY2VudGFnZSgoOCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tcHVsbC05ICB7IHJpZ2h0OiBwZXJjZW50YWdlKCg5IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1wdWxsLTEwIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDEwLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLXB1bGwtMTEgeyByaWdodDogcGVyY2VudGFnZSgoMTEvIEBncmlkLWNvbHVtbnMpKTsgfQoKICAvLyBPZmZzZXRzCiAgLmNvbC1zbS1vZmZzZXQtMSAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoMSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tb2Zmc2V0LTIgIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDIgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLW9mZnNldC0zICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCgzIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1vZmZzZXQtNCAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoNCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tb2Zmc2V0LTUgIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDUgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLW9mZnNldC02ICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCg2IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1vZmZzZXQtNyAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoNyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tb2Zmc2V0LTggIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDggLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLXNtLW9mZnNldC05ICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCg5IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1zbS1vZmZzZXQtMTAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoMTAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtc20tb2Zmc2V0LTExIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDExLyBAZ3JpZC1jb2x1bW5zKSk7IH0KfQoKCi8vIE1lZGl1bSBncmlkCi8vCi8vIENvbHVtbnMsIG9mZnNldHMsIHB1c2hlcywgYW5kIHB1bGxzIGZvciB0aGUgZGVza3RvcCBkZXZpY2UgcmFuZ2UuCi8vCi8vIE5vdGUgdGhhdCBgLmNvbC1tZC0xMmAgZG9lc24ndCBnZXQgZmxvYXRlZCBvbiBwdXJwb3Nl4oCUdGhlcmUncyBubyBuZWVkIHNpbmNlCi8vIGl0J3MgZnVsbC13aWR0aC4KCkBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWRlc2t0b3ApIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogQGNvbnRhaW5lci1kZXNrdG9wOwogIH0KICAuY29sLW1kLTEsCiAgLmNvbC1tZC0yLAogIC5jb2wtbWQtMywKICAuY29sLW1kLTQsCiAgLmNvbC1tZC01LAogIC5jb2wtbWQtNiwKICAuY29sLW1kLTcsCiAgLmNvbC1tZC04LAogIC5jb2wtbWQtOSwKICAuY29sLW1kLTEwLAogIC5jb2wtbWQtMTEgewogICAgZmxvYXQ6IGxlZnQ7CiAgfQogIC5jb2wtbWQtMSAgeyB3aWR0aDogcGVyY2VudGFnZSgoMSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtMiAgeyB3aWR0aDogcGVyY2VudGFnZSgoMiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtMyAgeyB3aWR0aDogcGVyY2VudGFnZSgoMyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtNCAgeyB3aWR0aDogcGVyY2VudGFnZSgoNCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtNSAgeyB3aWR0aDogcGVyY2VudGFnZSgoNSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtNiAgeyB3aWR0aDogcGVyY2VudGFnZSgoNiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtNyAgeyB3aWR0aDogcGVyY2VudGFnZSgoNyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtOCAgeyB3aWR0aDogcGVyY2VudGFnZSgoOCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtOSAgeyB3aWR0aDogcGVyY2VudGFnZSgoOSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtMTAgeyB3aWR0aDogcGVyY2VudGFnZSgoMTAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtMTEgeyB3aWR0aDogcGVyY2VudGFnZSgoMTEvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtMTIgeyB3aWR0aDogMTAwJTsgfQoKICAvLyBQdXNoIGFuZCBwdWxsIGNvbHVtbnMgZm9yIHNvdXJjZSBvcmRlciBjaGFuZ2VzCiAgLmNvbC1tZC1wdXNoLTAgIHsgbGVmdDogYXV0bzsgfQogIC5jb2wtbWQtcHVzaC0xICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDEgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLXB1c2gtMiAgeyBsZWZ0OiBwZXJjZW50YWdlKCgyIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1wdXNoLTMgIHsgbGVmdDogcGVyY2VudGFnZSgoMyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtcHVzaC00ICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDQgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLXB1c2gtNSAgeyBsZWZ0OiBwZXJjZW50YWdlKCg1IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1wdXNoLTYgIHsgbGVmdDogcGVyY2VudGFnZSgoNiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtcHVzaC03ICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDcgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLXB1c2gtOCAgeyBsZWZ0OiBwZXJjZW50YWdlKCg4IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1wdXNoLTkgIHsgbGVmdDogcGVyY2VudGFnZSgoOSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtcHVzaC0xMCB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDEwLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLXB1c2gtMTEgeyBsZWZ0OiBwZXJjZW50YWdlKCgxMS8gQGdyaWQtY29sdW1ucykpOyB9CgogIC5jb2wtbWQtcHVsbC0wICB7IHJpZ2h0OiBhdXRvOyB9CiAgLmNvbC1tZC1wdWxsLTEgIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDEgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLXB1bGwtMiAgeyByaWdodDogcGVyY2VudGFnZSgoMiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtcHVsbC0zICB7IHJpZ2h0OiBwZXJjZW50YWdlKCgzIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1wdWxsLTQgIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDQgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLXB1bGwtNSAgeyByaWdodDogcGVyY2VudGFnZSgoNSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtcHVsbC02ICB7IHJpZ2h0OiBwZXJjZW50YWdlKCg2IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1wdWxsLTcgIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDcgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLXB1bGwtOCAgeyByaWdodDogcGVyY2VudGFnZSgoOCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtcHVsbC05ICB7IHJpZ2h0OiBwZXJjZW50YWdlKCg5IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1wdWxsLTEwIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDEwLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLXB1bGwtMTEgeyByaWdodDogcGVyY2VudGFnZSgoMTEvIEBncmlkLWNvbHVtbnMpKTsgfQoKICAvLyBPZmZzZXRzCiAgLmNvbC1tZC1vZmZzZXQtMCAgeyBtYXJnaW4tbGVmdDogMDsgfQogIC5jb2wtbWQtb2Zmc2V0LTEgIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDEgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLW9mZnNldC0yICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCgyIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1vZmZzZXQtMyAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoMyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtb2Zmc2V0LTQgIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDQgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLW9mZnNldC01ICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCg1IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1vZmZzZXQtNiAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoNiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtb2Zmc2V0LTcgIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDcgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLW9mZnNldC04ICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCg4IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1tZC1vZmZzZXQtOSAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoOSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbWQtb2Zmc2V0LTEwIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDEwLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLW1kLW9mZnNldC0xMSB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCgxMS8gQGdyaWQtY29sdW1ucykpOyB9Cn0KCgovLyBMYXJnZSBncmlkCi8vCi8vIENvbHVtbnMsIG9mZnNldHMsIHB1c2hlcywgYW5kIHB1bGxzIGZvciB0aGUgbGFyZ2UgZGVza3RvcCBkZXZpY2UgcmFuZ2UuCi8vCi8vIE5vdGUgdGhhdCBgLmNvbC1sZy0xMmAgZG9lc24ndCBnZXQgZmxvYXRlZCBvbiBwdXJwb3Nl4oCUdGhlcmUncyBubyBuZWVkIHNpbmNlCi8vIGl0J3MgZnVsbC13aWR0aC4KCkBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnLWRlc2t0b3ApIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogQGNvbnRhaW5lci1sZy1kZXNrdG9wOwogIH0KCiAgLmNvbC1sZy0xLAogIC5jb2wtbGctMiwKICAuY29sLWxnLTMsCiAgLmNvbC1sZy00LAogIC5jb2wtbGctNSwKICAuY29sLWxnLTYsCiAgLmNvbC1sZy03LAogIC5jb2wtbGctOCwKICAuY29sLWxnLTksCiAgLmNvbC1sZy0xMCwKICAuY29sLWxnLTExIHsKICAgIGZsb2F0OiBsZWZ0OwogIH0KICAuY29sLWxnLTEgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDEgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTIgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDIgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTMgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDMgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTQgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDQgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTUgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDUgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTYgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDYgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTcgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDcgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTggIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDggLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTkgIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDkgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTEwIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDEwLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTExIHsgd2lkdGg6IHBlcmNlbnRhZ2UoKDExLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLTEyIHsgd2lkdGg6IDEwMCU7IH0KCiAgLy8gUHVzaCBhbmQgcHVsbCBjb2x1bW5zIGZvciBzb3VyY2Ugb3JkZXIgY2hhbmdlcwogIC5jb2wtbGctcHVzaC0wICB7IGxlZnQ6IGF1dG87IH0KICAuY29sLWxnLXB1c2gtMSAgeyBsZWZ0OiBwZXJjZW50YWdlKCgxIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1wdXNoLTIgIHsgbGVmdDogcGVyY2VudGFnZSgoMiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctcHVzaC0zICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDMgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLXB1c2gtNCAgeyBsZWZ0OiBwZXJjZW50YWdlKCg0IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1wdXNoLTUgIHsgbGVmdDogcGVyY2VudGFnZSgoNSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctcHVzaC02ICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDYgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLXB1c2gtNyAgeyBsZWZ0OiBwZXJjZW50YWdlKCg3IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1wdXNoLTggIHsgbGVmdDogcGVyY2VudGFnZSgoOCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctcHVzaC05ICB7IGxlZnQ6IHBlcmNlbnRhZ2UoKDkgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLXB1c2gtMTAgeyBsZWZ0OiBwZXJjZW50YWdlKCgxMC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1wdXNoLTExIHsgbGVmdDogcGVyY2VudGFnZSgoMTEvIEBncmlkLWNvbHVtbnMpKTsgfQoKICAuY29sLWxnLXB1bGwtMCAgeyByaWdodDogYXV0bzsgfQogIC5jb2wtbGctcHVsbC0xICB7IHJpZ2h0OiBwZXJjZW50YWdlKCgxIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1wdWxsLTIgIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDIgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLXB1bGwtMyAgeyByaWdodDogcGVyY2VudGFnZSgoMyAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctcHVsbC00ICB7IHJpZ2h0OiBwZXJjZW50YWdlKCg0IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1wdWxsLTUgIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDUgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLXB1bGwtNiAgeyByaWdodDogcGVyY2VudGFnZSgoNiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctcHVsbC03ICB7IHJpZ2h0OiBwZXJjZW50YWdlKCg3IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1wdWxsLTggIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDggLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLXB1bGwtOSAgeyByaWdodDogcGVyY2VudGFnZSgoOSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctcHVsbC0xMCB7IHJpZ2h0OiBwZXJjZW50YWdlKCgxMC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1wdWxsLTExIHsgcmlnaHQ6IHBlcmNlbnRhZ2UoKDExLyBAZ3JpZC1jb2x1bW5zKSk7IH0KCiAgLy8gT2Zmc2V0cwogIC5jb2wtbGctb2Zmc2V0LTAgIHsgbWFyZ2luLWxlZnQ6IDA7IH0KICAuY29sLWxnLW9mZnNldC0xICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCgxIC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1vZmZzZXQtMiAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoMiAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctb2Zmc2V0LTMgIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDMgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLW9mZnNldC00ICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCg0IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1vZmZzZXQtNSAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoNSAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctb2Zmc2V0LTYgIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDYgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLW9mZnNldC03ICB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCg3IC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1vZmZzZXQtOCAgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoOCAvIEBncmlkLWNvbHVtbnMpKTsgfQogIC5jb2wtbGctb2Zmc2V0LTkgIHsgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKDkgLyBAZ3JpZC1jb2x1bW5zKSk7IH0KICAuY29sLWxnLW9mZnNldC0xMCB7IG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCgxMC8gQGdyaWQtY29sdW1ucykpOyB9CiAgLmNvbC1sZy1vZmZzZXQtMTEgeyBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoMTEvIEBncmlkLWNvbHVtbnMpKTsgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/input-groups.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gSW5wdXQgZ3JvdXBzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBCYXNlIHN0eWxlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5pbnB1dC1ncm91cCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOyAvLyBGb3IgZHJvcGRvd25zCiAgZGlzcGxheTogdGFibGU7CiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgLy8gcHJldmVudCBpbnB1dCBncm91cHMgZnJvbSBpbmhlcml0aW5nIGJvcmRlciBzdHlsZXMgZnJvbSB0YWJsZSBjZWxscyB3aGVuIHBsYWNlZCB3aXRoaW4gYSB0YWJsZQoKICAvLyBVbmRvIHBhZGRpbmcgYW5kIGZsb2F0IG9mIGdyaWQgY2xhc3NlcwogICYuY29sIHsKICAgIGZsb2F0OiBub25lOwogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFkZGluZy1yaWdodDogMDsKICB9CgogIC5mb3JtLWNvbnRyb2wgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KfQoKLy8gU2l6aW5nIG9wdGlvbnMKLy8KLy8gUmVtaXggdGhlIGRlZmF1bHQgZm9ybSBjb250cm9sIHNpemluZyBjbGFzc2VzIGludG8gbmV3IG9uZXMgZm9yIGVhc2llcgovLyBtYW5pcHVsYXRpb24uCgouaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYWRkb24sCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsgLmlucHV0LWxnKCk7IH0KLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7IC5pbnB1dC1zbSgpOyB9CgoKLy8gRGlzcGxheSBhcyB0YWJsZS1jZWxsCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmlucHV0LWdyb3VwLWFkZG9uLAouaW5wdXQtZ3JvdXAtYnRuLAouaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCB7CiAgZGlzcGxheTogdGFibGUtY2VsbDsKCiAgJjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQp9Ci8vIEFkZG9uIGFuZCBhZGRvbiB3cmFwcGVyIGZvciBidXR0b25zCi5pbnB1dC1ncm91cC1hZGRvbiwKLmlucHV0LWdyb3VwLWJ0biB7CiAgd2lkdGg6IDElOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLy8gTWF0Y2ggdGhlIGlucHV0cwp9CgovLyBUZXh0IGlucHV0IGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5pbnB1dC1ncm91cC1hZGRvbiB7CiAgcGFkZGluZzogQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCBAcGFkZGluZy1iYXNlLWhvcml6b250YWw7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLWJhc2U7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogQGlucHV0LWdyb3VwLWFkZG9uLWJnOwogIGJvcmRlcjogMXB4IHNvbGlkIEBpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgLy8gU2l6aW5nCiAgJi5pbnB1dC1zbSB7CiAgICBwYWRkaW5nOiBAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbCBAcGFkZGluZy1zbWFsbC1ob3Jpem9udGFsOwogICAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtc21hbGw7CiAgfQogICYuaW5wdXQtbGcgewogICAgcGFkZGluZzogQHBhZGRpbmctbGFyZ2UtdmVydGljYWwgQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDsKICAgIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1sYXJnZTsKICAgIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWxhcmdlOwogIH0KCiAgLy8gTnVrZSBkZWZhdWx0IG1hcmdpbnMgZnJvbSBjaGVja2JveGVzIGFuZCByYWRpb3MgdG8gdmVydGljYWxseSBjZW50ZXIgd2l0aGluLgogIGlucHV0W3R5cGU9InJhZGlvIl0sCiAgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgICBtYXJnaW4tdG9wOiAwOwogIH0KfQoKLy8gUmVzZXQgcm91bmRlZCBjb3JuZXJzCi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmZpcnN0LWNoaWxkLAouaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuLAouaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkID4gLmRyb3Bkb3duLXRvZ2dsZSwKLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSB7CiAgLmJvcmRlci1yaWdodC1yYWRpdXMoMCk7Cn0KLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkIHsKICBib3JkZXItcmlnaHQ6IDA7Cn0KLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bGFzdC1jaGlsZCwKLmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGQsCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5idG4sCi5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZCA+IC5kcm9wZG93bi10b2dnbGUsCi5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAuYm9yZGVyLWxlZnQtcmFkaXVzKDApOwp9Ci5pbnB1dC1ncm91cC1hZGRvbjpsYXN0LWNoaWxkIHsKICBib3JkZXItbGVmdDogMDsKfQoKLy8gQnV0dG9uIGlucHV0IGdyb3VwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5pbnB1dC1ncm91cC1idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLy8gSmFua2lseSBwcmV2ZW50IGlucHV0IGJ1dHRvbiBncm91cHMgZnJvbSB3cmFwcGluZwogICsgLmJ0biB7CiAgICBtYXJnaW4tbGVmdDogLTRweDsKICB9CiAgLy8gQnJpbmcgdGhlICJhY3RpdmUiIGJ1dHRvbiB0byB0aGUgZnJvbnQKICAmOmhvdmVyLAogICY6YWN0aXZlIHsKICAgIHotaW5kZXg6IDI7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/jumbotron.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gSnVtYm90cm9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLmp1bWJvdHJvbiB7CiAgcGFkZGluZzogQGp1bWJvdHJvbi1wYWRkaW5nOwogIG1hcmdpbi1ib3R0b206IEBqdW1ib3Ryb24tcGFkZGluZzsKICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjUpOwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IChAbGluZS1oZWlnaHQtYmFzZSAqIDEuNSk7CiAgY29sb3I6IEBqdW1ib3Ryb24tY29sb3I7CiAgYmFja2dyb3VuZC1jb2xvcjogQGp1bWJvdHJvbi1iZzsKCiAgaDEgewogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBjb2xvcjogQGp1bWJvdHJvbi1oZWFkaW5nLWNvbG9yOwogIH0KICBwIHsKICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgfQoKICAuY29udGFpbmVyICYgewogICAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtbGFyZ2U7IC8vIE9ubHkgcm91bmQgY29ybmVycyBhdCBoaWdoZXIgcmVzb2x1dGlvbnMgaWYgY29udGFpbmVkIGluIGEgY29udGFpbmVyCiAgfQoKICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiBAc2NyZWVuLXRhYmxldCkgewogICAgcGFkZGluZy10b3A6ICAgIChAanVtYm90cm9uLXBhZGRpbmcgKiAxLjYpOwogICAgcGFkZGluZy1ib3R0b206IChAanVtYm90cm9uLXBhZGRpbmcgKiAxLjYpOwoKICAgIC5jb250YWluZXIgJiB7CiAgICAgIHBhZGRpbmctbGVmdDogIChAanVtYm90cm9uLXBhZGRpbmcgKiAyKTsKICAgICAgcGFkZGluZy1yaWdodDogKEBqdW1ib3Ryb24tcGFkZGluZyAqIDIpOwogICAgfQoKICAgIGgxIHsKICAgICAgZm9udC1zaXplOiAoQGZvbnQtc2l6ZS1iYXNlICogNC41KTsKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/labels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTGFiZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoubGFiZWwgewogIGRpc3BsYXk6IGlubGluZTsKICBwYWRkaW5nOiAuMmVtIC42ZW0gLjNlbTsKICBmb250LXNpemU6IDc1JTsKICBmb250LXdlaWdodDogYm9sZDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogQGxhYmVsLWNvbG9yOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAuMjVlbTsKCiAgLy8gQWRkIGhvdmVyIGVmZmVjdHMsIGJ1dCBvbmx5IGZvciBsaW5rcwogICZbaHJlZl0gewogICAgJjpob3ZlciwKICAgICY6Zm9jdXMgewogICAgICBjb2xvcjogQGxhYmVsLWxpbmstaG92ZXItY29sb3I7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogIH0KCiAgLy8gRW1wdHkgbGFiZWxzIGNvbGxhcHNlIGF1dG9tYXRpY2FsbHkgKG5vdCBhdmFpbGFibGUgaW4gSUU4KQogICY6ZW1wdHkgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KCi8vIENvbG9ycwovLyBDb250ZXh0dWFsIHZhcmlhdGlvbnMgKGxpbmtlZCBsYWJlbHMgZ2V0IGRhcmtlciBvbiA6aG92ZXIpCgoubGFiZWwtZGVmYXVsdCB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLWRlZmF1bHQtYmcpOwp9CgoubGFiZWwtcHJpbWFyeSB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLXByaW1hcnktYmcpOwp9CgoubGFiZWwtc3VjY2VzcyB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLXN1Y2Nlc3MtYmcpOwp9CgoubGFiZWwtaW5mbyB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLWluZm8tYmcpOwp9CgoubGFiZWwtd2FybmluZyB7CiAgLmxhYmVsLXZhcmlhbnQoQGxhYmVsLXdhcm5pbmctYmcpOwp9CgoubGFiZWwtZGFuZ2VyIHsKICAubGFiZWwtdmFyaWFudChAbGFiZWwtZGFuZ2VyLWJnKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/list-group.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTGlzdCBncm91cHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEJhc2UgY2xhc3MKLy8KLy8gRWFzaWx5IHVzYWJsZSBvbiA8dWw+LCA8b2w+LCBvciA8ZGl2Pi4KLmxpc3QtZ3JvdXAgewogIC8vIE5vIG5lZWQgdG8gc2V0IGxpc3Qtc3R5bGU6IG5vbmU7IHNpbmNlIC5saXN0LWdyb3VwLWl0ZW0gaXMgYmxvY2sgbGV2ZWwKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIHBhZGRpbmctbGVmdDogMDsgLy8gcmVzZXQgcGFkZGluZyBiZWNhdXNlIHVsIGFuZCBvbAp9CgovLyBJbmRpdmlkdWFsIGxpc3QgaXRlbXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmxpc3QtZ3JvdXAtaXRlbSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDEwcHggMTVweDsKICAvLyBQbGFjZSB0aGUgYm9yZGVyIG9uIHRoZSBsaXN0IGl0ZW1zIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdXAgZm9yIGJldHRlciBzdHlsaW5nCiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAbGlzdC1ncm91cC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBAbGlzdC1ncm91cC1ib3JkZXI7CgogIC8vIFJvdW5kIHRoZSBmaXJzdCBhbmQgbGFzdCBpdGVtcwogICY6Zmlyc3QtY2hpbGQgewogICAgLmJvcmRlci10b3AtcmFkaXVzKEBsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXMpOwogIH0KICAmOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIC5ib3JkZXItYm90dG9tLXJhZGl1cyhAbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTsKICB9CgogIC8vIEFsaWduIGJhZGdlcyB3aXRoaW4gbGlzdCBpdGVtcwogID4gLmJhZGdlIHsKICAgIGZsb2F0OiByaWdodDsKICB9CiAgPiAuYmFkZ2UgKyAuYmFkZ2UgewogICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgfQoKICAvLyBMaW5rZWQgbGlzdCBpdGVtcwogIGEmIHsKICAgIGNvbG9yOiBAbGlzdC1ncm91cC1saW5rLWNvbG9yOwoKICAgIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyB7CiAgICAgIGNvbG9yOiBAbGlzdC1ncm91cC1saW5rLWhlYWRpbmctY29sb3I7CiAgICB9CgogICAgLy8gSG92ZXIgc3RhdGUKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbGlzdC1ncm91cC1ob3Zlci1iZzsKICAgIH0KICB9CgogIC8vIEFjdGl2ZSBjbGFzcyBvbiBpdGVtIGl0c2VsZiwgbm90IHBhcmVudAogICYuYWN0aXZlLAogICYuYWN0aXZlOmhvdmVyLAogICYuYWN0aXZlOmZvY3VzIHsKICAgIHotaW5kZXg6IDI7IC8vIFBsYWNlIGFjdGl2ZSBpdGVtcyBhYm92ZSB0aGVpciBzaWJsaW5ncyBmb3IgcHJvcGVyIGJvcmRlciBzdHlsaW5nCiAgICBjb2xvcjogQGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGxpc3QtZ3JvdXAtYWN0aXZlLWJnOwogICAgYm9yZGVyLWNvbG9yOiBAbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyOwoKICAgIC8vIEZvcmNlIGNvbG9yIHRvIGluaGVyaXQgZm9yIGN1c3RvbSBjb250ZW50CiAgICAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcgewogICAgICBjb2xvcjogaW5oZXJpdDsKICAgIH0KICAgIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCB7CiAgICAgIGNvbG9yOiBsaWdodGVuKEBsaXN0LWdyb3VwLWFjdGl2ZS1iZywgNDAlKTsKICAgIH0KICB9Cn0KCi8vIEN1c3RvbSBjb250ZW50IG9wdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoubGlzdC1ncm91cC1pdGVtLXRleHQgewogIG1hcmdpbi1ib3R0b206IDA7CiAgbGluZS1oZWlnaHQ6IDEuMzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTWVkaWEgb2JqZWN0cwovLyBTb3VyY2U6IGh0dHA6Ly9zdHViYm9ybmVsbGEub3JnL2NvbnRlbnQvP3A9NDk3Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQ29tbW9uIHN0eWxlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBDbGVhciB0aGUgZmxvYXRzCi5tZWRpYSwKLm1lZGlhLWJvZHkgewogIG92ZXJmbG93OiBoaWRkZW47CiAgem9vbTogMTsKfQoKLy8gUHJvcGVyIHNwYWNpbmcgYmV0d2VlbiBpbnN0YW5jZXMgb2YgLm1lZGlhCi5tZWRpYSwKLm1lZGlhIC5tZWRpYSB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQoubWVkaWE6Zmlyc3QtY2hpbGQgewogIG1hcmdpbi10b3A6IDA7Cn0KCi8vIEZvciBpbWFnZXMgYW5kIHZpZGVvcywgc2V0IHRvIGJsb2NrCi5tZWRpYS1vYmplY3QgewogIGRpc3BsYXk6IGJsb2NrOwp9CgovLyBSZXNldCBtYXJnaW5zIG9uIGhlYWRpbmdzIGZvciB0aWdodGVyIGRlZmF1bHQgc3BhY2luZwoubWVkaWEtaGVhZGluZyB7CiAgbWFyZ2luOiAwIDAgNXB4Owp9CgoKLy8gTWVkaWEgaW1hZ2UgYWxpZ25tZW50Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5tZWRpYSB7CiAgPiAucHVsbC1sZWZ0IHsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICB9CiAgPiAucHVsbC1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICB9Cn0KCgovLyBNZWRpYSBsaXN0IHZhcmlhdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBVbmRvIGRlZmF1bHQgdWwvb2wgc3R5bGVzCi5tZWRpYS1saXN0IHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/mixins.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTWl4aW5zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gVXRpbGl0aWVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENsZWFyZml4Ci8vIFNvdXJjZTogaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svCi8vCi8vIEZvciBtb2Rlcm4gYnJvd3NlcnMKLy8gMS4gVGhlIHNwYWNlIGNvbnRlbnQgaXMgb25lIHdheSB0byBhdm9pZCBhbiBPcGVyYSBidWcgd2hlbiB0aGUKLy8gICAgY29udGVudGVkaXRhYmxlIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudC4KLy8gICAgT3RoZXJ3aXNlIGl0IGNhdXNlcyBzcGFjZSB0byBhcHBlYXIgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVsZW1lbnRzCi8vICAgIHRoYXQgYXJlIGNsZWFyZml4ZWQuCi8vIDIuIFRoZSB1c2Ugb2YgYHRhYmxlYCByYXRoZXIgdGhhbiBgYmxvY2tgIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHVzaW5nCi8vICAgIGA6YmVmb3JlYCB0byBjb250YWluIHRoZSB0b3AtbWFyZ2lucyBvZiBjaGlsZCBlbGVtZW50cy4KLmNsZWFyZml4KCkgewogICY6YmVmb3JlLAogICY6YWZ0ZXIgewogICAgY29udGVudDogIiAiOyAvKiAxICovCiAgICBkaXNwbGF5OiB0YWJsZTsgLyogMiAqLwogIH0KICAmOmFmdGVyIHsKICAgIGNsZWFyOiBib3RoOwogIH0KfQoKLy8gV2Via2l0LXN0eWxlIGZvY3VzCi50YWItZm9jdXMoKSB7CiAgLy8gRGVmYXVsdAogIG91dGxpbmU6IHRoaW4gZG90dGVkICMzMzM7CiAgLy8gV2Via2l0CiAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yOwogIG91dGxpbmUtb2Zmc2V0OiAtMnB4Owp9CgovLyBDZW50ZXItYWxpZ24gYSBibG9jayBsZXZlbCBlbGVtZW50Ci5jZW50ZXItYmxvY2soKSB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgovLyBTaXppbmcgc2hvcnRjdXRzCi5zaXplKEB3aWR0aDsgQGhlaWdodCkgewogIHdpZHRoOiBAd2lkdGg7CiAgaGVpZ2h0OiBAaGVpZ2h0Owp9Ci5zcXVhcmUoQHNpemUpIHsKICAuc2l6ZShAc2l6ZTsgQHNpemUpOwp9CgovLyBQbGFjZWhvbGRlciB0ZXh0Ci5wbGFjZWhvbGRlcihAY29sb3I6IEBpbnB1dC1jb2xvci1wbGFjZWhvbGRlcikgewogICY6LW1vei1wbGFjZWhvbGRlciAgICAgICAgICAgIHsgY29sb3I6IEBjb2xvcjsgfSAvLyBGaXJlZm94IDQtMTgKICAmOjotbW96LXBsYWNlaG9sZGVyICAgICAgICAgICB7IGNvbG9yOiBAY29sb3I7IH0gLy8gRmlyZWZveCAxOSsKICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciAgICAgICB7IGNvbG9yOiBAY29sb3I7IH0gLy8gSW50ZXJuZXQgRXhwbG9yZXIgMTArCiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciAgeyBjb2xvcjogQGNvbG9yOyB9IC8vIFNhZmFyaSBhbmQgQ2hyb21lCn0KCi8vIFRleHQgb3ZlcmZsb3cKLy8gUmVxdWlyZXMgaW5saW5lLWJsb2NrIG9yIGJsb2NrIGZvciBwcm9wZXIgc3R5bGluZwoudGV4dC1vdmVyZmxvdygpIHsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi8vIENTUyBpbWFnZSByZXBsYWNlbWVudAovLyBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2NvbW1pdC9hYTAzOTZlYWU3NTcKLmhpZGUtdGV4dCgpIHsKICBmb250OiB+IjAvMCIgYTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9CgoKCi8vIENTUzMgUFJPUEVSVElFUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gU2luZ2xlIHNpZGUgYm9yZGVyLXJhZGl1cwouYm9yZGVyLXRvcC1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBAcmFkaXVzOwogICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBAcmFkaXVzOwp9Ci5ib3JkZXItcmlnaHQtcmFkaXVzKEByYWRpdXMpIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogQHJhZGl1czsKICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogQHJhZGl1czsKfQouYm9yZGVyLWJvdHRvbS1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiBAcmFkaXVzOwogICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBAcmFkaXVzOwp9Ci5ib3JkZXItbGVmdC1yYWRpdXMoQHJhZGl1cykgewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IEByYWRpdXM7CiAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogQHJhZGl1czsKfQoKLy8gRHJvcCBzaGFkb3dzCi5ib3gtc2hhZG93KEBzaGFkb3cpIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IEBzaGFkb3c7IC8vIGlPUyA8NC4zICYgQW5kcm9pZCA8NC4xCiAgICAgICAgICBib3gtc2hhZG93OiBAc2hhZG93Owp9CgovLyBUcmFuc2l0aW9ucwoudHJhbnNpdGlvbihAdHJhbnNpdGlvbikgewogIC13ZWJraXQtdHJhbnNpdGlvbjogQHRyYW5zaXRpb247CiAgICAgICAgICB0cmFuc2l0aW9uOiBAdHJhbnNpdGlvbjsKfQoudHJhbnNpdGlvbi1kZWxheShAdHJhbnNpdGlvbi1kZWxheSkgewogIC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheTogQHRyYW5zaXRpb24tZGVsYXk7CiAgICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiBAdHJhbnNpdGlvbi1kZWxheTsKfQoudHJhbnNpdGlvbi1kdXJhdGlvbihAdHJhbnNpdGlvbi1kdXJhdGlvbikgewogIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogQHRyYW5zaXRpb24tZHVyYXRpb247CiAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiBAdHJhbnNpdGlvbi1kdXJhdGlvbjsKfQoudHJhbnNpdGlvbi10cmFuc2Zvcm0oQHRyYW5zaXRpb24pIHsKICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIEB0cmFuc2l0aW9uOwogICAgIC1tb3otdHJhbnNpdGlvbjogLW1vei10cmFuc2Zvcm0gQHRyYW5zaXRpb247CiAgICAgICAtby10cmFuc2l0aW9uOiAtby10cmFuc2Zvcm0gQHRyYW5zaXRpb247CiAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gQHRyYW5zaXRpb247Cn0KCi8vIFRyYW5zZm9ybWF0aW9ucwoucm90YXRlKEBkZWdyZWVzKSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZShAZGVncmVlcyk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZShAZGVncmVlcyk7IC8vIElFOSsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKEBkZWdyZWVzKTsKfQouc2NhbGUoQHJhdGlvKSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKEByYXRpbyk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKEByYXRpbyk7IC8vIElFOSsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoQHJhdGlvKTsKfQoudHJhbnNsYXRlKEB4OyBAeSkgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoQHgsIEB5KTsKICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKEB4LCBAeSk7IC8vIElFOSsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKEB4LCBAeSk7Cn0KLnNrZXcoQHg7IEB5KSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoQHgsIEB5KTsKICAgICAgLW1zLXRyYW5zZm9ybTogc2tld1goQHgpIHNrZXdZKEB5KTsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvNDg4NTsgSUU5KwogICAgICAgICAgdHJhbnNmb3JtOiBza2V3KEB4LCBAeSk7Cn0KLnRyYW5zbGF0ZTNkKEB4OyBAeTsgQHopIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoQHgsIEB5LCBAeik7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKEB4LCBAeSwgQHopOwp9CgovLyBCYWNrZmFjZSB2aXNpYmlsaXR5Ci8vIFByZXZlbnQgYnJvd3NlcnMgZnJvbSBmbGlja2VyaW5nIHdoZW4gdXNpbmcgQ1NTIDNEIHRyYW5zZm9ybXMuCi8vIERlZmF1bHQgdmFsdWUgaXMgYHZpc2libGVgLCBidXQgY2FuIGJlIGNoYW5nZWQgdG8gYGhpZGRlbmAKLy8gU2VlIGdpdCBwdWxsIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5ueWtlYW5lL2Jvb3RzdHJhcC5naXQgYmFja2ZhY2UtdmlzaWJpbGl0eSBmb3IgZXhhbXBsZXMKLmJhY2tmYWNlLXZpc2liaWxpdHkoQHZpc2liaWxpdHkpewogIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogQHZpc2liaWxpdHk7CiAgICAgLW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OiBAdmlzaWJpbGl0eTsKICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IEB2aXNpYmlsaXR5Owp9CgovLyBCb3ggc2l6aW5nCi5ib3gtc2l6aW5nKEBib3htb2RlbCkgewogIC13ZWJraXQtYm94LXNpemluZzogQGJveG1vZGVsOwogICAgIC1tb3otYm94LXNpemluZzogQGJveG1vZGVsOwogICAgICAgICAgYm94LXNpemluZzogQGJveG1vZGVsOwp9CgovLyBVc2VyIHNlbGVjdAovLyBGb3Igc2VsZWN0aW5nIHRleHQgb24gdGhlIHBhZ2UKLnVzZXItc2VsZWN0KEBzZWxlY3QpIHsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBAc2VsZWN0OwogICAgIC1tb3otdXNlci1zZWxlY3Q6IEBzZWxlY3Q7CiAgICAgIC1tcy11c2VyLXNlbGVjdDogQHNlbGVjdDsgLy8gSUUxMCsKICAgICAgIC1vLXVzZXItc2VsZWN0OiBAc2VsZWN0OwogICAgICAgICAgdXNlci1zZWxlY3Q6IEBzZWxlY3Q7Cn0KCi8vIFJlc2l6ZSBhbnl0aGluZwoucmVzaXphYmxlKEBkaXJlY3Rpb24pIHsKICByZXNpemU6IEBkaXJlY3Rpb247IC8vIE9wdGlvbnM6IGhvcml6b250YWwsIHZlcnRpY2FsLCBib3RoCiAgb3ZlcmZsb3c6IGF1dG87IC8vIFNhZmFyaSBmaXgKfQoKLy8gQ1NTMyBDb250ZW50IENvbHVtbnMKLmNvbnRlbnQtY29sdW1ucyhAY29sdW1uLWNvdW50OyBAY29sdW1uLWdhcDogQGdyaWQtZ3V0dGVyLXdpZHRoKSB7CiAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IEBjb2x1bW4tY291bnQ7CiAgICAgLW1vei1jb2x1bW4tY291bnQ6IEBjb2x1bW4tY291bnQ7CiAgICAgICAgICBjb2x1bW4tY291bnQ6IEBjb2x1bW4tY291bnQ7CiAgLXdlYmtpdC1jb2x1bW4tZ2FwOiBAY29sdW1uLWdhcDsKICAgICAtbW96LWNvbHVtbi1nYXA6IEBjb2x1bW4tZ2FwOwogICAgICAgICAgY29sdW1uLWdhcDogQGNvbHVtbi1nYXA7Cn0KCi8vIE9wdGlvbmFsIGh5cGhlbmF0aW9uCi5oeXBoZW5zKEBtb2RlOiBhdXRvKSB7CiAgd29yZC13cmFwOiBicmVhay13b3JkOwogIC13ZWJraXQtaHlwaGVuczogQG1vZGU7CiAgICAgLW1vei1oeXBoZW5zOiBAbW9kZTsKICAgICAgLW1zLWh5cGhlbnM6IEBtb2RlOyAvLyBJRTEwKwogICAgICAgLW8taHlwaGVuczogQG1vZGU7CiAgICAgICAgICBoeXBoZW5zOiBAbW9kZTsKfQoKLy8gT3BhY2l0eQoub3BhY2l0eShAb3BhY2l0eSkgewogIG9wYWNpdHk6IEBvcGFjaXR5OwogIC8vIElFOCBmaWx0ZXIKICBAb3BhY2l0eS1pZTogKEBvcGFjaXR5ICogMTAwKTsKICBmaWx0ZXI6IH4iYWxwaGEob3BhY2l0eT1Ae29wYWNpdHktaWV9KSI7Cn0KCgoKLy8gR1JBRElFTlRTCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojZ3JhZGllbnQgewoKICAvLyBIb3Jpem9udGFsIGdyYWRpZW50LCBmcm9tIGxlZnQgdG8gcmlnaHQKICAvLwogIC8vIENyZWF0ZXMgdHdvIGNvbG9yIHN0b3BzLCBzdGFydCBhbmQgZW5kLCBieSBzcGVjaWZ5aW5nIGEgY29sb3IgYW5kIHBvc2l0aW9uIGZvciBlYWNoIGNvbG9yIHN0b3AuCiAgLy8gQ29sb3Igc3RvcHMgYXJlIG5vdCBhdmFpbGFibGUgaW4gSUU5IGFuZCBiZWxvdy4KICAuaG9yaXpvbnRhbChAc3RhcnQtY29sb3I6ICM1NTU7IEBlbmQtY29sb3I6ICMzMzM7IEBzdGFydC1wZXJjZW50OiAwJTsgQGVuZC1wZXJjZW50OiAxMDAlKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgQHN0YXJ0LXBlcmNlbnQgdG9wLCBAZW5kLXBlcmNlbnQgdG9wLCBmcm9tKEBzdGFydC1jb2xvciksIHRvKEBlbmQtY29sb3IpKTsgLy8gU2FmYXJpIDQrLCBDaHJvbWUgMisKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsIGNvbG9yLXN0b3AoQHN0YXJ0LWNvbG9yIEBzdGFydC1wZXJjZW50KSwgY29sb3Itc3RvcChAZW5kLWNvbG9yIEBlbmQtcGVyY2VudCkpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lIDEwKwogICAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQobGVmdCwgQHN0YXJ0LWNvbG9yIEBzdGFydC1wZXJjZW50LCBAZW5kLWNvbG9yIEBlbmQtcGVyY2VudCk7IC8vIEZGIDMuNisKICAgIGJhY2tncm91bmQtaW1hZ2U6ICBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIEBzdGFydC1jb2xvciBAc3RhcnQtcGVyY2VudCwgQGVuZC1jb2xvciBAZW5kLXBlcmNlbnQpOyAvLyBTdGFuZGFyZCwgSUUxMAogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgZmlsdGVyOiBlKCUoInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSclZCcsIGVuZENvbG9yc3RyPSclZCcsIEdyYWRpZW50VHlwZT0xKSIsYXJnYihAc3RhcnQtY29sb3IpLGFyZ2IoQGVuZC1jb2xvcikpKTsgLy8gSUU5IGFuZCBkb3duCiAgfQoKICAvLyBWZXJ0aWNhbCBncmFkaWVudCwgZnJvbSB0b3AgdG8gYm90dG9tCiAgLy8KICAvLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLgogIC8vIENvbG9yIHN0b3BzIGFyZSBub3QgYXZhaWxhYmxlIGluIElFOSBhbmQgYmVsb3cuCiAgLnZlcnRpY2FsKEBzdGFydC1jb2xvcjogIzU1NTsgQGVuZC1jb2xvcjogIzMzMzsgQHN0YXJ0LXBlcmNlbnQ6IDAlOyBAZW5kLXBlcmNlbnQ6IDEwMCUpIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IEBzdGFydC1wZXJjZW50LCBsZWZ0IEBlbmQtcGVyY2VudCwgZnJvbShAc3RhcnQtY29sb3IpLCB0byhAZW5kLWNvbG9yKSk7IC8vIFNhZmFyaSA0KywgQ2hyb21lIDIrCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIEBzdGFydC1jb2xvciwgQHN0YXJ0LXBlcmNlbnQsIEBlbmQtY29sb3IsIEBlbmQtcGVyY2VudCk7IC8vIFNhZmFyaSA1LjErLCBDaHJvbWUgMTArCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAgLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCBAc3RhcnQtY29sb3IgQHN0YXJ0LXBlcmNlbnQsIEBlbmQtY29sb3IgQGVuZC1wZXJjZW50KTsgLy8gRkYgMy42KwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgQHN0YXJ0LWNvbG9yIEBzdGFydC1wZXJjZW50LCBAZW5kLWNvbG9yIEBlbmQtcGVyY2VudCk7IC8vIFN0YW5kYXJkLCBJRTEwCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBmaWx0ZXI6IGUoJSgicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyVkJywgZW5kQ29sb3JzdHI9JyVkJywgR3JhZGllbnRUeXBlPTApIixhcmdiKEBzdGFydC1jb2xvciksYXJnYihAZW5kLWNvbG9yKSkpOyAvLyBJRTkgYW5kIGRvd24KICB9CgogIC5kaXJlY3Rpb25hbChAc3RhcnQtY29sb3I6ICM1NTU7IEBlbmQtY29sb3I6ICMzMzM7IEBkZWc6IDQ1ZGVnKSB7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChAZGVnLCBAc3RhcnQtY29sb3IsIEBlbmQtY29sb3IpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lIDEwKwogICAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoQGRlZywgQHN0YXJ0LWNvbG9yLCBAZW5kLWNvbG9yKTsgLy8gRkYgMy42KwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KEBkZWcsIEBzdGFydC1jb2xvciwgQGVuZC1jb2xvcik7IC8vIFN0YW5kYXJkLCBJRTEwCiAgfQogIC5ob3Jpem9udGFsLXRocmVlLWNvbG9ycyhAc3RhcnQtY29sb3I6ICMwMGIzZWU7IEBtaWQtY29sb3I6ICM3YTQzYjY7IEBjb2xvci1zdG9wOiA1MCU7IEBlbmQtY29sb3I6ICNjMzMyNWYpIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGVmdCwgbGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbShAc3RhcnQtY29sb3IpLCBjb2xvci1zdG9wKEBjb2xvci1zdG9wLCBAbWlkLWNvbG9yKSwgdG8oQGVuZC1jb2xvcikpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgQHN0YXJ0LWNvbG9yLCBAbWlkLWNvbG9yIEBjb2xvci1zdG9wLCBAZW5kLWNvbG9yKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KGxlZnQsIEBzdGFydC1jb2xvciwgQG1pZC1jb2xvciBAY29sb3Itc3RvcCwgQGVuZC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIEBzdGFydC1jb2xvciwgQG1pZC1jb2xvciBAY29sb3Itc3RvcCwgQGVuZC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgZmlsdGVyOiBlKCUoInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSclZCcsIGVuZENvbG9yc3RyPSclZCcsIEdyYWRpZW50VHlwZT0xKSIsYXJnYihAc3RhcnQtY29sb3IpLGFyZ2IoQGVuZC1jb2xvcikpKTsgLy8gSUU5IGFuZCBkb3duLCBnZXRzIG5vIGNvbG9yLXN0b3AgYXQgYWxsIGZvciBwcm9wZXIgZmFsbGJhY2sKICB9CiAgLnZlcnRpY2FsLXRocmVlLWNvbG9ycyhAc3RhcnQtY29sb3I6ICMwMGIzZWU7IEBtaWQtY29sb3I6ICM3YTQzYjY7IEBjb2xvci1zdG9wOiA1MCU7IEBlbmQtY29sb3I6ICNjMzMyNWYpIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbShAc3RhcnQtY29sb3IpLCBjb2xvci1zdG9wKEBjb2xvci1zdG9wLCBAbWlkLWNvbG9yKSwgdG8oQGVuZC1jb2xvcikpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoQHN0YXJ0LWNvbG9yLCBAbWlkLWNvbG9yIEBjb2xvci1zdG9wLCBAZW5kLWNvbG9yKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgQHN0YXJ0LWNvbG9yLCBAbWlkLWNvbG9yIEBjb2xvci1zdG9wLCBAZW5kLWNvbG9yKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChAc3RhcnQtY29sb3IsIEBtaWQtY29sb3IgQGNvbG9yLXN0b3AsIEBlbmQtY29sb3IpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJWQnLCBlbmRDb2xvcnN0cj0nJWQnLCBHcmFkaWVudFR5cGU9MCkiLGFyZ2IoQHN0YXJ0LWNvbG9yKSxhcmdiKEBlbmQtY29sb3IpKSk7IC8vIElFOSBhbmQgZG93biwgZ2V0cyBubyBjb2xvci1zdG9wIGF0IGFsbCBmb3IgcHJvcGVyIGZhbGxiYWNrCiAgfQogIC5yYWRpYWwoQGlubmVyLWNvbG9yOiAjNTU1OyBAb3V0ZXItY29sb3I6ICMzMzMpIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQocmFkaWFsLCBjZW50ZXIgY2VudGVyLCAwLCBjZW50ZXIgY2VudGVyLCA0NjAsIGZyb20oQGlubmVyLWNvbG9yKSwgdG8oQG91dGVyLWNvbG9yKSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChjaXJjbGUsIEBpbm5lci1jb2xvciwgQG91dGVyLWNvbG9yKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgQGlubmVyLWNvbG9yLCBAb3V0ZXItY29sb3IpOwogICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgQGlubmVyLWNvbG9yLCBAb3V0ZXItY29sb3IpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICB9CiAgLnN0cmlwZWQoQGNvbG9yOiAjNTU1OyBAYW5nbGU6IDQ1ZGVnKSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsIGNvbG9yLXN0b3AoLjI1LCByZ2JhKDI1NSwyNTUsMjU1LC4xNSkpLCBjb2xvci1zdG9wKC4yNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjUsIHJnYmEoMjU1LDI1NSwyNTUsLjE1KSksIGNvbG9yLXN0b3AoLjc1LCByZ2JhKDI1NSwyNTUsMjU1LC4xNSkpLCBjb2xvci1zdG9wKC43NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoQGFuZ2xlLCByZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSwgcmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudChAYW5nbGUsIHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLCByZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChAYW5nbGUsIHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLCByZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICB9Cn0KCi8vIFJlc2V0IGZpbHRlcnMgZm9yIElFCi8vCi8vIFdoZW4geW91IG5lZWQgdG8gcmVtb3ZlIGEgZ3JhZGllbnQgYmFja2dyb3VuZCwgZG8gbm90IGZvcmdldCB0byB1c2UgdGhpcyB0byByZXNldAovLyB0aGUgSUUgZmlsdGVyIGZvciBJRTkgYW5kIGJlbG93LgoucmVzZXQtZmlsdGVyKCkgewogIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKSIpKTsKfQoKCgovLyBSZXRpbmEgaW1hZ2VzCi8vCi8vIFNob3J0IHJldGluYSBtaXhpbiBmb3Igc2V0dGluZyBiYWNrZ3JvdW5kLWltYWdlIGFuZCAtc2l6ZQoKLmltZy1yZXRpbmEoQGZpbGUtMXg7IEBmaWxlLTJ4OyBAd2lkdGgtMXg7IEBoZWlnaHQtMXgpIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIkB7ZmlsZS0xeH0iKTsKCiAgQG1lZGlhCiAgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLAogIG9ubHkgc2NyZWVuIGFuZCAoICAgbWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwKICBvbmx5IHNjcmVlbiBhbmQgKCAgICAgLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogMi8xKSwKICBvbmx5IHNjcmVlbiBhbmQgKCAgICAgICAgbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksCiAgb25seSBzY3JlZW4gYW5kICggICAgICAgICAgICAgICAgbWluLXJlc29sdXRpb246IDE5MmRwaSksCiAgb25seSBzY3JlZW4gYW5kICggICAgICAgICAgICAgICAgbWluLXJlc29sdXRpb246IDJkcHB4KSB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIkB7ZmlsZS0yeH0iKTsKICAgIGJhY2tncm91bmQtc2l6ZTogQHdpZHRoLTF4IEBoZWlnaHQtMXg7CiAgfQp9CgoKLy8gUmVzcG9uc2l2ZSBpbWFnZQovLwovLyBLZWVwIGltYWdlcyBmcm9tIHNjYWxpbmcgYmV5b25kIHRoZSB3aWR0aCBvZiB0aGVpciBwYXJlbnRzLgoKLmltZy1yZXNwb25zaXZlKEBkaXNwbGF5OiBibG9jazspIHsKICBkaXNwbGF5OiBAZGlzcGxheTsKICBtYXgtd2lkdGg6IDEwMCU7IC8vIFBhcnQgMTogU2V0IGEgbWF4aW11bSByZWxhdGl2ZSB0byB0aGUgcGFyZW50CiAgaGVpZ2h0OiBhdXRvOyAvLyBQYXJ0IDI6IFNjYWxlIHRoZSBoZWlnaHQgYWNjb3JkaW5nIHRvIHRoZSB3aWR0aCwgb3RoZXJ3aXNlIHlvdSBnZXQgc3RyZXRjaGluZwp9CgoKLy8gQ09NUE9ORU5UIE1JWElOUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gSG9yaXpvbnRhbCBkaXZpZGVycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIERpdmlkZXJzIChiYXNpY2FsbHkgYW4gaHIpIHdpdGhpbiBkcm9wZG93bnMgYW5kIG5hdiBsaXN0cwoubmF2LWRpdmlkZXIoQGNvbG9yOiAjZTVlNWU1KSB7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiAoKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpIC0gMSkgMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKfQoKLy8gUGFuZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnBhbmVsLXZhcmlhbnQoQGJvcmRlcjsgQGhlYWRpbmctdGV4dC1jb2xvcjsgQGhlYWRpbmctYmctY29sb3I7IEBoZWFkaW5nLWJvcmRlcjspIHsKICBib3JkZXItY29sb3I6IEBib3JkZXI7CiAgJiA+IC5wYW5lbC1oZWFkaW5nIHsKICAgIGNvbG9yOiBAaGVhZGluZy10ZXh0LWNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGhlYWRpbmctYmctY29sb3I7CiAgICBib3JkZXItY29sb3I6IEBoZWFkaW5nLWJvcmRlcjsKICAgICsgLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5IHsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogQGJvcmRlcjsKICAgIH0KICB9CiAgJiA+IC5wYW5lbC1mb290ZXIgewogICAgKyAucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHkgewogICAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAYm9yZGVyOwogICAgfQogIH0KfQoKLy8gQWxlcnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmFsZXJ0LXZhcmlhbnQoQGJhY2tncm91bmQ7IEBib3JkZXI7IEB0ZXh0LWNvbG9yKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJhY2tncm91bmQ7CiAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyOwogIGNvbG9yOiBAdGV4dC1jb2xvcjsKICBociB7CiAgICBib3JkZXItdG9wLWNvbG9yOiBkYXJrZW4oQGJvcmRlciwgNSUpOwogIH0KICAuYWxlcnQtbGluayB7CiAgICBjb2xvcjogZGFya2VuKEB0ZXh0LWNvbG9yLCAxMCUpOwogIH0KfQoKLy8gVGFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnRhYmxlLXJvdy12YXJpYW50KEBzdGF0ZTsgQGJhY2tncm91bmQ7IEBib3JkZXIpIHsKICAvLyBFeGFjdCBzZWxlY3RvcnMgYmVsb3cgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgYC50YWJsZS1zdHJpcGVkYCBhbmQgcHJldmVudAogIC8vIGluaGVyaXRhbmNlIHRvIG5lc3RlZCB0YWJsZXMuCiAgLnRhYmxlID4gdGhlYWQgPiB0ciwKICAudGFibGUgPiB0Ym9keSA+IHRyLAogIC50YWJsZSA+IHRmb290ID4gdHIgewogICAgPiB0ZC5Ae3N0YXRlfSwKICAgID4gdGguQHtzdGF0ZX0sCiAgICAmLkB7c3RhdGV9ID4gdGQsCiAgICAmLkB7c3RhdGV9ID4gdGggewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmFja2dyb3VuZDsKICAgICAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyOwogICAgfQogIH0KCiAgLy8gSG92ZXIgc3RhdGVzIGZvciBgLnRhYmxlLWhvdmVyYAogIC8vIE5vdGU6IHRoaXMgaXMgbm90IGF2YWlsYWJsZSBmb3IgY2VsbHMgb3Igcm93cyB3aXRoaW4gYHRoZWFkYCBvciBgdGZvb3RgLgogIC50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgewogICAgPiB0ZC5Ae3N0YXRlfTpob3ZlciwKICAgID4gdGguQHtzdGF0ZX06aG92ZXIsCiAgICAmLkB7c3RhdGV9OmhvdmVyID4gdGQgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGJhY2tncm91bmQsIDUlKTsKICAgICAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQGJvcmRlciwgNSUpOwogICAgfQogIH0KfQoKLy8gQnV0dG9uIHZhcmlhbnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRWFzaWx5IHB1bXAgb3V0IGRlZmF1bHQgc3R5bGVzLCBhcyB3ZWxsIGFzIDpob3ZlciwgOmZvY3VzLCA6YWN0aXZlLAovLyBhbmQgZGlzYWJsZWQgb3B0aW9ucyBmb3IgYWxsIGJ1dHRvbnMKLmJ1dHRvbi12YXJpYW50KEBjb2xvcjsgQGJhY2tncm91bmQ7IEBib3JkZXIpIHsKICBjb2xvcjogQGNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kOwogIGJvcmRlci1jb2xvcjogQGJvcmRlcjsKCiAgJjpob3ZlciwKICAmOmZvY3VzLAogICY6YWN0aXZlLAogICYuYWN0aXZlLAogIC5vcGVuIC5kcm9wZG93bi10b2dnbGUmIHsKICAgIGNvbG9yOiBAY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oQGJhY2tncm91bmQsIDglKTsKICAgICAgICBib3JkZXItY29sb3I6IGRhcmtlbihAYm9yZGVyLCAxMiUpOwogIH0KICAmOmFjdGl2ZSwKICAmLmFjdGl2ZSwKICAub3BlbiAuZHJvcGRvd24tdG9nZ2xlJiB7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIH0KICAmLmRpc2FibGVkLAogICZbZGlzYWJsZWRdLAogIGZpZWxkc2V0W2Rpc2FibGVkXSAmIHsKICAgICYsCiAgICAmOmhvdmVyLAogICAgJjpmb2N1cywKICAgICY6YWN0aXZlLAogICAgJi5hY3RpdmUgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmFja2dyb3VuZDsKICAgICAgICAgIGJvcmRlci1jb2xvcjogQGJvcmRlcgogICAgfQogIH0KfQoKLy8gQnV0dG9uIHNpemVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLmJ1dHRvbi1zaXplKEBwYWRkaW5nLXZlcnRpY2FsOyBAcGFkZGluZy1ob3Jpem9udGFsOyBAZm9udC1zaXplOyBAbGluZS1oZWlnaHQ7IEBib3JkZXItcmFkaXVzKSB7CiAgcGFkZGluZzogQHBhZGRpbmctdmVydGljYWwgQHBhZGRpbmctaG9yaXpvbnRhbDsKICBmb250LXNpemU6IEBmb250LXNpemU7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1czsKfQoKLy8gUGFnaW5hdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5wYWdpbmF0aW9uLXNpemUoQHBhZGRpbmctdmVydGljYWw7IEBwYWRkaW5nLWhvcml6b250YWw7IEBmb250LXNpemU7IEBib3JkZXItcmFkaXVzKSB7CiAgPiBsaSB7CiAgICA+IGEsCiAgICA+IHNwYW4gewogICAgICBwYWRkaW5nOiBAcGFkZGluZy12ZXJ0aWNhbCBAcGFkZGluZy1ob3Jpem9udGFsOwogICAgICBmb250LXNpemU6IEBmb250LXNpemU7CiAgICB9CiAgICAmOmZpcnN0LWNoaWxkIHsKICAgICAgPiBhLAogICAgICA+IHNwYW4gewogICAgICAgIC5ib3JkZXItbGVmdC1yYWRpdXMoQGJvcmRlci1yYWRpdXMpOwogICAgICB9CiAgICB9CiAgICAmOmxhc3QtY2hpbGQgewogICAgICA+IGEsCiAgICAgID4gc3BhbiB7CiAgICAgICAgLmJvcmRlci1yaWdodC1yYWRpdXMoQGJvcmRlci1yYWRpdXMpOwogICAgICB9CiAgICB9CiAgfQp9CgovLyBMYWJlbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoubGFiZWwtdmFyaWFudChAY29sb3IpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAY29sb3I7CiAgJltocmVmXSB7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbihAY29sb3IsIDEwJSk7CiAgICB9CiAgfQp9CgovLyBOYXZiYXIgdmVydGljYWwgYWxpZ24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBWZXJ0aWNhbGx5IGNlbnRlciBlbGVtZW50cyBpbiB0aGUgbmF2YmFyLgovLyBFeGFtcGxlOiBhbiBlbGVtZW50IGhhcyBhIGhlaWdodCBvZiAzMHB4LCBzbyB3cml0ZSBvdXQgYC5uYXZiYXItdmVydGljYWwtYWxpZ24oMzBweCk7YCB0byBjYWxjdWxhdGUgdGhlIGFwcHJvcHJpYXRlIHRvcCBtYXJnaW4uCi5uYXZiYXItdmVydGljYWwtYWxpZ24oQGVsZW1lbnQtaGVpZ2h0KSB7CiAgbWFyZ2luLXRvcDogKChAbmF2YmFyLWhlaWdodCAtIEBlbGVtZW50LWhlaWdodCkgLyAyKTsKICBtYXJnaW4tYm90dG9tOiAoKEBuYXZiYXItaGVpZ2h0IC0gQGVsZW1lbnQtaGVpZ2h0KSAvIDIpOwp9CgovLyBQcm9ncmVzcyBiYXJzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnByb2dyZXNzLWJhci12YXJpYW50KEBjb2xvcikgewogIGJhY2tncm91bmQtY29sb3I6IEBjb2xvcjsKICAucHJvZ3Jlc3Mtc3RyaXBlZCAmIHsKICAgICNncmFkaWVudCA+IC5zdHJpcGVkKEBjb2xvcik7CiAgfQp9CgovLyBSZXNwb25zaXZlIHV0aWxpdGllcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE1vcmUgZWFzaWx5IGluY2x1ZGUgYWxsIHRoZSBzdGF0ZXMgZm9yIHJlc3BvbnNpdmUtdXRpbGl0aWVzLmxlc3MuCi5yZXNwb25zaXZlLXZpc2liaWxpdHkoKSB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB0ciYgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfQogIHRoJiwKICB0ZCYgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH0KfQoKLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCkgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB0ciYgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICB0aCYsCiAgdGQmIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9Cn0KCi8vIEdyaWQgU3lzdGVtCi8vIC0tLS0tLS0tLS0tCgovLyBDZW50ZXJlZCBjb250YWluZXIgZWxlbWVudAouY29udGFpbmVyLWZpeGVkKCkgewogIG1hcmdpbi1yaWdodDogYXV0bzsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBwYWRkaW5nLWxlZnQ6ICAoQGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBncmlkLWd1dHRlci13aWR0aCAvIDIpOwogIC5jbGVhcmZpeCgpOwp9CgovLyBDcmVhdGVzIGEgd3JhcHBlciBmb3IgYSBzZXJpZXMgb2YgY29sdW1ucwoubWFrZS1yb3coQGd1dHRlcjogQGdyaWQtZ3V0dGVyLXdpZHRoKSB7CiAgbWFyZ2luLWxlZnQ6ICAoQGd1dHRlciAvIC0yKTsKICBtYXJnaW4tcmlnaHQ6IChAZ3V0dGVyIC8gLTIpOwogIC5jbGVhcmZpeCgpOwp9CgovLyBHZW5lcmF0ZSB0aGUgZXh0cmEgc21hbGwgY29sdW1ucwoubWFrZS14cy1jb2x1bW4oQGNvbHVtbnM7IEBndXR0ZXI6IEBncmlkLWd1dHRlci13aWR0aCkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbG9hdDogbGVmdDsKICB3aWR0aDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gY29sbGFwc2luZyB3aGVuIGVtcHR5CiAgbWluLWhlaWdodDogMXB4OwogIC8vIElubmVyIGd1dHRlciB2aWEgcGFkZGluZwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKfQoKLy8gR2VuZXJhdGUgdGhlIHNtYWxsIGNvbHVtbnMKLm1ha2Utc20tY29sdW1uKEBjb2x1bW5zOyBAZ3V0dGVyOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gY29sbGFwc2luZyB3aGVuIGVtcHR5CiAgbWluLWhlaWdodDogMXB4OwogIC8vIElubmVyIGd1dHRlciB2aWEgcGFkZGluZwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKCiAgLy8gQ2FsY3VsYXRlIHdpZHRoIGJhc2VkIG9uIG51bWJlciBvZiBjb2x1bW5zIGF2YWlsYWJsZQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtKSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KCi8vIEdlbmVyYXRlIHRoZSBzbWFsbCBjb2x1bW4gb2Zmc2V0cwoubWFrZS1zbS1jb2x1bW4tb2Zmc2V0KEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20pIHsKICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2Utc20tY29sdW1uLXB1c2goQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbSkgewogICAgbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLXNtLWNvbHVtbi1wdWxsKEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20pIHsKICAgIHJpZ2h0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KCi8vIEdlbmVyYXRlIHRoZSBtZWRpdW0gY29sdW1ucwoubWFrZS1tZC1jb2x1bW4oQGNvbHVtbnM7IEBndXR0ZXI6IEBncmlkLWd1dHRlci13aWR0aCkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBjb2xsYXBzaW5nIHdoZW4gZW1wdHkKICBtaW4taGVpZ2h0OiAxcHg7CiAgLy8gSW5uZXIgZ3V0dGVyIHZpYSBwYWRkaW5nCiAgcGFkZGluZy1sZWZ0OiAgKEBndXR0ZXIgLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiAoQGd1dHRlciAvIDIpOwoKICAvLyBDYWxjdWxhdGUgd2lkdGggYmFzZWQgb24gbnVtYmVyIG9mIGNvbHVtbnMgYXZhaWxhYmxlCiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQpIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgd2lkdGg6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoKLy8gR2VuZXJhdGUgdGhlIGxhcmdlIGNvbHVtbiBvZmZzZXRzCi5tYWtlLW1kLWNvbHVtbi1vZmZzZXQoQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZCkgewogICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoubWFrZS1tZC1jb2x1bW4tcHVzaChAY29sdW1ucykgewogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kKSB7CiAgICBsZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2UtbWQtY29sdW1uLXB1bGwoQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZCkgewogICAgcmlnaHQ6IHBlcmNlbnRhZ2UoKEBjb2x1bW5zIC8gQGdyaWQtY29sdW1ucykpOwogIH0KfQoKLy8gR2VuZXJhdGUgdGhlIGxhcmdlIGNvbHVtbnMKLm1ha2UtbGctY29sdW1uKEBjb2x1bW5zOyBAZ3V0dGVyOiBAZ3JpZC1ndXR0ZXItd2lkdGgpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gY29sbGFwc2luZyB3aGVuIGVtcHR5CiAgbWluLWhlaWdodDogMXB4OwogIC8vIElubmVyIGd1dHRlciB2aWEgcGFkZGluZwogIHBhZGRpbmctbGVmdDogIChAZ3V0dGVyIC8gMik7CiAgcGFkZGluZy1yaWdodDogKEBndXR0ZXIgLyAyKTsKCiAgLy8gQ2FsY3VsYXRlIHdpZHRoIGJhc2VkIG9uIG51bWJlciBvZiBjb2x1bW5zIGF2YWlsYWJsZQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnKSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KCi8vIEdlbmVyYXRlIHRoZSBsYXJnZSBjb2x1bW4gb2Zmc2V0cwoubWFrZS1sZy1jb2x1bW4tb2Zmc2V0KEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGcpIHsKICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KLm1ha2UtbGctY29sdW1uLXB1c2goQGNvbHVtbnMpIHsKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZykgewogICAgbGVmdDogcGVyY2VudGFnZSgoQGNvbHVtbnMgLyBAZ3JpZC1jb2x1bW5zKSk7CiAgfQp9Ci5tYWtlLWxnLWNvbHVtbi1wdWxsKEBjb2x1bW5zKSB7CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGcpIHsKICAgIHJpZ2h0OiBwZXJjZW50YWdlKChAY29sdW1ucyAvIEBncmlkLWNvbHVtbnMpKTsKICB9Cn0KCgovLyBGb3JtIHZhbGlkYXRpb24gc3RhdGVzCi8vCi8vIFVzZWQgaW4gZm9ybXMubGVzcyB0byBnZW5lcmF0ZSB0aGUgZm9ybSB2YWxpZGF0aW9uIENTUyBmb3Igd2FybmluZ3MsIGVycm9ycywKLy8gYW5kIHN1Y2Nlc3Nlcy4KCi5mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbihAdGV4dC1jb2xvcjogIzU1NTsgQGJvcmRlci1jb2xvcjogI2NjYzsgQGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjUpIHsKICAvLyBDb2xvciB0aGUgbGFiZWwgYW5kIGhlbHAgdGV4dAogIC5oZWxwLWJsb2NrLAogIC5jb250cm9sLWxhYmVsIHsKICAgIGNvbG9yOiBAdGV4dC1jb2xvcjsKICB9CiAgLy8gU2V0IHRoZSBib3JkZXIgYW5kIGJveCBzaGFkb3cgb24gc3BlY2lmaWMgaW5wdXRzIHRvIG1hdGNoCiAgLmZvcm0tY29udHJvbCB7CiAgICBib3JkZXItY29sb3I6IEBib3JkZXItY29sb3I7CiAgICAuYm94LXNoYWRvdyhpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSk7IC8vIFJlZGVjbGFyZSBzbyB0cmFuc2l0aW9ucyB3b3JrCiAgICAmOmZvY3VzIHsKICAgICAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQGJvcmRlci1jb2xvciwgMTAlKTsKICAgICAgQHNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksIDAgMCA2cHggbGlnaHRlbihAYm9yZGVyLWNvbG9yLCAyMCUpOwogICAgICAuYm94LXNoYWRvdyhAc2hhZG93KTsKICAgIH0KICB9CiAgLy8gU2V0IHZhbGlkYXRpb24gc3RhdGVzIGFsc28gZm9yIGFkZG9ucwogIC5pbnB1dC1ncm91cC1hZGRvbiB7CiAgICBjb2xvcjogQHRleHQtY29sb3I7CiAgICBib3JkZXItY29sb3I6IEBib3JkZXItY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYmFja2dyb3VuZC1jb2xvcjsKICB9Cn0KCi8vIEZvcm0gY29udHJvbCBmb2N1cyBzdGF0ZQovLwovLyBHZW5lcmF0ZSBhIGN1c3RvbWl6ZWQgZm9jdXMgc3RhdGUgYW5kIGZvciBhbnkgaW5wdXQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yLAovLyB3aGljaCBkZWZhdWx0cyB0byB0aGUgYEBpbnB1dC1mb2N1cy1ib3JkZXJgIHZhcmlhYmxlLgovLwovLyBXZSBoaWdobHkgZW5jb3VyYWdlIHlvdSB0byBub3QgY3VzdG9taXplIHRoZSBkZWZhdWx0IHZhbHVlLCBidXQgaW5zdGVhZCB1c2UKLy8gdGhpcyB0byB0d2VhayBjb2xvcnMgb24gYW4gYXMtbmVlZGVkIGJhc2lzLiBUaGlzIGFlc3RoZXRpYyBjaGFuZ2UgaXMgYmFzZWQgb24KLy8gV2ViS2l0J3MgZGVmYXVsdCBzdHlsZXMsIGJ1dCBhcHBsaWNhYmxlIHRvIGEgd2lkZXIgcmFuZ2Ugb2YgYnJvd3NlcnMuIEl0cwovLyB1c2FiaWxpdHkgYW5kIGFjY2Vzc2liaWxpdHkgc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3VudCB3aXRoIGFueSBjaGFuZ2UuCi8vCi8vIEV4YW1wbGUgdXNhZ2U6IGNoYW5nZSB0aGUgZGVmYXVsdCBibHVlIGJvcmRlciBhbmQgc2hhZG93IHRvIHdoaXRlIGZvciBiZXR0ZXIKLy8gY29udHJhc3QgYWdhaW5zdCBhIGRhcmsgZ3JheSBiYWNrZ3JvdW5kLgoKLmZvcm0tY29udHJvbC1mb2N1cyhAY29sb3I6IEBpbnB1dC1ib3JkZXItZm9jdXMpIHsKICBAY29sb3ItcmdiYTogcmdiYShyZWQoQGNvbG9yKSwgZ3JlZW4oQGNvbG9yKSwgYmx1ZShAY29sb3IpLCAuNik7CiAgJjpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6IEBjb2xvcjsKICAgIG91dGxpbmU6IDA7CiAgICAuYm94LXNoYWRvdyh+Imluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgOHB4IEB7Y29sb3ItcmdiYX0iKTsKICB9Cn0KCi8vIEZvcm0gY29udHJvbCBzaXppbmcKLy8KLy8gUmVsYXRpdmUgdGV4dCBzaXplLCBwYWRkaW5nLCBhbmQgYm9yZGVyLXJhZGlpIGNoYW5nZXMgZm9yIGZvcm0gY29udHJvbHMuIEZvcgovLyBob3Jpem9udGFsIHNpemluZywgd3JhcCBjb250cm9scyBpbiB0aGUgcHJlZGVmaW5lZCBncmlkIGNsYXNzZXMuIGA8c2VsZWN0PmAKLy8gZWxlbWVudCBnZXRzIHNwZWNpYWwgbG92ZSBiZWNhdXNlIGl0J3Mgc3BlY2lhbCwgYW5kIHRoYXQncyBhIGZhY3QhCgouaW5wdXQtc2l6ZShAaW5wdXQtaGVpZ2h0OyBAcGFkZGluZy12ZXJ0aWNhbDsgQHBhZGRpbmctaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZTsgQGxpbmUtaGVpZ2h0OyBAYm9yZGVyLXJhZGl1cykgewogIGhlaWdodDogQGlucHV0LWhlaWdodDsKICBwYWRkaW5nOiBAcGFkZGluZy12ZXJ0aWNhbCBAcGFkZGluZy1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0OwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzOwoKICBzZWxlY3QmIHsKICAgIGhlaWdodDogQGlucHV0LWhlaWdodDsKICAgIGxpbmUtaGVpZ2h0OiBAaW5wdXQtaGVpZ2h0OwogIH0KCiAgdGV4dGFyZWEmIHsKICAgIGhlaWdodDogYXV0bzsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/modals.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTW9kYWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyAubW9kYWwtb3BlbiAgICAgIC0gYm9keSBjbGFzcyBmb3Iga2lsbGluZyB0aGUgc2Nyb2xsCi8vIC5tb2RhbCAgICAgICAgICAgLSBjb250YWluZXIgdG8gc2Nyb2xsIHdpdGhpbgovLyAubW9kYWwtZGlhbG9nICAgIC0gcG9zaXRpb25pbmcgc2hlbGwgZm9yIHRoZSBhY3R1YWwgbW9kYWwKLy8gLm1vZGFsLWNvbnRlbnQgICAtIGFjdHVhbCBtb2RhbCB3LyBiZyBhbmQgY29ybmVycyBhbmQgc2hpdAoKLy8gS2lsbCB0aGUgc2Nyb2xsIG9uIHRoZSBib2R5Ci5tb2RhbC1vcGVuIHsKICBvdmVyZmxvdzogaGlkZGVuOwoKCiAgLy8gQWNjb3VudCBmb3IgaGlkaW5nIG9mIHNjcm9sbGJhcgogIGJvZHkmLAogIC5uYXZiYXItZml4ZWQtdG9wLAogIC5uYXZiYXItZml4ZWQtYm90dG9tIHsKICAgIG1hcmdpbi1yaWdodDogMTVweAogIH0KfQoKLy8gQ29udGFpbmVyIHRoYXQgdGhlIG1vZGFsIHNjcm9sbHMgd2l0aGluCi5tb2RhbCB7CiAgZGlzcGxheTogbm9uZTsKICBvdmVyZmxvdzogYXV0bzsKICBvdmVyZmxvdy15OiBzY3JvbGw7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiBAemluZGV4LW1vZGFsLWJhY2tncm91bmQ7CgogIC8vIFdoZW4gZmFkaW5nIGluIHRoZSBtb2RhbCwgYW5pbWF0ZSBpdCB0byBzbGlkZSBkb3duCiAgJi5mYWRlIC5tb2RhbC1kaWFsb2cgewogICAgLnRyYW5zbGF0ZSgwLCAtMjUlKTsKICAgIC50cmFuc2l0aW9uLXRyYW5zZm9ybSh+IjAuM3MgZWFzZS1vdXQiKTsKICB9CiAgJi5pbiAubW9kYWwtZGlhbG9nIHsgLnRyYW5zbGF0ZSgwLCAwKX0KfQoKLy8gU2hlbGwgZGl2IHRvIHBvc2l0aW9uIHRoZSBtb2RhbCB3aXRoIGJvdHRvbSBwYWRkaW5nCi5tb2RhbC1kaWFsb2cgewogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKICB3aWR0aDogYXV0bzsKICBwYWRkaW5nOiAxMHB4OwogIHotaW5kZXg6IChAemluZGV4LW1vZGFsLWJhY2tncm91bmQgKyAxMCk7Cn0KCi8vIEFjdHVhbCBtb2RhbAoubW9kYWwtY29udGVudCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJhY2tncm91bmQtY29sb3I6IEBtb2RhbC1jb250ZW50LWJnOwogIGJvcmRlcjogMXB4IHNvbGlkIEBtb2RhbC1jb250ZW50LWZhbGxiYWNrLWJvcmRlci1jb2xvcjsgLy9vbGQgYnJvd3NlcnMgZmFsbGJhY2sgKGllOCBldGMpCiAgYm9yZGVyOiAxcHggc29saWQgQG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yOwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWxhcmdlOwogIC5ib3gtc2hhZG93KDAgM3B4IDlweCByZ2JhKDAsMCwwLC41KSk7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAvLyBSZW1vdmUgZm9jdXMgb3V0bGluZSBmcm9tIG9wZW5lZCBtb2RhbAogIG91dGxpbmU6IG5vbmU7Cn0KCi8vIE1vZGFsIGJhY2tncm91bmQKLm1vZGFsLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IChAemluZGV4LW1vZGFsLWJhY2tncm91bmQgLSAxMCk7CiAgYmFja2dyb3VuZC1jb2xvcjogQG1vZGFsLWJhY2tkcm9wLWJnOwogIC8vIEZhZGUgZm9yIGJhY2tkcm9wCiAgJi5mYWRlIHsgLm9wYWNpdHkoMCk7IH0KICAmLmluIHsgLm9wYWNpdHkoLjUpOyB9Cn0KCi8vIE1vZGFsIGhlYWRlcgovLyBUb3Agc2VjdGlvbiBvZiB0aGUgbW9kYWwgdy8gdGl0bGUgYW5kIGRpc21pc3MKLm1vZGFsLWhlYWRlciB7CiAgcGFkZGluZzogQG1vZGFsLXRpdGxlLXBhZGRpbmc7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yOwogIG1pbi1oZWlnaHQ6IChAbW9kYWwtdGl0bGUtcGFkZGluZyArIEBtb2RhbC10aXRsZS1saW5lLWhlaWdodCk7Cn0KLy8gQ2xvc2UgaWNvbgoubW9kYWwtaGVhZGVyIC5jbG9zZSB7CiAgbWFyZ2luLXRvcDogLTJweDsKfQoKLy8gVGl0bGUgdGV4dCB3aXRoaW4gaGVhZGVyCi5tb2RhbC10aXRsZSB7CiAgbWFyZ2luOiAwOwogIGxpbmUtaGVpZ2h0OiBAbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQ7Cn0KCi8vIE1vZGFsIGJvZHkKLy8gV2hlcmUgYWxsIG1vZGFsIGNvbnRlbnQgcmVzaWRlcyAoc2libGluZyBvZiAubW9kYWwtaGVhZGVyIGFuZCAubW9kYWwtZm9vdGVyKQoubW9kYWwtYm9keSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmc6IEBtb2RhbC1pbm5lci1wYWRkaW5nOwp9CgovLyBGb290ZXIgKGZvciBhY3Rpb25zKQoubW9kYWwtZm9vdGVyIHsKICBtYXJnaW4tdG9wOiAxNXB4OwogIHBhZGRpbmc6IChAbW9kYWwtaW5uZXItcGFkZGluZyAtIDEpIEBtb2RhbC1pbm5lci1wYWRkaW5nIEBtb2RhbC1pbm5lci1wYWRkaW5nOwogIHRleHQtYWxpZ246IHJpZ2h0OyAvLyByaWdodCBhbGlnbiBidXR0b25zCiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBtb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOwogIC5jbGVhcmZpeCgpOyAvLyBjbGVhciBpdCBpbiBjYXNlIGZvbGtzIHVzZSAucHVsbC0qIGNsYXNzZXMgb24gYnV0dG9ucwoKICAvLyBQcm9wZXJseSBzcGFjZSBvdXQgYnV0dG9ucwogIC5idG4gKyAuYnRuIHsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOyAvLyBhY2NvdW50IGZvciBpbnB1dFt0eXBlPSJzdWJtaXQiXSB3aGljaCBnZXRzIHRoZSBib3R0b20gbWFyZ2luIGxpa2UgYWxsIG90aGVyIGlucHV0cwogIH0KICAvLyBidXQgb3ZlcnJpZGUgdGhhdCBmb3IgYnV0dG9uIGdyb3VwcwogIC5idG4tZ3JvdXAgLmJ0biArIC5idG4gewogICAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgfQogIC8vIGFuZCBvdmVycmlkZSBpdCBmb3IgYmxvY2sgYnV0dG9ucyBhcyB3ZWxsCiAgLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQp9CgovLyBTY2FsZSB1cCB0aGUgbW9kYWwKQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogQHNjcmVlbi10YWJsZXQpIHsKCiAgLm1vZGFsLWRpYWxvZyB7CiAgICBsZWZ0OiA1MCU7CiAgICByaWdodDogYXV0bzsKICAgIHdpZHRoOiA2MDBweDsKICAgIHBhZGRpbmctdG9wOiAzMHB4OwogICAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgfQogIC5tb2RhbC1jb250ZW50IHsKICAgIC5ib3gtc2hhZG93KDAgNXB4IDE1cHggcmdiYSgwLDAsMCwuNSkpOwogIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/navbar.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTmF2YmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIFdyYXBwZXIgYW5kIGJhc2UgY2xhc3MKLy8KLy8gUHJvdmlkZSBhIHN0YXRpYyBuYXZiYXIgZnJvbSB3aGljaCB3ZSBleHBhbmQgdG8gY3JlYXRlIGZ1bGwtd2lkdGgsIGZpeGVkLCBhbmQKLy8gb3RoZXIgbmF2YmFyIHZhcmlhdGlvbnMuCgoubmF2YmFyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogQHppbmRleC1uYXZiYXI7CiAgbWluLWhlaWdodDogQG5hdmJhci1oZWlnaHQ7IC8vIEVuc3VyZSBhIG5hdmJhciBhbHdheXMgc2hvd3MgKGUuZy4sIHdpdGhvdXQgYSAubmF2YmFyLWJyYW5kIGluIGNvbGxhcHNlZCBtb2RlKQogIG1hcmdpbi1ib3R0b206IEBuYXZiYXItbWFyZ2luLWJvdHRvbTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKCiAgLy8gUHJldmVudCBmbG9hdHMgZnJvbSBicmVha2luZyB0aGUgbmF2YmFyCiAgLmNsZWFyZml4KCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBib3JkZXItcmFkaXVzOiBAbmF2YmFyLWJvcmRlci1yYWRpdXM7CiAgfQp9CgoKLy8gTmF2YmFyIGhlYWRpbmcKLy8KLy8gR3JvdXBzIGAubmF2YmFyLWJyYW5kYCBhbmQgYC5uYXZiYXItdG9nZ2xlYCBpbnRvIGEgc2luZ2xlIGNvbXBvbmVudCBmb3IgZWFzeQovLyBzdHlsaW5nIG9mIHJlc3BvbnNpdmUgYXNwZWN0cy4KCi5uYXZiYXItaGVhZGVyIHsKICAuY2xlYXJmaXgoKTsKCiAgQG1lZGlhIChtaW4td2lkdGg6IEBncmlkLWZsb2F0LWJyZWFrcG9pbnQpIHsKICAgIGZsb2F0OiBsZWZ0OwogIH0KfQoKCi8vIE5hdmJhciBjb2xsYXBzZSAoYm9keSkKLy8KLy8gR3JvdXAgeW91ciBuYXZiYXIgY29udGVudCBpbnRvIHRoaXMgZm9yIGVhc3kgY29sbGFwc2luZyBhbmQgZXhwYW5kaW5nIGFjcm9zcwovLyB2YXJpb3VzIGRldmljZSBzaXplcy4gQnkgZGVmYXVsdCwgdGhpcyBjb250ZW50IGlzIGNvbGxhcHNlZCB3aGVuIDw3NjhweCwgYnV0Ci8vIHdpbGwgZXhwYW5kIHBhc3QgdGhhdCBmb3IgYSBob3Jpem9udGFsIGRpc3BsYXkuCi8vCi8vIFRvIHN0YXJ0IChvbiBtb2JpbGUgZGV2aWNlcykgdGhlIG5hdmJhciBsaW5rcywgZm9ybXMsIGFuZCBidXR0b25zIGFyZSBzdGFja2VkCi8vIHZlcnRpY2FsbHkgYW5kIGluY2x1ZGUgYSBgbWF4LWhlaWdodGAgdG8gb3ZlcmZsb3cgaW4gY2FzZSB5b3UgaGF2ZSB0b28gbXVjaAovLyBjb250ZW50IGZvciB0aGUgdXNlcidzIHZpZXdwb3J0LgoKLm5hdmJhci1jb2xsYXBzZSB7CiAgbWF4LWhlaWdodDogMzQwcHg7CiAgb3ZlcmZsb3cteDogdmlzaWJsZTsKICBwYWRkaW5nLXJpZ2h0OiBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBwYWRkaW5nLWxlZnQ6ICBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKTsKICAuY2xlYXJmaXgoKTsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CgogICYuaW4gewogICAgb3ZlcmZsb3cteTogYXV0bzsKICB9CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICB3aWR0aDogYXV0bzsKICAgIGJvcmRlci10b3A6IDA7CiAgICBib3gtc2hhZG93OiBub25lOwoKICAgICYuY29sbGFwc2UgewogICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgcGFkZGluZy1ib3R0b206IDA7IC8vIE92ZXJyaWRlIGRlZmF1bHQgc2V0dGluZwogICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgfQoKICAgICYuaW4gewogICAgICBvdmVyZmxvdy15OiB2aXNpYmxlOwogICAgfQoKICAgIC8vIEFjY291bnQgZm9yIGZpcnN0IGFuZCBsYXN0IGNoaWxkcmVuIHNwYWNpbmcKICAgIC5uYXZiYXItbmF2Lm5hdmJhci1sZWZ0OmZpcnN0LWNoaWxkIHsKICAgICAgbWFyZ2luLWxlZnQ6IC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICAgIH0KICAgIC5uYXZiYXItbmF2Lm5hdmJhci1yaWdodDpsYXN0LWNoaWxkIHsKICAgICAgbWFyZ2luLXJpZ2h0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgICB9CiAgICAubmF2YmFyLXRleHQ6bGFzdC1jaGlsZCB7CiAgICAgIG1hcmdpbi1yaWdodDogMDsKICAgIH0KICB9Cn0KCgovLyBCb3RoIG5hdmJhciBoZWFkZXIgYW5kIGNvbGxhcHNlCi8vCi8vIFdoZW4gYSBjb250YWluZXIgaXMgcHJlc2VudCwgY2hhbmdlIHRoZSBiZWhhdmlvciBvZiB0aGUgaGVhZGVyIGFuZCBjb2xsYXBzZS4KCi5jb250YWluZXIgPiAubmF2YmFyLWhlYWRlciwKLmNvbnRhaW5lciA+IC5uYXZiYXItY29sbGFwc2UgewogIG1hcmdpbi1yaWdodDogLUBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogIG1hcmdpbi1sZWZ0OiAgLUBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwoKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgbWFyZ2luLWxlZnQ6ICAwOwogIH0KfQoKCi8vCi8vIE5hdmJhciBhbGlnbm1lbnQgb3B0aW9ucwovLwovLyBEaXNwbGF5IHRoZSBuYXZiYXIgYWNyb3NzIHRoZSBlbnRpcml0eSBvZiB0aGUgcGFnZSBvciBmaXhlZCBpdCB0byB0aGUgdG9wIG9yCi8vIGJvdHRvbSBvZiB0aGUgcGFnZS4KCi8vIFN0YXRpYyB0b3AgKHVuZml4ZWQsIGJ1dCAxMDAlIHdpZGUpIG5hdmJhcgoubmF2YmFyLXN0YXRpYy10b3AgewogIGJvcmRlci13aWR0aDogMCAwIDFweDsKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KCi8vIEZpeCB0aGUgdG9wL2JvdHRvbSBuYXZiYXJzIHdoZW4gc2NyZWVuIHJlYWwgZXN0YXRlIHN1cHBvcnRzIGl0Ci5uYXZiYXItZml4ZWQtdG9wLAoubmF2YmFyLWZpeGVkLWJvdHRvbSB7CiAgcG9zaXRpb246IGZpeGVkOwogIHJpZ2h0OiAwOwogIGxlZnQ6IDA7CiAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4OwoKICAvLyBVbmRvIHRoZSByb3VuZGVkIGNvcm5lcnMKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KLm5hdmJhci1maXhlZC10b3AgewogIHotaW5kZXg6IEB6aW5kZXgtbmF2YmFyLWZpeGVkOwogIHRvcDogMDsKfQoubmF2YmFyLWZpeGVkLWJvdHRvbSB7CiAgYm90dG9tOiAwOwogIG1hcmdpbi1ib3R0b206IDA7IC8vIG92ZXJyaWRlIC5uYXZiYXIgZGVmYXVsdHMKfQoKCi8vIEJyYW5kL3Byb2plY3QgbmFtZQoKLm5hdmJhci1icmFuZCB7CiAgZmxvYXQ6IGxlZnQ7CiAgcGFkZGluZzogQG5hdmJhci1wYWRkaW5nLXZlcnRpY2FsIEBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogIGZvbnQtc2l6ZTogQGZvbnQtc2l6ZS1sYXJnZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogICY6aG92ZXIsCiAgJjpmb2N1cyB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgfQoKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgLm5hdmJhciA+IC5jb250YWluZXIgJiB7CiAgICAgIG1hcmdpbi1sZWZ0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgICB9CiAgfQp9CgoKLy8gTmF2YmFyIHRvZ2dsZQovLwovLyBDdXN0b20gYnV0dG9uIGZvciB0b2dnbGluZyB0aGUgYC5uYXZiYXItY29sbGFwc2VgLCBwb3dlcmVkIGJ5IHRoZSBjb2xsYXBzZQovLyBKYXZhU2NyaXB0IHBsdWdpbi4KCi5uYXZiYXItdG9nZ2xlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxvYXQ6IHJpZ2h0OwogIG1hcmdpbi1yaWdodDogQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgcGFkZGluZzogOXB4IDEwcHg7CiAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbigzNHB4KTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwoKICAvLyBCYXJzCiAgLmljb24tYmFyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDIycHg7CiAgICBoZWlnaHQ6IDJweDsKICAgIGJvcmRlci1yYWRpdXM6IDFweDsKICB9CiAgLmljb24tYmFyICsgLmljb24tYmFyIHsKICAgIG1hcmdpbi10b3A6IDRweDsKICB9CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoKCi8vIE5hdmJhciBuYXYgbGlua3MKLy8KLy8gQnVpbGRzIG9uIHRvcCBvZiB0aGUgYC5uYXZgIGNvbXBvbmVudHMgd2l0aCBpdCdzIG93biBtb2RpZmllciBjbGFzcyB0byBtYWtlCi8vIHRoZSBuYXYgdGhlIGZ1bGwgaGVpZ2h0IG9mIHRoZSBob3Jpem9udGFsIG5hdiAoYWJvdmUgNzY4cHgpLgoKLm5hdmJhci1uYXYgewogIG1hcmdpbjogKEBuYXZiYXItcGFkZGluZy12ZXJ0aWNhbCAvIDIpIC1AbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKCiAgPiBsaSA+IGEgewogICAgcGFkZGluZy10b3A6ICAgIDEwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgfQoKICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgIC8vIERyb3Bkb3ducyBnZXQgY3VzdG9tIGRpc3BsYXkgd2hlbiBjb2xsYXBzZWQKICAgIC5vcGVuIC5kcm9wZG93bi1tZW51IHsKICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgZmxvYXQ6IG5vbmU7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgICBtYXJnaW4tdG9wOiAwOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyOiAwOwogICAgICBib3gtc2hhZG93OiBub25lOwogICAgICA+IGxpID4gYSwKICAgICAgLmRyb3Bkb3duLWhlYWRlciB7CiAgICAgICAgcGFkZGluZzogNXB4IDE1cHggNXB4IDI1cHg7CiAgICAgIH0KICAgICAgPiBsaSA+IGEgewogICAgICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgICAgICAgJjpob3ZlciwKICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICAvLyBVbmNvbGxhcHNlIHRoZSBuYXYKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW46IDA7CgogICAgPiBsaSB7CiAgICAgIGZsb2F0OiBsZWZ0OwogICAgICA+IGEgewogICAgICAgIHBhZGRpbmctdG9wOiAoKEBuYXZiYXItaGVpZ2h0IC0gQGxpbmUtaGVpZ2h0LWNvbXB1dGVkKSAvIDIpOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAoKEBuYXZiYXItaGVpZ2h0IC0gQGxpbmUtaGVpZ2h0LWNvbXB1dGVkKSAvIDIpOwogICAgICB9CiAgICB9CiAgfQoKfQoKCi8vIENvbXBvbmVudCBhbGlnbm1lbnQKLy8KLy8gUmVwdXJwb3NlIHRoZSBwdWxsIHV0aWxpdGllcyBhcyB0aGVpciBvd24gbmF2YmFyIHV0aWxpdGllcyB0byBhdm9pZCBzcGVjaWZpdHkKLy8gaXNzdWVzIHdpdGggcGFyZW50cyBhbmQgY2hhaW5pbmcuIE9ubHkgZG8gdGhpcyB3aGVuIHRoZSBuYXZiYXIgaXMgdW5jb2xsYXBzZWQKLy8gdGhvdWdoIHNvIHRoYXQgbmF2YmFyIGNvbnRlbnRzIHByb3Blcmx5IHN0YWNrIGFuZCBhbGlnbiBpbiBtb2JpbGUuCgpAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogIC5uYXZiYXItbGVmdCAgeyAucHVsbC1sZWZ0KCk7IH0KICAubmF2YmFyLXJpZ2h0IHsgLnB1bGwtcmlnaHQoKTsgfQp9CgoKLy8gTmF2YmFyIGZvcm0KLy8KLy8gRXh0ZW5zaW9uIG9mIHRoZSBgLmZvcm0taW5saW5lYCB3aXRoIHNvbWUgZXh0cmEgZmxhdm9yIGZvciBvcHRpbXVtIGRpc3BsYXkgaW4KLy8gb3VyIG5hdmJhcnMuCgoubmF2YmFyLWZvcm0gewogIG1hcmdpbi1sZWZ0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgbWFyZ2luLXJpZ2h0OiAtQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgcGFkZGluZzogMTBweCBAbmF2YmFyLXBhZGRpbmctaG9yaXpvbnRhbDsKICBib3JkZXItdG9wOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIEBzaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSksIDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7CiAgLmJveC1zaGFkb3coQHNoYWRvdyk7CgogIC8vIE1peGluIGJlaGF2aW9yIGZvciBvcHRpbXVtIGRpc3BsYXkKICAuZm9ybS1pbmxpbmUoKTsKCiAgLmZvcm0tZ3JvdXAgewogICAgQG1lZGlhIChtYXgtd2lkdGg6IEBzY3JlZW4teHMtbWF4KSB7CiAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIH0KICB9CgogIC8vIFZlcnRpY2FsbHkgY2VudGVyIGluIGV4cGFuZGVkLCBob3Jpem9udGFsIG5hdmJhcgogIC5uYXZiYXItdmVydGljYWwtYWxpZ24oQGlucHV0LWhlaWdodC1iYXNlKTsKCiAgLy8gVW5kbyAxMDAlIHdpZHRoIGZvciBwdWxsIGNsYXNzZXMKICBAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogICAgd2lkdGg6IGF1dG87CiAgICBib3JkZXI6IDA7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIHBhZGRpbmctdG9wOiAwOwogICAgcGFkZGluZy1ib3R0b206IDA7CiAgICAuYm94LXNoYWRvdyhub25lKTsKICB9Cn0KCgovLyBEcm9wZG93biBtZW51cwoKLy8gTWVudSBwb3NpdGlvbiBhbmQgbWVudSBjYXJldHMKLm5hdmJhci1uYXYgPiBsaSA+IC5kcm9wZG93bi1tZW51IHsKICBtYXJnaW4tdG9wOiAwOwogIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKfQovLyBNZW51IHBvc2l0aW9uIGFuZCBtZW51IGNhcmV0IHN1cHBvcnQgZm9yIGRyb3B1cHMgdmlhIGV4dHJhIGRyb3B1cCBjbGFzcwoubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2YmFyLW5hdiA+IGxpID4gLmRyb3Bkb3duLW1lbnUgewogIC5ib3JkZXItYm90dG9tLXJhZGl1cygwKTsKfQoKLy8gUmlnaHQgYWxpZ25lZCBtZW51cyBuZWVkIGFsdCBwb3NpdGlvbgoubmF2YmFyLW5hdi5wdWxsLXJpZ2h0ID4gbGkgPiAuZHJvcGRvd24tbWVudSwKLm5hdmJhci1uYXYgPiBsaSA+IC5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQgewogIGxlZnQ6IGF1dG87CiAgcmlnaHQ6IDA7Cn0KCgovLyBCdXR0b25zIGluIG5hdmJhcnMKLy8KLy8gVmVydGljYWxseSBjZW50ZXIgYSBidXR0b24gd2l0aGluIGEgbmF2YmFyICh3aGVuICpub3QqIGluIGEgZm9ybSkuCgoubmF2YmFyLWJ0biB7CiAgLm5hdmJhci12ZXJ0aWNhbC1hbGlnbihAaW5wdXQtaGVpZ2h0LWJhc2UpOwp9CgoKLy8gVGV4dCBpbiBuYXZiYXJzCi8vCi8vIEFkZCBhIGNsYXNzIHRvIG1ha2UgYW55IGVsZW1lbnQgcHJvcGVybHkgYWxpZ24gaXRzZWxmIHZlcnRpY2FsbHkgd2l0aGluIHRoZSBuYXZiYXJzLgoKLm5hdmJhci10ZXh0IHsKICBmbG9hdDogbGVmdDsKICAubmF2YmFyLXZlcnRpY2FsLWFsaWduKEBsaW5lLWhlaWdodC1jb21wdXRlZCk7CgogIEBtZWRpYSAobWluLXdpZHRoOiBAZ3JpZC1mbG9hdC1icmVha3BvaW50KSB7CiAgICBtYXJnaW4tbGVmdDogQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw7CiAgICBtYXJnaW4tcmlnaHQ6IEBuYXZiYXItcGFkZGluZy1ob3Jpem9udGFsOwogIH0KfQoKLy8gQWx0ZXJuYXRlIG5hdmJhcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIERlZmF1bHQgbmF2YmFyCi5uYXZiYXItZGVmYXVsdCB7CiAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWJnOwogIGJvcmRlci1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWJvcmRlcjsKCiAgLm5hdmJhci1icmFuZCB7CiAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWJyYW5kLWNvbG9yOwogICAgJjpob3ZlciwKICAgICY6Zm9jdXMgewogICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWJyYW5kLWhvdmVyLWNvbG9yOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtYnJhbmQtaG92ZXItYmc7CiAgICB9CiAgfQoKICAubmF2YmFyLXRleHQgewogICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1jb2xvcjsKICB9CgogIC5uYXZiYXItbmF2IHsKICAgID4gbGkgPiBhIHsKICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOwoKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWJnOwogICAgICB9CiAgICB9CiAgICA+IC5hY3RpdmUgPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtYmc7CiAgICAgIH0KICAgIH0KICAgID4gLmRpc2FibGVkID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1kaXNhYmxlZC1jb2xvcjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1kaXNhYmxlZC1iZzsKICAgICAgfQogICAgfQogIH0KCiAgLm5hdmJhci10b2dnbGUgewogICAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzsKICAgIH0KICAgIC5pY29uLWJhciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc7CiAgICB9CiAgfQoKICAubmF2YmFyLWNvbGxhcHNlLAogIC5uYXZiYXItZm9ybSB7CiAgICBib3JkZXItY29sb3I6IGRhcmtlbihAbmF2YmFyLWRlZmF1bHQtYmcsIDclKTsKICB9CgogIC8vIERyb3Bkb3duIG1lbnUgaXRlbXMgYW5kIGNhcmV0cwogIC5uYXZiYXItbmF2IHsKICAgIC8vIENhcmV0IHNob3VsZCBtYXRjaCB0ZXh0IGNvbG9yIG9uIGhvdmVyCiAgICA+IC5kcm9wZG93biA+IGE6aG92ZXIgLmNhcmV0LAogICAgPiAuZHJvcGRvd24gPiBhOmZvY3VzIC5jYXJldCB7CiAgICAgIGJvcmRlci10b3AtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOwogICAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjsKICAgIH0KCiAgICAvLyBSZW1vdmUgYmFja2dyb3VuZCBjb2xvciBmcm9tIG9wZW4gZHJvcGRvd24KICAgID4gLm9wZW4gPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWJnOwogICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I7CiAgICAgICAgLmNhcmV0IHsKICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjsKICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgID4gLmRyb3Bkb3duID4gYSAuY2FyZXQgewogICAgICBib3JkZXItdG9wLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CiAgICB9CgoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgICAvLyBEcm9wZG93bnMgZ2V0IGN1c3RvbSBkaXNwbGF5IHdoZW4gY29sbGFwc2VkCiAgICAgIC5vcGVuIC5kcm9wZG93bi1tZW51IHsKICAgICAgICA+IGxpID4gYSB7CiAgICAgICAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItYmc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgID4gLmFjdGl2ZSA+IGEgewogICAgICAgICAgJiwKICAgICAgICAgICY6aG92ZXIsCiAgICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWJnOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICA+IC5kaXNhYmxlZCA+IGEgewogICAgICAgICAgJiwKICAgICAgICAgICY6aG92ZXIsCiAgICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWRpc2FibGVkLWNvbG9yOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWRlZmF1bHQtbGluay1kaXNhYmxlZC1iZzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CgoKICAvLyBMaW5rcyBpbiBuYXZiYXJzCiAgLy8KICAvLyBBZGQgYSBjbGFzcyB0byBlbnN1cmUgbGlua3Mgb3V0c2lkZSB0aGUgbmF2YmFyIG5hdiBhcmUgY29sb3JlZCBjb3JyZWN0bHkuCgogIC5uYXZiYXItbGluayB7CiAgICBjb2xvcjogQG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I7CiAgICAmOmhvdmVyIHsKICAgICAgY29sb3I6IEBuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOwogICAgfQogIH0KCn0KCi8vIEludmVyc2UgbmF2YmFyCgoubmF2YmFyLWludmVyc2UgewogIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS1iZzsKICBib3JkZXItY29sb3I6IEBuYXZiYXItaW52ZXJzZS1ib3JkZXI7CgogIC5uYXZiYXItYnJhbmQgewogICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1icmFuZC1jb2xvcjsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1icmFuZC1ob3Zlci1jb2xvcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWJyYW5kLWhvdmVyLWJnOwogICAgfQogIH0KCiAgLm5hdmJhci10ZXh0IHsKICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtY29sb3I7CiAgfQoKICAubmF2YmFyLW5hdiB7CiAgICA+IGxpID4gYSB7CiAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1jb2xvcjsKCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1iZzsKICAgICAgfQogICAgfQogICAgPiAuYWN0aXZlID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWJnOwogICAgICB9CiAgICB9CiAgICA+IC5kaXNhYmxlZCA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstZGlzYWJsZWQtYmc7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIERhcmtlbiB0aGUgcmVzcG9uc2l2ZSBuYXYgdG9nZ2xlCiAgLm5hdmJhci10b2dnbGUgewogICAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtdG9nZ2xlLWJvcmRlci1jb2xvcjsKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLXRvZ2dsZS1ob3Zlci1iZzsKICAgIH0KICAgIC5pY29uLWJhciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXZiYXItaW52ZXJzZS10b2dnbGUtaWNvbi1iYXItYmc7CiAgICB9CiAgfQoKICAubmF2YmFyLWNvbGxhcHNlLAogIC5uYXZiYXItZm9ybSB7CiAgICBib3JkZXItY29sb3I6IGRhcmtlbihAbmF2YmFyLWludmVyc2UtYmcsIDclKTsKICB9CgogIC8vIERyb3Bkb3ducwogIC5uYXZiYXItbmF2IHsKICAgID4gLm9wZW4gPiBhIHsKICAgICAgJiwKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWJnOwogICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1hY3RpdmUtY29sb3I7CiAgICAgIH0KICAgIH0KICAgID4gLmRyb3Bkb3duID4gYTpob3ZlciAuY2FyZXQgewogICAgICBib3JkZXItdG9wLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1jb2xvcjsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItY29sb3I7CiAgICB9CiAgICA+IC5kcm9wZG93biA+IGEgLmNhcmV0IHsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I7CiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWNvbG9yOwogICAgfQogICAgPiAub3BlbiA+IGEgewogICAgICAmLAogICAgICAmOmhvdmVyLAogICAgICAmOmZvY3VzIHsKICAgICAgICAuY2FyZXQgewogICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgICAvLyBEcm9wZG93bnMgZ2V0IGN1c3RvbSBkaXNwbGF5CiAgICAgIC5vcGVuIC5kcm9wZG93bi1tZW51IHsKICAgICAgICA+IC5kcm9wZG93bi1oZWFkZXIgewogICAgICAgICAgYm9yZGVyLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtYm9yZGVyOwogICAgICAgIH0KICAgICAgICA+IGxpID4gYSB7CiAgICAgICAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I7CiAgICAgICAgICAmOmhvdmVyLAogICAgICAgICAgJjpmb2N1cyB7CiAgICAgICAgICAgIGNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItYmc7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgID4gLmFjdGl2ZSA+IGEgewogICAgICAgICAgJiwKICAgICAgICAgICY6aG92ZXIsCiAgICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWFjdGl2ZS1jb2xvcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWJnOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICA+IC5kaXNhYmxlZCA+IGEgewogICAgICAgICAgJiwKICAgICAgICAgICY6aG92ZXIsCiAgICAgICAgICAmOmZvY3VzIHsKICAgICAgICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWNvbG9yOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAbmF2YmFyLWludmVyc2UtbGluay1kaXNhYmxlZC1iZzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CgogIC5uYXZiYXItbGluayB7CiAgICBjb2xvcjogQG5hdmJhci1pbnZlcnNlLWxpbmstY29sb3I7CiAgICAmOmhvdmVyIHsKICAgICAgY29sb3I6IEBuYXZiYXItaW52ZXJzZS1saW5rLWhvdmVyLWNvbG9yOwogICAgfQogIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/navs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gTmF2cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhc2UgY2xhc3MKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5uYXYgewogIG1hcmdpbi1ib3R0b206IDA7CiAgcGFkZGluZy1sZWZ0OiAwOyAvLyBPdmVycmlkZSBkZWZhdWx0IHVsL29sCiAgbGlzdC1zdHlsZTogbm9uZTsKICAuY2xlYXJmaXgoKTsKCiAgPiBsaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBibG9jazsKCiAgICA+IGEgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwYWRkaW5nOiBAbmF2LWxpbmstcGFkZGluZzsKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXYtbGluay1ob3Zlci1iZzsKICAgICAgfQogICAgfQoKICAgIC8vIERpc2FibGVkIHN0YXRlIHNldHMgdGV4dCB0byBncmF5IGFuZCBudWtlcyBob3Zlci90YWIgZWZmZWN0cwogICAgJi5kaXNhYmxlZCA+IGEgewogICAgICBjb2xvcjogQG5hdi1kaXNhYmxlZC1saW5rLWNvbG9yOwoKICAgICAgJjpob3ZlciwKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IEBuYXYtZGlzYWJsZWQtbGluay1ob3Zlci1jb2xvcjsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgICAgfQogICAgfQogIH0KCiAgLy8gT3BlbiBkcm9wZG93bnMKICAub3BlbiA+IGEgewogICAgJiwKICAgICY6aG92ZXIsCiAgICAmOmZvY3VzIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdi1saW5rLWhvdmVyLWJnOwogICAgICBib3JkZXItY29sb3I6IEBsaW5rLWNvbG9yOwogICAgfQogIH0KCiAgLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBocikgd2l0aGluIHRoZSBkcm9wZG93bgogIC5uYXYtZGl2aWRlciB7CiAgICAubmF2LWRpdmlkZXIoKTsKICB9CgogIC8vIFByZXZlbnQgSUU4IGZyb20gbWlzcGxhY2luZyBpbWdzCiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2lzc3Vlcy85ODQjaXNzdWVjb21tZW50LTM5ODU5ODkKICA+IGxpID4gYSA+IGltZyB7CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQp9CgoKLy8gVGFicwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBHaXZlIHRoZSB0YWJzIHNvbWV0aGluZyB0byBzaXQgb24KLm5hdi10YWJzIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQG5hdi10YWJzLWJvcmRlci1jb2xvcjsKICA+IGxpIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgLy8gTWFrZSB0aGUgbGlzdC1pdGVtcyBvdmVybGF5IHRoZSBib3R0b20gYm9yZGVyCiAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwoKICAgIC8vIEFjdHVhbCB0YWJzIChhcyBsaW5rcykKICAgID4gYSB7CiAgICAgIG1hcmdpbi1yaWdodDogMnB4OwogICAgICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlIEBib3JkZXItcmFkaXVzLWJhc2UgMCAwOwogICAgICAmOmhvdmVyIHsKICAgICAgICBib3JkZXItY29sb3I6IEBuYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvciBAbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3IgQG5hdi10YWJzLWJvcmRlci1jb2xvcjsKICAgICAgfQogICAgfQoKICAgIC8vIEFjdGl2ZSBzdGF0ZSwgYW5kIGl0J3MgOmhvdmVyIHRvIG92ZXJyaWRlIG5vcm1hbCA6aG92ZXIKICAgICYuYWN0aXZlID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2LXRhYnMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBuYXYtdGFicy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CiAgICB9CiAgfQogIC8vIHB1bGxpbmcgdGhpcyBpbiBtYWlubHkgZm9yIGxlc3Mgc2hvcnRoYW5kCiAgJi5uYXYtanVzdGlmaWVkIHsKICAgIC5uYXYtanVzdGlmaWVkKCk7CiAgICAubmF2LXRhYnMtanVzdGlmaWVkKCk7CiAgfQp9CgoKLy8gUGlsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoubmF2LXBpbGxzIHsKICA+IGxpIHsKICAgIGZsb2F0OiBsZWZ0OwoKICAgIC8vIExpbmtzIHJlbmRlcmVkIGFzIHBpbGxzCiAgICA+IGEgewogICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICB9CiAgICArIGxpIHsKICAgICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgIH0KCiAgICAvLyBBY3RpdmUgc3RhdGUKICAgICYuYWN0aXZlID4gYSB7CiAgICAgICYsCiAgICAgICY6aG92ZXIsCiAgICAgICY6Zm9jdXMgewogICAgICAgIGNvbG9yOiBAbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc7CiAgICAgIH0KICAgIH0KICB9Cn0KCgovLyBTdGFja2VkIHBpbGxzCi5uYXYtc3RhY2tlZCB7CiAgPiBsaSB7CiAgICBmbG9hdDogbm9uZTsKICAgICsgbGkgewogICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAwOyAvLyBubyBuZWVkIGZvciB0aGlzIGdhcCBiZXR3ZWVuIG5hdiBpdGVtcwogICAgfQogIH0KfQoKCi8vIE5hdiB2YXJpYXRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBKdXN0aWZpZWQgbmF2IGxpbmtzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5uYXYtanVzdGlmaWVkIHsKICB3aWR0aDogMTAwJTsKCiAgPiBsaSB7CiAgICBmbG9hdDogbm9uZTsKICAgICA+IGEgewogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB9CiAgfQoKICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbSkgewogICAgPiBsaSB7CiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICAgIHdpZHRoOiAxJTsKICAgIH0KICB9Cn0KCi8vIE1vdmUgYm9yZGVycyB0byBhbmNob3JzIGluc3RlYWQgb2YgYm90dG9tIG9mIGxpc3QKLm5hdi10YWJzLWp1c3RpZmllZCB7CiAgYm9yZGVyLWJvdHRvbTogMDsKICA+IGxpID4gYSB7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgQG5hdi10YWJzLWp1c3RpZmllZC1saW5rLWJvcmRlci1jb2xvcjsKCiAgICAvLyBPdmVycmlkZSBtYXJnaW4gZnJvbSAubmF2LXRhYnMKICAgIG1hcmdpbi1yaWdodDogMDsKICB9CiAgPiAuYWN0aXZlID4gYSB7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAbmF2LXRhYnMtanVzdGlmaWVkLWFjdGl2ZS1saW5rLWJvcmRlci1jb2xvcjsKICB9Cn0KCgovLyBUYWJiYWJsZSB0YWJzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENsZWFyIGFueSBmbG9hdHMKLnRhYmJhYmxlIHsKICAuY2xlYXJmaXgoKTsKfQoKLy8gU2hvdy9oaWRlIHRhYmJhYmxlIGFyZWFzCi50YWItY29udGVudCA+IC50YWItcGFuZSwKLnBpbGwtY29udGVudCA+IC5waWxsLXBhbmUgewogIGRpc3BsYXk6IG5vbmU7Cn0KLnRhYi1jb250ZW50LAoucGlsbC1jb250ZW50IHsKICA+IC5hY3RpdmUgewogICAgZGlzcGxheTogYmxvY2s7CiAgfQp9CgoKCi8vIERyb3Bkb3ducwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBNYWtlIGRyb3Bkb3duIGNhcmV0cyB1c2UgbGluayBjb2xvciBpbiBuYXZzCi5uYXYgLmNhcmV0IHsKICBib3JkZXItdG9wLWNvbG9yOiBAbGluay1jb2xvcjsKICBib3JkZXItYm90dG9tLWNvbG9yOiBAbGluay1jb2xvcjsKfQoubmF2IGE6aG92ZXIgLmNhcmV0IHsKICBib3JkZXItdG9wLWNvbG9yOiBAbGluay1ob3Zlci1jb2xvcjsKICBib3JkZXItYm90dG9tLWNvbG9yOiBAbGluay1ob3Zlci1jb2xvcjsKfQoKLy8gU3BlY2lmaWMgZHJvcGRvd25zCi5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CiAgLy8gbWFrZSBkcm9wZG93biBib3JkZXIgb3ZlcmxhcCB0YWIgYm9yZGVyCiAgbWFyZ2luLXRvcDogLTFweDsKICAvLyBSZW1vdmUgdGhlIHRvcCByb3VuZGVkIGNvcm5lcnMgaGVyZSBzaW5jZSB0aGVyZSBpcyBhIGhhcmQgZWRnZSBhYm92ZSB0aGUgbWVudQogIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/normalize.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIG5vcm1hbGl6ZS5jc3MgdjIuMS4wIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovCgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLwovLyBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuCi8vCgphcnRpY2xlLAphc2lkZSwKZGV0YWlscywKZmlnY2FwdGlvbiwKZmlndXJlLApmb290ZXIsCmhlYWRlciwKaGdyb3VwLAptYWluLApuYXYsCnNlY3Rpb24sCnN1bW1hcnkgewogIGRpc3BsYXk6IGJsb2NrOwp9CgovLwovLyBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LgovLwoKYXVkaW8sCmNhbnZhcywKdmlkZW8gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLy8KLy8gUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy4KLy8gUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy4KLy8KCmF1ZGlvOm5vdChbY29udHJvbHNdKSB7CiAgZGlzcGxheTogbm9uZTsKICBoZWlnaHQ6IDA7Cn0KCi8vCi8vIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuCi8vCgpbaGlkZGVuXSB7CiAgZGlzcGxheTogbm9uZTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gQmFzZQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi4KLy8gMi4gUHJldmVudCBpT1MgdGV4dCBzaXplIGFkanVzdCBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2UsIHdpdGhvdXQgZGlzYWJsaW5nCi8vICAgIHVzZXIgem9vbS4KLy8KCmh0bWwgewogIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvLyAxCiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAyCiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDIKfQoKLy8KLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLgovLwoKYm9keSB7CiAgbWFyZ2luOiAwOwp9CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBMaW5rcwovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gQWRkcmVzcyBgb3V0bGluZWAgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIENocm9tZSBhbmQgb3RoZXIgYnJvd3NlcnMuCi8vCgphOmZvY3VzIHsKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKfQoKLy8KLy8gSW1wcm92ZSByZWFkYWJpbGl0eSB3aGVuIGZvY3VzZWQgYW5kIGFsc28gbW91c2UgaG92ZXJlZCBpbiBhbGwgYnJvd3NlcnMuCi8vCgphOmFjdGl2ZSwKYTpob3ZlciB7CiAgb3V0bGluZTogMDsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gVHlwb2dyYXBoeQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYAovLyBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmkgNSwgYW5kIENocm9tZS4KLy8KCmgxIHsKICBmb250LXNpemU6IDJlbTsKICBtYXJnaW46IDAuNjdlbSAwOwp9CgovLwovLyBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LCBTYWZhcmkgNSwgYW5kIENocm9tZS4KLy8KCmFiYnJbdGl0bGVdIHsKICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkOwp9CgovLwovLyBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmkgNSwgYW5kIENocm9tZS4KLy8KCmIsCnN0cm9uZyB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi8vCi8vIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lLgovLwoKZGZuIHsKICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KCi8vCi8vIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy4KLy8KCmhyIHsKICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIGhlaWdodDogMDsKfQoKLy8KLy8gQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS4KLy8KCm1hcmsgewogIGJhY2tncm91bmQ6ICNmZjA7CiAgY29sb3I6ICMwMDA7Cn0KCi8vCi8vIENvcnJlY3QgZm9udCBmYW1pbHkgc2V0IG9kZGx5IGluIFNhZmFyaSA1IGFuZCBDaHJvbWUuCi8vCgpjb2RlLAprYmQsCnByZSwKc2FtcCB7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgc2VyaWY7CiAgZm9udC1zaXplOiAxZW07Cn0KCi8vCi8vIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgcHJlLWZvcm1hdHRlZCB0ZXh0IGluIGFsbCBicm93c2Vycy4KLy8KCnByZSB7CiAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwp9CgovLwovLyBTZXQgY29uc2lzdGVudCBxdW90ZSB0eXBlcy4KLy8KCnEgewogIHF1b3RlczogIlwyMDFDIiAiXDIwMUQiICJcMjAxOCIgIlwyMDE5IjsKfQoKLy8KLy8gQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuCi8vCgpzbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7Cn0KCi8vCi8vIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy4KLy8KCnN1YiwKc3VwIHsKICBmb250LXNpemU6IDc1JTsKICBsaW5lLWhlaWdodDogMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwp9CgpzdXAgewogIHRvcDogLTAuNWVtOwp9CgpzdWIgewogIGJvdHRvbTogLTAuMjVlbTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gRW1iZWRkZWQgY29udGVudAovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8KLy8gUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkuCi8vCgppbWcgewogIGJvcmRlcjogMDsKfQoKLy8KLy8gQ29ycmVjdCBvdmVyZmxvdyBkaXNwbGF5ZWQgb2RkbHkgaW4gSUUgOS4KLy8KCnN2Zzpub3QoOnJvb3QpIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBGaWd1cmVzCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLwovLyBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaSA1LgovLwoKZmlndXJlIHsKICBtYXJnaW46IDA7Cn0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEZvcm1zCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLwovLyBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuCi8vCgpmaWVsZHNldCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsKICBtYXJnaW46IDAgMnB4OwogIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsKfQoKLy8KLy8gMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LgovLyAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuCi8vCgpsZWdlbmQgewogIGJvcmRlcjogMDsgLy8gMQogIHBhZGRpbmc6IDA7IC8vIDIKfQoKLy8KLy8gMS4gQ29ycmVjdCBmb250IGZhbWlseSBub3QgYmVpbmcgaW5oZXJpdGVkIGluIGFsbCBicm93c2Vycy4KLy8gMi4gQ29ycmVjdCBmb250IHNpemUgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBhbGwgYnJvd3NlcnMuCi8vIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpIDUsIGFuZCBDaHJvbWUuCi8vCgpidXR0b24sCmlucHV0LApzZWxlY3QsCnRleHRhcmVhIHsKICBmb250LWZhbWlseTogaW5oZXJpdDsgLy8gMQogIGZvbnQtc2l6ZTogMTAwJTsgLy8gMgogIG1hcmdpbjogMDsgLy8gMwp9CgovLwovLyBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluCi8vIHRoZSBVQSBzdHlsZXNoZWV0LgovLwoKYnV0dG9uLAppbnB1dCB7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLy8KLy8gQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLgovLyBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLgovLyBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIENocm9tZSwgU2FmYXJpIDUrLCBhbmQgSUUgOCsuCi8vIENvcnJlY3QgYHNlbGVjdGAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCA0KyBhbmQgT3BlcmEuCi8vCgpidXR0b24sCnNlbGVjdCB7CiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KCi8vCi8vIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gCi8vICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLgovLyAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuCi8vIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlCi8vICAgIGBpbnB1dGAgYW5kIG90aGVycy4KLy8KCmJ1dHRvbiwKaHRtbCBpbnB1dFt0eXBlPSJidXR0b24iXSwgLy8gMQppbnB1dFt0eXBlPSJyZXNldCJdLAppbnB1dFt0eXBlPSJzdWJtaXQiXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8vIDIKICBjdXJzb3I6IHBvaW50ZXI7IC8vIDMKfQoKLy8KLy8gUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy4KLy8KCmJ1dHRvbltkaXNhYmxlZF0sCmh0bWwgaW5wdXRbZGlzYWJsZWRdIHsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCi8vCi8vIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkuCi8vIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkuCi8vCgppbnB1dFt0eXBlPSJjaGVja2JveCJdLAppbnB1dFt0eXBlPSJyYWRpbyJdIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxCiAgcGFkZGluZzogMDsgLy8gMgp9CgovLwovLyAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lLgovLyAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSA1IGFuZCBDaHJvbWUKLy8gICAgKGluY2x1ZGUgYC1tb3pgIHRvIGZ1dHVyZS1wcm9vZikuCi8vCgppbnB1dFt0eXBlPSJzZWFyY2giXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIDEKICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IC8vIDIKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQoKLy8KLy8gUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSA1IGFuZCBDaHJvbWUKLy8gb24gT1MgWC4KLy8KCmlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLAppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgovLwovLyBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuCi8vCgpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsCmlucHV0OjotbW96LWZvY3VzLWlubmVyIHsKICBib3JkZXI6IDA7CiAgcGFkZGluZzogMDsKfQoKLy8KLy8gMS4gUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS4KLy8gMi4gSW1wcm92ZSByZWFkYWJpbGl0eSBhbmQgYWxpZ25tZW50IGluIGFsbCBicm93c2Vycy4KLy8KCnRleHRhcmVhIHsKICBvdmVyZmxvdzogYXV0bzsgLy8gMQogIHZlcnRpY2FsLWFsaWduOiB0b3A7IC8vIDIKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gVGFibGVzCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLwovLyBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuCi8vCgp0YWJsZSB7CiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICBib3JkZXItc3BhY2luZzogMDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/pager.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFnZXIgcGFnaW5hdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi5wYWdlciB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgLmNsZWFyZml4KCk7CiAgbGkgewogICAgZGlzcGxheTogaW5saW5lOwogICAgPiBhLAogICAgPiBzcGFuIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBwYWRkaW5nOiA1cHggMTRweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2luYXRpb24tYmc7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIEBwYWdpbmF0aW9uLWJvcmRlcjsKICAgICAgYm9yZGVyLXJhZGl1czogQHBhZ2VyLWJvcmRlci1yYWRpdXM7CiAgICB9CgogICAgPiBhOmhvdmVyLAogICAgPiBhOmZvY3VzIHsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnaW5hdGlvbi1ob3Zlci1iZzsKICAgIH0KICB9CgogIC5uZXh0IHsKICAgID4gYSwKICAgID4gc3BhbiB7CiAgICAgIGZsb2F0OiByaWdodDsKICAgIH0KICB9CgogIC5wcmV2aW91cyB7CiAgICA+IGEsCiAgICA+IHNwYW4gewogICAgICBmbG9hdDogbGVmdDsKICAgIH0KICB9CgogIC5kaXNhYmxlZCB7CiAgICA+IGEsCiAgICA+IGE6aG92ZXIsCiAgICA+IGE6Zm9jdXMsCiAgICA+IHNwYW4gewogICAgICBjb2xvcjogQHBhZ2VyLWRpc2FibGVkLWNvbG9yOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnaW5hdGlvbi1iZzsKICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKICAgIH0KICB9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/pagination.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFnaW5hdGlvbiAobXVsdGlwbGUgcGFnZXMpCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi5wYWdpbmF0aW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbjogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIDA7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKCiAgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmU7IC8vIFJlbW92ZSBsaXN0LXN0eWxlIGFuZCBibG9jay1sZXZlbCBkZWZhdWx0cwogICAgPiBhLAogICAgPiBzcGFuIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBmbG9hdDogbGVmdDsgLy8gQ29sbGFwc2Ugd2hpdGUtc3BhY2UKICAgICAgcGFkZGluZzogQHBhZGRpbmctYmFzZS12ZXJ0aWNhbCBAcGFkZGluZy1iYXNlLWhvcml6b250YWw7CiAgICAgIGxpbmUtaGVpZ2h0OiBAbGluZS1oZWlnaHQtYmFzZTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFnaW5hdGlvbi1iZzsKICAgICAgYm9yZGVyOiAxcHggc29saWQgQHBhZ2luYXRpb24tYm9yZGVyOwogICAgICBtYXJnaW4tbGVmdDogLTFweDsKICAgIH0KICAgICY6Zmlyc3QtY2hpbGQgewogICAgICA+IGEsCiAgICAgID4gc3BhbiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgICAgLmJvcmRlci1sZWZ0LXJhZGl1cyhAYm9yZGVyLXJhZGl1cy1iYXNlKTsKICAgICAgfQogICAgfQogICAgJjpsYXN0LWNoaWxkIHsKICAgICAgPiBhLAogICAgICA+IHNwYW4gewogICAgICAgIC5ib3JkZXItcmlnaHQtcmFkaXVzKEBib3JkZXItcmFkaXVzLWJhc2UpOwogICAgICB9CiAgICB9CiAgfQoKICA+IGxpID4gYSwKICA+IGxpID4gc3BhbiB7CiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwYWdpbmF0aW9uLWhvdmVyLWJnOwogICAgfQogIH0KCiAgPiAuYWN0aXZlID4gYSwKICA+IC5hY3RpdmUgPiBzcGFuIHsKICAgICYsCiAgICAmOmhvdmVyLAogICAgJjpmb2N1cyB7CiAgICAgIHotaW5kZXg6IDI7CiAgICAgIGNvbG9yOiBAcGFnaW5hdGlvbi1hY3RpdmUtY29sb3I7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBwYWdpbmF0aW9uLWFjdGl2ZS1iZzsKICAgICAgYm9yZGVyLWNvbG9yOiBAcGFnaW5hdGlvbi1hY3RpdmUtYmc7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KICB9CgogID4gLmRpc2FibGVkIHsKICAgID4gc3BhbiwKICAgID4gYSwKICAgID4gYTpob3ZlciwKICAgID4gYTpmb2N1cyB7CiAgICAgIGNvbG9yOiBAcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHBhZ2luYXRpb24tYmc7CiAgICAgIGJvcmRlci1jb2xvcjogQHBhZ2luYXRpb24tYm9yZGVyOwogICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogICAgfQogIH0KfQoKLy8gU2l6aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBMYXJnZQoucGFnaW5hdGlvbi1sZyB7CiAgLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy1sYXJnZS12ZXJ0aWNhbDsgQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1sYXJnZTsgQGJvcmRlci1yYWRpdXMtbGFyZ2UpOwp9CgovLyBTbWFsbAoucGFnaW5hdGlvbi1zbSB7CiAgLnBhZ2luYXRpb24tc2l6ZShAcGFkZGluZy1zbWFsbC12ZXJ0aWNhbDsgQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDsgQGZvbnQtc2l6ZS1zbWFsbDsgQGJvcmRlci1yYWRpdXMtc21hbGwpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/panels.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUGFuZWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gQmFzZSBjbGFzcwoucGFuZWwgewogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAcGFuZWwtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogQHBhbmVsLWJvcmRlci1yYWRpdXM7CiAgLmJveC1zaGFkb3coMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KSk7Cn0KCi8vIFBhbmVsIGNvbnRlbnRzCi5wYW5lbC1ib2R5IHsKICBwYWRkaW5nOiAxNXB4OwogIC5jbGVhcmZpeCgpOwp9CgoKLy8gTGlzdCBncm91cHMgaW4gcGFuZWxzCi8vCi8vIEJ5IGRlZmF1bHQsIHNwYWNlIG91dCBsaXN0IGdyb3VwIGNvbnRlbnQgZnJvbSBwYW5lbCBoZWFkaW5ncyB0byBhY2NvdW50IGZvcgovLyBhbnkga2luZCBvZiBjdXN0b20gY29udGVudCBiZXR3ZWVuIHRoZSB0d28uCgoucGFuZWwgewogID4gLmxpc3QtZ3JvdXAgewogICAgbWFyZ2luLWJvdHRvbTogMDsKCiAgICAubGlzdC1ncm91cC1pdGVtIHsKICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMDsKCiAgICAgIC8vIFJlbW92ZSBib3JkZXIgcmFkaXVzIGZvciB0b3Agb25lCiAgICAgICY6Zmlyc3QtY2hpbGQgewogICAgICAgIC5ib3JkZXItdG9wLXJhZGl1cygwKTsKICAgICAgfQogICAgICAvLyBCdXQga2VlcCBpdCBmb3IgdGhlIGxhc3Qgb25lCiAgICAgICY6bGFzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDsKICAgICAgfQogICAgfQogIH0KfQovLyBDb2xsYXBzZSBzcGFjZSBiZXR3ZWVuIHdoZW4gdGhlcmUncyBubyBhZGRpdGlvbmFsIGNvbnRlbnQuCi5wYW5lbC1oZWFkaW5nICsgLmxpc3QtZ3JvdXAgewogIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC13aWR0aDogMDsKICB9Cn0KCgovLyBUYWJsZXMgaW4gcGFuZWxzCi8vCi8vIFBsYWNlIGEgbm9uLWJvcmRlcmVkIGAudGFibGVgIHdpdGhpbiBhIHBhbmVsIChub3Qgd2l0aGluIGEgYC5wYW5lbC1ib2R5YCkgYW5kCi8vIHdhdGNoIGl0IGdvIGZ1bGwgd2lkdGguCgoucGFuZWwgewogID4gLnRhYmxlIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogID4gLnBhbmVsLWJvZHkgKyAudGFibGUgewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgfQp9CgoKLy8gT3B0aW9uYWwgaGVhZGluZwoucGFuZWwtaGVhZGluZyB7CiAgcGFkZGluZzogMTBweCAxNXB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAuYm9yZGVyLXRvcC1yYWRpdXMoQHBhbmVsLWJvcmRlci1yYWRpdXMgLSAxKTsKfQoKLy8gV2l0aGluIGhlYWRpbmcsIHN0cmlwIGFueSBgaCpgIHRhZyBvZiBpdCdzIGRlZmF1bHQgbWFyZ2lucyBmb3Igc3BhY2luZy4KLnBhbmVsLXRpdGxlIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiBjZWlsKChAZm9udC1zaXplLWJhc2UgKiAxLjEyNSkpOwogID4gYSB7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9Cn0KCi8vIE9wdGlvbmFsIGZvb3RlciAoc3RheXMgZ3JheSBpbiBldmVyeSBtb2RpZmllciBjbGFzcykKLnBhbmVsLWZvb3RlciB7CiAgcGFkZGluZzogMTBweCAxNXB4OwogIGJhY2tncm91bmQtY29sb3I6IEBwYW5lbC1mb290ZXItYmc7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEBwYW5lbC1pbm5lci1ib3JkZXI7CiAgLmJvcmRlci1ib3R0b20tcmFkaXVzKEBwYW5lbC1ib3JkZXItcmFkaXVzIC0gMSk7Cn0KCgovLyBDb2xsYXBzYWJsZSBwYW5lbHMgKGFrYSwgYWNjb3JkaW9uKQovLwovLyBXcmFwIGEgc2VyaWVzIG9mIHBhbmVscyBpbiBgLnBhbmVsLWdyb3VwYCB0byB0dXJuIHRoZW0gaW50byBhbiBhY2NvcmRpb24gd2l0aAovLyB0aGUgaGVscCBvZiBvdXIgY29sbGFwc2UgSmF2YVNjcmlwdCBwbHVnaW4uCgoucGFuZWwtZ3JvdXAgewogIC8vIFRpZ2h0ZW4gdXAgbWFyZ2luIHNvIGl0J3Mgb25seSBiZXR3ZWVuIHBhbmVscwogIC5wYW5lbCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgYm9yZGVyLXJhZGl1czogQHBhbmVsLWJvcmRlci1yYWRpdXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOyAvLyBjcm9wIGNvbnRlbnRzIHdoZW4gY29sbGFwc2VkCiAgICArIC5wYW5lbCB7CiAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgIH0KICB9CgogIC5wYW5lbC1oZWFkaW5nIHsKICAgIGJvcmRlci1ib3R0b206IDA7CiAgICArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBAcGFuZWwtaW5uZXItYm9yZGVyOwogICAgfQogIH0KICAucGFuZWwtZm9vdGVyIHsKICAgIGJvcmRlci10b3A6IDA7CiAgICArIC5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keSB7CiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAcGFuZWwtaW5uZXItYm9yZGVyOwogICAgfQogIH0KCiAgLy8gTmV3IHN1YmNvbXBvbmVudCBmb3Igd3JhcHBpbmcgY29sbGFwc2FibGUgY29udGVudCBmb3IgcHJvcGVyIGFuaW1hdGlvbnMKICAucGFuZWwtY29sbGFwc2UgewoKICB9Cn0KCgovLyBDb250ZXh0dWFsIHZhcmlhdGlvbnMKLnBhbmVsLWRlZmF1bHQgewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC1kZWZhdWx0LWJvcmRlcjsgQHBhbmVsLWRlZmF1bHQtdGV4dDsgQHBhbmVsLWRlZmF1bHQtaGVhZGluZy1iZzsgQHBhbmVsLWRlZmF1bHQtYm9yZGVyKTsKfQoucGFuZWwtcHJpbWFyeSB7CiAgLnBhbmVsLXZhcmlhbnQoQHBhbmVsLXByaW1hcnktYm9yZGVyOyBAcGFuZWwtcHJpbWFyeS10ZXh0OyBAcGFuZWwtcHJpbWFyeS1oZWFkaW5nLWJnOyBAcGFuZWwtcHJpbWFyeS1ib3JkZXIpOwp9Ci5wYW5lbC1zdWNjZXNzIHsKICAucGFuZWwtdmFyaWFudChAcGFuZWwtc3VjY2Vzcy1ib3JkZXI7IEBwYW5lbC1zdWNjZXNzLXRleHQ7IEBwYW5lbC1zdWNjZXNzLWhlYWRpbmctYmc7IEBwYW5lbC1zdWNjZXNzLWJvcmRlcik7Cn0KLnBhbmVsLXdhcm5pbmcgewogIC5wYW5lbC12YXJpYW50KEBwYW5lbC13YXJuaW5nLWJvcmRlcjsgQHBhbmVsLXdhcm5pbmctdGV4dDsgQHBhbmVsLXdhcm5pbmctaGVhZGluZy1iZzsgQHBhbmVsLXdhcm5pbmctYm9yZGVyKTsKfQoucGFuZWwtZGFuZ2VyIHsKICAucGFuZWwtdmFyaWFudChAcGFuZWwtZGFuZ2VyLWJvcmRlcjsgQHBhbmVsLWRhbmdlci10ZXh0OyBAcGFuZWwtZGFuZ2VyLWhlYWRpbmctYmc7IEBwYW5lbC1kYW5nZXItYm9yZGVyKTsKfQoucGFuZWwtaW5mbyB7CiAgLnBhbmVsLXZhcmlhbnQoQHBhbmVsLWluZm8tYm9yZGVyOyBAcGFuZWwtaW5mby10ZXh0OyBAcGFuZWwtaW5mby1oZWFkaW5nLWJnOyBAcGFuZWwtaW5mby1ib3JkZXIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/popovers.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUG9wb3ZlcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoucG9wb3ZlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IEB6aW5kZXgtcG9wb3ZlcjsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogQHBvcG92ZXItbWF4LXdpZHRoOwogIHBhZGRpbmc6IDFweDsKICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBSZXNldCBnaXZlbiBuZXcgaW5zZXJ0aW9uIG1ldGhvZAogIGJhY2tncm91bmQtY29sb3I6IEBwb3BvdmVyLWJnOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgQHBvcG92ZXItZmFsbGJhY2stYm9yZGVyLWNvbG9yOwogIGJvcmRlcjogMXB4IHNvbGlkIEBwb3BvdmVyLWJvcmRlci1jb2xvcjsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKICAuYm94LXNoYWRvdygwIDVweCAxMHB4IHJnYmEoMCwwLDAsLjIpKTsKCiAgLy8gT3ZlcnJpZGVzIGZvciBwcm9wZXIgaW5zZXJ0aW9uCiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKCiAgLy8gT2Zmc2V0IHRoZSBwb3BvdmVyIHRvIGFjY291bnQgZm9yIHRoZSBwb3BvdmVyIGFycm93CiAgJi50b3AgICAgIHsgbWFyZ2luLXRvcDogLTEwcHg7IH0KICAmLnJpZ2h0ICAgeyBtYXJnaW4tbGVmdDogMTBweDsgfQogICYuYm90dG9tICB7IG1hcmdpbi10b3A6IDEwcHg7IH0KICAmLmxlZnQgICAgeyBtYXJnaW4tbGVmdDogLTEwcHg7IH0KfQoKLnBvcG92ZXItdGl0bGUgewogIG1hcmdpbjogMDsgLy8gcmVzZXQgaGVhZGluZyBtYXJnaW4KICBwYWRkaW5nOiA4cHggMTRweDsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGJhY2tncm91bmQtY29sb3I6IEBwb3BvdmVyLXRpdGxlLWJnOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oQHBvcG92ZXItdGl0bGUtYmcsIDUlKTsKICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMDsKfQoKLnBvcG92ZXItY29udGVudCB7CiAgcGFkZGluZzogOXB4IDE0cHg7Cn0KCi8vIEFycm93cwovLwovLyAuYXJyb3cgaXMgb3V0ZXIsIC5hcnJvdzphZnRlciBpcyBpbm5lcgoKLnBvcG92ZXIgLmFycm93IHsKICAmLAogICY6YWZ0ZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogIH0KfQoucG9wb3ZlciAuYXJyb3cgewogIGJvcmRlci13aWR0aDogQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7Cn0KLnBvcG92ZXIgLmFycm93OmFmdGVyIHsKICBib3JkZXItd2lkdGg6IEBwb3BvdmVyLWFycm93LXdpZHRoOwogIGNvbnRlbnQ6ICIiOwp9CgoucG9wb3ZlciB7CiAgJi50b3AgLmFycm93IHsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLXRvcC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I7CiAgICBib3R0b206IC1AcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiICI7CiAgICAgIGJvdHRvbTogMXB4OwogICAgICBtYXJnaW4tbGVmdDogLUBwb3BvdmVyLWFycm93LXdpZHRoOwogICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOwogICAgICBib3JkZXItdG9wLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1jb2xvcjsKICAgIH0KICB9CiAgJi5yaWdodCAuYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBtYXJnaW4tdG9wOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItbGVmdC13aWR0aDogMDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiICI7CiAgICAgIGxlZnQ6IDFweDsKICAgICAgYm90dG9tOiAtQHBvcG92ZXItYXJyb3ctd2lkdGg7CiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogICAgICBib3JkZXItcmlnaHQtY29sb3I6IEBwb3BvdmVyLWFycm93LWNvbG9yOwogICAgfQogIH0KICAmLmJvdHRvbSAuYXJyb3cgewogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC1AcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDsKICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1mYWxsYmFjay1jb2xvcjsgLy8gSUU4IGZhbGxiYWNrCiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjsKICAgIHRvcDogLUBwb3BvdmVyLWFycm93LW91dGVyLXdpZHRoOwogICAgJjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICIgIjsKICAgICAgdG9wOiAxcHg7CiAgICAgIG1hcmdpbi1sZWZ0OiAtQHBvcG92ZXItYXJyb3ctd2lkdGg7CiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7CiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBwb3BvdmVyLWFycm93LWNvbG9yOwogICAgfQogIH0KCiAgJi5sZWZ0IC5hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBtYXJnaW4tdG9wOiAtQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7CiAgICBib3JkZXItbGVmdC1jb2xvcjogQHBvcG92ZXItYXJyb3ctb3V0ZXItZmFsbGJhY2stY29sb3I7IC8vIElFOCBmYWxsYmFjawogICAgYm9yZGVyLWxlZnQtY29sb3I6IEBwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOwogICAgJjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICIgIjsKICAgICAgcmlnaHQ6IDFweDsKICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwogICAgICBib3JkZXItbGVmdC1jb2xvcjogQHBvcG92ZXItYXJyb3ctY29sb3I7CiAgICAgIGJvdHRvbTogLUBwb3BvdmVyLWFycm93LXdpZHRoOwogICAgfQogIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/print.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gQmFzaWMgcHJpbnQgc3R5bGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvY3NzL21haW4uY3NzCgpAbWVkaWEgcHJpbnQgewoKICAqIHsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zCiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogIH0KCiAgYSwKICBhOnZpc2l0ZWQgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQoKICBhW2hyZWZdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIgKCIgYXR0cihocmVmKSAiKSI7CiAgfQoKICBhYmJyW3RpdGxlXTphZnRlciB7CiAgICBjb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKICB9CgogIC8vIERvbid0IHNob3cgbGlua3MgZm9yIGltYWdlcywgb3IgamF2YXNjcmlwdC9pbnRlcm5hbCBsaW5rcwogIC5pciBhOmFmdGVyLAogIGFbaHJlZl49ImphdmFzY3JpcHQ6Il06YWZ0ZXIsCiAgYVtocmVmXj0iIyJdOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICIiOwogIH0KCiAgcHJlLAogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CgogIHRoZWFkIHsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgLy8gaDVicC5jb20vdAogIH0KCiAgdHIsCiAgaW1nIHsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CgogIGltZyB7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICB9CgogIEBwYWdlIHsKICAgIG1hcmdpbjogMmNtIC41Y207CiAgfQoKICBwLAogIGgyLAogIGgzIHsKICAgIG9ycGhhbnM6IDM7CiAgICB3aWRvd3M6IDM7CiAgfQoKICBoMiwKICBoMyB7CiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsKICB9CgogIC8vIEJvb3RzdHJhcCBjb21wb25lbnRzCiAgLm5hdmJhciB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KICAudGFibGUgewogICAgdGQsCiAgICB0aCB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICAgIH0KICB9CiAgLmJ0biwKICAuZHJvcHVwID4gLmJ0biB7CiAgICA+IC5jYXJldCB7CiAgICAgIGJvcmRlci10b3AtY29sb3I6ICMwMDAgIWltcG9ydGFudDsKICAgIH0KICB9CiAgLmxhYmVsIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgfQoKICAudGFibGUgewogICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OwogIH0KICAudGFibGUtYm9yZGVyZWQgewogICAgdGgsCiAgICB0ZCB7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDsKICAgIH0KICB9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/progress-bars.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUHJvZ3Jlc3MgYmFycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJhciBhbmltYXRpb25zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFdlYmtpdApALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOyB9CiAgdG8gICAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KfQoKLy8gRmlyZWZveApALW1vei1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOyB9CiAgdG8gICAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KfQoKLy8gT3BlcmEKQC1vLWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KICB0byAgICB7IGJhY2tncm91bmQtcG9zaXRpb246IDQwcHggMDsgfQp9CgovLyBTcGVjIGFuZCBJRTEwKwpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tICB7IGJhY2tncm91bmQtcG9zaXRpb246IDQwcHggMDsgfQogIHRvICAgIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOyB9Cn0KCgoKLy8gQmFyIGl0c2VsZgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBPdXRlciBjb250YWluZXIKLnByb2dyZXNzIHsKICBvdmVyZmxvdzogaGlkZGVuOwogIGhlaWdodDogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAcHJvZ3Jlc3MtYmc7CiAgYm9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXMtYmFzZTsKICAuYm94LXNoYWRvdyhpbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSkpOwp9CgovLyBCYXIgb2YgcHJvZ3Jlc3MKLnByb2dyZXNzLWJhciB7CiAgZmxvYXQ6IGxlZnQ7CiAgd2lkdGg6IDAlOwogIGhlaWdodDogMTAwJTsKICBmb250LXNpemU6IEBmb250LXNpemUtc21hbGw7CiAgY29sb3I6IEBwcm9ncmVzcy1iYXItY29sb3I7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IEBwcm9ncmVzcy1iYXItYmc7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwuMTUpKTsKICAudHJhbnNpdGlvbih3aWR0aCAuNnMgZWFzZSk7Cn0KCi8vIFN0cmlwZWQgYmFycwoucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyIHsKICAjZ3JhZGllbnQgPiAuc3RyaXBlZChAcHJvZ3Jlc3MtYmFyLWJnKTsKICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweDsKfQoKLy8gQ2FsbCBhbmltYXRpb24gZm9yIHRoZSBhY3RpdmUgb25lCi5wcm9ncmVzcy5hY3RpdmUgLnByb2dyZXNzLWJhciB7CiAgLXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgICAtbW96LWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwogICAgICAtbXMtYW5pbWF0aW9uOiBwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAtby1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICAgIGFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOwp9CgoKCi8vIFZhcmlhdGlvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLnByb2dyZXNzLWJhci1zdWNjZXNzIHsKICAucHJvZ3Jlc3MtYmFyLXZhcmlhbnQoQHByb2dyZXNzLWJhci1zdWNjZXNzLWJnKTsKfQoKLnByb2dyZXNzLWJhci1pbmZvIHsKICAucHJvZ3Jlc3MtYmFyLXZhcmlhbnQoQHByb2dyZXNzLWJhci1pbmZvLWJnKTsKfQoKLnByb2dyZXNzLWJhci13YXJuaW5nIHsKICAucHJvZ3Jlc3MtYmFyLXZhcmlhbnQoQHByb2dyZXNzLWJhci13YXJuaW5nLWJnKTsKfQoKLnByb2dyZXNzLWJhci1kYW5nZXIgewogIC5wcm9ncmVzcy1iYXItdmFyaWFudChAcHJvZ3Jlc3MtYmFyLWRhbmdlci1iZyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/responsive-utilities.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gUmVzcG9uc2l2ZTogVXRpbGl0eSBjbGFzc2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gSUUxMCBNZXRybyByZXNwb25zaXZlCi8vIFJlcXVpcmVkIGZvciBXaW5kb3dzIDggTWV0cm8gc3BsaXQtc2NyZWVuIHNuYXBwaW5nIHdpdGggSUUxMAovLwovLyBTb3VyY2U6IGh0dHA6Ly90aW1rYWRsZWMuY29tLzIwMTIvMTAvaWUxMC1zbmFwLW1vZGUtYW5kLXJlc3BvbnNpdmUtZGVzaWduLwpALW1zLXZpZXdwb3J0ewogIHdpZHRoOiBkZXZpY2Utd2lkdGg7Cn0KCi8vIElFMTAgb24gV2luZG93cyBQaG9uZSA4Ci8vIElFMTAgb24gV1A4IGRvZXNuJ3QgcmVwb3J0IENTUyBwaXhlbHMsIGJ1dCBhY3R1YWwgZGV2aWNlIHBpeGVscy4gSW4KLy8gb3RoZXIgd29yZHMsIHNheSBvbiBhIEx1bWlhLCB5b3UnbGwgZ2V0IDc2OHB4IGFzIHRoZSBkZXZpY2Ugd2lkdGgsCi8vIG1lYW5pbmcgdXNlcnMgd2lsbCBzZWUgdGhlIHRhYmxldCBzdHlsZXMgYW5kIG5vdCBwaG9uZSBzdHlsZXMuCi8vCi8vIEFsdGVybmF0aXZlbHkgeW91IGNhbiBvdmVycmlkZSB0aGlzIHdpdGggSlMgKHNlZSBzb3VyY2UgYmVsb3cpLCBidXQKLy8gd2Ugd29uJ3QgYmUgZG9pbmcgdGhhdCBoZXJlIGdpdmVuIG91ciBsaW1pdGVkIHNjb3BlLgovLwovLyBTb3VyY2U6IGh0dHA6Ly90aW1rYWRsZWMuY29tLzIwMTMvMDEvd2luZG93cy1waG9uZS04LWFuZC1kZXZpY2Utd2lkdGgvCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQwMHB4KSB7CiAgQC1tcy12aWV3cG9ydHsKICAgIHdpZHRoOiAzMjBweDsKICB9Cn0KCi8vIEhpZGUgZnJvbSBzY3JlZW5yZWFkZXJzIGFuZCBicm93c2VycwovLyBDcmVkaXQ6IEhUTUw1IEJvaWxlcnBsYXRlCi5oaWRkZW4gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQoKLy8gVmlzaWJpbGl0eSB1dGlsaXRpZXMKCi52aXNpYmxlLXhzIHsKICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICB9CiAgJi52aXNpYmxlLXNtIHsKICAgIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICAmLnZpc2libGUtbWQgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQpIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLW1kLW1heCkgewogICAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgICB9ICAgIAogIH0KICAmLnZpc2libGUtbGcgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGcpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfSAgICAKICB9Cn0KLnZpc2libGUtc20gewogIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICYudmlzaWJsZS14cyB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfSAgICAKICB9CiAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KICAmLnZpc2libGUtbWQgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQpIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLW1kLW1heCkgewogICAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgICB9ICAgIAogIH0KICAmLnZpc2libGUtbGcgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGcpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfSAgICAKICB9Cn0KLnZpc2libGUtbWQgewogIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICYudmlzaWJsZS14cyB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfSAgICAKICB9CiAgJi52aXNpYmxlLXNtIHsKICAgIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogICAgfQogIH0KICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZCkgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tbWQtbWF4KSB7CiAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgfQogICYudmlzaWJsZS1sZyB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZykgewogICAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgICB9ICAgIAogIH0KfQoudmlzaWJsZS1sZyB7CiAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgJi52aXNpYmxlLXhzIHsKICAgIEBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXhzLW1heCkgewogICAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgICB9ICAgIAogIH0KICAmLnZpc2libGUtc20gewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgICB9CiAgfQogICYudmlzaWJsZS1tZCB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZCkgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tbWQtbWF4KSB7CiAgICAgIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICAgIH0gICAgCiAgfQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnKSB7CiAgICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgfQp9CgouaGlkZGVuLXhzIHsKICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgQG1lZGlhIChtYXgtd2lkdGg6IEBzY3JlZW4teHMtbWF4KSB7CiAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICB9CiAgJi5oaWRkZW4tc20gewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0gICAgCiAgfQogICYuaGlkZGVuLW1kIHsKICAgIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgICB9ICAgIAogIH0KICAmLmhpZGRlbi1sZyB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZykgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0gICAgCiAgfQp9Ci5oaWRkZW4tc20gewogIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICAmLmhpZGRlbi14cyB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgICB9CiAgfQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLXNtKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1zbS1tYXgpIHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KICAmLmhpZGRlbi1tZCB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1tZCkgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tbWQtbWF4KSB7CiAgICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICAgfSAgICAKICB9CiAgJi5oaWRkZW4tbGcgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbGcpIHsKICAgICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgICB9ICAgIAogIH0KfQouaGlkZGVuLW1kIHsKICAucmVzcG9uc2l2ZS12aXNpYmlsaXR5KCk7CiAgJi5oaWRkZW4teHMgewogICAgQG1lZGlhIChtYXgtd2lkdGg6IEBzY3JlZW4teHMtbWF4KSB7CiAgICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICAgfSAgICAKICB9CiAgJi5oaWRkZW4tc20gewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tc20pIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLXNtLW1heCkgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0gICAgCiAgfQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLW1kKSBhbmQgKG1heC13aWR0aDogQHNjcmVlbi1tZC1tYXgpIHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KICAmLmhpZGRlbi1sZyB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1sZykgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0gICAgCiAgfQp9Ci5oaWRkZW4tbGcgewogIC5yZXNwb25zaXZlLXZpc2liaWxpdHkoKTsKICAmLmhpZGRlbi14cyB7CiAgICBAbWVkaWEgKG1heC13aWR0aDogQHNjcmVlbi14cy1tYXgpIHsKICAgICAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7CiAgICB9ICAgIAogIH0KICAmLmhpZGRlbi1zbSB7CiAgICBAbWVkaWEgKG1pbi13aWR0aDogQHNjcmVlbi1zbSkgYW5kIChtYXgtd2lkdGg6IEBzY3JlZW4tc20tbWF4KSB7CiAgICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogICAgfSAgICAKICB9CiAgJi5oaWRkZW4tbWQgewogICAgQG1lZGlhIChtaW4td2lkdGg6IEBzY3JlZW4tbWQpIGFuZCAobWF4LXdpZHRoOiBAc2NyZWVuLW1kLW1heCkgewogICAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICAgIH0gICAgCiAgfQogIEBtZWRpYSAobWluLXdpZHRoOiBAc2NyZWVuLWxnKSB7CiAgICAucmVzcG9uc2l2ZS1pbnZpc2liaWxpdHkoKTsKICB9Cn0KCi8vIFByaW50IHV0aWxpdGllcwoudmlzaWJsZS1wcmludCB7CiAgLnJlc3BvbnNpdmUtaW52aXNpYmlsaXR5KCk7Cn0KCkBtZWRpYSBwcmludCB7CiAgLnZpc2libGUtcHJpbnQgewogICAgLnJlc3BvbnNpdmUtdmlzaWJpbGl0eSgpOwogIH0KICAuaGlkZGVuLXByaW50IHsKICAgIC5yZXNwb25zaXZlLWludmlzaWJpbGl0eSgpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/scaffolding.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gU2NhZmZvbGRpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBSZXNldCB0aGUgYm94LXNpemluZwoKKiwKKjpiZWZvcmUsCio6YWZ0ZXIgewogIC5ib3gtc2l6aW5nKGJvcmRlci1ib3gpOwp9CgoKLy8gQm9keSByZXNldAoKaHRtbCB7CiAgZm9udC1zaXplOiA2Mi41JTsKICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwwLDAsMCk7Cn0KCmJvZHkgewogIGZvbnQtZmFtaWx5OiBAZm9udC1mYW1pbHktYmFzZTsKICBmb250LXNpemU6IEBmb250LXNpemUtYmFzZTsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgY29sb3I6IEB0ZXh0LWNvbG9yOwogIGJhY2tncm91bmQtY29sb3I6IEBib2R5LWJnOwp9CgovLyBSZXNldCBmb250cyBmb3IgcmVsZXZhbnQgZWxlbWVudHMKaW5wdXQsCmJ1dHRvbiwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CgovLyBSZXNldCB1bnVzdWFsIEZpcmVmb3gtb24tQW5kcm9pZCBkZWZhdWx0IHN0eWxlLgovLwovLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9pc3N1ZXMvMjE0CgpidXR0b24sCmlucHV0LApzZWxlY3RbbXVsdGlwbGVdLAp0ZXh0YXJlYSB7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQoKCi8vIExpbmtzCgphIHsKICBjb2xvcjogQGxpbmstY29sb3I7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwoKICAmOmhvdmVyLAogICY6Zm9jdXMgewogICAgY29sb3I6IEBsaW5rLWhvdmVyLWNvbG9yOwogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQoKICAmOmZvY3VzIHsKICAgIC50YWItZm9jdXMoKTsKICB9Cn0KCgovLyBJbWFnZXMKCmltZyB7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLy8gUmVzcG9uc2l2ZSBpbWFnZXMgKGVuc3VyZSBpbWFnZXMgZG9uJ3Qgc2NhbGUgYmV5b25kIHRoZWlyIHBhcmVudHMpCi5pbWctcmVzcG9uc2l2ZSB7CiAgLmltZy1yZXNwb25zaXZlKCk7Cn0KCi8vIFJvdW5kZWQgY29ybmVycwouaW1nLXJvdW5kZWQgewogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLWxhcmdlOwp9CgovLyBJbWFnZSB0aHVtYm5haWxzCi8vCi8vIEhlYWRzIHVwISBUaGlzIGlzIG1peGluLWVkIGludG8gdGh1bWJuYWlscy5sZXNzIGZvciBgLnRodW1ibmFpbGAuCi5pbWctdGh1bWJuYWlsIHsKICBwYWRkaW5nOiBAdGh1bWJuYWlsLXBhZGRpbmc7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogIGJhY2tncm91bmQtY29sb3I6IEB0aHVtYm5haWwtYmc7CiAgYm9yZGVyOiAxcHggc29saWQgQHRodW1ibmFpbC1ib3JkZXI7CiAgYm9yZGVyLXJhZGl1czogQHRodW1ibmFpbC1ib3JkZXItcmFkaXVzOwogIC50cmFuc2l0aW9uKGFsbCAuMnMgZWFzZS1pbi1vdXQpOwoKICAvLyBLZWVwIHRoZW0gYXQgbW9zdCAxMDAlIHdpZGUKICAuaW1nLXJlc3BvbnNpdmUoaW5saW5lLWJsb2NrKTsKfQoKLy8gUGVyZmVjdCBjaXJjbGUKLmltZy1jaXJjbGUgewogIGJvcmRlci1yYWRpdXM6IDUwJTsgLy8gc2V0IHJhZGl1cyBpbiBwZXJjZW50cwp9CgoKLy8gSG9yaXpvbnRhbCBydWxlcwoKaHIgewogIG1hcmdpbi10b3A6ICAgIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyOiAwOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCBAaHItYm9yZGVyOwp9CgoKLy8gT25seSBkaXNwbGF5IGNvbnRlbnQgdG8gc2NyZWVuIHJlYWRlcnMKLy8KLy8gU2VlOiBodHRwOi8vYTExeXByb2plY3QuY29tL3Bvc3RzL2hvdy10by1oaWRlLWNvbnRlbnQvCgouc3Itb25seSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiAtMXB4OwogIHBhZGRpbmc6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAgMCAwIDApOwogIGJvcmRlcjogMDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/tables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVGFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdGFibGUgewogIG1heC13aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAdGFibGUtYmc7Cn0KdGggewogIHRleHQtYWxpZ246IGxlZnQ7Cn0KCgovLyBCYXNlbGluZSBzdHlsZXMKCi50YWJsZSB7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIC8vIENlbGxzCiAgdGhlYWQsCiAgdGJvZHksCiAgdGZvb3QgewogICAgPiB0ciB7CiAgICAgID4gdGgsCiAgICAgID4gdGQgewogICAgICAgIHBhZGRpbmc6IEB0YWJsZS1jZWxsLXBhZGRpbmc7CiAgICAgICAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIEB0YWJsZS1ib3JkZXItY29sb3I7CiAgICAgIH0KICAgIH0KICB9CiAgLy8gQm90dG9tIGFsaWduIGZvciBjb2x1bW4gaGVhZGluZ3MKICB0aGVhZCA+IHRyID4gdGggewogICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBAdGFibGUtYm9yZGVyLWNvbG9yOwogIH0KICAvLyBSZW1vdmUgdG9wIGJvcmRlciBmcm9tIHRoZWFkIGJ5IGRlZmF1bHQKICBjYXB0aW9uICsgdGhlYWQsCiAgY29sZ3JvdXAgKyB0aGVhZCwKICB0aGVhZDpmaXJzdC1jaGlsZCB7CiAgICB0cjpmaXJzdC1jaGlsZCB7CiAgICAgIHRoLCB0ZCB7CiAgICAgICAgYm9yZGVyLXRvcDogMDsKICAgICAgfQogICAgfQogIH0KICAvLyBBY2NvdW50IGZvciBtdWx0aXBsZSB0Ym9keSBpbnN0YW5jZXMKICB0Ym9keSArIHRib2R5IHsKICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCBAdGFibGUtYm9yZGVyLWNvbG9yOwogIH0KCiAgLy8gTmVzdGluZwogIC50YWJsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAYm9keS1iZzsKICB9Cn0KCgovLyBDb25kZW5zZWQgdGFibGUgdy8gaGFsZiBwYWRkaW5nCgoudGFibGUtY29uZGVuc2VkIHsKICB0aGVhZCwKICB0Ym9keSwKICB0Zm9vdCB7CiAgICA+IHRyIHsKICAgICAgPiB0aCwKICAgICAgPiB0ZCB7CiAgICAgICAgcGFkZGluZzogQHRhYmxlLWNvbmRlbnNlZC1jZWxsLXBhZGRpbmc7CiAgICAgIH0KICAgIH0KICB9Cn0KCgovLyBCb3JkZXJlZCB2ZXJzaW9uCi8vCi8vIEFkZCBib3JkZXJzIGFsbCBhcm91bmQgdGhlIHRhYmxlIGFuZCBiZXR3ZWVuIGFsbCB0aGUgY29sdW1ucy4KCi50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKICA+IHRoZWFkLAogID4gdGJvZHksCiAgPiB0Zm9vdCB7CiAgICA+IHRyIHsKICAgICAgPiB0aCwKICAgICAgPiB0ZCB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKICAgICAgfQogICAgfQogIH0KICA+IHRoZWFkIHsKICAgID4gdHIgewogICAgICA+IHRoLAogICAgICA+IHRkIHsKICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7CiAgICAgIH0KICAgIH0KICB9Cn0KCgovLyBaZWJyYS1zdHJpcGluZwovLwovLyBEZWZhdWx0IHplYnJhLXN0cmlwZSBzdHlsZXMgKGFsdGVybmF0aW5nIGdyYXkgYW5kIHRyYW5zcGFyZW50IGJhY2tncm91bmRzKQoKLnRhYmxlLXN0cmlwZWQgewogID4gdGJvZHkgewogICAgPiB0cjpudGgtY2hpbGQob2RkKSB7CiAgICAgID4gdGQsCiAgICAgID4gdGggewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IEB0YWJsZS1iZy1hY2NlbnQ7CiAgICAgIH0KICAgIH0KICB9Cn0KCgovLyBIb3ZlciBlZmZlY3QKLy8KLy8gUGxhY2VkIGhlcmUgc2luY2UgaXQgaGFzIHRvIGNvbWUgYWZ0ZXIgdGhlIHBvdGVudGlhbCB6ZWJyYSBzdHJpcGluZwoKLnRhYmxlLWhvdmVyIHsKICA+IHRib2R5IHsKICAgID4gdHI6aG92ZXIgewogICAgICA+IHRkLAogICAgICA+IHRoIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAdGFibGUtYmctaG92ZXI7CiAgICAgIH0KICAgIH0KICB9Cn0KCgovLyBUYWJsZSBjZWxsIHNpemluZwovLwovLyBSZXNldCBkZWZhdWx0IHRhYmxlIGJlaGF2aW9yCgp0YWJsZSBjb2xbY2xhc3MqPSJjb2wtIl0gewogIGZsb2F0OiBub25lOwogIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjsKfQp0YWJsZSB7CiAgdGQsCiAgdGggewogICAgJltjbGFzcyo9ImNvbC0iXSB7CiAgICAgIGZsb2F0OiBub25lOwogICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgfQogIH0KfQoKCi8vIFRhYmxlIGJhY2tncm91bmRzCi8vCi8vIEV4YWN0IHNlbGVjdG9ycyBiZWxvdyByZXF1aXJlZCB0byBvdmVycmlkZSBgLnRhYmxlLXN0cmlwZWRgIGFuZCBwcmV2ZW50Ci8vIGluaGVyaXRhbmNlIHRvIG5lc3RlZCB0YWJsZXMuCgoudGFibGUgPiB0aGVhZCA+IHRyLAoudGFibGUgPiB0Ym9keSA+IHRyLAoudGFibGUgPiB0Zm9vdCA+IHRyIHsKICA+IHRkLmFjdGl2ZSwKICA+IHRoLmFjdGl2ZSwKICAmLmFjdGl2ZSA+IHRkLAogICYuYWN0aXZlID4gdGggIHsKICAgIGJhY2tncm91bmQtY29sb3I6IEB0YWJsZS1iZy1hY3RpdmU7CiAgfQp9CgovLyBHZW5lcmF0ZSB0aGUgY29udGV4dHVhbCB2YXJpYW50cwoudGFibGUtcm93LXZhcmlhbnQoc3VjY2VzczsgQHN0YXRlLXN1Y2Nlc3MtYmc7IEBzdGF0ZS1zdWNjZXNzLWJvcmRlcik7Ci50YWJsZS1yb3ctdmFyaWFudChkYW5nZXI7IEBzdGF0ZS1kYW5nZXItYmc7IEBzdGF0ZS1kYW5nZXItYm9yZGVyKTsKLnRhYmxlLXJvdy12YXJpYW50KHdhcm5pbmc7IEBzdGF0ZS13YXJuaW5nLWJnOyBAc3RhdGUtd2FybmluZy1ib3JkZXIpOwoKCi8vIFJlc3BvbnNpdmUgdGFibGVzCi8vCi8vIFdyYXAgeW91ciB0YWJsZXMgaW4gYC50YWJsZS1zY3JvbGxhYmxlYCBhbmQgd2UnbGwgbWFrZSB0aGVtIG1vYmlsZSBmcmllbmRseQovLyBieSBlbmFibGluZyBob3Jpem9udGFsIHNjcm9sbGluZy4gT25seSBhcHBsaWVzIDw3NjhweC4gRXZlcnl0aGluZyBhYm92ZSB0aGF0Ci8vIHdpbGwgZGlzcGxheSBub3JtYWxseS4KCkBtZWRpYSAobWF4LXdpZHRoOiBAc2NyZWVuLXNtKSB7CiAgLnRhYmxlLXJlc3BvbnNpdmUgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgb3ZlcmZsb3cteTogaGlkZGVuOwogICAgb3ZlcmZsb3cteDogc2Nyb2xsOwogICAgYm9yZGVyOiAxcHggc29saWQgQHRhYmxlLWJvcmRlci1jb2xvcjsKCiAgICAvLyBUaWdodGVuIHVwIHNwYWNpbmcgYW5kIGdpdmUgYSBiYWNrZ3JvdW5kIGNvbG9yCiAgICA+IC50YWJsZSB7CiAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CgogICAgICAvLyBFbnN1cmUgdGhlIGNvbnRlbnQgZG9lc24ndCB3cmFwCiAgICAgID4gdGhlYWQsCiAgICAgID4gdGJvZHksCiAgICAgID4gdGZvb3QgewogICAgICAgID4gdHIgewogICAgICAgICAgPiB0aCwKICAgICAgICAgID4gdGQgewogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIFNwZWNpYWwgb3ZlcnJpZGVzIGZvciB0aGUgYm9yZGVyZWQgdGFibGVzCiAgICA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICAgIGJvcmRlcjogMDsKCiAgICAgIC8vIE51a2UgdGhlIGFwcHJvcHJpYXRlIGJvcmRlcnMgc28gdGhhdCB0aGUgcGFyZW50IGNhbiBoYW5kbGUgdGhlbQogICAgICA+IHRoZWFkLAogICAgICA+IHRib2R5LAogICAgICA+IHRmb290IHsKICAgICAgICA+IHRyIHsKICAgICAgICAgID4gdGg6Zmlyc3QtY2hpbGQsCiAgICAgICAgICA+IHRkOmZpcnN0LWNoaWxkIHsKICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDA7CiAgICAgICAgICB9CiAgICAgICAgICA+IHRoOmxhc3QtY2hpbGQsCiAgICAgICAgICA+IHRkOmxhc3QtY2hpbGQgewogICAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgID4gdHI6bGFzdC1jaGlsZCB7CiAgICAgICAgICA+IHRoLAogICAgICAgICAgPiB0ZCB7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/thumbnails.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVGh1bWJuYWlscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIE1peGluIGFuZCBhZGp1c3QgdGhlIHJlZ3VsYXIgaW1hZ2UgY2xhc3MKLnRodW1ibmFpbCB7CiAgLmltZy10aHVtYm5haWwoKTsKICBkaXNwbGF5OiBibG9jazsgLy8gT3ZlcnJpZGUgdGhlIGlubGluZS1ibG9jayBmcm9tIGAuaW1nLXRodW1ibmFpbGAKCiAgPiBpbWcgewogICAgLmltZy1yZXNwb25zaXZlKCk7CiAgfQp9CgoKLy8gQWRkIGEgaG92ZXIgc3RhdGUgZm9yIGxpbmtlZCB2ZXJzaW9ucyBvbmx5CmEudGh1bWJuYWlsOmhvdmVyLAphLnRodW1ibmFpbDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiBAbGluay1jb2xvcjsKfQoKLy8gSW1hZ2VzIGFuZCBjYXB0aW9ucwoudGh1bWJuYWlsID4gaW1nIHsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KLnRodW1ibmFpbCAuY2FwdGlvbiB7CiAgcGFkZGluZzogQHRodW1ibmFpbC1jYXB0aW9uLXBhZGRpbmc7CiAgY29sb3I6IEB0aHVtYm5haWwtY2FwdGlvbi1jb2xvcjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/tooltip.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVG9vbHRpcHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi50b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogQHppbmRleC10b29sdGlwOwogIGRpc3BsYXk6IGJsb2NrOwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgZm9udC1zaXplOiBAZm9udC1zaXplLXNtYWxsOwogIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgLm9wYWNpdHkoMCk7CgogICYuaW4gICAgIHsgLm9wYWNpdHkoLjkpOyB9CiAgJi50b3AgICAgeyBtYXJnaW4tdG9wOiAgLTNweDsgcGFkZGluZzogNXB4IDA7IH0KICAmLnJpZ2h0ICB7IG1hcmdpbi1sZWZ0OiAgM3B4OyBwYWRkaW5nOiAwIDVweDsgfQogICYuYm90dG9tIHsgbWFyZ2luLXRvcDogICAzcHg7IHBhZGRpbmc6IDVweCAwOyB9CiAgJi5sZWZ0ICAgeyBtYXJnaW4tbGVmdDogLTNweDsgcGFkZGluZzogMCA1cHg7IH0KfQoKLy8gV3JhcHBlciBmb3IgdGhlIHRvb2x0aXAgY29udGVudAoudG9vbHRpcC1pbm5lciB7CiAgbWF4LXdpZHRoOiBAdG9vbHRpcC1tYXgtd2lkdGg7CiAgcGFkZGluZzogM3B4IDhweDsKICBjb2xvcjogQHRvb2x0aXAtY29sb3I7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAdG9vbHRpcC1iZzsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwp9CgovLyBBcnJvd3MKLnRvb2x0aXAtYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci50b29sdGlwIHsKICAmLnRvcCAudG9vbHRpcC1hcnJvdyB7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLUB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLXdpZHRoOiBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aCAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYudG9wLWxlZnQgLnRvb2x0aXAtYXJyb3cgewogICAgYm90dG9tOiAwOwogICAgbGVmdDogNXB4OwogICAgYm9yZGVyLXdpZHRoOiBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aCAwOwogICAgYm9yZGVyLXRvcC1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQogICYudG9wLXJpZ2h0IC50b29sdGlwLWFycm93IHsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiA1cHg7CiAgICBib3JkZXItd2lkdGg6IEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoIDA7CiAgICBib3JkZXItdG9wLWNvbG9yOiBAdG9vbHRpcC1hcnJvdy1jb2xvcjsKICB9CiAgJi5yaWdodCAudG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDA7CiAgICBtYXJnaW4tdG9wOiAtQHRvb2x0aXAtYXJyb3ctd2lkdGg7CiAgICBib3JkZXItd2lkdGg6IEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoIDA7CiAgICBib3JkZXItcmlnaHQtY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLmxlZnQgLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiA1MCU7CiAgICByaWdodDogMDsKICAgIG1hcmdpbi10b3A6IC1AdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogQHRvb2x0aXAtYXJyb3ctd2lkdGggMCBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiBAdG9vbHRpcC1hcnJvdy1jb2xvcjsKICB9CiAgJi5ib3R0b20gLnRvb2x0aXAtYXJyb3cgewogICAgdG9wOiAwOwogICAgbGVmdDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC1AdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci13aWR0aDogMCBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLmJvdHRvbS1sZWZ0IC50b29sdGlwLWFycm93IHsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDVweDsKICAgIGJvcmRlci13aWR0aDogMCBAdG9vbHRpcC1hcnJvdy13aWR0aCBAdG9vbHRpcC1hcnJvdy13aWR0aDsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEB0b29sdGlwLWFycm93LWNvbG9yOwogIH0KICAmLmJvdHRvbS1yaWdodCAudG9vbHRpcC1hcnJvdyB7CiAgICB0b3A6IDA7CiAgICByaWdodDogNXB4OwogICAgYm9yZGVyLXdpZHRoOiAwIEB0b29sdGlwLWFycm93LXdpZHRoIEB0b29sdGlwLWFycm93LXdpZHRoOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHRvb2x0aXAtYXJyb3ctY29sb3I7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/type.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVHlwb2dyYXBoeQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIEJvZHkgdGV4dAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpwIHsKICBtYXJnaW46IDAgMCAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7Cn0KLmxlYWQgewogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBmb250LXNpemU6IChAZm9udC1zaXplLWJhc2UgKiAxLjE1KTsKICBmb250LXdlaWdodDogMjAwOwogIGxpbmUtaGVpZ2h0OiAxLjQ7CgogIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgZm9udC1zaXplOiAoQGZvbnQtc2l6ZS1iYXNlICogMS41KTsKICB9Cn0KCgovLyBFbXBoYXNpcyAmIG1pc2MKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gRXg6IDE0cHggYmFzZSBmb250ICogODUlID0gYWJvdXQgMTJweApzbWFsbCAgIHsgZm9udC1zaXplOiA4NSU7IH0KCi8vIFVuZG8gYnJvd3NlciBkZWZhdWx0IHN0eWxpbmcKY2l0ZSAgICB7IGZvbnQtc3R5bGU6IG5vcm1hbDsgfQoKLy8gQ29udGV4dHVhbCBlbXBoYXNpcwoudGV4dC1tdXRlZCAgICAgICAgICB7IGNvbG9yOiBAdGV4dC1tdXRlZDsgfQoudGV4dC1wcmltYXJ5ICAgICAgICB7IGNvbG9yOiBAYnJhbmQtcHJpbWFyeTsgfQoudGV4dC13YXJuaW5nICAgICAgICB7IGNvbG9yOiBAc3RhdGUtd2FybmluZy10ZXh0OyB9Ci50ZXh0LWRhbmdlciAgICAgICAgIHsgY29sb3I6IEBzdGF0ZS1kYW5nZXItdGV4dDsgfQoudGV4dC1zdWNjZXNzICAgICAgICB7IGNvbG9yOiBAc3RhdGUtc3VjY2Vzcy10ZXh0OyB9Ci50ZXh0LWluZm8gICAgICAgICAgIHsgY29sb3I6IEBzdGF0ZS1pbmZvLXRleHQ7IH0KCi8vIEFsaWdubWVudAoudGV4dC1sZWZ0ICAgICAgICAgICB7IHRleHQtYWxpZ246IGxlZnQ7IH0KLnRleHQtcmlnaHQgICAgICAgICAgeyB0ZXh0LWFsaWduOiByaWdodDsgfQoudGV4dC1jZW50ZXIgICAgICAgICB7IHRleHQtYWxpZ246IGNlbnRlcjsgfQoKCi8vIEhlYWRpbmdzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsCi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYgewogIGZvbnQtZmFtaWx5OiBAaGVhZGluZ3MtZm9udC1mYW1pbHk7CiAgZm9udC13ZWlnaHQ6IEBoZWFkaW5ncy1mb250LXdlaWdodDsKICBsaW5lLWhlaWdodDogQGhlYWRpbmdzLWxpbmUtaGVpZ2h0OwogIHNtYWxsIHsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIGNvbG9yOiBAaGVhZGluZ3Mtc21hbGwtY29sb3I7CiAgfQp9CgpoMSwKaDIsCmgzIHsKICBtYXJnaW4tdG9wOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgbWFyZ2luLWJvdHRvbTogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpOwp9Cmg0LApoNSwKaDYgewogIG1hcmdpbi10b3A6IChAbGluZS1oZWlnaHQtY29tcHV0ZWQgLyAyKTsKICBtYXJnaW4tYm90dG9tOiAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMik7Cn0KCmgxLCAuaDEgeyBmb250LXNpemU6IGZsb29yKEBmb250LXNpemUtYmFzZSAqIDIuNjApOyB9IC8vIH4zNnB4CmgyLCAuaDIgeyBmb250LXNpemU6IGZsb29yKEBmb250LXNpemUtYmFzZSAqIDIuMTUpOyB9IC8vIH4zMHB4CmgzLCAuaDMgeyBmb250LXNpemU6IGNlaWwoQGZvbnQtc2l6ZS1iYXNlICogMS43MCk7IH0gLy8gfjI0cHgKaDQsIC5oNCB7IGZvbnQtc2l6ZTogY2VpbChAZm9udC1zaXplLWJhc2UgKiAxLjI1KTsgfSAvLyB+MThweApoNSwgLmg1IHsgZm9udC1zaXplOiAgQGZvbnQtc2l6ZS1iYXNlOyB9Cmg2LCAuaDYgeyBmb250LXNpemU6IGNlaWwoQGZvbnQtc2l6ZS1iYXNlICogMC44NSk7IH0gLy8gfjEycHgKCmgxIHNtYWxsLCAuaDEgc21hbGwgeyBmb250LXNpemU6IGNlaWwoQGZvbnQtc2l6ZS1iYXNlICogMS43MCk7IH0gLy8gfjI0cHgKaDIgc21hbGwsIC5oMiBzbWFsbCB7IGZvbnQtc2l6ZTogY2VpbChAZm9udC1zaXplLWJhc2UgKiAxLjI1KTsgfSAvLyB+MThweApoMyBzbWFsbCwgLmgzIHNtYWxsLApoNCBzbWFsbCwgLmg0IHNtYWxsIHsgZm9udC1zaXplOiBAZm9udC1zaXplLWJhc2U7IH0KCgovLyBQYWdlIGhlYWRlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoucGFnZS1oZWFkZXIgewogIHBhZGRpbmctYm90dG9tOiAoKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpIC0gMSk7CiAgbWFyZ2luOiAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkICogMikgMCBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIEBwYWdlLWhlYWRlci1ib3JkZXItY29sb3I7Cn0KCgoKLy8gTGlzdHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFVub3JkZXJlZCBhbmQgT3JkZXJlZCBsaXN0cwp1bCwKb2wgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogKEBsaW5lLWhlaWdodC1jb21wdXRlZCAvIDIpOwogIHVsLAogIG9sewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KCi8vIExpc3Qgb3B0aW9ucwoKLy8gVW5zdHlsZWQga2VlcHMgbGlzdCBpdGVtcyBibG9jayBsZXZlbCwganVzdCByZW1vdmVzIGRlZmF1bHQgYnJvd3NlciBwYWRkaW5nIGFuZCBsaXN0LXN0eWxlCi5saXN0LXVuc3R5bGVkIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQovLyBJbmxpbmUgdHVybnMgbGlzdCBpdGVtcyBpbnRvIGlubGluZS1ibG9jawoubGlzdC1pbmxpbmUgewogIC5saXN0LXVuc3R5bGVkKCk7CiAgPiBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nLWxlZnQ6IDVweDsKICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKICB9Cn0KCi8vIERlc2NyaXB0aW9uIExpc3RzCmRsIHsKICBtYXJnaW4tYm90dG9tOiBAbGluZS1oZWlnaHQtY29tcHV0ZWQ7Cn0KZHQsCmRkIHsKICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7Cn0KZHQgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CmRkIHsKICBtYXJnaW4tbGVmdDogMDsgLy8gVW5kbyBicm93c2VyIGRlZmF1bHQKfQoKLy8gSG9yaXpvbnRhbCBkZXNjcmlwdGlvbiBsaXN0cwovLwovLyBEZWZhdWx0cyB0byBiZWluZyBzdGFja2VkIHdpdGhvdXQgYW55IG9mIHRoZSBiZWxvdyBzdHlsZXMgYXBwbGllZCwgdW50aWwgdGhlCi8vIGdyaWQgYnJlYWtwb2ludCBpcyByZWFjaGVkIChkZWZhdWx0IG9mIH43NjhweCkuCgpAbWVkaWEgKG1pbi13aWR0aDogQGdyaWQtZmxvYXQtYnJlYWtwb2ludCkgewogIC5kbC1ob3Jpem9udGFsIHsKICAgIGR0IHsKICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIHdpZHRoOiAoQGNvbXBvbmVudC1vZmZzZXQtaG9yaXpvbnRhbCAtIDIwKTsKICAgICAgY2xlYXI6IGxlZnQ7CiAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAudGV4dC1vdmVyZmxvdygpOwogICAgfQogICAgZGQgewogICAgICBtYXJnaW4tbGVmdDogQGNvbXBvbmVudC1vZmZzZXQtaG9yaXpvbnRhbDsKICAgICAgLmNsZWFyZml4KCk7IC8vIENsZWFyIHRoZSBmbG9hdGVkIGBkdGAgaWYgYW4gZW1wdHkgYGRkYCBpcyBwcmVzZW50CiAgICB9CiAgfQp9CgovLyBNSVNDCi8vIC0tLS0KCi8vIEFiYnJldmlhdGlvbnMgYW5kIGFjcm9ueW1zCmFiYnJbdGl0bGVdLAovLyBBZGRlZCBkYXRhLSogYXR0cmlidXRlIHRvIGhlbHAgb3V0IG91ciB0b29sdGlwIHBsdWdpbiwgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvNTI1NwphYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHsKICBjdXJzb3I6IGhlbHA7CiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCBAYWJici1ib3JkZXItY29sb3I7Cn0KYWJici5pbml0aWFsaXNtIHsKICBmb250LXNpemU6IDkwJTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CgovLyBCbG9ja3F1b3RlcwpibG9ja3F1b3RlIHsKICBwYWRkaW5nOiAoQGxpbmUtaGVpZ2h0LWNvbXB1dGVkIC8gMikgQGxpbmUtaGVpZ2h0LWNvbXB1dGVkOwogIG1hcmdpbjogMCAwIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBib3JkZXItbGVmdDogNXB4IHNvbGlkIEBibG9ja3F1b3RlLWJvcmRlci1jb2xvcjsKICBwIHsKICAgIGZvbnQtc2l6ZTogKEBmb250LXNpemUtYmFzZSAqIDEuMjUpOwogICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI1OwogIH0KICBwOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgc21hbGwgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBsaW5lLWhlaWdodDogQGxpbmUtaGVpZ2h0LWJhc2U7CiAgICBjb2xvcjogQGJsb2NrcXVvdGUtc21hbGwtY29sb3I7CiAgICAmOmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcMjAxNCBcMDBBMCc7Ly8gRU0gREFTSCwgTkJTUAogICAgfQogIH0KCiAgLy8gRmxvYXQgcmlnaHQgd2l0aCB0ZXh0LWFsaWduOiByaWdodAogICYucHVsbC1yaWdodCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgQGJsb2NrcXVvdGUtYm9yZGVyLWNvbG9yOwogICAgYm9yZGVyLWxlZnQ6IDA7CiAgICBwLAogICAgc21hbGwgewogICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIH0KICAgIHNtYWxsIHsKICAgICAgJjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICB9CiAgICAgICY6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICdcMDBBMCBcMjAxNCc7Ly8gTkJTUCwgRU0gREFTSAogICAgICB9CiAgICB9CiAgfQp9CgovLyBRdW90ZXMKcTpiZWZvcmUsCnE6YWZ0ZXIsCmJsb2NrcXVvdGU6YmVmb3JlLApibG9ja3F1b3RlOmFmdGVyIHsKICBjb250ZW50OiAiIjsKfQoKLy8gQWRkcmVzc2VzCmFkZHJlc3MgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi1ib3R0b206IEBsaW5lLWhlaWdodC1jb21wdXRlZDsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IEBsaW5lLWhlaWdodC1iYXNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/utilities.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVXRpbGl0eSBjbGFzc2VzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gRmxvYXRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5jbGVhcmZpeCB7CiAgLmNsZWFyZml4KCk7Cn0KLnB1bGwtcmlnaHQgewogIGZsb2F0OiByaWdodCAhaW1wb3J0YW50Owp9Ci5wdWxsLWxlZnQgewogIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCgovLyBUb2dnbGluZyBjb250ZW50Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi5oaWRlIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnNob3cgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KLmludmlzaWJsZSB7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwp9Ci50ZXh0LWhpZGUgewogIC5oaWRlLXRleHQoKTsKfQoKCi8vIEZvciBBZmZpeCBwbHVnaW4KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLmFmZml4IHsKICBwb3NpdGlvbjogZml4ZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/variables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gVmFyaWFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gR2xvYmFsIHZhbHVlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gR3JheXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGdyYXktZGFya2VyOiAgICAgICAgICAgIGxpZ2h0ZW4oIzAwMCwgMTMuNSUpOyAvLyAjMjIyCkBncmF5LWRhcms6ICAgICAgICAgICAgICBsaWdodGVuKCMwMDAsIDIwJSk7ICAgLy8gIzMzMwpAZ3JheTogICAgICAgICAgICAgICAgICAgbGlnaHRlbigjMDAwLCAzMy41JSk7IC8vICM1NTUKQGdyYXktbGlnaHQ6ICAgICAgICAgICAgIGxpZ2h0ZW4oIzAwMCwgNjAlKTsgICAvLyAjOTk5CkBncmF5LWxpZ2h0ZXI6ICAgICAgICAgICBsaWdodGVuKCMwMDAsIDkzLjUlKTsgLy8gI2VlZQoKLy8gQnJhbmQgY29sb3JzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBicmFuZC1wcmltYXJ5OiAgICAgICAgICM0MjhiY2E7CkBicmFuZC1zdWNjZXNzOiAgICAgICAgICM1Y2I4NWM7CkBicmFuZC13YXJuaW5nOiAgICAgICAgICNmMGFkNGU7CkBicmFuZC1kYW5nZXI6ICAgICAgICAgICNkOTUzNGY7CkBicmFuZC1pbmZvOiAgICAgICAgICAgICM1YmMwZGU7CgovLyBTY2FmZm9sZGluZwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAYm9keS1iZzogICAgICAgICAgICAgICAjZmZmOwpAdGV4dC1jb2xvcjogICAgICAgICAgICBAZ3JheS1kYXJrOwoKLy8gTGlua3MKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGxpbmstY29sb3I6ICAgICAgICAgICAgQGJyYW5kLXByaW1hcnk7CkBsaW5rLWhvdmVyLWNvbG9yOiAgICAgIGRhcmtlbihAbGluay1jb2xvciwgMTUlKTsKCi8vIFR5cG9ncmFwaHkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwpAZm9udC1mYW1pbHktc2VyaWY6ICAgICAgIEdlb3JnaWEsICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CkBmb250LWZhbWlseS1tb25vc3BhY2U6ICAgTW9uYWNvLCBNZW5sbywgQ29uc29sYXMsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKQGZvbnQtZmFtaWx5LWJhc2U6ICAgICAgICBAZm9udC1mYW1pbHktc2Fucy1zZXJpZjsKCkBmb250LXNpemUtYmFzZTogICAgICAgICAgMTRweDsKQGZvbnQtc2l6ZS1sYXJnZTogICAgICAgICBjZWlsKEBmb250LXNpemUtYmFzZSAqIDEuMjUpOyAvLyB+MThweApAZm9udC1zaXplLXNtYWxsOiAgICAgICAgIGNlaWwoQGZvbnQtc2l6ZS1iYXNlICogMC44NSk7IC8vIH4xMnB4CgpAbGluZS1oZWlnaHQtYmFzZTogICAgICAgIDEuNDI4NTcxNDI5OyAvLyAyMC8xNApAbGluZS1oZWlnaHQtY29tcHV0ZWQ6ICAgIGZsb29yKEBmb250LXNpemUtYmFzZSAqIEBsaW5lLWhlaWdodC1iYXNlKTsgLy8gfjIwcHgKCkBoZWFkaW5ncy1mb250LWZhbWlseTogICAgQGZvbnQtZmFtaWx5LWJhc2U7CkBoZWFkaW5ncy1mb250LXdlaWdodDogICAgNTAwOwpAaGVhZGluZ3MtbGluZS1oZWlnaHQ6ICAgIDEuMTsKCi8vIEljb25vZ3JhcGh5Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBpY29uLWZvbnQtcGF0aDogICAgICAgICAgIi4uL2ZvbnRzLyI7CkBpY29uLWZvbnQtbmFtZTogICAgICAgICAgImdseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIiOwoKCi8vIENvbXBvbmVudHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBCYXNlZCBvbiAxNHB4IGZvbnQtc2l6ZSBhbmQgMS40MjggbGluZS1oZWlnaHQgKH4yMHB4IHRvIHN0YXJ0KQoKQHBhZGRpbmctYmFzZS12ZXJ0aWNhbDogICAgICAgICAgNnB4OwpAcGFkZGluZy1iYXNlLWhvcml6b250YWw6ICAgICAgICAxMnB4OwoKQHBhZGRpbmctbGFyZ2UtdmVydGljYWw6ICAgICAgICAgMTBweDsKQHBhZGRpbmctbGFyZ2UtaG9yaXpvbnRhbDogICAgICAgMTZweDsKCkBwYWRkaW5nLXNtYWxsLXZlcnRpY2FsOiAgICAgICAgIDVweDsKQHBhZGRpbmctc21hbGwtaG9yaXpvbnRhbDogICAgICAgMTBweDsKCkBsaW5lLWhlaWdodC1sYXJnZTogICAgICAgICAgICAgIDEuMzM7CkBsaW5lLWhlaWdodC1zbWFsbDogICAgICAgICAgICAgIDEuNTsKCkBib3JkZXItcmFkaXVzLWJhc2U6ICAgICAgICAgICAgIDRweDsKQGJvcmRlci1yYWRpdXMtbGFyZ2U6ICAgICAgICAgICAgNnB4OwpAYm9yZGVyLXJhZGl1cy1zbWFsbDogICAgICAgICAgICAzcHg7CgpAY29tcG9uZW50LWFjdGl2ZS1iZzogICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKCkBjYXJldC13aWR0aC1iYXNlOiAgICAgICAgICAgICAgIDRweDsKQGNhcmV0LXdpZHRoLWxhcmdlOiAgICAgICAgICAgICAgNXB4OwoKLy8gVGFibGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkB0YWJsZS1jZWxsLXBhZGRpbmc6ICAgICAgICAgICAgICAgICA4cHg7CkB0YWJsZS1jb25kZW5zZWQtY2VsbC1wYWRkaW5nOiAgICAgICA1cHg7CgpAdGFibGUtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQ7IC8vIG92ZXJhbGwgYmFja2dyb3VuZC1jb2xvcgpAdGFibGUtYmctYWNjZW50OiAgICAgICAgICAgICAgICAgICAgI2Y5ZjlmOTsgLy8gZm9yIHN0cmlwaW5nCkB0YWJsZS1iZy1ob3ZlcjogICAgICAgICAgICAgICAgICAgICAjZjVmNWY1OwpAdGFibGUtYmctYWN0aXZlOiAgICAgICAgICAgICAgICAgICAgQHRhYmxlLWJnLWhvdmVyOwoKQHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICNkZGQ7IC8vIHRhYmxlIGFuZCBjZWxsIGJvcmRlcgoKCi8vIEJ1dHRvbnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGJ0bi1mb250LXdlaWdodDogICAgICAgICAgICAgICAgbm9ybWFsOwoKQGJ0bi1kZWZhdWx0LWNvbG9yOiAgICAgICAgICAgICAgIzMzMzsKQGJ0bi1kZWZhdWx0LWJnOiAgICAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi1kZWZhdWx0LWJvcmRlcjogICAgICAgICAgICAgI2NjYzsKCkBidG4tcHJpbWFyeS1jb2xvcjogICAgICAgICAgICAgICNmZmY7CkBidG4tcHJpbWFyeS1iZzogICAgICAgICAgICAgICAgIEBicmFuZC1wcmltYXJ5OwpAYnRuLXByaW1hcnktYm9yZGVyOiAgICAgICAgICAgICBkYXJrZW4oQGJ0bi1wcmltYXJ5LWJnLCA1JSk7CgpAYnRuLXN1Y2Nlc3MtY29sb3I6ICAgICAgICAgICAgICAjZmZmOwpAYnRuLXN1Y2Nlc3MtYmc6ICAgICAgICAgICAgICAgICBAYnJhbmQtc3VjY2VzczsKQGJ0bi1zdWNjZXNzLWJvcmRlcjogICAgICAgICAgICAgZGFya2VuKEBidG4tc3VjY2Vzcy1iZywgNSUpOwoKQGJ0bi13YXJuaW5nLWNvbG9yOiAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi13YXJuaW5nLWJnOiAgICAgICAgICAgICAgICAgQGJyYW5kLXdhcm5pbmc7CkBidG4td2FybmluZy1ib3JkZXI6ICAgICAgICAgICAgIGRhcmtlbihAYnRuLXdhcm5pbmctYmcsIDUlKTsKCkBidG4tZGFuZ2VyLWNvbG9yOiAgICAgICAgICAgICAgICNmZmY7CkBidG4tZGFuZ2VyLWJnOiAgICAgICAgICAgICAgICAgIEBicmFuZC1kYW5nZXI7CkBidG4tZGFuZ2VyLWJvcmRlcjogICAgICAgICAgICAgIGRhcmtlbihAYnRuLWRhbmdlci1iZywgNSUpOwoKQGJ0bi1pbmZvLWNvbG9yOiAgICAgICAgICAgICAgICAgI2ZmZjsKQGJ0bi1pbmZvLWJnOiAgICAgICAgICAgICAgICAgICAgQGJyYW5kLWluZm87CkBidG4taW5mby1ib3JkZXI6ICAgICAgICAgICAgICAgIGRhcmtlbihAYnRuLWluZm8tYmcsIDUlKTsKCkBidG4tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgIEBncmF5LWxpZ2h0OwoKCi8vIEZvcm1zCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBpbnB1dC1iZzogICAgICAgICAgICAgICAgICAgICAgICNmZmY7CkBpbnB1dC1iZy1kaXNhYmxlZDogICAgICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7CgpAaW5wdXQtY29sb3I6ICAgICAgICAgICAgICAgICAgICBAZ3JheTsKQGlucHV0LWJvcmRlcjogICAgICAgICAgICAgICAgICAgI2NjYzsKQGlucHV0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgQGJvcmRlci1yYWRpdXMtYmFzZTsKQGlucHV0LWJvcmRlci1mb2N1czogICAgICAgICAgICAgIzY2YWZlOTsKCkBpbnB1dC1jb2xvci1wbGFjZWhvbGRlcjogICAgICAgIEBncmF5LWxpZ2h0OwoKQGlucHV0LWhlaWdodC1iYXNlOiAgICAgICAgICAgICAgKEBsaW5lLWhlaWdodC1jb21wdXRlZCArIChAcGFkZGluZy1iYXNlLXZlcnRpY2FsICogMikgKyAyKTsKQGlucHV0LWhlaWdodC1sYXJnZTogICAgICAgICAgICAgKGZsb29yKEBmb250LXNpemUtbGFyZ2UgKiBAbGluZS1oZWlnaHQtbGFyZ2UpICsgKEBwYWRkaW5nLWxhcmdlLXZlcnRpY2FsICogMikgKyAyKTsKQGlucHV0LWhlaWdodC1zbWFsbDogICAgICAgICAgICAgKGZsb29yKEBmb250LXNpemUtc21hbGwgKiBAbGluZS1oZWlnaHQtc21hbGwpICsgKEBwYWRkaW5nLXNtYWxsLXZlcnRpY2FsICogMikgKyAyKTsKCkBsZWdlbmQtY29sb3I6ICAgICAgICAgICAgICAgICAgIEBncmF5LWRhcms7CkBsZWdlbmQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICNlNWU1ZTU7CgpAaW5wdXQtZ3JvdXAtYWRkb24tYmc6ICAgICAgICAgICBAZ3JheS1saWdodGVyOwpAaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOiBAaW5wdXQtYm9yZGVyOwoKCi8vIERyb3Bkb3ducwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAjZmZmOwpAZHJvcGRvd24tYm9yZGVyOiAgICAgICAgICAgICAgICByZ2JhKDAsMCwwLC4xNSk7CkBkcm9wZG93bi1mYWxsYmFjay1ib3JkZXI6ICAgICAgICNjY2M7CkBkcm9wZG93bi1kaXZpZGVyLWJnOiAgICAgICAgICAgICNlNWU1ZTU7CgpAZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICAgICAjZmZmOwpAZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICAgICAgICBAY29tcG9uZW50LWFjdGl2ZS1iZzsKCkBkcm9wZG93bi1saW5rLWNvbG9yOiAgICAgICAgICAgIEBncmF5LWRhcms7CkBkcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiAgICAgICNmZmY7CkBkcm9wZG93bi1saW5rLWhvdmVyLWJnOiAgICAgICAgIEBkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzsKCkBkcm9wZG93bi1saW5rLWRpc2FibGVkLWNvbG9yOiAgIEBncmF5LWxpZ2h0OwoKQGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgQGdyYXktbGlnaHQ7CgpAZHJvcGRvd24tY2FyZXQtY29sb3I6ICAgICAgICAgICAjMDAwOwoKCi8vIENPTVBPTkVOVCBWQVJJQUJMRVMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBaLWluZGV4IG1hc3RlciBsaXN0Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVXNlZCBmb3IgYSBiaXJkJ3MgZXllIHZpZXcgb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcwovLyBUcnkgdG8gYXZvaWQgY3VzdG9taXppbmcgdGhlc2UgOikKCkB6aW5kZXgtbmF2YmFyOiAgICAgICAgICAgIDEwMDA7CkB6aW5kZXgtZHJvcGRvd246ICAgICAgICAgIDEwMDA7CkB6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgIDEwMTA7CkB6aW5kZXgtdG9vbHRpcDogICAgICAgICAgIDEwMzA7CkB6aW5kZXgtbmF2YmFyLWZpeGVkOiAgICAgIDEwMzA7CkB6aW5kZXgtbW9kYWwtYmFja2dyb3VuZDogIDEwNDA7CkB6aW5kZXgtbW9kYWw6ICAgICAgICAgICAgIDEwNTA7CgovLyBNZWRpYSBxdWVyaWVzIGJyZWFrcG9pbnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBFeHRyYSBzbWFsbCBzY3JlZW4gLyBwaG9uZQpAc2NyZWVuLXhzOiAgICAgICAgICAgICAgICAgIDQ4MHB4OwpAc2NyZWVuLXBob25lOiAgICAgICAgICAgICAgIEBzY3JlZW4teHM7CgovLyBTbWFsbCBzY3JlZW4gLyB0YWJsZXQKQHNjcmVlbi1zbTogICAgICAgICAgICAgICAgICA3NjhweDsKQHNjcmVlbi10YWJsZXQ6ICAgICAgICAgICAgICBAc2NyZWVuLXNtOwoKLy8gTWVkaXVtIHNjcmVlbiAvIGRlc2t0b3AKQHNjcmVlbi1tZDogICAgICAgICAgICAgICAgICA5OTJweDsKQHNjcmVlbi1kZXNrdG9wOiAgICAgICAgICAgICBAc2NyZWVuLW1kOwoKLy8gTGFyZ2Ugc2NyZWVuIC8gd2lkZSBkZXNrdG9wCkBzY3JlZW4tbGc6ICAgICAgICAgICAgICAgICAgMTIwMHB4OwpAc2NyZWVuLWxnLWRlc2t0b3A6ICAgICAgICAgIEBzY3JlZW4tbGc7CgovLyBTbyBtZWRpYSBxdWVyaWVzIGRvbid0IG92ZXJsYXAgd2hlbiByZXF1aXJlZCwgcHJvdmlkZSBhIG1heGltdW0KQHNjcmVlbi14cy1tYXg6ICAgICAgICAgICAgICAoQHNjcmVlbi1zbSAtIDEpOwpAc2NyZWVuLXNtLW1heDogICAgICAgICAgICAgIChAc2NyZWVuLW1kIC0gMSk7CkBzY3JlZW4tbWQtbWF4OiAgICAgICAgICAgICAgKEBzY3JlZW4tbGcgLSAxKTsKCgovLyBHcmlkIHN5c3RlbQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gTnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQgc3lzdGVtCkBncmlkLWNvbHVtbnM6ICAgICAgICAgICAgICAxMjsKLy8gUGFkZGluZywgdG8gYmUgZGl2aWRlZCBieSB0d28gYW5kIGFwcGxpZWQgdG8gdGhlIGxlZnQgYW5kIHJpZ2h0IG9mIGFsbCBjb2x1bW5zCkBncmlkLWd1dHRlci13aWR0aDogICAgICAgICAzMHB4OwovLyBQb2ludCBhdCB3aGljaCB0aGUgbmF2YmFyIHN0b3BzIGNvbGxhcHNpbmcKQGdyaWQtZmxvYXQtYnJlYWtwb2ludDogICAgIEBzY3JlZW4tdGFibGV0OwoKCi8vIE5hdmJhcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBCYXNpY3Mgb2YgYSBuYXZiYXIKQG5hdmJhci1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICA1MHB4OwpAbmF2YmFyLW1hcmdpbi1ib3R0b206ICAgICAgICAgICAgIEBsaW5lLWhlaWdodC1jb21wdXRlZDsKQG5hdmJhci1kZWZhdWx0LWNvbG9yOiAgICAgICAgICAgICAjNzc3OwpAbmF2YmFyLWRlZmF1bHQtYmc6ICAgICAgICAgICAgICAgICNmOGY4Zjg7CkBuYXZiYXItZGVmYXVsdC1ib3JkZXI6ICAgICAgICAgICAgZGFya2VuKEBuYXZiYXItZGVmYXVsdC1iZywgNi41JSk7CkBuYXZiYXItYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgQGJvcmRlci1yYWRpdXMtYmFzZTsKQG5hdmJhci1wYWRkaW5nLWhvcml6b250YWw6ICAgICAgICBmbG9vcihAZ3JpZC1ndXR0ZXItd2lkdGggLyAyKTsKQG5hdmJhci1wYWRkaW5nLXZlcnRpY2FsOiAgICAgICAgICAoKEBuYXZiYXItaGVpZ2h0IC0gQGxpbmUtaGVpZ2h0LWNvbXB1dGVkKSAvIDIpOwoKLy8gTmF2YmFyIGxpbmtzCkBuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICAjNzc3OwpAbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgIzMzMzsKQG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItYmc6ICAgICAgICAgICAgIHRyYW5zcGFyZW50OwpAbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAgIzU1NTsKQG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWJnOiAgICAgICAgICAgIGRhcmtlbihAbmF2YmFyLWRlZmF1bHQtYmcsIDYuNSUpOwpAbmF2YmFyLWRlZmF1bHQtbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgI2NjYzsKQG5hdmJhci1kZWZhdWx0LWxpbmstZGlzYWJsZWQtYmc6ICAgICAgICAgIHRyYW5zcGFyZW50OwoKLy8gTmF2YmFyIGJyYW5kIGxhYmVsCkBuYXZiYXItZGVmYXVsdC1icmFuZC1jb2xvcjogICAgICAgICAgICAgICBAbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjsKQG5hdmJhci1kZWZhdWx0LWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgICAgIGRhcmtlbihAbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvciwgMTAlKTsKQG5hdmJhci1kZWZhdWx0LWJyYW5kLWhvdmVyLWJnOiAgICAgICAgICAgIHRyYW5zcGFyZW50OwoKLy8gTmF2YmFyIHRvZ2dsZQpAbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiAgICAgICAgICAgI2RkZDsKQG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogICAgICAgICNjY2M7CkBuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiAgICAgICAjZGRkOwoKCi8vIEludmVydGVkIG5hdmJhcgovLwovLyBSZXNldCBpbnZlcnRlZCBuYXZiYXIgYmFzaWNzCkBuYXZiYXItaW52ZXJzZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHQ7CkBuYXZiYXItaW52ZXJzZS1iZzogICAgICAgICAgICAgICAgICAgICAgICAgIzIyMjsKQG5hdmJhci1pbnZlcnNlLWJvcmRlcjogICAgICAgICAgICAgICAgICAgICBkYXJrZW4oQG5hdmJhci1pbnZlcnNlLWJnLCAxMCUpOwoKLy8gSW52ZXJ0ZWQgbmF2YmFyIGxpbmtzCkBuYXZiYXItaW52ZXJzZS1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHQ7CkBuYXZiYXItaW52ZXJzZS1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICAgI2ZmZjsKQG5hdmJhci1pbnZlcnNlLWxpbmstaG92ZXItYmc6ICAgICAgICAgICAgICB0cmFuc3BhcmVudDsKQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgICBAbmF2YmFyLWludmVyc2UtbGluay1ob3Zlci1jb2xvcjsKQG5hdmJhci1pbnZlcnNlLWxpbmstYWN0aXZlLWJnOiAgICAgICAgICAgICBkYXJrZW4oQG5hdmJhci1pbnZlcnNlLWJnLCAxMCUpOwpAbmF2YmFyLWludmVyc2UtbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgICM0NDQ7CkBuYXZiYXItaW52ZXJzZS1saW5rLWRpc2FibGVkLWJnOiAgICAgICAgICAgdHJhbnNwYXJlbnQ7CgovLyBJbnZlcnRlZCBuYXZiYXIgYnJhbmQgbGFiZWwKQG5hdmJhci1pbnZlcnNlLWJyYW5kLWNvbG9yOiAgICAgICAgICAgICAgICBAbmF2YmFyLWludmVyc2UtbGluay1jb2xvcjsKQG5hdmJhci1pbnZlcnNlLWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgICAgICAjZmZmOwpAbmF2YmFyLWludmVyc2UtYnJhbmQtaG92ZXItYmc6ICAgICAgICAgICAgIHRyYW5zcGFyZW50OwoKLy8gSW52ZXJ0ZWQgbmF2YmFyIHNlYXJjaAovLyBOb3JtYWwgbmF2YmFyIG5lZWRzIG5vIHNwZWNpYWwgc3R5bGVzIG9yIHZhcnMKQG5hdmJhci1pbnZlcnNlLXNlYXJjaC1iZzogICAgICAgICAgICAgICAgICBsaWdodGVuKEBuYXZiYXItaW52ZXJzZS1iZywgMjUlKTsKQG5hdmJhci1pbnZlcnNlLXNlYXJjaC1iZy1mb2N1czogICAgICAgICAgICAjZmZmOwpAbmF2YmFyLWludmVyc2Utc2VhcmNoLWJvcmRlcjogICAgICAgICAgICAgIEBuYXZiYXItaW52ZXJzZS1iZzsKQG5hdmJhci1pbnZlcnNlLXNlYXJjaC1wbGFjZWhvbGRlci1jb2xvcjogICAjY2NjOwoKLy8gSW52ZXJ0ZWQgbmF2YmFyIHRvZ2dsZQpAbmF2YmFyLWludmVyc2UtdG9nZ2xlLWhvdmVyLWJnOiAgICAgICAgICAgICMzMzM7CkBuYXZiYXItaW52ZXJzZS10b2dnbGUtaWNvbi1iYXItYmc6ICAgICAgICAgI2ZmZjsKQG5hdmJhci1pbnZlcnNlLXRvZ2dsZS1ib3JkZXItY29sb3I6ICAgICAgICAjMzMzOwoKCi8vIE5hdnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQG5hdi1saW5rLXBhZGRpbmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAxMHB4IDE1cHg7CkBuYXYtbGluay1ob3Zlci1iZzogICAgICAgICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHRlcjsKCkBuYXYtZGlzYWJsZWQtbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgQGdyYXktbGlnaHQ7CkBuYXYtZGlzYWJsZWQtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgICAgQGdyYXktbGlnaHQ7CgpAbmF2LW9wZW4tbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgICAgICAgICNmZmY7CkBuYXYtb3Blbi1jYXJldC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgI2ZmZjsKCi8vIFRhYnMKQG5hdi10YWJzLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICAjZGRkOwoKQG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICBAZ3JheS1saWdodGVyOwoKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICBAYm9keS1iZzsKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICBAZ3JheTsKQG5hdi10YWJzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogICAjZGRkOwoKQG5hdi10YWJzLWp1c3RpZmllZC1saW5rLWJvcmRlci1jb2xvcjogICAgICAgICAgICAjZGRkOwpAbmF2LXRhYnMtanVzdGlmaWVkLWFjdGl2ZS1saW5rLWJvcmRlci1jb2xvcjogICAgIEBib2R5LWJnOwoKLy8gUGlsbHMKQG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogICAgICAgICAgICBAY29tcG9uZW50LWFjdGl2ZS1iZzsKQG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAjZmZmOwoKCi8vIFBhZ2luYXRpb24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQHBhZ2luYXRpb24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQHBhZ2luYXRpb24tYm9yZGVyOiAgICAgICAgICAgICAgICAgICAgI2RkZDsKCkBwYWdpbmF0aW9uLWhvdmVyLWJnOiAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7CgpAcGFnaW5hdGlvbi1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgICBAYnJhbmQtcHJpbWFyeTsKQHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiAgICAgICAgICAgICAgI2ZmZjsKCkBwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgIEBncmF5LWxpZ2h0OwoKCi8vIFBhZ2VyCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBwYWdlci1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICAgIDE1cHg7CkBwYWdlci1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0OwoKCi8vIEp1bWJvdHJvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpAanVtYm90cm9uLXBhZGRpbmc6ICAgICAgICAgICAgICAzMHB4OwpAanVtYm90cm9uLWNvbG9yOiAgICAgICAgICAgICAgICBpbmhlcml0OwpAanVtYm90cm9uLWJnOiAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodGVyOwoKQGp1bWJvdHJvbi1oZWFkaW5nLWNvbG9yOiAgICAgICAgaW5oZXJpdDsKCgovLyBGb3JtIHN0YXRlcyBhbmQgYWxlcnRzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkBzdGF0ZS13YXJuaW5nLXRleHQ6ICAgICAgICAgICAgICNjMDk4NTM7CkBzdGF0ZS13YXJuaW5nLWJnOiAgICAgICAgICAgICAgICNmY2Y4ZTM7CkBzdGF0ZS13YXJuaW5nLWJvcmRlcjogICAgICAgICAgIGRhcmtlbihzcGluKEBzdGF0ZS13YXJuaW5nLWJnLCAtMTApLCAzJSk7CgpAc3RhdGUtZGFuZ2VyLXRleHQ6ICAgICAgICAgICAgICAjYjk0YTQ4OwpAc3RhdGUtZGFuZ2VyLWJnOiAgICAgICAgICAgICAgICAjZjJkZWRlOwpAc3RhdGUtZGFuZ2VyLWJvcmRlcjogICAgICAgICAgICBkYXJrZW4oc3BpbihAc3RhdGUtZGFuZ2VyLWJnLCAtMTApLCAzJSk7CgpAc3RhdGUtc3VjY2Vzcy10ZXh0OiAgICAgICAgICAgICAjNDY4ODQ3OwpAc3RhdGUtc3VjY2Vzcy1iZzogICAgICAgICAgICAgICAjZGZmMGQ4OwpAc3RhdGUtc3VjY2Vzcy1ib3JkZXI6ICAgICAgICAgICBkYXJrZW4oc3BpbihAc3RhdGUtc3VjY2Vzcy1iZywgLTEwKSwgNSUpOwoKQHN0YXRlLWluZm8tdGV4dDogICAgICAgICAgICAgICAgIzNhODdhZDsKQHN0YXRlLWluZm8tYmc6ICAgICAgICAgICAgICAgICAgI2Q5ZWRmNzsKQHN0YXRlLWluZm8tYm9yZGVyOiAgICAgICAgICAgICAgZGFya2VuKHNwaW4oQHN0YXRlLWluZm8tYmcsIC0xMCksIDclKTsKCgovLyBUb29sdGlwcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkB0b29sdGlwLW1heC13aWR0aDogICAgICAgICAgIDIwMHB4OwpAdG9vbHRpcC1jb2xvcjogICAgICAgICAgICAgICAjZmZmOwpAdG9vbHRpcC1iZzogICAgICAgICAgICAgICAgICAjMDAwOwoKQHRvb2x0aXAtYXJyb3ctd2lkdGg6ICAgICAgICAgNXB4OwpAdG9vbHRpcC1hcnJvdy1jb2xvcjogICAgICAgICBAdG9vbHRpcC1iZzsKCgovLyBQb3BvdmVycwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBwb3BvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgI2ZmZjsKQHBvcG92ZXItbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgICAyNzZweDsKQHBvcG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKDAsMCwwLC4yKTsKQHBvcG92ZXItZmFsbGJhY2stYm9yZGVyLWNvbG9yOiAgICAgICAjY2NjOwoKQHBvcG92ZXItdGl0bGUtYmc6ICAgICAgICAgICAgICAgICAgICBkYXJrZW4oQHBvcG92ZXItYmcsIDMlKTsKCkBwb3BvdmVyLWFycm93LXdpZHRoOiAgICAgICAgICAgICAgICAgMTBweDsKQHBvcG92ZXItYXJyb3ctY29sb3I6ICAgICAgICAgICAgICAgICAjZmZmOwoKQHBvcG92ZXItYXJyb3ctb3V0ZXItd2lkdGg6ICAgICAgICAgICAoQHBvcG92ZXItYXJyb3ctd2lkdGggKyAxKTsKQHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I6ICAgICAgICAgICByZ2JhKDAsMCwwLC4yNSk7CkBwb3BvdmVyLWFycm93LW91dGVyLWZhbGxiYWNrLWNvbG9yOiAgIzk5OTsKCgovLyBMYWJlbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGxhYmVsLWRlZmF1bHQtYmc6ICAgICAgICAgICAgQGdyYXktbGlnaHQ7CkBsYWJlbC1wcmltYXJ5LWJnOiAgICAgICAgICAgIEBicmFuZC1wcmltYXJ5OwpAbGFiZWwtc3VjY2Vzcy1iZzogICAgICAgICAgICBAYnJhbmQtc3VjY2VzczsKQGxhYmVsLWluZm8tYmc6ICAgICAgICAgICAgICAgQGJyYW5kLWluZm87CkBsYWJlbC13YXJuaW5nLWJnOiAgICAgICAgICAgIEBicmFuZC13YXJuaW5nOwpAbGFiZWwtZGFuZ2VyLWJnOiAgICAgICAgICAgICBAYnJhbmQtZGFuZ2VyOwoKQGxhYmVsLWNvbG9yOiAgICAgICAgICAgICAgICAgI2ZmZjsKQGxhYmVsLWxpbmstaG92ZXItY29sb3I6ICAgICAgI2ZmZjsKCgovLyBNb2RhbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAbW9kYWwtaW5uZXItcGFkZGluZzogICAgICAgICAyMHB4OwoKQG1vZGFsLXRpdGxlLXBhZGRpbmc6ICAgICAgICAgMTVweDsKQG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OiAgICAgQGxpbmUtaGVpZ2h0LWJhc2U7CgpAbW9kYWwtY29udGVudC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmZmY7CkBtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgcmdiYSgwLDAsMCwuMik7CkBtb2RhbC1jb250ZW50LWZhbGxiYWNrLWJvcmRlci1jb2xvcjogICAgICAgICAgIzk5OTsKCkBtb2RhbC1iYWNrZHJvcC1iZzogICAgICAgICAgICMwMDA7CkBtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yOiAgICNlNWU1ZTU7CkBtb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOiAgIEBtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yOwoKCi8vIEFsZXJ0cwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBhbGVydC1wYWRkaW5nOiAgICAgICAgICAgICAgIDE1cHg7CkBhbGVydC1ib3JkZXItcmFkaXVzOiAgICAgICAgIEBib3JkZXItcmFkaXVzLWJhc2U7CkBhbGVydC1saW5rLWZvbnQtd2VpZ2h0OiAgICAgIGJvbGQ7CgpAYWxlcnQtc3VjY2Vzcy1iZzogICAgICAgICAgICBAc3RhdGUtc3VjY2Vzcy1iZzsKQGFsZXJ0LXN1Y2Nlc3MtdGV4dDogICAgICAgICAgQHN0YXRlLXN1Y2Nlc3MtdGV4dDsKQGFsZXJ0LXN1Y2Nlc3MtYm9yZGVyOiAgICAgICAgQHN0YXRlLXN1Y2Nlc3MtYm9yZGVyOwoKQGFsZXJ0LWluZm8tYmc6ICAgICAgICAgICAgICAgQHN0YXRlLWluZm8tYmc7CkBhbGVydC1pbmZvLXRleHQ6ICAgICAgICAgICAgIEBzdGF0ZS1pbmZvLXRleHQ7CkBhbGVydC1pbmZvLWJvcmRlcjogICAgICAgICAgIEBzdGF0ZS1pbmZvLWJvcmRlcjsKCkBhbGVydC13YXJuaW5nLWJnOiAgICAgICAgICAgIEBzdGF0ZS13YXJuaW5nLWJnOwpAYWxlcnQtd2FybmluZy10ZXh0OiAgICAgICAgICBAc3RhdGUtd2FybmluZy10ZXh0OwpAYWxlcnQtd2FybmluZy1ib3JkZXI6ICAgICAgICBAc3RhdGUtd2FybmluZy1ib3JkZXI7CgpAYWxlcnQtZGFuZ2VyLWJnOiAgICAgICAgICAgICBAc3RhdGUtZGFuZ2VyLWJnOwpAYWxlcnQtZGFuZ2VyLXRleHQ6ICAgICAgICAgICBAc3RhdGUtZGFuZ2VyLXRleHQ7CkBhbGVydC1kYW5nZXItYm9yZGVyOiAgICAgICAgIEBzdGF0ZS1kYW5nZXItYm9yZGVyOwoKCi8vIFByb2dyZXNzIGJhcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAcHJvZ3Jlc3MtYmc6ICAgICAgICAgICAgICAgICAjZjVmNWY1OwpAcHJvZ3Jlc3MtYmFyLWNvbG9yOiAgICAgICAgICAjZmZmOwoKQHByb2dyZXNzLWJhci1iZzogICAgICAgICAgICAgQGJyYW5kLXByaW1hcnk7CkBwcm9ncmVzcy1iYXItc3VjY2Vzcy1iZzogICAgIEBicmFuZC1zdWNjZXNzOwpAcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmc6ICAgICBAYnJhbmQtd2FybmluZzsKQHByb2dyZXNzLWJhci1kYW5nZXItYmc6ICAgICAgQGJyYW5kLWRhbmdlcjsKQHByb2dyZXNzLWJhci1pbmZvLWJnOiAgICAgICAgQGJyYW5kLWluZm87CgoKLy8gTGlzdCBncm91cAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBsaXN0LWdyb3VwLWJnOiAgICAgICAgICAgICAgICNmZmY7CkBsaXN0LWdyb3VwLWJvcmRlcjogICAgICAgICAgICNkZGQ7CkBsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXM6ICAgIEBib3JkZXItcmFkaXVzLWJhc2U7CgpAbGlzdC1ncm91cC1ob3Zlci1iZzogICAgICAgICAjZjVmNWY1OwpAbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6ICAgICAjZmZmOwpAbGlzdC1ncm91cC1hY3RpdmUtYmc6ICAgICAgICBAY29tcG9uZW50LWFjdGl2ZS1iZzsKQGxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlcjogICAgQGxpc3QtZ3JvdXAtYWN0aXZlLWJnOwoKQGxpc3QtZ3JvdXAtbGluay1jb2xvcjogICAgICAgICAgIzU1NTsKQGxpc3QtZ3JvdXAtbGluay1oZWFkaW5nLWNvbG9yOiAgIzMzMzsKCgovLyBQYW5lbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAcGFuZWwtYmc6ICAgICAgICAgICAgICAgICAgICAjZmZmOwpAcGFuZWwtaW5uZXItYm9yZGVyOiAgICAgICAgICAjZGRkOwpAcGFuZWwtYm9yZGVyLXJhZGl1czogICAgICAgICBAYm9yZGVyLXJhZGl1cy1iYXNlOwpAcGFuZWwtZm9vdGVyLWJnOiAgICAgICAgICAgICAjZjVmNWY1OwoKQHBhbmVsLWRlZmF1bHQtdGV4dDogICAgICAgICAgQGdyYXktZGFyazsKQHBhbmVsLWRlZmF1bHQtYm9yZGVyOiAgICAgICAgI2RkZDsKQHBhbmVsLWRlZmF1bHQtaGVhZGluZy1iZzogICAgI2Y1ZjVmNTsKCkBwYW5lbC1wcmltYXJ5LXRleHQ6ICAgICAgICAgICNmZmY7CkBwYW5lbC1wcmltYXJ5LWJvcmRlcjogICAgICAgIEBicmFuZC1wcmltYXJ5OwpAcGFuZWwtcHJpbWFyeS1oZWFkaW5nLWJnOiAgICBAYnJhbmQtcHJpbWFyeTsKCkBwYW5lbC1zdWNjZXNzLXRleHQ6ICAgICAgICAgIEBzdGF0ZS1zdWNjZXNzLXRleHQ7CkBwYW5lbC1zdWNjZXNzLWJvcmRlcjogICAgICAgIEBzdGF0ZS1zdWNjZXNzLWJvcmRlcjsKQHBhbmVsLXN1Y2Nlc3MtaGVhZGluZy1iZzogICAgQHN0YXRlLXN1Y2Nlc3MtYmc7CgpAcGFuZWwtd2FybmluZy10ZXh0OiAgICAgICAgICBAc3RhdGUtd2FybmluZy10ZXh0OwpAcGFuZWwtd2FybmluZy1ib3JkZXI6ICAgICAgICBAc3RhdGUtd2FybmluZy1ib3JkZXI7CkBwYW5lbC13YXJuaW5nLWhlYWRpbmctYmc6ICAgIEBzdGF0ZS13YXJuaW5nLWJnOwoKQHBhbmVsLWRhbmdlci10ZXh0OiAgICAgICAgICAgQHN0YXRlLWRhbmdlci10ZXh0OwpAcGFuZWwtZGFuZ2VyLWJvcmRlcjogICAgICAgICBAc3RhdGUtZGFuZ2VyLWJvcmRlcjsKQHBhbmVsLWRhbmdlci1oZWFkaW5nLWJnOiAgICAgQHN0YXRlLWRhbmdlci1iZzsKCkBwYW5lbC1pbmZvLXRleHQ6ICAgICAgICAgICAgIEBzdGF0ZS1pbmZvLXRleHQ7CkBwYW5lbC1pbmZvLWJvcmRlcjogICAgICAgICAgIEBzdGF0ZS1pbmZvLWJvcmRlcjsKQHBhbmVsLWluZm8taGVhZGluZy1iZzogICAgICAgQHN0YXRlLWluZm8tYmc7CgoKLy8gVGh1bWJuYWlscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkB0aHVtYm5haWwtcGFkZGluZzogICAgICAgICAgIDRweDsKQHRodW1ibmFpbC1iZzogICAgICAgICAgICAgICAgQGJvZHktYmc7CkB0aHVtYm5haWwtYm9yZGVyOiAgICAgICAgICAgICNkZGQ7CkB0aHVtYm5haWwtYm9yZGVyLXJhZGl1czogICAgIEBib3JkZXItcmFkaXVzLWJhc2U7CgpAdGh1bWJuYWlsLWNhcHRpb24tY29sb3I6ICAgICBAdGV4dC1jb2xvcjsKQHRodW1ibmFpbC1jYXB0aW9uLXBhZGRpbmc6ICAgOXB4OwoKCi8vIFdlbGxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQHdlbGwtYmc6ICAgICAgICAgICAgICAgICAgICAgI2Y1ZjVmNTsKCgovLyBCYWRnZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAYmFkZ2UtY29sb3I6ICAgICAgICAgICAgICAgICAjZmZmOwpAYmFkZ2UtbGluay1ob3Zlci1jb2xvcjogICAgICAjZmZmOwpAYmFkZ2UtYmc6ICAgICAgICAgICAgICAgICAgICBAZ3JheS1saWdodDsKCkBiYWRnZS1hY3RpdmUtY29sb3I6ICAgICAgICAgIEBsaW5rLWNvbG9yOwpAYmFkZ2UtYWN0aXZlLWJnOiAgICAgICAgICAgICAjZmZmOwoKQGJhZGdlLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgYm9sZDsKQGJhZGdlLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgMTsKQGJhZGdlLWJvcmRlci1yYWRpdXM6ICAgICAgICAgMTBweDsKCgovLyBCcmVhZGNydW1icwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBicmVhZGNydW1iLWJnOiAgICAgICAgICAgICAgICNmNWY1ZjU7CkBicmVhZGNydW1iLWNvbG9yOiAgICAgICAgICAgICNjY2M7CkBicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjogICAgIEBncmF5LWxpZ2h0OwoKCi8vIENhcm91c2VsCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQGNhcm91c2VsLXRleHQtc2hhZG93OiAgICAgICAgICAgICAgICAgICAgICAgIDAgMXB4IDJweCByZ2JhKDAsMCwwLC42KTsKCkBjYXJvdXNlbC1jb250cm9sLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAjZmZmOwpAY2Fyb3VzZWwtY29udHJvbC13aWR0aDogICAgICAgICAgICAgICAgICAgICAgMTUlOwpAY2Fyb3VzZWwtY29udHJvbC1vcGFjaXR5OiAgICAgICAgICAgICAgICAgICAgLjU7CkBjYXJvdXNlbC1jb250cm9sLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAyMHB4OwoKQGNhcm91c2VsLWluZGljYXRvci1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgICNmZmY7CkBjYXJvdXNlbC1pbmRpY2F0b3ItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAjZmZmOwoKQGNhcm91c2VsLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICNmZmY7CgoKLy8gQ2xvc2UKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBjbG9zZS1jb2xvcjogICAgICAgICAgICAgICAgICMwMDA7CkBjbG9zZS1mb250LXdlaWdodDogICAgICAgICAgIGJvbGQ7CkBjbG9zZS10ZXh0LXNoYWRvdzogICAgICAgICAgIDAgMXB4IDAgI2ZmZjsKCgovLyBDb2RlCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAY29kZS1jb2xvcjogICAgICAgICAgICAgICAgICAjYzcyNTRlOwpAY29kZS1iZzogICAgICAgICAgICAgICAgICAgICAjZjlmMmY0OwoKQHByZS1iZzogICAgICAgICAgICAgICAgICAgICAgI2Y1ZjVmNTsKQHByZS1jb2xvcjogICAgICAgICAgICAgICAgICAgQGdyYXktZGFyazsKQHByZS1ib3JkZXItY29sb3I6ICAgICAgICAgICAgI2NjYzsKQHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ6ICAgMzQwcHg7CgovLyBUeXBlCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAdGV4dC1tdXRlZDogICAgICAgICAgICAgICAgICBAZ3JheS1saWdodDsKQGFiYnItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgQGdyYXktbGlnaHQ7CkBoZWFkaW5ncy1zbWFsbC1jb2xvcjogICAgICAgIEBncmF5LWxpZ2h0OwpAYmxvY2txdW90ZS1zbWFsbC1jb2xvcjogICAgICBAZ3JheS1saWdodDsKQGJsb2NrcXVvdGUtYm9yZGVyLWNvbG9yOiAgICAgQGdyYXktbGlnaHRlcjsKQHBhZ2UtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgQGdyYXktbGlnaHRlcjsKCi8vIE1pc2NlbGxhbmVvdXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gSHIgYm9yZGVyIGNvbG9yCkBoci1ib3JkZXI6ICAgICAgICAgICAgICAgICAgIEBncmF5LWxpZ2h0ZXI7CgovLyBIb3Jpem9udGFsIGZvcm1zICYgbGlzdHMKQGNvbXBvbmVudC1vZmZzZXQtaG9yaXpvbnRhbDogMTgwcHg7CgoKLy8gQ29udGFpbmVyIHNpemVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBTbWFsbCBzY3JlZW4gLyB0YWJsZXQKQGNvbnRhaW5lci10YWJsZXQ6ICAgICAgICAgICAgKCg3MjBweCArIEBncmlkLWd1dHRlci13aWR0aCkpOwoKLy8gTWVkaXVtIHNjcmVlbiAvIGRlc2t0b3AKQGNvbnRhaW5lci1kZXNrdG9wOiAgICAgICAgICAgKCg5NDBweCArIEBncmlkLWd1dHRlci13aWR0aCkpOwoKLy8gTGFyZ2Ugc2NyZWVuIC8gd2lkZSBkZXNrdG9wCkBjb250YWluZXItbGctZGVza3RvcDogICAgICAgICgoMTE0MHB4ICsgQGdyaWQtZ3V0dGVyLXdpZHRoKSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/bootstrap3-sourcemap/less/wells.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8KLy8gV2VsbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBCYXNlIGNsYXNzCi53ZWxsIHsKICBtaW4taGVpZ2h0OiAyMHB4OwogIHBhZGRpbmc6IDE5cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2VsbC1iZzsKICBib3JkZXI6IDFweCBzb2xpZCBkYXJrZW4oQHdlbGwtYmcsIDclKTsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1iYXNlOwogIC5ib3gtc2hhZG93KGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSkpOwogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLC4xNSk7CiAgfQp9CgovLyBTaXplcwoud2VsbC1sZyB7CiAgcGFkZGluZzogMjRweDsKICBib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cy1sYXJnZTsKfQoud2VsbC1zbSB7CiAgcGFkZGluZzogOXB4OwogIGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzLXNtYWxsOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/attribute-match.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2W2NsYXNzXj1ub25xdW90ZWRdLAoudGVzdCB7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2MS40LjAKICoKICogQ29weXJpZ2h0IDIwMTEgVHdpdHRlciwgSW5jCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBEZXNpZ25lZCBhbmQgYnVpbHQgd2l0aCBhbGwgdGhlIGxvdmUgaW4gdGhlIHdvcmxkIEB0d2l0dGVyIGJ5IEBtZG8gYW5kIEBmYXQuCiAqIERhdGU6IFNhdCBOb3YgIDUgMTc6MDc6NDggUERUIDIwMTEKICovCi8qIFJlc2V0Lmxlc3MKICogUHJvcHMgdG8gRXJpYyBNZXllciAobWV5ZXJ3ZWIuY29tKSBmb3IgaGlzIENTUyByZXNldCBmaWxlLiBXZSdyZSB1c2luZyBhbiBhZGFwdGVkIHZlcnNpb24gaGVyZQl0aGF0IGN1dHMgb3V0IHNvbWUgb2YgdGhlIHJlc2V0IEhUTUwgZWxlbWVudHMgd2Ugd2lsbCBuZXZlciBuZWVkIGhlcmUgKGkuZS4sIGRmbiwgc2FtcCwgZXRjKS4KICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpodG1sLApib2R5IHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKfQpoMSwKaDIsCmgzLApoNCwKaDUsCmg2LApwLApibG9ja3F1b3RlLApwcmUsCmEsCmFiYnIsCmFjcm9ueW0sCmFkZHJlc3MsCmNpdGUsCmNvZGUsCmRlbCwKZGZuLAplbSwKaW1nLApxLApzLApzYW1wLApzbWFsbCwKc3RyaWtlLApzdHJvbmcsCnN1YiwKc3VwLAp0dCwKdmFyLApkZCwKZGwsCmR0LApsaSwKb2wsCnVsLApmaWVsZHNldCwKZm9ybSwKbGFiZWwsCmxlZ2VuZCwKYnV0dG9uLAp0YWJsZSwKY2FwdGlvbiwKdGJvZHksCnRmb290LAp0aGVhZCwKdHIsCnRoLAp0ZCB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgYm9yZGVyOiAwOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtc2l6ZTogMTAwJTsKICBsaW5lLWhlaWdodDogMTsKICBmb250LWZhbWlseTogaW5oZXJpdDsKfQp0YWJsZSB7CiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICBib3JkZXItc3BhY2luZzogMDsKfQpvbCwKdWwgewogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KcTpiZWZvcmUsCnE6YWZ0ZXIsCmJsb2NrcXVvdGU6YmVmb3JlLApibG9ja3F1b3RlOmFmdGVyIHsKICBjb250ZW50OiAiIjsKfQpodG1sIHsKICBvdmVyZmxvdy15OiBzY3JvbGw7CiAgZm9udC1zaXplOiAxMDAlOwogIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKfQphOmZvY3VzIHsKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKfQphOmhvdmVyLAphOmFjdGl2ZSB7CiAgb3V0bGluZTogMDsKfQphcnRpY2xlLAphc2lkZSwKZGV0YWlscywKZmlnY2FwdGlvbiwKZmlndXJlLApmb290ZXIsCmhlYWRlciwKaGdyb3VwLApuYXYsCnNlY3Rpb24gewogIGRpc3BsYXk6IGJsb2NrOwp9CmF1ZGlvLApjYW52YXMsCnZpZGVvIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgKmRpc3BsYXk6IGlubGluZTsKICAqem9vbTogMTsKfQphdWRpbzpub3QoW2NvbnRyb2xzXSkgewogIGRpc3BsYXk6IG5vbmU7Cn0Kc3ViLApzdXAgewogIGZvbnQtc2l6ZTogNzUlOwogIGxpbmUtaGVpZ2h0OiAwOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0Kc3VwIHsKICB0b3A6IC0wLjVlbTsKfQpzdWIgewogIGJvdHRvbTogLTAuMjVlbTsKfQppbWcgewogIGJvcmRlcjogMDsKICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOwp9CmJ1dHRvbiwKaW5wdXQsCnNlbGVjdCwKdGV4dGFyZWEgewogIGZvbnQtc2l6ZTogMTAwJTsKICBtYXJnaW46IDA7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogICp2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CmJ1dHRvbiwKaW5wdXQgewogIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgKm92ZXJmbG93OiB2aXNpYmxlOwp9CmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwKaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIgewogIGJvcmRlcjogMDsKICBwYWRkaW5nOiAwOwp9CmJ1dHRvbiwKaW5wdXRbdHlwZT0iYnV0dG9uIl0sCmlucHV0W3R5cGU9InJlc2V0Il0sCmlucHV0W3R5cGU9InN1Ym1pdCJdIHsKICBjdXJzb3I6IHBvaW50ZXI7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247Cn0KaW5wdXRbdHlwZT0ic2VhcmNoIl0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOwogIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7CiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CnRleHRhcmVhIHsKICBvdmVyZmxvdzogYXV0bzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9Ci8qIFZhcmlhYmxlcy5sZXNzCiAqIFZhcmlhYmxlcyB0byBjdXN0b21pemUgdGhlIGxvb2sgYW5kIGZlZWwgb2YgQm9vdHN0cmFwCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8qIE1peGlucy5sZXNzCiAqIFNuaXBwZXRzIG9mIHJldXNhYmxlIENTUyB0byBkZXZlbG9wIGZhc3RlciBhbmQga2VlcCBjb2RlIHJlYWRhYmxlCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8qCiAqIFNjYWZmb2xkaW5nCiAqIEJhc2ljIGFuZCBnbG9iYWwgc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBzeXN0ZW0sIHN0cnVjdHVyYWwgbGF5b3V0LCBhbmQgcGFnZSB0ZW1wbGF0ZXMKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpib2R5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIG1hcmdpbjogMDsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDEzcHg7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMThweDsKICBjb2xvcjogIzQwNDA0MDsKfQouY29udGFpbmVyIHsKICB3aWR0aDogOTQwcHg7CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIHpvb206IDE7Cn0KLmNvbnRhaW5lcjpiZWZvcmUsCi5jb250YWluZXI6YWZ0ZXIgewogIGRpc3BsYXk6IHRhYmxlOwogIGNvbnRlbnQ6ICIiOwogIHpvb206IDE7Cn0KLmNvbnRhaW5lcjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLmNvbnRhaW5lci1mbHVpZCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1pbi13aWR0aDogOTQwcHg7CiAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgem9vbTogMTsKfQouY29udGFpbmVyLWZsdWlkOmJlZm9yZSwKLmNvbnRhaW5lci1mbHVpZDphZnRlciB7CiAgZGlzcGxheTogdGFibGU7CiAgY29udGVudDogIiI7CiAgem9vbTogMTsKfQouY29udGFpbmVyLWZsdWlkOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQouY29udGFpbmVyLWZsdWlkID4gLnNpZGViYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMjBweDsKICB3aWR0aDogMjIwcHg7Cn0KLmNvbnRhaW5lci1mbHVpZCA+IC5jb250ZW50IHsKICBtYXJnaW4tbGVmdDogMjQwcHg7Cn0KYSB7CiAgY29sb3I6ICMwMDY5ZDY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogIGZvbnQtd2VpZ2h0OiBpbmhlcml0Owp9CmE6aG92ZXIgewogIGNvbG9yOiAjMDA0MzhhOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9Ci5wdWxsLXJpZ2h0IHsKICBmbG9hdDogcmlnaHQ7Cn0KLnB1bGwtbGVmdCB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmhpZGUgewogIGRpc3BsYXk6IG5vbmU7Cn0KLnNob3cgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5yb3cgewogIHpvb206IDE7CiAgbWFyZ2luLWxlZnQ6IC0yMHB4Owp9Ci5yb3c6YmVmb3JlLAoucm93OmFmdGVyIHsKICBkaXNwbGF5OiB0YWJsZTsKICBjb250ZW50OiAiIjsKICB6b29tOiAxOwp9Ci5yb3c6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci5yb3cgPiBbY2xhc3MqPSJzcGFuIl0gewogIGRpc3BsYXk6IGlubGluZTsKICBmbG9hdDogbGVmdDsKICBtYXJnaW4tbGVmdDogMjBweDsKfQouc3BhbjEgewogIHdpZHRoOiA0MHB4Owp9Ci5zcGFuMiB7CiAgd2lkdGg6IDEwMHB4Owp9Ci5zcGFuMyB7CiAgd2lkdGg6IDE2MHB4Owp9Ci5zcGFuNCB7CiAgd2lkdGg6IDIyMHB4Owp9Ci5zcGFuNSB7CiAgd2lkdGg6IDI4MHB4Owp9Ci5zcGFuNiB7CiAgd2lkdGg6IDM0MHB4Owp9Ci5zcGFuNyB7CiAgd2lkdGg6IDQwMHB4Owp9Ci5zcGFuOCB7CiAgd2lkdGg6IDQ2MHB4Owp9Ci5zcGFuOSB7CiAgd2lkdGg6IDUyMHB4Owp9Ci5zcGFuMTAgewogIHdpZHRoOiA1ODBweDsKfQouc3BhbjExIHsKICB3aWR0aDogNjQwcHg7Cn0KLnNwYW4xMiB7CiAgd2lkdGg6IDcwMHB4Owp9Ci5zcGFuMTMgewogIHdpZHRoOiA3NjBweDsKfQouc3BhbjE0IHsKICB3aWR0aDogODIwcHg7Cn0KLnNwYW4xNSB7CiAgd2lkdGg6IDg4MHB4Owp9Ci5zcGFuMTYgewogIHdpZHRoOiA5NDBweDsKfQouc3BhbjE3IHsKICB3aWR0aDogMTAwMHB4Owp9Ci5zcGFuMTggewogIHdpZHRoOiAxMDYwcHg7Cn0KLnNwYW4xOSB7CiAgd2lkdGg6IDExMjBweDsKfQouc3BhbjIwIHsKICB3aWR0aDogMTE4MHB4Owp9Ci5zcGFuMjEgewogIHdpZHRoOiAxMjQwcHg7Cn0KLnNwYW4yMiB7CiAgd2lkdGg6IDEzMDBweDsKfQouc3BhbjIzIHsKICB3aWR0aDogMTM2MHB4Owp9Ci5zcGFuMjQgewogIHdpZHRoOiAxNDIwcHg7Cn0KLnJvdyA+IC5vZmZzZXQxIHsKICBtYXJnaW4tbGVmdDogODBweDsKfQoucm93ID4gLm9mZnNldDIgewogIG1hcmdpbi1sZWZ0OiAxNDBweDsKfQoucm93ID4gLm9mZnNldDMgewogIG1hcmdpbi1sZWZ0OiAyMDBweDsKfQoucm93ID4gLm9mZnNldDQgewogIG1hcmdpbi1sZWZ0OiAyNjBweDsKfQoucm93ID4gLm9mZnNldDUgewogIG1hcmdpbi1sZWZ0OiAzMjBweDsKfQoucm93ID4gLm9mZnNldDYgewogIG1hcmdpbi1sZWZ0OiAzODBweDsKfQoucm93ID4gLm9mZnNldDcgewogIG1hcmdpbi1sZWZ0OiA0NDBweDsKfQoucm93ID4gLm9mZnNldDggewogIG1hcmdpbi1sZWZ0OiA1MDBweDsKfQoucm93ID4gLm9mZnNldDkgewogIG1hcmdpbi1sZWZ0OiA1NjBweDsKfQoucm93ID4gLm9mZnNldDEwIHsKICBtYXJnaW4tbGVmdDogNjIwcHg7Cn0KLnJvdyA+IC5vZmZzZXQxMSB7CiAgbWFyZ2luLWxlZnQ6IDY4MHB4Owp9Ci5yb3cgPiAub2Zmc2V0MTIgewogIG1hcmdpbi1sZWZ0OiA3NDBweDsKfQouc3Bhbi1vbmUtdGhpcmQgewogIHdpZHRoOiAzMDBweDsKfQouc3Bhbi10d28tdGhpcmRzIHsKICB3aWR0aDogNjIwcHg7Cn0KLm9mZnNldC1vbmUtdGhpcmQgewogIG1hcmdpbi1sZWZ0OiAzNDBweDsKfQoub2Zmc2V0LXR3by10aGlyZHMgewogIG1hcmdpbi1sZWZ0OiA2NjBweDsKfQovKiBUeXBvZ3JhcGh5Lmxlc3MKICogSGVhZGluZ3MsIGJvZHkgdGV4dCwgbGlzdHMsIGNvZGUsIGFuZCBtb3JlIGZvciBhIHZlcnNhdGlsZSBhbmQgZHVyYWJsZSB0eXBvZ3JhcGh5IHN5c3RlbQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCnAgewogIGZvbnQtc2l6ZTogMTNweDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIG1hcmdpbi1ib3R0b206IDlweDsKfQpwIHNtYWxsIHsKICBmb250LXNpemU6IDExcHg7CiAgY29sb3I6ICNiZmJmYmY7Cn0KaDEsCmgyLApoMywKaDQsCmg1LApoNiB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6ICM0MDQwNDA7Cn0KaDEgc21hbGwsCmgyIHNtYWxsLApoMyBzbWFsbCwKaDQgc21hbGwsCmg1IHNtYWxsLApoNiBzbWFsbCB7CiAgY29sb3I6ICNiZmJmYmY7Cn0KaDEgewogIG1hcmdpbi1ib3R0b206IDE4cHg7CiAgZm9udC1zaXplOiAzMHB4OwogIGxpbmUtaGVpZ2h0OiAzNnB4Owp9CmgxIHNtYWxsIHsKICBmb250LXNpemU6IDE4cHg7Cn0KaDIgewogIGZvbnQtc2l6ZTogMjRweDsKICBsaW5lLWhlaWdodDogMzZweDsKfQpoMiBzbWFsbCB7CiAgZm9udC1zaXplOiAxNHB4Owp9CmgzLApoNCwKaDUsCmg2IHsKICBsaW5lLWhlaWdodDogMzZweDsKfQpoMyB7CiAgZm9udC1zaXplOiAxOHB4Owp9CmgzIHNtYWxsIHsKICBmb250LXNpemU6IDE0cHg7Cn0KaDQgewogIGZvbnQtc2l6ZTogMTZweDsKfQpoNCBzbWFsbCB7CiAgZm9udC1zaXplOiAxMnB4Owp9Cmg1IHsKICBmb250LXNpemU6IDE0cHg7Cn0KaDYgewogIGZvbnQtc2l6ZTogMTNweDsKICBjb2xvcjogI2JmYmZiZjsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CnVsLApvbCB7CiAgbWFyZ2luOiAwIDAgMThweCAyNXB4Owp9CnVsIHVsLAp1bCBvbCwKb2wgb2wsCm9sIHVsIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9CnVsIHsKICBsaXN0LXN0eWxlOiBkaXNjOwp9Cm9sIHsKICBsaXN0LXN0eWxlOiBkZWNpbWFsOwp9CmxpIHsKICBsaW5lLWhlaWdodDogMThweDsKICBjb2xvcjogIzgwODA4MDsKfQp1bC51bnN0eWxlZCB7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBtYXJnaW4tbGVmdDogMDsKfQpkbCB7CiAgbWFyZ2luLWJvdHRvbTogMThweDsKfQpkbCBkdCwKZGwgZGQgewogIGxpbmUtaGVpZ2h0OiAxOHB4Owp9CmRsIGR0IHsKICBmb250LXdlaWdodDogYm9sZDsKfQpkbCBkZCB7CiAgbWFyZ2luLWxlZnQ6IDlweDsKfQpociB7CiAgbWFyZ2luOiAyMHB4IDAgMTlweDsKICBib3JkZXI6IDA7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7Cn0Kc3Ryb25nIHsKICBmb250LXN0eWxlOiBpbmhlcml0OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CmVtIHsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KLm11dGVkIHsKICBjb2xvcjogI2JmYmZiZjsKfQpibG9ja3F1b3RlIHsKICBtYXJnaW4tYm90dG9tOiAxOHB4OwogIGJvcmRlci1sZWZ0OiA1cHggc29saWQgI2VlZTsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KYmxvY2txdW90ZSBwIHsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBsaW5lLWhlaWdodDogMThweDsKICBtYXJnaW4tYm90dG9tOiAwOwp9CmJsb2NrcXVvdGUgc21hbGwgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTJweDsKICBmb250LXdlaWdodDogMzAwOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGNvbG9yOiAjYmZiZmJmOwp9CmJsb2NrcXVvdGUgc21hbGw6YmVmb3JlIHsKICBjb250ZW50OiAnXDIwMTQgXDAwQTAnOwp9CmFkZHJlc3MgewogIGRpc3BsYXk6IGJsb2NrOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIG1hcmdpbi1ib3R0b206IDE4cHg7Cn0KY29kZSwKcHJlIHsKICBwYWRkaW5nOiAwIDNweCAycHg7CiAgZm9udC1mYW1pbHk6IE1vbmFjbywgQW5kYWxlIE1vbm8sIENvdXJpZXIgTmV3LCBtb25vc3BhY2U7CiAgZm9udC1zaXplOiAxMnB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKfQpjb2RlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVlOWNjOwogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNzUpOwogIHBhZGRpbmc6IDFweCAzcHg7Cn0KcHJlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDguNXB4OwogIG1hcmdpbjogMCAwIDE4cHg7CiAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgd2hpdGUtc3BhY2U6IHByZTsKICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgd29yZC13cmFwOiBicmVhay13b3JkOwp9Ci8qIEZvcm1zLmxlc3MKICogQmFzZSBzdHlsZXMgZm9yIHZhcmlvdXMgaW5wdXQgdHlwZXMsIGZvcm0gbGF5b3V0cywgYW5kIHN0YXRlcwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmZvcm0gewogIG1hcmdpbi1ib3R0b206IDE4cHg7Cn0KZmllbGRzZXQgewogIG1hcmdpbi1ib3R0b206IDE4cHg7CiAgcGFkZGluZy10b3A6IDE4cHg7Cn0KZmllbGRzZXQgbGVnZW5kIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLWxlZnQ6IDE1MHB4OwogIGZvbnQtc2l6ZTogMTkuNXB4OwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiAjNDA0MDQwOwogICpwYWRkaW5nOiAwIDAgNXB4IDE0NXB4OwogIC8qIElFNi03ICovCiAgKmxpbmUtaGVpZ2h0OiAxLjU7CiAgLyogSUU2LTcgKi8KfQpmb3JtIC5jbGVhcmZpeCB7CiAgbWFyZ2luLWJvdHRvbTogMThweDsKICB6b29tOiAxOwp9CmZvcm0gLmNsZWFyZml4OmJlZm9yZSwKZm9ybSAuY2xlYXJmaXg6YWZ0ZXIgewogIGRpc3BsYXk6IHRhYmxlOwogIGNvbnRlbnQ6ICIiOwogIHpvb206IDE7Cn0KZm9ybSAuY2xlYXJmaXg6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9CmxhYmVsLAppbnB1dCwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgZm9udC1zaXplOiAxM3B4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQpsYWJlbCB7CiAgcGFkZGluZy10b3A6IDZweDsKICBmb250LXNpemU6IDEzcHg7CiAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgZmxvYXQ6IGxlZnQ7CiAgd2lkdGg6IDEzMHB4OwogIHRleHQtYWxpZ246IHJpZ2h0OwogIGNvbG9yOiAjNDA0MDQwOwp9CmZvcm0gLmlucHV0IHsKICBtYXJnaW4tbGVmdDogMTUwcHg7Cn0KaW5wdXRbdHlwZT1jaGVja2JveF0sCmlucHV0W3R5cGU9cmFkaW9dIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KaW5wdXQsCnRleHRhcmVhLApzZWxlY3QsCi51bmVkaXRhYmxlLWlucHV0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDIxMHB4OwogIGhlaWdodDogMThweDsKICBwYWRkaW5nOiA0cHg7CiAgZm9udC1zaXplOiAxM3B4OwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGNvbG9yOiAjODA4MDgwOwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXJhZGl1czogM3B4Owp9CnNlbGVjdCB7CiAgcGFkZGluZzogaW5pdGlhbDsKfQppbnB1dFt0eXBlPWNoZWNrYm94XSwKaW5wdXRbdHlwZT1yYWRpb10gewogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICBwYWRkaW5nOiAwOwogIG1hcmdpbjogM3B4IDA7CiAgKm1hcmdpbi10b3A6IDA7CiAgLyogSUU2LTcgKi8KICBsaW5lLWhlaWdodDogbm9ybWFsOwogIGJvcmRlcjogbm9uZTsKfQppbnB1dFt0eXBlPWZpbGVdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIHBhZGRpbmc6IGluaXRpYWw7CiAgYm9yZGVyOiBpbml0aWFsOwogIGxpbmUtaGVpZ2h0OiBpbml0aWFsOwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAtbW96LWJveC1zaGFkb3c6IG5vbmU7CiAgYm94LXNoYWRvdzogbm9uZTsKfQppbnB1dFt0eXBlPWJ1dHRvbl0sCmlucHV0W3R5cGU9cmVzZXRdLAppbnB1dFt0eXBlPXN1Ym1pdF0gewogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKfQpzZWxlY3QsCmlucHV0W3R5cGU9ZmlsZV0gewogIGhlaWdodDogMjdweDsKICAqaGVpZ2h0OiBhdXRvOwogIGxpbmUtaGVpZ2h0OiAyN3B4OwogICptYXJnaW4tdG9wOiA0cHg7CiAgLyogRm9yIElFNywgYWRkIHRvcCBtYXJnaW4gdG8gYWxpZ24gc2VsZWN0IHdpdGggbGFiZWxzICovCn0Kc2VsZWN0W211bHRpcGxlXSB7CiAgaGVpZ2h0OiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KdGV4dGFyZWEgewogIGhlaWdodDogYXV0bzsKfQoudW5lZGl0YWJsZS1pbnB1dCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBkaXNwbGF5OiBibG9jazsKICBib3JkZXItY29sb3I6ICNlZWU7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjAyNSk7CiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjAyNSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wMjUpOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KOi1tb3otcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjYmZiZmJmOwp9Cjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgY29sb3I6ICNiZmJmYmY7Cn0KaW5wdXQsCnRleHRhcmVhIHsKICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsKICAtbW96LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsKICAtbXMtdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOwogIC1vLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsKICB0cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tb3otYm94LXNoYWRvdzogaW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpOwp9CmlucHV0OmZvY3VzLAp0ZXh0YXJlYTpmb2N1cyB7CiAgb3V0bGluZTogMDsKICBib3JkZXItY29sb3I6IHJnYmEoODIsIDE2OCwgMjM2LCAwLjgpOwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsKICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMCA4cHggcmdiYSg4MiwgMTY4LCAyMzYsIDAuNik7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsKfQppbnB1dFt0eXBlPWZpbGVdOmZvY3VzLAppbnB1dFt0eXBlPWNoZWNrYm94XTpmb2N1cywKc2VsZWN0OmZvY3VzIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgLW1vei1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7CiAgb3V0bGluZTogMXB4IGRvdHRlZCAjNjY2Owp9CmZvcm0gLmNsZWFyZml4LmVycm9yID4gbGFiZWwsCmZvcm0gLmNsZWFyZml4LmVycm9yIC5oZWxwLWJsb2NrLApmb3JtIC5jbGVhcmZpeC5lcnJvciAuaGVscC1pbmxpbmUgewogIGNvbG9yOiAjYjk0YTQ4Owp9CmZvcm0gLmNsZWFyZml4LmVycm9yIGlucHV0LApmb3JtIC5jbGVhcmZpeC5lcnJvciB0ZXh0YXJlYSB7CiAgY29sb3I6ICNiOTRhNDg7CiAgYm9yZGVyLWNvbG9yOiAjZWU1ZjViOwp9CmZvcm0gLmNsZWFyZml4LmVycm9yIGlucHV0OmZvY3VzLApmb3JtIC5jbGVhcmZpeC5lcnJvciB0ZXh0YXJlYTpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjZTkzMjJkOwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAjZjhiOWI3OwogIC1tb3otYm94LXNoYWRvdzogMCAwIDZweCAjZjhiOWI3OwogIGJveC1zaGFkb3c6IDAgMCA2cHggI2Y4YjliNzsKfQpmb3JtIC5jbGVhcmZpeC5lcnJvciAuaW5wdXQtcHJlcGVuZCAuYWRkLW9uLApmb3JtIC5jbGVhcmZpeC5lcnJvciAuaW5wdXQtYXBwZW5kIC5hZGQtb24gewogIGNvbG9yOiAjYjk0YTQ4OwogIGJhY2tncm91bmQtY29sb3I6ICNmY2U2ZTY7CiAgYm9yZGVyLWNvbG9yOiAjYjk0YTQ4Owp9CmZvcm0gLmNsZWFyZml4Lndhcm5pbmcgPiBsYWJlbCwKZm9ybSAuY2xlYXJmaXgud2FybmluZyAuaGVscC1ibG9jaywKZm9ybSAuY2xlYXJmaXgud2FybmluZyAuaGVscC1pbmxpbmUgewogIGNvbG9yOiAjYzA5ODUzOwp9CmZvcm0gLmNsZWFyZml4Lndhcm5pbmcgaW5wdXQsCmZvcm0gLmNsZWFyZml4Lndhcm5pbmcgdGV4dGFyZWEgewogIGNvbG9yOiAjYzA5ODUzOwogIGJvcmRlci1jb2xvcjogI2NjYWU2NDsKfQpmb3JtIC5jbGVhcmZpeC53YXJuaW5nIGlucHV0OmZvY3VzLApmb3JtIC5jbGVhcmZpeC53YXJuaW5nIHRleHRhcmVhOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICNiZTlhM2Y7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4ICNlNWQ2YjE7CiAgLW1vei1ib3gtc2hhZG93OiAwIDAgNnB4ICNlNWQ2YjE7CiAgYm94LXNoYWRvdzogMCAwIDZweCAjZTVkNmIxOwp9CmZvcm0gLmNsZWFyZml4Lndhcm5pbmcgLmlucHV0LXByZXBlbmQgLmFkZC1vbiwKZm9ybSAuY2xlYXJmaXgud2FybmluZyAuaW5wdXQtYXBwZW5kIC5hZGQtb24gewogIGNvbG9yOiAjYzA5ODUzOwogIGJhY2tncm91bmQtY29sb3I6ICNkMmI4Nzc7CiAgYm9yZGVyLWNvbG9yOiAjYzA5ODUzOwp9CmZvcm0gLmNsZWFyZml4LnN1Y2Nlc3MgPiBsYWJlbCwKZm9ybSAuY2xlYXJmaXguc3VjY2VzcyAuaGVscC1ibG9jaywKZm9ybSAuY2xlYXJmaXguc3VjY2VzcyAuaGVscC1pbmxpbmUgewogIGNvbG9yOiAjNDY4ODQ3Owp9CmZvcm0gLmNsZWFyZml4LnN1Y2Nlc3MgaW5wdXQsCmZvcm0gLmNsZWFyZml4LnN1Y2Nlc3MgdGV4dGFyZWEgewogIGNvbG9yOiAjNDY4ODQ3OwogIGJvcmRlci1jb2xvcjogIzU3YTk1NzsKfQpmb3JtIC5jbGVhcmZpeC5zdWNjZXNzIGlucHV0OmZvY3VzLApmb3JtIC5jbGVhcmZpeC5zdWNjZXNzIHRleHRhcmVhOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICM0NTg4NDU7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4ICM5YWNjOWE7CiAgLW1vei1ib3gtc2hhZG93OiAwIDAgNnB4ICM5YWNjOWE7CiAgYm94LXNoYWRvdzogMCAwIDZweCAjOWFjYzlhOwp9CmZvcm0gLmNsZWFyZml4LnN1Y2Nlc3MgLmlucHV0LXByZXBlbmQgLmFkZC1vbiwKZm9ybSAuY2xlYXJmaXguc3VjY2VzcyAuaW5wdXQtYXBwZW5kIC5hZGQtb24gewogIGNvbG9yOiAjNDY4ODQ3OwogIGJhY2tncm91bmQtY29sb3I6ICNiY2RkYmM7CiAgYm9yZGVyLWNvbG9yOiAjNDY4ODQ3Owp9Ci5pbnB1dC1taW5pLAppbnB1dC5taW5pLAp0ZXh0YXJlYS5taW5pLApzZWxlY3QubWluaSB7CiAgd2lkdGg6IDYwcHg7Cn0KLmlucHV0LXNtYWxsLAppbnB1dC5zbWFsbCwKdGV4dGFyZWEuc21hbGwsCnNlbGVjdC5zbWFsbCB7CiAgd2lkdGg6IDkwcHg7Cn0KLmlucHV0LW1lZGl1bSwKaW5wdXQubWVkaXVtLAp0ZXh0YXJlYS5tZWRpdW0sCnNlbGVjdC5tZWRpdW0gewogIHdpZHRoOiAxNTBweDsKfQouaW5wdXQtbGFyZ2UsCmlucHV0LmxhcmdlLAp0ZXh0YXJlYS5sYXJnZSwKc2VsZWN0LmxhcmdlIHsKICB3aWR0aDogMjEwcHg7Cn0KLmlucHV0LXhsYXJnZSwKaW5wdXQueGxhcmdlLAp0ZXh0YXJlYS54bGFyZ2UsCnNlbGVjdC54bGFyZ2UgewogIHdpZHRoOiAyNzBweDsKfQouaW5wdXQteHhsYXJnZSwKaW5wdXQueHhsYXJnZSwKdGV4dGFyZWEueHhsYXJnZSwKc2VsZWN0Lnh4bGFyZ2UgewogIHdpZHRoOiA1MzBweDsKfQp0ZXh0YXJlYS54eGxhcmdlIHsKICBvdmVyZmxvdy15OiBhdXRvOwp9CmlucHV0LnNwYW4xLAp0ZXh0YXJlYS5zcGFuMSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiAzMHB4OwogIG1hcmdpbi1sZWZ0OiAwOwp9CmlucHV0LnNwYW4yLAp0ZXh0YXJlYS5zcGFuMiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA5MHB4OwogIG1hcmdpbi1sZWZ0OiAwOwp9CmlucHV0LnNwYW4zLAp0ZXh0YXJlYS5zcGFuMyB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiAxNTBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuNCwKdGV4dGFyZWEuc3BhbjQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmbG9hdDogbm9uZTsKICB3aWR0aDogMjEwcHg7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KaW5wdXQuc3BhbjUsCnRleHRhcmVhLnNwYW41IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZmxvYXQ6IG5vbmU7CiAgd2lkdGg6IDI3MHB4OwogIG1hcmdpbi1sZWZ0OiAwOwp9CmlucHV0LnNwYW42LAp0ZXh0YXJlYS5zcGFuNiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiAzMzBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuNywKdGV4dGFyZWEuc3BhbjcgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmbG9hdDogbm9uZTsKICB3aWR0aDogMzkwcHg7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KaW5wdXQuc3BhbjgsCnRleHRhcmVhLnNwYW44IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZmxvYXQ6IG5vbmU7CiAgd2lkdGg6IDQ1MHB4OwogIG1hcmdpbi1sZWZ0OiAwOwp9CmlucHV0LnNwYW45LAp0ZXh0YXJlYS5zcGFuOSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA1MTBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuMTAsCnRleHRhcmVhLnNwYW4xMCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA1NzBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuMTEsCnRleHRhcmVhLnNwYW4xMSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA2MzBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuMTIsCnRleHRhcmVhLnNwYW4xMiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA2OTBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuMTMsCnRleHRhcmVhLnNwYW4xMyB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA3NTBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuMTQsCnRleHRhcmVhLnNwYW4xNCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA4MTBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuMTUsCnRleHRhcmVhLnNwYW4xNSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA4NzBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dC5zcGFuMTYsCnRleHRhcmVhLnNwYW4xNiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA5MzBweDsKICBtYXJnaW4tbGVmdDogMDsKfQppbnB1dFtkaXNhYmxlZF0sCnNlbGVjdFtkaXNhYmxlZF0sCnRleHRhcmVhW2Rpc2FibGVkXSwKaW5wdXRbcmVhZG9ubHldLApzZWxlY3RbcmVhZG9ubHldLAp0ZXh0YXJlYVtyZWFkb25seV0gewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgYm9yZGVyLWNvbG9yOiAjZGRkOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLmFjdGlvbnMgewogIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgbWFyZ2luLXRvcDogMThweDsKICBtYXJnaW4tYm90dG9tOiAxOHB4OwogIHBhZGRpbmc6IDE3cHggMjBweCAxOHB4IDE1MHB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCAwIDNweCAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDAgM3B4IDNweDsKICBib3JkZXItcmFkaXVzOiAwIDAgM3B4IDNweDsKfQouYWN0aW9ucyAuc2Vjb25kYXJ5LWFjdGlvbiB7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci5hY3Rpb25zIC5zZWNvbmRhcnktYWN0aW9uIGEgewogIGxpbmUtaGVpZ2h0OiAzMHB4Owp9Ci5hY3Rpb25zIC5zZWNvbmRhcnktYWN0aW9uIGE6aG92ZXIgewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9Ci5oZWxwLWlubGluZSwKLmhlbHAtYmxvY2sgewogIGZvbnQtc2l6ZTogMTNweDsKICBsaW5lLWhlaWdodDogMThweDsKICBjb2xvcjogI2JmYmZiZjsKfQouaGVscC1pbmxpbmUgewogIHBhZGRpbmctbGVmdDogNXB4OwogICpwb3NpdGlvbjogcmVsYXRpdmU7CiAgLyogSUU2LTcgKi8KICAqdG9wOiAtNXB4OwogIC8qIElFNi03ICovCn0KLmhlbHAtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogNjAwcHg7Cn0KLmlubGluZS1pbnB1dHMgewogIGNvbG9yOiAjODA4MDgwOwp9Ci5pbmxpbmUtaW5wdXRzIHNwYW4gewogIHBhZGRpbmc6IDAgMnB4IDAgMXB4Owp9Ci5pbnB1dC1wcmVwZW5kIGlucHV0LAouaW5wdXQtYXBwZW5kIGlucHV0IHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAwOwogIC1tb3otYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7CiAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7Cn0KLmlucHV0LXByZXBlbmQgLmFkZC1vbiwKLmlucHV0LWFwcGVuZCAuYWRkLW9uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIHotaW5kZXg6IDI7CiAgZmxvYXQ6IGxlZnQ7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IGF1dG87CiAgbWluLXdpZHRoOiAxNnB4OwogIGhlaWdodDogMThweDsKICBwYWRkaW5nOiA0cHggNHB4IDRweCA1cHg7CiAgbWFyZ2luLXJpZ2h0OiAtMXB4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgY29sb3I6ICNiZmJmYmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDNweCAwIDAgM3B4OwogIGJvcmRlci1yYWRpdXM6IDNweCAwIDAgM3B4Owp9Ci5pbnB1dC1wcmVwZW5kIC5hY3RpdmUsCi5pbnB1dC1hcHBlbmQgLmFjdGl2ZSB7CiAgYmFja2dyb3VuZDogI2E5ZGJhOTsKICBib3JkZXItY29sb3I6ICM0NmE1NDY7Cn0KLmlucHV0LXByZXBlbmQgLmFkZC1vbiB7CiAgKm1hcmdpbi10b3A6IDFweDsKICAvKiBJRTYtNyAqLwp9Ci5pbnB1dC1hcHBlbmQgaW5wdXQgewogIGZsb2F0OiBsZWZ0OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsKICBib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsKfQouaW5wdXQtYXBwZW5kIC5hZGQtb24gewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDNweCAzcHggMDsKICBib3JkZXItcmFkaXVzOiAwIDNweCAzcHggMDsKICBtYXJnaW4tcmlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmlucHV0cy1saXN0IHsKICBtYXJnaW46IDAgMCA1cHg7CiAgd2lkdGg6IDEwMCU7Cn0KLmlucHV0cy1saXN0IGxpIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAwOwogIHdpZHRoOiAxMDAlOwp9Ci5pbnB1dHMtbGlzdCBsYWJlbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgZmxvYXQ6IG5vbmU7CiAgd2lkdGg6IGF1dG87CiAgcGFkZGluZzogMDsKICBtYXJnaW4tbGVmdDogMjBweDsKICBsaW5lLWhlaWdodDogMThweDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KLmlucHV0cy1saXN0IGxhYmVsIHN0cm9uZyB7CiAgY29sb3I6ICM4MDgwODA7Cn0KLmlucHV0cy1saXN0IGxhYmVsIHNtYWxsIHsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKfQouaW5wdXRzLWxpc3QgLmlucHV0cy1saXN0IHsKICBtYXJnaW4tbGVmdDogMjVweDsKICBtYXJnaW4tYm90dG9tOiAxMHB4OwogIHBhZGRpbmctdG9wOiAwOwp9Ci5pbnB1dHMtbGlzdDpmaXJzdC1jaGlsZCB7CiAgcGFkZGluZy10b3A6IDZweDsKfQouaW5wdXRzLWxpc3QgbGkgKyBsaSB7CiAgcGFkZGluZy10b3A6IDJweDsKfQouaW5wdXRzLWxpc3QgaW5wdXRbdHlwZT1yYWRpb10sCi5pbnB1dHMtbGlzdCBpbnB1dFt0eXBlPWNoZWNrYm94XSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBtYXJnaW4tbGVmdDogLTIwcHg7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmZvcm0tc3RhY2tlZCB7CiAgcGFkZGluZy1sZWZ0OiAyMHB4Owp9Ci5mb3JtLXN0YWNrZWQgZmllbGRzZXQgewogIHBhZGRpbmctdG9wOiA5cHg7Cn0KLmZvcm0tc3RhY2tlZCBsZWdlbmQgewogIHBhZGRpbmctbGVmdDogMDsKfQouZm9ybS1zdGFja2VkIGxhYmVsIHsKICBkaXNwbGF5OiBibG9jazsKICBmbG9hdDogbm9uZTsKICB3aWR0aDogYXV0bzsKICBmb250LXdlaWdodDogYm9sZDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIHBhZGRpbmctdG9wOiAwOwp9Ci5mb3JtLXN0YWNrZWQgLmNsZWFyZml4IHsKICBtYXJnaW4tYm90dG9tOiA5cHg7Cn0KLmZvcm0tc3RhY2tlZCAuY2xlYXJmaXggZGl2LmlucHV0IHsKICBtYXJnaW4tbGVmdDogMDsKfQouZm9ybS1zdGFja2VkIC5pbnB1dHMtbGlzdCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouZm9ybS1zdGFja2VkIC5pbnB1dHMtbGlzdCBsaSB7CiAgcGFkZGluZy10b3A6IDA7Cn0KLmZvcm0tc3RhY2tlZCAuaW5wdXRzLWxpc3QgbGkgbGFiZWwgewogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgcGFkZGluZy10b3A6IDA7Cn0KLmZvcm0tc3RhY2tlZCBkaXYuY2xlYXJmaXguZXJyb3IgewogIHBhZGRpbmctdG9wOiAxMHB4OwogIHBhZGRpbmctYm90dG9tOiAxMHB4OwogIHBhZGRpbmctbGVmdDogMTBweDsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1sZWZ0OiAtMTBweDsKfQouZm9ybS1zdGFja2VkIC5hY3Rpb25zIHsKICBtYXJnaW4tbGVmdDogLTIwcHg7CiAgcGFkZGluZy1sZWZ0OiAyMHB4Owp9Ci8qCiAqIFRhYmxlcy5sZXNzCiAqIFRhYmxlcyBmb3IsIHlvdSBndWVzc2VkIGl0LCB0YWJ1bGFyIGRhdGEKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwp0YWJsZSB7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMThweDsKICBwYWRkaW5nOiAwOwogIGZvbnQtc2l6ZTogMTNweDsKICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9CnRhYmxlIHRoLAp0YWJsZSB0ZCB7CiAgcGFkZGluZzogMTBweCAxMHB4IDlweDsKICBsaW5lLWhlaWdodDogMThweDsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9CnRhYmxlIHRoIHsKICBwYWRkaW5nLXRvcDogOXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KdGFibGUgdGQgewogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7Cn0KdGFibGUgdGJvZHkgdGggewogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KLmNvbmRlbnNlZC10YWJsZSB0aCwKLmNvbmRlbnNlZC10YWJsZSB0ZCB7CiAgcGFkZGluZzogNXB4IDVweCA0cHg7Cn0KLmJvcmRlcmVkLXRhYmxlIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7CiAgKmJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgLyogSUU3LCBjb2xsYXBzZSB0YWJsZSB0byByZW1vdmUgc3BhY2luZyAqLwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKfQouYm9yZGVyZWQtdGFibGUgdGggKyB0aCwKLmJvcmRlcmVkLXRhYmxlIHRkICsgdGQsCi5ib3JkZXJlZC10YWJsZSB0aCArIHRkIHsKICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7Cn0KLmJvcmRlcmVkLXRhYmxlIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLAouYm9yZGVyZWQtdGFibGUgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4IDAgMCAwOwogIC1tb3otYm9yZGVyLXJhZGl1czogNHB4IDAgMCAwOwogIGJvcmRlci1yYWRpdXM6IDRweCAwIDAgMDsKfQouYm9yZGVyZWQtdGFibGUgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKLmJvcmRlcmVkLXRhYmxlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCA0cHggMCAwOwogIC1tb3otYm9yZGVyLXJhZGl1czogMCA0cHggMCAwOwogIGJvcmRlci1yYWRpdXM6IDAgNHB4IDAgMDsKfQouYm9yZGVyZWQtdGFibGUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgMCA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDAgMCA0cHg7CiAgYm9yZGVyLXJhZGl1czogMCAwIDAgNHB4Owp9Ci5ib3JkZXJlZC10YWJsZSB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCAwIDRweCAwOwogIC1tb3otYm9yZGVyLXJhZGl1czogMCAwIDRweCAwOwogIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggMDsKfQp0YWJsZSAuc3BhbjEgewogIHdpZHRoOiAyMHB4Owp9CnRhYmxlIC5zcGFuMiB7CiAgd2lkdGg6IDYwcHg7Cn0KdGFibGUgLnNwYW4zIHsKICB3aWR0aDogMTAwcHg7Cn0KdGFibGUgLnNwYW40IHsKICB3aWR0aDogMTQwcHg7Cn0KdGFibGUgLnNwYW41IHsKICB3aWR0aDogMTgwcHg7Cn0KdGFibGUgLnNwYW42IHsKICB3aWR0aDogMjIwcHg7Cn0KdGFibGUgLnNwYW43IHsKICB3aWR0aDogMjYwcHg7Cn0KdGFibGUgLnNwYW44IHsKICB3aWR0aDogMzAwcHg7Cn0KdGFibGUgLnNwYW45IHsKICB3aWR0aDogMzQwcHg7Cn0KdGFibGUgLnNwYW4xMCB7CiAgd2lkdGg6IDM4MHB4Owp9CnRhYmxlIC5zcGFuMTEgewogIHdpZHRoOiA0MjBweDsKfQp0YWJsZSAuc3BhbjEyIHsKICB3aWR0aDogNDYwcHg7Cn0KdGFibGUgLnNwYW4xMyB7CiAgd2lkdGg6IDUwMHB4Owp9CnRhYmxlIC5zcGFuMTQgewogIHdpZHRoOiA1NDBweDsKfQp0YWJsZSAuc3BhbjE1IHsKICB3aWR0aDogNTgwcHg7Cn0KdGFibGUgLnNwYW4xNiB7CiAgd2lkdGg6IDYyMHB4Owp9Ci56ZWJyYS1zdHJpcGVkIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHRkLAouemVicmEtc3RyaXBlZCB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTsKfQouemVicmEtc3RyaXBlZCB0Ym9keSB0cjpob3ZlciB0ZCwKLnplYnJhLXN0cmlwZWQgdGJvZHkgdHI6aG92ZXIgdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Cn0KdGFibGUgLmhlYWRlciB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CnRhYmxlIC5oZWFkZXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGZsb2F0OiByaWdodDsKICBtYXJnaW4tdG9wOiA3cHg7CiAgYm9yZGVyLXdpZHRoOiAwIDRweCA0cHg7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItY29sb3I6ICMwMDAgdHJhbnNwYXJlbnQ7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwp9CnRhYmxlIC5oZWFkZXJTb3J0VXAsCnRhYmxlIC5oZWFkZXJTb3J0RG93biB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDEsIDE5MiwgMjE5LCAwLjI1KTsKICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7Cn0KdGFibGUgLmhlYWRlcjpob3ZlcjphZnRlciB7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKfQp0YWJsZSAuaGVhZGVyU29ydERvd246YWZ0ZXIsCnRhYmxlIC5oZWFkZXJTb3J0RG93bjpob3ZlcjphZnRlciB7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjApOwogIC1raHRtbC1vcGFjaXR5OiAwLjY7CiAgLW1vei1vcGFjaXR5OiAwLjY7CiAgb3BhY2l0eTogMC42Owp9CnRhYmxlIC5oZWFkZXJTb3J0VXA6YWZ0ZXIgewogIGJvcmRlci1ib3R0b206IG5vbmU7CiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wOiA0cHggc29saWQgIzAwMDsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICAtbW96LWJveC1zaGFkb3c6IG5vbmU7CiAgYm94LXNoYWRvdzogbm9uZTsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjApOwogIC1raHRtbC1vcGFjaXR5OiAwLjY7CiAgLW1vei1vcGFjaXR5OiAwLjY7CiAgb3BhY2l0eTogMC42Owp9CnRhYmxlIC5ibHVlIHsKICBjb2xvcjogIzA0OUNEQjsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDQ5Q0RCOwp9CnRhYmxlIC5oZWFkZXJTb3J0VXAuYmx1ZSwKdGFibGUgLmhlYWRlclNvcnREb3duLmJsdWUgewogIGJhY2tncm91bmQtY29sb3I6ICNhZGU2ZmU7Cn0KdGFibGUgLmdyZWVuIHsKICBjb2xvcjogIzQ2YTU0NjsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjNDZhNTQ2Owp9CnRhYmxlIC5oZWFkZXJTb3J0VXAuZ3JlZW4sCnRhYmxlIC5oZWFkZXJTb3J0RG93bi5ncmVlbiB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2NkZWFjZDsKfQp0YWJsZSAucmVkIHsKICBjb2xvcjogIzlkMjYxZDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjOWQyNjFkOwp9CnRhYmxlIC5oZWFkZXJTb3J0VXAucmVkLAp0YWJsZSAuaGVhZGVyU29ydERvd24ucmVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRjOGM1Owp9CnRhYmxlIC55ZWxsb3cgewogIGNvbG9yOiAjZmZjNDBkOwogIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmM0MGQ7Cn0KdGFibGUgLmhlYWRlclNvcnRVcC55ZWxsb3csCnRhYmxlIC5oZWFkZXJTb3J0RG93bi55ZWxsb3cgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY2ZDk7Cn0KdGFibGUgLm9yYW5nZSB7CiAgY29sb3I6ICNmODk0MDY7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2Y4OTQwNjsKfQp0YWJsZSAuaGVhZGVyU29ydFVwLm9yYW5nZSwKdGFibGUgLmhlYWRlclNvcnREb3duLm9yYW5nZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZTljYzsKfQp0YWJsZSAucHVycGxlIHsKICBjb2xvcjogIzdhNDNiNjsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjN2E0M2I2Owp9CnRhYmxlIC5oZWFkZXJTb3J0VXAucHVycGxlLAp0YWJsZSAuaGVhZGVyU29ydERvd24ucHVycGxlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJkNWYwOwp9Ci8qIFBhdHRlcm5zLmxlc3MKICogUmVwZWF0YWJsZSBVSSBlbGVtZW50cyBvdXRzaWRlIHRoZSBiYXNlIHN0eWxlcyBwcm92aWRlZCBmcm9tIHRoZSBzY2FmZm9sZGluZwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi50b3BiYXIgewogIGhlaWdodDogNDBweDsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgei1pbmRleDogMTAwMDA7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KLnRvcGJhciBhIHsKICBjb2xvcjogI2JmYmZiZjsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoudG9wYmFyIGgzIGE6aG92ZXIsCi50b3BiYXIgLmJyYW5kOmhvdmVyLAoudG9wYmFyIHVsIC5hY3RpdmUgPiBhIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci50b3BiYXIgaDMgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudG9wYmFyIGgzIGEsCi50b3BiYXIgLmJyYW5kIHsKICBmbG9hdDogbGVmdDsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiA4cHggMjBweCAxMnB4OwogIG1hcmdpbi1sZWZ0OiAtMjBweDsKICBjb2xvcjogI2ZmZjsKICBmb250LXNpemU6IDIwcHg7CiAgZm9udC13ZWlnaHQ6IDIwMDsKICBsaW5lLWhlaWdodDogMTsKfQoudG9wYmFyIHAgewogIG1hcmdpbjogMDsKICBsaW5lLWhlaWdodDogNDBweDsKfQoudG9wYmFyIHAgYTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgY29sb3I6ICNmZmY7Cn0KLnRvcGJhciBmb3JtIHsKICBmbG9hdDogbGVmdDsKICBtYXJnaW46IDVweCAwIDAgMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgLWtodG1sLW9wYWNpdHk6IDE7CiAgLW1vei1vcGFjaXR5OiAxOwogIG9wYWNpdHk6IDE7Cn0KLnRvcGJhciBmb3JtLnB1bGwtcmlnaHQgewogIGZsb2F0OiByaWdodDsKfQoudG9wYmFyIGlucHV0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0OwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTNweDsKICBsaW5lLWhlaWdodDogMTsKICBwYWRkaW5nOiA0cHggOXB4OwogIGNvbG9yOiAjZmZmOwogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOwogIGJvcmRlcjogMXB4IHNvbGlkICMxMTE7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxcHggMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7CiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgLW1vei10cmFuc2l0aW9uOiBub25lOwogIC1tcy10cmFuc2l0aW9uOiBub25lOwogIC1vLXRyYW5zaXRpb246IG5vbmU7CiAgdHJhbnNpdGlvbjogbm9uZTsKfQoudG9wYmFyIGlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjZTZlNmU2Owp9Ci50b3BiYXIgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjZTZlNmU2Owp9Ci50b3BiYXIgaW5wdXQ6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNiZmJmYmY7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwogIGNvbG9yOiAjZmZmOwp9Ci50b3BiYXIgaW5wdXQ6Zm9jdXMsCi50b3BiYXIgaW5wdXQuZm9jdXNlZCB7CiAgb3V0bGluZTogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGNvbG9yOiAjNDA0MDQwOwogIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDVweCAxMHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDNweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIC1tb3otYm94LXNoYWRvdzogMCAwIDNweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIGJveC1zaGFkb3c6IDAgMCAzcHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKfQoudG9wYmFyLWlubmVyLAoudG9wYmFyIC5maWxsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBiYWNrZ3JvdW5kLWltYWdlOiAta2h0bWwtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oIzMzMyksIHRvKCMyMjIpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzMsICMyMjIpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjMzMzLCAjMjIyKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCAjMzMzKSwgY29sb3Itc3RvcCgxMDAlLCAjMjIyKSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjMzMzLCAjMjIyKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjMzMzLCAjMjIyKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG9wLCAjMzMzLCAjMjIyKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMzMzJywgZW5kQ29sb3JzdHI9JyMyMjInLCBHcmFkaWVudFR5cGU9MCk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgaW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwogIC1tb3otYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yNSksIGluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgaW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOwp9Ci50b3BiYXIgZGl2ID4gdWwsCi5uYXYgewogIGRpc3BsYXk6IGJsb2NrOwogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbjogMCAxMHB4IDAgMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbGVmdDogMDsKfQoudG9wYmFyIGRpdiA+IHVsID4gbGksCi5uYXYgPiBsaSB7CiAgZGlzcGxheTogYmxvY2s7CiAgZmxvYXQ6IGxlZnQ7Cn0KLnRvcGJhciBkaXYgPiB1bCBhLAoubmF2IGEgewogIGRpc3BsYXk6IGJsb2NrOwogIGZsb2F0OiBub25lOwogIHBhZGRpbmc6IDEwcHggMTBweCAxMXB4OwogIGxpbmUtaGVpZ2h0OiAxOXB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudG9wYmFyIGRpdiA+IHVsIGE6aG92ZXIsCi5uYXYgYTpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci50b3BiYXIgZGl2ID4gdWwgLmFjdGl2ZSA+IGEsCi5uYXYgLmFjdGl2ZSA+IGEgewogIGJhY2tncm91bmQtY29sb3I6ICMyMjI7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOwp9Ci50b3BiYXIgZGl2ID4gdWwuc2Vjb25kYXJ5LW5hdiwKLm5hdi5zZWNvbmRhcnktbmF2IHsKICBmbG9hdDogcmlnaHQ7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgbWFyZ2luLXJpZ2h0OiAwOwp9Ci50b3BiYXIgZGl2ID4gdWwuc2Vjb25kYXJ5LW5hdiAubWVudS1kcm9wZG93biwKLm5hdi5zZWNvbmRhcnktbmF2IC5tZW51LWRyb3Bkb3duLAoudG9wYmFyIGRpdiA+IHVsLnNlY29uZGFyeS1uYXYgLmRyb3Bkb3duLW1lbnUsCi5uYXYuc2Vjb25kYXJ5LW5hdiAuZHJvcGRvd24tbWVudSB7CiAgcmlnaHQ6IDA7CiAgYm9yZGVyOiAwOwp9Ci50b3BiYXIgZGl2ID4gdWwgYS5tZW51OmhvdmVyLAoubmF2IGEubWVudTpob3ZlciwKLnRvcGJhciBkaXYgPiB1bCBsaS5vcGVuIC5tZW51LAoubmF2IGxpLm9wZW4gLm1lbnUsCi50b3BiYXIgZGl2ID4gdWwgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwKLm5hdiAuZHJvcGRvd24tdG9nZ2xlOmhvdmVyLAoudG9wYmFyIGRpdiA+IHVsIC5kcm9wZG93bi5vcGVuIC5kcm9wZG93bi10b2dnbGUsCi5uYXYgLmRyb3Bkb3duLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgYmFja2dyb3VuZDogIzQ0NDsKICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwp9Ci50b3BiYXIgZGl2ID4gdWwgLm1lbnUtZHJvcGRvd24sCi5uYXYgLm1lbnUtZHJvcGRvd24sCi50b3BiYXIgZGl2ID4gdWwgLmRyb3Bkb3duLW1lbnUsCi5uYXYgLmRyb3Bkb3duLW1lbnUgewogIGJhY2tncm91bmQtY29sb3I6ICMzMzM7Cn0KLnRvcGJhciBkaXYgPiB1bCAubWVudS1kcm9wZG93biBhLm1lbnUsCi5uYXYgLm1lbnUtZHJvcGRvd24gYS5tZW51LAoudG9wYmFyIGRpdiA+IHVsIC5kcm9wZG93bi1tZW51IGEubWVudSwKLm5hdiAuZHJvcGRvd24tbWVudSBhLm1lbnUsCi50b3BiYXIgZGl2ID4gdWwgLm1lbnUtZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZSwKLm5hdiAubWVudS1kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLAoudG9wYmFyIGRpdiA+IHVsIC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi10b2dnbGUsCi5uYXYgLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7Cn0KLnRvcGJhciBkaXYgPiB1bCAubWVudS1kcm9wZG93biBhLm1lbnUub3BlbiwKLm5hdiAubWVudS1kcm9wZG93biBhLm1lbnUub3BlbiwKLnRvcGJhciBkaXYgPiB1bCAuZHJvcGRvd24tbWVudSBhLm1lbnUub3BlbiwKLm5hdiAuZHJvcGRvd24tbWVudSBhLm1lbnUub3BlbiwKLnRvcGJhciBkaXYgPiB1bCAubWVudS1kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm9wZW4sCi5uYXYgLm1lbnUtZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5vcGVuLAoudG9wYmFyIGRpdiA+IHVsIC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi10b2dnbGUub3BlbiwKLm5hdiAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24tdG9nZ2xlLm9wZW4gewogIGJhY2tncm91bmQ6ICM0NDQ7CiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKfQoudG9wYmFyIGRpdiA+IHVsIC5tZW51LWRyb3Bkb3duIGxpIGEsCi5uYXYgLm1lbnUtZHJvcGRvd24gbGkgYSwKLnRvcGJhciBkaXYgPiB1bCAuZHJvcGRvd24tbWVudSBsaSBhLAoubmF2IC5kcm9wZG93bi1tZW51IGxpIGEgewogIGNvbG9yOiAjOTk5OwogIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC41KTsKfQoudG9wYmFyIGRpdiA+IHVsIC5tZW51LWRyb3Bkb3duIGxpIGE6aG92ZXIsCi5uYXYgLm1lbnUtZHJvcGRvd24gbGkgYTpob3ZlciwKLnRvcGJhciBkaXYgPiB1bCAuZHJvcGRvd24tbWVudSBsaSBhOmhvdmVyLAoubmF2IC5kcm9wZG93bi1tZW51IGxpIGE6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICMxOTE5MTk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGJhY2tncm91bmQtaW1hZ2U6IC1raHRtbC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgjMjkyOTI5KSwgdG8oIzE5MTkxOSkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzI5MjkyOSwgIzE5MTkxOSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICMyOTI5MjksICMxOTE5MTkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUsICMyOTI5MjkpLCBjb2xvci1zdG9wKDEwMCUsICMxOTE5MTkpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMyOTI5MjksICMxOTE5MTkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICMyOTI5MjksICMxOTE5MTkpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsICMyOTI5MjksICMxOTE5MTkpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMyOTI5MjknLCBlbmRDb2xvcnN0cj0nIzE5MTkxOScsIEdyYWRpZW50VHlwZT0wKTsKICBjb2xvcjogI2ZmZjsKfQoudG9wYmFyIGRpdiA+IHVsIC5tZW51LWRyb3Bkb3duIC5hY3RpdmUgYSwKLm5hdiAubWVudS1kcm9wZG93biAuYWN0aXZlIGEsCi50b3BiYXIgZGl2ID4gdWwgLmRyb3Bkb3duLW1lbnUgLmFjdGl2ZSBhLAoubmF2IC5kcm9wZG93bi1tZW51IC5hY3RpdmUgYSB7CiAgY29sb3I6ICNmZmY7Cn0KLnRvcGJhciBkaXYgPiB1bCAubWVudS1kcm9wZG93biAuZGl2aWRlciwKLm5hdiAubWVudS1kcm9wZG93biAuZGl2aWRlciwKLnRvcGJhciBkaXYgPiB1bCAuZHJvcGRvd24tbWVudSAuZGl2aWRlciwKLm5hdiAuZHJvcGRvd24tbWVudSAuZGl2aWRlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjsKICBib3JkZXItY29sb3I6ICM0NDQ7Cn0KLnRvcGJhciB1bCAubWVudS1kcm9wZG93biBsaSBhLAoudG9wYmFyIHVsIC5kcm9wZG93bi1tZW51IGxpIGEgewogIHBhZGRpbmc6IDRweCAxNXB4Owp9CmxpLm1lbnUsCi5kcm9wZG93biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CmEubWVudTphZnRlciwKLmRyb3Bkb3duLXRvZ2dsZTphZnRlciB7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBjb250ZW50OiAiJmRhcnI7IjsKICB0ZXh0LWluZGVudDogLTk5OTk5cHg7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBtYXJnaW4tdG9wOiA4cHg7CiAgbWFyZ2luLWxlZnQ6IDRweDsKICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci10b3A6IDRweCBzb2xpZCAjZmZmOwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7CiAgLWtodG1sLW9wYWNpdHk6IDAuNTsKICAtbW96LW9wYWNpdHk6IDAuNTsKICBvcGFjaXR5OiAwLjU7Cn0KLm1lbnUtZHJvcGRvd24sCi5kcm9wZG93bi1tZW51IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGZsb2F0OiBsZWZ0OwogIGRpc3BsYXk6IG5vbmU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNDBweDsKICB6LWluZGV4OiA5MDA7CiAgbWluLXdpZHRoOiAxNjBweDsKICBtYXgtd2lkdGg6IDIyMHB4OwogIF93aWR0aDogMTYwcHg7CiAgbWFyZ2luLWxlZnQ6IDA7CiAgbWFyZ2luLXJpZ2h0OiAwOwogIHBhZGRpbmc6IDZweCAwOwogIHpvb206IDE7CiAgYm9yZGVyLWNvbG9yOiAjOTk5OwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1zdHlsZTogc29saWQ7CiAgYm9yZGVyLXdpZHRoOiAwIDFweCAxcHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgNnB4IDZweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4OwogIGJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAtbW96LWJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Cn0KLm1lbnUtZHJvcGRvd24gbGksCi5kcm9wZG93bi1tZW51IGxpIHsKICBmbG9hdDogbm9uZTsKICBkaXNwbGF5OiBibG9jazsKICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lOwp9Ci5tZW51LWRyb3Bkb3duIC5kaXZpZGVyLAouZHJvcGRvd24tbWVudSAuZGl2aWRlciB7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiA1cHggMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmZmY7Cn0KLnRvcGJhciAuZHJvcGRvd24tbWVudSBhLAouZHJvcGRvd24tbWVudSBhIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiA0cHggMTVweDsKICBjbGVhcjogYm90aDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGNvbG9yOiAjODA4MDgwOwogIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7Cn0KLnRvcGJhciAuZHJvcGRvd24tbWVudSBhOmhvdmVyLAouZHJvcGRvd24tbWVudSBhOmhvdmVyLAoudG9wYmFyIC5kcm9wZG93bi1tZW51IGEuaG92ZXIsCi5kcm9wZG93bi1tZW51IGEuaG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNkZGRkZGQ7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGJhY2tncm91bmQtaW1hZ2U6IC1raHRtbC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgjZWVlZWVlKSwgdG8oI2RkZGRkZCkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlZWVlZSwgI2RkZGRkZCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNlZWVlZWUsICNkZGRkZGQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUsICNlZWVlZWUpLCBjb2xvci1zdG9wKDEwMCUsICNkZGRkZGQpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNlZWVlZWUsICNkZGRkZGQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNlZWVlZWUsICNkZGRkZGQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsICNlZWVlZWUsICNkZGRkZGQpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNlZWVlZWUnLCBlbmRDb2xvcnN0cj0nI2RkZGRkZCcsIEdyYWRpZW50VHlwZT0wKTsKICBjb2xvcjogIzQwNDA0MDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4wMjUpLCBpbnNldCAwIC0xcHggcmdiYSgwLCAwLCAwLCAwLjAyNSk7CiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4wMjUpLCBpbnNldCAwIC0xcHggcmdiYSgwLCAwLCAwLCAwLjAyNSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuMDI1KSwgaW5zZXQgMCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4wMjUpOwp9Ci5vcGVuIC5tZW51LAouZHJvcGRvd24ub3BlbiAubWVudSwKLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSwKLmRyb3Bkb3duLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZDogI2NjYzsKICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMyk7Cn0KLm9wZW4gLm1lbnUtZHJvcGRvd24sCi5kcm9wZG93bi5vcGVuIC5tZW51LWRyb3Bkb3duLAoub3BlbiAuZHJvcGRvd24tbWVudSwKLmRyb3Bkb3duLm9wZW4gLmRyb3Bkb3duLW1lbnUgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci50YWJzLAoucGlsbHMgewogIG1hcmdpbjogMCAwIDE4cHg7CiAgcGFkZGluZzogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIHpvb206IDE7Cn0KLnRhYnM6YmVmb3JlLAoucGlsbHM6YmVmb3JlLAoudGFiczphZnRlciwKLnBpbGxzOmFmdGVyIHsKICBkaXNwbGF5OiB0YWJsZTsKICBjb250ZW50OiAiIjsKICB6b29tOiAxOwp9Ci50YWJzOmFmdGVyLAoucGlsbHM6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci50YWJzID4gbGksCi5waWxscyA+IGxpIHsKICBmbG9hdDogbGVmdDsKfQoudGFicyA+IGxpID4gYSwKLnBpbGxzID4gbGkgPiBhIHsKICBkaXNwbGF5OiBibG9jazsKfQoudGFicyB7CiAgYm9yZGVyLWNvbG9yOiAjZGRkOwogIGJvcmRlci1zdHlsZTogc29saWQ7CiAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4Owp9Ci50YWJzID4gbGkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW4tYm90dG9tOiAtMXB4Owp9Ci50YWJzID4gbGkgPiBhIHsKICBwYWRkaW5nOiAwIDE1cHg7CiAgbWFyZ2luLXJpZ2h0OiAycHg7CiAgbGluZS1oZWlnaHQ6IDM0cHg7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOwogIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOwp9Ci50YWJzID4gbGkgPiBhOmhvdmVyIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICBib3JkZXItY29sb3I6ICNlZWUgI2VlZSAjZGRkOwp9Ci50YWJzIC5hY3RpdmUgPiBhLAoudGFicyAuYWN0aXZlID4gYTpob3ZlciB7CiAgY29sb3I6ICM4MDgwODA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogZGVmYXVsdDsKfQoudGFicyAubWVudS1kcm9wZG93biwKLnRhYnMgLmRyb3Bkb3duLW1lbnUgewogIHRvcDogMzVweDsKICBib3JkZXItd2lkdGg6IDFweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgNnB4IDZweCA2cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDZweCA2cHggNnB4OwogIGJvcmRlci1yYWRpdXM6IDAgNnB4IDZweCA2cHg7Cn0KLnRhYnMgYS5tZW51OmFmdGVyLAoudGFicyAuZHJvcGRvd24tdG9nZ2xlOmFmdGVyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjOTk5OwogIG1hcmdpbi10b3A6IDE1cHg7CiAgbWFyZ2luLWxlZnQ6IDVweDsKfQoudGFicyBsaS5vcGVuLm1lbnUgLm1lbnUsCi50YWJzIC5vcGVuLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUgewogIGJvcmRlci1jb2xvcjogIzk5OTsKfQoudGFicyBsaS5vcGVuIGEubWVudTphZnRlciwKLnRhYnMgLmRyb3Bkb3duLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZTphZnRlciB7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzU1NTsKfQoucGlsbHMgYSB7CiAgbWFyZ2luOiA1cHggM3B4IDVweCAwOwogIHBhZGRpbmc6IDAgMTVweDsKICBsaW5lLWhlaWdodDogMzBweDsKICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4ICNmZmY7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMTVweDsKICBib3JkZXItcmFkaXVzOiAxNXB4Owp9Ci5waWxscyBhOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDQzOGE7Cn0KLnBpbGxzIC5hY3RpdmUgYSB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDY5ZDY7Cn0KLnBpbGxzLXZlcnRpY2FsID4gbGkgewogIGZsb2F0OiBub25lOwp9Ci50YWItY29udGVudCA+IC50YWItcGFuZSwKLnBpbGwtY29udGVudCA+IC5waWxsLXBhbmUsCi50YWItY29udGVudCA+IGRpdiwKLnBpbGwtY29udGVudCA+IGRpdiB7CiAgZGlzcGxheTogbm9uZTsKfQoudGFiLWNvbnRlbnQgPiAuYWN0aXZlLAoucGlsbC1jb250ZW50ID4gLmFjdGl2ZSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLmJyZWFkY3J1bWIgewogIHBhZGRpbmc6IDdweCAxNHB4OwogIG1hcmdpbjogMCAwIDE4cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYmFja2dyb3VuZC1pbWFnZTogLWtodG1sLWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNmZmZmZmYpLCB0bygjZjVmNWY1KSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZjVmNWY1KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2Y1ZjVmNSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwgI2ZmZmZmZiksIGNvbG9yLXN0b3AoMTAwJSwgI2Y1ZjVmNSkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2Y1ZjVmNSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2Y1ZjVmNSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2Y1ZjVmNSk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZmZmZicsIGVuZENvbG9yc3RyPScjZjVmNWY1JywgR3JhZGllbnRUeXBlPTApOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAjZmZmOwogIC1tb3otYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAjZmZmOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgI2ZmZjsKfQouYnJlYWRjcnVtYiBsaSB7CiAgZGlzcGxheTogaW5saW5lOwogIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7Cn0KLmJyZWFkY3J1bWIgLmRpdmlkZXIgewogIHBhZGRpbmc6IDAgNXB4OwogIGNvbG9yOiAjYmZiZmJmOwp9Ci5icmVhZGNydW1iIC5hY3RpdmUgYSB7CiAgY29sb3I6ICM0MDQwNDA7Cn0KLmhlcm8tdW5pdCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBtYXJnaW4tYm90dG9tOiAzMHB4OwogIHBhZGRpbmc6IDYwcHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5oZXJvLXVuaXQgaDEgewogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiA2MHB4OwogIGxpbmUtaGVpZ2h0OiAxOwogIGxldHRlci1zcGFjaW5nOiAtMXB4Owp9Ci5oZXJvLXVuaXQgcCB7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IDI3cHg7Cn0KZm9vdGVyIHsKICBtYXJnaW4tdG9wOiAxN3B4OwogIHBhZGRpbmctdG9wOiAxN3B4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlOwp9Ci5wYWdlLWhlYWRlciB7CiAgbWFyZ2luLWJvdHRvbTogMTdweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwogIC1tb3otYm94LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7CiAgYm94LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KLnBhZ2UtaGVhZGVyIGgxIHsKICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KLmJ0bi5kYW5nZXIsCi5hbGVydC1tZXNzYWdlLmRhbmdlciwKLmJ0bi5kYW5nZXI6aG92ZXIsCi5hbGVydC1tZXNzYWdlLmRhbmdlcjpob3ZlciwKLmJ0bi5lcnJvciwKLmFsZXJ0LW1lc3NhZ2UuZXJyb3IsCi5idG4uZXJyb3I6aG92ZXIsCi5hbGVydC1tZXNzYWdlLmVycm9yOmhvdmVyLAouYnRuLnN1Y2Nlc3MsCi5hbGVydC1tZXNzYWdlLnN1Y2Nlc3MsCi5idG4uc3VjY2Vzczpob3ZlciwKLmFsZXJ0LW1lc3NhZ2Uuc3VjY2Vzczpob3ZlciwKLmJ0bi5pbmZvLAouYWxlcnQtbWVzc2FnZS5pbmZvLAouYnRuLmluZm86aG92ZXIsCi5hbGVydC1tZXNzYWdlLmluZm86aG92ZXIgewogIGNvbG9yOiAjZmZmOwp9Ci5idG4gLmNsb3NlLAouYWxlcnQtbWVzc2FnZSAuY2xvc2UgewogIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsKICBsaW5lLWhlaWdodDogMThweDsKfQouYnRuLmRhbmdlciwKLmFsZXJ0LW1lc3NhZ2UuZGFuZ2VyLAouYnRuLmVycm9yLAouYWxlcnQtbWVzc2FnZS5lcnJvciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M0M2MzNTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYmFja2dyb3VuZC1pbWFnZTogLWtodG1sLWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNlZTVmNWIpLCB0bygjYzQzYzM1KSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZWU1ZjViLCAjYzQzYzM1KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2M0M2MzNSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwgI2VlNWY1YiksIGNvbG9yLXN0b3AoMTAwJSwgI2M0M2MzNSkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2M0M2MzNSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2M0M2MzNSk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2M0M2MzNSk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2VlNWY1YicsIGVuZENvbG9yc3RyPScjYzQzYzM1JywgR3JhZGllbnRUeXBlPTApOwogIHRleHQtc2hhZG93OiAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIGJvcmRlci1jb2xvcjogI2M0M2MzNSAjYzQzYzM1ICM4ODJhMjU7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KLmJ0bi5zdWNjZXNzLAouYWxlcnQtbWVzc2FnZS5zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTdhOTU3OwogIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICBiYWNrZ3JvdW5kLWltYWdlOiAta2h0bWwtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oIzYyYzQ2MiksIHRvKCM1N2E5NTcpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICM2MmM0NjIsICM1N2E5NTcpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTdhOTU3KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCAjNjJjNDYyKSwgY29sb3Itc3RvcCgxMDAlLCAjNTdhOTU3KSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTdhOTU3KTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTdhOTU3KTsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTdhOTU3KTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjNjJjNDYyJywgZW5kQ29sb3JzdHI9JyM1N2E5NTcnLCBHcmFkaWVudFR5cGU9MCk7CiAgdGV4dC1zaGFkb3c6IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7CiAgYm9yZGVyLWNvbG9yOiAjNTdhOTU3ICM1N2E5NTcgIzNkNzczZDsKICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnRuLmluZm8sCi5hbGVydC1tZXNzYWdlLmluZm8gewogIGJhY2tncm91bmQtY29sb3I6ICMzMzliYjk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGJhY2tncm91bmQtaW1hZ2U6IC1raHRtbC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgjNWJjMGRlKSwgdG8oIzMzOWJiOSkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzViYzBkZSwgIzMzOWJiOSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUsICMzMzliYjkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUsICM1YmMwZGUpLCBjb2xvci1zdG9wKDEwMCUsICMzMzliYjkpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUsICMzMzliYjkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUsICMzMzliYjkpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUsICMzMzliYjkpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyM1YmMwZGUnLCBlbmRDb2xvcnN0cj0nIzMzOWJiOScsIEdyYWRpZW50VHlwZT0wKTsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTsKICBib3JkZXItY29sb3I6ICMzMzliYjkgIzMzOWJiOSAjMjI2OTdkOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpOwp9Ci5idG4gewogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjZmZmZmZmKSwgY29sb3Itc3RvcCgyNSUsICNmZmZmZmYpLCB0bygjZTZlNmU2KSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI2ZmZmZmZiwgI2ZmZmZmZiAyNSUsICNlNmU2ZTYpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2ZmZmZmZiAyNSUsICNlNmU2ZTYpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoI2ZmZmZmZiwgI2ZmZmZmZiAyNSUsICNlNmU2ZTYpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCgjZmZmZmZmLCAjZmZmZmZmIDI1JSwgI2U2ZTZlNik7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCNmZmZmZmYsICNmZmZmZmYgMjUlLCAjZTZlNmU2KTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmZmZmJywgZW5kQ29sb3JzdHI9JyNlNmU2ZTYnLCBHcmFkaWVudFR5cGU9MCk7CiAgcGFkZGluZzogNXB4IDE0cHggNnB4OwogIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsKICBjb2xvcjogIzMzMzsKICBmb250LXNpemU6IDEzcHg7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGJvcmRlci1ib3R0b20tY29sb3I6ICNiYmI7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIC1tb3otYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtd2Via2l0LXRyYW5zaXRpb246IDAuMXMgbGluZWFyIGFsbDsKICAtbW96LXRyYW5zaXRpb246IDAuMXMgbGluZWFyIGFsbDsKICAtbXMtdHJhbnNpdGlvbjogMC4xcyBsaW5lYXIgYWxsOwogIC1vLXRyYW5zaXRpb246IDAuMXMgbGluZWFyIGFsbDsKICB0cmFuc2l0aW9uOiAwLjFzIGxpbmVhciBhbGw7Cn0KLmJ0bjpob3ZlciB7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTVweDsKICBjb2xvcjogIzMzMzsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmJ0bjpmb2N1cyB7CiAgb3V0bGluZTogMXB4IGRvdHRlZCAjNjY2Owp9Ci5idG4ucHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjRDRDsKICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CiAgYmFja2dyb3VuZC1pbWFnZTogLWtodG1sLWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCMwNDlDREIpLCB0bygjMDA2NENEKSk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjMDQ5Q0RCLCAjMDA2NENEKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzA0OUNEQiwgIzAwNjRDRCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwgIzA0OUNEQiksIGNvbG9yLXN0b3AoMTAwJSwgIzAwNjRDRCkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzA0OUNEQiwgIzAwNjRDRCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzA0OUNEQiwgIzAwNjRDRCk7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvcCwgIzA0OUNEQiwgIzAwNjRDRCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzA0OUNEQicsIGVuZENvbG9yc3RyPScjMDA2NENEJywgR3JhZGllbnRUeXBlPTApOwogIHRleHQtc2hhZG93OiAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIGJvcmRlci1jb2xvcjogIzAwNjRDRCAjMDA2NENEICMwMDNmODE7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KLmJ0bi5hY3RpdmUsCi5idG4gOmFjdGl2ZSB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5idG4uZGlzYWJsZWQgewogIGN1cnNvcjogZGVmYXVsdDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSk7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTY1KTsKICAta2h0bWwtb3BhY2l0eTogMC42NTsKICAtbW96LW9wYWNpdHk6IDAuNjU7CiAgb3BhY2l0eTogMC42NTsKICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgLW1vei1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ0bltkaXNhYmxlZF0gewogIGN1cnNvcjogZGVmYXVsdDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSk7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTY1KTsKICAta2h0bWwtb3BhY2l0eTogMC42NTsKICAtbW96LW9wYWNpdHk6IDAuNjU7CiAgb3BhY2l0eTogMC42NTsKICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgLW1vei1ib3gtc2hhZG93OiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ0bi5sYXJnZSB7CiAgZm9udC1zaXplOiAxNXB4OwogIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgcGFkZGluZzogOXB4IDE0cHggOXB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogIGJvcmRlci1yYWRpdXM6IDZweDsKfQouYnRuLnNtYWxsIHsKICBwYWRkaW5nOiA3cHggOXB4IDdweDsKICBmb250LXNpemU6IDExcHg7Cn0KOnJvb3QgLmFsZXJ0LW1lc3NhZ2UsCjpyb290IC5idG4gewogIGJvcmRlci1yYWRpdXM6IDAgXDA7Cn0KYnV0dG9uLmJ0bjo6LW1vei1mb2N1cy1pbm5lciwKaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bjo6LW1vei1mb2N1cy1pbm5lciB7CiAgcGFkZGluZzogMDsKICBib3JkZXI6IDA7Cn0KLmNsb3NlIHsKICBmbG9hdDogcmlnaHQ7CiAgY29sb3I6ICMwMDA7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiAxMy41cHg7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZmZmZjsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MjUpOwogIC1raHRtbC1vcGFjaXR5OiAwLjI1OwogIC1tb3otb3BhY2l0eTogMC4yNTsKICBvcGFjaXR5OiAwLjI1Owp9Ci5jbG9zZTpob3ZlciB7CiAgY29sb3I6ICMwMDA7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGZpbHRlcjogYWxwaGEob3BhY2l0eT00MCk7CiAgLWtodG1sLW9wYWNpdHk6IDAuNDsKICAtbW96LW9wYWNpdHk6IDAuNDsKICBvcGFjaXR5OiAwLjQ7Cn0KLmFsZXJ0LW1lc3NhZ2UgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiA3cHggMTVweDsKICBtYXJnaW4tYm90dG9tOiAxOHB4OwogIGNvbG9yOiAjNDA0MDQwOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWRjOTQ7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogIGJhY2tncm91bmQtaW1hZ2U6IC1raHRtbC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgjZmNlZWMxKSwgdG8oI2VlZGM5NCkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZjZWVjMSwgI2VlZGM5NCk7CiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmY2VlYzEsICNlZWRjOTQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUsICNmY2VlYzEpLCBjb2xvci1zdG9wKDEwMCUsICNlZWRjOTQpKTsKICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmY2VlYzEsICNlZWRjOTQpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmY2VlYzEsICNlZWRjOTQpOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0b3AsICNmY2VlYzEsICNlZWRjOTQpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmY2VlYzEnLCBlbmRDb2xvcnN0cj0nI2VlZGM5NCcsIEdyYWRpZW50VHlwZT0wKTsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTsKICBib3JkZXItY29sb3I6ICNlZWRjOTQgI2VlZGM5NCAjZTRjNjUyOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKICBib3JkZXItd2lkdGg6IDFweDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7Cn0KLmFsZXJ0LW1lc3NhZ2UgLmNsb3NlIHsKICBtYXJnaW4tdG9wOiAxcHg7CiAgKm1hcmdpbi10b3A6IDA7Cn0KLmFsZXJ0LW1lc3NhZ2UgYSB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6ICM0MDQwNDA7Cn0KLmFsZXJ0LW1lc3NhZ2UuZGFuZ2VyIHAgYSwKLmFsZXJ0LW1lc3NhZ2UuZXJyb3IgcCBhLAouYWxlcnQtbWVzc2FnZS5zdWNjZXNzIHAgYSwKLmFsZXJ0LW1lc3NhZ2UuaW5mbyBwIGEgewogIGNvbG9yOiAjZmZmOwp9Ci5hbGVydC1tZXNzYWdlIGg1IHsKICBsaW5lLWhlaWdodDogMThweDsKfQouYWxlcnQtbWVzc2FnZSBwIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5hbGVydC1tZXNzYWdlIGRpdiB7CiAgbWFyZ2luLXRvcDogNXB4OwogIG1hcmdpbi1ib3R0b206IDJweDsKICBsaW5lLWhlaWdodDogMjhweDsKfQouYWxlcnQtbWVzc2FnZSAuYnRuIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKICAtbW96LWJveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKICBib3gtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7Cn0KLmFsZXJ0LW1lc3NhZ2UuYmxvY2stbWVzc2FnZSB7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmNWQ5OwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQgPSBmYWxzZSk7CiAgcGFkZGluZzogMTRweDsKICBib3JkZXItY29sb3I6ICNmY2VlYzE7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIC1tb3otYm94LXNoYWRvdzogbm9uZTsKICBib3gtc2hhZG93OiBub25lOwp9Ci5hbGVydC1tZXNzYWdlLmJsb2NrLW1lc3NhZ2UgdWwsCi5hbGVydC1tZXNzYWdlLmJsb2NrLW1lc3NhZ2UgcCB7CiAgbWFyZ2luLXJpZ2h0OiAzMHB4Owp9Ci5hbGVydC1tZXNzYWdlLmJsb2NrLW1lc3NhZ2UgdWwgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmFsZXJ0LW1lc3NhZ2UuYmxvY2stbWVzc2FnZSBsaSB7CiAgY29sb3I6ICM0MDQwNDA7Cn0KLmFsZXJ0LW1lc3NhZ2UuYmxvY2stbWVzc2FnZSAuYWxlcnQtYWN0aW9ucyB7CiAgbWFyZ2luLXRvcDogNXB4Owp9Ci5hbGVydC1tZXNzYWdlLmJsb2NrLW1lc3NhZ2UuZXJyb3IsCi5hbGVydC1tZXNzYWdlLmJsb2NrLW1lc3NhZ2Uuc3VjY2VzcywKLmFsZXJ0LW1lc3NhZ2UuYmxvY2stbWVzc2FnZS5pbmZvIHsKICBjb2xvcjogIzQwNDA0MDsKICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KLmFsZXJ0LW1lc3NhZ2UuYmxvY2stbWVzc2FnZS5lcnJvciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZGZkZTsKICBib3JkZXItY29sb3I6ICNmYmM3YzY7Cn0KLmFsZXJ0LW1lc3NhZ2UuYmxvY2stbWVzc2FnZS5zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFlZWQxOwogIGJvcmRlci1jb2xvcjogI2JmZTdiZjsKfQouYWxlcnQtbWVzc2FnZS5ibG9jay1tZXNzYWdlLmluZm8gewogIGJhY2tncm91bmQtY29sb3I6ICNkZGY0ZmI7CiAgYm9yZGVyLWNvbG9yOiAjYzZlZGY5Owp9Ci5hbGVydC1tZXNzYWdlLmJsb2NrLW1lc3NhZ2UuZGFuZ2VyIHAgYSwKLmFsZXJ0LW1lc3NhZ2UuYmxvY2stbWVzc2FnZS5lcnJvciBwIGEsCi5hbGVydC1tZXNzYWdlLmJsb2NrLW1lc3NhZ2Uuc3VjY2VzcyBwIGEsCi5hbGVydC1tZXNzYWdlLmJsb2NrLW1lc3NhZ2UuaW5mbyBwIGEgewogIGNvbG9yOiAjNDA0MDQwOwp9Ci5wYWdpbmF0aW9uIHsKICBoZWlnaHQ6IDM2cHg7CiAgbWFyZ2luOiAxOHB4IDA7Cn0KLnBhZ2luYXRpb24gdWwgewogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbjogMDsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7CiAgLW1vei1ib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKfQoucGFnaW5hdGlvbiBsaSB7CiAgZGlzcGxheTogaW5saW5lOwp9Ci5wYWdpbmF0aW9uIGEgewogIGZsb2F0OiBsZWZ0OwogIHBhZGRpbmc6IDAgMTRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZDsKICBib3JkZXItcmlnaHQtY29sb3I6ICNkZGQ7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICpib3JkZXItcmlnaHQtY29sb3I6ICNkZGQ7CiAgLyogSUU2LTcgKi8KICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLnBhZ2luYXRpb24gYTpob3ZlciwKLnBhZ2luYXRpb24gLmFjdGl2ZSBhIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzdlZWZlOwp9Ci5wYWdpbmF0aW9uIC5kaXNhYmxlZCBhLAoucGFnaW5hdGlvbiAuZGlzYWJsZWQgYTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgY29sb3I6ICNiZmJmYmY7Cn0KLnBhZ2luYXRpb24gLm5leHQgYSB7CiAgYm9yZGVyOiAwOwp9Ci53ZWxsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgcGFkZGluZzogMTlweDsKICBtaW4taGVpZ2h0OiAyMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci53ZWxsIGJsb2NrcXVvdGUgewogIGJvcmRlci1jb2xvcjogI2RkZDsKICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNSk7Cn0KLm1vZGFsLWJhY2tkcm9wIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgei1pbmRleDogMTAwMDA7Cn0KLm1vZGFsLWJhY2tkcm9wLmZhZGUgewogIG9wYWNpdHk6IDA7Cn0KLm1vZGFsLWJhY2tkcm9wLAoubW9kYWwtYmFja2Ryb3AuZmFkZS5pbiB7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTsKICAta2h0bWwtb3BhY2l0eTogMC44OwogIC1tb3otb3BhY2l0eTogMC44OwogIG9wYWNpdHk6IDAuODsKfQoubW9kYWwgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDUwJTsKICBsZWZ0OiA1MCU7CiAgei1pbmRleDogMTEwMDA7CiAgd2lkdGg6IDU2MHB4OwogIG1hcmdpbjogLTI1MHB4IDAgMCAtMjgwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4zKTsKICAqYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAvKiBJRTYtNyAqLwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNnB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OwogIGJvcmRlci1yYWRpdXM6IDZweDsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgM3B4IDdweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgLW1vei1ib3gtc2hhZG93OiAwIDNweCA3cHggcmdiYSgwLCAwLCAwLCAwLjMpOwogIGJveC1zaGFkb3c6IDAgM3B4IDdweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIC1tb3otYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94Owp9Ci5tb2RhbCAuY2xvc2UgewogIG1hcmdpbi10b3A6IDdweDsKfQoubW9kYWwuZmFkZSB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyLCB0b3AgMC4zcyBlYXNlLW91dDsKICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBsaW5lYXIsIHRvcCAwLjNzIGVhc2Utb3V0OwogIC1tcy10cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyLCB0b3AgMC4zcyBlYXNlLW91dDsKICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyLCB0b3AgMC4zcyBlYXNlLW91dDsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyLCB0b3AgMC4zcyBlYXNlLW91dDsKICB0b3A6IC0yNSU7Cn0KLm1vZGFsLmZhZGUuaW4gewogIHRvcDogNTAlOwp9Ci5tb2RhbC1oZWFkZXIgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwogIHBhZGRpbmc6IDVweCAxNXB4Owp9Ci5tb2RhbC1ib2R5IHsKICBwYWRkaW5nOiAxNXB4Owp9Ci5tb2RhbC1ib2R5IGZvcm0gewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLm1vZGFsLWZvb3RlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBwYWRkaW5nOiAxNHB4IDE1cHggMTVweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7CiAgYm9yZGVyLXJhZGl1czogMCAwIDZweCA2cHg7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAwICNmZmY7CiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAwICNmZmY7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAjZmZmOwogIHpvb206IDE7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoubW9kYWwtZm9vdGVyOmJlZm9yZSwKLm1vZGFsLWZvb3RlcjphZnRlciB7CiAgZGlzcGxheTogdGFibGU7CiAgY29udGVudDogIiI7CiAgem9vbTogMTsKfQoubW9kYWwtZm9vdGVyOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQoubW9kYWwtZm9vdGVyIC5idG4gewogIGZsb2F0OiByaWdodDsKICBtYXJnaW4tbGVmdDogNXB4Owp9Ci5tb2RhbCAucG9wb3ZlciwKLm1vZGFsIC50d2lwc3kgewogIHotaW5kZXg6IDEyMDAwOwp9Ci50d2lwc3kgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIHBhZGRpbmc6IDVweDsKICBmb250LXNpemU6IDExcHg7CiAgei1pbmRleDogMTAwMDsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9ODApOwogIC1raHRtbC1vcGFjaXR5OiAwLjg7CiAgLW1vei1vcGFjaXR5OiAwLjg7CiAgb3BhY2l0eTogMC44Owp9Ci50d2lwc3kuZmFkZS5pbiB7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTsKICAta2h0bWwtb3BhY2l0eTogMC44OwogIC1tb3otb3BhY2l0eTogMC44OwogIG9wYWNpdHk6IDAuODsKfQoudHdpcHN5LmFib3ZlIC50d2lwc3ktYXJyb3cgewogIGJvdHRvbTogMDsKICBsZWZ0OiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wOiA1cHggc29saWQgIzAwMDsKfQoudHdpcHN5LmxlZnQgLnR3aXBzeS1hcnJvdyB7CiAgdG9wOiA1MCU7CiAgcmlnaHQ6IDA7CiAgbWFyZ2luLXRvcDogLTVweDsKICBib3JkZXItdG9wOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzAwMDsKfQoudHdpcHN5LmJlbG93IC50d2lwc3ktYXJyb3cgewogIHRvcDogMDsKICBsZWZ0OiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiA1cHggc29saWQgIzAwMDsKfQoudHdpcHN5LnJpZ2h0IC50d2lwc3ktYXJyb3cgewogIHRvcDogNTAlOwogIGxlZnQ6IDA7CiAgbWFyZ2luLXRvcDogLTVweDsKICBib3JkZXItdG9wOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogNXB4IHNvbGlkICMwMDA7Cn0KLnR3aXBzeS1pbm5lciB7CiAgcGFkZGluZzogM3B4IDhweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogIGNvbG9yOiB3aGl0ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWF4LXdpZHRoOiAyMDBweDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9Ci50d2lwc3ktYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7Cn0KLnBvcG92ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDAwOwogIHBhZGRpbmc6IDVweDsKICBkaXNwbGF5OiBub25lOwp9Ci5wb3BvdmVyLmFib3ZlIC5hcnJvdyB7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDUwJTsKICBtYXJnaW4tbGVmdDogLTVweDsKICBib3JkZXItbGVmdDogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci10b3A6IDVweCBzb2xpZCAjMDAwOwp9Ci5wb3BvdmVyLnJpZ2h0IC5hcnJvdyB7CiAgdG9wOiA1MCU7CiAgbGVmdDogMDsKICBtYXJnaW4tdG9wOiAtNXB4OwogIGJvcmRlci10b3A6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgIzAwMDsKfQoucG9wb3Zlci5iZWxvdyAuYXJyb3cgewogIHRvcDogMDsKICBsZWZ0OiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC01cHg7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiA1cHggc29saWQgIzAwMDsKfQoucG9wb3Zlci5sZWZ0IC5hcnJvdyB7CiAgdG9wOiA1MCU7CiAgcmlnaHQ6IDA7CiAgbWFyZ2luLXRvcDogLTVweDsKICBib3JkZXItdG9wOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzAwMDsKfQoucG9wb3ZlciAuYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7Cn0KLnBvcG92ZXIgLmlubmVyIHsKICBiYWNrZ3JvdW5kOiAjMDAwOwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICBwYWRkaW5nOiAzcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB3aWR0aDogMjgwcHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7CiAgYm9yZGVyLXJhZGl1czogNnB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAtbW96LWJveC1zaGFkb3c6IDAgM3B4IDdweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgYm94LXNoYWRvdzogMCAzcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsKfQoucG9wb3ZlciAudGl0bGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgcGFkZGluZzogOXB4IDE1cHg7CiAgbGluZS1oZWlnaHQ6IDE7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOwogIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwp9Ci5wb3BvdmVyIC5jb250ZW50IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIHBhZGRpbmc6IDE0cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgM3B4IDNweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDAgMCAzcHggM3B4OwogIGJvcmRlci1yYWRpdXM6IDAgMCAzcHggM3B4OwogIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAtbW96LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKfQoucG9wb3ZlciAuY29udGVudCBwLAoucG9wb3ZlciAuY29udGVudCB1bCwKLnBvcG92ZXIgLmNvbnRlbnQgb2wgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmZhZGUgewogIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7CiAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7CiAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7CiAgb3BhY2l0eTogMDsKfQouZmFkZS5pbiB7CiAgb3BhY2l0eTogMTsKfQoubGFiZWwgewogIHBhZGRpbmc6IDFweCAzcHggMnB4OwogIGZvbnQtc2l6ZTogOS43NXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGNvbG9yOiAjZmZmOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmZiZmJmOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKfQoubGFiZWwuaW1wb3J0YW50IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzQzYzM1Owp9Ci5sYWJlbC53YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjg5NDA2Owp9Ci5sYWJlbC5zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZhNTQ2Owp9Ci5sYWJlbC5ub3RpY2UgewogIGJhY2tncm91bmQtY29sb3I6ICM2MmNmZmM7Cn0KLm1lZGlhLWdyaWQgewogIG1hcmdpbi1sZWZ0OiAtMjBweDsKICBtYXJnaW4tYm90dG9tOiAwOwogIHpvb206IDE7Cn0KLm1lZGlhLWdyaWQ6YmVmb3JlLAoubWVkaWEtZ3JpZDphZnRlciB7CiAgZGlzcGxheTogdGFibGU7CiAgY29udGVudDogIiI7CiAgem9vbTogMTsKfQoubWVkaWEtZ3JpZDphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLm1lZGlhLWdyaWQgbGkgewogIGRpc3BsYXk6IGlubGluZTsKfQoubWVkaWEtZ3JpZCBhIHsKICBmbG9hdDogbGVmdDsKICBwYWRkaW5nOiA0cHg7CiAgbWFyZ2luOiAwIDAgMThweCAyMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIC1tb3otYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwogIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoubWVkaWEtZ3JpZCBhIGltZyB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLm1lZGlhLWdyaWQgYTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjMDA2OWQ2OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMTA1LCAyMTQsIDAuMjUpOwogIC1tb3otYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMTA1LCAyMTQsIDAuMjUpOwogIGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsIDEwNSwgMjE0LCAwLjI1KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/cyrillic.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgY29sb3I6ICNmY2ZjZmM7CiAgYmFja2dyb3VuZC1jb2xvcjogIzdkN2Q3ZDsKICAvKiDRhtCy0LXRgiDRgtC10LrRgdGC0LAgLSBub3Qgd29yayovCiAgLyog2YTZiNmGINin2YTZhti1IC0gbm90IHdvcmsqLwogIC8qIHLJmW5nIG3JmXRuaSAtIG5vdCB3b3JrICovCiAgLyogdGV4dCBjb2xvciAtIHdvcmsqLwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/element-colon-var.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbzphZnRlciB7CiAgY29sb3I6IGdyZWVuOwp9Ci5iYXI6YWZ0ZXIgewogIGNvbG9yOiBibHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/emptyrules.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmhvbWUgewogIGNvbG9yOiAjZjAwOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/escapes.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbzpiZWZvcmUgewogIGNvbnRlbnQ6ICdcMjAxNCBcMDBBMCc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/extend-simple.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1hLAoubWUgewogIGNvbG9yOiBibGFjazsKfQoubWQsCi5tZSB7CiAgY29sb3I6IHdoaXRlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/functions.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2J1aWx0LWluIHsKICBtaXg6ICM4MDAwODA7CiAgbWl4OiAjNDAwMGJmOwogIG1peDogcmdiYSg2NCwgMCwgMTkxLCAwLjc1KTsKICBmYWRlOiByZ2JhKDAsIDI1NSwgMCwgMC4wMDEpOwogIGZhZGU6IHJnYmEoMCwgMCwgMTcsIDAuMDAyKTsKICBmYWRlOiAjMDBmZjAwOwogIGZhZGVpbjogcmdiYSgwLCAwLCAwLCAwLjUwMSk7CiAgZmFkZWluOiByZ2JhKDAsIDAsIDE3LCAwLjgwMik7CiAgZmFkZWluOiByZ2JhKDAsIDAsIDAsIDAuOCk7CiAgZmFkZWluOiAjMDAwMDEyOwogIGZhZGVvdXQ6IHJnYmEoMCwgMCwgMCwgMC40OTkpOwogIGZhZGVvdXQ6IHJnYmEoMCwgMCwgMTcsIDAuMik7CiAgZXNjYXBlOiA/JiUzRCYlMjUhJTIzJDsKICBqYXZhc2NyaXB0OiAvKiBTb3JyeSwgY2FuIG5vdCBkbyBKYXZhU2NyaXB0IGV2YWx1YXRpb24gaW4gUEhQLi4uIDooICovOwogIGRhcmtlbjogIzA4MDgwODsKICAvKiByZXN1bHRzIGluIHZvaWQgKi8KICBhOiAxOwogIGI6IDI7CiAgYzogMzsKICBlOiA7CiAgZjogNjsKICBnOiAzOwogIGg6IDU7CiAgaTogNjsKICBqOiA4OwogIGs6IDE7CiAgbDogYmxhY2s7CiAgY29sb3I6IGdyZWVuOwogIGNvbG9yOiBwdXJwbGU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/imports.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoImh0dHBzOi8vZm9udHMuZXhhbXBsZS5vcmcvaWNvbj9mYW1pbHk9Rm9vK0JhciIpOwpAaW1wb3J0IHVybCgiaHR0cDovL2ZvbnRzLmV4YW1wbGUub3JnL2ljb24/ZmFtaWx5PUZvbytCYXIiKTsKQGltcG9ydCB1cmwoIi8vZm9udHMuZXhhbXBsZS5vcmcvaWNvbj9mYW1pbHk9Rm9vK0JhciIpOwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHsKICAuaW1wb3J0LWEgewogICAgY29sb3I6ICNmZmY7CiAgfQp9Ci5pbXBvcnQtYiB7CiAgY29sb3I6ICMxMTE7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/keyframes.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOwogIH0KfQpALW1vei1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KICB0byB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MHB4IDA7CiAgfQp9CkAtbXMta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOwogIH0KfQpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/lessjs-2462.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lmljb24tNV9sYXJnZSB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC9pbWcvaWNvbi81X2xhcmdlLnN2Zyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-55-data-url.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVpDQVlBQUFBeEZ3N1RBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTJoSlJFRlVlTnFVbFd0SWsyRVV4Lys3cERsbjVzeXk0V1doaUlXWWRwRWx1dXlDRlNudFExcVpTbFNVRkVWRkdJVGZvaWdJMGs5Um55cFlTUVdhcHN5TTBpR1pzbkxUWmFRR0tubHJwbHZPMW1WdG5YZnY2emJuRnU3QWYrZDluL2Q1Zmp2bk9jOEY4TGJxdm8xbkxsWTFPOWFuMVpJS1NTRUl3SVJlc0J6NmZUYTlWUHlSL0U3U1BwS0ZvRFhrSDVKZTh2UTYyNktBRmQyVDVZbGhRVmRmak04S1laalhSMHdxNFdRaytHTU8zazV3aHplUXgwVldraThOdlZlWExlVXpyOGJwcy0xNXh4eHh4eHh4eHh4eHgpOwogIGJhY2tncm91bmQ6IHVybCgvYXN0cmluZ1wnd2l0aGJhY1wia3NsYXNoXGNoYXJhXGN0ZXJzKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-63-selector-nospace-comma.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyBoMiwKLmZvbyBoMyB7CiAgZm9udC1zaXplOiAxNXB4Owp9CjpudGgtY2hpbGQoMykgewogIHNlbGVjdG9yOiBpbnRlcnBvbGF0ZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-72-import-url-rewrite.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lmxlc3NfZGVtb19sb2dvIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1hZ2VzL2xvZ28ucG5nKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-80-import-url-rewrite.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmRpdiB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCJpbWFnZXMvbG9nby5wbmciKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-81-crash.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2V4YW1wbGUgewogIHdpZHRoOiA5OXB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-87-strings.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGJhY2tncm91bmQ6IHVybCgnL2Fzc2V0cy9hc3NldHMvL2ltYWdlcy9sb2dvLnBuZycpOwp9Ci50ZXN0IHsKICBiYWNrZ3JvdW5kOiB1cmwoJy9hc3NldHMvYXNzZXRzL2ltYWdlcy9sb2dvLnBuZycpOwp9Ci50ZXN0IHsKICBiYWNrZ3JvdW5kOiB1cmwoJ2h0dHA6Ly9kb21haW4vYXNzZXRzL2ltYWdlcy9sb2dvLnBuZycpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-89-ruleset-nest-import.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2RpdiAuZGl2IHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoImltYWdlcy9sb2dvLnBuZyIpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-92-color-preserve-transparent.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CiAgY29sb3I6IHRyYW5zcGFyZW50Owp9CmgyIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-97.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmltcG9ydC1hIHsKICBjb2xvcjogI2ZmZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-109-recursive-var.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgbGlnaHRlbmA6IFJlY3Vyc2l2ZSB2YXJpYWJsZSBkZWZpbml0aW9uIGZvciBAbmF2YmFyLWh5ZHJhLWludmVyc2UtY29sb3IgaW4gb3llam9yZ2UtMTA5LXJlY3Vyc2l2ZS12YXIubGVzcyBvbiBsaW5lIDIsIGNvbHVtbiAzMAoxfCAvLyBodHRwczovL2dpdGh1Yi5jb20vb3llam9yZ2UvbGVzcy5waHAvaXNzdWVzLzEwOQoyfCBAbmF2YmFyLWh5ZHJhLWludmVyc2UtY29sb3I6IGxpZ2h0ZW4oQG5hdmJhci1oeWRyYS1pbnZlcnNlLWNvbG9yLCAxMCUpOwozfAo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-124-multiline-str.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgY29udGVudDogJ1RoaXMgaXMgYSBcCgltdWx0aWxpbmUgc3RyaW5nLic7CiAgY29udGVudDogIlRoaXMgaXMgYSBcCgltdWx0aWxpbmUgc3RyaW5nLiI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-129-incomplete.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogbWlzc2luZyBjbG9zaW5nIGB9YCBpbiBveWVqb3JnZS0xMjktaW5jb21wbGV0ZS5sZXNzIG9uIGxpbmUgMSwgY29sdW1uIDgKMXwgLnNyLW9ubHl7CjJ8IGJvcmRlcjoKM3wK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-198-alpha.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lmdvb2ctbWVudWl0ZW0taWNvbiB7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-202-import-once.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YSB7CiAgY29sb3I6IHJlZDsKfQouY29sb3IgewogIGNvbG9yOiB0cmFuc3BhcmVudDsKfQouYmxhY2sgewogIGNvbG9yOiBibGFjazsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-210-complex-colors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogY29sb3IgY2hhbm5lbCBmdW5jdGlvbnMgKi8KYm9keSAuY29sb3ItY2hhbm5lbHMgewogIC0taHVlOiAyMTA7CiAgLS1zYXR1cmF0aW9uOiA1MCU7CiAgLS1saWdodG5lc3M6IDQwJTsKICAtLWhzdmh1ZTogMjEwOwogIC0taHN2c2F0dXJhdGlvbjogNjYuNjY2NjY2NjclOwogIC0taHN2dmFsdWU6IDYwJTsKICAtLXJlZDogNTE7CiAgLS1ncmVlbjogMTAyOwogIC0tYmx1ZTogMTUzOwogIC0tYWxwaGE6IDAuOTsKICAtLWx1bWE6IDExLjI1NTgxMTY5JTsKICAtLWx1bWluYW5jZTogMzMuNDcyOCU7Cn0KYm9keSAuY29sb3ItZGVmaW5pdGlvbnMgLnJnYiB7CiAgY29sb3I6ICMzMzY2OTk7Cn0KYm9keSAuY29sb3ItZGVmaW5pdGlvbnMgLnJnYmEgewogIGNvbG9yOiByZ2JhKDUxLCAxMDIsIDE1MywgMC45KTsKfQpib2R5IC5jb2xvci1kZWZpbml0aW9ucyAuYXJnYiB7CiAgY29sb3I6ICNlNjMzNjY5OTsKfQpib2R5IC5jb2xvci1kZWZpbml0aW9ucyAuaHNsIHsKICBjb2xvcjogaHNsKDIxMCwgNTAlLCA0MCUpOwp9CmJvZHkgLmNvbG9yLWRlZmluaXRpb25zIC5oc2xhIHsKICBjb2xvcjogaHNsYSgyMTAsIDUwJSwgNDAlLCAwLjkpOwp9CmJvZHkgLmNvbG9yLWRlZmluaXRpb25zIC5oc3YgewogIGNvbG9yOiAjMzM2Njk5Owp9CmJvZHkgLmNvbG9yLWRlZmluaXRpb25zIC5oc3ZhIHsKICBjb2xvcjogcmdiYSg1MSwgMTAyLCAxNTMsIDAuOSk7Cn0KYm9keSAuY3NzLWZpbHRlcnMgLnNhdHVyYXRlIHsKICBjb2xvcjogc2F0dXJhdGUoMjAwJSk7Cn0KYm9keSAuY29sb3Itb3BlcmF0aW9ucyAuc2F0dXJhdGUgewogIGNvbG9yOiByZ2JhKDAsIDEwMiwgMjA0LCAwLjkpOwp9CmJvZHkgLmNvbG9yLW9wZXJhdGlvbnMgLmRlc2F0dXJhdGUgewogIGNvbG9yOiByZ2JhKDEwMiwgMTAyLCAxMDIsIDAuOSk7Cn0KYm9keSAuY29sb3Itb3BlcmF0aW9ucyAubGlnaHRlbiB7CiAgY29sb3I6IHJnYmEoMjE3LCAyMzAsIDI0MiwgMC45KTsKfQpib2R5IC5jb2xvci1vcGVyYXRpb25zIC5kYXJrZW4gewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KYm9keSAuY29sb3Itb3BlcmF0aW9ucyAuZmFkZWluIHsKICBjb2xvcjogIzMzNjY5OTsKfQpib2R5IC5jb2xvci1vcGVyYXRpb25zIC5mYWRlb3V0IHsKICBjb2xvcjogcmdiYSg1MSwgMTAyLCAxNTMsIDAuNCk7Cn0KYm9keSAuY29sb3Itb3BlcmF0aW9ucyAuZmFkZSB7CiAgY29sb3I6IHJnYmEoNTEsIDEwMiwgMTUzLCAwLjUpOwp9CmJvZHkgLmNvbG9yLW9wZXJhdGlvbnMgLnNwaW41MCB7CiAgY29sb3I6IHJnYmEoODUsIDUxLCAxNTMsIDAuOSk7Cn0KYm9keSAuY29sb3Itb3BlcmF0aW9ucyAuc3BpbjcyMCB7CiAgY29sb3I6IHJnYmEoNTEsIDEwMiwgMTUzLCAwLjkpOwp9CmJvZHkgLmNvbG9yLW9wZXJhdGlvbnMgLnNwaW4tNTAgewogIGNvbG9yOiByZ2JhKDUxLCAxNTMsIDExOSwgMC45KTsKfQpib2R5IC5jb2xvci1vcGVyYXRpb25zIC5zcGluLTcyMCB7CiAgY29sb3I6IHJnYmEoNTEsIDEwMiwgMTUzLCAwLjkpOwp9CmJvZHkgLmNvbG9yLW9wZXJhdGlvbnMgLm1peC1kZWZhdWx0IHsKICBjb2xvcjogcmdiYSgxMjgsIDEwMiwgNzcsIDAuOSk7Cn0KYm9keSAuY29sb3Itb3BlcmF0aW9ucyAubWl4NjAgewogIGNvbG9yOiByZ2JhKDExMiwgMTAyLCA5MiwgMC45KTsKfQpib2R5IC5jb2xvci1vcGVyYXRpb25zIC5ncmV5c2NhbGUgewogIGNvbG9yOiByZ2JhKDEwMiwgMTAyLCAxMDIsIDAuOSk7Cn0KYm9keSAuY29sb3Itb3BlcmF0aW9ucyAuY29udHJhc3QtMXBhcmFtIHsKICBjb2xvcjogI2ZmZmZmZjsKfQpib2R5IC5jb2xvci1vcGVyYXRpb25zIC5jb250cmFzdC0ycGFyYW0gewogIGNvbG9yOiAjZmZmZmZmOwp9CmJvZHkgLmNvbG9yLW9wZXJhdGlvbnMgLmNvbnRyYXN0LTNwYXJhbSB7CiAgY29sb3I6IHJnYmEoMjUyLCAxNzksIDIwOCwgMC45KTsKfQpib2R5IC5jb2xvci1vcGVyYXRpb25zIC5jb250cmFzdC00cGFyYW0gewogIGNvbG9yOiByZ2JhKDI1MiwgMTc5LCAyMDgsIDAuOSk7Cn0KYm9keSAuY29sb3ItYmxlbmRlcnMgLm11bHRpcGx5IHsKICBjb2xvcjogcmdiYSg1NywgNTIsIDE0LCAwLjk5KTsKfQpib2R5IC5jb2xvci1ibGVuZGVycyAuc2NyZWVuIHsKICBjb2xvcjogcmdiYSgxOTgsIDE1MiwgMTM5LCAwLjk5KTsKfQpib2R5IC5jb2xvci1ibGVuZGVycyAub3ZlcmxheSB7CiAgY29sb3I6IHJnYmEoOTAsIDg1LCA1NiwgMC45OSk7Cn0KYm9keSAuY29sb3ItYmxlbmRlcnMgLnNvZnRsaWdodCB7CiAgY29sb3I6IHJnYmEoOTYsIDkyLCA4OSwgMC45OSk7Cn0KYm9keSAuY29sb3ItYmxlbmRlcnMgLmhhcmRsaWdodCB7CiAgY29sb3I6IHJnYmEoMTY1LCA4NSwgMTQsIDAuOTkpOwp9CmJvZHkgLmNvbG9yLWJsZW5kZXJzIC5kaWZmZXJlbmNlIHsKICBjb2xvcjogcmdiYSgxNDgsIDE5LCAxMzksIDAuOTkpOwp9CmJvZHkgLmNvbG9yLWJsZW5kZXJzIC5leGNsdXNpb24gewogIGNvbG9yOiByZ2JhKDE2NSwgMTE5LCAxMzksIDAuOTkpOwp9CmJvZHkgLmNvbG9yLWJsZW5kZXJzIC5hdmVyYWdlIHsKICBjb2xvcjogcmdiYSgxMjgsIDEwMiwgNzcsIDAuOTkpOwp9CmJvZHkgLmNvbG9yLWJsZW5kZXJzIC5uZWdhdGlvbiB7CiAgY29sb3I6IHJnYmEoMjMyLCAxODUsIDEzOSwgMC45OSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-235-absolute-url.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGJhY2tncm91bmQ6IHVybChodHRwOi8vc3ViZG9tYWluLmRvbWFpbi5jb20vaW1hZ2VzL2FuaW1hbHMva2l0dGVucy9pbWFnZS5qcGcpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-261-selector-plus.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IGEgKyBkaXYgYSwKZGl2IGEgKyBkaXYgYiwKZGl2IGIgKyBkaXYgYSwKZGl2IGIgKyBkaXYgYiB7CiAgbWFyZ2luLXRvcDogMDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-269-important.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsKICBmb250LXdlaWdodDogYm9sZDsKfQouYW5vdGhlciB7CiAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-298-data-image.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGJhY2tncm91bmQ6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS0FBb0FJQUJBQUFBQVAvLy95SC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNrWXdOcVhyZEM1MkRTMDZhN01GWkkrNEZIQkNLb0RlV0tYcXltUHFHcXh2SnJYWmJNeDdUdGMrdzlYZ1UyRkIzbE95UVJXRVQySUZHaVU5bTFmckRWcHhaWmM2YmZId3Y0YzFZWFA2azFWZHkyOTJGYjZVa3V2RnRYcHZXU3pBK0h5Y1hKSFVYaUdZSWlNZzJSNlc0NTlnbldHZkhOZGpJcURXVnFlbUgyZWtwT2JrcE9scHBXVXFaaXFyNmVkcXFXUUFBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBTTWdabkdmYXFjZzFFMnV1ekRtbUhVQlI4UWlsOTVoaVBLcVduM2FxdExzUzE4eTdHMVN6TmVvd1dCRU50UWQrVDFKa3RQMDVuelBUZEpabFI2dlV4TldXalYrdlVXaFdOa1dGd3hsOVZwWlJlZFljZmxJT0xhZmFhMjhYZHNIL3lubGNjMXVQVkRaeFFJUjBLMjUrY0lDQ21vcUNlNW1HaFpPZmVZU1VoNXlKY0p5cmtaV1dwYVI4ZG9KMm80TllxNjJsQUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtWREk0WXkyMlpuSU5STnFvc3cwQnY3aTFneUhVa0ZqN29TYVdsdTNvdkM4R3hOc281Zmx1ejNxTFZoQlZlVC9MejdaVEh5eEw1ZERhbFFXUFZPc1FXdFJudXdYYUZUajlqVlZoOHBtYTlKalo0ellTajVaT3ltYTd1dW9sZmZoK0lSNWFXOTdjSHVCVVhLR0tYbEtqbitEaUhXTWNZSmFoNE4wbFlDTWxKT1hpcEdScjVxZGdvU1RycVdTcTZXRmwyeXBvYVVBQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGFFYjZITGdkL2lPN0ZOV3RjRldlK3VmT0RHalJmb2lKMmFrU2hidWViMHd0STUwem0wMnBidndmV0VNV0JRMXpLR2xMSWhza2lFUG05UjZ2Ulh4VjRaeldUMnlIT0dwV015b3JibEtsTnA4SG1IRWIvbENYamNXN2JtdFhQOFh0MjI5T1ZXUjFmb2QyZVdxTmZIdU1qWENQa0lHTmlsZU9pSW1WbUNPRW1vU2ZuM3lYbEpXbW9IR2hxcDZpbFl1V1lwbVRxS1VnQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGlFSDZrYjU4YmlRM0ZOV3RNRldXM2VOVmNvanVGR2ZxblpxU2VidVMwNnc1VjgwL1gwMnBLZTh6RndQNkVGV09UMWxERms4ckdFUmgxVFROT29jUTYxSG00WG0yVmV4VUhwemp5bVZpSHJGYmlFTHNlZlZybjZYS2ZudDJROUcvK1hkaWU0OTlYSGQyZzRoN2lvT0doWEdKYm9HQW5YU0Jub0J3S1l5ZmlvdWJaSjJIbjBSdVJaYWZsWk9pbDU2WnA2aWlvS1NYcFVBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDa29RUnFSdm54dUk3a1UxYTFVVTViZDV0blNlT1pYaG1uNWxXSzNxTlRXdlJkUXhQOHF2YUMrL3lhWVF6WE83Qk12YVVFbUpSZDNUc2lNQWdzd21OWXJTZ1pkWXJUWDZ0U0hHWk83M2V6dUF3MnV4dVErQmJlWmZNeHNleFkzNSsvUWU0SjFpblYwZzR4M1dIdU1oSWwyalhPS1QyUStWVTVmZ29TVUk1MlZmWnlma0pHa2hhNmptWSthYVlkaXJxK2xRQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1dCSUtwWWUwTDNZTktUb3Fzd1VsdnpuaWdkNHdpUjRLaFpyS3Q5VXBxaXA2MWk5RTN2TXZ4UmRIbGJFRmlFWGZrOVlBUll4T1paRDZWUTJwVXVuQm10UlhvMUxmOGhNVlZjTmw4SmFmVjM4YU0yL0Z1NVYxNkJuNjNyNnh0OTdqMDkrTVhTRmk0Qm5pR0ZhZTNoemJIOStoWUJ6a3B1VWg1YVptSHVhblpPWmdJdXZiR2lOZW9tQ25heHhhcDJ1cGFDWnNxKzFrQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1hqSThCeTV6ZjRrT3hUVnJYTlZsdjFYMGQ4SUdaR0tMbk5wWXRtOExyOWNxVmV1T1N2Zk9XNzlEOWFESGl6TmhESmlkRlpoTnlkRWFoT2FESDZub210SmpwMXR1dEtvTldrdkE2SnFmUlZMSFUvUVVmYXU5bDJ4N0c1NGQxZmw5OTV4Y0lHQWRYcU1mQk5hZG9ZcmhIK01nMktCbHBWcGJsdUNpWG1NbloyU2g0R0JxSitja0lPcXFKNkxtS1NsbFptc29xNndwUUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNsWXgvb0x2b3h1SkRrVTFhMVlVWmJKNTluU2QyWlhoV3FiUmEyL2dGOEd1MkRZM2lxczd5cnEreEJZRWtZdkZTTThhU1NPYkUrWmdSbDFCSEZaTnI3cFJDYXZaNUJXMjE0MmhZM0FOL3pXdHNtZjEycDlYeHhGbDJscExuMXJzZXp0ZlhaamRJV0lmMnM1ZEl0d2pZS0Jnbzl5ZzVwSGd6SlhURWVHbFp1ZW5weVBtcEdRb0tPV2tZbVNwYVNucUtpbGVJMkZBQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1ZqQitndStqRzRrT1JUVnJWaFJsc25uMmRKM1psZUZhcHRGcmIrQ1htTzlPb3plTDVWZlA5OUh2QVdocGlVZGN3a3BCSDM4MjVBd1lkVTh4VHFsTEdodENvc0FyS01wdmZhMW1NUmFlOVZ2V1pmZUIyWGZQa2VMbW0xOGxVY0JqK3A1ZG5OOGpYWjNZSUdFaFl1T1VuNDVhb0NEa3AxNmhsNUlqWUp2aldLY25vR1FwcXlQbHBPaHIzYUVsYXFycTU2QnE3VkFBQU93PT0iKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-302-chinese.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRleHQgewogIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCAiTWljcm9zb2Z0IFlhSGVpIiwgIuW+rui9r+mbhem7kSIsIFNUWGloZWksICLljY7mlofnu4bpu5EiLCBzYW5zLXNlcmlmOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/oyejorge-305-import-nested-relative.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnJlZCB7CiAgYmFja2dyb3VuZDogcmVkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/parens.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7CiAgbWFyZ2luOiAxcHggM3B4IDE2IDM7CiAgd2lkdGg6IDM2OwogIHBhZGRpbmc6IDJweCAzNnB4Owp9Ci5tb3JlLXBhcmVucyB7CiAgcGFkZGluZzogOCA0IDQgNHB4OwogIHdpZHRoLWFsbDogOTY7CiAgd2lkdGgtZmlyc3Q6IDk2OwogIHdpZHRoLWtlZXA6IDk2OwogIGhlaWdodC1rZWVwOiAxMTM7CiAgaGVpZ2h0LWFsbDogMTEzOwogIGhlaWdodC1wYXJ0czogMTEzOwogIG1hcmdpbi1rZWVwOiAxMjsKICBtYXJnaW4tcGFydHM6IDEyOwogIG1hcmdpbi1hbGw6IDEyOwogIGJvcmRlci1yYWRpdXMta2VlcDogNXB4OwogIGJvcmRlci1yYWRpdXMtcGFydHM6IDEuMTQyODU3MTRweDsKICBib3JkZXItcmFkaXVzLWFsbDogNXB4Owp9Ci5uZWdhdGl2ZSB7CiAgbmVnLXZhcjogLTE7CiAgbmVnLXZhci1wYXJlbjogLTE7Cn0KLm5lc3RlZC1wYXJlbnMgewogIHdpZHRoOiA3MTsKICBoZWlnaHQ6IDY7Cn0KLm1peGVkLXVuaXRzIHsKICBtYXJnaW46IDJweCA0ZW0gMSA1cGM7CiAgcGFkZGluZzogNnB4IDFlbSAycHggMjsKfQoudGVzdC1mYWxzZS1uZWdhdGl2ZXMgewogIGE6ICg7Cn0KICA=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T204816-nested-parent.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyB7CiAgd2lkdGg6IDEwMHB4Owp9Ci5mb28tYmFyIHsKICBiYWNrZ3JvdW5kOiBibHVlOwp9Ci5mb286bm90KC5mb28tYmFyKSB7CiAgYmFja2dyb3VuZDogZ3JlZW47Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T327082-mixinarg-nonexpr.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2Lm9uZSB7CiAgZm9udC1mYW1pbHk6ICdBcmlhbCc7Cn0KZGl2LnR3byB7CiAgZm9udC1mYW1pbHk6ICcnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T331688-calc.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmhpZ2hsaWdodCB7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDJweCk7CiAgaGVpZ2h0OiBjYWxjKDUwJSAtIDIqMXB4KTsKICBwYWRkaW5nLWxlZnQ6IDlweDsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDhweCArIDFweCk7Cn0KLm15dmFyIHsKICBoZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLW1hcmdpbi10b3ApIC0gdmFyKC0tbWFyZ2luLWJvdHRvbSkpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T356706-font-face-comment.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBsYWluIHsKICBmb250LXdlaWdodDogMTAwOwogIC8qIE9uZSAqLwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAvKiBUd28gKi8KfQpAZm9udC1mYWNlIHsKICBmb250LXdlaWdodDogMjAwOwogIC8qIE9uZSAqLwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAvKiBUd28gKi8KfQpAZm9udC1mYWNlIHsKICBmb250LXdlaWdodDogMzAwOwogIC8qIE9uZSAqLwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAvKiBUd28gKi8KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T357160-quoted-compare.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZG91YmxlIHsKICBiYWNrZ3JvdW5kOiByZWQ7CiAgYmFja2dyb3VuZDogYmx1ZTsKfQpzaW5nbGUgewogIGJhY2tncm91bmQ6IHJlZDsKICBiYWNrZ3JvdW5kOiBibHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T358159-compare.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgZm9udC1zaXplOiA0MnJlbTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T358256-parse-error.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsKICBmb250LXdlaWdodDogbm9ybWFsOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T358631-replace-multi.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm9uZSB7CiAgY29udGVudDogJyhmb28pIChiYXIpIChiYXopJzsKfQoudHdvIHsKICBjb250ZW50OiAnYmVnaW4gZm9vIGVuZCBiZWdpbiBiYXIgZW5kIGJlZ2luIGJheiBlbmQgJzsKfQoudHdvOm5vdCggOmxhbmcoZm9vKSApOm5vdCggOmxhbmcoYmFyKSApOm5vdCggOmxhbmcoYmF6KSApIHsKICBmaWx0ZXI6IGludmVydCgxKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T361035-variable-name.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAidGVzdC5jc3MiOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T363076-mixins-copies-rules.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmJ0biB7CiAgY29sb3I6IGJsdWU7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLmJ0blt0aXRsZV0gewogIGJhY2tncm91bmQ6IGxpZ2h0Z3JlZW47Cn0KLmJ0bltkaXNhYmxlZF0gewogIGN1cnNvcjogbm90LWFsbG93ZWQ7CiAgY29sb3I6IHJlZDsKfQouYnRuW3Rlc3RdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rOwp9Ci5idG4tc3BlY2lmaWMgewogIGNvbG9yOiBibHVlOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5idG4tc3BlY2lmaWNbdGl0bGVdIHsKICBiYWNrZ3JvdW5kOiBsaWdodGdyZWVuOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T363728-preserve-clamp.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eCB7CiAgd2lkdGg6IGNsYW1wKDEwcHgsIDV2dywgMTAwcHgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T367603-math-media-var.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIChtYXgtd2lkdGg6IDYzOXB4KSB7CiAgLnRoaW5nIHsKICAgIGxlZnQ6IDA7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T371606-alpha-zero-error.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmFscGhhIHsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T380641-sourcemap-import-inline.map</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkE7QTtBIn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T383085-float-precision.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsKICBjb2xvcjogI2VmZmZkZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T386077-no-trailing-semicolon.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIC0tdGVzdDogMzhweDsKfQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkgewogIC50ZXN0IHsKICAgIC0tdGVzdDogMzhweDsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T386079-fix-function-call.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIC0tYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDI3MGRlZywgcmdiYSgwLCAwLCAwLCAwKSAzNi41JSwgIzAwMCA5OCUpLCBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDAsIDAsIDAsIDAuOSkgMCUsIHJnYmEoMCwgMCwgMCwgMCkgMzUlKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T391735-extract-non-array.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvby1vbmUtZGl2IHsKICBmb286IDE7Cn0KLmZvby1vbmUtZGV0YWNoZWQgewogIGZvbzogMTsKfQouZm9vLXR3byB7CiAgZm9vOiAyOwp9Ci5mb28taW5jbHVkZXMtZmFsc2UgewogIGNvbG9yOiBwdXJwbGU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T403056-hex-color.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAxNDsKfQpkaXYgewogIGJhY2tncm91bmQ6IHJnYmEoNDEsIDE0LCAzOSwgMC4wNzg0MzEzNyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/T403056-invalid-color.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5leHBlY3RlZCBpbnB1dCBpbiBUNDAzMDU2LWludmFsaWQtY29sb3IubGVzcyBvbiBsaW5lIDIsIGNvbHVtbiAyOQoxfCAuaW52YWxpZC1pbnB1dCB7CjJ8ICAgYmFja2dyb3VuZC1jb2xvcjogIzEyMzQ1Njc7CjN8IH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/css/zero-selector.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MCB7CiAgcHJvcGVydHk6IHZhbHVlOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/attribute-match.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2W2NsYXNzXj1ub25xdW90ZWRdIHsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KLnRlc3QgewoJJjpleHRlbmQoZGl2W2NsYXNzXj1ub25xdW90ZWRdKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/bootstrap.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2MS40LjAKICoKICogQ29weXJpZ2h0IDIwMTEgVHdpdHRlciwgSW5jCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBEZXNpZ25lZCBhbmQgYnVpbHQgd2l0aCBhbGwgdGhlIGxvdmUgaW4gdGhlIHdvcmxkIEB0d2l0dGVyIGJ5IEBtZG8gYW5kIEBmYXQuCiAqIERhdGU6IFNhdCBOb3YgIDUgMTc6MDc6NDggUERUIDIwMTEKICovCgovLyBDU1MgUmVzZXQKQGltcG9ydCAiaW1wb3J0cy9yZXNldC5sZXNzIjsKCi8vIENvcmUgdmFyaWFibGVzIGFuZCBtaXhpbnMKQGltcG9ydCAiaW1wb3J0cy92YXJpYWJsZXMubGVzcyI7IC8vIE1vZGlmeSB0aGlzIGZvciBjdXN0b20gY29sb3JzLCBmb250LXNpemVzLCBldGMKQGltcG9ydCAiaW1wb3J0cy9taXhpbnMubGVzcyI7CgovLyBHcmlkIHN5c3RlbSBhbmQgcGFnZSBzdHJ1Y3R1cmUKQGltcG9ydCAiaW1wb3J0cy9zY2FmZm9sZGluZy5sZXNzIjsKCi8vIFN0eWxlZCBwYXR0ZXJucyBhbmQgZWxlbWVudHMKQGltcG9ydCAiaW1wb3J0cy90eXBlLmxlc3MiOwpAaW1wb3J0ICJpbXBvcnRzL2Zvcm1zLmxlc3MiOwpAaW1wb3J0ICJpbXBvcnRzL3RhYmxlcy5sZXNzIjsKQGltcG9ydCAiaW1wb3J0cy9wYXR0ZXJucy5sZXNzIjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/cyrillic.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhcjogI2ZjZmNmYzsgLy8gdmFyCgovLyDRhtCy0LXRgiDRgtC10LrRgdGC0LAgLSBub3Qgd29yawovLyDZhNmI2YYg2KfZhNmG2LUgLSBub3Qgd29yawovLyByyZluZyBtyZl0bmkgLSBub3Qgd29yawovLwovLyB0ZXh0IGNvbG9yIC0gd29yawouY29sb3IoQGNvbG9yKSB7CiAgICBjb2xvcjogQGNvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKEBjb2xvciwgNTAlKTsKICAgIC8qINGG0LLQtdGCINGC0LXQutGB0YLQsCAtIG5vdCB3b3JrKi8KICAgIC8qINmE2YjZhiDYp9mE2YbYtSAtIG5vdCB3b3JrKi8KICAgIC8qIHLJmW5nIG3JmXRuaSAtIG5vdCB3b3JrICovCgogICAgLyogdGV4dCBjb2xvciAtIHdvcmsqLwp9Cgpib2R5IHsKICAgIC5jb2xvcihAdmFyKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/element-colon-var.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHBvc2l0aW9uOiBhZnRlcjsKCi5mb286QHtwb3NpdGlvbn0gewogICAgY29sb3I6IGdyZWVuOwp9CgouYmFyIHsKICAgICY6QHtwb3NpdGlvbn0gewogICAgICAgIGNvbG9yOiBibHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/emptyrules.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7Cgp9CgouaG9tZSB7CiAgY29sb3I6ICNmMDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/escapes.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyB7CiAgICAmOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ1wyMDE0IFwwMEEwJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/extend-simple.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci5tZXsKCSY6ZXh0ZW5kKC5tYSwubWQpOwp9CgoubWF7Cgljb2xvcjogYmxhY2s7Cn0KLm1kIHsKCWNvbG9yOiB3aGl0ZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/functions.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2J1aWx0LWluIHsKICBtaXg6IG1peCgjZjAwLCAjMDBmLCA1MCUpOwogIG1peDogbWl4KCNmMDAsICMwMGYsIDI1JSk7CiAgbWl4OiBtaXgocmdiYSgyNTUsIDAsIDAsIDAuNSksICMwMGYsIDUwJSk7CiAgZmFkZTogZmFkZSgjMDBmZjAwLCAwLjEpOwogIGZhZGU6IGZhZGUocmdiYSgwLCAwLCAxNywgMC44KSwgMC4yKTsKICBmYWRlOiBmYWRlKCMwMGZmMDAsIDEwMCUpOwogIGZhZGVpbjogZmFkZWluKHJnYmEoMCwgMCwgMCwgMC41KSwgMC4xKTsKICBmYWRlaW46IGZhZGVpbihyZ2JhKDAsIDAsIDE3LCAwLjgpLCAwLjEgKyAwLjEpOwogIGZhZGVpbjogZmFkZWluKHJnYmEoMCwgMCwgMCwgMC43KSwgMTAlKTsKICBmYWRlaW46IGZhZGVpbihyZ2JhKDAsIDAsIDE4LCAwLjgpLCAyMCUpOwogIGZhZGVvdXQ6IGZhZGVvdXQocmdiYSgwLCAwLCAwLCAwLjUpLCAwLjEpOwogIGZhZGVvdXQ6IGZhZGVvdXQocmdiYSgwLCAwLCAxNywgMC40KSwgMjAlKTsKICBlc2NhcGU6IGVzY2FwZSgnPyY9JiUhIyQnKTsKICBqYXZhc2NyaXB0OiBgImhlbGxvIi50b1VwcGVyQ2FzZSgpICsgJyEnYDsKICBkYXJrZW46IGRhcmtlbigjMjIyLCAxMCUpOwoKICBpZigoZmFsc2UpLCB7ZzogN30pOyAvKiByZXN1bHRzIGluIHZvaWQgKi8KCWE6IGlmKG5vdChmYWxzZSksIDEsIDIpOwoJYjogaWYobm90KHRydWUpLCAxLCAyKTsKCUAxOiBpZihub3QoZmFsc2UpLCB7YzogM30sIHtkOiA0fSk7IEAxKCk7CgllOiBpZihub3QodHJ1ZSksIDUpOwoJQGY6IGJvb2xlYW4oMyA9IDQpOwoJZjogaWYobm90KEBmKSwgNik7CglnOiBpZih0cnVlLCAzLCA1KTsKCWg6IGlmKGZhbHNlLCAzLCA1KTsKCWk6IGlmKHRydWUgYW5kIGlzbnVtYmVyKDYpLCA2LCA4KTsKCWo6IGlmKG5vdCh0cnVlKSBhbmQgdHJ1ZSwgNiwgOCk7CglrOiBpZih0cnVlIG9yIHRydWUsIDEpOwoKCS8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMzM3MQoJQHNvbWU6IGZvbzsKCWw6IGlmKChpc2NvbG9yKEBzb21lKSksIGRhcmtlbihAc29tZSwgMTAlKSwgYmxhY2spOwoKCUBjb25kaXRpb25hbDogaWYoKHRydWUpLCB7CgkgIGNvbG9yOiBncmVlbjsKCX0sIHt9KTsKCUBjb25kaXRpb25hbCgpOwoKCUBmYWxzZXk6IGlmKChmYWxzZSksIHsKCSAgY29sb3I6IG9yYW5nZTsKCX0sIHsKCSAgY29sb3I6IHB1cnBsZTsKCX0pOwoJQGZhbHNleSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoImh0dHBzOi8vZm9udHMuZXhhbXBsZS5vcmcvaWNvbj9mYW1pbHk9Rm9vK0JhciIpOwpAaW1wb3J0IHVybCgiaHR0cDovL2ZvbnRzLmV4YW1wbGUub3JnL2ljb24/ZmFtaWx5PUZvbytCYXIiKTsKQGltcG9ydCB1cmwoIi8vZm9udHMuZXhhbXBsZS5vcmcvaWNvbj9mYW1pbHk9Rm9vK0JhciIpOwoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7CglAaW1wb3J0ICJpbXBvcnRzL2EubGVzcyI7Cn0KCkBmaWxldG9pbXBvcnQ6ICJpbXBvcnRzL2IubGVzcyI7CkBpbXBvcnQgdXJsKEBmaWxldG9pbXBvcnQpOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/80.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmRpdnsKCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgiLi4vaW1hZ2VzL2xvZ28ucG5nIikgY2VudGVyIGNlbnRlciBuby1yZXBlYXQ7Cgl9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/202-import1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YSB7Cgljb2xvcjogcmVkOwp9CkBpbXBvcnQgIjIwMi1pbXBvcnQyLmxlc3MiOyAvLyBpbXBvcnRpbmcgc29tZSBvbmUtdGltZSB1c2FibGUgbW9kdWxl]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/202-import2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNvbG9yIHsKCWNvbG9yOiB0cmFuc3BhcmVudDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/202-last.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmJsYWNrIHsKCWNvbG9yOiBibGFjazsKfQpAaW1wb3J0ICIyMDItaW1wb3J0Mi5sZXNzIjsgLy8gaW1wb3J0IG9uZSB0aW1lIHVzYWJsZSBtb2R1bGU=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/a.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmltcG9ydC1hIHsKICAgIGNvbG9yOiAjZmZmOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/b.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmltcG9ydC1iIHsKICAgIGNvbG9yOiAjMTExOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/forms.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogRm9ybXMubGVzcwogKiBCYXNlIHN0eWxlcyBmb3IgdmFyaW91cyBpbnB1dCB0eXBlcywgZm9ybSBsYXlvdXRzLCBhbmQgc3RhdGVzCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCgovLyBGT1JNIFNUWUxFUwovLyAtLS0tLS0tLS0tLQoKZm9ybSB7CiAgbWFyZ2luLWJvdHRvbTogQGJhc2VsaW5lOwp9CgovLyBHcm91cHMgb2YgZmllbGRzIHdpdGggbGFiZWxzIG9uIHRvcCAobGVnZW5kcykKZmllbGRzZXQgewogIG1hcmdpbi1ib3R0b206IEBiYXNlbGluZTsKICBwYWRkaW5nLXRvcDogQGJhc2VsaW5lOwogIGxlZ2VuZCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmctbGVmdDogMTUwcHg7CiAgICBmb250LXNpemU6IEBiYXNlZm9udCAqIDEuNTsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgY29sb3I6IEBncmF5RGFyazsKICAgICpwYWRkaW5nOiAwIDAgNXB4IDE0NXB4OyAvKiBJRTYtNyAqLwogICAgKmxpbmUtaGVpZ2h0OiAxLjU7IC8qIElFNi03ICovCiAgfQp9CgovLyBQYXJlbnQgZWxlbWVudCB0aGF0IGNsZWFycyBmbG9hdHMgYW5kIHdyYXBzIGxhYmVscyBhbmQgZmllbGRzIHRvZ2V0aGVyCmZvcm0gLmNsZWFyZml4IHsKICBtYXJnaW4tYm90dG9tOiBAYmFzZWxpbmU7CiAgLmNsZWFyZml4KCkKfQoKLy8gU2V0IGZvbnQgZm9yIGZvcm1zCmxhYmVsLAppbnB1dCwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgI2ZvbnQgPiAuc2Fucy1zZXJpZihub3JtYWwsMTNweCxub3JtYWwpOwp9CgovLyBGbG9hdCBsYWJlbHMgbGVmdApsYWJlbCB7CiAgcGFkZGluZy10b3A6IDZweDsKICBmb250LXNpemU6IEBiYXNlZm9udDsKICBsaW5lLWhlaWdodDogQGJhc2VsaW5lOwogIGZsb2F0OiBsZWZ0OwogIHdpZHRoOiAxMzBweDsKICB0ZXh0LWFsaWduOiByaWdodDsKICBjb2xvcjogQGdyYXlEYXJrOwp9CgovLyBTaGlmdCBvdmVyIHRoZSBpbnNpZGUgZGl2IHRvIGFsaWduIGFsbCBsYWJlbCdzIHJlbGV2YW50IGNvbnRlbnQKZm9ybSAuaW5wdXQgewogIG1hcmdpbi1sZWZ0OiAxNTBweDsKfQoKLy8gQ2hlY2tib3hzIGFuZCByYWRpbyBidXR0b25zCmlucHV0W3R5cGU9Y2hlY2tib3hdLAppbnB1dFt0eXBlPXJhZGlvXSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgovLyBJbnB1dHMsIFRleHRhcmVhcywgU2VsZWN0cwppbnB1dCwKdGV4dGFyZWEsCnNlbGVjdCwKLnVuZWRpdGFibGUtaW5wdXQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMjEwcHg7CiAgaGVpZ2h0OiBAYmFzZWxpbmU7CiAgcGFkZGluZzogNHB4OwogIGZvbnQtc2l6ZTogQGJhc2Vmb250OwogIGxpbmUtaGVpZ2h0OiBAYmFzZWxpbmU7CiAgY29sb3I6IEBncmF5OwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgLmJvcmRlci1yYWRpdXMoM3B4KTsKfQoKLy8gcmVtb3ZlIHBhZGRpbmcgZnJvbSBzZWxlY3QKc2VsZWN0IHsKICBwYWRkaW5nOiBpbml0aWFsOwp9CgovLyBtaW5pIHJlc2V0IGZvciBub24taHRtbDUgZmlsZSB0eXBlcwppbnB1dFt0eXBlPWNoZWNrYm94XSwKaW5wdXRbdHlwZT1yYWRpb10gewogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICBwYWRkaW5nOiAwOwogIG1hcmdpbjogM3B4IDA7CiAgKm1hcmdpbi10b3A6IDA7IC8qIElFNi03ICovCiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICBib3JkZXI6IG5vbmU7Cn0KCmlucHV0W3R5cGU9ZmlsZV0gewogIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTsKICBwYWRkaW5nOiBpbml0aWFsOwogIGJvcmRlcjogaW5pdGlhbDsKICBsaW5lLWhlaWdodDogaW5pdGlhbDsKICAuYm94LXNoYWRvdyhub25lKTsKfQoKaW5wdXRbdHlwZT1idXR0b25dLAppbnB1dFt0eXBlPXJlc2V0XSwKaW5wdXRbdHlwZT1zdWJtaXRdIHsKICB3aWR0aDogYXV0bzsKICBoZWlnaHQ6IGF1dG87Cn0KCnNlbGVjdCwKaW5wdXRbdHlwZT1maWxlXSB7CiAgaGVpZ2h0OiBAYmFzZWxpbmUgKiAxLjU7IC8vIEluIElFNywgdGhlIGhlaWdodCBvZiB0aGUgc2VsZWN0IGVsZW1lbnQgY2Fubm90IGJlIGNoYW5nZWQgYnkgaGVpZ2h0LCBvbmx5IGZvbnQtc2l6ZQogICpoZWlnaHQ6IGF1dG87IC8vIFJlc2V0IGZvciBJRTcKICBsaW5lLWhlaWdodDogQGJhc2VsaW5lICogMS41OwogICptYXJnaW4tdG9wOiA0cHg7IC8qIEZvciBJRTcsIGFkZCB0b3AgbWFyZ2luIHRvIGFsaWduIHNlbGVjdCB3aXRoIGxhYmVscyAqLwp9CgovLyBNYWtlIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50cyBoZWlnaHQgbm90IGZpeGVkCnNlbGVjdFttdWx0aXBsZV0gewogIGhlaWdodDogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7IC8vIEZpeGVzIENocm9taXVtIGJ1ZyBvZiB1bnJlYWRhYmxlIGl0ZW1zCn0KCnRleHRhcmVhIHsKICBoZWlnaHQ6IGF1dG87Cn0KCi8vIEZvciB0ZXh0IHRoYXQgbmVlZHMgdG8gYXBwZWFyIGFzIGFuIGlucHV0IGJ1dCBzaG91bGQgbm90IGJlIGFuIGlucHV0Ci51bmVkaXRhYmxlLWlucHV0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7CiAgZGlzcGxheTogYmxvY2s7CiAgYm9yZGVyLWNvbG9yOiAjZWVlOwogIC5ib3gtc2hhZG93KGluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wMjUpKTsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CgovLyBQbGFjZWhvbGRlciB0ZXh0IGdldHMgc3BlY2lhbCBzdHlsZXM7IGNhbid0IGJlIGJ1bmRsZWQgdG9nZXRoZXIgdGhvdWdoIGZvciBzb21lIHJlYXNvbgo6LW1vei1wbGFjZWhvbGRlciB7CiAgY29sb3I6IEBncmF5TGlnaHQ7Cn0KOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogQGdyYXlMaWdodDsKfQoKLy8gRm9jdXMgc3RhdGVzCmlucHV0LAp0ZXh0YXJlYSB7CiAgQHRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgLjJzLCBib3gtc2hhZG93IGxpbmVhciAuMnM7CiAgLnRyYW5zaXRpb24oQHRyYW5zaXRpb24pOwogIC5ib3gtc2hhZG93KGluc2V0IDAgMXB4IDNweCByZ2JhKDAsMCwwLC4xKSk7Cn0KaW5wdXQ6Zm9jdXMsCnRleHRhcmVhOmZvY3VzIHsKICBvdXRsaW5lOiAwOwogIGJvcmRlci1jb2xvcjogcmdiYSg4MiwxNjgsMjM2LC44KTsKICBAc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLDAsMCwuMSksIDAgMCA4cHggcmdiYSg4MiwxNjgsMjM2LC42KTsKICAuYm94LXNoYWRvdyhAc2hhZG93KTsKfQppbnB1dFt0eXBlPWZpbGVdOmZvY3VzLAppbnB1dFt0eXBlPWNoZWNrYm94XTpmb2N1cywKc2VsZWN0OmZvY3VzIHsKICAuYm94LXNoYWRvdyhub25lKTsgLy8gb3ZlcnJpZGUgZm9yIGZpbGUgaW5wdXRzCiAgb3V0bGluZTogMXB4IGRvdHRlZCAjNjY2OyAvLyBTZWxldCBlbGVtZW50cyBkb24ndCBnZXQgYm94LXNoYWRvdyBzdHlsZXMsIHNvIGluc3RlYWQgd2UgZG8gb3V0bGluZQp9CgoKLy8gRk9STSBGSUVMRCBGRUVEQkFDSyBTVEFURVMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIE1peGluIGZvciBmb3JtIGZpZWxkIHN0YXRlcwouZm9ybUZpZWxkU3RhdGUoQHRleHRDb2xvcjogIzU1NSwgQGJvcmRlckNvbG9yOiAjY2NjLCBAYmFja2dyb3VuZENvbG9yOiAjZjVmNWY1KSB7CiAgLy8gU2V0IHRoZSB0ZXh0IGNvbG9yCiAgPiBsYWJlbCwKICAuaGVscC1ibG9jaywKICAuaGVscC1pbmxpbmUgewogICAgY29sb3I6IEB0ZXh0Q29sb3I7CiAgfQogIC8vIFN0eWxlIGlucHV0cyBhY2NvcmRpbmdseQogIGlucHV0LAogIHRleHRhcmVhIHsKICAgIGNvbG9yOiBAdGV4dENvbG9yOwogICAgYm9yZGVyLWNvbG9yOiBAYm9yZGVyQ29sb3I7CiAgICAmOmZvY3VzIHsKICAgICAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oQGJvcmRlckNvbG9yLCAxMCUpOwogICAgICAuYm94LXNoYWRvdygwIDAgNnB4IGxpZ2h0ZW4oQGJvcmRlckNvbG9yLCAyMCUpKTsKICAgIH0KICB9CiAgLy8gR2l2ZSBhIHNtYWxsIGJhY2tncm91bmQgY29sb3IgZm9yIGlucHV0LXByZXBlbmQvLWFwcGVuZAogIC5pbnB1dC1wcmVwZW5kIC5hZGQtb24sCiAgLmlucHV0LWFwcGVuZCAuYWRkLW9uIHsKICAgIGNvbG9yOiBAdGV4dENvbG9yOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGJhY2tncm91bmRDb2xvcjsKICAgIGJvcmRlci1jb2xvcjogQHRleHRDb2xvcjsKICB9Cn0KLy8gRXJyb3IKZm9ybSAuY2xlYXJmaXguZXJyb3IgewogIC5mb3JtRmllbGRTdGF0ZSgjYjk0YTQ4LCAjZWU1ZjViLCBsaWdodGVuKCNlZTVmNWIsIDMwJSkpOwp9Ci8vIFdhcm5pbmcKZm9ybSAuY2xlYXJmaXgud2FybmluZyB7CiAgLmZvcm1GaWVsZFN0YXRlKCNjMDk4NTMsICNjY2FlNjQsIGxpZ2h0ZW4oI0NDQUU2NCwgNSUpKTsKfQovLyBTdWNjZXNzCmZvcm0gLmNsZWFyZml4LnN1Y2Nlc3MgewogIC5mb3JtRmllbGRTdGF0ZSgjNDY4ODQ3LCAjNTdhOTU3LCBsaWdodGVuKCM1N2E5NTcsIDMwJSkpOwp9CgoKLy8gRm9ybSBlbGVtZW50IHNpemVzCi8vIFRPRE8gdjI6IHJlbW92ZSBkdXBsaWNhdGlvbiBoZXJlIGFuZCBqdXN0IHN0aWNrIHRvIC5pbnB1dC1bc2l6ZV0gaW4gbGlnaHQgb2YgYWRkaW5nIC5zcGFuTiBzaXplcwouaW5wdXQtbWluaSwKaW5wdXQubWluaSwKdGV4dGFyZWEubWluaSwKc2VsZWN0Lm1pbmkgewogIHdpZHRoOiA2MHB4Owp9Ci5pbnB1dC1zbWFsbCwKaW5wdXQuc21hbGwsCnRleHRhcmVhLnNtYWxsLApzZWxlY3Quc21hbGwgewogIHdpZHRoOiA5MHB4Owp9Ci5pbnB1dC1tZWRpdW0sCmlucHV0Lm1lZGl1bSwKdGV4dGFyZWEubWVkaXVtLApzZWxlY3QubWVkaXVtIHsKICB3aWR0aDogMTUwcHg7Cn0KLmlucHV0LWxhcmdlLAppbnB1dC5sYXJnZSwKdGV4dGFyZWEubGFyZ2UsCnNlbGVjdC5sYXJnZSB7CiAgd2lkdGg6IDIxMHB4Owp9Ci5pbnB1dC14bGFyZ2UsCmlucHV0LnhsYXJnZSwKdGV4dGFyZWEueGxhcmdlLApzZWxlY3QueGxhcmdlIHsKICB3aWR0aDogMjcwcHg7Cn0KLmlucHV0LXh4bGFyZ2UsCmlucHV0Lnh4bGFyZ2UsCnRleHRhcmVhLnh4bGFyZ2UsCnNlbGVjdC54eGxhcmdlIHsKICB3aWR0aDogNTMwcHg7Cn0KdGV4dGFyZWEueHhsYXJnZSB7CiAgb3ZlcmZsb3cteTogYXV0bzsKfQoKLy8gR3JpZCBzdHlsZSBpbnB1dCBzaXplcwovLyBUaGlzIGlzIGEgZHVwbGljYXRpb24gb2YgdGhlIG1haW4gZ3JpZCAuY29sdW1ucygpIG1peGluLCBidXQgc3VidHJhY3RzIDEwcHggdG8gYWNjb3VudCBmb3IgaW5wdXQgcGFkZGluZyBhbmQgYm9yZGVyCi5mb3JtQ29sdW1ucyhAY29sdW1uU3BhbjogMSkgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmbG9hdDogbm9uZTsKICB3aWR0aDogKChAZ3JpZENvbHVtbldpZHRoKSAqIEBjb2x1bW5TcGFuKSArIChAZ3JpZEd1dHRlcldpZHRoICogKEBjb2x1bW5TcGFuIC0gMSkpIC0gMTA7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KaW5wdXQsCnRleHRhcmVhIHsKICAvLyBEZWZhdWx0IGNvbHVtbnMKICAmLnNwYW4xICAgICB7IC5mb3JtQ29sdW1ucygxKTsgfQogICYuc3BhbjIgICAgIHsgLmZvcm1Db2x1bW5zKDIpOyB9CiAgJi5zcGFuMyAgICAgeyAuZm9ybUNvbHVtbnMoMyk7IH0KICAmLnNwYW40ICAgICB7IC5mb3JtQ29sdW1ucyg0KTsgfQogICYuc3BhbjUgICAgIHsgLmZvcm1Db2x1bW5zKDUpOyB9CiAgJi5zcGFuNiAgICAgeyAuZm9ybUNvbHVtbnMoNik7IH0KICAmLnNwYW43ICAgICB7IC5mb3JtQ29sdW1ucyg3KTsgfQogICYuc3BhbjggICAgIHsgLmZvcm1Db2x1bW5zKDgpOyB9CiAgJi5zcGFuOSAgICAgeyAuZm9ybUNvbHVtbnMoOSk7IH0KICAmLnNwYW4xMCAgICB7IC5mb3JtQ29sdW1ucygxMCk7IH0KICAmLnNwYW4xMSAgICB7IC5mb3JtQ29sdW1ucygxMSk7IH0KICAmLnNwYW4xMiAgICB7IC5mb3JtQ29sdW1ucygxMik7IH0KICAmLnNwYW4xMyAgICB7IC5mb3JtQ29sdW1ucygxMyk7IH0KICAmLnNwYW4xNCAgICB7IC5mb3JtQ29sdW1ucygxNCk7IH0KICAmLnNwYW4xNSAgICB7IC5mb3JtQ29sdW1ucygxNSk7IH0KICAmLnNwYW4xNiAgICB7IC5mb3JtQ29sdW1ucygxNik7IH0KfQoKLy8gRGlzYWJsZWQgYW5kIHJlYWQtb25seSBpbnB1dHMKaW5wdXRbZGlzYWJsZWRdLApzZWxlY3RbZGlzYWJsZWRdLAp0ZXh0YXJlYVtkaXNhYmxlZF0sCmlucHV0W3JlYWRvbmx5XSwKc2VsZWN0W3JlYWRvbmx5XSwKdGV4dGFyZWFbcmVhZG9ubHldIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGJvcmRlci1jb2xvcjogI2RkZDsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CgovLyBBY3Rpb25zICh0aGUgYnV0dG9ucykKLmFjdGlvbnMgewogIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgbWFyZ2luLXRvcDogQGJhc2VsaW5lOwogIG1hcmdpbi1ib3R0b206IEBiYXNlbGluZTsKICBwYWRkaW5nOiAoQGJhc2VsaW5lIC0gMSkgMjBweCBAYmFzZWxpbmUgMTUwcHg7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7CiAgLmJvcmRlci1yYWRpdXMoMCAwIDNweCAzcHgpOwogIC5zZWNvbmRhcnktYWN0aW9uIHsKICAgIGZsb2F0OiByaWdodDsKICAgIGEgewogICAgICBsaW5lLWhlaWdodDogMzBweDsKICAgICAgJjpob3ZlciB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KICAgIH0KICB9Cn0KCi8vIEhlbHAgVGV4dAovLyBUT0RPOiBEbyB3ZSBuZWVkIHRvIHNldCBiYXNlZm9udCBhbmQgYmFzZWxpbmUgaGVyZT8KLmhlbHAtaW5saW5lLAouaGVscC1ibG9jayB7CiAgZm9udC1zaXplOiBAYmFzZWZvbnQ7CiAgbGluZS1oZWlnaHQ6IEBiYXNlbGluZTsKICBjb2xvcjogQGdyYXlMaWdodDsKfQouaGVscC1pbmxpbmUgewogIHBhZGRpbmctbGVmdDogNXB4OwogICpwb3NpdGlvbjogcmVsYXRpdmU7IC8qIElFNi03ICovCiAgKnRvcDogLTVweDsgLyogSUU2LTcgKi8KfQoKLy8gQmlnIGJsb2NrcyBvZiBoZWxwIHRleHQKLmhlbHAtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogNjAwcHg7Cn0KCi8vIElubGluZSBGaWVsZHMgKGlucHV0IGZpZWxkcyB0aGF0IGFwcGVhciBhcyBpbmxpbmUgb2JqZWN0cwouaW5saW5lLWlucHV0cyB7CiAgY29sb3I6IEBncmF5OwogIHNwYW4gewogICAgcGFkZGluZzogMCAycHggMCAxcHg7CiAgfQp9CgovLyBBbGxvdyB1cyB0byBwdXQgc3ltYm9scyBhbmQgdGV4dCB3aXRoaW4gdGhlIGlucHV0IGZpZWxkIGZvciBhIGNsZWFuZXIgbG9vawouaW5wdXQtcHJlcGVuZCwKLmlucHV0LWFwcGVuZCB7CiAgaW5wdXQgewogICAgLmJvcmRlci1yYWRpdXMoMCAzcHggM3B4IDApOwogIH0KICAuYWRkLW9uIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgei1pbmRleDogMjsKICAgIGZsb2F0OiBsZWZ0OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogYXV0bzsKICAgIG1pbi13aWR0aDogMTZweDsKICAgIGhlaWdodDogMThweDsKICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDVweDsKICAgIG1hcmdpbi1yaWdodDogLTFweDsKICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICBsaW5lLWhlaWdodDogMThweDsKICAgIGNvbG9yOiBAZ3JheUxpZ2h0OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgQHdoaXRlOwogICAgLmJvcmRlci1yYWRpdXMoM3B4IDAgMCAzcHgpOwogIH0KICAuYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oQGdyZWVuLCAzMCk7CiAgICBib3JkZXItY29sb3I6IEBncmVlbjsKICB9Cn0KLmlucHV0LXByZXBlbmQgewogIC5hZGQtb24gewogICAgKm1hcmdpbi10b3A6IDFweDsgLyogSUU2LTcgKi8KICB9Cn0KLmlucHV0LWFwcGVuZCB7CiAgaW5wdXQgewogICAgZmxvYXQ6IGxlZnQ7CiAgICAuYm9yZGVyLXJhZGl1cygzcHggMCAwIDNweCk7CiAgfQogIC5hZGQtb24gewogICAgLmJvcmRlci1yYWRpdXMoMCAzcHggM3B4IDApOwogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgfQp9CgovLyBTdGFja2VkIG9wdGlvbnMgZm9yIGZvcm1zIChyYWRpbyBidXR0b25zIG9yIGNoZWNrYm94ZXMpCi5pbnB1dHMtbGlzdCB7CiAgbWFyZ2luOiAwIDAgNXB4OwogIHdpZHRoOiAxMDAlOwogIGxpIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogMDsKICAgIHdpZHRoOiAxMDAlOwogIH0KICBsYWJlbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiBub25lOwogICAgd2lkdGg6IGF1dG87CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luLWxlZnQ6IDIwcHg7CiAgICBsaW5lLWhlaWdodDogQGJhc2VsaW5lOwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICBzdHJvbmcgewogICAgICBjb2xvcjogQGdyYXk7CiAgICB9CiAgICBzbWFsbCB7CiAgICAgIGZvbnQtc2l6ZTogQGJhc2Vmb250IC0gMjsKICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIH0KICB9CiAgLmlucHV0cy1saXN0IHsKICAgIG1hcmdpbi1sZWZ0OiAyNXB4OwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIHBhZGRpbmctdG9wOiAwOwogIH0KICAmOmZpcnN0LWNoaWxkIHsKICAgIHBhZGRpbmctdG9wOiA2cHg7CiAgfQogIGxpICsgbGkgewogICAgcGFkZGluZy10b3A6IDJweDsKICB9CiAgaW5wdXRbdHlwZT1yYWRpb10sCiAgaW5wdXRbdHlwZT1jaGVja2JveF0gewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIG1hcmdpbi1sZWZ0OiAtMjBweDsKICAgIGZsb2F0OiBsZWZ0OwogIH0KfQoKLy8gU3RhY2tlZCBmb3JtcwouZm9ybS1zdGFja2VkIHsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgZmllbGRzZXQgewogICAgcGFkZGluZy10b3A6IEBiYXNlbGluZSAvIDI7CiAgfQogIGxlZ2VuZCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQogIGxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IG5vbmU7CiAgICB3aWR0aDogYXV0bzsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgcGFkZGluZy10b3A6IDA7CiAgfQogIC5jbGVhcmZpeCB7CiAgICBtYXJnaW4tYm90dG9tOiBAYmFzZWxpbmUgLyAyOwogICAgZGl2LmlucHV0IHsKICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICB9CiAgfQogIC5pbnB1dHMtbGlzdCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgbGkgewogICAgICBwYWRkaW5nLXRvcDogMDsKICAgICAgbGFiZWwgewogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgcGFkZGluZy10b3A6IDA7CiAgICAgIH0KICAgIH0KICB9CiAgZGl2LmNsZWFyZml4LmVycm9yIHsKICAgIHBhZGRpbmctdG9wOiAxMHB4OwogICAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWxlZnQ6IC0xMHB4OwogIH0KICAuYWN0aW9ucyB7CiAgICBtYXJnaW4tbGVmdDogLTIwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/mixins.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogTWl4aW5zLmxlc3MKICogU25pcHBldHMgb2YgcmV1c2FibGUgQ1NTIHRvIGRldmVsb3AgZmFzdGVyIGFuZCBrZWVwIGNvZGUgcmVhZGFibGUKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCgovLyBDbGVhcmZpeCBmb3IgY2xlYXJpbmcgZmxvYXRzIGxpa2UgYSBib3NzIGg1YnAuY29tL3EKLmNsZWFyZml4KCkgewogIHpvb206IDE7CiAgJjpiZWZvcmUsCiAgJjphZnRlciB7CiAgICBkaXNwbGF5OiB0YWJsZTsKICAgIGNvbnRlbnQ6ICIiOwogICAgem9vbTogMTsKICB9CiAgJjphZnRlciB7CiAgICBjbGVhcjogYm90aDsKICB9Cn0KCi8vIENlbnRlci1hbGlnbiBhIGJsb2NrIGxldmVsIGVsZW1lbnQKLmNlbnRlci1ibG9jaygpIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi8vIFNpemluZyBzaG9ydGN1dHMKLnNpemUoQGhlaWdodDogNXB4LCBAd2lkdGg6IDVweCkgewogIGhlaWdodDogQGhlaWdodDsKICB3aWR0aDogQHdpZHRoOwp9Ci5zcXVhcmUoQHNpemU6IDVweCkgewogIC5zaXplKEBzaXplLCBAc2l6ZSk7Cn0KCi8vIElucHV0IHBsYWNlaG9sZGVyIHRleHQKLnBsYWNlaG9sZGVyKEBjb2xvcjogQGdyYXlMaWdodCkgewogIDotbW96LXBsYWNlaG9sZGVyIHsKICAgIGNvbG9yOiBAY29sb3I7CiAgfQogIDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICBjb2xvcjogQGNvbG9yOwogIH0KfQoKLy8gRm9udCBTdGFja3MKI2ZvbnQgewogIC5zaG9ydGhhbmQoQHdlaWdodDogbm9ybWFsLCBAc2l6ZTogMTRweCwgQGxpbmVIZWlnaHQ6IDIwcHgpIHsKICAgIGZvbnQtc2l6ZTogQHNpemU7CiAgICBmb250LXdlaWdodDogQHdlaWdodDsKICAgIGxpbmUtaGVpZ2h0OiBAbGluZUhlaWdodDsKICB9CiAgLnNhbnMtc2VyaWYoQHdlaWdodDogbm9ybWFsLCBAc2l6ZTogMTRweCwgQGxpbmVIZWlnaHQ6IDIwcHgpIHsKICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiBAc2l6ZTsKICAgIGZvbnQtd2VpZ2h0OiBAd2VpZ2h0OwogICAgbGluZS1oZWlnaHQ6IEBsaW5lSGVpZ2h0OwogIH0KICAuc2VyaWYoQHdlaWdodDogbm9ybWFsLCBAc2l6ZTogMTRweCwgQGxpbmVIZWlnaHQ6IDIwcHgpIHsKICAgIGZvbnQtZmFtaWx5OiAiR2VvcmdpYSIsIFRpbWVzIE5ldyBSb21hbiwgVGltZXMsIHNlcmlmOwogICAgZm9udC1zaXplOiBAc2l6ZTsKICAgIGZvbnQtd2VpZ2h0OiBAd2VpZ2h0OwogICAgbGluZS1oZWlnaHQ6IEBsaW5lSGVpZ2h0OwogIH0KICAubW9ub3NwYWNlKEB3ZWlnaHQ6IG5vcm1hbCwgQHNpemU6IDEycHgsIEBsaW5lSGVpZ2h0OiAyMHB4KSB7CiAgICBmb250LWZhbWlseTogIk1vbmFjbyIsIENvdXJpZXIgTmV3LCBtb25vc3BhY2U7CiAgICBmb250LXNpemU6IEBzaXplOwogICAgZm9udC13ZWlnaHQ6IEB3ZWlnaHQ7CiAgICBsaW5lLWhlaWdodDogQGxpbmVIZWlnaHQ7CiAgfQp9CgovLyBHcmlkIFN5c3RlbQouZml4ZWQtY29udGFpbmVyKCkgewogIHdpZHRoOiBAc2l0ZVdpZHRoOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKICAuY2xlYXJmaXgoKTsKfQouY29sdW1ucyhAY29sdW1uU3BhbjogMSkgewogIHdpZHRoOiAoQGdyaWRDb2x1bW5XaWR0aCAqIEBjb2x1bW5TcGFuKSArIChAZ3JpZEd1dHRlcldpZHRoICogKEBjb2x1bW5TcGFuIC0gMSkpOwp9Ci5vZmZzZXQoQGNvbHVtbk9mZnNldDogMSkgewogIG1hcmdpbi1sZWZ0OiAoQGdyaWRDb2x1bW5XaWR0aCAqIEBjb2x1bW5PZmZzZXQpICsgKEBncmlkR3V0dGVyV2lkdGggKiAoQGNvbHVtbk9mZnNldCAtIDEpKSArIEBleHRyYVNwYWNlOwp9Ci8vIE5lY2Vzc2FyeSBncmlkIHN0eWxlcyBmb3IgZXZlcnkgY29sdW1uIHRvIG1ha2UgdGhlbSBhcHBlYXIgbmV4dCB0byBlYWNoIG90aGVyIGhvcml6b250YWxseQouZ3JpZENvbHVtbigpIHsKICBkaXNwbGF5OiBpbmxpbmU7CiAgZmxvYXQ6IGxlZnQ7CiAgbWFyZ2luLWxlZnQ6IEBncmlkR3V0dGVyV2lkdGg7Cn0KLy8gbWFrZUNvbHVtbiBjYW4gYmUgdXNlZCB0byBtYXJrIGFueSBlbGVtZW50IChlLmcuLCAuY29udGVudC1wcmltYXJ5KSBhcyBhIGNvbHVtbiB3aXRob3V0IGNoYW5naW5nIG1hcmt1cCB0byAuc3BhbiBzb21ldGhpbmcKLm1ha2VDb2x1bW4oQGNvbHVtblNwYW46IDEpIHsKICAuZ3JpZENvbHVtbigpOwogIC5jb2x1bW5zKEBjb2x1bW5TcGFuKTsKfQoKLy8gQm9yZGVyIFJhZGl1cwouYm9yZGVyLXJhZGl1cyhAcmFkaXVzOiA1cHgpIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IEByYWRpdXM7CiAgICAgLW1vei1ib3JkZXItcmFkaXVzOiBAcmFkaXVzOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogQHJhZGl1czsKfQoKLy8gRHJvcCBzaGFkb3dzCi5ib3gtc2hhZG93KEBzaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLC4yNSkpIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IEBzaGFkb3c7CiAgICAgLW1vei1ib3gtc2hhZG93OiBAc2hhZG93OwogICAgICAgICAgYm94LXNoYWRvdzogQHNoYWRvdzsKfQoKLy8gVHJhbnNpdGlvbnMKLnRyYW5zaXRpb24oQHRyYW5zaXRpb24pIHsKICAgICAtd2Via2l0LXRyYW5zaXRpb246IEB0cmFuc2l0aW9uOwogICAgICAgIC1tb3otdHJhbnNpdGlvbjogQHRyYW5zaXRpb247CiAgICAgICAgIC1tcy10cmFuc2l0aW9uOiBAdHJhbnNpdGlvbjsKICAgICAgICAgIC1vLXRyYW5zaXRpb246IEB0cmFuc2l0aW9uOwogICAgICAgICAgICAgdHJhbnNpdGlvbjogQHRyYW5zaXRpb247Cn0KCi8vIEJhY2tncm91bmQgY2xpcHBpbmcKLmJhY2tncm91bmQtY2xpcChAY2xpcCkgewogIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBAY2xpcDsKICAgICAtbW96LWJhY2tncm91bmQtY2xpcDogQGNsaXA7CiAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IEBjbGlwOwp9CgovLyBDU1MzIENvbnRlbnQgQ29sdW1ucwouY29udGVudC1jb2x1bW5zKEBjb2x1bW5Db3VudCwgQGNvbHVtbkdhcDogMjBweCkgewogIC13ZWJraXQtY29sdW1uLWNvdW50OiBAY29sdW1uQ291bnQ7CiAgICAgLW1vei1jb2x1bW4tY291bnQ6IEBjb2x1bW5Db3VudDsKICAgICAgICAgIGNvbHVtbi1jb3VudDogQGNvbHVtbkNvdW50OwogIC13ZWJraXQtY29sdW1uLWdhcDogQGNvbHVtbkdhcDsKICAgICAtbW96LWNvbHVtbi1nYXA6IEBjb2x1bW5HYXA7CiAgICAgICAgICBjb2x1bW4tZ2FwOiBAY29sdW1uR2FwOwp9CgovLyBNYWtlIGFueSBlbGVtZW50IHJlc2l6YWJsZSBmb3IgcHJvdG90eXBpbmcKLnJlc2l6YWJsZShAZGlyZWN0aW9uOiBib3RoKSB7CiAgcmVzaXplOiBAZGlyZWN0aW9uOyAvLyBPcHRpb25zIGFyZSBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgYm90aAogIG92ZXJmbG93OiBhdXRvOyAvLyBTYWZhcmkgZml4Cn0KCi8vIEFkZCBhbiBhbHBoYXRyYW5zcGFyZW5jeSB2YWx1ZSB0byBhbnkgYmFja2dyb3VuZCBvciBib3JkZXIgY29sb3IgKHZpYSBFbHlzZSBIb2xsYWRheSkKI3RyYW5zbHVjZW50IHsKICAuYmFja2dyb3VuZChAY29sb3I6IEB3aGl0ZSwgQGFscGhhOiAxKSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKGh1ZShAY29sb3IpLCBzYXR1cmF0aW9uKEBjb2xvciksIGxpZ2h0bmVzcyhAY29sb3IpLCBAYWxwaGEpOwogIH0KICAuYm9yZGVyKEBjb2xvcjogQHdoaXRlLCBAYWxwaGE6IDEpIHsKICAgIGJvcmRlci1jb2xvcjogaHNsYShodWUoQGNvbG9yKSwgc2F0dXJhdGlvbihAY29sb3IpLCBsaWdodG5lc3MoQGNvbG9yKSwgQGFscGhhKTsKICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgfQp9CgovLyBHcmFkaWVudCBCYXIgQ29sb3JzIGZvciBidXR0b25zIGFuZCBhbGxlcnRzCi5ncmFkaWVudEJhcihAcHJpbWFyeUNvbG9yLCBAc2Vjb25kYXJ5Q29sb3IpIHsKICAjZ3JhZGllbnQgPiAudmVydGljYWwoQHByaW1hcnlDb2xvciwgQHNlY29uZGFyeUNvbG9yKTsKICB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLDAsMCwuMjUpOwogIGJvcmRlci1jb2xvcjogQHNlY29uZGFyeUNvbG9yIEBzZWNvbmRhcnlDb2xvciBkYXJrZW4oQHNlY29uZGFyeUNvbG9yLCAxNSUpOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMSkgZmFkZWluKHJnYmEoMCwwLDAsLjEpLCAxNSUpOwp9CgovLyBHcmFkaWVudHMKI2dyYWRpZW50IHsKICAuaG9yaXpvbnRhbCAoQHN0YXJ0Q29sb3I6ICM1NTUsIEBlbmRDb2xvcjogIzMzMykgewogICAgYmFja2dyb3VuZC1jb2xvcjogQGVuZENvbG9yOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgYmFja2dyb3VuZC1pbWFnZTogLWtodG1sLWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJvbShAc3RhcnRDb2xvciksIHRvKEBlbmRDb2xvcikpOyAvLyBLb25xdWVyb3IKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KGxlZnQsIEBzdGFydENvbG9yLCBAZW5kQ29sb3IpOyAvLyBGRiAzLjYrCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KGxlZnQsIEBzdGFydENvbG9yLCBAZW5kQ29sb3IpOyAvLyBJRTEwCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJpZ2h0IHRvcCwgY29sb3Itc3RvcCgwJSwgQHN0YXJ0Q29sb3IpLCBjb2xvci1zdG9wKDEwMCUsIEBlbmRDb2xvcikpOyAvLyBTYWZhcmkgNCssIENocm9tZSAyKwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgQHN0YXJ0Q29sb3IsIEBlbmRDb2xvcik7IC8vIFNhZmFyaSA1LjErLCBDaHJvbWUgMTArCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQobGVmdCwgQHN0YXJ0Q29sb3IsIEBlbmRDb2xvcik7IC8vIE9wZXJhIDExLjEwCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQobGVmdCwgQHN0YXJ0Q29sb3IsIEBlbmRDb2xvcik7IC8vIExlIHN0YW5kYXJkCiAgICBmaWx0ZXI6IGUoJSgicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyVkJywgZW5kQ29sb3JzdHI9JyVkJywgR3JhZGllbnRUeXBlPTEpIixAc3RhcnRDb2xvcixAZW5kQ29sb3IpKTsgLy8gSUU5IGFuZCBkb3duCiAgfQogIC52ZXJ0aWNhbCAoQHN0YXJ0Q29sb3I6ICM1NTUsIEBlbmRDb2xvcjogIzMzMykgewogICAgYmFja2dyb3VuZC1jb2xvcjogQGVuZENvbG9yOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgYmFja2dyb3VuZC1pbWFnZTogLWtodG1sLWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKEBzdGFydENvbG9yKSwgdG8oQGVuZENvbG9yKSk7IC8vIEtvbnF1ZXJvcgogICAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCBAc3RhcnRDb2xvciwgQGVuZENvbG9yKTsgLy8gRkYgMy42KwogICAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsIEBzdGFydENvbG9yLCBAZW5kQ29sb3IpOyAvLyBJRTEwCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAlLCBAc3RhcnRDb2xvciksIGNvbG9yLXN0b3AoMTAwJSwgQGVuZENvbG9yKSk7IC8vIFNhZmFyaSA0KywgQ2hyb21lIDIrCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIEBzdGFydENvbG9yLCBAZW5kQ29sb3IpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lIDEwKwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgQHN0YXJ0Q29sb3IsIEBlbmRDb2xvcik7IC8vIE9wZXJhIDExLjEwCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG9wLCBAc3RhcnRDb2xvciwgQGVuZENvbG9yKTsgLy8gVGhlIHN0YW5kYXJkCiAgICBmaWx0ZXI6IGUoJSgicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyVkJywgZW5kQ29sb3JzdHI9JyVkJywgR3JhZGllbnRUeXBlPTApIixAc3RhcnRDb2xvcixAZW5kQ29sb3IpKTsgLy8gSUU5IGFuZCBkb3duCiAgfQogIC5kaXJlY3Rpb25hbCAoQHN0YXJ0Q29sb3I6ICM1NTUsIEBlbmRDb2xvcjogIzMzMywgQGRlZzogNDVkZWcpIHsKICAgIGJhY2tncm91bmQtY29sb3I6IEBlbmRDb2xvcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KEBkZWcsIEBzdGFydENvbG9yLCBAZW5kQ29sb3IpOyAvLyBGRiAzLjYrCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KEBkZWcsIEBzdGFydENvbG9yLCBAZW5kQ29sb3IpOyAvLyBJRTEwCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChAZGVnLCBAc3RhcnRDb2xvciwgQGVuZENvbG9yKTsgLy8gU2FmYXJpIDUuMSssIENocm9tZSAxMCsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChAZGVnLCBAc3RhcnRDb2xvciwgQGVuZENvbG9yKTsgLy8gT3BlcmEgMTEuMTAKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChAZGVnLCBAc3RhcnRDb2xvciwgQGVuZENvbG9yKTsgLy8gVGhlIHN0YW5kYXJkCiAgfQogIC52ZXJ0aWNhbC10aHJlZS1jb2xvcnMoQHN0YXJ0Q29sb3I6ICMwMGIzZWUsIEBtaWRDb2xvcjogIzdhNDNiNiwgQGNvbG9yU3RvcDogNTAlLCBAZW5kQ29sb3I6ICNjMzMyNWYpIHsKICAgIGJhY2tncm91bmQtY29sb3I6IEBlbmRDb2xvcjsKICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oQHN0YXJ0Q29sb3IpLCBjb2xvci1zdG9wKEBjb2xvclN0b3AsIEBtaWRDb2xvciksIHRvKEBlbmRDb2xvcikpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoQHN0YXJ0Q29sb3IsIEBtaWRDb2xvciBAY29sb3JTdG9wLCBAZW5kQ29sb3IpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCBAc3RhcnRDb2xvciwgQG1pZENvbG9yIEBjb2xvclN0b3AsIEBlbmRDb2xvcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KEBzdGFydENvbG9yLCBAbWlkQ29sb3IgQGNvbG9yU3RvcCwgQGVuZENvbG9yKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChAc3RhcnRDb2xvciwgQG1pZENvbG9yIEBjb2xvclN0b3AsIEBlbmRDb2xvcik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoQHN0YXJ0Q29sb3IsIEBtaWRDb2xvciBAY29sb3JTdG9wLCBAZW5kQ29sb3IpOwogICAgZmlsdGVyOiBlKCUoInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSclZCcsIGVuZENvbG9yc3RyPSclZCcsIEdyYWRpZW50VHlwZT0wKSIsQHN0YXJ0Q29sb3IsQGVuZENvbG9yKSk7IC8vIElFOSBhbmQgZG93biwgZ2V0cyBubyBjb2xvci1zdG9wIGF0IGFsbCBmb3IgcHJvcGVyIGZhbGxiYWNrCiAgfQp9CgovLyBSZXNldCBmaWx0ZXJzIGZvciBJRQoucmVzZXQtZmlsdGVyKCkgewogIGZpbHRlcjogZSglKCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZCA9IGZhbHNlKSIpKTsKfQoKLy8gT3BhY2l0eQoub3BhY2l0eShAb3BhY2l0eTogMTAwKSB7CiAgZmlsdGVyOiBlKCUoImFscGhhKG9wYWNpdHk9JWQpIiwgQG9wYWNpdHkpKTsKICAta2h0bWwtb3BhY2l0eTogQG9wYWNpdHkgLyAxMDA7CiAgICAtbW96LW9wYWNpdHk6IEBvcGFjaXR5IC8gMTAwOwogICAgICAgICBvcGFjaXR5OiBAb3BhY2l0eSAvIDEwMDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/patterns.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogUGF0dGVybnMubGVzcwogKiBSZXBlYXRhYmxlIFVJIGVsZW1lbnRzIG91dHNpZGUgdGhlIGJhc2Ugc3R5bGVzIHByb3ZpZGVkIGZyb20gdGhlIHNjYWZmb2xkaW5nCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCgovLyBUT1BCQVIKLy8gLS0tLS0tCgovLyBUb3BiYXIgZm9yIEJyYW5kaW5nIGFuZCBOYXYKLnRvcGJhciB7CiAgaGVpZ2h0OiA0MHB4OwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgbGVmdDogMDsKICByaWdodDogMDsKICB6LWluZGV4OiAxMDAwMDsKICBvdmVyZmxvdzogdmlzaWJsZTsKCiAgLy8gTGlua3MgZ2V0IHRleHQgc2hhZG93CiAgYSB7CiAgICBjb2xvcjogQGdyYXlMaWdodDsKICAgIHRleHQtc2hhZG93OiAwIC0xcHggMCByZ2JhKDAsMCwwLC4yNSk7CiAgfQoKICAvLyBIb3ZlciBhbmQgYWN0aXZlIHN0YXRlcwogIC8vIGgzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogIGgzIGE6aG92ZXIsCiAgLmJyYW5kOmhvdmVyLAogIHVsIC5hY3RpdmUgPiBhIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzM7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC4wNSk7CiAgICBjb2xvcjogQHdoaXRlOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgLy8gV2Vic2l0ZSBuYW1lCiAgLy8gaDMgbGVmdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICBoMyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgfQogIGgzIGEsCiAgLmJyYW5kIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiA4cHggMjBweCAxMnB4OwogICAgbWFyZ2luLWxlZnQ6IC0yMHB4OyAvLyBuZWdhdGl2ZSBpbmRlbnQgdG8gbGVmdC1hbGlnbiB0aGUgdGV4dCBkb3duIHRoZSBwYWdlCiAgICBjb2xvcjogQHdoaXRlOwogICAgZm9udC1zaXplOiAyMHB4OwogICAgZm9udC13ZWlnaHQ6IDIwMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogIH0KCiAgLy8gUGxhaW4gdGV4dCBpbiB0b3BiYXIKICBwIHsKICAgIG1hcmdpbjogMDsKICAgIGxpbmUtaGVpZ2h0OiA0MHB4OwogICAgYTpob3ZlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICBjb2xvcjogQHdoaXRlOwogICAgfQogIH0KCiAgLy8gU2VhcmNoIEZvcm0KICBmb3JtIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luOiA1cHggMCAwIDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAub3BhY2l0eSgxMDApOwogIH0KICAvLyBUb2RvOiByZW1vdmUgZnJvbSB2Mi4wIHdoZW4gcmVhZHksIGFkZGVkIGZvciBsZWdhY3kKICBmb3JtLnB1bGwtcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0OwogIH0KICBpbnB1dCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0OwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuMyk7CiAgICAjZm9udCA+IC5zYW5zLXNlcmlmKDEzcHgsIG5vcm1hbCwgMSk7CiAgICBwYWRkaW5nOiA0cHggOXB4OwogICAgY29sb3I6IEB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC43NSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMTExOwogICAgLmJvcmRlci1yYWRpdXMoNHB4KTsKICAgIEBzaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKSwgMCAxcHggMHB4IHJnYmEoMjU1LDI1NSwyNTUsLjI1KTsKICAgIC5ib3gtc2hhZG93KEBzaGFkb3cpOwogICAgLnRyYW5zaXRpb24obm9uZSk7CgogICAgLy8gUGxhY2Vob2xkZXIgdGV4dCBnZXRzIHNwZWNpYWwgc3R5bGVzOyBjYW4ndCBiZSBidW5kbGVkIHRvZ2V0aGVyIHRob3VnaCBmb3Igc29tZSByZWFzb24KICAgICY6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgIGNvbG9yOiBAZ3JheUxpZ2h0ZXI7CiAgICB9CiAgICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgY29sb3I6IEBncmF5TGlnaHRlcjsKICAgIH0KICAgIC8vIEhvdmVyIHN0YXRlcwogICAgJjpob3ZlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IEBncmF5TGlnaHQ7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjUpOwogICAgICBjb2xvcjogQHdoaXRlOwogICAgfQogICAgLy8gRm9jdXMgc3RhdGVzICh3ZSB1c2UgLmZvY3VzZWQgc2luY2UgSUU4IGFuZCBkb3duIGRvZXNuJ3Qgc3VwcG9ydCA6Zm9jdXMpCiAgICAmOmZvY3VzLAogICAgJi5mb2N1c2VkIHsKICAgICAgb3V0bGluZTogMDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQHdoaXRlOwogICAgICBjb2xvcjogQGdyYXlEYXJrOwogICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCBAd2hpdGU7CiAgICAgIGJvcmRlcjogMDsKICAgICAgcGFkZGluZzogNXB4IDEwcHg7CiAgICAgIC5ib3gtc2hhZG93KDAgMCAzcHggcmdiYSgwLDAsMCwuMTUpKTsKICAgIH0KICB9Cn0KCi8vIGdyYWRpZW50IGlzIGFwcGxpZWQgdG8gaXQncyBvd24gZWxlbWVudCBiZWNhdXNlIG92ZXJmbG93IHZpc2libGUgaXMgbm90IGhvbm9yZWQgYnkgaWUgd2hlbiBmaWx0ZXIgaXMgcHJlc2VudAovLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGluY2x1ZGUgLnRvcGJhciAuZmlsbAoudG9wYmFyLWlubmVyLAoudG9wYmFyIC5maWxsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOwogICNncmFkaWVudCA+IC52ZXJ0aWNhbCgjMzMzLCAjMjIyKTsKICBAc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLDAsMCwuMjUpLCBpbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLC4xKTsKICAuYm94LXNoYWRvdyhAc2hhZG93KTsKfQoKCi8vIE5BVklHQVRJT04KLy8gLS0tLS0tLS0tLQoKLy8gVG9wYmFyIE5hdgovLyB1bC5uYXYgZm9yIGFsbCB0b3BiYXIgYmFzZWQgbmF2aWdhdGlvbiB0byBhdm9pZCBpbmhlcml0YW5jZSBpc3N1ZXMgYW5kIG92ZXItc3BlY2lmaWNpdHkKLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBsZWF2ZSBpbiAudG9wYmFyIGRpdiA+IHVsCi50b3BiYXIgZGl2ID4gdWwsCi5uYXYgewogIGRpc3BsYXk6IGJsb2NrOwogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbjogMCAxMHB4IDAgMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbGVmdDogMDsKICA+IGxpIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZmxvYXQ6IGxlZnQ7CiAgfQogIGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmbG9hdDogbm9uZTsKICAgIHBhZGRpbmc6IDEwcHggMTBweCAxMXB4OwogICAgbGluZS1oZWlnaHQ6IDE5cHg7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAmOmhvdmVyIHsKICAgICAgY29sb3I6IEB3aGl0ZTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgfQogIH0KICAuYWN0aXZlID4gYSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuNSk7CiAgfQoKICAvLyBTZWNvbmRhcnkgKGZsb2F0ZWQgcmlnaHQpIG5hdiBpbiB0b3BiYXIKICAmLnNlY29uZGFyeS1uYXYgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7CiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogICAgLm1lbnUtZHJvcGRvd24sCiAgICAuZHJvcGRvd24tbWVudSB7CiAgICAgIHJpZ2h0OiAwOwogICAgICBib3JkZXI6IDA7CiAgICB9CiAgfQogIC8vIERyb3Bkb3ducyB3aXRoaW4gdGhlIC5uYXYKICAvLyBhLm1lbnU6aG92ZXIgYW5kIGxpLm9wZW4gLm1lbnUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgYS5tZW51OmhvdmVyLAogIGxpLm9wZW4gLm1lbnUsCiAgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciwKICAuZHJvcGRvd24ub3BlbiAuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJhY2tncm91bmQ6ICM0NDQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC4wNSk7CiAgfQogIC8vIC5tZW51LWRyb3Bkb3duIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogIC5tZW51LWRyb3Bkb3duLAogIC5kcm9wZG93bi1tZW51IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzM7CiAgICAvLyBhLm1lbnUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICBhLm1lbnUsCiAgICAuZHJvcGRvd24tdG9nZ2xlIHsKICAgICAgY29sb3I6IEB3aGl0ZTsKICAgICAgJi5vcGVuIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjNDQ0OwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsLjA1KTsKICAgICAgfQogICAgfQogICAgbGkgYSB7CiAgICAgIGNvbG9yOiAjOTk5OwogICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDAsMCwwLC41KTsKICAgICAgJjpob3ZlciB7CiAgICAgICAgI2dyYWRpZW50ID4gLnZlcnRpY2FsKCMyOTI5MjksIzE5MTkxOSk7CiAgICAgICAgY29sb3I6IEB3aGl0ZTsKICAgICAgfQogICAgfQogICAgLmFjdGl2ZSBhIHsKICAgICAgY29sb3I6IEB3aGl0ZTsKICAgIH0KICAgIC5kaXZpZGVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjsKICAgICAgYm9yZGVyLWNvbG9yOiAjNDQ0OwogICAgfQogIH0KfQoKLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggbmV3IGRyb3Bkb3ducywgcmVkZWNsYXJlIGRyb3Bkb3duIGxpbmsgcGFkZGluZwoudG9wYmFyIHVsIC5tZW51LWRyb3Bkb3duIGxpIGEsCi50b3BiYXIgdWwgLmRyb3Bkb3duLW1lbnUgbGkgYSB7CiAgcGFkZGluZzogNHB4IDE1cHg7Cn0KCi8vIERyb3Bkb3duIE1lbnVzCi8vIFVzZSB0aGUgLm1lbnUgY2xhc3Mgb24gYW55IDxsaT4gZWxlbWVudCB3aXRoaW4gdGhlIHRvcGJhciBvciB1bC50YWJzIGFuZCB5b3UnbGwgZ2V0IHNvbWUgc3VwZXJmYW5jeSBkcm9wZG93bnMKLy8gbGkubWVudSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKbGkubWVudSwKLmRyb3Bkb3duIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLy8gVGhlIGxpbmsgdGhhdCBpcyBjbGlja2VkIHRvIHRvZ2dsZSB0aGUgZHJvcGRvd24KLy8gYS5tZW51IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQphLm1lbnU6YWZ0ZXIsCi5kcm9wZG93bi10b2dnbGU6YWZ0ZXIgewogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgY29udGVudDogIiZkYXJyOyI7CiAgdGV4dC1pbmRlbnQ6IC05OTk5OXB4OwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgbWFyZ2luLXRvcDogOHB4OwogIG1hcmdpbi1sZWZ0OiA0cHg7CiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wOiA0cHggc29saWQgQHdoaXRlOwogIC5vcGFjaXR5KDUwKTsKfQovLyBUaGUgZHJvcGRvd24gbWVudSAodWwpCi8vIC5tZW51LWRyb3Bkb3duIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQoubWVudS1kcm9wZG93biwKLmRyb3Bkb3duLW1lbnUgewogIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTsKICBmbG9hdDogbGVmdDsKICBkaXNwbGF5OiBub25lOyAvLyBOb25lIGJ5IGRlZmF1bHQsIGJ1dCBibG9jayBvbiAib3BlbiIgb2YgdGhlIG1lbnUKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA0MHB4OwogIHotaW5kZXg6IDkwMDsKICBtaW4td2lkdGg6IDE2MHB4OwogIG1heC13aWR0aDogMjIwcHg7CiAgX3dpZHRoOiAxNjBweDsKICBtYXJnaW4tbGVmdDogMDsgLy8gb3ZlcnJpZGUgZGVmYXVsdCB1bCBzdHlsZXMKICBtYXJnaW4tcmlnaHQ6IDA7CiAgcGFkZGluZzogNnB4IDA7CiAgem9vbTogMTsgLy8gZG8gd2UgbmVlZCB0aGlzPwogIGJvcmRlci1jb2xvcjogIzk5OTsKICBib3JkZXItY29sb3I6IHJnYmEoMCwwLDAsLjIpOwogIGJvcmRlci1zdHlsZTogc29saWQ7CiAgYm9yZGVyLXdpZHRoOiAwIDFweCAxcHg7CiAgLmJvcmRlci1yYWRpdXMoMCAwIDZweCA2cHgpOwogIC5ib3gtc2hhZG93KDAgMnB4IDRweCByZ2JhKDAsMCwwLC4yKSk7CiAgLmJhY2tncm91bmQtY2xpcChwYWRkaW5nLWJveCk7CgogIC8vIFVuZmxvYXQgYW55IGxpJ3MgdG8gbWFrZSB0aGVtIHN0YWNrCiAgbGkgewogICAgZmxvYXQ6IG5vbmU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJhY2tncm91bmQtY29sb3I6IG5vbmU7CiAgfQogIC8vIERpdmlkZXJzIChiYXNpY2FsbHkgYW4gaHIpIHdpdGhpbiB0aGUgZHJvcGRvd24KICAuZGl2aWRlciB7CiAgICBoZWlnaHQ6IDFweDsKICAgIG1hcmdpbjogNXB4IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAd2hpdGU7CiAgfQp9CgoudG9wYmFyIC5kcm9wZG93bi1tZW51LAouZHJvcGRvd24tbWVudSB7CiAgLy8gTGlua3Mgd2l0aGluIHRoZSBkcm9wZG93biBtZW51CiAgYSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDRweCAxNXB4OwogICAgY2xlYXI6IGJvdGg7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IDE4cHg7CiAgICBjb2xvcjogQGdyYXk7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCBAd2hpdGU7CiAgICAvLyBIb3ZlciBzdGF0ZQogICAgJjpob3ZlciwKICAgICYuaG92ZXIgewogICAgICAjZ3JhZGllbnQgPiAudmVydGljYWwoI2VlZWVlZSwgI2RkZGRkZCk7CiAgICAgIGNvbG9yOiBAZ3JheURhcms7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgQHNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDAsMCwwLC4wMjUpLCBpbnNldCAwIC0xcHggcmdiYSgwLDAsMCwuMDI1KTsKICAgICAgLmJveC1zaGFkb3coQHNoYWRvdyk7CiAgICB9CiAgfQp9CgovLyBPcGVuIHN0YXRlIGZvciB0aGUgZHJvcGRvd24KLy8gLm9wZW4gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Ci5vcGVuLAouZHJvcGRvd24ub3BlbiB7CiAgLy8gLm1lbnUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgLm1lbnUsCiAgLmRyb3Bkb3duLXRvZ2dsZSB7CiAgICBjb2xvcjogQHdoaXRlOwogICAgYmFja2dyb3VuZDogI2NjYzsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjMpOwogIH0KICAvLyAubWVudS1kcm9wZG93biBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAubWVudS1kcm9wZG93biwKICAuZHJvcGRvd24tbWVudSB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9Cn0KCgovLyBUQUJTIEFORCBQSUxMUwovLyAtLS0tLS0tLS0tLS0tLQoKLy8gQ29tbW9uIHN0eWxlcwoudGFicywKLnBpbGxzIHsKICBtYXJnaW46IDAgMCBAYmFzZWxpbmU7CiAgcGFkZGluZzogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIC5jbGVhcmZpeCgpOwogID4gbGkgewogICAgZmxvYXQ6IGxlZnQ7CiAgICA+IGEgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICB9Cn0KCi8vIFRhYnMKLnRhYnMgewogIGJvcmRlci1jb2xvcjogI2RkZDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci13aWR0aDogMCAwIDFweDsKICA+IGxpIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLy8gRm9yIHRoZSBkcm9wZG93bnMgbW9zdGx5CiAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwogICAgPiBhIHsKICAgICAgcGFkZGluZzogMCAxNXB4OwogICAgICBtYXJnaW4tcmlnaHQ6IDJweDsKICAgICAgbGluZS1oZWlnaHQ6IChAYmFzZWxpbmUgKiAyKSAtIDI7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAuYm9yZGVyLXJhZGl1cyg0cHggNHB4IDAgMCk7CiAgICAgICY6aG92ZXIgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogICAgICAgIGJvcmRlci1jb2xvcjogI2VlZSAjZWVlICNkZGQ7CiAgICAgIH0KICAgIH0KICB9CiAgLy8gQWN0aXZlIHN0YXRlLCBhbmQgaXQncyA6aG92ZXIgdG8gb3ZlcnJpZGUgbm9ybWFsIDpob3ZlcgogIC5hY3RpdmUgPiBhLAogIC5hY3RpdmUgPiBhOmhvdmVyIHsKICAgIGNvbG9yOiBAZ3JheTsKICAgIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGN1cnNvcjogZGVmYXVsdDsKICB9Cn0KCi8vIERyb3Bkb3ducyBpbiB0YWJzCi50YWJzIHsKICAvLyBmaXJzdCBvbmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgLm1lbnUtZHJvcGRvd24sCiAgLmRyb3Bkb3duLW1lbnUgewogICAgdG9wOiAzNXB4OwogICAgYm9yZGVyLXdpZHRoOiAxcHg7CiAgICAuYm9yZGVyLXJhZGl1cygwIDZweCA2cHggNnB4KTsKICB9CiAgLy8gZmlyc3Qgb25lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogIGEubWVudTphZnRlciwKICAuZHJvcGRvd24tdG9nZ2xlOmFmdGVyIHsKICAgIGJvcmRlci10b3AtY29sb3I6ICM5OTk7CiAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgbWFyZ2luLWxlZnQ6IDVweDsKICB9CiAgLy8gZmlyc3Qgb25lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogIGxpLm9wZW4ubWVudSAubWVudSwKICAub3Blbi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIHsKICAgIGJvcmRlci1jb2xvcjogIzk5OTsKICB9CiAgLy8gZmlyc3Qgb25lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogIGxpLm9wZW4gYS5tZW51OmFmdGVyLAogIC5kcm9wZG93bi5vcGVuIC5kcm9wZG93bi10b2dnbGU6YWZ0ZXIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogIzU1NTsKICB9Cn0KCi8vIFBpbGxzCi5waWxscyB7CiAgYSB7CiAgICBtYXJnaW46IDVweCAzcHggNXB4IDA7CiAgICBwYWRkaW5nOiAwIDE1cHg7CiAgICBsaW5lLWhlaWdodDogMzBweDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggQHdoaXRlOwogICAgLmJvcmRlci1yYWRpdXMoMTVweCk7CiAgICAmOmhvdmVyIHsKICAgICAgY29sb3I6IEB3aGl0ZTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwwLDAsLjI1KTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGxpbmtDb2xvckhvdmVyOwogICAgfQogIH0KICAuYWN0aXZlIGEgewogICAgY29sb3I6IEB3aGl0ZTsKICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLDAsMCwuMjUpOwogICAgYmFja2dyb3VuZC1jb2xvcjogQGxpbmtDb2xvcjsKICB9Cn0KCi8vIFN0YWNrZWQgcGlsbHMKLnBpbGxzLXZlcnRpY2FsID4gbGkgewogIGZsb2F0OiBub25lOwp9CgovLyBUYWJiYWJsZSBhcmVhcwoudGFiLWNvbnRlbnQsCi5waWxsLWNvbnRlbnQgewp9Ci50YWItY29udGVudCA+IC50YWItcGFuZSwKLnBpbGwtY29udGVudCA+IC5waWxsLXBhbmUsCi50YWItY29udGVudCA+IGRpdiwKLnBpbGwtY29udGVudCA+IGRpdiB7CiAgZGlzcGxheTogbm9uZTsKfQoudGFiLWNvbnRlbnQgPiAuYWN0aXZlLAoucGlsbC1jb250ZW50ID4gLmFjdGl2ZSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCgovLyBCUkVBRENSVU1CUwovLyAtLS0tLS0tLS0tLQoKLmJyZWFkY3J1bWIgewogIHBhZGRpbmc6IDdweCAxNHB4OwogIG1hcmdpbjogMCAwIEBiYXNlbGluZTsKICAjZ3JhZGllbnQgPiAudmVydGljYWwoI2ZmZmZmZiwgI2Y1ZjVmNSk7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAuYm9yZGVyLXJhZGl1cygzcHgpOwogIC5ib3gtc2hhZG93KGluc2V0IDAgMXB4IDAgQHdoaXRlKTsKICBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCBAd2hpdGU7CiAgfQogIC5kaXZpZGVyIHsKICAgIHBhZGRpbmc6IDAgNXB4OwogICAgY29sb3I6IEBncmF5TGlnaHQ7CiAgfQogIC5hY3RpdmUgYSB7CiAgICBjb2xvcjogQGdyYXlEYXJrOwogIH0KfQoKCi8vIFBBR0UgSEVBREVSUwovLyAtLS0tLS0tLS0tLS0KCi5oZXJvLXVuaXQgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKICBwYWRkaW5nOiA2MHB4OwogIC5ib3JkZXItcmFkaXVzKDZweCk7CiAgaDEgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGZvbnQtc2l6ZTogNjBweDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgfQogIHAgewogICAgZm9udC1zaXplOiAxOHB4OwogICAgZm9udC13ZWlnaHQ6IDIwMDsKICAgIGxpbmUtaGVpZ2h0OiBAYmFzZWxpbmUgKiAxLjU7CiAgfQp9CmZvb3RlciB7CiAgbWFyZ2luLXRvcDogQGJhc2VsaW5lIC0gMTsKICBwYWRkaW5nLXRvcDogQGJhc2VsaW5lIC0gMTsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZTsKfQoKCi8vIFBBR0UgSEVBREVSUwovLyAtLS0tLS0tLS0tLS0KCi5wYWdlLWhlYWRlciB7CiAgbWFyZ2luLWJvdHRvbTogQGJhc2VsaW5lIC0gMTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKICAuYm94LXNoYWRvdygwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjUpKTsKICBoMSB7CiAgICBtYXJnaW4tYm90dG9tOiAoQGJhc2VsaW5lIC8gMikgLSAxcHg7CiAgfQp9CgoKLy8gQlVUVE9OIFNUWUxFUwovLyAtLS0tLS0tLS0tLS0tCgovLyBTaGFyZWQgY29sb3JzIGZvciBidXR0b25zIGFuZCBhbGVydHMKLmJ0biwKLmFsZXJ0LW1lc3NhZ2UgewogIC8vIFNldCB0ZXh0IGNvbG9yCiAgJi5kYW5nZXIsCiAgJi5kYW5nZXI6aG92ZXIsCiAgJi5lcnJvciwKICAmLmVycm9yOmhvdmVyLAogICYuc3VjY2VzcywKICAmLnN1Y2Nlc3M6aG92ZXIsCiAgJi5pbmZvLAogICYuaW5mbzpob3ZlciB7CiAgICBjb2xvcjogQHdoaXRlCiAgfQogIC8vIFNldHMgdGhlIGNsb3NlIGJ1dHRvbiB0byB0aGUgbWlkZGxlIG9mIG1lc3NhZ2UKICAuY2xvc2V7CiAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7CiAgICBsaW5lLWhlaWdodDogMThweDsKICB9CiAgLy8gRGFuZ2VyIGFuZCBlcnJvciBhcHBlYXIgYXMgcmVkCiAgJi5kYW5nZXIsCiAgJi5lcnJvciB7CiAgICAuZ3JhZGllbnRCYXIoI2VlNWY1YiwgI2M0M2MzNSk7CiAgfQogIC8vIFN1Y2Nlc3MgYXBwZWFycyBhcyBncmVlbgogICYuc3VjY2VzcyB7CiAgICAuZ3JhZGllbnRCYXIoIzYyYzQ2MiwgIzU3YTk1Nyk7CiAgfQogIC8vIEluZm8gYXBwZWFycyBhcyBhIG5ldXRyYWwgYmx1ZQogICYuaW5mbyB7CiAgICAuZ3JhZGllbnRCYXIoIzViYzBkZSwgIzMzOWJiOSk7CiAgfQp9CgovLyBCYXNlIC5idG4gc3R5bGVzCi5idG4gewogIC8vIEJ1dHRvbiBCYXNlCiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAjZ3JhZGllbnQgPiAudmVydGljYWwtdGhyZWUtY29sb3JzKCNmZmZmZmYsICNmZmZmZmYsIDI1JSwgZGFya2VuKCNmZmZmZmYsIDEwJSkpOyAvLyBEb24ndCB1c2UgLmdyYWRpZW50YmFyKCkgaGVyZSBzaW5jZSBpdCBkb2VzIGEgdGhyZWUtY29sb3IgZ3JhZGllbnQKICBwYWRkaW5nOiA1cHggMTRweCA2cHg7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDI1NSwyNTUsMjU1LC43NSk7CiAgY29sb3I6ICMzMzM7CiAgZm9udC1zaXplOiBAYmFzZWZvbnQ7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGJvcmRlci1ib3R0b20tY29sb3I6ICNiYmI7CiAgLmJvcmRlci1yYWRpdXMoNHB4KTsKICBAc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjIpLCAwIDFweCAycHggcmdiYSgwLDAsMCwuMDUpOwogIC5ib3gtc2hhZG93KEBzaGFkb3cpOwoKICAmOmhvdmVyIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7CiAgICBjb2xvcjogIzMzMzsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB9CgogIC8vIEZvY3VzIHN0YXRlIGZvciBrZXlib2FyZCBhbmQgYWNjZXNzaWJpbGl0eQogICY6Zm9jdXMgewogICAgb3V0bGluZTogMXB4IGRvdHRlZCAjNjY2OwogIH0KCiAgLy8gUHJpbWFyeSBCdXR0b24gVHlwZQogICYucHJpbWFyeSB7CiAgICBjb2xvcjogQHdoaXRlOwogICAgLmdyYWRpZW50QmFyKEBibHVlLCBAYmx1ZURhcmspCiAgfQoKICAgLy8gVHJhbnNpdGlvbnMKICAudHJhbnNpdGlvbiguMXMgbGluZWFyIGFsbCk7CgogIC8vIEFjdGl2ZSBhbmQgRGlzYWJsZWQgc3RhdGVzCiAgJi5hY3RpdmUsCiAgOmFjdGl2ZSB7CiAgICBAc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwuMjUpLCAwIDFweCAycHggcmdiYSgwLDAsMCwuMDUpOwogICAgLmJveC1zaGFkb3coQHNoYWRvdyk7CiAgfQogICYuZGlzYWJsZWQgewogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgIC5yZXNldC1maWx0ZXIoKTsKICAgIC5vcGFjaXR5KDY1KTsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwogIH0KICAmW2Rpc2FibGVkXSB7CiAgICAvLyBkaXNhYmxlZCBwc2V1ZG8gY2FuJ3QgYmUgaW5jbHVkZWQgd2l0aCAuZGlzYWJsZWQKICAgIC8vIGRlZiBiZWNhdXNlIElFOCBhbmQgYmVsb3cgd2lsbCBkcm9wIGl0IDtfOwogICAgY3Vyc29yOiBkZWZhdWx0OwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgIC5yZXNldC1maWx0ZXIoKTsKICAgIC5vcGFjaXR5KDY1KTsKICAgIC5ib3gtc2hhZG93KG5vbmUpOwogIH0KCiAgLy8gQnV0dG9uIFNpemVzCiAgJi5sYXJnZSB7CiAgICBmb250LXNpemU6IEBiYXNlZm9udCArIDJweDsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICBwYWRkaW5nOiA5cHggMTRweCA5cHg7CiAgICAuYm9yZGVyLXJhZGl1cyg2cHgpOwogIH0KICAmLnNtYWxsIHsKICAgIHBhZGRpbmc6IDdweCA5cHggN3B4OwogICAgZm9udC1zaXplOiBAYmFzZWZvbnQgLSAycHg7CiAgfQp9Ci8vIFN1cGVyIGphbmsgaGFjayBmb3IgcmVtb3ZpbmcgYm9yZGVyLXJhZGl1cyBmcm9tIElFOSBzbyB3ZSBjYW4ga2VlcCBmaWx0ZXIgZ3JhZGllbnRzIG9uIGFsZXJ0cyBhbmQgYnV0dG9ucwo6cm9vdCAuYWxlcnQtbWVzc2FnZSwKOnJvb3QgLmJ0biB7CiAgYm9yZGVyLXJhZGl1czogMCBcMDsKfQoKLy8gSGVscCBGaXJlZm94IG5vdCBiZSBhIGplcmsgYWJvdXQgYWRkaW5nIGV4dHJhIHBhZGRpbmcgdG8gYnV0dG9ucwpidXR0b24uYnRuLAppbnB1dFt0eXBlPXN1Ym1pdF0uYnRuIHsKICAmOjotbW96LWZvY3VzLWlubmVyIHsKICAJcGFkZGluZzogMDsKICAJYm9yZGVyOiAwOwogIH0KfQoKCi8vIENMT1NFIElDT05TCi8vIC0tLS0tLS0tLS0tCi5jbG9zZSB7CiAgZmxvYXQ6IHJpZ2h0OwogIGNvbG9yOiBAYmxhY2s7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiBAYmFzZWxpbmUgKiAuNzU7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwxKTsKICAub3BhY2l0eSgyNSk7CiAgJjpob3ZlciB7CiAgICBjb2xvcjogQGJsYWNrOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgLm9wYWNpdHkoNDApOwogIH0KfQoKCi8vIEVSUk9SIFNUWUxFUwovLyAtLS0tLS0tLS0tLS0KCi8vIEJhc2UgYWxlcnQgc3R5bGVzCi5hbGVydC1tZXNzYWdlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogN3B4IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogQGJhc2VsaW5lOwogIGNvbG9yOiBAZ3JheURhcms7CiAgLmdyYWRpZW50QmFyKCNmY2VlYzEsICNlZWRjOTQpOyAvLyB3YXJuaW5nIGJ5IGRlZmF1bHQKICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC41KTsKICBib3JkZXItd2lkdGg6IDFweDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIC5ib3JkZXItcmFkaXVzKDRweCk7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4yNSkpOwoKICAvLyBBZGp1c3QgY2xvc2UgaWNvbgogIC5jbG9zZSB7CiAgICBtYXJnaW4tdG9wOiAxcHg7CiAgICAqbWFyZ2luLXRvcDogMDsgLy8gRm9yIElFNwogIH0KCiAgLy8gTWFrZSBsaW5rcyBzYW1lIGNvbG9yIGFzIHRleHQgYW5kIHN0YW5kIG91dCBtb3JlCiAgYSB7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGNvbG9yOiBAZ3JheURhcms7CiAgfQogICYuZGFuZ2VyIHAgYSwKICAmLmVycm9yIHAgYSwKICAmLnN1Y2Nlc3MgcCBhLAogICYuaW5mbyBwIGEgewogICAgY29sb3I6IEB3aGl0ZTsKICB9CgogIC8vIFJlbW92ZSBleHRyYSBtYXJnaW4gZnJvbSBjb250ZW50CiAgaDUgewogICAgbGluZS1oZWlnaHQ6IEBiYXNlbGluZTsKICB9CiAgcCB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICBkaXYgewogICAgbWFyZ2luLXRvcDogNXB4OwogICAgbWFyZ2luLWJvdHRvbTogMnB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgfQogIC5idG4gewogICAgLy8gUHJvdmlkZSBhY3Rpb25zIHdpdGggYnV0dG9ucwogICAgLmJveC1zaGFkb3coMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4yNSkpOwogIH0KCiAgJi5ibG9jay1tZXNzYWdlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCNmY2VlYzEsIDUlKTsKICAgIC5yZXNldC1maWx0ZXIoKTsKICAgIHBhZGRpbmc6IDE0cHg7CiAgICBib3JkZXItY29sb3I6ICNmY2VlYzE7CiAgICAuYm94LXNoYWRvdyhub25lKTsKICAgIHVsLCBwIHsKICAgICAgbWFyZ2luLXJpZ2h0OiAzMHB4OwogICAgfQogICAgdWwgewogICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgfQogICAgbGkgewogICAgICBjb2xvcjogQGdyYXlEYXJrOwogICAgfQogICAgLmFsZXJ0LWFjdGlvbnMgewogICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICB9CiAgICAmLmVycm9yLAogICAgJi5zdWNjZXNzLAogICAgJi5pbmZvIHsKICAgICAgY29sb3I6IEBncmF5RGFyazsKICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuNSk7CiAgICB9CiAgICAmLmVycm9yIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigjZjU2YTY2LCAyNSUpOwogICAgICBib3JkZXItY29sb3I6IGxpZ2h0ZW4oI2Y1NmE2NiwgMjAlKTsKICAgIH0KICAgICYuc3VjY2VzcyB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oIzYyYzQ2MiwgMzAlKTsKICAgICAgYm9yZGVyLWNvbG9yOiBsaWdodGVuKCM2MmM0NjIsIDI1JSk7CiAgICB9CiAgICAmLmluZm8gewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCM2YmQwZWUsIDI1JSk7CiAgICAgIGJvcmRlci1jb2xvcjogbGlnaHRlbigjNmJkMGVlLCAyMCUpOwogICAgfQogICAgLy8gQ2hhbmdlIGxpbmsgY29sb3IgYmFjawogICAgJi5kYW5nZXIgcCBhLAogICAgJi5lcnJvciBwIGEsCiAgICAmLnN1Y2Nlc3MgcCBhLAogICAgJi5pbmZvIHAgYSB7CiAgICAgIGNvbG9yOiBAZ3JheURhcms7CiAgICB9CgogIH0KfQoKCi8vIFBBR0lOQVRJT04KLy8gLS0tLS0tLS0tLQoKLnBhZ2luYXRpb24gewogIGhlaWdodDogQGJhc2VsaW5lICogMjsKICBtYXJnaW46IEBiYXNlbGluZSAwOwogIHVsIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luOiAwOwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KTsKICAgIC5ib3JkZXItcmFkaXVzKDNweCk7CiAgICAuYm94LXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwuMDUpKTsKICB9CiAgbGkgewogICAgZGlzcGxheTogaW5saW5lOwogIH0KICBhIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZzogMCAxNHB4OwogICAgbGluZS1oZWlnaHQ6IChAYmFzZWxpbmUgKiAyKSAtIDI7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogI2RkZDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLDAsMCwuMTUpOwogICAgKmJvcmRlci1yaWdodC1jb2xvcjogI2RkZDsgLyogSUU2LTcgKi8KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB9CiAgYTpob3ZlciwKICAuYWN0aXZlIGEgewogICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbihAYmx1ZSwgNDUlKTsKICB9CiAgLmRpc2FibGVkIGEsCiAgLmRpc2FibGVkIGE6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBjb2xvcjogQGdyYXlMaWdodDsKICB9CiAgLm5leHQgYSB7CiAgICBib3JkZXI6IDA7CiAgfQp9CgoKLy8gV0VMTFMKLy8gLS0tLS0KCi53ZWxsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgcGFkZGluZzogMTlweDsKICBtaW4taGVpZ2h0OiAyMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwuMDUpOwogIC5ib3JkZXItcmFkaXVzKDRweCk7CiAgLmJveC1zaGFkb3coaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KSk7CiAgYmxvY2txdW90ZSB7CiAgICBib3JkZXItY29sb3I6ICNkZGQ7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwwLDAsLjE1KTsKICB9Cn0KCgovLyBNT0RBTFMKLy8gLS0tLS0tCgoubW9kYWwtYmFja2Ryb3AgewogIGJhY2tncm91bmQtY29sb3I6IEBibGFjazsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIHotaW5kZXg6IDEwMDAwOwogIC8vIEZhZGUgZm9yIGJhY2tkcm9wCiAgJi5mYWRlIHsgb3BhY2l0eTogMDsgfQp9CgoubW9kYWwtYmFja2Ryb3AsCi5tb2RhbC1iYWNrZHJvcC5mYWRlLmluIHsKICAub3BhY2l0eSg4MCk7Cn0KCi5tb2RhbCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogNTAlOwogIGxlZnQ6IDUwJTsKICB6LWluZGV4OiAxMTAwMDsKICB3aWR0aDogNTYwcHg7CiAgbWFyZ2luOiAtMjUwcHggMCAwIC0yODBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7CiAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4zKTsKICAqYm9yZGVyOiAxcHggc29saWQgIzk5OTsgLyogSUU2LTcgKi8KICAuYm9yZGVyLXJhZGl1cyg2cHgpOwogIC5ib3gtc2hhZG93KDAgM3B4IDdweCByZ2JhKDAsMCwwLDAuMykpOwogIC5iYWNrZ3JvdW5kLWNsaXAocGFkZGluZy1ib3gpOwogIC5jbG9zZSB7IG1hcmdpbi10b3A6IDdweDsgfQogICYuZmFkZSB7CiAgICAudHJhbnNpdGlvbihlKCdvcGFjaXR5IC4zcyBsaW5lYXIsIHRvcCAuM3MgZWFzZS1vdXQnKSk7CiAgICB0b3A6IC0yNSU7CiAgfQogICYuZmFkZS5pbiB7IHRvcDogNTAlOyB9Cn0KLm1vZGFsLWhlYWRlciB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7CiAgcGFkZGluZzogNXB4IDE1cHg7Cn0KLm1vZGFsLWJvZHkgewogIHBhZGRpbmc6IDE1cHg7Cn0KLm1vZGFsLWJvZHkgZm9ybSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoubW9kYWwtZm9vdGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIHBhZGRpbmc6IDE0cHggMTVweCAxNXB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwogIC5ib3JkZXItcmFkaXVzKDAgMCA2cHggNnB4KTsKICAuYm94LXNoYWRvdyhpbnNldCAwIDFweCAwIEB3aGl0ZSk7CiAgLmNsZWFyZml4KCk7CiAgbWFyZ2luLWJvdHRvbTogMDsKICAuYnRuIHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgfQp9CgovLyBGaXggdGhlIHN0YWNraW5nIG9mIHRoZXNlIGNvbXBvbmVudHMgd2hlbiBpbiBtb2RhbHMKLm1vZGFsIC5wb3BvdmVyLAoubW9kYWwgLnR3aXBzeSB7CiAgei1pbmRleDogMTIwMDA7Cn0KCgovLyBQT1BPVkVSIEFSUk9XUwovLyAtLS0tLS0tLS0tLS0tLQoKI3BvcG92ZXJBcnJvdyB7CiAgLmFib3ZlKEBhcnJvd1dpZHRoOiA1cHgpIHsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAtQGFycm93V2lkdGg7CiAgICBib3JkZXItbGVmdDogQGFycm93V2lkdGggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmlnaHQ6IEBhcnJvd1dpZHRoIHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXRvcDogQGFycm93V2lkdGggc29saWQgQGJsYWNrOwogIH0KICAubGVmdChAYXJyb3dXaWR0aDogNXB4KSB7CiAgICB0b3A6IDUwJTsKICAgIHJpZ2h0OiAwOwogICAgbWFyZ2luLXRvcDogLUBhcnJvd1dpZHRoOwogICAgYm9yZGVyLXRvcDogQGFycm93V2lkdGggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tOiBAYXJyb3dXaWR0aCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1sZWZ0OiBAYXJyb3dXaWR0aCBzb2xpZCBAYmxhY2s7CiAgfQogIC5iZWxvdyhAYXJyb3dXaWR0aDogNXB4KSB7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiA1MCU7CiAgICBtYXJnaW4tbGVmdDogLUBhcnJvd1dpZHRoOwogICAgYm9yZGVyLWxlZnQ6IEBhcnJvd1dpZHRoIHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLXJpZ2h0OiBAYXJyb3dXaWR0aCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1ib3R0b206IEBhcnJvd1dpZHRoIHNvbGlkIEBibGFjazsKICB9CiAgLnJpZ2h0KEBhcnJvd1dpZHRoOiA1cHgpIHsKICAgIHRvcDogNTAlOwogICAgbGVmdDogMDsKICAgIG1hcmdpbi10b3A6IC1AYXJyb3dXaWR0aDsKICAgIGJvcmRlci10b3A6IEBhcnJvd1dpZHRoIHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWJvdHRvbTogQGFycm93V2lkdGggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmlnaHQ6IEBhcnJvd1dpZHRoIHNvbGlkIEBibGFjazsKICB9Cn0KCi8vIFRXSVBTWQovLyAtLS0tLS0KCi50d2lwc3kgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIHBhZGRpbmc6IDVweDsKICBmb250LXNpemU6IDExcHg7CiAgei1pbmRleDogMTAwMDsKICAub3BhY2l0eSg4MCk7CiAgJi5mYWRlLmluIHsKICAgIC5vcGFjaXR5KDgwKTsKICB9CiAgJi5hYm92ZSAudHdpcHN5LWFycm93ICAgeyAjcG9wb3ZlckFycm93ID4gLmFib3ZlKCk7IH0KICAmLmxlZnQgLnR3aXBzeS1hcnJvdyAgICB7ICNwb3BvdmVyQXJyb3cgPiAubGVmdCgpOyB9CiAgJi5iZWxvdyAudHdpcHN5LWFycm93ICAgeyAjcG9wb3ZlckFycm93ID4gLmJlbG93KCk7IH0KICAmLnJpZ2h0IC50d2lwc3ktYXJyb3cgICB7ICNwb3BvdmVyQXJyb3cgPiAucmlnaHQoKTsgfQp9Ci50d2lwc3ktaW5uZXIgewogIHBhZGRpbmc6IDNweCA4cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogQGJsYWNrOwogIGNvbG9yOiB3aGl0ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWF4LXdpZHRoOiAyMDBweDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgLmJvcmRlci1yYWRpdXMoNHB4KTsKfQoudHdpcHN5LWFycm93IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwp9CgoKLy8gUE9QT1ZFUlMKLy8gLS0tLS0tLS0KCi5wb3BvdmVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAwMDsKICBwYWRkaW5nOiA1cHg7CiAgZGlzcGxheTogbm9uZTsKICAmLmFib3ZlIC5hcnJvdyB7ICNwb3BvdmVyQXJyb3cgPiAuYWJvdmUoKTsgfQogICYucmlnaHQgLmFycm93IHsgI3BvcG92ZXJBcnJvdyA+IC5yaWdodCgpOyB9CiAgJi5iZWxvdyAuYXJyb3cgeyAjcG9wb3ZlckFycm93ID4gLmJlbG93KCk7IH0KICAmLmxlZnQgLmFycm93ICB7ICNwb3BvdmVyQXJyb3cgPiAubGVmdCgpOyB9CiAgLmFycm93IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAwOwogICAgaGVpZ2h0OiAwOwogIH0KICAuaW5uZXIgewogICAgYmFja2dyb3VuZDogQGJsYWNrOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuOCk7CiAgICBwYWRkaW5nOiAzcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2lkdGg6IDI4MHB4OwogICAgLmJvcmRlci1yYWRpdXMoNnB4KTsKICAgIC5ib3gtc2hhZG93KDAgM3B4IDdweCByZ2JhKDAsMCwwLDAuMykpOwogIH0KICAudGl0bGUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIHBhZGRpbmc6IDlweCAxNXB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICAuYm9yZGVyLXJhZGl1cygzcHggM3B4IDAgMCk7CiAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVlOwogIH0KICAuY29udGVudCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAd2hpdGU7CiAgICBwYWRkaW5nOiAxNHB4OwogICAgLmJvcmRlci1yYWRpdXMoMCAwIDNweCAzcHgpOwogICAgLmJhY2tncm91bmQtY2xpcChwYWRkaW5nLWJveCk7CiAgICBwLCB1bCwgb2wgewogICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgfQogIH0KfQoKCi8vIFBBVFRFUk4gQU5JTUFUSU9OUwovLyAtLS0tLS0tLS0tLS0tLS0tLS0KCi5mYWRlIHsKICAudHJhbnNpdGlvbihvcGFjaXR5IC4xNXMgbGluZWFyKTsKICBvcGFjaXR5OiAwOwogICYuaW4gewogICAgb3BhY2l0eTogMTsKICB9Cn0KCgovLyBMQUJFTFMKLy8gLS0tLS0tCgoubGFiZWwgewogIHBhZGRpbmc6IDFweCAzcHggMnB4OwogIGZvbnQtc2l6ZTogQGJhc2Vmb250ICogLjc1OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGNvbG9yOiBAd2hpdGU7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJhY2tncm91bmQtY29sb3I6IEBncmF5TGlnaHQ7CiAgLmJvcmRlci1yYWRpdXMoM3B4KTsKICAmLmltcG9ydGFudCB7IGJhY2tncm91bmQtY29sb3I6ICNjNDNjMzU7IH0KICAmLndhcm5pbmcgICB7IGJhY2tncm91bmQtY29sb3I6IEBvcmFuZ2U7IH0KICAmLnN1Y2Nlc3MgICB7IGJhY2tncm91bmQtY29sb3I6IEBncmVlbjsgfQogICYubm90aWNlICAgIHsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbihAYmx1ZSwgMjUlKTsgfQp9CgoKLy8gTUVESUEgR1JJRFMKLy8gLS0tLS0tLS0tLS0KCi5tZWRpYS1ncmlkIHsKICBtYXJnaW4tbGVmdDogLUBncmlkR3V0dGVyV2lkdGg7CiAgbWFyZ2luLWJvdHRvbTogMDsKICAuY2xlYXJmaXgoKTsKICBsaSB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgfQogIGEgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nOiA0cHg7CiAgICBtYXJnaW46IDAgMCBAYmFzZWxpbmUgQGdyaWRHdXR0ZXJXaWR0aDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICAuYm9yZGVyLXJhZGl1cyg0cHgpOwogICAgLmJveC1zaGFkb3coMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSkpOwogICAgaW1nIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAmOmhvdmVyIHsKICAgICAgYm9yZGVyLWNvbG9yOiBAbGlua0NvbG9yOwogICAgICAuYm94LXNoYWRvdygwIDFweCA0cHggcmdiYSgwLDEwNSwyMTQsLjI1KSk7CiAgICB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/reset.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogUmVzZXQubGVzcwogKiBQcm9wcyB0byBFcmljIE1leWVyIChtZXllcndlYi5jb20pIGZvciBoaXMgQ1NTIHJlc2V0IGZpbGUuIFdlJ3JlIHVzaW5nIGFuIGFkYXB0ZWQgdmVyc2lvbiBoZXJlCXRoYXQgY3V0cyBvdXQgc29tZSBvZiB0aGUgcmVzZXQgSFRNTCBlbGVtZW50cyB3ZSB3aWxsIG5ldmVyIG5lZWQgaGVyZSAoaS5lLiwgZGZuLCBzYW1wLCBldGMpLgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgoKLy8gRVJJQyBNRVlFUiBSRVNFVAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaHRtbCwgYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgaW1nLCBxLCBzLCBzYW1wLCBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBkZCwgZGwsIGR0LCBsaSwgb2wsIHVsLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCwgYnV0dG9uLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyBmb250LXdlaWdodDogbm9ybWFsOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtc2l6ZTogMTAwJTsgbGluZS1oZWlnaHQ6IDE7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyB9CnRhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgYm9yZGVyLXNwYWNpbmc6IDA7IH0Kb2wsIHVsIHsgbGlzdC1zdHlsZTogbm9uZTsgfQpxOmJlZm9yZSwgcTphZnRlciwgYmxvY2txdW90ZTpiZWZvcmUsIGJsb2NrcXVvdGU6YWZ0ZXIgeyBjb250ZW50OiAiIjsgfQoKCi8vIE5vcm1hbGl6ZS5jc3MKLy8gUHVsbGluZyBpbiBzZWxlY3QgcmVzZXRzIGZvcm0gdGhlIG5vcm1hbGl6ZS5jc3MgcHJvamVjdAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gRGlzcGxheSBpbiBJRTYtOSBhbmQgRkYzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gU291cmNlOiBodHRwOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MKaHRtbCB7CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwogIGZvbnQtc2l6ZTogMTAwJTsKICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwp9Ci8vIEZvY3VzIHN0YXRlcwphOmZvY3VzIHsKICBvdXRsaW5lOiB0aGluIGRvdHRlZDsKfQovLyBIb3ZlciAmIEFjdGl2ZQphOmhvdmVyLAphOmFjdGl2ZSB7CiAgb3V0bGluZTogMDsKfQoKLy8gRGlzcGxheSBpbiBJRTYtOSBhbmQgRkYzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gU291cmNlOiBodHRwOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MKYXJ0aWNsZSwKYXNpZGUsCmRldGFpbHMsCmZpZ2NhcHRpb24sCmZpZ3VyZSwKZm9vdGVyLApoZWFkZXIsCmhncm91cCwKbmF2LApzZWN0aW9uIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLy8gRGlzcGxheSBibG9jayBpbiBJRTYtOSBhbmQgRkYzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gU291cmNlOiBodHRwOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MKYXVkaW8sCmNhbnZhcywKdmlkZW8gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAqZGlzcGxheTogaW5saW5lOwogICp6b29tOiAxOwp9CgovLyBQcmV2ZW50cyBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nICdhdWRpbycgd2l0aG91dCBjb250cm9scwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFNvdXJjZTogaHR0cDovL2dpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzCmF1ZGlvOm5vdChbY29udHJvbHNdKSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgovLyBQcmV2ZW50cyBzdWIgYW5kIHN1cCBhZmZlY3RpbmcgbGluZS1oZWlnaHQgaW4gYWxsIGJyb3dzZXJzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gU291cmNlOiBodHRwOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MKc3ViLApzdXAgewogIGZvbnQtc2l6ZTogNzUlOwogIGxpbmUtaGVpZ2h0OiAwOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0Kc3VwIHsKICB0b3A6IC0wLjVlbTsKfQpzdWIgewogIGJvdHRvbTogLTAuMjVlbTsKfQoKLy8gSW1nIGJvcmRlciBpbiBhJ3MgYW5kIGltYWdlIHF1YWxpdHkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTb3VyY2U6IGh0dHA6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcwppbWcgewogICAgYm9yZGVyOiAwOwogICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsKfQoKLy8gRm9ybXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTb3VyY2U6IGh0dHA6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcwoKLy8gRm9udCBzaXplIGluIGFsbCBicm93c2VycywgbWFyZ2luIGNoYW5nZXMsIG1pc2MgY29uc2lzdGVuY3kKYnV0dG9uLAppbnB1dCwKc2VsZWN0LAp0ZXh0YXJlYSB7CiAgZm9udC1zaXplOiAxMDAlOwogIG1hcmdpbjogMDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgKnZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KYnV0dG9uLAppbnB1dCB7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgLy8gRkYzLzQgaGF2ZSAhaW1wb3J0YW50IG9uIGxpbmUtaGVpZ2h0IGluIFVBIHN0eWxlc2hlZXQKICAqb3ZlcmZsb3c6IHZpc2libGU7IC8vIElubmVyIHNwYWNpbmcgaWUgSUU2LzcKfQpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsCmlucHV0OjotbW96LWZvY3VzLWlubmVyIHsgLy8gSW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIG9kZGl0aWVzIGluIEZGMy80CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7Cn0KYnV0dG9uLAppbnB1dFt0eXBlPSJidXR0b24iXSwKaW5wdXRbdHlwZT0icmVzZXQiXSwKaW5wdXRbdHlwZT0ic3VibWl0Il0gewogIGN1cnNvcjogcG9pbnRlcjsgLy8gQ3Vyc29ycyBvbiBhbGwgYnV0dG9ucyBhcHBsaWVkIGNvbnNpc3RlbnRseQogIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyBTdHlsZSBjbGljYWJsZSBpbnB1dHMgaW4gaU9TCn0KaW5wdXRbdHlwZT0ic2VhcmNoIl0geyAvLyBBcHBlYXJhbmNlIGluIFNhZmFyaS9DaHJvbWUKICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsKICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvLyBJbm5lci1wYWRkaW5nIGlzc3VlcyBpbiBDaHJvbWUgT1NYLCBTYWZhcmkgNQp9CnRleHRhcmVhIHsKICBvdmVyZmxvdzogYXV0bzsgLy8gUmVtb3ZlIHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRTYtOQogIHZlcnRpY2FsLWFsaWduOiB0b3A7IC8vIFJlYWRhYmlsaXR5IGFuZCBhbGlnbm1lbnQgY3Jvc3MtYnJvd3Nlcgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/scaffolding.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogU2NhZmZvbGRpbmcKICogQmFzaWMgYW5kIGdsb2JhbCBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIHN5c3RlbSwgc3RydWN0dXJhbCBsYXlvdXQsIGFuZCBwYWdlIHRlbXBsYXRlcwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgoKLy8gU1RSVUNUVVJBTCBMQVlPVVQKLy8gLS0tLS0tLS0tLS0tLS0tLS0KCmJvZHkgewogIGJhY2tncm91bmQtY29sb3I6IEB3aGl0ZTsKICBtYXJnaW46IDA7CiAgI2ZvbnQgPiAuc2Fucy1zZXJpZihub3JtYWwsQGJhc2Vmb250LEBiYXNlbGluZSk7CiAgY29sb3I6IEBncmF5RGFyazsKfQoKLy8gQ29udGFpbmVyIChjZW50ZXJlZCwgZml4ZWQtd2lkdGggbGF5b3V0cykKLmNvbnRhaW5lciB7CiAgLmZpeGVkLWNvbnRhaW5lcigpOwp9CgovLyBGbHVpZCBsYXlvdXRzIChsZWZ0IGFsaWduZWQsIHdpdGggc2lkZWJhciwgbWluLSAmIG1heC13aWR0aCBjb250ZW50KQouY29udGFpbmVyLWZsdWlkIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWluLXdpZHRoOiA5NDBweDsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgcGFkZGluZy1yaWdodDogMjBweDsKICAuY2xlYXJmaXgoKTsKICA+IC5zaWRlYmFyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDIwcHg7CiAgICB3aWR0aDogMjIwcHg7CiAgfQogIC8vIFRPRE8gaW4gdjI6IHJlbmFtZSB0aGlzIGFuZCAucG9wb3ZlciAuY29udGVudCB0byBiZSBtb3JlIHNwZWNpZmljCiAgPiAuY29udGVudCB7CiAgICBtYXJnaW4tbGVmdDogMjQwcHg7CiAgfQp9CgoKLy8gQkFTRSBTVFlMRVMKLy8gLS0tLS0tLS0tLS0KCi8vIExpbmtzCmEgewogIGNvbG9yOiBAbGlua0NvbG9yOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICBmb250LXdlaWdodDogaW5oZXJpdDsKICAmOmhvdmVyIHsKICAgIGNvbG9yOiBAbGlua0NvbG9ySG92ZXI7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB9Cn0KCi8vIFF1aWNrIGZsb2F0cwoucHVsbC1yaWdodCB7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci5wdWxsLWxlZnQgewogIGZsb2F0OiBsZWZ0Owp9CgovLyBUb2dnbGluZyBjb250ZW50Ci5oaWRlIHsKICBkaXNwbGF5OiBub25lOwp9Ci5zaG93IHsKICBkaXNwbGF5OiBibG9jazsKfQoKCi8vIEdSSUQgU1lTVEVNCi8vIC0tLS0tLS0tLS0tCi8vIFRvIGN1c3RvbWl6ZSB0aGUgZ3JpZCBzeXN0ZW0sIGJyaW5nIHVwIHRoZSB2YXJpYWJsZXMubGVzcyBmaWxlIGFuZCBjaGFuZ2UgdGhlIGNvbHVtbiBjb3VudCwgc2l6ZSwgYW5kIGd1dHRlciB0aGVyZQoKLnJvdyB7CiAgLmNsZWFyZml4KCk7CiAgbWFyZ2luLWxlZnQ6IC1AZ3JpZEd1dHRlcldpZHRoOwp9CgovLyBGaW5kIGFsbCAuc3BhbiMgY2xhc3NlcyB3aXRoaW4gLnJvdyBhbmQgZ2l2ZSB0aGVtIHRoZSBuZWNlc3NhcnkgcHJvcGVydGllcyBmb3IgZ3JpZCBjb2x1bW5zIChzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXJzIGJhY2sgdG8gSUU3KQovLyBDcmVkaXQgdG8gQGRoZyBmb3IgdGhlIGlkZWEKLnJvdyA+IFtjbGFzcyo9InNwYW4iXSB7CiAgLmdyaWRDb2x1bW4oKTsKfQoKLy8gRGVmYXVsdCBjb2x1bW5zCi5zcGFuMSAgICAgeyAuY29sdW1ucygxKTsgfQouc3BhbjIgICAgIHsgLmNvbHVtbnMoMik7IH0KLnNwYW4zICAgICB7IC5jb2x1bW5zKDMpOyB9Ci5zcGFuNCAgICAgeyAuY29sdW1ucyg0KTsgfQouc3BhbjUgICAgIHsgLmNvbHVtbnMoNSk7IH0KLnNwYW42ICAgICB7IC5jb2x1bW5zKDYpOyB9Ci5zcGFuNyAgICAgeyAuY29sdW1ucyg3KTsgfQouc3BhbjggICAgIHsgLmNvbHVtbnMoOCk7IH0KLnNwYW45ICAgICB7IC5jb2x1bW5zKDkpOyB9Ci5zcGFuMTAgICAgeyAuY29sdW1ucygxMCk7IH0KLnNwYW4xMSAgICB7IC5jb2x1bW5zKDExKTsgfQouc3BhbjEyICAgIHsgLmNvbHVtbnMoMTIpOyB9Ci5zcGFuMTMgICAgeyAuY29sdW1ucygxMyk7IH0KLnNwYW4xNCAgICB7IC5jb2x1bW5zKDE0KTsgfQouc3BhbjE1ICAgIHsgLmNvbHVtbnMoMTUpOyB9Ci5zcGFuMTYgICAgeyAuY29sdW1ucygxNik7IH0KCi8vIEZvciBvcHRpb25hbCAyNC1jb2x1bW4gZ3JpZAouc3BhbjE3ICAgIHsgLmNvbHVtbnMoMTcpOyB9Ci5zcGFuMTggICAgeyAuY29sdW1ucygxOCk7IH0KLnNwYW4xOSAgICB7IC5jb2x1bW5zKDE5KTsgfQouc3BhbjIwICAgIHsgLmNvbHVtbnMoMjApOyB9Ci5zcGFuMjEgICAgeyAuY29sdW1ucygyMSk7IH0KLnNwYW4yMiAgICB7IC5jb2x1bW5zKDIyKTsgfQouc3BhbjIzICAgIHsgLmNvbHVtbnMoMjMpOyB9Ci5zcGFuMjQgICAgeyAuY29sdW1ucygyNCk7IH0KCi8vIE9mZnNldCBjb2x1bW4gb3B0aW9ucwoucm93IHsKICA+IC5vZmZzZXQxICAgeyAub2Zmc2V0KDEpOyB9CiAgPiAub2Zmc2V0MiAgIHsgLm9mZnNldCgyKTsgfQogID4gLm9mZnNldDMgICB7IC5vZmZzZXQoMyk7IH0KICA+IC5vZmZzZXQ0ICAgeyAub2Zmc2V0KDQpOyB9CiAgPiAub2Zmc2V0NSAgIHsgLm9mZnNldCg1KTsgfQogID4gLm9mZnNldDYgICB7IC5vZmZzZXQoNik7IH0KICA+IC5vZmZzZXQ3ICAgeyAub2Zmc2V0KDcpOyB9CiAgPiAub2Zmc2V0OCAgIHsgLm9mZnNldCg4KTsgfQogID4gLm9mZnNldDkgICB7IC5vZmZzZXQoOSk7IH0KICA+IC5vZmZzZXQxMCAgeyAub2Zmc2V0KDEwKTsgfQogID4gLm9mZnNldDExICB7IC5vZmZzZXQoMTEpOyB9CiAgPiAub2Zmc2V0MTIgIHsgLm9mZnNldCgxMik7IH0KfQoKLy8gVW5pcXVlIGNvbHVtbiBzaXplcyBmb3IgMTYtY29sdW1uIGdyaWQKLnNwYW4tb25lLXRoaXJkICAgICB7IHdpZHRoOiAzMDBweDsgfQouc3Bhbi10d28tdGhpcmRzICAgIHsgd2lkdGg6IDYyMHB4OyB9Ci5vZmZzZXQtb25lLXRoaXJkICAgeyBtYXJnaW4tbGVmdDogMzQwcHg7IH0KLm9mZnNldC10d28tdGhpcmRzICB7IG1hcmdpbi1sZWZ0OiA2NjBweDsgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/tables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogVGFibGVzLmxlc3MKICogVGFibGVzIGZvciwgeW91IGd1ZXNzZWQgaXQsIHRhYnVsYXIgZGF0YQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgoKLy8gQkFTRUxJTkUgU1RZTEVTCi8vIC0tLS0tLS0tLS0tLS0tLQoKdGFibGUgewogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi1ib3R0b206IEBiYXNlbGluZTsKICBwYWRkaW5nOiAwOwogIGZvbnQtc2l6ZTogQGJhc2Vmb250OwogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgdGgsCiAgdGQgewogICAgcGFkZGluZzogMTBweCAxMHB4IDlweDsKICAgIGxpbmUtaGVpZ2h0OiBAYmFzZWxpbmU7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogIH0KICB0aCB7CiAgICBwYWRkaW5nLXRvcDogOXB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIH0KICB0ZCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7CiAgfQogIC8vIFdoZW4gc2NvcGVkIHRvIHJvdywgZml4IHRoIGluIHRib2R5CiAgdGJvZHkgdGggewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIH0KfQoKCi8vIENPTkRFTlNFRCBWRVJTSU9OCi8vIC0tLS0tLS0tLS0tLS0tLS0tCi5jb25kZW5zZWQtdGFibGUgewogIHRoLAogIHRkIHsKICAgIHBhZGRpbmc6IDVweCA1cHggNHB4OwogIH0KfQoKCi8vIEJPUkRFUkVEIFZFUlNJT04KLy8gLS0tLS0tLS0tLS0tLS0tLQoKLmJvcmRlcmVkLXRhYmxlIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8vIERvbmUgc28gd2UgY2FuIHJvdW5kIHRob3NlIGNvcm5lcnMhCiAgKmJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IC8qIElFNywgY29sbGFwc2UgdGFibGUgdG8gcmVtb3ZlIHNwYWNpbmcgKi8KICAuYm9yZGVyLXJhZGl1cyg0cHgpOwogIHRoICsgdGgsCiAgdGQgKyB0ZCwKICB0aCArIHRkIHsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDsKICB9CiAgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsCiAgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQgewogICAgLmJvcmRlci1yYWRpdXMoNHB4IDAgMCAwKTsKICB9CiAgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwKICB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkIHsKICAgIC5ib3JkZXItcmFkaXVzKDAgNHB4IDAgMCk7CiAgfQogIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQgewogICAgLmJvcmRlci1yYWRpdXMoMCAwIDAgNHB4KTsKICB9CiAgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkIHsKICAgIC5ib3JkZXItcmFkaXVzKDAgMCA0cHggMCk7CiAgfQp9CgoKLy8gVEFCTEUgQ0VMTCBTSVpFUwovLyAtLS0tLS0tLS0tLS0tLS0tCgovLyBUaGlzIGlzIGEgZHVwbGljYXRpb24gb2YgdGhlIG1haW4gZ3JpZCAuY29sdW1ucygpIG1peGluLCBidXQgc3VidHJhY3RzIDIwcHggdG8gYWNjb3VudCBmb3IgaW5wdXQgcGFkZGluZyBhbmQgYm9yZGVyCi50YWJsZUNvbHVtbnMoQGNvbHVtblNwYW46IDEpIHsKICB3aWR0aDogKChAZ3JpZENvbHVtbldpZHRoIC0gMjApICogQGNvbHVtblNwYW4pICsgKChAZ3JpZENvbHVtbldpZHRoIC0gMjApICogKEBjb2x1bW5TcGFuIC0gMSkpOwp9CnRhYmxlIHsKICAvLyBEZWZhdWx0IGNvbHVtbnMKICAuc3BhbjEgICAgIHsgLnRhYmxlQ29sdW1ucygxKTsgfQogIC5zcGFuMiAgICAgeyAudGFibGVDb2x1bW5zKDIpOyB9CiAgLnNwYW4zICAgICB7IC50YWJsZUNvbHVtbnMoMyk7IH0KICAuc3BhbjQgICAgIHsgLnRhYmxlQ29sdW1ucyg0KTsgfQogIC5zcGFuNSAgICAgeyAudGFibGVDb2x1bW5zKDUpOyB9CiAgLnNwYW42ICAgICB7IC50YWJsZUNvbHVtbnMoNik7IH0KICAuc3BhbjcgICAgIHsgLnRhYmxlQ29sdW1ucyg3KTsgfQogIC5zcGFuOCAgICAgeyAudGFibGVDb2x1bW5zKDgpOyB9CiAgLnNwYW45ICAgICB7IC50YWJsZUNvbHVtbnMoOSk7IH0KICAuc3BhbjEwICAgIHsgLnRhYmxlQ29sdW1ucygxMCk7IH0KICAuc3BhbjExICAgIHsgLnRhYmxlQ29sdW1ucygxMSk7IH0KICAuc3BhbjEyICAgIHsgLnRhYmxlQ29sdW1ucygxMik7IH0KICAuc3BhbjEzICAgIHsgLnRhYmxlQ29sdW1ucygxMyk7IH0KICAuc3BhbjE0ICAgIHsgLnRhYmxlQ29sdW1ucygxNCk7IH0KICAuc3BhbjE1ICAgIHsgLnRhYmxlQ29sdW1ucygxNSk7IH0KICAuc3BhbjE2ICAgIHsgLnRhYmxlQ29sdW1ucygxNik7IH0KfQoKCi8vIFpFQlJBLVNUUklQSU5HCi8vIC0tLS0tLS0tLS0tLS0tCgovLyBEZWZhdWx0IHplYnJhLXN0cmlwZSBzdHlsZXMgKGFsdGVybmF0aW5nIGdyYXkgYW5kIHRyYW5zcGFyZW50IGJhY2tncm91bmRzKQouemVicmEtc3RyaXBlZCB7CiAgdGJvZHkgewogICAgdHI6bnRoLWNoaWxkKG9kZCkgdGQsCiAgICB0cjpudGgtY2hpbGQob2RkKSB0aCB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7CiAgICB9CiAgICB0cjpob3ZlciB0ZCwKICAgIHRyOmhvdmVyIHRoIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICAgIH0KICB9Cn0KCnRhYmxlIHsKICAvLyBUYWJsZXNvcnRpbmcgc3R5bGVzIHcvIGpRdWVyeSBwbHVnaW4KICAuaGVhZGVyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICY6YWZ0ZXIgewogICAgICBjb250ZW50OiAiIjsKICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICBtYXJnaW4tdG9wOiA3cHg7CiAgICAgIGJvcmRlci13aWR0aDogMCA0cHggNHB4OwogICAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgICBib3JkZXItY29sb3I6ICMwMDAgdHJhbnNwYXJlbnQ7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KICB9CiAgLy8gU3R5bGUgdGhlIHNvcnRlZCBjb2x1bW4gaGVhZGVycyAoVEhzKQogIC5oZWFkZXJTb3J0VXAsCiAgLmhlYWRlclNvcnREb3duIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQxLDE5MiwyMTksLjI1KTsKICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNzUpOwogIH0KICAvLyBTdHlsZSB0aGUgYXNjZW5kaW5nIChyZXZlcnNlIGFscGhhYmV0aWNhbCkgY29sdW1uIGhlYWRlcgogIC5oZWFkZXI6aG92ZXIgewogICAgJjphZnRlciB7CiAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTsKICAgIH0KICB9CiAgLy8gU3R5bGUgdGhlIGRlc2NlbmRpbmcgKGFscGhhYmV0aWNhbCkgY29sdW1uIGhlYWRlcgogIC5oZWFkZXJTb3J0RG93biwKICAuaGVhZGVyU29ydERvd246aG92ZXIgewogICAgJjphZnRlciB7CiAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTsKICAgICAgLm9wYWNpdHkoNjApOwogICAgfQogIH0KICAvLyBTdHlsZSB0aGUgYXNjZW5kaW5nIChyZXZlcnNlIGFscGhhYmV0aWNhbCkgY29sdW1uIGhlYWRlcgogIC5oZWFkZXJTb3J0VXAgewogICAgJjphZnRlciB7CiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzAwMDsKICAgICAgdmlzaWJpbGl0eTp2aXNpYmxlOwogICAgICAuYm94LXNoYWRvdyhub25lKTsgLy9jYW4ndCBhZGQgYm94c2hhZG93IHRvIGRvd253YXJkIGZhY2luZyBhcnJvdyA6KAogICAgICAub3BhY2l0eSg2MCk7CiAgICB9CiAgfQogIC8vIEJsdWUgVGFibGUgSGVhZGluZ3MKICAuYmx1ZSB7CiAgICBjb2xvcjogQGJsdWU7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAYmx1ZTsKICB9CiAgLmhlYWRlclNvcnRVcC5ibHVlLAogIC5oZWFkZXJTb3J0RG93bi5ibHVlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oQGJsdWUsIDQwJSk7CiAgfQogIC8vIEdyZWVuIFRhYmxlIEhlYWRpbmdzCiAgLmdyZWVuIHsKICAgIGNvbG9yOiBAZ3JlZW47CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAZ3JlZW47CiAgfQogIC5oZWFkZXJTb3J0VXAuZ3JlZW4sCiAgLmhlYWRlclNvcnREb3duLmdyZWVuIHsKICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oQGdyZWVuLCA0MCUpOwogIH0KICAvLyBSZWQgVGFibGUgSGVhZGluZ3MKICAucmVkIHsKICAgIGNvbG9yOiBAcmVkOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHJlZDsKICB9CiAgLmhlYWRlclNvcnRVcC5yZWQsCiAgLmhlYWRlclNvcnREb3duLnJlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKEByZWQsIDUwJSk7CiAgfQogIC8vIFllbGxvdyBUYWJsZSBIZWFkaW5ncwogIC55ZWxsb3cgewogICAgY29sb3I6IEB5ZWxsb3c7CiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBAeWVsbG93OwogIH0KICAuaGVhZGVyU29ydFVwLnllbGxvdywKICAuaGVhZGVyU29ydERvd24ueWVsbG93IHsKICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oQHllbGxvdywgNDAlKTsKICB9CiAgLy8gT3JhbmdlIFRhYmxlIEhlYWRpbmdzCiAgLm9yYW5nZSB7CiAgICBjb2xvcjogQG9yYW5nZTsKICAgIGJvcmRlci1ib3R0b20tY29sb3I6IEBvcmFuZ2U7CiAgfQogIC5oZWFkZXJTb3J0VXAub3JhbmdlLAogIC5oZWFkZXJTb3J0RG93bi5vcmFuZ2UgewogICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbihAb3JhbmdlLCA0MCUpOwogIH0KICAvLyBQdXJwbGUgVGFibGUgSGVhZGluZ3MKICAucHVycGxlIHsKICAgIGNvbG9yOiBAcHVycGxlOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogQHB1cnBsZTsKICB9CiAgLmhlYWRlclNvcnRVcC5wdXJwbGUsCiAgLmhlYWRlclNvcnREb3duLnB1cnBsZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKEBwdXJwbGUsIDQwJSk7CiAgfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/type.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVHlwb2dyYXBoeS5sZXNzCiAqIEhlYWRpbmdzLCBib2R5IHRleHQsIGxpc3RzLCBjb2RlLCBhbmQgbW9yZSBmb3IgYSB2ZXJzYXRpbGUgYW5kIGR1cmFibGUgdHlwb2dyYXBoeSBzeXN0ZW0KICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKCi8vIEJPRFkgVEVYVAovLyAtLS0tLS0tLS0KCnAgewogICNmb250ID4gLnNob3J0aGFuZChub3JtYWwsQGJhc2Vmb250LEBiYXNlbGluZSk7CiAgbWFyZ2luLWJvdHRvbTogQGJhc2VsaW5lIC8gMjsKICBzbWFsbCB7CiAgICBmb250LXNpemU6IEBiYXNlZm9udCAtIDI7CiAgICBjb2xvcjogQGdyYXlMaWdodDsKICB9Cn0KCgovLyBIRUFESU5HUwovLyAtLS0tLS0tLQoKaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgY29sb3I6IEBncmF5RGFyazsKICBzbWFsbCB7CiAgICBjb2xvcjogQGdyYXlMaWdodDsKICB9Cn0KaDEgewogIG1hcmdpbi1ib3R0b206IEBiYXNlbGluZTsKICBmb250LXNpemU6IDMwcHg7CiAgbGluZS1oZWlnaHQ6IEBiYXNlbGluZSAqIDI7CiAgc21hbGwgewogICAgZm9udC1zaXplOiAxOHB4OwogIH0KfQpoMiB7CiAgZm9udC1zaXplOiAyNHB4OwogIGxpbmUtaGVpZ2h0OiBAYmFzZWxpbmUgKiAyOwogIHNtYWxsIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICB9Cn0KaDMsIGg0LCBoNSwgaDYgewogIGxpbmUtaGVpZ2h0OiBAYmFzZWxpbmUgKiAyOwp9CmgzIHsKICBmb250LXNpemU6IDE4cHg7CiAgc21hbGwgewogICAgZm9udC1zaXplOiAxNHB4OwogIH0KfQpoNCB7CiAgZm9udC1zaXplOiAxNnB4OwogIHNtYWxsIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICB9Cn0KaDUgewogIGZvbnQtc2l6ZTogMTRweDsKfQpoNiB7CiAgZm9udC1zaXplOiAxM3B4OwogIGNvbG9yOiBAZ3JheUxpZ2h0OwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCgovLyBDT0xPUlMKLy8gLS0tLS0tCgovLyBVbm9yZGVyZWQgYW5kIE9yZGVyZWQgbGlzdHMKdWwsIG9sIHsKICBtYXJnaW46IDAgMCBAYmFzZWxpbmUgMjVweDsKfQp1bCB1bCwKdWwgb2wsCm9sIG9sLApvbCB1bCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQp1bCB7CiAgbGlzdC1zdHlsZTogZGlzYzsKfQpvbCB7CiAgbGlzdC1zdHlsZTogZGVjaW1hbDsKfQpsaSB7CiAgbGluZS1oZWlnaHQ6IEBiYXNlbGluZTsKICBjb2xvcjogQGdyYXk7Cn0KdWwudW5zdHlsZWQgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi8vIERlc2NyaXB0aW9uIExpc3RzCmRsIHsKICBtYXJnaW4tYm90dG9tOiBAYmFzZWxpbmU7CiAgZHQsIGRkIHsKICAgIGxpbmUtaGVpZ2h0OiBAYmFzZWxpbmU7CiAgfQogIGR0IHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogIH0KICBkZCB7CiAgICBtYXJnaW4tbGVmdDogQGJhc2VsaW5lIC8gMjsKICB9Cn0KCi8vIE1JU0MKLy8gLS0tLQoKLy8gSG9yaXpvbnRhbCBydWxlcwpociB7CiAgbWFyZ2luOiAyMHB4IDAgMTlweDsKICBib3JkZXI6IDA7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7Cn0KCi8vIEVtcGhhc2lzCnN0cm9uZyB7CiAgZm9udC1zdHlsZTogaW5oZXJpdDsKICBmb250LXdlaWdodDogYm9sZDsKfQplbSB7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9Ci5tdXRlZCB7CiAgY29sb3I6IEBncmF5TGlnaHQ7Cn0KCi8vIEJsb2NrcXVvdGVzCmJsb2NrcXVvdGUgewogIG1hcmdpbi1ib3R0b206IEBiYXNlbGluZTsKICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNlZWU7CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIHAgewogICAgI2ZvbnQgPiAuc2hvcnRoYW5kKDMwMCwxNHB4LEBiYXNlbGluZSk7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICBzbWFsbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgICNmb250ID4gLnNob3J0aGFuZCgzMDAsMTJweCxAYmFzZWxpbmUpOwogICAgY29sb3I6IEBncmF5TGlnaHQ7CiAgICAmOmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICdcMjAxNCBcMDBBMCc7CiAgICB9CiAgfQp9CgovLyBBZGRyZXNzZXMKYWRkcmVzcyB7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IEBiYXNlbGluZTsKICBtYXJnaW4tYm90dG9tOiBAYmFzZWxpbmU7Cn0KCi8vIElubGluZSBhbmQgYmxvY2sgY29kZSBzdHlsZXMKY29kZSwgcHJlIHsKICBwYWRkaW5nOiAwIDNweCAycHg7CiAgZm9udC1mYW1pbHk6IE1vbmFjbywgQW5kYWxlIE1vbm8sIENvdXJpZXIgTmV3LCBtb25vc3BhY2U7CiAgZm9udC1zaXplOiAxMnB4OwogIC5ib3JkZXItcmFkaXVzKDNweCk7Cn0KY29kZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbihAb3JhbmdlLCA0MCUpOwogIGNvbG9yOiByZ2JhKDAsMCwwLC43NSk7CiAgcGFkZGluZzogMXB4IDNweDsKfQpwcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogKEBiYXNlbGluZSAtIDEpIC8gMjsKICBtYXJnaW46IDAgMCBAYmFzZWxpbmU7CiAgbGluZS1oZWlnaHQ6IEBiYXNlbGluZTsKICBmb250LXNpemU6IDEycHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSk7CiAgLmJvcmRlci1yYWRpdXMoM3B4KTsKICB3aGl0ZS1zcGFjZTogcHJlOwogIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/imports/variables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVmFyaWFibGVzLmxlc3MKICogVmFyaWFibGVzIHRvIGN1c3RvbWl6ZSB0aGUgbG9vayBhbmQgZmVlbCBvZiBCb290c3RyYXAKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCgovLyBMaW5rcwpAbGlua0NvbG9yOiAgICAgICAgICMwMDY5ZDY7CkBsaW5rQ29sb3JIb3ZlcjogICAgZGFya2VuKEBsaW5rQ29sb3IsIDE1KTsKCi8vIEdyYXlzCkBibGFjazogICAgICAgICAgICAgIzAwMDsKQGdyYXlEYXJrOiAgICAgICAgICBsaWdodGVuKEBibGFjaywgMjUlKTsKQGdyYXk6ICAgICAgICAgICAgICBsaWdodGVuKEBibGFjaywgNTAlKTsKQGdyYXlMaWdodDogICAgICAgICBsaWdodGVuKEBibGFjaywgNzUlKTsKQGdyYXlMaWdodGVyOiAgICAgICBsaWdodGVuKEBibGFjaywgOTAlKTsKQHdoaXRlOiAgICAgICAgICAgICAjZmZmOwoKLy8gQWNjZW50IENvbG9ycwpAYmx1ZTogICAgICAgICAgICAgICMwNDlDREI7CkBibHVlRGFyazogICAgICAgICAgIzAwNjRDRDsKQGdyZWVuOiAgICAgICAgICAgICAjNDZhNTQ2OwpAcmVkOiAgICAgICAgICAgICAgICM5ZDI2MWQ7CkB5ZWxsb3c6ICAgICAgICAgICAgI2ZmYzQwZDsKQG9yYW5nZTogICAgICAgICAgICAjZjg5NDA2OwpAcGluazogICAgICAgICAgICAgICNjMzMyNWY7CkBwdXJwbGU6ICAgICAgICAgICAgIzdhNDNiNjsKCi8vIEJhc2VsaW5lIGdyaWQKQGJhc2Vmb250OiAgICAgICAgICAxM3B4OwpAYmFzZWxpbmU6ICAgICAgICAgIDE4cHg7CgovLyBHcmlkaXR1ZGUKLy8gTW9kaWZ5IHRoZSBncmlkIHN0eWxlcyBpbiBtaXhpbnMubGVzcwpAZ3JpZENvbHVtbnM6ICAgICAgIDE2OwpAZ3JpZENvbHVtbldpZHRoOiAgIDQwcHg7CkBncmlkR3V0dGVyV2lkdGg6ICAgMjBweDsKQGV4dHJhU3BhY2U6ICAgICAgICAoQGdyaWRHdXR0ZXJXaWR0aCAqIDIpOyAvLyBGb3Igb3VyIGdyaWQgY2FsY3VsYXRpb25zCkBzaXRlV2lkdGg6ICAgICAgICAgKEBncmlkQ29sdW1ucyAqIEBncmlkQ29sdW1uV2lkdGgpICsgKEBncmlkR3V0dGVyV2lkdGggKiAoQGdyaWRDb2x1bW5zIC0gMSkpOwoKLy8gQ29sb3IgU2NoZW1lCi8vIFVzZSB0aGlzIHRvIHJvbGwgeW91ciBvd24gY29sb3Igc2NoZW1lcyBpZiB5b3UgbGlrZSAodW51c2VkIGJ5IEJvb3RzdHJhcCBieSBkZWZhdWx0KQpAYmFzZUNvbG9yOiAgICAgICAgIEBibHVlOyAgICAgICAgICAgICAgICAgIC8vIFNldCBhIGJhc2UgY29sb3IKQGNvbXBsZW1lbnQ6ICAgICAgICBzcGluKEBiYXNlQ29sb3IsIDE4MCk7ICAvLyBEZXRlcm1pbmUgYSBjb21wbGVtZW50YXJ5IGNvbG9yCkBzcGxpdDE6ICAgICAgICAgICAgc3BpbihAYmFzZUNvbG9yLCAxNTgpOyAgLy8gU3BsaXQgY29tcGxlbWVudHMKQHNwbGl0MjogICAgICAgICAgICBzcGluKEBiYXNlQ29sb3IsIC0xNTgpOwpAdHJpYWQxOiAgICAgICAgICAgIHNwaW4oQGJhc2VDb2xvciwgMTM1KTsgIC8vIFRyaWFkcyBjb2xvcnMKQHRyaWFkMjogICAgICAgICAgICBzcGluKEBiYXNlQ29sb3IsIC0xMzUpOwpAdGV0cmExOiAgICAgICAgICAgIHNwaW4oQGJhc2VDb2xvciwgOTApOyAgIC8vIFRldHJhIGNvbG9ycwpAdGV0cmEyOiAgICAgICAgICAgIHNwaW4oQGJhc2VDb2xvciwgLTkwKTsKQGFuYWxvZzE6ICAgICAgICAgICBzcGluKEBiYXNlQ29sb3IsIDIyKTsgICAvLyBBbmFsb2dzIGNvbG9ycwpAYW5hbG9nMjogICAgICAgICAgIHNwaW4oQGJhc2VDb2xvciwgLTIyKTsKCgoKLy8gTW9yZSB2YXJpYWJsZXMgY29taW5nIHNvb246Ci8vIC0gQGJhc2Vmb250IHRvIEBiYXNlRm9udFNpemUKLy8gLSBAYmFzZWxpbmUgdG8gQGJhc2VMaW5lSGVpZ2h0Ci8vIC0gQGJhc2VGb250RmFtaWx5Ci8vIC0gQHByaW1hcnlCdXR0b25Db2xvcgovLyAtIGFueXRoaW5nIGVsc2U/IEZpbGUgYW4gaXNzdWUgb24gR2l0SHVi]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/keyframes.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gV2Via2l0CkAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KICB0byAgICB7IGJhY2tncm91bmQtcG9zaXRpb246IDQwcHggMDsgfQp9CgovLyBGaXJlZm94CkAtbW96LWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KICB0byAgICB7IGJhY2tncm91bmQtcG9zaXRpb246IDQwcHggMDsgfQp9CgovLyBJRTkKQC1tcy1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewogIGZyb20gIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOyB9CiAgdG8gICAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MHB4IDA7IH0KfQoKLy8gU3BlYwpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tICB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfQogIHRvICAgIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogNDBweCAwOyB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/lessjs-2462.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMjQ2MgpAdHlwZTogNV9sYXJnZTsKCi5pY29uLUB7dHlwZX0gewogICAgYmFja2dyb3VuZC1pbWFnZTogfiJ1cmwoL2ltZy9pY29uL0B7dHlwZX0uc3ZnKSI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-55-data-url.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy81NQoudGVzdCB7CgliYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFaQ0FZQUFBQXhGdzdUQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUEyaEpSRUZVZU5xVWxXdElrMkVVeC8rN3BEbG41c3l5NFdXaGlJV1lkcEVsdXV5Q0ZTbnRRMXFaU2xTVUZFVkZHSVRmb2lnSTBrOVJueXBZU1FXYXBzeU0waUdac25MVFphUUdLbmxycGx2TzFtVnRuWGZ2NnpibkZ1N0FmK2Q5bi9kNWZqdm5PYzhGOExicXZvMW5MbFkxTzlhbjFaSUtTU0VJd0lSZXNCejZmVGE5VlB5Ui9FN1NQcEtGb0RYa0g1SmU4dlE2MjZLQUZkMlQ1WWxoUVZkZmpNOEtZWmpYUjB3cTRXUWsrR01PM2s1d2h6ZVF4MFZXa2k4TnZWZVhMZVV6cjhicHMtMTV4eHh4eHh4eHh4eHh4KTsKCWJhY2tncm91bmQ6IHVybCgvYXN0cmluZ1wnd2l0aGJhY1wia3NsYXNoXGNoYXJhXGN0ZXJzKTsKCX0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-63-selector-nospace-comma.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gUmVncmVzc2lvbiBpbiBsZXNzLnBocCAxLjYuMToKLy8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy82MwouZm9vIHsKICAgIGgyLGgzIHsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICB9Cn0KCkBudW06IDM7CjpudGgtY2hpbGQoQHtudW19KSB7CglzZWxlY3RvcjogaW50ZXJwb2xhdGVkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-72-import-url-rewrite.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGdyYWRpZW50X2VuZDpkYXJrZW4oQGdyYWRpZW50X3N0YXJ0LCAxMCUpOzsKQGdyYWRpZW50X3N0YXJ0OiMwNzc5YmY7OwpAdGV4dF9nbG93OmxpZ2h0ZW4oQGdyYWRpZW50X3N0YXJ0LCAxMCUpOzsKQHRlc3Q6I2NjYzsKQGhlYWRlcl9mcm9tOnRlc3Q7CkBpbXBvcnQgdXJsKG95ZWpvcmdlLTcyLWltcG9ydC5sZXNzKTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-72-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lmxlc3NfZGVtb19sb2dvIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1hZ2VzL2xvZ28ucG5nKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-80-import-url-rewrite.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAnaW1wb3J0cy84MC5sZXNzJzsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-81-crash.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gUmVncmVzc2lvbiBpbiBsZXNzLnBocCAxLjYuMToKLy8gU3VwcG9ydCBib290c3RyYXAgMi4zLjIKLy8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy84MQpAbWVudV93aWR0aDoxMDA7CkBuYXZiYXJDb2xsYXBzZVdpZHRoOiBAbWVudV93aWR0aCswcHg7CiNleGFtcGxlewogIHdpZHRoOkBuYXZiYXJDb2xsYXBzZVdpZHRoIC0gMXB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-87-strings.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy84NwpAYXNzZXRfcGF0aDE6ICdhc3NldHMvJzsKQHVybDE6ICcvYXNzZXRzL0B7YXNzZXRfcGF0aDF9L2ltYWdlcy9sb2dvLnBuZyc7Ci50ZXN0eyBiYWNrZ3JvdW5kOnVybChAdXJsMSk7IH0KCgpAYXNzZXRfcGF0aDI6ICdhc3NldHMnOwpAdXJsMjogJy9hc3NldHMvQHthc3NldF9wYXRoMn0vaW1hZ2VzL2xvZ28ucG5nJzsKLnRlc3R7IGJhY2tncm91bmQ6dXJsKEB1cmwyKTsgfQoKCi50ZXN0eyBiYWNrZ3JvdW5kOnVybCgnaHR0cDovL2RvbWFpbi9Ae2Fzc2V0X3BhdGgyfS9pbWFnZXMvbG9nby5wbmcnKTsgfQoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-89-ruleset-nest-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy84OQojZGl2ewoJQGltcG9ydCAnaW1wb3J0cy84MC5sZXNzJzsKCX0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-92-color-preserve-transparent.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy85MgpAY29sb3I6IHRyYW5zcGFyZW50OwojaGVhZGVyewoJY29sb3I6IEBjb2xvcjsKfQpoMnsKCWNvbG9yOiBAY29sb3I7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-97.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy85NwoKQGN1c3RvbV9jc3M6J2ltcG9ydHMvYS5sZXNzJzsKCi5pbXBvcnRfY3VzdG9tX2NzcygpIHdoZW4gKCBpc3N0cmluZyhAY3VzdG9tX2NzcykgKXsKCUBpbXBvcnQgIkB7Y3VzdG9tX2Nzc30iOwp9Ci5pbXBvcnRfY3VzdG9tX2NzcygpOwoKCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-109-recursive-var.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8xMDkKQG5hdmJhci1oeWRyYS1pbnZlcnNlLWNvbG9yOiBsaWdodGVuKEBuYXZiYXItaHlkcmEtaW52ZXJzZS1jb2xvciwgMTAlKTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-124-multiline-str.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8xMjQKYm9keXsKCUBzdHJhOiAnVGhpcyBpcyBhIFwKCW11bHRpbGluZSBzdHJpbmcuJzsKCgljb250ZW50OiBAc3RyYTsKCgoJQHN0cmI6ICJUaGlzIGlzIGEgXAoJbXVsdGlsaW5lIHN0cmluZy4iOwoKCWNvbnRlbnQ6IEBzdHJiOwoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-129-incomplete.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNyLW9ubHl7CmJvcmRlcjoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-198-alpha.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8xOTgKLmdvb2ctbWVudWl0ZW0taWNvbiB7CiAgZmlsdGVyOiAgYWxwaGEob3BhY2l0eT0zMCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-202-import-once.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0cy8yMDItaW1wb3J0MS5sZXNzIjsKQGltcG9ydCAiaW1wb3J0cy8yMDItbGFzdC5sZXNzIjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-210-complex-colors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL3B1bGwvMjEwCgpAY29sb3IxOiByZ2JhKDUxLCAxMDIsIDE1MywgMC45KTsKQGNvbG9yMjogcmdiYSgyMDQsIDEwMiwgMCwgMC45KTsKQGNvbG9yMzogcmdiYSgyNTIsIDE3OSwgMjA4LCAwLjkpOwoKLyogY29sb3IgY2hhbm5lbCBmdW5jdGlvbnMgKi8KQGg6IGh1ZShAY29sb3IxKTsKQHM6IHNhdHVyYXRpb24oQGNvbG9yMSk7CkBsOiBsaWdodG5lc3MoQGNvbG9yMSk7CkBoc3ZoOiBoc3ZodWUoQGNvbG9yMSk7CkBoc3ZzOiBoc3ZzYXR1cmF0aW9uKEBjb2xvcjEpOwpAaHN2djogaHN2dmFsdWUoQGNvbG9yMSk7CkByOiByZWQoQGNvbG9yMSk7CkBnOiBncmVlbihAY29sb3IxKTsKQGI6IGJsdWUoQGNvbG9yMSk7CkBhOiBhbHBoYShAY29sb3IxKTsKQGx1bWE6IGx1bWEoQGNvbG9yMSk7CkBsdW1pbmFuY2U6IGx1bWluYW5jZShAY29sb3IxKTsKCmJvZHkgewoKCS5jb2xvci1jaGFubmVscyB7CgkJLS1odWU6IEBoOwoJCS0tc2F0dXJhdGlvbjogQHM7CgkJLS1saWdodG5lc3M6IEBsOwoJCS0taHN2aHVlOiBAaHN2aDsKCQktLWhzdnNhdHVyYXRpb246IEBoc3ZzOwoJCS0taHN2dmFsdWU6IEBoc3Z2OwoJCS0tcmVkOiBAcjsKCQktLWdyZWVuOiBAZzsKCQktLWJsdWU6IEBiOwoJCS0tYWxwaGE6IEBhOwoJCS0tbHVtYTogQGx1bWE7CgkJLS1sdW1pbmFuY2U6IEBsdW1pbmFuY2U7Cgl9CgoJLmNvbG9yLWRlZmluaXRpb25zIHsKCQkucmdiIHsKCQkJY29sb3I6IHJnYihAcixAZyxAYik7CgkJfQoJCS5yZ2JhIHsKCQkJY29sb3I6IHJnYmEoQHIsQGcsQGIsQGEpOwoJCX0KCQkuYXJnYiB7CgkJCWNvbG9yOiBhcmdiKHJnYmEoQHIsQGcsQGIsQGEpKTsKCQl9CgkJLmhzbCB7CgkJCWNvbG9yOiBoc2woQGgsQHMsQGwpOwoJCX0KCQkuaHNsYSB7CgkJCWNvbG9yOiBoc2xhKEBoLEBzLEBsLEBhKTsKCQl9CgkJLmhzdiB7CgkJCWNvbG9yOiBoc3YoQGhzdmgsQGhzdnMsQGhzdnYpOwoJCX0KCQkuaHN2YSB7CgkJCWNvbG9yOiBoc3ZhKEBoc3ZoLEBoc3ZzLEBoc3Z2LEBhKTsKCQl9Cgl9CgoJLmNzcy1maWx0ZXJzIHsKCQkuc2F0dXJhdGUgewoJCQljb2xvcjogc2F0dXJhdGUoMjAwJSk7CgkJfQoJfQoKCS5jb2xvci1vcGVyYXRpb25zIHsKCQkuc2F0dXJhdGUgewoJCQljb2xvcjogc2F0dXJhdGUoQGNvbG9yMSw1MCUpOwoJCX0KCQkuZGVzYXR1cmF0ZSB7CgkJCWNvbG9yOiBkZXNhdHVyYXRlKEBjb2xvcjEsNTAlKTsKCQl9CgkJLmxpZ2h0ZW4gewoJCQljb2xvcjogbGlnaHRlbihAY29sb3IxLDUwJSk7CgkJfQoJCS5kYXJrZW4gewoJCQljb2xvcjogZGFya2VuKEBjb2xvcjEsNTAlKTsKCQl9CgkJLmZhZGVpbiB7CgkJCWNvbG9yOiBmYWRlaW4oQGNvbG9yMSw1MCUpOwoJCX0KCQkuZmFkZW91dCB7CgkJCWNvbG9yOiBmYWRlb3V0KEBjb2xvcjEsNTAlKTsKCQl9CgkJLmZhZGUgewoJCQljb2xvcjogZmFkZShAY29sb3IxLDUwJSk7CgkJfQoJCS5zcGluNTAgewoJCQljb2xvcjogc3BpbihAY29sb3IxLDUwKTsKCQl9CgkJLnNwaW43MjAgewoJCQljb2xvcjogc3BpbihAY29sb3IxLDcyMCk7CgkJfQoJCS5zcGluLTUwIHsKCQkJY29sb3I6IHNwaW4oQGNvbG9yMSwtNTApOwoJCX0KCQkuc3Bpbi03MjAgewoJCQljb2xvcjogc3BpbihAY29sb3IxLC03MjApOwoJCX0KCQkubWl4LWRlZmF1bHQgewoJCQljb2xvcjogbWl4KEBjb2xvcjEsQGNvbG9yMik7CgkJfQoJCS5taXg2MCB7CgkJCWNvbG9yOiBtaXgoQGNvbG9yMSxAY29sb3IyLDYwJSk7CgkJfQoJCS5ncmV5c2NhbGUgewoJCQljb2xvcjogZ3JleXNjYWxlKEBjb2xvcjEpOwoJCX0KCQkuY29udHJhc3QtMXBhcmFtIHsKCQkJY29sb3I6IGNvbnRyYXN0KEBjb2xvcjEpOwoJCX0KCQkuY29udHJhc3QtMnBhcmFtIHsKCQkJY29sb3I6IGNvbnRyYXN0KEBjb2xvcjEsQGNvbG9yMik7CgkJfQoJCS5jb250cmFzdC0zcGFyYW0gewoJCQljb2xvcjogY29udHJhc3QoQGNvbG9yMSxAY29sb3IyLEBjb2xvcjMpOwoJCX0KCQkuY29udHJhc3QtNHBhcmFtIHsKCQkJY29sb3I6IGNvbnRyYXN0KEBjb2xvcjEsQGNvbG9yMixAY29sb3IzLDc1JSk7CgkJfQoJfQoKCS5jb2xvci1ibGVuZGVycyB7CgkJLm11bHRpcGx5IHsKCQkJY29sb3I6IG11bHRpcGx5KEBjb2xvcjEsQGNvbG9yMik7CgkJfQoJCS5zY3JlZW4gewoJCQljb2xvcjogc2NyZWVuKEBjb2xvcjEsQGNvbG9yMik7CgkJfQoJCS5vdmVybGF5IHsKCQkJY29sb3I6IG92ZXJsYXkoQGNvbG9yMSxAY29sb3IyKTsKCQl9CgkJLnNvZnRsaWdodCB7CgkJCWNvbG9yOiBzb2Z0bGlnaHQoQGNvbG9yMSxAY29sb3IyKTsKCQl9CgkJLmhhcmRsaWdodCB7CgkJCWNvbG9yOiBoYXJkbGlnaHQoQGNvbG9yMSxAY29sb3IyKTsKCQl9CgkJLmRpZmZlcmVuY2UgewoJCQljb2xvcjogZGlmZmVyZW5jZShAY29sb3IxLEBjb2xvcjIpOwoJCX0KCQkuZXhjbHVzaW9uIHsKCQkJY29sb3I6IGV4Y2x1c2lvbihAY29sb3IxLEBjb2xvcjIpOwoJCX0KCQkuYXZlcmFnZSB7CgkJCWNvbG9yOiBhdmVyYWdlKEBjb2xvcjEsQGNvbG9yMik7CgkJfQoJCS5uZWdhdGlvbiB7CgkJCWNvbG9yOiBuZWdhdGlvbihAY29sb3IxLEBjb2xvcjIpOwoJCX0KCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-235-absolute-url.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8yMzUKLnRlc3QgewoJYmFja2dyb3VuZDogdXJsKGh0dHA6Ly9zdWJkb21haW4uZG9tYWluLmNvbS9pbWFnZXMvYW5pbWFscy9raXR0ZW5zL2ltYWdlLmpwZyk7Cgl9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-261-selector-plus.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8yNjEKZGl2IHsKIGEsYiB7CiAgICYrJnttYXJnaW4tdG9wOjA7fQogfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-269-important.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8yNjkKLnRlc3QgewogIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsKICBmb250LXdlaWdodDogYm9sZDsKfQouYW5vdGhlciB7CiAgLnRlc3QoKSAhaW1wb3J0YW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-298-data-image.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8yOTgKLnRlc3QgewogIGJhY2tncm91bmQ6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS0FBb0FJQUJBQUFBQVAvLy95SC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNrWXdOcVhyZEM1MkRTMDZhN01GWkkrNEZIQkNLb0RlV0tYcXltUHFHcXh2SnJYWmJNeDdUdGMrdzlYZ1UyRkIzbE95UVJXRVQySUZHaVU5bTFmckRWcHhaWmM2YmZId3Y0YzFZWFA2azFWZHkyOTJGYjZVa3V2RnRYcHZXU3pBK0h5Y1hKSFVYaUdZSWlNZzJSNlc0NTlnbldHZkhOZGpJcURXVnFlbUgyZWtwT2JrcE9scHBXVXFaaXFyNmVkcXFXUUFBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBTTWdabkdmYXFjZzFFMnV1ekRtbUhVQlI4UWlsOTVoaVBLcVduM2FxdExzUzE4eTdHMVN6TmVvd1dCRU50UWQrVDFKa3RQMDVuelBUZEpabFI2dlV4TldXalYrdlVXaFdOa1dGd3hsOVZwWlJlZFljZmxJT0xhZmFhMjhYZHNIL3lubGNjMXVQVkRaeFFJUjBLMjUrY0lDQ21vcUNlNW1HaFpPZmVZU1VoNXlKY0p5cmtaV1dwYVI4ZG9KMm80TllxNjJsQUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtWREk0WXkyMlpuSU5STnFvc3cwQnY3aTFneUhVa0ZqN29TYVdsdTNvdkM4R3hOc281Zmx1ejNxTFZoQlZlVC9MejdaVEh5eEw1ZERhbFFXUFZPc1FXdFJudXdYYUZUajlqVlZoOHBtYTlKalo0ellTajVaT3ltYTd1dW9sZmZoK0lSNWFXOTdjSHVCVVhLR0tYbEtqbitEaUhXTWNZSmFoNE4wbFlDTWxKT1hpcEdScjVxZGdvU1RycVdTcTZXRmwyeXBvYVVBQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGFFYjZITGdkL2lPN0ZOV3RjRldlK3VmT0RHalJmb2lKMmFrU2hidWViMHd0STUwem0wMnBidndmV0VNV0JRMXpLR2xMSWhza2lFUG05UjZ2Ulh4VjRaeldUMnlIT0dwV015b3JibEtsTnA4SG1IRWIvbENYamNXN2JtdFhQOFh0MjI5T1ZXUjFmb2QyZVdxTmZIdU1qWENQa0lHTmlsZU9pSW1WbUNPRW1vU2ZuM3lYbEpXbW9IR2hxcDZpbFl1V1lwbVRxS1VnQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGlFSDZrYjU4YmlRM0ZOV3RNRldXM2VOVmNvanVGR2ZxblpxU2VidVMwNnc1VjgwL1gwMnBLZTh6RndQNkVGV09UMWxERms4ckdFUmgxVFROT29jUTYxSG00WG0yVmV4VUhwemp5bVZpSHJGYmlFTHNlZlZybjZYS2ZudDJROUcvK1hkaWU0OTlYSGQyZzRoN2lvT0doWEdKYm9HQW5YU0Jub0J3S1l5ZmlvdWJaSjJIbjBSdVJaYWZsWk9pbDU2WnA2aWlvS1NYcFVBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDa29RUnFSdm54dUk3a1UxYTFVVTViZDV0blNlT1pYaG1uNWxXSzNxTlRXdlJkUXhQOHF2YUMrL3lhWVF6WE83Qk12YVVFbUpSZDNUc2lNQWdzd21OWXJTZ1pkWXJUWDZ0U0hHWk83M2V6dUF3MnV4dVErQmJlWmZNeHNleFkzNSsvUWU0SjFpblYwZzR4M1dIdU1oSWwyalhPS1QyUStWVTVmZ29TVUk1MlZmWnlma0pHa2hhNmptWSthYVlkaXJxK2xRQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1dCSUtwWWUwTDNZTktUb3Fzd1VsdnpuaWdkNHdpUjRLaFpyS3Q5VXBxaXA2MWk5RTN2TXZ4UmRIbGJFRmlFWGZrOVlBUll4T1paRDZWUTJwVXVuQm10UlhvMUxmOGhNVlZjTmw4SmFmVjM4YU0yL0Z1NVYxNkJuNjNyNnh0OTdqMDkrTVhTRmk0Qm5pR0ZhZTNoemJIOStoWUJ6a3B1VWg1YVptSHVhblpPWmdJdXZiR2lOZW9tQ25heHhhcDJ1cGFDWnNxKzFrQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1hqSThCeTV6ZjRrT3hUVnJYTlZsdjFYMGQ4SUdaR0tMbk5wWXRtOExyOWNxVmV1T1N2Zk9XNzlEOWFESGl6TmhESmlkRlpoTnlkRWFoT2FESDZub210SmpwMXR1dEtvTldrdkE2SnFmUlZMSFUvUVVmYXU5bDJ4N0c1NGQxZmw5OTV4Y0lHQWRYcU1mQk5hZG9ZcmhIK01nMktCbHBWcGJsdUNpWG1NbloyU2g0R0JxSitja0lPcXFKNkxtS1NsbFptc29xNndwUUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNsWXgvb0x2b3h1SkRrVTFhMVlVWmJKNTluU2QyWlhoV3FiUmEyL2dGOEd1MkRZM2lxczd5cnEreEJZRWtZdkZTTThhU1NPYkUrWmdSbDFCSEZaTnI3cFJDYXZaNUJXMjE0MmhZM0FOL3pXdHNtZjEycDlYeHhGbDJscExuMXJzZXp0ZlhaamRJV0lmMnM1ZEl0d2pZS0Jnbzl5ZzVwSGd6SlhURWVHbFp1ZW5weVBtcEdRb0tPV2tZbVNwYVNucUtpbGVJMkZBQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1ZqQitndStqRzRrT1JUVnJWaFJsc25uMmRKM1psZUZhcHRGcmIrQ1htTzlPb3plTDVWZlA5OUh2QVdocGlVZGN3a3BCSDM4MjVBd1lkVTh4VHFsTEdodENvc0FyS01wdmZhMW1NUmFlOVZ2V1pmZUIyWGZQa2VMbW0xOGxVY0JqK3A1ZG5OOGpYWjNZSUdFaFl1T1VuNDVhb0NEa3AxNmhsNUlqWUp2aldLY25vR1FwcXlQbHBPaHIzYUVsYXFycTU2QnE3VkFBQU93PT0iKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-302-chinese.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8zMDIKQGJhc2VGb250RmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCAiTWljcm9zb2Z0IFlhSGVpIiwgIuW+rui9r+mbhem7kSIsIFNUWGloZWksICLljY7mlofnu4bpu5EiLCBzYW5zLXNlcmlmOwoKLnRleHR7Cglmb250LWZhbWlseTogQGJhc2VGb250RmFtaWx5OwoJfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/oyejorge-305-import-nested-relative.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL295ZWpvcmdlL2xlc3MucGhwL2lzc3Vlcy8zMDUKQGltcG9ydCAiLi4vb3llam9yZ2UtMzA1LWltcG9ydC1wYXJlbnQubGVzcyI7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/parens.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CglAdmFyOiAxcHg7Cglib3JkZXI6IChAdmFyICogMikgc29saWQgYmxhY2s7CgltYXJnaW46IChAdmFyICogMSkgKEB2YXIgKyAyKSAoNCAqIDQpIDM7Cgl3aWR0aDogKDYgKiA2KTsKCXBhZGRpbmc6IDJweCAoNiAqIDZweCk7CiAgfQogIAogIC5tb3JlLXBhcmVucyB7CglAdmFyOiAoMiAqIDIpOwoJcGFkZGluZzogKDIgKiBAdmFyKSA0IDQgKEB2YXIgKiAxcHgpOwoJd2lkdGgtYWxsOiAoKEB2YXIgKiBAdmFyKSAqIDYpOwoJd2lkdGgtZmlyc3Q6ICgoQHZhciAqIEB2YXIpKSAqIDY7Cgl3aWR0aC1rZWVwOiAoQHZhciAqIEB2YXIpICogNjsKCWhlaWdodC1rZWVwOiAoNyAqIDcpICsgKDggKiA4KTsKCWhlaWdodC1hbGw6ICgoNyAqIDcpICsgKDggKiA4KSk7CgloZWlnaHQtcGFydHM6ICgoNyAqIDcpKSArICgoOCAqIDgpKTsKCW1hcmdpbi1rZWVwOiAoNCAqICg1ICsgNSkgLyAyKSAtIChAdmFyICogMik7CgltYXJnaW4tcGFydHM6ICgoNCAqICg1ICsgNSkgLyAyKSkgLSAoKEB2YXIgKiAyKSk7CgltYXJnaW4tYWxsOiAoKDQgKiAoNSArIDUpIC8gMikgKyAoLShAdmFyICogMikpKTsKCWJvcmRlci1yYWRpdXMta2VlcDogNHB4ICogKDEgKyAxKSAvIEB2YXIgKyAzcHg7Cglib3JkZXItcmFkaXVzLXBhcnRzOiAoKDRweCAqICgxICsgMSkpKSAvICgoQHZhciArIDNweCkpOwoJYm9yZGVyLXJhZGl1cy1hbGw6ICg0cHggKiAoMSArIDEpIC8gQHZhciArIDNweCk7CgkvL21hcmdpbjogKDYgKiA2KXB4OwogIH0KICAKICAubmVnYXRpdmUgewoJQHZhcjogMTsKCW5lZy12YXI6IC1AdmFyOyAvLyAtMSA/CgluZWctdmFyLXBhcmVuOiAtKEB2YXIpOyAvLyAtKDEpID8KICB9CiAgCiAgLm5lc3RlZC1wYXJlbnMgewoJd2lkdGg6IDIgKiAoNCAqICgyICsgKDEgKyA2KSkpIC0gMTsKCWhlaWdodDogKCgyICsgMykgKiAoMiArIDMpIC8gKDkgLSA0KSkgKyAxOwogIH0KICAKICAubWl4ZWQtdW5pdHMgewoJbWFyZ2luOiAycHggNGVtIDEgNXBjOwoJcGFkZGluZzogKDJweCArIDRweCkgMWVtIDJweCAyOwogIH0KICAKICAudGVzdC1mYWxzZS1uZWdhdGl2ZXMgewoJYTogfiIoIjsKICB9CiAg]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T204816-nested-parent.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyB7CiAgICB3aWR0aDogMTAwcHg7CiAgICAmLWJhciB7CiAgICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgIH0KICAgICY6bm90KCYtYmFyKSB7CiAgICAgICAgYmFja2dyb3VuZDogZ3JlZW47CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T327082-mixinarg-nonexpr.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm15ZnVuYyhAeCkgewoJZm9udC1mYW1pbHk6ICdAe3h9JzsKfQpkaXYub25lIHsKCS5teWZ1bmMoQHg6ICdBcmlhbCcpOwp9CmRpdi50d28gewoJLy8gUGFzc2luZyBhIG5vbi1leHByZXNzaW9uIGFzIG1peGluIGFyZ3VtZW50IG11c3Qgbm90IGNhdXNlIGEKCS8vIFBhcnNlRXJyb3IsIGJlY2F1c2UgaXQgaXMgdmFsaWQgc3ludGF4IGZvciAiZGV0YWNoZWQgcnVsZXNldCIuCgkvLwoJLy8gTW9zdCBmdW5jdGlvbnMgY2FuJ3QgdGFrZSB0aGF0IGFzIGFuIGFyZ3VtZW50IHRob3VnaCwgc28gaW4gYSBzdHJpbmcKCS8vIG9wZXJhdGlvbiAoZm9yIGV4YW1wbGUpIHRoaXMgYmVjb21lcyBhbiBlbXB0eSBzdHJpbmcuCgkubXlmdW5jKEB4OiB7IGNvbnRlbnQ6ICdUZXN0JzsgfSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T331688-calc.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGJvcmRlci13aWR0aC1iYXNlOiAxcHg7CkBwYWRkaW5nLWhpZ2hsaWdodDogOHB4OwpAaGFsZjogMC41OwoKLmhpZ2hsaWdodCB7Cgl3aWR0aDogY2FsYyggMTAwJSAtIDJweCApOwoJaGVpZ2h0OiBjYWxjKCBwZXJjZW50YWdlKCBAaGFsZiApIC0gMipAYm9yZGVyLXdpZHRoLWJhc2UgKTsKCXBhZGRpbmctbGVmdDogQHBhZGRpbmctaGlnaGxpZ2h0ICsgQGJvcmRlci13aWR0aC1iYXNlOwoJcGFkZGluZy1yaWdodDogY2FsYyggQHBhZGRpbmctaGlnaGxpZ2h0ICsgQGJvcmRlci13aWR0aC1iYXNlICk7Cn0KLm15dmFyIHsKICAgIGhlaWdodDogY2FsYygxMDAlIC0gdmFyKC0tbWFyZ2luLXRvcCkgLSB2YXIoLS1tYXJnaW4tYm90dG9tKSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T356706-font-face-comment.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBsYWluIHsKICAgIGZvbnQtd2VpZ2h0OiAxMDA7IC8qIE9uZSAqLwogICAgZm9udC1zdHlsZTogbm9ybWFsOyAvKiBUd28gKi8KfQoKCkBmb250LWZhY2UgewogICAgZm9udC13ZWlnaHQ6IDIwMDsgLyogT25lICovCiAgICBmb250LXN0eWxlOiBub3JtYWw7IC8qIFR3byAqLwp9CgouZm4oKSB7CiAgICBAZm9udC1mYWNlIHsKICAgICAgICBmb250LXdlaWdodDogMzAwOyAvKiBPbmUgKi8KICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7IC8qIFR3byAqLwogICAgfQp9Ci5mbigpOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T357160-quoted-compare.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtbWl4aW4oQHZhbHVlKSB3aGVuIChAdmFsdWUgPSAidGVzdCIpIHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KCi50ZXN0LW1peGluKEB2YWx1ZSkgd2hlbiAoQHZhbHVlID0gJ3Rlc3QnKSB7CiAgYmFja2dyb3VuZDogYmx1ZTsKfQoKZG91YmxlIHsKICAudGVzdC1taXhpbigidGVzdCIpCn0Kc2luZ2xlIHsKICAudGVzdC1taXhpbigndGVzdCcpCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T358159-compare.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV4YW1wbGUoQHgpIHdoZW4gbm90IChAeCA9IGZhbHNlKSBhbmQgbm90IChAeCA9ICcnKSB7CiAgQGZvbnRTaXplOiB1bml0KEB4LCByZW0pOwp9CgouZXhhbXBsZSg0Mik7Cgpib2R5IHsKICBmb250LXNpemU6IEBmb250U2l6ZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T358256-parse-error.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGV4YW1wbGU6IDI0cHg7CgoubXlmdW5jKEBzb21ldGhpbmcpIHsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KCmRpdiB7CgkubXlmdW5jKEBzb21ldGhpbmc6IEBleGFtcGxlLzIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T358631-replace-multi.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGlucHV0OiAnZm9vIGJhciBiYXonOwpAd2l0aFBhcmVuczogcmVwbGFjZSggQGlucHV0LCAnKFteIF0rKScsICcoJDEpJywgJ2cnKTsKQHdvcmRpZnk6IHJlcGxhY2UoIEBpbnB1dCwgJyhefCApKFteIF0rKScsICdiZWdpbiAkMiBlbmQgJywgJ2cnKTsKQHNlbGVjdG9yOiBlKCByZXBsYWNlKCBAaW5wdXQsICcoXnwgKShbXiBdKyknLCAnOm5vdCggOmxhbmcoJDIpICknLCAnZycgKSApOwoKLm9uZSB7Cgljb250ZW50OiAnQHt3aXRoUGFyZW5zfSc7Cn0KLnR3byB7Cgljb250ZW50OiAnQHt3b3JkaWZ5fSc7CgoJJkB7c2VsZWN0b3J9IHsKCQlmaWx0ZXI6IGludmVydCgxKTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T361035-variable-name.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmFkZF9hbl9pbXBvcnQoQGZpbGVfdG9faW1wb3J0KSB7CglAaW1wb3J0ICJAe2ZpbGVfdG9faW1wb3J0fSI7Cn0KCi5hZGRfYW5faW1wb3J0KCJ0ZXN0LmNzcyIpOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T363076-mixins-copies-rules.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmJ0biB7Cgljb2xvcjogYmx1ZTsKCWZvbnQtd2VpZ2h0OiBib2xkOwogCgkmW3RpdGxlXSB7CgkgICBiYWNrZ3JvdW5kOiBsaWdodGdyZWVuOwoJfQogfQogLmJ0bltkaXNhYmxlZF0gewoJY3Vyc29yOiBub3QtYWxsb3dlZDsKCWNvbG9yOiByZWQ7CiB9CiAuYnRuW3Rlc3RdIHsKCWJhY2tncm91bmQtY29sb3I6IHBpbms7CiB9CiAKIC5idG4tc3BlY2lmaWMgewoJLmJ0bigpOwogfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T363728-preserve-clamp.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eCB7CiAgd2lkdGg6IGNsYW1wKDEwcHgsIDV2dywgMTAwcHgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T367603-math-media-var.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1pbi13aWR0aC1icmVha3BvaW50LXRhYmxldDogNjQwcHg7CkBtYXgtd2lkdGgtYnJlYWtwb2ludC1tb2JpbGU6IEBtaW4td2lkdGgtYnJlYWtwb2ludC10YWJsZXQgLSAxcHg7CgpAbWVkaWEgKCBtYXgtd2lkdGg6IEBtYXgtd2lkdGgtYnJlYWtwb2ludC1tb2JpbGUgKSB7CgkudGhpbmcgewoJCWxlZnQ6IDA7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T371606-alpha-zero-error.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmFscGhhIHsKCWZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsKICB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T380641-sourcemap-import-inline.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAoaW5saW5lLCBjc3MpIHVybCgiaW1wb3J0cy9hLmxlc3MiKTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T383085-float-precision.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGE6ICNFRUZGREU7CkBiOiBoc3YoaHN2aHVlKEBhKSwgaHN2c2F0dXJhdGlvbihAYSksIGhzdnZhbHVlKEBhKSk7CgpkaXYgewogIGNvbG9yOiBAYjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T386077-no-trailing-semicolon.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogICAgLS10ZXN0OiAzOHB4Cn0KCi50ZXN0IHsKICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkgewogICAgICAgLS10ZXN0OiAzOHB4CiAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T386079-fix-function-call.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNvbG9yLWJsYWNrOiAjMDAwOwoKLnRlc3QgewogIC0tYmFja2dyb3VuZDogCiAgICBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCBmYWRlKEBjb2xvci1ibGFjaywgMCUpIDM2LjUlLCBAY29sb3ItYmxhY2sgOTglKSwKICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgZmFkZShAY29sb3ItYmxhY2ssIDkwJSkgMCUsIGZhZGUoQGNvbG9yLWJsYWNrLCAwJSkgMzUlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T391735-extract-non-array.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHg6IDIwcHg7CgouZm9vLW9uZS1kaXYgewogICAgLmZvbyhjYWxjKEB4IC8gMXB4KSk7Cn0KLmZvby1vbmUtZGV0YWNoZWQgewogICAgLmZvbyggeyBjb2xvcjogYmx1ZSB9ICk7Cn0KLmZvby10d28gewogICAgLmZvbyhjYWxjKEB4IC8gMXB4KSAycHgpOwp9Ci5mb28taW5jbHVkZXMtZmFsc2UgewogICAgY29sb3I6IHB1cnBsZTsKICAgIC5mb28oQHggMnB4IGZhbHNlIDRweCk7Cn0KCi5mb28oQHZhbHVlOiBmYWxzZSkgd2hlbiBub3QgKEB2YWx1ZSA9IGZhbHNlKQogIGFuZCBub3QgKGV4dHJhY3QoQHZhbHVlLCAxKSA9IGZhbHNlKQogIGFuZCBub3QgKGV4dHJhY3QoQHZhbHVlLCAyKSA9IGZhbHNlKQogIGFuZCBub3QgKGV4dHJhY3QoQHZhbHVlLCAzKSA9IGZhbHNlKQogIGFuZCBub3QgKGV4dHJhY3QoQHZhbHVlLCA0KSA9IGZhbHNlKQogIGFuZCBub3QgKGV4dHJhY3QoQHZhbHVlLCA1KSA9IGZhbHNlKSB7CiAgICBmb286IGxlbmd0aChAdmFsdWUpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T403056-hex-color.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDE0Owp9CmRpdiB7CiAgYmFja2dyb3VuZDogZGFya2VuKCM5QzM0OTMxNCwgMzAlKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/T403056-invalid-color.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmludmFsaWQtaW5wdXQgewogIGJhY2tncm91bmQtY29sb3I6ICMxMjM0NTY3Owp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/less/zero-selector.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MCB7CiAgICBwcm9wZXJ0eTogdmFsdWU7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/less.php/oyejorge-305-import-parent.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBpbXBvcnQgIi4uL295ZWpvcmdlLTMwNS1pbXBvcnQtZ3JhbnRwYXJlbnQubGVzcyI7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/charsets.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/colors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3llbG93ICNzaG9ydCB7CiAgY29sb3I6ICNmZWE7Cn0KI3llbG93ICNsb25nIHsKICBjb2xvcjogI2ZmZWVhYTsKfQojeWVsb3cgI3JnYmEgewogIGNvbG9yOiByZ2JhKDI1NSwgMjM4LCAxNzAsIDAuMSk7Cn0KI3llbG93ICNhcmdiIHsKICBjb2xvcjogIzFhZmZlZWFhOwp9CiNibHVlICNzaG9ydCB7CiAgY29sb3I6ICMwMGY7Cn0KI2JsdWUgI2xvbmcgewogIGNvbG9yOiAjMDAwMGZmOwp9CiNibHVlICNyZ2JhIHsKICBjb2xvcjogcmdiYSgwLCAwLCAyNTUsIDAuMSk7Cn0KI2JsdWUgI2FyZ2IgewogIGNvbG9yOiAjMWEwMDAwZmY7Cn0KI2FscGhhICNoc2xhIHsKICBjb2xvcjogaHNsYSgxMSwgMjAlLCAyMCUsIDAuNik7Cn0KI292ZXJmbG93IC5hIHsKICBjb2xvcjogIzAwMDAwMDsKfQojb3ZlcmZsb3cgLmIgewogIGNvbG9yOiAjZmZmZmZmOwp9CiNvdmVyZmxvdyAuYyB7CiAgY29sb3I6ICNmZmZmZmY7Cn0KI292ZXJmbG93IC5kIHsKICBjb2xvcjogIzAwZmYwMDsKfQojb3ZlcmZsb3cgLmUgewogIGNvbG9yOiByZ2JhKDAsIDMxLCAyNTUsIDAuNDIpOwp9CiNncmV5IHsKICBjb2xvcjogI2M4YzhjODsKfQojMzMzMzMzIHsKICBjb2xvcjogIzMzMzMzMzsKfQojODA4MDgwIHsKICBjb2xvcjogaHNsKDAsIDAlLCA1MCUpOwp9CiMwMGZmMDAgewogIGNvbG9yOiBoc2woMTIwLCAxMDAlLCA1MCUpOwp9Ci5saWdodGVuYmx1ZSB7CiAgY29sb3I6ICMzMzMzZmY7Cn0KLmRhcmtlbmJsdWUgewogIGNvbG9yOiAjMDAwMGNjOwp9Ci51bmtub3duY29sb3JzIHsKICBjb2xvcjogYmx1ZTI7CiAgYm9yZGVyOiAycHggc29saWQgc3VwZXJyZWQ7Cn0KLnRyYW5zcGFyZW50IHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQojYWxwaGEgI2Zyb212YXIgewogIG9wYWNpdHk6IDAuNzsKfQojYWxwaGEgI3Nob3J0IHsKICBvcGFjaXR5OiAxOwp9CiNhbHBoYSAjbG9uZyB7CiAgb3BhY2l0eTogMTsKfQojYWxwaGEgI3JnYmEgewogIG9wYWNpdHk6IDAuMjsKfQojYWxwaGEgI2hzbCB7CiAgb3BhY2l0eTogMTsKfQojcGVyY2VudGFnZSB7CiAgY29sb3I6IDI1NTsKICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/comments.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqKioqKioqKioqKioqKioqKlwKKiAgICAgICAgICAgICAgICAgICoKKiAgQ29tbWVudCBIZWFkZXIgICoKKiAgICAgICAgICAgICAgICAgICoKXCoqKioqKioqKioqKioqKioqKi8KLyoKCiAgICBDb21tZW50CgoqLwovKgogKiBDb21tZW50IFRlc3QKICoKICogLSBjbG91ZGhlYWQgKGh0dHA6Ly9jbG91ZGhlYWQubmV0KQogKgogKi8KLyogQ29sb3JzCiAqIC0tLS0tLQogKiAgICNFREY4RkMgKGJhY2tncm91bmQgYmx1ZSkKICogICAjMTY2Qzg5IChkYXJrZXN0IGJsdWUpCiAqCiAqIFRleHQ6CiAqICAgIzMzMyAoc3RhbmRhcmQgdGV4dCkgLy8gQSBjb21tZW50IHdpdGhpbiBhIGNvbW1lbnQhCiAqICAgIzFGOUVDOSAoc3RhbmRhcmQgbGluaykKICoKICovCi8qIEBncm91cCBWYXJpYWJsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwojY29tbWVudHMsCi5jb21tZW50cyB7CiAgLyoqLwogIGNvbG9yOiByZWQ7CiAgLyogQSBDLXN0eWxlIGNvbW1lbnQgKi8KICAvKiBBIEMtc3R5bGUgY29tbWVudCAqLwogIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsKICBmb250LXNpemU6IDEycHg7CiAgLyogbG9zdCBjb21tZW50ICovCiAgY29udGVudDogImNvbnRlbnQiOwogIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAyZW07Cn0KLyogY29tbWVudGVkIG91dAogICNtb3JlLWNvbW1lbnRzIHsKICAgIGNvbG9yOiBncmV5OwogIH0KKi8KLnNlbGVjdG9yLAoubG90cywKLmNvbW1lbnRzIHsKICBjb2xvcjogZ3JleSwgLyogYmx1ZSAqLyBvcmFuZ2U7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHggLyogd2Via2l0IG9ubHkgKi87CiAgLW1vei1ib3JkZXItcmFkaXVzOiA4cHggLyogbW96IG9ubHkgd2l0aCBvcGVyYXRpb24gKi87Cn0KLnRlc3QgewogIGNvbG9yOiAxcHg7Cn0KLnNyLW9ubHktZm9jdXNhYmxlIHsKICBjbGlwOiBhdXRvOwp9CkAtd2Via2l0LWtleWZyYW1lcyBob3ZlciB7CiAgLyogYW5kIENocm9tZSAqLwogIDAlIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CiNsYXN0IHsKICBjb2xvcjogYmx1ZTsKfQovKiAgKi8KLyogeyAqLwovKiAgKi8KLyogICovCi8qICAqLwojZGl2IHsKICBjb2xvcjogI0EzMzsKfQovKiB9ICovCi8qYnkgYmxvY2sgKi8KI291dHB1dC1ibG9jayB7CiAgY29tbWVudDogLyogLy8gTm90IGNvbW1lbnRlZCBvdXQgLy8gKi87Cn0KLypjb21tZW50IG9uIGxhc3QgbGluZSovCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/compression/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/compression/compression.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2NvbG91cnN7Y29sb3IxOiNmZWE7Y29sb3IyOiNmZmVlYWE7Y29sb3IzOnJnYmEoMjU1LDIzOCwxNzAsMC4xKTtzdHJpbmc6IiNmZWEiOy8qISBidXQgbm90IHRoaXMgdHlwZQogICAgICBOb3RlIHByZXNlcnZlZCB3aGl0ZXNwYWNlCiAgKi99ZGltZW5zaW9uc3t2YWw6LjFweDt2YWw6MDt2YWw6NGNtO3ZhbDouMjt2YWw6NTthbmdsZXMtbXVzdC1oYXZlLXVuaXQ6MGRlZztkdXJhdGlvbnMtbXVzdC1oYXZlLXVuaXQ6MHM7bGVuZ3RoLWRvZXNudC1oYXZlLXVuaXQ6MDt3aWR0aDphdXRvXDl9QHBhZ2V7bWFya3M6bm9uZTtAdG9wLWxlZnQtY29ybmVye3ZlcnRpY2FsLWFsaWduOnRvcH1AdG9wLWxlZnR7dmVydGljYWwtYWxpZ246dG9wfX0uc2hhZG93Xi5kb20sYm9keV5eLnNoYWRvd3tkaXNwbGF5OmRvbmV9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/css-3.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNvbW1hLWRlbGltaXRlZCB7CiAgdGV4dC1zaGFkb3c6IC0xcHggLTFweCAxcHggcmVkLCA2cHggNXB4IDVweCB5ZWxsb3c7CiAgLW1vei1ib3gtc2hhZG93OiAwcHQgMHB0IDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgaW5zZXQsIDBwdCA0cHggNnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSBpbnNldDsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiBIZWFkbGluZTsKICB1bmljb2RlLXJhbmdlOiBVKz8/Pz8/PywgVSswPz8/LCBVKzAtN0YsIFUrQTU7Cn0KLm90aGVyIHsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDExZW0pIHJvdGF0ZSgtOTBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlWCg0NWRlZyk7Cn0KLml0ZW1bZGF0YS1jcmFfenktYXR0cjFiLXV0Mz1ib2xkXSB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KcDpub3QoW2NsYXNzKj0ibGVhZCJdKSB7CiAgY29sb3I6IGJsYWNrOwp9CmlucHV0W3R5cGU9InRleHQiXS5jbGFzcyNpZFthdHRyPTMyXTpub3QoMSkgewogIGNvbG9yOiB3aGl0ZTsKfQpkaXYjaWQuY2xhc3NbYT0xXVtiPTJdLmNsYXNzOm5vdCgxKSB7CiAgY29sb3I6IHdoaXRlOwp9CnVsLmNvbW1hID4gbGk6bm90KDpvbmx5LWNoaWxkKTo6YWZ0ZXIgewogIGNvbG9yOiB3aGl0ZTsKfQpvbC5jb21tYSA+IGxpOm50aC1sYXN0LWNoaWxkKDIpOjphZnRlciB7CiAgY29sb3I6IHdoaXRlOwp9CmxpOm50aC1jaGlsZCg0bisxKSwKbGk6bnRoLWNoaWxkKC01biksCmxpOm50aC1jaGlsZCgtbisyKSB7CiAgY29sb3I6IHdoaXRlOwp9CmFbaHJlZl49Imh0dHA6Ly8iXSB7CiAgY29sb3I6IGJsYWNrOwp9CmFbaHJlZiQ9Imh0dHA6Ly8iXSB7CiAgY29sb3I6IGJsYWNrOwp9CmZvcm1bZGF0YS1kaXNhYmxlZF0gewogIGNvbG9yOiBibGFjazsKfQpwOjpiZWZvcmUgewogIGNvbG9yOiBibGFjazsKfQojaXNzdWUzMjIgewogIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltMiA3cyBpbmZpbml0ZSBlYXNlLWluLW91dDsKfQpALXdlYmtpdC1rZXlmcmFtZXMgZnJhbWVzIHsKICAwJSB7CiAgICBib3JkZXI6IDFweDsKICB9CiAgNS41JSB7CiAgICBib3JkZXI6IDJweDsKICB9CiAgMTAwJSB7CiAgICBib3JkZXI6IDNweDsKICB9Cn0KQGtleWZyYW1lcyBmb250YnVsZ2VyMSB7CiAgdG8gewogICAgZm9udC1zaXplOiAxNXB4OwogIH0KICBmcm9tLAogIHRvIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICB9CiAgMCUsCiAgMTAwJSB7CiAgICBmb250LXNpemU6IDEycHg7CiAgfQp9Ci51bml0cyB7CiAgZm9udDogMS4ycmVtLzJyZW07CiAgZm9udDogOHZ3Lzl2dzsKICBmb250OiAxMHZoLzEydmg7CiAgZm9udDogMTJ2bS8xNXZtOwogIGZvbnQ6IDEydm1pbi8xNXZtaW47CiAgZm9udDogMS4yY2gvMS41Y2g7Cn0KQHN1cHBvcnRzICggYm94LXNoYWRvdzogMnB4IDJweCAycHggYmxhY2sgKSBvcgogICAgICAgICAgKCAtbW96LWJveC1zaGFkb3c6IDJweCAycHggMnB4IGJsYWNrICkgewogIC5vdXRsaW5lIHsKICAgIGJveC1zaGFkb3c6IDJweCAycHggMnB4IGJsYWNrOwogICAgLW1vei1ib3gtc2hhZG93OiAycHggMnB4IDJweCBibGFjazsKICB9Cn0KQC14LWRvY3VtZW50IHVybC1wcmVmaXgoIiJnaXRodWIuY29tIiIpIHsKICBoMSB7CiAgICBjb2xvcjogcmVkOwogIH0KfQpAdmlld3BvcnQgewogIGZvbnQtc2l6ZTogMTBweDsKfQpAbmFtZXNwYWNlIGZvbyB1cmwoaHR0cDovL3d3dy5leGFtcGxlLmNvbSk7CmZvb3xoMSB7CiAgY29sb3I6IGJsdWU7Cn0KZm9vfCogewogIGNvbG9yOiB5ZWxsb3c7Cn0KfGgxIHsKICBjb2xvcjogcmVkOwp9Cip8aDEgewogIGNvbG9yOiBncmVlbjsKfQpoMSB7CiAgY29sb3I6IGdyZWVuOwp9Ci51cHBlci10ZXN0IHsKICBVcHBlckNhc2VQcm9wZXJ0aWVzOiBhbGxvd2VkOwp9CkBob3N0IHsKICBkaXYgewogICAgZGlzcGxheTogYmxvY2s7CiAgfQp9Cjo6ZGlzdHJpYnV0ZWQoaW5wdXQ6OnBsYWNlaG9sZGVyKSB7CiAgY29sb3I6ICNiM2IzYjM7Cn0KLnNoYWRvdyBeIC5kb20sCmJvZHkgXl4gLnNoYWRvdyB7CiAgZGlzcGxheTogZG9uZTsKfQo6aG9zdCguc2VsIC5hKSwKOmhvc3QtY29udGV4dCguc2VsIC5iKSwKLnNlbCAvZGVlcC8gLmIsCjo6Y29udGVudCAuc2VsIHsKICB0eXBlOiBzaGFkb3ctZG9tOwp9CiAvZGVlcC8gYiB7CiAgYzogJ2QnOwp9CiAvZGVlcC8gYltlXSB7CiAgZjogJ2cnOwp9CiNpc3N1ZTIwNjYgewogIGJhY2tncm91bmQ6IHVybCgnL2ltYWdlcy9pY29uLXRlYW0uc3ZnJykgMCAwIC8gY29udGFpbjsKfQpAY291bnRlci1zdHlsZSB0cmlhbmdsZSB7CiAgc3lzdGVtOiBjeWNsaWM7CiAgc3ltYm9sczog4oCjOwogIHN1ZmZpeDogIiAiOwp9CkAtbXMtdmlld3BvcnQgewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/css-escapes.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVzY2FwZVx8cmFuZG9tXHxjaGFyIHsKICBjb2xvcjogcmVkOwp9Ci5taXhpblwhdFVwIHsKICBmb250LXdlaWdodDogYm9sZDsKfQouXDM0IDA0IHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLlwzNCAwNCBzdHJvbmcgewogIGNvbG9yOiBmdWNoc2lhOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci50cmFpbGluZ1Rlc3RcKyB7CiAgY29sb3I6IHJlZDsKfQovKiBUaGlzIGhpZGVvdXMgdGVzdCBvZiBoaWRlb3VzbmVzcyBjaGVja3MgZm9yIHRoZSBzZWxlY3RvciAiYmxvY2txdW90ZSIgd2l0aCB2YXJpb3VzIHBlcm11dGF0aW9ucyBvZiBoZXggZXNjYXBlcyAqLwpcNjJcNmNcNmYgXDYzIFw2QiBcMDA3MSBcMDAwMDc1b1w3NCBlIHsKICBjb2xvcjogc2lsdmVyOwp9CltuZ1w6Y2xvYWtdLApuZ1w6Zm9ybSB7CiAgZGlzcGxheTogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/css-guards.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmxpZ2h0IHsKICBjb2xvcjogZ3JlZW47Cn0KLnNlZS10aGUgewogIGNvbG9yOiBncmVlbjsKfQouaGlkZS10aGUgewogIGNvbG9yOiBncmVlbjsKfQoubXVsdGlwbGUtY29uZGl0aW9ucy0xIHsKICBjb2xvcjogcmVkOwp9Ci5pbmhlcml0YW5jZSAudGVzdCB7CiAgY29sb3I6IGJsYWNrOwp9Ci5pbmhlcml0YW5jZTpob3ZlciB7CiAgY29sb3I6IHBpbms7Cn0KLmNsc1dpdGhHdWFyZCB7CiAgZGlzcGFseTogbm9uZTsKfQouZG9udC1zcGxpdC1tZS11cCB7CiAgd2lkdGg6IDFweDsKICBjb2xvcjogcmVkOwogIGhlaWdodDogMXB4Owp9CiArIC5kb250LXNwbGl0LW1lLXVwIHsKICBzaWJsaW5nOiB0cnVlOwp9Ci5zY29wZS1jaGVjayB7CiAgc3ViLXByb3A6IDJweDsKICBwcm9wOiAxcHg7Cn0KLnNjb3BlLWNoZWNrLTIgewogIHN1Yi1wcm9wOiAycHg7CiAgcHJvcDogMXB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/css.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKZGl2IHsKICBjb2xvcjogYmxhY2s7Cn0KZGl2IHsKICB3aWR0aDogOTklOwp9CiogewogIG1pbi13aWR0aDogNDVlbTsKfQpoMSwKaDIgPiBhID4gcCwKaDMgewogIGNvbG9yOiBub25lOwp9CmRpdi5jbGFzcyB7CiAgY29sb3I6IGJsdWU7Cn0KZGl2I2lkIHsKICBjb2xvcjogZ3JlZW47Cn0KLmNsYXNzI2lkIHsKICBjb2xvcjogcHVycGxlOwp9Ci5vbmUudHdvLnRocmVlIHsKICBjb2xvcjogZ3JleTsKfQpAbWVkaWEgcHJpbnQgewogICogewogICAgZm9udC1zaXplOiAzZW07CiAgfQp9CkBtZWRpYSBzY3JlZW4gewogICogewogICAgZm9udC1zaXplOiAxMHB4OwogIH0KfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dhcmFtb25kIFBybyc7Cn0KYTpob3ZlciwKYTpsaW5rIHsKICBjb2xvcjogIzk5OTsKfQpwLApwOmZpcnN0LWNoaWxkIHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQpxOmxhbmcobm8pIHsKICBxdW90ZXM6IG5vbmU7Cn0KcCArIGgxIHsKICBmb250LXNpemU6IDIuMmVtOwp9CiNzaG9ydGhhbmRzIHsKICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogIGZvbnQ6IDEycHgvMTZweCBBcmlhbDsKICBmb250OiAxMDAlLzE2cHggQXJpYWw7CiAgbWFyZ2luOiAxcHggMDsKICBwYWRkaW5nOiAwIGF1dG87Cn0KI21vcmUtc2hvcnRoYW5kcyB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDFweCAwIDJweCAwOwogIGZvbnQ6IG5vcm1hbCBzbWFsbCAvIDIwcHggJ1RyZWJ1Y2hldCBNUycsIFZlcmRhbmEsIHNhbnMtc2VyaWY7CiAgZm9udDogMC8wIGE7CiAgYm9yZGVyLXJhZGl1czogNXB4IC8gMTBweDsKfQoubWlzYyB7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7CiAgd2lkdGg6IC4xZW07CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTk5ODsKICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJlZCksIHRvKGJsdWUpKTsKICBtYXJnaW46IDsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsKICB3aWR0aDogYXV0b1w5Owp9Ci5taXNjIC5uZXN0ZWQtbXVsdGlwbGUgewogIG11bHRpcGxlLXNlbWktY29sb25zOiB5ZXM7Cn0KI2ltcG9ydGFudCB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMDAlIWltcG9ydGFudDsKICBoZWlnaHQ6IDIwcHggISBpbXBvcnRhbnQ7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IGZvbnQtYTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogZm9udC1iOwp9Ci7DpsO4w6UgewogIG1hcmdpbjogMDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/debug/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/debug/linenumbers-all.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyogbGluZSAxLCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMxfX0KLyogQGNoYXJzZXQgIklTTy04ODU5LTEiOyAqLwoKLyogbGluZSAyMywge3BhdGhpbXBvcnR9dGVzdC5sZXNzICovCkBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGltcG9ydGVzY310ZXN0XC5sZXNzfWxpbmV7Zm9udC1mYW1pbHk6XDAwMDAzMjN9fQoudHN0MyB7CiAgY29sb3I6IGdyZXk7Cn0KLyogbGluZSAxNSwge3BhdGh9bGluZW51bWJlcnMubGVzcyAqLwpAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhlc2N9bGluZW51bWJlcnNcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMxNX19Ci50ZXN0MSB7CiAgY29sb3I6IGJsYWNrOwp9Ci8qIGxpbmUgNiwge3BhdGh9bGluZW51bWJlcnMubGVzcyAqLwpAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhlc2N9bGluZW51bWJlcnNcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDM2fX0KLnRlc3QyIHsKICBjb2xvcjogcmVkOwp9CkBtZWRpYSBhbGwgewogIC8qIGxpbmUgNSwge3BhdGhpbXBvcnR9dGVzdC5sZXNzICovCiAgQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDM1fX0KICAudHN0IHsKICAgIGNvbG9yOiBibGFjazsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgc2NyZWVuIHsKICAvKiBsaW5lIDcsIHtwYXRoaW1wb3J0fXRlc3QubGVzcyAqLwogIEBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGltcG9ydGVzY310ZXN0XC5sZXNzfWxpbmV7Zm9udC1mYW1pbHk6XDAwMDAzN319CiAgLnRzdCB7CiAgICBjb2xvcjogcmVkOwogIH0KICAvKiBsaW5lIDksIHtwYXRoaW1wb3J0fXRlc3QubGVzcyAqLwogIEBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGltcG9ydGVzY310ZXN0XC5sZXNzfWxpbmV7Zm9udC1mYW1pbHk6XDAwMDAzOX19CiAgLnRzdCAudHN0MyB7CiAgICBjb2xvcjogd2hpdGU7CiAgfQp9Ci8qIGxpbmUgMTgsIHtwYXRoaW1wb3J0fXRlc3QubGVzcyAqLwpAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhpbXBvcnRlc2N9dGVzdFwubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzE4fX0KLnRzdDIgewogIGNvbG9yOiB3aGl0ZTsKfQovKiBsaW5lIDI3LCB7cGF0aH1saW5lbnVtYmVycy5sZXNzICovCkBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGVzY31saW5lbnVtYmVyc1wubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzI3fX0KLnRlc3QgewogIGNvbG9yOiByZWQ7CiAgd2lkdGg6IDI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/debug/linenumbers-comments.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyogbGluZSAxLCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KLyogQGNoYXJzZXQgIklTTy04ODU5LTEiOyAqLwoKLyogbGluZSAyMywge3BhdGhpbXBvcnR9dGVzdC5sZXNzICovCi50c3QzIHsKICBjb2xvcjogZ3JleTsKfQovKiBsaW5lIDE1LCB7cGF0aH1saW5lbnVtYmVycy5sZXNzICovCi50ZXN0MSB7CiAgY29sb3I6IGJsYWNrOwp9Ci8qIGxpbmUgNiwge3BhdGh9bGluZW51bWJlcnMubGVzcyAqLwoudGVzdDIgewogIGNvbG9yOiByZWQ7Cn0KQG1lZGlhIGFsbCB7CiAgLyogbGluZSA1LCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KICAudHN0IHsKICAgIGNvbG9yOiBibGFjazsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgc2NyZWVuIHsKICAvKiBsaW5lIDcsIHtwYXRoaW1wb3J0fXRlc3QubGVzcyAqLwogIC50c3QgewogICAgY29sb3I6IHJlZDsKICB9CiAgLyogbGluZSA5LCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KICAudHN0IC50c3QzIHsKICAgIGNvbG9yOiB3aGl0ZTsKICB9Cn0KLyogbGluZSAxOCwge3BhdGhpbXBvcnR9dGVzdC5sZXNzICovCi50c3QyIHsKICBjb2xvcjogd2hpdGU7Cn0KLyogbGluZSAyNywge3BhdGh9bGluZW51bWJlcnMubGVzcyAqLwoudGVzdCB7CiAgY29sb3I6IHJlZDsKICB3aWR0aDogMjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/debug/linenumbers-mediaquery.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMxfX0KLyogQGNoYXJzZXQgIklTTy04ODU5LTEiOyAqLwoKQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMyM319Ci50c3QzIHsKICBjb2xvcjogZ3JleTsKfQpAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhlc2N9bGluZW51bWJlcnNcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMxNX19Ci50ZXN0MSB7CiAgY29sb3I6IGJsYWNrOwp9CkBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGVzY31saW5lbnVtYmVyc1wubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzZ9fQoudGVzdDIgewogIGNvbG9yOiByZWQ7Cn0KQG1lZGlhIGFsbCB7CiAgQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDM1fX0KICAudHN0IHsKICAgIGNvbG9yOiBibGFjazsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgc2NyZWVuIHsKICBAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhpbXBvcnRlc2N9dGVzdFwubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzd9fQogIC50c3QgewogICAgY29sb3I6IHJlZDsKICB9CiAgQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDM5fX0KICAudHN0IC50c3QzIHsKICAgIGNvbG9yOiB3aGl0ZTsKICB9Cn0KQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMxOH19Ci50c3QyIHsKICBjb2xvcjogd2hpdGU7Cn0KQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoZXNjfWxpbmVudW1iZXJzXC5sZXNzfWxpbmV7Zm9udC1mYW1pbHk6XDAwMDAzMjd9fQoudGVzdCB7CiAgY29sb3I6IHJlZDsKICB3aWR0aDogMjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/detached-rulesets.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LndyYXAtc2VsZWN0b3IgewogIGNvbG9yOiBibGFjazsKICBvbmU6IDFweDsKICBmb3VyOiBtYWdpYy1mcmFtZTsKICB2aXNpYmxlLW9uZTogdmlzaWJsZTsKICB2aXNpYmxlLXR3bzogdmlzaWJsZTsKfQoud3JhcC1zZWxlY3RvciB7CiAgY29sb3I6IHJlZDsKICB2aXNpYmxlLW9uZTogdmlzaWJsZTsKICB2aXNpYmxlLXR3bzogdmlzaWJsZTsKfQoud3JhcC1zZWxlY3RvciB7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQ6IHdoaXRlOwogIHZpc2libGUtb25lOiB2aXNpYmxlOwogIHZpc2libGUtdHdvOiB2aXNpYmxlOwp9CmhlYWRlciB7CiAgYmFja2dyb3VuZDogYmx1ZTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwKSB7CiAgaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICB9Cn0KaHRtbC5sdC1pZTkgaGVhZGVyIHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLndyYXAtc2VsZWN0b3IgewogIHRlc3Q6IGV4dHJhLXdyYXA7CiAgdmlzaWJsZS1vbmU6IHZpc2libGU7CiAgdmlzaWJsZS10d286IHZpc2libGU7Cn0KLndyYXAtc2VsZWN0b3IgLndyYXAtc2VsZWN0b3IgewogIHRlc3Q6IHdyYXBwZWQtdHdpY2U7CiAgdmlzaWJsZS1vbmU6IHZpc2libGU7CiAgdmlzaWJsZS10d286IHZpc2libGU7Cn0KLndyYXAtc2VsZWN0b3IgewogIHRlc3QtZnVuYzogOTA7CiAgdGVzdC1hcml0aG1ldGljOiAxOHB4OwogIHZpc2libGUtb25lOiB2aXNpYmxlOwogIHZpc2libGUtdHdvOiB2aXNpYmxlOwp9Ci53aXRob3V0LW1peGlucyB7CiAgYjogMTsKfQpAbWVkaWEgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgYW5kIHR2IHsKICAubXktc2VsZWN0b3IgewogICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgfQp9CkBtZWRpYSAob3JpZW50YXRpb246IHBvcnRyYWl0KSBhbmQgd2lkZXNjcmVlbiBhbmQgcHJpbnQgYW5kIHR2IHsKICAudHJpcGxlLXdyYXBwZWQtbXEgewogICAgdHJpcGxlOiB0cnVlOwogIH0KfQpAbWVkaWEgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgYW5kIHdpZGVzY3JlZW4gYW5kIHR2IHsKICAudHJpcGxlLXdyYXBwZWQtbXEgewogICAgdHJpcGxlOiB0cnVlOwogIH0KfQpAbWVkaWEgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgYW5kIHR2IHsKICAudHJpcGxlLXdyYXBwZWQtbXEgewogICAgdHJpcGxlOiB0cnVlOwogIH0KfQouYSB7CiAgdGVzdDogdGVzdDsKfQouYXJndW1lbnQtZGVmYXVsdCB7CiAgZGVmYXVsdDogd29ya3M7CiAgZGlyZWN0OiB3b3JrczsKICBuYW1lZDogd29ya3M7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/directives-bubling.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVudCB7CiAgY29sb3I6IGdyZWVuOwp9CkBkb2N1bWVudCB1cmwtcHJlZml4KCkgewogIC5wYXJlbnQgLmNoaWxkIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CkBzdXBwb3J0cyAoc2FuZHdpdGNoOiBidXR0ZXIpIHsKICAuaW5zaWRlIC50b3AgewogICAgcHJvcGVydHk6IHZhbHVlOwogIH0KfQpAc3VwcG9ydHMgKHNhbmR3aXRjaDogYnJlYWQpIHsKICAuaW4xIC5pbjIgewogICAgcHJvcGVydHk6IHZhbHVlOwogIH0KfQpAc3VwcG9ydHMgKHNhbmR3aXRjaDogaGFtKSB7CiAgLmluc2lkZSAudG9wIHsKICAgIHByb3BlcnR5OiB2YWx1ZTsKICB9Cn0KQHN1cHBvcnRzIChmb250LWZhbWlseTogd2VpcmRGb250KSB7CiAgQGZvbnQtZmFjZSB7CiAgICBmb250LWZhbWlseTogc29tZXRoaW5nOwogICAgc3JjOiBtYWRlLXVwLXVybDsKICB9Cn0KQGZvbnQtZmFjZSB7CiAgQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQpIHsKICAgIGZvbnQtZmFtaWx5OiBzb21ldGhpbmc7CiAgICBzcmM6IG1hZGUtdXAtdXJsOwogIH0KfQpAc3VwcG9ydHMgKHByb3BlcnR5OiB2YWx1ZSkgewogIEBtZWRpYSAobWF4LXNpemU6IDJweCkgewogICAgQHN1cHBvcnRzICh3aGF0ZXZlcjogc29tZXRoaW5nKSB7CiAgICAgIC5vdXRPZk1lZGlhICB7CiAgICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgICB9CiAgICB9CiAgfQp9CkBzdXBwb3J0cyAocHJvcGVydHk6IHZhbHVlKSB7CiAgQG1lZGlhIChtYXgtc2l6ZTogMnB4KSB7CiAgICBAc3VwcG9ydHMgKHdoYXRldmVyOiBzb21ldGhpbmcpIHsKICAgICAgLm9uVG9wICB7CiAgICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgICB9CiAgICB9CiAgfQp9CkBtZWRpYSBwcmludCB7CiAgaHRtbCB7CiAgICBpbi1odG1sOiB2aXNpYmxlOwogIH0KICBAc3VwcG9ydHMgKHVwcGVyOiB0ZXN0KSB7CiAgICBodG1sIHsKICAgICAgaW4tc3VwcG9ydHM6IGZpcnN0OwogICAgfQogICAgaHRtbCBkaXYgewogICAgICBpbi1kaXY6IHZpc2libGU7CiAgICB9CiAgICBAc3VwcG9ydHMgbm90ICgtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBzdWJwaXhlbC1hbnRpYWxpYXNlZCkgewogICAgICBodG1sIGRpdiB7CiAgICAgICAgaW4tc3VwcG9ydHM6IHNlY29uZDsKICAgICAgfQogICAgICBAbWVkaWEgc2NyZWVuIHsKICAgICAgICBodG1sIGRpdiB7CiAgICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIH0KICAgICAgICBodG1sIGRpdiBuZXN0ZWQgewogICAgICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQpAbWVkaWEgcHJpbnQgYW5kIChtYXgtc2l6ZTogMnB4KSB7CiAgLmluMSB7CiAgICBzdGF5OiBoZXJlOwogIH0KICBAc3VwcG9ydHMgbm90ICgtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBzdWJwaXhlbC1hbnRpYWxpYXNlZCkgewogICAgQHN1cHBvcnRzICh3aGF0ZXZlcjogc29tZXRoaW5nKSB7CiAgICAgIC5pbjIgLmluMSB7CiAgICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgICB9CiAgICB9CiAgfQp9Cmh0bWwgewogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQ7Cn0KQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQpIHsKICBodG1sIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgfQogIGh0bWwgbmVzdGVkIHsKICAgIHByb3BlcnR5OiB2YWx1ZTsKICB9Cn0KLm9uVG9wIHsKICBhbmltYXRpb246ICJ0ZXh0c2NhbGUiOwogIGZvbnQtZmFtaWx5OiBzb21ldGhpbmc7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IHNvbWV0aGluZzsKICBzcmM6IG1hZGUtdXAtdXJsOwp9CkBrZXlmcmFtZXMgInRleHRzY2FsZSIgewogIDAlIHsKICAgIGZvbnQtc2l6ZTogMWVtOwogIH0KICAxMDAlIHsKICAgIGZvbnQtc2l6ZTogMmVtOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/empty.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/extend-chaining.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEsCi5iLAouYyB7CiAgY29sb3I6IGJsYWNrOwp9Ci5mLAouZSwKLmQgewogIGNvbG9yOiBibGFjazsKfQouZy5oLAouaS5qLmgsCi5rLmouaCB7CiAgY29sb3I6IGJsYWNrOwp9Ci5pLmosCi5rLmogewogIGNvbG9yOiB3aGl0ZTsKfQoubCwKLm0sCi5uLAoubywKLnAsCi5xLAouciwKLnMsCi50IHsKICBjb2xvcjogYmxhY2s7Cn0KLnUsCi52LnUudiB7CiAgY29sb3I6IGJsYWNrOwp9Ci53LAoudi53LnYgewogIGNvbG9yOiBibGFjazsKfQoueCwKLnksCi56IHsKICBjb2xvcjogeDsKfQoueSwKLnosCi54IHsKICBjb2xvcjogeTsKfQoueiwKLngsCi55IHsKICBjb2xvcjogejsKfQoudmEsCi52YiwKLnZjIHsKICBjb2xvcjogYmxhY2s7Cn0KLnZiLAoudmMgewogIGNvbG9yOiB3aGl0ZTsKfQpAbWVkaWEgdHYgewogIC5tYSwKICAubWIsCiAgLm1jIHsKICAgIGNvbG9yOiBibGFjazsKICB9CiAgLm1kLAogIC5tYSwKICAubWIsCiAgLm1jIHsKICAgIGNvbG9yOiB3aGl0ZTsKICB9Cn0KQG1lZGlhIHR2IGFuZCBwbGFzbWEgewogIC5tZSwKICAubWYgewogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/extend-clearfix.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsZWFyZml4LAouZm9vLAouYmFyIHsKICAqem9vbTogMTsKfQouY2xlYXJmaXg6YWZ0ZXIsCi5mb286YWZ0ZXIsCi5iYXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGJsb2NrOwogIGNsZWFyOiBib3RoOwogIGhlaWdodDogMDsKfQouZm9vIHsKICBjb2xvcjogcmVkOwp9Ci5iYXIgewogIGNvbG9yOiBibHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/extend-exact.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnJlcGxhY2UucmVwbGFjZSAucmVwbGFjZSwKLmMucmVwbGFjZSArIC5yZXBsYWNlIC5yZXBsYWNlLAoucmVwbGFjZS5yZXBsYWNlIC5jLAouYy5yZXBsYWNlICsgLnJlcGxhY2UgLmMsCi5yZXBfYWNlIHsKICBwcm9wOiBjb3B5LXBhc3RlLXJlcGxhY2U7Cn0KLmEgLmIgLmMgewogIHByb3A6IG5vdF9lZmZlY3RlZDsKfQouYSwKLmVmZmVjdGVkIHsKICBwcm9wOiBpc19lZmZlY3RlZDsKfQouYSAuYiB7CiAgcHJvcDogbm90X2VmZmVjdGVkOwp9Ci5hIC5iLmMgewogIHByb3A6IG5vdF9lZmZlY3RlZDsKfQouYyAuYiAuYSwKLmEgLmIgLmEsCi5jIC5hIC5hLAouYSAuYSAuYSwKLmMgLmIgLmMsCi5hIC5iIC5jLAouYyAuYSAuYywKLmEgLmEgLmMgewogIHByb3A6IG5vdF9lZmZlY3RlZDsKfQouZS5lLAouZGJsIHsKICBwcm9wOiBleHRlbmQtZG91YmxlOwp9Ci5lLmU6aG92ZXIgewogIGhvdmVyOiBub3QtZXh0ZW5kZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/extend-media.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV4dDEgLmV4dDIsCi5hbGwgLmV4dDIgewogIGJhY2tncm91bmQ6IGJsYWNrOwp9CkBtZWRpYSB0diB7CiAgLmV4dDEgLmV4dDMsCiAgLnR2LWxvd3JlcyAuZXh0MywKICAuYWxsIC5leHQzIHsKICAgIGNvbG9yOiB3aGl0ZTsKICB9CiAgLnR2LWxvd3JlcyB7CiAgICBiYWNrZ3JvdW5kOiBibHVlOwogIH0KfQpAbWVkaWEgdHYgYW5kIGhpcmVzIHsKICAuZXh0MSAuZXh0NCwKICAudHYtaGlyZXMgLmV4dDQsCiAgLmFsbCAuZXh0NCB7CiAgICBjb2xvcjogZ3JlZW47CiAgfQogIC50di1oaXJlcyB7CiAgICBiYWNrZ3JvdW5kOiByZWQ7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/extend-nest.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNpZGViYXIsCi5zaWRlYmFyMiwKLnR5cGUxIC5zaWRlYmFyMywKLnR5cGUyLnNpZGViYXI0IHsKICB3aWR0aDogMzAwcHg7CiAgYmFja2dyb3VuZDogcmVkOwp9Ci5zaWRlYmFyIC5ib3gsCi5zaWRlYmFyMiAuYm94LAoudHlwZTEgLnNpZGViYXIzIC5ib3gsCi50eXBlMi5zaWRlYmFyNCAuYm94IHsKICBiYWNrZ3JvdW5kOiAjRkZGOwogIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgbWFyZ2luOiAxMHB4IDA7Cn0KLnNpZGViYXIyIHsKICBiYWNrZ3JvdW5kOiBibHVlOwp9Ci50eXBlMSAuc2lkZWJhcjMgewogIGJhY2tncm91bmQ6IGdyZWVuOwp9Ci50eXBlMi5zaWRlYmFyNCB7CiAgYmFja2dyb3VuZDogcmVkOwp9Ci5idXR0b24sCi5zdWJtaXQgewogIGNvbG9yOiBibGFjazsKfQouYnV0dG9uOmhvdmVyLAouc3VibWl0OmhvdmVyIHsKICBjb2xvcjogd2hpdGU7Cn0KLmJ1dHRvbjIgOmhvdmVyIHsKICBuZXN0ZWQ6IHdoaXRlOwp9Ci5idXR0b24yIDpob3ZlciB7CiAgbm90bmVzdGVkOiBibGFjazsKfQouYW1wLXRlc3QtaCwKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lLmFtcC10ZXN0LWcgewogIHRlc3Q6IGV4dGVuZGVkIGJ5IG1hc3NlcyBvZiBzZWxlY3RvcnM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/extend-selector.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVycm9yLAouYmFkRXJyb3IgewogIGJvcmRlcjogMXB4ICNmMDA7CiAgYmFja2dyb3VuZDogI2ZkZDsKfQouZXJyb3IuaW50cnVzaW9uLAouYmFkRXJyb3IuaW50cnVzaW9uIHsKICBmb250LXNpemU6IDEuM2VtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5pbnRydXNpb24gLmVycm9yLAouaW50cnVzaW9uIC5iYWRFcnJvciB7CiAgZGlzcGxheTogbm9uZTsKfQouYmFkRXJyb3IgewogIGJvcmRlci13aWR0aDogM3B4Owp9Ci5mb28gLmJhciwKLmZvbyAuYmF6LAouZXh0MSAuZXh0MiAuYmFyLAouZXh0MSAuZXh0MiAuYmF6LAouZXh0MyAuYmFyLAouZXh0MyAuYmF6LAouZXh0NCAuYmFyLAouZXh0NCAuYmF6IHsKICBkaXNwbGF5OiBub25lOwp9CmRpdi5leHQ1LAouZXh0NiA+IC5leHQ1LApkaXYuZXh0NywKLmV4dDYgPiAuZXh0NyB7CiAgd2lkdGg6IDEwMHB4Owp9Ci5leHQsCi5hIC5jLAouYiAuYyB7CiAgdGVzdDogMTsKfQouYSwKLmIgewogIHRlc3Q6IDI7Cn0KLmEgLmMsCi5iIC5jIHsKICB0ZXN0OiAzOwp9Ci5hIC5jIC5kLAouYiAuYyAuZCB7CiAgdGVzdDogNDsKfQoucmVwbGFjZS5yZXBsYWNlIC5yZXBsYWNlLAouYy5yZXBsYWNlICsgLnJlcGxhY2UgLnJlcGxhY2UsCi5yZXBsYWNlLnJlcGxhY2UgLmMsCi5jLnJlcGxhY2UgKyAucmVwbGFjZSAuYywKLnJlcF9hY2UucmVwX2FjZSAucmVwX2FjZSwKLmMucmVwX2FjZSArIC5yZXBfYWNlIC5yZXBfYWNlLAoucmVwX2FjZS5yZXBfYWNlIC5jLAouYy5yZXBfYWNlICsgLnJlcF9hY2UgLmMgewogIHByb3A6IGNvcHktcGFzdGUtcmVwbGFjZTsKfQouYXR0cmlidXRlcyBbZGF0YT0idGVzdCJdLAouYXR0cmlidXRlcyAuYXR0cmlidXRlcyAuYXR0cmlidXRlLXRlc3QgewogIGV4dGVuZDogYXR0cmlidXRlczsKfQouYXR0cmlidXRlcyBbZGF0YV0sCi5hdHRyaWJ1dGVzIC5hdHRyaWJ1dGVzIC5hdHRyaWJ1dGUtdGVzdDIgewogIGV4dGVuZDogYXR0cmlidXRlczI7Cn0KLmF0dHJpYnV0ZXMgW2RhdGE9InRlc3QzIl0sCi5hdHRyaWJ1dGVzIC5hdHRyaWJ1dGVzIC5hdHRyaWJ1dGUtdGVzdCB7CiAgZXh0ZW5kOiBhdHRyaWJ1dGVzMjsKfQouaGVhZGVyIC5oZWFkZXItbmF2LAouZm9vdGVyIC5mb290ZXItbmF2IHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLmhlYWRlciAuaGVhZGVyLW5hdjpiZWZvcmUsCi5mb290ZXIgLmZvb3Rlci1uYXY6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiBibHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/extend.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVycm9yLAouYmFkRXJyb3IgewogIGJvcmRlcjogMXB4ICNmMDA7CiAgYmFja2dyb3VuZDogI2ZkZDsKfQouZXJyb3IuaW50cnVzaW9uLAouYmFkRXJyb3IuaW50cnVzaW9uIHsKICBmb250LXNpemU6IDEuM2VtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5pbnRydXNpb24gLmVycm9yLAouaW50cnVzaW9uIC5iYWRFcnJvciB7CiAgZGlzcGxheTogbm9uZTsKfQouYmFkRXJyb3IgewogIGJvcmRlci13aWR0aDogM3B4Owp9Ci5mb28gLmJhciwKLmZvbyAuYmF6LAouZXh0MSAuZXh0MiAuYmFyLAouZXh0MSAuZXh0MiAuYmF6LAouZXh0MyAuYmFyLAouZXh0MyAuYmF6LAouZm9vIC5leHQzLAouZXh0NCAuYmFyLAouZXh0NCAuYmF6LAouZm9vIC5leHQ0IHsKICBkaXNwbGF5OiBub25lOwp9CmRpdi5leHQ1LAouZXh0NiA+IC5leHQ1LApkaXYuZXh0NywKLmV4dDYgPiAuZXh0NyB7CiAgd2lkdGg6IDEwMHB4Owp9Ci5leHQ4LmV4dDksCi5mdXUgewogIHJlc3VsdDogYWRkLWZvbzsKfQouZXh0OCAuZXh0OSwKLmV4dDggKyAuZXh0OSwKLmV4dDggPiAuZXh0OSwKLmJ1dSwKLnphcCwKLnpvbyB7CiAgcmVzdWx0OiBiYXItbWF0Y2hlZDsKfQouZXh0OC5ub21hdGNoIHsKICByZXN1bHQ6IG5vbmU7Cn0KLmV4dDggLmV4dDksCi5idXUgewogIHJlc3VsdDogbWF0Y2gtbmVzdGVkLWJhcjsKfQouZXh0OC5leHQ5LAouZnV1IHsKICByZXN1bHQ6IG1hdGNoLW5lc3RlZC1mb287Cn0KLmFhLAouY2MgewogIGNvbG9yOiBibGFjazsKfQouYWEgLmRkLAouYWEgLmVlIHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLmJiLAouY2MsCi5lZSwKLmZmIHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLmJiIC5iYiwKLmZmIC5mZiB7CiAgY29sb3I6IGJsYWNrOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/extract-and-length.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm11bHRpdW5pdCB7CiAgbGVuZ3RoOiA2OwogIGV4dHJhY3Q6IGFiYyAiYWJjIiAxIDFweCAxJSAjMTIzOwp9Ci5pbmNvcnJlY3QtaW5kZXggewogIHYxOiBleHRyYWN0KGEgYiBjLCA1KTsKICB2MjogZXh0cmFjdChhLCBiLCBjLCAtMik7Cn0KLnNjYWxhciB7CiAgdmFyLXZhbHVlOiB2YXJpYWJsZTsKICB2YXItbGVuZ3RoOiAxOwogIGlsbC1pbmRleDogZXh0cmFjdCh2YXJpYWJsZSwgMik7CiAgbmFtZS12YWx1ZTogbmFtZTsKICBzdHJpbmctdmFsdWU6ICJzdHJpbmciOwogIG51bWJlci12YWx1ZTogMTIzNDU2Nzg7CiAgY29sb3ItdmFsdWU6IGJsdWU7CiAgcmdiYS12YWx1ZTogcmdiYSg4MCwgMTYwLCAyNDAsIDAuNjcpOwogIGVtcHR5LXZhbHVlOiA7CiAgbmFtZS1sZW5ndGg6IDE7CiAgc3RyaW5nLWxlbmd0aDogMTsKICBudW1iZXItbGVuZ3RoOiAxOwogIGNvbG9yLWxlbmd0aDogMTsKICByZ2JhLWxlbmd0aDogMTsKICBlbXB0eS1sZW5ndGg6IDE7Cn0KLm1peGluLWFyZ3VtZW50cy0xIHsKICBsZW5ndGg6IDQ7CiAgZXh0cmFjdDogYyB8IGIgfCBhOwp9Ci5taXhpbi1hcmd1bWVudHMtMiB7CiAgbGVuZ3RoOiA0OwogIGV4dHJhY3Q6IGMgfCBiIHwgYTsKfQoubWl4aW4tYXJndW1lbnRzLTMgewogIGxlbmd0aDogNDsKICBleHRyYWN0OiBjIHwgYiB8IGE7Cn0KLm1peGluLWFyZ3VtZW50cy00IHsKICBsZW5ndGg6IDA7CiAgZXh0cmFjdDogZXh0cmFjdCgsIDIpIHwgZXh0cmFjdCgsIDEpOwp9Ci5taXhpbi1hcmd1bWVudHMtMiB7CiAgbGVuZ3RoOiA0OwogIGV4dHJhY3Q6IGMgfCBiIHwgYTsKfQoubWl4aW4tYXJndW1lbnRzLTMgewogIGxlbmd0aDogNDsKICBleHRyYWN0OiBjIHwgYiB8IGE7Cn0KLm1peGluLWFyZ3VtZW50cy00IHsKICBsZW5ndGg6IDM7CiAgZXh0cmFjdDogYyB8IGI7Cn0KLm1peGluLWFyZ3VtZW50cy0yIHsKICBsZW5ndGg6IDQ7CiAgZXh0cmFjdDogMyB8IDIgfCAxOwp9Ci5taXhpbi1hcmd1bWVudHMtMyB7CiAgbGVuZ3RoOiA0OwogIGV4dHJhY3Q6IDMgfCAyIHwgMTsKfQoubWl4aW4tYXJndW1lbnRzLTQgewogIGxlbmd0aDogMzsKICBleHRyYWN0OiAzIHwgMjsKfQoubWQtc3BhY2UtY29tbWEgewogIGxlbmd0aC0xOiAzOwogIGV4dHJhY3QtMTogMSAyIDM7CiAgbGVuZ3RoLTI6IDM7CiAgZXh0cmFjdC0yOiAyOwp9Ci5tZC1zcGFjZS1jb21tYS1hcy1hcmdzLTIgewogIGxlbmd0aDogMzsKICBleHRyYWN0OiAieCIgInkiICJ6IiB8IDEgMiAzIHwgYSBiIGM7Cn0KLm1kLXNwYWNlLWNvbW1hLWFzLWFyZ3MtMyB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiAieSIgInoiIHwgMSAyIDMgfCBhIGIgYzsKfQoubWQtc3BhY2UtY29tbWEtYXMtYXJncy00IHsKICBsZW5ndGg6IDI7CiAgZXh0cmFjdDogIngiICJ5IiAieiIgfCAxIDIgMzsKfQoubWQtY2F0LXNwYWNlLWNvbW1hIHsKICBsZW5ndGgtMTogMzsKICBleHRyYWN0LTE6IDEgMiAzOwogIGxlbmd0aC0yOiAzOwogIGV4dHJhY3QtMjogMjsKfQoubWQtY2F0LXNwYWNlLWNvbW1hLWFzLWFyZ3MtMiB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiAieSIgInoiIHwgMSAyIDMgfCBhIGIgYzsKfQoubWQtY2F0LXNwYWNlLWNvbW1hLWFzLWFyZ3MtMyB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiAieSIgInoiIHwgMSAyIDMgfCBhIGIgYzsKfQoubWQtY2F0LXNwYWNlLWNvbW1hLWFzLWFyZ3MtNCB7CiAgbGVuZ3RoOiAyOwogIGV4dHJhY3Q6ICJ4IiAieSIgInoiIHwgMSAyIDM7Cn0KLm1kLWNhdC1jb21tYS1zcGFjZSB7CiAgbGVuZ3RoLTE6IDM7CiAgZXh0cmFjdC0xOiAxLCAyLCAzOwogIGxlbmd0aC0yOiAzOwogIGV4dHJhY3QtMjogMjsKfQoubWQtY2F0LWNvbW1hLXNwYWNlLWFzLWFyZ3MtMSB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiwgInkiLCAieiIgfCAxLCAyLCAzIHwgYSwgYiwgYzsKfQoubWQtY2F0LWNvbW1hLXNwYWNlLWFzLWFyZ3MtMiB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiwgInkiLCAieiIgfCAxLCAyLCAzIHwgYSwgYiwgYzsKfQoubWQtY2F0LWNvbW1hLXNwYWNlLWFzLWFyZ3MtMyB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiwgInkiLCAieiIgfCAxLCAyLCAzIHwgYSwgYiwgYzsKfQoubWQtY2F0LWNvbW1hLXNwYWNlLWFzLWFyZ3MtNCB7CiAgbGVuZ3RoOiAwOwogIGV4dHJhY3Q6IGV4dHJhY3QoLCAyKSB8IGV4dHJhY3QoLCAxKTsKfQoubWQtM0QgewogIGxlbmd0aC0xOiAyOwogIGV4dHJhY3QtMTogYSBiIGMgZCwgMSAyIDMgNDsKICBsZW5ndGgtMjogMjsKICBleHRyYWN0LTI6IDUgNiA3IDg7CiAgbGVuZ3RoLTM6IDQ7CiAgZXh0cmFjdC0zOiA3OwogIGxlbmd0aC00OiAxOwogIGV4dHJhY3QtNDogODsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/filemanagerPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/filemanagerPlugin/filemanager.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGNvbG9yOiByZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/functions.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2Z1bmN0aW9ucyB7CiAgY29sb3I6ICM2NjAwMDA7CiAgd2lkdGg6IDE2OwogIGhlaWdodDogdW5kZWZpbmVkKCJzZWxmIik7CiAgYm9yZGVyLXdpZHRoOiA1OwogIHZhcmlhYmxlOiAxMTsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoIzAwMCwgI2ZmZik7Cn0KI2J1aWx0LWluIHsKICBlc2NhcGVkOiAtU29tZTo6d2VpcmQoI3RoaW5nLCB5KTsKICBsaWdodGVuOiAjZmZjY2NjOwogIGxpZ2h0ZW4tcmVsYXRpdmU6ICNmZjY2NjY7CiAgZGFya2VuOiAjMzMwMDAwOwogIGRhcmtlbi1yZWxhdGl2ZTogIzk5MDAwMDsKICBzYXR1cmF0ZTogIzIwM2MzMTsKICBzYXR1cmF0ZS1yZWxhdGl2ZTogIzI4MzQyZjsKICBkZXNhdHVyYXRlOiAjMjkzMzJmOwogIGRlc2F0dXJhdGUtcmVsYXRpdmU6ICMyMzM5MzA7CiAgZ3JleXNjYWxlOiAjMmUyZTJlOwogIGhzbC1jbGFtcDogI2ZmZmZmZjsKICBzcGluLXA6ICNiZjZhNDA7CiAgc3Bpbi1uOiAjYmY0MDU1OwogIGx1bWEtd2hpdGU6IDEwMCU7CiAgbHVtYS1ibGFjazogMCU7CiAgbHVtYS1ibGFjay1hbHBoYTogMCU7CiAgbHVtYS1yZWQ6IDIxLjI2JTsKICBsdW1hLWdyZWVuOiA3MS41MiU7CiAgbHVtYS1ibHVlOiA3LjIyJTsKICBsdW1hLXllbGxvdzogOTIuNzglOwogIGx1bWEtY3lhbjogNzguNzQlOwogIGx1bWEtZGlmZmVycy1mcm9tLWx1bWluYW5jZTogMjMuODk4MzMzNDklOwogIGx1bWluYW5jZS13aGl0ZTogMTAwJTsKICBsdW1pbmFuY2UtYmxhY2s6IDAlOwogIGx1bWluYW5jZS1ibGFjay1hbHBoYTogMCU7CiAgbHVtaW5hbmNlLXJlZDogMjEuMjYlOwogIGx1bWluYW5jZS1kaWZmZXJzLWZyb20tbHVtYTogMzYuNDA1NDExNzYlOwogIGNvbnRyYXN0LWZpbHRlcjogY29udHJhc3QoMzAlKTsKICBzYXR1cmF0ZS1maWx0ZXI6IHNhdHVyYXRlKDUlKTsKICBjb250cmFzdC13aGl0ZTogIzAwMDAwMDsKICBjb250cmFzdC1ibGFjazogI2ZmZmZmZjsKICBjb250cmFzdC1yZWQ6ICNmZmZmZmY7CiAgY29udHJhc3QtZ3JlZW46ICMwMDAwMDA7CiAgY29udHJhc3QtYmx1ZTogI2ZmZmZmZjsKICBjb250cmFzdC15ZWxsb3c6ICMwMDAwMDA7CiAgY29udHJhc3QtY3lhbjogIzAwMDAwMDsKICBjb250cmFzdC1saWdodDogIzExMTExMTsKICBjb250cmFzdC1kYXJrOiAjZWVlZWVlOwogIGNvbnRyYXN0LXdyb25nb3JkZXI6ICMxMTExMTE7CiAgY29udHJhc3QtbGlnaHQtdGhyZXNoOiAjMTExMTExOwogIGNvbnRyYXN0LWRhcmstdGhyZXNoOiAjZWVlZWVlOwogIGNvbnRyYXN0LWhpZ2gtdGhyZXNoOiAjZWVlZWVlOwogIGNvbnRyYXN0LWxvdy10aHJlc2g6ICMxMTExMTE7CiAgY29udHJhc3QtbGlnaHQtdGhyZXNoLXBlcjogIzExMTExMTsKICBjb250cmFzdC1kYXJrLXRocmVzaC1wZXI6ICNlZWVlZWU7CiAgY29udHJhc3QtaGlnaC10aHJlc2gtcGVyOiAjZWVlZWVlOwogIGNvbnRyYXN0LWxvdy10aHJlc2gtcGVyOiAjMTExMTExOwogIHJlcGxhY2U6ICJIZWxsbywgV29ybGQhIjsKICByZXBsYWNlLWNhcHR1cmVkOiAiVGhpcyBpcyBhIG5ldyBzdHJpbmcuIjsKICByZXBsYWNlLXdpdGgtZmxhZ3M6ICIyICsgMiA9IDQiOwogIHJlcGxhY2Utc2luZ2xlLXF1b3RlZDogJ2Zvby0yJzsKICByZXBsYWNlLWVzY2FwZWQtc3RyaW5nOiBiYXItMjsKICByZXBsYWNlLWtleXdvcmQ6IGJhei0yOwogIHJlcGxhY2Utd2l0aC1jb2xvcjogIiMxMzUjMTM1NyI7CiAgcmVwbGFjZS13aXRoLW51bWJlcjogIjJlbTA3IjsKICBmb3JtYXQ6ICJyZ2IoMzIsIDEyOCwgNjQpIjsKICBmb3JtYXQtc3RyaW5nOiAiaGVsbG8gd29ybGQiOwogIGZvcm1hdC1tdWx0aXBsZTogImhlbGxvIGVhcnRoIDIiOwogIGZvcm1hdC11cmwtZW5jb2RlOiAicmVkIGlzICUyM2ZmMDAwMCI7CiAgZm9ybWF0LXNpbmdsZS1xdW90ZWQ6ICdoZWxsbyBzaW5nbGUgd29ybGQnOwogIGZvcm1hdC1lc2NhcGVkLXN0cmluZzogaGVsbG8gZXNjYXBlZCB3b3JsZDsKICBmb3JtYXQtY29sb3ItYXMtc3RyaW5nOiAiIzEyMyI7CiAgZm9ybWF0LW51bWJlci1hcy1zdHJpbmc6ICI0cHgiOwogIGVmb3JtYXQ6IHJnYigzMiwgMTI4LCA2NCk7CiAgdW5pdGxlc3M6IDEyOwogIHVuaXQ6IDE0ZW07CiAgdW5pdHBlcmNlbnRhZ2U6IDEwMCU7CiAgZ2V0LXVuaXQ6IHB4OwogIGdldC11bml0LWVtcHR5OiA7CiAgaHVlOiA5ODsKICBzYXR1cmF0aW9uOiAxMiU7CiAgbGlnaHRuZXNzOiA5NSU7CiAgaHN2aHVlOiA5ODsKICBoc3ZzYXR1cmF0aW9uOiAxMiU7CiAgaHN2dmFsdWU6IDk1JTsKICByZWQ6IDI1NTsKICBncmVlbjogMjU1OwogIGJsdWU6IDI1NTsKICByb3VuZGVkOiAxMTsKICByb3VuZGVkLXR3bzogMTAuNjc7CiAgcm91bmRlZHB4OiAzcHg7CiAgcm91bmRlZHB4LXRocmVlOiAzLjMzM3B4OwogIHJvdW5kZWQtcGVyY2VudGFnZTogMTAlOwogIGNlaWw6IDExcHg7CiAgZmxvb3I6IDEycHg7CiAgc3FydDogNXB4OwogIHBpOiAzLjE0MTU5MjY1OwogIG1vZDogMm07CiAgYWJzOiA0JTsKICB0YW46IDAuOTAwNDA0MDQ7CiAgc2luOiAwLjE3MzY0ODE4OwogIGNvczogMC44NDM4NTM5NjsKICBhdGFuOiAwLjFyYWQ7CiAgYXRhbjogMzRkZWc7CiAgYXRhbjogNDVkZWc7CiAgcG93OiA2NHB4OwogIHBvdzogNjQ7CiAgcG93OiAyNzsKICBtaW46IDA7CiAgbWluOiA1OwogIG1pbjogMXB0OwogIG1pbjogM21tOwogIG1heDogMzsKICBtYXg6IDVlbTsKICBwZXJjZW50YWdlOiAyMCU7CiAgY29sb3ItcXVvdGVkLWRpZ2l0OiAjZGRhMGRkOwogIGNvbG9yLXF1b3RlZC1rZXl3b3JkOiAjZGRhMGRkOwogIGNvbG9yLWNvbG9yOiAjZGRhMGRkOwogIGNvbG9yLWtleXdvcmQ6ICNkZGEwZGQ7CiAgdGludDogIzg5ODk4OTsKICB0aW50LWZ1bGw6ICNmZmZmZmY7CiAgdGludC1wZXJjZW50OiAjODk4OTg5OwogIHRpbnQtbmVnYXRpdmU6ICM2NTY1NjU7CiAgc2hhZGU6ICM2ODY4Njg7CiAgc2hhZGUtZnVsbDogIzAwMDAwMDsKICBzaGFkZS1wZXJjZW50OiAjNjg2ODY4OwogIHNoYWRlLW5lZ2F0aXZlOiAjODY4Njg2OwogIGZhZGUtb3V0OiByZ2JhKDI1NSwgMCwgMCwgMC45NSk7CiAgZmFkZS1pbjogcmdiYSgyNTUsIDAsIDAsIDAuOTUpOwogIGZhZGUtb3V0LXJlbGF0aXZlOiByZ2JhKDI1NSwgMCwgMCwgMC45NSk7CiAgZmFkZS1pbi1yZWxhdGl2ZTogcmdiYSgyNTUsIDAsIDAsIDAuOTQ1KTsKICBmYWRlLW91dDI6IHJnYmEoMjU1LCAwLCAwLCAwKTsKICBmYWRlLW91dDItcmVsYXRpdmU6IHJnYmEoMjU1LCAwLCAwLCAwLjI1KTsKICBoc3Y6ICM0ZDI5MjY7CiAgaHN2YTogcmdiYSg3NywgNDAsIDM4LCAwLjIpOwogIG1peDogI2ZmMzMwMDsKICBtaXgtMDogI2ZmZmYwMDsKICBtaXgtMTAwOiAjZmYwMDAwOwogIG1peC13ZWlnaHRsZXNzOiAjZmY4MDAwOwogIG1peHQ6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOwp9CiNidWlsdC1pbiAuaXMtYSB7CiAgcnVsZXNldDogdHJ1ZTsKICBjb2xvcjogdHJ1ZTsKICBjb2xvcjE6IHRydWU7CiAgY29sb3IyOiB0cnVlOwogIGNvbG9yMzogdHJ1ZTsKICBrZXl3b3JkOiB0cnVlOwogIG51bWJlcjogdHJ1ZTsKICBzdHJpbmc6IHRydWU7CiAgcGl4ZWw6IHRydWU7CiAgcGVyY2VudDogdHJ1ZTsKICBlbTogdHJ1ZTsKICBjYXQ6IHRydWU7CiAgbm8tdW5pdC1pcy1lbXB0eTogdHJ1ZTsKICBjYXNlLWluc2Vuc2l0aXZlLTE6IHRydWU7CiAgY2FzZS1pbnNlbnNpdGl2ZS0yOiB0cnVlOwp9CiNhbHBoYSB7CiAgYWxwaGE6IGhzbGEoMjUsIDUwJSwgNDAlLCAwLjYpOwogIGFscGhhMjogMC41OwogIGFscGhhMzogMDsKfQojYmxlbmRtb2RlcyB7CiAgbXVsdGlwbHk6ICNlZDAwMDA7CiAgc2NyZWVuOiAjZjYwMGY2OwogIG92ZXJsYXk6ICNlZDAwMDA7CiAgc29mdGxpZ2h0OiAjZmEwMDAwOwogIGhhcmRsaWdodDogIzAwMDBlZDsKICBkaWZmZXJlbmNlOiAjZjYwMGY2OwogIGV4Y2x1c2lvbjogI2Y2MDBmNjsKICBhdmVyYWdlOiAjN2IwMDdiOwogIG5lZ2F0aW9uOiAjZDczMTMxOwp9CiNleHRyYWN0LWFuZC1sZW5ndGggewogIGV4dHJhY3Q6IDMgMiAxIEMgQiBBOwogIGxlbmd0aDogNjsKfQojcXVvdGVkLWZ1bmN0aW9ucy1pbi1taXhpbiB7CiAgcmVwbGFjZS1kb3VibGUtcXVvdGVkOiAnZm9vLTInOwogIHJlcGxhY2Utc2luZ2xlLXF1b3RlZDogJ2Zvby00JzsKICByZXBsYWNlLWVzY2FwZWQtc3RyaW5nOiBiYXItMjsKICByZXBsYWNlLWtleXdvcmQ6IGJhei0yOwogIHJlcGxhY2UtYW5vbnltb3VzOiBxdXgtMjsKICBmb3JtYXQtZG91YmxlLXF1b3RlZDogImhlbGxvIHdvcmxkIjsKICBmb3JtYXQtc2luZ2xlLXF1b3RlZDogJ2hlbGxvIHNpbmdsZSB3b3JsZCc7CiAgZm9ybWF0LWVzY2FwZWQtc3RyaW5nOiBoZWxsbyBlc2NhcGVkIHdvcmxkOwogIGZvcm1hdC1rZXl3b3JkOiBoZWxsbzsKICBmb3JtYXQtYW5vbnltb3VzOiBoZWxsbyBhbm9ueW1vdXMgd29ybGQ7Cn0KI2xpc3QtZGV0YWlscyB7CiAgbGVuZ3RoOiAyOwogIG9uZTogYSAxOwogIHR3bzogYiAyOwogIHR3by1sZW5ndGg6IDI7CiAgdHdvLW9uZTogYjsKICB0d28tdHdvOiAyOwp9Ci8qIGNvbW1lbnQxICovCmh0bWwgewogIGNvbG9yOiAjODA4MGZmOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/globalVars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/globalVars/extended.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAgKiBUZXN0CiAgKi8KI2hlYWRlciB7CiAgY29sb3I6ICMzMzMzMzM7CiAgYm9yZGVyLWxlZnQ6IDFweDsKICBib3JkZXItcmlnaHQ6IDJweDsKfQojZm9vdGVyIHsKICBjb2xvcjogIzExNDQxMTsKICBib3JkZXItY29sb3I6ICNmMjBkMGQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/globalVars/simple.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAgKiBUZXN0CiAgKi8KLmNsYXNzIHsKICBjb2xvcjogcmVkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/ie-filters.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm5hdiB7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0yMCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0wKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjMzMzMzMzIiwgZW5kQ29sb3JzdHI9IiMwMDAwMDAiLCBHcmFkaWVudFR5cGU9MCk7Cn0KLmV2YWxUZXN0MSB7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0zMCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT01KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/import-inline.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydCB7CiAgY29sb3I6IHJlZDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAjY3NzIHsgY29sb3I6IHllbGxvdzsgfQoKfQp0aGlzIGlzbid0IHZlcnkgdmFsaWQgQ1NTLgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/import-interpolation.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgd2lkdGg6IDEwMCU7Cn0KI2xvZ28gewogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4OwogIGJhY2tncm91bmQ6IHVybCgnLi4vYXNzZXRzL2xvZ28ucG5nJyk7CiAgYmFja2dyb3VuZDogdXJsKCIjaW5saW5lLXN2ZyIpOwp9CgouYSB7CiAgdmFyOiB0ZXN0Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/import-once.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydCB7CiAgY29sb3I6IHJlZDsKfQpib2R5IHsKICB3aWR0aDogMTAwJTsKfQoudGVzdC1mIHsKICBoZWlnaHQ6IDEwcHg7Cn0KYm9keSB7CiAgd2lkdGg6IDEwMCU7Cn0KLnRlc3QtZiB7CiAgaGVpZ2h0OiAxMHB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/import-reference.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aW5wdXRbdHlwZT0idGV4dCJdLmNsYXNzI2lkW2F0dHI9MzJdOm5vdCgxKSB7CiAgY29sb3I6IHdoaXRlOwp9CmRpdiNpZC5jbGFzc1thPTFdW2I9Ml0uY2xhc3M6bm90KDEpIHsKICBjb2xvcjogd2hpdGU7Cn0KQG1lZGlhIHByaW50IHsKICAuY2xhc3MgewogICAgY29sb3I6IGJsdWU7CiAgfQogIC5jbGFzcyAuc3ViIHsKICAgIHdpZHRoOiA0MjsKICB9Cn0KLnZpc2libGUgewogIGNvbG9yOiByZWQ7Cn0KLnZpc2libGUgLmMgewogIGNvbG9yOiBncmVlbjsKfQoudmlzaWJsZSB7CiAgY29sb3I6IGdyZWVuOwp9Ci52aXNpYmxlOmhvdmVyIHsKICBjb2xvcjogZ3JlZW47Cn0KLm9ubHktd2l0aC12aXNpYmxlICsgLnZpc2libGUsCi52aXNpYmxlICsgLm9ubHktd2l0aC12aXNpYmxlLAoudmlzaWJsZSArIC52aXNpYmxlIHsKICBjb2xvcjogZ3JlZW47Cn0KLm9ubHktd2l0aC12aXNpYmxlICsgLnZpc2libGUgLnN1YiwKLnZpc2libGUgKyAub25seS13aXRoLXZpc2libGUgLnN1YiwKLnZpc2libGUgKyAudmlzaWJsZSAuc3ViIHsKICBjb2xvcjogZ3JlZW47Cn0KQHN1cHBvcnRzIChzb21ldGhpbmc6IGVsc2UpIHsKICAuY2xhc3MgewogICAgc29tZXRoaW5nOiBlbHNlOwogIH0KICAubmVzdGVkVG9vIC5jbGFzcyB7CiAgICBzb21ldGhpbmc6IGVsc2U7CiAgfQp9Ci5iIHsKICBjb2xvcjogcmVkOwogIGNvbG9yOiBncmVlbjsKfQouYiAuYyB7CiAgY29sb3I6IGdyZWVuOwp9Ci5iOmhvdmVyIHsKICBjb2xvcjogZ3JlZW47Cn0KLmIgKyAuYiB7CiAgY29sb3I6IGdyZWVuOwp9Ci5iICsgLmIgLnN1YiB7CiAgY29sb3I6IGdyZWVuOwp9Ci55IHsKICBwdWxsZWQtaW46IHllcyAvKiBpbmxpbmUgY29tbWVudCBzdXJ2aXZlcyAqLzsKfQovKiBjb21tZW50IHB1bGxlZCBpbiAqLwoudmlzaWJsZSB7CiAgZXh0ZW5kOiB0ZXN0Owp9Ci50ZXN0LW1lZGlhcS1pbXBvcnQgewogIGNvbG9yOiBncmVlbjsKICB0ZXN0OiAzNDBweDsKfQpAbWVkaWEgKG1heC1zaXplOiA0NTBweCkgewogIC50ZXN0LW1lZGlhcS1pbXBvcnQgewogICAgY29sb3I6IHJlZDsKICB9Cn0KLnRlc3QgewogIGNvbG9yOiByZWQ7Cn0KLnRlc3Q6Zmlyc3QtY2hpbGQgewogIGNvbG9yOiBibHVlOwp9CkBrZXlmcmFtZXMgc29tZS1uYW1lIHsKICBwcm9wZXJ0eTogdmFsdWU7Cn0KQHN1cHBvcnRzIChhbmltYXRpb24tbmFtZTogdGVzdCkgewogIEBrZXlmcmFtZXMgc29tZS1uYW1lIHsKICAgIHByb3BlcnR5OiB2YWx1ZTsKICB9CiAgLnNlbGVjdG9yIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CmRpdiB7CiAgdGhpcyBpc24ndCB2ZXJ5IHZhbGlkIENTUy4KfQp0aGlzIGlzbid0IHZlcnkgdmFsaWQgQ1NTLgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/import.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyoqIGNvbW1lbnQgYXQgdGhlIHRvcCoqLwpAaW1wb3J0IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcGVuK1NhbnMpOwpAaW1wb3J0IHVybCgvYWJzb2x1dGUvc29tZXRoaW5nLmNzcykgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAobWF4LXdpZHRoOiA2MDBweCk7CkBpbXBvcnQgdXJsKCIvL2hhLmNvbS9maWxlLmNzcyIpIChtaW4td2lkdGg6IDEwMHB4KTsKI2ltcG9ydC10ZXN0IHsKICBoZWlnaHQ6IDEwcHg7CiAgY29sb3I6IHJlZDsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDMwJTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCkgewogIGJvZHkgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9CiNpbXBvcnQgewogIGNvbG9yOiByZWQ7Cn0KLm1peGluIHsKICBoZWlnaHQ6IDEwcHg7CiAgY29sb3I6IHJlZDsKfQoudGVzdC1mIHsKICBoZWlnaHQ6IDEwcHg7Cn0KLmRlZXAtaW1wb3J0LXVybCB7CiAgY29sb3I6IHJlZDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDFweCkgewogICNjc3MgewogICAgY29sb3I6IHllbGxvdzsKICB9Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAycHgpIHsKICBib2R5IHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDNweCkgewogICNjc3MgewogICAgY29sb3I6IHllbGxvdzsKICB9Cn0KQG1lZGlhIHByaW50IHsKICBib2R5IHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/include-path-string/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/include-path-string/include-path-string.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGF0YS11cmkgewogIHByb3BlcnR5OiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUyMHN0YW5kYWxvbmUlM0QlMjJubyUyMiUzRiUzRSUwQSUzQ3N2ZyUyMGhlaWdodCUzRCUyMjEwMCUyMiUyMHdpZHRoJTNEJTIyMTAwJTIyJTNFJTBBJTIwJTIwJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNDAlMjIlMjBzdHJva2UlM0QlMjJibGFjayUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIyYmx1ZSUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/include-path/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/include-path/include-path.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgd2lkdGg6IDEwMCU7Cn0KZGF0YS11cmkgewogIHByb3BlcnR5OiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUyMHN0YW5kYWxvbmUlM0QlMjJubyUyMiUzRiUzRSUwQSUzQ3N2ZyUyMGhlaWdodCUzRCUyMjEwMCUyMiUyMHdpZHRoJTNEJTIyMTAwJTIyJTNFJTBBJTIwJTIwJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNDAlMjIlMjBzdHJva2UlM0QlMjJibGFjayUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIyYmx1ZSUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpOwp9CmltYWdlLXNpemUgewogIHByb3BlcnR5OiAxMDBweCAxMDBweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/javascript.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV2YWwgewogIGpzOiA0MjsKICBqczogMjsKICBqczogImhlbGxvIHdvcmxkIjsKICBqczogMSwgMiwgMzsKICB0aXRsZTogInN0cmluZyI7CiAgdGVybmFyeTogdHJ1ZTsKICBtdWx0aWxpbmU6IDI7Cn0KLnNjb3BlIHsKICB2YXI6IDQyOwogIGVzY2FwZWQ6IDdweDsKfQoudmFycyB7CiAgd2lkdGg6IDg7Cn0KLmVzY2FwZS1pbnRlcnBvbCB7CiAgd2lkdGg6IGhlbGxvIHdvcmxkOwp9Ci5hcnJheXMgewogIGFyeTogIjEsIDIsIDMiOwogIGFyeTE6ICIxLCAyLCAzIjsKfQoudGVzdC10cmFuIHsKICAxOiBvcGFjaXR5IDAuM3MgZWFzZS1pbiAwLjNzLCBtYXgtaGVpZ2h0IDAuNnMgbGluZWFyLCBtYXJnaW4tYm90dG9tIDAuNHMgbGluZWFyOwogIDI6IFtvcGFjaXR5IDAuM3MgZWFzZS1pbiAwLjNzLCBtYXgtaGVpZ2h0IDAuNnMgbGluZWFyLCBtYXJnaW4tYm90dG9tIDAuNHMgbGluZWFyXTsKICAzOiBvcGFjaXR5IDAuM3MgZWFzZS1pbiAwLjNzLCBtYXgtaGVpZ2h0IDAuNnMgbGluZWFyLCBtYXJnaW4tYm90dG9tIDAuNHMgbGluZWFyOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/lazy-eval.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmxhenktZXZhbCB7CiAgd2lkdGg6IDEwMCU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/media.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIHByaW50IHsKICAuY2xhc3MgewogICAgY29sb3I6IGJsdWU7CiAgfQogIC5jbGFzcyAuc3ViIHsKICAgIHdpZHRoOiA0MjsKICB9CiAgLnRvcCwKICBoZWFkZXIgPiBoMSB7CiAgICBjb2xvcjogIzQ0NDQ0NDsKICB9Cn0KQG1lZGlhIHNjcmVlbiB7CiAgYm9keSB7CiAgICBtYXgtd2lkdGg6IDQ4MDsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgKGRldmljZS1hc3BlY3QtcmF0aW86IDE2IC8gOSkgewogIGJvZHkgewogICAgbWF4LXdpZHRoOiA4MDBweDsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgewogIGFzaWRlIHsKICAgIGZsb2F0OiBub25lOwogIH0KfQpAbWVkaWEgaGFuZGhlbGQgYW5kIChtaW4td2lkdGg6IDQyKSwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAyMGVtKSB7CiAgYm9keSB7CiAgICBtYXgtd2lkdGg6IDQ4MHB4OwogIH0KfQpAbWVkaWEgcHJpbnQgewogIGJvZHkgewogICAgcGFkZGluZzogMjBweDsKICB9CiAgYm9keSBoZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwogIH0KfQpAbWVkaWEgcHJpbnQgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7CiAgYm9keSB7CiAgICBtYXJnaW4tbGVmdDogMjBweDsKICB9Cn0KQG1lZGlhIHNjcmVlbiB7CiAgLnNpZGViYXIgewogICAgd2lkdGg6IDMwMHB4OwogIH0KfQpAbWVkaWEgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkgewogIC5zaWRlYmFyIHsKICAgIHdpZHRoOiA1MDBweDsKICB9Cn0KQG1lZGlhIGEgYW5kIGIgewogIC5maXJzdCAuc2Vjb25kIC50aGlyZCB7CiAgICB3aWR0aDogMzAwcHg7CiAgfQogIC5maXJzdCAuc2Vjb25kIC5mb3VydGggewogICAgd2lkdGg6IDM7CiAgfQp9CkBtZWRpYSBhIGFuZCBiIGFuZCBjIHsKICAuZmlyc3QgLnNlY29uZCAudGhpcmQgewogICAgd2lkdGg6IDUwMHB4OwogIH0KfQpAbWVkaWEgYSwgYiBhbmQgYyB7CiAgYm9keSB7CiAgICB3aWR0aDogOTUlOwogIH0KfQpAbWVkaWEgYSBhbmQgeCwgYiBhbmQgYyBhbmQgeCwgYSBhbmQgeSwgYiBhbmQgYyBhbmQgeSB7CiAgYm9keSB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLmEgewogIGJhY2tncm91bmQ6IGJsYWNrOwp9CkBtZWRpYSBoYW5kaGVsZCB7CiAgLmEgewogICAgYmFja2dyb3VuZDogd2hpdGU7CiAgfQp9CkBtZWRpYSBoYW5kaGVsZCBhbmQgKG1heC13aWR0aDogMTAwcHgpIHsKICAuYSB7CiAgICBiYWNrZ3JvdW5kOiByZWQ7CiAgfQp9Ci5iIHsKICBiYWNrZ3JvdW5kOiBibGFjazsKfQpAbWVkaWEgaGFuZGhlbGQgewogIC5iIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogIH0KfQpAbWVkaWEgaGFuZGhlbGQgYW5kIChtYXgtd2lkdGg6IDIwMHB4KSB7CiAgLmIgewogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIwMHB4KSB7CiAgYm9keSB7CiAgICB3aWR0aDogNDgwcHg7CiAgfQp9CkBtZWRpYSBwcmludCB7CiAgQHBhZ2UgOmxlZnQgewogICAgbWFyZ2luOiAwLjVjbTsKICB9CiAgQHBhZ2UgOnJpZ2h0IHsKICAgIG1hcmdpbjogMC41Y207CiAgfQogIEBwYWdlIFRlc3Q6Zmlyc3QgewogICAgbWFyZ2luOiAxY207CiAgfQogIEBwYWdlIDpmaXJzdCB7CiAgICBzaXplOiA4LjVpbiAxMWluOwogICAgQHRvcC1sZWZ0IHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAdG9wLWxlZnQtY29ybmVyIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAdG9wLWNlbnRlciB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQHRvcC1yaWdodCB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQHRvcC1yaWdodC1jb3JuZXIgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBib3R0b20tbGVmdCB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGJvdHRvbS1sZWZ0LWNvcm5lciB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGJvdHRvbS1jZW50ZXIgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBib3R0b20tcmlnaHQgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBib3R0b20tcmlnaHQtY29ybmVyIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAbGVmdC10b3AgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBsZWZ0LW1pZGRsZSB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGxlZnQtYm90dG9tIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAcmlnaHQtdG9wIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAcmlnaHQtbWlkZGxlIHsKICAgICAgY29udGVudDogIlBhZ2UgIiBjb3VudGVyKHBhZ2UpOwogICAgfQogICAgQHJpZ2h0LWJvdHRvbSB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogIH0KfQpAbWVkaWEgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogMi8xKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCksIChtaW4tcmVzb2x1dGlvbjogMTI4ZHBjbSkgewogIC5iIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICB9Cn0KYm9keSB7CiAgYmFja2dyb3VuZDogcmVkOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkgewogIGJvZHkgewogICAgYmFja2dyb3VuZDogZ3JlZW47CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMDAwcHgpIHsKICBib2R5IHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICAgIGJhY2tncm91bmQ6IGJsdWU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMDAwcHgpIGFuZCAobWF4LXdpZHRoOiA1MDBweCkgewogIGJvZHkgewogICAgYmFja2dyb3VuZDogZ3JlZW47CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHsKICAvKiBhIGNvbW1lbnQgKi8KfQpAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogOTAwcHgpIHsKICBib2R5IHsKICAgIGZvbnQtc2l6ZTogMTFweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7CiAgLm5hdi1qdXN0aWZpZWQgPiBsaSB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWluLXdpZHRoOiA0ODBweCkgewogIC5tZW51ID4gbGkgewogICAgZGlzcGxheTogdGFibGUtY2VsbDsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgdHYgewogIC5hbGwtYW5kLXR2LXZhcmlhYmxlcyB7CiAgICB2YXI6IGFsbC1hbmQtdHY7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/merge.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QxIHsKICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyksIHNrZXcoMzBkZWcpLCBzY2FsZSgyLCA0KTsKfQoudGVzdDIgewogIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKSwgc2tldygzMGRlZyk7CiAgdHJhbnNmb3JtOiBzY2FsZVgoNDVkZWcpOwp9Ci50ZXN0MyB7CiAgdHJhbnNmb3JtOiBzY2FsZVgoNDVkZWcpOwogIGJhY2tncm91bmQ6IHVybChkYXRhOi8vaW1nMS5wbmcpOwp9Ci50ZXN0NCB7CiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpLCBza2V3KDMwZGVnKTsKICB0cmFuc2Zvcm06IHNjYWxlKDIsIDQpICFpbXBvcnRhbnQ7Cn0KLnRlc3Q1IHsKICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyksIHNrZXcoMzBkZWcpOwogIHRyYW5zZm9ybTogc2NhbGUoMiwgNCkgIWltcG9ydGFudDsKfQoudGVzdDYgewogIHRyYW5zZm9ybTogc2NhbGUoMiwgNCk7Cn0KLnRlc3QtaW50ZXJsZWF2ZWQgewogIHRyYW5zZm9ybTogdDEsIHQyLCB0MzsKICBiYWNrZ3JvdW5kOiBiMSwgYjIsIGIzOwp9Ci50ZXN0LXNwYWNlZCB7CiAgdHJhbnNmb3JtOiB0MSB0MiB0MzsKICBiYWNrZ3JvdW5kOiBiMSBiMiwgYjM7Cn0KLnRlc3QtaW50ZXJsZWF2ZWQtd2l0aC1zcGFjZWQgewogIHRyYW5zZm9ybTogdDFzLCB0MiB0M3MsIHQ0IHQ1cyB0NnM7CiAgYmFja2dyb3VuZDogYjEgYjJzLCBiMywgYjQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-args.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hpZGRlbiB7CiAgY29sb3I6IHRyYW5zcGFyZW50Owp9CiNoaWRkZW4xIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLnR3by1hcmdzIHsKICBjb2xvcjogYmx1ZTsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDk5JTsKICBib3JkZXI6IDJweCBkb3R0ZWQgYmxhY2s7Cn0KLm9uZS1hcmcgewogIHdpZHRoOiAxNXB4OwogIGhlaWdodDogNDklOwp9Ci5uby1wYXJlbnMgewogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA0OSU7Cn0KLm5vLWFyZ3MgewogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA0OSU7Cn0KLnZhci1hcmdzIHsKICB3aWR0aDogNDU7CiAgaGVpZ2h0OiAxNyU7Cn0KLm11bHRpLW1peCB7CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAyOSU7CiAgbWFyZ2luOiA0OwogIHBhZGRpbmc6IDU7Cn0KYm9keSB7CiAgcGFkZGluZzogMzBweDsKICBjb2xvcjogI2YwMDsKfQouc2NvcGUtbWl4IHsKICB3aWR0aDogODsKfQouY29udGVudCB7CiAgd2lkdGg6IDYwMHB4Owp9Ci5jb250ZW50IC5jb2x1bW4gewogIG1hcmdpbjogNjAwcHg7Cn0KI3NhbWUtdmFyLW5hbWUgewogIHJhZGl1czogNXB4Owp9CiN2YXItaW5zaWRlIHsKICB3aWR0aDogMTBweDsKfQouYXJndW1lbnRzIHsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICB3aWR0aDogMXB4Owp9Ci5hcmd1bWVudHMyIHsKICBib3JkZXI6IDBweDsKICB3aWR0aDogMHB4Owp9Ci5hcmd1bWVudHMzIHsKICBib3JkZXI6IDBweDsKICB3aWR0aDogMHB4Owp9Ci5hcmd1bWVudHM0IHsKICBib3JkZXI6IDAgMSAyIDMgNDsKICByZXN0OiAxIDIgMyA0OwogIHdpZHRoOiAwOwp9Ci5lZGdlLWNhc2UgewogIGJvcmRlcjogInsiOwogIHdpZHRoOiAieyI7Cn0KLnNsYXNoLXZzLW1hdGggewogIGJvcmRlci1yYWRpdXM6IDJweC81cHg7CiAgYm9yZGVyLXJhZGl1czogNXB4LzEwcHg7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5jb21tYS12cy1zZW1pLWNvbG9uIHsKICBvbmU6IGE7CiAgdHdvOiBiLCBjOwogIG9uZTogZCwgZTsKICB0d286IGY7CiAgb25lOiBnOwogIG9uZTogaDsKICBvbmU6IGk7CiAgb25lOiBqOwogIG9uZTogazsKICB0d286IGw7CiAgb25lOiBtLCBuOwogIG9uZTogbywgcDsKICB0d286IHE7CiAgb25lOiByLCBzOwogIHR3bzogdDsKfQojbmFtZWQtY29uZmxpY3QgewogIGZvdXI6IGEsIDExLCAxMiwgMTM7CiAgZm91cjogYSwgMjEsIDIyLCAyMzsKfQoudGVzdC1taXhpbi1kZWZhdWx0LWFyZyB7CiAgZGVmYXVsdHM6IDFweCAxcHggMXB4OwogIGRlZmF1bHRzOiAycHggMnB4IDJweDsKfQouc2VsZWN0b3IgewogIG1hcmdpbjogMiwgMiwgMiwgMjsKfQouc2VsZWN0b3IyIHsKICBtYXJnaW46IDIsIDIsIDIsIDI7Cn0KLnNlbGVjdG9yMyB7CiAgbWFyZ2luOiA0Owp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC0xIHsKICBtMzogMSwgMiwgMzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtMiB7CiAgbTM6IDQsIDUsIDY7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTNhIHsKICBtMzogYSwgYiwgYzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtM2IgewogIG00OiAwLCBhLCBiLCBjOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC0zYyB7CiAgbTQ6IGEsIGIsIGMsIDQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTRhIHsKICBtMzogYSwgYiwgYywgZDsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNGIgewogIG00OiAwLCBhLCBiLCBjLCBkOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC00YyB7CiAgbTQ6IGEsIGIsIGMsIGQsIDQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTVhIHsKICBtMzogMSwgMiwgMzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNWIgewogIG00OiAwLCAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC01YyB7CiAgbTQ6IDEsIDIsIDMsIDQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTYgewogIG00OiAwLCAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC03IHsKICBtNDogMCwgMSwgMiwgMzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtOCB7CiAgbTQ6IDEsIDEuNSwgMiwgMzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtOSB7CiAgYWE6IDQgNSA2IDEgMiAzIGFuZCBhZ2FpbiA0IDUgNjsKICBhNDogYW5kOwogIGE4OiA1Owp9CiN0ZXN0LW1peGluLW1hdGNoaW5nLXdoZW4tZGVmYXVsdC0yNjQ1IHsKICBoZWlnaHQ6IDIwcHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-closure.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsYXNzIHsKICB3aWR0aDogOTlweDsKfQoub3ZlcndyaXRlIHsKICB3aWR0aDogOTlweDsKfQoubmVzdGVkIC5jbGFzcyB7CiAgd2lkdGg6IDVweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-guards-default-func.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Z3VhcmQtZGVmYXVsdC1iYXNpYy0xLTEgewogIGNhc2U6IDE7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0xLTIgewogIGRlZmF1bHQ6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0yLTAgewogIGRlZmF1bHQ6IDA7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0yLTIgewogIGNhc2U6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0zLTAgewogIGRlZmF1bHQ6IDA7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0zLTIgewogIGNhc2U6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0zLTMgewogIGNhc2U6IDM7Cn0KZ3VhcmQtZGVmYXVsdC1kZWZpbml0aW9uLW9yZGVyLTAgewogIGRlZmF1bHQ6IDA7Cn0KZ3VhcmQtZGVmYXVsdC1kZWZpbml0aW9uLW9yZGVyLTIgewogIGNhc2U6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1kZWZpbml0aW9uLW9yZGVyLTIgewogIGNhc2U6IDM7Cn0KZ3VhcmQtZGVmYXVsdC1vdXQtb2YtZ3VhcmQtMCB7CiAgY2FzZS0wOiBkZWZhdWx0KCk7CiAgY2FzZS0xOiAxOwogIGRlZmF1bHQ6IDI7CiAgY2FzZS0yOiBkZWZhdWx0KCk7Cn0KZ3VhcmQtZGVmYXVsdC1vdXQtb2YtZ3VhcmQtMSB7CiAgZGVmYXVsdDogZGVmYXVsdCgpOwp9Cmd1YXJkLWRlZmF1bHQtb3V0LW9mLWd1YXJkLTIgewogIGRlZmF1bHQ6IGRlZmF1bHQoKTsKfQpndWFyZC1kZWZhdWx0LWV4cHItbm90LTEgewogIGNhc2U6IDE7CiAgZGVmYXVsdDogMTsKfQpndWFyZC1kZWZhdWx0LWV4cHItZXEtdHJ1ZSB7CiAgY2FzZTogdHJ1ZTsKfQpndWFyZC1kZWZhdWx0LWV4cHItZXEtZmFsc2UgewogIGNhc2U6IGZhbHNlOwogIGRlZmF1bHQ6IGZhbHNlOwp9Cmd1YXJkLWRlZmF1bHQtZXhwci1vci0xIHsKICBjYXNlOiAxOwp9Cmd1YXJkLWRlZmF1bHQtZXhwci1vci0yIHsKICBjYXNlOiAyOwogIGRlZmF1bHQ6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1leHByLW9yLTMgewogIGRlZmF1bHQ6IDM7Cn0KZ3VhcmQtZGVmYXVsdC1leHByLWFuZC0xIHsKICBjYXNlOiAxOwp9Cmd1YXJkLWRlZmF1bHQtZXhwci1hbmQtMiB7CiAgY2FzZTogMjsKfQpndWFyZC1kZWZhdWx0LWV4cHItYW5kLTMgewogIGRlZmF1bHQ6IDM7Cn0KZ3VhcmQtZGVmYXVsdC1leHByLWFsd2F5cy0xIHsKICBjYXNlOiAxOwogIGRlZmF1bHQ6IDE7Cn0KZ3VhcmQtZGVmYXVsdC1leHByLWFsd2F5cy0yIHsKICBkZWZhdWx0OiAyOwp9Cmd1YXJkLWRlZmF1bHQtZXhwci1uZXZlci0xIHsKICBjYXNlOiAxOwp9Cmd1YXJkLWRlZmF1bHQtbXVsdGktMS0wIHsKICBjYXNlOiAwOwp9Cmd1YXJkLWRlZmF1bHQtbXVsdGktMS0xIHsKICBkZWZhdWx0LTE6IDE7Cn0KZ3VhcmQtZGVmYXVsdC1tdWx0aS0yLTEgewogIGRlZmF1bHQtMTogbm87Cn0KZ3VhcmQtZGVmYXVsdC1tdWx0aS0yLTIgewogIGRlZmF1bHQtMjogbm87Cn0KZ3VhcmQtZGVmYXVsdC1tdWx0aS0yLTMgewogIGRlZmF1bHQtMzogMzsKfQpndWFyZC1kZWZhdWx0LW11bHRpLTMtYmx1ZSB7CiAgY2FzZS0yOiBkYXJrYmx1ZTsKfQpndWFyZC1kZWZhdWx0LW11bHRpLTMtZ3JlZW4gewogIGRlZmF1bHQtY29sb3I6IGdyZWVuOwp9Cmd1YXJkLWRlZmF1bHQtbXVsdGktMy1mb28gewogIGNhc2UtMTogSSBhbSAnZm9vJzsKfQpndWFyZC1kZWZhdWx0LW11bHRpLTMtYmF6IHsKICBkZWZhdWx0LXN0cmluZzogSSBhbSAnYmF6JzsKfQpndWFyZC1kZWZhdWx0LW11bHRpLTQgewogIGFsd2F5czogMTsKICBhbHdheXM6IDI7CiAgY2FzZTogMjsKfQpndWFyZC1kZWZhdWx0LW5vdC1hbWJpZ3Vvcy0yIHsKICBjYXNlOiAxOwogIG5vdC1kZWZhdWx0OiAyOwp9Cmd1YXJkLWRlZmF1bHQtbm90LWFtYmlndW9zLTMgewogIGNhc2U6IDE7CiAgbm90LWRlZmF1bHQtMTogMjsKICBub3QtZGVmYXVsdC0yOiAyOwp9Cmd1YXJkLWRlZmF1bHQtc2NvcGVzLTMgewogIDM6IHdoZW4gZGVmYXVsdDsKfQpndWFyZC1kZWZhdWx0LXNjb3Blcy0xIHsKICAxOiBubyBjb25kaXRpb247Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-guards.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmxpZ2h0MSB7CiAgY29sb3I6IHdoaXRlOwogIG1hcmdpbjogMXB4Owp9Ci5saWdodDIgewogIGNvbG9yOiBibGFjazsKICBtYXJnaW46IDFweDsKfQoubWF4MSB7CiAgd2lkdGg6IDY7Cn0KLm1heDIgewogIHdpZHRoOiA4Owp9Ci5nbG9iMSB7CiAgbWFyZ2luOiBhdXRvIGF1dG87Cn0KLm9wczEgewogIGhlaWdodDogZ3Qtb3ItZXE7CiAgaGVpZ2h0OiBsdC1vci1lcTsKICBoZWlnaHQ6IGx0LW9yLWVxLWFsaWFzOwp9Ci5vcHMyIHsKICBoZWlnaHQ6IGd0LW9yLWVxOwogIGhlaWdodDogbm90LWVxOwp9Ci5vcHMzIHsKICBoZWlnaHQ6IGx0LW9yLWVxOwogIGhlaWdodDogbHQtb3ItZXEtYWxpYXM7CiAgaGVpZ2h0OiBub3QtZXE7Cn0KLmRlZmF1bHQxIHsKICBjb250ZW50OiBkZWZhdWx0Owp9Ci50ZXN0MSB7CiAgY29udGVudDogInRydWUuIjsKfQoudGVzdDIgewogIGNvbnRlbnQ6ICJmYWxzZS4iOwp9Ci50ZXN0MyB7CiAgY29udGVudDogImZhbHNlLiI7Cn0KLnRlc3Q0IHsKICBjb250ZW50OiAiZmFsc2UuIjsKfQoudGVzdDUgewogIGNvbnRlbnQ6ICJmYWxzZS4iOwp9Ci5ib29sMSB7CiAgY29udGVudDogdHJ1ZSBhbmQgdHJ1ZTsKICBjb250ZW50OiB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlIGFuZCB0cnVlIGFuZCB0cnVlLCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCB0cnVlIGFuZCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCBmYWxzZSwgdHJ1ZTsKICBjb250ZW50OiBmYWxzZSwgdHJ1ZSBhbmQgdHJ1ZSBhbmQgdHJ1ZSwgZmFsc2U7CiAgY29udGVudDogbm90IGZhbHNlOwogIGNvbnRlbnQ6IG5vdCBmYWxzZSBhbmQgZmFsc2UsIG5vdCBmYWxzZTsKfQouZXF1YWxpdHktdW5pdHMgewogIHRlc3Q6IHBhc3M7Cn0KLmNvbG9yZ3VhcmR0ZXN0IHsKICBjb250ZW50OiBpcyByZWQ7CiAgY29udGVudDogaXMgbm90IGJsdWUgaXRzIHJlZDsKICBjb250ZW50OiBpcyBub3QgYmx1ZSBpdHMgcHVycGxlOwp9Ci5zdHJpbmdndWFyZHRlc3QgewogIGNvbnRlbnQ6ICJ0aGVtZTEiIGlzICJ0aGVtZTEiOwogIGNvbnRlbnQ6ICJ0aGVtZTEiIGlzIG5vdCAidGhlbWUyIjsKICBjb250ZW50OiAidGhlbWUxIiBpcyAndGhlbWUxJzsKICBjb250ZW50OiAidGhlbWUxIiBpcyBub3QgJ3RoZW1lMic7CiAgY29udGVudDogJ3RoZW1lMScgaXMgInRoZW1lMSI7CiAgY29udGVudDogJ3RoZW1lMScgaXMgbm90ICJ0aGVtZTIiOwogIGNvbnRlbnQ6ICd0aGVtZTEnIGlzICd0aGVtZTEnOwogIGNvbnRlbnQ6ICd0aGVtZTEnIGlzIG5vdCAndGhlbWUyJzsKICBjb250ZW50OiB0aGVtZTEgaXMgbm90ICJ0aGVtZTIiOwogIGNvbnRlbnQ6IHRoZW1lMSBpcyBub3QgJ3RoZW1lMic7CiAgY29udGVudDogdGhlbWUxIGlzIHRoZW1lMTsKfQoudmFyaW91c2UtdHlwZXMtY29tcGFyaXNvbiB7CiAgLyoqLwogIGNvbnRlbnQ6IHRydWUgaXMgbm90IGVxdWFsIHRvIGZhbHNlOwogIGNvbnRlbnQ6IGZhbHNlIGlzIG5vdCBlcXVhbCB0byB0cnVlIHRvbzsKICAvKiovCiAgY29udGVudDogMSBpcyBub3QgZXF1YWwgdG8gdHJ1ZTsKICBjb250ZW50OiB0cnVlIGlzIG5vdCBlcXVhbCB0byAxIHRvbzsKICAvKiovCiAgY29udGVudDogMiBpcyBlcXVhbCB0byAycHg7CiAgY29udGVudDogMnB4IGlzIGVxdWFsIHRvIDIgdG9vOwogIC8qKi8KICBjb250ZW50OiAzIGlzIGVxdWFsIHRvIDM7CiAgY29udGVudDogMyBpcyBlcXVhbCB0byAzIHRvbzsKICAvKiovCiAgY29udGVudDogNSBpcyBub3QgZXF1YWwgdG8gNDsKICBjb250ZW50OiA0IGlzIG5vdCBlcXVhbCB0byA1IHRvbzsKICAvKiovCiAgY29udGVudDogYWJjIGlzIGVxdWFsIHRvIGFiYzsKICBjb250ZW50OiBhYmMgaXMgZXF1YWwgdG8gYWJjIHRvbzsKICAvKiovCiAgY29udGVudDogYWJjIGlzIG5vdCBlcXVhbCB0byAiYWJjIjsKICBjb250ZW50OiAiYWJjIiBpcyBub3QgZXF1YWwgdG8gYWJjIHRvbzsKICAvKiovCiAgY29udGVudDogJ2FiYycgaXMgbGVzcyB0aGFuICJhYmQiOwogIGNvbnRlbnQ6ICJhYmQiIGlzIGdyZWF0ZXIgdGhhbiAnYWJjJyB0b287CiAgY29udGVudDogJ2FiYycgaXMgbm90IGVxdWFsIHRvICJhYmQiOwogIGNvbnRlbnQ6ICJhYmQiIGlzIG5vdCBlcXVhbCB0byAnYWJjJyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDYgaXMgZXF1YWwgdG8gNjsKICBjb250ZW50OiA2IGlzIGVxdWFsIHRvIDYgdG9vOwogIC8qKi8KICBjb250ZW50OiA4IGlzIGxlc3MgdGhhbiA5IHRvbzsKICBjb250ZW50OiA5IGlzIGdyZWF0ZXIgdGhhbiA4OwogIGNvbnRlbnQ6IDkgaXMgbm90IGVxdWFsIHRvIDg7CiAgY29udGVudDogOCBpcyBub3QgZXF1YWwgdG8gOSB0b287CiAgLyoqLwogIGNvbnRlbnQ6IGEgaXMgbm90IGVxdWFsIHRvIGI7CiAgY29udGVudDogYiBpcyBub3QgZXF1YWwgdG8gYSB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMiBpcyBub3QgZXF1YWwgdG8gMzsKICBjb250ZW50OiAzIGlzIG5vdCBlcXVhbCB0byAxIDIgdG9vOwp9Ci5saXN0LWNvbXBhcmlzb24gewogIC8qKi8KICBjb250ZW50OiBhIGIgYyBpcyBlcXVhbCB0byBhIGIgYzsKICBjb250ZW50OiBhIGIgYyBpcyBlcXVhbCB0byBhIGIgYyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IGEgYiBjIGlzIG5vdCBlcXVhbCB0byBhIGIgZDsKICBjb250ZW50OiBhIGIgZCBpcyBub3QgZXF1YWwgdG8gYSBiIGMgdG9vOwogIC8qKi8KICBjb250ZW50OiBhLCBiLCBjIGlzIGVxdWFsIHRvIGEsIGIsIGM7CiAgY29udGVudDogYSwgYiwgYyBpcyBlcXVhbCB0byBhLCBiLCBjIHRvbzsKICAvKiovCiAgY29udGVudDogYSwgYiwgYyBpcyBub3QgZXF1YWwgdG8gYSwgYiwgZDsKICBjb250ZW50OiBhLCBiLCBkIGlzIG5vdCBlcXVhbCB0byBhLCBiLCBjIHRvbzsKICAvKiovCiAgY29udGVudDogMSAycHggMzAwbXMgaXMgZXF1YWwgdG8gMWVtIDIgMC4zczsKICBjb250ZW50OiAxZW0gMiAwLjNzIGlzIGVxdWFsIHRvIDEgMnB4IDMwMG1zIHRvbzsKICAvKiovCiAgY29udGVudDogMSAyIDMgaXMgbm90IGVxdWFsIHRvIDEsIDIsIDM7CiAgY29udGVudDogMSwgMiwgMyBpcyBub3QgZXF1YWwgdG8gMSAyIDMgdG9vOwogIC8qKi8KICBjb250ZW50OiAxLCAyLCAzIGlzIGVxdWFsIHRvIDEsIDIsIDM7CiAgY29udGVudDogMSwgMiwgMyBpcyBlcXVhbCB0byAxLCAyLCAzIHRvbzsKICAvKiovCiAgY29udGVudDogMSAyIDMgMSwgMiwgMyBpcyBlcXVhbCB0byAxIDIgMyAxLCAyLCAzOwogIGNvbnRlbnQ6IDEgMiAzIDEsIDIsIDMgaXMgZXF1YWwgdG8gMSAyIDMgMSwgMiwgMyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMiAzIDEsIDIsIDMgaXMgbm90IGVxdWFsIHRvIDEsIDIsIDMgMSAyIDM7CiAgY29udGVudDogMSwgMiwgMyAxIDIgMyBpcyBub3QgZXF1YWwgdG8gMSAyIDMgMSwgMiwgMyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMiAzIDEsIDIsIDMgNCBpcyBlcXVhbCB0byAxIDIgMyAxLCAyLCAzIDQ7CiAgY29udGVudDogMSAyIDMgMSwgMiwgMyA0IGlzIGVxdWFsIHRvIDEgMiAzIDEsIDIsIDMgNCB0b287Cn0KI3RyeU51bWJlclB4IHsKICBjYXRjaDogYWxsOwogIGRlY2xhcmU6IDQ7CiAgZGVjbGFyZTogNHB4Owp9Ci5jYWxsLWxvY2stbWl4aW4gLmNhbGwtaW5uZXItbG9jay1taXhpbiB7CiAgYTogMTsKICB4OiAxOwp9Ci5taXhpbi1nZW5lcmF0ZWQtY2xhc3MgewogIGE6IDE7Cn0KI2d1YXJkZWQtY2FsbGVyIHsKICBndWFyZGVkOiBuYW1lc3BhY2U7CiAgc2lsZW50OiBuYW1lc3BhY2U7CiAgZ3VhcmRlZDogd2l0aCBkZWZhdWx0Owp9CiNndWFyZGVkLWRlZXBlciB7CiAgc2hvdWxkOiBtYXRjaCAxOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-important.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsYXNzIHsKICBib3JkZXI6IDE7CiAgYm94ZXI6IDE7CiAgYm9yZGVyLXdpZHRoOiAxOwogIGJvcmRlcjogMiAhaW1wb3J0YW50OwogIGJveGVyOiAyICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXdpZHRoOiAyICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAzOwogIGJveGVyOiAzOwogIGJvcmRlci13aWR0aDogMzsKICBib3JkZXI6IDQgIWltcG9ydGFudDsKICBib3hlcjogNCAhaW1wb3J0YW50OwogIGJvcmRlci13aWR0aDogNCAhaW1wb3J0YW50OwogIGJvcmRlcjogNTsKICBib3hlcjogNTsKICBib3JkZXItd2lkdGg6IDU7CiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7CiAgYm94ZXI6IDAgIWltcG9ydGFudDsKICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudDsKICBib3JkZXI6IDkgIWltcG9ydGFudDsKICBib3JkZXI6IDk7CiAgYm94ZXI6IDk7CiAgYm9yZGVyLXdpZHRoOiA5Owp9Ci5jbGFzcyAuaW5uZXIgewogIHRlc3Q6IDE7Cn0KLmNsYXNzIC5pbm5lciB7CiAgdGVzdDogMiAhaW1wb3J0YW50Owp9Ci5jbGFzcyAuaW5uZXIgewogIHRlc3Q6IDM7Cn0KLmNsYXNzIC5pbm5lciB7CiAgdGVzdDogNCAhaW1wb3J0YW50Owp9Ci5jbGFzcyAuaW5uZXIgewogIHRlc3Q6IDU7Cn0KLmNsYXNzIC5pbm5lciB7CiAgdGVzdDogMCAhaW1wb3J0YW50Owp9Ci5jbGFzcyAuaW5uZXIgewogIHRlc3Q6IDk7Cn0KLndoZW4tY2FsbGluZy1uZXN0ZWQtaXNzdWUtMjM5NCB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQoud2hlbi1jYWxsaW5nLW5lc3RlZC13aXRoLXBhcmFtLWlzc3VlLTIzOTQgewogIHdpZHRoOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KLmNsYXNzMS0yNDIxIHsKICBtYXJnaW46IDVweCAhaW1wb3J0YW50Owp9Ci5jbGFzczItMjQyMSB7CiAgbWFyZ2luOiA1cHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-interpolated.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LjEyMyB7CiAgYTogMDsKfQouZm9vIHsKICBhOiAxOwp9Ci5mb28gewogIGE6IDI7Cn0KI2ZvbyB7CiAgYTogMzsKfQojZm9vIHsKICBhOiA0Owp9Cm1pLXRlc3QtYSB7CiAgYTogMDsKICBhOiAxOwogIGE6IDI7CiAgYTogMzsKICBhOiA0Owp9Ci5iIC5iYi5mb28teHh4IC55eXktZm9vI2ZvbyAuZm9vLmJiYiB7CiAgYjogMTsKfQptaS10ZXN0LWIgewogIGI6IDE7Cn0KI2Zvby1mb28gPiAuYmFyIC5iYXogewogIGM6IGM7Cn0KbWktdGVzdC1jLTEgPiAuYmFyIC5iYXogewogIGM6IGM7Cn0KbWktdGVzdC1jLTIgLmJheiB7CiAgYzogYzsKfQptaS10ZXN0LWMtMyB7CiAgYzogYzsKfQptaS10ZXN0LWQgewogIGdlbmRlcjogIk1hbGUiOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-named-args.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm5hbWVkLWFyZyB7CiAgY29sb3I6IGJsdWU7CiAgd2lkdGg6IDVweDsKICBoZWlnaHQ6IDk5JTsKICBhcmdzOiAxcHggMTAwJTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmNsYXNzIHsKICB3aWR0aDogNXB4OwogIGhlaWdodDogMTklOwogIGFyZ3M6IDFweCAyMCU7Cn0KLmFsbC1hcmdzLXdyb25nLWFyZ3MgewogIHdpZHRoOiAxMHB4OwogIGhlaWdodDogOSU7CiAgYXJnczogMnB4IDEwJTsKfQoubmFtZWQtYXJnczIgewogIHdpZHRoOiAxNXB4OwogIGhlaWdodDogNDklOwogIGNvbG9yOiAjNjQ2NDY0Owp9Ci5uYW1lZC1hcmdzMyB7CiAgd2lkdGg6IDVweDsKICBoZWlnaHQ6IDI5JTsKICBjb2xvcjogIzEyMzQ1NjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-nested.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsYXNzIC5pbm5lciB7CiAgaGVpZ2h0OiAzMDA7Cn0KLmNsYXNzIC5pbm5lciAuaW5uZXN0IHsKICB3aWR0aDogMzA7CiAgYm9yZGVyLXdpZHRoOiA2MDsKfQouY2xhc3MyIC5pbm5lciB7CiAgaGVpZ2h0OiA2MDA7Cn0KLmNsYXNzMiAuaW5uZXIgLmlubmVzdCB7CiAgd2lkdGg6IDYwOwogIGJvcmRlci13aWR0aDogMTIwOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins-pattern.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lnplcm8gewogIHZhcmlhZGljOiB0cnVlOwogIG5hbWVkLXZhcmlhZGljOiB0cnVlOwogIHplcm86IDA7CiAgb25lOiAxOwogIHR3bzogMjsKICB0aHJlZTogMzsKfQoub25lIHsKICB2YXJpYWRpYzogdHJ1ZTsKICBuYW1lZC12YXJpYWRpYzogdHJ1ZTsKICBvbmU6IDE7CiAgb25lLXJlcTogMTsKICB0d286IDI7CiAgdGhyZWU6IDM7Cn0KLnR3byB7CiAgdmFyaWFkaWM6IHRydWU7CiAgbmFtZWQtdmFyaWFkaWM6IHRydWU7CiAgdHdvOiAyOwogIHRocmVlOiAzOwp9Ci50aHJlZSB7CiAgdmFyaWFkaWM6IHRydWU7CiAgbmFtZWQtdmFyaWFkaWM6IHRydWU7CiAgdGhyZWUtcmVxOiAzOwogIHRocmVlOiAzOwp9Ci5sZWZ0IHsKICBsZWZ0OiAxOwp9Ci5yaWdodCB7CiAgcmlnaHQ6IDE7Cn0KLmJvcmRlci1yaWdodCB7CiAgY29sb3I6IGJsYWNrOwogIGJvcmRlci1yaWdodDogNHB4Owp9Ci5ib3JkZXItbGVmdCB7CiAgY29sb3I6IGJsYWNrOwogIGJvcmRlci1sZWZ0OiA0cHg7Cn0KLm9ubHktcmlnaHQgewogIHJpZ2h0OiAzMzsKfQoub25seS1sZWZ0IHsKICBsZWZ0OiAzMzsKfQoubGVmdC1yaWdodCB7CiAgYm90aDogMzMwOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/mixins.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIHsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKfQoubWl4b3V0IHsKICBib3JkZXItY29sb3I6IG9yYW5nZTsKfQouYm9yZGVycyB7CiAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7Cn0KLm1peGluID4gKiB7CiAgYm9yZGVyOiBkbyBub3QgbWF0Y2ggbWU7Cn0KI25hbWVzcGFjZSAuYm9yZGVycyB7CiAgYm9yZGVyLXN0eWxlOiBkb3R0ZWQ7Cn0KI25hbWVzcGFjZSAuYmlvaGF6YXJkIHsKICBjb250ZW50OiAiZGVhdGgiOwp9CiNuYW1lc3BhY2UgLmJpb2hhemFyZCAubWFuIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KI3RoZW1lID4gLm1peGluIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5Owp9CiNjb250YWluZXIgewogIGNvbG9yOiBibGFjazsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBib3JkZXItY29sb3I6IG9yYW5nZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5Owp9CiNoZWFkZXIgLm1pbGsgewogIGNvbG9yOiB3aGl0ZTsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5Owp9CiNoZWFkZXIgI2Nvb2tpZSB7CiAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7Cn0KI2hlYWRlciAjY29va2llIC5jaGlwcyB7CiAgYm9yZGVyLXN0eWxlOiBkb3R0ZWQ7Cn0KI2hlYWRlciAjY29va2llIC5jaGlwcyAuY2Fsb3JpZXMgewogIGNvbG9yOiBibGFjazsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBib3JkZXItY29sb3I6IG9yYW5nZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5Owp9Ci5zZWN1cmUtem9uZSB7CiAgY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5kaXJlY3QgewogIGJvcmRlci1zdHlsZTogZG90dGVkOwp9Ci5ibywKLmJhciB7CiAgd2lkdGg6IDEwMCU7Cn0KLmJvIHsKICBib3JkZXI6IDFweDsKfQouYXIuYm8uY2EgewogIGNvbG9yOiBibGFjazsKfQouam8ua2kgewogIGJhY2tncm91bmQ6IG5vbmU7Cn0KLmFtcC5zdXBwb3J0IHsKICBjb2xvcjogb3JhbmdlOwp9Ci5hbXAuc3VwcG9ydCAuaGlnaGVyIHsKICB0b3A6IDBweDsKfQouYW1wLnN1cHBvcnQuZGVlcGVyIHsKICBoZWlnaHQ6IGF1dG87Cn0KLmV4dGVuZGVkIHsKICB3aWR0aDogMTAwJTsKICBib3JkZXI6IDFweDsKICBiYWNrZ3JvdW5kOiBub25lOwogIGNvbG9yOiBvcmFuZ2U7CiAgdG9wOiAwcHg7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5leHRlbmRlZCAuaGlnaGVyIHsKICB0b3A6IDBweDsKfQouZXh0ZW5kZWQuZGVlcGVyIHsKICBoZWlnaHQ6IGF1dG87Cn0KLmRvIC5yZSAubWkgLmZhIC5zb2wgLmxhIC5zaSB7CiAgY29sb3I6IGN5YW47Cn0KLm11dGxpLXNlbGVjdG9yLXBhcmVudHMgewogIGNvbG9yOiBjeWFuOwp9Ci5mb28gLmJhciB7CiAgd2lkdGg6IDEwMCU7Cn0KLnVuZGVyUGFyZW50cyB7CiAgY29sb3I6IHJlZDsKfQoucGFyZW50IC51bmRlclBhcmVudHMgewogIGNvbG9yOiByZWQ7Cn0KKiArIGgxIHsKICBtYXJnaW4tdG9wOiAyNXB4Owp9CmxlZ2VuZCArIGgxIHsKICBtYXJnaW4tdG9wOiAwOwp9CmgxICsgKiB7CiAgbWFyZ2luLXRvcDogMTBweDsKfQoqICsgaDIgewogIG1hcmdpbi10b3A6IDIwcHg7Cn0KbGVnZW5kICsgaDIgewogIG1hcmdpbi10b3A6IDA7Cn0KaDIgKyAqIHsKICBtYXJnaW4tdG9wOiA4cHg7Cn0KKiArIGgzIHsKICBtYXJnaW4tdG9wOiAxNXB4Owp9CmxlZ2VuZCArIGgzIHsKICBtYXJnaW4tdG9wOiAwOwp9CmgzICsgKiB7CiAgbWFyZ2luLXRvcDogNXB4Owp9Ci5lcnJvciB7CiAgYmFja2dyb3VuZC1pbWFnZTogIi9hLnBuZyI7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKfQoudGVzdC1yZWMgLnJlY3Vyc2lvbiB7CiAgY29sb3I6IGJsYWNrOwp9Ci5idXR0b24gewogIHBhZGRpbmctbGVmdDogNDRweDsKfQouYnV0dG9uLmxhcmdlIHsKICBwYWRkaW5nLWxlZnQ6IDQwZW07Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/modifyVars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/modifyVars/extended.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CiAgY29sb3I6ICMzMzMzMzM7CiAgYm9yZGVyLWxlZnQ6IDFweDsKICBib3JkZXItcmlnaHQ6IDJweDsKfQojZm9vdGVyIHsKICBjb2xvcjogIzExNDQxMTsKICBib3JkZXItY29sb3I6ICM4NDIyMTA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/no-output.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/operations.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I29wZXJhdGlvbnMgewogIGNvbG9yOiAjMTExMTExOwogIGhlaWdodDogOXB4OwogIHdpZHRoOiAzZW07CiAgc3Vic3RyYWN0aW9uOiAwOwogIGRpdmlzaW9uOiAxOwp9CiNvcGVyYXRpb25zIC5zcGFjaW5nIHsKICBoZWlnaHQ6IDlweDsKICB3aWR0aDogM2VtOwp9Ci53aXRoLXZhcmlhYmxlcyB7CiAgaGVpZ2h0OiAxNmVtOwogIHdpZHRoOiAyNGVtOwogIHNpemU6IDFjbTsKfQoud2l0aC1mdW5jdGlvbnMgewogIGNvbG9yOiAjNjQ2NDY0OwogIGNvbG9yOiAjZmY4MDgwOwogIGNvbG9yOiAjYzk0YTRhOwp9Ci5uZWdhdGl2ZSB7CiAgaGVpZ2h0OiAwcHg7CiAgd2lkdGg6IDRweDsKfQouc2hvcnRoYW5kcyB7CiAgcGFkZGluZzogLTFweCAycHggMCAtNHB4Owp9Ci5yZW0tZGltZW5zaW9ucyB7CiAgZm9udC1zaXplOiA1LjVyZW07Cn0KLmNvbG9ycyB7CiAgY29sb3I6ICMxMjM7CiAgYm9yZGVyLWNvbG9yOiAjMzM0NDU1OwogIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7Cn0KLmNvbG9ycyAub3RoZXIgewogIGNvbG9yOiAjMjIyMjIyOwogIGJvcmRlci1jb2xvcjogIzIyMjIyMjsKfQoubmVnYXRpb25zIHsKICB2YXJpYWJsZTogLTRweDsKICB2YXJpYWJsZTE6IDBweDsKICB2YXJpYWJsZTI6IDBweDsKICB2YXJpYWJsZTM6IDhweDsKICB2YXJpYWJsZTQ6IDBweDsKICBwYXJlbjogLTRweDsKICBwYXJlbjI6IDE2cHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/parens.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7CiAgbWFyZ2luOiAxcHggM3B4IDE2IDM7CiAgd2lkdGg6IDM2OwogIHBhZGRpbmc6IDJweCAzNnB4Owp9Ci5tb3JlLXBhcmVucyB7CiAgcGFkZGluZzogOCA0IDQgNHB4OwogIHdpZHRoLWFsbDogOTY7CiAgd2lkdGgtZmlyc3Q6IDE2ICogNjsKICB3aWR0aC1rZWVwOiAoNCAqIDQpICogNjsKICBoZWlnaHQta2VlcDogKDcgKiA3KSArICg4ICogOCk7CiAgaGVpZ2h0LWFsbDogMTEzOwogIGhlaWdodC1wYXJ0czogNDkgKyA2NDsKICBtYXJnaW4ta2VlcDogKDQgKiAoNSArIDUpIC8gMikgLSAoNCAqIDIpOwogIG1hcmdpbi1wYXJ0czogMjAgLSA4OwogIG1hcmdpbi1hbGw6IDEyOwogIGJvcmRlci1yYWRpdXMta2VlcDogNHB4ICogKDEgKyAxKSAvIDQgKyAzcHg7CiAgYm9yZGVyLXJhZGl1cy1wYXJ0czogOHB4IC8gN3B4OwogIGJvcmRlci1yYWRpdXMtYWxsOiA1cHg7Cn0KLm5lZ2F0aXZlIHsKICBuZWctdmFyOiAtMTsKICBuZWctdmFyLXBhcmVuOiAtKDEpOwp9Ci5uZXN0ZWQtcGFyZW5zIHsKICB3aWR0aDogMiAqICg0ICogKDIgKyAoMSArIDYpKSkgLSAxOwogIGhlaWdodDogKCgyICsgMykgKiAoMiArIDMpIC8gKDkgLSA0KSkgKyAxOwp9Ci5taXhlZC11bml0cyB7CiAgbWFyZ2luOiAycHggNGVtIDEgNXBjOwogIHBhZGRpbmc6IDZweCAxZW0gMnB4IDI7Cn0KLnRlc3QtZmFsc2UtbmVnYXRpdmVzIHsKICBhOiAoOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/plugin.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm90aGVyIHsKICB0cmFuczogdHJhbnNpdGl2ZTsKfQouY2xhc3MgewogIHRyYW5zOiB0cmFuc2l0aXZlOwogIGdsb2JhbDogZ2xvYmFsOwogIGxvY2FsOiB0ZXN0LWxvY2FsKCk7CiAgc2hhZG93OiBnbG9iYWw7Cn0KLmNsYXNzIC5sb2NhbCB7CiAgZ2xvYmFsOiBnbG9iYWw7CiAgbG9jYWw6IGxvY2FsOwogIHNoYWRvdzogbG9jYWw7Cn0KLmNsYXNzIHsKICBucy1taXhpbi1nbG9iYWw6IGdsb2JhbDsKICBucy1taXhpbi1sb2NhbDogbG9jYWw7CiAgbnMtbWl4aW4tc2hhZG93OiBsb2NhbDsKICBtaXhpbi1sb2NhbDogbG9jYWw7CiAgbWl4aW4tZ2xvYmFsOiBnbG9iYWw7CiAgbWl4aW4tc2hhZG93OiBsb2NhbDsKICBydWxlc2V0LWxvY2FsOiBsb2NhbDsKICBydWxlc2V0LWdsb2JhbDogZ2xvYmFsOwogIHJ1bGVzZXQtc2hhZG93OiBsb2NhbDsKICBjbGFzcy1sb2NhbDogdGVzdC1sb2NhbCgpOwp9CkBtZWRpYSBzY3JlZW4gewogIC50ZXN0IHsKICAgIHJlc3VsdDogZ2xvYmFsOwogIH0KfQpAZm9udC1mYWNlIHsKICByZXN1bHQ6IGdsb2JhbDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDBweCkgYW5kIChtYXgtd2lkdGg6IDQwMHB4KSB7CiAgLnRlc3QgewogICAgcmVzdWx0OiBnbG9iYWw7CiAgfQp9CkBtZWRpYSBzY3JlZW4gewogIC50ZXN0IHsKICAgIHJlc3VsdDogbG9jYWw7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/postProcessorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/postProcessorPlugin/postProcessor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHIge2hlaWdodDo1MHB4O30KLnRlc3QgewogIGNvbG9yOiB3aGl0ZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/preProcessorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/preProcessorPlugin/preProcessor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGNvbG9yOiByZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/property-name-interp.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cGktdGVzdCB7CiAgYm9yZGVyOiAwOwogIEBub3QtdmFyaWFibGU6IEBub3QtdmFyaWFibGU7CiAgdWZvLXdpZHRoOiA1MCU7CiAgKi16LWJvcmRlcjogMXB4IGRhc2hlZCBibHVlOwogIC13d3ctYm9yZGVyLXRvcDogMnB4OwogIHJhZGl1cy1pcy1ub3QtYS1ib3JkZXI6IHRydWU7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMmVtOwogIGJvcmRlci10b3AtcmVkLXJhZGl1cy06IDNwdDsKICBnbG9iYWwtbG9jYWwtbWl4ZXItcHJvcGVydHk6IHN0cm9uZzsKfQpwaS10ZXN0LW1lcmdlIHsKICBwcmUtcHJvcGVydHktaXNoOiBoaWdoLCBtaWRkbGUsIGxvdywgYmFzZTsKICBwcmUtcHJvcGVydHktaXNoKzogbmljZSB0cnkgZHVkZTsKfQpwaS1pbmRpcmVjdC12YXJzIHsKICBhdXRvOiBhdXRvOwp9CnBpLWNvbXBsZXgtdmFsdWVzIHsKICAzcHggcmdiYSgyNTUsIDI1NSwgMCwgMC41KSwgMy4xNDE1OTI2NTM1ODk3OTMgLyogZm9vICovM3B4IHJnYmEoMjU1LCAyNTUsIDAsIDAuNSksIDMuMTQxNTkyNjUzNTg5NzkzIC8qIGZvbyAqLzogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/rulesets.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ZpcnN0ID4gLm9uZSB7CiAgZm9udC1zaXplOiAyZW07Cn0KI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4IHsKICB3aWR0aDogNTAlOwp9CiNmaXJzdCA+IC5vbmUgPiAjc2Vjb25kIC50d28gPiAjZGV1eCAjdGhpcmQgewogIGhlaWdodDogMTAwJTsKfQojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI3RoaXJkOmZvY3VzIHsKICBjb2xvcjogYmxhY2s7Cn0KI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4ICN0aGlyZDpmb2N1cyAjZmlmdGggPiAjc2l4dGggLnNldmVudGggI2VpZ2h0aCArICNuaW50aCB7CiAgY29sb3I6IHB1cnBsZTsKfQojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZvdXJ0aCwKI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4ICNmaXZlLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI3NpeCB7CiAgY29sb3I6ICMxMTAwMDA7Cn0KI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4ICNmb3VydGggLnNldmVuLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZpdmUgLnNldmVuLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI3NpeCAuc2V2ZW4sCiNmaXJzdCA+IC5vbmUgPiAjc2Vjb25kIC50d28gPiAjZGV1eCAjZm91cnRoIC5laWdodCA+ICNuaW5lLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZpdmUgLmVpZ2h0ID4gI25pbmUsCiNmaXJzdCA+IC5vbmUgPiAjc2Vjb25kIC50d28gPiAjZGV1eCAjc2l4IC5laWdodCA+ICNuaW5lIHsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKfQojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZvdXJ0aCAjdGVuLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZpdmUgI3RlbiwKI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4ICNzaXggI3RlbiB7CiAgY29sb3I6IHJlZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/scope.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRpbnktc2NvcGUgewogIGNvbG9yOiAjOTg5Owp9Ci5zY29wZTEgewogIGNvbG9yOiBibHVlOwogIGJvcmRlci1jb2xvcjogYmxhY2s7Cn0KLnNjb3BlMSAuc2NvcGUyIHsKICBjb2xvcjogYmx1ZTsKfQouc2NvcGUxIC5zY29wZTIgLnNjb3BlMyB7CiAgY29sb3I6IHJlZDsKICBib3JkZXItY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9Ci5zY29wZSB7CiAgc2NvcGVkLXZhbDogZ3JlZW47Cn0KLmhlaWdodElzU2V0IHsKICBoZWlnaHQ6IDEwMjRweDsKfQoudXNlSGVpZ2h0SW5NaXhpbkNhbGwgewogIG1peGluLWhlaWdodDogMTAyNHB4Owp9Ci5pbXBvcnRlZCB7CiAgZXhpc3RzOiB0cnVlOwp9Ci50ZXN0SW1wb3J0ZWQgewogIGV4aXN0czogdHJ1ZTsKfQojYWxsQXJlVXNlZEhlcmUgewogIGRlZmF1bHQ6ICd0b3AgbGV2ZWwnOwogIHNjb3BlOiAndG9wIGxldmVsJzsKICBzdWItc2NvcGUtb25seTogJ2luc2lkZSc7Cn0KI3BhcmVudFNlbGVjdG9yU2NvcGUgewogIHByb3A6IHdoaXRlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/selectors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aDEgYTpob3ZlciwKaDIgYTpob3ZlciwKaDMgYTpob3ZlciwKaDEgcDpob3ZlciwKaDIgcDpob3ZlciwKaDMgcDpob3ZlciB7CiAgY29sb3I6IHJlZDsKfQojYWxsIHsKICBjb2xvcjogYmx1ZTsKfQojdGhlIHsKICBjb2xvcjogYmx1ZTsKfQojc2FtZSB7CiAgY29sb3I6IGJsdWU7Cn0KdWwsCmxpLApkaXYsCnEsCmJsb2NrcXVvdGUsCnRleHRhcmVhIHsKICBtYXJnaW46IDA7Cn0KdGQgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwp9CnRkLAppbnB1dCB7CiAgbGluZS1oZWlnaHQ6IDFlbTsKfQphIHsKICBjb2xvcjogcmVkOwp9CmE6aG92ZXIgewogIGNvbG9yOiBibHVlOwp9CmRpdiBhIHsKICBjb2xvcjogZ3JlZW47Cn0KcCBhIHNwYW4gewogIGNvbG9yOiB5ZWxsb3c7Cn0KLmZvbyAuYmFyIC5xdXgsCi5mb28gLmJheiAucXV4IHsKICBkaXNwbGF5OiBibG9jazsKfQoucXV4IC5mb28gLmJhciwKLnF1eCAuZm9vIC5iYXogewogIGRpc3BsYXk6IGlubGluZTsKfQoucXV4LmZvbyAuYmFyLAoucXV4LmZvbyAuYmF6IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLnF1eCAuZm9vIC5iYXIgLmJpeiwKLnF1eCAuZm9vIC5iYXogLmJpeiB7CiAgZGlzcGxheTogbm9uZTsKfQouYS5iLmMgewogIGNvbG9yOiByZWQ7Cn0KLmMgLmIuYSB7CiAgY29sb3I6IHJlZDsKfQouZm9vIC5wLmJhciB7CiAgY29sb3I6IHJlZDsKfQouZm9vLnAuYmFyIHsKICBjb2xvcjogcmVkOwp9Ci5mb28gKyAuZm9vIHsKICBiYWNrZ3JvdW5kOiBhbWJlcjsKfQouZm9vICsgLmZvbyB7CiAgYmFja2dyb3VuZDogYW1iZXI7Cn0KLmZvbyArIC5mb28sCi5mb28gKyAuYmFyLAouYmFyICsgLmZvbywKLmJhciArIC5iYXIgewogIGJhY2tncm91bmQ6IGFtYmVyOwp9Ci5mb28gYSA+IC5mb28gYSwKLmZvbyBhID4gLmJhciBhLAouZm9vIGEgPiAuZm9vIGIsCi5mb28gYSA+IC5iYXIgYiwKLmJhciBhID4gLmZvbyBhLAouYmFyIGEgPiAuYmFyIGEsCi5iYXIgYSA+IC5mb28gYiwKLmJhciBhID4gLmJhciBiLAouZm9vIGIgPiAuZm9vIGEsCi5mb28gYiA+IC5iYXIgYSwKLmZvbyBiID4gLmZvbyBiLAouZm9vIGIgPiAuYmFyIGIsCi5iYXIgYiA+IC5mb28gYSwKLmJhciBiID4gLmJhciBhLAouYmFyIGIgPiAuZm9vIGIsCi5iYXIgYiA+IC5iYXIgYiB7CiAgYmFja2dyb3VuZDogYW1iZXI7Cn0KLm90aGVyIDo6Zm5vcmQgewogIGNvbG9yOiByZWQ7Cn0KLm90aGVyOjpmbm9yZCB7CiAgY29sb3I6IHJlZDsKfQoub3RoZXIgOjpibm9yZCB7CiAgY29sb3I6IHJlZDsKfQoub3RoZXI6OmJub3JkIHsKICBjb2xvcjogcmVkOwp9Ci5ibG9vZCB7CiAgY29sb3I6IHJlZDsKfQouYmxvb2RyZWQgewogIGNvbG9yOiBncmVlbjsKfQojYmxvb2QuYmxvb2QucmVkLmJsYWNrOmJsb29kIHsKICBjb2xvcjogYmxhY2s7Cn0KOm50aC1jaGlsZCgzKSB7CiAgc2VsZWN0b3I6IGludGVycG9sYXRlZDsKfQoudGVzdDpudGgtY2hpbGQoMykgewogIHNlbGVjdG9yOiBpbnRlcnBvbGF0ZWQ7Cn0KLnRlc3Q6bnRoLWNoaWxkKG9kZCk6bm90KDpudGgtY2hpbGQoMykpIHsKICBjb2xvcjogI2ZmMDAwMDsKfQpbcHJvcF0sCltwcm9wPTEwJV0sCltwcm9wPSJ2YWx1ZTMiXSwKW3Byb3AqPSJ2YWwzIl0sClt8cHJvcH49InZhbDMiXSwKWyp8cHJvcCQ9InZhbDMiXSwKW25zfHByb3BePSJ2YWwzIl0sClszXj0idmFsMyJdLApbMz0zXSwKWzNdIHsKICBhdHRyaWJ1dGVzOiB5ZXM7Cn0KLyoKTGFyZ2UgY29tbWVudCBtZWFucyBjaHVuayB3aWxsIGJlIGVtaXR0ZWQgYWZ0ZXIgfSB3aGljaCBtZWFucyBjaHVuayB3aWxsIGJlZ2luIHdpdGggd2hpdGVzcGFjZS4uLgpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawoqLwouYmxvb2QgewogIGNvbG9yOiByZWQ7Cn0KLmZvbzpub3QoLnRzdC5vbmx5LW5lc3RlZCAubGV2ZWwyOmhvdmVyKSB7CiAgdGVzdDogb25seS1uZXN0ZWQ7Cn0KLmZvby5uZXN0ZW5kLWFuZC1ub24tbmVzdGVkOm5vdCgudHN0Lm5lc3RlbmQtYW5kLW5vbi1uZXN0ZWQ6aG92ZXIpIHsKICB0ZXN0OiBuZXN0ZW5kLWFuZC1ub24tbmVzdGVkOwp9Ci5zZWxlY3Rvcjpub3QoOmhvdmVyKSB7CiAgdGVzdDogZ2xvYmFsIHNjb3BlOwp9Ci5leHRlbmQtdGhpcywKLmFjdGl2ZS5maXJzdC1sZXZlbCAuc2Vjb25kLWxldmVsLAouZmlyc3QtbGV2ZWwgLnNlY29uZC1sZXZlbC5hY3RpdmUyIHsKICBjb250ZW50OiAnXDI2NjEnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/static-urls/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/static-urls/urls.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiY3NzL2JhY2tncm91bmQuY3NzIjsKQGltcG9ydCAiZm9sZGVyICgxKS9pbXBvcnQtdGVzdC1kLmNzcyI7CkBmb250LWZhY2UgewogIHNyYzogdXJsKCIvZm9udHMvZ2FyYW1vbmQtcHJvLnR0ZiIpOwogIHNyYzogbG9jYWwoRnV0dXJhLU1lZGl1bSksIHVybChmb2xkZXJcIFwoMVwpL2ZvbnRzLnN2ZyNNeUdlb21ldHJpY01vZGVybikgZm9ybWF0KCJzdmciKTsKfQojc2hvcnRoYW5kcyB7CiAgYmFja2dyb3VuZDogdXJsKCJodHRwOi8vd3d3Lmxlc3Njc3Mub3JnL3NwZWMuaHRtbCIpIG5vLXJlcGVhdCAwIDRweDsKfQojbWlzYyB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGZvbGRlclwgXCgxXCkvaW1hZ2VzL2ltYWdlLmpwZyk7Cn0KI2RhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7Y2hhcnNldD11dGYtODtiYXNlNjQsCiAgICBraVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFBUU1BQUFBbFBXMGlBQUFBQmxCTVZFVUFBQUQvCiAgICBrLy8rbDJaL2RBQUFBTTBsRVFWUjRuR1A0LzUvaC8xK0cvNThaRHJBejNEL01jSDh5dzgzTkREZU5HZTRVCiAgICBrZzlDOXp3ejNnVkxNREEvQTZQOS9BRkdHRnlqT1hadFFBQUFBQUVsRlRrU3VRbUNDKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCk7Cn0KI3N2Zy1kYXRhLXVyaSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsIDxzdmcgdmVyc2lvbj0iMS4xIj48Zz48L2c+PC9zdmc+Jyk7Cn0KLmNvbW1hLWRlbGltaXRlZCB7CiAgYmFja2dyb3VuZDogdXJsKGZvbGRlclwgXCgxXCkvYmcuanBnKSBuby1yZXBlYXQsIHVybChmb2xkZXJcIFwoMVwpL2JnLnBuZykgcmVwZWF0LXggdG9wIGxlZnQsIHVybChmb2xkZXJcIFwoMVwpL2JnKTsKfQoudmFsdWVzIHsKICB1cmw6IHVybCgnZm9sZGVyICgxKS9UcmVidWNoZXQnKTsKfQojbG9nbyB7CiAgd2lkdGg6IDEwMHB4OwogIGhlaWdodDogMTAwcHg7CiAgYmFja2dyb3VuZDogdXJsKCdhc3NldHMvbG9nby5wbmcnKTsKICBiYWNrZ3JvdW5kOiB1cmwoIiNpbmxpbmUtc3ZnIik7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IHhlY3JldDsKICBzcmM6IHVybCgnYXNzZXRzL3hlY3JldC50dGYnKTsKfQojc2VjcmV0IHsKICBmb250LWZhbWlseTogeGVjcmV0LCBzYW5zLXNlcmlmOwp9CiNpbXBvcnRlZC1yZWxhdGl2ZS1wYXRoIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vZGF0YS9pbWFnZS5qcGcpOwogIGJvcmRlci1pbWFnZTogdXJsKCcuLi9kYXRhL2ltYWdlLmpwZycpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/strict-units/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/strict-units/strict-units.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnVuaXRzIHsKICBjYW5jZWxzLXRvLW5vdGhpbmc6IDE7CiAgY2FuY2VsczogNnB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/strings.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3N0cmluZ3MgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL3Nvbi1vZi1hLWJhbmFuYS5jb20iKTsKICBxdW90ZXM6ICJ+IiAifiI7CiAgY29udGVudDogIiMqJTomXiwpIS4ofip9KSI7CiAgZW1wdHk6ICIiOwogIGJyYWNrZXRzOiAieyIgIn0iOwogIGVzY2FwZXM6ICJcImhlbGxvXCIgXFx3b3JsZCI7CiAgZXNjYXBlczI6ICJcImxsbyI7Cn0KI2NvbW1lbnRzIHsKICBjb250ZW50OiAiLyogaGVsbG8gKi8gLy8gbm90LXNvLXNlY3JldCI7Cn0KI3NpbmdsZS1xdW90ZSB7CiAgcXVvdGVzOiAiJyIgIiciOwogIGNvbnRlbnQ6ICciIiMhJiIiJzsKICBlbXB0eTogJyc7CiAgc2VtaS1jb2xvbjogJzsnOwp9CiNlc2NhcGVkIHsKICBmaWx0ZXI6IERYLlRyYW5zZm9ybS5NUy5CUy5maWx0ZXIob3BhY2l0eT01MCk7Cn0KI29uZS1saW5lIHsKICBpbWFnZTogdXJsKGh0dHA6Ly90b29rcy5jb20pOwp9CiNjcmF6eSB7CiAgaW1hZ2U6IHVybChodHRwOi8vKSwgIn0iLCB1cmwoImh0dHA6Ly99Iik7Cn0KI2ludGVycG9sYXRpb24gewogIHVybDogImh0dHA6Ly9sZXNzY3NzLm9yZy9kZXYvaW1hZ2UuanBnIjsKICB1cmwyOiAiaHR0cDovL2xlc3Njc3Mub3JnL2ltYWdlLTI1Ni5qcGciOwogIHVybDM6ICJodHRwOi8vbGVzc2Nzcy5vcmcjNDU2IjsKICB1cmw0OiAiaHR0cDovL2xlc3Njc3Mub3JnL2hlbGxvIjsKICB1cmw1OiAiaHR0cDovL2xlc3Njc3Mub3JnLzU0LjRweCI7Cn0KLm1peC1tdWwtY2xhc3MgewogIGNvbG9yOiBibHVlOwogIGNvbG9yOiByZWQ7CiAgY29sb3I6IGJsYWNrOwogIGNvbG9yOiBvcmFuZ2U7Cn0KLndhdGVybWFyayB7CiAgZmFtaWx5OiBVbml2ZXJzLCBBcmlhbCwgVmVyZGFuYSwgU2FuLVNlcmlmOwp9CiNpdGVyYXRlZC1pbnRlcnBvbGF0aW9uIC5taXhpbiB7CiAgd2lkdGg6IDEwMHB4OwogIHdlaXJkOiAxMDBweDsKICB3aWR0aC1zdHI6ICIxMDBweCI7CiAgd2VpcmQtc3RyOiAiMTAwcHgiOwp9CiNpdGVyYXRlZC1pbnRlcnBvbGF0aW9uIC5pbnRlcnBvbGF0aW9uLW1peGluIHsKICB3aWR0aDogMTAwcHg7CiAgd2VpcmQ6IDEwMHB4OwogIHdpZHRoLXN0cjogIjEwMHB4IjsKICB3ZWlyZC1zdHI6ICIxMDBweCI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/url-args/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/url-args/urls.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmPzQyNDI0MiIpOwogIHNyYzogbG9jYWwoRnV0dXJhLU1lZGl1bSksIHVybChmb250cy5zdmc/NDI0MjQyI015R2VvbWV0cmljTW9kZXJuKSBmb3JtYXQoInN2ZyIpOwp9CiNzaG9ydGhhbmRzIHsKICBiYWNrZ3JvdW5kOiB1cmwoImh0dHA6Ly93d3cubGVzc2Nzcy5vcmcvc3BlYy5odG1sPzQyNDI0MiIpIG5vLXJlcGVhdCAwIDRweDsKICBiYWNrZ3JvdW5kOiB1cmwoImltZy5qcGc/NDI0MjQyIikgY2VudGVyIC8gMTAwcHg7CiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoaW1hZ2UucG5nPzQyNDI0MikgY2VudGVyIC8gMXB4IDEwMHB4IHJlcGVhdC14IHNjcm9sbCBjb250ZW50LWJveCBwYWRkaW5nLWJveDsKfQojbWlzYyB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy9pbWFnZS5qcGc/NDI0MjQyKTsKfQojZGF0YS11cmkgewogIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztjaGFyc2V0PXV0Zi04O2Jhc2U2NCwKICAgIGtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUFRTUFBQUFsUFcwaUFBQUFCbEJNVkVVQUFBRC8KICAgIGsvLytsMlovZEFBQUFNMGxFUVZSNG5HUDQvNS9oLzErRy81OFpEckF6M0QvTWNIOHl3ODNORERlTkdlNFUKICAgIGtnOUM5end6M2dWTE1EQS9BNlA5L0FGR0dGeWpPWFp0UUFBQUFBRWxGVGtTdVFtQ0MpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3gtcG5nLGY5ZGlmU1NGSUlHRklGSkQxZjk4MkZTREtBQTk9PSk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVwiUm9ra2l0dFwiOlwoNDAwXCksNzAwJjQyNDI0Mik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCY0MjQyNDIiKTsKfQojc3ZnLWRhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwgPHN2ZyB2ZXJzaW9uPSIxLjEiPjxnPjwvZz48L3N2Zz4nKTsKfQouY29tbWEtZGVsaW1pdGVkIHsKICBiYWNrZ3JvdW5kOiB1cmwoYmcuanBnPzQyNDI0Mikgbm8tcmVwZWF0LCB1cmwoYmcucG5nPzQyNDI0MikgcmVwZWF0LXggdG9wIGxlZnQsIHVybChiZz80MjQyNDIpOwp9Ci52YWx1ZXMgewogIHVybDogdXJsKCdUcmVidWNoZXQ/NDI0MjQyJyk7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IHhlY3JldDsKICBzcmM6IHVybCgnLi4vYXNzZXRzL3hlY3JldC50dGY/NDI0MjQyJyk7Cn0KI3NlY3JldCB7CiAgZm9udC1mYW1pbHk6IHhlY3JldCwgc2Fucy1zZXJpZjsKfQojZGF0YS11cmkgewogIHVyaTogdXJsKCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVBU0FCSUFBRC8yd0JEQUE0S0N3d0xDUTRNQ3d3UUR3NFJGU01YRlJNVEZTc2ZJUm9qTXkwMk5USXRNVEE0UDFGRk9EeE5QVEF4Um1CSFRWUldXMXhiTjBSamFtTllhbEZaVzFmLzJ3QkRBUThRRUJVU0ZTa1hGeWxYT2pFNlYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWYvd2dBUkNBR3VBb0FEQVNJQUFoRUJBeEVCLzhRQUdnQUJBQU1CQVFFQUFBQUFBQUFBQUFBQUFBRUNBd1VFQnYvRUFCa0JBUUVCQVFFQkFBQUFBQUFBQUFBQUFBQUJBd0lFQmYvYUFBd0RBUUFDRUFNUUFBQUJ3Ry9uQUFCQUpBRkFBSmdTQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUJDSmdBQlFBQUFBQVJNQ1FCUUFDWUVnQU5zc3Q0R3VBQUFBQUFBQUFBQUFBQUFBZ0FBQUFFUUFBQ2dSTVNBQUFBZ0Vva0NnQUFFd0pMNCtqcjA4T25sOXZpWDlHMkhrSHA4UVdBQUFBQUFBQUFBQUFDQUFBQUFJZ0FBS0FCQUpSSUFBQUNBU2lRS0FBQVhvejIwVm54L1JtMmVtdm56ZzlYaE5jODlvR3VBQUFBQUFBQUFBQ0FBQUFBQ0VBQUNnQUFRQk1DUUFBQUFnRW9sVjQraTgvcitiZW56YmVjTzh3QUxYbkdXVVh6MjY3bjYrVDNlRmYwNjVlTWVyd2hlUUFBQUE1NlBkNDg5cW9iZWNBQUFBQUlRQUFLQUFBSUFBRXdKQUFBQUNMVm5uUy9TNXo1LzFkNjVGbkxYTDIvTkRiemdiWTdZeXIwY2FhS3o0L296YlBYWERPc1BYNEpRTDE2dXZrOS9GSjlIa2hEdk9VQk1hWWVudDQ4eDVmYlRiS2VwazB6OTN6QXZJQUFpSmdBQVVBQUFRQUFBQVNpUUFBQUFFdGJObDZOSzFTN1phNWJlY0xBTmN0Y3BRc0EyeTF4bEN4YXRzdDkvWnpuaCttOVBtZ1UxeStoOGdPK0ZxdU5ORkhsOTE2UTI4MnVXdVczbkN3SUlBQUFLQUFBQWdBQUFBQUpSSUFBQUFDQWJZN1lyS0NUZW1xMHFBV05NOXBjNnJjOVZlcnpjOXdOTXJUUmw2TFZPczljdGN1OHdzQUFUR3NzWmdJU1lBQUFGQUFBQVFBQUFBQUFBRW9rQUFBQUEyeDJ4QVJ0anN1U0NTaVJ0U0ZyYXVubjlmMGZIenp4OUdhN3JuRmVucytjRm11V3VVb0lBQTF4MlhFSUFBQUNnQUFBSUFBQUFpUUFBQUFDVUNRQUFKaVMrZW1ZQTJ4MU1nZ0cyTzJLemZPYzl0RkhsOXQ4MCtqeWFaWHoyODgycDc4dC9ObDlGOC9MV0xScGxBNnpBYlk3TGlFQUJRQUFBQkFBQUFBQkV3SkFBQUFBQW1CS0pBQU5jdGNnQnJscVpBR2hiRzFRRUFiWTdMaUV0cG5meC9TNlhPaGo2UFI1bHR2TmlQWjg0QnRqcXVRQUFBQUFDQUFBQUFBQkFFd0pSSUFBQUFBQktCSU5jdGNnQnJscVpBYlk3R0lBQUcyT3hpQmVtczZWb3kzblhIWFh6NUN3RFhQWEVBQUFBRUV3QUFBQUFBQ0FBQUFsRWdBQUFBQUFHMld1SkpvWjY3K2lkY3Qwb1RuYStpRHhwaXdBQnF6SUEyeDJNUVdtMlFBTDg2WHg2L0s0N3FOY0FCQk1BQUFBQUFBQWdBQUFBQUpSSUFBQUFBTEdtL1I5MmVubDlSeDJDZ0FSNXZVVGsrRDZWMXo4bzcvSzA0eXkyeHZJRFdzRlFhNWEreVhEeSs3d2szcHA1ZmQ5RnhmT3oyblBlbmVXQTluendBQUFBQUFCQk1BQUFBQUFBQW1CSUFBQUo3L242bWVnY2FBQUFBQUFJbWllSGovVTRkOC9OdE10TXRzdGNTVVNlM3QwakxiNXlwcmpPdU8yZXBrOC9ydmVrZWp5VUdtUUFBQUFBQkFBQUFBQUFBQUFBQWxBa0RmRHR6cm9TWTdBQUFBQUFBS1hvbHd1UHozMC9rNjQ0ZVJyazlYbDZzdlh4Mlk3Zkp2YjR0OEowbkVHaGJHOUFBQUJ2aDBwZWEyeHNFRXdBQUFBQUVUQWtBQUFBQUFBRnZxZUQ5Qm5vSEdnQUFBQUFBRkwwdWdLcGVpY1R3L1FmUDY1TzN4TzRkQVpiUjRmZVRuVTZpemgrYjZYdzljOEVhWmw0S2dBZHZqZlQ4ZDhQdzlMbTljaFlBQUFBQUJBRXdKQUFBQUFBQjF1dnp1ampzRTZBQUFBQUFSTkVYRkFwZWwweitYK3IrVTA0djZzTWV1UHJIajltT3dLQUI4OTAvWmJybEV1ZXVmeVBwNDY0K1RuNkhYcm54OUl6MDRuTjluajJ4Q3dBQUFBQWdBb0lCS0pBQUFBQVBaMy9sUFR4MzlJdzN6MEJRQUJVc0FCUlpKQ3Eyb2syRmo1YjZyNWp2T2NkY3RPTk8vd0RPVHpmcTNKNldldWdsQUFBQUFVdnliT1ZVMndBQUFBRUV3QUFLQUNBSmdTaVFBQUIwdWJwTDZQUjBLOGQ3YThHWmU2OFhzNTZrSzgzcEo0dlRvQm1OSWtCWXJHaUFyaWR2bDljOGVEWEVYTnE2K09YU3RWblk2dkc2ZVd1ay9KN1dmVHZGN2VPd1V5NWxucjRDTmNndklBQUJBQUFCUUFBQUFRQk1DVVNBQVc2L0dTL1daL1A5ZlBURHgvUWpoZXYzK1kwMzU5VjZieGVqbTY1bEp1aWthWTFHN09ORkJiT3U5Zk1ZL1RjYlRMeStqRzFtVlN4THN5K3Z4OVQ1blBUQWE1TFZHc1psQkFBQUNBQUFBQ2dBQUFBQUFBZ0NZRW9FZ0EyNmZHVHI2blQ1UDE4ZGZRdWI3ZWU5YVRFTDBBVkNtcVZ2TkpicVVMRjZpMFZqREQzMXM1dCttTWRtTXZrNGQ2YlpCZVFBQUJCS0FBQUFDZ0FBRUlrVUFBQUFBQUNBQVNnU2dTQURmMmN4TDN2Vjh1NTYrdHI4eDZKZSs1Tzg2OXpIYVdLMjBGQ0FwRWl1bE9hblErZXBUVE1PdVFCQktBQUFBQUNnQUFBQVFJVEFsRTBBQUFBQUFBQ0FBQUFTZ1NnU2dTZ1NnYWErWkw3cjg0dlVubEk2bUhpRjZ3NjVsQUFBQUFBQlFBQUFBQUFDRUFBQUpnU2lRS0FBQUFBQUFBQkFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBaEFBQUFBQUFDWUVva0NnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRUFBQUFBQUFBQUFBSmdTZ1NBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUVSTUFBQUFBQUIvL3hBQXRFQUFDQVFJRUJnRUVBd0FEQUFBQUFBQUJBZ01BRVFRUUVpQWhNREV5TTFBVUV5SkFZQ05CUTBLQWtQL2FBQWdCQVFBQkJRTC9BS0ZLak1QMC9DZVBGUmkzNmRISVl6Sk0wZ3FVUi9xQzhTVGMvcGQ2dmtlRWVRUXNQMEszSkhFeUg3c3NKMlltTWFmMEFWb1ZvNW85RGI0KzdPT1F4bVNkbkZTR1BUemhoMlpHVXFmV2pLUEVhVm1mNmpSSUdaeFp0bzhlUTJLTDB4dWM3Y3JEdGVQRmdXdFVrUmo5aXZFN1c4ZWQ2dmszMmpaaEtuaEJISUJJb2tuSm1KcGhiMXQ4cjB2WnRrNjdVcnJ0amN4cytKdXRhMStrUnlwTzcxLytXMlR5Ylc0THNHMy9BQzVNbms5ZTNac1RpNTRuWWd1ekc3YmIxZXI1RHg4Z2NTL2Y2OTlzZmsyamdsQ21oY0RlT3prUitUMkVuZHNqN3RyOE1oU202NGxBcmhiMHlsVHNYczVFZmQ3Q1R5YkUyb0xzeHVja2xkS1ppeFVsV2R5ek1MYkI0K1FuVDEvOXlkK3hPbXhlQzc1Ty9JQzlkRTVBOFhyL0FPNU8vWW5UWWVFZWQ2dmtCY3VidmxoZkxKRXJoaFkyM254K3drOG14T215VHJ1aThtUXBUcFB5dUI0bU9RSXA2Ylg5akozN0U2Wm9MdXh1MjVPbVEybng3WlBKN0NUcnNUcG5IMTMvQU9XWTZuZ2I1UDAyUitUMkw5TmliQjQ5N2R1Y2ZmbkozYkU5a2ZIc2o2NW54YjVPL05lM0plTE4zYk9rZnNSNHNsUm1vWWFVMG1GWUg0alY4UjZPRmxwNHBBQ0NOMGZmczZSWlI5MnhhZkRjQ0xleFRwSGgzZWtnalRrV3ZUUVJ0VFlTbmlkTTE0THNrelR0cjZlbU9oUTRGSERyaUxHVlVMVVJiMXdCWXdZY0p6cE1PajFKQThkSGhIbWd1ekc3WmY1WWFIVldLZThsRFlqbEQzZXRBdVlJUkdQd0pNUHJWZ1ZPU2NCbWtlczhGVmpjNWYxa1RSKzJQMW1FaS9CYnBVc1N5Q1JERzFIaEhuR21sWitFT2JjRXE5SU5UTWRUZXJoVDZrblQ4SC9sbExHSkZaQ3J5ZDJXSFhWTFVvdkZuSjM1ZHNmSWlUVzNvOElsay9CWFpNZ096QkRqbGlJaWpWSDNaSU5UTWRUY2pCRDc1UnBsOUNCY3FOSy9nTjAyZFd4VWVpVExCaitQSWk5TmhZelF3b0ErR0tmQ3VLUDJMeWNHdG84V1A1dlE0VmJ6Zmc5VzJMMHhTNm9jc01lUmlJZGE1YVdORlNOb0dvb3VsTWI1ZlE0SWZoTDB6YktUakhTQzdReVduNUVzWit2RmgxVEsxNmt3cXRUeHNoeXcwR25MRytUME9EOGY0RGJSeGFqMHBPQXJEeS9VVGZwR3JZUURSdzhScFlrVFBGRzgzb1lKdnBzQ0NPZU9KekpzQUxESnU0OEk2UnlqUlNySU9leDBxVGMraWltYU14eXJJT1JjWDJOdDZ0bklQNVpPN0lFZ3c0a2txNnZ6c1pKNlNDS09WSGhraXFQRmtVanErK1NQVlErUUtYVm1PSjJMMHpsWFRpTmtZTm1OaHFhcm1zTk16TlZ4eUo1eEdDYm4wYU1VYUtWWlJKaDBlbXc4a2RKaXBGcE1URzFkZVF4c05oNG5aaTc2Y3dDeGtPaGM4RXYzVE5waXBKR2pNZUpSOWpTSWxTNHV1dnBnU0RGaWdjbmpSNmZCMTlPYUtseFVncGNZbENlSnF2ZllPTldJclZXb1ZjME9HdzFwMUpJaGphbFVzVnRjbTV6Z1Q2Y2VOYjdjd1NLK3JKUmR6NnVPWjQ2anhLTm1VVnFPR2lOZkRTdmlDaEN3b0tSUis2cjIyRmdUVmlLMVZxRk1UbExHc2l0aDJRczNEdGp6dytIMDVUUDlTVDJTU3VsSml4U3VyYldOcVhwV2tWYXJDZ09GN2JGNDF4RmFoazhVUnBzTXJWOE9oZzFwSWtUTEZ5NlY5cmUxSmlaRnBjV2hwWkVhaWJVQlZxdWF2VnpSMUVnM3kwaXJVUlhibnBGV0FvY0RuSklJMWRpN2U1V1dSYVhHTlM0dU0wSkViSW0xQVdCRjYrNnVORW1oY1phYTQxOTFhYTBpcjJ5a2tXTVN5R1J2ZkIzRkRFeUNoakRReGNkQ2VJMEdVMTNHckVWYzFjMTkxYWFzYSsxS2x4S2ltWXNmMFVPd29UeUN2bFMxOHVTdm1OWHpHcjVqVWNUS2FMRnYvRkQveEFBcEVRQUJCQUFEQ0FJREFRQUFBQUFBQUFBQkFBSURFUVFTTVJBVElDRXdRRkJSRkVFaU1tRncvOW9BQ0FFREFRRS9BZkt2Z2N3WDRlQ0xPdDI3ZVdqaGY2aUs4TERMdXphRThaKzFOaUw1TTJQZ2MwWDRGaldpUDhocXBHWkR3d3g3eEdOMmV3amhRaUtOY1RSbU5KOEZmcno3ZU0wNEZHTnBGTElCb3B5MHUvSGdpazNiclF4RVorMU5pQVJUZHI0NDd5NkxkUHZUYmg0OHh2MHQxVDh5TVRHaitJNjh1MlppSHM1SitKYzRWMGNQbHowNUdOcFQ2QXNwN3N6cjJSdk1ac0lZdHYyRk5Qdk9RNzlqYzdxVDRpM245Ykc0bVFKOHJwTmZDWWFPem1UWVNDZlNkQXhvOE5ETHV5dmt4cWViZWNocHNnQXNrcDhZSXpOUmpjM21SNGJEWlMxTlkxdWl4RHczOGZmaG1PTFR5WHlwRVNUelBmVVZsS285S0ptZDFLU0lmc3pUdVEzM3haQWkwamhxMFZobU5JeklRZ1dwWW1CdnJ0Mmo3Nkpid0FWc2lsTWVpK1czMHBKVEliN1lDejAzQzlnMTZJMTdKblVjT2FicnNwWlFpMzF3c1IxN0Z1blVmeEJ1d3RXUkFVanIyTFhWMUg3QWFRTjhaTmRrRlhwWnZmU2R3dDBXZmFUU0p2c3dhUWNDc29WRmMrZ1c3UUxUdVE3b0VoWjFmUnBaUnNKdnZiS3pyT3JIRmRJdXZ3bGxaaXJQK0UvL3hBQW5FUUFCQXdJR0FnSURBUUFBQUFBQUFBQUJBQUlSQXhJUUlDRXdNVUFUVUVGUkJCUWljUC9hQUFnQkFnRUJQd0gycmFvZDZlcSsxWEMyRjUvVFZHWGhHazhmQ3AwZmwyRGFvZDZGeGRmb21PdUdXbysxWEMyRjV5Z1pFNWlZRXB0V2VldThTMHE0cTRxa0hBYTVLakx4Q05KNFZPa1psMkxYdWlWZTNHczYwSy8rWVFlNXhRNnpxVFhKdEZyVE96Vm0yUXJpbXlUQVRSYUl3ZTBQRUZIOGR5cDByTmUrNDJpVTJvSFlHaXdwdE5yZVBTVm54L0tOUk5xdko5TlVwM2hlQjZwVTdOVGhWSmpSTmVaZ29PQjQ5TldrT1JjU3FMU2RmVE9hSERWZUJpQWpRZDZRcmdwRzA5MXJaVEgvQUE3c2wzMW11S0RweXpDQ3JPSU1MeUpsUnhQWGNka095RXpnOWdldjF5bU1ETk9zVEEyMm5BOGJKNDZUOXhwMFR1TUpWeFFkOTVYSWNkRjNPNHpNWFlCeXZSTW9jZEV0bmNaZ1JLSWpPQlBTS243VnYxdE55dTVWbUlFb0NPbVJLTFNGY3BDMDJBN0VtRTNVOW9nRldLTm1WY2NBSTdzSzFXcURtaVVCSHBJQ3RDZ2Y0VC8veEFBeEVBQUJBUVVIQkFJQkFnY0FBQUFBQUFBQkFBSVFFU0FoRWpBeFVGRmhjU0l5UVlGQWtXQURFeU16WW5LQWtLSC8yZ0FJQVFFQUJqOEMvd0FDcUQ4UVBLdGo4UG9vWUJ3c2ZpR3dVZncvbDlCK0c4VWVWYkg0RUFRb1hFZEpJaFF3RGhZRmZOL2FDcm1FR2dvcUJNRVFKbXQ2VDF3Q2pmUTBRUGx3ajV6SGFaa2U1N0gzSzByVE9OelF3VlRGMVRGRGpNR2pNQnROYTBtaUZBQjFtelhWUnV2UXpEM01aZ3o3TjE3dWptRE1vNVJtamROWFRYT1lEaVVURTYwZkVpNGF1V2VjMjlHWU02UEJWUEtnb0dWcTU5SE1USzF4S0VTK2hVU29oUktIRWpWeTN4bUpsYTRsYU40UmNubk1USzN4S041d0UwZDNoYnFGd3p6bUpsYjRsaG9KeHRXU0lYYlZSUkJaakZSbVpHMlltVnZpUUltZG83WEE1bU9ZamlWcmlRblFYQjNNa0ZCN0kybEdaTThTdGNTTlhEQTl5Y1hMUjJ6Sm1VOEdRYm00aHBTUm92Q01wM09aSFl2NldTVmdBb2toZHdXSVhoTTlKVlpoOXlqYzNQU2N5YUd5aWVrTENKM3VLcnRod3VocjdYVXk5bytwUU5BOW91dHQrY0JKRUkyVkFWeStBVVdxdFgyaDJXbzFUSTFySUFpWDhsVzJzRkRTYUxLUDNsc0FxOTN3WWloVUM5cHJhUmhueGlWd2lYeGtoNU5jdHRuMThHR3JxNDZxRFRnTmF5dFNNajNKSExBUGhjUGdWWk9LaHBSNGMwSk9LUDNhdVNOc2t0YS9DanJJR29kUXdrYUw0anRkSFNyOWxHNUoyVFEzeUlCQWZHNFVSZ1hrdnFxVVJGckZkNnBWV2ZKeHVpZFVjaUczd3VKanM4c2FDNHREdUQ4Q3FpV0FRWlE0eUpvL0docTVvYk9BVWZCdVN5eU1WMVZMcXJwb1YxQjl0ckZ3NHlJOC9CaEtUSTAxczdjWEZyekxWZHE2V1huYkl2NlNvajRFYmdvYnVpRnZwOEFrK0VUa2UyaW9mVnpDNjRrYUc2aHBSOFFyTFk5cnBNYjc5c2U4azBhVVI5aFEvVXJ1dWt6eFpObHJWVkRMUzZvZW54bDVrYWE5eW1IQ3NzNEx1S3hWaHF1N3NSY1FIY29uSklzcmZSYUhaUlpyd29OVldObmxVdllTMDl5UUMvYkhzeU5OSm83T2l5VlhwTW5VMEZEOVA3eWVJVVAxS2J1Nm1Zcm9hKzFTUHBWZ1YxQWhkNGxpcUtzWFlmYXRIekxBK1ZBdW9yTE9IazZxTWdIbnlneHJKUXJ2YSsxVm8vZVYwTk5GWHBMK3BrRmRzRmlWUnNyK2MwcXRrcUM2cElPcGdzQ3ZQMHNLT2dWMWR1cWdLTXIrNlMyM2pvNG5NK2tyckVGMG1NdThuY1ZWVjhxdjNKSFZVd2ZVSVFhSzcvOEFpcTBWMGgxZ1luTnFMR1BLNmhCZExRZEU0cWl3V0JXRXVKVUZzL0IwSklsRm81MVJwZFRNVldJVkdoTmc2TFhsK0t4VmF1Z1hSS2ljL28wVmpGVlpWWWhkeW9RdG5VV0N3V2l4S3hWU3Y0ZU9xaTBmd2FqUlhlVmlzQXUwTHNDN1FzWUtwai9wUS8vRUFDMFFBQUVEQWdVREJBSURBUUVCQUFBQUFBRUFFU0V4VVJBZ1FXRnhNRkNCa2FHeDhFQmd3ZEh4NFlDUS85b0FDQUVCQUFFL0lmOEF3VVVFNUFxeUliOU8xVE54SUVZNi9wNzBwTlFud0FRRUJPOFQrbUE1QkRwdUZPRjM2Y0VxRU5abmpFMEp5MVVRUitnaVNpZFc2SU1BYXB3d0tRWXMzWFJUQmlLclZOMyt0QUFoREp6MGFkQ0JXM3gwWHFWQ2ljWUJFSWdoajFSVkNKQk9pSUFERWR1cVRJWVRpMUNGUmpEUkFiUmRETUhZMXpRTmNNUlpBRVRkRkZPV1FPQ2JvQ3FHUFZCYm5mWkJLRTJOMndWeXRLOUFKT2FGMC8xNlpoN0tLRmE4c3JYdmhGb0dEM1JFcGpuS3VZdGtWY3hiNFZPNUlSTTFBOXNCWk1UaEZJY0lab1dRL3dCNWhBSktrL0tKSkVtcHlBT0VBZVlYVDJ6SjFKeHZFWWFEbEJ5RXVxQXQ4WGNLQnZsQ3E5S1d6YnNQUkJLcnd6WFRuSDBzZHdpSFo4b3M3Z2pkWE9WakJwVXB5dXptWXZkRG9peUxsRzVybDNEVHNPV3R0T2JmMEdGU29JM0NJYlA4Zm8rMkl5WDdocDJBeTFOdml6ZUtUemhXaERLRUxTVUE3SXhnQTVPaUlBTVJvY3Z3L25vMURZbnQzSDN1WDV1VnBMY3dvVlRJQTBWaW5PdVVGVndqS3VVNzNBY254T2pBMzNJN2dLRjd2cEg0aXd4QmZJUzYwckFEMngwQWRjaVQwWUZ1QStlNENoZTd5L1YzR1dCdWZJN0FTNjNrTExlUXNXU1dLcEp0QlRqcUNkbmdLNUh1QVh2Y3YxZHhsbzJBejFIMEU0eVJBRWtKeWhPRlU0RWdEZ2ZORVdoOTUvbnVOZGZMOVhjWkdCdXR3RG5oWk45Y1NuSVN3VU40amxFbGtmaExlbmNhcTRkRTRYQjBCSDBXL3dCeVBJWElnU3dwaUpkUTV6S0x1MEJjb2x5U2RlNDFlVjgzSkVsMkhRanRQZGtwSGtxNDZkZ0JsaUxmemp1VXpXSkdYNnEyU0c2SG9WL29HU095YkVXVzZOemI1QktvdFFlM2NwY2hqOE9DcW5JSzBPUkVjWVVkSllGQVhCUXllWVMwb2d3RWM1aGQ2Z2w0UkxrazVEQTNNZGV3ZktEbFY3eHNkVVlwN2pPNlQxMFN2ZkowQkFHQUhsYU1Md1g5WWxYR3VLWStMczg1WUcyWXcyVFliOHdRT251SUVOL3hIR2p3aXJKTFpHSmoyNFlDNUtZZjZqclN3Rzhrd1JzbHpRZjRaT1RGdVFjYUlQbUkwRjFGNlJ3cnlPWVlxc3lhU1BiU0FBNUtlY2lxZndEU2FKcVBEVFJGSVdJeDRBd2VjaDlJQkdqREFFNW1weERteFRGaFFOeTQ3YXlHNVA0TDFoc0dIRFFoWUx6ZkRjeGZYemlBNVpBaXFSS0p6dGs1STZPVTY2WkFhVkoyVDVSWWRzc2pxZ0FBQW9Qd2E4V09wN1EyVEdxa2N3cGlNL1FTY0dvdGlBNUFGU2pEZ0tRZU1mc2FkSG1rUjJSN092eC9DbURjZkkwRHZVWlBaT0pXQ1ZNUFRVTW5DRU1CSk5nbnlnYUN3Nkxsc215SFlqV2FsQkE2RDhIUXZDRUJzbnNsQUdyaTFjSEVBTURoRVhkeFFiSDRLeVhvZ3JtQlEyVSt3VzZUdzZreHZBZGk5U1B3dlJ5Q1dEb0t6VXluQnJMRm8yQTlBUmcveVlpa040VlNCeU1wdzFpZ0NOQWc3RTUvRCtDU3djb0tqVXprazE3QU53TERreFNhbzNSMVZEaEJnUVdBMUVRQmdCVTEvR1RXWTN3QUpMQU9WUXUwVzdJNHpYL0JTYS9Md0NCaFY0dzRnekFUQk43b1NHU0RQbEFzQUkzUlI0Y0ZVb0J2ajZQZGlNMGR4RFJYQi9BbWVJeVBCVFFNRFFvR0J1b0s5OEFZOGhSdU5YNEFkQkE2TWRxUy9ZNGxPdEh0TjBRTVFHUlVaU2hoVXdnR0RaREFOSlpTU3BVeEhFTVVFT05pSE9Ick5WMzdJSXhJZFhSeVlnSWlCbGxVSGNaenZ3YUdnSW9keWRsREVOc1VuUUlHUWxnNVFWR3NzandVQVd1UTQ5UmdndWNLbTVXbDdpQXk0SitWYnd3RWRSZVVDRElMNTZ5RDlrUWhISjdJSEdZaFJtTmFTYmJ5SHFNYTFJaXo1d1ZWM0VCQU9UamJvUkYwQUFBQmtpZVp5aVRnZ0ZpeURBSlRRZWtnMXlPV0laZWg3RDA0TkNoVEhzbEFnaHhPTk1HeUlZRzNJa2s1TG5zdzBVZ2pVSnNtZWhBZ2h3WENBeGJrQ3JXeUU1d0hjMUQrYUdSSHNrcWtlU0VBQndRY2FJWkhyVGhibUxGTTBCeUZ6ZWlKcU1GMGZNSkZXMlFtQkpUU2ozSXQ4WnZnd1BJMlJXaktqMld1SURsaFZlVlhKTWhWSnprcXdPQ3Y5S3FvK2UxalByRkZDK1pSQXZURDNvQXY0b0tPaU5ORnd2R0h2eHpCVE5NYWxDbERmVElJRFExSzBXNTJGYmdlTUFLSUQ5UjR3MVU2R3lNQ1VOQ2RaN0YrVUpUcVh0aUFTV0Fjb3hBT3l4VVZ0NkRqdWRmV3NhSStPY0VMY09VeWlTb21VNFdJNFQwRVFkeDVLZkppT2pNSUNEVEFscXFwOWdtdXJMSUUxbFFwOFlOeENEa0FBR0Nhb1d1NGhVRkJ2aEpsL1lkMkJFNUVIWlZabEs0ZTlWRWVVd1RWd2pOellwbXZwVDFXZldVREp4QzRCdGdiRGNZWVpJZVM5WFZUZ2NMSUVFT0NpQWFnSEJDa0FWVW9hWkRmeGk2S1RKN3pSRkhKNWxBVU9DK1FLcjI4NE5JcWFZUUhsZE1GQ0R5bi93QjBDSFlEeW52bWJZRUNYRUhaTVA4QWNKckhvbUdva25xdWZLbnFib0VHaFQ3ZUJkYU85QmJ2OU5IbEduSWNndE4rQ2pxRWFKSEtxaThyVTBlNVZWcU1XS3UrOWIxU3Nua0w2UWlRT0FibE9RQjBUOEg5R29BOHFoSUFOQjVDR3NSRC90TC9BR0VkRVMwMXdDTk9ibC84VVAvYUFBd0RBUUFDQUFNQUFBQVFDQ1MvL0RSOTl0QkJCQlIxKysrKysrKysrOHhCQkJCRjk5NURYLzZDQ0NDMi92RFY5OXRCQkpCQlJ4ODg4ODg1eEJCQkJCRjk5OUJIL3dENGdxZ2drdjhBOHNIWDMyMUdxa0lFRUVFRUVFRUVFRUVFWDMzMkVQOEEvd0NnZ3ZpZ2dsdi9BTXNIWDMyekQ2SWtFRUVFRUVFRUVFRjMzMzJFTi84QTZDQ0MrdUNDQzIvL0FDb3NmZmZWbllzQ0FRUVFRUnpUZmZmZVlRMy9BUDZJSUliNzY0SUlMYis3ZDNyWDFhL0hrMDNnazAzc016VDNFRWQvL3dDaUNDRysyKytLQ0NDMi9PL2hCVjI5OWU5OU9LZjkvd0JqK2dRei93RC9BT2lDQ0NlK1MrKytLQ0NDeS84QTFUMWdnWXM4dmpQZnVjWVVpaDMvQVA4QTZDQ0NDZSsrQ1MrKytLQ0NDUzJWL3FQTEphaGRDQnFERERML0FQOEEvd0R5Q0NDQ2UrKzZMQ1MrKytPQ0NDQzcydjhBL3dEMXI5ODUyWnIvQVBwLy93QWdnZ2dodnZ2dWdyUXdrdnZ2cmlna2lRbDh1bnYvQU9uK1Uzdi9BUHR5Q0NDQ0NPKysrNkNEOXRMQ1MyKysrT0NwQ1ZDQkN5eWh5bGFIaUNCQ0NDQ0dlKysreUNEZjk5OUxEQzIrKysrbENjSlRDQ0N4Q0JDcENRSkNDR2UrKysraUNEZjlSOTk5TERDUzIrNjJQODg4ZjdJaENaQ3ZLUE1QKysrKyt5Q0NIZDk5QlI5OTl2RENDeTE4ODg4ODg4NUFPdEs0K1AzaisrK3lDQ0RQOTk5eEJCQjE5OTlQRFU4ODg4ODg4OGo4UDlwcjFWNDk2eUNEQkhmOTk5aEJ0QkJCUjk5OTlsODg4ODg4ODhuOG5XcDhmdmZDQkNEVFY5OTk1QkJCOXRCQkJCeDk5Mzg4ODg4ODg3MDhYRXkvODg4ME1yeitkOTVoQkJCTjg5OUpCQkJCeGUvODg4ODg4djhBTy9Kd0Z1UFBQUFBQT09ZUVFRUlhmZFBQZmJTUVFRUTZkLzhBejkvMy93QS84c2Q1RmRaYno4d3dCQkJCTjk5OEFRODg5OXRKQkJSakZIRXlVblFHemdkcDloV3hod0JCQkJOOTk5ODRBQUEwODg5OXROQkJnMTh2cm81L2owUGZ2Zm9CQkJCRk45OTk4NGdBT0FBQVEwODg5OTlOTkJCQkRKMEFBVEFRL1JCQkZOOTk5OTg4d0FBQSt1SUFBQVF3ODg5OTk5OU5OTk5OT2N1ZXROOTk5OTk4ODR3QUFBQU8rKyt1S0FBQUF3MDg4ODk5OTk5OTk5OTk5OTk4ODg4d2dBQUFBTysrQzIrKyt1S0FBQUFBUXcwODg4ODg4ODg4ODg4d3dBQUFBQUFPKysrK0NDUzIrKyt1T0NBQUFBQUFBQUFRd3dBQUFBQUFBQUFBR2UrKysreUMvOFFBSmhFQkFBSUNBZ0VEQkFNQkFBQUFBQUFBQVFBUklURVFRVUFnVVdFd1VIR1JjSUhSb2YvYUFBZ0JBd0VCUHhEN3IzQjcvSDJleW81S2lGT21Eclp2ckVSSS9aVTd3N2h0NGZtRUx2eXpLenVUMytQc0pSc3QrcW1GR3h5ZWpxS21uSlVCMW1XZHR2dG9qc3RucXJUM0d1dWgrL0hCelFrd1ppVU9qVlhMZC9iL0FIbGorMDdoTjRmbVhEL0xOOE14Mkt6L0FMTWdFMU5jRXdhYU1NUTRtYmhUZnY4QXVFRWFlTVJScytaMVlSNWQ4dnR3RlF3bFJBVTFIMTR6THF0WHltV1pJNHFvanZ5SGZCdmtqZ2U0ZlRQdU9BYXUvd0F6SFBFZlFiajVEdmczejFFSXVuWDlRQVhLNDFzb3JmZHhLYTRmUWI4bDN3YjVZdDJ4Z3hhLzhsbzBvN2pBTG9ab3JXei9BQ0ZXZzVQSmQ4RytYZkp2Z0RheVdTMHBDa0Z1M1BYa3UrRGZCdjBIRnVkVEJWbjZpcWxyejE1TEt1RjJwOEVvNjlIWEJ4MXdBdlVBS1dQMmVUaGdBMTZFSGNVMXdEeDF3SkFTZzBRVDJGam1XRXFMc0hzZTc4ZXZMNkRMOGtTbzhVTDRTWFQyaFZsWExnMTBlTmlQb3ZBNVJ6RFlJbGtSR21kY1BvTmdqandSaS9vbkRLT1VoM1BnbEpmQ3VSYmMzZUNLSDBHSEI3enJCcW1EWlo2QUcrQmRRVUFVVE5lRG9NRzlldnZoNDZSandPbnJvWDRTQnpCbVhDbUJCSFhDWEFxTFVPTytOT1hHSmNUbXc5eEJIWEE3UjE0YWFUQU1XMUtkTXZ1UVgybDVsZTBXb0ZTeWJZdzRoamhGRmdPYmZIMGtCM0FPbyswMU1RcTVraXNKbUk3SjhFd0V1WDVvV21DN2xJUEJIVEt2TS9QRmZFZXlOOWpXaythZkpGdS80Si8veEFBbUVRRUFBZ0lDQWdJQ0FRVUFBQUFBQUFBQkFCRWhNUkJCUUZFZ1lUQlFrWEJ4Z2JIQi85b0FDQUVDQVFFL0VQMnJWYTlmZjZmREt3M0RQYmcvV0QrWUlsbjZVYWU0cEREUi9pWUNOVnIvQUwraGNoVlV5Mm40ZHl1V1lZWjdjUFZxQUE3K1YxNlFxQnBmNDhkQUhxQnQzbVdPWlFlWkFpVTFEVU9TNWJQVXhDdFh6aEV3M0c5aE1OVyt2VVNndS9HY3ZUTzhJY211VDN4WDJTQmlEdUgyaVZ0cnJsQll3a3ZXYllhOGcxdzY1WWIra3hHbjF3NWRWTXlNdytEcUhrR3VIWFBjSVdOa0JCREpNRHkrdnFEWndmQjE1SnJoNUlIMkVRZFQ3UkRVSUJWYkNlMzNINlY4dmttdUhrMXk2NGJDOE9ac0dLamNIUGZrbXVIWERyNFBGQUY4QVUwYzkrU1RVYXR6N0paMzhPK0hqdmk0RVZhcWY5K1VsWGZ3Rk5RTGNDRGp2aEFWaVV0anpxMUZ0WXlRcmxmZmozNFB3RXJ3d2JoeFlyZ3dIY2JjSkRLZWZCeFRpRWRLRFRCRXNuZkI4SFZvTitDczErRjVzNVFqVSt5V3RmRTZLbXJ3VmwrQTVaMmlYWkVwcCtDSlhDbTRpSXJacThIY0lsYitmWEJ4MmhEaE52bllyd2dwaVZjR05zcUltK0JxTGNDNDhkY2JjbWN5b0RBajZNUk44THBESGhodE1nUVJ1VzdKWFZpSHVWaVhETWN5bWFoSm1PZUFFR1I1bzhmYVJYVVViaDdtNW1OMU1RQ014QmRNK3laV1ZLODFEdUo2bDRsRVRaTHFmMjR2N2gwUS93QkdvWjlVK2lCZGYwSi8vOFFBTFJBQkFBRUNCQVFHQXdFQkFRRUJBQUFBQVJFQUlURkJVV0VRSUhHQk1GQ1JvYkhCMGVId1FHRHhnSkQvMmdBSUFRRUFBVDhRL3dEZ3JJZEtVN1JQK09DQk5LT1pzK2hGV2FBZ1RPYzZpNkZRbi9HUUpTK0pzSmcwWm1pVUx6UUIyem9pWFBGcElZLzR1WTM1RkdEOXZTbWNBbE1HQi94WXhoUnFLaFV1RmFMWHRMSHZQcHhPQTR4bFRxSTIvd0NCRmlpQklEaEpqNEwzRW9DZ2VZWFFMY0RFbW5BTjJtZ01rektTNEtVWW5qcEdQbUFtNm9aQnh0YWtkWnhMVThDOE1GN3d0N3h4Z1JOV0FJMlRCcTRrWWhuVVVYb0pjbE5Ba1orTGVLWmZSSTdlOUlGeEErWFlOQUdTbWdCak1GWks1QW9PN0N5b2NKaUJuemI1RTZZdndjWkNPUzBVUFYwTzlZaURnR1JweUxZRmk3QmhTandKQm1pMm1PTnNxbVNDeHUwbVFjWEtuaGVFcFQ1WW9EeVRGNk1ObmRpMzVqbTZvTjNRUGx4bWhaazFEZWx0aFR5SXU2Nk8zS1dLRENFNlhuNm9INXBRd0g1ckFIUFdRcmU4Q2hyZThDbDRRaXNFRXBpczRTSFY4c1hjVUpuRmIxVFdNSzM0ZzkyZnJtNkF2cWZsekVmSldhNUNuS2xKWGtEY3FPbFFoTUJwU3M1WVpFZEtpZ1hGZE9DaVJiaUR2eTVieFdNYWtUVnVrSHQ4d2JUTjNzQisrVVNEVnBXY2w5TnZybXQrM3FEZ2VuS3N1U0kzYTltOXg1aEdEVzlTcmkwWTFoTlI2Q1ByekR1TXU2OHV5WTk2MzFIMzVUd0o5QXBXODA5dVkxY0JHVktyTFY0YUo5ZURzR0ZiM3IzZk1MWCt3Y3ZlSHN2ekxWWHNZdkF6S2o3Wms0a2RhUlg1Nzl1WHY0SkdYQVI2RE5KUllyUG1HTG9IdHk0M1VlL210QnE5Uzd3VVMwcE1SQlJ4QllESm1rcEtnQmRwUVdLQzV5MkxxRDJlRGIrcmpqM2p6SEQ2UTVjYTArT1B2bGt6Q1plaGVwRXpHc0tvVE9kTzc3a1NGT0h2bTA0MFBKTlFCdWtRVVFCbVIya25rc1hWSHY0UFFzRHFoOFQ1aDd3NXV0WFJlNkgzeTczTzZlSkRmaXNFdFNKcXhmcjVQcmk0aEU0QlRkQmlzUmxENE80anVnSit2TVBlSGg5QnZWSDJzY1JUQ2pxVlBTa3hVaG1KZXBvak1FSFNlS0Z0a2RZcDNKaHNsT3dYRWFHcEVZZWJmamZTd2ZENWdvUjBvd2Znb0FsZ3B3ZkQ3ajc1N01uTDBINmNRQkdvSUNTTk52QzNHYlV0d29xMFF0aXk1VTY0MlFuZm02eDNxZk1UMGcrM2d3YjFpdDdoT2ZyY0hWQjhMeGd1ejVMaFZqL29qbENBSlZnb2t4a2k5TEQ0OHh2MUQ5dVc4YzEvSThuV1lPc1c4Qzdaa2RncjhPUkNMeWdxWTB5RW1jVTVWSXIxME43alBLRUZQWVJkOWltdmhVdm1OK3BqNk1jdDhOZmpuNjVPdXcrcy9YZ2QrMTFYNERrQlB3Qyt4TktwWEZ2eHMvbURsNnNnNm8rQytaZndoeCsrVzhkZm52MXlXVDlBUjk4NEtnRXJUSVRJUTlrZlhKNmQrcXg4VHgzVE5iL0xrQ29La21DT2pZUDJucDVsWmRIMUVmWEhBZzFMUFd2N0ErazFwdzVKeFI5MS93Q2EwSEg5VlBxdjRWZXRhUjlsaXUxU0l1Z2ptQllsWG9DWDRwbkVxeXZKdkJ1d0krK0lJdkJsNlVxcXVMeVBHWXFCUTNvUy93QWFsWUVSaEhFZk1lN1U2aWZ1akM2WkYzb1VNSUMzdmJDZ0FnSU9lS0UwRTFQTHJINExVOTJYWit6OFZNSU9xOVJ4M2xEcUw4RHkyTGxucTNmbmowZjc3d2lweFl6WGQ0U0lkS2lvWEVTaUpJbHliclJwZ1lNUzRGaTlSMWtsTkZLZ1JHRWNSOHVZcTZBS0JoUTl2RkpKRGhRYkw4aUR1WVZMZDZKMzByZGpIVEI4UHJ5VHRZUkxvVnZ2Snh4OWZaQ29PNkwyYjhWZXEzWnZud1VkZkNVdzRQWklReVNKU056Z3ExL2ErV3BnVkFHZENTQjlEWS93SUU0QmVoZzV4YkkwMnBjK09Iai9BTzJpejRua3VaSkpvTFNMaXM0YUJTcXBXZUF3eVZoS0F5ZCtNQ0RHdDV2UUdCNnkrbmxvYmVEa2EvNFZKekIyWiswMFdJcU44QmF4UDFVTlJ5R0ExT0crRXVoWTRrQVlyRkZnV0V1MkZLQmljbmQ4M3ZZOWozb0xCYVZwS3FEMFF1dFczZ3NhQVdEMDhzYUF4eTlDakxnSUQvQzJ6S1R1L3dCNzhWQXhpejFUMkVJRys1UUxFaUR0Wjk1NHl5Uy9wY0h4NHY4QVBGalVwQVVoMlNPZ0krdUwwUGJMOXZ4NElRRnpyQmhTUW81ZVJ4Z3ZXNlA4T0Yycmx4OUJsN2NnTGt0Qm1oWXBtV2NjNTRrNk1PQkJJY0dsU0t5akxiZ0lsd1JkVEQzaWtvdUt6d0VFZ2JJeGFlSXlOQXNIZzlGNzFmMVVaa0NSMDhpYkZSRkVCWWovQUF2RHhjTy82b0FEQUk1QzY1UWQzOWZORlpsdEdUbnhWNHRiN2NVNUV4RW1uQ001S1NyQURCWVdDOGZIcFRGaWR6U1l5eUxOTWFMSWM4anV4OVBDVVZlMzBLa3hnejI4aWs2U0IveGZSUGQ1QVJXQWxwZ1lqTHYrcU9CdWgrL2JpTXpkQTNjZms4QXFBVTJ5NmNUcE0xRlh1UGh5bFpMd1ZoS2tVQWhtSjlYeUxvY1B0L2hCc0FKYVl6akxrdEZvUFF1LzIvQ2VNaDdjTkJrVFJTMEtYUnc4Ry84QU1BWkRmMG8wbXE0SFFvQkFBMEtpaE5FbWlYcDVpcEUvUmtlL0FFcE1BcGlRa1hNbjU0SVNNaDh2a1JHYXVmNGJwWnBlaHk3QS9hL3R1QmtXOHFraFJ4SzdBblZ0UW9pV1NnTnR3TlRYd0FTR0l0aC83eXVYcklUVXNkQkFwaWRpSmVNYUd3UFNYOGl2TlV0MDNvR3BwRS93WGxnK2dja1drdUFhdVZYTmxDN3E1OEx5MnJZSm52Vy8xZlFzZmZDSXRrWkpwUXBZSmNibitCZm9RcWRtVkx5TzdzemN3N2FWREZyV0o0UHJQTTY4cUJ4bUgzUkdNQWprMnFUNjVmZklvRXVvTzdScXdFSGJIM25pWVdlQ01WUEl1dzIxS3NCMklOenQ0d3dYR0tleDVJdFZPNHhHVnF1OGFUSE9wbFJSL0VFbWRidEtUYzdjN2s0eG1EUnEzYzBwVTFKTFVYM2VOOC93eThoT2tBUzB3amhwYmJlbkpBcjU2SVBlbFVxeXQza0VLM0s0RTNYc2ZOSEZTU05uVzZhVkdRZzBsVUp2VVhVSno1RmlScnJ3ZGhqY0ZBd0JxTTg2RndsajVOSmdSS3Vma255aFZzMU9VQVhzVHB0VS9mZHFlcG5VMW00RmdkdnhVQ1JMSVlPLzVxSUcwYkQxd280Qk1GU1BnR0VvWEU2R3RZVEFXNUxUd2ZSUDN5c0RSTXhzY2s1WmUyN1VNNmJrT1hUa1pRc1I2dDM0OTZ1QkNJNm14N3RTNnRFVWhtcjlRb0FITVdCNk5BRUE0SThTbGROVXZwalFLOHRvNzlpbkxrWlZidmt5TldrU2lZT0NIRjEwb0VKTGlNalVJUzJRbmZHbnlsZGM5U201UXppUFdQdW8wUk1iajFLZ1JmV0ErcWlJaTVQN1ZGR2FqUEZRS3NCalVnT2dPVlBrR3c2TlI0cnVmSmF0Rld3bjZvSlk3RzFIYkg0cWNZOFRreTdjZzRhQ2FaU2dyMU5FYzI2QTE0UklBTG93RFZhTnZXMlFaYkZQaVpUeFFBVk1BWjFMaGQ2aitpaGNld2pEMytPUldldmhRSkIvWnZROEg2SStWd1NiTmQvU285NWNzYm8wQUZDT1p3OVpJVnE2aVdybE45NlIrcUpKK3BkODFnamFEZjVXb2pvYVAxUlVjQzVmRkpFdEFjWDRvUkpHZUNoZHAwbFMxZ0duZWtHQ0NZUlJrbXRYT2pVREdlcDl5dElYUmZpb1VneGNZYlVJZ2pJNFZDdUJnNHFobEY3R1hZTmF3N3oxTFZaMTBCRG94OStKcFNXQUpXaFlmMkx2U2dWWUM2dElLNCt5dy9QZnpORWhkVjZLaFVMcm5walVMZHMzT1ZJVGtCODBZbHpOMWNWcEJJYmxNOGxlOVBhdWs5dnhTeHhDVzhlbEFvSnhHaGtVWWt5ZnlvQ1VKdHdBS29ET29qRmxib3dxU3c5NTBVM0FEUTJhbEdJbENQWDVlMUR5UUVDQlRNUTR6L3JTbGgySDVVWDF4dSt2QU1GR0QrTCtiRlNyQlVOUUlSNUMvclVTUGFsbEVUc0pkUnlZcllETnBFcE9KdHRTQ21XSmsxZ0dkM05mK1JVbUtkQ2tVWXZRTFRrVFJpTUhGWmNFc2ttcWo0cWVSOXo4VXJsM1NZRkl0S2VJOXhVYVNiVWZCRzVOYlE2VWxJbldMMHBiVFMvcmtZcStHWXRLa2dQUFRiemtWU0tKbVViVGl3Zm1xS0N0VkRVR1ROay9GRW5RS0NKSWliVmhLYlEzcXdUSzNYVnBJV1FZQ3lWa1YyUTFIaUhwUmFqbUt5cUVTWWhaMmNMa05aUldXQ1VTWk85MVl6V0N4SFNrRUlqQ2NGU05ZUllZaHZRc2dtMUliL0p4b25TQmg0RHo5V2E0RFloRlFMTzNvOXg0bjRyRGR0WlE4OUVGQ1JtWHQvR0JTQVJKSEtzby93QXNhaXhld3JRN3lGYUlHcXkwUnVGbVp4N1ZQWmNiVVFtYzF1MHdqb3JIN3BNeDgzL2hSUmtVZHF5TXRGV1JEUnZ3dkJQZ29vT0s5MWYreXB4Y3VxMFlnU3FlTzNUL0FQaWgvOWs9Iik7Cn0KI2RhdGEtdXJpLWd1ZXNzIHsKICB1cmk6IHVybCgiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFFQVNBQklBQUQvMndCREFBNEtDd3dMQ1E0TUN3d1FEdzRSRlNNWEZSTVRGU3NmSVJvak15MDJOVEl0TVRBNFAxRkZPRHhOUFRBeFJtQkhUVlJXVzF4Yk4wUmphbU5ZYWxGWlcxZi8yd0JEQVE4UUVCVVNGU2tYRnlsWE9qRTZWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFmL3dnQVJDQUd1QW9BREFTSUFBaEVCQXhFQi84UUFHZ0FCQUFNQkFRRUFBQUFBQUFBQUFBQUFBQUVDQXdVRUJ2L0VBQmtCQVFFQkFRRUJBQUFBQUFBQUFBQUFBQUFCQXdJRUJmL2FBQXdEQVFBQ0VBTVFBQUFCd0cvbkFBQkFKQUZBQUpnU0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFCQ0pnQUJRQUFBQUFSTUNRQlFBQ1lFZ0FOc3N0NEd1QUFBQUFBQUFBQUFBQUFBQWdBQUFBRVFBQUNnUk1TQUFBQWdFb2tDZ0FBRXdKTDQranIwOE9ubDl2aVg5RzJIa0hwOFFXQUFBQUFBQUFBQUFBQ0FBQUFBSWdBQUtBQkFKUklBQUFDQVNpUUtBQUFYb3oyMFZueC9SbTJlbXZuemc5WGhOYzg5b0d1QUFBQUFBQUFBQUNBQUFBQUNFQUFDZ0FBUUJNQ1FBQUFBZ0VvbFY0K2k4L3IrYmVuemJlY084d0FMWG5HV1VYejI2N242K1QzZUZmMDY1ZU1lcndoZVFBQUFBNTZQZDQ4OXFvYmVjQUFBQUFJUUFBS0FBQUlBQUV3SkFBQUFDTFZublMvUzV6NS8xZDY1Rm5MWEwyL05EYnpnYlk3WXlyMGNhYUt6NC9vemJQWFhET3NQWDRKUUwxNnV2azkvRko5SGtoRHZPVUJNYVllbnQ0OHg1ZmJUYktlcGswejkzekF2SUFBaUpnQUFVQUFBUUFBQUFTaVFBQUFBRXRiTmw2TksxUzdaYTViZWNMQU5jdGNwUXNBMnkxeGxDeGF0c3Q5L1p6bmgrbTlQbWdVMXkraDhnTytGcXVOTkZIbDkxNlEyODJ1V3VXM25Dd0lJQUFBS0FBQUFnQUFBQUFKUklBQUFBQ0FiWTdZcktDVGVtcTBxQVdOTTlwYzZyYzlWZXJ6Yzl3Tk1yVFJsNkxWT3M5Y3RjdTh3c0FBVEdzc1pnSVNZQUFBRkFBQUFRQUFBQUFBQUVva0FBQUFBMngyeEFSdGpzdVNDU2lSdFNGcmF1bm45ZjBmSHp6eDlHYTdybkZlbnMrY0ZtdVd1VW9JQUExeDJYRUlBQUFDZ0FBQUlBQUFBaVFBQUFBQ1VDUUFBSmlTK2VtWUEyeDFNZ2dHMk8yS3pmT2M5dEZIbDl0ODAranlhWlh6Mjg4MnA3OHQvTmw5RjgvTFdMUnBsQTZ6QWJZN0xpRUFCUUFBQUJBQUFBQUJFd0pBQUFBQUFtQktKQUFOY3RjZ0JybHFaQUdoYkcxUUVBYlk3TGlFdHBuZngvUzZYT2hqNlBSNWx0dk5pUFo4NEJ0anF1UUFBQUFBQ0FBQUFBQUJBRXdKUklBQUFBQUJLQklOY3RjZ0JybHFaQWJZN0dJQUFHMk94aUJlbXM2Vm95M25YSFhYejVDd0RYUFhFQUFBQUVFd0FBQUFBQUNBQUFBbEVnQUFBQUFBRzJXdUpKb1o2NytpZGN0MG9UbmEraUR4cGl3QUJxeklBMngyTVFXbTJRQUw4Nlh4Ni9LNDdxTmNBQkJNQUFBQUFBQUFnQUFBQUFKUklBQUFBQUxHbS9SOTJlbmw5UngyQ2dBUjV2VVRrK0Q2VjF6OG83L0swNHl5Mnh2SURXc0ZRYTVhK3lYRHkrN3drM3BwNWZkOUZ4Zk96Mm5QZW5lV0E5bnp3QUFBQUFBQkJNQUFBQUFBQUFtQklBQUFKNy9uNm1lZ2NhQUFBQUFBSW1pZUhqL1U0ZDgvTnRNdE10c3RjU1VTZTN0MGpMYjV5cHJqT3VPMmVwazgvcnZla2VqeVVHbVFBQUFBQUJBQUFBQUFBQUFBQUFsQWtEZkR0enJvU1k3QUFBQUFBQUtYb2x3dVB6MzAvazY0NGVScms5WGw2c3ZYeDJZN2ZKdmI0dDhKMG5FR2hiRzlBQUFCdmgwcGVhMnhzRUV3QUFBQUFFVEFrQUFBQUFBQUZ2cWVEOUJub0hHZ0FBQUFBQUZMMHVnS3BlaWNUdy9RZlA2NU8zeE80ZEFaYlI0ZmVUblU2aXpoK2I2WHc5YzhFYVpsNEtnQWR2amZUOGQ4UHc5TG05Y2hZQUFBQUFCQUV3SkFBQUFBQUIxdXZ6dWpqc0U2QUFBQUFBUk5FWEZBcGVsMHorWCtyK1UwNHY2c01ldVBySGo5bU93S0FCODkwL1picmxFdWV1ZnlQcDQ2NCtUbjZIWHJueDlJejA0bk45bmoyeEN3QUFBQUFnQW9JQktKQUFBQUFQWjMvbFBUeDM5SXczejBCUUFCVXNBQlJaSkNxMm9rMkZqNWI2cjVqdk9jZGN0T05PL3dET1R6ZnEzSjZXZXVnbEFBQUFBVXZ5Yk9WVTJ3QUFBQUVFd0FBS0FDQUpnU2lRQUFCMHVicEw2UFIwSzhkN2E4R1plNjhYczU2a0s4M3BKNHZUb0JtTklrQllyR2lBcmlkdmw5YzhlRFhFWE5xNitPWFN0Vm5ZNnZHNmVXdWsvSjdXZlR2RjdlT3dVeTVsbnI0Q05jZ3ZJQUFCQUFBQlFBQUFBUUJNQ1VTQUFXNi9HUy9XWi9QOWZQVER4L1FqaGV2MytZMDM1OVY2Ynhlam02NWxKdWlrYVkxRzdPTkZCYk91OWZNWS9UY2JUTHkrakcxbVZTeExzeSt2eDlUNW5QVEFhNUxWR3NabEJBQUFDQUFBQUNnQUFBQUFBQWdDWUVvRWdBMjZmR1RyNm5UNVAxOGRmUXViN2VlOWFURUwwQVZDbXFWdk5KYnFVTEY2aTBWakREMzFzNXQrbU1kbU12azRkNmJaQmVRQUFCQktBQUFBQ2dBQUVJa1VBQUFBQUFDQUFTZ1NnU0FEZjJjeEwzdlY4dTU2K3RyOHg2SmUrNU84Njl6SGFXSzIwRkNBcEVpdWxPYW5RK2VwVFRNT3VRQkJLQUFBQUFDZ0FBQUFRSVRBbEUwQUFBQUFBQUNBQUFBU2dTZ1NnU2dTZ2FhK1pMN3I4NHZVbmxJNm1IaUY2dzY1bEFBQUFBQUJRQUFBQUFBQ0VBQUFKZ1NpUUtBQUFBQUFBQUJBQUFBQUFBQUFBQUFBVUFBQUFBQUFBQWhBQUFBQUFBQ1lFb2tDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0VBQUFBQUFBQUFBQUpnU2dTQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFFUk1BQUFBQUFCLy94QUF0RUFBQ0FRSUVCZ0VFQXdBREFBQUFBQUFCQWdNQUVRUVFFaUFoTURFeU0xQVVFeUpBWUNOQlEwS0FrUC9hQUFnQkFRQUJCUUwvQUtGS2pNUDAvQ2VQRlJpMzZkSElZekpNMGdxVVIvcUM4U1RjL3BkNnZrZUVlUVFzUDBLM0pIRXlIN3NzSjJZbU1hZjBBVm9WbzVvOURiNCs3T09ReG1TZG5GU0dQVHpoaDJaR1VxZldqS1BFYVZtZjZqUklHWnhadG84ZVEyS0wweHVjN2NyRHRlUEZnV3RVa1JqOWl2RTdXOGVkNnZrMzJqWmhLbmhCSElCSW9rbkptSnBoYjF0OHIwdlp0azY3VXJydGpjeHMrSnV0YTEra1J5cE83MS8rVzJUeWJXNExzRzMvQUM1TW5rOWUzWnNUaTU0bllndXpHN2JiMWVyNUR4OGdjUy9mNjk5c2ZrMmpnbENtaGNEZU96a1IrVDJFbmRzajd0cjhNaFNtNjRsQXJoYjB5bFRzWHM1RWZkN0NUeWJFMm9Mc3h1Y2tsZEtaaXhVbFdkeXpNTGJCNCtRblQxLzl5ZCt4T214ZUM3NU8vSUM5ZEU1QThYci9BTzVPL1luVFllRWVkNnZrQmN1YnZsaGZMSkVyaGhZMjNueCt3azhteE9teVRydWk4bVFwVHBQeXVCNG1PUUlwNmJYOWpKMzdFNlpvTHV4dTI1T21RMm54N1pQSjdDVHJzVHBuSDEzL0FPV1k2bmdiNVAwMlIrVDJMOU5pYkI0OTdkdWNmZm5KM2JFOWtmSHNqNjVueGI1Ty9OZTNKZUxOM2JPa2ZzUjRzbFJtb1lhVTBtRllINGpWOFI2T0ZscDRwQUNDTjBmZnM2UlpSOTJ4YWZEY0NMZXhUcEhoM2VrZ2pUa1d2VFFSdFRZU25pZE0xNExza3pUdHI2ZW1PaFE0RkhEcmlMR1ZVTFVSYjF3Qll3WWNKenBNT2oxSkE4ZEhoSG1ndXpHN1pmNVlhSFZXS2U4bERZamxEM2V0QXVZSVJHUHdKTVByVmdWT1NjQm1rZXM4RlZqYzVmMWtUUisyUDFtRWkvQmJwVXNTeUNSREcxSGhIbkdtbForRU9iY0VxOUlOVE1kVGVyaFQ2a25UOEgvbGxMR0pGWkNyeWQyV0hYVkxVb3ZGbkozNWRzZklpVFczbzhJbGsvQlhaTWdPekJEamxpSWlqVkgzWklOVE1kVGNqQkQ3NVJwbDlDQmNxTksvZ04wMmRXeFVlaVRMQmorUElpOU5oWXpRd29BK0dLZkN1S1AyTHljR3RvOFdQNXZRNFZiemZnOVcyTDB4UzZvY3NNZVJpSWRhNWFXTkZTTm9Hb291bE1iNWZRNElmaEwwemJLVGpIU0M3UXlXbjVFc1ordkZoMVRLMTZrd3F0VHhzaHl3MEduTEcrVDBPRDhmNERiUnhhajBwT0FyRHkvVVRmcEdyWVFEUnc4UnBZa1RQRkc4M29ZSnZwc0NDT2VPSnpKc0FMREp1NDhJNlJ5alJTcklPZXgwcVRjK2lpbWFNeHlySU9SY1gyTnQ2dG5JUDVaTzdJRWd3NGtrcTZ2enNaSjZTQ0tPVkhoa2lxUEZrVWpxKytTUFZRK1FLWFZtT0oyTDB6bFhUaU5rWU5tTmhxYXJtc05Nek5WeHlKNXhHQ2JuMGFNVWFLVlpSSmgwZW13OGtkSmlwRnBNVEcxZGVReHNOaDRuWmk3NmN3Q3hrT2hjOEV2M1ROcGlwSkdqTWVKUjlqU0lsUzR1dXZwZ1NERmlnY25qUjZmQjE5T2FLbHhVZ3BjWWxDZUpxdmZZT05XSXJWV29WYzBPR3cxcDFKSWhqYWxVc1Z0Y201emdUNmNlTmI3Y3dTSytySlJkejZ1T1o0Nmp4S05tVVZxT0dpTmZEU3ZpQ2hDd29LUlIrNnIyMkZnVFZpSzFWcUZNVGxMR3NpdGgyUXMzRHRqencrSDA1VFA5U1QyU1N1bEppeFN1cmJXTnFYcFdrVmFyQ2dPRjdiRjQxeEZhaGs4VVJwc01yVjhPaGcxcElrVExGeTZWOXJlMUppWkZwY1docFpFYWliVUJWcXVhdlZ6UjFFZzN5MGlyVVJYYm5wRldBb2NEbkpJSTFkaTdlNVdXUmFYR05TNHVNMEpFYkltMUFXQkY2KzZ1TkVtaGNaYWE0MTkxYWEwaXIyeWtrV01TeUdSdmZCM0ZERXlDaGpEUXhjZENlSTBHVTEzR3JFVmMxYzE5MWFhc2ErMUtseEtpbVlzZjBVT3dvVHlDdmxTMTh1U3ZtTlh6R3I1alVjVEthTEZ2L0ZEL3hBQXBFUUFCQkFBRENBSURBUUFBQUFBQUFBQUJBQUlERVFRU01SQVRJQ0V3UUZCUkZFRWlNbUZ3LzlvQUNBRURBUUUvQWZLdmdjd1g0ZUNMT3QyN2VXamhmNmlLOExETHV6YUU4WisxTmlMNU0yUGdjMFg0RmpXaVA4aHFwR1pEd3d4N3hHTjJld2poUWlLTmNUUm1OSjhGZnJ6N2VNMDRGR05wRkxJQm9weTB1L0hnaWszYnJReEVaKzFOaUFSVGRyNDQ3eTZMZFB2VGJoNDh4djB0MVQ4eU1UR2orSTY4dTJaaUhzNUorSmM0VjBjUGx6MDVHTnBUNkFzcDdzenIyUnZNWnNJWXR2MkZOUHZPUTc5amM3cVQ0aTNuOWJHNG1RSjhycE5mQ1lhT3ptVFlTQ2ZTZEF4bzhOREx1eXZreHFlYmVjaHBzZ0Fza3A4WUl6TlJqYzNtUjRiRFpTMU5ZMXVpeER3MzhmZmhtT0xUeVh5cEVTVHpQZlVWbEtvOUtKbWQxS1NJZnN6VHVRMzN4WkFpMGpocTBWaG1OSXpJUWdXcFltQnZydDJqNzZKYndBVnNpbE1laStXMzBwSlRJYjdZQ3owM0M5ZzE2STE3Sm5VY09hYnJzcFpRaTMxd3NSMTdGdW5VZnhCdXd0V1JBVWpyMkxYVjFIN0FhUU44Wk5ka0ZYcFp2ZlNkd3QwV2ZhVFNKdnN3YVFjQ3NvVkZjK2dXN1FMVHVRN29FaFoxZlJwWlJzSnZ2Ykt6ck9ySEZkSXV2d2xsWmlyUCtFLy94QUFuRVFBQkF3SUdBZ0lEQVFBQUFBQUFBQUFCQUFJUkF4SVFJQ0V3TVVBVFVFRlJCQlFpY1AvYUFBZ0JBZ0VCUHdIMnJhb2Q2ZXErMVhDMkY1L1RWR1hoR2s4ZkNwMGZsMkRhb2Q2RnhkZm9tT3VHV28rMVhDMkY1eWdaRTVpWUVwdFdlZXU4UzBxNHE0cWtIQWE1S2pMeENOSjRWT2tabDJMWHVpVmUzR3M2MEsvK1lRZTV4UTZ6cVRYSnRGclRPelZtMlFyaW15VEFUUmFJd2UwUEVGSDhkeXAwck5lKzQyaVUyb0hZR2l3cHROcmVQU1ZueC9LTlJOcXZKOU5VcDNoZUI2cFU3TlRoVkpqUk5lWmdvT0I0OU5Xa09SY1NxTFNkZlRPYUhEVmVCaUFqUWQ2UXJncEcwOTFyWlRIL0FBN3NsMzFtdUtEcHl6Q0NyT0lNTHlKbFJ4UFhjZGtPeUV6ZzlnZXYxeW1NRE5Pc1RBMjJuQThiSjQ2VDl4cDBUdU1KVnhRZDk1WEljZEYzTzR6TVhZQnl2Uk1vY2RFdG5jWmdSS0lqT0JQU0tuN1Z2MXROeXU1Vm1JRW9DT21SS0xTRmNwQzAyQTdFbUUzVTlvZ0ZXS05tVmNjQUk3c0sxV3FEbWlVQkhwSUN0Q2dmNFQvL3hBQXhFQUFCQVFVSEJBSUJBZ2NBQUFBQUFBQUJBQUlRRVNBaEVqQXhVRkZoY1NJeVFZRkFrV0FERXlNelluS0FrS0gvMmdBSUFRRUFCajhDL3dBQ3FEOFFQS3RqOFBvb1lCd3NmaUd3VWZ3L2w5QitHOFVlVmJINEVBUW9YRWRKSWhRd0RoWUZmTi9hQ3JtRUdnb3FCTUVRSm10NlQxd0NqZlEwUVBsd2o1ekhhWmtlNTdIM0swclRPTnpRd1ZURjFURkRqTUdqTUJ0TmEwbWlGQUIxbXpYVlJ1dlF6RDNNWmd6N04xN3VqbURNbzVSbWpkTlhUWE9ZRGlVVEU2MGZFaTRhdVdlYzI5R1lNNlBCVlBLZ29HVnE1OUhNVEsxeEtFUytoVVNvaFJLSEVqVnkzeG1KbGE0bGFONFJjbm5NVEszeEtONXdFMGQzaGJxRnd6em1KbGI0bGhvSnh0V1NJWGJWUlJCWmpGUm1aRzJZbVZ2aVFJbWRvN1hBNW1PWWppVnJpUW5RWEIzTWtGQjdJMmxHWk04U3RjU05YREE5eWNYTFIyekptVThHUWJtNGhwU1JvdkNNcDNPWkhZdjZXU1ZnQW9raGR3V0lYaE05SlZaaDl5amMzUFNjeWFHeWlla0xDSjN1S3J0aHd1aHI3WFV5OW8rcFFOQTlvdXR0K2NCSkVJMlZBVnkrQVVXcXRYMmgyV28xVEkxcklBaVg4bFcyc0ZEU2FMS1AzbHNBcTkzd1lpaFVDOXByYVJobnhpVndpWHhraDVOY3R0bjE4R0dycTQ2cURUZ05heXRTTWozSkhMQVBoY1BnVlpPS2hwUjRjMEpPS1AzYXVTTnNrdGEvQ2pySUdvZFF3a2FMNGp0ZEhTcjlsRzVKMlRRM3lJQkFmRzRVUmdYa3ZxcVVSRnJGZDZwVldmSnh1aWRVY2lHM3d1SmpzOHNhQzR0RHVEOENxaVdBUVpRNHlKby9HaHE1b2JPQVVmQnVTeXlNVjFWTHFycG9WMUI5dHJGdzR5STgvQmhLVEkwMXM3Y1hGcnpMVmRxNldYbmJJdjZTb2o0RWJnb2J1aUZ2cDhBaytFVGtlMmlvZlZ6QzY0a2FHNmhwUjhRckxZOXJwTWI3OXNlOGswYVVSOWhRL1VydXVrenhaTmxyVlZETFM2b2VueGw1a2FhOXltSENzczRMdUt4VmhxdTdzUmNRSGNvbkpJc3JmUmFIWlJacndvTlZXTm5sVXZZUzA5eVFDL2JIc3lOTkpvN09peVZYcE1uVTBGRDlQN3llSVVQMUtidTZtWXJvYSsxU1BwVmdWMUFoZDRsaXFLc1hZZmF0SHpMQStWQXVvckxPSGs2cU1nSG55Z3hySlFydmErMVZvL2VWME5ORlhwTCtwa0Zkc0ZpVlJzcitjMHF0a3FDNnBJT3Bnc0N2UDBzS09nVjFkdXFnS01yKzZTMjNqbzRuTStrcnJFRjBtTXU4bmNWVlY4cXYzSkhWVXdmVUlRYUs3LzhBaXEwVjBoMWdZbk5xTEdQSzZoQmRMUWRFNHFpd1dCV0V1SlVGcy9CMEpJbEZvNTFScGRUTVZXSVZHaE5nNkxYbCtLeFZhdWdYUktpYy9vMFZqRlZaVlloZHlvUXRuVVdDd1dpeEt4VlN2NGVPcWkwZndhalJYZVZpc0F1MExzQzdRc1lLcGovcFEvL0VBQzBRQUFFREFnVURCQUlEQVFFQkFBQUFBQUVBRVNFeFVSQWdRV0Z4TUZDQmthR3g4RUJnd2RIeDRZQ1EvOW9BQ0FFQkFBRS9JZjhBd1VVRTVBcXlJYjlPMVROeElFWTYvcDcwcE5RbndBUUVCTzhUK21BNUJEcHVGT0YzNmNFcUVOWm5qRTBKeTFVUVIrZ2lTaWRXNklNQWFwd3dLUVlzM1hSVEJpS3JWTjMrdEFBaERKejBhZENCVzN4MFhxVkNpY1lCRUlnaGoxUlZDSkJPaUlBREVkdXFUSVlUaTFDRlJqRFJBYlJkRE1IWTF6UU5jTVJaQUVUZEZGT1dRT0Nib0NxR1BWQmJuZlpCS0UyTjJ3Vnl0SzlBSk9hRjAvMTZaaDdLS0ZhOHNyWHZoRm9HRDNSRXBqbkt1WXRrVmN4YjRWTzVJUk0xQTlzQlpNVGhGSWNJWm9XUS93QjVoQUpLay9LSkpFbXB5QU9FQWVZWFQyekoxSnh2RVlhRGxCeUV1cUF0OFhjS0J2bENxOUtXemJzUFJCS3J3elhUbkgwc2R3aUhaOG9zN2dqZFhPVmpCcFVweXV6bVl2ZERvaXlMbEc1cmwzRFRzT1d0dE9iZjBHRlNvSTNDSWJQOGZvKzJJeVg3aHAyQXkxTnZpemVLVHpoV2hES0VMU1VBN0l4Z0E1T2lJQU1Sb2N2dy9ubzFEWW50M0gzdVg1dVZwTGN3b1ZUSUEwVmluT3VVRlZ3akt1VTczQWNueE9qQTMzSTdnS0Y3dnBINGl3eEJmSVM2MHJBRDJ4MEFkY2lUMFlGdUErZTRDaGU3eS9WM0dXQnVmSTdBUzYza0xMZVFzV1NXS3BKdEJUanFDZG5nSzVIdUFYdmN2MWR4bG8yQXoxSDBFNHlSQUVrSnloT0ZVNEVnRGdmTkVXaDk1L251TmRmTDlYY1pHQnV0d0RuaFpOOWNTbklTd1VONGpsRWxrZmhMZW5jYXE0ZEU0WEIwQkgwVy93QnlQSVhJZ1N3cGlKZFE1ektMdTBCY29seVNkZTQxZVY4M0pFbDJIUWp0UGRrcEhrcTQ2ZGdCbGlMZnpqdVV6V0pHWDZxMlNHNkhvVi9vR1NPeWJFV1c2TnpiNUJLb3RRZTNjcGNoajhPQ3FuSUswT1JFY1lVZEpZRkFYQlF5ZVlTMG9nd0VjNWhkNmdsNFJMa2s1REEzTWRld2ZLRGxWN3hzZFVZcDdqTzZUMTBTdmZKMEJBR0FIbGFNTHdYOVlsWEd1S1krTHM4NVlHMll3MlRZYjh3UU9udUlFTi94SEdqd2lySkxaR0pqMjRZQzVLWWY2anJTd0c4a3dSc2x6UWY0Wk9URnVRY2FJUG1JMEYxRjZSd3J5T1lZcXN5YVNQYlNBQTVLZWNpcWZ3RFNhSnFQRFRSRklXSXg0QXdlY2g5SUJHakRBRTVtcHhEbXhURmhRTnk0N2F5RzVQNEwxaHNHSERRaFlMemZEY3hmWHppQTVaQWlxUktKenRrNUk2T1U2NlpBYVZKMlQ1Ullkc3NqcWdBQUFvUHdhOFdPcDdRMlRHcWtjd3BpTS9RU2NHb3RpQTVBRlNqRGdLUWVNZnNhZEhta1IyUjdPdngvQ21EY2ZJMER2VVpQWk9KV0NWTVBUVU1uQ0VNQkpOZ255Z2FDdzZMbHNteUhZaldhbEJBNkQ4SFF2Q0VCc25zbEFHcmkxY0hFQU1EaEVYZHhRYkg0S3lYb2dybUJRMlUrd1c2VHc2a3h2QWRpOVNQd3ZSeUNXRG9LelV5bkJyTEZvMkE5QVJnL3lZaWtONFZTQnlNcHcxaWdDTkFnN0U1L0QrQ1N3Y29LalV6a2sxN0FOd0xEa3hTYW8zUjFWRGhCZ1FXQTFFUUJnQlUxL0dUV1kzd0FKTEFPVlF1MFc3STR6WC9CU2EvTHdDQmhWNHc0Z3pBVEJON29TR1NEUGxBc0FJM1JSNGNGVW9Cdmo2UGRpTTBkeERSWEIvQW1lSXlQQlRRTURRb0dCdW9LOThBWThoUnVOWDRBZEJBNk1kcVMvWTRsT3RIdE4wUU1RR1JVWlNoaFV3Z0dEWkRBTkpaU1NwVXhIRU1VRU9OaUhPSHJOVjM3SUl4SWRYUnlZZ0lpQmxsVUhjWnp2d2FHZ0lvZHlkbERFTnNVblFJR1FsZzVRVkdzc2p3VUFXdVE0OVJnZ3VjS201V2w3aUF5NEorVmJ3d0VkUmVVQ0RJTDU2eUQ5a1FoSEo3SUhHWWhSbU5hU2JieUhxTWExSWl6NXdWVjNFQkFPVGpib1JGMEFBQUJraWVaeWlUZ2dGaXlEQUpUUWVrZzF5T1dJWmVoN0QwNE5DaFRIc2xBZ2h4T05NR3lJWUczSWtrNUxuc3cwVWdqVUpzbWVoQWdod1hDQXhia0NyV3lFNXdIYzFEK2FHUkhza3FrZVNFQUJ3UWNhSVpIclRoYm1MRk0wQnlGemVpSnFNRjBmTUpGVzJRbUJKVFNqM0l0OFp2Z3dQSTJSV2pLajJXdUlEbGhWZVZYSk1oVkp6a3F3T0N2OUtxbytlMWpQckZGQytaUkF2VEQzb0F2NG9LT2lOTkZ3dkdIdnh6QlROTWFsQ2xEZlRJSURRMUswVzUyRmJnZU1BS0lEOVI0dzFVNkd5TUNVTkNkWjdGK1VKVHFYdGlBU1dBY294QU95eFVWdDZEanVkZldzYUkrT2NFTGNPVXlpU29tVTRXSTRUMEVRZHg1S2ZKaU9qTUlDRFRBbHFxcDlnbXVyTElFMWxRcDhZTnhDRGtBQUdDYW9XdTRoVUZCdmhKbC9ZZDJCRTVFSFpWWmxLNGU5VkVlVXdUVndqTnpZcG12cFQxV2ZXVURKeEM0QnRnYkRjWVlaSWVTOVhWVGdjTElFRU9DaUFhZ0hCQ2tBVlVvYVpEZnhpNktUSjd6UkZISjVsQVVPQytRS3IyODROSXFhWVFIbGRNRkNEeW4vd0IwQ0hZRHludm1iWUVDWEVIWk1QOEFjSnJIb21Hb2tucXVmS25xYm9FR2hUN2VCZGFPOUJidjlOSGxHbkljZ3ROK0NqcUVhSkhLcWk4clUwZTVWVnFNV0t1KzliMVNzbmtMNlFpUU9BYmxPUUIwVDhIOUdvQThxaElBTkI1Q0dzUkQvdEwvQUdFZEVTMDF3Q05PYmwvOFVQL2FBQXdEQVFBQ0FBTUFBQUFRQ0NTLy9EUjk5dEJCQkJSMSsrKysrKysrKzh4QkJCQkY5OTVEWC82Q0NDQzIvdkRWOTl0QkJKQkJSeDg4ODg4NXhCQkJCQkY5OTlCSC93RDRncWdna3Y4QThzSFgzMjFHcWtJRUVFRUVFRUVFRUVFRVgzMzJFUDhBL3dDZ2d2aWdnbHYvQU1zSFgzMnpENklrRUVFRUVFRUVFRUYzMzMyRU4vOEE2Q0NDK3VDQ0MyLy9BQ29zZmZmVm5Zc0NBUVFRUVJ6VGZmZmVZUTMvQVA2SUlJYjc2NElJTGIrN2QzclgxYS9IazAzZ2swM3NNelQzRUVkLy93Q2lDQ0crMisrS0NDQzIvTy9oQlYyOTllOTlPS2Y5L3dCaitnUXovd0QvQU9pQ0NDZStTKysrS0NDQ3kvOEExVDFnZ1lzOHZqUGZ1Y1lVaWgzL0FQOEE2Q0NDQ2UrK0NTKysrS0NDQ1MyVi9xUExKYWhkQ0JxRERETC9BUDhBL3dEeUNDQ0NlKys2TENTKysrT0NDQ0M3MnY4QS93RDFyOTg1MlpyL0FQcC8vd0FnZ2dnaHZ2dnVnclF3a3Z2dnJpZ2tpUWw4dW52L0FPbitVM3YvQVB0eUNDQ0NDTysrKzZDRDl0TENTMisrK09DcENWQ0JDeXloeWxhSGlDQkNDQ0NHZSsrK3lDRGY5OTlMREMyKysrK2xDY0pUQ0NDeENCQ3BDUUpDQ0dlKysrK2lDRGY5Ujk5OUxEQ1MyKzYyUDg4OGY3SWhDWkN2S1BNUCsrKysreUNDSGQ5OUJSOTk5dkRDQ3kxODg4ODg4ODVBT3RLNCtQM2orKyt5Q0NEUDk5OXhCQkIxOTk5UERVODg4ODg4ODhqOFA5cHIxVjQ5NnlDREJIZjk5OWhCdEJCQlI5OTk5bDg4ODg4ODg4bjhuV3A4ZnZmQ0JDRFRWOTk5NUJCQjl0QkJCQng5OTM4ODg4ODg4NzA4WEV5Lzg4ODBNcnorZDk1aEJCQk44OTlKQkJCQnhlLzg4ODg4OHY4QU8vSndGdVBQUFBQUE9PWVFRUVJYZmRQUGZiU1FRUVE2ZC84QXo5LzMvd0EvOHNkNUZkWmJ6OHd3QkJCQk45OThBUTg4OTl0SkJCUmpGSEV5VW5RR3pnZHA5aFd4aHdCQkJCTjk5OTg0QUFBMDg4OTl0TkJCZzE4dnJvNS9qMFBmdmZvQkJCQkZOOTk5ODRnQU9BQUFRMDg4OTk5Tk5CQkJESjBBQVRBUS9SQkJGTjk5OTk4OHdBQUErdUlBQUFRdzg4OTk5OTlOTk5OTk9jdWV0Tjk5OTk5ODg0d0FBQUFPKysrdUtBQUFBdzA4ODg5OTk5OTk5OTk5OTk5ODg4OHdnQUFBQU8rK0MyKysrdUtBQUFBQVF3MDg4ODg4ODg4ODg4OHd3QUFBQUFBTysrKytDQ1MyKysrdU9DQUFBQUFBQUFBUXd3QUFBQUFBQUFBQUdlKysrK3lDLzhRQUpoRUJBQUlDQWdFREJBTUJBQUFBQUFBQUFRQVJJVEVRUVVBZ1VXRXdVSEdSY0lIUm9mL2FBQWdCQXdFQlB4RDdyM0I3L0gyZXlvNUtpRk9tRHJadnJFUkkvWlU3dzdodDRmbUVMdnl6S3p1VDMrUHNKUnN0K3FtRkd4eWVqcUttbkpVQjFtV2R0dnRvanN0bnFyVDNHdXVoKy9IQnpRa3daaVVPalZYTGQvYi9BSGxqKzA3aE40Zm1YRC9MTjhNeDJLei9BTE1nRTFOY0V3YWFNTVE0bWJoVGZ2OEF1RUVhZU1SUnMrWjFZUjVkOHZ0d0ZRd2xSQVUxSDE0ekxxdFh5bVdaSTRxb2p2eUhmQnZramdlNGZUUHVPQWF1L3dBekhQRWZRYmo1RHZnM3oxRUl1blg5UUFYSzQxc29yZmR4S2E0ZlFiOGwzd2I1WXQyeGd4YS84bG8wbzdqQUxvWm9yV3ovQUNGV2c1UEpkOEcrWGZKdmdEYXlXUzBwQ2tGdTNQWGt1K0RmQnYwSEZ1ZFRCVm42aXFscnoxNUxLdUYycDhFbzY5SFhCeDF3QXZVQUtXUDJlVGhnQTE2RUhjVTF3RHgxd0pBU2cwUVQyRmptV0VxTHNIc2U3OGV2TDZETDhrU284VUw0U1hUMmhWbFhMZzEwZU5pUG92QTVSekRZSWxrUkdtZGNQb05namp3Umkvb25ES09VaDNQZ2xKZkN1UmJjM2VDS0gwR0hCN3pyQnFtRFpaNkFHK0JkUVVBVVROZURvTUc5ZXZ2aDQ2Ump3T25yb1g0U0J6Qm1YQ21CQkhYQ1hBcUxVT08rTk9YR0pjVG13OXhCSFhBN1IxNGFhVEFNVzFLZE12dVFYMmw1bGUwV29GU3liWXc0aGpoRkZnT2JmSDBrQjNBT28rMDFNUXE1a2lzSm1JN0o4RXdFdVg1b1dtQzdsSVBCSFRLdk0vUEZmRWV5TjlqV2srYWZKRnUvNEovL3hBQW1FUUVBQWdJQ0FnSUNBUVVBQUFBQUFBQUJBQkVoTVJCQlFGRWdZVEJRa1hCeGdiSEIvOW9BQ0FFQ0FRRS9FUDJyVmE5ZmY2ZkRLdzNEUGJnL1dEK1lJbG42VWFlNHBERFIvaVlDTlZyL0FMK2hjaFZVeTJuNGR5dVdZWVo3Y1BWcUFBNytWMTZRcUJwZjQ4ZEFIcUJ0M21XT1pRZVpBaVUxRFVPUzViUFV4Q3RYemhFdzNHOWhNTlcrdlVTZ3UvR2N2VE84SWNtdVQzeFgyU0JpRHVIMmlWdHJybEJZd2t2V2JZYThnMXc2NVliK2t4R24xdzVkVk15TXcrRHFIa0d1SFhQY0lXTmtCQkRKTUR5K3ZxRFp3ZkIxNUpyaDVJSDJFUWRUN1JEVUlCVmJDZTMzSDZWOHZrbXVIazF5NjRiQzhPWnNHS2pjSFBma211SFhEcjRQRkFGOEFVMGM5K1NUVWF0ejdKWjM4TytIanZpNEVWYXFmOStVbFhmd0ZOUUxjQ0RqdmhBVmlVdGp6cTFGdFl5UXJsZmZqMzRQd0Vyd3diaHhZcmd3SGNiY0pES2VmQnhUaUVkS0RUQkVzbmZCOEhWb04rQ3MxK0Y1czVRalUreVd0ZkU2S21yd1ZsK0E1WjJpWFpFcHArQ0pYQ200aUlyWnE4SGNJbGIrZlhCeDJoRGhOdm5ZcndncGlWY0dOc3FJbStCcUxjQzQ4ZGNiY21jeW9EQWo2TVJOOExwREhoaHRNZ1FSdVc3SlhWaUh1VmlYRE1jeW1haEptT2VBRUdSNW84ZmFSWFVVYmg3bTVtTjFNUUNNeEJkTSt5WldWSzgxRHVKNmw0bEVUWkxxZjI0djdoMFEvd0JHb1o5VStpQmRmMEovLzhRQUxSQUJBQUVDQkFRR0F3RUJBUUVCQUFBQUFSRUFJVEZCVVdFUUlIR0JNRkNSb2JIQjBlSHdRR0R4Z0pELzJnQUlBUUVBQVQ4US93RGdySWRLVTdSUCtPQ0JOS09acytoRldhQWdUT2M2aTZGUW4vR1FKUytKc0pnMFptaVVMelFCMnpvaVhQRnBJWS80dVkzNUZHRDl2U21jQWxNR0IveFl4aFJxS2hVdUZhTFh0TEh2UHB4T0E0eGxUcUkyL3dDQkZpaUJJRGhKajRMM0VvQ2dlWVhRTGNERW1uQU4ybWdNa3pLUzRLVVluanBHUG1BbTZvWkJ4dGFrZFp4TFU4QzhNRjd3dDd4eGdSTldBSTJUQnE0a1loblVVWG9KY2xOQWtaK0xlS1pmUkk3ZTlJRnhBK1hZTkFHU21nQmpNRlpLNUFvTzdDeW9jSmlCbnpiNUU2WXZ3Y1pDT1MwVVBWME85WWlEZ0dScHlMWUZpN0JoU2p3SkJtaTJtT05zcW1TQ3h1MG1RY1hLbmhlRXBUNVlvRHlURjZNTm5kaTM1am02b04zUVBseG1oWmsxRGVsdGhUeUl1NjZPM0tXS0RDRTZYbjZvSDVwUXdINXJBSFBXUXJlOENocmU4Q2w0UWlzRUVwaXM0U0hWOHNYY1VKbkZiMVRXTUszNGc5MmZybTZBdnFmbHpFZkpXYTVDbktsSlhrRGNxT2xRaE1CcFNzNVlaRWRLaWdYRmRPQ2lSYmlEdnk1YnhXTWFrVFZ1a0h0OHdiVE4zc0IrK1VTRFZwV2NsOU52cm10KzNxRGdlbktzdVNJM2E5bTl4NWhHRFc5U3JpMFkxaE5SNkNQcnpEdU11Njh1eVk5NjMxSDM1VHdKOUFwVzgwOXVZMWNCR1ZLckxWNGFKOWVEc0dGYjNyM2ZNTFgrd2N2ZUhzdnpMVlhzWXZBektqN1prNGtkYVJYNTc5dVh2NEpHWEFSNkROSlJZclBtR0xvSHR5NDNVZS9tdEJxOVM3d1VTMHBNUkJSeEJZREpta3BLZ0JkcFFXS0M1eTJMcUQyZURiK3JqajNqekhENlE1Y2EwK09QdmxrekNaZWhlcEV6R3NLb1RPZE83N2tTRk9Idm0wNDBQSk5RQnVrUVVRQm1SMmtua3NYVkh2NFBRc0RxaDhUNWg3dzV1dFhSZTZIM3k3M082ZUpEZmlzRXRTSnF4ZnI1UHJpNGhFNEJUZEJpc1JsRDRPNGp1Z0ordk1QZUhoOUJ2Vkgyc2NSVENqcVZQU2t4VWhtSmVwb2pNRUhTZUtGdGtkWXAzSmhzbE93WEVhR3BFWWViZmpmU3dmRDVnb1Iwb3dmZ29BbGdwd2ZEN2o3NTdNbkwwSDZjUUJHb0lDU05OdkMzR2JVdHdvcTBRdGl5NVU2NDJRbmZtNngzcWZNVDBnKzNnd2IxaXQ3aE9mcmNIVkI4THhndXo1TGhWai9vamxDQUpWZ29reGtpOUxENDh4djFEOXVXOGMxL0k4bldZT3NXOEM3WmtkZ3I4T1JDTHlncVkweUVtY1U1VklyMTBON2pQS0VGUFlSZDlpbXZoVXZtTitwajZNY3Q4TmZqbjY1T3V3K3MvWGdkKzExWDREa0JQd0MreE5LcFhGdnhzL21EbDZzZzZvK0MrWmZ3aHgrK1c4ZGZudjF5V1Q5QVI5ODRLZ0VyVElUSVE5a2ZYSjZkK3F4OFR4M1ROYi9Ma0NvS2ttQ09qWVAybnA1bFpkSDFFZlhIQWcxTFBXdjdBK2sxcHc1SnhSOTEvd0NhMEhIOVZQcXY0VmV0YVI5bGl1MVNJdWdqbUJZbFhvQ1g0cG5FcXl2SnZCdXdJKytJSXZCbDZVcXF1THlQR1lxQlEzb1Mvd0FhbFlFUmhIRWZNZTdVNmlmdWpDNlpGM29VTUlDM3ZiQ2dBZ0lPZUtFMEUxUExySDRMVTkyWForejhWTUlPcTlSeDNsRHFMOER5MkxsbnEzZm5qMGY3N3dpcHhZelhkNFNJZEtpb1hFU2lKSWx5YnJScGdZTVM0Rmk5UjFrbE5GS2dSR0VjUjh1WXE2QUtCaFE5dkZKSkRoUWJMOGlEdVlWTGQ2SjMwcmRqSFRCOFByeVR0WVJMb1Z2dkp4eDlmWkNvTzZMMmI4VmVxM1p2bndVZGZDVXc0UFpJUXlTSlNOemdxMS9hK1dwZ1ZBR2RDU0I5RFkvd0lFNEJlaGc1eGJJMDJwYytPSGovQU8yaXo0bmt1WkpKb0xTTGlzNGFCU3FwV2VBd3lWaEtBeWQrTUNER3Q1dlFHQjZ5K25sb2JlRGthLzRWSnpCMlorMDBXSXFOOEJheFAxVU5SeUdBMU9HK0V1aFk0a0FZckZGZ1dFdTJGS0JpY25kODN2WTlqM29MQmFWcEtxRDBRdXRXM2dzYUFXRDA4c2FBeHk5Q2pMZ0lEL0MyektUdS93Qjc4VkF4aXoxVDJFSUcrNVFMRWlEdFo5NTR5eVMvcGNIeDR2OEFQRmpVcEFVaDJTT2dJK3VMMFBiTDl2eDRJUUZ6ckJoU1FvNWVSeGd2VzZQOE9GMnJseDlCbDdjZ0xrdEJtaFlwbVdjYzU0azZNT0JCSWNHbFNLeWpMYmdJbHdSZFREM2lrb3VLendFRWdiSXhhZUl5TkFzSGc5RjcxZjFVWmtDUjA4aWJGUkZFQllqL0FBdkR4Y08vNm9BREFJNUM2NVFkMzlmTkZabHRHVG54VjR0YjdjVTVFeEVtbkNNNUtTckFEQllXQzhmSHBURmlkelNZeXlMTk1hTEljOGp1eDlQQ1VWZTMwS2t4Z3oyOGlrNlNCL3hmUlBkNUFSV0FscGdZakx2K3FPQnVoKy9iaU16ZEEzY2ZrOEFxQVUyeTZjVHBNMUZYdVBoeWxaTHdWaEtrVUFobUo5WHlMb2NQdC9oQnNBSmFZempMa3RGb1BRdS8yL0NlTWg3Y05Ca1RSUzBLWFJ3OEcvOEFNQVpEZjBvMG1xNEhRb0JBQTBLaWhORW1pWHA1aXBFL1JrZS9BRXBNQXBpUWtYTW41NElTTWg4dmtSR2F1ZjRicFpwZWh5N0EvYS90dUJrVzhxa2hSeEs3QW5WdFFvaVdTZ050d05UWHdBU0dJdGgvN3l1WHJJVFVzZEJBcGlkaUplTWFHd1BTWDhpdk5VdDAzb0dwcEUvd1hsZytnY2tXa3VBYXVWWE5sQzdxNThMeTJyWUpudlcvMWZRc2ZmQ0l0a1pKcFFwWUpjYm4rQmZvUXFkbVZMeU83c3pjdzdhVkRGcldKNFByUE02OHFCeG1IM1JHTUFqazJxVDY1ZmZJb0V1b083UnF3RUhiSDNuaVlXZUNNVlBJdXcyMUtzQjJJTnp0NHd3WEdLZXg1SXRWTzR4R1ZxdThhVEhPcGxSUi9FRW1kYnRLVGM3YzdrNHhtRFJxM2MwcFUxSkxVWDNlTjgvd3k4aE9rQVMwd2pocGJiZW5KQXI1NklQZWxVcXl0M2tFSzNLNEUzWHNmTkhGU1NOblc2YVZHUWcwbFVKdlVYVUp6NUZpUnJyd2RoamNGQXdCcU04NkZ3bGo1TkpnUkt1ZmtueWhWczFPVUFYc1RwdFUvZmRxZXBuVTFtNEZnZHZ4VUNSTElZTy81cUlHMGJEMXdvNEJNRlNQZ0dFb1hFNkd0WVRBVzVMVHdmUlAzeXNEUk14c2NrNVplMjdVTTZia09YVGtaUXNSNnQzNDk2dUJDSTZteDd0UzZ0RVVobXI5UW9BSE1XQjZOQUVBNEk4U2xkTlV2cGpRSzh0bzc5aW5Ma1pWYnZreU5Xa1NpWU9DSEYxMG9FSkxpTWpVSVMyUW5mR255bGRjOVNtNVF6aVBXUHVvMFJNYmoxS2dSZldBK3FpSWk1UDdWRkdhalBGUUtzQmpVZ09nT1ZQa0d3Nk5SNHJ1ZkphdEZXd242b0pZN0cxSGJINHFjWThUa3k3Y2c0YUNhWlNncjFORWMyNkExNFJJQUxvd0RWYU52VzJRWmJGUGlaVHhRQVZNQVoxTGhkNmoraWhjZXdqRDMrT1JXZXZoUUpCL1p2UThINkkrVndTYk5kL1NvOTVjc2JvMEFGQ09adzlaSVZxNmlXcmxOOTZSK3FKSitwZDgxZ2phRGY1V29qb2FQMVJVY0M1ZkZKRXRBY1g0b1JKR2VDaGRwMGxTMWdHbmVrR0NDWVJSa210WE9qVURHZXA5eXRJWFJmaW9VZ3hjWWJVSWdqSTRWQ3VCZzRxaGxGN0dYWU5hdzd6MUxWWjEwQkRveDkrSnBTV0FKV2hZZjJMdlNnVllDNnRJSzQreXcvUGZ6TkVoZFY2S2hVTHJucGpVTGRzM09WSVRrQjgwWWx6TjFjVnBCSWJsTThsZTlQYXVrOXZ4U3h4Q1c4ZWxBb0p4R2hrVVlreWZ5b0NVSnR3QUtvRE9vakZsYm93cVN3OTUwVTNBRFEyYWxHSWxDUFg1ZTFEeVFFQ0JUTVE0ei9yU2xoMkg1VVgxeHUrdkFNRkdEK0wrYkZTckJVTlFJUjVDL3JVU1BhbGxFVHNKZFJ5WXJZRE5wRXBPSnR0U0NtV0prMWdHZDNOZitSVW1LZENrVVl2UUxUa1RSaU1IRlpjRXNrbXFqNHFlUjl6OFVybDNTWUZJdEtlSTl4VWFTYlVmQkc1TmJRNlVsSW5XTDBwYlRTL3JrWXErR1l0S2tnUFBUYnprVlNLSm1VYlRpd2ZtcUtDdFZEVUdUTmsvRkVuUUtDSklpYlZoS2JRM3F3VEszWFZwSVdRWUN5VmtWMlExSGlIcFJham1LeXFFU1loWjJjTGtOWlJXV0NVU1pPOTFZeldDeEhTa0VJakNjRlNOWVJZWWh2UXNnbTFJYi9KeG9uU0JoNER6OVdhNERZaEZRTE8zbzl4NG40ckRkdFpRODlFRkNSbVh0L0dCU0FSSkhLc28vd0FzYWl4ZXdyUTd5RmFJR3F5MFJ1Rm1aeDdWUFpjYlVRbWMxdTB3am9ySDdwTXg4My9oUlJrVWRxeU10RldSRFJ2d3ZCUGdvb09LOTFmK3lweGN1cTBZZ1NxZU8zVC9BUGloLzlrPSIpOwp9CiNkYXRhLXVyaS1hc2NpaSB7CiAgdXJpLTE6IHVybCgiZGF0YTp0ZXh0L2h0bWwsJTNDaHRtbCUzRSUzQ2gxJTNFVGhpcyUyMHBhZ2UlMjBpcyUyMDEwMCUyNSUyMEF3ZXNvbWUuJTNDJTJGaDElM0UlM0MlMkZodG1sJTNFJTBBIik7CiAgdXJpLTI6IHVybCgiZGF0YTp0ZXh0L2h0bWwsJTNDaHRtbCUzRSUzQ2gxJTNFVGhpcyUyMHBhZ2UlMjBpcyUyMDEwMCUyNSUyMEF3ZXNvbWUuJTNDJTJGaDElM0UlM0MlMkZodG1sJTNFJTBBIik7Cn0KI3N2Zy1mdW5jdGlvbnMgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQyUzRnhtbCUyMHZlcnNpb24lM0QlMjIxLjAlMjIlMjAlM0YlM0UlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB3aWR0aCUzRCUyMjEwMCUyNSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDElMjAxJTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMm5vbmUlMjIlM0UlM0NsaW5lYXJHcmFkaWVudCUyMGlkJTNEJTIyZ3JhZGllbnQlMjIlMjBncmFkaWVudFVuaXRzJTNEJTIydXNlclNwYWNlT25Vc2UlMjIlMjB4MSUzRCUyMjAlMjUlMjIlMjB5MSUzRCUyMjAlMjUlMjIlMjB4MiUzRCUyMjAlMjUlMjIlMjB5MiUzRCUyMjEwMCUyNSUyMiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzAwMDAwMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIxMDAlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzZmZmZmZmJTIyJTJGJTNFJTNDJTJGbGluZWFyR3JhZGllbnQlM0UlM0NyZWN0JTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMSUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjBmaWxsJTNEJTIydXJsKCUyM2dyYWRpZW50KSUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRScpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQyUzRnhtbCUyMHZlcnNpb24lM0QlMjIxLjAlMjIlMjAlM0YlM0UlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB3aWR0aCUzRCUyMjEwMCUyNSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDElMjAxJTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMm5vbmUlMjIlM0UlM0NsaW5lYXJHcmFkaWVudCUyMGlkJTNEJTIyZ3JhZGllbnQlMjIlMjBncmFkaWVudFVuaXRzJTNEJTIydXNlclNwYWNlT25Vc2UlMjIlMjB4MSUzRCUyMjAlMjUlMjIlMjB5MSUzRCUyMjAlMjUlMjIlMjB4MiUzRCUyMjAlMjUlMjIlMjB5MiUzRCUyMjEwMCUyNSUyMiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzAwMDAwMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIzJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyM2ZmYTUwMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIxMDAlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzZmZmZmZmJTIyJTJGJTNFJTNDJTJGbGluZWFyR3JhZGllbnQlM0UlM0NyZWN0JTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMSUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjBmaWxsJTNEJTIydXJsKCUyM2dyYWRpZW50KSUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRScpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQyUzRnhtbCUyMHZlcnNpb24lM0QlMjIxLjAlMjIlMjAlM0YlM0UlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB3aWR0aCUzRCUyMjEwMCUyNSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDElMjAxJTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMm5vbmUlMjIlM0UlM0NsaW5lYXJHcmFkaWVudCUyMGlkJTNEJTIyZ3JhZGllbnQlMjIlMjBncmFkaWVudFVuaXRzJTNEJTIydXNlclNwYWNlT25Vc2UlMjIlMjB4MSUzRCUyMjAlMjUlMjIlMjB5MSUzRCUyMjAlMjUlMjIlMjB4MiUzRCUyMjAlMjUlMjIlMjB5MiUzRCUyMjEwMCUyNSUyMiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIxJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyM2M0YzRjNCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIzJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyM2ZmYTUwMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjI1JTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzAwODAwMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjI5NSUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjNmZmZmZmYlMjIlMkYlM0UlM0MlMkZsaW5lYXJHcmFkaWVudCUzRSUzQ3JlY3QlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjIwJTIyJTIwd2lkdGglM0QlMjIxJTIyJTIwaGVpZ2h0JTNEJTIyMSUyMiUyMGZpbGwlM0QlMjJ1cmwoJTIzZ3JhZGllbnQpJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFJyk7Cn0KI2RhdGEtdXJpLXdpdGgtc3BhY2VzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnIGRhdGE6aW1hZ2UveC1wbmcsZjlkaWZTU0ZJSUdGSUZKRDFmOTgyRlNES0FBOT09Jyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/urls.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiY3NzL2JhY2tncm91bmQuY3NzIjsKQGltcG9ydCAiaW1wb3J0L2ltcG9ydC10ZXN0LWQuY3NzIjsKQGltcG9ydCAiZmlsZS5jc3MiOwouZ3JheS1ncmFkaWVudCB7CiAgYmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDJTNGeG1sJTIwdmVyc2lvbiUzRCUyMjEuMCUyMiUyMCUzRiUzRSUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHdpZHRoJTNEJTIyMTAwJTI1JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMSUyMDElMjIlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIybm9uZSUyMiUzRSUzQ2xpbmVhckdyYWRpZW50JTIwaWQlM0QlMjJncmFkaWVudCUyMiUyMGdyYWRpZW50VW5pdHMlM0QlMjJ1c2VyU3BhY2VPblVzZSUyMiUyMHgxJTNEJTIyMCUyNSUyMiUyMHkxJTNEJTIyMCUyNSUyMiUyMHgyJTNEJTIyMCUyNSUyMiUyMHkyJTNEJTIyMTAwJTI1JTIyJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjAlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzOTk5OTk5JTIyJTIwc3RvcC1vcGFjaXR5JTNEJTIyMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjI2MCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjM5OTk5OTklMjIlMjBzdG9wLW9wYWNpdHklM0QlMjIwLjA1JTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjcwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuMSUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjI3MyUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjM5OTk5OTklMjIlMjBzdG9wLW9wYWNpdHklM0QlMjIwLjE1JTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjc1JTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuMiUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjI4MCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjM5OTk5OTklMjIlMjBzdG9wLW9wYWNpdHklM0QlMjIwLjI1JTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjg1JTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuMyUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjI4OCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjM5OTk5OTklMjIlMjBzdG9wLW9wYWNpdHklM0QlMjIwLjM1JTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjkwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuNCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjI5NSUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjM5OTk5OTklMjIlMjBzdG9wLW9wYWNpdHklM0QlMjIwLjQ1JTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjEwMCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjM5OTk5OTklMjIlMjBzdG9wLW9wYWNpdHklM0QlMjIwLjUlMjIlMkYlM0UlM0MlMkZsaW5lYXJHcmFkaWVudCUzRSUzQ3JlY3QlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjIwJTIyJTIwd2lkdGglM0QlMjIxJTIyJTIwaGVpZ2h0JTNEJTIyMSUyMiUyMGZpbGwlM0QlMjJ1cmwoJTIzZ3JhZGllbnQpJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFJyk7Cn0KQGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmIik7CiAgc3JjOiBsb2NhbChGdXR1cmEtTWVkaXVtKSwgdXJsKGZvbnRzLnN2ZyNNeUdlb21ldHJpY01vZGVybikgZm9ybWF0KCJzdmciKTsKICBub3QtYS1jb21tZW50OiB1cmwoLy96KTsKfQojc2hvcnRoYW5kcyB7CiAgYmFja2dyb3VuZDogdXJsKCJodHRwOi8vd3d3Lmxlc3Njc3Mub3JnL3NwZWMuaHRtbCIpIG5vLXJlcGVhdCAwIDRweDsKICBiYWNrZ3JvdW5kOiB1cmwoImltZy5qcGciKSBjZW50ZXIgLyAxMDBweDsKICBiYWNrZ3JvdW5kOiAjZmZmIHVybChpbWFnZS5wbmcpIGNlbnRlciAvIDFweCAxMDBweCByZXBlYXQteCBzY3JvbGwgY29udGVudC1ib3ggcGFkZGluZy1ib3g7Cn0KI21pc2MgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvaW1hZ2UuanBnKTsKfQojZGF0YS11cmkgewogIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztjaGFyc2V0PXV0Zi04O2Jhc2U2NCwKICAgIGtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUFRTUFBQUFsUFcwaUFBQUFCbEJNVkVVQUFBRC8KICAgIGsvLytsMlovZEFBQUFNMGxFUVZSNG5HUDQvNS9oLzErRy81OFpEckF6M0QvTWNIOHl3ODNORERlTkdlNFUKICAgIGtnOUM5end6M2dWTE1EQS9BNlA5L0FGR0dGeWpPWFp0UUFBQUFBRWxGVGtTdVFtQ0MpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3gtcG5nLGY5ZGlmU1NGSUlHRklGSkQxZjk4MkZTREtBQTk9PSk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVwiUm9ra2l0dFwiOlwoNDAwXCksNzAwKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVwiUm9ra2l0dFwiOlwoNDAwXCksNzAwIik7Cn0KI3N2Zy1kYXRhLXVyaSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsIDxzdmcgdmVyc2lvbj0iMS4xIj48Zz48L2c+PC9zdmc+Jyk7Cn0KLmNvbW1hLWRlbGltaXRlZCB7CiAgYmFja2dyb3VuZDogdXJsKGJnLmpwZykgbm8tcmVwZWF0LCB1cmwoYmcucG5nKSByZXBlYXQteCB0b3AgbGVmdCwgdXJsKGJnKTsKfQoudmFsdWVzIHsKICB1cmw6IHVybCgnVHJlYnVjaGV0Jyk7Cn0KI2xvZ28gewogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4OwogIGJhY2tncm91bmQ6IHVybCgnaW1wb3J0L2Fzc2V0cy9sb2dvLnBuZycpOwogIGJhY2tncm91bmQ6IHVybCgiI2lubGluZS1zdmciKTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogeGVjcmV0OwogIHNyYzogdXJsKCdpbXBvcnQvYXNzZXRzL3hlY3JldC50dGYnKTsKfQojc2VjcmV0IHsKICBmb250LWZhbWlseTogeGVjcmV0LCBzYW5zLXNlcmlmOwp9CiNpbXBvcnRlZC1yZWxhdGl2ZS1wYXRoIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vZGF0YS9pbWFnZS5qcGcpOwogIGJvcmRlci1pbWFnZTogdXJsKCcuLi9kYXRhL2ltYWdlLmpwZycpOwp9CiNyZWxhdGl2ZS11cmwtaW1wb3J0IHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vZGF0YS9pbWFnZS5qcGcpOwogIGJvcmRlci1pbWFnZTogdXJsKCcuLi9kYXRhL2ltYWdlLmpwZycpOwp9CiNkYXRhLXVyaSB7CiAgdXJpOiB1cmwoImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRRUFTQUJJQUFELzJ3QkRBQTRLQ3d3TENRNE1Dd3dRRHc0UkZTTVhGUk1URlNzZklSb2pNeTAyTlRJdE1UQTRQMUZGT0R4TlBUQXhSbUJIVFZSV1cxeGJOMFJqYW1OWWFsRlpXMWYvMndCREFROFFFQlVTRlNrWEZ5bFhPakU2VjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZi93Z0FSQ0FHdUFvQURBU0lBQWhFQkF4RUIvOFFBR2dBQkFBTUJBUUVBQUFBQUFBQUFBQUFBQUFFQ0F3VUVCdi9FQUJrQkFRRUJBUUVCQUFBQUFBQUFBQUFBQUFBQkF3SUVCZi9hQUF3REFRQUNFQU1RQUFBQndHL25BQUJBSkFGQUFKZ1NBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQkNKZ0FCUUFBQUFBUk1DUUJRQUNZRWdBTnNzdDRHdUFBQUFBQUFBQUFBQUFBQUFnQUFBQUVRQUFDZ1JNU0FBQUFnRW9rQ2dBQUV3Skw0K2pyMDhPbmw5dmlYOUcySGtIcDhRV0FBQUFBQUFBQUFBQUNBQUFBQUlnQUFLQUJBSlJJQUFBQ0FTaVFLQUFBWG96MjBWbngvUm0yZW12bnpnOVhoTmM4OW9HdUFBQUFBQUFBQUFDQUFBQUFDRUFBQ2dBQVFCTUNRQUFBQWdFb2xWNCtpOC9yK2JlbnpiZWNPOHdBTFhuR1dVWHoyNjduNitUM2VGZjA2NWVNZXJ3aGVRQUFBQTU2UGQ0ODlxb2JlY0FBQUFBSVFBQUtBQUFJQUFFd0pBQUFBQ0xWbm5TL1M1ejUvMWQ2NUZuTFhMMi9ORGJ6Z2JZN1l5cjBjYWFLejQvb3piUFhYRE9zUFg0SlFMMTZ1dms5L0ZKOUhraER2T1VCTWFZZW50NDh4NWZiVGJLZXBrMHo5M3pBdklBQWlKZ0FBVUFBQVFBQUFBU2lRQUFBQUV0Yk5sNk5LMVM3WmE1YmVjTEFOY3RjcFFzQTJ5MXhsQ3hhdHN0OS9aem5oK205UG1nVTF5K2g4Z08rRnF1Tk5GSGw5MTZRMjgydVd1VzNuQ3dJSUFBQUtBQUFBZ0FBQUFBSlJJQUFBQUNBYlk3WXJLQ1RlbXEwcUFXTk05cGM2cmM5VmVyemM5d05NclRSbDZMVk9zOWN0Y3U4d3NBQVRHc3NaZ0lTWUFBQUZBQUFBUUFBQUFBQUFFb2tBQUFBQTJ4MnhBUnRqc3VTQ1NpUnRTRnJhdW5uOWYwZkh6eng5R2E3cm5GZW5zK2NGbXVXdVVvSUFBMXgyWEVJQUFBQ2dBQUFJQUFBQWlRQUFBQUNVQ1FBQUppUytlbVlBMngxTWdnRzJPMkt6Zk9jOXRGSGw5dDgwK2p5YVpYejI4ODJwNzh0L05sOUY4L0xXTFJwbEE2ekFiWTdMaUVBQlFBQUFCQUFBQUFCRXdKQUFBQUFBbUJLSkFBTmN0Y2dCcmxxWkFHaGJHMVFFQWJZN0xpRXRwbmZ4L1M2WE9oajZQUjVsdHZOaVBaODRCdGpxdVFBQUFBQUNBQUFBQUFCQUV3SlJJQUFBQUFCS0JJTmN0Y2dCcmxxWkFiWTdHSUFBRzJPeGlCZW1zNlZveTNuWEhYWHo1Q3dEWFBYRUFBQUFFRXdBQUFBQUFDQUFBQWxFZ0FBQUFBQUcyV3VKSm9aNjcraWRjdDBvVG5hK2lEeHBpd0FCcXpJQTJ4Mk1RV20yUUFMODZYeDYvSzQ3cU5jQUJCTUFBQUFBQUFBZ0FBQUFBSlJJQUFBQUFMR20vUjkyZW5sOVJ4MkNnQVI1dlVUaytENlYxejhvNy9LMDR5eTJ4dklEV3NGUWE1YSt5WER5Kzd3azNwcDVmZDlGeGZPejJuUGVuZVdBOW56d0FBQUFBQUJCTUFBQUFBQUFBbUJJQUFBSjcvbjZtZWdjYUFBQUFBQUltaWVIai9VNGQ4L050TXRNdHN0Y1NVU2UzdDBqTGI1eXByak91TzJlcGs4L3J2ZWtlanlVR21RQUFBQUFCQUFBQUFBQUFBQUFBbEFrRGZEdHpyb1NZN0FBQUFBQUFLWG9sd3VQejMwL2s2NDRlUnJrOVhsNnN2WHgyWTdmSnZiNHQ4SjBuRUdoYkc5QUFBQnZoMHBlYTJ4c0VFd0FBQUFBRVRBa0FBQUFBQUFGdnFlRDlCbm9IR2dBQUFBQUFGTDB1Z0twZWljVHcvUWZQNjVPM3hPNGRBWmJSNGZlVG5VNml6aCtiNlh3OWM4RWFabDRLZ0FkdmpmVDhkOFB3OUxtOWNoWUFBQUFBQkFFd0pBQUFBQUFCMXV2enVqanNFNkFBQUFBQVJORVhGQXBlbDB6K1grcitVMDR2NnNNZXVQckhqOW1Pd0tBQjg5MC9aYnJsRXVldWZ5UHA0NjQrVG42SFhybng5SXowNG5OOW5qMnhDd0FBQUFBZ0FvSUJLSkFBQUFBUFozL2xQVHgzOUl3M3owQlFBQlVzQUJSWkpDcTJvazJGajViNnI1anZPY2RjdE9OTy93RE9UemZxM0o2V2V1Z2xBQUFBQVV2eWJPVlUyd0FBQUFFRXdBQUtBQ0FKZ1NpUUFBQjB1YnBMNlBSMEs4ZDdhOEdaZTY4WHM1NmtLODNwSjR2VG9CbU5Ja0JZckdpQXJpZHZsOWM4ZURYRVhOcTYrT1hTdFZuWTZ2RzZlV3VrL0o3V2ZUdkY3ZU93VXk1bG5yNENOY2d2SUFBQkFBQUJRQUFBQVFCTUNVU0FBVzYvR1MvV1ovUDlmUFREeC9RamhldjMrWTAzNTlWNmJ4ZWptNjVsSnVpa2FZMUc3T05GQmJPdTlmTVkvVGNiVEx5K2pHMW1WU3hMc3krdng5VDVuUFRBYTVMVkdzWmxCQUFBQ0FBQUFDZ0FBQUFBQUFnQ1lFb0VnQTI2ZkdUcjZuVDVQMThkZlF1YjdlZTlhVEVMMEFWQ21xVnZOSmJxVUxGNmkwVmpERDMxczV0K21NZG1Ndms0ZDZiWkJlUUFBQkJLQUFBQUNnQUFFSWtVQUFBQUFBQ0FBU2dTZ1NBRGYyY3hMM3ZWOHU1Nit0cjh4NkplKzVPODY5ekhhV0syMEZDQXBFaXVsT2FuUStlcFRUTU91UUJCS0FBQUFBQ2dBQUFBUUlUQWxFMEFBQUFBQUFDQUFBQVNnU2dTZ1NnU2dhYStaTDdyODR2VW5sSTZtSGlGNnc2NWxBQUFBQUFCUUFBQUFBQUNFQUFBSmdTaVFLQUFBQUFBQUFCQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFoQUFBQUFBQUNZRW9rQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFQUFBQUFBQUFBQUFKZ1NnU0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBRVJNQUFBQUFBQi8veEFBdEVBQUNBUUlFQmdFRUF3QURBQUFBQUFBQkFnTUFFUVFRRWlBaE1ERXlNMUFVRXlKQVlDTkJRMEtBa1AvYUFBZ0JBUUFCQlFML0FLRktqTVAwL0NlUEZSaTM2ZEhJWXpKTTBncVVSL3FDOFNUYy9wZDZ2a2VFZVFRc1AwSzNKSEV5SDdzc0oyWW1NYWYwQVZvVm81bzlEYjQrN09PUXhtU2RuRlNHUFR6aGgyWkdVcWZXaktQRWFWbWY2alJJR1p4WnRvOGVRMktMMHh1YzdjckR0ZVBGZ1d0VWtSajlpdkU3VzhlZDZ2azMyalpoS25oQkhJQklva25KbUpwaGIxdDhyMHZadGs2N1VycnRqY3hzK0p1dGExK2tSeXBPNzEvK1cyVHliVzRMc0czL0FDNU1uazllM1pzVGk1NG5ZZ3V6RzdiYjFlcjVEeDhnY1MvZjY5OXNmazJqZ2xDbWhjRGVPemtSK1QyRW5kc2o3dHI4TWhTbTY0bEFyaGIweWxUc1hzNUVmZDdDVHliRTJvTHN4dWNrbGRLWml4VWxXZHl6TUxiQjQrUW5UMS85eWQreE9teGVDNzVPL0lDOWRFNUE4WHIvQU81Ty9ZblRZZUVlZDZ2a0JjdWJ2bGhmTEpFcmhoWTIzbngrd2s4bXhPbXlUcnVpOG1RcFRwUHl1QjRtT1FJcDZiWDlqSjM3RTZab0x1eHUyNU9tUTJueDdaUEo3Q1Ryc1RwbkgxMy9BT1dZNm5nYjVQMDJSK1QyTDlOaWJCNDk3ZHVjZmZuSjNiRTlrZkhzajY1bnhiNU8vTmUzSmVMTjNiT2tmc1I0c2xSbW9ZYVUwbUZZSDRqVjhSNk9GbHA0cEFDQ04wZmZzNlJaUjkyeGFmRGNDTGV4VHBIaDNla2dqVGtXdlRRUnRUWVNuaWRNMTRMc2t6VHRyNmVtT2hRNEZIRHJpTEdWVUxVUmIxd0JZd1ljSnpwTU9qMUpBOGRIaEhtZ3V6RzdaZjVZYUhWV0tlOGxEWWpsRDNldEF1WUlSR1B3Sk1QclZnVk9TY0Jta2VzOEZWamM1ZjFrVFIrMlAxbUVpL0JicFVzU3lDUkRHMUhoSG5HbWxaK0VPYmNFcTlJTlRNZFRlcmhUNmtuVDhIL2xsTEdKRlpDcnlkMldIWFZMVW92Rm5KMzVkc2ZJaVRXM284SWxrL0JYWk1nT3pCRGpsaUlpalZIM1pJTlRNZFRjakJENzVScGw5Q0JjcU5LL2dOMDJkV3hVZWlUTEJqK1BJaTlOaFl6UXdvQStHS2ZDdUtQMkx5Y0d0bzhXUDV2UTRWYnpmZzlXMkwweFM2b2NzTWVSaUlkYTVhV05GU05vR29vdWxNYjVmUTRJZmhMMHpiS1RqSFNDN1F5V241RXNaK3ZGaDFUSzE2a3dxdFR4c2h5dzBHbkxHK1QwT0Q4ZjREYlJ4YWowcE9BckR5L1VUZnBHcllRRFJ3OFJwWWtUUEZHODNvWUp2cHNDQ09lT0p6SnNBTERKdTQ4STZSeWpSU3JJT2V4MHFUYytpaW1hTXh5cklPUmNYMk50NnRuSVA1Wk83SUVndzRra3E2dnpzWko2U0NLT1ZIaGtpcVBGa1VqcSsrU1BWUStRS1hWbU9KMkwwemxYVGlOa1lObU5ocWFybXNOTXpOVnh5SjV4R0NibjBhTVVhS1ZaUkpoMGVtdzhrZEppcEZwTVRHMWRlUXhzTmg0blppNzZjd0N4a09oYzhFdjNUTnBpcEpHak1lSlI5alNJbFM0dXV2cGdTREZpZ2NualI2ZkIxOU9hS2x4VWdwY1lsQ2VKcXZmWU9OV0lyVldvVmMwT0d3MXAxSkloamFsVXNWdGNtNXpnVDZjZU5iN2N3U0srckpSZHo2dU9aNDZqeEtObVVWcU9HaU5mRFN2aUNoQ3dvS1JSKzZyMjJGZ1RWaUsxVnFGTVRsTEdzaXRoMlFzM0R0anp3K0gwNVRQOVNUMlNTdWxKaXhTdXJiV05xWHBXa1ZhckNnT0Y3YkY0MXhGYWhrOFVScHNNclY4T2hnMXBJa1RMRnk2VjlyZTFKaVpGcGNXaHBaRWFpYlVCVnF1YXZWelIxRWczeTBpclVSWGJucEZXQW9jRG5KSUkxZGk3ZTVXV1JhWEdOUzR1TTBKRWJJbTFBV0JGNis2dU5FbWhjWmFhNDE5MWFhMGlyMnlra1dNU3lHUnZmQjNGREV5Q2hqRFF4Y2RDZUkwR1UxM0dyRVZjMWMxOTFhYXNhKzFLbHhLaW1Zc2YwVU93b1R5Q3ZsUzE4dVN2bU5YekdyNWpVY1RLYUxGdi9GRC94QUFwRVFBQkJBQURDQUlEQVFBQUFBQUFBQUFCQUFJREVRUVNNUkFUSUNFd1FGQlJGRUVpTW1Gdy85b0FDQUVEQVFFL0FmS3ZnY3dYNGVDTE90MjdlV2poZjZpSzhMREx1emFFOForMU5pTDVNMlBnYzBYNEZqV2lQOGhxcEdaRHd3eDd4R04yZXdqaFFpS05jVFJtTko4RmZyejdlTTA0RkdOcEZMSUJvcHkwdS9IZ2lrM2JyUXhFWisxTmlBUlRkcjQ0N3k2TGRQdlRiaDQ4eHYwdDFUOHlNVEdqK0k2OHUyWmlIczVKK0pjNFYwY1BsejA1R05wVDZBc3A3c3pyMlJ2TVpzSVl0djJGTlB2T1E3OWpjN3FUNGkzbjliRzRtUUo4cnBOZkNZYU96bVRZU0NmU2RBeG84TkRMdXl2a3hxZWJlY2hwc2dBc2twOFlJek5SamMzbVI0YkRaUzFOWTF1aXhEdzM4ZmZobU9MVHlYeXBFU1R6UGZVVmxLbzlLSm1kMUtTSWZzelR1UTMzeFpBaTBqaHEwVmhtTkl6SVFnV3BZbUJ2cnQyajc2SmJ3QVZzaWxNZWkrVzMwcEpUSWI3WUN6MDNDOWcxNkkxN0puVWNPYWJyc3BaUWkzMXdzUjE3RnVuVWZ4QnV3dFdSQVVqcjJMWFYxSDdBYVFOOFpOZGtGWHBadmZTZHd0MFdmYVRTSnZzd2FRY0Nzb1ZGYytnVzdRTFR1UTdvRWhaMWZScFpSc0p2dmJLenJPckhGZEl1dndsbFppclArRS8veEFBbkVRQUJBd0lHQWdJREFRQUFBQUFBQUFBQkFBSVJBeElRSUNFd01VQVRVRUZSQkJRaWNQL2FBQWdCQWdFQlB3SDJyYW9kNmVxKzFYQzJGNS9UVkdYaEdrOGZDcDBmbDJEYW9kNkZ4ZGZvbU91R1dvKzFYQzJGNXlnWkU1aVlFcHRXZWV1OFMwcTRxNHFrSEFhNUtqTHhDTko0Vk9rWmwyTFh1aVZlM0dzNjBLLytZUWU1eFE2enFUWEp0RnJUT3pWbTJRcmlteVRBVFJhSXdlMFBFRkg4ZHlwMHJOZSs0MmlVMm9IWUdpd3B0TnJlUFNWbngvS05STnF2SjlOVXAzaGVCNnBVN05UaFZKalJOZVpnb09CNDlOV2tPUmNTcUxTZGZUT2FIRFZlQmlBalFkNlFyZ3BHMDkxclpUSC9BQTdzbDMxbXVLRHB5ekNDck9JTUx5SmxSeFBYY2RrT3lFemc5Z2V2MXltTUROT3NUQTIybkE4Yko0NlQ5eHAwVHVNSlZ4UWQ5NVhJY2RGM080ek1YWUJ5dlJNb2NkRXRuY1pnUktJak9CUFNLbjdWdjF0Tnl1NVZtSUVvQ09tUktMU0ZjcEMwMkE3RW1FM1U5b2dGV0tObVZjY0FJN3NLMVdxRG1pVUJIcElDdENnZjRULy94QUF4RUFBQkFRVUhCQUlCQWdjQUFBQUFBQUFCQUFJUUVTQWhFakF4VUZGaGNTSXlRWUZBa1dBREV5TXpZbktBa0tILzJnQUlBUUVBQmo4Qy93QUNxRDhRUEt0ajhQb29ZQndzZmlHd1Vmdy9sOUIrRzhVZVZiSDRFQVFvWEVkSkloUXdEaFlGZk4vYUNybUVHZ29xQk1FUUptdDZUMXdDamZRMFFQbHdqNXpIYVprZTU3SDNLMHJUT056UXdWVEYxVEZEak1Hak1CdE5hMG1pRkFCMW16WFZSdXZRekQzTVpnejdOMTd1am1ETW81Um1qZE5YVFhPWURpVVRFNjBmRWk0YXVXZWMyOUdZTTZQQlZQS2dvR1ZxNTlITVRLMXhLRVMraFVTb2hSS0hFalZ5M3htSmxhNGxhTjRSY25uTVRLM3hLTjV3RTBkM2hicUZ3enptSmxiNGxob0p4dFdTSVhiVlJSQlpqRlJtWkcyWW1WdmlRSW1kbzdYQTVtT1lqaVZyaVFuUVhCM01rRkI3STJsR1pNOFN0Y1NOWERBOXljWExSMnpKbVU4R1FibTRocFNSb3ZDTXAzT1pIWXY2V1NWZ0Fva2hkd1dJWGhNOUpWWmg5eWpjM1BTY3lhR3lpZWtMQ0ozdUtydGh3dWhyN1hVeTlvK3BRTkE5b3V0dCtjQkpFSTJWQVZ5K0FVV3F0WDJoMldvMVRJMXJJQWlYOGxXMnNGRFNhTEtQM2xzQXE5M3dZaWhVQzlwcmFSaG54aVZ3aVh4a2g1TmN0dG4xOEdHcnE0NnFEVGdOYXl0U01qM0pITEFQaGNQZ1ZaT0tocFI0YzBKT0tQM2F1U05za3RhL0NqcklHb2RRd2thTDRqdGRIU3I5bEc1SjJUUTN5SUJBZkc0VVJnWGt2cXFVUkZyRmQ2cFZXZkp4dWlkVWNpRzN3dUpqczhzYUM0dER1RDhDcWlXQVFaUTR5Sm8vR2hxNW9iT0FVZkJ1U3l5TVYxVkxxcnBvVjFCOXRyRnc0eUk4L0JoS1RJMDFzN2NYRnJ6TFZkcTZXWG5iSXY2U29qNEViZ29idWlGdnA4QWsrRVRrZTJpb2ZWekM2NGthRzZocFI4UXJMWTlycE1iNzlzZThrMGFVUjloUS9VcnV1a3p4Wk5sclZWRExTNm9lbnhsNWthYTl5bUhDc3M0THVLeFZocXU3c1JjUUhjb25KSXNyZlJhSFpSWnJ3b05WV05ubFV2WVMwOXlRQy9iSHN5Tk5KbzdPaXlWWHBNblUwRkQ5UDd5ZUlVUDFLYnU2bVlyb2ErMVNQcFZnVjFBaGQ0bGlxS3NYWWZhdEh6TEErVkF1b3JMT0hrNnFNZ0hueWd4ckpRcnZhKzFWby9lVjBOTkZYcEwrcGtGZHNGaVZSc3IrYzBxdGtxQzZwSU9wZ3NDdlAwc0tPZ1YxZHVxZ0tNcis2UzIzam80bk0ra3JyRUYwbU11OG5jVlZWOHF2M0pIVlV3ZlVJUWFLNy84QWlxMFYwaDFnWW5OcUxHUEs2aEJkTFFkRTRxaXdXQldFdUpVRnMvQjBKSWxGbzUxUnBkVE1WV0lWR2hOZzZMWGwrS3hWYXVnWFJLaWMvbzBWakZWWlZZaGR5b1F0blVXQ3dXaXhLeFZTdjRlT3FpMGZ3YWpSWGVWaXNBdTBMc0M3UXNZS3BqL3BRLy9FQUMwUUFBRURBZ1VEQkFJREFRRUJBQUFBQUFFQUVTRXhVUkFnUVdGeE1GQ0JrYUd4OEVCZ3dkSHg0WUNRLzlvQUNBRUJBQUUvSWY4QXdVVUU1QXF5SWI5TzFUTnhJRVk2L3A3MHBOUW53QVFFQk84VCttQTVCRHB1Rk9GMzZjRXFFTlpuakUwSnkxVVFSK2dpU2lkVzZJTUFhcHd3S1FZczNYUlRCaUtyVk4zK3RBQWhESnowYWRDQlczeDBYcVZDaWNZQkVJZ2hqMVJWQ0pCT2lJQURFZHVxVElZVGkxQ0ZSakRSQWJSZERNSFkxelFOY01SWkFFVGRGRk9XUU9DYm9DcUdQVkJibmZaQktFMk4yd1Z5dEs5QUpPYUYwLzE2Wmg3S0tGYThzclh2aEZvR0QzUkVwam5LdVl0a1ZjeGI0Vk81SVJNMUE5c0JaTVRoRkljSVpvV1Evd0I1aEFKS2svS0pKRW1weUFPRUFlWVhUMnpKMUp4dkVZYURsQnlFdXFBdDhYY0tCdmxDcTlLV3pic1BSQktyd3pYVG5IMHNkd2lIWjhvczdnamRYT1ZqQnBVcHl1em1ZdmREb2l5TGxHNXJsM0RUc09XdHRPYmYwR0ZTb0kzQ0liUDhmbysySXlYN2hwMkF5MU52aXplS1R6aFdoREtFTFNVQTdJeGdBNU9pSUFNUm9jdncvbm8xRFludDNIM3VYNXVWcExjd29WVElBMFZpbk91VUZWd2pLdVU3M0FjbnhPakEzM0k3Z0tGN3ZwSDRpd3hCZklTNjByQUQyeDBBZGNpVDBZRnVBK2U0Q2hlN3kvVjNHV0J1Zkk3QVM2M2tMTGVRc1dTV0twSnRCVGpxQ2RuZ0s1SHVBWHZjdjFkeGxvMkF6MUgwRTR5UkFFa0p5aE9GVTRFZ0RnZk5FV2g5NS9udU5kZkw5WGNaR0J1dHdEbmhaTjljU25JU3dVTjRqbEVsa2ZoTGVuY2FxNGRFNFhCMEJIMFcvd0J5UElYSWdTd3BpSmRRNXpLTHUwQmNvbHlTZGU0MWVWODNKRWwySFFqdFBka3BIa3E0NmRnQmxpTGZ6anVVeldKR1g2cTJTRzZIb1Yvb0dTT3liRVdXNk56YjVCS290UWUzY3BjaGo4T0NxbklLME9SRWNZVWRKWUZBWEJReWVZUzBvZ3dFYzVoZDZnbDRSTGtrNURBM01kZXdmS0RsVjd4c2RVWXA3ak82VDEwU3ZmSjBCQUdBSGxhTUx3WDlZbFhHdUtZK0xzODVZRzJZdzJUWWI4d1FPbnVJRU4veEhHandpckpMWkdKajI0WUM1S1lmNmpyU3dHOGt3UnNselFmNFpPVEZ1UWNhSVBtSTBGMUY2UndyeU9ZWXFzeWFTUGJTQUE1S2VjaXFmd0RTYUpxUERUUkZJV0l4NEF3ZWNoOUlCR2pEQUU1bXB4RG14VEZoUU55NDdheUc1UDRMMWhzR0hEUWhZTHpmRGN4Zlh6aUE1WkFpcVJLSnp0azVJNk9VNjZaQWFWSjJUNVJZZHNzanFnQUFBb1B3YThXT3A3UTJUR3FrY3dwaU0vUVNjR290aUE1QUZTakRnS1FlTWZzYWRIbWtSMlI3T3Z4L0NtRGNmSTBEdlVaUFpPSldDVk1QVFVNbkNFTUJKTmdueWdhQ3c2TGxzbXlIWWpXYWxCQTZEOEhRdkNFQnNuc2xBR3JpMWNIRUFNRGhFWGR4UWJINEt5WG9ncm1CUTJVK3dXNlR3Nmt4dkFkaTlTUHd2UnlDV0RvS3pVeW5CckxGbzJBOUFSZy95WWlrTjRWU0J5TXB3MWlnQ05BZzdFNS9EK0NTd2NvS2pVemtrMTdBTndMRGt4U2FvM1IxVkRoQmdRV0ExRVFCZ0JVMS9HVFdZM3dBSkxBT1ZRdTBXN0k0elgvQlNhL0x3Q0JoVjR3NGd6QVRCTjdvU0dTRFBsQXNBSTNSUjRjRlVvQnZqNlBkaU0wZHhEUlhCL0FtZUl5UEJUUU1EUW9HQnVvSzk4QVk4aFJ1Tlg0QWRCQTZNZHFTL1k0bE90SHROMFFNUUdSVVpTaGhVd2dHRFpEQU5KWlNTcFV4SEVNVUVPTmlIT0hyTlYzN0lJeElkWFJ5WWdJaUJsbFVIY1p6dndhR2dJb2R5ZGxERU5zVW5RSUdRbGc1UVZHc3Nqd1VBV3VRNDlSZ2d1Y0ttNVdsN2lBeTRKK1Zid3dFZFJlVUNESUw1NnlEOWtRaEhKN0lIR1loUm1OYVNiYnlIcU1hMUlpejV3VlYzRUJBT1RqYm9SRjBBQUFCa2llWnlpVGdnRml5REFKVFFla2cxeU9XSVplaDdEMDROQ2hUSHNsQWdoeE9OTUd5SVlHM0lrazVMbnN3MFVnalVKc21laEFnaHdYQ0F4YmtDcld5RTV3SGMxRCthR1JIc2txa2VTRUFCd1FjYUlaSHJUaGJtTEZNMEJ5RnplaUpxTUYwZk1KRlcyUW1CSlRTajNJdDhadmd3UEkyUldqS2oyV3VJRGxoVmVWWEpNaFZKemtxd09DdjlLcW8rZTFqUHJGRkMrWlJBdlREM29BdjRvS09pTk5Gd3ZHSHZ4ekJUTk1hbENsRGZUSUlEUTFLMFc1MkZiZ2VNQUtJRDlSNHcxVTZHeU1DVU5DZFo3RitVSlRxWHRpQVNXQWNveEFPeXhVVnQ2RGp1ZGZXc2FJK09jRUxjT1V5aVNvbVU0V0k0VDBFUWR4NUtmSmlPak1JQ0RUQWxxcXA5Z211ckxJRTFsUXA4WU54Q0RrQUFHQ2FvV3U0aFVGQnZoSmwvWWQyQkU1RUhaVlpsSzRlOVZFZVV3VFZ3ak56WXBtdnBUMVdmV1VESnhDNEJ0Z2JEY1lZWkllUzlYVlRnY0xJRUVPQ2lBYWdIQkNrQVZVb2FaRGZ4aTZLVEo3elJGSEo1bEFVT0MrUUtyMjg0TklxYVlRSGxkTUZDRHluL3dCMENIWUR5bnZtYllFQ1hFSFpNUDhBY0pySG9tR29rbnF1ZktucWJvRUdoVDdlQmRhTzlCYnY5TkhsR25JY2d0TitDanFFYUpIS3FpOHJVMGU1VlZxTVdLdSs5YjFTc25rTDZRaVFPQWJsT1FCMFQ4SDlHb0E4cWhJQU5CNUNHc1JEL3RML0FHRWRFUzAxd0NOT2JsLzhVUC9hQUF3REFRQUNBQU1BQUFBUUNDUy8vRFI5OXRCQkJCUjErKysrKysrKys4eEJCQkJGOTk1RFgvNkNDQ0MyL3ZEVjk5dEJCSkJCUng4ODg4ODV4QkJCQkJGOTk5Qkgvd0Q0Z3FnZ2t2OEE4c0hYMzIxR3FrSUVFRUVFRUVFRUVFRUVYMzMyRVA4QS93Q2dndmlnZ2x2L0FNc0hYMzJ6RDZJa0VFRUVFRUVFRUVGMzMzMkVOLzhBNkNDQyt1Q0NDMi8vQUNvc2ZmZlZuWXNDQVFRUVFSelRmZmZlWVEzL0FQNklJSWI3NjRJSUxiKzdkM3JYMWEvSGswM2drMDNzTXpUM0VFZC8vd0NpQ0NHKzIrK0tDQ0MyL08vaEJWMjk5ZTk5T0tmOS93QmorZ1F6L3dEL0FPaUNDQ2UrUysrK0tDQ0N5LzhBMVQxZ2dZczh2alBmdWNZVWloMy9BUDhBNkNDQ0NlKytDUysrK0tDQ0NTMlYvcVBMSmFoZENCcUREREwvQVA4QS93RHlDQ0NDZSsrNkxDUysrK09DQ0NDNzJ2OEEvd0Qxcjk4NTJaci9BUHAvL3dBZ2dnZ2h2dnZ1Z3JRd2t2dnZyaWdraVFsOHVudi9BT24rVTN2L0FQdHlDQ0NDQ08rKys2Q0Q5dExDUzIrKytPQ3BDVkNCQ3l5aHlsYUhpQ0JDQ0NDR2UrKyt5Q0RmOTk5TERDMisrKytsQ2NKVENDQ3hDQkNwQ1FKQ0NHZSsrKytpQ0RmOVI5OTlMRENTMis2MlA4ODhmN0loQ1pDdktQTVArKysrK3lDQ0hkOTlCUjk5OXZEQ0N5MTg4ODg4ODg1QU90SzQrUDNqKysreUNDRFA5OTl4QkJCMTk5OVBEVTg4ODg4ODg4ajhQOXByMVY0OTZ5Q0RCSGY5OTloQnRCQkJSOTk5OWw4ODg4ODg4OG44bldwOGZ2ZkNCQ0RUVjk5OTVCQkI5dEJCQkJ4OTkzODg4ODg4ODcwOFhFeS84ODgwTXJ6K2Q5NWhCQkJOODk5SkJCQkJ4ZS84ODg4ODh2OEFPL0p3RnVQUFBQUFBPT1lRUVFSWGZkUFBmYlNRUVFRNmQvOEF6OS8zL3dBLzhzZDVGZFpiejh3d0JCQkJOOTk4QVE4ODk5dEpCQlJqRkhFeVVuUUd6Z2RwOWhXeGh3QkJCQk45OTk4NEFBQTA4ODk5dE5CQmcxOHZybzUvajBQZnZmb0JCQkJGTjk5OTg0Z0FPQUFBUTA4ODk5OU5OQkJCREowQUFUQVEvUkJCRk45OTk5ODh3QUFBK3VJQUFBUXc4ODk5OTk5Tk5OTk5PY3VldE45OTk5OTg4NHdBQUFBTysrK3VLQUFBQXcwODg4OTk5OTk5OTk5OTk5OTg4ODh3Z0FBQUFPKytDMisrK3VLQUFBQUFRdzA4ODg4ODg4ODg4ODh3d0FBQUFBQU8rKysrQ0NTMisrK3VPQ0FBQUFBQUFBQVF3d0FBQUFBQUFBQUFHZSsrKyt5Qy84UUFKaEVCQUFJQ0FnRURCQU1CQUFBQUFBQUFBUUFSSVRFUVFVQWdVV0V3VUhHUmNJSFJvZi9hQUFnQkF3RUJQeEQ3cjNCNy9IMmV5bzVLaUZPbURyWnZyRVJJL1pVN3c3aHQ0Zm1FTHZ5ekt6dVQzK1BzSlJzdCtxbUZHeHllanFLbW5KVUIxbVdkdHZ0b2pzdG5xclQzR3V1aCsvSEJ6UWt3WmlVT2pWWExkL2IvQUhsaiswN2hONGZtWEQvTE44TXgyS3ovQUxNZ0UxTmNFd2FhTU1RNG1iaFRmdjhBdUVFYWVNUlJzK1oxWVI1ZDh2dHdGUXdsUkFVMUgxNHpMcXRYeW1XWkk0cW9qdnlIZkJ2a2pnZTRmVFB1T0FhdS93QXpIUEVmUWJqNUR2ZzN6MUVJdW5YOVFBWEs0MXNvcmZkeEthNGZRYjhsM3diNVl0MnhneGEvOGxvMG83akFMb1pvcld6L0FDRldnNVBKZDhHK1hmSnZnRGF5V1MwcENrRnUzUFhrdStEZkJ2MEhGdWRUQlZuNmlxbHJ6MTVMS3VGMnA4RW82OUhYQngxd0F2VUFLV1AyZVRoZ0ExNkVIY1Uxd0R4MXdKQVNnMFFUMkZqbVdFcUxzSHNlNzhldkw2REw4a1NvOFVMNFNYVDJoVmxYTGcxMGVOaVBvdkE1UnpEWUlsa1JHbWRjUG9OZ2pqd1JpL29uREtPVWgzUGdsSmZDdVJiYzNlQ0tIMEdIQjd6ckJxbURaWjZBRytCZFFVQVVUTmVEb01HOWV2dmg0NlJqd09ucm9YNFNCekJtWENtQkJIWENYQXFMVU9PK05PWEdKY1Rtdzl4QkhYQTdSMTRhYVRBTVcxS2RNdnVRWDJsNWxlMFdvRlN5Yll3NGhqaEZGZ09iZkgwa0IzQU9vKzAxTVFxNWtpc0ptSTdKOEV3RXVYNW9XbUM3bElQQkhUS3ZNL1BGZkVleU45aldrK2FmSkZ1LzRKLy94QUFtRVFFQUFnSUNBZ0lDQVFVQUFBQUFBQUFCQUJFaE1SQkJRRkVnWVRCUWtYQnhnYkhCLzlvQUNBRUNBUUUvRVAyclZhOWZmNmZES3czRFBiZy9XRCtZSWxuNlVhZTRwRERSL2lZQ05Wci9BTCtoY2hWVXkybjRkeXVXWVlaN2NQVnFBQTcrVjE2UXFCcGY0OGRBSHFCdDNtV09aUWVaQWlVMURVT1M1YlBVeEN0WHpoRXczRzloTU5XK3ZVU2d1L0djdlRPOEljbXVUM3hYMlNCaUR1SDJpVnRycmxCWXdrdldiWWE4ZzF3NjVZYitreEduMXc1ZFZNeU13K0RxSGtHdUhYUGNJV05rQkJESk1EeSt2cURad2ZCMTVKcmg1SUgyRVFkVDdSRFVJQlZiQ2UzM0g2Vjh2a211SGsxeTY0YkM4T1pzR0tqY0hQZmttdUhYRHI0UEZBRjhBVTBjOStTVFVhdHo3SlozOE8rSGp2aTRFVmFxZjkrVWxYZndGTlFMY0NEanZoQVZpVXRqenExRnRZeVFybGZmajM0UHdFcnd3Ymh4WXJnd0hjYmNKREtlZkJ4VGlFZEtEVEJFc25mQjhIVm9OK0NzMStGNXM1UWpVK3lXdGZFNkttcndWbCtBNVoyaVhaRXBwK0NKWENtNGlJclpxOEhjSWxiK2ZYQngyaERoTnZuWXJ3Z3BpVmNHTnNxSW0rQnFMY0M0OGRjYmNtY3lvREFqNk1STjhMcERIaGh0TWdRUnVXN0pYVmlIdVZpWERNY3ltYWhKbU9lQUVHUjVvOGZhUlhVVWJoN201bU4xTVFDTXhCZE0reVpXVks4MUR1SjZsNGxFVFpMcWYyNHY3aDBRL3dCR29aOVUraUJkZjBKLy84UUFMUkFCQUFFQ0JBUUdBd0VCQVFFQkFBQUFBUkVBSVRGQlVXRVFJSEdCTUZDUm9iSEIwZUh3UUdEeGdKRC8yZ0FJQVFFQUFUOFEvd0RncklkS1U3UlArT0NCTktPWnMraEZXYUFnVE9jNmk2RlFuL0dRSlMrSnNKZzBabWlVTHpRQjJ6b2lYUEZwSVkvNHVZMzVGR0Q5dlNtY0FsTUdCL3hZeGhScUtoVXVGYUxYdExIdlBweE9BNHhsVHFJMi93Q0JGaWlCSURoSmo0TDNFb0NnZVlYUUxjREVtbkFOMm1nTWt6S1M0S1VZbmpwR1BtQW02b1pCeHRha2RaeExVOEM4TUY3d3Q3eHhnUk5XQUkyVEJxNGtZaG5VVVhvSmNsTkFrWitMZUtaZlJJN2U5SUZ4QStYWU5BR1NtZ0JqTUZaSzVBb083Q3lvY0ppQm56YjVFNll2d2NaQ09TMFVQVjBPOVlpRGdHUnB5TFlGaTdCaFNqd0pCbWkybU9Oc3FtU0N4dTBtUWNYS25oZUVwVDVZb0R5VEY2TU5uZGkzNWptNm9OM1FQbHhtaFprMURlbHRoVHlJdTY2TzNLV0tEQ0U2WG42b0g1cFF3SDVyQUhQV1FyZThDaHJlOENsNFFpc0VFcGlzNFNIVjhzWGNVSm5GYjFUV01LMzRnOTJmcm02QXZxZmx6RWZKV2E1Q25LbEpYa0RjcU9sUWhNQnBTczVZWkVkS2lnWEZkT0NpUmJpRHZ5NWJ4V01ha1RWdWtIdDh3YlROM3NCKytVU0RWcFdjbDlOdnJtdCszcURnZW5Lc3VTSTNhOW05eDVoR0RXOVNyaTBZMWhOUjZDUHJ6RHVNdTY4dXlZOTYzMUgzNVR3SjlBcFc4MDl1WTFjQkdWS3JMVjRhSjllRHNHRmIzcjNmTUxYK3djdmVIc3Z6TFZYc1l2QXpLajdaazRrZGFSWDU3OXVYdjRKR1hBUjZETkpSWXJQbUdMb0h0eTQzVWUvbXRCcTlTN3dVUzBwTVJCUnhCWURKbWtwS2dCZHBRV0tDNXkyTHFEMmVEYityamozanpIRDZRNWNhMCtPUHZsa3pDWmVoZXBFekdzS29UT2RPNzdrU0ZPSHZtMDQwUEpOUUJ1a1FVUUJtUjJrbmtzWFZIdjRQUXNEcWg4VDVoN3c1dXRYUmU2SDN5NzNPNmVKRGZpc0V0U0pxeGZyNVByaTRoRTRCVGRCaXNSbEQ0TzRqdWdKK3ZNUGVIaDlCdlZIMnNjUlRDanFWUFNreFVobUplcG9qTUVIU2VLRnRrZFlwM0poc2xPd1hFYUdwRVllYmZqZlN3ZkQ1Z29SMG93ZmdvQWxncHdmRDdqNzU3TW5MMEg2Y1FCR29JQ1NOTnZDM0diVXR3b3EwUXRpeTVVNjQyUW5mbTZ4M3FmTVQwZyszZ3diMWl0N2hPZnJjSFZCOEx4Z3V6NUxoVmovb2psQ0FKVmdva3hraTlMRDQ4eHYxRDl1VzhjMS9JOG5XWU9zVzhDN1prZGdyOE9SQ0x5Z3FZMHlFbWNVNVZJcjEwTjdqUEtFRlBZUmQ5aW12aFV2bU4rcGo2TWN0OE5mam42NU91dytzL1hnZCsxMVg0RGtCUHdDK3hOS3BYRnZ4cy9tRGw2c2c2bytDK1pmd2h4KytXOGRmbnYxeVdUOUFSOTg0S2dFclRJVElROWtmWEo2ZCtxeDhUeDNUTmIvTGtDb0trbUNPallQMm5wNWxaZEgxRWZYSEFnMUxQV3Y3QStrMXB3NUp4UjkxL3dDYTBISDlWUHF2NFZldGFSOWxpdTFTSXVnam1CWWxYb0NYNHBuRXF5dkp2QnV3SSsrSUl2Qmw2VXFxdUx5UEdZcUJRM29TL3dBYWxZRVJoSEVmTWU3VTZpZnVqQzZaRjNvVU1JQzN2YkNnQWdJT2VLRTBFMVBMckg0TFU5MlhaK3o4Vk1JT3E5UngzbERxTDhEeTJMbG5xM2ZuajBmNzd3aXB4WXpYZDRTSWRLaW9YRVNpSklseWJyUnBnWU1TNEZpOVIxa2xORktnUkdFY1I4dVlxNkFLQmhROXZGSkpEaFFiTDhpRHVZVkxkNkozMHJkakhUQjhQcnlUdFlSTG9WdnZKeHg5ZlpDb082TDJiOFZlcTNadm53VWRmQ1V3NFBaSVF5U0pTTnpncTEvYStXcGdWQUdkQ1NCOURZL3dJRTRCZWhnNXhiSTAycGMrT0hqL0FPMml6NG5rdVpKSm9MU0xpczRhQlNxcFdlQXd5VmhLQXlkK01DREd0NXZRR0I2eStubG9iZURrYS80Vkp6QjJaKzAwV0lxTjhCYXhQMVVOUnlHQTFPRytFdWhZNGtBWXJGRmdXRXUyRktCaWNuZDgzdlk5ajNvTEJhVnBLcUQwUXV0VzNnc2FBV0QwOHNhQXh5OUNqTGdJRC9DMnpLVHUvd0I3OFZBeGl6MVQyRUlHKzVRTEVpRHRaOTU0eXlTL3BjSHg0djhBUEZqVXBBVWgyU09nSSt1TDBQYkw5dng0SVFGenJCaFNRbzVlUnhndlc2UDhPRjJybHg5Qmw3Y2dMa3RCbWhZcG1XY2M1NGs2TU9CQkljR2xTS3lqTGJnSWx3UmRURDNpa291S3p3RUVnYkl4YWVJeU5Bc0hnOUY3MWYxVVprQ1IwOGliRlJGRUJZai9BQXZEeGNPLzZvQURBSTVDNjVRZDM5Zk5GWmx0R1RueFY0dGI3Y1U1RXhFbW5DTTVLU3JBREJZV0M4ZkhwVEZpZHpTWXl5TE5NYUxJYzhqdXg5UENVVmUzMEtreGd6MjhpazZTQi94ZlJQZDVBUldBbHBnWWpMditxT0J1aCsvYmlNemRBM2NmazhBcUFVMnk2Y1RwTTFGWHVQaHlsWkx3VmhLa1VBaG1KOVh5TG9jUHQvaEJzQUphWXpqTGt0Rm9QUXUvMi9DZU1oN2NOQmtUUlMwS1hSdzhHLzhBTUFaRGYwbzBtcTRIUW9CQUEwS2loTkVtaVhwNWlwRS9Sa2UvQUVwTUFwaVFrWE1uNTRJU01oOHZrUkdhdWY0YnBacGVoeTdBL2EvdHVCa1c4cWtoUnhLN0FuVnRRb2lXU2dOdHdOVFh3QVNHSXRoLzd5dVhySVRVc2RCQXBpZGlKZU1hR3dQU1g4aXZOVXQwM29HcHBFL3dYbGcrZ2NrV2t1QWF1VlhObEM3cTU4THkycllKbnZXLzFmUXNmZkNJdGtaSnBRcFlKY2JuK0Jmb1FxZG1WTHlPN3N6Y3c3YVZERnJXSjRQclBNNjhxQnhtSDNSR01BamsycVQ2NWZmSW9FdW9PN1Jxd0VIYkgzbmlZV2VDTVZQSXV3MjFLc0IySU56dDR3d1hHS2V4NUl0Vk80eEdWcXU4YVRIT3BsUlIvRUVtZGJ0S1RjN2M3azR4bURScTNjMHBVMUpMVVgzZU44L3d5OGhPa0FTMHdqaHBiYmVuSkFyNTZJUGVsVXF5dDNrRUszSzRFM1hzZk5IRlNTTm5XNmFWR1FnMGxVSnZVWFVKejVGaVJycndkaGpjRkF3QnFNODZGd2xqNU5KZ1JLdWZrbnloVnMxT1VBWHNUcHRVL2ZkcWVwblUxbTRGZ2R2eFVDUkxJWU8vNXFJRzBiRDF3bzRCTUZTUGdHRW9YRTZHdFlUQVc1TFR3ZlJQM3lzRFJNeHNjazVaZTI3VU02YmtPWFRrWlFzUjZ0MzQ5NnVCQ0k2bXg3dFM2dEVVaG1yOVFvQUhNV0I2TkFFQTRJOFNsZE5VdnBqUUs4dG83OWluTGtaVmJ2a3lOV2tTaVlPQ0hGMTBvRUpMaU1qVUlTMlFuZkdueWxkYzlTbTVRemlQV1B1bzBSTWJqMUtnUmZXQStxaUlpNVA3VkZHYWpQRlFLc0JqVWdPZ09WUGtHdzZOUjRydWZKYXRGV3duNm9KWTdHMUhiSDRxY1k4VGt5N2NnNGFDYVpTZ3IxTkVjMjZBMTRSSUFMb3dEVmFOdlcyUVpiRlBpWlR4UUFWTUFaMUxoZDZqK2loY2V3akQzK09SV2V2aFFKQi9adlE4SDZJK1Z3U2JOZC9Tbzk1Y3NibzBBRkNPWnc5WklWcTZpV3JsTjk2UitxSkorcGQ4MWdqYURmNVdvam9hUDFSVWNDNWZGSkV0QWNYNG9SSkdlQ2hkcDBsUzFnR25la0dDQ1lSUmttdFhPalVER2VwOXl0SVhSZmlvVWd4Y1liVUlnakk0VkN1Qmc0cWhsRjdHWFlOYXc3ejFMVloxMEJEb3g5K0pwU1dBSldoWWYyTHZTZ1ZZQzZ0SUs0K3l3L1Bmek5FaGRWNktoVUxybnBqVUxkczNPVklUa0I4MFlsek4xY1ZwQklibE04bGU5UGF1azl2eFN4eENXOGVsQW9KeEdoa1VZa3lmeW9DVUp0d0FLb0RPb2pGbGJvd3FTdzk1MFUzQURRMmFsR0lsQ1BYNWUxRHlRRUNCVE1RNHovclNsaDJINVVYMXh1K3ZBTUZHRCtMK2JGU3JCVU5RSVI1Qy9yVVNQYWxsRVRzSmRSeVlyWUROcEVwT0p0dFNDbVdKazFnR2QzTmYrUlVtS2RDa1VZdlFMVGtUUmlNSEZaY0Vza21xajRxZVI5ejhVcmwzU1lGSXRLZUk5eFVhU2JVZkJHNU5iUTZVbEluV0wwcGJUUy9ya1lxK0dZdEtrZ1BQVGJ6a1ZTS0ptVWJUaXdmbXFLQ3RWRFVHVE5rL0ZFblFLQ0pJaWJWaEtiUTNxd1RLM1hWcElXUVlDeVZrVjJRMUhpSHBSYWptS3lxRVNZaFoyY0xrTlpSV1dDVVNaTzkxWXpXQ3hIU2tFSWpDY0ZTTllSWVlodlFzZ20xSWIvSnhvblNCaDREejlXYTREWWhGUUxPM285eDRuNHJEZHRaUTg5RUZDUm1YdC9HQlNBUkpIS3NvL3dBc2FpeGV3clE3eUZhSUdxeTBSdUZtWng3VlBaY2JVUW1jMXUwd2pvckg3cE14ODMvaFJSa1VkcXlNdEZXUkRSdnd2QlBnb29PSzkxZit5cHhjdXEwWWdTcWVPM1QvQVBpaC85az0iKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRRUFTQUJJQUFELzJ3QkRBQTRLQ3d3TENRNE1Dd3dRRHc0UkZTTVhGUk1URlNzZklSb2pNeTAyTlRJdE1UQTRQMUZGT0R4TlBUQXhSbUJIVFZSV1cxeGJOMFJqYW1OWWFsRlpXMWYvMndCREFROFFFQlVTRlNrWEZ5bFhPakU2VjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZi93Z0FSQ0FHdUFvQURBU0lBQWhFQkF4RUIvOFFBR2dBQkFBTUJBUUVBQUFBQUFBQUFBQUFBQUFFQ0F3VUVCdi9FQUJrQkFRRUJBUUVCQUFBQUFBQUFBQUFBQUFBQkF3SUVCZi9hQUF3REFRQUNFQU1RQUFBQndHL25BQUJBSkFGQUFKZ1NBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQkNKZ0FCUUFBQUFBUk1DUUJRQUNZRWdBTnNzdDRHdUFBQUFBQUFBQUFBQUFBQUFnQUFBQUVRQUFDZ1JNU0FBQUFnRW9rQ2dBQUV3Skw0K2pyMDhPbmw5dmlYOUcySGtIcDhRV0FBQUFBQUFBQUFBQUNBQUFBQUlnQUFLQUJBSlJJQUFBQ0FTaVFLQUFBWG96MjBWbngvUm0yZW12bnpnOVhoTmM4OW9HdUFBQUFBQUFBQUFDQUFBQUFDRUFBQ2dBQVFCTUNRQUFBQWdFb2xWNCtpOC9yK2JlbnpiZWNPOHdBTFhuR1dVWHoyNjduNitUM2VGZjA2NWVNZXJ3aGVRQUFBQTU2UGQ0ODlxb2JlY0FBQUFBSVFBQUtBQUFJQUFFd0pBQUFBQ0xWbm5TL1M1ejUvMWQ2NUZuTFhMMi9ORGJ6Z2JZN1l5cjBjYWFLejQvb3piUFhYRE9zUFg0SlFMMTZ1dms5L0ZKOUhraER2T1VCTWFZZW50NDh4NWZiVGJLZXBrMHo5M3pBdklBQWlKZ0FBVUFBQVFBQUFBU2lRQUFBQUV0Yk5sNk5LMVM3WmE1YmVjTEFOY3RjcFFzQTJ5MXhsQ3hhdHN0OS9aem5oK205UG1nVTF5K2g4Z08rRnF1Tk5GSGw5MTZRMjgydVd1VzNuQ3dJSUFBQUtBQUFBZ0FBQUFBSlJJQUFBQUNBYlk3WXJLQ1RlbXEwcUFXTk05cGM2cmM5VmVyemM5d05NclRSbDZMVk9zOWN0Y3U4d3NBQVRHc3NaZ0lTWUFBQUZBQUFBUUFBQUFBQUFFb2tBQUFBQTJ4MnhBUnRqc3VTQ1NpUnRTRnJhdW5uOWYwZkh6eng5R2E3cm5GZW5zK2NGbXVXdVVvSUFBMXgyWEVJQUFBQ2dBQUFJQUFBQWlRQUFBQUNVQ1FBQUppUytlbVlBMngxTWdnRzJPMkt6Zk9jOXRGSGw5dDgwK2p5YVpYejI4ODJwNzh0L05sOUY4L0xXTFJwbEE2ekFiWTdMaUVBQlFBQUFCQUFBQUFCRXdKQUFBQUFBbUJLSkFBTmN0Y2dCcmxxWkFHaGJHMVFFQWJZN0xpRXRwbmZ4L1M2WE9oajZQUjVsdHZOaVBaODRCdGpxdVFBQUFBQUNBQUFBQUFCQUV3SlJJQUFBQUFCS0JJTmN0Y2dCcmxxWkFiWTdHSUFBRzJPeGlCZW1zNlZveTNuWEhYWHo1Q3dEWFBYRUFBQUFFRXdBQUFBQUFDQUFBQWxFZ0FBQUFBQUcyV3VKSm9aNjcraWRjdDBvVG5hK2lEeHBpd0FCcXpJQTJ4Mk1RV20yUUFMODZYeDYvSzQ3cU5jQUJCTUFBQUFBQUFBZ0FBQUFBSlJJQUFBQUFMR20vUjkyZW5sOVJ4MkNnQVI1dlVUaytENlYxejhvNy9LMDR5eTJ4dklEV3NGUWE1YSt5WER5Kzd3azNwcDVmZDlGeGZPejJuUGVuZVdBOW56d0FBQUFBQUJCTUFBQUFBQUFBbUJJQUFBSjcvbjZtZWdjYUFBQUFBQUltaWVIai9VNGQ4L050TXRNdHN0Y1NVU2UzdDBqTGI1eXByak91TzJlcGs4L3J2ZWtlanlVR21RQUFBQUFCQUFBQUFBQUFBQUFBbEFrRGZEdHpyb1NZN0FBQUFBQUFLWG9sd3VQejMwL2s2NDRlUnJrOVhsNnN2WHgyWTdmSnZiNHQ4SjBuRUdoYkc5QUFBQnZoMHBlYTJ4c0VFd0FBQUFBRVRBa0FBQUFBQUFGdnFlRDlCbm9IR2dBQUFBQUFGTDB1Z0twZWljVHcvUWZQNjVPM3hPNGRBWmJSNGZlVG5VNml6aCtiNlh3OWM4RWFabDRLZ0FkdmpmVDhkOFB3OUxtOWNoWUFBQUFBQkFFd0pBQUFBQUFCMXV2enVqanNFNkFBQUFBQVJORVhGQXBlbDB6K1grcitVMDR2NnNNZXVQckhqOW1Pd0tBQjg5MC9aYnJsRXVldWZ5UHA0NjQrVG42SFhybng5SXowNG5OOW5qMnhDd0FBQUFBZ0FvSUJLSkFBQUFBUFozL2xQVHgzOUl3M3owQlFBQlVzQUJSWkpDcTJvazJGajViNnI1anZPY2RjdE9OTy93RE9UemZxM0o2V2V1Z2xBQUFBQVV2eWJPVlUyd0FBQUFFRXdBQUtBQ0FKZ1NpUUFBQjB1YnBMNlBSMEs4ZDdhOEdaZTY4WHM1NmtLODNwSjR2VG9CbU5Ja0JZckdpQXJpZHZsOWM4ZURYRVhOcTYrT1hTdFZuWTZ2RzZlV3VrL0o3V2ZUdkY3ZU93VXk1bG5yNENOY2d2SUFBQkFBQUJRQUFBQVFCTUNVU0FBVzYvR1MvV1ovUDlmUFREeC9RamhldjMrWTAzNTlWNmJ4ZWptNjVsSnVpa2FZMUc3T05GQmJPdTlmTVkvVGNiVEx5K2pHMW1WU3hMc3krdng5VDVuUFRBYTVMVkdzWmxCQUFBQ0FBQUFDZ0FBQUFBQUFnQ1lFb0VnQTI2ZkdUcjZuVDVQMThkZlF1YjdlZTlhVEVMMEFWQ21xVnZOSmJxVUxGNmkwVmpERDMxczV0K21NZG1Ndms0ZDZiWkJlUUFBQkJLQUFBQUNnQUFFSWtVQUFBQUFBQ0FBU2dTZ1NBRGYyY3hMM3ZWOHU1Nit0cjh4NkplKzVPODY5ekhhV0syMEZDQXBFaXVsT2FuUStlcFRUTU91UUJCS0FBQUFBQ2dBQUFBUUlUQWxFMEFBQUFBQUFDQUFBQVNnU2dTZ1NnU2dhYStaTDdyODR2VW5sSTZtSGlGNnc2NWxBQUFBQUFCUUFBQUFBQUNFQUFBSmdTaVFLQUFBQUFBQUFCQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFoQUFBQUFBQUNZRW9rQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFQUFBQUFBQUFBQUFKZ1NnU0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBRVJNQUFBQUFBQi8veEFBdEVBQUNBUUlFQmdFRUF3QURBQUFBQUFBQkFnTUFFUVFRRWlBaE1ERXlNMUFVRXlKQVlDTkJRMEtBa1AvYUFBZ0JBUUFCQlFML0FLRktqTVAwL0NlUEZSaTM2ZEhJWXpKTTBncVVSL3FDOFNUYy9wZDZ2a2VFZVFRc1AwSzNKSEV5SDdzc0oyWW1NYWYwQVZvVm81bzlEYjQrN09PUXhtU2RuRlNHUFR6aGgyWkdVcWZXaktQRWFWbWY2alJJR1p4WnRvOGVRMktMMHh1YzdjckR0ZVBGZ1d0VWtSajlpdkU3VzhlZDZ2azMyalpoS25oQkhJQklva25KbUpwaGIxdDhyMHZadGs2N1VycnRqY3hzK0p1dGExK2tSeXBPNzEvK1cyVHliVzRMc0czL0FDNU1uazllM1pzVGk1NG5ZZ3V6RzdiYjFlcjVEeDhnY1MvZjY5OXNmazJqZ2xDbWhjRGVPemtSK1QyRW5kc2o3dHI4TWhTbTY0bEFyaGIweWxUc1hzNUVmZDdDVHliRTJvTHN4dWNrbGRLWml4VWxXZHl6TUxiQjQrUW5UMS85eWQreE9teGVDNzVPL0lDOWRFNUE4WHIvQU81Ty9ZblRZZUVlZDZ2a0JjdWJ2bGhmTEpFcmhoWTIzbngrd2s4bXhPbXlUcnVpOG1RcFRwUHl1QjRtT1FJcDZiWDlqSjM3RTZab0x1eHUyNU9tUTJueDdaUEo3Q1Ryc1RwbkgxMy9BT1dZNm5nYjVQMDJSK1QyTDlOaWJCNDk3ZHVjZmZuSjNiRTlrZkhzajY1bnhiNU8vTmUzSmVMTjNiT2tmc1I0c2xSbW9ZYVUwbUZZSDRqVjhSNk9GbHA0cEFDQ04wZmZzNlJaUjkyeGFmRGNDTGV4VHBIaDNla2dqVGtXdlRRUnRUWVNuaWRNMTRMc2t6VHRyNmVtT2hRNEZIRHJpTEdWVUxVUmIxd0JZd1ljSnpwTU9qMUpBOGRIaEhtZ3V6RzdaZjVZYUhWV0tlOGxEWWpsRDNldEF1WUlSR1B3Sk1QclZnVk9TY0Jta2VzOEZWamM1ZjFrVFIrMlAxbUVpL0JicFVzU3lDUkRHMUhoSG5HbWxaK0VPYmNFcTlJTlRNZFRlcmhUNmtuVDhIL2xsTEdKRlpDcnlkMldIWFZMVW92Rm5KMzVkc2ZJaVRXM284SWxrL0JYWk1nT3pCRGpsaUlpalZIM1pJTlRNZFRjakJENzVScGw5Q0JjcU5LL2dOMDJkV3hVZWlUTEJqK1BJaTlOaFl6UXdvQStHS2ZDdUtQMkx5Y0d0bzhXUDV2UTRWYnpmZzlXMkwweFM2b2NzTWVSaUlkYTVhV05GU05vR29vdWxNYjVmUTRJZmhMMHpiS1RqSFNDN1F5V241RXNaK3ZGaDFUSzE2a3dxdFR4c2h5dzBHbkxHK1QwT0Q4ZjREYlJ4YWowcE9BckR5L1VUZnBHcllRRFJ3OFJwWWtUUEZHODNvWUp2cHNDQ09lT0p6SnNBTERKdTQ4STZSeWpSU3JJT2V4MHFUYytpaW1hTXh5cklPUmNYMk50NnRuSVA1Wk83SUVndzRra3E2dnpzWko2U0NLT1ZIaGtpcVBGa1VqcSsrU1BWUStRS1hWbU9KMkwwemxYVGlOa1lObU5ocWFybXNOTXpOVnh5SjV4R0NibjBhTVVhS1ZaUkpoMGVtdzhrZEppcEZwTVRHMWRlUXhzTmg0blppNzZjd0N4a09oYzhFdjNUTnBpcEpHak1lSlI5alNJbFM0dXV2cGdTREZpZ2NualI2ZkIxOU9hS2x4VWdwY1lsQ2VKcXZmWU9OV0lyVldvVmMwT0d3MXAxSkloamFsVXNWdGNtNXpnVDZjZU5iN2N3U0srckpSZHo2dU9aNDZqeEtObVVWcU9HaU5mRFN2aUNoQ3dvS1JSKzZyMjJGZ1RWaUsxVnFGTVRsTEdzaXRoMlFzM0R0anp3K0gwNVRQOVNUMlNTdWxKaXhTdXJiV05xWHBXa1ZhckNnT0Y3YkY0MXhGYWhrOFVScHNNclY4T2hnMXBJa1RMRnk2VjlyZTFKaVpGcGNXaHBaRWFpYlVCVnF1YXZWelIxRWczeTBpclVSWGJucEZXQW9jRG5KSUkxZGk3ZTVXV1JhWEdOUzR1TTBKRWJJbTFBV0JGNis2dU5FbWhjWmFhNDE5MWFhMGlyMnlra1dNU3lHUnZmQjNGREV5Q2hqRFF4Y2RDZUkwR1UxM0dyRVZjMWMxOTFhYXNhKzFLbHhLaW1Zc2YwVU93b1R5Q3ZsUzE4dVN2bU5YekdyNWpVY1RLYUxGdi9GRC94QUFwRVFBQkJBQURDQUlEQVFBQUFBQUFBQUFCQUFJREVRUVNNUkFUSUNFd1FGQlJGRUVpTW1Gdy85b0FDQUVEQVFFL0FmS3ZnY3dYNGVDTE90MjdlV2poZjZpSzhMREx1emFFOForMU5pTDVNMlBnYzBYNEZqV2lQOGhxcEdaRHd3eDd4R04yZXdqaFFpS05jVFJtTko4RmZyejdlTTA0RkdOcEZMSUJvcHkwdS9IZ2lrM2JyUXhFWisxTmlBUlRkcjQ0N3k2TGRQdlRiaDQ4eHYwdDFUOHlNVEdqK0k2OHUyWmlIczVKK0pjNFYwY1BsejA1R05wVDZBc3A3c3pyMlJ2TVpzSVl0djJGTlB2T1E3OWpjN3FUNGkzbjliRzRtUUo4cnBOZkNZYU96bVRZU0NmU2RBeG84TkRMdXl2a3hxZWJlY2hwc2dBc2twOFlJek5SamMzbVI0YkRaUzFOWTF1aXhEdzM4ZmZobU9MVHlYeXBFU1R6UGZVVmxLbzlLSm1kMUtTSWZzelR1UTMzeFpBaTBqaHEwVmhtTkl6SVFnV3BZbUJ2cnQyajc2SmJ3QVZzaWxNZWkrVzMwcEpUSWI3WUN6MDNDOWcxNkkxN0puVWNPYWJyc3BaUWkzMXdzUjE3RnVuVWZ4QnV3dFdSQVVqcjJMWFYxSDdBYVFOOFpOZGtGWHBadmZTZHd0MFdmYVRTSnZzd2FRY0Nzb1ZGYytnVzdRTFR1UTdvRWhaMWZScFpSc0p2dmJLenJPckhGZEl1dndsbFppclArRS8veEFBbkVRQUJBd0lHQWdJREFRQUFBQUFBQUFBQkFBSVJBeElRSUNFd01VQVRVRUZSQkJRaWNQL2FBQWdCQWdFQlB3SDJyYW9kNmVxKzFYQzJGNS9UVkdYaEdrOGZDcDBmbDJEYW9kNkZ4ZGZvbU91R1dvKzFYQzJGNXlnWkU1aVlFcHRXZWV1OFMwcTRxNHFrSEFhNUtqTHhDTko0Vk9rWmwyTFh1aVZlM0dzNjBLLytZUWU1eFE2enFUWEp0RnJUT3pWbTJRcmlteVRBVFJhSXdlMFBFRkg4ZHlwMHJOZSs0MmlVMm9IWUdpd3B0TnJlUFNWbngvS05STnF2SjlOVXAzaGVCNnBVN05UaFZKalJOZVpnb09CNDlOV2tPUmNTcUxTZGZUT2FIRFZlQmlBalFkNlFyZ3BHMDkxclpUSC9BQTdzbDMxbXVLRHB5ekNDck9JTUx5SmxSeFBYY2RrT3lFemc5Z2V2MXltTUROT3NUQTIybkE4Yko0NlQ5eHAwVHVNSlZ4UWQ5NVhJY2RGM080ek1YWUJ5dlJNb2NkRXRuY1pnUktJak9CUFNLbjdWdjF0Tnl1NVZtSUVvQ09tUktMU0ZjcEMwMkE3RW1FM1U5b2dGV0tObVZjY0FJN3NLMVdxRG1pVUJIcElDdENnZjRULy94QUF4RUFBQkFRVUhCQUlCQWdjQUFBQUFBQUFCQUFJUUVTQWhFakF4VUZGaGNTSXlRWUZBa1dBREV5TXpZbktBa0tILzJnQUlBUUVBQmo4Qy93QUNxRDhRUEt0ajhQb29ZQndzZmlHd1Vmdy9sOUIrRzhVZVZiSDRFQVFvWEVkSkloUXdEaFlGZk4vYUNybUVHZ29xQk1FUUptdDZUMXdDamZRMFFQbHdqNXpIYVprZTU3SDNLMHJUT056UXdWVEYxVEZEak1Hak1CdE5hMG1pRkFCMW16WFZSdXZRekQzTVpnejdOMTd1am1ETW81Um1qZE5YVFhPWURpVVRFNjBmRWk0YXVXZWMyOUdZTTZQQlZQS2dvR1ZxNTlITVRLMXhLRVMraFVTb2hSS0hFalZ5M3htSmxhNGxhTjRSY25uTVRLM3hLTjV3RTBkM2hicUZ3enptSmxiNGxob0p4dFdTSVhiVlJSQlpqRlJtWkcyWW1WdmlRSW1kbzdYQTVtT1lqaVZyaVFuUVhCM01rRkI3STJsR1pNOFN0Y1NOWERBOXljWExSMnpKbVU4R1FibTRocFNSb3ZDTXAzT1pIWXY2V1NWZ0Fva2hkd1dJWGhNOUpWWmg5eWpjM1BTY3lhR3lpZWtMQ0ozdUtydGh3dWhyN1hVeTlvK3BRTkE5b3V0dCtjQkpFSTJWQVZ5K0FVV3F0WDJoMldvMVRJMXJJQWlYOGxXMnNGRFNhTEtQM2xzQXE5M3dZaWhVQzlwcmFSaG54aVZ3aVh4a2g1TmN0dG4xOEdHcnE0NnFEVGdOYXl0U01qM0pITEFQaGNQZ1ZaT0tocFI0YzBKT0tQM2F1U05za3RhL0NqcklHb2RRd2thTDRqdGRIU3I5bEc1SjJUUTN5SUJBZkc0VVJnWGt2cXFVUkZyRmQ2cFZXZkp4dWlkVWNpRzN3dUpqczhzYUM0dER1RDhDcWlXQVFaUTR5Sm8vR2hxNW9iT0FVZkJ1U3l5TVYxVkxxcnBvVjFCOXRyRnc0eUk4L0JoS1RJMDFzN2NYRnJ6TFZkcTZXWG5iSXY2U29qNEViZ29idWlGdnA4QWsrRVRrZTJpb2ZWekM2NGthRzZocFI4UXJMWTlycE1iNzlzZThrMGFVUjloUS9VcnV1a3p4Wk5sclZWRExTNm9lbnhsNWthYTl5bUhDc3M0THVLeFZocXU3c1JjUUhjb25KSXNyZlJhSFpSWnJ3b05WV05ubFV2WVMwOXlRQy9iSHN5Tk5KbzdPaXlWWHBNblUwRkQ5UDd5ZUlVUDFLYnU2bVlyb2ErMVNQcFZnVjFBaGQ0bGlxS3NYWWZhdEh6TEErVkF1b3JMT0hrNnFNZ0hueWd4ckpRcnZhKzFWby9lVjBOTkZYcEwrcGtGZHNGaVZSc3IrYzBxdGtxQzZwSU9wZ3NDdlAwc0tPZ1YxZHVxZ0tNcis2UzIzam80bk0ra3JyRUYwbU11OG5jVlZWOHF2M0pIVlV3ZlVJUWFLNy84QWlxMFYwaDFnWW5OcUxHUEs2aEJkTFFkRTRxaXdXQldFdUpVRnMvQjBKSWxGbzUxUnBkVE1WV0lWR2hOZzZMWGwrS3hWYXVnWFJLaWMvbzBWakZWWlZZaGR5b1F0blVXQ3dXaXhLeFZTdjRlT3FpMGZ3YWpSWGVWaXNBdTBMc0M3UXNZS3BqL3BRLy9FQUMwUUFBRURBZ1VEQkFJREFRRUJBQUFBQUFFQUVTRXhVUkFnUVdGeE1GQ0JrYUd4OEVCZ3dkSHg0WUNRLzlvQUNBRUJBQUUvSWY4QXdVVUU1QXF5SWI5TzFUTnhJRVk2L3A3MHBOUW53QVFFQk84VCttQTVCRHB1Rk9GMzZjRXFFTlpuakUwSnkxVVFSK2dpU2lkVzZJTUFhcHd3S1FZczNYUlRCaUtyVk4zK3RBQWhESnowYWRDQlczeDBYcVZDaWNZQkVJZ2hqMVJWQ0pCT2lJQURFZHVxVElZVGkxQ0ZSakRSQWJSZERNSFkxelFOY01SWkFFVGRGRk9XUU9DYm9DcUdQVkJibmZaQktFMk4yd1Z5dEs5QUpPYUYwLzE2Wmg3S0tGYThzclh2aEZvR0QzUkVwam5LdVl0a1ZjeGI0Vk81SVJNMUE5c0JaTVRoRkljSVpvV1Evd0I1aEFKS2svS0pKRW1weUFPRUFlWVhUMnpKMUp4dkVZYURsQnlFdXFBdDhYY0tCdmxDcTlLV3pic1BSQktyd3pYVG5IMHNkd2lIWjhvczdnamRYT1ZqQnBVcHl1em1ZdmREb2l5TGxHNXJsM0RUc09XdHRPYmYwR0ZTb0kzQ0liUDhmbysySXlYN2hwMkF5MU52aXplS1R6aFdoREtFTFNVQTdJeGdBNU9pSUFNUm9jdncvbm8xRFludDNIM3VYNXVWcExjd29WVElBMFZpbk91VUZWd2pLdVU3M0FjbnhPakEzM0k3Z0tGN3ZwSDRpd3hCZklTNjByQUQyeDBBZGNpVDBZRnVBK2U0Q2hlN3kvVjNHV0J1Zkk3QVM2M2tMTGVRc1dTV0twSnRCVGpxQ2RuZ0s1SHVBWHZjdjFkeGxvMkF6MUgwRTR5UkFFa0p5aE9GVTRFZ0RnZk5FV2g5NS9udU5kZkw5WGNaR0J1dHdEbmhaTjljU25JU3dVTjRqbEVsa2ZoTGVuY2FxNGRFNFhCMEJIMFcvd0J5UElYSWdTd3BpSmRRNXpLTHUwQmNvbHlTZGU0MWVWODNKRWwySFFqdFBka3BIa3E0NmRnQmxpTGZ6anVVeldKR1g2cTJTRzZIb1Yvb0dTT3liRVdXNk56YjVCS290UWUzY3BjaGo4T0NxbklLME9SRWNZVWRKWUZBWEJReWVZUzBvZ3dFYzVoZDZnbDRSTGtrNURBM01kZXdmS0RsVjd4c2RVWXA3ak82VDEwU3ZmSjBCQUdBSGxhTUx3WDlZbFhHdUtZK0xzODVZRzJZdzJUWWI4d1FPbnVJRU4veEhHandpckpMWkdKajI0WUM1S1lmNmpyU3dHOGt3UnNselFmNFpPVEZ1UWNhSVBtSTBGMUY2UndyeU9ZWXFzeWFTUGJTQUE1S2VjaXFmd0RTYUpxUERUUkZJV0l4NEF3ZWNoOUlCR2pEQUU1bXB4RG14VEZoUU55NDdheUc1UDRMMWhzR0hEUWhZTHpmRGN4Zlh6aUE1WkFpcVJLSnp0azVJNk9VNjZaQWFWSjJUNVJZZHNzanFnQUFBb1B3YThXT3A3UTJUR3FrY3dwaU0vUVNjR290aUE1QUZTakRnS1FlTWZzYWRIbWtSMlI3T3Z4L0NtRGNmSTBEdlVaUFpPSldDVk1QVFVNbkNFTUJKTmdueWdhQ3c2TGxzbXlIWWpXYWxCQTZEOEhRdkNFQnNuc2xBR3JpMWNIRUFNRGhFWGR4UWJINEt5WG9ncm1CUTJVK3dXNlR3Nmt4dkFkaTlTUHd2UnlDV0RvS3pVeW5CckxGbzJBOUFSZy95WWlrTjRWU0J5TXB3MWlnQ05BZzdFNS9EK0NTd2NvS2pVemtrMTdBTndMRGt4U2FvM1IxVkRoQmdRV0ExRVFCZ0JVMS9HVFdZM3dBSkxBT1ZRdTBXN0k0elgvQlNhL0x3Q0JoVjR3NGd6QVRCTjdvU0dTRFBsQXNBSTNSUjRjRlVvQnZqNlBkaU0wZHhEUlhCL0FtZUl5UEJUUU1EUW9HQnVvSzk4QVk4aFJ1Tlg0QWRCQTZNZHFTL1k0bE90SHROMFFNUUdSVVpTaGhVd2dHRFpEQU5KWlNTcFV4SEVNVUVPTmlIT0hyTlYzN0lJeElkWFJ5WWdJaUJsbFVIY1p6dndhR2dJb2R5ZGxERU5zVW5RSUdRbGc1UVZHc3Nqd1VBV3VRNDlSZ2d1Y0ttNVdsN2lBeTRKK1Zid3dFZFJlVUNESUw1NnlEOWtRaEhKN0lIR1loUm1OYVNiYnlIcU1hMUlpejV3VlYzRUJBT1RqYm9SRjBBQUFCa2llWnlpVGdnRml5REFKVFFla2cxeU9XSVplaDdEMDROQ2hUSHNsQWdoeE9OTUd5SVlHM0lrazVMbnN3MFVnalVKc21laEFnaHdYQ0F4YmtDcld5RTV3SGMxRCthR1JIc2txa2VTRUFCd1FjYUlaSHJUaGJtTEZNMEJ5RnplaUpxTUYwZk1KRlcyUW1CSlRTajNJdDhadmd3UEkyUldqS2oyV3VJRGxoVmVWWEpNaFZKemtxd09DdjlLcW8rZTFqUHJGRkMrWlJBdlREM29BdjRvS09pTk5Gd3ZHSHZ4ekJUTk1hbENsRGZUSUlEUTFLMFc1MkZiZ2VNQUtJRDlSNHcxVTZHeU1DVU5DZFo3RitVSlRxWHRpQVNXQWNveEFPeXhVVnQ2RGp1ZGZXc2FJK09jRUxjT1V5aVNvbVU0V0k0VDBFUWR4NUtmSmlPak1JQ0RUQWxxcXA5Z211ckxJRTFsUXA4WU54Q0RrQUFHQ2FvV3U0aFVGQnZoSmwvWWQyQkU1RUhaVlpsSzRlOVZFZVV3VFZ3ak56WXBtdnBUMVdmV1VESnhDNEJ0Z2JEY1lZWkllUzlYVlRnY0xJRUVPQ2lBYWdIQkNrQVZVb2FaRGZ4aTZLVEo3elJGSEo1bEFVT0MrUUtyMjg0TklxYVlRSGxkTUZDRHluL3dCMENIWUR5bnZtYllFQ1hFSFpNUDhBY0pySG9tR29rbnF1ZktucWJvRUdoVDdlQmRhTzlCYnY5TkhsR25JY2d0TitDanFFYUpIS3FpOHJVMGU1VlZxTVdLdSs5YjFTc25rTDZRaVFPQWJsT1FCMFQ4SDlHb0E4cWhJQU5CNUNHc1JEL3RML0FHRWRFUzAxd0NOT2JsLzhVUC9hQUF3REFRQUNBQU1BQUFBUUNDUy8vRFI5OXRCQkJCUjErKysrKysrKys4eEJCQkJGOTk1RFgvNkNDQ0MyL3ZEVjk5dEJCSkJCUng4ODg4ODV4QkJCQkJGOTk5Qkgvd0Q0Z3FnZ2t2OEE4c0hYMzIxR3FrSUVFRUVFRUVFRUVFRUVYMzMyRVA4QS93Q2dndmlnZ2x2L0FNc0hYMzJ6RDZJa0VFRUVFRUVFRUVGMzMzMkVOLzhBNkNDQyt1Q0NDMi8vQUNvc2ZmZlZuWXNDQVFRUVFSelRmZmZlWVEzL0FQNklJSWI3NjRJSUxiKzdkM3JYMWEvSGswM2drMDNzTXpUM0VFZC8vd0NpQ0NHKzIrK0tDQ0MyL08vaEJWMjk5ZTk5T0tmOS93QmorZ1F6L3dEL0FPaUNDQ2UrUysrK0tDQ0N5LzhBMVQxZ2dZczh2alBmdWNZVWloMy9BUDhBNkNDQ0NlKytDUysrK0tDQ0NTMlYvcVBMSmFoZENCcUREREwvQVA4QS93RHlDQ0NDZSsrNkxDUysrK09DQ0NDNzJ2OEEvd0Qxcjk4NTJaci9BUHAvL3dBZ2dnZ2h2dnZ1Z3JRd2t2dnZyaWdraVFsOHVudi9BT24rVTN2L0FQdHlDQ0NDQ08rKys2Q0Q5dExDUzIrKytPQ3BDVkNCQ3l5aHlsYUhpQ0JDQ0NDR2UrKyt5Q0RmOTk5TERDMisrKytsQ2NKVENDQ3hDQkNwQ1FKQ0NHZSsrKytpQ0RmOVI5OTlMRENTMis2MlA4ODhmN0loQ1pDdktQTVArKysrK3lDQ0hkOTlCUjk5OXZEQ0N5MTg4ODg4ODg1QU90SzQrUDNqKysreUNDRFA5OTl4QkJCMTk5OVBEVTg4ODg4ODg4ajhQOXByMVY0OTZ5Q0RCSGY5OTloQnRCQkJSOTk5OWw4ODg4ODg4OG44bldwOGZ2ZkNCQ0RUVjk5OTVCQkI5dEJCQkJ4OTkzODg4ODg4ODcwOFhFeS84ODgwTXJ6K2Q5NWhCQkJOODk5SkJCQkJ4ZS84ODg4ODh2OEFPL0p3RnVQUFBQUFBPT1lRUVFSWGZkUFBmYlNRUVFRNmQvOEF6OS8zL3dBLzhzZDVGZFpiejh3d0JCQkJOOTk4QVE4ODk5dEpCQlJqRkhFeVVuUUd6Z2RwOWhXeGh3QkJCQk45OTk4NEFBQTA4ODk5dE5CQmcxOHZybzUvajBQZnZmb0JCQkJGTjk5OTg0Z0FPQUFBUTA4ODk5OU5OQkJCREowQUFUQVEvUkJCRk45OTk5ODh3QUFBK3VJQUFBUXc4ODk5OTk5Tk5OTk5PY3VldE45OTk5OTg4NHdBQUFBTysrK3VLQUFBQXcwODg4OTk5OTk5OTk5OTk5OTg4ODh3Z0FBQUFPKytDMisrK3VLQUFBQUFRdzA4ODg4ODg4ODg4ODh3d0FBQUFBQU8rKysrQ0NTMisrK3VPQ0FBQUFBQUFBQVF3d0FBQUFBQUFBQUFHZSsrKyt5Qy84UUFKaEVCQUFJQ0FnRURCQU1CQUFBQUFBQUFBUUFSSVRFUVFVQWdVV0V3VUhHUmNJSFJvZi9hQUFnQkF3RUJQeEQ3cjNCNy9IMmV5bzVLaUZPbURyWnZyRVJJL1pVN3c3aHQ0Zm1FTHZ5ekt6dVQzK1BzSlJzdCtxbUZHeHllanFLbW5KVUIxbVdkdHZ0b2pzdG5xclQzR3V1aCsvSEJ6UWt3WmlVT2pWWExkL2IvQUhsaiswN2hONGZtWEQvTE44TXgyS3ovQUxNZ0UxTmNFd2FhTU1RNG1iaFRmdjhBdUVFYWVNUlJzK1oxWVI1ZDh2dHdGUXdsUkFVMUgxNHpMcXRYeW1XWkk0cW9qdnlIZkJ2a2pnZTRmVFB1T0FhdS93QXpIUEVmUWJqNUR2ZzN6MUVJdW5YOVFBWEs0MXNvcmZkeEthNGZRYjhsM3diNVl0MnhneGEvOGxvMG83akFMb1pvcld6L0FDRldnNVBKZDhHK1hmSnZnRGF5V1MwcENrRnUzUFhrdStEZkJ2MEhGdWRUQlZuNmlxbHJ6MTVMS3VGMnA4RW82OUhYQngxd0F2VUFLV1AyZVRoZ0ExNkVIY1Uxd0R4MXdKQVNnMFFUMkZqbVdFcUxzSHNlNzhldkw2REw4a1NvOFVMNFNYVDJoVmxYTGcxMGVOaVBvdkE1UnpEWUlsa1JHbWRjUG9OZ2pqd1JpL29uREtPVWgzUGdsSmZDdVJiYzNlQ0tIMEdIQjd6ckJxbURaWjZBRytCZFFVQVVUTmVEb01HOWV2dmg0NlJqd09ucm9YNFNCekJtWENtQkJIWENYQXFMVU9PK05PWEdKY1Rtdzl4QkhYQTdSMTRhYVRBTVcxS2RNdnVRWDJsNWxlMFdvRlN5Yll3NGhqaEZGZ09iZkgwa0IzQU9vKzAxTVFxNWtpc0ptSTdKOEV3RXVYNW9XbUM3bElQQkhUS3ZNL1BGZkVleU45aldrK2FmSkZ1LzRKLy94QUFtRVFFQUFnSUNBZ0lDQVFVQUFBQUFBQUFCQUJFaE1SQkJRRkVnWVRCUWtYQnhnYkhCLzlvQUNBRUNBUUUvRVAyclZhOWZmNmZES3czRFBiZy9XRCtZSWxuNlVhZTRwRERSL2lZQ05Wci9BTCtoY2hWVXkybjRkeXVXWVlaN2NQVnFBQTcrVjE2UXFCcGY0OGRBSHFCdDNtV09aUWVaQWlVMURVT1M1YlBVeEN0WHpoRXczRzloTU5XK3ZVU2d1L0djdlRPOEljbXVUM3hYMlNCaUR1SDJpVnRycmxCWXdrdldiWWE4ZzF3NjVZYitreEduMXc1ZFZNeU13K0RxSGtHdUhYUGNJV05rQkJESk1EeSt2cURad2ZCMTVKcmg1SUgyRVFkVDdSRFVJQlZiQ2UzM0g2Vjh2a211SGsxeTY0YkM4T1pzR0tqY0hQZmttdUhYRHI0UEZBRjhBVTBjOStTVFVhdHo3SlozOE8rSGp2aTRFVmFxZjkrVWxYZndGTlFMY0NEanZoQVZpVXRqenExRnRZeVFybGZmajM0UHdFcnd3Ymh4WXJnd0hjYmNKREtlZkJ4VGlFZEtEVEJFc25mQjhIVm9OK0NzMStGNXM1UWpVK3lXdGZFNkttcndWbCtBNVoyaVhaRXBwK0NKWENtNGlJclpxOEhjSWxiK2ZYQngyaERoTnZuWXJ3Z3BpVmNHTnNxSW0rQnFMY0M0OGRjYmNtY3lvREFqNk1STjhMcERIaGh0TWdRUnVXN0pYVmlIdVZpWERNY3ltYWhKbU9lQUVHUjVvOGZhUlhVVWJoN201bU4xTVFDTXhCZE0reVpXVks4MUR1SjZsNGxFVFpMcWYyNHY3aDBRL3dCR29aOVUraUJkZjBKLy84UUFMUkFCQUFFQ0JBUUdBd0VCQVFFQkFBQUFBUkVBSVRGQlVXRVFJSEdCTUZDUm9iSEIwZUh3UUdEeGdKRC8yZ0FJQVFFQUFUOFEvd0RncklkS1U3UlArT0NCTktPWnMraEZXYUFnVE9jNmk2RlFuL0dRSlMrSnNKZzBabWlVTHpRQjJ6b2lYUEZwSVkvNHVZMzVGR0Q5dlNtY0FsTUdCL3hZeGhScUtoVXVGYUxYdExIdlBweE9BNHhsVHFJMi93Q0JGaWlCSURoSmo0TDNFb0NnZVlYUUxjREVtbkFOMm1nTWt6S1M0S1VZbmpwR1BtQW02b1pCeHRha2RaeExVOEM4TUY3d3Q3eHhnUk5XQUkyVEJxNGtZaG5VVVhvSmNsTkFrWitMZUtaZlJJN2U5SUZ4QStYWU5BR1NtZ0JqTUZaSzVBb083Q3lvY0ppQm56YjVFNll2d2NaQ09TMFVQVjBPOVlpRGdHUnB5TFlGaTdCaFNqd0pCbWkybU9Oc3FtU0N4dTBtUWNYS25oZUVwVDVZb0R5VEY2TU5uZGkzNWptNm9OM1FQbHhtaFprMURlbHRoVHlJdTY2TzNLV0tEQ0U2WG42b0g1cFF3SDVyQUhQV1FyZThDaHJlOENsNFFpc0VFcGlzNFNIVjhzWGNVSm5GYjFUV01LMzRnOTJmcm02QXZxZmx6RWZKV2E1Q25LbEpYa0RjcU9sUWhNQnBTczVZWkVkS2lnWEZkT0NpUmJpRHZ5NWJ4V01ha1RWdWtIdDh3YlROM3NCKytVU0RWcFdjbDlOdnJtdCszcURnZW5Lc3VTSTNhOW05eDVoR0RXOVNyaTBZMWhOUjZDUHJ6RHVNdTY4dXlZOTYzMUgzNVR3SjlBcFc4MDl1WTFjQkdWS3JMVjRhSjllRHNHRmIzcjNmTUxYK3djdmVIc3Z6TFZYc1l2QXpLajdaazRrZGFSWDU3OXVYdjRKR1hBUjZETkpSWXJQbUdMb0h0eTQzVWUvbXRCcTlTN3dVUzBwTVJCUnhCWURKbWtwS2dCZHBRV0tDNXkyTHFEMmVEYityamozanpIRDZRNWNhMCtPUHZsa3pDWmVoZXBFekdzS29UT2RPNzdrU0ZPSHZtMDQwUEpOUUJ1a1FVUUJtUjJrbmtzWFZIdjRQUXNEcWg4VDVoN3c1dXRYUmU2SDN5NzNPNmVKRGZpc0V0U0pxeGZyNVByaTRoRTRCVGRCaXNSbEQ0TzRqdWdKK3ZNUGVIaDlCdlZIMnNjUlRDanFWUFNreFVobUplcG9qTUVIU2VLRnRrZFlwM0poc2xPd1hFYUdwRVllYmZqZlN3ZkQ1Z29SMG93ZmdvQWxncHdmRDdqNzU3TW5MMEg2Y1FCR29JQ1NOTnZDM0diVXR3b3EwUXRpeTVVNjQyUW5mbTZ4M3FmTVQwZyszZ3diMWl0N2hPZnJjSFZCOEx4Z3V6NUxoVmovb2psQ0FKVmdva3hraTlMRDQ4eHYxRDl1VzhjMS9JOG5XWU9zVzhDN1prZGdyOE9SQ0x5Z3FZMHlFbWNVNVZJcjEwTjdqUEtFRlBZUmQ5aW12aFV2bU4rcGo2TWN0OE5mam42NU91dytzL1hnZCsxMVg0RGtCUHdDK3hOS3BYRnZ4cy9tRGw2c2c2bytDK1pmd2h4KytXOGRmbnYxeVdUOUFSOTg0S2dFclRJVElROWtmWEo2ZCtxeDhUeDNUTmIvTGtDb0trbUNPallQMm5wNWxaZEgxRWZYSEFnMUxQV3Y3QStrMXB3NUp4UjkxL3dDYTBISDlWUHF2NFZldGFSOWxpdTFTSXVnam1CWWxYb0NYNHBuRXF5dkp2QnV3SSsrSUl2Qmw2VXFxdUx5UEdZcUJRM29TL3dBYWxZRVJoSEVmTWU3VTZpZnVqQzZaRjNvVU1JQzN2YkNnQWdJT2VLRTBFMVBMckg0TFU5MlhaK3o4Vk1JT3E5UngzbERxTDhEeTJMbG5xM2ZuajBmNzd3aXB4WXpYZDRTSWRLaW9YRVNpSklseWJyUnBnWU1TNEZpOVIxa2xORktnUkdFY1I4dVlxNkFLQmhROXZGSkpEaFFiTDhpRHVZVkxkNkozMHJkakhUQjhQcnlUdFlSTG9WdnZKeHg5ZlpDb082TDJiOFZlcTNadm53VWRmQ1V3NFBaSVF5U0pTTnpncTEvYStXcGdWQUdkQ1NCOURZL3dJRTRCZWhnNXhiSTAycGMrT0hqL0FPMml6NG5rdVpKSm9MU0xpczRhQlNxcFdlQXd5VmhLQXlkK01DREd0NXZRR0I2eStubG9iZURrYS80Vkp6QjJaKzAwV0lxTjhCYXhQMVVOUnlHQTFPRytFdWhZNGtBWXJGRmdXRXUyRktCaWNuZDgzdlk5ajNvTEJhVnBLcUQwUXV0VzNnc2FBV0QwOHNhQXh5OUNqTGdJRC9DMnpLVHUvd0I3OFZBeGl6MVQyRUlHKzVRTEVpRHRaOTU0eXlTL3BjSHg0djhBUEZqVXBBVWgyU09nSSt1TDBQYkw5dng0SVFGenJCaFNRbzVlUnhndlc2UDhPRjJybHg5Qmw3Y2dMa3RCbWhZcG1XY2M1NGs2TU9CQkljR2xTS3lqTGJnSWx3UmRURDNpa291S3p3RUVnYkl4YWVJeU5Bc0hnOUY3MWYxVVprQ1IwOGliRlJGRUJZai9BQXZEeGNPLzZvQURBSTVDNjVRZDM5Zk5GWmx0R1RueFY0dGI3Y1U1RXhFbW5DTTVLU3JBREJZV0M4ZkhwVEZpZHpTWXl5TE5NYUxJYzhqdXg5UENVVmUzMEtreGd6MjhpazZTQi94ZlJQZDVBUldBbHBnWWpMditxT0J1aCsvYmlNemRBM2NmazhBcUFVMnk2Y1RwTTFGWHVQaHlsWkx3VmhLa1VBaG1KOVh5TG9jUHQvaEJzQUphWXpqTGt0Rm9QUXUvMi9DZU1oN2NOQmtUUlMwS1hSdzhHLzhBTUFaRGYwbzBtcTRIUW9CQUEwS2loTkVtaVhwNWlwRS9Sa2UvQUVwTUFwaVFrWE1uNTRJU01oOHZrUkdhdWY0YnBacGVoeTdBL2EvdHVCa1c4cWtoUnhLN0FuVnRRb2lXU2dOdHdOVFh3QVNHSXRoLzd5dVhySVRVc2RCQXBpZGlKZU1hR3dQU1g4aXZOVXQwM29HcHBFL3dYbGcrZ2NrV2t1QWF1VlhObEM3cTU4THkycllKbnZXLzFmUXNmZkNJdGtaSnBRcFlKY2JuK0Jmb1FxZG1WTHlPN3N6Y3c3YVZERnJXSjRQclBNNjhxQnhtSDNSR01BamsycVQ2NWZmSW9FdW9PN1Jxd0VIYkgzbmlZV2VDTVZQSXV3MjFLc0IySU56dDR3d1hHS2V4NUl0Vk80eEdWcXU4YVRIT3BsUlIvRUVtZGJ0S1RjN2M3azR4bURScTNjMHBVMUpMVVgzZU44L3d5OGhPa0FTMHdqaHBiYmVuSkFyNTZJUGVsVXF5dDNrRUszSzRFM1hzZk5IRlNTTm5XNmFWR1FnMGxVSnZVWFVKejVGaVJycndkaGpjRkF3QnFNODZGd2xqNU5KZ1JLdWZrbnloVnMxT1VBWHNUcHRVL2ZkcWVwblUxbTRGZ2R2eFVDUkxJWU8vNXFJRzBiRDF3bzRCTUZTUGdHRW9YRTZHdFlUQVc1TFR3ZlJQM3lzRFJNeHNjazVaZTI3VU02YmtPWFRrWlFzUjZ0MzQ5NnVCQ0k2bXg3dFM2dEVVaG1yOVFvQUhNV0I2TkFFQTRJOFNsZE5VdnBqUUs4dG83OWluTGtaVmJ2a3lOV2tTaVlPQ0hGMTBvRUpMaU1qVUlTMlFuZkdueWxkYzlTbTVRemlQV1B1bzBSTWJqMUtnUmZXQStxaUlpNVA3VkZHYWpQRlFLc0JqVWdPZ09WUGtHdzZOUjRydWZKYXRGV3duNm9KWTdHMUhiSDRxY1k4VGt5N2NnNGFDYVpTZ3IxTkVjMjZBMTRSSUFMb3dEVmFOdlcyUVpiRlBpWlR4UUFWTUFaMUxoZDZqK2loY2V3akQzK09SV2V2aFFKQi9adlE4SDZJK1Z3U2JOZC9Tbzk1Y3NibzBBRkNPWnc5WklWcTZpV3JsTjk2UitxSkorcGQ4MWdqYURmNVdvam9hUDFSVWNDNWZGSkV0QWNYNG9SSkdlQ2hkcDBsUzFnR25la0dDQ1lSUmttdFhPalVER2VwOXl0SVhSZmlvVWd4Y1liVUlnakk0VkN1Qmc0cWhsRjdHWFlOYXc3ejFMVloxMEJEb3g5K0pwU1dBSldoWWYyTHZTZ1ZZQzZ0SUs0K3l3L1Bmek5FaGRWNktoVUxybnBqVUxkczNPVklUa0I4MFlsek4xY1ZwQklibE04bGU5UGF1azl2eFN4eENXOGVsQW9KeEdoa1VZa3lmeW9DVUp0d0FLb0RPb2pGbGJvd3FTdzk1MFUzQURRMmFsR0lsQ1BYNWUxRHlRRUNCVE1RNHovclNsaDJINVVYMXh1K3ZBTUZHRCtMK2JGU3JCVU5RSVI1Qy9yVVNQYWxsRVRzSmRSeVlyWUROcEVwT0p0dFNDbVdKazFnR2QzTmYrUlVtS2RDa1VZdlFMVGtUUmlNSEZaY0Vza21xajRxZVI5ejhVcmwzU1lGSXRLZUk5eFVhU2JVZkJHNU5iUTZVbEluV0wwcGJUUy9ya1lxK0dZdEtrZ1BQVGJ6a1ZTS0ptVWJUaXdmbXFLQ3RWRFVHVE5rL0ZFblFLQ0pJaWJWaEtiUTNxd1RLM1hWcElXUVlDeVZrVjJRMUhpSHBSYWptS3lxRVNZaFoyY0xrTlpSV1dDVVNaTzkxWXpXQ3hIU2tFSWpDY0ZTTllSWVlodlFzZ20xSWIvSnhvblNCaDREejlXYTREWWhGUUxPM285eDRuNHJEZHRaUTg5RUZDUm1YdC9HQlNBUkpIS3NvL3dBc2FpeGV3clE3eUZhSUdxeTBSdUZtWng3VlBaY2JVUW1jMXUwd2pvckg3cE14ODMvaFJSa1VkcXlNdEZXUkRSdnd2QlBnb29PSzkxZit5cHhjdXEwWWdTcWVPM1QvQVBpaC85az0iKSwgdXJsKCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVBU0FCSUFBRC8yd0JEQUE0S0N3d0xDUTRNQ3d3UUR3NFJGU01YRlJNVEZTc2ZJUm9qTXkwMk5USXRNVEE0UDFGRk9EeE5QVEF4Um1CSFRWUldXMXhiTjBSamFtTllhbEZaVzFmLzJ3QkRBUThRRUJVU0ZTa1hGeWxYT2pFNlYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWYvd2dBUkNBR3VBb0FEQVNJQUFoRUJBeEVCLzhRQUdnQUJBQU1CQVFFQUFBQUFBQUFBQUFBQUFBRUNBd1VFQnYvRUFCa0JBUUVCQVFFQkFBQUFBQUFBQUFBQUFBQUJBd0lFQmYvYUFBd0RBUUFDRUFNUUFBQUJ3Ry9uQUFCQUpBRkFBSmdTQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUJDSmdBQlFBQUFBQVJNQ1FCUUFDWUVnQU5zc3Q0R3VBQUFBQUFBQUFBQUFBQUFBZ0FBQUFFUUFBQ2dSTVNBQUFBZ0Vva0NnQUFFd0pMNCtqcjA4T25sOXZpWDlHMkhrSHA4UVdBQUFBQUFBQUFBQUFDQUFBQUFJZ0FBS0FCQUpSSUFBQUNBU2lRS0FBQVhvejIwVm54L1JtMmVtdm56ZzlYaE5jODlvR3VBQUFBQUFBQUFBQ0FBQUFBQ0VBQUNnQUFRQk1DUUFBQUFnRW9sVjQraTgvcitiZW56YmVjTzh3QUxYbkdXVVh6MjY3bjYrVDNlRmYwNjVlTWVyd2hlUUFBQUE1NlBkNDg5cW9iZWNBQUFBQUlRQUFLQUFBSUFBRXdKQUFBQUNMVm5uUy9TNXo1LzFkNjVGbkxYTDIvTkRiemdiWTdZeXIwY2FhS3o0L296YlBYWERPc1BYNEpRTDE2dXZrOS9GSjlIa2hEdk9VQk1hWWVudDQ4eDVmYlRiS2VwazB6OTN6QXZJQUFpSmdBQVVBQUFRQUFBQVNpUUFBQUFFdGJObDZOSzFTN1phNWJlY0xBTmN0Y3BRc0EyeTF4bEN4YXRzdDkvWnpuaCttOVBtZ1UxeStoOGdPK0ZxdU5ORkhsOTE2UTI4MnVXdVczbkN3SUlBQUFLQUFBQWdBQUFBQUpSSUFBQUFDQWJZN1lyS0NUZW1xMHFBV05NOXBjNnJjOVZlcnpjOXdOTXJUUmw2TFZPczljdGN1OHdzQUFUR3NzWmdJU1lBQUFGQUFBQVFBQUFBQUFBRW9rQUFBQUEyeDJ4QVJ0anN1U0NTaVJ0U0ZyYXVubjlmMGZIenp4OUdhN3JuRmVucytjRm11V3VVb0lBQTF4MlhFSUFBQUNnQUFBSUFBQUFpUUFBQUFDVUNRQUFKaVMrZW1ZQTJ4MU1nZ0cyTzJLemZPYzl0RkhsOXQ4MCtqeWFaWHoyODgycDc4dC9ObDlGOC9MV0xScGxBNnpBYlk3TGlFQUJRQUFBQkFBQUFBQkV3SkFBQUFBQW1CS0pBQU5jdGNnQnJscVpBR2hiRzFRRUFiWTdMaUV0cG5meC9TNlhPaGo2UFI1bHR2TmlQWjg0QnRqcXVRQUFBQUFDQUFBQUFBQkFFd0pSSUFBQUFBQktCSU5jdGNnQnJscVpBYlk3R0lBQUcyT3hpQmVtczZWb3kzblhIWFh6NUN3RFhQWEVBQUFBRUV3QUFBQUFBQ0FBQUFsRWdBQUFBQUFHMld1SkpvWjY3K2lkY3Qwb1RuYStpRHhwaXdBQnF6SUEyeDJNUVdtMlFBTDg2WHg2L0s0N3FOY0FCQk1BQUFBQUFBQWdBQUFBQUpSSUFBQUFBTEdtL1I5MmVubDlSeDJDZ0FSNXZVVGsrRDZWMXo4bzcvSzA0eXkyeHZJRFdzRlFhNWEreVhEeSs3d2szcHA1ZmQ5RnhmT3oyblBlbmVXQTluendBQUFBQUFCQk1BQUFBQUFBQW1CSUFBQUo3L242bWVnY2FBQUFBQUFJbWllSGovVTRkOC9OdE10TXRzdGNTVVNlM3QwakxiNXlwcmpPdU8yZXBrOC9ydmVrZWp5VUdtUUFBQUFBQkFBQUFBQUFBQUFBQWxBa0RmRHR6cm9TWTdBQUFBQUFBS1hvbHd1UHozMC9rNjQ0ZVJyazlYbDZzdlh4Mlk3Zkp2YjR0OEowbkVHaGJHOUFBQUJ2aDBwZWEyeHNFRXdBQUFBQUVUQWtBQUFBQUFBRnZxZUQ5Qm5vSEdnQUFBQUFBRkwwdWdLcGVpY1R3L1FmUDY1TzN4TzRkQVpiUjRmZVRuVTZpemgrYjZYdzljOEVhWmw0S2dBZHZqZlQ4ZDhQdzlMbTljaFlBQUFBQUJBRXdKQUFBQUFBQjF1dnp1ampzRTZBQUFBQUFSTkVYRkFwZWwweitYK3IrVTA0djZzTWV1UHJIajltT3dLQUI4OTAvWmJybEV1ZXVmeVBwNDY0K1RuNkhYcm54OUl6MDRuTjluajJ4Q3dBQUFBQWdBb0lCS0pBQUFBQVBaMy9sUFR4MzlJdzN6MEJRQUJVc0FCUlpKQ3Eyb2syRmo1YjZyNWp2T2NkY3RPTk8vd0RPVHpmcTNKNldldWdsQUFBQUFVdnliT1ZVMndBQUFBRUV3QUFLQUNBSmdTaVFBQUIwdWJwTDZQUjBLOGQ3YThHWmU2OFhzNTZrSzgzcEo0dlRvQm1OSWtCWXJHaUFyaWR2bDljOGVEWEVYTnE2K09YU3RWblk2dkc2ZVd1ay9KN1dmVHZGN2VPd1V5NWxucjRDTmNndklBQUJBQUFCUUFBQUFRQk1DVVNBQVc2L0dTL1daL1A5ZlBURHgvUWpoZXYzK1kwMzU5VjZieGVqbTY1bEp1aWthWTFHN09ORkJiT3U5Zk1ZL1RjYlRMeStqRzFtVlN4THN5K3Z4OVQ1blBUQWE1TFZHc1psQkFBQUNBQUFBQ2dBQUFBQUFBZ0NZRW9FZ0EyNmZHVHI2blQ1UDE4ZGZRdWI3ZWU5YVRFTDBBVkNtcVZ2TkpicVVMRjZpMFZqREQzMXM1dCttTWRtTXZrNGQ2YlpCZVFBQUJCS0FBQUFDZ0FBRUlrVUFBQUFBQUNBQVNnU2dTQURmMmN4TDN2Vjh1NTYrdHI4eDZKZSs1Tzg2OXpIYVdLMjBGQ0FwRWl1bE9hblErZXBUVE1PdVFCQktBQUFBQUNnQUFBQVFJVEFsRTBBQUFBQUFBQ0FBQUFTZ1NnU2dTZ1NnYWErWkw3cjg0dlVubEk2bUhpRjZ3NjVsQUFBQUFBQlFBQUFBQUFDRUFBQUpnU2lRS0FBQUFBQUFBQkFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBaEFBQUFBQUFDWUVva0NnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRUFBQUFBQUFBQUFBSmdTZ1NBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUVSTUFBQUFBQUIvL3hBQXRFQUFDQVFJRUJnRUVBd0FEQUFBQUFBQUJBZ01BRVFRUUVpQWhNREV5TTFBVUV5SkFZQ05CUTBLQWtQL2FBQWdCQVFBQkJRTC9BS0ZLak1QMC9DZVBGUmkzNmRISVl6Sk0wZ3FVUi9xQzhTVGMvcGQ2dmtlRWVRUXNQMEszSkhFeUg3c3NKMlltTWFmMEFWb1ZvNW85RGI0KzdPT1F4bVNkbkZTR1BUemhoMlpHVXFmV2pLUEVhVm1mNmpSSUdaeFp0bzhlUTJLTDB4dWM3Y3JEdGVQRmdXdFVrUmo5aXZFN1c4ZWQ2dmszMmpaaEtuaEJISUJJb2tuSm1KcGhiMXQ4cjB2WnRrNjdVcnJ0amN4cytKdXRhMStrUnlwTzcxLytXMlR5Ylc0THNHMy9BQzVNbms5ZTNac1RpNTRuWWd1ekc3YmIxZXI1RHg4Z2NTL2Y2OTlzZmsyamdsQ21oY0RlT3prUitUMkVuZHNqN3RyOE1oU202NGxBcmhiMHlsVHNYczVFZmQ3Q1R5YkUyb0xzeHVja2xkS1ppeFVsV2R5ek1MYkI0K1FuVDEvOXlkK3hPbXhlQzc1Ty9JQzlkRTVBOFhyL0FPNU8vWW5UWWVFZWQ2dmtCY3VidmxoZkxKRXJoaFkyM254K3drOG14T215VHJ1aThtUXBUcFB5dUI0bU9RSXA2Ylg5akozN0U2Wm9MdXh1MjVPbVEybng3WlBKN0NUcnNUcG5IMTMvQU9XWTZuZ2I1UDAyUitUMkw5TmliQjQ5N2R1Y2ZmbkozYkU5a2ZIc2o2NW54YjVPL05lM0plTE4zYk9rZnNSNHNsUm1vWWFVMG1GWUg0alY4UjZPRmxwNHBBQ0NOMGZmczZSWlI5MnhhZkRjQ0xleFRwSGgzZWtnalRrV3ZUUVJ0VFlTbmlkTTE0THNrelR0cjZlbU9oUTRGSERyaUxHVlVMVVJiMXdCWXdZY0p6cE1PajFKQThkSGhIbWd1ekc3WmY1WWFIVldLZThsRFlqbEQzZXRBdVlJUkdQd0pNUHJWZ1ZPU2NCbWtlczhGVmpjNWYxa1RSKzJQMW1FaS9CYnBVc1N5Q1JERzFIaEhuR21sWitFT2JjRXE5SU5UTWRUZXJoVDZrblQ4SC9sbExHSkZaQ3J5ZDJXSFhWTFVvdkZuSjM1ZHNmSWlUVzNvOElsay9CWFpNZ096QkRqbGlJaWpWSDNaSU5UTWRUY2pCRDc1UnBsOUNCY3FOSy9nTjAyZFd4VWVpVExCaitQSWk5TmhZelF3b0ErR0tmQ3VLUDJMeWNHdG84V1A1dlE0VmJ6Zmc5VzJMMHhTNm9jc01lUmlJZGE1YVdORlNOb0dvb3VsTWI1ZlE0SWZoTDB6YktUakhTQzdReVduNUVzWit2RmgxVEsxNmt3cXRUeHNoeXcwR25MRytUME9EOGY0RGJSeGFqMHBPQXJEeS9VVGZwR3JZUURSdzhScFlrVFBGRzgzb1lKdnBzQ0NPZU9KekpzQUxESnU0OEk2UnlqUlNySU9leDBxVGMraWltYU14eXJJT1JjWDJOdDZ0bklQNVpPN0lFZ3c0a2txNnZ6c1pKNlNDS09WSGhraXFQRmtVanErK1NQVlErUUtYVm1PSjJMMHpsWFRpTmtZTm1OaHFhcm1zTk16TlZ4eUo1eEdDYm4wYU1VYUtWWlJKaDBlbXc4a2RKaXBGcE1URzFkZVF4c05oNG5aaTc2Y3dDeGtPaGM4RXYzVE5waXBKR2pNZUpSOWpTSWxTNHV1dnBnU0RGaWdjbmpSNmZCMTlPYUtseFVncGNZbENlSnF2ZllPTldJclZXb1ZjME9HdzFwMUpJaGphbFVzVnRjbTV6Z1Q2Y2VOYjdjd1NLK3JKUmR6NnVPWjQ2anhLTm1VVnFPR2lOZkRTdmlDaEN3b0tSUis2cjIyRmdUVmlLMVZxRk1UbExHc2l0aDJRczNEdGp6dytIMDVUUDlTVDJTU3VsSml4U3VyYldOcVhwV2tWYXJDZ09GN2JGNDF4RmFoazhVUnBzTXJWOE9oZzFwSWtUTEZ5NlY5cmUxSmlaRnBjV2hwWkVhaWJVQlZxdWF2VnpSMUVnM3kwaXJVUlhibnBGV0FvY0RuSklJMWRpN2U1V1dSYVhHTlM0dU0wSkViSW0xQVdCRjYrNnVORW1oY1phYTQxOTFhYTBpcjJ5a2tXTVN5R1J2ZkIzRkRFeUNoakRReGNkQ2VJMEdVMTNHckVWYzFjMTkxYWFzYSsxS2x4S2ltWXNmMFVPd29UeUN2bFMxOHVTdm1OWHpHcjVqVWNUS2FMRnYvRkQveEFBcEVRQUJCQUFEQ0FJREFRQUFBQUFBQUFBQkFBSURFUVFTTVJBVElDRXdRRkJSRkVFaU1tRncvOW9BQ0FFREFRRS9BZkt2Z2N3WDRlQ0xPdDI3ZVdqaGY2aUs4TERMdXphRThaKzFOaUw1TTJQZ2MwWDRGaldpUDhocXBHWkR3d3g3eEdOMmV3amhRaUtOY1RSbU5KOEZmcno3ZU0wNEZHTnBGTElCb3B5MHUvSGdpazNiclF4RVorMU5pQVJUZHI0NDd5NkxkUHZUYmg0OHh2MHQxVDh5TVRHaitJNjh1MlppSHM1SitKYzRWMGNQbHowNUdOcFQ2QXNwN3N6cjJSdk1ac0lZdHYyRk5Qdk9RNzlqYzdxVDRpM245Ykc0bVFKOHJwTmZDWWFPem1UWVNDZlNkQXhvOE5ETHV5dmt4cWViZWNocHNnQXNrcDhZSXpOUmpjM21SNGJEWlMxTlkxdWl4RHczOGZmaG1PTFR5WHlwRVNUelBmVVZsS285S0ptZDFLU0lmc3pUdVEzM3haQWkwamhxMFZobU5JeklRZ1dwWW1CdnJ0Mmo3Nkpid0FWc2lsTWVpK1czMHBKVEliN1lDejAzQzlnMTZJMTdKblVjT2FicnNwWlFpMzF3c1IxN0Z1blVmeEJ1d3RXUkFVanIyTFhWMUg3QWFRTjhaTmRrRlhwWnZmU2R3dDBXZmFUU0p2c3dhUWNDc29WRmMrZ1c3UUxUdVE3b0VoWjFmUnBaUnNKdnZiS3pyT3JIRmRJdXZ3bGxaaXJQK0UvL3hBQW5FUUFCQXdJR0FnSURBUUFBQUFBQUFBQUJBQUlSQXhJUUlDRXdNVUFUVUVGUkJCUWljUC9hQUFnQkFnRUJQd0gycmFvZDZlcSsxWEMyRjUvVFZHWGhHazhmQ3AwZmwyRGFvZDZGeGRmb21PdUdXbysxWEMyRjV5Z1pFNWlZRXB0V2VldThTMHE0cTRxa0hBYTVLakx4Q05KNFZPa1psMkxYdWlWZTNHczYwSy8rWVFlNXhRNnpxVFhKdEZyVE96Vm0yUXJpbXlUQVRSYUl3ZTBQRUZIOGR5cDByTmUrNDJpVTJvSFlHaXdwdE5yZVBTVm54L0tOUk5xdko5TlVwM2hlQjZwVTdOVGhWSmpSTmVaZ29PQjQ5TldrT1JjU3FMU2RmVE9hSERWZUJpQWpRZDZRcmdwRzA5MXJaVEgvQUE3c2wzMW11S0RweXpDQ3JPSU1MeUpsUnhQWGNka095RXpnOWdldjF5bU1ETk9zVEEyMm5BOGJKNDZUOXhwMFR1TUpWeFFkOTVYSWNkRjNPNHpNWFlCeXZSTW9jZEV0bmNaZ1JLSWpPQlBTS243VnYxdE55dTVWbUlFb0NPbVJLTFNGY3BDMDJBN0VtRTNVOW9nRldLTm1WY2NBSTdzSzFXcURtaVVCSHBJQ3RDZ2Y0VC8veEFBeEVBQUJBUVVIQkFJQkFnY0FBQUFBQUFBQkFBSVFFU0FoRWpBeFVGRmhjU0l5UVlGQWtXQURFeU16WW5LQWtLSC8yZ0FJQVFFQUJqOEMvd0FDcUQ4UVBLdGo4UG9vWUJ3c2ZpR3dVZncvbDlCK0c4VWVWYkg0RUFRb1hFZEpJaFF3RGhZRmZOL2FDcm1FR2dvcUJNRVFKbXQ2VDF3Q2pmUTBRUGx3ajV6SGFaa2U1N0gzSzByVE9OelF3VlRGMVRGRGpNR2pNQnROYTBtaUZBQjFtelhWUnV2UXpEM01aZ3o3TjE3dWptRE1vNVJtamROWFRYT1lEaVVURTYwZkVpNGF1V2VjMjlHWU02UEJWUEtnb0dWcTU5SE1USzF4S0VTK2hVU29oUktIRWpWeTN4bUpsYTRsYU40UmNubk1USzN4S041d0UwZDNoYnFGd3p6bUpsYjRsaG9KeHRXU0lYYlZSUkJaakZSbVpHMlltVnZpUUltZG83WEE1bU9ZamlWcmlRblFYQjNNa0ZCN0kybEdaTThTdGNTTlhEQTl5Y1hMUjJ6Sm1VOEdRYm00aHBTUm92Q01wM09aSFl2NldTVmdBb2toZHdXSVhoTTlKVlpoOXlqYzNQU2N5YUd5aWVrTENKM3VLcnRod3VocjdYVXk5bytwUU5BOW91dHQrY0JKRUkyVkFWeStBVVdxdFgyaDJXbzFUSTFySUFpWDhsVzJzRkRTYUxLUDNsc0FxOTN3WWloVUM5cHJhUmhueGlWd2lYeGtoNU5jdHRuMThHR3JxNDZxRFRnTmF5dFNNajNKSExBUGhjUGdWWk9LaHBSNGMwSk9LUDNhdVNOc2t0YS9DanJJR29kUXdrYUw0anRkSFNyOWxHNUoyVFEzeUlCQWZHNFVSZ1hrdnFxVVJGckZkNnBWV2ZKeHVpZFVjaUczd3VKanM4c2FDNHREdUQ4Q3FpV0FRWlE0eUpvL0docTVvYk9BVWZCdVN5eU1WMVZMcXJwb1YxQjl0ckZ3NHlJOC9CaEtUSTAxczdjWEZyekxWZHE2V1huYkl2NlNvajRFYmdvYnVpRnZwOEFrK0VUa2UyaW9mVnpDNjRrYUc2aHBSOFFyTFk5cnBNYjc5c2U4azBhVVI5aFEvVXJ1dWt6eFpObHJWVkRMUzZvZW54bDVrYWE5eW1IQ3NzNEx1S3hWaHF1N3NSY1FIY29uSklzcmZSYUhaUlpyd29OVldObmxVdllTMDl5UUMvYkhzeU5OSm83T2l5VlhwTW5VMEZEOVA3eWVJVVAxS2J1Nm1Zcm9hKzFTUHBWZ1YxQWhkNGxpcUtzWFlmYXRIekxBK1ZBdW9yTE9IazZxTWdIbnlneHJKUXJ2YSsxVm8vZVYwTk5GWHBMK3BrRmRzRmlWUnNyK2MwcXRrcUM2cElPcGdzQ3ZQMHNLT2dWMWR1cWdLTXIrNlMyM2pvNG5NK2tyckVGMG1NdThuY1ZWVjhxdjNKSFZVd2ZVSVFhSzcvOEFpcTBWMGgxZ1luTnFMR1BLNmhCZExRZEU0cWl3V0JXRXVKVUZzL0IwSklsRm81MVJwZFRNVldJVkdoTmc2TFhsK0t4VmF1Z1hSS2ljL28wVmpGVlpWWWhkeW9RdG5VV0N3V2l4S3hWU3Y0ZU9xaTBmd2FqUlhlVmlzQXUwTHNDN1FzWUtwai9wUS8vRUFDMFFBQUVEQWdVREJBSURBUUVCQUFBQUFBRUFFU0V4VVJBZ1FXRnhNRkNCa2FHeDhFQmd3ZEh4NFlDUS85b0FDQUVCQUFFL0lmOEF3VVVFNUFxeUliOU8xVE54SUVZNi9wNzBwTlFud0FRRUJPOFQrbUE1QkRwdUZPRjM2Y0VxRU5abmpFMEp5MVVRUitnaVNpZFc2SU1BYXB3d0tRWXMzWFJUQmlLclZOMyt0QUFoREp6MGFkQ0JXM3gwWHFWQ2ljWUJFSWdoajFSVkNKQk9pSUFERWR1cVRJWVRpMUNGUmpEUkFiUmRETUhZMXpRTmNNUlpBRVRkRkZPV1FPQ2JvQ3FHUFZCYm5mWkJLRTJOMndWeXRLOUFKT2FGMC8xNlpoN0tLRmE4c3JYdmhGb0dEM1JFcGpuS3VZdGtWY3hiNFZPNUlSTTFBOXNCWk1UaEZJY0lab1dRL3dCNWhBSktrL0tKSkVtcHlBT0VBZVlYVDJ6SjFKeHZFWWFEbEJ5RXVxQXQ4WGNLQnZsQ3E5S1d6YnNQUkJLcnd6WFRuSDBzZHdpSFo4b3M3Z2pkWE9WakJwVXB5dXptWXZkRG9peUxsRzVybDNEVHNPV3R0T2JmMEdGU29JM0NJYlA4Zm8rMkl5WDdocDJBeTFOdml6ZUtUemhXaERLRUxTVUE3SXhnQTVPaUlBTVJvY3Z3L25vMURZbnQzSDN1WDV1VnBMY3dvVlRJQTBWaW5PdVVGVndqS3VVNzNBY254T2pBMzNJN2dLRjd2cEg0aXd4QmZJUzYwckFEMngwQWRjaVQwWUZ1QStlNENoZTd5L1YzR1dCdWZJN0FTNjNrTExlUXNXU1dLcEp0QlRqcUNkbmdLNUh1QVh2Y3YxZHhsbzJBejFIMEU0eVJBRWtKeWhPRlU0RWdEZ2ZORVdoOTUvbnVOZGZMOVhjWkdCdXR3RG5oWk45Y1NuSVN3VU40amxFbGtmaExlbmNhcTRkRTRYQjBCSDBXL3dCeVBJWElnU3dwaUpkUTV6S0x1MEJjb2x5U2RlNDFlVjgzSkVsMkhRanRQZGtwSGtxNDZkZ0JsaUxmemp1VXpXSkdYNnEyU0c2SG9WL29HU095YkVXVzZOemI1QktvdFFlM2NwY2hqOE9DcW5JSzBPUkVjWVVkSllGQVhCUXllWVMwb2d3RWM1aGQ2Z2w0UkxrazVEQTNNZGV3ZktEbFY3eHNkVVlwN2pPNlQxMFN2ZkowQkFHQUhsYU1Md1g5WWxYR3VLWStMczg1WUcyWXcyVFliOHdRT251SUVOL3hIR2p3aXJKTFpHSmoyNFlDNUtZZjZqclN3Rzhrd1JzbHpRZjRaT1RGdVFjYUlQbUkwRjFGNlJ3cnlPWVlxc3lhU1BiU0FBNUtlY2lxZndEU2FKcVBEVFJGSVdJeDRBd2VjaDlJQkdqREFFNW1weERteFRGaFFOeTQ3YXlHNVA0TDFoc0dIRFFoWUx6ZkRjeGZYemlBNVpBaXFSS0p6dGs1STZPVTY2WkFhVkoyVDVSWWRzc2pxZ0FBQW9Qd2E4V09wN1EyVEdxa2N3cGlNL1FTY0dvdGlBNUFGU2pEZ0tRZU1mc2FkSG1rUjJSN092eC9DbURjZkkwRHZVWlBaT0pXQ1ZNUFRVTW5DRU1CSk5nbnlnYUN3Nkxsc215SFlqV2FsQkE2RDhIUXZDRUJzbnNsQUdyaTFjSEVBTURoRVhkeFFiSDRLeVhvZ3JtQlEyVSt3VzZUdzZreHZBZGk5U1B3dlJ5Q1dEb0t6VXluQnJMRm8yQTlBUmcveVlpa040VlNCeU1wdzFpZ0NOQWc3RTUvRCtDU3djb0tqVXprazE3QU53TERreFNhbzNSMVZEaEJnUVdBMUVRQmdCVTEvR1RXWTN3QUpMQU9WUXUwVzdJNHpYL0JTYS9Md0NCaFY0dzRnekFUQk43b1NHU0RQbEFzQUkzUlI0Y0ZVb0J2ajZQZGlNMGR4RFJYQi9BbWVJeVBCVFFNRFFvR0J1b0s5OEFZOGhSdU5YNEFkQkE2TWRxUy9ZNGxPdEh0TjBRTVFHUlVaU2hoVXdnR0RaREFOSlpTU3BVeEhFTVVFT05pSE9Ick5WMzdJSXhJZFhSeVlnSWlCbGxVSGNaenZ3YUdnSW9keWRsREVOc1VuUUlHUWxnNVFWR3NzandVQVd1UTQ5UmdndWNLbTVXbDdpQXk0SitWYnd3RWRSZVVDRElMNTZ5RDlrUWhISjdJSEdZaFJtTmFTYmJ5SHFNYTFJaXo1d1ZWM0VCQU9UamJvUkYwQUFBQmtpZVp5aVRnZ0ZpeURBSlRRZWtnMXlPV0laZWg3RDA0TkNoVEhzbEFnaHhPTk1HeUlZRzNJa2s1TG5zdzBVZ2pVSnNtZWhBZ2h3WENBeGJrQ3JXeUU1d0hjMUQrYUdSSHNrcWtlU0VBQndRY2FJWkhyVGhibUxGTTBCeUZ6ZWlKcU1GMGZNSkZXMlFtQkpUU2ozSXQ4WnZnd1BJMlJXaktqMld1SURsaFZlVlhKTWhWSnprcXdPQ3Y5S3FvK2UxalByRkZDK1pSQXZURDNvQXY0b0tPaU5ORnd2R0h2eHpCVE5NYWxDbERmVElJRFExSzBXNTJGYmdlTUFLSUQ5UjR3MVU2R3lNQ1VOQ2RaN0YrVUpUcVh0aUFTV0Fjb3hBT3l4VVZ0NkRqdWRmV3NhSStPY0VMY09VeWlTb21VNFdJNFQwRVFkeDVLZkppT2pNSUNEVEFscXFwOWdtdXJMSUUxbFFwOFlOeENEa0FBR0Nhb1d1NGhVRkJ2aEpsL1lkMkJFNUVIWlZabEs0ZTlWRWVVd1RWd2pOellwbXZwVDFXZldVREp4QzRCdGdiRGNZWVpJZVM5WFZUZ2NMSUVFT0NpQWFnSEJDa0FWVW9hWkRmeGk2S1RKN3pSRkhKNWxBVU9DK1FLcjI4NE5JcWFZUUhsZE1GQ0R5bi93QjBDSFlEeW52bWJZRUNYRUhaTVA4QWNKckhvbUdva25xdWZLbnFib0VHaFQ3ZUJkYU85QmJ2OU5IbEduSWNndE4rQ2pxRWFKSEtxaThyVTBlNVZWcU1XS3UrOWIxU3Nua0w2UWlRT0FibE9RQjBUOEg5R29BOHFoSUFOQjVDR3NSRC90TC9BR0VkRVMwMXdDTk9ibC84VVAvYUFBd0RBUUFDQUFNQUFBQVFDQ1MvL0RSOTl0QkJCQlIxKysrKysrKysrOHhCQkJCRjk5NURYLzZDQ0NDMi92RFY5OXRCQkpCQlJ4ODg4ODg1eEJCQkJCRjk5OUJIL3dENGdxZ2drdjhBOHNIWDMyMUdxa0lFRUVFRUVFRUVFRUVFWDMzMkVQOEEvd0NnZ3ZpZ2dsdi9BTXNIWDMyekQ2SWtFRUVFRUVFRUVFRjMzMzJFTi84QTZDQ0MrdUNDQzIvL0FDb3NmZmZWbllzQ0FRUVFRUnpUZmZmZVlRMy9BUDZJSUliNzY0SUlMYis3ZDNyWDFhL0hrMDNnazAzc016VDNFRWQvL3dDaUNDRysyKytLQ0NDMi9PL2hCVjI5OWU5OU9LZjkvd0JqK2dRei93RC9BT2lDQ0NlK1MrKytLQ0NDeS84QTFUMWdnWXM4dmpQZnVjWVVpaDMvQVA4QTZDQ0NDZSsrQ1MrKytLQ0NDUzJWL3FQTEphaGRDQnFERERML0FQOEEvd0R5Q0NDQ2UrKzZMQ1MrKytPQ0NDQzcydjhBL3dEMXI5ODUyWnIvQVBwLy93QWdnZ2dodnZ2dWdyUXdrdnZ2cmlna2lRbDh1bnYvQU9uK1Uzdi9BUHR5Q0NDQ0NPKysrNkNEOXRMQ1MyKysrT0NwQ1ZDQkN5eWh5bGFIaUNCQ0NDQ0dlKysreUNEZjk5OUxEQzIrKysrbENjSlRDQ0N4Q0JDcENRSkNDR2UrKysraUNEZjlSOTk5TERDUzIrNjJQODg4ZjdJaENaQ3ZLUE1QKysrKyt5Q0NIZDk5QlI5OTl2RENDeTE4ODg4ODg4NUFPdEs0K1AzaisrK3lDQ0RQOTk5eEJCQjE5OTlQRFU4ODg4ODg4OGo4UDlwcjFWNDk2eUNEQkhmOTk5aEJ0QkJCUjk5OTlsODg4ODg4ODhuOG5XcDhmdmZDQkNEVFY5OTk1QkJCOXRCQkJCeDk5Mzg4ODg4ODg3MDhYRXkvODg4ME1yeitkOTVoQkJCTjg5OUpCQkJCeGUvODg4ODg4djhBTy9Kd0Z1UFBQUFBQT09ZUVFRUlhmZFBQZmJTUVFRUTZkLzhBejkvMy93QS84c2Q1RmRaYno4d3dCQkJCTjk5OEFRODg5OXRKQkJSakZIRXlVblFHemdkcDloV3hod0JCQkJOOTk5ODRBQUEwODg5OXROQkJnMTh2cm81L2owUGZ2Zm9CQkJCRk45OTk4NGdBT0FBQVEwODg5OTlOTkJCQkRKMEFBVEFRL1JCQkZOOTk5OTg4d0FBQSt1SUFBQVF3ODg5OTk5OU5OTk5OT2N1ZXROOTk5OTk4ODR3QUFBQU8rKyt1S0FBQUF3MDg4ODk5OTk5OTk5OTk5OTk4ODg4d2dBQUFBTysrQzIrKyt1S0FBQUFBUXcwODg4ODg4ODg4ODg4d3dBQUFBQUFPKysrK0NDUzIrKyt1T0NBQUFBQUFBQUFRd3dBQUFBQUFBQUFBR2UrKysreUMvOFFBSmhFQkFBSUNBZ0VEQkFNQkFBQUFBQUFBQVFBUklURVFRVUFnVVdFd1VIR1JjSUhSb2YvYUFBZ0JBd0VCUHhEN3IzQjcvSDJleW81S2lGT21Eclp2ckVSSS9aVTd3N2h0NGZtRUx2eXpLenVUMytQc0pSc3QrcW1GR3h5ZWpxS21uSlVCMW1XZHR2dG9qc3RucXJUM0d1dWgrL0hCelFrd1ppVU9qVlhMZC9iL0FIbGorMDdoTjRmbVhEL0xOOE14Mkt6L0FMTWdFMU5jRXdhYU1NUTRtYmhUZnY4QXVFRWFlTVJScytaMVlSNWQ4dnR3RlF3bFJBVTFIMTR6THF0WHltV1pJNHFvanZ5SGZCdmtqZ2U0ZlRQdU9BYXUvd0F6SFBFZlFiajVEdmczejFFSXVuWDlRQVhLNDFzb3JmZHhLYTRmUWI4bDN3YjVZdDJ4Z3hhLzhsbzBvN2pBTG9ab3JXei9BQ0ZXZzVQSmQ4RytYZkp2Z0RheVdTMHBDa0Z1M1BYa3UrRGZCdjBIRnVkVEJWbjZpcWxyejE1TEt1RjJwOEVvNjlIWEJ4MXdBdlVBS1dQMmVUaGdBMTZFSGNVMXdEeDF3SkFTZzBRVDJGam1XRXFMc0hzZTc4ZXZMNkRMOGtTbzhVTDRTWFQyaFZsWExnMTBlTmlQb3ZBNVJ6RFlJbGtSR21kY1BvTmdqandSaS9vbkRLT1VoM1BnbEpmQ3VSYmMzZUNLSDBHSEI3enJCcW1EWlo2QUcrQmRRVUFVVE5lRG9NRzlldnZoNDZSandPbnJvWDRTQnpCbVhDbUJCSFhDWEFxTFVPTytOT1hHSmNUbXc5eEJIWEE3UjE0YWFUQU1XMUtkTXZ1UVgybDVsZTBXb0ZTeWJZdzRoamhGRmdPYmZIMGtCM0FPbyswMU1RcTVraXNKbUk3SjhFd0V1WDVvV21DN2xJUEJIVEt2TS9QRmZFZXlOOWpXaythZkpGdS80Si8veEFBbUVRRUFBZ0lDQWdJQ0FRVUFBQUFBQUFBQkFCRWhNUkJCUUZFZ1lUQlFrWEJ4Z2JIQi85b0FDQUVDQVFFL0VQMnJWYTlmZjZmREt3M0RQYmcvV0QrWUlsbjZVYWU0cEREUi9pWUNOVnIvQUwraGNoVlV5Mm40ZHl1V1lZWjdjUFZxQUE3K1YxNlFxQnBmNDhkQUhxQnQzbVdPWlFlWkFpVTFEVU9TNWJQVXhDdFh6aEV3M0c5aE1OVyt2VVNndS9HY3ZUTzhJY211VDN4WDJTQmlEdUgyaVZ0cnJsQll3a3ZXYllhOGcxdzY1WWIra3hHbjF3NWRWTXlNdytEcUhrR3VIWFBjSVdOa0JCREpNRHkrdnFEWndmQjE1SnJoNUlIMkVRZFQ3UkRVSUJWYkNlMzNINlY4dmttdUhrMXk2NGJDOE9ac0dLamNIUGZrbXVIWERyNFBGQUY4QVUwYzkrU1RVYXR6N0paMzhPK0hqdmk0RVZhcWY5K1VsWGZ3Rk5RTGNDRGp2aEFWaVV0anpxMUZ0WXlRcmxmZmozNFB3RXJ3d2JoeFlyZ3dIY2JjSkRLZWZCeFRpRWRLRFRCRXNuZkI4SFZvTitDczErRjVzNVFqVSt5V3RmRTZLbXJ3VmwrQTVaMmlYWkVwcCtDSlhDbTRpSXJacThIY0lsYitmWEJ4MmhEaE52bllyd2dwaVZjR05zcUltK0JxTGNDNDhkY2JjbWN5b0RBajZNUk44THBESGhodE1nUVJ1VzdKWFZpSHVWaVhETWN5bWFoSm1PZUFFR1I1bzhmYVJYVVViaDdtNW1OMU1RQ014QmRNK3laV1ZLODFEdUo2bDRsRVRaTHFmMjR2N2gwUS93QkdvWjlVK2lCZGYwSi8vOFFBTFJBQkFBRUNCQVFHQXdFQkFRRUJBQUFBQVJFQUlURkJVV0VRSUhHQk1GQ1JvYkhCMGVId1FHRHhnSkQvMmdBSUFRRUFBVDhRL3dEZ3JJZEtVN1JQK09DQk5LT1pzK2hGV2FBZ1RPYzZpNkZRbi9HUUpTK0pzSmcwWm1pVUx6UUIyem9pWFBGcElZLzR1WTM1RkdEOXZTbWNBbE1HQi94WXhoUnFLaFV1RmFMWHRMSHZQcHhPQTR4bFRxSTIvd0NCRmlpQklEaEpqNEwzRW9DZ2VZWFFMY0RFbW5BTjJtZ01rektTNEtVWW5qcEdQbUFtNm9aQnh0YWtkWnhMVThDOE1GN3d0N3h4Z1JOV0FJMlRCcTRrWWhuVVVYb0pjbE5Ba1orTGVLWmZSSTdlOUlGeEErWFlOQUdTbWdCak1GWks1QW9PN0N5b2NKaUJuemI1RTZZdndjWkNPUzBVUFYwTzlZaURnR1JweUxZRmk3QmhTandKQm1pMm1PTnNxbVNDeHUwbVFjWEtuaGVFcFQ1WW9EeVRGNk1ObmRpMzVqbTZvTjNRUGx4bWhaazFEZWx0aFR5SXU2Nk8zS1dLRENFNlhuNm9INXBRd0g1ckFIUFdRcmU4Q2hyZThDbDRRaXNFRXBpczRTSFY4c1hjVUpuRmIxVFdNSzM0ZzkyZnJtNkF2cWZsekVmSldhNUNuS2xKWGtEY3FPbFFoTUJwU3M1WVpFZEtpZ1hGZE9DaVJiaUR2eTVieFdNYWtUVnVrSHQ4d2JUTjNzQisrVVNEVnBXY2w5TnZybXQrM3FEZ2VuS3N1U0kzYTltOXg1aEdEVzlTcmkwWTFoTlI2Q1ByekR1TXU2OHV5WTk2MzFIMzVUd0o5QXBXODA5dVkxY0JHVktyTFY0YUo5ZURzR0ZiM3IzZk1MWCt3Y3ZlSHN2ekxWWHNZdkF6S2o3Wms0a2RhUlg1Nzl1WHY0SkdYQVI2RE5KUllyUG1HTG9IdHk0M1VlL210QnE5Uzd3VVMwcE1SQlJ4QllESm1rcEtnQmRwUVdLQzV5MkxxRDJlRGIrcmpqM2p6SEQ2UTVjYTArT1B2bGt6Q1plaGVwRXpHc0tvVE9kTzc3a1NGT0h2bTA0MFBKTlFCdWtRVVFCbVIya25rc1hWSHY0UFFzRHFoOFQ1aDd3NXV0WFJlNkgzeTczTzZlSkRmaXNFdFNKcXhmcjVQcmk0aEU0QlRkQmlzUmxENE80anVnSit2TVBlSGg5QnZWSDJzY1JUQ2pxVlBTa3hVaG1KZXBvak1FSFNlS0Z0a2RZcDNKaHNsT3dYRWFHcEVZZWJmamZTd2ZENWdvUjBvd2Znb0FsZ3B3ZkQ3ajc1N01uTDBINmNRQkdvSUNTTk52QzNHYlV0d29xMFF0aXk1VTY0MlFuZm02eDNxZk1UMGcrM2d3YjFpdDdoT2ZyY0hWQjhMeGd1ejVMaFZqL29qbENBSlZnb2t4a2k5TEQ0OHh2MUQ5dVc4YzEvSThuV1lPc1c4Qzdaa2RncjhPUkNMeWdxWTB5RW1jVTVWSXIxME43alBLRUZQWVJkOWltdmhVdm1OK3BqNk1jdDhOZmpuNjVPdXcrcy9YZ2QrMTFYNERrQlB3Qyt4TktwWEZ2eHMvbURsNnNnNm8rQytaZndoeCsrVzhkZm52MXlXVDlBUjk4NEtnRXJUSVRJUTlrZlhKNmQrcXg4VHgzVE5iL0xrQ29La21DT2pZUDJucDVsWmRIMUVmWEhBZzFMUFd2N0ErazFwdzVKeFI5MS93Q2EwSEg5VlBxdjRWZXRhUjlsaXUxU0l1Z2ptQllsWG9DWDRwbkVxeXZKdkJ1d0krK0lJdkJsNlVxcXVMeVBHWXFCUTNvUy93QWFsWUVSaEhFZk1lN1U2aWZ1akM2WkYzb1VNSUMzdmJDZ0FnSU9lS0UwRTFQTHJINExVOTJYWit6OFZNSU9xOVJ4M2xEcUw4RHkyTGxucTNmbmowZjc3d2lweFl6WGQ0U0lkS2lvWEVTaUpJbHliclJwZ1lNUzRGaTlSMWtsTkZLZ1JHRWNSOHVZcTZBS0JoUTl2RkpKRGhRYkw4aUR1WVZMZDZKMzByZGpIVEI4UHJ5VHRZUkxvVnZ2Snh4OWZaQ29PNkwyYjhWZXEzWnZud1VkZkNVdzRQWklReVNKU056Z3ExL2ErV3BnVkFHZENTQjlEWS93SUU0QmVoZzV4YkkwMnBjK09Iai9BTzJpejRua3VaSkpvTFNMaXM0YUJTcXBXZUF3eVZoS0F5ZCtNQ0RHdDV2UUdCNnkrbmxvYmVEa2EvNFZKekIyWiswMFdJcU44QmF4UDFVTlJ5R0ExT0crRXVoWTRrQVlyRkZnV0V1MkZLQmljbmQ4M3ZZOWozb0xCYVZwS3FEMFF1dFczZ3NhQVdEMDhzYUF4eTlDakxnSUQvQzJ6S1R1L3dCNzhWQXhpejFUMkVJRys1UUxFaUR0Wjk1NHl5Uy9wY0h4NHY4QVBGalVwQVVoMlNPZ0krdUwwUGJMOXZ4NElRRnpyQmhTUW81ZVJ4Z3ZXNlA4T0Yycmx4OUJsN2NnTGt0Qm1oWXBtV2NjNTRrNk1PQkJJY0dsU0t5akxiZ0lsd1JkVEQzaWtvdUt6d0VFZ2JJeGFlSXlOQXNIZzlGNzFmMVVaa0NSMDhpYkZSRkVCWWovQUF2RHhjTy82b0FEQUk1QzY1UWQzOWZORlpsdEdUbnhWNHRiN2NVNUV4RW1uQ001S1NyQURCWVdDOGZIcFRGaWR6U1l5eUxOTWFMSWM4anV4OVBDVVZlMzBLa3hnejI4aWs2U0IveGZSUGQ1QVJXQWxwZ1lqTHYrcU9CdWgrL2JpTXpkQTNjZms4QXFBVTJ5NmNUcE0xRlh1UGh5bFpMd1ZoS2tVQWhtSjlYeUxvY1B0L2hCc0FKYVl6akxrdEZvUFF1LzIvQ2VNaDdjTkJrVFJTMEtYUnc4Ry84QU1BWkRmMG8wbXE0SFFvQkFBMEtpaE5FbWlYcDVpcEUvUmtlL0FFcE1BcGlRa1hNbjU0SVNNaDh2a1JHYXVmNGJwWnBlaHk3QS9hL3R1QmtXOHFraFJ4SzdBblZ0UW9pV1NnTnR3TlRYd0FTR0l0aC83eXVYcklUVXNkQkFwaWRpSmVNYUd3UFNYOGl2TlV0MDNvR3BwRS93WGxnK2dja1drdUFhdVZYTmxDN3E1OEx5MnJZSm52Vy8xZlFzZmZDSXRrWkpwUXBZSmNibitCZm9RcWRtVkx5TzdzemN3N2FWREZyV0o0UHJQTTY4cUJ4bUgzUkdNQWprMnFUNjVmZklvRXVvTzdScXdFSGJIM25pWVdlQ01WUEl1dzIxS3NCMklOenQ0d3dYR0tleDVJdFZPNHhHVnF1OGFUSE9wbFJSL0VFbWRidEtUYzdjN2s0eG1EUnEzYzBwVTFKTFVYM2VOOC93eThoT2tBUzB3amhwYmJlbkpBcjU2SVBlbFVxeXQza0VLM0s0RTNYc2ZOSEZTU05uVzZhVkdRZzBsVUp2VVhVSno1RmlScnJ3ZGhqY0ZBd0JxTTg2RndsajVOSmdSS3Vma255aFZzMU9VQVhzVHB0VS9mZHFlcG5VMW00RmdkdnhVQ1JMSVlPLzVxSUcwYkQxd280Qk1GU1BnR0VvWEU2R3RZVEFXNUxUd2ZSUDN5c0RSTXhzY2s1WmUyN1VNNmJrT1hUa1pRc1I2dDM0OTZ1QkNJNm14N3RTNnRFVWhtcjlRb0FITVdCNk5BRUE0SThTbGROVXZwalFLOHRvNzlpbkxrWlZidmt5TldrU2lZT0NIRjEwb0VKTGlNalVJUzJRbmZHbnlsZGM5U201UXppUFdQdW8wUk1iajFLZ1JmV0ErcWlJaTVQN1ZGR2FqUEZRS3NCalVnT2dPVlBrR3c2TlI0cnVmSmF0Rld3bjZvSlk3RzFIYkg0cWNZOFRreTdjZzRhQ2FaU2dyMU5FYzI2QTE0UklBTG93RFZhTnZXMlFaYkZQaVpUeFFBVk1BWjFMaGQ2aitpaGNld2pEMytPUldldmhRSkIvWnZROEg2SStWd1NiTmQvU285NWNzYm8wQUZDT1p3OVpJVnE2aVdybE45NlIrcUpKK3BkODFnamFEZjVXb2pvYVAxUlVjQzVmRkpFdEFjWDRvUkpHZUNoZHAwbFMxZ0duZWtHQ0NZUlJrbXRYT2pVREdlcDl5dElYUmZpb1VneGNZYlVJZ2pJNFZDdUJnNHFobEY3R1hZTmF3N3oxTFZaMTBCRG94OStKcFNXQUpXaFlmMkx2U2dWWUM2dElLNCt5dy9QZnpORWhkVjZLaFVMcm5walVMZHMzT1ZJVGtCODBZbHpOMWNWcEJJYmxNOGxlOVBhdWs5dnhTeHhDVzhlbEFvSnhHaGtVWWt5ZnlvQ1VKdHdBS29ET29qRmxib3dxU3c5NTBVM0FEUTJhbEdJbENQWDVlMUR5UUVDQlRNUTR6L3JTbGgySDVVWDF4dSt2QU1GR0QrTCtiRlNyQlVOUUlSNUMvclVTUGFsbEVUc0pkUnlZcllETnBFcE9KdHRTQ21XSmsxZ0dkM05mK1JVbUtkQ2tVWXZRTFRrVFJpTUhGWmNFc2ttcWo0cWVSOXo4VXJsM1NZRkl0S2VJOXhVYVNiVWZCRzVOYlE2VWxJbldMMHBiVFMvcmtZcStHWXRLa2dQUFRiemtWU0tKbVViVGl3Zm1xS0N0VkRVR1ROay9GRW5RS0NKSWliVmhLYlEzcXdUSzNYVnBJV1FZQ3lWa1YyUTFIaUhwUmFqbUt5cUVTWWhaMmNMa05aUldXQ1VTWk85MVl6V0N4SFNrRUlqQ2NGU05ZUllZaHZRc2dtMUliL0p4b25TQmg0RHo5V2E0RFloRlFMTzNvOXg0bjRyRGR0WlE4OUVGQ1JtWHQvR0JTQVJKSEtzby93QXNhaXhld3JRN3lGYUlHcXkwUnVGbVp4N1ZQWmNiVVFtYzF1MHdqb3JIN3BNeDgzL2hSUmtVZHF5TXRGV1JEUnZ3dkJQZ29vT0s5MWYreXB4Y3VxMFlnU3FlTzNUL0FQaWgvOWs9Iik7CiAgdXJpLWZyYWdtZW50OiB1cmwoImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRRUFTQUJJQUFELzJ3QkRBQTRLQ3d3TENRNE1Dd3dRRHc0UkZTTVhGUk1URlNzZklSb2pNeTAyTlRJdE1UQTRQMUZGT0R4TlBUQXhSbUJIVFZSV1cxeGJOMFJqYW1OWWFsRlpXMWYvMndCREFROFFFQlVTRlNrWEZ5bFhPakU2VjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZi93Z0FSQ0FHdUFvQURBU0lBQWhFQkF4RUIvOFFBR2dBQkFBTUJBUUVBQUFBQUFBQUFBQUFBQUFFQ0F3VUVCdi9FQUJrQkFRRUJBUUVCQUFBQUFBQUFBQUFBQUFBQkF3SUVCZi9hQUF3REFRQUNFQU1RQUFBQndHL25BQUJBSkFGQUFKZ1NBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQkNKZ0FCUUFBQUFBUk1DUUJRQUNZRWdBTnNzdDRHdUFBQUFBQUFBQUFBQUFBQUFnQUFBQUVRQUFDZ1JNU0FBQUFnRW9rQ2dBQUV3Skw0K2pyMDhPbmw5dmlYOUcySGtIcDhRV0FBQUFBQUFBQUFBQUNBQUFBQUlnQUFLQUJBSlJJQUFBQ0FTaVFLQUFBWG96MjBWbngvUm0yZW12bnpnOVhoTmM4OW9HdUFBQUFBQUFBQUFDQUFBQUFDRUFBQ2dBQVFCTUNRQUFBQWdFb2xWNCtpOC9yK2JlbnpiZWNPOHdBTFhuR1dVWHoyNjduNitUM2VGZjA2NWVNZXJ3aGVRQUFBQTU2UGQ0ODlxb2JlY0FBQUFBSVFBQUtBQUFJQUFFd0pBQUFBQ0xWbm5TL1M1ejUvMWQ2NUZuTFhMMi9ORGJ6Z2JZN1l5cjBjYWFLejQvb3piUFhYRE9zUFg0SlFMMTZ1dms5L0ZKOUhraER2T1VCTWFZZW50NDh4NWZiVGJLZXBrMHo5M3pBdklBQWlKZ0FBVUFBQVFBQUFBU2lRQUFBQUV0Yk5sNk5LMVM3WmE1YmVjTEFOY3RjcFFzQTJ5MXhsQ3hhdHN0OS9aem5oK205UG1nVTF5K2g4Z08rRnF1Tk5GSGw5MTZRMjgydVd1VzNuQ3dJSUFBQUtBQUFBZ0FBQUFBSlJJQUFBQUNBYlk3WXJLQ1RlbXEwcUFXTk05cGM2cmM5VmVyemM5d05NclRSbDZMVk9zOWN0Y3U4d3NBQVRHc3NaZ0lTWUFBQUZBQUFBUUFBQUFBQUFFb2tBQUFBQTJ4MnhBUnRqc3VTQ1NpUnRTRnJhdW5uOWYwZkh6eng5R2E3cm5GZW5zK2NGbXVXdVVvSUFBMXgyWEVJQUFBQ2dBQUFJQUFBQWlRQUFBQUNVQ1FBQUppUytlbVlBMngxTWdnRzJPMkt6Zk9jOXRGSGw5dDgwK2p5YVpYejI4ODJwNzh0L05sOUY4L0xXTFJwbEE2ekFiWTdMaUVBQlFBQUFCQUFBQUFCRXdKQUFBQUFBbUJLSkFBTmN0Y2dCcmxxWkFHaGJHMVFFQWJZN0xpRXRwbmZ4L1M2WE9oajZQUjVsdHZOaVBaODRCdGpxdVFBQUFBQUNBQUFBQUFCQUV3SlJJQUFBQUFCS0JJTmN0Y2dCcmxxWkFiWTdHSUFBRzJPeGlCZW1zNlZveTNuWEhYWHo1Q3dEWFBYRUFBQUFFRXdBQUFBQUFDQUFBQWxFZ0FBQUFBQUcyV3VKSm9aNjcraWRjdDBvVG5hK2lEeHBpd0FCcXpJQTJ4Mk1RV20yUUFMODZYeDYvSzQ3cU5jQUJCTUFBQUFBQUFBZ0FBQUFBSlJJQUFBQUFMR20vUjkyZW5sOVJ4MkNnQVI1dlVUaytENlYxejhvNy9LMDR5eTJ4dklEV3NGUWE1YSt5WER5Kzd3azNwcDVmZDlGeGZPejJuUGVuZVdBOW56d0FBQUFBQUJCTUFBQUFBQUFBbUJJQUFBSjcvbjZtZWdjYUFBQUFBQUltaWVIai9VNGQ4L050TXRNdHN0Y1NVU2UzdDBqTGI1eXByak91TzJlcGs4L3J2ZWtlanlVR21RQUFBQUFCQUFBQUFBQUFBQUFBbEFrRGZEdHpyb1NZN0FBQUFBQUFLWG9sd3VQejMwL2s2NDRlUnJrOVhsNnN2WHgyWTdmSnZiNHQ4SjBuRUdoYkc5QUFBQnZoMHBlYTJ4c0VFd0FBQUFBRVRBa0FBQUFBQUFGdnFlRDlCbm9IR2dBQUFBQUFGTDB1Z0twZWljVHcvUWZQNjVPM3hPNGRBWmJSNGZlVG5VNml6aCtiNlh3OWM4RWFabDRLZ0FkdmpmVDhkOFB3OUxtOWNoWUFBQUFBQkFFd0pBQUFBQUFCMXV2enVqanNFNkFBQUFBQVJORVhGQXBlbDB6K1grcitVMDR2NnNNZXVQckhqOW1Pd0tBQjg5MC9aYnJsRXVldWZ5UHA0NjQrVG42SFhybng5SXowNG5OOW5qMnhDd0FBQUFBZ0FvSUJLSkFBQUFBUFozL2xQVHgzOUl3M3owQlFBQlVzQUJSWkpDcTJvazJGajViNnI1anZPY2RjdE9OTy93RE9UemZxM0o2V2V1Z2xBQUFBQVV2eWJPVlUyd0FBQUFFRXdBQUtBQ0FKZ1NpUUFBQjB1YnBMNlBSMEs4ZDdhOEdaZTY4WHM1NmtLODNwSjR2VG9CbU5Ja0JZckdpQXJpZHZsOWM4ZURYRVhOcTYrT1hTdFZuWTZ2RzZlV3VrL0o3V2ZUdkY3ZU93VXk1bG5yNENOY2d2SUFBQkFBQUJRQUFBQVFCTUNVU0FBVzYvR1MvV1ovUDlmUFREeC9RamhldjMrWTAzNTlWNmJ4ZWptNjVsSnVpa2FZMUc3T05GQmJPdTlmTVkvVGNiVEx5K2pHMW1WU3hMc3krdng5VDVuUFRBYTVMVkdzWmxCQUFBQ0FBQUFDZ0FBQUFBQUFnQ1lFb0VnQTI2ZkdUcjZuVDVQMThkZlF1YjdlZTlhVEVMMEFWQ21xVnZOSmJxVUxGNmkwVmpERDMxczV0K21NZG1Ndms0ZDZiWkJlUUFBQkJLQUFBQUNnQUFFSWtVQUFBQUFBQ0FBU2dTZ1NBRGYyY3hMM3ZWOHU1Nit0cjh4NkplKzVPODY5ekhhV0syMEZDQXBFaXVsT2FuUStlcFRUTU91UUJCS0FBQUFBQ2dBQUFBUUlUQWxFMEFBQUFBQUFDQUFBQVNnU2dTZ1NnU2dhYStaTDdyODR2VW5sSTZtSGlGNnc2NWxBQUFBQUFCUUFBQUFBQUNFQUFBSmdTaVFLQUFBQUFBQUFCQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFoQUFBQUFBQUNZRW9rQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFQUFBQUFBQUFBQUFKZ1NnU0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBRVJNQUFBQUFBQi8veEFBdEVBQUNBUUlFQmdFRUF3QURBQUFBQUFBQkFnTUFFUVFRRWlBaE1ERXlNMUFVRXlKQVlDTkJRMEtBa1AvYUFBZ0JBUUFCQlFML0FLRktqTVAwL0NlUEZSaTM2ZEhJWXpKTTBncVVSL3FDOFNUYy9wZDZ2a2VFZVFRc1AwSzNKSEV5SDdzc0oyWW1NYWYwQVZvVm81bzlEYjQrN09PUXhtU2RuRlNHUFR6aGgyWkdVcWZXaktQRWFWbWY2alJJR1p4WnRvOGVRMktMMHh1YzdjckR0ZVBGZ1d0VWtSajlpdkU3VzhlZDZ2azMyalpoS25oQkhJQklva25KbUpwaGIxdDhyMHZadGs2N1VycnRqY3hzK0p1dGExK2tSeXBPNzEvK1cyVHliVzRMc0czL0FDNU1uazllM1pzVGk1NG5ZZ3V6RzdiYjFlcjVEeDhnY1MvZjY5OXNmazJqZ2xDbWhjRGVPemtSK1QyRW5kc2o3dHI4TWhTbTY0bEFyaGIweWxUc1hzNUVmZDdDVHliRTJvTHN4dWNrbGRLWml4VWxXZHl6TUxiQjQrUW5UMS85eWQreE9teGVDNzVPL0lDOWRFNUE4WHIvQU81Ty9ZblRZZUVlZDZ2a0JjdWJ2bGhmTEpFcmhoWTIzbngrd2s4bXhPbXlUcnVpOG1RcFRwUHl1QjRtT1FJcDZiWDlqSjM3RTZab0x1eHUyNU9tUTJueDdaUEo3Q1Ryc1RwbkgxMy9BT1dZNm5nYjVQMDJSK1QyTDlOaWJCNDk3ZHVjZmZuSjNiRTlrZkhzajY1bnhiNU8vTmUzSmVMTjNiT2tmc1I0c2xSbW9ZYVUwbUZZSDRqVjhSNk9GbHA0cEFDQ04wZmZzNlJaUjkyeGFmRGNDTGV4VHBIaDNla2dqVGtXdlRRUnRUWVNuaWRNMTRMc2t6VHRyNmVtT2hRNEZIRHJpTEdWVUxVUmIxd0JZd1ljSnpwTU9qMUpBOGRIaEhtZ3V6RzdaZjVZYUhWV0tlOGxEWWpsRDNldEF1WUlSR1B3Sk1QclZnVk9TY0Jta2VzOEZWamM1ZjFrVFIrMlAxbUVpL0JicFVzU3lDUkRHMUhoSG5HbWxaK0VPYmNFcTlJTlRNZFRlcmhUNmtuVDhIL2xsTEdKRlpDcnlkMldIWFZMVW92Rm5KMzVkc2ZJaVRXM284SWxrL0JYWk1nT3pCRGpsaUlpalZIM1pJTlRNZFRjakJENzVScGw5Q0JjcU5LL2dOMDJkV3hVZWlUTEJqK1BJaTlOaFl6UXdvQStHS2ZDdUtQMkx5Y0d0bzhXUDV2UTRWYnpmZzlXMkwweFM2b2NzTWVSaUlkYTVhV05GU05vR29vdWxNYjVmUTRJZmhMMHpiS1RqSFNDN1F5V241RXNaK3ZGaDFUSzE2a3dxdFR4c2h5dzBHbkxHK1QwT0Q4ZjREYlJ4YWowcE9BckR5L1VUZnBHcllRRFJ3OFJwWWtUUEZHODNvWUp2cHNDQ09lT0p6SnNBTERKdTQ4STZSeWpSU3JJT2V4MHFUYytpaW1hTXh5cklPUmNYMk50NnRuSVA1Wk83SUVndzRra3E2dnpzWko2U0NLT1ZIaGtpcVBGa1VqcSsrU1BWUStRS1hWbU9KMkwwemxYVGlOa1lObU5ocWFybXNOTXpOVnh5SjV4R0NibjBhTVVhS1ZaUkpoMGVtdzhrZEppcEZwTVRHMWRlUXhzTmg0blppNzZjd0N4a09oYzhFdjNUTnBpcEpHak1lSlI5alNJbFM0dXV2cGdTREZpZ2NualI2ZkIxOU9hS2x4VWdwY1lsQ2VKcXZmWU9OV0lyVldvVmMwT0d3MXAxSkloamFsVXNWdGNtNXpnVDZjZU5iN2N3U0srckpSZHo2dU9aNDZqeEtObVVWcU9HaU5mRFN2aUNoQ3dvS1JSKzZyMjJGZ1RWaUsxVnFGTVRsTEdzaXRoMlFzM0R0anp3K0gwNVRQOVNUMlNTdWxKaXhTdXJiV05xWHBXa1ZhckNnT0Y3YkY0MXhGYWhrOFVScHNNclY4T2hnMXBJa1RMRnk2VjlyZTFKaVpGcGNXaHBaRWFpYlVCVnF1YXZWelIxRWczeTBpclVSWGJucEZXQW9jRG5KSUkxZGk3ZTVXV1JhWEdOUzR1TTBKRWJJbTFBV0JGNis2dU5FbWhjWmFhNDE5MWFhMGlyMnlra1dNU3lHUnZmQjNGREV5Q2hqRFF4Y2RDZUkwR1UxM0dyRVZjMWMxOTFhYXNhKzFLbHhLaW1Zc2YwVU93b1R5Q3ZsUzE4dVN2bU5YekdyNWpVY1RLYUxGdi9GRC94QUFwRVFBQkJBQURDQUlEQVFBQUFBQUFBQUFCQUFJREVRUVNNUkFUSUNFd1FGQlJGRUVpTW1Gdy85b0FDQUVEQVFFL0FmS3ZnY3dYNGVDTE90MjdlV2poZjZpSzhMREx1emFFOForMU5pTDVNMlBnYzBYNEZqV2lQOGhxcEdaRHd3eDd4R04yZXdqaFFpS05jVFJtTko4RmZyejdlTTA0RkdOcEZMSUJvcHkwdS9IZ2lrM2JyUXhFWisxTmlBUlRkcjQ0N3k2TGRQdlRiaDQ4eHYwdDFUOHlNVEdqK0k2OHUyWmlIczVKK0pjNFYwY1BsejA1R05wVDZBc3A3c3pyMlJ2TVpzSVl0djJGTlB2T1E3OWpjN3FUNGkzbjliRzRtUUo4cnBOZkNZYU96bVRZU0NmU2RBeG84TkRMdXl2a3hxZWJlY2hwc2dBc2twOFlJek5SamMzbVI0YkRaUzFOWTF1aXhEdzM4ZmZobU9MVHlYeXBFU1R6UGZVVmxLbzlLSm1kMUtTSWZzelR1UTMzeFpBaTBqaHEwVmhtTkl6SVFnV3BZbUJ2cnQyajc2SmJ3QVZzaWxNZWkrVzMwcEpUSWI3WUN6MDNDOWcxNkkxN0puVWNPYWJyc3BaUWkzMXdzUjE3RnVuVWZ4QnV3dFdSQVVqcjJMWFYxSDdBYVFOOFpOZGtGWHBadmZTZHd0MFdmYVRTSnZzd2FRY0Nzb1ZGYytnVzdRTFR1UTdvRWhaMWZScFpSc0p2dmJLenJPckhGZEl1dndsbFppclArRS8veEFBbkVRQUJBd0lHQWdJREFRQUFBQUFBQUFBQkFBSVJBeElRSUNFd01VQVRVRUZSQkJRaWNQL2FBQWdCQWdFQlB3SDJyYW9kNmVxKzFYQzJGNS9UVkdYaEdrOGZDcDBmbDJEYW9kNkZ4ZGZvbU91R1dvKzFYQzJGNXlnWkU1aVlFcHRXZWV1OFMwcTRxNHFrSEFhNUtqTHhDTko0Vk9rWmwyTFh1aVZlM0dzNjBLLytZUWU1eFE2enFUWEp0RnJUT3pWbTJRcmlteVRBVFJhSXdlMFBFRkg4ZHlwMHJOZSs0MmlVMm9IWUdpd3B0TnJlUFNWbngvS05STnF2SjlOVXAzaGVCNnBVN05UaFZKalJOZVpnb09CNDlOV2tPUmNTcUxTZGZUT2FIRFZlQmlBalFkNlFyZ3BHMDkxclpUSC9BQTdzbDMxbXVLRHB5ekNDck9JTUx5SmxSeFBYY2RrT3lFemc5Z2V2MXltTUROT3NUQTIybkE4Yko0NlQ5eHAwVHVNSlZ4UWQ5NVhJY2RGM080ek1YWUJ5dlJNb2NkRXRuY1pnUktJak9CUFNLbjdWdjF0Tnl1NVZtSUVvQ09tUktMU0ZjcEMwMkE3RW1FM1U5b2dGV0tObVZjY0FJN3NLMVdxRG1pVUJIcElDdENnZjRULy94QUF4RUFBQkFRVUhCQUlCQWdjQUFBQUFBQUFCQUFJUUVTQWhFakF4VUZGaGNTSXlRWUZBa1dBREV5TXpZbktBa0tILzJnQUlBUUVBQmo4Qy93QUNxRDhRUEt0ajhQb29ZQndzZmlHd1Vmdy9sOUIrRzhVZVZiSDRFQVFvWEVkSkloUXdEaFlGZk4vYUNybUVHZ29xQk1FUUptdDZUMXdDamZRMFFQbHdqNXpIYVprZTU3SDNLMHJUT056UXdWVEYxVEZEak1Hak1CdE5hMG1pRkFCMW16WFZSdXZRekQzTVpnejdOMTd1am1ETW81Um1qZE5YVFhPWURpVVRFNjBmRWk0YXVXZWMyOUdZTTZQQlZQS2dvR1ZxNTlITVRLMXhLRVMraFVTb2hSS0hFalZ5M3htSmxhNGxhTjRSY25uTVRLM3hLTjV3RTBkM2hicUZ3enptSmxiNGxob0p4dFdTSVhiVlJSQlpqRlJtWkcyWW1WdmlRSW1kbzdYQTVtT1lqaVZyaVFuUVhCM01rRkI3STJsR1pNOFN0Y1NOWERBOXljWExSMnpKbVU4R1FibTRocFNSb3ZDTXAzT1pIWXY2V1NWZ0Fva2hkd1dJWGhNOUpWWmg5eWpjM1BTY3lhR3lpZWtMQ0ozdUtydGh3dWhyN1hVeTlvK3BRTkE5b3V0dCtjQkpFSTJWQVZ5K0FVV3F0WDJoMldvMVRJMXJJQWlYOGxXMnNGRFNhTEtQM2xzQXE5M3dZaWhVQzlwcmFSaG54aVZ3aVh4a2g1TmN0dG4xOEdHcnE0NnFEVGdOYXl0U01qM0pITEFQaGNQZ1ZaT0tocFI0YzBKT0tQM2F1U05za3RhL0NqcklHb2RRd2thTDRqdGRIU3I5bEc1SjJUUTN5SUJBZkc0VVJnWGt2cXFVUkZyRmQ2cFZXZkp4dWlkVWNpRzN3dUpqczhzYUM0dER1RDhDcWlXQVFaUTR5Sm8vR2hxNW9iT0FVZkJ1U3l5TVYxVkxxcnBvVjFCOXRyRnc0eUk4L0JoS1RJMDFzN2NYRnJ6TFZkcTZXWG5iSXY2U29qNEViZ29idWlGdnA4QWsrRVRrZTJpb2ZWekM2NGthRzZocFI4UXJMWTlycE1iNzlzZThrMGFVUjloUS9VcnV1a3p4Wk5sclZWRExTNm9lbnhsNWthYTl5bUhDc3M0THVLeFZocXU3c1JjUUhjb25KSXNyZlJhSFpSWnJ3b05WV05ubFV2WVMwOXlRQy9iSHN5Tk5KbzdPaXlWWHBNblUwRkQ5UDd5ZUlVUDFLYnU2bVlyb2ErMVNQcFZnVjFBaGQ0bGlxS3NYWWZhdEh6TEErVkF1b3JMT0hrNnFNZ0hueWd4ckpRcnZhKzFWby9lVjBOTkZYcEwrcGtGZHNGaVZSc3IrYzBxdGtxQzZwSU9wZ3NDdlAwc0tPZ1YxZHVxZ0tNcis2UzIzam80bk0ra3JyRUYwbU11OG5jVlZWOHF2M0pIVlV3ZlVJUWFLNy84QWlxMFYwaDFnWW5OcUxHUEs2aEJkTFFkRTRxaXdXQldFdUpVRnMvQjBKSWxGbzUxUnBkVE1WV0lWR2hOZzZMWGwrS3hWYXVnWFJLaWMvbzBWakZWWlZZaGR5b1F0blVXQ3dXaXhLeFZTdjRlT3FpMGZ3YWpSWGVWaXNBdTBMc0M3UXNZS3BqL3BRLy9FQUMwUUFBRURBZ1VEQkFJREFRRUJBQUFBQUFFQUVTRXhVUkFnUVdGeE1GQ0JrYUd4OEVCZ3dkSHg0WUNRLzlvQUNBRUJBQUUvSWY4QXdVVUU1QXF5SWI5TzFUTnhJRVk2L3A3MHBOUW53QVFFQk84VCttQTVCRHB1Rk9GMzZjRXFFTlpuakUwSnkxVVFSK2dpU2lkVzZJTUFhcHd3S1FZczNYUlRCaUtyVk4zK3RBQWhESnowYWRDQlczeDBYcVZDaWNZQkVJZ2hqMVJWQ0pCT2lJQURFZHVxVElZVGkxQ0ZSakRSQWJSZERNSFkxelFOY01SWkFFVGRGRk9XUU9DYm9DcUdQVkJibmZaQktFMk4yd1Z5dEs5QUpPYUYwLzE2Wmg3S0tGYThzclh2aEZvR0QzUkVwam5LdVl0a1ZjeGI0Vk81SVJNMUE5c0JaTVRoRkljSVpvV1Evd0I1aEFKS2svS0pKRW1weUFPRUFlWVhUMnpKMUp4dkVZYURsQnlFdXFBdDhYY0tCdmxDcTlLV3pic1BSQktyd3pYVG5IMHNkd2lIWjhvczdnamRYT1ZqQnBVcHl1em1ZdmREb2l5TGxHNXJsM0RUc09XdHRPYmYwR0ZTb0kzQ0liUDhmbysySXlYN2hwMkF5MU52aXplS1R6aFdoREtFTFNVQTdJeGdBNU9pSUFNUm9jdncvbm8xRFludDNIM3VYNXVWcExjd29WVElBMFZpbk91VUZWd2pLdVU3M0FjbnhPakEzM0k3Z0tGN3ZwSDRpd3hCZklTNjByQUQyeDBBZGNpVDBZRnVBK2U0Q2hlN3kvVjNHV0J1Zkk3QVM2M2tMTGVRc1dTV0twSnRCVGpxQ2RuZ0s1SHVBWHZjdjFkeGxvMkF6MUgwRTR5UkFFa0p5aE9GVTRFZ0RnZk5FV2g5NS9udU5kZkw5WGNaR0J1dHdEbmhaTjljU25JU3dVTjRqbEVsa2ZoTGVuY2FxNGRFNFhCMEJIMFcvd0J5UElYSWdTd3BpSmRRNXpLTHUwQmNvbHlTZGU0MWVWODNKRWwySFFqdFBka3BIa3E0NmRnQmxpTGZ6anVVeldKR1g2cTJTRzZIb1Yvb0dTT3liRVdXNk56YjVCS290UWUzY3BjaGo4T0NxbklLME9SRWNZVWRKWUZBWEJReWVZUzBvZ3dFYzVoZDZnbDRSTGtrNURBM01kZXdmS0RsVjd4c2RVWXA3ak82VDEwU3ZmSjBCQUdBSGxhTUx3WDlZbFhHdUtZK0xzODVZRzJZdzJUWWI4d1FPbnVJRU4veEhHandpckpMWkdKajI0WUM1S1lmNmpyU3dHOGt3UnNselFmNFpPVEZ1UWNhSVBtSTBGMUY2UndyeU9ZWXFzeWFTUGJTQUE1S2VjaXFmd0RTYUpxUERUUkZJV0l4NEF3ZWNoOUlCR2pEQUU1bXB4RG14VEZoUU55NDdheUc1UDRMMWhzR0hEUWhZTHpmRGN4Zlh6aUE1WkFpcVJLSnp0azVJNk9VNjZaQWFWSjJUNVJZZHNzanFnQUFBb1B3YThXT3A3UTJUR3FrY3dwaU0vUVNjR290aUE1QUZTakRnS1FlTWZzYWRIbWtSMlI3T3Z4L0NtRGNmSTBEdlVaUFpPSldDVk1QVFVNbkNFTUJKTmdueWdhQ3c2TGxzbXlIWWpXYWxCQTZEOEhRdkNFQnNuc2xBR3JpMWNIRUFNRGhFWGR4UWJINEt5WG9ncm1CUTJVK3dXNlR3Nmt4dkFkaTlTUHd2UnlDV0RvS3pVeW5CckxGbzJBOUFSZy95WWlrTjRWU0J5TXB3MWlnQ05BZzdFNS9EK0NTd2NvS2pVemtrMTdBTndMRGt4U2FvM1IxVkRoQmdRV0ExRVFCZ0JVMS9HVFdZM3dBSkxBT1ZRdTBXN0k0elgvQlNhL0x3Q0JoVjR3NGd6QVRCTjdvU0dTRFBsQXNBSTNSUjRjRlVvQnZqNlBkaU0wZHhEUlhCL0FtZUl5UEJUUU1EUW9HQnVvSzk4QVk4aFJ1Tlg0QWRCQTZNZHFTL1k0bE90SHROMFFNUUdSVVpTaGhVd2dHRFpEQU5KWlNTcFV4SEVNVUVPTmlIT0hyTlYzN0lJeElkWFJ5WWdJaUJsbFVIY1p6dndhR2dJb2R5ZGxERU5zVW5RSUdRbGc1UVZHc3Nqd1VBV3VRNDlSZ2d1Y0ttNVdsN2lBeTRKK1Zid3dFZFJlVUNESUw1NnlEOWtRaEhKN0lIR1loUm1OYVNiYnlIcU1hMUlpejV3VlYzRUJBT1RqYm9SRjBBQUFCa2llWnlpVGdnRml5REFKVFFla2cxeU9XSVplaDdEMDROQ2hUSHNsQWdoeE9OTUd5SVlHM0lrazVMbnN3MFVnalVKc21laEFnaHdYQ0F4YmtDcld5RTV3SGMxRCthR1JIc2txa2VTRUFCd1FjYUlaSHJUaGJtTEZNMEJ5RnplaUpxTUYwZk1KRlcyUW1CSlRTajNJdDhadmd3UEkyUldqS2oyV3VJRGxoVmVWWEpNaFZKemtxd09DdjlLcW8rZTFqUHJGRkMrWlJBdlREM29BdjRvS09pTk5Gd3ZHSHZ4ekJUTk1hbENsRGZUSUlEUTFLMFc1MkZiZ2VNQUtJRDlSNHcxVTZHeU1DVU5DZFo3RitVSlRxWHRpQVNXQWNveEFPeXhVVnQ2RGp1ZGZXc2FJK09jRUxjT1V5aVNvbVU0V0k0VDBFUWR4NUtmSmlPak1JQ0RUQWxxcXA5Z211ckxJRTFsUXA4WU54Q0RrQUFHQ2FvV3U0aFVGQnZoSmwvWWQyQkU1RUhaVlpsSzRlOVZFZVV3VFZ3ak56WXBtdnBUMVdmV1VESnhDNEJ0Z2JEY1lZWkllUzlYVlRnY0xJRUVPQ2lBYWdIQkNrQVZVb2FaRGZ4aTZLVEo3elJGSEo1bEFVT0MrUUtyMjg0TklxYVlRSGxkTUZDRHluL3dCMENIWUR5bnZtYllFQ1hFSFpNUDhBY0pySG9tR29rbnF1ZktucWJvRUdoVDdlQmRhTzlCYnY5TkhsR25JY2d0TitDanFFYUpIS3FpOHJVMGU1VlZxTVdLdSs5YjFTc25rTDZRaVFPQWJsT1FCMFQ4SDlHb0E4cWhJQU5CNUNHc1JEL3RML0FHRWRFUzAxd0NOT2JsLzhVUC9hQUF3REFRQUNBQU1BQUFBUUNDUy8vRFI5OXRCQkJCUjErKysrKysrKys4eEJCQkJGOTk1RFgvNkNDQ0MyL3ZEVjk5dEJCSkJCUng4ODg4ODV4QkJCQkJGOTk5Qkgvd0Q0Z3FnZ2t2OEE4c0hYMzIxR3FrSUVFRUVFRUVFRUVFRUVYMzMyRVA4QS93Q2dndmlnZ2x2L0FNc0hYMzJ6RDZJa0VFRUVFRUVFRUVGMzMzMkVOLzhBNkNDQyt1Q0NDMi8vQUNvc2ZmZlZuWXNDQVFRUVFSelRmZmZlWVEzL0FQNklJSWI3NjRJSUxiKzdkM3JYMWEvSGswM2drMDNzTXpUM0VFZC8vd0NpQ0NHKzIrK0tDQ0MyL08vaEJWMjk5ZTk5T0tmOS93QmorZ1F6L3dEL0FPaUNDQ2UrUysrK0tDQ0N5LzhBMVQxZ2dZczh2alBmdWNZVWloMy9BUDhBNkNDQ0NlKytDUysrK0tDQ0NTMlYvcVBMSmFoZENCcUREREwvQVA4QS93RHlDQ0NDZSsrNkxDUysrK09DQ0NDNzJ2OEEvd0Qxcjk4NTJaci9BUHAvL3dBZ2dnZ2h2dnZ1Z3JRd2t2dnZyaWdraVFsOHVudi9BT24rVTN2L0FQdHlDQ0NDQ08rKys2Q0Q5dExDUzIrKytPQ3BDVkNCQ3l5aHlsYUhpQ0JDQ0NDR2UrKyt5Q0RmOTk5TERDMisrKytsQ2NKVENDQ3hDQkNwQ1FKQ0NHZSsrKytpQ0RmOVI5OTlMRENTMis2MlA4ODhmN0loQ1pDdktQTVArKysrK3lDQ0hkOTlCUjk5OXZEQ0N5MTg4ODg4ODg1QU90SzQrUDNqKysreUNDRFA5OTl4QkJCMTk5OVBEVTg4ODg4ODg4ajhQOXByMVY0OTZ5Q0RCSGY5OTloQnRCQkJSOTk5OWw4ODg4ODg4OG44bldwOGZ2ZkNCQ0RUVjk5OTVCQkI5dEJCQkJ4OTkzODg4ODg4ODcwOFhFeS84ODgwTXJ6K2Q5NWhCQkJOODk5SkJCQkJ4ZS84ODg4ODh2OEFPL0p3RnVQUFBQUFBPT1lRUVFSWGZkUFBmYlNRUVFRNmQvOEF6OS8zL3dBLzhzZDVGZFpiejh3d0JCQkJOOTk4QVE4ODk5dEpCQlJqRkhFeVVuUUd6Z2RwOWhXeGh3QkJCQk45OTk4NEFBQTA4ODk5dE5CQmcxOHZybzUvajBQZnZmb0JCQkJGTjk5OTg0Z0FPQUFBUTA4ODk5OU5OQkJCREowQUFUQVEvUkJCRk45OTk5ODh3QUFBK3VJQUFBUXc4ODk5OTk5Tk5OTk5PY3VldE45OTk5OTg4NHdBQUFBTysrK3VLQUFBQXcwODg4OTk5OTk5OTk5OTk5OTg4ODh3Z0FBQUFPKytDMisrK3VLQUFBQUFRdzA4ODg4ODg4ODg4ODh3d0FBQUFBQU8rKysrQ0NTMisrK3VPQ0FBQUFBQUFBQVF3d0FBQUFBQUFBQUFHZSsrKyt5Qy84UUFKaEVCQUFJQ0FnRURCQU1CQUFBQUFBQUFBUUFSSVRFUVFVQWdVV0V3VUhHUmNJSFJvZi9hQUFnQkF3RUJQeEQ3cjNCNy9IMmV5bzVLaUZPbURyWnZyRVJJL1pVN3c3aHQ0Zm1FTHZ5ekt6dVQzK1BzSlJzdCtxbUZHeHllanFLbW5KVUIxbVdkdHZ0b2pzdG5xclQzR3V1aCsvSEJ6UWt3WmlVT2pWWExkL2IvQUhsaiswN2hONGZtWEQvTE44TXgyS3ovQUxNZ0UxTmNFd2FhTU1RNG1iaFRmdjhBdUVFYWVNUlJzK1oxWVI1ZDh2dHdGUXdsUkFVMUgxNHpMcXRYeW1XWkk0cW9qdnlIZkJ2a2pnZTRmVFB1T0FhdS93QXpIUEVmUWJqNUR2ZzN6MUVJdW5YOVFBWEs0MXNvcmZkeEthNGZRYjhsM3diNVl0MnhneGEvOGxvMG83akFMb1pvcld6L0FDRldnNVBKZDhHK1hmSnZnRGF5V1MwcENrRnUzUFhrdStEZkJ2MEhGdWRUQlZuNmlxbHJ6MTVMS3VGMnA4RW82OUhYQngxd0F2VUFLV1AyZVRoZ0ExNkVIY1Uxd0R4MXdKQVNnMFFUMkZqbVdFcUxzSHNlNzhldkw2REw4a1NvOFVMNFNYVDJoVmxYTGcxMGVOaVBvdkE1UnpEWUlsa1JHbWRjUG9OZ2pqd1JpL29uREtPVWgzUGdsSmZDdVJiYzNlQ0tIMEdIQjd6ckJxbURaWjZBRytCZFFVQVVUTmVEb01HOWV2dmg0NlJqd09ucm9YNFNCekJtWENtQkJIWENYQXFMVU9PK05PWEdKY1Rtdzl4QkhYQTdSMTRhYVRBTVcxS2RNdnVRWDJsNWxlMFdvRlN5Yll3NGhqaEZGZ09iZkgwa0IzQU9vKzAxTVFxNWtpc0ptSTdKOEV3RXVYNW9XbUM3bElQQkhUS3ZNL1BGZkVleU45aldrK2FmSkZ1LzRKLy94QUFtRVFFQUFnSUNBZ0lDQVFVQUFBQUFBQUFCQUJFaE1SQkJRRkVnWVRCUWtYQnhnYkhCLzlvQUNBRUNBUUUvRVAyclZhOWZmNmZES3czRFBiZy9XRCtZSWxuNlVhZTRwRERSL2lZQ05Wci9BTCtoY2hWVXkybjRkeXVXWVlaN2NQVnFBQTcrVjE2UXFCcGY0OGRBSHFCdDNtV09aUWVaQWlVMURVT1M1YlBVeEN0WHpoRXczRzloTU5XK3ZVU2d1L0djdlRPOEljbXVUM3hYMlNCaUR1SDJpVnRycmxCWXdrdldiWWE4ZzF3NjVZYitreEduMXc1ZFZNeU13K0RxSGtHdUhYUGNJV05rQkJESk1EeSt2cURad2ZCMTVKcmg1SUgyRVFkVDdSRFVJQlZiQ2UzM0g2Vjh2a211SGsxeTY0YkM4T1pzR0tqY0hQZmttdUhYRHI0UEZBRjhBVTBjOStTVFVhdHo3SlozOE8rSGp2aTRFVmFxZjkrVWxYZndGTlFMY0NEanZoQVZpVXRqenExRnRZeVFybGZmajM0UHdFcnd3Ymh4WXJnd0hjYmNKREtlZkJ4VGlFZEtEVEJFc25mQjhIVm9OK0NzMStGNXM1UWpVK3lXdGZFNkttcndWbCtBNVoyaVhaRXBwK0NKWENtNGlJclpxOEhjSWxiK2ZYQngyaERoTnZuWXJ3Z3BpVmNHTnNxSW0rQnFMY0M0OGRjYmNtY3lvREFqNk1STjhMcERIaGh0TWdRUnVXN0pYVmlIdVZpWERNY3ltYWhKbU9lQUVHUjVvOGZhUlhVVWJoN201bU4xTVFDTXhCZE0reVpXVks4MUR1SjZsNGxFVFpMcWYyNHY3aDBRL3dCR29aOVUraUJkZjBKLy84UUFMUkFCQUFFQ0JBUUdBd0VCQVFFQkFBQUFBUkVBSVRGQlVXRVFJSEdCTUZDUm9iSEIwZUh3UUdEeGdKRC8yZ0FJQVFFQUFUOFEvd0RncklkS1U3UlArT0NCTktPWnMraEZXYUFnVE9jNmk2RlFuL0dRSlMrSnNKZzBabWlVTHpRQjJ6b2lYUEZwSVkvNHVZMzVGR0Q5dlNtY0FsTUdCL3hZeGhScUtoVXVGYUxYdExIdlBweE9BNHhsVHFJMi93Q0JGaWlCSURoSmo0TDNFb0NnZVlYUUxjREVtbkFOMm1nTWt6S1M0S1VZbmpwR1BtQW02b1pCeHRha2RaeExVOEM4TUY3d3Q3eHhnUk5XQUkyVEJxNGtZaG5VVVhvSmNsTkFrWitMZUtaZlJJN2U5SUZ4QStYWU5BR1NtZ0JqTUZaSzVBb083Q3lvY0ppQm56YjVFNll2d2NaQ09TMFVQVjBPOVlpRGdHUnB5TFlGaTdCaFNqd0pCbWkybU9Oc3FtU0N4dTBtUWNYS25oZUVwVDVZb0R5VEY2TU5uZGkzNWptNm9OM1FQbHhtaFprMURlbHRoVHlJdTY2TzNLV0tEQ0U2WG42b0g1cFF3SDVyQUhQV1FyZThDaHJlOENsNFFpc0VFcGlzNFNIVjhzWGNVSm5GYjFUV01LMzRnOTJmcm02QXZxZmx6RWZKV2E1Q25LbEpYa0RjcU9sUWhNQnBTczVZWkVkS2lnWEZkT0NpUmJpRHZ5NWJ4V01ha1RWdWtIdDh3YlROM3NCKytVU0RWcFdjbDlOdnJtdCszcURnZW5Lc3VTSTNhOW05eDVoR0RXOVNyaTBZMWhOUjZDUHJ6RHVNdTY4dXlZOTYzMUgzNVR3SjlBcFc4MDl1WTFjQkdWS3JMVjRhSjllRHNHRmIzcjNmTUxYK3djdmVIc3Z6TFZYc1l2QXpLajdaazRrZGFSWDU3OXVYdjRKR1hBUjZETkpSWXJQbUdMb0h0eTQzVWUvbXRCcTlTN3dVUzBwTVJCUnhCWURKbWtwS2dCZHBRV0tDNXkyTHFEMmVEYityamozanpIRDZRNWNhMCtPUHZsa3pDWmVoZXBFekdzS29UT2RPNzdrU0ZPSHZtMDQwUEpOUUJ1a1FVUUJtUjJrbmtzWFZIdjRQUXNEcWg4VDVoN3c1dXRYUmU2SDN5NzNPNmVKRGZpc0V0U0pxeGZyNVByaTRoRTRCVGRCaXNSbEQ0TzRqdWdKK3ZNUGVIaDlCdlZIMnNjUlRDanFWUFNreFVobUplcG9qTUVIU2VLRnRrZFlwM0poc2xPd1hFYUdwRVllYmZqZlN3ZkQ1Z29SMG93ZmdvQWxncHdmRDdqNzU3TW5MMEg2Y1FCR29JQ1NOTnZDM0diVXR3b3EwUXRpeTVVNjQyUW5mbTZ4M3FmTVQwZyszZ3diMWl0N2hPZnJjSFZCOEx4Z3V6NUxoVmovb2psQ0FKVmdva3hraTlMRDQ4eHYxRDl1VzhjMS9JOG5XWU9zVzhDN1prZGdyOE9SQ0x5Z3FZMHlFbWNVNVZJcjEwTjdqUEtFRlBZUmQ5aW12aFV2bU4rcGo2TWN0OE5mam42NU91dytzL1hnZCsxMVg0RGtCUHdDK3hOS3BYRnZ4cy9tRGw2c2c2bytDK1pmd2h4KytXOGRmbnYxeVdUOUFSOTg0S2dFclRJVElROWtmWEo2ZCtxeDhUeDNUTmIvTGtDb0trbUNPallQMm5wNWxaZEgxRWZYSEFnMUxQV3Y3QStrMXB3NUp4UjkxL3dDYTBISDlWUHF2NFZldGFSOWxpdTFTSXVnam1CWWxYb0NYNHBuRXF5dkp2QnV3SSsrSUl2Qmw2VXFxdUx5UEdZcUJRM29TL3dBYWxZRVJoSEVmTWU3VTZpZnVqQzZaRjNvVU1JQzN2YkNnQWdJT2VLRTBFMVBMckg0TFU5MlhaK3o4Vk1JT3E5UngzbERxTDhEeTJMbG5xM2ZuajBmNzd3aXB4WXpYZDRTSWRLaW9YRVNpSklseWJyUnBnWU1TNEZpOVIxa2xORktnUkdFY1I4dVlxNkFLQmhROXZGSkpEaFFiTDhpRHVZVkxkNkozMHJkakhUQjhQcnlUdFlSTG9WdnZKeHg5ZlpDb082TDJiOFZlcTNadm53VWRmQ1V3NFBaSVF5U0pTTnpncTEvYStXcGdWQUdkQ1NCOURZL3dJRTRCZWhnNXhiSTAycGMrT0hqL0FPMml6NG5rdVpKSm9MU0xpczRhQlNxcFdlQXd5VmhLQXlkK01DREd0NXZRR0I2eStubG9iZURrYS80Vkp6QjJaKzAwV0lxTjhCYXhQMVVOUnlHQTFPRytFdWhZNGtBWXJGRmdXRXUyRktCaWNuZDgzdlk5ajNvTEJhVnBLcUQwUXV0VzNnc2FBV0QwOHNhQXh5OUNqTGdJRC9DMnpLVHUvd0I3OFZBeGl6MVQyRUlHKzVRTEVpRHRaOTU0eXlTL3BjSHg0djhBUEZqVXBBVWgyU09nSSt1TDBQYkw5dng0SVFGenJCaFNRbzVlUnhndlc2UDhPRjJybHg5Qmw3Y2dMa3RCbWhZcG1XY2M1NGs2TU9CQkljR2xTS3lqTGJnSWx3UmRURDNpa291S3p3RUVnYkl4YWVJeU5Bc0hnOUY3MWYxVVprQ1IwOGliRlJGRUJZai9BQXZEeGNPLzZvQURBSTVDNjVRZDM5Zk5GWmx0R1RueFY0dGI3Y1U1RXhFbW5DTTVLU3JBREJZV0M4ZkhwVEZpZHpTWXl5TE5NYUxJYzhqdXg5UENVVmUzMEtreGd6MjhpazZTQi94ZlJQZDVBUldBbHBnWWpMditxT0J1aCsvYmlNemRBM2NmazhBcUFVMnk2Y1RwTTFGWHVQaHlsWkx3VmhLa1VBaG1KOVh5TG9jUHQvaEJzQUphWXpqTGt0Rm9QUXUvMi9DZU1oN2NOQmtUUlMwS1hSdzhHLzhBTUFaRGYwbzBtcTRIUW9CQUEwS2loTkVtaVhwNWlwRS9Sa2UvQUVwTUFwaVFrWE1uNTRJU01oOHZrUkdhdWY0YnBacGVoeTdBL2EvdHVCa1c4cWtoUnhLN0FuVnRRb2lXU2dOdHdOVFh3QVNHSXRoLzd5dVhySVRVc2RCQXBpZGlKZU1hR3dQU1g4aXZOVXQwM29HcHBFL3dYbGcrZ2NrV2t1QWF1VlhObEM3cTU4THkycllKbnZXLzFmUXNmZkNJdGtaSnBRcFlKY2JuK0Jmb1FxZG1WTHlPN3N6Y3c3YVZERnJXSjRQclBNNjhxQnhtSDNSR01BamsycVQ2NWZmSW9FdW9PN1Jxd0VIYkgzbmlZV2VDTVZQSXV3MjFLc0IySU56dDR3d1hHS2V4NUl0Vk80eEdWcXU4YVRIT3BsUlIvRUVtZGJ0S1RjN2M3azR4bURScTNjMHBVMUpMVVgzZU44L3d5OGhPa0FTMHdqaHBiYmVuSkFyNTZJUGVsVXF5dDNrRUszSzRFM1hzZk5IRlNTTm5XNmFWR1FnMGxVSnZVWFVKejVGaVJycndkaGpjRkF3QnFNODZGd2xqNU5KZ1JLdWZrbnloVnMxT1VBWHNUcHRVL2ZkcWVwblUxbTRGZ2R2eFVDUkxJWU8vNXFJRzBiRDF3bzRCTUZTUGdHRW9YRTZHdFlUQVc1TFR3ZlJQM3lzRFJNeHNjazVaZTI3VU02YmtPWFRrWlFzUjZ0MzQ5NnVCQ0k2bXg3dFM2dEVVaG1yOVFvQUhNV0I2TkFFQTRJOFNsZE5VdnBqUUs4dG83OWluTGtaVmJ2a3lOV2tTaVlPQ0hGMTBvRUpMaU1qVUlTMlFuZkdueWxkYzlTbTVRemlQV1B1bzBSTWJqMUtnUmZXQStxaUlpNVA3VkZHYWpQRlFLc0JqVWdPZ09WUGtHdzZOUjRydWZKYXRGV3duNm9KWTdHMUhiSDRxY1k4VGt5N2NnNGFDYVpTZ3IxTkVjMjZBMTRSSUFMb3dEVmFOdlcyUVpiRlBpWlR4UUFWTUFaMUxoZDZqK2loY2V3akQzK09SV2V2aFFKQi9adlE4SDZJK1Z3U2JOZC9Tbzk1Y3NibzBBRkNPWnc5WklWcTZpV3JsTjk2UitxSkorcGQ4MWdqYURmNVdvam9hUDFSVWNDNWZGSkV0QWNYNG9SSkdlQ2hkcDBsUzFnR25la0dDQ1lSUmttdFhPalVER2VwOXl0SVhSZmlvVWd4Y1liVUlnakk0VkN1Qmc0cWhsRjdHWFlOYXc3ejFMVloxMEJEb3g5K0pwU1dBSldoWWYyTHZTZ1ZZQzZ0SUs0K3l3L1Bmek5FaGRWNktoVUxybnBqVUxkczNPVklUa0I4MFlsek4xY1ZwQklibE04bGU5UGF1azl2eFN4eENXOGVsQW9KeEdoa1VZa3lmeW9DVUp0d0FLb0RPb2pGbGJvd3FTdzk1MFUzQURRMmFsR0lsQ1BYNWUxRHlRRUNCVE1RNHovclNsaDJINVVYMXh1K3ZBTUZHRCtMK2JGU3JCVU5RSVI1Qy9yVVNQYWxsRVRzSmRSeVlyWUROcEVwT0p0dFNDbVdKazFnR2QzTmYrUlVtS2RDa1VZdlFMVGtUUmlNSEZaY0Vza21xajRxZVI5ejhVcmwzU1lGSXRLZUk5eFVhU2JVZkJHNU5iUTZVbEluV0wwcGJUUy9ya1lxK0dZdEtrZ1BQVGJ6a1ZTS0ptVWJUaXdmbXFLQ3RWRFVHVE5rL0ZFblFLQ0pJaWJWaEtiUTNxd1RLM1hWcElXUVlDeVZrVjJRMUhpSHBSYWptS3lxRVNZaFoyY0xrTlpSV1dDVVNaTzkxWXpXQ3hIU2tFSWpDY0ZTTllSWVlodlFzZ20xSWIvSnhvblNCaDREejlXYTREWWhGUUxPM285eDRuNHJEZHRaUTg5RUZDUm1YdC9HQlNBUkpIS3NvL3dBc2FpeGV3clE3eUZhSUdxeTBSdUZtWng3VlBaY2JVUW1jMXUwd2pvckg3cE14ODMvaFJSa1VkcXlNdEZXUkRSdnd2QlBnb29PSzkxZit5cHhjdXEwWWdTcWVPM1QvQVBpaC85az0jZnJhZ21lbnQiKTsKfQojZGF0YS11cmktZ3Vlc3MgewogIHVyaTogdXJsKCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVBU0FCSUFBRC8yd0JEQUE0S0N3d0xDUTRNQ3d3UUR3NFJGU01YRlJNVEZTc2ZJUm9qTXkwMk5USXRNVEE0UDFGRk9EeE5QVEF4Um1CSFRWUldXMXhiTjBSamFtTllhbEZaVzFmLzJ3QkRBUThRRUJVU0ZTa1hGeWxYT2pFNlYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWYvd2dBUkNBR3VBb0FEQVNJQUFoRUJBeEVCLzhRQUdnQUJBQU1CQVFFQUFBQUFBQUFBQUFBQUFBRUNBd1VFQnYvRUFCa0JBUUVCQVFFQkFBQUFBQUFBQUFBQUFBQUJBd0lFQmYvYUFBd0RBUUFDRUFNUUFBQUJ3Ry9uQUFCQUpBRkFBSmdTQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUJDSmdBQlFBQUFBQVJNQ1FCUUFDWUVnQU5zc3Q0R3VBQUFBQUFBQUFBQUFBQUFBZ0FBQUFFUUFBQ2dSTVNBQUFBZ0Vva0NnQUFFd0pMNCtqcjA4T25sOXZpWDlHMkhrSHA4UVdBQUFBQUFBQUFBQUFDQUFBQUFJZ0FBS0FCQUpSSUFBQUNBU2lRS0FBQVhvejIwVm54L1JtMmVtdm56ZzlYaE5jODlvR3VBQUFBQUFBQUFBQ0FBQUFBQ0VBQUNnQUFRQk1DUUFBQUFnRW9sVjQraTgvcitiZW56YmVjTzh3QUxYbkdXVVh6MjY3bjYrVDNlRmYwNjVlTWVyd2hlUUFBQUE1NlBkNDg5cW9iZWNBQUFBQUlRQUFLQUFBSUFBRXdKQUFBQUNMVm5uUy9TNXo1LzFkNjVGbkxYTDIvTkRiemdiWTdZeXIwY2FhS3o0L296YlBYWERPc1BYNEpRTDE2dXZrOS9GSjlIa2hEdk9VQk1hWWVudDQ4eDVmYlRiS2VwazB6OTN6QXZJQUFpSmdBQVVBQUFRQUFBQVNpUUFBQUFFdGJObDZOSzFTN1phNWJlY0xBTmN0Y3BRc0EyeTF4bEN4YXRzdDkvWnpuaCttOVBtZ1UxeStoOGdPK0ZxdU5ORkhsOTE2UTI4MnVXdVczbkN3SUlBQUFLQUFBQWdBQUFBQUpSSUFBQUFDQWJZN1lyS0NUZW1xMHFBV05NOXBjNnJjOVZlcnpjOXdOTXJUUmw2TFZPczljdGN1OHdzQUFUR3NzWmdJU1lBQUFGQUFBQVFBQUFBQUFBRW9rQUFBQUEyeDJ4QVJ0anN1U0NTaVJ0U0ZyYXVubjlmMGZIenp4OUdhN3JuRmVucytjRm11V3VVb0lBQTF4MlhFSUFBQUNnQUFBSUFBQUFpUUFBQUFDVUNRQUFKaVMrZW1ZQTJ4MU1nZ0cyTzJLemZPYzl0RkhsOXQ4MCtqeWFaWHoyODgycDc4dC9ObDlGOC9MV0xScGxBNnpBYlk3TGlFQUJRQUFBQkFBQUFBQkV3SkFBQUFBQW1CS0pBQU5jdGNnQnJscVpBR2hiRzFRRUFiWTdMaUV0cG5meC9TNlhPaGo2UFI1bHR2TmlQWjg0QnRqcXVRQUFBQUFDQUFBQUFBQkFFd0pSSUFBQUFBQktCSU5jdGNnQnJscVpBYlk3R0lBQUcyT3hpQmVtczZWb3kzblhIWFh6NUN3RFhQWEVBQUFBRUV3QUFBQUFBQ0FBQUFsRWdBQUFBQUFHMld1SkpvWjY3K2lkY3Qwb1RuYStpRHhwaXdBQnF6SUEyeDJNUVdtMlFBTDg2WHg2L0s0N3FOY0FCQk1BQUFBQUFBQWdBQUFBQUpSSUFBQUFBTEdtL1I5MmVubDlSeDJDZ0FSNXZVVGsrRDZWMXo4bzcvSzA0eXkyeHZJRFdzRlFhNWEreVhEeSs3d2szcHA1ZmQ5RnhmT3oyblBlbmVXQTluendBQUFBQUFCQk1BQUFBQUFBQW1CSUFBQUo3L242bWVnY2FBQUFBQUFJbWllSGovVTRkOC9OdE10TXRzdGNTVVNlM3QwakxiNXlwcmpPdU8yZXBrOC9ydmVrZWp5VUdtUUFBQUFBQkFBQUFBQUFBQUFBQWxBa0RmRHR6cm9TWTdBQUFBQUFBS1hvbHd1UHozMC9rNjQ0ZVJyazlYbDZzdlh4Mlk3Zkp2YjR0OEowbkVHaGJHOUFBQUJ2aDBwZWEyeHNFRXdBQUFBQUVUQWtBQUFBQUFBRnZxZUQ5Qm5vSEdnQUFBQUFBRkwwdWdLcGVpY1R3L1FmUDY1TzN4TzRkQVpiUjRmZVRuVTZpemgrYjZYdzljOEVhWmw0S2dBZHZqZlQ4ZDhQdzlMbTljaFlBQUFBQUJBRXdKQUFBQUFBQjF1dnp1ampzRTZBQUFBQUFSTkVYRkFwZWwweitYK3IrVTA0djZzTWV1UHJIajltT3dLQUI4OTAvWmJybEV1ZXVmeVBwNDY0K1RuNkhYcm54OUl6MDRuTjluajJ4Q3dBQUFBQWdBb0lCS0pBQUFBQVBaMy9sUFR4MzlJdzN6MEJRQUJVc0FCUlpKQ3Eyb2syRmo1YjZyNWp2T2NkY3RPTk8vd0RPVHpmcTNKNldldWdsQUFBQUFVdnliT1ZVMndBQUFBRUV3QUFLQUNBSmdTaVFBQUIwdWJwTDZQUjBLOGQ3YThHWmU2OFhzNTZrSzgzcEo0dlRvQm1OSWtCWXJHaUFyaWR2bDljOGVEWEVYTnE2K09YU3RWblk2dkc2ZVd1ay9KN1dmVHZGN2VPd1V5NWxucjRDTmNndklBQUJBQUFCUUFBQUFRQk1DVVNBQVc2L0dTL1daL1A5ZlBURHgvUWpoZXYzK1kwMzU5VjZieGVqbTY1bEp1aWthWTFHN09ORkJiT3U5Zk1ZL1RjYlRMeStqRzFtVlN4THN5K3Z4OVQ1blBUQWE1TFZHc1psQkFBQUNBQUFBQ2dBQUFBQUFBZ0NZRW9FZ0EyNmZHVHI2blQ1UDE4ZGZRdWI3ZWU5YVRFTDBBVkNtcVZ2TkpicVVMRjZpMFZqREQzMXM1dCttTWRtTXZrNGQ2YlpCZVFBQUJCS0FBQUFDZ0FBRUlrVUFBQUFBQUNBQVNnU2dTQURmMmN4TDN2Vjh1NTYrdHI4eDZKZSs1Tzg2OXpIYVdLMjBGQ0FwRWl1bE9hblErZXBUVE1PdVFCQktBQUFBQUNnQUFBQVFJVEFsRTBBQUFBQUFBQ0FBQUFTZ1NnU2dTZ1NnYWErWkw3cjg0dlVubEk2bUhpRjZ3NjVsQUFBQUFBQlFBQUFBQUFDRUFBQUpnU2lRS0FBQUFBQUFBQkFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBaEFBQUFBQUFDWUVva0NnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRUFBQUFBQUFBQUFBSmdTZ1NBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUVSTUFBQUFBQUIvL3hBQXRFQUFDQVFJRUJnRUVBd0FEQUFBQUFBQUJBZ01BRVFRUUVpQWhNREV5TTFBVUV5SkFZQ05CUTBLQWtQL2FBQWdCQVFBQkJRTC9BS0ZLak1QMC9DZVBGUmkzNmRISVl6Sk0wZ3FVUi9xQzhTVGMvcGQ2dmtlRWVRUXNQMEszSkhFeUg3c3NKMlltTWFmMEFWb1ZvNW85RGI0KzdPT1F4bVNkbkZTR1BUemhoMlpHVXFmV2pLUEVhVm1mNmpSSUdaeFp0bzhlUTJLTDB4dWM3Y3JEdGVQRmdXdFVrUmo5aXZFN1c4ZWQ2dmszMmpaaEtuaEJISUJJb2tuSm1KcGhiMXQ4cjB2WnRrNjdVcnJ0amN4cytKdXRhMStrUnlwTzcxLytXMlR5Ylc0THNHMy9BQzVNbms5ZTNac1RpNTRuWWd1ekc3YmIxZXI1RHg4Z2NTL2Y2OTlzZmsyamdsQ21oY0RlT3prUitUMkVuZHNqN3RyOE1oU202NGxBcmhiMHlsVHNYczVFZmQ3Q1R5YkUyb0xzeHVja2xkS1ppeFVsV2R5ek1MYkI0K1FuVDEvOXlkK3hPbXhlQzc1Ty9JQzlkRTVBOFhyL0FPNU8vWW5UWWVFZWQ2dmtCY3VidmxoZkxKRXJoaFkyM254K3drOG14T215VHJ1aThtUXBUcFB5dUI0bU9RSXA2Ylg5akozN0U2Wm9MdXh1MjVPbVEybng3WlBKN0NUcnNUcG5IMTMvQU9XWTZuZ2I1UDAyUitUMkw5TmliQjQ5N2R1Y2ZmbkozYkU5a2ZIc2o2NW54YjVPL05lM0plTE4zYk9rZnNSNHNsUm1vWWFVMG1GWUg0alY4UjZPRmxwNHBBQ0NOMGZmczZSWlI5MnhhZkRjQ0xleFRwSGgzZWtnalRrV3ZUUVJ0VFlTbmlkTTE0THNrelR0cjZlbU9oUTRGSERyaUxHVlVMVVJiMXdCWXdZY0p6cE1PajFKQThkSGhIbWd1ekc3WmY1WWFIVldLZThsRFlqbEQzZXRBdVlJUkdQd0pNUHJWZ1ZPU2NCbWtlczhGVmpjNWYxa1RSKzJQMW1FaS9CYnBVc1N5Q1JERzFIaEhuR21sWitFT2JjRXE5SU5UTWRUZXJoVDZrblQ4SC9sbExHSkZaQ3J5ZDJXSFhWTFVvdkZuSjM1ZHNmSWlUVzNvOElsay9CWFpNZ096QkRqbGlJaWpWSDNaSU5UTWRUY2pCRDc1UnBsOUNCY3FOSy9nTjAyZFd4VWVpVExCaitQSWk5TmhZelF3b0ErR0tmQ3VLUDJMeWNHdG84V1A1dlE0VmJ6Zmc5VzJMMHhTNm9jc01lUmlJZGE1YVdORlNOb0dvb3VsTWI1ZlE0SWZoTDB6YktUakhTQzdReVduNUVzWit2RmgxVEsxNmt3cXRUeHNoeXcwR25MRytUME9EOGY0RGJSeGFqMHBPQXJEeS9VVGZwR3JZUURSdzhScFlrVFBGRzgzb1lKdnBzQ0NPZU9KekpzQUxESnU0OEk2UnlqUlNySU9leDBxVGMraWltYU14eXJJT1JjWDJOdDZ0bklQNVpPN0lFZ3c0a2txNnZ6c1pKNlNDS09WSGhraXFQRmtVanErK1NQVlErUUtYVm1PSjJMMHpsWFRpTmtZTm1OaHFhcm1zTk16TlZ4eUo1eEdDYm4wYU1VYUtWWlJKaDBlbXc4a2RKaXBGcE1URzFkZVF4c05oNG5aaTc2Y3dDeGtPaGM4RXYzVE5waXBKR2pNZUpSOWpTSWxTNHV1dnBnU0RGaWdjbmpSNmZCMTlPYUtseFVncGNZbENlSnF2ZllPTldJclZXb1ZjME9HdzFwMUpJaGphbFVzVnRjbTV6Z1Q2Y2VOYjdjd1NLK3JKUmR6NnVPWjQ2anhLTm1VVnFPR2lOZkRTdmlDaEN3b0tSUis2cjIyRmdUVmlLMVZxRk1UbExHc2l0aDJRczNEdGp6dytIMDVUUDlTVDJTU3VsSml4U3VyYldOcVhwV2tWYXJDZ09GN2JGNDF4RmFoazhVUnBzTXJWOE9oZzFwSWtUTEZ5NlY5cmUxSmlaRnBjV2hwWkVhaWJVQlZxdWF2VnpSMUVnM3kwaXJVUlhibnBGV0FvY0RuSklJMWRpN2U1V1dSYVhHTlM0dU0wSkViSW0xQVdCRjYrNnVORW1oY1phYTQxOTFhYTBpcjJ5a2tXTVN5R1J2ZkIzRkRFeUNoakRReGNkQ2VJMEdVMTNHckVWYzFjMTkxYWFzYSsxS2x4S2ltWXNmMFVPd29UeUN2bFMxOHVTdm1OWHpHcjVqVWNUS2FMRnYvRkQveEFBcEVRQUJCQUFEQ0FJREFRQUFBQUFBQUFBQkFBSURFUVFTTVJBVElDRXdRRkJSRkVFaU1tRncvOW9BQ0FFREFRRS9BZkt2Z2N3WDRlQ0xPdDI3ZVdqaGY2aUs4TERMdXphRThaKzFOaUw1TTJQZ2MwWDRGaldpUDhocXBHWkR3d3g3eEdOMmV3amhRaUtOY1RSbU5KOEZmcno3ZU0wNEZHTnBGTElCb3B5MHUvSGdpazNiclF4RVorMU5pQVJUZHI0NDd5NkxkUHZUYmg0OHh2MHQxVDh5TVRHaitJNjh1MlppSHM1SitKYzRWMGNQbHowNUdOcFQ2QXNwN3N6cjJSdk1ac0lZdHYyRk5Qdk9RNzlqYzdxVDRpM245Ykc0bVFKOHJwTmZDWWFPem1UWVNDZlNkQXhvOE5ETHV5dmt4cWViZWNocHNnQXNrcDhZSXpOUmpjM21SNGJEWlMxTlkxdWl4RHczOGZmaG1PTFR5WHlwRVNUelBmVVZsS285S0ptZDFLU0lmc3pUdVEzM3haQWkwamhxMFZobU5JeklRZ1dwWW1CdnJ0Mmo3Nkpid0FWc2lsTWVpK1czMHBKVEliN1lDejAzQzlnMTZJMTdKblVjT2FicnNwWlFpMzF3c1IxN0Z1blVmeEJ1d3RXUkFVanIyTFhWMUg3QWFRTjhaTmRrRlhwWnZmU2R3dDBXZmFUU0p2c3dhUWNDc29WRmMrZ1c3UUxUdVE3b0VoWjFmUnBaUnNKdnZiS3pyT3JIRmRJdXZ3bGxaaXJQK0UvL3hBQW5FUUFCQXdJR0FnSURBUUFBQUFBQUFBQUJBQUlSQXhJUUlDRXdNVUFUVUVGUkJCUWljUC9hQUFnQkFnRUJQd0gycmFvZDZlcSsxWEMyRjUvVFZHWGhHazhmQ3AwZmwyRGFvZDZGeGRmb21PdUdXbysxWEMyRjV5Z1pFNWlZRXB0V2VldThTMHE0cTRxa0hBYTVLakx4Q05KNFZPa1psMkxYdWlWZTNHczYwSy8rWVFlNXhRNnpxVFhKdEZyVE96Vm0yUXJpbXlUQVRSYUl3ZTBQRUZIOGR5cDByTmUrNDJpVTJvSFlHaXdwdE5yZVBTVm54L0tOUk5xdko5TlVwM2hlQjZwVTdOVGhWSmpSTmVaZ29PQjQ5TldrT1JjU3FMU2RmVE9hSERWZUJpQWpRZDZRcmdwRzA5MXJaVEgvQUE3c2wzMW11S0RweXpDQ3JPSU1MeUpsUnhQWGNka095RXpnOWdldjF5bU1ETk9zVEEyMm5BOGJKNDZUOXhwMFR1TUpWeFFkOTVYSWNkRjNPNHpNWFlCeXZSTW9jZEV0bmNaZ1JLSWpPQlBTS243VnYxdE55dTVWbUlFb0NPbVJLTFNGY3BDMDJBN0VtRTNVOW9nRldLTm1WY2NBSTdzSzFXcURtaVVCSHBJQ3RDZ2Y0VC8veEFBeEVBQUJBUVVIQkFJQkFnY0FBQUFBQUFBQkFBSVFFU0FoRWpBeFVGRmhjU0l5UVlGQWtXQURFeU16WW5LQWtLSC8yZ0FJQVFFQUJqOEMvd0FDcUQ4UVBLdGo4UG9vWUJ3c2ZpR3dVZncvbDlCK0c4VWVWYkg0RUFRb1hFZEpJaFF3RGhZRmZOL2FDcm1FR2dvcUJNRVFKbXQ2VDF3Q2pmUTBRUGx3ajV6SGFaa2U1N0gzSzByVE9OelF3VlRGMVRGRGpNR2pNQnROYTBtaUZBQjFtelhWUnV2UXpEM01aZ3o3TjE3dWptRE1vNVJtamROWFRYT1lEaVVURTYwZkVpNGF1V2VjMjlHWU02UEJWUEtnb0dWcTU5SE1USzF4S0VTK2hVU29oUktIRWpWeTN4bUpsYTRsYU40UmNubk1USzN4S041d0UwZDNoYnFGd3p6bUpsYjRsaG9KeHRXU0lYYlZSUkJaakZSbVpHMlltVnZpUUltZG83WEE1bU9ZamlWcmlRblFYQjNNa0ZCN0kybEdaTThTdGNTTlhEQTl5Y1hMUjJ6Sm1VOEdRYm00aHBTUm92Q01wM09aSFl2NldTVmdBb2toZHdXSVhoTTlKVlpoOXlqYzNQU2N5YUd5aWVrTENKM3VLcnRod3VocjdYVXk5bytwUU5BOW91dHQrY0JKRUkyVkFWeStBVVdxdFgyaDJXbzFUSTFySUFpWDhsVzJzRkRTYUxLUDNsc0FxOTN3WWloVUM5cHJhUmhueGlWd2lYeGtoNU5jdHRuMThHR3JxNDZxRFRnTmF5dFNNajNKSExBUGhjUGdWWk9LaHBSNGMwSk9LUDNhdVNOc2t0YS9DanJJR29kUXdrYUw0anRkSFNyOWxHNUoyVFEzeUlCQWZHNFVSZ1hrdnFxVVJGckZkNnBWV2ZKeHVpZFVjaUczd3VKanM4c2FDNHREdUQ4Q3FpV0FRWlE0eUpvL0docTVvYk9BVWZCdVN5eU1WMVZMcXJwb1YxQjl0ckZ3NHlJOC9CaEtUSTAxczdjWEZyekxWZHE2V1huYkl2NlNvajRFYmdvYnVpRnZwOEFrK0VUa2UyaW9mVnpDNjRrYUc2aHBSOFFyTFk5cnBNYjc5c2U4azBhVVI5aFEvVXJ1dWt6eFpObHJWVkRMUzZvZW54bDVrYWE5eW1IQ3NzNEx1S3hWaHF1N3NSY1FIY29uSklzcmZSYUhaUlpyd29OVldObmxVdllTMDl5UUMvYkhzeU5OSm83T2l5VlhwTW5VMEZEOVA3eWVJVVAxS2J1Nm1Zcm9hKzFTUHBWZ1YxQWhkNGxpcUtzWFlmYXRIekxBK1ZBdW9yTE9IazZxTWdIbnlneHJKUXJ2YSsxVm8vZVYwTk5GWHBMK3BrRmRzRmlWUnNyK2MwcXRrcUM2cElPcGdzQ3ZQMHNLT2dWMWR1cWdLTXIrNlMyM2pvNG5NK2tyckVGMG1NdThuY1ZWVjhxdjNKSFZVd2ZVSVFhSzcvOEFpcTBWMGgxZ1luTnFMR1BLNmhCZExRZEU0cWl3V0JXRXVKVUZzL0IwSklsRm81MVJwZFRNVldJVkdoTmc2TFhsK0t4VmF1Z1hSS2ljL28wVmpGVlpWWWhkeW9RdG5VV0N3V2l4S3hWU3Y0ZU9xaTBmd2FqUlhlVmlzQXUwTHNDN1FzWUtwai9wUS8vRUFDMFFBQUVEQWdVREJBSURBUUVCQUFBQUFBRUFFU0V4VVJBZ1FXRnhNRkNCa2FHeDhFQmd3ZEh4NFlDUS85b0FDQUVCQUFFL0lmOEF3VVVFNUFxeUliOU8xVE54SUVZNi9wNzBwTlFud0FRRUJPOFQrbUE1QkRwdUZPRjM2Y0VxRU5abmpFMEp5MVVRUitnaVNpZFc2SU1BYXB3d0tRWXMzWFJUQmlLclZOMyt0QUFoREp6MGFkQ0JXM3gwWHFWQ2ljWUJFSWdoajFSVkNKQk9pSUFERWR1cVRJWVRpMUNGUmpEUkFiUmRETUhZMXpRTmNNUlpBRVRkRkZPV1FPQ2JvQ3FHUFZCYm5mWkJLRTJOMndWeXRLOUFKT2FGMC8xNlpoN0tLRmE4c3JYdmhGb0dEM1JFcGpuS3VZdGtWY3hiNFZPNUlSTTFBOXNCWk1UaEZJY0lab1dRL3dCNWhBSktrL0tKSkVtcHlBT0VBZVlYVDJ6SjFKeHZFWWFEbEJ5RXVxQXQ4WGNLQnZsQ3E5S1d6YnNQUkJLcnd6WFRuSDBzZHdpSFo4b3M3Z2pkWE9WakJwVXB5dXptWXZkRG9peUxsRzVybDNEVHNPV3R0T2JmMEdGU29JM0NJYlA4Zm8rMkl5WDdocDJBeTFOdml6ZUtUemhXaERLRUxTVUE3SXhnQTVPaUlBTVJvY3Z3L25vMURZbnQzSDN1WDV1VnBMY3dvVlRJQTBWaW5PdVVGVndqS3VVNzNBY254T2pBMzNJN2dLRjd2cEg0aXd4QmZJUzYwckFEMngwQWRjaVQwWUZ1QStlNENoZTd5L1YzR1dCdWZJN0FTNjNrTExlUXNXU1dLcEp0QlRqcUNkbmdLNUh1QVh2Y3YxZHhsbzJBejFIMEU0eVJBRWtKeWhPRlU0RWdEZ2ZORVdoOTUvbnVOZGZMOVhjWkdCdXR3RG5oWk45Y1NuSVN3VU40amxFbGtmaExlbmNhcTRkRTRYQjBCSDBXL3dCeVBJWElnU3dwaUpkUTV6S0x1MEJjb2x5U2RlNDFlVjgzSkVsMkhRanRQZGtwSGtxNDZkZ0JsaUxmemp1VXpXSkdYNnEyU0c2SG9WL29HU095YkVXVzZOemI1QktvdFFlM2NwY2hqOE9DcW5JSzBPUkVjWVVkSllGQVhCUXllWVMwb2d3RWM1aGQ2Z2w0UkxrazVEQTNNZGV3ZktEbFY3eHNkVVlwN2pPNlQxMFN2ZkowQkFHQUhsYU1Md1g5WWxYR3VLWStMczg1WUcyWXcyVFliOHdRT251SUVOL3hIR2p3aXJKTFpHSmoyNFlDNUtZZjZqclN3Rzhrd1JzbHpRZjRaT1RGdVFjYUlQbUkwRjFGNlJ3cnlPWVlxc3lhU1BiU0FBNUtlY2lxZndEU2FKcVBEVFJGSVdJeDRBd2VjaDlJQkdqREFFNW1weERteFRGaFFOeTQ3YXlHNVA0TDFoc0dIRFFoWUx6ZkRjeGZYemlBNVpBaXFSS0p6dGs1STZPVTY2WkFhVkoyVDVSWWRzc2pxZ0FBQW9Qd2E4V09wN1EyVEdxa2N3cGlNL1FTY0dvdGlBNUFGU2pEZ0tRZU1mc2FkSG1rUjJSN092eC9DbURjZkkwRHZVWlBaT0pXQ1ZNUFRVTW5DRU1CSk5nbnlnYUN3Nkxsc215SFlqV2FsQkE2RDhIUXZDRUJzbnNsQUdyaTFjSEVBTURoRVhkeFFiSDRLeVhvZ3JtQlEyVSt3VzZUdzZreHZBZGk5U1B3dlJ5Q1dEb0t6VXluQnJMRm8yQTlBUmcveVlpa040VlNCeU1wdzFpZ0NOQWc3RTUvRCtDU3djb0tqVXprazE3QU53TERreFNhbzNSMVZEaEJnUVdBMUVRQmdCVTEvR1RXWTN3QUpMQU9WUXUwVzdJNHpYL0JTYS9Md0NCaFY0dzRnekFUQk43b1NHU0RQbEFzQUkzUlI0Y0ZVb0J2ajZQZGlNMGR4RFJYQi9BbWVJeVBCVFFNRFFvR0J1b0s5OEFZOGhSdU5YNEFkQkE2TWRxUy9ZNGxPdEh0TjBRTVFHUlVaU2hoVXdnR0RaREFOSlpTU3BVeEhFTVVFT05pSE9Ick5WMzdJSXhJZFhSeVlnSWlCbGxVSGNaenZ3YUdnSW9keWRsREVOc1VuUUlHUWxnNVFWR3NzandVQVd1UTQ5UmdndWNLbTVXbDdpQXk0SitWYnd3RWRSZVVDRElMNTZ5RDlrUWhISjdJSEdZaFJtTmFTYmJ5SHFNYTFJaXo1d1ZWM0VCQU9UamJvUkYwQUFBQmtpZVp5aVRnZ0ZpeURBSlRRZWtnMXlPV0laZWg3RDA0TkNoVEhzbEFnaHhPTk1HeUlZRzNJa2s1TG5zdzBVZ2pVSnNtZWhBZ2h3WENBeGJrQ3JXeUU1d0hjMUQrYUdSSHNrcWtlU0VBQndRY2FJWkhyVGhibUxGTTBCeUZ6ZWlKcU1GMGZNSkZXMlFtQkpUU2ozSXQ4WnZnd1BJMlJXaktqMld1SURsaFZlVlhKTWhWSnprcXdPQ3Y5S3FvK2UxalByRkZDK1pSQXZURDNvQXY0b0tPaU5ORnd2R0h2eHpCVE5NYWxDbERmVElJRFExSzBXNTJGYmdlTUFLSUQ5UjR3MVU2R3lNQ1VOQ2RaN0YrVUpUcVh0aUFTV0Fjb3hBT3l4VVZ0NkRqdWRmV3NhSStPY0VMY09VeWlTb21VNFdJNFQwRVFkeDVLZkppT2pNSUNEVEFscXFwOWdtdXJMSUUxbFFwOFlOeENEa0FBR0Nhb1d1NGhVRkJ2aEpsL1lkMkJFNUVIWlZabEs0ZTlWRWVVd1RWd2pOellwbXZwVDFXZldVREp4QzRCdGdiRGNZWVpJZVM5WFZUZ2NMSUVFT0NpQWFnSEJDa0FWVW9hWkRmeGk2S1RKN3pSRkhKNWxBVU9DK1FLcjI4NE5JcWFZUUhsZE1GQ0R5bi93QjBDSFlEeW52bWJZRUNYRUhaTVA4QWNKckhvbUdva25xdWZLbnFib0VHaFQ3ZUJkYU85QmJ2OU5IbEduSWNndE4rQ2pxRWFKSEtxaThyVTBlNVZWcU1XS3UrOWIxU3Nua0w2UWlRT0FibE9RQjBUOEg5R29BOHFoSUFOQjVDR3NSRC90TC9BR0VkRVMwMXdDTk9ibC84VVAvYUFBd0RBUUFDQUFNQUFBQVFDQ1MvL0RSOTl0QkJCQlIxKysrKysrKysrOHhCQkJCRjk5NURYLzZDQ0NDMi92RFY5OXRCQkpCQlJ4ODg4ODg1eEJCQkJCRjk5OUJIL3dENGdxZ2drdjhBOHNIWDMyMUdxa0lFRUVFRUVFRUVFRUVFWDMzMkVQOEEvd0NnZ3ZpZ2dsdi9BTXNIWDMyekQ2SWtFRUVFRUVFRUVFRjMzMzJFTi84QTZDQ0MrdUNDQzIvL0FDb3NmZmZWbllzQ0FRUVFRUnpUZmZmZVlRMy9BUDZJSUliNzY0SUlMYis3ZDNyWDFhL0hrMDNnazAzc016VDNFRWQvL3dDaUNDRysyKytLQ0NDMi9PL2hCVjI5OWU5OU9LZjkvd0JqK2dRei93RC9BT2lDQ0NlK1MrKytLQ0NDeS84QTFUMWdnWXM4dmpQZnVjWVVpaDMvQVA4QTZDQ0NDZSsrQ1MrKytLQ0NDUzJWL3FQTEphaGRDQnFERERML0FQOEEvd0R5Q0NDQ2UrKzZMQ1MrKytPQ0NDQzcydjhBL3dEMXI5ODUyWnIvQVBwLy93QWdnZ2dodnZ2dWdyUXdrdnZ2cmlna2lRbDh1bnYvQU9uK1Uzdi9BUHR5Q0NDQ0NPKysrNkNEOXRMQ1MyKysrT0NwQ1ZDQkN5eWh5bGFIaUNCQ0NDQ0dlKysreUNEZjk5OUxEQzIrKysrbENjSlRDQ0N4Q0JDcENRSkNDR2UrKysraUNEZjlSOTk5TERDUzIrNjJQODg4ZjdJaENaQ3ZLUE1QKysrKyt5Q0NIZDk5QlI5OTl2RENDeTE4ODg4ODg4NUFPdEs0K1AzaisrK3lDQ0RQOTk5eEJCQjE5OTlQRFU4ODg4ODg4OGo4UDlwcjFWNDk2eUNEQkhmOTk5aEJ0QkJCUjk5OTlsODg4ODg4ODhuOG5XcDhmdmZDQkNEVFY5OTk1QkJCOXRCQkJCeDk5Mzg4ODg4ODg3MDhYRXkvODg4ME1yeitkOTVoQkJCTjg5OUpCQkJCeGUvODg4ODg4djhBTy9Kd0Z1UFBQUFBQT09ZUVFRUlhmZFBQZmJTUVFRUTZkLzhBejkvMy93QS84c2Q1RmRaYno4d3dCQkJCTjk5OEFRODg5OXRKQkJSakZIRXlVblFHemdkcDloV3hod0JCQkJOOTk5ODRBQUEwODg5OXROQkJnMTh2cm81L2owUGZ2Zm9CQkJCRk45OTk4NGdBT0FBQVEwODg5OTlOTkJCQkRKMEFBVEFRL1JCQkZOOTk5OTg4d0FBQSt1SUFBQVF3ODg5OTk5OU5OTk5OT2N1ZXROOTk5OTk4ODR3QUFBQU8rKyt1S0FBQUF3MDg4ODk5OTk5OTk5OTk5OTk4ODg4d2dBQUFBTysrQzIrKyt1S0FBQUFBUXcwODg4ODg4ODg4ODg4d3dBQUFBQUFPKysrK0NDUzIrKyt1T0NBQUFBQUFBQUFRd3dBQUFBQUFBQUFBR2UrKysreUMvOFFBSmhFQkFBSUNBZ0VEQkFNQkFBQUFBQUFBQVFBUklURVFRVUFnVVdFd1VIR1JjSUhSb2YvYUFBZ0JBd0VCUHhEN3IzQjcvSDJleW81S2lGT21Eclp2ckVSSS9aVTd3N2h0NGZtRUx2eXpLenVUMytQc0pSc3QrcW1GR3h5ZWpxS21uSlVCMW1XZHR2dG9qc3RucXJUM0d1dWgrL0hCelFrd1ppVU9qVlhMZC9iL0FIbGorMDdoTjRmbVhEL0xOOE14Mkt6L0FMTWdFMU5jRXdhYU1NUTRtYmhUZnY4QXVFRWFlTVJScytaMVlSNWQ4dnR3RlF3bFJBVTFIMTR6THF0WHltV1pJNHFvanZ5SGZCdmtqZ2U0ZlRQdU9BYXUvd0F6SFBFZlFiajVEdmczejFFSXVuWDlRQVhLNDFzb3JmZHhLYTRmUWI4bDN3YjVZdDJ4Z3hhLzhsbzBvN2pBTG9ab3JXei9BQ0ZXZzVQSmQ4RytYZkp2Z0RheVdTMHBDa0Z1M1BYa3UrRGZCdjBIRnVkVEJWbjZpcWxyejE1TEt1RjJwOEVvNjlIWEJ4MXdBdlVBS1dQMmVUaGdBMTZFSGNVMXdEeDF3SkFTZzBRVDJGam1XRXFMc0hzZTc4ZXZMNkRMOGtTbzhVTDRTWFQyaFZsWExnMTBlTmlQb3ZBNVJ6RFlJbGtSR21kY1BvTmdqandSaS9vbkRLT1VoM1BnbEpmQ3VSYmMzZUNLSDBHSEI3enJCcW1EWlo2QUcrQmRRVUFVVE5lRG9NRzlldnZoNDZSandPbnJvWDRTQnpCbVhDbUJCSFhDWEFxTFVPTytOT1hHSmNUbXc5eEJIWEE3UjE0YWFUQU1XMUtkTXZ1UVgybDVsZTBXb0ZTeWJZdzRoamhGRmdPYmZIMGtCM0FPbyswMU1RcTVraXNKbUk3SjhFd0V1WDVvV21DN2xJUEJIVEt2TS9QRmZFZXlOOWpXaythZkpGdS80Si8veEFBbUVRRUFBZ0lDQWdJQ0FRVUFBQUFBQUFBQkFCRWhNUkJCUUZFZ1lUQlFrWEJ4Z2JIQi85b0FDQUVDQVFFL0VQMnJWYTlmZjZmREt3M0RQYmcvV0QrWUlsbjZVYWU0cEREUi9pWUNOVnIvQUwraGNoVlV5Mm40ZHl1V1lZWjdjUFZxQUE3K1YxNlFxQnBmNDhkQUhxQnQzbVdPWlFlWkFpVTFEVU9TNWJQVXhDdFh6aEV3M0c5aE1OVyt2VVNndS9HY3ZUTzhJY211VDN4WDJTQmlEdUgyaVZ0cnJsQll3a3ZXYllhOGcxdzY1WWIra3hHbjF3NWRWTXlNdytEcUhrR3VIWFBjSVdOa0JCREpNRHkrdnFEWndmQjE1SnJoNUlIMkVRZFQ3UkRVSUJWYkNlMzNINlY4dmttdUhrMXk2NGJDOE9ac0dLamNIUGZrbXVIWERyNFBGQUY4QVUwYzkrU1RVYXR6N0paMzhPK0hqdmk0RVZhcWY5K1VsWGZ3Rk5RTGNDRGp2aEFWaVV0anpxMUZ0WXlRcmxmZmozNFB3RXJ3d2JoeFlyZ3dIY2JjSkRLZWZCeFRpRWRLRFRCRXNuZkI4SFZvTitDczErRjVzNVFqVSt5V3RmRTZLbXJ3VmwrQTVaMmlYWkVwcCtDSlhDbTRpSXJacThIY0lsYitmWEJ4MmhEaE52bllyd2dwaVZjR05zcUltK0JxTGNDNDhkY2JjbWN5b0RBajZNUk44THBESGhodE1nUVJ1VzdKWFZpSHVWaVhETWN5bWFoSm1PZUFFR1I1bzhmYVJYVVViaDdtNW1OMU1RQ014QmRNK3laV1ZLODFEdUo2bDRsRVRaTHFmMjR2N2gwUS93QkdvWjlVK2lCZGYwSi8vOFFBTFJBQkFBRUNCQVFHQXdFQkFRRUJBQUFBQVJFQUlURkJVV0VRSUhHQk1GQ1JvYkhCMGVId1FHRHhnSkQvMmdBSUFRRUFBVDhRL3dEZ3JJZEtVN1JQK09DQk5LT1pzK2hGV2FBZ1RPYzZpNkZRbi9HUUpTK0pzSmcwWm1pVUx6UUIyem9pWFBGcElZLzR1WTM1RkdEOXZTbWNBbE1HQi94WXhoUnFLaFV1RmFMWHRMSHZQcHhPQTR4bFRxSTIvd0NCRmlpQklEaEpqNEwzRW9DZ2VZWFFMY0RFbW5BTjJtZ01rektTNEtVWW5qcEdQbUFtNm9aQnh0YWtkWnhMVThDOE1GN3d0N3h4Z1JOV0FJMlRCcTRrWWhuVVVYb0pjbE5Ba1orTGVLWmZSSTdlOUlGeEErWFlOQUdTbWdCak1GWks1QW9PN0N5b2NKaUJuemI1RTZZdndjWkNPUzBVUFYwTzlZaURnR1JweUxZRmk3QmhTandKQm1pMm1PTnNxbVNDeHUwbVFjWEtuaGVFcFQ1WW9EeVRGNk1ObmRpMzVqbTZvTjNRUGx4bWhaazFEZWx0aFR5SXU2Nk8zS1dLRENFNlhuNm9INXBRd0g1ckFIUFdRcmU4Q2hyZThDbDRRaXNFRXBpczRTSFY4c1hjVUpuRmIxVFdNSzM0ZzkyZnJtNkF2cWZsekVmSldhNUNuS2xKWGtEY3FPbFFoTUJwU3M1WVpFZEtpZ1hGZE9DaVJiaUR2eTVieFdNYWtUVnVrSHQ4d2JUTjNzQisrVVNEVnBXY2w5TnZybXQrM3FEZ2VuS3N1U0kzYTltOXg1aEdEVzlTcmkwWTFoTlI2Q1ByekR1TXU2OHV5WTk2MzFIMzVUd0o5QXBXODA5dVkxY0JHVktyTFY0YUo5ZURzR0ZiM3IzZk1MWCt3Y3ZlSHN2ekxWWHNZdkF6S2o3Wms0a2RhUlg1Nzl1WHY0SkdYQVI2RE5KUllyUG1HTG9IdHk0M1VlL210QnE5Uzd3VVMwcE1SQlJ4QllESm1rcEtnQmRwUVdLQzV5MkxxRDJlRGIrcmpqM2p6SEQ2UTVjYTArT1B2bGt6Q1plaGVwRXpHc0tvVE9kTzc3a1NGT0h2bTA0MFBKTlFCdWtRVVFCbVIya25rc1hWSHY0UFFzRHFoOFQ1aDd3NXV0WFJlNkgzeTczTzZlSkRmaXNFdFNKcXhmcjVQcmk0aEU0QlRkQmlzUmxENE80anVnSit2TVBlSGg5QnZWSDJzY1JUQ2pxVlBTa3hVaG1KZXBvak1FSFNlS0Z0a2RZcDNKaHNsT3dYRWFHcEVZZWJmamZTd2ZENWdvUjBvd2Znb0FsZ3B3ZkQ3ajc1N01uTDBINmNRQkdvSUNTTk52QzNHYlV0d29xMFF0aXk1VTY0MlFuZm02eDNxZk1UMGcrM2d3YjFpdDdoT2ZyY0hWQjhMeGd1ejVMaFZqL29qbENBSlZnb2t4a2k5TEQ0OHh2MUQ5dVc4YzEvSThuV1lPc1c4Qzdaa2RncjhPUkNMeWdxWTB5RW1jVTVWSXIxME43alBLRUZQWVJkOWltdmhVdm1OK3BqNk1jdDhOZmpuNjVPdXcrcy9YZ2QrMTFYNERrQlB3Qyt4TktwWEZ2eHMvbURsNnNnNm8rQytaZndoeCsrVzhkZm52MXlXVDlBUjk4NEtnRXJUSVRJUTlrZlhKNmQrcXg4VHgzVE5iL0xrQ29La21DT2pZUDJucDVsWmRIMUVmWEhBZzFMUFd2N0ErazFwdzVKeFI5MS93Q2EwSEg5VlBxdjRWZXRhUjlsaXUxU0l1Z2ptQllsWG9DWDRwbkVxeXZKdkJ1d0krK0lJdkJsNlVxcXVMeVBHWXFCUTNvUy93QWFsWUVSaEhFZk1lN1U2aWZ1akM2WkYzb1VNSUMzdmJDZ0FnSU9lS0UwRTFQTHJINExVOTJYWit6OFZNSU9xOVJ4M2xEcUw4RHkyTGxucTNmbmowZjc3d2lweFl6WGQ0U0lkS2lvWEVTaUpJbHliclJwZ1lNUzRGaTlSMWtsTkZLZ1JHRWNSOHVZcTZBS0JoUTl2RkpKRGhRYkw4aUR1WVZMZDZKMzByZGpIVEI4UHJ5VHRZUkxvVnZ2Snh4OWZaQ29PNkwyYjhWZXEzWnZud1VkZkNVdzRQWklReVNKU056Z3ExL2ErV3BnVkFHZENTQjlEWS93SUU0QmVoZzV4YkkwMnBjK09Iai9BTzJpejRua3VaSkpvTFNMaXM0YUJTcXBXZUF3eVZoS0F5ZCtNQ0RHdDV2UUdCNnkrbmxvYmVEa2EvNFZKekIyWiswMFdJcU44QmF4UDFVTlJ5R0ExT0crRXVoWTRrQVlyRkZnV0V1MkZLQmljbmQ4M3ZZOWozb0xCYVZwS3FEMFF1dFczZ3NhQVdEMDhzYUF4eTlDakxnSUQvQzJ6S1R1L3dCNzhWQXhpejFUMkVJRys1UUxFaUR0Wjk1NHl5Uy9wY0h4NHY4QVBGalVwQVVoMlNPZ0krdUwwUGJMOXZ4NElRRnpyQmhTUW81ZVJ4Z3ZXNlA4T0Yycmx4OUJsN2NnTGt0Qm1oWXBtV2NjNTRrNk1PQkJJY0dsU0t5akxiZ0lsd1JkVEQzaWtvdUt6d0VFZ2JJeGFlSXlOQXNIZzlGNzFmMVVaa0NSMDhpYkZSRkVCWWovQUF2RHhjTy82b0FEQUk1QzY1UWQzOWZORlpsdEdUbnhWNHRiN2NVNUV4RW1uQ001S1NyQURCWVdDOGZIcFRGaWR6U1l5eUxOTWFMSWM4anV4OVBDVVZlMzBLa3hnejI4aWs2U0IveGZSUGQ1QVJXQWxwZ1lqTHYrcU9CdWgrL2JpTXpkQTNjZms4QXFBVTJ5NmNUcE0xRlh1UGh5bFpMd1ZoS2tVQWhtSjlYeUxvY1B0L2hCc0FKYVl6akxrdEZvUFF1LzIvQ2VNaDdjTkJrVFJTMEtYUnc4Ry84QU1BWkRmMG8wbXE0SFFvQkFBMEtpaE5FbWlYcDVpcEUvUmtlL0FFcE1BcGlRa1hNbjU0SVNNaDh2a1JHYXVmNGJwWnBlaHk3QS9hL3R1QmtXOHFraFJ4SzdBblZ0UW9pV1NnTnR3TlRYd0FTR0l0aC83eXVYcklUVXNkQkFwaWRpSmVNYUd3UFNYOGl2TlV0MDNvR3BwRS93WGxnK2dja1drdUFhdVZYTmxDN3E1OEx5MnJZSm52Vy8xZlFzZmZDSXRrWkpwUXBZSmNibitCZm9RcWRtVkx5TzdzemN3N2FWREZyV0o0UHJQTTY4cUJ4bUgzUkdNQWprMnFUNjVmZklvRXVvTzdScXdFSGJIM25pWVdlQ01WUEl1dzIxS3NCMklOenQ0d3dYR0tleDVJdFZPNHhHVnF1OGFUSE9wbFJSL0VFbWRidEtUYzdjN2s0eG1EUnEzYzBwVTFKTFVYM2VOOC93eThoT2tBUzB3amhwYmJlbkpBcjU2SVBlbFVxeXQza0VLM0s0RTNYc2ZOSEZTU05uVzZhVkdRZzBsVUp2VVhVSno1RmlScnJ3ZGhqY0ZBd0JxTTg2RndsajVOSmdSS3Vma255aFZzMU9VQVhzVHB0VS9mZHFlcG5VMW00RmdkdnhVQ1JMSVlPLzVxSUcwYkQxd280Qk1GU1BnR0VvWEU2R3RZVEFXNUxUd2ZSUDN5c0RSTXhzY2s1WmUyN1VNNmJrT1hUa1pRc1I2dDM0OTZ1QkNJNm14N3RTNnRFVWhtcjlRb0FITVdCNk5BRUE0SThTbGROVXZwalFLOHRvNzlpbkxrWlZidmt5TldrU2lZT0NIRjEwb0VKTGlNalVJUzJRbmZHbnlsZGM5U201UXppUFdQdW8wUk1iajFLZ1JmV0ErcWlJaTVQN1ZGR2FqUEZRS3NCalVnT2dPVlBrR3c2TlI0cnVmSmF0Rld3bjZvSlk3RzFIYkg0cWNZOFRreTdjZzRhQ2FaU2dyMU5FYzI2QTE0UklBTG93RFZhTnZXMlFaYkZQaVpUeFFBVk1BWjFMaGQ2aitpaGNld2pEMytPUldldmhRSkIvWnZROEg2SStWd1NiTmQvU285NWNzYm8wQUZDT1p3OVpJVnE2aVdybE45NlIrcUpKK3BkODFnamFEZjVXb2pvYVAxUlVjQzVmRkpFdEFjWDRvUkpHZUNoZHAwbFMxZ0duZWtHQ0NZUlJrbXRYT2pVREdlcDl5dElYUmZpb1VneGNZYlVJZ2pJNFZDdUJnNHFobEY3R1hZTmF3N3oxTFZaMTBCRG94OStKcFNXQUpXaFlmMkx2U2dWWUM2dElLNCt5dy9QZnpORWhkVjZLaFVMcm5walVMZHMzT1ZJVGtCODBZbHpOMWNWcEJJYmxNOGxlOVBhdWs5dnhTeHhDVzhlbEFvSnhHaGtVWWt5ZnlvQ1VKdHdBS29ET29qRmxib3dxU3c5NTBVM0FEUTJhbEdJbENQWDVlMUR5UUVDQlRNUTR6L3JTbGgySDVVWDF4dSt2QU1GR0QrTCtiRlNyQlVOUUlSNUMvclVTUGFsbEVUc0pkUnlZcllETnBFcE9KdHRTQ21XSmsxZ0dkM05mK1JVbUtkQ2tVWXZRTFRrVFJpTUhGWmNFc2ttcWo0cWVSOXo4VXJsM1NZRkl0S2VJOXhVYVNiVWZCRzVOYlE2VWxJbldMMHBiVFMvcmtZcStHWXRLa2dQUFRiemtWU0tKbVViVGl3Zm1xS0N0VkRVR1ROay9GRW5RS0NKSWliVmhLYlEzcXdUSzNYVnBJV1FZQ3lWa1YyUTFIaUhwUmFqbUt5cUVTWWhaMmNMa05aUldXQ1VTWk85MVl6V0N4SFNrRUlqQ2NGU05ZUllZaHZRc2dtMUliL0p4b25TQmg0RHo5V2E0RFloRlFMTzNvOXg0bjRyRGR0WlE4OUVGQ1JtWHQvR0JTQVJKSEtzby93QXNhaXhld3JRN3lGYUlHcXkwUnVGbVp4N1ZQWmNiVVFtYzF1MHdqb3JIN3BNeDgzL2hSUmtVZHF5TXRGV1JEUnZ3dkJQZ29vT0s5MWYreXB4Y3VxMFlnU3FlTzNUL0FQaWgvOWs9Iik7Cn0KI2RhdGEtdXJpLWFzY2lpIHsKICB1cmktMTogdXJsKCJkYXRhOnRleHQvaHRtbCwlM0NodG1sJTNFJTNDaDElM0VUaGlzJTIwcGFnZSUyMGlzJTIwMTAwJTI1JTIwQXdlc29tZS4lM0MlMkZoMSUzRSUzQyUyRmh0bWwlM0UlMEEiKTsKICB1cmktMjogdXJsKCJkYXRhOnRleHQvaHRtbCwlM0NodG1sJTNFJTNDaDElM0VUaGlzJTIwcGFnZSUyMGlzJTIwMTAwJTI1JTIwQXdlc29tZS4lM0MlMkZoMSUzRSUzQyUyRmh0bWwlM0UlMEEiKTsKfQojZmlsZS1mdW5jdGlvbnMgewogIHVyaTogdXJsKCcuLi9kYXRhL2RhdGEtdXJpLWZhaWwucG5nJyk7CiAgc3ZnLW5vdC1iYXNlLTY0OiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUyMHN0YW5kYWxvbmUlM0QlMjJubyUyMiUzRiUzRSUwQSUzQ3N2ZyUyMGhlaWdodCUzRCUyMjEwMCUyMiUyMHdpZHRoJTNEJTIyMTAwJTIyJTNFJTBBJTIwJTIwJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNDAlMjIlMjBzdHJva2UlM0QlMjJibGFjayUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIyYmx1ZSUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpOwogIHNpemU6IDY0MHB4IDQzMHB4OwogIHdpZHRoOiA2NDBweDsKICBoZWlnaHQ6IDQzMHB4Owp9CiNzdmctZnVuY3Rpb25zIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwJTNGJTNFJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwd2lkdGglM0QlMjIxMDAlMjUlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxJTIwMSUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJub25lJTIyJTNFJTNDbGluZWFyR3JhZGllbnQlMjBpZCUzRCUyMmdyYWRpZW50JTIyJTIwZ3JhZGllbnRVbml0cyUzRCUyMnVzZXJTcGFjZU9uVXNlJTIyJTIweDElM0QlMjIwJTI1JTIyJTIweTElM0QlMjIwJTI1JTIyJTIweDIlM0QlMjIwJTI1JTIyJTIweTIlM0QlMjIxMDAlMjUlMjIlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjMwMDAwMDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMTAwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyM2ZmZmZmZiUyMiUyRiUzRSUzQyUyRmxpbmVhckdyYWRpZW50JTNFJTNDcmVjdCUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjElMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwZmlsbCUzRCUyMnVybCglMjNncmFkaWVudCklMjIlMjAlMkYlM0UlM0MlMkZzdmclM0UnKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwJTNGJTNFJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwd2lkdGglM0QlMjIxMDAlMjUlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxJTIwMSUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJub25lJTIyJTNFJTNDbGluZWFyR3JhZGllbnQlMjBpZCUzRCUyMmdyYWRpZW50JTIyJTIwZ3JhZGllbnRVbml0cyUzRCUyMnVzZXJTcGFjZU9uVXNlJTIyJTIweDElM0QlMjIwJTI1JTIyJTIweTElM0QlMjIwJTI1JTIyJTIweDIlM0QlMjIwJTI1JTIyJTIweTIlM0QlMjIxMDAlMjUlMjIlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjMwMDAwMDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMyUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjNmZmE1MDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMTAwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyM2ZmZmZmZiUyMiUyRiUzRSUzQyUyRmxpbmVhckdyYWRpZW50JTNFJTNDcmVjdCUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjElMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwZmlsbCUzRCUyMnVybCglMjNncmFkaWVudCklMjIlMjAlMkYlM0UlM0MlMkZzdmclM0UnKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwJTNGJTNFJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIwd2lkdGglM0QlMjIxMDAlMjUlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxJTIwMSUyMiUyMHByZXNlcnZlQXNwZWN0UmF0aW8lM0QlMjJub25lJTIyJTNFJTNDbGluZWFyR3JhZGllbnQlMjBpZCUzRCUyMmdyYWRpZW50JTIyJTIwZ3JhZGllbnRVbml0cyUzRCUyMnVzZXJTcGFjZU9uVXNlJTIyJTIweDElM0QlMjIwJTI1JTIyJTIweTElM0QlMjIwJTI1JTIyJTIweDIlM0QlMjIwJTI1JTIyJTIweTIlM0QlMjIxMDAlMjUlMjIlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMSUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjNjNGM0YzQlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMyUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjNmZmE1MDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyNSUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjMwMDgwMDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyOTUlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzZmZmZmZmJTIyJTJGJTNFJTNDJTJGbGluZWFyR3JhZGllbnQlM0UlM0NyZWN0JTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMSUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjBmaWxsJTNEJTIydXJsKCUyM2dyYWRpZW50KSUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRScpOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTXlXZWJGb250JzsKICBzcmM6IHVybCh3ZWJmb250LmVvdCk7CiAgc3JjOiB1cmwoJ3dlYmZvbnQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgdXJsKCd3ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgZm9ybWF0KCd0cnVldHlwZScpIHVybCgnd2ViZm9udC50dGYnKSwgdXJsKCd3ZWJmb250LnN2ZyNzdmdGb250TmFtZScpIGZvcm1hdCgnc3ZnJyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/variables-in-at-rules.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKQG5hbWVzcGFjZSBsZXNzICJodHRwOi8vbGVzc2Nzcy5vcmciOwpAa2V5ZnJhbWVzIGVubGFyZ2VyIHsKICBmcm9tIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICB9CiAgdG8gewogICAgZm9udC1zaXplOiAxNXB4OwogIH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgcmVkdWNlciB7CiAgZnJvbSB7CiAgICBmb250LXNpemU6IDEzcHg7CiAgfQogIHRvIHsKICAgIGZvbnQtc2l6ZTogMTBweDsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/variables.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnZhcmlhYmxlcyB7CiAgd2lkdGg6IDE0Y207Cn0KLnZhcmlhYmxlcyB7CiAgaGVpZ2h0OiAyNHB4OwogIGNvbG9yOiAjODg4OwogIGZvbnQtZmFtaWx5OiAiVHJlYnVjaGV0IE1TIiwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKICBxdW90ZXM6ICJ+IiAifiI7Cn0KLnJlZGVmIHsKICB6ZXJvOiAwOwp9Ci5yZWRlZiAuaW5pdGlvbiB7CiAgdGhyZWU6IDM7Cn0KLnZhbHVlcyB7CiAgbWludXMtb25lOiAtMTsKICBmb250LWZhbWlseTogJ1RyZWJ1Y2hldCcsICdUcmVidWNoZXQnLCAnVHJlYnVjaGV0JzsKICBjb2xvcjogIzg4OCAhaW1wb3J0YW50OwogIHNhbWUtY29sb3I6ICM4ODggIWltcG9ydGFudDsKICBzYW1lLWFnYWluOiAjODg4ICFpbXBvcnRhbnQ7CiAgbXVsdGktaW1wb3J0YW50OiAjODg4ICM4ODgsICdUcmVidWNoZXQnICFpbXBvcnRhbnQ7CiAgbXVsdGk6IHNvbWV0aGluZyAnQScsIEIsIEMsICdUcmVidWNoZXQnOwp9Ci52YXJpYWJsZS1uYW1lcyAucXVvdGVkIHsKICBuYW1lOiAnaGVsbG8nOwp9Ci52YXJpYWJsZS1uYW1lcyAudW5xdW90ZWQgewogIG5hbWU6ICdoZWxsbyc7Cn0KLnZhcmlhYmxlLW5hbWVzIC5jb2xvci1rZXl3b3JkIHsKICBuYW1lOiAnaGVsbG8nOwp9Ci5hbHBoYSB7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTQyKTsKfQoudGVzdFBvbGx1dGlvbiB7CiAgYTogJ25vLXBvbGx1dGlvbic7Cn0KLnVuaXRzIHsKICB3aWR0aDogMXB4OwogIHNhbWUtdW5pdC1hcy1wcmV2aW91c2x5OiAxcHg7CiAgc3F1YXJlLXBpeGVsLWRpdmlkZWQ6IDFweDsKICBvZGQtdW5pdDogMjsKICBwZXJjZW50YWdlOiA1MDAlOwogIHBpeGVsczogNTAwcHg7CiAgY29udmVyc2lvbi1tZXRyaWMtYTogMzBtbTsKICBjb252ZXJzaW9uLW1ldHJpYy1iOiAzY207CiAgY29udmVyc2lvbi1pbXBlcmlhbDogM2luOwogIGN1c3RvbS11bml0OiA0MjBvY3RvY2F0czsKICBjdXN0b20tdW5pdC1jYW5jZWxsaW5nOiAxOGRvZ3M7CiAgbWl4LXVuaXRzOiAycHg7CiAgaW52YWxpZC11bml0czogMXB4Owp9Ci51bml0cyAuZmFsbGJhY2sgewogIGRpdi1weC0xOiAxMHB4OwogIGRpdi1weC0yOiAxcHg7CiAgc3ViLXB4LTE6IDEyLjZweDsKICBzdWItY20tMTogOS42NjY2MjVjbTsKICBtdWwtcHgtMTogMTkuNnB4OwogIG11bC1lbS0xOiAxOS42ZW07CiAgbXVsLWVtLTI6IDE5NmVtOwogIG11bC1jbS0xOiAxOTZjbTsKICBhZGQtcHgtMTogMTUuNHB4OwogIGFkZC1weC0yOiAzOTMuMzUyNzU1OTFweDsKICBtdWwtcHgtMjogMTQwcHg7CiAgbXVsLXB4LTM6IDE0MHB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/visitorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/visitorPlugin/visitor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGNvbG9yOiByZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/css/whitespace.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LndoaXRlc3BhY2UgewogIGNvbG9yOiB3aGl0ZTsKfQoud2hpdGVzcGFjZSB7CiAgY29sb3I6IHdoaXRlOwp9Ci53aGl0ZXNwYWNlIHsKICBjb2xvcjogd2hpdGU7Cn0KLndoaXRlc3BhY2UgewogIGNvbG9yOiB3aGl0ZTsKfQoud2hpdGVzcGFjZSB7CiAgY29sb3I6IHdoaXRlIDsKfQoud2hpdGUsCi5zcGFjZSwKLm1hbmlhIHsKICBjb2xvcjogd2hpdGU7Cn0KLm5vLXNlbWktY29sdW1uIHsKICBjb2xvcjogd2hpdGU7Cn0KLm5vLXNlbWktY29sdW1uIHsKICBjb2xvcjogd2hpdGU7CiAgd2hpdGUtc3BhY2U6IHByZTsKfQoubm8tc2VtaS1jb2x1bW4gewogIGJvcmRlcjogMnB4IHNvbGlkIHdoaXRlOwp9Ci5uZXdsaW5lcyB7CiAgYmFja2dyb3VuZDogdGhlLAogICAgICAgICAgICAgIGdyZWF0LAogICAgICAgICAgICAgIHdhbGw7CiAgYm9yZGVyOiAycHgKICAgICAgICAgIHNvbGlkCiAgICAgICAgICBibGFjazsKfQouc2VsIC5uZXdsaW5lX3dzIC50YWJfd3MgewogIGNvbG9yOiB3aGl0ZTsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0NSAtMjM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/data/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/data/data-uri-fail.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/data/image.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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U3v/APtyCCCCCO+++6CD9tLCS2+++OCpCVCBCyyhylaHiCBCCCCGe+++yCDf999LDC2++++lCcJTCCCxCBCpCQJCCGe++++iCDf9R999LDCS2+62P888f7IhCZCvKPMP+++++yCCHd99BR999vDCCy188888885AOtK4+P3j+++yCCDP999xBBB1999PDU88888888j8P9pr1V496yCDBHf999hBtBBBR9999l88888888n8nWp8fvfCBCDTV9995BBB9tBBBBx9938888888708XEy/8880Mrz+d95hBBBN899JBBBBxe/888888v8AO/JwFuPPPPPPOOYQQQRXfdPPfbSQQQQ6d/8Az9/3/wA/8sd5FdZbz8wwBBBBN998AQ8899tJBBRjFHEyUnQGzgdp9hWxhwBBBBN99984AAA08899tNBBg18vro5/j0PfvfoBBBBFN99984gAOAAAQ088999NNBBBDJ0AATAQ/RBBFN999988wAAA+uIAAAQw8899999NNNNNOcuetN99999884wAAAAO+++uKAAAAw088899999999999998888wgAAAAO++C2+++uKAAAAAQw0888888888888wwAAAAAAO++++CCS2+++uOCAAAAAAAAAQwwAAAAAAAAAAGe++++yC/8QAJhEBAAICAgEDBAMBAAAAAAAAAQARITEQQUAgUWEwUHGRcIHRof/aAAgBAwEBPxD7r3B7/H2eyo5KiFOmDrZvrERI/ZU7w7ht4fmELvyzKzuT3+PsJRst+qmFGxyejqKmnJUB1mWdtvtojstnqrT3Guuh+/HBzQkwZiUOjVXLd/b/AHlj+07hN4fmXD/LN8Mx2Kz/ALMgE1NcEwaaMMQ4mbhTfv8AuEEaeMRRs+Z1YR5d8vtwFQwlRAU1H14zLqtXymWZI4qojvyHfBvkjge4fTPuOAau/wAzHPEfQbj5Dvg3z1EIunX9QAXK41sorfdxKa4fQb8l3wb5Yt2xgxa/8lo0o7jALoZorWz/ACFWg5PJd8G+XfJvgDayWS0pCkFu3PXku+DfBv0HFudTBVn6iqlrz15LKuF2p8Eo69HXBx1wAvUAKWP2eThgA16EHcU1wDx1wJASg0QT2FjmWEqLsHse78evL6DL8kSo8UL4SXT2hVlXLg10eNiPovA5RzDYIlkRGmdcPoNgjjwRi/on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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/data/image.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiPgogIDxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjQwIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9ImJsdWUiIC8+Cjwvc3ZnPgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/data/page.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+PGgxPlRoaXMgcGFnZSBpcyAxMDAlIEF3ZXNvbWUuPC9oMT48L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/charsets.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKCkBpbXBvcnQgImltcG9ydC9pbXBvcnQtY2hhcnNldC10ZXN0Ijs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/colors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3llbG93IHsKICAjc2hvcnQgewogICAgY29sb3I6ICNmZWE7CiAgfQogICNsb25nIHsKICAgIGNvbG9yOiAjZmZlZWFhOwogIH0KICAjcmdiYSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDIzOCwgMTcwLCAwLjEpOwogIH0KICAjYXJnYiB7CiAgICBjb2xvcjogYXJnYihyZ2JhKDI1NSwgMjM4LCAxNzAsIDAuMSkpOwogIH0KfQoKI2JsdWUgewogICNzaG9ydCB7CiAgICBjb2xvcjogIzAwZjsKICB9CiAgI2xvbmcgewogICAgY29sb3I6ICMwMDAwZmY7CiAgfQogICNyZ2JhIHsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDI1NSwgMC4xKTsKICB9CiAgI2FyZ2IgewogICAgY29sb3I6IGFyZ2IocmdiYSgwLCAwLCAyNTUsIDAuMSkpOwogIH0KfQoKI2FscGhhICNoc2xhIHsKICAgIGNvbG9yOiBoc2xhKDExLCAyMCUsIDIwJSwgMC42KTsKfQoKI292ZXJmbG93IHsKICAuYSB7IGNvbG9yOiAoIzExMTExMSAtICM0NDQ0NDQpOyB9IC8vICMwMDAwMDAKICAuYiB7IGNvbG9yOiAoI2VlZSArICNmZmYpOyB9IC8vICNmZmZmZmYKICAuYyB7IGNvbG9yOiAoI2FhYSAqIDMpOyB9IC8vICNmZmZmZmYKICAuZCB7IGNvbG9yOiAoIzAwZWUwMCArICMwMDk5MDApOyB9IC8vICMwMGZmMDAKICAuZSB7IGNvbG9yOiByZ2JhKC05OS45LCAzMS40MTU5LCAzMjEsIDAuNDIpOyB9Cn0KCiNncmV5IHsKICBjb2xvcjogcmdiKDIwMCwgMjAwLCAyMDApOwp9CgojMzMzMzMzIHsKICBjb2xvcjogcmdiKDIwJSwgMjAlLCAyMCUpOwp9CgojODA4MDgwIHsKICBjb2xvcjogaHNsKDUwLCAwJSwgNTAlKTsKfQoKIzAwZmYwMCB7CiAgY29sb3I6IGhzbCgxMjAsIDEwMCUsIDUwJSk7Cn0KCi5saWdodGVuYmx1ZSB7CiAgICBjb2xvcjogbGlnaHRlbihibHVlLCAxMCUpOwp9CgouZGFya2VuYmx1ZSB7CiAgICBjb2xvcjogZGFya2VuKGJsdWUsIDEwJSk7Cn0KCi51bmtub3duY29sb3JzIHsKICAgIGNvbG9yOiBibHVlMjsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHN1cGVycmVkOwp9CgoudHJhbnNwYXJlbnQgewogICAgY29sb3I6IHRyYW5zcGFyZW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQojYWxwaGEgewogICAgQGNvbG9ydmFyOiByZ2JhKDE1MCwgMjAwLCAxNTAsIDAuNyk7CiAgICAjZnJvbXZhciB7CiAgICAgICAgb3BhY2l0eTogYWxwaGEoQGNvbG9ydmFyKTsKICAgIH0KICAgICNzaG9ydCB7CiAgICAgICAgb3BhY2l0eTogYWxwaGEoI2FhYSk7CiAgICB9CiAgICAjbG9uZyB7CiAgICAgICAgb3BhY2l0eTogYWxwaGEoI2JhYmFiYSk7CiAgICB9CiAgICAjcmdiYSB7CiAgICAgICAgb3BhY2l0eTogYWxwaGEocmdiYSg1MCwgMTIwLCA5NSwgMC4yKSk7CiAgICB9CiAgICAjaHNsIHsKICAgICAgICBvcGFjaXR5OiBhbHBoYShoc2woMTIwLCAxMDAlLCA1MCUpKTsKICAgIH0KfQoKI3BlcmNlbnRhZ2UgewogIGNvbG9yOiByZWQocmdiKDEwMCUsIDAsIDApKTsKICBib3JkZXItY29sb3I6IHJnYmEoMTAwJSwgMCwgMCwgNTAlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/comments.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqKioqKioqKioqKioqKioqKlwKKiAgICAgICAgICAgICAgICAgICoKKiAgQ29tbWVudCBIZWFkZXIgICoKKiAgICAgICAgICAgICAgICAgICoKXCoqKioqKioqKioqKioqKioqKi8KCi8qCgogICAgQ29tbWVudAoKKi8KCi8qCiAqIENvbW1lbnQgVGVzdAogKgogKiAtIGNsb3VkaGVhZCAoaHR0cDovL2Nsb3VkaGVhZC5uZXQpCiAqCiAqLwoKLy8vLy8vLy8vLy8vLy8vLwpAdmFyOiAiY29udGVudCI7Ci8vLy8vLy8vLy8vLy8vLy8KCi8qIENvbG9ycwogKiAtLS0tLS0KICogICAjRURGOEZDIChiYWNrZ3JvdW5kIGJsdWUpCiAqICAgIzE2NkM4OSAoZGFya2VzdCBibHVlKQogKgogKiBUZXh0OgogKiAgICMzMzMgKHN0YW5kYXJkIHRleHQpIC8vIEEgY29tbWVudCB3aXRoaW4gYSBjb21tZW50IQogKiAgICMxRjlFQzkgKHN0YW5kYXJkIGxpbmspCiAqCiAqLwoKLyogQGdyb3VwIFZhcmlhYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tICovCiNjb21tZW50cyAvKiBib28gKi8vKiBib28gYWdhaW4qLywKLy8uY29tbWVudGVkX291dDEKLy8uY29tbWVudGVkX291dDIKLy8uY29tbWVudGVkX291dDMKLmNvbW1lbnRzIC8vZW5kIG9mIGNvbW1lbnRzMQovL2VuZCBvZiBjb21tZW50czIKewogIC8qKi8gLy8gQW4gZW1wdHkgY29tbWVudAogIGNvbG9yOiByZWQ7IC8qIEEgQy1zdHlsZSBjb21tZW50ICovICAvKiBBIEMtc3R5bGUgY29tbWVudCAqLwogIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgLy8gQSBsaXR0bGUgY29tbWVudAogIGZvbnQtc2l6ZTogMTJweDsKCiAgLyogbG9zdCBjb21tZW50ICovIGNvbnRlbnQ6IEB2YXI7CgogIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwoKICAvLyBwYWRkaW5nICYgbWFyZ2luIC8vCiAgcGFkZGluZzogMDsgLy8gfXsgJyIKICBtYXJnaW46IDJlbTsKfSAvLwoKLyogY29tbWVudGVkIG91dAogICNtb3JlLWNvbW1lbnRzIHsKICAgIGNvbG9yOiBncmV5OwogIH0KKi8KCi5zZWxlY3RvciAvKiAud2l0aCAqLywgLmxvdHMsIC8qIG9mICovIC5jb21tZW50cyB7CiAgY29sb3IvKiBzdXJ2aXZlICovIC8qIG1lIHRvbyAqLzogZ3JleSwgLyogYmx1ZSAqLyBvcmFuZ2U7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHggLyogd2Via2l0IG9ubHkgKi87CiAgLW1vei1ib3JkZXItcmFkaXVzOiAoMnB4ICogNCkgLyogbW96IG9ubHkgd2l0aCBvcGVyYXRpb24gKi87Cn0KCi5taXhpbl9kZWZfd2l0aF9jb2xvcnMoQGE6IHdoaXRlLCAvLyBpbgogICAgICAgQGI6IDFweCAvL3B1dCBpbiBAYiAtIGNhdXNlcyBwcm9ibGVtcyEgLS0tPgogICAgICAgKSAvLyB0aGUKICAgICAgIHdoZW4gKEBhID0gd2hpdGUpIHsKICAgIC50ZXN0IHsKICAgICAgICBjb2xvcjogQGI7CiAgICB9Cn0KLm1peGluX2RlZl93aXRoX2NvbG9ycygpOwoKLy8gLnMgd2hlbgovL1IvMgoKLnNyLW9ubHktZm9jdXNhYmxlIHsKICBjbGlwOiBhdXRvOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgLyogU2FmYXJpICovIGhvdmVyIC8qIGFuZCBDaHJvbWUgKi8gewogIDAlIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CgojbGFzdCB7IGNvbG9yOiBibHVlIH0KLy8KCi8qICAqLy8qIHsgKi8vKiAgKi8vKiAgKi8vKiAgKi8jZGl2IHsgY29sb3I6I0EzMzsgfS8qIH0gKi8KCi8vIGxpbmUgaW1tZWRpYXRseSBmb2xsb3dlZAovKmJ5IGJsb2NrICovCkBzdHJpbmdfd19jb21tZW50OiB+Ii8qIC8vIE5vdCBjb21tZW50ZWQgb3V0IC8vICovIjsKI291dHB1dC1ibG9jayB7IGNvbW1lbnQ6IEBzdHJpbmdfd19jb21tZW50OyB9Ci8qY29tbWVudCBvbiBsYXN0IGxpbmUqLw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/compression/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/compression/compression.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2NvbG91cnMgewogIGNvbG9yMTogI2ZlYTsKICBjb2xvcjI6ICNmZmVlYWE7CiAgY29sb3IzOiByZ2JhKDI1NSwgMjM4LCAxNzAsIDAuMSk7CiAgQGNvbG9yMTogI2ZlYTsKICBzdHJpbmc6ICJAe2NvbG9yMX0iOwogIC8qIGNvbW1lbnRzIGFyZSBzdHJpcHBlZCAqLwogIC8vIGJvdGggdHlwZXMhCiAgLyohIGJ1dCBub3QgdGhpcyB0eXBlCiAgICAgIE5vdGUgcHJlc2VydmVkIHdoaXRlc3BhY2UKICAqLwp9CmRpbWVuc2lvbnMgewogIHZhbDogMC4xcHg7CiAgdmFsOiAwZW07CiAgdmFsOiA0Y207CiAgdmFsOiAwLjI7CiAgdmFsOiA1OwogIGFuZ2xlcy1tdXN0LWhhdmUtdW5pdDogMGRlZzsKICBkdXJhdGlvbnMtbXVzdC1oYXZlLXVuaXQ6IDBzOwogIGxlbmd0aC1kb2VzbnQtaGF2ZS11bml0OiAwcHg7CiAgd2lkdGg6IGF1dG9cOTsKfQpAcGFnZSAgewogIG1hcmtzOiBub25lOwpAdG9wLWxlZnQtY29ybmVyIHsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9CkB0b3AtbGVmdCB7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQp9Ci5zaGFkb3cgXiAuZG9tLApib2R5IF5eIC5zaGFkb3cgewogIGRpc3BsYXk6IGRvbmU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/css-3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNvbW1hLWRlbGltaXRlZCB7CiAgdGV4dC1zaGFkb3c6IC0xcHggLTFweCAxcHggcmVkLCA2cHggNXB4IDVweCB5ZWxsb3c7CiAgLW1vei1ib3gtc2hhZG93OiAwcHQgMHB0IDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgaW5zZXQsCiAgICAwcHQgNHB4IDZweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgaW5zZXQ7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMC4wMDAwMDAwMDAxZGVnKTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogSGVhZGxpbmU7CiAgdW5pY29kZS1yYW5nZTogVSs/Pz8/Pz8sIFUrMD8/PywgVSswLTdGLCBVK0E1Owp9Ci5vdGhlciB7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxMWVtKSByb3RhdGUoLTkwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZVgoNDVkZWcpOwp9Ci5pdGVtW2RhdGEtY3JhX3p5LWF0dHIxYi11dDM9Ym9sZF0gewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CnA6bm90KFtjbGFzcyo9ImxlYWQiXSkgewogIGNvbG9yOiBibGFjazsKfQoKaW5wdXRbdHlwZT0idGV4dCJdLmNsYXNzI2lkW2F0dHI9MzJdOm5vdCgxKSB7CiAgY29sb3I6IHdoaXRlOwp9CgpkaXYjaWQuY2xhc3NbYT0xXVtiPTJdLmNsYXNzOm5vdCgxKSB7CiAgY29sb3I6IHdoaXRlOwp9Cgp1bC5jb21tYSA+IGxpOm5vdCg6b25seS1jaGlsZCk6OmFmdGVyIHsKICBjb2xvcjogd2hpdGU7Cn0KCm9sLmNvbW1hID4gbGk6bnRoLWxhc3QtY2hpbGQoMik6OmFmdGVyIHsKICBjb2xvcjogd2hpdGU7Cn0KCmxpOm50aC1jaGlsZCg0bisxKSwKbGk6bnRoLWNoaWxkKC01biksCmxpOm50aC1jaGlsZCgtbisyKSB7CiAgY29sb3I6IHdoaXRlOwp9CgphW2hyZWZePSJodHRwOi8vIl0gewogIGNvbG9yOiBibGFjazsKfQoKYVtocmVmJD0iaHR0cDovLyJdIHsKICBjb2xvcjogYmxhY2s7Cn0KCmZvcm1bZGF0YS1kaXNhYmxlZF0gewogIGNvbG9yOiBibGFjazsKfQoKcDo6YmVmb3JlIHsKICBjb2xvcjogYmxhY2s7Cn0KCiNpc3N1ZTMyMiB7CiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW0yIDdzIGluZmluaXRlIGVhc2UtaW4tb3V0Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgZnJhbWVzIHsKICAwJSB7IGJvcmRlcjogMXB4IH0KICA1LjUlIHsgYm9yZGVyOiAycHggfQogIDEwMCUgeyBib3JkZXI6IDNweCB9Cn0KCkBrZXlmcmFtZXMgZm9udGJ1bGdlcjEgewogIHRvIHsKICAgIGZvbnQtc2l6ZTogMTVweDsKICB9CiAgZnJvbSx0byB7CiAgICBmb250LXNpemU6IDEycHg7CiAgfQogIDAlLDEwMCUgewogICAgZm9udC1zaXplOiAxMnB4OwogIH0KfQoKLnVuaXRzIHsKICBmb250OiAxLjJyZW0vMnJlbTsKICBmb250OiA4dncvOXZ3OwogIGZvbnQ6IDEwdmgvMTJ2aDsKICBmb250OiAxMnZtLzE1dm07CiAgZm9udDogMTJ2bWluLzE1dm1pbjsKICBmb250OiAxLjJjaC8xLjVjaDsKfQoKQHN1cHBvcnRzICggYm94LXNoYWRvdzogMnB4IDJweCAycHggYmxhY2sgKSBvcgogICAgICAgICAgKCAtbW96LWJveC1zaGFkb3c6IDJweCAycHggMnB4IGJsYWNrICkgewogIC5vdXRsaW5lIHsKICAgIGJveC1zaGFkb3c6IDJweCAycHggMnB4IGJsYWNrOwogICAgLW1vei1ib3gtc2hhZG93OiAycHggMnB4IDJweCBibGFjazsKICB9Cn0KCkAteC1kb2N1bWVudCB1cmwtcHJlZml4KCIiZ2l0aHViLmNvbSIiKSB7CiAgaDEgewogICAgY29sb3I6IHJlZDsKICB9Cn0KCkB2aWV3cG9ydCB7CiAgZm9udC1zaXplOiAxMHB4Owp9CkBuYW1lc3BhY2UgZm9vIHVybChodHRwOi8vd3d3LmV4YW1wbGUuY29tKTsKCmZvb3xoMSB7IGNvbG9yOiBibHVlOyB9CmZvb3wqIHsgY29sb3I6IHllbGxvdzsgfQp8aDEgeyBjb2xvcjogcmVkOyB9Cip8aDEgeyBjb2xvcjogZ3JlZW47IH0KaDEgeyBjb2xvcjogZ3JlZW47IH0KLnVwcGVyLXRlc3QgewogIFVwcGVyQ2FzZVByb3BlcnRpZXM6IGFsbG93ZWQ7Cn0KQGhvc3QgewogIGRpdiB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9Cn0KOjpkaXN0cmlidXRlZChpbnB1dDo6cGxhY2Vob2xkZXIpIHsKICBjb2xvcjogI2IzYjNiMzsKfQouc2hhZG93IF4gLmRvbSwKYm9keSBeXiAuc2hhZG93IHsKICBkaXNwbGF5OiBkb25lOwp9Cgo6aG9zdCguc2VsIC5hKSwKOmhvc3QtY29udGV4dCguc2VsIC5iKSwKLnNlbCAvZGVlcC8gLmIsCjo6Y29udGVudCAuc2VsIHsKICB0eXBlOiBzaGFkb3ctZG9tOwp9Ci9kZWVwLyBiIHsKIGM6ICdkJzsKICZbZV17CiAgIGY6ICdnJzsKIH0KfQoKI2lzc3VlMjA2NiB7CiAgYmFja2dyb3VuZDogdXJsKCcvaW1hZ2VzL2ljb24tdGVhbS5zdmcnKSAwIDAgLyBjb250YWluOwp9CkBjb3VudGVyLXN0eWxlIHRyaWFuZ2xlIHsKICBzeXN0ZW06IGN5Y2xpYzsKICBzeW1ib2xzOiDigKM7CiAgc3VmZml4OiAiICI7Cn0KQC1tcy12aWV3cG9ydHsKLy93aWR0aDogYXV0byAhaW1wb3J0YW50Owp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/css-escapes.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHVnbHk6IGZ1Y2hzaWE7CgouZXNjYXBlXHxyYW5kb21cfGNoYXIgewogICAgY29sb3I6IHJlZDsKfQoKLm1peGluXCF0VXAgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi8vIGNsYXNzPSI0MDQiCi5cMzQgMDQgewogICAgYmFja2dyb3VuZDogcmVkOwoKICAgIHN0cm9uZyB7CiAgICAgICAgY29sb3I6IEB1Z2x5OwogICAgICAgIC5taXhpblwhdFVwOwogICAgfQp9CgoudHJhaWxpbmdUZXN0XCsgewogICAgY29sb3I6IHJlZDsKfQoKLyogVGhpcyBoaWRlb3VzIHRlc3Qgb2YgaGlkZW91c25lc3MgY2hlY2tzIGZvciB0aGUgc2VsZWN0b3IgImJsb2NrcXVvdGUiIHdpdGggdmFyaW91cyBwZXJtdXRhdGlvbnMgb2YgaGV4IGVzY2FwZXMgKi8KXDYyXDZjXDZmIFw2MyBcNkIgXDAwNzEgXDAwMDA3NW9cNzQgZSB7CiAgICBjb2xvcjogc2lsdmVyOwp9CgpbbmdcOmNsb2FrXSwKbmdcOmZvcm0gewogIGRpc3BsYXk6IG5vbmU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/css-guards.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci5saWdodCB3aGVuIChsaWdodG5lc3MoQGEpID4gNTAlKSB7CiAgY29sb3I6IGdyZWVuOwp9Ci5kYXJrIHdoZW4gKGxpZ2h0bmVzcyhAYSkgPCA1MCUpIHsKICBjb2xvcjogb3JhbmdlOwp9CkBhOiAjZGRkOwoKLnNlZS10aGUgewogIEBhOiAjNDQ0OyAvLyB0aGlzIG1pcnJvcnMgd2hhdCBtaXhpbnMgZG8gLSB0aGV5IGV2YWx1YXRlIHRoZSBndWFyZHMgYXQgdGhlIHBvaW50IG9mIGRlZmluaXRpb24KICAubGlnaHQoKTsKICAuZGFyaygpOwp9CgouaGlkZS10aGUgewogIC5saWdodCgpOwogIC5kYXJrKCk7Cn0KCi5tdWx0aXBsZS1jb25kaXRpb25zLTEgd2hlbiAoQGIgPSAxKSwgKEBjID0gMiksIChAZCA9IDMpIHsKICBjb2xvcjogcmVkOwp9CgoubXVsdGlwbGUtY29uZGl0aW9ucy0yIHdoZW4gKEBiID0gMSksIChAYyA9IDIpLCAoQGQgPSAyKSB7CiAgY29sb3I6IGJsdWU7Cn0KCkBiOiAyOwpAYzogMzsKQGQ6IDM7CgouaW5oZXJpdGFuY2Ugd2hlbiAoQGIgPSAyKSB7CiAgLnRlc3QgewogICAgY29sb3I6IGJsYWNrOwogIH0KICAmOmhvdmVyIHsKICAgIGNvbG9yOiBwaW5rOwogIH0KICAuaGlkZW1lIHdoZW4gKEBiID0gMSkgewogICAgY29sb3I6IGdyZWVuOwogIH0KICAmIHdoZW4gKEBiID0gMSkgewogICAgaGlkZW1lOiBncmVlbjsKICB9Cn0KCi5oaWRlbWUgd2hlbiAoQGIgPSAxKSB7CiAgLnRlc3QgewogICAgY29sb3I6IGJsYWNrOwogIH0KICAmOmhvdmVyIHsKICAgIGNvbG9yOiBwaW5rOwogIH0KICAuaGlkZW1lIHdoZW4gKEBiID0gMSkgewogICAgY29sb3I6IGdyZWVuOwogIH0KfQoKJiB3aGVuIChAYiA9IDEpIHsKICAuaGlkZW1lIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CgoubWl4aW4td2l0aC1ndWFyZC1pbnNpZGUoQGNvbFdpZHRoKSB7CiAgLy8gc2VsZWN0b3Igd2l0aCBndWFyZCAoYXBwbGllcyBhbHNvIHRvICYgd2hlbigpIC4uLikKICAuY2xzV2l0aEd1YXJkIHdoZW4gKEBjb2xXaWR0aCA8PSAwKSB7CiAgICBkaXNwYWx5OiBub25lOwogIH0KfQoKLm1peGluLXdpdGgtZ3VhcmQtaW5zaWRlKDBweCk7CgouZG9udC1zcGxpdC1tZS11cCB7CiAgd2lkdGg6IDFweDsKICAmIHdoZW4gKEBjID0gMykgewogICAgY29sb3I6IHJlZDsKICB9CiAgJiB3aGVuIChAYyA9IDMpIHsKICAgIGhlaWdodDogMXB4OwogIH0KICArICYgd2hlbiAoQGMgPSAzKSB7IC8vIGNyZWF0ZXMgaW52YWxpZCBjc3MgYnV0IHRlc3RzIHRoYXQgd2UgZG9uJ3QgZm9sZCBpdCBpbgogICAgc2libGluZzogdHJ1ZTsKICB9Cn0KCi5zY29wZS1jaGVjayB3aGVuIChAYyA9IDMpIHsKICBAazogMXB4OwogICYgd2hlbiAoQGMgPSAzKSB7CiAgICBAazogMnB4OwogICAgc3ViLXByb3A6IEBrOwogIH0KICBwcm9wOiBAazsKfQouc2NvcGUtY2hlY2stMiB7CiAgLnNjb3BlLWNoZWNrKCk7CiAgQGs6NHB4Owp9Ci5lcnJvcnMtaWYtY2FsbGVkIHdoZW4gKEBjID0gbmV2ZXIpIHsKICAubWl4aW4tZG9lc250LWV4aXN0KCk7Cn0KYTpob3ZlciB3aGVuICgyID0gdHJ1ZSkgezU6LX0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/css.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKZGl2IHsgY29sb3I6IGJsYWNrOyB9CmRpdiB7IHdpZHRoOiA5OSU7IH0KCiogewogIG1pbi13aWR0aDogNDVlbTsKfQoKaDEsIGgyID4gYSA+IHAsIGgzIHsKICBjb2xvcjogbm9uZTsKfQoKZGl2LmNsYXNzIHsKICBjb2xvcjogYmx1ZTsKfQoKZGl2I2lkIHsKICBjb2xvcjogZ3JlZW47Cn0KCi5jbGFzcyNpZCB7CiAgY29sb3I6IHB1cnBsZTsKfQoKLm9uZS50d28udGhyZWUgewogIGNvbG9yOiBncmV5Owp9CgpAbWVkaWEgcHJpbnQgewogICogewogICAgZm9udC1zaXplOiAzZW07CiAgfQp9CgpAbWVkaWEgc2NyZWVuIHsKICAqIHsKICAgIGZvbnQtc2l6ZTogMTBweDsKICB9Cn0KCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnR2FyYW1vbmQgUHJvJzsKfQoKYTpob3ZlciwgYTpsaW5rIHsKICBjb2xvcjogIzk5OTsKfQoKcCwgcDpmaXJzdC1jaGlsZCB7CiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KCnE6bGFuZyhubykgewogIHF1b3Rlczogbm9uZTsKfQoKcCArIGgxIHsKICBmb250LXNpemU6ICsyLjJlbTsKfQoKI3Nob3J0aGFuZHMgewogIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgZm9udDogMTJweC8xNnB4IEFyaWFsOwogIGZvbnQ6IDEwMCUvMTZweCBBcmlhbDsKICBtYXJnaW46IDFweCAwOwogIHBhZGRpbmc6IDAgYXV0bzsKfQoKI21vcmUtc2hvcnRoYW5kcyB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDFweCAwIDJweCAwOwogIGZvbnQ6IG5vcm1hbCBzbWFsbC8yMHB4ICdUcmVidWNoZXQgTVMnLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwogIGZvbnQ6IDAvMCBhOwogIGJvcmRlci1yYWRpdXM6IDVweCAvIDEwcHg7Cn0KCi5taXNjIHsKICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjazsKICB3aWR0aDogLjFlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5OTk4OwogIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmVkKSwgdG8oYmx1ZSkpOwogIG1hcmdpbjogOwogIC5uZXN0ZWQtbXVsdGlwbGUgewogICAgbXVsdGlwbGUtc2VtaS1jb2xvbnM6IHllczs7Ozs7OwogIH07CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgd2lkdGg6IGF1dG9cOTsKfQoKI2ltcG9ydGFudCB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMDAlIWltcG9ydGFudDsKICBoZWlnaHQ6IDIwcHggISBpbXBvcnRhbnQ7Cn0KCi5kZWYtZm9udChAbmFtZSkgewogICAgQGZvbnQtZmFjZSB7CiAgICAgICAgZm9udC1mYW1pbHk6IEBuYW1lCiAgICB9Cn0KCi5kZWYtZm9udChmb250LWEpOwouZGVmLWZvbnQoZm9udC1iKTsKCi7DpsO4w6UgewogIG1hcmdpbjogMDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/debug/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/debug/import/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/debug/import/test.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIklTTy04ODU5LTEiOwoKLm1peGluX2ltcG9ydDEoKSB7CiAgICBAbWVkaWEgYWxsIHsKICAgICAgICAudHN0IHsKICAgICAgICAgICAgY29sb3I6IGJsYWNrOwogICAgICAgICAgICBAbWVkaWEgc2NyZWVuIHsKICAgICAgICAgICAgICAgIGNvbG9yOiByZWQ7CiAgICAgICAgICAgICAgICAudHN0MyB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgoubWl4aW5faW1wb3J0MigpIHsKICAgIC50c3QyIHsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICB9Cn0KCi50c3QzIHsKICAgIGNvbG9yOiBncmV5Owp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/debug/linenumbers.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKCkBpbXBvcnQgImltcG9ydC90ZXN0Lmxlc3MiOwoKLnN0YXJ0KCkgewogIC50ZXN0MiB7CiAgICAgIGNvbG9yOiByZWQ7CiAgfQp9CgoubWl4KCkgewogICAgY29sb3I6IGJsYWNrOwp9CgoudGVzdDEgewogIC5taXgoKTsKfQoKLnN0YXJ0KCk7CgoubWl4aW5faW1wb3J0MSgpOwoKLm1peGluX2ltcG9ydDIoKTsKCkBkZWJ1ZzogMTsKJiB3aGVuIChAZGVidWcgPSAxKSB7CiAgLnRlc3QgewogICAgY29sb3I6IHJlZDsKICAgICYgd2hlbiAoQGRlYnVnID0gMSkgewogICAgICB3aWR0aDogMjsKICAgIH0KICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/detached-rulesets.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHJ1bGVzZXQ6IHsKICAgICBjb2xvcjogYmxhY2s7CiAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgfTsKCkBhOiAxcHg7Ci53cmFwLW1peGluKEBydWxlc2V0KSB7CiAgQGE6IGhpZGRlbiBhbmQgaWYgeW91IHNlZSB0aGlzIGluIHRoZSBvdXRwdXQgaXRzIGEgYnVnOwogIEBiOiB2aXNpYmxlOwogIEBkOiBtYWdpYy1mcmFtZTsgLy8gc2FtZSBiZWhhdmlvdXIgYXMgbWl4aW4gY2FsbHMgLSBmYWxscyBiYWNrIHRvIHRoaXMgZnJhbWUKICAud3JhcC1zZWxlY3RvciB7CiAgICAgIEBjOiB2aXNpYmxlOwogICAgICBAcnVsZXNldCgpOwogICAgICB2aXNpYmxlLW9uZTogQGI7CiAgICAgIHZpc2libGUtdHdvOiBAYzsKICAgIH0KfTsKCi53cmFwLW1peGluKHsKICBjb2xvcjogYmxhY2s7CiAgb25lOiBAYTsKICBAYjogaGlkZGVuIGFuZCBpZiB5b3Ugc2VlIHRoaXMgaW4gdGhlIG91dHB1dCBpdHMgYSBidWc7CiAgQGM6IGhpZGRlbiBhbmQgaWYgeW91IHNlZSB0aGlzIGluIHRoZSBvdXRwdXQgaXRzIGEgYnVnOwogIGZvdXI6IEBkOwp9KTsKCi53cmFwLW1peGluKEBydWxlc2V0OiB7CiAgY29sb3I6IHJlZDsKfSk7Cgoud3JhcC1taXhpbihAcnVsZXNldCk7CgouZGVza3RvcC1hbmQtb2xkLWllKEBydWxlcykgewogIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDApIHsgQHJ1bGVzKCk7IH0KICBodG1sLmx0LWllOSAmICAgICAgICAgICAgICAgICAgICAgICB7IEBydWxlcygpOyB9Cn0KCmhlYWRlciB7CiAgYmFja2dyb3VuZDogYmx1ZTsKCiAgLmRlc2t0b3AtYW5kLW9sZC1pZSh7CiAgICBiYWNrZ3JvdW5kOiByZWQ7CiAgfSk7Cn0KCi53cmFwLW1peGluLWNhbGxzLXdyYXAoQHJ1bGVzZXQpIHsKICAud3JhcC1taXhpbihAcnVsZXNldCk7Cn07Cgoud3JhcC1taXhpbih7CiAgdGVzdDogZXh0cmEtd3JhcDsKICAud3JhcC1taXhpbi1jYWxscy13cmFwKHsKICAgIHRlc3Q6IHdyYXBwZWQtdHdpY2U7CiAgfSk7Cn0pOwoKLndyYXAtbWl4aW4oewogIHRlc3QtZnVuYzogdW5pdCg5MHB4KTsKICB0ZXN0LWFyaXRobWV0aWM6IHVuaXQoKDkrOSksIHB4KTsKfSk7Ci8vIHdpdGhvdXQgbWl4aW5zCkBydWxlc2V0LTI6IHsKICBiOiAxOwp9Owoud2l0aG91dC1taXhpbnMgewogIEBydWxlc2V0LTIoKTsKfQpAbXktcnVsZXNldDogewogICAgLm15LXNlbGVjdG9yIHsKICAgICAgQG1lZGlhIHR2IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKICAgICAgfQogICAgfQogIH07CkBtZWRpYSAob3JpZW50YXRpb246cG9ydHJhaXQpIHsKICAgIEBteS1ydWxlc2V0KCk7CiAgICAud3JhcC1tZWRpYS1taXhpbih7CiAgICAgIEBtZWRpYSB0diB7CiAgICAgICAgLnRyaXBsZS13cmFwcGVkLW1xIHsKICAgICAgICAgIHRyaXBsZTogdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0pOwp9Ci53cmFwLW1lZGlhLW1peGluKEBydWxlc2V0KSB7CiAgQG1lZGlhIHdpZGVzY3JlZW4gewogICAgQG1lZGlhIHByaW50IHsKICAgICAgQHJ1bGVzZXQoKTsKICAgIH0KICAgIEBydWxlc2V0KCk7CiAgfQogIEBydWxlc2V0KCk7Cn0KLy8gdW5sb2NraW5nIG1peGlucwpAbXktbWl4aW5zOiB7CiAgLm1peGluKCkgewogICAgdGVzdDogdGVzdDsKICB9Cn07CkBteS1taXhpbnMoKTsKLmEgewogIC5taXhpbigpOwp9Ci8vIGFzIG1peGluIGFyZ3VtZW50IGRlZmF1bHQKLm1peGluLWRlZmluaXRpb24oQGE6IHt9OyBAYjoge2RlZmF1bHQ6IHdvcmtzO307KSB7CiAgQGEoKTsKICBAYigpOwp9Ci5hcmd1bWVudC1kZWZhdWx0IHsKICAubWl4aW4tZGVmaW5pdGlvbigpOwogIC5taXhpbi1kZWZpbml0aW9uKHtkaXJlY3Q6IHdvcmtzO307IEBiOiB7bmFtZWQ6IHdvcmtzO30pOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/directives-bubling.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly9zaW1wbGUgY2FzZTogQGRvY3VtZW50Ci5wYXJlbnQgewogIGNvbG9yOmdyZWVuOwogIAogIEBkb2N1bWVudCB1cmwtcHJlZml4KCkgewogICAgLmNoaWxkIHsKICAgICAgY29sb3I6cmVkOwogICAgfQogIH0gICAKfQoKLy9zZWxlY3RvcnMgam9pbmluZ3MgdGVzdAoudG9wIHsKICBAc3VwcG9ydHMgKHNhbmR3aXRjaDogYnV0dGVyKSB7CiAgICAuaW5zaWRlICYgewogICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICB9CiAgfQp9CgpAc3VwcG9ydHMgKHNhbmR3aXRjaDogYnJlYWQpIHsKICAuaW4xIHsKICAgIC5pbjIgewogICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICB9CiAgfQp9CgoudG9wIHsKICAuaW5zaWRlICYgewogICAgQHN1cHBvcnRzIChzYW5kd2l0Y2g6IGhhbSkgewogICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICB9CiAgfQp9CgovL2NvbWJpbmVkIHdpdGggQGZvbnQtZmFjZSB3aGljaCBoYXMgZGlmZmVyZW50IGtpbmQgb2YgYm9keQpAc3VwcG9ydHMgKGZvbnQtZmFtaWx5OiB3ZWlyZEZvbnQpIHsKICBAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiBzb21ldGhpbmc7CiAgICBzcmM6IG1hZGUtdXAtdXJsOwogIH0KfQoKQGZvbnQtZmFjZSB7CiAgQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQpIHsKICAgIGZvbnQtZmFtaWx5OiBzb21ldGhpbmc7CiAgICBzcmM6IG1hZGUtdXAtdXJsOwogIH0KfQoKLy9idWJsaW5nIHRocm91Z2ggbWVkaWEKQHN1cHBvcnRzIChwcm9wZXJ0eTogdmFsdWUpIHsKICAub3V0T2ZNZWRpYSAmIHsKICAgIEBtZWRpYSAobWF4LXNpemU6IDJweCkgewogICAgICBAc3VwcG9ydHMgKHdoYXRldmVyOiBzb21ldGhpbmcpIHsKICAgICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICAgIH0gCiAgICB9CiAgfQp9Cgoub25Ub3AgJiB7CiAgQHN1cHBvcnRzIChwcm9wZXJ0eTogdmFsdWUpIHsKICAgIEBtZWRpYSAobWF4LXNpemU6IDJweCkgewogICAgICBAc3VwcG9ydHMgKHdoYXRldmVyOiBzb21ldGhpbmcpIHsKICAgICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICAgIH0gCiAgICB9CiAgfQp9CgoKLy9sb25nIGNvbWJpbmF0aW9uIG9mIHN1cHBvcnRzIGFuZCBtZWRpYQpAbWVkaWEgcHJpbnQgewogIGh0bWwgewogICAgaW4taHRtbDogdmlzaWJsZTsKICAgIEBzdXBwb3J0cyAodXBwZXI6IHRlc3QpIHsKICAgICAgaW4tc3VwcG9ydHM6IGZpcnN0OwogICAgICBkaXYgewogICAgICAgIGluLWRpdjogdmlzaWJsZTsKICAgICAgICBAc3VwcG9ydHMgbm90ICgtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBzdWJwaXhlbC1hbnRpYWxpYXNlZCkgewogICAgICAgICAgaW4tc3VwcG9ydHM6IHNlY29uZDsKICAgICAgICAgIEBtZWRpYSBzY3JlZW4gewogICAgICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgICAgICBuZXN0ZWQgewogICAgICAgICAgICAgIHByb3BlcnR5OiB2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQoKLy9hbm90aGVyIGxvbmcgY29tYmluYXRpb24gb2Ygc3VwcG9ydHMgYW5kIG1lZGlhCkBtZWRpYSBwcmludCB7CiAgQG1lZGlhIChtYXgtc2l6ZTogMnB4KSB7CiAgICAuaW4xIHsKICAgICAgc3RheTogaGVyZTsKICAgICAgQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQpIHsKICAgICAgICAuaW4yICYgewogICAgICAgICAgQHN1cHBvcnRzICh3aGF0ZXZlcjogc29tZXRoaW5nKSB7CiAgICAgICAgICAgIHByb3BlcnR5OiB2YWx1ZTsKICAgICAgICAgIH0gCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9CgovL2NhbGxlZCBmcm9tIG1peGluIAoubmVzdGVkU3VwcG9ydHNNaXhpbigpIHsKICBmb250LXdlaWdodDogMzAwOwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkOwogIEBzdXBwb3J0cyBub3QgKC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkKSB7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbmVzdGVkIHsKICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgfQogIH0KfQoKaHRtbCB7CiAgICAubmVzdGVkU3VwcG9ydHNNaXhpbjsKfQoKLy8gc2VsZWN0b3JzIHNob3VsZCBub3QgcHJvcGFnYXRlIGludG8gYWxsIGRpcmVjdGl2ZSB0eXBlcwoub25Ub3AgewogIEBmb250LWZhY2UgewogICAgZm9udC1mYW1pbHk6IHNvbWV0aGluZzsKICAgIHNyYzogbWFkZS11cC11cmw7CiAgfQoKICBAa2V5ZnJhbWVzICJ0ZXh0c2NhbGUiIHsKICAgICAgMCUgeyBmb250LXNpemUgOiAxZW07IH0KICAgIDEwMCUgeyBmb250LXNpemUgOiAyZW07IH0KICB9CgogIGFuaW1hdGlvbiAgIDogInRleHRzY2FsZSI7CiAgZm9udC1mYW1pbHkgOiBzb21ldGhpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/empty.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/add-mixed-units.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGVycm9yOiAoMXB4ICsgM2VtKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/add-mixed-units.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEluY29tcGF0aWJsZSB1bml0cy4gQ2hhbmdlIHRoZSB1bml0cyBvciB1c2UgdGhlIHVuaXQgZnVuY3Rpb24uIEJhZCB1bml0czogJ3B4JyBhbmQgJ2VtJy4gaW4ge3BhdGh9YWRkLW1peGVkLXVuaXRzLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gMzoKMSAuYSB7CjIgICBlcnJvcjogKDFweCArIDNlbSk7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/add-mixed-units2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGVycm9yOiAoKDFweCAqIDJweCkgKyAoM2VtICogM3B4KSk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/add-mixed-units2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEluY29tcGF0aWJsZSB1bml0cy4gQ2hhbmdlIHRoZSB1bml0cyBvciB1c2UgdGhlIHVuaXQgZnVuY3Rpb24uIEJhZCB1bml0czogJ3B4KnB4JyBhbmQgJ2VtKnB4Jy4gaW4ge3BhdGh9YWRkLW1peGVkLXVuaXRzMi5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDM6CjEgLmEgewoyICAgZXJyb3I6ICgoMXB4ICogMnB4KSArICgzZW0gKiAzcHgpKTsKMyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/at-rules-undefined-var.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBrZXlmcmFtZXMgQG5hbWUgewogICAgNTAlIHt3aWR0aDogMjBweDt9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/at-rules-undefined-var.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TmFtZUVycm9yOiB2YXJpYWJsZSBAbmFtZSBpcyB1bmRlZmluZWQgaW4ge3BhdGh9YXQtcnVsZXMtdW5kZWZpbmVkLXZhci5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDEyOgoxIAoyIEBrZXlmcmFtZXMgQG5hbWUgewozICAgICA1MCUge3dpZHRoOiAyMHB4O30K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/bad-variable-declaration1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QEBkZW1vOiAiaGkiOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/bad-variable-declaration1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0IGluIHtwYXRofWJhZC12YXJpYWJsZS1kZWNsYXJhdGlvbjEubGVzcyBvbiBsaW5lIDEsIGNvbHVtbiAxOgoxIEBAZGVtbzogImhpIjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/color-func-invalid-color.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGNvbG9yOiBjb2xvcigiTk9UIEEgQ09MT1IiKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/color-func-invalid-color.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgY29sb3JgOiBhcmd1bWVudCBtdXN0IGJlIGEgY29sb3Iga2V5d29yZCBvciAzLzYgZGlnaXQgaGV4IGUuZy4gI0ZGRiBpbiB7cGF0aH1jb2xvci1mdW5jLWludmFsaWQtY29sb3IubGVzcyBvbiBsaW5lIDIsIGNvbHVtbiAxMDoKMSAudGVzdCB7CjIgICBjb2xvcjogY29sb3IoIk5PVCBBIENPTE9SIik7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/color-invalid-hex-code.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogICAgQHdyb25nSEVYQ29sb3JDb2RlOiAjRENBTExCOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/color-invalid-hex-code.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEludmFsaWQgSEVYIGNvbG9yIGNvZGUgaW4ge3BhdGh9Y29sb3ItaW52YWxpZC1oZXgtY29kZS5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDI5OgoxIC5hIHsKMiAgICAgQHdyb25nSEVYQ29sb3JDb2RlOiAjRENBTExCOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/color-invalid-hex-code2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogICAgQHdyb25nSEVYQ29sb3JDb2RlOiAjZmZmYmxhY2s7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/color-invalid-hex-code2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEludmFsaWQgSEVYIGNvbG9yIGNvZGUgaW4ge3BhdGh9Y29sb3ItaW52YWxpZC1oZXgtY29kZTIubGVzcyBvbiBsaW5lIDIsIGNvbHVtbiAyOToKMSAuYSB7CjIgICAgIEB3cm9uZ0hFWENvbG9yQ29kZTogI2ZmZmJsYWNrOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/css-guard-default-func.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnNlbGVjdG9yIHdoZW4gKGRlZmF1bHQoKSkgewogICAgY29sb3I6IHJlZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/css-guard-default-func.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IGVycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24gYGRlZmF1bHRgOiBpdCBpcyBjdXJyZW50bHkgb25seSBhbGxvd2VkIGluIHBhcmFtZXRyaWMgbWl4aW4gZ3VhcmRzLCBpbiB7cGF0aH1jc3MtZ3VhcmQtZGVmYXVsdC1mdW5jLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gMTY6CjEgCjIgc2VsZWN0b3Igd2hlbiAoZGVmYXVsdCgpKSB7CjMgICAgIGNvbG9yOiByZWQ7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGE6IHsKICBiOiAxOwp9OwouYSB7CiAgYTogQGE7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IFJ1bGVzZXRzIGNhbm5vdCBiZSBldmFsdWF0ZWQgb24gYSBwcm9wZXJ0eS4gaW4ge3BhdGh9ZGV0YWNoZWQtcnVsZXNldC0xLmxlc3Mgb24gbGluZSA1LCBjb2x1bW4gMzoKNCAuYSB7CjUgICBhOiBAYTsKNiB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGE6IHsKICBiOiAxOwp9OwouYSB7CiAgYTogQGEoKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogRXhwZWN0ZWQgJyknIGluIHtwYXRofWRldGFjaGVkLXJ1bGVzZXQtMi5sZXNzIG9uIGxpbmUgNSwgY29sdW1uIDk6CjQgLmEgewo1ICAgYTogQGEoKTsKNiB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGE6IHsKICBiOiAxOwp9OwpAYSgpOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-3.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IHByb3BlcnRpZXMgbXVzdCBiZSBpbnNpZGUgc2VsZWN0b3IgYmxvY2tzLCB0aGV5IGNhbm5vdCBiZSBpbiB0aGUgcm9vdC4gaW4ge3BhdGh9ZGV0YWNoZWQtcnVsZXNldC0zLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gMzoKMSBAYTogewoyICAgYjogMTsKMyB9Owo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-5.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluLWRlZmluaXRpb24oQGIpIHsKICBAYSgpOwp9Ci5taXhpbi1kZWZpbml0aW9uKHtjb2xvcjogcmVkO30pOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-5.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IHZhcmlhYmxlIEBhIGlzIHVuZGVmaW5lZCBpbiB7cGF0aH1kZXRhY2hlZC1ydWxlc2V0LTUubGVzcyBvbiBsaW5lIDQsIGNvbHVtbiAxOgozIH0KNCAubWl4aW4tZGVmaW5pdGlvbih7Y29sb3I6IHJlZDt9KTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-6.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGI6IHsKICAgIGNvbG9yOiByZWQ7CiAgfTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/detached-ruleset-6.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0IGluIHtwYXRofWRldGFjaGVkLXJ1bGVzZXQtNi5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDY6CjEgLmEgewoyICAgYjogewozICAgICBjb2xvcjogcmVkOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/divide-mixed-units.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGVycm9yOiAoMXB4IC8gM2VtKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/divide-mixed-units.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IE11bHRpcGxlIHVuaXRzIGluIGRpbWVuc2lvbi4gQ29ycmVjdCB0aGUgdW5pdHMgb3IgdXNlIHRoZSB1bml0IGZ1bmN0aW9uLiBCYWQgdW5pdDogcHgvZW0gaW4ge3BhdGh9ZGl2aWRlLW1peGVkLXVuaXRzLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gMzoKMSAuYSB7CjIgICBlcnJvcjogKDFweCAvIDNlbSk7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/extend-no-selector.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[OmV4dGVuZCguYSBhbGwpIHsKICBwcm9wZXJ0eTogcmVkOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/extend-no-selector.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEV4dGVuZCBtdXN0IGJlIHVzZWQgdG8gZXh0ZW5kIGEgc2VsZWN0b3IsIGl0IGNhbm5vdCBiZSB1c2VkIG9uIGl0cyBvd24gaW4ge3BhdGh9ZXh0ZW5kLW5vLXNlbGVjdG9yLmxlc3Mgb24gbGluZSAxLCBjb2x1bW4gMTc6CjEgOmV4dGVuZCguYSBhbGwpIHsKMiAgIHByb3BlcnR5OiByZWQ7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/extend-not-at-end.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmE6ZXh0ZW5kKC5iIGFsbCkuYyB7CiAgcHJvcGVydHk6IHJlZDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/extend-not-at-end.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEV4dGVuZCBjYW4gb25seSBiZSB1c2VkIGF0IHRoZSBlbmQgb2Ygc2VsZWN0b3IgaW4ge3BhdGh9ZXh0ZW5kLW5vdC1hdC1lbmQubGVzcyBvbiBsaW5lIDEsIGNvbHVtbiAyMToKMSAuYTpleHRlbmQoLmIgYWxsKS5jIHsKMiAgIHByb3BlcnR5OiByZWQ7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-malformed.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCBtYWxmb3JtZWQgInRoaXMtc3RhdGVtZW50LWlzLWludmFsaWQubGVzcyI7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-malformed.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IG1hbGZvcm1lZCBpbXBvcnQgc3RhdGVtZW50IGluIHtwYXRofWltcG9ydC1tYWxmb3JtZWQubGVzcyBvbiBsaW5lIDEsIGNvbHVtbiAxOgoxIEBpbXBvcnQgbWFsZm9ybWVkICJ0aGlzLXN0YXRlbWVudC1pcy1pbnZhbGlkLmxlc3MiOwoyIAo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-missing.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogICAgY29sb3I6IGdyZWVuOwogICAgLy8gdGVzdHMgbGluZSBudW1iZXIgZm9yIGltcG9ydCByZWZlcmVuY2UgaXMgY29ycmVjdAp9CgpAaW1wb3J0ICJmaWxlLWRvZXMtbm90LWV4aXN0Lmxlc3MiOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-missing.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[RmlsZUVycm9yOiAne3BhdGhocmVmfWZpbGUtZG9lcy1ub3QtZXhpc3QubGVzcycgd2Fzbid0IGZvdW5kezQwNHN0YXR1c317bm9kZX0uIFRyaWVkIC0ge3BhdGh9ZmlsZS1kb2VzLW5vdC1leGlzdC5sZXNzLHtwYXRocmVsfWZpbGUtZG9lcy1ub3QtZXhpc3QubGVzcyxmaWxlLWRvZXMtbm90LWV4aXN0Lmxlc3N7L25vZGV9IGluIHtwYXRofWltcG9ydC1taXNzaW5nLmxlc3Mgb24gbGluZSA2LCBjb2x1bW4gMToKNSAKNiBAaW1wb3J0ICJmaWxlLWRvZXMtbm90LWV4aXN0Lmxlc3MiOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-no-semi.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAidGhpcy1zdGF0ZW1lbnQtaXMtaW52YWxpZC5sZXNzIg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-no-semi.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IG1pc3Npbmcgc2VtaS1jb2xvbiBvciB1bnJlY29nbmlzZWQgbWVkaWEgZmVhdHVyZXMgb24gaW1wb3J0IGluIHtwYXRofWltcG9ydC1uby1zZW1pLmxlc3Mgb24gbGluZSAxLCBjb2x1bW4gMToKMSBAaW1wb3J0ICJ0aGlzLXN0YXRlbWVudC1pcy1pbnZhbGlkLmxlc3MiCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-subfolder1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0cy9pbXBvcnQtc3ViZm9sZGVyMS5sZXNzIjs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-subfolder1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TmFtZUVycm9yOiAubWl4aW4tbm90LWRlZmluZWQgaXMgdW5kZWZpbmVkIGluIHtwYXRofW1peGluLW5vdC1kZWZpbmVkLmxlc3Mgb24gbGluZSAxMSwgY29sdW1uIDE6CjEwIAoxMSAubWl4aW4tbm90LWRlZmluZWQoKTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-subfolder2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0cy9pbXBvcnQtc3ViZm9sZGVyMi5sZXNzIjs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/import-subfolder2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0LiBQb3NzaWJseSBtaXNzaW5nIG9wZW5pbmcgJ3snIGluIHtwYXRofXBhcnNlLWVycm9yLWN1cmx5LWJyYWNrZXQubGVzcyBvbiBsaW5lIDQsIGNvbHVtbiAxOgozICAgfQo0IH0KNSAK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/imports/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/imports/import-subfolder1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAic3ViZm9sZGVyL21peGluLW5vdC1kZWZpbmVkLmxlc3MiOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/imports/import-subfolder2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAic3ViZm9sZGVyL3BhcnNlLWVycm9yLWN1cmx5LWJyYWNrZXQubGVzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/imports/import-test.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNvbWVjbGFzcwp7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/imports/subfolder/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/imports/subfolder/mixin-not-defined.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi4vLi4vbWl4aW4tbm90LWRlZmluZWQubGVzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/imports/subfolder/parse-error-curly-bracket.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi4vLi4vcGFyc2UtZXJyb3ItY3VybHktYnJhY2tldC5sZXNzIjs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/javascript-error.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNjb3BlIHsKICAgIHZhcjogYHRoaXMuZm9vLnRvSlNgOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/javascript-error.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEphdmFTY3JpcHQgZXZhbHVhdGlvbiBlcnJvcjogJ1R5cGVFcnJvcjogQ2Fubm90IHJlYWQgcHJvcGVydHkgJ3RvSlMnIG9mIHVuZGVmaW5lZCcgaW4ge3BhdGh9amF2YXNjcmlwdC1lcnJvci5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDEwOgoxIC5zY29wZSB7CjIgICAgIHZhcjogYHRoaXMuZm9vLnRvSlNgOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/javascript-undefined-var.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNjb3BlIHsKICAgIEBhOiBgQHtifWA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/javascript-undefined-var.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TmFtZUVycm9yOiB2YXJpYWJsZSBAYiBpcyB1bmRlZmluZWQgaW4ge3BhdGh9amF2YXNjcmlwdC11bmRlZmluZWQtdmFyLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gOToKMSAuc2NvcGUgewoyICAgICBAYTogYEB7Yn1gOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixed-mixin-definition-args-1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluKEBhIDogNCwgQGIgOiAzLCBAYzogMikgewogICAgd2lsbDogZmFpbDsKfQoubWl4aW4tdGVzdCB7CiAgICAubWl4aW4oQGE6IDU7IEBiOiA2LCBAYzogNyk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixed-mixin-definition-args-1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IENhbm5vdCBtaXggOyBhbmQgLCBhcyBkZWxpbWl0ZXIgdHlwZXMgaW4ge3BhdGh9bWl4ZWQtbWl4aW4tZGVmaW5pdGlvbi1hcmdzLTEubGVzcyBvbiBsaW5lIDUsIGNvbHVtbiAzMDoKNCAubWl4aW4tdGVzdCB7CjUgICAgIC5taXhpbihAYTogNTsgQGI6IDYsIEBjOiA3KTsKNiB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixed-mixin-definition-args-2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluKEBhIDogNCwgQGIgOiAzLCBAYzogMikgewogICAgd2lsbDogZmFpbDsKfQoubWl4aW4tdGVzdCB7CiAgICAubWl4aW4oQGE6IDUsIEBiOiA2OyBAYzogNyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixed-mixin-definition-args-2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IENhbm5vdCBtaXggOyBhbmQgLCBhcyBkZWxpbWl0ZXIgdHlwZXMgaW4ge3BhdGh9bWl4ZWQtbWl4aW4tZGVmaW5pdGlvbi1hcmdzLTIubGVzcyBvbiBsaW5lIDUsIGNvbHVtbiAyNjoKNCAubWl4aW4tdGVzdCB7CjUgICAgIC5taXhpbihAYTogNSwgQGI6IDY7IEBjOiA3KTsKNiB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixin-not-defined.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci5lcnJvci1pcy1mdXJ0aGVyLW9uKCkgewp9CgoucGFkLWhlcmUtdG8tcmVwcm9kdWNlLWVycm9yLWluKCkgewp9CgoudGhlLWltcG9ydC1zdWJmb2xkZXItdGVzdCgpIHsKfQoKLm1peGluLW5vdC1kZWZpbmVkKCk7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixin-not-defined.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TmFtZUVycm9yOiAubWl4aW4tbm90LWRlZmluZWQgaXMgdW5kZWZpbmVkIGluIHtwYXRofW1peGluLW5vdC1kZWZpbmVkLmxlc3Mgb24gbGluZSAxMSwgY29sdW1uIDE6CjEwIAoxMSAubWl4aW4tbm90LWRlZmluZWQoKTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixin-not-matched.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHNheG9mb246dHJ1bXBldGU7CgoubWl4aW4oc2F4b2Zvbikgewp9CgoubWl4aW4oQHNheG9mb24pOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixin-not-matched.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UnVudGltZUVycm9yOiBObyBtYXRjaGluZyBkZWZpbml0aW9uIHdhcyBmb3VuZCBmb3IgYC5taXhpbih0cnVtcGV0ZSlgIGluIHtwYXRofW1peGluLW5vdC1tYXRjaGVkLmxlc3Mgb24gbGluZSA2LCBjb2x1bW4gMToKNSAKNiAubWl4aW4oQHNheG9mb24pOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixin-not-matched2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHNheG9mb246dHJ1bXBldGU7CgoubWl4aW4oQGEsIEBiKSB7Cn0KCi5taXhpbihAYTogQHNheG9mb24pOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixin-not-matched2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UnVudGltZUVycm9yOiBObyBtYXRjaGluZyBkZWZpbml0aW9uIHdhcyBmb3VuZCBmb3IgYC5taXhpbihAYTp0cnVtcGV0ZSlgIGluIHtwYXRofW1peGluLW5vdC1tYXRjaGVkMi5sZXNzIG9uIGxpbmUgNiwgY29sdW1uIDE6CjUgCjYgLm1peGluKEBhOiBAc2F4b2Zvbik7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixin-not-visible-in-scope-1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNvbWV0aGluZyB7CiAgICAmIHsKICAgICAgICAuYSB7dmFsdWU6IGF9CiAgICB9CgogICAgJiB7CiAgICAgICAgLmIgey5hfSAvLyB3YXMgRXJyLiBiZWZvcmUgMS42LjIKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixin-not-visible-in-scope-1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TmFtZUVycm9yOiAuYSBpcyB1bmRlZmluZWQgaW4ge3BhdGh9bWl4aW4tbm90LXZpc2libGUtaW4tc2NvcGUtMS5sZXNzIG9uIGxpbmUgNywgY29sdW1uIDEzOgo2ICAgICAmIHsKNyAgICAgICAgIC5iIHsuYX0gLy8gd2FzIEVyci4gYmVmb3JlIDEuNi4yCjggICAgIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixins-guards-default-func-1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cmd1YXJkLWRlZmF1bHQtZnVuYy1jb25mbGljdCB7CiAgICAubShAeCwgMSkgICAgICAgICAgICAgICAgICB7fQogICAgLm0oQHgsIDIpIHdoZW4gKGRlZmF1bHQoKSkge30KICAgIC5tKEB4LCAyKSB3aGVuIChkZWZhdWx0KCkpIHt9CgogICAgLm0oMSwgMSk7CiAgICAubSgxLCAyKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixins-guards-default-func-1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UnVudGltZUVycm9yOiBBbWJpZ3VvdXMgdXNlIG9mIGBkZWZhdWx0KClgIGZvdW5kIHdoZW4gbWF0Y2hpbmcgZm9yIGAubSgxLCAyKWAgaW4ge3BhdGh9bWl4aW5zLWd1YXJkcy1kZWZhdWx0LWZ1bmMtMS5sZXNzIG9uIGxpbmUgOCwgY29sdW1uIDU6CjcgICAgIC5tKDEsIDEpOwo4ICAgICAubSgxLCAyKTsKOSB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixins-guards-default-func-2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cmd1YXJkLWRlZmF1bHQtZnVuYy1jb25mbGljdCB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KICAgIC5tKEB4KSB3aGVuIG5vdChkZWZhdWx0KCkpICAgICAgICAgICB7fQogICAgLm0oQHgpIHdoZW4gKEB4ID0gMykgYW5kIChkZWZhdWx0KCkpIHt9CgogICAgLm0oMik7CiAgICAubSgzKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixins-guards-default-func-2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UnVudGltZUVycm9yOiBBbWJpZ3VvdXMgdXNlIG9mIGBkZWZhdWx0KClgIGZvdW5kIHdoZW4gbWF0Y2hpbmcgZm9yIGAubSgzKWAgaW4ge3BhdGh9bWl4aW5zLWd1YXJkcy1kZWZhdWx0LWZ1bmMtMi5sZXNzIG9uIGxpbmUgOCwgY29sdW1uIDU6CjcgICAgIC5tKDIpOwo4ICAgICAubSgzKTsKOSB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixins-guards-default-func-3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cmd1YXJkLWRlZmF1bHQtZnVuYy1jb25mbGljdCB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICAgICB7fQogICAgLm0oQHgpIHdoZW4gbm90KGRlZmF1bHQoKSkge30KICAgIC5tKEB4KSB3aGVuIG5vdChkZWZhdWx0KCkpIHt9CgogICAgLm0oMSk7CiAgICAubSgyKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/mixins-guards-default-func-3.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UnVudGltZUVycm9yOiBBbWJpZ3VvdXMgdXNlIG9mIGBkZWZhdWx0KClgIGZvdW5kIHdoZW4gbWF0Y2hpbmcgZm9yIGAubSgyKWAgaW4ge3BhdGh9bWl4aW5zLWd1YXJkcy1kZWZhdWx0LWZ1bmMtMy5sZXNzIG9uIGxpbmUgOCwgY29sdW1uIDU6CjcgICAgIC5tKDEpOwo4ICAgICAubSgyKTsKOSB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/multiple-guards-on-css-selectors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGllODogdHJ1ZTsKLmEgd2hlbiAoQGllOCA9IHRydWUpLAouYiB7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/multiple-guards-on-css-selectors.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEd1YXJkcyBhcmUgb25seSBjdXJyZW50bHkgYWxsb3dlZCBvbiBhIHNpbmdsZSBzZWxlY3Rvci4gaW4ge3BhdGh9bXVsdGlwbGUtZ3VhcmRzLW9uLWNzcy1zZWxlY3RvcnMubGVzcyBvbiBsaW5lIDMsIGNvbHVtbiAxOgoyIC5hIHdoZW4gKEBpZTggPSB0cnVlKSwKMyAuYiB7CjQgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/multiple-guards-on-css-selectors2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGllODogdHJ1ZTsKLmEsCi5iIHdoZW4gKEBpZTggPSB0cnVlKSB7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/multiple-guards-on-css-selectors2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEd1YXJkcyBhcmUgb25seSBjdXJyZW50bHkgYWxsb3dlZCBvbiBhIHNpbmdsZSBzZWxlY3Rvci4gaW4ge3BhdGh9bXVsdGlwbGUtZ3VhcmRzLW9uLWNzcy1zZWxlY3RvcnMyLmxlc3Mgb24gbGluZSAzLCBjb2x1bW4gMjM6CjIgLmEsCjMgLmIgd2hlbiAoQGllOCA9IHRydWUpIHsKNCB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/multiply-mixed-units.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVGVzdCAqLwojYmxhaCB7CiAgLy8gYmxhaAp9Ci5hIHsKICBlcnJvcjogKDFweCAqIDFlbSk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/multiply-mixed-units.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IE11bHRpcGxlIHVuaXRzIGluIGRpbWVuc2lvbi4gQ29ycmVjdCB0aGUgdW5pdHMgb3IgdXNlIHRoZSB1bml0IGZ1bmN0aW9uLiBCYWQgdW5pdDogZW0qcHggaW4ge3BhdGh9bXVsdGlwbHktbWl4ZWQtdW5pdHMubGVzcyBvbiBsaW5lIDYsIGNvbHVtbiAzOgo1IC5hIHsKNiAgIGVycm9yOiAoMXB4ICogMWVtKTsKNyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parens-error-1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIHNvbWV0aGluZzogKDEyICgxMyArIDUgLTIzKSArIDUpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parens-error-1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogRXhwZWN0ZWQgJyknIGluIHtwYXRofXBhcmVucy1lcnJvci0xLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gMTg6CjEgLmEgewoyICAgc29tZXRoaW5nOiAoMTIgKDEzICsgNSAtMjMpICsgNSk7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parens-error-2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIHNvbWV0aGluZzogKDEyICogKDEzICsgNSAtMjMpKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parens-error-2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogRXhwZWN0ZWQgJyknIGluIHtwYXRofXBhcmVucy1lcnJvci0yLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gMjg6CjEgLmEgewoyICAgc29tZXRoaW5nOiAoMTIgKiAoMTMgKyA1IC0yMykpOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parens-error-3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIHNvbWV0aGluZzogKDEyICsgKDEzICsgMTAgLTIzKSk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parens-error-3.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogRXhwZWN0ZWQgJyknIGluIHtwYXRofXBhcmVucy1lcnJvci0zLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gMjk6CjEgLmEgewoyICAgc29tZXRoaW5nOiAoMTIgKyAoMTMgKyAxMCAtMjMpKTsKMyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-curly-bracket.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-curly-bracket.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0LiBQb3NzaWJseSBtaXNzaW5nIG9wZW5pbmcgJ3snIGluIHtwYXRofXBhcnNlLWVycm9yLWN1cmx5LWJyYWNrZXQubGVzcyBvbiBsaW5lIDQsIGNvbHVtbiAxOgozICAgfQo0IH0KNSAK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-media-no-block-1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIChleHRyYTogYnJhY2tldCkpIHsKICBib2R5IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-media-no-block-1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogbWVkaWEgZGVmaW5pdGlvbnMgcmVxdWlyZSBibG9jayBzdGF0ZW1lbnRzIGFmdGVyIGFueSBmZWF0dXJlcyBpbiB7cGF0aH1wYXJzZS1lcnJvci1tZWRpYS1uby1ibG9jay0xLmxlc3Mgb24gbGluZSAxLCBjb2x1bW4gMjQ6CjEgQG1lZGlhIChleHRyYTogYnJhY2tldCkpIHsKMiAgIGJvZHkgewo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-media-no-block-2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlh]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-media-no-block-2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogbWVkaWEgZGVmaW5pdGlvbnMgcmVxdWlyZSBibG9jayBzdGF0ZW1lbnRzIGFmdGVyIGFueSBmZWF0dXJlcyBpbiB7cGF0aH1wYXJzZS1lcnJvci1tZWRpYS1uby1ibG9jay0yLmxlc3Mgb24gbGluZSAxLCBjb2x1bW4gNzoKMSBAbWVkaWEK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-media-no-block-3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIChtaW4td2lkdGg6IDUwMHB4KSB7CiAgLnNvbWV0aW1lcy1iaWcgewogICAgZm9udC1zaXplOiA1MDAwcHg7CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-media-no-block-3.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogbWVkaWEgZGVmaW5pdGlvbnMgcmVxdWlyZSBibG9jayBzdGF0ZW1lbnRzIGFmdGVyIGFueSBmZWF0dXJlcyBpbiB7cGF0aH1wYXJzZS1lcnJvci1tZWRpYS1uby1ibG9jay0zLmxlc3Mgb24gbGluZSA0LCBjb2x1bW4gNDoKMyAgICAgZm9udC1zaXplOiA1MDAwcHg7CjQgICB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-missing-bracket.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-missing-bracket.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0LiBQb3NzaWJseSBtaXNzaW5nIHNvbWV0aGluZyBpbiB7cGF0aH1wYXJzZS1lcnJvci1taXNzaW5nLWJyYWNrZXQubGVzcyBvbiBsaW5lIDMsIGNvbHVtbiAxOgoyICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKMyAK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-missing-parens.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIChtaXNzaW5nOiBicmFja2V0IHsKICBib2R5IHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-missing-parens.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogTWlzc2luZyBjbG9zaW5nICcpJyBpbiB7cGF0aH1wYXJzZS1lcnJvci1taXNzaW5nLXBhcmVucy5sZXNzIG9uIGxpbmUgMSwgY29sdW1uIDI2OgoxIEBtZWRpYSAobWlzc2luZzogYnJhY2tldCB7CjIgICBib2R5IHsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-with-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAnaW1wb3J0L2ltcG9ydC10ZXN0Lmxlc3MnOwoKYm9keQp7CiAgICBmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7Cn0KCm5vbnNlbnNlOwoKLmNsaWNrYWJsZQp7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/parse-error-with-import.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0IGluIHtwYXRofXBhcnNlLWVycm9yLXdpdGgtaW1wb3J0Lmxlc3Mgb24gbGluZSA4LCBjb2x1bW4gOToKNyAKOCBub25zZW5zZTsKOSAK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/percentage-missing-space.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGVycm9yOiBjYWxjKDEgJSk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/percentage-missing-space.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IEludmFsaWQgJSB3aXRob3V0IG51bWJlciBpbiB7cGF0aH1wZXJjZW50YWdlLW1pc3Npbmctc3BhY2UubGVzcyBvbiBsaW5lIDIsIGNvbHVtbiAzOgoxIC5hIHsKMiAgIGVycm9yOiBjYWxjKDEgJSk7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/percentage-non-number-argument.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsKICBwZXJjZW50YWdlOiBwZXJjZW50YWdlKDE2LzE3KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/percentage-non-number-argument.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgcGVyY2VudGFnZWA6IGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIgaW4ge3BhdGh9cGVyY2VudGFnZS1ub24tbnVtYmVyLWFyZ3VtZW50Lmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gMTU6CjEgZGl2IHsKMiAgIHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoMTYvMTcpOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-asterisk-only-name.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YSB7CiAgICAqIDogMTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-asterisk-only-name.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0IGluIHtwYXRofXByb3BlcnR5LWFzdGVyaXNrLW9ubHktbmFtZS5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDc6CjEgYSB7CjIgICAgICogOiAxOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-ie5-hack.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGRpc3BsYXkvKi86IGJsb2NrOyAvKnNvcnJ5IGZvciBJRTUqLwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-ie5-hack.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0LiBQb3NzaWJseSBtaXNzaW5nIG9wZW5pbmcgJ3snIGluIHtwYXRofXByb3BlcnR5LWllNS1oYWNrLmxlc3Mgb24gbGluZSAzLCBjb2x1bW4gMToKMiAgIGRpc3BsYXkvKi86IGJsb2NrOyAvKnNvcnJ5IGZvciBJRTUqLwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-in-root.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEoKSB7CiAgcHJvcDoxOwp9Ci5hKCk7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-in-root.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IHByb3BlcnRpZXMgbXVzdCBiZSBpbnNpZGUgc2VsZWN0b3IgYmxvY2tzLCB0aGV5IGNhbm5vdCBiZSBpbiB0aGUgcm9vdC4gaW4ge3BhdGh9cHJvcGVydHktaW4tcm9vdC5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDM6CjEgLmEoKSB7CjIgICBwcm9wOjE7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-in-root2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAicHJvcGVydHktaW4tcm9vdCI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-in-root2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IHByb3BlcnRpZXMgbXVzdCBiZSBpbnNpZGUgc2VsZWN0b3IgYmxvY2tzLCB0aGV5IGNhbm5vdCBiZSBpbiB0aGUgcm9vdC4gaW4ge3BhdGh9cHJvcGVydHktaW4tcm9vdC5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDM6CjEgLmEoKSB7CjIgICBwcm9wOjE7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-in-root3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cHJvcDoxOwouYSB7CiAgcHJvcDoxOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-in-root3.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IHByb3BlcnRpZXMgbXVzdCBiZSBpbnNpZGUgc2VsZWN0b3IgYmxvY2tzLCB0aGV5IGNhbm5vdCBiZSBpbiB0aGUgcm9vdC4gaW4ge3BhdGh9cHJvcGVydHktaW4tcm9vdDMubGVzcyBvbiBsaW5lIDEsIGNvbHVtbiAxOgoxIHByb3A6MTsKMiAuYSB7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-interp-not-defined.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YSB7b3V0bGluZS1Ae2NvbG9yfTogZ3JlZW59]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/property-interp-not-defined.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TmFtZUVycm9yOiB2YXJpYWJsZSBAY29sb3IgaXMgdW5kZWZpbmVkIGluIHtwYXRofXByb3BlcnR5LWludGVycC1ub3QtZGVmaW5lZC5sZXNzIG9uIGxpbmUgMSwgY29sdW1uIDEyOgoxIGEge291dGxpbmUtQHtjb2xvcn06IGdyZWVufQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/recursive-variable.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGJvZHlDb2xvcjogZGFya2VuKEBib2R5Q29sb3IsIDMwJSk7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/recursive-variable.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TmFtZUVycm9yOiBSZWN1cnNpdmUgdmFyaWFibGUgZGVmaW5pdGlvbiBmb3IgQGJvZHlDb2xvciBpbiB7cGF0aH1yZWN1cnNpdmUtdmFyaWFibGUubGVzcyBvbiBsaW5lIDEsIGNvbHVtbiAyMDoKMSBAYm9keUNvbG9yOiBkYXJrZW4oQGJvZHlDb2xvciwgMzAlKTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/single-character.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eA==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/single-character.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UGFyc2VFcnJvcjogVW5yZWNvZ25pc2VkIGlucHV0LiBQb3NzaWJseSBtaXNzaW5nIHNvbWV0aGluZyBpbiB7cGF0aH1zaW5nbGUtY2hhcmFjdGVyLmxlc3Mgb24gbGluZSAxLCBjb2x1bW4gMjoKMSB4Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGE6IHN2Zy1ncmFkaWVudChob3Jpem9udGFsLCBibGFjaywgd2hpdGUpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient1.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgc3ZnLWdyYWRpZW50YDogc3ZnLWdyYWRpZW50IGRpcmVjdGlvbiBtdXN0IGJlICd0byBib3R0b20nLCAndG8gcmlnaHQnLCAndG8gYm90dG9tIHJpZ2h0JywgJ3RvIHRvcCByaWdodCcgb3IgJ2VsbGlwc2UgYXQgY2VudGVyJyBpbiB7cGF0aH1zdmctZ3JhZGllbnQxLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gNjoKMSAuYSB7CjIgICBhOiBzdmctZ3JhZGllbnQoaG9yaXpvbnRhbCwgYmxhY2ssIHdoaXRlKTsKMyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGE6IHN2Zy1ncmFkaWVudCh0byBib3R0b20sIGJsYWNrLCBvcmFuZ2UsIDQ1JSwgd2hpdGUpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient2.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgc3ZnLWdyYWRpZW50YDogc3ZnLWdyYWRpZW50IGV4cGVjdHMgZGlyZWN0aW9uLCBzdGFydF9jb2xvciBbc3RhcnRfcG9zaXRpb25dLCBbY29sb3IgcG9zaXRpb24sXS4uLiwgZW5kX2NvbG9yIFtlbmRfcG9zaXRpb25dIG9yIGRpcmVjdGlvbiwgY29sb3IgbGlzdCBpbiB7cGF0aH1zdmctZ3JhZGllbnQyLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gNjoKMSAuYSB7CjIgICBhOiBzdmctZ3JhZGllbnQodG8gYm90dG9tLCBibGFjaywgb3JhbmdlLCA0NSUsIHdoaXRlKTsKMyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGE6IHN2Zy1ncmFkaWVudChibGFjaywgb3JhbmdlKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient3.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgc3ZnLWdyYWRpZW50YDogc3ZnLWdyYWRpZW50IGRpcmVjdGlvbiBtdXN0IGJlICd0byBib3R0b20nLCAndG8gcmlnaHQnLCAndG8gYm90dG9tIHJpZ2h0JywgJ3RvIHRvcCByaWdodCcgb3IgJ2VsbGlwc2UgYXQgY2VudGVyJyBpbiB7cGF0aH1zdmctZ3JhZGllbnQzLmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gNjoKMSAuYSB7CjIgICBhOiBzdmctZ3JhZGllbnQoYmxhY2ssIG9yYW5nZSk7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient4.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGE6IHN2Zy1ncmFkaWVudChob3Jpem9udGFsLCBAY29sb3JzKTsKfQpAY29sb3JzOiBibGFjaywgd2hpdGU7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient4.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgc3ZnLWdyYWRpZW50YDogc3ZnLWdyYWRpZW50IGRpcmVjdGlvbiBtdXN0IGJlICd0byBib3R0b20nLCAndG8gcmlnaHQnLCAndG8gYm90dG9tIHJpZ2h0JywgJ3RvIHRvcCByaWdodCcgb3IgJ2VsbGlwc2UgYXQgY2VudGVyJyBpbiB7cGF0aH1zdmctZ3JhZGllbnQ0Lmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gNjoKMSAuYSB7CjIgICBhOiBzdmctZ3JhZGllbnQoaG9yaXpvbnRhbCwgQGNvbG9ycyk7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient5.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGE6IHN2Zy1ncmFkaWVudCh0byBib3R0b20sIEBjb2xvcnMpOwp9CkBjb2xvcnM6IGJsYWNrLCBvcmFuZ2UsIDQ1JSwgd2hpdGU7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient5.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgc3ZnLWdyYWRpZW50YDogc3ZnLWdyYWRpZW50IGV4cGVjdHMgZGlyZWN0aW9uLCBzdGFydF9jb2xvciBbc3RhcnRfcG9zaXRpb25dLCBbY29sb3IgcG9zaXRpb24sXS4uLiwgZW5kX2NvbG9yIFtlbmRfcG9zaXRpb25dIG9yIGRpcmVjdGlvbiwgY29sb3IgbGlzdCBpbiB7cGF0aH1zdmctZ3JhZGllbnQ1Lmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gNjoKMSAuYSB7CjIgICBhOiBzdmctZ3JhZGllbnQodG8gYm90dG9tLCBAY29sb3JzKTsKMyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient6.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGE6IHN2Zy1ncmFkaWVudChibGFjaywgQGNvbG9ycyk7Cn0KQGNvbG9yczogb3JhbmdlOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/svg-gradient6.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgc3ZnLWdyYWRpZW50YDogc3ZnLWdyYWRpZW50IGRpcmVjdGlvbiBtdXN0IGJlICd0byBib3R0b20nLCAndG8gcmlnaHQnLCAndG8gYm90dG9tIHJpZ2h0JywgJ3RvIHRvcCByaWdodCcgb3IgJ2VsbGlwc2UgYXQgY2VudGVyJyBpbiB7cGF0aH1zdmctZ3JhZGllbnQ2Lmxlc3Mgb24gbGluZSAyLCBjb2x1bW4gNjoKMSAuYSB7CjIgICBhOiBzdmctZ3JhZGllbnQoYmxhY2ssIEBjb2xvcnMpOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/unit-function.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGZvbnQtc2l6ZTogdW5pdCg4MC8xNixyZW0pOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/errors/unit-function.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QXJndW1lbnRFcnJvcjogZXJyb3IgZXZhbHVhdGluZyBmdW5jdGlvbiBgdW5pdGA6IHRoZSBmaXJzdCBhcmd1bWVudCB0byB1bml0IG11c3QgYmUgYSBudW1iZXIuIEhhdmUgeW91IGZvcmdvdHRlbiBwYXJlbnRoZXNpcz8gaW4ge3BhdGh9dW5pdC1mdW5jdGlvbi5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDE0OgoxIC5hIHsKMiAgIGZvbnQtc2l6ZTogdW5pdCg4MC8xNixyZW0pOwozIH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/extend-chaining.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly92ZXJ5IHNpbXBsZSBjaGFpbmluZwouYSB7CiAgY29sb3I6IGJsYWNrOwp9Ci5iOmV4dGVuZCguYSkge30KLmM6ZXh0ZW5kKC5iKSB7fQoKLy92ZXJ5IHNpbXBsZSBjaGFpbmluZywgb3JkZXJpbmcgbm90IGltcG9ydGFudAoKLmQ6ZXh0ZW5kKC5lKSB7fQouZTpleHRlbmQoLmYpIHt9Ci5mIHsKICBjb2xvcjogYmxhY2s7Cn0KCi8vZXh0ZW5kIHdpdGggYWxsCgouZy5oIHsKICBjb2xvcjogYmxhY2s7Cn0KLmkuajpleHRlbmQoLmcgYWxsKSB7CiAgY29sb3I6IHdoaXRlOwp9Ci5rOmV4dGVuZCguaSBhbGwpIHt9CgovL2V4dGVuZCBtdWx0aS1jaGFpbmluZwoKLmwgewogIGNvbG9yOiBibGFjazsKfQoubTpleHRlbmQoLmwpe30KLm46ZXh0ZW5kKC5tKXt9Ci5vOmV4dGVuZCgubil7fQoucDpleHRlbmQoLm8pe30KLnE6ZXh0ZW5kKC5wKXt9Ci5yOmV4dGVuZCgucSl7fQouczpleHRlbmQoLnIpe30KLnQ6ZXh0ZW5kKC5zKXt9CgovLyBzZWxmIHJlZmVyZW5jaW5nIGlzIGlnbm9yZWQKCi51IHtjb2xvcjogYmxhY2s7fQoudi51LnY6ZXh0ZW5kKC51IGFsbCl7fQoKLy8gY2lyY3VsYXIgcmVmZXJlbmNlIGJlY2F1c2UgdGhlIG5ldyBleHRlbmQgcHJvZHVjdCB3aWxsIG1hdGNoIHRoZSBleGlzdGluZyBleHRlbmQKCi53OmV4dGVuZCgudykge2NvbG9yOiBibGFjazt9Ci52LncudjpleHRlbmQoLncgYWxsKXt9CgovLyBjbGFzc2ljIGNpcmN1bGFyIHJlZmVyZW5jZXMKCi54OmV4dGVuZCgueikgewogIGNvbG9yOiB4Owp9Ci55OmV4dGVuZCgueCkgewogIGNvbG9yOiB5Owp9Ci56OmV4dGVuZCgueSkgewogIGNvbG9yOiB6Owp9CgovL3Zlcnkgc2ltcGxlIGNoYWluaW5nLCBidXQgd2l0aCB0aGUgZXh0ZW5kIGluc2lkZSB0aGUgcnVsZXNldAoudmEgewogIGNvbG9yOiBibGFjazsKfQoudmIgewogICY6ZXh0ZW5kKC52YSk7CiAgY29sb3I6IHdoaXRlOwp9Ci52YyB7CiAgJjpleHRlbmQoLnZiKTsKfQoKLy8gbWVkaWEgcXVlcmllcyAtIGRvbnQgZXh0ZW5kIG91dHNpZGUsIGRvIGV4dGVuZCBpbnNpZGUKCkBtZWRpYSB0diB7CiAgLm1hOmV4dGVuZCguYSwuYiwuYywuZCwuZSwuZiwuZywuaCwuaSwuaiwuaywubCwubSwubiwubywucCwucSwuciwucywudCwudSwudiwudywueCwueSwueiwubWQpIHsKICAgIGNvbG9yOiBibGFjazsKICB9CiAgLm1kIHsKICAgIGNvbG9yOiB3aGl0ZTsKICB9CiAgQG1lZGlhIHBsYXNtYSB7CiAgICAubWUsIC5tZiB7CiAgICAgICY6ZXh0ZW5kKC5tYiwubWQpOwogICAgICBiYWNrZ3JvdW5kOiByZWQ7CiAgICB9CiAgfQp9Ci5tYjpleHRlbmQoLm1hKSB7fTsKLm1jOmV4dGVuZCgubWIpIHt9Ow==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/extend-clearfix.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsZWFyZml4IHsKICAqem9vbTogMTsKICAmOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBjbGVhcjogYm90aDsKICAgIGhlaWdodDogMDsKICB9Cn0KCi5mb28gewogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwogIGNvbG9yOiByZWQ7Cn0KCi5iYXIgewogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwogIGNvbG9yOiBibHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/extend-exact.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnJlcGxhY2UucmVwbGFjZSwKLmMucmVwbGFjZSArIC5yZXBsYWNlIHsKICAucmVwbGFjZSwKICAuYyB7CiAgICBwcm9wOiBjb3B5LXBhc3RlLXJlcGxhY2U7CiAgfQp9Ci5yZXBfYWNlOmV4dGVuZCgucmVwbGFjZS5yZXBsYWNlIC5yZXBsYWNlKSB7fQoKLmEgLmIgLmMgewogIHByb3A6IG5vdF9lZmZlY3RlZDsKfQoKLmEgewogIHByb3A6IGlzX2VmZmVjdGVkOwogIC5iIHsKICAgIHByb3A6IG5vdF9lZmZlY3RlZDsKICB9CiAgLmIuYyB7CiAgICBwcm9wOiBub3RfZWZmZWN0ZWQ7CiAgfQp9CgouYywgLmEgewogIC5iLCAuYSB7CiAgICAuYSwgLmMgewogICAgICBwcm9wOiBub3RfZWZmZWN0ZWQ7CiAgICB9CiAgfQp9CgouZWZmZWN0ZWQgewogICY6ZXh0ZW5kKC5hKTsKICAmOmV4dGVuZCguYik7CiAgJjpleHRlbmQoLmMpOwp9CgouZSB7CiAgJiYgewogICAgcHJvcDogZXh0ZW5kLWRvdWJsZTsKICAgICY6aG92ZXIgewogICAgICBob3Zlcjogbm90LWV4dGVuZGVkOwogICAgfQogIH0KfQouZGJsOmV4dGVuZCguZS5lKSB7fQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/extend-media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV4dDEgLmV4dDIgewogIGJhY2tncm91bmQ6IGJsYWNrOwp9CgpAbWVkaWEgdHYgewogIC5leHQxIC5leHQzIHsKICAgIGNvbG9yOiB3aGl0ZTsKICB9CiAgLnR2LWxvd3JlcyA6ZXh0ZW5kKC5leHQxIGFsbCkgewogICAgYmFja2dyb3VuZDogYmx1ZTsKICB9CiAgQG1lZGlhIGhpcmVzIHsKICAgIC5leHQxIC5leHQ0IHsKICAgICAgY29sb3I6IGdyZWVuOwogICAgfQogICAgLnR2LWhpcmVzIDpleHRlbmQoLmV4dDEgYWxsKSB7CiAgICAgIGJhY2tncm91bmQ6IHJlZDsKICAgIH0KICB9Cn0KCi5hbGw6ZXh0ZW5kKC5leHQxIGFsbCkgewoKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/extend-nest.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNpZGViYXIgewogIHdpZHRoOiAzMDBweDsKICBiYWNrZ3JvdW5kOiByZWQ7CgogIC5ib3ggewogICAgYmFja2dyb3VuZDogI0ZGRjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgICBtYXJnaW46IDEwcHggMDsKICB9Cn0KCi5zaWRlYmFyMiB7CiAgJjpleHRlbmQoLnNpZGViYXIgYWxsKTsKICBiYWNrZ3JvdW5kOiBibHVlOwp9CgoudHlwZTEgewogICAgLnNpZGViYXIzIHsKICAgICAgJjpleHRlbmQoLnNpZGViYXIgYWxsKTsKICAgICAgYmFja2dyb3VuZDogZ3JlZW47CiAgICB9Cn0KCi50eXBlMiB7CiAgJi5zaWRlYmFyNCB7CiAgICAmOmV4dGVuZCguc2lkZWJhciBhbGwpOwogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQoKLmJ1dHRvbiB7CiAgY29sb3I6IGJsYWNrOwogICY6aG92ZXIgewogICAgY29sb3I6IHdoaXRlOwogIH0KfQouc3VibWl0IHsKICAmOmV4dGVuZCguYnV0dG9uKTsKICAmOmhvdmVyOmV4dGVuZCguYnV0dG9uOmhvdmVyKSB7fQp9Cgoubm9tYXRjaCB7CiAgJjpob3ZlcjpleHRlbmQoLmJ1dHRvbiA6aG92ZXIpIHt9Cn0KCi5idXR0b24yIHsKICA6aG92ZXIgewogICAgbmVzdGVkOiB3aGl0ZTsKICB9Cn0KLmJ1dHRvbjIgOmhvdmVyIHsKICBub3RuZXN0ZWQ6IGJsYWNrOwp9Cgoubm9tYXRjaCA6ZXh0ZW5kKC5idXR0b24yOmhvdmVyKSB7fQoKLmFtcC10ZXN0LWEsCi5hbXAtdGVzdC1iIHsKICAuYW1wLXRlc3QtYyAmLmFtcC10ZXN0LWQmLmFtcC10ZXN0LWUgewogICAgLmFtcC10ZXN0LWYmKyYuYW1wLXRlc3QtZzpleHRlbmQoLmFtcC10ZXN0LWgpIHt9CiAgfQp9Ci5hbXAtdGVzdC1oIHsKICB0ZXN0OiBleHRlbmRlZCBieSBtYXNzZXMgb2Ygc2VsZWN0b3JzOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/extend-selector.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVycm9yIHsKICBib3JkZXI6IDFweCAjZjAwOwogIGJhY2tncm91bmQ6ICNmZGQ7Cn0KLmVycm9yLmludHJ1c2lvbiB7CiAgZm9udC1zaXplOiAxLjNlbTsKICBmb250LXdlaWdodDogYm9sZDsKfQouaW50cnVzaW9uIC5lcnJvciB7CiAgZGlzcGxheTogbm9uZTsKfQouYmFkRXJyb3I6ZXh0ZW5kKC5lcnJvciBhbGwpIHsKICBib3JkZXItd2lkdGg6IDNweDsKfQoKLmZvbyAuYmFyLCAuZm9vIC5iYXogewogICAgZGlzcGxheTogbm9uZTsKfQoKLmV4dDEgLmV4dDIKICAgIDpleHRlbmQoLmZvbyBhbGwpIHsKfQoKLmV4dDM6ZXh0ZW5kKC5mb28gYWxsKSwKLmV4dDQ6ZXh0ZW5kKC5mb28gYWxsKSB7Cn0KCmRpdi5leHQ1LAouZXh0NiA+IC5leHQ1IHsKICAgIHdpZHRoOiAxMDBweDsKfQoKLnNob3VsZC1ub3QtZXhpc3QtaW4tb3V0cHV0LAouZXh0NzpleHRlbmQoLmV4dDUgYWxsKSB7Cn0KCi5leHQgewogIHRlc3Q6IDE7Cn0KLy8gc2FtZSBhcwovLyAuYSAuYzpleHRlbmQoLmV4dCBhbGwpCi8vIC5iIC5jOmV4dGVuZCguZXh0IGFsbCkKLy8gLmEgLmMgLmQKLy8gLmIgLmMgLmQKLmEsIC5iIHsKICB0ZXN0OiAyOwogIC5jOmV4dGVuZCguZXh0IGFsbCkgewogICAgdGVzdDogMzsKICAgIC5kIHsKICAgICAgdGVzdDogNDsKICAgIH0KICB9Cn0KCi5yZXBsYWNlLnJlcGxhY2UsCi5jLnJlcGxhY2UgKyAucmVwbGFjZSB7CiAgLnJlcGxhY2UsCiAgLmMgewogICAgcHJvcDogY29weS1wYXN0ZS1yZXBsYWNlOwogIH0KfQoucmVwX2FjZTpleHRlbmQoLnJlcGxhY2UgYWxsKSB7fQoKLmF0dHJpYnV0ZXMgewogIFtkYXRhPSJ0ZXN0Il0gewogICAgZXh0ZW5kOiBhdHRyaWJ1dGVzOwogIH0KICAuYXR0cmlidXRlLXRlc3QgewogICAgJjpleHRlbmQoW2RhdGE9InRlc3QiXSBhbGwpOwogIH0KICBbZGF0YV0gewogICAgZXh0ZW5kOiBhdHRyaWJ1dGVzMjsKICB9CiAgLmF0dHJpYnV0ZS10ZXN0MiB7CiAgICAmOmV4dGVuZChbZGF0YV0gYWxsKTsgLy95b3UgY291bGQgYXJndWUgaXQgc2hvdWxkIG1hdGNoIFtkYXRhPSJ0ZXN0Il0uLi4gbm90IGZvciBub3cgdGhvdWdoLi4uCiAgfQogIEBhdHRyLWRhdGE6ICJ0ZXN0MyI7CiAgW2RhdGE9QHthdHRyLWRhdGF9XSB7CiAgICBleHRlbmQ6IGF0dHJpYnV0ZXMyOwogIH0KICAuYXR0cmlidXRlLXRlc3QgewogICAgJjpleHRlbmQoW2RhdGE9InRlc3QzIl0gYWxsKTsKICB9Cn0KCi5oZWFkZXIgewogIC5oZWFkZXItbmF2IHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICAgICY6YmVmb3JlIHsKICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgIH0KICB9Cn0KCi5mb290ZXIgewogIC5mb290ZXItbmF2IHsKICAgICY6ZXh0ZW5kKCAuaGVhZGVyIC5oZWFkZXItbmF2IGFsbCApOwogIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/extend.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVycm9yIHsKICBib3JkZXI6IDFweCAjZjAwOwogIGJhY2tncm91bmQ6ICNmZGQ7Cn0KLmVycm9yLmludHJ1c2lvbiB7CiAgZm9udC1zaXplOiAxLjNlbTsKICBmb250LXdlaWdodDogYm9sZDsKfQouaW50cnVzaW9uIC5lcnJvciB7CiAgZGlzcGxheTogbm9uZTsKfQouYmFkRXJyb3IgewogICY6ZXh0ZW5kKC5lcnJvciBhbGwpOwogIGJvcmRlci13aWR0aDogM3B4Owp9CgouZm9vIC5iYXIsIC5mb28gLmJheiB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouZXh0MSAuZXh0MiB7CiAgICAmOmV4dGVuZCguZm9vIGFsbCk7Cn0KCi5leHQzLAouZXh0NCB7CiAgJjpleHRlbmQoLmZvbyBhbGwpOwogICY6ZXh0ZW5kKC5iYXIgYWxsKTsKfQoKZGl2LmV4dDUsCi5leHQ2ID4gLmV4dDUgewogICAgd2lkdGg6IDEwMHB4Owp9CgouZXh0NyB7CiAgICAmOmV4dGVuZCguZXh0NSBhbGwpOwp9CgouZXh0OC5leHQ5IHsKICByZXN1bHQ6IGFkZC1mb287Cn0KLmV4dDggLmV4dDksCi5leHQ4ICsgLmV4dDksCi5leHQ4ID4gLmV4dDkgewogIHJlc3VsdDogYmFyLW1hdGNoZWQ7Cn0KLmV4dDgubm9tYXRjaCB7CiAgcmVzdWx0OiBub25lOwp9Ci5leHQ4IHsKICAuZXh0OSB7CiAgICByZXN1bHQ6IG1hdGNoLW5lc3RlZC1iYXI7CiAgfQp9Ci5leHQ4IHsKICAmLmV4dDkgewogICAgcmVzdWx0OiBtYXRjaC1uZXN0ZWQtZm9vOwogIH0KfQoKLmZ1dTpleHRlbmQoLmV4dDguZXh0OSBhbGwpIHt9Ci5idXU6ZXh0ZW5kKC5leHQ4IC5leHQ5IGFsbCkge30KLnphcDpleHRlbmQoLmV4dDggKyAuZXh0OSBhbGwpIHt9Ci56b286ZXh0ZW5kKC5leHQ4ID4gLmV4dDkgYWxsKSB7fQoKLmFhIHsKICBjb2xvcjogYmxhY2s7CiAgLmRkIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICB9Cn0KLmJiIHsKICBiYWNrZ3JvdW5kOiByZWQ7CiAgLmJiIHsKICAgIGNvbG9yOiBibGFjazsKICB9Cn0KLmNjOmV4dGVuZCguYWEsLmJiKSB7fQouZWU6ZXh0ZW5kKC5kZCBhbGwsLmJiKSB7fQouZmY6ZXh0ZW5kKC5kZCwuYmIgYWxsKSB7fQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/extract-and-length.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIHNpbXBsZSBhcnJheS9saXN0OgoKLm11bHRpdW5pdCB7CiAgQHY6IGFiYyAiYWJjIiAxIDFweCAxJSAjMTIzOwogIGxlbmd0aDogbGVuZ3RoKEB2KTsKICBleHRyYWN0OiBleHRyYWN0KEB2LCAxKSBleHRyYWN0KEB2LCAyKSBleHRyYWN0KEB2LCAzKSBleHRyYWN0KEB2LCA0KSBleHRyYWN0KEB2LCA1KSBleHRyYWN0KEB2LCA2KTsKfQoKLmluY29ycmVjdC1pbmRleCB7CiAgICBAdjE6IGEgIGIgIGM7CiAgICBAdjI6IGEsIGIsIGM7CiAgICB2MTogZXh0cmFjdChAdjEsICA1KTsKICAgIHYyOiBleHRyYWN0KEB2MiwgLTIpOwp9Cgouc2NhbGFyIHsKICAgIEB2YXI6ICAgICAgICAgIHZhcmlhYmxlOwogICAgdmFyLXZhbHVlOiAgICAgZXh0cmFjdChAdmFyLCAxKTsKICAgIHZhci1sZW5ndGg6ICAgIGxlbmd0aChAdmFyKTsKICAgIGlsbC1pbmRleDogICAgIGV4dHJhY3QoQHZhciwgMik7CgogICAgbmFtZS12YWx1ZTogICAgZXh0cmFjdChuYW1lLCAxKTsKICAgIHN0cmluZy12YWx1ZTogIGV4dHJhY3QoInN0cmluZyIsIDEpOwogICAgbnVtYmVyLXZhbHVlOiAgZXh0cmFjdCgxMjM0NTY3OCwgMSk7CiAgICBjb2xvci12YWx1ZTogICBleHRyYWN0KGJsdWUsIDEpOwogICAgcmdiYS12YWx1ZTogICAgZXh0cmFjdChyZ2JhKDgwLCAxNjAsIDI0MCwgMC42NyksIDEpOwogICAgZW1wdHktdmFsdWU6ICAgZXh0cmFjdCh+JycsIDEpOwoKICAgIG5hbWUtbGVuZ3RoOiAgIGxlbmd0aChuYW1lKTsKICAgIHN0cmluZy1sZW5ndGg6IGxlbmd0aCgic3RyaW5nIik7CiAgICBudW1iZXItbGVuZ3RoOiBsZW5ndGgoMTIzNDU2NzgpOwogICAgY29sb3ItbGVuZ3RoOiAgbGVuZ3RoKGJsdWUpOwogICAgcmdiYS1sZW5ndGg6ICAgbGVuZ3RoKHJnYmEoODAsIDE2MCwgMjQwLCAwLjY3KSk7CiAgICBlbXB0eS1sZW5ndGg6ICBsZW5ndGgoficnKTsKfQoKLm1peGluLWFyZ3VtZW50cyB7CiAgICAubWl4aW4tYXJncyhhIGIgYyBkKTsKICAgIC5taXhpbi1hcmdzKGEsIGIsIGMsIGQpOwogICAgLm1peGluLWFyZ3MoMTsgMjsgMzsgNCk7Cn0KCi5taXhpbi1hcmdzKEB2YWx1ZSkgewogICAgJi0xIHsKICAgICAgICBsZW5ndGg6ICBsZW5ndGgoQHZhbHVlKTsKICAgICAgICBleHRyYWN0OiBleHRyYWN0KEB2YWx1ZSwgMykgfiJ8IiBleHRyYWN0KEB2YWx1ZSwgMikgfiJ8IiBleHRyYWN0KEB2YWx1ZSwgMSk7CiAgICB9Cn0KCi5taXhpbi1hcmdzKC4uLikgewogICAgJi0yIHsKICAgICAgICBsZW5ndGg6ICBsZW5ndGgoQGFyZ3VtZW50cyk7CiAgICAgICAgZXh0cmFjdDogZXh0cmFjdChAYXJndW1lbnRzLCAzKSB+InwiIGV4dHJhY3QoQGFyZ3VtZW50cywgMikgfiJ8IiBleHRyYWN0KEBhcmd1bWVudHMsIDEpOwogICAgfQp9CgoubWl4aW4tYXJncyhAdmFsdWVzLi4uKSB7CiAgICAmLTMgewogICAgICAgIGxlbmd0aDogIGxlbmd0aChAdmFsdWVzKTsKICAgICAgICBleHRyYWN0OiBleHRyYWN0KEB2YWx1ZXMsIDMpIH4ifCIgZXh0cmFjdChAdmFsdWVzLCAyKSB+InwiIGV4dHJhY3QoQHZhbHVlcywgMSk7CiAgICB9Cn0KCi5taXhpbi1hcmdzKEBoZWFkLCBAdGFpbC4uLikgewogICAgJi00IHsKICAgICAgICBsZW5ndGg6ICBsZW5ndGgoQHRhaWwpOwogICAgICAgIGV4dHJhY3Q6IGV4dHJhY3QoQHRhaWwsIDIpIH4ifCIgZXh0cmFjdChAdGFpbCwgMSk7CiAgICB9Cn0KCi8vICJtdWx0aWRpbWVuc2lvbmFsIiBhcnJheS9saXN0CgoubWQtc3BhY2UtY29tbWEgewogICAgQHY6IGEgYiBjLCAxIDIgMywgIngiICJ5IiAieiI7CiAgICBsZW5ndGgtMTogIGxlbmd0aChAdik7CiAgICBleHRyYWN0LTE6IGV4dHJhY3QoQHYsIDIpOwogICAgbGVuZ3RoLTI6ICBsZW5ndGgoZXh0cmFjdChAdiwgMikpOwogICAgZXh0cmFjdC0yOiBleHRyYWN0KGV4dHJhY3QoQHYsIDIpLCAyKTsKCiAgICAmLWFzLWFyZ3Mgey5taXhpbi1hcmdzKGEgYiBjLCAxIDIgMywgIngiICJ5IiAieiIpfQp9CgoubWQtY2F0LXNwYWNlLWNvbW1hIHsKICAgIEBhOiBhIGIgYzsKICAgIEBiOiAxIDIgMzsKICAgIEBjOiAieCIgInkiICJ6IjsKICAgIEB2OiBAYSwgQGIsIEBjOwogICAgbGVuZ3RoLTE6ICBsZW5ndGgoQHYpOwogICAgZXh0cmFjdC0xOiBleHRyYWN0KEB2LCAyKTsKICAgIGxlbmd0aC0yOiAgbGVuZ3RoKGV4dHJhY3QoQHYsIDIpKTsKICAgIGV4dHJhY3QtMjogZXh0cmFjdChleHRyYWN0KEB2LCAyKSwgMik7CgogICAgJi1hcy1hcmdzIHsubWl4aW4tYXJncyhAYSwgQGIsIEBjKX0KfQoKLm1kLWNhdC1jb21tYS1zcGFjZSB7CiAgICBAYTogYSwgYiwgYzsKICAgIEBiOiAxLCAyLCAzOwogICAgQGM6ICJ4IiwgInkiLCAieiI7CiAgICBAdjogQGEgQGIgQGM7CiAgICBsZW5ndGgtMTogIGxlbmd0aChAdik7CiAgICBleHRyYWN0LTE6IGV4dHJhY3QoQHYsIDIpOwogICAgbGVuZ3RoLTI6ICBsZW5ndGgoZXh0cmFjdChAdiwgMikpOwogICAgZXh0cmFjdC0yOiBleHRyYWN0KGV4dHJhY3QoQHYsIDIpLCAyKTsKCiAgICAmLWFzLWFyZ3Mgey5taXhpbi1hcmdzKEBhIEBiIEBjKX0KfQoKLm1kLTNEIHsKICAgIEBhOiBhIGIgYyBkLCAxIDIgMyA0OwogICAgQGI6IDUgNiA3IDgsIGUgZiBnIGg7CiAgICAuM0QoQGEsIEBiKTsKCiAgICAuM0QoLi4uKSB7CgogICAgICAgIEB2MTogICAgICAgQGFyZ3VtZW50czsKICAgICAgICBsZW5ndGgtMTogIGxlbmd0aChAdjEpOwogICAgICAgIGV4dHJhY3QtMTogZXh0cmFjdChAdjEsIDEpOwoKICAgICAgICBAdjI6ICAgICAgIGV4dHJhY3QoQHYxLCAyKTsKICAgICAgICBsZW5ndGgtMjogIGxlbmd0aChAdjIpOwogICAgICAgIGV4dHJhY3QtMjogZXh0cmFjdChAdjIsIDEpOwoKICAgICAgICBAdjM6ICAgICAgIGV4dHJhY3QoQHYyLCAxKTsKICAgICAgICBsZW5ndGgtMzogIGxlbmd0aChAdjMpOwogICAgICAgIGV4dHJhY3QtMzogZXh0cmFjdChAdjMsIDMpOwoKICAgICAgICBAdjQ6ICAgICAgIGV4dHJhY3QoQHYzLCA0KTsKICAgICAgICBsZW5ndGgtNDogIGxlbmd0aChAdjQpOwogICAgICAgIGV4dHJhY3QtNDogZXh0cmFjdChAdjQsIDEpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/filemanagerPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/filemanagerPlugin/colors.test</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNvbG9yOiByZWQ7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/filemanagerPlugin/filemanager.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAidGVzdC50ZXN0IjsKLnRlc3QgewogICAgY29sb3I6IEBjb2xvcjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/functions.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2Z1bmN0aW9ucyB7CiAgQHZhcjogMTA7CiAgQGNvbG9yczogIzAwMCwgI2ZmZjsKICBjb2xvcjogX2NvbG9yKCJldmlsIHJlZCIpOyAvLyAjNjYwMDAwCiAgd2lkdGg6IGluY3JlbWVudCgxNSk7CiAgaGVpZ2h0OiB1bmRlZmluZWQoInNlbGYiKTsKICBib3JkZXItd2lkdGg6IGFkZCgyLCAzKTsKICB2YXJpYWJsZTogaW5jcmVtZW50KEB2YXIpOwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChAY29sb3JzKTsKfQoKI2J1aWx0LWluIHsKICBAcjogMzI7CiAgZXNjYXBlZDogZSgiLVNvbWU6OndlaXJkKCN0aGluZywgeSkiKTsKICBsaWdodGVuOiBsaWdodGVuKCNmZjAwMDAsIDQwJSk7CiAgbGlnaHRlbi1yZWxhdGl2ZTogbGlnaHRlbigjZmYwMDAwLCA0MCUsIHJlbGF0aXZlKTsKICBkYXJrZW46IGRhcmtlbigjZmYwMDAwLCA0MCUpOwogIGRhcmtlbi1yZWxhdGl2ZTogZGFya2VuKCNmZjAwMDAsIDQwJSwgcmVsYXRpdmUpOwogIHNhdHVyYXRlOiBzYXR1cmF0ZSgjMjkzMzJmLCAyMCUpOwogIHNhdHVyYXRlLXJlbGF0aXZlOiBzYXR1cmF0ZSgjMjkzMzJmLCAyMCUsIHJlbGF0aXZlKTsKICBkZXNhdHVyYXRlOiBkZXNhdHVyYXRlKCMyMDNjMzEsIDIwJSk7CiAgZGVzYXR1cmF0ZS1yZWxhdGl2ZTogZGVzYXR1cmF0ZSgjMjAzYzMxLCAyMCUsIHJlbGF0aXZlKTsKICBncmV5c2NhbGU6IGdyZXlzY2FsZSgjMjAzYzMxKTsKICBoc2wtY2xhbXA6IGhzbCgzODAsIDE1MCUsIDE1MCUpOwogIHNwaW4tcDogc3Bpbihoc2woMzQwLCA1MCUsIDUwJSksIDQwKTsKICBzcGluLW46IHNwaW4oaHNsKDMwLCA1MCUsIDUwJSksIC00MCk7CiAgbHVtYS13aGl0ZTogbHVtYSgjZmZmKTsKICBsdW1hLWJsYWNrOiBsdW1hKCMwMDApOwogIGx1bWEtYmxhY2stYWxwaGE6IGx1bWEocmdiYSgwLDAsMCwwLjUpKTsKICBsdW1hLXJlZDogbHVtYSgjZmYwMDAwKTsKICBsdW1hLWdyZWVuOiBsdW1hKCMwMGZmMDApOwogIGx1bWEtYmx1ZTogbHVtYSgjMDAwMGZmKTsKICBsdW1hLXllbGxvdzogbHVtYSgjZmZmZjAwKTsKICBsdW1hLWN5YW46IGx1bWEoIzAwZmZmZik7CiAgbHVtYS1kaWZmZXJzLWZyb20tbHVtaW5hbmNlOiBsdW1hKCNmZjM2MDApOwogIGx1bWluYW5jZS13aGl0ZTogbHVtYSgjZmZmKTsKICBsdW1pbmFuY2UtYmxhY2s6IGx1bWEoIzAwMCk7CiAgbHVtaW5hbmNlLWJsYWNrLWFscGhhOiBsdW1hKHJnYmEoMCwwLDAsMC41KSk7CiAgbHVtaW5hbmNlLXJlZDogbHVtYSgjZmYwMDAwKTsKICBsdW1pbmFuY2UtZGlmZmVycy1mcm9tLWx1bWE6IGx1bWluYW5jZSgjZmYzNjAwKTsKICBjb250cmFzdC1maWx0ZXI6IGNvbnRyYXN0KDMwJSk7CiAgc2F0dXJhdGUtZmlsdGVyOiBzYXR1cmF0ZSg1JSk7CiAgY29udHJhc3Qtd2hpdGU6IGNvbnRyYXN0KCNmZmYpOwogIGNvbnRyYXN0LWJsYWNrOiBjb250cmFzdCgjMDAwKTsKICBjb250cmFzdC1yZWQ6IGNvbnRyYXN0KCNmZjAwMDApOwogIGNvbnRyYXN0LWdyZWVuOiBjb250cmFzdCgjMDBmZjAwKTsKICBjb250cmFzdC1ibHVlOiBjb250cmFzdCgjMDAwMGZmKTsKICBjb250cmFzdC15ZWxsb3c6IGNvbnRyYXN0KCNmZmZmMDApOwogIGNvbnRyYXN0LWN5YW46IGNvbnRyYXN0KCMwMGZmZmYpOwogIGNvbnRyYXN0LWxpZ2h0OiBjb250cmFzdCgjZmZmLCAjMTExMTExLCAjZWVlZWVlKTsKICBjb250cmFzdC1kYXJrOiBjb250cmFzdCgjMDAwLCAjMTExMTExLCAjZWVlZWVlKTsKICBjb250cmFzdC13cm9uZ29yZGVyOiBjb250cmFzdCgjZmZmLCAjZWVlZWVlLCAjMTExMTExLCAwLjUpOwogIGNvbnRyYXN0LWxpZ2h0LXRocmVzaDogY29udHJhc3QoI2ZmZiwgIzExMTExMSwgI2VlZWVlZSwgMC41KTsKICBjb250cmFzdC1kYXJrLXRocmVzaDogY29udHJhc3QoIzAwMCwgIzExMTExMSwgI2VlZWVlZSwgMC41KTsKICBjb250cmFzdC1oaWdoLXRocmVzaDogY29udHJhc3QoIzU1NSwgIzExMTExMSwgI2VlZWVlZSwgMC42KTsKICBjb250cmFzdC1sb3ctdGhyZXNoOiBjb250cmFzdCgjNTU1LCAjMTExMTExLCAjZWVlZWVlLCAwLjA5KTsKICBjb250cmFzdC1saWdodC10aHJlc2gtcGVyOiBjb250cmFzdCgjZmZmLCAjMTExMTExLCAjZWVlZWVlLCA1MCUpOwogIGNvbnRyYXN0LWRhcmstdGhyZXNoLXBlcjogY29udHJhc3QoIzAwMCwgIzExMTExMSwgI2VlZWVlZSwgNTAlKTsKICBjb250cmFzdC1oaWdoLXRocmVzaC1wZXI6IGNvbnRyYXN0KCM1NTUsICMxMTExMTEsICNlZWVlZWUsIDYwJSk7CiAgY29udHJhc3QtbG93LXRocmVzaC1wZXI6IGNvbnRyYXN0KCM1NTUsICMxMTExMTEsICNlZWVlZWUsIDklKTsKICByZXBsYWNlOiByZXBsYWNlKCJIZWxsbywgTWFycy4iLCAiTWFyc1wuIiwgIldvcmxkISIpOwogIHJlcGxhY2UtY2FwdHVyZWQ6IHJlcGxhY2UoIlRoaXMgaXMgYSBzdHJpbmcuIiwgIihzdHJpbmcpXC4kIiwgIm5ldyAkMS4iKTsKICByZXBsYWNlLXdpdGgtZmxhZ3M6IHJlcGxhY2UoIk9uZSArIG9uZSA9IDQiLCAib25lIiwgIjIiLCAiZ2kiKTsKICByZXBsYWNlLXNpbmdsZS1xdW90ZWQ6IHJlcGxhY2UoJ2Zvby0xJywgIjEiLCAiMiIpOwogIHJlcGxhY2UtZXNjYXBlZC1zdHJpbmc6IHJlcGxhY2UofiJiYXItMSIsICIxIiwgIjIiKTsKICByZXBsYWNlLWtleXdvcmQ6IHJlcGxhY2UoYmF6LTEsICIxIiwgIjIiKTsKICByZXBsYWNlLXdpdGgtY29sb3I6IHJlcGxhY2UoIjAwNyIsICIwIiwgIzEzNSwgZyk7CiAgcmVwbGFjZS13aXRoLW51bWJlcjogcmVwbGFjZSgiMDA3IiwgIjAiLCAyZW0pOwogIGZvcm1hdDogJSgicmdiKCVkLCAlZCwgJWQpIiwgQHIsIDEyOCwgNjQpOwogIGZvcm1hdC1zdHJpbmc6ICUoImhlbGxvICVzIiwgIndvcmxkIik7CiAgZm9ybWF0LW11bHRpcGxlOiAlKCJoZWxsbyAlcyAlZCIsICJlYXJ0aCIsIDIpOwogIGZvcm1hdC11cmwtZW5jb2RlOiAlKCJyZWQgaXMgJUEiLCAjZmYwMDAwKTsKICBmb3JtYXQtc2luZ2xlLXF1b3RlZDogJSgnaGVsbG8gJXMnLCAic2luZ2xlIHdvcmxkIik7CiAgZm9ybWF0LWVzY2FwZWQtc3RyaW5nOiAlKH4iaGVsbG8gJXMiLCAiZXNjYXBlZCB3b3JsZCIpOwogIGZvcm1hdC1jb2xvci1hcy1zdHJpbmc6ICUoIiVzIiwgIzEyMyk7CiAgZm9ybWF0LW51bWJlci1hcy1zdHJpbmc6ICUoIiVzIiwgNHB4KTsKICBlZm9ybWF0OiBlKCUoInJnYiglZCwgJWQsICVkKSIsIEByLCAxMjgsIDY0KSk7CgogIHVuaXRsZXNzOiB1bml0KDEycHgpOwogIHVuaXQ6IHVuaXQoKDEzcHggKyAxcHgpLCBlbSk7CiAgdW5pdHBlcmNlbnRhZ2U6IHVuaXQoMTAwLCAlKTsKCiAgZ2V0LXVuaXQ6IGdldC11bml0KDEwcHgpOwogIGdldC11bml0LWVtcHR5OiBnZXQtdW5pdCgxMCk7CgogIGh1ZTogaHVlKGhzbCg5OCwgMTIlLCA5NSUpKTsKICBzYXR1cmF0aW9uOiBzYXR1cmF0aW9uKGhzbCg5OCwgMTIlLCA5NSUpKTsKICBsaWdodG5lc3M6IGxpZ2h0bmVzcyhoc2woOTgsIDEyJSwgOTUlKSk7CiAgaHN2aHVlOiBoc3ZodWUoaHN2KDk4LCAxMiUsIDk1JSkpOwogIGhzdnNhdHVyYXRpb246IGhzdnNhdHVyYXRpb24oaHN2KDk4LCAxMiUsIDk1JSkpOwogIGhzdnZhbHVlOiBoc3Z2YWx1ZShoc3YoOTgsIDEyJSwgOTUlKSk7CiAgcmVkOiByZWQoI2YwMCk7CiAgZ3JlZW46IGdyZWVuKCMwZjApOwogIGJsdWU6IGJsdWUoIzAwZik7CiAgcm91bmRlZDogcm91bmQoKEByLzMpKTsKICByb3VuZGVkLXR3bzogcm91bmQoKEByLzMpLCAyKTsKICByb3VuZGVkcHg6IHJvdW5kKCgxMHB4IC8gMykpOwogIHJvdW5kZWRweC10aHJlZTogcm91bmQoKDEwcHggLyAzKSwgMyk7CiAgcm91bmRlZC1wZXJjZW50YWdlOiByb3VuZCgxMC4yJSk7CiAgY2VpbDogY2VpbCgxMC4xcHgpOwogIGZsb29yOiBmbG9vcigxMi45cHgpOwogIHNxcnQ6IHNxcnQoMjVweCk7CiAgcGk6IHBpKCk7CiAgbW9kOiBtb2QoMTNtLCAxMWNtKTsgLy8gY291bGQgdGFrZSBpbnRvIGFjY291bnQgdW5pdHMsIGRvZXNuJ3QgYXQgdGhlIG1vbWVudAogIGFiczogYWJzKC00JSk7CiAgdGFuOiB0YW4oNDJkZWcpOwogIHNpbjogc2luKDEwZGVnKTsKICBjb3M6IGNvcygxMik7CiAgYXRhbjogYXRhbih0YW4oMC4xcmFkKSk7CiAgYXRhbjogY29udmVydChhY29zKGNvcygzNGRlZykpLCBkZWcpOwogIGF0YW46IGNvbnZlcnQoYWNvcyhjb3MoNTBncmFkKSksIGRlZyk7CiAgcG93OiBwb3coOHB4LCAyKTsKICBwb3c6IHBvdyg0LCAzKTsKICBwb3c6IHBvdygzLCAzZW0pOwogIG1pbjogbWluKDApOwogIG1pbjogbWluKDYsIDUpOwogIG1pbjogbWluKDFwdCwgM3B0KTsKICBtaW46IG1pbigxY20sIDNtbSk7CiAgbWF4OiBtYXgoMSwgMyk7CiAgbWF4OiBtYXgoM2VtLCAxZW0sIDJlbSwgNWVtKTsKICBwZXJjZW50YWdlOiBwZXJjZW50YWdlKCgxMHB4IC8gNTApKTsKICBjb2xvci1xdW90ZWQtZGlnaXQ6IGNvbG9yKCIjZGRhMGRkIik7CiAgY29sb3ItcXVvdGVkLWtleXdvcmQ6IGNvbG9yKCJwbHVtIik7CiAgY29sb3ItY29sb3I6IGNvbG9yKCNkZGEwZGQpOwogIGNvbG9yLWtleXdvcmQ6IGNvbG9yKHBsdW0pOwogIHRpbnQ6IHRpbnQoIzc3Nzc3NywgMTMpOwogIHRpbnQtZnVsbDogdGludCgjNzc3Nzc3LCAxMDApOwogIHRpbnQtcGVyY2VudDogdGludCgjNzc3Nzc3LCAxMyUpOwogIHRpbnQtbmVnYXRpdmU6IHRpbnQoIzc3Nzc3NywgLTEzJSk7CiAgc2hhZGU6IHNoYWRlKCM3Nzc3NzcsIDEzKTsKICBzaGFkZS1mdWxsOiBzaGFkZSgjNzc3Nzc3LCAxMDApOwogIHNoYWRlLXBlcmNlbnQ6IHNoYWRlKCM3Nzc3NzcsIDEzJSk7CiAgc2hhZGUtbmVnYXRpdmU6IHNoYWRlKCM3Nzc3NzcsIC0xMyUpOwoKICBmYWRlLW91dDogZmFkZW91dChyZWQsIDUlKTsgLy8gc3VwcG9ydCBmYWRlT3V0IGFuZCBmYWRlb3V0CiAgZmFkZS1pbjogZmFkZWluKGZhZGVvdXQocmVkLCAxMCUpLCA1JSk7CiAgZmFkZS1vdXQtcmVsYXRpdmU6IGZhZGVvdXQocmVkLCA1JSxyZWxhdGl2ZSk7IAogIGZhZGUtaW4tcmVsYXRpdmU6IGZhZGVpbihmYWRlb3V0KHJlZCwgMTAlLCByZWxhdGl2ZSksIDUlLCByZWxhdGl2ZSk7CiAgZmFkZS1vdXQyOiAgZmFkZW91dChmYWRlb3V0KHJlZCwgNTAlKSwgNTAlKTsgCiAgZmFkZS1vdXQyLXJlbGF0aXZlOiBmYWRlb3V0KGZhZGVvdXQocmVkLCA1MCUsIHJlbGF0aXZlKSwgNTAlLCByZWxhdGl2ZSk7CiAgCiAgaHN2OiBoc3YoNSwgNTAlLCAzMCUpOwogIGhzdmE6IGhzdmEoMywgNTAlLCAzMCUsIDAuMik7CgogIG1peDogbWl4KCNmZjAwMDAsICNmZmZmMDAsIDgwKTsKICBtaXgtMDogbWl4KCNmZjAwMDAsICNmZmZmMDAsIDApOwogIG1peC0xMDA6IG1peCgjZmYwMDAwLCAjZmZmZjAwLCAxMDApOwogIG1peC13ZWlnaHRsZXNzOiBtaXgoI2ZmMDAwMCwgI2ZmZmYwMCk7CiAgbWl4dDogbWl4KCNmZjAwMDAsIHRyYW5zcGFyZW50KTsKCiAgLmlzLWEgewogICAgQHJ1bGVzOiB7CiAgICAgIGNvbG9yOiByZWQ7CiAgICB9OwogICAgcnVsZXNldDogaXNydWxlc2V0KEBydWxlcyk7CiAgICBjb2xvcjogaXNjb2xvcigjZGRkKTsKICAgIGNvbG9yMTogaXNjb2xvcihyZWQpOwogICAgY29sb3IyOiBpc2NvbG9yKHJnYigwLCAwLCAwKSk7CiAgICBjb2xvcjM6IGlzY29sb3IodHJhbnNwYXJlbnQpOwogICAga2V5d29yZDogaXNrZXl3b3JkKGhlbGxvKTsKICAgIG51bWJlcjogaXNudW1iZXIoMzIpOwogICAgc3RyaW5nOiBpc3N0cmluZygiaGVsbG8iKTsKICAgIHBpeGVsOiBpc3BpeGVsKDMycHgpOwogICAgcGVyY2VudDogaXNwZXJjZW50YWdlKDMyJSk7CiAgICBlbTogaXNlbSgzMmVtKTsKICAgIGNhdDogaXN1bml0KDMyY2F0LCBjYXQpOwogICAgbm8tdW5pdC1pcy1lbXB0eTogaXN1bml0KDMyLCAnJyk7CiAgICBjYXNlLWluc2Vuc2l0aXZlLTE6IGlzdW5pdCgzMkNBVCwgY2F0KTsKICAgIGNhc2UtaW5zZW5zaXRpdmUtMjogaXN1bml0KDMycHgsIFBYKTsKICB9Cn0KCiNhbHBoYSB7CiAgYWxwaGE6IGRhcmtlbihoc2xhKDI1LCA1MCUsIDUwJSwgMC42KSwgMTAlKTsKICBhbHBoYTI6IGFscGhhKHJnYmEoMywgNCwgNSwgMC41KSk7CiAgYWxwaGEzOiBhbHBoYSh0cmFuc3BhcmVudCk7Cn0KCiNibGVuZG1vZGVzIHsKICBtdWx0aXBseTogbXVsdGlwbHkoI2Y2MDAwMCwgI2Y2MDAwMCk7CiAgc2NyZWVuOiBzY3JlZW4oI2Y2MDAwMCwgIzAwMDBmNik7CiAgb3ZlcmxheTogb3ZlcmxheSgjZjYwMDAwLCAjMDAwMGY2KTsKICBzb2Z0bGlnaHQ6IHNvZnRsaWdodCgjZjYwMDAwLCAjZmZmZmZmKTsKICBoYXJkbGlnaHQ6IGhhcmRsaWdodCgjZjYwMDAwLCAjMDAwMGY2KTsKICBkaWZmZXJlbmNlOiBkaWZmZXJlbmNlKCNmNjAwMDAsICMwMDAwZjYpOwogIGV4Y2x1c2lvbjogZXhjbHVzaW9uKCNmNjAwMDAsICMwMDAwZjYpOwogIGF2ZXJhZ2U6IGF2ZXJhZ2UoI2Y2MDAwMCwgIzAwMDBmNik7CiAgbmVnYXRpb246IG5lZ2F0aW9uKCNmNjAwMDAsICMzMTMxMzEpOwp9CgojZXh0cmFjdC1hbmQtbGVuZ3RoIHsKICBAYW5vbjogQSBCIEMgMSAyIDM7CiAgZXh0cmFjdDogZXh0cmFjdChAYW5vbiwgNikgZXh0cmFjdChAYW5vbiwgNSkgZXh0cmFjdChAYW5vbiwgNCkgZXh0cmFjdChAYW5vbiwgMykgZXh0cmFjdChAYW5vbiwgMikgZXh0cmFjdChAYW5vbiwgMSk7CiAgbGVuZ3RoOiBsZW5ndGgoQGFub24pOwp9CgojcXVvdGVkLWZ1bmN0aW9ucy1pbi1taXhpbiB7CiAgLy8gUXVvdGVkIHR5cGUgbWF5IGhhdmUgc29tZSB3ZWlyZCBzaWRlLWVmZmVjdHMgd2hlbiB1c2VkIGluIG1peGlucyAoIzIzMDgpCiAgLm1peGluKCk7CiAgLm1peGluKCkgewogICAgcmVwbGFjZS1kb3VibGUtcXVvdGVkOiByZXBsYWNlKCdmb28tMScsICIxIiwgIjIiKTsKICAgIHJlcGxhY2Utc2luZ2xlLXF1b3RlZDogcmVwbGFjZSgnZm9vLTMnLCAiMyIsICI0Iik7CiAgICByZXBsYWNlLWVzY2FwZWQtc3RyaW5nOiByZXBsYWNlKH4iYmFyLTEiLCAiMSIsICIyIik7CiAgICByZXBsYWNlLWtleXdvcmQ6IHJlcGxhY2UoYmF6LTEsICIxIiwgIjIiKTsKICAgIHJlcGxhY2UtYW5vbnltb3VzOiByZXBsYWNlKGUoInF1eC0xIiksICIxIiwgIjIiKTsKICAgIGZvcm1hdC1kb3VibGUtcXVvdGVkOiAlKCJoZWxsbyAlcyIsICJ3b3JsZCIpOwogICAgZm9ybWF0LXNpbmdsZS1xdW90ZWQ6ICUoJ2hlbGxvICVzJywgInNpbmdsZSB3b3JsZCIpOwogICAgZm9ybWF0LWVzY2FwZWQtc3RyaW5nOiAlKH4iaGVsbG8gJXMiLCAiZXNjYXBlZCB3b3JsZCIpOwogICAgZm9ybWF0LWtleXdvcmQ6ICUoaGVsbG8pOwogICAgZm9ybWF0LWFub255bW91czogJShlKCJoZWxsbyAlcyIpLCAiYW5vbnltb3VzIHdvcmxkIik7CiAgfQp9CgojbGlzdC1kZXRhaWxzIHsKICBAbGlzdDoKICAgIGEgMSwgLy8gU29tZSBjb21tZW50CiAgICBiIDI7CgogIGxlbmd0aDogbGVuZ3RoKEBsaXN0KTsKICBvbmU6IGV4dHJhY3QoQGxpc3QsIDEpOwogIEB0d286IGV4dHJhY3QoQGxpc3QsIDIpOwogIHR3bzogQHR3bzsKICB0d28tbGVuZ3RoOiBsZW5ndGgoQHR3byk7CiAgdHdvLW9uZTogZXh0cmFjdChAdHdvLCAxKTsKICB0d28tdHdvOiBleHRyYWN0KEB0d28sIDIpOwp9CkBjb2xvcjE6ICNGRkY7LyogY29tbWVudDEgKi8KQGNvbG9yMjogI0ZGRi8qIGNvbW1lbnQyICovOwpodG1sIHsKICBjb2xvcjogbWl4KGJsdWUsIEBjb2xvcjEsIDUwJSk7CiAgY29sb3I6IG1peChibHVlLCBAY29sb3IyLCA1MCUpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/globalVars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/globalVars/extended.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInRoZS1ib3JkZXIiOiAiMXB4IiwKICAgICJiYXNlLWNvbG9yIjogIiMxMTEiLAogICAgInJlZCI6ICIjODQyMjEwIgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/globalVars/extended.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CiAgY29sb3I6IChAYmFzZS1jb2xvciAqIDMpOwogIGJvcmRlci1sZWZ0OiBAdGhlLWJvcmRlcjsKICBib3JkZXItcmlnaHQ6IChAdGhlLWJvcmRlciAqIDIpOwp9CiNmb290ZXIgewogIGNvbG9yOiAoQGJhc2UtY29sb3IgKyAjMDAzMzAwKTsKICBib3JkZXItY29sb3I6IEByZWQ7Cn0KQHJlZDogZGVzYXR1cmF0ZShyZWQsIDEwJSk7IC8vIGxlc3MgZmlsZSBvdmVycmlkZXMgcGFzc2VkIGluIGNvbG9yIDwtIG5vdGUgbGluZSBjb21tZW50IG9uIGxhc3QgbGluZSB0byBjaGVjayBpdCBpcyBva2F5]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/globalVars/simple.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm15LWNvbG9yIjogInJlZCIKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/globalVars/simple.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsYXNzIHsKICBjb2xvcjogQG15LWNvbG9yOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/ie-filters.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZhdDogMDsKQGNsb3VkaGVhZDogIiMwMDAwMDAiOwoKLm5hdiB7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eSA9IDIwKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PUBmYXQpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiMzMzMzMzMiLCBlbmRDb2xvcnN0cj1AY2xvdWRoZWFkLCBHcmFkaWVudFR5cGU9QGZhdCk7Cn0KLmV2YWxUZXN0KEBhcmcpIHsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PUBhcmcpOwp9Ci5ldmFsVGVzdDEgewogIC5ldmFsVGVzdCgzMCk7CiAgLmV2YWxUZXN0KDUpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import-inline.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoImltcG9ydC9pbXBvcnQtdGVzdC1jLmxlc3MiKTsvLyBpbXBvcnQgaW5saW5lIHNob3VsZCBub3QgZmxvYXQgYWJvdmUgdGhpcyAjMTk1NApAaW1wb3J0IChpbmxpbmUpIHVybCgiaW1wb3J0L2ltcG9ydC10ZXN0LWQuY3NzIikgKG1pbi13aWR0aDo2MDBweCk7CkBpbXBvcnQgKGlubGluZSwgY3NzKSB1cmwoImltcG9ydC9pbnZhbGlkLWNzcy5sZXNzIik7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import-interpolation.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG15X3RoZW1lOiAidGVzdCI7CgpAaW1wb3J0ICJpbXBvcnQvaW1wb3J0LUB7bXlfdGhlbWV9LWUubGVzcyI7CgpAaW1wb3J0ICJpbXBvcnQvaW1wb3J0LUB7aW59QHt0ZXJwb2xhdGlvbn0ubGVzcyI7CgpAaW1wb3J0ICJpbXBvcnQvaW50ZXJwb2xhdGlvbi12YXJzLmxlc3MiOwoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import-once.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0L2ltcG9ydC1vbmNlLXRlc3QtYyI7CkBpbXBvcnQgImltcG9ydC9pbXBvcnQtb25jZS10ZXN0LWMiOwpAaW1wb3J0ICJpbXBvcnQvaW1wb3J0LW9uY2UtdGVzdC1jLmxlc3MiOwpAaW1wb3J0ICJpbXBvcnQvZGVlcGVyL2ltcG9ydC1vbmNlLXRlc3QtYSI7CkBpbXBvcnQgKG11bHRpcGxlKSAiaW1wb3J0L2ltcG9ydC10ZXN0LWYubGVzcyI7CkBpbXBvcnQgKG11bHRpcGxlKSAiaW1wb3J0L2ltcG9ydC10ZXN0LWYubGVzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import-reference.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImltcG9ydC1vbmNlLmxlc3MiKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImNzcy0zLmxlc3MiKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoIm1lZGlhLmxlc3MiKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImltcG9ydC9pbXBvcnQtcmVmZXJlbmNlLmxlc3MiKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImltcG9ydC9jc3MtaW1wb3J0Lmxlc3MiKTsKCi5iIHsKICAueigpOwp9CgouenooKTsKCi52aXNpYmxlOmV4dGVuZCgueiBhbGwpIHsKICBleHRlbmQ6IHRlc3Q7Cn0KCi50ZXN0LW1lZGlhcS1pbXBvcnQgewogIC5taXhpbi13aXRoLW1lZGlhcSgzNDBweCk7Cn0KCi5jbGFzczpleHRlbmQoLmNsYXNzIGFsbCkgewp9Ci5taXhpbi13aXRoLW5lc3RlZC1zZWxlY3RvcnMoKTsKLm1peGluLXdpdGgtZGlyZWN0aXZlcyhzb21lLW5hbWUpOwoKLnByaW50LXJlZmVyZW5jZWQtaW1wb3J0LWlubGluZSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqIGNvbW1lbnQgYXQgdGhlIHRvcCoqLwpAaW1wb3J0IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcGVuK1NhbnMpOwoKQGltcG9ydCB1cmwoL2Fic29sdXRlL3NvbWV0aGluZy5jc3MpIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKG1heC13aWR0aDogNjAwcHgpOwoKQGltcG9ydCAob3B0aW9uYWwpICJmaWxlLWRvZXMtbm90LWV4aXN0LmRvZXMtbm90LWV4aXN0IjsKCkB2YXI6IDEwMHB4OwpAaW1wb3J0IHVybCgiLy9oYS5jb20vZmlsZS5jc3MiKSAobWluLXdpZHRoOkB2YXIpOwoKI2ltcG9ydC10ZXN0IHsKICAubWl4aW47CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAoQGEgKyAxMCUpOwp9CkBpbXBvcnQgImltcG9ydC9pbXBvcnQtdGVzdC1lIiBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMHB4KTsKCkBpbXBvcnQgdXJsKCJpbXBvcnQvaW1wb3J0LXRlc3QtYS5sZXNzIik7CgpAaW1wb3J0IChsZXNzLCBtdWx0aXBsZSkgImltcG9ydC9pbXBvcnQtdGVzdC1kLmNzcyIgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDFweCk7CgpAaW1wb3J0IChtdWx0aXBsZSkgImltcG9ydC9pbXBvcnQtdGVzdC1lIiBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMnB4KTsKCkBpbXBvcnQgKGxlc3MsIG11bHRpcGxlKSB1cmwoImltcG9ydC9pbXBvcnQtdGVzdC1kLmNzcyIpIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAzcHgpOwoKQG1lZGlhIHByaW50IHsKICBAaW1wb3J0IChtdWx0aXBsZSkgImltcG9ydC9pbXBvcnQtdGVzdC1lIjsKfQoKQGNoYXJzZXQgIlVURi04IjsgLy8gY2xpbWIgb24gdG9wICMyMTI2Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/css-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoInRlc3QuY3NzIik7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/deeper/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/deeper/deeper-2/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/deeper/deeper-2/url-import-2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmRlZXAtaW1wb3J0LXVybCB7CiAgY29sb3I6IHJlZDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/deeper/deeper-2/url-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoInVybC1pbXBvcnQtMi5sZXNzIik7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/deeper/import-once-test-a.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi4vaW1wb3J0LW9uY2UtdGVzdC1jIjs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/deeper/url-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoImRlZXBlci0yL3VybC1pbXBvcnQubGVzcyIpOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-and-relative-paths-test.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi4vY3NzL2JhY2tncm91bmQuY3NzIjsKQGltcG9ydCAiaW1wb3J0LXRlc3QtZC5jc3MiOwoKQGltcG9ydCAiaW1wb3J0cy9sb2dvIjsKQGltcG9ydCAiaW1wb3J0cy9mb250IjsKCi51bnF1b3RlZC1yZWxhdGl2ZS1wYXRoLWJnKCkgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2RhdGEvaW1hZ2UuanBnKTsKfQoucXVvdGVkLXJlbGF0aXZlLXBhdGgtYm9yZGVyLWltYWdlKCkgewogICAgYm9yZGVyLWltYWdlOiB1cmwoJy4uLy4uL2RhdGEvaW1hZ2UuanBnJyk7Cn0KCiNpbXBvcnRlZC1yZWxhdGl2ZS1wYXRoIHsKICAgIC51bnF1b3RlZC1yZWxhdGl2ZS1wYXRoLWJnOwogICAgLnF1b3RlZC1yZWxhdGl2ZS1wYXRoLWJvcmRlci1pbWFnZTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-charset-test.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIklTTy04ODU5LTEiOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-inline-invalid-css.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAoaW5saW5lKSAiaW52YWxpZC1jc3MubGVzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-interpolation.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAoaW5saW5lKSAiaW1wb3J0cy9sb2dvLmxlc3MiOwpAaW1wb3J0ICJpbXBvcnQtQHtpbn1Ae3RlcnBvbGF0aW9ufTIubGVzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-interpolation2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIHZhcjogdGVzdDsKfQoKQGluOiAicmVkZWZpbmVkLWRvZXMtbm90aGluZyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-once-test-c.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBjOiByZWQ7CgojaW1wb3J0IHsKICBjb2xvcjogQGM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-reference.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnogewogIGNvbG9yOiByZWQ7CiAgLmMgewogICAgY29sb3I6IGdyZWVuOwogIH0KfQoub25seS13aXRoLXZpc2libGUsCi56IHsKICBjb2xvcjogZ3JlZW47CiAgJjpob3ZlciB7CiAgICBjb2xvcjogZ3JlZW47CiAgfQogICYgewogICAgY29sb3I6IGdyZWVuOwogIH0KICAmICsgJiB7CiAgICBjb2xvcjogZ3JlZW47CiAgICAuc3ViIHsKICAgICAgY29sb3I6IGdyZWVuOwogICAgfQogIH0KfQoKJiB7CiAgLmhpZGRlbiB7CiAgICBoaWRkZW46IHRydWU7CiAgfQp9CgpAbWVkaWEgdHYgewogIC5oaWRkZW4gewogICAgaGlkZGVuOiB0cnVlOwogIH0KfQoKLyogY29tbWVudCBpcyBub3Qgb3V0cHV0ICovCgouenogewogIC55IHsKICAgIHB1bGxlZC1pbjogeWVzIC8qIGlubGluZSBjb21tZW50IHN1cnZpdmVzICovOwogIH0KICAvKiBjb21tZW50IHB1bGxlZCBpbiAqLwp9CkBtYXgtc2l6ZTogNDUwcHg7Ci5taXhpbi13aXRoLW1lZGlhcShAbnVtKSB7CiAgY29sb3I6IGdyZWVuOwogIHRlc3Q6IEBudW07CiAgQG1lZGlhIChtYXgtc2l6ZTogQG1heC1zaXplKSB7CiAgICBjb2xvcjogcmVkOwogIH0KfQovL2h0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvaXNzdWVzLzIzNTkKQHN1cHBvcnRzIChzb21ldGhpbmc6IGVsc2UpIHsKICAuY2xhc3MgewogICAgc29tZXRoaW5nOiBlbHNlOwogIH0KICAubmVzdGVkVG9vIHsKICAgIC5jbGFzcyB7CiAgICAgIHNvbWV0aGluZzogZWxzZTsKICAgIH0KICB9CiAgLmludmlzaWJsZSB7CiAgICBzb21ldGhpbmc6IGVsc2U7CiAgfQp9Ci8vaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMTk3OQoubWl4aW4td2l0aC1uZXN0ZWQtc2VsZWN0b3JzKCkgewogIC50ZXN0IHsKICAgIGNvbG9yOiByZWQ7CiAgICAmOmZpcnN0LWNoaWxkIHsKICAgICAgY29sb3I6IGJsdWU7CiAgICB9CiAgfQp9Ci5taXhpbi13aXRoLWRpcmVjdGl2ZXMoQGtleWZyYW1lTmFtZSkgewogIEBrZXlmcmFtZXMgQGtleWZyYW1lTmFtZSB7CiAgICBAcnVsZXMxKCk7CiAgfQogIEBzdXBwb3J0cyAoYW5pbWF0aW9uLW5hbWU6IHRlc3QpIHsKICAgIEBrZXlmcmFtZXMgQGtleWZyYW1lTmFtZSB7CiAgICAgIEBydWxlczIoKTsKICAgIH0KICAgIC5zZWxlY3RvciB7CiAgICAgIGNvbG9yOiByZWQ7CiAgICB9CiAgfQogIEBydWxlczE6IHtwcm9wZXJ0eTogdmFsdWU7fTsKICBAcnVsZXMyOiB7cHJvcGVydHk6IHZhbHVlO307Cn0KCkBpbXBvcnQgKGlubGluZSwgbXVsdGlwbGUpICJpbnZhbGlkLWNzcy5sZXNzIjsKQGltcG9ydCAiaW1wb3J0LWlubGluZS1pbnZhbGlkLWNzcy5sZXNzIjsKLnByaW50LXJlZmVyZW5jZWQtaW1wb3J0LWlubGluZSgpIHsKICBkaXYgewogICAgQGltcG9ydCAoaW5saW5lLCBtdWx0aXBsZSkgImludmFsaWQtY3NzLmxlc3MiOwogIH0KICBAaW1wb3J0IChpbmxpbmUsIG11bHRpcGxlKSAiaW52YWxpZC1jc3MubGVzcyI7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-test-a.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0LXRlc3QtYi5sZXNzIjsKQGltcG9ydCB1cmwoaW1wb3J0LXRlc3QtZi5sZXNzKTsKQGltcG9ydCB1cmwoImRlZXBlci91cmwtaW1wb3J0Lmxlc3MiKTsKQGE6IDIwJTsKQGltcG9ydCAidXJscy5sZXNzIjs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-test-b.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0LXRlc3QtYyI7CgpAYjogMTAwJTsKCi5taXhpbiB7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbG9yOiBAYzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-test-c.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBjOiByZWQ7CgojaW1wb3J0IHsKICBjb2xvcjogQGM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-test-d.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2NzcyB7IGNvbG9yOiB5ZWxsb3c7IH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-test-e.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CmJvZHkgeyB3aWR0aDogMTAwJSB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/import-test-f.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0LXRlc3QtZSI7CgoudGVzdC1mIHsKICBoZWlnaHQ6IDEwcHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/imports/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/imports/font.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgICBmb250LWZhbWlseTogeGVjcmV0OwogICAgc3JjOiB1cmwoJy4uL2Fzc2V0cy94ZWNyZXQudHRmJyk7Cn0KCiNzZWNyZXQgewogICAgZm9udC1mYW1pbHk6IHhlY3JldCwgc2Fucy1zZXJpZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/imports/logo.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2xvZ28gewogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4OwogIGJhY2tncm91bmQ6IHVybCgnLi4vYXNzZXRzL2xvZ28ucG5nJyk7CiAgYmFja2dyb3VuZDogdXJsKCIjaW5saW5lLXN2ZyIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/interpolation-vars.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGluOiAiaW4iOwpAdGVycG9sYXRpb246ICJ0ZXJwb2xhdGlvbiI7CgovLyBzaG91bGQgYmUgaWdub3JlZCBiZWNhdXNlIGl0cyBhbHJlYWR5IGltcG9ydGVkCi8vIGFuZCBpdCB1c2VzIGEgdmFyaWFibGUgZnJvbSB0aGUgcGFyZW50IHNjb3BlCkBpbXBvcnQgImltcG9ydC1Ae215X3RoZW1lfS1lLmxlc3MiOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/invalid-css.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGhpcyBpc24ndCB2ZXJ5IHZhbGlkIENTUy4=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/import/urls.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gZW1wdHkgZmlsZSBzaG93aW5nIHRoYXQgaXQgbG9hZHMgZnJvbSB0aGUgcmVsYXRpdmUgcGF0aCBmaXJzdAo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/include-path-string/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/include-path-string/include-path-string.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGF0YS11cmkgewogIHByb3BlcnR5OiBkYXRhLXVyaSgnaW1hZ2Uuc3ZnJyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/include-path/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/include-path/include-path.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0LXRlc3QtZSI7CgpkYXRhLXVyaSB7CiAgcHJvcGVydHk6IGRhdGEtdXJpKCdpbWFnZS5zdmcnKTsKfQppbWFnZS1zaXplIHsKICBwcm9wZXJ0eTogaW1hZ2Utc2l6ZSgnaW1hZ2Uuc3ZnJyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/javascript.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV2YWwgewogICAganM6IGA0MmA7CiAgICBqczogYDEgKyAxYDsKICAgIGpzOiBgImhlbGxvIHdvcmxkImA7CiAgICBqczogYFsxLCAyLCAzXWA7CiAgICB0aXRsZTogYHR5cGVvZiBwcm9jZXNzLnRpdGxlYDsKICAgIHRlcm5hcnk6IGAoMSArIDEgPT0gMiA/IHRydWUgOiBmYWxzZSlgOwogICAgbXVsdGlsaW5lOiBgKGZ1bmN0aW9uKCl7dmFyIHggPSAxICsgMTsKICAgICAgICAgICByZXR1cm4geH0pKClgOwp9Ci5zY29wZSB7CiAgICBAZm9vOiA0MjsKICAgIHZhcjogYHBhcnNlSW50KHRoaXMuZm9vLnRvSlMoKSlgOwogICAgZXNjYXBlZDogfmAyICsgNSArICdweCdgOwp9Ci52YXJzIHsKICAgIEB2YXI6IGA0ICsgNGA7CiAgICB3aWR0aDogQHZhcjsKfQouZXNjYXBlLWludGVycG9sIHsKICAgIEB3b3JsZDogIndvcmxkIjsKICAgIHdpZHRoOiB+YCJoZWxsbyIgKyAiICIgKyBAe3dvcmxkfWA7Cn0KLmFycmF5cyB7CiAgICBAYXJ5OiAgMSwgMiwgMzsKICAgIEBhcnkyOiAxICAyICAzOwogICAgYXJ5OiBgQHthcnl9LmpvaW4oJywgJylgOwogICAgYXJ5MTogYEB7YXJ5Mn0uam9pbignLCAnKWA7Cn0KLnRyYW5zaXRpb25zKC4uLikgewogIEBhcmc6IH5gIkB7YXJndW1lbnRzfSIucmVwbGFjZSgvW1xbXF1dKi9nLCAnJylgOwogIDE6IEBhcmc7ICAgICAgICAgICAgICAvLyByb3VuZGVkIHRvIGludGVnZXJzCiAgMjogfmAiQHthcmd1bWVudHN9ImA7IC8vIHJvdW5kZWQgdG8gaW50ZWdlcnMKICAzOiBAYXJndW1lbnRzOyAgICAgICAgLy8gT0sKfQoudGVzdC10cmFuIHsKICAudHJhbnNpdGlvbnMob3BhY2l0eSAwLjNzIGVhc2UtaW4gMC4zcywgbWF4LWhlaWdodCAwLjZzIGxpbmVhciwgbWFyZ2luLWJvdHRvbSAwLjRzIGxpbmVhcjspOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/lazy-eval.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhcjogQGE7CkBhOiAxMDAlOwoKLmxhenktZXZhbCB7CiAgd2lkdGg6IEB2YXI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIEZvciBub3csIHZhcmlhYmxlcyBjYW4ndCBiZSBkZWNsYXJlZCBpbnNpZGUgQG1lZGlhIGJsb2Nrcy4KCkB2YXI6IDQyOwoKQG1lZGlhIHByaW50IHsKICAgIC5jbGFzcyB7CiAgICAgICAgY29sb3I6IGJsdWU7CiAgICAgICAgLnN1YiB7CiAgICAgICAgICAgIHdpZHRoOiBAdmFyOwogICAgICAgIH0KICAgIH0KICAgIC50b3AsIGhlYWRlciA+IGgxIHsKICAgICAgICBjb2xvcjogKCMyMjIgKiAyKTsKICAgIH0KfQoKQG1lZGlhIHNjcmVlbiB7CiAgICBAYmFzZTogODsKICAgIGJvZHkgeyBtYXgtd2lkdGg6IChAYmFzZSAqIDYwKTsgfQp9CgpAcmF0aW9fbGFyZ2U6IDE2OwpAcmF0aW9fc21hbGw6IDk7CgpAbWVkaWEgYWxsIGFuZCAoZGV2aWNlLWFzcGVjdC1yYXRpbzogQHJhdGlvX2xhcmdlIC8gQHJhdGlvX3NtYWxsKSB7CiAgIGJvZHkgeyBtYXgtd2lkdGg6IDgwMHB4OyB9Cn0KCkBtZWRpYSBhbGwgYW5kIChvcmllbnRhdGlvbjpwb3J0cmFpdCkgewogICAgYXNpZGUgeyBmbG9hdDogbm9uZTsgfQp9CgpAbWVkaWEgaGFuZGhlbGQgYW5kIChtaW4td2lkdGg6IEB2YXIpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDIwZW0pIHsKICAgIGJvZHkgewogICAgICAgIG1heC13aWR0aDogNDgwcHg7CiAgICB9Cn0KCmJvZHkgewogICAgQG1lZGlhIHByaW50IHsKICAgICAgICBwYWRkaW5nOiAyMHB4OwoKICAgICAgICBoZWFkZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG9yaWVudGF0aW9uOmxhbmRzY2FwZSkgewogICAgICAgICAgICBtYXJnaW4tbGVmdDogMjBweDsKICAgICAgICB9CiAgICB9Cn0KCkBtZWRpYSBzY3JlZW4gewogIC5zaWRlYmFyIHsKICAgIHdpZHRoOiAzMDBweDsKICAgIEBtZWRpYSAob3JpZW50YXRpb246IGxhbmRzY2FwZSkgewogICAgICB3aWR0aDogNTAwcHg7CiAgICB9CiAgfQp9CgpAbWVkaWEgYSB7CiAgLmZpcnN0IHsKICAgIEBtZWRpYSBiIHsKICAgICAgLnNlY29uZCB7CiAgICAgICAgLnRoaXJkIHsKICAgICAgICAgIHdpZHRoOiAzMDBweDsKICAgICAgICAgIEBtZWRpYSBjIHsKICAgICAgICAgICAgd2lkdGg6IDUwMHB4OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAuZm91cnRoIHsKICAgICAgICAgIHdpZHRoOiAzOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQoKYm9keSB7CiAgICBAbWVkaWEgYSwgYiBhbmQgYyB7CiAgICAgICAgd2lkdGg6IDk1JTsKCiAgICAgICAgQG1lZGlhIHgsIHkgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB9CiAgICB9Cn0KCi5tZWRpYU1peGluKEBmYWxsYmFjazogMjAwcHgpIHsKICAgIGJhY2tncm91bmQ6IGJsYWNrOwoKICAgIEBtZWRpYSBoYW5kaGVsZCB7CiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CgogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiBAZmFsbGJhY2spIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmVkOwogICAgICAgIH0KICAgIH0KfQoKLmEgewogIC5tZWRpYU1peGluKDEwMHB4KTsKfQoKLmIgewogIC5tZWRpYU1peGluKCk7Cn0KQHNtYXJ0cGhvbmU6IH4ib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIwMHB4KSI7CkBtZWRpYSBAc21hcnRwaG9uZSB7CiAgYm9keSB7CiAgICB3aWR0aDogNDgwcHg7CiAgfQp9CgpAbWVkaWEgcHJpbnQgewogIEBwYWdlIDpsZWZ0IHsKICAgIG1hcmdpbjogMC41Y207CiAgfQogIEBwYWdlIDpyaWdodCB7CiAgICBtYXJnaW46IDAuNWNtOwogIH0KICBAcGFnZSBUZXN0OmZpcnN0IHsKICAgIG1hcmdpbjogMWNtOwogIH0KICBAcGFnZSA6Zmlyc3QgewogICAgc2l6ZTogOC41aW4gMTFpbjsKICAgIEB0b3AtbGVmdCB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQHRvcC1sZWZ0LWNvcm5lciB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQHRvcC1jZW50ZXIgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEB0b3AtcmlnaHQgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEB0b3AtcmlnaHQtY29ybmVyIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAYm90dG9tLWxlZnQgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBib3R0b20tbGVmdC1jb3JuZXIgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBib3R0b20tY2VudGVyIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAYm90dG9tLXJpZ2h0IHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAYm90dG9tLXJpZ2h0LWNvcm5lciB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGxlZnQtdG9wIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAbGVmdC1taWRkbGUgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBsZWZ0LWJvdHRvbSB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQHJpZ2h0LXRvcCB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQHJpZ2h0LW1pZGRsZSB7CiAgICAgIGNvbnRlbnQ6ICJQYWdlICIgY291bnRlcihwYWdlKTsKICAgIH0KICAgIEByaWdodC1ib3R0b20gewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICB9Cn0KCkBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLzEpLCAobWluLXJlc29sdXRpb246IDJkcHB4KSwgKG1pbi1yZXNvbHV0aW9uOiAxMjhkcGNtKSB7CiAgLmIgewogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQoKLmJnKCkgewogICAgYmFja2dyb3VuZDogcmVkOwoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkgewogICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOwogICAgfQp9Cgpib2R5IHsKICAgIC5iZygpOwp9CgpAYnBNZWRpdW06IDEwMDBweDsKQG1lZGlhIChtYXgtd2lkdGg6IEBicE1lZGl1bSkgewogICAgYm9keSB7CiAgICAgICAgLmJnKCk7CiAgICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkgewogIC8qIGEgY29tbWVudCAqLwoKICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIGJvZHkgeyBmb250LXNpemU6IDExcHg7IH0KICB9Cn0KCi5uYXYtanVzdGlmaWVkIHsKICBAbWVkaWEgKG1pbi13aWR0aDogNDgwcHgpIHsKICAgID4gbGkgewogICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgfQogIH0KfQoKLm1lbnUKewogIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogICAgLm5hdi1qdXN0aWZpZWQoKTsKICB9Cn0KQGFsbDogfiJhbGwiOwpAdHY6IH4idHYiOwpAbWVkaWEgQGFsbCBhbmQgQHR2IHsKICAuYWxsLWFuZC10di12YXJpYWJsZXMgewogICAgdmFyOiBhbGwtYW5kLXR2OwogIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/merge.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZpcnN0LXRyYW5zZm9ybSgpIHsKICB0cmFuc2Zvcm0rOiByb3RhdGUoOTBkZWcpLCBza2V3KDMwZGVnKTsKfQouc2Vjb25kLXRyYW5zZm9ybSgpIHsKICB0cmFuc2Zvcm0rOiBzY2FsZSgyLDQpOwp9Ci50aGlyZC10cmFuc2Zvcm0oKSB7CiAgdHJhbnNmb3JtOiBzY2FsZVgoNDVkZWcpOwp9Ci5mb3VydGgtdHJhbnNmb3JtKCkgewogIHRyYW5zZm9ybSs6IHNjYWxlWCg0NWRlZyk7Cn0KLmZpZnRoLXRyYW5zZm9ybSgpIHsKICB0cmFuc2Zvcm0rOiBzY2FsZSgyLDQpICFpbXBvcnRhbnQ7Cn0KLmZpcnN0LWJhY2tncm91bmQoKSB7CiAgYmFja2dyb3VuZCs6IHVybChkYXRhOi8vaW1nMS5wbmcpOwp9Ci5zZWNvbmQtYmFja2dyb3VuZCgpIHsKICBiYWNrZ3JvdW5kKzogdXJsKGRhdGE6Ly9pbWcyLnBuZyk7Cn0KCi50ZXN0MSB7CiAgLy8gQ2FuIG1lcmdlIHZhbHVlcwogIC5maXJzdC10cmFuc2Zvcm0oKTsKICAuc2Vjb25kLXRyYW5zZm9ybSgpOwp9Ci50ZXN0MiB7CiAgLy8gV29udCBtZXJnZSB2YWx1ZXMgd2l0aG91dCArOiBtZXJnZSBkaXJlY3RpdmUsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGNzcwogIC5maXJzdC10cmFuc2Zvcm0oKTsKICAudGhpcmQtdHJhbnNmb3JtKCk7Cn0KLnRlc3QzIHsKICAvLyBXb250IG1lcmdlIHZhbHVlcyBmcm9tIHR3byBzb3VyY2VzIHdpdGggZGlmZmVyZW50IHByb3BlcnRpZXMKICAuZm91cnRoLXRyYW5zZm9ybSgpOwogIC5maXJzdC1iYWNrZ3JvdW5kKCk7Cn0KLnRlc3Q0IHsKICAvLyBXb250IG1lcmdlIHZhbHVlcyBmcm9tIHNvdXJjZXMgdGhhdCBtZXJrZWQgYXMgIWltcG9ydGFudCwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggY3NzCiAgLmZpcnN0LXRyYW5zZm9ybSgpOwogIC5maWZ0aC10cmFuc2Zvcm0oKTsKfQoudGVzdDUgewogIC8vIFdvbnQgbWVyZ2UgdmFsdWVzIGZyb20gbWl4aW5zIHRoYXQgbWVya2VkIGFzICFpbXBvcnRhbnQsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGNzcwogIC5maXJzdC10cmFuc2Zvcm0oKTsKICAuc2Vjb25kLXRyYW5zZm9ybSgpICFpbXBvcnRhbnQ7Cn0KLnRlc3Q2IHsKICAvLyBJZ25vcmVzICFtZXJnZSBpZiBubyBwZWVycyBmb3VuZAogIC5zZWNvbmQtdHJhbnNmb3JtKCk7Cn0KCi50ZXN0LWludGVybGVhdmVkIHsKICAgIHRyYW5zZm9ybSs6ICB0MTsKICAgIGJhY2tncm91bmQrOiBiMTsKICAgIHRyYW5zZm9ybSs6ICB0MjsKICAgIGJhY2tncm91bmQrOiBiMiwgYjM7CiAgICB0cmFuc2Zvcm0rOiAgdDM7Cn0KCi50ZXN0LXNwYWNlZCB7CiAgICB0cmFuc2Zvcm0rXzogIHQxOwogICAgYmFja2dyb3VuZCtfOiBiMTsKICAgIHRyYW5zZm9ybStfOiAgdDI7CiAgICBiYWNrZ3JvdW5kK186IGIyLCBiMzsKICAgIHRyYW5zZm9ybStfOiAgdDM7Cn0KCi50ZXN0LWludGVybGVhdmVkLXdpdGgtc3BhY2VkIHsKICAgIHRyYW5zZm9ybStfOiAgdDFzOwogICAgdHJhbnNmb3JtKzogICB0MjsKICAgIGJhY2tncm91bmQrOiAgYjE7CiAgICB0cmFuc2Zvcm0rXzogIHQzczsKICAgIHRyYW5zZm9ybSs6ICAgdDQgdDVzOwogICAgYmFja2dyb3VuZCtfOiBiMnMsIGIzOwogICAgdHJhbnNmb3JtK186ICB0NnM7CiAgICBiYWNrZ3JvdW5kKzogIGI0Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-args.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIChAYTogMXB4LCBAYjogNTAlKSB7CiAgd2lkdGg6IChAYSAqIDUpOwogIGhlaWdodDogKEBiIC0gMSUpOwp9CgoubWl4aW5hIChAc3R5bGUsIEB3aWR0aCwgQGNvbG9yOiBibGFjaykgewogICAgYm9yZGVyOiBAd2lkdGggQHN0eWxlIEBjb2xvcjsKfQoKLm1peGlueQooQGE6IDAsIEBiOiAwKSB7CiAgbWFyZ2luOiBAYTsKICBwYWRkaW5nOiBAYjsKfQoKLmhpZGRlbigpIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7IC8vIGFzZAp9CgojaGlkZGVuIHsKICAuaGlkZGVuOwp9CgojaGlkZGVuMSB7CiAgLmhpZGRlbigpOwp9CgoudHdvLWFyZ3MgewogIGNvbG9yOiBibHVlOwogIC5taXhpbigycHgsIDEwMCUpOwogIC5taXhpbmEoZG90dGVkLCAycHgpOwp9Cgoub25lLWFyZyB7CiAgLm1peGluKDNweCk7Cn0KCi5uby1wYXJlbnMgewogIC5taXhpbjsKfQoKLm5vLWFyZ3MgewogIC5taXhpbigpOwp9CgoudmFyLWFyZ3MgewogIEB2YXI6IDk7CiAgLm1peGluKEB2YXIsIChAdmFyICogMikpOwp9CgoubXVsdGktbWl4IHsKICAubWl4aW4oMnB4LCAzMCUpOwogIC5taXhpbnkoNCwgNSk7Cn0KCi5tYXhhKEBhcmcxOiAxMCwgQGFyZzI6ICNmMDApIHsKICBwYWRkaW5nOiAoQGFyZzEgKiAycHgpOwogIGNvbG9yOiBAYXJnMjsKfQoKYm9keSB7CiAgLm1heGEoMTUpOwp9CgpAZ2xvYjogNTsKLmdsb2JhbC1taXhpbihAYToyKSB7CiAgd2lkdGg6IChAZ2xvYiArIEBhKTsKfQoKLnNjb3BlLW1peCB7CiAgLmdsb2JhbC1taXhpbigzKTsKfQoKLm5lc3RlZC1ydWxlc2V0IChAd2lkdGg6IDIwMHB4KSB7CiAgICB3aWR0aDogQHdpZHRoOwogICAgLmNvbHVtbiB7IG1hcmdpbjogQHdpZHRoOyB9Cn0KLmNvbnRlbnQgewogICAgLm5lc3RlZC1ydWxlc2V0KDYwMHB4KTsKfQoKLy8KCi5zYW1lLXZhci1uYW1lMihAcmFkaXVzKSB7CiAgcmFkaXVzOiBAcmFkaXVzOwp9Ci5zYW1lLXZhci1uYW1lKEByYWRpdXMpIHsKICAuc2FtZS12YXItbmFtZTIoQHJhZGl1cyk7Cn0KI3NhbWUtdmFyLW5hbWUgewogIC5zYW1lLXZhci1uYW1lKDVweCk7Cn0KCi8vCgoudmFyLWluc2lkZSAoKSB7CiAgICBAdmFyOiAxMHB4OwogICAgd2lkdGg6IEB2YXI7Cn0KI3Zhci1pbnNpZGUgeyAudmFyLWluc2lkZTsgfQoKLm1peGluLWFyZ3VtZW50cyAoQHdpZHRoOiAwcHgsIC4uLikgewogICAgYm9yZGVyOiBAYXJndW1lbnRzOwogICAgd2lkdGg6IEB3aWR0aDsKfQoKLmFyZ3VtZW50cyB7CiAgICAubWl4aW4tYXJndW1lbnRzKDFweCwgc29saWQsIGJsYWNrKTsKfQouYXJndW1lbnRzMiB7CiAgICAubWl4aW4tYXJndW1lbnRzKCk7Cn0KLmFyZ3VtZW50czMgewogICAgLm1peGluLWFyZ3VtZW50czsKfQoKLm1peGluLWFyZ3VtZW50czIgKEB3aWR0aCwgQHJlc3QuLi4pIHsKICAgIGJvcmRlcjogQGFyZ3VtZW50czsKICAgIHJlc3Q6IEByZXN0OwogICAgd2lkdGg6IEB3aWR0aDsKfQouYXJndW1lbnRzNCB7CiAgICAubWl4aW4tYXJndW1lbnRzMigwLCAxLCAyLCAzLCA0KTsKfQoKLy8gRWRnZSBjYXNlcwoKLmVkZ2UtY2FzZSB7CiAgICAubWl4aW4tYXJndW1lbnRzKCJ7Iik7Cn0KCi8vIERpdmlzaW9uIHZzLiBMaXRlcmFsIFNsYXNoCi5ib3JkZXItcmFkaXVzKEByOiAycHgvNXB4KSB7CiAgYm9yZGVyLXJhZGl1czogQHI7Cn0KLnNsYXNoLXZzLW1hdGggewogIC5ib3JkZXItcmFkaXVzKCk7CiAgLmJvcmRlci1yYWRpdXMoNXB4LzEwcHgpOwogIC5ib3JkZXItcmFkaXVzKCgzcHggKiAyKSk7Cn0KLy8gc2VtaS1jb2xvbiB2cyBjb21tYSBmb3IgZGVsaW1pdGluZwoKLm1peGluLXRha2VzLW9uZShAYSkgewogICAgb25lOiBAYTsKfQoKLm1peGluLXRha2VzLXR3byhAYTsgQGIpIHsKICAgIG9uZTogQGE7CiAgICB0d286IEBiOwp9CgouY29tbWEtdnMtc2VtaS1jb2xvbiB7CiAgICAubWl4aW4tdGFrZXMtdHdvKEBhIDogYTsgQGIgOiBiLCBjKTsKICAgIC5taXhpbi10YWtlcy10d28oQGEgOiBkLCBlOyBAYiA6IGYpOwogICAgLm1peGluLXRha2VzLW9uZShAYTogZyk7CiAgICAubWl4aW4tdGFrZXMtb25lKEBhIDogaDspOwogICAgLm1peGluLXRha2VzLW9uZShpKTsKICAgIC5taXhpbi10YWtlcy1vbmUoajspOwogICAgLm1peGluLXRha2VzLXR3byhrLCBsKTsKICAgIC5taXhpbi10YWtlcy1vbmUobSwgbjspOwogICAgLm1peGluLXRha2VzLXR3byhvLCBwOyBxKTsKICAgIC5taXhpbi10YWtlcy10d28ociwgczsgdDspOwp9CgoubWl4aW4tY29uZmxpY3QoQGE6ZGVmQSwgQGI6ZGVmQiwgQGM6ZGVmQykgewogIHRocmVlOiBAYSwgQGIsIEBjOwp9CgoubWl4aW4tY29uZmxpY3QoQGE6ZGVmQSwgQGI6ZGVmQiwgQGM6ZGVmQywgQGQ6ZGVmRCkgewogIGZvdXI6IEBhLCBAYiwgQGMsIEBkOwp9CgojbmFtZWQtY29uZmxpY3QgewogIC5taXhpbi1jb25mbGljdCgxMSwgMTIsIDEzLCBAYTphKTsKICAubWl4aW4tY29uZmxpY3QoQGE6YSwgMjEsIDIyLCAyMyk7Cn0KQGE6IDNweDsKLm1peGluLWRlZmF1bHQtYXJnKEBhOiAxcHgsIEBiOiBAYSwgQGM6IEBiKSB7CiAgZGVmYXVsdHM6IDFweCAxcHggMXB4OwogIGRlZmF1bHRzOiAycHggMnB4IDJweDsKfQoKLnRlc3QtbWl4aW4tZGVmYXVsdC1hcmcgewogIC5taXhpbi1kZWZhdWx0LWFyZygpOwogIC5taXhpbi1kZWZhdWx0LWFyZygycHgpOwp9CgoubWl4aW4tY29tbWEtZGVmYXVsdDEoQGNvbG9yOyBAcGFkZGluZzsgQG1hcmdpbjogMiwgMiwgMiwgMikgewogIG1hcmdpbjogQG1hcmdpbjsKfQouc2VsZWN0b3IgewogIC5taXhpbi1jb21tYS1kZWZhdWx0MSgjMzNhY2ZlOyA0KTsKfQoubWl4aW4tY29tbWEtZGVmYXVsdDIoQG1hcmdpbjogMiwgMiwgMiwgMjspIHsKICBtYXJnaW46IEBtYXJnaW47Cn0KLnNlbGVjdG9yMiB7CiAgLm1peGluLWNvbW1hLWRlZmF1bHQyKCk7Cn0KLm1peGluLWNvbW1hLWRlZmF1bHQzKEBtYXJnaW46IDIsIDIsIDIsIDIpIHsKICBtYXJnaW46IEBtYXJnaW47Cn0KLnNlbGVjdG9yMyB7CiAgLm1peGluLWNvbW1hLWRlZmF1bHQzKDQsMiwyLDIpOwp9CgoudGVzdC1jYWxsaW5nLW9uZS1hcmctbWl4aW4oQGEpIHsKfQoKLnRlc3QtY2FsbGluZy1vbmUtYXJnLW1peGluKEBhLCBAYiwgQHJlc3QuLi4pIHsKfQoKZGl2IHsKICAudGVzdC1jYWxsaW5nLW9uZS1hcmctbWl4aW4oMSk7Cn0KCm1peGlucy1hcmdzLWV4cGFuZC1vcC0gewogIEB4OiAxLCAyLCAzOwogIEB5OiA0ICA1ICA2OwoKICAmMSB7Lm0zKEB4Li4uKX0KICAmMiB7Lm0zKEB5Li4uKX0KICAmMyB7LndyKGEsIGIsIGMpfQogICY0IHsud3IoYTsgYjsgYywgZCl9CiAgJjUgey53cihAeC4uLil9CiAgJjYgey5tNCgwOyBAeC4uLil9CiAgJjcgey5tNChAeC4uLiwgQGE6IDApfQogICY4IHsubTQoQGI6IDEuNTsgQHguLi4pfQogICY5IHsuYWEoQHksIEB4Li4uLCBhbmQgYWdhaW4sIEB5Li4uKX0KCiAgLm0zKEBhLCBAYiwgQGMpIHsKICAgIG0zOiBAYSwgQGIsIEBjOwogIH0KCiAgLm00KEBhLCBAYiwgQGMsIEBkKSB7CiAgICBtNDogQGEsIEBiLCBAYywgQGQ7CiAgfQoKICAud3IoQGEuLi4pIHsKICAgICZhIHsubTMoQGEuLi4pfQogICAgJmIgey5tNCgwLCBAYS4uLil9CiAgICAmYyB7Lm00KEBhLi4uLCA0KX0KICB9CgogIC5hYShAYS4uLikgewogICAgYWE6IEBhOwogICAgYTQ6IGV4dHJhY3QoQGEsIDUpOwogICAgYTg6IGV4dHJhY3QoQGEsIDgpOwogIH0KfQojdGVzdC1taXhpbi1tYXRjaGluZy13aGVuLWRlZmF1bHQtMjY0NSB7CiAgLm1peGluKEBoZWlnaHQpIHsKICAgIGhlaWdodDogQGhlaWdodDsKICB9CgogIC5taXhpbihAd2lkdGgsIEBoZWlnaHQ6IDEwcHgpIHsKICAgIHdpZHRoOiBAd2lkdGg7CgogICAgLm1peGluKEBoZWlnaHQ6IEBoZWlnaHQpOwogIH0KCiAgLm1peGluKEBoZWlnaHQ6IDIwcHgpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-closure.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNjb3BlIHsKICAgIEB2YXI6IDk5cHg7CiAgICAubWl4aW4gKCkgewogICAgICAgIHdpZHRoOiBAdmFyOwogICAgfQp9CgouY2xhc3MgewogICAgLnNjb3BlID4gLm1peGluOwp9Cgoub3ZlcndyaXRlIHsKICAgIEB2YXI6IDBweDsKICAgIC5zY29wZSA+IC5taXhpbjsKfQoKLm5lc3RlZCB7CiAgICBAdmFyOiA1cHg7CiAgICAubWl4aW4gKCkgewogICAgICAgIHdpZHRoOiBAdmFyOwogICAgfQogICAgLmNsYXNzIHsKICAgICAgICBAdmFyOiAxMHB4OwogICAgICAgLm1peGluOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-guards-default-func.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIGJhc2ljczoKCmd1YXJkLWRlZmF1bHQtYmFzaWMtMSB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDF9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSB7ZGVmYXVsdDogQHh9CgogICAgJi0xIHsubSgxKX0KICAgICYtMiB7Lm0oMil9Cn0KCmd1YXJkLWRlZmF1bHQtYmFzaWMtMiB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDF9CiAgICAubSgyKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDJ9CiAgICAubSgzKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDN9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSB7ZGVmYXVsdDogQHh9CgogICAgJi0wIHsubSgwKX0KICAgICYtMiB7Lm0oMil9Cn0KCmd1YXJkLWRlZmF1bHQtYmFzaWMtMyB7CiAgICAubShAeCkgd2hlbiAoQHggPSAxKSAgICB7Y2FzZTogICAgIDF9CiAgICAubSgyKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDJ9CiAgICAubShAeCkgd2hlbiAoQHggPSAzKSAgICB7Y2FzZTogICAgIDN9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSB7ZGVmYXVsdDogQHh9CgogICAgJi0wIHsubSgwKX0KICAgICYtMiB7Lm0oMil9CiAgICAmLTMgey5tKDMpfQp9CgpndWFyZC1kZWZhdWx0LWRlZmluaXRpb24tb3JkZXIgewogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSkge2RlZmF1bHQ6IEB4fQogICAgLm0oQHgpIHdoZW4gKEB4ID0gMSkgICAge2Nhc2U6ICAgICAxfQogICAgLm0oMikgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAyfQogICAgLm0oQHgpIHdoZW4gKEB4ID0gMykgICAge2Nhc2U6ICAgICAzfQoKICAgICYtMCB7Lm0oMCl9CiAgICAmLTIgey5tKDIpfQogICAgJi0yIHsubSgzKX0KfQoKLy8gb3V0IG9mIGd1YXJkOgoKZ3VhcmQtZGVmYXVsdC1vdXQtb2YtZ3VhcmQgewogICAgLm0oMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FzZS0xOiAgIDF9CiAgICAubShAeDogZGVmYXVsdCgpKSB3aGVuIChkZWZhdWx0KCkpIHtkZWZhdWx0OiBAeH0KCiAgICAmLTAgewogICAgICAgIGNhc2UtMDogZGVmYXVsdCgpOwogICAgICAgIC5tKDEpOwogICAgICAgIC5tKDIpOwogICAgICAgIGNhc2UtMjogZGVmYXVsdCgpOwogICAgfQogICAgJi0xIHsubShkZWZhdWx0KCkpfQogICAgJi0yIHsubSgpfQp9CgovLyBleHByZXNzaW9uczoKCmd1YXJkLWRlZmF1bHQtZXhwci1ub3QgewogICAgLm0oMSkgICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAxfQogICAgLm0oQHgpIHdoZW4gbm90KGRlZmF1bHQoKSkge2RlZmF1bHQ6IEB4fQoKICAgICYtMSB7Lm0oMSl9CiAgICAmLTIgey5tKDIpfQp9CgpndWFyZC1kZWZhdWx0LWV4cHItZXEgewogICAgLm0oQHgpIHdoZW4gKEB4ID0gdHJ1ZSkgICAgICB7Y2FzZTogICAgQHh9CiAgICAubShAeCkgd2hlbiAoQHggPSBmYWxzZSkgICAgIHtjYXNlOiAgICBAeH0KICAgIC5tKEB4KSB3aGVuIChAeCA9IGRlZmF1bHQoKSkge2RlZmF1bHQ6IEB4fQoKICAgICYtdHJ1ZSAgey5tKHRydWUpfQogICAgJi1mYWxzZSB7Lm0oZmFsc2UpfQp9CgpndWFyZC1kZWZhdWx0LWV4cHItb3IgewogICAgLm0oMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlOiAgICAgMX0KICAgIC5tKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDJ9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSwgKEB4ID0gMikge2RlZmF1bHQ6IEB4fQoKICAgICYtMSB7Lm0oMSl9CiAgICAmLTIgey5tKDIpfQogICAgJi0zIHsubSgzKX0KfQoKZ3VhcmQtZGVmYXVsdC1leHByLWFuZCB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAxfQogICAgLm0oMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlOiAgICAgMn0KICAgIC5tKEB4KSB3aGVuIChkZWZhdWx0KCkpIGFuZCAoQHggPSAzKSB7ZGVmYXVsdDogQHh9CgogICAgJi0xIHsubSgxKX0KICAgICYtMiB7Lm0oMil9CiAgICAmLTMgey5tKDMpfQogICAgJi00IHsubSg0KX0KfQoKZ3VhcmQtZGVmYXVsdC1leHByLWFsd2F5cyB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAxfQogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSksIG5vdChkZWZhdWx0KCkpIHtkZWZhdWx0OiBAeH0gLy8gYWx3YXlzIG1hdGNoCgogICAgJi0xIHsubSgxKX0KICAgICYtMiB7Lm0oMil9Cn0KCmd1YXJkLWRlZmF1bHQtZXhwci1uZXZlciB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAxfQogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSkgYW5kIG5vdChkZWZhdWx0KCkpIHtkZWZhdWx0OiBAeH0gLy8gbmV2ZXIgbWF0Y2gKCiAgICAmLTEgey5tKDEpfQogICAgJi0yIHsubSgyKX0KfQoKCi8vIG5vdCBjb25mbGljdGluZyBtdWx0aXBsZSBkZWZhdWx0KCkgdXNlczoKCmd1YXJkLWRlZmF1bHQtbXVsdGktMSB7CiAgICAubSgwKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgICAgMH0KICAgIC5tKEB4KSB3aGVuIChkZWZhdWx0KCkpIHtkZWZhdWx0LTE6IEB4fQogICAgLm0oMikgIHdoZW4gKGRlZmF1bHQoKSkge2RlZmF1bHQtMjogQHh9CgogICAgJi0wIHsubSgwKX0KICAgICYtMSB7Lm0oMSl9Cn0KCmd1YXJkLWRlZmF1bHQtbXVsdGktMiB7CiAgICAubSgxLCBAeCkgICB3aGVuIChkZWZhdWx0KCkpIHtkZWZhdWx0LTE6IEB4fQogICAgLm0oMiwgQHgpICAgd2hlbiAoZGVmYXVsdCgpKSB7ZGVmYXVsdC0yOiBAeH0KICAgIC5tKEB4LCB5ZXMpIHdoZW4gKGRlZmF1bHQoKSkge2RlZmF1bHQtMzogQHh9CgogICAgJi0xIHsubSgxLCBubyl9CiAgICAmLTIgey5tKDIsIG5vKX0KICAgICYtMyB7Lm0oMywgeWVzKX0KfQoKZ3VhcmQtZGVmYXVsdC1tdWx0aS0zIHsKICAgIC5tKHJlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FzZS0xOiBkYXJrcmVkfQogICAgLm0oYmx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlLTI6IGRhcmtibHVlfQogICAgLm0oQHgpIHdoZW4gKGlzY29sb3IoQHgpKSBhbmQgKGRlZmF1bHQoKSkgIHtkZWZhdWx0LWNvbG9yOiBAeH0KICAgIC5tKCdmb28nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FzZS0xOiBJIGFtICdmb28nfQogICAgLm0oJ2JhcicpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlLTI6IEkgYW0gJ2Jhcid9CiAgICAubShAeCkgd2hlbiAoaXNzdHJpbmcoQHgpKSBhbmQgKGRlZmF1bHQoKSkge2RlZmF1bHQtc3RyaW5nOiBJIGFtIEB4fQoKICAgICYtYmx1ZSAgey5tKGJsdWUpfQogICAgJi1ncmVlbiB7Lm0oZ3JlZW4pfQogICAgJi1mb28gICB7Lm0oJ2ZvbycpfQogICAgJi1iYXogICB7Lm0oJ2JheicpfQp9CgpndWFyZC1kZWZhdWx0LW11bHRpLTQgewogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSksIG5vdChkZWZhdWx0KCkpICAgIHthbHdheXM6IEB4fQogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSkgYW5kIG5vdChkZWZhdWx0KCkpIHtuZXZlcjogIEB4fQogICAgLm0oMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlOiAgICAyfQoKICAgIC5tKDEpOwogICAgLm0oMik7Cn0KCmd1YXJkLWRlZmF1bHQtbm90LWFtYmlndW9zLTIgewogICAgLm0oQHgpICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAgICAgMX0KICAgIC5tKEB4KSB3aGVuIChkZWZhdWx0KCkpICAgIHtkZWZhdWx0OiAgICAgQHh9CiAgICAubShAeCkgd2hlbiBub3QoZGVmYXVsdCgpKSB7bm90LWRlZmF1bHQ6IEB4fQoKICAgIC5tKDIpOwp9CgpndWFyZC1kZWZhdWx0LW5vdC1hbWJpZ3Vvcy0zIHsKICAgIC5tKEB4KSAgICAgICAgICAgICAgICAgICAgIHtjYXNlOiAgICAgICAgICAgMX0KICAgIC5tKEB4KSB3aGVuIG5vdChkZWZhdWx0KCkpIHtub3QtZGVmYXVsdC0xOiBAeH0KICAgIC5tKEB4KSB3aGVuIG5vdChkZWZhdWx0KCkpIHtub3QtZGVmYXVsdC0yOiBAeH0KCiAgICAubSgyKTsKfQoKLy8gZGVmYXVsdCAmIHNjb3BlCgpndWFyZC1kZWZhdWx0LXNjb3BlcyB7CiAgICAuczEoKSB7Lm0oQHYpICAgICAgICAgICAgICAgICAgezE6IG5vIGNvbmRpdGlvbn19CiAgICAuczIoKSB7Lm0oQHYpIHdoZW4gKEB2KSAgICAgICAgezI6IHdoZW4gdHJ1ZX19CiAgICAuczMoKSB7Lm0oQHYpIHdoZW4gKGRlZmF1bHQoKSkgezM6IHdoZW4gZGVmYXVsdH19CgogICAgJi0zIHsKICAgICAgICAuczIoKTsKICAgICAgICAuczMoKTsKICAgICAgICAubShmYWxzZSk7CiAgICB9CgogICAgJi0xIHsKICAgICAgICAuczEoKTsKICAgICAgICAuczMoKTsKICAgICAgICAubShmYWxzZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-guards.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIFN0YWNraW5nLCBmdW5jdGlvbnMuLgoKLmxpZ2h0IChAYSkgd2hlbiAobGlnaHRuZXNzKEBhKSA+IDUwJSkgewogIGNvbG9yOiB3aGl0ZTsKfQoubGlnaHQgKEBhKSB3aGVuIChsaWdodG5lc3MoQGEpIDwgNTAlKSB7CiAgY29sb3I6IGJsYWNrOwp9Ci5saWdodCAoQGEpIHsKICBtYXJnaW46IDFweDsKfQoKLmxpZ2h0MSB7IC5saWdodCgjZGRkKSB9Ci5saWdodDIgeyAubGlnaHQoIzQ0NCkgfQoKLy8gQXJndW1lbnRzIGFnYWluc3QgZWFjaCBvdGhlcgoKLm1heCAoQGEsIEBiKSB3aGVuIChAYSA+IEBiKSB7CiAgd2lkdGg6IEBhOwp9Ci5tYXggKEBhLCBAYikgd2hlbiAoQGEgPCBAYikgewogIHdpZHRoOiBAYjsKfQoKLm1heDEgeyAubWF4KDMsIDYpIH0KLm1heDIgeyAubWF4KDgsIDEpIH0KCi8vIEdsb2JhbHMgaW5zaWRlIGd1YXJkcwoKQGc6IGF1dG87CgouZ2xvYiAoQGEpIHdoZW4gKEBhID0gQGcpIHsKICBtYXJnaW46IEBhIEBnOwp9Ci5nbG9iMSB7IC5nbG9iKGF1dG8pIH0KCi8vIE90aGVyIG9wZXJhdG9ycwoKLm9wcyAoQGEpIHdoZW4gKEBhID49IDApIHsKICBoZWlnaHQ6IGd0LW9yLWVxOwp9Ci5vcHMgKEBhKSB3aGVuIChAYSA9PCAwKSB7CiAgaGVpZ2h0OiBsdC1vci1lcTsKfQoub3BzIChAYSkgd2hlbiAoQGEgPD0gMCkgewogIGhlaWdodDogbHQtb3ItZXEtYWxpYXM7Cn0KLm9wcyAoQGEpIHdoZW4gbm90KEBhID0gMCkgewogIGhlaWdodDogbm90LWVxOwp9Ci5vcHMxIHsgLm9wcygwKSB9Ci5vcHMyIHsgLm9wcygxKSB9Ci5vcHMzIHsgLm9wcygtMSkgfQoKLy8gU2NvcGUgYW5kIGRlZmF1bHQgdmFsdWVzCgpAYTogYXV0bzsKCi5kZWZhdWx0IChAYTogaW5oZXJpdCkgd2hlbiAoQGEgPSBpbmhlcml0KSB7CiAgY29udGVudDogZGVmYXVsdDsKfQouZGVmYXVsdDEgeyAuZGVmYXVsdCB9CgovLyB0cnVlICYgZmFsc2Uga2V5d29yZHMKLnRlc3QgKEBhKSB3aGVuIChAYSkgewogICAgY29udGVudDogInRydWUuIjsKfQoudGVzdCAoQGEpIHdoZW4gbm90IChAYSkgewogICAgY29udGVudDogImZhbHNlLiI7Cn0KCi50ZXN0MSB7IC50ZXN0KHRydWUpIH0KLnRlc3QyIHsgLnRlc3QoZmFsc2UpIH0KLnRlc3QzIHsgLnRlc3QoMSkgfQoudGVzdDQgeyAudGVzdChib28pIH0KLnRlc3Q1IHsgLnRlc3QoInRydWUiKSB9CgovLyBCb29sZWFuIGV4cHJlc3Npb25zCgouYm9vbCAoKSB3aGVuICh0cnVlKSBhbmQgKGZhbHNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50OiB0cnVlIGFuZCBmYWxzZSB9IC8vIEZBTFNFCi5ib29sICgpIHdoZW4gKHRydWUpIGFuZCAodHJ1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IHRydWUgYW5kIHRydWUgfSAvLyBUUlVFCi5ib29sICgpIHdoZW4gKHRydWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IHRydWUgfSAvLyBUUlVFCi5ib29sICgpIHdoZW4gKGZhbHNlKSBhbmQgKGZhbHNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IHRydWUgfSAvLyBGQUxTRQouYm9vbCAoKSB3aGVuIChmYWxzZSksICh0cnVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50OiBmYWxzZSwgdHJ1ZSB9IC8vIFRSVUUKLmJvb2wgKCkgd2hlbiAoZmFsc2UpIGFuZCAodHJ1ZSkgYW5kICh0cnVlKSwgICh0cnVlKSAgICAgICAgIHsgY29udGVudDogZmFsc2UgYW5kIHRydWUgYW5kIHRydWUsIHRydWUgfSAvLyBUUlVFCi5ib29sICgpIHdoZW4gKHRydWUpICBhbmQgKHRydWUpIGFuZCAoZmFsc2UpLCAoZmFsc2UpICAgICAgICB7IGNvbnRlbnQ6IHRydWUgYW5kIHRydWUgYW5kIGZhbHNlLCBmYWxzZSB9IC8vIEZBTFNFCi5ib29sICgpIHdoZW4gKGZhbHNlKSwgKHRydWUpIGFuZCAodHJ1ZSkgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IGZhbHNlLCB0cnVlIGFuZCB0cnVlIH0gLy8gVFJVRQouYm9vbCAoKSB3aGVuIChmYWxzZSksIChmYWxzZSksICh0cnVlKSAgICAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50OiBmYWxzZSwgZmFsc2UsIHRydWUgfSAvLyBUUlVFCi5ib29sICgpIHdoZW4gKGZhbHNlKSwgKGZhbHNlKSBhbmQgKHRydWUpLCAoZmFsc2UpICAgICAgICAgICB7IGNvbnRlbnQ6IGZhbHNlLCBmYWxzZSBhbmQgdHJ1ZSwgZmFsc2UgfSAvLyBGQUxTRQouYm9vbCAoKSB3aGVuIChmYWxzZSksICh0cnVlKSBhbmQgKHRydWUpIGFuZCAodHJ1ZSksIChmYWxzZSkgeyBjb250ZW50OiBmYWxzZSwgdHJ1ZSBhbmQgdHJ1ZSBhbmQgdHJ1ZSwgZmFsc2UgfSAvLyBUUlVFCi5ib29sICgpIHdoZW4gbm90IChmYWxzZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IG5vdCBmYWxzZSB9Ci5ib29sICgpIHdoZW4gbm90ICh0cnVlKSBhbmQgbm90IChmYWxzZSkgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IG5vdCB0cnVlIGFuZCBub3QgZmFsc2UgfQouYm9vbCAoKSB3aGVuIG5vdCAodHJ1ZSkgYW5kIG5vdCAodHJ1ZSkgICAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50OiBub3QgdHJ1ZSBhbmQgbm90IHRydWUgfQouYm9vbCAoKSB3aGVuIG5vdCAoZmFsc2UpIGFuZCAoZmFsc2UpLCBub3QgKGZhbHNlKSAgICAgICAgICAgeyBjb250ZW50OiBub3QgZmFsc2UgYW5kIGZhbHNlLCBub3QgZmFsc2UgfQoKLmJvb2wxIHsgLmJvb2wgfQoKLmVxdWFsaXR5LXVuaXQtdGVzdChAbnVtKSB3aGVuIChAbnVtID0gMSUpIHsKICB0ZXN0OiBmYWlsOwp9Ci5lcXVhbGl0eS11bml0LXRlc3QoQG51bSkgd2hlbiAoQG51bSA9IDIpIHsKICB0ZXN0OiBwYXNzOwp9Ci5lcXVhbGl0eS11bml0cyB7CiAgLmVxdWFsaXR5LXVuaXQtdGVzdCgxcHgpOwogIC5lcXVhbGl0eS11bml0LXRlc3QoMnB4KTsKfQoKLmNvbG9yZ3VhcmQoQGNvbCkgd2hlbiAoQGNvbCA9IHJlZCkgICAgICAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50OiBpcyBAY29sOyB9Ci5jb2xvcmd1YXJkKEBjb2wpIHdoZW4gbm90IChibHVlID0gQGNvbCkgICAgICAgICAgICAgICAgICAgIHsgY29udGVudDogaXMgbm90IGJsdWUgaXRzIEBjb2w7IH0KLmNvbG9yZ3VhcmQoQGNvbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KLmNvbG9yZ3VhcmR0ZXN0IHsKICAgIC5jb2xvcmd1YXJkKHJlZCk7CiAgICAuY29sb3JndWFyZChibHVlKTsKICAgIC5jb2xvcmd1YXJkKHB1cnBsZSk7Cn0KCi5zdHJpbmdndWFyZChAc3RyKSB3aGVuIChAc3RyID0gInRoZW1lMSIpCQkJCQl7IGNvbnRlbnQ6IEBzdHIgaXMgInRoZW1lMSI7IH0KLnN0cmluZ2d1YXJkKEBzdHIpIHdoZW4gbm90ICgidGhlbWUyIiA9IEBzdHIpCQkJCXsgY29udGVudDogQHN0ciBpcyBub3QgInRoZW1lMiI7IH0KLnN0cmluZ2d1YXJkKEBzdHIpIHdoZW4gKEBzdHIgPSAndGhlbWUxJykJCQkJCXsgY29udGVudDogQHN0ciBpcyAndGhlbWUxJzsgfQouc3RyaW5nZ3VhcmQoQHN0cikgd2hlbiBub3QgKCd0aGVtZTInID0gQHN0cikJCQkJeyBjb250ZW50OiBAc3RyIGlzIG5vdCAndGhlbWUyJzsgfQouc3RyaW5nZ3VhcmQoQHN0cikgd2hlbiAofiJ0aGVtZTEiID0gQHN0cikJCQkJCXsgY29udGVudDogQHN0ciBpcyB0aGVtZTE7IH0KLnN0cmluZ2d1YXJkKEBzdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30KLnN0cmluZ2d1YXJkdGVzdCB7CiAgICAuc3RyaW5nZ3VhcmQoInRoZW1lMSIpOwogICAgLnN0cmluZ2d1YXJkKCJ0aGVtZTIiKTsKICAgIC5zdHJpbmdndWFyZCgndGhlbWUxJyk7CiAgICAuc3RyaW5nZ3VhcmQoJ3RoZW1lMicpOwogICAgLnN0cmluZ2d1YXJkKHRoZW1lMSk7Cn0KCi5nZW5lcmljKEBhLCBAYikgey8qKi99Ci5nZW5lcmljKEBhLCBAYikgd2hlbiAoQGEgPSBAYikge2NvbnRlbnQ6IEBhIGlzIGVxdWFsIHRvIEBifQouZ2VuZXJpYyhAYSwgQGIpIHdoZW4gKEBiID0gQGEpIHtjb250ZW50OiBAYiBpcyBlcXVhbCB0byBAYSB0b299Ci5nZW5lcmljKEBhLCBAYikgd2hlbiAoQGEgPCBAYikge2NvbnRlbnQ6IEBhIGlzIGxlc3MgdGhhbiBAYn0KLmdlbmVyaWMoQGEsIEBiKSB3aGVuIChAYiA8IEBhKSB7Y29udGVudDogQGIgaXMgbGVzcyB0aGFuIEBhIHRvb30KLmdlbmVyaWMoQGEsIEBiKSB3aGVuIChAYSA+IEBiKSB7Y29udGVudDogQGEgaXMgZ3JlYXRlciB0aGFuIEBifQouZ2VuZXJpYyhAYSwgQGIpIHdoZW4gKEBiID4gQGEpIHtjb250ZW50OiBAYiBpcyBncmVhdGVyIHRoYW4gQGEgdG9vfQouZ2VuZXJpYyhAYSwgQGIpIHdoZW4gbm90KEBhID0gQGIpIHtjb250ZW50OiBAYSBpcyBub3QgZXF1YWwgdG8gQGJ9Ci5nZW5lcmljKEBhLCBAYikgd2hlbiBub3QoQGIgPSBAYSkge2NvbnRlbnQ6IEBiIGlzIG5vdCBlcXVhbCB0byBAYSB0b299CgoudmFyaW91c2UtdHlwZXMtY29tcGFyaXNvbiB7CiAgICAuZ2VuZXJpYyh0cnVlLCBmYWxzZSk7CiAgICAuZ2VuZXJpYygxLCB0cnVlKTsKICAgIC5nZW5lcmljKDIsIDJweCk7CiAgICAuZ2VuZXJpYygzLCB+IjMiKTsKICAgIC5nZW5lcmljKDUsIH4iNCIpOwogICAgLmdlbmVyaWMoYWJjLCB+ImFiYyIpOwogICAgLmdlbmVyaWMoYWJjLCAiYWJjIik7CiAgICAuZ2VuZXJpYygnYWJjJywgImFiZCIpOwogICAgLmdlbmVyaWMoNiwgZSgiNiIpKTsKICAgIC5nZW5lcmljKGA5YCwgOCk7CiAgICAuZ2VuZXJpYyhhLCBiKTsKICAgIC5nZW5lcmljKDEgMiwgMyk7Cn0KCi5saXN0LWNvbXBhcmlzb24gewogICAgLmdlbmVyaWMoYSBiIGMsIGEgYiBjKTsKICAgIC5nZW5lcmljKGEgYiBjLCBhIGIgZCk7CiAgICAuZ2VuZXJpYyhhLCBiLCBjOyBhLCBiLCBjKTsKICAgIC5nZW5lcmljKGEsIGIsIGM7IGEsIGIsIGQpOwogICAgLmdlbmVyaWMoMSAycHggMzAwbXMsIDFlbSAyIC4zcyk7CiAgICAKICAgIEBzcGFjZS1saXN0OiAxIDIgMzsKICAgIEBjb21tYS1saXN0OiAxLCAyLCAzOwogICAgQGNvbXBvdW5kOiBAc3BhY2UtbGlzdCBAY29tbWEtbGlzdDsKICAgIAogICAgLmdlbmVyaWMoQHNwYWNlLWxpc3QsIEBjb21tYS1saXN0KTsKICAgIC5nZW5lcmljKEBjb21tYS1saXN0LCB+IjEsIDIsIDMiKTsKICAgIC5nZW5lcmljKEBjb21wb3VuZCwgQHNwYWNlLWxpc3QgQGNvbW1hLWxpc3QpOwogICAgLmdlbmVyaWMoQGNvbXBvdW5kLCBAY29tbWEtbGlzdCBAc3BhY2UtbGlzdCk7CiAgICAuZ2VuZXJpYyhAY29tcG91bmQgNCwgfiIxIDIgMyAxLCAyLCAzIDQiKTsKfQoKLm1peGluKC4uLikgewogIGNhdGNoOmFsbDsKfQoubWl4aW4oQHZhcikgd2hlbiAoQHZhcj00KSB7CiAgZGVjbGFyZTogNDsKfQoubWl4aW4oQHZhcikgd2hlbiAoQHZhcj00cHgpIHsKICBkZWNsYXJlOiA0cHg7Cn0KI3RyeU51bWJlclB4IHsKICAubWl4aW4oNHB4KTsKfQoKLmxvY2stbWl4aW4oQGEpIHsKIC5pbm5lci1sb2NrZWQtbWl4aW4oQHg6IEBhKSB3aGVuIChAYSA9IDEpIHsKICAgIGE6IEBhOwogICAgeDogQHg7CiAgfQp9Ci5jYWxsLWxvY2stbWl4aW4gewogIC5sb2NrLW1peGluKDEpOwogIC5jYWxsLWlubmVyLWxvY2stbWl4aW4gewogICAgLmlubmVyLWxvY2tlZC1taXhpbigpOwogIH0KfQouYnVnLTEwMGNtLTFtKEBhKSB3aGVuIChAYSA9IDEpIHsKICAuZmFpbGVkIHsKICAgIG9uZS1odW5kcmVkOiBub3QtZXF1YWwtdG8tMTsKICB9Cn0KLmJ1Zy0xMDBjbS0xbSgxMDBjbSk7CgojbnMgewogICAgLm1peGluLWZvci1yb290LXVzYWdlKEBhKSB3aGVuIChAYSA+IDApIHsKICAgICAgICAubWl4aW4tZ2VuZXJhdGVkLWNsYXNzIHsKICAgICAgICAgICAgYTogQGE7CiAgICAgICAgfQogICAgfQp9CgojbnMgPiAubWl4aW4tZm9yLXJvb3QtdXNhZ2UoMSk7CgpAbmFtZXNwYWNlR3VhcmQ6IDE7CiNndWFyZGVkIHdoZW4gKEBuYW1lc3BhY2VHdWFyZD4wKSB7CiAgI2RlZXBlciB7CiAgICAubWl4aW4oKSB7CiAgICAgIGd1YXJkZWQ6IG5hbWVzcGFjZTsKICAgIH0KICB9Cn0KI2d1YXJkZWQoKSB3aGVuIChAbmFtZXNwYWNlR3VhcmQ+MCkgewogICNkZWVwZXIgewogICAgLm1peGluKCkgewogICAgICBzaWxlbnQ6IG5hbWVzcGFjZTsKICAgIH0KICB9Cn0KI2d1YXJkZWQoQHZhcmlhYmxlKSB3aGVuIChAbmFtZXNwYWNlR3VhcmQ+MCkgewogICNkZWVwZXIgewogICAgLm1peGluKCkgewogICAgICBzaG91bGQ6IG5vdCBtYXRjaCBiZWNhdXNlIG5hbWVzcGFjZSBhcmd1bWVudDsKICAgIH0KICB9Cn0KI2d1YXJkZWQoQHZhcmlhYmxlOiBkZWZhdWx0KSB3aGVuIChAbmFtZXNwYWNlR3VhcmQ+MCkgewogICNkZWVwZXIgewogICAgLm1peGluKCkgewogICAgICBndWFyZGVkOiB3aXRoIGRlZmF1bHQ7CiAgICB9CiAgfQp9CiNndWFyZGVkIHdoZW4gKEBuYW1lc3BhY2VHdWFyZDwwKSB7CiAgI2RlZXBlciB7CiAgICAubWl4aW4oKSB7CiAgICAgIHNob3VsZDogbm90IG1hdGNoIGJlY2F1c2UgbmFtZXNwYWNlIGd1YXJkOwogICAgfQogIH0KfQojZ3VhcmRlZC1jYWxsZXIgewogICNndWFyZGVkID4gI2RlZXBlciA+IC5taXhpbigpOwp9CiN0b3AgewogICNkZWVwZXIgd2hlbiAoQG5hbWVzcGFjZUd1YXJkPDApIHsKICAgIC5taXhpbihAYSkgewogICAgICBzaG91bGQ6IG5vdCBtYXRjaCBiZWNhdXNlIG5hbWVzcGFjZSBndWFyZDsKICAgIH0KICB9CiAgI2RlZXBlcigpIHdoZW4gKEBuYW1lc3BhY2VHdWFyZD4wKSB7CiAgICAubWl4aW4oQGEpIHsKICAgICAgc2hvdWxkOiBtYXRjaCBAYTsKICAgIH0KICB9Cn0KI2d1YXJkZWQtZGVlcGVyIHsKICAjdG9wID4gI2RlZXBlciA+IC5taXhpbigxKTsKfQoKLy8gbmFtZXNwYWNlZCAmIGd1YXJkZWQgbWl4aW4gaW4gcm9vdAovLyBvdXRwdXRzIG5vdGhpbmcgYnV0IHNob3VsZCBwYXNzOgoKQGd1YXJkZWQtbWl4aW4tZm9yLXJvb3Q6IHRydWU7CiNucyB7CiAgICAuZ3VhcmRlZC1taXhpbi1mb3Itcm9vdCgpIHdoZW4gKEBndWFyZGVkLW1peGluLWZvci1yb290KSB7fQp9CiNucyA+IC5ndWFyZGVkLW1peGluLWZvci1yb290KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-important.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN1Ym1peGluKEBhKSB7CiAgYm9yZGVyLXdpZHRoOiBAYTsKfQoubWl4aW4gKDkpIHsKICBib3JkZXI6IDkgIWltcG9ydGFudDsKfQoubWl4aW4gKEBhOiAwKSB7CiAgYm9yZGVyOiBAYTsKICBib3hlcjogQGE7CiAgLmlubmVyIHsKICAgIHRlc3Q6IEBhOwogIH0KICAvLyBjb21tZW50CiAgLnN1Ym1peGluKEBhKTsKfQoKLmNsYXNzIHsKICAubWl4aW4oMSk7CiAgLm1peGluKDIpICFpbXBvcnRhbnQ7CiAgLm1peGluKDMpOwogIC5taXhpbig0KSAhaW1wb3J0YW50OwogIC5taXhpbig1KTsKICAubWl4aW4gIWltcG9ydGFudDsKICAubWl4aW4oOSk7Cn0KLnNpemUoQGFhYTogYXV0bykgewogIC5zZXQtd2lkdGgoQGFhYSkgewogICAgd2lkdGg6IEBhYWE7CiAgfQogIC5zZXQtd2lkdGgoQGFhYSk7Cn0KLndoZW4tY2FsbGluZy1uZXN0ZWQtaXNzdWUtMjM5NCB7CiAgLnNpemUoKSAhaW1wb3J0YW50Owp9Ci53aGVuLWNhbGxpbmctbmVzdGVkLXdpdGgtcGFyYW0taXNzdWUtMjM5NCB7CiAgLnNpemUoMTBweCkgIWltcG9ydGFudDsKfQoudGVzdE1peGluLTI0MjEgKCkgewogICAgLnRvcENoZWNrLTI0MjEgKCkgewogICAgICAgIC5uZXN0ZWRDaGVjay0yNDIxKCkgewogICAgICAgICAgICBtYXJnaW46IDVweDsKICAgICAgICB9CiAgICAgICAgLm5lc3RlZENoZWNrLTI0MjEoKTsKICAgIH0KICAgIC50b3BDaGVjay0yNDIxKCk7Cn0KLmNsYXNzMS0yNDIxIHsKICAgIC50ZXN0TWl4aW4tMjQyMSgpICFpbXBvcnRhbnQ7Cn0KLmNsYXNzMi0yNDIxIHsKICAgIC50ZXN0TWl4aW4tMjQyMSgpOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-interpolated.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBhMDogMTIzOwpAYTE6IGZvbzsKQGEyOiB+Ii5mb28iOwpAYTQ6IH4iI2ZvbyI7CgouQHthMH0gewogICAgYTogMDsKfQoKLkB7YTF9IHsKICAgIGE6IDE7Cn0KCkB7YTJ9IHsKICAgIGE6IDI7Cn0KCiNAe2ExfSB7CiAgICBhOiAzOwp9CgpAe2E0fSB7CiAgICBhOiA0Owp9CgptaS10ZXN0LWEgewogICAgLjEyMzsKICAgIC5mb287CiAgICAjZm9vOwp9CgouYiAuYmIgewogICAgJi5Ae2ExfS14eHggLnl5eS1Ae2ExfUB7YTR9IHsKICAgICAgICAmIEB7YTJ9LmJiYiB7CiAgICAgICAgICAgIGI6IDE7CiAgICAgICAgfQogICAgfQp9CgptaS10ZXN0LWIgewogICAgLmIuYmIuZm9vLXh4eC55eXktZm9vI2Zvby5mb28uYmJiOwp9CgpAYzE6IEBhMTsKQGMyOiBiYXI7CkBjMzogYmF6OwoKI0B7YzF9LWZvbyB7CiAgICA+IC5Ae2MyfSB7CiAgICAgICAgLkB7YzN9IHsKICAgICAgICAgICAgYzogYzsKICAgICAgICB9CiAgICB9Cn0KCm1pLXRlc3QtYyB7CiAgICAmLTEgeyNmb28tZm9vO30KICAgICYtMiB7I2Zvby1mb28gPiAuYmFyO30KICAgICYtMyB7I2Zvby1mb28gPiAuYmFyLmJhejt9Cn0KCi5QZXJzb24oQG5hbWUsIEBnZW5kZXJfKSB7CiAgICAuQHtuYW1lfSB7CiAgICAgICAgQGdlbmRlcjogQGdlbmRlcl87CiAgICAgICAgLnNheUdlbmRlcigpIHsKICAgICAgICAgICAgZ2VuZGVyOiBAZ2VuZGVyOwogICAgICAgIH0KICAgIH0KfQoKbWktdGVzdC1kIHsKICAgIC5QZXJzb24ocGVyc29uLCAiTWFsZSIpOwogICAgLnBlcnNvbi5zYXlHZW5kZXIoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-named-args.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIChAYTogMXB4LCBAYjogNTAlKSB7CiAgd2lkdGg6IChAYSAqIDUpOwogIGhlaWdodDogKEBiIC0gMSUpOwogIGFyZ3M6IEBhcmd1bWVudHM7Cn0KLm1peGluIChAYTogMXB4LCBAYjogNTAlKSB3aGVuIChAYiA+IDc1JSl7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoubmFtZWQtYXJnIHsKICBjb2xvcjogYmx1ZTsKICAubWl4aW4oQGI6IDEwMCUpOwp9CgouY2xhc3MgewogIEB2YXI6IDIwJTsKICAubWl4aW4oQGI6IEB2YXIpOwp9CgouYWxsLWFyZ3Mtd3JvbmctYXJncyB7CiAgLm1peGluKEBiOiAxMCUsIEBhOiAycHgpOwp9CgoubWl4aW4yIChAYTogMXB4LCBAYjogNTAlLCBAYzogNTApIHsKICB3aWR0aDogKEBhICogNSk7CiAgaGVpZ2h0OiAoQGIgLSAxJSk7CiAgY29sb3I6ICgjMDAwMDAwICsgQGMpOwp9CgoubmFtZWQtYXJnczIgewogIC5taXhpbjIoM3B4LCBAYzogMTAwKTsKfQoKLm5hbWVkLWFyZ3MzIHsKICAubWl4aW4yKEBiOiAzMCUsIEBjOiAjMTIzNDU2KTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-nested.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peC1pbm5lciAoQHZhcikgewogIGJvcmRlci13aWR0aDogQHZhcjsKfQoKLm1peCAoQGE6IDEwKSB7CiAgLmlubmVyIHsKICAgIGhlaWdodDogKEBhICogMTApOwoKICAgIC5pbm5lc3QgewogICAgICB3aWR0aDogQGE7CiAgICAgIC5taXgtaW5uZXIoKEBhICogMikpOwogICAgfQogIH0KfQoKLmNsYXNzIHsKICAubWl4KDMwKTsKfQoKLmNsYXNzMiB7CiAgLm1peCg2MCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins-pattern.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluICguLi4pIHsKICB2YXJpYWRpYzogdHJ1ZTsKfQoubWl4aW4gKEBhLi4uKSB7CiAgbmFtZWQtdmFyaWFkaWM6IHRydWU7Cn0KLm1peGluICgpIHsKICAgIHplcm86IDA7Cn0KLm1peGluIChAYTogMXB4KSB7CiAgICBvbmU6IDE7Cn0KLm1peGluIChAYSkgewogICAgb25lLXJlcTogMTsKfQoubWl4aW4gKEBhOiAxcHgsIEBiOiAycHgpIHsKICAgIHR3bzogMjsKfQoKLm1peGluIChAYSwgQGIsIEBjKSB7CiAgICB0aHJlZS1yZXE6IDM7Cn0KCi5taXhpbiAoQGE6IDFweCwgQGI6IDJweCwgQGM6IDNweCkgewogICAgdGhyZWU6IDM7Cn0KCi56ZXJvIHsKICAgIC5taXhpbigpOwp9Cgoub25lIHsKICAgIC5taXhpbigxKTsKfQoKLnR3byB7CiAgICAubWl4aW4oMSwgMik7Cn0KCi50aHJlZSB7CiAgICAubWl4aW4oMSwgMiwgMyk7Cn0KCi8vCgoubWl4b3V0ICgnbGVmdCcpIHsKICAgIGxlZnQ6IDE7Cn0KCi5taXhvdXQgKCdyaWdodCcpIHsKICAgIHJpZ2h0OiAxOwp9CgoubGVmdCB7CiAgICAubWl4b3V0KCdsZWZ0Jyk7Cn0KLnJpZ2h0IHsKICAgIC5taXhvdXQoJ3JpZ2h0Jyk7Cn0KCi8vCgouYm9yZGVyIChAc2lkZSwgQHdpZHRoKSB7CiAgICBjb2xvcjogYmxhY2s7CiAgICAuYm9yZGVyLXNpZGUoQHNpZGUsIEB3aWR0aCk7Cn0KLmJvcmRlci1zaWRlIChsZWZ0LCBAdykgewogICAgYm9yZGVyLWxlZnQ6IEB3Owp9Ci5ib3JkZXItc2lkZSAocmlnaHQsIEB3KSB7CiAgICBib3JkZXItcmlnaHQ6IEB3Owp9CgouYm9yZGVyLXJpZ2h0IHsKICAgIC5ib3JkZXIocmlnaHQsIDRweCk7Cn0KLmJvcmRlci1sZWZ0IHsKICAgIC5ib3JkZXIobGVmdCwgNHB4KTsKfQoKLy8KCgouYm9yZGVyLXJhZGl1cyAoQHIpIHsKICAgIGJvdGg6IChAciAqIDEwKTsKfQouYm9yZGVyLXJhZGl1cyAoQHIsIGxlZnQpIHsKICAgIGxlZnQ6IEByOwp9Ci5ib3JkZXItcmFkaXVzIChAciwgcmlnaHQpIHsKICAgIHJpZ2h0OiBAcjsKfQoKLm9ubHktcmlnaHQgewogICAgLmJvcmRlci1yYWRpdXMoMzMsIHJpZ2h0KTsKfQoub25seS1sZWZ0IHsKICAgIC5ib3JkZXItcmFkaXVzKDMzLCBsZWZ0KTsKfQoubGVmdC1yaWdodCB7CiAgICAuYm9yZGVyLXJhZGl1cygzMyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/mixins.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIHsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IH0KLm1peG91dCB7IGJvcmRlci1jb2xvcjogb3JhbmdlOyB9Ci5ib3JkZXJzIHsgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7IH0KLm1peGluID4gKiB7IGJvcmRlcjogZG8gbm90IG1hdGNoIG1lOyB9CgojbmFtZXNwYWNlIHsKICAuYm9yZGVycyB7CiAgICBib3JkZXItc3R5bGU6IGRvdHRlZDsKICB9CiAgLmJpb2hhemFyZCB7CiAgICBjb250ZW50OiAiZGVhdGgiOwogICAgLm1hbiB7CiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgIH0KICB9Cn0KI3RoZW1lIHsKICA+IC5taXhpbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OwogIH0KfQojY29udGFpbmVyIHsKICBjb2xvcjogYmxhY2s7CiAgLm1peGluOwogIC5taXhvdXQ7CiAgI3RoZW1lID4gLm1peGluOwp9CgojaGVhZGVyIHsKICAubWlsayB7CiAgICBjb2xvcjogd2hpdGU7CiAgICAubWl4aW47CiAgICAjdGhlbWUgPiAubWl4aW47CiAgfQogICNjb29raWUgewogICAgLmNoaXBzIHsKICAgICAgI25hbWVzcGFjZSAuYm9yZGVyczsKICAgICAgLmNhbG9yaWVzIHsKICAgICAgICAjY29udGFpbmVyOwogICAgICB9CiAgICB9CiAgICAuYm9yZGVyczsKICB9Cn0KLnNlY3VyZS16b25lIHsgI25hbWVzcGFjZSAuYmlvaGF6YXJkIC5tYW47IH0KLmRpcmVjdCB7CiAgI25hbWVzcGFjZSA+IC5ib3JkZXJzOwp9CgouYm8sIC5iYXIgewogICAgd2lkdGg6IDEwMCU7Cn0KLmJvIHsKICAgIGJvcmRlcjogMXB4Owp9Ci5hci5iby5jYSB7CiAgICBjb2xvcjogYmxhY2s7Cn0KLmpvLmtpIHsKICAgIGJhY2tncm91bmQ6IG5vbmU7Cn0KLmFtcCB7CiAgICAmLnN1cHBvcnQgewogICAgICAgIGNvbG9yOiBvcmFuZ2U7CiAgICAgICAgLmhpZ2hlciB7CiAgICAgICAgICAgIHRvcDogMHB4OwogICAgICAgIH0KICAgICAgICAmLmRlZXBlciB7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICB9CiAgICB9Cn0KLmV4dGVuZGVkIHsKICAgIC5ibzsKICAgIC5qby5raTsKICAgIC5hbXAuc3VwcG9ydDsKICAgIC5hbXAuc3VwcG9ydC5oaWdoZXI7CiAgICAuYW1wLnN1cHBvcnQuZGVlcGVyOwp9Ci5kbyAucmUgLm1pIC5mYSB7CiAgICAuc29sIC5sYSB7CiAgICAgICAgLnNpIHsKICAgICAgICAgICAgY29sb3I6IGN5YW47CiAgICAgICAgfQogICAgfQp9Ci5tdXRsaS1zZWxlY3Rvci1wYXJlbnRzIHsKICAgIC5kby5yZS5taS5mYS5zb2wubGEuc2k7Cn0KLmZvbyAuYmFyIHsKICAuYmFyOwp9Ci5oYXNfcGFyZW50cygpIHsKICAmIC51bmRlclBhcmVudHMgewogICAgY29sb3I6IHJlZDsKICB9Cn0KLmhhc19wYXJlbnRzKCk7Ci5wYXJlbnQgewogIC5oYXNfcGFyZW50cygpOwp9Ci5tYXJnaW5fYmV0d2VlbihAYWJvdmUsIEBiZWxvdykgewogICAgICogKyAmIHsgbWFyZ2luLXRvcDogQGFib3ZlOyB9CiAgICAgbGVnZW5kICsgJiB7IG1hcmdpbi10b3A6IDA7IH0KICAgICAmICsgKiB7IG1hcmdpbi10b3A6IEBiZWxvdzsgfQp9CmgxIHsgLm1hcmdpbl9iZXR3ZWVuKDI1cHgsIDEwcHgpOyB9CmgyIHsgLm1hcmdpbl9iZXR3ZWVuKDIwcHgsIDhweCk7IH0KaDMgeyAubWFyZ2luX2JldHdlZW4oMTVweCwgNXB4KTsgfQoKLm1peGluX2RlZihAdXJsLCBAcG9zaXRpb24pewogICAgYmFja2dyb3VuZC1pbWFnZTogQHVybDsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IEBwb3NpdGlvbjsKfQouZXJyb3J7CiAgQHM6ICIvIjsKICAubWl4aW5fZGVmKCAiQHtzfWEucG5nIiwgY2VudGVyIGNlbnRlcik7Cn0KLnJlY3Vyc2lvbigpIHsKICBjb2xvcjogYmxhY2s7Cn0KLnRlc3QtcmVjIHsKICAucmVjdXJzaW9uIHsKICAgIC5yZWN1cnNpb24oKTsKICB9Cn0KLnBhZGRpbmdGbG9hdChAcGFkZGluZykgeyBwYWRkaW5nLWxlZnQ6IEBwYWRkaW5nOyB9CgouYnV0dG9uIHsKICAgIC5wYWRkaW5nRmxvYXQoKCgxMHB4ICsgMTIpICogMikpOwoKICAgICYubGFyZ2UgeyAucGFkZGluZ0Zsb2F0KCgoMTBlbSAqIDIpICogMikpOyB9Cn0KLmNsZWFyZml4KCkgewogIC8vIC4uLgp9Ci5jbGVhcmZpeCB7CiAgLmNsZWFyZml4KCk7Cn0KLmNsZWFyZml4IHsKICAuY2xlYXJmaXgoKTsKfQouZm9vIHsKICAuY2xlYXJmaXgoKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/modifyVars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/modifyVars/extended.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInRoZS1ib3JkZXIiOiAiMXB4IiwKICAgICJiYXNlLWNvbG9yIjogIiMxMTEiLAogICAgInJlZCI6ICIjODQyMjEwIgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/modifyVars/extended.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CiAgY29sb3I6IChAYmFzZS1jb2xvciAqIDMpOwogIGJvcmRlci1sZWZ0OiBAdGhlLWJvcmRlcjsKICBib3JkZXItcmlnaHQ6IChAdGhlLWJvcmRlciAqIDIpOwp9CiNmb290ZXIgewogIGNvbG9yOiAoQGJhc2UtY29sb3IgKyAjMDAzMzAwKTsKICBib3JkZXItY29sb3I6IEByZWQ7Cn0KQHJlZDogYmx1ZTsgLy8gdmFyIGlzIG92ZXJyaWRkZW4gYnkgdGhlIG1vZGlmeVZhcnMKLy9AYmFzZS1jb2xvcjogZ3JlZW47]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/nested-gradient-with-svg-gradient/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/nested-gradient-with-svg-gradient/mixin-consumer.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAic3ZnLWdyYWRpZW50LW1peGluLmxlc3MiOwoKLmdyYXktZ3JhZGllbnQgewogIC5ncmFkaWVudC1taXhpbigjOTk5KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmdyYWRpZW50LW1peGluKEBjb2xvcikgewogIGJhY2tncm91bmQ6IHN2Zy1ncmFkaWVudCh0byBib3R0b20sCiAgICBmYWRlKEBjb2xvciwgMCUpIDAlLAogICAgZmFkZShAY29sb3IsIDUlKSA2MCUsCiAgICBmYWRlKEBjb2xvciwgMTAlKSA3MCUsCiAgICBmYWRlKEBjb2xvciwgMTUlKSA3MyUsCiAgICBmYWRlKEBjb2xvciwgMjAlKSA3NSUsCiAgICBmYWRlKEBjb2xvciwgMjUlKSA4MCUsCiAgICBmYWRlKEBjb2xvciwgMzAlKSA4NSUsCiAgICBmYWRlKEBjb2xvciwgMzUlKSA4OCUsCiAgICBmYWRlKEBjb2xvciwgNDAlKSA5MCUsCiAgICBmYWRlKEBjb2xvciwgNDUlKSA5NSUsCiAgICBmYWRlKEBjb2xvciwgNTAlKSAxMDAlCiAgKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/no-js-errors/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/no-js-errors/no-js-errors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGE6IGAxICsgMWA7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/no-js-errors/no-js-errors.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IFlvdSBhcmUgdXNpbmcgSmF2YVNjcmlwdCwgd2hpY2ggaGFzIGJlZW4gZGlzYWJsZWQuIGluIHtwYXRofW5vLWpzLWVycm9ycy5sZXNzIG9uIGxpbmUgMiwgY29sdW1uIDY6CjEgLmEgewoyICAgYTogYDEgKyAxYDsKMyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/no-output.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluKCkgewp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/operations.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I29wZXJhdGlvbnMgewogIGNvbG9yOiAoIzExMDAwMCArICMwMDAwMTEgKyAjMDAxMTAwKTsgLy8gIzExMTExMQogIGhlaWdodDogKDEwcHggLyAycHggKyA2cHggLSAxcHggKiAyKTsgLy8gOXB4CiAgd2lkdGg6ICgyICogNCAtIDVlbSk7IC8vIDNlbQogIC5zcGFjaW5nIHsKICAgIGhlaWdodDogKDEwcHggLyAycHgrNnB4LTFweCoyKTsKICAgIHdpZHRoOiAoMiAgKiA0LTVlbSk7CiAgfQogIHN1YnN0cmFjdGlvbjogKDIwIC0gMTAgLSA1IC0gNSk7IC8vIDAKICBkaXZpc2lvbjogKDIwIC8gNSAvIDQpOyAvLyAxCn0KCkB4OiA0OwpAeTogMTJlbTsKCi53aXRoLXZhcmlhYmxlcyB7CiAgaGVpZ2h0OiAoQHggKyBAeSk7IC8vIDE2ZW0KICB3aWR0aDogKDEyICsgQHkpOyAvLyAyNGVtCiAgc2l6ZTogKDVjbSAtIEB4KTsgLy8gMWNtCn0KCi53aXRoLWZ1bmN0aW9ucyB7CiAgY29sb3I6IChyZ2IoMjAwLCAyMDAsIDIwMCkgLyAyKTsKICBjb2xvcjogKDIgKiBoc2woMCwgNTAlLCA1MCUpKTsKICBjb2xvcjogKHJnYigxMCwgMTAsIDEwKSArIGhzbCgwLCA1MCUsIDUwJSkpOwp9CgpAejogLTI7CgoubmVnYXRpdmUgewogIGhlaWdodDogKDJweCArIEB6KTsgLy8gMHB4CiAgd2lkdGg6ICgycHggLSBAeik7IC8vIDRweAp9Cgouc2hvcnRoYW5kcyB7CiAgcGFkZGluZzogLTFweCAycHggMCAtNHB4OyAvLwp9CgoucmVtLWRpbWVuc2lvbnMgewogIGZvbnQtc2l6ZTogKDIwcmVtIC8gNSArIDEuNXJlbSk7IC8vIDUuNXJlbQp9CgouY29sb3JzIHsKICBjb2xvcjogIzEyMzsgLy8gIzExMjIzMwogIGJvcmRlci1jb2xvcjogKCMyMzQgKyAjMTExMTExKTsgLy8gIzMzNDQ1NQogIGJhY2tncm91bmQtY29sb3I6ICgjMjIyMjIyIC0gI2ZmZik7IC8vICMwMDAwMDAKICAub3RoZXIgewogICAgY29sb3I6ICgyICogIzExMSk7IC8vICMyMjIyMjIKICAgIGJvcmRlci1jb2xvcjogKCMzMzMzMzMgLyAzICsgIzExMSk7IC8vICMyMjIyMjIKICB9Cn0KCi5uZWdhdGlvbnMgewogICAgQHZhcjogNHB4OwogICAgdmFyaWFibGU6ICgtQHZhcik7IC8vIDQKICAgIHZhcmlhYmxlMTogKC1AdmFyICsgQHZhcik7IC8vIDAKICAgIHZhcmlhYmxlMjogKEB2YXIgKyAtQHZhcik7IC8vIDAKICAgIHZhcmlhYmxlMzogKEB2YXIgLSAtQHZhcik7IC8vIDgKICAgIHZhcmlhYmxlNDogKC1AdmFyIC0gLUB2YXIpOyAvLyAwCiAgICBwYXJlbjogKC0oQHZhcikpOyAvLyAtNHB4CiAgICBwYXJlbjI6ICgtKDIgKyAyKSAqIC1AdmFyKTsgLy8gMTYKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/parens.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgQHZhcjogMXB4OwogIGJvcmRlcjogKEB2YXIgKiAyKSBzb2xpZCBibGFjazsKICBtYXJnaW46IChAdmFyICogMSkgKEB2YXIgKyAyKSAoNCAqIDQpIDM7CiAgd2lkdGg6ICg2ICogNik7CiAgcGFkZGluZzogMnB4ICg2ICogNnB4KTsKfQoKLm1vcmUtcGFyZW5zIHsKICBAdmFyOiAoMiAqIDIpOwogIHBhZGRpbmc6ICgyICogQHZhcikgNCA0IChAdmFyICogMXB4KTsKICB3aWR0aC1hbGw6ICgoQHZhciAqIEB2YXIpICogNik7CiAgd2lkdGgtZmlyc3Q6ICgoQHZhciAqIEB2YXIpKSAqIDY7CiAgd2lkdGgta2VlcDogKEB2YXIgKiBAdmFyKSAqIDY7CiAgaGVpZ2h0LWtlZXA6ICg3ICogNykgKyAoOCAqIDgpOwogIGhlaWdodC1hbGw6ICgoNyAqIDcpICsgKDggKiA4KSk7CiAgaGVpZ2h0LXBhcnRzOiAoKDcgKiA3KSkgKyAoKDggKiA4KSk7CiAgbWFyZ2luLWtlZXA6ICg0ICogKDUgKyA1KSAvIDIpIC0gKEB2YXIgKiAyKTsKICBtYXJnaW4tcGFydHM6ICgoNCAqICg1ICsgNSkgLyAyKSkgLSAoKEB2YXIgKiAyKSk7CiAgbWFyZ2luLWFsbDogKCg0ICogKDUgKyA1KSAvIDIpICsgKC0oQHZhciAqIDIpKSk7CiAgYm9yZGVyLXJhZGl1cy1rZWVwOiA0cHggKiAoMSArIDEpIC8gQHZhciArIDNweDsKICBib3JkZXItcmFkaXVzLXBhcnRzOiAoKDRweCAqICgxICsgMSkpKSAvICgoQHZhciArIDNweCkpOwogIGJvcmRlci1yYWRpdXMtYWxsOiAoNHB4ICogKDEgKyAxKSAvIEB2YXIgKyAzcHgpOwogIC8vbWFyZ2luOiAoNiAqIDYpcHg7Cn0KCi5uZWdhdGl2ZSB7CiAgQHZhcjogMTsKICBuZWctdmFyOiAtQHZhcjsgLy8gLTEgPwogIG5lZy12YXItcGFyZW46IC0oQHZhcik7IC8vIC0oMSkgPwp9CgoubmVzdGVkLXBhcmVucyB7CiAgd2lkdGg6IDIgKiAoNCAqICgyICsgKDEgKyA2KSkpIC0gMTsKICBoZWlnaHQ6ICgoMiArIDMpICogKDIgKyAzKSAvICg5IC0gNCkpICsgMTsKfQoKLm1peGVkLXVuaXRzIHsKICBtYXJnaW46IDJweCA0ZW0gMSA1cGM7CiAgcGFkZGluZzogKDJweCArIDRweCkgMWVtIDJweCAyOwp9CgoudGVzdC1mYWxzZS1uZWdhdGl2ZXMgewogIGE6IH4iKCI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/plugin.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaW1wb3J0aW5nIHBsdWdpbiBnbG9iYWxseQpAcGx1Z2luICIuL3BsdWdpbi9wbHVnaW4tZ2xvYmFsIjsKCi8vIHRyYW5zaXRpdmVseSBpbmNsdWRlIHBsdWdpbnMgZnJvbSBpbXBvcnRpbmcgYW5vdGhlciBzaGVldApAaW1wb3J0ICIuL3BsdWdpbi9wbHVnaW4tdHJhbnNpdGl2ZSI7CgoKLy8gYHRlc3QtZ2xvYmFsYCBmdW5jdGlvbiBzaG91bGQgYmUgcmVhY2hhYmxlCi8vIGB0ZXN0LWxvY2FsYCAgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSByZWFjaGFibGUKLy8gYHRlc3Qtc2hhZG93YCBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGdsb2JhbCB2ZXJzaW9uCi5jbGFzcyB7CiAgdHJhbnMgIDogdGVzdC10cmFuc2l0aXZlKCk7CiAgZ2xvYmFsIDogdGVzdC1nbG9iYWwoKTsKICBsb2NhbCAgOiB0ZXN0LWxvY2FsKCk7CiAgc2hhZG93IDogdGVzdC1zaGFkb3coKTsKCiAgLy8gYHRlc3QtZ2xvYmFsYCBmdW5jdGlvbiBzaG91bGQgcHJvcGFnYXRlIGFuZCBiZSByZWFjaGFibGUKICAvLyBgdGVzdC1sb2NhbGAgIGZ1bmN0aW9uIHNob3VsZCBiZSByZWFjaGFibGUKICAvLyBgdGVzdC1zaGFkb3dgIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gbG9jYWwgdmVyc2lvbiwgc2hhZG93aW5nIGdsb2JhbCB2ZXJzaW9uCiAgLmxvY2FsIHsKICAgIEBwbHVnaW4gIi4vcGx1Z2luL3BsdWdpbi1sb2NhbCI7CiAgICBnbG9iYWwgOiB0ZXN0LWdsb2JhbCgpOwogICAgbG9jYWwgIDogdGVzdC1sb2NhbCgpOwogICAgc2hhZG93IDogdGVzdC1zaGFkb3coKTsKICB9Cn0KCi8vIGNhbGxpbmcgYSBtaXhpbiBvciBkZXRhY2hlZCBydWxlc2V0IHNob3VsZCBub3QgYnViYmxlIGxvY2FsIHBsdWdpbnMKLy8gaW1wb3J0ZWQgaW5zaWRlIGVpdGhlciBpbnRvIHRoZSBwYXJlbnQgc2NvcGUuCi5taXhpbigpIHsKICBAcGx1Z2luICIuL3BsdWdpbi9wbHVnaW4tbG9jYWwiOwogIG1peGluLWxvY2FsICA6IHRlc3QtbG9jYWwoKTsKICBtaXhpbi1nbG9iYWwgOiB0ZXN0LWdsb2JhbCgpOwogIG1peGluLXNoYWRvdyA6IHRlc3Qtc2hhZG93KCk7Cn0KQHJ1bGVzZXQgOiB7CiAgQHBsdWdpbiAiLi9wbHVnaW4vcGx1Z2luLWxvY2FsIjsKICBydWxlc2V0LWxvY2FsICA6IHRlc3QtbG9jYWwoKTsKICBydWxlc2V0LWdsb2JhbCA6IHRlc3QtZ2xvYmFsKCk7CiAgcnVsZXNldC1zaGFkb3cgOiB0ZXN0LXNoYWRvdygpOwp9OwojbnMgewogIEBwbHVnaW4gIi4vcGx1Z2luL3BsdWdpbi1sb2NhbCI7CiAgLm1peGluKCkgewogICAgbnMtbWl4aW4tZ2xvYmFsIDogdGVzdC1nbG9iYWwoKTsKICAgIG5zLW1peGluLWxvY2FsICA6IHRlc3QtbG9jYWwoKTsKICAgIG5zLW1peGluLXNoYWRvdyA6IHRlc3Qtc2hhZG93KCk7CiAgfQp9Ci5jbGFzcyB7CiAgI25zID4gLm1peGluKCk7CiAgLm1peGluKCk7CiAgQHJ1bGVzZXQoKTsKICBjbGFzcy1sb2NhbCA6IHRlc3QtbG9jYWwoKTsKfQoKCi8vIGB0ZXN0LWdsb2JhbGAgZnVuY3Rpb24gc2hvdWxkIHByb3BhZ2F0ZSBpbnRvIGRpcmVjdGl2ZSBzY29wZQpAbWVkaWEgc2NyZWVuIHsKICAudGVzdCB7CiAgICByZXN1bHQgOiB0ZXN0LWdsb2JhbCgpOwogIH0KfQpAZm9udC1mYWNlIHsKICByZXN1bHQgOiB0ZXN0LWdsb2JhbCgpOwp9CgovLyBgdGVzdC1nbG9iYWxgIGZ1bmN0aW9uIHNob3VsZCBwcm9wYWdhdGUgaW50byBuZXN0ZWQgZGlyZWN0aXZlIHNjb3BlcwpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEwMHB4KSB7CiAgQG1lZGlhIChtYXgtd2lkdGg6NDAwcHgpIHsKCQkudGVzdCB7CgkJCXJlc3VsdCA6IHRlc3QtZ2xvYmFsKCk7CgkJfQoJfQp9CgoudGVzdCB7CiAgQG1lZGlhIHNjcmVlbiB7CiAgICBAcGx1Z2luICIuL3BsdWdpbi9wbHVnaW4tbG9jYWwiOwogICAgcmVzdWx0IDogdGVzdC1sb2NhbCgpOwogIH0KfQoKCgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/plugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/plugin/plugin-global.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CmZ1bmN0aW9ucy5hZGRNdWx0aXBsZSh7CiAgICAidGVzdC1zaGFkb3ciIDogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIG5ldyB0cmVlLkFub255bW91cyggImdsb2JhbCIgKTsKICAgIH0sCiAgICAidGVzdC1nbG9iYWwiIDogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIG5ldyB0cmVlLkFub255bW91cyggImdsb2JhbCIgKTsKICAgIH0KfSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/plugin/plugin-local.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb25zLmFkZE11bHRpcGxlKHsKICAgICJ0ZXN0LXNoYWRvdyIgOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbmV3IHRyZWUuQW5vbnltb3VzKCAibG9jYWwiICk7CiAgICB9LAogICAgInRlc3QtbG9jYWwiIDogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIG5ldyB0cmVlLkFub255bW91cyggImxvY2FsIiApOwogICAgfQp9KTsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/plugin/plugin-transitive.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb25zLmFkZE11bHRpcGxlKHsKICAgICJ0ZXN0LXRyYW5zaXRpdmUiIDogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIG5ldyB0cmVlLkFub255bW91cyggInRyYW5zaXRpdmUiICk7CiAgICB9Cn0pOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/plugin/plugin-transitive.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHBsdWdpbiAicGx1Z2luLXRyYW5zaXRpdmUiOwoKLm90aGVyIHsKICB0cmFucyA6IHRlc3QtdHJhbnNpdGl2ZSgpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/postProcessorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/postProcessorPlugin/postProcessor.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNvbG9yOiB3aGl0ZTsKLnRlc3QgewogICAgY29sb3I6IEBjb2xvcjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/preProcessorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/preProcessorPlugin/preProcessor.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogICAgY29sb3I6IEBjb2xvcjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/property-name-interp.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnBpLXRlc3QgewogICAgQHByZWZpeDogdWZvLTsKICAgIEBhOiAgICBib3JkZXI7CiAgICBAYmI6ICAgICAgdG9wOwogICAgQGNfYzogICAgbGVmdDsKICAgIEBkLWQ0OiByYWRpdXM7CiAgICBALTogICAgICAgICAtOwoKICAgIEB2YXI6IH4nQG5vdC12YXJpYWJsZSc7CgogICAgQHthfTogMDsKICAgIEB7dmFyfTogQHZhcjsKICAgIEB7cHJlZml4fXdpZHRoOiA1MCU7CiAgICAqLXotQHthfSA6MXB4IGRhc2hlZCBibHVlOwogICAgLXd3dy1Ae2F9LUB7YmJ9OiAycHg7CiAgICBAe2QtZDR9LWlzLW5vdC1hLUB7YX06dHJ1ZTsKICAgIEB7YX0tQHtiYn0tQHtjX2N9LUB7ZC1kNH0gICAgICAgOiAyZW07CiAgICBAe2F9QHstfUB7YmJ9QHstfXJlZEB7LX1Ae2QtZDR9LTogM3B0OwoKICAgIC5taXhpbihtaXhlcik7CiAgICAubWVyZ2UoaXNoLCBiYXNlKTsKfQoKQGdsb2JhbDogZ2xvYmFsOwoKLm1peGluKEBhcmcpIHsKICAgIEBsb2NhbDogbG9jYWw7CiAgICBAe2dsb2JhbH0tQHtsb2NhbH0tQHthcmd9LXByb3BlcnR5OiBzdHJvbmc7Cn0KCi5tZXJnZShAcCwgQHYpIHsKICAgICYtbWVyZ2UgewogICAgICAgIEBwcmVmaXg6IHByZTsKICAgICAgICBAc3VmZml4OiBpc2g7CiAgICAgICAgQHtwcmVmaXh9LXByb3BlcnR5LWlzaCsgICAgICAgOmhpZ2g7CiAgICAgICAgcHJlLXByb3BlcnR5LUB7c3VmZml4fSAgICArOiBtaWRkbGU7CiAgICAgICAgQHtwcmVmaXh9LXByb3BlcnR5LUB7c3VmZml4fSs6ICBsb3c7CiAgICAgICAgQHtwcmVmaXh9LXByb3BlcnR5LUB7cH0gICArICA6ICAgQHY7CgogICAgICAgIEBzdWJ0ZXJmdWdlOiB+JysnOwogICAgICAgIHByZS1wcm9wZXJ0eS1pc2hAe3N1YnRlcmZ1Z2V9OiBuaWNlIHRyeSBkdWRlOwogICAgfQp9CgpwaS1pbmRpcmVjdC12YXJzIHsKICAgIEB7cH06IEBwOwogICAgQHA6IEBAYTsKICAgIEBhOiBiOwogICAgQGI6IGF1dG87Cn0KCnBpLWNvbXBsZXgtdmFsdWVzIHsKICAgIEB7cH1Ae3B9OiBub25lOwogICAgQHA6ICgxICsgMnB4KSBmYWRlb3V0KCNmZjAsIDUwJSksIHBpKCkgLyogZm9vICovOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/rulesets.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ZpcnN0ID4gLm9uZSB7CiAgPiAjc2Vjb25kIC50d28gPiAjZGV1eCB7CiAgICB3aWR0aDogNTAlOwogICAgI3RoaXJkIHsKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IGJsYWNrOwogICAgICAgICNmaWZ0aCB7CiAgICAgICAgICA+ICNzaXh0aCB7CiAgICAgICAgICAgIC5zZXZlbnRoICNlaWdodGggewogICAgICAgICAgICAgICsgI25pbnRoIHsKICAgICAgICAgICAgICAgIGNvbG9yOiBwdXJwbGU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGhlaWdodDogMTAwJTsKICAgIH0KICAgICNmb3VydGgsICNmaXZlLCAjc2l4IHsKICAgICAgY29sb3I6ICMxMTAwMDA7CiAgICAgIC5zZXZlbiwgLmVpZ2h0ID4gI25pbmUgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogICAgICB9CiAgICAgICN0ZW4gewogICAgICAgIGNvbG9yOiByZWQ7CiAgICAgIH0KICAgIH0KICB9CiAgZm9udC1zaXplOiAyZW07Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/scope.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHg6IHJlZDsKQHg6IGJsdWU7CkB6OiB0cmFuc3BhcmVudDsKQG1peDogbm9uZTsKCi5taXhpbiB7CiAgQG1peDogIzk4OTsKfQpAbWl4OiBibHVlOwoudGlueS1zY29wZSB7CiAgY29sb3I6IEBtaXg7IC8vICM5ODkKICAubWl4aW47Cn0KCi5zY29wZTEgewogIEB5OiBvcmFuZ2U7CiAgQHo6IGJsYWNrOwogIGNvbG9yOiBAeDsgLy8gYmx1ZQogIGJvcmRlci1jb2xvcjogQHo7IC8vIGJsYWNrCiAgLmhpZGRlbiB7CiAgICBAeDogIzEzMTMxMzsKICB9CiAgLnNjb3BlMiB7CiAgICBAeTogcmVkOwogICAgY29sb3I6IEB4OyAvLyBibHVlCiAgICAuc2NvcGUzIHsKICAgICAgQGxvY2FsOiB3aGl0ZTsKICAgICAgY29sb3I6IEB5OyAvLyByZWQKICAgICAgYm9yZGVyLWNvbG9yOiBAejsgLy8gYmxhY2sKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGxvY2FsOyAvLyB3aGl0ZQogICAgfQogIH0KfQoKI25hbWVzcGFjZSB7CiAgLnNjb3BlZF9taXhpbigpIHsKICAgIEBsb2NhbC13aWxsLWJlLW1hZGUtZ2xvYmFsOiBncmVlbjsKICAgIC5zY29wZSB7CiAgICAgIHNjb3BlZC12YWw6IEBsb2NhbC13aWxsLWJlLW1hZGUtZ2xvYmFsOwogICAgfQogIH0KfQoKI25hbWVzcGFjZSA+IC5zY29wZWRfbWl4aW4oKTsKCi5zZXRIZWlnaHQoQGgpIHsgQGhlaWdodDogMTAyNHB4OyB9Ci51c2VIZWlnaHRJbk1peGluQ2FsbChAaCkgeyAudXNlSGVpZ2h0SW5NaXhpbkNhbGwgeyBtaXhpbi1oZWlnaHQ6IEBoOyB9IH0KQG1haW5IZWlnaHQ6IDUwJTsKLnNldEhlaWdodChAbWFpbkhlaWdodCk7Ci5oZWlnaHRJc1NldCB7IGhlaWdodDogQGhlaWdodDsgfQoudXNlSGVpZ2h0SW5NaXhpbkNhbGwoQGhlaWdodCk7CgouaW1wb3J0UnVsZXNldCgpIHsKICAuaW1wb3J0ZWQgewogICAgZXhpc3RzOiB0cnVlOwogIH0KfQouaW1wb3J0UnVsZXNldCgpOwoudGVzdEltcG9ydGVkIHsKICAuaW1wb3J0ZWQ7Cn0KCkBwYXJhbWV0ZXJEZWZhdWx0OiAndG9wIGxldmVsJzsKQGFub3RoZXJWYXJpYWJsZTogJ3RvcCBsZXZlbCc7Ci8vbWl4aW4gdXNlcyB0b3AtbGV2ZWwgdmFyaWFibGVzCi5taXhpbk5vUGFyYW0oQHBhcmFtZXRlcjogQHBhcmFtZXRlckRlZmF1bHQpIHdoZW4gKEBwYXJhbWV0ZXIgPSAndG9wIGxldmVsJykgewogIGRlZmF1bHQ6IEBwYXJhbWV0ZXI7CiAgc2NvcGU6IEBhbm90aGVyVmFyaWFibGU7CiAgc3ViLXNjb3BlLW9ubHk6IEBzdWJTY29wZU9ubHk7Cn0KCiNhbGxBcmVVc2VkSGVyZSB7CiAgLy9yZWRlZmluZSB0b3AtbGV2ZWwgdmFyaWFibGVzIGluIGRpZmZlcmVudCBzY29wZQogIEBwYXJhbWV0ZXJEZWZhdWx0OiAnaW5zaWRlJzsKICBAYW5vdGhlclZhcmlhYmxlOiAnaW5zaWRlJzsKICBAc3ViU2NvcGVPbmx5OiAnaW5zaWRlJzsKICAvL3VzZSB0aGUgbWl4aW4KICAubWl4aW5Ob1BhcmFtKCk7Cn0KI3BhcmVudFNlbGVjdG9yU2NvcGUgewogIEBjb2w6IHdoaXRlOwogICYgewogICAgQGNvbDogYmxhY2s7CiAgfQogIHByb3A6IEBjb2w7CiAgJiB7CiAgICBAY29sOiBibGFjazsKICB9Cn0KLnRlc3QtZW1wdHktbWl4aW4oKSB7Cn0KI3BhcmVudFNlbGVjdG9yU2NvcGVNaXhpbnMgewogICYgewogICAgLnRlc3QtZW1wdHktbWl4aW4oKSB7CiAgICAgIHNob3VsZDogbmV2ZXIgc2VlZSAxOwogICAgfQogIH0KICAudGVzdC1lbXB0eS1taXhpbigpOwogICYgewogICAgLnRlc3QtZW1wdHktbWl4aW4oKSB7CiAgICAgIHNob3VsZDogbmV2ZXIgc2VlZSAyOwogICAgfQogIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/selectors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aDEsIGgyLCBoMyB7CiAgYSwgcCB7CiAgICAmOmhvdmVyIHsKICAgICAgY29sb3I6IHJlZDsKICAgIH0KICB9Cn0KCiNhbGwgeyBjb2xvcjogYmx1ZTsgfQojdGhlIHsgY29sb3I6IGJsdWU7IH0KI3NhbWUgeyBjb2xvcjogYmx1ZTsgfQoKdWwsIGxpLCBkaXYsIHEsIGJsb2NrcXVvdGUsIHRleHRhcmVhIHsKICBtYXJnaW46IDA7Cn0KCnRkIHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKfQoKdGQsIGlucHV0IHsKICBsaW5lLWhlaWdodDogMWVtOwp9CgphIHsKICBjb2xvcjogcmVkOwoKICAmOmhvdmVyIHsgY29sb3I6IGJsdWU7IH0KCiAgZGl2ICYgeyBjb2xvcjogZ3JlZW47IH0KCiAgcCAmIHNwYW4geyBjb2xvcjogeWVsbG93OyB9Cn0KCi5mb28gewogIC5iYXIsIC5iYXogewogICAgJiAucXV4IHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAucXV4ICYgewogICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICB9CiAgICAucXV4JiB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIH0KICAgIC5xdXggJiAuYml6IHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICB9Cn0KCi5iIHsKICYuYyB7CiAgLmEmIHsKICAgY29sb3I6IHJlZDsKICB9CiB9Cn0KCi5iIHsKIC5jICYgewogICYuYSB7CiAgIGNvbG9yOiByZWQ7CiAgfQogfQp9CgoucCB7CiAgLmZvbyAmLmJhciB7CiAgICBjb2xvcjogcmVkOwogIH0KfQoKLnAgewogIC5mb28mLmJhciB7CiAgICBjb2xvcjogcmVkOwogIH0KfQoKLmZvbyB7CiAgLmZvbyArICYgewogICAgYmFja2dyb3VuZDogYW1iZXI7CiAgfQogICYgKyAmIHsKICAgIGJhY2tncm91bmQ6IGFtYmVyOwogIH0KfQoKLmZvbywgLmJhciB7CiAgJiArICYgewogICAgYmFja2dyb3VuZDogYW1iZXI7CiAgfQp9CgouZm9vLCAuYmFyIHsKICBhLCBiIHsKICAgICYgPiAmIHsKICAgICAgYmFja2dyb3VuZDogYW1iZXI7CiAgICB9CiAgfQp9Cgoub3RoZXIgOjpmbm9yZCB7IGNvbG9yOiByZWQgfQoub3RoZXI6OmZub3JkIHsgY29sb3I6IHJlZCB9Ci5vdGhlciB7CiAgOjpibm9yZCB7Y29sb3I6IHJlZCB9CiAgJjo6Ym5vcmQge2NvbG9yOiByZWQgfQp9Ci8vIHNlbGVjdG9yIGludGVycG9sYXRpb24KQHRoZW1lOiBibG9vZDsKQHNlbGVjdG9yOiB+Ii5Ae3RoZW1lfSI7CkB7c2VsZWN0b3J9IHsKICBjb2xvcjpyZWQ7Cn0KQHtzZWxlY3Rvcn1yZWQgewogIGNvbG9yOiBncmVlbjsKfQoucmVkIHsKICAjQHt0aGVtZX0uQHt0aGVtZX0mLmJsYWNrOkB7dGhlbWV9IHsKICAgIGNvbG9yOmJsYWNrOwogIH0KfQpAbnVtOiAzOwo6bnRoLWNoaWxkKEB7bnVtfSkgewogIHNlbGVjdG9yOiBpbnRlcnBvbGF0ZWQ7Cn0KLnRlc3QgewogICY6bnRoLWNoaWxkKEB7bnVtfSkgewogICAgc2VsZWN0b3I6IGludGVycG9sYXRlZDsKICB9CiAgJjpudGgtY2hpbGQob2RkKTpub3QoOm50aC1jaGlsZCgzKSkgewogICAgY29sb3I6ICNmZjAwMDA7CiAgfQogfQpbcHJvcF0sCltwcm9wPTEwJV0sCltwcm9wPSJ2YWx1ZUB7bnVtfSJdLApbcHJvcCo9InZhbEB7bnVtfSJdLApbfHByb3B+PSJ2YWxAe251bX0iXSwKWyp8cHJvcCQ9InZhbEB7bnVtfSJdLApbbnN8cHJvcF49InZhbEB7bnVtfSJdLApbQHtudW19Xj0idmFsQHtudW19Il0sCltAe251bX09QHtudW19XSwKW0B7bnVtfV0gewogIGF0dHJpYnV0ZXM6IHllczsKfQoKLyoKTGFyZ2UgY29tbWVudCBtZWFucyBjaHVuayB3aWxsIGJlIGVtaXR0ZWQgYWZ0ZXIgfSB3aGljaCBtZWFucyBjaHVuayB3aWxsIGJlZ2luIHdpdGggd2hpdGVzcGFjZS4uLgpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawoqLwpAe3NlbGVjdG9yfSB7CiAgY29sb3I6IHJlZDsKfQoub25seS1uZXN0ZWQgewogIC5sZXZlbDIgewogICAgLmZvbzpub3QoLnRzdCY6aG92ZXIpIHsKICAgICAgdGVzdDogb25seS1uZXN0ZWQ7CiAgICB9CiAgfQp9Ci5uZXN0ZW5kLWFuZC1ub24tbmVzdGVkIHsKICAuZm9vJjpub3QoLnRzdCY6aG92ZXIpIHsKICAgIHRlc3Q6IG5lc3RlbmQtYW5kLW5vbi1uZXN0ZWQ7CiAgfQp9Ci5zZWxlY3Rvcjpub3QoJjpob3ZlcikgewogIHRlc3Q6IGdsb2JhbCBzY29wZTsKfQovLyBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2lzc3Vlcy8yMjA2Ci5leHRlbmQtdGhpcyB7CiAgY29udGVudDogJ1wyNjYxJzsKfQouZmlyc3QtbGV2ZWwgewogIC5zZWNvbmQtbGV2ZWwgewogICAgLmFjdGl2ZSY6ZXh0ZW5kKC5leHRlbmQtdGhpcykgeyB9CiAgICAmLmFjdGl2ZTI6ZXh0ZW5kKC5leHRlbmQtdGhpcykgeyB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/sourcemaps-empty/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/sourcemaps-empty/empty.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/sourcemaps-empty/var-defs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHRlc3QtdmFyOiAnc29tZXRoaW5nJzs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/sourcemaps/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/sourcemaps/basic.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm15LWNvbG9yIjogInJlZCIKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/sourcemaps/basic.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhcjogYmxhY2s7CgouYSgpIHsKICBjb2xvcjogcmVkOwp9CgouYiB7CiAgY29sb3I6IGdyZWVuOwogIC5hKCk7CiAgY29sb3I6IGJsdWU7CiAgYmFja2dyb3VuZDogQHZhcjsKfQoKLmEsIC5iIHsKICBiYWNrZ3JvdW5kOiBncmVlbjsKICAuYywgLmQgewogICAgYmFja2dyb3VuZDogZ3JheTsKICAgICYgKyAmIHsKICAgICAgY29sb3I6IHJlZDsKICAgIH0KICB9Cn0KCi5leHRlbmQ6ZXh0ZW5kKC5hIGFsbCkgewogIGNvbG9yOiBwaW5rOwp9CkBpbXBvcnQgKGlubGluZSkgImltcG9ydGVkLmNzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/sourcemaps/imported.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lypjb21tZW50cyovCi51bnVzZWQtY3NzIHsKICAgIGNvbG9yOiB3aGl0ZTsKfQouaW1wb3J0ZWQgewogICAgY29sb3I6IGJsYWNrOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/static-urls/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/static-urls/urls.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmIik7CiAgc3JjOiBsb2NhbChGdXR1cmEtTWVkaXVtKSwKICAgICAgIHVybChmb250cy5zdmcjTXlHZW9tZXRyaWNNb2Rlcm4pIGZvcm1hdCgic3ZnIik7Cn0KI3Nob3J0aGFuZHMgewogIGJhY2tncm91bmQ6IHVybCgiaHR0cDovL3d3dy5sZXNzY3NzLm9yZy9zcGVjLmh0bWwiKSBuby1yZXBlYXQgMCA0cHg7Cn0KI21pc2MgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvaW1hZ2UuanBnKTsKfQojZGF0YS11cmkgewogIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztjaGFyc2V0PXV0Zi04O2Jhc2U2NCwKICAgIGtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUFRTUFBQUFsUFcwaUFBQUFCbEJNVkVVQUFBRC8KICAgIGsvLytsMlovZEFBQUFNMGxFUVZSNG5HUDQvNS9oLzErRy81OFpEckF6M0QvTWNIOHl3ODNORERlTkdlNFUKICAgIGtnOUM5end6M2dWTE1EQS9BNlA5L0FGR0dGeWpPWFp0UUFBQUFBRWxGVGtTdVFtQ0MpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3gtcG5nLGY5ZGlmU1NGSUlHRklGSkQxZjk4MkZTREtBQTk9PSk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVwiUm9ra2l0dFwiOlwoNDAwXCksNzAwKTsKfQoKI3N2Zy1kYXRhLXVyaSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsIDxzdmcgdmVyc2lvbj0iMS4xIj48Zz48L2c+PC9zdmc+Jyk7Cn0KCi5jb21tYS1kZWxpbWl0ZWQgewogIGJhY2tncm91bmQ6IHVybChiZy5qcGcpIG5vLXJlcGVhdCwgdXJsKGJnLnBuZykgcmVwZWF0LXggdG9wIGxlZnQsIHVybChiZyk7Cn0KLnZhbHVlcyB7CiAgICBAYTogJ1RyZWJ1Y2hldCc7CiAgICB1cmw6IHVybChAYSk7Cn0KCkBpbXBvcnQgIi4uL2ltcG9ydC9pbXBvcnQtYW5kLXJlbGF0aXZlLXBhdGhzLXRlc3QiOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/strict-units/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/strict-units/strict-units.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnVuaXRzIHsKICBjYW5jZWxzLXRvLW5vdGhpbmc6ICgxcHggLyAxcHgpOwogIGNhbmNlbHM6ICgoKCgxMHB4IC8gNWVtKSAvIDFweCkgKiAzZW0pICogMXB4KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/strings.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3N0cmluZ3MgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL3Nvbi1vZi1hLWJhbmFuYS5jb20iKTsKICBxdW90ZXM6ICJ+IiAifiI7CiAgY29udGVudDogIiMqJTomXiwpIS4ofip9KSI7CiAgZW1wdHk6ICIiOwogIGJyYWNrZXRzOiAieyIgIn0iOwogIGVzY2FwZXM6ICJcImhlbGxvXCIgXFx3b3JsZCI7CiAgZXNjYXBlczI6ICJcImxsbyI7Cn0KI2NvbW1lbnRzIHsKICBjb250ZW50OiAiLyogaGVsbG8gKi8gLy8gbm90LXNvLXNlY3JldCI7Cn0KI3NpbmdsZS1xdW90ZSB7CiAgcXVvdGVzOiAiJyIgIiciOwogIGNvbnRlbnQ6ICciIiMhJiIiJzsKICBlbXB0eTogJyc7CiAgc2VtaS1jb2xvbjogJzsnOwp9CiNlc2NhcGVkIHsKICBmaWx0ZXI6IH4iRFguVHJhbnNmb3JtLk1TLkJTLmZpbHRlcihvcGFjaXR5PTUwKSI7Cn0KI29uZS1saW5lIHsgaW1hZ2U6IHVybChodHRwOi8vdG9va3MuY29tKSB9CiNjcmF6eSB7IGltYWdlOiB1cmwoaHR0cDovLyksICJ9IiwgdXJsKCJodHRwOi8vfSIpIH0KI2ludGVycG9sYXRpb24gewogIEB2YXI6ICcvZGV2JzsKICB1cmw6ICJodHRwOi8vbGVzc2Nzcy5vcmdAe3Zhcn0vaW1hZ2UuanBnIjsKCiAgQHZhcjI6IDI1NjsKICB1cmwyOiAiaHR0cDovL2xlc3Njc3Mub3JnL2ltYWdlLUB7dmFyMn0uanBnIjsKCiAgQHZhcjM6ICM0NTY7CiAgdXJsMzogImh0dHA6Ly9sZXNzY3NzLm9yZ0B7dmFyM30iOwoKICBAdmFyNDogaGVsbG87CiAgdXJsNDogImh0dHA6Ly9sZXNzY3NzLm9yZy9Ae3ZhcjR9IjsKCiAgQHZhcjU6IDU0LjRweDsKICB1cmw1OiAiaHR0cDovL2xlc3Njc3Mub3JnL0B7dmFyNX0iOwp9CgovLyBtdWx0aXBsZSBjYWxscyB3aXRoIHN0cmluZyBpbnRlcnBvbGF0aW9uCgoubWl4LW11bCAoQGE6IGdyZWVuKSB7CiAgICBjb2xvcjogfiJAe2F9IjsKfQoubWl4LW11bC1jbGFzcyB7CiAgICAubWl4LW11bChibHVlKTsKICAgIC5taXgtbXVsKHJlZCk7CiAgICAubWl4LW11bChibGFjayk7CiAgICAubWl4LW11bChvcmFuZ2UpOwp9CgpAdGVzdDogQXJpYWwsIFZlcmRhbmEsIFNhbi1TZXJpZjsKLndhdGVybWFyayB7CiAgQGZhbWlseTogfiJVbml2ZXJzLCBAe3Rlc3R9IjsKICBmYW1pbHk6IEBmYW1pbHk7Cn0KI2l0ZXJhdGVkLWludGVycG9sYXRpb24gewogIEBib3gtc21hbGw6IDEwcHg7CiAgQGJveC1sYXJnZTogMTAwcHg7CgogIC5taXhpbiB7IC8vIGJvdGggcnVsZXNldCBhbmQgbWl4aW4KICAgIHdpZHRoOiB+IkB7Ym94LUB7c3VmZml4fX0iOwogICAgd2VpcmQ6IH4iQHtib3h9LUB7c3VmZml4fX0iOwogICAgd2lkdGgtc3RyOiAiQHtib3gtQHtzdWZmaXh9fSI7CiAgICB3ZWlyZC1zdHI6ICJAe2JveH0tQHtzdWZmaXh9fSI7CiAgICBAYm94OiB+IkB7Ym94IjsKICAgIEBzdWZmaXg6IGxhcmdlOwogIH0KICAuaW50ZXJwb2xhdGlvbi1taXhpbiB7CiAgICAubWl4aW4oKTsgLy9jYWxsIHRoZSBhYm92ZSBhcyBtaXhpbgogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/url-args/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/url-args/urls.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmIik7CiAgc3JjOiBsb2NhbChGdXR1cmEtTWVkaXVtKSwKICAgICAgIHVybChmb250cy5zdmcjTXlHZW9tZXRyaWNNb2Rlcm4pIGZvcm1hdCgic3ZnIik7Cn0KI3Nob3J0aGFuZHMgewogIGJhY2tncm91bmQ6IHVybCgiaHR0cDovL3d3dy5sZXNzY3NzLm9yZy9zcGVjLmh0bWwiKSBuby1yZXBlYXQgMCA0cHg7CiAgYmFja2dyb3VuZDogdXJsKCJpbWcuanBnIikgY2VudGVyIC8gMTAwcHg7CiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoaW1hZ2UucG5nKSBjZW50ZXIgLyAxcHggMTAwcHggcmVwZWF0LXggc2Nyb2xsIGNvbnRlbnQtYm94IHBhZGRpbmctYm94Owp9CiNtaXNjIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL2ltYWdlLmpwZyk7Cn0KI2RhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7Y2hhcnNldD11dGYtODtiYXNlNjQsCiAgICBraVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFBUU1BQUFBbFBXMGlBQUFBQmxCTVZFVUFBQUQvCiAgICBrLy8rbDJaL2RBQUFBTTBsRVFWUjRuR1A0LzUvaC8xK0cvNThaRHJBejNEL01jSDh5dzgzTkREZU5HZTRVCiAgICBrZzlDOXp3ejNnVkxNREEvQTZQOS9BRkdHRnlqT1hadFFBQUFBQUVsRlRrU3VRbUNDKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCIpOwp9Cgojc3ZnLWRhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwgPHN2ZyB2ZXJzaW9uPSIxLjEiPjxnPjwvZz48L3N2Zz4nKTsKfQoKLmNvbW1hLWRlbGltaXRlZCB7CiAgYmFja2dyb3VuZDogdXJsKGJnLmpwZykgbm8tcmVwZWF0LCB1cmwoYmcucG5nKSByZXBlYXQteCB0b3AgbGVmdCwgdXJsKGJnKTsKfQoudmFsdWVzIHsKICAgIEBhOiAnVHJlYnVjaGV0JzsKICAgIHVybDogdXJsKEBhKTsKfQoKQGltcG9ydCAiLi4vaW1wb3J0L2ltcG9ydHMvZm9udCI7CgojZGF0YS11cmkgewogIHVyaTogZGF0YS11cmkoJ2ltYWdlL2pwZWc7YmFzZTY0JywgJy4uLy4uL2RhdGEvaW1hZ2UuanBnJyk7Cn0KCiNkYXRhLXVyaS1ndWVzcyB7CiAgdXJpOiBkYXRhLXVyaSgnLi4vLi4vZGF0YS9pbWFnZS5qcGcnKTsKfQoKI2RhdGEtdXJpLWFzY2lpIHsKICB1cmktMTogZGF0YS11cmkoJ3RleHQvaHRtbCcsICcuLi8uLi9kYXRhL3BhZ2UuaHRtbCcpOwogIHVyaS0yOiBkYXRhLXVyaSgnLi4vLi4vZGF0YS9wYWdlLmh0bWwnKTsKfQoKI3N2Zy1mdW5jdGlvbnMgewogIGJhY2tncm91bmQtaW1hZ2U6IHN2Zy1ncmFkaWVudCh0byBib3R0b20sIGJsYWNrLCB3aGl0ZSk7CiAgYmFja2dyb3VuZC1pbWFnZTogc3ZnLWdyYWRpZW50KHRvIGJvdHRvbSwgYmxhY2ssIG9yYW5nZSAzJSwgd2hpdGUpOwogIEBncmVlbl81OiBncmVlbiA1JTsKICBAb3JhbmdlX3BlcmNlbnRhZ2U6IDMlOwogIEBvcmFuZ2VfY29sb3I6IG9yYW5nZTsKICBiYWNrZ3JvdW5kLWltYWdlOiBzdmctZ3JhZGllbnQodG8gYm90dG9tLCAobWl4KGJsYWNrLCB3aGl0ZSkgKyAjNDQ0KSAxJSwgQG9yYW5nZV9jb2xvciBAb3JhbmdlX3BlcmNlbnRhZ2UsICgoQGdyZWVuXzUpKSwgd2hpdGUgOTUlKTsKfQoKI2RhdGEtdXJpLXdpdGgtc3BhY2VzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIGRhdGE6aW1hZ2UveC1wbmcsZjlkaWZTU0ZJSUdGSUZKRDFmOTgyRlNES0FBOT09KTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoICcgZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0nKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/urls.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAibmVzdGVkLWdyYWRpZW50LXdpdGgtc3ZnLWdyYWRpZW50L21peGluLWNvbnN1bWVyLmxlc3MiOwoKQGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmIik7CiAgc3JjOiBsb2NhbChGdXR1cmEtTWVkaXVtKSwKICAgICAgIHVybChmb250cy5zdmcjTXlHZW9tZXRyaWNNb2Rlcm4pIGZvcm1hdCgic3ZnIik7CiAgbm90LWEtY29tbWVudDogdXJsKC8veik7Cn0KI3Nob3J0aGFuZHMgewogIGJhY2tncm91bmQ6IHVybCgiaHR0cDovL3d3dy5sZXNzY3NzLm9yZy9zcGVjLmh0bWwiKSBuby1yZXBlYXQgMCA0cHg7CiAgYmFja2dyb3VuZDogdXJsKCJpbWcuanBnIikgY2VudGVyIC8gMTAwcHg7CiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoaW1hZ2UucG5nKSBjZW50ZXIgLyAxcHggMTAwcHggcmVwZWF0LXggc2Nyb2xsIGNvbnRlbnQtYm94IHBhZGRpbmctYm94Owp9CiNtaXNjIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL2ltYWdlLmpwZyk7Cn0KI2RhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7Y2hhcnNldD11dGYtODtiYXNlNjQsCiAgICBraVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFBUU1BQUFBbFBXMGlBQUFBQmxCTVZFVUFBQUQvCiAgICBrLy8rbDJaL2RBQUFBTTBsRVFWUjRuR1A0LzUvaC8xK0cvNThaRHJBejNEL01jSDh5dzgzTkREZU5HZTRVCiAgICBrZzlDOXp3ejNnVkxNREEvQTZQOS9BRkdHRnlqT1hadFFBQUFBQUVsRlRrU3VRbUNDKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCIpOwp9Cgojc3ZnLWRhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwgPHN2ZyB2ZXJzaW9uPSIxLjEiPjxnPjwvZz48L3N2Zz4nKTsKfQoKLmNvbW1hLWRlbGltaXRlZCB7CiAgYmFja2dyb3VuZDogdXJsKGJnLmpwZykgbm8tcmVwZWF0LCB1cmwoYmcucG5nKSByZXBlYXQteCB0b3AgbGVmdCwgdXJsKGJnKTsKfQoudmFsdWVzIHsKICAgIEBhOiAnVHJlYnVjaGV0JzsKICAgIHVybDogdXJsKEBhKTsKfQoKQGltcG9ydCAiaW1wb3J0L2ltcG9ydC1hbmQtcmVsYXRpdmUtcGF0aHMtdGVzdCI7CgojcmVsYXRpdmUtdXJsLWltcG9ydCB7CiAgICAudW5xdW90ZWQtcmVsYXRpdmUtcGF0aC1iZzsKICAgIC5xdW90ZWQtcmVsYXRpdmUtcGF0aC1ib3JkZXItaW1hZ2U7Cn0KCiNkYXRhLXVyaSB7CiAgdXJpOiBkYXRhLXVyaSgnaW1hZ2UvanBlZztiYXNlNjQnLCAnLi4vZGF0YS9pbWFnZS5qcGcnKTsKICBAdmFyOiByZXBsYWNlKCcuLi9kYXRhL3JlcGxhY2UuanBnJywgInJlcGxhY2UiLCAiaW1hZ2UiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBkYXRhLXVyaShAdmFyKSwgZGF0YS11cmkocmVwbGFjZSgnLi4vZGF0YS9pbWFnZS5maWxleHQnLCAiZmlsZXh0IiwgImpwZyIpKTsKCiAgdXJpLWZyYWdtZW50OiBkYXRhLXVyaSgnaW1hZ2UvanBlZztiYXNlNjQnLCAnLi4vZGF0YS9pbWFnZS5qcGcjZnJhZ21lbnQnKTsKfQoKI2RhdGEtdXJpLWd1ZXNzIHsKICB1cmk6IGRhdGEtdXJpKCcuLi9kYXRhL2ltYWdlLmpwZycpOwp9CgojZGF0YS11cmktYXNjaWkgewogIHVyaS0xOiBkYXRhLXVyaSgndGV4dC9odG1sJywgJy4uL2RhdGEvcGFnZS5odG1sJyk7CiAgdXJpLTI6IGRhdGEtdXJpKCcuLi9kYXRhL3BhZ2UuaHRtbCcpOwp9CgojZmlsZS1mdW5jdGlvbnMgewogIHVyaTogZGF0YS11cmkoJy4uL2RhdGEvZGF0YS11cmktZmFpbC5wbmcnKTsKICBzdmctbm90LWJhc2UtNjQ6IGRhdGEtdXJpKCcuLi9kYXRhL2ltYWdlLnN2ZycpOwogIHNpemU6IGltYWdlLXNpemUoJy4uL2RhdGEvZGF0YS11cmktZmFpbC5wbmcnKTsKICB3aWR0aDogaW1hZ2Utd2lkdGgoJy4uL2RhdGEvZGF0YS11cmktZmFpbC5wbmcnKTsKICBoZWlnaHQ6IGltYWdlLWhlaWdodCgnLi4vZGF0YS9kYXRhLXVyaS1mYWlsLnBuZycpOwp9Ci5hZGRfYW5faW1wb3J0KEBmaWxlX3RvX2ltcG9ydCkgewpAaW1wb3J0ICJAe2ZpbGVfdG9faW1wb3J0fSI7Cn0KCi5hZGRfYW5faW1wb3J0KCJmaWxlLmNzcyIpOwoKI3N2Zy1mdW5jdGlvbnMgewogIGJhY2tncm91bmQtaW1hZ2U6IHN2Zy1ncmFkaWVudCh0byBib3R0b20sIGJsYWNrLCB3aGl0ZSk7CiAgYmFja2dyb3VuZC1pbWFnZTogc3ZnLWdyYWRpZW50KHRvIGJvdHRvbSwgYmxhY2ssIG9yYW5nZSAzJSwgd2hpdGUpOwogIEBncmVlbl81OiBncmVlbiA1JTsKICBAb3JhbmdlX3BlcmNlbnRhZ2U6IDMlOwogIEBvcmFuZ2VfY29sb3I6IG9yYW5nZTsKICBiYWNrZ3JvdW5kLWltYWdlOiBzdmctZ3JhZGllbnQodG8gYm90dG9tLCAobWl4KGJsYWNrLCB3aGl0ZSkgKyAjNDQ0KSAxJSwgQG9yYW5nZV9jb2xvciBAb3JhbmdlX3BlcmNlbnRhZ2UsICgoQGdyZWVuXzUpKSwgd2hpdGUgOTUlKTsKfQovL2l0IHNob3VsZCB3b3JrIGFsc28gaW5zaWRlIEBmb250LWZhY2UgIzIwMzUKQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNeVdlYkZvbnQnOwogIHNyYzogdXJsKHdlYmZvbnQuZW90KTsKICBzcmMrOiB1cmwoJ3dlYmZvbnQuZW90PyNpZWZpeCcpOwogIHNyYytfOiBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7CiAgc3JjKzogdXJsKCd3ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTsKICBzcmMrOiBmb3JtYXQoJ3RydWV0eXBlJyk7CiAgc3JjK186IHVybCgnd2ViZm9udC50dGYnKTsKICBzcmMrOiB1cmwoJ3dlYmZvbnQuc3ZnI3N2Z0ZvbnROYW1lJykgZm9ybWF0KCdzdmcnKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/variables-in-at-rules.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBFaWdodDogODsKQGNoYXJzZXQgIlVURi1Ae0VpZ2h0fSI7CgpAbnM6IGxlc3M7CkBuYW1lc3BhY2UgQG5zICJodHRwOi8vbGVzc2Nzcy5vcmciOwoKQG5hbWU6IGVubGFyZ2VyOwpAa2V5ZnJhbWVzIEBuYW1lIHsKICAgIGZyb20ge2ZvbnQtc2l6ZTogMTJweDt9CiAgICB0byAgIHtmb250LXNpemU6IDE1cHg7fQp9CgoubShyZWR1Y2VyKTsKLm0oQG5hbWUpIHsKICAgIEAtd2Via2l0LWtleWZyYW1lcyBAbmFtZSB7CiAgICAgICAgZnJvbSB7Zm9udC1zaXplOiAxM3B4O30KICAgICAgICB0byAgIHtmb250LXNpemU6IDEwcHg7fQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/variables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGE6IDI7CkB4OiAoQGEgKiBAYSk7CkB5OiAoQHggKyAxKTsKQHo6IChAeCAqIDIgKyBAeSk7CkB2YXI6IC0xOwoKLnZhcmlhYmxlcyB7CiAgd2lkdGg6IChAeiArIDFjbSk7IC8vIDE0Y20KfQoKQGI6IEBhICogMTA7CkBjOiAjODg4OwoKQGZvbnRzOiAiVHJlYnVjaGV0IE1TIiwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKQGY6IEBmb250czsKCkBxdW90ZXM6ICJ+IiAifiI7CkBxOiBAcXVvdGVzOwpAb25lUGl4ZWw6IDFweDsKCi52YXJpYWJsZXMgewogIGhlaWdodDogKEBiICsgQHggKyAwcHgpOyAvLyAyNHB4CiAgY29sb3I6IEBjOwogIGZvbnQtZmFtaWx5OiBAZjsKICBxdW90ZXM6IEBxOwp9CgoucmVkZWYgewogICAgQHZhcjogMDsKICAgIC5pbml0aW9uIHsKICAgICAgICBAdmFyOiA0OwogICAgICAgIEB2YXI6IDI7CiAgICAgICAgdGhyZWU6IEB2YXI7CiAgICAgICAgQHZhcjogMzsKICAgIH0KICAgIHplcm86IEB2YXI7Cn0KCkBpbXBvcnRhbnQtdmFyOiBAYyAhaW1wb3J0YW50OwpAaW1wb3J0YW50LXZhci10d286IEBhICFpbXBvcnRhbnQ7Ci52YWx1ZXMgewogICAgbWludXMtb25lOiBAdmFyOwogICAgQGE6ICdUcmVidWNoZXQnOwogICAgQG11bHRpOiAnQScsIEIsIEM7CiAgICBmb250LWZhbWlseTogQGEsIEBhLCBAYTsKICAgIGNvbG9yOiBAYyAhaW1wb3J0YW50OwogICAgc2FtZS1jb2xvcjogQGltcG9ydGFudC12YXI7CiAgICBzYW1lLWFnYWluOiBAaW1wb3J0YW50LXZhciAhaW1wb3J0YW50OwogICAgbXVsdGktaW1wb3J0YW50OiBAaW1wb3J0YW50LXZhciBAaW1wb3J0YW50LXZhciwgQGltcG9ydGFudC12YXItdHdvOwogICAgbXVsdGk6IHNvbWV0aGluZyBAbXVsdGksIEBhOwp9CgoudmFyaWFibGUtbmFtZXMgewogICAgLnF1b3RlZCB7CiAgICAgICAgQHZhcjogJ2hlbGxvJzsKICAgICAgICBAbmFtZTogJ3Zhcic7CiAgICAgICAgbmFtZTogQEBuYW1lOwogICAgfQoKICAgIC51bnF1b3RlZCB7CiAgICAgICAgQHZhcjogJ2hlbGxvJzsKICAgICAgICBAbmFtZTogdmFyOwogICAgICAgIG5hbWU6IEBAbmFtZTsKICAgIH0KICAgIAogICAgLmNvbG9yLWtleXdvcmQgewogICAgICAgIEByZWQ6ICdoZWxsbyc7CiAgICAgICAgQG5hbWU6IHJlZDsKICAgICAgICBuYW1lOiBAQG5hbWU7CiAgICB9Cn0KCi5hbHBoYSB7CiAgICBAdmFyOiA0MjsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT1AdmFyKTsKfQoKLnBvbGx1dGVNaXhpbigpIHsKICAgIEBhOiAncG9sbHV0aW9uJzsKfQoudGVzdFBvbGx1dGlvbiB7CiAgICBAYTogJ25vLXBvbGx1dGlvbic7CiAgICBhOiBAYTsKICAgIC5wb2xsdXRlTWl4aW4oKTsKICAgIGE6IEBhOwp9CgoudW5pdHMgewogIHdpZHRoOiBAb25lUGl4ZWw7CiAgc2FtZS11bml0LWFzLXByZXZpb3VzbHk6IChAb25lUGl4ZWwgLyBAb25lUGl4ZWwpOwogIHNxdWFyZS1waXhlbC1kaXZpZGVkOiAoQG9uZVBpeGVsICogQG9uZVBpeGVsIC8gQG9uZVBpeGVsKTsKICBvZGQtdW5pdDogdW5pdCgoQG9uZVBpeGVsICogNGVtIC8gMmNtKSk7CiAgcGVyY2VudGFnZTogKDEwICogNTAlKTsKICBwaXhlbHM6ICg1MHB4ICogMTApOwogIGNvbnZlcnNpb24tbWV0cmljLWE6ICgyMG1tICsgMWNtKTsKICBjb252ZXJzaW9uLW1ldHJpYy1iOiAoMWNtICsgMjBtbSk7CiAgY29udmVyc2lvbi1pbXBlcmlhbDogKDFpbiArIDcycHQgKyA2cGMpOwogIGN1c3RvbS11bml0OiAoNDJvY3RvY2F0cyAqIDEwKTsKICBjdXN0b20tdW5pdC1jYW5jZWxsaW5nOiAoOGNhdHMgKiA5ZG9ncyAvIDRjYXRzKTsKICBtaXgtdW5pdHM6ICgxcHggKyAxZW0pOwogIGludmFsaWQtdW5pdHM6ICgxcHggKiAxcHgpOwogIC5mYWxsYmFjayB7CiAgICBAcHg6IDE0cHg7CiAgICBAZW06IDEuNGVtOwogICAgQGNtOiAxMGNtOwogICAgZGl2LXB4LTE6IChAcHggLyBAZW0pOwogICAgZGl2LXB4LTI6ICgoQHB4IC8gQGVtKSAvIEBjbSk7CiAgICBzdWItcHgtMTogKEBweCAtIEBlbSk7CiAgICBzdWItY20tMTogKEBjbSAtIChAcHggLSBAZW0pKTsKICAgIG11bC1weC0xOiAoQHB4ICogQGVtKTsKICAgIG11bC1lbS0xOiAoQGVtICogQHB4KTsKICAgIG11bC1lbS0yOiAoKEBlbSAqIEBweCkgKiBAY20pOwogICAgbXVsLWNtLTE6IChAY20gKiAoQGVtICogQHB4KSk7CiAgICBhZGQtcHgtMTogKEBweCArIEBlbSk7CiAgICBhZGQtcHgtMjogKChAcHggKyBAZW0pICsgQGNtKTsKICAgIG11bC1weC0yOiAoKDEgKiBAcHgpICogQGNtKTsKICAgIG11bC1weC0zOiAoKEBweCAqIDEpICogQGNtKTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/visitorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/visitorPlugin/visitor.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogICAgY29sb3I6IHJlZDsKICAgIC1zb21lLWFyaWJpdHJhcnktcHJvcGVydHk6IHZhbHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/less/whitespace.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cgoud2hpdGVzcGFjZQogIHsgY29sb3I6IHdoaXRlOyB9Cgoud2hpdGVzcGFjZQp7CiAgY29sb3I6IHdoaXRlOwp9CiAgLndoaXRlc3BhY2UKeyBjb2xvcjogd2hpdGU7IH0KCi53aGl0ZXNwYWNle2NvbG9yOndoaXRlO30KLndoaXRlc3BhY2UgeyBjb2xvciA6IHdoaXRlIDsgfQoKLndoaXRlLAouc3BhY2UsCi5tYW5pYQp7IGNvbG9yOiB3aGl0ZTsgfQoKLm5vLXNlbWktY29sdW1uIHsgY29sb3I6IHdoaXRlIH0KLm5vLXNlbWktY29sdW1uIHsKICBjb2xvcjogd2hpdGU7CiAgd2hpdGUtc3BhY2U6IHByZQp9Ci5uby1zZW1pLWNvbHVtbiB7Ym9yZGVyOiAycHggc29saWQgd2hpdGV9Ci5uZXdsaW5lcyB7CiAgYmFja2dyb3VuZDogdGhlLAogICAgICAgICAgICAgIGdyZWF0LAogICAgICAgICAgICAgIHdhbGw7CiAgYm9yZGVyOiAycHgKICAgICAgICAgIHNvbGlkCiAgICAgICAgICBibGFjazsKfQouZW1wdHkgewoKfQouc2VsCi5uZXdsaW5lX3dzIC50YWJfd3Mgewpjb2xvcjoKd2hpdGU7CmJhY2tncm91bmQtcG9zaXRpb246IDQ1Ci0yMzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/override/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/override/compression/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/override/compression/compression.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2NvbG91cnN7Y29sb3IxOiNmZWE7Y29sb3IyOiNmZmVlYWE7Y29sb3IzOnJnYmEoMjU1LDIzOCwxNzAsMC4xKTtzdHJpbmc6IiNmZWEiOy8qISBidXQgbm90IHRoaXMgdHlwZQogICAgICBOb3RlIHByZXNlcnZlZCB3aGl0ZXNwYWNlCiAgKi99ZGltZW5zaW9uc3t2YWw6LjFweDt2YWw6MGVtO3ZhbDo0Y207dmFsOi4yO3ZhbDo1O2FuZ2xlcy1tdXN0LWhhdmUtdW5pdDowZGVnO2R1cmF0aW9ucy1tdXN0LWhhdmUtdW5pdDowcztsZW5ndGgtZG9lc250LWhhdmUtdW5pdDowcHg7d2lkdGg6YXV0b1w5fUBwYWdle21hcmtzOm5vbmU7QHRvcC1sZWZ0LWNvcm5lcnt2ZXJ0aWNhbC1hbGlnbjp0b3B9QHRvcC1sZWZ0e3ZlcnRpY2FsLWFsaWduOnRvcH19LnNoYWRvd14uZG9tLGJvZHleXi5zaGFkb3d7ZGlzcGxheTpkb25lfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/override/css.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKZGl2IHsKICBjb2xvcjogYmxhY2s7Cn0KZGl2IHsKICB3aWR0aDogOTklOwp9CiogewogIG1pbi13aWR0aDogNDVlbTsKfQpoMSwKaDIgPiBhID4gcCwKaDMgewogIGNvbG9yOiBub25lOwp9CmRpdi5jbGFzcyB7CiAgY29sb3I6IGJsdWU7Cn0KZGl2I2lkIHsKICBjb2xvcjogZ3JlZW47Cn0KLmNsYXNzI2lkIHsKICBjb2xvcjogcHVycGxlOwp9Ci5vbmUudHdvLnRocmVlIHsKICBjb2xvcjogZ3JleTsKfQpAbWVkaWEgcHJpbnQgewogICogewogICAgZm9udC1zaXplOiAzZW07CiAgfQp9CkBtZWRpYSBzY3JlZW4gewogICogewogICAgZm9udC1zaXplOiAxMHB4OwogIH0KfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dhcmFtb25kIFBybyc7Cn0KYTpob3ZlciwKYTpsaW5rIHsKICBjb2xvcjogIzk5OTsKfQpwLApwOmZpcnN0LWNoaWxkIHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQpxOmxhbmcobm8pIHsKICBxdW90ZXM6IG5vbmU7Cn0KcCArIGgxIHsKICBmb250LXNpemU6IDIuMmVtOwp9CiNzaG9ydGhhbmRzIHsKICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogIGZvbnQ6IDEycHgvMTZweCBBcmlhbDsKICBmb250OiAxMDAlLzE2cHggQXJpYWw7CiAgbWFyZ2luOiAxcHggMDsKICBwYWRkaW5nOiAwIGF1dG87Cn0KI21vcmUtc2hvcnRoYW5kcyB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDFweCAwIDJweCAwOwogIGZvbnQ6IG5vcm1hbCBzbWFsbCAvIDIwcHggJ1RyZWJ1Y2hldCBNUycsIFZlcmRhbmEsIHNhbnMtc2VyaWY7CiAgZm9udDogMC8wIGE7CiAgYm9yZGVyLXJhZGl1czogNXB4IC8gMTBweDsKfQoubWlzYyB7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7CiAgd2lkdGg6IDAuMWVtOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDk5OTg7CiAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZWQpLCB0byhibHVlKSk7CiAgbWFyZ2luOiA7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgd2lkdGg6IGF1dG9cOTsKfQoubWlzYyAubmVzdGVkLW11bHRpcGxlIHsKICBtdWx0aXBsZS1zZW1pLWNvbG9uczogeWVzOwp9CiNpbXBvcnRhbnQgewogIGNvbG9yOiByZWQgIWltcG9ydGFudDsKICB3aWR0aDogMTAwJSFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAyMHB4ICEgaW1wb3J0YW50Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiBmb250LWE7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IGZvbnQtYjsKfQouw6bDuMOlIHsKICBtYXJnaW46IDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/override/functions.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2Z1bmN0aW9ucyB7CiAgY29sb3I6ICM2NjAwMDA7CiAgd2lkdGg6IDE2OwogIGhlaWdodDogdW5kZWZpbmVkKCJzZWxmIik7CiAgYm9yZGVyLXdpZHRoOiA1OwogIHZhcmlhYmxlOiAxMTsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoIzAwMCwgI2ZmZik7Cn0KI2J1aWx0LWluIHsKICBlc2NhcGVkOiAtU29tZTo6d2VpcmQoI3RoaW5nLCB5KTsKICBsaWdodGVuOiAjZmZjY2NjOwogIGxpZ2h0ZW4tcmVsYXRpdmU6ICNmZjY2NjY7CiAgZGFya2VuOiAjMzMwMDAwOwogIGRhcmtlbi1yZWxhdGl2ZTogIzk5MDAwMDsKICBzYXR1cmF0ZTogIzIwM2MzMTsKICBzYXR1cmF0ZS1yZWxhdGl2ZTogIzI4MzQyZjsKICBkZXNhdHVyYXRlOiAjMjkzMzJmOwogIGRlc2F0dXJhdGUtcmVsYXRpdmU6ICMyMzM5MzA7CiAgZ3JleXNjYWxlOiAjMmUyZTJlOwogIGhzbC1jbGFtcDogaHNsKDAsIDAlLCAxMDAlKTsKICBzcGluLXA6IGhzbCgyMCwgNTAlLCA1MCUpOwogIHNwaW4tbjogaHNsKDM1MCwgNTAlLCA1MCUpOwogIGx1bWEtd2hpdGU6IDEwMCU7CiAgbHVtYS1ibGFjazogMCU7CiAgbHVtYS1ibGFjay1hbHBoYTogMCU7CiAgbHVtYS1yZWQ6IDIxLjI2JTsKICBsdW1hLWdyZWVuOiA3MS41MiU7CiAgbHVtYS1ibHVlOiA3LjIyJTsKICBsdW1hLXllbGxvdzogOTIuNzglOwogIGx1bWEtY3lhbjogNzguNzM5OTk5OTk5OTk5OTklOwogIGx1bWEtZGlmZmVycy1mcm9tLWx1bWluYW5jZTogMjMuODk4MzMzNDklOwogIGx1bWluYW5jZS13aGl0ZTogMTAwJTsKICBsdW1pbmFuY2UtYmxhY2s6IDAlOwogIGx1bWluYW5jZS1ibGFjay1hbHBoYTogMCU7CiAgbHVtaW5hbmNlLXJlZDogMjEuMjYlOwogIGx1bWluYW5jZS1kaWZmZXJzLWZyb20tbHVtYTogMzYuNDA1NDExNzYlOwogIGNvbnRyYXN0LWZpbHRlcjogY29udHJhc3QoMzAlKTsKICBzYXR1cmF0ZS1maWx0ZXI6IHNhdHVyYXRlKDUlKTsKICBjb250cmFzdC13aGl0ZTogIzAwMDAwMDsKICBjb250cmFzdC1ibGFjazogI2ZmZmZmZjsKICBjb250cmFzdC1yZWQ6ICNmZmZmZmY7CiAgY29udHJhc3QtZ3JlZW46ICMwMDAwMDA7CiAgY29udHJhc3QtYmx1ZTogI2ZmZmZmZjsKICBjb250cmFzdC15ZWxsb3c6ICMwMDAwMDA7CiAgY29udHJhc3QtY3lhbjogIzAwMDAwMDsKICBjb250cmFzdC1saWdodDogIzExMTExMTsKICBjb250cmFzdC1kYXJrOiAjZWVlZWVlOwogIGNvbnRyYXN0LXdyb25nb3JkZXI6ICMxMTExMTE7CiAgY29udHJhc3QtbGlnaHQtdGhyZXNoOiAjMTExMTExOwogIGNvbnRyYXN0LWRhcmstdGhyZXNoOiAjZWVlZWVlOwogIGNvbnRyYXN0LWhpZ2gtdGhyZXNoOiAjZWVlZWVlOwogIGNvbnRyYXN0LWxvdy10aHJlc2g6ICMxMTExMTE7CiAgY29udHJhc3QtbGlnaHQtdGhyZXNoLXBlcjogIzExMTExMTsKICBjb250cmFzdC1kYXJrLXRocmVzaC1wZXI6ICNlZWVlZWU7CiAgY29udHJhc3QtaGlnaC10aHJlc2gtcGVyOiAjZWVlZWVlOwogIGNvbnRyYXN0LWxvdy10aHJlc2gtcGVyOiAjMTExMTExOwogIHJlcGxhY2U6ICJIZWxsbywgV29ybGQhIjsKICByZXBsYWNlLWNhcHR1cmVkOiAiVGhpcyBpcyBhIG5ldyBzdHJpbmcuIjsKICByZXBsYWNlLXdpdGgtZmxhZ3M6ICIyICsgMiA9IDQiOwogIHJlcGxhY2Utc2luZ2xlLXF1b3RlZDogJ2Zvby0yJzsKICByZXBsYWNlLWVzY2FwZWQtc3RyaW5nOiBiYXItMjsKICByZXBsYWNlLWtleXdvcmQ6IGJhei0yOwogIHJlcGxhY2Utd2l0aC1jb2xvcjogIiMxMzUjMTM1NyI7CiAgcmVwbGFjZS13aXRoLW51bWJlcjogIjJlbTA3IjsKICBmb3JtYXQ6ICJyZ2IoMzIsIDEyOCwgNjQpIjsKICBmb3JtYXQtc3RyaW5nOiAiaGVsbG8gd29ybGQiOwogIGZvcm1hdC1tdWx0aXBsZTogImhlbGxvIGVhcnRoIDIiOwogIGZvcm1hdC11cmwtZW5jb2RlOiAicmVkIGlzICUyM2ZmMDAwMCI7CiAgZm9ybWF0LXNpbmdsZS1xdW90ZWQ6ICdoZWxsbyBzaW5nbGUgd29ybGQnOwogIGZvcm1hdC1lc2NhcGVkLXN0cmluZzogaGVsbG8gZXNjYXBlZCB3b3JsZDsKICBmb3JtYXQtY29sb3ItYXMtc3RyaW5nOiAiIzEyMyI7CiAgZm9ybWF0LW51bWJlci1hcy1zdHJpbmc6ICI0cHgiOwogIGVmb3JtYXQ6IHJnYigzMiwgMTI4LCA2NCk7CiAgdW5pdGxlc3M6IDEyOwogIHVuaXQ6IDE0ZW07CiAgdW5pdHBlcmNlbnRhZ2U6IDEwMCU7CiAgZ2V0LXVuaXQ6IHB4OwogIGdldC11bml0LWVtcHR5OiA7CiAgaHVlOiA5ODsKICBzYXR1cmF0aW9uOiAxMiU7CiAgbGlnaHRuZXNzOiA5NSU7CiAgaHN2aHVlOiA5ODsKICBoc3ZzYXR1cmF0aW9uOiAxMiU7CiAgaHN2dmFsdWU6IDk1JTsKICByZWQ6IDI1NTsKICBncmVlbjogMjU1OwogIGJsdWU6IDI1NTsKICByb3VuZGVkOiAxMTsKICByb3VuZGVkLXR3bzogMTAuNjc7CiAgcm91bmRlZHB4OiAzcHg7CiAgcm91bmRlZHB4LXRocmVlOiAzLjMzM3B4OwogIHJvdW5kZWQtcGVyY2VudGFnZTogMTAlOwogIGNlaWw6IDExcHg7CiAgZmxvb3I6IDEycHg7CiAgc3FydDogNXB4OwogIHBpOiAzLjE0MTU5MjY1OwogIG1vZDogMm07CiAgYWJzOiA0JTsKICB0YW46IDAuOTAwNDA0MTU7CiAgc2luOiAwLjE3MzY0ODE5OwogIGNvczogMC44NDM4NTM5NjsKICBhdGFuOiAwLjFyYWQ7CiAgYXRhbjogMzRkZWc7CiAgYXRhbjogNDQuOTk5OTk2NGRlZzsKICBwb3c6IDY0cHg7CiAgcG93OiA2NDsKICBwb3c6IDI3OwogIG1pbjogMDsKICBtaW46IDU7CiAgbWluOiAxcHQ7CiAgbWluOiAzbW07CiAgbWF4OiAzOwogIG1heDogNWVtOwogIHBlcmNlbnRhZ2U6IDIwJTsKICBjb2xvci1xdW90ZWQtZGlnaXQ6ICNkZGEwZGQ7CiAgY29sb3ItcXVvdGVkLWtleXdvcmQ6ICNkZGEwZGQ7CiAgY29sb3ItY29sb3I6ICNkZGEwZGQ7CiAgY29sb3Ita2V5d29yZDogI2RkYTBkZDsKICB0aW50OiAjODk4OTg5OwogIHRpbnQtZnVsbDogI2ZmZmZmZjsKICB0aW50LXBlcmNlbnQ6ICM4OTg5ODk7CiAgdGludC1uZWdhdGl2ZTogIzY1NjU2NTsKICBzaGFkZTogIzY4Njg2ODsKICBzaGFkZS1mdWxsOiAjMDAwMDAwOwogIHNoYWRlLXBlcmNlbnQ6ICM2ODY4Njg7CiAgc2hhZGUtbmVnYXRpdmU6ICM4Njg2ODY7CiAgZmFkZS1vdXQ6IHJnYmEoMjU1LCAwLCAwLCAwLjk1KTsKICBmYWRlLWluOiByZ2JhKDI1NSwgMCwgMCwgMC45NSk7CiAgZmFkZS1vdXQtcmVsYXRpdmU6IHJnYmEoMjU1LCAwLCAwLCAwLjk1KTsKICBmYWRlLWluLXJlbGF0aXZlOiByZ2JhKDI1NSwgMCwgMCwgMC45NDUpOwogIGZhZGUtb3V0MjogcmdiYSgyNTUsIDAsIDAsIDApOwogIGZhZGUtb3V0Mi1yZWxhdGl2ZTogcmdiYSgyNTUsIDAsIDAsIDAuMjUpOwogIGhzdjogIzRkMjkyNjsKICBoc3ZhOiByZ2JhKDc3LCA0MCwgMzgsIDAuMik7CiAgbWl4OiAjZmYzMzAwOwogIG1peC0wOiAjZmZmZjAwOwogIG1peC0xMDA6ICNmZjAwMDA7CiAgbWl4LXdlaWdodGxlc3M6ICNmZjgwMDA7CiAgbWl4dDogcmdiYSgyNTUsIDAsIDAsIDAuNSk7Cn0KI2J1aWx0LWluIC5pcy1hIHsKICBydWxlc2V0OiB0cnVlOwogIGNvbG9yOiB0cnVlOwogIGNvbG9yMTogdHJ1ZTsKICBjb2xvcjI6IHRydWU7CiAgY29sb3IzOiB0cnVlOwogIGtleXdvcmQ6IHRydWU7CiAgbnVtYmVyOiB0cnVlOwogIHN0cmluZzogdHJ1ZTsKICBwaXhlbDogdHJ1ZTsKICBwZXJjZW50OiB0cnVlOwogIGVtOiB0cnVlOwogIGNhdDogdHJ1ZTsKICBuby11bml0LWlzLWVtcHR5OiB0cnVlOwogIGNhc2UtaW5zZW5zaXRpdmUtMTogdHJ1ZTsKICBjYXNlLWluc2Vuc2l0aXZlLTI6IHRydWU7Cn0KI2FscGhhIHsKICBhbHBoYTogaHNsYSgyNSwgNTAlLCA0MCUsIDAuNik7CiAgYWxwaGEyOiAwLjU7CiAgYWxwaGEzOiAwOwp9CiNibGVuZG1vZGVzIHsKICBtdWx0aXBseTogI2VkMDAwMDsKICBzY3JlZW46ICNmNjAwZjY7CiAgb3ZlcmxheTogI2VkMDAwMDsKICBzb2Z0bGlnaHQ6ICNmYTAwMDA7CiAgaGFyZGxpZ2h0OiAjMDAwMGVkOwogIGRpZmZlcmVuY2U6ICNmNjAwZjY7CiAgZXhjbHVzaW9uOiAjZjYwMGY2OwogIGF2ZXJhZ2U6ICM3YjAwN2I7CiAgbmVnYXRpb246ICNkNzMxMzE7Cn0KI2V4dHJhY3QtYW5kLWxlbmd0aCB7CiAgZXh0cmFjdDogMyAyIDEgQyBCIEE7CiAgbGVuZ3RoOiA2Owp9CiNxdW90ZWQtZnVuY3Rpb25zLWluLW1peGluIHsKICByZXBsYWNlLWRvdWJsZS1xdW90ZWQ6ICdmb28tMic7CiAgcmVwbGFjZS1zaW5nbGUtcXVvdGVkOiAnZm9vLTQnOwogIHJlcGxhY2UtZXNjYXBlZC1zdHJpbmc6IGJhci0yOwogIHJlcGxhY2Uta2V5d29yZDogYmF6LTI7CiAgcmVwbGFjZS1hbm9ueW1vdXM6IHF1eC0yOwogIGZvcm1hdC1kb3VibGUtcXVvdGVkOiAiaGVsbG8gd29ybGQiOwogIGZvcm1hdC1zaW5nbGUtcXVvdGVkOiAnaGVsbG8gc2luZ2xlIHdvcmxkJzsKICBmb3JtYXQtZXNjYXBlZC1zdHJpbmc6IGhlbGxvIGVzY2FwZWQgd29ybGQ7CiAgZm9ybWF0LWtleXdvcmQ6IGhlbGxvOwogIGZvcm1hdC1hbm9ueW1vdXM6IGhlbGxvIGFub255bW91cyB3b3JsZDsKfQojbGlzdC1kZXRhaWxzIHsKICBsZW5ndGg6IDI7CiAgb25lOiBhIDE7CiAgdHdvOiBiIDI7CiAgdHdvLWxlbmd0aDogMjsKICB0d28tb25lOiBiOwogIHR3by10d286IDI7Cn0KLyogY29tbWVudDEgKi8KaHRtbCB7CiAgY29sb3I6ICM4MDgwZmY7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/override/mixins-guards.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmxpZ2h0MSB7CiAgY29sb3I6IHdoaXRlOwogIG1hcmdpbjogMXB4Owp9Ci5saWdodDIgewogIGNvbG9yOiBibGFjazsKICBtYXJnaW46IDFweDsKfQoubWF4MSB7CiAgd2lkdGg6IDY7Cn0KLm1heDIgewogIHdpZHRoOiA4Owp9Ci5nbG9iMSB7CiAgbWFyZ2luOiBhdXRvIGF1dG87Cn0KLm9wczEgewogIGhlaWdodDogZ3Qtb3ItZXE7CiAgaGVpZ2h0OiBsdC1vci1lcTsKICBoZWlnaHQ6IGx0LW9yLWVxLWFsaWFzOwp9Ci5vcHMyIHsKICBoZWlnaHQ6IGd0LW9yLWVxOwogIGhlaWdodDogbm90LWVxOwp9Ci5vcHMzIHsKICBoZWlnaHQ6IGx0LW9yLWVxOwogIGhlaWdodDogbHQtb3ItZXEtYWxpYXM7CiAgaGVpZ2h0OiBub3QtZXE7Cn0KLmRlZmF1bHQxIHsKICBjb250ZW50OiBkZWZhdWx0Owp9Ci50ZXN0MSB7CiAgY29udGVudDogInRydWUuIjsKfQoudGVzdDIgewogIGNvbnRlbnQ6ICJmYWxzZS4iOwp9Ci50ZXN0MyB7CiAgY29udGVudDogImZhbHNlLiI7Cn0KLnRlc3Q0IHsKICBjb250ZW50OiAiZmFsc2UuIjsKfQoudGVzdDUgewogIGNvbnRlbnQ6ICJmYWxzZS4iOwp9Ci5ib29sMSB7CiAgY29udGVudDogdHJ1ZSBhbmQgdHJ1ZTsKICBjb250ZW50OiB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlIGFuZCB0cnVlIGFuZCB0cnVlLCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCB0cnVlIGFuZCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCBmYWxzZSwgdHJ1ZTsKICBjb250ZW50OiBmYWxzZSwgdHJ1ZSBhbmQgdHJ1ZSBhbmQgdHJ1ZSwgZmFsc2U7CiAgY29udGVudDogbm90IGZhbHNlOwogIGNvbnRlbnQ6IG5vdCBmYWxzZSBhbmQgZmFsc2UsIG5vdCBmYWxzZTsKfQouZXF1YWxpdHktdW5pdHMgewogIHRlc3Q6IHBhc3M7Cn0KLmNvbG9yZ3VhcmR0ZXN0IHsKICBjb250ZW50OiBpcyByZWQ7CiAgY29udGVudDogaXMgbm90IGJsdWUgaXRzIHJlZDsKICBjb250ZW50OiBpcyBub3QgYmx1ZSBpdHMgcHVycGxlOwp9Ci5zdHJpbmdndWFyZHRlc3QgewogIGNvbnRlbnQ6ICJ0aGVtZTEiIGlzICJ0aGVtZTEiOwogIGNvbnRlbnQ6ICJ0aGVtZTEiIGlzIG5vdCAidGhlbWUyIjsKICBjb250ZW50OiAidGhlbWUxIiBpcyAndGhlbWUxJzsKICBjb250ZW50OiAidGhlbWUxIiBpcyBub3QgJ3RoZW1lMic7CiAgY29udGVudDogJ3RoZW1lMScgaXMgInRoZW1lMSI7CiAgY29udGVudDogJ3RoZW1lMScgaXMgbm90ICJ0aGVtZTIiOwogIGNvbnRlbnQ6ICd0aGVtZTEnIGlzICd0aGVtZTEnOwogIGNvbnRlbnQ6ICd0aGVtZTEnIGlzIG5vdCAndGhlbWUyJzsKICBjb250ZW50OiB0aGVtZTEgaXMgbm90ICJ0aGVtZTIiOwogIGNvbnRlbnQ6IHRoZW1lMSBpcyBub3QgJ3RoZW1lMic7CiAgY29udGVudDogdGhlbWUxIGlzIHRoZW1lMTsKfQoudmFyaW91c2UtdHlwZXMtY29tcGFyaXNvbiB7CiAgLyoqLwogIGNvbnRlbnQ6IHRydWUgaXMgbm90IGVxdWFsIHRvIGZhbHNlOwogIGNvbnRlbnQ6IGZhbHNlIGlzIG5vdCBlcXVhbCB0byB0cnVlIHRvbzsKICAvKiovCiAgY29udGVudDogMSBpcyBub3QgZXF1YWwgdG8gdHJ1ZTsKICBjb250ZW50OiB0cnVlIGlzIG5vdCBlcXVhbCB0byAxIHRvbzsKICAvKiovCiAgY29udGVudDogMiBpcyBlcXVhbCB0byAycHg7CiAgY29udGVudDogMnB4IGlzIGVxdWFsIHRvIDIgdG9vOwogIC8qKi8KICBjb250ZW50OiAzIGlzIGVxdWFsIHRvIDM7CiAgY29udGVudDogMyBpcyBlcXVhbCB0byAzIHRvbzsKICAvKiovCiAgY29udGVudDogNSBpcyBub3QgZXF1YWwgdG8gNDsKICBjb250ZW50OiA0IGlzIG5vdCBlcXVhbCB0byA1IHRvbzsKICAvKiovCiAgY29udGVudDogYWJjIGlzIGVxdWFsIHRvIGFiYzsKICBjb250ZW50OiBhYmMgaXMgZXF1YWwgdG8gYWJjIHRvbzsKICAvKiovCiAgY29udGVudDogYWJjIGlzIG5vdCBlcXVhbCB0byAiYWJjIjsKICBjb250ZW50OiAiYWJjIiBpcyBub3QgZXF1YWwgdG8gYWJjIHRvbzsKICAvKiovCiAgY29udGVudDogJ2FiYycgaXMgbGVzcyB0aGFuICJhYmQiOwogIGNvbnRlbnQ6ICJhYmQiIGlzIGdyZWF0ZXIgdGhhbiAnYWJjJyB0b287CiAgY29udGVudDogJ2FiYycgaXMgbm90IGVxdWFsIHRvICJhYmQiOwogIGNvbnRlbnQ6ICJhYmQiIGlzIG5vdCBlcXVhbCB0byAnYWJjJyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDYgaXMgZXF1YWwgdG8gNjsKICBjb250ZW50OiA2IGlzIGVxdWFsIHRvIDYgdG9vOwogIC8qKi8KICBjb250ZW50OiAvKiBTb3JyeSwgY2FuIG5vdCBkbyBKYXZhU2NyaXB0IGV2YWx1YXRpb24gaW4gUEhQLi4uIDooICovIGlzIG5vdCBlcXVhbCB0byA4OwogIGNvbnRlbnQ6IDggaXMgbm90IGVxdWFsIHRvIC8qIFNvcnJ5LCBjYW4gbm90IGRvIEphdmFTY3JpcHQgZXZhbHVhdGlvbiBpbiBQSFAuLi4gOiggKi8gdG9vOwogIC8qKi8KICBjb250ZW50OiBhIGlzIG5vdCBlcXVhbCB0byBiOwogIGNvbnRlbnQ6IGIgaXMgbm90IGVxdWFsIHRvIGEgdG9vOwogIC8qKi8KICBjb250ZW50OiAxIDIgaXMgbm90IGVxdWFsIHRvIDM7CiAgY29udGVudDogMyBpcyBub3QgZXF1YWwgdG8gMSAyIHRvbzsKfQoubGlzdC1jb21wYXJpc29uIHsKICAvKiovCiAgY29udGVudDogYSBiIGMgaXMgZXF1YWwgdG8gYSBiIGM7CiAgY29udGVudDogYSBiIGMgaXMgZXF1YWwgdG8gYSBiIGMgdG9vOwogIC8qKi8KICBjb250ZW50OiBhIGIgYyBpcyBub3QgZXF1YWwgdG8gYSBiIGQ7CiAgY29udGVudDogYSBiIGQgaXMgbm90IGVxdWFsIHRvIGEgYiBjIHRvbzsKICAvKiovCiAgY29udGVudDogYSwgYiwgYyBpcyBlcXVhbCB0byBhLCBiLCBjOwogIGNvbnRlbnQ6IGEsIGIsIGMgaXMgZXF1YWwgdG8gYSwgYiwgYyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IGEsIGIsIGMgaXMgbm90IGVxdWFsIHRvIGEsIGIsIGQ7CiAgY29udGVudDogYSwgYiwgZCBpcyBub3QgZXF1YWwgdG8gYSwgYiwgYyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMnB4IDMwMG1zIGlzIGVxdWFsIHRvIDFlbSAyIDAuM3M7CiAgY29udGVudDogMWVtIDIgMC4zcyBpcyBlcXVhbCB0byAxIDJweCAzMDBtcyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMiAzIGlzIG5vdCBlcXVhbCB0byAxLCAyLCAzOwogIGNvbnRlbnQ6IDEsIDIsIDMgaXMgbm90IGVxdWFsIHRvIDEgMiAzIHRvbzsKICAvKiovCiAgY29udGVudDogMSwgMiwgMyBpcyBlcXVhbCB0byAxLCAyLCAzOwogIGNvbnRlbnQ6IDEsIDIsIDMgaXMgZXF1YWwgdG8gMSwgMiwgMyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMiAzIDEsIDIsIDMgaXMgZXF1YWwgdG8gMSAyIDMgMSwgMiwgMzsKICBjb250ZW50OiAxIDIgMyAxLCAyLCAzIGlzIGVxdWFsIHRvIDEgMiAzIDEsIDIsIDMgdG9vOwogIC8qKi8KICBjb250ZW50OiAxIDIgMyAxLCAyLCAzIGlzIG5vdCBlcXVhbCB0byAxLCAyLCAzIDEgMiAzOwogIGNvbnRlbnQ6IDEsIDIsIDMgMSAyIDMgaXMgbm90IGVxdWFsIHRvIDEgMiAzIDEsIDIsIDMgdG9vOwogIC8qKi8KICBjb250ZW50OiAxIDIgMyAxLCAyLCAzIDQgaXMgZXF1YWwgdG8gMSAyIDMgMSwgMiwgMyA0OwogIGNvbnRlbnQ6IDEgMiAzIDEsIDIsIDMgNCBpcyBlcXVhbCB0byAxIDIgMyAxLCAyLCAzIDQgdG9vOwp9CiN0cnlOdW1iZXJQeCB7CiAgY2F0Y2g6IGFsbDsKICBkZWNsYXJlOiA0OwogIGRlY2xhcmU6IDRweDsKfQouY2FsbC1sb2NrLW1peGluIC5jYWxsLWlubmVyLWxvY2stbWl4aW4gewogIGE6IDE7CiAgeDogMTsKfQoubWl4aW4tZ2VuZXJhdGVkLWNsYXNzIHsKICBhOiAxOwp9CiNndWFyZGVkLWNhbGxlciB7CiAgZ3VhcmRlZDogbmFtZXNwYWNlOwogIHNpbGVudDogbmFtZXNwYWNlOwogIGd1YXJkZWQ6IHdpdGggZGVmYXVsdDsKfQojZ3VhcmRlZC1kZWVwZXIgewogIHNob3VsZDogbWF0Y2ggMTsKfQogIA==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-2.5.3/override/property-name-interp.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cGktdGVzdCB7CiAgYm9yZGVyOiAwOwogIEBub3QtdmFyaWFibGU6IEBub3QtdmFyaWFibGU7CiAgdWZvLXdpZHRoOiA1MCU7CiAgKi16LWJvcmRlcjogMXB4IGRhc2hlZCBibHVlOwogIC13d3ctYm9yZGVyLXRvcDogMnB4OwogIHJhZGl1cy1pcy1ub3QtYS1ib3JkZXI6IHRydWU7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMmVtOwogIGJvcmRlci10b3AtcmVkLXJhZGl1cy06IDNwdDsKICBnbG9iYWwtbG9jYWwtbWl4ZXItcHJvcGVydHk6IHN0cm9uZzsKfQpwaS10ZXN0LW1lcmdlIHsKICBwcmUtcHJvcGVydHktaXNoOiBoaWdoLCBtaWRkbGUsIGxvdywgYmFzZTsKICBwcmUtcHJvcGVydHktaXNoKzogbmljZSB0cnkgZHVkZTsKfQpwaS1pbmRpcmVjdC12YXJzIHsKICBhdXRvOiBhdXRvOwp9CnBpLWNvbXBsZXgtdmFsdWVzIHsKICAzcHggcmdiYSgyNTUsIDI1NSwgMCwgMC41KSwgMy4xNDE1OTI2NSAvKiBmb28gKi8zcHggcmdiYSgyNTUsIDI1NSwgMCwgMC41KSwgMy4xNDE1OTI2NSAvKiBmb28gKi86IG5vbmU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/3rd-party/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/3rd-party/bootstrap4.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2NC4xLjEgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pCiAqIENvcHlyaWdodCAyMDExLTIwMTggVGhlIEJvb3RzdHJhcCBBdXRob3JzCiAqIENvcHlyaWdodCAyMDExLTIwMTggVHdpdHRlciwgSW5jLgogKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKQogKi8KOnJvb3QgewogIC0tYmx1ZTogIzAwN2JmZjsKICAtLWluZGlnbzogIzY2MTBmMjsKICAtLXB1cnBsZTogIzZmNDJjMTsKICAtLXBpbms6ICNlODNlOGM7CiAgLS1yZWQ6ICNkYzM1NDU7CiAgLS1vcmFuZ2U6ICNmZDdlMTQ7CiAgLS15ZWxsb3c6ICNmZmMxMDc7CiAgLS1ncmVlbjogIzI4YTc0NTsKICAtLXRlYWw6ICMyMGM5OTc7CiAgLS1jeWFuOiAjMTdhMmI4OwogIC0td2hpdGU6ICNmZmY7CiAgLS1ncmF5OiAjNmM3NTdkOwogIC0tZ3JheS1kYXJrOiAjMzQzYTQwOwogIC0tcHJpbWFyeTogIzAwN2JmZjsKICAtLXNlY29uZGFyeTogIzZjNzU3ZDsKICAtLXN1Y2Nlc3M6ICMyOGE3NDU7CiAgLS1pbmZvOiAjMTdhMmI4OwogIC0td2FybmluZzogI2ZmYzEwNzsKICAtLWRhbmdlcjogI2RjMzU0NTsKICAtLWxpZ2h0OiAjZjhmOWZhOwogIC0tZGFyazogIzM0M2E0MDsKICAtLWJyZWFrcG9pbnQteHM6IDA7CiAgLS1icmVha3BvaW50LXNtOiA1NzZweDsKICAtLWJyZWFrcG9pbnQtbWQ6IDc2OHB4OwogIC0tYnJlYWtwb2ludC1sZzogOTkycHg7CiAgLS1icmVha3BvaW50LXhsOiAxMjAwcHg7CiAgLS1mb250LWZhbWlseS1zYW5zLXNlcmlmOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiOwogIC0tZm9udC1mYW1pbHktbW9ub3NwYWNlOiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICJMaWJlcmF0aW9uIE1vbm8iLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7Cn0KKiwKKjo6YmVmb3JlLAoqOjphZnRlciB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQpodG1sIHsKICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICBsaW5lLWhlaWdodDogMS4xNTsKICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7CiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKfQpALW1zLXZpZXdwb3J0IHsKICB3aWR0aDogZGV2aWNlLXdpZHRoOwp9CmFydGljbGUsCmFzaWRlLApmaWdjYXB0aW9uLApmaWd1cmUsCmZvb3RlciwKaGVhZGVyLApoZ3JvdXAsCm1haW4sCm5hdiwKc2VjdGlvbiB7CiAgZGlzcGxheTogYmxvY2s7Cn0KYm9keSB7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiOwogIGZvbnQtc2l6ZTogMXJlbTsKICBmb250LXdlaWdodDogNDAwOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICMyMTI1Mjk7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Clt0YWJpbmRleD0iLTEiXTpmb2N1cyB7CiAgb3V0bGluZTogMCAhaW1wb3J0YW50Owp9CmhyIHsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KaDEsCmgyLApoMywKaDQsCmg1LApoNiB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KcCB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9CmFiYnJbdGl0bGVdLAphYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7CiAgY3Vyc29yOiBoZWxwOwogIGJvcmRlci1ib3R0b206IDA7Cn0KYWRkcmVzcyB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0Kb2wsCnVsLApkbCB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9Cm9sIG9sLAp1bCB1bCwKb2wgdWwsCnVsIG9sIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9CmR0IHsKICBmb250LXdlaWdodDogNzAwOwp9CmRkIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KYmxvY2txdW90ZSB7CiAgbWFyZ2luOiAwIDAgMXJlbTsKfQpkZm4gewogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQpiLApzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiBib2xkZXI7Cn0Kc21hbGwgewogIGZvbnQtc2l6ZTogODAlOwp9CnN1YiwKc3VwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZm9udC1zaXplOiA3NSU7CiAgbGluZS1oZWlnaHQ6IDA7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwp9CnN1YiB7CiAgYm90dG9tOiAtMC4yNWVtOwp9CnN1cCB7CiAgdG9wOiAtMC41ZW07Cn0KYSB7CiAgY29sb3I6ICMwMDdiZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7Cn0KYTpob3ZlciB7CiAgY29sb3I6ICMwMDU2YjM7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSkgewogIGNvbG9yOiBpbmhlcml0OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpob3ZlciwKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMgewogIGNvbG9yOiBpbmhlcml0OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7CiAgb3V0bGluZTogMDsKfQpwcmUsCmNvZGUsCmtiZCwKc2FtcCB7CiAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkxpYmVyYXRpb24gTW9ubyIsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKICBmb250LXNpemU6IDFlbTsKfQpwcmUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBvdmVyZmxvdzogYXV0bzsKICAtbXMtb3ZlcmZsb3ctc3R5bGU6IHNjcm9sbGJhcjsKfQpmaWd1cmUgewogIG1hcmdpbjogMCAwIDFyZW07Cn0KaW1nIHsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGJvcmRlci1zdHlsZTogbm9uZTsKfQpzdmc6bm90KDpyb290KSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQp0YWJsZSB7CiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKfQpjYXB0aW9uIHsKICBwYWRkaW5nLXRvcDogMC43NXJlbTsKICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTsKICBjb2xvcjogIzZjNzU3ZDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGNhcHRpb24tc2lkZTogYm90dG9tOwp9CnRoIHsKICB0ZXh0LWFsaWduOiBpbmhlcml0Owp9CmxhYmVsIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwp9CmJ1dHRvbiB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQpidXR0b246Zm9jdXMgewogIG91dGxpbmU6IDFweCBkb3R0ZWQ7CiAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yOwp9CmlucHV0LApidXR0b24sCnNlbGVjdCwKb3B0Z3JvdXAsCnRleHRhcmVhIHsKICBtYXJnaW46IDA7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CmJ1dHRvbiwKaW5wdXQgewogIG92ZXJmbG93OiB2aXNpYmxlOwp9CmJ1dHRvbiwKc2VsZWN0IHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQpidXR0b24sCmh0bWwgW3R5cGU9ImJ1dHRvbiJdLApbdHlwZT0icmVzZXQiXSwKW3R5cGU9InN1Ym1pdCJdIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsKfQpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsClt0eXBlPSJidXR0b24iXTo6LW1vei1mb2N1cy1pbm5lciwKW3R5cGU9InJlc2V0Il06Oi1tb3otZm9jdXMtaW5uZXIsClt0eXBlPSJzdWJtaXQiXTo6LW1vei1mb2N1cy1pbm5lciB7CiAgcGFkZGluZzogMDsKICBib3JkZXItc3R5bGU6IG5vbmU7Cn0KaW5wdXRbdHlwZT0icmFkaW8iXSwKaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBwYWRkaW5nOiAwOwp9CmlucHV0W3R5cGU9ImRhdGUiXSwKaW5wdXRbdHlwZT0idGltZSJdLAppbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLAppbnB1dFt0eXBlPSJtb250aCJdIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7Cn0KdGV4dGFyZWEgewogIG92ZXJmbG93OiBhdXRvOwogIHJlc2l6ZTogdmVydGljYWw7Cn0KZmllbGRzZXQgewogIG1pbi13aWR0aDogMDsKICBwYWRkaW5nOiAwOwogIG1hcmdpbjogMDsKICBib3JkZXI6IDA7Cn0KbGVnZW5kIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMDsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgZm9udC1zaXplOiAxLjVyZW07CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQpwcm9ncmVzcyB7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwp9Clt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwKW3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKICBoZWlnaHQ6IGF1dG87Cn0KW3R5cGU9InNlYXJjaCJdIHsKICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KW3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLApbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQo6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHsKICBmb250OiBpbmhlcml0OwogIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9Cm91dHB1dCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CnN1bW1hcnkgewogIGRpc3BsYXk6IGxpc3QtaXRlbTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KdGVtcGxhdGUgewogIGRpc3BsYXk6IG5vbmU7Cn0KW2hpZGRlbl0gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQpoMSwKaDIsCmgzLApoNCwKaDUsCmg2LAouaDEsCi5oMiwKLmgzLAouaDQsCi5oNSwKLmg2IHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBsaW5lLWhlaWdodDogMS4yOwogIGNvbG9yOiBpbmhlcml0Owp9CmgxLAouaDEgewogIGZvbnQtc2l6ZTogMi41cmVtOwp9CmgyLAouaDIgewogIGZvbnQtc2l6ZTogMnJlbTsKfQpoMywKLmgzIHsKICBmb250LXNpemU6IDEuNzVyZW07Cn0KaDQsCi5oNCB7CiAgZm9udC1zaXplOiAxLjVyZW07Cn0KaDUsCi5oNSB7CiAgZm9udC1zaXplOiAxLjI1cmVtOwp9Cmg2LAouaDYgewogIGZvbnQtc2l6ZTogMXJlbTsKfQoubGVhZCB7CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7Cn0KLmRpc3BsYXktMSB7CiAgZm9udC1zaXplOiA2cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQouZGlzcGxheS0yIHsKICBmb250LXNpemU6IDUuNXJlbTsKICBmb250LXdlaWdodDogMzAwOwogIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KLmRpc3BsYXktMyB7CiAgZm9udC1zaXplOiA0LjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBsaW5lLWhlaWdodDogMS4yOwp9Ci5kaXNwbGF5LTQgewogIGZvbnQtc2l6ZTogMy41cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQpociB7CiAgbWFyZ2luLXRvcDogMXJlbTsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIGJvcmRlcjogMDsKICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOwp9CnNtYWxsLAouc21hbGwgewogIGZvbnQtc2l6ZTogODAlOwogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KbWFyaywKLm1hcmsgewogIHBhZGRpbmc6IDAuMmVtOwogIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7Cn0KLmxpc3QtdW5zdHlsZWQgewogIHBhZGRpbmctbGVmdDogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5saXN0LWlubGluZSB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmxpc3QtaW5saW5lLWl0ZW0gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoubGlzdC1pbmxpbmUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsKICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsKfQouaW5pdGlhbGlzbSB7CiAgZm9udC1zaXplOiA5MCU7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQouYmxvY2txdW90ZSB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07Cn0KLmJsb2NrcXVvdGUtZm9vdGVyIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDgwJTsKICBjb2xvcjogIzZjNzU3ZDsKfQouYmxvY2txdW90ZS1mb290ZXI6OmJlZm9yZSB7CiAgY29udGVudDogIlwyMDE0IFwwMEEwIjsKfQouaW1nLWZsdWlkIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5pbWctdGh1bWJuYWlsIHsKICBwYWRkaW5nOiAwLjI1cmVtOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87Cn0KLmZpZ3VyZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci5maWd1cmUtaW1nIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgbGluZS1oZWlnaHQ6IDE7Cn0KLmZpZ3VyZS1jYXB0aW9uIHsKICBmb250LXNpemU6IDkwJTsKICBjb2xvcjogIzZjNzU3ZDsKfQpjb2RlIHsKICBmb250LXNpemU6IDg3LjUlOwogIGNvbG9yOiAjZTgzZThjOwogIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KYSA+IGNvZGUgewogIGNvbG9yOiBpbmhlcml0Owp9CmtiZCB7CiAgcGFkZGluZzogMC4ycmVtIDAuNHJlbTsKICBmb250LXNpemU6IDg3LjUlOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7CiAgYm9yZGVyLXJhZGl1czogMC4ycmVtOwp9CmtiZCBrYmQgewogIHBhZGRpbmc6IDA7CiAgZm9udC1zaXplOiAxMDAlOwogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KcHJlIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDg3LjUlOwogIGNvbG9yOiAjMjEyNTI5Owp9CnByZSBjb2RlIHsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgd29yZC1icmVhazogbm9ybWFsOwp9Ci5wcmUtc2Nyb2xsYWJsZSB7CiAgbWF4LWhlaWdodDogMzQwcHg7CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwp9Ci5jb250YWluZXIgewogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIG1hcmdpbi1yaWdodDogYXV0bzsKICBtYXJnaW4tbGVmdDogYXV0bzsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogNTQwcHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiA3MjBweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDk2MHB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDExNDBweDsKICB9Cn0KLmNvbnRhaW5lci1mbHVpZCB7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy1yaWdodDogMTVweDsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwp9Ci5yb3cgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgbWFyZ2luLWxlZnQ6IC0xNXB4Owp9Ci5uby1ndXR0ZXJzIHsKICBtYXJnaW4tcmlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLm5vLWd1dHRlcnMgPiAuY29sLAoubm8tZ3V0dGVycyA+IFtjbGFzcyo9ImNvbC0iXSB7CiAgcGFkZGluZy1yaWdodDogMDsKICBwYWRkaW5nLWxlZnQ6IDA7Cn0KLmdyaWQtY29sdW1uLAouY29sLTEsCi5jb2wtMiwKLmNvbC0zLAouY29sLTQsCi5jb2wtNSwKLmNvbC02LAouY29sLTcsCi5jb2wtOCwKLmNvbC05LAouY29sLTEwLAouY29sLTExLAouY29sLTEyLAouY29sLAouY29sLWF1dG8sCi5jb2wtc20tMSwKLmNvbC1zbS0yLAouY29sLXNtLTMsCi5jb2wtc20tNCwKLmNvbC1zbS01LAouY29sLXNtLTYsCi5jb2wtc20tNywKLmNvbC1zbS04LAouY29sLXNtLTksCi5jb2wtc20tMTAsCi5jb2wtc20tMTEsCi5jb2wtc20tMTIsCi5jb2wtc20sCi5jb2wtc20tYXV0bywKLmNvbC1tZC0xLAouY29sLW1kLTIsCi5jb2wtbWQtMywKLmNvbC1tZC00LAouY29sLW1kLTUsCi5jb2wtbWQtNiwKLmNvbC1tZC03LAouY29sLW1kLTgsCi5jb2wtbWQtOSwKLmNvbC1tZC0xMCwKLmNvbC1tZC0xMSwKLmNvbC1tZC0xMiwKLmNvbC1tZCwKLmNvbC1tZC1hdXRvLAouY29sLWxnLTEsCi5jb2wtbGctMiwKLmNvbC1sZy0zLAouY29sLWxnLTQsCi5jb2wtbGctNSwKLmNvbC1sZy02LAouY29sLWxnLTcsCi5jb2wtbGctOCwKLmNvbC1sZy05LAouY29sLWxnLTEwLAouY29sLWxnLTExLAouY29sLWxnLTEyLAouY29sLWxnLAouY29sLWxnLWF1dG8sCi5jb2wteGwtMSwKLmNvbC14bC0yLAouY29sLXhsLTMsCi5jb2wteGwtNCwKLmNvbC14bC01LAouY29sLXhsLTYsCi5jb2wteGwtNywKLmNvbC14bC04LAouY29sLXhsLTksCi5jb2wteGwtMTAsCi5jb2wteGwtMTEsCi5jb2wteGwtMTIsCi5jb2wteGwsCi5jb2wteGwtYXV0byB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKfQouY29sIHsKICBmbGV4LWJhc2lzOiAwOwogIGZsZXgtZ3JvdzogMTsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KLmNvbC1hdXRvIHsKICBmbGV4OiAwIDAgYXV0bzsKICB3aWR0aDogYXV0bzsKICBtYXgtd2lkdGg6IG5vbmU7Cn0KLmNvbC0xIHsKICBmbGV4OiAwIDAgOC4zMzMzMzMzMyU7CiAgbWF4LXdpZHRoOiA4LjMzMzMzMzMzJTsKfQouY29sLTIgewogIGZsZXg6IDAgMCAxNi42NjY2NjY2NyU7CiAgbWF4LXdpZHRoOiAxNi42NjY2NjY2NyU7Cn0KLmNvbC0zIHsKICBmbGV4OiAwIDAgMjUlOwogIG1heC13aWR0aDogMjUlOwp9Ci5jb2wtNCB7CiAgZmxleDogMCAwIDMzLjMzMzMzMzMzJTsKICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzJTsKfQouY29sLTUgewogIGZsZXg6IDAgMCA0MS42NjY2NjY2NyU7CiAgbWF4LXdpZHRoOiA0MS42NjY2NjY2NyU7Cn0KLmNvbC02IHsKICBmbGV4OiAwIDAgNTAlOwogIG1heC13aWR0aDogNTAlOwp9Ci5jb2wtNyB7CiAgZmxleDogMCAwIDU4LjMzMzMzMzMzJTsKICBtYXgtd2lkdGg6IDU4LjMzMzMzMzMzJTsKfQouY29sLTggewogIGZsZXg6IDAgMCA2Ni42NjY2NjY2NyU7CiAgbWF4LXdpZHRoOiA2Ni42NjY2NjY2NyU7Cn0KLmNvbC05IHsKICBmbGV4OiAwIDAgNzUlOwogIG1heC13aWR0aDogNzUlOwp9Ci5jb2wtMTAgewogIGZsZXg6IDAgMCA4My4zMzMzMzMzMyU7CiAgbWF4LXdpZHRoOiA4My4zMzMzMzMzMyU7Cn0KLmNvbC0xMSB7CiAgZmxleDogMCAwIDkxLjY2NjY2NjY3JTsKICBtYXgtd2lkdGg6IDkxLjY2NjY2NjY3JTsKfQouY29sLTEyIHsKICBmbGV4OiAwIDAgMTAwJTsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KLm9yZGVyLWZpcnN0IHsKICBvcmRlcjogLTE7Cn0KLm9yZGVyLWxhc3QgewogIG9yZGVyOiAxMzsKfQoub3JkZXItMCB7CiAgb3JkZXI6IDA7Cn0KLm9yZGVyLTEgewogIG9yZGVyOiAxOwp9Ci5vcmRlci0yIHsKICBvcmRlcjogMjsKfQoub3JkZXItMyB7CiAgb3JkZXI6IDM7Cn0KLm9yZGVyLTQgewogIG9yZGVyOiA0Owp9Ci5vcmRlci01IHsKICBvcmRlcjogNTsKfQoub3JkZXItNiB7CiAgb3JkZXI6IDY7Cn0KLm9yZGVyLTcgewogIG9yZGVyOiA3Owp9Ci5vcmRlci04IHsKICBvcmRlcjogODsKfQoub3JkZXItOSB7CiAgb3JkZXI6IDk7Cn0KLm9yZGVyLTEwIHsKICBvcmRlcjogMTA7Cn0KLm9yZGVyLTExIHsKICBvcmRlcjogMTE7Cn0KLm9yZGVyLTEyIHsKICBvcmRlcjogMTI7Cn0KLm9mZnNldC0xIHsKICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMyU7Cn0KLm9mZnNldC0yIHsKICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwp9Ci5vZmZzZXQtMyB7CiAgbWFyZ2luLWxlZnQ6IDI1JTsKfQoub2Zmc2V0LTQgewogIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7Cn0KLm9mZnNldC01IHsKICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwp9Ci5vZmZzZXQtNiB7CiAgbWFyZ2luLWxlZnQ6IDUwJTsKfQoub2Zmc2V0LTcgewogIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7Cn0KLm9mZnNldC04IHsKICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwp9Ci5vZmZzZXQtOSB7CiAgbWFyZ2luLWxlZnQ6IDc1JTsKfQoub2Zmc2V0LTEwIHsKICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMlOwp9Ci5vZmZzZXQtMTEgewogIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmNvbC1zbSB7CiAgICBmbGV4LWJhc2lzOiAwOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAuY29sLXNtLWF1dG8gewogICAgZmxleDogMCAwIGF1dG87CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogbm9uZTsKICB9CiAgLmNvbC1zbS0xIHsKICAgIGZsZXg6IDAgMCA4LjMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tMiB7CiAgICBmbGV4OiAwIDAgMTYuNjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiAxNi42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tMyB7CiAgICBmbGV4OiAwIDAgMjUlOwogICAgbWF4LXdpZHRoOiAyNSU7CiAgfQogIC5jb2wtc20tNCB7CiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tNSB7CiAgICBmbGV4OiAwIDAgNDEuNjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA0MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tNiB7CiAgICBmbGV4OiAwIDAgNTAlOwogICAgbWF4LXdpZHRoOiA1MCU7CiAgfQogIC5jb2wtc20tNyB7CiAgICBmbGV4OiAwIDAgNTguMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tOCB7CiAgICBmbGV4OiAwIDAgNjYuNjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA2Ni42NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tOSB7CiAgICBmbGV4OiAwIDAgNzUlOwogICAgbWF4LXdpZHRoOiA3NSU7CiAgfQogIC5jb2wtc20tMTAgewogICAgZmxleDogMCAwIDgzLjMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzMzMlOwogIH0KICAuY29sLXNtLTExIHsKICAgIGZsZXg6IDAgMCA5MS42NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS0xMiB7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLXNtLWZpcnN0IHsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLXNtLWxhc3QgewogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXItc20tMCB7CiAgICBvcmRlcjogMDsKICB9CiAgLm9yZGVyLXNtLTEgewogICAgb3JkZXI6IDE7CiAgfQogIC5vcmRlci1zbS0yIHsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXItc20tMyB7CiAgICBvcmRlcjogMzsKICB9CiAgLm9yZGVyLXNtLTQgewogICAgb3JkZXI6IDQ7CiAgfQogIC5vcmRlci1zbS01IHsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXItc20tNiB7CiAgICBvcmRlcjogNjsKICB9CiAgLm9yZGVyLXNtLTcgewogICAgb3JkZXI6IDc7CiAgfQogIC5vcmRlci1zbS04IHsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXItc20tOSB7CiAgICBvcmRlcjogOTsKICB9CiAgLm9yZGVyLXNtLTEwIHsKICAgIG9yZGVyOiAxMDsKICB9CiAgLm9yZGVyLXNtLTExIHsKICAgIG9yZGVyOiAxMTsKICB9CiAgLm9yZGVyLXNtLTEyIHsKICAgIG9yZGVyOiAxMjsKICB9CiAgLm9mZnNldC1zbS0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAub2Zmc2V0LXNtLTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAyNSU7CiAgfQogIC5vZmZzZXQtc20tNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1zbS02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5vZmZzZXQtc20tNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTggewogICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1zbS05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5vZmZzZXQtc20tMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1zbS0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjclOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuY29sLW1kIHsKICAgIGZsZXgtYmFzaXM6IDA7CiAgICBmbGV4LWdyb3c6IDE7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtbWQtYXV0byB7CiAgICBmbGV4OiAwIDAgYXV0bzsKICAgIHdpZHRoOiBhdXRvOwogICAgbWF4LXdpZHRoOiBub25lOwogIH0KICAuY29sLW1kLTEgewogICAgZmxleDogMCAwIDguMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC0yIHsKICAgIGZsZXg6IDAgMCAxNi42NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC0zIHsKICAgIGZsZXg6IDAgMCAyNSU7CiAgICBtYXgtd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1tZC00IHsKICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC01IHsKICAgIGZsZXg6IDAgMCA0MS42NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC02IHsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1tZC03IHsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC04IHsKICAgIGZsZXg6IDAgMCA2Ni42NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC05IHsKICAgIGZsZXg6IDAgMCA3NSU7CiAgICBtYXgtd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1tZC0xMCB7CiAgICBmbGV4OiAwIDAgODMuMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4My4zMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtMTEgewogICAgZmxleDogMCAwIDkxLjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogOTEuNjY2NjY2NjclOwogIH0KICAuY29sLW1kLTEyIHsKICAgIGZsZXg6IDAgMCAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAub3JkZXItbWQtZmlyc3QgewogICAgb3JkZXI6IC0xOwogIH0KICAub3JkZXItbWQtbGFzdCB7CiAgICBvcmRlcjogMTM7CiAgfQogIC5vcmRlci1tZC0wIHsKICAgIG9yZGVyOiAwOwogIH0KICAub3JkZXItbWQtMSB7CiAgICBvcmRlcjogMTsKICB9CiAgLm9yZGVyLW1kLTIgewogICAgb3JkZXI6IDI7CiAgfQogIC5vcmRlci1tZC0zIHsKICAgIG9yZGVyOiAzOwogIH0KICAub3JkZXItbWQtNCB7CiAgICBvcmRlcjogNDsKICB9CiAgLm9yZGVyLW1kLTUgewogICAgb3JkZXI6IDU7CiAgfQogIC5vcmRlci1tZC02IHsKICAgIG9yZGVyOiA2OwogIH0KICAub3JkZXItbWQtNyB7CiAgICBvcmRlcjogNzsKICB9CiAgLm9yZGVyLW1kLTggewogICAgb3JkZXI6IDg7CiAgfQogIC5vcmRlci1tZC05IHsKICAgIG9yZGVyOiA5OwogIH0KICAub3JkZXItbWQtMTAgewogICAgb3JkZXI6IDEwOwogIH0KICAub3JkZXItbWQtMTEgewogICAgb3JkZXI6IDExOwogIH0KICAub3JkZXItbWQtMTIgewogICAgb3JkZXI6IDEyOwogIH0KICAub2Zmc2V0LW1kLTAgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5vZmZzZXQtbWQtMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjclOwogIH0KICAub2Zmc2V0LW1kLTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLm9mZnNldC1tZC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjclOwogIH0KICAub2Zmc2V0LW1kLTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLm9mZnNldC1tZC03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjclOwogIH0KICAub2Zmc2V0LW1kLTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLm9mZnNldC1tZC0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LW1kLTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NyU7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5jb2wtbGcgewogICAgZmxleC1iYXNpczogMDsKICAgIGZsZXgtZ3JvdzogMTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLmNvbC1sZy1hdXRvIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQogIC5jb2wtbGctMSB7CiAgICBmbGV4OiAwIDAgOC4zMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLTIgewogICAgZmxleDogMCAwIDE2LjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLTMgewogICAgZmxleDogMCAwIDI1JTsKICAgIG1heC13aWR0aDogMjUlOwogIH0KICAuY29sLWxnLTQgewogICAgZmxleDogMCAwIDMzLjMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLTUgewogICAgZmxleDogMCAwIDQxLjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLTYgewogICAgZmxleDogMCAwIDUwJTsKICAgIG1heC13aWR0aDogNTAlOwogIH0KICAuY29sLWxnLTcgewogICAgZmxleDogMCAwIDU4LjMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLTggewogICAgZmxleDogMCAwIDY2LjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLWxnLTkgewogICAgZmxleDogMCAwIDc1JTsKICAgIG1heC13aWR0aDogNzUlOwogIH0KICAuY29sLWxnLTEwIHsKICAgIGZsZXg6IDAgMCA4My4zMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy0xMSB7CiAgICBmbGV4OiAwIDAgOTEuNjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctMTIgewogICAgZmxleDogMCAwIDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5vcmRlci1sZy1maXJzdCB7CiAgICBvcmRlcjogLTE7CiAgfQogIC5vcmRlci1sZy1sYXN0IHsKICAgIG9yZGVyOiAxMzsKICB9CiAgLm9yZGVyLWxnLTAgewogICAgb3JkZXI6IDA7CiAgfQogIC5vcmRlci1sZy0xIHsKICAgIG9yZGVyOiAxOwogIH0KICAub3JkZXItbGctMiB7CiAgICBvcmRlcjogMjsKICB9CiAgLm9yZGVyLWxnLTMgewogICAgb3JkZXI6IDM7CiAgfQogIC5vcmRlci1sZy00IHsKICAgIG9yZGVyOiA0OwogIH0KICAub3JkZXItbGctNSB7CiAgICBvcmRlcjogNTsKICB9CiAgLm9yZGVyLWxnLTYgewogICAgb3JkZXI6IDY7CiAgfQogIC5vcmRlci1sZy03IHsKICAgIG9yZGVyOiA3OwogIH0KICAub3JkZXItbGctOCB7CiAgICBvcmRlcjogODsKICB9CiAgLm9yZGVyLWxnLTkgewogICAgb3JkZXI6IDk7CiAgfQogIC5vcmRlci1sZy0xMCB7CiAgICBvcmRlcjogMTA7CiAgfQogIC5vcmRlci1sZy0xMSB7CiAgICBvcmRlcjogMTE7CiAgfQogIC5vcmRlci1sZy0xMiB7CiAgICBvcmRlcjogMTI7CiAgfQogIC5vZmZzZXQtbGctMCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLm9mZnNldC1sZy0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy0yIHsKICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbGctMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LWxnLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy01IHsKICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbGctNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlOwogIH0KICAub2Zmc2V0LWxnLTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbGctOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlOwogIH0KICAub2Zmc2V0LWxnLTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbGctMTEgewogICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5jb2wteGwgewogICAgZmxleC1iYXNpczogMDsKICAgIGZsZXgtZ3JvdzogMTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLmNvbC14bC1hdXRvIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQogIC5jb2wteGwtMSB7CiAgICBmbGV4OiAwIDAgOC4zMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDguMzMzMzMzMzMlOwogIH0KICAuY29sLXhsLTIgewogICAgZmxleDogMCAwIDE2LjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogMTYuNjY2NjY2NjclOwogIH0KICAuY29sLXhsLTMgewogICAgZmxleDogMCAwIDI1JTsKICAgIG1heC13aWR0aDogMjUlOwogIH0KICAuY29sLXhsLTQgewogICAgZmxleDogMCAwIDMzLjMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogMzMuMzMzMzMzMzMlOwogIH0KICAuY29sLXhsLTUgewogICAgZmxleDogMCAwIDQxLjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogNDEuNjY2NjY2NjclOwogIH0KICAuY29sLXhsLTYgewogICAgZmxleDogMCAwIDUwJTsKICAgIG1heC13aWR0aDogNTAlOwogIH0KICAuY29sLXhsLTcgewogICAgZmxleDogMCAwIDU4LjMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogNTguMzMzMzMzMzMlOwogIH0KICAuY29sLXhsLTggewogICAgZmxleDogMCAwIDY2LjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogNjYuNjY2NjY2NjclOwogIH0KICAuY29sLXhsLTkgewogICAgZmxleDogMCAwIDc1JTsKICAgIG1heC13aWR0aDogNzUlOwogIH0KICAuY29sLXhsLTEwIHsKICAgIGZsZXg6IDAgMCA4My4zMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzMzMzJTsKICB9CiAgLmNvbC14bC0xMSB7CiAgICBmbGV4OiAwIDAgOTEuNjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA5MS42NjY2NjY2NyU7CiAgfQogIC5jb2wteGwtMTIgewogICAgZmxleDogMCAwIDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5vcmRlci14bC1maXJzdCB7CiAgICBvcmRlcjogLTE7CiAgfQogIC5vcmRlci14bC1sYXN0IHsKICAgIG9yZGVyOiAxMzsKICB9CiAgLm9yZGVyLXhsLTAgewogICAgb3JkZXI6IDA7CiAgfQogIC5vcmRlci14bC0xIHsKICAgIG9yZGVyOiAxOwogIH0KICAub3JkZXIteGwtMiB7CiAgICBvcmRlcjogMjsKICB9CiAgLm9yZGVyLXhsLTMgewogICAgb3JkZXI6IDM7CiAgfQogIC5vcmRlci14bC00IHsKICAgIG9yZGVyOiA0OwogIH0KICAub3JkZXIteGwtNSB7CiAgICBvcmRlcjogNTsKICB9CiAgLm9yZGVyLXhsLTYgewogICAgb3JkZXI6IDY7CiAgfQogIC5vcmRlci14bC03IHsKICAgIG9yZGVyOiA3OwogIH0KICAub3JkZXIteGwtOCB7CiAgICBvcmRlcjogODsKICB9CiAgLm9yZGVyLXhsLTkgewogICAgb3JkZXI6IDk7CiAgfQogIC5vcmRlci14bC0xMCB7CiAgICBvcmRlcjogMTA7CiAgfQogIC5vcmRlci14bC0xMSB7CiAgICBvcmRlcjogMTE7CiAgfQogIC5vcmRlci14bC0xMiB7CiAgICBvcmRlcjogMTI7CiAgfQogIC5vZmZzZXQteGwtMCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLm9mZnNldC14bC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LXhsLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC01IHsKICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQteGwtNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlOwogIH0KICAub2Zmc2V0LXhsLTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQteGwtOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlOwogIH0KICAub2Zmc2V0LXhsLTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQteGwtMTEgewogICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY3JTsKICB9Cn0KLnRhYmxlIHsKICB3aWR0aDogMTAwJTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoudGFibGUgdGgsCi50YWJsZSB0ZCB7CiAgcGFkZGluZzogMC43NXJlbTsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2Owp9Ci50YWJsZSB0aGVhZCB0aCB7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RlZTJlNjsKfQoudGFibGUgdGJvZHkgKyB0Ym9keSB7CiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNkZWUyZTY7Cn0KLnRhYmxlIC50YWJsZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoudGFibGUtc20gdGgsCi50YWJsZS1zbSB0ZCB7CiAgcGFkZGluZzogMC4zcmVtOwp9Ci50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKfQoudGFibGUtYm9yZGVyZWQgdGgsCi50YWJsZS1ib3JkZXJlZCB0ZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKfQoudGFibGUtYm9yZGVyZWQgdGhlYWQgdGgsCi50YWJsZS1ib3JkZXJlZCB0aGVhZCB0ZCB7CiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4Owp9Ci50YWJsZS1ib3JkZXJsZXNzIHRoLAoudGFibGUtYm9yZGVybGVzcyB0ZCwKLnRhYmxlLWJvcmRlcmxlc3MgdGhlYWQgdGgsCi50YWJsZS1ib3JkZXJsZXNzIHRib2R5ICsgdGJvZHkgewogIGJvcmRlcjogMDsKfQoudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci50YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLnRhYmxlLXByaW1hcnksCi50YWJsZS1wcmltYXJ5ID4gdGgsCi50YWJsZS1wcmltYXJ5ID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzlmY2RmZjsKfQoudGFibGUtc2Vjb25kYXJ5LAoudGFibGUtc2Vjb25kYXJ5ID4gdGgsCi50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M4Y2JjZjsKfQoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhjYmNmOwp9Ci50YWJsZS1zdWNjZXNzLAoudGFibGUtc3VjY2VzcyA+IHRoLAoudGFibGUtc3VjY2VzcyA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlNmNiOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS1zdWNjZXNzOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNiMWRmYmI7Cn0KLnRhYmxlLWluZm8sCi50YWJsZS1pbmZvID4gdGgsCi50YWJsZS1pbmZvID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNiZWU1ZWI7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9Ci50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsKfQoudGFibGUtd2FybmluZywKLnRhYmxlLXdhcm5pbmcgPiB0aCwKLnRhYmxlLXdhcm5pbmcgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmU4YTE7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExOwp9Ci50YWJsZS1kYW5nZXIsCi50YWJsZS1kYW5nZXIgPiB0aCwKLnRhYmxlLWRhbmdlciA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFiMGI3Owp9Ci50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmMWIwYjc7Cn0KLnRhYmxlLWxpZ2h0LAoudGFibGUtbGlnaHQgPiB0aCwKLnRhYmxlLWxpZ2h0ID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNmZGZkZmU7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNTsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNTsKfQoudGFibGUtZGFyaywKLnRhYmxlLWRhcmsgPiB0aCwKLnRhYmxlLWRhcmsgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNiOWJiYmU7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlOwp9Ci50YWJsZS1hY3RpdmUsCi50YWJsZS1hY3RpdmUgPiB0aCwKLnRhYmxlLWFjdGl2ZSA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7Cn0KLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwogIGJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoudGFibGUgLnRoZWFkLWxpZ2h0IHRoIHsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoudGFibGUtZGFyayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKfQoudGFibGUtZGFyayB0aCwKLnRhYmxlLWRhcmsgdGQsCi50YWJsZS1kYXJrIHRoZWFkIHRoIHsKICBib3JkZXItY29sb3I6ICMzMjM4M2U7Cn0KLnRhYmxlLWRhcmsudGFibGUtYm9yZGVyZWQgewogIGJvcmRlcjogMDsKfQoudGFibGUtZGFyay50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7Cn0KLnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNzUpOwp9Ci50YWJsZS1yZXNwb25zaXZlIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBvdmVyZmxvdy14OiBhdXRvOwogIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKfQpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1zbSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1zbSA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC50YWJsZS1yZXNwb25zaXZlLW1kIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlLW1kID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLnRhYmxlLXJlc3BvbnNpdmUtbGcgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUtbGcgPiAudGFibGUtYm9yZGVyZWQgewogICAgYm9yZGVyOiAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRhYmxlLXJlc3BvbnNpdmUteGwgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUteGwgPiAudGFibGUtYm9yZGVyZWQgewogICAgYm9yZGVyOiAwOwogIH0KfQoudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAwOwp9Ci5mb3JtLWNvbnRyb2wgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07CiAgZm9udC1zaXplOiAxcmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mb3JtLWNvbnRyb2wgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmZvcm0tY29udHJvbDo6LW1zLWV4cGFuZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9Ci5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyLWNvbG9yOiAjODBiZGZmOwogIG91dGxpbmU6IDA7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9Ci5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzZjNzU3ZDsKICBvcGFjaXR5OiAxOwp9Ci5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQsCi5mb3JtLWNvbnRyb2xbcmVhZG9ubHldIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIG9wYWNpdHk6IDE7Cn0Kc2VsZWN0LmZvcm0tY29udHJvbDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSkgewogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKfQpzZWxlY3QuZm9ybS1jb250cm9sOmZvY3VzOjotbXMtdmFsdWUgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmZvcm0tY29udHJvbC1maWxlLAouZm9ybS1jb250cm9sLXJhbmdlIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKfQouY29sLWZvcm0tbGFiZWwgewogIHBhZGRpbmctdG9wOiBjYWxjKDAuMzc1cmVtICsgMXB4KTsKICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjM3NXJlbSArIDFweCk7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IDEuNTsKfQouY29sLWZvcm0tbGFiZWwtbGcgewogIHBhZGRpbmctdG9wOiBjYWxjKDAuNXJlbSArIDFweCk7CiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtICsgMXB4KTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKfQouY29sLWZvcm0tbGFiZWwtc20gewogIHBhZGRpbmctdG9wOiBjYWxjKDAuMjVyZW0gKyAxcHgpOwogIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuMjVyZW0gKyAxcHgpOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKfQouZm9ybS1jb250cm9sLXBsYWludGV4dCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy10b3A6IDAuMzc1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTsKICBtYXJnaW4tYm90dG9tOiAwOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItd2lkdGg6IDFweCAwOwp9Ci5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1zbSwKLmZvcm0tY29udHJvbC1wbGFpbnRleHQuZm9ybS1jb250cm9sLWxnLAouaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuYnRuLAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuYnRuLAouaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuYnRuLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQuYnRuIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQouZm9ybS1jb250cm9sLXNtLAouaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4gewogIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAwLjJyZW07Cn0Kc2VsZWN0LmZvcm0tY29udHJvbC1zbTpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksCi5pbnB1dC1ncm91cC1zbSA+IHNlbGVjdC5mb3JtLWNvbnRyb2w6bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IHNlbGVjdC5pbnB1dC1ncm91cC10ZXh0Om5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IHNlbGVjdC5pbnB1dC1ncm91cC10ZXh0Om5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiBzZWxlY3QuYnRuOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IHNlbGVjdC5idG46bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKfQouZm9ybS1jb250cm9sLWxnLAouaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4gewogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQpzZWxlY3QuZm9ybS1jb250cm9sLWxnOm5vdChbc2l6ZV0pOm5vdChbbXVsdGlwbGVdKSwKLmlucHV0LWdyb3VwLWxnID4gc2VsZWN0LmZvcm0tY29udHJvbDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSksCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gc2VsZWN0LmlucHV0LWdyb3VwLXRleHQ6bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gc2VsZWN0LmlucHV0LWdyb3VwLXRleHQ6bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IHNlbGVjdC5idG46bm90KFtzaXplXSk6bm90KFttdWx0aXBsZV0pLAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gc2VsZWN0LmJ0bjpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSkgewogIGhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7Cn0KLmZvcm0tZ3JvdXAgewogIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KLmZvcm0tdGV4dCB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLXRvcDogMC4yNXJlbTsKfQouZm9ybS1yb3cgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIG1hcmdpbi1yaWdodDogLTVweDsKICBtYXJnaW4tbGVmdDogLTVweDsKfQouZm9ybS1yb3cgPiAuY29sLAouZm9ybS1yb3cgPiBbY2xhc3MqPSJjb2wtIl0gewogIHBhZGRpbmctcmlnaHQ6IDVweDsKICBwYWRkaW5nLWxlZnQ6IDVweDsKfQouZm9ybS1jaGVjayB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmctbGVmdDogMS4yNXJlbTsKfQouZm9ybS1jaGVjay1pbnB1dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIG1hcmdpbi10b3A6IDAuM3JlbTsKICBtYXJnaW4tbGVmdDogLTEuMjVyZW07Cn0KLmZvcm0tY2hlY2staW5wdXQ6ZGlzYWJsZWQgfiAuZm9ybS1jaGVjay1sYWJlbCB7CiAgY29sb3I6ICM2Yzc1N2Q7Cn0KLmZvcm0tY2hlY2stbGFiZWwgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmZvcm0tY2hlY2staW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07Cn0KLmZvcm0tY2hlY2staW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKICBwb3NpdGlvbjogc3RhdGljOwogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLXJpZ2h0OiAwLjMxMjVyZW07CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLnZhbGlkLWZlZWRiYWNrIHsKICBkaXNwbGF5OiBub25lOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi10b3A6IDAuMjVyZW07CiAgZm9udC1zaXplOiA4MCU7CiAgY29sb3I6ICMyOGE3NDU7Cn0KLnZhbGlkLXRvb2x0aXAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgei1pbmRleDogNTsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwLjVyZW07CiAgbWFyZ2luLXRvcDogMC4xcmVtOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MCwgMTY3LCA2OSwgMC44KTsKICBib3JkZXItcmFkaXVzOiAwLjJyZW07Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCwKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsCi5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsCi5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsCi5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsCi5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCB+IC52YWxpZC10b29sdGlwLAoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZCB+IC52YWxpZC10b29sdGlwLAouZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsCi5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywKLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwKLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsCi5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwKLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogIGNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzcxZGQ4YTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsCi5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzRjZTU3Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwsCi5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YmVmb3JlLAouY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywKLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwKLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCwKLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgMC4yNSk7Cn0KLmludmFsaWQtZmVlZGJhY2sgewogIGRpc3BsYXk6IG5vbmU7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLXRvcDogMC4yNXJlbTsKICBmb250LXNpemU6IDgwJTsKICBjb2xvcjogI2RjMzU0NTsKfQouaW52YWxpZC10b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMDAlOwogIHotaW5kZXg6IDU7CiAgZGlzcGxheTogbm9uZTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMC41cmVtOwogIG1hcmdpbi10b3A6IDAuMXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjIwLCA1MywgNjksIDAuOCk7CiAgYm9yZGVyLXJhZGl1czogMC4ycmVtOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCwKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCwKLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLAouY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkOmZvY3VzLAoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkOmZvY3VzLAouZm9ybS1jb250cm9sLmlzLWludmFsaWQ6Zm9jdXMsCi5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQ6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsCi5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsCi5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAouZm9ybS1jb250cm9sLWZpbGUuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsCi5mb3JtLWNvbnRyb2wtZmlsZS5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLAouZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjZGMzNTQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwKLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICNkYzM1NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwKLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VmYTJhOTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsCi5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwKLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCwKLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YmVmb3JlLAouY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YmVmb3JlIHsKICBib3JkZXItY29sb3I6IGluaGVyaXQ7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLAouY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLAouY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuMjUpOwp9Ci5mb3JtLWlubGluZSB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWZsb3c6IHJvdyB3cmFwOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHsKICB3aWR0aDogMTAwJTsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuZm9ybS1pbmxpbmUgbGFiZWwgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC5mb3JtLWlubGluZSAuZm9ybS1ncm91cCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleDogMCAwIGF1dG87CiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiBhdXRvOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB9CiAgLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCwKICAuZm9ybS1pbmxpbmUgLmN1c3RvbS1zZWxlY3QgewogICAgd2lkdGg6IGF1dG87CiAgfQogIC5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgd2lkdGg6IGF1dG87CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQogIC5mb3JtLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtOwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5mb3JtLWlubGluZSAuY3VzdG9tLWNvbnRyb2wgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIH0KICAuZm9ybS1pbmxpbmUgLmN1c3RvbS1jb250cm9sLWxhYmVsIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQp9Ci5idG4gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXdlaWdodDogNDAwOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsKICBmb250LXNpemU6IDFyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwogIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5idG4gewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmJ0bjpob3ZlciwKLmJ0bjpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5idG46Zm9jdXMsCi5idG4uZm9jdXMgewogIG91dGxpbmU6IDA7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9Ci5idG4uZGlzYWJsZWQsCi5idG46ZGlzYWJsZWQgewogIG9wYWNpdHk6IDAuNjU7Cn0KLmJ0bjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5idG46bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLAouYnRuOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQphLmJ0bi5kaXNhYmxlZCwKZmllbGRzZXQ6ZGlzYWJsZWQgYS5idG4gewogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5idG4tcHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KLmJ0bi1wcmltYXJ5OmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OWQ5OwogIGJvcmRlci1jb2xvcjogIzAwNjJjYzsKfQouYnRuLXByaW1hcnk6Zm9jdXMsCi5idG4tcHJpbWFyeS5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KLmJ0bi1wcmltYXJ5LmRpc2FibGVkLAouYnRuLXByaW1hcnk6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYzsKICBib3JkZXItY29sb3I6ICMwMDVjYmY7Cn0KLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywKLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsKfQouYnRuLXNlY29uZGFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KLmJ0bi1zZWNvbmRhcnk6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM1YTYyNjg7CiAgYm9yZGVyLWNvbG9yOiAjNTQ1YjYyOwp9Ci5idG4tc2Vjb25kYXJ5OmZvY3VzLAouYnRuLXNlY29uZGFyeS5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTA4LCAxMTcsIDEyNSwgMC41KTsKfQouYnRuLXNlY29uZGFyeS5kaXNhYmxlZCwKLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9Ci5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwKLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MjsKICBib3JkZXItY29sb3I6ICM0ZTU1NWI7Cn0KLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLAouYnRuLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAwLjUpOwp9Ci5idG4tc3VjY2VzcyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KLmJ0bi1zdWNjZXNzOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE4ODM4OwogIGJvcmRlci1jb2xvcjogIzFlN2UzNDsKfQouYnRuLXN1Y2Nlc3M6Zm9jdXMsCi5idG4tc3VjY2Vzcy5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuNSk7Cn0KLmJ0bi1zdWNjZXNzLmRpc2FibGVkLAouYnRuLXN1Y2Nlc3M6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNDsKICBib3JkZXItY29sb3I6ICMxYzc0MzA7Cn0KLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywKLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgMC41KTsKfQouYnRuLWluZm8gewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7CiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9Ci5idG4taW5mbzpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzEzODQ5NjsKICBib3JkZXItY29sb3I6ICMxMTdhOGI7Cn0KLmJ0bi1pbmZvOmZvY3VzLAouYnRuLWluZm8uZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsKfQouYnRuLWluZm8uZGlzYWJsZWQsCi5idG4taW5mbzpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiOwogIGJvcmRlci1jb2xvcjogIzEwNzA3ZjsKfQouYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLAouYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4taW5mby5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsKfQouYnRuLXdhcm5pbmcgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7CiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9Ci5idG4td2FybmluZzpob3ZlciB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwYTgwMDsKICBib3JkZXItY29sb3I6ICNkMzllMDA7Cn0KLmJ0bi13YXJuaW5nOmZvY3VzLAouYnRuLXdhcm5pbmcuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOwp9Ci5idG4td2FybmluZy5kaXNhYmxlZCwKLmJ0bi13YXJuaW5nOmRpc2FibGVkIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLAouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNkMzllMDA7CiAgYm9yZGVyLWNvbG9yOiAjYzY5NTAwOwp9Ci5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsCi5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIDAuNSk7Cn0KLmJ0bi1kYW5nZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Ci5idG4tZGFuZ2VyOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzgyMzMzOwogIGJvcmRlci1jb2xvcjogI2JkMjEzMDsKfQouYnRuLWRhbmdlcjpmb2N1cywKLmJ0bi1kYW5nZXIuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjUpOwp9Ci5idG4tZGFuZ2VyLmRpc2FibGVkLAouYnRuLWRhbmdlcjpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLAouYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwOwogIGJvcmRlci1jb2xvcjogI2IyMWYyZDsKfQouYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsCi5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLWRhbmdlci5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjUpOwp9Ci5idG4tbGlnaHQgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7CiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhOwp9Ci5idG4tbGlnaHQ6aG92ZXIgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7CiAgYm9yZGVyLWNvbG9yOiAjZGFlMGU1Owp9Ci5idG4tbGlnaHQ6Zm9jdXMsCi5idG4tbGlnaHQuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI0OCwgMjQ5LCAyNTAsIDAuNSk7Cn0KLmJ0bi1saWdodC5kaXNhYmxlZCwKLmJ0bi1saWdodDpkaXNhYmxlZCB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsCi5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1OwogIGJvcmRlci1jb2xvcjogI2QzZDlkZjsKfQouYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1saWdodC5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI0OCwgMjQ5LCAyNTAsIDAuNSk7Cn0KLmJ0bi1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwogIGJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQouYnRuLWRhcms6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7CiAgYm9yZGVyLWNvbG9yOiAjMWQyMTI0Owp9Ci5idG4tZGFyazpmb2N1cywKLmJ0bi1kYXJrLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpOwp9Ci5idG4tZGFyay5kaXNhYmxlZCwKLmJ0bi1kYXJrOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwogIGJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLAouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQ7CiAgYm9yZGVyLWNvbG9yOiAjMTcxYTFkOwp9Ci5idG4tZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsCi5idG4tZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1kYXJrLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQouYnRuLW91dGxpbmUtcHJpbWFyeSB7CiAgY29sb3I6ICMwMDdiZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5idG4tb3V0bGluZS1wcmltYXJ5OmZvY3VzLAouYnRuLW91dGxpbmUtcHJpbWFyeS5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQsCi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIHsKICBjb2xvcjogIzAwN2JmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsCi5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywKLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tb3V0bGluZS1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTA4LCAxMTcsIDEyNSwgMC41KTsKfQouYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkLAouYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9Ci5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLAouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTA4LCAxMTcsIDEyNSwgMC41KTsKfQouYnRuLW91dGxpbmUtc3VjY2VzcyB7CiAgY29sb3I6ICMyOGE3NDU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLAouYnRuLW91dGxpbmUtc3VjY2Vzcy5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQsCi5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkIHsKICBjb2xvcjogIzI4YTc0NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsCi5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywKLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tb3V0bGluZS1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLWluZm8gewogIGNvbG9yOiAjMTdhMmI4OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9Ci5idG4tb3V0bGluZS1pbmZvOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQouYnRuLW91dGxpbmUtaW5mbzpmb2N1cywKLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsKfQouYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwKLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgewogIGNvbG9yOiAjMTdhMmI4OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwKLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLAouYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXdhcm5pbmcgewogIGNvbG9yOiAjZmZjMTA3OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9Ci5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQouYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywKLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOwp9Ci5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLAouYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmMxMDc7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLAouYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQouYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsCi5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtd2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1kYW5nZXIgewogIGNvbG9yOiAjZGMzNTQ1OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Ci5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Ci5idG4tb3V0bGluZS1kYW5nZXI6Zm9jdXMsCi5idG4tb3V0bGluZS1kYW5nZXIuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsCi5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQgewogIGNvbG9yOiAjZGMzNTQ1OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLAouYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tb3V0bGluZS1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQouYnRuLW91dGxpbmUtbGlnaHQgewogIGNvbG9yOiAjZjhmOWZhOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhOwp9Ci5idG4tb3V0bGluZS1saWdodDpob3ZlciB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KLmJ0bi1vdXRsaW5lLWxpZ2h0OmZvY3VzLAouYnRuLW91dGxpbmUtbGlnaHQuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI0OCwgMjQ5LCAyNTAsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLWxpZ2h0LmRpc2FibGVkLAouYnRuLW91dGxpbmUtbGlnaHQ6ZGlzYWJsZWQgewogIGNvbG9yOiAjZjhmOWZhOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywKLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9Ci5idG4tb3V0bGluZS1kYXJrIHsKICBjb2xvcjogIzM0M2E0MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQouYnRuLW91dGxpbmUtZGFyazpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1vdXRsaW5lLWRhcms6Zm9jdXMsCi5idG4tb3V0bGluZS1kYXJrLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1kYXJrLmRpc2FibGVkLAouYnRuLW91dGxpbmUtZGFyazpkaXNhYmxlZCB7CiAgY29sb3I6ICMzNDNhNDA7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLAouYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwogIGJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQouYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsCi5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7Cn0KLmJ0bi1saW5rIHsKICBmb250LXdlaWdodDogNDAwOwogIGNvbG9yOiAjMDA3YmZmOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tbGluazpob3ZlciB7CiAgY29sb3I6ICMwMDU2YjM7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLWxpbms6Zm9jdXMsCi5idG4tbGluay5mb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3gtc2hhZG93OiBub25lOwp9Ci5idG4tbGluazpkaXNhYmxlZCwKLmJ0bi1saW5rLmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouYnRuLWxnLAouYnRuLWdyb3VwLWxnID4gLmJ0biB7CiAgcGFkZGluZzogMC41cmVtIDFyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwp9Ci5idG4tc20sCi5idG4tZ3JvdXAtc20gPiAuYnRuIHsKICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogMC4ycmVtOwp9Ci5idG4tYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwp9Ci5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHsKICBtYXJnaW4tdG9wOiAwLjVyZW07Cn0KaW5wdXRbdHlwZT0ic3VibWl0Il0uYnRuLWJsb2NrLAppbnB1dFt0eXBlPSJyZXNldCJdLmJ0bi1ibG9jaywKaW5wdXRbdHlwZT0iYnV0dG9uIl0uYnRuLWJsb2NrIHsKICB3aWR0aDogMTAwJTsKfQouZmFkZSB7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mYWRlIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9Ci5mYWRlOm5vdCguc2hvdykgewogIG9wYWNpdHk6IDA7Cn0KLmNvbGxhcHNlOm5vdCguc2hvdykgewogIGRpc3BsYXk6IG5vbmU7Cn0KLmNvbGxhcHNpbmcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zNXMgZWFzZTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmNvbGxhcHNpbmcgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmRyb3B1cCwKLmRyb3ByaWdodCwKLmRyb3Bkb3duLAouZHJvcGxlZnQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tbGVmdDogMC4yNTVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZDsKICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50Owp9Ci5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQouZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwMDA7CiAgZGlzcGxheTogbm9uZTsKICBmbG9hdDogbGVmdDsKICBtaW4td2lkdGg6IDEwcmVtOwogIHBhZGRpbmc6IDAuNXJlbSAwOwogIG1hcmdpbjogMC4xMjVyZW0gMCAwOwogIGZvbnQtc2l6ZTogMXJlbTsKICBjb2xvcjogIzIxMjUyOTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQouZHJvcGRvd24tbWVudS1yaWdodCB7CiAgcmlnaHQ6IDA7CiAgbGVmdDogYXV0bzsKfQouZHJvcHVwIC5kcm9wZG93bi1tZW51IHsKICB0b3A6IGF1dG87CiAgYm90dG9tOiAxMDAlOwogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMC4xMjVyZW07Cn0KLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tbGVmdDogMC4yNTVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItdG9wOiAwOwogIGJvcmRlci1yaWdodDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQ7CiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50Owp9Ci5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgewogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5kcm9wcmlnaHQgLmRyb3Bkb3duLW1lbnUgewogIHRvcDogMDsKICByaWdodDogYXV0bzsKICBsZWZ0OiAxMDAlOwogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMTI1cmVtOwp9Ci5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7CiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJpZ2h0OiAwOwogIGJvcmRlci1ib3R0b206IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZDsKfQouZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQouZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsKICB2ZXJ0aWNhbC1hbGlnbjogMDsKfQouZHJvcGxlZnQgLmRyb3Bkb3duLW1lbnUgewogIHRvcDogMDsKICByaWdodDogMTAwJTsKICBsZWZ0OiBhdXRvOwogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLXJpZ2h0OiAwLjEyNXJlbTsKfQouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7Cn0KLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjpiZWZvcmUgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLXJpZ2h0OiAwLjI1NWVtOwogIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtOwogIGNvbnRlbnQ6ICIiOwogIGJvcmRlci10b3A6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogMC4zZW0gc29saWQ7CiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Cn0KLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKICB2ZXJ0aWNhbC1hbGlnbjogMDsKfQouZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InRvcCJdLAouZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InJpZ2h0Il0sCi5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0iYm90dG9tIl0sCi5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKICByaWdodDogYXV0bzsKICBib3R0b206IGF1dG87Cn0KLmRyb3Bkb3duLWRpdmlkZXIgewogIGhlaWdodDogMDsKICBtYXJnaW46IDAuNXJlbSAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOWVjZWY7Cn0KLmRyb3Bkb3duLWl0ZW0gewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtOwogIGNsZWFyOiBib3RoOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgY29sb3I6ICMyMTI1Mjk7CiAgdGV4dC1hbGlnbjogaW5oZXJpdDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKfQouZHJvcGRvd24taXRlbTpob3ZlciwKLmRyb3Bkb3duLWl0ZW06Zm9jdXMgewogIGNvbG9yOiAjMTYxODFiOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9Ci5kcm9wZG93bi1pdGVtLmFjdGl2ZSwKLmRyb3Bkb3duLWl0ZW06YWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQouZHJvcGRvd24taXRlbS5kaXNhYmxlZCwKLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5kcm9wZG93bi1tZW51LnNob3cgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5kcm9wZG93bi1oZWFkZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuNXJlbSAxLjVyZW07CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmRyb3Bkb3duLWl0ZW0tdGV4dCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC4yNXJlbSAxLjVyZW07CiAgY29sb3I6ICMyMTI1Mjk7Cn0KLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLmJ0bi1ncm91cCA+IC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxleDogMCAxIGF1dG87Cn0KLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmhvdmVyIHsKICB6LWluZGV4OiAxOwp9Ci5idG4tZ3JvdXAgPiAuYnRuOmZvY3VzLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpmb2N1cywKLmJ0bi1ncm91cCA+IC5idG46YWN0aXZlLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjphY3RpdmUsCi5idG4tZ3JvdXAgPiAuYnRuLmFjdGl2ZSwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4uYWN0aXZlIHsKICB6LWluZGV4OiAxOwp9Ci5idG4tZ3JvdXAgLmJ0biArIC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgLmJ0biArIC5idG4sCi5idG4tZ3JvdXAgLmJ0biArIC5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgLmJ0biArIC5idG4tZ3JvdXAsCi5idG4tZ3JvdXAgLmJ0bi1ncm91cCArIC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCArIC5idG4sCi5idG4tZ3JvdXAgLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAsCi5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAgewogIG1hcmdpbi1sZWZ0OiAtMXB4Owp9Ci5idG4tdG9vbGJhciB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9Ci5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXAgewogIHdpZHRoOiBhdXRvOwp9Ci5idG4tZ3JvdXAgPiAuYnRuOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tbGVmdDogMDsKfQouYnRuLWdyb3VwID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwKLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLAouYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQouZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHsKICBwYWRkaW5nLXJpZ2h0OiAwLjU2MjVyZW07CiAgcGFkZGluZy1sZWZ0OiAwLjU2MjVyZW07Cn0KLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YWZ0ZXIsCi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YWZ0ZXIsCi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YWZ0ZXIgewogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjpiZWZvcmUgewogIG1hcmdpbi1yaWdodDogMDsKfQouYnRuLXNtICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCwKLmJ0bi1ncm91cC1zbSA+IC5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHsKICBwYWRkaW5nLXJpZ2h0OiAwLjM3NXJlbTsKICBwYWRkaW5nLWxlZnQ6IDAuMzc1cmVtOwp9Ci5idG4tbGcgKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LAouYnRuLWdyb3VwLWxnID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQgewogIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07CiAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgewogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgewogIHdpZHRoOiAxMDAlOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuICsgLmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLWdyb3VwLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCArIC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgbWFyZ2luLXRvcDogLTFweDsKICBtYXJnaW4tbGVmdDogMDsKfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4sCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuIGlucHV0W3R5cGU9InJhZGlvIl0sCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwKLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuIGlucHV0W3R5cGU9ImNoZWNrYm94Il0sCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLmlucHV0LWdyb3VwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgd2lkdGg6IDEwMCU7Cn0KLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsZXg6IDEgMSBhdXRvOwogIHdpZHRoOiAxJTsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6Zm9jdXMsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0OmZvY3VzLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6Zm9jdXMgewogIHotaW5kZXg6IDM7Cn0KLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0ICsgLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5jdXN0b20tc2VsZWN0LAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tc2VsZWN0LAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuY3VzdG9tLXNlbGVjdCwKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5jdXN0b20tZmlsZSwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuY3VzdG9tLWZpbGUsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tZmlsZSB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbDpub3QoOmxhc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmxhc3QtY2hpbGQpIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlOm5vdCg6bGFzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5pbnB1dC1ncm91cC1wcmVwZW5kLAouaW5wdXQtZ3JvdXAtYXBwZW5kIHsKICBkaXNwbGF5OiBmbGV4Owp9Ci5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4sCi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDI7Cn0KLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5idG4sCi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sCi5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuICsgLmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuLAouaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLXByZXBlbmQgewogIG1hcmdpbi1yaWdodDogLTFweDsKfQouaW5wdXQtZ3JvdXAtYXBwZW5kIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQouaW5wdXQtZ3JvdXAtdGV4dCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IDFyZW07CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjNDk1MDU3OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9InJhZGlvIl0sCi5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIG1hcmdpbi10b3A6IDA7Cn0KLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQouY3VzdG9tLWNvbnRyb2wgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBtaW4taGVpZ2h0OiAxLjVyZW07CiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07Cn0KLmN1c3RvbS1jb250cm9sLWlubGluZSB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgbWFyZ2luLXJpZ2h0OiAxcmVtOwp9Ci5jdXN0b20tY29udHJvbC1pbnB1dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xOwogIG9wYWNpdHk6IDA7Cn0KLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6YWN0aXZlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHsKICBjb2xvcjogIzZjNzU3ZDsKfQouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQouY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwLjI1cmVtOwogIGxlZnQ6IC0xLjVyZW07CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDFyZW07CiAgaGVpZ2h0OiAxcmVtOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIGNvbnRlbnQ6ICIiOwogIHVzZXItc2VsZWN0OiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7Cn0KLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMC4yNXJlbTsKICBsZWZ0OiAtMS41cmVtOwogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBjb250ZW50OiAiIjsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgYmFja2dyb3VuZC1zaXplOiA1MCUgNTAlOwp9Ci5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9Ci5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDggOCclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmZicgZD0nTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2IDIuOTc0IDcuMjUgOCAyLjE5M3onLyUzRSUzQy9zdmclM0UiKTsKfQouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNCA0JyUzRSUzQ3BhdGggc3Ryb2tlPSclMjNmZmYnIGQ9J00wIDJoNCcvJTNFJTNDL3N2ZyUzRSIpOwp9Ci5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsKfQouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm9yZGVyLXJhZGl1czogNTAlOwp9Ci5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCclM0UlM0NjaXJjbGUgcj0nMycgZmlsbD0nJTIzZmZmJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5jdXN0b20tc2VsZWN0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuMzc1cmVtIDEuNzVyZW0gMC4zNzVyZW0gMC43NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjNDk1MDU3OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNSclM0UlM0NwYXRoIGZpbGw9JyUyMzM0M2E0MCcgZD0nTTIgMEwwIDJoNHptMCA1TDAgM2g0eicvJTNFJTNDL3N2ZyUzRSIpIG5vLXJlcGVhdCByaWdodCAwLjc1cmVtIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDhweCAxMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKICBhcHBlYXJhbmNlOiBub25lOwp9Ci5jdXN0b20tc2VsZWN0OmZvY3VzIHsKICBib3JkZXItY29sb3I6ICM4MGJkZmY7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCA1cHggcmdiYSgxMjgsIDE4OSwgMjU1LCAwLjUpOwp9Ci5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmN1c3RvbS1zZWxlY3RbbXVsdGlwbGVdLAouY3VzdG9tLXNlbGVjdFtzaXplXTpub3QoW3NpemU9IjEiXSkgewogIGhlaWdodDogYXV0bzsKICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLmN1c3RvbS1zZWxlY3Q6ZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KLmN1c3RvbS1zZWxlY3Q6Oi1tcy1leHBhbmQgewogIG9wYWNpdHk6IDA7Cn0KLmN1c3RvbS1zZWxlY3Qtc20gewogIGhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwogIHBhZGRpbmctdG9wOiAwLjM3NXJlbTsKICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07CiAgZm9udC1zaXplOiA3NSU7Cn0KLmN1c3RvbS1zZWxlY3QtbGcgewogIGhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CiAgcGFkZGluZy10b3A6IDAuMzc1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTsKICBmb250LXNpemU6IDEyNSU7Cn0KLmN1c3RvbS1maWxlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5jdXN0b20tZmlsZS1pbnB1dCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDI7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwogIG1hcmdpbjogMDsKICBvcGFjaXR5OiAwOwp9Ci5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm9yZGVyLWNvbG9yOiAjODBiZGZmOwogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKICBib3JkZXItY29sb3I6ICM4MGJkZmY7Cn0KLmN1c3RvbS1maWxlLWlucHV0OmxhbmcoZW4pIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgY29udGVudDogIkJyb3dzZSI7Cn0KLmN1c3RvbS1maWxlLWxhYmVsIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTsKICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIHotaW5kZXg6IDM7CiAgZGlzcGxheTogYmxvY2s7CiAgaGVpZ2h0OiAyLjI1cmVtOwogIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICBjb250ZW50OiAiQnJvd3NlIjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2NlZDRkYTsKICBib3JkZXItcmFkaXVzOiAwIDAuMjVyZW0gMC4yNXJlbSAwOwp9Ci5jdXN0b20tcmFuZ2UgewogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctbGVmdDogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBhcHBlYXJhbmNlOiBub25lOwp9Ci5jdXN0b20tcmFuZ2U6Zm9jdXMgewogIG91dGxpbmU6IG5vbmU7Cn0KLmN1c3RvbS1yYW5nZTo6LW1vei1mb2N1cy1vdXRlciB7CiAgYm9yZGVyOiAwOwp9Ci5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgbWFyZ2luLXRvcDogLTAuMjVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKICBhcHBlYXJhbmNlOiBub25lOwp9Ci5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iOmZvY3VzIHsKICBvdXRsaW5lOiBub25lOwogIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWI6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9Ci5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDAuNXJlbTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAxcmVtOwp9Ci5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgewogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlcjogMDsKICBib3JkZXItcmFkaXVzOiAxcmVtOwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYjpmb2N1cyB7CiAgb3V0bGluZTogbm9uZTsKICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9Ci5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWI6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9Ci5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdHJhY2sgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMC41cmVtOwogIGNvbG9yOiB0cmFuc3BhcmVudDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDFyZW07Cn0KLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iIHsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKICBhcHBlYXJhbmNlOiBub25lOwp9Ci5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYjpmb2N1cyB7CiAgb3V0bGluZTogbm9uZTsKICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9Ci5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KLmN1c3RvbS1yYW5nZTo6LW1zLXRyYWNrIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDAuNXJlbTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXdpZHRoOiAwLjVyZW07Cn0KLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtbG93ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC11cHBlciB7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQoubmF2IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5uYXYtbGluayB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC41cmVtIDFyZW07Cn0KLm5hdi1saW5rOmhvdmVyLAoubmF2LWxpbms6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwp9Ci5uYXYtdGFicyB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTY7Cn0KLm5hdi10YWJzIC5uYXYtaXRlbSB7CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKfQoubmF2LXRhYnMgLm5hdi1saW5rIHsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5uYXYtdGFicyAubmF2LWxpbms6aG92ZXIsCi5uYXYtdGFicyAubmF2LWxpbms6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7Cn0KLm5hdi10YWJzIC5uYXYtbGluay5kaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoubmF2LXRhYnMgLm5hdi1saW5rLmFjdGl2ZSwKLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTYgI2RlZTJlNiAjZmZmOwp9Ci5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CiAgbWFyZ2luLXRvcDogLTFweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5uYXYtcGlsbHMgLm5hdi1saW5rIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwKLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoubmF2LWZpbGwgLm5hdi1pdGVtIHsKICBmbGV4OiAxIDEgYXV0bzsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIHsKICBmbGV4LWJhc2lzOiAwOwogIGZsZXgtZ3JvdzogMTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHsKICBkaXNwbGF5OiBub25lOwp9Ci50YWItY29udGVudCA+IC5hY3RpdmUgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5uYXZiYXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKfQoubmF2YmFyID4gLmNvbnRhaW5lciwKLm5hdmJhciA+IC5jb250YWluZXItZmx1aWQgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9Ci5uYXZiYXItYnJhbmQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXRvcDogMC4zMTI1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjMxMjVyZW07CiAgbWFyZ2luLXJpZ2h0OiAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5uYXZiYXItYnJhbmQ6aG92ZXIsCi5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoubmF2YmFyLW5hdiB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW4tYm90dG9tOiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQoubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBmbG9hdDogbm9uZTsKfQoubmF2YmFyLXRleHQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXRvcDogMC41cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjVyZW07Cn0KLm5hdmJhci1jb2xsYXBzZSB7CiAgZmxleC1iYXNpczogMTAwJTsKICBmbGV4LWdyb3c6IDE7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoubmF2YmFyLXRvZ2dsZXIgewogIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDE7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsCi5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5uYXZiYXItdG9nZ2xlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5uYXZiYXItdG9nZ2xlci1pY29uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEuNWVtOwogIGhlaWdodDogMS41ZW07CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBjb250ZW50OiAiIjsKICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQoubmF2YmFyLWV4cGFuZCB7CiAgZmxleC1mbG93OiByb3cgbm93cmFwOwogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsCiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5uYXZiYXItZXhwYW5kLXNtIHsKICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgewogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lciwKICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQgewogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewogIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lciwKICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1leHBhbmQtbWQgewogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLAogIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWJhc2lzOiBhdXRvOwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLXRvZ2dsZXIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CiAgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLAogIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAubmF2YmFyLWV4cGFuZC1sZyB7CiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtOwogIH0KICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsCiAgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIGZsZXgtd3JhcDogbm93cmFwOwogIH0KICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNlIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItdG9nZ2xlciB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLAogIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLm5hdmJhci1leHBhbmQteGwgewogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgfQogIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLAogIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWJhc2lzOiBhdXRvOwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLXRvZ2dsZXIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLAoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQgewogIHBhZGRpbmctcmlnaHQ6IDA7CiAgcGFkZGluZy1sZWZ0OiAwOwp9Ci5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IHsKICBmbGV4LWRpcmVjdGlvbjogcm93Owp9Ci5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07CiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07Cn0KLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLAoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQgewogIGZsZXgtd3JhcDogbm93cmFwOwp9Ci5uYXZiYXItZXhwYW5kIC5uYXZiYXItY29sbGFwc2UgewogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICBmbGV4LWJhc2lzOiBhdXRvOwp9Ci5uYXZiYXItZXhwYW5kIC5uYXZiYXItdG9nZ2xlciB7CiAgZGlzcGxheTogbm9uZTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyLAoubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rOmZvY3VzIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluaywKLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdywKLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyLWljb24gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMwIDMwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBzdHJva2U9J3JnYmEoMCwgMCwgMCwgMC41KScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzRSUzQy9zdmclM0UiKTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6aG92ZXIsCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgewogIGNvbG9yOiAjZmZmOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmhvdmVyLAoubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpmb2N1cyB7CiAgY29sb3I6ICNmZmY7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyLAoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmZvY3VzIHsKICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHsKICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLAoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyIHsKICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwogIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXItaWNvbiB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRSIpOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhIHsKICBjb2xvcjogI2ZmZjsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IGE6aG92ZXIsCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7Cn0KLmNhcmQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWluLXdpZHRoOiAwOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5jYXJkID4gaHIgewogIG1hcmdpbi1yaWdodDogMDsKICBtYXJnaW4tbGVmdDogMDsKfQouY2FyZCA+IC5saXN0LWdyb3VwOmZpcnN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW07Cn0KLmNhcmQgPiAubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKfQouY2FyZC1ib2R5IHsKICBmbGV4OiAxIDEgYXV0bzsKICBwYWRkaW5nOiAxLjI1cmVtOwp9Ci5jYXJkLXRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwp9Ci5jYXJkLXN1YnRpdGxlIHsKICBtYXJnaW4tdG9wOiAtMC4zNzVyZW07CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY2FyZC10ZXh0Omxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmNhcmQtbGluazpob3ZlciB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5jYXJkLWxpbmsgKyAuY2FyZC1saW5rIHsKICBtYXJnaW4tbGVmdDogMS4yNXJlbTsKfQouY2FyZC1oZWFkZXIgewogIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsKICBtYXJnaW4tYm90dG9tOiAwOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOwp9Ci5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpIDAgMDsKfQouY2FyZC1oZWFkZXIgKyAubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wOiAwOwp9Ci5jYXJkLWZvb3RlciB7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOwp9Ci5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHsKICBib3JkZXItcmFkaXVzOiAwIDAgY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpOwp9Ci5jYXJkLWhlYWRlci10YWJzIHsKICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTsKICBtYXJnaW4tYm90dG9tOiAtMC43NXJlbTsKICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtOwogIGJvcmRlci1ib3R0b206IDA7Cn0KLmNhcmQtaGVhZGVyLXBpbGxzIHsKICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTsKICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtOwp9Ci5jYXJkLWltZy1vdmVybGF5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHBhZGRpbmc6IDEuMjVyZW07Cn0KLmNhcmQtaW1nIHsKICB3aWR0aDogMTAwJTsKICBib3JkZXItcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpOwp9Ci5jYXJkLWltZy10b3AgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7Cn0KLmNhcmQtaW1nLWJvdHRvbSB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQouY2FyZC1kZWNrIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLmNhcmQtZGVjayAuY2FyZCB7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY2FyZC1kZWNrIHsKICAgIGZsZXgtZmxvdzogcm93IHdyYXA7CiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4OwogICAgbWFyZ2luLWxlZnQ6IC0xNXB4OwogIH0KICAuY2FyZC1kZWNrIC5jYXJkIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4OiAxIDAgMCU7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogIH0KfQouY2FyZC1ncm91cCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9Ci5jYXJkLWdyb3VwID4gLmNhcmQgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmNhcmQtZ3JvdXAgewogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CiAgICBmbGV4OiAxIDAgMCU7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkICsgLmNhcmQgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBib3JkZXItbGVmdDogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy10b3AsCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwKICAuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWZvb3RlciB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCwKICAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaGVhZGVyIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1pbWctYm90dG9tLAogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIHsKICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1pbWctdG9wLAogIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1oZWFkZXIgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwKICAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtZm9vdGVyIHsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLXRvcCwKICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctYm90dG9tLAogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIC5jYXJkLWhlYWRlciwKICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLXJhZGl1czogMDsKICB9Cn0KLmNhcmQtY29sdW1ucyAuY2FyZCB7CiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY2FyZC1jb2x1bW5zIHsKICAgIGNvbHVtbi1jb3VudDogMzsKICAgIGNvbHVtbi1nYXA6IDEuMjVyZW07CiAgICBvcnBoYW5zOiAxOwogICAgd2lkb3dzOiAxOwogIH0KICAuY2FyZC1jb2x1bW5zIC5jYXJkIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQouYWNjb3JkaW9uIC5jYXJkOm5vdCg6Zmlyc3Qtb2YtdHlwZSk6bm90KDpsYXN0LW9mLXR5cGUpIHsKICBib3JkZXItYm90dG9tOiAwOwogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpIC5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouYWNjb3JkaW9uIC5jYXJkOmZpcnN0LW9mLXR5cGUgewogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQouYWNjb3JkaW9uIC5jYXJkOmxhc3Qtb2YtdHlwZSB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQouYnJlYWRjcnVtYiB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgcGFkZGluZzogMC43NXJlbSAxcmVtOwogIG1hcmdpbi1ib3R0b206IDFyZW07CiAgbGlzdC1zdHlsZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW0gewogIHBhZGRpbmctbGVmdDogMC41cmVtOwp9Ci5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOjpiZWZvcmUgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07CiAgY29sb3I6ICM2Yzc1N2Q7CiAgY29udGVudDogIi8iOwp9Ci5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmUgewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9Ci5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmUgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQouYnJlYWRjcnVtYi1pdGVtLmFjdGl2ZSB7CiAgY29sb3I6ICM2Yzc1N2Q7Cn0KLnBhZ2luYXRpb24gewogIGRpc3BsYXk6IGZsZXg7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoucGFnZS1saW5rIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07CiAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgbGluZS1oZWlnaHQ6IDEuMjU7CiAgY29sb3I6ICMwMDdiZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2Owp9Ci5wYWdlLWxpbms6aG92ZXIgewogIHotaW5kZXg6IDI7CiAgY29sb3I6ICMwMDU2YjM7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2Owp9Ci5wYWdlLWxpbms6Zm9jdXMgewogIHotaW5kZXg6IDI7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KLnBhZ2UtbGluazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgbWFyZ2luLWxlZnQ6IDA7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKfQoucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHsKICB6LWluZGV4OiAxOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5wYWdlLWl0ZW0uZGlzYWJsZWQgLnBhZ2UtbGluayB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgY3Vyc29yOiBhdXRvOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2Owp9Ci5wYWdpbmF0aW9uLWxnIC5wYWdlLWxpbmsgewogIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMS41Owp9Ci5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuM3JlbTsKfQoucGFnaW5hdGlvbi1sZyAucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuM3JlbTsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4zcmVtOwp9Ci5wYWdpbmF0aW9uLXNtIC5wYWdlLWxpbmsgewogIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKfQoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMnJlbTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjJyZW07Cn0KLnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjJyZW07CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMnJlbTsKfQouYmFkZ2UgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nOiAwLjI1ZW0gMC40ZW07CiAgZm9udC1zaXplOiA3NSU7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBsaW5lLWhlaWdodDogMTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQouYmFkZ2U6ZW1wdHkgewogIGRpc3BsYXk6IG5vbmU7Cn0KLmJ0biAuYmFkZ2UgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IC0xcHg7Cn0KLmJhZGdlLXBpbGwgewogIHBhZGRpbmctcmlnaHQ6IDAuNmVtOwogIHBhZGRpbmctbGVmdDogMC42ZW07CiAgYm9yZGVyLXJhZGl1czogMTByZW07Cn0KLmJhZGdlLXByaW1hcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KLmJhZGdlLXByaW1hcnlbaHJlZl06aG92ZXIsCi5iYWRnZS1wcmltYXJ5W2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYzsKfQouYmFkZ2Utc2Vjb25kYXJ5IHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwp9Ci5iYWRnZS1zZWNvbmRhcnlbaHJlZl06aG92ZXIsCi5iYWRnZS1zZWNvbmRhcnlbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ1YjYyOwp9Ci5iYWRnZS1zdWNjZXNzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1Owp9Ci5iYWRnZS1zdWNjZXNzW2hyZWZdOmhvdmVyLAouYmFkZ2Utc3VjY2Vzc1tocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7Cn0KLmJhZGdlLWluZm8gewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cn0KLmJhZGdlLWluZm9baHJlZl06aG92ZXIsCi5iYWRnZS1pbmZvW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YjsKfQouYmFkZ2Utd2FybmluZyB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKfQouYmFkZ2Utd2FybmluZ1tocmVmXTpob3ZlciwKLmJhZGdlLXdhcm5pbmdbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwp9Ci5iYWRnZS1kYW5nZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cn0KLmJhZGdlLWRhbmdlcltocmVmXTpob3ZlciwKLmJhZGdlLWRhbmdlcltocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNiZDIxMzA7Cn0KLmJhZGdlLWxpZ2h0IHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9Ci5iYWRnZS1saWdodFtocmVmXTpob3ZlciwKLmJhZGdlLWxpZ2h0W2hyZWZdOmZvY3VzIHsKICBjb2xvcjogIzIxMjUyOTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNTsKfQouYmFkZ2UtZGFyayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKfQouYmFkZ2UtZGFya1tocmVmXTpob3ZlciwKLmJhZGdlLWRhcmtbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0Owp9Ci5qdW1ib3Ryb24gewogIHBhZGRpbmc6IDJyZW0gMXJlbTsKICBtYXJnaW4tYm90dG9tOiAycmVtOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5qdW1ib3Ryb24gewogICAgcGFkZGluZzogNHJlbSAycmVtOwogIH0KfQouanVtYm90cm9uLWZsdWlkIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5hbGVydCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmFsZXJ0LWhlYWRpbmcgewogIGNvbG9yOiBpbmhlcml0Owp9Ci5hbGVydC1saW5rIHsKICBmb250LXdlaWdodDogNzAwOwp9Ci5hbGVydC1kaXNtaXNzaWJsZSB7CiAgcGFkZGluZy1yaWdodDogNHJlbTsKfQouYWxlcnQtZGlzbWlzc2libGUgLmNsb3NlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsKICBjb2xvcjogaW5oZXJpdDsKfQouYWxlcnQtcHJpbWFyeSB7CiAgY29sb3I6ICMwMDQwODU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZTVmZjsKICBib3JkZXItY29sb3I6ICNiOGRhZmY7Cn0KLmFsZXJ0LXByaW1hcnkgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICM5ZmNkZmY7Cn0KLmFsZXJ0LXByaW1hcnkgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjMDAyNzUyOwp9Ci5hbGVydC1zZWNvbmRhcnkgewogIGNvbG9yOiAjMzgzZDQxOwogIGJhY2tncm91bmQtY29sb3I6ICNlMmUzZTU7CiAgYm9yZGVyLWNvbG9yOiAjZDZkOGRiOwp9Ci5hbGVydC1zZWNvbmRhcnkgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNjOGNiY2Y7Cn0KLmFsZXJ0LXNlY29uZGFyeSAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMyMDIzMjY7Cn0KLmFsZXJ0LXN1Y2Nlc3MgewogIGNvbG9yOiAjMTU1NzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7CiAgYm9yZGVyLWNvbG9yOiAjYzNlNmNiOwp9Ci5hbGVydC1zdWNjZXNzIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYjFkZmJiOwp9Ci5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzBiMmUxMzsKfQouYWxlcnQtaW5mbyB7CiAgY29sb3I6ICMwYzU0NjA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QxZWNmMTsKICBib3JkZXItY29sb3I6ICNiZWU1ZWI7Cn0KLmFsZXJ0LWluZm8gaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7Cn0KLmFsZXJ0LWluZm8gLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjMDYyYzMzOwp9Ci5hbGVydC13YXJuaW5nIHsKICBjb2xvcjogIzg1NjQwNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2NkOwogIGJvcmRlci1jb2xvcjogI2ZmZWViYTsKfQouYWxlcnQtd2FybmluZyBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZThhMTsKfQouYWxlcnQtd2FybmluZyAuYWxlcnQtbGluayB7CiAgY29sb3I6ICM1MzNmMDM7Cn0KLmFsZXJ0LWRhbmdlciB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTsKICBib3JkZXItY29sb3I6ICNmNWM2Y2I7Cn0KLmFsZXJ0LWRhbmdlciBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2YxYjBiNzsKfQouYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzQ5MTIxNzsKfQouYWxlcnQtbGlnaHQgewogIGNvbG9yOiAjODE4MTgyOwogIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7CiAgYm9yZGVyLWNvbG9yOiAjZmRmZGZlOwp9Ci5hbGVydC1saWdodCBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2VjZWNmNTsKfQouYWxlcnQtbGlnaHQgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjNjg2ODY4Owp9Ci5hbGVydC1kYXJrIHsKICBjb2xvcjogIzFiMWUyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGQ5OwogIGJvcmRlci1jb2xvcjogI2M2YzhjYTsKfQouYWxlcnQtZGFyayBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2I5YmJiZTsKfQouYWxlcnQtZGFyayAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwNDA0MDU7Cn0KQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxcmVtIDA7CiAgfQogIHRvIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9Cn0KLnByb2dyZXNzIHsKICBkaXNwbGF5OiBmbGV4OwogIGhlaWdodDogMXJlbTsKICBvdmVyZmxvdzogaGlkZGVuOwogIGZvbnQtc2l6ZTogMC43NXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLnByb2dyZXNzLWJhciB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAucHJvZ3Jlc3MtYmFyIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9Ci5wcm9ncmVzcy1iYXItc3RyaXBlZCB7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7CiAgYmFja2dyb3VuZC1zaXplOiAxcmVtIDFyZW07Cn0KLnByb2dyZXNzLWJhci1hbmltYXRlZCB7CiAgYW5pbWF0aW9uOiBwcm9ncmVzcy1iYXItc3RyaXBlcyAxcyBsaW5lYXIgaW5maW5pdGU7Cn0KLm1lZGlhIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Owp9Ci5tZWRpYS1ib2R5IHsKICBmbGV4OiAxOwp9Ci5saXN0LWdyb3VwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbi1ib3R0b206IDA7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gewogIHdpZHRoOiAxMDAlOwogIGNvbG9yOiAjNDk1MDU3OwogIHRleHQtYWxpZ246IGluaGVyaXQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzQ5NTA1NzsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKfQoubGlzdC1ncm91cC1pdGVtLWFjdGlvbjphY3RpdmUgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KLmxpc3QtZ3JvdXAtaXRlbSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsKICBtYXJnaW4tYm90dG9tOiAtMXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKfQoubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKfQoubGlzdC1ncm91cC1pdGVtOmhvdmVyLAoubGlzdC1ncm91cC1pdGVtOmZvY3VzIHsKICB6LWluZGV4OiAxOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkLAoubGlzdC1ncm91cC1pdGVtOmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsKICB6LWluZGV4OiAyOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5saXN0LWdyb3VwLWZsdXNoIC5saXN0LWdyb3VwLWl0ZW0gewogIGJvcmRlci1yaWdodDogMDsKICBib3JkZXItbGVmdDogMDsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5saXN0LWdyb3VwLWZsdXNoOmZpcnN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3A6IDA7Cn0KLmxpc3QtZ3JvdXAtZmx1c2g6bGFzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b206IDA7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5IHsKICBjb2xvcjogIzAwNDA4NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhkYWZmOwp9Ci5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLAoubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMwMDQwODU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzlmY2RmZjsKfQoubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDQwODU7CiAgYm9yZGVyLWNvbG9yOiAjMDA0MDg1Owp9Ci5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5IHsKICBjb2xvcjogIzM4M2Q0MTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGRiOwp9Ci5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjMzgzZDQxOwogIGJhY2tncm91bmQtY29sb3I6ICNjOGNiY2Y7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzODNkNDE7CiAgYm9yZGVyLWNvbG9yOiAjMzgzZDQxOwp9Ci5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyB7CiAgY29sb3I6ICMxNTU3MjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjsKfQoubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjMTU1NzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNiMWRmYmI7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU1NzI0OwogIGJvcmRlci1jb2xvcjogIzE1NTcyNDsKfQoubGlzdC1ncm91cC1pdGVtLWluZm8gewogIGNvbG9yOiAjMGM1NDYwOwogIGJhY2tncm91bmQtY29sb3I6ICNiZWU1ZWI7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsCi5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzBjNTQ2MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9Ci5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzBjNTQ2MDsKICBib3JkZXItY29sb3I6ICMwYzU0NjA7Cn0KLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHsKICBjb2xvcjogIzg1NjQwNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZWJhOwp9Ci5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLAoubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM4NTY0MDQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZThhMTsKfQoubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM4NTY0MDQ7CiAgYm9yZGVyLWNvbG9yOiAjODU2NDA0Owp9Ci5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyIHsKICBjb2xvcjogIzcyMWMyNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiOwp9Ci5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsCi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjNzIxYzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNmMWIwYjc7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM3MjFjMjQ7CiAgYm9yZGVyLWNvbG9yOiAjNzIxYzI0Owp9Ci5saXN0LWdyb3VwLWl0ZW0tbGlnaHQgewogIGNvbG9yOiAjODE4MTgyOwogIGJhY2tncm91bmQtY29sb3I6ICNmZGZkZmU7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLAoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjODE4MTgyOwogIGJhY2tncm91bmQtY29sb3I6ICNlY2VjZjU7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzgxODE4MjsKICBib3JkZXItY29sb3I6ICM4MTgxODI7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYXJrIHsKICBjb2xvcjogIzFiMWUyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzZjOGNhOwp9Ci5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLAoubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMxYjFlMjE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZTsKfQoubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxYjFlMjE7CiAgYm9yZGVyLWNvbG9yOiAjMWIxZTIxOwp9Ci5jbG9zZSB7CiAgZmxvYXQ6IHJpZ2h0OwogIGZvbnQtc2l6ZTogMS41cmVtOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY29sb3I6ICMwMDA7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjsKICBvcGFjaXR5OiAwLjU7Cn0KLmNsb3NlOmhvdmVyLAouY2xvc2U6Zm9jdXMgewogIGNvbG9yOiAjMDAwOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBvcGFjaXR5OiAwLjc1Owp9Ci5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CmJ1dHRvbi5jbG9zZSB7CiAgcGFkZGluZzogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDA7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9Ci5tb2RhbC1vcGVuIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5tb2RhbCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDUwOwogIGRpc3BsYXk6IG5vbmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBvdXRsaW5lOiAwOwp9Ci5tb2RhbC1vcGVuIC5tb2RhbCB7CiAgb3ZlcmZsb3cteDogaGlkZGVuOwogIG92ZXJmbG93LXk6IGF1dG87Cn0KLm1vZGFsLWRpYWxvZyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiBhdXRvOwogIG1hcmdpbjogMC41cmVtOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9Ci5tb2RhbC5zaG93IC5tb2RhbC1kaWFsb2cgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwp9Ci5tb2RhbC1kaWFsb2ctY2VudGVyZWQgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoMC41cmVtICogMikpOwp9Ci5tb2RhbC1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHdpZHRoOiAxMDAlOwogIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwogIG91dGxpbmU6IDA7Cn0KLm1vZGFsLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwNDA7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoubW9kYWwtYmFja2Ryb3AuZmFkZSB7CiAgb3BhY2l0eTogMDsKfQoubW9kYWwtYmFja2Ryb3Auc2hvdyB7CiAgb3BhY2l0eTogMC41Owp9Ci5tb2RhbC1oZWFkZXIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHBhZGRpbmc6IDFyZW07CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOWVjZWY7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjNyZW07Cn0KLm1vZGFsLWhlYWRlciAuY2xvc2UgewogIHBhZGRpbmc6IDFyZW07CiAgbWFyZ2luOiAtMXJlbSAtMXJlbSAtMXJlbSBhdXRvOwp9Ci5tb2RhbC10aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaW5lLWhlaWdodDogMS41Owp9Ci5tb2RhbC1ib2R5IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxleDogMSAxIGF1dG87CiAgcGFkZGluZzogMXJlbTsKfQoubW9kYWwtZm9vdGVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICBwYWRkaW5nOiAxcmVtOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllY2VmOwp9Ci5tb2RhbC1mb290ZXIgPiA6bm90KDpmaXJzdC1jaGlsZCkgewogIG1hcmdpbi1sZWZ0OiAwLjI1cmVtOwp9Ci5tb2RhbC1mb290ZXIgPiA6bm90KDpsYXN0LWNoaWxkKSB7CiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtOwp9Ci5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTk5OTlweDsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgb3ZlcmZsb3c6IHNjcm9sbDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAubW9kYWwtZGlhbG9nIHsKICAgIG1heC13aWR0aDogNTAwcHg7CiAgICBtYXJnaW46IDEuNzVyZW0gYXV0bzsKICB9CiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoMS43NXJlbSAqIDIpKTsKICB9CiAgLm1vZGFsLXNtIHsKICAgIG1heC13aWR0aDogMzAwcHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5tb2RhbC1sZyB7CiAgICBtYXgtd2lkdGg6IDgwMHB4OwogIH0KfQoudG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDEwNzA7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgdGV4dC1hbGlnbjogbGVmdDsKICB0ZXh0LWFsaWduOiBzdGFydDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsKICB3b3JkLWJyZWFrOiBub3JtYWw7CiAgd29yZC1zcGFjaW5nOiBub3JtYWw7CiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICBsaW5lLWJyZWFrOiBhdXRvOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgd29yZC13cmFwOiBicmVhay13b3JkOwogIG9wYWNpdHk6IDA7Cn0KLnRvb2x0aXAuc2hvdyB7CiAgb3BhY2l0eTogMC45Owp9Ci50b29sdGlwIC5hcnJvdyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAwLjhyZW07CiAgaGVpZ2h0OiAwLjRyZW07Cn0KLnRvb2x0aXAgLmFycm93OjpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjb250ZW50OiAiIjsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1zdHlsZTogc29saWQ7Cn0KLmJzLXRvb2x0aXAtdG9wLAouYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gewogIHBhZGRpbmc6IDAuNHJlbSAwOwp9Ci5icy10b29sdGlwLXRvcCAuYXJyb3csCi5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3cgewogIGJvdHRvbTogMDsKfQouYnMtdG9vbHRpcC10b3AgLmFycm93OjpiZWZvcmUsCi5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmJlZm9yZSB7CiAgdG9wOiAwOwogIGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwOwogIGJvcmRlci10b3AtY29sb3I6ICMwMDA7Cn0KLmJzLXRvb2x0aXAtcmlnaHQsCi5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKICBwYWRkaW5nOiAwIDAuNHJlbTsKfQouYnMtdG9vbHRpcC1yaWdodCAuYXJyb3csCi5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdyB7CiAgbGVmdDogMDsKICB3aWR0aDogMC40cmVtOwogIGhlaWdodDogMC44cmVtOwp9Ci5icy10b29sdGlwLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLAouYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmJlZm9yZSB7CiAgcmlnaHQ6IDA7CiAgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMC40cmVtIDAuNHJlbSAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogIzAwMDsKfQouYnMtdG9vbHRpcC1ib3R0b20sCi5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSB7CiAgcGFkZGluZzogMC40cmVtIDA7Cn0KLmJzLXRvb2x0aXAtYm90dG9tIC5hcnJvdywKLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdyB7CiAgdG9wOiAwOwp9Ci5icy10b29sdGlwLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwKLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YmVmb3JlIHsKICBib3R0b206IDA7CiAgYm9yZGVyLXdpZHRoOiAwIDAuNHJlbSAwLjRyZW07CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAwMDsKfQouYnMtdG9vbHRpcC1sZWZ0LAouYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKICBwYWRkaW5nOiAwIDAuNHJlbTsKfQouYnMtdG9vbHRpcC1sZWZ0IC5hcnJvdywKLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3cgewogIHJpZ2h0OiAwOwogIHdpZHRoOiAwLjRyZW07CiAgaGVpZ2h0OiAwLjhyZW07Cn0KLmJzLXRvb2x0aXAtbGVmdCAuYXJyb3c6OmJlZm9yZSwKLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSB7CiAgbGVmdDogMDsKICBib3JkZXItd2lkdGg6IDAuNHJlbSAwIDAuNHJlbSAwLjRyZW07CiAgYm9yZGVyLWxlZnQtY29sb3I6ICMwMDA7Cn0KLnRvb2x0aXAtaW5uZXIgewogIG1heC13aWR0aDogMjAwcHg7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDA7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoucG9wb3ZlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwNjA7CiAgZGlzcGxheTogYmxvY2s7CiAgbWF4LXdpZHRoOiAyNzZweDsKICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmLCAiQXBwbGUgQ29sb3IgRW1vamkiLCAiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIjsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMS41OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1hbGlnbjogc3RhcnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRleHQtc2hhZG93OiBub25lOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgd29yZC1icmVhazogbm9ybWFsOwogIHdvcmQtc3BhY2luZzogbm9ybWFsOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgbGluZS1icmVhazogYXV0bzsKICBmb250LXNpemU6IDAuODc1cmVtOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoucG9wb3ZlciAuYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDAuNXJlbTsKICBtYXJnaW46IDAgMC4zcmVtOwp9Ci5wb3BvdmVyIC5hcnJvdzo6YmVmb3JlLAoucG9wb3ZlciAuYXJyb3c6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci5icy1wb3BvdmVyLXRvcCwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KLmJzLXBvcG92ZXItdG9wIC5hcnJvdywKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdyB7CiAgYm90dG9tOiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwp9Ci5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwKLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmJlZm9yZSwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwOwp9Ci5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlIHsKICBib3R0b206IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvdHRvbTogMXB4OwogIGJvcmRlci10b3AtY29sb3I6ICNmZmY7Cn0KLmJzLXBvcG92ZXItcmlnaHQsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKICBtYXJnaW4tbGVmdDogMC41cmVtOwp9Ci5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdywKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKICBsZWZ0OiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwogIHdpZHRoOiAwLjVyZW07CiAgaGVpZ2h0OiAxcmVtOwogIG1hcmdpbjogMC4zcmVtIDA7Cn0KLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVyIHsKICBib3JkZXItd2lkdGg6IDAuNXJlbSAwLjVyZW0gMC41cmVtIDA7Cn0KLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlIHsKICBsZWZ0OiAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVyIHsKICBsZWZ0OiAxcHg7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKICBtYXJnaW4tdG9wOiAwLjVyZW07Cn0KLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdywKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdyB7CiAgdG9wOiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMCAwLjVyZW0gMC41cmVtIDAuNXJlbTsKfQouYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7CiAgdG9wOiAwOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmFmdGVyIHsKICB0b3A6IDFweDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDUwJTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBtYXJnaW4tbGVmdDogLTAuNXJlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y3ZjdmNzsKfQouYnMtcG9wb3Zlci1sZWZ0LAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdywKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3cgewogIHJpZ2h0OiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwogIHdpZHRoOiAwLjVyZW07CiAgaGVpZ2h0OiAxcmVtOwogIG1hcmdpbjogMC4zcmVtIDA7Cn0KLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YmVmb3JlLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAgMC41cmVtIDAuNXJlbTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YmVmb3JlLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YmVmb3JlIHsKICByaWdodDogMDsKICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjphZnRlciB7CiAgcmlnaHQ6IDFweDsKICBib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoucG9wb3Zlci1oZWFkZXIgewogIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGNvbG9yOiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7Cn0KLnBvcG92ZXItaGVhZGVyOmVtcHR5IHsKICBkaXNwbGF5OiBub25lOwp9Ci5wb3BvdmVyLWJvZHkgewogIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9Ci5jYXJvdXNlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5jYXJvdXNlbC1pbm5lciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmNhcm91c2VsLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBub25lOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgd2lkdGg6IDEwMCU7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNnMgZWFzZTsKICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgcGVyc3BlY3RpdmU6IDEwMDBweDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmNhcm91c2VsLWl0ZW0gewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmNhcm91c2VsLWl0ZW0uYWN0aXZlLAouY2Fyb3VzZWwtaXRlbS1uZXh0LAouY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICBkaXNwbGF5OiBibG9jazsKfQouY2Fyb3VzZWwtaXRlbS1uZXh0LAouY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwp9Ci5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LAouY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKfQpAc3VwcG9ydHMgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIHsKICAuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwKICAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB9Cn0KLmNhcm91c2VsLWl0ZW0tbmV4dCwKLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CiAgLmNhcm91c2VsLWl0ZW0tbmV4dCwKICAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICB9Cn0KLmNhcm91c2VsLWl0ZW0tcHJldiwKLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7Cn0KQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CiAgLmNhcm91c2VsLWl0ZW0tcHJldiwKICAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICB9Cn0KLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0gewogIG9wYWNpdHk6IDA7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC42czsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9Ci5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgb3BhY2l0eTogMTsKfQouY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICBvcGFjaXR5OiAwOwp9Ci5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLXByZXYsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsCi5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CiAgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dCwKICAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LAogIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKICAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwKICAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogIH0KfQouY2Fyb3VzZWwtY29udHJvbC1wcmV2LAouY2Fyb3VzZWwtY29udHJvbC1uZXh0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgd2lkdGg6IDE1JTsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgb3BhY2l0eTogMC41Owp9Ci5jYXJvdXNlbC1jb250cm9sLXByZXY6aG92ZXIsCi5jYXJvdXNlbC1jb250cm9sLW5leHQ6aG92ZXIsCi5jYXJvdXNlbC1jb250cm9sLXByZXY6Zm9jdXMsCi5jYXJvdXNlbC1jb250cm9sLW5leHQ6Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBvdXRsaW5lOiAwOwogIG9wYWNpdHk6IDAuOTsKfQouY2Fyb3VzZWwtY29udHJvbC1wcmV2IHsKICBsZWZ0OiAwOwp9Ci5jYXJvdXNlbC1jb250cm9sLW5leHQgewogIHJpZ2h0OiAwOwp9Ci5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbiwKLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDIwcHg7CiAgaGVpZ2h0OiAyMHB4OwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyOwogIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwp9Ci5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbiB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZicgdmlld0JveD0nMCAwIDggOCclM0UlM0NwYXRoIGQ9J001LjI1IDBsLTQgNCA0IDQgMS41LTEuNS0yLjUtMi41IDIuNS0yLjUtMS41LTEuNXonLyUzRSUzQy9zdmclM0UiKTsKfQouY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNMi43NSAwbC0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDQtNC00LTR6Jy8lM0UlM0Mvc3ZnJTNFIik7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMDsKICBib3R0b206IDEwcHg7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxNTsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW4tcmlnaHQ6IDE1JTsKICBtYXJnaW4tbGVmdDogMTUlOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgbGkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbGV4OiAwIDEgYXV0bzsKICB3aWR0aDogMzBweDsKICBoZWlnaHQ6IDNweDsKICBtYXJnaW4tcmlnaHQ6IDNweDsKICBtYXJnaW4tbGVmdDogM3B4OwogIHRleHQtaW5kZW50OiAtOTk5cHg7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKfQouY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaTo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAtMTBweDsKICBsZWZ0OiAwOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwcHg7CiAgY29udGVudDogIiI7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAtMTBweDsKICBsZWZ0OiAwOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwcHg7CiAgY29udGVudDogIiI7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgLmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQouY2Fyb3VzZWwtY2FwdGlvbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAxNSU7CiAgYm90dG9tOiAyMHB4OwogIGxlZnQ6IDE1JTsKICB6LWluZGV4OiAxMDsKICBwYWRkaW5nLXRvcDogMjBweDsKICBwYWRkaW5nLWJvdHRvbTogMjBweDsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmFsaWduLWJhc2VsaW5lIHsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKfQouYWxpZ24tdG9wIHsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wICFpbXBvcnRhbnQ7Cn0KLmFsaWduLW1pZGRsZSB7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50Owp9Ci5hbGlnbi1ib3R0b20gewogIHZlcnRpY2FsLWFsaWduOiBib3R0b20gIWltcG9ydGFudDsKfQouYWxpZ24tdGV4dC1ib3R0b20gewogIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbSAhaW1wb3J0YW50Owp9Ci5hbGlnbi10ZXh0LXRvcCB7CiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wICFpbXBvcnRhbnQ7Cn0KLmJnLXByaW1hcnkgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsKfQphLmJnLXByaW1hcnk6aG92ZXIsCmJ1dHRvbi5iZy1wcmltYXJ5OmhvdmVyLAphLmJnLXByaW1hcnk6Zm9jdXMsCmJ1dHRvbi5iZy1wcmltYXJ5OmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjICFpbXBvcnRhbnQ7Cn0KLmJnLXNlY29uZGFyeSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CmEuYmctc2Vjb25kYXJ5OmhvdmVyLApidXR0b24uYmctc2Vjb25kYXJ5OmhvdmVyLAphLmJnLXNlY29uZGFyeTpmb2N1cywKYnV0dG9uLmJnLXNlY29uZGFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MiAhaW1wb3J0YW50Owp9Ci5iZy1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7Cn0KYS5iZy1zdWNjZXNzOmhvdmVyLApidXR0b24uYmctc3VjY2Vzczpob3ZlciwKYS5iZy1zdWNjZXNzOmZvY3VzLApidXR0b24uYmctc3VjY2Vzczpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNCAhaW1wb3J0YW50Owp9Ci5iZy1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7Cn0KYS5iZy1pbmZvOmhvdmVyLApidXR0b24uYmctaW5mbzpob3ZlciwKYS5iZy1pbmZvOmZvY3VzLApidXR0b24uYmctaW5mbzpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YiAhaW1wb3J0YW50Owp9Ci5iZy13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7Cn0KYS5iZy13YXJuaW5nOmhvdmVyLApidXR0b24uYmctd2FybmluZzpob3ZlciwKYS5iZy13YXJuaW5nOmZvY3VzLApidXR0b24uYmctd2FybmluZzpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50Owp9Ci5iZy1kYW5nZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsKfQphLmJnLWRhbmdlcjpob3ZlciwKYnV0dG9uLmJnLWRhbmdlcjpob3ZlciwKYS5iZy1kYW5nZXI6Zm9jdXMsCmJ1dHRvbi5iZy1kYW5nZXI6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNiZDIxMzAgIWltcG9ydGFudDsKfQouYmctbGlnaHQgewogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQphLmJnLWxpZ2h0OmhvdmVyLApidXR0b24uYmctbGlnaHQ6aG92ZXIsCmEuYmctbGlnaHQ6Zm9jdXMsCmJ1dHRvbi5iZy1saWdodDpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNSAhaW1wb3J0YW50Owp9Ci5iZy1kYXJrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7Cn0KYS5iZy1kYXJrOmhvdmVyLApidXR0b24uYmctZGFyazpob3ZlciwKYS5iZy1kYXJrOmZvY3VzLApidXR0b24uYmctZGFyazpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50Owp9Ci5iZy13aGl0ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Ci5iZy10cmFuc3BhcmVudCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKfQouYm9yZGVyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci10b3AgewogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1yaWdodCB7CiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9Ci5ib3JkZXItYm90dG9tIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9Ci5ib3JkZXItbGVmdCB7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci0wIHsKICBib3JkZXI6IDAgIWltcG9ydGFudDsKfQouYm9yZGVyLXRvcC0wIHsKICBib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1yaWdodC0wIHsKICBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDsKfQouYm9yZGVyLWJvdHRvbS0wIHsKICBib3JkZXItYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1sZWZ0LTAgewogIGJvcmRlci1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1wcmltYXJ5IHsKICBib3JkZXItY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsKfQouYm9yZGVyLXNlY29uZGFyeSB7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1zdWNjZXNzIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDsKfQouYm9yZGVyLWluZm8gewogIGJvcmRlci1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItd2FybmluZyB7CiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1kYW5nZXIgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50Owp9Ci5ib3JkZXItbGlnaHQgewogIGJvcmRlci1jb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50Owp9Ci5ib3JkZXItZGFyayB7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci13aGl0ZSB7CiAgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KLnJvdW5kZWQgewogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucm91bmRlZC10b3AgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5yb3VuZGVkLXJpZ2h0IHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KLnJvdW5kZWQtYm90dG9tIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucm91bmRlZC1sZWZ0IHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5yb3VuZGVkLWNpcmNsZSB7CiAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7Cn0KLnJvdW5kZWQtMCB7CiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50Owp9Ci5jbGVhcmZpeDo6YWZ0ZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIGNsZWFyOiBib3RoOwogIGNvbnRlbnQ6ICIiOwp9Ci5kLW5vbmUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQouZC1pbmxpbmUgewogIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50Owp9Ci5kLWlubGluZS1ibG9jayB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cn0KLmQtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KLmQtdGFibGUgewogIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cn0KLmQtdGFibGUtcm93IHsKICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKfQouZC10YWJsZS1jZWxsIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cn0KLmQtZmxleCB7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50Owp9Ci5kLWlubGluZS1mbGV4IHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50Owp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5kLXNtLW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtc20tYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtc20tdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQtc20tdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC1zbS10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQtc20tZmxleCB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWlubGluZS1mbGV4IHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5kLW1kLW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC1tZC10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtZmxleCB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLWlubGluZS1mbGV4IHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5kLWxnLW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC1sZy1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtbGctYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtbGctdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQtbGctdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC1sZy10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQtbGctZmxleCB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWlubGluZS1mbGV4IHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuZC14bC1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQteGwtaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC14bC1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQteGwtdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC14bC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgcHJpbnQgewogIC5kLXByaW50LW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtZmxleCB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LWlubGluZS1mbGV4IHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9Ci5lbWJlZC1yZXNwb25zaXZlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5lbWJlZC1yZXNwb25zaXZlOjpiZWZvcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwp9Ci5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sCi5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwKLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsCi5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwKLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJvcmRlcjogMDsKfQouZW1iZWQtcmVzcG9uc2l2ZS0yMWJ5OTo6YmVmb3JlIHsKICBwYWRkaW5nLXRvcDogNDIuODU3MTQyODYlOwp9Ci5lbWJlZC1yZXNwb25zaXZlLTE2Ynk5OjpiZWZvcmUgewogIHBhZGRpbmctdG9wOiA1Ni4yNSU7Cn0KLmVtYmVkLXJlc3BvbnNpdmUtNGJ5Mzo6YmVmb3JlIHsKICBwYWRkaW5nLXRvcDogNzUlOwp9Ci5lbWJlZC1yZXNwb25zaXZlLTFieTE6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDEwMCU7Cn0KLmZsZXgtcm93IHsKICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7Cn0KLmZsZXgtY29sdW1uIHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KLmZsZXgtcm93LXJldmVyc2UgewogIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50Owp9Ci5mbGV4LWNvbHVtbi1yZXZlcnNlIHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQouZmxleC13cmFwIHsKICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKfQouZmxleC1ub3dyYXAgewogIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cn0KLmZsZXgtd3JhcC1yZXZlcnNlIHsKICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50Owp9Ci5mbGV4LWZpbGwgewogIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cn0KLmZsZXgtZ3Jvdy0wIHsKICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKfQouZmxleC1ncm93LTEgewogIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50Owp9Ci5mbGV4LXNocmluay0wIHsKICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50Owp9Ci5mbGV4LXNocmluay0xIHsKICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50Owp9Ci5qdXN0aWZ5LWNvbnRlbnQtc3RhcnQgewogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50Owp9Ci5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmp1c3RpZnktY29udGVudC1jZW50ZXIgewogIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KLmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQouanVzdGlmeS1jb250ZW50LWFyb3VuZCB7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQouYWxpZ24taXRlbXMtc3RhcnQgewogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLWVuZCB7CiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLWNlbnRlciB7CiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50Owp9Ci5hbGlnbi1pdGVtcy1iYXNlbGluZSB7CiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLXN0cmV0Y2ggewogIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtc3RhcnQgewogIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1lbmQgewogIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtY2VudGVyIHsKICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1iZXR3ZWVuIHsKICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtYXJvdW5kIHsKICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1zdHJldGNoIHsKICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtYXV0byB7CiAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50Owp9Ci5hbGlnbi1zZWxmLXN0YXJ0IHsKICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtZW5kIHsKICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9Ci5hbGlnbi1zZWxmLWNlbnRlciB7CiAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtYmFzZWxpbmUgewogIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtc3RyZXRjaCB7CiAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50Owp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5mbGV4LXNtLXJvdyB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWNvbHVtbiB7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXJvdy1yZXZlcnNlIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1jb2x1bW4tcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20td3JhcCB7CiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tbm93cmFwIHsKICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXdyYXAtcmV2ZXJzZSB7CiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1maWxsIHsKICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWdyb3ctMCB7CiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tZ3Jvdy0xIHsKICAgIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1zaHJpbmstMCB7CiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1zaHJpbmstMSB7CiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLXN0YXJ0IHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLWVuZCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tY2VudGVyIHsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1zbS1hcm91bmQgewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXNtLXN0YXJ0IHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1lbmQgewogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1jZW50ZXIgewogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewogICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1zdHJldGNoIHsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLXN0YXJ0IHsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7CiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLWFyb3VuZCB7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tc3RyZXRjaCB7CiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWF1dG8gewogICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1zbS1zdGFydCB7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWVuZCB7CiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1zbS1jZW50ZXIgewogICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWJhc2VsaW5lIHsKICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLXN0cmV0Y2ggewogICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZmxleC1tZC1yb3cgewogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1jb2x1bW4gewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1yb3ctcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtY29sdW1uLXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLXdyYXAgewogICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLW5vd3JhcCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC13cmFwLXJldmVyc2UgewogICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtZmlsbCB7CiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1ncm93LTAgewogICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLWdyb3ctMSB7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtc2hyaW5rLTAgewogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtc2hyaW5rLTEgewogICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1zdGFydCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1lbmQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW4gewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1tZC1zdGFydCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtZW5kIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtY2VudGVyIHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLWJhc2VsaW5lIHsKICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtc3RyZXRjaCB7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1zdGFydCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWVuZCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1jZW50ZXIgewogICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWJldHdlZW4gewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1hcm91bmQgewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2ggewogICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1hdXRvIHsKICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtc3RhcnQgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1lbmQgewogICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtY2VudGVyIHsKICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1iYXNlbGluZSB7CiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1zdHJldGNoIHsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmZsZXgtbGctcm93IHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctY29sdW1uIHsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctcm93LXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLWNvbHVtbi1yZXZlcnNlIHsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy13cmFwIHsKICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1ub3dyYXAgewogICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctd3JhcC1yZXZlcnNlIHsKICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLWZpbGwgewogICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctZ3Jvdy0wIHsKICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1ncm93LTEgewogICAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLXNocmluay0wIHsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLXNocmluay0xIHsKICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1jZW50ZXIgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVuIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LWxnLWFyb3VuZCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctc3RhcnQgewogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLWVuZCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLWNlbnRlciB7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1sZy1iYXNlbGluZSB7CiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2ggewogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctc3RhcnQgewogICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1lbmQgewogICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctY2VudGVyIHsKICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1iZXR3ZWVuIHsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1zdHJldGNoIHsKICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctYXV0byB7CiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLXN0YXJ0IHsKICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctZW5kIHsKICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLWNlbnRlciB7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewogICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctc3RyZXRjaCB7CiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuZmxleC14bC1yb3cgewogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1jb2x1bW4gewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1yb3ctcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtY29sdW1uLXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLXdyYXAgewogICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLW5vd3JhcCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC13cmFwLXJldmVyc2UgewogICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtZmlsbCB7CiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1ncm93LTAgewogICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLWdyb3ctMSB7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtc2hyaW5rLTAgewogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtc2hyaW5rLTEgewogICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1zdGFydCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1lbmQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLWNlbnRlciB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW4gewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQteGwtYXJvdW5kIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy14bC1zdGFydCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtZW5kIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtY2VudGVyIHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtc3RyZXRjaCB7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1zdGFydCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLWVuZCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1jZW50ZXIgewogICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4gewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1hcm91bmQgewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLXN0cmV0Y2ggewogICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1hdXRvIHsKICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYteGwtc3RhcnQgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1lbmQgewogICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYteGwtY2VudGVyIHsKICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1iYXNlbGluZSB7CiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1zdHJldGNoIHsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9Cn0KLmZsb2F0LWxlZnQgewogIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KLmZsb2F0LXJpZ2h0IHsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQouZmxvYXQtbm9uZSB7CiAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuZmxvYXQtc20tbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtc20tcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1zbS1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5mbG9hdC1tZC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1tZC1yaWdodCB7CiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LW1kLW5vbmUgewogICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmZsb2F0LWxnLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LWxnLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtbGctbm9uZSB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmZsb2F0LXhsLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LXhsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQteGwtbm9uZSB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoucG9zaXRpb24tc3RhdGljIHsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7Cn0KLnBvc2l0aW9uLXJlbGF0aXZlIHsKICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKfQoucG9zaXRpb24tYWJzb2x1dGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50Owp9Ci5wb3NpdGlvbi1maXhlZCB7CiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7Cn0KLnBvc2l0aW9uLXN0aWNreSB7CiAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50Owp9Ci5maXhlZC10b3AgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9Ci5maXhlZC1ib3R0b20gewogIHBvc2l0aW9uOiBmaXhlZDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9CkBzdXBwb3J0cyAocG9zaXRpb246IHN0aWNreSkgewogIC5zdGlja3ktdG9wIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IDA7CiAgICB6LWluZGV4OiAxMDIwOwogIH0KfQouc3Itb25seSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBib3JkZXI6IDA7Cn0KLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwKLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICBwb3NpdGlvbjogc3RhdGljOwogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICBvdmVyZmxvdzogdmlzaWJsZTsKICBjbGlwOiBhdXRvOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KLnNoYWRvdy1zbSB7CiAgYm94LXNoYWRvdzogMCAwLjEyNXJlbSAwLjI1cmVtIHJnYmEoMCwgMCwgMCwgMC4wNzUpICFpbXBvcnRhbnQ7Cn0KLnNoYWRvdyB7CiAgYm94LXNoYWRvdzogMCAwLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIDAuMTUpICFpbXBvcnRhbnQ7Cn0KLnNoYWRvdy1sZyB7CiAgYm94LXNoYWRvdzogMCAxcmVtIDNyZW0gcmdiYSgwLCAwLCAwLCAwLjE3NSkgIWltcG9ydGFudDsKfQouc2hhZG93LW5vbmUgewogIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoudy0yNSB7CiAgd2lkdGg6IDI1JSAhaW1wb3J0YW50Owp9Ci53LTUwIHsKICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7Cn0KLnctNzUgewogIHdpZHRoOiA3NSUgIWltcG9ydGFudDsKfQoudy0xMDAgewogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KLnctYXV0byB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQouaC0yNSB7CiAgaGVpZ2h0OiAyNSUgIWltcG9ydGFudDsKfQouaC01MCB7CiAgaGVpZ2h0OiA1MCUgIWltcG9ydGFudDsKfQouaC03NSB7CiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQouaC0xMDAgewogIGhlaWdodDogMTAwJSAhaW1wb3J0YW50Owp9Ci5oLWF1dG8gewogIGhlaWdodDogYXV0byAhaW1wb3J0YW50Owp9Ci5tdy0xMDAgewogIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5taC0xMDAgewogIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoubS0wIHsKICBtYXJnaW46IDAgIWltcG9ydGFudDsKfQoubXQtMCwKLm15LTAgewogIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoubXItMCwKLm14LTAgewogIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50Owp9Ci5tYi0wLAoubXktMCB7CiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9Ci5tbC0wLAoubXgtMCB7CiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKfQoubS0xIHsKICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubXQtMSwKLm15LTEgewogIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubXItMSwKLm14LTEgewogIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5tYi0xLAoubXktMSB7CiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5tbC0xLAoubXgtMSB7CiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubS0yIHsKICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5tdC0yLAoubXktMiB7CiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm1yLTIsCi5teC0yIHsKICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5tYi0yLAoubXktMiB7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm1sLTIsCi5teC0yIHsKICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm0tMyB7CiAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm10LTMsCi5teS0zIHsKICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm1yLTMsCi5teC0zIHsKICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoubWItMywKLm15LTMgewogIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoubWwtMywKLm14LTMgewogIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm0tNCB7CiAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKfQoubXQtNCwKLm15LTQgewogIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tci00LAoubXgtNCB7CiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoubWItNCwKLm15LTQgewogIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tbC00LAoubXgtNCB7CiAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tLTUgewogIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9Ci5tdC01LAoubXktNSB7CiAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9Ci5tci01LAoubXgtNSB7CiAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm1iLTUsCi5teS01IHsKICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm1sLTUsCi5teC01IHsKICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9Ci5wLTAgewogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoucHQtMCwKLnB5LTAgewogIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KLnByLTAsCi5weC0wIHsKICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KLnBiLTAsCi5weS0wIHsKICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9Ci5wbC0wLAoucHgtMCB7CiAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KLnAtMSB7CiAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5wdC0xLAoucHktMSB7CiAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucHItMSwKLnB4LTEgewogIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucGItMSwKLnB5LTEgewogIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KLnBsLTEsCi5weC0xIHsKICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucC0yIHsKICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKfQoucHQtMiwKLnB5LTIgewogIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKfQoucHItMiwKLnB4LTIgewogIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5wYi0yLAoucHktMiB7CiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5wbC0yLAoucHgtMiB7CiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKfQoucC0zIHsKICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLnB0LTMsCi5weS0zIHsKICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wci0zLAoucHgtMyB7CiAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wYi0zLAoucHktMyB7CiAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoucGwtMywKLnB4LTMgewogIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wLTQgewogIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wdC00LAoucHktNCB7CiAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wci00LAoucHgtNCB7CiAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KLnBiLTQsCi5weS00IHsKICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cn0KLnBsLTQsCi5weC00IHsKICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wLTUgewogIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKfQoucHQtNSwKLnB5LTUgewogIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cn0KLnByLTUsCi5weC01IHsKICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLnBiLTUsCi5weS01IHsKICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50Owp9Ci5wbC01LAoucHgtNSB7CiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm0tYXV0byB7CiAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7Cn0KLm10LWF1dG8sCi5teS1hdXRvIHsKICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cn0KLm1yLWF1dG8sCi5teC1hdXRvIHsKICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoubWItYXV0bywKLm15LWF1dG8gewogIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKfQoubWwtYXV0bywKLm14LWF1dG8gewogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLm0tc20tMCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTAsCiAgLm15LXNtLTAgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAubXItc20tMCwKICAubXgtc20tMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTAsCiAgLm15LXNtLTAgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAubWwtc20tMCwKICAubXgtc20tMCB7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAubS1zbS0xIHsKICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtc20tMSwKICAubXktc20tMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS0xLAogIC5teC1zbS0xIHsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMSwKICAubXktc20tMSB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS0xLAogIC5teC1zbS0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTIsCiAgLm15LXNtLTIgewogICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS0yLAogIC5teC1zbS0yIHsKICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS0yLAogIC5teS1zbS0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tMiwKICAubXgtc20tMiB7CiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTMgewogICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS0zLAogIC5teS1zbS0zIHsKICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTMsCiAgLm14LXNtLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS0zLAogIC5teS1zbS0zIHsKICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTMsCiAgLm14LXNtLTMgewogICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tc20tNCB7CiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtc20tNCwKICAubXktc20tNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTQsCiAgLm14LXNtLTQgewogICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTQsCiAgLm15LXNtLTQgewogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS00LAogIC5teC1zbS00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tc20tNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTUsCiAgLm15LXNtLTUgewogICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tNSwKICAubXgtc20tNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTUsCiAgLm15LXNtLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tNSwKICAubXgtc20tNSB7CiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS0wIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICB9CiAgLnB0LXNtLTAsCiAgLnB5LXNtLTAgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLnByLXNtLTAsCiAgLnB4LXNtLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGItc20tMCwKICAucHktc20tMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAucGwtc20tMCwKICAucHgtc20tMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnAtc20tMSB7CiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS0xLAogIC5weS1zbS0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS0xLAogIC5weC1zbS0xIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXNtLTEsCiAgLnB5LXNtLTEgewogICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTEsCiAgLnB4LXNtLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS0yLAogIC5weS1zbS0yIHsKICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXNtLTIsCiAgLnB4LXNtLTIgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS0yLAogIC5weS1zbS0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTIsCiAgLnB4LXNtLTIgewogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtc20tMyB7CiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS0zLAogIC5weS1zbS0zIHsKICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS0zLAogIC5weC1zbS0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXNtLTMsCiAgLnB5LXNtLTMgewogICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTMsCiAgLnB4LXNtLTMgewogICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTQgewogICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS00LAogIC5weS1zbS00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXNtLTQsCiAgLnB4LXNtLTQgewogICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS00LAogIC5weS1zbS00IHsKICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTQsCiAgLnB4LXNtLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtc20tNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS01LAogIC5weS1zbS01IHsKICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS01LAogIC5weC1zbS01IHsKICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXNtLTUsCiAgLnB5LXNtLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTUsCiAgLnB4LXNtLTUgewogICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLWF1dG8gewogICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS1hdXRvLAogIC5teS1zbS1hdXRvIHsKICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLWF1dG8sCiAgLm14LXNtLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS1hdXRvLAogIC5teS1zbS1hdXRvIHsKICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLWF1dG8sCiAgLm14LXNtLWF1dG8gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm0tbWQtMCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTAsCiAgLm15LW1kLTAgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAubXItbWQtMCwKICAubXgtbWQtMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTAsCiAgLm15LW1kLTAgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtMCwKICAubXgtbWQtMCB7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAubS1tZC0xIHsKICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtMSwKICAubXktbWQtMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC0xLAogIC5teC1tZC0xIHsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbWQtMSwKICAubXktbWQtMSB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC0xLAogIC5teC1tZC0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTIsCiAgLm15LW1kLTIgewogICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC0yLAogIC5teC1tZC0yIHsKICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC0yLAogIC5teS1tZC0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtMiwKICAubXgtbWQtMiB7CiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLTMgewogICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC0zLAogIC5teS1tZC0zIHsKICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTMsCiAgLm14LW1kLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC0zLAogIC5teS1tZC0zIHsKICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTMsCiAgLm14LW1kLTMgewogICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtNCB7CiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtNCwKICAubXktbWQtNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTQsCiAgLm14LW1kLTQgewogICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTQsCiAgLm15LW1kLTQgewogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC00LAogIC5teC1tZC00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTUsCiAgLm15LW1kLTUgewogICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtNSwKICAubXgtbWQtNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTUsCiAgLm15LW1kLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtNSwKICAubXgtbWQtNSB7CiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucC1tZC0wIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTAsCiAgLnB5LW1kLTAgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTAsCiAgLnB4LW1kLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGItbWQtMCwKICAucHktbWQtMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMCwKICAucHgtbWQtMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnAtbWQtMSB7CiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC0xLAogIC5weS1tZC0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1tZC0xLAogIC5weC1tZC0xIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTEsCiAgLnB5LW1kLTEgewogICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTEsCiAgLnB4LW1kLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLW1kLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC0yLAogIC5weS1tZC0yIHsKICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTIsCiAgLnB4LW1kLTIgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1tZC0yLAogIC5weS1tZC0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTIsCiAgLnB4LW1kLTIgewogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtMyB7CiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC0zLAogIC5weS1tZC0zIHsKICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1tZC0zLAogIC5weC1tZC0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTMsCiAgLnB5LW1kLTMgewogICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTMsCiAgLnB4LW1kLTMgewogICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLW1kLTQgewogICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC00LAogIC5weS1tZC00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTQsCiAgLnB4LW1kLTQgewogICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1tZC00LAogIC5weS1tZC00IHsKICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTQsCiAgLnB4LW1kLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC01LAogIC5weS1tZC01IHsKICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1tZC01LAogIC5weC1tZC01IHsKICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTUsCiAgLnB5LW1kLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTUsCiAgLnB4LW1kLTUgewogICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLWF1dG8gewogICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC1hdXRvLAogIC5teS1tZC1hdXRvIHsKICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLWF1dG8sCiAgLm14LW1kLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC1hdXRvLAogIC5teS1tZC1hdXRvIHsKICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLWF1dG8sCiAgLm14LW1kLWF1dG8gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLm0tbGctMCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTAsCiAgLm15LWxnLTAgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAubXItbGctMCwKICAubXgtbGctMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTAsCiAgLm15LWxnLTAgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAubWwtbGctMCwKICAubXgtbGctMCB7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAubS1sZy0xIHsKICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctMSwKICAubXktbGctMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy0xLAogIC5teC1sZy0xIHsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbGctMSwKICAubXktbGctMSB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy0xLAogIC5teC1sZy0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTIsCiAgLm15LWxnLTIgewogICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy0yLAogIC5teC1sZy0yIHsKICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0yLAogIC5teS1sZy0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbGctMiwKICAubXgtbGctMiB7CiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLTMgewogICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy0zLAogIC5teS1sZy0zIHsKICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTMsCiAgLm14LWxnLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0zLAogIC5teS1sZy0zIHsKICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLTMsCiAgLm14LWxnLTMgewogICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctNCB7CiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctNCwKICAubXktbGctNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTQsCiAgLm14LWxnLTQgewogICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTQsCiAgLm15LWxnLTQgewogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy00LAogIC5teC1sZy00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTUsCiAgLm15LWxnLTUgewogICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXItbGctNSwKICAubXgtbGctNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTUsCiAgLm15LWxnLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbGctNSwKICAubXgtbGctNSB7CiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucC1sZy0wIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICB9CiAgLnB0LWxnLTAsCiAgLnB5LWxnLTAgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTAsCiAgLnB4LWxnLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGItbGctMCwKICAucHktbGctMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAucGwtbGctMCwKICAucHgtbGctMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnAtbGctMSB7CiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0xLAogIC5weS1sZy0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy0xLAogIC5weC1sZy0xIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTEsCiAgLnB5LWxnLTEgewogICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTEsCiAgLnB4LWxnLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0yLAogIC5weS1sZy0yIHsKICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTIsCiAgLnB4LWxnLTIgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy0yLAogIC5weS1sZy0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTIsCiAgLnB4LWxnLTIgewogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbGctMyB7CiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0zLAogIC5weS1sZy0zIHsKICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy0zLAogIC5weC1sZy0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTMsCiAgLnB5LWxnLTMgewogICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTMsCiAgLnB4LWxnLTMgewogICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTQgewogICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy00LAogIC5weS1sZy00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTQsCiAgLnB4LWxnLTQgewogICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy00LAogIC5weS1sZy00IHsKICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTQsCiAgLnB4LWxnLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbGctNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy01LAogIC5weS1sZy01IHsKICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy01LAogIC5weC1sZy01IHsKICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTUsCiAgLnB5LWxnLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTUsCiAgLnB4LWxnLTUgewogICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLWF1dG8gewogICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy1hdXRvLAogIC5teS1sZy1hdXRvIHsKICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLWF1dG8sCiAgLm14LWxnLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy1hdXRvLAogIC5teS1sZy1hdXRvIHsKICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLWF1dG8sCiAgLm14LWxnLWF1dG8gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5tLXhsLTAgewogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC0wLAogIC5teS14bC0wIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTAsCiAgLm14LXhsLTAgewogICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC0wLAogIC5teS14bC0wIHsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTAsCiAgLm14LXhsLTAgewogICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm0teGwtMSB7CiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLTEsCiAgLm15LXhsLTEgewogICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtMSwKICAubXgteGwtMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTEsCiAgLm15LXhsLTEgewogICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwteGwtMSwKICAubXgteGwtMSB7CiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC0yIHsKICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC0yLAogIC5teS14bC0yIHsKICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtMiwKICAubXgteGwtMiB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWIteGwtMiwKICAubXkteGwtMiB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTIsCiAgLm14LXhsLTIgewogICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC0zIHsKICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQteGwtMywKICAubXkteGwtMyB7CiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC0zLAogIC5teC14bC0zIHsKICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWIteGwtMywKICAubXkteGwtMyB7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC0zLAogIC5teC14bC0zIHsKICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXhsLTQgewogICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLTQsCiAgLm15LXhsLTQgewogICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC00LAogIC5teC14bC00IHsKICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC00LAogIC5teS14bC00IHsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwteGwtNCwKICAubXgteGwtNCB7CiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXhsLTUgewogICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC01LAogIC5teS14bC01IHsKICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTUsCiAgLm14LXhsLTUgewogICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC01LAogIC5teS14bC01IHsKICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTUsCiAgLm14LXhsLTUgewogICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtMCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wdC14bC0wLAogIC5weS14bC0wIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wci14bC0wLAogIC5weC14bC0wIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTAsCiAgLnB5LXhsLTAgewogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLnBsLXhsLTAsCiAgLnB4LXhsLTAgewogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTEgewogICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQteGwtMSwKICAucHkteGwtMSB7CiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtMSwKICAucHgteGwtMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi14bC0xLAogIC5weS14bC0xIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC0xLAogIC5weC14bC0xIHsKICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC14bC0yIHsKICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQteGwtMiwKICAucHkteGwtMiB7CiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci14bC0yLAogIC5weC14bC0yIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtMiwKICAucHkteGwtMiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC0yLAogIC5weC14bC0yIHsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTMgewogICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQteGwtMywKICAucHkteGwtMyB7CiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtMywKICAucHgteGwtMyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi14bC0zLAogIC5weS14bC0zIHsKICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC0zLAogIC5weC14bC0zIHsKICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucC14bC00IHsKICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQteGwtNCwKICAucHkteGwtNCB7CiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci14bC00LAogIC5weC14bC00IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtNCwKICAucHkteGwtNCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC00LAogIC5weC14bC00IHsKICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTUgewogICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHQteGwtNSwKICAucHkteGwtNSB7CiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtNSwKICAucHgteGwtNSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi14bC01LAogIC5weS14bC01IHsKICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC01LAogIC5weC14bC01IHsKICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC1hdXRvIHsKICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXQteGwtYXV0bywKICAubXkteGwtYXV0byB7CiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC1hdXRvLAogIC5teC14bC1hdXRvIHsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWIteGwtYXV0bywKICAubXkteGwtYXV0byB7CiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC1hdXRvLAogIC5teC14bC1hdXRvIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQp9Ci50ZXh0LW1vbm9zcGFjZSB7CiAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkxpYmVyYXRpb24gTW9ubyIsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKfQoudGV4dC1qdXN0aWZ5IHsKICB0ZXh0LWFsaWduOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7Cn0KLnRleHQtbm93cmFwIHsKICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7Cn0KLnRleHQtdHJ1bmNhdGUgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoudGV4dC1sZWZ0IHsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KLnRleHQtcmlnaHQgewogIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KLnRleHQtY2VudGVyIHsKICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAudGV4dC1zbS1sZWZ0IHsKICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtc20tcmlnaHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtc20tY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAudGV4dC1tZC1sZWZ0IHsKICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtbWQtcmlnaHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtbWQtY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAudGV4dC1sZy1sZWZ0IHsKICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtbGctcmlnaHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtbGctY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLnRleHQteGwtbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXhsLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXhsLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KLnRleHQtbG93ZXJjYXNlIHsKICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7Cn0KLnRleHQtdXBwZXJjYXNlIHsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7Cn0KLnRleHQtY2FwaXRhbGl6ZSB7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudDsKfQouZm9udC13ZWlnaHQtbGlnaHQgewogIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDsKfQouZm9udC13ZWlnaHQtbm9ybWFsIHsKICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7Cn0KLmZvbnQtd2VpZ2h0LWJvbGQgewogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsKfQouZm9udC1pdGFsaWMgewogIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50Owp9Ci50ZXh0LXdoaXRlIHsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Ci50ZXh0LXByaW1hcnkgewogIGNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LXByaW1hcnk6aG92ZXIsCmEudGV4dC1wcmltYXJ5OmZvY3VzIHsKICBjb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9Ci50ZXh0LXNlY29uZGFyeSB7CiAgY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQphLnRleHQtc2Vjb25kYXJ5OmhvdmVyLAphLnRleHQtc2Vjb25kYXJ5OmZvY3VzIHsKICBjb2xvcjogIzU0NWI2MiAhaW1wb3J0YW50Owp9Ci50ZXh0LXN1Y2Nlc3MgewogIGNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LXN1Y2Nlc3M6aG92ZXIsCmEudGV4dC1zdWNjZXNzOmZvY3VzIHsKICBjb2xvcjogIzFlN2UzNCAhaW1wb3J0YW50Owp9Ci50ZXh0LWluZm8gewogIGNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LWluZm86aG92ZXIsCmEudGV4dC1pbmZvOmZvY3VzIHsKICBjb2xvcjogIzExN2E4YiAhaW1wb3J0YW50Owp9Ci50ZXh0LXdhcm5pbmcgewogIGNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LXdhcm5pbmc6aG92ZXIsCmEudGV4dC13YXJuaW5nOmZvY3VzIHsKICBjb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50Owp9Ci50ZXh0LWRhbmdlciB7CiAgY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsKfQphLnRleHQtZGFuZ2VyOmhvdmVyLAphLnRleHQtZGFuZ2VyOmZvY3VzIHsKICBjb2xvcjogI2JkMjEzMCAhaW1wb3J0YW50Owp9Ci50ZXh0LWxpZ2h0IHsKICBjb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50Owp9CmEudGV4dC1saWdodDpob3ZlciwKYS50ZXh0LWxpZ2h0OmZvY3VzIHsKICBjb2xvcjogI2RhZTBlNSAhaW1wb3J0YW50Owp9Ci50ZXh0LWRhcmsgewogIGNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LWRhcms6aG92ZXIsCmEudGV4dC1kYXJrOmZvY3VzIHsKICBjb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50Owp9Ci50ZXh0LWJvZHkgewogIGNvbG9yOiAjMjEyNTI5ICFpbXBvcnRhbnQ7Cn0KLnRleHQtbXV0ZWQgewogIGNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7Cn0KLnRleHQtYmxhY2stNTAgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSkgIWltcG9ydGFudDsKfQoudGV4dC13aGl0ZS01MCB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAhaW1wb3J0YW50Owp9Ci50ZXh0LWhpZGUgewogIGZvbnQ6IDAvMCBhOwogIGNvbG9yOiB0cmFuc3BhcmVudDsKICB0ZXh0LXNoYWRvdzogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDA7Cn0KLnZpc2libGUgewogIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKfQouaW52aXNpYmxlIHsKICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQpAbWVkaWEgcHJpbnQgewogICosCiAgKjo6YmVmb3JlLAogICo6OmFmdGVyIHsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIGE6bm90KC5idG4pIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KICBhYmJyW3RpdGxlXTo6YWZ0ZXIgewogICAgY29udGVudDogIiAoIiBhdHRyKHRpdGxlKSAiKSI7CiAgfQogIHByZSB7CiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsKICB9CiAgcHJlLAogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyOiAxcHggc29saWQgI2FkYjViZDsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CiAgdGhlYWQgewogICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogIH0KICB0ciwKICBpbWcgewogICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwogIH0KICBwLAogIGgyLAogIGgzIHsKICAgIG9ycGhhbnM6IDM7CiAgICB3aWRvd3M6IDM7CiAgfQogIGgyLAogIGgzIHsKICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOwogIH0KICBAcGFnZSB7CiAgICBzaXplOiBhMzsKICB9CiAgYm9keSB7CiAgICBtaW4td2lkdGg6IDk5MnB4ICFpbXBvcnRhbnQ7CiAgfQogIC5jb250YWluZXIgewogICAgbWluLXdpZHRoOiA5OTJweCAhaW1wb3J0YW50OwogIH0KICAubmF2YmFyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQogIC5iYWRnZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogIH0KICAudGFibGUgewogICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OwogIH0KICAudGFibGUgdGQsCiAgLnRhYmxlIHRoIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWJvcmRlcmVkIHRoLAogIC50YWJsZS1ib3JkZXJlZCB0ZCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7CiAgfQogIC50YWJsZS1kYXJrIHsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KICAudGFibGUtZGFyayB0aCwKICAudGFibGUtZGFyayB0ZCwKICAudGFibGUtZGFyayB0aGVhZCB0aCwKICAudGFibGUtZGFyayB0Ym9keSArIHRib2R5IHsKICAgIGJvcmRlci1jb2xvcjogI2RlZTJlNjsKICB9CiAgLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2OwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/3rd-party/uikit.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogQmFzZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gTm9ybWFsaXplIGRlZmF1bHQgYGZvbnQtZmFtaWx5YCBhbmQgc2V0IGBmb250LXNpemVgIHRvIHN1cHBvcnQgYHJlbWAgdW5pdHMKICogMi4gUHJldmVudHMgaU9TIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlLCB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20KICogMy4gU3R5bGUKICovCmh0bWwgewogIC8qIDEgKi8KICBmb250OiBub3JtYWwgMTRweCAvIDIwcHggIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAvKiAyICovCiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC8qIDMgKi8KICBiYWNrZ3JvdW5kOiAjZmZmOwogIGNvbG9yOiAjNDQ0Owp9Ci8qCiAqIFJlbW92ZXMgZGVmYXVsdCBtYXJnaW4uCiAqLwpib2R5IHsKICBtYXJnaW46IDA7Cn0KLyogTGlua3MKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gYWN0aXZlIGxpbmtzIGluIElFIDEwLgogKi8KYSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cn0KLyoKICogSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBmb2N1c2VkIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgYWxzbyBpbiBhbiBhY3RpdmUvaG92ZXIgc3RhdGUuCiAqLwphOmFjdGl2ZSwKYTpob3ZlciB7CiAgb3V0bGluZTogMDsKfQovKgogKiBTdHlsZQogKi8KYSwKLnVrLWxpbmsgewogIGNvbG9yOiAjMDdEOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KYTpob3ZlciwKLnVrLWxpbms6aG92ZXIgewogIGNvbG9yOiAjMDU5OwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9Ci8qIFRleHQtbGV2ZWwgc2VtYW50aWNzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLzExLCBTYWZhcmksIGFuZCBDaHJvbWUuCiAqLwphYmJyW3RpdGxlXSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDsKfQovKgogKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuCiAqLwpiLApzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci8qCiAqIDEuIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy4KICogMi4gQ29uc29sYXMgaGFzIGEgYmV0dGVyIGJhc2VsaW5lIGluIHJ1bm5pbmcgdGV4dCBjb21wYXJlZCB0byBgQ291cmllcmAKICovCjpub3QocHJlKSA+IGNvZGUsCjpub3QocHJlKSA+IGtiZCwKOm5vdChwcmUpID4gc2FtcCB7CiAgLyogMSAqLwogIGZvbnQtc2l6ZTogMTJweDsKICAvKiAyICovCiAgZm9udC1mYW1pbHk6IENvbnNvbGFzLCBtb25vc3BhY2UsIHNlcmlmOwogIC8qIDMgKi8KICBjb2xvcjogI0QwNTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci8qCiAqIEVtcGhhc2l6ZQogKi8KZW0gewogIGNvbG9yOiAjRDA1Owp9Ci8qCiAqIEluc2VydAogKi8KaW5zIHsKICBiYWNrZ3JvdW5kOiAjZmZhOwogIGNvbG9yOiAjNDQ0OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQovKgogKiBNYXJrCiAqIE5vdGU6IEFkZHJlc3NlcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS4KICovCm1hcmsgewogIGJhY2tncm91bmQ6ICNmZmE7CiAgY29sb3I6ICM0NDQ7Cn0KLyoKICogUXVvdGUKICovCnEgewogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQovKgogKiBBZGRyZXNzZXMgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLgogKi8Kc21hbGwgewogIGZvbnQtc2l6ZTogODAlOwp9Ci8qCiAqIFByZXZlbnRzIGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuCiAqLwpzdWIsCnN1cCB7CiAgZm9udC1zaXplOiA3NSU7CiAgbGluZS1oZWlnaHQ6IDA7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQpzdXAgewogIHRvcDogLTAuNWVtOwp9CnN1YiB7CiAgYm90dG9tOiAtMC4yNWVtOwp9Ci8qIEVtYmVkZGVkIGNvbnRlbnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIFJlbW92ZSB0aGUgZ2FwIGJldHdlZW4gZW1iZWRkZWQgY29udGVudCBhbmQgdGhlIGJvdHRvbSBvZiB0aGVpciBjb250YWluZXJzLgogKi8KYXVkaW8sCmNhbnZhcywKaWZyYW1lLAppbWcsCnN2ZywKdmlkZW8gewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLyoKICogUmVzcG9uc2l2ZW5lc3MKICogMS4gU2V0cyBhIG1heGltdW0gd2lkdGggcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBhbmQgYXV0byBzY2FsZXMgdGhlIGhlaWdodAogKiAyLiBDb3JyZWN0cyBgbWF4LXdpZHRoYCBiZWhhdmlvciBpZiBwYWRkaW5nIGFuZCBib3JkZXIgYXJlIHVzZWQKICovCmF1ZGlvLApjYW52YXMsCmltZywKc3ZnLAp2aWRlbyB7CiAgLyogMSAqLwogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87CiAgLyogMiAqLwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLyoKICogUHJlc2VydmUgb3JpZ2luYWwgZGltZW5zaW9ucwogKi8KLnVrLWltZy1wcmVzZXJ2ZSwKLnVrLWltZy1wcmVzZXJ2ZSBhdWRpbywKLnVrLWltZy1wcmVzZXJ2ZSBjYW52YXMsCi51ay1pbWctcHJlc2VydmUgaW1nLAoudWstaW1nLXByZXNlcnZlIHN2ZywKLnVrLWltZy1wcmVzZXJ2ZSB2aWRlbyB7CiAgbWF4LXdpZHRoOiBub25lOwp9Ci8qCiAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLgogKi8KaW1nIHsKICBib3JkZXI6IDA7Cn0KLyoKICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuCiAqLwpzdmc6bm90KDpyb290KSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQovKiBCbG9jayBlbGVtZW50cwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogUmVzZXQgbWFyZ2luCiAqLwpibG9ja3F1b3RlLApmaWd1cmUgewogIG1hcmdpbjogMDsKfQovKgogKiBNYXJnaW5zCiAqLwpwLAp1bCwKb2wsCmRsLApibG9ja3F1b3RlLApwcmUsCmFkZHJlc3MsCmZpZWxkc2V0LApmaWd1cmUgewogIG1hcmdpbjogMCAwIDE1cHggMDsKfQoqICsgcCwKKiArIHVsLAoqICsgb2wsCiogKyBkbCwKKiArIGJsb2NrcXVvdGUsCiogKyBwcmUsCiogKyBhZGRyZXNzLAoqICsgZmllbGRzZXQsCiogKyBmaWd1cmUgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLyogSGVhZGluZ3MKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmgxLApoMiwKaDMsCmg0LApoNSwKaDYgewogIG1hcmdpbjogMCAwIDE1cHggMDsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGNvbG9yOiAjNDQ0OwogIHRleHQtdHJhbnNmb3JtOiBub25lOwp9Ci8qCiAqIE1hcmdpbnMKICovCiogKyBoMSwKKiArIGgyLAoqICsgaDMsCiogKyBoNCwKKiArIGg1LAoqICsgaDYgewogIG1hcmdpbi10b3A6IDI1cHg7Cn0KLyoKICogU2l6ZXMKICovCmgxLAoudWstaDEgewogIGZvbnQtc2l6ZTogMzZweDsKICBsaW5lLWhlaWdodDogNDJweDsKfQpoMiwKLnVrLWgyIHsKICBmb250LXNpemU6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KaDMsCi51ay1oMyB7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4Owp9Cmg0LAoudWstaDQgewogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjJweDsKfQpoNSwKLnVrLWg1IHsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDIwcHg7Cn0KaDYsCi51ay1oNiB7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxOHB4Owp9Ci8qIExpc3RzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwp1bCwKb2wgewogIHBhZGRpbmctbGVmdDogMzBweDsKfQovKgogKiBSZXNldCBtYXJnaW4gZm9yIG5lc3RlZCBsaXN0cwogKi8KdWwgPiBsaSA+IHVsLAp1bCA+IGxpID4gb2wsCm9sID4gbGkgPiBvbCwKb2wgPiBsaSA+IHVsIHsKICBtYXJnaW46IDA7Cn0KLyogRGVzY3JpcHRpb24gbGlzdHMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmR0IHsKICBmb250LXdlaWdodDogYm9sZDsKfQpkZCB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLyogSG9yaXpvbnRhbCBydWxlcwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLgogKiAyLiBTdHlsZQogKi8KaHIgewogIC8qIDEgKi8KICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICBoZWlnaHQ6IDA7CiAgLyogMiAqLwogIG1hcmdpbjogMTVweCAwOwogIGJvcmRlcjogMDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKfQovKiBBZGRyZXNzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwphZGRyZXNzIHsKICBmb250LXN0eWxlOiBub3JtYWw7Cn0KLyogQmxvY2txdW90ZXMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCmJsb2NrcXVvdGUgewogIHBhZGRpbmctbGVmdDogMTVweDsKICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNkZGQ7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQovKiBQcmVmb3JtYXR0ZWQgdGV4dAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuCiAqLwpwcmUgewogIHBhZGRpbmc6IDEwcHg7CiAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICBmb250OiAxMnB4IC8gMThweCBDb25zb2xhcywgbW9ub3NwYWNlLCBzZXJpZjsKICBjb2xvcjogIzQ0NDsKICAtbW96LXRhYi1zaXplOiA0OwogIHRhYi1zaXplOiA0OwogIC8qIDEgKi8KICBvdmVyZmxvdzogYXV0bzsKfQovKiBTZWxlY3Rpb24gcHNldWRvLWVsZW1lbnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCjo6LW1vei1zZWxlY3Rpb24gewogIGJhY2tncm91bmQ6ICMzOWY7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1zaGFkb3c6IG5vbmU7Cn0KOjpzZWxlY3Rpb24gewogIGJhY2tncm91bmQ6ICMzOWY7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1zaGFkb3c6IG5vbmU7Cn0KLyogSFRNTDUgZWxlbWVudHMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuCiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExIGFuZCBGaXJlZm94LgogKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLgogKi8KYXJ0aWNsZSwKYXNpZGUsCmRldGFpbHMsCmZpZ2NhcHRpb24sCmZpZ3VyZSwKZm9vdGVyLApoZWFkZXIsCm1haW4sCm5hdiwKc2VjdGlvbiwKc3VtbWFyeSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLyoKICogTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLgogKi8KcHJvZ3Jlc3MgewogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQovKgogKiBQcmV2ZW50IGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzIGluIENocm9tZSwgU2FmYXJpIGFuZCBPcGVyYQogKi8KYXVkaW86bm90KFtjb250cm9sc10pIHsKICBkaXNwbGF5OiBub25lOwp9Ci8qCiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC4KICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLgogKi8KW2hpZGRlbl0sCnRlbXBsYXRlIHsKICBkaXNwbGF5OiBub25lOwp9Ci8qIElmcmFtZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KaWZyYW1lIHsKICBib3JkZXI6IDA7Cn0KLyogRml4IHZpZXdwb3J0IGZvciBJRTEwIHNuYXAgbW9kZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDAwcHgpIHsKICBALW1zLXZpZXdwb3J0IHsKICAgIHdpZHRoOiBkZXZpY2Utd2lkdGg7CiAgfQp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IEdyaWQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIDEuIE1ha2VzIGdyaWQgbW9yZSByb2J1c3Qgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aXRoIG90aGVyIGJsb2NrIGVsZW1lbnRzIGxpa2UgbGlzdHMKICovCi51ay1ncmlkIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICAvKiAxICovCiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQovKgogKiBERVBSRUNBVEVECiAqIE1pY3JvIGNsZWFyZml4CiAqIENhbid0IHVzZSBgdGFibGVgIGJlY2F1c2UgaXQgY3JlYXRlcyBhIDFweCBnYXAgd2hlbiBpdCBiZWNvbWVzIGEgZmxleCBpdGVtLCBvbmx5IGluIFdlYmtpdAogKi8KLnVrLWdyaWQ6YmVmb3JlLAoudWstZ3JpZDphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudWstZ3JpZDphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLyoKICogR3JpZCBjZWxsCiAqIDEuIFNwYWNlIGlzIGFsbG9jYXRlZCBzb2xlbHkgYmFzZWQgb24gY29udGVudCBkaW1lbnNpb25zCiAqIDIuIE1ha2VzIGdyaWQgbW9yZSByb2J1c3Qgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aXRoIG90aGVyIGJsb2NrIGVsZW1lbnRzCiAqIDMuIERFUFJFQ0FURUQgVXNpbmcgYGZsb2F0YCB0byBzdXBwb3J0IElFOQogKi8KLnVrLWdyaWQgPiAqIHsKICAvKiAxICovCiAgLW1zLWZsZXg6IG5vbmU7CiAgLXdlYmtpdC1mbGV4OiBub25lOwogIGZsZXg6IG5vbmU7CiAgLyogMiAqLwogIG1hcmdpbjogMDsKICAvKiAzICovCiAgZmxvYXQ6IGxlZnQ7Cn0KLyoKICogUmVtb3ZlIG1hcmdpbiBmcm9tIHRoZSBsYXN0LWNoaWxkCiAqLwoudWstZ3JpZCA+ICogPiA6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQovKiBHcmlkIGd1dHRlcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogRGVmYXVsdCBndXR0ZXIKICovCi8qIEhvcml6b250YWwgKi8KLnVrLWdyaWQgewogIG1hcmdpbi1sZWZ0OiAtMjVweDsKfQoudWstZ3JpZCA+ICogewogIHBhZGRpbmctbGVmdDogMjVweDsKfQovKiBWZXJ0aWNhbCAqLwoudWstZ3JpZCArIC51ay1ncmlkLAoudWstZ3JpZC1tYXJnaW4sCi51ay1ncmlkID4gKiA+IC51ay1wYW5lbCArIC51ay1wYW5lbCB7CiAgbWFyZ2luLXRvcDogMjVweDsKfQovKiBMYXJnZSBzY3JlZW4gYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogMTIyMHB4KSB7CiAgLyogSG9yaXpvbnRhbCAqLwogIC51ay1ncmlkIHsKICAgIG1hcmdpbi1sZWZ0OiAtMzVweDsKICB9CiAgLnVrLWdyaWQgPiAqIHsKICAgIHBhZGRpbmctbGVmdDogMzVweDsKICB9CiAgLyogVmVydGljYWwgKi8KICAudWstZ3JpZCArIC51ay1ncmlkLAogIC51ay1ncmlkLW1hcmdpbiwKICAudWstZ3JpZCA+ICogPiAudWstcGFuZWwgKyAudWstcGFuZWwgewogICAgbWFyZ2luLXRvcDogMzVweDsKICB9Cn0KLyoKICogQ29sbGFwc2UgZ3V0dGVyCiAqLwovKiBIb3Jpem9udGFsICovCi51ay1ncmlkLWNvbGxhcHNlIHsKICBtYXJnaW4tbGVmdDogMDsKfQoudWstZ3JpZC1jb2xsYXBzZSA+ICogewogIHBhZGRpbmctbGVmdDogMDsKfQovKiBWZXJ0aWNhbCAqLwoudWstZ3JpZC1jb2xsYXBzZSArIC51ay1ncmlkLWNvbGxhcHNlLAoudWstZ3JpZC1jb2xsYXBzZSA+IC51ay1ncmlkLW1hcmdpbiwKLnVrLWdyaWQtY29sbGFwc2UgPiAqID4gLnVrLXBhbmVsICsgLnVrLXBhbmVsIHsKICBtYXJnaW4tdG9wOiAwOwp9Ci8qCiAqIFNtYWxsIGd1dHRlcgogKi8KLyogSG9yaXpvbnRhbCAqLwoudWstZ3JpZC1zbWFsbCB7CiAgbWFyZ2luLWxlZnQ6IC0xMHB4Owp9Ci51ay1ncmlkLXNtYWxsID4gKiB7CiAgcGFkZGluZy1sZWZ0OiAxMHB4Owp9Ci8qIFZlcnRpY2FsICovCi51ay1ncmlkLXNtYWxsICsgLnVrLWdyaWQtc21hbGwsCi51ay1ncmlkLXNtYWxsID4gLnVrLWdyaWQtbWFyZ2luLAoudWstZ3JpZC1zbWFsbCA+ICogPiAudWstcGFuZWwgKyAudWstcGFuZWwgewogIG1hcmdpbi10b3A6IDEwcHg7Cn0KLyoKICogTWVkaXVtIGd1dHRlcgogKi8KLyogSG9yaXpvbnRhbCAqLwoudWstZ3JpZC1tZWRpdW0gewogIG1hcmdpbi1sZWZ0OiAtMjVweDsKfQoudWstZ3JpZC1tZWRpdW0gPiAqIHsKICBwYWRkaW5nLWxlZnQ6IDI1cHg7Cn0KLyogVmVydGljYWwgKi8KLnVrLWdyaWQtbWVkaXVtICsgLnVrLWdyaWQtbWVkaXVtLAoudWstZ3JpZC1tZWRpdW0gPiAudWstZ3JpZC1tYXJnaW4sCi51ay1ncmlkLW1lZGl1bSA+ICogPiAudWstcGFuZWwgKyAudWstcGFuZWwgewogIG1hcmdpbi10b3A6IDI1cHg7Cn0KLyoKICogTGFyZ2UgZ3V0dGVyCiAqLwovKiBMYXJnZSBzY3JlZW4gYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHsKICAvKiBIb3Jpem9udGFsICovCiAgLnVrLWdyaWQtbGFyZ2UgewogICAgbWFyZ2luLWxlZnQ6IC0zNXB4OwogIH0KICAudWstZ3JpZC1sYXJnZSA+ICogewogICAgcGFkZGluZy1sZWZ0OiAzNXB4OwogIH0KICAvKiBWZXJ0aWNhbCAqLwogIC51ay1ncmlkLWxhcmdlICsgLnVrLWdyaWQtbGFyZ2UsCiAgLnVrLWdyaWQtbGFyZ2UtbWFyZ2luLAogIC51ay1ncmlkLWxhcmdlID4gKiA+IC51ay1wYW5lbCArIC51ay1wYW5lbCB7CiAgICBtYXJnaW4tdG9wOiAzNXB4OwogIH0KfQovKiBFeHRyYSBMYXJnZSBzY3JlZW5zICovCkBtZWRpYSAobWluLXdpZHRoOiAxMjIwcHgpIHsKICAvKiBIb3Jpem9udGFsICovCiAgLnVrLWdyaWQtbGFyZ2UgewogICAgbWFyZ2luLWxlZnQ6IC01MHB4OwogIH0KICAudWstZ3JpZC1sYXJnZSA+ICogewogICAgcGFkZGluZy1sZWZ0OiA1MHB4OwogIH0KICAvKiBWZXJ0aWNhbCAqLwogIC51ay1ncmlkLWxhcmdlICsgLnVrLWdyaWQtbGFyZ2UsCiAgLnVrLWdyaWQtbGFyZ2UtbWFyZ2luLAogIC51ay1ncmlkLWxhcmdlID4gKiA+IC51ay1wYW5lbCArIC51ay1wYW5lbCB7CiAgICBtYXJnaW4tdG9wOiA1MHB4OwogIH0KfQovKiBNb2RpZmllcjogYHVrLWdyaWQtZGl2aWRlcmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIEhvcml6b250YWwgZGl2aWRlcgogKiBPbmx5IHdvcmtzIHdpdGggdGhlIGRlZmF1bHQgZ3V0dGVyLiBEb2VzIG5vdCB3b3JrIHdpdGggZ3V0dGVyIGNvbGxhcHNlLCBzbWFsbCBvciBsYXJnZS4KICogRG9lcyBub3Qgd29yayB3aXRoIGB1ay1wdXNoLSpgLCBgdWstcHVsbC0qYCBhbmQgbm90IGlmIHRoZSBjb2x1bW5zIGZsb2F0IGludG8gdGhlIG5leHQgcm93LgogKi8KLnVrLWdyaWQtZGl2aWRlcjpub3QoOmVtcHR5KSB7CiAgbWFyZ2luLWxlZnQ6IC0yNXB4OwogIG1hcmdpbi1yaWdodDogLTI1cHg7Cn0KLnVrLWdyaWQtZGl2aWRlciA+ICogewogIHBhZGRpbmctbGVmdDogMjVweDsKICBwYWRkaW5nLXJpZ2h0OiAyNXB4Owp9Ci51ay1ncmlkLWRpdmlkZXIgPiBbY2xhc3MqPSd1ay13aWR0aC0xLSddOm5vdCgudWstd2lkdGgtMS0xKTpudGgtY2hpbGQobisyKSwKLnVrLWdyaWQtZGl2aWRlciA+IFtjbGFzcyo9J3VrLXdpZHRoLTItJ106bnRoLWNoaWxkKG4rMiksCi51ay1ncmlkLWRpdmlkZXIgPiBbY2xhc3MqPSd1ay13aWR0aC0zLSddOm50aC1jaGlsZChuKzIpLAoudWstZ3JpZC1kaXZpZGVyID4gW2NsYXNzKj0ndWstd2lkdGgtNC0nXTpudGgtY2hpbGQobisyKSwKLnVrLWdyaWQtZGl2aWRlciA+IFtjbGFzcyo9J3VrLXdpZHRoLTUtJ106bnRoLWNoaWxkKG4rMiksCi51ay1ncmlkLWRpdmlkZXIgPiBbY2xhc3MqPSd1ay13aWR0aC02LSddOm50aC1jaGlsZChuKzIpLAoudWstZ3JpZC1kaXZpZGVyID4gW2NsYXNzKj0ndWstd2lkdGgtNy0nXTpudGgtY2hpbGQobisyKSwKLnVrLWdyaWQtZGl2aWRlciA+IFtjbGFzcyo9J3VrLXdpZHRoLTgtJ106bnRoLWNoaWxkKG4rMiksCi51ay1ncmlkLWRpdmlkZXIgPiBbY2xhc3MqPSd1ay13aWR0aC05LSddOm50aC1jaGlsZChuKzIpIHsKICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7Cn0KLyogVGFibGV0IGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLnVrLWdyaWQtZGl2aWRlciA+IFtjbGFzcyo9J3VrLXdpZHRoLW1lZGl1bS0nXTpub3QoLnVrLXdpZHRoLW1lZGl1bS0xLTEpOm50aC1jaGlsZChuKzIpIHsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDsKICB9Cn0KLyogRGVza3RvcCBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkgewogIC51ay1ncmlkLWRpdmlkZXIgPiBbY2xhc3MqPSd1ay13aWR0aC1sYXJnZS0nXTpub3QoLnVrLXdpZHRoLWxhcmdlLTEtMSk6bnRoLWNoaWxkKG4rMikgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGRkOwogIH0KfQovKiBMYXJnZSBzY3JlZW4gYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogMTIyMHB4KSB7CiAgLyoKICAgICAqIExhcmdlIGd1dHRlcgogICAgICovCiAgLnVrLWdyaWQtZGl2aWRlcjpub3QoOmVtcHR5KSB7CiAgICBtYXJnaW4tbGVmdDogLTM1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC0zNXB4OwogIH0KICAudWstZ3JpZC1kaXZpZGVyID4gKiB7CiAgICBwYWRkaW5nLWxlZnQ6IDM1cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAzNXB4OwogIH0KICAudWstZ3JpZC1kaXZpZGVyOmVtcHR5IHsKICAgIG1hcmdpbi10b3A6IDM1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAzNXB4OwogIH0KfQovKgogKiBWZXJ0aWNhbCBkaXZpZGVyCiAqLwoudWstZ3JpZC1kaXZpZGVyOmVtcHR5IHsKICBtYXJnaW4tdG9wOiAyNXB4OwogIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7Cn0KLyogTWF0Y2ggcGFuZWxzIGluIGdyaWRzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBCZWhhdmUgbGlrZSBhIGJsb2NrIGVsZW1lbnQKICovCi51ay1ncmlkLW1hdGNoID4gKiB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgLyogMSAqLwogIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgZmxleC13cmFwOiB3cmFwOwp9Ci51ay1ncmlkLW1hdGNoID4gKiA+ICogewogIC8qIDEgKi8KICAtbXMtZmxleDogbm9uZTsKICAtd2Via2l0LWZsZXg6IG5vbmU7CiAgZmxleDogbm9uZTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHdpZHRoOiAxMDAlOwp9Ci8qIEV2ZW4gZ3JpZCBjZWxsIHdpZHRocwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KW2NsYXNzKj0ndWstZ3JpZC13aWR0aCddID4gKiB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICB3aWR0aDogMTAwJTsKfQoudWstZ3JpZC13aWR0aC0xLTIgPiAqIHsKICB3aWR0aDogNTAlOwp9Ci51ay1ncmlkLXdpZHRoLTEtMyA+ICogewogIHdpZHRoOiAzMy4zMzMlOwp9Ci51ay1ncmlkLXdpZHRoLTEtNCA+ICogewogIHdpZHRoOiAyNSU7Cn0KLnVrLWdyaWQtd2lkdGgtMS01ID4gKiB7CiAgd2lkdGg6IDIwJTsKfQoudWstZ3JpZC13aWR0aC0xLTYgPiAqIHsKICB3aWR0aDogMTYuNjY2JTsKfQoudWstZ3JpZC13aWR0aC0xLTEwID4gKiB7CiAgd2lkdGg6IDEwJTsKfQoudWstZ3JpZC13aWR0aC1hdXRvID4gKiB7CiAgd2lkdGg6IGF1dG87Cn0KLyogUGhvbmUgbGFuZHNjYXBlIGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7CiAgLnVrLWdyaWQtd2lkdGgtc21hbGwtMS0xID4gKiB7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgLnVrLWdyaWQtd2lkdGgtc21hbGwtMS0yID4gKiB7CiAgICB3aWR0aDogNTAlOwogIH0KICAudWstZ3JpZC13aWR0aC1zbWFsbC0xLTMgPiAqIHsKICAgIHdpZHRoOiAzMy4zMzMlOwogIH0KICAudWstZ3JpZC13aWR0aC1zbWFsbC0xLTQgPiAqIHsKICAgIHdpZHRoOiAyNSU7CiAgfQogIC51ay1ncmlkLXdpZHRoLXNtYWxsLTEtNSA+ICogewogICAgd2lkdGg6IDIwJTsKICB9CiAgLnVrLWdyaWQtd2lkdGgtc21hbGwtMS02ID4gKiB7CiAgICB3aWR0aDogMTYuNjY2JTsKICB9CiAgLnVrLWdyaWQtd2lkdGgtc21hbGwtMS0xMCA+ICogewogICAgd2lkdGg6IDEwJTsKICB9Cn0KLyogVGFibGV0IGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLnVrLWdyaWQtd2lkdGgtbWVkaXVtLTEtMSA+ICogewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC51ay1ncmlkLXdpZHRoLW1lZGl1bS0xLTIgPiAqIHsKICAgIHdpZHRoOiA1MCU7CiAgfQogIC51ay1ncmlkLXdpZHRoLW1lZGl1bS0xLTMgPiAqIHsKICAgIHdpZHRoOiAzMy4zMzMlOwogIH0KICAudWstZ3JpZC13aWR0aC1tZWRpdW0tMS00ID4gKiB7CiAgICB3aWR0aDogMjUlOwogIH0KICAudWstZ3JpZC13aWR0aC1tZWRpdW0tMS01ID4gKiB7CiAgICB3aWR0aDogMjAlOwogIH0KICAudWstZ3JpZC13aWR0aC1tZWRpdW0tMS02ID4gKiB7CiAgICB3aWR0aDogMTYuNjY2JTsKICB9CiAgLnVrLWdyaWQtd2lkdGgtbWVkaXVtLTEtMTAgPiAqIHsKICAgIHdpZHRoOiAxMCU7CiAgfQp9Ci8qIERlc2t0b3AgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHsKICAudWstZ3JpZC13aWR0aC1sYXJnZS0xLTEgPiAqIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KICAudWstZ3JpZC13aWR0aC1sYXJnZS0xLTIgPiAqIHsKICAgIHdpZHRoOiA1MCU7CiAgfQogIC51ay1ncmlkLXdpZHRoLWxhcmdlLTEtMyA+ICogewogICAgd2lkdGg6IDMzLjMzMyU7CiAgfQogIC51ay1ncmlkLXdpZHRoLWxhcmdlLTEtNCA+ICogewogICAgd2lkdGg6IDI1JTsKICB9CiAgLnVrLWdyaWQtd2lkdGgtbGFyZ2UtMS01ID4gKiB7CiAgICB3aWR0aDogMjAlOwogIH0KICAudWstZ3JpZC13aWR0aC1sYXJnZS0xLTYgPiAqIHsKICAgIHdpZHRoOiAxNi42NjYlOwogIH0KICAudWstZ3JpZC13aWR0aC1sYXJnZS0xLTEwID4gKiB7CiAgICB3aWR0aDogMTAlOwogIH0KfQovKiBMYXJnZSBzY3JlZW4gYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogMTIyMHB4KSB7CiAgLnVrLWdyaWQtd2lkdGgteGxhcmdlLTEtMSA+ICogewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC51ay1ncmlkLXdpZHRoLXhsYXJnZS0xLTIgPiAqIHsKICAgIHdpZHRoOiA1MCU7CiAgfQogIC51ay1ncmlkLXdpZHRoLXhsYXJnZS0xLTMgPiAqIHsKICAgIHdpZHRoOiAzMy4zMzMlOwogIH0KICAudWstZ3JpZC13aWR0aC14bGFyZ2UtMS00ID4gKiB7CiAgICB3aWR0aDogMjUlOwogIH0KICAudWstZ3JpZC13aWR0aC14bGFyZ2UtMS01ID4gKiB7CiAgICB3aWR0aDogMjAlOwogIH0KICAudWstZ3JpZC13aWR0aC14bGFyZ2UtMS02ID4gKiB7CiAgICB3aWR0aDogMTYuNjY2JTsKICB9CiAgLnVrLWdyaWQtd2lkdGgteGxhcmdlLTEtMTAgPiAqIHsKICAgIHdpZHRoOiAxMCU7CiAgfQp9Ci8qIFN1Yi1vYmplY3RzOiBgdWstd2lkdGgtKmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCltjbGFzcyo9J3VrLXdpZHRoJ10gewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgd2lkdGg6IDEwMCU7Cn0KLyoKICogV2lkdGhzCiAqLwovKiBXaG9sZSAqLwoudWstd2lkdGgtMS0xIHsKICB3aWR0aDogMTAwJTsKfQovKiBIYWx2ZXMgKi8KLnVrLXdpZHRoLTEtMiwKLnVrLXdpZHRoLTItNCwKLnVrLXdpZHRoLTMtNiwKLnVrLXdpZHRoLTUtMTAgewogIHdpZHRoOiA1MCU7Cn0KLyogVGhpcmRzICovCi51ay13aWR0aC0xLTMsCi51ay13aWR0aC0yLTYgewogIHdpZHRoOiAzMy4zMzMlOwp9Ci51ay13aWR0aC0yLTMsCi51ay13aWR0aC00LTYgewogIHdpZHRoOiA2Ni42NjYlOwp9Ci8qIFF1YXJ0ZXJzICovCi51ay13aWR0aC0xLTQgewogIHdpZHRoOiAyNSU7Cn0KLnVrLXdpZHRoLTMtNCB7CiAgd2lkdGg6IDc1JTsKfQovKiBGaWZ0aHMgKi8KLnVrLXdpZHRoLTEtNSwKLnVrLXdpZHRoLTItMTAgewogIHdpZHRoOiAyMCU7Cn0KLnVrLXdpZHRoLTItNSwKLnVrLXdpZHRoLTQtMTAgewogIHdpZHRoOiA0MCU7Cn0KLnVrLXdpZHRoLTMtNSwKLnVrLXdpZHRoLTYtMTAgewogIHdpZHRoOiA2MCU7Cn0KLnVrLXdpZHRoLTQtNSwKLnVrLXdpZHRoLTgtMTAgewogIHdpZHRoOiA4MCU7Cn0KLyogU2l4dGhzICovCi51ay13aWR0aC0xLTYgewogIHdpZHRoOiAxNi42NjYlOwp9Ci51ay13aWR0aC01LTYgewogIHdpZHRoOiA4My4zMzMlOwp9Ci8qIFRlbnRocyAqLwoudWstd2lkdGgtMS0xMCB7CiAgd2lkdGg6IDEwJTsKfQoudWstd2lkdGgtMy0xMCB7CiAgd2lkdGg6IDMwJTsKfQoudWstd2lkdGgtNy0xMCB7CiAgd2lkdGg6IDcwJTsKfQoudWstd2lkdGgtOS0xMCB7CiAgd2lkdGg6IDkwJTsKfQovKiBQaG9uZSBsYW5kc2NhcGUgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogNDgwcHgpIHsKICAvKiBXaG9sZSAqLwogIC51ay13aWR0aC1zbWFsbC0xLTEgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC8qIEhhbHZlcyAqLwogIC51ay13aWR0aC1zbWFsbC0xLTIsCiAgLnVrLXdpZHRoLXNtYWxsLTItNCwKICAudWstd2lkdGgtc21hbGwtMy02LAogIC51ay13aWR0aC1zbWFsbC01LTEwIHsKICAgIHdpZHRoOiA1MCU7CiAgfQogIC8qIFRoaXJkcyAqLwogIC51ay13aWR0aC1zbWFsbC0xLTMsCiAgLnVrLXdpZHRoLXNtYWxsLTItNiB7CiAgICB3aWR0aDogMzMuMzMzJTsKICB9CiAgLnVrLXdpZHRoLXNtYWxsLTItMywKICAudWstd2lkdGgtc21hbGwtNC02IHsKICAgIHdpZHRoOiA2Ni42NjYlOwogIH0KICAvKiBRdWFydGVycyAqLwogIC51ay13aWR0aC1zbWFsbC0xLTQgewogICAgd2lkdGg6IDI1JTsKICB9CiAgLnVrLXdpZHRoLXNtYWxsLTMtNCB7CiAgICB3aWR0aDogNzUlOwogIH0KICAvKiBGaWZ0aHMgKi8KICAudWstd2lkdGgtc21hbGwtMS01LAogIC51ay13aWR0aC1zbWFsbC0yLTEwIHsKICAgIHdpZHRoOiAyMCU7CiAgfQogIC51ay13aWR0aC1zbWFsbC0yLTUsCiAgLnVrLXdpZHRoLXNtYWxsLTQtMTAgewogICAgd2lkdGg6IDQwJTsKICB9CiAgLnVrLXdpZHRoLXNtYWxsLTMtNSwKICAudWstd2lkdGgtc21hbGwtNi0xMCB7CiAgICB3aWR0aDogNjAlOwogIH0KICAudWstd2lkdGgtc21hbGwtNC01LAogIC51ay13aWR0aC1zbWFsbC04LTEwIHsKICAgIHdpZHRoOiA4MCU7CiAgfQogIC8qIFNpeHRocyAqLwogIC51ay13aWR0aC1zbWFsbC0xLTYgewogICAgd2lkdGg6IDE2LjY2NiU7CiAgfQogIC51ay13aWR0aC1zbWFsbC01LTYgewogICAgd2lkdGg6IDgzLjMzMyU7CiAgfQogIC8qIFRlbnRocyAqLwogIC51ay13aWR0aC1zbWFsbC0xLTEwIHsKICAgIHdpZHRoOiAxMCU7CiAgfQogIC51ay13aWR0aC1zbWFsbC0zLTEwIHsKICAgIHdpZHRoOiAzMCU7CiAgfQogIC51ay13aWR0aC1zbWFsbC03LTEwIHsKICAgIHdpZHRoOiA3MCU7CiAgfQogIC51ay13aWR0aC1zbWFsbC05LTEwIHsKICAgIHdpZHRoOiA5MCU7CiAgfQp9Ci8qIFRhYmxldCBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC8qIFdob2xlICovCiAgLnVrLXdpZHRoLW1lZGl1bS0xLTEgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC8qIEhhbHZlcyAqLwogIC51ay13aWR0aC1tZWRpdW0tMS0yLAogIC51ay13aWR0aC1tZWRpdW0tMi00LAogIC51ay13aWR0aC1tZWRpdW0tMy02LAogIC51ay13aWR0aC1tZWRpdW0tNS0xMCB7CiAgICB3aWR0aDogNTAlOwogIH0KICAvKiBUaGlyZHMgKi8KICAudWstd2lkdGgtbWVkaXVtLTEtMywKICAudWstd2lkdGgtbWVkaXVtLTItNiB7CiAgICB3aWR0aDogMzMuMzMzJTsKICB9CiAgLnVrLXdpZHRoLW1lZGl1bS0yLTMsCiAgLnVrLXdpZHRoLW1lZGl1bS00LTYgewogICAgd2lkdGg6IDY2LjY2NiU7CiAgfQogIC8qIFF1YXJ0ZXJzICovCiAgLnVrLXdpZHRoLW1lZGl1bS0xLTQgewogICAgd2lkdGg6IDI1JTsKICB9CiAgLnVrLXdpZHRoLW1lZGl1bS0zLTQgewogICAgd2lkdGg6IDc1JTsKICB9CiAgLyogRmlmdGhzICovCiAgLnVrLXdpZHRoLW1lZGl1bS0xLTUsCiAgLnVrLXdpZHRoLW1lZGl1bS0yLTEwIHsKICAgIHdpZHRoOiAyMCU7CiAgfQogIC51ay13aWR0aC1tZWRpdW0tMi01LAogIC51ay13aWR0aC1tZWRpdW0tNC0xMCB7CiAgICB3aWR0aDogNDAlOwogIH0KICAudWstd2lkdGgtbWVkaXVtLTMtNSwKICAudWstd2lkdGgtbWVkaXVtLTYtMTAgewogICAgd2lkdGg6IDYwJTsKICB9CiAgLnVrLXdpZHRoLW1lZGl1bS00LTUsCiAgLnVrLXdpZHRoLW1lZGl1bS04LTEwIHsKICAgIHdpZHRoOiA4MCU7CiAgfQogIC8qIFNpeHRocyAqLwogIC51ay13aWR0aC1tZWRpdW0tMS02IHsKICAgIHdpZHRoOiAxNi42NjYlOwogIH0KICAudWstd2lkdGgtbWVkaXVtLTUtNiB7CiAgICB3aWR0aDogODMuMzMzJTsKICB9CiAgLyogVGVudGhzICovCiAgLnVrLXdpZHRoLW1lZGl1bS0xLTEwIHsKICAgIHdpZHRoOiAxMCU7CiAgfQogIC51ay13aWR0aC1tZWRpdW0tMy0xMCB7CiAgICB3aWR0aDogMzAlOwogIH0KICAudWstd2lkdGgtbWVkaXVtLTctMTAgewogICAgd2lkdGg6IDcwJTsKICB9CiAgLnVrLXdpZHRoLW1lZGl1bS05LTEwIHsKICAgIHdpZHRoOiA5MCU7CiAgfQp9Ci8qIERlc2t0b3AgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHsKICAvKiBXaG9sZSAqLwogIC51ay13aWR0aC1sYXJnZS0xLTEgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC8qIEhhbHZlcyAqLwogIC51ay13aWR0aC1sYXJnZS0xLTIsCiAgLnVrLXdpZHRoLWxhcmdlLTItNCwKICAudWstd2lkdGgtbGFyZ2UtMy02LAogIC51ay13aWR0aC1sYXJnZS01LTEwIHsKICAgIHdpZHRoOiA1MCU7CiAgfQogIC8qIFRoaXJkcyAqLwogIC51ay13aWR0aC1sYXJnZS0xLTMsCiAgLnVrLXdpZHRoLWxhcmdlLTItNiB7CiAgICB3aWR0aDogMzMuMzMzJTsKICB9CiAgLnVrLXdpZHRoLWxhcmdlLTItMywKICAudWstd2lkdGgtbGFyZ2UtNC02IHsKICAgIHdpZHRoOiA2Ni42NjYlOwogIH0KICAvKiBRdWFydGVycyAqLwogIC51ay13aWR0aC1sYXJnZS0xLTQgewogICAgd2lkdGg6IDI1JTsKICB9CiAgLnVrLXdpZHRoLWxhcmdlLTMtNCB7CiAgICB3aWR0aDogNzUlOwogIH0KICAvKiBGaWZ0aHMgKi8KICAudWstd2lkdGgtbGFyZ2UtMS01LAogIC51ay13aWR0aC1sYXJnZS0yLTEwIHsKICAgIHdpZHRoOiAyMCU7CiAgfQogIC51ay13aWR0aC1sYXJnZS0yLTUsCiAgLnVrLXdpZHRoLWxhcmdlLTQtMTAgewogICAgd2lkdGg6IDQwJTsKICB9CiAgLnVrLXdpZHRoLWxhcmdlLTMtNSwKICAudWstd2lkdGgtbGFyZ2UtNi0xMCB7CiAgICB3aWR0aDogNjAlOwogIH0KICAudWstd2lkdGgtbGFyZ2UtNC01LAogIC51ay13aWR0aC1sYXJnZS04LTEwIHsKICAgIHdpZHRoOiA4MCU7CiAgfQogIC8qIFNpeHRocyAqLwogIC51ay13aWR0aC1sYXJnZS0xLTYgewogICAgd2lkdGg6IDE2LjY2NiU7CiAgfQogIC51ay13aWR0aC1sYXJnZS01LTYgewogICAgd2lkdGg6IDgzLjMzMyU7CiAgfQogIC8qIFRlbnRocyAqLwogIC51ay13aWR0aC1sYXJnZS0xLTEwIHsKICAgIHdpZHRoOiAxMCU7CiAgfQogIC51ay13aWR0aC1sYXJnZS0zLTEwIHsKICAgIHdpZHRoOiAzMCU7CiAgfQogIC51ay13aWR0aC1sYXJnZS03LTEwIHsKICAgIHdpZHRoOiA3MCU7CiAgfQogIC51ay13aWR0aC1sYXJnZS05LTEwIHsKICAgIHdpZHRoOiA5MCU7CiAgfQp9Ci8qIExhcmdlIHNjcmVlbiBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiAxMjIwcHgpIHsKICAvKiBXaG9sZSAqLwogIC51ay13aWR0aC14bGFyZ2UtMS0xIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KICAvKiBIYWx2ZXMgKi8KICAudWstd2lkdGgteGxhcmdlLTEtMiwKICAudWstd2lkdGgteGxhcmdlLTItNCwKICAudWstd2lkdGgteGxhcmdlLTMtNiwKICAudWstd2lkdGgteGxhcmdlLTUtMTAgewogICAgd2lkdGg6IDUwJTsKICB9CiAgLyogVGhpcmRzICovCiAgLnVrLXdpZHRoLXhsYXJnZS0xLTMsCiAgLnVrLXdpZHRoLXhsYXJnZS0yLTYgewogICAgd2lkdGg6IDMzLjMzMyU7CiAgfQogIC51ay13aWR0aC14bGFyZ2UtMi0zLAogIC51ay13aWR0aC14bGFyZ2UtNC02IHsKICAgIHdpZHRoOiA2Ni42NjYlOwogIH0KICAvKiBRdWFydGVycyAqLwogIC51ay13aWR0aC14bGFyZ2UtMS00IHsKICAgIHdpZHRoOiAyNSU7CiAgfQogIC51ay13aWR0aC14bGFyZ2UtMy00IHsKICAgIHdpZHRoOiA3NSU7CiAgfQogIC8qIEZpZnRocyAqLwogIC51ay13aWR0aC14bGFyZ2UtMS01LAogIC51ay13aWR0aC14bGFyZ2UtMi0xMCB7CiAgICB3aWR0aDogMjAlOwogIH0KICAudWstd2lkdGgteGxhcmdlLTItNSwKICAudWstd2lkdGgteGxhcmdlLTQtMTAgewogICAgd2lkdGg6IDQwJTsKICB9CiAgLnVrLXdpZHRoLXhsYXJnZS0zLTUsCiAgLnVrLXdpZHRoLXhsYXJnZS02LTEwIHsKICAgIHdpZHRoOiA2MCU7CiAgfQogIC51ay13aWR0aC14bGFyZ2UtNC01LAogIC51ay13aWR0aC14bGFyZ2UtOC0xMCB7CiAgICB3aWR0aDogODAlOwogIH0KICAvKiBTaXh0aHMgKi8KICAudWstd2lkdGgteGxhcmdlLTEtNiB7CiAgICB3aWR0aDogMTYuNjY2JTsKICB9CiAgLnVrLXdpZHRoLXhsYXJnZS01LTYgewogICAgd2lkdGg6IDgzLjMzMyU7CiAgfQogIC8qIFRlbnRocyAqLwogIC51ay13aWR0aC14bGFyZ2UtMS0xMCB7CiAgICB3aWR0aDogMTAlOwogIH0KICAudWstd2lkdGgteGxhcmdlLTMtMTAgewogICAgd2lkdGg6IDMwJTsKICB9CiAgLnVrLXdpZHRoLXhsYXJnZS03LTEwIHsKICAgIHdpZHRoOiA3MCU7CiAgfQogIC51ay13aWR0aC14bGFyZ2UtOS0xMCB7CiAgICB3aWR0aDogOTAlOwogIH0KfQovKiBTdWItb2JqZWN0OiBgdWstcHVzaC0qYCBhbmQgYHVrLXB1bGwtKmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIFNvdXJjZSBvcmRlcmluZwogKiBXb3JrcyBvbmx5IHdpdGggYHVrLXdpZHRoLW1lZGl1bS0qYAogKi8KLyogVGFibGV0IGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgW2NsYXNzKj0ndWstcHVzaC0nXSwKICBbY2xhc3MqPSd1ay1wdWxsLSddIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB9CiAgLyoKICAgICAqIFB1c2gKICAgICAqLwogIC8qIEhhbHZlcyAqLwogIC51ay1wdXNoLTEtMiwKICAudWstcHVzaC0yLTQsCiAgLnVrLXB1c2gtMy02LAogIC51ay1wdXNoLTUtMTAgewogICAgbGVmdDogNTAlOwogIH0KICAvKiBUaGlyZHMgKi8KICAudWstcHVzaC0xLTMsCiAgLnVrLXB1c2gtMi02IHsKICAgIGxlZnQ6IDMzLjMzMyU7CiAgfQogIC51ay1wdXNoLTItMywKICAudWstcHVzaC00LTYgewogICAgbGVmdDogNjYuNjY2JTsKICB9CiAgLyogUXVhcnRlcnMgKi8KICAudWstcHVzaC0xLTQgewogICAgbGVmdDogMjUlOwogIH0KICAudWstcHVzaC0zLTQgewogICAgbGVmdDogNzUlOwogIH0KICAvKiBGaWZ0aHMgKi8KICAudWstcHVzaC0xLTUsCiAgLnVrLXB1c2gtMi0xMCB7CiAgICBsZWZ0OiAyMCU7CiAgfQogIC51ay1wdXNoLTItNSwKICAudWstcHVzaC00LTEwIHsKICAgIGxlZnQ6IDQwJTsKICB9CiAgLnVrLXB1c2gtMy01LAogIC51ay1wdXNoLTYtMTAgewogICAgbGVmdDogNjAlOwogIH0KICAudWstcHVzaC00LTUsCiAgLnVrLXB1c2gtOC0xMCB7CiAgICBsZWZ0OiA4MCU7CiAgfQogIC8qIFNpeHRocyAqLwogIC51ay1wdXNoLTEtNiB7CiAgICBsZWZ0OiAxNi42NjYlOwogIH0KICAudWstcHVzaC01LTYgewogICAgbGVmdDogODMuMzMzJTsKICB9CiAgLyogVGVudGhzICovCiAgLnVrLXB1c2gtMS0xMCB7CiAgICBsZWZ0OiAxMCU7CiAgfQogIC51ay1wdXNoLTMtMTAgewogICAgbGVmdDogMzAlOwogIH0KICAudWstcHVzaC03LTEwIHsKICAgIGxlZnQ6IDcwJTsKICB9CiAgLnVrLXB1c2gtOS0xMCB7CiAgICBsZWZ0OiA5MCU7CiAgfQogIC8qCiAgICAgKiBQdWxsCiAgICAgKi8KICAvKiBIYWx2ZXMgKi8KICAudWstcHVsbC0xLTIsCiAgLnVrLXB1bGwtMi00LAogIC51ay1wdWxsLTMtNiwKICAudWstcHVsbC01LTEwIHsKICAgIGxlZnQ6IC01MCU7CiAgfQogIC8qIFRoaXJkcyAqLwogIC51ay1wdWxsLTEtMywKICAudWstcHVsbC0yLTYgewogICAgbGVmdDogLTMzLjMzMyU7CiAgfQogIC51ay1wdWxsLTItMywKICAudWstcHVsbC00LTYgewogICAgbGVmdDogLTY2LjY2NiU7CiAgfQogIC8qIFF1YXJ0ZXJzICovCiAgLnVrLXB1bGwtMS00IHsKICAgIGxlZnQ6IC0yNSU7CiAgfQogIC51ay1wdWxsLTMtNCB7CiAgICBsZWZ0OiAtNzUlOwogIH0KICAvKiBGaWZ0aHMgKi8KICAudWstcHVsbC0xLTUsCiAgLnVrLXB1bGwtMi0xMCB7CiAgICBsZWZ0OiAtMjAlOwogIH0KICAudWstcHVsbC0yLTUsCiAgLnVrLXB1bGwtNC0xMCB7CiAgICBsZWZ0OiAtNDAlOwogIH0KICAudWstcHVsbC0zLTUsCiAgLnVrLXB1bGwtNi0xMCB7CiAgICBsZWZ0OiAtNjAlOwogIH0KICAudWstcHVsbC00LTUsCiAgLnVrLXB1bGwtOC0xMCB7CiAgICBsZWZ0OiAtODAlOwogIH0KICAvKiBTaXh0aHMgKi8KICAudWstcHVsbC0xLTYgewogICAgbGVmdDogLTE2LjY2NiU7CiAgfQogIC51ay1wdWxsLTUtNiB7CiAgICBsZWZ0OiAtODMuMzMzJTsKICB9CiAgLyogVGVudGhzICovCiAgLnVrLXB1bGwtMS0xMCB7CiAgICBsZWZ0OiAtMTAlOwogIH0KICAudWstcHVsbC0zLTEwIHsKICAgIGxlZnQ6IC0zMCU7CiAgfQogIC51ay1wdWxsLTctMTAgewogICAgbGVmdDogLTcwJTsKICB9CiAgLnVrLXB1bGwtOS0xMCB7CiAgICBsZWZ0OiAtOTAlOwogIH0KfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBQYW5lbAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gTmVlZGVkIGZvciBgYWAgZWxlbWVudHMKICogMi4gQ3JlYXRlIHBvc2l0aW9uIGNvbnRleHQgZm9yIGJhZGdlcwogKi8KLnVrLXBhbmVsIHsKICAvKiAxICovCiAgZGlzcGxheTogYmxvY2s7CiAgLyogMiAqLwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQovKgogKiBBbGxvdyBwYW5lbHMgdG8gYmUgYW5jaG9ycwogKi8KLnVrLXBhbmVsLAoudWstcGFuZWw6aG92ZXIgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQovKgogKiBNaWNybyBjbGVhcmZpeCB0byBtYWtlIHBhbmVscyBtb3JlIHJvYnVzdAogKi8KLnVrLXBhbmVsOmJlZm9yZSwKLnVrLXBhbmVsOmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiB0YWJsZTsKfQoudWstcGFuZWw6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci8qCiAqIFJlbW92ZSBtYXJnaW4gZnJvbSB0aGUgbGFzdC1jaGlsZCBpZiBub3QgYHVrLXdpZGdldC10aXRsZWAKICovCi51ay1wYW5lbCA+IDpub3QoLnVrLXBhbmVsLXRpdGxlKTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci8qIFN1Yi1vYmplY3Q6IGB1ay1wYW5lbC10aXRsZWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1wYW5lbC10aXRsZSB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGNvbG9yOiAjNDQ0Owp9Ci8qIFN1Yi1vYmplY3Q6IGB1ay1wYW5lbC1iYWRnZWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1wYW5lbC1iYWRnZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICB6LWluZGV4OiAxOwp9Ci8qIFN1Yi1vYmplY3Q6IGB1ay1wYW5lbC10ZWFzZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstcGFuZWwtdGVhc2VyIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci8qIFN1Yi1vYmplY3Q6IGB1ay1wYW5lbC1ib2R5YAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXBhbmVsLWJvZHkgewogIHBhZGRpbmc6IDE1cHg7Cn0KLyogTW9kaWZpZXI6IGB1ay1wYW5lbC1ib3hgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstcGFuZWwtYm94IHsKICBwYWRkaW5nOiAxNXB4OwogIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgY29sb3I6ICM0NDQ7Cn0KLnVrLXBhbmVsLWJveC1ob3Zlcjpob3ZlciB7CiAgY29sb3I6ICM0NDQ7Cn0KLnVrLXBhbmVsLWJveCAudWstcGFuZWwtdGl0bGUgewogIGNvbG9yOiAjNDQ0Owp9Ci51ay1wYW5lbC1ib3ggLnVrLXBhbmVsLWJhZGdlIHsKICB0b3A6IDEwcHg7CiAgcmlnaHQ6IDEwcHg7Cn0KLnVrLXBhbmVsLWJveCA+IC51ay1wYW5lbC10ZWFzZXIgewogIG1hcmdpbi10b3A6IC0xNXB4OwogIG1hcmdpbi1sZWZ0OiAtMTVweDsKICBtYXJnaW4tcmlnaHQ6IC0xNXB4Owp9Ci8qCiAqIE5hdiBpbiBwYW5lbAogKi8KLnVrLXBhbmVsLWJveCA+IC51ay1uYXYtc2lkZSB7CiAgbWFyZ2luOiAwIC0xNXB4Owp9Ci8qCiAqIFN1Yi1tb2RpZmllcjogYHVrLXBhbmVsLWJveC1wcmltYXJ5YAogKi8KLnVrLXBhbmVsLWJveC1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJmN2ZkOwogIGNvbG9yOiAjMmQ3MDkxOwp9Ci51ay1wYW5lbC1ib3gtcHJpbWFyeS1ob3Zlcjpob3ZlciB7CiAgY29sb3I6ICMyZDcwOTE7Cn0KLnVrLXBhbmVsLWJveC1wcmltYXJ5IC51ay1wYW5lbC10aXRsZSB7CiAgY29sb3I6ICMyZDcwOTE7Cn0KLyoKICogU3ViLW1vZGlmaWVyOiBgdWstcGFuZWwtYm94LXNlY29uZGFyeWAKICovCi51ay1wYW5lbC1ib3gtc2Vjb25kYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1wYW5lbC1ib3gtc2Vjb25kYXJ5LWhvdmVyOmhvdmVyIHsKICBjb2xvcjogIzQ0NDsKfQoudWstcGFuZWwtYm94LXNlY29uZGFyeSAudWstcGFuZWwtdGl0bGUgewogIGNvbG9yOiAjNDQ0Owp9Ci8qIE1vZGlmaWVyOiBgdWstcGFuZWwtaG92ZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstcGFuZWwtaG92ZXIgewogIHBhZGRpbmc6IDE1cHg7CiAgY29sb3I6ICM0NDQ7Cn0KLnVrLXBhbmVsLWhvdmVyOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1wYW5lbC1ob3ZlciAudWstcGFuZWwtYmFkZ2UgewogIHRvcDogMTBweDsKICByaWdodDogMTBweDsKfQoudWstcGFuZWwtaG92ZXIgPiAudWstcGFuZWwtdGVhc2VyIHsKICBtYXJnaW4tdG9wOiAtMTVweDsKICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKfQovKiBNb2RpZmllcjogYHVrLXBhbmVsLWhlYWRlcmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1wYW5lbC1oZWFkZXIgLnVrLXBhbmVsLXRpdGxlIHsKICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKICBjb2xvcjogIzQ0NDsKfQovKiBNb2RpZmllcjogYHVrLXBhbmVsLXNwYWNlYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXBhbmVsLXNwYWNlIHsKICBwYWRkaW5nOiAzMHB4Owp9Ci51ay1wYW5lbC1zcGFjZSAudWstcGFuZWwtYmFkZ2UgewogIHRvcDogMzBweDsKICByaWdodDogMzBweDsKfQovKiBNb2RpZmllcjogYHVrLXBhbmVsLWRpdmlkZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstcGFuZWwgKyAudWstcGFuZWwtZGl2aWRlciB7CiAgbWFyZ2luLXRvcDogNTBweCAhaW1wb3J0YW50Owp9Ci51ay1wYW5lbCArIC51ay1wYW5lbC1kaXZpZGVyOmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTI1cHg7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKfQovKiBMYXJnZSBzY3JlZW4gYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogMTIyMHB4KSB7CiAgLnVrLXBhbmVsICsgLnVrLXBhbmVsLWRpdmlkZXIgewogICAgbWFyZ2luLXRvcDogNzBweCAhaW1wb3J0YW50OwogIH0KICAudWstcGFuZWwgKyAudWstcGFuZWwtZGl2aWRlcjpiZWZvcmUgewogICAgdG9wOiAtMzVweDsKICB9Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogQmxvY2sKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1ibG9jayB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgcGFkZGluZy10b3A6IDIwcHg7CiAgcGFkZGluZy1ib3R0b206IDIwcHg7Cn0KLyogUGhvbmUgbGFuZHNjYXBlIGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLnVrLWJsb2NrIHsKICAgIHBhZGRpbmctdG9wOiA1MHB4OwogICAgcGFkZGluZy1ib3R0b206IDUwcHg7CiAgfQp9Ci8qCiAqIE1pY3JvIGNsZWFyZml4IHRvIG1ha2UgYmxvY2tzIG1vcmUgcm9idXN0CiAqLwoudWstYmxvY2s6YmVmb3JlLAoudWstYmxvY2s6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci51ay1ibG9jazphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLyoKICogUmVtb3ZlIG1hcmdpbiBmcm9tIHRoZSBsYXN0LWNoaWxkCiAqLwoudWstYmxvY2sgPiA6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQovKiBQYWRkaW5nIE1vZGlmaWVyCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBMYXJnZSBwYWRkaW5nCiAqLwoudWstYmxvY2stbGFyZ2UgewogIHBhZGRpbmctdG9wOiAyMHB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4Owp9Ci8qIFRhYmxldHMgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAudWstYmxvY2stbGFyZ2UgewogICAgcGFkZGluZy10b3A6IDUwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNTBweDsKICB9Cn0KLyogRGVza3RvcCBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkgewogIC51ay1ibG9jay1sYXJnZSB7CiAgICBwYWRkaW5nLXRvcDogMTAwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTAwcHg7CiAgfQp9Ci8qIENvbG9yIE1vZGlmaWVyCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBEZWZhdWx0CiAqLwoudWstYmxvY2stZGVmYXVsdCB7CiAgYmFja2dyb3VuZDogI2ZmZjsKfQovKgogKiBNdXRlZAogKi8KLnVrLWJsb2NrLW11dGVkIHsKICBiYWNrZ3JvdW5kOiAjZjlmOWY5Owp9Ci8qCiAqIFByaW1hcnkKICovCi51ay1ibG9jay1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kOiAjMDBhOGU2Owp9Ci8qCiAqIFNlY29uZGFyeQogKi8KLnVrLWJsb2NrLXNlY29uZGFyeSB7CiAgYmFja2dyb3VuZDogIzIyMjsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBBcnRpY2xlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBNaWNybyBjbGVhcmZpeCB0byBtYWtlIGFydGljbGVzIG1vcmUgcm9idXN0CiAqLwoudWstYXJ0aWNsZTpiZWZvcmUsCi51ay1hcnRpY2xlOmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiB0YWJsZTsKfQoudWstYXJ0aWNsZTphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLyoKICogUmVtb3ZlIG1hcmdpbiBmcm9tIHRoZSBsYXN0LWNoaWxkCiAqLwoudWstYXJ0aWNsZSA+IDpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci8qCiAqIFZlcnRpY2FsIGd1dHRlciBmb3IgYXJ0aWNsZXMKICovCi51ay1hcnRpY2xlICsgLnVrLWFydGljbGUgewogIG1hcmdpbi10b3A6IDI1cHg7Cn0KLyogU3ViLW9iamVjdCBgdWstYXJ0aWNsZS10aXRsZWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1hcnRpY2xlLXRpdGxlIHsKICBmb250LXNpemU6IDM2cHg7CiAgbGluZS1oZWlnaHQ6IDQycHg7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQoudWstYXJ0aWNsZS10aXRsZSBhIHsKICBjb2xvcjogaW5oZXJpdDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLyogU3ViLW9iamVjdCBgdWstYXJ0aWNsZS1tZXRhYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWFydGljbGUtbWV0YSB7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGNvbG9yOiAjOTk5Owp9Ci8qIFN1Yi1vYmplY3QgYHVrLWFydGljbGUtbGVhZGAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1hcnRpY2xlLWxlYWQgewogIGNvbG9yOiAjNDQ0OwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBmb250LXdlaWdodDogbm9ybWFsOwp9Ci8qIFN1Yi1vYmplY3QgYHVrLWFydGljbGUtZGl2aWRlcmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1hcnRpY2xlLWRpdmlkZXIgewogIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgYm9yZGVyLWNvbG9yOiAjZGRkOwp9CiogKyAudWstYXJ0aWNsZS1kaXZpZGVyIHsKICBtYXJnaW4tdG9wOiAyNXB4Owp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IENvbW1lbnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qIFN1Yi1vYmplY3QgYHVrLWNvbW1lbnQtaGVhZGVyYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWNvbW1lbnQtaGVhZGVyIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci8qCiAqIE1pY3JvIGNsZWFyZml4CiAqLwoudWstY29tbWVudC1oZWFkZXI6YmVmb3JlLAoudWstY29tbWVudC1oZWFkZXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci51ay1jb21tZW50LWhlYWRlcjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLyogU3ViLW9iamVjdCBgdWstY29tbWVudC1hdmF0YXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstY29tbWVudC1hdmF0YXIgewogIG1hcmdpbi1yaWdodDogMTVweDsKICBmbG9hdDogbGVmdDsKfQovKiBTdWItb2JqZWN0IGB1ay1jb21tZW50LXRpdGxlYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWNvbW1lbnQtdGl0bGUgewogIG1hcmdpbjogNXB4IDAgMCAwOwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjJweDsKfQovKiBTdWItb2JqZWN0IGB1ay1jb21tZW50LW1ldGFgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstY29tbWVudC1tZXRhIHsKICBtYXJnaW46IDJweCAwIDAgMDsKICBmb250LXNpemU6IDExcHg7CiAgbGluZS1oZWlnaHQ6IDE2cHg7CiAgY29sb3I6ICM5OTk7Cn0KLyogU3ViLW9iamVjdCBgdWstY29tbWVudC1ib2R5YAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogUmVtb3ZlIG1hcmdpbiBmcm9tIHRoZSBsYXN0LWNoaWxkCiAqLwoudWstY29tbWVudC1ib2R5ID4gOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLyogU3ViLW9iamVjdCBgdWstY29tbWVudC1saXN0YAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWNvbW1lbnQtbGlzdCB7CiAgcGFkZGluZzogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci51ay1jb21tZW50LWxpc3QgLnVrLWNvbW1lbnQgKyB1bCB7CiAgbWFyZ2luOiAxNXB4IDAgMCAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLnVrLWNvbW1lbnQtbGlzdCA+IGxpOm50aC1jaGlsZChuKzIpLAoudWstY29tbWVudC1saXN0IC51ay1jb21tZW50ICsgdWwgPiBsaTpudGgtY2hpbGQobisyKSB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQovKiBUYWJsZXQgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAudWstY29tbWVudC1saXN0IC51ay1jb21tZW50ICsgdWwgewogICAgcGFkZGluZy1sZWZ0OiAxMDBweDsKICB9Cn0KLyogTW9kaWZpZXIgYHVrLWNvbW1lbnQtcHJpbWFyeWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IENvdmVyCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBCYWNrZ3JvdW5kIGltYWdlIGFsd2F5cyBjb3ZlcnMgYW5kIGNlbnRlcnMgaXRzIGVsZW1lbnQKICovCi51ay1jb3Zlci1iYWNrZ3JvdW5kIHsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlOwogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKfQovKgogKiBFbXVsYXRlcyBpbWFnZSBjb3Zlciwgd29ya3Mgd2l0aCB2aWRlbyBhbmQgaW1hZ2UgZWxlbWVudHMKICogMS4gUGFyZW50IGNvbnRhaW5lciB3aGljaCBjbGlwcyByZXNpemVkIG9iamVjdAogKiAyLiBSZXNpemVzIHRoZSBvYmplY3QgdG8gYWx3YXlzIGNvdmVycyBpdHMgY29udGFpbmVyCiAqIDMuIFJlc2V0IHRoZSByZXNwb25zaXZlIGltYWdlIENTUwogKiA0LiBDZW50ZXIgb2JqZWN0CiAqLwovKiAxICovCi51ay1jb3ZlciB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudWstY292ZXItb2JqZWN0IHsKICAvKiAyICovCiAgd2lkdGg6IGF1dG87CiAgaGVpZ2h0OiBhdXRvOwogIG1pbi13aWR0aDogMTAwJTsKICBtaW4taGVpZ2h0OiAxMDAlOwogIC8qIDMgKi8KICBtYXgtd2lkdGg6IG5vbmU7CiAgLyogNCAqLwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBsZWZ0OiA1MCU7CiAgdG9wOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKfQovKgogKiBUbyBjZW50ZXIgaWZyYW1lcyB1c2UgYGRhdGEtdWstY292ZXJgIEphdmFTY3JpcHQKICovCltkYXRhLXVrLWNvdmVyXSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGxlZnQ6IDUwJTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IE5hdgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLW5hdiwKLnVrLW5hdiB1bCB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQovKgogKiBJdGVtcwogKi8KLnVrLW5hdiBsaSA+IGEgewogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudWstbmF2ID4gbGkgPiBhIHsKICBwYWRkaW5nOiA1cHggMTVweDsKfQovKgogKiBOZXN0ZWQgaXRlbXMKICovCi51ay1uYXYgdWwgewogIHBhZGRpbmctbGVmdDogMTVweDsKfQoudWstbmF2IHVsIGEgewogIHBhZGRpbmc6IDJweCAwOwp9Ci8qCiAqIEl0ZW0gc3VidGl0bGUKICovCi51ay1uYXYgbGkgPiBhID4gZGl2IHsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDE4cHg7Cn0KLyogU3ViLW9iamVjdDogYHVrLW5hdi1oZWFkZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstbmF2LWhlYWRlciB7CiAgcGFkZGluZzogNXB4IDE1cHg7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDEycHg7Cn0KLnVrLW5hdi1oZWFkZXI6bm90KDpmaXJzdC1jaGlsZCkgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLyogU3ViLW9iamVjdDogYHVrLW5hdi1kaXZpZGVyYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLW5hdi1kaXZpZGVyIHsKICBtYXJnaW46IDlweCAxNXB4Owp9Ci8qIFN1Yi1vYmplY3Q6IGB1ay1uYXYtc3ViYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogYHVsYCBuZWVkZWQgZm9yIGhpZ2hlciBzcGVjaWZpY2l0eSB0byBvdmVycmlkZSBwYWRkaW5nCiAqLwp1bC51ay1uYXYtc3ViIHsKICBwYWRkaW5nOiA1cHggMCA1cHggMTVweDsKfQovKiBNb2RpZmllcjogYHVrLW5hdi1wYXJlbnQtaWNvbmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1uYXYtcGFyZW50LWljb24gPiAudWstcGFyZW50ID4gYTphZnRlciB7CiAgY29udGVudDogIlxmMTA0IjsKICB3aWR0aDogMjBweDsKICBtYXJnaW4tcmlnaHQ6IC0xMHB4OwogIGZsb2F0OiByaWdodDsKICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci51ay1uYXYtcGFyZW50LWljb24gPiAudWstcGFyZW50LnVrLW9wZW4gPiBhOmFmdGVyIHsKICBjb250ZW50OiAiXGYxMDciOwp9Ci8qIE1vZGlmaWVyIGB1ay1uYXYtc2lkZWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIEl0ZW1zCiAqLwoudWstbmF2LXNpZGUgPiBsaSA+IGEgewogIGNvbG9yOiAjNDQ0Owp9Ci8qCiAqIEhvdmVyCiAqIDEuIEFwcGx5IGhvdmVyIHN0eWxlIGFsc28gdG8gZm9jdXMgc3RhdGUKICogMi4gUmVtb3ZlIGRlZmF1bHQgZm9jdXMgc3R5bGUKICovCi51ay1uYXYtc2lkZSA+IGxpID4gYTpob3ZlciwKLnVrLW5hdi1zaWRlID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIGNvbG9yOiAjNDQ0OwogIC8qIDIgKi8KICBvdXRsaW5lOiBub25lOwp9Ci8qIEFjdGl2ZSAqLwoudWstbmF2LXNpZGUgPiBsaS51ay1hY3RpdmUgPiBhIHsKICBiYWNrZ3JvdW5kOiAjMDBhOGU2OwogIGNvbG9yOiAjZmZmOwp9Ci8qCiAqIFN1Yi1vYmplY3Q6IGB1ay1uYXYtaGVhZGVyYAogKi8KLnVrLW5hdi1zaWRlIC51ay1uYXYtaGVhZGVyIHsKICBjb2xvcjogIzQ0NDsKfQovKgogKiBTdWItb2JqZWN0OiBgdWstbmF2LWRpdmlkZXJgCiAqLwoudWstbmF2LXNpZGUgLnVrLW5hdi1kaXZpZGVyIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKfQovKgogKiBOZXN0ZWQgaXRlbXMKICovCi51ay1uYXYtc2lkZSB1bCBhIHsKICBjb2xvcjogIzA3RDsKfQoudWstbmF2LXNpZGUgdWwgYTpob3ZlciB7CiAgY29sb3I6ICMwNTk7Cn0KLyogTW9kaWZpZXIgYHVrLW5hdi1kcm9wZG93bmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIEl0ZW1zCiAqLwoudWstbmF2LWRyb3Bkb3duID4gbGkgPiBhIHsKICBjb2xvcjogIzQ0NDsKfQovKgogKiBIb3ZlcgogKiAxLiBBcHBseSBob3ZlciBzdHlsZSBhbHNvIHRvIGZvY3VzIHN0YXRlCiAqIDIuIFJlbW92ZSBkZWZhdWx0IGZvY3VzIHN0eWxlCiAqLwoudWstbmF2LWRyb3Bkb3duID4gbGkgPiBhOmhvdmVyLAoudWstbmF2LWRyb3Bkb3duID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiAjMDBhOGU2OwogIGNvbG9yOiAjZmZmOwogIC8qIDIgKi8KICBvdXRsaW5lOiBub25lOwp9Ci8qCiAqIFN1Yi1vYmplY3Q6IGB1ay1uYXYtaGVhZGVyYAogKi8KLnVrLW5hdi1kcm9wZG93biAudWstbmF2LWhlYWRlciB7CiAgY29sb3I6ICM5OTk7Cn0KLyoKICogU3ViLW9iamVjdDogYHVrLW5hdi1kaXZpZGVyYAogKi8KLnVrLW5hdi1kcm9wZG93biAudWstbmF2LWRpdmlkZXIgewogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwp9Ci8qCiAqIE5lc3RlZCBpdGVtcwogKi8KLnVrLW5hdi1kcm9wZG93biB1bCBhIHsKICBjb2xvcjogIzA3RDsKfQoudWstbmF2LWRyb3Bkb3duIHVsIGE6aG92ZXIgewogIGNvbG9yOiAjMDU5Owp9Ci8qIE1vZGlmaWVyIGB1ay1uYXYtbmF2YmFyYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogSXRlbXMKICovCi51ay1uYXYtbmF2YmFyID4gbGkgPiBhIHsKICBjb2xvcjogIzQ0NDsKfQovKgogKiBIb3ZlcgogKiAxLiBBcHBseSBob3ZlciBzdHlsZSBhbHNvIHRvIGZvY3VzIHN0YXRlCiAqIDIuIFJlbW92ZSBkZWZhdWx0IGZvY3VzIHN0eWxlCiAqLwoudWstbmF2LW5hdmJhciA+IGxpID4gYTpob3ZlciwKLnVrLW5hdi1uYXZiYXIgPiBsaSA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQ6ICMwMGE4ZTY7CiAgY29sb3I6ICNmZmY7CiAgLyogMiAqLwogIG91dGxpbmU6IG5vbmU7Cn0KLyoKICogU3ViLW9iamVjdDogYHVrLW5hdi1oZWFkZXJgCiAqLwoudWstbmF2LW5hdmJhciAudWstbmF2LWhlYWRlciB7CiAgY29sb3I6ICM5OTk7Cn0KLyoKICogU3ViLW9iamVjdDogYHVrLW5hdi1kaXZpZGVyYAogKi8KLnVrLW5hdi1uYXZiYXIgLnVrLW5hdi1kaXZpZGVyIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKfQovKgogKiBOZXN0ZWQgaXRlbXMKICovCi51ay1uYXYtbmF2YmFyIHVsIGEgewogIGNvbG9yOiAjMDdEOwp9Ci51ay1uYXYtbmF2YmFyIHVsIGE6aG92ZXIgewogIGNvbG9yOiAjMDU5Owp9Ci8qIE1vZGlmaWVyIGB1ay1uYXYtb2ZmY2FudmFzYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogSXRlbXMKICovCi51ay1uYXYtb2ZmY2FudmFzID4gbGkgPiBhIHsKICBjb2xvcjogI2NjYzsKICBwYWRkaW5nOiAxMHB4IDE1cHg7Cn0KLyoKICogSG92ZXIKICogTm8gaG92ZXIgb24gdG91Y2ggZGV2aWNlcyBiZWNhdXNlIGl0IGJlaGF2ZXMgYnVnZ3kgaW4gZml4ZWQgb2ZmY2FudmFzCiAqIDEuIEFwcGx5IGhvdmVyIHN0eWxlIGFsc28gdG8gZm9jdXMgc3RhdGUKICogMi4gUmVtb3ZlIGRlZmF1bHQgZm9jdXMgc3R5bGUKICovCi51ay1uYXYtb2ZmY2FudmFzID4gLnVrLW9wZW4gPiBhLApodG1sOm5vdCgudWstdG91Y2gpIC51ay1uYXYtb2ZmY2FudmFzID4gbGkgPiBhOmhvdmVyLApodG1sOm5vdCgudWstdG91Y2gpIC51ay1uYXYtb2ZmY2FudmFzID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiAjNDA0MDQwOwogIGNvbG9yOiAjZmZmOwogIC8qIDIgKi8KICBvdXRsaW5lOiBub25lOwp9Ci8qCiAqIEFjdGl2ZQogKiBgaHRtbCAudWstbmF2YCBuZWVkZWQgZm9yIGhpZ2hlciBzcGVjaWZpY2l0eSB0byBvdmVycmlkZSBob3ZlcgogKi8KaHRtbCAudWstbmF2LnVrLW5hdi1vZmZjYW52YXMgPiBsaS51ay1hY3RpdmUgPiBhIHsKICBiYWNrZ3JvdW5kOiAjMWExYTFhOwogIGNvbG9yOiAjZmZmOwp9Ci8qCiAqIFN1Yi1vYmplY3Q6IGB1ay1uYXYtaGVhZGVyYAogKi8KLnVrLW5hdi1vZmZjYW52YXMgLnVrLW5hdi1oZWFkZXIgewogIGNvbG9yOiAjNzc3Owp9Ci8qCiAqIFN1Yi1vYmplY3Q6IGB1ay1uYXYtZGl2aWRlcmAKICovCi51ay1uYXYtb2ZmY2FudmFzIC51ay1uYXYtZGl2aWRlciB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMxYTFhMWE7Cn0KLyoKICogTmVzdGVkIGl0ZW1zCiAqIE5vIGhvdmVyIG9uIHRvdWNoIGRldmljZXMgYmVjYXVzZSBpdCBiZWhhdmVzIGJ1Z2d5IGluIGZpeGVkIG9mZmNhbnZhcwogKi8KLnVrLW5hdi1vZmZjYW52YXMgdWwgYSB7CiAgY29sb3I6ICNjY2M7Cn0KaHRtbDpub3QoLnVrLXRvdWNoKSAudWstbmF2LW9mZmNhbnZhcyB1bCBhOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBOYXZiYXIKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1uYXZiYXIgewogIGJhY2tncm91bmQ6ICNlZWU7CiAgY29sb3I6ICM0NDQ7Cn0KLyoKICogTWljcm8gY2xlYXJmaXgKICovCi51ay1uYXZiYXI6YmVmb3JlLAoudWstbmF2YmFyOmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiB0YWJsZTsKfQoudWstbmF2YmFyOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQovKiBTdWItb2JqZWN0OiBgdWstbmF2YmFyLW5hdmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1uYXZiYXItbmF2IHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIGZsb2F0OiBsZWZ0Owp9Ci8qCiAqIDEuIENyZWF0ZSBwb3NpdGlvbiBjb250ZXh0IGZvciBkcm9wZG93bnMKICovCi51ay1uYXZiYXItbmF2ID4gbGkgewogIGZsb2F0OiBsZWZ0OwogIC8qIDEgKi8KICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLyoKICogMS4gRGltZW5zaW9ucwogKiAyLiBTdHlsZQogKi8KLnVrLW5hdmJhci1uYXYgPiBsaSA+IGEgewogIGRpc3BsYXk6IGJsb2NrOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIC8qIDEgKi8KICBoZWlnaHQ6IDQwcHg7CiAgcGFkZGluZzogMCAxNXB4OwogIGxpbmUtaGVpZ2h0OiA0MHB4OwogIC8qIDIgKi8KICBjb2xvcjogIzQ0NDsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKfQovKiBBcHBlYXIgbm90IGFzIGxpbmsgKi8KLnVrLW5hdmJhci1uYXYgPiBsaSA+IGFbaHJlZj0nIyddIHsKICBjdXJzb3I6IHRleHQ7Cn0KLyoKICogSG92ZXIKICogMS4gQXBwbHkgaG92ZXIgc3R5bGUgYWxzbyB0byBmb2N1cyBzdGF0ZQogKiAyLiBBbHNvIGFwcGx5IGlmIGRyb3Bkb3duIGlzIG9wZW5lZAogKiAzLiBSZW1vdmUgZGVmYXVsdCBmb2N1cyBzdHlsZQogKi8KLnVrLW5hdmJhci1uYXYgPiBsaTpob3ZlciA+IGEsCi51ay1uYXZiYXItbmF2ID4gbGkgPiBhOmZvY3VzLAoudWstbmF2YmFyLW5hdiA+IGxpLnVrLW9wZW4gPiBhIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGNvbG9yOiAjNDQ0OwogIC8qIDMgKi8KICBvdXRsaW5lOiBub25lOwp9Ci8qIE9uQ2xpY2sgKi8KLnVrLW5hdmJhci1uYXYgPiBsaSA+IGE6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwogIGNvbG9yOiAjNDQ0Owp9Ci8qIEFjdGl2ZSAqLwoudWstbmF2YmFyLW5hdiA+IGxpLnVrLWFjdGl2ZSA+IGEgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgY29sb3I6ICM0NDQ7Cn0KLyogU3ViLW9iamVjdHM6IGB1ay1uYXZiYXItbmF2LXN1YnRpdGxlYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLW5hdmJhci1uYXYgLnVrLW5hdmJhci1uYXYtc3VidGl0bGUgewogIGxpbmUtaGVpZ2h0OiAyOHB4Owp9Ci51ay1uYXZiYXItbmF2LXN1YnRpdGxlID4gZGl2IHsKICBtYXJnaW4tdG9wOiAtNnB4OwogIGZvbnQtc2l6ZTogMTBweDsKICBsaW5lLWhlaWdodDogMTJweDsKfQovKiBTdWItb2JqZWN0czogYHVrLW5hdmJhci1jb250ZW50YCwgYHVrLW5hdmJhci1icmFuZGAsIGB1ay1uYXZiYXItdG9nZ2xlYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogSW1pdGF0ZSBuYXZiYXIgaXRlbXMKICovCi51ay1uYXZiYXItY29udGVudCwKLnVrLW5hdmJhci1icmFuZCwKLnVrLW5hdmJhci10b2dnbGUgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgZGlzcGxheTogYmxvY2s7CiAgaGVpZ2h0OiA0MHB4OwogIHBhZGRpbmc6IDAgMTVweDsKICBmbG9hdDogbGVmdDsKfQovKgogKiBIZWxwZXIgdG8gY2VudGVyIGFsbCBjaGlsZCBlbGVtZW50cyB2ZXJ0aWNhbGx5CiAqLwoudWstbmF2YmFyLWNvbnRlbnQ6YmVmb3JlLAoudWstbmF2YmFyLWJyYW5kOmJlZm9yZSwKLnVrLW5hdmJhci10b2dnbGU6YmVmb3JlIHsKICBjb250ZW50OiAnJzsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAxMDAlOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLyogU3ViLW9iamVjdHM6IGB1ay1uYXZiYXItY29udGVudGAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIEJldHRlciBzaWJsaW5nIHNwYWNpbmcKICovCi51ay1uYXZiYXItY29udGVudCArIC51ay1uYXZiYXItY29udGVudDpub3QoLnVrLW5hdmJhci1jZW50ZXIpIHsKICBwYWRkaW5nLWxlZnQ6IDA7Cn0KLyoKICogTGluayBjb2xvcnMKICovCi51ay1uYXZiYXItY29udGVudCA+IGE6bm90KFtjbGFzc10pIHsKICBjb2xvcjogIzA3RDsKfQoudWstbmF2YmFyLWNvbnRlbnQgPiBhOm5vdChbY2xhc3NdKTpob3ZlciB7CiAgY29sb3I6ICMwNTk7Cn0KLyogU3ViLW9iamVjdHM6IGB1ay1uYXZiYXItYnJhbmRgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstbmF2YmFyLWJyYW5kIHsKICBmb250LXNpemU6IDE4cHg7CiAgY29sb3I6ICM0NDQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci8qCiAqIDEuIEFwcGx5IGhvdmVyIHN0eWxlIGFsc28gdG8gZm9jdXMgc3RhdGUKICogMi4gUmVtb3ZlIGRlZmF1bHQgZm9jdXMgc3R5bGUKICovCi51ay1uYXZiYXItYnJhbmQ6aG92ZXIsCi51ay1uYXZiYXItYnJhbmQ6Zm9jdXMgewogIGNvbG9yOiAjNDQ0OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAvKiAyICovCiAgb3V0bGluZTogbm9uZTsKfQovKiBTdWItb2JqZWN0OiBgdWstbmF2YmFyLXRvZ2dsZWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1uYXZiYXItdG9nZ2xlIHsKICBmb250LXNpemU6IDE4cHg7CiAgY29sb3I6ICM0NDQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci8qCiAqIDEuIEFwcGx5IGhvdmVyIHN0eWxlIGFsc28gdG8gZm9jdXMgc3RhdGUKICogMi4gUmVtb3ZlIGRlZmF1bHQgZm9jdXMgc3R5bGUKICovCi51ay1uYXZiYXItdG9nZ2xlOmhvdmVyLAoudWstbmF2YmFyLXRvZ2dsZTpmb2N1cyB7CiAgY29sb3I6ICM0NDQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIC8qIDIgKi8KICBvdXRsaW5lOiBub25lOwp9Ci8qCiAqIDEuIENlbnRlciBpY29uIHZlcnRpY2FsbHkKICovCi51ay1uYXZiYXItdG9nZ2xlOmFmdGVyIHsKICBjb250ZW50OiAiXGYwYzkiOwogIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTsKICAvKiAxICovCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoudWstbmF2YmFyLXRvZ2dsZS1hbHQ6YWZ0ZXIgewogIGNvbnRlbnQ6ICJcZjAwMiI7Cn0KLyogU3ViLW9iamVjdDogYHVrLW5hdmJhci1jZW50ZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBUaGUgZWxlbWVudCB3aXRoIHRoaXMgY2xhc3MgbmVlZHMgdG8gYmUgbGFzdCBjaGlsZCBpbiB0aGUgbmF2YmFyCiAqIDEuIFRoaXMgaGFjayBpcyBuZWVkZWQgYmVjYXVzZSBvdGhlciBmbG9hdCBlbGVtZW50cyBzaGlmdCBjZW50ZXJlZCB0ZXh0CiAqLwoudWstbmF2YmFyLWNlbnRlciB7CiAgZmxvYXQ6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIC8qIDEgKi8KICBtYXgtd2lkdGg6IDUwJTsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KLyogU3ViLW9iamVjdDogYHVrLW5hdmJhci1mbGlwYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLW5hdmJhci1mbGlwIHsKICBmbG9hdDogcmlnaHQ7Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogU3VibmF2CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBHdXR0ZXIKICogMi4gUmVtb3ZlIGRlZmF1bHQgbGlzdCBzdHlsZQogKi8KLnVrLXN1Ym5hdiB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAtd2Via2l0LWZsZXgtd3JhcDogd3JhcDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgLyogMSAqLwogIG1hcmdpbi1sZWZ0OiAtMTBweDsKICBtYXJnaW4tdG9wOiAtMTBweDsKICAvKiAyICovCiAgcGFkZGluZzogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci8qCiAqIDEuIFNwYWNlIGlzIGFsbG9jYXRlZCBzb2xlbHkgYmFzZWQgb24gY29udGVudCBkaW1lbnNpb25zCiAqIDIuIEhvcml6b250YWwgZ3V0dGVyIGlzIHVzaW5nIGBwYWRkaW5nYCBzbyBgdWstd2lkdGgtKmAgY2xhc3NlcyBjYW4gYmUgYXBwbGllZAogKiAzLiBDcmVhdGUgcG9zaXRpb24gY29udGV4dCBmb3IgZHJvcGRvd25zCiAqLwoudWstc3VibmF2ID4gKiB7CiAgLyogMSAqLwogIC1tcy1mbGV4OiBub25lOwogIC13ZWJraXQtZmxleDogbm9uZTsKICBmbGV4OiBub25lOwogIC8qIDIgKi8KICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgbWFyZ2luLXRvcDogMTBweDsKICAvKiAzICovCiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci8qCiAqIERFUFJFQ0FURUQgSUU5IFN1cHBvcnQKICovCi51ay1zdWJuYXY6YmVmb3JlLAoudWstc3VibmF2OmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci51ay1zdWJuYXY6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci51ay1zdWJuYXYgPiAqIHsKICBmbG9hdDogbGVmdDsKfQovKiBJdGVtcwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXN1Ym5hdiA+ICogPiAqIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgY29sb3I6ICM0NDQ7Cn0KLyoKICogSG92ZXIKICogMS4gQXBwbHkgaG92ZXIgc3R5bGUgYWxzbyB0byBmb2N1cyBzdGF0ZQogKi8KLnVrLXN1Ym5hdiA+ICogPiA6aG92ZXIsCi51ay1zdWJuYXYgPiAqID4gOmZvY3VzIHsKICBjb2xvcjogIzA3RDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLyoKICogQWN0aXZlCiAqLwoudWstc3VibmF2ID4gLnVrLWFjdGl2ZSA+ICogewogIGNvbG9yOiAjMDdEOwp9Ci8qIE1vZGlmaWVyOiAnc3VibmF2LWxpbmUnCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstc3VibmF2LWxpbmUgPiA6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAxMHB4OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnVrLXN1Ym5hdi1saW5lID4gOm50aC1jaGlsZChuKzIpOmJlZm9yZSB7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDsKfQovKiBNb2RpZmllcjogJ3N1Ym5hdi1waWxsJwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXN1Ym5hdi1waWxsID4gKiA+ICogewogIHBhZGRpbmc6IDNweCA5cHg7Cn0KLyoKICogSG92ZXIKICogMS4gQXBwbHkgaG92ZXIgc3R5bGUgYWxzbyB0byBmb2N1cyBzdGF0ZQogKiAyLiBSZW1vdmUgZGVmYXVsdCBmb2N1cyBzdHlsZQogKi8KLnVrLXN1Ym5hdi1waWxsID4gKiA+IDpob3ZlciwKLnVrLXN1Ym5hdi1waWxsID4gKiA+IDpmb2N1cyB7CiAgYmFja2dyb3VuZDogI2VlZTsKICBjb2xvcjogIzQ0NDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgLyogMiAqLwogIG91dGxpbmU6IG5vbmU7Cn0KLyoKICogQWN0aXZlCiAqIGBsaWAgbmVlZGVkIGZvciBoaWdoZXIgc3BlY2lmaWNpdHkgdG8gb3ZlcnJpZGUgaG92ZXIKICovCi51ay1zdWJuYXYtcGlsbCA+IC51ay1hY3RpdmUgPiAqIHsKICBiYWNrZ3JvdW5kOiAjMDBhOGU2OwogIGNvbG9yOiAjZmZmOwp9Ci8qIERpc2FibGVkIHN0YXRlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstc3VibmF2ID4gLnVrLWRpc2FibGVkID4gKiB7CiAgYmFja2dyb3VuZDogbm9uZTsKICBjb2xvcjogIzk5OTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY3Vyc29yOiB0ZXh0Owp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IEJyZWFkY3J1bWIKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIDEuIFJlbW92ZSBkZWZhdWx0IGxpc3Qgc3R5bGUKICogMi4gUmVtb3ZlIHdoaXRlc3BhY2UgYmV0d2VlbiBjaGlsZCBlbGVtZW50cyB3aGVuIHVzaW5nIGBpbmxpbmUtYmxvY2tgCiAqLwoudWstYnJlYWRjcnVtYiB7CiAgLyogMSAqLwogIHBhZGRpbmc6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICAvKiAyICovCiAgZm9udC1zaXplOiAwLjAwMXB4Owp9Ci8qIEl0ZW1zCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBSZXNldCB3aGl0ZXNwYWNlIGhhY2sKICovCi51ay1icmVhZGNydW1iID4gbGkgewogIGZvbnQtc2l6ZTogMXJlbTsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9Ci51ay1icmVhZGNydW1iID4gbGksCi51ay1icmVhZGNydW1iID4gbGkgPiBhLAoudWstYnJlYWRjcnVtYiA+IGxpID4gc3BhbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci51ay1icmVhZGNydW1iID4gbGk6bnRoLWNoaWxkKG4rMik6YmVmb3JlIHsKICBjb250ZW50OiAiLyI7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbjogMCA4cHg7Cn0KLyoKICogRGlzYWJsZWQKICovCi51ay1icmVhZGNydW1iID4gbGk6bm90KC51ay1hY3RpdmUpID4gc3BhbiB7CiAgY29sb3I6ICM5OTk7Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogUGFnaW5hdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gUmVtb3ZlIGRlZmF1bHQgbGlzdCBzdHlsZQogKiAyLiBDZW50ZXIgcGFnaW5hdGlvbiBieSBkZWZhdWx0CiAqIDMuIFJlbW92ZSB3aGl0ZXNwYWNlIGJldHdlZW4gY2hpbGQgZWxlbWVudHMgd2hlbiB1c2luZyBgaW5saW5lLWJsb2NrYAogKi8KLnVrLXBhZ2luYXRpb24gewogIC8qIDEgKi8KICBwYWRkaW5nOiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgLyogMiAqLwogIHRleHQtYWxpZ246IGNlbnRlcjsKICAvKiAzICovCiAgZm9udC1zaXplOiAwLjAwMXB4Owp9Ci8qCiAqIE1pY3JvIGNsZWFyZml4CiAqIE5lZWRlZCBpZiBgdWstcGFnaW5hdGlvbi1wcmV2aW91c2Agb3IgYHVrLXBhZ2luYXRpb24tbmV4dGAgc3ViLW9iamVjdHMgYXJlIHVzZWQKICovCi51ay1wYWdpbmF0aW9uOmJlZm9yZSwKLnVrLXBhZ2luYXRpb246YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci51ay1wYWdpbmF0aW9uOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQovKiBJdGVtcwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gUmVzZXQgd2hpdGVzcGFjZSBoYWNrCiAqIDIuIFJlbW92ZSB0aGUgZ2FwIGF0IHRoZSBib3R0b20gb2YgaXQgY29udGFpbmVyCiAqLwoudWstcGFnaW5hdGlvbiA+IGxpIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgLyogMSAqLwogIGZvbnQtc2l6ZTogMXJlbTsKICAvKiAyICovCiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoudWstcGFnaW5hdGlvbiA+IGxpOm50aC1jaGlsZChuKzIpIHsKICBtYXJnaW4tbGVmdDogNXB4Owp9Ci8qCiAqIDEuIE1ha2VzIHBhZ2luYXRpb24gbW9yZSByb2J1c3QgYWdhaW5zdCBkaWZmZXJlbnQgYm94LXNpemluZyB1c2UKICogMi4gUmVzZXQgdGV4dC1hbGlnbiB0byBjZW50ZXIgaWYgYWxpZ25tZW50IG1vZGlmaWVyIGlzIHVzZWQKICovCi51ay1wYWdpbmF0aW9uID4gbGkgPiBhLAoudWstcGFnaW5hdGlvbiA+IGxpID4gc3BhbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1pbi13aWR0aDogMTZweDsKICBwYWRkaW5nOiAzcHggNXB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAvKiAxICovCiAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgLyogMiAqLwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQovKgogKiBMaW5rcwogKi8KLnVrLXBhZ2luYXRpb24gPiBsaSA+IGEgewogIGJhY2tncm91bmQ6ICNlZWU7CiAgY29sb3I6ICM0NDQ7Cn0KLyoKICogSG92ZXIKICogMS4gQXBwbHkgaG92ZXIgc3R5bGUgYWxzbyB0byBmb2N1cyBzdGF0ZQogKiAyLiBSZW1vdmUgZGVmYXVsdCBmb2N1cyBzdHlsZQogKi8KLnVrLXBhZ2luYXRpb24gPiBsaSA+IGE6aG92ZXIsCi51ay1wYWdpbmF0aW9uID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGNvbG9yOiAjNDQ0OwogIC8qIDIgKi8KICBvdXRsaW5lOiBub25lOwp9Ci8qIE9uQ2xpY2sgKi8KLnVrLXBhZ2luYXRpb24gPiBsaSA+IGE6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwogIGNvbG9yOiAjNDQ0Owp9Ci8qCiAqIEFjdGl2ZQogKi8KLnVrLXBhZ2luYXRpb24gPiAudWstYWN0aXZlID4gc3BhbiB7CiAgYmFja2dyb3VuZDogIzAwYThlNjsKICBjb2xvcjogI2ZmZjsKfQovKgogKiBEaXNhYmxlZAogKi8KLnVrLXBhZ2luYXRpb24gPiAudWstZGlzYWJsZWQgPiBzcGFuIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogIGNvbG9yOiAjOTk5Owp9Ci8qIFByZXZpb3VzIGFuZCBuZXh0IG5hdmlnYXRpb24KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1wYWdpbmF0aW9uLXByZXZpb3VzIHsKICBmbG9hdDogbGVmdDsKfQoudWstcGFnaW5hdGlvbi1uZXh0IHsKICBmbG9hdDogcmlnaHQ7Cn0KLyogQWxpZ25tZW50IG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXBhZ2luYXRpb24tbGVmdCB7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoudWstcGFnaW5hdGlvbi1yaWdodCB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogVGFiCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstdGFiIHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOwp9Ci8qCiAqIE1pY3JvIGNsZWFyZml4IG9uIHRoZSBkZWVwZXN0IGNvbnRhaW5lcgogKi8KLnVrLXRhYjpiZWZvcmUsCi51ay10YWI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci51ay10YWI6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci8qCiAqIEl0ZW1zCiAqIDEuIENyZWF0ZSBwb3NpdGlvbiBjb250ZXh0IGZvciBkcm9wZG93bnMKICovCi51ay10YWIgPiBsaSB7CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBmbG9hdDogbGVmdDsKICAvKiAxICovCiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci51ay10YWIgPiBsaSA+IGEgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDhweCAxMnB4IDhweCAxMnB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CiAgY29sb3I6ICMwN0Q7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci51ay10YWIgPiBsaTpudGgtY2hpbGQobisyKSA+IGEgewogIG1hcmdpbi1sZWZ0OiA1cHg7Cn0KLyoKICogSG92ZXIKICogMS4gQXBwbHkgaG92ZXIgc3R5bGUgYWxzbyB0byBmb2N1cyBzdGF0ZQogKiAyLiBBbHNvIGFwcGx5IGlmIGRyb3Bkb3duIGlzIG9wZW5lZAogKiAzLiBSZW1vdmUgZGVmYXVsdCBmb2N1cyBzdHlsZQogKi8KLnVrLXRhYiA+IGxpID4gYTpob3ZlciwKLnVrLXRhYiA+IGxpID4gYTpmb2N1cywKLnVrLXRhYiA+IGxpLnVrLW9wZW4gPiBhIHsKICBib3JkZXItY29sb3I6ICNmNWY1ZjU7CiAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICBjb2xvcjogIzA1OTsKICAvKiAyICovCiAgb3V0bGluZTogbm9uZTsKfQoudWstdGFiID4gbGk6bm90KC51ay1hY3RpdmUpID4gYTpob3ZlciwKLnVrLXRhYiA+IGxpOm5vdCgudWstYWN0aXZlKSA+IGE6Zm9jdXMsCi51ay10YWIgPiBsaS51ay1vcGVuOm5vdCgudWstYWN0aXZlKSA+IGEgewogIG1hcmdpbi1ib3R0b206IDFweDsKICBwYWRkaW5nLWJvdHRvbTogN3B4Owp9Ci8qIEFjdGl2ZSAqLwoudWstdGFiID4gbGkudWstYWN0aXZlID4gYSB7CiAgYm9yZGVyLWNvbG9yOiAjZGRkOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQ6ICNmZmY7CiAgY29sb3I6ICM0NDQ7Cn0KLyogRGlzYWJsZWQgKi8KLnVrLXRhYiA+IGxpLnVrLWRpc2FibGVkID4gYSB7CiAgY29sb3I6ICM5OTk7CiAgY3Vyc29yOiB0ZXh0Owp9Ci51ay10YWIgPiBsaS51ay1kaXNhYmxlZCA+IGE6aG92ZXIsCi51ay10YWIgPiBsaS51ay1kaXNhYmxlZCA+IGE6Zm9jdXMsCi51ay10YWIgPiBsaS51ay1kaXNhYmxlZC51ay1hY3RpdmUgPiBhIHsKICBiYWNrZ3JvdW5kOiBub25lOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLyogTW9kaWZpZXI6ICd0YWItZmxpcCcKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay10YWItZmxpcCA+IGxpIHsKICBmbG9hdDogcmlnaHQ7Cn0KLnVrLXRhYi1mbGlwID4gbGk6bnRoLWNoaWxkKG4rMikgPiBhIHsKICBtYXJnaW4tbGVmdDogMDsKICBtYXJnaW4tcmlnaHQ6IDVweDsKfQovKiBNb2RpZmllcjogJ3RhYi1yZXNwb25zaXZlJwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXRhYiA+IGxpLnVrLXRhYi1yZXNwb25zaXZlID4gYSB7CiAgbWFyZ2luLWxlZnQ6IDA7CiAgbWFyZ2luLXJpZ2h0OiAwOwp9Ci8qCiAqIEljb24KICovCi51ay10YWItcmVzcG9uc2l2ZSA+IGE6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYzlcMDBhMCI7CiAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwp9Ci8qIE1vZGlmaWVyOiAndGFiLWNlbnRlcicKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay10YWItY2VudGVyIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKfQoudWstdGFiLWNlbnRlci1ib3R0b20gewogIGJvcmRlci1ib3R0b206IG5vbmU7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7Cn0KLnVrLXRhYi1jZW50ZXI6YmVmb3JlLAoudWstdGFiLWNlbnRlcjphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogdGFibGU7Cn0KLnVrLXRhYi1jZW50ZXI6YWZ0ZXIgewogIGNsZWFyOiBib3RoOwp9Ci8qCiAqIDEuIFVzaW5nIGByaWdodGAgdG8gcHJldmVudCB2ZXJ0aWNhbCBzY3JvbGxiYXIgY2F1c2VkIGJ5IGNlbnRlcmluZyBpZiB0byBtYW55IHRhYnMKICovCi51ay10YWItY2VudGVyIC51ay10YWIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICByaWdodDogNTAlOwogIGJvcmRlcjogbm9uZTsKICBmbG9hdDogcmlnaHQ7Cn0KLnVrLXRhYi1jZW50ZXIgLnVrLXRhYiA+IGxpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcmlnaHQ6IC01MCU7Cn0KLnVrLXRhYi1jZW50ZXIgLnVrLXRhYiA+IGxpID4gYSB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci8qIE1vZGlmaWVyOiAndGFiLWJvdHRvbScKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay10YWItYm90dG9tIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKICBib3JkZXItYm90dG9tOiBub25lOwp9Ci51ay10YWItYm90dG9tID4gbGkgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoudWstdGFiLWJvdHRvbSA+IGxpID4gYSB7CiAgcGFkZGluZy10b3A6IDhweDsKICBwYWRkaW5nLWJvdHRvbTogOHB4OwogIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKICBib3JkZXItdG9wLXdpZHRoOiAwOwp9Ci51ay10YWItYm90dG9tID4gbGk6bm90KC51ay1hY3RpdmUpID4gYTpob3ZlciwKLnVrLXRhYi1ib3R0b20gPiBsaTpub3QoLnVrLWFjdGl2ZSkgPiBhOmZvY3VzLAoudWstdGFiLWJvdHRvbSA+IGxpLnVrLW9wZW46bm90KC51ay1hY3RpdmUpID4gYSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBtYXJnaW4tdG9wOiAxcHg7CiAgcGFkZGluZy1ib3R0b206IDhweDsKICBwYWRkaW5nLXRvcDogN3B4Owp9Ci51ay10YWItYm90dG9tID4gbGkudWstYWN0aXZlID4gYSB7CiAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2RkZDsKfQovKiBNb2RpZmllcjogJ3RhYi1ncmlkJwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gQ3JlYXRlIHBvc2l0aW9uIGNvbnRleHQgdG8gcHJldmVudCBoaWRkZW4gYm9yZGVyIGJlY2F1c2Ugb2YgbmVnYXRpdmUgYHotaW5kZXhgCiAqLwoudWstdGFiLWdyaWQgewogIG1hcmdpbi1sZWZ0OiAtNXB4OwogIGJvcmRlci1ib3R0b206IG5vbmU7CiAgLyogMSAqLwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAwOwp9Ci51ay10YWItZ3JpZDpiZWZvcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiA1cHg7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAtMXB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwogIC8qIDEgKi8KICB6LWluZGV4OiAtMTsKfQoudWstdGFiLWdyaWQgPiBsaTpmaXJzdC1jaGlsZCA+IGEgewogIG1hcmdpbi1sZWZ0OiA1cHg7Cn0KLnVrLXRhYi1ncmlkID4gbGkgPiBhIHsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLyoKICogSWYgYHVrLXRhYi1ib3R0b21gCiAqLwoudWstdGFiLWdyaWQudWstdGFiLWJvdHRvbSB7CiAgYm9yZGVyLXRvcDogbm9uZTsKfQoudWstdGFiLWdyaWQudWstdGFiLWJvdHRvbTpiZWZvcmUgewogIHRvcDogLTFweDsKICBib3R0b206IGF1dG87Cn0KLyogTW9kaWZpZXI6ICd0YWItbGVmdCcsICd0YWItcmlnaHQnCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKiBUYWJsZXQgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAudWstdGFiLWxlZnQsCiAgLnVrLXRhYi1yaWdodCB7CiAgICBib3JkZXItYm90dG9tOiBub25lOwogIH0KICAudWstdGFiLWxlZnQgPiBsaSwKICAudWstdGFiLXJpZ2h0ID4gbGkgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIGZsb2F0OiBub25lOwogIH0KICAudWstdGFiLWxlZnQgPiBsaSA+IGEsCiAgLnVrLXRhYi1yaWdodCA+IGxpID4gYSB7CiAgICBwYWRkaW5nLXRvcDogOHB4OwogICAgcGFkZGluZy1ib3R0b206IDhweDsKICB9CiAgLnVrLXRhYi1sZWZ0ID4gbGk6bnRoLWNoaWxkKG4rMikgPiBhLAogIC51ay10YWItcmlnaHQgPiBsaTpudGgtY2hpbGQobisyKSA+IGEgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgfQogIC51ay10YWItbGVmdCA+IGxpLnVrLWFjdGl2ZSA+IGEsCiAgLnVrLXRhYi1yaWdodCA+IGxpLnVrLWFjdGl2ZSA+IGEgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkOwogIH0KICAvKgogICAgICogTW9kaWZpZXI6ICd0YWItbGVmdCcKICAgICAqLwogIC51ay10YWItbGVmdCB7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkOwogIH0KICAudWstdGFiLWxlZnQgPiBsaSB7CiAgICBtYXJnaW4tcmlnaHQ6IC0xcHg7CiAgfQogIC51ay10YWItbGVmdCA+IGxpID4gYSB7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7CiAgfQogIC51ay10YWItbGVmdCA+IGxpOm5vdCgudWstYWN0aXZlKSA+IGE6aG92ZXIsCiAgLnVrLXRhYi1sZWZ0ID4gbGk6bm90KC51ay1hY3RpdmUpID4gYTpmb2N1cyB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgbWFyZ2luLXJpZ2h0OiAxcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogOHB4OwogICAgcGFkZGluZy1yaWdodDogMTFweDsKICB9CiAgLnVrLXRhYi1sZWZ0ID4gbGkudWstYWN0aXZlID4gYSB7CiAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KICAvKgogICAgICogTW9kaWZpZXI6ICd0YWItcmlnaHQnCiAgICAgKi8KICAudWstdGFiLXJpZ2h0IHsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDsKICB9CiAgLnVrLXRhYi1yaWdodCA+IGxpIHsKICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogIH0KICAudWstdGFiLXJpZ2h0ID4gbGkgPiBhIHsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwOwogIH0KICAudWstdGFiLXJpZ2h0ID4gbGk6bm90KC51ay1hY3RpdmUpID4gYTpob3ZlciwKICAudWstdGFiLXJpZ2h0ID4gbGk6bm90KC51ay1hY3RpdmUpID4gYTpmb2N1cyB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgbWFyZ2luLWxlZnQ6IDFweDsKICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDExcHg7CiAgfQogIC51ay10YWItcmlnaHQgPiBsaS51ay1hY3RpdmUgPiBhIHsKICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDsKICB9Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogVGh1bWJuYXYKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIDEuIEd1dHRlcgogKiAyLiBSZW1vdmUgZGVmYXVsdCBsaXN0IHN0eWxlCiAqLwoudWstdGh1bWJuYXYgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgZmxleC13cmFwOiB3cmFwOwogIC8qIDEgKi8KICBtYXJnaW4tbGVmdDogLTEwcHg7CiAgbWFyZ2luLXRvcDogLTEwcHg7CiAgLyogMiAqLwogIHBhZGRpbmc6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQovKgogKiAxLiBTcGFjZSBpcyBhbGxvY2F0ZWQgc29sZWx5IGJhc2VkIG9uIGNvbnRlbnQgZGltZW5zaW9ucwogKiAyLiBIb3Jpem9udGFsIGd1dHRlciBpcyB1c2luZyBgcGFkZGluZ2Agc28gYHVrLXdpZHRoLSpgIGNsYXNzZXMgY2FuIGJlIGFwcGxpZWQKICovCi51ay10aHVtYm5hdiA+ICogewogIC8qIDEgKi8KICAtbXMtZmxleDogbm9uZTsKICAtd2Via2l0LWZsZXg6IG5vbmU7CiAgZmxleDogbm9uZTsKICAvKiAyICovCiAgcGFkZGluZy1sZWZ0OiAxMHB4OwogIG1hcmdpbi10b3A6IDEwcHg7Cn0KLyoKICogREVQUkVDQVRFRCBJRTkgU3VwcG9ydAogKi8KLnVrLXRodW1ibmF2OmJlZm9yZSwKLnVrLXRodW1ibmF2OmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci51ay10aHVtYm5hdjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLnVrLXRodW1ibmF2ID4gKiB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLyogSXRlbXMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay10aHVtYm5hdiA+ICogPiAqIHsKICBkaXNwbGF5OiBibG9jazsKICBiYWNrZ3JvdW5kOiAjZmZmOwp9Ci51ay10aHVtYm5hdiA+ICogPiAqID4gaW1nIHsKICBvcGFjaXR5OiAwLjc7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKfQovKgogKiBIb3ZlcgogKi8KLnVrLXRodW1ibmF2ID4gKiA+IDpob3ZlciA+IGltZywKLnVrLXRodW1ibmF2ID4gKiA+IDpmb2N1cyA+IGltZyB7CiAgb3BhY2l0eTogMTsKfQovKgogKiBBY3RpdmUKICovCi51ay10aHVtYm5hdiA+IC51ay1hY3RpdmUgPiAqID4gaW1nIHsKICBvcGFjaXR5OiAxOwp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IExpc3QKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1saXN0IHsKICBwYWRkaW5nOiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLyoKICogTWljcm8gY2xlYXJmaXggdG8gbWFrZSBsaXN0IG1vcmUgcm9idXN0CiAqLwoudWstbGlzdCA+IGxpOmJlZm9yZSwKLnVrLWxpc3QgPiBsaTphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogdGFibGU7Cn0KLnVrLWxpc3QgPiBsaTphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLyoKICogUmVtb3ZlIG1hcmdpbiBmcm9tIHRoZSBsYXN0LWNoaWxkCiAqLwoudWstbGlzdCA+IGxpID4gOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLyoKICogTmVzdGVkIGxpc3RzCiAqLwoudWstbGlzdCB1bCB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci8qIE1vZGlmaWVyOiBgdWstbGlzdC1saW5lYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWxpc3QtbGluZSA+IGxpOm50aC1jaGlsZChuKzIpIHsKICBtYXJnaW4tdG9wOiA1cHg7CiAgcGFkZGluZy10b3A6IDVweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsKfQovKiBNb2RpZmllcjogYHVrLWxpc3Qtc3RyaXBlZGAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1saXN0LXN0cmlwZWQgPiBsaSB7CiAgcGFkZGluZzogNXB4IDVweDsKfQoudWstbGlzdC1zdHJpcGVkID4gbGk6bnRoLW9mLXR5cGUob2RkKSB7CiAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKfQovKiBNb2RpZmllcjogYHVrLWxpc3Qtc3BhY2VgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstbGlzdC1zcGFjZSA+IGxpOm50aC1jaGlsZChuKzIpIHsKICBtYXJnaW4tdG9wOiAxMHB4Owp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IERlc2NyaXB0aW9uIGxpc3QKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qIE1vZGlmaWVyOiBgdWstZGVzY3JpcHRpb24tbGlzdC1ob3Jpem9udGFsYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyogVGFibGV0IGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLnVrLWRlc2NyaXB0aW9uLWxpc3QtaG9yaXpvbnRhbCB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogIH0KICAudWstZGVzY3JpcHRpb24tbGlzdC1ob3Jpem9udGFsID4gZHQgewogICAgd2lkdGg6IDE2MHB4OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBjbGVhcjogYm90aDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgfQogIC51ay1kZXNjcmlwdGlvbi1saXN0LWhvcml6b250YWwgPiBkZCB7CiAgICBtYXJnaW4tbGVmdDogMTgwcHg7CiAgfQp9Ci8qIE1vZGlmaWVyOiBgdWstZGVzY3JpcHRpb24tbGlzdC1saW5lYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWRlc2NyaXB0aW9uLWxpc3QtbGluZSA+IGR0IHsKICBmb250LXdlaWdodDogbm9ybWFsOwp9Ci51ay1kZXNjcmlwdGlvbi1saXN0LWxpbmUgPiBkdDpudGgtY2hpbGQobisyKSB7CiAgbWFyZ2luLXRvcDogNXB4OwogIHBhZGRpbmctdG9wOiA1cHg7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7Cn0KLnVrLWRlc2NyaXB0aW9uLWxpc3QtbGluZSA+IGRkIHsKICBjb2xvcjogIzk5OTsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBUYWJsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLgogKiAyLiBCbG9jayBlbGVtZW50IGJlaGF2aW9yCiAqIDMuIFN0eWxlCiAqLwoudWstdGFibGUgewogIC8qIDEgKi8KICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogIGJvcmRlci1zcGFjaW5nOiAwOwogIC8qIDIgKi8KICB3aWR0aDogMTAwJTsKICAvKiAzICovCiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQovKgogKiBBZGQgbWFyZ2luIGlmIGFkamFjZW50IGVsZW1lbnQKICovCiogKyAudWstdGFibGUgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLnVrLXRhYmxlIHRoLAoudWstdGFibGUgdGQgewogIHBhZGRpbmc6IDhweCA4cHg7Cn0KLyoKICogU2V0IGFsaWdubWVudAogKi8KLnVrLXRhYmxlIHRoIHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci51ay10YWJsZSB0ZCB7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoudWstdGFibGUgdGhlYWQgdGggewogIHZlcnRpY2FsLWFsaWduOiBib3R0b207Cn0KLyoKICogQ2FwdGlvbiBhbmQgZm9vdGVyCiAqLwoudWstdGFibGUgY2FwdGlvbiwKLnVrLXRhYmxlIHRmb290IHsKICBmb250LXNpemU6IDEycHg7CiAgZm9udC1zdHlsZTogaXRhbGljOwp9Ci51ay10YWJsZSBjYXB0aW9uIHsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGNvbG9yOiAjOTk5Owp9Ci8qCiAqIEFjdGl2ZSBTdGF0ZQogKi8KLnVrLXRhYmxlIHRib2R5IHRyLnVrLWFjdGl2ZSB7CiAgYmFja2dyb3VuZDogI0VFRTsKfQovKiBTdWItbW9kaWZpZXI6IGB1ay10YWJsZS1taWRkbGVgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstdGFibGUtbWlkZGxlLAoudWstdGFibGUtbWlkZGxlIHRkIHsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7Cn0KLyogTW9kaWZpZXI6IGB1ay10YWJsZS1zdHJpcGVkYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7CiAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKfQovKiBNb2RpZmllcjogYHVrLXRhYmxlLWNvbmRlbnNlZGAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay10YWJsZS1jb25kZW5zZWQgdGQgewogIHBhZGRpbmc6IDRweCA4cHg7Cn0KLyogTW9kaWZpZXI6IGB1ay10YWJsZS1ob3ZlcmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay10YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciB7CiAgYmFja2dyb3VuZDogI0VFRTsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBGb3JtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBEZWZpbmUgY29uc2lzdGVudCBib3ggc2l6aW5nLgogKiAgICBEZWZhdWx0IGlzIGBjb250ZW50LWJveGAgd2l0aCBmb2xsb3dpbmcgZXhjZXB0aW9ucyBzZXQgdG8gYGJvcmRlci1ib3hgCiAqICAgIGBidXR0b25gLCBgc2VsZWN0YCwgYGlucHV0W3R5cGU9ImNoZWNrYm94Il1gIGFuZCBgaW5wdXRbdHlwZT0icmFkaW8iXWAKICogICAgYGlucHV0W3R5cGU9InNlYXJjaCJdYCBpbiBDaHJvbWUsIFNhZmFyaSBhbmQgT3BlcmEKICogICAgYGlucHV0W3R5cGU9ImNvbG9yIl1gIGluIEZpcmVmb3gKICogMi4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94L0lFIGFuZCBDaHJvbWUvU2FmYXJpL09wZXJhLgogKiAzLiBSZW1vdmUgYGJvcmRlci1yYWRpdXNgIGluIGlPUy4KICogNC4gQ29ycmVjdCBgZm9udGAgcHJvcGVydGllcyBhbmQgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkLgogKi8KLnVrLWZvcm0gaW5wdXQsCi51ay1mb3JtIHNlbGVjdCwKLnVrLWZvcm0gdGV4dGFyZWEgewogIC8qIDEgKi8KICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC8qIDIgKi8KICBtYXJnaW46IDA7CiAgLyogMyAqLwogIGJvcmRlci1yYWRpdXM6IDA7CiAgLyogNCAqLwogIGZvbnQ6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLyoKICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSB3aGljaCBpcyBvbmx5IGluaGVyaXQgaW4gRmlyZWZveAogKi8KLnVrLWZvcm0gc2VsZWN0IHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQovKgogKiAxLiBDb3JyZWN0IGBmb250YCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuCiAqIDIuIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgYW5kIHVzZSBgYm9sZGAgaW5zdGVhZC4KICogTk9URTogQm90aCBkZWNsYXJhdGlvbnMgZG9uJ3Qgd29yayBpbiBDaHJvbWUsIFNhZmFyaSBhbmQgT3BlcmEuCiAqLwoudWstZm9ybSBvcHRncm91cCB7CiAgLyogMSAqLwogIGZvbnQ6IGluaGVyaXQ7CiAgLyogMiAqLwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci8qCiAqIFJlbW92ZXMgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuCiAqLwoudWstZm9ybSBpbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7Cn0KLyoKICogUmVtb3ZlcyBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuCiAqLwoudWstZm9ybSBpbnB1dFt0eXBlPSJjaGVja2JveCJdLAoudWstZm9ybSBpbnB1dFt0eXBlPSJyYWRpbyJdIHsKICBwYWRkaW5nOiAwOwp9Ci8qCiAqIEltcHJvdmVzIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBmb3IgY2xpY2thYmxlIGVsZW1lbnRzCiAqLwoudWstZm9ybSBpbnB1dFt0eXBlPSJjaGVja2JveCJdOm5vdCg6ZGlzYWJsZWQpLAoudWstZm9ybSBpbnB1dFt0eXBlPSJyYWRpbyJdOm5vdCg6ZGlzYWJsZWQpIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLyoKICogUmVtb3ZlIGRlZmF1bHQgc3R5bGUgaW4gaU9TLgogKi8KLnVrLWZvcm0gdGV4dGFyZWEsCi51ay1mb3JtIGlucHV0Om5vdChbdHlwZV0pLAoudWstZm9ybSBpbnB1dFt0eXBlPSJ0ZXh0Il0sCi51ay1mb3JtIGlucHV0W3R5cGU9InBhc3N3b3JkIl0sCi51ay1mb3JtIGlucHV0W3R5cGU9ImVtYWlsIl0sCi51ay1mb3JtIGlucHV0W3R5cGU9InVybCJdLAoudWstZm9ybSBpbnB1dFt0eXBlPSJzZWFyY2giXSwKLnVrLWZvcm0gaW5wdXRbdHlwZT0idGVsIl0sCi51ay1mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdLAoudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRldGltZSJdIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KLyoKICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIENocm9tZSwgU2FmYXJpIGFuZCBPcGVyYSBvbiBPUyBYLgogKi8KLnVrLWZvcm0gaW5wdXRbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sCi51ay1mb3JtIGlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KLyoKICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW4KICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGUKICogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLgogKi8KLnVrLWZvcm0gaW5wdXRbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sCi51ay1mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKICBoZWlnaHQ6IGF1dG87Cn0KLyoKICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLgogKi8KLnVrLWZvcm0gZmllbGRzZXQgewogIGJvcmRlcjogbm9uZTsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKfQovKgogKiAxLiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLgogKiAyLiBJbXByb3ZlIHJlYWRhYmlsaXR5IGFuZCBhbGlnbm1lbnQgaW4gYWxsIGJyb3dzZXJzLgogKi8KLnVrLWZvcm0gdGV4dGFyZWEgewogIC8qIDEgKi8KICBvdmVyZmxvdzogYXV0bzsKICAvKiAyICovCiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQovKgogKiBSZW1vdmVzIHBsYWNlaG9sZGVyIHRyYW5zcGFyZW5jeSBpbiBGaXJlZm94LgogKi8KLnVrLWZvcm0gOjotbW96LXBsYWNlaG9sZGVyIHsKICBvcGFjaXR5OiAxOwp9Ci8qCiAqIFJlbW92ZXMgYGJveC1zaGFkb3dgIGZvciBpbnZhbGlkIGNvbnRyb2xzIGluIEZpcmVmb3guCiAqLwoudWstZm9ybSA6aW52YWxpZCB7CiAgYm94LXNoYWRvdzogbm9uZTsKfQovKgogKiBWZXJ0aWNhbCBhbGlnbm1lbnQKICovCi51ay1mb3JtIGlucHV0Om5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKSwKLnVrLWZvcm0gc2VsZWN0IHsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci8qIFN0eWxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBSZW1vdmUgbWFyZ2luIGZyb20gdGhlIGxhc3QtY2hpbGQKICovCi51ay1mb3JtID4gOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLyoKICogQ29udHJvbHMKICogRXhjZXB0IGZvciBgcmFuZ2VgLCBgcmFkaW9gLCBgY2hlY2tib3hgLCBgZmlsZWAsIGBzdWJtaXRgLCBgcmVzZXRgLCBgYnV0dG9uYCBhbmQgYGltYWdlYAogKiAxLiBNdXN0IGJlIGBoZWlnaHRgIGJlY2F1c2UgYG1pbi1oZWlnaHRgIGlzIG5vdCB3b3JraW5nIGluIE9TWAogKiAyLiBSZXNwb25zaXZlbmVzczogU2V0cyBhIG1heGltdW0gd2lkdGggcmVsYXRpdmUgdG8gdGhlIHBhcmVudCB0byBzY2FsZSBvbiBuYXJyb3dlciB2aWV3cG9ydHMKICogMy4gVmVydGljYWwgYHBhZGRpbmdgIG5lZWRlZCBmb3IgYHNlbGVjdGAgZWxlbWVudHMgaW4gRmlyZWZveAogKiA0LiBTdHlsZQogKi8KLnVrLWZvcm0gc2VsZWN0LAoudWstZm9ybSB0ZXh0YXJlYSwKLnVrLWZvcm0gaW5wdXQ6bm90KFt0eXBlXSksCi51ay1mb3JtIGlucHV0W3R5cGU9InRleHQiXSwKLnVrLWZvcm0gaW5wdXRbdHlwZT0icGFzc3dvcmQiXSwKLnVrLWZvcm0gaW5wdXRbdHlwZT0iZGF0ZXRpbWUiXSwKLnVrLWZvcm0gaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSwKLnVrLWZvcm0gaW5wdXRbdHlwZT0iZGF0ZSJdLAoudWstZm9ybSBpbnB1dFt0eXBlPSJtb250aCJdLAoudWstZm9ybSBpbnB1dFt0eXBlPSJ0aW1lIl0sCi51ay1mb3JtIGlucHV0W3R5cGU9IndlZWsiXSwKLnVrLWZvcm0gaW5wdXRbdHlwZT0ibnVtYmVyIl0sCi51ay1mb3JtIGlucHV0W3R5cGU9ImVtYWlsIl0sCi51ay1mb3JtIGlucHV0W3R5cGU9InVybCJdLAoudWstZm9ybSBpbnB1dFt0eXBlPSJzZWFyY2giXSwKLnVrLWZvcm0gaW5wdXRbdHlwZT0idGVsIl0sCi51ay1mb3JtIGlucHV0W3R5cGU9ImNvbG9yIl0gewogIC8qIDEgKi8KICBoZWlnaHQ6IDMwcHg7CiAgLyogMiAqLwogIG1heC13aWR0aDogMTAwJTsKICAvKiAzICovCiAgcGFkZGluZzogNHB4IDZweDsKICAvKiA0ICovCiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGNvbG9yOiAjNDQ0OwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnMgbGluZWFyOwogIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYm9yZGVyLCBiYWNrZ3JvdW5kLCBjb2xvciwgYm94LXNoYWRvdywgcGFkZGluZzsKICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXI7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYm9yZGVyLCBiYWNrZ3JvdW5kLCBjb2xvciwgYm94LXNoYWRvdywgcGFkZGluZzsKfQoudWstZm9ybSBzZWxlY3Q6Zm9jdXMsCi51ay1mb3JtIHRleHRhcmVhOmZvY3VzLAoudWstZm9ybSBpbnB1dDpub3QoW3R5cGVdKTpmb2N1cywKLnVrLWZvcm0gaW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLAoudWstZm9ybSBpbnB1dFt0eXBlPSJwYXNzd29yZCJdOmZvY3VzLAoudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRldGltZSJdOmZvY3VzLAoudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdOmZvY3VzLAoudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRlIl06Zm9jdXMsCi51ay1mb3JtIGlucHV0W3R5cGU9Im1vbnRoIl06Zm9jdXMsCi51ay1mb3JtIGlucHV0W3R5cGU9InRpbWUiXTpmb2N1cywKLnVrLWZvcm0gaW5wdXRbdHlwZT0id2VlayJdOmZvY3VzLAoudWstZm9ybSBpbnB1dFt0eXBlPSJudW1iZXIiXTpmb2N1cywKLnVrLWZvcm0gaW5wdXRbdHlwZT0iZW1haWwiXTpmb2N1cywKLnVrLWZvcm0gaW5wdXRbdHlwZT0idXJsIl06Zm9jdXMsCi51ay1mb3JtIGlucHV0W3R5cGU9InNlYXJjaCJdOmZvY3VzLAoudWstZm9ybSBpbnB1dFt0eXBlPSJ0ZWwiXTpmb2N1cywKLnVrLWZvcm0gaW5wdXRbdHlwZT0iY29sb3IiXTpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjOTliYWNhOwogIG91dGxpbmU6IDA7CiAgYmFja2dyb3VuZDogI2Y1ZmJmZTsKICBjb2xvcjogIzQ0NDsKfQoudWstZm9ybSBzZWxlY3Q6ZGlzYWJsZWQsCi51ay1mb3JtIHRleHRhcmVhOmRpc2FibGVkLAoudWstZm9ybSBpbnB1dDpub3QoW3R5cGVdKTpkaXNhYmxlZCwKLnVrLWZvcm0gaW5wdXRbdHlwZT0idGV4dCJdOmRpc2FibGVkLAoudWstZm9ybSBpbnB1dFt0eXBlPSJwYXNzd29yZCJdOmRpc2FibGVkLAoudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRldGltZSJdOmRpc2FibGVkLAoudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdOmRpc2FibGVkLAoudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRlIl06ZGlzYWJsZWQsCi51ay1mb3JtIGlucHV0W3R5cGU9Im1vbnRoIl06ZGlzYWJsZWQsCi51ay1mb3JtIGlucHV0W3R5cGU9InRpbWUiXTpkaXNhYmxlZCwKLnVrLWZvcm0gaW5wdXRbdHlwZT0id2VlayJdOmRpc2FibGVkLAoudWstZm9ybSBpbnB1dFt0eXBlPSJudW1iZXIiXTpkaXNhYmxlZCwKLnVrLWZvcm0gaW5wdXRbdHlwZT0iZW1haWwiXTpkaXNhYmxlZCwKLnVrLWZvcm0gaW5wdXRbdHlwZT0idXJsIl06ZGlzYWJsZWQsCi51ay1mb3JtIGlucHV0W3R5cGU9InNlYXJjaCJdOmRpc2FibGVkLAoudWstZm9ybSBpbnB1dFt0eXBlPSJ0ZWwiXTpkaXNhYmxlZCwKLnVrLWZvcm0gaW5wdXRbdHlwZT0iY29sb3IiXTpkaXNhYmxlZCB7CiAgYm9yZGVyLWNvbG9yOiAjZGRkOwogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgY29sb3I6ICM5OTk7Cn0KLyoKICogUGxhY2Vob2xkZXIKICovCi51ay1mb3JtIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7Cn0KLnVrLWZvcm0gOjotbW96LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzk5OTsKfQoudWstZm9ybSA6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5Owp9Ci51ay1mb3JtIDpkaXNhYmxlZDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7Cn0KLnVrLWZvcm0gOmRpc2FibGVkOjotbW96LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzk5OTsKfQoudWstZm9ybSA6ZGlzYWJsZWQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5Owp9Ci8qCiAqIExlZ2VuZAogKiAxLiBCZWhhdmUgbGlrZSBibG9jayBlbGVtZW50CiAqIDIuIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS8xMC8xMS4KICogMy4gUmVtb3ZlIHBhZGRpbmcKICogNC4gYG1hcmdpbi1ib3R0b21gIGlzIG5vdCB3b3JraW5nIGluIFNhZmFyaSBhbmQgT3BlcmEuCiAqICAgIFVzaW5nIGBwYWRkaW5nYCBhbmQgOmFmdGVyIGluc3RlYWQgdG8gY3JlYXRlIHRoZSBib3JkZXIKICogNS4gU3R5bGUKICovCi51ay1mb3JtIGxlZ2VuZCB7CiAgLyogMSAqLwogIHdpZHRoOiAxMDAlOwogIC8qIDIgKi8KICBib3JkZXI6IDA7CiAgLyogMyAqLwogIHBhZGRpbmc6IDA7CiAgLyogNCAqLwogIHBhZGRpbmctYm90dG9tOiAxNXB4OwogIC8qIDUgKi8KICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KLyoKICogMS4gRml4ZXMgSUU5CiAqLwoudWstZm9ybSBsZWdlbmQ6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IGJsb2NrOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOwogIC8qIDEgKi8KICB3aWR0aDogMTAwJTsKfQovKiBTaXplIG1vZGlmaWVycwogKiBIaWdoZXIgc3BlY2lmaWNpdHkgbmVlZGVkIHRvIG92ZXJyaWRlIGRlZmF1bHRzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpzZWxlY3QudWstZm9ybS1zbWFsbCwKdGV4dGFyZWEudWstZm9ybS1zbWFsbCwKaW5wdXRbdHlwZV0udWstZm9ybS1zbWFsbCwKaW5wdXQ6bm90KFt0eXBlXSkudWstZm9ybS1zbWFsbCB7CiAgaGVpZ2h0OiAyNXB4OwogIHBhZGRpbmc6IDNweCAzcHg7CiAgZm9udC1zaXplOiAxMnB4Owp9CnNlbGVjdC51ay1mb3JtLWxhcmdlLAp0ZXh0YXJlYS51ay1mb3JtLWxhcmdlLAppbnB1dFt0eXBlXS51ay1mb3JtLWxhcmdlLAppbnB1dDpub3QoW3R5cGVdKS51ay1mb3JtLWxhcmdlIHsKICBoZWlnaHQ6IDQwcHg7CiAgcGFkZGluZzogOHB4IDZweDsKICBmb250LXNpemU6IDE2cHg7Cn0KLyogUmVzZXQgaGVpZ2h0CiAqIE11c3QgYmUgYWZ0ZXIgc2l6ZSBtb2RpZmllcnMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1mb3JtIHRleHRhcmVhLAoudWstZm9ybSBzZWxlY3RbbXVsdGlwbGVdLAoudWstZm9ybSBzZWxlY3Rbc2l6ZV0gewogIGhlaWdodDogYXV0bzsKfQovKiBWYWxpZGF0aW9uIHN0YXRlcwogKiBVc2luZyAhaW1wb3J0YW50IHRvIGtlZXAgdGhlIHNlbGVjdG9yIHNpbXBsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogRXJyb3Igc3RhdGUKICovCi51ay1mb3JtLWRhbmdlciB7CiAgYm9yZGVyLWNvbG9yOiAjZGM4ZDk5ICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogI2ZmZjdmOCAhaW1wb3J0YW50OwogIGNvbG9yOiAjZDg1MDMwICFpbXBvcnRhbnQ7Cn0KLyoKICogU3VjY2VzcyBzdGF0ZQogKi8KLnVrLWZvcm0tc3VjY2VzcyB7CiAgYm9yZGVyLWNvbG9yOiAjOGVjNzNiICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogI2ZhZmZmMiAhaW1wb3J0YW50OwogIGNvbG9yOiAjNjU5ZjEzICFpbXBvcnRhbnQ7Cn0KLyogU3R5bGUgbW9kaWZpZXJzCiAqIFVzaW5nICFpbXBvcnRhbnQgdG8ga2VlcCB0aGUgc2VsZWN0b3Igc2ltcGxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBCbGFuayBmb3JtCiAqLwoudWstZm9ybS1ibGFuayB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogIGJvcmRlci1zdHlsZTogZGFzaGVkICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50Owp9Ci51ay1mb3JtLWJsYW5rOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICNkZGQgIWltcG9ydGFudDsKfQovKiBTaXplIHN1Yi1tb2RpZmllcnMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIEZpeGVkIHdpZHRocwogKiBEaWZmZXJlbnQgd2lkdGhzIGZvciBtaW5pIHNpemVkIGBpbnB1dGAgYW5kIGBzZWxlY3RgIGVsZW1lbnRzCiAqLwppbnB1dC51ay1mb3JtLXdpZHRoLW1pbmkgewogIHdpZHRoOiA0MHB4Owp9CnNlbGVjdC51ay1mb3JtLXdpZHRoLW1pbmkgewogIHdpZHRoOiA2NXB4Owp9Ci51ay1mb3JtLXdpZHRoLXNtYWxsIHsKICB3aWR0aDogMTMwcHg7Cn0KLnVrLWZvcm0td2lkdGgtbWVkaXVtIHsKICB3aWR0aDogMjAwcHg7Cn0KLnVrLWZvcm0td2lkdGgtbGFyZ2UgewogIHdpZHRoOiA1MDBweDsKfQovKiBTdWItb2JqZWN0czogYHVrLWZvcm0tcm93YAogKiBHcm91cHMgbGFiZWxzIGFuZCBjb250cm9scyBpbiByb3dzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBNaWNybyBjbGVhcmZpeAogKiBOZWVkZWQgZm9yIGB1ay1mb3JtLWhvcml6b250YWxgIG1vZGlmaWVyCiAqLwoudWstZm9ybS1yb3c6YmVmb3JlLAoudWstZm9ybS1yb3c6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci51ay1mb3JtLXJvdzphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLyoKICogVmVydGljYWwgZ3V0dGVyCiAqLwoudWstZm9ybS1yb3cgKyAudWstZm9ybS1yb3cgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLyogSGVscCB0ZXh0CiAqIFN1Yi1vYmplY3Q6IGB1ay1mb3JtLWhlbHAtaW5saW5lYCwgYHVrLWZvcm0taGVscC1ibG9ja2AKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1mb3JtLWhlbHAtaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luOiAwIDAgMCAxMHB4Owp9Ci51ay1mb3JtLWhlbHAtYmxvY2sgewogIG1hcmdpbjogNXB4IDAgMCAwOwp9Ci8qIENvbnRyb2xzIGNvbnRlbnQKICogU3ViLW9iamVjdDogYHVrLWZvcm0tY29udHJvbHNgLCBgdWstZm9ybS1jb250cm9scy1jb25kZW5zZWRgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBSZW1vdmUgbWFyZ2lucwogKi8KLnVrLWZvcm0tY29udHJvbHMgPiA6Zmlyc3QtY2hpbGQgewogIG1hcmdpbi10b3A6IDA7Cn0KLnVrLWZvcm0tY29udHJvbHMgPiA6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQovKgogKiBHcm91cCBjb250cm9scyBhbmQgdGV4dCBpbnRvIGJsb2NrcyB3aXRoIGEgc21hbGwgc3BhY2luZyBiZXR3ZWVuIGJsb2NrcwogKi8KLnVrLWZvcm0tY29udHJvbHMtY29uZGVuc2VkIHsKICBtYXJnaW46IDVweCAwOwp9Ci8qIE1vZGlmaWVyOiBgdWstZm9ybS1zdGFja2VkYAogKiBSZXF1aXJlcyBzdWItb2JqZWN0OiBgdWstZm9ybS1sYWJlbGAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1mb3JtLXN0YWNrZWQgLnVrLWZvcm0tbGFiZWwgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi1ib3R0b206IDVweDsKICBmb250LXdlaWdodDogYm9sZDsKfQovKiBNb2RpZmllcjogYHVrLWZvcm0taG9yaXpvbnRhbGAKICogUmVxdWlyZXMgc3ViLW9iamVjdHM6IGB1ay1mb3JtLWxhYmVsYCwgYHVrLWZvcm0tY29udHJvbHNgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKiBUYWJsZXQgcG9ydHJhaXQgYW5kIHNtYWxsZXIgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDk1OXB4KSB7CiAgLyogQmVoYXZlIGxpa2UgYHVrLWZvcm0tc3RhY2tlZGAgKi8KICAudWstZm9ybS1ob3Jpem9udGFsIC51ay1mb3JtLWxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgfQp9Ci8qIERlc2t0b3AgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHsKICAudWstZm9ybS1ob3Jpem9udGFsIC51ay1mb3JtLWxhYmVsIHsKICAgIHdpZHRoOiAyMDBweDsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIGZsb2F0OiBsZWZ0OwogIH0KICAudWstZm9ybS1ob3Jpem9udGFsIC51ay1mb3JtLWNvbnRyb2xzIHsKICAgIG1hcmdpbi1sZWZ0OiAyMTVweDsKICB9CiAgLyogQmV0dGVyIHZlcnRpY2FsIGFsaWdubWVudCBpZiBjb250cm9scyBhcmUgY2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyB3aXRoIHRleHQgKi8KICAudWstZm9ybS1ob3Jpem9udGFsIC51ay1mb3JtLWNvbnRyb2xzLXRleHQgewogICAgcGFkZGluZy10b3A6IDVweDsKICB9Cn0KLyogU3ViLW9iamVjdDogYHVrLWZvcm0taWNvbmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIDEuIENvbnRhaW5lciB3aWR0aCBmaXRzIGl0cyBjb250ZW50CiAqIDIuIENyZWF0ZSBwb3NpdGlvbiBjb250ZXh0CiAqIDMuIFByZXZlbnQgYGlubGluZS1ibG9ja2AgY29uc2VxdWVuY2VzCiAqLwoudWstZm9ybS1pY29uIHsKICAvKiAxICovCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIC8qIDIgKi8KICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLyogMyAqLwogIG1heC13aWR0aDogMTAwJTsKfQovKgogKiAxLiBNYWtlIGZvcm0gZWxlbWVudCBjbGlja2FibGUgdGhyb3VnaCBpY29uCiAqLwoudWstZm9ybS1pY29uID4gW2NsYXNzKj0ndWstaWNvbi0nXSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIHdpZHRoOiAzMHB4OwogIG1hcmdpbi10b3A6IC03cHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiAjOTk5OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICAvKiAxICovCiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLnVrLWZvcm0taWNvbjpub3QoLnVrLWZvcm0taWNvbi1mbGlwKSA+IGlucHV0IHsKICBwYWRkaW5nLWxlZnQ6IDMwcHggIWltcG9ydGFudDsKfQovKgogKiBTdWItbW9kaWZpZXI6IGB1ay1mb3JtLWljb24tZmxpcGAKICovCi51ay1mb3JtLWljb24tZmxpcCA+IFtjbGFzcyo9J3VrLWljb24tJ10gewogIHJpZ2h0OiAwOwp9Ci51ay1mb3JtLWljb24tZmxpcCA+IGlucHV0IHsKICBwYWRkaW5nLXJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogQnV0dG9uCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBSZW1vdmVzIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLgogKi8KLnVrLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7Cn0KLyoKICogMS4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLgogKiAyLiBSZW1vdmUgbWFyZ2lucyBpbiBDaHJvbWUsIFNhZmFyaSBhbmQgT3BlcmEuCiAqIDMuIFJlbW92ZSBib3JkZXJzIGZvciBgYnV0dG9uYC4KICogNC4gQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuCiAqIDUuIENvcnJlY3QgYGZvbnRgIHByb3BlcnRpZXMgYW5kIGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBmb3IgYGJ1dHRvbmAuCiAqIDYuIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2Ugd2hpY2ggaXMgb25seSBpbmhlcml0IGluIEZpcmVmb3ggYW5kIElFCiAqIDcuIFN0eWxlCiAqIDguIGBsaW5lLWhlaWdodGAgaXMgdXNlZCB0byBjcmVhdGUgYSBoZWlnaHQKICogOS4gYG1pbi1oZWlnaHRgIGlzIG5lY2Vzc2FyeSBmb3IgYGlucHV0YCBlbGVtZW50cyBpbiBGaXJlZm94IGFuZCBPcGVyYSBiZWNhdXNlIGBsaW5lLWhlaWdodGAgaXMgbm90IHdvcmtpbmcuCiAqIDEwLiBSZXNldCBidXR0b24gZ3JvdXAgd2hpdGVzcGFjZSBoYWNrCiAqIDExLiBSZXF1aXJlZCBmb3IgYGFgLgogKi8KLnVrLWJ1dHRvbiB7CiAgLyogMSAqLwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAvKiAyICovCiAgbWFyZ2luOiAwOwogIC8qIDMgKi8KICBib3JkZXI6IG5vbmU7CiAgLyogNCAqLwogIG92ZXJmbG93OiB2aXNpYmxlOwogIC8qIDUgKi8KICBmb250OiBpbmhlcml0OwogIGNvbG9yOiAjNDQ0OwogIC8qIDYgKi8KICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAvKiA3ICovCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgcGFkZGluZzogMCAxMnB4OwogIGJhY2tncm91bmQ6ICNlZWU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAvKiA4ICovCiAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgLyogOSAqLwogIG1pbi1oZWlnaHQ6IDMwcHg7CiAgLyogMTAgKi8KICBmb250LXNpemU6IDFyZW07CiAgLyogMTEgKi8KICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci51ay1idXR0b246bm90KDpkaXNhYmxlZCkgewogIGN1cnNvcjogcG9pbnRlcjsKfQovKgogKiBIb3ZlcgogKiAxLiBBcHBseSBob3ZlciBzdHlsZSBhbHNvIHRvIGZvY3VzIHN0YXRlCiAqIDIuIFJlbW92ZSBkZWZhdWx0IGZvY3VzIHN0eWxlCiAqIDMuIFJlcXVpcmVkIGZvciBgYWAgZWxlbWVudHMKICovCi51ay1idXR0b246aG92ZXIsCi51ay1idXR0b246Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgY29sb3I6ICM0NDQ7CiAgLyogMiAqLwogIG91dGxpbmU6IG5vbmU7CiAgLyogMyAqLwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQovKiBBY3RpdmUgKi8KLnVrLWJ1dHRvbjphY3RpdmUsCi51ay1idXR0b24udWstYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwogIGNvbG9yOiAjNDQ0Owp9Ci8qIENvbG9yIG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogTW9kaWZpZXI6IGB1ay1idXR0b24tcHJpbWFyeWAKICovCi51ay1idXR0b24tcHJpbWFyeSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYThlNjsKICBjb2xvcjogI2ZmZjsKfQovKiBIb3ZlciAqLwoudWstYnV0dG9uLXByaW1hcnk6aG92ZXIsCi51ay1idXR0b24tcHJpbWFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM1YjNlZTsKICBjb2xvcjogI2ZmZjsKfQovKiBBY3RpdmUgKi8KLnVrLWJ1dHRvbi1wcmltYXJ5OmFjdGl2ZSwKLnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTFjYTsKICBjb2xvcjogI2ZmZjsKfQovKgogKiBNb2RpZmllcjogYHVrLWJ1dHRvbi1zdWNjZXNzYAogKi8KLnVrLWJ1dHRvbi1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGNjMTRjOwogIGNvbG9yOiAjZmZmOwp9Ci8qIEhvdmVyICovCi51ay1idXR0b24tc3VjY2Vzczpob3ZlciwKLnVrLWJ1dHRvbi1zdWNjZXNzOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGVjNzNiOwogIGNvbG9yOiAjZmZmOwp9Ci8qIEFjdGl2ZSAqLwoudWstYnV0dG9uLXN1Y2Nlc3M6YWN0aXZlLAoudWstYnV0dG9uLXN1Y2Nlc3MudWstYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzJhZTQxOwogIGNvbG9yOiAjZmZmOwp9Ci8qCiAqIE1vZGlmaWVyOiBgdWstYnV0dG9uLWRhbmdlcmAKICovCi51ay1idXR0b24tZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGEzMTRiOwogIGNvbG9yOiAjZmZmOwp9Ci8qIEhvdmVyICovCi51ay1idXR0b24tZGFuZ2VyOmhvdmVyLAoudWstYnV0dG9uLWRhbmdlcjpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U0MzU0ZjsKICBjb2xvcjogI2ZmZjsKfQovKiBBY3RpdmUgKi8KLnVrLWJ1dHRvbi1kYW5nZXI6YWN0aXZlLAoudWstYnV0dG9uLWRhbmdlci51ay1hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNjOTEwMzI7CiAgY29sb3I6ICNmZmY7Cn0KLyogRGlzYWJsZWQgc3RhdGUKICogT3ZlcnJpZGVzIGFsc28gdGhlIGNvbG9yIG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyogRXF1YWwgZm9yIGFsbCBidXR0b24gdHlwZXMgKi8KLnVrLWJ1dHRvbjpkaXNhYmxlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKICBjb2xvcjogIzk5OTsKfQovKiBNb2RpZmllcjogYHVrLWJ1dHRvbi1saW5rYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyogUmVzZXQgKi8KLnVrLWJ1dHRvbi1saW5rLAoudWstYnV0dG9uLWxpbms6aG92ZXIsCi51ay1idXR0b24tbGluazpmb2N1cywKLnVrLWJ1dHRvbi1saW5rOmFjdGl2ZSwKLnVrLWJ1dHRvbi1saW5rLnVrLWFjdGl2ZSwKLnVrLWJ1dHRvbi1saW5rOmRpc2FibGVkIHsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQ6IG5vbmU7Cn0KLyogQ29sb3IgKi8KLnVrLWJ1dHRvbi1saW5rIHsKICBjb2xvcjogIzA3RDsKfQoudWstYnV0dG9uLWxpbms6aG92ZXIsCi51ay1idXR0b24tbGluazpmb2N1cywKLnVrLWJ1dHRvbi1saW5rOmFjdGl2ZSwKLnVrLWJ1dHRvbi1saW5rLnVrLWFjdGl2ZSB7CiAgY29sb3I6ICMwNTk7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KLnVrLWJ1dHRvbi1saW5rOmRpc2FibGVkIHsKICBjb2xvcjogIzk5OTsKfQovKiBGb2N1cyAqLwoudWstYnV0dG9uLWxpbms6Zm9jdXMgewogIG91dGxpbmU6IDFweCBkb3R0ZWQ7Cn0KLyogU2l6ZSBtb2RpZmllcnMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1idXR0b24tbWluaSB7CiAgbWluLWhlaWdodDogMjBweDsKICBwYWRkaW5nOiAwIDZweDsKICBsaW5lLWhlaWdodDogMjBweDsKICBmb250LXNpemU6IDExcHg7Cn0KLnVrLWJ1dHRvbi1zbWFsbCB7CiAgbWluLWhlaWdodDogMjVweDsKICBwYWRkaW5nOiAwIDEwcHg7CiAgbGluZS1oZWlnaHQ6IDI1cHg7CiAgZm9udC1zaXplOiAxMnB4Owp9Ci51ay1idXR0b24tbGFyZ2UgewogIG1pbi1oZWlnaHQ6IDQwcHg7CiAgcGFkZGluZzogMCAxNXB4OwogIGxpbmUtaGVpZ2h0OiA0MHB4OwogIGZvbnQtc2l6ZTogMTZweDsKfQovKiBTdWItb2JqZWN0IGB1ay1idXR0b24tZ3JvdXBgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBCZWhhdmUgbGlrZSBidXR0b25zCiAqIDIuIENyZWF0ZSBwb3NpdGlvbiBjb250ZXh0IGZvciBkcm9wZG93bnMKICogMy4gUmVtb3ZlIHdoaXRlc3BhY2UgYmV0d2VlbiBjaGlsZCBlbGVtZW50cyB3aGVuIHVzaW5nIGBpbmxpbmUtYmxvY2tgCiAqIDQuIFByZXZlbnQgYnV0dG9ucyBmcm9tIHdyYXBwaW5nCiAqIDUuIFJlbW92ZSB3aGl0ZXNwYWNlIGJldHdlZW4gY2hpbGQgZWxlbWVudHMgd2hlbiB1c2luZyBgaW5saW5lLWJsb2NrYAogKi8KLnVrLWJ1dHRvbi1ncm91cCB7CiAgLyogMSAqLwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIC8qIDIgKi8KICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLyogMyAqLwogIGZvbnQtc2l6ZTogMC4wMDFweDsKICAvKiA0ICovCiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoudWstYnV0dG9uLWdyb3VwID4gKiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci8qIDUgKi8KLnVrLWJ1dHRvbi1ncm91cCAudWstYnV0dG9uIHsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9Ci8qIFN1Yi1vYmplY3Q6IGB1ay1idXR0b24tZHJvcGRvd25gCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBCZWhhdmUgbGlrZSBidXR0b25zCiAqIDIuIENyZWF0ZSBwb3NpdGlvbiBjb250ZXh0IGZvciBkcm9wZG93bnMKICovCi51ay1idXR0b24tZHJvcGRvd24gewogIC8qIDEgKi8KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAvKiAyICovCiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IEljb24KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnRm9udEF3ZXNvbWUnOwogIHNyYzogdXJsKCIuLi9mb250cy9mb250YXdlc29tZS13ZWJmb250LndvZmYyIikgZm9ybWF0KCd3b2ZmMicpLCB1cmwoIi4uL2ZvbnRzL2ZvbnRhd2Vzb21lLXdlYmZvbnQud29mZiIpIGZvcm1hdCgid29mZiIpLCB1cmwoIi4uL2ZvbnRzL2ZvbnRhd2Vzb21lLXdlYmZvbnQudHRmIikgZm9ybWF0KCJ0cnVldHlwZSIpOwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgZm9udC1zdHlsZTogbm9ybWFsOwp9Ci8qCiAqIDEuIEFsbG93IG1hcmdpbgogKiAyLiBQcmV2ZW50IGluaGVyaXQgZm9udCBzdHlsZQogKiA0LiBDb3JyZWN0IGxpbmUtaGVpZ2h0CiAqIDUuIEJldHRlciBmb250IHJlbmRlcmluZwogKiA2LiBSZW1vdmUgYHRleHQtZGVjb3JhdGlvbmAgZm9yIGFuY2hvcnMKICovCltjbGFzcyo9J3VrLWljb24tJ10gewogIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTsKICAvKiAxICovCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIC8qIDIgKi8KICBmb250LXdlaWdodDogbm9ybWFsOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAvKiA0ICovCiAgbGluZS1oZWlnaHQ6IDE7CiAgLyogNSAqLwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cn0KLyogNiAqLwpbY2xhc3MqPSd1ay1pY29uLSddLApbY2xhc3MqPSd1ay1pY29uLSddOmhvdmVyLApbY2xhc3MqPSd1ay1pY29uLSddOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLyogU2l6ZSBtb2RpZmllcnMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1pY29uLXNtYWxsIHsKICBmb250LXNpemU6IDE1MCU7CiAgdmVydGljYWwtYWxpZ246IC0xMCU7Cn0KLnVrLWljb24tbWVkaXVtIHsKICBmb250LXNpemU6IDIwMCU7CiAgdmVydGljYWwtYWxpZ246IC0xNiU7Cn0KLnVrLWljb24tbGFyZ2UgewogIGZvbnQtc2l6ZTogMjUwJTsKICB2ZXJ0aWNhbC1hbGlnbjogLTIyJTsKfQovKiBNb2RpZmllcjogYHVrLWljb24tanVzdGlmeWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1pY29uLWp1c3RpZnkgewogIHdpZHRoOiAxZW07CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci8qIE1vZGlmaWVyOiBgdWstaWNvbi1zcGluYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWljb24tc3BpbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIC13ZWJraXQtYW5pbWF0aW9uOiB1ay1yb3RhdGUgMnMgaW5maW5pdGUgbGluZWFyOwogIGFuaW1hdGlvbjogdWstcm90YXRlIDJzIGluZmluaXRlIGxpbmVhcjsKfQovKiBNb2RpZmllcjogYHVrLWljb24taG92ZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstaWNvbi1ob3ZlciB7CiAgY29sb3I6ICM5OTk7Cn0KLyoKICogSG92ZXIKICovCi51ay1pY29uLWhvdmVyOmhvdmVyIHsKICBjb2xvcjogIzQ0NDsKfQovKiBNb2RpZmllcjogYHVrLWljb24tYnV0dG9uYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWljb24tYnV0dG9uIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMzVweDsKICBoZWlnaHQ6IDM1cHg7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKICBiYWNrZ3JvdW5kOiAjZWVlOwogIGxpbmUtaGVpZ2h0OiAzNXB4OwogIGNvbG9yOiAjNDQ0OwogIGZvbnQtc2l6ZTogMThweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLyoKICogSG92ZXIKICogMS4gQXBwbHkgaG92ZXIgc3R5bGUgYWxzbyB0byBmb2N1cyBzdGF0ZQogKiAyLiBSZW1vdmUgZGVmYXVsdCBmb2N1cyBzdHlsZQogKi8KLnVrLWljb24tYnV0dG9uOmhvdmVyLAoudWstaWNvbi1idXR0b246Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgY29sb3I6ICM0NDQ7CiAgLyogMiAqLwogIG91dGxpbmU6IG5vbmU7Cn0KLyogQWN0aXZlICovCi51ay1pY29uLWJ1dHRvbjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7CiAgY29sb3I6ICM0NDQ7Cn0KLyogSWNvbiBtYXBwaW5nCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstaWNvbi1nbGFzczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAwMCI7Cn0KLnVrLWljb24tbXVzaWM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMDEiOwp9Ci51ay1pY29uLXNlYXJjaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAwMiI7Cn0KLnVrLWljb24tZW52ZWxvcGUtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAwMyI7Cn0KLnVrLWljb24taGVhcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMDQiOwp9Ci51ay1pY29uLXN0YXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMDUiOwp9Ci51ay1pY29uLXN0YXItbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAwNiI7Cn0KLnVrLWljb24tdXNlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAwNyI7Cn0KLnVrLWljb24tZmlsbTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAwOCI7Cn0KLnVrLWljb24tdGgtbGFyZ2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMDkiOwp9Ci51ay1pY29uLXRoOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDBhIjsKfQoudWstaWNvbi10aC1saXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDBiIjsKfQoudWstaWNvbi1jaGVjazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAwYyI7Cn0KLnVrLWljb24tcmVtb3ZlOmJlZm9yZSwKLnVrLWljb24tY2xvc2U6YmVmb3JlLAoudWstaWNvbi10aW1lczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAwZCI7Cn0KLnVrLWljb24tc2VhcmNoLXBsdXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMGUiOwp9Ci51ay1pY29uLXNlYXJjaC1taW51czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAxMCI7Cn0KLnVrLWljb24tcG93ZXItb2ZmOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDExIjsKfQoudWstaWNvbi1zaWduYWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMTIiOwp9Ci51ay1pY29uLWdlYXI6YmVmb3JlLAoudWstaWNvbi1jb2c6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMTMiOwp9Ci51ay1pY29uLXRyYXNoLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMTQiOwp9Ci51ay1pY29uLWhvbWU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMTUiOwp9Ci51ay1pY29uLWZpbGUtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAxNiI7Cn0KLnVrLWljb24tY2xvY2stbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAxNyI7Cn0KLnVrLWljb24tcm9hZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAxOCI7Cn0KLnVrLWljb24tZG93bmxvYWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMTkiOwp9Ci51ay1pY29uLWFycm93LWNpcmNsZS1vLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMWEiOwp9Ci51ay1pY29uLWFycm93LWNpcmNsZS1vLXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDFiIjsKfQoudWstaWNvbi1pbmJveDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAxYyI7Cn0KLnVrLWljb24tcGxheS1jaXJjbGUtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAxZCI7Cn0KLnVrLWljb24tcm90YXRlLXJpZ2h0OmJlZm9yZSwKLnVrLWljb24tcmVwZWF0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDFlIjsKfQoudWstaWNvbi1yZWZyZXNoOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDIxIjsKfQoudWstaWNvbi1saXN0LWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAyMiI7Cn0KLnVrLWljb24tbG9jazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAyMyI7Cn0KLnVrLWljb24tZmxhZzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAyNCI7Cn0KLnVrLWljb24taGVhZHBob25lczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAyNSI7Cn0KLnVrLWljb24tdm9sdW1lLW9mZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAyNiI7Cn0KLnVrLWljb24tdm9sdW1lLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMjciOwp9Ci51ay1pY29uLXZvbHVtZS11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAyOCI7Cn0KLnVrLWljb24tcXJjb2RlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDI5IjsKfQoudWstaWNvbi1iYXJjb2RlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDJhIjsKfQoudWstaWNvbi10YWc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMmIiOwp9Ci51ay1pY29uLXRhZ3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMmMiOwp9Ci51ay1pY29uLWJvb2s6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMmQiOwp9Ci51ay1pY29uLWJvb2ttYXJrOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDJlIjsKfQoudWstaWNvbi1wcmludDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAyZiI7Cn0KLnVrLWljb24tY2FtZXJhOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDMwIjsKfQoudWstaWNvbi1mb250OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDMxIjsKfQoudWstaWNvbi1ib2xkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDMyIjsKfQoudWstaWNvbi1pdGFsaWM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMzMiOwp9Ci51ay1pY29uLXRleHQtaGVpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDM0IjsKfQoudWstaWNvbi10ZXh0LXdpZHRoOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDM1IjsKfQoudWstaWNvbi1hbGlnbi1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDM2IjsKfQoudWstaWNvbi1hbGlnbi1jZW50ZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMzciOwp9Ci51ay1pY29uLWFsaWduLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDM4IjsKfQoudWstaWNvbi1hbGlnbi1qdXN0aWZ5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDM5IjsKfQoudWstaWNvbi1saXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDNhIjsKfQoudWstaWNvbi1kZWRlbnQ6YmVmb3JlLAoudWstaWNvbi1vdXRkZW50OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDNiIjsKfQoudWstaWNvbi1pbmRlbnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwM2MiOwp9Ci51ay1pY29uLXZpZGVvLWNhbWVyYTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAzZCI7Cn0KLnVrLWljb24tcGhvdG86YmVmb3JlLAoudWstaWNvbi1pbWFnZTpiZWZvcmUsCi51ay1pY29uLXBpY3R1cmUtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjAzZSI7Cn0KLnVrLWljb24tcGVuY2lsOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDQwIjsKfQoudWstaWNvbi1tYXAtbWFya2VyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDQxIjsKfQoudWstaWNvbi1hZGp1c3Q6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNDIiOwp9Ci51ay1pY29uLXRpbnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNDMiOwp9Ci51ay1pY29uLWVkaXQ6YmVmb3JlLAoudWstaWNvbi1wZW5jaWwtc3F1YXJlLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNDQiOwp9Ci51ay1pY29uLXNoYXJlLXNxdWFyZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDQ1IjsKfQoudWstaWNvbi1jaGVjay1zcXVhcmUtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA0NiI7Cn0KLnVrLWljb24tYXJyb3dzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDQ3IjsKfQoudWstaWNvbi1zdGVwLWJhY2t3YXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDQ4IjsKfQoudWstaWNvbi1mYXN0LWJhY2t3YXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDQ5IjsKfQoudWstaWNvbi1iYWNrd2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA0YSI7Cn0KLnVrLWljb24tcGxheTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA0YiI7Cn0KLnVrLWljb24tcGF1c2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNGMiOwp9Ci51ay1pY29uLXN0b3A6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNGQiOwp9Ci51ay1pY29uLWZvcndhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNGUiOwp9Ci51ay1pY29uLWZhc3QtZm9yd2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA1MCI7Cn0KLnVrLWljb24tc3RlcC1mb3J3YXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDUxIjsKfQoudWstaWNvbi1lamVjdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA1MiI7Cn0KLnVrLWljb24tY2hldnJvbi1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDUzIjsKfQoudWstaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDU0IjsKfQoudWstaWNvbi1wbHVzLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA1NSI7Cn0KLnVrLWljb24tbWludXMtY2lyY2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDU2IjsKfQoudWstaWNvbi10aW1lcy1jaXJjbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNTciOwp9Ci51ay1pY29uLWNoZWNrLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA1OCI7Cn0KLnVrLWljb24tcXVlc3Rpb24tY2lyY2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDU5IjsKfQoudWstaWNvbi1pbmZvLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA1YSI7Cn0KLnVrLWljb24tY3Jvc3NoYWlyczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA1YiI7Cn0KLnVrLWljb24tdGltZXMtY2lyY2xlLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNWMiOwp9Ci51ay1pY29uLWNoZWNrLWNpcmNsZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDVkIjsKfQoudWstaWNvbi1iYW46YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNWUiOwp9Ci51ay1pY29uLWFycm93LWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNjAiOwp9Ci51ay1pY29uLWFycm93LXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDYxIjsKfQoudWstaWNvbi1hcnJvdy11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA2MiI7Cn0KLnVrLWljb24tYXJyb3ctZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA2MyI7Cn0KLnVrLWljb24tbWFpbC1mb3J3YXJkOmJlZm9yZSwKLnVrLWljb24tc2hhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNjQiOwp9Ci51ay1pY29uLWV4cGFuZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA2NSI7Cn0KLnVrLWljb24tY29tcHJlc3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNjYiOwp9Ci51ay1pY29uLXBsdXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNjciOwp9Ci51ay1pY29uLW1pbnVzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDY4IjsKfQoudWstaWNvbi1hc3RlcmlzazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA2OSI7Cn0KLnVrLWljb24tZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDZhIjsKfQoudWstaWNvbi1naWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDZiIjsKfQoudWstaWNvbi1sZWFmOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDZjIjsKfQoudWstaWNvbi1maXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDZkIjsKfQoudWstaWNvbi1leWU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNmUiOwp9Ci51ay1pY29uLWV5ZS1zbGFzaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA3MCI7Cn0KLnVrLWljb24td2FybmluZzpiZWZvcmUsCi51ay1pY29uLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDcxIjsKfQoudWstaWNvbi1wbGFuZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA3MiI7Cn0KLnVrLWljb24tY2FsZW5kYXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNzMiOwp9Ci51ay1pY29uLXJhbmRvbTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA3NCI7Cn0KLnVrLWljb24tY29tbWVudDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA3NSI7Cn0KLnVrLWljb24tbWFnbmV0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDc2IjsKfQoudWstaWNvbi1jaGV2cm9uLXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDc3IjsKfQoudWstaWNvbi1jaGV2cm9uLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNzgiOwp9Ci51ay1pY29uLXJldHdlZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNzkiOwp9Ci51ay1pY29uLXNob3BwaW5nLWNhcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwN2EiOwp9Ci51ay1pY29uLWZvbGRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA3YiI7Cn0KLnVrLWljb24tZm9sZGVyLW9wZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGYwN2MiOwp9Ci51ay1pY29uLWFycm93cy12OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDdkIjsKfQoudWstaWNvbi1hcnJvd3MtaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA3ZSI7Cn0KLnVrLWljb24tYmFyLWNoYXJ0LW86YmVmb3JlLAoudWstaWNvbi1iYXItY2hhcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwODAiOwp9Ci51ay1pY29uLXR3aXR0ZXItc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDgxIjsKfQoudWstaWNvbi1mYWNlYm9vay1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwODIiOwp9Ci51ay1pY29uLWNhbWVyYS1yZXRybzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA4MyI7Cn0KLnVrLWljb24ta2V5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMDg0IjsKfQoudWstaWNvbi1nZWFyczpiZWZvcmUsCi51ay1pY29uLWNvZ3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwODUiOwp9Ci51ay1pY29uLWNvbW1lbnRzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDg2IjsKfQoudWstaWNvbi10aHVtYnMtby11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA4NyI7Cn0KLnVrLWljb24tdGh1bWJzLW8tZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA4OCI7Cn0KLnVrLWljb24tc3Rhci1oYWxmOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDg5IjsKfQoudWstaWNvbi1oZWFydC1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDhhIjsKfQoudWstaWNvbi1zaWduLW91dDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA4YiI7Cn0KLnVrLWljb24tbGlua2VkaW4tc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDhjIjsKfQoudWstaWNvbi10aHVtYi10YWNrOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDhkIjsKfQoudWstaWNvbi1leHRlcm5hbC1saW5rOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDhlIjsKfQoudWstaWNvbi1zaWduLWluOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDkwIjsKfQoudWstaWNvbi10cm9waHk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwOTEiOwp9Ci51ay1pY29uLWdpdGh1Yi1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwOTIiOwp9Ci51ay1pY29uLXVwbG9hZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA5MyI7Cn0KLnVrLWljb24tbGVtb24tbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA5NCI7Cn0KLnVrLWljb24tcGhvbmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwOTUiOwp9Ci51ay1pY29uLXNxdWFyZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDk2IjsKfQoudWstaWNvbi1ib29rbWFyay1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDk3IjsKfQoudWstaWNvbi1waG9uZS1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwOTgiOwp9Ci51ay1pY29uLXR3aXR0ZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwOTkiOwp9Ci51ay1pY29uLWZhY2Vib29rLWY6YmVmb3JlLAoudWstaWNvbi1mYWNlYm9vazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjA5YSI7Cn0KLnVrLWljb24tZ2l0aHViOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDliIjsKfQoudWstaWNvbi11bmxvY2s6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwOWMiOwp9Ci51ay1pY29uLWNyZWRpdC1jYXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDlkIjsKfQoudWstaWNvbi1yc3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwOWUiOwp9Ci51ay1pY29uLWhkZC1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGEwIjsKfQoudWstaWNvbi1idWxsaG9ybjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBhMSI7Cn0KLnVrLWljb24tYmVsbDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBmMyI7Cn0KLnVrLWljb24tY2VydGlmaWNhdGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYTMiOwp9Ci51ay1pY29uLWhhbmQtby1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBhNCI7Cn0KLnVrLWljb24taGFuZC1vLWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYTUiOwp9Ci51ay1pY29uLWhhbmQtby11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBhNiI7Cn0KLnVrLWljb24taGFuZC1vLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYTciOwp9Ci51ay1pY29uLWFycm93LWNpcmNsZS1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMGE4IjsKfQoudWstaWNvbi1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYTkiOwp9Ci51ay1pY29uLWFycm93LWNpcmNsZS11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBhYSI7Cn0KLnVrLWljb24tYXJyb3ctY2lyY2xlLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYWIiOwp9Ci51ay1pY29uLWdsb2JlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGFjIjsKfQoudWstaWNvbi13cmVuY2g6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYWQiOwp9Ci51ay1pY29uLXRhc2tzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGFlIjsKfQoudWstaWNvbi1maWx0ZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYjAiOwp9Ci51ay1pY29uLWJyaWVmY2FzZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBiMSI7Cn0KLnVrLWljb24tYXJyb3dzLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBiMiI7Cn0KLnVrLWljb24tZ3JvdXA6YmVmb3JlLAoudWstaWNvbi11c2VyczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBjMCI7Cn0KLnVrLWljb24tY2hhaW46YmVmb3JlLAoudWstaWNvbi1saW5rOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGMxIjsKfQoudWstaWNvbi1jbG91ZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBjMiI7Cn0KLnVrLWljb24tZmxhc2s6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYzMiOwp9Ci51ay1pY29uLWN1dDpiZWZvcmUsCi51ay1pY29uLXNjaXNzb3JzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGM0IjsKfQoudWstaWNvbi1jb3B5OmJlZm9yZSwKLnVrLWljb24tZmlsZXMtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBjNSI7Cn0KLnVrLWljb24tcGFwZXJjbGlwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGM2IjsKfQoudWstaWNvbi1zYXZlOmJlZm9yZSwKLnVrLWljb24tZmxvcHB5LW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYzciOwp9Ci51ay1pY29uLXNxdWFyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBjOCI7Cn0KLnVrLWljb24tbmF2aWNvbjpiZWZvcmUsCi51ay1pY29uLXJlb3JkZXI6YmVmb3JlLAoudWstaWNvbi1iYXJzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGM5IjsKfQoudWstaWNvbi1saXN0LXVsOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGNhIjsKfQoudWstaWNvbi1saXN0LW9sOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGNiIjsKfQoudWstaWNvbi1zdHJpa2V0aHJvdWdoOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGNjIjsKfQoudWstaWNvbi11bmRlcmxpbmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwY2QiOwp9Ci51ay1pY29uLXRhYmxlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGNlIjsKfQoudWstaWNvbi1tYWdpYzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBkMCI7Cn0KLnVrLWljb24tdHJ1Y2s6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZDEiOwp9Ci51ay1pY29uLXBpbnRlcmVzdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBkMiI7Cn0KLnVrLWljb24tcGludGVyZXN0LXNxdWFyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBkMyI7Cn0KLnVrLWljb24tZ29vZ2xlLXBsdXMtc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGQ0IjsKfQoudWstaWNvbi1nb29nbGUtcGx1czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBkNSI7Cn0KLnVrLWljb24tbW9uZXk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZDYiOwp9Ci51ay1pY29uLWNhcmV0LWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZDciOwp9Ci51ay1pY29uLWNhcmV0LXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGQ4IjsKfQoudWstaWNvbi1jYXJldC1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMGQ5IjsKfQoudWstaWNvbi1jYXJldC1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBkYSI7Cn0KLnVrLWljb24tY29sdW1uczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBkYiI7Cn0KLnVrLWljb24tdW5zb3J0ZWQ6YmVmb3JlLAoudWstaWNvbi1zb3J0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMGRjIjsKfQoudWstaWNvbi1zb3J0LWRvd246YmVmb3JlLAoudWstaWNvbi1zb3J0LWRlc2M6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZGQiOwp9Ci51ay1pY29uLXNvcnQtdXA6YmVmb3JlLAoudWstaWNvbi1zb3J0LWFzYzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBkZSI7Cn0KLnVrLWljb24tZW52ZWxvcGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZTAiOwp9Ci51ay1pY29uLWxpbmtlZGluOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGUxIjsKfQoudWstaWNvbi1yb3RhdGUtbGVmdDpiZWZvcmUsCi51ay1pY29uLXVuZG86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZTIiOwp9Ci51ay1pY29uLWxlZ2FsOmJlZm9yZSwKLnVrLWljb24tZ2F2ZWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZTMiOwp9Ci51ay1pY29uLWRhc2hib2FyZDpiZWZvcmUsCi51ay1pY29uLXRhY2hvbWV0ZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZTQiOwp9Ci51ay1pY29uLWNvbW1lbnQtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBlNSI7Cn0KLnVrLWljb24tY29tbWVudHMtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBlNiI7Cn0KLnVrLWljb24tZmxhc2g6YmVmb3JlLAoudWstaWNvbi1ib2x0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMGU3IjsKfQoudWstaWNvbi1zaXRlbWFwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGU4IjsKfQoudWstaWNvbi11bWJyZWxsYTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBlOSI7Cn0KLnVrLWljb24tcGFzdGU6YmVmb3JlLAoudWstaWNvbi1jbGlwYm9hcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZWEiOwp9Ci51ay1pY29uLWxpZ2h0YnVsYi1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGViIjsKfQoudWstaWNvbi1leGNoYW5nZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBlYyI7Cn0KLnVrLWljb24tY2xvdWQtZG93bmxvYWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZWQiOwp9Ci51ay1pY29uLWNsb3VkLXVwbG9hZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBlZSI7Cn0KLnVrLWljb24tdXNlci1tZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBmMCI7Cn0KLnVrLWljb24tc3RldGhvc2NvcGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZjEiOwp9Ci51ay1pY29uLXN1aXRjYXNlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGYyIjsKfQoudWstaWNvbi1iZWxsLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwYTIiOwp9Ci51ay1pY29uLWNvZmZlZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBmNCI7Cn0KLnVrLWljb24tY3V0bGVyeTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBmNSI7Cn0KLnVrLWljb24tZmlsZS10ZXh0LW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZjYiOwp9Ci51ay1pY29uLWJ1aWxkaW5nLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZjciOwp9Ci51ay1pY29uLWhvc3BpdGFsLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZjgiOwp9Ci51ay1pY29uLWFtYnVsYW5jZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBmOSI7Cn0KLnVrLWljb24tbWVka2l0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMGZhIjsKfQoudWstaWNvbi1maWdodGVyLWpldDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBmYiI7Cn0KLnVrLWljb24tYmVlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjBmYyI7Cn0KLnVrLWljb24taC1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwZmQiOwp9Ci51ay1pY29uLXBsdXMtc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMGZlIjsKfQoudWstaWNvbi1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwMCI7Cn0KLnVrLWljb24tYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTAxIjsKfQoudWstaWNvbi1hbmdsZS1kb3VibGUtdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDIiOwp9Ci51ay1pY29uLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTAzIjsKfQoudWstaWNvbi1hbmdsZS1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTA0IjsKfQoudWstaWNvbi1hbmdsZS1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwNSI7Cn0KLnVrLWljb24tYW5nbGUtdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDYiOwp9Ci51ay1pY29uLWFuZ2xlLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDciOwp9Ci51ay1pY29uLWRlc2t0b3A6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMDgiOwp9Ci51ay1pY29uLWxhcHRvcDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwOSI7Cn0KLnVrLWljb24tdGFibGV0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTBhIjsKfQoudWstaWNvbi1tb2JpbGUtcGhvbmU6YmVmb3JlLAoudWstaWNvbi1tb2JpbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMGIiOwp9Ci51ay1pY29uLWNpcmNsZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTBjIjsKfQoudWstaWNvbi1xdW90ZS1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTBkIjsKfQoudWstaWNvbi1xdW90ZS1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEwZSI7Cn0KLnVrLWljb24tc3Bpbm5lcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExMCI7Cn0KLnVrLWljb24tY2lyY2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTExIjsKfQoudWstaWNvbi1tYWlsLXJlcGx5OmJlZm9yZSwKLnVrLWljb24tcmVwbHk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMTIiOwp9Ci51ay1pY29uLWdpdGh1Yi1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMTMiOwp9Ci51ay1pY29uLWZvbGRlci1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTE0IjsKfQoudWstaWNvbi1mb2xkZXItb3Blbi1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTE1IjsKfQoudWstaWNvbi1zbWlsZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTE4IjsKfQoudWstaWNvbi1mcm93bi1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTE5IjsKfQoudWstaWNvbi1tZWgtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExYSI7Cn0KLnVrLWljb24tZ2FtZXBhZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExYiI7Cn0KLnVrLWljb24ta2V5Ym9hcmQtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExYyI7Cn0KLnVrLWljb24tZmxhZy1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTFkIjsKfQoudWstaWNvbi1mbGFnLWNoZWNrZXJlZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjExZSI7Cn0KLnVrLWljb24tdGVybWluYWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMjAiOwp9Ci51ay1pY29uLWNvZGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMjEiOwp9Ci51ay1pY29uLW1haWwtcmVwbHktYWxsOmJlZm9yZSwKLnVrLWljb24tcmVwbHktYWxsOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTIyIjsKfQoudWstaWNvbi1zdGFyLWhhbGYtZW1wdHk6YmVmb3JlLAoudWstaWNvbi1zdGFyLWhhbGYtZnVsbDpiZWZvcmUsCi51ay1pY29uLXN0YXItaGFsZi1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTIzIjsKfQoudWstaWNvbi1sb2NhdGlvbi1hcnJvdzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEyNCI7Cn0KLnVrLWljb24tY3JvcDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEyNSI7Cn0KLnVrLWljb24tY29kZS1mb3JrOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTI2IjsKfQoudWstaWNvbi11bmxpbms6YmVmb3JlLAoudWstaWNvbi1jaGFpbi1icm9rZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMjciOwp9Ci51ay1pY29uLXF1ZXN0aW9uOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTI4IjsKfQoudWstaWNvbi1pbmZvOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTI5IjsKfQoudWstaWNvbi1leGNsYW1hdGlvbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEyYSI7Cn0KLnVrLWljb24tc3VwZXJzY3JpcHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMmIiOwp9Ci51ay1pY29uLXN1YnNjcmlwdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEyYyI7Cn0KLnVrLWljb24tZXJhc2VyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTJkIjsKfQoudWstaWNvbi1wdXp6bGUtcGllY2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMmUiOwp9Ci51ay1pY29uLW1pY3JvcGhvbmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMzAiOwp9Ci51ay1pY29uLW1pY3JvcGhvbmUtc2xhc2g6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMzEiOwp9Ci51ay1pY29uLXNoaWVsZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEzMiI7Cn0KLnVrLWljb24tY2FsZW5kYXItbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEzMyI7Cn0KLnVrLWljb24tZmlyZS1leHRpbmd1aXNoZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMzQiOwp9Ci51ay1pY29uLXJvY2tldDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEzNSI7Cn0KLnVrLWljb24tbWF4Y2RuOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTM2IjsKfQoudWstaWNvbi1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTM3IjsKfQoudWstaWNvbi1jaGV2cm9uLWNpcmNsZS1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjEzOCI7Cn0KLnVrLWljb24tY2hldnJvbi1jaXJjbGUtdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxMzkiOwp9Ci51ay1pY29uLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYxM2EiOwp9Ci51ay1pY29uLWh0bWw1OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTNiIjsKfQoudWstaWNvbi1jc3MzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTNjIjsKfQoudWstaWNvbi1hbmNob3I6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxM2QiOwp9Ci51ay1pY29uLXVubG9jay1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxM2UiOwp9Ci51ay1pY29uLWJ1bGxzZXllOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTQwIjsKfQoudWstaWNvbi1lbGxpcHNpcy1oOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTQxIjsKfQoudWstaWNvbi1lbGxpcHNpcy12OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTQyIjsKfQoudWstaWNvbi1yc3Mtc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTQzIjsKfQoudWstaWNvbi1wbGF5LWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE0NCI7Cn0KLnVrLWljb24tdGlja2V0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTQ1IjsKfQoudWstaWNvbi1taW51cy1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNDYiOwp9Ci51ay1pY29uLW1pbnVzLXNxdWFyZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTQ3IjsKfQoudWstaWNvbi1sZXZlbC11cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE0OCI7Cn0KLnVrLWljb24tbGV2ZWwtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE0OSI7Cn0KLnVrLWljb24tY2hlY2stc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTRhIjsKfQoudWstaWNvbi1wZW5jaWwtc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTRiIjsKfQoudWstaWNvbi1leHRlcm5hbC1saW5rLXNxdWFyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE0YyI7Cn0KLnVrLWljb24tc2hhcmUtc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTRkIjsKfQoudWstaWNvbi1jb21wYXNzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTRlIjsKfQoudWstaWNvbi10b2dnbGUtZG93bjpiZWZvcmUsCi51ay1pY29uLWNhcmV0LXNxdWFyZS1vLWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNTAiOwp9Ci51ay1pY29uLXRvZ2dsZS11cDpiZWZvcmUsCi51ay1pY29uLWNhcmV0LXNxdWFyZS1vLXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTUxIjsKfQoudWstaWNvbi10b2dnbGUtcmlnaHQ6YmVmb3JlLAoudWstaWNvbi1jYXJldC1zcXVhcmUtby1yaWdodDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE1MiI7Cn0KLnVrLWljb24tZXVybzpiZWZvcmUsCi51ay1pY29uLWV1cjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE1MyI7Cn0KLnVrLWljb24tZ2JwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTU0IjsKfQoudWstaWNvbi1kb2xsYXI6YmVmb3JlLAoudWstaWNvbi11c2Q6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNTUiOwp9Ci51ay1pY29uLXJ1cGVlOmJlZm9yZSwKLnVrLWljb24taW5yOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTU2IjsKfQoudWstaWNvbi1jbnk6YmVmb3JlLAoudWstaWNvbi1ybWI6YmVmb3JlLAoudWstaWNvbi15ZW46YmVmb3JlLAoudWstaWNvbi1qcHk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNTciOwp9Ci51ay1pY29uLXJ1YmxlOmJlZm9yZSwKLnVrLWljb24tcm91YmxlOmJlZm9yZSwKLnVrLWljb24tcnViOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTU4IjsKfQoudWstaWNvbi13b246YmVmb3JlLAoudWstaWNvbi1rcnc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNTkiOwp9Ci51ay1pY29uLWJpdGNvaW46YmVmb3JlLAoudWstaWNvbi1idGM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNWEiOwp9Ci51ay1pY29uLWZpbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNWIiOwp9Ci51ay1pY29uLWZpbGUtdGV4dDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE1YyI7Cn0KLnVrLWljb24tc29ydC1hbHBoYS1hc2M6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNWQiOwp9Ci51ay1pY29uLXNvcnQtYWxwaGEtZGVzYzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE1ZSI7Cn0KLnVrLWljb24tc29ydC1hbW91bnQtYXNjOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTYwIjsKfQoudWstaWNvbi1zb3J0LWFtb3VudC1kZXNjOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTYxIjsKfQoudWstaWNvbi1zb3J0LW51bWVyaWMtYXNjOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTYyIjsKfQoudWstaWNvbi1zb3J0LW51bWVyaWMtZGVzYzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE2MyI7Cn0KLnVrLWljb24tdGh1bWJzLXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTY0IjsKfQoudWstaWNvbi10aHVtYnMtZG93bjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE2NSI7Cn0KLnVrLWljb24teW91dHViZS1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNjYiOwp9Ci51ay1pY29uLXlvdXR1YmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNjciOwp9Ci51ay1pY29uLXhpbmc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNjgiOwp9Ci51ay1pY29uLXhpbmctc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTY5IjsKfQoudWstaWNvbi15b3V0dWJlLXBsYXk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNmEiOwp9Ci51ay1pY29uLWRyb3Bib3g6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNmIiOwp9Ci51ay1pY29uLXN0YWNrLW92ZXJmbG93OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTZjIjsKfQoudWstaWNvbi1pbnN0YWdyYW06YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNmQiOwp9Ci51ay1pY29uLWZsaWNrcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE2ZSI7Cn0KLnVrLWljb24tYWRuOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTcwIjsKfQoudWstaWNvbi1iaXRidWNrZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNzEiOwp9Ci51ay1pY29uLWJpdGJ1Y2tldC1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNzIiOwp9Ci51ay1pY29uLXR1bWJscjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE3MyI7Cn0KLnVrLWljb24tdHVtYmxyLXNxdWFyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE3NCI7Cn0KLnVrLWljb24tbG9uZy1hcnJvdy1kb3duOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTc1IjsKfQoudWstaWNvbi1sb25nLWFycm93LXVwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTc2IjsKfQoudWstaWNvbi1sb25nLWFycm93LWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNzciOwp9Ci51ay1pY29uLWxvbmctYXJyb3ctcmlnaHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxNzgiOwp9Ci51ay1pY29uLWFwcGxlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTc5IjsKfQoudWstaWNvbi13aW5kb3dzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTdhIjsKfQoudWstaWNvbi1hbmRyb2lkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTdiIjsKfQoudWstaWNvbi1saW51eDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE3YyI7Cn0KLnVrLWljb24tZHJpYmJibGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxN2QiOwp9Ci51ay1pY29uLXNreXBlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTdlIjsKfQoudWstaWNvbi1mb3Vyc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTgwIjsKfQoudWstaWNvbi10cmVsbG86YmVmb3JlIHsKICBjb250ZW50OiAiXGYxODEiOwp9Ci51ay1pY29uLWZlbWFsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE4MiI7Cn0KLnVrLWljb24tbWFsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE4MyI7Cn0KLnVrLWljb24tZ2l0dGlwOmJlZm9yZSwKLnVrLWljb24tZ3JhdGlwYXk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxODQiOwp9Ci51ay1pY29uLXN1bi1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTg1IjsKfQoudWstaWNvbi1tb29uLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYxODYiOwp9Ci51ay1pY29uLWFyY2hpdmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxODciOwp9Ci51ay1pY29uLWJ1ZzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE4OCI7Cn0KLnVrLWljb24tdms6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxODkiOwp9Ci51ay1pY29uLXdlaWJvOmJlZm9yZSB7CiAgY29udGVudDogIlxmMThhIjsKfQoudWstaWNvbi1yZW5yZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGYxOGIiOwp9Ci51ay1pY29uLXBhZ2VsaW5lczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE4YyI7Cn0KLnVrLWljb24tc3RhY2stZXhjaGFuZ2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxOGQiOwp9Ci51ay1pY29uLWFycm93LWNpcmNsZS1vLXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMThlIjsKfQoudWstaWNvbi1hcnJvdy1jaXJjbGUtby1sZWZ0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTkwIjsKfQoudWstaWNvbi10b2dnbGUtbGVmdDpiZWZvcmUsCi51ay1pY29uLWNhcmV0LXNxdWFyZS1vLWxlZnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxOTEiOwp9Ci51ay1pY29uLWRvdC1jaXJjbGUtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE5MiI7Cn0KLnVrLWljb24td2hlZWxjaGFpcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE5MyI7Cn0KLnVrLWljb24tdmltZW8tc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTk0IjsKfQoudWstaWNvbi10dXJraXNoLWxpcmE6YmVmb3JlLAoudWstaWNvbi10cnk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxOTUiOwp9Ci51ay1pY29uLXBsdXMtc3F1YXJlLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYxOTYiOwp9Ci51ay1pY29uLXNwYWNlLXNodXR0bGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxOTciOwp9Ci51ay1pY29uLXNsYWNrOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTk4IjsKfQoudWstaWNvbi1lbnZlbG9wZS1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxOTkiOwp9Ci51ay1pY29uLXdvcmRwcmVzczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE5YSI7Cn0KLnVrLWljb24tb3BlbmlkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTliIjsKfQoudWstaWNvbi1pbnN0aXR1dGlvbjpiZWZvcmUsCi51ay1pY29uLWJhbms6YmVmb3JlLAoudWstaWNvbi11bml2ZXJzaXR5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMTljIjsKfQoudWstaWNvbi1tb3J0YXItYm9hcmQ6YmVmb3JlLAoudWstaWNvbi1ncmFkdWF0aW9uLWNhcDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjE5ZCI7Cn0KLnVrLWljb24teWFob286YmVmb3JlIHsKICBjb250ZW50OiAiXGYxOWUiOwp9Ci51ay1pY29uLWdvb2dsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFhMCI7Cn0KLnVrLWljb24tcmVkZGl0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMWExIjsKfQoudWstaWNvbi1yZWRkaXQtc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWEyIjsKfQoudWstaWNvbi1zdHVtYmxldXBvbi1jaXJjbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYTMiOwp9Ci51ay1pY29uLXN0dW1ibGV1cG9uOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWE0IjsKfQoudWstaWNvbi1kZWxpY2lvdXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYTUiOwp9Ci51ay1pY29uLWRpZ2c6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYTYiOwp9Ci51ay1pY29uLXBpZWQtcGlwZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYTciOwp9Ci51ay1pY29uLXBpZWQtcGlwZXItYWx0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMWE4IjsKfQoudWstaWNvbi1kcnVwYWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYTkiOwp9Ci51ay1pY29uLWpvb21sYTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFhYSI7Cn0KLnVrLWljb24tbGFuZ3VhZ2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYWIiOwp9Ci51ay1pY29uLWZheDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFhYyI7Cn0KLnVrLWljb24tYnVpbGRpbmc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYWQiOwp9Ci51ay1pY29uLWNoaWxkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWFlIjsKfQoudWstaWNvbi1wYXc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYjAiOwp9Ci51ay1pY29uLXNwb29uOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWIxIjsKfQoudWstaWNvbi1jdWJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWIyIjsKfQoudWstaWNvbi1jdWJlczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFiMyI7Cn0KLnVrLWljb24tYmVoYW5jZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFiNCI7Cn0KLnVrLWljb24tYmVoYW5jZS1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYjUiOwp9Ci51ay1pY29uLXN0ZWFtOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWI2IjsKfQoudWstaWNvbi1zdGVhbS1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYjciOwp9Ci51ay1pY29uLXJlY3ljbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYjgiOwp9Ci51ay1pY29uLWF1dG9tb2JpbGU6YmVmb3JlLAoudWstaWNvbi1jYXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYjkiOwp9Ci51ay1pY29uLWNhYjpiZWZvcmUsCi51ay1pY29uLXRheGk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYmEiOwp9Ci51ay1pY29uLXRyZWU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYmIiOwp9Ci51ay1pY29uLXNwb3RpZnk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYmMiOwp9Ci51ay1pY29uLWRldmlhbnRhcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYmQiOwp9Ci51ay1pY29uLXNvdW5kY2xvdWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYmUiOwp9Ci51ay1pY29uLWRhdGFiYXNlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWMwIjsKfQoudWstaWNvbi1maWxlLXBkZi1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWMxIjsKfQoudWstaWNvbi1maWxlLXdvcmQtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFjMiI7Cn0KLnVrLWljb24tZmlsZS1leGNlbC1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWMzIjsKfQoudWstaWNvbi1maWxlLXBvd2VycG9pbnQtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFjNCI7Cn0KLnVrLWljb24tZmlsZS1waG90by1vOmJlZm9yZSwKLnVrLWljb24tZmlsZS1waWN0dXJlLW86YmVmb3JlLAoudWstaWNvbi1maWxlLWltYWdlLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYzUiOwp9Ci51ay1pY29uLWZpbGUtemlwLW86YmVmb3JlLAoudWstaWNvbi1maWxlLWFyY2hpdmUtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFjNiI7Cn0KLnVrLWljb24tZmlsZS1zb3VuZC1vOmJlZm9yZSwKLnVrLWljb24tZmlsZS1hdWRpby1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWM3IjsKfQoudWstaWNvbi1maWxlLW1vdmllLW86YmVmb3JlLAoudWstaWNvbi1maWxlLXZpZGVvLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYxYzgiOwp9Ci51ay1pY29uLWZpbGUtY29kZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWM5IjsKfQoudWstaWNvbi12aW5lOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWNhIjsKfQoudWstaWNvbi1jb2RlcGVuOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWNiIjsKfQoudWstaWNvbi1qc2ZpZGRsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFjYyI7Cn0KLnVrLWljb24tbGlmZS1ib3V5OmJlZm9yZSwKLnVrLWljb24tbGlmZS1idW95OmJlZm9yZSwKLnVrLWljb24tbGlmZS1zYXZlcjpiZWZvcmUsCi51ay1pY29uLXN1cHBvcnQ6YmVmb3JlLAoudWstaWNvbi1saWZlLXJpbmc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxY2QiOwp9Ci51ay1pY29uLWNpcmNsZS1vLW5vdGNoOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWNlIjsKfQoudWstaWNvbi1yYTpiZWZvcmUsCi51ay1pY29uLXJlYmVsOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWQwIjsKfQoudWstaWNvbi1nZTpiZWZvcmUsCi51ay1pY29uLWVtcGlyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFkMSI7Cn0KLnVrLWljb24tZ2l0LXNxdWFyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFkMiI7Cn0KLnVrLWljb24tZ2l0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMWQzIjsKfQoudWstaWNvbi1oYWNrZXItbmV3czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFkNCI7Cn0KLnVrLWljb24tdGVuY2VudC13ZWlibzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFkNSI7Cn0KLnVrLWljb24tcXE6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZDYiOwp9Ci51ay1pY29uLXdlY2hhdDpiZWZvcmUsCi51ay1pY29uLXdlaXhpbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFkNyI7Cn0KLnVrLWljb24tc2VuZDpiZWZvcmUsCi51ay1pY29uLXBhcGVyLXBsYW5lOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWQ4IjsKfQoudWstaWNvbi1zZW5kLW86YmVmb3JlLAoudWstaWNvbi1wYXBlci1wbGFuZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWQ5IjsKfQoudWstaWNvbi1oaXN0b3J5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMWRhIjsKfQoudWstaWNvbi1nZW5kZXJsZXNzOmJlZm9yZSwKLnVrLWljb24tY2lyY2xlLXRoaW46YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZGIiOwp9Ci51ay1pY29uLWhlYWRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFkYyI7Cn0KLnVrLWljb24tcGFyYWdyYXBoOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWRkIjsKfQoudWstaWNvbi1zbGlkZXJzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWRlIjsKfQoudWstaWNvbi1zaGFyZS1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZTAiOwp9Ci51ay1pY29uLXNoYXJlLWFsdC1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZTEiOwp9Ci51ay1pY29uLWJvbWI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZTIiOwp9Ci51ay1pY29uLXNvY2Nlci1iYWxsLW86YmVmb3JlLAoudWstaWNvbi1mdXRib2wtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFlMyI7Cn0KLnVrLWljb24tdHR5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMWU0IjsKfQoudWstaWNvbi1iaW5vY3VsYXJzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWU1IjsKfQoudWstaWNvbi1wbHVnOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWU2IjsKfQoudWstaWNvbi1zbGlkZXNoYXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWU3IjsKfQoudWstaWNvbi10d2l0Y2g6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZTgiOwp9Ci51ay1pY29uLXllbHA6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZTkiOwp9Ci51ay1pY29uLW5ld3NwYXBlci1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWVhIjsKfQoudWstaWNvbi13aWZpOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWViIjsKfQoudWstaWNvbi1jYWxjdWxhdG9yOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWVjIjsKfQoudWstaWNvbi1wYXlwYWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZWQiOwp9Ci51ay1pY29uLWdvb2dsZS13YWxsZXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZWUiOwp9Ci51ay1pY29uLWNjLXZpc2E6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZjAiOwp9Ci51ay1pY29uLWNjLW1hc3RlcmNhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZjEiOwp9Ci51ay1pY29uLWNjLWRpc2NvdmVyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWYyIjsKfQoudWstaWNvbi1jYy1hbWV4OmJlZm9yZSB7CiAgY29udGVudDogIlxmMWYzIjsKfQoudWstaWNvbi1jYy1wYXlwYWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZjQiOwp9Ci51ay1pY29uLWNjLXN0cmlwZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFmNSI7Cn0KLnVrLWljb24tYmVsbC1zbGFzaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFmNiI7Cn0KLnVrLWljb24tYmVsbC1zbGFzaC1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMWY3IjsKfQoudWstaWNvbi10cmFzaDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFmOCI7Cn0KLnVrLWljb24tY29weXJpZ2h0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMWY5IjsKfQoudWstaWNvbi1hdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFmYSI7Cn0KLnVrLWljb24tZXllZHJvcHBlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjFmYiI7Cn0KLnVrLWljb24tcGFpbnQtYnJ1c2g6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZmMiOwp9Ci51ay1pY29uLWJpcnRoZGF5LWNha2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZmQiOwp9Ci51ay1pY29uLWFyZWEtY2hhcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZmUiOwp9Ci51ay1pY29uLXBpZS1jaGFydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIwMCI7Cn0KLnVrLWljb24tbGluZS1jaGFydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIwMSI7Cn0KLnVrLWljb24tbGFzdGZtOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjAyIjsKfQoudWstaWNvbi1sYXN0Zm0tc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjAzIjsKfQoudWstaWNvbi10b2dnbGUtb2ZmOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjA0IjsKfQoudWstaWNvbi10b2dnbGUtb246YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMDUiOwp9Ci51ay1pY29uLWJpY3ljbGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMDYiOwp9Ci51ay1pY29uLWJ1czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIwNyI7Cn0KLnVrLWljb24taW94aG9zdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIwOCI7Cn0KLnVrLWljb24tYW5nZWxsaXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMjA5IjsKfQoudWstaWNvbi1jYzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIwYSI7Cn0KLnVrLWljb24tc2hla2VsOmJlZm9yZSwKLnVrLWljb24tc2hlcWVsOmJlZm9yZSwKLnVrLWljb24taWxzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjBiIjsKfQoudWstaWNvbi1tZWFucGF0aDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIwYyI7Cn0KLnVrLWljb24tYnV5c2VsbGFkczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIwZCI7Cn0KLnVrLWljb24tY29ubmVjdGRldmVsb3A6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMGUiOwp9Ci51ay1pY29uLWRhc2hjdWJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjEwIjsKfQoudWstaWNvbi1mb3J1bWJlZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIxMSI7Cn0KLnVrLWljb24tbGVhbnB1YjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIxMiI7Cn0KLnVrLWljb24tc2VsbHN5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMjEzIjsKfQoudWstaWNvbi1zaGlydHNpbmJ1bGs6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMTQiOwp9Ci51ay1pY29uLXNpbXBseWJ1aWx0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMjE1IjsKfQoudWstaWNvbi1za3lhdGxhczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIxNiI7Cn0KLnVrLWljb24tY2FydC1wbHVzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjE3IjsKfQoudWstaWNvbi1jYXJ0LWFycm93LWRvd246YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMTgiOwp9Ci51ay1pY29uLWRpYW1vbmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMTkiOwp9Ci51ay1pY29uLXNoaXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMWEiOwp9Ci51ay1pY29uLXVzZXItc2VjcmV0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMjFiIjsKfQoudWstaWNvbi1tb3RvcmN5Y2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjFjIjsKfQoudWstaWNvbi1zdHJlZXQtdmlldzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIxZCI7Cn0KLnVrLWljb24taGVhcnRiZWF0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMjFlIjsKfQoudWstaWNvbi12ZW51czpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIyMSI7Cn0KLnVrLWljb24tbWFyczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIyMiI7Cn0KLnVrLWljb24tbWVyY3VyeTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIyMyI7Cn0KLnVrLWljb24tdHJhbnNnZW5kZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMjQiOwp9Ci51ay1pY29uLXRyYW5zZ2VuZGVyLWFsdDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIyNSI7Cn0KLnVrLWljb24tdmVudXMtZG91YmxlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjI2IjsKfQoudWstaWNvbi1tYXJzLWRvdWJsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIyNyI7Cn0KLnVrLWljb24tdmVudXMtbWFyczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIyOCI7Cn0KLnVrLWljb24tbWFycy1zdHJva2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMjkiOwp9Ci51ay1pY29uLW1hcnMtc3Ryb2tlLXY6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMmEiOwp9Ci51ay1pY29uLW1hcnMtc3Ryb2tlLWg6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMmIiOwp9Ci51ay1pY29uLW5ldXRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIyYyI7Cn0KLnVrLWljb24tZmFjZWJvb2stb2ZmaWNpYWw6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMzAiOwp9Ci51ay1pY29uLXBpbnRlcmVzdC1wOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjMxIjsKfQoudWstaWNvbi13aGF0c2FwcDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIzMiI7Cn0KLnVrLWljb24tc2VydmVyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjMzIjsKfQoudWstaWNvbi11c2VyLXBsdXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMzQiOwp9Ci51ay1pY29uLXVzZXItdGltZXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyMzUiOwp9Ci51ay1pY29uLWhvdGVsOmJlZm9yZSwKLnVrLWljb24tYmVkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjM2IjsKfQoudWstaWNvbi12aWFjb2luOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjM3IjsKfQoudWstaWNvbi10cmFpbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIzOCI7Cn0KLnVrLWljb24tc3Vid2F5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMjM5IjsKfQoudWstaWNvbi1tZWRpdW0tbG9nbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjIzYSI7Cn0KLnVrLWljb24tNTAwcHg6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNmUiOwp9Ci51ay1pY29uLWFtYXpvbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI3MCI7Cn0KLnVrLWljb24tYmFsYW5jZS1zY2FsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI0ZSI7Cn0KLnVrLWljb24tYmF0dGVyeS1lbXB0eTpiZWZvcmUsCi51ay1pY29uLWJhdHRlcnktMDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI0NCI7Cn0KLnVrLWljb24tYmF0dGVyeS1xdWFydGVyOmJlZm9yZSwKLnVrLWljb24tYmF0dGVyeS0xOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjQzIjsKfQoudWstaWNvbi1iYXR0ZXJ5LWhhbGY6YmVmb3JlLAoudWstaWNvbi1iYXR0ZXJ5LTI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNDIiOwp9Ci51ay1pY29uLWJhdHRlcnktdGhyZWUtcXVhcnRlcnM6YmVmb3JlLAoudWstaWNvbi1iYXR0ZXJ5LTM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNDEiOwp9Ci51ay1pY29uLWJhdHRlcnktZnVsbDpiZWZvcmUsCi51ay1pY29uLWJhdHRlcnktNDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI0MCI7Cn0KLnVrLWljb24tYmxhY2stdGllOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjdlIjsKfQoudWstaWNvbi1jYWxlbmRhci1jaGVjay1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjc0IjsKfQoudWstaWNvbi1jYWxlbmRhci1taW51cy1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjcyIjsKfQoudWstaWNvbi1jYWxlbmRhci1wbHVzLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNzEiOwp9Ci51ay1pY29uLWNhbGVuZGFyLXRpbWVzLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNzMiOwp9Ci51ay1pY29uLWNjLWRpbmVycy1jbHViOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjRjIjsKfQoudWstaWNvbi1jYy1qY2I6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNGIiOwp9Ci51ay1pY29uLWNocm9tZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI2OCI7Cn0KLnVrLWljb24tY2xvbmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNGQiOwp9Ci51ay1pY29uLWNvbW1lbnRpbmc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyN2EiOwp9Ci51ay1pY29uLWNvbW1lbnRpbmctbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI3YiI7Cn0KLnVrLWljb24tY29udGFvOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjZkIjsKfQoudWstaWNvbi1jcmVhdGl2ZS1jb21tb25zOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjVlIjsKfQoudWstaWNvbi1leHBlZGl0ZWRzc2w6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyM2UiOwp9Ci51ay1pY29uLWZpcmVmb3g6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNjkiOwp9Ci51ay1pY29uLWZvbnRpY29uczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI4MCI7Cn0KLnVrLWljb24tZ2V0LXBvY2tldDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI2NSI7Cn0KLnVrLWljb24tZ2c6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNjAiOwp9Ci51ay1pY29uLWdnLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI2MSI7Cn0KLnVrLWljb24taGFuZC1saXphcmQtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI1OCI7Cn0KLnVrLWljb24taGFuZC1zdG9wLW86YmVmb3JlLAoudWstaWNvbi1oYW5kLXBhcGVyLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNTYiOwp9Ci51ay1pY29uLWhhbmQtcGVhY2UtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI1YiI7Cn0KLnVrLWljb24taGFuZC1wb2ludGVyLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNWEiOwp9Ci51ay1pY29uLWhhbmQtZ3JhYi1vOmJlZm9yZSwKLnVrLWljb24taGFuZC1yb2NrLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNTUiOwp9Ci51ay1pY29uLWhhbmQtc2Npc3NvcnMtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI1NyI7Cn0KLnVrLWljb24taGFuZC1zcG9jay1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjU5IjsKfQoudWstaWNvbi1ob3VyZ2xhc3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNTQiOwp9Ci51ay1pY29uLWhvdXJnbGFzcy1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjUwIjsKfQoudWstaWNvbi1ob3VyZ2xhc3MtMTpiZWZvcmUsCi51ay1pY29uLWhvdXJnbGFzcy1zdGFydDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI1MSI7Cn0KLnVrLWljb24taG91cmdsYXNzLTI6YmVmb3JlLAoudWstaWNvbi1ob3VyZ2xhc3MtaGFsZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI1MiI7Cn0KLnVrLWljb24taG91cmdsYXNzLTM6YmVmb3JlLAoudWstaWNvbi1ob3VyZ2xhc3MtZW5kOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjUzIjsKfQoudWstaWNvbi1ob3V6ejpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI3YyI7Cn0KLnVrLWljb24taS1jdXJzb3I6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNDYiOwp9Ci51ay1pY29uLWluZHVzdHJ5OmJlZm9yZSB7CiAgY29udGVudDogIlxmMjc1IjsKfQoudWstaWNvbi1pbnRlcm5ldC1leHBsb3JlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI2YiI7Cn0KLnVrLWljb24tbWFwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjc5IjsKfQoudWstaWNvbi1tYXAtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI3OCI7Cn0KLnVrLWljb24tbWFwLXBpbjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI3NiI7Cn0KLnVrLWljb24tbWFwLXNpZ25zOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjc3IjsKfQoudWstaWNvbi1tb3VzZS1wb2ludGVyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjQ1IjsKfQoudWstaWNvbi1vYmplY3QtZ3JvdXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNDciOwp9Ci51ay1pY29uLW9iamVjdC11bmdyb3VwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjQ4IjsKfQoudWstaWNvbi1vZG5va2xhc3NuaWtpOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjYzIjsKfQoudWstaWNvbi1vZG5va2xhc3NuaWtpLXNxdWFyZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI2NCI7Cn0KLnVrLWljb24tb3BlbmNhcnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyM2QiOwp9Ci51ay1pY29uLW9wZXJhOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjZhIjsKfQoudWstaWNvbi1vcHRpbi1tb25zdGVyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjNjIjsKfQoudWstaWNvbi1yZWdpc3RlcmVkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjVkIjsKfQoudWstaWNvbi1zYWZhcmk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNjciOwp9Ci51ay1pY29uLXN0aWNreS1ub3RlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjQ5IjsKfQoudWstaWNvbi1zdGlja3ktbm90ZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjRhIjsKfQoudWstaWNvbi10djpiZWZvcmUsCi51ay1pY29uLXRlbGV2aXNpb246YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNmMiOwp9Ci51ay1pY29uLXRyYWRlbWFyazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI1YyI7Cn0KLnVrLWljb24tdHJpcGFkdmlzb3I6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyNjIiOwp9Ci51ay1pY29uLXZpbWVvOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjdkIjsKfQoudWstaWNvbi13aWtpcGVkaWEtdzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI2NiI7Cn0KLnVrLWljb24teWM6YmVmb3JlLAoudWstaWNvbi15LWNvbWJpbmF0b3I6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyM2IiOwp9Ci51ay1pY29uLXljLXNxdWFyZTpiZWZvcmUsCi51ay1pY29uLXktY29tYmluYXRvci1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYxZDQiOwp9Ci51ay1pY29uLWJsdWV0b290aDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI5MyI7Cn0KLnVrLWljb24tYmx1ZXRvb3RoLWI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOTQiOwp9Ci51ay1pY29uLWNvZGllcGllOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjg0IjsKfQoudWstaWNvbi1jcmVkaXQtY2FyZC1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyODMiOwp9Ci51ay1pY29uLWVkZ2U6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyODIiOwp9Ci51ay1pY29uLWZvcnQtYXdlc29tZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI4NiI7Cn0KLnVrLWljb24taGFzaHRhZzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI5MiI7Cn0KLnVrLWljb24tbWl4Y2xvdWQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyODkiOwp9Ci51ay1pY29uLW1vZHg6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyODUiOwp9Ci51ay1pY29uLXBhdXNlLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI4YiI7Cn0KLnVrLWljb24tcGF1c2UtY2lyY2xlLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOGMiOwp9Ci51ay1pY29uLXBlcmNlbnQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOTUiOwp9Ci51ay1pY29uLXByb2R1Y3QtaHVudDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI4OCI7Cn0KLnVrLWljb24tcmVkZGl0LWFsaWVuOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjgxIjsKfQoudWstaWNvbi1zY3JpYmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOGEiOwp9Ci51ay1pY29uLXNob3BwaW5nLWJhZzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI5MCI7Cn0KLnVrLWljb24tc2hvcHBpbmctYmFza2V0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMjkxIjsKfQoudWstaWNvbi1zdG9wLWNpcmNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI4ZCI7Cn0KLnVrLWljb24tc3RvcC1jaXJjbGUtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI4ZSI7Cn0KLnVrLWljb24tdXNiOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjg3IjsKfQoudWstaWNvbi1hbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZzpiZWZvcmUsCi51ay1pY29uLWFzbC1pbnRlcnByZXRpbmc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYTMiOwp9Ci51ay1pY29uLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJhMiI7Cn0KLnVrLWljb24tYXVkaW8tZGVzY3JpcHRpb246YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOWUiOwp9Ci51ay1pY29uLWJsaW5kOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjlkIjsKfQoudWstaWNvbi1icmFpbGxlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmExIjsKfQoudWstaWNvbi1kZWFmOmJlZm9yZSwKLnVrLWljb24tZGVhZm5lc3M6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYTQiOwp9Ci51ay1pY29uLWVudmlyYTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI5OSI7Cn0KLnVrLWljb24tZm9udC1hd2Vzb21lOmJlZm9yZSwKLnVrLWljb24tZmE6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYjQiOwp9Ci51ay1pY29uLWZpcnN0LW9yZGVyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmIwIjsKfQoudWstaWNvbi1naXRsYWI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOTYiOwp9Ci51ay1pY29uLWdsaWRlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmE1IjsKfQoudWstaWNvbi1nbGlkZS1nOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmE2IjsKfQoudWstaWNvbi1oYXJkLW9mLWhlYXJpbmc6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYTQiOwp9Ci51ay1pY29uLWxvdy12aXNpb246YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYTgiOwp9Ci51ay1pY29uLXF1ZXN0aW9uLWNpcmNsZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMjljIjsKfQoudWstaWNvbi1zaWduLWxhbmd1YWdlOmJlZm9yZSwKLnVrLWljb24tc2lnbmluZzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJhNyI7Cn0KLnVrLWljb24tc25hcGNoYXQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYWIiOwp9Ci51ay1pY29uLXNuYXBjaGF0LWdob3N0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMmFjIjsKfQoudWstaWNvbi1zbmFwY2hhdC1zcXVhcmU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYWQiOwp9Ci51ay1pY29uLXRoZW1laXNsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJiMiI7Cn0KLnVrLWljb24tdW5pdmVyc2FsLWFjY2VzczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjI5YSI7Cn0KLnVrLWljb24tdmlhZGVvOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmE5IjsKfQoudWstaWNvbi12aWFkZW8tc3F1YXJlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmFhIjsKfQoudWstaWNvbi12b2x1bWUtY29udHJvbC1waG9uZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJhMCI7Cn0KLnVrLWljb24td2hlZWxjaGFpci1hbHQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOWIiOwp9Ci51ay1pY29uLXdwYmVnaW5uZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOTciOwp9Ci51ay1pY29uLXdwZm9ybXM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyOTgiOwp9Ci51ay1pY29uLXlvYXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMmIxIjsKfQoudWstaWNvbi1hZHJlc3MtYm9vazpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJiOSI7Cn0KLnVrLWljb24tYWRyZXNzLWJvb2stbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJiYSI7Cn0KLnVrLWljb24tYWRyZXNzLWNhcmQ6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYmIiOwp9Ci51ay1pY29uLWFkcmVzcy1jYXJkLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYmMiOwp9Ci51ay1pY29uLWJhbmRjYW1wOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmQ1IjsKfQoudWstaWNvbi1iYXRoOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmNkIjsKfQoudWstaWNvbi1iYXRodWI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyY2QiOwp9Ci51ay1pY29uLWRyaXZlcnMtbGljZW5zZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJjMiI7Cn0KLnVrLWljb24tZHJpdmVycy1saWNlbnNlLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYzMiOwp9Ci51ay1pY29uLWVlcmNhc3Q6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyZGEiOwp9Ci51ay1pY29uLWVudmVsb3BlLW9wZW46YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYjYiOwp9Ci51ay1pY29uLWVudmVsb3BlLW9wZW4tbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJiNyI7Cn0KLnVrLWljb24tZXRzeTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJkNyI7Cn0KLnVrLWljb24tZnJlZS1jb2RlLWNhbXA6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYzUiOwp9Ci51ay1pY29uLWdyYXY6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyZDYiOwp9Ci51ay1pY29uLWhhbmRzaGFrZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmI1IjsKfQoudWstaWNvbi1pZC1iYWRnZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJjMSI7Cn0KLnVrLWljb24taWQtY2FyZDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJjMiI7Cn0KLnVrLWljb24taWQtY2FyZC1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmMzIjsKfQoudWstaWNvbi1pbWRiOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmQ4IjsKfQoudWstaWNvbi1saW5vZGU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYjgiOwp9Ci51ay1pY29uLW1lZXR1cDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJlMCI7Cn0KLnVrLWljb24tbWljcm9jaGlwOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmRiIjsKfQoudWstaWNvbi1wb2RjYXN0OmJlZm9yZSB7CiAgY29udGVudDogIlxmMmNlIjsKfQoudWstaWNvbi1xdW9yYTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJjNCI7Cn0KLnVrLWljb24tcmF2ZWxyeTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJkOSI7Cn0KLnVrLWljb24tczE1OmJlZm9yZSB7CiAgY29udGVudDogIlxmMmNkIjsKfQoudWstaWNvbi1zaG93ZXI6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyY2MiOwp9Ci51ay1pY29uLXNub3dmbGFrZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmRjIjsKfQoudWstaWNvbi1zdXBlcnBvd2VyczpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJkZCI7Cn0KLnVrLWljb24tdGVsZWdyYW06YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYzYiOwp9Ci51ay1pY29uLXRoZXJtb21ldGVyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmM3IjsKfQoudWstaWNvbi10aGVybW9tZXRlci0wOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmNiIjsKfQoudWstaWNvbi10aGVybW9tZXRlci0xOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmNhIjsKfQoudWstaWNvbi10aGVybW9tZXRlci0yOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmM5IjsKfQoudWstaWNvbi10aGVybW9tZXRlci0zOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmM4IjsKfQoudWstaWNvbi10aGVybW9tZXRlci00OmJlZm9yZSB7CiAgY29udGVudDogIlxmMmM3IjsKfQoudWstaWNvbi10aGVybW9tZXRlci1lbXB0eTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJjYiI7Cn0KLnVrLWljb24tdGhlcm1vbWV0ZXItZnVsbDpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJjNyI7Cn0KLnVrLWljb24tdGhlcm1vbWV0ZXItaGFsZjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJjOSI7Cn0KLnVrLWljb24tdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJjYSI7Cn0KLnVrLWljb24tdGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnM6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYzgiOwp9Ci51ay1pY29uLXRpbWVzLXJlY3RhbmdsZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJkMyI7Cn0KLnVrLWljb24tdGltZXMtcmVjdGFuZ2xlLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyZDQiOwp9Ci51ay1pY29uLXVzZXItY2lyY2xlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmJkIjsKfQoudWstaWNvbi11c2VyLWNpcmNsZS1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmJlIjsKfQoudWstaWNvbi11c2VyLW86YmVmb3JlIHsKICBjb250ZW50OiAiXGYyYzAiOwp9Ci51ay1pY29uLXZjYXJkOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmJiIjsKfQoudWstaWNvbi12Y2FyZC1vOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmJjIjsKfQoudWstaWNvbi13aWRvdy1jbG9zZTpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJkMyI7Cn0KLnVrLWljb24td2lkb3ctY2xvc2UtbzpiZWZvcmUgewogIGNvbnRlbnQ6ICJcZjJkNCI7Cn0KLnVrLWljb24td2luZG93LW1heGltaXplOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmQwIjsKfQoudWstaWNvbi13aW5kb3ctbWluaW1pemU6YmVmb3JlIHsKICBjb250ZW50OiAiXGYyZDEiOwp9Ci51ay1pY29uLXdpbmRvdy1yZXN0b3JlOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmQyIjsKfQoudWstaWNvbi13cGV4cGxvcmVyOmJlZm9yZSB7CiAgY29udGVudDogIlxmMmRlIjsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBDbG9zZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogUmVtb3ZlcyBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky4KICovCi51ay1jbG9zZTo6LW1vei1mb2N1cy1pbm5lciB7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7Cn0KLyoKICogMS4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLgogKiAyLiBSZW1vdmUgbWFyZ2lucyBpbiBDaHJvbWUsIFNhZmFyaSBhbmQgT3BlcmEuCiAqIDMuIFJlbW92ZSBib3JkZXJzIGZvciBgYnV0dG9uYC4KICogNC4gQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuCiAqIDUuIENvcnJlY3QgYGZvbnRgIHByb3BlcnRpZXMgYW5kIGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBmb3IgYGJ1dHRvbmAuCiAqIDYuIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2Ugd2hpY2ggaXMgb25seSBpbmhlcml0IGluIEZpcmVmb3ggYW5kIElFCiAqIDcuIFJlbW92ZSBkZWZhdWx0IGBidXR0b25gIHBhZGRpbmcgYW5kIGJhY2tncm91bmQgY29sb3IKICogOC4gU3R5bGUKICovCi51ay1jbG9zZSB7CiAgLyogMSAqLwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAvKiAyICovCiAgbWFyZ2luOiAwOwogIC8qIDMgKi8KICBib3JkZXI6IG5vbmU7CiAgLyogNCAqLwogIG92ZXJmbG93OiB2aXNpYmxlOwogIC8qIDUgKi8KICBmb250OiBpbmhlcml0OwogIGNvbG9yOiBpbmhlcml0OwogIC8qIDYgKi8KICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAvKiA3LiAqLwogIHBhZGRpbmc6IDA7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgLyogOCAqLwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICB3aWR0aDogMjBweDsKICBsaW5lLWhlaWdodDogMjBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBvcGFjaXR5OiAwLjM7Cn0KLyogSWNvbiAqLwoudWstY2xvc2U6YWZ0ZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICJcZjAwZCI7CiAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwp9Ci8qCiAqIEhvdmVyCiAqIDEuIEFwcGx5IGhvdmVyIHN0eWxlIGFsc28gdG8gZm9jdXMgc3RhdGUKICogMi4gUmVtb3ZlIGRlZmF1bHQgZm9jdXMgc3R5bGUKICogMy4gUmVxdWlyZWQgZm9yIGBhYCBlbGVtZW50cwogKi8KLnVrLWNsb3NlOmhvdmVyLAoudWstY2xvc2U6Zm9jdXMgewogIG9wYWNpdHk6IDAuNTsKICAvKiAyICovCiAgb3V0bGluZTogbm9uZTsKICAvKiAzICovCiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsKfQovKiBNb2RpZmllcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWNsb3NlLWFsdCB7CiAgcGFkZGluZzogMnB4OwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBiYWNrZ3JvdW5kOiAjZWVlOwogIG9wYWNpdHk6IDE7Cn0KLyogSG92ZXIgKi8KLnVrLWNsb3NlLWFsdDpob3ZlciwKLnVrLWNsb3NlLWFsdDpmb2N1cyB7CiAgb3BhY2l0eTogMTsKfQovKiBJY29uICovCi51ay1jbG9zZS1hbHQ6YWZ0ZXIgewogIG9wYWNpdHk6IDAuNTsKfQoudWstY2xvc2UtYWx0OmhvdmVyOmFmdGVyLAoudWstY2xvc2UtYWx0OmZvY3VzOmFmdGVyIHsKICBvcGFjaXR5OiAwLjg7Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogQmFkZ2UKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDAgNXB4OwogIGJhY2tncm91bmQ6ICMwMGE4ZTY7CiAgZm9udC1zaXplOiAxMHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiAxNHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwp9Ci8qCiAqIEtlZXAgY29sb3Igd2hlbiBiYWRnZSBpcyBhIGxpbmsKICovCmEudWstYmFkZ2U6aG92ZXIgewogIGNvbG9yOiAjZmZmOwp9Ci8qIE1vZGlmaWVyOiBgdWstYmFkZ2Utbm90aWZpY2F0aW9uYDsKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1iYWRnZS1ub3RpZmljYXRpb24gewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgbWluLXdpZHRoOiAxOHB4OwogIGJvcmRlci1yYWRpdXM6IDUwMHB4OwogIGZvbnQtc2l6ZTogMTJweDsKICBsaW5lLWhlaWdodDogMThweDsKfQovKiBDb2xvciBtb2RpZmllcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogTW9kaWZpZXI6IGB1ay1iYWRnZS1zdWNjZXNzYAogKi8KLnVrLWJhZGdlLXN1Y2Nlc3MgewogIGJhY2tncm91bmQtY29sb3I6ICM4Y2MxNGM7Cn0KLyoKICogTW9kaWZpZXI6IGB1ay1iYWRnZS13YXJuaW5nYAogKi8KLnVrLWJhZGdlLXdhcm5pbmcgewogIGJhY2tncm91bmQtY29sb3I6ICNmYWE3MzI7Cn0KLyoKICogTW9kaWZpZXI6IGB1ay1iYWRnZS1kYW5nZXJgCiAqLwoudWstYmFkZ2UtZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGEzMTRiOwp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IEFsZXJ0CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstYWxlcnQgewogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgcGFkZGluZzogMTBweDsKICBiYWNrZ3JvdW5kOiAjZWJmN2ZkOwogIGNvbG9yOiAjMmQ3MDkxOwp9Ci8qCiAqIEFkZCBtYXJnaW4gaWYgYWRqYWNlbnQgZWxlbWVudAogKi8KKiArIC51ay1hbGVydCB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQovKgogKiBSZW1vdmUgbWFyZ2luIGZyb20gdGhlIGxhc3QtY2hpbGQKICovCi51ay1hbGVydCA+IDpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci8qCiAqIEtlZXAgY29sb3IgZm9yIGhlYWRpbmdzIGlmIHRoZSBkZWZhdWx0IGhlYWRpbmcgY29sb3IgaXMgY2hhbmdlZAogKi8KLnVrLWFsZXJ0IGgxLAoudWstYWxlcnQgaDIsCi51ay1hbGVydCBoMywKLnVrLWFsZXJ0IGg0LAoudWstYWxlcnQgaDUsCi51ay1hbGVydCBoNiB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLyogQ2xvc2UgaW4gYWxlcnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1hbGVydCA+IC51ay1jbG9zZTpmaXJzdC1jaGlsZCB7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci8qCiAqIFJlbW92ZSBtYXJnaW4gZnJvbSBhZGphY2VudCBlbGVtZW50CiAqLwoudWstYWxlcnQgPiAudWstY2xvc2U6Zmlyc3QtY2hpbGQgKyAqIHsKICBtYXJnaW4tdG9wOiAwOwp9Ci8qIE1vZGlmaWVyOiBgdWstYWxlcnQtc3VjY2Vzc2AKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1hbGVydC1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kOiAjZjJmYWUzOwogIGNvbG9yOiAjNjU5ZjEzOwp9Ci8qIE1vZGlmaWVyOiBgdWstYWxlcnQtd2FybmluZ2AKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1hbGVydC13YXJuaW5nIHsKICBiYWNrZ3JvdW5kOiAjZmZmY2ViOwogIGNvbG9yOiAjZTI4MzI3Owp9Ci8qIE1vZGlmaWVyOiBgdWstYWxlcnQtZGFuZ2VyYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWFsZXJ0LWRhbmdlciB7CiAgYmFja2dyb3VuZDogI2ZmZjFmMDsKICBjb2xvcjogI2Q4NTAzMDsKfQovKiBNb2RpZmllcjogYHVrLWFsZXJ0LWxhcmdlYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWFsZXJ0LWxhcmdlIHsKICBwYWRkaW5nOiAyMHB4Owp9Ci51ay1hbGVydC1sYXJnZSA+IC51ay1jbG9zZTpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luOiAtMTBweCAtMTBweCAwIDA7Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogVGh1bWJuYWlsCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBDb250YWluZXIgd2lkdGggZml0cyBpdHMgY29udGVudAogKiAyLiBSZXNwb25zaXZlIGJlaGF2aW9yCiAqIDMuIENvcnJlY3RzIGBtYXgtd2lkdGhgIGJlaGF2aW9yIHNlZAogKiA0LiBSZXF1aXJlZCBmb3IgYGZpZ3VyZWAgZWxlbWVudAogKiA1LiBTdHlsZQogKi8KLnVrLXRodW1ibmFpbCB7CiAgLyogMSAqLwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAvKiAyICovCiAgbWF4LXdpZHRoOiAxMDAlOwogIC8qIDMgKi8KICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIC8qIDMgKi8KICBtYXJnaW46IDA7CiAgLyogNCAqLwogIHBhZGRpbmc6IDRweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJhY2tncm91bmQ6ICNmZmY7Cn0KLyoKICogSG92ZXIgc3RhdGUgZm9yIGBhYCBlbGVtZW50cwogKiAxLiBBcHBseSBob3ZlciBzdHlsZSBhbHNvIHRvIGZvY3VzIHN0YXRlCiAqIDIuIE5lZWRlZCBmb3IgY2FwdGlvbgogKiAzLiBSZW1vdmUgZGVmYXVsdCBmb2N1cyBzdHlsZQogKi8KYS51ay10aHVtYm5haWw6aG92ZXIsCmEudWstdGh1bWJuYWlsOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICNhYWE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAvKiAyICovCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIC8qIDMgKi8KICBvdXRsaW5lOiBub25lOwp9Ci8qIENhcHRpb24KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay10aHVtYm5haWwtY2FwdGlvbiB7CiAgcGFkZGluZy10b3A6IDRweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY29sb3I6ICM0NDQ7Cn0KLyogU2l6ZXMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay10aHVtYm5haWwtbWluaSB7CiAgd2lkdGg6IDE1MHB4Owp9Ci51ay10aHVtYm5haWwtc21hbGwgewogIHdpZHRoOiAyMDBweDsKfQoudWstdGh1bWJuYWlsLW1lZGl1bSB7CiAgd2lkdGg6IDMwMHB4Owp9Ci51ay10aHVtYm5haWwtbGFyZ2UgewogIHdpZHRoOiA0MDBweDsKfQoudWstdGh1bWJuYWlsLWV4cGFuZCwKLnVrLXRodW1ibmFpbC1leHBhbmQgPiBpbWcgewogIHdpZHRoOiAxMDAlOwp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IE92ZXJsYXkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIDEuIENvbnRhaW5lciB3aWR0aCBmaXRzIGl0cyBjb250ZW50CiAqIDIuIENyZWF0ZSBwb3NpdGlvbiBjb250ZXh0CiAqIDMuIFNldCBtYXgtd2lkdGggZm9yIHJlc3BvbnNpdmUgaW1hZ2VzIHRvIHByZXZlbnQgYGlubGluZS1ibG9ja2AgY29uc2VxdWVuY2VzCiAqIDQuIFJlbW92ZSB0aGUgZ2FwIGJldHdlZW4gdGhlIGNvbnRhaW5lciBhbmQgaXRzIGNoaWxkIGVsZW1lbnQKICogNS4gTmVlZGVkIGZvciB0cmFuc2l0aW9ucyBhbmQgdG8gZml4ZWQgd3Jvbmcgc2NhbGluZyBjYWxjdWxhdGlvbiBmb3IgaW1hZ2VzIGluIENocm9tZQogKiA2LiBGaXhlZCBgb3ZlcmZsb3c6IGhpZGRlbmAgdG8gYmUgaWdub3JlZCB3aXRoIGJvcmRlci1yYWRpdXMgYW5kIENTUyB0cmFuc2Zvcm1zIGluIFdlYmtpdAogKiA3LiBSZXNldCBtYXJnaW4KICovCi51ay1vdmVybGF5IHsKICAvKiAxICovCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIC8qIDIgKi8KICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLyogMyAqLwogIG1heC13aWR0aDogMTAwJTsKICAvKiA0ICovCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAvKiA1ICovCiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAvKiA2ICovCiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgLyogNyAqLwogIG1hcmdpbjogMDsKfQovKiA2IGZvciBTYWZhcmkgKi8KLnVrLW92ZXJsYXkudWstYm9yZGVyLWNpcmNsZSB7CiAgLXdlYmtpdC1tYXNrLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHdoaXRlIDEwMCUsIGJsYWNrIDEwMCUpOwp9Ci8qCiAqIFJlbW92ZSBtYXJnaW4gZnJvbSBjb250ZW50CiAqLwoudWstb3ZlcmxheSA+IDpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQovKiBTdWItb2JqZWN0IGB1ay1vdmVybGF5LXBhbmVsYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gUG9zaXRpb24gY292ZXIKICogMi4gU3R5bGUKICovCi51ay1vdmVybGF5LXBhbmVsIHsKICAvKiAxICovCiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICByaWdodDogMDsKICAvKiAyICovCiAgcGFkZGluZzogMjBweDsKICBjb2xvcjogI2ZmZjsKfQovKgogKiBSZW1vdmUgbWFyZ2luIGZyb20gdGhlIGxhc3QtY2hpbGQKICovCi51ay1vdmVybGF5LXBhbmVsID4gOmxhc3QtY2hpbGQsCi51ay1vdmVybGF5LXBhbmVsLnVrLWZsZXggPiAqID4gOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KLyoKICogS2VlcCBjb2xvciBmb3IgaGVhZGluZ3MgaWYgdGhlIGRlZmF1bHQgaGVhZGluZyBjb2xvciBpcyBjaGFuZ2VkCiAqLwoudWstb3ZlcmxheS1wYW5lbCBoMSwKLnVrLW92ZXJsYXktcGFuZWwgaDIsCi51ay1vdmVybGF5LXBhbmVsIGgzLAoudWstb3ZlcmxheS1wYW5lbCBoNCwKLnVrLW92ZXJsYXktcGFuZWwgaDUsCi51ay1vdmVybGF5LXBhbmVsIGg2IHsKICBjb2xvcjogaW5oZXJpdDsKfQoudWstb3ZlcmxheS1wYW5lbCBhOm5vdChbY2xhc3NdKSB7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KLnVrLW92ZXJsYXktcGFuZWwgYVtjbGFzcyo9J3VrLWljb24tJ106bm90KC51ay1pY29uLWJ1dHRvbikgewogIGNvbG9yOiBpbmhlcml0Owp9Ci8qIFN1Yi1vYmplY3QgYHVrLW92ZXJsYXktaG92ZXJgIGFuZCBgdWstb3ZlcmxheS1hY3RpdmVgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstb3ZlcmxheS1ob3Zlcjpub3QoOmhvdmVyKTpub3QoLnVrLWhvdmVyKSAudWstb3ZlcmxheS1wYW5lbDpub3QoLnVrLWlnbm9yZSkgewogIG9wYWNpdHk6IDA7Cn0KLnVrLW92ZXJsYXktYWN0aXZlIDpub3QoLnVrLWFjdGl2ZSkgPiAudWstb3ZlcmxheS1wYW5lbDpub3QoLnVrLWlnbm9yZSkgewogIG9wYWNpdHk6IDA7Cn0KLyogTW9kaWZpZXIgYHVrLW92ZXJsYXktYmFja2dyb3VuZGAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1vdmVybGF5LWJhY2tncm91bmQgewogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTsKfQovKiBNb2RpZmllciBgdWstb3ZlcmxheS1pbWFnZWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIFJlc2V0IHBhbmVsCiAqLwoudWstb3ZlcmxheS1pbWFnZSB7CiAgcGFkZGluZzogMDsKfQovKiBQb3NpdGlvbiBtb2RpZmllcnMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1vdmVybGF5LXRvcCB7CiAgYm90dG9tOiBhdXRvOwp9Ci51ay1vdmVybGF5LWJvdHRvbSB7CiAgdG9wOiBhdXRvOwp9Ci51ay1vdmVybGF5LWxlZnQgewogIHJpZ2h0OiBhdXRvOwp9Ci51ay1vdmVybGF5LXJpZ2h0IHsKICBsZWZ0OiBhdXRvOwp9Ci8qIFN1Yi1vYmplY3QgYHVrLW92ZXJsYXktaWNvbmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1vdmVybGF5LWljb246YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMDIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwJTsKICBsZWZ0OiA1MCU7CiAgd2lkdGg6IDUwcHg7CiAgaGVpZ2h0OiA1MHB4OwogIG1hcmdpbi10b3A6IC0yNXB4OwogIG1hcmdpbi1sZWZ0OiAtMjVweDsKICBmb250LXNpemU6IDUwcHg7CiAgbGluZS1oZWlnaHQ6IDE7CiAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBjb2xvcjogI2ZmZjsKfQovKiBUcmFuc2l0aW9ucwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLW92ZXJsYXktZmFkZSwKLnVrLW92ZXJsYXktc2NhbGUsCi51ay1vdmVybGF5LXNwaW4sCi51ay1vdmVybGF5LWdyYXlzY2FsZSwKLnVrLW92ZXJsYXktYmx1ciwKW2NsYXNzKj0ndWstb3ZlcmxheS1zbGlkZSddIHsKICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzOwogIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCB0cmFuc2Zvcm0sIGZpbHRlcjsKfQoudWstb3ZlcmxheS1hY3RpdmUgLnVrLW92ZXJsYXktZmFkZSwKLnVrLW92ZXJsYXktYWN0aXZlIC51ay1vdmVybGF5LXNjYWxlLAoudWstb3ZlcmxheS1hY3RpdmUgLnVrLW92ZXJsYXktc3BpbiwKLnVrLW92ZXJsYXktYWN0aXZlIFtjbGFzcyo9J3VrLW92ZXJsYXktc2xpZGUnXSB7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC44czsKfQovKgogKiBGYWRlCiAqLwoudWstb3ZlcmxheS1mYWRlIHsKICBvcGFjaXR5OiAwLjc7Cn0KLnVrLW92ZXJsYXktaG92ZXI6aG92ZXIgLnVrLW92ZXJsYXktZmFkZSwKLnVrLW92ZXJsYXktaG92ZXIudWstaG92ZXIgLnVrLW92ZXJsYXktZmFkZSwKLnVrLW92ZXJsYXktYWN0aXZlIC51ay1hY3RpdmUgPiAudWstb3ZlcmxheS1mYWRlIHsKICBvcGFjaXR5OiAxOwp9Ci8qCiAqIFNjYWxlCiAqLwoudWstb3ZlcmxheS1zY2FsZSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogIHRyYW5zZm9ybTogc2NhbGUoMSk7Cn0KLnVrLW92ZXJsYXktaG92ZXI6aG92ZXIgLnVrLW92ZXJsYXktc2NhbGUsCi51ay1vdmVybGF5LWhvdmVyLnVrLWhvdmVyIC51ay1vdmVybGF5LXNjYWxlLAoudWstb3ZlcmxheS1hY3RpdmUgLnVrLWFjdGl2ZSA+IC51ay1vdmVybGF5LXNjYWxlIHsKICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7Cn0KLyoKICogU3BpbgogKi8KLnVrLW92ZXJsYXktc3BpbiB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwZGVnKTsKICB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwZGVnKTsKfQoudWstb3ZlcmxheS1ob3Zlcjpob3ZlciAudWstb3ZlcmxheS1zcGluLAoudWstb3ZlcmxheS1ob3Zlci51ay1ob3ZlciAudWstb3ZlcmxheS1zcGluLAoudWstb3ZlcmxheS1hY3RpdmUgLnVrLWFjdGl2ZSA+IC51ay1vdmVybGF5LXNwaW4gewogIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjEpIHJvdGF0ZSgzZGVnKTsKICB0cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKDNkZWcpOwp9Ci8qCiAqIEdyYXlzY2FsZQogKi8KLnVrLW92ZXJsYXktZ3JheXNjYWxlIHsKICAtd2Via2l0LWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpOwogIGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpOwp9Ci51ay1vdmVybGF5LWhvdmVyOmhvdmVyIC51ay1vdmVybGF5LWdyYXlzY2FsZSwKLnVrLW92ZXJsYXktaG92ZXIudWstaG92ZXIgLnVrLW92ZXJsYXktZ3JheXNjYWxlLAoudWstb3ZlcmxheS1hY3RpdmUgLnVrLWFjdGl2ZSA+IC51ay1vdmVybGF5LWdyYXlzY2FsZSB7CiAgLXdlYmtpdC1maWx0ZXI6IGdyYXlzY2FsZSgwJSk7CiAgZmlsdGVyOiBncmF5c2NhbGUoMCUpOwp9Ci8qCiAqIFNsaWRlCiAqLwpbY2xhc3MqPSd1ay1vdmVybGF5LXNsaWRlJ10gewogIG9wYWNpdHk6IDA7Cn0KLyogVG9wICovCi51ay1vdmVybGF5LXNsaWRlLXRvcCB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7Cn0KLyogQm90dG9tICovCi51ay1vdmVybGF5LXNsaWRlLWJvdHRvbSB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwp9Ci8qIExlZnQgKi8KLnVrLW92ZXJsYXktc2xpZGUtbGVmdCB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7Cn0KLyogUmlnaHQgKi8KLnVrLW92ZXJsYXktc2xpZGUtcmlnaHQgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKfQovKiBIb3ZlciAqLwoudWstb3ZlcmxheS1ob3Zlcjpob3ZlciBbY2xhc3MqPSd1ay1vdmVybGF5LXNsaWRlJ10sCi51ay1vdmVybGF5LWhvdmVyLnVrLWhvdmVyIFtjbGFzcyo9J3VrLW92ZXJsYXktc2xpZGUnXSwKLnVrLW92ZXJsYXktYWN0aXZlIC51ay1hY3RpdmUgPiBbY2xhc3MqPSd1ay1vdmVybGF5LXNsaWRlJ10gewogIG9wYWNpdHk6IDE7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgdHJhbnNsYXRlWSgwKTsKfQovKiBERVBSRUNBVEVECiAqIFN1Yi1vYmplY3QgYHVrLW92ZXJsYXktYXJlYWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIDEuIFNldCBwb3NpdGlvbgogKiAyLiBTZXQgc3R5bGUKICogMy4gRmFkZS1pbiB0cmFuc2l0aW9uCiAqLwoudWstb3ZlcmxheS1hcmVhIHsKICAvKiAxICovCiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICByaWdodDogMDsKICAvKiAyICovCiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOwogIC8qIDMgKi8KICBvcGFjaXR5OiAwOwogIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwp9Ci8qCiAqIEhvdmVyCiAqIDEuIGB1ay1ob3ZlcmAgdG8gc3VwcG9ydCB0b3VjaCBkZXZpY2VzCiAqIDIuIFVzZSBvcHRpb25hbCBgdWstb3ZlcmxheS10b2dnbGVgIHRvIHRyaWdnZXIgdGhlIG92ZXJsYXkgZWFybGllcgogKi8KLnVrLW92ZXJsYXk6aG92ZXIgLnVrLW92ZXJsYXktYXJlYSwKLnVrLW92ZXJsYXkudWstaG92ZXIgLnVrLW92ZXJsYXktYXJlYSwKLnVrLW92ZXJsYXktdG9nZ2xlOmhvdmVyIC51ay1vdmVybGF5LWFyZWEsCi51ay1vdmVybGF5LXRvZ2dsZS51ay1ob3ZlciAudWstb3ZlcmxheS1hcmVhIHsKICBvcGFjaXR5OiAxOwp9Ci8qCiAqIEljb24KICovCi51ay1vdmVybGF5LWFyZWE6ZW1wdHk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwMDIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwJTsKICBsZWZ0OiA1MCU7CiAgd2lkdGg6IDUwcHg7CiAgaGVpZ2h0OiA1MHB4OwogIG1hcmdpbi10b3A6IC0yNXB4OwogIG1hcmdpbi1sZWZ0OiAtMjVweDsKICBmb250LXNpemU6IDUwcHg7CiAgbGluZS1oZWlnaHQ6IDE7CiAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBjb2xvcjogI2ZmZjsKfQovKiBERVBSRUNBVEVECiAqIFN1Yi1vYmplY3QgYHVrLW92ZXJsYXktYXJlYS1jb250ZW50YAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogUmVtb3ZlIHdoaXRlc3BhY2UgYmV0d2VlbiBjaGlsZCBlbGVtZW50cyB3aGVuIHVzaW5nIGBpbmxpbmUtYmxvY2tgCiAqIE5lZWRlZCBmb3IgRmlyZWZveAogKi8KLnVrLW92ZXJsYXktYXJlYTpub3QoOmVtcHR5KSB7CiAgZm9udC1zaXplOiAwLjAwMXB4Owp9Ci8qCiAqIDEuIE5lZWRlZCBmb3IgdmVydGljYWwgYWxpZ25tZW50CiAqLwoudWstb3ZlcmxheS1hcmVhOm5vdCg6ZW1wdHkpOmJlZm9yZSB7CiAgY29udGVudDogJyc7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogMTAwJTsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci8qCiAqIDEuIFNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQKICogMi4gUmVzZXQgd2hpdGVzcGFjZSBoYWNrCiAqIDMuIFNldCBob3Jpem9udGFsIGFsaWdubWVudAogKiA0LiBTZXQgc3R5bGUKICovCi51ay1vdmVybGF5LWFyZWEtY29udGVudCB7CiAgLyogMSAqLwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHdpZHRoOiAxMDAlOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgLyogMiAqLwogIGZvbnQtc2l6ZTogMXJlbTsKICAvKiAzICovCiAgdGV4dC1hbGlnbjogY2VudGVyOwogIC8qIDQgKi8KICBwYWRkaW5nOiAwIDE1cHg7CiAgY29sb3I6ICNmZmY7Cn0KLyoKICogUmVtb3ZlIG1hcmdpbiBmcm9tIHRoZSBsYXN0LWNoaWxkCiAqLwoudWstb3ZlcmxheS1hcmVhLWNvbnRlbnQgPiA6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQovKgogKiBMaW5rcyBpbiBvdmVybGF5IGFyZWEKICovCi51ay1vdmVybGF5LWFyZWEtY29udGVudCBhOm5vdChbY2xhc3NdKSwKLnVrLW92ZXJsYXktYXJlYS1jb250ZW50IGE6bm90KFtjbGFzc10pOmhvdmVyIHsKICBjb2xvcjogaW5oZXJpdDsKfQovKiBERVBSRUNBVEVECiAqIFN1Yi1vYmplY3QgYHVrLW92ZXJsYXktY2FwdGlvbmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIDEuIFNldCBwb3NpdGlvbgogKiAyLiBTZXQgc3R5bGUKICogMy4gRmFkZS1pbiB0cmFuc2l0aW9uCiAqLwoudWstb3ZlcmxheS1jYXB0aW9uIHsKICAvKiAxICovCiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHJpZ2h0OiAwOwogIC8qIDIgKi8KICBwYWRkaW5nOiAxNXB4OwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTsKICBjb2xvcjogI2ZmZjsKICAvKiAzICovCiAgb3BhY2l0eTogMDsKICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKfQovKgogKiBIb3ZlcgogKiAxLiBgdWstaG92ZXJgIHRvIHN1cHBvcnQgdG91Y2ggZGV2aWNlcwogKiAyLiBVc2Ugb3B0aW9uYWwgYHVrLW92ZXJsYXktdG9nZ2xlYCB0byB0cmlnZ2VyIHRoZSBvdmVybGF5IGVhcmxpZXIKICovCi51ay1vdmVybGF5OmhvdmVyIC51ay1vdmVybGF5LWNhcHRpb24sCi51ay1vdmVybGF5LnVrLWhvdmVyIC51ay1vdmVybGF5LWNhcHRpb24sCi51ay1vdmVybGF5LXRvZ2dsZTpob3ZlciAudWstb3ZlcmxheS1jYXB0aW9uLAoudWstb3ZlcmxheS10b2dnbGUudWstaG92ZXIgLnVrLW92ZXJsYXktY2FwdGlvbiB7CiAgb3BhY2l0eTogMTsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBDb2x1bW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCltjbGFzcyo9J3VrLWNvbHVtbi0nXSB7CiAgLXdlYmtpdC1jb2x1bW4tZ2FwOiAyNXB4OwogIC1tb3otY29sdW1uLWdhcDogMjVweDsKICBjb2x1bW4tZ2FwOiAyNXB4Owp9Ci8qIFdpZHRoIG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWNvbHVtbi0xLTIgewogIC13ZWJraXQtY29sdW1uLWNvdW50OiAyOwogIC1tb3otY29sdW1uLWNvdW50OiAyOwogIGNvbHVtbi1jb3VudDogMjsKfQoudWstY29sdW1uLTEtMyB7CiAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDM7CiAgLW1vei1jb2x1bW4tY291bnQ6IDM7CiAgY29sdW1uLWNvdW50OiAzOwp9Ci51ay1jb2x1bW4tMS00IHsKICAtd2Via2l0LWNvbHVtbi1jb3VudDogNDsKICAtbW96LWNvbHVtbi1jb3VudDogNDsKICBjb2x1bW4tY291bnQ6IDQ7Cn0KLnVrLWNvbHVtbi0xLTUgewogIC13ZWJraXQtY29sdW1uLWNvdW50OiA1OwogIC1tb3otY29sdW1uLWNvdW50OiA1OwogIGNvbHVtbi1jb3VudDogNTsKfQoudWstY29sdW1uLTEtNiB7CiAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDY7CiAgLW1vei1jb2x1bW4tY291bnQ6IDY7CiAgY29sdW1uLWNvdW50OiA2Owp9Ci8qIFBob25lIGxhbmRzY2FwZSBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA0ODBweCkgewogIC51ay1jb2x1bW4tc21hbGwtMS0yIHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAyOwogICAgLW1vei1jb2x1bW4tY291bnQ6IDI7CiAgICBjb2x1bW4tY291bnQ6IDI7CiAgfQogIC51ay1jb2x1bW4tc21hbGwtMS0zIHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOwogICAgLW1vei1jb2x1bW4tY291bnQ6IDM7CiAgICBjb2x1bW4tY291bnQ6IDM7CiAgfQogIC51ay1jb2x1bW4tc21hbGwtMS00IHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiA0OwogICAgLW1vei1jb2x1bW4tY291bnQ6IDQ7CiAgICBjb2x1bW4tY291bnQ6IDQ7CiAgfQogIC51ay1jb2x1bW4tc21hbGwtMS01IHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiA1OwogICAgLW1vei1jb2x1bW4tY291bnQ6IDU7CiAgICBjb2x1bW4tY291bnQ6IDU7CiAgfQogIC51ay1jb2x1bW4tc21hbGwtMS02IHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiA2OwogICAgLW1vei1jb2x1bW4tY291bnQ6IDY7CiAgICBjb2x1bW4tY291bnQ6IDY7CiAgfQp9Ci8qIFRhYmxldCBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC51ay1jb2x1bW4tbWVkaXVtLTEtMiB7CiAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMjsKICAgIC1tb3otY29sdW1uLWNvdW50OiAyOwogICAgY29sdW1uLWNvdW50OiAyOwogIH0KICAudWstY29sdW1uLW1lZGl1bS0xLTMgewogICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDM7CiAgICAtbW96LWNvbHVtbi1jb3VudDogMzsKICAgIGNvbHVtbi1jb3VudDogMzsKICB9CiAgLnVrLWNvbHVtbi1tZWRpdW0tMS00IHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiA0OwogICAgLW1vei1jb2x1bW4tY291bnQ6IDQ7CiAgICBjb2x1bW4tY291bnQ6IDQ7CiAgfQogIC51ay1jb2x1bW4tbWVkaXVtLTEtNSB7CiAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogNTsKICAgIC1tb3otY29sdW1uLWNvdW50OiA1OwogICAgY29sdW1uLWNvdW50OiA1OwogIH0KICAudWstY29sdW1uLW1lZGl1bS0xLTYgewogICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDY7CiAgICAtbW96LWNvbHVtbi1jb3VudDogNjsKICAgIGNvbHVtbi1jb3VudDogNjsKICB9Cn0KLyogRGVza3RvcCBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkgewogIC51ay1jb2x1bW4tbGFyZ2UtMS0yIHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAyOwogICAgLW1vei1jb2x1bW4tY291bnQ6IDI7CiAgICBjb2x1bW4tY291bnQ6IDI7CiAgfQogIC51ay1jb2x1bW4tbGFyZ2UtMS0zIHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOwogICAgLW1vei1jb2x1bW4tY291bnQ6IDM7CiAgICBjb2x1bW4tY291bnQ6IDM7CiAgfQogIC51ay1jb2x1bW4tbGFyZ2UtMS00IHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiA0OwogICAgLW1vei1jb2x1bW4tY291bnQ6IDQ7CiAgICBjb2x1bW4tY291bnQ6IDQ7CiAgfQogIC51ay1jb2x1bW4tbGFyZ2UtMS01IHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiA1OwogICAgLW1vei1jb2x1bW4tY291bnQ6IDU7CiAgICBjb2x1bW4tY291bnQ6IDU7CiAgfQogIC51ay1jb2x1bW4tbGFyZ2UtMS02IHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiA2OwogICAgLW1vei1jb2x1bW4tY291bnQ6IDY7CiAgICBjb2x1bW4tY291bnQ6IDY7CiAgfQp9Ci8qIExhcmdlIHNjcmVlbiBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiAxMjIwcHgpIHsKICAudWstY29sdW1uLXhsYXJnZS0xLTIgewogICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDI7CiAgICAtbW96LWNvbHVtbi1jb3VudDogMjsKICAgIGNvbHVtbi1jb3VudDogMjsKICB9CiAgLnVrLWNvbHVtbi14bGFyZ2UtMS0zIHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOwogICAgLW1vei1jb2x1bW4tY291bnQ6IDM7CiAgICBjb2x1bW4tY291bnQ6IDM7CiAgfQogIC51ay1jb2x1bW4teGxhcmdlLTEtNCB7CiAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogNDsKICAgIC1tb3otY29sdW1uLWNvdW50OiA0OwogICAgY29sdW1uLWNvdW50OiA0OwogIH0KICAudWstY29sdW1uLXhsYXJnZS0xLTUgewogICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDU7CiAgICAtbW96LWNvbHVtbi1jb3VudDogNTsKICAgIGNvbHVtbi1jb3VudDogNTsKICB9CiAgLnVrLWNvbHVtbi14bGFyZ2UtMS02IHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiA2OwogICAgLW1vei1jb2x1bW4tY291bnQ6IDY7CiAgICBjb2x1bW4tY291bnQ6IDY7CiAgfQp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IEFuaW1hdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KW2NsYXNzKj0ndWstYW5pbWF0aW9uLSddIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC41czsKICBhbmltYXRpb24tZHVyYXRpb246IDAuNXM7CiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKfQovKiBIaWRlIGFuaW1hdGVkIGVsZW1lbnQgaWYgc2Nyb2xsc3B5IGlzIHVzZWQgKi8KQG1lZGlhIHNjcmVlbiB7CiAgW2RhdGEtdWstc2Nyb2xsc3B5Kj0ndWstYW5pbWF0aW9uLSddOm5vdChbZGF0YS11ay1zY3JvbGxzcHkqPSd0YXJnZXQnXSkgewogICAgb3BhY2l0eTogMDsKICB9Cn0KLyoKICogRmFkZQogKiBIaWdoZXIgc3BlY2lmaWNpdHkgKCFpbXBvcnRhbnQpIG5lZWRlZCBiZWNhdXNlIG9mIHJldmVyc2UgbW9kaWZpZXIKICovCi51ay1hbmltYXRpb24tZmFkZSB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogdWstZmFkZTsKICBhbmltYXRpb24tbmFtZTogdWstZmFkZTsKICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC44czsKICBhbmltYXRpb24tZHVyYXRpb246IDAuOHM7CiAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXIgIWltcG9ydGFudDsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXIgIWltcG9ydGFudDsKfQovKgogKiBGYWRlIHdpdGggc2NhbGUKICovCi51ay1hbmltYXRpb24tc2NhbGUtdXAgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHVrLWZhZGUtc2NhbGUtMDI7CiAgYW5pbWF0aW9uLW5hbWU6IHVrLWZhZGUtc2NhbGUtMDI7Cn0KLnVrLWFuaW1hdGlvbi1zY2FsZS1kb3duIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB1ay1mYWRlLXNjYWxlLTE4OwogIGFuaW1hdGlvbi1uYW1lOiB1ay1mYWRlLXNjYWxlLTE4Owp9Ci8qCiAqIEZhZGUgd2l0aCBzbGlkZQogKi8KLnVrLWFuaW1hdGlvbi1zbGlkZS10b3AgewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHVrLWZhZGUtdG9wOwogIGFuaW1hdGlvbi1uYW1lOiB1ay1mYWRlLXRvcDsKfQoudWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogdWstZmFkZS1ib3R0b207CiAgYW5pbWF0aW9uLW5hbWU6IHVrLWZhZGUtYm90dG9tOwp9Ci51ay1hbmltYXRpb24tc2xpZGUtbGVmdCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogdWstZmFkZS1sZWZ0OwogIGFuaW1hdGlvbi1uYW1lOiB1ay1mYWRlLWxlZnQ7Cn0KLnVrLWFuaW1hdGlvbi1zbGlkZS1yaWdodCB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogdWstZmFkZS1yaWdodDsKICBhbmltYXRpb24tbmFtZTogdWstZmFkZS1yaWdodDsKfQovKgogKiBTY2FsZQogKi8KLnVrLWFuaW1hdGlvbi1zY2FsZSB7CiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogdWstc2NhbGUtMTI7CiAgYW5pbWF0aW9uLW5hbWU6IHVrLXNjYWxlLTEyOwp9Ci8qCiAqIFNoYWtlCiAqLwoudWstYW5pbWF0aW9uLXNoYWtlIHsKICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiB1ay1zaGFrZTsKICBhbmltYXRpb24tbmFtZTogdWstc2hha2U7Cn0KLyogRGlyZWN0aW9uIG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWFuaW1hdGlvbi1yZXZlcnNlIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246IHJldmVyc2U7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogcmV2ZXJzZTsKICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKfQovKiBEdXJhdGlvbiBtb2RpZmllcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWFuaW1hdGlvbi0xNSB7CiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDE1czsKICBhbmltYXRpb24tZHVyYXRpb246IDE1czsKfQovKiBPcmlnaW4gbW9kaWZpZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1hbmltYXRpb24tdG9wLWxlZnQgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogIHRyYW5zZm9ybS1vcmlnaW46IDAgMDsKfQoudWstYW5pbWF0aW9uLXRvcC1jZW50ZXIgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDA7CiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDA7Cn0KLnVrLWFuaW1hdGlvbi10b3AtcmlnaHQgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAwOwogIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDsKfQoudWstYW5pbWF0aW9uLW1pZGRsZS1sZWZ0IHsKICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgNTAlOwogIHRyYW5zZm9ybS1vcmlnaW46IDAgNTAlOwp9Ci51ay1hbmltYXRpb24tbWlkZGxlLXJpZ2h0IHsKICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDEwMCUgNTAlOwogIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgNTAlOwp9Ci51ay1hbmltYXRpb24tYm90dG9tLWxlZnQgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAxMDAlOwogIHRyYW5zZm9ybS1vcmlnaW46IDAgMTAwJTsKfQoudWstYW5pbWF0aW9uLWJvdHRvbS1jZW50ZXIgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDEwMCU7CiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDEwMCU7Cn0KLnVrLWFuaW1hdGlvbi1ib3R0b20tcmlnaHQgewogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlOwogIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTsKfQovKiBTdWItb2JqZWN0OiBgdWstYW5pbWF0aW9uLWhvdmVyYAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBFbmFibGUgYW5pbWF0aW9uIG9ubHkgb24gaG92ZXIKICogTm90ZTogRmlyZWZveCBhbHNvIG5lZWRzIHRoaXMgYmVjYXVzZSBhbmltYXRpb25zIGFyZSBub3QgdHJpZ2dlcmVkIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gZGlzcGxheSBgaGlkZGVuYCBhbmQgYGJsb2NrYAogKi8KLnVrLWFuaW1hdGlvbi1ob3Zlcjpub3QoOmhvdmVyKSwKLnVrLWFuaW1hdGlvbi1ob3Zlcjpub3QoOmhvdmVyKSBbY2xhc3MqPSd1ay1hbmltYXRpb24tJ10sCi51ay10b3VjaCAudWstYW5pbWF0aW9uLWhvdmVyOm5vdCgudWstaG92ZXIpLAoudWstdG91Y2ggLnVrLWFuaW1hdGlvbi1ob3Zlcjpub3QoLnVrLWhvdmVyKSBbY2xhc3MqPSd1ay1hbmltYXRpb24tJ10gewogIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG5vbmU7CiAgYW5pbWF0aW9uLW5hbWU6IG5vbmU7Cn0KLyogS2V5ZnJhbWVzOiBGYWRlCiAqIFVzZWQgYnkgZHJvcGRvd24sIGRhdGVwaWNrZXIgYW5kIHNsaWRlc2hvdyBjb21wb25lbnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCkAtd2Via2l0LWtleWZyYW1lcyB1ay1mYWRlIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CkBrZXlmcmFtZXMgdWstZmFkZSB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogIH0KfQovKiBLZXlmcmFtZXM6IEZhZGUgd2l0aCBzbGlkZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogVG9wCiAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstZmFkZS10b3AgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQpAa2V5ZnJhbWVzIHVrLWZhZGUtdG9wIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQovKgogKiBCb3R0b20KICovCkAtd2Via2l0LWtleWZyYW1lcyB1ay1mYWRlLWJvdHRvbSB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB9Cn0KQGtleWZyYW1lcyB1ay1mYWRlLWJvdHRvbSB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQovKgogKiBMZWZ0CiAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstZmFkZS1sZWZ0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KQGtleWZyYW1lcyB1ay1mYWRlLWxlZnQgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQp9Ci8qCiAqIFJpZ2h0CiAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstZmFkZS1yaWdodCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KQGtleWZyYW1lcyB1ay1mYWRlLXJpZ2h0IHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQp9Ci8qIEtleWZyYW1lczogRmFkZSB3aXRoIHNjYWxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBTY2FsZSBieSAwLjIKICovCkAtd2Via2l0LWtleWZyYW1lcyB1ay1mYWRlLXNjYWxlLTAyIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuMik7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9Cn0KQGtleWZyYW1lcyB1ay1mYWRlLXNjYWxlLTAyIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjIpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KfQovKgogKiBTY2FsZSBieSAxLjUKICogVXNlZCBieSBzbGlkZXNob3cgY29tcG9uZW50CiAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstZmFkZS1zY2FsZS0xNSB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjUpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CkBrZXlmcmFtZXMgdWstZmFkZS1zY2FsZS0xNSB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9Cn0KLyoKICogU2NhbGUgYnkgMS44CiAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstZmFkZS1zY2FsZS0xOCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjgpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CkBrZXlmcmFtZXMgdWstZmFkZS1zY2FsZS0xOCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS44KTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9Cn0KLyogS2V5ZnJhbWVzOiBTbGlkZQogKiBVc2VkIGJ5IHNsaWRlc2hvdyBjb21wb25lbnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIExlZnQKICovCkAtd2Via2l0LWtleWZyYW1lcyB1ay1zbGlkZS1sZWZ0IHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgfQogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQp9CkBrZXlmcmFtZXMgdWstc2xpZGUtbGVmdCB7CiAgMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQp9Ci8qCiAqIFJpZ2h0CiAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstc2xpZGUtcmlnaHQgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogIH0KICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQpAa2V5ZnJhbWVzIHVrLXNsaWRlLXJpZ2h0IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQovKgogKiBMZWZ0IHRoaXJkCiAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstc2xpZGUtbGVmdC0zMyB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzMlKTsKICB9CiAgMTAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB9Cn0KQGtleWZyYW1lcyB1ay1zbGlkZS1sZWZ0LTMzIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzMlKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgfQp9Ci8qCiAqIFJpZ2h0IHRoaXJkCiAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstc2xpZGUtcmlnaHQtMzMgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMyUpOwogIH0KICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQpAa2V5ZnJhbWVzIHVrLXNsaWRlLXJpZ2h0LTMzIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMzJSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KfQovKiBLZXlmcmFtZXM6IFNjYWxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpALXdlYmtpdC1rZXlmcmFtZXMgdWstc2NhbGUtMTIgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogIH0KICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9Cn0KQGtleWZyYW1lcyB1ay1zY2FsZS0xMiB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9Ci8qIEtleWZyYW1lczogUm90YXRlCiAqIFVzZWQgYnkgaWNvbiBjb21wb25lbnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCkAtd2Via2l0LWtleWZyYW1lcyB1ay1yb3RhdGUgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIHVrLXJvdGF0ZSB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTsKICB9Cn0KLyogS2V5ZnJhbWVzOiBTaGFrZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQC13ZWJraXQta2V5ZnJhbWVzIHVrLXNoYWtlIHsKICAwJSwKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KICAxMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTlweCk7CiAgfQogIDIwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg4cHgpOwogIH0KICAzMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTdweCk7CiAgfQogIDQwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg2cHgpOwogIH0KICA1MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTVweCk7CiAgfQogIDYwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpOwogIH0KICA3MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTNweCk7CiAgfQogIDgwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpOwogIH0KICA5MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTFweCk7CiAgfQp9CkBrZXlmcmFtZXMgdWstc2hha2UgewogIDAlLAogIDEwMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogIH0KICAxMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC05cHgpOwogIH0KICAyMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDhweCk7CiAgfQogIDMwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTdweCk7CiAgfQogIDQwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNnB4KTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNXB4KTsKICB9CiAgNjAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpOwogIH0KICA3MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpOwogIH0KICA4MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7CiAgfQogIDkwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTFweCk7CiAgfQp9Ci8qIEtleWZyYW1lczogRmFkZSB3aXRoIHNsaWRlIGZpeGVkCiAqIFVzZWQgYnkgZHJvcGRvd24gYW5kIHNlYXJjaCBjb21wb25lbnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIFRvcCBmaXhlZAogKi8KQC13ZWJraXQta2V5ZnJhbWVzIHVrLXNsaWRlLXRvcC1maXhlZCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CkBrZXlmcmFtZXMgdWstc2xpZGUtdG9wLWZpeGVkIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogIH0KfQovKgogKiBCb3R0b20gZml4ZWQKICovCkAtd2Via2l0LWtleWZyYW1lcyB1ay1zbGlkZS1ib3R0b20tZml4ZWQgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CkBrZXlmcmFtZXMgdWstc2xpZGUtYm90dG9tLWZpeGVkIHsKICAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IERyb3Bkb3duCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBIaWRlIGJ5IGRlZmF1bHQKICogMi4gU2V0IHBvc2l0aW9uCiAqIDMuIEJveC1zaXppbmcgaXMgbmVlZGVkIGZvciBgdWstZHJvcGRvd24tanVzdGlmeWAKICogNC4gU2V0IHdpZHRoCiAqLwoudWstZHJvcGRvd24sCi51ay1kcm9wZG93bi1ibGFuayB7CiAgLyogMSAqLwogIGRpc3BsYXk6IG5vbmU7CiAgLyogMiAqLwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiA5NzA7CiAgLyogMyAqLwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgLyogNCAqLwogIHdpZHRoOiAyMDBweDsKfQovKgogKiBEcm9wZG93biBzdHlsZQogKiAxLiBSZXNldCBidXR0b24gZ3JvdXAgd2hpdGVzcGFjZSBoYWNrCiAqLwoudWstZHJvcGRvd24gewogIHBhZGRpbmc6IDE1cHg7CiAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKICBjb2xvcjogIzQ0NDsKICAvKiAxICovCiAgZm9udC1zaXplOiAxcmVtOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KLyogRm9jdXMgKi8KLnVrLWRyb3Bkb3duOmZvY3VzIHsKICBvdXRsaW5lOiBub25lOwp9Ci8qCiAqIDEuIFNob3cgZHJvcGRvd24KICogMi4gU2V0IGFuaW1hdGlvbgogKiAzLiBOZWVkZWQgZm9yIHNjYWxlIGFuaW1hdGlvbgogKi8KLnVrLW9wZW4gPiAudWstZHJvcGRvd24sCi51ay1vcGVuID4gLnVrLWRyb3Bkb3duLWJsYW5rIHsKICAvKiAxICovCiAgZGlzcGxheTogYmxvY2s7CiAgLyogMiAqLwogIC13ZWJraXQtYW5pbWF0aW9uOiB1ay1mYWRlIDAuMnMgZWFzZS1pbi1vdXQ7CiAgYW5pbWF0aW9uOiB1ay1mYWRlIDAuMnMgZWFzZS1pbi1vdXQ7CiAgLyogMyAqLwogIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogIHRyYW5zZm9ybS1vcmlnaW46IDAgMDsKfQovKiBBbGlnbm1lbnQgbW9kaWZpZXJzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBNb2RpZmllcgogKi8KLnVrLWRyb3Bkb3duLXRvcCB7CiAgbWFyZ2luLXRvcDogLTVweDsKfQoudWstZHJvcGRvd24tYm90dG9tIHsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KLnVrLWRyb3Bkb3duLWxlZnQgewogIG1hcmdpbi1sZWZ0OiAtNXB4Owp9Ci51ay1kcm9wZG93bi1yaWdodCB7CiAgbWFyZ2luLWxlZnQ6IDVweDsKfQovKiBOYXYgaW4gZHJvcGRvd24KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1kcm9wZG93biAudWstbmF2IHsKICBtYXJnaW46IDAgLTE1cHg7Cn0KLyogR3JpZCBhbmQgcGFuZWwgaW4gZHJvcGRvd24KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiogVmVydGljYWwgZ3V0dGVyCiovCi8qCiAqIEdyaWQKICogSGlnaGVyIHNwZWNpZmljaXR5IHRvIG92ZXJyaWRlIGxhcmdlIGd1dHRlcgogKi8KLnVrLWdyaWQgLnVrLWRyb3Bkb3duLWdyaWQgKyAudWstZHJvcGRvd24tZ3JpZCB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQovKiBQYW5lbHMgKi8KLnVrLWRyb3Bkb3duLWdyaWQgPiBbY2xhc3MqPSd1ay13aWR0aC0nXSA+IC51ay1wYW5lbCArIC51ay1wYW5lbCB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQovKiBUYWJsZXQgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAvKgogICAgICogSG9yaXpvbnRhbCBndXR0ZXIKICAgICAqLwogIC51ay1kcm9wZG93bjpub3QoLnVrLWRyb3Bkb3duLXN0YWNrKSA+IC51ay1kcm9wZG93bi1ncmlkIHsKICAgIG1hcmdpbi1sZWZ0OiAtMTVweDsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgfQogIC51ay1kcm9wZG93bjpub3QoLnVrLWRyb3Bkb3duLXN0YWNrKSA+IC51ay1kcm9wZG93bi1ncmlkID4gW2NsYXNzKj0ndWstd2lkdGgtJ10gewogICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKICB9CiAgLyoKICAgICAqIENvbHVtbiBkaXZpZGVyCiAgICAgKi8KICAudWstZHJvcGRvd246bm90KC51ay1kcm9wZG93bi1zdGFjaykgPiAudWstZHJvcGRvd24tZ3JpZCA+IFtjbGFzcyo9J3VrLXdpZHRoLSddOm50aC1jaGlsZChuKzIpIHsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDsKICB9CiAgLyoKICAgICAqIFdpZHRoIG11bHRpcGxpZXIgZm9yIGRyb3Bkb3duIGNvbHVtbnMKICAgICAqLwogIC51ay1kcm9wZG93bi13aWR0aC0yOm5vdCgudWstZHJvcGRvd24tc3RhY2spIHsKICAgIHdpZHRoOiA0MDBweDsKICB9CiAgLnVrLWRyb3Bkb3duLXdpZHRoLTM6bm90KC51ay1kcm9wZG93bi1zdGFjaykgewogICAgd2lkdGg6IDYwMHB4OwogIH0KICAudWstZHJvcGRvd24td2lkdGgtNDpub3QoLnVrLWRyb3Bkb3duLXN0YWNrKSB7CiAgICB3aWR0aDogODAwcHg7CiAgfQogIC51ay1kcm9wZG93bi13aWR0aC01Om5vdCgudWstZHJvcGRvd24tc3RhY2spIHsKICAgIHdpZHRoOiAxMDAwcHg7CiAgfQp9Ci8qIFBob25lIGxhbmRzY2FwZSBhbmQgc21hbGxlciAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAvKgogICAgICogU3RhY2sgY29sdW1ucyBhbmQgdGFrZSBmdWxsIHdpZHRoCiAgICAgKi8KICAudWstZHJvcGRvd24tZ3JpZCA+IFtjbGFzcyo9J3VrLXdpZHRoLSddIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KICAvKgogICAgICogVmVydGljYWwgZ3V0dGVyCiAgICAgKi8KICAudWstZHJvcGRvd24tZ3JpZCA+IFtjbGFzcyo9J3VrLXdpZHRoLSddOm50aC1jaGlsZChuKzIpIHsKICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgfQp9Ci8qCiogU3RhY2sgZ3JpZCBjb2x1bW5zCiovCi51ay1kcm9wZG93bi1zdGFjayA+IC51ay1kcm9wZG93bi1ncmlkID4gW2NsYXNzKj0ndWstd2lkdGgtJ10gewogIHdpZHRoOiAxMDAlOwp9Ci51ay1kcm9wZG93bi1zdGFjayA+IC51ay1kcm9wZG93bi1ncmlkID4gW2NsYXNzKj0ndWstd2lkdGgtJ106bnRoLWNoaWxkKG4rMikgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLyogTW9kaWZpZXIgYHVrLWRyb3Bkb3duLXNtYWxsYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogU2V0IG1pbi13aWR0aCBhbmQgdGV4dCBleHBhbmRzIGRyb3Bkb3duIGlmIG5lZWRlZAogKi8KLnVrLWRyb3Bkb3duLXNtYWxsIHsKICBtaW4td2lkdGg6IDE1MHB4OwogIHdpZHRoOiBhdXRvOwogIHBhZGRpbmc6IDVweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci8qCiAqIE5hdiBpbiBkcm9wZG93bgogKi8KLnVrLWRyb3Bkb3duLXNtYWxsIC51ay1uYXYgewogIG1hcmdpbjogMCAtNXB4Owp9Ci8qIE1vZGlmaWVyOiBgdWstZHJvcGRvd24tbmF2YmFyYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWRyb3Bkb3duLW5hdmJhciB7CiAgbWFyZ2luLXRvcDogMDsKICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1vcGVuID4gLnVrLWRyb3Bkb3duLW5hdmJhciB7CiAgLXdlYmtpdC1hbmltYXRpb246IHVrLXNsaWRlLXRvcC1maXhlZCAwLjJzIGVhc2UtaW4tb3V0OwogIGFuaW1hdGlvbjogdWstc2xpZGUtdG9wLWZpeGVkIDAuMnMgZWFzZS1pbi1vdXQ7Cn0KLyogTW9kaWZpZXIgYHVrLWRyb3Bkb3duLXNjcm9sbGFibGVgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBVc2VmdWxsIGZvciBsb25nIGxpc3RzCiAqLwoudWstZHJvcGRvd24tc2Nyb2xsYWJsZSB7CiAgb3ZlcmZsb3cteTogYXV0bzsKICBtYXgtaGVpZ2h0OiAyMDBweDsKfQovKiBTdWItb2JqZWN0OiBgdWstZHJvcGRvd24tb3ZlcmxheWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IE1vZGFsCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBUaGlzIGlzIHRoZSBtb2RhbCBvdmVybGF5IGFuZCBtb2RhbCBkaWFsb2cgY29udGFpbmVyCiAqIDEuIEhpZGUgYnkgZGVmYXVsdAogKiAyLiBTZXQgZml4ZWQgcG9zaXRpb24KICogMy4gQWxsb3cgc2Nyb2xsaW5nIGZvciB0aGUgbW9kYWwgZGlhbG9nCiAqIDQuIE1hc2sgdGhlIGJhY2tncm91bmQgcGFnZQogKiA1LiBGYWRlLWluIHRyYW5zaXRpb24KICogNi4gRGVhY3RpdmF0ZSBicm93c2VyIGhpc3RvcnkgbmF2aWdhdGlvbiBpbiBJRTExCiAqIDcuIGZvcmNlIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiB0byBwcmV2ZW50IGJyb3dzZXIgcmVuZGVyaW5nIGhpY2N1cHMKICovCi51ay1tb2RhbCB7CiAgLyogMSAqLwogIGRpc3BsYXk6IG5vbmU7CiAgLyogMiAqLwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAxMDsKICAvKiAzICovCiAgb3ZlcmZsb3cteTogYXV0bzsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgLyogNCAqLwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAvKiA1ICovCiAgb3BhY2l0eTogMDsKICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwogIC8qIDYgKi8KICB0b3VjaC1hY3Rpb246IGNyb3NzLXNsaWRlLXkgcGluY2gtem9vbSBkb3VibGUtdGFwLXpvb207CiAgLyogNyAqLwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKfQovKgogKiBPcGVuIHN0YXRlCiAqLwoudWstbW9kYWwudWstb3BlbiB7CiAgb3BhY2l0eTogMTsKfQovKgogKiBQcmV2ZW50cyBkdXBsaWNhdGVkIHNjcm9sbGJhciBjYXVzZWQgYnkgNC4KICovCi51ay1tb2RhbC1wYWdlLAoudWstbW9kYWwtcGFnZSBib2R5IHsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci8qIFN1Yi1vYmplY3Q6IGB1ay1tb2RhbC1kaWFsb2dgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBDcmVhdGUgcG9zaXRpb24gY29udGV4dCBmb3IgY2FwdGlvbiwgc3Bpbm5lciBhbmQgY2xvc2UgYnV0dG9uCiAqIDIuIFNldCBib3ggc2l6aW5nCiAqIDMuIFNldCBzdHlsZQogKiA0LiBTbGlkZS1pbiB0cmFuc2l0aW9uCiAqLwoudWstbW9kYWwtZGlhbG9nIHsKICAvKiAxICovCiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC8qIDIgKi8KICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIG1hcmdpbjogNTBweCBhdXRvOwogIHBhZGRpbmc6IDIwcHg7CiAgd2lkdGg6IDYwMHB4OwogIG1heC13aWR0aDogMTAwJTsKICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOwogIC8qIDMgKi8KICBiYWNrZ3JvdW5kOiAjZmZmOwogIC8qIDQgKi8KICBvcGFjaXR5OiAwOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDBweCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDBweCk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyLCAtd2Via2l0LXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBsaW5lYXIsIHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0Owp9Ci8qIFBob25lIGxhbmRzY2FwZSBhbmQgc21hbGxlciAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAvKgogICAgICogRml0IGluIHNtYWxsIHNjcmVlbgogICAgICovCiAgLnVrLW1vZGFsLWRpYWxvZyB7CiAgICB3aWR0aDogYXV0bzsKICAgIG1hcmdpbjogMTBweCBhdXRvOwogIH0KfQovKgogKiBPcGVuIHN0YXRlCiAqLwoudWstb3BlbiAudWstbW9kYWwtZGlhbG9nIHsKICAvKiA0ICovCiAgb3BhY2l0eTogMTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KLyoKICogUmVtb3ZlIG1hcmdpbiBmcm9tIHRoZSBsYXN0LWNoaWxkCiAqLwoudWstbW9kYWwtZGlhbG9nID4gOm5vdChbY2xhc3MqPSd1ay1tb2RhbC0nXSk6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQovKiBDbG9zZSBpbiBtb2RhbAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLW1vZGFsLWRpYWxvZyA+IC51ay1jbG9zZTpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luOiAtMTBweCAtMTBweCAwIDA7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci8qCiAqIFJlbW92ZSBtYXJnaW4gZnJvbSBhZGphY2VudCBlbGVtZW50CiAqLwoudWstbW9kYWwtZGlhbG9nID4gLnVrLWNsb3NlOmZpcnN0LWNoaWxkICsgOm5vdChbY2xhc3MqPSd1ay1tb2RhbC0nXSkgewogIG1hcmdpbi10b3A6IDA7Cn0KLyogTW9kaWZpZXI6IGB1ay1tb2RhbC1kaWFsb2ctbGlnaHRib3hgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstbW9kYWwtZGlhbG9nLWxpZ2h0Ym94IHsKICBtYXJnaW46IDE1cHggYXV0bzsKICBwYWRkaW5nOiAwOwogIG1heC13aWR0aDogOTUlOwogIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzBweCk7CiAgbWluLWhlaWdodDogNTBweDsKfQovKgogKiBDbG9zZSBidXR0b24KICovCi51ay1tb2RhbC1kaWFsb2ctbGlnaHRib3ggPiAudWstY2xvc2U6Zmlyc3QtY2hpbGQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC0xMnB4OwogIHJpZ2h0OiAtMTJweDsKICBtYXJnaW46IDA7CiAgZmxvYXQ6IG5vbmU7Cn0KLyogUGhvbmUgbGFuZHNjYXBlIGFuZCBzbWFsbGVyICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIC51ay1tb2RhbC1kaWFsb2ctbGlnaHRib3ggPiAudWstY2xvc2U6Zmlyc3QtY2hpbGQgewogICAgdG9wOiAtN3B4OwogICAgcmlnaHQ6IC03cHg7CiAgfQp9Ci8qIE1vZGlmaWVyOiBgdWstbW9kYWwtZGlhbG9nLWJsYW5rYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLW1vZGFsLWRpYWxvZy1ibGFuayB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgd2lkdGg6IDEwMCU7CiAgbWF4LXdpZHRoOiAxMDAlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGxpbmVhcjsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyOwp9Ci8qCiogQ2xvc2UgYnV0dG9uCiovCi51ay1tb2RhbC1kaWFsb2ctYmxhbmsgPiAudWstY2xvc2U6Zmlyc3QtY2hpbGQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDIwcHg7CiAgcmlnaHQ6IDIwcHg7CiAgei1pbmRleDogMTsKICBtYXJnaW46IDA7CiAgZmxvYXQ6IG5vbmU7Cn0KLyogTW9kaWZpZXI6IGB1ay1tb2RhbC1kaWFsb2ctbGFyZ2VgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKiBUYWJsZXQgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAudWstbW9kYWwtZGlhbG9nLWxhcmdlIHsKICAgIHdpZHRoOiA5MzBweDsKICB9Cn0KLyogTGFyZ2Ugc2NyZWVuIGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDEyMjBweCkgewogIC51ay1tb2RhbC1kaWFsb2ctbGFyZ2UgewogICAgd2lkdGg6IDExMzBweDsKICB9Cn0KLyogU3ViLU9iamVjdDogYHVrLW1vZGFsLWhlYWRlcmAgYW5kIGB1ay1tb2RhbC1mb290ZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstbW9kYWwtaGVhZGVyIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9Ci51ay1tb2RhbC1mb290ZXIgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KLyoKICogUmVtb3ZlIG1hcmdpbiBmcm9tIHRoZSBsYXN0LWNoaWxkCiAqLwoudWstbW9kYWwtaGVhZGVyID4gOmxhc3QtY2hpbGQsCi51ay1tb2RhbC1mb290ZXIgPiA6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQovKiBTdWItT2JqZWN0OiBgdWstbW9kYWwtY2FwdGlvbmAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1tb2RhbC1jYXB0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3R0b206IC0yMHB4OwogIG1hcmdpbi1ib3R0b206IC0xMHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLyogU3ViLU9iamVjdDogYHVrLW1vZGFsLXNwaW5uZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstbW9kYWwtc3Bpbm5lciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIGxlZnQ6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIGZvbnQtc2l6ZTogMjVweDsKICBjb2xvcjogI2RkZDsKfQoudWstbW9kYWwtc3Bpbm5lcjphZnRlciB7CiAgY29udGVudDogIlxmMTEwIjsKICBkaXNwbGF5OiBibG9jazsKICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgLXdlYmtpdC1hbmltYXRpb246IHVrLXJvdGF0ZSAycyBpbmZpbml0ZSBsaW5lYXI7CiAgYW5pbWF0aW9uOiB1ay1yb3RhdGUgMnMgaW5maW5pdGUgbGluZWFyOwp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IE9mZi1jYW52YXMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIFRoaXMgaXMgdGhlIG9mZmNhbnZhcyBvdmVybGF5IGFuZCBiYXIgY29udGFpbmVyCiAqIDEuIEhpZGUgYnkgZGVmYXVsdAogKiAyLiBTZXQgZml4ZWQgcG9zaXRpb24KICogMy4gRGVhY3RpdmF0ZSBicm93c2VyIHRvdWNoIGFjdGlvbnMgaW4gSUUxMQogKiA0LiBNYXNrIHRoZSBiYWNrZ3JvdW5kIHBhZ2UKICovCi51ay1vZmZjYW52YXMgewogIC8qIDEgKi8KICBkaXNwbGF5OiBub25lOwogIC8qIDIgKi8KICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwMDA7CiAgLyogMyAqLwogIHRvdWNoLWFjdGlvbjogbm9uZTsKICAvKiA0ICovCiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpOwp9Ci51ay1vZmZjYW52YXMudWstYWN0aXZlIHsKICBkaXNwbGF5OiBibG9jazsKfQovKiBTdWItb2JqZWN0IGB1ay1vZmZjYW52YXMtcGFnZWAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIFByZXBhcmVzIHRoZSB3aG9sZSBIVE1MIHBhZ2UgdG8gc2xpZGUtb3V0CiAqIDEuIEZpeCB0aGUgbWFpbiBwYWdlIGFuZCBkaXNhbGxvdyBzY3JvbGxpbmcKICogMi4gU2lkZS1vdXQgdHJhbnNpdGlvbgogKiAzLiBOZWVkZWQgZm9yIHRoZSB0cmFuc2l0aW9uIHRvIHdvcmsgaW5zdGVhZCBvZiBqdXN0IGxldHRpbmcgaXQgcG9wIHRvIHRoZSBzaWRlCiAqLwoudWstb2ZmY2FudmFzLXBhZ2UgewogIC8qIDEgKi8KICBwb3NpdGlvbjogZml4ZWQ7CiAgLyogMiAqLwogIC13ZWJraXQtdHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDsKICB0cmFuc2l0aW9uOiBtYXJnaW4tbGVmdCAwLjNzIGVhc2UtaW4tb3V0OwogIC8qIDMgKi8KICBtYXJnaW4tbGVmdDogMDsKfQovKiBTdWItb2JqZWN0IGB1ay1vZmZjYW52YXMtYmFyYAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogVGhpcyBpcyB0aGUgb2ZmY2FudmFzIGJhcgogKiAxLiBTZXQgZml4ZWQgcG9zaXRpb24KICogMi4gU2l6ZSBhbmQgc3R5bGUKICogMy4gQWxsb3cgc2Nyb2xsaW5nCiAqIDQuIFNpZGUtb3V0IHRyYW5zaXRpb24KICogNS4gRGVhY3RpdmF0ZSBzY3JvbGwgY2hhaW5pbmcgaW4gSUUxMQogKi8KLnVrLW9mZmNhbnZhcy1iYXIgewogIC8qIDEgKi8KICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogIHotaW5kZXg6IDEwMDE7CiAgLyogMiAqLwogIHdpZHRoOiAyNzBweDsKICBtYXgtd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZDogIzMzMzsKICAvKiAzICovCiAgb3ZlcmZsb3cteTogYXV0bzsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgLyogNCAqLwogIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dDsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dDsKICAvKiA1ICovCiAgLW1zLXNjcm9sbC1jaGFpbmluZzogbm9uZTsKfQoudWstb2ZmY2FudmFzLnVrLWFjdGl2ZSAudWstb2ZmY2FudmFzLWJhci51ay1vZmZjYW52YXMtYmFyLXNob3cgewogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpOwp9Ci8qIE1vZGlmaWVyIGB1ay1vZmZjYW52YXMtYmFyLWZsaXBgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstb2ZmY2FudmFzLWJhci1mbGlwIHsKICBsZWZ0OiBhdXRvOwogIHJpZ2h0OiAwOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKfQovKiBPZmZjYW52YXNlIG1vZGVzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstb2ZmY2FudmFzLWJhclttb2RlPSdub25lJ10gewogIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKICB0cmFuc2l0aW9uOiBub25lOwp9Ci51ay1vZmZjYW52YXMtYmFyW21vZGU9J3JldmVhbCddIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKICBjbGlwOiByZWN0KDAsIDAsIDEwMHZoLCAwKTsKICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuM3MgZWFzZS1pbi1vdXQsIGNsaXAgMC4zcyBlYXNlLWluLW91dDsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dCwgY2xpcCAwLjNzIGVhc2UtaW4tb3V0Owp9Ci51ay1vZmZjYW52YXMtYmFyLWZsaXBbbW9kZT0ncmV2ZWFsJ10gewogIGNsaXA6IG5vbmU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwp9Ci51ay1vZmZjYW52YXMtYmFyLWZsaXBbbW9kZT0ncmV2ZWFsJ10gPiAqIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuM3MgZWFzZS1pbi1vdXQ7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1pbi1vdXQ7Cn0KLnVrLW9mZmNhbnZhcy51ay1hY3RpdmUgLnVrLW9mZmNhbnZhcy1iYXItZmxpcFttb2RlPSdyZXZlYWwnXS51ay1vZmZjYW52YXMtYmFyLXNob3cgPiAqIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTsKfQovKiBQYW5lbCBpbiBvZmZjYW52YXMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1vZmZjYW52YXMgLnVrLXBhbmVsIHsKICBtYXJnaW46IDIwcHggMTVweDsKICBjb2xvcjogIzc3NzsKfQoudWstb2ZmY2FudmFzIC51ay1wYW5lbC10aXRsZSB7CiAgY29sb3I6ICNjY2M7Cn0KLnVrLW9mZmNhbnZhcyAudWstcGFuZWwgYTpub3QoW2NsYXNzXSkgewogIGNvbG9yOiAjY2NjOwp9Ci51ay1vZmZjYW52YXMgLnVrLXBhbmVsIGE6bm90KFtjbGFzc10pOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBTd2l0Y2hlcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogMS4gRGVhY3RpdmF0ZSBicm93c2VyIGhpc3RvcnkgbmF2aWdhdGlvbiBpbiBJRTExCiAqLwoudWstc3dpdGNoZXIgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgLyogMSAqLwogIHRvdWNoLWFjdGlvbjogY3Jvc3Mtc2xpZGUteSBwaW5jaC16b29tIGRvdWJsZS10YXAtem9vbTsKfQovKgogKiBJdGVtcwogKi8KLnVrLXN3aXRjaGVyID4gOm5vdCgudWstYWN0aXZlKSB7CiAgZGlzcGxheTogbm9uZTsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBUZXh0CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKiBTaXplIG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXRleHQtc21hbGwgewogIGZvbnQtc2l6ZTogMTFweDsKICBsaW5lLWhlaWdodDogMTZweDsKfQoudWstdGV4dC1sYXJnZSB7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KLyogV2VpZ2h0IG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXRleHQtYm9sZCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLyogQ29sb3IgbW9kaWZpZXJzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstdGV4dC1tdXRlZCB7CiAgY29sb3I6ICM5OTkgIWltcG9ydGFudDsKfQoudWstdGV4dC1wcmltYXJ5IHsKICBjb2xvcjogIzJkNzA5MSAhaW1wb3J0YW50Owp9Ci51ay10ZXh0LXN1Y2Nlc3MgewogIGNvbG9yOiAjNjU5ZjEzICFpbXBvcnRhbnQ7Cn0KLnVrLXRleHQtd2FybmluZyB7CiAgY29sb3I6ICNlMjgzMjcgIWltcG9ydGFudDsKfQoudWstdGV4dC1kYW5nZXIgewogIGNvbG9yOiAjZDg1MDMwICFpbXBvcnRhbnQ7Cn0KLnVrLXRleHQtY29udHJhc3QgewogIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KLyogQWxpZ25tZW50IG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXRleHQtbGVmdCB7CiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Owp9Ci51ay10ZXh0LXJpZ2h0IHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50Owp9Ci51ay10ZXh0LWNlbnRlciB7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KLnVrLXRleHQtanVzdGlmeSB7CiAgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50Owp9Ci51ay10ZXh0LXRvcCB7CiAgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9Ci51ay10ZXh0LW1pZGRsZSB7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50Owp9Ci51ay10ZXh0LWJvdHRvbSB7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbSAhaW1wb3J0YW50Owp9Ci8qIE9ubHkgdGFibGV0cyBwb3J0cmFpdCBhbmQgc21hbGxlciAqLwpAbWVkaWEgKG1heC13aWR0aDogOTU5cHgpIHsKICAudWstdGV4dC1jZW50ZXItbWVkaXVtIHsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAudWstdGV4dC1sZWZ0LW1lZGl1bSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQp9Ci8qIFBob25lIGxhbmRzY2FwZSBhbmQgc21hbGxlciAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAudWstdGV4dC1jZW50ZXItc21hbGwgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC51ay10ZXh0LWxlZnQtc21hbGwgewogICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwogIH0KfQovKiBXcmFwIG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogUHJldmVudCB0ZXh0IGZyb20gd3JhcHBpbmcgb250byBtdWx0aXBsZSBsaW5lcwogKi8KLnVrLXRleHQtbm93cmFwIHsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci8qCiAqIFByZXZlbnQgdGV4dCBmcm9tIHdyYXBwaW5nIG9udG8gbXVsdGlwbGUgbGluZXMsIGFuZCB0cnVuY2F0ZSB3aXRoIGFuIGVsbGlwc2lzCiAqLwoudWstdGV4dC10cnVuY2F0ZSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci8qCiAqIEJyZWFrIHN0cmluZ3MgaWYgdGhlaXIgbGVuZ3RoIGV4Y2VlZHMgdGhlIHdpZHRoIG9mIHRoZWlyIGNvbnRhaW5lcgogKi8KLnVrLXRleHQtYnJlYWsgewogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAtd2Via2l0LWh5cGhlbnM6IGF1dG87CiAgLW1zLWh5cGhlbnM6IGF1dG87CiAgLW1vei1oeXBoZW5zOiBhdXRvOwogIGh5cGhlbnM6IGF1dG87Cn0KLyogVHJhbnNmb3JtIG1vZGlmaWVycwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXRleHQtY2FwaXRhbGl6ZSB7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudDsKfQoudWstdGV4dC1sb3dlcmNhc2UgewogIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudDsKfQoudWstdGV4dC11cHBlcmNhc2UgewogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ29tcG9uZW50OiBVdGlsaXR5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKiBDb250YWluZXIKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1jb250YWluZXIgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgbWF4LXdpZHRoOiA5ODBweDsKICBwYWRkaW5nOiAwIDI1cHg7Cn0KLyogTGFyZ2Ugc2NyZWVuIGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDEyMjBweCkgewogIC51ay1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICBwYWRkaW5nOiAwIDM1cHg7CiAgfQp9Ci8qCiAqIE1pY3JvIGNsZWFyZml4CiAqLwoudWstY29udGFpbmVyOmJlZm9yZSwKLnVrLWNvbnRhaW5lcjphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogdGFibGU7Cn0KLnVrLWNvbnRhaW5lcjphZnRlciB7CiAgY2xlYXI6IGJvdGg7Cn0KLyoKICogQ2VudGVyIGNvbnRhaW5lcgogKi8KLnVrLWNvbnRhaW5lci1jZW50ZXIgewogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKfQovKiBDbGVhcmluZwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogTWljcm8gY2xlYXJmaXgKKiBgdGFibGUtY2VsbGAgaXMgdXNlZCB3aXRoIGA6YmVmb3JlYCBiZWNhdXNlIGB0YWJsZWAgY3JlYXRlcyBhIDFweCBnYXAgd2hlbiBpdCBiZWNvbWVzIGEgZmxleCBpdGVtLCBvbmx5IGluIFdlYmtpdAogKiBgdGFibGVgIGlzIHVzZWQgYWdhaW4gd2l0aCBgOmFmdGVyYCBiZWNhdXNlIGBjbGVhcmAgb25seSB3b3JrcyB3aXRoIGJsb2NrIGVsZW1lbnRzLgogKiBOb3RlOiBgZGlzcGxheTogYmxvY2tgIHdpdGggYG92ZXJmbG93OiBoaWRkZW5gIGlzIGN1cnJlbnRseSBub3Qgd29ya2luZyBpbiB0aGUgbGF0ZXN0IFNhZmFyaQogKi8KLnVrLWNsZWFyZml4OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogdGFibGUtY2VsbDsKfQoudWstY2xlYXJmaXg6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IHRhYmxlOwogIGNsZWFyOiBib3RoOwp9Ci8qCiAqICBDcmVhdGUgYSBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0CiAqLwoudWstbmJmYyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudWstbmJmYy1hbHQgewogIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgd2lkdGg6IDEwMDAwcHg7Cn0KLyogQWxpZ25tZW50IG9mIGJsb2NrIGVsZW1lbnRzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBGbG9hdCBibG9ja3MKICogMS4gUHJldmVudCBjb250ZW50IG92ZXJmbG93IG9uIHNtYWxsIGRldmljZXMKICovCi51ay1mbG9hdC1sZWZ0IHsKICBmbG9hdDogbGVmdDsKfQoudWstZmxvYXQtcmlnaHQgewogIGZsb2F0OiByaWdodDsKfQovKiAxICovCltjbGFzcyo9J3VrLWZsb2F0LSddIHsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KLyogQWxpZ25tZW50IG9mIGltYWdlcyBhbmQgb2JqZWN0cwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogQWxpZ25tZW50CiAqLwpbY2xhc3MqPSd1ay1hbGlnbi0nXSB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoudWstYWxpZ24tbGVmdCB7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIGZsb2F0OiBsZWZ0Owp9Ci51ay1hbGlnbi1yaWdodCB7CiAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci8qIFRhYmxldCBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC51ay1hbGlnbi1tZWRpdW0tbGVmdCB7CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICBmbG9hdDogbGVmdDsKICB9CiAgLnVrLWFsaWduLW1lZGl1bS1yaWdodCB7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICAgIGZsb2F0OiByaWdodDsKICB9Cn0KLnVrLWFsaWduLWNlbnRlciB7CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9Ci8qIFZlcnRpY2FsIGFsaWdubWVudAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogUmVtb3ZlIHdoaXRlc3BhY2UgYmV0d2VlbiBjaGlsZCBlbGVtZW50cyB3aGVuIHVzaW5nIGBpbmxpbmUtYmxvY2tgCiAqLwoudWstdmVydGljYWwtYWxpZ24gewogIGZvbnQtc2l6ZTogMC4wMDFweDsKfQovKgogKiAgVGhlIGB1ay12ZXJ0aWNhbC1hbGlnbmAgY29udGFpbmVyIG5lZWRzIGEgc3BlY2lmaWMgaGVpZ2h0CiAqLwoudWstdmVydGljYWwtYWxpZ246YmVmb3JlIHsKICBjb250ZW50OiAnJzsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAxMDAlOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLyoKICogU3ViLW9iamVjdCB3aGljaCBjYW4gaGF2ZSBhbnkgaGVpZ2h0CiAqIDEuIFJlc2V0IHdoaXRlc3BhY2UgaGFjawogKi8KLnVrLXZlcnRpY2FsLWFsaWduLW1pZGRsZSwKLnVrLXZlcnRpY2FsLWFsaWduLWJvdHRvbSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1heC13aWR0aDogMTAwJTsKICAvKiAxICovCiAgZm9udC1zaXplOiAxcmVtOwp9Ci51ay12ZXJ0aWNhbC1hbGlnbi1taWRkbGUgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnVrLXZlcnRpY2FsLWFsaWduLWJvdHRvbSB7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKfQovKiBIZWlnaHQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIE1vcmUgcm9idXN0IGlmIHBhZGRpbmcgYW5kIGJvcmRlciBhcmUgdXNlZAogKi8KW2NsYXNzKj0ndWstaGVpZ2h0J10gewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLyoKICogVXNlZnVsIHRvIGV4dGVuZCB0aGUgYGh0bWxgIGFuZCBgYm9keWAgZWxlbWVudCB0byB0aGUgZnVsbCBoZWlnaHQgb2YgdGhlIHBhZ2UuCiAqLwoudWstaGVpZ2h0LTEtMSB7CiAgaGVpZ2h0OiAxMDAlOwp9Ci8qCiAqIFVzZWZ1bCB0byBjcmVhdGUgaW1hZ2UgdGVhc2VycwogKi8KLnVrLWhlaWdodC12aWV3cG9ydCB7CiAgaGVpZ2h0OiAxMDB2aDsKICBtaW4taGVpZ2h0OiA2MDBweDsKfQovKiBSZXNwb25zaXZlIG9iamVjdHMKICogTm90ZTogSW1hZ2VzIGFyZSBhbHJlYWR5IHJlc3BvbnNpdmUgYnkgZGVmYXVsdCwgc2VlIEJhc2UgY29tcG9uZW50CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiAxLiBDb3JyZWN0cyBgbWF4LXdpZHRoYCBhbmQgYG1heC1oZWlnaHRgIGJlaGF2aW9yIGlmIHBhZGRpbmcgYW5kIGJvcmRlciBhcmUgdXNlZAogKi8KLnVrLXJlc3BvbnNpdmUtd2lkdGgsCi51ay1yZXNwb25zaXZlLWhlaWdodCB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQovKgogKiBSZXNwb25zaXZlbmVzczogU2V0cyBhIG1heGltdW0gd2lkdGggcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBhbmQgYXV0byBzY2FsZXMgdGhlIGhlaWdodAogKiBgaW1wb3J0YW50YCBuZWVkZWQgdG8gb3ZlcnJpZGUgYHVrLWltZy1wcmVzZXJ2ZSBpbWdgCiAqLwoudWstcmVzcG9uc2l2ZS13aWR0aCB7CiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiBhdXRvOwp9Ci8qCiAqIFJlc3BvbnNpdmVuZXNzOiBTZXRzIGEgbWF4aW11bSBoZWlnaHQgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBhbmQgYXV0byBzY2FsZXMgdGhlIHdpZHRoCiAqIE9ubHkgd29ya3MgaWYgdGhlIHBhcmVudCBlbGVtZW50IGhhcyBhIGZpeGVkIGhlaWdodC4KICovCi51ay1yZXNwb25zaXZlLWhlaWdodCB7CiAgbWF4LWhlaWdodDogMTAwJTsKICB3aWR0aDogYXV0bzsKfQovKiBNYXJnaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIENyZWF0ZSBhIGJsb2NrIHdpdGggdGhlIHNhbWUgbWFyZ2luIG9mIGEgcGFyYWdyYXBoCiAqIEFkZCBtYXJnaW4gaWYgYWRqYWNlbnQgZWxlbWVudAogKi8KLnVrLW1hcmdpbiB7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoqICsgLnVrLW1hcmdpbiB7CiAgbWFyZ2luLXRvcDogMTVweDsKfQoudWstbWFyZ2luLXRvcCB7CiAgbWFyZ2luLXRvcDogMTVweCAhaW1wb3J0YW50Owp9Ci51ay1tYXJnaW4tYm90dG9tIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KLnVrLW1hcmdpbi1sZWZ0IHsKICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50Owp9Ci51ay1tYXJnaW4tcmlnaHQgewogIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50Owp9Ci8qCiAqIExhcmdlciBtYXJnaW5zCiAqLwoudWstbWFyZ2luLWxhcmdlIHsKICBtYXJnaW4tYm90dG9tOiA1MHB4Owp9CiogKyAudWstbWFyZ2luLWxhcmdlIHsKICBtYXJnaW4tdG9wOiA1MHB4Owp9Ci51ay1tYXJnaW4tbGFyZ2UtdG9wIHsKICBtYXJnaW4tdG9wOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KLnVrLW1hcmdpbi1sYXJnZS1ib3R0b20gewogIG1hcmdpbi1ib3R0b206IDUwcHggIWltcG9ydGFudDsKfQoudWstbWFyZ2luLWxhcmdlLWxlZnQgewogIG1hcmdpbi1sZWZ0OiA1MHB4ICFpbXBvcnRhbnQ7Cn0KLnVrLW1hcmdpbi1sYXJnZS1yaWdodCB7CiAgbWFyZ2luLXJpZ2h0OiA1MHB4ICFpbXBvcnRhbnQ7Cn0KLyoKICogU21hbGxlciBtYXJnaW5zCiAqLwoudWstbWFyZ2luLXNtYWxsIHsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KKiArIC51ay1tYXJnaW4tc21hbGwgewogIG1hcmdpbi10b3A6IDVweDsKfQoudWstbWFyZ2luLXNtYWxsLXRvcCB7CiAgbWFyZ2luLXRvcDogNXB4ICFpbXBvcnRhbnQ7Cn0KLnVrLW1hcmdpbi1zbWFsbC1ib3R0b20gewogIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50Owp9Ci51ay1tYXJnaW4tc21hbGwtbGVmdCB7CiAgbWFyZ2luLWxlZnQ6IDVweCAhaW1wb3J0YW50Owp9Ci51ay1tYXJnaW4tc21hbGwtcmlnaHQgewogIG1hcmdpbi1yaWdodDogNXB4ICFpbXBvcnRhbnQ7Cn0KLyoKICogUmVtb3ZlIG1hcmdpbnMKICovCi51ay1tYXJnaW4tcmVtb3ZlIHsKICBtYXJnaW46IDAgIWltcG9ydGFudDsKfQoudWstbWFyZ2luLXRvcC1yZW1vdmUgewogIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoudWstbWFyZ2luLWJvdHRvbS1yZW1vdmUgewogIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKfQovKiBQYWRkaW5nCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstcGFkZGluZy1yZW1vdmUgewogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoudWstcGFkZGluZy10b3AtcmVtb3ZlIHsKICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50Owp9Ci51ay1wYWRkaW5nLWJvdHRvbS1yZW1vdmUgewogIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KLnVrLXBhZGRpbmctdmVydGljYWwtcmVtb3ZlIHsKICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KLyogQm9yZGVyCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstYm9yZGVyLWNpcmNsZSB7CiAgYm9yZGVyLXJhZGl1czogNTAlOwp9Ci51ay1ib3JkZXItcm91bmRlZCB7CiAgYm9yZGVyLXJhZGl1czogNXB4Owp9Ci8qIEhlYWRpbmdzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstaGVhZGluZy1sYXJnZSB7CiAgZm9udC1zaXplOiAzNnB4OwogIGxpbmUtaGVpZ2h0OiA0MnB4Owp9Ci8qIFRhYmxldCBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC51ay1oZWFkaW5nLWxhcmdlIHsKICAgIGZvbnQtc2l6ZTogNTJweDsKICAgIGxpbmUtaGVpZ2h0OiA2NHB4OwogIH0KfQovKiBMaW5rCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBMZXQgbGlua3MgYXBwZWFyIGluIGRlZmF1bHQgdGV4dCBjb2xvcgogKi8KLnVrLWxpbmstbXV0ZWQsCi51ay1saW5rLW11dGVkIGEgewogIGNvbG9yOiAjNDQ0Owp9Ci51ay1saW5rLW11dGVkOmhvdmVyLAoudWstbGluay1tdXRlZCBhOmhvdmVyIHsKICBjb2xvcjogIzQ0NDsKfQovKgogKiBSZXNldCBsaW5rIHN0eWxlCiAqLwoudWstbGluay1yZXNldCwKLnVrLWxpbmstcmVzZXQgYSwKLnVrLWxpbmstcmVzZXQ6aG92ZXIsCi51ay1saW5rLXJlc2V0IGE6aG92ZXIsCi51ay1saW5rLXJlc2V0OmZvY3VzLAoudWstbGluay1yZXNldCBhOmZvY3VzIHsKICBjb2xvcjogaW5oZXJpdDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLyogU2Nyb2xsYWJsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogRW5hYmxlIHNjcm9sbGluZyBmb3IgcHJlZm9ybWF0dGVkIHRleHQKICovCi51ay1zY3JvbGxhYmxlLXRleHQgewogIGhlaWdodDogMzAwcHg7CiAgb3ZlcmZsb3cteTogc2Nyb2xsOwogIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICByZXNpemU6IGJvdGg7Cn0KLyoKICogQm94IHdpdGggc2Nyb2xsaW5nIGVuYWJsZWQKICovCi51ay1zY3JvbGxhYmxlLWJveCB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBoZWlnaHQ6IDE3MHB4OwogIHBhZGRpbmc6IDEwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICBvdmVyZmxvdzogYXV0bzsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgcmVzaXplOiBib3RoOwp9Ci51ay1zY3JvbGxhYmxlLWJveCA+IDpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci8qIE92ZXJmbG93CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoudWstb3ZlcmZsb3ctaGlkZGVuIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci8qCiAqIEVuYWJsZSBzY3JvbGxiYXJzIGlmIGNvbnRlbnQgaXMgY2xpcHBlZAogKi8KLnVrLW92ZXJmbG93LWNvbnRhaW5lciB7CiAgb3ZlcmZsb3c6IGF1dG87CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwp9Ci51ay1vdmVyZmxvdy1jb250YWluZXIgPiA6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQovKiBQb3NpdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLXBvc2l0aW9uLWFic29sdXRlLApbY2xhc3MqPSd1ay1wb3NpdGlvbi10b3AnXSwKW2NsYXNzKj0ndWstcG9zaXRpb24tYm90dG9tJ10gewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50Owp9Ci8qIERvbid0IHVzZSBgd2lkdGg6IDEwMCVgIGJlY2F1c2UgaXQgaXMgd3JvbmcgaWYgdGhlIHBhcmVudCBoYXMgcGFkZGluZy4gKi8KLnVrLXBvc2l0aW9uLXRvcCB7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7Cn0KLnVrLXBvc2l0aW9uLWJvdHRvbSB7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7Cn0KLnVrLXBvc2l0aW9uLXRvcC1sZWZ0IHsKICB0b3A6IDA7CiAgbGVmdDogMDsKfQoudWstcG9zaXRpb24tdG9wLXJpZ2h0IHsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7Cn0KLnVrLXBvc2l0aW9uLWJvdHRvbS1sZWZ0IHsKICBib3R0b206IDA7CiAgbGVmdDogMDsKfQoudWstcG9zaXRpb24tYm90dG9tLXJpZ2h0IHsKICBib3R0b206IDA7CiAgcmlnaHQ6IDA7Cn0KLyoKICogQ292ZXIKICovCi51ay1wb3NpdGlvbi1jb3ZlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICByaWdodDogMDsKfQovKgogKiBSZWxhdGl2ZQogKi8KLnVrLXBvc2l0aW9uLXJlbGF0aXZlIHsKICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKfQovKgogKiBaLWluZGV4CiAqLwoudWstcG9zaXRpb24tei1pbmRleCB7CiAgei1pbmRleDogMTsKfQovKiBEaXNwbGF5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBEaXNwbGF5CiAqIDEuIFJlcXVpcmVkIGlmIGNoaWxkIGlzIGEgcmVzcG9uc2l2ZSBpbWFnZQogKi8KLnVrLWRpc3BsYXktYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KLnVrLWRpc3BsYXktaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoudWstZGlzcGxheS1pbmxpbmUtYmxvY2sgewogIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIC8qIDEgKi8KICBtYXgtd2lkdGg6IDEwMCU7Cn0KLyoKICogVmlzaWJpbGl0eQogKiBBdm9pZHMgc2V0dGluZyBkaXNwbGF5IHRvIGBibG9ja2Agc28gaXQgd29ya3MgYWxzbyB3aXRoIGBpbmxpbmUtYmxvY2tgIGFuZCBgdGFibGVgCiAqLwovKiBEZXNrdG9wIGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7CiAgLnVrLXZpc2libGUtc21hbGwgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAudWstdmlzaWJsZS1tZWRpdW0gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAudWstaGlkZGVuLWxhcmdlIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KLyogVGFibGV0cyBwb3J0cmFpdCAqLwpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5NTlweCkgewogIC51ay12aXNpYmxlLXNtYWxsIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLnVrLXZpc2libGUtbGFyZ2UgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50IDsKICB9CiAgLnVrLWhpZGRlbi1tZWRpdW0gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQovKiBQaG9uZSBsYW5kc2NhcGUgYW5kIHNtYWxsZXIqLwpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAudWstdmlzaWJsZS1tZWRpdW0gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAudWstdmlzaWJsZS1sYXJnZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIC51ay1oaWRkZW4tc21hbGwgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQovKiBSZW1vdmUgZnJvbSB0aGUgZmxvdyBhbmQgc2NyZWVuIHJlYWRlcnMgb24gYW55IGRldmljZSAqLwoudWstaGlkZGVuIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7Cn0KLyogSXQncyBoaWRkZW4sIGJ1dCBzdGlsbCBhZmZlY3RzIGxheW91dCAqLwoudWstaW52aXNpYmxlIHsKICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKfQovKiBTaG93IG9uIGhvdmVyICovCi51ay12aXNpYmxlLWhvdmVyOmhvdmVyIC51ay1oaWRkZW4sCi51ay12aXNpYmxlLWhvdmVyOmhvdmVyIC51ay1pbnZpc2libGUgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9Ci51ay12aXNpYmxlLWhvdmVyLWlubGluZTpob3ZlciAudWstaGlkZGVuLAoudWstdmlzaWJsZS1ob3Zlci1pbmxpbmU6aG92ZXIgLnVrLWludmlzaWJsZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9Ci8qIEhpZGUgb24gdG91Y2ggKi8KLnVrLXRvdWNoIC51ay1oaWRkZW4tdG91Y2gsCi51ay1ub3RvdWNoIC51ay1oaWRkZW4tbm90b3VjaCB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IEZsZXgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1mbGV4IHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgZGlzcGxheTogZmxleDsKfQoudWstZmxleC1pbmxpbmUgewogIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4OwogIGRpc3BsYXk6IGlubGluZS1mbGV4Owp9Ci8qCiAqIEZpeGVzIGluaXRpYWwgZmxleC1zaHJpbmsgdmFsdWUgaW4gSUUxMAogKi8KLnVrLWZsZXggPiAqLAoudWstZmxleC1pbmxpbmUgPiAqIHsKICAtbXMtZmxleC1uZWdhdGl2ZTogMTsKfQovKiBBbGlnbm1lbnQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi8qCiAqIFZlcnRpY2FsIGFsaWdubWVudAogKiBEZWZhdWx0IHZhbHVlIGlzIGBzdHJldGNoYAogKi8KLnVrLWZsZXgtdG9wIHsKICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKfQoudWstZmxleC1taWRkbGUgewogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLnVrLWZsZXgtYm90dG9tIHsKICAtbXMtZmxleC1hbGlnbjogZW5kOwogIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQovKgogKiBIb3Jpem9udGFsIGFsaWdubWVudAogKiBEZWZhdWx0IHZhbHVlIGlzIGBmbGV4LXN0YXJ0YAogKi8KLnVrLWZsZXgtY2VudGVyIHsKICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoudWstZmxleC1yaWdodCB7CiAgLW1zLWZsZXgtcGFjazogZW5kOwogIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwp9Ci51ay1mbGV4LXNwYWNlLWJldHdlZW4gewogIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7CiAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9Ci51ay1mbGV4LXNwYWNlLWFyb3VuZCB7CiAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTsKICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwp9Ci8qIERpcmVjdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLnVrLWZsZXgtcm93LXJldmVyc2UgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwp9Ci51ay1mbGV4LWNvbHVtbiB7CiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLnVrLWZsZXgtY29sdW1uLXJldmVyc2UgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwp9Ci8qIFdyYXAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1mbGV4LW5vd3JhcCB7CiAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogIC13ZWJraXQtZmxleC13cmFwOiBub3dyYXA7CiAgZmxleC13cmFwOiBub3dyYXA7Cn0KLnVrLWZsZXgtd3JhcCB7CiAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAtd2Via2l0LWZsZXgtd3JhcDogd3JhcDsKICBmbGV4LXdyYXA6IHdyYXA7Cn0KLnVrLWZsZXgtd3JhcC1yZXZlcnNlIHsKICAtbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKfQovKgogKiBIb3Jpem9udGFsIGFsaWdubWVudAogKiBEZWZhdWx0IHZhbHVlIGlzIGBzdHJldGNoYAogKi8KLnVrLWZsZXgtd3JhcC10b3AgewogIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQ7CiAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cn0KLnVrLWZsZXgtd3JhcC1taWRkbGUgewogIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOwogIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyOwogIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKfQoudWstZmxleC13cmFwLWJvdHRvbSB7CiAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQ7CiAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKfQoudWstZmxleC13cmFwLXNwYWNlLWJldHdlZW4gewogIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeTsKICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKfQoudWstZmxleC13cmFwLXNwYWNlLWFyb3VuZCB7CiAgLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlOwogIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKfQovKiBJdGVtIG9yZGVyaW5nCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwovKgogKiBEZWZhdWx0IGlzIDAKICovCi51ay1mbGV4LW9yZGVyLWZpcnN0IHsKICAtbXMtZmxleC1vcmRlcjogLTE7CiAgLXdlYmtpdC1vcmRlcjogLTE7CiAgb3JkZXI6IC0xOwp9Ci51ay1mbGV4LW9yZGVyLWxhc3QgewogIC1tcy1mbGV4LW9yZGVyOiA5OTsKICAtd2Via2l0LW9yZGVyOiA5OTsKICBvcmRlcjogOTk7Cn0KLyogUGhvbmUgbGFuZHNjYXBlIGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7CiAgLnVrLWZsZXgtb3JkZXItZmlyc3Qtc21hbGwgewogICAgLW1zLWZsZXgtb3JkZXI6IC0xOwogICAgLXdlYmtpdC1vcmRlcjogLTE7CiAgICBvcmRlcjogLTE7CiAgfQogIC51ay1mbGV4LW9yZGVyLWxhc3Qtc21hbGwgewogICAgLW1zLWZsZXgtb3JkZXI6IDk5OwogICAgLXdlYmtpdC1vcmRlcjogOTk7CiAgICBvcmRlcjogOTk7CiAgfQp9Ci8qIFRhYmxldCBhbmQgYmlnZ2VyICovCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC51ay1mbGV4LW9yZGVyLWZpcnN0LW1lZGl1bSB7CiAgICAtbXMtZmxleC1vcmRlcjogLTE7CiAgICAtd2Via2l0LW9yZGVyOiAtMTsKICAgIG9yZGVyOiAtMTsKICB9CiAgLnVrLWZsZXgtb3JkZXItbGFzdC1tZWRpdW0gewogICAgLW1zLWZsZXgtb3JkZXI6IDk5OwogICAgLXdlYmtpdC1vcmRlcjogOTk7CiAgICBvcmRlcjogOTk7CiAgfQp9Ci8qIERlc2t0b3AgYW5kIGJpZ2dlciAqLwpAbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHsKICAudWstZmxleC1vcmRlci1maXJzdC1sYXJnZSB7CiAgICAtbXMtZmxleC1vcmRlcjogLTE7CiAgICAtd2Via2l0LW9yZGVyOiAtMTsKICAgIG9yZGVyOiAtMTsKICB9CiAgLnVrLWZsZXgtb3JkZXItbGFzdC1sYXJnZSB7CiAgICAtbXMtZmxleC1vcmRlcjogOTk7CiAgICAtd2Via2l0LW9yZGVyOiA5OTsKICAgIG9yZGVyOiA5OTsKICB9Cn0KLyogTGFyZ2Ugc2NyZWVuIGFuZCBiaWdnZXIgKi8KQG1lZGlhIChtaW4td2lkdGg6IDEyMjBweCkgewogIC51ay1mbGV4LW9yZGVyLWZpcnN0LXhsYXJnZSB7CiAgICAtbXMtZmxleC1vcmRlcjogLTE7CiAgICAtd2Via2l0LW9yZGVyOiAtMTsKICAgIG9yZGVyOiAtMTsKICB9CiAgLnVrLWZsZXgtb3JkZXItbGFzdC14bGFyZ2UgewogICAgLW1zLWZsZXgtb3JkZXI6IDk5OwogICAgLXdlYmtpdC1vcmRlcjogOTk7CiAgICBvcmRlcjogOTk7CiAgfQp9Ci8qIEl0ZW0gZGltZW5zaW9ucwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLyoKICogSW5pdGlhbDogMCAxIGF1dG8KICogQ29udGVudCBkaW1lbnNpb25zLCBidXQgc2hyaW5rcwogKi8KLyoKICogTm8gRmxleDogMCAwIGF1dG8KICogQ29udGVudCBkaW1lbnNpb25zCiAqLwoudWstZmxleC1pdGVtLW5vbmUgewogIC1tcy1mbGV4OiBub25lOwogIC13ZWJraXQtZmxleDogbm9uZTsKICBmbGV4OiBub25lOwp9Ci8qCiAqIFJlbGF0aXZlIEZsZXg6IDEgMSBhdXRvCiAqIFNwYWNlIGlzIGFsbG9jYXRlZCBjb25zaWRlcmluZyBjb250ZW50CiAqIDEuIEZpeGVzIGZsZXgtc2hyaW5rIHZhbHVlIGluIElFMTAKICovCi51ay1mbGV4LWl0ZW0tYXV0byB7CiAgLW1zLWZsZXg6IGF1dG87CiAgLXdlYmtpdC1mbGV4OiBhdXRvOwogIGZsZXg6IGF1dG87CiAgLyogMSAqLwogIC1tcy1mbGV4LW5lZ2F0aXZlOiAxOwp9Ci8qCiAqIEFic29sdXRlIEZsZXg6IDEgMSAwJQogKiBTcGFjZSBpcyBhbGxvY2F0ZWQgc29sZWx5IGJhc2VkIG9uIGZsZXgKICovCi51ay1mbGV4LWl0ZW0tMSB7CiAgLW1zLWZsZXg6IDE7CiAgLXdlYmtpdC1mbGV4OiAxOwogIGZsZXg6IDE7Cn0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIENvbXBvbmVudDogQ29udHJhc3QKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi51ay1jb250cmFzdCB7CiAgY29sb3I6ICNmZmY7CiAgLyogQWN0aXZlICovCn0KLnVrLWNvbnRyYXN0IGE6bm90KFtjbGFzc10pLAoudWstY29udHJhc3QgLnVrLWxpbmsgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci51ay1jb250cmFzdCBhOm5vdChbY2xhc3NdKTpob3ZlciwKLnVrLWNvbnRyYXN0IC51ay1saW5rOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoudWstY29udHJhc3QgOm5vdChwcmUpID4gY29kZSwKLnVrLWNvbnRyYXN0IDpub3QocHJlKSA+IGtiZCwKLnVrLWNvbnRyYXN0IDpub3QocHJlKSA+IHNhbXAgewogIGNvbG9yOiAjZmZmOwp9Ci51ay1jb250cmFzdCBlbSB7CiAgY29sb3I6ICNmZmY7Cn0KLnVrLWNvbnRyYXN0IGgxLAoudWstY29udHJhc3QgaDIsCi51ay1jb250cmFzdCBoMywKLnVrLWNvbnRyYXN0IGg0LAoudWstY29udHJhc3QgaDUsCi51ay1jb250cmFzdCBoNiB7CiAgY29sb3I6ICNmZmY7Cn0KLnVrLWNvbnRyYXN0IGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7Cn0KLnVrLWNvbnRyYXN0IC51ay1uYXYgbGkgPiBhLAoudWstY29udHJhc3QgLnVrLW5hdiBsaSA+IGE6aG92ZXIgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudWstY29udHJhc3QgLnVrLW5hdi1zaWRlID4gbGkgPiBhIHsKICBjb2xvcjogI2ZmZjsKfQoudWstY29udHJhc3QgLnVrLW5hdi1zaWRlID4gbGkgPiBhOmhvdmVyLAoudWstY29udHJhc3QgLnVrLW5hdi1zaWRlID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgY29sb3I6ICNmZmY7Cn0KLnVrLWNvbnRyYXN0IC51ay1uYXYtc2lkZSA+IGxpLnVrLWFjdGl2ZSA+IGEgewogIGJhY2tncm91bmQ6ICNmZmY7CiAgY29sb3I6ICM0NDQ7Cn0KLnVrLWNvbnRyYXN0IC51ay1uYXYtc2lkZSAudWstbmF2LWhlYWRlciB7CiAgY29sb3I6ICNmZmY7Cn0KLnVrLWNvbnRyYXN0IC51ay1uYXYtc2lkZSAudWstbmF2LWRpdmlkZXIgewogIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKfQoudWstY29udHJhc3QgLnVrLW5hdi1zaWRlIHVsIGEgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7Cn0KLnVrLWNvbnRyYXN0IC51ay1uYXYtc2lkZSB1bCBhOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKfQoudWstY29udHJhc3QgLnVrLXN1Ym5hdiA+ICogPiBhIHsKICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudWstY29udHJhc3QgLnVrLXN1Ym5hdiA+ICogPiBhOmhvdmVyLAoudWstY29udHJhc3QgLnVrLXN1Ym5hdiA+ICogPiBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLnVrLWNvbnRyYXN0IC51ay1zdWJuYXYgPiAudWstYWN0aXZlID4gYSB7CiAgY29sb3I6ICNmZmY7Cn0KLnVrLWNvbnRyYXN0IC51ay1zdWJuYXYtbGluZSA+IDpudGgtY2hpbGQobisyKTpiZWZvcmUgewogIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7Cn0KLnVrLWNvbnRyYXN0IC51ay1zdWJuYXYtcGlsbCA+ICogPiBhOmhvdmVyLAoudWstY29udHJhc3QgLnVrLXN1Ym5hdi1waWxsID4gKiA+IGE6Zm9jdXMgewogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICBjb2xvcjogIzQ0NDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLnVrLWNvbnRyYXN0IC51ay1zdWJuYXYtcGlsbCA+IC51ay1hY3RpdmUgPiBhIHsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1jb250cmFzdCAudWstdGFiIHsKICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7Cn0KLnVrLWNvbnRyYXN0IC51ay10YWIgPiBsaSA+IGEgewogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKfQoudWstY29udHJhc3QgLnVrLXRhYiA+IGxpID4gYTpob3ZlciwKLnVrLWNvbnRyYXN0IC51ay10YWIgPiBsaSA+IGE6Zm9jdXMsCi51ay1jb250cmFzdCAudWstdGFiID4gbGkudWstb3BlbiA+IGEgewogIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICBjb2xvcjogIzQ0NDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLnVrLWNvbnRyYXN0IC51ay10YWIgPiBsaS51ay1hY3RpdmUgPiBhIHsKICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1jb250cmFzdCAudWstdGFiLWNlbnRlciB7CiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwp9Ci51ay1jb250cmFzdCAudWstdGFiLWdyaWQ6YmVmb3JlIHsKICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7Cn0KLnVrLWNvbnRyYXN0IC51ay1saXN0LWxpbmUgPiBsaTpudGgtY2hpbGQobisyKSB7CiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwp9Ci51ay1jb250cmFzdCAudWstZm9ybSBzZWxlY3QsCi51ay1jb250cmFzdCAudWstZm9ybSB0ZXh0YXJlYSwKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0Om5vdChbdHlwZV0pLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0idGV4dCJdLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0icGFzc3dvcmQiXSwKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0sCi51ay1jb250cmFzdCAudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0iZGF0ZSJdLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0ibW9udGgiXSwKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9InRpbWUiXSwKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9IndlZWsiXSwKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0iZW1haWwiXSwKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9InVybCJdLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0ic2VhcmNoIl0sCi51ay1jb250cmFzdCAudWstZm9ybSBpbnB1dFt0eXBlPSJ0ZWwiXSwKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9ImNvbG9yIl0gewogIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICBjb2xvcjogIzQ0NDsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94Owp9Ci51ay1jb250cmFzdCAudWstZm9ybSBzZWxlY3Q6Zm9jdXMsCi51ay1jb250cmFzdCAudWstZm9ybSB0ZXh0YXJlYTpmb2N1cywKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0Om5vdChbdHlwZV0pOmZvY3VzLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0idGV4dCJdOmZvY3VzLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0icGFzc3dvcmQiXTpmb2N1cywKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9ImRhdGV0aW1lIl06Zm9jdXMsCi51ay1jb250cmFzdCAudWstZm9ybSBpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdOmZvY3VzLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0iZGF0ZSJdOmZvY3VzLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0ibW9udGgiXTpmb2N1cywKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9InRpbWUiXTpmb2N1cywKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9IndlZWsiXTpmb2N1cywKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdOmZvY3VzLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0iZW1haWwiXTpmb2N1cywKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9InVybCJdOmZvY3VzLAoudWstY29udHJhc3QgLnVrLWZvcm0gaW5wdXRbdHlwZT0ic2VhcmNoIl06Zm9jdXMsCi51ay1jb250cmFzdCAudWstZm9ybSBpbnB1dFt0eXBlPSJ0ZWwiXTpmb2N1cywKLnVrLWNvbnRyYXN0IC51ay1mb3JtIGlucHV0W3R5cGU9ImNvbG9yIl06Zm9jdXMgewogIGJvcmRlci1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1jb250cmFzdCAudWstZm9ybSA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogcmdiYSg2OCwgNjgsIDY4LCAwLjcpICFpbXBvcnRhbnQ7Cn0KLnVrLWNvbnRyYXN0IC51ay1mb3JtIDo6LW1vei1wbGFjZWhvbGRlciB7CiAgY29sb3I6IHJnYmEoNjgsIDY4LCA2OCwgMC43KTsKfQoudWstY29udHJhc3QgLnVrLWZvcm0gOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogcmdiYSg2OCwgNjgsIDY4LCAwLjcpOwp9Ci51ay1jb250cmFzdCAudWstYnV0dG9uIHsKICBjb2xvcjogIzQ0NDsKICBiYWNrZ3JvdW5kOiAjZmZmOwp9Ci51ay1jb250cmFzdCAudWstYnV0dG9uOmhvdmVyLAoudWstY29udHJhc3QgLnVrLWJ1dHRvbjpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1jb250cmFzdCAudWstYnV0dG9uOmFjdGl2ZSwKLnVrLWNvbnRyYXN0IC51ay1idXR0b24udWstYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgY29sb3I6ICM0NDQ7Cn0KLnVrLWNvbnRyYXN0IC51ay1idXR0b24tcHJpbWFyeSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYThlNjsKICBjb2xvcjogI2ZmZjsKfQoudWstY29udHJhc3QgLnVrLWJ1dHRvbi1wcmltYXJ5OmhvdmVyLAoudWstY29udHJhc3QgLnVrLWJ1dHRvbi1wcmltYXJ5OmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzViM2VlOwogIGNvbG9yOiAjZmZmOwp9Ci51ay1jb250cmFzdCAudWstYnV0dG9uLXByaW1hcnk6YWN0aXZlLAoudWstY29udHJhc3QgLnVrLWJ1dHRvbi1wcmltYXJ5LnVrLWFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTFjYTsKICBjb2xvcjogI2ZmZjsKfQoudWstY29udHJhc3QgLnVrLWljb24taG92ZXIgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7Cn0KLnVrLWNvbnRyYXN0IC51ay1pY29uLWhvdmVyOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKfQoudWstY29udHJhc3QgLnVrLWljb24tYnV0dG9uIHsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1jb250cmFzdCAudWstaWNvbi1idXR0b246aG92ZXIsCi51ay1jb250cmFzdCAudWstaWNvbi1idXR0b246Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICBjb2xvcjogIzQ0NDsKfQoudWstY29udHJhc3QgLnVrLWljb24tYnV0dG9uOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogIGNvbG9yOiAjNDQ0Owp9Ci51ay1jb250cmFzdCAudWstdGV4dC1tdXRlZCB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KSAhaW1wb3J0YW50Owp9Ci51ay1jb250cmFzdCAudWstdGV4dC1wcmltYXJ5IHsKICBjb2xvcjogIzJkNzA5MSAhaW1wb3J0YW50Owp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBDb21wb25lbnQ6IFByaW50CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpAbWVkaWEgcHJpbnQgewogICosCiAgKjpiZWZvcmUsCiAgKjphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogIH0KICBhLAogIGE6dmlzaXRlZCB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICB9CiAgcHJlLAogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKICB9CiAgdGhlYWQgewogICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogIH0KICB0ciwKICBpbWcgewogICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwogIH0KICBpbWcgewogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgfQogIEBwYWdlIHsKICAgIG1hcmdpbjogMC41Y207CiAgfQogIHAsCiAgaDIsCiAgaDMgewogICAgb3JwaGFuczogMzsKICAgIHdpZG93czogMzsKICB9CiAgaDIsCiAgaDMgewogICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/compression/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/compression/compression.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2NvbG91cnN7Y29sb3IxOiNmZWE7Y29sb3IyOiNmZmVlYWE7Y29sb3IzOnJnYmEoMjU1LDIzOCwxNzAsMC4xKTtzdHJpbmc6IiNmZWEiOy8qISBidXQgbm90IHRoaXMgdHlwZQogICAgICBOb3RlIHByZXNlcnZlZCB3aGl0ZXNwYWNlCiAgKi99ZGltZW5zaW9uc3t2YWw6LjFweDt2YWw6MGVtO3ZhbDo0Y207dmFsOi4yO3ZhbDo1O2FuZ2xlcy1tdXN0LWhhdmUtdW5pdDowZGVnO2R1cmF0aW9ucy1tdXN0LWhhdmUtdW5pdDowcztsZW5ndGgtZG9lc250LWhhdmUtdW5pdDowcHg7d2lkdGg6YXV0b1w5fUBwYWdle21hcmtzOm5vbmU7QHRvcC1sZWZ0LWNvcm5lcnt2ZXJ0aWNhbC1hbGlnbjp0b3B9QHRvcC1sZWZ0e3ZlcnRpY2FsLWFsaWduOnRvcH19LnNoYWRvd14uZG9tLGJvZHleXi5zaGFkb3d7ZGlzcGxheTpkb25lfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/debug/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/debug/linenumbers-all.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyogbGluZSAxLCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMxfX0KLyogQGNoYXJzZXQgIklTTy04ODU5LTEiOyAqLwovKiBsaW5lIDIzLCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMyM319Ci50c3QzIHsKICBjb2xvcjogZ3JleTsKfQovKiBsaW5lIDE1LCB7cGF0aH1saW5lbnVtYmVycy5sZXNzICovCkBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGVzY31saW5lbnVtYmVyc1wubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzE1fX0KLnRlc3QtcnVsZTEgewogIGNvbG9yOiBibGFjazsKfQovKiBsaW5lIDYsIHtwYXRofWxpbmVudW1iZXJzLmxlc3MgKi8KQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoZXNjfWxpbmVudW1iZXJzXC5sZXNzfWxpbmV7Zm9udC1mYW1pbHk6XDAwMDAzNn19Ci50ZXN0LXJ1bGUyIHsKICBjb2xvcjogcmVkOwp9CkBtZWRpYSBhbGwgewogIC8qIGxpbmUgNSwge3BhdGhpbXBvcnR9dGVzdC5sZXNzICovCiAgQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDM1fX0KICAudHN0IHsKICAgIGNvbG9yOiBibGFjazsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgc2NyZWVuIHsKICAvKiBsaW5lIDcsIHtwYXRoaW1wb3J0fXRlc3QubGVzcyAqLwogIEBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGltcG9ydGVzY310ZXN0XC5sZXNzfWxpbmV7Zm9udC1mYW1pbHk6XDAwMDAzN319CiAgLnRzdCB7CiAgICBjb2xvcjogcmVkOwogIH0KICAvKiBsaW5lIDksIHtwYXRoaW1wb3J0fXRlc3QubGVzcyAqLwogIEBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGltcG9ydGVzY310ZXN0XC5sZXNzfWxpbmV7Zm9udC1mYW1pbHk6XDAwMDAzOX19CiAgLnRzdCAudHN0MyB7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9Cn0KLyogbGluZSAxOCwge3BhdGhpbXBvcnR9dGVzdC5sZXNzICovCkBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGltcG9ydGVzY310ZXN0XC5sZXNzfWxpbmV7Zm9udC1mYW1pbHk6XDAwMDAzMTh9fQoudHN0MiB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLyogbGluZSAyNywge3BhdGh9bGluZW51bWJlcnMubGVzcyAqLwpAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhlc2N9bGluZW51bWJlcnNcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMyN319Ci50ZXN0LXJ1bGUgewogIGNvbG9yOiByZWQ7CiAgd2lkdGg6IDI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/debug/linenumbers-comments.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyogbGluZSAxLCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KLyogQGNoYXJzZXQgIklTTy04ODU5LTEiOyAqLwovKiBsaW5lIDIzLCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KLnRzdDMgewogIGNvbG9yOiBncmV5Owp9Ci8qIGxpbmUgMTUsIHtwYXRofWxpbmVudW1iZXJzLmxlc3MgKi8KLnRlc3QtcnVsZTEgewogIGNvbG9yOiBibGFjazsKfQovKiBsaW5lIDYsIHtwYXRofWxpbmVudW1iZXJzLmxlc3MgKi8KLnRlc3QtcnVsZTIgewogIGNvbG9yOiByZWQ7Cn0KQG1lZGlhIGFsbCB7CiAgLyogbGluZSA1LCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KICAudHN0IHsKICAgIGNvbG9yOiBibGFjazsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgc2NyZWVuIHsKICAvKiBsaW5lIDcsIHtwYXRoaW1wb3J0fXRlc3QubGVzcyAqLwogIC50c3QgewogICAgY29sb3I6IHJlZDsKICB9CiAgLyogbGluZSA5LCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KICAudHN0IC50c3QzIHsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KfQovKiBsaW5lIDE4LCB7cGF0aGltcG9ydH10ZXN0Lmxlc3MgKi8KLnRzdDIgewogIGNvbG9yOiBpbmhlcml0Owp9Ci8qIGxpbmUgMjcsIHtwYXRofWxpbmVudW1iZXJzLmxlc3MgKi8KLnRlc3QtcnVsZSB7CiAgY29sb3I6IHJlZDsKICB3aWR0aDogMjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/debug/linenumbers-mediaquery.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDMxfX0KLyogQGNoYXJzZXQgIklTTy04ODU5LTEiOyAqLwpAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhpbXBvcnRlc2N9dGVzdFwubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzIzfX0KLnRzdDMgewogIGNvbG9yOiBncmV5Owp9CkBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGVzY31saW5lbnVtYmVyc1wubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzE1fX0KLnRlc3QtcnVsZTEgewogIGNvbG9yOiBibGFjazsKfQpAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhlc2N9bGluZW51bWJlcnNcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDM2fX0KLnRlc3QtcnVsZTIgewogIGNvbG9yOiByZWQ7Cn0KQG1lZGlhIGFsbCB7CiAgQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDM1fX0KICAudHN0IHsKICAgIGNvbG9yOiBibGFjazsKICB9Cn0KQG1lZGlhIGFsbCBhbmQgc2NyZWVuIHsKICBAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhpbXBvcnRlc2N9dGVzdFwubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzd9fQogIC50c3QgewogICAgY29sb3I6IHJlZDsKICB9CiAgQG1lZGlhIC1zYXNzLWRlYnVnLWluZm97ZmlsZW5hbWV7Zm9udC1mYW1pbHk6ZmlsZVw6XC9cL3twYXRoaW1wb3J0ZXNjfXRlc3RcLmxlc3N9bGluZXtmb250LWZhbWlseTpcMDAwMDM5fX0KICAudHN0IC50c3QzIHsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KfQpAbWVkaWEgLXNhc3MtZGVidWctaW5mb3tmaWxlbmFtZXtmb250LWZhbWlseTpmaWxlXDpcL1wve3BhdGhpbXBvcnRlc2N9dGVzdFwubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzE4fX0KLnRzdDIgewogIGNvbG9yOiBpbmhlcml0Owp9CkBtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZve2ZpbGVuYW1le2ZvbnQtZmFtaWx5OmZpbGVcOlwvXC97cGF0aGVzY31saW5lbnVtYmVyc1wubGVzc31saW5le2ZvbnQtZmFtaWx5OlwwMDAwMzI3fX0KLnRlc3QtcnVsZSB7CiAgY29sb3I6IHJlZDsKICB3aWR0aDogMjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/filemanagerPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/filemanagerPlugin/filemanager.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZSB7CiAgY29sb3I6IHJlZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/globalVars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/globalVars/extended.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAgKiBUZXN0CiAgKi8KI2hlYWRlciB7CiAgY29sb3I6ICMzMzMzMzM7CiAgYm9yZGVyLWxlZnQ6IDFweDsKICBib3JkZXItcmlnaHQ6IDJweDsKfQojZm9vdGVyIHsKICBjb2xvcjogIzExNDQxMTsKICBib3JkZXItY29sb3I6ICNmMjBkMGQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/globalVars/simple.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAgKiBUZXN0CiAgKi8KLmNsYXNzIHsKICBjb2xvcjogcmVkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/include-path-string/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/include-path-string/include-path-string.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGF0YS11cmkgewogIHByb3BlcnR5OiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUyMHN0YW5kYWxvbmUlM0QlMjJubyUyMiUzRiUzRSUwQSUzQ3N2ZyUyMGhlaWdodCUzRCUyMjEwMCUyMiUyMHdpZHRoJTNEJTIyMTAwJTIyJTNFJTBBJTIwJTIwJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNDAlMjIlMjBzdHJva2UlM0QlMjJibGFjayUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIyYmx1ZSUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/include-path/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/include-path/include-path.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgd2lkdGg6IDEwMCU7Cn0KZGF0YS11cmkgewogIHByb3BlcnR5OiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUyMHN0YW5kYWxvbmUlM0QlMjJubyUyMiUzRiUzRSUwQSUzQ3N2ZyUyMGhlaWdodCUzRCUyMjEwMCUyMiUyMHdpZHRoJTNEJTIyMTAwJTIyJTNFJTBBJTIwJTIwJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNDAlMjIlMjBzdHJva2UlM0QlMjJibGFjayUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIyYmx1ZSUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpOwp9CmltYWdlLXNpemUgewogIHByb3BlcnR5OiAxMDBweCAxMDBweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/legacy/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/legacy/legacy.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7CiAgLnRlc3QtcnVsZS1tYXRoLWFuZC11bml0cyB7CiAgICBmb250OiBpZ25vcmVzIDAvMCBydWxlczsKICAgIHRlc3QtZGl2aXNpb246IDdlbTsKICAgIHNpbXBsZTogMnB4OwogIH0KfQojdW5pdHMgewogIHQxOiAyMmVtOwogIHQyOiAyMmVtOwogIHQzOiAyZW07CiAgdDQ6IDIyZW07CiAgdDU6IDIyZW07CiAgdDY6IDJlbTsKICB0NzogMjJlbTsKICB0ODogMjJlbTsKICB0OTogMmVtOwogIHQxMDogMjJlbTsKICB0MTE6IDIyZW07CiAgdDEyOiAyZW07Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/parens-division/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/parens-division/media-math.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIChtaW4td2lkdGg6IDE3KSB7CiAgLmZvbyB7CiAgICBiYXI6IDE7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxNiAvIDkpIHsKICAuZm9vIHsKICAgIGJhcjogMTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/parens-division/mixins-args.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hpZGRlbiB7CiAgY29sb3I6IHRyYW5zcGFyZW50Owp9CiNoaWRkZW4xIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLnR3by1hcmdzIHsKICBjb2xvcjogYmx1ZTsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDk5JTsKICBkZXB0aDogOTklOwogIGJvcmRlcjogMnB4IGRvdHRlZCBibGFjazsKfQoub25lLWFyZyB7CiAgd2lkdGg6IDE1cHg7CiAgaGVpZ2h0OiA0OSU7CiAgZGVwdGg6IDQ5JTsKfQoubm8tcGFyZW5zIHsKICB3aWR0aDogNXB4OwogIGhlaWdodDogNDklOwogIGRlcHRoOiA0OSU7Cn0KLm5vLWFyZ3MgewogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA0OSU7CiAgZGVwdGg6IDQ5JTsKfQoudmFyLWFyZ3MgewogIHdpZHRoOiA0NTsKICBoZWlnaHQ6IDglOwogIGRlcHRoOiAxOCAvIDIgLSAxJTsKfQoubXVsdGktbWl4IHsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDI5JTsKICBkZXB0aDogMjklOwogIG1hcmdpbjogNDsKICBwYWRkaW5nOiA1Owp9CmJvZHkgewogIHBhZGRpbmc6IDMwcHg7CiAgY29sb3I6ICNmMDA7Cn0KLnNjb3BlLW1peCB7CiAgd2lkdGg6IDg7Cn0KLmNvbnRlbnQgewogIHdpZHRoOiA2MDBweDsKfQouY29udGVudCAuY29sdW1uIHsKICBtYXJnaW46IDYwMHB4Owp9CiNzYW1lLXZhci1uYW1lIHsKICByYWRpdXM6IDVweDsKfQojdmFyLWluc2lkZSB7CiAgd2lkdGg6IDEwcHg7Cn0KLmFyZ3VtZW50cyB7CiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CiAgd2lkdGg6IDFweDsKfQouYXJndW1lbnRzMiB7CiAgYm9yZGVyOiAwcHg7CiAgd2lkdGg6IDBweDsKfQouYXJndW1lbnRzMyB7CiAgYm9yZGVyOiAwcHg7CiAgd2lkdGg6IDBweDsKfQouYXJndW1lbnRzNCB7CiAgYm9yZGVyOiAwIDEgMiAzIDQ7CiAgcmVzdDogMSAyIDMgNDsKICB3aWR0aDogMDsKfQouZWRnZS1jYXNlIHsKICBib3JkZXI6ICJ7IjsKICB3aWR0aDogInsiOwp9Ci5zbGFzaC12cy1tYXRoIHsKICBib3JkZXItcmFkaXVzOiAycHgvNXB4OwogIGJvcmRlci1yYWRpdXM6IDVweC8xMHB4OwogIGJvcmRlci1yYWRpdXM6IDZweDsKfQouY29tbWEtdnMtc2VtaS1jb2xvbiB7CiAgb25lOiBhOwogIHR3bzogYiwgYzsKICBvbmU6IGQsIGU7CiAgdHdvOiBmOwogIG9uZTogZzsKICBvbmU6IGg7CiAgb25lOiBpOwogIG9uZTogajsKICBvbmU6IGs7CiAgdHdvOiBsOwogIG9uZTogbSwgbjsKICBvbmU6IG8sIHA7CiAgdHdvOiBxOwogIG9uZTogciwgczsKICB0d286IHQ7Cn0KI25hbWVkLWNvbmZsaWN0IHsKICBmb3VyOiBhLCAxMSwgMTIsIDEzOwogIGZvdXI6IGEsIDIxLCAyMiwgMjM7Cn0KLnRlc3QtcnVsZS1taXhpbi1kZWZhdWx0LWFyZyB7CiAgZGVmYXVsdHM6IDFweCAxcHggMXB4OwogIGRlZmF1bHRzOiAycHggMnB4IDJweDsKfQouc2VsZWN0b3IgewogIG1hcmdpbjogMiwgMiwgMiwgMjsKfQouc2VsZWN0b3IyIHsKICBtYXJnaW46IDIsIDIsIDIsIDI7Cn0KLnNlbGVjdG9yMyB7CiAgbWFyZ2luOiA0Owp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC0xIHsKICBtMzogMSwgMiwgMzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtMiB7CiAgbTM6IDQsIDUsIDY7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTNhIHsKICBtMzogYSwgYiwgYzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtM2IgewogIG00OiAwLCBhLCBiLCBjOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC0zYyB7CiAgbTQ6IGEsIGIsIGMsIDQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTRhIHsKICBtMzogYSwgYiwgYywgZDsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNGIgewogIG00OiAwLCBhLCBiLCBjLCBkOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC00YyB7CiAgbTQ6IGEsIGIsIGMsIGQsIDQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTVhIHsKICBtMzogMSwgMiwgMzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNWIgewogIG00OiAwLCAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC01YyB7CiAgbTQ6IDEsIDIsIDMsIDQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTYgewogIG00OiAwLCAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC03IHsKICBtNDogMCwgMSwgMiwgMzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtOCB7CiAgbTQ6IDEsIDEuNSwgMiwgMzsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtOSB7CiAgYWE6IDQgNSA2IDEgMiAzIGFuZCBhZ2FpbiA0IDUgNjsKICBhNDogYW5kOwogIGE4OiA1Owp9CiN0ZXN0LW1peGluLW1hdGNoaW5nLXdoZW4tZGVmYXVsdC0yNjQ1IHsKICBoZWlnaHQ6IDIwcHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/parens-division/new-division.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnVuaXRzIHsKICBmb250OiAxLjJyZW0vMnJlbTsKICBmb250OiA4dncvOXZ3OwogIGZvbnQ6IDEwdmgvMTJ2aDsKICBmb250OiAxMnZtLzE1dm07CiAgZm9udDogMTJ2bWluLzE1dm1pbjsKICBmb250OiAxLjJjaC8xLjVjaDsKfQoubWF0aCB7CiAgYTogMjsKICBiOiAycHggLyAyOwogIGM6IDFweDsKICBkOiAxcHg7CiAgZTogNHB4IC8gMjsKICBmOiAycHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/parens-division/parens.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7CiAgbWFyZ2luOiAxcHggM3B4IDE2IDM7CiAgd2lkdGg6IDM2OwogIHBhZGRpbmc6IDJweCAzNnB4Owp9Ci5tb3JlLXBhcmVucyB7CiAgcGFkZGluZzogOCA0IDQgNHB4OwogIHdpZHRoLWFsbDogOTY7CiAgd2lkdGgtZmlyc3Q6IDk2OwogIHdpZHRoLWtlZXA6IDk2OwogIGhlaWdodDogY2FsYygxMDAlICsgKDI1dmggLSAyMHB4KSk7CiAgaGVpZ2h0LWtlZXA6IDExMzsKICBoZWlnaHQtYWxsOiAxMTM7CiAgaGVpZ2h0LXBhcnRzOiAxMTM7CiAgbWFyZ2luLWtlZXA6IDEyOwogIG1hcmdpbi1wYXJ0czogMTI7CiAgbWFyZ2luLWFsbDogMTI7CiAgYm9yZGVyLXJhZGl1cy1rZWVwOiA4cHggLyA0ICsgM3B4OwogIGJvcmRlci1yYWRpdXMtcGFydHM6IDhweCAvIDdweDsKICBib3JkZXItcmFkaXVzLWFsbDogNXB4Owp9Ci5uZWdhdGl2ZSB7CiAgbmVnLXZhcjogLTE7CiAgbmVnLXZhci1wYXJlbjogLTE7Cn0KLm5lc3RlZC1wYXJlbnMgewogIHdpZHRoOiA3MTsKICBoZWlnaHQ6IDY7Cn0KLm1peGVkLXVuaXRzIHsKICBtYXJnaW46IDJweCA0ZW0gMSA1cGM7CiAgcGFkZGluZzogNnB4IDFlbSAycHggMjsKfQoudGVzdC1ydWxlLWZhbHNlLW5lZ2F0aXZlcyB7CiAgYTogKDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict-legacy/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict-legacy/css.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKZGl2IHsKICBjb2xvcjogYmxhY2s7Cn0KZGl2IHsKICB3aWR0aDogOTklOwp9CiogewogIG1pbi13aWR0aDogNDVlbTsKfQpoMSwKaDIgPiBhID4gcCwKaDMgewogIGNvbG9yOiBub25lOwp9CmRpdi5jbGFzcyB7CiAgY29sb3I6IGJsdWU7Cn0KZGl2I2lkIHsKICBjb2xvcjogZ3JlZW47Cn0KLmNsYXNzI2lkIHsKICBjb2xvcjogcHVycGxlOwp9Ci5vbmUudHdvLnRocmVlIHsKICBjb2xvcjogZ3JleTsKfQpAbWVkaWEgcHJpbnQgewogICogewogICAgZm9udC1zaXplOiAzZW07CiAgfQp9CkBtZWRpYSBzY3JlZW4gewogICogewogICAgZm9udC1zaXplOiAxMHB4OwogIH0KfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dhcmFtb25kIFBybyc7Cn0KYTpob3ZlciwKYTpsaW5rIHsKICBjb2xvcjogIzk5OTsKfQpwLApwOmZpcnN0LWNoaWxkIHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQpxOmxhbmcobm8pIHsKICBxdW90ZXM6IG5vbmU7Cn0KcCArIGgxIHsKICBmb250LXNpemU6IDIuMmVtOwp9CiNzaG9ydGhhbmRzIHsKICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogIGZvbnQ6IDEycHgvMTZweCBBcmlhbDsKICBmb250OiAxMDAlLzE2cHggQXJpYWw7CiAgbWFyZ2luOiAxcHggMDsKICBwYWRkaW5nOiAwIGF1dG87Cn0KI21vcmUtc2hvcnRoYW5kcyB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDFweCAwIDJweCAwOwogIGZvbnQ6IG5vcm1hbCBzbWFsbCAvIDIwcHggJ1RyZWJ1Y2hldCBNUycsIFZlcmRhbmEsIHNhbnMtc2VyaWY7CiAgZm9udDogMC8wIGE7CiAgYm9yZGVyLXJhZGl1czogNXB4IC8gMTBweDsKfQoubWlzYyB7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7CiAgd2lkdGg6IDAuMWVtOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDk5OTg7CiAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZWQpLCB0byhibHVlKSk7CiAgbWFyZ2luOiA7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgd2lkdGg6IGF1dG9cOTsKfQoubWlzYyAubmVzdGVkLW11bHRpcGxlIHsKICBtdWx0aXBsZS1zZW1pLWNvbG9uczogeWVzOwp9CiNpbXBvcnRhbnQgewogIGNvbG9yOiByZWQgIWltcG9ydGFudDsKICB3aWR0aDogMTAwJSFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAyMHB4ICEgaW1wb3J0YW50Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiBmb250LWE7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IGZvbnQtYjsKfQouw6bDuMOlIHsKICBtYXJnaW46IDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict-legacy/media-math.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIChtaW4td2lkdGg6IDE2ICsgMSkgewogIC5mb28gewogICAgYmFyOiAxOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTYgLyA5KSB7CiAgLmZvbyB7CiAgICBiYXI6IDE7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict-legacy/mixins-args.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hpZGRlbiB7CiAgY29sb3I6IHRyYW5zcGFyZW50Owp9CiNoaWRkZW4xIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLnR3by1hcmdzIHsKICBjb2xvcjogYmx1ZTsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDk5JTsKICBib3JkZXI6IDJweCBkb3R0ZWQgYmxhY2s7Cn0KLm9uZS1hcmcgewogIHdpZHRoOiAxNXB4OwogIGhlaWdodDogNDklOwp9Ci5uby1wYXJlbnMgewogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA0OSU7Cn0KLm5vLWFyZ3MgewogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA0OSU7Cn0KLnZhci1hcmdzIHsKICB3aWR0aDogNDU7CiAgaGVpZ2h0OiAxNyU7Cn0KLm11bHRpLW1peCB7CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAyOSU7CiAgbWFyZ2luOiA0OwogIHBhZGRpbmc6IDU7Cn0KYm9keSB7CiAgcGFkZGluZzogMzBweDsKICBjb2xvcjogI2YwMDsKfQouc2NvcGUtbWl4IHsKICB3aWR0aDogODsKfQouY29udGVudCB7CiAgd2lkdGg6IDYwMHB4Owp9Ci5jb250ZW50IC5jb2x1bW4gewogIG1hcmdpbjogNjAwcHg7Cn0KI3NhbWUtdmFyLW5hbWUgewogIHJhZGl1czogNXB4Owp9CiN2YXItaW5zaWRlIHsKICB3aWR0aDogMTBweDsKfQouYXJndW1lbnRzIHsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICB3aWR0aDogMXB4Owp9Ci5hcmd1bWVudHMyIHsKICBib3JkZXI6IDBweDsKICB3aWR0aDogMHB4Owp9Ci5hcmd1bWVudHMzIHsKICBib3JkZXI6IDBweDsKICB3aWR0aDogMHB4Owp9Ci5hcmd1bWVudHM0IHsKICBib3JkZXI6IDAgMSAyIDMgNDsKICByZXN0OiAxIDIgMyA0OwogIHdpZHRoOiAwOwp9Ci5lZGdlLWNhc2UgewogIGJvcmRlcjogInsiOwogIHdpZHRoOiAieyI7Cn0KLnNsYXNoLXZzLW1hdGggewogIGJvcmRlci1yYWRpdXM6IDJweC81cHg7CiAgYm9yZGVyLXJhZGl1czogNXB4LzEwcHg7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5jb21tYS12cy1zZW1pLWNvbG9uIHsKICBvbmU6IGE7CiAgdHdvOiBiLCBjOwogIG9uZTogZCwgZTsKICB0d286IGY7CiAgb25lOiBnOwogIG9uZTogaDsKICBvbmU6IGk7CiAgb25lOiBqOwogIG9uZTogazsKICB0d286IGw7CiAgb25lOiBtLCBuOwogIG9uZTogbywgcDsKICB0d286IHE7CiAgb25lOiByLCBzOwogIHR3bzogdDsKfQojbmFtZWQtY29uZmxpY3QgewogIGZvdXI6IGEsIDExLCAxMiwgMTM7CiAgZm91cjogYSwgMjEsIDIyLCAyMzsKfQoudGVzdC1ydWxlLW1peGluLWRlZmF1bHQtYXJnIHsKICBkZWZhdWx0czogMXB4IDFweCAxcHg7CiAgZGVmYXVsdHM6IDJweCAycHggMnB4Owp9Ci5zZWxlY3RvciB7CiAgbWFyZ2luOiAyLCAyLCAyLCAyOwp9Ci5zZWxlY3RvcjIgewogIG1hcmdpbjogMiwgMiwgMiwgMjsKfQouc2VsZWN0b3IzIHsKICBtYXJnaW46IDQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTEgewogIG0zOiAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC0yIHsKICBtMzogNCwgNSwgNjsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtM2EgewogIG0zOiBhLCBiLCBjOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC0zYiB7CiAgbTQ6IDAsIGEsIGIsIGM7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTNjIHsKICBtNDogYSwgYiwgYywgNDsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNGEgewogIG0zOiBhLCBiLCBjLCBkOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC00YiB7CiAgbTQ6IDAsIGEsIGIsIGMsIGQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTRjIHsKICBtNDogYSwgYiwgYywgZCwgNDsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNWEgewogIG0zOiAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC01YiB7CiAgbTQ6IDAsIDEsIDIsIDM7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTVjIHsKICBtNDogMSwgMiwgMywgNDsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNiB7CiAgbTQ6IDAsIDEsIDIsIDM7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTcgewogIG00OiAwLCAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC04IHsKICBtNDogMSwgMS41LCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC05IHsKICBhYTogNCA1IDYgMSAyIDMgYW5kIGFnYWluIDQgNSA2OwogIGE0OiBhbmQ7CiAgYTg6IDU7Cn0KI3Rlc3QtbWl4aW4tbWF0Y2hpbmctd2hlbi1kZWZhdWx0LTI2NDUgewogIGhlaWdodDogMjBweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict-legacy/parens.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7CiAgbWFyZ2luOiAxcHggM3B4IDE2IDM7CiAgd2lkdGg6IDM2OwogIHBhZGRpbmc6IDJweCAzNnB4Owp9Ci5pbi1mdW5jdGlvbiB7CiAgdmFsdWU6IDIgKyAxOwp9Ci5tb3JlLXBhcmVucyB7CiAgcGFkZGluZzogOCA0IDQgNHB4OwogIHdpZHRoLWFsbDogOTY7CiAgd2lkdGgtZmlyc3Q6IDE2ICogNjsKICB3aWR0aC1rZWVwOiAoNCAqIDQpICogNjsKICBoZWlnaHQ6IGNhbGMoMTAwJSArICgyNXZoIC0gMjBweCkpOwogIGhlaWdodC1rZWVwOiAoNyAqIDcpICsgKDggKiA4KTsKICBoZWlnaHQtYWxsOiAxMTM7CiAgaGVpZ2h0LXBhcnRzOiA0OSArIDY0OwogIG1hcmdpbi1rZWVwOiAoNCAqICg1ICsgNSkgLyAyKSAtICg0ICogMik7CiAgbWFyZ2luLXBhcnRzOiAyMCAtIDg7CiAgbWFyZ2luLWFsbDogMTI7CiAgYm9yZGVyLXJhZGl1cy1rZWVwOiA0cHggKiAoMSArIDEpIC8gNCArIDNweDsKICBib3JkZXItcmFkaXVzLXBhcnRzOiA4cHggLyA3cHg7CiAgYm9yZGVyLXJhZGl1cy1hbGw6IDVweDsKfQoubmVnYXRpdmUgewogIG5lZy12YXI6IC0xOwogIG5lZy12YXItcGFyZW46IC0xOwp9Ci5uZXN0ZWQtcGFyZW5zIHsKICB3aWR0aDogMiAqICg0ICogKDIgKyAoMSArIDYpKSkgLSAxOwogIGhlaWdodDogKCgyICsgMykgKiAoMiArIDMpIC8gKDkgLSA0KSkgKyAxOwp9Ci5taXhlZC11bml0cyB7CiAgbWFyZ2luOiAycHggNGVtIDEgNXBjOwogIHBhZGRpbmc6IDZweCAxZW0gMnB4IDI7Cn0KLnRlc3QtcnVsZS1mYWxzZS1uZWdhdGl2ZXMgewogIGE6ICg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict/css.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKZGl2IHsKICBjb2xvcjogYmxhY2s7Cn0KZGl2IHsKICB3aWR0aDogOTklOwp9CiogewogIG1pbi13aWR0aDogNDVlbTsKfQpoMSwKaDIgPiBhID4gcCwKaDMgewogIGNvbG9yOiBub25lOwp9CmRpdi5jbGFzcyB7CiAgY29sb3I6IGJsdWU7Cn0KZGl2I2lkIHsKICBjb2xvcjogZ3JlZW47Cn0KLmNsYXNzI2lkIHsKICBjb2xvcjogcHVycGxlOwp9Ci5vbmUudHdvLnRocmVlIHsKICBjb2xvcjogZ3JleTsKfQpAbWVkaWEgcHJpbnQgewogICogewogICAgZm9udC1zaXplOiAzZW07CiAgfQp9CkBtZWRpYSBzY3JlZW4gewogICogewogICAgZm9udC1zaXplOiAxMHB4OwogIH0KfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0dhcmFtb25kIFBybyc7Cn0KYTpob3ZlciwKYTpsaW5rIHsKICBjb2xvcjogIzk5OTsKfQpwLApwOmZpcnN0LWNoaWxkIHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQpxOmxhbmcobm8pIHsKICBxdW90ZXM6IG5vbmU7Cn0KcCArIGgxIHsKICBmb250LXNpemU6IDIuMmVtOwp9CiNzaG9ydGhhbmRzIHsKICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogIGZvbnQ6IDEycHgvMTZweCBBcmlhbDsKICBmb250OiAxMDAlLzE2cHggQXJpYWw7CiAgbWFyZ2luOiAxcHggMDsKICBwYWRkaW5nOiAwIGF1dG87Cn0KI21vcmUtc2hvcnRoYW5kcyB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDFweCAwIDJweCAwOwogIGZvbnQ6IG5vcm1hbCBzbWFsbCAvIDIwcHggJ1RyZWJ1Y2hldCBNUycsIFZlcmRhbmEsIHNhbnMtc2VyaWY7CiAgZm9udDogMC8wIGE7CiAgYm9yZGVyLXJhZGl1czogNXB4IC8gMTBweDsKfQoubWlzYyB7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7CiAgd2lkdGg6IDAuMWVtOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDk5OTg7CiAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZWQpLCB0byhibHVlKSk7CiAgbWFyZ2luOiA7CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgd2lkdGg6IGF1dG9cOTsKfQoubWlzYyAubmVzdGVkLW11bHRpcGxlIHsKICBtdWx0aXBsZS1zZW1pLWNvbG9uczogeWVzOwp9CiNpbXBvcnRhbnQgewogIGNvbG9yOiByZWQgIWltcG9ydGFudDsKICB3aWR0aDogMTAwJSFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAyMHB4ICEgaW1wb3J0YW50Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiBmb250LWE7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IGZvbnQtYjsKfQouw6bDuMOlIHsKICBtYXJnaW46IDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict/media-math.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIChtaW4td2lkdGg6IDE2ICsgMSkgewogIC5mb28gewogICAgYmFyOiAxOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTYgLyA5KSB7CiAgLmZvbyB7CiAgICBiYXI6IDE7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict/mixins-args.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hpZGRlbiB7CiAgY29sb3I6IHRyYW5zcGFyZW50Owp9CiNoaWRkZW4xIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLnR3by1hcmdzIHsKICBjb2xvcjogYmx1ZTsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDk5JTsKICBkZXB0aDogMTAwJSAtIDElOwogIGJvcmRlcjogMnB4IGRvdHRlZCBibGFjazsKfQoub25lLWFyZyB7CiAgd2lkdGg6IDE1cHg7CiAgaGVpZ2h0OiA0OSU7CiAgZGVwdGg6IDUwJSAtIDElOwp9Ci5uby1wYXJlbnMgewogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA0OSU7CiAgZGVwdGg6IDUwJSAtIDElOwp9Ci5uby1hcmdzIHsKICB3aWR0aDogNXB4OwogIGhlaWdodDogNDklOwogIGRlcHRoOiA1MCUgLSAxJTsKfQoudmFyLWFyZ3MgewogIHdpZHRoOiA0NTsKICBoZWlnaHQ6IDglOwogIGRlcHRoOiAxOCAvIDIgLSAxJTsKfQoubXVsdGktbWl4IHsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDI5JTsKICBkZXB0aDogMzAlIC0gMSU7CiAgbWFyZ2luOiA0OwogIHBhZGRpbmc6IDU7Cn0KYm9keSB7CiAgcGFkZGluZzogMzBweDsKICBjb2xvcjogI2YwMDsKfQouc2NvcGUtbWl4IHsKICB3aWR0aDogODsKfQouY29udGVudCB7CiAgd2lkdGg6IDYwMHB4Owp9Ci5jb250ZW50IC5jb2x1bW4gewogIG1hcmdpbjogNjAwcHg7Cn0KI3NhbWUtdmFyLW5hbWUgewogIHJhZGl1czogNXB4Owp9CiN2YXItaW5zaWRlIHsKICB3aWR0aDogMTBweDsKfQouYXJndW1lbnRzIHsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICB3aWR0aDogMXB4Owp9Ci5hcmd1bWVudHMyIHsKICBib3JkZXI6IDBweDsKICB3aWR0aDogMHB4Owp9Ci5hcmd1bWVudHMzIHsKICBib3JkZXI6IDBweDsKICB3aWR0aDogMHB4Owp9Ci5hcmd1bWVudHM0IHsKICBib3JkZXI6IDAgMSAyIDMgNDsKICByZXN0OiAxIDIgMyA0OwogIHdpZHRoOiAwOwp9Ci5lZGdlLWNhc2UgewogIGJvcmRlcjogInsiOwogIHdpZHRoOiAieyI7Cn0KLnNsYXNoLXZzLW1hdGggewogIGJvcmRlci1yYWRpdXM6IDJweC81cHg7CiAgYm9yZGVyLXJhZGl1czogNXB4LzEwcHg7CiAgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5jb21tYS12cy1zZW1pLWNvbG9uIHsKICBvbmU6IGE7CiAgdHdvOiBiLCBjOwogIG9uZTogZCwgZTsKICB0d286IGY7CiAgb25lOiBnOwogIG9uZTogaDsKICBvbmU6IGk7CiAgb25lOiBqOwogIG9uZTogazsKICB0d286IGw7CiAgb25lOiBtLCBuOwogIG9uZTogbywgcDsKICB0d286IHE7CiAgb25lOiByLCBzOwogIHR3bzogdDsKfQojbmFtZWQtY29uZmxpY3QgewogIGZvdXI6IGEsIDExLCAxMiwgMTM7CiAgZm91cjogYSwgMjEsIDIyLCAyMzsKfQoudGVzdC1ydWxlLW1peGluLWRlZmF1bHQtYXJnIHsKICBkZWZhdWx0czogMXB4IDFweCAxcHg7CiAgZGVmYXVsdHM6IDJweCAycHggMnB4Owp9Ci5zZWxlY3RvciB7CiAgbWFyZ2luOiAyLCAyLCAyLCAyOwp9Ci5zZWxlY3RvcjIgewogIG1hcmdpbjogMiwgMiwgMiwgMjsKfQouc2VsZWN0b3IzIHsKICBtYXJnaW46IDQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTEgewogIG0zOiAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC0yIHsKICBtMzogNCwgNSwgNjsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtM2EgewogIG0zOiBhLCBiLCBjOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC0zYiB7CiAgbTQ6IDAsIGEsIGIsIGM7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTNjIHsKICBtNDogYSwgYiwgYywgNDsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNGEgewogIG0zOiBhLCBiLCBjLCBkOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC00YiB7CiAgbTQ6IDAsIGEsIGIsIGMsIGQ7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTRjIHsKICBtNDogYSwgYiwgYywgZCwgNDsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNWEgewogIG0zOiAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC01YiB7CiAgbTQ6IDAsIDEsIDIsIDM7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTVjIHsKICBtNDogMSwgMiwgMywgNDsKfQptaXhpbnMtYXJncy1leHBhbmQtb3AtNiB7CiAgbTQ6IDAsIDEsIDIsIDM7Cn0KbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLTcgewogIG00OiAwLCAxLCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC04IHsKICBtNDogMSwgMS41LCAyLCAzOwp9Cm1peGlucy1hcmdzLWV4cGFuZC1vcC05IHsKICBhYTogNCA1IDYgMSAyIDMgYW5kIGFnYWluIDQgNSA2OwogIGE0OiBhbmQ7CiAgYTg6IDU7Cn0KI3Rlc3QtbWl4aW4tbWF0Y2hpbmctd2hlbi1kZWZhdWx0LTI2NDUgewogIGhlaWdodDogMjBweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/math/strict/parens.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7CiAgbWFyZ2luOiAxcHggM3B4IDE2IDM7CiAgd2lkdGg6IDM2OwogIHBhZGRpbmc6IDJweCAzNnB4Owp9Ci5tb3JlLXBhcmVucyB7CiAgcGFkZGluZzogOCA0IDQgNHB4OwogIHdpZHRoLWFsbDogOTY7CiAgd2lkdGgtZmlyc3Q6IDE2ICogNjsKICB3aWR0aC1rZWVwOiAxNiAqIDY7CiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAoMjV2aCAtIDIwcHgpKTsKICBoZWlnaHQta2VlcDogNDkgKyA2NDsKICBoZWlnaHQtYWxsOiAxMTM7CiAgaGVpZ2h0LXBhcnRzOiA0OSArIDY0OwogIG1hcmdpbi1rZWVwOiAyMCAtIDg7CiAgbWFyZ2luLXBhcnRzOiAyMCAtIDg7CiAgbWFyZ2luLWFsbDogMTI7CiAgYm9yZGVyLXJhZGl1cy1rZWVwOiA0cHggKiAyIC8gNCArIDNweDsKICBib3JkZXItcmFkaXVzLXBhcnRzOiA4cHggLyA3cHg7CiAgYm9yZGVyLXJhZGl1cy1hbGw6IDVweDsKfQoubmVnYXRpdmUgewogIG5lZy12YXI6IC0xOwogIG5lZy12YXItcGFyZW46IC0xOwp9Ci5uZXN0ZWQtcGFyZW5zIHsKICB3aWR0aDogMiAqIDM2IC0gMTsKICBoZWlnaHQ6IDUgKyAxOwp9Ci5taXhlZC11bml0cyB7CiAgbWFyZ2luOiAycHggNGVtIDEgNXBjOwogIHBhZGRpbmc6IDZweCAxZW0gMnB4IDI7Cn0KLnRlc3QtcnVsZS1mYWxzZS1uZWdhdGl2ZXMgewogIGE6ICg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/modifyVars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/modifyVars/extended.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CiAgY29sb3I6ICMzMzMzMzM7CiAgYm9yZGVyLWxlZnQ6IDFweDsKICBib3JkZXItcmlnaHQ6IDJweDsKfQojZm9vdGVyIHsKICBjb2xvcjogIzExNDQxMTsKICBib3JkZXItY29sb3I6ICM4NDIyMTA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-1.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyB7CiAgY29sb3IxOiByZWQ7CiAgY29sb3IyOiB5ZWxsb3c7CiAgY29sb3IzOiByZWQ7CiAgY29sb3I0OiB5ZWxsb3c7CiAgY29sb3I1OiByZWQ7CiAgcHJvcDogdW5vOwogIHZhcjogZG9zOwogIHN1YjogdHJlczsKfQojbnMxIHsKICBmb286IGJhcjsKfQojbnMxIHsKICBmb286IHVubzsKfQouYnV0dG9uIHsKICBjb2xvcjogZ3JleTsKICBib3JkZXItY29sb3I6ICNBQUEgI0NDQzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmJhciB7CiAgd2lkdGg6IDgwMHB4OwogIGhlaWdodDogMnB4Owp9Ci5mb28gewogIHdpZHRoOiA4MDBweDsKfQoubHVuY2ggewogIHRyZWF0OiBpY2UgY3JlYW07Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-3.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIChtaW4td2lkdGg6IDMyMHB4KSB7CiAgLnRvb2xiYXIgewogICAgd2lkdGg6IDQwMHB4OwogICAgaGVpZ2h0OiAyMDBweDsKICAgIGJhY2tncm91bmQ6IHJlZDsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KfQouY2VsbCB7CiAgbWFyZ2luOiAwIDVweCAhaW1wb3J0YW50Owp9Ci5jbGFzczEgewogIGNvbG9yOiAjMzNhY2ZlICFpbXBvcnRhbnQ7CiAgbWFyZ2luOiAyMHB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50OwogIHdpZHRoOiAwICFpbXBvcnRhbnQ7Cn0KLmNsYXNzMiB7CiAgY29sb3I6ICNlZmNhNDQ7CiAgbWFyZ2luOiAxMHB4OwogIHBhZGRpbmc6IDQwcHggMTBweDsKICB3aWR0aDogMCAhaW1wb3J0YW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-4.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyB7CiAgd2lkdGg6IDIwcHg7CiAgYmFja2dyb3VuZDogcmViZWNjYXB1cnBsZTsKICBjb2xvcjogaW5oZXJpdDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-5.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm15LW5hdmJhciB7CiAgYmFja2dyb3VuZDogcmViZWNjYXB1cnBsZTsKICB2YWw6IG91dHB1dDsKfQouYW5vdGhlci1uYXZiYXIgewogIGJhY2tncm91bmQ6IHJlYmVjY2FwdXJwbGUgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCBsaWdodGJsdWUgIWltcG9ydGFudDsKfQouYW5vdGhlciB7CiAgYmFja2dyb3VuZDogYmxhY2s7CiAgYm9yZGVyOiAxcHggc29saWQgZ3JleTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-6.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnJ1bGUtMSB7CiAgd2lkdGg6IDEwcHg7Cn0KLnJ1bGUtMiB7CiAgd2lkdGg6IDEwcHg7Cn0KLnJ1bGUtMyB7CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAxMHB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-7.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm91dHB1dCB7CiAgYTogYjsKfQoub3V0cHV0LTIgewogIGM6IGQ7Cn0KLmRyIHsKICBhOiBiOwp9Ci5kci0yIHsKICBjOiBkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-8.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[OnJvb3QgewogIC0tYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgLS1jb2xvcjogI2ZmZjsKfQpkaXYgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nOiAxcmVtOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpOwogIGNvbG9yOiB2YXIoLS1jb2xvcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-functions.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyB7CiAgd2lkdGg6IDIwcHg7CiAgYmFyOiB2YWw7Cn0KLmJhciB7CiAgd2lkdGg6IHRlc3Q7Cn0KLmV4YW1wbGUgewogIHZhbHVlOiBsb29rdXA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-media.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIG5vdCBhbGwgYW5kIChtaW4td2lkdGg6IDQ4MHB4KSB7CiAgLnNlbGVjdG9yIHsKICAgIHByb3A6IHZhbDsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/namespacing/namespacing-operations.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyB7CiAgdmFsOiAzNXB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/no-strict-math/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/no-strict-math/mixins-guards.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZS0yNzk4IHsKICByZWdyZXNzaW9uOiBmaXhlZDsKfQouY29uZGl0aW9ucy1wYXJzZXItMSB7CiAgb25seS1hdG9taWM6IG9rOwp9Ci5jb25kaXRpb25zLXBhcnNlci0yIHsKICBvbmx5LWF0b21pYy13aXRoLW5lc3RlZC1wYXJlbnRoZXNpczogb2s7Cn0KLmNvbmRpdGlvbnMtcGFyc2VyLTMgewogIG9ubHktYXRvbWljLW5lc3RlZC1wYXJlbnRoZXNpcy1vbi1yaWdodDogb2s7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/no-strict-math/no-sm-operations.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm5hbWVkLWNvbG9ycy1pbi1leHByZXNzaW9ucyB7CiAgY29sb3ItMDogMCAtcmVkOwogIGNvbG9yLTE6ICMwMDAxMDE7CiAgY29sb3ItMjogI2ZmMDAwMDsKICBjb2xvci0zOiAjZmYwMDAwOwogIGJhY2tncm91bmQtY29sb3I6IGJsdWUtMjsKICBjb2xvcjogZ3JlZW4tYmxhY2s7CiAgYW5pbWF0aW9uOiBibHVlLWNoYW5nZSA1cyBpbmZpbml0ZTsKfQoubmFtZWQtY29sb3JzLWluLWV4cHJlc3Npb25zLWJhci1yZWQgewogIHg6IHk7Cn0KLm5hbWVkLWNvbG9ycy1pbi1leHByZXNzaW9ucy1iYXJyZWQgewogIGE6IGE7Cn0KLmRpdmlzaW9uIHsKICB2YWx1ZTogMnB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/postProcessorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/postProcessorPlugin/postProcessor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHIge2hlaWdodDo1MHB4O30KLnRlc3QtcnVsZSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/preProcessorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/preProcessorPlugin/preProcessor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZSB7CiAgY29sb3I6IHJlZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/process-imports/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/process-imports/google.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGI6IGM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/rewrite-urls-all/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/rewrite-urls-all/rewrite-urls-all.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydGVkLWZpbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9mb2xkZXIvcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmb2xkZXIvbW9kdWxlIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmb2xkZXIvbW9kdWxlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZvbGRlci9tb2R1bGUvcmVsYXRpdmUvcGF0aCIpOwp9CiNyZXdyaXRlLXVybHMtYWxsIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4vcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLyIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlL3JlbGF0aXZlL3BhdGgiKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/rewrite-urls-local/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/rewrite-urls-local/rewrite-urls-local.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydGVkLWZpbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9mb2xkZXIvcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcmVsYXRpdmUvcGF0aCIpOwp9CiNyZXdyaXRlLXVybHMtbG9jYWwgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4vIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcmVsYXRpdmUvcGF0aCIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/rootpath-rewrite-urls-all/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/rootpath-rewrite-urls-all/rootpath-rewrite-urls-all.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydGVkLWZpbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL2V4YW1wbGUuY29tL2Fzc2V0cy9jc3MvZm9sZGVyL3JlbGF0aXZlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvY3NzL3JlbGF0aXZlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL2V4YW1wbGUuY29tL2Fzc2V0cy9jc3MvZm9sZGVyL21vZHVsZSIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL2V4YW1wbGUuY29tL2Fzc2V0cy9jc3MvZm9sZGVyL21vZHVsZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZXhhbXBsZS5jb20vYXNzZXRzL2Nzcy9mb2xkZXIvbW9kdWxlL3JlbGF0aXZlL3BhdGgiKTsKfQojcm9vdHBhdGgtcmV3cml0ZS11cmxzLWFsbCB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZXhhbXBsZS5jb20vYXNzZXRzL2Nzcy9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZXhhbXBsZS5jb20vYXNzZXRzL3JlbGF0aXZlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvY3NzL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvY3NzIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZXhhbXBsZS5jb20vYXNzZXRzL2Nzcy9tb2R1bGUiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvY3NzL21vZHVsZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZXhhbXBsZS5jb20vYXNzZXRzL2Nzcy9tb2R1bGUvcmVsYXRpdmUvcGF0aCIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/rootpath-rewrite-urls-local/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/rootpath-rewrite-urls-local/rootpath-rewrite-urls-local.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydGVkLWZpbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL2V4YW1wbGUuY29tL2Fzc2V0cy9jc3MvZm9sZGVyL3JlbGF0aXZlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvY3NzL3JlbGF0aXZlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlL3JlbGF0aXZlL3BhdGgiKTsKfQojcm9vdHBhdGgtcmV3cml0ZS11cmxzLWxvY2FsIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvY3NzL3JlbGF0aXZlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHA6Ly9leGFtcGxlLmNvbS9hc3NldHMvcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL2V4YW1wbGUuY29tL2Fzc2V0cy9jc3MvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL2V4YW1wbGUuY29tL2Fzc2V0cy9jc3MiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZSIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9yZWxhdGl2ZS9wYXRoIik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/static-urls/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/static-urls/urls.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiY3NzL2JhY2tncm91bmQuY3NzIjsKQGltcG9ydCAiZm9sZGVyICgxKS9pbXBvcnQtdGVzdC1kLmNzcyI7CkBmb250LWZhY2UgewogIHNyYzogdXJsKCIvZm9udHMvZ2FyYW1vbmQtcHJvLnR0ZiIpOwogIHNyYzogbG9jYWwoRnV0dXJhLU1lZGl1bSksIHVybChmb2xkZXJcIFwoMVwpL2ZvbnRzLnN2ZyNNeUdlb21ldHJpY01vZGVybikgZm9ybWF0KCJzdmciKTsKfQojc2hvcnRoYW5kcyB7CiAgYmFja2dyb3VuZDogdXJsKCJodHRwOi8vd3d3Lmxlc3Njc3Mub3JnL3NwZWMuaHRtbCIpIG5vLXJlcGVhdCAwIDRweDsKfQojbWlzYyB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGZvbGRlclwgXCgxXCkvaW1hZ2VzL2ltYWdlLmpwZyk7Cn0KI2RhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7Y2hhcnNldD11dGYtODtiYXNlNjQsCiAgICBraVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFBUU1BQUFBbFBXMGlBQUFBQmxCTVZFVUFBQUQvCiAgICBrLy8rbDJaL2RBQUFBTTBsRVFWUjRuR1A0LzUvaC8xK0cvNThaRHJBejNEL01jSDh5dzgzTkREZU5HZTRVCiAgICBrZzlDOXp3ejNnVkxNREEvQTZQOS9BRkdHRnlqT1hadFFBQUFBQUVsRlRrU3VRbUNDKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCk7Cn0KI3N2Zy1kYXRhLXVyaSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsIDxzdmcgdmVyc2lvbj0iMS4xIj48Zz48L2c+PC9zdmc+Jyk7Cn0KLmNvbW1hLWRlbGltaXRlZCB7CiAgYmFja2dyb3VuZDogdXJsKGZvbGRlclwgXCgxXCkvYmcuanBnKSBuby1yZXBlYXQsIHVybChmb2xkZXJcIFwoMVwpL2JnLnBuZykgcmVwZWF0LXggdG9wIGxlZnQsIHVybChmb2xkZXJcIFwoMVwpL2JnKTsKfQoudmFsdWVzIHsKICB1cmw6IHVybCgnZm9sZGVyICgxKS9UcmVidWNoZXQnKTsKfQojbG9nbyB7CiAgd2lkdGg6IDEwMHB4OwogIGhlaWdodDogMTAwcHg7CiAgYmFja2dyb3VuZDogdXJsKCcuL2Fzc2V0cy9sb2dvLnBuZycpOwogIGJhY2tncm91bmQ6IHVybCgiI2lubGluZS1zdmciKTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogeGVjcmV0OwogIHNyYzogdXJsKCcuL2Fzc2V0cy94ZWNyZXQudHRmJyk7Cn0KI3NlY3JldCB7CiAgZm9udC1mYW1pbHk6IHhlY3JldCwgc2Fucy1zZXJpZjsKfQojaW1wb3J0ZWQtcmVsYXRpdmUtcGF0aCB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2RhdGEvaW1hZ2UuanBnKTsKICBib3JkZXItaW1hZ2U6IHVybCgnLi4vZGF0YS9pbWFnZS5qcGcnKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/strict-units/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/strict-units/strict-units.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnVuaXRzIHsKICBjYW5jZWxzLXRvLW5vdGhpbmc6IDE7CiAgY2FuY2VsczogNnB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/url-args/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/url-args/urls.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmPzQyNDI0MiIpOwogIHNyYzogbG9jYWwoRnV0dXJhLU1lZGl1bSksIHVybChmb250cy5zdmc/NDI0MjQyI015R2VvbWV0cmljTW9kZXJuKSBmb3JtYXQoInN2ZyIpOwp9CiNzaG9ydGhhbmRzIHsKICBiYWNrZ3JvdW5kOiB1cmwoImh0dHA6Ly93d3cubGVzc2Nzcy5vcmcvc3BlYy5odG1sPzQyNDI0MiIpIG5vLXJlcGVhdCAwIDRweDsKICBiYWNrZ3JvdW5kOiB1cmwoImltZy5qcGc/NDI0MjQyIikgY2VudGVyIC8gMTAwcHg7CiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoaW1hZ2UucG5nPzQyNDI0MikgY2VudGVyIC8gMXB4IDEwMHB4IHJlcGVhdC14IHNjcm9sbCBjb250ZW50LWJveCBwYWRkaW5nLWJveDsKfQojbWlzYyB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy9pbWFnZS5qcGc/NDI0MjQyKTsKfQojZGF0YS11cmkgewogIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztjaGFyc2V0PXV0Zi04O2Jhc2U2NCwKICAgIGtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUFRTUFBQUFsUFcwaUFBQUFCbEJNVkVVQUFBRC8KICAgIGsvLytsMlovZEFBQUFNMGxFUVZSNG5HUDQvNS9oLzErRy81OFpEckF6M0QvTWNIOHl3ODNORERlTkdlNFUKICAgIGtnOUM5end6M2dWTE1EQS9BNlA5L0FGR0dGeWpPWFp0UUFBQUFBRWxGVGtTdVFtQ0MpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3gtcG5nLGY5ZGlmU1NGSUlHRklGSkQxZjk4MkZTREtBQTk9PSk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVwiUm9ra2l0dFwiOlwoNDAwXCksNzAwJjQyNDI0Mik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCY0MjQyNDIiKTsKfQojc3ZnLWRhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwgPHN2ZyB2ZXJzaW9uPSIxLjEiPjxnPjwvZz48L3N2Zz4nKTsKfQouY29tbWEtZGVsaW1pdGVkIHsKICBiYWNrZ3JvdW5kOiB1cmwoYmcuanBnPzQyNDI0Mikgbm8tcmVwZWF0LCB1cmwoYmcucG5nPzQyNDI0MikgcmVwZWF0LXggdG9wIGxlZnQsIHVybChiZz80MjQyNDIpOwp9Ci52YWx1ZXMgewogIHVybDogdXJsKCdUcmVidWNoZXQ/NDI0MjQyJyk7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IHhlY3JldDsKICBzcmM6IHVybCgnLi4vYXNzZXRzL3hlY3JldC50dGY/NDI0MjQyJyk7Cn0KI3NlY3JldCB7CiAgZm9udC1mYW1pbHk6IHhlY3JldCwgc2Fucy1zZXJpZjsKfQojZGF0YS11cmkgewogIHVyaTogdXJsKCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVBU0FCSUFBRC8yd0JEQUE0S0N3d0xDUTRNQ3d3UUR3NFJGU01YRlJNVEZTc2ZJUm9qTXkwMk5USXRNVEE0UDFGRk9EeE5QVEF4Um1CSFRWUldXMXhiTjBSamFtTllhbEZaVzFmLzJ3QkRBUThRRUJVU0ZTa1hGeWxYT2pFNlYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWYvd2dBUkNBR3VBb0FEQVNJQUFoRUJBeEVCLzhRQUdnQUJBQU1CQVFFQUFBQUFBQUFBQUFBQUFBRUNBd1VFQnYvRUFCa0JBUUVCQVFFQkFBQUFBQUFBQUFBQUFBQUJBd0lFQmYvYUFBd0RBUUFDRUFNUUFBQUJ3Ry9uQUFCQUpBRkFBSmdTQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUJDSmdBQlFBQUFBQVJNQ1FCUUFDWUVnQU5zc3Q0R3VBQUFBQUFBQUFBQUFBQUFBZ0FBQUFFUUFBQ2dSTVNBQUFBZ0Vva0NnQUFFd0pMNCtqcjA4T25sOXZpWDlHMkhrSHA4UVdBQUFBQUFBQUFBQUFDQUFBQUFJZ0FBS0FCQUpSSUFBQUNBU2lRS0FBQVhvejIwVm54L1JtMmVtdm56ZzlYaE5jODlvR3VBQUFBQUFBQUFBQ0FBQUFBQ0VBQUNnQUFRQk1DUUFBQUFnRW9sVjQraTgvcitiZW56YmVjTzh3QUxYbkdXVVh6MjY3bjYrVDNlRmYwNjVlTWVyd2hlUUFBQUE1NlBkNDg5cW9iZWNBQUFBQUlRQUFLQUFBSUFBRXdKQUFBQUNMVm5uUy9TNXo1LzFkNjVGbkxYTDIvTkRiemdiWTdZeXIwY2FhS3o0L296YlBYWERPc1BYNEpRTDE2dXZrOS9GSjlIa2hEdk9VQk1hWWVudDQ4eDVmYlRiS2VwazB6OTN6QXZJQUFpSmdBQVVBQUFRQUFBQVNpUUFBQUFFdGJObDZOSzFTN1phNWJlY0xBTmN0Y3BRc0EyeTF4bEN4YXRzdDkvWnpuaCttOVBtZ1UxeStoOGdPK0ZxdU5ORkhsOTE2UTI4MnVXdVczbkN3SUlBQUFLQUFBQWdBQUFBQUpSSUFBQUFDQWJZN1lyS0NUZW1xMHFBV05NOXBjNnJjOVZlcnpjOXdOTXJUUmw2TFZPczljdGN1OHdzQUFUR3NzWmdJU1lBQUFGQUFBQVFBQUFBQUFBRW9rQUFBQUEyeDJ4QVJ0anN1U0NTaVJ0U0ZyYXVubjlmMGZIenp4OUdhN3JuRmVucytjRm11V3VVb0lBQTF4MlhFSUFBQUNnQUFBSUFBQUFpUUFBQUFDVUNRQUFKaVMrZW1ZQTJ4MU1nZ0cyTzJLemZPYzl0RkhsOXQ4MCtqeWFaWHoyODgycDc4dC9ObDlGOC9MV0xScGxBNnpBYlk3TGlFQUJRQUFBQkFBQUFBQkV3SkFBQUFBQW1CS0pBQU5jdGNnQnJscVpBR2hiRzFRRUFiWTdMaUV0cG5meC9TNlhPaGo2UFI1bHR2TmlQWjg0QnRqcXVRQUFBQUFDQUFBQUFBQkFFd0pSSUFBQUFBQktCSU5jdGNnQnJscVpBYlk3R0lBQUcyT3hpQmVtczZWb3kzblhIWFh6NUN3RFhQWEVBQUFBRUV3QUFBQUFBQ0FBQUFsRWdBQUFBQUFHMld1SkpvWjY3K2lkY3Qwb1RuYStpRHhwaXdBQnF6SUEyeDJNUVdtMlFBTDg2WHg2L0s0N3FOY0FCQk1BQUFBQUFBQWdBQUFBQUpSSUFBQUFBTEdtL1I5MmVubDlSeDJDZ0FSNXZVVGsrRDZWMXo4bzcvSzA0eXkyeHZJRFdzRlFhNWEreVhEeSs3d2szcHA1ZmQ5RnhmT3oyblBlbmVXQTluendBQUFBQUFCQk1BQUFBQUFBQW1CSUFBQUo3L242bWVnY2FBQUFBQUFJbWllSGovVTRkOC9OdE10TXRzdGNTVVNlM3QwakxiNXlwcmpPdU8yZXBrOC9ydmVrZWp5VUdtUUFBQUFBQkFBQUFBQUFBQUFBQWxBa0RmRHR6cm9TWTdBQUFBQUFBS1hvbHd1UHozMC9rNjQ0ZVJyazlYbDZzdlh4Mlk3Zkp2YjR0OEowbkVHaGJHOUFBQUJ2aDBwZWEyeHNFRXdBQUFBQUVUQWtBQUFBQUFBRnZxZUQ5Qm5vSEdnQUFBQUFBRkwwdWdLcGVpY1R3L1FmUDY1TzN4TzRkQVpiUjRmZVRuVTZpemgrYjZYdzljOEVhWmw0S2dBZHZqZlQ4ZDhQdzlMbTljaFlBQUFBQUJBRXdKQUFBQUFBQjF1dnp1ampzRTZBQUFBQUFSTkVYRkFwZWwweitYK3IrVTA0djZzTWV1UHJIajltT3dLQUI4OTAvWmJybEV1ZXVmeVBwNDY0K1RuNkhYcm54OUl6MDRuTjluajJ4Q3dBQUFBQWdBb0lCS0pBQUFBQVBaMy9sUFR4MzlJdzN6MEJRQUJVc0FCUlpKQ3Eyb2syRmo1YjZyNWp2T2NkY3RPTk8vd0RPVHpmcTNKNldldWdsQUFBQUFVdnliT1ZVMndBQUFBRUV3QUFLQUNBSmdTaVFBQUIwdWJwTDZQUjBLOGQ3YThHWmU2OFhzNTZrSzgzcEo0dlRvQm1OSWtCWXJHaUFyaWR2bDljOGVEWEVYTnE2K09YU3RWblk2dkc2ZVd1ay9KN1dmVHZGN2VPd1V5NWxucjRDTmNndklBQUJBQUFCUUFBQUFRQk1DVVNBQVc2L0dTL1daL1A5ZlBURHgvUWpoZXYzK1kwMzU5VjZieGVqbTY1bEp1aWthWTFHN09ORkJiT3U5Zk1ZL1RjYlRMeStqRzFtVlN4THN5K3Z4OVQ1blBUQWE1TFZHc1psQkFBQUNBQUFBQ2dBQUFBQUFBZ0NZRW9FZ0EyNmZHVHI2blQ1UDE4ZGZRdWI3ZWU5YVRFTDBBVkNtcVZ2TkpicVVMRjZpMFZqREQzMXM1dCttTWRtTXZrNGQ2YlpCZVFBQUJCS0FBQUFDZ0FBRUlrVUFBQUFBQUNBQVNnU2dTQURmMmN4TDN2Vjh1NTYrdHI4eDZKZSs1Tzg2OXpIYVdLMjBGQ0FwRWl1bE9hblErZXBUVE1PdVFCQktBQUFBQUNnQUFBQVFJVEFsRTBBQUFBQUFBQ0FBQUFTZ1NnU2dTZ1NnYWErWkw3cjg0dlVubEk2bUhpRjZ3NjVsQUFBQUFBQlFBQUFBQUFDRUFBQUpnU2lRS0FBQUFBQUFBQkFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBaEFBQUFBQUFDWUVva0NnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRUFBQUFBQUFBQUFBSmdTZ1NBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUVSTUFBQUFBQUIvL3hBQXRFQUFDQVFJRUJnRUVBd0FEQUFBQUFBQUJBZ01BRVFRUUVpQWhNREV5TTFBVUV5SkFZQ05CUTBLQWtQL2FBQWdCQVFBQkJRTC9BS0ZLak1QMC9DZVBGUmkzNmRISVl6Sk0wZ3FVUi9xQzhTVGMvcGQ2dmtlRWVRUXNQMEszSkhFeUg3c3NKMlltTWFmMEFWb1ZvNW85RGI0KzdPT1F4bVNkbkZTR1BUemhoMlpHVXFmV2pLUEVhVm1mNmpSSUdaeFp0bzhlUTJLTDB4dWM3Y3JEdGVQRmdXdFVrUmo5aXZFN1c4ZWQ2dmszMmpaaEtuaEJISUJJb2tuSm1KcGhiMXQ4cjB2WnRrNjdVcnJ0amN4cytKdXRhMStrUnlwTzcxLytXMlR5Ylc0THNHMy9BQzVNbms5ZTNac1RpNTRuWWd1ekc3YmIxZXI1RHg4Z2NTL2Y2OTlzZmsyamdsQ21oY0RlT3prUitUMkVuZHNqN3RyOE1oU202NGxBcmhiMHlsVHNYczVFZmQ3Q1R5YkUyb0xzeHVja2xkS1ppeFVsV2R5ek1MYkI0K1FuVDEvOXlkK3hPbXhlQzc1Ty9JQzlkRTVBOFhyL0FPNU8vWW5UWWVFZWQ2dmtCY3VidmxoZkxKRXJoaFkyM254K3drOG14T215VHJ1aThtUXBUcFB5dUI0bU9RSXA2Ylg5akozN0U2Wm9MdXh1MjVPbVEybng3WlBKN0NUcnNUcG5IMTMvQU9XWTZuZ2I1UDAyUitUMkw5TmliQjQ5N2R1Y2ZmbkozYkU5a2ZIc2o2NW54YjVPL05lM0plTE4zYk9rZnNSNHNsUm1vWWFVMG1GWUg0alY4UjZPRmxwNHBBQ0NOMGZmczZSWlI5MnhhZkRjQ0xleFRwSGgzZWtnalRrV3ZUUVJ0VFlTbmlkTTE0THNrelR0cjZlbU9oUTRGSERyaUxHVlVMVVJiMXdCWXdZY0p6cE1PajFKQThkSGhIbWd1ekc3WmY1WWFIVldLZThsRFlqbEQzZXRBdVlJUkdQd0pNUHJWZ1ZPU2NCbWtlczhGVmpjNWYxa1RSKzJQMW1FaS9CYnBVc1N5Q1JERzFIaEhuR21sWitFT2JjRXE5SU5UTWRUZXJoVDZrblQ4SC9sbExHSkZaQ3J5ZDJXSFhWTFVvdkZuSjM1ZHNmSWlUVzNvOElsay9CWFpNZ096QkRqbGlJaWpWSDNaSU5UTWRUY2pCRDc1UnBsOUNCY3FOSy9nTjAyZFd4VWVpVExCaitQSWk5TmhZelF3b0ErR0tmQ3VLUDJMeWNHdG84V1A1dlE0VmJ6Zmc5VzJMMHhTNm9jc01lUmlJZGE1YVdORlNOb0dvb3VsTWI1ZlE0SWZoTDB6YktUakhTQzdReVduNUVzWit2RmgxVEsxNmt3cXRUeHNoeXcwR25MRytUME9EOGY0RGJSeGFqMHBPQXJEeS9VVGZwR3JZUURSdzhScFlrVFBGRzgzb1lKdnBzQ0NPZU9KekpzQUxESnU0OEk2UnlqUlNySU9leDBxVGMraWltYU14eXJJT1JjWDJOdDZ0bklQNVpPN0lFZ3c0a2txNnZ6c1pKNlNDS09WSGhraXFQRmtVanErK1NQVlErUUtYVm1PSjJMMHpsWFRpTmtZTm1OaHFhcm1zTk16TlZ4eUo1eEdDYm4wYU1VYUtWWlJKaDBlbXc4a2RKaXBGcE1URzFkZVF4c05oNG5aaTc2Y3dDeGtPaGM4RXYzVE5waXBKR2pNZUpSOWpTSWxTNHV1dnBnU0RGaWdjbmpSNmZCMTlPYUtseFVncGNZbENlSnF2ZllPTldJclZXb1ZjME9HdzFwMUpJaGphbFVzVnRjbTV6Z1Q2Y2VOYjdjd1NLK3JKUmR6NnVPWjQ2anhLTm1VVnFPR2lOZkRTdmlDaEN3b0tSUis2cjIyRmdUVmlLMVZxRk1UbExHc2l0aDJRczNEdGp6dytIMDVUUDlTVDJTU3VsSml4U3VyYldOcVhwV2tWYXJDZ09GN2JGNDF4RmFoazhVUnBzTXJWOE9oZzFwSWtUTEZ5NlY5cmUxSmlaRnBjV2hwWkVhaWJVQlZxdWF2VnpSMUVnM3kwaXJVUlhibnBGV0FvY0RuSklJMWRpN2U1V1dSYVhHTlM0dU0wSkViSW0xQVdCRjYrNnVORW1oY1phYTQxOTFhYTBpcjJ5a2tXTVN5R1J2ZkIzRkRFeUNoakRReGNkQ2VJMEdVMTNHckVWYzFjMTkxYWFzYSsxS2x4S2ltWXNmMFVPd29UeUN2bFMxOHVTdm1OWHpHcjVqVWNUS2FMRnYvRkQveEFBcEVRQUJCQUFEQ0FJREFRQUFBQUFBQUFBQkFBSURFUVFTTVJBVElDRXdRRkJSRkVFaU1tRncvOW9BQ0FFREFRRS9BZkt2Z2N3WDRlQ0xPdDI3ZVdqaGY2aUs4TERMdXphRThaKzFOaUw1TTJQZ2MwWDRGaldpUDhocXBHWkR3d3g3eEdOMmV3amhRaUtOY1RSbU5KOEZmcno3ZU0wNEZHTnBGTElCb3B5MHUvSGdpazNiclF4RVorMU5pQVJUZHI0NDd5NkxkUHZUYmg0OHh2MHQxVDh5TVRHaitJNjh1MlppSHM1SitKYzRWMGNQbHowNUdOcFQ2QXNwN3N6cjJSdk1ac0lZdHYyRk5Qdk9RNzlqYzdxVDRpM245Ykc0bVFKOHJwTmZDWWFPem1UWVNDZlNkQXhvOE5ETHV5dmt4cWViZWNocHNnQXNrcDhZSXpOUmpjM21SNGJEWlMxTlkxdWl4RHczOGZmaG1PTFR5WHlwRVNUelBmVVZsS285S0ptZDFLU0lmc3pUdVEzM3haQWkwamhxMFZobU5JeklRZ1dwWW1CdnJ0Mmo3Nkpid0FWc2lsTWVpK1czMHBKVEliN1lDejAzQzlnMTZJMTdKblVjT2FicnNwWlFpMzF3c1IxN0Z1blVmeEJ1d3RXUkFVanIyTFhWMUg3QWFRTjhaTmRrRlhwWnZmU2R3dDBXZmFUU0p2c3dhUWNDc29WRmMrZ1c3UUxUdVE3b0VoWjFmUnBaUnNKdnZiS3pyT3JIRmRJdXZ3bGxaaXJQK0UvL3hBQW5FUUFCQXdJR0FnSURBUUFBQUFBQUFBQUJBQUlSQXhJUUlDRXdNVUFUVUVGUkJCUWljUC9hQUFnQkFnRUJQd0gycmFvZDZlcSsxWEMyRjUvVFZHWGhHazhmQ3AwZmwyRGFvZDZGeGRmb21PdUdXbysxWEMyRjV5Z1pFNWlZRXB0V2VldThTMHE0cTRxa0hBYTVLakx4Q05KNFZPa1psMkxYdWlWZTNHczYwSy8rWVFlNXhRNnpxVFhKdEZyVE96Vm0yUXJpbXlUQVRSYUl3ZTBQRUZIOGR5cDByTmUrNDJpVTJvSFlHaXdwdE5yZVBTVm54L0tOUk5xdko5TlVwM2hlQjZwVTdOVGhWSmpSTmVaZ29PQjQ5TldrT1JjU3FMU2RmVE9hSERWZUJpQWpRZDZRcmdwRzA5MXJaVEgvQUE3c2wzMW11S0RweXpDQ3JPSU1MeUpsUnhQWGNka095RXpnOWdldjF5bU1ETk9zVEEyMm5BOGJKNDZUOXhwMFR1TUpWeFFkOTVYSWNkRjNPNHpNWFlCeXZSTW9jZEV0bmNaZ1JLSWpPQlBTS243VnYxdE55dTVWbUlFb0NPbVJLTFNGY3BDMDJBN0VtRTNVOW9nRldLTm1WY2NBSTdzSzFXcURtaVVCSHBJQ3RDZ2Y0VC8veEFBeEVBQUJBUVVIQkFJQkFnY0FBQUFBQUFBQkFBSVFFU0FoRWpBeFVGRmhjU0l5UVlGQWtXQURFeU16WW5LQWtLSC8yZ0FJQVFFQUJqOEMvd0FDcUQ4UVBLdGo4UG9vWUJ3c2ZpR3dVZncvbDlCK0c4VWVWYkg0RUFRb1hFZEpJaFF3RGhZRmZOL2FDcm1FR2dvcUJNRVFKbXQ2VDF3Q2pmUTBRUGx3ajV6SGFaa2U1N0gzSzByVE9OelF3VlRGMVRGRGpNR2pNQnROYTBtaUZBQjFtelhWUnV2UXpEM01aZ3o3TjE3dWptRE1vNVJtamROWFRYT1lEaVVURTYwZkVpNGF1V2VjMjlHWU02UEJWUEtnb0dWcTU5SE1USzF4S0VTK2hVU29oUktIRWpWeTN4bUpsYTRsYU40UmNubk1USzN4S041d0UwZDNoYnFGd3p6bUpsYjRsaG9KeHRXU0lYYlZSUkJaakZSbVpHMlltVnZpUUltZG83WEE1bU9ZamlWcmlRblFYQjNNa0ZCN0kybEdaTThTdGNTTlhEQTl5Y1hMUjJ6Sm1VOEdRYm00aHBTUm92Q01wM09aSFl2NldTVmdBb2toZHdXSVhoTTlKVlpoOXlqYzNQU2N5YUd5aWVrTENKM3VLcnRod3VocjdYVXk5bytwUU5BOW91dHQrY0JKRUkyVkFWeStBVVdxdFgyaDJXbzFUSTFySUFpWDhsVzJzRkRTYUxLUDNsc0FxOTN3WWloVUM5cHJhUmhueGlWd2lYeGtoNU5jdHRuMThHR3JxNDZxRFRnTmF5dFNNajNKSExBUGhjUGdWWk9LaHBSNGMwSk9LUDNhdVNOc2t0YS9DanJJR29kUXdrYUw0anRkSFNyOWxHNUoyVFEzeUlCQWZHNFVSZ1hrdnFxVVJGckZkNnBWV2ZKeHVpZFVjaUczd3VKanM4c2FDNHREdUQ4Q3FpV0FRWlE0eUpvL0docTVvYk9BVWZCdVN5eU1WMVZMcXJwb1YxQjl0ckZ3NHlJOC9CaEtUSTAxczdjWEZyekxWZHE2V1huYkl2NlNvajRFYmdvYnVpRnZwOEFrK0VUa2UyaW9mVnpDNjRrYUc2aHBSOFFyTFk5cnBNYjc5c2U4azBhVVI5aFEvVXJ1dWt6eFpObHJWVkRMUzZvZW54bDVrYWE5eW1IQ3NzNEx1S3hWaHF1N3NSY1FIY29uSklzcmZSYUhaUlpyd29OVldObmxVdllTMDl5UUMvYkhzeU5OSm83T2l5VlhwTW5VMEZEOVA3eWVJVVAxS2J1Nm1Zcm9hKzFTUHBWZ1YxQWhkNGxpcUtzWFlmYXRIekxBK1ZBdW9yTE9IazZxTWdIbnlneHJKUXJ2YSsxVm8vZVYwTk5GWHBMK3BrRmRzRmlWUnNyK2MwcXRrcUM2cElPcGdzQ3ZQMHNLT2dWMWR1cWdLTXIrNlMyM2pvNG5NK2tyckVGMG1NdThuY1ZWVjhxdjNKSFZVd2ZVSVFhSzcvOEFpcTBWMGgxZ1luTnFMR1BLNmhCZExRZEU0cWl3V0JXRXVKVUZzL0IwSklsRm81MVJwZFRNVldJVkdoTmc2TFhsK0t4VmF1Z1hSS2ljL28wVmpGVlpWWWhkeW9RdG5VV0N3V2l4S3hWU3Y0ZU9xaTBmd2FqUlhlVmlzQXUwTHNDN1FzWUtwai9wUS8vRUFDMFFBQUVEQWdVREJBSURBUUVCQUFBQUFBRUFFU0V4VVJBZ1FXRnhNRkNCa2FHeDhFQmd3ZEh4NFlDUS85b0FDQUVCQUFFL0lmOEF3VVVFNUFxeUliOU8xVE54SUVZNi9wNzBwTlFud0FRRUJPOFQrbUE1QkRwdUZPRjM2Y0VxRU5abmpFMEp5MVVRUitnaVNpZFc2SU1BYXB3d0tRWXMzWFJUQmlLclZOMyt0QUFoREp6MGFkQ0JXM3gwWHFWQ2ljWUJFSWdoajFSVkNKQk9pSUFERWR1cVRJWVRpMUNGUmpEUkFiUmRETUhZMXpRTmNNUlpBRVRkRkZPV1FPQ2JvQ3FHUFZCYm5mWkJLRTJOMndWeXRLOUFKT2FGMC8xNlpoN0tLRmE4c3JYdmhGb0dEM1JFcGpuS3VZdGtWY3hiNFZPNUlSTTFBOXNCWk1UaEZJY0lab1dRL3dCNWhBSktrL0tKSkVtcHlBT0VBZVlYVDJ6SjFKeHZFWWFEbEJ5RXVxQXQ4WGNLQnZsQ3E5S1d6YnNQUkJLcnd6WFRuSDBzZHdpSFo4b3M3Z2pkWE9WakJwVXB5dXptWXZkRG9peUxsRzVybDNEVHNPV3R0T2JmMEdGU29JM0NJYlA4Zm8rMkl5WDdocDJBeTFOdml6ZUtUemhXaERLRUxTVUE3SXhnQTVPaUlBTVJvY3Z3L25vMURZbnQzSDN1WDV1VnBMY3dvVlRJQTBWaW5PdVVGVndqS3VVNzNBY254T2pBMzNJN2dLRjd2cEg0aXd4QmZJUzYwckFEMngwQWRjaVQwWUZ1QStlNENoZTd5L1YzR1dCdWZJN0FTNjNrTExlUXNXU1dLcEp0QlRqcUNkbmdLNUh1QVh2Y3YxZHhsbzJBejFIMEU0eVJBRWtKeWhPRlU0RWdEZ2ZORVdoOTUvbnVOZGZMOVhjWkdCdXR3RG5oWk45Y1NuSVN3VU40amxFbGtmaExlbmNhcTRkRTRYQjBCSDBXL3dCeVBJWElnU3dwaUpkUTV6S0x1MEJjb2x5U2RlNDFlVjgzSkVsMkhRanRQZGtwSGtxNDZkZ0JsaUxmemp1VXpXSkdYNnEyU0c2SG9WL29HU095YkVXVzZOemI1QktvdFFlM2NwY2hqOE9DcW5JSzBPUkVjWVVkSllGQVhCUXllWVMwb2d3RWM1aGQ2Z2w0UkxrazVEQTNNZGV3ZktEbFY3eHNkVVlwN2pPNlQxMFN2ZkowQkFHQUhsYU1Md1g5WWxYR3VLWStMczg1WUcyWXcyVFliOHdRT251SUVOL3hIR2p3aXJKTFpHSmoyNFlDNUtZZjZqclN3Rzhrd1JzbHpRZjRaT1RGdVFjYUlQbUkwRjFGNlJ3cnlPWVlxc3lhU1BiU0FBNUtlY2lxZndEU2FKcVBEVFJGSVdJeDRBd2VjaDlJQkdqREFFNW1weERteFRGaFFOeTQ3YXlHNVA0TDFoc0dIRFFoWUx6ZkRjeGZYemlBNVpBaXFSS0p6dGs1STZPVTY2WkFhVkoyVDVSWWRzc2pxZ0FBQW9Qd2E4V09wN1EyVEdxa2N3cGlNL1FTY0dvdGlBNUFGU2pEZ0tRZU1mc2FkSG1rUjJSN092eC9DbURjZkkwRHZVWlBaT0pXQ1ZNUFRVTW5DRU1CSk5nbnlnYUN3Nkxsc215SFlqV2FsQkE2RDhIUXZDRUJzbnNsQUdyaTFjSEVBTURoRVhkeFFiSDRLeVhvZ3JtQlEyVSt3VzZUdzZreHZBZGk5U1B3dlJ5Q1dEb0t6VXluQnJMRm8yQTlBUmcveVlpa040VlNCeU1wdzFpZ0NOQWc3RTUvRCtDU3djb0tqVXprazE3QU53TERreFNhbzNSMVZEaEJnUVdBMUVRQmdCVTEvR1RXWTN3QUpMQU9WUXUwVzdJNHpYL0JTYS9Md0NCaFY0dzRnekFUQk43b1NHU0RQbEFzQUkzUlI0Y0ZVb0J2ajZQZGlNMGR4RFJYQi9BbWVJeVBCVFFNRFFvR0J1b0s5OEFZOGhSdU5YNEFkQkE2TWRxUy9ZNGxPdEh0TjBRTVFHUlVaU2hoVXdnR0RaREFOSlpTU3BVeEhFTVVFT05pSE9Ick5WMzdJSXhJZFhSeVlnSWlCbGxVSGNaenZ3YUdnSW9keWRsREVOc1VuUUlHUWxnNVFWR3NzandVQVd1UTQ5UmdndWNLbTVXbDdpQXk0SitWYnd3RWRSZVVDRElMNTZ5RDlrUWhISjdJSEdZaFJtTmFTYmJ5SHFNYTFJaXo1d1ZWM0VCQU9UamJvUkYwQUFBQmtpZVp5aVRnZ0ZpeURBSlRRZWtnMXlPV0laZWg3RDA0TkNoVEhzbEFnaHhPTk1HeUlZRzNJa2s1TG5zdzBVZ2pVSnNtZWhBZ2h3WENBeGJrQ3JXeUU1d0hjMUQrYUdSSHNrcWtlU0VBQndRY2FJWkhyVGhibUxGTTBCeUZ6ZWlKcU1GMGZNSkZXMlFtQkpUU2ozSXQ4WnZnd1BJMlJXaktqMld1SURsaFZlVlhKTWhWSnprcXdPQ3Y5S3FvK2UxalByRkZDK1pSQXZURDNvQXY0b0tPaU5ORnd2R0h2eHpCVE5NYWxDbERmVElJRFExSzBXNTJGYmdlTUFLSUQ5UjR3MVU2R3lNQ1VOQ2RaN0YrVUpUcVh0aUFTV0Fjb3hBT3l4VVZ0NkRqdWRmV3NhSStPY0VMY09VeWlTb21VNFdJNFQwRVFkeDVLZkppT2pNSUNEVEFscXFwOWdtdXJMSUUxbFFwOFlOeENEa0FBR0Nhb1d1NGhVRkJ2aEpsL1lkMkJFNUVIWlZabEs0ZTlWRWVVd1RWd2pOellwbXZwVDFXZldVREp4QzRCdGdiRGNZWVpJZVM5WFZUZ2NMSUVFT0NpQWFnSEJDa0FWVW9hWkRmeGk2S1RKN3pSRkhKNWxBVU9DK1FLcjI4NE5JcWFZUUhsZE1GQ0R5bi93QjBDSFlEeW52bWJZRUNYRUhaTVA4QWNKckhvbUdva25xdWZLbnFib0VHaFQ3ZUJkYU85QmJ2OU5IbEduSWNndE4rQ2pxRWFKSEtxaThyVTBlNVZWcU1XS3UrOWIxU3Nua0w2UWlRT0FibE9RQjBUOEg5R29BOHFoSUFOQjVDR3NSRC90TC9BR0VkRVMwMXdDTk9ibC84VVAvYUFBd0RBUUFDQUFNQUFBQVFDQ1MvL0RSOTl0QkJCQlIxKysrKysrKysrOHhCQkJCRjk5NURYLzZDQ0NDMi92RFY5OXRCQkpCQlJ4ODg4ODg1eEJCQkJCRjk5OUJIL3dENGdxZ2drdjhBOHNIWDMyMUdxa0lFRUVFRUVFRUVFRUVFWDMzMkVQOEEvd0NnZ3ZpZ2dsdi9BTXNIWDMyekQ2SWtFRUVFRUVFRUVFRjMzMzJFTi84QTZDQ0MrdUNDQzIvL0FDb3NmZmZWbllzQ0FRUVFRUnpUZmZmZVlRMy9BUDZJSUliNzY0SUlMYis3ZDNyWDFhL0hrMDNnazAzc016VDNFRWQvL3dDaUNDRysyKytLQ0NDMi9PL2hCVjI5OWU5OU9LZjkvd0JqK2dRei93RC9BT2lDQ0NlK1MrKytLQ0NDeS84QTFUMWdnWXM4dmpQZnVjWVVpaDMvQVA4QTZDQ0NDZSsrQ1MrKytLQ0NDUzJWL3FQTEphaGRDQnFERERML0FQOEEvd0R5Q0NDQ2UrKzZMQ1MrKytPQ0NDQzcydjhBL3dEMXI5ODUyWnIvQVBwLy93QWdnZ2dodnZ2dWdyUXdrdnZ2cmlna2lRbDh1bnYvQU9uK1Uzdi9BUHR5Q0NDQ0NPKysrNkNEOXRMQ1MyKysrT0NwQ1ZDQkN5eWh5bGFIaUNCQ0NDQ0dlKysreUNEZjk5OUxEQzIrKysrbENjSlRDQ0N4Q0JDcENRSkNDR2UrKysraUNEZjlSOTk5TERDUzIrNjJQODg4ZjdJaENaQ3ZLUE1QKysrKyt5Q0NIZDk5QlI5OTl2RENDeTE4ODg4ODg4NUFPdEs0K1AzaisrK3lDQ0RQOTk5eEJCQjE5OTlQRFU4ODg4ODg4OGo4UDlwcjFWNDk2eUNEQkhmOTk5aEJ0QkJCUjk5OTlsODg4ODg4ODhuOG5XcDhmdmZDQkNEVFY5OTk1QkJCOXRCQkJCeDk5Mzg4ODg4ODg3MDhYRXkvODg4ME1yeitkOTVoQkJCTjg5OUpCQkJCeGUvODg4ODg4djhBTy9Kd0Z1UFBQUFBQT09ZUVFRUlhmZFBQZmJTUVFRUTZkLzhBejkvMy93QS84c2Q1RmRaYno4d3dCQkJCTjk5OEFRODg5OXRKQkJSakZIRXlVblFHemdkcDloV3hod0JCQkJOOTk5ODRBQUEwODg5OXROQkJnMTh2cm81L2owUGZ2Zm9CQkJCRk45OTk4NGdBT0FBQVEwODg5OTlOTkJCQkRKMEFBVEFRL1JCQkZOOTk5OTg4d0FBQSt1SUFBQVF3ODg5OTk5OU5OTk5OT2N1ZXROOTk5OTk4ODR3QUFBQU8rKyt1S0FBQUF3MDg4ODk5OTk5OTk5OTk5OTk4ODg4d2dBQUFBTysrQzIrKyt1S0FBQUFBUXcwODg4ODg4ODg4ODg4d3dBQUFBQUFPKysrK0NDUzIrKyt1T0NBQUFBQUFBQUFRd3dBQUFBQUFBQUFBR2UrKysreUMvOFFBSmhFQkFBSUNBZ0VEQkFNQkFBQUFBQUFBQVFBUklURVFRVUFnVVdFd1VIR1JjSUhSb2YvYUFBZ0JBd0VCUHhEN3IzQjcvSDJleW81S2lGT21Eclp2ckVSSS9aVTd3N2h0NGZtRUx2eXpLenVUMytQc0pSc3QrcW1GR3h5ZWpxS21uSlVCMW1XZHR2dG9qc3RucXJUM0d1dWgrL0hCelFrd1ppVU9qVlhMZC9iL0FIbGorMDdoTjRmbVhEL0xOOE14Mkt6L0FMTWdFMU5jRXdhYU1NUTRtYmhUZnY4QXVFRWFlTVJScytaMVlSNWQ4dnR3RlF3bFJBVTFIMTR6THF0WHltV1pJNHFvanZ5SGZCdmtqZ2U0ZlRQdU9BYXUvd0F6SFBFZlFiajVEdmczejFFSXVuWDlRQVhLNDFzb3JmZHhLYTRmUWI4bDN3YjVZdDJ4Z3hhLzhsbzBvN2pBTG9ab3JXei9BQ0ZXZzVQSmQ4RytYZkp2Z0RheVdTMHBDa0Z1M1BYa3UrRGZCdjBIRnVkVEJWbjZpcWxyejE1TEt1RjJwOEVvNjlIWEJ4MXdBdlVBS1dQMmVUaGdBMTZFSGNVMXdEeDF3SkFTZzBRVDJGam1XRXFMc0hzZTc4ZXZMNkRMOGtTbzhVTDRTWFQyaFZsWExnMTBlTmlQb3ZBNVJ6RFlJbGtSR21kY1BvTmdqandSaS9vbkRLT1VoM1BnbEpmQ3VSYmMzZUNLSDBHSEI3enJCcW1EWlo2QUcrQmRRVUFVVE5lRG9NRzlldnZoNDZSandPbnJvWDRTQnpCbVhDbUJCSFhDWEFxTFVPTytOT1hHSmNUbXc5eEJIWEE3UjE0YWFUQU1XMUtkTXZ1UVgybDVsZTBXb0ZTeWJZdzRoamhGRmdPYmZIMGtCM0FPbyswMU1RcTVraXNKbUk3SjhFd0V1WDVvV21DN2xJUEJIVEt2TS9QRmZFZXlOOWpXaythZkpGdS80Si8veEFBbUVRRUFBZ0lDQWdJQ0FRVUFBQUFBQUFBQkFCRWhNUkJCUUZFZ1lUQlFrWEJ4Z2JIQi85b0FDQUVDQVFFL0VQMnJWYTlmZjZmREt3M0RQYmcvV0QrWUlsbjZVYWU0cEREUi9pWUNOVnIvQUwraGNoVlV5Mm40ZHl1V1lZWjdjUFZxQUE3K1YxNlFxQnBmNDhkQUhxQnQzbVdPWlFlWkFpVTFEVU9TNWJQVXhDdFh6aEV3M0c5aE1OVyt2VVNndS9HY3ZUTzhJY211VDN4WDJTQmlEdUgyaVZ0cnJsQll3a3ZXYllhOGcxdzY1WWIra3hHbjF3NWRWTXlNdytEcUhrR3VIWFBjSVdOa0JCREpNRHkrdnFEWndmQjE1SnJoNUlIMkVRZFQ3UkRVSUJWYkNlMzNINlY4dmttdUhrMXk2NGJDOE9ac0dLamNIUGZrbXVIWERyNFBGQUY4QVUwYzkrU1RVYXR6N0paMzhPK0hqdmk0RVZhcWY5K1VsWGZ3Rk5RTGNDRGp2aEFWaVV0anpxMUZ0WXlRcmxmZmozNFB3RXJ3d2JoeFlyZ3dIY2JjSkRLZWZCeFRpRWRLRFRCRXNuZkI4SFZvTitDczErRjVzNVFqVSt5V3RmRTZLbXJ3VmwrQTVaMmlYWkVwcCtDSlhDbTRpSXJacThIY0lsYitmWEJ4MmhEaE52bllyd2dwaVZjR05zcUltK0JxTGNDNDhkY2JjbWN5b0RBajZNUk44THBESGhodE1nUVJ1VzdKWFZpSHVWaVhETWN5bWFoSm1PZUFFR1I1bzhmYVJYVVViaDdtNW1OMU1RQ014QmRNK3laV1ZLODFEdUo2bDRsRVRaTHFmMjR2N2gwUS93QkdvWjlVK2lCZGYwSi8vOFFBTFJBQkFBRUNCQVFHQXdFQkFRRUJBQUFBQVJFQUlURkJVV0VRSUhHQk1GQ1JvYkhCMGVId1FHRHhnSkQvMmdBSUFRRUFBVDhRL3dEZ3JJZEtVN1JQK09DQk5LT1pzK2hGV2FBZ1RPYzZpNkZRbi9HUUpTK0pzSmcwWm1pVUx6UUIyem9pWFBGcElZLzR1WTM1RkdEOXZTbWNBbE1HQi94WXhoUnFLaFV1RmFMWHRMSHZQcHhPQTR4bFRxSTIvd0NCRmlpQklEaEpqNEwzRW9DZ2VZWFFMY0RFbW5BTjJtZ01rektTNEtVWW5qcEdQbUFtNm9aQnh0YWtkWnhMVThDOE1GN3d0N3h4Z1JOV0FJMlRCcTRrWWhuVVVYb0pjbE5Ba1orTGVLWmZSSTdlOUlGeEErWFlOQUdTbWdCak1GWks1QW9PN0N5b2NKaUJuemI1RTZZdndjWkNPUzBVUFYwTzlZaURnR1JweUxZRmk3QmhTandKQm1pMm1PTnNxbVNDeHUwbVFjWEtuaGVFcFQ1WW9EeVRGNk1ObmRpMzVqbTZvTjNRUGx4bWhaazFEZWx0aFR5SXU2Nk8zS1dLRENFNlhuNm9INXBRd0g1ckFIUFdRcmU4Q2hyZThDbDRRaXNFRXBpczRTSFY4c1hjVUpuRmIxVFdNSzM0ZzkyZnJtNkF2cWZsekVmSldhNUNuS2xKWGtEY3FPbFFoTUJwU3M1WVpFZEtpZ1hGZE9DaVJiaUR2eTVieFdNYWtUVnVrSHQ4d2JUTjNzQisrVVNEVnBXY2w5TnZybXQrM3FEZ2VuS3N1U0kzYTltOXg1aEdEVzlTcmkwWTFoTlI2Q1ByekR1TXU2OHV5WTk2MzFIMzVUd0o5QXBXODA5dVkxY0JHVktyTFY0YUo5ZURzR0ZiM3IzZk1MWCt3Y3ZlSHN2ekxWWHNZdkF6S2o3Wms0a2RhUlg1Nzl1WHY0SkdYQVI2RE5KUllyUG1HTG9IdHk0M1VlL210QnE5Uzd3VVMwcE1SQlJ4QllESm1rcEtnQmRwUVdLQzV5MkxxRDJlRGIrcmpqM2p6SEQ2UTVjYTArT1B2bGt6Q1plaGVwRXpHc0tvVE9kTzc3a1NGT0h2bTA0MFBKTlFCdWtRVVFCbVIya25rc1hWSHY0UFFzRHFoOFQ1aDd3NXV0WFJlNkgzeTczTzZlSkRmaXNFdFNKcXhmcjVQcmk0aEU0QlRkQmlzUmxENE80anVnSit2TVBlSGg5QnZWSDJzY1JUQ2pxVlBTa3hVaG1KZXBvak1FSFNlS0Z0a2RZcDNKaHNsT3dYRWFHcEVZZWJmamZTd2ZENWdvUjBvd2Znb0FsZ3B3ZkQ3ajc1N01uTDBINmNRQkdvSUNTTk52QzNHYlV0d29xMFF0aXk1VTY0MlFuZm02eDNxZk1UMGcrM2d3YjFpdDdoT2ZyY0hWQjhMeGd1ejVMaFZqL29qbENBSlZnb2t4a2k5TEQ0OHh2MUQ5dVc4YzEvSThuV1lPc1c4Qzdaa2RncjhPUkNMeWdxWTB5RW1jVTVWSXIxME43alBLRUZQWVJkOWltdmhVdm1OK3BqNk1jdDhOZmpuNjVPdXcrcy9YZ2QrMTFYNERrQlB3Qyt4TktwWEZ2eHMvbURsNnNnNm8rQytaZndoeCsrVzhkZm52MXlXVDlBUjk4NEtnRXJUSVRJUTlrZlhKNmQrcXg4VHgzVE5iL0xrQ29La21DT2pZUDJucDVsWmRIMUVmWEhBZzFMUFd2N0ErazFwdzVKeFI5MS93Q2EwSEg5VlBxdjRWZXRhUjlsaXUxU0l1Z2ptQllsWG9DWDRwbkVxeXZKdkJ1d0krK0lJdkJsNlVxcXVMeVBHWXFCUTNvUy93QWFsWUVSaEhFZk1lN1U2aWZ1akM2WkYzb1VNSUMzdmJDZ0FnSU9lS0UwRTFQTHJINExVOTJYWit6OFZNSU9xOVJ4M2xEcUw4RHkyTGxucTNmbmowZjc3d2lweFl6WGQ0U0lkS2lvWEVTaUpJbHliclJwZ1lNUzRGaTlSMWtsTkZLZ1JHRWNSOHVZcTZBS0JoUTl2RkpKRGhRYkw4aUR1WVZMZDZKMzByZGpIVEI4UHJ5VHRZUkxvVnZ2Snh4OWZaQ29PNkwyYjhWZXEzWnZud1VkZkNVdzRQWklReVNKU056Z3ExL2ErV3BnVkFHZENTQjlEWS93SUU0QmVoZzV4YkkwMnBjK09Iai9BTzJpejRua3VaSkpvTFNMaXM0YUJTcXBXZUF3eVZoS0F5ZCtNQ0RHdDV2UUdCNnkrbmxvYmVEa2EvNFZKekIyWiswMFdJcU44QmF4UDFVTlJ5R0ExT0crRXVoWTRrQVlyRkZnV0V1MkZLQmljbmQ4M3ZZOWozb0xCYVZwS3FEMFF1dFczZ3NhQVdEMDhzYUF4eTlDakxnSUQvQzJ6S1R1L3dCNzhWQXhpejFUMkVJRys1UUxFaUR0Wjk1NHl5Uy9wY0h4NHY4QVBGalVwQVVoMlNPZ0krdUwwUGJMOXZ4NElRRnpyQmhTUW81ZVJ4Z3ZXNlA4T0Yycmx4OUJsN2NnTGt0Qm1oWXBtV2NjNTRrNk1PQkJJY0dsU0t5akxiZ0lsd1JkVEQzaWtvdUt6d0VFZ2JJeGFlSXlOQXNIZzlGNzFmMVVaa0NSMDhpYkZSRkVCWWovQUF2RHhjTy82b0FEQUk1QzY1UWQzOWZORlpsdEdUbnhWNHRiN2NVNUV4RW1uQ001S1NyQURCWVdDOGZIcFRGaWR6U1l5eUxOTWFMSWM4anV4OVBDVVZlMzBLa3hnejI4aWs2U0IveGZSUGQ1QVJXQWxwZ1lqTHYrcU9CdWgrL2JpTXpkQTNjZms4QXFBVTJ5NmNUcE0xRlh1UGh5bFpMd1ZoS2tVQWhtSjlYeUxvY1B0L2hCc0FKYVl6akxrdEZvUFF1LzIvQ2VNaDdjTkJrVFJTMEtYUnc4Ry84QU1BWkRmMG8wbXE0SFFvQkFBMEtpaE5FbWlYcDVpcEUvUmtlL0FFcE1BcGlRa1hNbjU0SVNNaDh2a1JHYXVmNGJwWnBlaHk3QS9hL3R1QmtXOHFraFJ4SzdBblZ0UW9pV1NnTnR3TlRYd0FTR0l0aC83eXVYcklUVXNkQkFwaWRpSmVNYUd3UFNYOGl2TlV0MDNvR3BwRS93WGxnK2dja1drdUFhdVZYTmxDN3E1OEx5MnJZSm52Vy8xZlFzZmZDSXRrWkpwUXBZSmNibitCZm9RcWRtVkx5TzdzemN3N2FWREZyV0o0UHJQTTY4cUJ4bUgzUkdNQWprMnFUNjVmZklvRXVvTzdScXdFSGJIM25pWVdlQ01WUEl1dzIxS3NCMklOenQ0d3dYR0tleDVJdFZPNHhHVnF1OGFUSE9wbFJSL0VFbWRidEtUYzdjN2s0eG1EUnEzYzBwVTFKTFVYM2VOOC93eThoT2tBUzB3amhwYmJlbkpBcjU2SVBlbFVxeXQza0VLM0s0RTNYc2ZOSEZTU05uVzZhVkdRZzBsVUp2VVhVSno1RmlScnJ3ZGhqY0ZBd0JxTTg2RndsajVOSmdSS3Vma255aFZzMU9VQVhzVHB0VS9mZHFlcG5VMW00RmdkdnhVQ1JMSVlPLzVxSUcwYkQxd280Qk1GU1BnR0VvWEU2R3RZVEFXNUxUd2ZSUDN5c0RSTXhzY2s1WmUyN1VNNmJrT1hUa1pRc1I2dDM0OTZ1QkNJNm14N3RTNnRFVWhtcjlRb0FITVdCNk5BRUE0SThTbGROVXZwalFLOHRvNzlpbkxrWlZidmt5TldrU2lZT0NIRjEwb0VKTGlNalVJUzJRbmZHbnlsZGM5U201UXppUFdQdW8wUk1iajFLZ1JmV0ErcWlJaTVQN1ZGR2FqUEZRS3NCalVnT2dPVlBrR3c2TlI0cnVmSmF0Rld3bjZvSlk3RzFIYkg0cWNZOFRreTdjZzRhQ2FaU2dyMU5FYzI2QTE0UklBTG93RFZhTnZXMlFaYkZQaVpUeFFBVk1BWjFMaGQ2aitpaGNld2pEMytPUldldmhRSkIvWnZROEg2SStWd1NiTmQvU285NWNzYm8wQUZDT1p3OVpJVnE2aVdybE45NlIrcUpKK3BkODFnamFEZjVXb2pvYVAxUlVjQzVmRkpFdEFjWDRvUkpHZUNoZHAwbFMxZ0duZWtHQ0NZUlJrbXRYT2pVREdlcDl5dElYUmZpb1VneGNZYlVJZ2pJNFZDdUJnNHFobEY3R1hZTmF3N3oxTFZaMTBCRG94OStKcFNXQUpXaFlmMkx2U2dWWUM2dElLNCt5dy9QZnpORWhkVjZLaFVMcm5walVMZHMzT1ZJVGtCODBZbHpOMWNWcEJJYmxNOGxlOVBhdWs5dnhTeHhDVzhlbEFvSnhHaGtVWWt5ZnlvQ1VKdHdBS29ET29qRmxib3dxU3c5NTBVM0FEUTJhbEdJbENQWDVlMUR5UUVDQlRNUTR6L3JTbGgySDVVWDF4dSt2QU1GR0QrTCtiRlNyQlVOUUlSNUMvclVTUGFsbEVUc0pkUnlZcllETnBFcE9KdHRTQ21XSmsxZ0dkM05mK1JVbUtkQ2tVWXZRTFRrVFJpTUhGWmNFc2ttcWo0cWVSOXo4VXJsM1NZRkl0S2VJOXhVYVNiVWZCRzVOYlE2VWxJbldMMHBiVFMvcmtZcStHWXRLa2dQUFRiemtWU0tKbVViVGl3Zm1xS0N0VkRVR1ROay9GRW5RS0NKSWliVmhLYlEzcXdUSzNYVnBJV1FZQ3lWa1YyUTFIaUhwUmFqbUt5cUVTWWhaMmNMa05aUldXQ1VTWk85MVl6V0N4SFNrRUlqQ2NGU05ZUllZaHZRc2dtMUliL0p4b25TQmg0RHo5V2E0RFloRlFMTzNvOXg0bjRyRGR0WlE4OUVGQ1JtWHQvR0JTQVJKSEtzby93QXNhaXhld3JRN3lGYUlHcXkwUnVGbVp4N1ZQWmNiVVFtYzF1MHdqb3JIN3BNeDgzL2hSUmtVZHF5TXRGV1JEUnZ3dkJQZ29vT0s5MWYreXB4Y3VxMFlnU3FlTzNUL0FQaWgvOWs9Iik7Cn0KI2RhdGEtdXJpLWd1ZXNzIHsKICB1cmk6IHVybCgiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFFQVNBQklBQUQvMndCREFBNEtDd3dMQ1E0TUN3d1FEdzRSRlNNWEZSTVRGU3NmSVJvak15MDJOVEl0TVRBNFAxRkZPRHhOUFRBeFJtQkhUVlJXVzF4Yk4wUmphbU5ZYWxGWlcxZi8yd0JEQVE4UUVCVVNGU2tYRnlsWE9qRTZWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFmL3dnQVJDQUd1QW9BREFTSUFBaEVCQXhFQi84UUFHZ0FCQUFNQkFRRUFBQUFBQUFBQUFBQUFBQUVDQXdVRUJ2L0VBQmtCQVFFQkFRRUJBQUFBQUFBQUFBQUFBQUFCQXdJRUJmL2FBQXdEQVFBQ0VBTVFBQUFCd0cvbkFBQkFKQUZBQUpnU0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFCQ0pnQUJRQUFBQUFSTUNRQlFBQ1lFZ0FOc3N0NEd1QUFBQUFBQUFBQUFBQUFBQWdBQUFBRVFBQUNnUk1TQUFBQWdFb2tDZ0FBRXdKTDQranIwOE9ubDl2aVg5RzJIa0hwOFFXQUFBQUFBQUFBQUFBQ0FBQUFBSWdBQUtBQkFKUklBQUFDQVNpUUtBQUFYb3oyMFZueC9SbTJlbXZuemc5WGhOYzg5b0d1QUFBQUFBQUFBQUNBQUFBQUNFQUFDZ0FBUUJNQ1FBQUFBZ0VvbFY0K2k4L3IrYmVuemJlY084d0FMWG5HV1VYejI2N242K1QzZUZmMDY1ZU1lcndoZVFBQUFBNTZQZDQ4OXFvYmVjQUFBQUFJUUFBS0FBQUlBQUV3SkFBQUFDTFZublMvUzV6NS8xZDY1Rm5MWEwyL05EYnpnYlk3WXlyMGNhYUt6NC9vemJQWFhET3NQWDRKUUwxNnV2azkvRko5SGtoRHZPVUJNYVllbnQ0OHg1ZmJUYktlcGswejkzekF2SUFBaUpnQUFVQUFBUUFBQUFTaVFBQUFBRXRiTmw2TksxUzdaYTViZWNMQU5jdGNwUXNBMnkxeGxDeGF0c3Q5L1p6bmgrbTlQbWdVMXkraDhnTytGcXVOTkZIbDkxNlEyODJ1V3VXM25Dd0lJQUFBS0FBQUFnQUFBQUFKUklBQUFBQ0FiWTdZcktDVGVtcTBxQVdOTTlwYzZyYzlWZXJ6Yzl3Tk1yVFJsNkxWT3M5Y3RjdTh3c0FBVEdzc1pnSVNZQUFBRkFBQUFRQUFBQUFBQUVva0FBQUFBMngyeEFSdGpzdVNDU2lSdFNGcmF1bm45ZjBmSHp6eDlHYTdybkZlbnMrY0ZtdVd1VW9JQUExeDJYRUlBQUFDZ0FBQUlBQUFBaVFBQUFBQ1VDUUFBSmlTK2VtWUEyeDFNZ2dHMk8yS3pmT2M5dEZIbDl0ODAranlhWlh6Mjg4MnA3OHQvTmw5RjgvTFdMUnBsQTZ6QWJZN0xpRUFCUUFBQUJBQUFBQUJFd0pBQUFBQUFtQktKQUFOY3RjZ0JybHFaQUdoYkcxUUVBYlk3TGlFdHBuZngvUzZYT2hqNlBSNWx0dk5pUFo4NEJ0anF1UUFBQUFBQ0FBQUFBQUJBRXdKUklBQUFBQUJLQklOY3RjZ0JybHFaQWJZN0dJQUFHMk94aUJlbXM2Vm95M25YSFhYejVDd0RYUFhFQUFBQUVFd0FBQUFBQUNBQUFBbEVnQUFBQUFBRzJXdUpKb1o2NytpZGN0MG9UbmEraUR4cGl3QUJxeklBMngyTVFXbTJRQUw4Nlh4Ni9LNDdxTmNBQkJNQUFBQUFBQUFnQUFBQUFKUklBQUFBQUxHbS9SOTJlbmw5UngyQ2dBUjV2VVRrK0Q2VjF6OG83L0swNHl5Mnh2SURXc0ZRYTVhK3lYRHkrN3drM3BwNWZkOUZ4Zk96Mm5QZW5lV0E5bnp3QUFBQUFBQkJNQUFBQUFBQUFtQklBQUFKNy9uNm1lZ2NhQUFBQUFBSW1pZUhqL1U0ZDgvTnRNdE10c3RjU1VTZTN0MGpMYjV5cHJqT3VPMmVwazgvcnZla2VqeVVHbVFBQUFBQUJBQUFBQUFBQUFBQUFsQWtEZkR0enJvU1k3QUFBQUFBQUtYb2x3dVB6MzAvazY0NGVScms5WGw2c3ZYeDJZN2ZKdmI0dDhKMG5FR2hiRzlBQUFCdmgwcGVhMnhzRUV3QUFBQUFFVEFrQUFBQUFBQUZ2cWVEOUJub0hHZ0FBQUFBQUZMMHVnS3BlaWNUdy9RZlA2NU8zeE80ZEFaYlI0ZmVUblU2aXpoK2I2WHc5YzhFYVpsNEtnQWR2amZUOGQ4UHc5TG05Y2hZQUFBQUFCQUV3SkFBQUFBQUIxdXZ6dWpqc0U2QUFBQUFBUk5FWEZBcGVsMHorWCtyK1UwNHY2c01ldVBySGo5bU93S0FCODkwL1picmxFdWV1ZnlQcDQ2NCtUbjZIWHJueDlJejA0bk45bmoyeEN3QUFBQUFnQW9JQktKQUFBQUFQWjMvbFBUeDM5SXczejBCUUFCVXNBQlJaSkNxMm9rMkZqNWI2cjVqdk9jZGN0T05PL3dET1R6ZnEzSjZXZXVnbEFBQUFBVXZ5Yk9WVTJ3QUFBQUVFd0FBS0FDQUpnU2lRQUFCMHVicEw2UFIwSzhkN2E4R1plNjhYczU2a0s4M3BKNHZUb0JtTklrQllyR2lBcmlkdmw5YzhlRFhFWE5xNitPWFN0Vm5ZNnZHNmVXdWsvSjdXZlR2RjdlT3dVeTVsbnI0Q05jZ3ZJQUFCQUFBQlFBQUFBUUJNQ1VTQUFXNi9HUy9XWi9QOWZQVER4L1FqaGV2MytZMDM1OVY2Ynhlam02NWxKdWlrYVkxRzdPTkZCYk91OWZNWS9UY2JUTHkrakcxbVZTeExzeSt2eDlUNW5QVEFhNUxWR3NabEJBQUFDQUFBQUNnQUFBQUFBQWdDWUVvRWdBMjZmR1RyNm5UNVAxOGRmUXViN2VlOWFURUwwQVZDbXFWdk5KYnFVTEY2aTBWakREMzFzNXQrbU1kbU12azRkNmJaQmVRQUFCQktBQUFBQ2dBQUVJa1VBQUFBQUFDQUFTZ1NnU0FEZjJjeEwzdlY4dTU2K3RyOHg2SmUrNU84Njl6SGFXSzIwRkNBcEVpdWxPYW5RK2VwVFRNT3VRQkJLQUFBQUFDZ0FBQUFRSVRBbEUwQUFBQUFBQUNBQUFBU2dTZ1NnU2dTZ2FhK1pMN3I4NHZVbmxJNm1IaUY2dzY1bEFBQUFBQUJRQUFBQUFBQ0VBQUFKZ1NpUUtBQUFBQUFBQUJBQUFBQUFBQUFBQUFBVUFBQUFBQUFBQWhBQUFBQUFBQ1lFb2tDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0VBQUFBQUFBQUFBQUpnU2dTQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFFUk1BQUFBQUFCLy94QUF0RUFBQ0FRSUVCZ0VFQXdBREFBQUFBQUFCQWdNQUVRUVFFaUFoTURFeU0xQVVFeUpBWUNOQlEwS0FrUC9hQUFnQkFRQUJCUUwvQUtGS2pNUDAvQ2VQRlJpMzZkSElZekpNMGdxVVIvcUM4U1RjL3BkNnZrZUVlUVFzUDBLM0pIRXlIN3NzSjJZbU1hZjBBVm9WbzVvOURiNCs3T09ReG1TZG5GU0dQVHpoaDJaR1VxZldqS1BFYVZtZjZqUklHWnhadG84ZVEyS0wweHVjN2NyRHRlUEZnV3RVa1JqOWl2RTdXOGVkNnZrMzJqWmhLbmhCSElCSW9rbkptSnBoYjF0OHIwdlp0azY3VXJydGpjeHMrSnV0YTEra1J5cE83MS8rVzJUeWJXNExzRzMvQUM1TW5rOWUzWnNUaTU0bllndXpHN2JiMWVyNUR4OGdjUy9mNjk5c2ZrMmpnbENtaGNEZU96a1IrVDJFbmRzajd0cjhNaFNtNjRsQXJoYjB5bFRzWHM1RWZkN0NUeWJFMm9Mc3h1Y2tsZEtaaXhVbFdkeXpNTGJCNCtRblQxLzl5ZCt4T214ZUM3NU8vSUM5ZEU1QThYci9BTzVPL1luVFllRWVkNnZrQmN1YnZsaGZMSkVyaGhZMjNueCt3azhteE9teVRydWk4bVFwVHBQeXVCNG1PUUlwNmJYOWpKMzdFNlpvTHV4dTI1T21RMm54N1pQSjdDVHJzVHBuSDEzL0FPV1k2bmdiNVAwMlIrVDJMOU5pYkI0OTdkdWNmZm5KM2JFOWtmSHNqNjVueGI1Ty9OZTNKZUxOM2JPa2ZzUjRzbFJtb1lhVTBtRllINGpWOFI2T0ZscDRwQUNDTjBmZnM2UlpSOTJ4YWZEY0NMZXhUcEhoM2VrZ2pUa1d2VFFSdFRZU25pZE0xNExza3pUdHI2ZW1PaFE0RkhEcmlMR1ZVTFVSYjF3Qll3WWNKenBNT2oxSkE4ZEhoSG1ndXpHN1pmNVlhSFZXS2U4bERZamxEM2V0QXVZSVJHUHdKTVByVmdWT1NjQm1rZXM4RlZqYzVmMWtUUisyUDFtRWkvQmJwVXNTeUNSREcxSGhIbkdtbForRU9iY0VxOUlOVE1kVGVyaFQ2a25UOEgvbGxMR0pGWkNyeWQyV0hYVkxVb3ZGbkozNWRzZklpVFczbzhJbGsvQlhaTWdPekJEamxpSWlqVkgzWklOVE1kVGNqQkQ3NVJwbDlDQmNxTksvZ04wMmRXeFVlaVRMQmorUElpOU5oWXpRd29BK0dLZkN1S1AyTHljR3RvOFdQNXZRNFZiemZnOVcyTDB4UzZvY3NNZVJpSWRhNWFXTkZTTm9Hb291bE1iNWZRNElmaEwwemJLVGpIU0M3UXlXbjVFc1ordkZoMVRLMTZrd3F0VHhzaHl3MEduTEcrVDBPRDhmNERiUnhhajBwT0FyRHkvVVRmcEdyWVFEUnc4UnBZa1RQRkc4M29ZSnZwc0NDT2VPSnpKc0FMREp1NDhJNlJ5alJTcklPZXgwcVRjK2lpbWFNeHlySU9SY1gyTnQ2dG5JUDVaTzdJRWd3NGtrcTZ2enNaSjZTQ0tPVkhoa2lxUEZrVWpxKytTUFZRK1FLWFZtT0oyTDB6bFhUaU5rWU5tTmhxYXJtc05Nek5WeHlKNXhHQ2JuMGFNVWFLVlpSSmgwZW13OGtkSmlwRnBNVEcxZGVReHNOaDRuWmk3NmN3Q3hrT2hjOEV2M1ROcGlwSkdqTWVKUjlqU0lsUzR1dXZwZ1NERmlnY25qUjZmQjE5T2FLbHhVZ3BjWWxDZUpxdmZZT05XSXJWV29WYzBPR3cxcDFKSWhqYWxVc1Z0Y201emdUNmNlTmI3Y3dTSytySlJkejZ1T1o0Nmp4S05tVVZxT0dpTmZEU3ZpQ2hDd29LUlIrNnIyMkZnVFZpSzFWcUZNVGxMR3NpdGgyUXMzRHRqencrSDA1VFA5U1QyU1N1bEppeFN1cmJXTnFYcFdrVmFyQ2dPRjdiRjQxeEZhaGs4VVJwc01yVjhPaGcxcElrVExGeTZWOXJlMUppWkZwY1docFpFYWliVUJWcXVhdlZ6UjFFZzN5MGlyVVJYYm5wRldBb2NEbkpJSTFkaTdlNVdXUmFYR05TNHVNMEpFYkltMUFXQkY2KzZ1TkVtaGNaYWE0MTkxYWEwaXIyeWtrV01TeUdSdmZCM0ZERXlDaGpEUXhjZENlSTBHVTEzR3JFVmMxYzE5MWFhc2ErMUtseEtpbVlzZjBVT3dvVHlDdmxTMTh1U3ZtTlh6R3I1alVjVEthTEZ2L0ZEL3hBQXBFUUFCQkFBRENBSURBUUFBQUFBQUFBQUJBQUlERVFRU01SQVRJQ0V3UUZCUkZFRWlNbUZ3LzlvQUNBRURBUUUvQWZLdmdjd1g0ZUNMT3QyN2VXamhmNmlLOExETHV6YUU4WisxTmlMNU0yUGdjMFg0RmpXaVA4aHFwR1pEd3d4N3hHTjJld2poUWlLTmNUUm1OSjhGZnJ6N2VNMDRGR05wRkxJQm9weTB1L0hnaWszYnJReEVaKzFOaUFSVGRyNDQ3eTZMZFB2VGJoNDh4djB0MVQ4eU1UR2orSTY4dTJaaUhzNUorSmM0VjBjUGx6MDVHTnBUNkFzcDdzenIyUnZNWnNJWXR2MkZOUHZPUTc5amM3cVQ0aTNuOWJHNG1RSjhycE5mQ1lhT3ptVFlTQ2ZTZEF4bzhOREx1eXZreHFlYmVjaHBzZ0Fza3A4WUl6TlJqYzNtUjRiRFpTMU5ZMXVpeER3MzhmZmhtT0xUeVh5cEVTVHpQZlVWbEtvOUtKbWQxS1NJZnN6VHVRMzN4WkFpMGpocTBWaG1OSXpJUWdXcFltQnZydDJqNzZKYndBVnNpbE1laStXMzBwSlRJYjdZQ3owM0M5ZzE2STE3Sm5VY09hYnJzcFpRaTMxd3NSMTdGdW5VZnhCdXd0V1JBVWpyMkxYVjFIN0FhUU44Wk5ka0ZYcFp2ZlNkd3QwV2ZhVFNKdnN3YVFjQ3NvVkZjK2dXN1FMVHVRN29FaFoxZlJwWlJzSnZ2Ykt6ck9ySEZkSXV2d2xsWmlyUCtFLy94QUFuRVFBQkF3SUdBZ0lEQVFBQUFBQUFBQUFCQUFJUkF4SVFJQ0V3TVVBVFVFRlJCQlFpY1AvYUFBZ0JBZ0VCUHdIMnJhb2Q2ZXErMVhDMkY1L1RWR1hoR2s4ZkNwMGZsMkRhb2Q2RnhkZm9tT3VHV28rMVhDMkY1eWdaRTVpWUVwdFdlZXU4UzBxNHE0cWtIQWE1S2pMeENOSjRWT2tabDJMWHVpVmUzR3M2MEsvK1lRZTV4UTZ6cVRYSnRGclRPelZtMlFyaW15VEFUUmFJd2UwUEVGSDhkeXAwck5lKzQyaVUyb0hZR2l3cHROcmVQU1ZueC9LTlJOcXZKOU5VcDNoZUI2cFU3TlRoVkpqUk5lWmdvT0I0OU5Xa09SY1NxTFNkZlRPYUhEVmVCaUFqUWQ2UXJncEcwOTFyWlRIL0FBN3NsMzFtdUtEcHl6Q0NyT0lNTHlKbFJ4UFhjZGtPeUV6ZzlnZXYxeW1NRE5Pc1RBMjJuQThiSjQ2VDl4cDBUdU1KVnhRZDk1WEljZEYzTzR6TVhZQnl2Uk1vY2RFdG5jWmdSS0lqT0JQU0tuN1Z2MXROeXU1Vm1JRW9DT21SS0xTRmNwQzAyQTdFbUUzVTlvZ0ZXS05tVmNjQUk3c0sxV3FEbWlVQkhwSUN0Q2dmNFQvL3hBQXhFQUFCQVFVSEJBSUJBZ2NBQUFBQUFBQUJBQUlRRVNBaEVqQXhVRkZoY1NJeVFZRkFrV0FERXlNelluS0FrS0gvMmdBSUFRRUFCajhDL3dBQ3FEOFFQS3RqOFBvb1lCd3NmaUd3VWZ3L2w5QitHOFVlVmJINEVBUW9YRWRKSWhRd0RoWUZmTi9hQ3JtRUdnb3FCTUVRSm10NlQxd0NqZlEwUVBsd2o1ekhhWmtlNTdIM0swclRPTnpRd1ZURjFURkRqTUdqTUJ0TmEwbWlGQUIxbXpYVlJ1dlF6RDNNWmd6N04xN3VqbURNbzVSbWpkTlhUWE9ZRGlVVEU2MGZFaTRhdVdlYzI5R1lNNlBCVlBLZ29HVnE1OUhNVEsxeEtFUytoVVNvaFJLSEVqVnkzeG1KbGE0bGFONFJjbm5NVEszeEtONXdFMGQzaGJxRnd6em1KbGI0bGhvSnh0V1NJWGJWUlJCWmpGUm1aRzJZbVZ2aVFJbWRvN1hBNW1PWWppVnJpUW5RWEIzTWtGQjdJMmxHWk04U3RjU05YREE5eWNYTFIyekptVThHUWJtNGhwU1JvdkNNcDNPWkhZdjZXU1ZnQW9raGR3V0lYaE05SlZaaDl5amMzUFNjeWFHeWlla0xDSjN1S3J0aHd1aHI3WFV5OW8rcFFOQTlvdXR0K2NCSkVJMlZBVnkrQVVXcXRYMmgyV28xVEkxcklBaVg4bFcyc0ZEU2FMS1AzbHNBcTkzd1lpaFVDOXByYVJobnhpVndpWHhraDVOY3R0bjE4R0dycTQ2cURUZ05heXRTTWozSkhMQVBoY1BnVlpPS2hwUjRjMEpPS1AzYXVTTnNrdGEvQ2pySUdvZFF3a2FMNGp0ZEhTcjlsRzVKMlRRM3lJQkFmRzRVUmdYa3ZxcVVSRnJGZDZwVldmSnh1aWRVY2lHM3d1SmpzOHNhQzR0RHVEOENxaVdBUVpRNHlKby9HaHE1b2JPQVVmQnVTeXlNVjFWTHFycG9WMUI5dHJGdzR5STgvQmhLVEkwMXM3Y1hGcnpMVmRxNldYbmJJdjZTb2o0RWJnb2J1aUZ2cDhBaytFVGtlMmlvZlZ6QzY0a2FHNmhwUjhRckxZOXJwTWI3OXNlOGswYVVSOWhRL1VydXVrenhaTmxyVlZETFM2b2VueGw1a2FhOXltSENzczRMdUt4VmhxdTdzUmNRSGNvbkpJc3JmUmFIWlJacndvTlZXTm5sVXZZUzA5eVFDL2JIc3lOTkpvN09peVZYcE1uVTBGRDlQN3llSVVQMUtidTZtWXJvYSsxU1BwVmdWMUFoZDRsaXFLc1hZZmF0SHpMQStWQXVvckxPSGs2cU1nSG55Z3hySlFydmErMVZvL2VWME5ORlhwTCtwa0Zkc0ZpVlJzcitjMHF0a3FDNnBJT3Bnc0N2UDBzS09nVjFkdXFnS01yKzZTMjNqbzRuTStrcnJFRjBtTXU4bmNWVlY4cXYzSkhWVXdmVUlRYUs3LzhBaXEwVjBoMWdZbk5xTEdQSzZoQmRMUWRFNHFpd1dCV0V1SlVGcy9CMEpJbEZvNTFScGRUTVZXSVZHaE5nNkxYbCtLeFZhdWdYUktpYy9vMFZqRlZaVlloZHlvUXRuVVdDd1dpeEt4VlN2NGVPcWkwZndhalJYZVZpc0F1MExzQzdRc1lLcGovcFEvL0VBQzBRQUFFREFnVURCQUlEQVFFQkFBQUFBQUVBRVNFeFVSQWdRV0Z4TUZDQmthR3g4RUJnd2RIeDRZQ1EvOW9BQ0FFQkFBRS9JZjhBd1VVRTVBcXlJYjlPMVROeElFWTYvcDcwcE5RbndBUUVCTzhUK21BNUJEcHVGT0YzNmNFcUVOWm5qRTBKeTFVUVIrZ2lTaWRXNklNQWFwd3dLUVlzM1hSVEJpS3JWTjMrdEFBaERKejBhZENCVzN4MFhxVkNpY1lCRUlnaGoxUlZDSkJPaUlBREVkdXFUSVlUaTFDRlJqRFJBYlJkRE1IWTF6UU5jTVJaQUVUZEZGT1dRT0Nib0NxR1BWQmJuZlpCS0UyTjJ3Vnl0SzlBSk9hRjAvMTZaaDdLS0ZhOHNyWHZoRm9HRDNSRXBqbkt1WXRrVmN4YjRWTzVJUk0xQTlzQlpNVGhGSWNJWm9XUS93QjVoQUpLay9LSkpFbXB5QU9FQWVZWFQyekoxSnh2RVlhRGxCeUV1cUF0OFhjS0J2bENxOUtXemJzUFJCS3J3elhUbkgwc2R3aUhaOG9zN2dqZFhPVmpCcFVweXV6bVl2ZERvaXlMbEc1cmwzRFRzT1d0dE9iZjBHRlNvSTNDSWJQOGZvKzJJeVg3aHAyQXkxTnZpemVLVHpoV2hES0VMU1VBN0l4Z0E1T2lJQU1Sb2N2dy9ubzFEWW50M0gzdVg1dVZwTGN3b1ZUSUEwVmluT3VVRlZ3akt1VTczQWNueE9qQTMzSTdnS0Y3dnBINGl3eEJmSVM2MHJBRDJ4MEFkY2lUMFlGdUErZTRDaGU3eS9WM0dXQnVmSTdBUzYza0xMZVFzV1NXS3BKdEJUanFDZG5nSzVIdUFYdmN2MWR4bG8yQXoxSDBFNHlSQUVrSnloT0ZVNEVnRGdmTkVXaDk1L251TmRmTDlYY1pHQnV0d0RuaFpOOWNTbklTd1VONGpsRWxrZmhMZW5jYXE0ZEU0WEIwQkgwVy93QnlQSVhJZ1N3cGlKZFE1ektMdTBCY29seVNkZTQxZVY4M0pFbDJIUWp0UGRrcEhrcTQ2ZGdCbGlMZnpqdVV6V0pHWDZxMlNHNkhvVi9vR1NPeWJFV1c2TnpiNUJLb3RRZTNjcGNoajhPQ3FuSUswT1JFY1lVZEpZRkFYQlF5ZVlTMG9nd0VjNWhkNmdsNFJMa2s1REEzTWRld2ZLRGxWN3hzZFVZcDdqTzZUMTBTdmZKMEJBR0FIbGFNTHdYOVlsWEd1S1krTHM4NVlHMll3MlRZYjh3UU9udUlFTi94SEdqd2lySkxaR0pqMjRZQzVLWWY2anJTd0c4a3dSc2x6UWY0Wk9URnVRY2FJUG1JMEYxRjZSd3J5T1lZcXN5YVNQYlNBQTVLZWNpcWZ3RFNhSnFQRFRSRklXSXg0QXdlY2g5SUJHakRBRTVtcHhEbXhURmhRTnk0N2F5RzVQNEwxaHNHSERRaFlMemZEY3hmWHppQTVaQWlxUktKenRrNUk2T1U2NlpBYVZKMlQ1Ullkc3NqcWdBQUFvUHdhOFdPcDdRMlRHcWtjd3BpTS9RU2NHb3RpQTVBRlNqRGdLUWVNZnNhZEhta1IyUjdPdngvQ21EY2ZJMER2VVpQWk9KV0NWTVBUVU1uQ0VNQkpOZ255Z2FDdzZMbHNteUhZaldhbEJBNkQ4SFF2Q0VCc25zbEFHcmkxY0hFQU1EaEVYZHhRYkg0S3lYb2dybUJRMlUrd1c2VHc2a3h2QWRpOVNQd3ZSeUNXRG9LelV5bkJyTEZvMkE5QVJnL3lZaWtONFZTQnlNcHcxaWdDTkFnN0U1L0QrQ1N3Y29LalV6a2sxN0FOd0xEa3hTYW8zUjFWRGhCZ1FXQTFFUUJnQlUxL0dUV1kzd0FKTEFPVlF1MFc3STR6WC9CU2EvTHdDQmhWNHc0Z3pBVEJON29TR1NEUGxBc0FJM1JSNGNGVW9Cdmo2UGRpTTBkeERSWEIvQW1lSXlQQlRRTURRb0dCdW9LOThBWThoUnVOWDRBZEJBNk1kcVMvWTRsT3RIdE4wUU1RR1JVWlNoaFV3Z0dEWkRBTkpaU1NwVXhIRU1VRU9OaUhPSHJOVjM3SUl4SWRYUnlZZ0lpQmxsVUhjWnp2d2FHZ0lvZHlkbERFTnNVblFJR1FsZzVRVkdzc2p3VUFXdVE0OVJnZ3VjS201V2w3aUF5NEorVmJ3d0VkUmVVQ0RJTDU2eUQ5a1FoSEo3SUhHWWhSbU5hU2JieUhxTWExSWl6NXdWVjNFQkFPVGpib1JGMEFBQUJraWVaeWlUZ2dGaXlEQUpUUWVrZzF5T1dJWmVoN0QwNE5DaFRIc2xBZ2h4T05NR3lJWUczSWtrNUxuc3cwVWdqVUpzbWVoQWdod1hDQXhia0NyV3lFNXdIYzFEK2FHUkhza3FrZVNFQUJ3UWNhSVpIclRoYm1MRk0wQnlGemVpSnFNRjBmTUpGVzJRbUJKVFNqM0l0OFp2Z3dQSTJSV2pLajJXdUlEbGhWZVZYSk1oVkp6a3F3T0N2OUtxbytlMWpQckZGQytaUkF2VEQzb0F2NG9LT2lOTkZ3dkdIdnh6QlROTWFsQ2xEZlRJSURRMUswVzUyRmJnZU1BS0lEOVI0dzFVNkd5TUNVTkNkWjdGK1VKVHFYdGlBU1dBY294QU95eFVWdDZEanVkZldzYUkrT2NFTGNPVXlpU29tVTRXSTRUMEVRZHg1S2ZKaU9qTUlDRFRBbHFxcDlnbXVyTElFMWxRcDhZTnhDRGtBQUdDYW9XdTRoVUZCdmhKbC9ZZDJCRTVFSFpWWmxLNGU5VkVlVXdUVndqTnpZcG12cFQxV2ZXVURKeEM0QnRnYkRjWVlaSWVTOVhWVGdjTElFRU9DaUFhZ0hCQ2tBVlVvYVpEZnhpNktUSjd6UkZISjVsQVVPQytRS3IyODROSXFhWVFIbGRNRkNEeW4vd0IwQ0hZRHludm1iWUVDWEVIWk1QOEFjSnJIb21Hb2tucXVmS25xYm9FR2hUN2VCZGFPOUJidjlOSGxHbkljZ3ROK0NqcUVhSkhLcWk4clUwZTVWVnFNV0t1KzliMVNzbmtMNlFpUU9BYmxPUUIwVDhIOUdvQThxaElBTkI1Q0dzUkQvdEwvQUdFZEVTMDF3Q05PYmwvOFVQL2FBQXdEQVFBQ0FBTUFBQUFRQ0NTLy9EUjk5dEJCQkJSMSsrKysrKysrKzh4QkJCQkY5OTVEWC82Q0NDQzIvdkRWOTl0QkJKQkJSeDg4ODg4NXhCQkJCQkY5OTlCSC93RDRncWdna3Y4QThzSFgzMjFHcWtJRUVFRUVFRUVFRUVFRVgzMzJFUDhBL3dDZ2d2aWdnbHYvQU1zSFgzMnpENklrRUVFRUVFRUVFRUYzMzMyRU4vOEE2Q0NDK3VDQ0MyLy9BQ29zZmZmVm5Zc0NBUVFRUVJ6VGZmZmVZUTMvQVA2SUlJYjc2NElJTGIrN2QzclgxYS9IazAzZ2swM3NNelQzRUVkLy93Q2lDQ0crMisrS0NDQzIvTy9oQlYyOTllOTlPS2Y5L3dCaitnUXovd0QvQU9pQ0NDZStTKysrS0NDQ3kvOEExVDFnZ1lzOHZqUGZ1Y1lVaWgzL0FQOEE2Q0NDQ2UrK0NTKysrS0NDQ1MyVi9xUExKYWhkQ0JxRERETC9BUDhBL3dEeUNDQ0NlKys2TENTKysrT0NDQ0M3MnY4QS93RDFyOTg1MlpyL0FQcC8vd0FnZ2dnaHZ2dnVnclF3a3Z2dnJpZ2tpUWw4dW52L0FPbitVM3YvQVB0eUNDQ0NDTysrKzZDRDl0TENTMisrK09DcENWQ0JDeXloeWxhSGlDQkNDQ0NHZSsrK3lDRGY5OTlMREMyKysrK2xDY0pUQ0NDeENCQ3BDUUpDQ0dlKysrK2lDRGY5Ujk5OUxEQ1MyKzYyUDg4OGY3SWhDWkN2S1BNUCsrKysreUNDSGQ5OUJSOTk5dkRDQ3kxODg4ODg4ODVBT3RLNCtQM2orKyt5Q0NEUDk5OXhCQkIxOTk5UERVODg4ODg4ODhqOFA5cHIxVjQ5NnlDREJIZjk5OWhCdEJCQlI5OTk5bDg4ODg4ODg4bjhuV3A4ZnZmQ0JDRFRWOTk5NUJCQjl0QkJCQng5OTM4ODg4ODg4NzA4WEV5Lzg4ODBNcnorZDk1aEJCQk44OTlKQkJCQnhlLzg4ODg4OHY4QU8vSndGdVBQUFBQUE9PWVFRUVJYZmRQUGZiU1FRUVE2ZC84QXo5LzMvd0EvOHNkNUZkWmJ6OHd3QkJCQk45OThBUTg4OTl0SkJCUmpGSEV5VW5RR3pnZHA5aFd4aHdCQkJCTjk5OTg0QUFBMDg4OTl0TkJCZzE4dnJvNS9qMFBmdmZvQkJCQkZOOTk5ODRnQU9BQUFRMDg4OTk5Tk5CQkJESjBBQVRBUS9SQkJGTjk5OTk4OHdBQUErdUlBQUFRdzg4OTk5OTlOTk5OTk9jdWV0Tjk5OTk5ODg0d0FBQUFPKysrdUtBQUFBdzA4ODg5OTk5OTk5OTk5OTk5ODg4OHdnQUFBQU8rK0MyKysrdUtBQUFBQVF3MDg4ODg4ODg4ODg4OHd3QUFBQUFBTysrKytDQ1MyKysrdU9DQUFBQUFBQUFBUXd3QUFBQUFBQUFBQUdlKysrK3lDLzhRQUpoRUJBQUlDQWdFREJBTUJBQUFBQUFBQUFRQVJJVEVRUVVBZ1VXRXdVSEdSY0lIUm9mL2FBQWdCQXdFQlB4RDdyM0I3L0gyZXlvNUtpRk9tRHJadnJFUkkvWlU3dzdodDRmbUVMdnl6S3p1VDMrUHNKUnN0K3FtRkd4eWVqcUttbkpVQjFtV2R0dnRvanN0bnFyVDNHdXVoKy9IQnpRa3daaVVPalZYTGQvYi9BSGxqKzA3aE40Zm1YRC9MTjhNeDJLei9BTE1nRTFOY0V3YWFNTVE0bWJoVGZ2OEF1RUVhZU1SUnMrWjFZUjVkOHZ0d0ZRd2xSQVUxSDE0ekxxdFh5bVdaSTRxb2p2eUhmQnZramdlNGZUUHVPQWF1L3dBekhQRWZRYmo1RHZnM3oxRUl1blg5UUFYSzQxc29yZmR4S2E0ZlFiOGwzd2I1WXQyeGd4YS84bG8wbzdqQUxvWm9yV3ovQUNGV2c1UEpkOEcrWGZKdmdEYXlXUzBwQ2tGdTNQWGt1K0RmQnYwSEZ1ZFRCVm42aXFscnoxNUxLdUYycDhFbzY5SFhCeDF3QXZVQUtXUDJlVGhnQTE2RUhjVTF3RHgxd0pBU2cwUVQyRmptV0VxTHNIc2U3OGV2TDZETDhrU284VUw0U1hUMmhWbFhMZzEwZU5pUG92QTVSekRZSWxrUkdtZGNQb05namp3Umkvb25ES09VaDNQZ2xKZkN1UmJjM2VDS0gwR0hCN3pyQnFtRFpaNkFHK0JkUVVBVVROZURvTUc5ZXZ2aDQ2Ump3T25yb1g0U0J6Qm1YQ21CQkhYQ1hBcUxVT08rTk9YR0pjVG13OXhCSFhBN1IxNGFhVEFNVzFLZE12dVFYMmw1bGUwV29GU3liWXc0aGpoRkZnT2JmSDBrQjNBT28rMDFNUXE1a2lzSm1JN0o4RXdFdVg1b1dtQzdsSVBCSFRLdk0vUEZmRWV5TjlqV2srYWZKRnUvNEovL3hBQW1FUUVBQWdJQ0FnSUNBUVVBQUFBQUFBQUJBQkVoTVJCQlFGRWdZVEJRa1hCeGdiSEIvOW9BQ0FFQ0FRRS9FUDJyVmE5ZmY2ZkRLdzNEUGJnL1dEK1lJbG42VWFlNHBERFIvaVlDTlZyL0FMK2hjaFZVeTJuNGR5dVdZWVo3Y1BWcUFBNytWMTZRcUJwZjQ4ZEFIcUJ0M21XT1pRZVpBaVUxRFVPUzViUFV4Q3RYemhFdzNHOWhNTlcrdlVTZ3UvR2N2VE84SWNtdVQzeFgyU0JpRHVIMmlWdHJybEJZd2t2V2JZYThnMXc2NVliK2t4R24xdzVkVk15TXcrRHFIa0d1SFhQY0lXTmtCQkRKTUR5K3ZxRFp3ZkIxNUpyaDVJSDJFUWRUN1JEVUlCVmJDZTMzSDZWOHZrbXVIazF5NjRiQzhPWnNHS2pjSFBma211SFhEcjRQRkFGOEFVMGM5K1NUVWF0ejdKWjM4TytIanZpNEVWYXFmOStVbFhmd0ZOUUxjQ0RqdmhBVmlVdGp6cTFGdFl5UXJsZmZqMzRQd0Vyd3diaHhZcmd3SGNiY0pES2VmQnhUaUVkS0RUQkVzbmZCOEhWb04rQ3MxK0Y1czVRalUreVd0ZkU2S21yd1ZsK0E1WjJpWFpFcHArQ0pYQ200aUlyWnE4SGNJbGIrZlhCeDJoRGhOdm5ZcndncGlWY0dOc3FJbStCcUxjQzQ4ZGNiY21jeW9EQWo2TVJOOExwREhoaHRNZ1FSdVc3SlhWaUh1VmlYRE1jeW1haEptT2VBRUdSNW84ZmFSWFVVYmg3bTVtTjFNUUNNeEJkTSt5WldWSzgxRHVKNmw0bEVUWkxxZjI0djdoMFEvd0JHb1o5VStpQmRmMEovLzhRQUxSQUJBQUVDQkFRR0F3RUJBUUVCQUFBQUFSRUFJVEZCVVdFUUlIR0JNRkNSb2JIQjBlSHdRR0R4Z0pELzJnQUlBUUVBQVQ4US93RGdySWRLVTdSUCtPQ0JOS09acytoRldhQWdUT2M2aTZGUW4vR1FKUytKc0pnMFptaVVMelFCMnpvaVhQRnBJWS80dVkzNUZHRDl2U21jQWxNR0IveFl4aFJxS2hVdUZhTFh0TEh2UHB4T0E0eGxUcUkyL3dDQkZpaUJJRGhKajRMM0VvQ2dlWVhRTGNERW1uQU4ybWdNa3pLUzRLVVluanBHUG1BbTZvWkJ4dGFrZFp4TFU4QzhNRjd3dDd4eGdSTldBSTJUQnE0a1loblVVWG9KY2xOQWtaK0xlS1pmUkk3ZTlJRnhBK1hZTkFHU21nQmpNRlpLNUFvTzdDeW9jSmlCbnpiNUU2WXZ3Y1pDT1MwVVBWME85WWlEZ0dScHlMWUZpN0JoU2p3SkJtaTJtT05zcW1TQ3h1MG1RY1hLbmhlRXBUNVlvRHlURjZNTm5kaTM1am02b04zUVBseG1oWmsxRGVsdGhUeUl1NjZPM0tXS0RDRTZYbjZvSDVwUXdINXJBSFBXUXJlOENocmU4Q2w0UWlzRUVwaXM0U0hWOHNYY1VKbkZiMVRXTUszNGc5MmZybTZBdnFmbHpFZkpXYTVDbktsSlhrRGNxT2xRaE1CcFNzNVlaRWRLaWdYRmRPQ2lSYmlEdnk1YnhXTWFrVFZ1a0h0OHdiVE4zc0IrK1VTRFZwV2NsOU52cm10KzNxRGdlbktzdVNJM2E5bTl4NWhHRFc5U3JpMFkxaE5SNkNQcnpEdU11Njh1eVk5NjMxSDM1VHdKOUFwVzgwOXVZMWNCR1ZLckxWNGFKOWVEc0dGYjNyM2ZNTFgrd2N2ZUhzdnpMVlhzWXZBektqN1prNGtkYVJYNTc5dVh2NEpHWEFSNkROSlJZclBtR0xvSHR5NDNVZS9tdEJxOVM3d1VTMHBNUkJSeEJZREpta3BLZ0JkcFFXS0M1eTJMcUQyZURiK3JqajNqekhENlE1Y2EwK09QdmxrekNaZWhlcEV6R3NLb1RPZE83N2tTRk9Idm0wNDBQSk5RQnVrUVVRQm1SMmtua3NYVkh2NFBRc0RxaDhUNWg3dzV1dFhSZTZIM3k3M082ZUpEZmlzRXRTSnF4ZnI1UHJpNGhFNEJUZEJpc1JsRDRPNGp1Z0ordk1QZUhoOUJ2Vkgyc2NSVENqcVZQU2t4VWhtSmVwb2pNRUhTZUtGdGtkWXAzSmhzbE93WEVhR3BFWWViZmpmU3dmRDVnb1Iwb3dmZ29BbGdwd2ZEN2o3NTdNbkwwSDZjUUJHb0lDU05OdkMzR2JVdHdvcTBRdGl5NVU2NDJRbmZtNngzcWZNVDBnKzNnd2IxaXQ3aE9mcmNIVkI4THhndXo1TGhWai9vamxDQUpWZ29reGtpOUxENDh4djFEOXVXOGMxL0k4bldZT3NXOEM3WmtkZ3I4T1JDTHlncVkweUVtY1U1VklyMTBON2pQS0VGUFlSZDlpbXZoVXZtTitwajZNY3Q4TmZqbjY1T3V3K3MvWGdkKzExWDREa0JQd0MreE5LcFhGdnhzL21EbDZzZzZvK0MrWmZ3aHgrK1c4ZGZudjF5V1Q5QVI5ODRLZ0VyVElUSVE5a2ZYSjZkK3F4OFR4M1ROYi9Ma0NvS2ttQ09qWVAybnA1bFpkSDFFZlhIQWcxTFBXdjdBK2sxcHc1SnhSOTEvd0NhMEhIOVZQcXY0VmV0YVI5bGl1MVNJdWdqbUJZbFhvQ1g0cG5FcXl2SnZCdXdJKytJSXZCbDZVcXF1THlQR1lxQlEzb1Mvd0FhbFlFUmhIRWZNZTdVNmlmdWpDNlpGM29VTUlDM3ZiQ2dBZ0lPZUtFMEUxUExySDRMVTkyWForejhWTUlPcTlSeDNsRHFMOER5MkxsbnEzZm5qMGY3N3dpcHhZelhkNFNJZEtpb1hFU2lKSWx5YnJScGdZTVM0Rmk5UjFrbE5GS2dSR0VjUjh1WXE2QUtCaFE5dkZKSkRoUWJMOGlEdVlWTGQ2SjMwcmRqSFRCOFByeVR0WVJMb1Z2dkp4eDlmWkNvTzZMMmI4VmVxM1p2bndVZGZDVXc0UFpJUXlTSlNOemdxMS9hK1dwZ1ZBR2RDU0I5RFkvd0lFNEJlaGc1eGJJMDJwYytPSGovQU8yaXo0bmt1WkpKb0xTTGlzNGFCU3FwV2VBd3lWaEtBeWQrTUNER3Q1dlFHQjZ5K25sb2JlRGthLzRWSnpCMlorMDBXSXFOOEJheFAxVU5SeUdBMU9HK0V1aFk0a0FZckZGZ1dFdTJGS0JpY25kODN2WTlqM29MQmFWcEtxRDBRdXRXM2dzYUFXRDA4c2FBeHk5Q2pMZ0lEL0MyektUdS93Qjc4VkF4aXoxVDJFSUcrNVFMRWlEdFo5NTR5eVMvcGNIeDR2OEFQRmpVcEFVaDJTT2dJK3VMMFBiTDl2eDRJUUZ6ckJoU1FvNWVSeGd2VzZQOE9GMnJseDlCbDdjZ0xrdEJtaFlwbVdjYzU0azZNT0JCSWNHbFNLeWpMYmdJbHdSZFREM2lrb3VLendFRWdiSXhhZUl5TkFzSGc5RjcxZjFVWmtDUjA4aWJGUkZFQllqL0FBdkR4Y08vNm9BREFJNUM2NVFkMzlmTkZabHRHVG54VjR0YjdjVTVFeEVtbkNNNUtTckFEQllXQzhmSHBURmlkelNZeXlMTk1hTEljOGp1eDlQQ1VWZTMwS2t4Z3oyOGlrNlNCL3hmUlBkNUFSV0FscGdZakx2K3FPQnVoKy9iaU16ZEEzY2ZrOEFxQVUyeTZjVHBNMUZYdVBoeWxaTHdWaEtrVUFobUo5WHlMb2NQdC9oQnNBSmFZempMa3RGb1BRdS8yL0NlTWg3Y05Ca1RSUzBLWFJ3OEcvOEFNQVpEZjBvMG1xNEhRb0JBQTBLaWhORW1pWHA1aXBFL1JrZS9BRXBNQXBpUWtYTW41NElTTWg4dmtSR2F1ZjRicFpwZWh5N0EvYS90dUJrVzhxa2hSeEs3QW5WdFFvaVdTZ050d05UWHdBU0dJdGgvN3l1WHJJVFVzZEJBcGlkaUplTWFHd1BTWDhpdk5VdDAzb0dwcEUvd1hsZytnY2tXa3VBYXVWWE5sQzdxNThMeTJyWUpudlcvMWZRc2ZmQ0l0a1pKcFFwWUpjYm4rQmZvUXFkbVZMeU83c3pjdzdhVkRGcldKNFByUE02OHFCeG1IM1JHTUFqazJxVDY1ZmZJb0V1b083UnF3RUhiSDNuaVlXZUNNVlBJdXcyMUtzQjJJTnp0NHd3WEdLZXg1SXRWTzR4R1ZxdThhVEhPcGxSUi9FRW1kYnRLVGM3YzdrNHhtRFJxM2MwcFUxSkxVWDNlTjgvd3k4aE9rQVMwd2pocGJiZW5KQXI1NklQZWxVcXl0M2tFSzNLNEUzWHNmTkhGU1NOblc2YVZHUWcwbFVKdlVYVUp6NUZpUnJyd2RoamNGQXdCcU04NkZ3bGo1TkpnUkt1ZmtueWhWczFPVUFYc1RwdFUvZmRxZXBuVTFtNEZnZHZ4VUNSTElZTy81cUlHMGJEMXdvNEJNRlNQZ0dFb1hFNkd0WVRBVzVMVHdmUlAzeXNEUk14c2NrNVplMjdVTTZia09YVGtaUXNSNnQzNDk2dUJDSTZteDd0UzZ0RVVobXI5UW9BSE1XQjZOQUVBNEk4U2xkTlV2cGpRSzh0bzc5aW5Ma1pWYnZreU5Xa1NpWU9DSEYxMG9FSkxpTWpVSVMyUW5mR255bGRjOVNtNVF6aVBXUHVvMFJNYmoxS2dSZldBK3FpSWk1UDdWRkdhalBGUUtzQmpVZ09nT1ZQa0d3Nk5SNHJ1ZkphdEZXd242b0pZN0cxSGJINHFjWThUa3k3Y2c0YUNhWlNncjFORWMyNkExNFJJQUxvd0RWYU52VzJRWmJGUGlaVHhRQVZNQVoxTGhkNmoraWhjZXdqRDMrT1JXZXZoUUpCL1p2UThINkkrVndTYk5kL1NvOTVjc2JvMEFGQ09adzlaSVZxNmlXcmxOOTZSK3FKSitwZDgxZ2phRGY1V29qb2FQMVJVY0M1ZkZKRXRBY1g0b1JKR2VDaGRwMGxTMWdHbmVrR0NDWVJSa210WE9qVURHZXA5eXRJWFJmaW9VZ3hjWWJVSWdqSTRWQ3VCZzRxaGxGN0dYWU5hdzd6MUxWWjEwQkRveDkrSnBTV0FKV2hZZjJMdlNnVllDNnRJSzQreXcvUGZ6TkVoZFY2S2hVTHJucGpVTGRzM09WSVRrQjgwWWx6TjFjVnBCSWJsTThsZTlQYXVrOXZ4U3h4Q1c4ZWxBb0p4R2hrVVlreWZ5b0NVSnR3QUtvRE9vakZsYm93cVN3OTUwVTNBRFEyYWxHSWxDUFg1ZTFEeVFFQ0JUTVE0ei9yU2xoMkg1VVgxeHUrdkFNRkdEK0wrYkZTckJVTlFJUjVDL3JVU1BhbGxFVHNKZFJ5WXJZRE5wRXBPSnR0U0NtV0prMWdHZDNOZitSVW1LZENrVVl2UUxUa1RSaU1IRlpjRXNrbXFqNHFlUjl6OFVybDNTWUZJdEtlSTl4VWFTYlVmQkc1TmJRNlVsSW5XTDBwYlRTL3JrWXErR1l0S2tnUFBUYnprVlNLSm1VYlRpd2ZtcUtDdFZEVUdUTmsvRkVuUUtDSklpYlZoS2JRM3F3VEszWFZwSVdRWUN5VmtWMlExSGlIcFJham1LeXFFU1loWjJjTGtOWlJXV0NVU1pPOTFZeldDeEhTa0VJakNjRlNOWVJZWWh2UXNnbTFJYi9KeG9uU0JoNER6OVdhNERZaEZRTE8zbzl4NG40ckRkdFpRODlFRkNSbVh0L0dCU0FSSkhLc28vd0FzYWl4ZXdyUTd5RmFJR3F5MFJ1Rm1aeDdWUFpjYlVRbWMxdTB3am9ySDdwTXg4My9oUlJrVWRxeU10RldSRFJ2d3ZCUGdvb09LOTFmK3lweGN1cTBZZ1NxZU8zVC9BUGloLzlrPSIpOwp9CiNkYXRhLXVyaS1hc2NpaSB7CiAgdXJpLTE6IHVybCgiZGF0YTp0ZXh0L2h0bWwsJTNDaHRtbCUzRSUzQ2gxJTNFVGhpcyUyMHBhZ2UlMjBpcyUyMDEwMCUyNSUyMEF3ZXNvbWUuJTNDJTJGaDElM0UlM0MlMkZodG1sJTNFJTBBIik7CiAgdXJpLTI6IHVybCgiZGF0YTp0ZXh0L2h0bWwsJTNDaHRtbCUzRSUzQ2gxJTNFVGhpcyUyMHBhZ2UlMjBpcyUyMDEwMCUyNSUyMEF3ZXNvbWUuJTNDJTJGaDElM0UlM0MlMkZodG1sJTNFJTBBIik7Cn0KI3N2Zy1mdW5jdGlvbnMgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMSUyMDElMjIlM0UlM0NsaW5lYXJHcmFkaWVudCUyMGlkJTNEJTIyZyUyMiUyMHgxJTNEJTIyMCUyNSUyMiUyMHkxJTNEJTIyMCUyNSUyMiUyMHgyJTNEJTIyMCUyNSUyMiUyMHkyJTNEJTIyMTAwJTI1JTIyJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjAlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzMDAwMDAwJTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjEwMCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjNmZmZmZmYlMjIlMkYlM0UlM0MlMkZsaW5lYXJHcmFkaWVudCUzRSUzQ3JlY3QlMjB4JTNEJTIyMCUyMiUyMHklM0QlMjIwJTIyJTIwd2lkdGglM0QlMjIxJTIyJTIwaGVpZ2h0JTNEJTIyMSUyMiUyMGZpbGwlM0QlMjJ1cmwoJTIzZyklMjIlMjAlMkYlM0UlM0MlMkZzdmclM0UnKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDElMjAxJTIyJTNFJTNDbGluZWFyR3JhZGllbnQlMjBpZCUzRCUyMmclMjIlMjB4MSUzRCUyMjAlMjUlMjIlMjB5MSUzRCUyMjAlMjUlMjIlMjB4MiUzRCUyMjAlMjUlMjIlMjB5MiUzRCUyMjEwMCUyNSUyMiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzAwMDAwMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIzJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyM2ZmYTUwMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIxMDAlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzZmZmZmZmJTIyJTJGJTNFJTNDJTJGbGluZWFyR3JhZGllbnQlM0UlM0NyZWN0JTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMSUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjBmaWxsJTNEJTIydXJsKCUyM2cpJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFJyk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxJTIwMSUyMiUzRSUzQ2xpbmVhckdyYWRpZW50JTIwaWQlM0QlMjJnJTIyJTIweDElM0QlMjIwJTI1JTIyJTIweTElM0QlMjIwJTI1JTIyJTIweDIlM0QlMjIwJTI1JTIyJTIweTIlM0QlMjIxMDAlMjUlMjIlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMSUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjNjNGM0YzQlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMyUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjNmZmE1MDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyNSUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjMwMDgwMDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyOTUlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzZmZmZmZmJTIyJTJGJTNFJTNDJTJGbGluZWFyR3JhZGllbnQlM0UlM0NyZWN0JTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMSUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjBmaWxsJTNEJTIydXJsKCUyM2cpJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFJyk7Cn0KI2RhdGEtdXJpLXdpdGgtc3BhY2VzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnIGRhdGE6aW1hZ2UveC1wbmcsZjlkaWZTU0ZJSUdGSUZKRDFmOTgyRlNES0FBOT09Jyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/visitorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/visitorPlugin/visitor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZSB7CiAgY29sb3I6IHJlZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/calc.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm5vLW1hdGggewogIHJvb3Q6IGNhbGMoMTAwJSAtIDMwcHgpOwogIHJvb3QyOiBjYWxjKDEwMCUgLSA0MHB4KTsKICB3aWR0aDogY2FsYyg1MCUgKyAoMjV2aCAtIDIwcHgpKTsKICBoZWlnaHQ6IGNhbGMoNTAlICsgKDI1dmggLSAyMHB4KSk7CiAgbWluLWhlaWdodDogY2FsYygxMHZoICsgY2FsYyg1dmgpKTsKICBmb286IDMgY2FsYygzICsgNCkgMTE7CiAgYmFyOiBjYWxjKDEgKyAyMCUpOwp9Ci5iIHsKICBvbmU6IGNhbGMoMTAwJSAtIDIwcHgpOwogIHR3bzogY2FsYygxMDAlIC0gKDEwcHggKyAxMHB4KSk7CiAgdGhyZWU6IGNhbGMoMTAwJSAtICgzICogMSkpOwogIGZvdXI6IGNhbGMoMTAwJSAtICgzICogMSkpOwogIG5lc3RlZDogY2FsYyhjYWxjKDIuMjVyZW0gKyAycHgpIC0gMXB4ICogMik7Cn0KLmMgewogIGhlaWdodDogY2FsYygxMDAlIC0gKCgxMHB4ICogMykgKyAoMTBweCAqIDIpKSk7Cn0KLmNvcnJlY3RseS1leGl0LWNhbGMtbW9kZSBoMiB7CiAgd2lkdGg6IDEwcHg7Cn0KLmNvcnJlY3RseS1leGl0LWNhbGMtbW9kZSBkaXYgewogIHdpZHRoOiBjYWxjKDEwMHB4ICogMik7Cn0KLmNvcnJlY3RseS1leGl0LWNhbGMtbW9kZSBoMSB7CiAgY29sb3I6IHdoaXRlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/charsets.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/colors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3llbG93ICNzaG9ydCB7CiAgY29sb3I6ICNmZWE7Cn0KI3llbG93ICNsb25nIHsKICBjb2xvcjogI2ZmZWVhYTsKfQojeWVsb3cgI3JnYmEgewogIGNvbG9yOiByZ2JhKDI1NSwgMjM4LCAxNzAsIDAuMSk7Cn0KI3llbG93ICNhcmdiIHsKICBjb2xvcjogIzFhZmZlZWFhOwp9CiNibHVlICNzaG9ydCB7CiAgY29sb3I6ICMwMGY7Cn0KI2JsdWUgI2xvbmcgewogIGNvbG9yOiAjMDAwMGZmOwp9CiNibHVlICNyZ2JhIHsKICBjb2xvcjogcmdiYSgwLCAwLCAyNTUsIDAuMSk7Cn0KI2JsdWUgI2FyZ2IgewogIGNvbG9yOiAjMWEwMDAwZmY7Cn0KI2FscGhhICNoc2xhIHsKICBjb2xvcjogaHNsYSgxMSwgMjAlLCAyMCUsIDAuNik7Cn0KI292ZXJmbG93IC5hIHsKICBjb2xvcjogIzAwMDAwMDsKfQojb3ZlcmZsb3cgLmIgewogIGNvbG9yOiAjZmZmZmZmOwp9CiNvdmVyZmxvdyAuYyB7CiAgY29sb3I6ICNmZmZmZmY7Cn0KI292ZXJmbG93IC5kIHsKICBjb2xvcjogIzAwZmYwMDsKfQojb3ZlcmZsb3cgLmUgewogIGNvbG9yOiByZ2JhKDAsIDMxLCAyNTUsIDAuNDIpOwp9CiNncmV5IHsKICBjb2xvcjogI2M4YzhjODsKfQojYWEzMzMzIHsKICBjb2xvcjogI2FhMzMzMzsKfQojYmI4MDgwIHsKICBjb2xvcjogaHNsKDAsIDMwJSwgNjIlKTsKfQojY2NmZjAwIHsKICBjb2xvcjogaHNsKDcyLCAxMDAlLCA1MCUpOwp9Ci5saWdodGVuYmx1ZSB7CiAgY29sb3I6ICMzMzMzZmY7Cn0KLmRhcmtlbmJsdWUgewogIGNvbG9yOiAjMDAwMGNjOwp9Ci51bmtub3duY29sb3JzIHsKICBjb2xvcjogYmx1ZTI7CiAgYm9yZGVyOiAycHggc29saWQgc3VwZXJyZWQ7Cn0KLnRyYW5zcGFyZW50IHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQojYWxwaGEgI2Zyb212YXIgewogIG9wYWNpdHk6IDAuNzsKfQojYWxwaGEgI3Nob3J0IHsKICBvcGFjaXR5OiAxOwp9CiNhbHBoYSAjbG9uZyB7CiAgb3BhY2l0eTogMTsKfQojYWxwaGEgI3JnYmEgewogIG9wYWNpdHk6IDAuMjsKfQojYWxwaGEgI2hzbCB7CiAgb3BhY2l0eTogMTsKfQojcGVyY2VudGFnZSB7CiAgY29sb3I6IDI1NTsKICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOwp9CiNycmdnYmJhYSB7CiAgdGVzdC0xOiAjNTVGRjU1OTk7CiAgdGVzdC0yOiAjNUY1OTsKICB0ZXN0LTM6IHJnYmEoMTM2LCAyNTUsIDEzNiwgMC42KTsKICB0ZXN0LTQ6IHJnYmEoODUsIDI1NSwgODUsIDAuMSk7CiAgdGVzdC01OiByZ2JhKDg1LCAyNTUsIDg1LCAwLjYpOwogIHRlc3QtNjogcmdiYSg4NSwgMjU1LCA4NSwgMC42KTsKICB0ZXN0LTc6IHJnYmEoODUsIDI1NSwgODUsIDAuNSk7CiAgdGVzdC04OiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudCksIDAuMik7CiAgdGVzdC05OiByZ2IodmFyKC0tY29sb3ItYWNjZW50KSk7CiAgdGVzdC05OiBoc2xhKHZhcigtLWNvbG9yLWFjY2VudCkpOwogIHRlc3QtMTA6ICM1NUZGNTU5OTsKICB0ZXN0LTExOiBoc2xhKDEyMCwgMTAwJSwgNjYuNjY2NjY2NjclLCAwLjYpOwogIHRlc3QtMTI6IGhzbGEoMTIwLCAxMDAlLCA2Ni42NjY2NjY2NyUsIDAuNSk7CiAgLS1zZW1pLXRyYW5zcGFyZW50LWRhcmstYmFja2dyb3VuZDogIzAwMWUwMGVlOwogIC0tc2VtaS10cmFuc3BhcmVudC1kYXJrLWJhY2tncm91bmQtMjogIzAwMWUwMDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/comments.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqKioqKioqKioqKioqKioqKlwKKiAgICAgICAgICAgICAgICAgICoKKiAgQ29tbWVudCBIZWFkZXIgICoKKiAgICAgICAgICAgICAgICAgICoKXCoqKioqKioqKioqKioqKioqKi8KLyoKCiAgICBDb21tZW50CgoqLwovKgogKiBDb21tZW50IFRlc3QKICoKICogLSBjbG91ZGhlYWQgKGh0dHA6Ly9jbG91ZGhlYWQubmV0KQogKgogKi8KLyogQ29sb3JzCiAqIC0tLS0tLQogKiAgICNFREY4RkMgKGJhY2tncm91bmQgYmx1ZSkKICogICAjMTY2Qzg5IChkYXJrZXN0IGJsdWUpCiAqCiAqIFRleHQ6CiAqICAgIzMzMyAoc3RhbmRhcmQgdGV4dCkgLy8gQSBjb21tZW50IHdpdGhpbiBhIGNvbW1lbnQhCiAqICAgIzFGOUVDOSAoc3RhbmRhcmQgbGluaykKICoKICovCi8qIEBncm91cCBWYXJpYWJsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwojY29tbWVudHMsCi5jb21tZW50cyB7CiAgLyoqLwogIGNvbG9yOiByZWQ7CiAgLyogQSBDLXN0eWxlIGNvbW1lbnQgKi8KICAvKiBBIEMtc3R5bGUgY29tbWVudCAqLwogIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsKICBmb250LXNpemU6IDEycHg7CiAgLyogbG9zdCBjb21tZW50ICovCiAgY29udGVudDogImNvbnRlbnQiOwogIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAyZW07Cn0KLyogY29tbWVudGVkIG91dAogICNtb3JlLWNvbW1lbnRzIHsKICAgIGNvbG9yOiBncmV5OwogIH0KKi8KLnNlbGVjdG9yLAoubG90cywKLmNvbW1lbnRzIHsKICBjb2xvcjogZ3JleSwgLyogYmx1ZSAqLyBvcmFuZ2U7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHggLyogd2Via2l0IG9ubHkgKi87CiAgLW1vei1ib3JkZXItcmFkaXVzOiA4cHggLyogbW96IG9ubHkgd2l0aCBvcGVyYXRpb24gKi87Cn0KLnRlc3QtcnVsZSB7CiAgY29sb3I6IDFweDsKfQouc3Itb25seS1mb2N1c2FibGUgewogIGNsaXA6IGF1dG87Cn0KQC13ZWJraXQta2V5ZnJhbWVzIGhvdmVyIHsKICAvKiBhbmQgQ2hyb21lICovCiAgMCUgewogICAgY29sb3I6IHJlZDsKICB9Cn0KI2xhc3QgewogIGNvbG9yOiBibHVlOwp9Ci8qICAqLwovKiB7ICovCi8qICAqLwovKiAgKi8KLyogICovCiNkaXYgewogIGNvbG9yOiAjQTMzOwp9Ci8qIH0gKi8KLypieSBibG9jayAqLwojb3V0cHV0LWJsb2NrIHsKICBjb21tZW50OiAvKiAvLyBOb3QgY29tbWVudGVkIG91dCAvLyAqLzsKfQovKmNvbW1lbnQgb24gbGFzdCBsaW5lKi8K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/comments2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QC13ZWJraXQta2V5ZnJhbWVzIGhvdmVyIHsKICAvKiBTYWZhcmkgYW5kIENocm9tZSAqLwp9Ci5iZyB7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCMzMzMgLyp7Y29tbWVudH0qLywgIzExMSk7Cn0KI3BsYW5hZHZpc29yLAouZmlyc3QsCi5wbGFubmluZyB7CiAgbWFyZ2luOiAxMHB4OwogIHRvdGFsLXdpZHRoOiA5NmVtOwp9Ci5zb21lLWlubGluZS1jb21tZW50cyB7CiAgYTogeWVzIC8qIGNvbW1lbnQgKi87CiAgYjogcmVkIC8qIGNvbW1lbnQgKi87CiAgYzogeWVzIC8qIGNvbW1lbnQgKi87CiAgZDogcmVkIC8qIGNvbW1lbnQgKi87Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/css-3.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNvbW1hLWRlbGltaXRlZCB7CiAgdGV4dC1zaGFkb3c6IC0xcHggLTFweCAxcHggcmVkLCA2cHggNXB4IDVweCB5ZWxsb3c7CiAgLW1vei1ib3gtc2hhZG93OiAwcHQgMHB0IDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgaW5zZXQsIDBwdCA0cHggNnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSBpbnNldDsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiBIZWFkbGluZTsKICB1bmljb2RlLXJhbmdlOiBVKz8/Pz8/PywgVSswPz8/LCBVKzAtN0YsIFUrQTU7Cn0KLm90aGVyIHsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDExZW0pIHJvdGF0ZSgtOTBkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlWCg0NWRlZyk7Cn0KLml0ZW1bZGF0YS1jcmFfenktYXR0cjFiLXV0Mz1ib2xkXSB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KcDpub3QoW2NsYXNzKj0ibGVhZCJdKSB7CiAgY29sb3I6IGJsYWNrOwp9CmlucHV0W3R5cGU9InRleHQiXS5jbGFzcyNpZFthdHRyPTMyXTpub3QoMSkgewogIGNvbG9yOiBpbmhlcml0Owp9CmRpdiNpZC5jbGFzc1thPTFdW2I9Ml0uY2xhc3M6bm90KDEpIHsKICBjb2xvcjogaW5oZXJpdDsKfQp1bC5jb21tYSA+IGxpOm5vdCg6b25seS1jaGlsZCk6OmFmdGVyIHsKICBjb2xvcjogaW5oZXJpdDsKfQpvbC5jb21tYSA+IGxpOm50aC1sYXN0LWNoaWxkKDIpOjphZnRlciB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KbGk6bnRoLWNoaWxkKDRuKzEpLApsaTpudGgtY2hpbGQoLTVuKSwKbGk6bnRoLWNoaWxkKC1uKzIpIHsKICBjb2xvcjogaW5oZXJpdDsKfQphW2hyZWZePSJodHRwOi8vIl0gewogIGNvbG9yOiBibGFjazsKfQphW2hyZWYkPSJodHRwOi8vIl0gewogIGNvbG9yOiBibGFjazsKfQpmb3JtW2RhdGEtZGlzYWJsZWRdIHsKICBjb2xvcjogYmxhY2s7Cn0KcDo6YmVmb3JlIHsKICBjb2xvcjogYmxhY2s7Cn0KI2lzc3VlMzIyIHsKICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbTIgN3MgaW5maW5pdGUgZWFzZS1pbi1vdXQ7Cn0KQC13ZWJraXQta2V5ZnJhbWVzIGZyYW1lcyB7CiAgMCUgewogICAgYm9yZGVyOiAxcHg7CiAgfQogIDUuNSUgewogICAgYm9yZGVyOiAycHg7CiAgfQogIDEwMCUgewogICAgYm9yZGVyOiAzcHg7CiAgfQp9CkBrZXlmcmFtZXMgZm9udGJ1bGdlcjEgewogIHRvIHsKICAgIGZvbnQtc2l6ZTogMTVweDsKICB9CiAgZnJvbSwKICB0byB7CiAgICBmb250LXNpemU6IDEycHg7CiAgfQogIDAlLAogIDEwMCUgewogICAgZm9udC1zaXplOiAxMnB4OwogIH0KfQpAc3VwcG9ydHMgKCBib3gtc2hhZG93OiAycHggMnB4IDJweCBibGFjayApIG9yCiAgICAgICAgICAoIC1tb3otYm94LXNoYWRvdzogMnB4IDJweCAycHggYmxhY2sgKSB7CiAgLm91dGxpbmUgewogICAgYm94LXNoYWRvdzogMnB4IDJweCAycHggYmxhY2s7CiAgICAtbW96LWJveC1zaGFkb3c6IDJweCAycHggMnB4IGJsYWNrOwogIH0KfQpALXgtZG9jdW1lbnQgdXJsLXByZWZpeCgiImdpdGh1Yi5jb20iIikgewogIGgxIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CkB2aWV3cG9ydCB7CiAgZm9udC1zaXplOiAxMHB4Owp9CkBuYW1lc3BhY2UgZm9vIHVybChodHRwOi8vd3d3LmV4YW1wbGUuY29tKTsKZm9vfGgxIHsKICBjb2xvcjogYmx1ZTsKfQpmb298KiB7CiAgY29sb3I6IHllbGxvdzsKfQoqfGgxIHsKICBjb2xvcjogZ3JlZW47Cn0KaDEgewogIGNvbG9yOiBncmVlbjsKfQoudXBwZXItdGVzdCB7CiAgVXBwZXJDYXNlUHJvcGVydGllczogYWxsb3dlZDsKfQpAaG9zdCB7CiAgZGl2IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogIH0KfQo6OmRpc3RyaWJ1dGVkKGlucHV0OjpwbGFjZWhvbGRlcikgewogIGNvbG9yOiAjYjNiM2IzOwp9Ci5zaGFkb3cgPiAuZG9tLApib2R5ID4gLnNoYWRvdyB7CiAgZGlzcGxheTogZG9uZTsKfQo6aG9zdCguc2VsIC5hKSwKOmhvc3QtY29udGV4dCguc2VsIC5iKSwKLnNlbCA+IC5iLAo6OmNvbnRlbnQgLnNlbCB7CiAgdHlwZTogc2hhZG93LWRvbTsKfQoqIGIgewogIGM6ICdkJzsKfQoqIGJbZV0gewogIGY6ICdnJzsKfQojaXNzdWUyMDY2IHsKICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvaWNvbi10ZWFtLnN2ZycpIDAgMCAvIGNvbnRhaW47Cn0KQGNvdW50ZXItc3R5bGUgdHJpYW5nbGUgewogIHN5c3RlbTogY3ljbGljOwogIHN5bWJvbHM6IOKAozsKICBzdWZmaXg6ICIgIjsKfQpALW1zLXZpZXdwb3J0IHsKfQpAdW5rbm93biBmb28gNDIgKGJhcikgewogIHggewogICAgeTogejsKICB9Cn0KQHVua25vd24gZm9vIDQzOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/css-escapes.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVzY2FwZVx8cmFuZG9tXHxjaGFyIHsKICBjb2xvcjogcmVkOwp9Ci5taXhpblwhdFVwIHsKICBmb250LXdlaWdodDogYm9sZDsKfQouXDM0IDA0IHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLlwzNCAwNCBzdHJvbmcgewogIGNvbG9yOiBmdWNoc2lhOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci50cmFpbGluZ1Rlc3RcKyB7CiAgY29sb3I6IHJlZDsKfQovKiBUaGlzIGhpZGVvdXMgdGVzdCBvZiBoaWRlb3VzbmVzcyBjaGVja3MgZm9yIHRoZSBzZWxlY3RvciAiYmxvY2txdW90ZSIgd2l0aCB2YXJpb3VzIHBlcm11dGF0aW9ucyBvZiBoZXggZXNjYXBlcyAqLwpcNjJcNmNcNmYgXDYzIFw2QiBcMDA3MSBcMDAwMDc1b1w3NCBlIHsKICBjb2xvcjogc2lsdmVyOwp9CltuZ1w6Y2xvYWtdLApuZ1w6Zm9ybSB7CiAgZGlzcGxheTogbm9uZTsKfQouYm9vdHN0cmFwIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwIFw5Owp9CnRleHRhcmVhIHsKICBmb250LWZhbWlseTogJ2hlbHZldGljYSBuZXVlJywgJ3dlbnF1YW55aSBtaWNybyBoZWknLCBcNUZBRVw4RjZGXDk2QzVcOUVEMSwgXDVCOEJcNEY1Mywgc2Fucy1zZXJpZjsKfQphbnl0aGluZyB0byB1bnF1b3RlCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/css-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LndyYXBwZXIgewogIGRpc3BsYXk6IGdyaWQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBbY29sMS1zdGFydF0gOWZyIFtjb2wxLWVuZF0gMTBweCBbY29sMi1zdGFydF0gM2ZyIFtjb2wyLWVuZF07CiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvOwp9Ci53cmFwcGVyIHsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogW2xlZnQtYm91bmRdIGF1dG8gW2NvbnRhaW5lci1sZWZ0XSAxMTcwcHggW2NvbnRhaW5lci1yaWdodF0gYXV0byBbcmlnaHQtYm91bmRdOwogIGdyaWQtdGVtcGxhdGUtcm93czogW3Jvdy0xLXN0YXJ0XSAxNDBweCBbcm93LTItc3RhcnRdIDM5MHB4IFtyb3ctMy1zdGFydF0gMjAwcHggW3Jvdy00LXN0YXJ0XSAxMjBweCBbcm93LTUtc3RhcnRdIDEyMHB4IFtyb3ctNi1zdGFydF0gMTIwcHg7Cn0KLmNvbnRhaW5lci0xMiB7CiAgei1pbmRleDogMjA7CiAgZGlzcGxheTogZ3JpZDsKICBncmlkLWNvbHVtbjogY29udGFpbmVyLWxlZnQgLyBzcGFuIDE7CiAgZ3JpZC1yb3c6IDI7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBbd3JhcGNvbC0xLXN0YXJ0XSAxZnIgW3dyYXBjb2wtMS1lbmRdIDE1cHggW3dyYXBjb2wtMi1zdGFydF0gMWZyIFt3cmFwY29sLTItZW5kXSAxNXB4IFt3cmFwY29sLTMtc3RhcnRdIDFmciBbd3JhcGNvbC0zLWVuZF0gMTVweCBbd3JhcGNvbC00LXN0YXJ0XSAxZnIgW3dyYXBjb2wtNC1lbmRdIDE1cHggW3dyYXBjb2wtNS1zdGFydF0gMWZyIFt3cmFwY29sLTUtZW5kXSAxNXB4IFt3cmFwY29sLTYtc3RhcnRdIDFmciBbd3JhcGNvbC02LWVuZF0gMTVweCBbd3JhcGNvbC03LXN0YXJ0XSAxZnIgW3dyYXBjb2wtNy1lbmRdIDE1cHggW3dyYXBjb2wtOC1zdGFydF0gMWZyIFt3cmFwY29sLTgtZW5kXSAxNXB4IFt3cmFwY29sLTktc3RhcnRdIDFmciBbd3JhcGNvbC05LWVuZF0gMTVweCBbd3JhcGNvbC0xMC1zdGFydF0gMWZyIFt3cmFwY29sLTEwLWVuZF0gMTVweCBbd3JhcGNvbC0xMS1zdGFydF0gMWZyIFt3cmFwY29sLTExLWVuZF0gMTVweCBbd3JhcGNvbC0xMi1zdGFydF0gMWZyIFt3cmFwY29sLTEyLWVuZF07CiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoMTQsIFtndXR0ZXJdIDEwcHggW3Jvd10gNjBweCk7Cn0KLndyYXBwZXIgewogIGRpc3BsYXk6IGdyaWQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA5ZnIgMS44NzVlbSAzZnI7CiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvOwogIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICJoZWFkZXIgaGVhZGVyIGhlYWRlciIgImNvbnRlbnQgLiBzaWRlYmFyIiAiZm9vdGVyIGZvb3RlciBmb290ZXIiOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/css-guards.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmxpZ2h0IHsKICBjb2xvcjogZ3JlZW47Cn0KLnNlZS10aGUgewogIGNvbG9yOiBncmVlbjsKfQouaGlkZS10aGUgewogIGNvbG9yOiBncmVlbjsKfQoubXVsdGlwbGUtY29uZGl0aW9ucy0xIHsKICBjb2xvcjogcmVkOwp9Ci5pbmhlcml0YW5jZSAudGVzdC1ydWxlIHsKICBjb2xvcjogYmxhY2s7Cn0KLmluaGVyaXRhbmNlOmhvdmVyIHsKICBjb2xvcjogcGluazsKfQouY2xzV2l0aEd1YXJkIHsKICBkaXNwYWx5OiBub25lOwp9Ci5kb250LXNwbGl0LW1lLXVwIHsKICB3aWR0aDogMXB4OwogIGNvbG9yOiByZWQ7CiAgaGVpZ2h0OiAxcHg7Cn0KKiAuZG9udC1zcGxpdC1tZS11cCB7CiAgc2libGluZzogdHJ1ZTsKfQouc2NvcGUtY2hlY2sgewogIHN1Yi1wcm9wOiAycHg7CiAgcHJvcDogMXB4Owp9Ci5zY29wZS1jaGVjay0yIHsKICBzdWItcHJvcDogMnB4OwogIHByb3A6IDFweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/detached-rulesets.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LndyYXAtc2VsZWN0b3IgewogIGNvbG9yOiBibGFjazsKICBvbmU6IDFweDsKICBmb3VyOiBtYWdpYy1mcmFtZTsKICB2aXNpYmxlLW9uZTogdmlzaWJsZTsKICB2aXNpYmxlLXR3bzogdmlzaWJsZTsKfQoud3JhcC1zZWxlY3RvciB7CiAgY29sb3I6IHJlZDsKICB2aXNpYmxlLW9uZTogdmlzaWJsZTsKICB2aXNpYmxlLXR3bzogdmlzaWJsZTsKfQoud3JhcC1zZWxlY3RvciB7CiAgY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQ6IHdoaXRlOwogIHZpc2libGUtb25lOiB2aXNpYmxlOwogIHZpc2libGUtdHdvOiB2aXNpYmxlOwp9CmhlYWRlciB7CiAgYmFja2dyb3VuZDogYmx1ZTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwKSB7CiAgaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICB9Cn0KaHRtbC5sdC1pZTkgaGVhZGVyIHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLndyYXAtc2VsZWN0b3IgewogIHRlc3Q6IGV4dHJhLXdyYXA7CiAgdmlzaWJsZS1vbmU6IHZpc2libGU7CiAgdmlzaWJsZS10d286IHZpc2libGU7Cn0KLndyYXAtc2VsZWN0b3IgLndyYXAtc2VsZWN0b3IgewogIHRlc3Q6IHdyYXBwZWQtdHdpY2U7CiAgdmlzaWJsZS1vbmU6IHZpc2libGU7CiAgdmlzaWJsZS10d286IHZpc2libGU7Cn0KLndyYXAtc2VsZWN0b3IgewogIHRlc3QtZnVuYzogOTA7CiAgdGVzdC1hcml0aG1ldGljOiAxOHB4OwogIHZpc2libGUtb25lOiB2aXNpYmxlOwogIHZpc2libGUtdHdvOiB2aXNpYmxlOwp9Ci53aXRob3V0LW1peGlucyB7CiAgYjogMTsKfQpAbWVkaWEgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgYW5kICh0dikgewogIC5teS1zZWxlY3RvciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKICB9Cn0KQG1lZGlhIChvcmllbnRhdGlvbjogcG9ydHJhaXQpIGFuZCAod2lkZXNjcmVlbikgYW5kIChwcmludCkgYW5kICh0dikgewogIC50cmlwbGUtd3JhcHBlZC1tcSB7CiAgICB0cmlwbGU6IHRydWU7CiAgfQp9CkBtZWRpYSAob3JpZW50YXRpb246IHBvcnRyYWl0KSBhbmQgKHdpZGVzY3JlZW4pIGFuZCAodHYpIHsKICAudHJpcGxlLXdyYXBwZWQtbXEgewogICAgdHJpcGxlOiB0cnVlOwogIH0KfQpAbWVkaWEgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgYW5kICh0dikgewogIC50cmlwbGUtd3JhcHBlZC1tcSB7CiAgICB0cmlwbGU6IHRydWU7CiAgfQp9Ci5hIHsKICB0ZXN0OiB0ZXN0Owp9Ci5hcmd1bWVudC1kZWZhdWx0IHsKICBkZWZhdWx0OiB3b3JrczsKICBkaXJlY3Q6IHdvcmtzOwogIG5hbWVkOiB3b3JrczsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/directives-bubling.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVudCB7CiAgY29sb3I6IGdyZWVuOwp9CkBkb2N1bWVudCB1cmwtcHJlZml4KCkgewogIC5wYXJlbnQgLmNoaWxkIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CkBzdXBwb3J0cyAoc2FuZHdpdGNoOiBidXR0ZXIpIHsKICAuaW5zaWRlIC50b3AgewogICAgcHJvcGVydHk6IHZhbHVlOwogIH0KfQpAc3VwcG9ydHMgKHNhbmR3aXRjaDogYnJlYWQpIHsKICAuaW4xIC5pbjIgewogICAgcHJvcGVydHk6IHZhbHVlOwogIH0KfQpAc3VwcG9ydHMgKHNhbmR3aXRjaDogaGFtKSB7CiAgLmluc2lkZSAudG9wIHsKICAgIHByb3BlcnR5OiB2YWx1ZTsKICB9Cn0KQHN1cHBvcnRzIChmb250LWZhbWlseTogd2VpcmRGb250KSB7CiAgQGZvbnQtZmFjZSB7CiAgICBmb250LWZhbWlseTogc29tZXRoaW5nOwogICAgc3JjOiBtYWRlLXVwLXVybDsKICB9Cn0KQGZvbnQtZmFjZSB7CiAgQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQpIHsKICAgIGZvbnQtZmFtaWx5OiBzb21ldGhpbmc7CiAgICBzcmM6IG1hZGUtdXAtdXJsOwogIH0KfQpAc3VwcG9ydHMgKHByb3BlcnR5OiB2YWx1ZSkgewogIEBtZWRpYSAobWF4LXNpemU6IDJweCkgewogICAgQHN1cHBvcnRzICh3aGF0ZXZlcjogc29tZXRoaW5nKSB7CiAgICAgIC5vdXRPZk1lZGlhICB7CiAgICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgICB9CiAgICB9CiAgfQp9CkBzdXBwb3J0cyAocHJvcGVydHk6IHZhbHVlKSB7CiAgQG1lZGlhIChtYXgtc2l6ZTogMnB4KSB7CiAgICBAc3VwcG9ydHMgKHdoYXRldmVyOiBzb21ldGhpbmcpIHsKICAgICAgLm9uVG9wICB7CiAgICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgICB9CiAgICB9CiAgfQp9CkBtZWRpYSBwcmludCB7CiAgaHRtbCB7CiAgICBpbi1odG1sOiB2aXNpYmxlOwogIH0KICBAc3VwcG9ydHMgKHVwcGVyOiB0ZXN0KSB7CiAgICBodG1sIHsKICAgICAgaW4tc3VwcG9ydHM6IGZpcnN0OwogICAgfQogICAgaHRtbCBkaXYgewogICAgICBpbi1kaXY6IHZpc2libGU7CiAgICB9CiAgICBAc3VwcG9ydHMgbm90ICgtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBzdWJwaXhlbC1hbnRpYWxpYXNlZCkgewogICAgICBodG1sIGRpdiB7CiAgICAgICAgaW4tc3VwcG9ydHM6IHNlY29uZDsKICAgICAgfQogICAgICBAbWVkaWEgc2NyZWVuIHsKICAgICAgICBodG1sIGRpdiB7CiAgICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIH0KICAgICAgICBodG1sIGRpdiBuZXN0ZWQgewogICAgICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQpAbWVkaWEgcHJpbnQgYW5kIChtYXgtc2l6ZTogMnB4KSB7CiAgLmluMSB7CiAgICBzdGF5OiBoZXJlOwogIH0KICBAc3VwcG9ydHMgbm90ICgtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBzdWJwaXhlbC1hbnRpYWxpYXNlZCkgewogICAgQHN1cHBvcnRzICh3aGF0ZXZlcjogc29tZXRoaW5nKSB7CiAgICAgIC5pbjIgLmluMSB7CiAgICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgICB9CiAgICB9CiAgfQp9Cmh0bWwgewogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQ7Cn0KQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQpIHsKICBodG1sIHsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgfQogIGh0bWwgbmVzdGVkIHsKICAgIHByb3BlcnR5OiB2YWx1ZTsKICB9Cn0KLm9uVG9wIHsKICBhbmltYXRpb246ICJ0ZXh0c2NhbGUiOwogIGZvbnQtZmFtaWx5OiBzb21ldGhpbmc7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6IHNvbWV0aGluZzsKICBzcmM6IG1hZGUtdXAtdXJsOwp9CkBrZXlmcmFtZXMgInRleHRzY2FsZSIgewogIDAlIHsKICAgIGZvbnQtc2l6ZTogMWVtOwogIH0KICAxMDAlIHsKICAgIGZvbnQtc2l6ZTogMmVtOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/empty.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/extend-chaining.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEsCi5iLAouYyB7CiAgY29sb3I6IGJsYWNrOwp9Ci5mLAouZSwKLmQgewogIGNvbG9yOiBibGFjazsKfQouZy5oLAouaS5qLmgsCi5rLmouaCB7CiAgY29sb3I6IGJsYWNrOwp9Ci5pLmosCi5rLmogewogIGNvbG9yOiBpbmhlcml0Owp9Ci5sLAoubSwKLm4sCi5vLAoucCwKLnEsCi5yLAoucywKLnQgewogIGNvbG9yOiBibGFjazsKfQoudSwKLnYudS52IHsKICBjb2xvcjogYmxhY2s7Cn0KLncsCi52LncudiB7CiAgY29sb3I6IGJsYWNrOwp9Ci54LAoueSwKLnogewogIGNvbG9yOiB4Owp9Ci55LAoueiwKLnggewogIGNvbG9yOiB5Owp9Ci56LAoueCwKLnkgewogIGNvbG9yOiB6Owp9Ci52YSwKLnZiLAoudmMgewogIGNvbG9yOiBibGFjazsKfQoudmIsCi52YyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KQG1lZGlhICh0dikgewogIC5tYSwKICAubWIsCiAgLm1jIHsKICAgIGNvbG9yOiBibGFjazsKICB9CiAgLm1kLAogIC5tYSwKICAubWIsCiAgLm1jIHsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KfQpAbWVkaWEgKHR2KSBhbmQgKHBsYXNtYSkgewogIC5tZSwKICAubWYgewogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/extend-clearfix.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsZWFyZml4LAouZm9vLAouYmFyIHsKICAqem9vbTogMTsKfQouY2xlYXJmaXg6YWZ0ZXIsCi5mb286YWZ0ZXIsCi5iYXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGJsb2NrOwogIGNsZWFyOiBib3RoOwogIGhlaWdodDogMDsKfQouZm9vIHsKICBjb2xvcjogcmVkOwp9Ci5iYXIgewogIGNvbG9yOiBibHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/extend-exact.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnJlcGxhY2UucmVwbGFjZSAucmVwbGFjZSwKLmMucmVwbGFjZSArIC5yZXBsYWNlIC5yZXBsYWNlLAoucmVwbGFjZS5yZXBsYWNlIC5jLAouYy5yZXBsYWNlICsgLnJlcGxhY2UgLmMsCi5yZXBfYWNlIHsKICBwcm9wOiBjb3B5LXBhc3RlLXJlcGxhY2U7Cn0KLmEgLmIgLmMgewogIHByb3A6IG5vdF9lZmZlY3RlZDsKfQouYSwKLmVmZmVjdGVkIHsKICBwcm9wOiBpc19lZmZlY3RlZDsKfQouYSAuYiB7CiAgcHJvcDogbm90X2VmZmVjdGVkOwp9Ci5hIC5iLmMgewogIHByb3A6IG5vdF9lZmZlY3RlZDsKfQouYyAuYiAuYSwKLmEgLmIgLmEsCi5jIC5hIC5hLAouYSAuYSAuYSwKLmMgLmIgLmMsCi5hIC5iIC5jLAouYyAuYSAuYywKLmEgLmEgLmMgewogIHByb3A6IG5vdF9lZmZlY3RlZDsKfQouZS5lLAouZGJsIHsKICBwcm9wOiBleHRlbmQtZG91YmxlOwp9Ci5lLmU6aG92ZXIgewogIGhvdmVyOiBub3QtZXh0ZW5kZWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/extend-media.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV4dDEgLmV4dDIsCi5hbGwgLmV4dDIgewogIGJhY2tncm91bmQ6IGJsYWNrOwp9CkBtZWRpYSAodHYpIHsKICAuZXh0MSAuZXh0MywKICAudHYtbG93cmVzIC5leHQzLAogIC5hbGwgLmV4dDMgewogICAgY29sb3I6IGluaGVyaXQ7CiAgfQogIC50di1sb3dyZXMgewogICAgYmFja2dyb3VuZDogYmx1ZTsKICB9Cn0KQG1lZGlhICh0dikgYW5kIChoaXJlcykgewogIC5leHQxIC5leHQ0LAogIC50di1oaXJlcyAuZXh0NCwKICAuYWxsIC5leHQ0IHsKICAgIGNvbG9yOiBncmVlbjsKICB9CiAgLnR2LWhpcmVzIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/extend-nest.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNpZGViYXIsCi5zaWRlYmFyMiwKLnR5cGUxIC5zaWRlYmFyMywKLnR5cGUyLnNpZGViYXI0IHsKICB3aWR0aDogMzAwcHg7CiAgYmFja2dyb3VuZDogcmVkOwp9Ci5zaWRlYmFyIC5ib3gsCi5zaWRlYmFyMiAuYm94LAoudHlwZTEgLnNpZGViYXIzIC5ib3gsCi50eXBlMi5zaWRlYmFyNCAuYm94IHsKICBiYWNrZ3JvdW5kOiAjRkZGOwogIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgbWFyZ2luOiAxMHB4IDA7Cn0KLnNpZGViYXIyIHsKICBiYWNrZ3JvdW5kOiBibHVlOwp9Ci50eXBlMSAuc2lkZWJhcjMgewogIGJhY2tncm91bmQ6IGdyZWVuOwp9Ci50eXBlMi5zaWRlYmFyNCB7CiAgYmFja2dyb3VuZDogcmVkOwp9Ci5idXR0b24sCi5zdWJtaXQgewogIGNvbG9yOiBibGFjazsKfQouYnV0dG9uOmhvdmVyLAouc3VibWl0OmhvdmVyIHsKICBjb2xvcjogaW5oZXJpdDsKfQouYnV0dG9uMiA6aG92ZXIgewogIG5lc3RlZDogd2hpdGU7Cn0KLmJ1dHRvbjIgOmhvdmVyIHsKICBub3RuZXN0ZWQ6IGJsYWNrOwp9Ci5hbXAtdGVzdC1oLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYS5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYS5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWEuYW1wLXRlc3QtZC5hbXAtdGVzdC1hLmFtcC10ZXN0LWUuYW1wLXRlc3QtZywKLmFtcC10ZXN0LWYuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWIuYW1wLXRlc3QtZSArIC5hbXAtdGVzdC1jIC5hbXAtdGVzdC1hLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lLmFtcC10ZXN0LWcsCi5hbXAtdGVzdC1mLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUgKyAuYW1wLXRlc3QtYyAuYW1wLXRlc3QtYi5hbXAtdGVzdC1kLmFtcC10ZXN0LWEuYW1wLXRlc3QtZS5hbXAtdGVzdC1nLAouYW1wLXRlc3QtZi5hbXAtdGVzdC1jIC5hbXAtdGVzdC1iLmFtcC10ZXN0LWQuYW1wLXRlc3QtYi5hbXAtdGVzdC1lICsgLmFtcC10ZXN0LWMgLmFtcC10ZXN0LWIuYW1wLXRlc3QtZC5hbXAtdGVzdC1iLmFtcC10ZXN0LWUuYW1wLXRlc3QtZyB7CiAgdGVzdDogZXh0ZW5kZWQgYnkgbWFzc2VzIG9mIHNlbGVjdG9yczsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/extend-selector.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVycm9yLAouYmFkRXJyb3IgewogIGJvcmRlcjogMXB4ICNmMDA7CiAgYmFja2dyb3VuZDogI2ZkZDsKfQouZXJyb3IuaW50cnVzaW9uLAouYmFkRXJyb3IuaW50cnVzaW9uIHsKICBmb250LXNpemU6IDEuM2VtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5pbnRydXNpb24gLmVycm9yLAouaW50cnVzaW9uIC5iYWRFcnJvciB7CiAgZGlzcGxheTogbm9uZTsKfQouYmFkRXJyb3IgewogIGJvcmRlci13aWR0aDogM3B4Owp9Ci5mb28gLmJhciwKLmZvbyAuYmF6LAouZXh0MSAuZXh0MiAuYmFyLAouZXh0MSAuZXh0MiAuYmF6LAouZXh0MyAuYmFyLAouZXh0MyAuYmF6LAouZXh0NCAuYmFyLAouZXh0NCAuYmF6IHsKICBkaXNwbGF5OiBub25lOwp9CmRpdi5leHQ1LAouZXh0NiA+IC5leHQ1LApkaXYuZXh0NywKLmV4dDYgPiAuZXh0NyB7CiAgd2lkdGg6IDEwMHB4Owp9Ci5leHQsCi5hIC5jLAouYiAuYyB7CiAgdGVzdDogMTsKfQouYSwKLmIgewogIHRlc3Q6IDI7Cn0KLmEgLmMsCi5iIC5jIHsKICB0ZXN0OiAzOwp9Ci5hIC5jIC5kLAouYiAuYyAuZCB7CiAgdGVzdDogNDsKfQoucmVwbGFjZS5yZXBsYWNlIC5yZXBsYWNlLAouYy5yZXBsYWNlICsgLnJlcGxhY2UgLnJlcGxhY2UsCi5yZXBsYWNlLnJlcGxhY2UgLmMsCi5jLnJlcGxhY2UgKyAucmVwbGFjZSAuYywKLnJlcF9hY2UucmVwX2FjZSAucmVwX2FjZSwKLmMucmVwX2FjZSArIC5yZXBfYWNlIC5yZXBfYWNlLAoucmVwX2FjZS5yZXBfYWNlIC5jLAouYy5yZXBfYWNlICsgLnJlcF9hY2UgLmMgewogIHByb3A6IGNvcHktcGFzdGUtcmVwbGFjZTsKfQouYXR0cmlidXRlcyBbZGF0YT0idGVzdCJdLAouYXR0cmlidXRlcyAuYXR0cmlidXRlcyAuYXR0cmlidXRlLXRlc3QgewogIGV4dGVuZDogYXR0cmlidXRlczsKfQouYXR0cmlidXRlcyBbZGF0YV0sCi5hdHRyaWJ1dGVzIC5hdHRyaWJ1dGVzIC5hdHRyaWJ1dGUtdGVzdDIgewogIGV4dGVuZDogYXR0cmlidXRlczI7Cn0KLmF0dHJpYnV0ZXMgW2RhdGE9InRlc3QzIl0sCi5hdHRyaWJ1dGVzIC5hdHRyaWJ1dGVzIC5hdHRyaWJ1dGUtdGVzdCB7CiAgZXh0ZW5kOiBhdHRyaWJ1dGVzMjsKfQouaGVhZGVyIC5oZWFkZXItbmF2LAouZm9vdGVyIC5mb290ZXItbmF2IHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLmhlYWRlciAuaGVhZGVyLW5hdjpiZWZvcmUsCi5mb290ZXIgLmZvb3Rlci1uYXY6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiBibHVlOwp9Ci5pc3N1ZS0yNTg2LWJvcmRlcmVkLAouaXNzdWUtMjU4Ni1zb21lcGFnZSAuY29udGVudCB7CiAgYm9yZGVyOiBzb2xpZCAxcHggYmxhY2s7Cn0KLmlzc3VlLTI1ODYtc29tZXBhZ2UgLmNvbnRlbnQgPiBzcGFuIHsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/extend.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVycm9yLAouYmFkRXJyb3IgewogIGJvcmRlcjogMXB4ICNmMDA7CiAgYmFja2dyb3VuZDogI2ZkZDsKfQouZXJyb3IuaW50cnVzaW9uLAouYmFkRXJyb3IuaW50cnVzaW9uIHsKICBmb250LXNpemU6IDEuM2VtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5pbnRydXNpb24gLmVycm9yLAouaW50cnVzaW9uIC5iYWRFcnJvciB7CiAgZGlzcGxheTogbm9uZTsKfQouYmFkRXJyb3IgewogIGJvcmRlci13aWR0aDogM3B4Owp9Ci5mb28gLmJhciwKLmZvbyAuYmF6LAouZXh0MSAuZXh0MiAuYmFyLAouZXh0MSAuZXh0MiAuYmF6LAouZXh0MyAuYmFyLAouZXh0MyAuYmF6LAouZm9vIC5leHQzLAouZXh0NCAuYmFyLAouZXh0NCAuYmF6LAouZm9vIC5leHQ0IHsKICBkaXNwbGF5OiBub25lOwp9CmRpdi5leHQ1LAouZXh0NiA+IC5leHQ1LApkaXYuZXh0NywKLmV4dDYgPiAuZXh0NyB7CiAgd2lkdGg6IDEwMHB4Owp9Ci5leHQ4LmV4dDksCi5mdXUgewogIHJlc3VsdDogYWRkLWZvbzsKfQouZXh0OCAuZXh0OSwKLmV4dDggKyAuZXh0OSwKLmV4dDggPiAuZXh0OSwKLmJ1dSwKLnphcCwKLnpvbyB7CiAgcmVzdWx0OiBiYXItbWF0Y2hlZDsKfQouZXh0OC5ub21hdGNoIHsKICByZXN1bHQ6IG5vbmU7Cn0KLmV4dDggLmV4dDksCi5idXUgewogIHJlc3VsdDogbWF0Y2gtbmVzdGVkLWJhcjsKfQouZXh0OC5leHQ5LAouZnV1IHsKICByZXN1bHQ6IG1hdGNoLW5lc3RlZC1mb287Cn0KLmFhLAouY2MgewogIGNvbG9yOiBibGFjazsKfQouYWEgLmRkLAouYWEgLmVlIHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLmJiLAouY2MsCi5lZSwKLmZmIHsKICBiYWNrZ3JvdW5kOiByZWQ7Cn0KLmJiIC5iYiwKLmZmIC5mZiB7CiAgY29sb3I6IGJsYWNrOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/extract-and-length.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm11bHRpdW5pdCB7CiAgbGVuZ3RoOiA2OwogIGV4dHJhY3Q6IGFiYyAiYWJjIiAxIDFweCAxJSAjMTIzOwp9Ci5pbmNvcnJlY3QtaW5kZXggewogIHYxOiBleHRyYWN0KGEgYiBjLCA1KTsKICB2MjogZXh0cmFjdChhLCBiLCBjLCAtMik7Cn0KLnNjYWxhciB7CiAgdmFyLXZhbHVlOiB2YXJpYWJsZTsKICB2YXItbGVuZ3RoOiAxOwogIGlsbC1pbmRleDogZXh0cmFjdCh2YXJpYWJsZSwgMik7CiAgbmFtZS12YWx1ZTogbmFtZTsKICBzdHJpbmctdmFsdWU6ICJzdHJpbmciOwogIG51bWJlci12YWx1ZTogMTIzNDU2Nzg7CiAgY29sb3ItdmFsdWU6IGJsdWU7CiAgcmdiYS12YWx1ZTogcmdiYSg4MCwgMTYwLCAyNDAsIDAuNjcpOwogIGVtcHR5LXZhbHVlOiA7CiAgbmFtZS1sZW5ndGg6IDE7CiAgc3RyaW5nLWxlbmd0aDogMTsKICBudW1iZXItbGVuZ3RoOiAxOwogIGNvbG9yLWxlbmd0aDogMTsKICByZ2JhLWxlbmd0aDogMTsKICBlbXB0eS1sZW5ndGg6IDE7Cn0KLm1peGluLWFyZ3VtZW50cy0xIHsKICBsZW5ndGg6IDQ7CiAgZXh0cmFjdDogYyB8IGIgfCBhOwp9Ci5taXhpbi1hcmd1bWVudHMtMiB7CiAgbGVuZ3RoOiA0OwogIGV4dHJhY3Q6IGMgfCBiIHwgYTsKfQoubWl4aW4tYXJndW1lbnRzLTMgewogIGxlbmd0aDogNDsKICBleHRyYWN0OiBjIHwgYiB8IGE7Cn0KLm1peGluLWFyZ3VtZW50cy00IHsKICBsZW5ndGg6IDA7CiAgZXh0cmFjdDogZXh0cmFjdCgsIDIpIHwgZXh0cmFjdCgsIDEpOwp9Ci5taXhpbi1hcmd1bWVudHMtMiB7CiAgbGVuZ3RoOiA0OwogIGV4dHJhY3Q6IGMgfCBiIHwgYTsKfQoubWl4aW4tYXJndW1lbnRzLTMgewogIGxlbmd0aDogNDsKICBleHRyYWN0OiBjIHwgYiB8IGE7Cn0KLm1peGluLWFyZ3VtZW50cy00IHsKICBsZW5ndGg6IDM7CiAgZXh0cmFjdDogYyB8IGI7Cn0KLm1peGluLWFyZ3VtZW50cy0yIHsKICBsZW5ndGg6IDQ7CiAgZXh0cmFjdDogMyB8IDIgfCAxOwp9Ci5taXhpbi1hcmd1bWVudHMtMyB7CiAgbGVuZ3RoOiA0OwogIGV4dHJhY3Q6IDMgfCAyIHwgMTsKfQoubWl4aW4tYXJndW1lbnRzLTQgewogIGxlbmd0aDogMzsKICBleHRyYWN0OiAzIHwgMjsKfQoubWQtc3BhY2UtY29tbWEgewogIGxlbmd0aC0xOiAzOwogIGV4dHJhY3QtMTogMSAyIDM7CiAgbGVuZ3RoLTI6IDM7CiAgZXh0cmFjdC0yOiAyOwp9Ci5tZC1zcGFjZS1jb21tYS1hcy1hcmdzLTIgewogIGxlbmd0aDogMzsKICBleHRyYWN0OiAieCIgInkiICJ6IiB8IDEgMiAzIHwgYSBiIGM7Cn0KLm1kLXNwYWNlLWNvbW1hLWFzLWFyZ3MtMyB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiAieSIgInoiIHwgMSAyIDMgfCBhIGIgYzsKfQoubWQtc3BhY2UtY29tbWEtYXMtYXJncy00IHsKICBsZW5ndGg6IDI7CiAgZXh0cmFjdDogIngiICJ5IiAieiIgfCAxIDIgMzsKfQoubWQtY2F0LXNwYWNlLWNvbW1hIHsKICBsZW5ndGgtMTogMzsKICBleHRyYWN0LTE6IDEgMiAzOwogIGxlbmd0aC0yOiAzOwogIGV4dHJhY3QtMjogMjsKfQoubWQtY2F0LXNwYWNlLWNvbW1hLWFzLWFyZ3MtMiB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiAieSIgInoiIHwgMSAyIDMgfCBhIGIgYzsKfQoubWQtY2F0LXNwYWNlLWNvbW1hLWFzLWFyZ3MtMyB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiAieSIgInoiIHwgMSAyIDMgfCBhIGIgYzsKfQoubWQtY2F0LXNwYWNlLWNvbW1hLWFzLWFyZ3MtNCB7CiAgbGVuZ3RoOiAyOwogIGV4dHJhY3Q6ICJ4IiAieSIgInoiIHwgMSAyIDM7Cn0KLm1kLWNhdC1jb21tYS1zcGFjZSB7CiAgbGVuZ3RoLTE6IDM7CiAgZXh0cmFjdC0xOiAxLCAyLCAzOwogIGxlbmd0aC0yOiAzOwogIGV4dHJhY3QtMjogMjsKfQoubWQtY2F0LWNvbW1hLXNwYWNlLWFzLWFyZ3MtMSB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiwgInkiLCAieiIgfCAxLCAyLCAzIHwgYSwgYiwgYzsKfQoubWQtY2F0LWNvbW1hLXNwYWNlLWFzLWFyZ3MtMiB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiwgInkiLCAieiIgfCAxLCAyLCAzIHwgYSwgYiwgYzsKfQoubWQtY2F0LWNvbW1hLXNwYWNlLWFzLWFyZ3MtMyB7CiAgbGVuZ3RoOiAzOwogIGV4dHJhY3Q6ICJ4IiwgInkiLCAieiIgfCAxLCAyLCAzIHwgYSwgYiwgYzsKfQoubWQtY2F0LWNvbW1hLXNwYWNlLWFzLWFyZ3MtNCB7CiAgbGVuZ3RoOiAwOwogIGV4dHJhY3Q6IGV4dHJhY3QoLCAyKSB8IGV4dHJhY3QoLCAxKTsKfQoubWQtM0QgewogIGxlbmd0aC0xOiAyOwogIGV4dHJhY3QtMTogYSBiIGMgZCwgMSAyIDMgNDsKICBsZW5ndGgtMjogMjsKICBleHRyYWN0LTI6IDUgNiA3IDg7CiAgbGVuZ3RoLTM6IDQ7CiAgZXh0cmFjdC0zOiA3OwogIGxlbmd0aC00OiAxOwogIGV4dHJhY3QtNDogODsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/functions-each.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNlbC1ibHVlIHsKICBhOiBiOwp9Ci5zZWwtZ3JlZW4gewogIGE6IGI7Cn0KLnNlbC1yZWQgewogIGE6IGI7Cn0KLmVhY2ggewogIGluZGV4OiAxLCAyLCAzLCA0OwogIGl0ZW0xOiBhOwogIGl0ZW0yOiBiOwogIGl0ZW0zOiBjOwogIGl0ZW00OiBkOwogIG5lc3QtMS0xOiAxMHB4IDE7CiAgbmVzdC0yLTE6IDE1cHggMjsKICBuZXN0LTEtMjogMjBweCAxOwogIG5lc3QtMi0yOiAyNXB4IDI7CiAgcGFkZGluZzogMTBweCAyMHB4IDMwcHggNDBweDsKfQouZWFjaCAubmVzdC1hbm9uIHsKICBuZXN0LTEtMTogYSBjOwogIG5lc3QtMS0yOiBhIGQ7CiAgbmVzdC0yLTE6IGIgYzsKICBuZXN0LTItMjogYiBkOwp9Ci5zZXQgewogIG9uZTogYmx1ZTsKICB0d286IGdyZWVuOwogIHRocmVlOiByZWQ7Cn0KLnNldC0yIHsKICBvbmUtMTogYmx1ZTsKICB0d28tMjogZ3JlZW47CiAgdGhyZWUtMzogcmVkOwp9Ci5zaW5nbGUgewogIHZhbDogdHJ1ZTsKICB2YWwyOiAyOwogIHZhbDM6IDQ7Cn0KLmNvbHVtbi1saXN0IHsKICBsaXN0OiAxIDIgMyA0Owp9Ci5jb2wtMSB7CiAgd2lkdGg6IDI1JTsKfQouY29sLTIgewogIHdpZHRoOiAyNSU7Cn0KLmNvbC0zIHsKICB3aWR0aDogMjUlOwp9Ci5jb2wtNCB7CiAgd2lkdGg6IDI1JTsKfQoucm93LTEgewogIHdpZHRoOiAxMHB4Owp9Ci5yb3ctMiB7CiAgd2lkdGg6IDIwcHg7Cn0KLnJvdy0zIHsKICB3aWR0aDogMzBweDsKfQouYm94IHsKICAtbGVzcy1sb2c6IGE7CiAgLWxlc3MtbG9nOiBiOwogIC1sZXNzLWxvZzogYzsKICAtbGVzcy1sb2c6IGQ7Cn0KLnRlc3QtcnVsZSB7CiAgY29sb3I6IGJsdWU7CiAgY29sb3I6IHJlZDsKfQouZm9vIHsKICBjb250ZW50OiByZWQ7Cn0KLmJhciB7CiAgY29udGVudDogYmx1ZTsKfQpzcGFuIHsKICBjb250ZW50OiAnZm9vJzsKICBjb250ZW50OiAnYmFyJzsKfQpkaXYgewogIGNvbnRlbnQ6ICdmb28nOwp9Ci5hIC53LTEgewogIHdpZHRoOiA5MCAxMDAgMTEwOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/functions.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2Z1bmN0aW9ucyB7CiAgY29sb3I6ICM2NjAwMDA7CiAgd2lkdGg6IDE2OwogIGhlaWdodDogdW5kZWZpbmVkKCJzZWxmIik7CiAgYm9yZGVyLXdpZHRoOiA1OwogIHZhcmlhYmxlOiAxMTsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoIzAwMCwgI2ZmZik7Cn0KI2J1aWx0LWluIHsKICBlc2NhcGVkOiAtU29tZTo6d2VpcmQoI3RoaW5nLCB5KTsKICBsaWdodGVuOiAjZmZjY2NjOwogIGxpZ2h0ZW4tcmVsYXRpdmU6ICNmZjY2NjY7CiAgZGFya2VuOiAjMzMwMDAwOwogIGRhcmtlbi1yZWxhdGl2ZTogIzk5MDAwMDsKICBzYXR1cmF0ZTogIzIwM2MzMTsKICBzYXR1cmF0ZS1yZWxhdGl2ZTogIzI4MzQyZjsKICBkZXNhdHVyYXRlOiAjMjkzMzJmOwogIGRlc2F0dXJhdGUtcmVsYXRpdmU6ICMyMzM5MzA7CiAgZ3JleXNjYWxlOiAjMmUyZTJlOwogIGhzbC1jbGFtcDogaHNsKDAsIDAlLCAxMDAlKTsKICBzcGluLXA6IGhzbCgyMCwgNTAlLCA1MCUpOwogIHNwaW4tbjogaHNsKDM1MCwgNTAlLCA1MCUpOwogIGx1bWEtd2hpdGU6IDEwMCU7CiAgbHVtYS1ibGFjazogMCU7CiAgbHVtYS1ibGFjay1hbHBoYTogMCU7CiAgbHVtYS1yZWQ6IDIxLjI2JTsKICBsdW1hLWdyZWVuOiA3MS41MiU7CiAgbHVtYS1ibHVlOiA3LjIyJTsKICBsdW1hLXllbGxvdzogOTIuNzglOwogIGx1bWEtY3lhbjogNzguNzQlOwogIGx1bWEtZGlmZmVycy1mcm9tLWx1bWluYW5jZTogMjMuODk4MzMzNDklOwogIGx1bWluYW5jZS13aGl0ZTogMTAwJTsKICBsdW1pbmFuY2UtYmxhY2s6IDAlOwogIGx1bWluYW5jZS1ibGFjay1hbHBoYTogMCU7CiAgbHVtaW5hbmNlLXJlZDogMjEuMjYlOwogIGx1bWluYW5jZS1kaWZmZXJzLWZyb20tbHVtYTogMzYuNDA1NDExNzYlOwogIGNvbnRyYXN0LWZpbHRlcjogY29udHJhc3QoMzAlKTsKICBzYXR1cmF0ZS1maWx0ZXI6IHNhdHVyYXRlKDUlKTsKICBjb250cmFzdC13aGl0ZTogIzAwMDAwMDsKICBjb250cmFzdC1ibGFjazogI2ZmZmZmZjsKICBjb250cmFzdC1yZWQ6ICNmZmZmZmY7CiAgY29udHJhc3QtZ3JlZW46ICMwMDAwMDA7CiAgY29udHJhc3QtYmx1ZTogI2ZmZmZmZjsKICBjb250cmFzdC15ZWxsb3c6ICMwMDAwMDA7CiAgY29udHJhc3QtY3lhbjogIzAwMDAwMDsKICBjb250cmFzdC1saWdodDogIzExMTExMTsKICBjb250cmFzdC1kYXJrOiAjZWVlZWVlOwogIGNvbnRyYXN0LXdyb25nb3JkZXI6ICMxMTExMTE7CiAgY29udHJhc3QtbGlnaHQtdGhyZXNoOiAjMTExMTExOwogIGNvbnRyYXN0LWRhcmstdGhyZXNoOiAjZWVlZWVlOwogIGNvbnRyYXN0LWhpZ2gtdGhyZXNoOiAjZWVlZWVlOwogIGNvbnRyYXN0LWxvdy10aHJlc2g6ICMxMTExMTE7CiAgY29udHJhc3QtbGlnaHQtdGhyZXNoLXBlcjogIzExMTExMTsKICBjb250cmFzdC1kYXJrLXRocmVzaC1wZXI6ICNlZWVlZWU7CiAgY29udHJhc3QtaGlnaC10aHJlc2gtcGVyOiAjZWVlZWVlOwogIGNvbnRyYXN0LWxvdy10aHJlc2gtcGVyOiAjMTExMTExOwogIHJlcGxhY2U6ICJIZWxsbywgV29ybGQhIjsKICByZXBsYWNlLWNhcHR1cmVkOiAiVGhpcyBpcyBhIG5ldyBzdHJpbmcuIjsKICByZXBsYWNlLXdpdGgtZmxhZ3M6ICIyICsgMiA9IDQiOwogIHJlcGxhY2Utc2luZ2xlLXF1b3RlZDogJ2Zvby0yJzsKICByZXBsYWNlLWVzY2FwZWQtc3RyaW5nOiBiYXItMjsKICByZXBsYWNlLWtleXdvcmQ6IGJhei0yOwogIHJlcGxhY2Utd2l0aC1jb2xvcjogIiMxMzUjMTM1NyI7CiAgcmVwbGFjZS13aXRoLW51bWJlcjogIjJlbTA3IjsKICBmb3JtYXQ6ICJyZ2IoMzIsIDEyOCwgNjQpIjsKICBmb3JtYXQtc3RyaW5nOiAiaGVsbG8gd29ybGQiOwogIGZvcm1hdC1tdWx0aXBsZTogImhlbGxvIGVhcnRoIDIiOwogIGZvcm1hdC11cmwtZW5jb2RlOiAicmVkIGlzICUyM2ZmMDAwMCI7CiAgZm9ybWF0LXNpbmdsZS1xdW90ZWQ6ICdoZWxsbyBzaW5nbGUgd29ybGQnOwogIGZvcm1hdC1lc2NhcGVkLXN0cmluZzogaGVsbG8gZXNjYXBlZCB3b3JsZDsKICBmb3JtYXQtY29sb3ItYXMtc3RyaW5nOiAiIzEyMyI7CiAgZm9ybWF0LW51bWJlci1hcy1zdHJpbmc6ICI0cHgiOwogIGVmb3JtYXQ6IHJnYigzMiwgMTI4LCA2NCk7CiAgdW5pdGxlc3M6IDEyOwogIHVuaXQ6IDE0ZW07CiAgdW5pdHBlcmNlbnRhZ2U6IDEwMCU7CiAgZ2V0LXVuaXQ6IHB4OwogIGdldC11bml0LWVtcHR5OiA7CiAgaHVlOiA5ODsKICBzYXR1cmF0aW9uOiAxMiU7CiAgbGlnaHRuZXNzOiA5NSU7CiAgaHN2aHVlOiA5ODsKICBoc3ZzYXR1cmF0aW9uOiAxMiU7CiAgaHN2dmFsdWU6IDk1JTsKICByZWQ6IDI1NTsKICBncmVlbjogMjU1OwogIGJsdWU6IDI1NTsKICByb3VuZGVkOiAxMTsKICByb3VuZGVkLXR3bzogMTAuNjc7CiAgcm91bmRlZHB4OiAzcHg7CiAgcm91bmRlZHB4LXRocmVlOiAzLjMzM3B4OwogIHJvdW5kZWQtcGVyY2VudGFnZTogMTAlOwogIGNlaWw6IDExcHg7CiAgZmxvb3I6IDEycHg7CiAgc3FydDogNXB4OwogIHBpOiAzLjE0MTU5MjY1OwogIG1vZDogMm07CiAgYWJzOiA0JTsKICB0YW46IDAuOTAwNDA0MDQ7CiAgc2luOiAwLjE3MzY0ODE4OwogIGNvczogMC44NDM4NTM5NjsKICBhdGFuOiAwLjFyYWQ7CiAgYXRhbjogMzRkZWc7CiAgYXRhbjogNDVkZWc7CiAgcG93OiA2NHB4OwogIHBvdzogNjQ7CiAgcG93OiAyNzsKICBtaW46IDA7CiAgbWluOiA1OwogIG1pbjogMXB0OwogIG1pbjogM21tOwogIG1heDogMzsKICBtYXg6IDVlbTsKICBwZXJjZW50YWdlOiAyMCU7CiAgY29sb3ItcXVvdGVkLWRpZ2l0OiAjZGRhMGRkOwogIGNvbG9yLXF1b3RlZC1rZXl3b3JkOiAjZGRhMGRkOwogIGNvbG9yLWNvbG9yOiAjZGRhMGRkOwogIGNvbG9yLWtleXdvcmQ6ICNkZGEwZGQ7CiAgdGludDogIzg5ODk4OTsKICB0aW50LWZ1bGw6ICNmZmZmZmY7CiAgdGludC1wZXJjZW50OiAjODk4OTg5OwogIHRpbnQtbmVnYXRpdmU6ICM2NTY1NjU7CiAgc2hhZGU6ICM2ODY4Njg7CiAgc2hhZGUtZnVsbDogIzAwMDAwMDsKICBzaGFkZS1wZXJjZW50OiAjNjg2ODY4OwogIHNoYWRlLW5lZ2F0aXZlOiAjODY4Njg2OwogIGZhZGUtb3V0OiByZ2JhKDI1NSwgMCwgMCwgMC45NSk7CiAgZmFkZS1pbjogcmdiYSgyNTUsIDAsIDAsIDAuOTUpOwogIGZhZGUtb3V0LXJlbGF0aXZlOiByZ2JhKDI1NSwgMCwgMCwgMC45NSk7CiAgZmFkZS1pbi1yZWxhdGl2ZTogcmdiYSgyNTUsIDAsIDAsIDAuOTQ1KTsKICBmYWRlLW91dDI6IHJnYmEoMjU1LCAwLCAwLCAwKTsKICBmYWRlLW91dDItcmVsYXRpdmU6IHJnYmEoMjU1LCAwLCAwLCAwLjI1KTsKICBoc3Y6ICM0ZDI5MjY7CiAgaHN2YTogcmdiYSg3NywgNDAsIDM4LCAwLjIpOwogIG1peDogI2ZmMzMwMDsKICBtaXgtMDogI2ZmZmYwMDsKICBtaXgtMTAwOiAjZmYwMDAwOwogIG1peC13ZWlnaHRsZXNzOiAjZmY4MDAwOwogIG1peHQ6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOwp9CiNidWlsdC1pbiAuaXMtYSB7CiAgcnVsZXNldDogdHJ1ZTsKICBjb2xvcjogdHJ1ZTsKICBjb2xvcjE6IHRydWU7CiAgY29sb3IyOiB0cnVlOwogIGNvbG9yMzogdHJ1ZTsKICBrZXl3b3JkOiB0cnVlOwogIG51bWJlcjogdHJ1ZTsKICBzdHJpbmc6IHRydWU7CiAgcGl4ZWw6IHRydWU7CiAgcGVyY2VudDogdHJ1ZTsKICBlbTogdHJ1ZTsKICBleDogdHJ1ZTsKICByZW06IHRydWU7CiAgdnc6IHRydWU7CiAgdmg6IHRydWU7CiAgdm1pbjogdHJ1ZTsKICB2bWF4OiB0cnVlOwogIGNoOiB0cnVlOwogIGNtOiB0cnVlOwogIG1tOiB0cnVlOwogIHB0OiB0cnVlOwogIHE6IHRydWU7CiAgaW46IHRydWU7CiAgY2F0OiB0cnVlOwogIG5vLXVuaXQtaXMtZW1wdHk6IHRydWU7CiAgY2FzZS1pbnNlbnNpdGl2ZS0xOiB0cnVlOwogIGNhc2UtaW5zZW5zaXRpdmUtMjogdHJ1ZTsKfQojYWxwaGEgewogIGFscGhhOiBoc2xhKDI1LCA1MCUsIDQwJSwgMC42KTsKICBhbHBoYTI6IDAuNTsKICBhbHBoYTM6IDA7Cn0KI2JsZW5kbW9kZXMgewogIG11bHRpcGx5OiAjZWQwMDAwOwogIHNjcmVlbjogI2Y2MDBmNjsKICBvdmVybGF5OiAjZWQwMDAwOwogIHNvZnRsaWdodDogI2ZhMDAwMDsKICBoYXJkbGlnaHQ6ICMwMDAwZWQ7CiAgZGlmZmVyZW5jZTogI2Y2MDBmNjsKICBleGNsdXNpb246ICNmNjAwZjY7CiAgYXZlcmFnZTogIzdiMDA3YjsKICBuZWdhdGlvbjogI2Q3MzEzMTsKfQojZXh0cmFjdC1hbmQtbGVuZ3RoIHsKICBleHRyYWN0OiAzIDIgMSBDIEIgQTsKICBsZW5ndGg6IDY7Cn0KI3F1b3RlZC1mdW5jdGlvbnMtaW4tbWl4aW4gewogIHJlcGxhY2UtZG91YmxlLXF1b3RlZDogJ2Zvby0yJzsKICByZXBsYWNlLXNpbmdsZS1xdW90ZWQ6ICdmb28tNCc7CiAgcmVwbGFjZS1lc2NhcGVkLXN0cmluZzogYmFyLTI7CiAgcmVwbGFjZS1rZXl3b3JkOiBiYXotMjsKICByZXBsYWNlLWFub255bW91czogcXV4LTI7CiAgZm9ybWF0LWRvdWJsZS1xdW90ZWQ6ICJoZWxsbyB3b3JsZCI7CiAgZm9ybWF0LXNpbmdsZS1xdW90ZWQ6ICdoZWxsbyBzaW5nbGUgd29ybGQnOwogIGZvcm1hdC1lc2NhcGVkLXN0cmluZzogaGVsbG8gZXNjYXBlZCB3b3JsZDsKICBmb3JtYXQta2V5d29yZDogaGVsbG87CiAgZm9ybWF0LWFub255bW91czogaGVsbG8gYW5vbnltb3VzIHdvcmxkOwp9CiNsaXN0LWRldGFpbHMgewogIGxlbmd0aDogMjsKICBvbmU6IGEgMTsKICB0d286IGIgMjsKICB0d28tbGVuZ3RoOiAyOwogIHR3by1vbmU6IGI7CiAgdHdvLXR3bzogMjsKfQovKiBjb21tZW50MSAqLwpodG1sIHsKICBjb2xvcjogIzgwODBmZjsKfQojYm9vbGVhbiB7CiAgYTogdHJ1ZTsKICBiOiBmYWxzZTsKICBjOiBmYWxzZTsKfQojaWYgewogIGE6IDE7CiAgYjogMjsKICBjOiAzOwogIGU6IDsKICBmOiA2OwogIGc6IDM7CiAgaDogNTsKICBpOiA2OwogIGo6IDg7CiAgazogMTsKICBsOiBibGFjazsKICAvKiByZXN1bHRzIGluIHZvaWQgKi8KICBjb2xvcjogZ3JlZW47CiAgY29sb3I6IHB1cnBsZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/ie-filters.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm5hdiB7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0yMCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0wKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjMzMzMzMzIiwgZW5kQ29sb3JzdHI9IiMwMDAwMDAiLCBHcmFkaWVudFR5cGU9MCk7Cn0KLmV2YWxUZXN0MSB7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0zMCk7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT01KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/import-inline.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydCB7CiAgY29sb3I6IHJlZDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAjY3NzIHsgY29sb3I6IHllbGxvdzsgfQoKfQp0aGlzIGlzbid0IHZlcnkgdmFsaWQgQ1NTLgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/import-interpolation.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgd2lkdGg6IDEwMCU7Cn0KI2xvZ28gewogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4OwogIGJhY2tncm91bmQ6IHVybCgnLi4vYXNzZXRzL2xvZ28ucG5nJyk7CiAgYmFja2dyb3VuZDogdXJsKCIjaW5saW5lLXN2ZyIpOwp9CgouYSB7CiAgdmFyOiB0ZXN0Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/import-module.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRocmVlIHsKICBjb2xvcjogZ3JlZW47Cn0KLnR3byB7CiAgY29sb3I6IGJsdWU7Cn0KLm9uZSB7CiAgY29sb3I6IHJlZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/import-once.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydCB7CiAgY29sb3I6IHJlZDsKfQpib2R5IHsKICB3aWR0aDogMTAwJTsKfQoudGVzdC1ydWxlLWYgewogIGhlaWdodDogMTBweDsKfQpib2R5IHsKICB3aWR0aDogMTAwJTsKfQoudGVzdC1ydWxlLWYgewogIGhlaWdodDogMTBweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/import-reference-issues.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZS1jIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKfQoudGhlT25seVNlbGVjdG9yIHsKICBzaGFsbC1oYXZlOiBvbmUgc2VsZWN0b3I7Cn0Kc2hvdy1hbGwtY29udGVudCB7CiAgLyoKICB0cmFsYWxhCiovCn0Kc2hvdy1hbGwtY29udGVudCAuZml4IHsKICBmaXg6IGZpeDsKfQpzaG93LWFsbC1jb250ZW50IC5zb21ldGhpbmcgewogIGluc2lkZTogc29tZXRoaW5nOwp9CiN1c2VkLW5hbWVzcGFjZWQtbWl4aW4gewogIHdhczogaW5jbHVkZWQ7CiAgc2hhbGwtc2VlOiBhbm90aGVyIHByb3BlcnR5IGFib3ZlOwp9CmNhbGwtbWl4aW4td2l0aC1pbXBvcnQtYnktcmVmZXJlbmNlLWluc2lkZSB7CiAgdGhlLW9ubHktcHJvcGVydHk6IG5vdGhpbmctYmVsb3ctdGhpczsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/import-reference.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aW5wdXRbdHlwZT0idGV4dCJdLmNsYXNzI2lkW2F0dHI9MzJdOm5vdCgxKSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KZGl2I2lkLmNsYXNzW2E9MV1bYj0yXS5jbGFzczpub3QoMSkgewogIGNvbG9yOiBpbmhlcml0Owp9CkBtZWRpYSBwcmludCB7CiAgLmNsYXNzIHsKICAgIGNvbG9yOiBibHVlOwogIH0KICAuY2xhc3MgLnN1YiB7CiAgICB3aWR0aDogNDI7CiAgfQp9Ci52aXNpYmxlIHsKICBjb2xvcjogcmVkOwp9Ci52aXNpYmxlIC5jIHsKICBjb2xvcjogZ3JlZW47Cn0KLnZpc2libGUgewogIGNvbG9yOiBncmVlbjsKfQoudmlzaWJsZTpob3ZlciB7CiAgY29sb3I6IGdyZWVuOwp9Ci5vbmx5LXdpdGgtdmlzaWJsZSArIC52aXNpYmxlLAoudmlzaWJsZSArIC5vbmx5LXdpdGgtdmlzaWJsZSwKLnZpc2libGUgKyAudmlzaWJsZSB7CiAgY29sb3I6IGdyZWVuOwp9Ci5vbmx5LXdpdGgtdmlzaWJsZSArIC52aXNpYmxlIC5zdWIsCi52aXNpYmxlICsgLm9ubHktd2l0aC12aXNpYmxlIC5zdWIsCi52aXNpYmxlICsgLnZpc2libGUgLnN1YiB7CiAgY29sb3I6IGdyZWVuOwp9CkBzdXBwb3J0cyAoc29tZXRoaW5nOiBlbHNlKSB7CiAgLmNsYXNzIHsKICAgIHNvbWV0aGluZzogZWxzZTsKICB9CiAgLm5lc3RlZFRvbyAuY2xhc3MgewogICAgc29tZXRoaW5nOiBlbHNlOwogIH0KfQouYiB7CiAgY29sb3I6IHJlZDsKICBjb2xvcjogZ3JlZW47Cn0KLmIgLmMgewogIGNvbG9yOiBncmVlbjsKfQouYjpob3ZlciB7CiAgY29sb3I6IGdyZWVuOwp9Ci5iICsgLmIgewogIGNvbG9yOiBncmVlbjsKfQouYiArIC5iIC5zdWIgewogIGNvbG9yOiBncmVlbjsKfQoueSB7CiAgcHVsbGVkLWluOiB5ZXMgLyogaW5saW5lIGNvbW1lbnQgc3Vydml2ZXMgKi87Cn0KLyogY29tbWVudCBwdWxsZWQgaW4gKi8KLnZpc2libGUgewogIGV4dGVuZDogdGVzdDsKfQoudGVzdC1ydWxlLW1lZGlhcS1pbXBvcnQgewogIGNvbG9yOiBncmVlbjsKICB0ZXN0OiAzNDBweDsKfQpAbWVkaWEgKG1heC1zaXplOiA0NTBweCkgewogIC50ZXN0LXJ1bGUtbWVkaWFxLWltcG9ydCB7CiAgICBjb2xvcjogcmVkOwogIH0KfQoudGVzdC1ydWxlIHsKICBjb2xvcjogcmVkOwp9Ci50ZXN0LXJ1bGU6Zmlyc3QtY2hpbGQgewogIGNvbG9yOiBibHVlOwp9CkBrZXlmcmFtZXMgc29tZS1uYW1lIHsKICBwcm9wZXJ0eTogdmFsdWU7Cn0KQHN1cHBvcnRzIChhbmltYXRpb24tbmFtZTogdGVzdCkgewogIEBrZXlmcmFtZXMgc29tZS1uYW1lIHsKICAgIHByb3BlcnR5OiB2YWx1ZTsKICB9CiAgLnNlbGVjdG9yIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CmRpdiB7CiAgdGhpcyBpc24ndCB2ZXJ5IHZhbGlkIENTUy4KfQp0aGlzIGlzbid0IHZlcnkgdmFsaWQgQ1NTLgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/import-remote.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGNvbG9yOiBibHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/import.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyoqIGNvbW1lbnQgYXQgdGhlIHRvcCoqLwpAaW1wb3J0IHVybCgvYWJzb2x1dGUvc29tZXRoaW5nLmNzcykgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAobWF4LXdpZHRoOiA2MDBweCk7CkBpbXBvcnQgdXJsKCIvL2hhLmNvbS9maWxlLmNzcyIpIChtaW4td2lkdGg6IDEwMHB4KTsKI2ltcG9ydC10ZXN0IHsKICBoZWlnaHQ6IDEwcHg7CiAgY29sb3I6IHJlZDsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDMwJTsKICB2YWx1ZTogMy4xNDE1OTI2NTM1ODk3OTM7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpIHsKICBib2R5IHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQojaW1wb3J0IHsKICBjb2xvcjogcmVkOwp9Ci5taXhpbiB7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbG9yOiByZWQ7Cn0KLnRlc3QtcnVsZS1mIHsKICBoZWlnaHQ6IDEwcHg7Cn0KLmRlZXAtaW1wb3J0LXVybCB7CiAgY29sb3I6IHJlZDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDFweCkgewogICNjc3MgewogICAgY29sb3I6IHllbGxvdzsKICB9Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAycHgpIHsKICBib2R5IHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDNweCkgewogICNjc3MgewogICAgY29sb3I6IHllbGxvdzsKICB9Cn0KQG1lZGlhIHByaW50IHsKICBib2R5IHsKICAgIHdpZHRoOiAxMDAlOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/javascript.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV2YWwgewogIGpzOiA0MjsKICBqczogMjsKICBqczogImhlbGxvIHdvcmxkIjsKICBqczogMSwgMiwgMzsKICB0aXRsZTogInN0cmluZyI7CiAgdGVybmFyeTogdHJ1ZTsKICBtdWx0aWxpbmU6IDI7Cn0KLnNjb3BlIHsKICBlbXB0eTogOwogIHZhcjogNDI7CiAgZXNjYXBlZDogN3B4Owp9Ci52YXJzIHsKICB3aWR0aDogODsKfQouZXNjYXBlLWludGVycG9sIHsKICB3aWR0aDogaGVsbG8gd29ybGQ7Cn0KLmFycmF5cyB7CiAgYXJ5OiAiMSwgMiwgMyI7CiAgYXJ5MTogIjEsIDIsIDMiOwp9Ci50ZXN0LXJ1bGUtdHJhbiB7CiAgb25lOiBvcGFjaXR5IDAuM3MgZWFzZS1pbiAwLjNzLCBtYXgtaGVpZ2h0IDAuNnMgbGluZWFyLCBtYXJnaW4tYm90dG9tIDAuNHMgbGluZWFyOwogIHR3bzogW29wYWNpdHkgMC4zcyBlYXNlLWluIDAuM3MsIG1heC1oZWlnaHQgMC42cyBsaW5lYXIsIG1hcmdpbi1ib3R0b20gMC40cyBsaW5lYXJdOwogIHRocmVlOiBvcGFjaXR5IDAuM3MgZWFzZS1pbiAwLjNzLCBtYXgtaGVpZ2h0IDAuNnMgbGluZWFyLCBtYXJnaW4tYm90dG9tIDAuNHMgbGluZWFyOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/lazy-eval.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmxhenktZXZhbCB7CiAgd2lkdGg6IDEwMCU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/media.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIHByaW50IHsKICAuY2xhc3MgewogICAgY29sb3I6IGJsdWU7CiAgfQogIC5jbGFzcyAuc3ViIHsKICAgIHdpZHRoOiA0MjsKICB9CiAgLnRvcCwKICBoZWFkZXIgPiBoMSB7CiAgICBjb2xvcjogIzQ0NDQ0NDsKICB9Cn0KQG1lZGlhIHNjcmVlbiB7CiAgLmJvZHkgewogICAgbWF4LXdpZHRoOiA0ODA7CiAgfQp9CkBtZWRpYSBhbGwgYW5kIChkZXZpY2UtYXNwZWN0LXJhdGlvOiAxNiAvIDkpIHsKICAuYm9keSB7CiAgICBtYXgtd2lkdGg6IDgwMHB4OwogIH0KfQpAbWVkaWEgYWxsIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSB7CiAgYXNpZGUgewogICAgZmxvYXQ6IG5vbmU7CiAgfQp9CkBtZWRpYSBoYW5kaGVsZCBhbmQgKG1pbi13aWR0aDogNDIpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDIwZW0pIHsKICAuYm9keSB7CiAgICBtYXgtd2lkdGg6IDQ4MHB4OwogIH0KfQpAbWVkaWEgcHJpbnQgewogIC5ib2R5IHsKICAgIHBhZGRpbmc6IDIwcHg7CiAgfQogIC5ib2R5IGhlYWRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgfQp9CkBtZWRpYSBwcmludCBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHsKICAuYm9keSB7CiAgICBtYXJnaW4tbGVmdDogMjBweDsKICB9Cn0KQG1lZGlhIHNjcmVlbiB7CiAgLnNpZGViYXIgewogICAgd2lkdGg6IDMwMHB4OwogIH0KfQpAbWVkaWEgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkgewogIC5zaWRlYmFyIHsKICAgIHdpZHRoOiA1MDBweDsKICB9Cn0KQG1lZGlhIGEgYW5kIChiKSB7CiAgLmZpcnN0IC5zZWNvbmQgLnRoaXJkIHsKICAgIHdpZHRoOiAzMDBweDsKICB9CiAgLmZpcnN0IC5zZWNvbmQgLmZvdXJ0aCB7CiAgICB3aWR0aDogMzsKICB9Cn0KQG1lZGlhIGEgYW5kIChiKSBhbmQgKGMpIHsKICAuZmlyc3QgLnNlY29uZCAudGhpcmQgewogICAgd2lkdGg6IDUwMHB4OwogIH0KfQpAbWVkaWEgYSwgKGIpIGFuZCAoYykgewogIC5ib2R5IHsKICAgIHdpZHRoOiA5NSU7CiAgfQp9CkBtZWRpYSBhIGFuZCAoeCksIChiKSBhbmQgKGMpIGFuZCAoeCksIGEgYW5kICh5KSwgKGIpIGFuZCAoYykgYW5kICh5KSB7CiAgLmJvZHkgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5hIHsKICBiYWNrZ3JvdW5kOiBibGFjazsKfQpAbWVkaWEgaGFuZGhlbGQgewogIC5hIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogIH0KfQpAbWVkaWEgaGFuZGhlbGQgYW5kIChtYXgtd2lkdGg6IDEwMHB4KSB7CiAgLmEgewogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQouYiB7CiAgYmFja2dyb3VuZDogYmxhY2s7Cn0KQG1lZGlhIGhhbmRoZWxkIHsKICAuYiB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICB9Cn0KQG1lZGlhIGhhbmRoZWxkIGFuZCAobWF4LXdpZHRoOiAyMDBweCkgewogIC5iIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICB9Cn0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMDBweCkgewogIC5ib2R5IHsKICAgIHdpZHRoOiA0ODBweDsKICB9Cn0KQG1lZGlhIHByaW50IHsKICBAcGFnZSA6bGVmdCB7CiAgICBtYXJnaW46IDAuNWNtOwogIH0KICBAcGFnZSA6cmlnaHQgewogICAgbWFyZ2luOiAwLjVjbTsKICB9CiAgQHBhZ2UgVGVzdDpmaXJzdCB7CiAgICBtYXJnaW46IDFjbTsKICB9CiAgQHBhZ2UgOmZpcnN0IHsKICAgIHNpemU6IDguNWluIDExaW47CiAgICBAdG9wLWxlZnQgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEB0b3AtbGVmdC1jb3JuZXIgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEB0b3AtY2VudGVyIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAdG9wLXJpZ2h0IHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAdG9wLXJpZ2h0LWNvcm5lciB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGJvdHRvbS1sZWZ0IHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAYm90dG9tLWxlZnQtY29ybmVyIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAYm90dG9tLWNlbnRlciB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGJvdHRvbS1yaWdodCB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGJvdHRvbS1yaWdodC1jb3JuZXIgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBsZWZ0LXRvcCB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGxlZnQtbWlkZGxlIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAbGVmdC1ib3R0b20gewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEByaWdodC10b3AgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEByaWdodC1taWRkbGUgewogICAgICBjb250ZW50OiAiUGFnZSAiIGNvdW50ZXIocGFnZSk7CiAgICB9CiAgICBAcmlnaHQtYm90dG9tIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgfQp9CkBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMiksICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLzEpLCAobWluLXJlc29sdXRpb246IDJkcHB4KSwgKG1pbi1yZXNvbHV0aW9uOiAxMjhkcGNtKSB7CiAgLmIgewogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQouYm9keSB7CiAgYmFja2dyb3VuZDogcmVkOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkgewogIC5ib2R5IHsKICAgIGJhY2tncm91bmQ6IGdyZWVuOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTAwMHB4KSB7CiAgLmJvZHkgewogICAgYmFja2dyb3VuZDogcmVkOwogICAgYmFja2dyb3VuZDogYmx1ZTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDEwMDBweCkgYW5kIChtYXgtd2lkdGg6IDUwMHB4KSB7CiAgLmJvZHkgewogICAgYmFja2dyb3VuZDogZ3JlZW47CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHsKICAvKiBhIGNvbW1lbnQgKi8KfQpAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogOTAwcHgpIHsKICAuYm9keSB7CiAgICBmb250LXNpemU6IDExcHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA0ODBweCkgewogIC5uYXYtanVzdGlmaWVkID4gbGkgewogICAgZGlzcGxheTogdGFibGUtY2VsbDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1pbi13aWR0aDogNDgwcHgpIHsKICAubWVudSA+IGxpIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgfQp9CkBtZWRpYSBhbGwgYW5kICh0dikgewogIC5hbGwtYW5kLXR2LXZhcmlhYmxlcyB7CiAgICB2YXI6IGFsbC1hbmQtdHY7CiAgfQp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYxcHgpIHsKICAuc2VsZWN0b3IgewogICAgZm9vOiBiYXI7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/merge.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZTEgewogIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKSwgc2tldygzMGRlZyksIHNjYWxlKDIsIDQpOwp9Ci50ZXN0LXJ1bGUyIHsKICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyksIHNrZXcoMzBkZWcpOwogIHRyYW5zZm9ybTogc2NhbGVYKDQ1ZGVnKTsKfQoudGVzdC1ydWxlMyB7CiAgdHJhbnNmb3JtOiBzY2FsZVgoNDVkZWcpOwogIGJhY2tncm91bmQ6IHVybChkYXRhOi8vaW1nMS5wbmcpOwp9Ci50ZXN0LXJ1bGU0IHsKICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyksIHNrZXcoMzBkZWcpLCBzY2FsZSgyLCA0KSAhaW1wb3J0YW50Owp9Ci50ZXN0LXJ1bGU1IHsKICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyksIHNrZXcoMzBkZWcpLCBzY2FsZSgyLCA0KSAhaW1wb3J0YW50Owp9Ci50ZXN0LXJ1bGU2IHsKICB0cmFuc2Zvcm06IHNjYWxlKDIsIDQpOwp9Ci50ZXN0LXJ1bGU3IHsKICB0cmFuc2Zvcm06IHNjYWxlKDIsIDQpLCBzY2FsZSgyLCA0KSwgc2NhbGUoMiwgNCkgIWltcG9ydGFudDsKfQoudGVzdC1ydWxlLWludGVybGVhdmVkIHsKICB0cmFuc2Zvcm06IHQxLCB0MiwgdDM7CiAgYmFja2dyb3VuZDogYjEsIGIyLCBiMzsKfQoudGVzdC1ydWxlLXNwYWNlZCB7CiAgdHJhbnNmb3JtOiB0MSB0MiB0MzsKICBiYWNrZ3JvdW5kOiBiMSBiMiwgYjM7Cn0KLnRlc3QtcnVsZS1pbnRlcmxlYXZlZC13aXRoLXNwYWNlZCB7CiAgdHJhbnNmb3JtOiB0MXMsIHQyIHQzcywgdDQgdDVzIHQ2czsKICBiYWNrZ3JvdW5kOiBiMSBiMnMsIGIzLCBiNDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins-closure.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsYXNzIHsKICB3aWR0aDogOTlweDsKfQoub3ZlcndyaXRlIHsKICB3aWR0aDogOTlweDsKfQoubmVzdGVkIC5jbGFzcyB7CiAgd2lkdGg6IDVweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins-guards-default-func.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Z3VhcmQtZGVmYXVsdC1iYXNpYy0xLTEgewogIGNhc2U6IDE7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0xLTIgewogIGRlZmF1bHQ6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0yLTAgewogIGRlZmF1bHQ6IDA7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0yLTIgewogIGNhc2U6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0zLTAgewogIGRlZmF1bHQ6IDA7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0zLTIgewogIGNhc2U6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1iYXNpYy0zLTMgewogIGNhc2U6IDM7Cn0KZ3VhcmQtZGVmYXVsdC1kZWZpbml0aW9uLW9yZGVyLTAgewogIGRlZmF1bHQ6IDA7Cn0KZ3VhcmQtZGVmYXVsdC1kZWZpbml0aW9uLW9yZGVyLTIgewogIGNhc2U6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1kZWZpbml0aW9uLW9yZGVyLTIgewogIGNhc2U6IDM7Cn0KZ3VhcmQtZGVmYXVsdC1vdXQtb2YtZ3VhcmQtMCB7CiAgY2FzZS0wOiBkZWZhdWx0KCk7CiAgY2FzZS0xOiAxOwogIGRlZmF1bHQ6IDI7CiAgY2FzZS0yOiBkZWZhdWx0KCk7Cn0KZ3VhcmQtZGVmYXVsdC1vdXQtb2YtZ3VhcmQtMSB7CiAgZGVmYXVsdDogZGVmYXVsdCgpOwp9Cmd1YXJkLWRlZmF1bHQtb3V0LW9mLWd1YXJkLTIgewogIGRlZmF1bHQ6IGRlZmF1bHQoKTsKfQpndWFyZC1kZWZhdWx0LWV4cHItbm90LTEgewogIGNhc2U6IDE7CiAgZGVmYXVsdDogMTsKfQpndWFyZC1kZWZhdWx0LWV4cHItZXEtdHJ1ZSB7CiAgY2FzZTogdHJ1ZTsKfQpndWFyZC1kZWZhdWx0LWV4cHItZXEtZmFsc2UgewogIGNhc2U6IGZhbHNlOwogIGRlZmF1bHQ6IGZhbHNlOwp9Cmd1YXJkLWRlZmF1bHQtZXhwci1vci0xIHsKICBjYXNlOiAxOwp9Cmd1YXJkLWRlZmF1bHQtZXhwci1vci0yIHsKICBjYXNlOiAyOwogIGRlZmF1bHQ6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1leHByLW9yLTMgewogIGRlZmF1bHQ6IDM7Cn0KZ3VhcmQtZGVmYXVsdC1leHByLWFuZC0xIHsKICBjYXNlOiAxOwp9Cmd1YXJkLWRlZmF1bHQtZXhwci1hbmQtMiB7CiAgY2FzZTogMjsKfQpndWFyZC1kZWZhdWx0LWV4cHItYW5kLTMgewogIGRlZmF1bHQ6IDM7Cn0KZ3VhcmQtZGVmYXVsdC1leHByLWFsd2F5cy0xIHsKICBjYXNlOiAxOwogIGRlZmF1bHQ6IDE7Cn0KZ3VhcmQtZGVmYXVsdC1leHByLWFsd2F5cy0yIHsKICBkZWZhdWx0OiAyOwp9Cmd1YXJkLWRlZmF1bHQtZXhwci1uZXZlci0xIHsKICBjYXNlOiAxOwp9Cmd1YXJkLWRlZmF1bHQtbXVsdGktMS0wIHsKICBjYXNlOiAwOwp9Cmd1YXJkLWRlZmF1bHQtbXVsdGktMS0xIHsKICBkZWZhdWx0LTE6IDE7Cn0KZ3VhcmQtZGVmYXVsdC1tdWx0aS0yLTEgewogIGRlZmF1bHQtMTogbm87Cn0KZ3VhcmQtZGVmYXVsdC1tdWx0aS0yLTIgewogIGRlZmF1bHQtMjogbm87Cn0KZ3VhcmQtZGVmYXVsdC1tdWx0aS0yLTMgewogIGRlZmF1bHQtMzogMzsKfQpndWFyZC1kZWZhdWx0LW11bHRpLTMtYmx1ZSB7CiAgY2FzZS0yOiBkYXJrYmx1ZTsKfQpndWFyZC1kZWZhdWx0LW11bHRpLTMtZ3JlZW4gewogIGRlZmF1bHQtY29sb3I6IGdyZWVuOwp9Cmd1YXJkLWRlZmF1bHQtbXVsdGktMy1mb28gewogIGNhc2UtMTogSSBhbSAnZm9vJzsKfQpndWFyZC1kZWZhdWx0LW11bHRpLTMtYmF6IHsKICBkZWZhdWx0LXN0cmluZzogSSBhbSAnYmF6JzsKfQpndWFyZC1kZWZhdWx0LW11bHRpLTQgewogIGFsd2F5czogMTsKICBhbHdheXM6IDI7CiAgY2FzZTogMjsKfQpndWFyZC1kZWZhdWx0LW5vdC1hbWJpZ3VvdXMtMiB7CiAgY2FzZTogMTsKICBub3QtZGVmYXVsdDogMjsKfQpndWFyZC1kZWZhdWx0LW5vdC1hbWJpZ3VvdXMtMyB7CiAgY2FzZTogMTsKICBub3QtZGVmYXVsdC0xOiAyOwogIG5vdC1kZWZhdWx0LTI6IDI7Cn0KZ3VhcmQtZGVmYXVsdC1zY29wZXMtMyB7CiAgdGhyZWU6IHdoZW4gZGVmYXVsdDsKfQpndWFyZC1kZWZhdWx0LXNjb3Blcy0xIHsKICBvbmU6IG5vIGNvbmRpdGlvbjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins-guards.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmxpZ2h0MSB7CiAgY29sb3I6IGluaGVyaXQ7CiAgbWFyZ2luOiAxcHg7Cn0KLmxpZ2h0MiB7CiAgY29sb3I6IGJsYWNrOwogIG1hcmdpbjogMXB4Owp9Ci5tYXgxIHsKICB3aWR0aDogNjsKfQoubWF4MiB7CiAgd2lkdGg6IDg7Cn0KLmdsb2IxIHsKICBtYXJnaW46IGF1dG8gYXV0bzsKfQoub3BzMSB7CiAgaGVpZ2h0OiBndC1vci1lcTsKICBoZWlnaHQ6IGx0LW9yLWVxOwogIGhlaWdodDogbHQtb3ItZXEtYWxpYXM7Cn0KLm9wczIgewogIGhlaWdodDogZ3Qtb3ItZXE7CiAgaGVpZ2h0OiBub3QtZXE7Cn0KLm9wczMgewogIGhlaWdodDogbHQtb3ItZXE7CiAgaGVpZ2h0OiBsdC1vci1lcS1hbGlhczsKICBoZWlnaHQ6IG5vdC1lcTsKfQouZGVmYXVsdDEgewogIGNvbnRlbnQ6IGRlZmF1bHQ7Cn0KLnRlc3QtcnVsZTEgewogIGNvbnRlbnQ6ICJ0cnVlLiI7Cn0KLnRlc3QtcnVsZTIgewogIGNvbnRlbnQ6ICJmYWxzZS4iOwp9Ci50ZXN0LXJ1bGUzIHsKICBjb250ZW50OiAiZmFsc2UuIjsKfQoudGVzdC1ydWxlNCB7CiAgY29udGVudDogImZhbHNlLiI7Cn0KLnRlc3QtcnVsZTUgewogIGNvbnRlbnQ6ICJmYWxzZS4iOwp9Ci5ib29sMSB7CiAgY29udGVudDogdHJ1ZSBhbmQgdHJ1ZTsKICBjb250ZW50OiB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlIGFuZCB0cnVlIGFuZCB0cnVlLCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCB0cnVlIGFuZCB0cnVlOwogIGNvbnRlbnQ6IGZhbHNlLCBmYWxzZSwgdHJ1ZTsKICBjb250ZW50OiBmYWxzZSwgdHJ1ZSBhbmQgdHJ1ZSBhbmQgdHJ1ZSwgZmFsc2U7CiAgY29udGVudDogbm90IGZhbHNlOwogIGNvbnRlbnQ6IG5vdCBmYWxzZSBhbmQgZmFsc2UsIG5vdCBmYWxzZTsKfQouZXF1YWxpdHktdW5pdHMgewogIHRlc3Q6IHBhc3M7Cn0KLmNvbG9yZ3VhcmR0ZXN0IHsKICBjb250ZW50OiBpcyByZWQ7CiAgY29udGVudDogaXMgbm90IGJsdWUgaXRzIHJlZDsKICBjb250ZW50OiBpcyBub3QgYmx1ZSBpdHMgcHVycGxlOwp9Ci5zdHJpbmdndWFyZHRlc3QgewogIGNvbnRlbnQ6ICJ0aGVtZTEiIGlzICJ0aGVtZTEiOwogIGNvbnRlbnQ6ICJ0aGVtZTEiIGlzIG5vdCAidGhlbWUyIjsKICBjb250ZW50OiAidGhlbWUxIiBpcyAndGhlbWUxJzsKICBjb250ZW50OiAidGhlbWUxIiBpcyBub3QgJ3RoZW1lMic7CiAgY29udGVudDogJ3RoZW1lMScgaXMgInRoZW1lMSI7CiAgY29udGVudDogJ3RoZW1lMScgaXMgbm90ICJ0aGVtZTIiOwogIGNvbnRlbnQ6ICd0aGVtZTEnIGlzICd0aGVtZTEnOwogIGNvbnRlbnQ6ICd0aGVtZTEnIGlzIG5vdCAndGhlbWUyJzsKICBjb250ZW50OiB0aGVtZTEgaXMgbm90ICJ0aGVtZTIiOwogIGNvbnRlbnQ6IHRoZW1lMSBpcyBub3QgJ3RoZW1lMic7CiAgY29udGVudDogdGhlbWUxIGlzIHRoZW1lMTsKfQoudmFyaW91c2UtdHlwZXMtY29tcGFyaXNvbiB7CiAgLyoqLwogIGNvbnRlbnQ6IHRydWUgaXMgbm90IGVxdWFsIHRvIGZhbHNlOwogIGNvbnRlbnQ6IGZhbHNlIGlzIG5vdCBlcXVhbCB0byB0cnVlIHRvbzsKICAvKiovCiAgY29udGVudDogMSBpcyBub3QgZXF1YWwgdG8gdHJ1ZTsKICBjb250ZW50OiB0cnVlIGlzIG5vdCBlcXVhbCB0byAxIHRvbzsKICAvKiovCiAgY29udGVudDogMiBpcyBlcXVhbCB0byAycHg7CiAgY29udGVudDogMnB4IGlzIGVxdWFsIHRvIDIgdG9vOwogIC8qKi8KICBjb250ZW50OiAzIGlzIGVxdWFsIHRvIDM7CiAgY29udGVudDogMyBpcyBlcXVhbCB0byAzIHRvbzsKICAvKiovCiAgY29udGVudDogNSBpcyBub3QgZXF1YWwgdG8gNDsKICBjb250ZW50OiA0IGlzIG5vdCBlcXVhbCB0byA1IHRvbzsKICAvKiovCiAgY29udGVudDogYWJjIGlzIGVxdWFsIHRvIGFiYzsKICBjb250ZW50OiBhYmMgaXMgZXF1YWwgdG8gYWJjIHRvbzsKICAvKiovCiAgY29udGVudDogYWJjIGlzIG5vdCBlcXVhbCB0byAiYWJjIjsKICBjb250ZW50OiAiYWJjIiBpcyBub3QgZXF1YWwgdG8gYWJjIHRvbzsKICAvKiovCiAgY29udGVudDogJ2FiYycgaXMgbGVzcyB0aGFuICJhYmQiOwogIGNvbnRlbnQ6ICJhYmQiIGlzIGdyZWF0ZXIgdGhhbiAnYWJjJyB0b287CiAgY29udGVudDogJ2FiYycgaXMgbm90IGVxdWFsIHRvICJhYmQiOwogIGNvbnRlbnQ6ICJhYmQiIGlzIG5vdCBlcXVhbCB0byAnYWJjJyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDYgaXMgZXF1YWwgdG8gNjsKICBjb250ZW50OiA2IGlzIGVxdWFsIHRvIDYgdG9vOwogIC8qKi8KICBjb250ZW50OiA4IGlzIGxlc3MgdGhhbiA5IHRvbzsKICBjb250ZW50OiA5IGlzIGdyZWF0ZXIgdGhhbiA4OwogIGNvbnRlbnQ6IDkgaXMgbm90IGVxdWFsIHRvIDg7CiAgY29udGVudDogOCBpcyBub3QgZXF1YWwgdG8gOSB0b287CiAgLyoqLwogIGNvbnRlbnQ6IGEgaXMgbm90IGVxdWFsIHRvIGI7CiAgY29udGVudDogYiBpcyBub3QgZXF1YWwgdG8gYSB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMiBpcyBub3QgZXF1YWwgdG8gMzsKICBjb250ZW50OiAzIGlzIG5vdCBlcXVhbCB0byAxIDIgdG9vOwp9Ci5saXN0LWNvbXBhcmlzb24gewogIC8qKi8KICBjb250ZW50OiBhIGIgYyBpcyBlcXVhbCB0byBhIGIgYzsKICBjb250ZW50OiBhIGIgYyBpcyBlcXVhbCB0byBhIGIgYyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IGEgYiBjIGlzIG5vdCBlcXVhbCB0byBhIGIgZDsKICBjb250ZW50OiBhIGIgZCBpcyBub3QgZXF1YWwgdG8gYSBiIGMgdG9vOwogIC8qKi8KICBjb250ZW50OiBhLCBiLCBjIGlzIGVxdWFsIHRvIGEsIGIsIGM7CiAgY29udGVudDogYSwgYiwgYyBpcyBlcXVhbCB0byBhLCBiLCBjIHRvbzsKICAvKiovCiAgY29udGVudDogYSwgYiwgYyBpcyBub3QgZXF1YWwgdG8gYSwgYiwgZDsKICBjb250ZW50OiBhLCBiLCBkIGlzIG5vdCBlcXVhbCB0byBhLCBiLCBjIHRvbzsKICAvKiovCiAgY29udGVudDogMSAycHggMzAwbXMgaXMgZXF1YWwgdG8gMWVtIDIgMC4zczsKICBjb250ZW50OiAxZW0gMiAwLjNzIGlzIGVxdWFsIHRvIDEgMnB4IDMwMG1zIHRvbzsKICAvKiovCiAgY29udGVudDogMSAyIDMgaXMgbm90IGVxdWFsIHRvIDEsIDIsIDM7CiAgY29udGVudDogMSwgMiwgMyBpcyBub3QgZXF1YWwgdG8gMSAyIDMgdG9vOwogIC8qKi8KICBjb250ZW50OiAxLCAyLCAzIGlzIGVxdWFsIHRvIDEsIDIsIDM7CiAgY29udGVudDogMSwgMiwgMyBpcyBlcXVhbCB0byAxLCAyLCAzIHRvbzsKICAvKiovCiAgY29udGVudDogMSAyIDMgMSwgMiwgMyBpcyBlcXVhbCB0byAxIDIgMyAxLCAyLCAzOwogIGNvbnRlbnQ6IDEgMiAzIDEsIDIsIDMgaXMgZXF1YWwgdG8gMSAyIDMgMSwgMiwgMyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMiAzIDEsIDIsIDMgaXMgbm90IGVxdWFsIHRvIDEsIDIsIDMgMSAyIDM7CiAgY29udGVudDogMSwgMiwgMyAxIDIgMyBpcyBub3QgZXF1YWwgdG8gMSAyIDMgMSwgMiwgMyB0b287CiAgLyoqLwogIGNvbnRlbnQ6IDEgMiAzIDEsIDIsIDMgNCBpcyBlcXVhbCB0byAxIDIgMyAxLCAyLCAzIDQ7CiAgY29udGVudDogMSAyIDMgMSwgMiwgMyA0IGlzIGVxdWFsIHRvIDEgMiAzIDEsIDIsIDMgNCB0b287Cn0KI3RyeU51bWJlclB4IHsKICBjYXRjaDogYWxsOwogIGRlY2xhcmU6IDQ7CiAgZGVjbGFyZTogNHB4Owp9Ci5jYWxsLWxvY2stbWl4aW4gLmNhbGwtaW5uZXItbG9jay1taXhpbiB7CiAgYTogMTsKICB4OiAxOwp9Ci5taXhpbi1nZW5lcmF0ZWQtY2xhc3MgewogIGE6IDE7Cn0KI2d1YXJkZWQtY2FsbGVyIHsKICBndWFyZGVkOiBuYW1lc3BhY2U7CiAgc2lsZW50OiBuYW1lc3BhY2U7CiAgZ3VhcmRlZDogd2l0aCBkZWZhdWx0Owp9CiNndWFyZGVkLWRlZXBlciB7CiAgc2hvdWxkOiBtYXRjaCAxOwp9CiNwYXJlbnRoZXNpc05vdC10cnVlIHsKICBwYXJlbnRoZXNpc05vdDoganVzdC12YWx1ZTsKICBwYXJlbnRoZXNpc05vdDogbmVnYXRlZCB0d2ljZSAxOwogIHBhcmVudGhlc2lzTm90OiBuZWdhdGVkIHR3aWNlIDI7CiAgcGFyZW50aGVzaXNOb3Q6IG5lZ2F0ZWQgdHdpY2UgMzsKfQojcGFyZW50aGVzaXNOb3QtZmFsc2UgewogIHBhcmVudGhlc2lzTm90OiBuZWdhdGVkIG9uY2UgaW5zaWRlOwogIHBhcmVudGhlc2lzTm90OiBuZWdhdGVkIG9uY2Ugb3V0c2lkZTsKICBwYXJlbnRoZXNpc05vdDogbmVnYXRlZCBvbmNlIG1pZGRsZTsKfQojb3JkZXJPZkV2YWx1YXRpb24tZmFsc2UtZmFsc2UtdHJ1ZSB7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDFhOwogIG5vLXBhcmVudGhlc2lzOiBldmFsdWF0ZWQgdHJ1ZSAxYjsKICBuby1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWUgMWQ7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDM7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDQ7CiAgd2l0aC1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWU7Cn0KI29yZGVyT2ZFdmFsdWF0aW9uLWZhbHNlLWZhbHNlLWZhbHNlIHsKICBuby1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWUgMmE7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDJiOwogIG5vLXBhcmVudGhlc2lzOiBldmFsdWF0ZWQgdHJ1ZSAyYzsKfQojb3JkZXJPZkV2YWx1YXRpb24tdHJ1ZS10cnVlLWZhbHNlIHsKICBuby1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWUgMWE7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDFiOwogIG5vLXBhcmVudGhlc2lzOiBldmFsdWF0ZWQgdHJ1ZSAxYzsKICBuby1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWUgMWQ7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDFlOwogIG5vLXBhcmVudGhlc2lzOiBldmFsdWF0ZWQgdHJ1ZSAyYTsKICBuby1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWUgMmI7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDJjOwogIG5vLXBhcmVudGhlc2lzOiBldmFsdWF0ZWQgdHJ1ZSA0OwogIHdpdGgtcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins-important.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsYXNzIHsKICBib3JkZXI6IDE7CiAgYm94ZXI6IDE7CiAgYm9yZGVyLXdpZHRoOiAxOwogIGJvcmRlcjogMiAhaW1wb3J0YW50OwogIGJveGVyOiAyICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXdpZHRoOiAyICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAzOwogIGJveGVyOiAzOwogIGJvcmRlci13aWR0aDogMzsKICBib3JkZXI6IDQgIWltcG9ydGFudDsKICBib3hlcjogNCAhaW1wb3J0YW50OwogIGJvcmRlci13aWR0aDogNCAhaW1wb3J0YW50OwogIGJvcmRlcjogNTsKICBib3hlcjogNTsKICBib3JkZXItd2lkdGg6IDU7CiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7CiAgYm94ZXI6IDAgIWltcG9ydGFudDsKICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudDsKICBib3JkZXI6IDkgIWltcG9ydGFudDsKICBib3JkZXI6IDk7CiAgYm94ZXI6IDk7CiAgYm9yZGVyLXdpZHRoOiA5Owp9Ci5jbGFzcyAuaW5uZXIgewogIHRlc3Q6IDE7Cn0KLmNsYXNzIC5pbm5lciB7CiAgdGVzdDogMiAhaW1wb3J0YW50Owp9Ci5jbGFzcyAuaW5uZXIgewogIHRlc3Q6IDM7Cn0KLmNsYXNzIC5pbm5lciB7CiAgdGVzdDogNCAhaW1wb3J0YW50Owp9Ci5jbGFzcyAuaW5uZXIgewogIHRlc3Q6IDU7Cn0KLmNsYXNzIC5pbm5lciB7CiAgdGVzdDogMCAhaW1wb3J0YW50Owp9Ci5jbGFzcyAuaW5uZXIgewogIHRlc3Q6IDk7Cn0KLndoZW4tY2FsbGluZy1uZXN0ZWQtaXNzdWUtMjM5NCB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQoud2hlbi1jYWxsaW5nLW5lc3RlZC13aXRoLXBhcmFtLWlzc3VlLTIzOTQgewogIHdpZHRoOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KLmNsYXNzMS0yNDIxIHsKICBtYXJnaW46IDVweCAhaW1wb3J0YW50Owp9Ci5jbGFzczItMjQyMSB7CiAgbWFyZ2luOiA1cHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins-interpolated.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LjEyMyB7CiAgYTogMDsKfQouZm9vIHsKICBhOiAxOwp9Ci5mb28gewogIGE6IDI7Cn0KI2ZvbyB7CiAgYTogMzsKfQojZm9vIHsKICBhOiA0Owp9Cm1pLXRlc3QtYSB7CiAgYTogMDsKICBhOiAxOwogIGE6IDI7CiAgYTogMzsKICBhOiA0Owp9Ci5iIC5iYi5mb28teHh4IC55eXktZm9vI2ZvbyAuZm9vLmJiYiB7CiAgYjogMTsKfQptaS10ZXN0LWIgewogIGI6IDE7Cn0KI2Zvby1mb28gPiAuYmFyIC5iYXogewogIGM6IGM7Cn0KbWktdGVzdC1jLTEgPiAuYmFyIC5iYXogewogIGM6IGM7Cn0KbWktdGVzdC1jLTIgLmJheiB7CiAgYzogYzsKfQptaS10ZXN0LWMtMyB7CiAgYzogYzsKfQptaS10ZXN0LWQgewogIGdlbmRlcjogIk1hbGUiOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins-named-args.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm5hbWVkLWFyZyB7CiAgY29sb3I6IGJsdWU7CiAgd2lkdGg6IDVweDsKICBoZWlnaHQ6IDk5JTsKICBhcmdzOiAxcHggMTAwJTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmNsYXNzIHsKICB3aWR0aDogNXB4OwogIGhlaWdodDogMTklOwogIGFyZ3M6IDFweCAyMCU7Cn0KLmFsbC1hcmdzLXdyb25nLWFyZ3MgewogIHdpZHRoOiAxMHB4OwogIGhlaWdodDogOSU7CiAgYXJnczogMnB4IDEwJTsKfQoubmFtZWQtYXJnczIgewogIHdpZHRoOiAxNXB4OwogIGhlaWdodDogNDklOwogIGNvbG9yOiAjNjQ2NDY0Owp9Ci5uYW1lZC1hcmdzMyB7CiAgd2lkdGg6IDVweDsKICBoZWlnaHQ6IDI5JTsKICBjb2xvcjogIzEyMzQ1NjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins-nested.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsYXNzIC5pbm5lciB7CiAgaGVpZ2h0OiAzMDA7Cn0KLmNsYXNzIC5pbm5lciAuaW5uZXN0IHsKICB3aWR0aDogMzA7CiAgYm9yZGVyLXdpZHRoOiA2MDsKfQouY2xhc3MyIC5pbm5lciB7CiAgaGVpZ2h0OiA2MDA7Cn0KLmNsYXNzMiAuaW5uZXIgLmlubmVzdCB7CiAgd2lkdGg6IDYwOwogIGJvcmRlci13aWR0aDogMTIwOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins-pattern.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lnplcm8gewogIHZhcmlhZGljOiB0cnVlOwogIG5hbWVkLXZhcmlhZGljOiB0cnVlOwogIHplcm86IDA7CiAgb25lOiAxOwogIHR3bzogMjsKICB0aHJlZTogMzsKfQoub25lIHsKICB2YXJpYWRpYzogdHJ1ZTsKICBuYW1lZC12YXJpYWRpYzogdHJ1ZTsKICBvbmU6IDE7CiAgb25lLXJlcTogMTsKICB0d286IDI7CiAgdGhyZWU6IDM7Cn0KLnR3byB7CiAgdmFyaWFkaWM6IHRydWU7CiAgbmFtZWQtdmFyaWFkaWM6IHRydWU7CiAgdHdvOiAyOwogIHRocmVlOiAzOwp9Ci50aHJlZSB7CiAgdmFyaWFkaWM6IHRydWU7CiAgbmFtZWQtdmFyaWFkaWM6IHRydWU7CiAgdGhyZWUtcmVxOiAzOwogIHRocmVlOiAzOwp9Ci5sZWZ0IHsKICBsZWZ0OiAxOwp9Ci5yaWdodCB7CiAgcmlnaHQ6IDE7Cn0KLmJvcmRlci1yaWdodCB7CiAgY29sb3I6IGJsYWNrOwogIGJvcmRlci1yaWdodDogNHB4Owp9Ci5ib3JkZXItbGVmdCB7CiAgY29sb3I6IGJsYWNrOwogIGJvcmRlci1sZWZ0OiA0cHg7Cn0KLm9ubHktcmlnaHQgewogIHJpZ2h0OiAzMzsKfQoub25seS1sZWZ0IHsKICBsZWZ0OiAzMzsKfQoubGVmdC1yaWdodCB7CiAgYm90aDogMzMwOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/mixins.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIHsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKfQoubWl4b3V0IHsKICBib3JkZXItY29sb3I6IG9yYW5nZTsKfQouYm9yZGVycyB7CiAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7Cn0KLm1peGluID4gKiB7CiAgYm9yZGVyOiBkbyBub3QgbWF0Y2ggbWU7Cn0KI25hbWVzcGFjZSAuYm9yZGVycyB7CiAgYm9yZGVyLXN0eWxlOiBkb3R0ZWQ7Cn0KI25hbWVzcGFjZSAuYmlvaGF6YXJkIHsKICBjb250ZW50OiAiZGVhdGgiOwp9CiNuYW1lc3BhY2UgLmJpb2hhemFyZCAubWFuIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KI3RoZW1lID4gLm1peGluIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5Owp9CiNjb250YWluZXIgewogIGNvbG9yOiBibGFjazsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBib3JkZXItY29sb3I6IG9yYW5nZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5Owp9CiNoZWFkZXIgLm1pbGsgewogIGNvbG9yOiBpbmhlcml0OwogIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6IGdyZXk7Cn0KI2hlYWRlciAjY29va2llIHsKICBib3JkZXItc3R5bGU6IGRhc2hlZDsKfQojaGVhZGVyICNjb29raWUgLmNoaXBzIHsKICBib3JkZXItc3R5bGU6IGRvdHRlZDsKfQojaGVhZGVyICNjb29raWUgLmNoaXBzIC5jYWxvcmllcyB7CiAgY29sb3I6IGJsYWNrOwogIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogIGJvcmRlci1jb2xvcjogb3JhbmdlOwogIGJhY2tncm91bmQtY29sb3I6IGdyZXk7Cn0KLnNlY3VyZS16b25lIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmRpcmVjdCB7CiAgYm9yZGVyLXN0eWxlOiBkb3R0ZWQ7Cn0KLmJvLAouYmFyIHsKICB3aWR0aDogMTAwJTsKfQouYm8gewogIGJvcmRlcjogMXB4Owp9Ci5hci5iby5jYSB7CiAgY29sb3I6IGJsYWNrOwp9Ci5qby5raSB7CiAgYmFja2dyb3VuZDogbm9uZTsKfQouYW1wLnN1cHBvcnQgewogIGNvbG9yOiBvcmFuZ2U7Cn0KLmFtcC5zdXBwb3J0IC5oaWdoZXIgewogIHRvcDogMHB4Owp9Ci5hbXAuc3VwcG9ydC5kZWVwZXIgewogIGhlaWdodDogYXV0bzsKfQouZXh0ZW5kZWQgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlcjogMXB4OwogIGJhY2tncm91bmQ6IG5vbmU7CiAgY29sb3I6IG9yYW5nZTsKICB0b3A6IDBweDsKICBoZWlnaHQ6IGF1dG87Cn0KLmV4dGVuZGVkIC5oaWdoZXIgewogIHRvcDogMHB4Owp9Ci5leHRlbmRlZC5kZWVwZXIgewogIGhlaWdodDogYXV0bzsKfQouZG8gLnJlIC5taSAuZmEgLnNvbCAubGEgLnNpIHsKICBjb2xvcjogY3lhbjsKfQoubXV0bGktc2VsZWN0b3ItcGFyZW50cyB7CiAgY29sb3I6IGN5YW47Cn0KLmZvbyAuYmFyIHsKICB3aWR0aDogMTAwJTsKfQoudW5kZXJQYXJlbnRzIHsKICBjb2xvcjogcmVkOwp9Ci5wYXJlbnQgLnVuZGVyUGFyZW50cyB7CiAgY29sb3I6IHJlZDsKfQoqICsgaDEgewogIG1hcmdpbi10b3A6IDI1cHg7Cn0KbGVnZW5kICsgaDEgewogIG1hcmdpbi10b3A6IDA7Cn0KaDEgKyAqIHsKICBtYXJnaW4tdG9wOiAxMHB4Owp9CiogKyBoMiB7CiAgbWFyZ2luLXRvcDogMjBweDsKfQpsZWdlbmQgKyBoMiB7CiAgbWFyZ2luLXRvcDogMDsKfQpoMiArICogewogIG1hcmdpbi10b3A6IDhweDsKfQoqICsgaDMgewogIG1hcmdpbi10b3A6IDE1cHg7Cn0KbGVnZW5kICsgaDMgewogIG1hcmdpbi10b3A6IDA7Cn0KaDMgKyAqIHsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KLmVycm9yIHsKICBiYWNrZ3JvdW5kLWltYWdlOiAiL2EucG5nIjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwp9Ci50ZXN0LXJ1bGUtcmVjIC5yZWN1cnNpb24gewogIGNvbG9yOiBibGFjazsKfQouYnV0dG9uIHsKICBwYWRkaW5nLWxlZnQ6IDQ0cHg7Cn0KLmJ1dHRvbi5sYXJnZSB7CiAgcGFkZGluZy1sZWZ0OiA0MGVtOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/no-output.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/operations.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I29wZXJhdGlvbnMgewogIGNvbG9yOiAjMTExMTExOwogIGNvbG9yLTI6ICNmOGY4MDA7CiAgaGVpZ2h0OiA5cHg7CiAgd2lkdGg6IDNlbTsKICBzdWJ0cmFjdGlvbjogMDsKICBkaXZpc2lvbjogMTsKfQojb3BlcmF0aW9ucyAuc3BhY2luZyB7CiAgaGVpZ2h0OiA5cHg7CiAgd2lkdGg6IDNlbTsKfQoud2l0aC12YXJpYWJsZXMgewogIGhlaWdodDogMTZlbTsKICB3aWR0aDogMjRlbTsKICBzaXplOiAxY207Cn0KLndpdGgtZnVuY3Rpb25zIHsKICBjb2xvcjogIzY0NjQ2NDsKICBjb2xvcjogI2ZmODA4MDsKICBjb2xvcjogI2M5NGE0YTsKfQoubmVnYXRpdmUgewogIGhlaWdodDogMHB4OwogIHdpZHRoOiA0cHg7Cn0KLnNob3J0aGFuZHMgewogIHBhZGRpbmc6IC0xcHggMnB4IDAgLTRweDsKfQoucmVtLWRpbWVuc2lvbnMgewogIGZvbnQtc2l6ZTogNS41cmVtOwp9Ci5jb2xvcnMgewogIGNvbG9yOiAjMTIzOwogIGJvcmRlci1jb2xvcjogIzMzNDQ1NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOwp9Ci5jb2xvcnMgLm90aGVyIHsKICBjb2xvcjogIzIyMjIyMjsKICBib3JkZXItY29sb3I6ICMyMjIyMjI7Cn0KLm5lZ2F0aW9ucyB7CiAgdmFyaWFibGU6IC00cHg7CiAgdmFyaWFibGUxOiAwcHg7CiAgdmFyaWFibGUyOiAwcHg7CiAgdmFyaWFibGUzOiA4cHg7CiAgdmFyaWFibGU0OiAwcHg7CiAgcGFyZW46IC00cHg7CiAgcGFyZW4yOiAxNnB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/parse-interpolation.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aW5wdXRbdHlwZT10ZXh0XTpmb2N1cywKaW5wdXRbdHlwZT1lbWFpbF06Zm9jdXMsCmlucHV0W3R5cGU9cGFzc3dvcmRdOmZvY3VzLAp0ZXh0YXJlYTpmb2N1cyB7CiAgZm9vOiBiYXI7Cn0KLmEgKyAueiwKLmIgKyAueiwKLmMgKyAueiB7CiAgY29sb3I6IGJsdWU7Cn0KLmJhciAuZC5hLAouYmFyIC5iLAouYy5iYXI6aG92ZXIsCi5iYXIgYmF6IHsKICBjb2xvcjogYmx1ZTsKfQouYSArIC5lLAouYi5jICsgLmUsCi5kICsgLmUgewogIGZvbzogYmFyOwp9CmlucHV0W2NsYXNzPSJ0ZXh0Il0sCmlucHV0LnRleHQgewogIGJhY2tncm91bmQ6IHJlZDsKfQoubWFzdGVyLXBhZ2UtMSAuc2VsZWN0b3ItMSwKLm1hc3Rlci1wYWdlLTEgLnNlbGVjdG9yLTIgewogIGJhY2tncm91bmQtY29sb3I6IHJlZDsKfQouZnJ1aXQtYXBwbGUsCi5mcnVpdC1zYXRzdW1hLAouZnJ1aXQtYmFuYW5hLAouZnJ1aXQtcGVhciB7CiAgY29udGVudDogIkp1c3QgYSB0ZXN0LiI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/permissive-parse.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QC1tb3otZG9jdW1lbnQgcmVnZXhwKCIoXGR7MCwxNX0pIikgewogIGEgewogICAgY29sb3I6IHJlZDsKICB9Cn0KLmN1c3RvbS1wcm9wZXJ0eSB7CiAgLS10aGlzOiAoKSA9PiB7CiAgICBiYXNpY2FsbHkgYW55dGhpbmcgdW50aWwgZmluYWwgc2VtaS1jb2xvbjsKICAgIGV2ZW4gb3RoZXIgc3R1ZmY7IC8vIGlcJ20gc2VyaW91czsKICB9OwogIC0tdGhhdDogKCkgPT4gewogICAgYmFzaWNhbGx5IGFueXRoaW5nIHVudGlsIGZpbmFsIHNlbWktY29sb247CiAgICBldmVuIG90aGVyIHN0dWZmOyAvLyBpXCdtIHNlcmlvdXM7CiAgfTsKICAtLWN1c3RvbS1jb2xvcjogI2ZmMzMzMyAjZmYzMzMzOwogIGN1c3RvbS1jb2xvcjogI2ZmMzMzMyAjZmYzMzMzOwp9Ci52YXIgewogIC0tZm9ydHJhbjogcmVhZCAoKiwgKiwgaW9zdGF0PTEpIHJhZGl1cywgaGVpZ2h0Owp9CkAtbW96LXdoYXRldmVyIChmb286ICIoIiBiYW0gIikiKSB7CiAgYmFyOiBmb287Cn0KI3NlbGVjdG9yLAouYmFyLApmb29bYXR0cj0iYmxhaCJdIHsKICBiYXI6IHZhbHVlOwp9CkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgewogIC5ob2x5LWNyYXAgewogICAgdGhpczogd29ya3M7CiAgfQp9Ci50ZXN0LXJ1bGUtY29tbWVudCB7CiAgLS12YWx1ZTogYSAvKiB7IDsgfSAqLzsKICAtLWNvbW1lbnQtd2l0aGluOiAoIC8qIG9rYXk/OyBjb21tZW50OyAqLyApOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/plugin-module.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YXtiYWNrZ3JvdW5kOjAgMH0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/plugin-preeval.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[OnJvb3QudHdvIC5vbmUgewogIC0tZm9vOiBiYXIgIWltcG9ydGFudDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/plugin.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKLm90aGVyIHsKICB0cmFuczogdHJhbnNpdGl2ZTsKfQouY2xhc3MgewogIHRyYW5zOiB0cmFuc2l0aXZlOwogIGdsb2JhbDogZ2xvYmFsOwogIGxvY2FsOiB0ZXN0LWxvY2FsKCk7CiAgc2hhZG93OiBnbG9iYWw7Cn0KLmNsYXNzIC5sb2NhbCB7CiAgZ2xvYmFsOiBnbG9iYWw7CiAgbG9jYWw6IGxvY2FsOwogIHNoYWRvdzogbG9jYWw7Cn0KLmNsYXNzIHsKICBucy1taXhpbi1nbG9iYWw6IGdsb2JhbDsKICBucy1taXhpbi1sb2NhbDogbG9jYWw7CiAgbnMtbWl4aW4tc2hhZG93OiBsb2NhbDsKICBtaXhpbi1sb2NhbDogbG9jYWw7CiAgbWl4aW4tZ2xvYmFsOiBnbG9iYWw7CiAgbWl4aW4tc2hhZG93OiBsb2NhbDsKICBydWxlc2V0LWxvY2FsOiBsb2NhbDsKICBydWxlc2V0LWdsb2JhbDogZ2xvYmFsOwogIHJ1bGVzZXQtc2hhZG93OiBsb2NhbDsKICBjbGFzcy1sb2NhbDogdGVzdC1sb2NhbCgpOwp9CkBtZWRpYSBzY3JlZW4gewogIC50ZXN0LXJ1bGUgewogICAgcmVzdWx0OiBnbG9iYWw7CiAgfQp9CkBmb250LWZhY2UgewogIHJlc3VsdDogZ2xvYmFsOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMHB4KSBhbmQgKG1heC13aWR0aDogNDAwcHgpIHsKICAudGVzdC1ydWxlIHsKICAgIHJlc3VsdDogZ2xvYmFsOwogIH0KfQpAbWVkaWEgc2NyZWVuIHsKICAudGVzdC1ydWxlIHsKICAgIHJlc3VsdDogbG9jYWw7CiAgfQp9Ci5yb290IHsKICBwcm9wOiB2YWx1ZTsKfQoudGVzdC1ydWxlLWVtcHR5IHsKICB2YWwxOiBmb287CiAgdmFsMjogZm9vOwp9Ci50ZXN0LXJ1bGUtc2ltcGxlIHsKICB2YWx1ZTogMy4xNDE1OTI2NTM1ODk3OTM7CiAgdmFsdWU6IDYuMjgzMTg1MzE7Cn0KLnRlc3QtcnVsZS1jb25mbGljdHMgewogIHZhbHVlOiBmb287Cn0KLnRlc3QtcnVsZS1jb25mbGljdHMgewogIHZhbHVlOiBiYXI7Cn0KLnRlc3QtcnVsZS1jb25mbGljdHMgewogIHZhbHVlOiBmb287Cn0KLnRlc3QtcnVsZS1jb2xsZWN0aW9uIHsKICBsaXN0OiAzMiwgNSwgImJpcmQiOwp9CkBhcmJpdHJhcnkgdmFsdWUgYWZ0ZXIgKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/property-accessors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmJsb2NrXzEgewogIGNvbG9yOiByZWQ7CiAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwogIHdpZHRoOiA1MHB4OwogIGhlaWdodDogMjVweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZmYzMzMzOwogIGNvbnRlbnQ6ICJyZWQiOwogIHByb3A6IHJlZDsKfQouYmxvY2tfMTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CiAgY29sb3I6IGdyZWVuOwp9Ci5ibG9ja18xIC5vbmUgewogIGJhY2tncm91bmQ6IHJlZDsKfQouYmxvY2tfMiB7CiAgY29sb3I6IHJlZDsKICBjb2xvcjogYmx1ZTsKfQouYmxvY2tfMiAudHdvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwp9Ci5ibG9ja18zIHsKICBjb2xvcjogcmVkOwogIGNvbG9yOiB5ZWxsb3c7CiAgY29sb3I6IGJsdWU7Cn0KLmJsb2NrXzMgLnRocmVlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwp9Ci5ibG9ja180IHsKICBjb2xvcjogcmVkOwogIGNvbG9yOiBibHVlOwogIGNvbG9yOiB5ZWxsb3c7Cn0KLmJsb2NrXzQgLmZvdXIgewogIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKfQphIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQsIGZvbzsKfQphYiB7CiAgYmFja2dyb3VuZDogcmVkLCBmb287Cn0KLnZhbHVlX2FzX3Byb3BlcnR5IHsKICBwcm9wMTogY29sb3I7CiAgY29sb3I6ICNGRjAwMDA7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/property-name-interp.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cGktdGVzdCB7CiAgYm9yZGVyOiAwOwogIEBub3QtdmFyaWFibGU6IEBub3QtdmFyaWFibGU7CiAgdWZvLXdpZHRoOiA1MCU7CiAgKi16LWJvcmRlcjogMXB4IGRhc2hlZCBibHVlOwogIC13d3ctYm9yZGVyLXRvcDogMnB4OwogIHJhZGl1cy1pcy1ub3QtYS1ib3JkZXI6IHRydWU7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMmVtOwogIGJvcmRlci10b3AtcmVkLXJhZGl1cy06IDNwdDsKICBnbG9iYWwtbG9jYWwtbWl4ZXItcHJvcGVydHk6IHN0cm9uZzsKfQpwaS10ZXN0LW1lcmdlIHsKICBwcmUtcHJvcGVydHktaXNoOiBoaWdoLCBtaWRkbGUsIGxvdywgYmFzZTsKICBwcmUtcHJvcGVydHktaXNoKzogbmljZSB0cnkgZHVkZTsKfQpwaS1pbmRpcmVjdC12YXJzIHsKICBhdXRvOiBhdXRvOwp9CnBpLWNvbXBsZXgtdmFsdWVzIHsKICAzcHggcmdiYSgyNTUsIDI1NSwgMCwgMC41KSwgMy4xNDE1OTI2NTM1ODk3OTMgLyogZm9vICovM3B4IHJnYmEoMjU1LCAyNTUsIDAsIDAuNSksIDMuMTQxNTkyNjUzNTg5NzkzIC8qIGZvbyAqLzogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/rulesets.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ZpcnN0ID4gLm9uZSB7CiAgZm9udC1zaXplOiAyZW07Cn0KI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4IHsKICB3aWR0aDogNTAlOwp9CiNmaXJzdCA+IC5vbmUgPiAjc2Vjb25kIC50d28gPiAjZGV1eCAjdGhpcmQgewogIGhlaWdodDogMTAwJTsKfQojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI3RoaXJkOmZvY3VzIHsKICBjb2xvcjogYmxhY2s7Cn0KI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4ICN0aGlyZDpmb2N1cyAjZmlmdGggPiAjc2l4dGggLnNldmVudGggI2VpZ2h0aCArICNuaW50aCB7CiAgY29sb3I6IHB1cnBsZTsKfQojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZvdXJ0aCwKI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4ICNmaXZlLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI3NpeCB7CiAgY29sb3I6ICMxMTAwMDA7Cn0KI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4ICNmb3VydGggLnNldmVuLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZpdmUgLnNldmVuLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI3NpeCAuc2V2ZW4sCiNmaXJzdCA+IC5vbmUgPiAjc2Vjb25kIC50d28gPiAjZGV1eCAjZm91cnRoIC5laWdodCA+ICNuaW5lLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZpdmUgLmVpZ2h0ID4gI25pbmUsCiNmaXJzdCA+IC5vbmUgPiAjc2Vjb25kIC50d28gPiAjZGV1eCAjc2l4IC5laWdodCA+ICNuaW5lIHsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKfQojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZvdXJ0aCAjdGVuLAojZmlyc3QgPiAub25lID4gI3NlY29uZCAudHdvID4gI2RldXggI2ZpdmUgI3RlbiwKI2ZpcnN0ID4gLm9uZSA+ICNzZWNvbmQgLnR3byA+ICNkZXV4ICNzaXggI3RlbiB7CiAgY29sb3I6IHJlZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/scope.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRpbnktc2NvcGUgewogIGNvbG9yOiAjOTg5Owp9Ci5zY29wZTEgewogIGNvbG9yOiBibHVlOwogIGJvcmRlci1jb2xvcjogYmxhY2s7Cn0KLnNjb3BlMSAuc2NvcGUyIHsKICBjb2xvcjogYmx1ZTsKfQouc2NvcGUxIC5zY29wZTIgLnNjb3BlMyB7CiAgY29sb3I6IHJlZDsKICBib3JkZXItY29sb3I6IGJsYWNrOwogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9Ci5zY29wZSB7CiAgc2NvcGVkLXZhbDogZ3JlZW47Cn0KLmhlaWdodElzU2V0IHsKICBoZWlnaHQ6IDEwMjRweDsKfQoudXNlSGVpZ2h0SW5NaXhpbkNhbGwgewogIG1peGluLWhlaWdodDogMTAyNHB4Owp9Ci5pbXBvcnRlZCB7CiAgZXhpc3RzOiB0cnVlOwp9Ci50ZXN0SW1wb3J0ZWQgewogIGV4aXN0czogdHJ1ZTsKfQojYWxsQXJlVXNlZEhlcmUgewogIGRlZmF1bHQ6ICd0b3AgbGV2ZWwnOwogIHNjb3BlOiAndG9wIGxldmVsJzsKICBzdWItc2NvcGUtb25seTogJ2luc2lkZSc7Cn0KI3BhcmVudFNlbGVjdG9yU2NvcGUgewogIHByb3A6IHdoaXRlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/selectors.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aDEgYTpob3ZlciwKaDIgYTpob3ZlciwKaDMgYTpob3ZlciwKaDEgcDpob3ZlciwKaDIgcDpob3ZlciwKaDMgcDpob3ZlciB7CiAgY29sb3I6IHJlZDsKfQojYWxsIHsKICBjb2xvcjogYmx1ZTsKfQojdGhlIHsKICBjb2xvcjogYmx1ZTsKfQojc2FtZSB7CiAgY29sb3I6IGJsdWU7Cn0KdWwsCmxpLApkaXYsCnEsCmJsb2NrcXVvdGUsCnRleHRhcmVhIHsKICBtYXJnaW46IDA7Cn0KdGQgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwp9CnRkLAppbnB1dCB7CiAgbGluZS1oZWlnaHQ6IDFlbTsKfQphIHsKICBjb2xvcjogcmVkOwp9CmE6aG92ZXIgewogIGNvbG9yOiBibHVlOwp9CmRpdiBhIHsKICBjb2xvcjogZ3JlZW47Cn0KcCBhIHNwYW4gewogIGNvbG9yOiB5ZWxsb3c7Cn0KLmZvbyAuYmFyIC5xdXgsCi5mb28gLmJheiAucXV4IHsKICBkaXNwbGF5OiBibG9jazsKfQoucXV4IC5mb28gLmJhciwKLnF1eCAuZm9vIC5iYXogewogIGRpc3BsYXk6IGlubGluZTsKfQoucXV4LmZvbyAuYmFyLAoucXV4LmZvbyAuYmF6IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLnF1eCAuZm9vIC5iYXIgLmJpeiwKLnF1eCAuZm9vIC5iYXogLmJpeiB7CiAgZGlzcGxheTogbm9uZTsKfQouYS5iLmMgewogIGNvbG9yOiByZWQ7Cn0KLmMgLmIuYSB7CiAgY29sb3I6IHJlZDsKfQouZm9vIC5wLmJhciB7CiAgY29sb3I6IHJlZDsKfQouZm9vLnAuYmFyIHsKICBjb2xvcjogcmVkOwp9Ci5mb28gKyAuZm9vIHsKICBiYWNrZ3JvdW5kOiBhbWJlcjsKfQouZm9vICsgLmZvbyB7CiAgYmFja2dyb3VuZDogYW1iZXI7Cn0KLmZvbyArIC5mb28sCi5mb28gKyAuYmFyLAouYmFyICsgLmZvbywKLmJhciArIC5iYXIgewogIGJhY2tncm91bmQ6IGFtYmVyOwp9Ci5mb28gYSA+IC5mb28gYSwKLmZvbyBhID4gLmJhciBhLAouZm9vIGEgPiAuZm9vIGIsCi5mb28gYSA+IC5iYXIgYiwKLmJhciBhID4gLmZvbyBhLAouYmFyIGEgPiAuYmFyIGEsCi5iYXIgYSA+IC5mb28gYiwKLmJhciBhID4gLmJhciBiLAouZm9vIGIgPiAuZm9vIGEsCi5mb28gYiA+IC5iYXIgYSwKLmZvbyBiID4gLmZvbyBiLAouZm9vIGIgPiAuYmFyIGIsCi5iYXIgYiA+IC5mb28gYSwKLmJhciBiID4gLmJhciBhLAouYmFyIGIgPiAuZm9vIGIsCi5iYXIgYiA+IC5iYXIgYiB7CiAgYmFja2dyb3VuZDogYW1iZXI7Cn0KLm90aGVyIDo6Zm5vcmQgewogIGNvbG9yOiByZWQ7Cn0KLm90aGVyOjpmbm9yZCB7CiAgY29sb3I6IHJlZDsKfQoub3RoZXIgOjpibm9yZCB7CiAgY29sb3I6IHJlZDsKfQoub3RoZXI6OmJub3JkIHsKICBjb2xvcjogcmVkOwp9Ci5ibG9vZCB7CiAgY29sb3I6IHJlZDsKfQouYmxvb2RyZWQgewogIGNvbG9yOiBncmVlbjsKfQojYmxvb2QuYmxvb2QucmVkLmJsYWNrOmJsb29kIHsKICBjb2xvcjogYmxhY2s7Cn0KOm50aC1jaGlsZCgzKSB7CiAgc2VsZWN0b3I6IGludGVycG9sYXRlZDsKfQoudGVzdC1ydWxlOm50aC1jaGlsZCgzKSB7CiAgc2VsZWN0b3I6IGludGVycG9sYXRlZDsKfQoudGVzdC1ydWxlOm50aC1jaGlsZChvZGQpOm5vdCg6bnRoLWNoaWxkKDMpKSB7CiAgY29sb3I6ICNmZjAwMDA7Cn0KW3Byb3BdLApbcHJvcD0xMCVdLApbcHJvcHw9InZhbHVlMyJdLApbcHJvcCo9InZhbDMiXSwKW3xwcm9wfj0idmFsMyJdLApbKnxwcm9wJD0idmFsMyJdLApbbnN8cHJvcF49InZhbDMiXSwKW3BePSJ2YWwzIl0sCltwPTNdLApbcF0gewogIGF0dHJpYnV0ZXM6IHllczsKfQovKgpMYXJnZSBjb21tZW50IG1lYW5zIGNodW5rIHdpbGwgYmUgZW1pdHRlZCBhZnRlciB9IHdoaWNoIG1lYW5zIGNodW5rIHdpbGwgYmVnaW4gd2l0aCB3aGl0ZXNwYWNlLi4uCmJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rCmJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rCmJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rCmJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rCmJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rIGJsYW5rCiovCi5ibG9vZCB7CiAgY29sb3I6IHJlZDsKfQouZm9vOm5vdCgudHN0Lm9ubHktbmVzdGVkIC5sZXZlbDI6aG92ZXIpIHsKICB0ZXN0OiBvbmx5LW5lc3RlZDsKfQouZm9vLm5lc3RlbmQtYW5kLW5vbi1uZXN0ZWQ6bm90KC50c3QubmVzdGVuZC1hbmQtbm9uLW5lc3RlZDpob3ZlcikgewogIHRlc3Q6IG5lc3RlbmQtYW5kLW5vbi1uZXN0ZWQ7Cn0KLnNlbGVjdG9yOm5vdCg6aG92ZXIpIHsKICB0ZXN0OiBnbG9iYWwgc2NvcGU7Cn0KLmV4dGVuZC10aGlzLAouYWN0aXZlLmZpcnN0LWxldmVsIC5zZWNvbmQtbGV2ZWwsCi5maXJzdC1sZXZlbCAuc2Vjb25kLWxldmVsLmFjdGl2ZTIgewogIGNvbnRlbnQ6ICdcMjY2MSc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/strings.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3N0cmluZ3MgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL3Nvbi1vZi1hLWJhbmFuYS5jb20iKTsKICBxdW90ZXM6ICJ+IiAifiI7CiAgY29udGVudDogIiMqJTomXiwpIS4ofip9KSI7CiAgZW1wdHk6ICIiOwogIGJyYWNrZXRzOiAieyIgIn0iOwogIGVzY2FwZXM6ICJcImhlbGxvXCIgXFx3b3JsZCI7CiAgZXNjYXBlczI6ICJcImxsbyI7Cn0KI2NvbW1lbnRzIHsKICBjb250ZW50OiAiLyogaGVsbG8gKi8gLy8gbm90LXNvLXNlY3JldCI7Cn0KI3NpbmdsZS1xdW90ZSB7CiAgcXVvdGVzOiAiJyIgIiciOwogIGNvbnRlbnQ6ICciIiMhJiIiJzsKICBlbXB0eTogJyc7CiAgc2VtaS1jb2xvbjogJzsnOwp9CiNlc2NhcGVkIHsKICBmaWx0ZXI6IERYLlRyYW5zZm9ybS5NUy5CUy5maWx0ZXIob3BhY2l0eT01MCk7Cn0KI29uZS1saW5lIHsKICBpbWFnZTogdXJsKGh0dHA6Ly90b29rcy5jb20pOwp9CiNjcmF6eSB7CiAgaW1hZ2U6IHVybChodHRwOi8vKSwgIn0iLCB1cmwoImh0dHA6Ly99Iik7Cn0KI2ludGVycG9sYXRpb24gewogIHVybDogImh0dHA6Ly9sZXNzY3NzLm9yZy9kZXYvaW1hZ2UuanBnIjsKICB1cmwyOiAiaHR0cDovL2xlc3Njc3Mub3JnL2ltYWdlLTI1Ni5qcGciOwogIHVybDM6ICJodHRwOi8vbGVzc2Nzcy5vcmcjNDU2IjsKICB1cmw0OiAiaHR0cDovL2xlc3Njc3Mub3JnL2hlbGxvIjsKICB1cmw1OiAiaHR0cDovL2xlc3Njc3Mub3JnLzU0LjRweCI7Cn0KLm1peC1tdWwtY2xhc3MgewogIGNvbG9yOiBibHVlOwogIGNvbG9yOiByZWQ7CiAgY29sb3I6IGJsYWNrOwogIGNvbG9yOiBvcmFuZ2U7Cn0KLndhdGVybWFyayB7CiAgZmFtaWx5OiBVbml2ZXJzLCBBcmlhbCwgVmVyZGFuYSwgU2FuLVNlcmlmOwp9CiNpdGVyYXRlZC1pbnRlcnBvbGF0aW9uIC5taXhpbiB7CiAgd2lkdGg6IDEwMHB4OwogIHdlaXJkOiAxMDBweDsKICB3aWR0aC1zdHI6ICIxMDBweCI7CiAgd2VpcmQtc3RyOiAiMTAwcHgiOwp9CiNpdGVyYXRlZC1pbnRlcnBvbGF0aW9uIC5pbnRlcnBvbGF0aW9uLW1peGluIHsKICB3aWR0aDogMTAwcHg7CiAgd2VpcmQ6IDEwMHB4OwogIHdpZHRoLXN0cjogIjEwMHB4IjsKICB3ZWlyZC1zdHI6ICIxMDBweCI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/urls.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiY3NzL2JhY2tncm91bmQuY3NzIjsKQGltcG9ydCAiaW1wb3J0L2ltcG9ydC10ZXN0LWQuY3NzIjsKQGltcG9ydCAiZmlsZS5jc3MiOwouZ3JheS1ncmFkaWVudCB7CiAgYmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxJTIwMSUyMiUzRSUzQ2xpbmVhckdyYWRpZW50JTIwaWQlM0QlMjJnJTIyJTIweDElM0QlMjIwJTI1JTIyJTIweTElM0QlMjIwJTI1JTIyJTIweDIlM0QlMjIwJTI1JTIyJTIweTIlM0QlMjIxMDAlMjUlMjIlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjM5OTk5OTklMjIlMjBzdG9wLW9wYWNpdHklM0QlMjIwJTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjYwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuMDUlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyNzAlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzOTk5OTk5JTIyJTIwc3RvcC1vcGFjaXR5JTNEJTIyMC4xJTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjczJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuMTUlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyNzUlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzOTk5OTk5JTIyJTIwc3RvcC1vcGFjaXR5JTNEJTIyMC4yJTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjgwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuMjUlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyODUlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzOTk5OTk5JTIyJTIwc3RvcC1vcGFjaXR5JTNEJTIyMC4zJTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjg4JTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuMzUlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyOTAlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzOTk5OTk5JTIyJTIwc3RvcC1vcGFjaXR5JTNEJTIyMC40JTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjk1JTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuNDUlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMTAwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzk5OTk5OSUyMiUyMHN0b3Atb3BhY2l0eSUzRCUyMjAuNSUyMiUyRiUzRSUzQyUyRmxpbmVhckdyYWRpZW50JTNFJTNDcmVjdCUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjElMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwZmlsbCUzRCUyMnVybCglMjNnKSUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRScpOwp9CkBmb250LWZhY2UgewogIHNyYzogdXJsKCIvZm9udHMvZ2FyYW1vbmQtcHJvLnR0ZiIpOwogIHNyYzogbG9jYWwoRnV0dXJhLU1lZGl1bSksIHVybChmb250cy5zdmcjTXlHZW9tZXRyaWNNb2Rlcm4pIGZvcm1hdCgic3ZnIik7CiAgbm90LWEtY29tbWVudDogdXJsKC8veik7Cn0KI3Nob3J0aGFuZHMgewogIGJhY2tncm91bmQ6IHVybCgiaHR0cDovL3d3dy5sZXNzY3NzLm9yZy9zcGVjLmh0bWwiKSBuby1yZXBlYXQgMCA0cHg7CiAgYmFja2dyb3VuZDogdXJsKCJpbWcuanBnIikgY2VudGVyIC8gMTAwcHg7CiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoaW1hZ2UucG5nKSBjZW50ZXIgLyAxcHggMTAwcHggcmVwZWF0LXggc2Nyb2xsIGNvbnRlbnQtYm94IHBhZGRpbmctYm94Owp9CiNtaXNjIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL2ltYWdlLmpwZyk7Cn0KI2RhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7Y2hhcnNldD11dGYtODtiYXNlNjQsCiAgICBraVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFBUU1BQUFBbFBXMGlBQUFBQmxCTVZFVUFBQUQvCiAgICBrLy8rbDJaL2RBQUFBTTBsRVFWUjRuR1A0LzUvaC8xK0cvNThaRHJBejNEL01jSDh5dzgzTkREZU5HZTRVCiAgICBrZzlDOXp3ejNnVkxNREEvQTZQOS9BRkdHRnlqT1hadFFBQUFBQUVsRlRrU3VRbUNDKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCIpOwp9CiNzdmctZGF0YS11cmkgewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCA8c3ZnIHZlcnNpb249IjEuMSI+PGc+PC9nPjwvc3ZnPicpOwp9Ci5jb21tYS1kZWxpbWl0ZWQgewogIGJhY2tncm91bmQ6IHVybChiZy5qcGcpIG5vLXJlcGVhdCwgdXJsKGJnLnBuZykgcmVwZWF0LXggdG9wIGxlZnQsIHVybChiZyk7Cn0KLnZhbHVlcyB7CiAgdXJsOiB1cmwoJ1RyZWJ1Y2hldCcpOwp9CiNsb2dvIHsKICB3aWR0aDogMTAwcHg7CiAgaGVpZ2h0OiAxMDBweDsKICBiYWNrZ3JvdW5kOiB1cmwoJy4vaW1wb3J0L2Fzc2V0cy9sb2dvLnBuZycpOwogIGJhY2tncm91bmQ6IHVybCgiI2lubGluZS1zdmciKTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogeGVjcmV0OwogIHNyYzogdXJsKCcuL2ltcG9ydC9hc3NldHMveGVjcmV0LnR0ZicpOwp9CiNzZWNyZXQgewogIGZvbnQtZmFtaWx5OiB4ZWNyZXQsIHNhbnMtc2VyaWY7Cn0KI2ltcG9ydGVkLXJlbGF0aXZlLXBhdGggewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9kYXRhL2ltYWdlLmpwZyk7CiAgYm9yZGVyLWltYWdlOiB1cmwoJy4uL2RhdGEvaW1hZ2UuanBnJyk7Cn0KI3JlbGF0aXZlLXVybC1pbXBvcnQgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9kYXRhL2ltYWdlLmpwZyk7CiAgYm9yZGVyLWltYWdlOiB1cmwoJy4uL2RhdGEvaW1hZ2UuanBnJyk7Cn0KI2RhdGEtdXJpIHsKICB1cmk6IHVybCgiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFFQVNBQklBQUQvMndCREFBNEtDd3dMQ1E0TUN3d1FEdzRSRlNNWEZSTVRGU3NmSVJvak15MDJOVEl0TVRBNFAxRkZPRHhOUFRBeFJtQkhUVlJXVzF4Yk4wUmphbU5ZYWxGWlcxZi8yd0JEQVE4UUVCVVNGU2tYRnlsWE9qRTZWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFmL3dnQVJDQUd1QW9BREFTSUFBaEVCQXhFQi84UUFHZ0FCQUFNQkFRRUFBQUFBQUFBQUFBQUFBQUVDQXdVRUJ2L0VBQmtCQVFFQkFRRUJBQUFBQUFBQUFBQUFBQUFCQXdJRUJmL2FBQXdEQVFBQ0VBTVFBQUFCd0cvbkFBQkFKQUZBQUpnU0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFCQ0pnQUJRQUFBQUFSTUNRQlFBQ1lFZ0FOc3N0NEd1QUFBQUFBQUFBQUFBQUFBQWdBQUFBRVFBQUNnUk1TQUFBQWdFb2tDZ0FBRXdKTDQranIwOE9ubDl2aVg5RzJIa0hwOFFXQUFBQUFBQUFBQUFBQ0FBQUFBSWdBQUtBQkFKUklBQUFDQVNpUUtBQUFYb3oyMFZueC9SbTJlbXZuemc5WGhOYzg5b0d1QUFBQUFBQUFBQUNBQUFBQUNFQUFDZ0FBUUJNQ1FBQUFBZ0VvbFY0K2k4L3IrYmVuemJlY084d0FMWG5HV1VYejI2N242K1QzZUZmMDY1ZU1lcndoZVFBQUFBNTZQZDQ4OXFvYmVjQUFBQUFJUUFBS0FBQUlBQUV3SkFBQUFDTFZublMvUzV6NS8xZDY1Rm5MWEwyL05EYnpnYlk3WXlyMGNhYUt6NC9vemJQWFhET3NQWDRKUUwxNnV2azkvRko5SGtoRHZPVUJNYVllbnQ0OHg1ZmJUYktlcGswejkzekF2SUFBaUpnQUFVQUFBUUFBQUFTaVFBQUFBRXRiTmw2TksxUzdaYTViZWNMQU5jdGNwUXNBMnkxeGxDeGF0c3Q5L1p6bmgrbTlQbWdVMXkraDhnTytGcXVOTkZIbDkxNlEyODJ1V3VXM25Dd0lJQUFBS0FBQUFnQUFBQUFKUklBQUFBQ0FiWTdZcktDVGVtcTBxQVdOTTlwYzZyYzlWZXJ6Yzl3Tk1yVFJsNkxWT3M5Y3RjdTh3c0FBVEdzc1pnSVNZQUFBRkFBQUFRQUFBQUFBQUVva0FBQUFBMngyeEFSdGpzdVNDU2lSdFNGcmF1bm45ZjBmSHp6eDlHYTdybkZlbnMrY0ZtdVd1VW9JQUExeDJYRUlBQUFDZ0FBQUlBQUFBaVFBQUFBQ1VDUUFBSmlTK2VtWUEyeDFNZ2dHMk8yS3pmT2M5dEZIbDl0ODAranlhWlh6Mjg4MnA3OHQvTmw5RjgvTFdMUnBsQTZ6QWJZN0xpRUFCUUFBQUJBQUFBQUJFd0pBQUFBQUFtQktKQUFOY3RjZ0JybHFaQUdoYkcxUUVBYlk3TGlFdHBuZngvUzZYT2hqNlBSNWx0dk5pUFo4NEJ0anF1UUFBQUFBQ0FBQUFBQUJBRXdKUklBQUFBQUJLQklOY3RjZ0JybHFaQWJZN0dJQUFHMk94aUJlbXM2Vm95M25YSFhYejVDd0RYUFhFQUFBQUVFd0FBQUFBQUNBQUFBbEVnQUFBQUFBRzJXdUpKb1o2NytpZGN0MG9UbmEraUR4cGl3QUJxeklBMngyTVFXbTJRQUw4Nlh4Ni9LNDdxTmNBQkJNQUFBQUFBQUFnQUFBQUFKUklBQUFBQUxHbS9SOTJlbmw5UngyQ2dBUjV2VVRrK0Q2VjF6OG83L0swNHl5Mnh2SURXc0ZRYTVhK3lYRHkrN3drM3BwNWZkOUZ4Zk96Mm5QZW5lV0E5bnp3QUFBQUFBQkJNQUFBQUFBQUFtQklBQUFKNy9uNm1lZ2NhQUFBQUFBSW1pZUhqL1U0ZDgvTnRNdE10c3RjU1VTZTN0MGpMYjV5cHJqT3VPMmVwazgvcnZla2VqeVVHbVFBQUFBQUJBQUFBQUFBQUFBQUFsQWtEZkR0enJvU1k3QUFBQUFBQUtYb2x3dVB6MzAvazY0NGVScms5WGw2c3ZYeDJZN2ZKdmI0dDhKMG5FR2hiRzlBQUFCdmgwcGVhMnhzRUV3QUFBQUFFVEFrQUFBQUFBQUZ2cWVEOUJub0hHZ0FBQUFBQUZMMHVnS3BlaWNUdy9RZlA2NU8zeE80ZEFaYlI0ZmVUblU2aXpoK2I2WHc5YzhFYVpsNEtnQWR2amZUOGQ4UHc5TG05Y2hZQUFBQUFCQUV3SkFBQUFBQUIxdXZ6dWpqc0U2QUFBQUFBUk5FWEZBcGVsMHorWCtyK1UwNHY2c01ldVBySGo5bU93S0FCODkwL1picmxFdWV1ZnlQcDQ2NCtUbjZIWHJueDlJejA0bk45bmoyeEN3QUFBQUFnQW9JQktKQUFBQUFQWjMvbFBUeDM5SXczejBCUUFCVXNBQlJaSkNxMm9rMkZqNWI2cjVqdk9jZGN0T05PL3dET1R6ZnEzSjZXZXVnbEFBQUFBVXZ5Yk9WVTJ3QUFBQUVFd0FBS0FDQUpnU2lRQUFCMHVicEw2UFIwSzhkN2E4R1plNjhYczU2a0s4M3BKNHZUb0JtTklrQllyR2lBcmlkdmw5YzhlRFhFWE5xNitPWFN0Vm5ZNnZHNmVXdWsvSjdXZlR2RjdlT3dVeTVsbnI0Q05jZ3ZJQUFCQUFBQlFBQUFBUUJNQ1VTQUFXNi9HUy9XWi9QOWZQVER4L1FqaGV2MytZMDM1OVY2Ynhlam02NWxKdWlrYVkxRzdPTkZCYk91OWZNWS9UY2JUTHkrakcxbVZTeExzeSt2eDlUNW5QVEFhNUxWR3NabEJBQUFDQUFBQUNnQUFBQUFBQWdDWUVvRWdBMjZmR1RyNm5UNVAxOGRmUXViN2VlOWFURUwwQVZDbXFWdk5KYnFVTEY2aTBWakREMzFzNXQrbU1kbU12azRkNmJaQmVRQUFCQktBQUFBQ2dBQUVJa1VBQUFBQUFDQUFTZ1NnU0FEZjJjeEwzdlY4dTU2K3RyOHg2SmUrNU84Njl6SGFXSzIwRkNBcEVpdWxPYW5RK2VwVFRNT3VRQkJLQUFBQUFDZ0FBQUFRSVRBbEUwQUFBQUFBQUNBQUFBU2dTZ1NnU2dTZ2FhK1pMN3I4NHZVbmxJNm1IaUY2dzY1bEFBQUFBQUJRQUFBQUFBQ0VBQUFKZ1NpUUtBQUFBQUFBQUJBQUFBQUFBQUFBQUFBVUFBQUFBQUFBQWhBQUFBQUFBQ1lFb2tDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0VBQUFBQUFBQUFBQUpnU2dTQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFFUk1BQUFBQUFCLy94QUF0RUFBQ0FRSUVCZ0VFQXdBREFBQUFBQUFCQWdNQUVRUVFFaUFoTURFeU0xQVVFeUpBWUNOQlEwS0FrUC9hQUFnQkFRQUJCUUwvQUtGS2pNUDAvQ2VQRlJpMzZkSElZekpNMGdxVVIvcUM4U1RjL3BkNnZrZUVlUVFzUDBLM0pIRXlIN3NzSjJZbU1hZjBBVm9WbzVvOURiNCs3T09ReG1TZG5GU0dQVHpoaDJaR1VxZldqS1BFYVZtZjZqUklHWnhadG84ZVEyS0wweHVjN2NyRHRlUEZnV3RVa1JqOWl2RTdXOGVkNnZrMzJqWmhLbmhCSElCSW9rbkptSnBoYjF0OHIwdlp0azY3VXJydGpjeHMrSnV0YTEra1J5cE83MS8rVzJUeWJXNExzRzMvQUM1TW5rOWUzWnNUaTU0bllndXpHN2JiMWVyNUR4OGdjUy9mNjk5c2ZrMmpnbENtaGNEZU96a1IrVDJFbmRzajd0cjhNaFNtNjRsQXJoYjB5bFRzWHM1RWZkN0NUeWJFMm9Mc3h1Y2tsZEtaaXhVbFdkeXpNTGJCNCtRblQxLzl5ZCt4T214ZUM3NU8vSUM5ZEU1QThYci9BTzVPL1luVFllRWVkNnZrQmN1YnZsaGZMSkVyaGhZMjNueCt3azhteE9teVRydWk4bVFwVHBQeXVCNG1PUUlwNmJYOWpKMzdFNlpvTHV4dTI1T21RMm54N1pQSjdDVHJzVHBuSDEzL0FPV1k2bmdiNVAwMlIrVDJMOU5pYkI0OTdkdWNmZm5KM2JFOWtmSHNqNjVueGI1Ty9OZTNKZUxOM2JPa2ZzUjRzbFJtb1lhVTBtRllINGpWOFI2T0ZscDRwQUNDTjBmZnM2UlpSOTJ4YWZEY0NMZXhUcEhoM2VrZ2pUa1d2VFFSdFRZU25pZE0xNExza3pUdHI2ZW1PaFE0RkhEcmlMR1ZVTFVSYjF3Qll3WWNKenBNT2oxSkE4ZEhoSG1ndXpHN1pmNVlhSFZXS2U4bERZamxEM2V0QXVZSVJHUHdKTVByVmdWT1NjQm1rZXM4RlZqYzVmMWtUUisyUDFtRWkvQmJwVXNTeUNSREcxSGhIbkdtbForRU9iY0VxOUlOVE1kVGVyaFQ2a25UOEgvbGxMR0pGWkNyeWQyV0hYVkxVb3ZGbkozNWRzZklpVFczbzhJbGsvQlhaTWdPekJEamxpSWlqVkgzWklOVE1kVGNqQkQ3NVJwbDlDQmNxTksvZ04wMmRXeFVlaVRMQmorUElpOU5oWXpRd29BK0dLZkN1S1AyTHljR3RvOFdQNXZRNFZiemZnOVcyTDB4UzZvY3NNZVJpSWRhNWFXTkZTTm9Hb291bE1iNWZRNElmaEwwemJLVGpIU0M3UXlXbjVFc1ordkZoMVRLMTZrd3F0VHhzaHl3MEduTEcrVDBPRDhmNERiUnhhajBwT0FyRHkvVVRmcEdyWVFEUnc4UnBZa1RQRkc4M29ZSnZwc0NDT2VPSnpKc0FMREp1NDhJNlJ5alJTcklPZXgwcVRjK2lpbWFNeHlySU9SY1gyTnQ2dG5JUDVaTzdJRWd3NGtrcTZ2enNaSjZTQ0tPVkhoa2lxUEZrVWpxKytTUFZRK1FLWFZtT0oyTDB6bFhUaU5rWU5tTmhxYXJtc05Nek5WeHlKNXhHQ2JuMGFNVWFLVlpSSmgwZW13OGtkSmlwRnBNVEcxZGVReHNOaDRuWmk3NmN3Q3hrT2hjOEV2M1ROcGlwSkdqTWVKUjlqU0lsUzR1dXZwZ1NERmlnY25qUjZmQjE5T2FLbHhVZ3BjWWxDZUpxdmZZT05XSXJWV29WYzBPR3cxcDFKSWhqYWxVc1Z0Y201emdUNmNlTmI3Y3dTSytySlJkejZ1T1o0Nmp4S05tVVZxT0dpTmZEU3ZpQ2hDd29LUlIrNnIyMkZnVFZpSzFWcUZNVGxMR3NpdGgyUXMzRHRqencrSDA1VFA5U1QyU1N1bEppeFN1cmJXTnFYcFdrVmFyQ2dPRjdiRjQxeEZhaGs4VVJwc01yVjhPaGcxcElrVExGeTZWOXJlMUppWkZwY1docFpFYWliVUJWcXVhdlZ6UjFFZzN5MGlyVVJYYm5wRldBb2NEbkpJSTFkaTdlNVdXUmFYR05TNHVNMEpFYkltMUFXQkY2KzZ1TkVtaGNaYWE0MTkxYWEwaXIyeWtrV01TeUdSdmZCM0ZERXlDaGpEUXhjZENlSTBHVTEzR3JFVmMxYzE5MWFhc2ErMUtseEtpbVlzZjBVT3dvVHlDdmxTMTh1U3ZtTlh6R3I1alVjVEthTEZ2L0ZEL3hBQXBFUUFCQkFBRENBSURBUUFBQUFBQUFBQUJBQUlERVFRU01SQVRJQ0V3UUZCUkZFRWlNbUZ3LzlvQUNBRURBUUUvQWZLdmdjd1g0ZUNMT3QyN2VXamhmNmlLOExETHV6YUU4WisxTmlMNU0yUGdjMFg0RmpXaVA4aHFwR1pEd3d4N3hHTjJld2poUWlLTmNUUm1OSjhGZnJ6N2VNMDRGR05wRkxJQm9weTB1L0hnaWszYnJReEVaKzFOaUFSVGRyNDQ3eTZMZFB2VGJoNDh4djB0MVQ4eU1UR2orSTY4dTJaaUhzNUorSmM0VjBjUGx6MDVHTnBUNkFzcDdzenIyUnZNWnNJWXR2MkZOUHZPUTc5amM3cVQ0aTNuOWJHNG1RSjhycE5mQ1lhT3ptVFlTQ2ZTZEF4bzhOREx1eXZreHFlYmVjaHBzZ0Fza3A4WUl6TlJqYzNtUjRiRFpTMU5ZMXVpeER3MzhmZmhtT0xUeVh5cEVTVHpQZlVWbEtvOUtKbWQxS1NJZnN6VHVRMzN4WkFpMGpocTBWaG1OSXpJUWdXcFltQnZydDJqNzZKYndBVnNpbE1laStXMzBwSlRJYjdZQ3owM0M5ZzE2STE3Sm5VY09hYnJzcFpRaTMxd3NSMTdGdW5VZnhCdXd0V1JBVWpyMkxYVjFIN0FhUU44Wk5ka0ZYcFp2ZlNkd3QwV2ZhVFNKdnN3YVFjQ3NvVkZjK2dXN1FMVHVRN29FaFoxZlJwWlJzSnZ2Ykt6ck9ySEZkSXV2d2xsWmlyUCtFLy94QUFuRVFBQkF3SUdBZ0lEQVFBQUFBQUFBQUFCQUFJUkF4SVFJQ0V3TVVBVFVFRlJCQlFpY1AvYUFBZ0JBZ0VCUHdIMnJhb2Q2ZXErMVhDMkY1L1RWR1hoR2s4ZkNwMGZsMkRhb2Q2RnhkZm9tT3VHV28rMVhDMkY1eWdaRTVpWUVwdFdlZXU4UzBxNHE0cWtIQWE1S2pMeENOSjRWT2tabDJMWHVpVmUzR3M2MEsvK1lRZTV4UTZ6cVRYSnRGclRPelZtMlFyaW15VEFUUmFJd2UwUEVGSDhkeXAwck5lKzQyaVUyb0hZR2l3cHROcmVQU1ZueC9LTlJOcXZKOU5VcDNoZUI2cFU3TlRoVkpqUk5lWmdvT0I0OU5Xa09SY1NxTFNkZlRPYUhEVmVCaUFqUWQ2UXJncEcwOTFyWlRIL0FBN3NsMzFtdUtEcHl6Q0NyT0lNTHlKbFJ4UFhjZGtPeUV6ZzlnZXYxeW1NRE5Pc1RBMjJuQThiSjQ2VDl4cDBUdU1KVnhRZDk1WEljZEYzTzR6TVhZQnl2Uk1vY2RFdG5jWmdSS0lqT0JQU0tuN1Z2MXROeXU1Vm1JRW9DT21SS0xTRmNwQzAyQTdFbUUzVTlvZ0ZXS05tVmNjQUk3c0sxV3FEbWlVQkhwSUN0Q2dmNFQvL3hBQXhFQUFCQVFVSEJBSUJBZ2NBQUFBQUFBQUJBQUlRRVNBaEVqQXhVRkZoY1NJeVFZRkFrV0FERXlNelluS0FrS0gvMmdBSUFRRUFCajhDL3dBQ3FEOFFQS3RqOFBvb1lCd3NmaUd3VWZ3L2w5QitHOFVlVmJINEVBUW9YRWRKSWhRd0RoWUZmTi9hQ3JtRUdnb3FCTUVRSm10NlQxd0NqZlEwUVBsd2o1ekhhWmtlNTdIM0swclRPTnpRd1ZURjFURkRqTUdqTUJ0TmEwbWlGQUIxbXpYVlJ1dlF6RDNNWmd6N04xN3VqbURNbzVSbWpkTlhUWE9ZRGlVVEU2MGZFaTRhdVdlYzI5R1lNNlBCVlBLZ29HVnE1OUhNVEsxeEtFUytoVVNvaFJLSEVqVnkzeG1KbGE0bGFONFJjbm5NVEszeEtONXdFMGQzaGJxRnd6em1KbGI0bGhvSnh0V1NJWGJWUlJCWmpGUm1aRzJZbVZ2aVFJbWRvN1hBNW1PWWppVnJpUW5RWEIzTWtGQjdJMmxHWk04U3RjU05YREE5eWNYTFIyekptVThHUWJtNGhwU1JvdkNNcDNPWkhZdjZXU1ZnQW9raGR3V0lYaE05SlZaaDl5amMzUFNjeWFHeWlla0xDSjN1S3J0aHd1aHI3WFV5OW8rcFFOQTlvdXR0K2NCSkVJMlZBVnkrQVVXcXRYMmgyV28xVEkxcklBaVg4bFcyc0ZEU2FMS1AzbHNBcTkzd1lpaFVDOXByYVJobnhpVndpWHhraDVOY3R0bjE4R0dycTQ2cURUZ05heXRTTWozSkhMQVBoY1BnVlpPS2hwUjRjMEpPS1AzYXVTTnNrdGEvQ2pySUdvZFF3a2FMNGp0ZEhTcjlsRzVKMlRRM3lJQkFmRzRVUmdYa3ZxcVVSRnJGZDZwVldmSnh1aWRVY2lHM3d1SmpzOHNhQzR0RHVEOENxaVdBUVpRNHlKby9HaHE1b2JPQVVmQnVTeXlNVjFWTHFycG9WMUI5dHJGdzR5STgvQmhLVEkwMXM3Y1hGcnpMVmRxNldYbmJJdjZTb2o0RWJnb2J1aUZ2cDhBaytFVGtlMmlvZlZ6QzY0a2FHNmhwUjhRckxZOXJwTWI3OXNlOGswYVVSOWhRL1VydXVrenhaTmxyVlZETFM2b2VueGw1a2FhOXltSENzczRMdUt4VmhxdTdzUmNRSGNvbkpJc3JmUmFIWlJacndvTlZXTm5sVXZZUzA5eVFDL2JIc3lOTkpvN09peVZYcE1uVTBGRDlQN3llSVVQMUtidTZtWXJvYSsxU1BwVmdWMUFoZDRsaXFLc1hZZmF0SHpMQStWQXVvckxPSGs2cU1nSG55Z3hySlFydmErMVZvL2VWME5ORlhwTCtwa0Zkc0ZpVlJzcitjMHF0a3FDNnBJT3Bnc0N2UDBzS09nVjFkdXFnS01yKzZTMjNqbzRuTStrcnJFRjBtTXU4bmNWVlY4cXYzSkhWVXdmVUlRYUs3LzhBaXEwVjBoMWdZbk5xTEdQSzZoQmRMUWRFNHFpd1dCV0V1SlVGcy9CMEpJbEZvNTFScGRUTVZXSVZHaE5nNkxYbCtLeFZhdWdYUktpYy9vMFZqRlZaVlloZHlvUXRuVVdDd1dpeEt4VlN2NGVPcWkwZndhalJYZVZpc0F1MExzQzdRc1lLcGovcFEvL0VBQzBRQUFFREFnVURCQUlEQVFFQkFBQUFBQUVBRVNFeFVSQWdRV0Z4TUZDQmthR3g4RUJnd2RIeDRZQ1EvOW9BQ0FFQkFBRS9JZjhBd1VVRTVBcXlJYjlPMVROeElFWTYvcDcwcE5RbndBUUVCTzhUK21BNUJEcHVGT0YzNmNFcUVOWm5qRTBKeTFVUVIrZ2lTaWRXNklNQWFwd3dLUVlzM1hSVEJpS3JWTjMrdEFBaERKejBhZENCVzN4MFhxVkNpY1lCRUlnaGoxUlZDSkJPaUlBREVkdXFUSVlUaTFDRlJqRFJBYlJkRE1IWTF6UU5jTVJaQUVUZEZGT1dRT0Nib0NxR1BWQmJuZlpCS0UyTjJ3Vnl0SzlBSk9hRjAvMTZaaDdLS0ZhOHNyWHZoRm9HRDNSRXBqbkt1WXRrVmN4YjRWTzVJUk0xQTlzQlpNVGhGSWNJWm9XUS93QjVoQUpLay9LSkpFbXB5QU9FQWVZWFQyekoxSnh2RVlhRGxCeUV1cUF0OFhjS0J2bENxOUtXemJzUFJCS3J3elhUbkgwc2R3aUhaOG9zN2dqZFhPVmpCcFVweXV6bVl2ZERvaXlMbEc1cmwzRFRzT1d0dE9iZjBHRlNvSTNDSWJQOGZvKzJJeVg3aHAyQXkxTnZpemVLVHpoV2hES0VMU1VBN0l4Z0E1T2lJQU1Sb2N2dy9ubzFEWW50M0gzdVg1dVZwTGN3b1ZUSUEwVmluT3VVRlZ3akt1VTczQWNueE9qQTMzSTdnS0Y3dnBINGl3eEJmSVM2MHJBRDJ4MEFkY2lUMFlGdUErZTRDaGU3eS9WM0dXQnVmSTdBUzYza0xMZVFzV1NXS3BKdEJUanFDZG5nSzVIdUFYdmN2MWR4bG8yQXoxSDBFNHlSQUVrSnloT0ZVNEVnRGdmTkVXaDk1L251TmRmTDlYY1pHQnV0d0RuaFpOOWNTbklTd1VONGpsRWxrZmhMZW5jYXE0ZEU0WEIwQkgwVy93QnlQSVhJZ1N3cGlKZFE1ektMdTBCY29seVNkZTQxZVY4M0pFbDJIUWp0UGRrcEhrcTQ2ZGdCbGlMZnpqdVV6V0pHWDZxMlNHNkhvVi9vR1NPeWJFV1c2TnpiNUJLb3RRZTNjcGNoajhPQ3FuSUswT1JFY1lVZEpZRkFYQlF5ZVlTMG9nd0VjNWhkNmdsNFJMa2s1REEzTWRld2ZLRGxWN3hzZFVZcDdqTzZUMTBTdmZKMEJBR0FIbGFNTHdYOVlsWEd1S1krTHM4NVlHMll3MlRZYjh3UU9udUlFTi94SEdqd2lySkxaR0pqMjRZQzVLWWY2anJTd0c4a3dSc2x6UWY0Wk9URnVRY2FJUG1JMEYxRjZSd3J5T1lZcXN5YVNQYlNBQTVLZWNpcWZ3RFNhSnFQRFRSRklXSXg0QXdlY2g5SUJHakRBRTVtcHhEbXhURmhRTnk0N2F5RzVQNEwxaHNHSERRaFlMemZEY3hmWHppQTVaQWlxUktKenRrNUk2T1U2NlpBYVZKMlQ1Ullkc3NqcWdBQUFvUHdhOFdPcDdRMlRHcWtjd3BpTS9RU2NHb3RpQTVBRlNqRGdLUWVNZnNhZEhta1IyUjdPdngvQ21EY2ZJMER2VVpQWk9KV0NWTVBUVU1uQ0VNQkpOZ255Z2FDdzZMbHNteUhZaldhbEJBNkQ4SFF2Q0VCc25zbEFHcmkxY0hFQU1EaEVYZHhRYkg0S3lYb2dybUJRMlUrd1c2VHc2a3h2QWRpOVNQd3ZSeUNXRG9LelV5bkJyTEZvMkE5QVJnL3lZaWtONFZTQnlNcHcxaWdDTkFnN0U1L0QrQ1N3Y29LalV6a2sxN0FOd0xEa3hTYW8zUjFWRGhCZ1FXQTFFUUJnQlUxL0dUV1kzd0FKTEFPVlF1MFc3STR6WC9CU2EvTHdDQmhWNHc0Z3pBVEJON29TR1NEUGxBc0FJM1JSNGNGVW9Cdmo2UGRpTTBkeERSWEIvQW1lSXlQQlRRTURRb0dCdW9LOThBWThoUnVOWDRBZEJBNk1kcVMvWTRsT3RIdE4wUU1RR1JVWlNoaFV3Z0dEWkRBTkpaU1NwVXhIRU1VRU9OaUhPSHJOVjM3SUl4SWRYUnlZZ0lpQmxsVUhjWnp2d2FHZ0lvZHlkbERFTnNVblFJR1FsZzVRVkdzc2p3VUFXdVE0OVJnZ3VjS201V2w3aUF5NEorVmJ3d0VkUmVVQ0RJTDU2eUQ5a1FoSEo3SUhHWWhSbU5hU2JieUhxTWExSWl6NXdWVjNFQkFPVGpib1JGMEFBQUJraWVaeWlUZ2dGaXlEQUpUUWVrZzF5T1dJWmVoN0QwNE5DaFRIc2xBZ2h4T05NR3lJWUczSWtrNUxuc3cwVWdqVUpzbWVoQWdod1hDQXhia0NyV3lFNXdIYzFEK2FHUkhza3FrZVNFQUJ3UWNhSVpIclRoYm1MRk0wQnlGemVpSnFNRjBmTUpGVzJRbUJKVFNqM0l0OFp2Z3dQSTJSV2pLajJXdUlEbGhWZVZYSk1oVkp6a3F3T0N2OUtxbytlMWpQckZGQytaUkF2VEQzb0F2NG9LT2lOTkZ3dkdIdnh6QlROTWFsQ2xEZlRJSURRMUswVzUyRmJnZU1BS0lEOVI0dzFVNkd5TUNVTkNkWjdGK1VKVHFYdGlBU1dBY294QU95eFVWdDZEanVkZldzYUkrT2NFTGNPVXlpU29tVTRXSTRUMEVRZHg1S2ZKaU9qTUlDRFRBbHFxcDlnbXVyTElFMWxRcDhZTnhDRGtBQUdDYW9XdTRoVUZCdmhKbC9ZZDJCRTVFSFpWWmxLNGU5VkVlVXdUVndqTnpZcG12cFQxV2ZXVURKeEM0QnRnYkRjWVlaSWVTOVhWVGdjTElFRU9DaUFhZ0hCQ2tBVlVvYVpEZnhpNktUSjd6UkZISjVsQVVPQytRS3IyODROSXFhWVFIbGRNRkNEeW4vd0IwQ0hZRHludm1iWUVDWEVIWk1QOEFjSnJIb21Hb2tucXVmS25xYm9FR2hUN2VCZGFPOUJidjlOSGxHbkljZ3ROK0NqcUVhSkhLcWk4clUwZTVWVnFNV0t1KzliMVNzbmtMNlFpUU9BYmxPUUIwVDhIOUdvQThxaElBTkI1Q0dzUkQvdEwvQUdFZEVTMDF3Q05PYmwvOFVQL2FBQXdEQVFBQ0FBTUFBQUFRQ0NTLy9EUjk5dEJCQkJSMSsrKysrKysrKzh4QkJCQkY5OTVEWC82Q0NDQzIvdkRWOTl0QkJKQkJSeDg4ODg4NXhCQkJCQkY5OTlCSC93RDRncWdna3Y4QThzSFgzMjFHcWtJRUVFRUVFRUVFRUVFRVgzMzJFUDhBL3dDZ2d2aWdnbHYvQU1zSFgzMnpENklrRUVFRUVFRUVFRUYzMzMyRU4vOEE2Q0NDK3VDQ0MyLy9BQ29zZmZmVm5Zc0NBUVFRUVJ6VGZmZmVZUTMvQVA2SUlJYjc2NElJTGIrN2QzclgxYS9IazAzZ2swM3NNelQzRUVkLy93Q2lDQ0crMisrS0NDQzIvTy9oQlYyOTllOTlPS2Y5L3dCaitnUXovd0QvQU9pQ0NDZStTKysrS0NDQ3kvOEExVDFnZ1lzOHZqUGZ1Y1lVaWgzL0FQOEE2Q0NDQ2UrK0NTKysrS0NDQ1MyVi9xUExKYWhkQ0JxRERETC9BUDhBL3dEeUNDQ0NlKys2TENTKysrT0NDQ0M3MnY4QS93RDFyOTg1MlpyL0FQcC8vd0FnZ2dnaHZ2dnVnclF3a3Z2dnJpZ2tpUWw4dW52L0FPbitVM3YvQVB0eUNDQ0NDTysrKzZDRDl0TENTMisrK09DcENWQ0JDeXloeWxhSGlDQkNDQ0NHZSsrK3lDRGY5OTlMREMyKysrK2xDY0pUQ0NDeENCQ3BDUUpDQ0dlKysrK2lDRGY5Ujk5OUxEQ1MyKzYyUDg4OGY3SWhDWkN2S1BNUCsrKysreUNDSGQ5OUJSOTk5dkRDQ3kxODg4ODg4ODVBT3RLNCtQM2orKyt5Q0NEUDk5OXhCQkIxOTk5UERVODg4ODg4ODhqOFA5cHIxVjQ5NnlDREJIZjk5OWhCdEJCQlI5OTk5bDg4ODg4ODg4bjhuV3A4ZnZmQ0JDRFRWOTk5NUJCQjl0QkJCQng5OTM4ODg4ODg4NzA4WEV5Lzg4ODBNcnorZDk1aEJCQk44OTlKQkJCQnhlLzg4ODg4OHY4QU8vSndGdVBQUFBQUE9PWVFRUVJYZmRQUGZiU1FRUVE2ZC84QXo5LzMvd0EvOHNkNUZkWmJ6OHd3QkJCQk45OThBUTg4OTl0SkJCUmpGSEV5VW5RR3pnZHA5aFd4aHdCQkJCTjk5OTg0QUFBMDg4OTl0TkJCZzE4dnJvNS9qMFBmdmZvQkJCQkZOOTk5ODRnQU9BQUFRMDg4OTk5Tk5CQkJESjBBQVRBUS9SQkJGTjk5OTk4OHdBQUErdUlBQUFRdzg4OTk5OTlOTk5OTk9jdWV0Tjk5OTk5ODg0d0FBQUFPKysrdUtBQUFBdzA4ODg5OTk5OTk5OTk5OTk5ODg4OHdnQUFBQU8rK0MyKysrdUtBQUFBQVF3MDg4ODg4ODg4ODg4OHd3QUFBQUFBTysrKytDQ1MyKysrdU9DQUFBQUFBQUFBUXd3QUFBQUFBQUFBQUdlKysrK3lDLzhRQUpoRUJBQUlDQWdFREJBTUJBQUFBQUFBQUFRQVJJVEVRUVVBZ1VXRXdVSEdSY0lIUm9mL2FBQWdCQXdFQlB4RDdyM0I3L0gyZXlvNUtpRk9tRHJadnJFUkkvWlU3dzdodDRmbUVMdnl6S3p1VDMrUHNKUnN0K3FtRkd4eWVqcUttbkpVQjFtV2R0dnRvanN0bnFyVDNHdXVoKy9IQnpRa3daaVVPalZYTGQvYi9BSGxqKzA3aE40Zm1YRC9MTjhNeDJLei9BTE1nRTFOY0V3YWFNTVE0bWJoVGZ2OEF1RUVhZU1SUnMrWjFZUjVkOHZ0d0ZRd2xSQVUxSDE0ekxxdFh5bVdaSTRxb2p2eUhmQnZramdlNGZUUHVPQWF1L3dBekhQRWZRYmo1RHZnM3oxRUl1blg5UUFYSzQxc29yZmR4S2E0ZlFiOGwzd2I1WXQyeGd4YS84bG8wbzdqQUxvWm9yV3ovQUNGV2c1UEpkOEcrWGZKdmdEYXlXUzBwQ2tGdTNQWGt1K0RmQnYwSEZ1ZFRCVm42aXFscnoxNUxLdUYycDhFbzY5SFhCeDF3QXZVQUtXUDJlVGhnQTE2RUhjVTF3RHgxd0pBU2cwUVQyRmptV0VxTHNIc2U3OGV2TDZETDhrU284VUw0U1hUMmhWbFhMZzEwZU5pUG92QTVSekRZSWxrUkdtZGNQb05namp3Umkvb25ES09VaDNQZ2xKZkN1UmJjM2VDS0gwR0hCN3pyQnFtRFpaNkFHK0JkUVVBVVROZURvTUc5ZXZ2aDQ2Ump3T25yb1g0U0J6Qm1YQ21CQkhYQ1hBcUxVT08rTk9YR0pjVG13OXhCSFhBN1IxNGFhVEFNVzFLZE12dVFYMmw1bGUwV29GU3liWXc0aGpoRkZnT2JmSDBrQjNBT28rMDFNUXE1a2lzSm1JN0o4RXdFdVg1b1dtQzdsSVBCSFRLdk0vUEZmRWV5TjlqV2srYWZKRnUvNEovL3hBQW1FUUVBQWdJQ0FnSUNBUVVBQUFBQUFBQUJBQkVoTVJCQlFGRWdZVEJRa1hCeGdiSEIvOW9BQ0FFQ0FRRS9FUDJyVmE5ZmY2ZkRLdzNEUGJnL1dEK1lJbG42VWFlNHBERFIvaVlDTlZyL0FMK2hjaFZVeTJuNGR5dVdZWVo3Y1BWcUFBNytWMTZRcUJwZjQ4ZEFIcUJ0M21XT1pRZVpBaVUxRFVPUzViUFV4Q3RYemhFdzNHOWhNTlcrdlVTZ3UvR2N2VE84SWNtdVQzeFgyU0JpRHVIMmlWdHJybEJZd2t2V2JZYThnMXc2NVliK2t4R24xdzVkVk15TXcrRHFIa0d1SFhQY0lXTmtCQkRKTUR5K3ZxRFp3ZkIxNUpyaDVJSDJFUWRUN1JEVUlCVmJDZTMzSDZWOHZrbXVIazF5NjRiQzhPWnNHS2pjSFBma211SFhEcjRQRkFGOEFVMGM5K1NUVWF0ejdKWjM4TytIanZpNEVWYXFmOStVbFhmd0ZOUUxjQ0RqdmhBVmlVdGp6cTFGdFl5UXJsZmZqMzRQd0Vyd3diaHhZcmd3SGNiY0pES2VmQnhUaUVkS0RUQkVzbmZCOEhWb04rQ3MxK0Y1czVRalUreVd0ZkU2S21yd1ZsK0E1WjJpWFpFcHArQ0pYQ200aUlyWnE4SGNJbGIrZlhCeDJoRGhOdm5ZcndncGlWY0dOc3FJbStCcUxjQzQ4ZGNiY21jeW9EQWo2TVJOOExwREhoaHRNZ1FSdVc3SlhWaUh1VmlYRE1jeW1haEptT2VBRUdSNW84ZmFSWFVVYmg3bTVtTjFNUUNNeEJkTSt5WldWSzgxRHVKNmw0bEVUWkxxZjI0djdoMFEvd0JHb1o5VStpQmRmMEovLzhRQUxSQUJBQUVDQkFRR0F3RUJBUUVCQUFBQUFSRUFJVEZCVVdFUUlIR0JNRkNSb2JIQjBlSHdRR0R4Z0pELzJnQUlBUUVBQVQ4US93RGdySWRLVTdSUCtPQ0JOS09acytoRldhQWdUT2M2aTZGUW4vR1FKUytKc0pnMFptaVVMelFCMnpvaVhQRnBJWS80dVkzNUZHRDl2U21jQWxNR0IveFl4aFJxS2hVdUZhTFh0TEh2UHB4T0E0eGxUcUkyL3dDQkZpaUJJRGhKajRMM0VvQ2dlWVhRTGNERW1uQU4ybWdNa3pLUzRLVVluanBHUG1BbTZvWkJ4dGFrZFp4TFU4QzhNRjd3dDd4eGdSTldBSTJUQnE0a1loblVVWG9KY2xOQWtaK0xlS1pmUkk3ZTlJRnhBK1hZTkFHU21nQmpNRlpLNUFvTzdDeW9jSmlCbnpiNUU2WXZ3Y1pDT1MwVVBWME85WWlEZ0dScHlMWUZpN0JoU2p3SkJtaTJtT05zcW1TQ3h1MG1RY1hLbmhlRXBUNVlvRHlURjZNTm5kaTM1am02b04zUVBseG1oWmsxRGVsdGhUeUl1NjZPM0tXS0RDRTZYbjZvSDVwUXdINXJBSFBXUXJlOENocmU4Q2w0UWlzRUVwaXM0U0hWOHNYY1VKbkZiMVRXTUszNGc5MmZybTZBdnFmbHpFZkpXYTVDbktsSlhrRGNxT2xRaE1CcFNzNVlaRWRLaWdYRmRPQ2lSYmlEdnk1YnhXTWFrVFZ1a0h0OHdiVE4zc0IrK1VTRFZwV2NsOU52cm10KzNxRGdlbktzdVNJM2E5bTl4NWhHRFc5U3JpMFkxaE5SNkNQcnpEdU11Njh1eVk5NjMxSDM1VHdKOUFwVzgwOXVZMWNCR1ZLckxWNGFKOWVEc0dGYjNyM2ZNTFgrd2N2ZUhzdnpMVlhzWXZBektqN1prNGtkYVJYNTc5dVh2NEpHWEFSNkROSlJZclBtR0xvSHR5NDNVZS9tdEJxOVM3d1VTMHBNUkJSeEJZREpta3BLZ0JkcFFXS0M1eTJMcUQyZURiK3JqajNqekhENlE1Y2EwK09QdmxrekNaZWhlcEV6R3NLb1RPZE83N2tTRk9Idm0wNDBQSk5RQnVrUVVRQm1SMmtua3NYVkh2NFBRc0RxaDhUNWg3dzV1dFhSZTZIM3k3M082ZUpEZmlzRXRTSnF4ZnI1UHJpNGhFNEJUZEJpc1JsRDRPNGp1Z0ordk1QZUhoOUJ2Vkgyc2NSVENqcVZQU2t4VWhtSmVwb2pNRUhTZUtGdGtkWXAzSmhzbE93WEVhR3BFWWViZmpmU3dmRDVnb1Iwb3dmZ29BbGdwd2ZEN2o3NTdNbkwwSDZjUUJHb0lDU05OdkMzR2JVdHdvcTBRdGl5NVU2NDJRbmZtNngzcWZNVDBnKzNnd2IxaXQ3aE9mcmNIVkI4THhndXo1TGhWai9vamxDQUpWZ29reGtpOUxENDh4djFEOXVXOGMxL0k4bldZT3NXOEM3WmtkZ3I4T1JDTHlncVkweUVtY1U1VklyMTBON2pQS0VGUFlSZDlpbXZoVXZtTitwajZNY3Q4TmZqbjY1T3V3K3MvWGdkKzExWDREa0JQd0MreE5LcFhGdnhzL21EbDZzZzZvK0MrWmZ3aHgrK1c4ZGZudjF5V1Q5QVI5ODRLZ0VyVElUSVE5a2ZYSjZkK3F4OFR4M1ROYi9Ma0NvS2ttQ09qWVAybnA1bFpkSDFFZlhIQWcxTFBXdjdBK2sxcHc1SnhSOTEvd0NhMEhIOVZQcXY0VmV0YVI5bGl1MVNJdWdqbUJZbFhvQ1g0cG5FcXl2SnZCdXdJKytJSXZCbDZVcXF1THlQR1lxQlEzb1Mvd0FhbFlFUmhIRWZNZTdVNmlmdWpDNlpGM29VTUlDM3ZiQ2dBZ0lPZUtFMEUxUExySDRMVTkyWForejhWTUlPcTlSeDNsRHFMOER5MkxsbnEzZm5qMGY3N3dpcHhZelhkNFNJZEtpb1hFU2lKSWx5YnJScGdZTVM0Rmk5UjFrbE5GS2dSR0VjUjh1WXE2QUtCaFE5dkZKSkRoUWJMOGlEdVlWTGQ2SjMwcmRqSFRCOFByeVR0WVJMb1Z2dkp4eDlmWkNvTzZMMmI4VmVxM1p2bndVZGZDVXc0UFpJUXlTSlNOemdxMS9hK1dwZ1ZBR2RDU0I5RFkvd0lFNEJlaGc1eGJJMDJwYytPSGovQU8yaXo0bmt1WkpKb0xTTGlzNGFCU3FwV2VBd3lWaEtBeWQrTUNER3Q1dlFHQjZ5K25sb2JlRGthLzRWSnpCMlorMDBXSXFOOEJheFAxVU5SeUdBMU9HK0V1aFk0a0FZckZGZ1dFdTJGS0JpY25kODN2WTlqM29MQmFWcEtxRDBRdXRXM2dzYUFXRDA4c2FBeHk5Q2pMZ0lEL0MyektUdS93Qjc4VkF4aXoxVDJFSUcrNVFMRWlEdFo5NTR5eVMvcGNIeDR2OEFQRmpVcEFVaDJTT2dJK3VMMFBiTDl2eDRJUUZ6ckJoU1FvNWVSeGd2VzZQOE9GMnJseDlCbDdjZ0xrdEJtaFlwbVdjYzU0azZNT0JCSWNHbFNLeWpMYmdJbHdSZFREM2lrb3VLendFRWdiSXhhZUl5TkFzSGc5RjcxZjFVWmtDUjA4aWJGUkZFQllqL0FBdkR4Y08vNm9BREFJNUM2NVFkMzlmTkZabHRHVG54VjR0YjdjVTVFeEVtbkNNNUtTckFEQllXQzhmSHBURmlkelNZeXlMTk1hTEljOGp1eDlQQ1VWZTMwS2t4Z3oyOGlrNlNCL3hmUlBkNUFSV0FscGdZakx2K3FPQnVoKy9iaU16ZEEzY2ZrOEFxQVUyeTZjVHBNMUZYdVBoeWxaTHdWaEtrVUFobUo5WHlMb2NQdC9oQnNBSmFZempMa3RGb1BRdS8yL0NlTWg3Y05Ca1RSUzBLWFJ3OEcvOEFNQVpEZjBvMG1xNEhRb0JBQTBLaWhORW1pWHA1aXBFL1JrZS9BRXBNQXBpUWtYTW41NElTTWg4dmtSR2F1ZjRicFpwZWh5N0EvYS90dUJrVzhxa2hSeEs3QW5WdFFvaVdTZ050d05UWHdBU0dJdGgvN3l1WHJJVFVzZEJBcGlkaUplTWFHd1BTWDhpdk5VdDAzb0dwcEUvd1hsZytnY2tXa3VBYXVWWE5sQzdxNThMeTJyWUpudlcvMWZRc2ZmQ0l0a1pKcFFwWUpjYm4rQmZvUXFkbVZMeU83c3pjdzdhVkRGcldKNFByUE02OHFCeG1IM1JHTUFqazJxVDY1ZmZJb0V1b083UnF3RUhiSDNuaVlXZUNNVlBJdXcyMUtzQjJJTnp0NHd3WEdLZXg1SXRWTzR4R1ZxdThhVEhPcGxSUi9FRW1kYnRLVGM3YzdrNHhtRFJxM2MwcFUxSkxVWDNlTjgvd3k4aE9rQVMwd2pocGJiZW5KQXI1NklQZWxVcXl0M2tFSzNLNEUzWHNmTkhGU1NOblc2YVZHUWcwbFVKdlVYVUp6NUZpUnJyd2RoamNGQXdCcU04NkZ3bGo1TkpnUkt1ZmtueWhWczFPVUFYc1RwdFUvZmRxZXBuVTFtNEZnZHZ4VUNSTElZTy81cUlHMGJEMXdvNEJNRlNQZ0dFb1hFNkd0WVRBVzVMVHdmUlAzeXNEUk14c2NrNVplMjdVTTZia09YVGtaUXNSNnQzNDk2dUJDSTZteDd0UzZ0RVVobXI5UW9BSE1XQjZOQUVBNEk4U2xkTlV2cGpRSzh0bzc5aW5Ma1pWYnZreU5Xa1NpWU9DSEYxMG9FSkxpTWpVSVMyUW5mR255bGRjOVNtNVF6aVBXUHVvMFJNYmoxS2dSZldBK3FpSWk1UDdWRkdhalBGUUtzQmpVZ09nT1ZQa0d3Nk5SNHJ1ZkphdEZXd242b0pZN0cxSGJINHFjWThUa3k3Y2c0YUNhWlNncjFORWMyNkExNFJJQUxvd0RWYU52VzJRWmJGUGlaVHhRQVZNQVoxTGhkNmoraWhjZXdqRDMrT1JXZXZoUUpCL1p2UThINkkrVndTYk5kL1NvOTVjc2JvMEFGQ09adzlaSVZxNmlXcmxOOTZSK3FKSitwZDgxZ2phRGY1V29qb2FQMVJVY0M1ZkZKRXRBY1g0b1JKR2VDaGRwMGxTMWdHbmVrR0NDWVJSa210WE9qVURHZXA5eXRJWFJmaW9VZ3hjWWJVSWdqSTRWQ3VCZzRxaGxGN0dYWU5hdzd6MUxWWjEwQkRveDkrSnBTV0FKV2hZZjJMdlNnVllDNnRJSzQreXcvUGZ6TkVoZFY2S2hVTHJucGpVTGRzM09WSVRrQjgwWWx6TjFjVnBCSWJsTThsZTlQYXVrOXZ4U3h4Q1c4ZWxBb0p4R2hrVVlreWZ5b0NVSnR3QUtvRE9vakZsYm93cVN3OTUwVTNBRFEyYWxHSWxDUFg1ZTFEeVFFQ0JUTVE0ei9yU2xoMkg1VVgxeHUrdkFNRkdEK0wrYkZTckJVTlFJUjVDL3JVU1BhbGxFVHNKZFJ5WXJZRE5wRXBPSnR0U0NtV0prMWdHZDNOZitSVW1LZENrVVl2UUxUa1RSaU1IRlpjRXNrbXFqNHFlUjl6OFVybDNTWUZJdEtlSTl4VWFTYlVmQkc1TmJRNlVsSW5XTDBwYlRTL3JrWXErR1l0S2tnUFBUYnprVlNLSm1VYlRpd2ZtcUtDdFZEVUdUTmsvRkVuUUtDSklpYlZoS2JRM3F3VEszWFZwSVdRWUN5VmtWMlExSGlIcFJham1LeXFFU1loWjJjTGtOWlJXV0NVU1pPOTFZeldDeEhTa0VJakNjRlNOWVJZWWh2UXNnbTFJYi9KeG9uU0JoNER6OVdhNERZaEZRTE8zbzl4NG40ckRkdFpRODlFRkNSbVh0L0dCU0FSSkhLc28vd0FzYWl4ZXdyUTd5RmFJR3F5MFJ1Rm1aeDdWUFpjYlVRbWMxdTB3am9ySDdwTXg4My9oUlJrVWRxeU10RldSRFJ2d3ZCUGdvb09LOTFmK3lweGN1cTBZZ1NxZU8zVC9BUGloLzlrPSIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFFQVNBQklBQUQvMndCREFBNEtDd3dMQ1E0TUN3d1FEdzRSRlNNWEZSTVRGU3NmSVJvak15MDJOVEl0TVRBNFAxRkZPRHhOUFRBeFJtQkhUVlJXVzF4Yk4wUmphbU5ZYWxGWlcxZi8yd0JEQVE4UUVCVVNGU2tYRnlsWE9qRTZWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFmL3dnQVJDQUd1QW9BREFTSUFBaEVCQXhFQi84UUFHZ0FCQUFNQkFRRUFBQUFBQUFBQUFBQUFBQUVDQXdVRUJ2L0VBQmtCQVFFQkFRRUJBQUFBQUFBQUFBQUFBQUFCQXdJRUJmL2FBQXdEQVFBQ0VBTVFBQUFCd0cvbkFBQkFKQUZBQUpnU0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFCQ0pnQUJRQUFBQUFSTUNRQlFBQ1lFZ0FOc3N0NEd1QUFBQUFBQUFBQUFBQUFBQWdBQUFBRVFBQUNnUk1TQUFBQWdFb2tDZ0FBRXdKTDQranIwOE9ubDl2aVg5RzJIa0hwOFFXQUFBQUFBQUFBQUFBQ0FBQUFBSWdBQUtBQkFKUklBQUFDQVNpUUtBQUFYb3oyMFZueC9SbTJlbXZuemc5WGhOYzg5b0d1QUFBQUFBQUFBQUNBQUFBQUNFQUFDZ0FBUUJNQ1FBQUFBZ0VvbFY0K2k4L3IrYmVuemJlY084d0FMWG5HV1VYejI2N242K1QzZUZmMDY1ZU1lcndoZVFBQUFBNTZQZDQ4OXFvYmVjQUFBQUFJUUFBS0FBQUlBQUV3SkFBQUFDTFZublMvUzV6NS8xZDY1Rm5MWEwyL05EYnpnYlk3WXlyMGNhYUt6NC9vemJQWFhET3NQWDRKUUwxNnV2azkvRko5SGtoRHZPVUJNYVllbnQ0OHg1ZmJUYktlcGswejkzekF2SUFBaUpnQUFVQUFBUUFBQUFTaVFBQUFBRXRiTmw2TksxUzdaYTViZWNMQU5jdGNwUXNBMnkxeGxDeGF0c3Q5L1p6bmgrbTlQbWdVMXkraDhnTytGcXVOTkZIbDkxNlEyODJ1V3VXM25Dd0lJQUFBS0FBQUFnQUFBQUFKUklBQUFBQ0FiWTdZcktDVGVtcTBxQVdOTTlwYzZyYzlWZXJ6Yzl3Tk1yVFJsNkxWT3M5Y3RjdTh3c0FBVEdzc1pnSVNZQUFBRkFBQUFRQUFBQUFBQUVva0FBQUFBMngyeEFSdGpzdVNDU2lSdFNGcmF1bm45ZjBmSHp6eDlHYTdybkZlbnMrY0ZtdVd1VW9JQUExeDJYRUlBQUFDZ0FBQUlBQUFBaVFBQUFBQ1VDUUFBSmlTK2VtWUEyeDFNZ2dHMk8yS3pmT2M5dEZIbDl0ODAranlhWlh6Mjg4MnA3OHQvTmw5RjgvTFdMUnBsQTZ6QWJZN0xpRUFCUUFBQUJBQUFBQUJFd0pBQUFBQUFtQktKQUFOY3RjZ0JybHFaQUdoYkcxUUVBYlk3TGlFdHBuZngvUzZYT2hqNlBSNWx0dk5pUFo4NEJ0anF1UUFBQUFBQ0FBQUFBQUJBRXdKUklBQUFBQUJLQklOY3RjZ0JybHFaQWJZN0dJQUFHMk94aUJlbXM2Vm95M25YSFhYejVDd0RYUFhFQUFBQUVFd0FBQUFBQUNBQUFBbEVnQUFBQUFBRzJXdUpKb1o2NytpZGN0MG9UbmEraUR4cGl3QUJxeklBMngyTVFXbTJRQUw4Nlh4Ni9LNDdxTmNBQkJNQUFBQUFBQUFnQUFBQUFKUklBQUFBQUxHbS9SOTJlbmw5UngyQ2dBUjV2VVRrK0Q2VjF6OG83L0swNHl5Mnh2SURXc0ZRYTVhK3lYRHkrN3drM3BwNWZkOUZ4Zk96Mm5QZW5lV0E5bnp3QUFBQUFBQkJNQUFBQUFBQUFtQklBQUFKNy9uNm1lZ2NhQUFBQUFBSW1pZUhqL1U0ZDgvTnRNdE10c3RjU1VTZTN0MGpMYjV5cHJqT3VPMmVwazgvcnZla2VqeVVHbVFBQUFBQUJBQUFBQUFBQUFBQUFsQWtEZkR0enJvU1k3QUFBQUFBQUtYb2x3dVB6MzAvazY0NGVScms5WGw2c3ZYeDJZN2ZKdmI0dDhKMG5FR2hiRzlBQUFCdmgwcGVhMnhzRUV3QUFBQUFFVEFrQUFBQUFBQUZ2cWVEOUJub0hHZ0FBQUFBQUZMMHVnS3BlaWNUdy9RZlA2NU8zeE80ZEFaYlI0ZmVUblU2aXpoK2I2WHc5YzhFYVpsNEtnQWR2amZUOGQ4UHc5TG05Y2hZQUFBQUFCQUV3SkFBQUFBQUIxdXZ6dWpqc0U2QUFBQUFBUk5FWEZBcGVsMHorWCtyK1UwNHY2c01ldVBySGo5bU93S0FCODkwL1picmxFdWV1ZnlQcDQ2NCtUbjZIWHJueDlJejA0bk45bmoyeEN3QUFBQUFnQW9JQktKQUFBQUFQWjMvbFBUeDM5SXczejBCUUFCVXNBQlJaSkNxMm9rMkZqNWI2cjVqdk9jZGN0T05PL3dET1R6ZnEzSjZXZXVnbEFBQUFBVXZ5Yk9WVTJ3QUFBQUVFd0FBS0FDQUpnU2lRQUFCMHVicEw2UFIwSzhkN2E4R1plNjhYczU2a0s4M3BKNHZUb0JtTklrQllyR2lBcmlkdmw5YzhlRFhFWE5xNitPWFN0Vm5ZNnZHNmVXdWsvSjdXZlR2RjdlT3dVeTVsbnI0Q05jZ3ZJQUFCQUFBQlFBQUFBUUJNQ1VTQUFXNi9HUy9XWi9QOWZQVER4L1FqaGV2MytZMDM1OVY2Ynhlam02NWxKdWlrYVkxRzdPTkZCYk91OWZNWS9UY2JUTHkrakcxbVZTeExzeSt2eDlUNW5QVEFhNUxWR3NabEJBQUFDQUFBQUNnQUFBQUFBQWdDWUVvRWdBMjZmR1RyNm5UNVAxOGRmUXViN2VlOWFURUwwQVZDbXFWdk5KYnFVTEY2aTBWakREMzFzNXQrbU1kbU12azRkNmJaQmVRQUFCQktBQUFBQ2dBQUVJa1VBQUFBQUFDQUFTZ1NnU0FEZjJjeEwzdlY4dTU2K3RyOHg2SmUrNU84Njl6SGFXSzIwRkNBcEVpdWxPYW5RK2VwVFRNT3VRQkJLQUFBQUFDZ0FBQUFRSVRBbEUwQUFBQUFBQUNBQUFBU2dTZ1NnU2dTZ2FhK1pMN3I4NHZVbmxJNm1IaUY2dzY1bEFBQUFBQUJRQUFBQUFBQ0VBQUFKZ1NpUUtBQUFBQUFBQUJBQUFBQUFBQUFBQUFBVUFBQUFBQUFBQWhBQUFBQUFBQ1lFb2tDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0VBQUFBQUFBQUFBQUpnU2dTQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFFUk1BQUFBQUFCLy94QUF0RUFBQ0FRSUVCZ0VFQXdBREFBQUFBQUFCQWdNQUVRUVFFaUFoTURFeU0xQVVFeUpBWUNOQlEwS0FrUC9hQUFnQkFRQUJCUUwvQUtGS2pNUDAvQ2VQRlJpMzZkSElZekpNMGdxVVIvcUM4U1RjL3BkNnZrZUVlUVFzUDBLM0pIRXlIN3NzSjJZbU1hZjBBVm9WbzVvOURiNCs3T09ReG1TZG5GU0dQVHpoaDJaR1VxZldqS1BFYVZtZjZqUklHWnhadG84ZVEyS0wweHVjN2NyRHRlUEZnV3RVa1JqOWl2RTdXOGVkNnZrMzJqWmhLbmhCSElCSW9rbkptSnBoYjF0OHIwdlp0azY3VXJydGpjeHMrSnV0YTEra1J5cE83MS8rVzJUeWJXNExzRzMvQUM1TW5rOWUzWnNUaTU0bllndXpHN2JiMWVyNUR4OGdjUy9mNjk5c2ZrMmpnbENtaGNEZU96a1IrVDJFbmRzajd0cjhNaFNtNjRsQXJoYjB5bFRzWHM1RWZkN0NUeWJFMm9Mc3h1Y2tsZEtaaXhVbFdkeXpNTGJCNCtRblQxLzl5ZCt4T214ZUM3NU8vSUM5ZEU1QThYci9BTzVPL1luVFllRWVkNnZrQmN1YnZsaGZMSkVyaGhZMjNueCt3azhteE9teVRydWk4bVFwVHBQeXVCNG1PUUlwNmJYOWpKMzdFNlpvTHV4dTI1T21RMm54N1pQSjdDVHJzVHBuSDEzL0FPV1k2bmdiNVAwMlIrVDJMOU5pYkI0OTdkdWNmZm5KM2JFOWtmSHNqNjVueGI1Ty9OZTNKZUxOM2JPa2ZzUjRzbFJtb1lhVTBtRllINGpWOFI2T0ZscDRwQUNDTjBmZnM2UlpSOTJ4YWZEY0NMZXhUcEhoM2VrZ2pUa1d2VFFSdFRZU25pZE0xNExza3pUdHI2ZW1PaFE0RkhEcmlMR1ZVTFVSYjF3Qll3WWNKenBNT2oxSkE4ZEhoSG1ndXpHN1pmNVlhSFZXS2U4bERZamxEM2V0QXVZSVJHUHdKTVByVmdWT1NjQm1rZXM4RlZqYzVmMWtUUisyUDFtRWkvQmJwVXNTeUNSREcxSGhIbkdtbForRU9iY0VxOUlOVE1kVGVyaFQ2a25UOEgvbGxMR0pGWkNyeWQyV0hYVkxVb3ZGbkozNWRzZklpVFczbzhJbGsvQlhaTWdPekJEamxpSWlqVkgzWklOVE1kVGNqQkQ3NVJwbDlDQmNxTksvZ04wMmRXeFVlaVRMQmorUElpOU5oWXpRd29BK0dLZkN1S1AyTHljR3RvOFdQNXZRNFZiemZnOVcyTDB4UzZvY3NNZVJpSWRhNWFXTkZTTm9Hb291bE1iNWZRNElmaEwwemJLVGpIU0M3UXlXbjVFc1ordkZoMVRLMTZrd3F0VHhzaHl3MEduTEcrVDBPRDhmNERiUnhhajBwT0FyRHkvVVRmcEdyWVFEUnc4UnBZa1RQRkc4M29ZSnZwc0NDT2VPSnpKc0FMREp1NDhJNlJ5alJTcklPZXgwcVRjK2lpbWFNeHlySU9SY1gyTnQ2dG5JUDVaTzdJRWd3NGtrcTZ2enNaSjZTQ0tPVkhoa2lxUEZrVWpxKytTUFZRK1FLWFZtT0oyTDB6bFhUaU5rWU5tTmhxYXJtc05Nek5WeHlKNXhHQ2JuMGFNVWFLVlpSSmgwZW13OGtkSmlwRnBNVEcxZGVReHNOaDRuWmk3NmN3Q3hrT2hjOEV2M1ROcGlwSkdqTWVKUjlqU0lsUzR1dXZwZ1NERmlnY25qUjZmQjE5T2FLbHhVZ3BjWWxDZUpxdmZZT05XSXJWV29WYzBPR3cxcDFKSWhqYWxVc1Z0Y201emdUNmNlTmI3Y3dTSytySlJkejZ1T1o0Nmp4S05tVVZxT0dpTmZEU3ZpQ2hDd29LUlIrNnIyMkZnVFZpSzFWcUZNVGxMR3NpdGgyUXMzRHRqencrSDA1VFA5U1QyU1N1bEppeFN1cmJXTnFYcFdrVmFyQ2dPRjdiRjQxeEZhaGs4VVJwc01yVjhPaGcxcElrVExGeTZWOXJlMUppWkZwY1docFpFYWliVUJWcXVhdlZ6UjFFZzN5MGlyVVJYYm5wRldBb2NEbkpJSTFkaTdlNVdXUmFYR05TNHVNMEpFYkltMUFXQkY2KzZ1TkVtaGNaYWE0MTkxYWEwaXIyeWtrV01TeUdSdmZCM0ZERXlDaGpEUXhjZENlSTBHVTEzR3JFVmMxYzE5MWFhc2ErMUtseEtpbVlzZjBVT3dvVHlDdmxTMTh1U3ZtTlh6R3I1alVjVEthTEZ2L0ZEL3hBQXBFUUFCQkFBRENBSURBUUFBQUFBQUFBQUJBQUlERVFRU01SQVRJQ0V3UUZCUkZFRWlNbUZ3LzlvQUNBRURBUUUvQWZLdmdjd1g0ZUNMT3QyN2VXamhmNmlLOExETHV6YUU4WisxTmlMNU0yUGdjMFg0RmpXaVA4aHFwR1pEd3d4N3hHTjJld2poUWlLTmNUUm1OSjhGZnJ6N2VNMDRGR05wRkxJQm9weTB1L0hnaWszYnJReEVaKzFOaUFSVGRyNDQ3eTZMZFB2VGJoNDh4djB0MVQ4eU1UR2orSTY4dTJaaUhzNUorSmM0VjBjUGx6MDVHTnBUNkFzcDdzenIyUnZNWnNJWXR2MkZOUHZPUTc5amM3cVQ0aTNuOWJHNG1RSjhycE5mQ1lhT3ptVFlTQ2ZTZEF4bzhOREx1eXZreHFlYmVjaHBzZ0Fza3A4WUl6TlJqYzNtUjRiRFpTMU5ZMXVpeER3MzhmZmhtT0xUeVh5cEVTVHpQZlVWbEtvOUtKbWQxS1NJZnN6VHVRMzN4WkFpMGpocTBWaG1OSXpJUWdXcFltQnZydDJqNzZKYndBVnNpbE1laStXMzBwSlRJYjdZQ3owM0M5ZzE2STE3Sm5VY09hYnJzcFpRaTMxd3NSMTdGdW5VZnhCdXd0V1JBVWpyMkxYVjFIN0FhUU44Wk5ka0ZYcFp2ZlNkd3QwV2ZhVFNKdnN3YVFjQ3NvVkZjK2dXN1FMVHVRN29FaFoxZlJwWlJzSnZ2Ykt6ck9ySEZkSXV2d2xsWmlyUCtFLy94QUFuRVFBQkF3SUdBZ0lEQVFBQUFBQUFBQUFCQUFJUkF4SVFJQ0V3TVVBVFVFRlJCQlFpY1AvYUFBZ0JBZ0VCUHdIMnJhb2Q2ZXErMVhDMkY1L1RWR1hoR2s4ZkNwMGZsMkRhb2Q2RnhkZm9tT3VHV28rMVhDMkY1eWdaRTVpWUVwdFdlZXU4UzBxNHE0cWtIQWE1S2pMeENOSjRWT2tabDJMWHVpVmUzR3M2MEsvK1lRZTV4UTZ6cVRYSnRGclRPelZtMlFyaW15VEFUUmFJd2UwUEVGSDhkeXAwck5lKzQyaVUyb0hZR2l3cHROcmVQU1ZueC9LTlJOcXZKOU5VcDNoZUI2cFU3TlRoVkpqUk5lWmdvT0I0OU5Xa09SY1NxTFNkZlRPYUhEVmVCaUFqUWQ2UXJncEcwOTFyWlRIL0FBN3NsMzFtdUtEcHl6Q0NyT0lNTHlKbFJ4UFhjZGtPeUV6ZzlnZXYxeW1NRE5Pc1RBMjJuQThiSjQ2VDl4cDBUdU1KVnhRZDk1WEljZEYzTzR6TVhZQnl2Uk1vY2RFdG5jWmdSS0lqT0JQU0tuN1Z2MXROeXU1Vm1JRW9DT21SS0xTRmNwQzAyQTdFbUUzVTlvZ0ZXS05tVmNjQUk3c0sxV3FEbWlVQkhwSUN0Q2dmNFQvL3hBQXhFQUFCQVFVSEJBSUJBZ2NBQUFBQUFBQUJBQUlRRVNBaEVqQXhVRkZoY1NJeVFZRkFrV0FERXlNelluS0FrS0gvMmdBSUFRRUFCajhDL3dBQ3FEOFFQS3RqOFBvb1lCd3NmaUd3VWZ3L2w5QitHOFVlVmJINEVBUW9YRWRKSWhRd0RoWUZmTi9hQ3JtRUdnb3FCTUVRSm10NlQxd0NqZlEwUVBsd2o1ekhhWmtlNTdIM0swclRPTnpRd1ZURjFURkRqTUdqTUJ0TmEwbWlGQUIxbXpYVlJ1dlF6RDNNWmd6N04xN3VqbURNbzVSbWpkTlhUWE9ZRGlVVEU2MGZFaTRhdVdlYzI5R1lNNlBCVlBLZ29HVnE1OUhNVEsxeEtFUytoVVNvaFJLSEVqVnkzeG1KbGE0bGFONFJjbm5NVEszeEtONXdFMGQzaGJxRnd6em1KbGI0bGhvSnh0V1NJWGJWUlJCWmpGUm1aRzJZbVZ2aVFJbWRvN1hBNW1PWWppVnJpUW5RWEIzTWtGQjdJMmxHWk04U3RjU05YREE5eWNYTFIyekptVThHUWJtNGhwU1JvdkNNcDNPWkhZdjZXU1ZnQW9raGR3V0lYaE05SlZaaDl5amMzUFNjeWFHeWlla0xDSjN1S3J0aHd1aHI3WFV5OW8rcFFOQTlvdXR0K2NCSkVJMlZBVnkrQVVXcXRYMmgyV28xVEkxcklBaVg4bFcyc0ZEU2FMS1AzbHNBcTkzd1lpaFVDOXByYVJobnhpVndpWHhraDVOY3R0bjE4R0dycTQ2cURUZ05heXRTTWozSkhMQVBoY1BnVlpPS2hwUjRjMEpPS1AzYXVTTnNrdGEvQ2pySUdvZFF3a2FMNGp0ZEhTcjlsRzVKMlRRM3lJQkFmRzRVUmdYa3ZxcVVSRnJGZDZwVldmSnh1aWRVY2lHM3d1SmpzOHNhQzR0RHVEOENxaVdBUVpRNHlKby9HaHE1b2JPQVVmQnVTeXlNVjFWTHFycG9WMUI5dHJGdzR5STgvQmhLVEkwMXM3Y1hGcnpMVmRxNldYbmJJdjZTb2o0RWJnb2J1aUZ2cDhBaytFVGtlMmlvZlZ6QzY0a2FHNmhwUjhRckxZOXJwTWI3OXNlOGswYVVSOWhRL1VydXVrenhaTmxyVlZETFM2b2VueGw1a2FhOXltSENzczRMdUt4VmhxdTdzUmNRSGNvbkpJc3JmUmFIWlJacndvTlZXTm5sVXZZUzA5eVFDL2JIc3lOTkpvN09peVZYcE1uVTBGRDlQN3llSVVQMUtidTZtWXJvYSsxU1BwVmdWMUFoZDRsaXFLc1hZZmF0SHpMQStWQXVvckxPSGs2cU1nSG55Z3hySlFydmErMVZvL2VWME5ORlhwTCtwa0Zkc0ZpVlJzcitjMHF0a3FDNnBJT3Bnc0N2UDBzS09nVjFkdXFnS01yKzZTMjNqbzRuTStrcnJFRjBtTXU4bmNWVlY4cXYzSkhWVXdmVUlRYUs3LzhBaXEwVjBoMWdZbk5xTEdQSzZoQmRMUWRFNHFpd1dCV0V1SlVGcy9CMEpJbEZvNTFScGRUTVZXSVZHaE5nNkxYbCtLeFZhdWdYUktpYy9vMFZqRlZaVlloZHlvUXRuVVdDd1dpeEt4VlN2NGVPcWkwZndhalJYZVZpc0F1MExzQzdRc1lLcGovcFEvL0VBQzBRQUFFREFnVURCQUlEQVFFQkFBQUFBQUVBRVNFeFVSQWdRV0Z4TUZDQmthR3g4RUJnd2RIeDRZQ1EvOW9BQ0FFQkFBRS9JZjhBd1VVRTVBcXlJYjlPMVROeElFWTYvcDcwcE5RbndBUUVCTzhUK21BNUJEcHVGT0YzNmNFcUVOWm5qRTBKeTFVUVIrZ2lTaWRXNklNQWFwd3dLUVlzM1hSVEJpS3JWTjMrdEFBaERKejBhZENCVzN4MFhxVkNpY1lCRUlnaGoxUlZDSkJPaUlBREVkdXFUSVlUaTFDRlJqRFJBYlJkRE1IWTF6UU5jTVJaQUVUZEZGT1dRT0Nib0NxR1BWQmJuZlpCS0UyTjJ3Vnl0SzlBSk9hRjAvMTZaaDdLS0ZhOHNyWHZoRm9HRDNSRXBqbkt1WXRrVmN4YjRWTzVJUk0xQTlzQlpNVGhGSWNJWm9XUS93QjVoQUpLay9LSkpFbXB5QU9FQWVZWFQyekoxSnh2RVlhRGxCeUV1cUF0OFhjS0J2bENxOUtXemJzUFJCS3J3elhUbkgwc2R3aUhaOG9zN2dqZFhPVmpCcFVweXV6bVl2ZERvaXlMbEc1cmwzRFRzT1d0dE9iZjBHRlNvSTNDSWJQOGZvKzJJeVg3aHAyQXkxTnZpemVLVHpoV2hES0VMU1VBN0l4Z0E1T2lJQU1Sb2N2dy9ubzFEWW50M0gzdVg1dVZwTGN3b1ZUSUEwVmluT3VVRlZ3akt1VTczQWNueE9qQTMzSTdnS0Y3dnBINGl3eEJmSVM2MHJBRDJ4MEFkY2lUMFlGdUErZTRDaGU3eS9WM0dXQnVmSTdBUzYza0xMZVFzV1NXS3BKdEJUanFDZG5nSzVIdUFYdmN2MWR4bG8yQXoxSDBFNHlSQUVrSnloT0ZVNEVnRGdmTkVXaDk1L251TmRmTDlYY1pHQnV0d0RuaFpOOWNTbklTd1VONGpsRWxrZmhMZW5jYXE0ZEU0WEIwQkgwVy93QnlQSVhJZ1N3cGlKZFE1ektMdTBCY29seVNkZTQxZVY4M0pFbDJIUWp0UGRrcEhrcTQ2ZGdCbGlMZnpqdVV6V0pHWDZxMlNHNkhvVi9vR1NPeWJFV1c2TnpiNUJLb3RRZTNjcGNoajhPQ3FuSUswT1JFY1lVZEpZRkFYQlF5ZVlTMG9nd0VjNWhkNmdsNFJMa2s1REEzTWRld2ZLRGxWN3hzZFVZcDdqTzZUMTBTdmZKMEJBR0FIbGFNTHdYOVlsWEd1S1krTHM4NVlHMll3MlRZYjh3UU9udUlFTi94SEdqd2lySkxaR0pqMjRZQzVLWWY2anJTd0c4a3dSc2x6UWY0Wk9URnVRY2FJUG1JMEYxRjZSd3J5T1lZcXN5YVNQYlNBQTVLZWNpcWZ3RFNhSnFQRFRSRklXSXg0QXdlY2g5SUJHakRBRTVtcHhEbXhURmhRTnk0N2F5RzVQNEwxaHNHSERRaFlMemZEY3hmWHppQTVaQWlxUktKenRrNUk2T1U2NlpBYVZKMlQ1Ullkc3NqcWdBQUFvUHdhOFdPcDdRMlRHcWtjd3BpTS9RU2NHb3RpQTVBRlNqRGdLUWVNZnNhZEhta1IyUjdPdngvQ21EY2ZJMER2VVpQWk9KV0NWTVBUVU1uQ0VNQkpOZ255Z2FDdzZMbHNteUhZaldhbEJBNkQ4SFF2Q0VCc25zbEFHcmkxY0hFQU1EaEVYZHhRYkg0S3lYb2dybUJRMlUrd1c2VHc2a3h2QWRpOVNQd3ZSeUNXRG9LelV5bkJyTEZvMkE5QVJnL3lZaWtONFZTQnlNcHcxaWdDTkFnN0U1L0QrQ1N3Y29LalV6a2sxN0FOd0xEa3hTYW8zUjFWRGhCZ1FXQTFFUUJnQlUxL0dUV1kzd0FKTEFPVlF1MFc3STR6WC9CU2EvTHdDQmhWNHc0Z3pBVEJON29TR1NEUGxBc0FJM1JSNGNGVW9Cdmo2UGRpTTBkeERSWEIvQW1lSXlQQlRRTURRb0dCdW9LOThBWThoUnVOWDRBZEJBNk1kcVMvWTRsT3RIdE4wUU1RR1JVWlNoaFV3Z0dEWkRBTkpaU1NwVXhIRU1VRU9OaUhPSHJOVjM3SUl4SWRYUnlZZ0lpQmxsVUhjWnp2d2FHZ0lvZHlkbERFTnNVblFJR1FsZzVRVkdzc2p3VUFXdVE0OVJnZ3VjS201V2w3aUF5NEorVmJ3d0VkUmVVQ0RJTDU2eUQ5a1FoSEo3SUhHWWhSbU5hU2JieUhxTWExSWl6NXdWVjNFQkFPVGpib1JGMEFBQUJraWVaeWlUZ2dGaXlEQUpUUWVrZzF5T1dJWmVoN0QwNE5DaFRIc2xBZ2h4T05NR3lJWUczSWtrNUxuc3cwVWdqVUpzbWVoQWdod1hDQXhia0NyV3lFNXdIYzFEK2FHUkhza3FrZVNFQUJ3UWNhSVpIclRoYm1MRk0wQnlGemVpSnFNRjBmTUpGVzJRbUJKVFNqM0l0OFp2Z3dQSTJSV2pLajJXdUlEbGhWZVZYSk1oVkp6a3F3T0N2OUtxbytlMWpQckZGQytaUkF2VEQzb0F2NG9LT2lOTkZ3dkdIdnh6QlROTWFsQ2xEZlRJSURRMUswVzUyRmJnZU1BS0lEOVI0dzFVNkd5TUNVTkNkWjdGK1VKVHFYdGlBU1dBY294QU95eFVWdDZEanVkZldzYUkrT2NFTGNPVXlpU29tVTRXSTRUMEVRZHg1S2ZKaU9qTUlDRFRBbHFxcDlnbXVyTElFMWxRcDhZTnhDRGtBQUdDYW9XdTRoVUZCdmhKbC9ZZDJCRTVFSFpWWmxLNGU5VkVlVXdUVndqTnpZcG12cFQxV2ZXVURKeEM0QnRnYkRjWVlaSWVTOVhWVGdjTElFRU9DaUFhZ0hCQ2tBVlVvYVpEZnhpNktUSjd6UkZISjVsQVVPQytRS3IyODROSXFhWVFIbGRNRkNEeW4vd0IwQ0hZRHludm1iWUVDWEVIWk1QOEFjSnJIb21Hb2tucXVmS25xYm9FR2hUN2VCZGFPOUJidjlOSGxHbkljZ3ROK0NqcUVhSkhLcWk4clUwZTVWVnFNV0t1KzliMVNzbmtMNlFpUU9BYmxPUUIwVDhIOUdvQThxaElBTkI1Q0dzUkQvdEwvQUdFZEVTMDF3Q05PYmwvOFVQL2FBQXdEQVFBQ0FBTUFBQUFRQ0NTLy9EUjk5dEJCQkJSMSsrKysrKysrKzh4QkJCQkY5OTVEWC82Q0NDQzIvdkRWOTl0QkJKQkJSeDg4ODg4NXhCQkJCQkY5OTlCSC93RDRncWdna3Y4QThzSFgzMjFHcWtJRUVFRUVFRUVFRUVFRVgzMzJFUDhBL3dDZ2d2aWdnbHYvQU1zSFgzMnpENklrRUVFRUVFRUVFRUYzMzMyRU4vOEE2Q0NDK3VDQ0MyLy9BQ29zZmZmVm5Zc0NBUVFRUVJ6VGZmZmVZUTMvQVA2SUlJYjc2NElJTGIrN2QzclgxYS9IazAzZ2swM3NNelQzRUVkLy93Q2lDQ0crMisrS0NDQzIvTy9oQlYyOTllOTlPS2Y5L3dCaitnUXovd0QvQU9pQ0NDZStTKysrS0NDQ3kvOEExVDFnZ1lzOHZqUGZ1Y1lVaWgzL0FQOEE2Q0NDQ2UrK0NTKysrS0NDQ1MyVi9xUExKYWhkQ0JxRERETC9BUDhBL3dEeUNDQ0NlKys2TENTKysrT0NDQ0M3MnY4QS93RDFyOTg1MlpyL0FQcC8vd0FnZ2dnaHZ2dnVnclF3a3Z2dnJpZ2tpUWw4dW52L0FPbitVM3YvQVB0eUNDQ0NDTysrKzZDRDl0TENTMisrK09DcENWQ0JDeXloeWxhSGlDQkNDQ0NHZSsrK3lDRGY5OTlMREMyKysrK2xDY0pUQ0NDeENCQ3BDUUpDQ0dlKysrK2lDRGY5Ujk5OUxEQ1MyKzYyUDg4OGY3SWhDWkN2S1BNUCsrKysreUNDSGQ5OUJSOTk5dkRDQ3kxODg4ODg4ODVBT3RLNCtQM2orKyt5Q0NEUDk5OXhCQkIxOTk5UERVODg4ODg4ODhqOFA5cHIxVjQ5NnlDREJIZjk5OWhCdEJCQlI5OTk5bDg4ODg4ODg4bjhuV3A4ZnZmQ0JDRFRWOTk5NUJCQjl0QkJCQng5OTM4ODg4ODg4NzA4WEV5Lzg4ODBNcnorZDk1aEJCQk44OTlKQkJCQnhlLzg4ODg4OHY4QU8vSndGdVBQUFBQUE9PWVFRUVJYZmRQUGZiU1FRUVE2ZC84QXo5LzMvd0EvOHNkNUZkWmJ6OHd3QkJCQk45OThBUTg4OTl0SkJCUmpGSEV5VW5RR3pnZHA5aFd4aHdCQkJCTjk5OTg0QUFBMDg4OTl0TkJCZzE4dnJvNS9qMFBmdmZvQkJCQkZOOTk5ODRnQU9BQUFRMDg4OTk5Tk5CQkJESjBBQVRBUS9SQkJGTjk5OTk4OHdBQUErdUlBQUFRdzg4OTk5OTlOTk5OTk9jdWV0Tjk5OTk5ODg0d0FBQUFPKysrdUtBQUFBdzA4ODg5OTk5OTk5OTk5OTk5ODg4OHdnQUFBQU8rK0MyKysrdUtBQUFBQVF3MDg4ODg4ODg4ODg4OHd3QUFBQUFBTysrKytDQ1MyKysrdU9DQUFBQUFBQUFBUXd3QUFBQUFBQUFBQUdlKysrK3lDLzhRQUpoRUJBQUlDQWdFREJBTUJBQUFBQUFBQUFRQVJJVEVRUVVBZ1VXRXdVSEdSY0lIUm9mL2FBQWdCQXdFQlB4RDdyM0I3L0gyZXlvNUtpRk9tRHJadnJFUkkvWlU3dzdodDRmbUVMdnl6S3p1VDMrUHNKUnN0K3FtRkd4eWVqcUttbkpVQjFtV2R0dnRvanN0bnFyVDNHdXVoKy9IQnpRa3daaVVPalZYTGQvYi9BSGxqKzA3aE40Zm1YRC9MTjhNeDJLei9BTE1nRTFOY0V3YWFNTVE0bWJoVGZ2OEF1RUVhZU1SUnMrWjFZUjVkOHZ0d0ZRd2xSQVUxSDE0ekxxdFh5bVdaSTRxb2p2eUhmQnZramdlNGZUUHVPQWF1L3dBekhQRWZRYmo1RHZnM3oxRUl1blg5UUFYSzQxc29yZmR4S2E0ZlFiOGwzd2I1WXQyeGd4YS84bG8wbzdqQUxvWm9yV3ovQUNGV2c1UEpkOEcrWGZKdmdEYXlXUzBwQ2tGdTNQWGt1K0RmQnYwSEZ1ZFRCVm42aXFscnoxNUxLdUYycDhFbzY5SFhCeDF3QXZVQUtXUDJlVGhnQTE2RUhjVTF3RHgxd0pBU2cwUVQyRmptV0VxTHNIc2U3OGV2TDZETDhrU284VUw0U1hUMmhWbFhMZzEwZU5pUG92QTVSekRZSWxrUkdtZGNQb05namp3Umkvb25ES09VaDNQZ2xKZkN1UmJjM2VDS0gwR0hCN3pyQnFtRFpaNkFHK0JkUVVBVVROZURvTUc5ZXZ2aDQ2Ump3T25yb1g0U0J6Qm1YQ21CQkhYQ1hBcUxVT08rTk9YR0pjVG13OXhCSFhBN1IxNGFhVEFNVzFLZE12dVFYMmw1bGUwV29GU3liWXc0aGpoRkZnT2JmSDBrQjNBT28rMDFNUXE1a2lzSm1JN0o4RXdFdVg1b1dtQzdsSVBCSFRLdk0vUEZmRWV5TjlqV2srYWZKRnUvNEovL3hBQW1FUUVBQWdJQ0FnSUNBUVVBQUFBQUFBQUJBQkVoTVJCQlFGRWdZVEJRa1hCeGdiSEIvOW9BQ0FFQ0FRRS9FUDJyVmE5ZmY2ZkRLdzNEUGJnL1dEK1lJbG42VWFlNHBERFIvaVlDTlZyL0FMK2hjaFZVeTJuNGR5dVdZWVo3Y1BWcUFBNytWMTZRcUJwZjQ4ZEFIcUJ0M21XT1pRZVpBaVUxRFVPUzViUFV4Q3RYemhFdzNHOWhNTlcrdlVTZ3UvR2N2VE84SWNtdVQzeFgyU0JpRHVIMmlWdHJybEJZd2t2V2JZYThnMXc2NVliK2t4R24xdzVkVk15TXcrRHFIa0d1SFhQY0lXTmtCQkRKTUR5K3ZxRFp3ZkIxNUpyaDVJSDJFUWRUN1JEVUlCVmJDZTMzSDZWOHZrbXVIazF5NjRiQzhPWnNHS2pjSFBma211SFhEcjRQRkFGOEFVMGM5K1NUVWF0ejdKWjM4TytIanZpNEVWYXFmOStVbFhmd0ZOUUxjQ0RqdmhBVmlVdGp6cTFGdFl5UXJsZmZqMzRQd0Vyd3diaHhZcmd3SGNiY0pES2VmQnhUaUVkS0RUQkVzbmZCOEhWb04rQ3MxK0Y1czVRalUreVd0ZkU2S21yd1ZsK0E1WjJpWFpFcHArQ0pYQ200aUlyWnE4SGNJbGIrZlhCeDJoRGhOdm5ZcndncGlWY0dOc3FJbStCcUxjQzQ4ZGNiY21jeW9EQWo2TVJOOExwREhoaHRNZ1FSdVc3SlhWaUh1VmlYRE1jeW1haEptT2VBRUdSNW84ZmFSWFVVYmg3bTVtTjFNUUNNeEJkTSt5WldWSzgxRHVKNmw0bEVUWkxxZjI0djdoMFEvd0JHb1o5VStpQmRmMEovLzhRQUxSQUJBQUVDQkFRR0F3RUJBUUVCQUFBQUFSRUFJVEZCVVdFUUlIR0JNRkNSb2JIQjBlSHdRR0R4Z0pELzJnQUlBUUVBQVQ4US93RGdySWRLVTdSUCtPQ0JOS09acytoRldhQWdUT2M2aTZGUW4vR1FKUytKc0pnMFptaVVMelFCMnpvaVhQRnBJWS80dVkzNUZHRDl2U21jQWxNR0IveFl4aFJxS2hVdUZhTFh0TEh2UHB4T0E0eGxUcUkyL3dDQkZpaUJJRGhKajRMM0VvQ2dlWVhRTGNERW1uQU4ybWdNa3pLUzRLVVluanBHUG1BbTZvWkJ4dGFrZFp4TFU4QzhNRjd3dDd4eGdSTldBSTJUQnE0a1loblVVWG9KY2xOQWtaK0xlS1pmUkk3ZTlJRnhBK1hZTkFHU21nQmpNRlpLNUFvTzdDeW9jSmlCbnpiNUU2WXZ3Y1pDT1MwVVBWME85WWlEZ0dScHlMWUZpN0JoU2p3SkJtaTJtT05zcW1TQ3h1MG1RY1hLbmhlRXBUNVlvRHlURjZNTm5kaTM1am02b04zUVBseG1oWmsxRGVsdGhUeUl1NjZPM0tXS0RDRTZYbjZvSDVwUXdINXJBSFBXUXJlOENocmU4Q2w0UWlzRUVwaXM0U0hWOHNYY1VKbkZiMVRXTUszNGc5MmZybTZBdnFmbHpFZkpXYTVDbktsSlhrRGNxT2xRaE1CcFNzNVlaRWRLaWdYRmRPQ2lSYmlEdnk1YnhXTWFrVFZ1a0h0OHdiVE4zc0IrK1VTRFZwV2NsOU52cm10KzNxRGdlbktzdVNJM2E5bTl4NWhHRFc5U3JpMFkxaE5SNkNQcnpEdU11Njh1eVk5NjMxSDM1VHdKOUFwVzgwOXVZMWNCR1ZLckxWNGFKOWVEc0dGYjNyM2ZNTFgrd2N2ZUhzdnpMVlhzWXZBektqN1prNGtkYVJYNTc5dVh2NEpHWEFSNkROSlJZclBtR0xvSHR5NDNVZS9tdEJxOVM3d1VTMHBNUkJSeEJZREpta3BLZ0JkcFFXS0M1eTJMcUQyZURiK3JqajNqekhENlE1Y2EwK09QdmxrekNaZWhlcEV6R3NLb1RPZE83N2tTRk9Idm0wNDBQSk5RQnVrUVVRQm1SMmtua3NYVkh2NFBRc0RxaDhUNWg3dzV1dFhSZTZIM3k3M082ZUpEZmlzRXRTSnF4ZnI1UHJpNGhFNEJUZEJpc1JsRDRPNGp1Z0ordk1QZUhoOUJ2Vkgyc2NSVENqcVZQU2t4VWhtSmVwb2pNRUhTZUtGdGtkWXAzSmhzbE93WEVhR3BFWWViZmpmU3dmRDVnb1Iwb3dmZ29BbGdwd2ZEN2o3NTdNbkwwSDZjUUJHb0lDU05OdkMzR2JVdHdvcTBRdGl5NVU2NDJRbmZtNngzcWZNVDBnKzNnd2IxaXQ3aE9mcmNIVkI4THhndXo1TGhWai9vamxDQUpWZ29reGtpOUxENDh4djFEOXVXOGMxL0k4bldZT3NXOEM3WmtkZ3I4T1JDTHlncVkweUVtY1U1VklyMTBON2pQS0VGUFlSZDlpbXZoVXZtTitwajZNY3Q4TmZqbjY1T3V3K3MvWGdkKzExWDREa0JQd0MreE5LcFhGdnhzL21EbDZzZzZvK0MrWmZ3aHgrK1c4ZGZudjF5V1Q5QVI5ODRLZ0VyVElUSVE5a2ZYSjZkK3F4OFR4M1ROYi9Ma0NvS2ttQ09qWVAybnA1bFpkSDFFZlhIQWcxTFBXdjdBK2sxcHc1SnhSOTEvd0NhMEhIOVZQcXY0VmV0YVI5bGl1MVNJdWdqbUJZbFhvQ1g0cG5FcXl2SnZCdXdJKytJSXZCbDZVcXF1THlQR1lxQlEzb1Mvd0FhbFlFUmhIRWZNZTdVNmlmdWpDNlpGM29VTUlDM3ZiQ2dBZ0lPZUtFMEUxUExySDRMVTkyWForejhWTUlPcTlSeDNsRHFMOER5MkxsbnEzZm5qMGY3N3dpcHhZelhkNFNJZEtpb1hFU2lKSWx5YnJScGdZTVM0Rmk5UjFrbE5GS2dSR0VjUjh1WXE2QUtCaFE5dkZKSkRoUWJMOGlEdVlWTGQ2SjMwcmRqSFRCOFByeVR0WVJMb1Z2dkp4eDlmWkNvTzZMMmI4VmVxM1p2bndVZGZDVXc0UFpJUXlTSlNOemdxMS9hK1dwZ1ZBR2RDU0I5RFkvd0lFNEJlaGc1eGJJMDJwYytPSGovQU8yaXo0bmt1WkpKb0xTTGlzNGFCU3FwV2VBd3lWaEtBeWQrTUNER3Q1dlFHQjZ5K25sb2JlRGthLzRWSnpCMlorMDBXSXFOOEJheFAxVU5SeUdBMU9HK0V1aFk0a0FZckZGZ1dFdTJGS0JpY25kODN2WTlqM29MQmFWcEtxRDBRdXRXM2dzYUFXRDA4c2FBeHk5Q2pMZ0lEL0MyektUdS93Qjc4VkF4aXoxVDJFSUcrNVFMRWlEdFo5NTR5eVMvcGNIeDR2OEFQRmpVcEFVaDJTT2dJK3VMMFBiTDl2eDRJUUZ6ckJoU1FvNWVSeGd2VzZQOE9GMnJseDlCbDdjZ0xrdEJtaFlwbVdjYzU0azZNT0JCSWNHbFNLeWpMYmdJbHdSZFREM2lrb3VLendFRWdiSXhhZUl5TkFzSGc5RjcxZjFVWmtDUjA4aWJGUkZFQllqL0FBdkR4Y08vNm9BREFJNUM2NVFkMzlmTkZabHRHVG54VjR0YjdjVTVFeEVtbkNNNUtTckFEQllXQzhmSHBURmlkelNZeXlMTk1hTEljOGp1eDlQQ1VWZTMwS2t4Z3oyOGlrNlNCL3hmUlBkNUFSV0FscGdZakx2K3FPQnVoKy9iaU16ZEEzY2ZrOEFxQVUyeTZjVHBNMUZYdVBoeWxaTHdWaEtrVUFobUo5WHlMb2NQdC9oQnNBSmFZempMa3RGb1BRdS8yL0NlTWg3Y05Ca1RSUzBLWFJ3OEcvOEFNQVpEZjBvMG1xNEhRb0JBQTBLaWhORW1pWHA1aXBFL1JrZS9BRXBNQXBpUWtYTW41NElTTWg4dmtSR2F1ZjRicFpwZWh5N0EvYS90dUJrVzhxa2hSeEs3QW5WdFFvaVdTZ050d05UWHdBU0dJdGgvN3l1WHJJVFVzZEJBcGlkaUplTWFHd1BTWDhpdk5VdDAzb0dwcEUvd1hsZytnY2tXa3VBYXVWWE5sQzdxNThMeTJyWUpudlcvMWZRc2ZmQ0l0a1pKcFFwWUpjYm4rQmZvUXFkbVZMeU83c3pjdzdhVkRGcldKNFByUE02OHFCeG1IM1JHTUFqazJxVDY1ZmZJb0V1b083UnF3RUhiSDNuaVlXZUNNVlBJdXcyMUtzQjJJTnp0NHd3WEdLZXg1SXRWTzR4R1ZxdThhVEhPcGxSUi9FRW1kYnRLVGM3YzdrNHhtRFJxM2MwcFUxSkxVWDNlTjgvd3k4aE9rQVMwd2pocGJiZW5KQXI1NklQZWxVcXl0M2tFSzNLNEUzWHNmTkhGU1NOblc2YVZHUWcwbFVKdlVYVUp6NUZpUnJyd2RoamNGQXdCcU04NkZ3bGo1TkpnUkt1ZmtueWhWczFPVUFYc1RwdFUvZmRxZXBuVTFtNEZnZHZ4VUNSTElZTy81cUlHMGJEMXdvNEJNRlNQZ0dFb1hFNkd0WVRBVzVMVHdmUlAzeXNEUk14c2NrNVplMjdVTTZia09YVGtaUXNSNnQzNDk2dUJDSTZteDd0UzZ0RVVobXI5UW9BSE1XQjZOQUVBNEk4U2xkTlV2cGpRSzh0bzc5aW5Ma1pWYnZreU5Xa1NpWU9DSEYxMG9FSkxpTWpVSVMyUW5mR255bGRjOVNtNVF6aVBXUHVvMFJNYmoxS2dSZldBK3FpSWk1UDdWRkdhalBGUUtzQmpVZ09nT1ZQa0d3Nk5SNHJ1ZkphdEZXd242b0pZN0cxSGJINHFjWThUa3k3Y2c0YUNhWlNncjFORWMyNkExNFJJQUxvd0RWYU52VzJRWmJGUGlaVHhRQVZNQVoxTGhkNmoraWhjZXdqRDMrT1JXZXZoUUpCL1p2UThINkkrVndTYk5kL1NvOTVjc2JvMEFGQ09adzlaSVZxNmlXcmxOOTZSK3FKSitwZDgxZ2phRGY1V29qb2FQMVJVY0M1ZkZKRXRBY1g0b1JKR2VDaGRwMGxTMWdHbmVrR0NDWVJSa210WE9qVURHZXA5eXRJWFJmaW9VZ3hjWWJVSWdqSTRWQ3VCZzRxaGxGN0dYWU5hdzd6MUxWWjEwQkRveDkrSnBTV0FKV2hZZjJMdlNnVllDNnRJSzQreXcvUGZ6TkVoZFY2S2hVTHJucGpVTGRzM09WSVRrQjgwWWx6TjFjVnBCSWJsTThsZTlQYXVrOXZ4U3h4Q1c4ZWxBb0p4R2hrVVlreWZ5b0NVSnR3QUtvRE9vakZsYm93cVN3OTUwVTNBRFEyYWxHSWxDUFg1ZTFEeVFFQ0JUTVE0ei9yU2xoMkg1VVgxeHUrdkFNRkdEK0wrYkZTckJVTlFJUjVDL3JVU1BhbGxFVHNKZFJ5WXJZRE5wRXBPSnR0U0NtV0prMWdHZDNOZitSVW1LZENrVVl2UUxUa1RSaU1IRlpjRXNrbXFqNHFlUjl6OFVybDNTWUZJdEtlSTl4VWFTYlVmQkc1TmJRNlVsSW5XTDBwYlRTL3JrWXErR1l0S2tnUFBUYnprVlNLSm1VYlRpd2ZtcUtDdFZEVUdUTmsvRkVuUUtDSklpYlZoS2JRM3F3VEszWFZwSVdRWUN5VmtWMlExSGlIcFJham1LeXFFU1loWjJjTGtOWlJXV0NVU1pPOTFZeldDeEhTa0VJakNjRlNOWVJZWWh2UXNnbTFJYi9KeG9uU0JoNER6OVdhNERZaEZRTE8zbzl4NG40ckRkdFpRODlFRkNSbVh0L0dCU0FSSkhLc28vd0FzYWl4ZXdyUTd5RmFJR3F5MFJ1Rm1aeDdWUFpjYlVRbWMxdTB3am9ySDdwTXg4My9oUlJrVWRxeU10RldSRFJ2d3ZCUGdvb09LOTFmK3lweGN1cTBZZ1NxZU8zVC9BUGloLzlrPSIpLCB1cmwoImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRRUFTQUJJQUFELzJ3QkRBQTRLQ3d3TENRNE1Dd3dRRHc0UkZTTVhGUk1URlNzZklSb2pNeTAyTlRJdE1UQTRQMUZGT0R4TlBUQXhSbUJIVFZSV1cxeGJOMFJqYW1OWWFsRlpXMWYvMndCREFROFFFQlVTRlNrWEZ5bFhPakU2VjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZi93Z0FSQ0FHdUFvQURBU0lBQWhFQkF4RUIvOFFBR2dBQkFBTUJBUUVBQUFBQUFBQUFBQUFBQUFFQ0F3VUVCdi9FQUJrQkFRRUJBUUVCQUFBQUFBQUFBQUFBQUFBQkF3SUVCZi9hQUF3REFRQUNFQU1RQUFBQndHL25BQUJBSkFGQUFKZ1NBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQkNKZ0FCUUFBQUFBUk1DUUJRQUNZRWdBTnNzdDRHdUFBQUFBQUFBQUFBQUFBQUFnQUFBQUVRQUFDZ1JNU0FBQUFnRW9rQ2dBQUV3Skw0K2pyMDhPbmw5dmlYOUcySGtIcDhRV0FBQUFBQUFBQUFBQUNBQUFBQUlnQUFLQUJBSlJJQUFBQ0FTaVFLQUFBWG96MjBWbngvUm0yZW12bnpnOVhoTmM4OW9HdUFBQUFBQUFBQUFDQUFBQUFDRUFBQ2dBQVFCTUNRQUFBQWdFb2xWNCtpOC9yK2JlbnpiZWNPOHdBTFhuR1dVWHoyNjduNitUM2VGZjA2NWVNZXJ3aGVRQUFBQTU2UGQ0ODlxb2JlY0FBQUFBSVFBQUtBQUFJQUFFd0pBQUFBQ0xWbm5TL1M1ejUvMWQ2NUZuTFhMMi9ORGJ6Z2JZN1l5cjBjYWFLejQvb3piUFhYRE9zUFg0SlFMMTZ1dms5L0ZKOUhraER2T1VCTWFZZW50NDh4NWZiVGJLZXBrMHo5M3pBdklBQWlKZ0FBVUFBQVFBQUFBU2lRQUFBQUV0Yk5sNk5LMVM3WmE1YmVjTEFOY3RjcFFzQTJ5MXhsQ3hhdHN0OS9aem5oK205UG1nVTF5K2g4Z08rRnF1Tk5GSGw5MTZRMjgydVd1VzNuQ3dJSUFBQUtBQUFBZ0FBQUFBSlJJQUFBQUNBYlk3WXJLQ1RlbXEwcUFXTk05cGM2cmM5VmVyemM5d05NclRSbDZMVk9zOWN0Y3U4d3NBQVRHc3NaZ0lTWUFBQUZBQUFBUUFBQUFBQUFFb2tBQUFBQTJ4MnhBUnRqc3VTQ1NpUnRTRnJhdW5uOWYwZkh6eng5R2E3cm5GZW5zK2NGbXVXdVVvSUFBMXgyWEVJQUFBQ2dBQUFJQUFBQWlRQUFBQUNVQ1FBQUppUytlbVlBMngxTWdnRzJPMkt6Zk9jOXRGSGw5dDgwK2p5YVpYejI4ODJwNzh0L05sOUY4L0xXTFJwbEE2ekFiWTdMaUVBQlFBQUFCQUFBQUFCRXdKQUFBQUFBbUJLSkFBTmN0Y2dCcmxxWkFHaGJHMVFFQWJZN0xpRXRwbmZ4L1M2WE9oajZQUjVsdHZOaVBaODRCdGpxdVFBQUFBQUNBQUFBQUFCQUV3SlJJQUFBQUFCS0JJTmN0Y2dCcmxxWkFiWTdHSUFBRzJPeGlCZW1zNlZveTNuWEhYWHo1Q3dEWFBYRUFBQUFFRXdBQUFBQUFDQUFBQWxFZ0FBQUFBQUcyV3VKSm9aNjcraWRjdDBvVG5hK2lEeHBpd0FCcXpJQTJ4Mk1RV20yUUFMODZYeDYvSzQ3cU5jQUJCTUFBQUFBQUFBZ0FBQUFBSlJJQUFBQUFMR20vUjkyZW5sOVJ4MkNnQVI1dlVUaytENlYxejhvNy9LMDR5eTJ4dklEV3NGUWE1YSt5WER5Kzd3azNwcDVmZDlGeGZPejJuUGVuZVdBOW56d0FBQUFBQUJCTUFBQUFBQUFBbUJJQUFBSjcvbjZtZWdjYUFBQUFBQUltaWVIai9VNGQ4L050TXRNdHN0Y1NVU2UzdDBqTGI1eXByak91TzJlcGs4L3J2ZWtlanlVR21RQUFBQUFCQUFBQUFBQUFBQUFBbEFrRGZEdHpyb1NZN0FBQUFBQUFLWG9sd3VQejMwL2s2NDRlUnJrOVhsNnN2WHgyWTdmSnZiNHQ4SjBuRUdoYkc5QUFBQnZoMHBlYTJ4c0VFd0FBQUFBRVRBa0FBQUFBQUFGdnFlRDlCbm9IR2dBQUFBQUFGTDB1Z0twZWljVHcvUWZQNjVPM3hPNGRBWmJSNGZlVG5VNml6aCtiNlh3OWM4RWFabDRLZ0FkdmpmVDhkOFB3OUxtOWNoWUFBQUFBQkFFd0pBQUFBQUFCMXV2enVqanNFNkFBQUFBQVJORVhGQXBlbDB6K1grcitVMDR2NnNNZXVQckhqOW1Pd0tBQjg5MC9aYnJsRXVldWZ5UHA0NjQrVG42SFhybng5SXowNG5OOW5qMnhDd0FBQUFBZ0FvSUJLSkFBQUFBUFozL2xQVHgzOUl3M3owQlFBQlVzQUJSWkpDcTJvazJGajViNnI1anZPY2RjdE9OTy93RE9UemZxM0o2V2V1Z2xBQUFBQVV2eWJPVlUyd0FBQUFFRXdBQUtBQ0FKZ1NpUUFBQjB1YnBMNlBSMEs4ZDdhOEdaZTY4WHM1NmtLODNwSjR2VG9CbU5Ja0JZckdpQXJpZHZsOWM4ZURYRVhOcTYrT1hTdFZuWTZ2RzZlV3VrL0o3V2ZUdkY3ZU93VXk1bG5yNENOY2d2SUFBQkFBQUJRQUFBQVFCTUNVU0FBVzYvR1MvV1ovUDlmUFREeC9RamhldjMrWTAzNTlWNmJ4ZWptNjVsSnVpa2FZMUc3T05GQmJPdTlmTVkvVGNiVEx5K2pHMW1WU3hMc3krdng5VDVuUFRBYTVMVkdzWmxCQUFBQ0FBQUFDZ0FBQUFBQUFnQ1lFb0VnQTI2ZkdUcjZuVDVQMThkZlF1YjdlZTlhVEVMMEFWQ21xVnZOSmJxVUxGNmkwVmpERDMxczV0K21NZG1Ndms0ZDZiWkJlUUFBQkJLQUFBQUNnQUFFSWtVQUFBQUFBQ0FBU2dTZ1NBRGYyY3hMM3ZWOHU1Nit0cjh4NkplKzVPODY5ekhhV0syMEZDQXBFaXVsT2FuUStlcFRUTU91UUJCS0FBQUFBQ2dBQUFBUUlUQWxFMEFBQUFBQUFDQUFBQVNnU2dTZ1NnU2dhYStaTDdyODR2VW5sSTZtSGlGNnc2NWxBQUFBQUFCUUFBQUFBQUNFQUFBSmdTaVFLQUFBQUFBQUFCQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFoQUFBQUFBQUNZRW9rQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFQUFBQUFBQUFBQUFKZ1NnU0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBRVJNQUFBQUFBQi8veEFBdEVBQUNBUUlFQmdFRUF3QURBQUFBQUFBQkFnTUFFUVFRRWlBaE1ERXlNMUFVRXlKQVlDTkJRMEtBa1AvYUFBZ0JBUUFCQlFML0FLRktqTVAwL0NlUEZSaTM2ZEhJWXpKTTBncVVSL3FDOFNUYy9wZDZ2a2VFZVFRc1AwSzNKSEV5SDdzc0oyWW1NYWYwQVZvVm81bzlEYjQrN09PUXhtU2RuRlNHUFR6aGgyWkdVcWZXaktQRWFWbWY2alJJR1p4WnRvOGVRMktMMHh1YzdjckR0ZVBGZ1d0VWtSajlpdkU3VzhlZDZ2azMyalpoS25oQkhJQklva25KbUpwaGIxdDhyMHZadGs2N1VycnRqY3hzK0p1dGExK2tSeXBPNzEvK1cyVHliVzRMc0czL0FDNU1uazllM1pzVGk1NG5ZZ3V6RzdiYjFlcjVEeDhnY1MvZjY5OXNmazJqZ2xDbWhjRGVPemtSK1QyRW5kc2o3dHI4TWhTbTY0bEFyaGIweWxUc1hzNUVmZDdDVHliRTJvTHN4dWNrbGRLWml4VWxXZHl6TUxiQjQrUW5UMS85eWQreE9teGVDNzVPL0lDOWRFNUE4WHIvQU81Ty9ZblRZZUVlZDZ2a0JjdWJ2bGhmTEpFcmhoWTIzbngrd2s4bXhPbXlUcnVpOG1RcFRwUHl1QjRtT1FJcDZiWDlqSjM3RTZab0x1eHUyNU9tUTJueDdaUEo3Q1Ryc1RwbkgxMy9BT1dZNm5nYjVQMDJSK1QyTDlOaWJCNDk3ZHVjZmZuSjNiRTlrZkhzajY1bnhiNU8vTmUzSmVMTjNiT2tmc1I0c2xSbW9ZYVUwbUZZSDRqVjhSNk9GbHA0cEFDQ04wZmZzNlJaUjkyeGFmRGNDTGV4VHBIaDNla2dqVGtXdlRRUnRUWVNuaWRNMTRMc2t6VHRyNmVtT2hRNEZIRHJpTEdWVUxVUmIxd0JZd1ljSnpwTU9qMUpBOGRIaEhtZ3V6RzdaZjVZYUhWV0tlOGxEWWpsRDNldEF1WUlSR1B3Sk1QclZnVk9TY0Jta2VzOEZWamM1ZjFrVFIrMlAxbUVpL0JicFVzU3lDUkRHMUhoSG5HbWxaK0VPYmNFcTlJTlRNZFRlcmhUNmtuVDhIL2xsTEdKRlpDcnlkMldIWFZMVW92Rm5KMzVkc2ZJaVRXM284SWxrL0JYWk1nT3pCRGpsaUlpalZIM1pJTlRNZFRjakJENzVScGw5Q0JjcU5LL2dOMDJkV3hVZWlUTEJqK1BJaTlOaFl6UXdvQStHS2ZDdUtQMkx5Y0d0bzhXUDV2UTRWYnpmZzlXMkwweFM2b2NzTWVSaUlkYTVhV05GU05vR29vdWxNYjVmUTRJZmhMMHpiS1RqSFNDN1F5V241RXNaK3ZGaDFUSzE2a3dxdFR4c2h5dzBHbkxHK1QwT0Q4ZjREYlJ4YWowcE9BckR5L1VUZnBHcllRRFJ3OFJwWWtUUEZHODNvWUp2cHNDQ09lT0p6SnNBTERKdTQ4STZSeWpSU3JJT2V4MHFUYytpaW1hTXh5cklPUmNYMk50NnRuSVA1Wk83SUVndzRra3E2dnpzWko2U0NLT1ZIaGtpcVBGa1VqcSsrU1BWUStRS1hWbU9KMkwwemxYVGlOa1lObU5ocWFybXNOTXpOVnh5SjV4R0NibjBhTVVhS1ZaUkpoMGVtdzhrZEppcEZwTVRHMWRlUXhzTmg0blppNzZjd0N4a09oYzhFdjNUTnBpcEpHak1lSlI5alNJbFM0dXV2cGdTREZpZ2NualI2ZkIxOU9hS2x4VWdwY1lsQ2VKcXZmWU9OV0lyVldvVmMwT0d3MXAxSkloamFsVXNWdGNtNXpnVDZjZU5iN2N3U0srckpSZHo2dU9aNDZqeEtObVVWcU9HaU5mRFN2aUNoQ3dvS1JSKzZyMjJGZ1RWaUsxVnFGTVRsTEdzaXRoMlFzM0R0anp3K0gwNVRQOVNUMlNTdWxKaXhTdXJiV05xWHBXa1ZhckNnT0Y3YkY0MXhGYWhrOFVScHNNclY4T2hnMXBJa1RMRnk2VjlyZTFKaVpGcGNXaHBaRWFpYlVCVnF1YXZWelIxRWczeTBpclVSWGJucEZXQW9jRG5KSUkxZGk3ZTVXV1JhWEdOUzR1TTBKRWJJbTFBV0JGNis2dU5FbWhjWmFhNDE5MWFhMGlyMnlra1dNU3lHUnZmQjNGREV5Q2hqRFF4Y2RDZUkwR1UxM0dyRVZjMWMxOTFhYXNhKzFLbHhLaW1Zc2YwVU93b1R5Q3ZsUzE4dVN2bU5YekdyNWpVY1RLYUxGdi9GRC94QUFwRVFBQkJBQURDQUlEQVFBQUFBQUFBQUFCQUFJREVRUVNNUkFUSUNFd1FGQlJGRUVpTW1Gdy85b0FDQUVEQVFFL0FmS3ZnY3dYNGVDTE90MjdlV2poZjZpSzhMREx1emFFOForMU5pTDVNMlBnYzBYNEZqV2lQOGhxcEdaRHd3eDd4R04yZXdqaFFpS05jVFJtTko4RmZyejdlTTA0RkdOcEZMSUJvcHkwdS9IZ2lrM2JyUXhFWisxTmlBUlRkcjQ0N3k2TGRQdlRiaDQ4eHYwdDFUOHlNVEdqK0k2OHUyWmlIczVKK0pjNFYwY1BsejA1R05wVDZBc3A3c3pyMlJ2TVpzSVl0djJGTlB2T1E3OWpjN3FUNGkzbjliRzRtUUo4cnBOZkNZYU96bVRZU0NmU2RBeG84TkRMdXl2a3hxZWJlY2hwc2dBc2twOFlJek5SamMzbVI0YkRaUzFOWTF1aXhEdzM4ZmZobU9MVHlYeXBFU1R6UGZVVmxLbzlLSm1kMUtTSWZzelR1UTMzeFpBaTBqaHEwVmhtTkl6SVFnV3BZbUJ2cnQyajc2SmJ3QVZzaWxNZWkrVzMwcEpUSWI3WUN6MDNDOWcxNkkxN0puVWNPYWJyc3BaUWkzMXdzUjE3RnVuVWZ4QnV3dFdSQVVqcjJMWFYxSDdBYVFOOFpOZGtGWHBadmZTZHd0MFdmYVRTSnZzd2FRY0Nzb1ZGYytnVzdRTFR1UTdvRWhaMWZScFpSc0p2dmJLenJPckhGZEl1dndsbFppclArRS8veEFBbkVRQUJBd0lHQWdJREFRQUFBQUFBQUFBQkFBSVJBeElRSUNFd01VQVRVRUZSQkJRaWNQL2FBQWdCQWdFQlB3SDJyYW9kNmVxKzFYQzJGNS9UVkdYaEdrOGZDcDBmbDJEYW9kNkZ4ZGZvbU91R1dvKzFYQzJGNXlnWkU1aVlFcHRXZWV1OFMwcTRxNHFrSEFhNUtqTHhDTko0Vk9rWmwyTFh1aVZlM0dzNjBLLytZUWU1eFE2enFUWEp0RnJUT3pWbTJRcmlteVRBVFJhSXdlMFBFRkg4ZHlwMHJOZSs0MmlVMm9IWUdpd3B0TnJlUFNWbngvS05STnF2SjlOVXAzaGVCNnBVN05UaFZKalJOZVpnb09CNDlOV2tPUmNTcUxTZGZUT2FIRFZlQmlBalFkNlFyZ3BHMDkxclpUSC9BQTdzbDMxbXVLRHB5ekNDck9JTUx5SmxSeFBYY2RrT3lFemc5Z2V2MXltTUROT3NUQTIybkE4Yko0NlQ5eHAwVHVNSlZ4UWQ5NVhJY2RGM080ek1YWUJ5dlJNb2NkRXRuY1pnUktJak9CUFNLbjdWdjF0Tnl1NVZtSUVvQ09tUktMU0ZjcEMwMkE3RW1FM1U5b2dGV0tObVZjY0FJN3NLMVdxRG1pVUJIcElDdENnZjRULy94QUF4RUFBQkFRVUhCQUlCQWdjQUFBQUFBQUFCQUFJUUVTQWhFakF4VUZGaGNTSXlRWUZBa1dBREV5TXpZbktBa0tILzJnQUlBUUVBQmo4Qy93QUNxRDhRUEt0ajhQb29ZQndzZmlHd1Vmdy9sOUIrRzhVZVZiSDRFQVFvWEVkSkloUXdEaFlGZk4vYUNybUVHZ29xQk1FUUptdDZUMXdDamZRMFFQbHdqNXpIYVprZTU3SDNLMHJUT056UXdWVEYxVEZEak1Hak1CdE5hMG1pRkFCMW16WFZSdXZRekQzTVpnejdOMTd1am1ETW81Um1qZE5YVFhPWURpVVRFNjBmRWk0YXVXZWMyOUdZTTZQQlZQS2dvR1ZxNTlITVRLMXhLRVMraFVTb2hSS0hFalZ5M3htSmxhNGxhTjRSY25uTVRLM3hLTjV3RTBkM2hicUZ3enptSmxiNGxob0p4dFdTSVhiVlJSQlpqRlJtWkcyWW1WdmlRSW1kbzdYQTVtT1lqaVZyaVFuUVhCM01rRkI3STJsR1pNOFN0Y1NOWERBOXljWExSMnpKbVU4R1FibTRocFNSb3ZDTXAzT1pIWXY2V1NWZ0Fva2hkd1dJWGhNOUpWWmg5eWpjM1BTY3lhR3lpZWtMQ0ozdUtydGh3dWhyN1hVeTlvK3BRTkE5b3V0dCtjQkpFSTJWQVZ5K0FVV3F0WDJoMldvMVRJMXJJQWlYOGxXMnNGRFNhTEtQM2xzQXE5M3dZaWhVQzlwcmFSaG54aVZ3aVh4a2g1TmN0dG4xOEdHcnE0NnFEVGdOYXl0U01qM0pITEFQaGNQZ1ZaT0tocFI0YzBKT0tQM2F1U05za3RhL0NqcklHb2RRd2thTDRqdGRIU3I5bEc1SjJUUTN5SUJBZkc0VVJnWGt2cXFVUkZyRmQ2cFZXZkp4dWlkVWNpRzN3dUpqczhzYUM0dER1RDhDcWlXQVFaUTR5Sm8vR2hxNW9iT0FVZkJ1U3l5TVYxVkxxcnBvVjFCOXRyRnc0eUk4L0JoS1RJMDFzN2NYRnJ6TFZkcTZXWG5iSXY2U29qNEViZ29idWlGdnA4QWsrRVRrZTJpb2ZWekM2NGthRzZocFI4UXJMWTlycE1iNzlzZThrMGFVUjloUS9VcnV1a3p4Wk5sclZWRExTNm9lbnhsNWthYTl5bUhDc3M0THVLeFZocXU3c1JjUUhjb25KSXNyZlJhSFpSWnJ3b05WV05ubFV2WVMwOXlRQy9iSHN5Tk5KbzdPaXlWWHBNblUwRkQ5UDd5ZUlVUDFLYnU2bVlyb2ErMVNQcFZnVjFBaGQ0bGlxS3NYWWZhdEh6TEErVkF1b3JMT0hrNnFNZ0hueWd4ckpRcnZhKzFWby9lVjBOTkZYcEwrcGtGZHNGaVZSc3IrYzBxdGtxQzZwSU9wZ3NDdlAwc0tPZ1YxZHVxZ0tNcis2UzIzam80bk0ra3JyRUYwbU11OG5jVlZWOHF2M0pIVlV3ZlVJUWFLNy84QWlxMFYwaDFnWW5OcUxHUEs2aEJkTFFkRTRxaXdXQldFdUpVRnMvQjBKSWxGbzUxUnBkVE1WV0lWR2hOZzZMWGwrS3hWYXVnWFJLaWMvbzBWakZWWlZZaGR5b1F0blVXQ3dXaXhLeFZTdjRlT3FpMGZ3YWpSWGVWaXNBdTBMc0M3UXNZS3BqL3BRLy9FQUMwUUFBRURBZ1VEQkFJREFRRUJBQUFBQUFFQUVTRXhVUkFnUVdGeE1GQ0JrYUd4OEVCZ3dkSHg0WUNRLzlvQUNBRUJBQUUvSWY4QXdVVUU1QXF5SWI5TzFUTnhJRVk2L3A3MHBOUW53QVFFQk84VCttQTVCRHB1Rk9GMzZjRXFFTlpuakUwSnkxVVFSK2dpU2lkVzZJTUFhcHd3S1FZczNYUlRCaUtyVk4zK3RBQWhESnowYWRDQlczeDBYcVZDaWNZQkVJZ2hqMVJWQ0pCT2lJQURFZHVxVElZVGkxQ0ZSakRSQWJSZERNSFkxelFOY01SWkFFVGRGRk9XUU9DYm9DcUdQVkJibmZaQktFMk4yd1Z5dEs5QUpPYUYwLzE2Wmg3S0tGYThzclh2aEZvR0QzUkVwam5LdVl0a1ZjeGI0Vk81SVJNMUE5c0JaTVRoRkljSVpvV1Evd0I1aEFKS2svS0pKRW1weUFPRUFlWVhUMnpKMUp4dkVZYURsQnlFdXFBdDhYY0tCdmxDcTlLV3pic1BSQktyd3pYVG5IMHNkd2lIWjhvczdnamRYT1ZqQnBVcHl1em1ZdmREb2l5TGxHNXJsM0RUc09XdHRPYmYwR0ZTb0kzQ0liUDhmbysySXlYN2hwMkF5MU52aXplS1R6aFdoREtFTFNVQTdJeGdBNU9pSUFNUm9jdncvbm8xRFludDNIM3VYNXVWcExjd29WVElBMFZpbk91VUZWd2pLdVU3M0FjbnhPakEzM0k3Z0tGN3ZwSDRpd3hCZklTNjByQUQyeDBBZGNpVDBZRnVBK2U0Q2hlN3kvVjNHV0J1Zkk3QVM2M2tMTGVRc1dTV0twSnRCVGpxQ2RuZ0s1SHVBWHZjdjFkeGxvMkF6MUgwRTR5UkFFa0p5aE9GVTRFZ0RnZk5FV2g5NS9udU5kZkw5WGNaR0J1dHdEbmhaTjljU25JU3dVTjRqbEVsa2ZoTGVuY2FxNGRFNFhCMEJIMFcvd0J5UElYSWdTd3BpSmRRNXpLTHUwQmNvbHlTZGU0MWVWODNKRWwySFFqdFBka3BIa3E0NmRnQmxpTGZ6anVVeldKR1g2cTJTRzZIb1Yvb0dTT3liRVdXNk56YjVCS290UWUzY3BjaGo4T0NxbklLME9SRWNZVWRKWUZBWEJReWVZUzBvZ3dFYzVoZDZnbDRSTGtrNURBM01kZXdmS0RsVjd4c2RVWXA3ak82VDEwU3ZmSjBCQUdBSGxhTUx3WDlZbFhHdUtZK0xzODVZRzJZdzJUWWI4d1FPbnVJRU4veEhHandpckpMWkdKajI0WUM1S1lmNmpyU3dHOGt3UnNselFmNFpPVEZ1UWNhSVBtSTBGMUY2UndyeU9ZWXFzeWFTUGJTQUE1S2VjaXFmd0RTYUpxUERUUkZJV0l4NEF3ZWNoOUlCR2pEQUU1bXB4RG14VEZoUU55NDdheUc1UDRMMWhzR0hEUWhZTHpmRGN4Zlh6aUE1WkFpcVJLSnp0azVJNk9VNjZaQWFWSjJUNVJZZHNzanFnQUFBb1B3YThXT3A3UTJUR3FrY3dwaU0vUVNjR290aUE1QUZTakRnS1FlTWZzYWRIbWtSMlI3T3Z4L0NtRGNmSTBEdlVaUFpPSldDVk1QVFVNbkNFTUJKTmdueWdhQ3c2TGxzbXlIWWpXYWxCQTZEOEhRdkNFQnNuc2xBR3JpMWNIRUFNRGhFWGR4UWJINEt5WG9ncm1CUTJVK3dXNlR3Nmt4dkFkaTlTUHd2UnlDV0RvS3pVeW5CckxGbzJBOUFSZy95WWlrTjRWU0J5TXB3MWlnQ05BZzdFNS9EK0NTd2NvS2pVemtrMTdBTndMRGt4U2FvM1IxVkRoQmdRV0ExRVFCZ0JVMS9HVFdZM3dBSkxBT1ZRdTBXN0k0elgvQlNhL0x3Q0JoVjR3NGd6QVRCTjdvU0dTRFBsQXNBSTNSUjRjRlVvQnZqNlBkaU0wZHhEUlhCL0FtZUl5UEJUUU1EUW9HQnVvSzk4QVk4aFJ1Tlg0QWRCQTZNZHFTL1k0bE90SHROMFFNUUdSVVpTaGhVd2dHRFpEQU5KWlNTcFV4SEVNVUVPTmlIT0hyTlYzN0lJeElkWFJ5WWdJaUJsbFVIY1p6dndhR2dJb2R5ZGxERU5zVW5RSUdRbGc1UVZHc3Nqd1VBV3VRNDlSZ2d1Y0ttNVdsN2lBeTRKK1Zid3dFZFJlVUNESUw1NnlEOWtRaEhKN0lIR1loUm1OYVNiYnlIcU1hMUlpejV3VlYzRUJBT1RqYm9SRjBBQUFCa2llWnlpVGdnRml5REFKVFFla2cxeU9XSVplaDdEMDROQ2hUSHNsQWdoeE9OTUd5SVlHM0lrazVMbnN3MFVnalVKc21laEFnaHdYQ0F4YmtDcld5RTV3SGMxRCthR1JIc2txa2VTRUFCd1FjYUlaSHJUaGJtTEZNMEJ5RnplaUpxTUYwZk1KRlcyUW1CSlRTajNJdDhadmd3UEkyUldqS2oyV3VJRGxoVmVWWEpNaFZKemtxd09DdjlLcW8rZTFqUHJGRkMrWlJBdlREM29BdjRvS09pTk5Gd3ZHSHZ4ekJUTk1hbENsRGZUSUlEUTFLMFc1MkZiZ2VNQUtJRDlSNHcxVTZHeU1DVU5DZFo3RitVSlRxWHRpQVNXQWNveEFPeXhVVnQ2RGp1ZGZXc2FJK09jRUxjT1V5aVNvbVU0V0k0VDBFUWR4NUtmSmlPak1JQ0RUQWxxcXA5Z211ckxJRTFsUXA4WU54Q0RrQUFHQ2FvV3U0aFVGQnZoSmwvWWQyQkU1RUhaVlpsSzRlOVZFZVV3VFZ3ak56WXBtdnBUMVdmV1VESnhDNEJ0Z2JEY1lZWkllUzlYVlRnY0xJRUVPQ2lBYWdIQkNrQVZVb2FaRGZ4aTZLVEo3elJGSEo1bEFVT0MrUUtyMjg0TklxYVlRSGxkTUZDRHluL3dCMENIWUR5bnZtYllFQ1hFSFpNUDhBY0pySG9tR29rbnF1ZktucWJvRUdoVDdlQmRhTzlCYnY5TkhsR25JY2d0TitDanFFYUpIS3FpOHJVMGU1VlZxTVdLdSs5YjFTc25rTDZRaVFPQWJsT1FCMFQ4SDlHb0E4cWhJQU5CNUNHc1JEL3RML0FHRWRFUzAxd0NOT2JsLzhVUC9hQUF3REFRQUNBQU1BQUFBUUNDUy8vRFI5OXRCQkJCUjErKysrKysrKys4eEJCQkJGOTk1RFgvNkNDQ0MyL3ZEVjk5dEJCSkJCUng4ODg4ODV4QkJCQkJGOTk5Qkgvd0Q0Z3FnZ2t2OEE4c0hYMzIxR3FrSUVFRUVFRUVFRUVFRUVYMzMyRVA4QS93Q2dndmlnZ2x2L0FNc0hYMzJ6RDZJa0VFRUVFRUVFRUVGMzMzMkVOLzhBNkNDQyt1Q0NDMi8vQUNvc2ZmZlZuWXNDQVFRUVFSelRmZmZlWVEzL0FQNklJSWI3NjRJSUxiKzdkM3JYMWEvSGswM2drMDNzTXpUM0VFZC8vd0NpQ0NHKzIrK0tDQ0MyL08vaEJWMjk5ZTk5T0tmOS93QmorZ1F6L3dEL0FPaUNDQ2UrUysrK0tDQ0N5LzhBMVQxZ2dZczh2alBmdWNZVWloMy9BUDhBNkNDQ0NlKytDUysrK0tDQ0NTMlYvcVBMSmFoZENCcUREREwvQVA4QS93RHlDQ0NDZSsrNkxDUysrK09DQ0NDNzJ2OEEvd0Qxcjk4NTJaci9BUHAvL3dBZ2dnZ2h2dnZ1Z3JRd2t2dnZyaWdraVFsOHVudi9BT24rVTN2L0FQdHlDQ0NDQ08rKys2Q0Q5dExDUzIrKytPQ3BDVkNCQ3l5aHlsYUhpQ0JDQ0NDR2UrKyt5Q0RmOTk5TERDMisrKytsQ2NKVENDQ3hDQkNwQ1FKQ0NHZSsrKytpQ0RmOVI5OTlMRENTMis2MlA4ODhmN0loQ1pDdktQTVArKysrK3lDQ0hkOTlCUjk5OXZEQ0N5MTg4ODg4ODg1QU90SzQrUDNqKysreUNDRFA5OTl4QkJCMTk5OVBEVTg4ODg4ODg4ajhQOXByMVY0OTZ5Q0RCSGY5OTloQnRCQkJSOTk5OWw4ODg4ODg4OG44bldwOGZ2ZkNCQ0RUVjk5OTVCQkI5dEJCQkJ4OTkzODg4ODg4ODcwOFhFeS84ODgwTXJ6K2Q5NWhCQkJOODk5SkJCQkJ4ZS84ODg4ODh2OEFPL0p3RnVQUFBQUFBPT1lRUVFSWGZkUFBmYlNRUVFRNmQvOEF6OS8zL3dBLzhzZDVGZFpiejh3d0JCQkJOOTk4QVE4ODk5dEpCQlJqRkhFeVVuUUd6Z2RwOWhXeGh3QkJCQk45OTk4NEFBQTA4ODk5dE5CQmcxOHZybzUvajBQZnZmb0JCQkJGTjk5OTg0Z0FPQUFBUTA4ODk5OU5OQkJCREowQUFUQVEvUkJCRk45OTk5ODh3QUFBK3VJQUFBUXc4ODk5OTk5Tk5OTk5PY3VldE45OTk5OTg4NHdBQUFBTysrK3VLQUFBQXcwODg4OTk5OTk5OTk5OTk5OTg4ODh3Z0FBQUFPKytDMisrK3VLQUFBQUFRdzA4ODg4ODg4ODg4ODh3d0FBQUFBQU8rKysrQ0NTMisrK3VPQ0FBQUFBQUFBQVF3d0FBQUFBQUFBQUFHZSsrKyt5Qy84UUFKaEVCQUFJQ0FnRURCQU1CQUFBQUFBQUFBUUFSSVRFUVFVQWdVV0V3VUhHUmNJSFJvZi9hQUFnQkF3RUJQeEQ3cjNCNy9IMmV5bzVLaUZPbURyWnZyRVJJL1pVN3c3aHQ0Zm1FTHZ5ekt6dVQzK1BzSlJzdCtxbUZHeHllanFLbW5KVUIxbVdkdHZ0b2pzdG5xclQzR3V1aCsvSEJ6UWt3WmlVT2pWWExkL2IvQUhsaiswN2hONGZtWEQvTE44TXgyS3ovQUxNZ0UxTmNFd2FhTU1RNG1iaFRmdjhBdUVFYWVNUlJzK1oxWVI1ZDh2dHdGUXdsUkFVMUgxNHpMcXRYeW1XWkk0cW9qdnlIZkJ2a2pnZTRmVFB1T0FhdS93QXpIUEVmUWJqNUR2ZzN6MUVJdW5YOVFBWEs0MXNvcmZkeEthNGZRYjhsM3diNVl0MnhneGEvOGxvMG83akFMb1pvcld6L0FDRldnNVBKZDhHK1hmSnZnRGF5V1MwcENrRnUzUFhrdStEZkJ2MEhGdWRUQlZuNmlxbHJ6MTVMS3VGMnA4RW82OUhYQngxd0F2VUFLV1AyZVRoZ0ExNkVIY1Uxd0R4MXdKQVNnMFFUMkZqbVdFcUxzSHNlNzhldkw2REw4a1NvOFVMNFNYVDJoVmxYTGcxMGVOaVBvdkE1UnpEWUlsa1JHbWRjUG9OZ2pqd1JpL29uREtPVWgzUGdsSmZDdVJiYzNlQ0tIMEdIQjd6ckJxbURaWjZBRytCZFFVQVVUTmVEb01HOWV2dmg0NlJqd09ucm9YNFNCekJtWENtQkJIWENYQXFMVU9PK05PWEdKY1Rtdzl4QkhYQTdSMTRhYVRBTVcxS2RNdnVRWDJsNWxlMFdvRlN5Yll3NGhqaEZGZ09iZkgwa0IzQU9vKzAxTVFxNWtpc0ptSTdKOEV3RXVYNW9XbUM3bElQQkhUS3ZNL1BGZkVleU45aldrK2FmSkZ1LzRKLy94QUFtRVFFQUFnSUNBZ0lDQVFVQUFBQUFBQUFCQUJFaE1SQkJRRkVnWVRCUWtYQnhnYkhCLzlvQUNBRUNBUUUvRVAyclZhOWZmNmZES3czRFBiZy9XRCtZSWxuNlVhZTRwRERSL2lZQ05Wci9BTCtoY2hWVXkybjRkeXVXWVlaN2NQVnFBQTcrVjE2UXFCcGY0OGRBSHFCdDNtV09aUWVaQWlVMURVT1M1YlBVeEN0WHpoRXczRzloTU5XK3ZVU2d1L0djdlRPOEljbXVUM3hYMlNCaUR1SDJpVnRycmxCWXdrdldiWWE4ZzF3NjVZYitreEduMXc1ZFZNeU13K0RxSGtHdUhYUGNJV05rQkJESk1EeSt2cURad2ZCMTVKcmg1SUgyRVFkVDdSRFVJQlZiQ2UzM0g2Vjh2a211SGsxeTY0YkM4T1pzR0tqY0hQZmttdUhYRHI0UEZBRjhBVTBjOStTVFVhdHo3SlozOE8rSGp2aTRFVmFxZjkrVWxYZndGTlFMY0NEanZoQVZpVXRqenExRnRZeVFybGZmajM0UHdFcnd3Ymh4WXJnd0hjYmNKREtlZkJ4VGlFZEtEVEJFc25mQjhIVm9OK0NzMStGNXM1UWpVK3lXdGZFNkttcndWbCtBNVoyaVhaRXBwK0NKWENtNGlJclpxOEhjSWxiK2ZYQngyaERoTnZuWXJ3Z3BpVmNHTnNxSW0rQnFMY0M0OGRjYmNtY3lvREFqNk1STjhMcERIaGh0TWdRUnVXN0pYVmlIdVZpWERNY3ltYWhKbU9lQUVHUjVvOGZhUlhVVWJoN201bU4xTVFDTXhCZE0reVpXVks4MUR1SjZsNGxFVFpMcWYyNHY3aDBRL3dCR29aOVUraUJkZjBKLy84UUFMUkFCQUFFQ0JBUUdBd0VCQVFFQkFBQUFBUkVBSVRGQlVXRVFJSEdCTUZDUm9iSEIwZUh3UUdEeGdKRC8yZ0FJQVFFQUFUOFEvd0RncklkS1U3UlArT0NCTktPWnMraEZXYUFnVE9jNmk2RlFuL0dRSlMrSnNKZzBabWlVTHpRQjJ6b2lYUEZwSVkvNHVZMzVGR0Q5dlNtY0FsTUdCL3hZeGhScUtoVXVGYUxYdExIdlBweE9BNHhsVHFJMi93Q0JGaWlCSURoSmo0TDNFb0NnZVlYUUxjREVtbkFOMm1nTWt6S1M0S1VZbmpwR1BtQW02b1pCeHRha2RaeExVOEM4TUY3d3Q3eHhnUk5XQUkyVEJxNGtZaG5VVVhvSmNsTkFrWitMZUtaZlJJN2U5SUZ4QStYWU5BR1NtZ0JqTUZaSzVBb083Q3lvY0ppQm56YjVFNll2d2NaQ09TMFVQVjBPOVlpRGdHUnB5TFlGaTdCaFNqd0pCbWkybU9Oc3FtU0N4dTBtUWNYS25oZUVwVDVZb0R5VEY2TU5uZGkzNWptNm9OM1FQbHhtaFprMURlbHRoVHlJdTY2TzNLV0tEQ0U2WG42b0g1cFF3SDVyQUhQV1FyZThDaHJlOENsNFFpc0VFcGlzNFNIVjhzWGNVSm5GYjFUV01LMzRnOTJmcm02QXZxZmx6RWZKV2E1Q25LbEpYa0RjcU9sUWhNQnBTczVZWkVkS2lnWEZkT0NpUmJpRHZ5NWJ4V01ha1RWdWtIdDh3YlROM3NCKytVU0RWcFdjbDlOdnJtdCszcURnZW5Lc3VTSTNhOW05eDVoR0RXOVNyaTBZMWhOUjZDUHJ6RHVNdTY4dXlZOTYzMUgzNVR3SjlBcFc4MDl1WTFjQkdWS3JMVjRhSjllRHNHRmIzcjNmTUxYK3djdmVIc3Z6TFZYc1l2QXpLajdaazRrZGFSWDU3OXVYdjRKR1hBUjZETkpSWXJQbUdMb0h0eTQzVWUvbXRCcTlTN3dVUzBwTVJCUnhCWURKbWtwS2dCZHBRV0tDNXkyTHFEMmVEYityamozanpIRDZRNWNhMCtPUHZsa3pDWmVoZXBFekdzS29UT2RPNzdrU0ZPSHZtMDQwUEpOUUJ1a1FVUUJtUjJrbmtzWFZIdjRQUXNEcWg4VDVoN3c1dXRYUmU2SDN5NzNPNmVKRGZpc0V0U0pxeGZyNVByaTRoRTRCVGRCaXNSbEQ0TzRqdWdKK3ZNUGVIaDlCdlZIMnNjUlRDanFWUFNreFVobUplcG9qTUVIU2VLRnRrZFlwM0poc2xPd1hFYUdwRVllYmZqZlN3ZkQ1Z29SMG93ZmdvQWxncHdmRDdqNzU3TW5MMEg2Y1FCR29JQ1NOTnZDM0diVXR3b3EwUXRpeTVVNjQyUW5mbTZ4M3FmTVQwZyszZ3diMWl0N2hPZnJjSFZCOEx4Z3V6NUxoVmovb2psQ0FKVmdva3hraTlMRDQ4eHYxRDl1VzhjMS9JOG5XWU9zVzhDN1prZGdyOE9SQ0x5Z3FZMHlFbWNVNVZJcjEwTjdqUEtFRlBZUmQ5aW12aFV2bU4rcGo2TWN0OE5mam42NU91dytzL1hnZCsxMVg0RGtCUHdDK3hOS3BYRnZ4cy9tRGw2c2c2bytDK1pmd2h4KytXOGRmbnYxeVdUOUFSOTg0S2dFclRJVElROWtmWEo2ZCtxeDhUeDNUTmIvTGtDb0trbUNPallQMm5wNWxaZEgxRWZYSEFnMUxQV3Y3QStrMXB3NUp4UjkxL3dDYTBISDlWUHF2NFZldGFSOWxpdTFTSXVnam1CWWxYb0NYNHBuRXF5dkp2QnV3SSsrSUl2Qmw2VXFxdUx5UEdZcUJRM29TL3dBYWxZRVJoSEVmTWU3VTZpZnVqQzZaRjNvVU1JQzN2YkNnQWdJT2VLRTBFMVBMckg0TFU5MlhaK3o4Vk1JT3E5UngzbERxTDhEeTJMbG5xM2ZuajBmNzd3aXB4WXpYZDRTSWRLaW9YRVNpSklseWJyUnBnWU1TNEZpOVIxa2xORktnUkdFY1I4dVlxNkFLQmhROXZGSkpEaFFiTDhpRHVZVkxkNkozMHJkakhUQjhQcnlUdFlSTG9WdnZKeHg5ZlpDb082TDJiOFZlcTNadm53VWRmQ1V3NFBaSVF5U0pTTnpncTEvYStXcGdWQUdkQ1NCOURZL3dJRTRCZWhnNXhiSTAycGMrT0hqL0FPMml6NG5rdVpKSm9MU0xpczRhQlNxcFdlQXd5VmhLQXlkK01DREd0NXZRR0I2eStubG9iZURrYS80Vkp6QjJaKzAwV0lxTjhCYXhQMVVOUnlHQTFPRytFdWhZNGtBWXJGRmdXRXUyRktCaWNuZDgzdlk5ajNvTEJhVnBLcUQwUXV0VzNnc2FBV0QwOHNhQXh5OUNqTGdJRC9DMnpLVHUvd0I3OFZBeGl6MVQyRUlHKzVRTEVpRHRaOTU0eXlTL3BjSHg0djhBUEZqVXBBVWgyU09nSSt1TDBQYkw5dng0SVFGenJCaFNRbzVlUnhndlc2UDhPRjJybHg5Qmw3Y2dMa3RCbWhZcG1XY2M1NGs2TU9CQkljR2xTS3lqTGJnSWx3UmRURDNpa291S3p3RUVnYkl4YWVJeU5Bc0hnOUY3MWYxVVprQ1IwOGliRlJGRUJZai9BQXZEeGNPLzZvQURBSTVDNjVRZDM5Zk5GWmx0R1RueFY0dGI3Y1U1RXhFbW5DTTVLU3JBREJZV0M4ZkhwVEZpZHpTWXl5TE5NYUxJYzhqdXg5UENVVmUzMEtreGd6MjhpazZTQi94ZlJQZDVBUldBbHBnWWpMditxT0J1aCsvYmlNemRBM2NmazhBcUFVMnk2Y1RwTTFGWHVQaHlsWkx3VmhLa1VBaG1KOVh5TG9jUHQvaEJzQUphWXpqTGt0Rm9QUXUvMi9DZU1oN2NOQmtUUlMwS1hSdzhHLzhBTUFaRGYwbzBtcTRIUW9CQUEwS2loTkVtaVhwNWlwRS9Sa2UvQUVwTUFwaVFrWE1uNTRJU01oOHZrUkdhdWY0YnBacGVoeTdBL2EvdHVCa1c4cWtoUnhLN0FuVnRRb2lXU2dOdHdOVFh3QVNHSXRoLzd5dVhySVRVc2RCQXBpZGlKZU1hR3dQU1g4aXZOVXQwM29HcHBFL3dYbGcrZ2NrV2t1QWF1VlhObEM3cTU4THkycllKbnZXLzFmUXNmZkNJdGtaSnBRcFlKY2JuK0Jmb1FxZG1WTHlPN3N6Y3c3YVZERnJXSjRQclBNNjhxQnhtSDNSR01BamsycVQ2NWZmSW9FdW9PN1Jxd0VIYkgzbmlZV2VDTVZQSXV3MjFLc0IySU56dDR3d1hHS2V4NUl0Vk80eEdWcXU4YVRIT3BsUlIvRUVtZGJ0S1RjN2M3azR4bURScTNjMHBVMUpMVVgzZU44L3d5OGhPa0FTMHdqaHBiYmVuSkFyNTZJUGVsVXF5dDNrRUszSzRFM1hzZk5IRlNTTm5XNmFWR1FnMGxVSnZVWFVKejVGaVJycndkaGpjRkF3QnFNODZGd2xqNU5KZ1JLdWZrbnloVnMxT1VBWHNUcHRVL2ZkcWVwblUxbTRGZ2R2eFVDUkxJWU8vNXFJRzBiRDF3bzRCTUZTUGdHRW9YRTZHdFlUQVc1TFR3ZlJQM3lzRFJNeHNjazVaZTI3VU02YmtPWFRrWlFzUjZ0MzQ5NnVCQ0k2bXg3dFM2dEVVaG1yOVFvQUhNV0I2TkFFQTRJOFNsZE5VdnBqUUs4dG83OWluTGtaVmJ2a3lOV2tTaVlPQ0hGMTBvRUpMaU1qVUlTMlFuZkdueWxkYzlTbTVRemlQV1B1bzBSTWJqMUtnUmZXQStxaUlpNVA3VkZHYWpQRlFLc0JqVWdPZ09WUGtHdzZOUjRydWZKYXRGV3duNm9KWTdHMUhiSDRxY1k4VGt5N2NnNGFDYVpTZ3IxTkVjMjZBMTRSSUFMb3dEVmFOdlcyUVpiRlBpWlR4UUFWTUFaMUxoZDZqK2loY2V3akQzK09SV2V2aFFKQi9adlE4SDZJK1Z3U2JOZC9Tbzk1Y3NibzBBRkNPWnc5WklWcTZpV3JsTjk2UitxSkorcGQ4MWdqYURmNVdvam9hUDFSVWNDNWZGSkV0QWNYNG9SSkdlQ2hkcDBsUzFnR25la0dDQ1lSUmttdFhPalVER2VwOXl0SVhSZmlvVWd4Y1liVUlnakk0VkN1Qmc0cWhsRjdHWFlOYXc3ejFMVloxMEJEb3g5K0pwU1dBSldoWWYyTHZTZ1ZZQzZ0SUs0K3l3L1Bmek5FaGRWNktoVUxybnBqVUxkczNPVklUa0I4MFlsek4xY1ZwQklibE04bGU5UGF1azl2eFN4eENXOGVsQW9KeEdoa1VZa3lmeW9DVUp0d0FLb0RPb2pGbGJvd3FTdzk1MFUzQURRMmFsR0lsQ1BYNWUxRHlRRUNCVE1RNHovclNsaDJINVVYMXh1K3ZBTUZHRCtMK2JGU3JCVU5RSVI1Qy9yVVNQYWxsRVRzSmRSeVlyWUROcEVwT0p0dFNDbVdKazFnR2QzTmYrUlVtS2RDa1VZdlFMVGtUUmlNSEZaY0Vza21xajRxZVI5ejhVcmwzU1lGSXRLZUk5eFVhU2JVZkJHNU5iUTZVbEluV0wwcGJUUy9ya1lxK0dZdEtrZ1BQVGJ6a1ZTS0ptVWJUaXdmbXFLQ3RWRFVHVE5rL0ZFblFLQ0pJaWJWaEtiUTNxd1RLM1hWcElXUVlDeVZrVjJRMUhpSHBSYWptS3lxRVNZaFoyY0xrTlpSV1dDVVNaTzkxWXpXQ3hIU2tFSWpDY0ZTTllSWVlodlFzZ20xSWIvSnhvblNCaDREejlXYTREWWhGUUxPM285eDRuNHJEZHRaUTg5RUZDUm1YdC9HQlNBUkpIS3NvL3dBc2FpeGV3clE3eUZhSUdxeTBSdUZtWng3VlBaY2JVUW1jMXUwd2pvckg3cE14ODMvaFJSa1VkcXlNdEZXUkRSdnd2QlBnb29PSzkxZit5cHhjdXEwWWdTcWVPM1QvQVBpaC85az0iKTsKICB1cmktZnJhZ21lbnQ6IHVybCgiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFFQVNBQklBQUQvMndCREFBNEtDd3dMQ1E0TUN3d1FEdzRSRlNNWEZSTVRGU3NmSVJvak15MDJOVEl0TVRBNFAxRkZPRHhOUFRBeFJtQkhUVlJXVzF4Yk4wUmphbU5ZYWxGWlcxZi8yd0JEQVE4UUVCVVNGU2tYRnlsWE9qRTZWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFmL3dnQVJDQUd1QW9BREFTSUFBaEVCQXhFQi84UUFHZ0FCQUFNQkFRRUFBQUFBQUFBQUFBQUFBQUVDQXdVRUJ2L0VBQmtCQVFFQkFRRUJBQUFBQUFBQUFBQUFBQUFCQXdJRUJmL2FBQXdEQVFBQ0VBTVFBQUFCd0cvbkFBQkFKQUZBQUpnU0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFCQ0pnQUJRQUFBQUFSTUNRQlFBQ1lFZ0FOc3N0NEd1QUFBQUFBQUFBQUFBQUFBQWdBQUFBRVFBQUNnUk1TQUFBQWdFb2tDZ0FBRXdKTDQranIwOE9ubDl2aVg5RzJIa0hwOFFXQUFBQUFBQUFBQUFBQ0FBQUFBSWdBQUtBQkFKUklBQUFDQVNpUUtBQUFYb3oyMFZueC9SbTJlbXZuemc5WGhOYzg5b0d1QUFBQUFBQUFBQUNBQUFBQUNFQUFDZ0FBUUJNQ1FBQUFBZ0VvbFY0K2k4L3IrYmVuemJlY084d0FMWG5HV1VYejI2N242K1QzZUZmMDY1ZU1lcndoZVFBQUFBNTZQZDQ4OXFvYmVjQUFBQUFJUUFBS0FBQUlBQUV3SkFBQUFDTFZublMvUzV6NS8xZDY1Rm5MWEwyL05EYnpnYlk3WXlyMGNhYUt6NC9vemJQWFhET3NQWDRKUUwxNnV2azkvRko5SGtoRHZPVUJNYVllbnQ0OHg1ZmJUYktlcGswejkzekF2SUFBaUpnQUFVQUFBUUFBQUFTaVFBQUFBRXRiTmw2TksxUzdaYTViZWNMQU5jdGNwUXNBMnkxeGxDeGF0c3Q5L1p6bmgrbTlQbWdVMXkraDhnTytGcXVOTkZIbDkxNlEyODJ1V3VXM25Dd0lJQUFBS0FBQUFnQUFBQUFKUklBQUFBQ0FiWTdZcktDVGVtcTBxQVdOTTlwYzZyYzlWZXJ6Yzl3Tk1yVFJsNkxWT3M5Y3RjdTh3c0FBVEdzc1pnSVNZQUFBRkFBQUFRQUFBQUFBQUVva0FBQUFBMngyeEFSdGpzdVNDU2lSdFNGcmF1bm45ZjBmSHp6eDlHYTdybkZlbnMrY0ZtdVd1VW9JQUExeDJYRUlBQUFDZ0FBQUlBQUFBaVFBQUFBQ1VDUUFBSmlTK2VtWUEyeDFNZ2dHMk8yS3pmT2M5dEZIbDl0ODAranlhWlh6Mjg4MnA3OHQvTmw5RjgvTFdMUnBsQTZ6QWJZN0xpRUFCUUFBQUJBQUFBQUJFd0pBQUFBQUFtQktKQUFOY3RjZ0JybHFaQUdoYkcxUUVBYlk3TGlFdHBuZngvUzZYT2hqNlBSNWx0dk5pUFo4NEJ0anF1UUFBQUFBQ0FBQUFBQUJBRXdKUklBQUFBQUJLQklOY3RjZ0JybHFaQWJZN0dJQUFHMk94aUJlbXM2Vm95M25YSFhYejVDd0RYUFhFQUFBQUVFd0FBQUFBQUNBQUFBbEVnQUFBQUFBRzJXdUpKb1o2NytpZGN0MG9UbmEraUR4cGl3QUJxeklBMngyTVFXbTJRQUw4Nlh4Ni9LNDdxTmNBQkJNQUFBQUFBQUFnQUFBQUFKUklBQUFBQUxHbS9SOTJlbmw5UngyQ2dBUjV2VVRrK0Q2VjF6OG83L0swNHl5Mnh2SURXc0ZRYTVhK3lYRHkrN3drM3BwNWZkOUZ4Zk96Mm5QZW5lV0E5bnp3QUFBQUFBQkJNQUFBQUFBQUFtQklBQUFKNy9uNm1lZ2NhQUFBQUFBSW1pZUhqL1U0ZDgvTnRNdE10c3RjU1VTZTN0MGpMYjV5cHJqT3VPMmVwazgvcnZla2VqeVVHbVFBQUFBQUJBQUFBQUFBQUFBQUFsQWtEZkR0enJvU1k3QUFBQUFBQUtYb2x3dVB6MzAvazY0NGVScms5WGw2c3ZYeDJZN2ZKdmI0dDhKMG5FR2hiRzlBQUFCdmgwcGVhMnhzRUV3QUFBQUFFVEFrQUFBQUFBQUZ2cWVEOUJub0hHZ0FBQUFBQUZMMHVnS3BlaWNUdy9RZlA2NU8zeE80ZEFaYlI0ZmVUblU2aXpoK2I2WHc5YzhFYVpsNEtnQWR2amZUOGQ4UHc5TG05Y2hZQUFBQUFCQUV3SkFBQUFBQUIxdXZ6dWpqc0U2QUFBQUFBUk5FWEZBcGVsMHorWCtyK1UwNHY2c01ldVBySGo5bU93S0FCODkwL1picmxFdWV1ZnlQcDQ2NCtUbjZIWHJueDlJejA0bk45bmoyeEN3QUFBQUFnQW9JQktKQUFBQUFQWjMvbFBUeDM5SXczejBCUUFCVXNBQlJaSkNxMm9rMkZqNWI2cjVqdk9jZGN0T05PL3dET1R6ZnEzSjZXZXVnbEFBQUFBVXZ5Yk9WVTJ3QUFBQUVFd0FBS0FDQUpnU2lRQUFCMHVicEw2UFIwSzhkN2E4R1plNjhYczU2a0s4M3BKNHZUb0JtTklrQllyR2lBcmlkdmw5YzhlRFhFWE5xNitPWFN0Vm5ZNnZHNmVXdWsvSjdXZlR2RjdlT3dVeTVsbnI0Q05jZ3ZJQUFCQUFBQlFBQUFBUUJNQ1VTQUFXNi9HUy9XWi9QOWZQVER4L1FqaGV2MytZMDM1OVY2Ynhlam02NWxKdWlrYVkxRzdPTkZCYk91OWZNWS9UY2JUTHkrakcxbVZTeExzeSt2eDlUNW5QVEFhNUxWR3NabEJBQUFDQUFBQUNnQUFBQUFBQWdDWUVvRWdBMjZmR1RyNm5UNVAxOGRmUXViN2VlOWFURUwwQVZDbXFWdk5KYnFVTEY2aTBWakREMzFzNXQrbU1kbU12azRkNmJaQmVRQUFCQktBQUFBQ2dBQUVJa1VBQUFBQUFDQUFTZ1NnU0FEZjJjeEwzdlY4dTU2K3RyOHg2SmUrNU84Njl6SGFXSzIwRkNBcEVpdWxPYW5RK2VwVFRNT3VRQkJLQUFBQUFDZ0FBQUFRSVRBbEUwQUFBQUFBQUNBQUFBU2dTZ1NnU2dTZ2FhK1pMN3I4NHZVbmxJNm1IaUY2dzY1bEFBQUFBQUJRQUFBQUFBQ0VBQUFKZ1NpUUtBQUFBQUFBQUJBQUFBQUFBQUFBQUFBVUFBQUFBQUFBQWhBQUFBQUFBQ1lFb2tDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0VBQUFBQUFBQUFBQUpnU2dTQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFFUk1BQUFBQUFCLy94QUF0RUFBQ0FRSUVCZ0VFQXdBREFBQUFBQUFCQWdNQUVRUVFFaUFoTURFeU0xQVVFeUpBWUNOQlEwS0FrUC9hQUFnQkFRQUJCUUwvQUtGS2pNUDAvQ2VQRlJpMzZkSElZekpNMGdxVVIvcUM4U1RjL3BkNnZrZUVlUVFzUDBLM0pIRXlIN3NzSjJZbU1hZjBBVm9WbzVvOURiNCs3T09ReG1TZG5GU0dQVHpoaDJaR1VxZldqS1BFYVZtZjZqUklHWnhadG84ZVEyS0wweHVjN2NyRHRlUEZnV3RVa1JqOWl2RTdXOGVkNnZrMzJqWmhLbmhCSElCSW9rbkptSnBoYjF0OHIwdlp0azY3VXJydGpjeHMrSnV0YTEra1J5cE83MS8rVzJUeWJXNExzRzMvQUM1TW5rOWUzWnNUaTU0bllndXpHN2JiMWVyNUR4OGdjUy9mNjk5c2ZrMmpnbENtaGNEZU96a1IrVDJFbmRzajd0cjhNaFNtNjRsQXJoYjB5bFRzWHM1RWZkN0NUeWJFMm9Mc3h1Y2tsZEtaaXhVbFdkeXpNTGJCNCtRblQxLzl5ZCt4T214ZUM3NU8vSUM5ZEU1QThYci9BTzVPL1luVFllRWVkNnZrQmN1YnZsaGZMSkVyaGhZMjNueCt3azhteE9teVRydWk4bVFwVHBQeXVCNG1PUUlwNmJYOWpKMzdFNlpvTHV4dTI1T21RMm54N1pQSjdDVHJzVHBuSDEzL0FPV1k2bmdiNVAwMlIrVDJMOU5pYkI0OTdkdWNmZm5KM2JFOWtmSHNqNjVueGI1Ty9OZTNKZUxOM2JPa2ZzUjRzbFJtb1lhVTBtRllINGpWOFI2T0ZscDRwQUNDTjBmZnM2UlpSOTJ4YWZEY0NMZXhUcEhoM2VrZ2pUa1d2VFFSdFRZU25pZE0xNExza3pUdHI2ZW1PaFE0RkhEcmlMR1ZVTFVSYjF3Qll3WWNKenBNT2oxSkE4ZEhoSG1ndXpHN1pmNVlhSFZXS2U4bERZamxEM2V0QXVZSVJHUHdKTVByVmdWT1NjQm1rZXM4RlZqYzVmMWtUUisyUDFtRWkvQmJwVXNTeUNSREcxSGhIbkdtbForRU9iY0VxOUlOVE1kVGVyaFQ2a25UOEgvbGxMR0pGWkNyeWQyV0hYVkxVb3ZGbkozNWRzZklpVFczbzhJbGsvQlhaTWdPekJEamxpSWlqVkgzWklOVE1kVGNqQkQ3NVJwbDlDQmNxTksvZ04wMmRXeFVlaVRMQmorUElpOU5oWXpRd29BK0dLZkN1S1AyTHljR3RvOFdQNXZRNFZiemZnOVcyTDB4UzZvY3NNZVJpSWRhNWFXTkZTTm9Hb291bE1iNWZRNElmaEwwemJLVGpIU0M3UXlXbjVFc1ordkZoMVRLMTZrd3F0VHhzaHl3MEduTEcrVDBPRDhmNERiUnhhajBwT0FyRHkvVVRmcEdyWVFEUnc4UnBZa1RQRkc4M29ZSnZwc0NDT2VPSnpKc0FMREp1NDhJNlJ5alJTcklPZXgwcVRjK2lpbWFNeHlySU9SY1gyTnQ2dG5JUDVaTzdJRWd3NGtrcTZ2enNaSjZTQ0tPVkhoa2lxUEZrVWpxKytTUFZRK1FLWFZtT0oyTDB6bFhUaU5rWU5tTmhxYXJtc05Nek5WeHlKNXhHQ2JuMGFNVWFLVlpSSmgwZW13OGtkSmlwRnBNVEcxZGVReHNOaDRuWmk3NmN3Q3hrT2hjOEV2M1ROcGlwSkdqTWVKUjlqU0lsUzR1dXZwZ1NERmlnY25qUjZmQjE5T2FLbHhVZ3BjWWxDZUpxdmZZT05XSXJWV29WYzBPR3cxcDFKSWhqYWxVc1Z0Y201emdUNmNlTmI3Y3dTSytySlJkejZ1T1o0Nmp4S05tVVZxT0dpTmZEU3ZpQ2hDd29LUlIrNnIyMkZnVFZpSzFWcUZNVGxMR3NpdGgyUXMzRHRqencrSDA1VFA5U1QyU1N1bEppeFN1cmJXTnFYcFdrVmFyQ2dPRjdiRjQxeEZhaGs4VVJwc01yVjhPaGcxcElrVExGeTZWOXJlMUppWkZwY1docFpFYWliVUJWcXVhdlZ6UjFFZzN5MGlyVVJYYm5wRldBb2NEbkpJSTFkaTdlNVdXUmFYR05TNHVNMEpFYkltMUFXQkY2KzZ1TkVtaGNaYWE0MTkxYWEwaXIyeWtrV01TeUdSdmZCM0ZERXlDaGpEUXhjZENlSTBHVTEzR3JFVmMxYzE5MWFhc2ErMUtseEtpbVlzZjBVT3dvVHlDdmxTMTh1U3ZtTlh6R3I1alVjVEthTEZ2L0ZEL3hBQXBFUUFCQkFBRENBSURBUUFBQUFBQUFBQUJBQUlERVFRU01SQVRJQ0V3UUZCUkZFRWlNbUZ3LzlvQUNBRURBUUUvQWZLdmdjd1g0ZUNMT3QyN2VXamhmNmlLOExETHV6YUU4WisxTmlMNU0yUGdjMFg0RmpXaVA4aHFwR1pEd3d4N3hHTjJld2poUWlLTmNUUm1OSjhGZnJ6N2VNMDRGR05wRkxJQm9weTB1L0hnaWszYnJReEVaKzFOaUFSVGRyNDQ3eTZMZFB2VGJoNDh4djB0MVQ4eU1UR2orSTY4dTJaaUhzNUorSmM0VjBjUGx6MDVHTnBUNkFzcDdzenIyUnZNWnNJWXR2MkZOUHZPUTc5amM3cVQ0aTNuOWJHNG1RSjhycE5mQ1lhT3ptVFlTQ2ZTZEF4bzhOREx1eXZreHFlYmVjaHBzZ0Fza3A4WUl6TlJqYzNtUjRiRFpTMU5ZMXVpeER3MzhmZmhtT0xUeVh5cEVTVHpQZlVWbEtvOUtKbWQxS1NJZnN6VHVRMzN4WkFpMGpocTBWaG1OSXpJUWdXcFltQnZydDJqNzZKYndBVnNpbE1laStXMzBwSlRJYjdZQ3owM0M5ZzE2STE3Sm5VY09hYnJzcFpRaTMxd3NSMTdGdW5VZnhCdXd0V1JBVWpyMkxYVjFIN0FhUU44Wk5ka0ZYcFp2ZlNkd3QwV2ZhVFNKdnN3YVFjQ3NvVkZjK2dXN1FMVHVRN29FaFoxZlJwWlJzSnZ2Ykt6ck9ySEZkSXV2d2xsWmlyUCtFLy94QUFuRVFBQkF3SUdBZ0lEQVFBQUFBQUFBQUFCQUFJUkF4SVFJQ0V3TVVBVFVFRlJCQlFpY1AvYUFBZ0JBZ0VCUHdIMnJhb2Q2ZXErMVhDMkY1L1RWR1hoR2s4ZkNwMGZsMkRhb2Q2RnhkZm9tT3VHV28rMVhDMkY1eWdaRTVpWUVwdFdlZXU4UzBxNHE0cWtIQWE1S2pMeENOSjRWT2tabDJMWHVpVmUzR3M2MEsvK1lRZTV4UTZ6cVRYSnRGclRPelZtMlFyaW15VEFUUmFJd2UwUEVGSDhkeXAwck5lKzQyaVUyb0hZR2l3cHROcmVQU1ZueC9LTlJOcXZKOU5VcDNoZUI2cFU3TlRoVkpqUk5lWmdvT0I0OU5Xa09SY1NxTFNkZlRPYUhEVmVCaUFqUWQ2UXJncEcwOTFyWlRIL0FBN3NsMzFtdUtEcHl6Q0NyT0lNTHlKbFJ4UFhjZGtPeUV6ZzlnZXYxeW1NRE5Pc1RBMjJuQThiSjQ2VDl4cDBUdU1KVnhRZDk1WEljZEYzTzR6TVhZQnl2Uk1vY2RFdG5jWmdSS0lqT0JQU0tuN1Z2MXROeXU1Vm1JRW9DT21SS0xTRmNwQzAyQTdFbUUzVTlvZ0ZXS05tVmNjQUk3c0sxV3FEbWlVQkhwSUN0Q2dmNFQvL3hBQXhFQUFCQVFVSEJBSUJBZ2NBQUFBQUFBQUJBQUlRRVNBaEVqQXhVRkZoY1NJeVFZRkFrV0FERXlNelluS0FrS0gvMmdBSUFRRUFCajhDL3dBQ3FEOFFQS3RqOFBvb1lCd3NmaUd3VWZ3L2w5QitHOFVlVmJINEVBUW9YRWRKSWhRd0RoWUZmTi9hQ3JtRUdnb3FCTUVRSm10NlQxd0NqZlEwUVBsd2o1ekhhWmtlNTdIM0swclRPTnpRd1ZURjFURkRqTUdqTUJ0TmEwbWlGQUIxbXpYVlJ1dlF6RDNNWmd6N04xN3VqbURNbzVSbWpkTlhUWE9ZRGlVVEU2MGZFaTRhdVdlYzI5R1lNNlBCVlBLZ29HVnE1OUhNVEsxeEtFUytoVVNvaFJLSEVqVnkzeG1KbGE0bGFONFJjbm5NVEszeEtONXdFMGQzaGJxRnd6em1KbGI0bGhvSnh0V1NJWGJWUlJCWmpGUm1aRzJZbVZ2aVFJbWRvN1hBNW1PWWppVnJpUW5RWEIzTWtGQjdJMmxHWk04U3RjU05YREE5eWNYTFIyekptVThHUWJtNGhwU1JvdkNNcDNPWkhZdjZXU1ZnQW9raGR3V0lYaE05SlZaaDl5amMzUFNjeWFHeWlla0xDSjN1S3J0aHd1aHI3WFV5OW8rcFFOQTlvdXR0K2NCSkVJMlZBVnkrQVVXcXRYMmgyV28xVEkxcklBaVg4bFcyc0ZEU2FMS1AzbHNBcTkzd1lpaFVDOXByYVJobnhpVndpWHhraDVOY3R0bjE4R0dycTQ2cURUZ05heXRTTWozSkhMQVBoY1BnVlpPS2hwUjRjMEpPS1AzYXVTTnNrdGEvQ2pySUdvZFF3a2FMNGp0ZEhTcjlsRzVKMlRRM3lJQkFmRzRVUmdYa3ZxcVVSRnJGZDZwVldmSnh1aWRVY2lHM3d1SmpzOHNhQzR0RHVEOENxaVdBUVpRNHlKby9HaHE1b2JPQVVmQnVTeXlNVjFWTHFycG9WMUI5dHJGdzR5STgvQmhLVEkwMXM3Y1hGcnpMVmRxNldYbmJJdjZTb2o0RWJnb2J1aUZ2cDhBaytFVGtlMmlvZlZ6QzY0a2FHNmhwUjhRckxZOXJwTWI3OXNlOGswYVVSOWhRL1VydXVrenhaTmxyVlZETFM2b2VueGw1a2FhOXltSENzczRMdUt4VmhxdTdzUmNRSGNvbkpJc3JmUmFIWlJacndvTlZXTm5sVXZZUzA5eVFDL2JIc3lOTkpvN09peVZYcE1uVTBGRDlQN3llSVVQMUtidTZtWXJvYSsxU1BwVmdWMUFoZDRsaXFLc1hZZmF0SHpMQStWQXVvckxPSGs2cU1nSG55Z3hySlFydmErMVZvL2VWME5ORlhwTCtwa0Zkc0ZpVlJzcitjMHF0a3FDNnBJT3Bnc0N2UDBzS09nVjFkdXFnS01yKzZTMjNqbzRuTStrcnJFRjBtTXU4bmNWVlY4cXYzSkhWVXdmVUlRYUs3LzhBaXEwVjBoMWdZbk5xTEdQSzZoQmRMUWRFNHFpd1dCV0V1SlVGcy9CMEpJbEZvNTFScGRUTVZXSVZHaE5nNkxYbCtLeFZhdWdYUktpYy9vMFZqRlZaVlloZHlvUXRuVVdDd1dpeEt4VlN2NGVPcWkwZndhalJYZVZpc0F1MExzQzdRc1lLcGovcFEvL0VBQzBRQUFFREFnVURCQUlEQVFFQkFBQUFBQUVBRVNFeFVSQWdRV0Z4TUZDQmthR3g4RUJnd2RIeDRZQ1EvOW9BQ0FFQkFBRS9JZjhBd1VVRTVBcXlJYjlPMVROeElFWTYvcDcwcE5RbndBUUVCTzhUK21BNUJEcHVGT0YzNmNFcUVOWm5qRTBKeTFVUVIrZ2lTaWRXNklNQWFwd3dLUVlzM1hSVEJpS3JWTjMrdEFBaERKejBhZENCVzN4MFhxVkNpY1lCRUlnaGoxUlZDSkJPaUlBREVkdXFUSVlUaTFDRlJqRFJBYlJkRE1IWTF6UU5jTVJaQUVUZEZGT1dRT0Nib0NxR1BWQmJuZlpCS0UyTjJ3Vnl0SzlBSk9hRjAvMTZaaDdLS0ZhOHNyWHZoRm9HRDNSRXBqbkt1WXRrVmN4YjRWTzVJUk0xQTlzQlpNVGhGSWNJWm9XUS93QjVoQUpLay9LSkpFbXB5QU9FQWVZWFQyekoxSnh2RVlhRGxCeUV1cUF0OFhjS0J2bENxOUtXemJzUFJCS3J3elhUbkgwc2R3aUhaOG9zN2dqZFhPVmpCcFVweXV6bVl2ZERvaXlMbEc1cmwzRFRzT1d0dE9iZjBHRlNvSTNDSWJQOGZvKzJJeVg3aHAyQXkxTnZpemVLVHpoV2hES0VMU1VBN0l4Z0E1T2lJQU1Sb2N2dy9ubzFEWW50M0gzdVg1dVZwTGN3b1ZUSUEwVmluT3VVRlZ3akt1VTczQWNueE9qQTMzSTdnS0Y3dnBINGl3eEJmSVM2MHJBRDJ4MEFkY2lUMFlGdUErZTRDaGU3eS9WM0dXQnVmSTdBUzYza0xMZVFzV1NXS3BKdEJUanFDZG5nSzVIdUFYdmN2MWR4bG8yQXoxSDBFNHlSQUVrSnloT0ZVNEVnRGdmTkVXaDk1L251TmRmTDlYY1pHQnV0d0RuaFpOOWNTbklTd1VONGpsRWxrZmhMZW5jYXE0ZEU0WEIwQkgwVy93QnlQSVhJZ1N3cGlKZFE1ektMdTBCY29seVNkZTQxZVY4M0pFbDJIUWp0UGRrcEhrcTQ2ZGdCbGlMZnpqdVV6V0pHWDZxMlNHNkhvVi9vR1NPeWJFV1c2TnpiNUJLb3RRZTNjcGNoajhPQ3FuSUswT1JFY1lVZEpZRkFYQlF5ZVlTMG9nd0VjNWhkNmdsNFJMa2s1REEzTWRld2ZLRGxWN3hzZFVZcDdqTzZUMTBTdmZKMEJBR0FIbGFNTHdYOVlsWEd1S1krTHM4NVlHMll3MlRZYjh3UU9udUlFTi94SEdqd2lySkxaR0pqMjRZQzVLWWY2anJTd0c4a3dSc2x6UWY0Wk9URnVRY2FJUG1JMEYxRjZSd3J5T1lZcXN5YVNQYlNBQTVLZWNpcWZ3RFNhSnFQRFRSRklXSXg0QXdlY2g5SUJHakRBRTVtcHhEbXhURmhRTnk0N2F5RzVQNEwxaHNHSERRaFlMemZEY3hmWHppQTVaQWlxUktKenRrNUk2T1U2NlpBYVZKMlQ1Ullkc3NqcWdBQUFvUHdhOFdPcDdRMlRHcWtjd3BpTS9RU2NHb3RpQTVBRlNqRGdLUWVNZnNhZEhta1IyUjdPdngvQ21EY2ZJMER2VVpQWk9KV0NWTVBUVU1uQ0VNQkpOZ255Z2FDdzZMbHNteUhZaldhbEJBNkQ4SFF2Q0VCc25zbEFHcmkxY0hFQU1EaEVYZHhRYkg0S3lYb2dybUJRMlUrd1c2VHc2a3h2QWRpOVNQd3ZSeUNXRG9LelV5bkJyTEZvMkE5QVJnL3lZaWtONFZTQnlNcHcxaWdDTkFnN0U1L0QrQ1N3Y29LalV6a2sxN0FOd0xEa3hTYW8zUjFWRGhCZ1FXQTFFUUJnQlUxL0dUV1kzd0FKTEFPVlF1MFc3STR6WC9CU2EvTHdDQmhWNHc0Z3pBVEJON29TR1NEUGxBc0FJM1JSNGNGVW9Cdmo2UGRpTTBkeERSWEIvQW1lSXlQQlRRTURRb0dCdW9LOThBWThoUnVOWDRBZEJBNk1kcVMvWTRsT3RIdE4wUU1RR1JVWlNoaFV3Z0dEWkRBTkpaU1NwVXhIRU1VRU9OaUhPSHJOVjM3SUl4SWRYUnlZZ0lpQmxsVUhjWnp2d2FHZ0lvZHlkbERFTnNVblFJR1FsZzVRVkdzc2p3VUFXdVE0OVJnZ3VjS201V2w3aUF5NEorVmJ3d0VkUmVVQ0RJTDU2eUQ5a1FoSEo3SUhHWWhSbU5hU2JieUhxTWExSWl6NXdWVjNFQkFPVGpib1JGMEFBQUJraWVaeWlUZ2dGaXlEQUpUUWVrZzF5T1dJWmVoN0QwNE5DaFRIc2xBZ2h4T05NR3lJWUczSWtrNUxuc3cwVWdqVUpzbWVoQWdod1hDQXhia0NyV3lFNXdIYzFEK2FHUkhza3FrZVNFQUJ3UWNhSVpIclRoYm1MRk0wQnlGemVpSnFNRjBmTUpGVzJRbUJKVFNqM0l0OFp2Z3dQSTJSV2pLajJXdUlEbGhWZVZYSk1oVkp6a3F3T0N2OUtxbytlMWpQckZGQytaUkF2VEQzb0F2NG9LT2lOTkZ3dkdIdnh6QlROTWFsQ2xEZlRJSURRMUswVzUyRmJnZU1BS0lEOVI0dzFVNkd5TUNVTkNkWjdGK1VKVHFYdGlBU1dBY294QU95eFVWdDZEanVkZldzYUkrT2NFTGNPVXlpU29tVTRXSTRUMEVRZHg1S2ZKaU9qTUlDRFRBbHFxcDlnbXVyTElFMWxRcDhZTnhDRGtBQUdDYW9XdTRoVUZCdmhKbC9ZZDJCRTVFSFpWWmxLNGU5VkVlVXdUVndqTnpZcG12cFQxV2ZXVURKeEM0QnRnYkRjWVlaSWVTOVhWVGdjTElFRU9DaUFhZ0hCQ2tBVlVvYVpEZnhpNktUSjd6UkZISjVsQVVPQytRS3IyODROSXFhWVFIbGRNRkNEeW4vd0IwQ0hZRHludm1iWUVDWEVIWk1QOEFjSnJIb21Hb2tucXVmS25xYm9FR2hUN2VCZGFPOUJidjlOSGxHbkljZ3ROK0NqcUVhSkhLcWk4clUwZTVWVnFNV0t1KzliMVNzbmtMNlFpUU9BYmxPUUIwVDhIOUdvQThxaElBTkI1Q0dzUkQvdEwvQUdFZEVTMDF3Q05PYmwvOFVQL2FBQXdEQVFBQ0FBTUFBQUFRQ0NTLy9EUjk5dEJCQkJSMSsrKysrKysrKzh4QkJCQkY5OTVEWC82Q0NDQzIvdkRWOTl0QkJKQkJSeDg4ODg4NXhCQkJCQkY5OTlCSC93RDRncWdna3Y4QThzSFgzMjFHcWtJRUVFRUVFRUVFRUVFRVgzMzJFUDhBL3dDZ2d2aWdnbHYvQU1zSFgzMnpENklrRUVFRUVFRUVFRUYzMzMyRU4vOEE2Q0NDK3VDQ0MyLy9BQ29zZmZmVm5Zc0NBUVFRUVJ6VGZmZmVZUTMvQVA2SUlJYjc2NElJTGIrN2QzclgxYS9IazAzZ2swM3NNelQzRUVkLy93Q2lDQ0crMisrS0NDQzIvTy9oQlYyOTllOTlPS2Y5L3dCaitnUXovd0QvQU9pQ0NDZStTKysrS0NDQ3kvOEExVDFnZ1lzOHZqUGZ1Y1lVaWgzL0FQOEE2Q0NDQ2UrK0NTKysrS0NDQ1MyVi9xUExKYWhkQ0JxRERETC9BUDhBL3dEeUNDQ0NlKys2TENTKysrT0NDQ0M3MnY4QS93RDFyOTg1MlpyL0FQcC8vd0FnZ2dnaHZ2dnVnclF3a3Z2dnJpZ2tpUWw4dW52L0FPbitVM3YvQVB0eUNDQ0NDTysrKzZDRDl0TENTMisrK09DcENWQ0JDeXloeWxhSGlDQkNDQ0NHZSsrK3lDRGY5OTlMREMyKysrK2xDY0pUQ0NDeENCQ3BDUUpDQ0dlKysrK2lDRGY5Ujk5OUxEQ1MyKzYyUDg4OGY3SWhDWkN2S1BNUCsrKysreUNDSGQ5OUJSOTk5dkRDQ3kxODg4ODg4ODVBT3RLNCtQM2orKyt5Q0NEUDk5OXhCQkIxOTk5UERVODg4ODg4ODhqOFA5cHIxVjQ5NnlDREJIZjk5OWhCdEJCQlI5OTk5bDg4ODg4ODg4bjhuV3A4ZnZmQ0JDRFRWOTk5NUJCQjl0QkJCQng5OTM4ODg4ODg4NzA4WEV5Lzg4ODBNcnorZDk1aEJCQk44OTlKQkJCQnhlLzg4ODg4OHY4QU8vSndGdVBQUFBQUE9PWVFRUVJYZmRQUGZiU1FRUVE2ZC84QXo5LzMvd0EvOHNkNUZkWmJ6OHd3QkJCQk45OThBUTg4OTl0SkJCUmpGSEV5VW5RR3pnZHA5aFd4aHdCQkJCTjk5OTg0QUFBMDg4OTl0TkJCZzE4dnJvNS9qMFBmdmZvQkJCQkZOOTk5ODRnQU9BQUFRMDg4OTk5Tk5CQkJESjBBQVRBUS9SQkJGTjk5OTk4OHdBQUErdUlBQUFRdzg4OTk5OTlOTk5OTk9jdWV0Tjk5OTk5ODg0d0FBQUFPKysrdUtBQUFBdzA4ODg5OTk5OTk5OTk5OTk5ODg4OHdnQUFBQU8rK0MyKysrdUtBQUFBQVF3MDg4ODg4ODg4ODg4OHd3QUFBQUFBTysrKytDQ1MyKysrdU9DQUFBQUFBQUFBUXd3QUFBQUFBQUFBQUdlKysrK3lDLzhRQUpoRUJBQUlDQWdFREJBTUJBQUFBQUFBQUFRQVJJVEVRUVVBZ1VXRXdVSEdSY0lIUm9mL2FBQWdCQXdFQlB4RDdyM0I3L0gyZXlvNUtpRk9tRHJadnJFUkkvWlU3dzdodDRmbUVMdnl6S3p1VDMrUHNKUnN0K3FtRkd4eWVqcUttbkpVQjFtV2R0dnRvanN0bnFyVDNHdXVoKy9IQnpRa3daaVVPalZYTGQvYi9BSGxqKzA3aE40Zm1YRC9MTjhNeDJLei9BTE1nRTFOY0V3YWFNTVE0bWJoVGZ2OEF1RUVhZU1SUnMrWjFZUjVkOHZ0d0ZRd2xSQVUxSDE0ekxxdFh5bVdaSTRxb2p2eUhmQnZramdlNGZUUHVPQWF1L3dBekhQRWZRYmo1RHZnM3oxRUl1blg5UUFYSzQxc29yZmR4S2E0ZlFiOGwzd2I1WXQyeGd4YS84bG8wbzdqQUxvWm9yV3ovQUNGV2c1UEpkOEcrWGZKdmdEYXlXUzBwQ2tGdTNQWGt1K0RmQnYwSEZ1ZFRCVm42aXFscnoxNUxLdUYycDhFbzY5SFhCeDF3QXZVQUtXUDJlVGhnQTE2RUhjVTF3RHgxd0pBU2cwUVQyRmptV0VxTHNIc2U3OGV2TDZETDhrU284VUw0U1hUMmhWbFhMZzEwZU5pUG92QTVSekRZSWxrUkdtZGNQb05namp3Umkvb25ES09VaDNQZ2xKZkN1UmJjM2VDS0gwR0hCN3pyQnFtRFpaNkFHK0JkUVVBVVROZURvTUc5ZXZ2aDQ2Ump3T25yb1g0U0J6Qm1YQ21CQkhYQ1hBcUxVT08rTk9YR0pjVG13OXhCSFhBN1IxNGFhVEFNVzFLZE12dVFYMmw1bGUwV29GU3liWXc0aGpoRkZnT2JmSDBrQjNBT28rMDFNUXE1a2lzSm1JN0o4RXdFdVg1b1dtQzdsSVBCSFRLdk0vUEZmRWV5TjlqV2srYWZKRnUvNEovL3hBQW1FUUVBQWdJQ0FnSUNBUVVBQUFBQUFBQUJBQkVoTVJCQlFGRWdZVEJRa1hCeGdiSEIvOW9BQ0FFQ0FRRS9FUDJyVmE5ZmY2ZkRLdzNEUGJnL1dEK1lJbG42VWFlNHBERFIvaVlDTlZyL0FMK2hjaFZVeTJuNGR5dVdZWVo3Y1BWcUFBNytWMTZRcUJwZjQ4ZEFIcUJ0M21XT1pRZVpBaVUxRFVPUzViUFV4Q3RYemhFdzNHOWhNTlcrdlVTZ3UvR2N2VE84SWNtdVQzeFgyU0JpRHVIMmlWdHJybEJZd2t2V2JZYThnMXc2NVliK2t4R24xdzVkVk15TXcrRHFIa0d1SFhQY0lXTmtCQkRKTUR5K3ZxRFp3ZkIxNUpyaDVJSDJFUWRUN1JEVUlCVmJDZTMzSDZWOHZrbXVIazF5NjRiQzhPWnNHS2pjSFBma211SFhEcjRQRkFGOEFVMGM5K1NUVWF0ejdKWjM4TytIanZpNEVWYXFmOStVbFhmd0ZOUUxjQ0RqdmhBVmlVdGp6cTFGdFl5UXJsZmZqMzRQd0Vyd3diaHhZcmd3SGNiY0pES2VmQnhUaUVkS0RUQkVzbmZCOEhWb04rQ3MxK0Y1czVRalUreVd0ZkU2S21yd1ZsK0E1WjJpWFpFcHArQ0pYQ200aUlyWnE4SGNJbGIrZlhCeDJoRGhOdm5ZcndncGlWY0dOc3FJbStCcUxjQzQ4ZGNiY21jeW9EQWo2TVJOOExwREhoaHRNZ1FSdVc3SlhWaUh1VmlYRE1jeW1haEptT2VBRUdSNW84ZmFSWFVVYmg3bTVtTjFNUUNNeEJkTSt5WldWSzgxRHVKNmw0bEVUWkxxZjI0djdoMFEvd0JHb1o5VStpQmRmMEovLzhRQUxSQUJBQUVDQkFRR0F3RUJBUUVCQUFBQUFSRUFJVEZCVVdFUUlIR0JNRkNSb2JIQjBlSHdRR0R4Z0pELzJnQUlBUUVBQVQ4US93RGdySWRLVTdSUCtPQ0JOS09acytoRldhQWdUT2M2aTZGUW4vR1FKUytKc0pnMFptaVVMelFCMnpvaVhQRnBJWS80dVkzNUZHRDl2U21jQWxNR0IveFl4aFJxS2hVdUZhTFh0TEh2UHB4T0E0eGxUcUkyL3dDQkZpaUJJRGhKajRMM0VvQ2dlWVhRTGNERW1uQU4ybWdNa3pLUzRLVVluanBHUG1BbTZvWkJ4dGFrZFp4TFU4QzhNRjd3dDd4eGdSTldBSTJUQnE0a1loblVVWG9KY2xOQWtaK0xlS1pmUkk3ZTlJRnhBK1hZTkFHU21nQmpNRlpLNUFvTzdDeW9jSmlCbnpiNUU2WXZ3Y1pDT1MwVVBWME85WWlEZ0dScHlMWUZpN0JoU2p3SkJtaTJtT05zcW1TQ3h1MG1RY1hLbmhlRXBUNVlvRHlURjZNTm5kaTM1am02b04zUVBseG1oWmsxRGVsdGhUeUl1NjZPM0tXS0RDRTZYbjZvSDVwUXdINXJBSFBXUXJlOENocmU4Q2w0UWlzRUVwaXM0U0hWOHNYY1VKbkZiMVRXTUszNGc5MmZybTZBdnFmbHpFZkpXYTVDbktsSlhrRGNxT2xRaE1CcFNzNVlaRWRLaWdYRmRPQ2lSYmlEdnk1YnhXTWFrVFZ1a0h0OHdiVE4zc0IrK1VTRFZwV2NsOU52cm10KzNxRGdlbktzdVNJM2E5bTl4NWhHRFc5U3JpMFkxaE5SNkNQcnpEdU11Njh1eVk5NjMxSDM1VHdKOUFwVzgwOXVZMWNCR1ZLckxWNGFKOWVEc0dGYjNyM2ZNTFgrd2N2ZUhzdnpMVlhzWXZBektqN1prNGtkYVJYNTc5dVh2NEpHWEFSNkROSlJZclBtR0xvSHR5NDNVZS9tdEJxOVM3d1VTMHBNUkJSeEJZREpta3BLZ0JkcFFXS0M1eTJMcUQyZURiK3JqajNqekhENlE1Y2EwK09QdmxrekNaZWhlcEV6R3NLb1RPZE83N2tTRk9Idm0wNDBQSk5RQnVrUVVRQm1SMmtua3NYVkh2NFBRc0RxaDhUNWg3dzV1dFhSZTZIM3k3M082ZUpEZmlzRXRTSnF4ZnI1UHJpNGhFNEJUZEJpc1JsRDRPNGp1Z0ordk1QZUhoOUJ2Vkgyc2NSVENqcVZQU2t4VWhtSmVwb2pNRUhTZUtGdGtkWXAzSmhzbE93WEVhR3BFWWViZmpmU3dmRDVnb1Iwb3dmZ29BbGdwd2ZEN2o3NTdNbkwwSDZjUUJHb0lDU05OdkMzR2JVdHdvcTBRdGl5NVU2NDJRbmZtNngzcWZNVDBnKzNnd2IxaXQ3aE9mcmNIVkI4THhndXo1TGhWai9vamxDQUpWZ29reGtpOUxENDh4djFEOXVXOGMxL0k4bldZT3NXOEM3WmtkZ3I4T1JDTHlncVkweUVtY1U1VklyMTBON2pQS0VGUFlSZDlpbXZoVXZtTitwajZNY3Q4TmZqbjY1T3V3K3MvWGdkKzExWDREa0JQd0MreE5LcFhGdnhzL21EbDZzZzZvK0MrWmZ3aHgrK1c4ZGZudjF5V1Q5QVI5ODRLZ0VyVElUSVE5a2ZYSjZkK3F4OFR4M1ROYi9Ma0NvS2ttQ09qWVAybnA1bFpkSDFFZlhIQWcxTFBXdjdBK2sxcHc1SnhSOTEvd0NhMEhIOVZQcXY0VmV0YVI5bGl1MVNJdWdqbUJZbFhvQ1g0cG5FcXl2SnZCdXdJKytJSXZCbDZVcXF1THlQR1lxQlEzb1Mvd0FhbFlFUmhIRWZNZTdVNmlmdWpDNlpGM29VTUlDM3ZiQ2dBZ0lPZUtFMEUxUExySDRMVTkyWForejhWTUlPcTlSeDNsRHFMOER5MkxsbnEzZm5qMGY3N3dpcHhZelhkNFNJZEtpb1hFU2lKSWx5YnJScGdZTVM0Rmk5UjFrbE5GS2dSR0VjUjh1WXE2QUtCaFE5dkZKSkRoUWJMOGlEdVlWTGQ2SjMwcmRqSFRCOFByeVR0WVJMb1Z2dkp4eDlmWkNvTzZMMmI4VmVxM1p2bndVZGZDVXc0UFpJUXlTSlNOemdxMS9hK1dwZ1ZBR2RDU0I5RFkvd0lFNEJlaGc1eGJJMDJwYytPSGovQU8yaXo0bmt1WkpKb0xTTGlzNGFCU3FwV2VBd3lWaEtBeWQrTUNER3Q1dlFHQjZ5K25sb2JlRGthLzRWSnpCMlorMDBXSXFOOEJheFAxVU5SeUdBMU9HK0V1aFk0a0FZckZGZ1dFdTJGS0JpY25kODN2WTlqM29MQmFWcEtxRDBRdXRXM2dzYUFXRDA4c2FBeHk5Q2pMZ0lEL0MyektUdS93Qjc4VkF4aXoxVDJFSUcrNVFMRWlEdFo5NTR5eVMvcGNIeDR2OEFQRmpVcEFVaDJTT2dJK3VMMFBiTDl2eDRJUUZ6ckJoU1FvNWVSeGd2VzZQOE9GMnJseDlCbDdjZ0xrdEJtaFlwbVdjYzU0azZNT0JCSWNHbFNLeWpMYmdJbHdSZFREM2lrb3VLendFRWdiSXhhZUl5TkFzSGc5RjcxZjFVWmtDUjA4aWJGUkZFQllqL0FBdkR4Y08vNm9BREFJNUM2NVFkMzlmTkZabHRHVG54VjR0YjdjVTVFeEVtbkNNNUtTckFEQllXQzhmSHBURmlkelNZeXlMTk1hTEljOGp1eDlQQ1VWZTMwS2t4Z3oyOGlrNlNCL3hmUlBkNUFSV0FscGdZakx2K3FPQnVoKy9iaU16ZEEzY2ZrOEFxQVUyeTZjVHBNMUZYdVBoeWxaTHdWaEtrVUFobUo5WHlMb2NQdC9oQnNBSmFZempMa3RGb1BRdS8yL0NlTWg3Y05Ca1RSUzBLWFJ3OEcvOEFNQVpEZjBvMG1xNEhRb0JBQTBLaWhORW1pWHA1aXBFL1JrZS9BRXBNQXBpUWtYTW41NElTTWg4dmtSR2F1ZjRicFpwZWh5N0EvYS90dUJrVzhxa2hSeEs3QW5WdFFvaVdTZ050d05UWHdBU0dJdGgvN3l1WHJJVFVzZEJBcGlkaUplTWFHd1BTWDhpdk5VdDAzb0dwcEUvd1hsZytnY2tXa3VBYXVWWE5sQzdxNThMeTJyWUpudlcvMWZRc2ZmQ0l0a1pKcFFwWUpjYm4rQmZvUXFkbVZMeU83c3pjdzdhVkRGcldKNFByUE02OHFCeG1IM1JHTUFqazJxVDY1ZmZJb0V1b083UnF3RUhiSDNuaVlXZUNNVlBJdXcyMUtzQjJJTnp0NHd3WEdLZXg1SXRWTzR4R1ZxdThhVEhPcGxSUi9FRW1kYnRLVGM3YzdrNHhtRFJxM2MwcFUxSkxVWDNlTjgvd3k4aE9rQVMwd2pocGJiZW5KQXI1NklQZWxVcXl0M2tFSzNLNEUzWHNmTkhGU1NOblc2YVZHUWcwbFVKdlVYVUp6NUZpUnJyd2RoamNGQXdCcU04NkZ3bGo1TkpnUkt1ZmtueWhWczFPVUFYc1RwdFUvZmRxZXBuVTFtNEZnZHZ4VUNSTElZTy81cUlHMGJEMXdvNEJNRlNQZ0dFb1hFNkd0WVRBVzVMVHdmUlAzeXNEUk14c2NrNVplMjdVTTZia09YVGtaUXNSNnQzNDk2dUJDSTZteDd0UzZ0RVVobXI5UW9BSE1XQjZOQUVBNEk4U2xkTlV2cGpRSzh0bzc5aW5Ma1pWYnZreU5Xa1NpWU9DSEYxMG9FSkxpTWpVSVMyUW5mR255bGRjOVNtNVF6aVBXUHVvMFJNYmoxS2dSZldBK3FpSWk1UDdWRkdhalBGUUtzQmpVZ09nT1ZQa0d3Nk5SNHJ1ZkphdEZXd242b0pZN0cxSGJINHFjWThUa3k3Y2c0YUNhWlNncjFORWMyNkExNFJJQUxvd0RWYU52VzJRWmJGUGlaVHhRQVZNQVoxTGhkNmoraWhjZXdqRDMrT1JXZXZoUUpCL1p2UThINkkrVndTYk5kL1NvOTVjc2JvMEFGQ09adzlaSVZxNmlXcmxOOTZSK3FKSitwZDgxZ2phRGY1V29qb2FQMVJVY0M1ZkZKRXRBY1g0b1JKR2VDaGRwMGxTMWdHbmVrR0NDWVJSa210WE9qVURHZXA5eXRJWFJmaW9VZ3hjWWJVSWdqSTRWQ3VCZzRxaGxGN0dYWU5hdzd6MUxWWjEwQkRveDkrSnBTV0FKV2hZZjJMdlNnVllDNnRJSzQreXcvUGZ6TkVoZFY2S2hVTHJucGpVTGRzM09WSVRrQjgwWWx6TjFjVnBCSWJsTThsZTlQYXVrOXZ4U3h4Q1c4ZWxBb0p4R2hrVVlreWZ5b0NVSnR3QUtvRE9vakZsYm93cVN3OTUwVTNBRFEyYWxHSWxDUFg1ZTFEeVFFQ0JUTVE0ei9yU2xoMkg1VVgxeHUrdkFNRkdEK0wrYkZTckJVTlFJUjVDL3JVU1BhbGxFVHNKZFJ5WXJZRE5wRXBPSnR0U0NtV0prMWdHZDNOZitSVW1LZENrVVl2UUxUa1RSaU1IRlpjRXNrbXFqNHFlUjl6OFVybDNTWUZJdEtlSTl4VWFTYlVmQkc1TmJRNlVsSW5XTDBwYlRTL3JrWXErR1l0S2tnUFBUYnprVlNLSm1VYlRpd2ZtcUtDdFZEVUdUTmsvRkVuUUtDSklpYlZoS2JRM3F3VEszWFZwSVdRWUN5VmtWMlExSGlIcFJham1LeXFFU1loWjJjTGtOWlJXV0NVU1pPOTFZeldDeEhTa0VJakNjRlNOWVJZWWh2UXNnbTFJYi9KeG9uU0JoNER6OVdhNERZaEZRTE8zbzl4NG40ckRkdFpRODlFRkNSbVh0L0dCU0FSSkhLc28vd0FzYWl4ZXdyUTd5RmFJR3F5MFJ1Rm1aeDdWUFpjYlVRbWMxdTB3am9ySDdwTXg4My9oUlJrVWRxeU10RldSRFJ2d3ZCUGdvb09LOTFmK3lweGN1cTBZZ1NxZU8zVC9BUGloLzlrPSNmcmFnbWVudCIpOwp9CiNkYXRhLXVyaS1ndWVzcyB7CiAgdXJpOiB1cmwoImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRRUFTQUJJQUFELzJ3QkRBQTRLQ3d3TENRNE1Dd3dRRHc0UkZTTVhGUk1URlNzZklSb2pNeTAyTlRJdE1UQTRQMUZGT0R4TlBUQXhSbUJIVFZSV1cxeGJOMFJqYW1OWWFsRlpXMWYvMndCREFROFFFQlVTRlNrWEZ5bFhPakU2VjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZFhWMWRYVjFkWFYxZi93Z0FSQ0FHdUFvQURBU0lBQWhFQkF4RUIvOFFBR2dBQkFBTUJBUUVBQUFBQUFBQUFBQUFBQUFFQ0F3VUVCdi9FQUJrQkFRRUJBUUVCQUFBQUFBQUFBQUFBQUFBQkF3SUVCZi9hQUF3REFRQUNFQU1RQUFBQndHL25BQUJBSkFGQUFKZ1NBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQkNKZ0FCUUFBQUFBUk1DUUJRQUNZRWdBTnNzdDRHdUFBQUFBQUFBQUFBQUFBQUFnQUFBQUVRQUFDZ1JNU0FBQUFnRW9rQ2dBQUV3Skw0K2pyMDhPbmw5dmlYOUcySGtIcDhRV0FBQUFBQUFBQUFBQUNBQUFBQUlnQUFLQUJBSlJJQUFBQ0FTaVFLQUFBWG96MjBWbngvUm0yZW12bnpnOVhoTmM4OW9HdUFBQUFBQUFBQUFDQUFBQUFDRUFBQ2dBQVFCTUNRQUFBQWdFb2xWNCtpOC9yK2JlbnpiZWNPOHdBTFhuR1dVWHoyNjduNitUM2VGZjA2NWVNZXJ3aGVRQUFBQTU2UGQ0ODlxb2JlY0FBQUFBSVFBQUtBQUFJQUFFd0pBQUFBQ0xWbm5TL1M1ejUvMWQ2NUZuTFhMMi9ORGJ6Z2JZN1l5cjBjYWFLejQvb3piUFhYRE9zUFg0SlFMMTZ1dms5L0ZKOUhraER2T1VCTWFZZW50NDh4NWZiVGJLZXBrMHo5M3pBdklBQWlKZ0FBVUFBQVFBQUFBU2lRQUFBQUV0Yk5sNk5LMVM3WmE1YmVjTEFOY3RjcFFzQTJ5MXhsQ3hhdHN0OS9aem5oK205UG1nVTF5K2g4Z08rRnF1Tk5GSGw5MTZRMjgydVd1VzNuQ3dJSUFBQUtBQUFBZ0FBQUFBSlJJQUFBQUNBYlk3WXJLQ1RlbXEwcUFXTk05cGM2cmM5VmVyemM5d05NclRSbDZMVk9zOWN0Y3U4d3NBQVRHc3NaZ0lTWUFBQUZBQUFBUUFBQUFBQUFFb2tBQUFBQTJ4MnhBUnRqc3VTQ1NpUnRTRnJhdW5uOWYwZkh6eng5R2E3cm5GZW5zK2NGbXVXdVVvSUFBMXgyWEVJQUFBQ2dBQUFJQUFBQWlRQUFBQUNVQ1FBQUppUytlbVlBMngxTWdnRzJPMkt6Zk9jOXRGSGw5dDgwK2p5YVpYejI4ODJwNzh0L05sOUY4L0xXTFJwbEE2ekFiWTdMaUVBQlFBQUFCQUFBQUFCRXdKQUFBQUFBbUJLSkFBTmN0Y2dCcmxxWkFHaGJHMVFFQWJZN0xpRXRwbmZ4L1M2WE9oajZQUjVsdHZOaVBaODRCdGpxdVFBQUFBQUNBQUFBQUFCQUV3SlJJQUFBQUFCS0JJTmN0Y2dCcmxxWkFiWTdHSUFBRzJPeGlCZW1zNlZveTNuWEhYWHo1Q3dEWFBYRUFBQUFFRXdBQUFBQUFDQUFBQWxFZ0FBQUFBQUcyV3VKSm9aNjcraWRjdDBvVG5hK2lEeHBpd0FCcXpJQTJ4Mk1RV20yUUFMODZYeDYvSzQ3cU5jQUJCTUFBQUFBQUFBZ0FBQUFBSlJJQUFBQUFMR20vUjkyZW5sOVJ4MkNnQVI1dlVUaytENlYxejhvNy9LMDR5eTJ4dklEV3NGUWE1YSt5WER5Kzd3azNwcDVmZDlGeGZPejJuUGVuZVdBOW56d0FBQUFBQUJCTUFBQUFBQUFBbUJJQUFBSjcvbjZtZWdjYUFBQUFBQUltaWVIai9VNGQ4L050TXRNdHN0Y1NVU2UzdDBqTGI1eXByak91TzJlcGs4L3J2ZWtlanlVR21RQUFBQUFCQUFBQUFBQUFBQUFBbEFrRGZEdHpyb1NZN0FBQUFBQUFLWG9sd3VQejMwL2s2NDRlUnJrOVhsNnN2WHgyWTdmSnZiNHQ4SjBuRUdoYkc5QUFBQnZoMHBlYTJ4c0VFd0FBQUFBRVRBa0FBQUFBQUFGdnFlRDlCbm9IR2dBQUFBQUFGTDB1Z0twZWljVHcvUWZQNjVPM3hPNGRBWmJSNGZlVG5VNml6aCtiNlh3OWM4RWFabDRLZ0FkdmpmVDhkOFB3OUxtOWNoWUFBQUFBQkFFd0pBQUFBQUFCMXV2enVqanNFNkFBQUFBQVJORVhGQXBlbDB6K1grcitVMDR2NnNNZXVQckhqOW1Pd0tBQjg5MC9aYnJsRXVldWZ5UHA0NjQrVG42SFhybng5SXowNG5OOW5qMnhDd0FBQUFBZ0FvSUJLSkFBQUFBUFozL2xQVHgzOUl3M3owQlFBQlVzQUJSWkpDcTJvazJGajViNnI1anZPY2RjdE9OTy93RE9UemZxM0o2V2V1Z2xBQUFBQVV2eWJPVlUyd0FBQUFFRXdBQUtBQ0FKZ1NpUUFBQjB1YnBMNlBSMEs4ZDdhOEdaZTY4WHM1NmtLODNwSjR2VG9CbU5Ja0JZckdpQXJpZHZsOWM4ZURYRVhOcTYrT1hTdFZuWTZ2RzZlV3VrL0o3V2ZUdkY3ZU93VXk1bG5yNENOY2d2SUFBQkFBQUJRQUFBQVFCTUNVU0FBVzYvR1MvV1ovUDlmUFREeC9RamhldjMrWTAzNTlWNmJ4ZWptNjVsSnVpa2FZMUc3T05GQmJPdTlmTVkvVGNiVEx5K2pHMW1WU3hMc3krdng5VDVuUFRBYTVMVkdzWmxCQUFBQ0FBQUFDZ0FBQUFBQUFnQ1lFb0VnQTI2ZkdUcjZuVDVQMThkZlF1YjdlZTlhVEVMMEFWQ21xVnZOSmJxVUxGNmkwVmpERDMxczV0K21NZG1Ndms0ZDZiWkJlUUFBQkJLQUFBQUNnQUFFSWtVQUFBQUFBQ0FBU2dTZ1NBRGYyY3hMM3ZWOHU1Nit0cjh4NkplKzVPODY5ekhhV0syMEZDQXBFaXVsT2FuUStlcFRUTU91UUJCS0FBQUFBQ2dBQUFBUUlUQWxFMEFBQUFBQUFDQUFBQVNnU2dTZ1NnU2dhYStaTDdyODR2VW5sSTZtSGlGNnc2NWxBQUFBQUFCUUFBQUFBQUNFQUFBSmdTaVFLQUFBQUFBQUFCQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFoQUFBQUFBQUNZRW9rQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFQUFBQUFBQUFBQUFKZ1NnU0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBRVJNQUFBQUFBQi8veEFBdEVBQUNBUUlFQmdFRUF3QURBQUFBQUFBQkFnTUFFUVFRRWlBaE1ERXlNMUFVRXlKQVlDTkJRMEtBa1AvYUFBZ0JBUUFCQlFML0FLRktqTVAwL0NlUEZSaTM2ZEhJWXpKTTBncVVSL3FDOFNUYy9wZDZ2a2VFZVFRc1AwSzNKSEV5SDdzc0oyWW1NYWYwQVZvVm81bzlEYjQrN09PUXhtU2RuRlNHUFR6aGgyWkdVcWZXaktQRWFWbWY2alJJR1p4WnRvOGVRMktMMHh1YzdjckR0ZVBGZ1d0VWtSajlpdkU3VzhlZDZ2azMyalpoS25oQkhJQklva25KbUpwaGIxdDhyMHZadGs2N1VycnRqY3hzK0p1dGExK2tSeXBPNzEvK1cyVHliVzRMc0czL0FDNU1uazllM1pzVGk1NG5ZZ3V6RzdiYjFlcjVEeDhnY1MvZjY5OXNmazJqZ2xDbWhjRGVPemtSK1QyRW5kc2o3dHI4TWhTbTY0bEFyaGIweWxUc1hzNUVmZDdDVHliRTJvTHN4dWNrbGRLWml4VWxXZHl6TUxiQjQrUW5UMS85eWQreE9teGVDNzVPL0lDOWRFNUE4WHIvQU81Ty9ZblRZZUVlZDZ2a0JjdWJ2bGhmTEpFcmhoWTIzbngrd2s4bXhPbXlUcnVpOG1RcFRwUHl1QjRtT1FJcDZiWDlqSjM3RTZab0x1eHUyNU9tUTJueDdaUEo3Q1Ryc1RwbkgxMy9BT1dZNm5nYjVQMDJSK1QyTDlOaWJCNDk3ZHVjZmZuSjNiRTlrZkhzajY1bnhiNU8vTmUzSmVMTjNiT2tmc1I0c2xSbW9ZYVUwbUZZSDRqVjhSNk9GbHA0cEFDQ04wZmZzNlJaUjkyeGFmRGNDTGV4VHBIaDNla2dqVGtXdlRRUnRUWVNuaWRNMTRMc2t6VHRyNmVtT2hRNEZIRHJpTEdWVUxVUmIxd0JZd1ljSnpwTU9qMUpBOGRIaEhtZ3V6RzdaZjVZYUhWV0tlOGxEWWpsRDNldEF1WUlSR1B3Sk1QclZnVk9TY0Jta2VzOEZWamM1ZjFrVFIrMlAxbUVpL0JicFVzU3lDUkRHMUhoSG5HbWxaK0VPYmNFcTlJTlRNZFRlcmhUNmtuVDhIL2xsTEdKRlpDcnlkMldIWFZMVW92Rm5KMzVkc2ZJaVRXM284SWxrL0JYWk1nT3pCRGpsaUlpalZIM1pJTlRNZFRjakJENzVScGw5Q0JjcU5LL2dOMDJkV3hVZWlUTEJqK1BJaTlOaFl6UXdvQStHS2ZDdUtQMkx5Y0d0bzhXUDV2UTRWYnpmZzlXMkwweFM2b2NzTWVSaUlkYTVhV05GU05vR29vdWxNYjVmUTRJZmhMMHpiS1RqSFNDN1F5V241RXNaK3ZGaDFUSzE2a3dxdFR4c2h5dzBHbkxHK1QwT0Q4ZjREYlJ4YWowcE9BckR5L1VUZnBHcllRRFJ3OFJwWWtUUEZHODNvWUp2cHNDQ09lT0p6SnNBTERKdTQ4STZSeWpSU3JJT2V4MHFUYytpaW1hTXh5cklPUmNYMk50NnRuSVA1Wk83SUVndzRra3E2dnpzWko2U0NLT1ZIaGtpcVBGa1VqcSsrU1BWUStRS1hWbU9KMkwwemxYVGlOa1lObU5ocWFybXNOTXpOVnh5SjV4R0NibjBhTVVhS1ZaUkpoMGVtdzhrZEppcEZwTVRHMWRlUXhzTmg0blppNzZjd0N4a09oYzhFdjNUTnBpcEpHak1lSlI5alNJbFM0dXV2cGdTREZpZ2NualI2ZkIxOU9hS2x4VWdwY1lsQ2VKcXZmWU9OV0lyVldvVmMwT0d3MXAxSkloamFsVXNWdGNtNXpnVDZjZU5iN2N3U0srckpSZHo2dU9aNDZqeEtObVVWcU9HaU5mRFN2aUNoQ3dvS1JSKzZyMjJGZ1RWaUsxVnFGTVRsTEdzaXRoMlFzM0R0anp3K0gwNVRQOVNUMlNTdWxKaXhTdXJiV05xWHBXa1ZhckNnT0Y3YkY0MXhGYWhrOFVScHNNclY4T2hnMXBJa1RMRnk2VjlyZTFKaVpGcGNXaHBaRWFpYlVCVnF1YXZWelIxRWczeTBpclVSWGJucEZXQW9jRG5KSUkxZGk3ZTVXV1JhWEdOUzR1TTBKRWJJbTFBV0JGNis2dU5FbWhjWmFhNDE5MWFhMGlyMnlra1dNU3lHUnZmQjNGREV5Q2hqRFF4Y2RDZUkwR1UxM0dyRVZjMWMxOTFhYXNhKzFLbHhLaW1Zc2YwVU93b1R5Q3ZsUzE4dVN2bU5YekdyNWpVY1RLYUxGdi9GRC94QUFwRVFBQkJBQURDQUlEQVFBQUFBQUFBQUFCQUFJREVRUVNNUkFUSUNFd1FGQlJGRUVpTW1Gdy85b0FDQUVEQVFFL0FmS3ZnY3dYNGVDTE90MjdlV2poZjZpSzhMREx1emFFOForMU5pTDVNMlBnYzBYNEZqV2lQOGhxcEdaRHd3eDd4R04yZXdqaFFpS05jVFJtTko4RmZyejdlTTA0RkdOcEZMSUJvcHkwdS9IZ2lrM2JyUXhFWisxTmlBUlRkcjQ0N3k2TGRQdlRiaDQ4eHYwdDFUOHlNVEdqK0k2OHUyWmlIczVKK0pjNFYwY1BsejA1R05wVDZBc3A3c3pyMlJ2TVpzSVl0djJGTlB2T1E3OWpjN3FUNGkzbjliRzRtUUo4cnBOZkNZYU96bVRZU0NmU2RBeG84TkRMdXl2a3hxZWJlY2hwc2dBc2twOFlJek5SamMzbVI0YkRaUzFOWTF1aXhEdzM4ZmZobU9MVHlYeXBFU1R6UGZVVmxLbzlLSm1kMUtTSWZzelR1UTMzeFpBaTBqaHEwVmhtTkl6SVFnV3BZbUJ2cnQyajc2SmJ3QVZzaWxNZWkrVzMwcEpUSWI3WUN6MDNDOWcxNkkxN0puVWNPYWJyc3BaUWkzMXdzUjE3RnVuVWZ4QnV3dFdSQVVqcjJMWFYxSDdBYVFOOFpOZGtGWHBadmZTZHd0MFdmYVRTSnZzd2FRY0Nzb1ZGYytnVzdRTFR1UTdvRWhaMWZScFpSc0p2dmJLenJPckhGZEl1dndsbFppclArRS8veEFBbkVRQUJBd0lHQWdJREFRQUFBQUFBQUFBQkFBSVJBeElRSUNFd01VQVRVRUZSQkJRaWNQL2FBQWdCQWdFQlB3SDJyYW9kNmVxKzFYQzJGNS9UVkdYaEdrOGZDcDBmbDJEYW9kNkZ4ZGZvbU91R1dvKzFYQzJGNXlnWkU1aVlFcHRXZWV1OFMwcTRxNHFrSEFhNUtqTHhDTko0Vk9rWmwyTFh1aVZlM0dzNjBLLytZUWU1eFE2enFUWEp0RnJUT3pWbTJRcmlteVRBVFJhSXdlMFBFRkg4ZHlwMHJOZSs0MmlVMm9IWUdpd3B0TnJlUFNWbngvS05STnF2SjlOVXAzaGVCNnBVN05UaFZKalJOZVpnb09CNDlOV2tPUmNTcUxTZGZUT2FIRFZlQmlBalFkNlFyZ3BHMDkxclpUSC9BQTdzbDMxbXVLRHB5ekNDck9JTUx5SmxSeFBYY2RrT3lFemc5Z2V2MXltTUROT3NUQTIybkE4Yko0NlQ5eHAwVHVNSlZ4UWQ5NVhJY2RGM080ek1YWUJ5dlJNb2NkRXRuY1pnUktJak9CUFNLbjdWdjF0Tnl1NVZtSUVvQ09tUktMU0ZjcEMwMkE3RW1FM1U5b2dGV0tObVZjY0FJN3NLMVdxRG1pVUJIcElDdENnZjRULy94QUF4RUFBQkFRVUhCQUlCQWdjQUFBQUFBQUFCQUFJUUVTQWhFakF4VUZGaGNTSXlRWUZBa1dBREV5TXpZbktBa0tILzJnQUlBUUVBQmo4Qy93QUNxRDhRUEt0ajhQb29ZQndzZmlHd1Vmdy9sOUIrRzhVZVZiSDRFQVFvWEVkSkloUXdEaFlGZk4vYUNybUVHZ29xQk1FUUptdDZUMXdDamZRMFFQbHdqNXpIYVprZTU3SDNLMHJUT056UXdWVEYxVEZEak1Hak1CdE5hMG1pRkFCMW16WFZSdXZRekQzTVpnejdOMTd1am1ETW81Um1qZE5YVFhPWURpVVRFNjBmRWk0YXVXZWMyOUdZTTZQQlZQS2dvR1ZxNTlITVRLMXhLRVMraFVTb2hSS0hFalZ5M3htSmxhNGxhTjRSY25uTVRLM3hLTjV3RTBkM2hicUZ3enptSmxiNGxob0p4dFdTSVhiVlJSQlpqRlJtWkcyWW1WdmlRSW1kbzdYQTVtT1lqaVZyaVFuUVhCM01rRkI3STJsR1pNOFN0Y1NOWERBOXljWExSMnpKbVU4R1FibTRocFNSb3ZDTXAzT1pIWXY2V1NWZ0Fva2hkd1dJWGhNOUpWWmg5eWpjM1BTY3lhR3lpZWtMQ0ozdUtydGh3dWhyN1hVeTlvK3BRTkE5b3V0dCtjQkpFSTJWQVZ5K0FVV3F0WDJoMldvMVRJMXJJQWlYOGxXMnNGRFNhTEtQM2xzQXE5M3dZaWhVQzlwcmFSaG54aVZ3aVh4a2g1TmN0dG4xOEdHcnE0NnFEVGdOYXl0U01qM0pITEFQaGNQZ1ZaT0tocFI0YzBKT0tQM2F1U05za3RhL0NqcklHb2RRd2thTDRqdGRIU3I5bEc1SjJUUTN5SUJBZkc0VVJnWGt2cXFVUkZyRmQ2cFZXZkp4dWlkVWNpRzN3dUpqczhzYUM0dER1RDhDcWlXQVFaUTR5Sm8vR2hxNW9iT0FVZkJ1U3l5TVYxVkxxcnBvVjFCOXRyRnc0eUk4L0JoS1RJMDFzN2NYRnJ6TFZkcTZXWG5iSXY2U29qNEViZ29idWlGdnA4QWsrRVRrZTJpb2ZWekM2NGthRzZocFI4UXJMWTlycE1iNzlzZThrMGFVUjloUS9VcnV1a3p4Wk5sclZWRExTNm9lbnhsNWthYTl5bUhDc3M0THVLeFZocXU3c1JjUUhjb25KSXNyZlJhSFpSWnJ3b05WV05ubFV2WVMwOXlRQy9iSHN5Tk5KbzdPaXlWWHBNblUwRkQ5UDd5ZUlVUDFLYnU2bVlyb2ErMVNQcFZnVjFBaGQ0bGlxS3NYWWZhdEh6TEErVkF1b3JMT0hrNnFNZ0hueWd4ckpRcnZhKzFWby9lVjBOTkZYcEwrcGtGZHNGaVZSc3IrYzBxdGtxQzZwSU9wZ3NDdlAwc0tPZ1YxZHVxZ0tNcis2UzIzam80bk0ra3JyRUYwbU11OG5jVlZWOHF2M0pIVlV3ZlVJUWFLNy84QWlxMFYwaDFnWW5OcUxHUEs2aEJkTFFkRTRxaXdXQldFdUpVRnMvQjBKSWxGbzUxUnBkVE1WV0lWR2hOZzZMWGwrS3hWYXVnWFJLaWMvbzBWakZWWlZZaGR5b1F0blVXQ3dXaXhLeFZTdjRlT3FpMGZ3YWpSWGVWaXNBdTBMc0M3UXNZS3BqL3BRLy9FQUMwUUFBRURBZ1VEQkFJREFRRUJBQUFBQUFFQUVTRXhVUkFnUVdGeE1GQ0JrYUd4OEVCZ3dkSHg0WUNRLzlvQUNBRUJBQUUvSWY4QXdVVUU1QXF5SWI5TzFUTnhJRVk2L3A3MHBOUW53QVFFQk84VCttQTVCRHB1Rk9GMzZjRXFFTlpuakUwSnkxVVFSK2dpU2lkVzZJTUFhcHd3S1FZczNYUlRCaUtyVk4zK3RBQWhESnowYWRDQlczeDBYcVZDaWNZQkVJZ2hqMVJWQ0pCT2lJQURFZHVxVElZVGkxQ0ZSakRSQWJSZERNSFkxelFOY01SWkFFVGRGRk9XUU9DYm9DcUdQVkJibmZaQktFMk4yd1Z5dEs5QUpPYUYwLzE2Wmg3S0tGYThzclh2aEZvR0QzUkVwam5LdVl0a1ZjeGI0Vk81SVJNMUE5c0JaTVRoRkljSVpvV1Evd0I1aEFKS2svS0pKRW1weUFPRUFlWVhUMnpKMUp4dkVZYURsQnlFdXFBdDhYY0tCdmxDcTlLV3pic1BSQktyd3pYVG5IMHNkd2lIWjhvczdnamRYT1ZqQnBVcHl1em1ZdmREb2l5TGxHNXJsM0RUc09XdHRPYmYwR0ZTb0kzQ0liUDhmbysySXlYN2hwMkF5MU52aXplS1R6aFdoREtFTFNVQTdJeGdBNU9pSUFNUm9jdncvbm8xRFludDNIM3VYNXVWcExjd29WVElBMFZpbk91VUZWd2pLdVU3M0FjbnhPakEzM0k3Z0tGN3ZwSDRpd3hCZklTNjByQUQyeDBBZGNpVDBZRnVBK2U0Q2hlN3kvVjNHV0J1Zkk3QVM2M2tMTGVRc1dTV0twSnRCVGpxQ2RuZ0s1SHVBWHZjdjFkeGxvMkF6MUgwRTR5UkFFa0p5aE9GVTRFZ0RnZk5FV2g5NS9udU5kZkw5WGNaR0J1dHdEbmhaTjljU25JU3dVTjRqbEVsa2ZoTGVuY2FxNGRFNFhCMEJIMFcvd0J5UElYSWdTd3BpSmRRNXpLTHUwQmNvbHlTZGU0MWVWODNKRWwySFFqdFBka3BIa3E0NmRnQmxpTGZ6anVVeldKR1g2cTJTRzZIb1Yvb0dTT3liRVdXNk56YjVCS290UWUzY3BjaGo4T0NxbklLME9SRWNZVWRKWUZBWEJReWVZUzBvZ3dFYzVoZDZnbDRSTGtrNURBM01kZXdmS0RsVjd4c2RVWXA3ak82VDEwU3ZmSjBCQUdBSGxhTUx3WDlZbFhHdUtZK0xzODVZRzJZdzJUWWI4d1FPbnVJRU4veEhHandpckpMWkdKajI0WUM1S1lmNmpyU3dHOGt3UnNselFmNFpPVEZ1UWNhSVBtSTBGMUY2UndyeU9ZWXFzeWFTUGJTQUE1S2VjaXFmd0RTYUpxUERUUkZJV0l4NEF3ZWNoOUlCR2pEQUU1bXB4RG14VEZoUU55NDdheUc1UDRMMWhzR0hEUWhZTHpmRGN4Zlh6aUE1WkFpcVJLSnp0azVJNk9VNjZaQWFWSjJUNVJZZHNzanFnQUFBb1B3YThXT3A3UTJUR3FrY3dwaU0vUVNjR290aUE1QUZTakRnS1FlTWZzYWRIbWtSMlI3T3Z4L0NtRGNmSTBEdlVaUFpPSldDVk1QVFVNbkNFTUJKTmdueWdhQ3c2TGxzbXlIWWpXYWxCQTZEOEhRdkNFQnNuc2xBR3JpMWNIRUFNRGhFWGR4UWJINEt5WG9ncm1CUTJVK3dXNlR3Nmt4dkFkaTlTUHd2UnlDV0RvS3pVeW5CckxGbzJBOUFSZy95WWlrTjRWU0J5TXB3MWlnQ05BZzdFNS9EK0NTd2NvS2pVemtrMTdBTndMRGt4U2FvM1IxVkRoQmdRV0ExRVFCZ0JVMS9HVFdZM3dBSkxBT1ZRdTBXN0k0elgvQlNhL0x3Q0JoVjR3NGd6QVRCTjdvU0dTRFBsQXNBSTNSUjRjRlVvQnZqNlBkaU0wZHhEUlhCL0FtZUl5UEJUUU1EUW9HQnVvSzk4QVk4aFJ1Tlg0QWRCQTZNZHFTL1k0bE90SHROMFFNUUdSVVpTaGhVd2dHRFpEQU5KWlNTcFV4SEVNVUVPTmlIT0hyTlYzN0lJeElkWFJ5WWdJaUJsbFVIY1p6dndhR2dJb2R5ZGxERU5zVW5RSUdRbGc1UVZHc3Nqd1VBV3VRNDlSZ2d1Y0ttNVdsN2lBeTRKK1Zid3dFZFJlVUNESUw1NnlEOWtRaEhKN0lIR1loUm1OYVNiYnlIcU1hMUlpejV3VlYzRUJBT1RqYm9SRjBBQUFCa2llWnlpVGdnRml5REFKVFFla2cxeU9XSVplaDdEMDROQ2hUSHNsQWdoeE9OTUd5SVlHM0lrazVMbnN3MFVnalVKc21laEFnaHdYQ0F4YmtDcld5RTV3SGMxRCthR1JIc2txa2VTRUFCd1FjYUlaSHJUaGJtTEZNMEJ5RnplaUpxTUYwZk1KRlcyUW1CSlRTajNJdDhadmd3UEkyUldqS2oyV3VJRGxoVmVWWEpNaFZKemtxd09DdjlLcW8rZTFqUHJGRkMrWlJBdlREM29BdjRvS09pTk5Gd3ZHSHZ4ekJUTk1hbENsRGZUSUlEUTFLMFc1MkZiZ2VNQUtJRDlSNHcxVTZHeU1DVU5DZFo3RitVSlRxWHRpQVNXQWNveEFPeXhVVnQ2RGp1ZGZXc2FJK09jRUxjT1V5aVNvbVU0V0k0VDBFUWR4NUtmSmlPak1JQ0RUQWxxcXA5Z211ckxJRTFsUXA4WU54Q0RrQUFHQ2FvV3U0aFVGQnZoSmwvWWQyQkU1RUhaVlpsSzRlOVZFZVV3VFZ3ak56WXBtdnBUMVdmV1VESnhDNEJ0Z2JEY1lZWkllUzlYVlRnY0xJRUVPQ2lBYWdIQkNrQVZVb2FaRGZ4aTZLVEo3elJGSEo1bEFVT0MrUUtyMjg0TklxYVlRSGxkTUZDRHluL3dCMENIWUR5bnZtYllFQ1hFSFpNUDhBY0pySG9tR29rbnF1ZktucWJvRUdoVDdlQmRhTzlCYnY5TkhsR25JY2d0TitDanFFYUpIS3FpOHJVMGU1VlZxTVdLdSs5YjFTc25rTDZRaVFPQWJsT1FCMFQ4SDlHb0E4cWhJQU5CNUNHc1JEL3RML0FHRWRFUzAxd0NOT2JsLzhVUC9hQUF3REFRQUNBQU1BQUFBUUNDUy8vRFI5OXRCQkJCUjErKysrKysrKys4eEJCQkJGOTk1RFgvNkNDQ0MyL3ZEVjk5dEJCSkJCUng4ODg4ODV4QkJCQkJGOTk5Qkgvd0Q0Z3FnZ2t2OEE4c0hYMzIxR3FrSUVFRUVFRUVFRUVFRUVYMzMyRVA4QS93Q2dndmlnZ2x2L0FNc0hYMzJ6RDZJa0VFRUVFRUVFRUVGMzMzMkVOLzhBNkNDQyt1Q0NDMi8vQUNvc2ZmZlZuWXNDQVFRUVFSelRmZmZlWVEzL0FQNklJSWI3NjRJSUxiKzdkM3JYMWEvSGswM2drMDNzTXpUM0VFZC8vd0NpQ0NHKzIrK0tDQ0MyL08vaEJWMjk5ZTk5T0tmOS93QmorZ1F6L3dEL0FPaUNDQ2UrUysrK0tDQ0N5LzhBMVQxZ2dZczh2alBmdWNZVWloMy9BUDhBNkNDQ0NlKytDUysrK0tDQ0NTMlYvcVBMSmFoZENCcUREREwvQVA4QS93RHlDQ0NDZSsrNkxDUysrK09DQ0NDNzJ2OEEvd0Qxcjk4NTJaci9BUHAvL3dBZ2dnZ2h2dnZ1Z3JRd2t2dnZyaWdraVFsOHVudi9BT24rVTN2L0FQdHlDQ0NDQ08rKys2Q0Q5dExDUzIrKytPQ3BDVkNCQ3l5aHlsYUhpQ0JDQ0NDR2UrKyt5Q0RmOTk5TERDMisrKytsQ2NKVENDQ3hDQkNwQ1FKQ0NHZSsrKytpQ0RmOVI5OTlMRENTMis2MlA4ODhmN0loQ1pDdktQTVArKysrK3lDQ0hkOTlCUjk5OXZEQ0N5MTg4ODg4ODg1QU90SzQrUDNqKysreUNDRFA5OTl4QkJCMTk5OVBEVTg4ODg4ODg4ajhQOXByMVY0OTZ5Q0RCSGY5OTloQnRCQkJSOTk5OWw4ODg4ODg4OG44bldwOGZ2ZkNCQ0RUVjk5OTVCQkI5dEJCQkJ4OTkzODg4ODg4ODcwOFhFeS84ODgwTXJ6K2Q5NWhCQkJOODk5SkJCQkJ4ZS84ODg4ODh2OEFPL0p3RnVQUFBQUFBPT1lRUVFSWGZkUFBmYlNRUVFRNmQvOEF6OS8zL3dBLzhzZDVGZFpiejh3d0JCQkJOOTk4QVE4ODk5dEpCQlJqRkhFeVVuUUd6Z2RwOWhXeGh3QkJCQk45OTk4NEFBQTA4ODk5dE5CQmcxOHZybzUvajBQZnZmb0JCQkJGTjk5OTg0Z0FPQUFBUTA4ODk5OU5OQkJCREowQUFUQVEvUkJCRk45OTk5ODh3QUFBK3VJQUFBUXc4ODk5OTk5Tk5OTk5PY3VldE45OTk5OTg4NHdBQUFBTysrK3VLQUFBQXcwODg4OTk5OTk5OTk5OTk5OTg4ODh3Z0FBQUFPKytDMisrK3VLQUFBQUFRdzA4ODg4ODg4ODg4ODh3d0FBQUFBQU8rKysrQ0NTMisrK3VPQ0FBQUFBQUFBQVF3d0FBQUFBQUFBQUFHZSsrKyt5Qy84UUFKaEVCQUFJQ0FnRURCQU1CQUFBQUFBQUFBUUFSSVRFUVFVQWdVV0V3VUhHUmNJSFJvZi9hQUFnQkF3RUJQeEQ3cjNCNy9IMmV5bzVLaUZPbURyWnZyRVJJL1pVN3c3aHQ0Zm1FTHZ5ekt6dVQzK1BzSlJzdCtxbUZHeHllanFLbW5KVUIxbVdkdHZ0b2pzdG5xclQzR3V1aCsvSEJ6UWt3WmlVT2pWWExkL2IvQUhsaiswN2hONGZtWEQvTE44TXgyS3ovQUxNZ0UxTmNFd2FhTU1RNG1iaFRmdjhBdUVFYWVNUlJzK1oxWVI1ZDh2dHdGUXdsUkFVMUgxNHpMcXRYeW1XWkk0cW9qdnlIZkJ2a2pnZTRmVFB1T0FhdS93QXpIUEVmUWJqNUR2ZzN6MUVJdW5YOVFBWEs0MXNvcmZkeEthNGZRYjhsM3diNVl0MnhneGEvOGxvMG83akFMb1pvcld6L0FDRldnNVBKZDhHK1hmSnZnRGF5V1MwcENrRnUzUFhrdStEZkJ2MEhGdWRUQlZuNmlxbHJ6MTVMS3VGMnA4RW82OUhYQngxd0F2VUFLV1AyZVRoZ0ExNkVIY1Uxd0R4MXdKQVNnMFFUMkZqbVdFcUxzSHNlNzhldkw2REw4a1NvOFVMNFNYVDJoVmxYTGcxMGVOaVBvdkE1UnpEWUlsa1JHbWRjUG9OZ2pqd1JpL29uREtPVWgzUGdsSmZDdVJiYzNlQ0tIMEdIQjd6ckJxbURaWjZBRytCZFFVQVVUTmVEb01HOWV2dmg0NlJqd09ucm9YNFNCekJtWENtQkJIWENYQXFMVU9PK05PWEdKY1Rtdzl4QkhYQTdSMTRhYVRBTVcxS2RNdnVRWDJsNWxlMFdvRlN5Yll3NGhqaEZGZ09iZkgwa0IzQU9vKzAxTVFxNWtpc0ptSTdKOEV3RXVYNW9XbUM3bElQQkhUS3ZNL1BGZkVleU45aldrK2FmSkZ1LzRKLy94QUFtRVFFQUFnSUNBZ0lDQVFVQUFBQUFBQUFCQUJFaE1SQkJRRkVnWVRCUWtYQnhnYkhCLzlvQUNBRUNBUUUvRVAyclZhOWZmNmZES3czRFBiZy9XRCtZSWxuNlVhZTRwRERSL2lZQ05Wci9BTCtoY2hWVXkybjRkeXVXWVlaN2NQVnFBQTcrVjE2UXFCcGY0OGRBSHFCdDNtV09aUWVaQWlVMURVT1M1YlBVeEN0WHpoRXczRzloTU5XK3ZVU2d1L0djdlRPOEljbXVUM3hYMlNCaUR1SDJpVnRycmxCWXdrdldiWWE4ZzF3NjVZYitreEduMXc1ZFZNeU13K0RxSGtHdUhYUGNJV05rQkJESk1EeSt2cURad2ZCMTVKcmg1SUgyRVFkVDdSRFVJQlZiQ2UzM0g2Vjh2a211SGsxeTY0YkM4T1pzR0tqY0hQZmttdUhYRHI0UEZBRjhBVTBjOStTVFVhdHo3SlozOE8rSGp2aTRFVmFxZjkrVWxYZndGTlFMY0NEanZoQVZpVXRqenExRnRZeVFybGZmajM0UHdFcnd3Ymh4WXJnd0hjYmNKREtlZkJ4VGlFZEtEVEJFc25mQjhIVm9OK0NzMStGNXM1UWpVK3lXdGZFNkttcndWbCtBNVoyaVhaRXBwK0NKWENtNGlJclpxOEhjSWxiK2ZYQngyaERoTnZuWXJ3Z3BpVmNHTnNxSW0rQnFMY0M0OGRjYmNtY3lvREFqNk1STjhMcERIaGh0TWdRUnVXN0pYVmlIdVZpWERNY3ltYWhKbU9lQUVHUjVvOGZhUlhVVWJoN201bU4xTVFDTXhCZE0reVpXVks4MUR1SjZsNGxFVFpMcWYyNHY3aDBRL3dCR29aOVUraUJkZjBKLy84UUFMUkFCQUFFQ0JBUUdBd0VCQVFFQkFBQUFBUkVBSVRGQlVXRVFJSEdCTUZDUm9iSEIwZUh3UUdEeGdKRC8yZ0FJQVFFQUFUOFEvd0RncklkS1U3UlArT0NCTktPWnMraEZXYUFnVE9jNmk2RlFuL0dRSlMrSnNKZzBabWlVTHpRQjJ6b2lYUEZwSVkvNHVZMzVGR0Q5dlNtY0FsTUdCL3hZeGhScUtoVXVGYUxYdExIdlBweE9BNHhsVHFJMi93Q0JGaWlCSURoSmo0TDNFb0NnZVlYUUxjREVtbkFOMm1nTWt6S1M0S1VZbmpwR1BtQW02b1pCeHRha2RaeExVOEM4TUY3d3Q3eHhnUk5XQUkyVEJxNGtZaG5VVVhvSmNsTkFrWitMZUtaZlJJN2U5SUZ4QStYWU5BR1NtZ0JqTUZaSzVBb083Q3lvY0ppQm56YjVFNll2d2NaQ09TMFVQVjBPOVlpRGdHUnB5TFlGaTdCaFNqd0pCbWkybU9Oc3FtU0N4dTBtUWNYS25oZUVwVDVZb0R5VEY2TU5uZGkzNWptNm9OM1FQbHhtaFprMURlbHRoVHlJdTY2TzNLV0tEQ0U2WG42b0g1cFF3SDVyQUhQV1FyZThDaHJlOENsNFFpc0VFcGlzNFNIVjhzWGNVSm5GYjFUV01LMzRnOTJmcm02QXZxZmx6RWZKV2E1Q25LbEpYa0RjcU9sUWhNQnBTczVZWkVkS2lnWEZkT0NpUmJpRHZ5NWJ4V01ha1RWdWtIdDh3YlROM3NCKytVU0RWcFdjbDlOdnJtdCszcURnZW5Lc3VTSTNhOW05eDVoR0RXOVNyaTBZMWhOUjZDUHJ6RHVNdTY4dXlZOTYzMUgzNVR3SjlBcFc4MDl1WTFjQkdWS3JMVjRhSjllRHNHRmIzcjNmTUxYK3djdmVIc3Z6TFZYc1l2QXpLajdaazRrZGFSWDU3OXVYdjRKR1hBUjZETkpSWXJQbUdMb0h0eTQzVWUvbXRCcTlTN3dVUzBwTVJCUnhCWURKbWtwS2dCZHBRV0tDNXkyTHFEMmVEYityamozanpIRDZRNWNhMCtPUHZsa3pDWmVoZXBFekdzS29UT2RPNzdrU0ZPSHZtMDQwUEpOUUJ1a1FVUUJtUjJrbmtzWFZIdjRQUXNEcWg4VDVoN3c1dXRYUmU2SDN5NzNPNmVKRGZpc0V0U0pxeGZyNVByaTRoRTRCVGRCaXNSbEQ0TzRqdWdKK3ZNUGVIaDlCdlZIMnNjUlRDanFWUFNreFVobUplcG9qTUVIU2VLRnRrZFlwM0poc2xPd1hFYUdwRVllYmZqZlN3ZkQ1Z29SMG93ZmdvQWxncHdmRDdqNzU3TW5MMEg2Y1FCR29JQ1NOTnZDM0diVXR3b3EwUXRpeTVVNjQyUW5mbTZ4M3FmTVQwZyszZ3diMWl0N2hPZnJjSFZCOEx4Z3V6NUxoVmovb2psQ0FKVmdva3hraTlMRDQ4eHYxRDl1VzhjMS9JOG5XWU9zVzhDN1prZGdyOE9SQ0x5Z3FZMHlFbWNVNVZJcjEwTjdqUEtFRlBZUmQ5aW12aFV2bU4rcGo2TWN0OE5mam42NU91dytzL1hnZCsxMVg0RGtCUHdDK3hOS3BYRnZ4cy9tRGw2c2c2bytDK1pmd2h4KytXOGRmbnYxeVdUOUFSOTg0S2dFclRJVElROWtmWEo2ZCtxeDhUeDNUTmIvTGtDb0trbUNPallQMm5wNWxaZEgxRWZYSEFnMUxQV3Y3QStrMXB3NUp4UjkxL3dDYTBISDlWUHF2NFZldGFSOWxpdTFTSXVnam1CWWxYb0NYNHBuRXF5dkp2QnV3SSsrSUl2Qmw2VXFxdUx5UEdZcUJRM29TL3dBYWxZRVJoSEVmTWU3VTZpZnVqQzZaRjNvVU1JQzN2YkNnQWdJT2VLRTBFMVBMckg0TFU5MlhaK3o4Vk1JT3E5UngzbERxTDhEeTJMbG5xM2ZuajBmNzd3aXB4WXpYZDRTSWRLaW9YRVNpSklseWJyUnBnWU1TNEZpOVIxa2xORktnUkdFY1I4dVlxNkFLQmhROXZGSkpEaFFiTDhpRHVZVkxkNkozMHJkakhUQjhQcnlUdFlSTG9WdnZKeHg5ZlpDb082TDJiOFZlcTNadm53VWRmQ1V3NFBaSVF5U0pTTnpncTEvYStXcGdWQUdkQ1NCOURZL3dJRTRCZWhnNXhiSTAycGMrT0hqL0FPMml6NG5rdVpKSm9MU0xpczRhQlNxcFdlQXd5VmhLQXlkK01DREd0NXZRR0I2eStubG9iZURrYS80Vkp6QjJaKzAwV0lxTjhCYXhQMVVOUnlHQTFPRytFdWhZNGtBWXJGRmdXRXUyRktCaWNuZDgzdlk5ajNvTEJhVnBLcUQwUXV0VzNnc2FBV0QwOHNhQXh5OUNqTGdJRC9DMnpLVHUvd0I3OFZBeGl6MVQyRUlHKzVRTEVpRHRaOTU0eXlTL3BjSHg0djhBUEZqVXBBVWgyU09nSSt1TDBQYkw5dng0SVFGenJCaFNRbzVlUnhndlc2UDhPRjJybHg5Qmw3Y2dMa3RCbWhZcG1XY2M1NGs2TU9CQkljR2xTS3lqTGJnSWx3UmRURDNpa291S3p3RUVnYkl4YWVJeU5Bc0hnOUY3MWYxVVprQ1IwOGliRlJGRUJZai9BQXZEeGNPLzZvQURBSTVDNjVRZDM5Zk5GWmx0R1RueFY0dGI3Y1U1RXhFbW5DTTVLU3JBREJZV0M4ZkhwVEZpZHpTWXl5TE5NYUxJYzhqdXg5UENVVmUzMEtreGd6MjhpazZTQi94ZlJQZDVBUldBbHBnWWpMditxT0J1aCsvYmlNemRBM2NmazhBcUFVMnk2Y1RwTTFGWHVQaHlsWkx3VmhLa1VBaG1KOVh5TG9jUHQvaEJzQUphWXpqTGt0Rm9QUXUvMi9DZU1oN2NOQmtUUlMwS1hSdzhHLzhBTUFaRGYwbzBtcTRIUW9CQUEwS2loTkVtaVhwNWlwRS9Sa2UvQUVwTUFwaVFrWE1uNTRJU01oOHZrUkdhdWY0YnBacGVoeTdBL2EvdHVCa1c4cWtoUnhLN0FuVnRRb2lXU2dOdHdOVFh3QVNHSXRoLzd5dVhySVRVc2RCQXBpZGlKZU1hR3dQU1g4aXZOVXQwM29HcHBFL3dYbGcrZ2NrV2t1QWF1VlhObEM3cTU4THkycllKbnZXLzFmUXNmZkNJdGtaSnBRcFlKY2JuK0Jmb1FxZG1WTHlPN3N6Y3c3YVZERnJXSjRQclBNNjhxQnhtSDNSR01BamsycVQ2NWZmSW9FdW9PN1Jxd0VIYkgzbmlZV2VDTVZQSXV3MjFLc0IySU56dDR3d1hHS2V4NUl0Vk80eEdWcXU4YVRIT3BsUlIvRUVtZGJ0S1RjN2M3azR4bURScTNjMHBVMUpMVVgzZU44L3d5OGhPa0FTMHdqaHBiYmVuSkFyNTZJUGVsVXF5dDNrRUszSzRFM1hzZk5IRlNTTm5XNmFWR1FnMGxVSnZVWFVKejVGaVJycndkaGpjRkF3QnFNODZGd2xqNU5KZ1JLdWZrbnloVnMxT1VBWHNUcHRVL2ZkcWVwblUxbTRGZ2R2eFVDUkxJWU8vNXFJRzBiRDF3bzRCTUZTUGdHRW9YRTZHdFlUQVc1TFR3ZlJQM3lzRFJNeHNjazVaZTI3VU02YmtPWFRrWlFzUjZ0MzQ5NnVCQ0k2bXg3dFM2dEVVaG1yOVFvQUhNV0I2TkFFQTRJOFNsZE5VdnBqUUs4dG83OWluTGtaVmJ2a3lOV2tTaVlPQ0hGMTBvRUpMaU1qVUlTMlFuZkdueWxkYzlTbTVRemlQV1B1bzBSTWJqMUtnUmZXQStxaUlpNVA3VkZHYWpQRlFLc0JqVWdPZ09WUGtHdzZOUjRydWZKYXRGV3duNm9KWTdHMUhiSDRxY1k4VGt5N2NnNGFDYVpTZ3IxTkVjMjZBMTRSSUFMb3dEVmFOdlcyUVpiRlBpWlR4UUFWTUFaMUxoZDZqK2loY2V3akQzK09SV2V2aFFKQi9adlE4SDZJK1Z3U2JOZC9Tbzk1Y3NibzBBRkNPWnc5WklWcTZpV3JsTjk2UitxSkorcGQ4MWdqYURmNVdvam9hUDFSVWNDNWZGSkV0QWNYNG9SSkdlQ2hkcDBsUzFnR25la0dDQ1lSUmttdFhPalVER2VwOXl0SVhSZmlvVWd4Y1liVUlnakk0VkN1Qmc0cWhsRjdHWFlOYXc3ejFMVloxMEJEb3g5K0pwU1dBSldoWWYyTHZTZ1ZZQzZ0SUs0K3l3L1Bmek5FaGRWNktoVUxybnBqVUxkczNPVklUa0I4MFlsek4xY1ZwQklibE04bGU5UGF1azl2eFN4eENXOGVsQW9KeEdoa1VZa3lmeW9DVUp0d0FLb0RPb2pGbGJvd3FTdzk1MFUzQURRMmFsR0lsQ1BYNWUxRHlRRUNCVE1RNHovclNsaDJINVVYMXh1K3ZBTUZHRCtMK2JGU3JCVU5RSVI1Qy9yVVNQYWxsRVRzSmRSeVlyWUROcEVwT0p0dFNDbVdKazFnR2QzTmYrUlVtS2RDa1VZdlFMVGtUUmlNSEZaY0Vza21xajRxZVI5ejhVcmwzU1lGSXRLZUk5eFVhU2JVZkJHNU5iUTZVbEluV0wwcGJUUy9ya1lxK0dZdEtrZ1BQVGJ6a1ZTS0ptVWJUaXdmbXFLQ3RWRFVHVE5rL0ZFblFLQ0pJaWJWaEtiUTNxd1RLM1hWcElXUVlDeVZrVjJRMUhpSHBSYWptS3lxRVNZaFoyY0xrTlpSV1dDVVNaTzkxWXpXQ3hIU2tFSWpDY0ZTTllSWVlodlFzZ20xSWIvSnhvblNCaDREejlXYTREWWhGUUxPM285eDRuNHJEZHRaUTg5RUZDUm1YdC9HQlNBUkpIS3NvL3dBc2FpeGV3clE3eUZhSUdxeTBSdUZtWng3VlBaY2JVUW1jMXUwd2pvckg3cE14ODMvaFJSa1VkcXlNdEZXUkRSdnd2QlBnb29PSzkxZit5cHhjdXEwWWdTcWVPM1QvQVBpaC85az0iKTsKfQojZGF0YS11cmktYXNjaWkgewogIHVyaS0xOiB1cmwoImRhdGE6dGV4dC9odG1sLCUzQ2h0bWwlM0UlM0NoMSUzRVRoaXMlMjBwYWdlJTIwaXMlMjAxMDAlMjUlMjBBd2Vzb21lLiUzQyUyRmgxJTNFJTNDJTJGaHRtbCUzRSUwQSIpOwogIHVyaS0yOiB1cmwoImRhdGE6dGV4dC9odG1sLCUzQ2h0bWwlM0UlM0NoMSUzRVRoaXMlMjBwYWdlJTIwaXMlMjAxMDAlMjUlMjBBd2Vzb21lLiUzQyUyRmgxJTNFJTNDJTJGaHRtbCUzRSUwQSIpOwp9CiNmaWxlLWZ1bmN0aW9ucyB7CiAgc3ZnLW5vdC1iYXNlLTY0OiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUyMHN0YW5kYWxvbmUlM0QlMjJubyUyMiUzRiUzRSUwQSUzQ3N2ZyUyMGhlaWdodCUzRCUyMjEwMCUyMiUyMHdpZHRoJTNEJTIyMTAwJTIyJTNFJTBBJTIwJTIwJTNDY2lyY2xlJTIwY3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNDAlMjIlMjBzdHJva2UlM0QlMjJibGFjayUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjElMjIlMjBmaWxsJTNEJTIyYmx1ZSUyMiUyMCUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpOwogIHNpemU6IDY0MHB4IDQzMHB4OwogIHdpZHRoOiA2NDBweDsKICBoZWlnaHQ6IDQzMHB4Owp9CiNzdmctZnVuY3Rpb25zIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDElMjAxJTIyJTNFJTNDbGluZWFyR3JhZGllbnQlMjBpZCUzRCUyMmclMjIlMjB4MSUzRCUyMjAlMjUlMjIlMjB5MSUzRCUyMjAlMjUlMjIlMjB4MiUzRCUyMjAlMjUlMjIlMjB5MiUzRCUyMjEwMCUyNSUyMiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyMzAwMDAwMCUyMiUyRiUzRSUzQ3N0b3AlMjBvZmZzZXQlM0QlMjIxMDAlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzZmZmZmZmJTIyJTJGJTNFJTNDJTJGbGluZWFyR3JhZGllbnQlM0UlM0NyZWN0JTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMSUyMiUyMGhlaWdodCUzRCUyMjElMjIlMjBmaWxsJTNEJTIydXJsKCUyM2cpJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFJyk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxJTIwMSUyMiUzRSUzQ2xpbmVhckdyYWRpZW50JTIwaWQlM0QlMjJnJTIyJTIweDElM0QlMjIwJTI1JTIyJTIweTElM0QlMjIwJTI1JTIyJTIweDIlM0QlMjIwJTI1JTIyJTIweTIlM0QlMjIxMDAlMjUlMjIlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMCUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjMwMDAwMDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMyUyNSUyMiUyMHN0b3AtY29sb3IlM0QlMjIlMjNmZmE1MDAlMjIlMkYlM0UlM0NzdG9wJTIwb2Zmc2V0JTNEJTIyMTAwJTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyM2ZmZmZmZiUyMiUyRiUzRSUzQyUyRmxpbmVhckdyYWRpZW50JTNFJTNDcmVjdCUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjElMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwZmlsbCUzRCUyMnVybCglMjNnKSUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRScpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMSUyMDElMjIlM0UlM0NsaW5lYXJHcmFkaWVudCUyMGlkJTNEJTIyZyUyMiUyMHgxJTNEJTIyMCUyNSUyMiUyMHkxJTNEJTIyMCUyNSUyMiUyMHgyJTNEJTIyMCUyNSUyMiUyMHkyJTNEJTIyMTAwJTI1JTIyJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjElMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzYzRjNGM0JTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjMlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzZmZhNTAwJTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjUlMjUlMjIlMjBzdG9wLWNvbG9yJTNEJTIyJTIzMDA4MDAwJTIyJTJGJTNFJTNDc3RvcCUyMG9mZnNldCUzRCUyMjk1JTI1JTIyJTIwc3RvcC1jb2xvciUzRCUyMiUyM2ZmZmZmZiUyMiUyRiUzRSUzQyUyRmxpbmVhckdyYWRpZW50JTNFJTNDcmVjdCUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjElMjIlMjBoZWlnaHQlM0QlMjIxJTIyJTIwZmlsbCUzRCUyMnVybCglMjNnKSUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRScpOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTXlXZWJGb250JzsKICBzcmM6IHVybCh3ZWJmb250LmVvdCk7CiAgc3JjOiB1cmwoJ3dlYmZvbnQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgdXJsKCd3ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgZm9ybWF0KCd0cnVldHlwZScpIHVybCgnd2ViZm9udC50dGYnKSwgdXJsKCd3ZWJmb250LnN2ZyNzdmdGb250TmFtZScpIGZvcm1hdCgnc3ZnJyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/variables-in-at-rules.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKQG5hbWVzcGFjZSBsZXNzICJodHRwOi8vbGVzc2Nzcy5vcmciOwpAa2V5ZnJhbWVzIGVubGFyZ2VyIHsKICBmcm9tIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICB9CiAgdG8gewogICAgZm9udC1zaXplOiAxNXB4OwogIH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgcmVkdWNlciB7CiAgZnJvbSB7CiAgICBmb250LXNpemU6IDEzcHg7CiAgfQogIHRvIHsKICAgIGZvbnQtc2l6ZTogMTBweDsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/variables.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnZhcmlhYmxlcyB7CiAgd2lkdGg6IDE0Y207Cn0KLnZhcmlhYmxlLWRhc2ggLnEgewogIHBhZGRpbmc6IDMwcHggMTVweDsKfQoudmFyaWFibGVzIHsKICBoZWlnaHQ6IDI0cHg7CiAgY29sb3I6ICM4ODg7CiAgZm9udC1mYW1pbHk6ICJUcmVidWNoZXQgTVMiLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwogIHF1b3RlczogIn4iICJ+IjsKfQoucmVkZWYgewogIHplcm86IDA7Cn0KLnJlZGVmIC5pbml0aW9uIHsKICB0aHJlZTogMzsKfQoudmFsdWVzIHsKICBtaW51cy1vbmU6IC0xOwogIGZvbnQtZmFtaWx5OiAnVHJlYnVjaGV0JywgJ1RyZWJ1Y2hldCcsICdUcmVidWNoZXQnOwogIGNvbG9yOiAjODg4ICFpbXBvcnRhbnQ7CiAgc2FtZS1jb2xvcjogIzg4OCAhaW1wb3J0YW50OwogIHNhbWUtYWdhaW46ICM4ODggIWltcG9ydGFudDsKICBtdWx0aS1pbXBvcnRhbnQ6ICM4ODggIzg4OCwgJ1RyZWJ1Y2hldCcgIWltcG9ydGFudDsKICBtdWx0aTogc29tZXRoaW5nICdBJywgQiwgQywgJ1RyZWJ1Y2hldCc7Cn0KLnZhcmlhYmxlLW5hbWVzIC5xdW90ZWQgewogIG5hbWU6ICdoZWxsbyc7Cn0KLnZhcmlhYmxlLW5hbWVzIC51bnF1b3RlZCB7CiAgbmFtZTogJ2hlbGxvJzsKfQoudmFyaWFibGUtbmFtZXMgLmNvbG9yLWtleXdvcmQgewogIG5hbWU6ICdoZWxsbyc7Cn0KLmFscGhhIHsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDIpOwp9Ci50ZXN0LXJ1bGVQb2xsdXRpb24gewogIGE6ICduby1wb2xsdXRpb24nOwp9Ci51bml0cyB7CiAgd2lkdGg6IDFweDsKICBzYW1lLXVuaXQtYXMtcHJldmlvdXNseTogMXB4OwogIHNxdWFyZS1waXhlbC1kaXZpZGVkOiAxcHg7CiAgb2RkLXVuaXQ6IDI7CiAgcGVyY2VudGFnZTogNTAwJTsKICBwaXhlbHM6IDUwMHB4OwogIGNvbnZlcnNpb24tbWV0cmljLWE6IDMwbW07CiAgY29udmVyc2lvbi1tZXRyaWMtYjogM2NtOwogIGNvbnZlcnNpb24taW1wZXJpYWw6IDNpbjsKICBjdXN0b20tdW5pdDogNDIwb2N0b2NhdHM7CiAgY3VzdG9tLXVuaXQtY2FuY2VsbGluZzogMThkb2dzOwogIG1peC11bml0czogMnB4OwogIGludmFsaWQtdW5pdHM6IDFweDsKfQoudW5pdHMgLmZhbGxiYWNrIHsKICBkaXYtcHgtMTogMTBweDsKICBkaXYtcHgtMjogMXB4OwogIHN1Yi1weC0xOiAxMi42cHg7CiAgc3ViLWNtLTE6IDkuNjY2NjI1Y207CiAgbXVsLXB4LTE6IDE5LjZweDsKICBtdWwtZW0tMTogMTkuNmVtOwogIG11bC1lbS0yOiAxOTZlbTsKICBtdWwtY20tMTogMTk2Y207CiAgYWRkLXB4LTE6IDE1LjRweDsKICBhZGQtcHgtMjogMzkzLjM1Mjc1NTkxcHg7CiAgbXVsLXB4LTI6IDE0MHB4OwogIG11bC1weC0zOiAxNDBweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/css/_main/whitespace.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LndoaXRlc3BhY2UgewogIGNvbG9yOiB3aGl0ZTsKfQoud2hpdGVzcGFjZSB7CiAgY29sb3I6IHdoaXRlOwp9Ci53aGl0ZXNwYWNlIHsKICBjb2xvcjogd2hpdGU7Cn0KLndoaXRlc3BhY2UgewogIGNvbG9yOiB3aGl0ZTsKfQoud2hpdGVzcGFjZSB7CiAgY29sb3I6IHdoaXRlIDsKfQoud2hpdGUsCi5zcGFjZSwKLm1hbmlhIHsKICBjb2xvcjogd2hpdGU7Cn0KLm5vLXNlbWktY29sdW1uIHsKICBjb2xvcjogd2hpdGU7Cn0KLm5vLXNlbWktY29sdW1uIHsKICBjb2xvcjogd2hpdGU7CiAgd2hpdGUtc3BhY2U6IHByZTsKfQoubm8tc2VtaS1jb2x1bW4gewogIGJvcmRlcjogMnB4IHNvbGlkIHdoaXRlOwp9Ci5uZXdsaW5lcyB7CiAgYmFja2dyb3VuZDogdGhlLAogICAgICAgICAgICAgIGdyZWF0LAogICAgICAgICAgICAgIHdhbGw7CiAgYm9yZGVyOiAycHgKICAgICAgICAgIHNvbGlkCiAgICAgICAgICBibGFjazsKfQouc2VsIC5uZXdsaW5lX3dzIC50YWJfd3MgewogIGNvbG9yOiB3aGl0ZTsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0NSAtMjM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/3rd-party/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/3rd-party/bootstrap4.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiYm9vdHN0cmFwLWxlc3MtcG9ydC9sZXNzL2Jvb3RzdHJhcCI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/3rd-party/uikit.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAidWlraXQvc3JjL2xlc3MvdWlraXQiOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/compression/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/compression/compression.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2NvbG91cnMgewogIGNvbG9yMTogI2ZlYTsKICBjb2xvcjI6ICNmZmVlYWE7CiAgY29sb3IzOiByZ2JhKDI1NSwgMjM4LCAxNzAsIDAuMSk7CiAgQGNvbG9yMTogI2ZlYTsKICBzdHJpbmc6ICJAe2NvbG9yMX0iOwogIC8qIGNvbW1lbnRzIGFyZSBzdHJpcHBlZCAqLwogIC8vIGJvdGggdHlwZXMhCiAgLyohIGJ1dCBub3QgdGhpcyB0eXBlCiAgICAgIE5vdGUgcHJlc2VydmVkIHdoaXRlc3BhY2UKICAqLwp9CmRpbWVuc2lvbnMgewogIHZhbDogMC4xcHg7CiAgdmFsOiAwZW07CiAgdmFsOiA0Y207CiAgdmFsOiAwLjI7CiAgdmFsOiA1OwogIGFuZ2xlcy1tdXN0LWhhdmUtdW5pdDogMGRlZzsKICBkdXJhdGlvbnMtbXVzdC1oYXZlLXVuaXQ6IDBzOwogIGxlbmd0aC1kb2VzbnQtaGF2ZS11bml0OiAwcHg7CiAgd2lkdGg6IGF1dG9cOTsKfQpAcGFnZSAgewogIG1hcmtzOiBub25lOwpAdG9wLWxlZnQtY29ybmVyIHsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9CkB0b3AtbGVmdCB7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQp9Ci5zaGFkb3cgXiAuZG9tLApib2R5IF5eIC5zaGFkb3cgewogIGRpc3BsYXk6IGRvbmU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/data/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/data/data-uri-fail.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/data/image.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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U3v/APtyCCCCCO+++6CD9tLCS2+++OCpCVCBCyyhylaHiCBCCCCGe+++yCDf999LDC2++++lCcJTCCCxCBCpCQJCCGe++++iCDf9R999LDCS2+62P888f7IhCZCvKPMP+++++yCCHd99BR999vDCCy188888885AOtK4+P3j+++yCCDP999xBBB1999PDU88888888j8P9pr1V496yCDBHf999hBtBBBR9999l88888888n8nWp8fvfCBCDTV9995BBB9tBBBBx9938888888708XEy/8880Mrz+d95hBBBN899JBBBBxe/888888v8AO/JwFuPPPPPPOOYQQQRXfdPPfbSQQQQ6d/8Az9/3/wA/8sd5FdZbz8wwBBBBN998AQ8899tJBBRjFHEyUnQGzgdp9hWxhwBBBBN99984AAA08899tNBBg18vro5/j0PfvfoBBBBFN99984gAOAAAQ088999NNBBBDJ0AATAQ/RBBFN999988wAAA+uIAAAQw8899999NNNNNOcuetN99999884wAAAAO+++uKAAAAw088899999999999998888wgAAAAO++C2+++uKAAAAAQw0888888888888wwAAAAAAO++++CCS2+++uOCAAAAAAAAAQwwAAAAAAAAAAGe++++yC/8QAJhEBAAICAgEDBAMBAAAAAAAAAQARITEQQUAgUWEwUHGRcIHRof/aAAgBAwEBPxD7r3B7/H2eyo5KiFOmDrZvrERI/ZU7w7ht4fmELvyzKzuT3+PsJRst+qmFGxyejqKmnJUB1mWdtvtojstnqrT3Guuh+/HBzQkwZiUOjVXLd/b/AHlj+07hN4fmXD/LN8Mx2Kz/ALMgE1NcEwaaMMQ4mbhTfv8AuEEaeMRRs+Z1YR5d8vtwFQwlRAU1H14zLqtXymWZI4qojvyHfBvkjge4fTPuOAau/wAzHPEfQbj5Dvg3z1EIunX9QAXK41sorfdxKa4fQb8l3wb5Yt2xgxa/8lo0o7jALoZorWz/ACFWg5PJd8G+XfJvgDayWS0pCkFu3PXku+DfBv0HFudTBVn6iqlrz15LKuF2p8Eo69HXBx1wAvUAKWP2eThgA16EHcU1wDx1wJASg0QT2FjmWEqLsHse78evL6DL8kSo8UL4SXT2hVlXLg10eNiPovA5RzDYIlkRGmdcPoNgjjwRi/on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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/data/image.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiPgogIDxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjQwIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9ImJsdWUiIC8+Cjwvc3ZnPgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/data/page.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+PGgxPlRoaXMgcGFnZSBpcyAxMDAlIEF3ZXNvbWUuPC9oMT48L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/debug/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/debug/import/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/debug/import/test.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIklTTy04ODU5LTEiOwoKLm1peGluX2ltcG9ydDEoKSB7CiAgICBAbWVkaWEgYWxsIHsKICAgICAgICAudHN0IHsKICAgICAgICAgICAgY29sb3I6IGJsYWNrOwogICAgICAgICAgICBAbWVkaWEgc2NyZWVuIHsKICAgICAgICAgICAgICAgIGNvbG9yOiByZWQ7CiAgICAgICAgICAgICAgICAudHN0MyB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCi5taXhpbl9pbXBvcnQyKCkgewogICAgLnRzdDIgewogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgfQp9CgoudHN0MyB7CiAgICBjb2xvcjogZ3JleTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/debug/linenumbers.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKCkBpbXBvcnQgImltcG9ydC90ZXN0Lmxlc3MiOwoKLnN0YXJ0KCkgewogIC50ZXN0LXJ1bGUyIHsKICAgICAgY29sb3I6IHJlZDsKICB9Cn0KCi5taXgoKSB7CiAgICBjb2xvcjogYmxhY2s7Cn0KCi50ZXN0LXJ1bGUxIHsKICAubWl4KCk7Cn0KCi5zdGFydCgpOwoKLm1peGluX2ltcG9ydDEoKTsKCi5taXhpbl9pbXBvcnQyKCk7CgpAZGVidWc6IDE7CiYgd2hlbiAoQGRlYnVnID0gMSkgewogIC50ZXN0LXJ1bGUgewogICAgY29sb3I6IHJlZDsKICAgICYgd2hlbiAoQGRlYnVnID0gMSkgewogICAgICB3aWR0aDogMjsKICAgIH0KICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/filemanagerPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/filemanagerPlugin/colors.test</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNvbG9yOiByZWQ7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/filemanagerPlugin/filemanager.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAidGVzdC50ZXN0IjsKLnRlc3QtcnVsZSB7CiAgICBjb2xvcjogQGNvbG9yOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/globalVars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/globalVars/extended.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInRoZS1ib3JkZXIiOiAiMXB4IiwKICAgICJiYXNlLWNvbG9yIjogIiMxMTEiLAogICAgInJlZCI6ICIjODQyMjEwIgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/globalVars/extended.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CiAgY29sb3I6IChAYmFzZS1jb2xvciAqIDMpOwogIGJvcmRlci1sZWZ0OiBAdGhlLWJvcmRlcjsKICBib3JkZXItcmlnaHQ6IChAdGhlLWJvcmRlciAqIDIpOwp9CiNmb290ZXIgewogIGNvbG9yOiAoQGJhc2UtY29sb3IgKyAjMDAzMzAwKTsKICBib3JkZXItY29sb3I6IEByZWQ7Cn0KQHJlZDogZGVzYXR1cmF0ZShyZWQsIDEwJSk7IC8vIGxlc3MgZmlsZSBvdmVycmlkZXMgcGFzc2VkIGluIGNvbG9yIDwtIG5vdGUgbGluZSBjb21tZW50IG9uIGxhc3QgbGluZSB0byBjaGVjayBpdCBpcyBva2F5]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/globalVars/simple.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm15LWNvbG9yIjogInJlZCIKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/globalVars/simple.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsYXNzIHsKICBjb2xvcjogQG15LWNvbG9yOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/include-path-string/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/include-path-string/include-path-string.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGF0YS11cmkgewogIHByb3BlcnR5OiBkYXRhLXVyaSgnaW1hZ2Uuc3ZnJyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/include-path/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/include-path/include-path.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0LXRlc3QtZSI7CgpkYXRhLXVyaSB7CiAgcHJvcGVydHk6IGRhdGEtdXJpKCdpbWFnZS5zdmcnKTsKfQppbWFnZS1zaXplIHsKICBwcm9wZXJ0eTogaW1hZ2Utc2l6ZSgnaW1hZ2Uuc3ZnJyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/legacy/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/legacy/legacy.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7CiAgLnRlc3QtcnVsZS1tYXRoLWFuZC11bml0cyB7CiAgICBmb250OiBpZ25vcmVzIDAvMCBydWxlczsKICAgIHRlc3QtZGl2aXNpb246IDQgLyAyICsgNWVtOwogICAgc2ltcGxlOiAxcHggKyAxcHg7CiAgfQp9CiN1bml0cyB7CiAgdDE6ICgyZW0vMWVtKSArIDIwOwogIHQyOiAyMCArICgyZW0vMWVtKTsKICB0MzogMmVtLzFlbTsKICB0NDogKDJlbS8xcHgpICsgMjA7CiAgdDU6IDIwICsgKDJlbS8xcHgpOwogIHQ2OiAyZW0vMXB4OwogIHQ3OiAoMmVtKjFlbSkgKyAyMDsKICB0ODogMjAgKyAoMmVtKjFlbSk7CiAgdDk6IDJlbSoxZW07CiAgdDEwOiAoMmVtKjFweCkgKyAyMDsKICB0MTE6IDIwICsgKDJlbSoxcHgpOwogIHQxMjogMmVtKjFweDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/parens-division/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/parens-division/media-math.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhcjogMTY7CgpAbWVkaWEgKG1pbi13aWR0aDogQHZhciArIDEpIHsKICAuZm9vIHsgYmFyOiAxOyB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiBAdmFyIC8gOSkgewogIC5mb28geyBiYXI6IDE7IH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/parens-division/mixins-args.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIChAYTogMXB4LCBAYjogNTAlKSB7CiAgd2lkdGg6IChAYSAqIDUpOwogIGhlaWdodDogKEBiIC0gMSUpOwogIGRlcHRoOiBAYiAtIDElOwp9CgoubWl4aW5hIChAc3R5bGUsIEB3aWR0aCwgQGNvbG9yOiBibGFjaykgewogICAgYm9yZGVyOiBAd2lkdGggQHN0eWxlIEBjb2xvcjsKfQoKLm1peGlueQooQGE6IDAsIEBiOiAwKSB7CiAgbWFyZ2luOiBAYTsKICBwYWRkaW5nOiBAYjsKfQoKLmhpZGRlbigpIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7IC8vIGFzZAp9CgojaGlkZGVuIHsKICAuaGlkZGVuOwp9CgojaGlkZGVuMSB7CiAgLmhpZGRlbigpOwp9CgoudHdvLWFyZ3MgewogIGNvbG9yOiBibHVlOwogIC5taXhpbigycHgsIDEwMCUpOwogIC5taXhpbmEoZG90dGVkLCAycHgpOwp9Cgoub25lLWFyZyB7CiAgLm1peGluKDNweCk7Cn0KCi5uby1wYXJlbnMgewogIC5taXhpbjsKfQoKLm5vLWFyZ3MgewogIC5taXhpbigpOwp9CgoudmFyLWFyZ3MgewogIEB2YXI6IDk7CiAgLm1peGluKEB2YXIsIChAdmFyICogMikgLyAyKTsKfQoKLm11bHRpLW1peCB7CiAgLm1peGluKDJweCwgMzAlKTsKICAubWl4aW55KDQsIDUpOwp9CgoubWF4YShAYXJnMTogMTAsIEBhcmcyOiAjZjAwKSB7CiAgcGFkZGluZzogKEBhcmcxICogMnB4KTsKICBjb2xvcjogQGFyZzI7Cn0KCmJvZHkgewogIC5tYXhhKDE1KTsKfQoKQGdsb2I6IDU7Ci5nbG9iYWwtbWl4aW4oQGE6MikgewogIHdpZHRoOiAoQGdsb2IgKyBAYSk7Cn0KCi5zY29wZS1taXggewogIC5nbG9iYWwtbWl4aW4oMyk7Cn0KCi5uZXN0ZWQtcnVsZXNldCAoQHdpZHRoOiAyMDBweCkgewogICAgd2lkdGg6IEB3aWR0aDsKICAgIC5jb2x1bW4geyBtYXJnaW46IEB3aWR0aDsgfQp9Ci5jb250ZW50IHsKICAgIC5uZXN0ZWQtcnVsZXNldCg2MDBweCk7Cn0KCi8vCgouc2FtZS12YXItbmFtZTIoQHJhZGl1cykgewogIHJhZGl1czogQHJhZGl1czsKfQouc2FtZS12YXItbmFtZShAcmFkaXVzKSB7CiAgLnNhbWUtdmFyLW5hbWUyKEByYWRpdXMpOwp9CiNzYW1lLXZhci1uYW1lIHsKICAuc2FtZS12YXItbmFtZSg1cHgpOwp9CgovLwoKLnZhci1pbnNpZGUgKCkgewogICAgQHZhcjogMTBweDsKICAgIHdpZHRoOiBAdmFyOwp9CiN2YXItaW5zaWRlIHsgLnZhci1pbnNpZGU7IH0KCi5taXhpbi1hcmd1bWVudHMgKEB3aWR0aDogMHB4LCAuLi4pIHsKICAgIGJvcmRlcjogQGFyZ3VtZW50czsKICAgIHdpZHRoOiBAd2lkdGg7Cn0KCi5hcmd1bWVudHMgewogICAgLm1peGluLWFyZ3VtZW50cygxcHgsIHNvbGlkLCBibGFjayk7Cn0KLmFyZ3VtZW50czIgewogICAgLm1peGluLWFyZ3VtZW50cygpOwp9Ci5hcmd1bWVudHMzIHsKICAgIC5taXhpbi1hcmd1bWVudHM7Cn0KCi5taXhpbi1hcmd1bWVudHMyIChAd2lkdGgsIEByZXN0Li4uKSB7CiAgICBib3JkZXI6IEBhcmd1bWVudHM7CiAgICByZXN0OiBAcmVzdDsKICAgIHdpZHRoOiBAd2lkdGg7Cn0KLmFyZ3VtZW50czQgewogICAgLm1peGluLWFyZ3VtZW50czIoMCwgMSwgMiwgMywgNCk7Cn0KCi8vIEVkZ2UgY2FzZXMKCi5lZGdlLWNhc2UgewogICAgLm1peGluLWFyZ3VtZW50cygieyIpOwp9CgovLyBEaXZpc2lvbiB2cy4gTGl0ZXJhbCBTbGFzaAouYm9yZGVyLXJhZGl1cyhAcjogMnB4LzVweCkgewogIGJvcmRlci1yYWRpdXM6IEByOwp9Ci5zbGFzaC12cy1tYXRoIHsKICAuYm9yZGVyLXJhZGl1cygpOwogIC5ib3JkZXItcmFkaXVzKDVweC8xMHB4KTsKICAuYm9yZGVyLXJhZGl1cygoM3B4ICogMikpOwp9Ci8vIHNlbWktY29sb24gdnMgY29tbWEgZm9yIGRlbGltaXRpbmcKCi5taXhpbi10YWtlcy1vbmUoQGEpIHsKICAgIG9uZTogQGE7Cn0KCi5taXhpbi10YWtlcy10d28oQGE7IEBiKSB7CiAgICBvbmU6IEBhOwogICAgdHdvOiBAYjsKfQoKLmNvbW1hLXZzLXNlbWktY29sb24gewogICAgLm1peGluLXRha2VzLXR3byhAYSA6IGE7IEBiIDogYiwgYyk7CiAgICAubWl4aW4tdGFrZXMtdHdvKEBhIDogZCwgZTsgQGIgOiBmKTsKICAgIC5taXhpbi10YWtlcy1vbmUoQGE6IGcpOwogICAgLm1peGluLXRha2VzLW9uZShAYSA6IGg7KTsKICAgIC5taXhpbi10YWtlcy1vbmUoaSk7CiAgICAubWl4aW4tdGFrZXMtb25lKGo7KTsKICAgIC5taXhpbi10YWtlcy10d28oaywgbCk7CiAgICAubWl4aW4tdGFrZXMtb25lKG0sIG47KTsKICAgIC5taXhpbi10YWtlcy10d28obywgcDsgcSk7CiAgICAubWl4aW4tdGFrZXMtdHdvKHIsIHM7IHQ7KTsKfQoKLm1peGluLWNvbmZsaWN0KEBhOmRlZkEsIEBiOmRlZkIsIEBjOmRlZkMpIHsKICB0aHJlZTogQGEsIEBiLCBAYzsKfQoKLm1peGluLWNvbmZsaWN0KEBhOmRlZkEsIEBiOmRlZkIsIEBjOmRlZkMsIEBkOmRlZkQpIHsKICBmb3VyOiBAYSwgQGIsIEBjLCBAZDsKfQoKI25hbWVkLWNvbmZsaWN0IHsKICAubWl4aW4tY29uZmxpY3QoMTEsIDEyLCAxMywgQGE6YSk7CiAgLm1peGluLWNvbmZsaWN0KEBhOmEsIDIxLCAyMiwgMjMpOwp9CkBhOiAzcHg7Ci5taXhpbi1kZWZhdWx0LWFyZyhAYTogMXB4LCBAYjogQGEsIEBjOiBAYikgewogIGRlZmF1bHRzOiAxcHggMXB4IDFweDsKICBkZWZhdWx0czogMnB4IDJweCAycHg7Cn0KCi50ZXN0LXJ1bGUtbWl4aW4tZGVmYXVsdC1hcmcgewogIC5taXhpbi1kZWZhdWx0LWFyZygpOwogIC5taXhpbi1kZWZhdWx0LWFyZygycHgpOwp9CgoubWl4aW4tY29tbWEtZGVmYXVsdDEoQGNvbG9yOyBAcGFkZGluZzsgQG1hcmdpbjogMiwgMiwgMiwgMikgewogIG1hcmdpbjogQG1hcmdpbjsKfQouc2VsZWN0b3IgewogIC5taXhpbi1jb21tYS1kZWZhdWx0MSgjMzNhY2ZlOyA0KTsKfQoubWl4aW4tY29tbWEtZGVmYXVsdDIoQG1hcmdpbjogMiwgMiwgMiwgMjspIHsKICBtYXJnaW46IEBtYXJnaW47Cn0KLnNlbGVjdG9yMiB7CiAgLm1peGluLWNvbW1hLWRlZmF1bHQyKCk7Cn0KLm1peGluLWNvbW1hLWRlZmF1bHQzKEBtYXJnaW46IDIsIDIsIDIsIDIpIHsKICBtYXJnaW46IEBtYXJnaW47Cn0KLnNlbGVjdG9yMyB7CiAgLm1peGluLWNvbW1hLWRlZmF1bHQzKDQsMiwyLDIpOwp9CgoudGVzdC1ydWxlLWNhbGxpbmctb25lLWFyZy1taXhpbihAYSkgewp9CgoudGVzdC1ydWxlLWNhbGxpbmctb25lLWFyZy1taXhpbihAYSwgQGIsIEByZXN0Li4uKSB7Cn0KCmRpdiB7CiAgLnRlc3QtcnVsZS1jYWxsaW5nLW9uZS1hcmctbWl4aW4oMSk7Cn0KCm1peGlucy1hcmdzLWV4cGFuZC1vcC0gewogIEB4OiAxLCAyLCAzOwogIEB5OiA0ICA1ICA2OwoKICAmMSB7Lm0zKEB4Li4uKX0KICAmMiB7Lm0zKEB5Li4uKX0KICAmMyB7LndyKGEsIGIsIGMpfQogICY0IHsud3IoYTsgYjsgYywgZCl9CiAgJjUgey53cihAeC4uLil9CiAgJjYgey5tNCgwOyBAeC4uLil9CiAgJjcgey5tNChAeC4uLiwgQGE6IDApfQogICY4IHsubTQoQGI6IDEuNTsgQHguLi4pfQogICY5IHsuYWEoQHksIEB4Li4uLCBhbmQgYWdhaW4sIEB5Li4uKX0KCiAgLm0zKEBhLCBAYiwgQGMpIHsKICAgIG0zOiBAYSwgQGIsIEBjOwogIH0KCiAgLm00KEBhLCBAYiwgQGMsIEBkKSB7CiAgICBtNDogQGEsIEBiLCBAYywgQGQ7CiAgfQoKICAud3IoQGEuLi4pIHsKICAgICZhIHsubTMoQGEuLi4pfQogICAgJmIgey5tNCgwLCBAYS4uLil9CiAgICAmYyB7Lm00KEBhLi4uLCA0KX0KICB9CgogIC5hYShAYS4uLikgewogICAgYWE6IEBhOwogICAgYTQ6IGV4dHJhY3QoQGEsIDUpOwogICAgYTg6IGV4dHJhY3QoQGEsIDgpOwogIH0KfQojdGVzdC1taXhpbi1tYXRjaGluZy13aGVuLWRlZmF1bHQtMjY0NSB7CiAgLm1peGluKEBoZWlnaHQpIHsKICAgIGhlaWdodDogQGhlaWdodDsKICB9CgogIC5taXhpbihAd2lkdGgsIEBoZWlnaHQ6IDEwcHgpIHsKICAgIHdpZHRoOiBAd2lkdGg7CgogICAgLm1peGluKEBoZWlnaHQ6IEBoZWlnaHQpOwogIH0KCiAgLm1peGluKEBoZWlnaHQ6IDIwcHgpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/parens-division/new-division.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnVuaXRzIHsKICBmb250OiAxLjJyZW0vMnJlbTsKICBmb250OiA4dncvOXZ3OwogIGZvbnQ6IDEwdmgvMTJ2aDsKICBmb250OiAxMnZtLzE1dm07CiAgZm9udDogMTJ2bWluLzE1dm1pbjsKICBmb250OiAxLjJjaC8xLjVjaDsKfQoKLm1hdGggewogIGE6IDEgKyAxOwogIGI6IDJweCAvIDI7CiAgYzogMnB4IC4vIDI7CiAgZDogKDEwcHggLyAxMHB4KTsKICBlOiAoKDE2cHggLi8gMikgLyAyKSAvIDI7CiAgZjogKCgxNnB4IC4vIDIpIC8gMikgLi8gMjsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/parens-division/parens.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgQHZhcjogMXB4OwogIGJvcmRlcjogKEB2YXIgKiAyKSBzb2xpZCBibGFjazsKICBtYXJnaW46IChAdmFyICogMSkgKEB2YXIgKyAyKSAoNCAqIDQpIDM7CiAgd2lkdGg6ICg2ICogNik7CiAgcGFkZGluZzogMnB4ICg2ICogNnB4KTsKfQoKLm1vcmUtcGFyZW5zIHsKICBAdmFyOiAoMiAqIDIpOwogIHBhZGRpbmc6ICgyICogQHZhcikgNCA0IChAdmFyICogMXB4KTsKICB3aWR0aC1hbGw6ICgoQHZhciAqIEB2YXIpICogNik7CiAgd2lkdGgtZmlyc3Q6ICgoQHZhciAqIEB2YXIpKSAqIDY7CiAgd2lkdGgta2VlcDogKEB2YXIgKiBAdmFyKSAqIDY7CiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAoMjV2aCAtIDIwcHgpKTsKICBoZWlnaHQta2VlcDogKDcgKiA3KSArICg4ICogOCk7CiAgaGVpZ2h0LWFsbDogKCg3ICogNykgKyAoOCAqIDgpKTsKICBoZWlnaHQtcGFydHM6ICgoNyAqIDcpKSArICgoOCAqIDgpKTsKICBtYXJnaW4ta2VlcDogKDQgKiAoNSArIDUpIC8gMikgLSAoQHZhciAqIDIpOwogIG1hcmdpbi1wYXJ0czogKCg0ICogKDUgKyA1KSAvIDIpKSAtICgoQHZhciAqIDIpKTsKICBtYXJnaW4tYWxsOiAoKDQgKiAoNSArIDUpIC8gMikgKyAoLShAdmFyICogMikpKTsKICBib3JkZXItcmFkaXVzLWtlZXA6IDRweCAqICgxICsgMSkgLyBAdmFyICsgM3B4OwogIGJvcmRlci1yYWRpdXMtcGFydHM6ICgoNHB4ICogKDEgKyAxKSkpIC8gKChAdmFyICsgM3B4KSk7CiAgYm9yZGVyLXJhZGl1cy1hbGw6ICg0cHggKiAoMSArIDEpIC8gQHZhciArIDNweCk7CiAgLy8gbWFyZ2luOiAoNiAqIDYpcHg7Cn0KCi5uZWdhdGl2ZSB7CiAgQHZhcjogMTsKICBuZWctdmFyOiAtQHZhcjsgLy8gLTEgPwogIG5lZy12YXItcGFyZW46IC0oQHZhcik7IC8vIC0oMSkgPwp9CgoubmVzdGVkLXBhcmVucyB7CiAgd2lkdGg6IDIgKiAoNCAqICgyICsgKDEgKyA2KSkpIC0gMTsKICBoZWlnaHQ6ICgoMiArIDMpICogKDIgKyAzKSAvICg5IC0gNCkpICsgMTsKfQoKLm1peGVkLXVuaXRzIHsKICBtYXJnaW46IDJweCA0ZW0gMSA1cGM7CiAgcGFkZGluZzogKDJweCArIDRweCkgMWVtIDJweCAyOwp9CgoudGVzdC1ydWxlLWZhbHNlLW5lZ2F0aXZlcyB7CiAgYTogfiIoIjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict-legacy/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict-legacy/css.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKZGl2IHsgY29sb3I6IGJsYWNrOyB9CmRpdiB7IHdpZHRoOiA5OSU7IH0KCiogewogIG1pbi13aWR0aDogNDVlbTsKfQoKaDEsIGgyID4gYSA+IHAsIGgzIHsKICBjb2xvcjogbm9uZTsKfQoKZGl2LmNsYXNzIHsKICBjb2xvcjogYmx1ZTsKfQoKZGl2I2lkIHsKICBjb2xvcjogZ3JlZW47Cn0KCi5jbGFzcyNpZCB7CiAgY29sb3I6IHB1cnBsZTsKfQoKLm9uZS50d28udGhyZWUgewogIGNvbG9yOiBncmV5Owp9CgpAbWVkaWEgcHJpbnQgewogICogewogICAgZm9udC1zaXplOiAzZW07CiAgfQp9CgpAbWVkaWEgc2NyZWVuIHsKICAqIHsKICAgIGZvbnQtc2l6ZTogMTBweDsKICB9Cn0KCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnR2FyYW1vbmQgUHJvJzsKfQoKYTpob3ZlciwgYTpsaW5rIHsKICBjb2xvcjogIzk5OTsKfQoKcCwgcDpmaXJzdC1jaGlsZCB7CiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KCnE6bGFuZyhubykgewogIHF1b3Rlczogbm9uZTsKfQoKcCArIGgxIHsKICBmb250LXNpemU6ICsyLjJlbTsKfQoKI3Nob3J0aGFuZHMgewogIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgZm9udDogMTJweC8xNnB4IEFyaWFsOwogIGZvbnQ6IDEwMCUvMTZweCBBcmlhbDsKICBtYXJnaW46IDFweCAwOwogIHBhZGRpbmc6IDAgYXV0bzsKfQoKI21vcmUtc2hvcnRoYW5kcyB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDFweCAwIDJweCAwOwogIGZvbnQ6IG5vcm1hbCBzbWFsbC8yMHB4ICdUcmVidWNoZXQgTVMnLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwogIGZvbnQ6IDAvMCBhOwogIGJvcmRlci1yYWRpdXM6IDVweCAvIDEwcHg7Cn0KCi5taXNjIHsKICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjazsKICB3aWR0aDogLjFlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5OTk4OwogIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmVkKSwgdG8oYmx1ZSkpOwogIG1hcmdpbjogOwogIC5uZXN0ZWQtbXVsdGlwbGUgewogICAgbXVsdGlwbGUtc2VtaS1jb2xvbnM6IHllczs7Ozs7OwogIH07CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgd2lkdGg6IGF1dG9cOTsKfQoKI2ltcG9ydGFudCB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMDAlIWltcG9ydGFudDsKICBoZWlnaHQ6IDIwcHggISBpbXBvcnRhbnQ7Cn0KCi5kZWYtZm9udChAbmFtZSkgewogICAgQGZvbnQtZmFjZSB7CiAgICAgICAgZm9udC1mYW1pbHk6IEBuYW1lCiAgICB9Cn0KCi5kZWYtZm9udChmb250LWEpOwouZGVmLWZvbnQoZm9udC1iKTsKCi7DpsO4w6UgewogIG1hcmdpbjogMDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict-legacy/media-math.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhcjogMTY7CgpAbWVkaWEgKG1pbi13aWR0aDogQHZhciArIDEpIHsKICAuZm9vIHsgYmFyOiAxOyB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiBAdmFyIC8gOSkgewogIC5mb28geyBiYXI6IDE7IH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict-legacy/mixins-args.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIChAYTogMXB4LCBAYjogNTAlKSB7CiAgd2lkdGg6IChAYSAqIDUpOwogIGhlaWdodDogKEBiIC0gMSUpOwp9CgoubWl4aW5hIChAc3R5bGUsIEB3aWR0aCwgQGNvbG9yOiBibGFjaykgewogICAgYm9yZGVyOiBAd2lkdGggQHN0eWxlIEBjb2xvcjsKfQoKLm1peGlueQooQGE6IDAsIEBiOiAwKSB7CiAgbWFyZ2luOiBAYTsKICBwYWRkaW5nOiBAYjsKfQoKLmhpZGRlbigpIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7IC8vIGFzZAp9CgojaGlkZGVuIHsKICAuaGlkZGVuOwp9CgojaGlkZGVuMSB7CiAgLmhpZGRlbigpOwp9CgoudHdvLWFyZ3MgewogIGNvbG9yOiBibHVlOwogIC5taXhpbigycHgsIDEwMCUpOwogIC5taXhpbmEoZG90dGVkLCAycHgpOwp9Cgoub25lLWFyZyB7CiAgLm1peGluKDNweCk7Cn0KCi5uby1wYXJlbnMgewogIC5taXhpbjsKfQoKLm5vLWFyZ3MgewogIC5taXhpbigpOwp9CgoudmFyLWFyZ3MgewogIEB2YXI6IDk7CiAgLm1peGluKEB2YXIsIChAdmFyICogMikpOwp9CgoubXVsdGktbWl4IHsKICAubWl4aW4oMnB4LCAzMCUpOwogIC5taXhpbnkoNCwgNSk7Cn0KCi5tYXhhKEBhcmcxOiAxMCwgQGFyZzI6ICNmMDApIHsKICBwYWRkaW5nOiAoQGFyZzEgKiAycHgpOwogIGNvbG9yOiBAYXJnMjsKfQoKYm9keSB7CiAgLm1heGEoMTUpOwp9CgpAZ2xvYjogNTsKLmdsb2JhbC1taXhpbihAYToyKSB7CiAgd2lkdGg6IChAZ2xvYiArIEBhKTsKfQoKLnNjb3BlLW1peCB7CiAgLmdsb2JhbC1taXhpbigzKTsKfQoKLm5lc3RlZC1ydWxlc2V0IChAd2lkdGg6IDIwMHB4KSB7CiAgICB3aWR0aDogQHdpZHRoOwogICAgLmNvbHVtbiB7IG1hcmdpbjogQHdpZHRoOyB9Cn0KLmNvbnRlbnQgewogICAgLm5lc3RlZC1ydWxlc2V0KDYwMHB4KTsKfQoKLy8KCi5zYW1lLXZhci1uYW1lMihAcmFkaXVzKSB7CiAgcmFkaXVzOiBAcmFkaXVzOwp9Ci5zYW1lLXZhci1uYW1lKEByYWRpdXMpIHsKICAuc2FtZS12YXItbmFtZTIoQHJhZGl1cyk7Cn0KI3NhbWUtdmFyLW5hbWUgewogIC5zYW1lLXZhci1uYW1lKDVweCk7Cn0KCi8vCgoudmFyLWluc2lkZSAoKSB7CiAgICBAdmFyOiAxMHB4OwogICAgd2lkdGg6IEB2YXI7Cn0KI3Zhci1pbnNpZGUgeyAudmFyLWluc2lkZTsgfQoKLm1peGluLWFyZ3VtZW50cyAoQHdpZHRoOiAwcHgsIC4uLikgewogICAgYm9yZGVyOiBAYXJndW1lbnRzOwogICAgd2lkdGg6IEB3aWR0aDsKfQoKLmFyZ3VtZW50cyB7CiAgICAubWl4aW4tYXJndW1lbnRzKDFweCwgc29saWQsIGJsYWNrKTsKfQouYXJndW1lbnRzMiB7CiAgICAubWl4aW4tYXJndW1lbnRzKCk7Cn0KLmFyZ3VtZW50czMgewogICAgLm1peGluLWFyZ3VtZW50czsKfQoKLm1peGluLWFyZ3VtZW50czIgKEB3aWR0aCwgQHJlc3QuLi4pIHsKICAgIGJvcmRlcjogQGFyZ3VtZW50czsKICAgIHJlc3Q6IEByZXN0OwogICAgd2lkdGg6IEB3aWR0aDsKfQouYXJndW1lbnRzNCB7CiAgICAubWl4aW4tYXJndW1lbnRzMigwLCAxLCAyLCAzLCA0KTsKfQoKLy8gRWRnZSBjYXNlcwoKLmVkZ2UtY2FzZSB7CiAgICAubWl4aW4tYXJndW1lbnRzKCJ7Iik7Cn0KCi8vIERpdmlzaW9uIHZzLiBMaXRlcmFsIFNsYXNoCi5ib3JkZXItcmFkaXVzKEByOiAycHgvNXB4KSB7CiAgYm9yZGVyLXJhZGl1czogQHI7Cn0KLnNsYXNoLXZzLW1hdGggewogIC5ib3JkZXItcmFkaXVzKCk7CiAgLmJvcmRlci1yYWRpdXMoNXB4LzEwcHgpOwogIC5ib3JkZXItcmFkaXVzKCgzcHggKiAyKSk7Cn0KLy8gc2VtaS1jb2xvbiB2cyBjb21tYSBmb3IgZGVsaW1pdGluZwoKLm1peGluLXRha2VzLW9uZShAYSkgewogICAgb25lOiBAYTsKfQoKLm1peGluLXRha2VzLXR3byhAYTsgQGIpIHsKICAgIG9uZTogQGE7CiAgICB0d286IEBiOwp9CgouY29tbWEtdnMtc2VtaS1jb2xvbiB7CiAgICAubWl4aW4tdGFrZXMtdHdvKEBhIDogYTsgQGIgOiBiLCBjKTsKICAgIC5taXhpbi10YWtlcy10d28oQGEgOiBkLCBlOyBAYiA6IGYpOwogICAgLm1peGluLXRha2VzLW9uZShAYTogZyk7CiAgICAubWl4aW4tdGFrZXMtb25lKEBhIDogaDspOwogICAgLm1peGluLXRha2VzLW9uZShpKTsKICAgIC5taXhpbi10YWtlcy1vbmUoajspOwogICAgLm1peGluLXRha2VzLXR3byhrLCBsKTsKICAgIC5taXhpbi10YWtlcy1vbmUobSwgbjspOwogICAgLm1peGluLXRha2VzLXR3byhvLCBwOyBxKTsKICAgIC5taXhpbi10YWtlcy10d28ociwgczsgdDspOwp9CgoubWl4aW4tY29uZmxpY3QoQGE6ZGVmQSwgQGI6ZGVmQiwgQGM6ZGVmQykgewogIHRocmVlOiBAYSwgQGIsIEBjOwp9CgoubWl4aW4tY29uZmxpY3QoQGE6ZGVmQSwgQGI6ZGVmQiwgQGM6ZGVmQywgQGQ6ZGVmRCkgewogIGZvdXI6IEBhLCBAYiwgQGMsIEBkOwp9CgojbmFtZWQtY29uZmxpY3QgewogIC5taXhpbi1jb25mbGljdCgxMSwgMTIsIDEzLCBAYTphKTsKICAubWl4aW4tY29uZmxpY3QoQGE6YSwgMjEsIDIyLCAyMyk7Cn0KQGE6IDNweDsKLm1peGluLWRlZmF1bHQtYXJnKEBhOiAxcHgsIEBiOiBAYSwgQGM6IEBiKSB7CiAgZGVmYXVsdHM6IDFweCAxcHggMXB4OwogIGRlZmF1bHRzOiAycHggMnB4IDJweDsKfQoKLnRlc3QtcnVsZS1taXhpbi1kZWZhdWx0LWFyZyB7CiAgLm1peGluLWRlZmF1bHQtYXJnKCk7CiAgLm1peGluLWRlZmF1bHQtYXJnKDJweCk7Cn0KCi5taXhpbi1jb21tYS1kZWZhdWx0MShAY29sb3I7IEBwYWRkaW5nOyBAbWFyZ2luOiAyLCAyLCAyLCAyKSB7CiAgbWFyZ2luOiBAbWFyZ2luOwp9Ci5zZWxlY3RvciB7CiAgLm1peGluLWNvbW1hLWRlZmF1bHQxKCMzM2FjZmU7IDQpOwp9Ci5taXhpbi1jb21tYS1kZWZhdWx0MihAbWFyZ2luOiAyLCAyLCAyLCAyOykgewogIG1hcmdpbjogQG1hcmdpbjsKfQouc2VsZWN0b3IyIHsKICAubWl4aW4tY29tbWEtZGVmYXVsdDIoKTsKfQoubWl4aW4tY29tbWEtZGVmYXVsdDMoQG1hcmdpbjogMiwgMiwgMiwgMikgewogIG1hcmdpbjogQG1hcmdpbjsKfQouc2VsZWN0b3IzIHsKICAubWl4aW4tY29tbWEtZGVmYXVsdDMoNCwyLDIsMik7Cn0KCi50ZXN0LXJ1bGUtY2FsbGluZy1vbmUtYXJnLW1peGluKEBhKSB7Cn0KCi50ZXN0LXJ1bGUtY2FsbGluZy1vbmUtYXJnLW1peGluKEBhLCBAYiwgQHJlc3QuLi4pIHsKfQoKZGl2IHsKICAudGVzdC1ydWxlLWNhbGxpbmctb25lLWFyZy1taXhpbigxKTsKfQoKbWl4aW5zLWFyZ3MtZXhwYW5kLW9wLSB7CiAgQHg6IDEsIDIsIDM7CiAgQHk6IDQgIDUgIDY7CgogICYxIHsubTMoQHguLi4pfQogICYyIHsubTMoQHkuLi4pfQogICYzIHsud3IoYSwgYiwgYyl9CiAgJjQgey53cihhOyBiOyBjLCBkKX0KICAmNSB7LndyKEB4Li4uKX0KICAmNiB7Lm00KDA7IEB4Li4uKX0KICAmNyB7Lm00KEB4Li4uLCBAYTogMCl9CiAgJjggey5tNChAYjogMS41OyBAeC4uLil9CiAgJjkgey5hYShAeSwgQHguLi4sIGFuZCBhZ2FpbiwgQHkuLi4pfQoKICAubTMoQGEsIEBiLCBAYykgewogICAgbTM6IEBhLCBAYiwgQGM7CiAgfQoKICAubTQoQGEsIEBiLCBAYywgQGQpIHsKICAgIG00OiBAYSwgQGIsIEBjLCBAZDsKICB9CgogIC53cihAYS4uLikgewogICAgJmEgey5tMyhAYS4uLil9CiAgICAmYiB7Lm00KDAsIEBhLi4uKX0KICAgICZjIHsubTQoQGEuLi4sIDQpfQogIH0KCiAgLmFhKEBhLi4uKSB7CiAgICBhYTogQGE7CiAgICBhNDogZXh0cmFjdChAYSwgNSk7CiAgICBhODogZXh0cmFjdChAYSwgOCk7CiAgfQp9CiN0ZXN0LW1peGluLW1hdGNoaW5nLXdoZW4tZGVmYXVsdC0yNjQ1IHsKICAubWl4aW4oQGhlaWdodCkgewogICAgaGVpZ2h0OiBAaGVpZ2h0OwogIH0KCiAgLm1peGluKEB3aWR0aCwgQGhlaWdodDogMTBweCkgewogICAgd2lkdGg6IEB3aWR0aDsKCiAgICAubWl4aW4oQGhlaWdodDogQGhlaWdodCk7CiAgfQoKICAubWl4aW4oQGhlaWdodDogMjBweCk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict-legacy/parens.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgQHZhcjogMXB4OwogIGJvcmRlcjogKEB2YXIgKiAyKSBzb2xpZCBibGFjazsKICBtYXJnaW46IChAdmFyICogMSkgKEB2YXIgKyAyKSAoNCAqIDQpIDM7CiAgd2lkdGg6ICg2ICogNik7CiAgcGFkZGluZzogMnB4ICg2ICogNnB4KTsKfQoKLmluLWZ1bmN0aW9uIHsKICB2YWx1ZTogbWluKCgxICsgMSkpICsgMTsKfQoKLm1vcmUtcGFyZW5zIHsKICBAdmFyOiAoMiAqIDIpOwogIHBhZGRpbmc6ICgyICogQHZhcikgNCA0IChAdmFyICogMXB4KTsKICB3aWR0aC1hbGw6ICgoQHZhciAqIEB2YXIpICogNik7CiAgd2lkdGgtZmlyc3Q6ICgoQHZhciAqIEB2YXIpKSAqIDY7CiAgd2lkdGgta2VlcDogKEB2YXIgKiBAdmFyKSAqIDY7CiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAoMjV2aCAtIDIwcHgpKTsKICBoZWlnaHQta2VlcDogKDcgKiA3KSArICg4ICogOCk7CiAgaGVpZ2h0LWFsbDogKCg3ICogNykgKyAoOCAqIDgpKTsKICBoZWlnaHQtcGFydHM6ICgoNyAqIDcpKSArICgoOCAqIDgpKTsKICBtYXJnaW4ta2VlcDogKDQgKiAoNSArIDUpIC8gMikgLSAoQHZhciAqIDIpOwogIG1hcmdpbi1wYXJ0czogKCg0ICogKDUgKyA1KSAvIDIpKSAtICgoQHZhciAqIDIpKTsKICBtYXJnaW4tYWxsOiAoKDQgKiAoNSArIDUpIC8gMikgKyAoLShAdmFyICogMikpKTsKICBib3JkZXItcmFkaXVzLWtlZXA6IDRweCAqICgxICsgMSkgLyBAdmFyICsgM3B4OwogIGJvcmRlci1yYWRpdXMtcGFydHM6ICgoNHB4ICogKDEgKyAxKSkpIC8gKChAdmFyICsgM3B4KSk7CiAgYm9yZGVyLXJhZGl1cy1hbGw6ICg0cHggKiAoMSArIDEpIC8gQHZhciArIDNweCk7CiAgLy8gbWFyZ2luOiAoNiAqIDYpcHg7Cn0KCi5uZWdhdGl2ZSB7CiAgQHZhcjogMTsKICBuZWctdmFyOiAtQHZhcjsgLy8gLTEgPwogIG5lZy12YXItcGFyZW46IC0oQHZhcik7IC8vIC0oMSkgPwp9CgoubmVzdGVkLXBhcmVucyB7CiAgd2lkdGg6IDIgKiAoNCAqICgyICsgKDEgKyA2KSkpIC0gMTsKICBoZWlnaHQ6ICgoMiArIDMpICogKDIgKyAzKSAvICg5IC0gNCkpICsgMTsKfQoKLm1peGVkLXVuaXRzIHsKICBtYXJnaW46IDJweCA0ZW0gMSA1cGM7CiAgcGFkZGluZzogKDJweCArIDRweCkgMWVtIDJweCAyOwp9CgoudGVzdC1ydWxlLWZhbHNlLW5lZ2F0aXZlcyB7CiAgYTogfiIoIjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict/css.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKZGl2IHsgY29sb3I6IGJsYWNrOyB9CmRpdiB7IHdpZHRoOiA5OSU7IH0KCiogewogIG1pbi13aWR0aDogNDVlbTsKfQoKaDEsIGgyID4gYSA+IHAsIGgzIHsKICBjb2xvcjogbm9uZTsKfQoKZGl2LmNsYXNzIHsKICBjb2xvcjogYmx1ZTsKfQoKZGl2I2lkIHsKICBjb2xvcjogZ3JlZW47Cn0KCi5jbGFzcyNpZCB7CiAgY29sb3I6IHB1cnBsZTsKfQoKLm9uZS50d28udGhyZWUgewogIGNvbG9yOiBncmV5Owp9CgpAbWVkaWEgcHJpbnQgewogICogewogICAgZm9udC1zaXplOiAzZW07CiAgfQp9CgpAbWVkaWEgc2NyZWVuIHsKICAqIHsKICAgIGZvbnQtc2l6ZTogMTBweDsKICB9Cn0KCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnR2FyYW1vbmQgUHJvJzsKfQoKYTpob3ZlciwgYTpsaW5rIHsKICBjb2xvcjogIzk5OTsKfQoKcCwgcDpmaXJzdC1jaGlsZCB7CiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KCnE6bGFuZyhubykgewogIHF1b3Rlczogbm9uZTsKfQoKcCArIGgxIHsKICBmb250LXNpemU6ICsyLjJlbTsKfQoKI3Nob3J0aGFuZHMgewogIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgZm9udDogMTJweC8xNnB4IEFyaWFsOwogIGZvbnQ6IDEwMCUvMTZweCBBcmlhbDsKICBtYXJnaW46IDFweCAwOwogIHBhZGRpbmc6IDAgYXV0bzsKfQoKI21vcmUtc2hvcnRoYW5kcyB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDFweCAwIDJweCAwOwogIGZvbnQ6IG5vcm1hbCBzbWFsbC8yMHB4ICdUcmVidWNoZXQgTVMnLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwogIGZvbnQ6IDAvMCBhOwogIGJvcmRlci1yYWRpdXM6IDVweCAvIDEwcHg7Cn0KCi5taXNjIHsKICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjazsKICB3aWR0aDogLjFlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5OTk4OwogIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmVkKSwgdG8oYmx1ZSkpOwogIG1hcmdpbjogOwogIC5uZXN0ZWQtbXVsdGlwbGUgewogICAgbXVsdGlwbGUtc2VtaS1jb2xvbnM6IHllczs7Ozs7OwogIH07CiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7CiAgd2lkdGg6IGF1dG9cOTsKfQoKI2ltcG9ydGFudCB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMDAlIWltcG9ydGFudDsKICBoZWlnaHQ6IDIwcHggISBpbXBvcnRhbnQ7Cn0KCi5kZWYtZm9udChAbmFtZSkgewogICAgQGZvbnQtZmFjZSB7CiAgICAgICAgZm9udC1mYW1pbHk6IEBuYW1lCiAgICB9Cn0KCi5kZWYtZm9udChmb250LWEpOwouZGVmLWZvbnQoZm9udC1iKTsKCi7DpsO4w6UgewogIG1hcmdpbjogMDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict/media-math.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhcjogMTY7CgpAbWVkaWEgKG1pbi13aWR0aDogQHZhciArIDEpIHsKICAuZm9vIHsgYmFyOiAxOyB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiBAdmFyIC8gOSkgewogIC5mb28geyBiYXI6IDE7IH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict/mixins-args.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIChAYTogMXB4LCBAYjogNTAlKSB7CiAgd2lkdGg6IChAYSAqIDUpOwogIGhlaWdodDogKEBiIC0gMSUpOwogIGRlcHRoOiBAYiAtIDElOwp9CgoubWl4aW5hIChAc3R5bGUsIEB3aWR0aCwgQGNvbG9yOiBibGFjaykgewogICAgYm9yZGVyOiBAd2lkdGggQHN0eWxlIEBjb2xvcjsKfQoKLm1peGlueQooQGE6IDAsIEBiOiAwKSB7CiAgbWFyZ2luOiBAYTsKICBwYWRkaW5nOiBAYjsKfQoKLmhpZGRlbigpIHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7IC8vIGFzZAp9CgojaGlkZGVuIHsKICAuaGlkZGVuOwp9CgojaGlkZGVuMSB7CiAgLmhpZGRlbigpOwp9CgoudHdvLWFyZ3MgewogIGNvbG9yOiBibHVlOwogIC5taXhpbigycHgsIDEwMCUpOwogIC5taXhpbmEoZG90dGVkLCAycHgpOwp9Cgoub25lLWFyZyB7CiAgLm1peGluKDNweCk7Cn0KCi5uby1wYXJlbnMgewogIC5taXhpbjsKfQoKLm5vLWFyZ3MgewogIC5taXhpbigpOwp9CgoudmFyLWFyZ3MgewogIEB2YXI6IDk7CiAgLm1peGluKEB2YXIsIChAdmFyICogMikgLyAyKTsKfQoKLm11bHRpLW1peCB7CiAgLm1peGluKDJweCwgMzAlKTsKICAubWl4aW55KDQsIDUpOwp9CgoubWF4YShAYXJnMTogMTAsIEBhcmcyOiAjZjAwKSB7CiAgcGFkZGluZzogKEBhcmcxICogMnB4KTsKICBjb2xvcjogQGFyZzI7Cn0KCmJvZHkgewogIC5tYXhhKDE1KTsKfQoKQGdsb2I6IDU7Ci5nbG9iYWwtbWl4aW4oQGE6MikgewogIHdpZHRoOiAoQGdsb2IgKyBAYSk7Cn0KCi5zY29wZS1taXggewogIC5nbG9iYWwtbWl4aW4oMyk7Cn0KCi5uZXN0ZWQtcnVsZXNldCAoQHdpZHRoOiAyMDBweCkgewogICAgd2lkdGg6IEB3aWR0aDsKICAgIC5jb2x1bW4geyBtYXJnaW46IEB3aWR0aDsgfQp9Ci5jb250ZW50IHsKICAgIC5uZXN0ZWQtcnVsZXNldCg2MDBweCk7Cn0KCi8vCgouc2FtZS12YXItbmFtZTIoQHJhZGl1cykgewogIHJhZGl1czogQHJhZGl1czsKfQouc2FtZS12YXItbmFtZShAcmFkaXVzKSB7CiAgLnNhbWUtdmFyLW5hbWUyKEByYWRpdXMpOwp9CiNzYW1lLXZhci1uYW1lIHsKICAuc2FtZS12YXItbmFtZSg1cHgpOwp9CgovLwoKLnZhci1pbnNpZGUgKCkgewogICAgQHZhcjogMTBweDsKICAgIHdpZHRoOiBAdmFyOwp9CiN2YXItaW5zaWRlIHsgLnZhci1pbnNpZGU7IH0KCi5taXhpbi1hcmd1bWVudHMgKEB3aWR0aDogMHB4LCAuLi4pIHsKICAgIGJvcmRlcjogQGFyZ3VtZW50czsKICAgIHdpZHRoOiBAd2lkdGg7Cn0KCi5hcmd1bWVudHMgewogICAgLm1peGluLWFyZ3VtZW50cygxcHgsIHNvbGlkLCBibGFjayk7Cn0KLmFyZ3VtZW50czIgewogICAgLm1peGluLWFyZ3VtZW50cygpOwp9Ci5hcmd1bWVudHMzIHsKICAgIC5taXhpbi1hcmd1bWVudHM7Cn0KCi5taXhpbi1hcmd1bWVudHMyIChAd2lkdGgsIEByZXN0Li4uKSB7CiAgICBib3JkZXI6IEBhcmd1bWVudHM7CiAgICByZXN0OiBAcmVzdDsKICAgIHdpZHRoOiBAd2lkdGg7Cn0KLmFyZ3VtZW50czQgewogICAgLm1peGluLWFyZ3VtZW50czIoMCwgMSwgMiwgMywgNCk7Cn0KCi8vIEVkZ2UgY2FzZXMKCi5lZGdlLWNhc2UgewogICAgLm1peGluLWFyZ3VtZW50cygieyIpOwp9CgovLyBEaXZpc2lvbiB2cy4gTGl0ZXJhbCBTbGFzaAouYm9yZGVyLXJhZGl1cyhAcjogMnB4LzVweCkgewogIGJvcmRlci1yYWRpdXM6IEByOwp9Ci5zbGFzaC12cy1tYXRoIHsKICAuYm9yZGVyLXJhZGl1cygpOwogIC5ib3JkZXItcmFkaXVzKDVweC8xMHB4KTsKICAuYm9yZGVyLXJhZGl1cygoM3B4ICogMikpOwp9Ci8vIHNlbWktY29sb24gdnMgY29tbWEgZm9yIGRlbGltaXRpbmcKCi5taXhpbi10YWtlcy1vbmUoQGEpIHsKICAgIG9uZTogQGE7Cn0KCi5taXhpbi10YWtlcy10d28oQGE7IEBiKSB7CiAgICBvbmU6IEBhOwogICAgdHdvOiBAYjsKfQoKLmNvbW1hLXZzLXNlbWktY29sb24gewogICAgLm1peGluLXRha2VzLXR3byhAYSA6IGE7IEBiIDogYiwgYyk7CiAgICAubWl4aW4tdGFrZXMtdHdvKEBhIDogZCwgZTsgQGIgOiBmKTsKICAgIC5taXhpbi10YWtlcy1vbmUoQGE6IGcpOwogICAgLm1peGluLXRha2VzLW9uZShAYSA6IGg7KTsKICAgIC5taXhpbi10YWtlcy1vbmUoaSk7CiAgICAubWl4aW4tdGFrZXMtb25lKGo7KTsKICAgIC5taXhpbi10YWtlcy10d28oaywgbCk7CiAgICAubWl4aW4tdGFrZXMtb25lKG0sIG47KTsKICAgIC5taXhpbi10YWtlcy10d28obywgcDsgcSk7CiAgICAubWl4aW4tdGFrZXMtdHdvKHIsIHM7IHQ7KTsKfQoKLm1peGluLWNvbmZsaWN0KEBhOmRlZkEsIEBiOmRlZkIsIEBjOmRlZkMpIHsKICB0aHJlZTogQGEsIEBiLCBAYzsKfQoKLm1peGluLWNvbmZsaWN0KEBhOmRlZkEsIEBiOmRlZkIsIEBjOmRlZkMsIEBkOmRlZkQpIHsKICBmb3VyOiBAYSwgQGIsIEBjLCBAZDsKfQoKI25hbWVkLWNvbmZsaWN0IHsKICAubWl4aW4tY29uZmxpY3QoMTEsIDEyLCAxMywgQGE6YSk7CiAgLm1peGluLWNvbmZsaWN0KEBhOmEsIDIxLCAyMiwgMjMpOwp9CkBhOiAzcHg7Ci5taXhpbi1kZWZhdWx0LWFyZyhAYTogMXB4LCBAYjogQGEsIEBjOiBAYikgewogIGRlZmF1bHRzOiAxcHggMXB4IDFweDsKICBkZWZhdWx0czogMnB4IDJweCAycHg7Cn0KCi50ZXN0LXJ1bGUtbWl4aW4tZGVmYXVsdC1hcmcgewogIC5taXhpbi1kZWZhdWx0LWFyZygpOwogIC5taXhpbi1kZWZhdWx0LWFyZygycHgpOwp9CgoubWl4aW4tY29tbWEtZGVmYXVsdDEoQGNvbG9yOyBAcGFkZGluZzsgQG1hcmdpbjogMiwgMiwgMiwgMikgewogIG1hcmdpbjogQG1hcmdpbjsKfQouc2VsZWN0b3IgewogIC5taXhpbi1jb21tYS1kZWZhdWx0MSgjMzNhY2ZlOyA0KTsKfQoubWl4aW4tY29tbWEtZGVmYXVsdDIoQG1hcmdpbjogMiwgMiwgMiwgMjspIHsKICBtYXJnaW46IEBtYXJnaW47Cn0KLnNlbGVjdG9yMiB7CiAgLm1peGluLWNvbW1hLWRlZmF1bHQyKCk7Cn0KLm1peGluLWNvbW1hLWRlZmF1bHQzKEBtYXJnaW46IDIsIDIsIDIsIDIpIHsKICBtYXJnaW46IEBtYXJnaW47Cn0KLnNlbGVjdG9yMyB7CiAgLm1peGluLWNvbW1hLWRlZmF1bHQzKDQsMiwyLDIpOwp9CgoudGVzdC1ydWxlLWNhbGxpbmctb25lLWFyZy1taXhpbihAYSkgewp9CgoudGVzdC1ydWxlLWNhbGxpbmctb25lLWFyZy1taXhpbihAYSwgQGIsIEByZXN0Li4uKSB7Cn0KCmRpdiB7CiAgLnRlc3QtcnVsZS1jYWxsaW5nLW9uZS1hcmctbWl4aW4oMSk7Cn0KCm1peGlucy1hcmdzLWV4cGFuZC1vcC0gewogIEB4OiAxLCAyLCAzOwogIEB5OiA0ICA1ICA2OwoKICAmMSB7Lm0zKEB4Li4uKX0KICAmMiB7Lm0zKEB5Li4uKX0KICAmMyB7LndyKGEsIGIsIGMpfQogICY0IHsud3IoYTsgYjsgYywgZCl9CiAgJjUgey53cihAeC4uLil9CiAgJjYgey5tNCgwOyBAeC4uLil9CiAgJjcgey5tNChAeC4uLiwgQGE6IDApfQogICY4IHsubTQoQGI6IDEuNTsgQHguLi4pfQogICY5IHsuYWEoQHksIEB4Li4uLCBhbmQgYWdhaW4sIEB5Li4uKX0KCiAgLm0zKEBhLCBAYiwgQGMpIHsKICAgIG0zOiBAYSwgQGIsIEBjOwogIH0KCiAgLm00KEBhLCBAYiwgQGMsIEBkKSB7CiAgICBtNDogQGEsIEBiLCBAYywgQGQ7CiAgfQoKICAud3IoQGEuLi4pIHsKICAgICZhIHsubTMoQGEuLi4pfQogICAgJmIgey5tNCgwLCBAYS4uLil9CiAgICAmYyB7Lm00KEBhLi4uLCA0KX0KICB9CgogIC5hYShAYS4uLikgewogICAgYWE6IEBhOwogICAgYTQ6IGV4dHJhY3QoQGEsIDUpOwogICAgYTg6IGV4dHJhY3QoQGEsIDgpOwogIH0KfQojdGVzdC1taXhpbi1tYXRjaGluZy13aGVuLWRlZmF1bHQtMjY0NSB7CiAgLm1peGluKEBoZWlnaHQpIHsKICAgIGhlaWdodDogQGhlaWdodDsKICB9CgogIC5taXhpbihAd2lkdGgsIEBoZWlnaHQ6IDEwcHgpIHsKICAgIHdpZHRoOiBAd2lkdGg7CgogICAgLm1peGluKEBoZWlnaHQ6IEBoZWlnaHQpOwogIH0KCiAgLm1peGluKEBoZWlnaHQ6IDIwcHgpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/math/strict/parens.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhcmVucyB7CiAgQHZhcjogMXB4OwogIGJvcmRlcjogKEB2YXIgKiAyKSBzb2xpZCBibGFjazsKICBtYXJnaW46IChAdmFyICogMSkgKEB2YXIgKyAyKSAoNCAqIDQpIDM7CiAgd2lkdGg6ICg2ICogNik7CiAgcGFkZGluZzogMnB4ICg2ICogNnB4KTsKfQoKLm1vcmUtcGFyZW5zIHsKICBAdmFyOiAoMiAqIDIpOwogIHBhZGRpbmc6ICgyICogQHZhcikgNCA0IChAdmFyICogMXB4KTsKICB3aWR0aC1hbGw6ICgoQHZhciAqIEB2YXIpICogNik7CiAgd2lkdGgtZmlyc3Q6ICgoQHZhciAqIEB2YXIpKSAqIDY7CiAgd2lkdGgta2VlcDogKEB2YXIgKiBAdmFyKSAqIDY7CiAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAoMjV2aCAtIDIwcHgpKTsKICBoZWlnaHQta2VlcDogKDcgKiA3KSArICg4ICogOCk7CiAgaGVpZ2h0LWFsbDogKCg3ICogNykgKyAoOCAqIDgpKTsKICBoZWlnaHQtcGFydHM6ICgoNyAqIDcpKSArICgoOCAqIDgpKTsKICBtYXJnaW4ta2VlcDogKDQgKiAoNSArIDUpIC8gMikgLSAoQHZhciAqIDIpOwogIG1hcmdpbi1wYXJ0czogKCg0ICogKDUgKyA1KSAvIDIpKSAtICgoQHZhciAqIDIpKTsKICBtYXJnaW4tYWxsOiAoKDQgKiAoNSArIDUpIC8gMikgKyAoLShAdmFyICogMikpKTsKICBib3JkZXItcmFkaXVzLWtlZXA6IDRweCAqICgxICsgMSkgLyBAdmFyICsgM3B4OwogIGJvcmRlci1yYWRpdXMtcGFydHM6ICgoNHB4ICogKDEgKyAxKSkpIC8gKChAdmFyICsgM3B4KSk7CiAgYm9yZGVyLXJhZGl1cy1hbGw6ICg0cHggKiAoMSArIDEpIC8gQHZhciArIDNweCk7CiAgLy8gbWFyZ2luOiAoNiAqIDYpcHg7Cn0KCi5uZWdhdGl2ZSB7CiAgQHZhcjogMTsKICBuZWctdmFyOiAtQHZhcjsgLy8gLTEgPwogIG5lZy12YXItcGFyZW46IC0oQHZhcik7IC8vIC0oMSkgPwp9CgoubmVzdGVkLXBhcmVucyB7CiAgd2lkdGg6IDIgKiAoNCAqICgyICsgKDEgKyA2KSkpIC0gMTsKICBoZWlnaHQ6ICgoMiArIDMpICogKDIgKyAzKSAvICg5IC0gNCkpICsgMTsKfQoKLm1peGVkLXVuaXRzIHsKICBtYXJnaW46IDJweCA0ZW0gMSA1cGM7CiAgcGFkZGluZzogKDJweCArIDRweCkgMWVtIDJweCAyOwp9CgoudGVzdC1ydWxlLWZhbHNlLW5lZ2F0aXZlcyB7CiAgYTogfiIoIjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/modifyVars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/modifyVars/extended.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInRoZS1ib3JkZXIiOiAiMXB4IiwKICAgICJiYXNlLWNvbG9yIjogIiMxMTEiLAogICAgInJlZCI6ICIjODQyMjEwIgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/modifyVars/extended.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CiAgY29sb3I6IChAYmFzZS1jb2xvciAqIDMpOwogIGJvcmRlci1sZWZ0OiBAdGhlLWJvcmRlcjsKICBib3JkZXItcmlnaHQ6IChAdGhlLWJvcmRlciAqIDIpOwp9CiNmb290ZXIgewogIGNvbG9yOiAoQGJhc2UtY29sb3IgKyAjMDAzMzAwKTsKICBib3JkZXItY29sb3I6IEByZWQ7Cn0KQHJlZDogYmx1ZTsgLy8gdmFyIGlzIG92ZXJyaWRkZW4gYnkgdGhlIG1vZGlmeVZhcnMKLy9AYmFzZS1jb2xvcjogZ3JlZW47]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/imports/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/imports/a-better-bootstrap.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3RoZW1lKCkgewogIC5saWdodCgpIHt9IC8vLi4uCiAgLmRhcmsoKSB7CiAgICAvLyAuLi4KICAgIC5uYXZiYXIoKSB7CiAgICAgIC5jb2xvcnMoKSB7CiAgICAgICAgcHJpbWFyeTogYmx1ZTsKICAgICAgICBzZWNvbmRhcnk6IGxpZ2h0Ymx1ZTsKICAgICAgfQogICAgfQogICAgLy8gLi4uCiAgfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/imports/library.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIEkgYW0gYSBsaWJyYXJ5CiNsaWJyYXJ5IHsKICAuc2l6ZXMoKSB7CiAgICBAd2lkdGg6IDYwMHB4OwogIH0KICAuYWRkLW9uZShAdmFsKSB7CiAgICBAcmV0dXJuOiBAdmFsICsgMXB4OwogIH0KICAuc2l6ZXMoQHRlc3QpIHdoZW4gKEB0ZXN0ID0gdHJ1ZSkgewogICAgQHdpZHRoOiA0MDBweDsKICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhclRvR2V0OiBkZWZhdWx0LWNvbG9yOwouZm9vIHsKICBjb2xvcjE6IEBkZWZhdWx0c1tAZGVmYXVsdC1jb2xvcl07CiAgY29sb3IyOiBAZGVmYXVsdHNbQG5lc3RlZF1bQGNvbG9yXTsKICBjb2xvcjM6IEB0aGVtZVtjb2xvcl07CiAgY29sb3I0OiBAdGhlbWVbQG5lc3RlZF1bY29sb3JdOwogIGNvbG9yNTogQGRlZmF1bHRzW0BAdmFyVG9HZXRdOwogIHByb3A6ICNuczFbZm9vXTsKICB2YXI6ICNuczFbQGZvb107CiAgc3ViOiAjbnMxLnZhcnNbJHN1Yl07Cn0KCkBkZWZhdWx0czogewogIEBkZWZhdWx0LWNvbG9yOiByZWQ7CiAgQG5lc3RlZDogewogICAgQGNvbG9yOiB5ZWxsb3c7CiAgfQp9OwoKQHRoZW1lOiB7CiAgY29sb3I6IHJlZDsKICBAbmVzdGVkOiB7CiAgICBjb2xvcjogeWVsbG93OwogIH0KfTsKCiNuczEgewogIGZvbzogYmFyOwogIEBmb286IGJhejsKICAudmFycygpIHsKICAgIHN1YjogdmFsdWU7CiAgfQp9CgovLyBUZXN0IHRoYXQgaXQgbWF0Y2hlcyBtb3JlIHRoYW4gb25lIG1peGluCiNuczEgewogIGZvbzogdW5vOwogIEBmb286IGRvczsKICAudmFycygpIHsKICAgIHN1YjogdHJlczsKICB9Cn0KCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvaXNzdWVzLzMzNDYKI0RFRigpIHsKICAuY29sb3JzKCkgeyBwcmltYXJ5OiBncmV5OyB9Cn0KCi5idXR0b24gewogIGNvbG9yOiAjREVGLmNvbG9yc1twcmltYXJ5XTsKICBib3JkZXItY29sb3I6ICNBQUEgI0NDQzsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0cy9saWJyYXJ5Lmxlc3MiOwoKLmJhciB7CiAgd2lkdGg6ICNsaWJyYXJ5LnNpemVzW0B3aWR0aF07CiAgaGVpZ2h0OiAjbGlicmFyeS5hZGQtb25lKDFweClbQHJldHVybl07Cn0KCi8vIEknbSBnb25uYSBvdmVycmlkZSBzb21lIHZhbHVlcwojbGlicmFyeSB7CiAgLnNpemVzKCkgewogICAgQHdpZHRoOiA4MDBweDsKICB9Cn0KCi5mb28gewogIHdpZHRoOiAjbGlicmFyeS5zaXplc1tAd2lkdGhdOwp9CgouZm9vZHMoKSB7CiAgQGRlc3NlcnQ6IGljZSBjcmVhbTsKfQoKQGtleS10by1sb29rdXA6IGRlc3NlcnQ7CgoubHVuY2ggewogIHRyZWF0OiAuZm9vZHNbQEBrZXktdG8tbG9va3VwXTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1hcDogewogIEB3aWR0aDogNDAwcHg7CiAgQGNvbG9yczogewogICAgdG9vbGJhci1iYWNrZ3JvdW5kOiByZWQ7CiAgICB0b29sYmFyLWZvcmVncm91bmQ6IGluaGVyaXQ7CiAgfQp9OwoKI25zIHsKICAubWl4aW4oKSB7CiAgICBAaGVpZ2h0OiAyMDBweDsKICB9Cn0KCkBicmVha3BvaW50czogewogIG1vYmlsZTogMzIwcHg7CiAgdGFibGV0OiA3NjhweDsKICBkZXNrdG9wOiAxMDI0cHg7Cn07CgpAbWVkaWEgKG1pbi13aWR0aDogQGJyZWFrcG9pbnRzW21vYmlsZV0pIHsKICAudG9vbGJhciB7CiAgICB3aWR0aDogQG1hcFtAd2lkdGhdOwogICAgaGVpZ2h0OiAjbnMubWl4aW5bQGhlaWdodF07CiAgICBiYWNrZ3JvdW5kOiBAbWFwW0Bjb2xvcnNdW3Rvb2xiYXItYmFja2dyb3VuZF07CiAgICBjb2xvcjogQG1hcFtAY29sb3JzXVt0b29sYmFyLWZvcmVncm91bmRdOwogIH0KfQoKLy8gIWltcG9ydGFudCBhZnRlciBtYXAgdXNhZ2UKLy8gaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMzQzMApAbWFyZ2luczogewogICAgemVybzogMDsKICAgIHRlbjogMTBweDsKfQouY2VsbCB7CiAgbWFyZ2luOiBAbWFyZ2luc1t6ZXJvXSBAbWFyZ2luc1t0ZW5dLzIgIWltcG9ydGFudDsKfQoKLm1peGluKEBjb2xvcjogYmxhY2s7IEBtYXJnaW46IDEwcHg7IEBwYWRkaW5nOiAyMHB4KSB7CiAgY29sb3I6IEBjb2xvcjsKICBtYXJnaW46IEBtYXJnaW47CiAgcGFkZGluZzogQHBhZGRpbmc7CiAgd2lkdGg6IEBtYXJnaW5zW3plcm9dICFpbXBvcnRhbnQKfQouY2xhc3MxIHsKICAubWl4aW4oQG1hcmdpbjogMjBweDsgQGNvbG9yOiAjMzNhY2ZlKSAhaW1wb3J0YW50Owp9Ci5jbGFzczIgewogIC5taXhpbigjZWZjYTQ0OyBAcGFkZGluZzogNDBweCAxMHB4KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-4.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I25zIHsKICAubWl4aW4oQGEpIHdoZW4gKEBhID0gMSkgewogICAgQGE6IDIwcHg7CiAgfQp9CgouYWxpYXMoKSB7CiAgI25zLm1peGluKDEpOwp9CgojbGlicmFyeSB7CiAgLmNvcmUoKSB7CiAgICAuY29sb3JzKCkgewogICAgICBwcmltYXJ5OiBibHVlOwogICAgICBmb3JlZ3JvdW5kOiBpbmhlcml0OwogICAgfQogIH0KfQoKI2xpYnJhcnkgewogIC5jb3JlKCkgewogICAgLmNvbG9ycygpIHsKICAgICAgcHJpbWFyeTogcmViZWNjYXB1cnBsZTsKICAgIH0KICB9Cn0KCi5mb28gewogIC5jb2xvcnMoKSB7ICNsaWJyYXJ5LmNvcmUuY29sb3JzOyB9CiAgd2lkdGg6IC5hbGlhc1tAYV07CiAgYmFja2dyb3VuZDogLmNvbG9yc1twcmltYXJ5XTsKICBjb2xvcjogLmNvbG9yc1tmb3JlZ3JvdW5kXTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-5.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0cy9hLWJldHRlci1ib290c3RyYXAiOwoKI3RoZW1lLmRhcmsubmF2YmFyIHsKICAuY29sb3JzKCkgewogICAgcHJpbWFyeTogcmViZWNjYXB1cnBsZTsKICB9CiAgLmNvbG9ycyhkYXJrKSB7CiAgICBwcmltYXJ5OiBibGFjazsKICAgIHNlY29uZGFyeTogZ3JleTsKICB9CiAgLnRlc3QtcnVsZSgpIHsKICAgIHZhbDogb3V0cHV0OwogIH0KfQoKLm15LW5hdmJhciB7CiAgI3RoZW1lLmRhcmsubmF2YmFyKCk7CiAgYmFja2dyb3VuZDogLmNvbG9yc1twcmltYXJ5XTsKICAudGVzdC1ydWxlKCk7Cn0KCi5hbm90aGVyLW5hdmJhciB7CiAgQGNvbG9yczogI3RoZW1lLmRhcmsubmF2YmFyLmNvbG9ycygpICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogQGNvbG9yc1twcmltYXJ5XTsKICBib3JkZXI6IDFweCBzb2xpZCBAY29sb3JzW3NlY29uZGFyeV07Cn0KCi5hbm90aGVyIHsKICBAY29sb3JzOiAjdGhlbWUuZGFyay5uYXZiYXIuY29sb3JzKGRhcmspOwogIGJhY2tncm91bmQ6IEBjb2xvcnNbcHJpbWFyeV07CiAgYm9yZGVyOiAxcHggc29saWQgQGNvbG9yc1tzZWNvbmRhcnldOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-6.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LndyYXBwZXIoQGFub3RoZXItbWl4aW4pIHsKICBAYW5vdGhlci1taXhpbigpOwp9Cgouc29tZXRoaW5nKGZvbykgewogIHdpZHRoOiAxMHB4Owp9Cgoub3V0cHV0LWhlaWdodCgpIHsKICBoZWlnaHQ6IDEwcHg7Cn0KCi5ydWxlLTEgewogIEBhbGlhczogLnNvbWV0aGluZyhmb28pOwogIEBhbGlhcygpOwp9CgoucnVsZS0yIHsKICBAYWxpYXM6IC5zb21ldGhpbmcoZm9vKTsKICAud3JhcHBlcihAYWxpYXMpOwp9CgoucnVsZS0zIHsKICAud3JhcHBlciguc29tZXRoaW5nKGZvbykpOwogIC53cmFwcGVyKC5vdXRwdXQtaGVpZ2h0KCkpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-7.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I25zIHsKICAub3B0aW9ucygpIHsKICAgIG9wdGlvbjogdHJ1ZTsKICB9Cn0KCkBuczogewogIEBvcHRpb25zOiB7CiAgICBvcHRpb246IHRydWU7CiAgfTsKfTsKCiYgd2hlbiAoI25zLm9wdGlvbnNbb3B0aW9uXSkgewogIC5vdXRwdXQgewogICAgYTogYjsKICB9Cn0KCiYgd2hlbiAoI25zLm9wdGlvbnNbb3B0aW9uXSA9IHRydWUpIHsKICAub3V0cHV0LTIgewogICAgYzogZDsKICB9Cn0KCiYgd2hlbiAoI25zLm9wdGlvbnNbb3B0aW9uXSA9IGZhbHNlKSB7CiAgLm5vLXJlYWNoIHsKICAgIGM6IGQ7CiAgfQp9CgovLyBEUiBhY2Nlc3MKJiB3aGVuIChAbnNbQG9wdGlvbnNdW29wdGlvbl0pIHsKICAuZHIgewogICAgYTogYjsKICB9Cn0KCiYgd2hlbiAoQG5zW0BvcHRpb25zXVtvcHRpb25dID0gdHJ1ZSkgewogIC5kci0yIHsKICAgIGM6IGQ7CiAgfQp9CgomIHdoZW4gKEBuc1tAb3B0aW9uc11bb3B0aW9uXSA9IGZhbHNlKSB7CiAgLmRyLW5vLXJlYWNoIHsKICAgIGM6IGQ7CiAgfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-8.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2lzc3Vlcy8zMzY4CkB2YXJzOiB7CiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgY29sb3I6IGNvbnRyYXN0KCRiYWNrZ3JvdW5kLWNvbG9yLCAjMDAwLCAjZmZmKTsKfQogIAo6cm9vdCB7CiAgZWFjaChAdmFycywgewogICAgLS1Ae2tleX06IEB2YWx1ZTsKICB9KTsKfQoKZGl2IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZzogMXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTsKICBjb2xvcjogdmFyKC0tY29sb3IpOwp9CgovLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvaXNzdWVzLzMzMzkKLy8gc3RpbGwgZmFpbHMgLSBtb3ZlIHRvIDQuMAovLyBAY29tcG9uZW50czogewovLyAgIGNvbHVtbnM6IHRydWU7Ci8vICAgcmF0aW9zOiBmYWxzZTsKLy8gfTsKCi8vIGVhY2goQGNvbXBvbmVudHMsIHsKLy8gICAmIHdoZW4gKEB2YWx1ZSA9IHRydWUpIHsKLy8gICAgICAgQGltcG9ydCAob3B0aW9uYWwpICJjb21wb25lbnRzL0B7a2V5fS5sZXNzIjsKLy8gICB9Ci8vIH0pOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-functions.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmFkZChAYSwgQGIpIHsKICBAcjogQGEgKyBAYjsKfQouZm9vIHsKICB3aWR0aDogLmFkZCgxMHB4LCAxMHB4KVtdOwogIGJhcjogQHJldHVybltdOwp9CgpAcmV0dXJuOiB7CiAgc2luZ2xlOiB2YWw7Cn0KCi8vIElzc3VlICMzNDA1CiNsb29rdXAgewogIEBwcm9wOiB0ZXN0Owp9CgoubWl4IChAdmFyKSB7CiAgd2lkdGg6IEB2YXI7Cn0KCi5iYXIgewogIC5taXgoI2xvb2t1cFtAcHJvcF0pOwp9CgovLyBJc3N1ZSAjMzQwNgoubWl4MiAoQG4pIHsKICB2YWx1ZTogQG47Cn0KI2xvb2t1cDIgewogIEB2YXI6IC5taXgyKGxvb2t1cCk7Cn0KLmV4YW1wbGUgewogIC8vICNsb29rdXBbQHZhcl0oKTsgLS0gZmFpbHMsIG5lZWQgdGhlIGZvbGxvd2luZyBhbGlhcwogIEBkcjogI2xvb2t1cDJbQHZhcl07CiAgQGRyKCk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I25zIHsKICAuc2l6ZXMoKSB7CiAgICBAc21hbGw6IDYwMHB4OwogIH0KICAuYnJlYWtwb2ludChAc2l6ZSkgewogICAgQHZhbDogI25zLnNpemVzW0BAc2l6ZV07CiAgICBAbWluOiAobWluLXdpZHRoOiBAdmFsKTsKICAgIEBtYXg6IG5vdCBhbGwgYW5kIEBtaW47CiAgfQp9CgojbnMgewogIC5zaXplcygpIHsKICAgIEBzbWFsbDogNDgwcHg7CiAgfQp9CgoudmFsVG9HZXQoKSB7CiAga2V5d29yZDogc21hbGw7Cn0KCkBtZWRpYSAjbnMuYnJlYWtwb2ludCgudmFsVG9HZXRbXSlbQG1heF0gewogIC5zZWxlY3RvciB7CiAgICBwcm9wOiB2YWw7CiAgfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/namespacing/namespacing-operations.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I25zIHsKICAub3B0aW9ucygpIHsKICAgIHZhbDE6IDEwcHg7CiAgfQp9CgpAbnM6IHsKICBAb3B0aW9uczogewogICAgdmFsMjogMjBweDsKICB9Cn0KCi5mb28gewogIHZhbDogI25zLm9wdGlvbnNbdmFsMV0gKyBAbnNbQG9wdGlvbnNdW3ZhbDJdICsgNXB4Owp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/no-js-errors/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/no-js-errors/no-js-errors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIGE6IGAxICsgMWA7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/no-js-errors/no-js-errors.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ludGF4RXJyb3I6IElubGluZSBKYXZhU2NyaXB0IGlzIG5vdCBlbmFibGVkLiBJcyBpdCBzZXQgaW4geW91ciBvcHRpb25zPyBpbiB7cGF0aH1uby1qcy1lcnJvcnMubGVzcyBvbiBsaW5lIDIsIGNvbHVtbiA2OgoxIC5hIHsKMiAgIGE6IGAxICsgMWA7CjMgfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/no-strict-math/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/no-strict-math/mixins-guards.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMjc5OAoudGVzdC1ydWxlLTI3OTggd2hlbiAoKDgrNCkgPCAxMykgeyAKICByZWdyZXNzaW9uOiBmaXhlZDsgCn0KLnRlc3QtcnVsZS0yNzk4IHdoZW4gKCg4KzYpIDwgMTMpIHsgCiAgcmVncmVzc2lvbjogc2hvdWxkIG5vdCBiZSB2aXNpYmxlOyAKfQouY29uZGl0aW9ucy1wYXJzZXItMSB3aGVuICg4KzQgPCAxMykgewogIG9ubHktYXRvbWljOiBvazsKfQouY29uZGl0aW9ucy1wYXJzZXItMSB3aGVuICg4KzYgPCAxMykgewogIG9ubHktYXRvbWljOiBzaG91bGQgbm90IGJlIHZpc2libGU7Cn0KLmNvbmRpdGlvbnMtcGFyc2VyLTIgd2hlbiAoOCsoNS0xKSA8IDEzKSB7CiAgb25seS1hdG9taWMtd2l0aC1uZXN0ZWQtcGFyZW50aGVzaXM6IG9rOwp9Ci5jb25kaXRpb25zLXBhcnNlci0yIHdoZW4gKDgrKDE1LTEpIDwgMTMpIHsKICBvbmx5LWF0b21pYy13aXRoLW5lc3RlZC1wYXJlbnRoZXNpczogc2hvdWxkIG5vdCBiZSB2aXNpYmxlOwp9Ci5jb25kaXRpb25zLXBhcnNlci0zIHdoZW4gKDggPCAoMTMrMSkpIHsKICBvbmx5LWF0b21pYy1uZXN0ZWQtcGFyZW50aGVzaXMtb24tcmlnaHQ6IG9rOwp9Ci5jb25kaXRpb25zLXBhcnNlci0zIHdoZW4gKDggPCAoMysxKSkgewogIG9ubHktYXRvbWljLW5lc3RlZC1wYXJlbnRoZXNpcy1vbi1yaWdodDogc2hvdWxkIG5vdCBiZSB2aXNpYmxlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/no-strict-math/no-sm-operations.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm5hbWVkLWNvbG9ycy1pbi1leHByZXNzaW9ucyB7CiAgICBjb2xvci0wOiAwIC1yZWQ7ICAKICAgIGNvbG9yLTE6IDEgLSByZWQ7IAogICAgY29sb3ItMjogcmVkICogMjsKICAgIGNvbG9yLTM6IDIgKiByZWQ7CiAgICBAMzogLXJlZDsKICAgICYtYmFyQHszfSB7eDogeX0KICAgIEBjb2xvcjogcmVkOwogICAgJi1iYXJAe2NvbG9yfSB7YTogYX07CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlLTI7CiAgICBjb2xvcjogZ3JlZW4tYmxhY2s7CiAgICBhbmltYXRpb246IGJsdWUtY2hhbmdlIDVzIGluZmluaXRlOwp9Ci5kaXZpc2lvbiB7CiAgICB2YWx1ZTogKCgxNnB4IC4vIDIpIC8gMikgLyAyOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/postProcessorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/postProcessorPlugin/postProcessor.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNvbG9yOiBpbmhlcml0OwoudGVzdC1ydWxlIHsKICAgIGNvbG9yOiBAY29sb3I7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/preProcessorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/preProcessorPlugin/preProcessor.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZSB7CiAgICBjb2xvcjogQGNvbG9yOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/process-imports/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/process-imports/google.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcGVuK1NhbnM6NDAwLDcwMCcpOwoKLmEgeyBiOiBjOyB9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rewrite-urls-all/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rewrite-urls-all/folder/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rewrite-urls-all/folder/file.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydGVkLWZpbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcGF0aC8uLi9yZWxhdGl2ZS9wYXRoIik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rewrite-urls-all/rewrite-urls-all.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi9mb2xkZXIvZmlsZS5sZXNzIjsKCiNyZXdyaXRlLXVybHMtYWxsIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4vcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS8uLi9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuL3JlbGF0aXZlLy4uL3BhdGgvLi4iKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZSIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9wYXRoLy4uL3JlbGF0aXZlL3BhdGgiKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rewrite-urls-local/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rewrite-urls-local/folder/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rewrite-urls-local/folder/file.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydGVkLWZpbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcGF0aC8uLi9yZWxhdGl2ZS9wYXRoIik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rewrite-urls-local/rewrite-urls-local.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi9mb2xkZXIvZmlsZS5sZXNzIjsKCiNyZXdyaXRlLXVybHMtbG9jYWwgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuL3JlbGF0aXZlLy4uL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4vcmVsYXRpdmUvLi4vcGF0aC8uLiIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlL3BhdGgvLi4vcmVsYXRpdmUvcGF0aCIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/root-registry/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/root-registry/file.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04Ijs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/root-registry/root.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMzExMgpAZmlsZTogZXh0KCk7CkBpbXBvcnQgJ0B7ZmlsZX0nOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rootpath-rewrite-urls-all/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rootpath-rewrite-urls-all/folder/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rootpath-rewrite-urls-all/folder/file.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydGVkLWZpbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcGF0aC8uLi9yZWxhdGl2ZS9wYXRoIik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rootpath-rewrite-urls-all/rootpath-rewrite-urls-all.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi9mb2xkZXIvZmlsZS5sZXNzIjsKCiNyb290cGF0aC1yZXdyaXRlLXVybHMtYWxsIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4vcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vcmVsYXRpdmUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS8uLi9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuL3JlbGF0aXZlLy4uL3BhdGgvLi4iKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZSIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9wYXRoLy4uL3JlbGF0aXZlL3BhdGgiKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rootpath-rewrite-urls-local/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rootpath-rewrite-urls-local/folder/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rootpath-rewrite-urls-local/folder/file.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ltcG9ydGVkLWZpbGUgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8uLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIm1vZHVsZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcGF0aC8uLi9yZWxhdGl2ZS9wYXRoIik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/rootpath-rewrite-urls-local/rootpath-rewrite-urls-local.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi9mb2xkZXIvZmlsZS5sZXNzIjsKCiNyb290cGF0aC1yZXdyaXRlLXVybHMtbG9jYWwgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi9yZWxhdGl2ZS9wYXRoIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuL3JlbGF0aXZlLy4uL3BhdGgiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4vcmVsYXRpdmUvLi4vcGF0aC8uLiIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlIik7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJtb2R1bGUvcGF0aCIpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgibW9kdWxlL3BhdGgvLi4vcmVsYXRpdmUvcGF0aCIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps-disable-annotation/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps-disable-annotation/basic.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgLyojIHNvdXJjZU1hcHBpbmdVUkw9dGhpcy1zaG91bGQtYmUtb2suY3NzLm1hcCAqLwogIGNvbG9yOiB3aGl0ZTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps-empty/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps-empty/empty.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps-empty/var-defs.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHRlc3QtdmFyOiAnc29tZXRoaW5nJzs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps/basic.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm15LWNvbG9yIjogInJlZCIKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps/basic.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhcjogYmxhY2s7CgouYSgpIHsKICBjb2xvcjogcmVkOwp9CgouYiB7CiAgY29sb3I6IGdyZWVuOwogIC5hKCk7CiAgY29sb3I6IGJsdWU7CiAgYmFja2dyb3VuZDogQHZhcjsKfQoKLmEsIC5iIHsKICBiYWNrZ3JvdW5kOiBncmVlbjsKICAuYywgLmQgewogICAgYmFja2dyb3VuZDogZ3JheTsKICAgICYgKyAmIHsKICAgICAgY29sb3I6IHJlZDsKICAgIH0KICB9Cn0KCi5leHRlbmQ6ZXh0ZW5kKC5hIGFsbCkgewogIGNvbG9yOiBwaW5rOwp9CkBpbXBvcnQgKGlubGluZSkgImltcG9ydGVkLmNzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps/custom-props.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNvbG9yOiB2YXIoLS1mb28pOwoKYm9keSB7Cglib3JkZXItbGVmdDogMXB4IHNvbGlkIEBjb2xvcjsKCXdpZHRoOiBjYWxjKDUwJSAtIDVweCk7Cglib3JkZXItdG9wOiAxcHggc29saWQgQGNvbG9yOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/sourcemaps/imported.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lypjb21tZW50cyovCi51bnVzZWQtY3NzIHsKICAgIGNvbG9yOiBpbmhlcml0Owp9Ci5pbXBvcnRlZCB7CiAgICBjb2xvcjogYmxhY2s7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/static-urls/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/static-urls/urls.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmIik7CiAgc3JjOiBsb2NhbChGdXR1cmEtTWVkaXVtKSwKICAgICAgIHVybChmb250cy5zdmcjTXlHZW9tZXRyaWNNb2Rlcm4pIGZvcm1hdCgic3ZnIik7Cn0KI3Nob3J0aGFuZHMgewogIGJhY2tncm91bmQ6IHVybCgiaHR0cDovL3d3dy5sZXNzY3NzLm9yZy9zcGVjLmh0bWwiKSBuby1yZXBlYXQgMCA0cHg7Cn0KI21pc2MgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvaW1hZ2UuanBnKTsKfQojZGF0YS11cmkgewogIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztjaGFyc2V0PXV0Zi04O2Jhc2U2NCwKICAgIGtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUFRTUFBQUFsUFcwaUFBQUFCbEJNVkVVQUFBRC8KICAgIGsvLytsMlovZEFBQUFNMGxFUVZSNG5HUDQvNS9oLzErRy81OFpEckF6M0QvTWNIOHl3ODNORERlTkdlNFUKICAgIGtnOUM5end6M2dWTE1EQS9BNlA5L0FGR0dGeWpPWFp0UUFBQUFBRWxGVGtTdVFtQ0MpOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3gtcG5nLGY5ZGlmU1NGSUlHRklGSkQxZjk4MkZTREtBQTk9PSk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVwiUm9ra2l0dFwiOlwoNDAwXCksNzAwKTsKfQoKI3N2Zy1kYXRhLXVyaSB7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsIDxzdmcgdmVyc2lvbj0iMS4xIj48Zz48L2c+PC9zdmc+Jyk7Cn0KCi5jb21tYS1kZWxpbWl0ZWQgewogIGJhY2tncm91bmQ6IHVybChiZy5qcGcpIG5vLXJlcGVhdCwgdXJsKGJnLnBuZykgcmVwZWF0LXggdG9wIGxlZnQsIHVybChiZyk7Cn0KLnZhbHVlcyB7CiAgICBAYTogJ1RyZWJ1Y2hldCc7CiAgICB1cmw6IHVybChAYSk7Cn0KCkBpbXBvcnQgIi4uL19tYWluL2ltcG9ydC9pbXBvcnQtYW5kLXJlbGF0aXZlLXBhdGhzLXRlc3QiOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/strict-units/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/strict-units/strict-units.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnVuaXRzIHsKICBjYW5jZWxzLXRvLW5vdGhpbmc6ICgxcHggLyAxcHgpOwogIGNhbmNlbHM6ICgoKCgxMHB4IC8gNWVtKSAvIDFweCkgKiAzZW0pICogMXB4KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/url-args/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/url-args/urls.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmIik7CiAgc3JjOiBsb2NhbChGdXR1cmEtTWVkaXVtKSwKICAgICAgIHVybChmb250cy5zdmcjTXlHZW9tZXRyaWNNb2Rlcm4pIGZvcm1hdCgic3ZnIik7Cn0KI3Nob3J0aGFuZHMgewogIGJhY2tncm91bmQ6IHVybCgiaHR0cDovL3d3dy5sZXNzY3NzLm9yZy9zcGVjLmh0bWwiKSBuby1yZXBlYXQgMCA0cHg7CiAgYmFja2dyb3VuZDogdXJsKCJpbWcuanBnIikgY2VudGVyIC8gMTAwcHg7CiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoaW1hZ2UucG5nKSBjZW50ZXIgLyAxcHggMTAwcHggcmVwZWF0LXggc2Nyb2xsIGNvbnRlbnQtYm94IHBhZGRpbmctYm94Owp9CiNtaXNjIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL2ltYWdlLmpwZyk7Cn0KI2RhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7Y2hhcnNldD11dGYtODtiYXNlNjQsCiAgICBraVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFBUU1BQUFBbFBXMGlBQUFBQmxCTVZFVUFBQUQvCiAgICBrLy8rbDJaL2RBQUFBTTBsRVFWUjRuR1A0LzUvaC8xK0cvNThaRHJBejNEL01jSDh5dzgzTkREZU5HZTRVCiAgICBrZzlDOXp3ejNnVkxNREEvQTZQOS9BRkdHRnlqT1hadFFBQUFBQUVsRlRrU3VRbUNDKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCIpOwp9Cgojc3ZnLWRhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwgPHN2ZyB2ZXJzaW9uPSIxLjEiPjxnPjwvZz48L3N2Zz4nKTsKfQoKLmNvbW1hLWRlbGltaXRlZCB7CiAgYmFja2dyb3VuZDogdXJsKGJnLmpwZykgbm8tcmVwZWF0LCB1cmwoYmcucG5nKSByZXBlYXQteCB0b3AgbGVmdCwgdXJsKGJnKTsKfQoudmFsdWVzIHsKICAgIEBhOiAnVHJlYnVjaGV0JzsKICAgIHVybDogdXJsKEBhKTsKfQoKQGltcG9ydCAiLi4vX21haW4vaW1wb3J0L2ltcG9ydHMvZm9udCI7CgojZGF0YS11cmkgewogIHVyaTogZGF0YS11cmkoJ2ltYWdlL2pwZWc7YmFzZTY0JywgJy4uL2RhdGEvaW1hZ2UuanBnJyk7Cn0KCiNkYXRhLXVyaS1ndWVzcyB7CiAgdXJpOiBkYXRhLXVyaSgnLi4vZGF0YS9pbWFnZS5qcGcnKTsKfQoKI2RhdGEtdXJpLWFzY2lpIHsKICB1cmktMTogZGF0YS11cmkoJ3RleHQvaHRtbCcsICcuLi9kYXRhL3BhZ2UuaHRtbCcpOwogIHVyaS0yOiBkYXRhLXVyaSgnLi4vZGF0YS9wYWdlLmh0bWwnKTsKfQoKI3N2Zy1mdW5jdGlvbnMgewogIGJhY2tncm91bmQtaW1hZ2U6IHN2Zy1ncmFkaWVudCh0byBib3R0b20sIGJsYWNrLCB3aGl0ZSk7CiAgYmFja2dyb3VuZC1pbWFnZTogc3ZnLWdyYWRpZW50KHRvIGJvdHRvbSwgYmxhY2ssIG9yYW5nZSAzJSwgd2hpdGUpOwogIEBncmVlbl81OiBncmVlbiA1JTsKICBAb3JhbmdlX3BlcmNlbnRhZ2U6IDMlOwogIEBvcmFuZ2VfY29sb3I6IG9yYW5nZTsKICBiYWNrZ3JvdW5kLWltYWdlOiBzdmctZ3JhZGllbnQodG8gYm90dG9tLCAobWl4KGJsYWNrLCB3aGl0ZSkgKyAjNDQ0KSAxJSwgQG9yYW5nZV9jb2xvciBAb3JhbmdlX3BlcmNlbnRhZ2UsICgoQGdyZWVuXzUpKSwgd2hpdGUgOTUlKTsKfQoKI2RhdGEtdXJpLXdpdGgtc3BhY2VzIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIGRhdGE6aW1hZ2UveC1wbmcsZjlkaWZTU0ZJSUdGSUZKRDFmOTgyRlNES0FBOT09KTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoICcgZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0nKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/visitorPlugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/visitorPlugin/visitor.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZSB7CiAgICBjb2xvcjogcmVkOwogICAgLXNvbWUtYXJpYml0cmFyeS1wcm9wZXJ0eTogdmFsdWU7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/calc.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhbDogMTBweDsKLm5vLW1hdGggewogIEBjOiAxMHB4ICsgMjBweDsKICBAY2FsYzogKEB2YWwgKyAzMHB4KTsKICByb290OiBjYWxjKDEwMCUgLSBAYyk7CiAgcm9vdDI6IGNhbGMoMTAwJSAtIEBjYWxjKTsKICBAdmFyOiA1MHZoLzI7CiAgd2lkdGg6IGNhbGMoNTAlICsgKEB2YXIgLSAyMHB4KSk7CiAgaGVpZ2h0OiBjYWxjKDUwJSArICgoQHZhciAtIDIwcHgpKSk7CiAgbWluLWhlaWdodDogY2FsYygoKDEwdmgpKSArIGNhbGMoKDV2aCkpKTsKICBmb286IDEgKyAyIGNhbGMoMyArIDQpIDUgKyA2OwogIEBmbG9vcjogZmxvb3IoMSArIC4xKTsKICBiYXI6IGNhbGMoQGZsb29yICsgMjAlKTsKfQoKLmIgewogIEBhOiAxMHB4OwogIEBiOiAxMHB4OwoKICBvbmU6IGNhbGMoMTAwJSAtICgobWluKEBhICsgQGIpKSkpOwogIHR3bzogY2FsYygxMDAlIC0gKCgoQGEgKyBAYikpKSk7CiAgdGhyZWU6IGNhbGMoZSgnMTAwJScpIC0gKDMgKiAxKSk7CiAgZm91cjogY2FsYyh+JzEwMCUnIC0gKDMgKiAxKSk7CiAgbmVzdGVkOiBjYWxjKGNhbGMoMi4yNXJlbSArIDJweCkgLSAxcHggKiAyKTsKfQoKLmMgewogIEB2OiAxMHB4OwogIGhlaWdodDogY2FsYygxMDAlIC0gKChAdiAqIDMpICsgKEB2ICogMikpKTsKfQoKLmNvcnJlY3RseS1leGl0LWNhbGMtbW9kZSB7CiAgICBAYTogMTA7CiAgICBoMiB7IHdpZHRoOiB1bml0KEBhLCBweCk7IH0KCiAgICBkaXYgeyB3aWR0aDogY2FsYygxMDBweCAqIDIpOyB9CgogICAgLm1rLW1hcCgpIHsKICAgICAgICB0ZXh0OiB3aGl0ZTsKICAgICAgICBiYWNrZ3JvdW5kOiBibGFjazsKICAgIH0KCiAgICBAcDogLm1rLW1hcCgpOwoKICAgIGgxIHsgY29sb3I6IEBwW3RleHRdOyB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/charsets.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKCkBpbXBvcnQgImltcG9ydC9pbXBvcnQtY2hhcnNldC10ZXN0Ijs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/colors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3llbG93IHsKICAjc2hvcnQgewogICAgY29sb3I6ICNmZWE7CiAgfQogICNsb25nIHsKICAgIGNvbG9yOiAjZmZlZWFhOwogIH0KICAjcmdiYSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDIzOCwgMTcwLCAwLjEpOwogIH0KICAjYXJnYiB7CiAgICBjb2xvcjogYXJnYihyZ2JhKDI1NSwgMjM4LCAxNzAsIDAuMSkpOwogIH0KfQoKI2JsdWUgewogICNzaG9ydCB7CiAgICBjb2xvcjogIzAwZjsKICB9CiAgI2xvbmcgewogICAgY29sb3I6ICMwMDAwZmY7CiAgfQogICNyZ2JhIHsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDI1NSwgMC4xKTsKICB9CiAgI2FyZ2IgewogICAgY29sb3I6IGFyZ2IocmdiYSgwLCAwLCAyNTUsIDAuMSkpOwogIH0KfQoKI2FscGhhICNoc2xhIHsKICAgIGNvbG9yOiBoc2xhKDExLCAyMCUsIDIwJSwgMC42KTsKfQoKI292ZXJmbG93IHsKICAuYSB7IGNvbG9yOiAoIzExMTExMSAtICM0NDQ0NDQpOyB9IC8vICMwMDAwMDAKICAuYiB7IGNvbG9yOiAoI2VlZSArICNmZmYpOyB9IC8vICNmZmZmZmYKICAuYyB7IGNvbG9yOiAoI2FhYSAqIDMpOyB9IC8vICNmZmZmZmYKICAuZCB7IGNvbG9yOiAoIzAwZWUwMCArICMwMDk5MDApOyB9IC8vICMwMGZmMDAKICAuZSB7IGNvbG9yOiByZ2JhKC05OS45LCAzMS40MTU5LCAzMjEsIDAuNDIpOyB9Cn0KCiNncmV5IHsKICBjb2xvcjogcmdiKDIwMCwgMjAwLCAyMDApOwp9CgojYWEzMzMzIHsKICBjb2xvcjogcmdiKDY2LjY2JSwgMjAlLCAyMCUpOwp9CgojYmI4MDgwIHsKICBjb2xvcjogaHNsKDBkZWcsIDMwJSwgNjIlKTsKfQoKI2NjZmYwMCB7CiAgY29sb3I6IGhzbCg3MmRlZywgMTAwJSwgNTAlKTsKfQoKLmxpZ2h0ZW5ibHVlIHsKICAgIGNvbG9yOiBsaWdodGVuKGJsdWUsIDEwJSk7Cn0KCi5kYXJrZW5ibHVlIHsKICAgIGNvbG9yOiBkYXJrZW4oYmx1ZSwgMTAlKTsKfQoKLnVua25vd25jb2xvcnMgewogICAgY29sb3I6IGJsdWUyOwogICAgYm9yZGVyOiAycHggc29saWQgc3VwZXJyZWQ7Cn0KCi50cmFuc3BhcmVudCB7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwp9CiNhbHBoYSB7CiAgICBAY29sb3J2YXI6IHJnYmEoMTUwLCAyMDAsIDE1MCwgMC43KTsKICAgICNmcm9tdmFyIHsKICAgICAgICBvcGFjaXR5OiBhbHBoYShAY29sb3J2YXIpOwogICAgfQogICAgI3Nob3J0IHsKICAgICAgICBvcGFjaXR5OiBhbHBoYSgjYWFhKTsKICAgIH0KICAgICNsb25nIHsKICAgICAgICBvcGFjaXR5OiBhbHBoYSgjYmFiYWJhKTsKICAgIH0KICAgICNyZ2JhIHsKICAgICAgICBvcGFjaXR5OiBhbHBoYShyZ2JhKDUwLCAxMjAsIDk1LCAwLjIpKTsKICAgIH0KICAgICNoc2wgewogICAgICAgIG9wYWNpdHk6IGFscGhhKGhzbCgxMjAsIDEwMCUsIDUwJSkpOwogICAgfQp9CgojcGVyY2VudGFnZSB7CiAgY29sb3I6IHJlZChyZ2IoMTAwJSwgMCwgMCkpOwogIGJvcmRlci1jb2xvcjogcmdiYSgxMDAlLCAwLCAwLCA1MCUpOwp9CgojcnJnZ2JiYWEgewogIHRlc3QtMTogIzU1RkY1NTk5OwogIHRlc3QtMjogIzVGNTk7CiAgdGVzdC0zOiBsaWdodGVuKCM1NUZGNTU5OSwgMTAlKTsKICB0ZXN0LTQ6IGZhZGUoIzVGNTksIDEwJSk7CiAgdGVzdC01OiByZ2JhKCM1NUZGNTU5OSk7CiAgdGVzdC02OiByZ2JhKCM1RjU5KTsKICB0ZXN0LTc6IHJnYmEoIzVGNTksIDAuNSk7CiAgdGVzdC04OiByZ2JhKHZhcigtLWNvbG9yLWFjY2VudCksIDAuMik7CiAgdGVzdC05OiByZ2IodmFyKC0tY29sb3ItYWNjZW50KSk7CiAgdGVzdC05OiBoc2xhKHZhcigtLWNvbG9yLWFjY2VudCkpOwogIHRlc3QtMTA6IGNvbG9yKCcjNTVGRjU1OTknKTsKICB0ZXN0LTExOiBoc2xhKCM1RjU5KTsKICB0ZXN0LTEyOiBoc2xhKCM1RjU5LCAwLjUpOwogIC0tc2VtaS10cmFuc3BhcmVudC1kYXJrLWJhY2tncm91bmQ6ICMwMDFlMDBlZTsKICAtLXNlbWktdHJhbnNwYXJlbnQtZGFyay1iYWNrZ3JvdW5kLTI6IHJnYmEoMCwgMzAsIDAsIDIzOCk7IC8vIGludmFsaWQgb3BhY2l0eSB3aWxsIGJlIGNhcHBlZAp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/comments.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqKioqKioqKioqKioqKioqKlwKKiAgICAgICAgICAgICAgICAgICoKKiAgQ29tbWVudCBIZWFkZXIgICoKKiAgICAgICAgICAgICAgICAgICoKXCoqKioqKioqKioqKioqKioqKi8KCi8qCgogICAgQ29tbWVudAoKKi8KCi8qCiAqIENvbW1lbnQgVGVzdAogKgogKiAtIGNsb3VkaGVhZCAoaHR0cDovL2Nsb3VkaGVhZC5uZXQpCiAqCiAqLwoKLy8vLy8vLy8vLy8vLy8vLwpAdmFyOiAiY29udGVudCI7Ci8vLy8vLy8vLy8vLy8vLy8KCi8qIENvbG9ycwogKiAtLS0tLS0KICogICAjRURGOEZDIChiYWNrZ3JvdW5kIGJsdWUpCiAqICAgIzE2NkM4OSAoZGFya2VzdCBibHVlKQogKgogKiBUZXh0OgogKiAgICMzMzMgKHN0YW5kYXJkIHRleHQpIC8vIEEgY29tbWVudCB3aXRoaW4gYSBjb21tZW50IQogKiAgICMxRjlFQzkgKHN0YW5kYXJkIGxpbmspCiAqCiAqLwoKLyogQGdyb3VwIFZhcmlhYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tICovCiNjb21tZW50cyAvKiBib28gKi8vKiBib28gYWdhaW4qLywKLy8uY29tbWVudGVkX291dDEKLy8uY29tbWVudGVkX291dDIKLy8uY29tbWVudGVkX291dDMKLmNvbW1lbnRzIC8vZW5kIG9mIGNvbW1lbnRzMQovL2VuZCBvZiBjb21tZW50czIKewogIC8qKi8gLy8gQW4gZW1wdHkgY29tbWVudAogIGNvbG9yOiByZWQ7IC8qIEEgQy1zdHlsZSBjb21tZW50ICovICAvKiBBIEMtc3R5bGUgY29tbWVudCAqLwogIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgLy8gQSBsaXR0bGUgY29tbWVudAogIGZvbnQtc2l6ZTogMTJweDsKCiAgLyogbG9zdCBjb21tZW50ICovIGNvbnRlbnQ6IEB2YXI7CgogIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwoKICAvLyBwYWRkaW5nICYgbWFyZ2luIC8vCiAgcGFkZGluZzogMDsgLy8gfXsgJyIKICBtYXJnaW46IDJlbTsKfSAvLwoKLyogY29tbWVudGVkIG91dAogICNtb3JlLWNvbW1lbnRzIHsKICAgIGNvbG9yOiBncmV5OwogIH0KKi8KCi5zZWxlY3RvciAvKiAud2l0aCAqLywgLmxvdHMsIC8qIG9mICovIC5jb21tZW50cyB7CiAgY29sb3IvKiBzdXJ2aXZlICovIC8qIG1lIHRvbyAqLzogZ3JleSwgLyogYmx1ZSAqLyBvcmFuZ2U7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHggLyogd2Via2l0IG9ubHkgKi87CiAgLW1vei1ib3JkZXItcmFkaXVzOiAoMnB4ICogNCkgLyogbW96IG9ubHkgd2l0aCBvcGVyYXRpb24gKi87Cn0KCi5taXhpbl9kZWZfd2l0aF9jb2xvcnMoQGE6IHdoaXRlLCAvLyBpbgogICAgICAgQGI6IDFweCAvL3B1dCBpbiBAYiAtIGNhdXNlcyBwcm9ibGVtcyEgLS0tPgogICAgICAgKSAvLyB0aGUKICAgICAgIHdoZW4gKEBhID0gd2hpdGUpIHsKICAgIC50ZXN0LXJ1bGUgewogICAgICAgIGNvbG9yOiBAYjsKICAgIH0KfQoubWl4aW5fZGVmX3dpdGhfY29sb3JzKCk7CgovLyAucyB3aGVuCi8vUi8yCgouc3Itb25seS1mb2N1c2FibGUgewogIGNsaXA6IGF1dG87Cn0KCkAtd2Via2l0LWtleWZyYW1lcyAvKiBTYWZhcmkgKi8gaG92ZXIgLyogYW5kIENocm9tZSAqLyB7CiAgMCUgewogICAgY29sb3I6IHJlZDsKICB9Cn0KCiNsYXN0IHsgY29sb3I6IGJsdWUgfQovLwoKLyogICovLyogeyAqLy8qICAqLy8qICAqLy8qICAqLyNkaXYgeyBjb2xvcjojQTMzOyB9LyogfSAqLwoKLy8gbGluZSBpbW1lZGlhdGVseSBmb2xsb3dlZAovKmJ5IGJsb2NrICovCkBzdHJpbmdfd19jb21tZW50OiB+Ii8qIC8vIE5vdCBjb21tZW50ZWQgb3V0IC8vICovIjsKI291dHB1dC1ibG9jayB7IGNvbW1lbnQ6IEBzdHJpbmdfd19jb21tZW50OyB9Ci8qY29tbWVudCBvbiBsYXN0IGxpbmUqLw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/comments2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIGFsbCBhbmQvKiEgKi8obWF4LXdpZHRoOjEwMjRweCkge30KQC13ZWJraXQta2V5ZnJhbWVzIGhvdmVyIC8qIFNhZmFyaSBhbmQgQ2hyb21lICoveyAgfQouYmcgewogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjMzMzIC8qe2NvbW1lbnR9Ki8sICMxMTEpOwp9CiNwbGFuYWR2aXNvciwKLypjb21tZW50Ki8vKmNvbW1lbnQqLwouZmlyc3QsLypjb21tZW50Ki8vKmNvbW1lbnQqLy5wbGFubmluZyB7CiAgICBtYXJnaW46MTBweDsKICAgIHRvdGFsLXdpZHRoOiBAdG90YWwtd2lkdGg7Cn0KQGJhc2UgICAgICAgICAgICAgICAgICAgICAgIDogICAxOwpAY29sdW1uLXdpZHRoICAgICAgICAgICAgICAgOiAgIEBiYXNlICogNmVtOyAgICAgICAgICAgICAgICAvLyAgICAgIFdpZHRoIG9mIGNvbHVtbiAgICAgICAgICAgICAqLwpAZ3V0dGVyLXdpZHRoICAgICAgICAgICAgICAgOiAgIDJlbTsgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIFdpZHRoIG9mIGNvbHVtbiBzcGFjaW5nICAgICAqLwpAY29sdW1ucyAgICAgICAgICAgICAgICAgICAgOiAgIDEyOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIE51bWJlciBvZiBDb2x1bW5zICAgICAgICAgICAqLwpAZ3JpZHN5c3RlbS13aWR0aCAgICAgICAgICAgOiAgIChAY29sdW1uLXdpZHRoICogICAgICAgICAgICAvLyAgICAgIEZvciBjYWxjdWxhdGluZyB0aGUgdG90YWwgICAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY29sdW1ucykgKyAoICAgICAgICAgICAgICAgLy8gICAgICB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhLiAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGd1dHRlci13aWR0aCAqICAgICAgICAgICAgIC8vICAgICAgV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSAgICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjb2x1bW5zKTsgICAgICAgICAgICAgICAgICAvLyAgICAgIGRvIG5vdCBjaGFuZ2UgdGhpcyBmb3JtdWxhLiAqLwpAdG90YWwtd2lkdGggICAgICAgICAgICAgICAgOiAgIEBncmlkc3lzdGVtLXdpZHRoOyAgICAgICAgICAvLyAgICAgIHNldCB0byAxMDAlIGZvciBmbHVpZCBncmlkICAqLwoKLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCi5zb21lLWlubGluZS1jb21tZW50cyB7CiAgICBhOiB5ZXMgLyogY29tbWVudCAqLzsKICAgIGI6IHJlZCAvKiBjb21tZW50ICovOwogICBAYzogeWVzIC8qIGNvbW1lbnQgKi87CiAgIEBkOiByZWQgLyogY29tbWVudCAqLzsKICAgIGM6IEBjOwogICAgZDogQGQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/css-3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNvbW1hLWRlbGltaXRlZCB7CiAgdGV4dC1zaGFkb3c6IC0xcHggLTFweCAxcHggcmVkLCA2cHggNXB4IDVweCB5ZWxsb3c7CiAgLW1vei1ib3gtc2hhZG93OiAwcHQgMHB0IDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgaW5zZXQsCiAgICAwcHQgNHB4IDZweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgaW5zZXQ7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMC4wMDAwMDAwMDAxZGVnKTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogSGVhZGxpbmU7CiAgdW5pY29kZS1yYW5nZTogVSs/Pz8/Pz8sIFUrMD8/PywgVSswLTdGLCBVK0E1Owp9Ci5vdGhlciB7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxMWVtKSByb3RhdGUoLTkwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZVgoNDVkZWcpOwp9Ci5pdGVtW2RhdGEtY3JhX3p5LWF0dHIxYi11dDM9Ym9sZF0gewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CnA6bm90KFtjbGFzcyo9ImxlYWQiXSkgewogIGNvbG9yOiBibGFjazsKfQoKaW5wdXRbdHlwZT0idGV4dCJdLmNsYXNzI2lkW2F0dHI9MzJdOm5vdCgxKSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KCmRpdiNpZC5jbGFzc1thPTFdW2I9Ml0uY2xhc3M6bm90KDEpIHsKICBjb2xvcjogaW5oZXJpdDsKfQoKdWwuY29tbWEgPiBsaTpub3QoOm9ubHktY2hpbGQpOjphZnRlciB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KCm9sLmNvbW1hID4gbGk6bnRoLWxhc3QtY2hpbGQoMik6OmFmdGVyIHsKICBjb2xvcjogaW5oZXJpdDsKfQoKbGk6bnRoLWNoaWxkKDRuKzEpLApsaTpudGgtY2hpbGQoLTVuKSwKbGk6bnRoLWNoaWxkKC1uKzIpIHsKICBjb2xvcjogaW5oZXJpdDsKfQoKYVtocmVmXj0iaHR0cDovLyJdIHsKICBjb2xvcjogYmxhY2s7Cn0KCmFbaHJlZiQ9Imh0dHA6Ly8iXSB7CiAgY29sb3I6IGJsYWNrOwp9Cgpmb3JtW2RhdGEtZGlzYWJsZWRdIHsKICBjb2xvcjogYmxhY2s7Cn0KCnA6OmJlZm9yZSB7CiAgY29sb3I6IGJsYWNrOwp9CgojaXNzdWUzMjIgewogIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltMiA3cyBpbmZpbml0ZSBlYXNlLWluLW91dDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIGZyYW1lcyB7CiAgMCUgeyBib3JkZXI6IDFweCB9CiAgNS41JSB7IGJvcmRlcjogMnB4IH0KICAxMDAlIHsgYm9yZGVyOiAzcHggfQp9CgpAa2V5ZnJhbWVzIGZvbnRidWxnZXIxIHsKICB0byB7CiAgICBmb250LXNpemU6IDE1cHg7CiAgfQogIGZyb20sdG8gewogICAgZm9udC1zaXplOiAxMnB4OwogIH0KICAwJSwxMDAlIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICB9Cn0KCkBzdXBwb3J0cyAoIGJveC1zaGFkb3c6IDJweCAycHggMnB4IGJsYWNrICkgb3IKICAgICAgICAgICggLW1vei1ib3gtc2hhZG93OiAycHggMnB4IDJweCBibGFjayApIHsKICAub3V0bGluZSB7CiAgICBib3gtc2hhZG93OiAycHggMnB4IDJweCBibGFjazsKICAgIC1tb3otYm94LXNoYWRvdzogMnB4IDJweCAycHggYmxhY2s7CiAgfQp9CgpALXgtZG9jdW1lbnQgdXJsLXByZWZpeCgiImdpdGh1Yi5jb20iIikgewogIGgxIHsKICAgIGNvbG9yOiByZWQ7CiAgfQp9CgpAdmlld3BvcnQgewogIGZvbnQtc2l6ZTogMTBweDsKfQpAbmFtZXNwYWNlIGZvbyB1cmwoaHR0cDovL3d3dy5leGFtcGxlLmNvbSk7Cgpmb298aDEgeyBjb2xvcjogYmx1ZTsgfQpmb298KiB7IGNvbG9yOiB5ZWxsb3c7IH0KKnxoMSB7IGNvbG9yOiBncmVlbjsgfQpoMSB7IGNvbG9yOiBncmVlbjsgfQoudXBwZXItdGVzdCB7CiAgVXBwZXJDYXNlUHJvcGVydGllczogYWxsb3dlZDsKfQpAaG9zdCB7CiAgZGl2IHsKICAgIGRpc3BsYXk6IGJsb2NrOwogIH0KfQo6OmRpc3RyaWJ1dGVkKGlucHV0OjpwbGFjZWhvbGRlcikgewogIGNvbG9yOiAjYjNiM2IzOwp9Ci5zaGFkb3cgPiAuZG9tLApib2R5ID4gLnNoYWRvdyB7CiAgZGlzcGxheTogZG9uZTsKfQoKOmhvc3QoLnNlbCAuYSksCjpob3N0LWNvbnRleHQoLnNlbCAuYiksCi5zZWwgPiAuYiwKOjpjb250ZW50IC5zZWwgewogIHR5cGU6IHNoYWRvdy1kb207Cn0KKiBiIHsKIGM6ICdkJzsKICZbZV17CiAgIGY6ICdnJzsKIH0KfQoKI2lzc3VlMjA2NiB7CiAgYmFja2dyb3VuZDogdXJsKCcvaW1hZ2VzL2ljb24tdGVhbS5zdmcnKSAwIDAgLyBjb250YWluOwp9CgpAY291bnRlci1zdHlsZSB0cmlhbmdsZSB7CiAgc3lzdGVtOiBjeWNsaWM7CiAgc3ltYm9sczog4oCjOwogIHN1ZmZpeDogIiAiOwp9CgpALW1zLXZpZXdwb3J0ewogIC8vIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7Cn0KCkB1bmtub3duIGZvbyA0MiAoYmFyKSB7CiAgICB4IHt5OiB6fQp9CgpAdW5rbm93biBmb28gNDM7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/css-escapes.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHVnbHk6IGZ1Y2hzaWE7CgouZXNjYXBlXHxyYW5kb21cfGNoYXIgewogICAgY29sb3I6IHJlZDsKfQoKLm1peGluXCF0VXAgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi8vIGNsYXNzPSI0MDQiCi5cMzQgMDQgewogICAgYmFja2dyb3VuZDogcmVkOwoKICAgIHN0cm9uZyB7CiAgICAgICAgY29sb3I6IEB1Z2x5OwogICAgICAgIC5taXhpblwhdFVwOwogICAgfQp9CgoudHJhaWxpbmdUZXN0XCsgewogICAgY29sb3I6IHJlZDsKfQoKLyogVGhpcyBoaWRlb3VzIHRlc3Qgb2YgaGlkZW91c25lc3MgY2hlY2tzIGZvciB0aGUgc2VsZWN0b3IgImJsb2NrcXVvdGUiIHdpdGggdmFyaW91cyBwZXJtdXRhdGlvbnMgb2YgaGV4IGVzY2FwZXMgKi8KXDYyXDZjXDZmIFw2MyBcNkIgXDAwNzEgXDAwMDA3NW9cNzQgZSB7CiAgICBjb2xvcjogc2lsdmVyOwp9CgpbbmdcOmNsb2FrXSwKbmdcOmZvcm0gewogIGRpc3BsYXk6IG5vbmU7Cn0KCi8vIEluIEJvb3RzdHJhcCB2MwouYm9vdHN0cmFwIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAgXDk7Cn0KCnRleHRhcmVhIHsKICAgIGZvbnQtZmFtaWx5OiAnaGVsdmV0aWNhIG5ldWUnLCd3ZW5xdWFueWkgbWljcm8gaGVpJyxcNUZBRVw4RjZGXDk2QzVcOUVEMSwgXDVCOEJcNEY1Mywgc2Fucy1zZXJpZjsKfQoKZSgnYW55dGhpbmcgdG8gdW5xdW90ZScpOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/css-grid.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LndyYXBwZXIgewogIGRpc3BsYXk6IGdyaWQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBbY29sMS1zdGFydF0gOWZyIFtjb2wxLWVuZF0gMTBweCBbY29sMi1zdGFydF0gM2ZyIFtjb2wyLWVuZF07CiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvOwp9Cgoud3JhcHBlciB7CiAgZGlzcGxheTogZ3JpZDsKICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IFtsZWZ0LWJvdW5kXSBhdXRvIFtjb250YWluZXItbGVmdF0gMTE3MHB4IFtjb250YWluZXItcmlnaHRdIGF1dG8gW3JpZ2h0LWJvdW5kXTsKICBncmlkLXRlbXBsYXRlLXJvd3M6IFtyb3ctMS1zdGFydF0gMTQwcHggW3Jvdy0yLXN0YXJ0XSAzOTBweCBbcm93LTMtc3RhcnRdIDIwMHB4IFtyb3ctNC1zdGFydF0gMTIwcHggW3Jvdy01LXN0YXJ0XSAxMjBweCBbcm93LTYtc3RhcnRdIDEyMHB4Owp9CgouY29udGFpbmVyLTEyIHsKICB6LWluZGV4OiAyMDsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtY29sdW1uOiBjb250YWluZXItbGVmdCAvIHNwYW4gMTsKICBncmlkLXJvdzogMjsKICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IFt3cmFwY29sLTEtc3RhcnRdIDFmciBbd3JhcGNvbC0xLWVuZF0gMTVweCBbd3JhcGNvbC0yLXN0YXJ0XSAxZnIgW3dyYXBjb2wtMi1lbmRdIDE1cHggW3dyYXBjb2wtMy1zdGFydF0gMWZyIFt3cmFwY29sLTMtZW5kXSAxNXB4IFt3cmFwY29sLTQtc3RhcnRdIDFmciBbd3JhcGNvbC00LWVuZF0gMTVweCBbd3JhcGNvbC01LXN0YXJ0XSAxZnIgW3dyYXBjb2wtNS1lbmRdIDE1cHggW3dyYXBjb2wtNi1zdGFydF0gMWZyIFt3cmFwY29sLTYtZW5kXSAxNXB4IFt3cmFwY29sLTctc3RhcnRdIDFmciBbd3JhcGNvbC03LWVuZF0gMTVweCBbd3JhcGNvbC04LXN0YXJ0XSAxZnIgW3dyYXBjb2wtOC1lbmRdIDE1cHggW3dyYXBjb2wtOS1zdGFydF0gMWZyIFt3cmFwY29sLTktZW5kXSAxNXB4IFt3cmFwY29sLTEwLXN0YXJ0XSAxZnIgW3dyYXBjb2wtMTAtZW5kXSAxNXB4IFt3cmFwY29sLTExLXN0YXJ0XSAxZnIgW3dyYXBjb2wtMTEtZW5kXSAxNXB4IFt3cmFwY29sLTEyLXN0YXJ0XSAxZnIgW3dyYXBjb2wtMTItZW5kXTsKICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgxNCwgW2d1dHRlcl0gMTBweCBbcm93XSA2MHB4KTsKfQoKLndyYXBwZXIgewogIGRpc3BsYXk6IGdyaWQ7CiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA5ZnIgMS44NzVlbSAzZnI7CiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvOwogIGdyaWQtdGVtcGxhdGUtYXJlYXM6CiAgICAiaGVhZGVyIGhlYWRlciBoZWFkZXIiCiAgICAiY29udGVudCAuIHNpZGViYXIiCiAgICAiZm9vdGVyIGZvb3RlciBmb290ZXIiOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/css-guards.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci5saWdodCB3aGVuIChsaWdodG5lc3MoQGEpID4gNTAlKSB7CiAgY29sb3I6IGdyZWVuOwp9Ci5kYXJrIHdoZW4gKGxpZ2h0bmVzcyhAYSkgPCA1MCUpIHsKICBjb2xvcjogb3JhbmdlOwp9CkBhOiAjZGRkOwoKLnNlZS10aGUgewogIEBhOiAjNDQ0OyAvLyB0aGlzIG1pcnJvcnMgd2hhdCBtaXhpbnMgZG8gLSB0aGV5IGV2YWx1YXRlIHRoZSBndWFyZHMgYXQgdGhlIHBvaW50IG9mIGRlZmluaXRpb24KICAubGlnaHQoKTsKICAuZGFyaygpOwp9CgouaGlkZS10aGUgewogIC5saWdodCgpOwogIC5kYXJrKCk7Cn0KCi5tdWx0aXBsZS1jb25kaXRpb25zLTEgd2hlbiAoQGIgPSAxKSwgKEBjID0gMiksIChAZCA9IDMpIHsKICBjb2xvcjogcmVkOwp9CgoubXVsdGlwbGUtY29uZGl0aW9ucy0yIHdoZW4gKEBiID0gMSksIChAYyA9IDIpLCAoQGQgPSAyKSB7CiAgY29sb3I6IGJsdWU7Cn0KCkBiOiAyOwpAYzogMzsKQGQ6IDM7CgouaW5oZXJpdGFuY2Ugd2hlbiAoQGIgPSAyKSB7CiAgLnRlc3QtcnVsZSB7CiAgICBjb2xvcjogYmxhY2s7CiAgfQogICY6aG92ZXIgewogICAgY29sb3I6IHBpbms7CiAgfQogIC5oaWRlbWUgd2hlbiAoQGIgPSAxKSB7CiAgICBjb2xvcjogZ3JlZW47CiAgfQogICYgd2hlbiAoQGIgPSAxKSB7CiAgICBoaWRlbWU6IGdyZWVuOwogIH0KfQoKLmhpZGVtZSB3aGVuIChAYiA9IDEpIHsKICAudGVzdC1ydWxlIHsKICAgIGNvbG9yOiBibGFjazsKICB9CiAgJjpob3ZlciB7CiAgICBjb2xvcjogcGluazsKICB9CiAgLmhpZGVtZSB3aGVuIChAYiA9IDEpIHsKICAgIGNvbG9yOiBncmVlbjsKICB9Cn0KCiYgd2hlbiAoQGIgPSAxKSB7CiAgLmhpZGVtZSB7CiAgICBjb2xvcjogcmVkOwogIH0KfQoKLm1peGluLXdpdGgtZ3VhcmQtaW5zaWRlKEBjb2xXaWR0aCkgewogIC8vIHNlbGVjdG9yIHdpdGggZ3VhcmQgKGFwcGxpZXMgYWxzbyB0byAmIHdoZW4oKSAuLi4pCiAgLmNsc1dpdGhHdWFyZCB3aGVuIChAY29sV2lkdGggPD0gMCkgewogICAgZGlzcGFseTogbm9uZTsKICB9Cn0KCi5taXhpbi13aXRoLWd1YXJkLWluc2lkZSgwcHgpOwoKLmRvbnQtc3BsaXQtbWUtdXAgewogIHdpZHRoOiAxcHg7CiAgJiB3aGVuIChAYyA9IDMpIHsKICAgIGNvbG9yOiByZWQ7CiAgfQogICYgd2hlbiAoQGMgPSAzKSB7CiAgICBoZWlnaHQ6IDFweDsKICB9CiAgKiAmIHdoZW4gKEBjID0gMykgewogICAgc2libGluZzogdHJ1ZTsKICB9Cn0KCi5zY29wZS1jaGVjayB3aGVuIChAYyA9IDMpIHsKICBAazogMXB4OwogICYgd2hlbiAoQGMgPSAzKSB7CiAgICBAazogMnB4OwogICAgc3ViLXByb3A6IEBrOwogIH0KICBwcm9wOiBAazsKfQouc2NvcGUtY2hlY2stMiB7CiAgLnNjb3BlLWNoZWNrKCk7CiAgQGs6NHB4Owp9Ci5lcnJvcnMtaWYtY2FsbGVkIHdoZW4gKEBjID0gbmV2ZXIpIHsKICAubWl4aW4tZG9lc250LWV4aXN0KCk7Cn0KYTpob3ZlciB3aGVuICgyID0gdHJ1ZSkgezU6LX0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/detached-rulesets.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHJ1bGVzZXQ6IHsKICBjb2xvcjogYmxhY2s7CiAgYmFja2dyb3VuZDogd2hpdGU7Cn0KCkBhOiAxcHg7Ci53cmFwLW1peGluKEBydWxlc2V0KSB7CiAgQGE6IGhpZGRlbiBhbmQgaWYgeW91IHNlZSB0aGlzIGluIHRoZSBvdXRwdXQgaXRzIGEgYnVnOwogIEBiOiB2aXNpYmxlOwogIEBkOiBtYWdpYy1mcmFtZTsgLy8gc2FtZSBiZWhhdmlvdXIgYXMgbWl4aW4gY2FsbHMgLSBmYWxscyBiYWNrIHRvIHRoaXMgZnJhbWUKICAud3JhcC1zZWxlY3RvciB7CiAgICAgIEBjOiB2aXNpYmxlOwogICAgICBAcnVsZXNldCgpOwogICAgICB2aXNpYmxlLW9uZTogQGI7CiAgICAgIHZpc2libGUtdHdvOiBAYzsKICAgIH0KfQoKLndyYXAtbWl4aW4oewogIGNvbG9yOiBibGFjazsKICBvbmU6IEBhOwogIEBiOiBoaWRkZW4gYW5kIGlmIHlvdSBzZWUgdGhpcyBpbiB0aGUgb3V0cHV0IGl0cyBhIGJ1ZzsKICBAYzogaGlkZGVuIGFuZCBpZiB5b3Ugc2VlIHRoaXMgaW4gdGhlIG91dHB1dCBpdHMgYSBidWc7CiAgZm91cjogQGQ7Cn0pOwoKLndyYXAtbWl4aW4oQHJ1bGVzZXQ6IHsKICBjb2xvcjogcmVkOwp9KTsKCi53cmFwLW1peGluKEBydWxlc2V0KTsKCi5kZXNrdG9wLWFuZC1vbGQtaWUoQHJ1bGVzKSB7CiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMCkgeyBAcnVsZXMoKSB9CiAgaHRtbC5sdC1pZTkgJiAgICAgICAgICAgICAgICAgICAgICAgeyBAcnVsZXMoKSB9Cn0KCmhlYWRlciB7CiAgYmFja2dyb3VuZDogYmx1ZTsKCiAgLmRlc2t0b3AtYW5kLW9sZC1pZSh7CiAgICBiYWNrZ3JvdW5kOiByZWQ7CiAgfSk7Cn0KCi53cmFwLW1peGluLWNhbGxzLXdyYXAoQHJ1bGVzZXQpIHsKICAud3JhcC1taXhpbihAcnVsZXNldCk7Cn07Cgoud3JhcC1taXhpbih7CiAgdGVzdDogZXh0cmEtd3JhcDsKICAud3JhcC1taXhpbi1jYWxscy13cmFwKHsKICAgIHRlc3Q6IHdyYXBwZWQtdHdpY2U7CiAgfSk7Cn0pOwoKLndyYXAtbWl4aW4oewogIHRlc3QtZnVuYzogdW5pdCg5MHB4KTsKICB0ZXN0LWFyaXRobWV0aWM6IHVuaXQoKDkrOSksIHB4KTsKfSk7Ci8vIHdpdGhvdXQgbWl4aW5zCkBydWxlc2V0LTI6IHsKICBiOiAxOwp9Owoud2l0aG91dC1taXhpbnMgewogIEBydWxlc2V0LTIoKTsKfQpAbXktcnVsZXNldDogewogICAgLm15LXNlbGVjdG9yIHsKICAgICAgQG1lZGlhICh0dikgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOwogICAgICB9CiAgICB9CiAgfTsKQG1lZGlhIChvcmllbnRhdGlvbjpwb3J0cmFpdCkgewogICAgQG15LXJ1bGVzZXQoKTsKICAgIC53cmFwLW1lZGlhLW1peGluKHsKICAgICAgQG1lZGlhICh0dikgewogICAgICAgIC50cmlwbGUtd3JhcHBlZC1tcSB7CiAgICAgICAgICB0cmlwbGU6IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9KTsKfQoud3JhcC1tZWRpYS1taXhpbihAcnVsZXNldCkgewogIEBtZWRpYSAod2lkZXNjcmVlbikgewogICAgQG1lZGlhIChwcmludCkgewogICAgICBAcnVsZXNldCgpOwogICAgfQogICAgQHJ1bGVzZXQoKTsKICB9CiAgQHJ1bGVzZXQoKTsKfQovLyB1bmxvY2tpbmcgbWl4aW5zCkBteS1taXhpbnM6IHsKICAubWl4aW4oKSB7CiAgICB0ZXN0OiB0ZXN0OwogIH0KfTsKQG15LW1peGlucygpOwouYSB7CiAgLm1peGluKCk7Cn0KLy8gYXMgbWl4aW4gYXJndW1lbnQgZGVmYXVsdAoubWl4aW4tZGVmaW5pdGlvbihAYToge307IEBiOiB7ZGVmYXVsdDogd29ya3M7fTspIHsKICBAYSgpOwogIEBiKCk7Cn0KLmFyZ3VtZW50LWRlZmF1bHQgewogIC5taXhpbi1kZWZpbml0aW9uKCk7CiAgLm1peGluLWRlZmluaXRpb24oe2RpcmVjdDogd29ya3M7fTsgQGI6IHtuYW1lZDogd29ya3M7fSk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/directives-bubling.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly9zaW1wbGUgY2FzZTogQGRvY3VtZW50Ci5wYXJlbnQgewogIGNvbG9yOmdyZWVuOwogIAogIEBkb2N1bWVudCB1cmwtcHJlZml4KCkgewogICAgLmNoaWxkIHsKICAgICAgY29sb3I6cmVkOwogICAgfQogIH0gICAKfQoKLy9zZWxlY3RvcnMgam9pbmluZ3MgdGVzdAoudG9wIHsKICBAc3VwcG9ydHMgKHNhbmR3aXRjaDogYnV0dGVyKSB7CiAgICAuaW5zaWRlICYgewogICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICB9CiAgfQp9CgpAc3VwcG9ydHMgKHNhbmR3aXRjaDogYnJlYWQpIHsKICAuaW4xIHsKICAgIC5pbjIgewogICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICB9CiAgfQp9CgoudG9wIHsKICAuaW5zaWRlICYgewogICAgQHN1cHBvcnRzIChzYW5kd2l0Y2g6IGhhbSkgewogICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICB9CiAgfQp9CgovL2NvbWJpbmVkIHdpdGggQGZvbnQtZmFjZSB3aGljaCBoYXMgZGlmZmVyZW50IGtpbmQgb2YgYm9keQpAc3VwcG9ydHMgKGZvbnQtZmFtaWx5OiB3ZWlyZEZvbnQpIHsKICBAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiBzb21ldGhpbmc7CiAgICBzcmM6IG1hZGUtdXAtdXJsOwogIH0KfQoKQGZvbnQtZmFjZSB7CiAgQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQpIHsKICAgIGZvbnQtZmFtaWx5OiBzb21ldGhpbmc7CiAgICBzcmM6IG1hZGUtdXAtdXJsOwogIH0KfQoKLy9idWJsaW5nIHRocm91Z2ggbWVkaWEKQHN1cHBvcnRzIChwcm9wZXJ0eTogdmFsdWUpIHsKICAub3V0T2ZNZWRpYSAmIHsKICAgIEBtZWRpYSAobWF4LXNpemU6IDJweCkgewogICAgICBAc3VwcG9ydHMgKHdoYXRldmVyOiBzb21ldGhpbmcpIHsKICAgICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICAgIH0gCiAgICB9CiAgfQp9Cgoub25Ub3AgJiB7CiAgQHN1cHBvcnRzIChwcm9wZXJ0eTogdmFsdWUpIHsKICAgIEBtZWRpYSAobWF4LXNpemU6IDJweCkgewogICAgICBAc3VwcG9ydHMgKHdoYXRldmVyOiBzb21ldGhpbmcpIHsKICAgICAgICBwcm9wZXJ0eTogdmFsdWU7CiAgICAgIH0gCiAgICB9CiAgfQp9CgoKLy9sb25nIGNvbWJpbmF0aW9uIG9mIHN1cHBvcnRzIGFuZCBtZWRpYQpAbWVkaWEgcHJpbnQgewogIGh0bWwgewogICAgaW4taHRtbDogdmlzaWJsZTsKICAgIEBzdXBwb3J0cyAodXBwZXI6IHRlc3QpIHsKICAgICAgaW4tc3VwcG9ydHM6IGZpcnN0OwogICAgICBkaXYgewogICAgICAgIGluLWRpdjogdmlzaWJsZTsKICAgICAgICBAc3VwcG9ydHMgbm90ICgtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBzdWJwaXhlbC1hbnRpYWxpYXNlZCkgewogICAgICAgICAgaW4tc3VwcG9ydHM6IHNlY29uZDsKICAgICAgICAgIEBtZWRpYSBzY3JlZW4gewogICAgICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgICAgICBuZXN0ZWQgewogICAgICAgICAgICAgIHByb3BlcnR5OiB2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQoKLy9hbm90aGVyIGxvbmcgY29tYmluYXRpb24gb2Ygc3VwcG9ydHMgYW5kIG1lZGlhCkBtZWRpYSBwcmludCB7CiAgQG1lZGlhIChtYXgtc2l6ZTogMnB4KSB7CiAgICAuaW4xIHsKICAgICAgc3RheTogaGVyZTsKICAgICAgQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQpIHsKICAgICAgICAuaW4yICYgewogICAgICAgICAgQHN1cHBvcnRzICh3aGF0ZXZlcjogc29tZXRoaW5nKSB7CiAgICAgICAgICAgIHByb3BlcnR5OiB2YWx1ZTsKICAgICAgICAgIH0gCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9CgovL2NhbGxlZCBmcm9tIG1peGluIAoubmVzdGVkU3VwcG9ydHNNaXhpbigpIHsKICBmb250LXdlaWdodDogMzAwOwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkOwogIEBzdXBwb3J0cyBub3QgKC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkKSB7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbmVzdGVkIHsKICAgICAgcHJvcGVydHk6IHZhbHVlOwogICAgfQogIH0KfQoKaHRtbCB7CiAgICAubmVzdGVkU3VwcG9ydHNNaXhpbjsKfQoKLy8gc2VsZWN0b3JzIHNob3VsZCBub3QgcHJvcGFnYXRlIGludG8gYWxsIGRpcmVjdGl2ZSB0eXBlcwoub25Ub3AgewogIEBmb250LWZhY2UgewogICAgZm9udC1mYW1pbHk6IHNvbWV0aGluZzsKICAgIHNyYzogbWFkZS11cC11cmw7CiAgfQoKICBAa2V5ZnJhbWVzICJ0ZXh0c2NhbGUiIHsKICAgICAgMCUgeyBmb250LXNpemUgOiAxZW07IH0KICAgIDEwMCUgeyBmb250LXNpemUgOiAyZW07IH0KICB9CgogIGFuaW1hdGlvbiAgIDogInRleHRzY2FsZSI7CiAgZm9udC1mYW1pbHkgOiBzb21ldGhpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/empty.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/extend-chaining.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly92ZXJ5IHNpbXBsZSBjaGFpbmluZwouYSB7CiAgY29sb3I6IGJsYWNrOwp9Ci5iOmV4dGVuZCguYSkge30KLmM6ZXh0ZW5kKC5iKSB7fQoKLy92ZXJ5IHNpbXBsZSBjaGFpbmluZywgb3JkZXJpbmcgbm90IGltcG9ydGFudAoKLmQ6ZXh0ZW5kKC5lKSB7fQouZTpleHRlbmQoLmYpIHt9Ci5mIHsKICBjb2xvcjogYmxhY2s7Cn0KCi8vZXh0ZW5kIHdpdGggYWxsCgouZy5oIHsKICBjb2xvcjogYmxhY2s7Cn0KLmkuajpleHRlbmQoLmcgYWxsKSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLms6ZXh0ZW5kKC5pIGFsbCkge30KCi8vZXh0ZW5kIG11bHRpLWNoYWluaW5nCgoubCB7CiAgY29sb3I6IGJsYWNrOwp9Ci5tOmV4dGVuZCgubCl7fQoubjpleHRlbmQoLm0pe30KLm86ZXh0ZW5kKC5uKXt9Ci5wOmV4dGVuZCgubyl7fQoucTpleHRlbmQoLnApe30KLnI6ZXh0ZW5kKC5xKXt9Ci5zOmV4dGVuZCgucil7fQoudDpleHRlbmQoLnMpe30KCi8vIHNlbGYgcmVmZXJlbmNpbmcgaXMgaWdub3JlZAoKLnUge2NvbG9yOiBibGFjazt9Ci52LnUudjpleHRlbmQoLnUgYWxsKXt9CgovLyBjaXJjdWxhciByZWZlcmVuY2UgYmVjYXVzZSB0aGUgbmV3IGV4dGVuZCBwcm9kdWN0IHdpbGwgbWF0Y2ggdGhlIGV4aXN0aW5nIGV4dGVuZAoKLnc6ZXh0ZW5kKC53KSB7Y29sb3I6IGJsYWNrO30KLnYudy52OmV4dGVuZCgudyBhbGwpe30KCi8vIGNsYXNzaWMgY2lyY3VsYXIgcmVmZXJlbmNlcwoKLng6ZXh0ZW5kKC56KSB7CiAgY29sb3I6IHg7Cn0KLnk6ZXh0ZW5kKC54KSB7CiAgY29sb3I6IHk7Cn0KLno6ZXh0ZW5kKC55KSB7CiAgY29sb3I6IHo7Cn0KCi8vdmVyeSBzaW1wbGUgY2hhaW5pbmcsIGJ1dCB3aXRoIHRoZSBleHRlbmQgaW5zaWRlIHRoZSBydWxlc2V0Ci52YSB7CiAgY29sb3I6IGJsYWNrOwp9Ci52YiB7CiAgJjpleHRlbmQoLnZhKTsKICBjb2xvcjogaW5oZXJpdDsKfQoudmMgewogICY6ZXh0ZW5kKC52Yik7Cn0KCi8vIG1lZGlhIHF1ZXJpZXMgLSBkb24ndCBleHRlbmQgb3V0c2lkZSwgZG8gZXh0ZW5kIGluc2lkZQoKQG1lZGlhICh0dikgewogIC5tYTpleHRlbmQoLmEsLmIsLmMsLmQsLmUsLmYsLmcsLmgsLmksLmosLmssLmwsLm0sLm4sLm8sLnAsLnEsLnIsLnMsLnQsLnUsLnYsLncsLngsLnksLnosLm1kKSB7CiAgICBjb2xvcjogYmxhY2s7CiAgfQogIC5tZCB7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9CiAgQG1lZGlhIChwbGFzbWEpIHsKICAgIC5tZSwgLm1mIHsKICAgICAgJjpleHRlbmQoLm1iLC5tZCk7CiAgICAgIGJhY2tncm91bmQ6IHJlZDsKICAgIH0KICB9Cn0KLm1iOmV4dGVuZCgubWEpIHt9OwoubWM6ZXh0ZW5kKC5tYikge307]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/extend-clearfix.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsZWFyZml4IHsKICAqem9vbTogMTsKICAmOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBjbGVhcjogYm90aDsKICAgIGhlaWdodDogMDsKICB9Cn0KCi5mb28gewogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwogIGNvbG9yOiByZWQ7Cn0KCi5iYXIgewogICY6ZXh0ZW5kKC5jbGVhcmZpeCBhbGwpOwogIGNvbG9yOiBibHVlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/extend-exact.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnJlcGxhY2UucmVwbGFjZSwKLmMucmVwbGFjZSArIC5yZXBsYWNlIHsKICAucmVwbGFjZSwKICAuYyB7CiAgICBwcm9wOiBjb3B5LXBhc3RlLXJlcGxhY2U7CiAgfQp9Ci5yZXBfYWNlOmV4dGVuZCgucmVwbGFjZS5yZXBsYWNlIC5yZXBsYWNlKSB7fQoKLmEgLmIgLmMgewogIHByb3A6IG5vdF9lZmZlY3RlZDsKfQoKLmEgewogIHByb3A6IGlzX2VmZmVjdGVkOwogIC5iIHsKICAgIHByb3A6IG5vdF9lZmZlY3RlZDsKICB9CiAgLmIuYyB7CiAgICBwcm9wOiBub3RfZWZmZWN0ZWQ7CiAgfQp9CgouYywgLmEgewogIC5iLCAuYSB7CiAgICAuYSwgLmMgewogICAgICBwcm9wOiBub3RfZWZmZWN0ZWQ7CiAgICB9CiAgfQp9CgouZWZmZWN0ZWQgewogICY6ZXh0ZW5kKC5hKTsKICAmOmV4dGVuZCguYik7CiAgJjpleHRlbmQoLmMpOwp9CgouZSB7CiAgJiYgewogICAgcHJvcDogZXh0ZW5kLWRvdWJsZTsKICAgICY6aG92ZXIgewogICAgICBob3Zlcjogbm90LWV4dGVuZGVkOwogICAgfQogIH0KfQouZGJsOmV4dGVuZCguZS5lKSB7fQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/extend-media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV4dDEgLmV4dDIgewogIGJhY2tncm91bmQ6IGJsYWNrOwp9CgpAbWVkaWEgKHR2KSB7CiAgLmV4dDEgLmV4dDMgewogICAgY29sb3I6IGluaGVyaXQ7CiAgfQogIC50di1sb3dyZXMgOmV4dGVuZCguZXh0MSBhbGwpIHsKICAgIGJhY2tncm91bmQ6IGJsdWU7CiAgfQogIEBtZWRpYSAoaGlyZXMpIHsKICAgIC5leHQxIC5leHQ0IHsKICAgICAgY29sb3I6IGdyZWVuOwogICAgfQogICAgLnR2LWhpcmVzIDpleHRlbmQoLmV4dDEgYWxsKSB7CiAgICAgIGJhY2tncm91bmQ6IHJlZDsKICAgIH0KICB9Cn0KCi5hbGw6ZXh0ZW5kKC5leHQxIGFsbCkgewoKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/extend-nest.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNpZGViYXIgewogIHdpZHRoOiAzMDBweDsKICBiYWNrZ3JvdW5kOiByZWQ7CgogIC5ib3ggewogICAgYmFja2dyb3VuZDogI0ZGRjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgICBtYXJnaW46IDEwcHggMDsKICB9Cn0KCi5zaWRlYmFyMiB7CiAgJjpleHRlbmQoLnNpZGViYXIgYWxsKTsKICBiYWNrZ3JvdW5kOiBibHVlOwp9CgoudHlwZTEgewogICAgLnNpZGViYXIzIHsKICAgICAgJjpleHRlbmQoLnNpZGViYXIgYWxsKTsKICAgICAgYmFja2dyb3VuZDogZ3JlZW47CiAgICB9Cn0KCi50eXBlMiB7CiAgJi5zaWRlYmFyNCB7CiAgICAmOmV4dGVuZCguc2lkZWJhciBhbGwpOwogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQoKLmJ1dHRvbiB7CiAgY29sb3I6IGJsYWNrOwogICY6aG92ZXIgewogICAgY29sb3I6IGluaGVyaXQ7CiAgfQp9Ci5zdWJtaXQgewogICY6ZXh0ZW5kKC5idXR0b24pOwogICY6aG92ZXI6ZXh0ZW5kKC5idXR0b246aG92ZXIpIHt9Cn0KCi5ub21hdGNoIHsKICAmOmhvdmVyOmV4dGVuZCguYnV0dG9uIDpob3Zlcikge30KfQoKLmJ1dHRvbjIgewogIDpob3ZlciB7CiAgICBuZXN0ZWQ6IHdoaXRlOwogIH0KfQouYnV0dG9uMiA6aG92ZXIgewogIG5vdG5lc3RlZDogYmxhY2s7Cn0KCi5ub21hdGNoIDpleHRlbmQoLmJ1dHRvbjI6aG92ZXIpIHt9CgouYW1wLXRlc3QtYSwKLmFtcC10ZXN0LWIgewogIC5hbXAtdGVzdC1jICYuYW1wLXRlc3QtZCYuYW1wLXRlc3QtZSB7CiAgICAuYW1wLXRlc3QtZiYrJi5hbXAtdGVzdC1nOmV4dGVuZCguYW1wLXRlc3QtaCkge30KICB9Cn0KLmFtcC10ZXN0LWggewogIHRlc3Q6IGV4dGVuZGVkIGJ5IG1hc3NlcyBvZiBzZWxlY3RvcnM7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/extend-selector.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVycm9yIHsKICBib3JkZXI6IDFweCAjZjAwOwogIGJhY2tncm91bmQ6ICNmZGQ7Cn0KLmVycm9yLmludHJ1c2lvbiB7CiAgZm9udC1zaXplOiAxLjNlbTsKICBmb250LXdlaWdodDogYm9sZDsKfQouaW50cnVzaW9uIC5lcnJvciB7CiAgZGlzcGxheTogbm9uZTsKfQouYmFkRXJyb3I6ZXh0ZW5kKC5lcnJvciBhbGwpIHsKICBib3JkZXItd2lkdGg6IDNweDsKfQoKLmZvbyAuYmFyLCAuZm9vIC5iYXogewogICAgZGlzcGxheTogbm9uZTsKfQoKLmV4dDEgLmV4dDIKICAgIDpleHRlbmQoLmZvbyBhbGwpIHsKfQoKLmV4dDM6ZXh0ZW5kKC5mb28gYWxsKSwKLmV4dDQ6ZXh0ZW5kKC5mb28gYWxsKSB7Cn0KCmRpdi5leHQ1LAouZXh0NiA+IC5leHQ1IHsKICAgIHdpZHRoOiAxMDBweDsKfQoKLnNob3VsZC1ub3QtZXhpc3QtaW4tb3V0cHV0LAouZXh0NzpleHRlbmQoLmV4dDUgYWxsKSB7Cn0KCi5leHQgewogIHRlc3Q6IDE7Cn0KLy8gc2FtZSBhcwovLyAuYSAuYzpleHRlbmQoLmV4dCBhbGwpCi8vIC5iIC5jOmV4dGVuZCguZXh0IGFsbCkKLy8gLmEgLmMgLmQKLy8gLmIgLmMgLmQKLmEsIC5iIHsKICB0ZXN0OiAyOwogIC5jOmV4dGVuZCguZXh0IGFsbCkgewogICAgdGVzdDogMzsKICAgIC5kIHsKICAgICAgdGVzdDogNDsKICAgIH0KICB9Cn0KCi5yZXBsYWNlLnJlcGxhY2UsCi5jLnJlcGxhY2UgKyAucmVwbGFjZSB7CiAgLnJlcGxhY2UsCiAgLmMgewogICAgcHJvcDogY29weS1wYXN0ZS1yZXBsYWNlOwogIH0KfQoucmVwX2FjZTpleHRlbmQoLnJlcGxhY2UgYWxsKSB7fQoKLmF0dHJpYnV0ZXMgewogIFtkYXRhPSJ0ZXN0Il0gewogICAgZXh0ZW5kOiBhdHRyaWJ1dGVzOwogIH0KICAuYXR0cmlidXRlLXRlc3QgewogICAgJjpleHRlbmQoW2RhdGE9InRlc3QiXSBhbGwpOwogIH0KICBbZGF0YV0gewogICAgZXh0ZW5kOiBhdHRyaWJ1dGVzMjsKICB9CiAgLmF0dHJpYnV0ZS10ZXN0MiB7CiAgICAmOmV4dGVuZChbZGF0YV0gYWxsKTsgLy95b3UgY291bGQgYXJndWUgaXQgc2hvdWxkIG1hdGNoIFtkYXRhPSJ0ZXN0Il0uLi4gbm90IGZvciBub3cgdGhvdWdoLi4uCiAgfQogIEBhdHRyLWRhdGE6ICJ0ZXN0MyI7CiAgW2RhdGE9QHthdHRyLWRhdGF9XSB7CiAgICBleHRlbmQ6IGF0dHJpYnV0ZXMyOwogIH0KICAuYXR0cmlidXRlLXRlc3QgewogICAgJjpleHRlbmQoW2RhdGE9InRlc3QzIl0gYWxsKTsKICB9Cn0KCi5oZWFkZXIgewogIC5oZWFkZXItbmF2IHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICAgICY6YmVmb3JlIHsKICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgIH0KICB9Cn0KCi5mb290ZXIgewogIC5mb290ZXItbmF2IHsKICAgICY6ZXh0ZW5kKCAuaGVhZGVyIC5oZWFkZXItbmF2IGFsbCApOwogIH0KfQoKLmlzc3VlLTI1ODYtYm9yZGVyZWQgewogICAgYm9yZGVyOiBzb2xpZCAxcHggYmxhY2s7Cn0KLmlzc3VlLTI1ODYtc29tZXBhZ2UgewogICAgLmNvbnRlbnQ6ZXh0ZW5kKC5pc3N1ZS0yNTg2LWJvcmRlcmVkKSB7CiAgICAgICAgJj5zcGFuIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/extend.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmVycm9yIHsKICBib3JkZXI6IDFweCAjZjAwOwogIGJhY2tncm91bmQ6ICNmZGQ7Cn0KLmVycm9yLmludHJ1c2lvbiB7CiAgZm9udC1zaXplOiAxLjNlbTsKICBmb250LXdlaWdodDogYm9sZDsKfQouaW50cnVzaW9uIC5lcnJvciB7CiAgZGlzcGxheTogbm9uZTsKfQouYmFkRXJyb3IgewogICY6ZXh0ZW5kKC5lcnJvciBhbGwpOwogIGJvcmRlci13aWR0aDogM3B4Owp9CgouZm9vIC5iYXIsIC5mb28gLmJheiB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouZXh0MSAuZXh0MiB7CiAgICAmOmV4dGVuZCguZm9vIGFsbCk7Cn0KCi5leHQzLAouZXh0NCB7CiAgJjpleHRlbmQoLmZvbyBhbGwpOwogICY6ZXh0ZW5kKC5iYXIgYWxsKTsKfQoKZGl2LmV4dDUsCi5leHQ2ID4gLmV4dDUgewogICAgd2lkdGg6IDEwMHB4Owp9CgouZXh0NyB7CiAgICAmOmV4dGVuZCguZXh0NSBhbGwpOwp9CgouZXh0OC5leHQ5IHsKICByZXN1bHQ6IGFkZC1mb287Cn0KLmV4dDggLmV4dDksCi5leHQ4ICsgLmV4dDksCi5leHQ4ID4gLmV4dDkgewogIHJlc3VsdDogYmFyLW1hdGNoZWQ7Cn0KLmV4dDgubm9tYXRjaCB7CiAgcmVzdWx0OiBub25lOwp9Ci5leHQ4IHsKICAuZXh0OSB7CiAgICByZXN1bHQ6IG1hdGNoLW5lc3RlZC1iYXI7CiAgfQp9Ci5leHQ4IHsKICAmLmV4dDkgewogICAgcmVzdWx0OiBtYXRjaC1uZXN0ZWQtZm9vOwogIH0KfQoKLmZ1dTpleHRlbmQoLmV4dDguZXh0OSBhbGwpIHt9Ci5idXU6ZXh0ZW5kKC5leHQ4IC5leHQ5IGFsbCkge30KLnphcDpleHRlbmQoLmV4dDggKyAuZXh0OSBhbGwpIHt9Ci56b286ZXh0ZW5kKC5leHQ4ID4gLmV4dDkgYWxsKSB7fQoKLmFhIHsKICBjb2xvcjogYmxhY2s7CiAgLmRkIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICB9Cn0KLmJiIHsKICBiYWNrZ3JvdW5kOiByZWQ7CiAgLmJiIHsKICAgIGNvbG9yOiBibGFjazsKICB9Cn0KLmNjOmV4dGVuZCguYWEsLmJiKSB7fQouZWU6ZXh0ZW5kKC5kZCBhbGwsLmJiKSB7fQouZmY6ZXh0ZW5kKC5kZCwuYmIgYWxsKSB7fQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/extract-and-length.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIHRlc3QgbGF0ZSBwYXJzaW5nCkBjb2xzOiAxLCAyOwoKLmEoQGk6IGxlbmd0aChAY29scykpIHdoZW4gKEBpID4gMCkgewogIEBkaXZpZGVyOiBlKGV4dHJhY3QoQGNvbHMsIEBpKSk7Cn0KLmE7CgouYihAajogMSkgd2hlbiAoQGogPCBsZW5ndGgoQGNvbHMpKSB7CiAgQGRpdmlkZXI6IGUoZXh0cmFjdChAY29scywgQGopKTsKfQouYjsKCi8vIHNpbXBsZSBhcnJheS9saXN0OgoKLm11bHRpdW5pdCB7CiAgQHY6IGFiYyAiYWJjIiAxIDFweCAxJSAjMTIzOwogIGxlbmd0aDogbGVuZ3RoKEB2KTsKICBleHRyYWN0OiBleHRyYWN0KEB2LCAxKSBleHRyYWN0KEB2LCAyKSBleHRyYWN0KEB2LCAzKSBleHRyYWN0KEB2LCA0KSBleHRyYWN0KEB2LCA1KSBleHRyYWN0KEB2LCA2KTsKfQoKLmluY29ycmVjdC1pbmRleCB7CiAgICBAdjE6IGEgIGIgIGM7CiAgICBAdjI6IGEsIGIsIGM7CiAgICB2MTogZXh0cmFjdChAdjEsICA1KTsKICAgIHYyOiBleHRyYWN0KEB2MiwgLTIpOwp9Cgouc2NhbGFyIHsKICAgIEB2YXI6ICAgICAgICAgIHZhcmlhYmxlOwogICAgdmFyLXZhbHVlOiAgICAgZXh0cmFjdChAdmFyLCAxKTsKICAgIHZhci1sZW5ndGg6ICAgIGxlbmd0aChAdmFyKTsKICAgIGlsbC1pbmRleDogICAgIGV4dHJhY3QoQHZhciwgMik7CgogICAgbmFtZS12YWx1ZTogICAgZXh0cmFjdChuYW1lLCAxKTsKICAgIHN0cmluZy12YWx1ZTogIGV4dHJhY3QoInN0cmluZyIsIDEpOwogICAgbnVtYmVyLXZhbHVlOiAgZXh0cmFjdCgxMjM0NTY3OCwgMSk7CiAgICBjb2xvci12YWx1ZTogICBleHRyYWN0KGJsdWUsIDEpOwogICAgcmdiYS12YWx1ZTogICAgZXh0cmFjdChyZ2JhKDgwLCAxNjAsIDI0MCwgMC42NyksIDEpOwogICAgZW1wdHktdmFsdWU6ICAgZXh0cmFjdCh+JycsIDEpOwoKICAgIG5hbWUtbGVuZ3RoOiAgIGxlbmd0aChuYW1lKTsKICAgIHN0cmluZy1sZW5ndGg6IGxlbmd0aCgic3RyaW5nIik7CiAgICBudW1iZXItbGVuZ3RoOiBsZW5ndGgoMTIzNDU2NzgpOwogICAgY29sb3ItbGVuZ3RoOiAgbGVuZ3RoKGJsdWUpOwogICAgcmdiYS1sZW5ndGg6ICAgbGVuZ3RoKHJnYmEoODAsIDE2MCwgMjQwLCAwLjY3KSk7CiAgICBlbXB0eS1sZW5ndGg6ICBsZW5ndGgoficnKTsKfQoKLm1peGluLWFyZ3VtZW50cyB7CiAgICAubWl4aW4tYXJncyhhIGIgYyBkKTsKICAgIC5taXhpbi1hcmdzKGEsIGIsIGMsIGQpOwogICAgLm1peGluLWFyZ3MoMTsgMjsgMzsgNCk7Cn0KCi5taXhpbi1hcmdzKEB2YWx1ZSkgewogICAgJi0xIHsKICAgICAgICBsZW5ndGg6ICBsZW5ndGgoQHZhbHVlKTsKICAgICAgICBleHRyYWN0OiBleHRyYWN0KEB2YWx1ZSwgMykgfiJ8IiBleHRyYWN0KEB2YWx1ZSwgMikgfiJ8IiBleHRyYWN0KEB2YWx1ZSwgMSk7CiAgICB9Cn0KCi5taXhpbi1hcmdzKC4uLikgewogICAgJi0yIHsKICAgICAgICBsZW5ndGg6ICBsZW5ndGgoQGFyZ3VtZW50cyk7CiAgICAgICAgZXh0cmFjdDogZXh0cmFjdChAYXJndW1lbnRzLCAzKSB+InwiIGV4dHJhY3QoQGFyZ3VtZW50cywgMikgfiJ8IiBleHRyYWN0KEBhcmd1bWVudHMsIDEpOwogICAgfQp9CgoubWl4aW4tYXJncyhAdmFsdWVzLi4uKSB7CiAgICAmLTMgewogICAgICAgIGxlbmd0aDogIGxlbmd0aChAdmFsdWVzKTsKICAgICAgICBleHRyYWN0OiBleHRyYWN0KEB2YWx1ZXMsIDMpIH4ifCIgZXh0cmFjdChAdmFsdWVzLCAyKSB+InwiIGV4dHJhY3QoQHZhbHVlcywgMSk7CiAgICB9Cn0KCi5taXhpbi1hcmdzKEBoZWFkLCBAdGFpbC4uLikgewogICAgJi00IHsKICAgICAgICBsZW5ndGg6ICBsZW5ndGgoQHRhaWwpOwogICAgICAgIGV4dHJhY3Q6IGV4dHJhY3QoQHRhaWwsIDIpIH4ifCIgZXh0cmFjdChAdGFpbCwgMSk7CiAgICB9Cn0KCi8vICJtdWx0aWRpbWVuc2lvbmFsIiBhcnJheS9saXN0CgoubWQtc3BhY2UtY29tbWEgewogICAgQHY6IGEgYiBjLCAxIDIgMywgIngiICJ5IiAieiI7CiAgICBsZW5ndGgtMTogIGxlbmd0aChAdik7CiAgICBleHRyYWN0LTE6IGV4dHJhY3QoQHYsIDIpOwogICAgbGVuZ3RoLTI6ICBsZW5ndGgoZXh0cmFjdChAdiwgMikpOwogICAgZXh0cmFjdC0yOiBleHRyYWN0KGV4dHJhY3QoQHYsIDIpLCAyKTsKCiAgICAmLWFzLWFyZ3Mgey5taXhpbi1hcmdzKGEgYiBjLCAxIDIgMywgIngiICJ5IiAieiIpfQp9CgoubWQtY2F0LXNwYWNlLWNvbW1hIHsKICAgIEBhOiBhIGIgYzsKICAgIEBiOiAxIDIgMzsKICAgIEBjOiAieCIgInkiICJ6IjsKICAgIEB2OiBAYSwgQGIsIEBjOwogICAgbGVuZ3RoLTE6ICBsZW5ndGgoQHYpOwogICAgZXh0cmFjdC0xOiBleHRyYWN0KEB2LCAyKTsKICAgIGxlbmd0aC0yOiAgbGVuZ3RoKGV4dHJhY3QoQHYsIDIpKTsKICAgIGV4dHJhY3QtMjogZXh0cmFjdChleHRyYWN0KEB2LCAyKSwgMik7CgogICAgJi1hcy1hcmdzIHsubWl4aW4tYXJncyhAYSwgQGIsIEBjKX0KfQoKLm1kLWNhdC1jb21tYS1zcGFjZSB7CiAgICBAYTogYSwgYiwgYzsKICAgIEBiOiAxLCAyLCAzOwogICAgQGM6ICJ4IiwgInkiLCAieiI7CiAgICBAdjogQGEgQGIgQGM7CiAgICBsZW5ndGgtMTogIGxlbmd0aChAdik7CiAgICBleHRyYWN0LTE6IGV4dHJhY3QoQHYsIDIpOwogICAgbGVuZ3RoLTI6ICBsZW5ndGgoZXh0cmFjdChAdiwgMikpOwogICAgZXh0cmFjdC0yOiBleHRyYWN0KGV4dHJhY3QoQHYsIDIpLCAyKTsKCiAgICAmLWFzLWFyZ3Mgey5taXhpbi1hcmdzKEBhIEBiIEBjKX0KfQoKLm1kLTNEIHsKICAgIEBhOiBhIGIgYyBkLCAxIDIgMyA0OwogICAgQGI6IDUgNiA3IDgsIGUgZiBnIGg7CiAgICAuM0QoQGEsIEBiKTsKCiAgICAuM0QoLi4uKSB7CgogICAgICAgIEB2MTogICAgICAgQGFyZ3VtZW50czsKICAgICAgICBsZW5ndGgtMTogIGxlbmd0aChAdjEpOwogICAgICAgIGV4dHJhY3QtMTogZXh0cmFjdChAdjEsIDEpOwoKICAgICAgICBAdjI6ICAgICAgIGV4dHJhY3QoQHYxLCAyKTsKICAgICAgICBsZW5ndGgtMjogIGxlbmd0aChAdjIpOwogICAgICAgIGV4dHJhY3QtMjogZXh0cmFjdChAdjIsIDEpOwoKICAgICAgICBAdjM6ICAgICAgIGV4dHJhY3QoQHYyLCAxKTsKICAgICAgICBsZW5ndGgtMzogIGxlbmd0aChAdjMpOwogICAgICAgIGV4dHJhY3QtMzogZXh0cmFjdChAdjMsIDMpOwoKICAgICAgICBAdjQ6ICAgICAgIGV4dHJhY3QoQHYzLCA0KTsKICAgICAgICBsZW5ndGgtNDogIGxlbmd0aChAdjQpOwogICAgICAgIGV4dHJhY3QtNDogZXh0cmFjdChAdjQsIDEpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/functions-each.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHNlbGVjdG9yczogYmx1ZSwgZ3JlZW4sIHJlZDsKQGxpc3Q6IGEgYiBjIGQ7CgplYWNoKEBzZWxlY3RvcnMsIHsKICAuc2VsLUB7dmFsdWV9IHsKICAgIGE6IGI7CiAgfQp9KTsKCi5lYWNoIHsKICBlYWNoKEBsaXN0LCB7CiAgICBpbmRleCs6IEBpbmRleDsKICAgIGl0ZW1Ae2luZGV4fTogQHZhbHVlOwogIH0pOwoKICAvLyBuZXN0ZWQgZWFjaAogIGVhY2goMTBweCAxNXB4LCAyMHB4IDI1cHg7IHsgCiAgICAvLyBkZW1vbnN0cmF0ZXMgbmVzdGluZyBvZiBlYWNoKCkKICAgIGVhY2goQHZhbHVlOyAjKEB2LCBAaywgQGkpIHsKICAgICAgbmVzdC1Ae2l9LUB7aW5kZXh9OiBAdiBAazsKICAgIH0pOwogIH0pOwoKICAvLyBuZXN0ZWQgYW5vbnltb3VzIG1peGluCiAgLm5lc3QtYW5vbiB7CiAgICBlYWNoKGEgYiwgLihAdjtAaSkgewogICAgICBlYWNoKGMgZCwgLihAdnY7QGlpKSB7CiAgICAgICAgbmVzdC1Ae2l9LUB7aWl9OiBAdiBAdnY7CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICAvLyB2ZWN0b3IgbWF0aAogIGVhY2goMSAyIDMgNCwgewogICAgcGFkZGluZytfOiAoQHZhbHVlICogMTBweCk7CiAgfSk7Cn0KCkBzZXQ6IHsKICBvbmU6IGJsdWU7CiAgLy8gc2tpcCBjb21tZW50cwogIHR3bzogZ3JlZW47CiAgLyoqIGFuZCB0aGVzZQogICovCiAgdGhyZWU6IHJlZDsgLy9hbmQgdGhpcwp9Ci5zZXQgewogIGVhY2goQHNldCwgewogICAgQHtrZXl9OiBAdmFsdWU7CiAgfSk7Cn0KLnNldC0yKCkgewogIG9uZTogYmx1ZTsKICB0d286IGdyZWVuOwogIHRocmVlOiByZWQ7Cn0KLnNldC0yIHsKICBlYWNoKC5zZXQtMigpLCAuKEB2LCBAaywgQGkpIHsKICAgIEB7a30tQHtpfTogQHY7CiAgfSk7Cn0KCi5waWNrKEBhKSB3aGVuIChAYSA9IDQpIHsKICB2YWwzOiBAYTsKfQouc2luZ2xlIHsKICBlYWNoKHRydWUsIHsKICAgIHZhbDogQHZhbHVlOwogIH0pOwogIEBleHA6IDEgKyAxOwogIGVhY2goQGV4cCwgewogICAgdmFsMjogQHZhbHVlOwogIH0pOwogIGVhY2goMSAyIDMgNCwgewogICAgLnBpY2soQHZhbHVlKTsKICB9KTsKfQoKQGNvbHVtbnM6IHJhbmdlKDQpOwouY29sdW1uLWxpc3QgewogIGxpc3Q6IEBjb2x1bW5zOwp9CgplYWNoKEBjb2x1bW5zLCAuKEB2YWwpIHsKICAuY29sLUB7dmFsfSB7CiAgICB3aWR0aDogKDEwMCUgLyBsZW5ndGgoQGNvbHVtbnMpKTsKICB9Cn0pOwoKZWFjaChyYW5nZSgxMHB4LCAzMHB4LCAxMHB4KSwgLihAdmFsLCBAaW5kZXgpIHsKICAucm93LUB7aW5kZXh9IHsKICAgIHdpZHRoOiBAdmFsOwogIH0KfSk7CgpAbGlzdDogYSBiIGMgZDsKLmJveCB7CiAgZWFjaChAbGlzdCwgewogICAgLWxlc3MtbG9nOiBleHRyYWN0KEBsaXN0LCBAaW5kZXgpOwogIH0pCn0KCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvaXNzdWVzLzMzMjUKCkBjb2xvci1zY2hlbWVzOiB7CiAgQHByaW1hcnk6IHsKICAgIEBjb2xvcjogYmx1ZTsKICB9CiAgQHNlY29uZGFyeTogewogICAgQGNvbG9yOiByZWQ7CiAgfQp9Ci50ZXN0LXJ1bGUgewogIGVhY2gocHJpbWFyeSBzZWNvbmRhcnksIC4oQGNvbG9yLW5hbWUpIHsKICAgIEBzY2hlbWU6IEBjb2xvci1zY2hlbWVzW0BAY29sb3ItbmFtZV07IC8vIGUuZy4gQGNvbG9yLW5hbWUgPSBwcmltYXJ5CiAgICBjb2xvcjogQHNjaGVtZVtAY29sb3JdOwogIH0pOwp9CgpAb25lOiB7CiAgQHR3bzogewogICAgZm9vOiByZWQ7CiAgICBiYXI6IGJsdWU7CiAgfTsKfTsKCmVhY2goQG9uZVtAdHdvXSwgewogIC5Ae2tleX0gewogICAgY29udGVudDogQHZhbHVlOwogIH0KfSk7CgovLyBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2lzc3Vlcy8zMzU0Ci5sb2coQG1zZ3MpIHsKICBlYWNoKEBtc2dzOyB7CiAgICBjb250ZW50OiBAdmFsdWU7CiAgfSk7Cn0KCkBtZXNzYWdlczogJ2ZvbycsICdiYXInOwoKc3BhbiB7CiAgLmxvZyhAbWVzc2FnZXMpOwp9CgpkaXYgewogIC5sb2coJ2ZvbycpOwp9CgovLyBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2lzc3Vlcy8zMzQ1Ci5taXhpbi1jcmVhdGUtd2lkdGgtc3R5bGUoKSB7CiAgQGxpc3Q6IGUoIjkwIDEwMCAxMTAiKTsKCiAgZWFjaChAbGlzdCwgewogICAgICAudy1Ae2tleX0gewogICAgICAgICAgd2lkdGg6IEB2YWx1ZTsKICAgICAgfQogIH0pCn0KCi5hIHsKICAubWl4aW4tY3JlYXRlLXdpZHRoLXN0eWxlKCk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/functions.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2Z1bmN0aW9ucyB7CiAgQHZhcjogMTA7CiAgQGNvbG9yczogIzAwMCwgI2ZmZjsKICBjb2xvcjogX2NvbG9yKCJldmlsIHJlZCIpOyAvLyAjNjYwMDAwCiAgd2lkdGg6IGluY3JlbWVudCgxNSk7CiAgaGVpZ2h0OiB1bmRlZmluZWQoInNlbGYiKTsKICBib3JkZXItd2lkdGg6IGFkZCgyLCAzKTsKICB2YXJpYWJsZTogaW5jcmVtZW50KEB2YXIpOwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChAY29sb3JzKTsKfQoKI2J1aWx0LWluIHsKICBAcjogMzI7CiAgZXNjYXBlZDogZSgiLVNvbWU6OndlaXJkKCN0aGluZywgeSkiKTsKICBsaWdodGVuOiBsaWdodGVuKCNmZjAwMDAsIDQwJSk7CiAgbGlnaHRlbi1yZWxhdGl2ZTogbGlnaHRlbigjZmYwMDAwLCA0MCUsIHJlbGF0aXZlKTsKICBkYXJrZW46IGRhcmtlbigjZmYwMDAwLCA0MCUpOwogIGRhcmtlbi1yZWxhdGl2ZTogZGFya2VuKCNmZjAwMDAsIDQwJSwgcmVsYXRpdmUpOwogIHNhdHVyYXRlOiBzYXR1cmF0ZSgjMjkzMzJmLCAyMCUpOwogIHNhdHVyYXRlLXJlbGF0aXZlOiBzYXR1cmF0ZSgjMjkzMzJmLCAyMCUsIHJlbGF0aXZlKTsKICBkZXNhdHVyYXRlOiBkZXNhdHVyYXRlKCMyMDNjMzEsIDIwJSk7CiAgZGVzYXR1cmF0ZS1yZWxhdGl2ZTogZGVzYXR1cmF0ZSgjMjAzYzMxLCAyMCUsIHJlbGF0aXZlKTsKICBncmV5c2NhbGU6IGdyZXlzY2FsZSgjMjAzYzMxKTsKICBoc2wtY2xhbXA6IGhzbCgzODAsIDE1MCUsIDE1MCUpOwogIHNwaW4tcDogc3Bpbihoc2woMzQwLCA1MCUsIDUwJSksIDQwKTsKICBzcGluLW46IHNwaW4oaHNsKDMwLCA1MCUsIDUwJSksIC00MCk7CiAgbHVtYS13aGl0ZTogbHVtYSgjZmZmKTsKICBsdW1hLWJsYWNrOiBsdW1hKCMwMDApOwogIGx1bWEtYmxhY2stYWxwaGE6IGx1bWEocmdiYSgwLDAsMCwwLjUpKTsKICBsdW1hLXJlZDogbHVtYSgjZmYwMDAwKTsKICBsdW1hLWdyZWVuOiBsdW1hKCMwMGZmMDApOwogIGx1bWEtYmx1ZTogbHVtYSgjMDAwMGZmKTsKICBsdW1hLXllbGxvdzogbHVtYSgjZmZmZjAwKTsKICBsdW1hLWN5YW46IGx1bWEoIzAwZmZmZik7CiAgbHVtYS1kaWZmZXJzLWZyb20tbHVtaW5hbmNlOiBsdW1hKCNmZjM2MDApOwogIGx1bWluYW5jZS13aGl0ZTogbHVtYSgjZmZmKTsKICBsdW1pbmFuY2UtYmxhY2s6IGx1bWEoIzAwMCk7CiAgbHVtaW5hbmNlLWJsYWNrLWFscGhhOiBsdW1hKHJnYmEoMCwwLDAsMC41KSk7CiAgbHVtaW5hbmNlLXJlZDogbHVtYSgjZmYwMDAwKTsKICBsdW1pbmFuY2UtZGlmZmVycy1mcm9tLWx1bWE6IGx1bWluYW5jZSgjZmYzNjAwKTsKICBjb250cmFzdC1maWx0ZXI6IGNvbnRyYXN0KDMwJSk7CiAgc2F0dXJhdGUtZmlsdGVyOiBzYXR1cmF0ZSg1JSk7CiAgY29udHJhc3Qtd2hpdGU6IGNvbnRyYXN0KCNmZmYpOwogIGNvbnRyYXN0LWJsYWNrOiBjb250cmFzdCgjMDAwKTsKICBjb250cmFzdC1yZWQ6IGNvbnRyYXN0KCNmZjAwMDApOwogIGNvbnRyYXN0LWdyZWVuOiBjb250cmFzdCgjMDBmZjAwKTsKICBjb250cmFzdC1ibHVlOiBjb250cmFzdCgjMDAwMGZmKTsKICBjb250cmFzdC15ZWxsb3c6IGNvbnRyYXN0KCNmZmZmMDApOwogIGNvbnRyYXN0LWN5YW46IGNvbnRyYXN0KCMwMGZmZmYpOwogIGNvbnRyYXN0LWxpZ2h0OiBjb250cmFzdCgjZmZmLCAjMTExMTExLCAjZWVlZWVlKTsKICBjb250cmFzdC1kYXJrOiBjb250cmFzdCgjMDAwLCAjMTExMTExLCAjZWVlZWVlKTsKICBjb250cmFzdC13cm9uZ29yZGVyOiBjb250cmFzdCgjZmZmLCAjZWVlZWVlLCAjMTExMTExLCAwLjUpOwogIGNvbnRyYXN0LWxpZ2h0LXRocmVzaDogY29udHJhc3QoI2ZmZiwgIzExMTExMSwgI2VlZWVlZSwgMC41KTsKICBjb250cmFzdC1kYXJrLXRocmVzaDogY29udHJhc3QoIzAwMCwgIzExMTExMSwgI2VlZWVlZSwgMC41KTsKICBjb250cmFzdC1oaWdoLXRocmVzaDogY29udHJhc3QoIzU1NSwgIzExMTExMSwgI2VlZWVlZSwgMC42KTsKICBjb250cmFzdC1sb3ctdGhyZXNoOiBjb250cmFzdCgjNTU1LCAjMTExMTExLCAjZWVlZWVlLCAwLjA5KTsKICBjb250cmFzdC1saWdodC10aHJlc2gtcGVyOiBjb250cmFzdCgjZmZmLCAjMTExMTExLCAjZWVlZWVlLCA1MCUpOwogIGNvbnRyYXN0LWRhcmstdGhyZXNoLXBlcjogY29udHJhc3QoIzAwMCwgIzExMTExMSwgI2VlZWVlZSwgNTAlKTsKICBjb250cmFzdC1oaWdoLXRocmVzaC1wZXI6IGNvbnRyYXN0KCM1NTUsICMxMTExMTEsICNlZWVlZWUsIDYwJSk7CiAgY29udHJhc3QtbG93LXRocmVzaC1wZXI6IGNvbnRyYXN0KCM1NTUsICMxMTExMTEsICNlZWVlZWUsIDklKTsKICByZXBsYWNlOiByZXBsYWNlKCJIZWxsbywgTWFycy4iLCAiTWFyc1wuIiwgIldvcmxkISIpOwogIHJlcGxhY2UtY2FwdHVyZWQ6IHJlcGxhY2UoIlRoaXMgaXMgYSBzdHJpbmcuIiwgIihzdHJpbmcpXC4kIiwgIm5ldyAkMS4iKTsKICByZXBsYWNlLXdpdGgtZmxhZ3M6IHJlcGxhY2UoIk9uZSArIG9uZSA9IDQiLCAib25lIiwgIjIiLCAiZ2kiKTsKICByZXBsYWNlLXNpbmdsZS1xdW90ZWQ6IHJlcGxhY2UoJ2Zvby0xJywgIjEiLCAiMiIpOwogIHJlcGxhY2UtZXNjYXBlZC1zdHJpbmc6IHJlcGxhY2UofiJiYXItMSIsICIxIiwgIjIiKTsKICByZXBsYWNlLWtleXdvcmQ6IHJlcGxhY2UoYmF6LTEsICIxIiwgIjIiKTsKICByZXBsYWNlLXdpdGgtY29sb3I6IHJlcGxhY2UoIjAwNyIsICIwIiwgIzEzNSwgZyk7CiAgcmVwbGFjZS13aXRoLW51bWJlcjogcmVwbGFjZSgiMDA3IiwgIjAiLCAyZW0pOwogIGZvcm1hdDogJSgicmdiKCVkLCAlZCwgJWQpIiwgQHIsIDEyOCwgNjQpOwogIGZvcm1hdC1zdHJpbmc6ICUoImhlbGxvICVzIiwgIndvcmxkIik7CiAgZm9ybWF0LW11bHRpcGxlOiAlKCJoZWxsbyAlcyAlZCIsICJlYXJ0aCIsIDIpOwogIGZvcm1hdC11cmwtZW5jb2RlOiAlKCJyZWQgaXMgJUEiLCAjZmYwMDAwKTsKICBmb3JtYXQtc2luZ2xlLXF1b3RlZDogJSgnaGVsbG8gJXMnLCAic2luZ2xlIHdvcmxkIik7CiAgZm9ybWF0LWVzY2FwZWQtc3RyaW5nOiAlKH4iaGVsbG8gJXMiLCAiZXNjYXBlZCB3b3JsZCIpOwogIGZvcm1hdC1jb2xvci1hcy1zdHJpbmc6ICUoIiVzIiwgIzEyMyk7CiAgZm9ybWF0LW51bWJlci1hcy1zdHJpbmc6ICUoIiVzIiwgNHB4KTsKICBlZm9ybWF0OiBlKCUoInJnYiglZCwgJWQsICVkKSIsIEByLCAxMjgsIDY0KSk7CgogIHVuaXRsZXNzOiB1bml0KDEycHgpOwogIHVuaXQ6IHVuaXQoKDEzcHggKyAxcHgpLCBlbSk7CiAgdW5pdHBlcmNlbnRhZ2U6IHVuaXQoMTAwLCAlKTsKCiAgZ2V0LXVuaXQ6IGdldC11bml0KDEwcHgpOwogIGdldC11bml0LWVtcHR5OiBnZXQtdW5pdCgxMCk7CgogIGh1ZTogaHVlKGhzbCg5OCwgMTIlLCA5NSUpKTsKICBzYXR1cmF0aW9uOiBzYXR1cmF0aW9uKGhzbCg5OCwgMTIlLCA5NSUpKTsKICBsaWdodG5lc3M6IGxpZ2h0bmVzcyhoc2woOTgsIDEyJSwgOTUlKSk7CiAgaHN2aHVlOiBoc3ZodWUoaHN2KDk4LCAxMiUsIDk1JSkpOwogIGhzdnNhdHVyYXRpb246IGhzdnNhdHVyYXRpb24oaHN2KDk4LCAxMiUsIDk1JSkpOwogIGhzdnZhbHVlOiBoc3Z2YWx1ZShoc3YoOTgsIDEyJSwgOTUlKSk7CiAgcmVkOiByZWQoI2YwMCk7CiAgZ3JlZW46IGdyZWVuKCMwZjApOwogIGJsdWU6IGJsdWUoIzAwZik7CiAgcm91bmRlZDogcm91bmQoKEByLzMpKTsKICByb3VuZGVkLXR3bzogcm91bmQoKEByLzMpLCAyKTsKICByb3VuZGVkcHg6IHJvdW5kKCgxMHB4IC8gMykpOwogIHJvdW5kZWRweC10aHJlZTogcm91bmQoKDEwcHggLyAzKSwgMyk7CiAgcm91bmRlZC1wZXJjZW50YWdlOiByb3VuZCgxMC4yJSk7CiAgY2VpbDogY2VpbCgxMC4xcHgpOwogIGZsb29yOiBmbG9vcigxMi45cHgpOwogIHNxcnQ6IHNxcnQoMjVweCk7CiAgcGk6IHBpKCk7CiAgbW9kOiBtb2QoMTNtLCAxMWNtKTsgLy8gY291bGQgdGFrZSBpbnRvIGFjY291bnQgdW5pdHMsIGRvZXNuJ3QgYXQgdGhlIG1vbWVudAogIGFiczogYWJzKC00JSk7CiAgdGFuOiB0YW4oNDJkZWcpOwogIHNpbjogc2luKDEwZGVnKTsKICBjb3M6IGNvcygxMik7CiAgYXRhbjogYXRhbih0YW4oMC4xcmFkKSk7CiAgYXRhbjogY29udmVydChhY29zKGNvcygzNGRlZykpLCBkZWcpOwogIGF0YW46IGNvbnZlcnQoYWNvcyhjb3MoNTBncmFkKSksIGRlZyk7CiAgcG93OiBwb3coOHB4LCAyKTsKICBwb3c6IHBvdyg0LCAzKTsKICBwb3c6IHBvdygzLCAzZW0pOwogIG1pbjogbWluKDApOwogIG1pbjogbWluKDYsIDUpOwogIG1pbjogbWluKDFwdCwgM3B0KTsKICBtaW46IG1pbigxY20sIDNtbSk7CiAgbWF4OiBtYXgoMSwgMyk7CiAgbWF4OiBtYXgoM2VtLCAxZW0sIDJlbSwgNWVtKTsKICBwZXJjZW50YWdlOiBwZXJjZW50YWdlKCgxMHB4IC8gNTApKTsKICBjb2xvci1xdW90ZWQtZGlnaXQ6IGNvbG9yKCIjZGRhMGRkIik7CiAgY29sb3ItcXVvdGVkLWtleXdvcmQ6IGNvbG9yKCJwbHVtIik7CiAgY29sb3ItY29sb3I6IGNvbG9yKCNkZGEwZGQpOwogIGNvbG9yLWtleXdvcmQ6IGNvbG9yKHBsdW0pOwogIHRpbnQ6IHRpbnQoIzc3Nzc3NywgMTMpOwogIHRpbnQtZnVsbDogdGludCgjNzc3Nzc3LCAxMDApOwogIHRpbnQtcGVyY2VudDogdGludCgjNzc3Nzc3LCAxMyUpOwogIHRpbnQtbmVnYXRpdmU6IHRpbnQoIzc3Nzc3NywgLTEzJSk7CiAgc2hhZGU6IHNoYWRlKCM3Nzc3NzcsIDEzKTsKICBzaGFkZS1mdWxsOiBzaGFkZSgjNzc3Nzc3LCAxMDApOwogIHNoYWRlLXBlcmNlbnQ6IHNoYWRlKCM3Nzc3NzcsIDEzJSk7CiAgc2hhZGUtbmVnYXRpdmU6IHNoYWRlKCM3Nzc3NzcsIC0xMyUpOwoKICBmYWRlLW91dDogZmFkZW91dChyZWQsIDUlKTsgLy8gc3VwcG9ydCBmYWRlT3V0IGFuZCBmYWRlb3V0CiAgZmFkZS1pbjogZmFkZWluKGZhZGVvdXQocmVkLCAxMCUpLCA1JSk7CiAgZmFkZS1vdXQtcmVsYXRpdmU6IGZhZGVvdXQocmVkLCA1JSxyZWxhdGl2ZSk7IAogIGZhZGUtaW4tcmVsYXRpdmU6IGZhZGVpbihmYWRlb3V0KHJlZCwgMTAlLCByZWxhdGl2ZSksIDUlLCByZWxhdGl2ZSk7CiAgZmFkZS1vdXQyOiAgZmFkZW91dChmYWRlb3V0KHJlZCwgNTAlKSwgNTAlKTsgCiAgZmFkZS1vdXQyLXJlbGF0aXZlOiBmYWRlb3V0KGZhZGVvdXQocmVkLCA1MCUsIHJlbGF0aXZlKSwgNTAlLCByZWxhdGl2ZSk7CiAgCiAgaHN2OiBoc3YoNSwgNTAlLCAzMCUpOwogIGhzdmE6IGhzdmEoMywgNTAlLCAzMCUsIDAuMik7CgogIG1peDogbWl4KCNmZjAwMDAsICNmZmZmMDAsIDgwKTsKICBtaXgtMDogbWl4KCNmZjAwMDAsICNmZmZmMDAsIDApOwogIG1peC0xMDA6IG1peCgjZmYwMDAwLCAjZmZmZjAwLCAxMDApOwogIG1peC13ZWlnaHRsZXNzOiBtaXgoI2ZmMDAwMCwgI2ZmZmYwMCk7CiAgbWl4dDogbWl4KCNmZjAwMDAsIHRyYW5zcGFyZW50KTsKCiAgLmlzLWEgewogICAgQHJ1bGVzOiB7CiAgICAgIGNvbG9yOiByZWQ7CiAgICB9OwogICAgcnVsZXNldDogaXNydWxlc2V0KEBydWxlcyk7CiAgICBjb2xvcjogaXNjb2xvcigjZGRkKTsKICAgIGNvbG9yMTogaXNjb2xvcihyZWQpOwogICAgY29sb3IyOiBpc2NvbG9yKHJnYigwLCAwLCAwKSk7CiAgICBjb2xvcjM6IGlzY29sb3IodHJhbnNwYXJlbnQpOwogICAga2V5d29yZDogaXNrZXl3b3JkKGhlbGxvKTsKICAgIG51bWJlcjogaXNudW1iZXIoMzIpOwogICAgc3RyaW5nOiBpc3N0cmluZygiaGVsbG8iKTsKICAgIHBpeGVsOiBpc3BpeGVsKDMycHgpOwogICAgcGVyY2VudDogaXNwZXJjZW50YWdlKDMyJSk7CiAgICBlbTogaXNlbSgzMmVtKTsKICAgIGV4OiBpc3VuaXQoMzJleCwgZXgpOwogICAgcmVtOiBpc3VuaXQoMzJyZW0sIHJlbSk7CiAgICB2dzogaXN1bml0KDMydncsIHZ3KTsKICAgIHZoOiBpc3VuaXQoMzJ2aCwgdmgpOwogICAgdm1pbjogaXN1bml0KDMydm1pbiwgdm1pbik7CiAgICB2bWF4OiBpc3VuaXQoMzJ2bWF4LCB2bWF4KTsKICAgIGNoOiBpc3VuaXQoMzJjaCwgY2gpOwogICAgY206IGlzdW5pdCgzMmNtLCBjbSk7CiAgICBtbTogaXN1bml0KDMybW0sIG1tKTsKICAgIHB0OiBpc3VuaXQoMzJwdCwgcHQpOwogICAgcTogaXN1bml0KDMycSwgcSk7CiAgICBpbjogaXN1bml0KDMyaW4sIGluKTsKICAgIGNhdDogaXN1bml0KDMyY2F0LCBjYXQpOwogICAgbm8tdW5pdC1pcy1lbXB0eTogaXN1bml0KDMyLCAnJyk7CiAgICBjYXNlLWluc2Vuc2l0aXZlLTE6IGlzdW5pdCgzMkNBVCwgY2F0KTsKICAgIGNhc2UtaW5zZW5zaXRpdmUtMjogaXN1bml0KDMycHgsIFBYKTsKICB9Cn0KCiNhbHBoYSB7CiAgYWxwaGE6IGRhcmtlbihoc2xhKDI1LCA1MCUsIDUwJSwgMC42KSwgMTAlKTsKICBhbHBoYTI6IGFscGhhKHJnYmEoMywgNCwgNSwgMC41KSk7CiAgYWxwaGEzOiBhbHBoYSh0cmFuc3BhcmVudCk7Cn0KCiNibGVuZG1vZGVzIHsKICBtdWx0aXBseTogbXVsdGlwbHkoI2Y2MDAwMCwgI2Y2MDAwMCk7CiAgc2NyZWVuOiBzY3JlZW4oI2Y2MDAwMCwgIzAwMDBmNik7CiAgb3ZlcmxheTogb3ZlcmxheSgjZjYwMDAwLCAjMDAwMGY2KTsKICBzb2Z0bGlnaHQ6IHNvZnRsaWdodCgjZjYwMDAwLCAjZmZmZmZmKTsKICBoYXJkbGlnaHQ6IGhhcmRsaWdodCgjZjYwMDAwLCAjMDAwMGY2KTsKICBkaWZmZXJlbmNlOiBkaWZmZXJlbmNlKCNmNjAwMDAsICMwMDAwZjYpOwogIGV4Y2x1c2lvbjogZXhjbHVzaW9uKCNmNjAwMDAsICMwMDAwZjYpOwogIGF2ZXJhZ2U6IGF2ZXJhZ2UoI2Y2MDAwMCwgIzAwMDBmNik7CiAgbmVnYXRpb246IG5lZ2F0aW9uKCNmNjAwMDAsICMzMTMxMzEpOwp9CgojZXh0cmFjdC1hbmQtbGVuZ3RoIHsKICBAYW5vbjogQSBCIEMgMSAyIDM7CiAgZXh0cmFjdDogZXh0cmFjdChAYW5vbiwgNikgZXh0cmFjdChAYW5vbiwgNSkgZXh0cmFjdChAYW5vbiwgNCkgZXh0cmFjdChAYW5vbiwgMykgZXh0cmFjdChAYW5vbiwgMikgZXh0cmFjdChAYW5vbiwgMSk7CiAgbGVuZ3RoOiBsZW5ndGgoQGFub24pOwp9CgojcXVvdGVkLWZ1bmN0aW9ucy1pbi1taXhpbiB7CiAgLy8gUXVvdGVkIHR5cGUgbWF5IGhhdmUgc29tZSB3ZWlyZCBzaWRlLWVmZmVjdHMgd2hlbiB1c2VkIGluIG1peGlucyAoIzIzMDgpCiAgLm1peGluKCk7CiAgLm1peGluKCkgewogICAgcmVwbGFjZS1kb3VibGUtcXVvdGVkOiByZXBsYWNlKCdmb28tMScsICIxIiwgIjIiKTsKICAgIHJlcGxhY2Utc2luZ2xlLXF1b3RlZDogcmVwbGFjZSgnZm9vLTMnLCAiMyIsICI0Iik7CiAgICByZXBsYWNlLWVzY2FwZWQtc3RyaW5nOiByZXBsYWNlKH4iYmFyLTEiLCAiMSIsICIyIik7CiAgICByZXBsYWNlLWtleXdvcmQ6IHJlcGxhY2UoYmF6LTEsICIxIiwgIjIiKTsKICAgIHJlcGxhY2UtYW5vbnltb3VzOiByZXBsYWNlKGUoInF1eC0xIiksICIxIiwgIjIiKTsKICAgIGZvcm1hdC1kb3VibGUtcXVvdGVkOiAlKCJoZWxsbyAlcyIsICJ3b3JsZCIpOwogICAgZm9ybWF0LXNpbmdsZS1xdW90ZWQ6ICUoJ2hlbGxvICVzJywgInNpbmdsZSB3b3JsZCIpOwogICAgZm9ybWF0LWVzY2FwZWQtc3RyaW5nOiAlKH4iaGVsbG8gJXMiLCAiZXNjYXBlZCB3b3JsZCIpOwogICAgZm9ybWF0LWtleXdvcmQ6ICUoaGVsbG8pOwogICAgZm9ybWF0LWFub255bW91czogJShlKCJoZWxsbyAlcyIpLCAiYW5vbnltb3VzIHdvcmxkIik7CiAgfQp9CgojbGlzdC1kZXRhaWxzIHsKICBAbGlzdDoKICAgIGEgMSwgLy8gU29tZSBjb21tZW50CiAgICBiIDI7CgogIGxlbmd0aDogbGVuZ3RoKEBsaXN0KTsKICBvbmU6IGV4dHJhY3QoQGxpc3QsIDEpOwogIEB0d286IGV4dHJhY3QoQGxpc3QsIDIpOwogIHR3bzogQHR3bzsKICB0d28tbGVuZ3RoOiBsZW5ndGgoQHR3byk7CiAgdHdvLW9uZTogZXh0cmFjdChAdHdvLCAxKTsKICB0d28tdHdvOiBleHRyYWN0KEB0d28sIDIpOwp9CkBjb2xvcjE6ICNGRkY7LyogY29tbWVudDEgKi8KQGNvbG9yMjogI0ZGRi8qIGNvbW1lbnQyICovOwpodG1sIHsKICBjb2xvcjogbWl4KGJsdWUsIEBjb2xvcjEsIDUwJSk7CiAgY29sb3I6IG1peChibHVlLCBAY29sb3IyLCA1MCUpOwp9CgojYm9vbGVhbiB7CiAgYTogYm9vbGVhbihub3QoMiA8IDEpKTsKICBiOiBib29sZWFuKG5vdCgyID4gMSkgYW5kICh0cnVlKSk7CiAgYzogYm9vbGVhbihub3QoYm9vbGVhbih0cnVlKSkpOwp9CgojaWYgewogIGE6IGlmKG5vdChmYWxzZSksIDEsIDIpOwogIGI6IGlmKG5vdCh0cnVlKSwgMSwgMik7CiAgQDE6IGlmKG5vdChmYWxzZSksIHtjOiAzfSwge2Q6IDR9KTsgQDEoKTsKCiAgZTogaWYobm90KHRydWUpLCA1KTsKICBAZjogYm9vbGVhbigzID0gNCk7CiAgZjogaWYobm90KEBmKSwgNik7CiAgZzogaWYodHJ1ZSwgMywgNSk7CiAgaDogaWYoZmFsc2UsIDMsIDUpOwogIGk6IGlmKHRydWUgYW5kIGlzbnVtYmVyKDYpLCA2LCA4KTsKICBqOiBpZihub3QodHJ1ZSkgYW5kIHRydWUsIDYsIDgpOwogIGs6IGlmKHRydWUgb3IgdHJ1ZSwgMSk7CgogIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMzM3MQogIEBzb21lOiBmb287CiAgbDogaWYoKGlzY29sb3IoQHNvbWUpKSwgZGFya2VuKEBzb21lLCAxMCUpLCBibGFjayk7CiAgCgogIGlmKChmYWxzZSksIHtnOiA3fSk7IC8qIHJlc3VsdHMgaW4gdm9pZCAqLwoKICBAY29uZGl0aW9uYWw6IGlmKCh0cnVlKSwgewogICAgY29sb3I6IGdyZWVuOwogIH0sIHt9KTsKICBAY29uZGl0aW9uYWwoKTsKCiAgQGZhbHNleTogaWYoKGZhbHNlKSwgewogICAgY29sb3I6IG9yYW5nZTsKICB9LCB7CiAgICBjb2xvcjogcHVycGxlOwogIH0pOwogIEBmYWxzZXkoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/ie-filters.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZhdDogMDsKQGNsb3VkaGVhZDogIiMwMDAwMDAiOwoKLm5hdiB7CiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eSA9IDIwKTsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PUBmYXQpOwogIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiMzMzMzMzMiLCBlbmRDb2xvcnN0cj1AY2xvdWRoZWFkLCBHcmFkaWVudFR5cGU9QGZhdCk7Cn0KLmV2YWxUZXN0KEBhcmcpIHsKICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PUBhcmcpOwp9Ci5ldmFsVGVzdDEgewogIC5ldmFsVGVzdCgzMCk7CiAgLmV2YWxUZXN0KDUpOwp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-inline.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoImltcG9ydC9pbXBvcnQtdGVzdC1jLmxlc3MiKTsvLyBpbXBvcnQgaW5saW5lIHNob3VsZCBub3QgZmxvYXQgYWJvdmUgdGhpcyAjMTk1NApAaW1wb3J0IChpbmxpbmUpIHVybCgiaW1wb3J0L2ltcG9ydC10ZXN0LWQuY3NzIikgKG1pbi13aWR0aDo2MDBweCk7CkBpbXBvcnQgKGlubGluZSwgY3NzKSB1cmwoImltcG9ydC9pbnZhbGlkLWNzcy5sZXNzIik7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-interpolation.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG15X3RoZW1lOiAidGVzdCI7CgpAaW1wb3J0ICJpbXBvcnQvaW1wb3J0LUB7bXlfdGhlbWV9LWUubGVzcyI7CgpAaW1wb3J0ICJpbXBvcnQvaW1wb3J0LUB7aW59QHt0ZXJwb2xhdGlvbn0ubGVzcyI7CgpAaW1wb3J0ICJpbXBvcnQvaW50ZXJwb2xhdGlvbi12YXJzLmxlc3MiOwoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-module.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiQGxlc3MvdGVzdC1pbXBvcnQtbW9kdWxlL29uZS90d28vdGhyZWUvMy5sZXNzIjsKQGltcG9ydCAiQGxlc3MvdGVzdC1pbXBvcnQtbW9kdWxlL29uZS90d28vMiI7CkBpbXBvcnQgIkBsZXNzL3Rlc3QtaW1wb3J0LW1vZHVsZS9vbmUvMS5sZXNzIjsK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-once.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0L2ltcG9ydC1vbmNlLXRlc3QtYyI7CkBpbXBvcnQgImltcG9ydC9pbXBvcnQtb25jZS10ZXN0LWMiOwpAaW1wb3J0ICJpbXBvcnQvaW1wb3J0LW9uY2UtdGVzdC1jLmxlc3MiOwpAaW1wb3J0ICJpbXBvcnQvZGVlcGVyL2ltcG9ydC1vbmNlLXRlc3QtYSI7CkBpbXBvcnQgKG11bHRpcGxlKSAiaW1wb3J0L2ltcG9ydC10ZXN0LWYubGVzcyI7CkBpbXBvcnQgKG11bHRpcGxlKSAiaW1wb3J0L2ltcG9ydC10ZXN0LWYubGVzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gVGVzdHMgZm9sbG93aW5nIHBhc3QgaXNzdWVzOgovLyAqICMxODUxIC0gRXh0ZW5kIHdpdGhpbiAocmVmZXJlbmNlKSBpbXBvcnRlZCBmaWxlcyAKLy8gKiAjMTg5NiAtIE5hbWVzcGFjZSBpbXBvcnRlZCBsZXNzIGNvZGUgZG9lcyBub3QgZ2V0IHByb3Blcmx5IHJlZmVyZW5jZWQsIHdoZW4gdGhlcmUncyBhIChyZWZlcmVuY2UpIGtleXdvcmQuCi8vICogIzE4NzggLSBleHRlbmQgaW5zaWRlIHJlZmVyZW5jZWQgZmlsZSBzaG91bGQgbm90IGV4dGVuZCBvdXRzaWRlIHNlbGVjdG9ycwovLyAqICMyNzE2IC0gQSBmaWxlIGltcG9ydGVkIGJ5IHJlZmVyZW5jZSBhbmQgdGhlbiBub3JtYWxseSAtIG11bHRpcGxlIGltcG9ydHMgc2hvdWxkIGJlIGluZGVwZW5kZW50Ci8vICogIzE5NjggLSBXaGVuIHVzaW5nIGFuIEBpbXBvcnQgKHJlZmVyZW5jZSksIG1peGlucyB0aGF0IGNvbnRhaW4gYW4gJiBzZWxlY3RvciBnZXQgYWRkZWQgdG8gdGhlIGNvbXBpbGVkIG91dHB1dCBpbXByb3Blcmx5Ci8vICogIzIxNjIgLSBDYW5ub3QgcHV0IGltcG9ydCBieSByZWZlcmVuY2UgaW5zaWRlIG9mIGEgbWl4aW4gKGFsc28gZG91YmxlcyAjMTg5NikKCi8vICMxODc4OiBleHRlbmQgaW5zaWRlIHJlZmVyZW5jZWQgZmlsZSBzaG91bGQgbm90IGV4dGVuZCBvdXRzaWRlIHNlbGVjdG9ycwpAaW1wb3J0IChyZWZlcmVuY2UpICJpbXBvcnQtcmVmZXJlbmNlLWlzc3Vlcy9nbG9iYWwtc2NvcGUtaW1wb3J0Lmxlc3MiOwoudGhlT25seVNlbGVjdG9yIHsKICBzaGFsbC1oYXZlOiBvbmUgc2VsZWN0b3I7Cn0KCi8vICMyNzE2OiBBIGZpbGUgaW1wb3J0ZWQgYnkgcmVmZXJlbmNlIGFuZCB0aGVuIG5vcm1hbGx5IC0gbXVsdGlwbGUgaW1wb3J0cyBzaG91bGQgYmUgaW5kZXBlbmRlbnQKLy8gIzE4Nzg6IC0gZG91YmxlIG5lc3RlZCB2ZXJzaW9uCiNkby1ub3Qtc2hvdy1pbXBvcnQgewogIEBpbXBvcnQgKHJlZmVyZW5jZSwgbXVsdGlwbGUpICJpbXBvcnQtcmVmZXJlbmNlLWlzc3Vlcy9tdWx0aXBsZS1pbXBvcnQubGVzcyI7Cn0KCnNob3ctYWxsLWNvbnRlbnQgewogIEBpbXBvcnQgKG11bHRpcGxlKSAiaW1wb3J0LXJlZmVyZW5jZS1pc3N1ZXMvbXVsdGlwbGUtaW1wb3J0Lmxlc3MiOwp9Ci8vICMxODk2OiBOYW1lc3BhY2UgaW1wb3J0ZWQgbGVzcyBjb2RlIGRvZXMgbm90IGdldCBwcm9wZXJseSByZWZlcmVuY2VkLCB3aGVuIHRoZXJlJ3MgYSAocmVmZXJlbmNlKSBrZXl3b3JkLgojTmFtZXNwYWNlIHsKICBAaW1wb3J0IChsZXNzLCByZWZlcmVuY2UpICJpbXBvcnQtcmVmZXJlbmNlLWlzc3Vlcy9zaW1wbGUtbWl4aW4uY3NzIjsKfQojdXNlZC1uYW1lc3BhY2VkLW1peGluIHsKICAjTmFtZXNwYWNlID4gLm1peGluKCk7CiAgc2hhbGwtc2VlOiBhbm90aGVyIHByb3BlcnR5IGFib3ZlOwp9CgovLyAjMTg1MTogRXh0ZW5kIHdpdGhpbiAocmVmZXJlbmNlKSBpbXBvcnRlZCBmaWxlcyAKLy8gdGVzdC1iIGlzIGluIGdsb2JhbC1zY29wZS1pbXBvcnQubGVzcyBmaWxlCi50ZXN0LXJ1bGUtYyB7CiAgJjpleHRlbmQoLnRlc3QtcnVsZS1iIGFsbCk7Cn0KCi8vICMxOTY4OiBXaGVuIHVzaW5nIGFuIEBpbXBvcnQgKHJlZmVyZW5jZSksIG1peGlucyB0aGF0IGNvbnRhaW4gYW4gJiBzZWxlY3RvciBnZXQgYWRkZWQgdG8gdGhlIGNvbXBpbGVkIG91dHB1dCBpbXByb3Blcmx5CkBpbXBvcnQgImltcG9ydC1yZWZlcmVuY2UtaXNzdWVzL21peGluLTE5NjgubGVzcyI7CkBpbXBvcnQgKHJlZmVyZW5jZSkgImltcG9ydC1yZWZlcmVuY2UtaXNzdWVzL2FwcGVuZGVyLXJlZmVyZW5jZS0xOTY4Lmxlc3MiOwoKLy8gIzIxNjIgLSBDYW5ub3QgcHV0IGltcG9ydCBieSByZWZlcmVuY2UgaW5zaWRlIG9mIGEgbWl4aW4gKGFsc28gZG91YmxlcyAjMTg5NikKLm1peGluLXdpdGgtaW1wb3J0LWJ5LXJlZmVyZW5jZS1pbnNpZGUoKSB7CiAgdGhlLW9ubHktcHJvcGVydHk6IG5vdGhpbmctYmVsb3ctdGhpczsKICBAaW1wb3J0IChyZWZlcmVuY2UpICJpbXBvcnQtcmVmZXJlbmNlLWlzc3Vlcy9zaW1wbGUtcnVsZXNldC0yMTYyLmxlc3MiOwp9CmNhbGwtbWl4aW4td2l0aC1pbXBvcnQtYnktcmVmZXJlbmNlLWluc2lkZSB7CiAgLm1peGluLXdpdGgtaW1wb3J0LWJ5LXJlZmVyZW5jZS1pbnNpZGUoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/appender-reference-1968.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNvbnRhaW5lci1uby1wYXJlbnQtc2VsZWN0b3IgewogICAubWl4aW4tbm8tcGFyZW50LXNlbGVjdG9yKCk7Cn0KLmNvbnRhaW5lci13aXRoLXBhcmVudC1zZWxlY3RvciB7CiAgLm1peGluLXdpdGgtcGFyZW50LXNlbGVjdG9yKCkKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/global-scope-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRoZU9ubHlTZWxlY3RvciB7CiAgYXZvaWQ6IHdhcm5pbmc7Cn0KLnVudXNlZEFuZFJlZmVyZW5jZTpleHRlbmQoLnRoZU9ubHlTZWxlY3RvcikgewogICAgdW51c2VkLWFuZDogcmVmZXJlbmNlOwp9CgpAaW1wb3J0IChyZWZlcmVuY2UpICJnbG9iYWwtc2NvcGUtbmVzdGVkLmxlc3MiOwoKLnRlc3QtcnVsZS1iIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAmOmV4dGVuZCgudGVzdC1ydWxlLWEgYWxsKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/global-scope-nested.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtcnVsZS1hIHsKICBjb2xvcjogcmVkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/mixin-1968.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluLW5vLXBhcmVudC1zZWxlY3RvcigpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cn0KLm1peGluLXdpdGgtcGFyZW50LXNlbGVjdG9yKCkgewogICY6Zmlyc3QtY2hpbGR7IC8vICBVU0lORyBBTiAmIFNFTEVDVE9SIEhFUkUKICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CiB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/multiple-import-nested.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogZG91YmxlIG5lc3RlZCBmaWxlICovCnNob3VsZCB7CiAgYmU6IGludmlzaWJsZTsKfQovKiBkbyBub3QgZXh0ZW5kIG91dHNpZGUgb2YgdGhpcyAqLwouc29tZXRoaW5nIHsKICBpbnZpc2libGU6IHN1cHByZXNzIHdhcm5pbmc7Cn0KLmludmlzaWJsZSB7CiAmOmV4dGVuZCguc29tZXRoaW5nIGFsbCk7Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/multiple-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICB0cmFsYWxhCiovCi5maXggewogIGZpeDogZml4Owp9Ci5zb21ldGhpbmcgewogIEBpbXBvcnQgKHJlZmVyZW5jZSkgIm11bHRpcGxlLWltcG9ydC1uZXN0ZWQubGVzcyI7CiAgaW5zaWRlOiBzb21ldGhpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/simple-mixin.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIHsKICB3YXM6IGluY2x1ZGVkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference-issues/simple-ruleset-2162.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cnVsZXNldCB7CiAgc2hhbGwtYmUtaW52aXNpYmxlOiBsZXNzOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-reference.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImltcG9ydC1vbmNlLmxlc3MiKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImNzcy0zLmxlc3MiKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoIm1lZGlhLmxlc3MiKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImltcG9ydC9pbXBvcnQtcmVmZXJlbmNlLmxlc3MiKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImltcG9ydC9jc3MtaW1wb3J0Lmxlc3MiKTsKCi5iIHsKICAueigpOwp9CgouenooKTsKCi52aXNpYmxlOmV4dGVuZCgueiBhbGwpIHsKICBleHRlbmQ6IHRlc3Q7Cn0KCi50ZXN0LXJ1bGUtbWVkaWFxLWltcG9ydCB7CiAgLm1peGluLXdpdGgtbWVkaWFxKDM0MHB4KTsKfQoKLmNsYXNzOmV4dGVuZCguY2xhc3MgYWxsKSB7Cn0KLm1peGluLXdpdGgtbmVzdGVkLXNlbGVjdG9ycygpOwoubWl4aW4td2l0aC1kaXJlY3RpdmVzKHNvbWUtbmFtZSk7CgoucHJpbnQtcmVmZXJlbmNlZC1pbXBvcnQtaW5saW5lKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import-remote.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMzU0MQpAaW1wb3J0IChyZWZlcmVuY2UpIHVybChodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BsZXNzL3Rlc3QtZGF0YS9sZXNzL19tYWluL3NlbGVjdG9ycy5sZXNzKTsKQGltcG9ydCAocmVmZXJlbmNlKSB1cmwoImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGxlc3MvdGVzdC1kYXRhL2xlc3MvX21haW4vc2NvcGUubGVzcyIpOwpAaW1wb3J0IChyZWZlcmVuY2UpIHVybCgiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AbGVzcy90ZXN0LWRhdGEvbGVzcy9fbWFpbi9lbXB0eS5sZXNzP2FyZyIpOwoKLnRlc3QgewogIGNvbG9yOiBAeDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqIGNvbW1lbnQgYXQgdGhlIHRvcCoqLwpAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLXNpbXBsZSI7CgpAaW1wb3J0IHVybCgvYWJzb2x1dGUvc29tZXRoaW5nLmNzcykgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAobWF4LXdpZHRoOiA2MDBweCk7CgpAaW1wb3J0IChvcHRpb25hbCkgImZpbGUtZG9lcy1ub3QtZXhpc3QuZG9lcy1ub3QtZXhpc3QiOwoKQHZhcjogMTAwcHg7CkBpbXBvcnQgdXJsKCIvL2hhLmNvbS9maWxlLmNzcyIpIChtaW4td2lkdGg6QHZhcik7CgojaW1wb3J0LXRlc3QgewogIC5taXhpbjsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IChAYSArIDEwJSk7CiAgdmFsdWU6IHBpLWFub24oKTsKfQpAaW1wb3J0ICJpbXBvcnQvaW1wb3J0LXRlc3QtZSIgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCk7CgpAaW1wb3J0IHVybCgiaW1wb3J0L2ltcG9ydC10ZXN0LWEubGVzcyIpOwoKQGltcG9ydCAobGVzcywgbXVsdGlwbGUpICJpbXBvcnQvaW1wb3J0LXRlc3QtZC5jc3MiIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAxcHgpOwoKQGltcG9ydCAobXVsdGlwbGUpICJpbXBvcnQvaW1wb3J0LXRlc3QtZSIgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDJweCk7CgpAaW1wb3J0IChsZXNzLCBtdWx0aXBsZSkgdXJsKCJpbXBvcnQvaW1wb3J0LXRlc3QtZC5jc3MiKSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwM3B4KTsKCkBtZWRpYSBwcmludCB7CiAgQGltcG9ydCAobXVsdGlwbGUpICJpbXBvcnQvaW1wb3J0LXRlc3QtZSI7Cn0KCkBjaGFyc2V0ICJVVEYtOCI7IC8vIGNsaW1iIG9uIHRvcCAjMjEyNgoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/css-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoInRlc3QuY3NzIik7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/deeper/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/deeper/deeper-2/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/deeper/deeper-2/url-import-2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmRlZXAtaW1wb3J0LXVybCB7CiAgY29sb3I6IHJlZDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/deeper/deeper-2/url-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoInVybC1pbXBvcnQtMi5sZXNzIik7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/deeper/import-once-test-a.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi4vaW1wb3J0LW9uY2UtdGVzdC1jIjs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/deeper/url-import.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoImRlZXBlci0yL3VybC1pbXBvcnQubGVzcyIpOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-and-relative-paths-test.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi4vY3NzL2JhY2tncm91bmQuY3NzIjsKQGltcG9ydCAiaW1wb3J0LXRlc3QtZC5jc3MiOwoKQGltcG9ydCAiaW1wb3J0cy9sb2dvIjsKQGltcG9ydCAiaW1wb3J0cy9mb250IjsKCi51bnF1b3RlZC1yZWxhdGl2ZS1wYXRoLWJnKCkgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2RhdGEvaW1hZ2UuanBnKTsKfQoucXVvdGVkLXJlbGF0aXZlLXBhdGgtYm9yZGVyLWltYWdlKCkgewogICAgYm9yZGVyLWltYWdlOiB1cmwoJy4uLy4uL2RhdGEvaW1hZ2UuanBnJyk7Cn0KCiNpbXBvcnRlZC1yZWxhdGl2ZS1wYXRoIHsKICAgIC51bnF1b3RlZC1yZWxhdGl2ZS1wYXRoLWJnOwogICAgLnF1b3RlZC1yZWxhdGl2ZS1wYXRoLWJvcmRlci1pbWFnZTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-charset-test.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIklTTy04ODU5LTEiOw==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-inline-invalid-css.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAoaW5saW5lKSAiaW52YWxpZC1jc3MubGVzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-interpolation.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAoaW5saW5lKSAiaW1wb3J0cy9sb2dvLmxlc3MiOwpAaW1wb3J0ICJpbXBvcnQtQHtpbn1Ae3RlcnBvbGF0aW9ufTIubGVzcyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-interpolation2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmEgewogIHZhcjogdGVzdDsKfQoKQGluOiAicmVkZWZpbmVkLWRvZXMtbm90aGluZyI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-once-test-c.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBjOiByZWQ7CgojaW1wb3J0IHsKICBjb2xvcjogQGM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-reference.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnogewogIGNvbG9yOiByZWQ7CiAgLmMgewogICAgY29sb3I6IGdyZWVuOwogIH0KfQoub25seS13aXRoLXZpc2libGUsCi56IHsKICBjb2xvcjogZ3JlZW47CiAgJjpob3ZlciB7CiAgICBjb2xvcjogZ3JlZW47CiAgfQogICYgewogICAgY29sb3I6IGdyZWVuOwogIH0KICAmICsgJiB7CiAgICBjb2xvcjogZ3JlZW47CiAgICAuc3ViIHsKICAgICAgY29sb3I6IGdyZWVuOwogICAgfQogIH0KfQoKJiB7CiAgLmhpZGRlbiB7CiAgICBoaWRkZW46IHRydWU7CiAgfQp9CgpAbWVkaWEgdHYgewogIC5oaWRkZW4gewogICAgaGlkZGVuOiB0cnVlOwogIH0KfQoKLyogY29tbWVudCBpcyBub3Qgb3V0cHV0ICovCgouenogewogIC55IHsKICAgIHB1bGxlZC1pbjogeWVzIC8qIGlubGluZSBjb21tZW50IHN1cnZpdmVzICovOwogIH0KICAvKiBjb21tZW50IHB1bGxlZCBpbiAqLwp9CkBtYXgtc2l6ZTogNDUwcHg7Ci5taXhpbi13aXRoLW1lZGlhcShAbnVtKSB7CiAgY29sb3I6IGdyZWVuOwogIHRlc3Q6IEBudW07CiAgQG1lZGlhIChtYXgtc2l6ZTogQG1heC1zaXplKSB7CiAgICBjb2xvcjogcmVkOwogIH0KfQovL2h0dHBzOi8vZ2l0aHViLmNvbS9sZXNzL2xlc3MuanMvaXNzdWVzLzIzNTkKQHN1cHBvcnRzIChzb21ldGhpbmc6IGVsc2UpIHsKICAuY2xhc3MgewogICAgc29tZXRoaW5nOiBlbHNlOwogIH0KICAubmVzdGVkVG9vIHsKICAgIC5jbGFzcyB7CiAgICAgIHNvbWV0aGluZzogZWxzZTsKICAgIH0KICB9CiAgLmludmlzaWJsZSB7CiAgICBzb21ldGhpbmc6IGVsc2U7CiAgfQp9Ci8vaHR0cHM6Ly9naXRodWIuY29tL2xlc3MvbGVzcy5qcy9pc3N1ZXMvMTk3OQoubWl4aW4td2l0aC1uZXN0ZWQtc2VsZWN0b3JzKCkgewogIC50ZXN0LXJ1bGUgewogICAgY29sb3I6IHJlZDsKICAgICY6Zmlyc3QtY2hpbGQgewogICAgICBjb2xvcjogYmx1ZTsKICAgIH0KICB9Cn0KLm1peGluLXdpdGgtZGlyZWN0aXZlcyhAa2V5ZnJhbWVOYW1lKSB7CiAgQGtleWZyYW1lcyBAa2V5ZnJhbWVOYW1lIHsKICAgIEBydWxlczEoKTsKICB9CiAgQHN1cHBvcnRzIChhbmltYXRpb24tbmFtZTogdGVzdCkgewogICAgQGtleWZyYW1lcyBAa2V5ZnJhbWVOYW1lIHsKICAgICAgQHJ1bGVzMigpOwogICAgfQogICAgLnNlbGVjdG9yIHsKICAgICAgY29sb3I6IHJlZDsKICAgIH0KICB9CiAgQHJ1bGVzMToge3Byb3BlcnR5OiB2YWx1ZTt9OwogIEBydWxlczI6IHtwcm9wZXJ0eTogdmFsdWU7fTsKfQoKQGltcG9ydCAoaW5saW5lLCBtdWx0aXBsZSkgImludmFsaWQtY3NzLmxlc3MiOwpAaW1wb3J0ICJpbXBvcnQtaW5saW5lLWludmFsaWQtY3NzLmxlc3MiOwoucHJpbnQtcmVmZXJlbmNlZC1pbXBvcnQtaW5saW5lKCkgewogIGRpdiB7CiAgICBAaW1wb3J0IChpbmxpbmUsIG11bHRpcGxlKSAiaW52YWxpZC1jc3MubGVzcyI7CiAgfQogIEBpbXBvcnQgKGlubGluZSwgbXVsdGlwbGUpICJpbnZhbGlkLWNzcy5sZXNzIjsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-test-a.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0LXRlc3QtYi5sZXNzIjsKQGltcG9ydCB1cmwoaW1wb3J0LXRlc3QtZi5sZXNzKTsKQGltcG9ydCB1cmwoImRlZXBlci91cmwtaW1wb3J0Lmxlc3MiKTsKQGE6IDIwJTsKQGltcG9ydCAidXJscy5sZXNzIjs=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-test-b.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0LXRlc3QtYyI7CgpAYjogMTAwJTsKCi5taXhpbiB7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbG9yOiBAYzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-test-c.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBjOiByZWQ7CgojaW1wb3J0IHsKICBjb2xvcjogQGM7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-test-d.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2NzcyB7IGNvbG9yOiB5ZWxsb3c7IH0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-test-e.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CmJvZHkgeyB3aWR0aDogMTAwJSB9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/import-test-f.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiaW1wb3J0LXRlc3QtZSI7CgoudGVzdC1ydWxlLWYgewogIGhlaWdodDogMTBweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/imports/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/imports/font.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgICBmb250LWZhbWlseTogeGVjcmV0OwogICAgc3JjOiB1cmwoJy4uL2Fzc2V0cy94ZWNyZXQudHRmJyk7Cn0KCiNzZWNyZXQgewogICAgZm9udC1mYW1pbHk6IHhlY3JldCwgc2Fucy1zZXJpZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/imports/logo.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2xvZ28gewogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4OwogIGJhY2tncm91bmQ6IHVybCgnLi4vYXNzZXRzL2xvZ28ucG5nJyk7CiAgYmFja2dyb3VuZDogdXJsKCIjaW5saW5lLXN2ZyIpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/interpolation-vars.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGluOiAiaW4iOwpAdGVycG9sYXRpb246ICJ0ZXJwb2xhdGlvbiI7CgovLyBzaG91bGQgYmUgaWdub3JlZCBiZWNhdXNlIGl0cyBhbHJlYWR5IGltcG9ydGVkCi8vIGFuZCBpdCB1c2VzIGEgdmFyaWFibGUgZnJvbSB0aGUgcGFyZW50IHNjb3BlCkBpbXBvcnQgImltcG9ydC1Ae215X3RoZW1lfS1lLmxlc3MiOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/invalid-css.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGhpcyBpc24ndCB2ZXJ5IHZhbGlkIENTUy4=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/json/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/json/index.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WwogICJ7cGF0aH0vaW1wb3J0L2ltcG9ydC10ZXN0LWEubGVzcyIsCiAgIntwYXRofS9pbXBvcnQvaW1wb3J0LXRlc3QtYi5sZXNzIiwKICAie3BhdGh9L2ltcG9ydC9kZWVwZXIvdXJsLWltcG9ydC5sZXNzIiwKICAie3BhdGh9L2ltcG9ydC91cmxzLmxlc3MiLAogICJ7cGF0aH0vaW1wb3J0L2ltcG9ydC10ZXN0LWMubGVzcyIsCiAgIntwYXRofS9pbXBvcnQvZGVlcGVyL2RlZXBlci0yL3VybC1pbXBvcnQubGVzcyIsCiAgIntwYXRofS9pbXBvcnQvZGVlcGVyL2RlZXBlci0yL3VybC1pbXBvcnQtMi5sZXNzIiwKICAie3BhdGh9L2ltcG9ydC9pbXBvcnQtdGVzdC1mLmxlc3MiLAogICJ7cGF0aH0vaW1wb3J0L2ltcG9ydC10ZXN0LWUubGVzcyIKXQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/json/index.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi4vaW1wb3J0LXRlc3QtYSI7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/import/urls.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gZW1wdHkgZmlsZSBzaG93aW5nIHRoYXQgaXQgbG9hZHMgZnJvbSB0aGUgcmVsYXRpdmUgcGF0aCBmaXJzdAo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/javascript.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmV2YWwgewogICAganM6IGA0MmA7CiAgICBqczogYDEgKyAxYDsKICAgIGpzOiBgImhlbGxvIHdvcmxkImA7CiAgICBqczogYFsxLCAyLCAzXWA7CiAgICB0aXRsZTogYHR5cGVvZiBwcm9jZXNzLnRpdGxlYDsKICAgIHRlcm5hcnk6IGAoMSArIDEgPT0gMiA/IHRydWUgOiBmYWxzZSlgOwogICAgbXVsdGlsaW5lOiBgKGZ1bmN0aW9uKCl7dmFyIHggPSAxICsgMTsKICAgICAgICAgICByZXR1cm4geH0pKClgOwp9Ci5zY29wZSB7CiAgICBlbXB0eTogYCtmdW5jdGlvbigpe31gOwogICAgQGZvbzogNDI7CiAgICB2YXI6IGBwYXJzZUludCh0aGlzLmZvby50b0pTKCkpYDsKICAgIGVzY2FwZWQ6IH5gMiArIDUgKyAncHgnYDsKfQoudmFycyB7CiAgICBAdmFyOiBgNCArIDRgOwogICAgd2lkdGg6IEB2YXI7Cn0KLmVzY2FwZS1pbnRlcnBvbCB7CiAgICBAd29ybGQ6ICJ3b3JsZCI7CiAgICB3aWR0aDogfmAiaGVsbG8iICsgIiAiICsgQHt3b3JsZH1gOwp9Ci5hcnJheXMgewogICAgQGFyeTogIDEsIDIsIDM7CiAgICBAYXJ5MjogMSAgMiAgMzsKICAgIGFyeTogYEB7YXJ5fS5qb2luKCcsICcpYDsKICAgIGFyeTE6IGBAe2FyeTJ9LmpvaW4oJywgJylgOwp9Ci50cmFuc2l0aW9ucyguLi4pIHsKICBAYXJnOiB+YCJAe2FyZ3VtZW50c30iLnJlcGxhY2UoL1tcW1xdXSovZywgJycpYDsKICBvbmU6IEBhcmc7ICAgICAgICAgICAgICAvLyByb3VuZGVkIHRvIGludGVnZXJzCiAgdHdvOiB+YCJAe2FyZ3VtZW50c30iYDsgLy8gcm91bmRlZCB0byBpbnRlZ2VycwogIHRocmVlOiBAYXJndW1lbnRzOyAgICAgICAgLy8gT0sKfQoudGVzdC1ydWxlLXRyYW4gewogIC50cmFuc2l0aW9ucyhvcGFjaXR5IDAuM3MgZWFzZS1pbiAwLjNzLCBtYXgtaGVpZ2h0IDAuNnMgbGluZWFyLCBtYXJnaW4tYm90dG9tIDAuNHMgbGluZWFyOyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/lazy-eval.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHZhcjogQGE7CkBhOiAxMDAlOwoKLmxhenktZXZhbCB7CiAgd2lkdGg6IEB2YXI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/media.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIEZvciBub3csIHZhcmlhYmxlcyBjYW4ndCBiZSBkZWNsYXJlZCBpbnNpZGUgQG1lZGlhIGJsb2Nrcy4KCkB2YXI6IDQyOwoKQG1lZGlhIHByaW50IHsKICAgIC5jbGFzcyB7CiAgICAgICAgY29sb3I6IGJsdWU7CiAgICAgICAgLnN1YiB7CiAgICAgICAgICAgIHdpZHRoOiBAdmFyOwogICAgICAgIH0KICAgIH0KICAgIC50b3AsIGhlYWRlciA+IGgxIHsKICAgICAgICBjb2xvcjogKCMyMjIgKiAyKTsKICAgIH0KfQoKQG1lZGlhIHNjcmVlbiB7CiAgICBAYmFzZTogODsKICAgIC5ib2R5IHsgbWF4LXdpZHRoOiAoQGJhc2UgKiA2MCk7IH0KfQoKQHJhdGlvX2xhcmdlOiAxNjsKQHJhdGlvX3NtYWxsOiA5OwoKQG1lZGlhIGFsbCBhbmQgKGRldmljZS1hc3BlY3QtcmF0aW86IH4nQHtyYXRpb19sYXJnZX0gLyBAe3JhdGlvX3NtYWxsfScpIHsKICAgLmJvZHkgeyBtYXgtd2lkdGg6IDgwMHB4OyB9Cn0KCkBtZWRpYSBhbGwgYW5kIChvcmllbnRhdGlvbjpwb3J0cmFpdCkgewogICAgYXNpZGUgeyBmbG9hdDogbm9uZTsgfQp9CgpAbWVkaWEgaGFuZGhlbGQgYW5kIChtaW4td2lkdGg6IEB2YXIpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDIwZW0pIHsKICAgIC5ib2R5IHsKICAgICAgICBtYXgtd2lkdGg6IDQ4MHB4OwogICAgfQp9CgouYm9keSB7CiAgICBAbWVkaWEgcHJpbnQgewogICAgICAgIHBhZGRpbmc6IDIwcHg7CgogICAgICAgIGhlYWRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAob3JpZW50YXRpb246bGFuZHNjYXBlKSB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgICAgIH0KICAgIH0KfQoKQG1lZGlhIHNjcmVlbiB7CiAgLnNpZGViYXIgewogICAgd2lkdGg6IDMwMHB4OwogICAgQG1lZGlhIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7CiAgICAgIHdpZHRoOiA1MDBweDsKICAgIH0KICB9Cn0KCkBtZWRpYSBhIHsKICAuZmlyc3QgewogICAgQG1lZGlhIChiKSB7CiAgICAgIC5zZWNvbmQgewogICAgICAgIC50aGlyZCB7CiAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAgICBAbWVkaWEgKGMpIHsKICAgICAgICAgICAgd2lkdGg6IDUwMHB4OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAuZm91cnRoIHsKICAgICAgICAgIHdpZHRoOiAzOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQoKLmJvZHkgewogICAgQG1lZGlhIGEsIChiKSBhbmQgKGMpIHsKICAgICAgICB3aWR0aDogOTUlOwoKICAgICAgICBAbWVkaWEgKHgpLCAoeSkgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB9CiAgICB9Cn0KCi5tZWRpYU1peGluKEBmYWxsYmFjazogMjAwcHgpIHsKICAgIGJhY2tncm91bmQ6IGJsYWNrOwoKICAgIEBtZWRpYSBoYW5kaGVsZCB7CiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CgogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiBAZmFsbGJhY2spIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmVkOwogICAgICAgIH0KICAgIH0KfQoKLmEgewogIC5tZWRpYU1peGluKDEwMHB4KTsKfQoKLmIgewogIC5tZWRpYU1peGluKCk7Cn0KQHNtYXJ0cGhvbmU6IH4ib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIwMHB4KSI7CkBtZWRpYSBAc21hcnRwaG9uZSB7CiAgLmJvZHkgewogICAgd2lkdGg6IDQ4MHB4OwogIH0KfQoKQG1lZGlhIHByaW50IHsKICBAcGFnZSA6bGVmdCB7CiAgICBtYXJnaW46IDAuNWNtOwogIH0KICBAcGFnZSA6cmlnaHQgewogICAgbWFyZ2luOiAwLjVjbTsKICB9CiAgQHBhZ2UgVGVzdDpmaXJzdCB7CiAgICBtYXJnaW46IDFjbTsKICB9CiAgQHBhZ2UgOmZpcnN0IHsKICAgIHNpemU6IDguNWluIDExaW47CiAgICBAdG9wLWxlZnQgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEB0b3AtbGVmdC1jb3JuZXIgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEB0b3AtY2VudGVyIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAdG9wLXJpZ2h0IHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAdG9wLXJpZ2h0LWNvcm5lciB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGJvdHRvbS1sZWZ0IHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAYm90dG9tLWxlZnQtY29ybmVyIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAYm90dG9tLWNlbnRlciB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGJvdHRvbS1yaWdodCB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGJvdHRvbS1yaWdodC1jb3JuZXIgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEBsZWZ0LXRvcCB7CiAgICAgIG1hcmdpbjogMWNtOwogICAgfQogICAgQGxlZnQtbWlkZGxlIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgICBAbGVmdC1ib3R0b20gewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEByaWdodC10b3AgewogICAgICBtYXJnaW46IDFjbTsKICAgIH0KICAgIEByaWdodC1taWRkbGUgewogICAgICBjb250ZW50OiAiUGFnZSAiIGNvdW50ZXIocGFnZSk7CiAgICB9CiAgICBAcmlnaHQtYm90dG9tIHsKICAgICAgbWFyZ2luOiAxY207CiAgICB9CiAgfQp9CgpAbWVkaWEgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogfiIyLzEiKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCksIChtaW4tcmVzb2x1dGlvbjogMTI4ZHBjbSkgewogIC5iIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKICB9Cn0KCi5iZygpIHsKICAgIGJhY2tncm91bmQ6IHJlZDsKCiAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHsKICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKICAgIH0KfQoKLmJvZHkgewogICAgLmJnKCk7Cn0KCkBicE1lZGl1bTogMTAwMHB4OwpAbWVkaWEgKG1heC13aWR0aDogQGJwTWVkaXVtKSB7CiAgICAuYm9keSB7CiAgICAgICAgLmJnKCk7CiAgICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkgewogIC8qIGEgY29tbWVudCAqLwoKICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5ib2R5IHsgZm9udC1zaXplOiAxMXB4OyB9CiAgfQp9CgoubmF2LWp1c3RpZmllZCB7CiAgQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7CiAgICA+IGxpIHsKICAgICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgIH0KICB9Cn0KCi5tZW51CnsKICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIC5uYXYtanVzdGlmaWVkKCk7CiAgfQp9CkBhbGw6IH4iYWxsIjsKQHR2OiB+Iih0dikiOwpAbWVkaWEgQGFsbCBhbmQgQHR2IHsKICAuYWxsLWFuZC10di12YXJpYWJsZXMgewogICAgdmFyOiBhbGwtYW5kLXR2OwogIH0KfQoKQHNvbWUtdmFyOiA2MHB4OwpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAoQHNvbWUtdmFyICsgMSkpIHsKICAuc2VsZWN0b3IgewogICAgZm9vOiBiYXI7CiAgfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/merge.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZpcnN0LXRyYW5zZm9ybSgpIHsKICB0cmFuc2Zvcm0rOiByb3RhdGUoOTBkZWcpLCBza2V3KDMwZGVnKTsKfQouc2Vjb25kLXRyYW5zZm9ybSgpIHsKICB0cmFuc2Zvcm0rOiBzY2FsZSgyLDQpOwp9Ci50aGlyZC10cmFuc2Zvcm0oKSB7CiAgdHJhbnNmb3JtOiBzY2FsZVgoNDVkZWcpOwp9Ci5mb3VydGgtdHJhbnNmb3JtKCkgewogIHRyYW5zZm9ybSs6IHNjYWxlWCg0NWRlZyk7Cn0KLmZpZnRoLXRyYW5zZm9ybSgpIHsKICB0cmFuc2Zvcm0rOiBzY2FsZSgyLDQpICFpbXBvcnRhbnQ7Cn0KLmZpcnN0LWJhY2tncm91bmQoKSB7CiAgYmFja2dyb3VuZCs6IHVybChkYXRhOi8vaW1nMS5wbmcpOwp9Ci5zZWNvbmQtYmFja2dyb3VuZCgpIHsKICBiYWNrZ3JvdW5kKzogdXJsKGRhdGE6Ly9pbWcyLnBuZyk7Cn0KCi50ZXN0LXJ1bGUxIHsKICAvLyBDYW4gbWVyZ2UgdmFsdWVzCiAgLmZpcnN0LXRyYW5zZm9ybSgpOwogIC5zZWNvbmQtdHJhbnNmb3JtKCk7Cn0KLnRlc3QtcnVsZTIgewogIC8vIFdvbid0IG1lcmdlIHZhbHVlcyB3aXRob3V0ICs6IG1lcmdlIGRpcmVjdGl2ZSwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggY3NzCiAgLmZpcnN0LXRyYW5zZm9ybSgpOwogIC50aGlyZC10cmFuc2Zvcm0oKTsKfQoudGVzdC1ydWxlMyB7CiAgLy8gV29uJ3QgbWVyZ2UgdmFsdWVzIGZyb20gdHdvIHNvdXJjZXMgd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcwogIC5mb3VydGgtdHJhbnNmb3JtKCk7CiAgLmZpcnN0LWJhY2tncm91bmQoKTsKfQoudGVzdC1ydWxlNCB7CiAgLmZpcnN0LXRyYW5zZm9ybSgpOwogIC5maWZ0aC10cmFuc2Zvcm0oKTsKfQoudGVzdC1ydWxlNSB7CiAgLmZpcnN0LXRyYW5zZm9ybSgpOwogIC5zZWNvbmQtdHJhbnNmb3JtKCkgIWltcG9ydGFudDsKfQoudGVzdC1ydWxlNiB7CiAgLnNlY29uZC10cmFuc2Zvcm0oKTsKfQoudGVzdC1ydWxlNyB7CiAgLy8gaW5oZXJpdCAhaW1wb3J0YW50IGZyb20gbWVyZ2VkIHN1YnJ1bGVzCiAgLnNlY29uZC10cmFuc2Zvcm0oKTsKICAuc2Vjb25kLXRyYW5zZm9ybSgpICFpbXBvcnRhbnQ7CiAgLnNlY29uZC10cmFuc2Zvcm0oKTsKfQoKLnRlc3QtcnVsZS1pbnRlcmxlYXZlZCB7CiAgICB0cmFuc2Zvcm0rOiAgdDE7CiAgICBiYWNrZ3JvdW5kKzogYjE7CiAgICB0cmFuc2Zvcm0rOiAgdDI7CiAgICBiYWNrZ3JvdW5kKzogYjIsIGIzOwogICAgdHJhbnNmb3JtKzogIHQzOwp9CgoudGVzdC1ydWxlLXNwYWNlZCB7CiAgICB0cmFuc2Zvcm0rXzogIHQxOwogICAgYmFja2dyb3VuZCtfOiBiMTsKICAgIHRyYW5zZm9ybStfOiAgdDI7CiAgICBiYWNrZ3JvdW5kK186IGIyLCBiMzsKICAgIHRyYW5zZm9ybStfOiAgdDM7Cn0KCi50ZXN0LXJ1bGUtaW50ZXJsZWF2ZWQtd2l0aC1zcGFjZWQgewogICAgdHJhbnNmb3JtK186ICB0MXM7CiAgICB0cmFuc2Zvcm0rOiAgIHQyOwogICAgYmFja2dyb3VuZCs6ICBiMTsKICAgIHRyYW5zZm9ybStfOiAgdDNzOwogICAgdHJhbnNmb3JtKzogICB0NCB0NXM7CiAgICBiYWNrZ3JvdW5kK186IGIycywgYjM7CiAgICB0cmFuc2Zvcm0rXzogIHQ2czsKICAgIGJhY2tncm91bmQrOiAgYjQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins-closure.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNjb3BlIHsKICAgIEB2YXI6IDk5cHg7CiAgICAubWl4aW4gKCkgewogICAgICAgIHdpZHRoOiBAdmFyOwogICAgfQp9CgouY2xhc3MgewogICAgLnNjb3BlID4gLm1peGluOwp9Cgoub3ZlcndyaXRlIHsKICAgIEB2YXI6IDBweDsKICAgIC5zY29wZSA+IC5taXhpbjsKfQoKLm5lc3RlZCB7CiAgICBAdmFyOiA1cHg7CiAgICAubWl4aW4gKCkgewogICAgICAgIHdpZHRoOiBAdmFyOwogICAgfQogICAgLmNsYXNzIHsKICAgICAgICBAdmFyOiAxMHB4OwogICAgICAgLm1peGluOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins-guards-default-func.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIGJhc2ljczoKCmd1YXJkLWRlZmF1bHQtYmFzaWMtMSB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDF9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSB7ZGVmYXVsdDogQHh9CgogICAgJi0xIHsubSgxKX0KICAgICYtMiB7Lm0oMil9Cn0KCmd1YXJkLWRlZmF1bHQtYmFzaWMtMiB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDF9CiAgICAubSgyKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDJ9CiAgICAubSgzKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDN9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSB7ZGVmYXVsdDogQHh9CgogICAgJi0wIHsubSgwKX0KICAgICYtMiB7Lm0oMil9Cn0KCmd1YXJkLWRlZmF1bHQtYmFzaWMtMyB7CiAgICAubShAeCkgd2hlbiAoQHggPSAxKSAgICB7Y2FzZTogICAgIDF9CiAgICAubSgyKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDJ9CiAgICAubShAeCkgd2hlbiAoQHggPSAzKSAgICB7Y2FzZTogICAgIDN9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSB7ZGVmYXVsdDogQHh9CgogICAgJi0wIHsubSgwKX0KICAgICYtMiB7Lm0oMil9CiAgICAmLTMgey5tKDMpfQp9CgpndWFyZC1kZWZhdWx0LWRlZmluaXRpb24tb3JkZXIgewogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSkge2RlZmF1bHQ6IEB4fQogICAgLm0oQHgpIHdoZW4gKEB4ID0gMSkgICAge2Nhc2U6ICAgICAxfQogICAgLm0oMikgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAyfQogICAgLm0oQHgpIHdoZW4gKEB4ID0gMykgICAge2Nhc2U6ICAgICAzfQoKICAgICYtMCB7Lm0oMCl9CiAgICAmLTIgey5tKDIpfQogICAgJi0yIHsubSgzKX0KfQoKLy8gb3V0IG9mIGd1YXJkOgoKZ3VhcmQtZGVmYXVsdC1vdXQtb2YtZ3VhcmQgewogICAgLm0oMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FzZS0xOiAgIDF9CiAgICAubShAeDogZGVmYXVsdCgpKSB3aGVuIChkZWZhdWx0KCkpIHtkZWZhdWx0OiBAeH0KCiAgICAmLTAgewogICAgICAgIGNhc2UtMDogZGVmYXVsdCgpOwogICAgICAgIC5tKDEpOwogICAgICAgIC5tKDIpOwogICAgICAgIGNhc2UtMjogZGVmYXVsdCgpOwogICAgfQogICAgJi0xIHsubShkZWZhdWx0KCkpfQogICAgJi0yIHsubSgpfQp9CgovLyBleHByZXNzaW9uczoKCmd1YXJkLWRlZmF1bHQtZXhwci1ub3QgewogICAgLm0oMSkgICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAxfQogICAgLm0oQHgpIHdoZW4gbm90KGRlZmF1bHQoKSkge2RlZmF1bHQ6IEB4fQoKICAgICYtMSB7Lm0oMSl9CiAgICAmLTIgey5tKDIpfQp9CgpndWFyZC1kZWZhdWx0LWV4cHItZXEgewogICAgLm0oQHgpIHdoZW4gKEB4ID0gdHJ1ZSkgICAgICB7Y2FzZTogICAgQHh9CiAgICAubShAeCkgd2hlbiAoQHggPSBmYWxzZSkgICAgIHtjYXNlOiAgICBAeH0KICAgIC5tKEB4KSB3aGVuIChAeCA9IGRlZmF1bHQoKSkge2RlZmF1bHQ6IEB4fQoKICAgICYtdHJ1ZSAgey5tKHRydWUpfQogICAgJi1mYWxzZSB7Lm0oZmFsc2UpfQp9CgpndWFyZC1kZWZhdWx0LWV4cHItb3IgewogICAgLm0oMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlOiAgICAgMX0KICAgIC5tKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgIDJ9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSwgKEB4ID0gMikge2RlZmF1bHQ6IEB4fQoKICAgICYtMSB7Lm0oMSl9CiAgICAmLTIgey5tKDIpfQogICAgJi0zIHsubSgzKX0KfQoKZ3VhcmQtZGVmYXVsdC1leHByLWFuZCB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAxfQogICAgLm0oMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlOiAgICAgMn0KICAgIC5tKEB4KSB3aGVuIChkZWZhdWx0KCkpIGFuZCAoQHggPSAzKSB7ZGVmYXVsdDogQHh9CgogICAgJi0xIHsubSgxKX0KICAgICYtMiB7Lm0oMil9CiAgICAmLTMgey5tKDMpfQogICAgJi00IHsubSg0KX0KfQoKZ3VhcmQtZGVmYXVsdC1leHByLWFsd2F5cyB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAxfQogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSksIG5vdChkZWZhdWx0KCkpIHtkZWZhdWx0OiBAeH0gLy8gYWx3YXlzIG1hdGNoCgogICAgJi0xIHsubSgxKX0KICAgICYtMiB7Lm0oMil9Cn0KCmd1YXJkLWRlZmF1bHQtZXhwci1uZXZlciB7CiAgICAubSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAxfQogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSkgYW5kIG5vdChkZWZhdWx0KCkpIHtkZWZhdWx0OiBAeH0gLy8gbmV2ZXIgbWF0Y2gKCiAgICAmLTEgey5tKDEpfQogICAgJi0yIHsubSgyKX0KfQoKCi8vIG5vdCBjb25mbGljdGluZyBtdWx0aXBsZSBkZWZhdWx0KCkgdXNlczoKCmd1YXJkLWRlZmF1bHQtbXVsdGktMSB7CiAgICAubSgwKSAgICAgICAgICAgICAgICAgICB7Y2FzZTogICAgICAgMH0KICAgIC5tKEB4KSB3aGVuIChkZWZhdWx0KCkpIHtkZWZhdWx0LTE6IEB4fQogICAgLm0oMikgIHdoZW4gKGRlZmF1bHQoKSkge2RlZmF1bHQtMjogQHh9CgogICAgJi0wIHsubSgwKX0KICAgICYtMSB7Lm0oMSl9Cn0KCmd1YXJkLWRlZmF1bHQtbXVsdGktMiB7CiAgICAubSgxLCBAeCkgICB3aGVuIChkZWZhdWx0KCkpIHtkZWZhdWx0LTE6IEB4fQogICAgLm0oMiwgQHgpICAgd2hlbiAoZGVmYXVsdCgpKSB7ZGVmYXVsdC0yOiBAeH0KICAgIC5tKEB4LCB5ZXMpIHdoZW4gKGRlZmF1bHQoKSkge2RlZmF1bHQtMzogQHh9CgogICAgJi0xIHsubSgxLCBubyl9CiAgICAmLTIgey5tKDIsIG5vKX0KICAgICYtMyB7Lm0oMywgeWVzKX0KfQoKZ3VhcmQtZGVmYXVsdC1tdWx0aS0zIHsKICAgIC5tKHJlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FzZS0xOiBkYXJrcmVkfQogICAgLm0oYmx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlLTI6IGRhcmtibHVlfQogICAgLm0oQHgpIHdoZW4gKGlzY29sb3IoQHgpKSBhbmQgKGRlZmF1bHQoKSkgIHtkZWZhdWx0LWNvbG9yOiBAeH0KICAgIC5tKCdmb28nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FzZS0xOiBJIGFtICdmb28nfQogICAgLm0oJ2JhcicpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlLTI6IEkgYW0gJ2Jhcid9CiAgICAubShAeCkgd2hlbiAoaXNzdHJpbmcoQHgpKSBhbmQgKGRlZmF1bHQoKSkge2RlZmF1bHQtc3RyaW5nOiBJIGFtIEB4fQoKICAgICYtYmx1ZSAgey5tKGJsdWUpfQogICAgJi1ncmVlbiB7Lm0oZ3JlZW4pfQogICAgJi1mb28gICB7Lm0oJ2ZvbycpfQogICAgJi1iYXogICB7Lm0oJ2JheicpfQp9CgpndWFyZC1kZWZhdWx0LW11bHRpLTQgewogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSksIG5vdChkZWZhdWx0KCkpICAgIHthbHdheXM6IEB4fQogICAgLm0oQHgpIHdoZW4gKGRlZmF1bHQoKSkgYW5kIG5vdChkZWZhdWx0KCkpIHtuZXZlcjogIEB4fQogICAgLm0oMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXNlOiAgICAyfQoKICAgIC5tKDEpOwogICAgLm0oMik7Cn0KCmd1YXJkLWRlZmF1bHQtbm90LWFtYmlndW91cy0yIHsKICAgIC5tKEB4KSAgICAgICAgICAgICAgICAgICAgIHtjYXNlOiAgICAgICAgIDF9CiAgICAubShAeCkgd2hlbiAoZGVmYXVsdCgpKSAgICB7ZGVmYXVsdDogICAgIEB4fQogICAgLm0oQHgpIHdoZW4gbm90KGRlZmF1bHQoKSkge25vdC1kZWZhdWx0OiBAeH0KCiAgICAubSgyKTsKfQoKZ3VhcmQtZGVmYXVsdC1ub3QtYW1iaWd1b3VzLTMgewogICAgLm0oQHgpICAgICAgICAgICAgICAgICAgICAge2Nhc2U6ICAgICAgICAgICAxfQogICAgLm0oQHgpIHdoZW4gbm90KGRlZmF1bHQoKSkge25vdC1kZWZhdWx0LTE6IEB4fQogICAgLm0oQHgpIHdoZW4gbm90KGRlZmF1bHQoKSkge25vdC1kZWZhdWx0LTI6IEB4fQoKICAgIC5tKDIpOwp9CgovLyBkZWZhdWx0ICYgc2NvcGUKCmd1YXJkLWRlZmF1bHQtc2NvcGVzIHsKICAgIC5zMSgpIHsubShAdikgICAgICAgICAgICAgICAgICB7b25lOiBubyBjb25kaXRpb259fQogICAgLnMyKCkgey5tKEB2KSB3aGVuIChAdikgICAgICAgIHt0d286IHdoZW4gdHJ1ZX19CiAgICAuczMoKSB7Lm0oQHYpIHdoZW4gKGRlZmF1bHQoKSkge3RocmVlOiB3aGVuIGRlZmF1bHR9fQoKICAgICYtMyB7CiAgICAgICAgLnMyKCk7CiAgICAgICAgLnMzKCk7CiAgICAgICAgLm0oZmFsc2UpOwogICAgfQoKICAgICYtMSB7CiAgICAgICAgLnMxKCk7CiAgICAgICAgLnMzKCk7CiAgICAgICAgLm0oZmFsc2UpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins-guards.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci8vIFN0YWNraW5nLCBmdW5jdGlvbnMuLgoKLmxpZ2h0IChAYSkgd2hlbiAobGlnaHRuZXNzKEBhKSA+IDUwJSkgewogIGNvbG9yOiBpbmhlcml0Owp9Ci5saWdodCAoQGEpIHdoZW4gKGxpZ2h0bmVzcyhAYSkgPCA1MCUpIHsKICBjb2xvcjogYmxhY2s7Cn0KLmxpZ2h0IChAYSkgewogIG1hcmdpbjogMXB4Owp9CgoubGlnaHQxIHsgLmxpZ2h0KCNkZGQpIH0KLmxpZ2h0MiB7IC5saWdodCgjNDQ0KSB9CgovLyBBcmd1bWVudHMgYWdhaW5zdCBlYWNoIG90aGVyCgoubWF4IChAYSwgQGIpIHdoZW4gKEBhID4gQGIpIHsKICB3aWR0aDogQGE7Cn0KLm1heCAoQGEsIEBiKSB3aGVuIChAYSA8IEBiKSB7CiAgd2lkdGg6IEBiOwp9CgoubWF4MSB7IC5tYXgoMywgNikgfQoubWF4MiB7IC5tYXgoOCwgMSkgfQoKLy8gR2xvYmFscyBpbnNpZGUgZ3VhcmRzCgpAZzogYXV0bzsKCi5nbG9iIChAYSkgd2hlbiAoQGEgPSBAZykgewogIG1hcmdpbjogQGEgQGc7Cn0KLmdsb2IxIHsgLmdsb2IoYXV0bykgfQoKLy8gT3RoZXIgb3BlcmF0b3JzCgoub3BzIChAYSkgd2hlbiAoQGEgPj0gMCkgewogIGhlaWdodDogZ3Qtb3ItZXE7Cn0KLm9wcyAoQGEpIHdoZW4gKEBhID08IDApIHsKICBoZWlnaHQ6IGx0LW9yLWVxOwp9Ci5vcHMgKEBhKSB3aGVuIChAYSA8PSAwKSB7CiAgaGVpZ2h0OiBsdC1vci1lcS1hbGlhczsKfQoub3BzIChAYSkgd2hlbiBub3QoQGEgPSAwKSB7CiAgaGVpZ2h0OiBub3QtZXE7Cn0KLm9wczEgeyAub3BzKDApIH0KLm9wczIgeyAub3BzKDEpIH0KLm9wczMgeyAub3BzKC0xKSB9CgovLyBTY29wZSBhbmQgZGVmYXVsdCB2YWx1ZXMKCkBhOiBhdXRvOwoKLmRlZmF1bHQgKEBhOiBpbmhlcml0KSB3aGVuIChAYSA9IGluaGVyaXQpIHsKICBjb250ZW50OiBkZWZhdWx0Owp9Ci5kZWZhdWx0MSB7IC5kZWZhdWx0IH0KCi8vIHRydWUgJiBmYWxzZSBrZXl3b3JkcwoudGVzdC1ydWxlIChAYSkgd2hlbiAoQGEpIHsKICAgIGNvbnRlbnQ6ICJ0cnVlLiI7Cn0KLnRlc3QtcnVsZSAoQGEpIHdoZW4gbm90IChAYSkgewogICAgY29udGVudDogImZhbHNlLiI7Cn0KCi50ZXN0LXJ1bGUxIHsgLnRlc3QtcnVsZSh0cnVlKSB9Ci50ZXN0LXJ1bGUyIHsgLnRlc3QtcnVsZShmYWxzZSkgfQoudGVzdC1ydWxlMyB7IC50ZXN0LXJ1bGUoMSkgfQoudGVzdC1ydWxlNCB7IC50ZXN0LXJ1bGUoYm9vKSB9Ci50ZXN0LXJ1bGU1IHsgLnRlc3QtcnVsZSgidHJ1ZSIpIH0KCi8vIEJvb2xlYW4gZXhwcmVzc2lvbnMKCi5ib29sICgpIHdoZW4gKHRydWUpIGFuZCAoZmFsc2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IHRydWUgYW5kIGZhbHNlIH0gLy8gRkFMU0UKLmJvb2wgKCkgd2hlbiAodHJ1ZSkgYW5kICh0cnVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY29udGVudDogdHJ1ZSBhbmQgdHJ1ZSB9IC8vIFRSVUUKLmJvb2wgKCkgd2hlbiAodHJ1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY29udGVudDogdHJ1ZSB9IC8vIFRSVUUKLmJvb2wgKCkgd2hlbiAoZmFsc2UpIGFuZCAoZmFsc2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY29udGVudDogdHJ1ZSB9IC8vIEZBTFNFCi5ib29sICgpIHdoZW4gKGZhbHNlKSwgKHRydWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IGZhbHNlLCB0cnVlIH0gLy8gVFJVRQouYm9vbCAoKSB3aGVuIChmYWxzZSkgYW5kICh0cnVlKSBhbmQgKHRydWUpLCAgKHRydWUpICAgICAgICAgeyBjb250ZW50OiBmYWxzZSBhbmQgdHJ1ZSBhbmQgdHJ1ZSwgdHJ1ZSB9IC8vIFRSVUUKLmJvb2wgKCkgd2hlbiAodHJ1ZSkgIGFuZCAodHJ1ZSkgYW5kIChmYWxzZSksIChmYWxzZSkgICAgICAgIHsgY29udGVudDogdHJ1ZSBhbmQgdHJ1ZSBhbmQgZmFsc2UsIGZhbHNlIH0gLy8gRkFMU0UKLmJvb2wgKCkgd2hlbiAoZmFsc2UpLCAodHJ1ZSkgYW5kICh0cnVlKSAgICAgICAgICAgICAgICAgICAgIHsgY29udGVudDogZmFsc2UsIHRydWUgYW5kIHRydWUgfSAvLyBUUlVFCi5ib29sICgpIHdoZW4gKGZhbHNlKSwgKGZhbHNlKSwgKHRydWUpICAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IGZhbHNlLCBmYWxzZSwgdHJ1ZSB9IC8vIFRSVUUKLmJvb2wgKCkgd2hlbiAoZmFsc2UpLCAoZmFsc2UpIGFuZCAodHJ1ZSksIChmYWxzZSkgICAgICAgICAgIHsgY29udGVudDogZmFsc2UsIGZhbHNlIGFuZCB0cnVlLCBmYWxzZSB9IC8vIEZBTFNFCi5ib29sICgpIHdoZW4gKGZhbHNlKSwgKHRydWUpIGFuZCAodHJ1ZSkgYW5kICh0cnVlKSwgKGZhbHNlKSB7IGNvbnRlbnQ6IGZhbHNlLCB0cnVlIGFuZCB0cnVlIGFuZCB0cnVlLCBmYWxzZSB9IC8vIFRSVUUKLmJvb2wgKCkgd2hlbiBub3QgKGZhbHNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY29udGVudDogbm90IGZhbHNlIH0KLmJvb2wgKCkgd2hlbiBub3QgKHRydWUpIGFuZCBub3QgKGZhbHNlKSAgICAgICAgICAgICAgICAgICAgIHsgY29udGVudDogbm90IHRydWUgYW5kIG5vdCBmYWxzZSB9Ci5ib29sICgpIHdoZW4gbm90ICh0cnVlKSBhbmQgbm90ICh0cnVlKSAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IG5vdCB0cnVlIGFuZCBub3QgdHJ1ZSB9Ci5ib29sICgpIHdoZW4gbm90IChmYWxzZSkgYW5kIChmYWxzZSksIG5vdCAoZmFsc2UpICAgICAgICAgICB7IGNvbnRlbnQ6IG5vdCBmYWxzZSBhbmQgZmFsc2UsIG5vdCBmYWxzZSB9CgouYm9vbDEgeyAuYm9vbCB9CgouZXF1YWxpdHktdW5pdC10ZXN0KEBudW0pIHdoZW4gKEBudW0gPSAxJSkgewogIHRlc3Q6IGZhaWw7Cn0KLmVxdWFsaXR5LXVuaXQtdGVzdChAbnVtKSB3aGVuIChAbnVtID0gMikgewogIHRlc3Q6IHBhc3M7Cn0KLmVxdWFsaXR5LXVuaXRzIHsKICAuZXF1YWxpdHktdW5pdC10ZXN0KDFweCk7CiAgLmVxdWFsaXR5LXVuaXQtdGVzdCgycHgpOwp9CgouY29sb3JndWFyZChAY29sKSB3aGVuIChAY29sID0gcmVkKSAgICAgICAgICAgICAgICAgICAgICAgICB7IGNvbnRlbnQ6IGlzIEBjb2w7IH0KLmNvbG9yZ3VhcmQoQGNvbCkgd2hlbiBub3QgKGJsdWUgPSBAY29sKSAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50OiBpcyBub3QgYmx1ZSBpdHMgQGNvbDsgfQouY29sb3JndWFyZChAY29sKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQouY29sb3JndWFyZHRlc3QgewogICAgLmNvbG9yZ3VhcmQocmVkKTsKICAgIC5jb2xvcmd1YXJkKGJsdWUpOwogICAgLmNvbG9yZ3VhcmQocHVycGxlKTsKfQoKLnN0cmluZ2d1YXJkKEBzdHIpIHdoZW4gKEBzdHIgPSAidGhlbWUxIikJCQkJCXsgY29udGVudDogQHN0ciBpcyAidGhlbWUxIjsgfQouc3RyaW5nZ3VhcmQoQHN0cikgd2hlbiBub3QgKCJ0aGVtZTIiID0gQHN0cikJCQkJeyBjb250ZW50OiBAc3RyIGlzIG5vdCAidGhlbWUyIjsgfQouc3RyaW5nZ3VhcmQoQHN0cikgd2hlbiAoQHN0ciA9ICd0aGVtZTEnKQkJCQkJeyBjb250ZW50OiBAc3RyIGlzICd0aGVtZTEnOyB9Ci5zdHJpbmdndWFyZChAc3RyKSB3aGVuIG5vdCAoJ3RoZW1lMicgPSBAc3RyKQkJCQl7IGNvbnRlbnQ6IEBzdHIgaXMgbm90ICd0aGVtZTInOyB9Ci5zdHJpbmdndWFyZChAc3RyKSB3aGVuICh+InRoZW1lMSIgPSBAc3RyKQkJCQkJeyBjb250ZW50OiBAc3RyIGlzIHRoZW1lMTsgfQouc3RyaW5nZ3VhcmQoQHN0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQouc3RyaW5nZ3VhcmR0ZXN0IHsKICAgIC5zdHJpbmdndWFyZCgidGhlbWUxIik7CiAgICAuc3RyaW5nZ3VhcmQoInRoZW1lMiIpOwogICAgLnN0cmluZ2d1YXJkKCd0aGVtZTEnKTsKICAgIC5zdHJpbmdndWFyZCgndGhlbWUyJyk7CiAgICAuc3RyaW5nZ3VhcmQodGhlbWUxKTsKfQoKLmdlbmVyaWMoQGEsIEBiKSB7LyoqL30KLmdlbmVyaWMoQGEsIEBiKSB3aGVuIChAYSA9IEBiKSB7Y29udGVudDogQGEgaXMgZXF1YWwgdG8gQGJ9Ci5nZW5lcmljKEBhLCBAYikgd2hlbiAoQGIgPSBAYSkge2NvbnRlbnQ6IEBiIGlzIGVxdWFsIHRvIEBhIHRvb30KLmdlbmVyaWMoQGEsIEBiKSB3aGVuIChAYSA8IEBiKSB7Y29udGVudDogQGEgaXMgbGVzcyB0aGFuIEBifQouZ2VuZXJpYyhAYSwgQGIpIHdoZW4gKEBiIDwgQGEpIHtjb250ZW50OiBAYiBpcyBsZXNzIHRoYW4gQGEgdG9vfQouZ2VuZXJpYyhAYSwgQGIpIHdoZW4gKEBhID4gQGIpIHtjb250ZW50OiBAYSBpcyBncmVhdGVyIHRoYW4gQGJ9Ci5nZW5lcmljKEBhLCBAYikgd2hlbiAoQGIgPiBAYSkge2NvbnRlbnQ6IEBiIGlzIGdyZWF0ZXIgdGhhbiBAYSB0b299Ci5nZW5lcmljKEBhLCBAYikgd2hlbiBub3QoQGEgPSBAYikge2NvbnRlbnQ6IEBhIGlzIG5vdCBlcXVhbCB0byBAYn0KLmdlbmVyaWMoQGEsIEBiKSB3aGVuIG5vdChAYiA9IEBhKSB7Y29udGVudDogQGIgaXMgbm90IGVxdWFsIHRvIEBhIHRvb30KCi52YXJpb3VzZS10eXBlcy1jb21wYXJpc29uIHsKICAgIC5nZW5lcmljKHRydWUsIGZhbHNlKTsKICAgIC5nZW5lcmljKDEsIHRydWUpOwogICAgLmdlbmVyaWMoMiwgMnB4KTsKICAgIC5nZW5lcmljKDMsIH4iMyIpOwogICAgLmdlbmVyaWMoNSwgfiI0Iik7CiAgICAuZ2VuZXJpYyhhYmMsIH4iYWJjIik7CiAgICAuZ2VuZXJpYyhhYmMsICJhYmMiKTsKICAgIC5nZW5lcmljKCdhYmMnLCAiYWJkIik7CiAgICAuZ2VuZXJpYyg2LCBlKCI2IikpOwogICAgLmdlbmVyaWMoOSwgOCk7CiAgICAuZ2VuZXJpYyhhLCBiKTsKICAgIC5nZW5lcmljKDEgMiwgMyk7Cn0KCi5saXN0LWNvbXBhcmlzb24gewogICAgLmdlbmVyaWMoYSBiIGMsIGEgYiBjKTsKICAgIC5nZW5lcmljKGEgYiBjLCBhIGIgZCk7CiAgICAuZ2VuZXJpYyhhLCBiLCBjOyBhLCBiLCBjKTsKICAgIC5nZW5lcmljKGEsIGIsIGM7IGEsIGIsIGQpOwogICAgLmdlbmVyaWMoMSAycHggMzAwbXMsIDFlbSAyIC4zcyk7CiAgICAKICAgIEBzcGFjZS1saXN0OiAxIDIgMzsKICAgIEBjb21tYS1saXN0OiAxLCAyLCAzOwogICAgQGNvbXBvdW5kOiBAc3BhY2UtbGlzdCBAY29tbWEtbGlzdDsKICAgIAogICAgLmdlbmVyaWMoQHNwYWNlLWxpc3QsIEBjb21tYS1saXN0KTsKICAgIC5nZW5lcmljKEBjb21tYS1saXN0LCB+IjEsIDIsIDMiKTsKICAgIC5nZW5lcmljKEBjb21wb3VuZCwgQHNwYWNlLWxpc3QgQGNvbW1hLWxpc3QpOwogICAgLmdlbmVyaWMoQGNvbXBvdW5kLCBAY29tbWEtbGlzdCBAc3BhY2UtbGlzdCk7CiAgICAuZ2VuZXJpYyhAY29tcG91bmQgNCwgfiIxIDIgMyAxLCAyLCAzIDQiKTsKfQoKLm1peGluKC4uLikgewogIGNhdGNoOmFsbDsKfQoubWl4aW4oQHZhcikgd2hlbiAoQHZhcj00KSB7CiAgZGVjbGFyZTogNDsKfQoubWl4aW4oQHZhcikgd2hlbiAoQHZhcj00cHgpIHsKICBkZWNsYXJlOiA0cHg7Cn0KI3RyeU51bWJlclB4IHsKICAubWl4aW4oNHB4KTsKfQoKLmxvY2stbWl4aW4oQGEpIHsKIC5pbm5lci1sb2NrZWQtbWl4aW4oQHg6IEBhKSB3aGVuIChAYSA9IDEpIHsKICAgIGE6IEBhOwogICAgeDogQHg7CiAgfQp9Ci5jYWxsLWxvY2stbWl4aW4gewogIC5sb2NrLW1peGluKDEpOwogIC5jYWxsLWlubmVyLWxvY2stbWl4aW4gewogICAgLmlubmVyLWxvY2tlZC1taXhpbigpOwogIH0KfQouYnVnLTEwMGNtLTFtKEBhKSB3aGVuIChAYSA9IDEpIHsKICAuZmFpbGVkIHsKICAgIG9uZS1odW5kcmVkOiBub3QtZXF1YWwtdG8tMTsKICB9Cn0KLmJ1Zy0xMDBjbS0xbSgxMDBjbSk7CgojbnMgewogICAgLm1peGluLWZvci1yb290LXVzYWdlKEBhKSB3aGVuIChAYSA+IDApIHsKICAgICAgICAubWl4aW4tZ2VuZXJhdGVkLWNsYXNzIHsKICAgICAgICAgICAgYTogQGE7CiAgICAgICAgfQogICAgfQp9CgojbnMgPiAubWl4aW4tZm9yLXJvb3QtdXNhZ2UoMSk7CgpAbmFtZXNwYWNlR3VhcmQ6IDE7CiNndWFyZGVkIHdoZW4gKEBuYW1lc3BhY2VHdWFyZD4wKSB7CiAgI2RlZXBlciB7CiAgICAubWl4aW4oKSB7CiAgICAgIGd1YXJkZWQ6IG5hbWVzcGFjZTsKICAgIH0KICB9Cn0KI2d1YXJkZWQoKSB3aGVuIChAbmFtZXNwYWNlR3VhcmQ+MCkgewogICNkZWVwZXIgewogICAgLm1peGluKCkgewogICAgICBzaWxlbnQ6IG5hbWVzcGFjZTsKICAgIH0KICB9Cn0KI2d1YXJkZWQoQHZhcmlhYmxlKSB3aGVuIChAbmFtZXNwYWNlR3VhcmQ+MCkgewogICNkZWVwZXIgewogICAgLm1peGluKCkgewogICAgICBzaG91bGQ6IG5vdCBtYXRjaCBiZWNhdXNlIG5hbWVzcGFjZSBhcmd1bWVudDsKICAgIH0KICB9Cn0KI2d1YXJkZWQoQHZhcmlhYmxlOiBkZWZhdWx0KSB3aGVuIChAbmFtZXNwYWNlR3VhcmQ+MCkgewogICNkZWVwZXIgewogICAgLm1peGluKCkgewogICAgICBndWFyZGVkOiB3aXRoIGRlZmF1bHQ7CiAgICB9CiAgfQp9CiNndWFyZGVkIHdoZW4gKEBuYW1lc3BhY2VHdWFyZDwwKSB7CiAgI2RlZXBlciB7CiAgICAubWl4aW4oKSB7CiAgICAgIHNob3VsZDogbm90IG1hdGNoIGJlY2F1c2UgbmFtZXNwYWNlIGd1YXJkOwogICAgfQogIH0KfQojZ3VhcmRlZC1jYWxsZXIgewogICNndWFyZGVkID4gI2RlZXBlciA+IC5taXhpbigpOwp9CiN0b3AgewogICNkZWVwZXIgd2hlbiAoQG5hbWVzcGFjZUd1YXJkPDApIHsKICAgIC5taXhpbihAYSkgewogICAgICBzaG91bGQ6IG5vdCBtYXRjaCBiZWNhdXNlIG5hbWVzcGFjZSBndWFyZDsKICAgIH0KICB9CiAgI2RlZXBlcigpIHdoZW4gKEBuYW1lc3BhY2VHdWFyZD4wKSB7CiAgICAubWl4aW4oQGEpIHsKICAgICAgc2hvdWxkOiBtYXRjaCBAYTsKICAgIH0KICB9Cn0KI2d1YXJkZWQtZGVlcGVyIHsKICAjdG9wID4gI2RlZXBlciA+IC5taXhpbigxKTsKfQoKLy8gbmFtZXNwYWNlZCAmIGd1YXJkZWQgbWl4aW4gaW4gcm9vdAovLyBvdXRwdXRzIG5vdGhpbmcgYnV0IHNob3VsZCBwYXNzOgoKQGd1YXJkZWQtbWl4aW4tZm9yLXJvb3Q6IHRydWU7CiNucyB7CiAgICAuZ3VhcmRlZC1taXhpbi1mb3Itcm9vdCgpIHdoZW4gKEBndWFyZGVkLW1peGluLWZvci1yb290KSB7fQp9CiNucyA+IC5ndWFyZGVkLW1peGluLWZvci1yb290KCk7Ci8vIHZhcmlvdXMgY29tYmluYXRpb25zIG9mIG5lc3RlZCBvciwgYW5kLCBwYXJlbnRoZXNpcyBhbmQgbmVnYXRpb24KLnBhcmVudGhlc2lzTm90KEB2YWx1ZSkgd2hlbiAoKCgoQHZhbHVlKSkpKSB7CiAgcGFyZW50aGVzaXNOb3Q6IGp1c3QtdmFsdWU7Cn0KLnBhcmVudGhlc2lzTm90KEB2YWx1ZSkgd2hlbiAoKChub3QoQHZhbHVlKSkpKSB7CiAgcGFyZW50aGVzaXNOb3Q6IG5lZ2F0ZWQgb25jZSBpbnNpZGU7Cn0KLnBhcmVudGhlc2lzTm90KEB2YWx1ZSkgd2hlbiBub3QoKCgoQHZhbHVlKSkpKSB7CiAgcGFyZW50aGVzaXNOb3Q6IG5lZ2F0ZWQgb25jZSBvdXRzaWRlOwp9Ci5wYXJlbnRoZXNpc05vdChAdmFsdWUpIHdoZW4gKChub3QoKEB2YWx1ZSkpKSkgewogIHBhcmVudGhlc2lzTm90OiBuZWdhdGVkIG9uY2UgbWlkZGxlOwp9Ci5wYXJlbnRoZXNpc05vdChAdmFsdWUpIHdoZW4gbm90KCgobm90KEB2YWx1ZSkpKSkgewogIHBhcmVudGhlc2lzTm90OiBuZWdhdGVkIHR3aWNlIDE7Cn0KLnBhcmVudGhlc2lzTm90KEB2YWx1ZSkgd2hlbiAobm90KChub3QoQHZhbHVlKSkpKSB7CiAgcGFyZW50aGVzaXNOb3Q6IG5lZ2F0ZWQgdHdpY2UgMjsKfQoucGFyZW50aGVzaXNOb3QoQHZhbHVlKSB3aGVuICgobm90KG5vdChAdmFsdWUpKSkpIHsKICBwYXJlbnRoZXNpc05vdDogbmVnYXRlZCB0d2ljZSAzOwp9Ci5wYXJlbnRoZXNpc05vdCAoLi4uKSB3aGVuIChkZWZhdWx0KCkpIHsKICBwYXJlbnRoZXNpc05vdDogbm9uZSBtYXRjaGVkOwp9CgojcGFyZW50aGVzaXNOb3QtdHJ1ZSB7CiAgLnBhcmVudGhlc2lzTm90KHRydWUpOwp9CiNwYXJlbnRoZXNpc05vdC1mYWxzZSB7CiAgLnBhcmVudGhlc2lzTm90KGZhbHNlKTsKfQoKLm9yZGVyT2ZFdmFsdWF0aW9uKEBhMSwgQGEyLCBAYTMpIHdoZW4gKChAYTEpIGFuZCAoQGEyKSBvciAoQGEzKSkgewogIG5vLXBhcmVudGhlc2lzOiBldmFsdWF0ZWQgdHJ1ZSAxYTsKfQoub3JkZXJPZkV2YWx1YXRpb24oQGExLCBAYTIsIEBhMykgd2hlbiAoKEBhMykgb3IgKEBhMSkgYW5kIChAYTIpKSB7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDFiOwp9Ci5vcmRlck9mRXZhbHVhdGlvbihAYTEsIEBhMiwgQGEzKSB3aGVuICgoQGExKSBhbmQgKChAYTIpIG9yIChAYTMpKSkgewogIG5vLXBhcmVudGhlc2lzOiBldmFsdWF0ZWQgdHJ1ZSAxYzsKfQoub3JkZXJPZkV2YWx1YXRpb24oQGExLCBAYTIsIEBhMykgd2hlbiAoQGEzKSwgKEBhMSkgYW5kIChAYTIpIHsKICBuby1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWUgMWQ7Cn0KLm9yZGVyT2ZFdmFsdWF0aW9uKEBhMSwgQGEyLCBAYTMpIHdoZW4gKCgoQGEzKSBvciAoQGExKSkgYW5kIChAYTIpKSB7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDFlOwp9Ci5vcmRlck9mRXZhbHVhdGlvbihAYTEsIEBhMiwgQGEzKSB3aGVuICgoQGExKSBhbmQgKEBhMikgb3Igbm90IChAYTMpKSB7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDJhOwp9Ci5vcmRlck9mRXZhbHVhdGlvbihAYTEsIEBhMiwgQGEzKSB3aGVuIChub3QgKEBhMykgb3IgKEBhMSkgYW5kIChAYTIpKSB7CiAgbm8tcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlIDJiOwp9Ci5vcmRlck9mRXZhbHVhdGlvbihAYTEsIEBhMiwgQGEzKSB3aGVuIG5vdCAoQGEzKSwgKEBhMSkgYW5kIChAYTIpIHsKICBuby1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWUgMmM7Cn0KLm9yZGVyT2ZFdmFsdWF0aW9uKEBhMSwgQGEyLCBAYTMpIHdoZW4gKG5vdCAoQGExKSBhbmQgKEBhMikgb3IgKEBhMykpIHsKICBuby1wYXJlbnRoZXNpczogZXZhbHVhdGVkIHRydWUgMzsKfQoub3JkZXJPZkV2YWx1YXRpb24oQGExLCBAYTIsIEBhMykgd2hlbiAoKCgoQGExKSBhbmQgKEBhMikgb3IgKEBhMykpKSkgewogIG5vLXBhcmVudGhlc2lzOiBldmFsdWF0ZWQgdHJ1ZSA0Owp9Ci5vcmRlck9mRXZhbHVhdGlvbihAYTEsIEBhMiwgQGEzKSB3aGVuICgoKEBhMSkgYW5kIChAYTIpKSBvciAoQGEzKSkgewogIHdpdGgtcGFyZW50aGVzaXM6IGV2YWx1YXRlZCB0cnVlOwp9Ci5vcmRlck9mRXZhbHVhdGlvbiguLi4pIHdoZW4gKGRlZmF1bHQoKSkgewogIG9yZGVyT2ZFdmFsdWF0aW9uOiBldmFsdWF0ZWQgZmFsc2U7Cn0KI29yZGVyT2ZFdmFsdWF0aW9uLWZhbHNlLWZhbHNlLXRydWUgewogIC5vcmRlck9mRXZhbHVhdGlvbihmYWxzZSwgZmFsc2UsIHRydWUpOwp9CiNvcmRlck9mRXZhbHVhdGlvbi1mYWxzZS1mYWxzZS1mYWxzZSB7CiAgLm9yZGVyT2ZFdmFsdWF0aW9uKGZhbHNlLCBmYWxzZSwgZmFsc2UpOwp9CiNvcmRlck9mRXZhbHVhdGlvbi10cnVlLXRydWUtZmFsc2UgewogIC5vcmRlck9mRXZhbHVhdGlvbih0cnVlLCB0cnVlLCBmYWxzZSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins-important.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN1Ym1peGluKEBhKSB7CiAgYm9yZGVyLXdpZHRoOiBAYTsKfQoubWl4aW4gKDkpIHsKICBib3JkZXI6IDkgIWltcG9ydGFudDsKfQoubWl4aW4gKEBhOiAwKSB7CiAgYm9yZGVyOiBAYTsKICBib3hlcjogQGE7CiAgLmlubmVyIHsKICAgIHRlc3Q6IEBhOwogIH0KICAvLyBjb21tZW50CiAgLnN1Ym1peGluKEBhKTsKfQoKLmNsYXNzIHsKICAubWl4aW4oMSk7CiAgLm1peGluKDIpICFpbXBvcnRhbnQ7CiAgLm1peGluKDMpOwogIC5taXhpbig0KSAhaW1wb3J0YW50OwogIC5taXhpbig1KTsKICAubWl4aW4gIWltcG9ydGFudDsKICAubWl4aW4oOSk7Cn0KLnNpemUoQGFhYTogYXV0bykgewogIC5zZXQtd2lkdGgoQGFhYSkgewogICAgd2lkdGg6IEBhYWE7CiAgfQogIC5zZXQtd2lkdGgoQGFhYSk7Cn0KLndoZW4tY2FsbGluZy1uZXN0ZWQtaXNzdWUtMjM5NCB7CiAgLnNpemUoKSAhaW1wb3J0YW50Owp9Ci53aGVuLWNhbGxpbmctbmVzdGVkLXdpdGgtcGFyYW0taXNzdWUtMjM5NCB7CiAgLnNpemUoMTBweCkgIWltcG9ydGFudDsKfQoudGVzdC1ydWxlTWl4aW4tMjQyMSAoKSB7CiAgICAudG9wQ2hlY2stMjQyMSAoKSB7CiAgICAgICAgLm5lc3RlZENoZWNrLTI0MjEoKSB7CiAgICAgICAgICAgIG1hcmdpbjogNXB4OwogICAgICAgIH0KICAgICAgICAubmVzdGVkQ2hlY2stMjQyMSgpOwogICAgfQogICAgLnRvcENoZWNrLTI0MjEoKTsKfQouY2xhc3MxLTI0MjEgewogICAgLnRlc3QtcnVsZU1peGluLTI0MjEoKSAhaW1wb3J0YW50Owp9Ci5jbGFzczItMjQyMSB7CiAgICAudGVzdC1ydWxlTWl4aW4tMjQyMSgpOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins-interpolated.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBhMDogMTIzOwpAYTE6IGZvbzsKQGEyOiB+Ii5mb28iOwpAYTQ6IH4iI2ZvbyI7CgouQHthMH0gewogICAgYTogMDsKfQoKLkB7YTF9IHsKICAgIGE6IDE7Cn0KCkB7YTJ9IHsKICAgIGE6IDI7Cn0KCiNAe2ExfSB7CiAgICBhOiAzOwp9CgpAe2E0fSB7CiAgICBhOiA0Owp9CgptaS10ZXN0LWEgewogICAgLjEyMzsKICAgIC5mb287CiAgICAjZm9vOwp9CgouYiAuYmIgewogICAgJi5Ae2ExfS14eHggLnl5eS1Ae2ExfUB7YTR9IHsKICAgICAgICAmIEB7YTJ9LmJiYiB7CiAgICAgICAgICAgIGI6IDE7CiAgICAgICAgfQogICAgfQp9CgptaS10ZXN0LWIgewogICAgLmIuYmIuZm9vLXh4eC55eXktZm9vI2Zvby5mb28uYmJiOwp9CgpAYzE6IEBhMTsKQGMyOiBiYXI7CkBjMzogYmF6OwoKI0B7YzF9LWZvbyB7CiAgICA+IC5Ae2MyfSB7CiAgICAgICAgLkB7YzN9IHsKICAgICAgICAgICAgYzogYzsKICAgICAgICB9CiAgICB9Cn0KCm1pLXRlc3QtYyB7CiAgICAmLTEgeyNmb28tZm9vO30KICAgICYtMiB7I2Zvby1mb28gPiAuYmFyO30KICAgICYtMyB7I2Zvby1mb28gPiAuYmFyLmJhejt9Cn0KCi5QZXJzb24oQG5hbWUsIEBnZW5kZXJfKSB7CiAgICAuQHtuYW1lfSB7CiAgICAgICAgQGdlbmRlcjogQGdlbmRlcl87CiAgICAgICAgLnNheUdlbmRlcigpIHsKICAgICAgICAgICAgZ2VuZGVyOiBAZ2VuZGVyOwogICAgICAgIH0KICAgIH0KfQoKbWktdGVzdC1kIHsKICAgIC5QZXJzb24ocGVyc29uLCAiTWFsZSIpOwogICAgLnBlcnNvbi5zYXlHZW5kZXIoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins-named-args.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIChAYTogMXB4LCBAYjogNTAlKSB7CiAgd2lkdGg6IChAYSAqIDUpOwogIGhlaWdodDogKEBiIC0gMSUpOwogIGFyZ3M6IEBhcmd1bWVudHM7Cn0KLm1peGluIChAYTogMXB4LCBAYjogNTAlKSB3aGVuIChAYiA+IDc1JSl7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoubmFtZWQtYXJnIHsKICBjb2xvcjogYmx1ZTsKICAubWl4aW4oQGI6IDEwMCUpOwp9CgouY2xhc3MgewogIEB2YXI6IDIwJTsKICAubWl4aW4oQGI6IEB2YXIpOwp9CgouYWxsLWFyZ3Mtd3JvbmctYXJncyB7CiAgLm1peGluKEBiOiAxMCUsIEBhOiAycHgpOwp9CgoubWl4aW4yIChAYTogMXB4LCBAYjogNTAlLCBAYzogNTApIHsKICB3aWR0aDogKEBhICogNSk7CiAgaGVpZ2h0OiAoQGIgLSAxJSk7CiAgY29sb3I6ICgjMDAwMDAwICsgQGMpOwp9CgoubmFtZWQtYXJnczIgewogIC5taXhpbjIoM3B4LCBAYzogMTAwKTsKfQoKLm5hbWVkLWFyZ3MzIHsKICAubWl4aW4yKEBiOiAzMCUsIEBjOiAjMTIzNDU2KTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins-nested.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peC1pbm5lciAoQHZhcikgewogIGJvcmRlci13aWR0aDogQHZhcjsKfQoKLm1peCAoQGE6IDEwKSB7CiAgLmlubmVyIHsKICAgIGhlaWdodDogKEBhICogMTApOwoKICAgIC5pbm5lc3QgewogICAgICB3aWR0aDogQGE7CiAgICAgIC5taXgtaW5uZXIoKEBhICogMikpOwogICAgfQogIH0KfQoKLmNsYXNzIHsKICAubWl4KDMwKTsKfQoKLmNsYXNzMiB7CiAgLm1peCg2MCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins-pattern.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluICguLi4pIHsKICB2YXJpYWRpYzogdHJ1ZTsKfQoubWl4aW4gKEBhLi4uKSB7CiAgbmFtZWQtdmFyaWFkaWM6IHRydWU7Cn0KLm1peGluICgpIHsKICAgIHplcm86IDA7Cn0KLm1peGluIChAYTogMXB4KSB7CiAgICBvbmU6IDE7Cn0KLm1peGluIChAYSkgewogICAgb25lLXJlcTogMTsKfQoubWl4aW4gKEBhOiAxcHgsIEBiOiAycHgpIHsKICAgIHR3bzogMjsKfQoKLm1peGluIChAYSwgQGIsIEBjKSB7CiAgICB0aHJlZS1yZXE6IDM7Cn0KCi5taXhpbiAoQGE6IDFweCwgQGI6IDJweCwgQGM6IDNweCkgewogICAgdGhyZWU6IDM7Cn0KCi56ZXJvIHsKICAgIC5taXhpbigpOwp9Cgoub25lIHsKICAgIC5taXhpbigxKTsKfQoKLnR3byB7CiAgICAubWl4aW4oMSwgMik7Cn0KCi50aHJlZSB7CiAgICAubWl4aW4oMSwgMiwgMyk7Cn0KCi8vCgoubWl4b3V0ICgnbGVmdCcpIHsKICAgIGxlZnQ6IDE7Cn0KCi5taXhvdXQgKCdyaWdodCcpIHsKICAgIHJpZ2h0OiAxOwp9CgoubGVmdCB7CiAgICAubWl4b3V0KCdsZWZ0Jyk7Cn0KLnJpZ2h0IHsKICAgIC5taXhvdXQoJ3JpZ2h0Jyk7Cn0KCi8vCgouYm9yZGVyIChAc2lkZSwgQHdpZHRoKSB7CiAgICBjb2xvcjogYmxhY2s7CiAgICAuYm9yZGVyLXNpZGUoQHNpZGUsIEB3aWR0aCk7Cn0KLmJvcmRlci1zaWRlIChsZWZ0LCBAdykgewogICAgYm9yZGVyLWxlZnQ6IEB3Owp9Ci5ib3JkZXItc2lkZSAocmlnaHQsIEB3KSB7CiAgICBib3JkZXItcmlnaHQ6IEB3Owp9CgouYm9yZGVyLXJpZ2h0IHsKICAgIC5ib3JkZXIocmlnaHQsIDRweCk7Cn0KLmJvcmRlci1sZWZ0IHsKICAgIC5ib3JkZXIobGVmdCwgNHB4KTsKfQoKLy8KCgouYm9yZGVyLXJhZGl1cyAoQHIpIHsKICAgIGJvdGg6IChAciAqIDEwKTsKfQouYm9yZGVyLXJhZGl1cyAoQHIsIGxlZnQpIHsKICAgIGxlZnQ6IEByOwp9Ci5ib3JkZXItcmFkaXVzIChAciwgcmlnaHQpIHsKICAgIHJpZ2h0OiBAcjsKfQoKLm9ubHktcmlnaHQgewogICAgLmJvcmRlci1yYWRpdXMoMzMsIHJpZ2h0KTsKfQoub25seS1sZWZ0IHsKICAgIC5ib3JkZXItcmFkaXVzKDMzLCBsZWZ0KTsKfQoubGVmdC1yaWdodCB7CiAgICAuYm9yZGVyLXJhZGl1cygzMyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/mixins.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluIHsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IH0KLm1peG91dCB7IGJvcmRlci1jb2xvcjogb3JhbmdlOyB9Ci5ib3JkZXJzIHsgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7IH0KLm1peGluID4gKiB7IGJvcmRlcjogZG8gbm90IG1hdGNoIG1lOyB9CgojbmFtZXNwYWNlIHsKICAuYm9yZGVycyB7CiAgICBib3JkZXItc3R5bGU6IGRvdHRlZDsKICB9CiAgLmJpb2hhemFyZCB7CiAgICBjb250ZW50OiAiZGVhdGgiOwogICAgLm1hbiB7CiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgIH0KICB9Cn0KI3RoZW1lIHsKICA+IC5taXhpbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OwogIH0KfQojY29udGFpbmVyIHsKICBjb2xvcjogYmxhY2s7CiAgLm1peGluOwogIC5taXhvdXQ7CiAgI3RoZW1lID4gLm1peGluOwp9CgojaGVhZGVyIHsKICAubWlsayB7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIC5taXhpbjsKICAgICN0aGVtZSA+IC5taXhpbjsKICB9CiAgI2Nvb2tpZSB7CiAgICAuY2hpcHMgewogICAgICAjbmFtZXNwYWNlIC5ib3JkZXJzOwogICAgICAuY2Fsb3JpZXMgewogICAgICAgICNjb250YWluZXI7CiAgICAgIH0KICAgIH0KICAgIC5ib3JkZXJzOwogIH0KfQouc2VjdXJlLXpvbmUgeyAjbmFtZXNwYWNlIC5iaW9oYXphcmQgLm1hbjsgfQouZGlyZWN0IHsKICAjbmFtZXNwYWNlID4gLmJvcmRlcnM7Cn0KCi5ibywgLmJhciB7CiAgICB3aWR0aDogMTAwJTsKfQouYm8gewogICAgYm9yZGVyOiAxcHg7Cn0KLmFyLmJvLmNhIHsKICAgIGNvbG9yOiBibGFjazsKfQouam8ua2kgewogICAgYmFja2dyb3VuZDogbm9uZTsKfQouYW1wIHsKICAgICYuc3VwcG9ydCB7CiAgICAgICAgY29sb3I6IG9yYW5nZTsKICAgICAgICAuaGlnaGVyIHsKICAgICAgICAgICAgdG9wOiAwcHg7CiAgICAgICAgfQogICAgICAgICYuZGVlcGVyIHsKICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIH0KICAgIH0KfQouZXh0ZW5kZWQgewogICAgLmJvOwogICAgLmpvLmtpOwogICAgLmFtcC5zdXBwb3J0OwogICAgLmFtcC5zdXBwb3J0LmhpZ2hlcjsKICAgIC5hbXAuc3VwcG9ydC5kZWVwZXI7Cn0KLmRvIC5yZSAubWkgLmZhIHsKICAgIC5zb2wgLmxhIHsKICAgICAgICAuc2kgewogICAgICAgICAgICBjb2xvcjogY3lhbjsKICAgICAgICB9CiAgICB9Cn0KLm11dGxpLXNlbGVjdG9yLXBhcmVudHMgewogICAgLmRvLnJlLm1pLmZhLnNvbC5sYS5zaTsKfQouZm9vIC5iYXIgewogIC5iYXI7Cn0KLmhhc19wYXJlbnRzKCkgewogICYgLnVuZGVyUGFyZW50cyB7CiAgICBjb2xvcjogcmVkOwogIH0KfQouaGFzX3BhcmVudHMoKTsKLnBhcmVudCB7CiAgLmhhc19wYXJlbnRzKCk7Cn0KLm1hcmdpbl9iZXR3ZWVuKEBhYm92ZSwgQGJlbG93KSB7CiAgICAgKiArICYgeyBtYXJnaW4tdG9wOiBAYWJvdmU7IH0KICAgICBsZWdlbmQgKyAmIHsgbWFyZ2luLXRvcDogMDsgfQogICAgICYgKyAqIHsgbWFyZ2luLXRvcDogQGJlbG93OyB9Cn0KaDEgeyAubWFyZ2luX2JldHdlZW4oMjVweCwgMTBweCk7IH0KaDIgeyAubWFyZ2luX2JldHdlZW4oMjBweCwgOHB4KTsgfQpoMyB7IC5tYXJnaW5fYmV0d2VlbigxNXB4LCA1cHgpOyB9CgoubWl4aW5fZGVmKEB1cmwsIEBwb3NpdGlvbil7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBAdXJsOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogQHBvc2l0aW9uOwp9Ci5lcnJvcnsKICBAczogIi8iOwogIC5taXhpbl9kZWYoICJAe3N9YS5wbmciLCBjZW50ZXIgY2VudGVyKTsKfQoucmVjdXJzaW9uKCkgewogIGNvbG9yOiBibGFjazsKfQoudGVzdC1ydWxlLXJlYyB7CiAgLnJlY3Vyc2lvbiB7CiAgICAucmVjdXJzaW9uKCk7CiAgfQp9Ci5wYWRkaW5nRmxvYXQoQHBhZGRpbmcpIHsgcGFkZGluZy1sZWZ0OiBAcGFkZGluZzsgfQoKLmJ1dHRvbiB7CiAgICAucGFkZGluZ0Zsb2F0KCgoMTBweCArIDEyKSAqIDIpKTsKCiAgICAmLmxhcmdlIHsgLnBhZGRpbmdGbG9hdCgoKDEwZW0gKiAyKSAqIDIpKTsgfQp9Ci5jbGVhcmZpeCgpIHsKICAvLyAuLi4KfQouY2xlYXJmaXggewogIC5jbGVhcmZpeCgpOwp9Ci5jbGVhcmZpeCB7CiAgLmNsZWFyZml4KCk7Cn0KLmZvbyB7CiAgLmNsZWFyZml4KCk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/nested-gradient-with-svg-gradient/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/nested-gradient-with-svg-gradient/mixin-consumer.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAic3ZnLWdyYWRpZW50LW1peGluLmxlc3MiOwoKLmdyYXktZ3JhZGllbnQgewogIC5ncmFkaWVudC1taXhpbigjOTk5KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/nested-gradient-with-svg-gradient/svg-gradient-mixin.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmdyYWRpZW50LW1peGluKEBjb2xvcikgewogIGJhY2tncm91bmQ6IHN2Zy1ncmFkaWVudCh0byBib3R0b20sCiAgICBmYWRlKEBjb2xvciwgMCUpIDAlLAogICAgZmFkZShAY29sb3IsIDUlKSA2MCUsCiAgICBmYWRlKEBjb2xvciwgMTAlKSA3MCUsCiAgICBmYWRlKEBjb2xvciwgMTUlKSA3MyUsCiAgICBmYWRlKEBjb2xvciwgMjAlKSA3NSUsCiAgICBmYWRlKEBjb2xvciwgMjUlKSA4MCUsCiAgICBmYWRlKEBjb2xvciwgMzAlKSA4NSUsCiAgICBmYWRlKEBjb2xvciwgMzUlKSA4OCUsCiAgICBmYWRlKEBjb2xvciwgNDAlKSA5MCUsCiAgICBmYWRlKEBjb2xvciwgNDUlKSA5NSUsCiAgICBmYWRlKEBjb2xvciwgNTAlKSAxMDAlCiAgKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/no-output.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1peGluKCkgewp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/operations.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I29wZXJhdGlvbnMgewogIGNvbG9yOiAoIzExMDAwMCArICMwMDAwMTEgKyAjMDAxMTAwKTsgLy8gIzExMTExMQogIGNvbG9yLTI6ICh5ZWxsb3cgLSAjMDcwNzA3KTsKICBoZWlnaHQ6ICgxMHB4IC8gMnB4ICsgNnB4IC0gMXB4ICogMik7IC8vIDlweAogIHdpZHRoOiAoMiAqIDQgLSA1ZW0pOyAvLyAzZW0KICAuc3BhY2luZyB7CiAgICBoZWlnaHQ6ICgxMHB4IC8gMnB4KzZweC0xcHgqMik7CiAgICB3aWR0aDogKDIgICogNC01ZW0pOwogIH0KICBzdWJ0cmFjdGlvbjogKDIwIC0gMTAgLSA1IC0gNSk7IC8vIDAKICBkaXZpc2lvbjogKDIwIC8gNSAvIDQpOyAvLyAxCn0KCkB4OiA0OwpAeTogMTJlbTsKCi53aXRoLXZhcmlhYmxlcyB7CiAgaGVpZ2h0OiAoQHggKyBAeSk7IC8vIDE2ZW0KICB3aWR0aDogKDEyICsgQHkpOyAvLyAyNGVtCiAgc2l6ZTogKDVjbSAtIEB4KTsgLy8gMWNtCn0KCi53aXRoLWZ1bmN0aW9ucyB7CiAgY29sb3I6IChyZ2IoMjAwLCAyMDAsIDIwMCkgLyAyKTsKICBjb2xvcjogKDIgKiBoc2woMCwgNTAlLCA1MCUpKTsKICBjb2xvcjogKHJnYigxMCwgMTAsIDEwKSArIGhzbCgwLCA1MCUsIDUwJSkpOwp9CgpAejogLTI7CgoubmVnYXRpdmUgewogIGhlaWdodDogKDJweCArIEB6KTsgLy8gMHB4CiAgd2lkdGg6ICgycHggLSBAeik7IC8vIDRweAp9Cgouc2hvcnRoYW5kcyB7CiAgcGFkZGluZzogLTFweCAycHggMCAtNHB4OyAvLwp9CgoucmVtLWRpbWVuc2lvbnMgewogIGZvbnQtc2l6ZTogKDIwcmVtIC8gNSArIDEuNXJlbSk7IC8vIDUuNXJlbQp9CgouY29sb3JzIHsKICBjb2xvcjogIzEyMzsgLy8gIzExMjIzMwogIGJvcmRlci1jb2xvcjogKCMyMzQgKyAjMTExMTExKTsgLy8gIzMzNDQ1NQogIGJhY2tncm91bmQtY29sb3I6ICgjMjIyMjIyIC0gI2ZmZik7IC8vICMwMDAwMDAKICAub3RoZXIgewogICAgY29sb3I6ICgyICogIzExMSk7IC8vICMyMjIyMjIKICAgIGJvcmRlci1jb2xvcjogKCMzMzMzMzMgLyAzICsgIzExMSk7IC8vICMyMjIyMjIKICB9Cn0KCi5uZWdhdGlvbnMgewogICAgQHZhcjogNHB4OwogICAgdmFyaWFibGU6ICgtQHZhcik7IC8vIDQKICAgIHZhcmlhYmxlMTogKC1AdmFyICsgQHZhcik7IC8vIDAKICAgIHZhcmlhYmxlMjogKEB2YXIgKyAtQHZhcik7IC8vIDAKICAgIHZhcmlhYmxlMzogKEB2YXIgLSAtQHZhcik7IC8vIDgKICAgIHZhcmlhYmxlNDogKC1AdmFyIC0gLUB2YXIpOyAvLyAwCiAgICBwYXJlbjogKC0oQHZhcikpOyAvLyAtNHB4CiAgICBwYXJlbjI6ICgtKDIgKyAyKSAqIC1AdmFyKTsgLy8gMTYKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/parse-interpolation.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGlucHV0czogaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1lbWFpbF0sIGlucHV0W3R5cGU9cGFzc3dvcmRdLCB0ZXh0YXJlYTsKCkB7aW5wdXRzfSB7CiAgJjpmb2N1cyB7CiAgICBmb286IGJhcjsKICB9Cn0gCgpAY2xhc3NlczogLmEsIC5iLCAuYzsKCkB7Y2xhc3Nlc30geyAgCiAgKyAueiB7CiAgICBjb2xvcjogYmx1ZTsgCiAgfQp9CgouYmFyIHsKICAuZEB7Y2xhc3Nlc30mOmhvdmVyLCBiYXogewogICAgY29sb3I6IGJsdWU7CiAgfQp9CgpAYzogficuYSwgLmInOwpAZDogficuYywgLmQnOwpAZTogficgKyAuZSc7CgpAe2N9QHtkfSB7CiAgQHtlfSB7CiAgICBmb286IGJhcjsKICB9Cn0KCkB0ZXh0Q2xhc3NlczogficmW2NsYXNzPSJ0ZXh0Il0sICYudGV4dCc7CgppbnB1dCB7CiAgQHt0ZXh0Q2xhc3Nlc30gewogICAgYmFja2dyb3VuZDogcmVkOwogIH0KfQoKQG15LXNlbGVjdG9yOiB+Jy5zZWxlY3Rvci0xLCAuc2VsZWN0b3ItMic7Ci5tYXN0ZXItcGFnZS0xIHsKICAgIEB7bXktc2VsZWN0b3J9IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICB9Cn0KCkBsaXN0OiBhcHBsZSwgc2F0c3VtYSwgYmFuYW5hLCBwZWFyOwpAe2xpc3R9IHsKICAuZnJ1aXQtJiB7CiAgICBjb250ZW50OiAiSnVzdCBhIHRlc3QuIjsKICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/permissive-parse.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZ1bmN0aW9uLW5hbWU6IHJlZ2V4cDsKQGQtdmFsdWU6IDE1OwpALW1vei1kb2N1bWVudCBAZnVuY3Rpb24tbmFtZSgiKFxkezAsQHtkLXZhbHVlfX0pIikgewoJYSB7CgkJY29sb3I6IHJlZDsKCX0KfQoKLmN1c3RvbS1wcm9wZXJ0eSB7CiAgLS10aGlzOiAoKSA9PiB7CiAgICBiYXNpY2FsbHkgYW55dGhpbmcgdW50aWwgZmluYWwgc2VtaS1jb2xvbjsKICAgIGV2ZW4gb3RoZXIgc3R1ZmY7IC8vIGlcJ20gc2VyaW91czsKICB9OwogIEB0aGlzOiAoKSA9PiB7CiAgICBiYXNpY2FsbHkgYW55dGhpbmcgdW50aWwgZmluYWwgc2VtaS1jb2xvbjsKICAgIGV2ZW4gb3RoZXIgc3R1ZmY7IC8vIGlcJ20gc2VyaW91czsKICB9OwogIC0tdGhhdDogQHRoaXM7CiAgQHJlZDogbGlnaHRlbihyZWQsIDEwJSk7CiAgLS1jdXN0b20tY29sb3I6IEByZWQgbGlnaHRlbihyZWQsIDEwJSk7CiAgY3VzdG9tLWNvbG9yOiAkLS1jdXN0b20tY29sb3I7Cn0KCkBpb3N0YXQ6IDE7Ci52YXIgewogIC0tZm9ydHJhbjogcmVhZCAoKiwgKiwgaW9zdGF0PUBpb3N0YXQpIHJhZGl1cywgaGVpZ2h0Owp9CgpAYm9vbS1ib29tOiBiYW07CkAtbW96LXdoYXRldmVyIChmb286ICIoIiBAYm9vbS1ib29tICIpIikgewogIGJhcjogZm9vOwp9CgpAc2VsZWN0b3JMaXN0OiAjc2VsZWN0b3IsIC5iYXIsIGZvb1thdHRyPSJibGFoIl07CkB7c2VsZWN0b3JMaXN0fSB7CiAgYmFyOiB2YWx1ZTsKfQoKQHNpemU6IDY0MHB4OwpAdGFibGV0OiAobWluLXdpZHRoOiBAc2l6ZSk7CkBtZWRpYSBAdGFibGV0IHsKICAuaG9seS1jcmFwIHsKICAgIHRoaXM6IHdvcmtzOwogIH0KfQovLyBAdG9kbyAtIGZpeCBjb21tZW50IGFic29ycHRpb24gYWZ0ZXIgcHJvcGVydHkKLnRlc3QtcnVsZS1jb21tZW50IHsKICAtLXZhbHVlOiBhLyogeyA7IH0gKi87CiAgLS1jb21tZW50LXdpdGhpbjogKCAvKiBva2F5PzsgY29tbWVudDsgKi8gKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/plugin-module.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gVGVzdCBOUE0gaW1wb3J0CkBwbHVnaW4gImNsZWFuLWNzcyI7CgphIHsKICBiYWNrZ3JvdW5kOiBub25lOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/plugin-preeval.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHBsdWdpbiAiLi4vLi4vcGx1Z2luL3BsdWdpbi1wcmVldmFsIjsKCi50d28oQHJ1bGVzOiB7fSkgewogICAgOnJvb3QudHdvICYgewogICAgICAgIEBydWxlcygpOwogICAgfQp9Cgoub25lIHsKICAgIC50d28oewogICAgICAgIC0tZm9vOiBAcmVwbGFjZSAhaW1wb3J0YW50OwogICAgfSk7Cn0KCkBzdG9wOiBlbmQ7]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/plugin.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gaW1wb3J0aW5nIHBsdWdpbiBnbG9iYWxseQpAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLWdsb2JhbCI7CgovLyB0cmFuc2l0aXZlbHkgaW5jbHVkZSBwbHVnaW5zIGZyb20gaW1wb3J0aW5nIGFub3RoZXIgc2hlZXQKQGltcG9ydCAiLi4vLi4vcGx1Z2luL3BsdWdpbi10cmFuc2l0aXZlIjsKCgovLyBgdGVzdC1nbG9iYWxgIGZ1bmN0aW9uIHNob3VsZCBiZSByZWFjaGFibGUKLy8gYHRlc3QtbG9jYWxgICBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHJlYWNoYWJsZQovLyBgdGVzdC1zaGFkb3dgIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gZ2xvYmFsIHZlcnNpb24KLmNsYXNzIHsKICB0cmFucyAgOiB0ZXN0LXRyYW5zaXRpdmUoKTsKICBnbG9iYWwgOiB0ZXN0LWdsb2JhbCgpOwogIGxvY2FsICA6IHRlc3QtbG9jYWwoKTsKICBzaGFkb3cgOiB0ZXN0LXNoYWRvdygpOwoKICAvLyBgdGVzdC1nbG9iYWxgIGZ1bmN0aW9uIHNob3VsZCBwcm9wYWdhdGUgYW5kIGJlIHJlYWNoYWJsZQogIC8vIGB0ZXN0LWxvY2FsYCAgZnVuY3Rpb24gc2hvdWxkIGJlIHJlYWNoYWJsZQogIC8vIGB0ZXN0LXNoYWRvd2AgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBsb2NhbCB2ZXJzaW9uLCBzaGFkb3dpbmcgZ2xvYmFsIHZlcnNpb24KICAubG9jYWwgewogICAgQHBsdWdpbiAob3B0aW9uKSAiLi4vLi4vcGx1Z2luL3BsdWdpbi1sb2NhbCI7CiAgICBnbG9iYWwgOiB0ZXN0LWdsb2JhbCgpOwogICAgbG9jYWwgIDogdGVzdC1sb2NhbCgpOwogICAgc2hhZG93IDogdGVzdC1zaGFkb3coKTsKICB9Cn0KCi8vIGNhbGxpbmcgYSBtaXhpbiBvciBkZXRhY2hlZCBydWxlc2V0IHNob3VsZCBub3QgYnViYmxlIGxvY2FsIHBsdWdpbnMKLy8gaW1wb3J0ZWQgaW5zaWRlIGVpdGhlciBpbnRvIHRoZSBwYXJlbnQgc2NvcGUuCi5taXhpbigpIHsKICBAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLWxvY2FsIjsKICBtaXhpbi1sb2NhbCAgOiB0ZXN0LWxvY2FsKCk7CiAgbWl4aW4tZ2xvYmFsIDogdGVzdC1nbG9iYWwoKTsKICBtaXhpbi1zaGFkb3cgOiB0ZXN0LXNoYWRvdygpOwp9CkBydWxlc2V0IDogewogIEBwbHVnaW4gIi4uLy4uL3BsdWdpbi9wbHVnaW4tbG9jYWwiOwogIHJ1bGVzZXQtbG9jYWwgIDogdGVzdC1sb2NhbCgpOwogIHJ1bGVzZXQtZ2xvYmFsIDogdGVzdC1nbG9iYWwoKTsKICBydWxlc2V0LXNoYWRvdyA6IHRlc3Qtc2hhZG93KCk7Cn07CiNucyB7CiAgQHBsdWdpbiAodGVzdD10ZXN0KSAiLi4vLi4vcGx1Z2luL3BsdWdpbi1sb2NhbCI7CiAgLm1peGluKCkgewogICAgbnMtbWl4aW4tZ2xvYmFsIDogdGVzdC1nbG9iYWwoKTsKICAgIG5zLW1peGluLWxvY2FsICA6IHRlc3QtbG9jYWwoKTsKICAgIG5zLW1peGluLXNoYWRvdyA6IHRlc3Qtc2hhZG93KCk7CiAgfQp9Ci5jbGFzcyB7CiAgI25zID4gLm1peGluKCk7CiAgLm1peGluKCk7CiAgQHJ1bGVzZXQoKTsKICBjbGFzcy1sb2NhbCA6IHRlc3QtbG9jYWwoKTsKfQoKCi8vIGB0ZXN0LWdsb2JhbGAgZnVuY3Rpb24gc2hvdWxkIHByb3BhZ2F0ZSBpbnRvIGRpcmVjdGl2ZSBzY29wZQpAbWVkaWEgc2NyZWVuIHsKICAudGVzdC1ydWxlIHsKICAgIHJlc3VsdCA6IHRlc3QtZ2xvYmFsKCk7CiAgfQp9CkBmb250LWZhY2UgewogIHJlc3VsdCA6IHRlc3QtZ2xvYmFsKCk7Cn0KCi8vIGB0ZXN0LWdsb2JhbGAgZnVuY3Rpb24gc2hvdWxkIHByb3BhZ2F0ZSBpbnRvIG5lc3RlZCBkaXJlY3RpdmUgc2NvcGVzCkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTAwcHgpIHsKICBAbWVkaWEgKG1heC13aWR0aDo0MDBweCkgewoJCS50ZXN0LXJ1bGUgewoJCQlyZXN1bHQgOiB0ZXN0LWdsb2JhbCgpOwoJCX0KCX0KfQoKLnRlc3QtcnVsZSB7CiAgQG1lZGlhIHNjcmVlbiB7CiAgICBAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLWxvY2FsIjsKICAgIHJlc3VsdCA6IHRlc3QtbG9jYWwoKTsKICB9Cn0KCkBwbHVnaW4gIi4uLy4uL3BsdWdpbi9wbHVnaW4tdHJlZS1ub2RlcyI7CkBydWxlc2V0MjogdGVzdC1kZXRhY2hlZC1ydWxlc2V0KCk7Ci5yb290IHsKICBAcnVsZXNldDIoKTsKfQoudGVzdC1ydWxlLWVtcHR5IHsKICB2YWwxOiBmb287CiAgdGVzdC1jb2xsYXBzZSgpOwogIHZhbDI6IGZvbzsKfQoudGVzdC1ydWxlLXNpbXBsZSB7CiAgQHBsdWdpbiAiLi4vLi4vcGx1Z2luL3BsdWdpbi1zaW1wbGUiOwogIHZhbHVlOiBwaS1hbm9uKCk7CiAgdmFsdWU6IChwaSgpICogMik7Cn0KLnRlc3QtcnVsZS1jb25mbGljdHMgewogIEBwbHVnaW4gIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2NvcGUxIjsKICB2YWx1ZTogZm9vKCk7Cn0KLnRlc3QtcnVsZS1jb25mbGljdHMgewogIEBwbHVnaW4gIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2NvcGUyIjsKICB2YWx1ZTogZm9vKCk7Cn0KLnRlc3QtcnVsZS1jb25mbGljdHMgewogIEBwbHVnaW4gIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2NvcGUxIjsKICB2YWx1ZTogZm9vKCk7Cn0KLnRlc3QtcnVsZS1jb2xsZWN0aW9uIHsKICBAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLWNvbGxlY3Rpb24iOwogIEB2YXI6IDMyOwogIHN0b3JlKEB2YXIpOwogIHN0b3JlKDUpOwogIHN0b3JlKCJiaXJkIik7CiAgbGlzdDogbGlzdCgpOwp9Cgp0ZXN0LWF0cnVsZSgiQGNoYXJzZXQiOyAnInV0Zi04IicpOwp0ZXN0LWF0cnVsZSgiQGFyYml0cmFyeSI7ICJ2YWx1ZSBhZnRlciAoKSIpOwoKLy8gbm8gbWluVmVyc2lvbiBzcGVjaWZpZWQKQHBsdWdpbiAob3B0aW9uMSkgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMiOwpAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLXNldC1vcHRpb25zIjsKQHBsdWdpbiAob3B0aW9uMikgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMiOwpAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLXNldC1vcHRpb25zIjsKQHBsdWdpbiAob3B0aW9uMykgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMiOwoKLy8gc3BlY2lmaWVzIG1pblZlcnNpb246IFsyLDAsMF0KQHBsdWdpbiAob3B0aW9uMSkgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMtdjIiOwpAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLXNldC1vcHRpb25zLXYyIjsKQHBsdWdpbiAob3B0aW9uMikgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMtdjIiOwpAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLXNldC1vcHRpb25zLXYyIjsKQHBsdWdpbiAob3B0aW9uMykgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMtdjIiOwoKLy8gc3BlY2lmaWVzIG1pblZlcnNpb246IFszLDAsMF0KQHBsdWdpbiAob3B0aW9uMSkgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMtdjMiOwpAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLXNldC1vcHRpb25zLXYzIjsKQHBsdWdpbiAob3B0aW9uMikgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMtdjMiOwpAcGx1Z2luICIuLi8uLi9wbHVnaW4vcGx1Z2luLXNldC1vcHRpb25zLXYzIjsKQHBsdWdpbiAob3B0aW9uMykgIi4uLy4uL3BsdWdpbi9wbHVnaW4tc2V0LW9wdGlvbnMtdjMiOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/property-accessors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci5ibG9ja18xIHsKICBjb2xvcjogcmVkOwogIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsKICBAd2lkdGg6IDUwcHg7CiAgd2lkdGg6IEB3aWR0aDsKICBoZWlnaHQ6ICgkd2lkdGggLyAyKTsKICBAY29sb3I6IHJlZDsKICBib3JkZXI6IDFweCBzb2xpZCBsaWdodGVuKCRjb2xvciwgMTAlKTsKICAmOmhvdmVyIHsKICAgIGNvbG9yOiAkY29sb3I7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7CiAgICAubWl4aW4xKCk7CiAgfQogIC5vbmUgewogICAgYmFja2dyb3VuZDogJGNvbG9yOwogIH0KICBjb250ZW50OiAiJHtjb2xvcn0iOwogIHByb3A6ICRjb2xvcjsKCn0KCi5ibG9ja18yIHsKICBjb2xvcjogcmVkOyAKICAudHdvIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsgCiAgfQogIGNvbG9yOiBibHVlOyAgCn0KCi5ibG9ja18zIHsKICBjb2xvcjogcmVkOyAKICAudGhyZWUgewogICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yOwogIH0KICAubWl4aW4yKCk7CiAgY29sb3I6IGJsdWU7Cn0KLmJsb2NrXzQgewogIGNvbG9yOiByZWQ7IAogIC5mb3VyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjsKICB9CiAgY29sb3I6IGJsdWU7CiAgLm1peGluMigpOwp9Ci8vIHByb3BlcnR5IG1lcmdpbmcKYSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yKzogcmVkOwogICAgYmFja2dyb3VuZC1jb2xvcis6IGZvbzsKCiAgICAmYiB7CiAgICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtY29sb3I7CiAgICB9Cn0KCi52YWx1ZV9hc19wcm9wZXJ0eSB7CiAgcHJvcDE6IGNvbG9yOwogICR7cHJvcDF9OiAjRkYwMDAwOyAgLy8gbm90IHN1cmUgd2h5IHlvdSdkIHdhbnQgdG8gZG8gdGhpcywgYnV0IG9rCn0KCi5taXhpbjEoKSB7CiAgY29sb3I6IGdyZWVuOwp9Ci5taXhpbjIoKSB7IAogIGNvbG9yOiB5ZWxsb3c7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/property-name-interp.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnBpLXRlc3QgewogICAgQHByZWZpeDogdWZvLTsKICAgIEBhOiAgICBib3JkZXI7CiAgICBAYmI6ICAgICAgdG9wOwogICAgQGNfYzogICAgbGVmdDsKICAgIEBkLWQ0OiByYWRpdXM7CiAgICBALTogICAgICAgICAtOwoKICAgIEB2YXI6IH4nQG5vdC12YXJpYWJsZSc7CgogICAgQHthfTogMDsKICAgIEB7dmFyfTogQHZhcjsKICAgIEB7cHJlZml4fXdpZHRoOiA1MCU7CiAgICAqLXotQHthfSA6MXB4IGRhc2hlZCBibHVlOwogICAgLXd3dy1Ae2F9LUB7YmJ9OiAycHg7CiAgICBAe2QtZDR9LWlzLW5vdC1hLUB7YX06dHJ1ZTsKICAgIEB7YX0tQHtiYn0tQHtjX2N9LUB7ZC1kNH0gICAgICAgOiAyZW07CiAgICBAe2F9QHstfUB7YmJ9QHstfXJlZEB7LX1Ae2QtZDR9LTogM3B0OwoKICAgIC5taXhpbihtaXhlcik7CiAgICAubWVyZ2UoaXNoLCBiYXNlKTsKfQoKQGdsb2JhbDogZ2xvYmFsOwoKLm1peGluKEBhcmcpIHsKICAgIEBsb2NhbDogbG9jYWw7CiAgICBAe2dsb2JhbH0tQHtsb2NhbH0tQHthcmd9LXByb3BlcnR5OiBzdHJvbmc7Cn0KCi5tZXJnZShAcCwgQHYpIHsKICAgICYtbWVyZ2UgewogICAgICAgIEBwcmVmaXg6IHByZTsKICAgICAgICBAc3VmZml4OiBpc2g7CiAgICAgICAgQHtwcmVmaXh9LXByb3BlcnR5LWlzaCsgICAgICAgOmhpZ2g7CiAgICAgICAgcHJlLXByb3BlcnR5LUB7c3VmZml4fSAgICArOiBtaWRkbGU7CiAgICAgICAgQHtwcmVmaXh9LXByb3BlcnR5LUB7c3VmZml4fSs6ICBsb3c7CiAgICAgICAgQHtwcmVmaXh9LXByb3BlcnR5LUB7cH0gICArICA6ICAgQHY7CgogICAgICAgIEBzdWJ0ZXJmdWdlOiB+JysnOwogICAgICAgIHByZS1wcm9wZXJ0eS1pc2hAe3N1YnRlcmZ1Z2V9OiBuaWNlIHRyeSBkdWRlOwogICAgfQp9CgpwaS1pbmRpcmVjdC12YXJzIHsKICAgIEB7cH06IEBwOwogICAgQHA6IEBAYTsKICAgIEBhOiBiOwogICAgQGI6IGF1dG87Cn0KCnBpLWNvbXBsZXgtdmFsdWVzIHsKICAgIEB7cH1Ae3B9OiBub25lOwogICAgQHA6ICgxICsgMnB4KSBmYWRlb3V0KCNmZjAsIDUwJSksIHBpKCkgLyogZm9vICovOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/rulesets.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ZpcnN0ID4gLm9uZSB7CiAgPiAjc2Vjb25kIC50d28gPiAjZGV1eCB7CiAgICB3aWR0aDogNTAlOwogICAgI3RoaXJkIHsKICAgICAgJjpmb2N1cyB7CiAgICAgICAgY29sb3I6IGJsYWNrOwogICAgICAgICNmaWZ0aCB7CiAgICAgICAgICA+ICNzaXh0aCB7CiAgICAgICAgICAgIC5zZXZlbnRoICNlaWdodGggewogICAgICAgICAgICAgICsgI25pbnRoIHsKICAgICAgICAgICAgICAgIGNvbG9yOiBwdXJwbGU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGhlaWdodDogMTAwJTsKICAgIH0KICAgICNmb3VydGgsICNmaXZlLCAjc2l4IHsKICAgICAgY29sb3I6ICMxMTAwMDA7CiAgICAgIC5zZXZlbiwgLmVpZ2h0ID4gI25pbmUgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogICAgICB9CiAgICAgICN0ZW4gewogICAgICAgIGNvbG9yOiByZWQ7CiAgICAgIH0KICAgIH0KICB9CiAgZm9udC1zaXplOiAyZW07Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/scope.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QHg6IHJlZDsKQHg6IGJsdWU7CkB6OiB0cmFuc3BhcmVudDsKQG1peDogbm9uZTsKCi5taXhpbiB7CiAgQG1peDogIzk4OTsKfQpAbWl4OiBibHVlOwoudGlueS1zY29wZSB7CiAgY29sb3I6IEBtaXg7IC8vICM5ODkKICAubWl4aW47Cn0KCi5zY29wZTEgewogIEB5OiBvcmFuZ2U7CiAgQHo6IGJsYWNrOwogIGNvbG9yOiBAeDsgLy8gYmx1ZQogIGJvcmRlci1jb2xvcjogQHo7IC8vIGJsYWNrCiAgLmhpZGRlbiB7CiAgICBAeDogIzEzMTMxMzsKICB9CiAgLnNjb3BlMiB7CiAgICBAeTogcmVkOwogICAgY29sb3I6IEB4OyAvLyBibHVlCiAgICAuc2NvcGUzIHsKICAgICAgQGxvY2FsOiB3aGl0ZTsKICAgICAgY29sb3I6IEB5OyAvLyByZWQKICAgICAgYm9yZGVyLWNvbG9yOiBAejsgLy8gYmxhY2sKICAgICAgYmFja2dyb3VuZC1jb2xvcjogQGxvY2FsOyAvLyB3aGl0ZQogICAgfQogIH0KfQoKI25hbWVzcGFjZSB7CiAgLnNjb3BlZF9taXhpbigpIHsKICAgIEBsb2NhbC13aWxsLWJlLW1hZGUtZ2xvYmFsOiBncmVlbjsKICAgIC5zY29wZSB7CiAgICAgIHNjb3BlZC12YWw6IEBsb2NhbC13aWxsLWJlLW1hZGUtZ2xvYmFsOwogICAgfQogIH0KfQoKI25hbWVzcGFjZSA+IC5zY29wZWRfbWl4aW4oKTsKCi5zZXRIZWlnaHQoQGgpIHsgQGhlaWdodDogMTAyNHB4OyB9Ci51c2VIZWlnaHRJbk1peGluQ2FsbChAaCkgeyAudXNlSGVpZ2h0SW5NaXhpbkNhbGwgeyBtaXhpbi1oZWlnaHQ6IEBoOyB9IH0KQG1haW5IZWlnaHQ6IDUwJTsKLnNldEhlaWdodChAbWFpbkhlaWdodCk7Ci5oZWlnaHRJc1NldCB7IGhlaWdodDogQGhlaWdodDsgfQoudXNlSGVpZ2h0SW5NaXhpbkNhbGwoQGhlaWdodCk7CgouaW1wb3J0UnVsZXNldCgpIHsKICAuaW1wb3J0ZWQgewogICAgZXhpc3RzOiB0cnVlOwogIH0KfQouaW1wb3J0UnVsZXNldCgpOwoudGVzdEltcG9ydGVkIHsKICAuaW1wb3J0ZWQ7Cn0KCkBwYXJhbWV0ZXJEZWZhdWx0OiAndG9wIGxldmVsJzsKQGFub3RoZXJWYXJpYWJsZTogJ3RvcCBsZXZlbCc7Ci8vbWl4aW4gdXNlcyB0b3AtbGV2ZWwgdmFyaWFibGVzCi5taXhpbk5vUGFyYW0oQHBhcmFtZXRlcjogQHBhcmFtZXRlckRlZmF1bHQpIHdoZW4gKEBwYXJhbWV0ZXIgPSAndG9wIGxldmVsJykgewogIGRlZmF1bHQ6IEBwYXJhbWV0ZXI7CiAgc2NvcGU6IEBhbm90aGVyVmFyaWFibGU7CiAgc3ViLXNjb3BlLW9ubHk6IEBzdWJTY29wZU9ubHk7Cn0KCiNhbGxBcmVVc2VkSGVyZSB7CiAgLy9yZWRlZmluZSB0b3AtbGV2ZWwgdmFyaWFibGVzIGluIGRpZmZlcmVudCBzY29wZQogIEBwYXJhbWV0ZXJEZWZhdWx0OiAnaW5zaWRlJzsKICBAYW5vdGhlclZhcmlhYmxlOiAnaW5zaWRlJzsKICBAc3ViU2NvcGVPbmx5OiAnaW5zaWRlJzsKICAvL3VzZSB0aGUgbWl4aW4KICAubWl4aW5Ob1BhcmFtKCk7Cn0KI3BhcmVudFNlbGVjdG9yU2NvcGUgewogIEBjb2w6IHdoaXRlOwogICYgewogICAgQGNvbDogYmxhY2s7CiAgfQogIHByb3A6IEBjb2w7CiAgJiB7CiAgICBAY29sOiBibGFjazsKICB9Cn0KLnRlc3QtZW1wdHktbWl4aW4oKSB7Cn0KI3BhcmVudFNlbGVjdG9yU2NvcGVNaXhpbnMgewogICYgewogICAgLnRlc3QtZW1wdHktbWl4aW4oKSB7CiAgICAgIHNob3VsZDogbmV2ZXIgc2VlZSAxOwogICAgfQogIH0KICAudGVzdC1lbXB0eS1taXhpbigpOwogICYgewogICAgLnRlc3QtZW1wdHktbWl4aW4oKSB7CiAgICAgIHNob3VsZDogbmV2ZXIgc2VlZSAyOwogICAgfQogIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/selectors.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aDEsIGgyLCBoMyB7CiAgYSwgcCB7CiAgICAmOmhvdmVyIHsKICAgICAgY29sb3I6IHJlZDsKICAgIH0KICB9Cn0KCiNhbGwgeyBjb2xvcjogYmx1ZTsgfQojdGhlIHsgY29sb3I6IGJsdWU7IH0KI3NhbWUgeyBjb2xvcjogYmx1ZTsgfQoKdWwsIGxpLCBkaXYsIHEsIGJsb2NrcXVvdGUsIHRleHRhcmVhIHsKICBtYXJnaW46IDA7Cn0KCnRkIHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKfQoKdGQsIGlucHV0IHsKICBsaW5lLWhlaWdodDogMWVtOwp9CgphIHsKICBjb2xvcjogcmVkOwoKICAmOmhvdmVyIHsgY29sb3I6IGJsdWU7IH0KCiAgZGl2ICYgeyBjb2xvcjogZ3JlZW47IH0KCiAgcCAmIHNwYW4geyBjb2xvcjogeWVsbG93OyB9Cn0KCi5mb28gewogIC5iYXIsIC5iYXogewogICAgJiAucXV4IHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAucXV4ICYgewogICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICB9CiAgICAucXV4JiB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIH0KICAgIC5xdXggJiAuYml6IHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICB9Cn0KCi5iIHsKICYuYyB7CiAgLmEmIHsKICAgY29sb3I6IHJlZDsKICB9CiB9Cn0KCi5iIHsKIC5jICYgewogICYuYSB7CiAgIGNvbG9yOiByZWQ7CiAgfQogfQp9CgoucCB7CiAgLmZvbyAmLmJhciB7CiAgICBjb2xvcjogcmVkOwogIH0KfQoKLnAgewogIC5mb28mLmJhciB7CiAgICBjb2xvcjogcmVkOwogIH0KfQoKLmZvbyB7CiAgLmZvbyArICYgewogICAgYmFja2dyb3VuZDogYW1iZXI7CiAgfQogICYgKyAmIHsKICAgIGJhY2tncm91bmQ6IGFtYmVyOwogIH0KfQoKLmZvbywgLmJhciB7CiAgJiArICYgewogICAgYmFja2dyb3VuZDogYW1iZXI7CiAgfQp9CgouZm9vLCAuYmFyIHsKICBhLCBiIHsKICAgICYgPiAmIHsKICAgICAgYmFja2dyb3VuZDogYW1iZXI7CiAgICB9CiAgfQp9Cgoub3RoZXIgOjpmbm9yZCB7IGNvbG9yOiByZWQgfQoub3RoZXI6OmZub3JkIHsgY29sb3I6IHJlZCB9Ci5vdGhlciB7CiAgOjpibm9yZCB7Y29sb3I6IHJlZCB9CiAgJjo6Ym5vcmQge2NvbG9yOiByZWQgfQp9Ci8vIHNlbGVjdG9yIGludGVycG9sYXRpb24KQHRoZW1lOiBibG9vZDsKQHNlbGVjdG9yOiB+Ii5Ae3RoZW1lfSI7CkB7c2VsZWN0b3J9IHsKICBjb2xvcjpyZWQ7Cn0KQHtzZWxlY3Rvcn1yZWQgewogIGNvbG9yOiBncmVlbjsKfQoucmVkIHsKICAjQHt0aGVtZX0uQHt0aGVtZX0mLmJsYWNrOkB7dGhlbWV9IHsKICAgIGNvbG9yOmJsYWNrOwogIH0KfQpAbnVtOiAzOwo6bnRoLWNoaWxkKEB7bnVtfSkgewogIHNlbGVjdG9yOiBpbnRlcnBvbGF0ZWQ7Cn0KLnRlc3QtcnVsZSB7CiAgJjpudGgtY2hpbGQoQHtudW19KSB7CiAgICBzZWxlY3RvcjogaW50ZXJwb2xhdGVkOwogIH0KICAmOm50aC1jaGlsZChvZGQpOm5vdCg6bnRoLWNoaWxkKDMpKSB7CiAgICBjb2xvcjogI2ZmMDAwMDsKICB9Cn0KQHByb3A6IHA7Cltwcm9wXSwKW3Byb3A9MTAlXSwKW3Byb3B8PSJ2YWx1ZUB7bnVtfSJdLApbcHJvcCo9InZhbEB7bnVtfSJdLApbfHByb3B+PSJ2YWxAe251bX0iXSwKWyp8cHJvcCQ9InZhbEB7bnVtfSJdLApbbnN8cHJvcF49InZhbEB7bnVtfSJdLApbQHtwcm9wfV49InZhbEB7bnVtfSJdLApbQHtwcm9wfT1Ae251bX1dLApbQHtwcm9wfV0gewogIGF0dHJpYnV0ZXM6IHllczsKfQoKLyoKTGFyZ2UgY29tbWVudCBtZWFucyBjaHVuayB3aWxsIGJlIGVtaXR0ZWQgYWZ0ZXIgfSB3aGljaCBtZWFucyBjaHVuayB3aWxsIGJlZ2luIHdpdGggd2hpdGVzcGFjZS4uLgpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawpibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuayBibGFuawoqLwpAe3NlbGVjdG9yfSB7CiAgY29sb3I6IHJlZDsKfQoub25seS1uZXN0ZWQgewogIC5sZXZlbDIgewogICAgLmZvbzpub3QoLnRzdCY6aG92ZXIpIHsKICAgICAgdGVzdDogb25seS1uZXN0ZWQ7CiAgICB9CiAgfQp9Ci5uZXN0ZW5kLWFuZC1ub24tbmVzdGVkIHsKICAuZm9vJjpub3QoLnRzdCY6aG92ZXIpIHsKICAgIHRlc3Q6IG5lc3RlbmQtYW5kLW5vbi1uZXN0ZWQ7CiAgfQp9Ci5zZWxlY3Rvcjpub3QoJjpob3ZlcikgewogIHRlc3Q6IGdsb2JhbCBzY29wZTsKfQovLyBodHRwczovL2dpdGh1Yi5jb20vbGVzcy9sZXNzLmpzL2lzc3Vlcy8yMjA2Ci5leHRlbmQtdGhpcyB7CiAgY29udGVudDogJ1wyNjYxJzsKfQouZmlyc3QtbGV2ZWwgewogIC5zZWNvbmQtbGV2ZWwgewogICAgLmFjdGl2ZSY6ZXh0ZW5kKC5leHRlbmQtdGhpcykgeyB9CiAgICAmLmFjdGl2ZTI6ZXh0ZW5kKC5leHRlbmQtdGhpcykgeyB9CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/strings.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3N0cmluZ3MgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaHR0cDovL3Nvbi1vZi1hLWJhbmFuYS5jb20iKTsKICBxdW90ZXM6ICJ+IiAifiI7CiAgY29udGVudDogIiMqJTomXiwpIS4ofip9KSI7CiAgZW1wdHk6ICIiOwogIGJyYWNrZXRzOiAieyIgIn0iOwogIGVzY2FwZXM6ICJcImhlbGxvXCIgXFx3b3JsZCI7CiAgZXNjYXBlczI6ICJcImxsbyI7Cn0KI2NvbW1lbnRzIHsKICBjb250ZW50OiAiLyogaGVsbG8gKi8gLy8gbm90LXNvLXNlY3JldCI7Cn0KI3NpbmdsZS1xdW90ZSB7CiAgcXVvdGVzOiAiJyIgIiciOwogIGNvbnRlbnQ6ICciIiMhJiIiJzsKICBlbXB0eTogJyc7CiAgc2VtaS1jb2xvbjogJzsnOwp9CiNlc2NhcGVkIHsKICBmaWx0ZXI6IH4iRFguVHJhbnNmb3JtLk1TLkJTLmZpbHRlcihvcGFjaXR5PTUwKSI7Cn0KI29uZS1saW5lIHsgaW1hZ2U6IHVybChodHRwOi8vdG9va3MuY29tKSB9CiNjcmF6eSB7IGltYWdlOiB1cmwoaHR0cDovLyksICJ9IiwgdXJsKCJodHRwOi8vfSIpIH0KI2ludGVycG9sYXRpb24gewogIEB2YXI6ICcvZGV2JzsKICB1cmw6ICJodHRwOi8vbGVzc2Nzcy5vcmdAe3Zhcn0vaW1hZ2UuanBnIjsKCiAgQHZhcjI6IDI1NjsKICB1cmwyOiAiaHR0cDovL2xlc3Njc3Mub3JnL2ltYWdlLUB7dmFyMn0uanBnIjsKCiAgQHZhcjM6ICM0NTY7CiAgdXJsMzogImh0dHA6Ly9sZXNzY3NzLm9yZ0B7dmFyM30iOwoKICBAdmFyNDogaGVsbG87CiAgdXJsNDogImh0dHA6Ly9sZXNzY3NzLm9yZy9Ae3ZhcjR9IjsKCiAgQHZhcjU6IDU0LjRweDsKICB1cmw1OiAiaHR0cDovL2xlc3Njc3Mub3JnL0B7dmFyNX0iOwp9CgovLyBtdWx0aXBsZSBjYWxscyB3aXRoIHN0cmluZyBpbnRlcnBvbGF0aW9uCgoubWl4LW11bCAoQGE6IGdyZWVuKSB7CiAgICBjb2xvcjogfiJAe2F9IjsKfQoubWl4LW11bC1jbGFzcyB7CiAgICAubWl4LW11bChibHVlKTsKICAgIC5taXgtbXVsKHJlZCk7CiAgICAubWl4LW11bChibGFjayk7CiAgICAubWl4LW11bChvcmFuZ2UpOwp9CgpAdGVzdDogQXJpYWwsIFZlcmRhbmEsIFNhbi1TZXJpZjsKLndhdGVybWFyayB7CiAgQGZhbWlseTogfiJVbml2ZXJzLCBAe3Rlc3R9IjsKICBmYW1pbHk6IEBmYW1pbHk7Cn0KI2l0ZXJhdGVkLWludGVycG9sYXRpb24gewogIEBib3gtc21hbGw6IDEwcHg7CiAgQGJveC1sYXJnZTogMTAwcHg7CgogIC5taXhpbiB7IC8vIGJvdGggcnVsZXNldCBhbmQgbWl4aW4KICAgIHdpZHRoOiB+IkB7Ym94LUB7c3VmZml4fX0iOwogICAgd2VpcmQ6IH4iQHtib3h9LUB7c3VmZml4fX0iOwogICAgd2lkdGgtc3RyOiAiQHtib3gtQHtzdWZmaXh9fSI7CiAgICB3ZWlyZC1zdHI6ICJAe2JveH0tQHtzdWZmaXh9fSI7CiAgICBAYm94OiB+IkB7Ym94IjsKICAgIEBzdWZmaXg6IGxhcmdlOwogIH0KICAuaW50ZXJwb2xhdGlvbi1taXhpbiB7CiAgICAubWl4aW4oKTsgLy9jYWxsIHRoZSBhYm92ZSBhcyBtaXhpbgogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/urls.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAibmVzdGVkLWdyYWRpZW50LXdpdGgtc3ZnLWdyYWRpZW50L21peGluLWNvbnN1bWVyLmxlc3MiOwoKQGZvbnQtZmFjZSB7CiAgc3JjOiB1cmwoIi9mb250cy9nYXJhbW9uZC1wcm8udHRmIik7CiAgc3JjOiBsb2NhbChGdXR1cmEtTWVkaXVtKSwKICAgICAgIHVybChmb250cy5zdmcjTXlHZW9tZXRyaWNNb2Rlcm4pIGZvcm1hdCgic3ZnIik7CiAgbm90LWEtY29tbWVudDogdXJsKC8veik7Cn0KI3Nob3J0aGFuZHMgewogIGJhY2tncm91bmQ6IHVybCgiaHR0cDovL3d3dy5sZXNzY3NzLm9yZy9zcGVjLmh0bWwiKSBuby1yZXBlYXQgMCA0cHg7CiAgYmFja2dyb3VuZDogdXJsKCJpbWcuanBnIikgY2VudGVyIC8gMTAwcHg7CiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoaW1hZ2UucG5nKSBjZW50ZXIgLyAxcHggMTAwcHggcmVwZWF0LXggc2Nyb2xsIGNvbnRlbnQtYm94IHBhZGRpbmctYm94Owp9CiNtaXNjIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL2ltYWdlLmpwZyk7Cn0KI2RhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7Y2hhcnNldD11dGYtODtiYXNlNjQsCiAgICBraVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFBUU1BQUFBbFBXMGlBQUFBQmxCTVZFVUFBQUQvCiAgICBrLy8rbDJaL2RBQUFBTTBsRVFWUjRuR1A0LzUvaC8xK0cvNThaRHJBejNEL01jSDh5dzgzTkREZU5HZTRVCiAgICBrZzlDOXp3ejNnVkxNREEvQTZQOS9BRkdHRnlqT1hadFFBQUFBQUVsRlRrU3VRbUNDKTsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS94LXBuZyxmOWRpZlNTRklJR0ZJRkpEMWY5ODJGU0RLQUE5PT0pOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCk7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1cIlJva2tpdHRcIjpcKDQwMFwpLDcwMCIpOwp9Cgojc3ZnLWRhdGEtdXJpIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwgPHN2ZyB2ZXJzaW9uPSIxLjEiPjxnPjwvZz48L3N2Zz4nKTsKfQoKLmNvbW1hLWRlbGltaXRlZCB7CiAgYmFja2dyb3VuZDogdXJsKGJnLmpwZykgbm8tcmVwZWF0LCB1cmwoYmcucG5nKSByZXBlYXQteCB0b3AgbGVmdCwgdXJsKGJnKTsKfQoudmFsdWVzIHsKICAgIEBhOiAnVHJlYnVjaGV0JzsKICAgIHVybDogdXJsKEBhKTsKfQoKQGltcG9ydCAiaW1wb3J0L2ltcG9ydC1hbmQtcmVsYXRpdmUtcGF0aHMtdGVzdCI7CgojcmVsYXRpdmUtdXJsLWltcG9ydCB7CiAgICAudW5xdW90ZWQtcmVsYXRpdmUtcGF0aC1iZzsKICAgIC5xdW90ZWQtcmVsYXRpdmUtcGF0aC1ib3JkZXItaW1hZ2U7Cn0KCiNkYXRhLXVyaSB7CiAgdXJpOiBkYXRhLXVyaSgnaW1hZ2UvanBlZztiYXNlNjQnLCAnLi4vZGF0YS9pbWFnZS5qcGcnKTsKICBAdmFyOiByZXBsYWNlKCcuLi9kYXRhL3JlcGxhY2UuanBnJywgInJlcGxhY2UiLCAiaW1hZ2UiKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBkYXRhLXVyaShAdmFyKSwgZGF0YS11cmkocmVwbGFjZSgnLi4vZGF0YS9pbWFnZS5maWxleHQnLCAiZmlsZXh0IiwgImpwZyIpKTsKCiAgdXJpLWZyYWdtZW50OiBkYXRhLXVyaSgnaW1hZ2UvanBlZztiYXNlNjQnLCAnLi4vZGF0YS9pbWFnZS5qcGcjZnJhZ21lbnQnKTsKfQoKI2RhdGEtdXJpLWd1ZXNzIHsKICB1cmk6IGRhdGEtdXJpKCcuLi9kYXRhL2ltYWdlLmpwZycpOwp9CgojZGF0YS11cmktYXNjaWkgewogIHVyaS0xOiBkYXRhLXVyaSgndGV4dC9odG1sJywgJy4uL2RhdGEvcGFnZS5odG1sJyk7CiAgdXJpLTI6IGRhdGEtdXJpKCcuLi9kYXRhL3BhZ2UuaHRtbCcpOwp9CgojZmlsZS1mdW5jdGlvbnMgewogIHN2Zy1ub3QtYmFzZS02NDogZGF0YS11cmkoJy4uL2RhdGEvaW1hZ2Uuc3ZnJyk7CiAgc2l6ZTogaW1hZ2Utc2l6ZSgnLi4vZGF0YS9kYXRhLXVyaS1mYWlsLnBuZycpOwogIHdpZHRoOiBpbWFnZS13aWR0aCgnLi4vZGF0YS9kYXRhLXVyaS1mYWlsLnBuZycpOwogIGhlaWdodDogaW1hZ2UtaGVpZ2h0KCcuLi9kYXRhL2RhdGEtdXJpLWZhaWwucG5nJyk7Cn0KLmFkZF9hbl9pbXBvcnQoQGZpbGVfdG9faW1wb3J0KSB7CkBpbXBvcnQgIkB7ZmlsZV90b19pbXBvcnR9IjsKfQoKLmFkZF9hbl9pbXBvcnQoImZpbGUuY3NzIik7Cgojc3ZnLWZ1bmN0aW9ucyB7CiAgYmFja2dyb3VuZC1pbWFnZTogc3ZnLWdyYWRpZW50KHRvIGJvdHRvbSwgYmxhY2ssIHdoaXRlKTsKICBiYWNrZ3JvdW5kLWltYWdlOiBzdmctZ3JhZGllbnQodG8gYm90dG9tLCBibGFjaywgb3JhbmdlIDMlLCB3aGl0ZSk7CiAgQGdyZWVuXzU6IGdyZWVuIDUlOwogIEBvcmFuZ2VfcGVyY2VudGFnZTogMyU7CiAgQG9yYW5nZV9jb2xvcjogb3JhbmdlOwogIGJhY2tncm91bmQtaW1hZ2U6IHN2Zy1ncmFkaWVudCh0byBib3R0b20sIChtaXgoYmxhY2ssIHdoaXRlKSArICM0NDQpIDElLCBAb3JhbmdlX2NvbG9yIEBvcmFuZ2VfcGVyY2VudGFnZSwgKChAZ3JlZW5fNSkpLCB3aGl0ZSA5NSUpOwp9Ci8vaXQgc2hvdWxkIHdvcmsgYWxzbyBpbnNpZGUgQGZvbnQtZmFjZSAjMjAzNQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ015V2ViRm9udCc7CiAgc3JjOiB1cmwod2ViZm9udC5lb3QpOwogIHNyYys6IHVybCgnd2ViZm9udC5lb3Q/I2llZml4Jyk7CiAgc3JjK186IGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTsKICBzcmMrOiB1cmwoJ3dlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpOwogIHNyYys6IGZvcm1hdCgndHJ1ZXR5cGUnKTsKICBzcmMrXzogdXJsKCd3ZWJmb250LnR0ZicpOwogIHNyYys6IHVybCgnd2ViZm9udC5zdmcjc3ZnRm9udE5hbWUnKSBmb3JtYXQoJ3N2ZycpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/variables-in-at-rules.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkBFaWdodDogODsKQGNoYXJzZXQgIlVURi1Ae0VpZ2h0fSI7CgpAbnM6IGxlc3M7CkBuYW1lc3BhY2UgQG5zICJodHRwOi8vbGVzc2Nzcy5vcmciOwoKQG5hbWU6IGVubGFyZ2VyOwpAa2V5ZnJhbWVzIEBuYW1lIHsKICAgIGZyb20ge2ZvbnQtc2l6ZTogMTJweDt9CiAgICB0byAgIHtmb250LXNpemU6IDE1cHg7fQp9CgoubShyZWR1Y2VyKTsKLm0oQG5hbWUpIHsKICAgIEAtd2Via2l0LWtleWZyYW1lcyBAbmFtZSB7CiAgICAgICAgZnJvbSB7Zm9udC1zaXplOiAxM3B4O30KICAgICAgICB0byAgIHtmb250LXNpemU6IDEwcHg7fQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/variables.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGE6IDI7CkB4OiAoQGEgKiBAYSk7CkB5OiAoQHggKyAxKTsKQHo6IChAeCAqIDIgKyBAeSk7CkB2YXI6IC0xOwoKLnZhcmlhYmxlcyB7CiAgd2lkdGg6IChAeiArIDFjbSk7IC8vIDE0Y20KfQoKLnZhcmlhYmxlLWRhc2ggewogICAgQGp1bWJvdHJvbi1wYWRkaW5nOiAzMHB4OwoKICAgIC5xIHsKICAgICAgICBwYWRkaW5nOiBAanVtYm90cm9uLXBhZGRpbmcgKEBqdW1ib3Ryb24tcGFkZGluZy8yKTsKICAgIH0KfQoKQGI6IEBhICogMTA7CkBjOiAjODg4OwoKQGZvbnRzOiAiVHJlYnVjaGV0IE1TIiwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKQGY6IEBmb250czsKCkBxdW90ZXM6ICJ+IiAifiI7CkBxOiBAcXVvdGVzOwpAb25lUGl4ZWw6IDFweDsKCi52YXJpYWJsZXMgewogIGhlaWdodDogKEBiICsgQHggKyAwcHgpOyAvLyAyNHB4CiAgY29sb3I6IEBjOwogIGZvbnQtZmFtaWx5OiBAZjsKICBxdW90ZXM6IEBxOwp9CgoucmVkZWYgewogICAgQHZhcjogMDsKICAgIC5pbml0aW9uIHsKICAgICAgICBAdmFyOiA0OwogICAgICAgIEB2YXI6IDI7CiAgICAgICAgdGhyZWU6IEB2YXI7CiAgICAgICAgQHZhcjogMzsKICAgIH0KICAgIHplcm86IEB2YXI7Cn0KCkBpbXBvcnRhbnQtdmFyOiBAYyAhaW1wb3J0YW50OwpAaW1wb3J0YW50LXZhci10d286IEBhICFpbXBvcnRhbnQ7Ci52YWx1ZXMgewogICAgbWludXMtb25lOiBAdmFyOwogICAgQGE6ICdUcmVidWNoZXQnOwogICAgQG11bHRpOiAnQScsIEIsIEM7CiAgICBmb250LWZhbWlseTogQGEsIEBhLCBAYTsKICAgIGNvbG9yOiBAYyAhaW1wb3J0YW50OwogICAgc2FtZS1jb2xvcjogQGltcG9ydGFudC12YXI7CiAgICBzYW1lLWFnYWluOiBAaW1wb3J0YW50LXZhciAhaW1wb3J0YW50OwogICAgbXVsdGktaW1wb3J0YW50OiBAaW1wb3J0YW50LXZhciBAaW1wb3J0YW50LXZhciwgQGltcG9ydGFudC12YXItdHdvOwogICAgbXVsdGk6IHNvbWV0aGluZyBAbXVsdGksIEBhOwp9CgoudmFyaWFibGUtbmFtZXMgewogICAgLnF1b3RlZCB7CiAgICAgICAgQHZhcjogJ2hlbGxvJzsKICAgICAgICBAbmFtZTogJ3Zhcic7CiAgICAgICAgbmFtZTogQEBuYW1lOwogICAgfQoKICAgIC51bnF1b3RlZCB7CiAgICAgICAgQHZhcjogJ2hlbGxvJzsKICAgICAgICBAbmFtZTogdmFyOwogICAgICAgIG5hbWU6IEBAbmFtZTsKICAgIH0KICAgIAogICAgLmNvbG9yLWtleXdvcmQgewogICAgICAgIEByZWQ6ICdoZWxsbyc7CiAgICAgICAgQG5hbWU6IHJlZDsKICAgICAgICBuYW1lOiBAQG5hbWU7CiAgICB9Cn0KCi5hbHBoYSB7CiAgICBAdmFyOiA0MjsKICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT1AdmFyKTsKfQoKLnBvbGx1dGVNaXhpbigpIHsKICAgIEBhOiAncG9sbHV0aW9uJzsKfQoudGVzdC1ydWxlUG9sbHV0aW9uIHsKICAgIEBhOiAnbm8tcG9sbHV0aW9uJzsKICAgIGE6IEBhOwogICAgLnBvbGx1dGVNaXhpbigpOwogICAgYTogQGE7Cn0KCi51bml0cyB7CiAgd2lkdGg6IEBvbmVQaXhlbDsKICBzYW1lLXVuaXQtYXMtcHJldmlvdXNseTogKEBvbmVQaXhlbCAvIEBvbmVQaXhlbCk7CiAgc3F1YXJlLXBpeGVsLWRpdmlkZWQ6IChAb25lUGl4ZWwgKiBAb25lUGl4ZWwgLyBAb25lUGl4ZWwpOwogIG9kZC11bml0OiB1bml0KChAb25lUGl4ZWwgKiA0ZW0gLyAyY20pKTsKICBwZXJjZW50YWdlOiAoMTAgKiA1MCUpOwogIHBpeGVsczogKDUwcHggKiAxMCk7CiAgY29udmVyc2lvbi1tZXRyaWMtYTogKDIwbW0gKyAxY20pOwogIGNvbnZlcnNpb24tbWV0cmljLWI6ICgxY20gKyAyMG1tKTsKICBjb252ZXJzaW9uLWltcGVyaWFsOiAoMWluICsgNzJwdCArIDZwYyk7CiAgY3VzdG9tLXVuaXQ6ICg0Mm9jdG9jYXRzICogMTApOwogIGN1c3RvbS11bml0LWNhbmNlbGxpbmc6ICg4Y2F0cyAqIDlkb2dzIC8gNGNhdHMpOwogIG1peC11bml0czogKDFweCArIDFlbSk7CiAgaW52YWxpZC11bml0czogKDFweCAqIDFweCk7CiAgLmZhbGxiYWNrIHsKICAgIEBweDogMTRweDsKICAgIEBlbTogMS40ZW07CiAgICBAY206IDEwY207CiAgICBkaXYtcHgtMTogKEBweCAvIEBlbSk7CiAgICBkaXYtcHgtMjogKChAcHggLyBAZW0pIC8gQGNtKTsKICAgIHN1Yi1weC0xOiAoQHB4IC0gQGVtKTsKICAgIHN1Yi1jbS0xOiAoQGNtIC0gKEBweCAtIEBlbSkpOwogICAgbXVsLXB4LTE6IChAcHggKiBAZW0pOwogICAgbXVsLWVtLTE6IChAZW0gKiBAcHgpOwogICAgbXVsLWVtLTI6ICgoQGVtICogQHB4KSAqIEBjbSk7CiAgICBtdWwtY20tMTogKEBjbSAqIChAZW0gKiBAcHgpKTsKICAgIGFkZC1weC0xOiAoQHB4ICsgQGVtKTsKICAgIGFkZC1weC0yOiAoKEBweCArIEBlbSkgKyBAY20pOwogICAgbXVsLXB4LTI6ICgoMSAqIEBweCkgKiBAY20pOwogICAgbXVsLXB4LTM6ICgoQHB4ICogMSkgKiBAY20pOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/less/_main/whitespace.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cgoud2hpdGVzcGFjZQogIHsgY29sb3I6IHdoaXRlOyB9Cgoud2hpdGVzcGFjZQp7CiAgY29sb3I6IHdoaXRlOwp9CiAgLndoaXRlc3BhY2UKeyBjb2xvcjogd2hpdGU7IH0KCi53aGl0ZXNwYWNle2NvbG9yOndoaXRlO30KLndoaXRlc3BhY2UgeyBjb2xvciA6IHdoaXRlIDsgfQoKLndoaXRlLAouc3BhY2UsCi5tYW5pYQp7IGNvbG9yOiB3aGl0ZTsgfQoKLm5vLXNlbWktY29sdW1uIHsgY29sb3I6IHdoaXRlIH0KLm5vLXNlbWktY29sdW1uIHsKICBjb2xvcjogd2hpdGU7CiAgd2hpdGUtc3BhY2U6IHByZQp9Ci5uby1zZW1pLWNvbHVtbiB7Ym9yZGVyOiAycHggc29saWQgd2hpdGV9Ci5uZXdsaW5lcyB7CiAgYmFja2dyb3VuZDogdGhlLAogICAgICAgICAgICAgIGdyZWF0LAogICAgICAgICAgICAgIHdhbGw7CiAgYm9yZGVyOiAycHgKICAgICAgICAgIHNvbGlkCiAgICAgICAgICBibGFjazsKfQouZW1wdHkgewoKfQouc2VsCi5uZXdsaW5lX3dzIC50YWJfd3Mgewpjb2xvcjoKd2hpdGU7CmJhY2tncm91bmQtcG9zaXRpb246IDQ1Ci0yMzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/override/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/override/_main/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/lessjs-3.13.1/override/_main/permissive-parse.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QC1tb3otZG9jdW1lbnQgcmVnZXhwKCIoXGR7MCwxNX0pIikgewogIGEgewogICAgY29sb3I6IHJlZDsKICB9Cn0KLmN1c3RvbS1wcm9wZXJ0eSB7CiAgLS10aGlzOiAoKSA9PiB7CiAgICBiYXNpY2FsbHkgYW55dGhpbmcgdW50aWwgZmluYWwgc2VtaS1jb2xvbjsKICAgIGV2ZW4gb3RoZXIgc3R1ZmY7IC8vIGlcJ20gc2VyaW91czsKICB9OwogIC0tdGhhdDogKCkgPT4gewogICAgYmFzaWNhbGx5IGFueXRoaW5nIHVudGlsIGZpbmFsIHNlbWktY29sb247CiAgICBldmVuIG90aGVyIHN0dWZmOyAvLyBpXCdtIHNlcmlvdXM7CiAgfTsKICAtLWN1c3RvbS1jb2xvcjogI2ZmMzMzMyAjZmYzMzMzOwogIGN1c3RvbS1jb2xvcjogI2ZmMzMzMyAjZmYzMzMzOwp9Ci52YXIgewogIC0tZm9ydHJhbjogcmVhZCAoKiwgKiwgaW9zdGF0PTEpIHJhZGl1cywgaGVpZ2h0Owp9CkAtbW96LXdoYXRldmVyIChmb286ICIoIiBiYW0gIikiKSB7CiAgYmFyOiBmb287Cn0KI3NlbGVjdG9yLCAuYmFyLCBmb29bYXR0cj0iYmxhaCJdIHsKICBiYXI6IHZhbHVlOwp9CkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgewogIC5ob2x5LWNyYXAgewogICAgdGhpczogd29ya3M7CiAgfQp9Ci50ZXN0LXJ1bGUtY29tbWVudCB7CiAgLS12YWx1ZTogYSAvKiB7IDsgfSAqLzsKICAtLWNvbW1lbnQtd2l0aGluOiAoIC8qIG9rYXk/OyBjb21tZW50OyAqLyApOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/Fixtures/oyejorge-305-import-grantparent.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnJlZHsKCWJhY2tncm91bmQ6cmVkOwoJfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/bootstrap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIExlc3NUZXN0Q2FzZSBleHRlbmRzIFBIUFVuaXRcRnJhbWV3b3JrXFRlc3RDYXNlIHsKCS8qKiBAdmFyIHN0cmluZyAqLwoJcHJvdGVjdGVkIHN0YXRpYyAkZml4dHVyZXNEaXI7CgkvKiogQHZhciBzdHJpbmcgKi8KCXByb3RlY3RlZCBzdGF0aWMgJGNhY2hlRGlyOwoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2V0VXBCZWZvcmVDbGFzcygpOiB2b2lkIHsKCQkkcm9vdERpciA9IGRpcm5hbWUoIGRpcm5hbWUoIF9fRElSX18gKSApOwoJCXJlcXVpcmVfb25jZSAkcm9vdERpciAuICcvbGliL0xlc3MvQXV0b2xvYWRlci5waHAnOwoJCUxlc3NfQXV0b2xvYWRlcjo6cmVnaXN0ZXIoKTsKCgkJJHJvb3REaXIgPSBkaXJuYW1lKCBkaXJuYW1lKCBfX0RJUl9fICkgKTsKCQlzZWxmOjokZml4dHVyZXNEaXIgPSAkcm9vdERpciAuICcvdGVzdC9GaXh0dXJlcyc7CgoJCXNlbGY6OiRjYWNoZURpciA9ICRyb290RGlyIC4gJy90ZXN0L3BocHVuaXQvX2NhY2hlLyc7CgkJc2VsZjo6Y2hlY2tDYWNoZURpcmVjdG9yeSgpOwoJCS8vIENsZWFuaW5nIHRoZSBjYWNoZSBkaXIgaXMgb25seSBuZWVkZWQgb25jZSBwZXIgY2xhc3MKCQlzZWxmOjpjbGVhbkNhY2hlRGlyZWN0b3J5KCk7Cgl9CgoJcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2hlY2tDYWNoZURpcmVjdG9yeSgpIHsKCQlpZiAoICFmaWxlX2V4aXN0cyggc2VsZjo6JGNhY2hlRGlyICkgJiYgIW1rZGlyKCBzZWxmOjokY2FjaGVEaXIgKSApIHsKCQkJc2VsZjo6ZmFpbCggIkNvdWxkIG5vdCBjcmVhdGUgY2FjaGUgZGlyIGF0ICIgLiBzZWxmOjokY2FjaGVEaXIgKTsKCQl9CgoJCWlmICggIWlzX3dyaXRhYmxlKCBzZWxmOjokY2FjaGVEaXIgKSApIHsKCQkJc2VsZjo6ZmFpbCggIkNhY2hlIGRpciBub3Qgd3JpdGFibGUgYXQgIiAuIHNlbGY6OiRjYWNoZURpciApOwoJCX0KCX0KCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjbGVhbkNhY2hlRGlyZWN0b3J5KCkgewoJCS8vIENsZWFuIGRpcmVjdG9yeSBvZiBjYWNoZSBmcm9tIHByZXZpb3VzIHRlc3QgcnVucwoJCS8vIG9uIGRpZmZlcmVudCBjb2RlIHZlcnNpb25zIChpbmNsIGUuZy4gYW55IGJ1Z3MgdGhleSBtaWdodCBjb250YWluKS4KCQlmb3JlYWNoICggc2NhbmRpciggc2VsZjo6JGNhY2hlRGlyICkgYXMgJGVudHJ5ICkgewoJCQlpZiAoICRlbnRyeSAhPT0gJy4nICYmICRlbnRyeSAhPT0gJy4uJyApIHsKCQkJCXVubGluayggc2VsZjo6JGNhY2hlRGlyIC4gJy8nIC4gJGVudHJ5ICk7CgkJCX0KCQl9Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/consume-somevars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/consume-somevars/from-importcallback.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiQHdpa2ltZWRpYS9leGFtcGxlIjsKCmRpdiB7Cglmb250LWZhbWlseTogQG15dmFyOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/consume-somevars/from-importdir-file.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAic29tZXZhcnMvZmFudGFzeS5sZXNzIjsKCmRpdiB7Cglmb250LWZhbWlseTogQG15dmFyOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/consume-somevars/from-importdir-filenosuffix.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAic29tZXZhcnMvZmFudGFzeSI7CgpkaXYgewoJZm9udC1mYW1pbHk6IEBteXZhcjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/consume-somevars/from-importdir.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAibW9ubyI7CgpkaXYgewoJZm9udC1mYW1pbHk6IEBteXZhcjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/exception/f1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmZvbyB7Cgljb250ZW50OiByZ2IoIngiKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/exception/f2.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbzogJ2hlbGxvJzsKQGJhcjogJ3dvcmxkJzsKZGl2IHsKIGNvbnRlbnQ6IChAZm9vKSAqIEBiYXI7Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/exception/f3.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbzogJ2hlbGxvJzsKQGJhcjogJ3dvcmxkJzsKCmRpdiB7CiBjb250ZW50OiBAZm9vICogQGJhcjsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/exception/T386074-fix-parenthesized-operation.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cCB7CglAYTogMjBweCAvIDI7CgltYXJnaW46IDIgKiBAYTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/f1.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keTpiZWZvcmUgewogIGNvbnRlbnQ6ICcwOTg3NjU0MzIxJzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/f1.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keTpiZWZvcmUgewoJY29udGVudDogbXlmdW5jLXJldmVyc2UoJzEyMzQ1Njc4OTAnKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/importdir-somevars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/importdir-somevars/callme.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG15dmFyOiBDYWxsIE1lIE1heWJlOwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/importdir-somevars/mono.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG15dmFyOiBtb25vc3BhY2U7Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/importdir-somevars/somevars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/data/importdir-somevars/somevars/fantasy.less</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG15dmFyOiBmYW50YXN5Owo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/FixturesTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIE5vIEBjb3ZlcnMgaGVyZSwgYXMgdGhpcyBtYXkgY292ZXIgYWxsIGNsYXNzZXMuCi8vIHBocGNzOmRpc2FibGUgTWVkaWFXaWtpLkNvbW1lbnRpbmcuTWlzc2luZ0NvdmVycy5NaXNzaW5nQ292ZXJzCgpjbGFzcyBGaXh0dXJlc1Rlc3QgZXh0ZW5kcyBMZXNzVGVzdENhc2UgewoJcHJpdmF0ZSBjb25zdCBLTk9XTl9GQUlMVVJFID0gWwoJCSdsZXNzanMtMi41LjMnID0+IFsKCQkJLy8gV2UgbW92ZWQgdGhpcyB0byBMZXNzLnBocCBwYXJlbnMubGVzcyB0ZXN0IGNhc2UgYmVjYXVzZQoJCQkvLyBvdXIgY3VycmVudCB2ZXJzaW9uIG9mIExlc3MucGhwIHN1cG9ydHMgTGVzcy5qcyB2My54IHBhcmVucwoJCQkvLyBiZWhhdmlvdXIgb2YgZG9pbmcgbWF0aHMgaW4gcGFyZW50aGVzZXMgYnkgZGVmYXVsdAoJCQkncGFyZW5zJyA9PiB0cnVlLAoJCV0sCgkJJ2xlc3Nqcy0zLjEzLjEnID0+IFsKCQkJJ2Z1bmN0aW9ucycgPT4gdHJ1ZSwKCQkJJ2Z1bmN0aW9ucy1lYWNoJyA9PiB0cnVlLAoJCQknaW1wb3J0LXJlZmVyZW5jZS1pc3N1ZXMnID0+IHRydWUsCgkJCSdkZXRhY2hlZC1ydWxlc2V0cycgPT4gdHJ1ZSwKCQkJJ2ltcG9ydC1tb2R1bGUnID0+IHRydWUsCgkJCSdleHRlbmQtc2VsZWN0b3InID0+IHRydWUsCgkJCSdtZXJnZScgPT4gdHJ1ZSwKCQkJJ2NvbG9ycycgPT4gdHJ1ZSwKCQkJJ3VybHMnID0+IHRydWUsCgkJCSdvcGVyYXRpb25zJyA9PiB0cnVlLAoJCQknaW1wb3J0LXJlbW90ZScgPT4gdHJ1ZSwKCQkJJ2ltcG9ydCcgPT4gdHJ1ZSwKCQkJJ3BhcnNlLWludGVycG9sYXRpb24nID0+IHRydWUsCgkJCSdzZWxlY3RvcnMnID0+IHRydWUsCgkJCSdwcm9wZXJ0eS1uYW1lLWludGVycCcgPT4gdHJ1ZSwKCQldLAoJXTsKCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHByb3ZpZGVGaXh0dXJlcygpIHsKCQlmb3JlYWNoICggKAoJCQlyZXF1aXJlIF9fRElSX18gLiAnLy4uL2ZpeHR1cmVzLnBocCcKCQkpIGFzICRncm91cCA9PiAkZml4dHVyZSApIHsKCQkJJGNzc0RpciA9ICRmaXh0dXJlWydjc3NEaXInXTsKCQkJJGxlc3NEaXIgPSAkZml4dHVyZVsnbGVzc0RpciddOwoJCQkkb3ZlcnJpZGVEaXIgPSAkZml4dHVyZVsnb3ZlcnJpZGVEaXInXSA/PyBudWxsOwoJCQkkb3B0aW9ucyA9ICRmaXh0dXJlWydvcHRpb25zJ10gPz8gW107CgkJCSR1bnN1cHBvcnRlZCA9ICRmaXh0dXJlWyd1bnN1cHBvcnRlZCddID8/IFtdOwoJCQlpZiAoICFpc19kaXIoICRjc3NEaXIgKSApIHsKCQkJCS8vIENoZWNrIGJlY2F1c2UgZ2xvYigpIHRvbGVyYW5jZXMgbm9uLWV4aXN0ZW5jZQoJCQkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oICJEaXJlY3RvcnkgbWlzc2luZzogJGNzc0RpciIgKTsKCQkJfQoJCQlmb3JlYWNoICggZ2xvYiggIiRjc3NEaXIvKi5jc3MiICkgYXMgJGNzc0ZpbGUgKSB7CgkJCQkkbmFtZSA9IGJhc2VuYW1lKCAkY3NzRmlsZSwgJy5jc3MnICk7CgkJCQkkbGVzc0ZpbGUgPSAiJGxlc3NEaXIvJG5hbWUubGVzcyI7CgkJCQkkb3ZlcnJpZGVDc3NGaWxlID0gJG92ZXJyaWRlRGlyID8gIiRvdmVycmlkZURpci8kbmFtZS5jc3MiIDogbnVsbDsKCQkJCWlmICggJG92ZXJyaWRlQ3NzRmlsZSAmJiBmaWxlX2V4aXN0cyggJG92ZXJyaWRlQ3NzRmlsZSApICkgewoJCQkJCWlmICggZmlsZV9nZXRfY29udGVudHMoICRvdmVycmlkZUNzc0ZpbGUgKSA9PT0gZmlsZV9nZXRfY29udGVudHMoICRjc3NGaWxlICkgKSB7CgkJCQkJCXByaW50ICJXQVJOSU5HOiBSZWR1bmRhbnQgb3ZlcnJpZGUgZm9yICRvdmVycmlkZUNzc0ZpbGVcbiI7CgkJCQkJfQoJCQkJCSRjc3NGaWxlID0gJG92ZXJyaWRlQ3NzRmlsZTsKCQkJCX0KCQkJCSRvdmVycmlkZUxlc3NGaWxlID0gJG92ZXJyaWRlRGlyID8gIiRvdmVycmlkZURpci8kbmFtZS5sZXNzIiA6IG51bGw7CgkJCQlpZiAoICRvdmVycmlkZUxlc3NGaWxlICYmIGZpbGVfZXhpc3RzKCAkb3ZlcnJpZGVMZXNzRmlsZSApICkgewoJCQkJCWlmICggZmlsZV9nZXRfY29udGVudHMoICRvdmVycmlkZUxlc3NGaWxlICkgPT09IGZpbGVfZ2V0X2NvbnRlbnRzKCAkbGVzc0ZpbGUgKSApIHsKCQkJCQkJcHJpbnQgIldBUk5JTkc6IFJlZHVuZGFudCBvdmVycmlkZSBmb3IgJG92ZXJyaWRlTGVzc0ZpbGVcbiI7CgkJCQkJfQoJCQkJCSRsZXNzRmlsZSA9ICRvdmVycmlkZUxlc3NGaWxlOwoJCQkJfQoKCQkJCWlmICggaW5fYXJyYXkoICRuYW1lLCAkdW5zdXBwb3J0ZWQgKSApIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCSRza2lwVGVzdE1lc3NhZ2UgPSBmYWxzZTsKCQkJCWlmICggc2VsZjo6S05PV05fRkFJTFVSRVsgJGdyb3VwIF1bICRuYW1lIF0gPz8gZmFsc2UgKSB7CgkJCQkJJHNraXBUZXN0TWVzc2FnZSA9ICdLbm93biBmYWlsdXJlLCBub3QgeWV0IHN1cHBvcnRlZC4nOwoJCQkJfQoJCQkJeWllbGQgIkZpeHR1cmVzLyRncm91cCAkbmFtZSIgPT4gWyAkY3NzRmlsZSwgJGxlc3NGaWxlLCAkb3B0aW9ucywgJHNraXBUZXN0TWVzc2FnZSBdOwoJCQl9CgkJfQoJfQoKCS8qKgoJICogQGRhdGFQcm92aWRlciBwcm92aWRlRml4dHVyZXMKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRlc3RGaXh0dXJlKCAkY3NzRmlsZSwgJGxlc3NGaWxlLCAkb3B0aW9ucywgJGlmU2V0U2tpcFRlc3RNZXNzYWdlID0gZmFsc2UgKSB7CgkJaWYgKCAkaWZTZXRTa2lwVGVzdE1lc3NhZ2UgIT09IGZhbHNlICkgewoJCQkkdGhpcy0+bWFya1Rlc3RTa2lwcGVkKCAkaWZTZXRTa2lwVGVzdE1lc3NhZ2UgKTsKCQl9CgoJCSRleHBlY3RlZENTUyA9IHRyaW0oIGZpbGVfZ2V0X2NvbnRlbnRzKCAkY3NzRmlsZSApICk7CgoJCS8vIENoZWNrIHdpdGggc3RhbmRhcmQgcGFyc2VyCgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlciggJG9wdGlvbnMgKTsKCQkkaGFzRXJyb3IgPSBmYWxzZTsKCQl0cnkgewoJCQkkcGFyc2VyLT5yZWdpc3RlckZ1bmN0aW9uKCAnX2NvbG9yJywgWyBfX0NMQVNTX18sICdGbkNvbG9yJyBdICk7CgkJCSRwYXJzZXItPnJlZ2lzdGVyRnVuY3Rpb24oICdhZGQnLCBbIF9fQ0xBU1NfXywgJ0ZuQWRkJyBdICk7CgkJCSRwYXJzZXItPnJlZ2lzdGVyRnVuY3Rpb24oICdpbmNyZW1lbnQnLCBbIF9fQ0xBU1NfXywgJ0ZuSW5jcmVtZW50JyBdICk7CgkJCSRwYXJzZXItPnBhcnNlRmlsZSggJGxlc3NGaWxlICk7CgkJCSRjc3MgPSAkcGFyc2VyLT5nZXRDc3MoKTsKCQl9IGNhdGNoICggTGVzc19FeGNlcHRpb25fUGFyc2VyICRlICkgewoJCQkkaGFzRXJyb3IgPSB0cnVlOwoJCQkkY3NzID0gJGUtPmdldE1lc3NhZ2UoKTsKCQl9CgkJJGNzcyA9IHRyaW0oICRjc3MgKTsKCgkJaWYgKCAkaGFzRXJyb3IgJiYgJGV4cGVjdGVkQ1NTICE9PSAkY3NzICYmIHN0cmxlbiggJGV4cGVjdGVkQ1NTICkgPiAxMDI0ICkgewoJCQkvLyBJZiB3ZSBoYXZlIGEgcGFyc2VyIGV4Y2VwdGlvbiwgc2hvdyB0aGUgZXJyb3IgYXMtaXMgaW5zdGVhZCBvZiBhIGxvbmcgZGlmZgoJCQkvLyB3aXRoIGFsbCBsaW5lcyBmcm9tICRleHBlY3RlZENzcyBhcyBtaXNzaW5nLiBXZSBjaGVjayB0aGUgbGVuZ3RoIHNvIGFzIHRvCgkJCS8vIHN0aWxsIHJlbmRlciBhIGRpZmYgaWYgdGhpcyBpcyBhIHRlc3QgY2FzZSB3aGVyZSB3ZSBleHBlY3RlZCBhIChkaWZmZXJlbnQpIGVycm9yLgoJCQkkdGhpcy0+ZmFpbCggJGNzcyApOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5hc3NlcnRTYW1lKCAkZXhwZWN0ZWRDU1MsICRjc3MsICJTdGFuZGFyZCBjb21waWxlciIgKTsKCQl9CgoJCS8vIENoZWNrIHdpdGggY2FjaGUKCQkkb3B0aW9uc1dpdGhDYWNoZSA9ICRvcHRpb25zICsgWwoJCQknY2FjaGVfZGlyJyA9PiBzZWxmOjokY2FjaGVEaXIsCgkJCSdmdW5jdGlvbnMnID0+IFsKCQkJCSdfY29sb3InID0+IFsgX19DTEFTU19fLCAnRm5Db2xvcicgXSwKCQkJCSdhZGQnID0+IFsgX19DTEFTU19fLCAnRm5BZGQnIF0sCgkJCQknaW5jcmVtZW50JyA9PiBbIF9fQ0xBU1NfXywgJ0ZuSW5jcmVtZW50JyBdLAoJCQldLAoJCV07CgkJJGZpbGVzID0gWyAkbGVzc0ZpbGUgPT4gJycgXTsKCQl0cnkgewoJCQkkY2FjaGVGaWxlID0gTGVzc19DYWNoZTo6UmVnZW4oICRmaWxlcywgJG9wdGlvbnNXaXRoQ2FjaGUgKTsKCQkJJGNzcyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCBzZWxmOjokY2FjaGVEaXIgLiAnLycgLiAkY2FjaGVGaWxlICk7CgkJfSBjYXRjaCAoIExlc3NfRXhjZXB0aW9uX1BhcnNlciAkZSApIHsKCQkJJGNzcyA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJfQoJCSRjc3MgPSB0cmltKCAkY3NzICk7CgkJJHRoaXMtPmFzc2VydEVxdWFscyggJGV4cGVjdGVkQ1NTLCAkY3NzLCAiUmVnZW5lcmF0aW5nIGNhY2hlIiApOwoKCQkvLyBDaGVjayB1c2luZyB0aGUgY2FjaGVkIGRhdGEKCQl0cnkgewoJCQkkY2FjaGVGaWxlID0gTGVzc19DYWNoZTo6R2V0KCAkZmlsZXMsICRvcHRpb25zV2l0aENhY2hlICk7CgkJCSRjc3MgPSBmaWxlX2dldF9jb250ZW50cyggc2VsZjo6JGNhY2hlRGlyIC4gJy8nIC4gJGNhY2hlRmlsZSApOwoJCX0gY2F0Y2ggKCBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIgJGUgKSB7CgkJCSRjc3MgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJCX0KCQkkY3NzID0gdHJpbSggJGNzcyApOwoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoICRleHBlY3RlZENTUywgJGNzcywgIlVzaW5nIGNhY2hlIiApOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gRm5Db2xvciggJHN0ciApIHsKCQlpZiAoICRzdHItPnZhbHVlID09PSAiZXZpbCByZWQiICkgewoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvciggIjYwMCIgKTsKCQl9Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBGbkFkZCggJGEsICRiICkgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGEtPnZhbHVlICsgJGItPnZhbHVlICk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBGbkluY3JlbWVudCggJGEgKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkYS0+dmFsdWUgKyAxICk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/FunctionTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIE5vIEBjb3ZlcnMgaGVyZSwgYXMgdGhpcyBtYXkgY292ZXIgYWxsIGNsYXNzZXMuCi8vIHBocGNzOmRpc2FibGUgTWVkaWFXaWtpLkNvbW1lbnRpbmcuTWlzc2luZ0NvdmVycy5NaXNzaW5nQ292ZXJzCgpjbGFzcyBGdW5jdGlvblRlc3QgZXh0ZW5kcyBMZXNzVGVzdENhc2UgewoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7CgkJJGxlc3NGaWxlID0gX19ESVJfXyAuICcvZGF0YS9mMS5sZXNzJzsKCQkkZXhwZWN0ZWQgPSBmaWxlX2dldF9jb250ZW50cyggX19ESVJfXyAuICcvZGF0YS9mMS5jc3MnICk7CgoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKCQkkcGFyc2VyLT5yZWdpc3RlckZ1bmN0aW9uKCAnbXlmdW5jLXJldmVyc2UnLCBbIF9fQ0xBU1NfXywgJ3JldmVyc2UnIF0gKTsKCQkkcGFyc2VyLT5wYXJzZUZpbGUoICRsZXNzRmlsZSApOwoJCSRnZW5lcmF0ZWQgPSAkcGFyc2VyLT5nZXRDc3MoKTsKCgkJJHRoaXMtPmFzc2VydEVxdWFscyggJGV4cGVjdGVkLCAkZ2VuZXJhdGVkICk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXZlcnNlKCAkYXJnICkgewoJCWlmICggJGFyZyBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQgKSB7CgkJCSRhcmctPnZhbHVlID0gc3RycmV2KCAkYXJnLT52YWx1ZSApOwoJCQlyZXR1cm4gJGFyZzsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RFeGNlcHRpb24oKSB7CgkJJGxlc3NGaWxlID0gX19ESVJfXyAuICcvZGF0YS9leGNlcHRpb24vZjEubGVzcyc7CgoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKCQkkcGFyc2VyLT5wYXJzZUZpbGUoICRsZXNzRmlsZSApOwoKCQl0cnkgewoJCQkkcGFyc2VyLT5nZXRDc3MoKTsKCQkJJHRoaXMtPmZhaWwoKTsKCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZiggTGVzc19FeGNlcHRpb25fUGFyc2VyOjpjbGFzcywgJGUgKTsKCQkJJHRoaXMtPmFzc2VydFN0cmluZ0NvbnRhaW5zU3RyaW5nKAoJCQkJJ2Vycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24nLAoJCQkJJGUtPmdldE1lc3NhZ2UoKQoJCQkpOwoKCQkJLy8gQnlwYXNzIFBIUFVuaXQncyBleGNlY3RFeGNlcHRpb24oKSB0byBhc3NlcnQgcHJlc2VuY2UgYW5kIHNwZWNpZmljcwoJCQkvLyBvZiB0aGUgcHJldmlvdXMgZXhjZXB0aW9uIGFzIHdlbGwuCgkJCSRwcmV2ID0gJGUtPmdldFByZXZpb3VzKCk7CgkJCSR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKCBMZXNzX0V4Y2VwdGlvbl9QYXJzZXI6OmNsYXNzLCAkZSApOwoJCQkkdGhpcy0+YXNzZXJ0U3RyaW5nQ29udGFpbnNTdHJpbmcoCgkJCQkncmdiIGV4cGVjdHMgdGhyZWUgcGFyYW1ldGVycycsCgkJCQkkZS0+Z2V0TWVzc2FnZSgpCgkJCSk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0SW52YWxpZE1pbm1heCgpIHsKCQkvLyBUaGUgbWluL21heCBmdW5jdGlvbnMgb25seSBhY2NlcHQgTGVzc19UcmVlIGFyZ3VtZW50cyB0aGF0IGNvbnRhaW4KCQkvLyBhIHZhbHVlIHByb3BlcnR5LiBMZXNzX1RyZWVfQ29sb3IgaXMgb25lIG9mIHRoZSB2ZXJ5IGZldyBzdWJjbGFzc2VzCgkJLy8gdGhhdCBkb2Vzbid0IHVzZSBhIHZhbHVlIHByb3BlcnR5LgoJCS8vCgkJLy8gVGhpcyBpcyBnYXJiYWdlIGlucHV0LiBXZSBtYWlubHkgdGVzdCBpdCB0byBlbnN1cmUgd2UgaGFuZGxlIGl0IHdpdGhvdXQKCQkvLyBjYXVzaW5nIGludGVybmFsIHdhcm5pbmdzL2Vycm9ycy4KCQkkbGVzc0NvZGUgPSAnCgkJLmZvbyB7CgkJCWNvbG9yOiBtaW4ocmdiKDEsMSwxKSwgMiwgcmdiKDMsMywzKSk7CgkJfQoJCSc7CgoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKCQkkcGFyc2VyLT5wYXJzZSggJGxlc3NDb2RlICk7CgkJJGNzcyA9IHRyaW0oICRwYXJzZXItPmdldENzcygpICk7CgoJCSRleHBlY3RlZCA9IDw8PENTUwouZm9vIHsKICBjb2xvcjogMjsKfQpDU1M7CgkJJHRoaXMtPmFzc2VydEVxdWFscyggJGV4cGVjdGVkLCAkY3NzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RJbnZhbGlkQ29sb3IoKSB7CgkJJGxlc3NDb2RlID0gJwoJCUBjb2xvci1wcm9ncmVzc2l2ZTogNDJweDsKCQkuZm9vIHsKCQkJY29sb3I6IG1peCggIzAwMCwgQGNvbG9yLXByb2dyZXNzaXZlLCAyMCUgKTsKCQl9CgkJJzsKCgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigpOwoJCSRwYXJzZXItPnBhcnNlKCAkbGVzc0NvZGUgKTsKCgkJdHJ5IHsKCQkJJHBhcnNlci0+Z2V0Q3NzKCk7CgkJCSR0aGlzLT5mYWlsKCk7CgkJfSBjYXRjaCAoIEV4Y2VwdGlvbiAkZSApIHsKCQkJJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoIExlc3NfRXhjZXB0aW9uX1BhcnNlcjo6Y2xhc3MsICRlICk7CgkJCSR0aGlzLT5hc3NlcnRTdHJpbmdDb250YWluc1N0cmluZygKCQkJCSdlcnJvciBldmFsdWF0aW5nIGZ1bmN0aW9uIGBtaXhgOiBUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb2xvciwgTGVzc19UcmVlX0RpbWVuc2lvbiBnaXZlbicsCgkJCQkkZS0+Z2V0TWVzc2FnZSgpCgkJCSk7CgkJfQoJfQoKCS8qKgoJICogRnVuY3Rpb24gcmVnaXN0cnkgbXVzdCBub3QgY2xhc2ggd2l0aCBwcml2YXRlIGhlbHBlciBmdW5jdGlvbnMuCgkgKiBSZWdyZXNzaW9uIHRlc3QgZm9yIFQzNjM3MjgsIGJ5IGNoZWNraW5nIHRoYXQgYSBjdXN0b20gZnVuY3Rpb24KCSAqIHRoYXQgaGFwcGVucyB0byBzaGFyZSB0aGUgc2FtZSBuYW1lLCB3b3JrcyBmaW5lLgoJICovCglwdWJsaWMgZnVuY3Rpb24gdGVzdE5vY29uZmxpY3RQcml2YXRlSGVscGVyKCkgewoJCSRsZXNzQ29kZSA9ICcKCQkuZm9vIHsKCQkJZnJvdW5kOiBmcm91bmQoKTsKCQkJbnVtYmVyLWxvOiBfbnVtYmVyKCk7CgkJCW51bWJlcjogbnVtYmVyKCk7CgkJCW9wZXJhdGU6IG9wZXJhdGUoKTsKCQkJc2NhbGVkLWxvOiBfc2NhbGVkKCk7CgkJCXNjYWxlZDogc2NhbGVkKCk7CgkJfQoJCSc7CgoJCSRmbkxvID0gc3RhdGljIGZ1bmN0aW9uICgpIHsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfUXVvdGVkKCAnJywgJ3gnICk7CgkJfTsKCQkkZm4gPSBzdGF0aWMgZnVuY3Rpb24gKCkgewoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9RdW90ZWQoICcnLCAneScgKTsKCQl9OwoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoIFsKCQkJJ2Z1bmN0aW9ucycgPT4gWwoJCQkJJ19udW1iZXInID0+ICRmbkxvLAoJCQkJJ19zY2FsZWQnID0+ICRmbkxvLAoJCQkJJ2Zyb3VuZCcgPT4gJGZuLAoJCQkJJ251bWJlcicgPT4gJGZuLAoJCQkJJ29wZXJhdGUnID0+ICRmbiwKCQkJCSdzY2FsZWQnID0+ICRmbiwKCQkJXQoJCV0gKTsKCgkJJHBhcnNlci0+cGFyc2UoICRsZXNzQ29kZSApOwoJCSRjc3MgPSB0cmltKCAkcGFyc2VyLT5nZXRDc3MoKSApOwoKCQkkZXhwZWN0ZWQgPSA8PDxDU1MKLmZvbyB7CiAgZnJvdW5kOiB5OwogIG51bWJlci1sbzogeDsKICBudW1iZXI6IHk7CiAgb3BlcmF0ZTogeTsKICBzY2FsZWQtbG86IHg7CiAgc2NhbGVkOiB5Owp9CkNTUzsKCgkJJHRoaXMtPmFzc2VydEVxdWFscyggJGV4cGVjdGVkLCAkY3NzICk7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/MapTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAY292ZXJzIFxMZXNzX1BhcnNlcgogKiBAY292ZXJzIFxMZXNzX0NvbmZpZ3VyYWJsZQogKiBAY292ZXJzIFxMZXNzX091dHB1dF9NYXBwZWQKICogQGNvdmVycyBcTGVzc19Tb3VyY2VNYXBfR2VuZXJhdG9yCiAqIEBjb3ZlcnMgXExlc3NfU291cmNlTWFwX0Jhc2U2NFZMUQogKi8KY2xhc3MgTWFwVGVzdCBleHRlbmRzIExlc3NUZXN0Q2FzZSB7CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RNYXAoKSB7CgkJJGxlc3NGaWxlID0gc2VsZjo6JGZpeHR1cmVzRGlyIC4gJy9ib290c3RyYXAzLXNvdXJjZW1hcC9sZXNzL2Jvb3RzdHJhcC5sZXNzJzsKCQkkZXhwZWN0ZWRGaWxlID0gc2VsZjo6JGZpeHR1cmVzRGlyIC4gJy9ib290c3RyYXAzLXNvdXJjZW1hcC9leHBlY3RlZC9ib290c3RyYXAubWFwJzsKCQkkbWFwRGVzdGluYXRpb24gPSBzZWxmOjokY2FjaGVEaXIgLiAnL2Jvb3RzdHJhcC5tYXAnOwoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCBbCgkJCSdzb3VyY2VNYXAnID0+IHRydWUsCgkJCSdzb3VyY2VNYXBVUkwnID0+ICcvJywKCQkJJ3NvdXJjZU1hcEJhc2VwYXRoJyA9PiBkaXJuYW1lKCBkaXJuYW1lKCAkbGVzc0ZpbGUgKSApLAoJCQknc291cmNlTWFwV3JpdGVUbycgPT4gJG1hcERlc3RpbmF0aW9uLAoJCQknbWF0aCcgPT4gJ2Fsd2F5cycsCgkJXSApOwoJCSRwYXJzZXItPnBhcnNlRmlsZSggJGxlc3NGaWxlICk7CgkJJHBhcnNlci0+Z2V0Q3NzKCk7CgoJCSRleHBlY3RlZCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkZXhwZWN0ZWRGaWxlICk7CgkJJGdlbmVyYXRlZCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkbWFwRGVzdGluYXRpb24gKTsKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCAkZXhwZWN0ZWQsICRnZW5lcmF0ZWQgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdEltcG9ydElubGluZSgpIHsKCQkkbGVzc0ZpbGUgPSBzZWxmOjokZml4dHVyZXNEaXIgLiAnL2xlc3MucGhwL2xlc3MvVDM4MDY0MS1zb3VyY2VtYXAtaW1wb3J0LWlubGluZS5sZXNzJzsKCQkkZXhwZWN0ZWRGaWxlID0gc2VsZjo6JGZpeHR1cmVzRGlyIC4gJy9sZXNzLnBocC9jc3MvVDM4MDY0MS1zb3VyY2VtYXAtaW1wb3J0LWlubGluZS5tYXAnOwoJCSRtYXBEZXN0aW5hdGlvbiA9IHNlbGY6OiRjYWNoZURpciAuICcvaW1wb3J0LWlubGluZS5tYXAnOwoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCBbCgkJCSdzb3VyY2VNYXAnID0+IHRydWUsCgkJCSdzb3VyY2VNYXBVUkwnID0+ICcvJywKCQkJJ3NvdXJjZU1hcEJhc2VwYXRoJyA9PiBkaXJuYW1lKCAkbGVzc0ZpbGUgKSwKCQkJJ3NvdXJjZU1hcFdyaXRlVG8nID0+ICRtYXBEZXN0aW5hdGlvbiwKCQldICk7CgkJJHBhcnNlci0+cGFyc2VGaWxlKCAkbGVzc0ZpbGUgKTsKCQkkcGFyc2VyLT5nZXRDc3MoKTsKCgkJJGV4cGVjdGVkID0gZmlsZV9nZXRfY29udGVudHMoICRleHBlY3RlZEZpbGUgKTsKCQkkZ2VuZXJhdGVkID0gZmlsZV9nZXRfY29udGVudHMoICRtYXBEZXN0aW5hdGlvbiApOwoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoICRleHBlY3RlZCwgJGdlbmVyYXRlZCApOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/lib/test/phpunit/ParserTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIE5vIEBjb3ZlcnMgaGVyZSwgYXMgdGhpcyBtYXkgY292ZXIgYWxsIGNsYXNzZXMuCi8vIHBocGNzOmRpc2FibGUgTWVkaWFXaWtpLkNvbW1lbnRpbmcuTWlzc2luZ0NvdmVycy5NaXNzaW5nQ292ZXJzCgpjbGFzcyBQYXJzZXJUZXN0IGV4dGVuZHMgTGVzc1Rlc3RDYXNlIHsKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VmFyaWFibGVzVW5jb21waWxlZCgpIHsKCQkkbGVzc0NvZGUgPSAnCgkJCS8vIFJ1bGUgPiBRdW90ZWQKCQkJQHNvbWVfc3RyaW5nOiAiZm9vIjsKCgkJCS8vIFJ1bGUgPiBEaW1lbnNpb24KCQkJQHNvbWVfbnVtYmVyOiAxMjM7CgoJCQkvLyBSdWxlID4gRGltZW5zaW9uCgkJCUBzb21lX3VuaXQ6IDEycHg7CgoJCQkvLyBSdWxlID4gQ29sb3IKCQkJQHNvbWVfY29sb3I6ICNmOWY5Zjk7CgoJCQkvLyBSdWxlID4gVXJsID4gUXVvdGVkCgkJCUBzb21lX3VybDogdXJsKCJqdXN0L2EvdGVzdC5qcGciKTsKCQknOwoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKCQkkcGFyc2VyLT5wYXJzZSggJGxlc3NDb2RlICk7CgkJLy8gV2l0aG91dCBnZXRDc3MoKQoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoCgkJCVsKCQkJCSdAc29tZV9zdHJpbmcnID0+ICciZm9vIicsCgkJCQknQHNvbWVfbnVtYmVyJyA9PiAxMjMuMCwKCQkJCSdAc29tZV91bml0JyA9PiAnMTJweCcsCgkJCQknQHNvbWVfY29sb3InID0+ICcjZjlmOWY5JywKCQkJCSdAc29tZV91cmwnID0+ICd1cmwoImp1c3QvYS90ZXN0LmpwZyIpJywKCQkJXSwKCQkJJHBhcnNlci0+Z2V0VmFyaWFibGVzKCkKCQkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VmFyaWFibGVzVW5jb21waWxlZEVycm9yKCkgewoJCSRsZXNzQ29kZSA9ICcKCQkJLy8gUnVsZSA+IERpbWVuc2lvbiArIE9wZXJhdGlvbgoJCQlAc29tZV91bml0X29wOiAycHggKyAzcHg7CgkJJzsKCgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigpOwoJCSRwYXJzZXItPnBhcnNlKCAkbGVzc0NvZGUgKTsKCQkvLyBXaXRob3V0IGdldENzcygpCgoJCSR0aGlzLT5leHBlY3RFeGNlcHRpb24oIEV4Y2VwdGlvbjo6Y2xhc3MgKTsKCQkkdGhpcy0+ZXhwZWN0RXhjZXB0aW9uTWVzc2FnZSggJ2dldFZhcmlhYmxlcygpIHJlcXVpcmUgTGVzcyB0byBiZSBjb21waWxlZCcgKTsKCQkkcGFyc2VyLT5nZXRWYXJpYWJsZXMoKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdE5hbWVzcGFjZWRWYWx1ZXNXaXRoUHJvcGVydGllcygpIHsKCQkkbGVzc0NvZGUgPSAnCgkJICAgQGRlZmF1bHRIZWlnaHQ6IDUwcHg7CgkJICAgLmJsb2NrIHsKCQkgICAgICAgY29sb3I6ICNmOWY5Zjk7CgkJICAgICAgIHdpZHRoOiAxMHB4OwoJCSAgICAgICBoZWlnaHQ6IEBkZWZhdWx0SGVpZ2h0OwoJCSAgICAgICBtYXJnaW46ICR3aWR0aDsKCQkgICB9OwoJCSAgIEB2YXI6IC5ibG9jaygpOwoJCSAgIEB3aWR0aDogQHZhclt3aWR0aF07CgkJJzsKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCk7CgkJJHBhcnNlci0+cGFyc2UoICRsZXNzQ29kZSApOwoJCSRwYXJzZXItPmdldENzcygpOwoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoCgkJCVsKCQkJCSJAdmFyIiA9PiBbCgkJCQkJImNvbG9yIiA9PiAiI2Y5ZjlmOSIsCgkJCQkJIndpZHRoIiA9PiAiMTBweCIsCgkJCQkJImhlaWdodCIgPT4gIjUwcHgiLAoJCQkJCSJtYXJnaW4iID0+ICIxMHB4IiwKCQkJCV0sCgkJCQkiQHdpZHRoIiA9PiAiMTBweCIsCgkJCQkiQGRlZmF1bHRIZWlnaHQiID0+ICI1MHB4IiwKCQkJXSwKCQkJJHBhcnNlci0+Z2V0VmFyaWFibGVzKCkKCQkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VmFyaWFibGVzKCkgewoJCSRsZXNzQ29kZSA9ICcKCQkJLy8gUnVsZSA+IFF1b3RlZAoJCQlAc29tZV9zdHJpbmc6ICJmb28iOwoKCQkJLy8gUnVsZSA+IERpbWVuc2lvbgoJCQlAc29tZV9udW1iZXI6IDEyMzsKCgkJCS8vIFJ1bGUgPiBEaW1lbnNpb24KCQkJQHNvbWVfbnVtYmVyX2RvdDogMTIzLjE7CgoJCQkvLyBSdWxlID4gRGltZW5zaW9uCgkJCUBzb21lX3VuaXQ6IDEycHg7CgoJCQkvLyBSdWxlID4gRGltZW5zaW9uCgkJCUBzb21lX3VuaXRfb3A6IDJweCArIDNweDsKCgkJCS8vIFJ1bGUgPiBDb2xvcgoJCQlAc29tZV9jb2xvcjogI2Y5ZjlmOTsKCgkJCS8vIFJ1bGUgPiBVcmwgPiBRdW90ZWQKCQkJQHNvbWVfdXJsOiB1cmwoImp1c3QvYS90ZXN0LmpwZyIpOwoKCQkJQHNvbWVfbGlzdF9jb21tYTogMSwgMiwgZm9vLCBiYXIgYmF6LCA0MjsKCgkJCUBzb21lX2xpc3RfY29tbWFfZG90OiAxLCAyLjEsIGZvbywgYmFyIGJheiwgNDI7CgoJCQlAc29tZV9saXN0X3NwYWNlOiBmb28gYmFyIGJhejsKCQknOwoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCk7CgkJJHBhcnNlci0+cGFyc2UoICRsZXNzQ29kZSApOwoJCSRwYXJzZXItPmdldENzcygpOwoKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKAoJCQlbCgkJCQknQHNvbWVfc3RyaW5nJyA9PiAnImZvbyInLAoJCQkJJ0Bzb21lX251bWJlcicgPT4gJzEyMycsCgkJCQknQHNvbWVfbnVtYmVyX2RvdCcgPT4gMTIzLjEsCgkJCQknQHNvbWVfdW5pdCcgPT4gJzEycHgnLAoJCQkJJ0Bzb21lX3VuaXRfb3AnID0+ICc1cHgnLAoJCQkJJ0Bzb21lX2NvbG9yJyA9PiAnI2Y5ZjlmOScsCgkJCQknQHNvbWVfdXJsJyA9PiAndXJsKCJqdXN0L2EvdGVzdC5qcGciKScsCgkJCQknQHNvbWVfbGlzdF9jb21tYScgPT4gWyAnMScsICcyJywgJ2ZvbycsICdiYXIgYmF6JywgJzQyJyBdLAoJCQkJJ0Bzb21lX2xpc3RfY29tbWFfZG90JyA9PiBbIDEuMCwgMi4xLCAnZm9vJywgJ2JhciBiYXonLCA0Mi4wIF0sCgkJCQknQHNvbWVfbGlzdF9zcGFjZScgPT4gJ2ZvbyBiYXIgYmF6JywKCQkJXSwKCQkJJHBhcnNlci0+Z2V0VmFyaWFibGVzKCkKCQkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0UGFyc2VkRmlsZXMoKSB7CgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigpOwoJCSRiYXNlRGlyID0gTGVzc19QYXJzZXI6OldpblBhdGgoIHJlYWxwYXRoKCBzZWxmOjokZml4dHVyZXNEaXIgLiAnL2xlc3MucGhwL2xlc3MnICkgKTsKCQkkcGFyc2VyLT5wYXJzZUZpbGUoICRiYXNlRGlyIC4gJy9pbXBvcnRzLmxlc3MnICk7CgkJJHBhcnNlci0+Z2V0Q3NzKCk7CgoJCSRmaWxlcyA9ICRwYXJzZXItPmdldFBhcnNlZEZpbGVzKCk7CgoJCSRub3JtYWxGaWxlcyA9IGFycmF5X21hcCggc3RhdGljIGZuICggJGZpbGUgKSA9PiBzdHJfcmVwbGFjZSggJGJhc2VEaXIsICcnLCAkZmlsZSApLCAkZmlsZXMgKTsKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzQ2Fub25pY2FsaXppbmcoCgkJCVsKCQkJCScvaW1wb3J0cy5sZXNzJywKCQkJCScvaW1wb3J0cy9iLmxlc3MnLAoJCQkJJy9pbXBvcnRzL2EubGVzcycKCQkJXSwKCQkJJG5vcm1hbEZpbGVzCgkJKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHByb3ZpZGVTZXRJbXBvcnREaXJzKCkgewoJCXlpZWxkICdmcm9tLWltcG9ydGRpcicgPT4gWwoJCQknZnJvbS1pbXBvcnRkaXIubGVzcycsCgkJCVsKCQkJCV9fRElSX18gLiAnL2RhdGEvaW1wb3J0ZGlyLXNvbWV2YXJzLycgPT4gJycsCgkJCV0sCgkJCSdkaXZ7Zm9udC1mYW1pbHk6bW9ub3NwYWNlfScKCQldOwoJCXlpZWxkICdmcm9tLWltcG9ydGRpci1maWxlJyA9PiBbCgkJCSdmcm9tLWltcG9ydGRpci1maWxlLmxlc3MnLAoJCQlbCgkJCQlfX0RJUl9fIC4gJy9kYXRhL2ltcG9ydGRpci1zb21ldmFycy8nID0+ICcnLAoJCQldLAoJCQknZGl2e2ZvbnQtZmFtaWx5OmZhbnRhc3l9JwoJCV07CgkJeWllbGQgJ2Zyb20taW1wb3J0ZGlyLWZpbGVub3N1ZmZpeCcgPT4gWwoJCQknZnJvbS1pbXBvcnRkaXItZmlsZW5vc3VmZml4Lmxlc3MnLAoJCQlbCgkJCQlfX0RJUl9fIC4gJy9kYXRhL2ltcG9ydGRpci1zb21ldmFycy8nID0+ICcnLAoJCQldLAoJCQknZGl2e2ZvbnQtZmFtaWx5OmZhbnRhc3l9JwoJCV07CgkJeWllbGQgJ2Zyb20taW1wb3J0Y2FsbGJhY2sgKGJhY2tjb21wYXQpJyA9PiBbCgkJCSdmcm9tLWltcG9ydGNhbGxiYWNrLmxlc3MnLAoJCQlbCgkJCQlfX0RJUl9fIC4gJy9kYXRhL2ltcG9ydGRpci1zb21ldmFycy8nID0+ICcnLAoJCQkJc3RhdGljIGZ1bmN0aW9uICggJHBhdGggKSB7CgkJCQkJLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBob3cgcGVvcGxlIHVzZWQKCQkJCQkvLyBsZXNzLnBocCA0LjAuMCBhbmQgZWFybGllci4KCQkJCQlpZiAoICRwYXRoID09PSAnQHdpa2ltZWRpYS9leGFtcGxlLmxlc3MnICkgewoJCQkJCQlyZXR1cm4gWwoJCQkJCQkJTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCggX19ESVJfXyAuICcvZGF0YS9pbXBvcnRkaXItc29tZXZhcnMvY2FsbG1lLmxlc3MnICksCgkJCQkJCQlMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCBkaXJuYW1lKCAkcGF0aCApICkKCQkJCQkJXTsKCQkJCQl9CgkJCQkJcmV0dXJuIFsgbnVsbCwgbnVsbCBdOwoJCQkJfQoJCQldLAoJCQknZGl2e2ZvbnQtZmFtaWx5OkNhbGwgTWUgTWF5YmV9JwoJCV07CgkJeWllbGQgJ2Zyb20taW1wb3J0Y2FsbGJhY2sgKG5ldyknID0+IFsKCQkJJ2Zyb20taW1wb3J0Y2FsbGJhY2subGVzcycsCgkJCVsKCQkJCV9fRElSX18gLiAnL2RhdGEvaW1wb3J0ZGlyLXNvbWV2YXJzLycgPT4gJycsCgkJCQlzdGF0aWMgZnVuY3Rpb24gKCAkcGF0aCApIHsKCQkJCQlpZiAoICRwYXRoID09PSAnQHdpa2ltZWRpYS9leGFtcGxlLmxlc3MnICkgewoJCQkJCQlyZXR1cm4gWwoJCQkJCQkJX19ESVJfXyAuICcvZGF0YS9pbXBvcnRkaXItc29tZXZhcnMvY2FsbG1lLmxlc3MnLAoJCQkJCQkJbnVsbAoJCQkJCQldOwoJCQkJCX0KCQkJCX0KCQkJXSwKCQkJJ2Rpdntmb250LWZhbWlseTpDYWxsIE1lIE1heWJlfScKCQldOwoJfQoKCS8qKgoJICogQGRhdGFQcm92aWRlciBwcm92aWRlU2V0SW1wb3J0RGlycwoJICovCglwdWJsaWMgZnVuY3Rpb24gdGVzdFNldEltcG9ydERpcnMoIHN0cmluZyAkaW5wdXQsIGFycmF5ICRpbXBvcnREaXJzLCBzdHJpbmcgJGV4cGVjdCApIHsKCQkkZmlsZSA9IF9fRElSX18gLiAnL2RhdGEvY29uc3VtZS1zb21ldmFycy8nIC4gJGlucHV0OwoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCBbCgkJCSdjb21wcmVzcycgPT4gdHJ1ZSwKCQldICk7CgkJJHBhcnNlci0+U2V0SW1wb3J0RGlycyggJGltcG9ydERpcnMgKTsKCQkkcGFyc2VyLT5wYXJzZUZpbGUoICRmaWxlICk7CgoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoICRleHBlY3QsICRwYXJzZXItPmdldENzcygpICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RPcGVyYXRpb25FeGNlcHRpb24oKSB7CgkJJGxlc3NGaWxlID0gX19ESVJfXyAuICcvZGF0YS9leGNlcHRpb24vZjIubGVzcyc7CgoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKCQkkcGFyc2VyLT5wYXJzZUZpbGUoICRsZXNzRmlsZSApOwoKCQl0cnkgewoJCQkkcGFyc2VyLT5nZXRDc3MoKTsKCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZiggTGVzc19FeGNlcHRpb25fUGFyc2VyOjpjbGFzcywgJGUgKTsKCQkJJHRoaXMtPmFzc2VydEVxdWFscygKIk9wZXJhdGlvbiBvbiBhbiBpbnZhbGlkIHR5cGUgaW4gZjIubGVzcyBvbiBsaW5lIDQsIGNvbHVtbiAyCjJ8IEBiYXI6ICd3b3JsZCc7CjN8IGRpdiB7CjR8ICBjb250ZW50OiAoQGZvbykgKiBAYmFyOwo1fCB9IiwKCQkJCSRlLT5nZXRNZXNzYWdlKCkKCQkJKTsKCQl9CgoJCSRsZXNzRmlsZSA9IF9fRElSX18gLiAnL2RhdGEvZXhjZXB0aW9uL2YzLmxlc3MnOwoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCk7CgkJJHBhcnNlci0+cGFyc2VGaWxlKCAkbGVzc0ZpbGUgKTsKCgkJdHJ5IHsKCQkJJHBhcnNlci0+Z2V0Q3NzKCk7CgkJfSBjYXRjaCAoIEV4Y2VwdGlvbiAkZSApIHsKCQkJJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoIExlc3NfRXhjZXB0aW9uX1BhcnNlcjo6Y2xhc3MsICRlICk7CgkJCSR0aGlzLT5hc3NlcnRFcXVhbHMoCiJPcGVyYXRpb24gb24gYW4gaW52YWxpZCB0eXBlIGluIGYzLmxlc3Mgb24gbGluZSA1LCBjb2x1bW4gMgozfCAKNHwgZGl2IHsKNXwgIGNvbnRlbnQ6IEBmb28gKiBAYmFyOwo2fCB9IiwKCQkJCSRlLT5nZXRNZXNzYWdlKCkKCQkJKTsKCQl9CgoJCS8vIEZpeGVkIGluIExlc3MuanMgNC4xLjEgKFQzODYwNzQpCgkJJGxlc3NGaWxlID0gX19ESVJfXyAuICcvZGF0YS9leGNlcHRpb24vVDM4NjA3NC1maXgtcGFyZW50aGVzaXplZC1vcGVyYXRpb24ubGVzcyc7CgkJLy8gVGhpcyBmYWlscyBvbmx5IHdoZW4gbWF0aCBpcyBzZXQgdG8gInBhcmVucy1kaXZpc2lvbiIKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCBbICdtYXRoJyA9PiAicGFyZW5zLWRpdmlzaW9uIiBdICk7CgkJJHBhcnNlci0+cGFyc2VGaWxlKCAkbGVzc0ZpbGUgKTsKCQl0cnkgewoJCQkkcGFyc2VyLT5nZXRDc3MoKTsKCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZiggTGVzc19FeGNlcHRpb25fUGFyc2VyOjpjbGFzcywgJGUgKTsKCQkJJHRoaXMtPmFzc2VydEVxdWFscygKIk9wZXJhdGlvbiBvbiBhbiBpbnZhbGlkIHR5cGUgaW4gVDM4NjA3NC1maXgtcGFyZW50aGVzaXplZC1vcGVyYXRpb24ubGVzcyBvbiBsaW5lIDMsIGNvbHVtbiAyCjF8IHAgewoyfCAJQGE6IDIwcHggLyAyOwozfCAJbWFyZ2luOiAyICogQGE7CjR8IH0iLAoJCQkJJGUtPmdldE1lc3NhZ2UoKQoJCQkpOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdE9wdGlvblJvb3RwYXRoKCkgewoJCS8vIFdoZW4gQ1NTIHJlZmVycyB0byBhIFVSTCB0aGF0IGlzIG9ubHkgYSBoYXNoIGZyYWdtZW50LCBpdCBpcyBhCgkJLy8gZHluYW1pYyByZWZlcmVuY2UgdG8gc29tZXRoaW5nIGluIHRoZSBjdXJyZW50IERPTSwgdGh1cyBpdCBtdXN0CgkJLy8gbm90IGJlIHJlbWFwcGVkLiBodHRwczovL3BoYWJyaWNhdG9yLndpa2ltZWRpYS5vcmcvVDMzMTY0OQoJCSRsZXNzQ29kZSA9ICcKCQkJZGl2IHsKCQkJCS0tYTEwOiB1cmwoIi4vaW1hZ2VzL2ljb24uc3ZnIik7CgkJCQktLWExMTogdXJsKCIuL2ltYWdlcy9pY29uLnN2ZyNteWlkIik7CgkJCQktLWEyMDogdXJsKGljb24uc3ZnKTsKCQkJCS0tYTIxOiB1cmwoaWNvbi5zdmcjbXlpZCk7CgkJCQktLWEzMDogdXJsKCNteWlkKTsKCQkJfQoJCSc7CgoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoKTsKCQkkcGFyc2VyLT5wYXJzZSggJGxlc3NDb2RlLCAnL3gvZmFrZS5jc3MnICk7CgkJJGNzcyA9IHRyaW0oICRwYXJzZXItPmdldENzcygpICk7CgoJCSRleHBlY3RlZCA9IDw8PENTUwpkaXYgewogIC0tYTEwOiB1cmwoIi94L2ltYWdlcy9pY29uLnN2ZyIpOwogIC0tYTExOiB1cmwoIi94L2ltYWdlcy9pY29uLnN2ZyNteWlkIik7CiAgLS1hMjA6IHVybCgveC9pY29uLnN2Zyk7CiAgLS1hMjE6IHVybCgveC9pY29uLnN2ZyNteWlkKTsKICAtLWEzMDogdXJsKCNteWlkKTsKfQpDU1M7CgkJJHRoaXMtPmFzc2VydEVxdWFscyggJGV4cGVjdGVkLCAkY3NzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RNb2RpZnlWYXJzKCkgewoJCSRsZXNzQ29kZSA9IDw8PENTUwoJCQlkaXZ7CgkJCQlib3JkZXItd2lkdGg6IEBib3JkZXItd2lkdGg7CgkJCQlsaW5lLWhlaWdodDogdW5pdChAbGluZS1oZWlnaHQsIHB4KTsKCQkJCWJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzOwoJCQkJbWFyZ2luOiBAbWFyZ2luOwoJCQl9CgkJCUNTUzsKCQkkZXhwZWN0ZWQgPSA8PDxDU1MKCQkJZGl2IHsKCQkJICBib3JkZXItd2lkdGg6IDsKCQkJICBsaW5lLWhlaWdodDogMXB4OwoJCQkgIGJvcmRlci1yYWRpdXM6IDsKCQkJICBtYXJnaW46IDsKCQkJfQoJCQlDU1M7CgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcjsKCQkkcGFyc2VyLT5Nb2RpZnlWYXJzKCBbICdib3JkZXItd2lkdGgnID0+IGZhbHNlLCAnbGluZS1oZWlnaHQnID0+IHRydWUsICdib3JkZXItcmFkaXVzJyA9PiBudWxsLCAnbWFyZ2luJyA9PiAnJyBdICk7CgkJJHBhcnNlci0+cGFyc2UoICRsZXNzQ29kZSApOwoJCSRjc3MgPSB0cmltKCAkcGFyc2VyLT5nZXRDc3MoKSApOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCAkZXhwZWN0ZWQsICRjc3MsICdzdGF0aWMgY2FsbGJhY2snICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RPcHRpb25GdW5jdGlvbnMoKSB7CgkJJGxlc3NDb2RlID0gPDw8Q1NTCgkJCSN0ZXN0IHsKCQkJICBib3JkZXItd2lkdGg6IGFkZCg3LCA2KTsKCQkJfQoJCQlDU1M7CgkJJGV4cGVjdGVkID0gPDw8Q1NTCgkJCSN0ZXN0IHsKCQkJICBib3JkZXItd2lkdGg6IDEzOwoJCQl9CgkJCUNTUzsKCgkJLy8gdGVzdCB3aXRoIHN0YXRpYyBjYWxsYmFjawoJCSRvcHRpb25zID0gWyAnZnVuY3Rpb25zJyA9PiBbICdhZGQnID0+IFsgX19DTEFTU19fLCAnZm5BZGQnIF0gXSBdOwoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoICRvcHRpb25zICk7CgkJJHBhcnNlci0+cGFyc2UoICRsZXNzQ29kZSApOwoJCSRjc3MgPSB0cmltKCAkcGFyc2VyLT5nZXRDc3MoKSApOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCAkZXhwZWN0ZWQsICRjc3MsICdzdGF0aWMgY2FsbGJhY2snICk7CgoJCS8vIHRlc3Qgd2l0aCBjbG9zdXJlCgkJJHBhcnNlciA9IG5ldyBMZXNzX1BhcnNlciggWwoJCQknZnVuY3Rpb25zJyA9PiBbCgkJCQknYWRkJyA9PiBzdGF0aWMgZnVuY3Rpb24gKCAkYSwgJGIgKSB7CgkJCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkYS0+dmFsdWUgKyAkYi0+dmFsdWUgKTsKCQkJCX0KCQkJXQoJCV0gKTsKCQkkcGFyc2VyLT5wYXJzZSggJGxlc3NDb2RlICk7CgkJJGNzcyA9IHRyaW0oICRwYXJzZXItPmdldENzcygpICk7CgkJJHRoaXMtPmFzc2VydFNhbWUoICRleHBlY3RlZCwgJGNzcywgJ2Nsb3N1cmUnICk7CgoJCS8vIHRlc3QgZGlyZWN0bHkgd2l0aCByZWdpc3RlckZ1bmN0aW9uKCkKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCk7CgkJJHBhcnNlci0+cmVnaXN0ZXJGdW5jdGlvbiggJ2FkZCcsIFsgX19DTEFTU19fLCAnZm5BZGQnIF0gKTsKCQkkcGFyc2VyLT5wYXJzZSggJGxlc3NDb2RlICk7CgkJJGNzcyA9IHRyaW0oICRwYXJzZXItPmdldENzcygpICk7CgkJJHRoaXMtPmFzc2VydFNhbWUoICRleHBlY3RlZCwgJGNzcywgJ3JlZ2lzdGVyRnVuY3Rpb24nICk7CgoJCS8vIHRlc3Qgd2l0aCBib3RoIHBhc3Npbmcgb3B0aW9ucyBhbmQgdXNpbmcgcmVnaXN0ZXJGdW5jdGlvbigpCgkJJGxlc3NDb2RlID0gPDw8Q1NTCgkJCSN0ZXN0ewoJCQkgIGJvcmRlci13aWR0aDogYWRkKDIsIDMpOwoJCQkgIHdpZHRoOiBpbmNyZW1lbnQoMTUpOwoJCQl9CgkJCUNTUzsKCQkkZXhwZWN0ZWQgPSA8PDxDU1MKCQkJI3Rlc3QgewoJCQkgIGJvcmRlci13aWR0aDogNTsKCQkJICB3aWR0aDogMTY7CgkJCX0KCQkJQ1NTOwoJCSRvcHRpb25zID0gWyAnZnVuY3Rpb25zJyA9PiBbICdhZGQnID0+IFsgX19DTEFTU19fLCAnZm5BZGQnIF0gXSBdOwoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoICRvcHRpb25zICk7CgkJJHBhcnNlci0+cmVnaXN0ZXJGdW5jdGlvbiggJ2luY3JlbWVudCcsIFsgX19DTEFTU19fLCAnZm5JbmNyZW1lbnQnIF0gKTsKCQkkcGFyc2VyLT5wYXJzZSggJGxlc3NDb2RlICk7CgkJJGNzcyA9IHRyaW0oICRwYXJzZXItPmdldENzcygpICk7CgkJJHRoaXMtPmFzc2VydFNhbWUoICRleHBlY3RlZCwgJGNzcywgJ2JvdGgnICk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmbkFkZCggJGEsICRiICkgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGEtPnZhbHVlICsgJGItPnZhbHVlICk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmbkluY3JlbWVudCggJGEgKSB7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkYS0+dmFsdWUgKyAxICk7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHP/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAMcAAABRCAYAAABmOrKYAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gkBDQU4DOENYwAAIABJREFUeNrtfXecFdXZ//dMvXPr9sJWWKQsLF1ARAWxt2iMGs2rsUWToL9oLIklMYmvJcVEzRuN0ViSGIM19oYlIl2QhYWFhQUWWJbdZfutU875/XHnzt4y9+5diuL7OnyG3Xt35syZmfN9yvd5znMIvsDNMIzJjLEZlNIpjLEajuNKOI7zJh/HGLM9nxCS8JnjODz+j9dx2+9frMHX21due/Tuq5svOPM4GIYBxlhE07ROWZZbnnrqqQ29vb31HR0dK37zm98MfFn9Ew73BTRNkwghFxBCrqWUTqOUumIDnVIKSikOFBySJMEhC/D53BhTOzlDL8jgD5Lh70nfcITYfEsyX4MDQAHCkfSHHuzGonvsORFCzN/ZkCdS83zzN5uGM1wz+nKGOCDxK2b9jQx2HMCWTY1gRKxhjCISiYAQAo7joGkarrrqKgDAnj17ms8888znFy5c+ERDQ8P2/1XgYIxNo5T+wTCM43Vdt6T9UBshJOu/R1QNfX1+bN26Nfkgc8jGjuVScBBtx9xJ6jW42NkJXebiGkk8N6XfVh8AkCHum2QGa9xDBRhNGY8s8YP5OR4wbHBsU4DCSGpj8HxGaVKLNK4Zag8ImizUaKqgM0HJAPT5A1A1FYRw1nOLCcpQKAQAKCkpqSkvL79t5cqV1zzyyCP33nLLLQ9aDX+VwaFp2sWGYfxF13W3nXY4VBtHCHgO4JIHV9xA5QhJ1B42g5DEA4REBzaXfAzhbAZu3GeWqKEI4RIBwlgSSJgtmNILZWYeEwd0BjBGLSEQk9Qk5WYJGBgIARjHwMf+RmMwIIPg40jSZXnzWtRqOfVFmNejsbN4ABSUxIHa/HNUKw8tBDVNg6qqkCQp/+abb35g0qRJs88888zv6bre90WAgzscjeq6/g0Az6iqekiAQQixdlvNk2JRMFPCInWnsP8+vh1GosfF74gOwlTzgaY2wAaPZ9QwpTAblLyxdljSTqn9HjuHMTBmmNKXRn9nutVJhri2bW6MgIBQmO3GSfuEHeZ1hnpGNs+VIkVzRO+LWc2DkcT3kMW71zQNoVAIp5xyygUfffTRcwA8X0lwaJpWxRh7VNM0MSvVxfOQJClltzNtY5ImBhTrO/N5p33YMVsiLapYwr/475JHAWMUQ6KOJAKTmQIiplhiA/vgbNbE0cUS/mMJ98gYNXcDlBlx90ujfbVFQZxkIBaSUvuRAIrBcxljlknFbPQsAyCLUcNFErMaKgiFQpg7d+7p9957791fVbPqvzVNK81GIoiiiJ6eHiz7bD2WrWpA47bdCEZUzD16Eu688XKoqjqk6o0XabF3Fz0n7kVbpgyFjRMR5zDatR6VuKDZiBIW1wwbtK8YiwKEmH1hCe4xSJYyiqURt4nAGOrBJ2OHpTxKlsasT3X67a5HE45jyQBGFDSKQ8Lzb32KSKgPR08Zi6NGVcIwKDRNH9LUuummm77/2GOPvdzS0vLJVwYckUikjlJ6IWMs46DmOA5gDP/zxHP463Nvo3lPN3hRAS/J0CMMBUV9w3LQhxoN0XFtDlYGUxJyqdol6TosGTzmIYxRewUcG3gkGWyDJgsjLMUbYDDS+DEs6Xd7YZAeGHRwgMZuIVn6ExuTNFsSiyafTBPaZxlwKUsilq3dhsWffo48j4xzFszATdd8EyOKCxFWtUwmOxRFkW+99dbvLVy4cCkA4ysBDsbYtyml0lDHiaKIu+7/Ex545CW4iytRWDoyOuhAEAxGoCjK8EAR77CyZOaJmWOVxItGEyDxWoRZgzF+/BAy2DxhJHFwkZgbbIItARPMXivFTA3THLSUDUk3GlkKN5pAMKWlVmkikwSWcDxLdtZY8nnMxp9jWSAmhTtLq4UkSYIsF0DTdTz96kqs3dSCZ35/I8pLCqAOoUHmzZs3D0AlgB1HvM/R399PAJzMWObHIkkiPvu8AY/+/S3kltfA7faaEidm0yaq7qEAwhhAQcEMZjqqzLJ3melYUgCUMXNH0k4H/0ZTx5tNl9JwAZl8mnjP3nJErMZjfUZK31PvhcXayxDXiDrq5jmUpQESS/UbYs8kng+wnpN5ZcrM+FSMFoj/Z3kycf4bBvsClqK5GDPA8wQ5OT6s39qOx/+1GBzPZaT8I5EIamtrR4wZM2bmV8IhJ4RUABg59HEcXnt3CcI6D1mWoyaFxbTSLKRSBs1B7VgTk31JEYLMXuJRluKkxgZkwkuOOecmDcNMJgkWY5SpsywuZsHi2sjmRpm9h2uZNUZKvMNyvOPvy2LIBtuhzAZ0cU5+gi9hUsgp4I2B0JIB8fGTZEERLywMOJ0OLPlsC3r6/OC49ELRZEC5OXPmTP1KgIPn+XIABZmkPc/ziIRD2Ni0E5LTHZVGNG6PfWZkGGZVPIuUyJQkOJCDb86Gl0x+WWllcgp2WdI/K+rP7PZ4zA2Dyk0Q47Fumm3GXYvR+LaS6VkbQiqdGZbEwjFm6gRqWMxXZk0Jm+cUNUPtbju28zyH1vYetO/vs8lOSCYGgLlz59YAcB7x4BBF0UcpzTigCQGCoTDaOnohCnJa6T1szWEbe0hmWLJ1NKPMEokHUxz/j5TvbQZgTEqmXDadastaBqSGVOKEy6ANiZS4hfV7vPZhMYfEAGX2QSCGNI58hocZr2Ht34H9OyFg0HUD+zp7wfFDD01JklwAHF8FhzwroFHGoBl08ObJoQCHre61esQYN0jvskzEbYyO5eKDEiZRZVK6sb5Ru0ZIouZJJpgSjjeG0IycjURPlJwpz8nispOPs5MGg0E6ylgcbZ3oUjODpe1H6nuy8ylYXH+GbsMwKAb8Qds3ZNM2w2HcDhk4htNPLoU5Gi7XkXptkjA44qKwKbA1GanYYLdDCqPQzRdJDWY5pLG+8xwHno+mVPAcSQQ1IbZ3YV0rDkeMsfRygBgWwmK3FSUNos6wQQ3z1qJZAySuLyTlhgwwOkivW8E5yxdjGZ98zBfRDSP6WI3BaD8hUWqe5zkQM/hJiHWD6QIyGX1LLikP7TBj4Iuhco+YLZlFpRSMS8xpiuZJJT50ajCEVBUAgVuRoSgyivO9yPW64HU5TKZEQ0f3ADp6/AiGNASCERCOQJHEaCYuY7YBBJaEQpJZfQE0qmEjERWSKMLhEOF1yCjIdSHHq8CtOMBMqd/VPQB/SEVndz80nSIUjiCiGZBEAaLAgyPMXvKSeBIg0SwyDAORSJROdTpEyA4JhbkeeN0O5HpdVtf7+gPwhyLo7OlHKBRBOKwiFFEh8AIkgU/KTs7WKmC2WugrD474NOqsDGiGg5cSLN0X8ZqBJpksg4aSrlFEVA05PifmzRqH2VNGY/LYCowsL4JTkSEKHASBM601hoiqIxhW0dyyD/WNe/Dp2i1YvWEnAkEdDocInuNsbCmWoCZZHHjjJT0Dg6oaMAwDNRWFmDV5FI6eWI0xI4sxojgXsiRCEnkIPG+ZKqqqw6CAPxjG7rYuNLe0o3F7GzZt24vNzW3oHfCDMgaXQ7auTdNIcF0zEFE15Oe6sGB2LWZOGoW6sRWoLiuCx6WA4wBJFKzOa5oO3aBQNQN727uwY08HGpv3YvO2PdiwZRfau/oRjqhQFDmq2VIeyzB48/8zmiOLZzBUpD19g8SejOEAUA7gKBiLRun9IRXlRTm48MzZ+ObJM1BTVZzUh8T0cI4jcCoynIqMglwPZk05CtdcPB/1jTvx5Euf4O0lGxEMa1AcUnZIjvOBdEoRjqiYPKYS3z3vGJw6dwK8bueQ1LgsR6/lVCQU5XsxfWKUUdd1HXv29WDp2i1YvGwjVnzeDJ0iav7ELh6Xah4MR1Cc78HFZ52IC8+YheryooR4hKHTpAHNIIo8RIGH0yEhL6cSdeOqcc5JgGHo6OwewNqGZnywfAM+WLYBPX3BRIqWHRkg+MLBkd3ATsNWMXoQWsN+AIKY+VHRyQzQDA2MAf91zhzcePlpGFGca3HoGSdbsVTHkuM4TB5fjYfurMa3P9+C/37kVazfug+KQ8agNUfSd5EwhCIanLKIG64+A1dfcBxkSTRNPSPx0CyFBWMMPM+hurwQ1eWFOHfBNJx86V1o7dYgScKglmYApQYimoFzTpyGn157NqrLCy1wJaSDsAyMH2Mw4jKwOUJQmOfBGfNn4Iz5M/D/7nwQ/3zrM3jc7vQsV4wtY/i/rTlidN/QEXA2tIlm0pjx7mQCs5Q0mSkc0ZDrdeJXN3wL550y02RJjAzSmQxBjFFr+B8zdSwWPXgd7nroBSx6Zw0URQHP8Wn5/1h/ivK8eOCnF+K4GWOH7E/2hB0DYIDnefT2DaCtrQ28UhjHQpmRbkZx81Wn48YrzrBAcbCOMGUMMBgMQ4UkSdi1e6+ZfEnSawx6ZGmTLwccLJlpSlK1LDtwWS/BPlqRQLDGbJdQWEX1iAL88RdXYtqEajBK07aRraROSM02DLhdTvzutkuR41Hw50WfwuV2mvOHuHj7DgCg6Qa8LhmP3f1dTB1feUhAEet3/ODetn03wiqFy8lZwGCMQdV0/OSas3H9ZaeCUWpJf1tK9gD8S57n0d3Tg73t3RBFKWPai/WyyJEBDu5LAwdjADUAathHtIfQOInNGSk5VclAYYwhHFZRmOfFE/ddg2kTqmEYxkEBw+5aMalPCIefXX8hLjptMvwD/qhmM/ToxB+qW/EFTTNw6/fOOKTAsBvMazY0IaxHeVZmAiMUVnHy3LooMBhNMIuGiC8MbW7FgaNl9160tHaapiJL8Oes3TAncxn0iDGrDik4spE2SaPPJMVpVoMwU3vpXmBsp5SC4zg88NPvYPzo8iEHYjbAyLTF2v/VDd/GpJpCBALhlBhDOBzBcTNG47/OmZMmQJbhxXFcwp7+uOh9LFuzEbzgMCdiRf2DXJ8Lt117jtlfmvW9xWZkxvZkLZW8rfhsA0JhHbzA25tSNHPcI8M7YF8VcNBM0jSBQ6dGnAll+gwwcGCJh7HUCCM1lyluCwSDWPidk7Dg2Loh/Yvkl2+38zw/ZM8Mw4Db7cJdPzofAlGjvgllCTz+d8+bG+cfZBYOPM9b16fUQCgYQigUgqaqqX20ZkpyaNnditXrt8HtdkclMwFCERWnHleHMSNLYRh6VkIgNkuT5whCoZC18xyBLMuDf49L/WCM4q0PVkJwuMz7iNMU1D7hK1vSQRAE+SvhczDGHENJVgICVdXR2d0LTvAlxmMpZ/kQjA0nZkKSaam4j1GARFQddWOrcN1lp2V08mPfxSRxfUMjPl72OT7fuAMdXX3gOA6VZUU4bmYdzlgwGz6vZ0gNRCnFMdMn4rwFU/DPt9bC5/EAFFB1HZUluZhWW53VwBQEAbqu4Y33luDfb3+KlrYuUGYCmXDwepwYWVGE2dPGY8qEGowZWQGej77e195dgt6AgQI3D5Bo7pgoEMyfVWsTamC2z0UURaz8bB3+9e8PUN+4HWF1MP3F5XSgtDAP0yaOxqxpEzB2dAVyc6Ps34aNW7B6/TY43YWgcdoJaXwYyigC4XBW2trn8+UCkI54cGiaNsZuwCUMRAIM+ANQNQOiSGwUD7EtYpCZsYqTPLZMCIFBKX5wyclwOR0JTExymzHp3NfXjzvvfRT/enMZVCpAVNzgeAEc4fDZlk4senstxv/jXfzmtssxZ8bEjACJvdDLLzgRLy9eDZ3q4DgOqqZjzKhSFOR5U85PHgQcR6CqEVx70/146Z3VEN15kGTFAnFUAQ9g2Ya9eObfy5HnVTB2ZDFOnzcdJxwzCf985QMobp8lMChjyPW6MaOuJsGcS2cWi6KIPz/zPH7y348DgguS4oYgCHECIIjPmzrw2kfrIfEvo6ayELOmjsGl55+Cp597DcEIkO+TQKmekXInhEDVdOxp6wIh/JDmnQkO+YgHB8dx09PdTGwg8jyPnS17oOv0kMKdsbi09CSqI6LqmDS2AmcvmJ4wEOzAxvM8evr6cdHVt2PF5y3ILamAT5ISKu4AAPF40bzXjyt/8iie+e1CzJpWmxEglFJMqj0KcyaNwsdrd8HldAKMoqo0Pys/huN4vPn+f/DSO6tRUF4Dnhesog2pUt4Lw6D4fGsXVm18Ha4nXoeqG3C586y5HoauozjfDbdTGtIMFgUBe9va8cCjz8PhKYbb601PnJhE4472IDb/ewUWvbkC1NDhzS8AZfoQsSiTfTQYdu3tBDO0jL6MqqoYN25coc/nK+/r62s5Yn2OcDjs5Xn+mKEdOQ71m7YhoqZLbWdpabyMbSenksfZsKqm4dyTZ0KWpQSnM51Jdce9j2DF5y0orBgFQRSjgDLnTMTsZUoNuJwy+kI67vj9v+D3BzL6ILG+n3niDKiRkGVOFhd4snaCm1v2gpOc4DjOKroWPxclNtGKMQpCGJyKA74cH4jsheLOjZbwMX0xw6DIz/FAlkRkEmgAQDgOHfu70NUfgcvjiWOY4ubfGEZ0pwZgGJBEER6PB4LshqTkgCc87Gv9xKX+mxSuJPLYsKUFvQPBjBOeNE1DYWGhp66ubvIR7ZBTSs8yDKM80wvmCEEkHMIHSz6DIDvMvDybXBprkA+L1Y97oYM7pQbyvAoWHDsxK/Zn1Zr1eOGNpcgtLsdgSZuk6aZxg8fpkLF+axteeW9lVr2cNXUc8rwSVF0HBYUo8NmxegBqx4wELwpQNX1wOjCoOc03+jnld0pBYNa2Sno2osDHpTelp8EpNVBSVIDysiIEAkHz7zZFveI0R6wqIwEzU1VYRms4/ktJErBtx15sbt5tle7JtC1cuPCsw+V3HDQ4IpFIriAIdw7lmDoUBUtXrcPKdVvgdnsOKBLKMtRpjU3BjJ/8EwmrmDSuCmNHlYNSI61JFfv84usfQqViVGPQVPaLUSNl5iLPcfj34jUWM53JtKquKMWIQi8MTQVYlDHKZjMMAycffzS+d9ECGFoEAwNBaKoGahhphHFiIbjUbBqKSDgCPU1MIf4567qB4qIC3Hn9Jcj1yugf8ENVjbi0dSRobVuTy27aX4psY9Yz9IcieOGNJYCZip9uC4VC+OY3v3nS5MmTTz/iwKFpmpvjuL9pmjY+03GiKCDg9+Oe3/8V4F3gON5mOmdqpb50UVlmN08gYWBEHXzKKKZOGJVClaY6vBxCwSCWr90Mh9MDSnX7AgfUnCpKaXQ3KDiOoKV1P/Z1dkfvKwOwBVHE+JoR0DQVAMOu1v1ZCwVe4HHfT6/Acw9ej2+fNQtF+W6omoZ+fwCqppnOrmHumWc/8oRHW2dvxhI48ddWVQ0XnrMArz1xJ2666mwcVVUMDkB/XxCRiBY1V1kytc7SWwEkaY+biw/GoMgiXnlnJZZ/tgmK4kgbuzIMAxzHia+88soDZWVlE48YcBiGMQPAW6qqnhVf8jN54PEcB1EUcc/v/4KV65rhy80z5ySn8R2S2NmhbGKLO0+YO27mOnEEdeMqhgwSAkBndy+aduwF4TioqgpV1aFq9rumD+7UoOjs7rMd6AlV/8yfI8uLoEWiVOWutv0pZHTa2JAR9RWOn1WHh++6Gm/+9TY8fu81uOai+RhTVQSOI+j3hxBR9YSZfXYg5wnQsb8P3b39GQOI8c8sFAqhpnIEblt4IV59/HY8+9CNuO0H5+Houho4HTIGgmH4g6Y2ygQE25mfSBkzgXAEP/vd39DWth8OWUo7DsLhMKqqqmpWrVr12hVXXPHtL42tikQiHCFkBs/z39V1/XJN05xW0l2c/ouxU5IoQhAF3PeHv+ChJ16Br6gy4YGwpElJhBAzvYIOg8pNVMuW4UABUeBRUzlk8UVQSqE4ZDz665vBi47B2mwYehmB2EurLCu0fJRMg6y0OA9UUyGLArZsa8WuvR2oHFFkUcyZzEjGGDRNAwFQlO/DGfNm4Ix5MxAMhbGhcSc+Wd2ID5ZvwMatuxHQNDgdsjmrLtG0IjzBQDCEVeuaUFNVNiQwYu84okbNQFkScMz0cThm+nhcd3kEO3Z1YOmazfho+XqsWteE7n4/ZEmyfKrMReOYbXaAQxZR39iCK29+AE/89gaUlRQhELKPfwQCARQUFIx88sknn/vRj3502UMPPfTkyy+//HZfX1/gYMAxrBQvVVXf0nX9FMMw+Exp3YQQOJ0O9PT24a57/4QnF70Hb0E5JFk22RTO9jkRjsAfCOHsk2biqQd+jEgkkpFdkiQJj//9Zdx67zPw5RYk/F1nDEV5Prz2+O0oK82HrhtDVmHMZnmEtCChFDqlGR+oIAh47qV3cO1tj6JwRCUG/AHcd8vFuOqikxPAkW1WBDGLyhFCwJlsmaqpWLWuCc+89BHeW1KPiEZt5pYwBINhnHjMBPzzwR/DYCwlQm8ldqZJREwIEAoCeIGHrutobmnDotc/wYtvLcPejl64FAcyB7xZxtSZQCCMyWPL8Ovbr8SMqbWIhFXoGfxbh8MBQRAQDAa3LVy48Nann376lS/ErFJVdYGqqnymOQ88x0HgObzz/hKcfuF1eOr5D+ErrIAoxZxcZtnsqQPsQFJlzHpMSSqb6gw+jxNORc7K+aeUQtf1A96NIYAR2yRJBOF5MGZAEjn8ddFi7O/qhSAIQ8YcbPtt5klpmgZN08BzHOYePRGP3389nnv4RkwcPQIDA6E4cima3KfIEj5Z1Yi3PloNQRCH1FgZfRJNQygUhq4bGF01Aj+/4RK8/sTP8O0zj0EwGEoyteLTZ6L+WyqhMOh/uJwyNjS14oIf3IP7H/47BgIByJKUti+hUAgDAwNwOp2jZVk+FYD3i/I5Qpmkr8DzaN/fjcsW3onzL/sJGlv6kFtSBkHgbartDebZDOZC0QQnbljLFzAkpENTqsMhCZBE/oiacBbNK9IBFp1uun1XO66/61EMDPghZlltPNOgpTRqeum6jjnTJ+CFR27F2fMnIRgMmZUQjQRn/fbf/gOr1m6EZA44O3NqGJQ+IqqKYDCM8hEFePhXP8Sd158PqqtmPl26gguZi2opioyIRnDvQ4tw6sW3YOmqeogCn5aCjv1uRANbwhcFjozC0aAUXrcLl154Di7+zrfgy8lFKKQm3kRiCbSEkmqMxfJrkPULsorBpfgcDB63AkWRk+onfbmbpunWCi4MgOJw4L2ljbjy5gfRsmcvRFHMWNAsLWNnyzKpyM3x4pF7foiZdRUIxWx2UwCJPIf2/X5cdcvDeO/jFZAkCQLPW1VOhvPMko+LqBpUTcOPrj4f1112KgL+gFm3jlp7mkUeEv8xBk3VEY6omDK1Fguvugg1I8sTtFGGOM1BTUgfFjhcLpfkcrlSSrzEd1KSRJy+YA6e+M0N+Nvvb8Dk8ZUIBEODNi1LHw1iKSUns9AgBBa/zmwq9eEIm6ZsxYOsbGQGr8uJj1Y14dyr/ht/f+FtqJoGURQh8Jwt25StuWOSKFAUBffcehncMoGu0yTHV8D+3jCuuOlh3HbPo2hr74DicMDhkA9IcyVrknA4jBu/dwFmTxmFQCCYjn+3H8cMCIUjUJwSfnbDJXjtyV/gyotORl6OJ7bIpm0fHA5HzMfjD+ZdDetkVVV7u7q6fGPHjh3hcrk4TbPnyWM055iRFTj75NkIBAJYta4JgiBkcIqJJVnH1pTjvNPmRJmZOCAmnysIAtbUb8L7S9bBobgADM4qpJQhx+PEuacdk5ImcXBLGiTTzsOZ083jg09W4eOVjXAmBUJlSURfUMWbH67BJ8vWIBQKoKggB7k+DwRBBMeRhPnt8feQzBTaDdIRpUXYvmMn1jZshyzLSc+RA+F4LFu7BW+8vwxt+/bB41JQXJALhyJDFEVrMGZ7r7G8KEopXIoDToeA195fBklyIGGNQaSndoOhCMaOKsMTv7kR3zrzeDCqIxSKpO2Hw+GAKIpYt27dzscee2zxk08++Wo4HN4GQD2QVzwse+y+++77E4Cnx48ff/zPf/7zH55//vlnqaqaZkVYwB8MwaXIuP+2qyEKHB599h24Xe4MD4WkEn3DqkCSODhUTYOuZ+coxxIj0zMnyZqPpGKbDW2R7t3XGXXIKU25liTwEF1u1Dd1YGX9P/CHJ17FlHGVmH/sFMycOh7jRlfDYS7PoGkaYuVXs4kFAcCF35iHF95aHvdMWRxbR+DzerC/T8XDT7+Lp57/AONGleC4WRNx7NF1qBs/Gvl5OeB4DrpmQNW0rCefhSIRzJszDeNGFqNpdy8UeejKLOFIBJPHj8RTv78JlWUF6O/vTyuLCCHweDxYuXLl7jvuuOOZDz744G0AmwH4AWgHKv8OxFkJNDY2vn3xxRe/d+mll/7gscce+x0hRE6XPqJq0aDUnTdcig2bt2Ppmma4XEr6h8PsS0rGlmaO0a5JZGAKJchxQG9/AP5gELk57swPQRBQ39CIa2+6F+DEpPIxGSzQ+K9oBmOVAuAICBjaOvrg8XiijjGLS7M3fxIADocIhyMXfSEd76/ahrf+sx65XgVVI/Jx/KyJOGHOZEyfPB65OTnQdS1jQqVFbes6ao8aiRFFXrTuD0fL+dgUdBMFHjm5PuiGgfqtnVhZ/wb++NSbKC/JwdSJNTjp+BmYOWU8RlaVgzKGiE0KTHSZgugU4IiqQ9coJFHElHHj0dvfBI/LY1VpjBZ4MKAbBgxDh04NRLQIcj0+/PaOazCiMBd9ff6MNLvL5cKDDz74/o033vgbACsBHJK1yw8mZd34+9///j+KovgfeeSRx4PBoJD+xRhwOxX86MrzsOrzX4OaaRe2K7uSzKo65UWkyQ/iOA4dXX3o7vWjsqzEXFgSaSWtx+XGtt1doLw7oYhxgnPM0miJLDUbZYAsKVHalibVgEopbgaIPAdRUABFgaZTNLb0YN2W9/HIP97FmOoSnH/msbjy4jPg83qhqlrCAErW5oQQKIqMkRVF2N661WSnbGrummVKeY6D4pChKA4Y1MDebhU7Fq/Di2+vQkmBB/OOqcPCK87DuNEj0dsXRP+Ait7eEHp6w+ghSIjHAAAdwUlEQVTtC6G/P4Jw2EAgqELVDIAReJXROG32SGtq7SDJSM0ZolGK3zAMeH0KPlvdhfr6buR4ZeT4HMjNdcDjluD2RNefj2mMxx577JMbb7zxNgD1APRD5R8e9HyOv/zlL0/PmDHj6KuuuuqHgUD6gGQwHMHs6RMxtbYKqxpicxrszJb0WbnxDvrgRB9mJQUmQ03TDOxq7cCUCaMzD1rDQGlJPqZOHI36pk4oTkcGos5mSbPkmrvMxtyK/5khNT+dqSHwBAIfHayMUjTv7cfdD7+I/6xowF8fuAW5Pg/0aK6RrZlrGNHyoHk+F3Q9AsBlb0KmLiQFguiiltFKh25olMcnK1rQsmsRTjthLngio6c3BFWlQwRbeYyuyYfHHefqEh5bmvanEAXMAHbs7E5497IkQJY45OQ6kJ/nRFmZD9TY3vuLX/z+LwDWH0pgHBJwmL7Iby6//PJvE0Ly0i1DQCmF2+3E3JkTsHRtE+B0Im1RtyyozNgAKMzPsTjv5OtSamDdxmacc8qcjBrIoBSK4sTJc6dj5ecvQnE4UqRpyqghSQCJpeCTeI0Y04ZW3U8MVePddpAmOXOEkKhUd8j4ZPVWPP/GJ7juivOgh0Jp/D9mTqclVoqO7TVSyKLBL5yyE/k5eSjKKUSBrxBelwc8L6B9n5rg72byD0WRh8/Tj9df+xv6B/rhcbtx6WU/hCwL0HV1SJ9Q1QyomoGBgIbdewawvqEDuhZxXHbF764jHD+eMfJxCOrnf7r/m904BDzlIQHHjh07WpYtW7Zizpw5Z4RCoRSzJfbADJ1iUm0NHBIBZUZKNe1YkCyb+4pmyRqoqiiFYDI5gxP7B020zxu2Q9cTZ5WlM9EuPv8U/O3lD9HRG4bikFNKgUbvhRvUcCQDi5WgZZi9TcayceQzI0cQRKxt2JGgWdNR7fEWoO1zTuoaz/EozCnEiIJSFOcVw+v0JEyPHe7m88poa2vASy+9AF3XMWHCBEQiPEKhA/OZKWXgeMkBYDZjmMlx7DoXk9bfctsbi0HIW07Rue6Xv5x/wNrkkFUfKSoq+o+qqhnTzDVdQ3XFCPAktugKtVibwRWDEl9upok4mq6jpqocJYU+aJqWmH6A6DrX9Y3N2LxtNwSBT4kRxO+qqqKirBR3/+RycNAQCkdsR21CrSWaeVfVaKQ67YpOYKCGYeYKpZ8pF4tqxyLc8X0wqI7iwpwULW1bT4syRNRIAqh13UgBiMCLqCquxOwJszB30hyMrx6HPG/uQQEDAPLzHWjctM7KI5s0aRLCESlj5ZWso9MEHEB8hJDjCMEvAPZSSA388dbbXz/1rruel75UcIwaNWpjLPiSSdp7PS4IPLHLJgFY1AHu6x9AOBS0ta7iQaLrBnJzfbjkvJMR8g8goqrQDd3KNTIMA929fny49HNL4meKLmuaivNOn4/Hf30Dyoo86OsfgGq2Yz9PIbHMjq5HKU5/IIRAMIzSolzkeBTohh43oA1rp9QAz3GQRA59A36EI2rcsUZCukdi2keUmQsEwygpzMWl31wAQ9dSUuTjP3Mch4gaQWtrR7RCu5kG73Y54PcHEQyGQXWKsoJyHDNxNmZNmIXq0irI0qGpX0AI4PMQbNiw3urPxInT0NUdOeSBVkII4QipJBz5PkCeDUaUR266480T77rrrmGNd/5QdejOO+8cI4riJbFM2nSlb3RNx8tvfYz+oJZqBplhPFkUcPbJx8DpdCDTUmrEXGNuxuRxYIShdV9XVAqTaLmY/DwvKKNo6+jGhWfOhSgKQwYDDcNA7diROGP+DMiSgPaObvT7gwgEwtAMA7pOoRuGCQQDqqojFI6AMgav24ny0kKccvw0XHfFOfj5Dd+Bzy3grQ9WQpLk+NU5AHMJuEvOnYf7b7sCxfleBIIh9PsD6B8IQDMpcMMwLGo0toh9OKxB0w3MnDIGD/3i+5gyYZSp6TLR1Tza9nXiN396FpzkgqEbqKkswVMP/BhTakeBMAkVBdWora5Fni/XXEYhdVMcAkSBs90FgQPPk1Tr0ozEez39+NdzzyAYDMLn8+HCC69ET58AYgYieZ6YlL1d1Dv9dUUhungOx6XW/yKEOEEwlQeZr9GyvKOPvaRlxaf/7PnCfI7YFgvUZLLrCUfAc1FnmVmXj7OheYIdu/dhT1snigpyoOtG2rZis8F4gcNdP74cP/zuudi5px2qZsDncaGspAD3PvQ0HnvmTTz/2se44uIzoWmhRKYrAWiDKRdlJYX45c1X4LrLv4H1jTvRuLUFu9v2o6OrF4FAdMGaonwfvB4nykoLUVVWhPKSfIyuHgGXy2mZYGedOAsPP/4S9vfrkER+0NWl0cTDb505F5PGj0LduGr8vyu/gU1bd2Fj0y5sampB88427Nvfi4iqQdcNyLKIvBwvxtdU4Nija3HKCdPgckgIBENDuviiKOG9j5aipy+E3MI8BCIhnHLCNNSNr0EowKNrnwMdnZmnP9RNLAZhbQiHQ+lNEY6HouSAwYtdewbQ3R09NjfXgaYtq9HV1WV+zkU40oWifC2BfpdkDwjxoaeXYdfu3qjJXuhCZTlFf//+jA67JLvB8bno6Rk8N6ZJAFSCsTskgpm3/PTVP/72/m+88YWCI9vYBDOzDO2kOCEEwVAEn6xcj6OnjgMisHU2E5mraA5Ojs+No/N8AEdADQZeEDBj0mj8WVfx8NOv4pQTZmBEcb41PTQ+LpBsaummL5Cb48GC46ZhwXHTTD9jMMkxdr5lslEDmqYjFBocPCNGlOKk46bgyRc+hpSTY4nUsBrB9LqjMKV2FMLhaO4ZIQTTJ47G9EljAHN+CGPAgD+IUEhFbo4boihA5DmAIwiFwtYEoExWu8Dz6O/vx9P/egOi7AIYhcet4MTZ0/HOu5uwfNVu6Dob0iziOT9+++u7sGnTpvSmCM+joKAAc+Yci+NOOAt5uaOwrbkLRYVOLFuywXrOO3bswA0/ui7lXLfbjbq6OpxyytmYdfR8rFy9G0VFTrz26p/wwguLMoCSg8vlwqRJk3Haad/A7JknYMWq3SnmFghOYYwfffNtb1b97r5VjwK/pIfd56BZFiHOyD6ZyYM8T/DeJ2sQDIRSyrOwNBH0mM0fiqgIhSKIqCoYpaguL4U7x43mlnb86g9/s15CrM9DZf0aBkUkEkEkEok62IYOwzBg6AY0VYOqalZZzHBEtS3GPHfmRAicOcPRXA/c0CnmTK+FojgsU4AxZvY/jFBEjc4TMXS4nDKKC3NASDRtJBAKIxAIZe3IOhQF/3r5Lazf1AKX2w1V1VFbU4XW3WF8srRlSGAAgMspoa9nDzZv3oxwOIxwOGw9l0gkYn0XCATQ0tKC5577Jx579NfQ1R3Iy1XAkQAaGjYktBk7J/7c9vZ2LF68GPfeexd2taxAYYELAh/CunVrM143GAyis7MTH3ywGHfffQfWr3sT48YW2g96QkZxhN176+1H33bBBc/zX4rmSK9BWEaWUpYkfLZ+K157bxm+fd4CBAKhtKCzm547yM4YyM31wuOSQEMEL7y5FKOqSvGT6/4LqqpaGbLp0lKQganNdq6DYeiYXHsUfC4JIV2HaDI+hCM4buZEq9DaUNcyDHpAKfculxP16zfint8/CdmTB0Y46IaGujGTsba+Leu8taIiF3bv3GppxYkTJ+Kcc86HJMmglCIQGMDevbuxYcN6NDQ0AADq6+uxfNk7+NaFP8be1ga0tERrr+Xl5eHSS78Ll8trrau5v7Mdq1YtR319PQCgt7cX27Y24Ji50xHwb8POnTujdLDPh6uu+h683jwwxhCJhNHevhdNTZuxfPlyUErR39+PF154FrffOQs8R2BQ2xKnXsbYndWjnUEAfzismiMbgKRy9enTlnmOw2///DxadrfBIctDapx02iwvxweP0wFGDcgOGQ889iIefmIRRIG3BupQ2i/+79lomwTzTDdQWlqEogKvxXppuo6K0nzUVJUMLiWWIdh5IDMEY8DYvqMFV/y/u9AdYHC53KCGgcljJoHormEldHo9PNauXW3144QT5qNu8jlw+ebAmzcX1TVn44yzfoSbb7kfc+YMBl1Xr16FgjyC1j1bEQxGU9br6iZh/oL/QmHJiSgsXoDi0gWYe8KVuO76nyI/Pz/u2ekoyHdhz55tiGVfjB8/HnOPvxBu3xx4co5FSdnJOPa4q/Djmx7ANdd83zq3ubkZA/1tcDjETH6KgyO44eafvH7elwqOBIVBhj5QFAVs392O625/CJ1d3WbUOguzzCYAyczliXkC8IKIux74B37884cxEAhAUZSUnKRkAAwXEMmAkgQeIytKoJkr1WqajhHF+cjP9aaYYfFLJhzo5Cye4+B2u7Fq9Tqcf/lNaNrRhZzcQlBGUZJfhNqR422WY87QHk8ANmBpBEmSUFs7FS27+rB/fwCdnQHsae1Dw6b90PR8TJ48zTq3r68PmtaPNWtWWfdTVzcZ+9rD2Nfux772AbTtG0Dj5k7k55fD5/NZWrysvAqiSPH52lXW8580aQq6ewx07g+gc38AbfsGsLW5B41NfkybPhduc1k1XdcRCg5AkviheN9KwpMfXH/rS+VfKjhYWs1hvzkVB5Z81ohLr78HGzY1weVSIA0xlTR+YCUOaGbWbOKgKAr+umgxLrj6Z3jvo6UQeA4Oh2wmxibWRToQUMRmNEYHkghJVuBxOmDoGgAGw9BRUpgLl8tpJSAerJYYdEqd0A0dDz7yFM657CZs292HnIJiUBYtAFddMhJup3tY7brdMjrat6O9vR0AUFpaivyCKgwMpNLHEU23ij0AgKIoCIX8FrBkWUbthKno7gknUcQienr2Yf/+KCPl8XhQM2o8goEe61xBEDBu/GR0d4dtfcP4kqw8z0OWldQgpx0+gPkOXjr/y9UcsZl+GSbUD+4xR1DBmoYdOPfKn+GeP/wVu1vb4JAluFxOyOa0zljFk9gu8Ly5drcCxSEjMfuUgQPg9biwdlMLLll4H77zg59j8cfLoesGFMUBRXFAEPiUSH2mQRn7KYoCnE4FTmd0qbPtO3bh0SeexdLV6+FwSGCMQhIFNG3fjXc//BTBUAiyJMLpdECWJXBc7D6GDqpF56BwcDkVuFwKQsEQnn3+VZxx0ULccc9fYPAe5OQVWjMs87x5qCipHPZbK8hX0NhYb1WDmTx5Mjjem1qjCkCOz4GO9jbrc0lJCbZvHwTWiBEjkJ9fBb9fTYqeO9G6Zxv8fj8AoLq6Grl5pdi5swl79+4FABQXF6OoeCT6+lPB4XSKaG/fY5luiqLA5c5DRM0CHIQIAL55003vFn3hDvkB6xkWkyoygmEDv37kJTy96F3MO2Yyjps1CWNqKlBaXIT8XN9g/hal6Ojpw4Dfj7Z9nVi+uh5tnT0QRY+1Gp/1QB0OUABvL9mA9z+tR+3oMpx83HQcc/QkTBg7Enm5PvC8EC0QQchgXlVcKgkYg24YYCwaH9m1Zy+2bNuJjZu3Y+nKejQ07UBvTxCKNxeK0wnGKGRJQFPzblxy3b2oKM7BcTPrMGPKeEwYV4Oa6nI4HDJ4TjCDpAQczw3SxUYsOEhhUANdXT1Yv6kJnyxfgzffXYbtu9vBSS54i8vBEQ40Locq31cAh6QM+03k5QrYtGmQaZowYTK6e7Q0dG8Amzc3Wt/NnDkTW7ZsSQAWI24YRjDh3NwcER+8t9rS1FOmTIXHm4Mtm9dbJEBdXR0cjgLoenvKtUuKXfjw/Y3W+UcddRREKReq2ped1iVkMhVC4wB0HDZwxKeTH8pNEHl4RC/6AzoWvb4U/3r1Y/i8TjhlEQ6JtyStYVCEVRWaRtHvD0GLaHDn5oM3JxPRxAcCDoDH6YRBGRqbO7Cu4SU4nnoV+T4nCgt8GF1djpKiPLicDuTleOF0OgAG7O/uRTAURiAQRMf+buzZ14XWvZ0YCITQ0+8H0wHB6YYsu5BbnIPo2iODlK0kiaBUQGtnEE+/9DGeemExcn0u5PmcqCgtRHlpIYoKcyHyPPLzcqA4ZFBG0d7ZjVA4jPaObmzf2Yodu/ehs7sfhsYgub3w5o8Az0VBkZCSTghyPDkZK5fbBw95RML7sXXrVtPJd6GicgzaO/ypjFahC617NlrHejweTJ8+HU888YTl/02YMAXd3VqS5iUQxTA2bmywNPCYsVEmb/PmBuu42tpJ6OnRbaL/BKDdWLr0U+s68+YtQCgsDUMUEwWEqwHwySEHR7zpkc5O562CAbE8ITrM8AuLgkTyACzKBPUGKAy/keDt84QHIQIcHgVOHxdXAiYppT2Wd0QIeI6Ad8hwOGQYlKLbr6Ojbz/qN+81y+vHFrs0TCqWi043JASEF8ALAgReAM874M11W/eaib7mOAJZlqxZeaphoLUzhF37dkBf1WSW8KFx12UgnABwBOA48KIEURDh9BZFq4aYa7hTG3qYJxxcsnPY7zUnx4GWnWsss6iyshL5BVXY1Zo42U6SeBQVMjz37FsImysznXrqqaioqEBTU5MFrPKKo9De6U/yLUV0duzAnj17omZcQQFGjhyP9n170NjYaJpNToyqGY99HamT/CZNLMHqlYssUI4ZMwa1E+ZgR0vPcEawyHPc6ENhVpFUh8jghtYqDA5ZQnFhAXbu25mhbjzN7A6Z44wXePDgIWYTmLAdoCQBJINA4cBLUrR/ZiHjtLQnSSpGR4YX/IzvlsjzEOOcytRsgOjBNOVclmA+pRNeBh1+9nZRoRMfvt9gCbwJEyZCln1wOiMQBQ4ut4QcrwyB78d/Pl6EN9980/IZzjvvIjQ0bMK+ffsAAFVVVcgvqETLnv6EaxQWurB5U4PlL4wbNw4VFSOxauWHaGtrs3yVsrLR6BuIwOuR4XSK8Hkd8PmA9evexlNPPWEVsbjwou+A40sQjnQMV75HhguOrBbkCwaDfknKrMaoYcDr8WDs6Eos/WwzmNOZoRphLH39cHIGNpU6kiuwZ5gbYdvEAWdfp07sMA6QPrYNRlIKf9A/7PMkIYJ16z63wKrrGvp7mzCiWEd/fy862zqwevl2rFu3Fhs2bDCd63x875rrUDthFv7nj7+ygDVxYh10XQFj/UkOv4TNjRutz+NrJ0IQZTQ1NViBWlEU0bV/O0qLHQgE/Ojp7sCWTXuwefNGLF++HJFIBIQQ/PCHCzF9xllYsaptuLeqgqExG3CQLL6L/0yCweCAJEkqMiwkwkyT69T5s/G3FxdH/ZMhCzUb2eLzEGypFUWMLDQAAYYsxJZRaLCDqj0WzwVm7GT3QDd0Xc96XoZTEREKdWDHjsHJVK+++ireeeedmLUAXdcTBMfo0aPx3cuvxZixJ6Fx806sXbvGolbr6qahozOYYmprWg82bdpoUb3jx01GX2+vdS4ANDY24rrrrrX6EU2tGTQfPR4Prr32+5h7/EX4bG37Aax/RLoY0bcMBQ4yxO+2PxcvXtx67rnndkiSVJ4pNhCOqJh37NE497Rj8eJrn8Kd68uiPkGmqaWHsWobyw58DFEQxUBCD0dlxTRzW4azdXa3oz/QhzxffnYsVZ4Te3avxcDAQJyDLiak2yiKAkmSUFFRgTlz5mLqtHlQXKOwsbEdVeUB7N27F5IkobCwECNHTUBTc2IqkM8ro7O9Gd3d3ZAkCeXl5aiqHoPu7jY0NzfH+TRSgi8riiKcTify8/MxY8YMzD3uFJSVz8DqNe0p89Gzs6nofzr3djdlAkcyGOyAQOw+X3PNNX3V1dWrjz/++PKY7ZiOzQLP457bvg+dAq++txKE46IxC4HL0gQihxMNab7LHiQH3webubOHAG/+0ABa2nYgx5ObFaOYlyvio8WD9OrZZ5+N+SeeaS3hzBEOiuKE7HDBoeQhokrY2dKHgV0dKChwobq6CLffcY+lERTXCITDexOu4XJJGDN6Iu6590ErPlFQUI4ln/wbfX19Fi373cuvhceTY70JWVbgUFyQHV5Q6kJ7RwSfrW07oOdCGevTDfryM89ckdbnSAeEZFBwsF+ShCxZsuSV+fPnnxeboJTOiVU1DTk5Xvz517fg7FNXYNGrH6J+03YEQpHk4MyRFXc5LOBkX6g2bG5tRnF+CUYUlmfm/TkCUYxYmbQcx+HYuQuguCahq3tQ+HX3U2gahaH3JWjM/fsDWLpCB1ANABgIAnvaUuMTe1r70NsnJxzn3duH+vq1ltk0a/YxqBk9D807BudoUD+DrhnQjTAMI3SQ8Qfjn7ubt72V7PwJGfwJkgEUnN3Pu++++6MFCxasmDNnzuyBgYGM1QpjdZbOO3UuzjttLpatWo+rbvq1OUNwqIUk2WEGDzmAAf3V2AKhAWze0Qi30wuvK311fkURsb9jB1pbW6OsVVERysqOwpZtfdC07MwWu/QSOzIx/jiOADwfxsaNG6x3PHbMRLTtC2TV3vBxQd/vD/Q98uKLN0WS2REuC1DEBn9s581diPspABAB0KuuuupXgUCgN1aPdais2UAoDFXVUVVeDMK0Ya3RcfiqprP/1fvujp1o2LYOoXB687ewwImtWxusbNgJEybA5S7JGhgHujkcIvZ37rRS1AsKClBZNQ49vaFDfi3DoKtVLfjQY3+8bDNsFmXjshChXJKGiAeJkLSLzc3Nm0844YSfqqrqj2VIZsWj6foBLV6TkI17oOPl/9jGGMOWlkasa1qDgYB95cz8fAmNjfHR6Tr09OqHvW8FBS7s2N5o5ViNGzcOHm8p1CxypIYHDGN5OBz85UMPXPReumP4NL6GHRjsdt5Oq7S3t7c899xz9dOnTx8zduzYoliGazpTiOc4DPgDePbFdxDRkFCOc/gGEcHX29BULyEEXX37EQgGoMhOuJ2eBHq1ukrErpbNKCgowPjx4zH/xDPQ3ikgEjEOax9HVnsRibQCjGHUqFE46aRTIcrV6OoKHirBwHRDe6mvr+u+P//PpUsyMC+EHAA4+GH8nvv973//yptvvvncmpqavFAoBF3XLfYj9lMUBLTua8cZF/0IvUEGURYP4eP+GixD+Ul53nyMqapFTflREM3lDibVlYLn9DgShUPDxn2HfZWsyoocFBZIcaY3QeOWLoTDB6+1DN1oU/XQ33Y0ff7E66/fvxdx6ybF/Uwg8Q+15kg5ThCEo04//fTTrr766mMnTpw4qqysTBEEISH/vnN/F44/+xp0DVBwPP16LH/BG88JqC6rweiyo1CUV5Lwbr7qG6UspGuR9/z+7mcf//Ot7wE9RhwwMoIDaSjbZHCQbICQZo+dm8dxXNW0adPGFRcXl7lcrnxRFEWO4+RAMOh49Y2P/I6SKSd9PVS/vM3t9KCmcgxGV45BUX7xVxoklNKQoatL/MH+V9aufOfNzz5b1JcEhnhwJHuhbChwkCGc8gP9zANwApBNlssBQAEQQHTBEZJGq329fUFbbe280olTTpldVFQ5W3F4agnHO8mRFXhKRw1TSo0Ow4gsC/oH3tlQ/+6Hy5Yt6rLREnQIiobZDb5MAMkY5ziAvyX/DhtgfA2OL3GrrJzsmTrzzMnFRTXHuFw5R4uiWAlwjiMJKIwxyhgboIaxKaKGPu3paf3wsxXvrN+yZXHQxmxiWQAjARyZTCwgywj5MHa7NjL5QF9vX/ImSR5+6tRTi0aNnlHrzSmarCieKYIojSbgfBzHyV8wGBhjCDNmdBgG3aRqwZUBf/earTvWblr6wVPdGQY/tdMQSF3Fxzar7oBzq9JoneGckw4QX4PjCNzq6k71jhozs7wgv+Ioh+KqFURHjcBxFRzHF4EQJyHEZQaayYFoGTa4rDCjjA0QBj9lRhulxk7D0Bsj4UBjV+/ezZvXf9jW0PBhMMOgz/QZdhoj08A7oKzcg/iZSUt8DYyvxkZqa0+Qy8snuHMKKgqciq9YcXjKBFEs5HmhivBcHgFxEMI5QeAiUf9SBDgCxigIUxlDMOpzsiBlNMQobacGbTEMrVPTg7siAX9Xa+u2jn376kMNDZ9G7CT9AfzM9Dsyr3uc+TuS5d+Ge+zXoPhfBJri4mKi6zVcaWmOUFpaKUq+PNHNe0TIPC8YOqEUNAzDQDikdnfv1wYGurXW1iad4zpZW1tbcsQx07ROdhDH2n6X1SrEB/A3cojb+3r7v7OxQ/y3A23vgAfjoRjEXwPh6+1QAOawtXG4B+jXAPh6+yoAx3b7//ZMrdbCsqCiAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/class.Preprocessor_LessPHPOyejorge.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9MZXNzUEhQT3llam9yZ2UgZXh0ZW5kcyBQcmVwcm9jZXNzb3IgewoKCWNvbnN0IEZSSUVORExZX05BTUUgPSAnTGVzc1BIUCAoT3llam9yZ2UpJzsKCWNvbnN0IERFU0NSSVBUSU9OID0gJ0EgUEhQIC8gTEVTU0NTUyBwcmUtcHJvY2Vzc29yJzsKCWNvbnN0IEFVVEhPUiA9ICdveWVqb3JnZSAtIEpvc2ggU2NobWlkdCc7Cgljb25zdCBXRUJTSVRFID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9veWVqb3JnZS9sZXNzLnBocCc7Cgljb25zdCBOT1RFID0gJ1Nob3VsZCBzdXBwb3J0IHNvdXJjZW1hcHMnOwoJY29uc3QgTE9HTyA9ICdsb2dvLnBuZyc7Cgljb25zdCBQUklPUklUWSA9IDUwOwoJCgkKCS8vIEZvciBMZXNzUEhQT3llam9yZ2UKCXB1YmxpYyAkcGFyc2VyOwoJCgoJcHVibGljIGZ1bmN0aW9uIExvYWQoKQoJewoJCXBhcmVudDo6TG9hZCgpOwoJCQoJCXJlcXVpcmVfb25jZShjbXNfam9pbl9wYXRoKF9fRElSX18sICdMZXNzJywgJ0F1dG9sb2FkZXIucGhwJykpOwoJCUxlc3NfQXV0b2xvYWRlcjo6cmVnaXN0ZXIoKTsKCQkKCQkvLyBPcHRpb25zCgkJJG9wdGlvbnNbJ2NvbXByZXNzJ10gPSAkdGhpcy0+bWluaWZ5OwoJCQoJCWlmICgkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKQoJCXsKCQkJJG9wdGlvbnNbJ3NvdXJjZU1hcCddID0gdHJ1ZTsKCQkJJG9wdGlvbnNbJ3NvdXJjZU1hcFdyaXRlVG8nXSA9ICR0aGlzLT5zb3VyY2VfbWFwX2ZpbGU7CgkJCSRvcHRpb25zWydzb3VyY2VNYXBVUkwnXSA9ICR0aGlzLT5zb3VyY2VfbWFwX3VybDsKCQkJCgkJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCQkJJG9wdGlvbnNbJ3NvdXJjZU1hcEJhc2VwYXRoJ10gPSAkY29uZmlnWydyb290X3BhdGgnXTsKCQl9CgkJCgkJJHRoaXMtPnBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigkb3B0aW9ucyk7CgkJCgkJLy8gSW1wb3J0IGRpcnMKCQkvLyAkdGhpcy0+cGFyc2VyLT5TZXRJbXBvcnREaXJzKCR0aGlzLT5pbXBvcnRfZGlycyk7CgkJJHRtcCA9IG51bGw7CgkJZm9yZWFjaCAoJHRoaXMtPmltcG9ydF9kaXJzIGFzICRvbmVEaXIpIHsKCQkJJHRtcFskb25lRGlyXSA9ICRvbmVEaXI7CgkJfQoJCSR0aGlzLT5wYXJzZXItPlNldEltcG9ydERpcnMoJHRtcCk7Cgl9CgkKCS8vIE5vdGUgOiAkY3NzIGlzIHBhc3NlZCBieSByZWZlcmVuY2UgLSBubyBuZWVkIHRvIHJldHVybgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGVDU1MoJiRjc3MpCgl7CgkJdHJ5IHsKCQkJJHRoaXMtPnBhcnNlci0+cGFyc2UoJGNzcyk7CgkJCSRjc3MgPSAkdGhpcy0+cGFyc2VyLT5nZXRDc3MoKTsKCQl9CgkJY2F0Y2ggKGV4Y2VwdGlvbiAkZSkgewoJCQkkZXJyb3JfbWVzc2FnZSA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCWRlYnVnX3RvX2xvZygkZXJyb3JfbWVzc2FnZSk7CgkJfQoJCQoJCXJldHVybiB0cnVlOwoJfQoKfQoKCgoKPz4K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Autoloader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBdXRvbG9hZGVyCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgYXV0b2xvYWQKICovCmNsYXNzIExlc3NfQXV0b2xvYWRlciB7CgoJLyoqCgkgKiBSZWdpc3RlcmVkIGZsYWcKCSAqCgkgKiBAdmFyIGJvb2xlYW4KCSAqLwoJcHJvdGVjdGVkIHN0YXRpYyAkcmVnaXN0ZXJlZCA9IGZhbHNlOwoKCS8qKgoJICogTGlicmFyeSBkaXJlY3RvcnkKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcm90ZWN0ZWQgc3RhdGljICRsaWJEaXI7CgoJLyoqCgkgKiBSZWdpc3RlciB0aGUgYXV0b2xvYWRlciBpbiB0aGUgc3BsIGF1dG9sb2FkZXIKCSAqCgkgKiBAcmV0dXJuIHZvaWQKCSAqIEB0aHJvd3MgRXhjZXB0aW9uIElmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiByZWdpc3RyYXRpb24KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWdpc3RlcigpewoJCWlmKCBzZWxmOjokcmVnaXN0ZXJlZCApewoJCQlyZXR1cm47CgkJfQoKCQlzZWxmOjokbGliRGlyID0gZGlybmFtZShfX0ZJTEVfXyk7CgoJCWlmKGZhbHNlID09PSBzcGxfYXV0b2xvYWRfcmVnaXN0ZXIoYXJyYXkoJ0xlc3NfQXV0b2xvYWRlcicsICdsb2FkQ2xhc3MnKSkpewoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmFibGUgdG8gcmVnaXN0ZXIgTGVzc19BdXRvbG9hZGVyOjpsb2FkQ2xhc3MgYXMgYW4gYXV0b2xvYWRpbmcgbWV0aG9kLicpOwoJCX0KCgkJc2VsZjo6JHJlZ2lzdGVyZWQgPSB0cnVlOwoJfQoKCS8qKgoJICogVW5yZWdpc3RlcnMgdGhlIGF1dG9sb2FkZXIKCSAqCgkgKiBAcmV0dXJuIHZvaWQKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1bnJlZ2lzdGVyKCl7CgkJc3BsX2F1dG9sb2FkX3VucmVnaXN0ZXIoYXJyYXkoJ0xlc3NfQXV0b2xvYWRlcicsICdsb2FkQ2xhc3MnKSk7CgkJc2VsZjo6JHJlZ2lzdGVyZWQgPSBmYWxzZTsKCX0KCgkvKioKCSAqIExvYWRzIHRoZSBjbGFzcwoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGNsYXNzTmFtZSBUaGUgY2xhc3MgdG8gbG9hZAoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRDbGFzcygkY2xhc3NOYW1lKXsKCgoJCS8vIGhhbmRsZSBvbmx5IHBhY2thZ2UgY2xhc3NlcwoJCWlmKHN0cnBvcygkY2xhc3NOYW1lLCAnTGVzc18nKSAhPT0gMCl7CgkJCXJldHVybjsKCQl9CgoJCSRjbGFzc05hbWUgPSBzdWJzdHIoJGNsYXNzTmFtZSw1KTsKCQkkZmlsZU5hbWUgPSBzZWxmOjokbGliRGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN0cl9yZXBsYWNlKCdfJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgJGNsYXNzTmFtZSkgLiAnLnBocCc7CgoJCWlmKGZpbGVfZXhpc3RzKCRmaWxlTmFtZSkpewoJCQlyZXF1aXJlICRmaWxlTmFtZTsKCQkJcmV0dXJuIHRydWU7CgkJfWVsc2V7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oJ2ZpbGUgbm90IGxvYWRhYmxlICcuJGZpbGVOYW1lKTsKCQl9Cgl9Cgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Cache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZSggZGlybmFtZShfX0ZJTEVfXykuJy9WZXJzaW9uLnBocCcpOwoKLyoqCiAqIFV0aWxpdHkgZm9yIGhhbmRsaW5nIHRoZSBnZW5lcmF0aW9uIGFuZCBjYWNoaW5nIG9mIGNzcyBmaWxlcwogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIGNhY2hlCiAqCiAqLwpjbGFzcyBMZXNzX0NhY2hlewoKCS8vIGRpcmVjdG9yeSBsZXNzLnBocCBjYW4gdXNlIGZvciBzdG9yaW5nIGRhdGEKCXB1YmxpYyBzdGF0aWMgJGNhY2hlX2Rpcgk9IGZhbHNlOwoKCS8vIHByZWZpeCBmb3IgdGhlIHN0b3JpbmcgZGF0YQoJcHVibGljIHN0YXRpYyAkcHJlZml4CQk9ICdsZXNzcGhwXyc7CgoJLy8gcHJlZml4IGZvciB0aGUgc3RvcmluZyB2YXJzCglwdWJsaWMgc3RhdGljICRwcmVmaXhfdmFycwk9ICdsZXNzcGhwdmFyc18nOwoKCS8vIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYWZ0ZXIgd2hpY2ggZGF0YSBjcmVhdGVkIGJ5IGxlc3MucGhwIHdpbGwgYmUgc2VlbiBhcyAnZ2FyYmFnZScgYW5kIHBvdGVudGlhbGx5IGNsZWFuZWQgdXAKCXB1YmxpYyBzdGF0aWMgJGdjX2xpZmV0aW1lCT0gNjA0ODAwOwoKCgkvKioKCSAqIFNhdmUgYW5kIHJldXNlIHRoZSByZXN1bHRzIG9mIGNvbXBpbGVkIGxlc3MgZmlsZXMuCgkgKiBUaGUgZmlyc3QgY2FsbCB0byBHZXQoKSB3aWxsIGdlbmVyYXRlIGNzcyBhbmQgc2F2ZSBpdC4KCSAqIFN1YnNlcXVlbnQgY2FsbHMgdG8gR2V0KCkgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgY3NzIGZpbGVuYW1lCgkgKgoJICogQHBhcmFtIGFycmF5ICRsZXNzX2ZpbGVzIEFycmF5IG9mIC5sZXNzIGZpbGVzIHRvIGNvbXBpbGUKCSAqIEBwYXJhbSBhcnJheSAkcGFyc2VyX29wdGlvbnMgQXJyYXkgb2YgY29tcGlsZXIgb3B0aW9ucwoJICogQHBhcmFtIGFycmF5ICRtb2RpZnlfdmFycyBBcnJheSBvZiB2YXJpYWJsZXMKCSAqIEByZXR1cm4gc3RyaW5nIE5hbWUgb2YgdGhlIGNzcyBmaWxlCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gR2V0KCAkbGVzc19maWxlcywgJHBhcnNlcl9vcHRpb25zID0gYXJyYXkoKSwgJG1vZGlmeV92YXJzID0gYXJyYXkoKSApewoKCgkJLy9jaGVjayAkY2FjaGVfZGlyCgkJaWYoIGlzc2V0KCRwYXJzZXJfb3B0aW9uc1snY2FjaGVfZGlyJ10pICl7CgkJCUxlc3NfQ2FjaGU6OiRjYWNoZV9kaXIgPSAkcGFyc2VyX29wdGlvbnNbJ2NhY2hlX2RpciddOwoJCX0KCgkJaWYoIGVtcHR5KExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpICl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oJ2NhY2hlX2RpciBub3Qgc2V0Jyk7CgkJfQoKCQlpZiggaXNzZXQoJHBhcnNlcl9vcHRpb25zWydwcmVmaXgnXSkgKXsKCQkJTGVzc19DYWNoZTo6JHByZWZpeCA9ICRwYXJzZXJfb3B0aW9uc1sncHJlZml4J107CgkJfQoKCQlpZiggZW1wdHkoTGVzc19DYWNoZTo6JHByZWZpeCkgKXsKCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigncHJlZml4IG5vdCBzZXQnKTsKCQl9CgoJCWlmKCBpc3NldCgkcGFyc2VyX29wdGlvbnNbJ3ByZWZpeF92YXJzJ10pICl7CgkJCUxlc3NfQ2FjaGU6OiRwcmVmaXhfdmFycyA9ICRwYXJzZXJfb3B0aW9uc1sncHJlZml4X3ZhcnMnXTsKCQl9CgoJCWlmKCBlbXB0eShMZXNzX0NhY2hlOjokcHJlZml4X3ZhcnMpICl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oJ3ByZWZpeF92YXJzIG5vdCBzZXQnKTsKCQl9CgoJCXNlbGY6OkNoZWNrQ2FjaGVEaXIoKTsKCQkkbGVzc19maWxlcyA9IChhcnJheSkkbGVzc19maWxlczsKCgoJCS8vY3JlYXRlIGEgZmlsZSBmb3IgdmFyaWFibGVzCgkJaWYoICFlbXB0eSgkbW9kaWZ5X3ZhcnMpICl7CgkJCSRsZXNzdmFycyA9IExlc3NfUGFyc2VyOjpzZXJpYWxpemVWYXJzKCRtb2RpZnlfdmFycyk7CgkJCSR2YXJzX2ZpbGUgPSBMZXNzX0NhY2hlOjokY2FjaGVfZGlyIC4gTGVzc19DYWNoZTo6JHByZWZpeF92YXJzIC4gc2hhMSgkbGVzc3ZhcnMpIC4gJy5sZXNzJzsKCgkJCWlmKCAhZmlsZV9leGlzdHMoJHZhcnNfZmlsZSkgKXsKCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCR2YXJzX2ZpbGUsICRsZXNzdmFycyk7CgkJCX0KCgkJCSRsZXNzX2ZpbGVzICs9IGFycmF5KCR2YXJzX2ZpbGUgPT4gJy8nKTsKCQl9CgoKCQkvLyBnZW5lcmF0ZSBuYW1lIGZvciBjb21waWxlZCBjc3MgZmlsZQoJCSRoYXNoID0gbWQ1KGpzb25fZW5jb2RlKCRsZXNzX2ZpbGVzKSk7CiAJCSRsaXN0X2ZpbGUgPSBMZXNzX0NhY2hlOjokY2FjaGVfZGlyIC4gTGVzc19DYWNoZTo6JHByZWZpeCAuICRoYXNoIC4gJy5saXN0JzsKCiAJCS8vIGNoZWNrIGNhY2hlZCBjb250ZW50CiAJCWlmKCAhaXNzZXQoJHBhcnNlcl9vcHRpb25zWyd1c2VfY2FjaGUnXSkgfHwgJHBhcnNlcl9vcHRpb25zWyd1c2VfY2FjaGUnXSA9PT0gdHJ1ZSApewoJCQlpZiggZmlsZV9leGlzdHMoJGxpc3RfZmlsZSkgKXsKCgkJCQlzZWxmOjpMaXN0RmlsZXMoJGxpc3RfZmlsZSwgJGxpc3QsICRjYWNoZWRfbmFtZSk7CgkJCQkkY29tcGlsZWRfbmFtZSA9IHNlbGY6OkNvbXBpbGVkTmFtZSgkbGlzdCwgJGhhc2gpOwoKCQkJCS8vIGlmICRjYWNoZWRfbmFtZSBpcyB0aGUgc2FtZSBhcyB0aGUgJGNvbXBpbGVkIG5hbWUsIGRvbid0IHJlZ2VuZXJhdGUKCQkJCWlmKCAhJGNhY2hlZF9uYW1lIHx8ICRjYWNoZWRfbmFtZSA9PT0gJGNvbXBpbGVkX25hbWUgKXsKCgkJCQkJJG91dHB1dF9maWxlID0gc2VsZjo6T3V0cHV0RmlsZSgkY29tcGlsZWRfbmFtZSwgJHBhcnNlcl9vcHRpb25zICk7CgoJCQkJCWlmKCAkb3V0cHV0X2ZpbGUgJiYgZmlsZV9leGlzdHMoJG91dHB1dF9maWxlKSApewoJCQkJCQlAdG91Y2goJGxpc3RfZmlsZSk7CgkJCQkJCXJldHVybiBiYXNlbmFtZSgkb3V0cHV0X2ZpbGUpOyAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGp1c3QgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaWxlCgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQkkY29tcGlsZWQgPSBzZWxmOjpDYWNoZSggJGxlc3NfZmlsZXMsICRwYXJzZXJfb3B0aW9ucyApOwoJCWlmKCAhJGNvbXBpbGVkICl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRjb21waWxlZF9uYW1lID0gc2VsZjo6Q29tcGlsZWROYW1lKCAkbGVzc19maWxlcywgJGhhc2ggKTsKCQkkb3V0cHV0X2ZpbGUgPSBzZWxmOjpPdXRwdXRGaWxlKCRjb21waWxlZF9uYW1lLCAkcGFyc2VyX29wdGlvbnMgKTsKCgoJCS8vc2F2ZSB0aGUgZmlsZSBsaXN0CgkJJGxpc3QgPSAkbGVzc19maWxlczsKCQkkbGlzdFtdID0gJGNvbXBpbGVkX25hbWU7CgkJJGNhY2hlID0gaW1wbG9kZSgiXG4iLCRsaXN0KTsKCQlmaWxlX3B1dF9jb250ZW50cyggJGxpc3RfZmlsZSwgJGNhY2hlICk7CgoKCQkvL3NhdmUgdGhlIGNzcwoJCWZpbGVfcHV0X2NvbnRlbnRzKCAkb3V0cHV0X2ZpbGUsICRjb21waWxlZCApOwoKCgkJLy9jbGVhbiB1cAoJCXNlbGY6OkNsZWFuQ2FjaGUoKTsKCgkJcmV0dXJuIGJhc2VuYW1lKCRvdXRwdXRfZmlsZSk7Cgl9CgoJLyoqCgkgKiBGb3JjZSB0aGUgY29tcGlsZXIgdG8gcmVnZW5lcmF0ZSB0aGUgY2FjaGVkIGNzcyBmaWxlCgkgKgoJICogQHBhcmFtIGFycmF5ICRsZXNzX2ZpbGVzIEFycmF5IG9mIC5sZXNzIGZpbGVzIHRvIGNvbXBpbGUKCSAqIEBwYXJhbSBhcnJheSAkcGFyc2VyX29wdGlvbnMgQXJyYXkgb2YgY29tcGlsZXIgb3B0aW9ucwoJICogQHBhcmFtIGFycmF5ICRtb2RpZnlfdmFycyBBcnJheSBvZiB2YXJpYWJsZXMKCSAqIEByZXR1cm4gc3RyaW5nIE5hbWUgb2YgdGhlIGNzcyBmaWxlCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gUmVnZW4oICRsZXNzX2ZpbGVzLCAkcGFyc2VyX29wdGlvbnMgPSBhcnJheSgpLCAkbW9kaWZ5X3ZhcnMgPSBhcnJheSgpICl7CgkJJHBhcnNlcl9vcHRpb25zWyd1c2VfY2FjaGUnXSA9IGZhbHNlOwoJCXJldHVybiBzZWxmOjpHZXQoICRsZXNzX2ZpbGVzLCAkcGFyc2VyX29wdGlvbnMsICRtb2RpZnlfdmFycyApOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ2FjaGUoICYkbGVzc19maWxlcywgJHBhcnNlcl9vcHRpb25zID0gYXJyYXkoKSApewoKCgkJLy8gZ2V0IGxlc3MucGhwIGlmIGl0IGV4aXN0cwoJCSRmaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnL0xlc3MucGhwJzsKCQlpZiggZmlsZV9leGlzdHMoJGZpbGUpICYmICFjbGFzc19leGlzdHMoJ0xlc3NfUGFyc2VyJykgKXsKCQkJcmVxdWlyZV9vbmNlKCRmaWxlKTsKCQl9CgoJCSRwYXJzZXJfb3B0aW9uc1snY2FjaGVfZGlyJ10gPSBMZXNzX0NhY2hlOjokY2FjaGVfZGlyOwoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoJHBhcnNlcl9vcHRpb25zKTsKCgoJCS8vIGNvbWJpbmUgZmlsZXMKCQlmb3JlYWNoKCRsZXNzX2ZpbGVzIGFzICRmaWxlX3BhdGggPT4gJHVyaV9vcl9sZXNzICl7CgoJCQkvL3RyZWF0IGFzIGxlc3MgbWFya3VwIGlmIHRoZXJlIGFyZSBuZXdsaW5lIGNoYXJhY3RlcnMKCQkJaWYoIHN0cnBvcygkdXJpX29yX2xlc3MsIlxuIikgIT09IGZhbHNlICl7CgkJCQkkcGFyc2VyLT5QYXJzZSggJHVyaV9vcl9sZXNzICk7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJHBhcnNlci0+UGFyc2VGaWxlKCAkZmlsZV9wYXRoLCAkdXJpX29yX2xlc3MgKTsKCQl9CgoJCSRjb21waWxlZCA9ICRwYXJzZXItPmdldENzcygpOwoKCgkJJGxlc3NfZmlsZXMgPSAkcGFyc2VyLT5hbGxQYXJzZWRGaWxlcygpOwoKCQlyZXR1cm4gJGNvbXBpbGVkOwoJfQoKCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBPdXRwdXRGaWxlKCAkY29tcGlsZWRfbmFtZSwgJHBhcnNlcl9vcHRpb25zICl7CgoJCS8vY3VzdG9tIG91dHB1dCBmaWxlCgkJaWYoICFlbXB0eSgkcGFyc2VyX29wdGlvbnNbJ291dHB1dCddKSApewoKCQkJLy9yZWxhdGl2ZSB0byBjYWNoZSBkaXJlY3Rvcnk/CgkJCWlmKCBwcmVnX21hdGNoKCcjW1xcXFwvXSMnLCRwYXJzZXJfb3B0aW9uc1snb3V0cHV0J10pICl7CgkJCQlyZXR1cm4gJHBhcnNlcl9vcHRpb25zWydvdXRwdXQnXTsKCQkJfQoKCQkJcmV0dXJuIExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIuJHBhcnNlcl9vcHRpb25zWydvdXRwdXQnXTsKCQl9CgoJCXJldHVybiBMZXNzX0NhY2hlOjokY2FjaGVfZGlyLiRjb21waWxlZF9uYW1lOwoJfQoKCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBDb21waWxlZE5hbWUoICRmaWxlcywgJGV4dHJhaGFzaCApewoKCQkvL3NhdmUgdGhlIGZpbGUgbGlzdAoJCSR0ZW1wID0gYXJyYXkoTGVzc19WZXJzaW9uOjpjYWNoZV92ZXJzaW9uKTsKCQlmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZSl7CgkJCSR0ZW1wW10gPSBmaWxlbXRpbWUoJGZpbGUpLiJcdCIuZmlsZXNpemUoJGZpbGUpLiJcdCIuJGZpbGU7CgkJfQoKCQlyZXR1cm4gTGVzc19DYWNoZTo6JHByZWZpeC5zaGExKGpzb25fZW5jb2RlKCR0ZW1wKS4kZXh0cmFoYXNoKS4nLmNzcyc7Cgl9CgoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gU2V0Q2FjaGVEaXIoICRkaXIgKXsKCQlMZXNzX0NhY2hlOjokY2FjaGVfZGlyID0gJGRpcjsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENoZWNrQ2FjaGVEaXIoKXsKCgkJTGVzc19DYWNoZTo6JGNhY2hlX2RpciA9IHN0cl9yZXBsYWNlKCdcXCcsJy8nLExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpOwoJCUxlc3NfQ2FjaGU6OiRjYWNoZV9kaXIgPSBydHJpbShMZXNzX0NhY2hlOjokY2FjaGVfZGlyLCcvJykuJy8nOwoKCQlpZiggIWZpbGVfZXhpc3RzKExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpICl7CgkJCWlmKCAhbWtkaXIoTGVzc19DYWNoZTo6JGNhY2hlX2RpcikgKXsKCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBjb3VsZG5cJ3QgYmUgY3JlYXRlZDogJy5MZXNzX0NhY2hlOjokY2FjaGVfZGlyKTsKCQkJfQoKCQl9ZWxzZWlmKCAhaXNfZGlyKExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBkb2VzblwndCBleGlzdDogJy5MZXNzX0NhY2hlOjokY2FjaGVfZGlyKTsKCgkJfWVsc2VpZiggIWlzX3dyaXRhYmxlKExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBpc25cJ3Qgd3JpdGFibGU6ICcuTGVzc19DYWNoZTo6JGNhY2hlX2Rpcik7CgoJCX0KCgl9CgoKCS8qKgoJICogRGVsZXRlIHVudXNlZCBsZXNzLnBocCBmaWxlcwoJICoKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDbGVhbkNhY2hlKCl7CgkJc3RhdGljICRjbGVhbiA9IGZhbHNlOwoKCQlpZiggJGNsZWFuICl7CgkJCXJldHVybjsKCQl9CgoJCSRmaWxlcyA9IHNjYW5kaXIoTGVzc19DYWNoZTo6JGNhY2hlX2Rpcik7CgkJaWYoICRmaWxlcyApewoJCQkkY2hlY2tfdGltZSA9IHRpbWUoKSAtIHNlbGY6OiRnY19saWZldGltZTsKCQkJZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGUpewoKCQkJCS8vIGRvbid0IGRlbGV0ZSBpZiB0aGUgZmlsZSB3YXNuJ3QgY3JlYXRlZCB3aXRoIGxlc3MucGhwCgkJCQlpZiggc3RycG9zKCRmaWxlLExlc3NfQ2FjaGU6OiRwcmVmaXgpICE9PSAwICl7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJJGZ1bGxfcGF0aCA9IExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIgLiAkZmlsZTsKCgkJCQkvLyBtYWtlIHN1cmUgdGhlIGZpbGUgc3RpbGwgZXhpc3RzCgkJCQkvLyBjc3MgZmlsZXMgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGRlbGV0ZWQKCQkJCWlmKCAhZmlsZV9leGlzdHMoJGZ1bGxfcGF0aCkgKXsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCSRtdGltZSA9IGZpbGVtdGltZSgkZnVsbF9wYXRoKTsKCgkJCQkvLyBkb24ndCBkZWxldGUgaWYgaXQncyBhIHJlbGF0aXZlbHkgbmV3IGZpbGUKCQkJCWlmKCAkbXRpbWUgPiAkY2hlY2tfdGltZSApewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCSRwYXJ0cyA9IGV4cGxvZGUoJy4nLCRmaWxlKTsKCQkJCSR0eXBlID0gYXJyYXlfcG9wKCRwYXJ0cyk7CgoKCQkJCS8vIGRlbGV0ZSBjc3MgZmlsZXMgYmFzZWQgb24gdGhlIGxpc3QgZmlsZXMKCQkJCWlmKCAkdHlwZSA9PT0gJ2NzcycgKXsKCQkJCQljb250aW51ZTsKCQkJCX0KCgoJCQkJLy8gZGVsZXRlIHRoZSBsaXN0IGZpbGUgYW5kIGFzc29jaWF0ZWQgY3NzIGZpbGUKCQkJCWlmKCAkdHlwZSA9PT0gJ2xpc3QnICl7CgkJCQkJc2VsZjo6TGlzdEZpbGVzKCRmdWxsX3BhdGgsICRsaXN0LCAkY3NzX2ZpbGVfbmFtZSk7CgkJCQkJaWYoICRjc3NfZmlsZV9uYW1lICl7CgkJCQkJCSRjc3NfZmlsZSA9IExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIgLiAkY3NzX2ZpbGVfbmFtZTsKCQkJCQkJaWYoIGZpbGVfZXhpc3RzKCRjc3NfZmlsZSkgKXsKCQkJCQkJCXVubGluaygkY3NzX2ZpbGUpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJCXVubGluaygkZnVsbF9wYXRoKTsKCQkJfQoJCX0KCgkJJGNsZWFuID0gdHJ1ZTsKCX0KCgoJLyoqCgkgKiBHZXQgdGhlIGxpc3Qgb2YgbGVzcyBmaWxlcyBhbmQgZ2VuZXJhdGVkIGNzcyBmaWxlIGZyb20gYSBsaXN0IGZpbGUKCSAqCgkgKi8KCXN0YXRpYyBmdW5jdGlvbiBMaXN0RmlsZXMoJGxpc3RfZmlsZSwgJiRsaXN0LCAmJGNzc19maWxlX25hbWUgKXsKCgkJJGxpc3QgPSBleHBsb2RlKCJcbiIsZmlsZV9nZXRfY29udGVudHMoJGxpc3RfZmlsZSkpOwoKCQkvL3BvcCB0aGUgY2FjaGVkIG5hbWUgdGhhdCBzaG91bGQgbWF0Y2ggJGNvbXBpbGVkX25hbWUKCQkkY3NzX2ZpbGVfbmFtZSA9IGFycmF5X3BvcCgkbGlzdCk7CgoJCWlmKCAhcHJlZ19tYXRjaCgnL14nIC4gTGVzc19DYWNoZTo6JHByZWZpeCAuICdbYS1mMC05XStcLmNzcyQvJywkY3NzX2ZpbGVfbmFtZSkgKXsKCQkJJGxpc3RbXSA9ICRjc3NfZmlsZV9uYW1lOwoJCQkkY3NzX2ZpbGVfbmFtZSA9IGZhbHNlOwoJCX0KCgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Colors.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVdGlsaXR5IGZvciBjc3MgY29sb3JzCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgY29sb3IKICovCmNsYXNzIExlc3NfQ29sb3JzIHsKCglwdWJsaWMgc3RhdGljICRjb2xvcnMgPSBhcnJheSgKCQkJJ2FsaWNlYmx1ZSc9PicjZjBmOGZmJywKCQkJJ2FudGlxdWV3aGl0ZSc9PicjZmFlYmQ3JywKCQkJJ2FxdWEnPT4nIzAwZmZmZicsCgkJCSdhcXVhbWFyaW5lJz0+JyM3ZmZmZDQnLAoJCQknYXp1cmUnPT4nI2YwZmZmZicsCgkJCSdiZWlnZSc9PicjZjVmNWRjJywKCQkJJ2Jpc3F1ZSc9PicjZmZlNGM0JywKCQkJJ2JsYWNrJz0+JyMwMDAwMDAnLAoJCQknYmxhbmNoZWRhbG1vbmQnPT4nI2ZmZWJjZCcsCgkJCSdibHVlJz0+JyMwMDAwZmYnLAoJCQknYmx1ZXZpb2xldCc9PicjOGEyYmUyJywKCQkJJ2Jyb3duJz0+JyNhNTJhMmEnLAoJCQknYnVybHl3b29kJz0+JyNkZWI4ODcnLAoJCQknY2FkZXRibHVlJz0+JyM1ZjllYTAnLAoJCQknY2hhcnRyZXVzZSc9PicjN2ZmZjAwJywKCQkJJ2Nob2NvbGF0ZSc9PicjZDI2OTFlJywKCQkJJ2NvcmFsJz0+JyNmZjdmNTAnLAoJCQknY29ybmZsb3dlcmJsdWUnPT4nIzY0OTVlZCcsCgkJCSdjb3Juc2lsayc9PicjZmZmOGRjJywKCQkJJ2NyaW1zb24nPT4nI2RjMTQzYycsCgkJCSdjeWFuJz0+JyMwMGZmZmYnLAoJCQknZGFya2JsdWUnPT4nIzAwMDA4YicsCgkJCSdkYXJrY3lhbic9PicjMDA4YjhiJywKCQkJJ2Rhcmtnb2xkZW5yb2QnPT4nI2I4ODYwYicsCgkJCSdkYXJrZ3JheSc9PicjYTlhOWE5JywKCQkJJ2RhcmtncmV5Jz0+JyNhOWE5YTknLAoJCQknZGFya2dyZWVuJz0+JyMwMDY0MDAnLAoJCQknZGFya2toYWtpJz0+JyNiZGI3NmInLAoJCQknZGFya21hZ2VudGEnPT4nIzhiMDA4YicsCgkJCSdkYXJrb2xpdmVncmVlbic9PicjNTU2YjJmJywKCQkJJ2RhcmtvcmFuZ2UnPT4nI2ZmOGMwMCcsCgkJCSdkYXJrb3JjaGlkJz0+JyM5OTMyY2MnLAoJCQknZGFya3JlZCc9PicjOGIwMDAwJywKCQkJJ2RhcmtzYWxtb24nPT4nI2U5OTY3YScsCgkJCSdkYXJrc2VhZ3JlZW4nPT4nIzhmYmM4ZicsCgkJCSdkYXJrc2xhdGVibHVlJz0+JyM0ODNkOGInLAoJCQknZGFya3NsYXRlZ3JheSc9PicjMmY0ZjRmJywKCQkJJ2RhcmtzbGF0ZWdyZXknPT4nIzJmNGY0ZicsCgkJCSdkYXJrdHVycXVvaXNlJz0+JyMwMGNlZDEnLAoJCQknZGFya3Zpb2xldCc9PicjOTQwMGQzJywKCQkJJ2RlZXBwaW5rJz0+JyNmZjE0OTMnLAoJCQknZGVlcHNreWJsdWUnPT4nIzAwYmZmZicsCgkJCSdkaW1ncmF5Jz0+JyM2OTY5NjknLAoJCQknZGltZ3JleSc9PicjNjk2OTY5JywKCQkJJ2RvZGdlcmJsdWUnPT4nIzFlOTBmZicsCgkJCSdmaXJlYnJpY2snPT4nI2IyMjIyMicsCgkJCSdmbG9yYWx3aGl0ZSc9PicjZmZmYWYwJywKCQkJJ2ZvcmVzdGdyZWVuJz0+JyMyMjhiMjInLAoJCQknZnVjaHNpYSc9PicjZmYwMGZmJywKCQkJJ2dhaW5zYm9ybyc9PicjZGNkY2RjJywKCQkJJ2dob3N0d2hpdGUnPT4nI2Y4ZjhmZicsCgkJCSdnb2xkJz0+JyNmZmQ3MDAnLAoJCQknZ29sZGVucm9kJz0+JyNkYWE1MjAnLAoJCQknZ3JheSc9PicjODA4MDgwJywKCQkJJ2dyZXknPT4nIzgwODA4MCcsCgkJCSdncmVlbic9PicjMDA4MDAwJywKCQkJJ2dyZWVueWVsbG93Jz0+JyNhZGZmMmYnLAoJCQknaG9uZXlkZXcnPT4nI2YwZmZmMCcsCgkJCSdob3RwaW5rJz0+JyNmZjY5YjQnLAoJCQknaW5kaWFucmVkJz0+JyNjZDVjNWMnLAoJCQknaW5kaWdvJz0+JyM0YjAwODInLAoJCQknaXZvcnknPT4nI2ZmZmZmMCcsCgkJCSdraGFraSc9PicjZjBlNjhjJywKCQkJJ2xhdmVuZGVyJz0+JyNlNmU2ZmEnLAoJCQknbGF2ZW5kZXJibHVzaCc9PicjZmZmMGY1JywKCQkJJ2xhd25ncmVlbic9PicjN2NmYzAwJywKCQkJJ2xlbW9uY2hpZmZvbic9PicjZmZmYWNkJywKCQkJJ2xpZ2h0Ymx1ZSc9PicjYWRkOGU2JywKCQkJJ2xpZ2h0Y29yYWwnPT4nI2YwODA4MCcsCgkJCSdsaWdodGN5YW4nPT4nI2UwZmZmZicsCgkJCSdsaWdodGdvbGRlbnJvZHllbGxvdyc9PicjZmFmYWQyJywKCQkJJ2xpZ2h0Z3JheSc9PicjZDNkM2QzJywKCQkJJ2xpZ2h0Z3JleSc9PicjZDNkM2QzJywKCQkJJ2xpZ2h0Z3JlZW4nPT4nIzkwZWU5MCcsCgkJCSdsaWdodHBpbmsnPT4nI2ZmYjZjMScsCgkJCSdsaWdodHNhbG1vbic9PicjZmZhMDdhJywKCQkJJ2xpZ2h0c2VhZ3JlZW4nPT4nIzIwYjJhYScsCgkJCSdsaWdodHNreWJsdWUnPT4nIzg3Y2VmYScsCgkJCSdsaWdodHNsYXRlZ3JheSc9PicjNzc4ODk5JywKCQkJJ2xpZ2h0c2xhdGVncmV5Jz0+JyM3Nzg4OTknLAoJCQknbGlnaHRzdGVlbGJsdWUnPT4nI2IwYzRkZScsCgkJCSdsaWdodHllbGxvdyc9PicjZmZmZmUwJywKCQkJJ2xpbWUnPT4nIzAwZmYwMCcsCgkJCSdsaW1lZ3JlZW4nPT4nIzMyY2QzMicsCgkJCSdsaW5lbic9PicjZmFmMGU2JywKCQkJJ21hZ2VudGEnPT4nI2ZmMDBmZicsCgkJCSdtYXJvb24nPT4nIzgwMDAwMCcsCgkJCSdtZWRpdW1hcXVhbWFyaW5lJz0+JyM2NmNkYWEnLAoJCQknbWVkaXVtYmx1ZSc9PicjMDAwMGNkJywKCQkJJ21lZGl1bW9yY2hpZCc9PicjYmE1NWQzJywKCQkJJ21lZGl1bXB1cnBsZSc9PicjOTM3MGQ4JywKCQkJJ21lZGl1bXNlYWdyZWVuJz0+JyMzY2IzNzEnLAoJCQknbWVkaXVtc2xhdGVibHVlJz0+JyM3YjY4ZWUnLAoJCQknbWVkaXVtc3ByaW5nZ3JlZW4nPT4nIzAwZmE5YScsCgkJCSdtZWRpdW10dXJxdW9pc2UnPT4nIzQ4ZDFjYycsCgkJCSdtZWRpdW12aW9sZXRyZWQnPT4nI2M3MTU4NScsCgkJCSdtaWRuaWdodGJsdWUnPT4nIzE5MTk3MCcsCgkJCSdtaW50Y3JlYW0nPT4nI2Y1ZmZmYScsCgkJCSdtaXN0eXJvc2UnPT4nI2ZmZTRlMScsCgkJCSdtb2NjYXNpbic9PicjZmZlNGI1JywKCQkJJ25hdmFqb3doaXRlJz0+JyNmZmRlYWQnLAoJCQknbmF2eSc9PicjMDAwMDgwJywKCQkJJ29sZGxhY2UnPT4nI2ZkZjVlNicsCgkJCSdvbGl2ZSc9PicjODA4MDAwJywKCQkJJ29saXZlZHJhYic9PicjNmI4ZTIzJywKCQkJJ29yYW5nZSc9PicjZmZhNTAwJywKCQkJJ29yYW5nZXJlZCc9PicjZmY0NTAwJywKCQkJJ29yY2hpZCc9PicjZGE3MGQ2JywKCQkJJ3BhbGVnb2xkZW5yb2QnPT4nI2VlZThhYScsCgkJCSdwYWxlZ3JlZW4nPT4nIzk4ZmI5OCcsCgkJCSdwYWxldHVycXVvaXNlJz0+JyNhZmVlZWUnLAoJCQkncGFsZXZpb2xldHJlZCc9PicjZDg3MDkzJywKCQkJJ3BhcGF5YXdoaXAnPT4nI2ZmZWZkNScsCgkJCSdwZWFjaHB1ZmYnPT4nI2ZmZGFiOScsCgkJCSdwZXJ1Jz0+JyNjZDg1M2YnLAoJCQkncGluayc9PicjZmZjMGNiJywKCQkJJ3BsdW0nPT4nI2RkYTBkZCcsCgkJCSdwb3dkZXJibHVlJz0+JyNiMGUwZTYnLAoJCQkncHVycGxlJz0+JyM4MDAwODAnLAoJCQkncmVkJz0+JyNmZjAwMDAnLAoJCQkncm9zeWJyb3duJz0+JyNiYzhmOGYnLAoJCQkncm95YWxibHVlJz0+JyM0MTY5ZTEnLAoJCQknc2FkZGxlYnJvd24nPT4nIzhiNDUxMycsCgkJCSdzYWxtb24nPT4nI2ZhODA3MicsCgkJCSdzYW5keWJyb3duJz0+JyNmNGE0NjAnLAoJCQknc2VhZ3JlZW4nPT4nIzJlOGI1NycsCgkJCSdzZWFzaGVsbCc9PicjZmZmNWVlJywKCQkJJ3NpZW5uYSc9PicjYTA1MjJkJywKCQkJJ3NpbHZlcic9PicjYzBjMGMwJywKCQkJJ3NreWJsdWUnPT4nIzg3Y2VlYicsCgkJCSdzbGF0ZWJsdWUnPT4nIzZhNWFjZCcsCgkJCSdzbGF0ZWdyYXknPT4nIzcwODA5MCcsCgkJCSdzbGF0ZWdyZXknPT4nIzcwODA5MCcsCgkJCSdzbm93Jz0+JyNmZmZhZmEnLAoJCQknc3ByaW5nZ3JlZW4nPT4nIzAwZmY3ZicsCgkJCSdzdGVlbGJsdWUnPT4nIzQ2ODJiNCcsCgkJCSd0YW4nPT4nI2QyYjQ4YycsCgkJCSd0ZWFsJz0+JyMwMDgwODAnLAoJCQkndGhpc3RsZSc9PicjZDhiZmQ4JywKCQkJJ3RvbWF0byc9PicjZmY2MzQ3JywKCQkJJ3R1cnF1b2lzZSc9PicjNDBlMGQwJywKCQkJJ3Zpb2xldCc9PicjZWU4MmVlJywKCQkJJ3doZWF0Jz0+JyNmNWRlYjMnLAoJCQknd2hpdGUnPT4nI2ZmZmZmZicsCgkJCSd3aGl0ZXNtb2tlJz0+JyNmNWY1ZjUnLAoJCQkneWVsbG93Jz0+JyNmZmZmMDAnLAoJCQkneWVsbG93Z3JlZW4nPT4nIzlhY2QzMicKCQkpOwoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzT3duUHJvcGVydHkoJGNvbG9yKSB7CgkJcmV0dXJuIGlzc2V0KHNlbGY6OiRjb2xvcnNbJGNvbG9yXSk7Cgl9CgoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29sb3IoJGNvbG9yKSB7CgkJcmV0dXJuIHNlbGY6OiRjb2xvcnNbJGNvbG9yXTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Configurable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBDb25maWd1cmFibGUNCiAqDQogKiBAcGFja2FnZSBMZXNzDQogKiBAc3VicGFja2FnZSBDb3JlDQogKi8NCmFic3RyYWN0IGNsYXNzIExlc3NfQ29uZmlndXJhYmxlIHsNCg0KCS8qKg0KCSAqIEFycmF5IG9mIG9wdGlvbnMNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJG9wdGlvbnMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogQXJyYXkgb2YgZGVmYXVsdCBvcHRpb25zDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovDQoJcHJvdGVjdGVkICRkZWZhdWx0T3B0aW9ucyA9IGFycmF5KCk7DQoNCg0KCS8qKg0KCSAqIFNldCBvcHRpb25zDQoJICoNCgkgKiBJZiAkb3B0aW9ucyBpcyBhbiBvYmplY3QgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhbiBhcnJheSBieSBjYWxsZWQNCgkgKiBpdCdzIHRvQXJyYXkgbWV0aG9kLg0KCSAqDQoJICogQHRocm93cyBFeGNlcHRpb24NCgkgKiBAcGFyYW0gYXJyYXl8b2JqZWN0ICRvcHRpb25zDQoJICoNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9ucygkb3B0aW9ucyl7DQoJCSRvcHRpb25zID0gYXJyYXlfaW50ZXJzZWN0X2tleSgkb3B0aW9ucywkdGhpcy0+ZGVmYXVsdE9wdGlvbnMpOw0KCQkkdGhpcy0+b3B0aW9ucyA9IGFycmF5X21lcmdlKCR0aGlzLT5kZWZhdWx0T3B0aW9ucywgJHRoaXMtPm9wdGlvbnMsICRvcHRpb25zKTsNCgl9DQoNCg0KCS8qKg0KCSAqIEdldCBhbiBvcHRpb24gdmFsdWUgYnkgbmFtZQ0KCSAqDQoJICogSWYgdGhlIG9wdGlvbiBpcyBlbXB0eSBvciBub3Qgc2V0IGEgTlVMTCB2YWx1ZSB3aWxsIGJlIHJldHVybmVkLg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkbmFtZQ0KCSAqIEBwYXJhbSBtaXhlZCAkZGVmYXVsdCBEZWZhdWx0IHZhbHVlIGlmIGNvbmZpdXJhdGlvbiBvZiAkbmFtZSBpcyBub3QgcHJlc2VudA0KCSAqIEByZXR1cm4gbWl4ZWQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0T3B0aW9uKCRuYW1lLCAkZGVmYXVsdCA9IG51bGwpew0KCQlpZihpc3NldCgkdGhpcy0+b3B0aW9uc1skbmFtZV0pKXsNCgkJCXJldHVybiAkdGhpcy0+b3B0aW9uc1skbmFtZV07DQoJCX0NCgkJcmV0dXJuICRkZWZhdWx0Ow0KCX0NCg0KDQoJLyoqDQoJICogU2V0IGFuIG9wdGlvbg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkbmFtZQ0KCSAqIEBwYXJhbSBtaXhlZCAkdmFsdWUNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9uKCRuYW1lLCAkdmFsdWUpew0KCQkkdGhpcy0+b3B0aW9uc1skbmFtZV0gPSAkdmFsdWU7DQoJfQ0KDQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Environment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgovKioKICogRW52aXJvbm1lbnQKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSBlbnZpcm9ubWVudAogKi8KY2xhc3MgTGVzc19FbnZpcm9ubWVudHsKCgkvL3B1YmxpYyAkcGF0aHMgPSBhcnJheSgpOwkJCQkvLyBvcHRpb24gLSB1bm1vZGlmaWVkIC0gcGF0aHMgdG8gc2VhcmNoIGZvciBpbXBvcnRzIG9uCgkvL3B1YmxpYyBzdGF0aWMgJGZpbGVzID0gYXJyYXkoKTsJCS8vIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGJlZW4gaW1wb3J0ZWQsIHVzZWQgZm9yIGltcG9ydC1vbmNlCgkvL3B1YmxpYyAkcm9vdHBhdGg7CQkJCQkJLy8gb3B0aW9uIC0gcm9vdHBhdGggdG8gYXBwZW5kIHRvIFVSTCdzCgkvL3B1YmxpYyBzdGF0aWMgJHN0cmljdEltcG9ydHMgPSBudWxsOwkvLyBvcHRpb24gLQoJLy9wdWJsaWMgJGluc2VjdXJlOwkJCQkJCS8vIG9wdGlvbiAtIHdoZXRoZXIgdG8gYWxsb3cgaW1wb3J0cyBmcm9tIGluc2VjdXJlIHNzbCBob3N0cwoJLy9wdWJsaWMgJHByb2Nlc3NJbXBvcnRzOwkJCQkvLyBvcHRpb24gLSB3aGV0aGVyIHRvIHByb2Nlc3MgaW1wb3J0cy4gaWYgZmFsc2UgdGhlbiBpbXBvcnRzIHdpbGwgbm90IGJlIGltcG9ydGVkCgkvL3B1YmxpYyAkamF2YXNjcmlwdEVuYWJsZWQ7CQkJLy8gb3B0aW9uIC0gd2hldGhlciBKYXZhU2NyaXB0IGlzIGVuYWJsZWQuIGlmIHVuZGVmaW5lZCwgZGVmYXVsdHMgdG8gdHJ1ZQoJLy9wdWJsaWMgJHVzZUZpbGVDYWNoZTsJCQkJCS8vIGJyb3dzZXIgb25seSAtIHdoZXRoZXIgdG8gdXNlIHRoZSBwZXIgZmlsZSBzZXNzaW9uIGNhY2hlCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsJCQkJLy8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgZmlsZSAtIGZvciBlcnJvciByZXBvcnRpbmcgYW5kIGltcG9ydGluZyBhbmQgbWFraW5nIHVybHMgcmVsYXRpdmUgZXRjLgoKCXB1YmxpYyAkaW1wb3J0TXVsdGlwbGUgPSBmYWxzZTsgCQkvLyB3aGV0aGVyIHdlIGFyZSBjdXJyZW50bHkgaW1wb3J0aW5nIG11bHRpcGxlIGNvcGllcwoKCgkvKioKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljICRmcmFtZXMgPSBhcnJheSgpOwoKCS8qKgoJICogQHZhciBhcnJheQoJICovCglwdWJsaWMgJG1lZGlhQmxvY2tzID0gYXJyYXkoKTsKCgkvKioKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljICRtZWRpYVBhdGggPSBhcnJheSgpOwoKCXB1YmxpYyBzdGF0aWMgJHBhcmVuc1N0YWNrID0gMDsKCglwdWJsaWMgc3RhdGljICR0YWJMZXZlbCA9IDA7CgoJcHVibGljIHN0YXRpYyAkbGFzdFJ1bGUgPSBmYWxzZTsKCglwdWJsaWMgc3RhdGljICRfb3V0cHV0TWFwOwoKCXB1YmxpYyBzdGF0aWMgJG1peGluX3N0YWNrID0gMDsKCgkvKioKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljICRmdW5jdGlvbnMgPSBhcnJheSgpOwoKCglwdWJsaWMgZnVuY3Rpb24gSW5pdCgpewoKCQlzZWxmOjokcGFyZW5zU3RhY2sgPSAwOwoJCXNlbGY6OiR0YWJMZXZlbCA9IDA7CgkJc2VsZjo6JGxhc3RSdWxlID0gZmFsc2U7CgkJc2VsZjo6JG1peGluX3N0YWNrID0gMDsKCgkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSApewoKCQkJTGVzc19FbnZpcm9ubWVudDo6JF9vdXRwdXRNYXAgPSBhcnJheSgKCQkJCScsJwk9PiAnLCcsCgkJCQknOiAnID0+ICc6JywKCQkJCScnICA9PiAnJywKCQkJCScgJyA9PiAnICcsCgkJCQknOicgPT4gJyA6JywKCQkJCScrJyA9PiAnKycsCgkJCQknficgPT4gJ34nLAoJCQkJJz4nID0+ICc+JywKCQkJCSd8JyA9PiAnfCcsCgkJICAgICAgICAnXicgPT4gJ14nLAoJCSAgICAgICAgJ15eJyA9PiAnXl4nCgkJCSk7CgoJCX1lbHNlewoKCQkJTGVzc19FbnZpcm9ubWVudDo6JF9vdXRwdXRNYXAgPSBhcnJheSgKCQkJCScsJwk9PiAnLCAnLAoJCQkJJzogJyA9PiAnOiAnLAoJCQkJJycgID0+ICcnLAoJCQkJJyAnID0+ICcgJywKCQkJCSc6JyA9PiAnIDonLAoJCQkJJysnID0+ICcgKyAnLAoJCQkJJ34nID0+ICcgfiAnLAoJCQkJJz4nID0+ICcgPiAnLAoJCQkJJ3wnID0+ICd8JywKCQkgICAgICAgICdeJyA9PiAnIF4gJywKCQkgICAgICAgICdeXicgPT4gJyBeXiAnCgkJCSk7CgoJCX0KCX0KCgoJcHVibGljIGZ1bmN0aW9uIGNvcHlFdmFsRW52KCRmcmFtZXMgPSBhcnJheSgpICl7CgkJJG5ld19lbnYgPSBuZXcgTGVzc19FbnZpcm9ubWVudCgpOwoJCSRuZXdfZW52LT5mcmFtZXMgPSAkZnJhbWVzOwoJCXJldHVybiAkbmV3X2VudjsKCX0KCgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc01hdGhPbigpewoJCXJldHVybiAhTGVzc19QYXJzZXI6OiRvcHRpb25zWydzdHJpY3RNYXRoJ10gfHwgTGVzc19FbnZpcm9ubWVudDo6JHBhcmVuc1N0YWNrOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNQYXRoUmVsYXRpdmUoJHBhdGgpewoJCXJldHVybiAhcHJlZ19tYXRjaCgnL14oPzpbYS16LV0rOnxcLykvJywkcGF0aCk7Cgl9CgoKCS8qKgoJICogQ2Fub25pY2FsaXplIGEgcGF0aCBieSByZXNvbHZpbmcgcmVmZXJlbmNlcyB0byAnLy4vJywgJy8uLi8nCgkgKiBEb2VzIG5vdCByZW1vdmUgbGVhZGluZyAiLi4vIgoJICogQHBhcmFtIHN0cmluZyBwYXRoIG9yIHVybAoJICogQHJldHVybiBzdHJpbmcgQ2Fub25pY2FsaXplZCBwYXRoCgkgKgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgoJHBhdGgpewoKCQkkc2VnbWVudHMgPSBleHBsb2RlKCcvJywkcGF0aCk7CgkJJHNlZ21lbnRzID0gYXJyYXlfcmV2ZXJzZSgkc2VnbWVudHMpOwoKCQkkcGF0aCA9IGFycmF5KCk7CgkJJHBhdGhfbGVuID0gMDsKCgkJd2hpbGUoICRzZWdtZW50cyApewoJCQkkc2VnbWVudCA9IGFycmF5X3BvcCgkc2VnbWVudHMpOwoJCQlzd2l0Y2goICRzZWdtZW50ICkgewoKCQkJCWNhc2UgJy4nOgoJCQkJYnJlYWs7CgoJCQkJY2FzZSAnLi4nOgoJCQkJCWlmKCAhJHBhdGhfbGVuIHx8ICggJHBhdGhbJHBhdGhfbGVuLTFdID09PSAnLi4nKSApewoJCQkJCQkkcGF0aFtdID0gJHNlZ21lbnQ7CgkJCQkJCSRwYXRoX2xlbisrOwoJCQkJCX1lbHNlewoJCQkJCQlhcnJheV9wb3AoJHBhdGgpOwoJCQkJCQkkcGF0aF9sZW4tLTsKCQkJCQl9CgkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSRwYXRoW10gPSAkc2VnbWVudDsKCQkJCQkkcGF0aF9sZW4rKzsKCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQlyZXR1cm4gaW1wbG9kZSgnLycsJHBhdGgpOwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gdW5zaGlmdEZyYW1lKCRmcmFtZSl7CgkJYXJyYXlfdW5zaGlmdCgkdGhpcy0+ZnJhbWVzLCAkZnJhbWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzaGlmdEZyYW1lKCl7CgkJcmV0dXJuIGFycmF5X3NoaWZ0KCR0aGlzLT5mcmFtZXMpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/Chunk.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBDaHVuayBFeGNlcHRpb24NCiAqDQogKiBAcGFja2FnZSBMZXNzDQogKiBAc3VicGFja2FnZSBleGNlcHRpb24NCiAqLw0KY2xhc3MgTGVzc19FeGNlcHRpb25fQ2h1bmsgZXh0ZW5kcyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXJ7DQoNCg0KCXByb3RlY3RlZCAkcGFyc2VyQ3VycmVudEluZGV4ID0gMDsNCg0KCXByb3RlY3RlZCAkZW1pdEZyb20gPSAwOw0KDQoJcHJvdGVjdGVkICRpbnB1dF9sZW47DQoNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRpbnB1dA0KCSAqIEBwYXJhbSBFeGNlcHRpb24gJHByZXZpb3VzIFByZXZpb3VzIGV4Y2VwdGlvbg0KCSAqIEBwYXJhbSBpbnRlZ2VyICRpbmRleCBUaGUgY3VycmVudCBwYXJzZXIgaW5kZXgNCgkgKiBAcGFyYW0gTGVzc19GaWxlSW5mb3xzdHJpbmcgJGN1cnJlbnRGaWxlIFRoZSBmaWxlDQoJICogQHBhcmFtIGludGVnZXIgJGNvZGUgVGhlIGV4Y2VwdGlvbiBjb2RlDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpbnB1dCwgRXhjZXB0aW9uICRwcmV2aW91cyA9IG51bGwsICRpbmRleCA9IG51bGwsICRjdXJyZW50RmlsZSA9IG51bGwsICRjb2RlID0gMCl7DQoNCgkJJHRoaXMtPm1lc3NhZ2UgPSAnUGFyc2VFcnJvcjogVW5leHBlY3RlZCBpbnB1dCc7IC8vZGVmYXVsdCBtZXNzYWdlDQoNCgkJJHRoaXMtPmluZGV4ID0gJGluZGV4Ow0KDQoJCSR0aGlzLT5jdXJyZW50RmlsZSA9ICRjdXJyZW50RmlsZTsNCg0KCQkkdGhpcy0+aW5wdXQgPSAkaW5wdXQ7DQoJCSR0aGlzLT5pbnB1dF9sZW4gPSBzdHJsZW4oJGlucHV0KTsNCg0KCQkkdGhpcy0+Q2h1bmtzKCk7DQoJCSR0aGlzLT5nZW5NZXNzYWdlKCk7DQoJfQ0KDQoNCgkvKioNCgkgKiBTZWUgbGVzcy5qcyBjaHVua3MoKQ0KCSAqIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdGhlIGNodW5rcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIENodW5rcygpew0KCQkkbGV2ZWwgPSAwOw0KCQkkcGFyZW5MZXZlbCA9IDA7DQoJCSRsYXN0TXVsdGlDb21tZW50RW5kQnJhY2UgPSBudWxsOw0KCQkkbGFzdE9wZW5pbmcgPSBudWxsOw0KCQkkbGFzdE11bHRpQ29tbWVudCA9IG51bGw7DQoJCSRsYXN0UGFyZW4gPSBudWxsOw0KDQoJCWZvciggJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA9IDA7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuOyAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KysgKXsNCgkJCSRjYyA9ICR0aGlzLT5DaGFyQ29kZSgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KTsNCgkJCWlmICgoKCRjYyA+PSA5NykgJiYgKCRjYyA8PSAxMjIpKSB8fCAoJGNjIDwgMzQpKSB7DQoJCQkJLy8gYS16IG9yIHdoaXRlc3BhY2UNCgkJCQljb250aW51ZTsNCgkJCX0NCg0KCQkJc3dpdGNoICgkY2MpIHsNCg0KCQkJCS8vICgNCgkJCQljYXNlIDQwOg0KCQkJCQkkcGFyZW5MZXZlbCsrOw0KCQkJCQkkbGFzdFBhcmVuID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleDsNCgkJCQkJY29udGludWU7DQoNCgkJCQkvLyApDQoJCQkJY2FzZSA0MToNCgkJCQkJJHBhcmVuTGV2ZWwtLTsNCgkJCQkJaWYoICRwYXJlbkxldmVsIDwgMCApew0KCQkJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCJtaXNzaW5nIG9wZW5pbmcgYChgIik7DQoJCQkJCX0NCgkJCQkJY29udGludWU7DQoNCgkJCQkvLyA7DQoJCQkJY2FzZSA1OToNCgkJCQkJLy9pZiAoISRwYXJlbkxldmVsKSB7ICR0aGlzLT5lbWl0Q2h1bmsoKTsJfQ0KCQkJCQljb250aW51ZTsNCg0KCQkJCS8vIHsNCgkJCQljYXNlIDEyMzoNCgkJCQkJJGxldmVsKys7DQoJCQkJCSRsYXN0T3BlbmluZyA9ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXg7DQoJCQkJCWNvbnRpbnVlOw0KDQoJCQkJLy8gfQ0KCQkJCWNhc2UgMTI1Og0KCQkJCQkkbGV2ZWwtLTsNCgkJCQkJaWYoICRsZXZlbCA8IDAgKXsNCgkJCQkJCXJldHVybiAkdGhpcy0+ZmFpbCgibWlzc2luZyBvcGVuaW5nIGB7YCIpOw0KDQoJCQkJCX0NCgkJCQkJLy9pZiAoISRsZXZlbCAmJiAhJHBhcmVuTGV2ZWwpIHsgJHRoaXMtPmVtaXRDaHVuaygpOyB9DQoJCQkJCWNvbnRpbnVlOw0KCQkJCS8vIFwNCgkJCQljYXNlIDkyOg0KCQkJCQlpZiAoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA8ICR0aGlzLT5pbnB1dF9sZW4gLSAxKSB7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrKzsgY29udGludWU7IH0NCgkJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCJ1bmVzY2FwZWQgYFxcYCIpOw0KDQoJCQkJLy8gIiwgJyBhbmQgYA0KCQkJCWNhc2UgMzQ6DQoJCQkJY2FzZSAzOToNCgkJCQljYXNlIDk2Og0KCQkJCQkkbWF0Y2hlZCA9IDA7DQoJCQkJCSRjdXJyZW50Q2h1bmtTdGFydEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleDsNCgkJCQkJZm9yICgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArIDE7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuOyAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KyspIHsNCgkJCQkJCSRjYzIgPSAkdGhpcy0+Q2hhckNvZGUoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCk7DQoJCQkJCQlpZiAoJGNjMiA+IDk2KSB7IGNvbnRpbnVlOyB9DQoJCQkJCQlpZiAoJGNjMiA9PSAkY2MpIHsgJG1hdGNoZWQgPSAxOyBicmVhazsgfQ0KCQkJCQkJaWYgKCRjYzIgPT0gOTIpIHsgICAgICAgIC8vIFwNCgkJCQkJCQlpZiAoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA9PSAkdGhpcy0+aW5wdXRfbGVuIC0gMSkgew0KCQkJCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoInVuZXNjYXBlZCBgXFxgIik7DQoJCQkJCQkJfQ0KCQkJCQkJCSR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrKzsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlpZiAoJG1hdGNoZWQpIHsgY29udGludWU7IH0NCgkJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCJ1bm1hdGNoZWQgYCIgLiBjaHIoJGNjKSAuICJgIiwgJGN1cnJlbnRDaHVua1N0YXJ0SW5kZXgpOw0KDQoJCQkJLy8gLywgY2hlY2sgZm9yIGNvbW1lbnQNCgkJCQljYXNlIDQ3Og0KCQkJCQlpZiAoJHBhcmVuTGV2ZWwgfHwgKCR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPT0gJHRoaXMtPmlucHV0X2xlbiAtIDEpKSB7IGNvbnRpbnVlOyB9DQoJCQkJCSRjYzIgPSAkdGhpcy0+Q2hhckNvZGUoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCsxKTsNCgkJCQkJaWYgKCRjYzIgPT0gNDcpIHsNCgkJCQkJCS8vIC8vLCBmaW5kIGxuZmVlZA0KCQkJCQkJZm9yICgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArIDI7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuOyAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KyspIHsNCgkJCQkJCQkkY2MyID0gJHRoaXMtPkNoYXJDb2RlKCR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgpOw0KCQkJCQkJCWlmICgoJGNjMiA8PSAxMykgJiYgKCgkY2MyID09IDEwKSB8fCAoJGNjMiA9PSAxMykpKSB7IGJyZWFrOyB9DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSBpZiAoJGNjMiA9PSA0Mikgew0KCQkJCQkJLy8gLyosIGZpbmQgKi8NCgkJCQkJCSRsYXN0TXVsdGlDb21tZW50ID0gJGN1cnJlbnRDaHVua1N0YXJ0SW5kZXggPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4Ow0KCQkJCQkJZm9yICgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArIDI7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuIC0gMTsgJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCsrKSB7DQoJCQkJCQkJJGNjMiA9ICR0aGlzLT5DaGFyQ29kZSgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KTsNCgkJCQkJCQlpZiAoJGNjMiA9PSAxMjUpIHsgJGxhc3RNdWx0aUNvbW1lbnRFbmRCcmFjZSA9ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXg7IH0NCgkJCQkJCQlpZiAoJGNjMiAhPSA0MikgeyBjb250aW51ZTsgfQ0KCQkJCQkJCWlmICgkdGhpcy0+Q2hhckNvZGUoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCsxKSA9PSA0NykgeyBicmVhazsgfQ0KCQkJCQkJfQ0KCQkJCQkJaWYgKCR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPT0gJHRoaXMtPmlucHV0X2xlbiAtIDEpIHsNCgkJCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoIm1pc3NpbmcgY2xvc2luZyBgKi9gIiwgJGN1cnJlbnRDaHVua1N0YXJ0SW5kZXgpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWNvbnRpbnVlOw0KDQoJCQkJLy8gKiwgY2hlY2sgZm9yIHVubWF0Y2hlZCAqLw0KCQkJCWNhc2UgNDI6DQoJCQkJCWlmICgoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA8ICR0aGlzLT5pbnB1dF9sZW4gLSAxKSAmJiAoJHRoaXMtPkNoYXJDb2RlKCR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrMSkgPT0gNDcpKSB7DQoJCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoInVubWF0Y2hlZCBgLypgIik7DQoJCQkJCX0NCgkJCQkJY29udGludWU7DQoJCQl9DQoJCX0NCg0KCQlpZiggJGxldmVsICE9PSAwICl7DQoJCQlpZiggKCRsYXN0TXVsdGlDb21tZW50ID4gJGxhc3RPcGVuaW5nKSAmJiAoJGxhc3RNdWx0aUNvbW1lbnRFbmRCcmFjZSA+ICRsYXN0TXVsdGlDb21tZW50KSApew0KCQkJCXJldHVybiAkdGhpcy0+ZmFpbCgibWlzc2luZyBjbG9zaW5nIGB9YCBvciBgKi9gIiwgJGxhc3RPcGVuaW5nKTsNCgkJCX0gZWxzZSB7DQoJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCJtaXNzaW5nIGNsb3NpbmcgYH1gIiwgJGxhc3RPcGVuaW5nKTsNCgkJCX0NCgkJfSBlbHNlIGlmICggJHBhcmVuTGV2ZWwgIT09IDAgKXsNCgkJCXJldHVybiAkdGhpcy0+ZmFpbCgibWlzc2luZyBjbG9zaW5nIGApYCIsICRsYXN0UGFyZW4pOw0KCQl9DQoNCg0KCQkvL2NodW5rIGRpZG4ndCBmYWlsDQoNCg0KCQkvLyR0aGlzLT5lbWl0Q2h1bmsodHJ1ZSk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIENoYXJDb2RlKCRwb3Mpew0KCQlyZXR1cm4gb3JkKCR0aGlzLT5pbnB1dFskcG9zXSk7DQoJfQ0KDQoNCglwdWJsaWMgZnVuY3Rpb24gZmFpbCggJG1zZywgJGluZGV4ID0gbnVsbCApew0KDQoJCWlmKCAhJGluZGV4ICl7DQoJCQkkdGhpcy0+aW5kZXggPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4Ow0KCQl9ZWxzZXsNCgkJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsNCgkJfQ0KCQkkdGhpcy0+bWVzc2FnZSA9ICdQYXJzZUVycm9yOiAnLiRtc2c7DQoJfQ0KDQoNCgkvKg0KCWZ1bmN0aW9uIGVtaXRDaHVuayggJGZvcmNlID0gZmFsc2UgKXsNCgkJJGxlbiA9ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggLSAkdGhpcy0+ZW1pdEZyb207DQoJCWlmICgoKCRsZW4gPCA1MTIpICYmICEkZm9yY2UpIHx8ICEkbGVuKSB7DQoJCQlyZXR1cm47DQoJCX0NCgkJJGNodW5rc1tdID0gc3Vic3RyKCR0aGlzLT5pbnB1dCwgJHRoaXMtPmVtaXRGcm9tLCAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ICsgMSAtICR0aGlzLT5lbWl0RnJvbSApOw0KCQkkdGhpcy0+ZW1pdEZyb20gPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ICsgMTsNCgl9DQoJKi8NCg0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/Compiler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBDb21waWxlciBFeGNlcHRpb24NCiAqDQogKiBAcGFja2FnZSBMZXNzDQogKiBAc3VicGFja2FnZSBleGNlcHRpb24NCiAqLw0KY2xhc3MgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIgZXh0ZW5kcyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXJ7DQoNCn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/Compiler.php.part</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBDb21waWxlciBFeGNlcHRpb24NCiAqDQogKiBAcGFja2FnZSBMZXNzDQogKiBAc3VicGFja2FnZSBleGNlcHRpb24NCiAqLw0KY2xhc3MgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIgZXh0ZW5kcyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXJ7DQoNCn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBQYXJzZXIgRXhjZXB0aW9uDQogKg0KICogQHBhY2thZ2UgTGVzcw0KICogQHN1YnBhY2thZ2UgZXhjZXB0aW9uDQogKi8NCmNsYXNzIExlc3NfRXhjZXB0aW9uX1BhcnNlciBleHRlbmRzIEV4Y2VwdGlvbnsNCg0KCS8qKg0KCSAqIFRoZSBjdXJyZW50IGZpbGUNCgkgKg0KCSAqIEB2YXIgTGVzc19JbXBvcnRlZEZpbGUNCgkgKi8NCglwdWJsaWMgJGN1cnJlbnRGaWxlOw0KDQoJLyoqDQoJICogVGhlIGN1cnJlbnQgcGFyc2VyIGluZGV4DQoJICoNCgkgKiBAdmFyIGludGVnZXINCgkgKi8NCglwdWJsaWMgJGluZGV4Ow0KDQoJcHJvdGVjdGVkICRpbnB1dDsNCg0KCXByb3RlY3RlZCAkZGV0YWlscyA9IGFycmF5KCk7DQoNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlDQoJICogQHBhcmFtIEV4Y2VwdGlvbiAkcHJldmlvdXMgUHJldmlvdXMgZXhjZXB0aW9uDQoJICogQHBhcmFtIGludGVnZXIgJGluZGV4IFRoZSBjdXJyZW50IHBhcnNlciBpbmRleA0KCSAqIEBwYXJhbSBMZXNzX0ZpbGVJbmZvfHN0cmluZyAkY3VycmVudEZpbGUgVGhlIGZpbGUNCgkgKiBAcGFyYW0gaW50ZWdlciAkY29kZSBUaGUgZXhjZXB0aW9uIGNvZGUNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1lc3NhZ2UgPSBudWxsLCBFeGNlcHRpb24gJHByZXZpb3VzID0gbnVsbCwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlID0gbnVsbCwgJGNvZGUgPSAwKXsNCg0KCQlpZiAoUEhQX1ZFUlNJT05fSUQgPCA1MDMwMCkgew0KCQkJJHRoaXMtPnByZXZpb3VzID0gJHByZXZpb3VzOw0KCQkJcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUpOw0KCQl9IGVsc2Ugew0KCQkJcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUsICRwcmV2aW91cyk7DQoJCX0NCg0KCQkkdGhpcy0+Y3VycmVudEZpbGUgPSAkY3VycmVudEZpbGU7DQoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsNCg0KCQkkdGhpcy0+Z2VuTWVzc2FnZSgpOw0KCX0NCg0KDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldElucHV0KCl7DQoNCgkJaWYoICEkdGhpcy0+aW5wdXQgJiYgJHRoaXMtPmN1cnJlbnRGaWxlICYmICR0aGlzLT5jdXJyZW50RmlsZVsnZmlsZW5hbWUnXSAmJiBmaWxlX2V4aXN0cygkdGhpcy0+Y3VycmVudEZpbGVbJ2ZpbGVuYW1lJ10pICl7DQoJCQkkdGhpcy0+aW5wdXQgPSBmaWxlX2dldF9jb250ZW50cyggJHRoaXMtPmN1cnJlbnRGaWxlWydmaWxlbmFtZSddICk7DQoJCX0NCgl9DQoNCg0KDQoJLyoqDQoJICogQ29udmVydHMgdGhlIGV4Y2VwdGlvbiB0byBzdHJpbmcNCgkgKg0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdlbk1lc3NhZ2UoKXsNCg0KCQlpZiggJHRoaXMtPmN1cnJlbnRGaWxlICYmICR0aGlzLT5jdXJyZW50RmlsZVsnZmlsZW5hbWUnXSApew0KCQkJJHRoaXMtPm1lc3NhZ2UgLj0gJyBpbiAnLmJhc2VuYW1lKCR0aGlzLT5jdXJyZW50RmlsZVsnZmlsZW5hbWUnXSk7DQoJCX0NCg0KCQlpZiggJHRoaXMtPmluZGV4ICE9PSBudWxsICl7DQoJCQkkdGhpcy0+Z2V0SW5wdXQoKTsNCgkJCWlmKCAkdGhpcy0+aW5wdXQgKXsNCgkJCQkkbGluZSA9IHNlbGY6OmdldExpbmVOdW1iZXIoKTsNCgkJCQkkdGhpcy0+bWVzc2FnZSAuPSAnIG9uIGxpbmUgJy4kbGluZS4nLCBjb2x1bW4gJy5zZWxmOjpnZXRDb2x1bW4oKTsNCg0KCQkJCSRsaW5lcyA9IGV4cGxvZGUoIlxuIiwkdGhpcy0+aW5wdXQpOw0KDQoJCQkJJGNvdW50ID0gY291bnQoJGxpbmVzKTsNCgkJCQkkc3RhcnRfbGluZSA9IG1heCgwLCAkbGluZS0zKTsNCgkJCQkkbGFzdF9saW5lID0gbWluKCRjb3VudCwgJHN0YXJ0X2xpbmUrNik7DQoJCQkJJG51bV9sZW4gPSBzdHJsZW4oJGxhc3RfbGluZSk7DQoJCQkJZm9yKCAkaSA9ICRzdGFydF9saW5lOyAkaSA8ICRsYXN0X2xpbmU7ICRpKysgKXsNCgkJCQkJJHRoaXMtPm1lc3NhZ2UgLj0gIlxuIi5zdHJfcGFkKCRpKzEsJG51bV9sZW4sJzAnLFNUUl9QQURfTEVGVCkuJ3wgJy4kbGluZXNbJGldOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJfQ0KDQoJLyoqDQoJICogUmV0dXJucyB0aGUgbGluZSBudW1iZXIgdGhlIGVycm9yIHdhcyBlbmNvdW50ZXJlZA0KCSAqDQoJICogQHJldHVybiBpbnRlZ2VyDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldExpbmVOdW1iZXIoKXsNCgkJaWYoICR0aGlzLT5pbmRleCApew0KCQkJLy8gaHR0cHM6Ly9idWdzLnBocC5uZXQvYnVnLnBocD9pZD00OTc5MA0KCQkJaWYgKGluaV9nZXQoIm1ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQiKSkgew0KCQkJCXJldHVybiBzdWJzdHJfY291bnQoc3Vic3RyKCR0aGlzLT5pbnB1dCwgMCwgJHRoaXMtPmluZGV4KSwgIlxuIikgKyAxOw0KCQkJfSBlbHNlIHsNCgkJCQlyZXR1cm4gc3Vic3RyX2NvdW50KCR0aGlzLT5pbnB1dCwgIlxuIiwgMCwgJHRoaXMtPmluZGV4KSArIDE7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIDE7DQoJfQ0KDQoNCgkvKioNCgkgKiBSZXR1cm5zIHRoZSBjb2x1bW4gdGhlIGVycm9yIHdhcyBlbmNvdW50ZXJlZA0KCSAqDQoJICogQHJldHVybiBpbnRlZ2VyDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldENvbHVtbigpew0KDQoJCSRwYXJ0ID0gc3Vic3RyKCR0aGlzLT5pbnB1dCwgMCwgJHRoaXMtPmluZGV4KTsNCgkJJHBvcyA9IHN0cnJwb3MoJHBhcnQsIlxuIik7DQoJCXJldHVybiAkdGhpcy0+aW5kZXggLSAkcG9zOw0KCX0NCg0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBCdWlsdGluIGZ1bmN0aW9ucwogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIGZ1bmN0aW9uCiAqIEBzZWUgaHR0cDovL2xlc3Njc3Mub3JnL2Z1bmN0aW9ucy8KICovCmNsYXNzIExlc3NfRnVuY3Rpb25zewoKCXB1YmxpYyAkZW52OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgoJZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGVudiwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKXsKCQkkdGhpcy0+ZW52ID0gJGVudjsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJG9wCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb3BlcmF0ZSggJG9wLCAkYSwgJGIgKXsKCQlzd2l0Y2ggKCRvcCkgewoJCQljYXNlICcrJzogcmV0dXJuICRhICsgJGI7CgkJCWNhc2UgJy0nOiByZXR1cm4gJGEgLSAkYjsKCQkJY2FzZSAnKic6IHJldHVybiAkYSAqICRiOwoJCQljYXNlICcvJzogcmV0dXJuICRhIC8gJGI7CgkJfQoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2xhbXAoJHZhbCwgJG1heCA9IDEpewoJCXJldHVybiBtaW4oIG1heCgkdmFsLCAwKSwgJG1heCk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm91bmQoICR2YWx1ZSApewoKCQlpZiggJHZhbHVlID09PSAwICl7CgkJCXJldHVybiAkdmFsdWU7CgkJfQoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydudW1QcmVjaXNpb24nXSApewoJCQkkcCA9IHBvdygxMCwgTGVzc19QYXJzZXI6OiRvcHRpb25zWydudW1QcmVjaXNpb24nXSk7CgkJCXJldHVybiByb3VuZCggJHZhbHVlICogJHApIC8gJHA7CgkJfQoJCXJldHVybiAkdmFsdWU7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBudW1iZXIoJG4pewoKCQlpZiAoJG4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSB7CgkJCXJldHVybiBmbG9hdHZhbCggJG4tPnVuaXQtPmlzKCclJykgPyAkbi0+dmFsdWUgLyAxMDAgOiAkbi0+dmFsdWUpOwoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkbikpIHsKCQkJcmV0dXJuICRuOwoJCX0gZWxzZSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigiY29sb3IgZnVuY3Rpb25zIHRha2UgbnVtYmVycyBhcyBwYXJhbWV0ZXJzIik7CgkJfQoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2NhbGVkKCRuLCAkc2l6ZSA9IDI1NSApewoJCWlmKCAkbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gJiYgJG4tPnVuaXQtPmlzKCclJykgKXsKCQkJcmV0dXJuIChmbG9hdCkkbi0+dmFsdWUgKiAkc2l6ZSAvIDEwMDsKCQl9IGVsc2UgewoJCQlyZXR1cm4gTGVzc19GdW5jdGlvbnM6Om51bWJlcigkbik7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZ2IgKCRyID0gbnVsbCwgJGcgPSBudWxsLCAkYiA9IG51bGwpewoJCWlmIChpc19udWxsKCRyKSB8fCBpc19udWxsKCRnKSB8fCBpc19udWxsKCRiKSkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoInJnYiBleHBlY3RzIHRocmVlIHBhcmFtZXRlcnMiKTsKCQl9CgkJcmV0dXJuICR0aGlzLT5yZ2JhKCRyLCAkZywgJGIsIDEuMCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJnYmEoJHIgPSBudWxsLCAkZyA9IG51bGwsICRiID0gbnVsbCwgJGEgPSBudWxsKXsKCQkkcmdiID0gYXJyYXkoJHIsICRnLCAkYik7CgkJJHJnYiA9IGFycmF5X21hcChhcnJheSgnTGVzc19GdW5jdGlvbnMnLCdzY2FsZWQnKSwkcmdiKTsKCgkJJGEgPSBzZWxmOjpudW1iZXIoJGEpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0NvbG9yKCRyZ2IsICRhKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaHNsKCRoLCAkcywgJGwpewoJCXJldHVybiAkdGhpcy0+aHNsYSgkaCwgJHMsICRsLCAxLjApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBoc2xhKCRoLCAkcywgJGwsICRhKXsKCgkJJGggPSBmbW9kKHNlbGY6Om51bWJlcigkaCksIDM2MCkgLyAzNjA7IC8vIENsYXNzaWMgJSBvcGVyYXRvciB3aWxsIGNoYW5nZSBmbG9hdCB0byBpbnQKCQkkcyA9IHNlbGY6OmNsYW1wKHNlbGY6Om51bWJlcigkcykpOwoJCSRsID0gc2VsZjo6Y2xhbXAoc2VsZjo6bnVtYmVyKCRsKSk7CgkJJGEgPSBzZWxmOjpjbGFtcChzZWxmOjpudW1iZXIoJGEpKTsKCgkJJG0yID0gJGwgPD0gMC41ID8gJGwgKiAoJHMgKyAxKSA6ICRsICsgJHMgLSAkbCAqICRzOwoKCQkkbTEgPSAkbCAqIDIgLSAkbTI7CgoJCXJldHVybiAkdGhpcy0+cmdiYSggc2VsZjo6aHNsYV9odWUoJGggKyAxLzMsICRtMSwgJG0yKSAqIDI1NSwKCQkJCQkJCXNlbGY6OmhzbGFfaHVlKCRoLCAkbTEsICRtMikgKiAyNTUsCgkJCQkJCQlzZWxmOjpoc2xhX2h1ZSgkaCAtIDEvMywgJG0xLCAkbTIpICogMjU1LAoJCQkJCQkJJGEpOwoJfQoKCS8qKgoJICogQHBhcmFtIGRvdWJsZSAkaAoJICovCglwdWJsaWMgZnVuY3Rpb24gaHNsYV9odWUoJGgsICRtMSwgJG0yKXsKCQkkaCA9ICRoIDwgMCA/ICRoICsgMSA6ICgkaCA+IDEgPyAkaCAtIDEgOiAkaCk7CgkJaWYJICAoJGggKiA2IDwgMSkgcmV0dXJuICRtMSArICgkbTIgLSAkbTEpICogJGggKiA2OwoJCWVsc2UgaWYgKCRoICogMiA8IDEpIHJldHVybiAkbTI7CgkJZWxzZSBpZiAoJGggKiAzIDwgMikgcmV0dXJuICRtMSArICgkbTIgLSAkbTEpICogKDIvMyAtICRoKSAqIDY7CgkJZWxzZQkJCQkgcmV0dXJuICRtMTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaHN2KCRoLCAkcywgJHYpIHsKCQlyZXR1cm4gJHRoaXMtPmhzdmEoJGgsICRzLCAkdiwgMS4wKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBkb3VibGUgJGEKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGhzdmEoJGgsICRzLCAkdiwgJGEpIHsKCQkkaCA9ICgoTGVzc19GdW5jdGlvbnM6Om51bWJlcigkaCkgJSAzNjApIC8gMzYwICkgKiAzNjA7CgkJJHMgPSBMZXNzX0Z1bmN0aW9uczo6bnVtYmVyKCRzKTsKCQkkdiA9IExlc3NfRnVuY3Rpb25zOjpudW1iZXIoJHYpOwoJCSRhID0gTGVzc19GdW5jdGlvbnM6Om51bWJlcigkYSk7CgoJCSRpID0gZmxvb3IoKCRoIC8gNjApICUgNik7CgkJJGYgPSAoJGggLyA2MCkgLSAkaTsKCgkJJHZzID0gYXJyYXkoICR2LAoJCQkJICAkdiAqICgxIC0gJHMpLAoJCQkJICAkdiAqICgxIC0gJGYgKiAkcyksCgkJCQkgICR2ICogKDEgLSAoMSAtICRmKSAqICRzKSk7CgoJCSRwZXJtID0gYXJyYXkoYXJyYXkoMCwgMywgMSksCgkJCQkJYXJyYXkoMiwgMCwgMSksCgkJCQkJYXJyYXkoMSwgMCwgMyksCgkJCQkJYXJyYXkoMSwgMiwgMCksCgkJCQkJYXJyYXkoMywgMSwgMCksCgkJCQkJYXJyYXkoMCwgMSwgMikpOwoKCQlyZXR1cm4gJHRoaXMtPnJnYmEoJHZzWyRwZXJtWyRpXVswXV0gKiAyNTUsCgkJCQkJCSAkdnNbJHBlcm1bJGldWzFdXSAqIDI1NSwKCQkJCQkJICR2c1skcGVybVskaV1bMl1dICogMjU1LAoJCQkJCQkgJGEpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBodWUoJGNvbG9yID0gbnVsbCl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gaHVlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRjID0gJGNvbG9yLT50b0hTTCgpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbihMZXNzX1BhcnNlcjo6cm91bmQoJGNbJ2gnXSkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzYXR1cmF0aW9uKCRjb2xvciA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNhdHVyYXRpb24gbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGMgPSAkY29sb3ItPnRvSFNMKCk7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKExlc3NfUGFyc2VyOjpyb3VuZCgkY1sncyddICogMTAwKSwgJyUnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbGlnaHRuZXNzKCRjb2xvciA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGxpZ2h0bmVzcyBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkYyA9ICRjb2xvci0+dG9IU0woKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oTGVzc19QYXJzZXI6OnJvdW5kKCRjWydsJ10gKiAxMDApLCAnJScpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBoc3ZodWUoICRjb2xvciA9IG51bGwgKXsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBoc3ZodWUgbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGhzdiA9ICRjb2xvci0+dG9IU1YoKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oIExlc3NfUGFyc2VyOjpyb3VuZCgkaHN2WydoJ10pICk7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBoc3ZzYXR1cmF0aW9uKCAkY29sb3IgPSBudWxsICl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gaHN2c2F0dXJhdGlvbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHN2ID0gJGNvbG9yLT50b0hTVigpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggTGVzc19QYXJzZXI6OnJvdW5kKCRoc3ZbJ3MnXSAqIDEwMCksICclJyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBoc3Z2YWx1ZSggJGNvbG9yID0gbnVsbCApewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGhzdnZhbHVlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRoc3YgPSAkY29sb3ItPnRvSFNWKCk7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCBMZXNzX1BhcnNlcjo6cm91bmQoJGhzdlsndiddICogMTAwKSwgJyUnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlZCgkY29sb3IgPSBudWxsKSB7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gcmVkIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGNvbG9yLT5yZ2JbMF0gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ3JlZW4oJGNvbG9yID0gbnVsbCkgewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGdyZWVuIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGNvbG9yLT5yZ2JbMV0gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYmx1ZSgkY29sb3IgPSBudWxsKSB7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gYmx1ZSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRjb2xvci0+cmdiWzJdICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFscGhhKCRjb2xvciA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGFscGhhIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRjID0gJGNvbG9yLT50b0hTTCgpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigkY1snYSddKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbHVtYSAoJGNvbG9yID0gbnVsbCkgewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGx1bWEgbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKExlc3NfUGFyc2VyOjpyb3VuZCggJGNvbG9yLT5sdW1hKCkgKiAkY29sb3ItPmFscGhhICogMTAwKSwgJyUnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbHVtaW5hbmNlKCAkY29sb3IgPSBudWxsICl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gbHVtaW5hbmNlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRsdW1pbmFuY2UgPQoJCQkoMC4yMTI2ICogJGNvbG9yLT5yZ2JbMF0gLyAyNTUpCgkJICArICgwLjcxNTIgKiAkY29sb3ItPnJnYlsxXSAvIDI1NSkKCQkgICsgKDAuMDcyMiAqICRjb2xvci0+cmdiWzJdIC8gMjU1KTsKCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKExlc3NfUGFyc2VyOjpyb3VuZCggJGx1bWluYW5jZSAqICRjb2xvci0+YWxwaGEgKiAxMDApLCAnJScpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzYXR1cmF0ZSgkY29sb3IgPSBudWxsLCAkYW1vdW50ID0gbnVsbCl7CgkJLy8gZmlsdGVyOiBzYXR1cmF0ZSgzLjIpOwoJCS8vIHNob3VsZCBiZSBrZXB0IGFzIGlzLCBzbyBjaGVjayBmb3IgY29sb3IKCQlpZiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNhdHVyYXRlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gc2F0dXJhdGUgbXVzdCBiZSBhIHBlcmNlbnRhZ2UnIC4gKCRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCgkJJGhzbFsncyddICs9ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCSRoc2xbJ3MnXSA9IHNlbGY6OmNsYW1wKCRoc2xbJ3MnXSk7CgoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9EaW1lbnNpb24gJGFtb3VudAoJICovCglwdWJsaWMgZnVuY3Rpb24gZGVzYXR1cmF0ZSgkY29sb3IgPSBudWxsLCAkYW1vdW50ID0gbnVsbCl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gZGVzYXR1cmF0ZSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoJCWlmICghJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGRlc2F0dXJhdGUgbXVzdCBiZSBhIHBlcmNlbnRhZ2UnIC4gKCRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCgkJJGhzbFsncyddIC09ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCSRoc2xbJ3MnXSA9IHNlbGY6OmNsYW1wKCRoc2xbJ3MnXSk7CgoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCgoJcHVibGljIGZ1bmN0aW9uIGxpZ2h0ZW4oJGNvbG9yID0gbnVsbCwgJGFtb3VudD1udWxsKXsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBsaWdodGVuIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gbGlnaHRlbiBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHNsID0gJGNvbG9yLT50b0hTTCgpOwoKCQkkaHNsWydsJ10gKz0gJGFtb3VudC0+dmFsdWUgLyAxMDA7CgkJJGhzbFsnbCddID0gc2VsZjo6Y2xhbXAoJGhzbFsnbCddKTsKCgkJcmV0dXJuICR0aGlzLT5oc2xhKCRoc2xbJ2gnXSwgJGhzbFsncyddLCAkaHNsWydsJ10sICRoc2xbJ2EnXSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGRhcmtlbigkY29sb3IgPSBudWxsLCAkYW1vdW50ID0gbnVsbCl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gZGFya2VuIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZGFya2VuIG11c3QgYmUgYSBwZXJjZW50YWdlJyAuICgkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRoc2wgPSAkY29sb3ItPnRvSFNMKCk7CgkJJGhzbFsnbCddIC09ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCSRoc2xbJ2wnXSA9IHNlbGY6OmNsYW1wKCRoc2xbJ2wnXSk7CgoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmYWRlaW4oJGNvbG9yID0gbnVsbCwgJGFtb3VudCA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGZhZGVpbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoJCWlmICghJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGZhZGVpbiBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHNsID0gJGNvbG9yLT50b0hTTCgpOwoJCSRoc2xbJ2EnXSArPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQkkaHNsWydhJ10gPSBzZWxmOjpjbGFtcCgkaHNsWydhJ10pOwoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmYWRlb3V0KCRjb2xvciA9IG51bGwsICRhbW91bnQgPSBudWxsKXsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBmYWRlb3V0IG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZmFkZW91dCBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHNsID0gJGNvbG9yLT50b0hTTCgpOwoJCSRoc2xbJ2EnXSAtPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQkkaHNsWydhJ10gPSBzZWxmOjpjbGFtcCgkaHNsWydhJ10pOwoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmYWRlKCRjb2xvciA9IG51bGwsICRhbW91bnQgPSBudWxsKXsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBmYWRlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZmFkZSBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHNsID0gJGNvbG9yLT50b0hTTCgpOwoKCQkkaHNsWydhJ10gPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQkkaHNsWydhJ10gPSBzZWxmOjpjbGFtcCgkaHNsWydhJ10pOwoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCgoJcHVibGljIGZ1bmN0aW9uIHNwaW4oJGNvbG9yID0gbnVsbCwgJGFtb3VudCA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNwaW4gbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHNlY29uZCBhcmd1bWVudCB0byBzcGluIG11c3QgYmUgYSBudW1iZXInIC4gKCRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCQkkaHVlID0gZm1vZCgkaHNsWydoJ10gKyAkYW1vdW50LT52YWx1ZSwgMzYwKTsKCgkJJGhzbFsnaCddID0gJGh1ZSA8IDAgPyAzNjAgKyAkaHVlIDogJGh1ZTsKCgkJcmV0dXJuICR0aGlzLT5oc2xhKCRoc2xbJ2gnXSwgJGhzbFsncyddLCAkaHNsWydsJ10sICRoc2xbJ2EnXSk7Cgl9CgoJLy8KCS8vIENvcHlyaWdodCAoYykgMjAwNi0yMDA5IEhhbXB0b24gQ2F0bGluLCBOYXRoYW4gV2VpemVuYmF1bSwgYW5kIENocmlzIEVwcHN0ZWluCgkvLyBodHRwOi8vc2Fzcy1sYW5nLmNvbQoJLy8KCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfQ29sb3IgJGNvbG9yMQoJICovCglwdWJsaWMgZnVuY3Rpb24gbWl4KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCwgJHdlaWdodCA9IG51bGwpewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBtaXggbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHNlY29uZCBhcmd1bWVudCB0byBtaXggbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkd2VpZ2h0KSB7CgkJCSR3ZWlnaHQgPSBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbignNTAnLCAnJScpOwoJCX0KCQlpZiAoISR3ZWlnaHQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHRoaXJkIGFyZ3VtZW50IHRvIGNvbnRyYXN0IG11c3QgYmUgYSBwZXJjZW50YWdlJyAuICgkd2VpZ2h0IGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRwID0gJHdlaWdodC0+dmFsdWUgLyAxMDAuMDsKCQkkdyA9ICRwICogMiAtIDE7CgkJJGhzbDEgPSAkY29sb3IxLT50b0hTTCgpOwoJCSRoc2wyID0gJGNvbG9yMi0+dG9IU0woKTsKCQkkYSA9ICRoc2wxWydhJ10gLSAkaHNsMlsnYSddOwoKCQkkdzEgPSAoKCgoJHcgKiAkYSkgPT0gLTEpID8gJHcgOiAoJHcgKyAkYSkgLyAoMSArICR3ICogJGEpKSArIDEpIC8gMjsKCQkkdzIgPSAxIC0gJHcxOwoKCQkkcmdiID0gYXJyYXkoJGNvbG9yMS0+cmdiWzBdICogJHcxICsgJGNvbG9yMi0+cmdiWzBdICogJHcyLAoJCQkJCSAkY29sb3IxLT5yZ2JbMV0gKiAkdzEgKyAkY29sb3IyLT5yZ2JbMV0gKiAkdzIsCgkJCQkJICRjb2xvcjEtPnJnYlsyXSAqICR3MSArICRjb2xvcjItPnJnYlsyXSAqICR3Mik7CgoJCSRhbHBoYSA9ICRjb2xvcjEtPmFscGhhICogJHAgKyAkY29sb3IyLT5hbHBoYSAqICgxIC0gJHApOwoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvcigkcmdiLCAkYWxwaGEpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBncmV5c2NhbGUoJGNvbG9yKXsKCQlyZXR1cm4gJHRoaXMtPmRlc2F0dXJhdGUoJGNvbG9yLCBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigxMDAsJyUnKSk7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBjb250cmFzdCggJGNvbG9yLCAkZGFyayA9IG51bGwsICRsaWdodCA9IG51bGwsICR0aHJlc2hvbGQgPSBudWxsKXsKCQkvLyBmaWx0ZXI6IGNvbnRyYXN0KDMuMik7CgkJLy8gc2hvdWxkIGJlIGtlcHQgYXMgaXMsIHNvIGNoZWNrIGZvciBjb2xvcgoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCQlpZiggISRsaWdodCApewoJCQkkbGlnaHQgPSAkdGhpcy0+cmdiYSgyNTUsIDI1NSwgMjU1LCAxLjApOwoJCX0KCQlpZiggISRkYXJrICl7CgkJCSRkYXJrID0gJHRoaXMtPnJnYmEoMCwgMCwgMCwgMS4wKTsKCQl9CgoJCWlmICghJGRhcmsgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGNvbnRyYXN0IG11c3QgYmUgYSBjb2xvcicgLiAoJGRhcmsgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRsaWdodCBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSB0aGlyZCBhcmd1bWVudCB0byBjb250cmFzdCBtdXN0IGJlIGEgY29sb3InIC4gKCRsaWdodCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkvL0ZpZ3VyZSBvdXQgd2hpY2ggaXMgYWN0dWFsbHkgbGlnaHQgYW5kIGRhcmshCgkJaWYoICRkYXJrLT5sdW1hKCkgPiAkbGlnaHQtPmx1bWEoKSApewoJCQkkdCA9ICRsaWdodDsKCQkJJGxpZ2h0ID0gJGRhcms7CgkJCSRkYXJrID0gJHQ7CgkJfQoJCWlmKCAhJHRocmVzaG9sZCApewoJCQkkdGhyZXNob2xkID0gMC40MzsKCQl9IGVsc2UgewoJCQkkdGhyZXNob2xkID0gTGVzc19GdW5jdGlvbnM6Om51bWJlcigkdGhyZXNob2xkKTsKCQl9CgoJCWlmKCAkY29sb3ItPmx1bWEoKSA8ICR0aHJlc2hvbGQgKXsKCQkJcmV0dXJuICRsaWdodDsKCQl9IGVsc2UgewoJCQlyZXR1cm4gJGRhcms7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlICgkc3RyKXsKCQlpZiggaXNfc3RyaW5nKCRzdHIpICl7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fub255bW91cygkc3RyKTsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCRzdHIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfSmF2YVNjcmlwdCA/ICRzdHItPmV4cHJlc3Npb24gOiAkc3RyLT52YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGVzY2FwZSAoJHN0cil7CgoJCSRyZXZlcnQgPSBhcnJheSgnJTIxJz0+JyEnLCAnJTJBJz0+JyonLCAnJTI3Jz0+IiciLCclM0YnPT4nPycsJyUyNic9PicmJywnJTJDJz0+JywnLCclMkYnPT4nLycsJyU0MCc9PidAJywnJTJCJz0+JysnLCclMjQnPT4nJCcpOwoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoc3RydHIocmF3dXJsZW5jb2RlKCRzdHItPnZhbHVlKSwgJHJldmVydCkpOwoJfQoKCgkvKioKCSAqIHRvZG86IFRoaXMgZnVuY3Rpb24gd2lsbCBuZWVkIHNvbWUgYWRkaXRpb25hbCB3b3JrIHRvIG1ha2UgaXQgd29yayB0aGUgc2FtZSBhcyBsZXNzLmpzCgkgKgoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVwbGFjZSggJHN0cmluZywgJHBhdHRlcm4sICRyZXBsYWNlbWVudCwgJGZsYWdzID0gbnVsbCApewoJCSRyZXN1bHQgPSAkc3RyaW5nLT52YWx1ZTsKCgkJJGV4cHIgPSAnLycuc3RyX3JlcGxhY2UoJy8nLCdcXC8nLCRwYXR0ZXJuLT52YWx1ZSkuJy8nOwoJCWlmKCAkZmxhZ3MgJiYgJGZsYWdzLT52YWx1ZSl7CgkJCSRleHByIC49IHNlbGY6OnJlcGxhY2VfZmxhZ3MoJGZsYWdzLT52YWx1ZSk7CgkJfQoKCQkkcmVzdWx0ID0gcHJlZ19yZXBsYWNlKCRleHByLCRyZXBsYWNlbWVudC0+dmFsdWUsJHJlc3VsdCk7CgoKCQlpZiggcHJvcGVydHlfZXhpc3RzKCRzdHJpbmcsJ3F1b3RlJykgKXsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfUXVvdGVkKCAkc3RyaW5nLT5xdW90ZSwgJHJlc3VsdCwgJHN0cmluZy0+ZXNjYXBlZCk7CgkJfQoJCXJldHVybiBuZXcgTGVzc19UcmVlX1F1b3RlZCggJycsICRyZXN1bHQgKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlcGxhY2VfZmxhZ3MoJGZsYWdzKXsKCQkkZmxhZ3MgPSBzdHJfc3BsaXQoJGZsYWdzLDEpOwoJCSRuZXdfZmxhZ3MgPSAnJzsKCgkJZm9yZWFjaCgkZmxhZ3MgYXMgJGZsYWcpewoJCQlzd2l0Y2goJGZsYWcpewoJCQkJY2FzZSAnZSc6CgkJCQljYXNlICdnJzoKCQkJCWJyZWFrOwoKCQkJCWRlZmF1bHQ6CgkJCQkkbmV3X2ZsYWdzIC49ICRmbGFnOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgoJCXJldHVybiAkbmV3X2ZsYWdzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfcGVyY2VudCgpewoJCSRzdHJpbmcgPSBmdW5jX2dldF9hcmcoMCk7CgoJCSRhcmdzID0gZnVuY19nZXRfYXJncygpOwoJCWFycmF5X3NoaWZ0KCRhcmdzKTsKCQkkcmVzdWx0ID0gJHN0cmluZy0+dmFsdWU7CgoJCWZvcmVhY2goJGFyZ3MgYXMgJGFyZyl7CgkJCWlmKCBwcmVnX21hdGNoKCcvJVtzZGFdL2knLCRyZXN1bHQsICR0b2tlbikgKXsKCQkJCSR0b2tlbiA9ICR0b2tlblswXTsKCQkJCSR2YWx1ZSA9IHN0cmlzdHIoJHRva2VuLCAncycpID8gJGFyZy0+dmFsdWUgOiAkYXJnLT50b0NTUygpOwoJCQkJJHZhbHVlID0gcHJlZ19tYXRjaCgnL1tBLVpdJC8nLCAkdG9rZW4pID8gdXJsZW5jb2RlKCR2YWx1ZSkgOiAkdmFsdWU7CgkJCQkkcmVzdWx0ID0gcHJlZ19yZXBsYWNlKCcvJVtzZGFdL2knLCR2YWx1ZSwgJHJlc3VsdCwgMSk7CgkJCX0KCQl9CgkJJHJlc3VsdCA9IHN0cl9yZXBsYWNlKCclJScsICclJywgJHJlc3VsdCk7CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX1F1b3RlZCggJHN0cmluZy0+cXVvdGUgLCAkcmVzdWx0LCAkc3RyaW5nLT5lc2NhcGVkKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdW5pdCggJHZhbCwgJHVuaXQgPSBudWxsKSB7CgkJaWYoICEoJHZhbCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHVuaXQgbXVzdCBiZSBhIG51bWJlcicgLiAoJHZhbCBpbnN0YW5jZW9mIExlc3NfVHJlZV9PcGVyYXRpb24gPyAnLiBIYXZlIHlvdSBmb3Jnb3R0ZW4gcGFyZW50aGVzaXM/JyA6ICcuJykgKTsKCQl9CgoJCWlmKCAkdW5pdCApewoJCQlpZiggJHVuaXQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfS2V5d29yZCApewoJCQkJJHVuaXQgPSAkdW5pdC0+dmFsdWU7CgkJCX0gZWxzZSB7CgkJCQkkdW5pdCA9ICR1bml0LT50b0NTUygpOwoJCQl9CgkJfSBlbHNlIHsKCQkJJHVuaXQgPSAiIjsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCR2YWwtPnZhbHVlLCAkdW5pdCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb252ZXJ0KCR2YWwsICR1bml0KXsKCQlyZXR1cm4gJHZhbC0+Y29udmVydFRvKCR1bml0LT52YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJvdW5kKCRuLCAkZiA9IGZhbHNlKSB7CgoJCSRmcmFjdGlvbiA9IDA7CgkJaWYoICRmICE9PSBmYWxzZSApewoJCQkkZnJhY3Rpb24gPSAkZi0+dmFsdWU7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPl9tYXRoKCdMZXNzX1BhcnNlcjo6cm91bmQnLG51bGwsICRuLCAkZnJhY3Rpb24pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwaSgpewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbihNX1BJKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbW9kKCRhLCAkYikgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGEtPnZhbHVlICUgJGItPnZhbHVlLCAkYS0+dW5pdCk7Cgl9CgoKCglwdWJsaWMgZnVuY3Rpb24gcG93KCR4LCAkeSkgewoJCWlmKCBpc19udW1lcmljKCR4KSAmJiBpc19udW1lcmljKCR5KSApewoJCQkkeCA9IG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCR4KTsKCQkJJHkgPSBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigkeSk7CgkJfWVsc2VpZiggISgkeCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pIHx8ICEoJHkgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSApewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ0FyZ3VtZW50cyBtdXN0IGJlIG51bWJlcnMnKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggcG93KCR4LT52YWx1ZSwgJHktPnZhbHVlKSwgJHgtPnVuaXQgKTsKCX0KCgkvLyB2YXIgbWF0aEZ1bmN0aW9ucyA9IFt7bmFtZToiY2UgLi4uCglwdWJsaWMgZnVuY3Rpb24gY2VpbCggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2NlaWwnLCBudWxsLCAkbik7IH0KCXB1YmxpYyBmdW5jdGlvbiBmbG9vciggJG4gKXsJcmV0dXJuICR0aGlzLT5fbWF0aCgnZmxvb3InLCBudWxsLCAkbik7IH0KCXB1YmxpYyBmdW5jdGlvbiBzcXJ0KCAkbiApewkJcmV0dXJuICR0aGlzLT5fbWF0aCgnc3FydCcsIG51bGwsICRuKTsgfQoJcHVibGljIGZ1bmN0aW9uIGFicyggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2FicycsIG51bGwsICRuKTsgfQoKCXB1YmxpYyBmdW5jdGlvbiB0YW4oICRuICl7CQlyZXR1cm4gJHRoaXMtPl9tYXRoKCd0YW4nLCAnJywgJG4pOwl9CglwdWJsaWMgZnVuY3Rpb24gc2luKCAkbiApewkJcmV0dXJuICR0aGlzLT5fbWF0aCgnc2luJywgJycsICRuKTsJfQoJcHVibGljIGZ1bmN0aW9uIGNvcyggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2NvcycsICcnLCAkbik7CX0KCglwdWJsaWMgZnVuY3Rpb24gYXRhbiggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2F0YW4nLCAncmFkJywgJG4pOwl9CglwdWJsaWMgZnVuY3Rpb24gYXNpbiggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2FzaW4nLCAncmFkJywgJG4pOwl9CglwdWJsaWMgZnVuY3Rpb24gYWNvcyggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2Fjb3MnLCAncmFkJywgJG4pOwl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBfbWF0aCgpIHsKCQkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCQkkZm4gPSBhcnJheV9zaGlmdCgkYXJncyk7CgkJJHVuaXQgPSBhcnJheV9zaGlmdCgkYXJncyk7CgoJCWlmICgkYXJnc1swXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pIHsKCgkJCWlmKCAkdW5pdCA9PT0gbnVsbCApewoJCQkJJHVuaXQgPSAkYXJnc1swXS0+dW5pdDsKCQkJfWVsc2V7CgkJCQkkYXJnc1swXSA9ICRhcmdzWzBdLT51bmlmeSgpOwoJCQl9CgkJCSRhcmdzWzBdID0gKGZsb2F0KSRhcmdzWzBdLT52YWx1ZTsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCBjYWxsX3VzZXJfZnVuY19hcnJheSgkZm4sICRhcmdzKSwgJHVuaXQpOwoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkYXJnc1swXSkpIHsKCQkJcmV0dXJuIGNhbGxfdXNlcl9mdW5jX2FycmF5KCRmbiwkYXJncyk7CgkJfSBlbHNlIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJtYXRoIGZ1bmN0aW9ucyB0YWtlIG51bWJlcnMgYXMgcGFyYW1ldGVycyIpOwoJCX0KCX0KCgkvKioKCSAqIEBwYXJhbSBib29sZWFuICRpc01pbgoJICovCglwcml2YXRlIGZ1bmN0aW9uIF9taW5tYXgoICRpc01pbiwgJGFyZ3MgKXsKCgkJJGFyZ19jb3VudCA9IGNvdW50KCRhcmdzKTsKCgkJaWYoICRhcmdfY291bnQgPCAxICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggJ29uZSBvciBtb3JlIGFyZ3VtZW50cyByZXF1aXJlZCcpOwoJCX0KCgkJJGogPSBudWxsOwoJCSR1bml0Q2xvbmUgPSBudWxsOwoJCSR1bml0U3RhdGljID0gbnVsbDsKCgoJCSRvcmRlciA9IGFycmF5KCk7CS8vIGVsZW1zIG9ubHkgY29udGFpbnMgb3JpZ2luYWwgYXJndW1lbnQgdmFsdWVzLgoJCSR2YWx1ZXMgPSBhcnJheSgpOwkvLyBrZXkgaXMgdGhlIHVuaXQudG9TdHJpbmcoKSBmb3IgdW5pZmllZCB0cmVlLkRpbWVuc2lvbiB2YWx1ZXMsCgkJCQkJCQkvLyB2YWx1ZSBpcyB0aGUgaW5kZXggaW50byB0aGUgb3JkZXIgYXJyYXkuCgoKCQlmb3IoICRpID0gMDsgJGkgPCAkYXJnX2NvdW50OyAkaSsrICl7CgkJCSRjdXJyZW50ID0gJGFyZ3NbJGldOwoJCQlpZiggISgkY3VycmVudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pICl7CgkJCQlpZiggaXNfYXJyYXkoJGFyZ3NbJGldLT52YWx1ZSkgKXsKCQkJCQkkYXJnc1tdID0gJGFyZ3NbJGldLT52YWx1ZTsKCQkJCX0KCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQlpZiggJGN1cnJlbnQtPnVuaXQtPnRvU3RyaW5nKCkgPT09ICcnICYmICEkdW5pdENsb25lICl7CgkJCQkkdGVtcCA9IG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCRjdXJyZW50LT52YWx1ZSwgJHVuaXRDbG9uZSk7CgkJCQkkY3VycmVudFVuaWZpZWQgPSAkdGVtcC0+dW5pZnkoKTsKCQkJfWVsc2V7CgkJCQkkY3VycmVudFVuaWZpZWQgPSAkY3VycmVudC0+dW5pZnkoKTsKCQkJfQoKCQkJaWYoICRjdXJyZW50VW5pZmllZC0+dW5pdC0+dG9TdHJpbmcoKSA9PT0gIiIgJiYgISR1bml0U3RhdGljICl7CgkJCQkkdW5pdCA9ICR1bml0U3RhdGljOwoJCQl9ZWxzZXsKCQkJCSR1bml0ID0gJGN1cnJlbnRVbmlmaWVkLT51bml0LT50b1N0cmluZygpOwoJCQl9CgoJCQlpZiggJHVuaXQgIT09ICcnICYmICEkdW5pdFN0YXRpYyB8fCAkdW5pdCAhPT0gJycgJiYgJG9yZGVyWzBdLT51bmlmeSgpLT51bml0LT50b1N0cmluZygpID09PSAiIiApewoJCQkJJHVuaXRTdGF0aWMgPSAkdW5pdDsKCQkJfQoKCQkJaWYoICR1bml0ICE9ICcnICYmICEkdW5pdENsb25lICl7CgkJCQkkdW5pdENsb25lID0gJGN1cnJlbnQtPnVuaXQtPnRvU3RyaW5nKCk7CgkJCX0KCgkJCWlmKCBpc3NldCgkdmFsdWVzWycnXSkgJiYgJHVuaXQgIT09ICcnICYmICR1bml0ID09PSAkdW5pdFN0YXRpYyApewoJCQkJJGogPSAkdmFsdWVzWycnXTsKCQkJfWVsc2VpZiggaXNzZXQoJHZhbHVlc1skdW5pdF0pICl7CgkJCQkkaiA9ICR2YWx1ZXNbJHVuaXRdOwoJCQl9ZWxzZXsKCgkJCQlpZiggJHVuaXRTdGF0aWMgJiYgJHVuaXQgIT09ICR1bml0U3RhdGljICl7CgkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAnaW5jb21wYXRpYmxlIHR5cGVzJyk7CgkJCQl9CgkJCQkkdmFsdWVzWyR1bml0XSA9IGNvdW50KCRvcmRlcik7CgkJCQkkb3JkZXJbXSA9ICRjdXJyZW50OwoJCQkJY29udGludWU7CgkJCX0KCgoJCQlpZiggJG9yZGVyWyRqXS0+dW5pdC0+dG9TdHJpbmcoKSA9PT0gIiIgJiYgJHVuaXRDbG9uZSApewoJCQkJJHRlbXAgPSBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJG9yZGVyWyRqXS0+dmFsdWUsICR1bml0Q2xvbmUpOwoJCQkJJHJlZmVyZW5jZVVuaWZpZWQgPSAkdGVtcC0+dW5pZnkoKTsKCQkJfWVsc2V7CgkJCQkkcmVmZXJlbmNlVW5pZmllZCA9ICRvcmRlclskal0tPnVuaWZ5KCk7CgkJCX0KCQkJaWYoICgkaXNNaW4gJiYgJGN1cnJlbnRVbmlmaWVkLT52YWx1ZSA8ICRyZWZlcmVuY2VVbmlmaWVkLT52YWx1ZSkgfHwgKCEkaXNNaW4gJiYgJGN1cnJlbnRVbmlmaWVkLT52YWx1ZSA+ICRyZWZlcmVuY2VVbmlmaWVkLT52YWx1ZSkgKXsKCQkJCSRvcmRlclskal0gPSAkY3VycmVudDsKCQkJfQoJCX0KCgkJaWYoIGNvdW50KCRvcmRlcikgPT0gMSApewoJCQlyZXR1cm4gJG9yZGVyWzBdOwoJCX0KCQkkYXJncyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkb3JkZXIgYXMgJGEpewoJCQkkYXJnc1tdID0gJGEtPnRvQ1NTKCR0aGlzLT5lbnYpOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoICgkaXNNaW4/J21pbignOidtYXgoJykgLiBpbXBsb2RlKExlc3NfRW52aXJvbm1lbnQ6OiRfb3V0cHV0TWFwWycsJ10sJGFyZ3MpLicpJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1pbigpewoJCSRhcmdzID0gZnVuY19nZXRfYXJncygpOwoJCXJldHVybiAkdGhpcy0+X21pbm1heCggdHJ1ZSwgJGFyZ3MgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbWF4KCl7CgkJJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgkJcmV0dXJuICR0aGlzLT5fbWlubWF4KCBmYWxzZSwgJGFyZ3MgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0dW5pdCgkbil7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCRuLT51bml0KTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYXJnYigkY29sb3IpIHsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBhcmdiIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fub255bW91cygkY29sb3ItPnRvQVJHQigpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcGVyY2VudGFnZSgkbikgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigkbi0+dmFsdWUgKiAxMDAsICclJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbG9yKCRuKSB7CgoJCWlmKCAkbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQgKXsKCQkJJGNvbG9yQ2FuZGlkYXRlID0gJG4tPnZhbHVlOwoJCQkkcmV0dXJuQ29sb3IgPSBMZXNzX1RyZWVfQ29sb3I6OmZyb21LZXl3b3JkKCRjb2xvckNhbmRpZGF0ZSk7CgkJCWlmKCAkcmV0dXJuQ29sb3IgKXsKCQkJCXJldHVybiAkcmV0dXJuQ29sb3I7CgkJCX0KCQkJaWYoIHByZWdfbWF0Y2goJy9eIyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkvJywkY29sb3JDYW5kaWRhdGUpICl7CgkJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvcihzdWJzdHIoJGNvbG9yQ2FuZGlkYXRlLCAxKSk7CgkJCX0KCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJhcmd1bWVudCBtdXN0IGJlIGEgY29sb3Iga2V5d29yZCBvciAzLzYgZGlnaXQgaGV4IGUuZy4gI0ZGRiIpOwoJCX0gZWxzZSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigiYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpOwoJCX0KCX0KCgoJcHVibGljIGZ1bmN0aW9uIGlzY29sb3IoJG4pIHsKCQlyZXR1cm4gJHRoaXMtPl9pc2EoJG4sICdMZXNzX1RyZWVfQ29sb3InKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNudW1iZXIoJG4pIHsKCQlyZXR1cm4gJHRoaXMtPl9pc2EoJG4sICdMZXNzX1RyZWVfRGltZW5zaW9uJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzc3RyaW5nKCRuKSB7CgkJcmV0dXJuICR0aGlzLT5faXNhKCRuLCAnTGVzc19UcmVlX1F1b3RlZCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc2tleXdvcmQoJG4pIHsKCQlyZXR1cm4gJHRoaXMtPl9pc2EoJG4sICdMZXNzX1RyZWVfS2V5d29yZCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc3VybCgkbikgewoJCXJldHVybiAkdGhpcy0+X2lzYSgkbiwgJ0xlc3NfVHJlZV9VcmwnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNwaXhlbCgkbikgewoJCXJldHVybiAkdGhpcy0+aXN1bml0KCRuLCAncHgnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNwZXJjZW50YWdlKCRuKSB7CgkJcmV0dXJuICR0aGlzLT5pc3VuaXQoJG4sICclJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzZW0oJG4pIHsKCQlyZXR1cm4gJHRoaXMtPmlzdW5pdCgkbiwgJ2VtJyk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICR1bml0CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpc3VuaXQoICRuLCAkdW5pdCApewoJCXJldHVybiAoJG4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSAmJiAkbi0+dW5pdC0+aXMoICggcHJvcGVydHlfZXhpc3RzKCR1bml0LCd2YWx1ZScpID8gJHVuaXQtPnZhbHVlIDogJHVuaXQpICkgPyBuZXcgTGVzc19UcmVlX0tleXdvcmQoJ3RydWUnKSA6IG5ldyBMZXNzX1RyZWVfS2V5d29yZCgnZmFsc2UnKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBfaXNhKCRuLCAkdHlwZSkgewoJCXJldHVybiBpc19hKCRuLCAkdHlwZSkgPyBuZXcgTGVzc19UcmVlX0tleXdvcmQoJ3RydWUnKSA6IG5ldyBMZXNzX1RyZWVfS2V5d29yZCgnZmFsc2UnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHsKCQlyZXR1cm4gJHRoaXMtPm1peCggJHRoaXMtPnJnYigyNTUsMjU1LDI1NSksICRjb2xvciwgJGFtb3VudCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkgewoJCXJldHVybiAkdGhpcy0+bWl4KCR0aGlzLT5yZ2IoMCwgMCwgMCksICRjb2xvciwgJGFtb3VudCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGV4dHJhY3QoJHZhbHVlcywgJGluZGV4ICl7CgkJJGluZGV4ID0gKGludCkkaW5kZXgtPnZhbHVlIC0gMTsgLy8gKDEtYmFzZWQgaW5kZXgpCgkJLy8gaGFuZGxlIG5vbi1hcnJheSB2YWx1ZXMgYXMgYW4gYXJyYXkgb2YgbGVuZ3RoIDEKCQkvLyByZXR1cm4gJ3VuZGVmaW5lZCcgaWYgaW5kZXggaXMgaW52YWxpZAoJCWlmKCBwcm9wZXJ0eV9leGlzdHMoJHZhbHVlcywndmFsdWUnKSAmJiBpc19hcnJheSgkdmFsdWVzLT52YWx1ZSkgKXsKCQkJaWYoIGlzc2V0KCR2YWx1ZXMtPnZhbHVlWyRpbmRleF0pICl7CgkJCQlyZXR1cm4gJHZhbHVlcy0+dmFsdWVbJGluZGV4XTsKCQkJfQoJCQlyZXR1cm4gbnVsbDsKCgkJfWVsc2VpZiggKGludCkkaW5kZXggPT09IDAgKXsKCQkJcmV0dXJuICR2YWx1ZXM7CgkJfQoKCQlyZXR1cm4gbnVsbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbGVuZ3RoKCR2YWx1ZXMpewoJCSRuID0gKHByb3BlcnR5X2V4aXN0cygkdmFsdWVzLCd2YWx1ZScpICYmIGlzX2FycmF5KCR2YWx1ZXMtPnZhbHVlKSkgPyBjb3VudCgkdmFsdWVzLT52YWx1ZSkgOiAxOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigkbik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGRhdGF1cmkoJG1pbWV0eXBlTm9kZSwgJGZpbGVQYXRoTm9kZSA9IG51bGwgKSB7CgoJCSRmaWxlUGF0aCA9ICggJGZpbGVQYXRoTm9kZSA/ICRmaWxlUGF0aE5vZGUtPnZhbHVlIDogbnVsbCApOwoJCSRtaW1ldHlwZSA9ICRtaW1ldHlwZU5vZGUtPnZhbHVlOwoKCQkkYXJncyA9IDI7CgkJaWYoICEkZmlsZVBhdGggKXsKCQkJJGZpbGVQYXRoID0gJG1pbWV0eXBlOwoJCQkkYXJncyA9IDE7CgkJfQoKCQkkZmlsZVBhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCcvJywkZmlsZVBhdGgpOwoJCWlmKCBMZXNzX0Vudmlyb25tZW50Ojppc1BhdGhSZWxhdGl2ZSgkZmlsZVBhdGgpICl7CgoJCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydyZWxhdGl2ZVVybHMnXSApewoJCQkJJHRlbXAgPSAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydjdXJyZW50RGlyZWN0b3J5J107CgkJCX0gZWxzZSB7CgkJCQkkdGVtcCA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ2VudHJ5UGF0aCddOwoJCQl9CgoJCQlpZiggIWVtcHR5KCR0ZW1wKSApewoJCQkJJGZpbGVQYXRoID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aChydHJpbSgkdGVtcCwnLycpLicvJy4kZmlsZVBhdGgpOwoJCQl9CgoJCX0KCgoJCS8vIGRldGVjdCB0aGUgbWltZXR5cGUgaWYgbm90IGdpdmVuCgkJaWYoICRhcmdzIDwgMiApewoKCQkJLyogaW5jb21wbGV0ZQoJCQkkbWltZSA9IHJlcXVpcmUoJ21pbWUnKTsKCQkJbWltZXR5cGUgPSBtaW1lLmxvb2t1cChwYXRoKTsKCgkJCS8vIHVzZSBiYXNlIDY0IHVubGVzcyBpdCdzIGFuIEFTQ0lJIG9yIFVURi04IGZvcm1hdAoJCQl2YXIgY2hhcnNldCA9IG1pbWUuY2hhcnNldHMubG9va3VwKG1pbWV0eXBlKTsKCQkJdXNlQmFzZTY0ID0gWydVUy1BU0NJSScsICdVVEYtOCddLmluZGV4T2YoY2hhcnNldCkgPCAwOwoJCQlpZiAodXNlQmFzZTY0KSBtaW1ldHlwZSArPSAnO2Jhc2U2NCc7CgkJCSovCgoJCQkkbWltZXR5cGUgPSBMZXNzX01pbWU6Omxvb2t1cCgkZmlsZVBhdGgpOwoKCQkJJGNoYXJzZXQgPSBMZXNzX01pbWU6OmNoYXJzZXRzX2xvb2t1cCgkbWltZXR5cGUpOwoJCQkkdXNlQmFzZTY0ID0gIWluX2FycmF5KCRjaGFyc2V0LGFycmF5KCdVUy1BU0NJSScsICdVVEYtOCcpKTsKCQkJaWYoICR1c2VCYXNlNjQgKXsgJG1pbWV0eXBlIC49ICc7YmFzZTY0JzsgfQoKCQl9ZWxzZXsKCQkJJHVzZUJhc2U2NCA9IHByZWdfbWF0Y2goJy87YmFzZTY0JC8nLCRtaW1ldHlwZSk7CgkJfQoKCgkJaWYoIGZpbGVfZXhpc3RzKCRmaWxlUGF0aCkgKXsKCQkJJGJ1ZiA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZVBhdGgpOwoJCX1lbHNlewoJCQkkYnVmID0gZmFsc2U7CgkJfQoKCgkJLy8gSUU4IGNhbm5vdCBoYW5kbGUgYSBkYXRhLXVyaSBsYXJnZXIgdGhhbiAzMktCLiBJZiB0aGlzIGlzIGV4Y2VlZGVkCgkJLy8gYW5kIHRoZSAtLWllQ29tcGF0IGZsYWcgaXMgZW5hYmxlZCwgcmV0dXJuIGEgbm9ybWFsIHVybCgpIGluc3RlYWQuCgkJJERBVEFfVVJJX01BWF9LQiA9IDMyOwoJCSRmaWxlU2l6ZUluS0IgPSByb3VuZCggc3RybGVuKCRidWYpIC8gMTAyNCApOwoJCWlmKCAkZmlsZVNpemVJbktCID49ICREQVRBX1VSSV9NQVhfS0IgKXsKCQkJJHVybCA9IG5ldyBMZXNzX1RyZWVfVXJsKCAoJGZpbGVQYXRoTm9kZSA/ICRmaWxlUGF0aE5vZGUgOiAkbWltZXR5cGVOb2RlKSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyk7CgkJCXJldHVybiAkdXJsLT5jb21waWxlKCR0aGlzKTsKCQl9CgoJCWlmKCAkYnVmICl7CgkJCSRidWYgPSAkdXNlQmFzZTY0ID8gYmFzZTY0X2VuY29kZSgkYnVmKSA6IHJhd3VybGVuY29kZSgkYnVmKTsKCQkJJGZpbGVQYXRoID0gJyJkYXRhOicgLiAkbWltZXR5cGUgLiAnLCcgLiAkYnVmIC4gJyInOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVXJsKCBuZXcgTGVzc19UcmVlX0Fub255bW91cygkZmlsZVBhdGgpICk7Cgl9CgoJLy9zdmctZ3JhZGllbnQKCXB1YmxpYyBmdW5jdGlvbiBzdmdncmFkaWVudCggJGRpcmVjdGlvbiApewoKCQkkdGhyb3dfbWVzc2FnZSA9ICdzdmctZ3JhZGllbnQgZXhwZWN0cyBkaXJlY3Rpb24sIHN0YXJ0X2NvbG9yIFtzdGFydF9wb3NpdGlvbl0sIFtjb2xvciBwb3NpdGlvbixdLi4uLCBlbmRfY29sb3IgW2VuZF9wb3NpdGlvbl0nOwoJCSRhcmd1bWVudHMgPSBmdW5jX2dldF9hcmdzKCk7CgoJCWlmKCBjb3VudCgkYXJndW1lbnRzKSA8IDMgKXsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAkdGhyb3dfbWVzc2FnZSApOwoJCX0KCgkJJHN0b3BzID0gYXJyYXlfc2xpY2UoJGFyZ3VtZW50cywxKTsKCQkkZ3JhZGllbnRUeXBlID0gJ2xpbmVhcic7CgkJJHJlY3RhbmdsZURpbWVuc2lvbiA9ICd4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIic7CgkJJHVzZUJhc2U2NCA9IHRydWU7CgkJJGRpcmVjdGlvblZhbHVlID0gJGRpcmVjdGlvbi0+dG9DU1MoKTsKCgoJCXN3aXRjaCggJGRpcmVjdGlvblZhbHVlICl7CgkJCWNhc2UgInRvIGJvdHRvbSI6CgkJCQkkZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byByaWdodCI6CgkJCQkkZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byBib3R0b20gcmlnaHQiOgoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byB0b3AgcmlnaHQiOgoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjEwMCUiIHgyPSIxMDAlIiB5Mj0iMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJlbGxpcHNlIjoKCQkJY2FzZSAiZWxsaXBzZSBhdCBjZW50ZXIiOgoJCQkJJGdyYWRpZW50VHlwZSA9ICJyYWRpYWwiOwoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ2N4PSI1MCUiIGN5PSI1MCUiIHI9Ijc1JSInOwoJCQkJJHJlY3RhbmdsZURpbWVuc2lvbiA9ICd4PSItNTAiIHk9Ii01MCIgd2lkdGg9IjEwMSIgaGVpZ2h0PSIxMDEiJzsKCQkJCWJyZWFrOwoJCQlkZWZhdWx0OgoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAic3ZnLWdyYWRpZW50IGRpcmVjdGlvbiBtdXN0IGJlICd0byBib3R0b20nLCAndG8gcmlnaHQnLCAndG8gYm90dG9tIHJpZ2h0JywgJ3RvIHRvcCByaWdodCcgb3IgJ2VsbGlwc2UgYXQgY2VudGVyJyIgKTsKCQl9CgoJCSRyZXR1cm5lciA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JyAuCgkJCSc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMSAxIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4nIC4KCQkJJzwnIC4gJGdyYWRpZW50VHlwZSAuICdHcmFkaWVudCBpZD0iZ3JhZGllbnQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiAnIC4gJGdyYWRpZW50RGlyZWN0aW9uU3ZnIC4gJz4nOwoKCQlmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkc3RvcHMpOyAkaSsrICl7CgkJCWlmKCBpc19vYmplY3QoJHN0b3BzWyRpXSkgJiYgcHJvcGVydHlfZXhpc3RzKCRzdG9wc1skaV0sJ3ZhbHVlJykgKXsKCQkJCSRjb2xvciA9ICRzdG9wc1skaV0tPnZhbHVlWzBdOwoJCQkJJHBvc2l0aW9uID0gJHN0b3BzWyRpXS0+dmFsdWVbMV07CgkJCX1lbHNlewoJCQkJJGNvbG9yID0gJHN0b3BzWyRpXTsKCQkJCSRwb3NpdGlvbiA9IG51bGw7CgkJCX0KCgkJCWlmKCAhKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgfHwgKCEoKCRpID09PSAwIHx8ICRpKzEgPT09IGNvdW50KCRzdG9wcykpICYmICRwb3NpdGlvbiA9PT0gbnVsbCkgJiYgISgkcG9zaXRpb24gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSkgKXsKCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggJHRocm93X21lc3NhZ2UgKTsKCQkJfQoJCQlpZiggJHBvc2l0aW9uICl7CgkJCQkkcG9zaXRpb25WYWx1ZSA9ICRwb3NpdGlvbi0+dG9DU1MoKTsKCQkJfWVsc2VpZiggJGkgPT09IDAgKXsKCQkJCSRwb3NpdGlvblZhbHVlID0gJzAlJzsKCQkJfWVsc2V7CgkJCQkkcG9zaXRpb25WYWx1ZSA9ICcxMDAlJzsKCQkJfQoJCQkkYWxwaGEgPSAkY29sb3ItPmFscGhhOwoJCQkkcmV0dXJuZXIgLj0gJzxzdG9wIG9mZnNldD0iJyAuICRwb3NpdGlvblZhbHVlIC4gJyIgc3RvcC1jb2xvcj0iJyAuICRjb2xvci0+dG9SR0IoKSAuICciJyAuICgkYWxwaGEgPCAxID8gJyBzdG9wLW9wYWNpdHk9IicgLiAkYWxwaGEgLiAnIicgOiAnJykgLiAnLz4nOwoJCX0KCgkJJHJldHVybmVyIC49ICc8LycgLiAkZ3JhZGllbnRUeXBlIC4gJ0dyYWRpZW50PjxyZWN0ICcgLiAkcmVjdGFuZ2xlRGltZW5zaW9uIC4gJyBmaWxsPSJ1cmwoI2dyYWRpZW50KSIgLz48L3N2Zz4nOwoKCgkJaWYoICR1c2VCYXNlNjQgKXsKCQkJJHJldHVybmVyID0gIidkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCIuYmFzZTY0X2VuY29kZSgkcmV0dXJuZXIpLiInIjsKCQl9ZWxzZXsKCQkJJHJldHVybmVyID0gIidkYXRhOmltYWdlL3N2Zyt4bWwsIi4kcmV0dXJuZXIuIiciOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVVJMKCBuZXcgTGVzc19UcmVlX0Fub255bW91cyggJHJldHVybmVyICkgKTsKCX0KCgoJLyoqCgkgKiBQaHAgdmVyc2lvbiBvZiBqYXZhc2NyaXB0J3MgYGVuY29kZVVSSUNvbXBvbmVudGAgZnVuY3Rpb24KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIHN0cmluZyB0byBlbmNvZGUKCSAqIEByZXR1cm4gc3RyaW5nIFRoZSBlbmNvZGVkIHN0cmluZwoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZVVSSUNvbXBvbmVudCgkc3RyaW5nKXsKCQkkcmV2ZXJ0ID0gYXJyYXkoJyUyMScgPT4gJyEnLCAnJTJBJyA9PiAnKicsICclMjcnID0+ICInIiwgJyUyOCcgPT4gJygnLCAnJTI5JyA9PiAnKScpOwoJCXJldHVybiBzdHJ0cihyYXd1cmxlbmNvZGUoJHN0cmluZyksICRyZXZlcnQpOwoJfQoKCgkvLyBDb2xvciBCbGVuZGluZwoJLy8gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9UUi9jb21wb3NpdGluZy0xCgoJcHVibGljIGZ1bmN0aW9uIGNvbG9yQmxlbmQoICRtb2RlLCAkY29sb3IxLCAkY29sb3IyICl7CgkJJGFiID0gJGNvbG9yMS0+YWxwaGE7CS8vIGJhY2tkcm9wCgkJJGFzID0gJGNvbG9yMi0+YWxwaGE7CS8vIHNvdXJjZQoJCSRyID0gYXJyYXkoKTsJCQkvLyByZXN1bHQKCgkJJGFyID0gJGFzICsgJGFiICogKDEgLSAkYXMpOwoJCWZvciggJGkgPSAwOyAkaSA8IDM7ICRpKysgKXsKCQkJJGNiID0gJGNvbG9yMS0+cmdiWyRpXSAvIDI1NTsKCQkJJGNzID0gJGNvbG9yMi0+cmdiWyRpXSAvIDI1NTsKCQkJJGNyID0gY2FsbF91c2VyX2Z1bmMoICRtb2RlLCAkY2IsICRjcyApOwoJCQlpZiggJGFyICl7CgkJCQkkY3IgPSAoJGFzICogJGNzICsgJGFiICogKCRjYiAtICRhcyAqICgkY2IgKyAkY3MgLSAkY3IpKSkgLyAkYXI7CgkJCX0KCQkJJHJbJGldID0gJGNyICogMjU1OwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQ29sb3IoJHIsICRhcik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG11bHRpcGx5KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBtdWx0aXBseSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG11bHRpcGx5IG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIGFycmF5KCR0aGlzLCdjb2xvckJsZW5kTXVsdGlwbHknKSwgICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGNvbG9yQmxlbmRNdWx0aXBseSgkY2IsICRjcyl7CgkJcmV0dXJuICRjYiAqICRjczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2NyZWVuKCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBzY3JlZW4gbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHNlY29uZCBhcmd1bWVudCB0byBzY3JlZW4gbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+Y29sb3JCbGVuZCggYXJyYXkoJHRoaXMsJ2NvbG9yQmxlbmRTY3JlZW4nKSwgICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGNvbG9yQmxlbmRTY3JlZW4oICRjYiwgJGNzKXsKCQlyZXR1cm4gJGNiICsgJGNzIC0gJGNiICogJGNzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBvdmVybGF5KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCl7CgkJaWYgKCEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIG92ZXJsYXkgbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHNlY29uZCBhcmd1bWVudCB0byBvdmVybGF5IG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIGFycmF5KCR0aGlzLCdjb2xvckJsZW5kT3ZlcmxheScpLCAgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZE92ZXJsYXkoJGNiLCAkY3MgKXsKCQkkY2IgKj0gMjsKCQlyZXR1cm4gKCRjYiA8PSAxKQoJCQk/ICR0aGlzLT5jb2xvckJsZW5kTXVsdGlwbHkoJGNiLCAkY3MpCgkJCTogJHRoaXMtPmNvbG9yQmxlbmRTY3JlZW4oJGNiIC0gMSwgJGNzKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc29mdGxpZ2h0KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCl7CgkJaWYgKCEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNvZnRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNvZnRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBhcnJheSgkdGhpcywnY29sb3JCbGVuZFNvZnRsaWdodCcpLCAgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZFNvZnRsaWdodCgkY2IsICRjcyApewoJCSRkID0gMTsKCQkkZSA9ICRjYjsKCQlpZiggJGNzID4gMC41ICl7CgkJCSRlID0gMTsKCQkJJGQgPSAoJGNiID4gMC4yNSkgPyBzcXJ0KCRjYikKCQkJCTogKCgxNiAqICRjYiAtIDEyKSAqICRjYiArIDQpICogJGNiOwoJCX0KCQlyZXR1cm4gJGNiIC0gKDEgLSAyICogJGNzKSAqICRlICogKCRkIC0gJGNiKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaGFyZGxpZ2h0KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCl7CgkJaWYgKCEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGhhcmRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGhhcmRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBhcnJheSgkdGhpcywnY29sb3JCbGVuZEhhcmRsaWdodCcpLCAgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZEhhcmRsaWdodCggJGNiLCAkY3MgKXsKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmRPdmVybGF5KCRjcywgJGNiKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZGlmZmVyZW5jZSgkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwpIHsKCQlpZiAoISRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gZGlmZmVyZW5jZSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGRpZmZlcmVuY2UgbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+Y29sb3JCbGVuZCggYXJyYXkoJHRoaXMsJ2NvbG9yQmxlbmREaWZmZXJlbmNlJyksICAkY29sb3IxLCAkY29sb3IyICk7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBjb2xvckJsZW5kRGlmZmVyZW5jZSggJGNiLCAkY3MgKXsKCQlyZXR1cm4gYWJzKCRjYiAtICRjcyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGV4Y2x1c2lvbiggJGNvbG9yMSA9IG51bGwsICRjb2xvcjIgPSBudWxsICl7CgkJaWYgKCEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGV4Y2x1c2lvbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGV4Y2x1c2lvbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBhcnJheSgkdGhpcywnY29sb3JCbGVuZEV4Y2x1c2lvbicpLCAgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZEV4Y2x1c2lvbiggJGNiLCAkY3MgKXsKCQlyZXR1cm4gJGNiICsgJGNzIC0gMiAqICRjYiAqICRjczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYXZlcmFnZSgkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwpewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBhdmVyYWdlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoJCWlmICghJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gYXZlcmFnZSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBhcnJheSgkdGhpcywnY29sb3JCbGVuZEF2ZXJhZ2UnKSwgICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCgkvLyBub24tdzNjIGZ1bmN0aW9uczoKCXB1YmxpYyBmdW5jdGlvbiBjb2xvckJsZW5kQXZlcmFnZSgkY2IsICRjcyApewoJCXJldHVybiAoJGNiICsgJGNzKSAvIDI7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG5lZ2F0aW9uKCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBuZWdhdGlvbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG5lZ2F0aW9uIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIGFycmF5KCR0aGlzLCdjb2xvckJsZW5kTmVnYXRpb24nKSwgICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29sb3JCbGVuZE5lZ2F0aW9uKCRjYiwgJGNzKXsKCQlyZXR1cm4gMSAtIGFicygkY2IgKyAkY3MgLSAxKTsKCX0KCgkvLyB+IEVuZCBvZiBDb2xvciBCbGVuZGluZwoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Less.php.combine</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci4vUGFyc2VyLnBocAouL0NvbG9ycy5waHAKLi9FbnZpcm9ubWVudC5waHAKLi9GdW5jdGlvbnMucGhwCi4vTWltZS5waHAKLi9UcmVlLnBocAouL091dHB1dC5waHAKLi9WaXNpdG9yLnBocAouL1Zpc2l0b3JSZXBsYWNpbmcucGhwCi4vQ29uZmlndXJhYmxlLnBocAouL1RyZWUKLi9WaXNpdG9yCi4vRXhjZXB0aW9uL1BhcnNlci5waHAKLi9FeGNlcHRpb24vCi4vT3V0cHV0Ci4vU291cmNlTWFwCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Mime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBNaW1lIGxvb2t1cAogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIG5vZGUKICovCmNsYXNzIExlc3NfTWltZXsKCgkvLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IGluY29tcGxldGUKCS8vIGlmIHlvdSB3YW50IG1vcmUsIGluc3RhbGwgJ21pbWUnIGRlcAoJc3RhdGljICRfdHlwZXMgPSBhcnJheSgKCSAgICAgICAgJy5odG0nID0+ICd0ZXh0L2h0bWwnLAoJICAgICAgICAnLmh0bWwnPT4gJ3RleHQvaHRtbCcsCgkgICAgICAgICcuZ2lmJyA9PiAnaW1hZ2UvZ2lmJywKCSAgICAgICAgJy5qcGcnID0+ICdpbWFnZS9qcGVnJywKCSAgICAgICAgJy5qcGVnJz0+ICdpbWFnZS9qcGVnJywKCSAgICAgICAgJy5wbmcnID0+ICdpbWFnZS9wbmcnLAoJICAgICAgICAnLnR0ZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10dGYnLAoJICAgICAgICAnLm90ZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC1vdGYnLAoJICAgICAgICAnLmVvdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0JywKCSAgICAgICAgJy53b2ZmJyA9PiAnYXBwbGljYXRpb24veC1mb250LXdvZmYnLAoJICAgICAgICAnLnN2ZycgPT4gJ2ltYWdlL3N2Zyt4bWwnLAoJICAgICAgICApOwoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9va3VwKCAkZmlsZXBhdGggKXsKCQkkcGFydHMgPSBleHBsb2RlKCcuJywkZmlsZXBhdGgpOwoJCSRleHQgPSAnLicuc3RydG9sb3dlcihhcnJheV9wb3AoJHBhcnRzKSk7CgoJCWlmKCAhaXNzZXQoc2VsZjo6JF90eXBlc1skZXh0XSkgKXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJCXJldHVybiBzZWxmOjokX3R5cGVzWyRleHRdOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hhcnNldHNfbG9va3VwKCAkdHlwZSA9IG51bGwgKXsKCQkvLyBhc3N1bWVzIGFsbCB0ZXh0IHR5cGVzIGFyZSBVVEYtOAoJCXJldHVybiAkdHlwZSAmJiBwcmVnX21hdGNoKCcvXnRleHRcLy8nLCR0eXBlKSA/ICdVVEYtOCcgOiAnJzsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Output.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBQYXJzZXIgb3V0cHV0CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2Ugb3V0cHV0CiAqLwpjbGFzcyBMZXNzX091dHB1dHsKCgkvKioKCSAqIE91dHB1dCBob2xkZXIKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcm90ZWN0ZWQgJHN0cnMgPSBhcnJheSgpOwoKCS8qKgoJICogQWRkcyBhIGNodW5rIHRvIHRoZSBzdGFjawoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGNodW5rIFRoZSBjaHVuayB0byBvdXRwdXQKCSAqIEBwYXJhbSBMZXNzX0ZpbGVJbmZvICRmaWxlSW5mbyBUaGUgZmlsZSBpbmZvcm1hdGlvbgoJICogQHBhcmFtIGludGVnZXIgJGluZGV4IFRoZSBpbmRleAoJICogQHBhcmFtIG1peGVkICRtYXBMaW5lcwoJICovCglwdWJsaWMgZnVuY3Rpb24gYWRkKCRjaHVuaywgJGZpbGVJbmZvID0gbnVsbCwgJGluZGV4ID0gMCwgJG1hcExpbmVzID0gbnVsbCl7CgkJJHRoaXMtPnN0cnNbXSA9ICRjaHVuazsKCX0KCgkvKioKCSAqIElzIHRoZSBvdXRwdXQgZW1wdHk/CgkgKgoJICogQHJldHVybiBib29sZWFuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpc0VtcHR5KCl7CgkJcmV0dXJuIGNvdW50KCR0aGlzLT5zdHJzKSA9PT0gMDsKCX0KCgoJLyoqCgkgKiBDb252ZXJ0cyB0aGUgb3V0cHV0IHRvIHN0cmluZwoJICoKCSAqIEByZXR1cm4gc3RyaW5nCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiB0b1N0cmluZygpewoJCXJldHVybiBpbXBsb2RlKCcnLCR0aGlzLT5zdHJzKTsKCX0KCn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Output/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Output/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Output/Mapped.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBQYXJzZXIgb3V0cHV0IHdpdGggc291cmNlIG1hcA0KICoNCiAqIEBwYWNrYWdlIExlc3MNCiAqIEBzdWJwYWNrYWdlIE91dHB1dA0KICovDQpjbGFzcyBMZXNzX091dHB1dF9NYXBwZWQgZXh0ZW5kcyBMZXNzX091dHB1dCB7DQoNCgkvKioNCgkgKiBUaGUgc291cmNlIG1hcCBnZW5lcmF0b3INCgkgKg0KCSAqIEB2YXIgTGVzc19Tb3VyY2VNYXBfR2VuZXJhdG9yDQoJICovDQoJcHJvdGVjdGVkICRnZW5lcmF0b3I7DQoNCgkvKioNCgkgKiBDdXJyZW50IGxpbmUNCgkgKg0KCSAqIEB2YXIgaW50ZWdlcg0KCSAqLw0KCXByb3RlY3RlZCAkbGluZU51bWJlciA9IDA7DQoNCgkvKioNCgkgKiBDdXJyZW50IGNvbHVtbg0KCSAqDQoJICogQHZhciBpbnRlZ2VyDQoJICovDQoJcHJvdGVjdGVkICRjb2x1bW4gPSAwOw0KDQoJLyoqDQoJICogQXJyYXkgb2YgY29udGVudHMgbWFwIChmaWxlIGFuZCBpdHMgY29udGVudCkNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJGNvbnRlbnRzTWFwID0gYXJyYXkoKTsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gYXJyYXkgJGNvbnRlbnRzTWFwIEFycmF5IG9mIGZpbGVuYW1lIHRvIGNvbnRlbnRzIG1hcA0KCSAqIEBwYXJhbSBMZXNzX1NvdXJjZU1hcF9HZW5lcmF0b3IgJGdlbmVyYXRvcg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkY29udGVudHNNYXAsICRnZW5lcmF0b3Ipew0KCQkkdGhpcy0+Y29udGVudHNNYXAgPSAkY29udGVudHNNYXA7DQoJCSR0aGlzLT5nZW5lcmF0b3IgPSAkZ2VuZXJhdG9yOw0KCX0NCg0KCS8qKg0KCSAqIEFkZHMgYSBjaHVuayB0byB0aGUgc3RhY2sNCgkgKiBUaGUgJGluZGV4IGZvciBsZXNzLnBocCBtYXkgYmUgZGlmZmVyZW50IGZyb20gbGVzcy5qcyBzaW5jZSBsZXNzLnBocCBkb2VzIG5vdCBjaHVua2lmeSBpbnB1dHMNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJGNodW5rDQoJICogQHBhcmFtIHN0cmluZyAkZmlsZUluZm8NCgkgKiBAcGFyYW0gaW50ZWdlciAkaW5kZXgNCgkgKiBAcGFyYW0gbWl4ZWQgJG1hcExpbmVzDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGFkZCgkY2h1bmssICRmaWxlSW5mbyA9IG51bGwsICRpbmRleCA9IDAsICRtYXBMaW5lcyA9IG51bGwpew0KDQoJCS8vaWdub3JlIGFkZGluZyBlbXB0eSBzdHJpbmdzDQoJCWlmKCAkY2h1bmsgPT09ICcnICl7DQoJCQlyZXR1cm47DQoJCX0NCg0KDQoJCSRzb3VyY2VMaW5lcyA9IGFycmF5KCk7DQoJCSRzb3VyY2VDb2x1bW5zID0gJyAnOw0KDQoNCgkJaWYoICRmaWxlSW5mbyApew0KDQoJCQkkdXJsID0gJGZpbGVJbmZvWydjdXJyZW50VXJpJ107DQoNCgkJCWlmKCBpc3NldCgkdGhpcy0+Y29udGVudHNNYXBbJHVybF0pICl7DQoJCQkJJGlucHV0U291cmNlID0gc3Vic3RyKCR0aGlzLT5jb250ZW50c01hcFskdXJsXSwgMCwgJGluZGV4KTsNCgkJCQkkc291cmNlTGluZXMgPSBleHBsb2RlKCJcbiIsICRpbnB1dFNvdXJjZSk7DQoJCQkJJHNvdXJjZUNvbHVtbnMgPSBlbmQoJHNvdXJjZUxpbmVzKTsNCgkJCX1lbHNlew0KCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ0ZpbGVuYW1lICcuJHVybC4nIG5vdCBpbiBjb250ZW50c01hcCcpOw0KCQkJfQ0KDQoJCX0NCg0KCQkkbGluZXMgPSBleHBsb2RlKCJcbiIsICRjaHVuayk7DQoJCSRjb2x1bW5zID0gZW5kKCRsaW5lcyk7DQoNCgkJaWYoJGZpbGVJbmZvKXsNCg0KCQkJaWYoISRtYXBMaW5lcyl7DQoJCQkJJHRoaXMtPmdlbmVyYXRvci0+YWRkTWFwcGluZygNCgkJCQkJCSR0aGlzLT5saW5lTnVtYmVyICsgMSwJCQkJCS8vIGdlbmVyYXRlZF9saW5lDQoJCQkJCQkkdGhpcy0+Y29sdW1uLAkJCQkJCQkvLyBnZW5lcmF0ZWRfY29sdW1uDQoJCQkJCQljb3VudCgkc291cmNlTGluZXMpLAkJCQkJLy8gb3JpZ2luYWxfbGluZQ0KCQkJCQkJc3RybGVuKCRzb3VyY2VDb2x1bW5zKSwJCQkJCS8vIG9yaWdpbmFsX2NvbHVtbg0KCQkJCQkJJGZpbGVJbmZvDQoJCQkJKTsNCgkJCX1lbHNlew0KCQkJCWZvcigkaSA9IDAsICRjb3VudCA9IGNvdW50KCRsaW5lcyk7ICRpIDwgJGNvdW50OyAkaSsrKXsNCgkJCQkJJHRoaXMtPmdlbmVyYXRvci0+YWRkTWFwcGluZygNCgkJCQkJCSR0aGlzLT5saW5lTnVtYmVyICsgJGkgKyAxLAkJCQkvLyBnZW5lcmF0ZWRfbGluZQ0KCQkJCQkJJGkgPT09IDAgPyAkdGhpcy0+Y29sdW1uIDogMCwJCQkvLyBnZW5lcmF0ZWRfY29sdW1uDQoJCQkJCQljb3VudCgkc291cmNlTGluZXMpICsgJGksCQkJCS8vIG9yaWdpbmFsX2xpbmUNCgkJCQkJCSRpID09PSAwID8gc3RybGVuKCRzb3VyY2VDb2x1bW5zKSA6IDAsIAkvLyBvcmlnaW5hbF9jb2x1bW4NCgkJCQkJCSRmaWxlSW5mbw0KCQkJCQkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCWlmKGNvdW50KCRsaW5lcykgPT09IDEpew0KCQkJJHRoaXMtPmNvbHVtbiArPSBzdHJsZW4oJGNvbHVtbnMpOw0KCQl9ZWxzZXsNCgkJCSR0aGlzLT5saW5lTnVtYmVyICs9IGNvdW50KCRsaW5lcykgLSAxOw0KCQkJJHRoaXMtPmNvbHVtbiA9IHN0cmxlbigkY29sdW1ucyk7DQoJCX0NCg0KCQkvLyBhZGQgb25seSBjaHVuaw0KCQlwYXJlbnQ6OmFkZCgkY2h1bmspOw0KCX0NCg0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZSggZGlybmFtZShfX0ZJTEVfXykuJy9DYWNoZS5waHAnKTsKCi8qKgogKiBDbGFzcyBmb3IgcGFyc2luZyBhbmQgY29tcGlsaW5nIGxlc3MgZmlsZXMgaW50byBjc3MKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSBwYXJzZXIKICoKICovCmNsYXNzIExlc3NfUGFyc2VyewoKCgkvKioKCSAqIERlZmF1bHQgcGFyc2VyIG9wdGlvbnMKCSAqLwoJcHVibGljIHN0YXRpYyAkZGVmYXVsdF9vcHRpb25zID0gYXJyYXkoCgkJJ2NvbXByZXNzJwkJCQk9PiBmYWxzZSwJCQkvLyBvcHRpb24gLSB3aGV0aGVyIHRvIGNvbXByZXNzCgkJJ3N0cmljdFVuaXRzJwkJCT0+IGZhbHNlLAkJCS8vIHdoZXRoZXIgdW5pdHMgbmVlZCB0byBldmFsdWF0ZSBjb3JyZWN0bHkKCQknc3RyaWN0TWF0aCcJCQk9PiBmYWxzZSwJCQkvLyB3aGV0aGVyIG1hdGggaGFzIHRvIGJlIHdpdGhpbiBwYXJlbnRoZXNpcwoJCSdyZWxhdGl2ZVVybHMnCQkJPT4gdHJ1ZSwJCQkvLyBvcHRpb24gLSB3aGV0aGVyIHRvIGFkanVzdCBVUkwncyB0byBiZSByZWxhdGl2ZQoJCSd1cmxBcmdzJwkJCQk9PiAnJywJCQkJLy8gd2hldGhlciB0byBhZGQgYXJncyBpbnRvIHVybCB0b2tlbnMKCQknbnVtUHJlY2lzaW9uJwkJCT0+IDgsCgoJCSdpbXBvcnRfZGlycycJCQk9PiBhcnJheSgpLAoJCSdpbXBvcnRfY2FsbGJhY2snCQk9PiBudWxsLAoJCSdjYWNoZV9kaXInCQkJCT0+IG51bGwsCgkJJ2NhY2hlX21ldGhvZCcJCQk9PiAncGhwJywgCQkJLy8gZmFsc2UsICdzZXJpYWxpemUnLCAncGhwJywgJ3Zhcl9leHBvcnQnLCAnY2FsbGJhY2snOwoJCSdjYWNoZV9jYWxsYmFja19nZXQnCT0+IG51bGwsCgkJJ2NhY2hlX2NhbGxiYWNrX3NldCcJPT4gbnVsbCwKCgkJJ3NvdXJjZU1hcCcJCQkJPT4gZmFsc2UsCQkJLy8gd2hldGhlciB0byBvdXRwdXQgYSBzb3VyY2UgbWFwCgkJJ3NvdXJjZU1hcEJhc2VwYXRoJwkJPT4gbnVsbCwKCQknc291cmNlTWFwV3JpdGVUbycJCT0+IG51bGwsCgkJJ3NvdXJjZU1hcFVSTCcJCQk9PiBudWxsLAoKCQknaW5kZW50YXRpb24nIAkJCT0+ICcgICcsCgoJCSdwbHVnaW5zJwkJCQk9PiBhcnJheSgpLAoKCSk7CgoJcHVibGljIHN0YXRpYyAkb3B0aW9ucyA9IGFycmF5KCk7CgoKCXByaXZhdGUgJGlucHV0OwkJCQkJLy8gTGVzcyBpbnB1dCBzdHJpbmcKCXByaXZhdGUgJGlucHV0X2xlbjsJCQkJLy8gaW5wdXQgc3RyaW5nIGxlbmd0aAoJcHJpdmF0ZSAkcG9zOwkJCQkJLy8gY3VycmVudCBpbmRleCBpbiBgaW5wdXRgCglwcml2YXRlICRzYXZlU3RhY2sgPSBhcnJheSgpOwkvLyBob2xkcyBzdGF0ZSBmb3IgYmFja3RyYWNraW5nCglwcml2YXRlICRmdXJ0aGVzdDsKCXByaXZhdGUgJG1iX2ludGVybmFsX2VuY29kaW5nID0gJyc7IC8vIGZvciByZW1lbWJlciBleGlzdHMgdmFsdWUgb2YgbWJzdHJpbmcuaW50ZXJuYWxfZW5jb2RpbmcKCgkvKioKCSAqIEB2YXIgTGVzc19FbnZpcm9ubWVudAoJICovCglwcml2YXRlICRlbnY7CgoJcHJvdGVjdGVkICRydWxlcyA9IGFycmF5KCk7CgoJcHJpdmF0ZSBzdGF0aWMgJGltcG9ydHMgPSBhcnJheSgpOwoKCXB1YmxpYyBzdGF0aWMgJGhhc19leHRlbmRzID0gZmFsc2U7CgoJcHVibGljIHN0YXRpYyAkbmV4dF9pZCA9IDA7CgoJLyoqCgkgKiBGaWxlbmFtZSB0byBjb250ZW50cyBvZiBhbGwgcGFyc2VkIHRoZSBmaWxlcwoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljIHN0YXRpYyAkY29udGVudHNNYXAgPSBhcnJheSgpOwoKCgkvKioKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50fGFycmF5fG51bGwgJGVudgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRlbnYgPSBudWxsICl7CgoJCS8vIFRvcCBwYXJzZXIgb24gYW4gaW1wb3J0IHRyZWUgbXVzdCBiZSBzdXJlIHRoZXJlIGlzIG9uZSAiZW52IgoJCS8vIHdoaWNoIHdpbGwgdGhlbiBiZSBwYXNzZWQgYXJvdW5kIGJ5IHJlZmVyZW5jZS4KCQlpZiggJGVudiBpbnN0YW5jZW9mIExlc3NfRW52aXJvbm1lbnQgKXsKCQkJJHRoaXMtPmVudiA9ICRlbnY7CgkJfWVsc2V7CgkJCSR0aGlzLT5TZXRPcHRpb25zKExlc3NfUGFyc2VyOjokZGVmYXVsdF9vcHRpb25zKTsKCQkJJHRoaXMtPlJlc2V0KCAkZW52ICk7CgkJfQoKCQkvLyBtYnN0cmluZy5mdW5jX292ZXJsb2FkID4gMSBidWdmaXgKCQkvLyBUaGUgZW5jb2RpbmcgdmFsdWUgbXVzdCBiZSBzZXQgZm9yIGVhY2ggc291cmNlIGZpbGUsCgkJLy8gdGhlcmVmb3JlLCB0byBjb25zZXJ2ZSByZXNvdXJjZXMgYW5kIGltcHJvdmUgdGhlIHNwZWVkIG9mIHRoaXMgZGVzaWduIGlzIHRha2VuIGhlcmUKCQlpZiAoaW5pX2dldCgnbWJzdHJpbmcuZnVuY19vdmVybG9hZCcpKSB7CgkJCSR0aGlzLT5tYl9pbnRlcm5hbF9lbmNvZGluZyA9IGluaV9nZXQoJ21ic3RyaW5nLmludGVybmFsX2VuY29kaW5nJyk7CgkJCUBpbmlfc2V0KCdtYnN0cmluZy5pbnRlcm5hbF9lbmNvZGluZycsICdhc2NpaScpOwoJCX0KCgl9CgoKCS8qKgoJICogUmVzZXQgdGhlIHBhcnNlciBzdGF0ZSBjb21wbGV0ZWx5CgkgKgoJICovCglwdWJsaWMgZnVuY3Rpb24gUmVzZXQoICRvcHRpb25zID0gbnVsbCApewoJCSR0aGlzLT5ydWxlcyA9IGFycmF5KCk7CgkJc2VsZjo6JGltcG9ydHMgPSBhcnJheSgpOwoJCXNlbGY6OiRoYXNfZXh0ZW5kcyA9IGZhbHNlOwoJCXNlbGY6OiRpbXBvcnRzID0gYXJyYXkoKTsKCQlzZWxmOjokY29udGVudHNNYXAgPSBhcnJheSgpOwoKCQkkdGhpcy0+ZW52ID0gbmV3IExlc3NfRW52aXJvbm1lbnQoJG9wdGlvbnMpOwoJCSR0aGlzLT5lbnYtPkluaXQoKTsKCgkJLy9zZXQgbmV3IG9wdGlvbnMKCQlpZiggaXNfYXJyYXkoJG9wdGlvbnMpICl7CgkJCSR0aGlzLT5TZXRPcHRpb25zKExlc3NfUGFyc2VyOjokZGVmYXVsdF9vcHRpb25zKTsKCQkJJHRoaXMtPlNldE9wdGlvbnMoJG9wdGlvbnMpOwoJCX0KCX0KCgkvKioKCSAqIFNldCBvbmUgb3IgbW9yZSBjb21waWxlciBvcHRpb25zCgkgKiAgb3B0aW9uczogaW1wb3J0X2RpcnMsIGNhY2hlX2RpciwgY2FjaGVfbWV0aG9kCgkgKgoJICovCglwdWJsaWMgZnVuY3Rpb24gU2V0T3B0aW9ucyggJG9wdGlvbnMgKXsKCQlmb3JlYWNoKCRvcHRpb25zIGFzICRvcHRpb24gPT4gJHZhbHVlKXsKCQkJJHRoaXMtPlNldE9wdGlvbigkb3B0aW9uLCR2YWx1ZSk7CgkJfQoJfQoKCS8qKgoJICogU2V0IG9uZSBjb21waWxlciBvcHRpb24KCSAqCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBTZXRPcHRpb24oJG9wdGlvbiwkdmFsdWUpewoKCQlzd2l0Y2goJG9wdGlvbil7CgoJCQljYXNlICdpbXBvcnRfZGlycyc6CgkJCQkkdGhpcy0+U2V0SW1wb3J0RGlycygkdmFsdWUpOwoJCQlyZXR1cm47CgoJCQljYXNlICdjYWNoZV9kaXInOgoJCQkJaWYoIGlzX3N0cmluZygkdmFsdWUpICl7CgkJCQkJTGVzc19DYWNoZTo6U2V0Q2FjaGVEaXIoJHZhbHVlKTsKCQkJCQlMZXNzX0NhY2hlOjpDaGVja0NhY2hlRGlyKCk7CgkJCQl9CgkJCXJldHVybjsKCQl9CgoJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1skb3B0aW9uXSA9ICR2YWx1ZTsKCX0KCgkvKioKCSAqIFJlZ2lzdGVycyBhIG5ldyBjdXN0b20gZnVuY3Rpb24KCSAqCgkgKiBAcGFyYW0gIHN0cmluZyAgICRuYW1lICAgICBmdW5jdGlvbiBuYW1lCgkgKiBAcGFyYW0gIGNhbGxhYmxlICRjYWxsYmFjayBjYWxsYmFjawoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJGdW5jdGlvbigkbmFtZSwgJGNhbGxiYWNrKSB7CgkJJHRoaXMtPmVudi0+ZnVuY3Rpb25zWyRuYW1lXSA9ICRjYWxsYmFjazsKCX0KCgkvKioKCSAqIFJlbW92ZWQgYW4gYWxyZWFkeSByZWdpc3RlcmVkIGZ1bmN0aW9uCgkgKgoJICogQHBhcmFtICBzdHJpbmcgJG5hbWUgZnVuY3Rpb24gbmFtZQoJICovCglwdWJsaWMgZnVuY3Rpb24gdW5yZWdpc3RlckZ1bmN0aW9uKCRuYW1lKSB7CgkJaWYoIGlzc2V0KCR0aGlzLT5lbnYtPmZ1bmN0aW9uc1skbmFtZV0pICkKCQkJdW5zZXQoJHRoaXMtPmVudi0+ZnVuY3Rpb25zWyRuYW1lXSk7Cgl9CgoKCS8qKgoJICogR2V0IHRoZSBjdXJyZW50IGNzcyBidWZmZXIKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q3NzKCl7CgoJCSRwcmVjaXNpb24gPSBpbmlfZ2V0KCdwcmVjaXNpb24nKTsKCQlAaW5pX3NldCgncHJlY2lzaW9uJywxNik7CgkJJGxvY2FsZSA9IHNldGxvY2FsZShMQ19OVU1FUklDLCAwKTsKCQlzZXRsb2NhbGUoTENfTlVNRVJJQywgIkMiKTsKCgkJdHJ5IHsKCgkgCQkkcm9vdCA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldChhcnJheSgpLCAkdGhpcy0+cnVsZXMgKTsKCQkJJHJvb3QtPnJvb3QgPSB0cnVlOwoJCQkkcm9vdC0+Zmlyc3RSb290ID0gdHJ1ZTsKCgoJCQkkdGhpcy0+UHJlVmlzaXRvcnMoJHJvb3QpOwoKCQkJc2VsZjo6JGhhc19leHRlbmRzID0gZmFsc2U7CgkJCSRldmFsZFJvb3QgPSAkcm9vdC0+Y29tcGlsZSgkdGhpcy0+ZW52KTsKCgoKCQkJJHRoaXMtPlBvc3RWaXNpdG9ycygkZXZhbGRSb290KTsKCgkJCWlmKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3NvdXJjZU1hcCddICl7CgkJCQkkZ2VuZXJhdG9yID0gbmV3IExlc3NfU291cmNlTWFwX0dlbmVyYXRvcigkZXZhbGRSb290LCBMZXNzX1BhcnNlcjo6JGNvbnRlbnRzTWFwLCBMZXNzX1BhcnNlcjo6JG9wdGlvbnMgKTsKCQkJCS8vIHdpbGwgYWxzbyBzYXZlIGZpbGUKCQkJCS8vIEZJWE1FOiBzaG91bGQgaGFwcGVuIHNvbWV3aGVyZSBlbHNlPwoJCQkJJGNzcyA9ICRnZW5lcmF0b3ItPmdlbmVyYXRlQ1NTKCk7CgkJCX1lbHNlewoJCQkJJGNzcyA9ICRldmFsZFJvb3QtPnRvQ1NTKCk7CgkJCX0KCgkJCWlmKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gKXsKCQkJCSRjc3MgPSBwcmVnX3JlcGxhY2UoJy8oXihccykrKXwoKFxzKSskKS8nLCAnJywgJGNzcyk7CgkJCX0KCgkJfSBjYXRjaCAoRXhjZXB0aW9uICRleGMpIHsKCQkJLy8gSW50ZW50aW9uYWwgZmFsbC10aHJvdWdoIHNvIHdlIGNhbiByZXNldCBlbnZpcm9ubWVudAoJCX0KCgkJLy9yZXNldCBwaHAgc2V0dGluZ3MKCQlAaW5pX3NldCgncHJlY2lzaW9uJywkcHJlY2lzaW9uKTsKCQlzZXRsb2NhbGUoTENfTlVNRVJJQywgJGxvY2FsZSk7CgoJCS8vIElmIHlvdSBwcmV2aW91c2x5IGRlZmluZWQgJHRoaXMtPm1iX2ludGVybmFsX2VuY29kaW5nCgkJLy8gaXMgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZSBlbmNvZGluZyBhcyBpdCB3YXMgYmVmb3JlCgkJaWYgKCR0aGlzLT5tYl9pbnRlcm5hbF9lbmNvZGluZyAhPSAnJykgewoJCQlAaW5pX3NldCgibWJzdHJpbmcuaW50ZXJuYWxfZW5jb2RpbmciLCAkdGhpcy0+bWJfaW50ZXJuYWxfZW5jb2RpbmcpOwoJCQkkdGhpcy0+bWJfaW50ZXJuYWxfZW5jb2RpbmcgPSAnJzsKCQl9CgoJCS8vIFJldGhyb3cgZXhjZXB0aW9uIGFmdGVyIHdlIGhhbmRsZWQgcmVzZXR0aW5nIHRoZSBlbnZpcm9ubWVudAoJCWlmICghZW1wdHkoJGV4YykpIHsKCQkJdGhyb3cgJGV4YzsKCQl9CgoKCgkJcmV0dXJuICRjc3M7Cgl9CgoJLyoqCgkgKiBSdW4gcHJlLWNvbXBpbGUgdmlzaXRvcnMKCSAqCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gUHJlVmlzaXRvcnMoJHJvb3QpewoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydwbHVnaW5zJ10gKXsKCQkJZm9yZWFjaChMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3BsdWdpbnMnXSBhcyAkcGx1Z2luKXsKCQkJCWlmKCAhZW1wdHkoJHBsdWdpbi0+aXNQcmVFdmFsVmlzaXRvcikgKXsKCQkJCQkkcGx1Z2luLT5ydW4oJHJvb3QpOwoJCQkJfQoJCQl9CgkJfQoJfQoKCgkvKioKCSAqIFJ1biBwb3N0LWNvbXBpbGUgdmlzaXRvcnMKCSAqCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gUG9zdFZpc2l0b3JzKCRldmFsZFJvb3QpewoKCQkkdmlzaXRvcnMgPSBhcnJheSgpOwoJCSR2aXNpdG9yc1tdID0gbmV3IExlc3NfVmlzaXRvcl9qb2luU2VsZWN0b3IoKTsKCQlpZiggc2VsZjo6JGhhc19leHRlbmRzICl7CgkJCSR2aXNpdG9yc1tdID0gbmV3IExlc3NfVmlzaXRvcl9wcm9jZXNzRXh0ZW5kcygpOwoJCX0KCQkkdmlzaXRvcnNbXSA9IG5ldyBMZXNzX1Zpc2l0b3JfdG9DU1MoKTsKCgoJCWlmKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3BsdWdpbnMnXSApewoJCQlmb3JlYWNoKExlc3NfUGFyc2VyOjokb3B0aW9uc1sncGx1Z2lucyddIGFzICRwbHVnaW4pewoJCQkJaWYoIHByb3BlcnR5X2V4aXN0cygkcGx1Z2luLCdpc1ByZUV2YWxWaXNpdG9yJykgJiYgJHBsdWdpbi0+aXNQcmVFdmFsVmlzaXRvciApewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCWlmKCBwcm9wZXJ0eV9leGlzdHMoJHBsdWdpbiwnaXNQcmVWaXNpdG9yJykgJiYgJHBsdWdpbi0+aXNQcmVWaXNpdG9yICl7CgkJCQkJYXJyYXlfdW5zaGlmdCggJHZpc2l0b3JzLCAkcGx1Z2luKTsKCQkJCX1lbHNlewoJCQkJCSR2aXNpdG9yc1tdID0gJHBsdWdpbjsKCQkJCX0KCQkJfQoJCX0KCgoJCWZvcigkaSA9IDA7ICRpIDwgY291bnQoJHZpc2l0b3JzKTsgJGkrKyApewoJCQkkdmlzaXRvcnNbJGldLT5ydW4oJGV2YWxkUm9vdCk7CgkJfQoKCX0KCgoJLyoqCgkgKiBQYXJzZSBhIExlc3Mgc3RyaW5nIGludG8gY3NzCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc3RyIFRoZSBzdHJpbmcgdG8gY29udmVydAoJICogQHBhcmFtIHN0cmluZyAkdXJpX3Jvb3QgVGhlIHVybCBvZiB0aGUgZmlsZQoJICogQHJldHVybiBMZXNzX1RyZWVfUnVsZXNldHxMZXNzX1BhcnNlcgoJICovCglwdWJsaWMgZnVuY3Rpb24gcGFyc2UoICRzdHIsICRmaWxlX3VyaSA9IG51bGwgKXsKCgkJaWYoICEkZmlsZV91cmkgKXsKCQkJJHVyaV9yb290ID0gJyc7CgkJCSRmaWxlbmFtZSA9ICdhbm9ueW1vdXMtZmlsZS0nLkxlc3NfUGFyc2VyOjokbmV4dF9pZCsrLicubGVzcyc7CgkJfWVsc2V7CgkJCSRmaWxlX3VyaSA9IHNlbGY6OldpblBhdGgoJGZpbGVfdXJpKTsKCQkJJGZpbGVuYW1lID0gJGZpbGVfdXJpOwoJCQkkdXJpX3Jvb3QgPSBkaXJuYW1lKCRmaWxlX3VyaSk7CgkJfQoKCQkkcHJldmlvdXNGaWxlSW5mbyA9ICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbzsKCQkkdXJpX3Jvb3QgPSBzZWxmOjpXaW5QYXRoKCR1cmlfcm9vdCk7CgkJJHRoaXMtPlNldEZpbGVJbmZvKCRmaWxlbmFtZSwgJHVyaV9yb290KTsKCgkJJHRoaXMtPmlucHV0ID0gJHN0cjsKCQkkdGhpcy0+X3BhcnNlKCk7CgoJCWlmKCAkcHJldmlvdXNGaWxlSW5mbyApewoJCQkkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gPSAkcHJldmlvdXNGaWxlSW5mbzsKCQl9CgoJCXJldHVybiAkdGhpczsKCX0KCgoJLyoqCgkgKiBQYXJzZSBhIExlc3Mgc3RyaW5nIGZyb20gYSBnaXZlbiBmaWxlCgkgKgoJICogQHRocm93cyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIKCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lIFRoZSBmaWxlIHRvIHBhcnNlCgkgKiBAcGFyYW0gc3RyaW5nICR1cmlfcm9vdCBUaGUgdXJsIG9mIHRoZSBmaWxlCgkgKiBAcGFyYW0gYm9vbCAkcmV0dXJuUm9vdCBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBhIGNzcyBzdHJpbmcgYSByb290IG5vZGUKCSAqIEByZXR1cm4gTGVzc19UcmVlX1J1bGVzZXR8TGVzc19QYXJzZXIKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHBhcnNlRmlsZSggJGZpbGVuYW1lLCAkdXJpX3Jvb3QgPSAnJywgJHJldHVyblJvb3QgPSBmYWxzZSl7CgoJCWlmKCAhZmlsZV9leGlzdHMoJGZpbGVuYW1lKSApewoJCQkkdGhpcy0+RXJyb3Ioc3ByaW50ZignRmlsZSBgJXNgIG5vdCBmb3VuZC4nLCAkZmlsZW5hbWUpKTsKCQl9CgoKCQkvLyBmaXggdXJpX3Jvb3Q/CgkJLy8gSW5zdGVhZCBvZiBUaGUgbWl4dHVyZSBvZiBmaWxlIHBhdGggZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgZGlyZWN0b3J5IHBhdGggZm9yIHRoZSBzZWNvbmQgYXJndW1lbnQgaGFzIGJlZQoJCWlmKCAhJHJldHVyblJvb3QgJiYgIWVtcHR5KCR1cmlfcm9vdCkgJiYgYmFzZW5hbWUoJHVyaV9yb290KSA9PSBiYXNlbmFtZSgkZmlsZW5hbWUpICl7CgkJCSR1cmlfcm9vdCA9IGRpcm5hbWUoJHVyaV9yb290KTsKCQl9CgoKCQkkcHJldmlvdXNGaWxlSW5mbyA9ICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbzsKCgoJCWlmKCAkZmlsZW5hbWUgKXsKCQkJJGZpbGVuYW1lID0gc2VsZjo6V2luUGF0aChyZWFscGF0aCgkZmlsZW5hbWUpKTsKCQl9CgkJJHVyaV9yb290ID0gc2VsZjo6V2luUGF0aCgkdXJpX3Jvb3QpOwoKCQkkdGhpcy0+U2V0RmlsZUluZm8oJGZpbGVuYW1lLCAkdXJpX3Jvb3QpOwoKCQlzZWxmOjpBZGRQYXJzZWRGaWxlKCRmaWxlbmFtZSk7CgoJCWlmKCAkcmV0dXJuUm9vdCApewoJCQkkcnVsZXMgPSAkdGhpcy0+R2V0UnVsZXMoICRmaWxlbmFtZSApOwoJCQkkcmV0dXJuID0gbmV3IExlc3NfVHJlZV9SdWxlc2V0KGFycmF5KCksICRydWxlcyApOwoJCX1lbHNlewoJCQkkdGhpcy0+X3BhcnNlKCAkZmlsZW5hbWUgKTsKCQkJJHJldHVybiA9ICR0aGlzOwoJCX0KCgkJaWYoICRwcmV2aW91c0ZpbGVJbmZvICl7CgkJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyA9ICRwcmV2aW91c0ZpbGVJbmZvOwoJCX0KCgkJcmV0dXJuICRyZXR1cm47Cgl9CgoKCS8qKgoJICogQWxsb3dzIGEgdXNlciB0byBzZXQgdmFyaWFibGVzIHZhbHVlcwoJICogQHBhcmFtIGFycmF5ICR2YXJzCgkgKiBAcmV0dXJuIExlc3NfUGFyc2VyCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBNb2RpZnlWYXJzKCAkdmFycyApewoKCQkkdGhpcy0+aW5wdXQgPSBMZXNzX1BhcnNlcjo6c2VyaWFsaXplVmFycyggJHZhcnMgKTsKCQkkdGhpcy0+X3BhcnNlKCk7CgoJCXJldHVybiAkdGhpczsKCX0KCgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQoJICovCglwdWJsaWMgZnVuY3Rpb24gU2V0RmlsZUluZm8oICRmaWxlbmFtZSwgJHVyaV9yb290ID0gJycpewoKCQkkZmlsZW5hbWUgPSBMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCRmaWxlbmFtZSk7CgkJJGRpcm5hbWUgPSBwcmVnX3JlcGxhY2UoJy9bXlwvXFxcXF0qJC8nLCcnLCRmaWxlbmFtZSk7CgoJCWlmKCAhZW1wdHkoJHVyaV9yb290KSApewoJCQkkdXJpX3Jvb3QgPSBydHJpbSgkdXJpX3Jvb3QsJy8nKS4nLyc7CgkJfQoKCQkkY3VycmVudEZpbGVJbmZvID0gYXJyYXkoKTsKCgkJLy9lbnRyeSBpbmZvCgkJaWYoIGlzc2V0KCR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykgKXsKCQkJJGN1cnJlbnRGaWxlSW5mb1snZW50cnlQYXRoJ10gPSAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ2VudHJ5UGF0aCddOwoJCQkkY3VycmVudEZpbGVJbmZvWydlbnRyeVVyaSddID0gJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvWydlbnRyeVVyaSddOwoJCQkkY3VycmVudEZpbGVJbmZvWydyb290cGF0aCddID0gJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvWydyb290cGF0aCddOwoKCQl9ZWxzZXsKCQkJJGN1cnJlbnRGaWxlSW5mb1snZW50cnlQYXRoJ10gPSAkZGlybmFtZTsKCQkJJGN1cnJlbnRGaWxlSW5mb1snZW50cnlVcmknXSA9ICR1cmlfcm9vdDsKCQkJJGN1cnJlbnRGaWxlSW5mb1sncm9vdHBhdGgnXSA9ICRkaXJuYW1lOwoJCX0KCgkJJGN1cnJlbnRGaWxlSW5mb1snY3VycmVudERpcmVjdG9yeSddID0gJGRpcm5hbWU7CgkJJGN1cnJlbnRGaWxlSW5mb1snY3VycmVudFVyaSddID0gJHVyaV9yb290LmJhc2VuYW1lKCRmaWxlbmFtZSk7CgkJJGN1cnJlbnRGaWxlSW5mb1snZmlsZW5hbWUnXSA9ICRmaWxlbmFtZTsKCQkkY3VycmVudEZpbGVJbmZvWyd1cmlfcm9vdCddID0gJHVyaV9yb290OwoKCgkJLy9pbmhlcml0IHJlZmVyZW5jZQoJCWlmKCBpc3NldCgkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddKSAmJiAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddICl7CgkJCSRjdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddID0gdHJ1ZTsKCQl9CgoJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgoKCS8qKgoJICogQGRlcHJlY2F0ZWQgMS41LjEuMgoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIFNldENhY2hlRGlyKCAkZGlyICl7CgoJCWlmKCAhZmlsZV9leGlzdHMoJGRpcikgKXsKCQkJaWYoIG1rZGlyKCRkaXIpICl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fUGFyc2VyKCdMZXNzLnBocCBjYWNoZSBkaXJlY3RvcnkgY291bGRuXCd0IGJlIGNyZWF0ZWQ6ICcuJGRpcik7CgoJCX1lbHNlaWYoICFpc19kaXIoJGRpcikgKXsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX1BhcnNlcignTGVzcy5waHAgY2FjaGUgZGlyZWN0b3J5IGRvZXNuXCd0IGV4aXN0OiAnLiRkaXIpOwoKCQl9ZWxzZWlmKCAhaXNfd3JpdGFibGUoJGRpcikgKXsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX1BhcnNlcignTGVzcy5waHAgY2FjaGUgZGlyZWN0b3J5IGlzblwndCB3cml0YWJsZTogJy4kZGlyKTsKCgkJfWVsc2V7CgkJCSRkaXIgPSBzZWxmOjpXaW5QYXRoKCRkaXIpOwoJCQlMZXNzX0NhY2hlOjokY2FjaGVfZGlyID0gcnRyaW0oJGRpciwnLycpLicvJzsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCgkvKioKCSAqIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgb3IgY2FsbGJhY2tzIHRoZSBwYXJzZXIgc2hvdWxkIHVzZSBmb3IgZGV0ZXJtaW5pbmcgaW1wb3J0IHBhdGhzCgkgKgoJICogQHBhcmFtIGFycmF5ICRkaXJzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBTZXRJbXBvcnREaXJzKCAkZGlycyApewoJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2RpcnMnXSA9IGFycmF5KCk7CgoJCWZvcmVhY2goJGRpcnMgYXMgJHBhdGggPT4gJHVyaV9yb290KXsKCgkJCSRwYXRoID0gc2VsZjo6V2luUGF0aCgkcGF0aCk7CgkJCWlmKCAhZW1wdHkoJHBhdGgpICl7CgkJCQkkcGF0aCA9IHJ0cmltKCRwYXRoLCcvJykuJy8nOwoJCQl9CgoJCQlpZiAoICFpc19jYWxsYWJsZSgkdXJpX3Jvb3QpICl7CgkJCQkkdXJpX3Jvb3QgPSBzZWxmOjpXaW5QYXRoKCR1cmlfcm9vdCk7CgkJCQlpZiggIWVtcHR5KCR1cmlfcm9vdCkgKXsKCQkJCQkkdXJpX3Jvb3QgPSBydHJpbSgkdXJpX3Jvb3QsJy8nKS4nLyc7CgkJCQl9CgkJCX0KCgkJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2RpcnMnXVskcGF0aF0gPSAkdXJpX3Jvb3Q7CgkJfQoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkZmlsZV9wYXRoCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gX3BhcnNlKCAkZmlsZV9wYXRoID0gbnVsbCApewoJCSR0aGlzLT5ydWxlcyA9IGFycmF5X21lcmdlKCR0aGlzLT5ydWxlcywgJHRoaXMtPkdldFJ1bGVzKCAkZmlsZV9wYXRoICkpOwoJfQoKCgkvKioKCSAqIFJldHVybiB0aGUgcmVzdWx0cyBvZiBwYXJzZVByaW1hcnkgZm9yICRmaWxlX3BhdGgKCSAqIFVzZSBjYWNoZSBhbmQgc2F2ZSBjYWNoZWQgcmVzdWx0cyBpZiBwb3NzaWJsZQoJICoKCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZmlsZV9wYXRoCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gR2V0UnVsZXMoICRmaWxlX3BhdGggKXsKCgkJJHRoaXMtPlNldElucHV0KCRmaWxlX3BhdGgpOwoKCQkkY2FjaGVfZmlsZSA9ICR0aGlzLT5DYWNoZUZpbGUoICRmaWxlX3BhdGggKTsKCQlpZiggJGNhY2hlX2ZpbGUgKXsKCQkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snY2FjaGVfbWV0aG9kJ10gPT0gJ2NhbGxiYWNrJyApewoJCQkJaWYoIGlzX2NhbGxhYmxlKExlc3NfUGFyc2VyOjokb3B0aW9uc1snY2FjaGVfY2FsbGJhY2tfZ2V0J10pICl7CgkJCQkJJGNhY2hlID0gY2FsbF91c2VyX2Z1bmNfYXJyYXkoCgkJCQkJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1snY2FjaGVfY2FsbGJhY2tfZ2V0J10sCgkJCQkJCWFycmF5KCR0aGlzLCAkZmlsZV9wYXRoLCAkY2FjaGVfZmlsZSkKCQkJCQkpOwoKCQkJCQlpZiggJGNhY2hlICl7CgkJCQkJCSR0aGlzLT5VbnNldElucHV0KCk7CgkJCQkJCXJldHVybiAkY2FjaGU7CgkJCQkJfQoJCQkJfQoKCQkJfWVsc2VpZiggZmlsZV9leGlzdHMoJGNhY2hlX2ZpbGUpICl7CgkJCQlzd2l0Y2goTGVzc19QYXJzZXI6OiRvcHRpb25zWydjYWNoZV9tZXRob2QnXSl7CgoJCQkJCS8vIFVzaW5nIHNlcmlhbGl6ZQoJCQkJCS8vIEZhc3RlciBidXQgdXNlcyBtb3JlIG1lbW9yeQoJCQkJCWNhc2UgJ3NlcmlhbGl6ZSc6CgkJCQkJCSRjYWNoZSA9IHVuc2VyaWFsaXplKGZpbGVfZ2V0X2NvbnRlbnRzKCRjYWNoZV9maWxlKSk7CgkJCQkJCWlmKCAkY2FjaGUgKXsKCQkJCQkJCXRvdWNoKCRjYWNoZV9maWxlKTsKCQkJCQkJCSR0aGlzLT5VbnNldElucHV0KCk7CgkJCQkJCQlyZXR1cm4gJGNhY2hlOwoJCQkJCQl9CgkJCQkJYnJlYWs7CgoKCQkJCQkvLyBVc2luZyBnZW5lcmF0ZWQgcGhwIGNvZGUKCQkJCQljYXNlICd2YXJfZXhwb3J0JzoKCQkJCQljYXNlICdwaHAnOgoJCQkJCSR0aGlzLT5VbnNldElucHV0KCk7CgkJCQkJcmV0dXJuIGluY2x1ZGUoJGNhY2hlX2ZpbGUpOwoJCQkJfQoJCQl9CgkJfQoKCQkkcnVsZXMgPSAkdGhpcy0+cGFyc2VQcmltYXJ5KCk7CgoJCWlmKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ2h1bmsoJHRoaXMtPmlucHV0LCBudWxsLCAkdGhpcy0+ZnVydGhlc3QsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyk7CgkJfQoKCQkkdGhpcy0+VW5zZXRJbnB1dCgpOwoKCgkJLy9zYXZlIHRoZSBjYWNoZQoJCWlmKCAkY2FjaGVfZmlsZSApewoJCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjYWNoZV9tZXRob2QnXSA9PSAnY2FsbGJhY2snICl7CgkJCQlpZiggaXNfY2FsbGFibGUoTGVzc19QYXJzZXI6OiRvcHRpb25zWydjYWNoZV9jYWxsYmFja19zZXQnXSkgKXsKCQkJCQljYWxsX3VzZXJfZnVuY19hcnJheSgKCQkJCQkJTGVzc19QYXJzZXI6OiRvcHRpb25zWydjYWNoZV9jYWxsYmFja19zZXQnXSwKCQkJCQkJYXJyYXkoJHRoaXMsICRmaWxlX3BhdGgsICRjYWNoZV9maWxlLCAkcnVsZXMpCgkJCQkJKTsKCQkJCX0KCgkJCX1lbHNlewoJCQkJLy9tc2coJ3dyaXRlIGNhY2hlIGZpbGUnKTsKCQkJCXN3aXRjaChMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddKXsKCQkJCQljYXNlICdzZXJpYWxpemUnOgoJCQkJCQlmaWxlX3B1dF9jb250ZW50cyggJGNhY2hlX2ZpbGUsIHNlcmlhbGl6ZSgkcnVsZXMpICk7CgkJCQkJYnJlYWs7CgkJCQkJY2FzZSAncGhwJzoKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoICRjYWNoZV9maWxlLCAnPD9waHAgcmV0dXJuICcuc2VsZjo6QXJnU3RyaW5nKCRydWxlcykuJzsgPz4nICk7CgkJCQkJYnJlYWs7CgkJCQkJY2FzZSAndmFyX2V4cG9ydCc6CgkJCQkJCS8vUmVxdWlyZXMgX19zZXRfc3RhdGUoKQoJCQkJCQlmaWxlX3B1dF9jb250ZW50cyggJGNhY2hlX2ZpbGUsICc8P3BocCByZXR1cm4gJy52YXJfZXhwb3J0KCRydWxlcyx0cnVlKS4nOyA/PicgKTsKCQkJCQlicmVhazsKCQkJCX0KCgkJCQlMZXNzX0NhY2hlOjpDbGVhbkNhY2hlKCk7CgkJCX0KCQl9CgoJCXJldHVybiAkcnVsZXM7Cgl9CgoKCS8qKgoJICogU2V0IHVwIHRoZSBpbnB1dCBidWZmZXIKCSAqCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBTZXRJbnB1dCggJGZpbGVfcGF0aCApewoKCQlpZiggJGZpbGVfcGF0aCApewoJCQkkdGhpcy0+aW5wdXQgPSBmaWxlX2dldF9jb250ZW50cyggJGZpbGVfcGF0aCApOwoJCX0KCgkJJHRoaXMtPnBvcyA9ICR0aGlzLT5mdXJ0aGVzdCA9IDA7CgoJCS8vIFJlbW92ZSBwb3RlbnRpYWwgVVRGIEJ5dGUgT3JkZXIgTWFyawoJCSR0aGlzLT5pbnB1dCA9IHByZWdfcmVwbGFjZSgnL1xcR1x4RUZceEJCXHhCRi8nLCAnJywgJHRoaXMtPmlucHV0KTsKCQkkdGhpcy0+aW5wdXRfbGVuID0gc3RybGVuKCR0aGlzLT5pbnB1dCk7CgoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydzb3VyY2VNYXAnXSAmJiAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gKXsKCQkJJHVyaSA9ICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mb1snY3VycmVudFVyaSddOwoJCQlMZXNzX1BhcnNlcjo6JGNvbnRlbnRzTWFwWyR1cmldID0gJHRoaXMtPmlucHV0OwoJCX0KCgl9CgoKCS8qKgoJICogRnJlZSB1cCBzb21lIG1lbW9yeQoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIFVuc2V0SW5wdXQoKXsKCQl1bnNldCgkdGhpcy0+aW5wdXQsICR0aGlzLT5wb3MsICR0aGlzLT5pbnB1dF9sZW4sICR0aGlzLT5mdXJ0aGVzdCk7CgkJJHRoaXMtPnNhdmVTdGFjayA9IGFycmF5KCk7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBDYWNoZUZpbGUoICRmaWxlX3BhdGggKXsKCgkJaWYoICRmaWxlX3BhdGggJiYgJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgoJCQkkZW52ID0gZ2V0X29iamVjdF92YXJzKCR0aGlzLT5lbnYpOwoJCQl1bnNldCgkZW52WydmcmFtZXMnXSk7CgoJCQkkcGFydHMgPSBhcnJheSgpOwoJCQkkcGFydHNbXSA9ICRmaWxlX3BhdGg7CgkJCSRwYXJ0c1tdID0gZmlsZXNpemUoICRmaWxlX3BhdGggKTsKCQkJJHBhcnRzW10gPSBmaWxlbXRpbWUoICRmaWxlX3BhdGggKTsKCQkJJHBhcnRzW10gPSAkZW52OwoJCQkkcGFydHNbXSA9IExlc3NfVmVyc2lvbjo6Y2FjaGVfdmVyc2lvbjsKCQkJJHBhcnRzW10gPSBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddOwoJCQlyZXR1cm4gTGVzc19DYWNoZTo6JGNhY2hlX2RpciAuIExlc3NfQ2FjaGU6OiRwcmVmaXggLiBiYXNlX2NvbnZlcnQoIHNoYTEoanNvbl9lbmNvZGUoJHBhcnRzKSApLCAxNiwgMzYpIC4gJy5sZXNzY2FjaGUnOwoJCX0KCX0KCgoJc3RhdGljIGZ1bmN0aW9uIEFkZFBhcnNlZEZpbGUoJGZpbGUpewoJCXNlbGY6OiRpbXBvcnRzW10gPSAkZmlsZTsKCX0KCglzdGF0aWMgZnVuY3Rpb24gQWxsUGFyc2VkRmlsZXMoKXsKCQlyZXR1cm4gc2VsZjo6JGltcG9ydHM7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlCgkgKi8KCXN0YXRpYyBmdW5jdGlvbiBGaWxlUGFyc2VkKCRmaWxlKXsKCQlyZXR1cm4gaW5fYXJyYXkoJGZpbGUsc2VsZjo6JGltcG9ydHMpOwoJfQoKCglmdW5jdGlvbiBzYXZlKCkgewoJCSR0aGlzLT5zYXZlU3RhY2tbXSA9ICR0aGlzLT5wb3M7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiByZXN0b3JlKCkgewoJCSR0aGlzLT5wb3MgPSBhcnJheV9wb3AoJHRoaXMtPnNhdmVTdGFjayk7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBmb3JnZXQoKXsKCQlhcnJheV9wb3AoJHRoaXMtPnNhdmVTdGFjayk7Cgl9CgoKCXByaXZhdGUgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKCRvZmZzZXQgPSAwKSB7CgkJcmV0dXJuIHByZWdfbWF0Y2goJy9ccy8nLCR0aGlzLT5pbnB1dFsgJHRoaXMtPnBvcyArICRvZmZzZXRdKTsKCX0KCgkvKioKCSAqIFBhcnNlIGZyb20gYSB0b2tlbiwgcmVnZXhwIG9yIHN0cmluZywgYW5kIG1vdmUgZm9yd2FyZCBpZiBtYXRjaAoJICoKCSAqIEBwYXJhbSBhcnJheSAkdG9rcwoJICogQHJldHVybiBhcnJheQoJICovCglwcml2YXRlIGZ1bmN0aW9uIG1hdGNoKCR0b2tzKXsKCgkJLy8gVGhlIG1hdGNoIGlzIGNvbmZpcm1lZCwgYWRkIHRoZSBtYXRjaCBsZW5ndGggdG8gYHRoaXM6OnBvc2AsCgkJLy8gYW5kIGNvbnN1bWUgYW55IGV4dHJhIHdoaXRlLXNwYWNlIGNoYXJhY3RlcnMgKCcgJyB8fCAnXG4nKQoJCS8vIHdoaWNoIGNvbWUgYWZ0ZXIgdGhhdC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IExlU1MncwoJCS8vIGdyYW1tYXIgaXMgbW9zdGx5IHdoaXRlLXNwYWNlIGluc2Vuc2l0aXZlLgoJCS8vCgoJCWZvcmVhY2goJHRva3MgYXMgJHRvayl7CgoJCQkkY2hhciA9ICR0b2tbMF07CgoJCQlpZiggJGNoYXIgPT09ICcvJyApewoJCQkJJG1hdGNoID0gJHRoaXMtPk1hdGNoUmVnKCR0b2spOwoKCQkJCWlmKCAkbWF0Y2ggKXsKCQkJCQlyZXR1cm4gY291bnQoJG1hdGNoKSA9PT0gMSA/ICRtYXRjaFswXSA6ICRtYXRjaDsKCQkJCX0KCgkJCX1lbHNlaWYoICRjaGFyID09PSAnIycgKXsKCQkJCSRtYXRjaCA9ICR0aGlzLT5NYXRjaENoYXIoJHRva1sxXSk7CgoJCQl9ZWxzZXsKCQkJCS8vIE5vbi10ZXJtaW5hbCwgbWF0Y2ggdXNpbmcgYSBmdW5jdGlvbiBjYWxsCgkJCQkkbWF0Y2ggPSAkdGhpcy0+JHRvaygpOwoKCQkJfQoKCQkJaWYoICRtYXRjaCApewoJCQkJcmV0dXJuICRtYXRjaDsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmdbXSAkdG9rcwoJICoKCSAqIEByZXR1cm4gc3RyaW5nCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gTWF0Y2hGdW5jcygkdG9rcyl7CgoJCWlmKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApewoJCQlmb3JlYWNoKCR0b2tzIGFzICR0b2spewoJCQkJJG1hdGNoID0gJHRoaXMtPiR0b2soKTsKCQkJCWlmKCAkbWF0Y2ggKXsKCQkJCQlyZXR1cm4gJG1hdGNoOwoJCQkJfQoJCQl9CgkJfQoKCX0KCgkvLyBNYXRjaCBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LAoJcHJpdmF0ZSBmdW5jdGlvbiBNYXRjaENoYXIoJHRvayl7CgkJaWYoICgkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbikgJiYgKCR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA9PT0gJHRvaykgKXsKCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKDEpOwoJCQlyZXR1cm4gJHRvazsKCQl9Cgl9CgoJLy8gTWF0Y2ggYSByZWdleHAgZnJvbSB0aGUgY3VycmVudCBzdGFydCBwb2ludAoJcHJpdmF0ZSBmdW5jdGlvbiBNYXRjaFJlZygkdG9rKXsKCgkJaWYoIHByZWdfbWF0Y2goJHRvaywgJHRoaXMtPmlucHV0LCAkbWF0Y2gsIDAsICR0aGlzLT5wb3MpICl7CgkJCSR0aGlzLT5za2lwV2hpdGVzcGFjZShzdHJsZW4oJG1hdGNoWzBdKSk7CgkJCXJldHVybiAkbWF0Y2g7CgkJfQoJfQoKCgkvKioKCSAqIFNhbWUgYXMgbWF0Y2goKSwgYnV0IGRvbid0IGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHBhcnNlciwKCSAqIGp1c3QgcmV0dXJuIHRoZSBtYXRjaC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0b2sKCSAqIEByZXR1cm4gaW50ZWdlcgoJICovCglwdWJsaWMgZnVuY3Rpb24gUGVla1JlZygkdG9rKXsKCQlyZXR1cm4gcHJlZ19tYXRjaCgkdG9rLCAkdGhpcy0+aW5wdXQsICRtYXRjaCwgMCwgJHRoaXMtPnBvcyk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICR0b2sKCSAqLwoJcHVibGljIGZ1bmN0aW9uIFBlZWtDaGFyKCR0b2spewoJCS8vcmV0dXJuICgkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICR0b2sgKTsKCQlyZXR1cm4gKCR0aGlzLT5wb3MgPCAkdGhpcy0+aW5wdXRfbGVuKSAmJiAoJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdID09PSAkdG9rICk7Cgl9CgoKCS8qKgoJICogQHBhcmFtIGludGVnZXIgJGxlbmd0aAoJICovCglwdWJsaWMgZnVuY3Rpb24gc2tpcFdoaXRlc3BhY2UoJGxlbmd0aCl7CgoJCSR0aGlzLT5wb3MgKz0gJGxlbmd0aDsKCgkJZm9yKDsgJHRoaXMtPnBvcyA8ICR0aGlzLT5pbnB1dF9sZW47ICR0aGlzLT5wb3MrKyApewoJCQkkYyA9ICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXTsKCgkJCWlmKCAoJGMgIT09ICJcbiIpICYmICgkYyAhPT0gIlxyIikgJiYgKCRjICE9PSAiXHQiKSAmJiAoJGMgIT09ICcgJykgKXsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJfQoKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHRvawoJICogQHBhcmFtIHN0cmluZ3xudWxsICRtc2cKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGV4cGVjdCgkdG9rLCAkbXNnID0gTlVMTCkgewoJCSRyZXN1bHQgPSAkdGhpcy0+bWF0Y2goIGFycmF5KCR0b2spICk7CgkJaWYgKCEkcmVzdWx0KSB7CgkJCSR0aGlzLT5FcnJvciggJG1zZwk/ICJFeHBlY3RlZCAnIiAuICR0b2sgLiAiJyBnb3QgJyIgLiAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gLiAiJyIgOiAkbXNnICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkdG9rCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBleHBlY3RDaGFyKCR0b2ssICRtc2cgPSBudWxsICl7CgkJJHJlc3VsdCA9ICR0aGlzLT5NYXRjaENoYXIoJHRvayk7CgkJaWYoICEkcmVzdWx0ICl7CgkJCSR0aGlzLT5FcnJvciggJG1zZyA/ICJFeHBlY3RlZCAnIiAuICR0b2sgLiAiJyBnb3QgJyIgLiAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gLiAiJyIgOiAkbXNnICk7CgkJfWVsc2V7CgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCgkvLwoJLy8gSGVyZSBpbiwgdGhlIHBhcnNpbmcgcnVsZXMvZnVuY3Rpb25zCgkvLwoJLy8gVGhlIGJhc2ljIHN0cnVjdHVyZSBvZiB0aGUgc3ludGF4IHRyZWUgZ2VuZXJhdGVkIGlzIGFzIGZvbGxvd3M6CgkvLwoJLy8gICBSdWxlc2V0IC0+ICBSdWxlIC0+IFZhbHVlIC0+IEV4cHJlc3Npb24gLT4gRW50aXR5CgkvLwoJLy8gSGVyZSdzIHNvbWUgTEVTUyBjb2RlOgoJLy8KCS8vCS5jbGFzcyB7CgkvLwkgIGNvbG9yOiAjZmZmOwoJLy8JICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwoJLy8JICB3aWR0aDogQHcgKyA0cHg7CgkvLwkgID4gLmNoaWxkIHsuLi59CgkvLwl9CgkvLwoJLy8gQW5kIGhlcmUncyB3aGF0IHRoZSBwYXJzZSB0cmVlIG1pZ2h0IGxvb2sgbGlrZToKCS8vCgkvLwkgUnVsZXNldCAoU2VsZWN0b3IgJy5jbGFzcycsIFsKCS8vCQkgUnVsZSAoImNvbG9yIiwgIFZhbHVlIChbRXhwcmVzc2lvbiBbQ29sb3IgI2ZmZl1dKSkKCS8vCQkgUnVsZSAoImJvcmRlciIsIFZhbHVlIChbRXhwcmVzc2lvbiBbRGltZW5zaW9uIDFweF1bS2V5d29yZCAic29saWQiXVtDb2xvciAjMDAwXV0pKQoJLy8JCSBSdWxlICgid2lkdGgiLCAgVmFsdWUgKFtFeHByZXNzaW9uIFtPcGVyYXRpb24gIisiIFtWYXJpYWJsZSAiQHciXVtEaW1lbnNpb24gNHB4XV1dKSkKCS8vCQkgUnVsZXNldCAoU2VsZWN0b3IgW0VsZW1lbnQgJz4nLCAnLmNoaWxkJ10sIFsuLi5dKQoJLy8JIF0pCgkvLwoJLy8gIEluIGdlbmVyYWwsIG1vc3QgcnVsZXMgd2lsbCB0cnkgdG8gcGFyc2UgYSB0b2tlbiB3aXRoIHRoZSBgJCgpYCBmdW5jdGlvbiwgYW5kIGlmIHRoZSByZXR1cm4KCS8vICB2YWx1ZSBpcyB0cnVseSwgd2lsbCByZXR1cm4gYSBuZXcgbm9kZSwgb2YgdGhlIHJlbGV2YW50IHR5cGUuIFNvbWV0aW1lcywgd2UgbmVlZCB0byBjaGVjawoJLy8gIGZpcnN0LCBiZWZvcmUgcGFyc2luZywgdGhhdCdzIHdoZW4gd2UgdXNlIGBwZWVrKClgLgoJLy8KCgkvLwoJLy8gVGhlIGBwcmltYXJ5YCBydWxlIGlzIHRoZSAqZW50cnkqIGFuZCAqZXhpdCogcG9pbnQgb2YgdGhlIHBhcnNlci4KCS8vIFRoZSBydWxlcyBoZXJlIGNhbiBhcHBlYXIgYXQgYW55IGxldmVsIG9mIHRoZSBwYXJzZSB0cmVlLgoJLy8KCS8vIFRoZSByZWN1cnNpdmUgbmF0dXJlIG9mIHRoZSBncmFtbWFyIGlzIGFuIGludGVycGxheSBiZXR3ZWVuIHRoZSBgYmxvY2tgCgkvLyBydWxlLCB3aGljaCByZXByZXNlbnRzIGB7IC4uLiB9YCwgdGhlIGBydWxlc2V0YCBydWxlLCBhbmQgdGhpcyBgcHJpbWFyeWAgcnVsZSwKCS8vIGFzIHJlcHJlc2VudGVkIGJ5IHRoaXMgc2ltcGxpZmllZCBncmFtbWFyOgoJLy8KCS8vCSBwcmltYXJ5ICDihpIgIChydWxlc2V0IHwgcnVsZSkrCgkvLwkgcnVsZXNldCAg4oaSICBzZWxlY3RvcisgYmxvY2sKCS8vCSBibG9jawnihpIgICd7JyBwcmltYXJ5ICd9JwoJLy8KCS8vIE9ubHkgYXQgb25lIHBvaW50IGlzIHRoZSBwcmltYXJ5IHJ1bGUgbm90IGNhbGxlZCBmcm9tIHRoZQoJLy8gYmxvY2sgcnVsZTogYXQgdGhlIHJvb3QgbGV2ZWwuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVByaW1hcnkoKXsKCQkkcm9vdCA9IGFycmF5KCk7CgoJCXdoaWxlKCB0cnVlICl7CgoJCQlpZiggJHRoaXMtPnBvcyA+PSAkdGhpcy0+aW5wdXRfbGVuICl7CgkJCQlicmVhazsKCQkJfQoKCQkJJG5vZGUgPSAkdGhpcy0+cGFyc2VFeHRlbmQodHJ1ZSk7CgkJCWlmKCAkbm9kZSApewoJCQkJJHJvb3QgPSBhcnJheV9tZXJnZSgkcm9vdCwkbm9kZSk7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJLy8kbm9kZSA9ICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSggJ3BhcnNlTWl4aW5EZWZpbml0aW9uJywgJ3BhcnNlUnVsZScsICdwYXJzZVJ1bGVzZXQnLCAncGFyc2VNaXhpbkNhbGwnLCAncGFyc2VDb21tZW50JywgJ3BhcnNlRGlyZWN0aXZlJykpOwoJCQkkbm9kZSA9ICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSggJ3BhcnNlTWl4aW5EZWZpbml0aW9uJywgJ3BhcnNlTmFtZVZhbHVlJywgJ3BhcnNlUnVsZScsICdwYXJzZVJ1bGVzZXQnLCAncGFyc2VNaXhpbkNhbGwnLCAncGFyc2VDb21tZW50JywgJ3BhcnNlUnVsZXNldENhbGwnLCAncGFyc2VEaXJlY3RpdmUnKSk7CgoJCQlpZiggJG5vZGUgKXsKCQkJCSRyb290W10gPSAkbm9kZTsKCQkJfWVsc2VpZiggISR0aGlzLT5NYXRjaFJlZygnL1xcR1tcc1xuO10rLycpICl7CgkJCQlicmVhazsKCQkJfQoKICAgICAgICAgICAgaWYoICR0aGlzLT5QZWVrQ2hhcignfScpICl7CgkJCQlicmVhazsKCQkJfQoJCX0KCgkJcmV0dXJuICRyb290OwoJfQoKCgoJLy8gV2UgY3JlYXRlIGEgQ29tbWVudCBub2RlIGZvciBDU1MgY29tbWVudHMgYC8qICovYCwKCS8vIGJ1dCBrZWVwIHRoZSBMZVNTIGNvbW1lbnRzIGAvL2Agc2lsZW50LCBieSBqdXN0IHNraXBwaW5nCgkvLyBvdmVyIHRoZW0uCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQ29tbWVudCgpewoKCQlpZiggJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdICE9PSAnLycgKXsKCQkJcmV0dXJuOwoJCX0KCgkJaWYoICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zKzFdID09PSAnLycgKXsKCQkJJG1hdGNoID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHXC9cLy4qLycpOwoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajQoJ0xlc3NfVHJlZV9Db21tZW50JyxhcnJheSgkbWF0Y2hbMF0sIHRydWUsICR0aGlzLT5wb3MsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykpOwoJCX0KCgkJLy8kY29tbWVudCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1wvXCooPzpbXipdfFwqK1teXC8qXSkqXCorXC9cbj8vJyk7CgkJJGNvbW1lbnQgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEdcL1wqKD9zKS4qP1wqK1wvXG4/LycpOy8vbm90IHRoZSBzYW1lIGFzIGxlc3MuanMgdG8gcHJldmVudCBmYXRhbCBlcnJvcnMKCQlpZiggJGNvbW1lbnQgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmo0KCdMZXNzX1RyZWVfQ29tbWVudCcsYXJyYXkoJGNvbW1lbnRbMF0sIGZhbHNlLCAkdGhpcy0+cG9zLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUNvbW1lbnRzKCl7CgkJJGNvbW1lbnRzID0gYXJyYXkoKTsKCgkJd2hpbGUoICR0aGlzLT5wb3MgPCAkdGhpcy0+aW5wdXRfbGVuICl7CgkJCSRjb21tZW50ID0gJHRoaXMtPnBhcnNlQ29tbWVudCgpOwoJCQlpZiggISRjb21tZW50ICl7CgkJCQlicmVhazsKCQkJfQoKCQkJJGNvbW1lbnRzW10gPSAkY29tbWVudDsKCQl9CgoJCXJldHVybiAkY29tbWVudHM7Cgl9CgoKCgkvLwoJLy8gQSBzdHJpbmcsIHdoaWNoIHN1cHBvcnRzIGVzY2FwaW5nICIgYW5kICcKCS8vCgkvLwkgIm1pbGt5IHdheSIgJ2hlXCdzIHRoZSBvbmUhJwoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc1F1b3RlZCgpIHsKCQkkaiA9ICR0aGlzLT5wb3M7CgkJJGUgPSBmYWxzZTsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQlpZiggJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdID09PSAnficgKXsKCQkJJGorKzsKCQkJJGUgPSB0cnVlOyAvLyBFc2NhcGVkIHN0cmluZ3MKCQl9CgoJCWlmKCAkdGhpcy0+aW5wdXRbJGpdICE9ICciJyAmJiAkdGhpcy0+aW5wdXRbJGpdICE9PSAiJyIgKXsKCQkJcmV0dXJuOwoJCX0KCgkJaWYgKCRlKSB7CgkJCSR0aGlzLT5NYXRjaENoYXIoJ34nKTsKCQl9CgogICAgICAgICAgICAgICAgLy8gRml4IGZvciAjMTI0OiBtYXRjaCBlc2NhcGVkIG5ld2xpbmVzCiAgICAgICAgICAgICAgICAvLyRzdHIgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEciKCg/OlteIlxcXFxcclxuXXxcXFxcLikqKSJ8XCcoKD86W15cJ1xcXFxcclxuXXxcXFxcLikqKVwnLycpOwoJCSRzdHIgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEciKCg/OlteIlxcXFxcclxuXXxcXFxcLnxcXFxcXHJcbnxcXFxcW1xuXHJcZl0pKikifFwnKCg/OlteXCdcXFxcXHJcbl18XFxcXC58XFxcXFxyXG58XFxcXFtcblxyXGZdKSopXCcvJyk7CgoJCWlmKCAkc3RyICl7CgkJCSRyZXN1bHQgPSAkc3RyWzBdWzBdID09ICciJyA/ICRzdHJbMV0gOiAkc3RyWzJdOwoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajUoJ0xlc3NfVHJlZV9RdW90ZWQnLGFycmF5KCRzdHJbMF0sICRyZXN1bHQsICRlLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykgKTsKCQl9CgkJcmV0dXJuOwoJfQoKCgkvLwoJLy8gQSBjYXRjaC1hbGwgd29yZCwgc3VjaCBhczoKCS8vCgkvLwkgYmxhY2sgYm9yZGVyLWNvbGxhcHNlCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzS2V5d29yZCgpewoKCQkvLyRrID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHW19BLVphLXotXVtfQS1aYS16MC05LV0qLycpOwoJCSRrID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHJXxcXEdbX0EtWmEtei1dW19BLVphLXowLTktXSovJyk7CgkJaWYoICRrICl7CgkJCSRrID0gJGtbMF07CgkJCSRjb2xvciA9ICR0aGlzLT5mcm9tS2V5d29yZCgkayk7CgkJCWlmKCAkY29sb3IgKXsKCQkJCXJldHVybiAkY29sb3I7CgkJCX0KCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfS2V5d29yZCcsJGspOwoJCX0KCX0KCgkvLyBkdXBsaWNhdGUgb2YgTGVzc19UcmVlX0NvbG9yOjpGcm9tS2V5d29yZAoJcHJpdmF0ZSBmdW5jdGlvbiBGcm9tS2V5d29yZCggJGtleXdvcmQgKXsKCQkka2V5d29yZCA9IHN0cnRvbG93ZXIoJGtleXdvcmQpOwoKCQlpZiggTGVzc19Db2xvcnM6Omhhc093blByb3BlcnR5KCRrZXl3b3JkKSApewoJCQkvLyBkZXRlY3QgbmFtZWQgY29sb3IKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfQ29sb3InLHN1YnN0cihMZXNzX0NvbG9yczo6Y29sb3IoJGtleXdvcmQpLCAxKSk7CgkJfQoKCQlpZiggJGtleXdvcmQgPT09ICd0cmFuc3BhcmVudCcgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmozKCdMZXNzX1RyZWVfQ29sb3InLCBhcnJheSggYXJyYXkoMCwgMCwgMCksIDAsIHRydWUpKTsKCQl9Cgl9CgoJLy8KCS8vIEEgZnVuY3Rpb24gY2FsbAoJLy8KCS8vCSByZ2IoMjU1LCAwLCAyNTUpCgkvLwoJLy8gV2UgYWxzbyB0cnkgdG8gY2F0Y2ggSUUncyBgYWxwaGEoKWAsIGJ1dCBsZXQgdGhlIGBhbHBoYWAgcGFyc2VyCgkvLyBkZWFsIHdpdGggdGhlIGRldGFpbHMuCgkvLwoJLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFyc2VkIHdpdGggdGhlIGBlbnRpdGllcy5hcmd1bWVudHNgIHBhcnNlci4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNDYWxsKCl7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCgkJaWYoICFwcmVnX21hdGNoKCcvXFxHKFtcdy1dK3wlfHByb2dpZDpbXHdcLl0rKVwoLycsICR0aGlzLT5pbnB1dCwgJG5hbWUsMCwkdGhpcy0+cG9zKSApewoJCQlyZXR1cm47CgkJfQoJCSRuYW1lID0gJG5hbWVbMV07CgkJJG5hbWVMQyA9IHN0cnRvbG93ZXIoJG5hbWUpOwoKCQlpZiAoJG5hbWVMQyA9PT0gJ3VybCcpIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQkkdGhpcy0+cG9zICs9IHN0cmxlbigkbmFtZSk7CgoJCWlmKCAkbmFtZUxDID09PSAnYWxwaGEnICl7CgkJCSRhbHBoYV9yZXQgPSAkdGhpcy0+cGFyc2VBbHBoYSgpOwoJCQlpZiggJGFscGhhX3JldCApewoJCQkJcmV0dXJuICRhbHBoYV9yZXQ7CgkJCX0KCQl9CgoJCSR0aGlzLT5NYXRjaENoYXIoJygnKTsgLy8gUGFyc2UgdGhlICcoJyBhbmQgY29uc3VtZSB3aGl0ZXNwYWNlLgoKCQkkYXJncyA9ICR0aGlzLT5wYXJzZUVudGl0aWVzQXJndW1lbnRzKCk7CgoJCWlmKCAhJHRoaXMtPk1hdGNoQ2hhcignKScpICl7CgkJCXJldHVybjsKCQl9CgoJCWlmICgkbmFtZSkgewoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajQoJ0xlc3NfVHJlZV9DYWxsJyxhcnJheSgkbmFtZSwgJGFyZ3MsICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvKSApOwoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIGEgbGlzdCBvZiBhcmd1bWVudHMKCSAqCgkgKiBAcmV0dXJuIGFycmF5CgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc0FyZ3VtZW50cygpewoKCQkkYXJncyA9IGFycmF5KCk7CgkJd2hpbGUoIHRydWUgKXsKCQkJJGFyZyA9ICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSgncGFyc2VFbnRpdGllc0Fzc2lnbm1lbnQnLCdwYXJzZUV4cHJlc3Npb24nKSApOwoJCQlpZiggISRhcmcgKXsKCQkJCWJyZWFrOwoJCQl9CgoJCQkkYXJnc1tdID0gJGFyZzsKCQkJaWYoICEkdGhpcy0+TWF0Y2hDaGFyKCcsJykgKXsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCXJldHVybiAkYXJnczsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNMaXRlcmFsKCl7CgkJcmV0dXJuICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSgncGFyc2VFbnRpdGllc0RpbWVuc2lvbicsJ3BhcnNlRW50aXRpZXNDb2xvcicsJ3BhcnNlRW50aXRpZXNRdW90ZWQnLCdwYXJzZVVuaWNvZGVEZXNjcmlwdG9yJykgKTsKCX0KCgkvLyBBc3NpZ25tZW50cyBhcmUgYXJndW1lbnQgZW50aXRpZXMgZm9yIGNhbGxzLgoJLy8gVGhleSBhcmUgcHJlc2VudCBpbiBpZSBmaWx0ZXIgcHJvcGVydGllcyBhcyBzaG93biBiZWxvdy4KCS8vCgkvLwkgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoICpvcGFjaXR5PTUwKiApCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzQXNzaWdubWVudCgpIHsKCgkJJGtleSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1x3Kyg/PVxzPz0pLycpOwoJCWlmKCAhJGtleSApewoJCQlyZXR1cm47CgkJfQoKCQlpZiggISR0aGlzLT5NYXRjaENoYXIoJz0nKSApewoJCQlyZXR1cm47CgkJfQoKCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VFbnRpdHkoKTsKCQlpZiggJHZhbHVlICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMignTGVzc19UcmVlX0Fzc2lnbm1lbnQnLGFycmF5KCRrZXlbMF0sICR2YWx1ZSkpOwoJCX0KCX0KCgkvLwoJLy8gUGFyc2UgdXJsKCkgdG9rZW5zCgkvLwoJLy8gV2UgdXNlIGEgc3BlY2lmaWMgcnVsZSBmb3IgdXJscywgYmVjYXVzZSB0aGV5IGRvbid0IHJlYWxseSBiZWhhdmUgbGlrZQoJLy8gc3RhbmRhcmQgZnVuY3Rpb24gY2FsbHMuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGFyZ3VtZW50IGRvZXNuJ3QgaGF2ZQoJLy8gdG8gYmUgZW5jbG9zZWQgd2l0aGluIGEgc3RyaW5nLCBzbyBpdCBjYW4ndCBiZSBwYXJzZWQgYXMgYW4gRXhwcmVzc2lvbi4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNVcmwoKXsKCgoJCWlmKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gIT09ICd1JyB8fCAhJHRoaXMtPm1hdGNoUmVnKCcvXFxHdXJsXCgvJykgKXsKCQkJcmV0dXJuOwoJCX0KCgkJJHZhbHVlID0gJHRoaXMtPm1hdGNoKCBhcnJheSgncGFyc2VFbnRpdGllc1F1b3RlZCcsJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScsJy9cXEdkYXRhXDouKj9bXlwpXSsvJywnL1xcRyg/Oig/OlxcXFxbXChcKVwnIl0pfFteXChcKVwnIl0pKy8nKSApOwoJCWlmKCAhJHZhbHVlICl7CgkJCSR2YWx1ZSA9ICcnOwoJCX0KCgoJCSR0aGlzLT5leHBlY3RDaGFyKCcpJyk7CgoKCQlpZiggaXNzZXQoJHZhbHVlLT52YWx1ZSkgfHwgJHZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlX1ZhcmlhYmxlICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMignTGVzc19UcmVlX1VybCcsYXJyYXkoJHZhbHVlLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+TmV3T2JqMignTGVzc19UcmVlX1VybCcsIGFycmF5KCAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0Fub255bW91cycsJHZhbHVlKSwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvKSApOwoJfQoKCgkvLwoJLy8gQSBWYXJpYWJsZSBlbnRpdHksIHN1Y2ggYXMgYEBmaW5rYCwgaW4KCS8vCgkvLwkgd2lkdGg6IEBmaW5rICsgMnB4CgkvLwoJLy8gV2UgdXNlIGEgZGlmZmVyZW50IHBhcnNlciBmb3IgdmFyaWFibGUgZGVmaW5pdGlvbnMsCgkvLyBzZWUgYHBhcnNlcnMudmFyaWFibGVgLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc1ZhcmlhYmxlKCl7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQlpZiAoJHRoaXMtPlBlZWtDaGFyKCdAJykgJiYgKCRuYW1lID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHQEA/W1x3LV0rLycpKSkgewoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajMoJ0xlc3NfVHJlZV9WYXJpYWJsZScsIGFycmF5KCAkbmFtZVswXSwgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9Cgl9CgoKCS8vIEEgdmFyaWFibGUgZW50aXR5IHVzZWluZyB0aGUgcHJvdGVjdGl2ZSB7fSBlLmcuIEB7dmFyfQoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzVmFyaWFibGVDdXJseSgpIHsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQlpZiggJHRoaXMtPmlucHV0X2xlbiA+ICgkdGhpcy0+cG9zKzEpICYmICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA9PT0gJ0AnICYmICgkY3VybHkgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEdAXHsoW1x3LV0rKVx9LycpKSApewoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajMoJ0xlc3NfVHJlZV9WYXJpYWJsZScsYXJyYXkoJ0AnLiRjdXJseVsxXSwgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9Cgl9CgoJLy8KCS8vIEEgSGV4YWRlY2ltYWwgY29sb3IKCS8vCgkvLwkgIzRGM0MyRgoJLy8KCS8vIGByZ2JgIGFuZCBgaHNsYCBjb2xvcnMgYXJlIHBhcnNlZCB0aHJvdWdoIHRoZSBgZW50aXRpZXMuY2FsbGAgcGFyc2VyLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc0NvbG9yKCl7CgkJaWYgKCR0aGlzLT5QZWVrQ2hhcignIycpICYmICgkcmdiID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHIyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkvJykpKSB7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0NvbG9yJywkcmdiWzFdKTsKCQl9Cgl9CgoJLy8KCS8vIEEgRGltZW5zaW9uLCB0aGF0IGlzLCBhIG51bWJlciBhbmQgYSB1bml0CgkvLwoJLy8JIDAuNWVtIDk1JQoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc0RpbWVuc2lvbigpewoKCQkkYyA9IEBvcmQoJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdKTsKCgkJLy9JcyB0aGUgZmlyc3QgY2hhciBvZiB0aGUgZGltZW5zaW9uIDAtOSwgJy4nLCAnKycgb3IgJy0nCgkJaWYgKCgkYyA+IDU3IHx8ICRjIDwgNDMpIHx8ICRjID09PSA0NyB8fCAkYyA9PSA0NCl7CgkJCXJldHVybjsKCQl9CgoJCSR2YWx1ZSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhbKy1dP1xkKlwuP1xkKykoJXxbYS16XSspPy8nKTsKCQlpZiggJHZhbHVlICl7CgoJCQlpZiggaXNzZXQoJHZhbHVlWzJdKSApewoJCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoyKCdMZXNzX1RyZWVfRGltZW5zaW9uJywgYXJyYXkoJHZhbHVlWzFdLCR2YWx1ZVsyXSkpOwoJCQl9CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0RpbWVuc2lvbicsJHZhbHVlWzFdKTsKCQl9Cgl9CgoKCS8vCgkvLyBBIHVuaWNvZGUgZGVzY3JpcHRvciwgYXMgaXMgdXNlZCBpbiB1bmljb2RlLXJhbmdlCgkvLwoJLy8gVSswPz8gb3IgVSswMEExLTAwQTkKCS8vCglmdW5jdGlvbiBwYXJzZVVuaWNvZGVEZXNjcmlwdG9yKCkgewoJCSR1ZCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhVXCtbMC05YS1mQS1GP10rKShcLVswLTlhLWZBLUY/XSspPy8nKTsKCQlpZiggJHVkICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX1VuaWNvZGVEZXNjcmlwdG9yJywgJHVkWzBdKTsKCQl9Cgl9CgoKCS8vCgkvLyBKYXZhU2NyaXB0IGNvZGUgdG8gYmUgZXZhbHVhdGVkCgkvLwoJLy8JIGB3aW5kb3cubG9jYXRpb24uaHJlZmAKCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNKYXZhc2NyaXB0KCl7CgkJJGUgPSBmYWxzZTsKCQkkaiA9ICR0aGlzLT5wb3M7CgkJaWYoICR0aGlzLT5pbnB1dFskal0gPT09ICd+JyApewoJCQkkaisrOwoJCQkkZSA9IHRydWU7CgkJfQoJCWlmKCAkdGhpcy0+aW5wdXRbJGpdICE9PSAnYCcgKXsKCQkJcmV0dXJuOwoJCX0KCQlpZiggJGUgKXsKCQkJJHRoaXMtPk1hdGNoQ2hhcignficpOwoJCX0KCQkkc3RyID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHYChbXmBdKilgLycpOwoJCWlmKCAkc3RyICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMygnTGVzc19UcmVlX0phdmFzY3JpcHQnLCBhcnJheSgkc3RyWzFdLCAkdGhpcy0+cG9zLCAkZSkpOwoJCX0KCX0KCgoJLy8KCS8vIFRoZSB2YXJpYWJsZSBwYXJ0IG9mIGEgdmFyaWFibGUgZGVmaW5pdGlvbi4gVXNlZCBpbiB0aGUgYHJ1bGVgIHBhcnNlcgoJLy8KCS8vCSBAZmluazoKCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGUoKXsKCQlpZiAoJHRoaXMtPlBlZWtDaGFyKCdAJykgJiYgKCRuYW1lID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHKEBbXHctXSspXHMqOi8nKSkpIHsKCQkJcmV0dXJuICRuYW1lWzFdOwoJCX0KCX0KCgoJLy8KCS8vIFRoZSB2YXJpYWJsZSBwYXJ0IG9mIGEgdmFyaWFibGUgZGVmaW5pdGlvbi4gVXNlZCBpbiB0aGUgYHJ1bGVgIHBhcnNlcgoJLy8KCS8vIEBmaW5rKCk7CgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVJ1bGVzZXRDYWxsKCl7CgoJCWlmKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICdAJyAmJiAoJG5hbWUgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEcoQFtcdy1dKylccypcKFxzKlwpXHMqOy8nKSkgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfUnVsZXNldENhbGwnLCAkbmFtZVsxXSApOwoJCX0KCX0KCgoJLy8KCS8vIGV4dGVuZCBzeW50YXggLSB1c2VkIHRvIGV4dGVuZCBzZWxlY3RvcnMKCS8vCglmdW5jdGlvbiBwYXJzZUV4dGVuZCgkaXNSdWxlID0gZmFsc2UpewoKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSRleHRlbmRMaXN0ID0gYXJyYXkoKTsKCgoJCWlmKCAhJHRoaXMtPk1hdGNoUmVnKCAkaXNSdWxlID8gJy9cXEcmOmV4dGVuZFwoLycgOiAnL1xcRzpleHRlbmRcKC8nICkgKXsgcmV0dXJuOyB9CgoJCWRvewoJCQkkb3B0aW9uID0gbnVsbDsKCQkJJGVsZW1lbnRzID0gYXJyYXkoKTsKCQkJd2hpbGUoIHRydWUgKXsKCQkJCSRvcHRpb24gPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEcoYWxsKSg/PVxzKihcKXwsKSkvJyk7CgkJCQlpZiggJG9wdGlvbiApeyBicmVhazsgfQoJCQkJJGUgPSAkdGhpcy0+cGFyc2VFbGVtZW50KCk7CgkJCQlpZiggISRlICl7IGJyZWFrOyB9CgkJCQkkZWxlbWVudHNbXSA9ICRlOwoJCQl9CgoJCQlpZiggJG9wdGlvbiApewoJCQkJJG9wdGlvbiA9ICRvcHRpb25bMV07CgkJCX0KCgkJCSRleHRlbmRMaXN0W10gPSAkdGhpcy0+TmV3T2JqMygnTGVzc19UcmVlX0V4dGVuZCcsIGFycmF5KCAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX1NlbGVjdG9yJywkZWxlbWVudHMpLCAkb3B0aW9uLCAkaW5kZXggKSk7CgoJCX13aGlsZSggJHRoaXMtPk1hdGNoQ2hhcigiLCIpICk7CgoJCSR0aGlzLT5leHBlY3QoJy9cXEdcKS8nKTsKCgkJaWYoICRpc1J1bGUgKXsKCQkJJHRoaXMtPmV4cGVjdCgnL1xcRzsvJyk7CgkJfQoKCQlyZXR1cm4gJGV4dGVuZExpc3Q7Cgl9CgoKCS8vCgkvLyBBIE1peGluIGNhbGwsIHdpdGggYW4gb3B0aW9uYWwgYXJndW1lbnQgbGlzdAoJLy8KCS8vCSAjbWl4aW5zID4gLnNxdWFyZSgjZmZmKTsKCS8vCSAucm91bmRlZCg0cHgsIGJsYWNrKTsKCS8vCSAuYnV0dG9uOwoJLy8KCS8vIFRoZSBgd2hpbGVgIGxvb3AgaXMgdGhlcmUgYmVjYXVzZSBtaXhpbnMgY2FuIGJlCgkvLyBuYW1lc3BhY2VkLCBidXQgd2Ugb25seSBzdXBwb3J0IHRoZSBjaGlsZCBhbmQgZGVzY2VuZGFudAoJLy8gc2VsZWN0b3IgZm9yIG5vdy4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWl4aW5DYWxsKCl7CgoJCSRjaGFyID0gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdOwoJCWlmKCAkY2hhciAhPT0gJy4nICYmICRjaGFyICE9PSAnIycgKXsKCQkJcmV0dXJuOwoJCX0KCgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQkkdGhpcy0+c2F2ZSgpOyAvLyBzdG9wIHVzIGFic29yYmluZyBwYXJ0IG9mIGFuIGludmFsaWQgc2VsZWN0b3IKCgkJJGVsZW1lbnRzID0gJHRoaXMtPnBhcnNlTWl4aW5DYWxsRWxlbWVudHMoKTsKCgkJaWYoICRlbGVtZW50cyApewoKCQkJaWYoICR0aGlzLT5NYXRjaENoYXIoJygnKSApewoJCQkJJHJldHVybmVkID0gJHRoaXMtPnBhcnNlTWl4aW5BcmdzKHRydWUpOwoJCQkJJGFyZ3MgPSAkcmV0dXJuZWRbJ2FyZ3MnXTsKCQkJCSR0aGlzLT5leHBlY3RDaGFyKCcpJyk7CgkJCX1lbHNlewoJCQkJJGFyZ3MgPSBhcnJheSgpOwoJCQl9CgoJCQkkaW1wb3J0YW50ID0gJHRoaXMtPnBhcnNlSW1wb3J0YW50KCk7CgoJCQlpZiggJHRoaXMtPnBhcnNlRW5kKCkgKXsKCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCXJldHVybiAkdGhpcy0+TmV3T2JqNSgnTGVzc19UcmVlX01peGluX0NhbGwnLCBhcnJheSggJGVsZW1lbnRzLCAkYXJncywgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8sICRpbXBvcnRhbnQpKTsKCQkJfQoJCX0KCgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1peGluQ2FsbEVsZW1lbnRzKCl7CgkJJGVsZW1lbnRzID0gYXJyYXkoKTsKCQkkYyA9IG51bGw7CgoJCXdoaWxlKCB0cnVlICl7CgkJCSRlbGVtSW5kZXggPSAkdGhpcy0+cG9zOwoJCQkkZSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1sjLl0oPzpbXHctXXxcXFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKy8nKTsKCQkJaWYoICEkZSApewoJCQkJYnJlYWs7CgkJCX0KCQkJJGVsZW1lbnRzW10gPSAkdGhpcy0+TmV3T2JqNCgnTGVzc19UcmVlX0VsZW1lbnQnLCBhcnJheSgkYywgJGVbMF0sICRlbGVtSW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykpOwoJCQkkYyA9ICR0aGlzLT5NYXRjaENoYXIoJz4nKTsKCQl9CgoJCXJldHVybiAkZWxlbWVudHM7Cgl9CgoKCgkvKioKCSAqIEBwYXJhbSBib29sZWFuICRpc0NhbGwKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1peGluQXJncyggJGlzQ2FsbCApewoJCSRleHByZXNzaW9ucyA9IGFycmF5KCk7CgkJJGFyZ3NTZW1pQ29sb24gPSBhcnJheSgpOwoJCSRpc1NlbWlDb2xvblNlcGVyYXRlZCA9IG51bGw7CgkJJGFyZ3NDb21tYSA9IGFycmF5KCk7CgkJJGV4cHJlc3Npb25Db250YWluc05hbWVkID0gbnVsbDsKCQkkbmFtZSA9IG51bGw7CgkJJHJldHVybmVyID0gYXJyYXkoJ2FyZ3MnPT5hcnJheSgpLCAndmFyaWFkaWMnPT4gZmFsc2UpOwoKCQkkdGhpcy0+c2F2ZSgpOwoKCQl3aGlsZSggdHJ1ZSApewoJCQlpZiggJGlzQ2FsbCApewoJCQkJJGFyZyA9ICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSggJ3BhcnNlRGV0YWNoZWRSdWxlc2V0JywncGFyc2VFeHByZXNzaW9uJyApICk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+cGFyc2VDb21tZW50cygpOwoJCQkJaWYoICR0aGlzLT5pbnB1dFsgJHRoaXMtPnBvcyBdID09PSAnLicgJiYgJHRoaXMtPk1hdGNoUmVnKCcvXFxHXC57M30vJykgKXsKCQkJCQkkcmV0dXJuZXJbJ3ZhcmlhZGljJ10gPSB0cnVlOwoJCQkJCWlmKCAkdGhpcy0+TWF0Y2hDaGFyKCI7IikgJiYgISRpc1NlbWlDb2xvblNlcGVyYXRlZCApewoJCQkJCQkkaXNTZW1pQ29sb25TZXBlcmF0ZWQgPSB0cnVlOwoJCQkJCX0KCgkJCQkJaWYoICRpc1NlbWlDb2xvblNlcGVyYXRlZCApewoJCQkJCQkkYXJnc1NlbWlDb2xvbltdID0gYXJyYXkoJ3ZhcmlhZGljJz0+dHJ1ZSk7CgkJCQkJfWVsc2V7CgkJCQkJCSRhcmdzQ29tbWFbXSA9IGFycmF5KCd2YXJpYWRpYyc9PnRydWUpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCX0KCQkJCSRhcmcgPSAkdGhpcy0+TWF0Y2hGdW5jcyggYXJyYXkoJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScsJ3BhcnNlRW50aXRpZXNMaXRlcmFsJywncGFyc2VFbnRpdGllc0tleXdvcmQnKSApOwoJCQl9CgoJCQlpZiggISRhcmcgKXsKCQkJCWJyZWFrOwoJCQl9CgoKCQkJJG5hbWVMb29wID0gbnVsbDsKCQkJaWYoICRhcmcgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiApewoJCQkJJGFyZy0+dGhyb3dBd2F5Q29tbWVudHMoKTsKCQkJfQoJCQkkdmFsdWUgPSAkYXJnOwoJCQkkdmFsID0gbnVsbDsKCgkJCWlmKCAkaXNDYWxsICl7CgkJCQkvLyBWYXJpYWJsZQoJCQkJaWYoIHByb3BlcnR5X2V4aXN0cygkYXJnLCd2YWx1ZScpICYmIGNvdW50KCRhcmctPnZhbHVlKSA9PSAxICl7CgkJCQkJJHZhbCA9ICRhcmctPnZhbHVlWzBdOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJHZhbCA9ICRhcmc7CgkJCX0KCgoJCQlpZiggJHZhbCBpbnN0YW5jZW9mIExlc3NfVHJlZV9WYXJpYWJsZSApewoKCQkJCWlmKCAkdGhpcy0+TWF0Y2hDaGFyKCc6JykgKXsKCQkJCQlpZiggJGV4cHJlc3Npb25zICl7CgkJCQkJCWlmKCAkaXNTZW1pQ29sb25TZXBlcmF0ZWQgKXsKCQkJCQkJCSR0aGlzLT5FcnJvcignQ2Fubm90IG1peCA7IGFuZCAsIGFzIGRlbGltaXRlciB0eXBlcycpOwoJCQkJCQl9CgkJCQkJCSRleHByZXNzaW9uQ29udGFpbnNOYW1lZCA9IHRydWU7CgkJCQkJfQoKCQkJCQkvLyB3ZSBkbyBub3Qgc3VwcG9ydCBzZXR0aW5nIGEgcnVsZXNldCBhcyBhIGRlZmF1bHQgdmFyaWFibGUgLSBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UKCQkJCQkvLyBIb3dldmVyIGlmIHdlIGRvIHdhbnQgdG8gYWRkIGl0LCB0aGVyZSBpcyBub3RoaW5nIGJsb2NraW5nIGl0LCBqdXN0IGRvbid0IGVycm9yCgkJCQkJLy8gYW5kIHJlbW92ZSBpc0NhbGwgZGVwZW5kZW5jeSBiZWxvdwoJCQkJCSR2YWx1ZSA9IG51bGw7CgkJCQkJaWYoICRpc0NhbGwgKXsKCQkJCQkJJHZhbHVlID0gJHRoaXMtPnBhcnNlRGV0YWNoZWRSdWxlc2V0KCk7CgkJCQkJfQoJCQkJCWlmKCAhJHZhbHVlICl7CgkJCQkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZUV4cHJlc3Npb24oKTsKCQkJCQl9CgoJCQkJCWlmKCAhJHZhbHVlICl7CgkJCQkJCWlmKCAkaXNDYWxsICl7CgkJCQkJCQkkdGhpcy0+RXJyb3IoJ2NvdWxkIG5vdCB1bmRlcnN0YW5kIHZhbHVlIGZvciBuYW1lZCBhcmd1bWVudCcpOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCQkJCSRyZXR1cm5lclsnYXJncyddID0gYXJyYXkoKTsKCQkJCQkJCXJldHVybiAkcmV0dXJuZXI7CgkJCQkJCX0KCQkJCQl9CgoJCQkJCSRuYW1lTG9vcCA9ICgkbmFtZSA9ICR2YWwtPm5hbWUpOwoJCQkJfWVsc2VpZiggISRpc0NhbGwgJiYgJHRoaXMtPk1hdGNoUmVnKCcvXFxHXC57M30vJykgKXsKCQkJCQkkcmV0dXJuZXJbJ3ZhcmlhZGljJ10gPSB0cnVlOwoJCQkJCWlmKCAkdGhpcy0+TWF0Y2hDaGFyKCI7IikgJiYgISRpc1NlbWlDb2xvblNlcGVyYXRlZCApewoJCQkJCQkkaXNTZW1pQ29sb25TZXBlcmF0ZWQgPSB0cnVlOwoJCQkJCX0KCQkJCQlpZiggJGlzU2VtaUNvbG9uU2VwZXJhdGVkICl7CgkJCQkJCSRhcmdzU2VtaUNvbG9uW10gPSBhcnJheSgnbmFtZSc9PiAkYXJnLT5uYW1lLCAndmFyaWFkaWMnID0+IHRydWUpOwoJCQkJCX1lbHNlewoJCQkJCQkkYXJnc0NvbW1hW10gPSBhcnJheSgnbmFtZSc9PiAkYXJnLT5uYW1lLCAndmFyaWFkaWMnID0+IHRydWUpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCX1lbHNlaWYoICEkaXNDYWxsICl7CgkJCQkJJG5hbWUgPSAkbmFtZUxvb3AgPSAkdmFsLT5uYW1lOwoJCQkJCSR2YWx1ZSA9IG51bGw7CgkJCQl9CgkJCX0KCgkJCWlmKCAkdmFsdWUgKXsKCQkJCSRleHByZXNzaW9uc1tdID0gJHZhbHVlOwoJCQl9CgoJCQkkYXJnc0NvbW1hW10gPSBhcnJheSgnbmFtZSc9PiRuYW1lTG9vcCwgJ3ZhbHVlJz0+JHZhbHVlICk7CgoJCQlpZiggJHRoaXMtPk1hdGNoQ2hhcignLCcpICl7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJaWYoICR0aGlzLT5NYXRjaENoYXIoJzsnKSB8fCAkaXNTZW1pQ29sb25TZXBlcmF0ZWQgKXsKCgkJCQlpZiggJGV4cHJlc3Npb25Db250YWluc05hbWVkICl7CgkJCQkJJHRoaXMtPkVycm9yKCdDYW5ub3QgbWl4IDsgYW5kICwgYXMgZGVsaW1pdGVyIHR5cGVzJyk7CgkJCQl9CgoJCQkJJGlzU2VtaUNvbG9uU2VwZXJhdGVkID0gdHJ1ZTsKCgkJCQlpZiggY291bnQoJGV4cHJlc3Npb25zKSA+IDEgKXsKCQkJCQkkdmFsdWUgPSAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX1ZhbHVlJywgJGV4cHJlc3Npb25zKTsKCQkJCX0KCQkJCSRhcmdzU2VtaUNvbG9uW10gPSBhcnJheSgnbmFtZSc9PiRuYW1lLCAndmFsdWUnPT4kdmFsdWUgKTsKCgkJCQkkbmFtZSA9IG51bGw7CgkJCQkkZXhwcmVzc2lvbnMgPSBhcnJheSgpOwoJCQkJJGV4cHJlc3Npb25Db250YWluc05hbWVkID0gZmFsc2U7CgkJCX0KCQl9CgoJCSR0aGlzLT5mb3JnZXQoKTsKCQkkcmV0dXJuZXJbJ2FyZ3MnXSA9ICgkaXNTZW1pQ29sb25TZXBlcmF0ZWQgPyAkYXJnc1NlbWlDb2xvbiA6ICRhcmdzQ29tbWEpOwoJCXJldHVybiAkcmV0dXJuZXI7Cgl9CgoKCgkvLwoJLy8gQSBNaXhpbiBkZWZpbml0aW9uLCB3aXRoIGEgbGlzdCBvZiBwYXJhbWV0ZXJzCgkvLwoJLy8JIC5yb3VuZGVkIChAcmFkaXVzOiAycHgsIEBjb2xvcikgewoJLy8JCS4uLgoJLy8JIH0KCS8vCgkvLyBVbnRpbCB3ZSBoYXZlIGEgZmluZXIgZ3JhaW5lZCBzdGF0ZS1tYWNoaW5lLCB3ZSBoYXZlIHRvCgkvLyBkbyBhIGxvb2stYWhlYWQsIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIGEgbWl4aW4gY2FsbC4KCS8vIFNlZSB0aGUgYHJ1bGVgIGZ1bmN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgoJLy8KCS8vIFdlIHN0YXJ0IGJ5IG1hdGNoaW5nIGAucm91bmRlZCAoYCwgYW5kIHRoZW4gcHJvY2VlZCBvbiB0bwoJLy8gdGhlIGFyZ3VtZW50IGxpc3QsIHdoaWNoIGhhcyBvcHRpb25hbCBkZWZhdWx0IHZhbHVlcy4KCS8vIFdlIHN0b3JlIHRoZSBwYXJhbWV0ZXJzIGluIGBwYXJhbXNgLCB3aXRoIGEgYHZhbHVlYCBrZXksCgkvLyBpZiB0aGVyZSBpcyBhIHZhbHVlLCBzdWNoIGFzIGluIHRoZSBjYXNlIG9mIGBAcmFkaXVzYC4KCS8vCgkvLyBPbmNlIHdlJ3ZlIGdvdCBvdXIgcGFyYW1zIGxpc3QsIGFuZCBhIGNsb3NpbmcgYClgLCB3ZSBwYXJzZQoJLy8gdGhlIGB7Li4ufWAgYmxvY2suCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1peGluRGVmaW5pdGlvbigpewoJCSRjb25kID0gbnVsbDsKCgkJJGNoYXIgPSAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc107CgkJaWYoICgkY2hhciAhPT0gJy4nICYmICRjaGFyICE9PSAnIycpIHx8ICgkY2hhciA9PT0gJ3snICYmICR0aGlzLT5QZWVrUmVnKCcvXFxHW157XSpcfS8nKSkgKXsKCQkJcmV0dXJuOwoJCX0KCgkJJHRoaXMtPnNhdmUoKTsKCgkJJG1hdGNoID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHKFsjLl0oPzpbXHctXXxcXFwoPzpbQS1GYS1mMC05XXsxLDZ9ID98W15BLUZhLWYwLTldKSkrKVxzKlwoLycpOwoJCWlmKCAkbWF0Y2ggKXsKCQkJJG5hbWUgPSAkbWF0Y2hbMV07CgoJCQkkYXJnSW5mbyA9ICR0aGlzLT5wYXJzZU1peGluQXJncyggZmFsc2UgKTsKCQkJJHBhcmFtcyA9ICRhcmdJbmZvWydhcmdzJ107CgkJCSR2YXJpYWRpYyA9ICRhcmdJbmZvWyd2YXJpYWRpYyddOwoKCgkJCS8vIC5taXhpbmNhbGwoIkB7YX0iKTsKCQkJLy8gbG9va3MgYSBiaXQgbGlrZSBhIG1peGluIGRlZmluaXRpb24uLgoJCQkvLyBhbHNvCgkJCS8vIC5taXhpbmNhbGwoQGE6IHtydWxlOiBzZXQ7fSk7CgkJCS8vIHNvIHdlIGhhdmUgdG8gYmUgbmljZSBhbmQgcmVzdG9yZQoJCQlpZiggISR0aGlzLT5NYXRjaENoYXIoJyknKSApewoJCQkJJHRoaXMtPmZ1cnRoZXN0ID0gJHRoaXMtPnBvczsKCQkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCQlyZXR1cm47CgkJCX0KCgoJCQkkdGhpcy0+cGFyc2VDb21tZW50cygpOwoKCQkJaWYgKCR0aGlzLT5NYXRjaFJlZygnL1xcR3doZW4vJykpIHsgLy8gR3VhcmQKCQkJCSRjb25kID0gJHRoaXMtPmV4cGVjdCgncGFyc2VDb25kaXRpb25zJywgJ0V4cGVjdGVkIGNvbmRpdGlvbnMnKTsKCQkJfQoKCQkJJHJ1bGVzZXQgPSAkdGhpcy0+cGFyc2VCbG9jaygpOwoKCQkJaWYoIGlzX2FycmF5KCRydWxlc2V0KSApewoJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJcmV0dXJuICR0aGlzLT5OZXdPYmo1KCdMZXNzX1RyZWVfTWl4aW5fRGVmaW5pdGlvbicsIGFycmF5KCAkbmFtZSwgJHBhcmFtcywgJHJ1bGVzZXQsICRjb25kLCAkdmFyaWFkaWMpKTsKCQkJfQoKCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQl9ZWxzZXsKCQkJJHRoaXMtPmZvcmdldCgpOwoJCX0KCX0KCgkvLwoJLy8gRW50aXRpZXMgYXJlIHRoZSBzbWFsbGVzdCByZWNvZ25pemVkIHRva2VuLAoJLy8gYW5kIGNhbiBiZSBmb3VuZCBpbnNpZGUgYSBydWxlJ3MgdmFsdWUuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0eSgpewoKCQlyZXR1cm4gJHRoaXMtPk1hdGNoRnVuY3MoIGFycmF5KCdwYXJzZUVudGl0aWVzTGl0ZXJhbCcsJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScsJ3BhcnNlRW50aXRpZXNVcmwnLCdwYXJzZUVudGl0aWVzQ2FsbCcsJ3BhcnNlRW50aXRpZXNLZXl3b3JkJywncGFyc2VFbnRpdGllc0phdmFzY3JpcHQnLCdwYXJzZUNvbW1lbnQnKSApOwoJfQoKCS8vCgkvLyBBIFJ1bGUgdGVybWluYXRvci4gTm90ZSB0aGF0IHdlIHVzZSBgcGVlaygpYCB0byBjaGVjayBmb3IgJ30nLAoJLy8gYmVjYXVzZSB0aGUgYGJsb2NrYCBydWxlIHdpbGwgYmUgZXhwZWN0aW5nIGl0LCBidXQgd2Ugc3RpbGwgbmVlZCB0byBtYWtlIHN1cmUKCS8vIGl0J3MgdGhlcmUsIGlmICc7JyB3YXMgb21taXR0ZWQuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVuZCgpewoJCXJldHVybiAkdGhpcy0+TWF0Y2hDaGFyKCc7JykgfHwgJHRoaXMtPlBlZWtDaGFyKCd9Jyk7Cgl9CgoJLy8KCS8vIElFJ3MgYWxwaGEgZnVuY3Rpb24KCS8vCgkvLwkgYWxwaGEob3BhY2l0eT04OCkKCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQWxwaGEoKXsKCgkJaWYgKCAhICR0aGlzLT5NYXRjaFJlZygnL1xcR1wob3BhY2l0eT0vaScpKSB7CgkJCXJldHVybjsKCQl9CgoJCSR2YWx1ZSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1swLTldKy8nKTsKCQlpZiggJHZhbHVlICl7CgkJCSR2YWx1ZSA9ICR2YWx1ZVswXTsKCQl9ZWxzZXsKCQkJJHZhbHVlID0gJHRoaXMtPnBhcnNlRW50aXRpZXNWYXJpYWJsZSgpOwoJCQlpZiggISR2YWx1ZSApewoJCQkJcmV0dXJuOwoJCQl9CgkJfQoKCQkkdGhpcy0+ZXhwZWN0Q2hhcignKScpOwoJCXJldHVybiAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0FscGhhJywkdmFsdWUpOwoJfQoKCgkvLwoJLy8gQSBTZWxlY3RvciBFbGVtZW50CgkvLwoJLy8JIGRpdgoJLy8JICsgaDEKCS8vCSAjc29ja3MKCS8vCSBpbnB1dFt0eXBlPSJ0ZXh0Il0KCS8vCgkvLyBFbGVtZW50cyBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgU2VsZWN0b3JzLAoJLy8gdGhleSBhcmUgbWFkZSBvdXQgb2YgYSBgQ29tYmluYXRvcmAgKHNlZSBjb21iaW5hdG9yIHJ1bGUpLAoJLy8gYW5kIGFuIGVsZW1lbnQgbmFtZSwgc3VjaCBhcyBhIHRhZyBhIGNsYXNzLCBvciBgKmAuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVsZW1lbnQoKXsKCQkkYyA9ICR0aGlzLT5wYXJzZUNvbWJpbmF0b3IoKTsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQkkZSA9ICR0aGlzLT5tYXRjaCggYXJyYXkoJy9cXEcoPzpcZCtcLlxkK3xcZCspJS8nLCAnL1xcRyg/OlsuI10/fDoqKSg/Oltcdy1dfFteXHgwMC1ceDlmXXxcXFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKy8nLAoJCQknIyonLCAnIyYnLCAncGFyc2VBdHRyaWJ1dGUnLCAnL1xcR1woW14oKUBdK1wpLycsICcvXFxHW1wuI10oPz1AKS8nLCAncGFyc2VFbnRpdGllc1ZhcmlhYmxlQ3VybHknKSApOwoKCQlpZiggaXNfbnVsbCgkZSkgKXsKCQkJJHRoaXMtPnNhdmUoKTsKCQkJaWYoICR0aGlzLT5NYXRjaENoYXIoJygnKSApewoJCQkJaWYoICgkdiA9ICR0aGlzLT5wYXJzZVNlbGVjdG9yKCkpICYmICR0aGlzLT5NYXRjaENoYXIoJyknKSApewoJCQkJCSRlID0gJHRoaXMtPk5ld09iajEoJ0xlc3NfVHJlZV9QYXJlbicsJHYpOwoJCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCX1lbHNlewoJCQkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCQl9CgkJCX1lbHNlewoJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQl9CgkJfQoKCQlpZiggIWlzX251bGwoJGUpICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqNCgnTGVzc19UcmVlX0VsZW1lbnQnLGFycmF5KCAkYywgJGUsICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvKSk7CgkJfQoJfQoKCS8vCgkvLyBDb21iaW5hdG9ycyBjb21iaW5lIGVsZW1lbnRzIHRvZ2V0aGVyLCBpbiBhIFNlbGVjdG9yLgoJLy8KCS8vIEJlY2F1c2Ugb3VyIHBhcnNlciBpc24ndCB3aGl0ZS1zcGFjZSBzZW5zaXRpdmUsIHNwZWNpYWwgY2FyZQoJLy8gaGFzIHRvIGJlIHRha2VuLCB3aGVuIHBhcnNpbmcgdGhlIGRlc2NlbmRhbnQgY29tYmluYXRvciwgYCBgLAoJLy8gYXMgaXQncyBhbiBlbXB0eSBzcGFjZS4gV2UgaGF2ZSB0byBjaGVjayB0aGUgcHJldmlvdXMgY2hhcmFjdGVyCgkvLyBpbiB0aGUgaW5wdXQsIHRvIHNlZSBpZiBpdCdzIGEgYCBgIGNoYXJhY3Rlci4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQ29tYmluYXRvcigpewoJCWlmKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApewoJCQkkYyA9ICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXTsKCQkJaWYgKCRjID09PSAnPicgfHwgJGMgPT09ICcrJyB8fCAkYyA9PT0gJ34nIHx8ICRjID09PSAnfCcgfHwgJGMgPT09ICdeJyApewoKCQkJCSR0aGlzLT5wb3MrKzsKCQkJCWlmKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICdeJyApewoJCQkJCSRjID0gJ15eJzsKCQkJCQkkdGhpcy0+cG9zKys7CgkJCQl9CgoJCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKDApOwoKCQkJCXJldHVybiAkYzsKCQkJfQoKCQkJaWYoICR0aGlzLT5wb3MgPiAwICYmICR0aGlzLT5pc1doaXRlc3BhY2UoLTEpICl7CgkJCQlyZXR1cm4gJyAnOwoJCQl9CgkJfQoJfQoKCS8vCgkvLyBBIENTUyBzZWxlY3RvciAoc2VlIHNlbGVjdG9yIGJlbG93KQoJLy8gd2l0aCBsZXNzIGV4dGVuc2lvbnMgZS5nLiB0aGUgYWJpbGl0eSB0byBleHRlbmQgYW5kIGd1YXJkCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUxlc3NTZWxlY3RvcigpewoJCXJldHVybiAkdGhpcy0+cGFyc2VTZWxlY3Rvcih0cnVlKTsKCX0KCgkvLwoJLy8gQSBDU1MgU2VsZWN0b3IKCS8vCgkvLwkgLmNsYXNzID4gZGl2ICsgaDEKCS8vCSBsaSBhOmhvdmVyCgkvLwoJLy8gU2VsZWN0b3JzIGFyZSBtYWRlIG91dCBvZiBvbmUgb3IgbW9yZSBFbGVtZW50cywgc2VlIGFib3ZlLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VTZWxlY3RvciggJGlzTGVzcyA9IGZhbHNlICl7CgkJJGVsZW1lbnRzID0gYXJyYXkoKTsKCQkkZXh0ZW5kTGlzdCA9IGFycmF5KCk7CgkJJGNvbmRpdGlvbiA9IG51bGw7CgkJJHdoZW4gPSBmYWxzZTsKCQkkZXh0ZW5kID0gZmFsc2U7CgkJJGUgPSBudWxsOwoJCSRjID0gbnVsbDsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQl3aGlsZSggKCRpc0xlc3MgJiYgKCRleHRlbmQgPSAkdGhpcy0+cGFyc2VFeHRlbmQoKSkpIHx8ICgkaXNMZXNzICYmICgkd2hlbiA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR3doZW4vJykgKSkgfHwgKCRlID0gJHRoaXMtPnBhcnNlRWxlbWVudCgpKSApewoJCQlpZiggJHdoZW4gKXsKCQkJCSRjb25kaXRpb24gPSAkdGhpcy0+ZXhwZWN0KCdwYXJzZUNvbmRpdGlvbnMnLCAnZXhwZWN0ZWQgY29uZGl0aW9uJyk7CgkJCX1lbHNlaWYoICRjb25kaXRpb24gKXsKCQkJCS8vZXJyb3IoIkNTUyBndWFyZCBjYW4gb25seSBiZSB1c2VkIGF0IHRoZSBlbmQgb2Ygc2VsZWN0b3IiKTsKCQkJfWVsc2VpZiggJGV4dGVuZCApewoJCQkJJGV4dGVuZExpc3QgPSBhcnJheV9tZXJnZSgkZXh0ZW5kTGlzdCwkZXh0ZW5kKTsKCQkJfWVsc2V7CgkJCQkvL2lmKCBjb3VudCgkZXh0ZW5kTGlzdCkgKXsKCQkJCQkvL2Vycm9yKCJFeHRlbmQgY2FuIG9ubHkgYmUgdXNlZCBhdCB0aGUgZW5kIG9mIHNlbGVjdG9yIik7CgkJCQkvL30KCQkJCWlmKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApewoJCQkJCSRjID0gJHRoaXMtPmlucHV0WyAkdGhpcy0+cG9zIF07CgkJCQl9CgkJCQkkZWxlbWVudHNbXSA9ICRlOwoJCQkJJGUgPSBudWxsOwoJCQl9CgoJCQlpZiggJGMgPT09ICd7JyB8fCAkYyA9PT0gJ30nIHx8ICRjID09PSAnOycgfHwgJGMgPT09ICcsJyB8fCAkYyA9PT0gJyknKSB7IGJyZWFrOyB9CgkJfQoKCQlpZiggJGVsZW1lbnRzICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqNSgnTGVzc19UcmVlX1NlbGVjdG9yJyxhcnJheSgkZWxlbWVudHMsICRleHRlbmRMaXN0LCAkY29uZGl0aW9uLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykpOwoJCX0KCQlpZiggJGV4dGVuZExpc3QgKSB7CgkJCSR0aGlzLT5FcnJvcignRXh0ZW5kIG11c3QgYmUgdXNlZCB0byBleHRlbmQgYSBzZWxlY3RvciwgaXQgY2Fubm90IGJlIHVzZWQgb24gaXRzIG93bicpOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlVGFnKCl7CgkJcmV0dXJuICggJHRhZyA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1tBLVphLXpdW0EtWmEtei1dKlswLTldPy8nKSApID8gJHRhZyA6ICR0aGlzLT5NYXRjaENoYXIoJyonKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlKCl7CgoJCSR2YWwgPSBudWxsOwoKCQlpZiggISR0aGlzLT5NYXRjaENoYXIoJ1snKSApewoJCQlyZXR1cm47CgkJfQoKCQkka2V5ID0gJHRoaXMtPnBhcnNlRW50aXRpZXNWYXJpYWJsZUN1cmx5KCk7CgkJaWYoICEka2V5ICl7CgkJCSRrZXkgPSAkdGhpcy0+ZXhwZWN0KCcvXFxHKD86W19BLVphLXowLTktXCpdKlx8KT8oPzpbX0EtWmEtejAtOS1dfFxcXFwuKSsvJyk7CgkJfQoKCQkkb3AgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEdbfH4qJF5dPz0vJyk7CgkJaWYoICRvcCApewoJCQkkdmFsID0gJHRoaXMtPm1hdGNoKCBhcnJheSgncGFyc2VFbnRpdGllc1F1b3RlZCcsJy9cXEdbMC05XSslLycsJy9cXEdbXHctXSsvJywncGFyc2VFbnRpdGllc1ZhcmlhYmxlQ3VybHknKSApOwoJCX0KCgkJJHRoaXMtPmV4cGVjdENoYXIoJ10nKTsKCgkJcmV0dXJuICR0aGlzLT5OZXdPYmozKCdMZXNzX1RyZWVfQXR0cmlidXRlJyxhcnJheSggJGtleSwgJG9wWzBdLCAkdmFsKSk7Cgl9CgoJLy8KCS8vIFRoZSBgYmxvY2tgIHJ1bGUgaXMgdXNlZCBieSBgcnVsZXNldGAgYW5kIGBtaXhpbi5kZWZpbml0aW9uYC4KCS8vIEl0J3MgYSB3cmFwcGVyIGFyb3VuZCB0aGUgYHByaW1hcnlgIHJ1bGUsIHdpdGggYWRkZWQgYHt9YC4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQmxvY2soKXsKCQlpZiggJHRoaXMtPk1hdGNoQ2hhcigneycpICl7CgkJCSRjb250ZW50ID0gJHRoaXMtPnBhcnNlUHJpbWFyeSgpOwoJCQlpZiggJHRoaXMtPk1hdGNoQ2hhcignfScpICl7CgkJCQlyZXR1cm4gJGNvbnRlbnQ7CgkJCX0KCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUJsb2NrUnVsZXNldCgpewoJCSRibG9jayA9ICR0aGlzLT5wYXJzZUJsb2NrKCk7CgoJCWlmKCAkYmxvY2sgKXsKCQkJJGJsb2NrID0gJHRoaXMtPk5ld09iajIoJ0xlc3NfVHJlZV9SdWxlc2V0JyxhcnJheSggbnVsbCwgJGJsb2NrKSk7CgkJfQoKCQlyZXR1cm4gJGJsb2NrOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VEZXRhY2hlZFJ1bGVzZXQoKXsKCQkkYmxvY2tSdWxlc2V0ID0gJHRoaXMtPnBhcnNlQmxvY2tSdWxlc2V0KCk7CgkJaWYoICRibG9ja1J1bGVzZXQgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0JywkYmxvY2tSdWxlc2V0KTsKCQl9Cgl9CgoJLy8KCS8vIGRpdiwgLmNsYXNzLCBib2R5ID4gcCB7Li4ufQoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VSdWxlc2V0KCl7CgkJJHNlbGVjdG9ycyA9IGFycmF5KCk7CgoJCSR0aGlzLT5zYXZlKCk7CgoJCXdoaWxlKCB0cnVlICl7CgkJCSRzID0gJHRoaXMtPnBhcnNlTGVzc1NlbGVjdG9yKCk7CgkJCWlmKCAhJHMgKXsKCQkJCWJyZWFrOwoJCQl9CgkJCSRzZWxlY3RvcnNbXSA9ICRzOwoJCQkkdGhpcy0+cGFyc2VDb21tZW50cygpOwoKCQkJaWYoICRzLT5jb25kaXRpb24gJiYgY291bnQoJHNlbGVjdG9ycykgPiAxICl7CgkJCQkkdGhpcy0+RXJyb3IoJ0d1YXJkcyBhcmUgb25seSBjdXJyZW50bHkgYWxsb3dlZCBvbiBhIHNpbmdsZSBzZWxlY3Rvci4nKTsKCQkJfQoKCQkJaWYoICEkdGhpcy0+TWF0Y2hDaGFyKCcsJykgKXsKCQkJCWJyZWFrOwoJCQl9CgkJCWlmKCAkcy0+Y29uZGl0aW9uICl7CgkJCQkkdGhpcy0+RXJyb3IoJ0d1YXJkcyBhcmUgb25seSBjdXJyZW50bHkgYWxsb3dlZCBvbiBhIHNpbmdsZSBzZWxlY3Rvci4nKTsKCQkJfQoJCQkkdGhpcy0+cGFyc2VDb21tZW50cygpOwoJCX0KCgoJCWlmKCAkc2VsZWN0b3JzICl7CgkJCSRydWxlcyA9ICR0aGlzLT5wYXJzZUJsb2NrKCk7CgkJCWlmKCBpc19hcnJheSgkcnVsZXMpICl7CgkJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCQlyZXR1cm4gJHRoaXMtPk5ld09iajIoJ0xlc3NfVHJlZV9SdWxlc2V0JyxhcnJheSggJHNlbGVjdG9ycywgJHJ1bGVzKSk7IC8vTGVzc19FbnZpcm9ubWVudDo6JHN0cmljdEltcG9ydHMKCQkJfQoJCX0KCgkJLy8gQmFja3RyYWNrCgkJJHRoaXMtPmZ1cnRoZXN0ID0gJHRoaXMtPnBvczsKCQkkdGhpcy0+cmVzdG9yZSgpOwoJfQoKCS8qKgoJICogQ3VzdG9tIGxlc3MucGhwIHBhcnNlIGZ1bmN0aW9uIGZvciBmaW5kaW5nIHNpbXBsZSBuYW1lLXZhbHVlIGNzcyBwYWlycwoJICogZXg6IHdpZHRoOjEwMHB4OwoJICoKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU5hbWVWYWx1ZSgpewoKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSR0aGlzLT5zYXZlKCk7CgoKCQkvLyRtYXRjaCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhbYS16QS1aXC1dKylccyo6XHMqKCg/OlwnIik/W2EtekEtWjAtOVwtJSBcLiwhXSs/KD86XCciKT8pXHMqKFs7fV0pLycpOwoJCSRtYXRjaCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhbYS16QS1aXC1dKylccyo6XHMqKFtcJyJdP1sjYS16QS1aMC05XC0lXC4sXSs/W1wnIl0/KSAqKCEgKmltcG9ydGFudCk/XHMqKFs7fV0pLycpOwoJCWlmKCAkbWF0Y2ggKXsKCgkJCWlmKCAkbWF0Y2hbNF0gPT0gJ30nICl7CgkJCQkkdGhpcy0+cG9zID0gJGluZGV4ICsgc3RybGVuKCRtYXRjaFswXSktMTsKCQkJfQoKCQkJaWYoICRtYXRjaFszXSApewoJCQkJJG1hdGNoWzJdIC49ICcgIWltcG9ydGFudCc7CgkJCX0KCgkJCXJldHVybiAkdGhpcy0+TmV3T2JqNCgnTGVzc19UcmVlX05hbWVWYWx1ZScsYXJyYXkoICRtYXRjaFsxXSwgJG1hdGNoWzJdLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykpOwoJCX0KCgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVJ1bGUoICR0cnlBbm9ueW1vdXMgPSBudWxsICl7CgoJCSRtZXJnZSA9IGZhbHNlOwoJCSRzdGFydE9mUnVsZSA9ICR0aGlzLT5wb3M7CgoJCSRjID0gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdOwoJCWlmKCAkYyA9PT0gJy4nIHx8ICRjID09PSAnIycgfHwgJGMgPT09ICcmJyApewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+c2F2ZSgpOwoJCSRuYW1lID0gJHRoaXMtPk1hdGNoRnVuY3MoIGFycmF5KCdwYXJzZVZhcmlhYmxlJywncGFyc2VSdWxlUHJvcGVydHknKSk7CgoJCWlmKCAkbmFtZSApewoKCQkJJGlzVmFyaWFibGUgPSBpc19zdHJpbmcoJG5hbWUpOwoKCQkJJHZhbHVlID0gbnVsbDsKCQkJaWYoICRpc1ZhcmlhYmxlICl7CgkJCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VEZXRhY2hlZFJ1bGVzZXQoKTsKCQkJfQoKCQkJJGltcG9ydGFudCA9IG51bGw7CgkJCWlmKCAhJHZhbHVlICl7CgoJCQkJLy8gcHJlZmVyIHRvIHRyeSB0byBwYXJzZSBmaXJzdCBpZiBpdHMgYSB2YXJpYWJsZSBvciB3ZSBhcmUgY29tcHJlc3NpbmcKCQkJCS8vIGJ1dCBhbHdheXMgZmFsbGJhY2sgb24gdGhlIG90aGVyIG9uZQoJCQkJLy9pZiggISR0cnlBbm9ueW1vdXMgJiYgaXNfc3RyaW5nKCRuYW1lKSAmJiAkbmFtZVswXSA9PT0gJ0AnICl7CgkJCQlpZiggISR0cnlBbm9ueW1vdXMgJiYgKExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSB8fCAkaXNWYXJpYWJsZSkgKXsKCQkJCQkkdmFsdWUgPSAkdGhpcy0+TWF0Y2hGdW5jcyggYXJyYXkoJ3BhcnNlVmFsdWUnLCdwYXJzZUFub255bW91c1ZhbHVlJykpOwoJCQkJfWVsc2V7CgkJCQkJJHZhbHVlID0gJHRoaXMtPk1hdGNoRnVuY3MoIGFycmF5KCdwYXJzZUFub255bW91c1ZhbHVlJywncGFyc2VWYWx1ZScpKTsKCQkJCX0KCgkJCQkkaW1wb3J0YW50ID0gJHRoaXMtPnBhcnNlSW1wb3J0YW50KCk7CgoJCQkJLy8gYSBuYW1lIHJldHVybmVkIGJ5IHRoaXMucnVsZVByb3BlcnR5KCkgaXMgYWx3YXlzIGFuIGFycmF5IG9mIHRoZSBmb3JtOgoJCQkJLy8gW3N0cmluZy0xLCAuLi4sIHN0cmluZy1uLCAiIl0gb3IgW3N0cmluZy0xLCAuLi4sIHN0cmluZy1uLCAiKyJdCgkJCQkvLyB3aGVyZSBlYWNoIGl0ZW0gaXMgYSB0cmVlLktleXdvcmQgb3IgdHJlZS5WYXJpYWJsZQoJCQkJaWYoICEkaXNWYXJpYWJsZSAmJiBpc19hcnJheSgkbmFtZSkgKXsKCQkJCQkkbm0gPSBhcnJheV9wb3AoJG5hbWUpOwoJCQkJCWlmKCAkbm0tPnZhbHVlICl7CgkJCQkJCSRtZXJnZSA9ICRubS0+dmFsdWU7CgkJCQkJfQoJCQkJfQoJCQl9CgoKCQkJaWYoICR2YWx1ZSAmJiAkdGhpcy0+cGFyc2VFbmQoKSApewoJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJcmV0dXJuICR0aGlzLT5OZXdPYmo2KCdMZXNzX1RyZWVfUnVsZScsYXJyYXkoICRuYW1lLCAkdmFsdWUsICRpbXBvcnRhbnQsICRtZXJnZSwgJHN0YXJ0T2ZSdWxlLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQkJfWVsc2V7CgkJCQkkdGhpcy0+ZnVydGhlc3QgPSAkdGhpcy0+cG9zOwoJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCWlmKCAkdmFsdWUgJiYgISR0cnlBbm9ueW1vdXMgKXsKCQkJCQlyZXR1cm4gJHRoaXMtPnBhcnNlUnVsZSh0cnVlKTsKCQkJCX0KCQkJfQoJCX1lbHNlewoJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJfQoJfQoKCWZ1bmN0aW9uIHBhcnNlQW5vbnltb3VzVmFsdWUoKXsKCgkJaWYoIHByZWdfbWF0Y2goJy9cXEcoW15AK1wvXCciKmAoO3t9LV0qKTsvJywkdGhpcy0+aW5wdXQsICRtYXRjaCwgMCwgJHRoaXMtPnBvcykgKXsKCQkJJHRoaXMtPnBvcyArPSBzdHJsZW4oJG1hdGNoWzFdKTsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfQW5vbnltb3VzJywkbWF0Y2hbMV0pOwoJCX0KCX0KCgkvLwoJLy8gQW4gQGltcG9ydCBkaXJlY3RpdmUKCS8vCgkvLwkgQGltcG9ydCAibGliIjsKCS8vCgkvLyBEZXBlbmRpbmcgb24gb3VyIGVudmlyb25tZW50LCBpbXBvcnRpbmcgaXMgZG9uZSBkaWZmZXJlbnRseToKCS8vIEluIHRoZSBicm93c2VyLCBpdCdzIGFuIFhIUiByZXF1ZXN0LCBpbiBOb2RlLCBpdCB3b3VsZCBiZSBhCgkvLyBmaWxlLXN5c3RlbSBvcGVyYXRpb24uIFRoZSBmdW5jdGlvbiB1c2VkIGZvciBpbXBvcnRpbmcgaXMKCS8vIHN0b3JlZCBpbiBgaW1wb3J0YCwgd2hpY2ggd2UgcGFzcyB0byB0aGUgSW1wb3J0IGNvbnN0cnVjdG9yLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VJbXBvcnQoKXsKCgkJJHRoaXMtPnNhdmUoKTsKCgkJJGRpciA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR0BpbXBvcnQ/XHMrLycpOwoKCQlpZiggJGRpciApewoJCQkkb3B0aW9ucyA9ICR0aGlzLT5wYXJzZUltcG9ydE9wdGlvbnMoKTsKCQkJJHBhdGggPSAkdGhpcy0+TWF0Y2hGdW5jcyggYXJyYXkoJ3BhcnNlRW50aXRpZXNRdW90ZWQnLCdwYXJzZUVudGl0aWVzVXJsJykpOwoKCQkJaWYoICRwYXRoICl7CgkJCQkkZmVhdHVyZXMgPSAkdGhpcy0+cGFyc2VNZWRpYUZlYXR1cmVzKCk7CgkJCQlpZiggJHRoaXMtPk1hdGNoQ2hhcignOycpICl7CgkJCQkJaWYoICRmZWF0dXJlcyApewoJCQkJCQkkZmVhdHVyZXMgPSAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX1ZhbHVlJywkZmVhdHVyZXMpOwoJCQkJCX0KCgkJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJCXJldHVybiAkdGhpcy0+TmV3T2JqNSgnTGVzc19UcmVlX0ltcG9ydCcsYXJyYXkoICRwYXRoLCAkZmVhdHVyZXMsICRvcHRpb25zLCAkdGhpcy0+cG9zLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQkJCX0KCQkJfQoJCX0KCgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlSW1wb3J0T3B0aW9ucygpewoKCQkkb3B0aW9ucyA9IGFycmF5KCk7CgoJCS8vIGxpc3Qgb2Ygb3B0aW9ucywgc3Vycm91bmRlZCBieSBwYXJlbnMKCQlpZiggISR0aGlzLT5NYXRjaENoYXIoJygnKSApewoJCQlyZXR1cm4gJG9wdGlvbnM7CgkJfQoJCWRvewoJCQkkb3B0aW9uTmFtZSA9ICR0aGlzLT5wYXJzZUltcG9ydE9wdGlvbigpOwoJCQlpZiggJG9wdGlvbk5hbWUgKXsKCQkJCSR2YWx1ZSA9IHRydWU7CgkJCQlzd2l0Y2goICRvcHRpb25OYW1lICl7CgkJCQkJY2FzZSAiY3NzIjoKCQkJCQkJJG9wdGlvbk5hbWUgPSAibGVzcyI7CgkJCQkJCSR2YWx1ZSA9IGZhbHNlOwoJCQkJCWJyZWFrOwoJCQkJCWNhc2UgIm9uY2UiOgoJCQkJCQkkb3B0aW9uTmFtZSA9ICJtdWx0aXBsZSI7CgkJCQkJCSR2YWx1ZSA9IGZhbHNlOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQkJJG9wdGlvbnNbJG9wdGlvbk5hbWVdID0gJHZhbHVlOwoJCQkJaWYoICEkdGhpcy0+TWF0Y2hDaGFyKCcsJykgKXsgYnJlYWs7IH0KCQkJfQoJCX13aGlsZSggJG9wdGlvbk5hbWUgKTsKCQkkdGhpcy0+ZXhwZWN0Q2hhcignKScpOwoJCXJldHVybiAkb3B0aW9uczsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlSW1wb3J0T3B0aW9uKCl7CgkJJG9wdCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhsZXNzfGNzc3xtdWx0aXBsZXxvbmNlfGlubGluZXxyZWZlcmVuY2V8b3B0aW9uYWwpLycpOwoJCWlmKCAkb3B0ICl7CgkJCXJldHVybiAkb3B0WzFdOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWVkaWFGZWF0dXJlKCkgewoJCSRub2RlcyA9IGFycmF5KCk7CgoJCWRvewoJCQkkZSA9ICR0aGlzLT5NYXRjaEZ1bmNzKGFycmF5KCdwYXJzZUVudGl0aWVzS2V5d29yZCcsJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScpKTsKCQkJaWYoICRlICl7CgkJCQkkbm9kZXNbXSA9ICRlOwoJCQl9IGVsc2VpZiAoJHRoaXMtPk1hdGNoQ2hhcignKCcpKSB7CgkJCQkkcCA9ICR0aGlzLT5wYXJzZVByb3BlcnR5KCk7CgkJCQkkZSA9ICR0aGlzLT5wYXJzZVZhbHVlKCk7CgkJCQlpZiAoJHRoaXMtPk1hdGNoQ2hhcignKScpKSB7CgkJCQkJaWYgKCRwICYmICRlKSB7CgkJCQkJCSRyID0gJHRoaXMtPk5ld09iajcoJ0xlc3NfVHJlZV9SdWxlJywgYXJyYXkoICRwLCAkZSwgbnVsbCwgbnVsbCwgJHRoaXMtPnBvcywgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvLCB0cnVlKSk7CgkJCQkJCSRub2Rlc1tdID0gJHRoaXMtPk5ld09iajEoJ0xlc3NfVHJlZV9QYXJlbicsJHIpOwoJCQkJCX0gZWxzZWlmICgkZSkgewoJCQkJCQkkbm9kZXNbXSA9ICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfUGFyZW4nLCRlKTsKCQkJCQl9IGVsc2UgewoJCQkJCQlyZXR1cm4gbnVsbDsKCQkJCQl9CgkJCQl9IGVsc2UKCQkJCQlyZXR1cm4gbnVsbDsKCQkJfQoJCX0gd2hpbGUgKCRlKTsKCgkJaWYgKCRub2RlcykgewoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajEoJ0xlc3NfVHJlZV9FeHByZXNzaW9uJywkbm9kZXMpOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWVkaWFGZWF0dXJlcygpIHsKCQkkZmVhdHVyZXMgPSBhcnJheSgpOwoKCQlkb3sKCQkJJGUgPSAkdGhpcy0+cGFyc2VNZWRpYUZlYXR1cmUoKTsKCQkJaWYoICRlICl7CgkJCQkkZmVhdHVyZXNbXSA9ICRlOwoJCQkJaWYgKCEkdGhpcy0+TWF0Y2hDaGFyKCcsJykpIGJyZWFrOwoJCQl9ZWxzZXsKCQkJCSRlID0gJHRoaXMtPnBhcnNlRW50aXRpZXNWYXJpYWJsZSgpOwoJCQkJaWYoICRlICl7CgkJCQkJJGZlYXR1cmVzW10gPSAkZTsKCQkJCQlpZiAoISR0aGlzLT5NYXRjaENoYXIoJywnKSkgYnJlYWs7CgkJCQl9CgkJCX0KCQl9IHdoaWxlICgkZSk7CgoJCXJldHVybiAkZmVhdHVyZXMgPyAkZmVhdHVyZXMgOiBudWxsOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VNZWRpYSgpIHsKCQlpZiggJHRoaXMtPk1hdGNoUmVnKCcvXFxHQG1lZGlhLycpICl7CgkJCSRmZWF0dXJlcyA9ICR0aGlzLT5wYXJzZU1lZGlhRmVhdHVyZXMoKTsKCQkJJHJ1bGVzID0gJHRoaXMtPnBhcnNlQmxvY2soKTsKCgkJCWlmKCBpc19hcnJheSgkcnVsZXMpICl7CgkJCQlyZXR1cm4gJHRoaXMtPk5ld09iajQoJ0xlc3NfVHJlZV9NZWRpYScsYXJyYXkoICRydWxlcywgJGZlYXR1cmVzLCAkdGhpcy0+cG9zLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQkJfQoJCX0KCX0KCgoJLy8KCS8vIEEgQ1NTIERpcmVjdGl2ZQoJLy8KCS8vIEBjaGFyc2V0ICJ1dGYtOCI7CgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZURpcmVjdGl2ZSgpewoKCQlpZiggISR0aGlzLT5QZWVrQ2hhcignQCcpICl7CgkJCXJldHVybjsKCQl9CgoJCSRydWxlcyA9IG51bGw7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQkkaGFzQmxvY2sgPSB0cnVlOwoJCSRoYXNJZGVudGlmaWVyID0gZmFsc2U7CgkJJGhhc0V4cHJlc3Npb24gPSBmYWxzZTsKCQkkaGFzVW5rbm93biA9IGZhbHNlOwoKCgkJJHZhbHVlID0gJHRoaXMtPk1hdGNoRnVuY3MoYXJyYXkoJ3BhcnNlSW1wb3J0JywncGFyc2VNZWRpYScpKTsKCQlpZiggJHZhbHVlICl7CgkJCXJldHVybiAkdmFsdWU7CgkJfQoKCQkkdGhpcy0+c2F2ZSgpOwoKCQkkbmFtZSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR0BbYS16LV0rLycpOwoKCQlpZiggISRuYW1lICkgcmV0dXJuOwoJCSRuYW1lID0gJG5hbWVbMF07CgoKCQkkbm9uVmVuZG9yU3BlY2lmaWNOYW1lID0gJG5hbWU7CgkJJHBvcyA9IHN0cnBvcygkbmFtZSwnLScsIDIpOwoJCWlmKCAkbmFtZVsxXSA9PSAnLScgJiYgJHBvcyA+IDAgKXsKCQkJJG5vblZlbmRvclNwZWNpZmljTmFtZSA9ICJAIiAuIHN1YnN0cigkbmFtZSwgJHBvcyArIDEpOwoJCX0KCgoJCXN3aXRjaCggJG5vblZlbmRvclNwZWNpZmljTmFtZSApewoJCQkvKgoJCQljYXNlICJAZm9udC1mYWNlIjoKCQkJY2FzZSAiQHZpZXdwb3J0IjoKCQkJY2FzZSAiQHRvcC1sZWZ0IjoKCQkJY2FzZSAiQHRvcC1sZWZ0LWNvcm5lciI6CgkJCWNhc2UgIkB0b3AtY2VudGVyIjoKCQkJY2FzZSAiQHRvcC1yaWdodCI6CgkJCWNhc2UgIkB0b3AtcmlnaHQtY29ybmVyIjoKCQkJY2FzZSAiQGJvdHRvbS1sZWZ0IjoKCQkJY2FzZSAiQGJvdHRvbS1sZWZ0LWNvcm5lciI6CgkJCWNhc2UgIkBib3R0b20tY2VudGVyIjoKCQkJY2FzZSAiQGJvdHRvbS1yaWdodCI6CgkJCWNhc2UgIkBib3R0b20tcmlnaHQtY29ybmVyIjoKCQkJY2FzZSAiQGxlZnQtdG9wIjoKCQkJY2FzZSAiQGxlZnQtbWlkZGxlIjoKCQkJY2FzZSAiQGxlZnQtYm90dG9tIjoKCQkJY2FzZSAiQHJpZ2h0LXRvcCI6CgkJCWNhc2UgIkByaWdodC1taWRkbGUiOgoJCQljYXNlICJAcmlnaHQtYm90dG9tIjoKCQkJaGFzQmxvY2sgPSB0cnVlOwoJCQlicmVhazsKCQkJKi8KCQkJY2FzZSAiQGNoYXJzZXQiOgoJCQkJJGhhc0lkZW50aWZpZXIgPSB0cnVlOwoJCQkJJGhhc0Jsb2NrID0gZmFsc2U7CgkJCQlicmVhazsKCQkJY2FzZSAiQG5hbWVzcGFjZSI6CgkJCQkkaGFzRXhwcmVzc2lvbiA9IHRydWU7CgkJCQkkaGFzQmxvY2sgPSBmYWxzZTsKCQkJCWJyZWFrOwoJCQljYXNlICJAa2V5ZnJhbWVzIjoKCQkJCSRoYXNJZGVudGlmaWVyID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCQljYXNlICJAaG9zdCI6CgkJCWNhc2UgIkBwYWdlIjoKCQkJY2FzZSAiQGRvY3VtZW50IjoKCQkJY2FzZSAiQHN1cHBvcnRzIjoKCQkJCSRoYXNVbmtub3duID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCX0KCgkJaWYoICRoYXNJZGVudGlmaWVyICl7CgkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZUVudGl0eSgpOwoJCQlpZiggISR2YWx1ZSApewoJCQkJJHRoaXMtPmVycm9yKCJleHBlY3RlZCAiIC4gJG5hbWUgLiAiIGlkZW50aWZpZXIiKTsKCQkJfQoJCX0gZWxzZSBpZiggJGhhc0V4cHJlc3Npb24gKXsKCQkJJHZhbHVlID0gJHRoaXMtPnBhcnNlRXhwcmVzc2lvbigpOwoJCQlpZiggISR2YWx1ZSApewoJCQkJJHRoaXMtPmVycm9yKCJleHBlY3RlZCAiIC4gJG5hbWUuICIgZXhwcmVzc2lvbiIpOwoJCQl9CgkJfSBlbHNlIGlmICgkaGFzVW5rbm93bikgewoKCQkJJHZhbHVlID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHW157O10rLycpOwoJCQlpZiggJHZhbHVlICl7CgkJCQkkdmFsdWUgPSAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0Fub255bW91cycsdHJpbSgkdmFsdWVbMF0pKTsKCQkJfQoJCX0KCgkJaWYoICRoYXNCbG9jayApewoJCQkkcnVsZXMgPSAkdGhpcy0+cGFyc2VCbG9ja1J1bGVzZXQoKTsKCQl9CgoJCWlmKCAkcnVsZXMgfHwgKCEkaGFzQmxvY2sgJiYgJHZhbHVlICYmICR0aGlzLT5NYXRjaENoYXIoJzsnKSkpIHsKCQkJJHRoaXMtPmZvcmdldCgpOwoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajUoJ0xlc3NfVHJlZV9EaXJlY3RpdmUnLGFycmF5KCRuYW1lLCAkdmFsdWUsICRydWxlcywgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9CgoJCSR0aGlzLT5yZXN0b3JlKCk7Cgl9CgoKCS8vCgkvLyBBIFZhbHVlIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgRXhwcmVzc2lvbnMKCS8vCgkvLwkgZm9udC1mYW1pbHk6IEJhc2tlcnZpbGxlLCBHZW9yZ2lhLCBzZXJpZjsKCS8vCgkvLyBJbiBhIFJ1bGUsIGEgVmFsdWUgcmVwcmVzZW50cyBldmVyeXRoaW5nIGFmdGVyIHRoZSBgOmAsCgkvLyBhbmQgYmVmb3JlIHRoZSBgO2AuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVZhbHVlKCl7CgkJJGV4cHJlc3Npb25zID0gYXJyYXkoKTsKCgkJZG97CgkJCSRlID0gJHRoaXMtPnBhcnNlRXhwcmVzc2lvbigpOwoJCQlpZiggJGUgKXsKCQkJCSRleHByZXNzaW9uc1tdID0gJGU7CgkJCQlpZiAoISAkdGhpcy0+TWF0Y2hDaGFyKCcsJykpIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX13aGlsZSgkZSk7CgoJCWlmKCAkZXhwcmVzc2lvbnMgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfVmFsdWUnLCRleHByZXNzaW9ucyk7CgkJfQoJfQoKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VJbXBvcnRhbnQgKCl7CgkJaWYoICR0aGlzLT5QZWVrQ2hhcignIScpICYmICR0aGlzLT5NYXRjaFJlZygnL1xcRyEgKmltcG9ydGFudC8nKSApewoJCQlyZXR1cm4gJyAhaW1wb3J0YW50JzsKCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVN1YiAoKXsKCgkJaWYoICR0aGlzLT5NYXRjaENoYXIoJygnKSApewoJCQkkYSA9ICR0aGlzLT5wYXJzZUFkZGl0aW9uKCk7CgkJCWlmKCAkYSApewoJCQkJJHRoaXMtPmV4cGVjdENoYXIoJyknKTsKCQkJCXJldHVybiAkdGhpcy0+TmV3T2JqMignTGVzc19UcmVlX0V4cHJlc3Npb24nLGFycmF5KCBhcnJheSgkYSksIHRydWUpICk7IC8vaW5zdGVhZCBvZiAkZS0+cGFyZW5zID0gdHJ1ZSBzbyB0aGUgdmFsdWUgaXMgY2FjaGVkCgkJCX0KCQl9Cgl9CgoKCS8qKgoJICogUGFyc2VzIG11bHRpcGxpY2F0aW9uIG9wZXJhdGlvbgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX09wZXJhdGlvbnxudWxsCgkgKi8KCWZ1bmN0aW9uIHBhcnNlTXVsdGlwbGljYXRpb24oKXsKCgkJJHJldHVybiA9ICRtID0gJHRoaXMtPnBhcnNlT3BlcmFuZCgpOwoJCWlmKCAkcmV0dXJuICl7CgkJCXdoaWxlKCB0cnVlICl7CgoJCQkJJGlzU3BhY2VkID0gJHRoaXMtPmlzV2hpdGVzcGFjZSggLTEgKTsKCgkJCQlpZiggJHRoaXMtPlBlZWtSZWcoJy9cXEdcL1sqXC9dLycpICl7CgkJCQkJYnJlYWs7CgkJCQl9CgoJCQkJJG9wID0gJHRoaXMtPk1hdGNoQ2hhcignLycpOwoJCQkJaWYoICEkb3AgKXsKCQkJCQkkb3AgPSAkdGhpcy0+TWF0Y2hDaGFyKCcqJyk7CgkJCQkJaWYoICEkb3AgKXsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoKCQkJCSRhID0gJHRoaXMtPnBhcnNlT3BlcmFuZCgpOwoKCQkJCWlmKCEkYSkgeyBicmVhazsgfQoKCQkJCSRtLT5wYXJlbnNJbk9wID0gdHJ1ZTsKCQkJCSRhLT5wYXJlbnNJbk9wID0gdHJ1ZTsKCQkJCSRyZXR1cm4gPSAkdGhpcy0+TmV3T2JqMygnTGVzc19UcmVlX09wZXJhdGlvbicsYXJyYXkoICRvcCwgYXJyYXkoICRyZXR1cm4sICRhICksICRpc1NwYWNlZCkgKTsKCQkJfQoJCX0KCQlyZXR1cm4gJHJldHVybjsKCgl9CgoKCS8qKgoJICogUGFyc2VzIGFuIGFkZGl0aW9uIG9wZXJhdGlvbgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX09wZXJhdGlvbnxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VBZGRpdGlvbiAoKXsKCgkJJHJldHVybiA9ICRtID0gJHRoaXMtPnBhcnNlTXVsdGlwbGljYXRpb24oKTsKCQlpZiggJHJldHVybiApewoJCQl3aGlsZSggdHJ1ZSApewoKCQkJCSRpc1NwYWNlZCA9ICR0aGlzLT5pc1doaXRlc3BhY2UoIC0xICk7CgoJCQkJJG9wID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHWy0rXVxzKy8nKTsKCQkJCWlmKCAkb3AgKXsKCQkJCQkkb3AgPSAkb3BbMF07CgkJCQl9ZWxzZXsKCQkJCQlpZiggISRpc1NwYWNlZCApewoJCQkJCQkkb3AgPSAkdGhpcy0+bWF0Y2goYXJyYXkoJyMrJywnIy0nKSk7CgkJCQkJfQoJCQkJCWlmKCAhJG9wICl7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCgkJCQkkYSA9ICR0aGlzLT5wYXJzZU11bHRpcGxpY2F0aW9uKCk7CgkJCQlpZiggISRhICl7CgkJCQkJYnJlYWs7CgkJCQl9CgoJCQkJJG0tPnBhcmVuc0luT3AgPSB0cnVlOwoJCQkJJGEtPnBhcmVuc0luT3AgPSB0cnVlOwoJCQkJJHJldHVybiA9ICR0aGlzLT5OZXdPYmozKCdMZXNzX1RyZWVfT3BlcmF0aW9uJyxhcnJheSgkb3AsIGFycmF5KCRyZXR1cm4sICRhKSwgJGlzU3BhY2VkKSk7CgkJCX0KCQl9CgoJCXJldHVybiAkcmV0dXJuOwoJfQoKCgkvKioKCSAqIFBhcnNlcyB0aGUgY29uZGl0aW9ucwoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX0NvbmRpdGlvbnxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VDb25kaXRpb25zKCkgewoJCSRpbmRleCA9ICR0aGlzLT5wb3M7CgkJJHJldHVybiA9ICRhID0gJHRoaXMtPnBhcnNlQ29uZGl0aW9uKCk7CgkJaWYoICRhICl7CgkJCXdoaWxlKCB0cnVlICl7CgkJCQlpZiggISR0aGlzLT5QZWVrUmVnKCcvXFxHLFxzKihub3RccyopP1woLycpIHx8ICAhJHRoaXMtPk1hdGNoQ2hhcignLCcpICl7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQkkYiA9ICR0aGlzLT5wYXJzZUNvbmRpdGlvbigpOwoJCQkJaWYoICEkYiApewoJCQkJCWJyZWFrOwoJCQkJfQoKCQkJCSRyZXR1cm4gPSAkdGhpcy0+TmV3T2JqNCgnTGVzc19UcmVlX0NvbmRpdGlvbicsYXJyYXkoJ29yJywgJHJldHVybiwgJGIsICRpbmRleCkpOwoJCQl9CgkJCXJldHVybiAkcmV0dXJuOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQ29uZGl0aW9uKCkgewoJCSRpbmRleCA9ICR0aGlzLT5wb3M7CgkJJG5lZ2F0ZSA9IGZhbHNlOwoJCSRjID0gbnVsbDsKCgkJaWYgKCR0aGlzLT5NYXRjaFJlZygnL1xcR25vdC8nKSkgJG5lZ2F0ZSA9IHRydWU7CgkJJHRoaXMtPmV4cGVjdENoYXIoJygnKTsKCQkkYSA9ICR0aGlzLT5NYXRjaEZ1bmNzKGFycmF5KCdwYXJzZUFkZGl0aW9uJywncGFyc2VFbnRpdGllc0tleXdvcmQnLCdwYXJzZUVudGl0aWVzUXVvdGVkJykpOwoKCQlpZiggJGEgKXsKCQkJJG9wID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHKD86Pj18PD18PTx8Wzw9Pl0pLycpOwoJCQlpZiggJG9wICl7CgkJCQkkYiA9ICR0aGlzLT5NYXRjaEZ1bmNzKGFycmF5KCdwYXJzZUFkZGl0aW9uJywncGFyc2VFbnRpdGllc0tleXdvcmQnLCdwYXJzZUVudGl0aWVzUXVvdGVkJykpOwoJCQkJaWYoICRiICl7CgkJCQkJJGMgPSAkdGhpcy0+TmV3T2JqNSgnTGVzc19UcmVlX0NvbmRpdGlvbicsYXJyYXkoJG9wWzBdLCAkYSwgJGIsICRpbmRleCwgJG5lZ2F0ZSkpOwoJCQkJfSBlbHNlIHsKCQkJCQkkdGhpcy0+RXJyb3IoJ1VuZXhwZWN0ZWQgZXhwcmVzc2lvbicpOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJGsgPSAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0tleXdvcmQnLCd0cnVlJyk7CgkJCQkkYyA9ICR0aGlzLT5OZXdPYmo1KCdMZXNzX1RyZWVfQ29uZGl0aW9uJyxhcnJheSgnPScsICRhLCAkaywgJGluZGV4LCAkbmVnYXRlKSk7CgkJCX0KCQkJJHRoaXMtPmV4cGVjdENoYXIoJyknKTsKCQkJcmV0dXJuICR0aGlzLT5NYXRjaFJlZygnL1xcR2FuZC8nKSA/ICR0aGlzLT5OZXdPYmozKCdMZXNzX1RyZWVfQ29uZGl0aW9uJyxhcnJheSgnYW5kJywgJGMsICR0aGlzLT5wYXJzZUNvbmRpdGlvbigpKSkgOiAkYzsKCQl9Cgl9CgoJLyoqCgkgKiBBbiBvcGVyYW5kIGlzIGFueXRoaW5nIHRoYXQgY2FuIGJlIHBhcnQgb2YgYW4gb3BlcmF0aW9uLAoJICogc3VjaCBhcyBhIENvbG9yLCBvciBhIFZhcmlhYmxlCgkgKgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlT3BlcmFuZCAoKXsKCgkJJG5lZ2F0ZSA9IGZhbHNlOwoJCSRvZmZzZXQgPSAkdGhpcy0+cG9zKzE7CgkJaWYoICRvZmZzZXQgPj0gJHRoaXMtPmlucHV0X2xlbiApewoJCQlyZXR1cm47CgkJfQoJCSRjaGFyID0gJHRoaXMtPmlucHV0WyRvZmZzZXRdOwoJCWlmKCAkY2hhciA9PT0gJ0AnIHx8ICRjaGFyID09PSAnKCcgKXsKCQkJJG5lZ2F0ZSA9ICR0aGlzLT5NYXRjaENoYXIoJy0nKTsKCQl9CgoJCSRvID0gJHRoaXMtPk1hdGNoRnVuY3MoYXJyYXkoJ3BhcnNlU3ViJywncGFyc2VFbnRpdGllc0RpbWVuc2lvbicsJ3BhcnNlRW50aXRpZXNDb2xvcicsJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScsJ3BhcnNlRW50aXRpZXNDYWxsJykpOwoKCQlpZiggJG5lZ2F0ZSApewoJCQkkby0+cGFyZW5zSW5PcCA9IHRydWU7CgkJCSRvID0gJHRoaXMtPk5ld09iajEoJ0xlc3NfVHJlZV9OZWdhdGl2ZScsJG8pOwoJCX0KCgkJcmV0dXJuICRvOwoJfQoKCgkvKioKCSAqIEV4cHJlc3Npb25zIGVpdGhlciByZXByZXNlbnQgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMsCgkgKiBvciB3aGl0ZS1zcGFjZSBkZWxpbWl0ZWQgRW50aXRpZXMuCgkgKgoJICoJIDFweCBzb2xpZCBibGFjawoJICoJIEB2YXIgKiAyCgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfRXhwcmVzc2lvbnxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uICgpewoJCSRlbnRpdGllcyA9IGFycmF5KCk7CgoJCWRvewoJCQkkZSA9ICR0aGlzLT5NYXRjaEZ1bmNzKGFycmF5KCdwYXJzZUFkZGl0aW9uJywncGFyc2VFbnRpdHknKSk7CgkJCWlmKCAkZSApewoJCQkJJGVudGl0aWVzW10gPSAkZTsKCQkJCS8vIG9wZXJhdGlvbnMgZG8gbm90IGFsbG93IGtleXdvcmQgIi8iIGRpbWVuc2lvbiAoZS5nLiBzbWFsbC8yMHB4KSBzbyB3ZSBzdXBwb3J0IHRoYXQgaGVyZQoJCQkJaWYoICEkdGhpcy0+UGVla1JlZygnL1xcR1wvW1wvKl0vJykgKXsKCQkJCQkkZGVsaW0gPSAkdGhpcy0+TWF0Y2hDaGFyKCcvJyk7CgkJCQkJaWYoICRkZWxpbSApewoJCQkJCQkkZW50aXRpZXNbXSA9ICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfQW5vbnltb3VzJywkZGVsaW0pOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX13aGlsZSgkZSk7CgoJCWlmKCAkZW50aXRpZXMgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfRXhwcmVzc2lvbicsJGVudGl0aWVzKTsKCQl9Cgl9CgoKCS8qKgoJICogUGFyc2UgYSBwcm9wZXJ0eQoJICogZWc6ICdtaW4td2lkdGgnLCAnb3JpZW50YXRpb24nLCBldGMKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUHJvcGVydHkgKCl7CgkJJG5hbWUgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEcoXCo/LT9bX2EtekEtWjAtOS1dKylccyo6LycpOwoJCWlmKCAkbmFtZSApewoJCQlyZXR1cm4gJG5hbWVbMV07CgkJfQoJfQoKCgkvKioKCSAqIFBhcnNlIGEgcnVsZSBwcm9wZXJ0eQoJICogZWc6ICdjb2xvcicsICd3aWR0aCcsICdoZWlnaHQnLCBldGMKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUnVsZVByb3BlcnR5KCl7CgkJJG9mZnNldCA9ICR0aGlzLT5wb3M7CgkJJG5hbWUgPSBhcnJheSgpOwoJCSRpbmRleCA9IGFycmF5KCk7CgkJJGxlbmd0aCA9IDA7CgoKCQkkdGhpcy0+cnVsZVByb3BlcnR5TWF0Y2goJy9cXEcoXCo/KS8nLCAkb2Zmc2V0LCAkbGVuZ3RoLCAkaW5kZXgsICRuYW1lICk7CgkJd2hpbGUoICR0aGlzLT5ydWxlUHJvcGVydHlNYXRjaCgnL1xcRygoPzpbXHctXSspfCg/OkBce1tcdy1dK1x9KSkvJywgJG9mZnNldCwgJGxlbmd0aCwgJGluZGV4LCAkbmFtZSApKTsgLy8gIQoKCQlpZiggKGNvdW50KCRuYW1lKSA+IDEpICYmICR0aGlzLT5ydWxlUHJvcGVydHlNYXRjaCgnL1xcR1xzKigoPzpcK198XCspPylccyo6LycsICRvZmZzZXQsICRsZW5ndGgsICRpbmRleCwgJG5hbWUpICl7CgkJCS8vIGF0IGxhc3QsIHdlIGhhdmUgdGhlIGNvbXBsZXRlIG1hdGNoIG5vdy4gbW92ZSBmb3J3YXJkLAoJCQkvLyBjb252ZXJ0IG5hbWUgcGFydGljbGVzIHRvIHRyZWUgb2JqZWN0cyBhbmQgcmV0dXJuOgoJCQkkdGhpcy0+c2tpcFdoaXRlc3BhY2UoJGxlbmd0aCk7CgoJCQlpZiggJG5hbWVbMF0gPT09ICcnICl7CgkJCQlhcnJheV9zaGlmdCgkbmFtZSk7CgkJCQlhcnJheV9zaGlmdCgkaW5kZXgpOwoJCQl9CgkJCWZvcmVhY2goJG5hbWUgYXMgJGsgPT4gJHMgKXsKCQkJCWlmKCAhJHMgfHwgJHNbMF0gIT09ICdAJyApewoJCQkJCSRuYW1lWyRrXSA9ICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfS2V5d29yZCcsJHMpOwoJCQkJfWVsc2V7CgkJCQkJJG5hbWVbJGtdID0gJHRoaXMtPk5ld09iajMoJ0xlc3NfVHJlZV9WYXJpYWJsZScsYXJyYXkoJ0AnIC4gc3Vic3RyKCRzLDIsLTEpLCAkaW5kZXhbJGtdLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQkJCX0KCQkJfQoJCQlyZXR1cm4gJG5hbWU7CgkJfQoKCgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBydWxlUHJvcGVydHlNYXRjaCggJHJlLCAmJG9mZnNldCwgJiRsZW5ndGgsICAmJGluZGV4LCAmJG5hbWUgKXsKCQlwcmVnX21hdGNoKCRyZSwgJHRoaXMtPmlucHV0LCAkYSwgMCwgJG9mZnNldCk7CgkJaWYoICRhICl7CgkJCSRpbmRleFtdID0gJHRoaXMtPnBvcyArICRsZW5ndGg7CgkJCSRsZW5ndGggKz0gc3RybGVuKCRhWzBdKTsKCQkJJG9mZnNldCArPSBzdHJsZW4oJGFbMF0pOwoJCQkkbmFtZVtdID0gJGFbMV07CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNlcmlhbGl6ZVZhcnMoICR2YXJzICl7CgkJJHMgPSAnJzsKCgkJZm9yZWFjaCgkdmFycyBhcyAkbmFtZSA9PiAkdmFsdWUpewoJCQkkcyAuPSAoKCRuYW1lWzBdID09PSAnQCcpID8gJycgOiAnQCcpIC4gJG5hbWUgLic6ICcuICR2YWx1ZSAuICgoc3Vic3RyKCR2YWx1ZSwtMSkgPT09ICc7JykgPyAnJyA6ICc7Jyk7CgkJfQoKCQlyZXR1cm4gJHM7Cgl9CgoKCS8qKgoJICogU29tZSB2ZXJzaW9ucyBvZiBwaHAgaGF2ZSB0cm91YmxlIHdpdGggbWV0aG9kX2V4aXN0cygkYSwkYikgaWYgJGEgaXMgbm90IGFuIG9iamVjdAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGIKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc19tZXRob2QoJGEsJGIpewoJCXJldHVybiBpc19vYmplY3QoJGEpICYmIG1ldGhvZF9leGlzdHMoJGEsJGIpOwoJfQoKCgkvKioKCSAqIFJvdW5kIG51bWJlcnMgc2ltaWxhcmx5IHRvIGphdmFzY3JpcHQKCSAqIGVnOiAxLjQ5OTk5OSB0byAxIGluc3RlYWQgb2YgMgoJICoKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByb3VuZCgkaSwgJHByZWNpc2lvbiA9IDApewoKCQkkcHJlY2lzaW9uID0gcG93KDEwLCRwcmVjaXNpb24pOwoJCSRpID0gJGkqJHByZWNpc2lvbjsKCgkJJGNlaWwgPSBjZWlsKCRpKTsKCQkkZmxvb3IgPSBmbG9vcigkaSk7CgkJaWYoICgkY2VpbCAtICRpKSA8PSAoJGkgLSAkZmxvb3IpICl7CgkJCXJldHVybiAkY2VpbC8kcHJlY2lzaW9uOwoJCX1lbHNlewoJCQlyZXR1cm4gJGZsb29yLyRwcmVjaXNpb247CgkJfQoJfQoKCgkvKioKCSAqIENyZWF0ZSBMZXNzX1RyZWVfKiBvYmplY3RzIGFuZCBvcHRpb25hbGx5IGdlbmVyYXRlIGEgY2FjaGUgc3RyaW5nCgkgKgoJICogQHJldHVybiBtaXhlZAoJICovCglwdWJsaWMgZnVuY3Rpb24gTmV3T2JqMCgkY2xhc3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCk7CgkJaWYoICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApewoJCQkkb2JqLT5jYWNoZV9zdHJpbmcgPSAnIG5ldyAnLiRjbGFzcy4nKCknOwoJCX0KCQlyZXR1cm4gJG9iajsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTmV3T2JqMSgkY2xhc3MsICRhcmcpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnICk7CgkJaWYoICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApewoJCQkkb2JqLT5jYWNoZV9zdHJpbmcgPSAnIG5ldyAnLiRjbGFzcy4nKCcuTGVzc19QYXJzZXI6OkFyZ1N0cmluZygkYXJnKS4nKSc7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBOZXdPYmoyKCRjbGFzcywgJGFyZ3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnc1swXSwgJGFyZ3NbMV0gKTsKCQlpZiggJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgkJCSR0aGlzLT5PYmpDYWNoZSggJG9iaiwgJGNsYXNzLCAkYXJncyk7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBOZXdPYmozKCRjbGFzcywgJGFyZ3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnc1swXSwgJGFyZ3NbMV0sICRhcmdzWzJdICk7CgkJaWYoICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApewoJCQkkdGhpcy0+T2JqQ2FjaGUoICRvYmosICRjbGFzcywgJGFyZ3MpOwoJCX0KCQlyZXR1cm4gJG9iajsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTmV3T2JqNCgkY2xhc3MsICRhcmdzKXsKCQkkb2JqID0gbmV3ICRjbGFzcyggJGFyZ3NbMF0sICRhcmdzWzFdLCAkYXJnc1syXSwgJGFyZ3NbM10gKTsKCQlpZiggJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgkJCSR0aGlzLT5PYmpDYWNoZSggJG9iaiwgJGNsYXNzLCAkYXJncyk7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBOZXdPYmo1KCRjbGFzcywgJGFyZ3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnc1swXSwgJGFyZ3NbMV0sICRhcmdzWzJdLCAkYXJnc1szXSwgJGFyZ3NbNF0gKTsKCQlpZiggJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgkJCSR0aGlzLT5PYmpDYWNoZSggJG9iaiwgJGNsYXNzLCAkYXJncyk7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBOZXdPYmo2KCRjbGFzcywgJGFyZ3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnc1swXSwgJGFyZ3NbMV0sICRhcmdzWzJdLCAkYXJnc1szXSwgJGFyZ3NbNF0sICRhcmdzWzVdICk7CgkJaWYoICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApewoJCQkkdGhpcy0+T2JqQ2FjaGUoICRvYmosICRjbGFzcywgJGFyZ3MpOwoJCX0KCQlyZXR1cm4gJG9iajsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTmV3T2JqNygkY2xhc3MsICRhcmdzKXsKCQkkb2JqID0gbmV3ICRjbGFzcyggJGFyZ3NbMF0sICRhcmdzWzFdLCAkYXJnc1syXSwgJGFyZ3NbM10sICRhcmdzWzRdLCAkYXJnc1s1XSwgJGFyZ3NbNl0gKTsKCQlpZiggJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgkJCSR0aGlzLT5PYmpDYWNoZSggJG9iaiwgJGNsYXNzLCAkYXJncyk7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCS8vY2FjaGluZwoJcHVibGljIGZ1bmN0aW9uIE9iakNhY2hlKCRvYmosICRjbGFzcywgJGFyZ3M9YXJyYXkoKSl7CgkJJG9iai0+Y2FjaGVfc3RyaW5nID0gJyBuZXcgJy4kY2xhc3MuJygnLiBzZWxmOjpBcmdDYWNoZSgkYXJncykuJyknOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBBcmdDYWNoZSgkYXJncyl7CgkJcmV0dXJuIGltcGxvZGUoJywnLGFycmF5X21hcCggYXJyYXkoJ0xlc3NfUGFyc2VyJywnQXJnU3RyaW5nJyksJGFyZ3MpKTsKCX0KCgoJLyoqCgkgKiBDb252ZXJ0IGFuIGFyZ3VtZW50IHRvIGEgc3RyaW5nIGZvciB1c2UgaW4gdGhlIHBhcnNlciBjYWNoZQoJICoKCSAqIEByZXR1cm4gc3RyaW5nCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQXJnU3RyaW5nKCRhcmcpewoKCQkkdHlwZSA9IGdldHR5cGUoJGFyZyk7CgoJCWlmKCAkdHlwZSA9PT0gJ29iamVjdCcpewoJCQkkc3RyaW5nID0gJGFyZy0+Y2FjaGVfc3RyaW5nOwoJCQl1bnNldCgkYXJnLT5jYWNoZV9zdHJpbmcpOwoJCQlyZXR1cm4gJHN0cmluZzsKCgkJfWVsc2VpZiggJHR5cGUgPT09ICdhcnJheScgKXsKCQkJJHN0cmluZyA9ICcgQXJyYXkoJzsKCQkJZm9yZWFjaCgkYXJnIGFzICRrID0+ICRhKXsKCQkJCSRzdHJpbmcgLj0gdmFyX2V4cG9ydCgkayx0cnVlKS4nID0+ICcuc2VsZjo6QXJnU3RyaW5nKCRhKS4nLCc7CgkJCX0KCQkJcmV0dXJuICRzdHJpbmcgLiAnKSc7CgkJfQoKCQlyZXR1cm4gdmFyX2V4cG9ydCgkYXJnLHRydWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBFcnJvcigkbXNnKXsKCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fUGFyc2VyKCRtc2csIG51bGwsICR0aGlzLT5mdXJ0aGVzdCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFdpblBhdGgoJHBhdGgpewoJCXJldHVybiBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRwYXRoKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gQ2FjaGVFbmFibGVkKCl7CgkJcmV0dXJuIChMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddICYmIChMZXNzX0NhY2hlOjokY2FjaGVfZGlyIHx8IChMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddID09ICdjYWxsYmFjaycpKSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/SourceMap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/SourceMap/Base64VLQ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFbmNvZGUgLyBEZWNvZGUgQmFzZTY0IFZMUS4KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSBTb3VyY2VNYXAKICovCmNsYXNzIExlc3NfU291cmNlTWFwX0Jhc2U2NFZMUSB7CgoJLyoqCgkgKiBTaGlmdAoJICoKCSAqIEB2YXIgaW50ZWdlcgoJICovCglwcml2YXRlICRzaGlmdCA9IDU7CgoJLyoqCgkgKiBNYXNrCgkgKgoJICogQHZhciBpbnRlZ2VyCgkgKi8KCXByaXZhdGUgJG1hc2sgPSAweDFGOyAvLyA9PSAoMSA8PCBzaGlmdCkgPT0gMGIwMDAxMTExMQoKCS8qKgoJICogQ29udGludWF0aW9uIGJpdAoJICoKCSAqIEB2YXIgaW50ZWdlcgoJICovCglwcml2YXRlICRjb250aW51YXRpb25CaXQgPSAweDIwOyAvLyA9PSAobWFzayAtIDEgKSA9PSAwYjAwMTAwMDAwCgoJLyoqCgkgKiBDaGFyIHRvIGludGVnZXIgbWFwCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcml2YXRlICRjaGFyVG9JbnRNYXAgPSBhcnJheSgKCQknQScgPT4gMCwgJ0InID0+IDEsICdDJyA9PiAyLCAnRCcgPT4gMywgJ0UnID0+IDQsICdGJyA9PiA1LCAnRycgPT4gNiwKCQknSCcgPT4gNywnSScgPT4gOCwgJ0onID0+IDksICdLJyA9PiAxMCwgJ0wnID0+IDExLCAnTScgPT4gMTIsICdOJyA9PiAxMywKCQknTycgPT4gMTQsICdQJyA9PiAxNSwgJ1EnID0+IDE2LCAnUicgPT4gMTcsICdTJyA9PiAxOCwgJ1QnID0+IDE5LCAnVScgPT4gMjAsCgkJJ1YnID0+IDIxLCAnVycgPT4gMjIsICdYJyA9PiAyMywgJ1knID0+IDI0LCAnWicgPT4gMjUsICdhJyA9PiAyNiwgJ2InID0+IDI3LAoJCSdjJyA9PiAyOCwgJ2QnID0+IDI5LCAnZScgPT4gMzAsICdmJyA9PiAzMSwgJ2cnID0+IDMyLCAnaCcgPT4gMzMsICdpJyA9PiAzNCwKCQknaicgPT4gMzUsICdrJyA9PiAzNiwgJ2wnID0+IDM3LCAnbScgPT4gMzgsICduJyA9PiAzOSwgJ28nID0+IDQwLCAncCcgPT4gNDEsCgkJJ3EnID0+IDQyLCAncicgPT4gNDMsICdzJyA9PiA0NCwgJ3QnID0+IDQ1LCAndScgPT4gNDYsICd2JyA9PiA0NywgJ3cnID0+IDQ4LAoJCSd4JyA9PiA0OSwgJ3knID0+IDUwLCAneicgPT4gNTEsIDAgPT4gNTIsIDEgPT4gNTMsIDIgPT4gNTQsIDMgPT4gNTUsIDQgPT4gNTYsCgkJNSA9PiA1NywJNiA9PiA1OCwgNyA9PiA1OSwgOCA9PiA2MCwgOSA9PiA2MSwgJysnID0+IDYyLCAnLycgPT4gNjMsCgkpOwoKCS8qKgoJICogSW50ZWdlciB0byBjaGFyIG1hcAoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHJpdmF0ZSAkaW50VG9DaGFyTWFwID0gYXJyYXkoCgkJMCA9PiAnQScsIDEgPT4gJ0InLCAyID0+ICdDJywgMyA9PiAnRCcsIDQgPT4gJ0UnLCA1ID0+ICdGJywgNiA9PiAnRycsCgkJNyA9PiAnSCcsIDggPT4gJ0knLCA5ID0+ICdKJywgMTAgPT4gJ0snLCAxMSA9PiAnTCcsIDEyID0+ICdNJywgMTMgPT4gJ04nLAoJCTE0ID0+ICdPJywgMTUgPT4gJ1AnLCAxNiA9PiAnUScsIDE3ID0+ICdSJywgMTggPT4gJ1MnLCAxOSA9PiAnVCcsIDIwID0+ICdVJywKCQkyMSA9PiAnVicsIDIyID0+ICdXJywgMjMgPT4gJ1gnLCAyNCA9PiAnWScsIDI1ID0+ICdaJywgMjYgPT4gJ2EnLCAyNyA9PiAnYicsCgkJMjggPT4gJ2MnLCAyOSA9PiAnZCcsIDMwID0+ICdlJywgMzEgPT4gJ2YnLCAzMiA9PiAnZycsIDMzID0+ICdoJywgMzQgPT4gJ2knLAoJCTM1ID0+ICdqJywgMzYgPT4gJ2snLCAzNyA9PiAnbCcsIDM4ID0+ICdtJywgMzkgPT4gJ24nLCA0MCA9PiAnbycsIDQxID0+ICdwJywKCQk0MiA9PiAncScsIDQzID0+ICdyJywgNDQgPT4gJ3MnLCA0NSA9PiAndCcsIDQ2ID0+ICd1JywgNDcgPT4gJ3YnLCA0OCA9PiAndycsCgkJNDkgPT4gJ3gnLCA1MCA9PiAneScsIDUxID0+ICd6JywgNTIgPT4gJzAnLCA1MyA9PiAnMScsIDU0ID0+ICcyJywgNTUgPT4gJzMnLAoJCTU2ID0+ICc0JywgNTcgPT4gJzUnLCA1OCA9PiAnNicsIDU5ID0+ICc3JywgNjAgPT4gJzgnLCA2MSA9PiAnOScsIDYyID0+ICcrJywKCQk2MyA9PiAnLycsCgkpOwoKCS8qKgoJICogQ29uc3RydWN0b3IKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCl7CgkJLy8gSSBsZWF2ZSBpdCBoZXJlIGZvciBmdXR1cmUgcmVmZXJlbmNlCgkJLy8gZm9yZWFjaChzdHJfc3BsaXQoJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nKSBhcyAkaSA9PiAkY2hhcikKCQkvLyB7CgkJLy8JICR0aGlzLT5jaGFyVG9JbnRNYXBbJGNoYXJdID0gJGk7CgkJLy8JICR0aGlzLT5pbnRUb0NoYXJNYXBbJGldID0gJGNoYXI7CgkJLy8gfQoJfQoKCS8qKgoJICogQ29udmVydCBmcm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXMKCSAqIGlzIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LglGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6CgkgKgkgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KQoJICoJIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KQoJICogV2UgZ2VuZXJhdGUgdGhlIHZhbHVlIGZvciAzMiBiaXQgbWFjaGluZXMsIGhlbmNlIC0yMTQ3NDgzNjQ4IGJlY29tZXMgMSwgbm90IDQyOTQ5NjcyOTcsCgkgKiBldmVuIG9uIGEgNjQgYml0IG1hY2hpbmUuCgkgKiBAcGFyYW0gc3RyaW5nICRhVmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRvVkxRU2lnbmVkKCRhVmFsdWUpewoJCXJldHVybiAweGZmZmZmZmZmICYgKCRhVmFsdWUgPCAwID8gKCgtJGFWYWx1ZSkgPDwgMSkgKyAxIDogKCRhVmFsdWUgPDwgMSkgKyAwKTsKCX0KCgkvKioKCSAqIENvbnZlcnQgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzCgkgKiBpcyBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOgoJICoJIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTEKCSAqCSA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTIKCSAqIFdlIGFzc3VtZSB0aGF0IHRoZSB2YWx1ZSB3YXMgZ2VuZXJhdGVkIHdpdGggYSAzMiBiaXQgbWFjaGluZSBpbiBtaW5kLgoJICogSGVuY2UKCSAqCSAxIGJlY29tZXMgLTIxNDc0ODM2NDgKCSAqIGV2ZW4gb24gYSA2NCBiaXQgbWFjaGluZS4KCSAqIEBwYXJhbSBpbnRlZ2VyICRhVmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGZyb21WTFFTaWduZWQoJGFWYWx1ZSl7CgkJcmV0dXJuICRhVmFsdWUgJiAxID8gJHRoaXMtPnplcm9GaWxsKH4kYVZhbHVlICsgMiwgMSkgfCAoLTEgLSAweDdmZmZmZmZmKSA6ICR0aGlzLT56ZXJvRmlsbCgkYVZhbHVlLCAxKTsKCX0KCgkvKioKCSAqIFJldHVybiB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRhVmFsdWUgVGhlIHZhbHVlIHRvIGVuY29kZQoJICogQHJldHVybiBzdHJpbmcgVGhlIGVuY29kZWQgdmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGVuY29kZSgkYVZhbHVlKXsKCQkkZW5jb2RlZCA9ICcnOwoJCSR2bHEgPSAkdGhpcy0+dG9WTFFTaWduZWQoJGFWYWx1ZSk7CgkJZG8KCQl7CgkJCSRkaWdpdCA9ICR2bHEgJiAkdGhpcy0+bWFzazsKCQkJJHZscSA9ICR0aGlzLT56ZXJvRmlsbCgkdmxxLCAkdGhpcy0+c2hpZnQpOwoJCQlpZigkdmxxID4gMCl7CgkJCQkkZGlnaXQgfD0gJHRoaXMtPmNvbnRpbnVhdGlvbkJpdDsKCQkJfQoJCQkkZW5jb2RlZCAuPSAkdGhpcy0+YmFzZTY0RW5jb2RlKCRkaWdpdCk7CgkJfSB3aGlsZSgkdmxxID4gMCk7CgoJCXJldHVybiAkZW5jb2RlZDsKCX0KCgkvKioKCSAqIFJldHVybiB0aGUgdmFsdWUgZGVjb2RlZCBmcm9tIGJhc2UgNjQgVkxRLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGVuY29kZWQgVGhlIGVuY29kZWQgdmFsdWUgdG8gZGVjb2RlCgkgKiBAcmV0dXJuIGludGVnZXIgVGhlIGRlY29kZWQgdmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGRlY29kZSgkZW5jb2RlZCl7CgkJJHZscSA9IDA7CgkJJGkgPSAwOwoJCWRvCgkJewoJCQkkZGlnaXQgPSAkdGhpcy0+YmFzZTY0RGVjb2RlKCRlbmNvZGVkWyRpXSk7CgkJCSR2bHEgfD0gKCRkaWdpdCAmICR0aGlzLT5tYXNrKSA8PCAoJGkgKiAkdGhpcy0+c2hpZnQpOwoJCQkkaSsrOwoJCX0gd2hpbGUoJGRpZ2l0ICYgJHRoaXMtPmNvbnRpbnVhdGlvbkJpdCk7CgoJCXJldHVybiAkdGhpcy0+ZnJvbVZMUVNpZ25lZCgkdmxxKTsKCX0KCgkvKioKCSAqIFJpZ2h0IHNoaWZ0IHdpdGggemVybyBmaWxsLgoJICoKCSAqIEBwYXJhbSBpbnRlZ2VyICRhIG51bWJlciB0byBzaGlmdAoJICogQHBhcmFtIGludGVnZXIgJGIgbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQKCSAqIEByZXR1cm4gaW50ZWdlcgoJICovCglwdWJsaWMgZnVuY3Rpb24gemVyb0ZpbGwoJGEsICRiKXsKCQlyZXR1cm4gKCRhID49IDApID8gKCRhID4+ICRiKSA6ICgkYSA+PiAkYikgJiAoUEhQX0lOVF9NQVggPj4gKCRiIC0gMSkpOwoJfQoKCS8qKgoJICogRW5jb2RlIHNpbmdsZSA2LWJpdCBkaWdpdCBhcyBiYXNlNjQuCgkgKgoJICogQHBhcmFtIGludGVnZXIgJG51bWJlcgoJICogQHJldHVybiBzdHJpbmcKCSAqIEB0aHJvd3MgRXhjZXB0aW9uIElmIHRoZSBudW1iZXIgaXMgaW52YWxpZAoJICovCglwdWJsaWMgZnVuY3Rpb24gYmFzZTY0RW5jb2RlKCRudW1iZXIpewoJCWlmKCRudW1iZXIgPCAwIHx8ICRudW1iZXIgPiA2Myl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oc3ByaW50ZignSW52YWxpZCBudW1iZXIgIiVzIiBnaXZlbi4gTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzLicsICRudW1iZXIpKTsKCQl9CgkJcmV0dXJuICR0aGlzLT5pbnRUb0NoYXJNYXBbJG51bWJlcl07Cgl9CgoJLyoqCgkgKiBEZWNvZGUgc2luZ2xlIDYtYml0IGRpZ2l0IGZyb20gYmFzZTY0CgkgKgoJICogQHBhcmFtIHN0cmluZyAkY2hhcgoJICogQHJldHVybiBudW1iZXIKCSAqIEB0aHJvd3MgRXhjZXB0aW9uIElmIHRoZSBudW1iZXIgaXMgaW52YWxpZAoJICovCglwdWJsaWMgZnVuY3Rpb24gYmFzZTY0RGVjb2RlKCRjaGFyKXsKCQlpZighYXJyYXlfa2V5X2V4aXN0cygkY2hhciwgJHRoaXMtPmNoYXJUb0ludE1hcCkpewoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKHNwcmludGYoJ0ludmFsaWQgYmFzZSA2NCBkaWdpdCAiJXMiIGdpdmVuLicsICRjaGFyKSk7CgkJfQoJCXJldHVybiAkdGhpcy0+Y2hhclRvSW50TWFwWyRjaGFyXTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/SourceMap/Generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBTb3VyY2UgbWFwIGdlbmVyYXRvcg0KICoNCiAqIEBwYWNrYWdlIExlc3MNCiAqIEBzdWJwYWNrYWdlIE91dHB1dA0KICovDQpjbGFzcyBMZXNzX1NvdXJjZU1hcF9HZW5lcmF0b3IgZXh0ZW5kcyBMZXNzX0NvbmZpZ3VyYWJsZSB7DQoNCgkvKioNCgkgKiBXaGF0IHZlcnNpb24gb2Ygc291cmNlIG1hcCBkb2VzIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGU/DQoJICovDQoJY29uc3QgVkVSU0lPTiA9IDM7DQoNCgkvKioNCgkgKiBBcnJheSBvZiBkZWZhdWx0IG9wdGlvbnMNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJGRlZmF1bHRPcHRpb25zID0gYXJyYXkoDQoJCQkvLyBhbiBvcHRpb25hbCBzb3VyY2Ugcm9vdCwgdXNlZnVsIGZvciByZWxvY2F0aW5nIHNvdXJjZSBmaWxlcw0KCQkJLy8gb24gYSBzZXJ2ZXIgb3IgcmVtb3ZpbmcgcmVwZWF0ZWQgdmFsdWVzIGluIHRoZSAnc291cmNlcycgZW50cnkuDQoJCQkvLyBUaGlzIHZhbHVlIGlzIHByZXBlbmRlZCB0byB0aGUgaW5kaXZpZHVhbCBlbnRyaWVzIGluIHRoZSAnc291cmNlJyBmaWVsZC4NCgkJCSdzb3VyY2VSb290JwkJCT0+ICcnLA0KDQoJCQkvLyBhbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSB0aGF0IHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguDQoJCQknc291cmNlTWFwRmlsZW5hbWUnCQk9PiBudWxsLA0KDQoJCQkvLyB1cmwgb2YgdGhlIG1hcA0KCQkJJ3NvdXJjZU1hcFVSTCcJCQk9PiBudWxsLA0KDQoJCQkvLyBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZSB0byB3cml0ZSB0aGUgbWFwIHRvDQoJCQknc291cmNlTWFwV3JpdGVUbycJCT0+IG51bGwsDQoNCgkJCS8vIG91dHB1dCBzb3VyY2UgY29udGVudHM/DQoJCQknb3V0cHV0U291cmNlRmlsZXMnCQk9PiBmYWxzZSwNCg0KCQkJLy8gYmFzZSBwYXRoIGZvciBmaWxlbmFtZSBub3JtYWxpemF0aW9uDQoJCQknc291cmNlTWFwUm9vdHBhdGgnCQk9PiAnJywNCg0KCQkJLy8gYmFzZSBwYXRoIGZvciBmaWxlbmFtZSBub3JtYWxpemF0aW9uDQoJCQknc291cmNlTWFwQmFzZXBhdGgnICAgPT4gJycNCgkpOw0KDQoJLyoqDQoJICogVGhlIGJhc2U2NCBWTFEgZW5jb2Rlcg0KCSAqDQoJICogQHZhciBMZXNzX1NvdXJjZU1hcF9CYXNlNjRWTFENCgkgKi8NCglwcm90ZWN0ZWQgJGVuY29kZXI7DQoNCgkvKioNCgkgKiBBcnJheSBvZiBtYXBwaW5ncw0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbWFwcGluZ3MgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogVGhlIHJvb3Qgbm9kZQ0KCSAqDQoJICogQHZhciBMZXNzX1RyZWVfUnVsZXNldA0KCSAqLw0KCXByb3RlY3RlZCAkcm9vdDsNCg0KCS8qKg0KCSAqIEFycmF5IG9mIGNvbnRlbnRzIG1hcA0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkY29udGVudHNNYXAgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogRmlsZSB0byBjb250ZW50IG1hcA0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkc291cmNlcyA9IGFycmF5KCk7DQoJcHJvdGVjdGVkICRzb3VyY2Vfa2V5cyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBDb25zdHJ1Y3Rvcg0KCSAqDQoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290IFRoZSByb290IG5vZGUNCgkgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgQXJyYXkgb2Ygb3B0aW9ucw0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChMZXNzX1RyZWVfUnVsZXNldCAkcm9vdCwgJGNvbnRlbnRzTWFwLCAkb3B0aW9ucyA9IGFycmF5KCkpew0KCQkkdGhpcy0+cm9vdCA9ICRyb290Ow0KCQkkdGhpcy0+Y29udGVudHNNYXAgPSAkY29udGVudHNNYXA7DQoJCSR0aGlzLT5lbmNvZGVyID0gbmV3IExlc3NfU291cmNlTWFwX0Jhc2U2NFZMUSgpOw0KDQoJCSR0aGlzLT5TZXRPcHRpb25zKCRvcHRpb25zKTsNCgkJDQoJCSR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBSb290cGF0aCddID0gJHRoaXMtPmZpeFdpbmRvd3NQYXRoKCR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBSb290cGF0aCddLCB0cnVlKTsNCgkJJHRoaXMtPm9wdGlvbnNbJ3NvdXJjZU1hcEJhc2VwYXRoJ10gPSAkdGhpcy0+Zml4V2luZG93c1BhdGgoJHRoaXMtPm9wdGlvbnNbJ3NvdXJjZU1hcEJhc2VwYXRoJ10sIHRydWUpOw0KCX0NCg0KCS8qKg0KCSAqIEdlbmVyYXRlcyB0aGUgQ1NTDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZw0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZUNTUygpew0KCQkkb3V0cHV0ID0gbmV3IExlc3NfT3V0cHV0X01hcHBlZCgkdGhpcy0+Y29udGVudHNNYXAsICR0aGlzKTsNCg0KCQkvLyBjYXRjaCB0aGUgb3V0cHV0DQoJCSR0aGlzLT5yb290LT5nZW5DU1MoJG91dHB1dCk7DQoNCg0KCQkkc291cmNlTWFwVXJsCQkJCT0gJHRoaXMtPmdldE9wdGlvbignc291cmNlTWFwVVJMJyk7DQoJCSRzb3VyY2VNYXBGaWxlbmFtZQkJCT0gJHRoaXMtPmdldE9wdGlvbignc291cmNlTWFwRmlsZW5hbWUnKTsNCgkJJHNvdXJjZU1hcENvbnRlbnQJCQk9ICR0aGlzLT5nZW5lcmF0ZUpzb24oKTsNCgkJJHNvdXJjZU1hcFdyaXRlVG8JCQk9ICR0aGlzLT5nZXRPcHRpb24oJ3NvdXJjZU1hcFdyaXRlVG8nKTsNCg0KCQlpZiggISRzb3VyY2VNYXBVcmwgJiYgJHNvdXJjZU1hcEZpbGVuYW1lICl7DQoJCQkkc291cmNlTWFwVXJsID0gJHRoaXMtPm5vcm1hbGl6ZUZpbGVuYW1lKCRzb3VyY2VNYXBGaWxlbmFtZSk7DQoJCX0NCg0KCQkvLyB3cml0ZSBtYXAgdG8gYSBmaWxlDQoJCWlmKCAkc291cmNlTWFwV3JpdGVUbyApew0KCQkJJHRoaXMtPnNhdmVNYXAoJHNvdXJjZU1hcFdyaXRlVG8sICRzb3VyY2VNYXBDb250ZW50KTsNCgkJfQ0KDQoJCS8vIGlubGluZSB0aGUgbWFwDQoJCWlmKCAhJHNvdXJjZU1hcFVybCApew0KCQkJJHNvdXJjZU1hcFVybCA9IHNwcmludGYoJ2RhdGE6YXBwbGljYXRpb24vanNvbiwlcycsIExlc3NfRnVuY3Rpb25zOjplbmNvZGVVUklDb21wb25lbnQoJHNvdXJjZU1hcENvbnRlbnQpKTsNCgkJfQ0KDQoJCWlmKCAkc291cmNlTWFwVXJsICl7DQoJCQkkb3V0cHV0LT5hZGQoIHNwcmludGYoJy8qIyBzb3VyY2VNYXBwaW5nVVJMPSVzICovJywgJHNvdXJjZU1hcFVybCkgKTsNCgkJfQ0KDQoJCXJldHVybiAkb3V0cHV0LT50b1N0cmluZygpOw0KCX0NCg0KCS8qKg0KCSAqIFNhdmVzIHRoZSBzb3VyY2UgbWFwIHRvIGEgZmlsZQ0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkZmlsZSBUaGUgYWJzb2x1dGUgcGF0aCB0byBhIGZpbGUNCgkgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50IFRoZSBjb250ZW50IHRvIHdyaXRlDQoJICogQHRocm93cyBFeGNlcHRpb24gSWYgdGhlIGZpbGUgY291bGQgbm90IGJlIHNhdmVkDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNhdmVNYXAoJGZpbGUsICRjb250ZW50KXsNCgkJJGRpciA9IGRpcm5hbWUoJGZpbGUpOw0KCQkvLyBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QNCgkJaWYoICFpc19kaXIoJGRpcikgKXsNCgkJCS8vIEZJWE1FOiBjcmVhdGUgdGhlIGRpciBhdXRvbWF0aWNhbGx5Pw0KCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgZGlyZWN0b3J5ICIlcyIgZG9lcyBub3QgZXhpc3QuIENhbm5vdCBzYXZlIHRoZSBzb3VyY2UgbWFwLicsICRkaXIpKTsNCgkJfQ0KCQkvLyBGSVhNRTogcHJvcGVyIHNhdmluZywgd2l0aCBkaXIgd3JpdGUgY2hlY2shDQoJCWlmKGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlLCAkY29udGVudCkgPT09IGZhbHNlKXsNCgkJCXRocm93IG5ldyBFeGNlcHRpb24oc3ByaW50ZignQ2Fubm90IHNhdmUgdGhlIHNvdXJjZSBtYXAgdG8gIiVzIicsICRmaWxlKSk7DQoJCX0NCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogTm9ybWFsaXplcyB0aGUgZmlsZW5hbWUNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lDQoJICogQHJldHVybiBzdHJpbmcNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gbm9ybWFsaXplRmlsZW5hbWUoJGZpbGVuYW1lKXsNCg0KCQkkZmlsZW5hbWUgPSAkdGhpcy0+Zml4V2luZG93c1BhdGgoJGZpbGVuYW1lKTsNCg0KCQkkcm9vdHBhdGggPSAkdGhpcy0+Z2V0T3B0aW9uKCdzb3VyY2VNYXBSb290cGF0aCcpOw0KCQkkYmFzZVBhdGggPSAkdGhpcy0+Z2V0T3B0aW9uKCdzb3VyY2VNYXBCYXNlcGF0aCcpOw0KDQoJCS8vICJUcmltIiB0aGUgJ3NvdXJjZU1hcEJhc2VwYXRoJyBmcm9tIHRoZSBvdXRwdXQgZmlsZW5hbWUuDQoJCWlmIChzdHJwb3MoJGZpbGVuYW1lLCAkYmFzZVBhdGgpID09PSAwKSB7DQoJCQkkZmlsZW5hbWUgPSBzdWJzdHIoJGZpbGVuYW1lLCBzdHJsZW4oJGJhc2VQYXRoKSk7DQoJCX0NCg0KCQkvLyBSZW1vdmUgZXh0cmEgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMuDQoJCWlmKHN0cnBvcygkZmlsZW5hbWUsICdcXCcpID09PSAwIHx8IHN0cnBvcygkZmlsZW5hbWUsICcvJykgPT09IDApew0KCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlbmFtZSwgMSk7DQoJCX0NCg0KCQlyZXR1cm4gJHJvb3RwYXRoIC4gJGZpbGVuYW1lOw0KCX0NCg0KCS8qKg0KCSAqIEFkZHMgYSBtYXBwaW5nDQoJICoNCgkgKiBAcGFyYW0gaW50ZWdlciAkZ2VuZXJhdGVkTGluZSBUaGUgbGluZSBudW1iZXIgaW4gZ2VuZXJhdGVkIGZpbGUNCgkgKiBAcGFyYW0gaW50ZWdlciAkZ2VuZXJhdGVkQ29sdW1uIFRoZSBjb2x1bW4gbnVtYmVyIGluIGdlbmVyYXRlZCBmaWxlDQoJICogQHBhcmFtIGludGVnZXIgJG9yaWdpbmFsTGluZSBUaGUgbGluZSBudW1iZXIgaW4gb3JpZ2luYWwgZmlsZQ0KCSAqIEBwYXJhbSBpbnRlZ2VyICRvcmlnaW5hbENvbHVtbiBUaGUgY29sdW1uIG51bWJlciBpbiBvcmlnaW5hbCBmaWxlDQoJICogQHBhcmFtIHN0cmluZyAkc291cmNlRmlsZSBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gYWRkTWFwcGluZygkZ2VuZXJhdGVkTGluZSwgJGdlbmVyYXRlZENvbHVtbiwgJG9yaWdpbmFsTGluZSwgJG9yaWdpbmFsQ29sdW1uLCAkZmlsZUluZm8gKXsNCg0KCQkkdGhpcy0+bWFwcGluZ3NbXSA9IGFycmF5KA0KCQkJJ2dlbmVyYXRlZF9saW5lJyA9PiAkZ2VuZXJhdGVkTGluZSwNCgkJCSdnZW5lcmF0ZWRfY29sdW1uJyA9PiAkZ2VuZXJhdGVkQ29sdW1uLA0KCQkJJ29yaWdpbmFsX2xpbmUnID0+ICRvcmlnaW5hbExpbmUsDQoJCQknb3JpZ2luYWxfY29sdW1uJyA9PiAkb3JpZ2luYWxDb2x1bW4sDQoJCQknc291cmNlX2ZpbGUnID0+ICRmaWxlSW5mb1snY3VycmVudFVyaSddDQoJCSk7DQoNCgkJJHRoaXMtPnNvdXJjZXNbJGZpbGVJbmZvWydjdXJyZW50VXJpJ11dID0gJGZpbGVJbmZvWydmaWxlbmFtZSddOw0KCX0NCg0KDQoJLyoqDQoJICogR2VuZXJhdGVzIHRoZSBKU09OIHNvdXJjZSBtYXANCgkgKg0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICogQHNlZSBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdlbmVyYXRlSnNvbigpew0KDQoJCSRzb3VyY2VNYXAgPSBhcnJheSgpOw0KCQkkbWFwcGluZ3MgPSAkdGhpcy0+Z2VuZXJhdGVNYXBwaW5ncygpOw0KDQoJCS8vIEZpbGUgdmVyc2lvbiAoYWx3YXlzIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgb2JqZWN0KSBhbmQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuDQoJCSRzb3VyY2VNYXBbJ3ZlcnNpb24nXSA9IHNlbGY6OlZFUlNJT047DQoNCg0KCQkvLyBBbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSB0aGF0IHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguDQoJCSRmaWxlID0gJHRoaXMtPmdldE9wdGlvbignc291cmNlTWFwRmlsZW5hbWUnKTsNCgkJaWYoICRmaWxlICl7DQoJCQkkc291cmNlTWFwWydmaWxlJ10gPSAkZmlsZTsNCgkJfQ0KDQoNCgkJLy8gQW4gb3B0aW9uYWwgc291cmNlIHJvb3QsIHVzZWZ1bCBmb3IgcmVsb2NhdGluZyBzb3VyY2UgZmlsZXMgb24gYSBzZXJ2ZXIgb3IgcmVtb3ZpbmcgcmVwZWF0ZWQgdmFsdWVzIGluIHRoZSAnc291cmNlcycgZW50cnkuCVRoaXMgdmFsdWUgaXMgcHJlcGVuZGVkIHRvIHRoZSBpbmRpdmlkdWFsIGVudHJpZXMgaW4gdGhlICdzb3VyY2UnIGZpZWxkLg0KCQkkcm9vdCA9ICR0aGlzLT5nZXRPcHRpb24oJ3NvdXJjZVJvb3QnKTsNCgkJaWYoICRyb290ICl7DQoJCQkkc291cmNlTWFwWydzb3VyY2VSb290J10gPSAkcm9vdDsNCgkJfQ0KDQoNCgkJLy8gQSBsaXN0IG9mIG9yaWdpbmFsIHNvdXJjZXMgdXNlZCBieSB0aGUgJ21hcHBpbmdzJyBlbnRyeS4NCgkJJHNvdXJjZU1hcFsnc291cmNlcyddID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkdGhpcy0+c291cmNlcyBhcyAkc291cmNlX3VyaSA9PiAkc291cmNlX2ZpbGVuYW1lKXsNCgkJCSRzb3VyY2VNYXBbJ3NvdXJjZXMnXVtdID0gJHRoaXMtPm5vcm1hbGl6ZUZpbGVuYW1lKCRzb3VyY2VfZmlsZW5hbWUpOw0KCQl9DQoNCg0KCQkvLyBBIGxpc3Qgb2Ygc3ltYm9sIG5hbWVzIHVzZWQgYnkgdGhlICdtYXBwaW5ncycgZW50cnkuDQoJCSRzb3VyY2VNYXBbJ25hbWVzJ10gPSBhcnJheSgpOw0KDQoJCS8vIEEgc3RyaW5nIHdpdGggdGhlIGVuY29kZWQgbWFwcGluZyBkYXRhLg0KCQkkc291cmNlTWFwWydtYXBwaW5ncyddID0gJG1hcHBpbmdzOw0KDQoJCWlmKCAkdGhpcy0+Z2V0T3B0aW9uKCdvdXRwdXRTb3VyY2VGaWxlcycpICl7DQoJCQkvLyBBbiBvcHRpb25hbCBsaXN0IG9mIHNvdXJjZSBjb250ZW50LCB1c2VmdWwgd2hlbiB0aGUgJ3NvdXJjZScgY2FuJ3QgYmUgaG9zdGVkLg0KCQkJLy8gVGhlIGNvbnRlbnRzIGFyZSBsaXN0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNvdXJjZXMgYWJvdmUuDQoJCQkvLyAnbnVsbCcgbWF5IGJlIHVzZWQgaWYgc29tZSBvcmlnaW5hbCBzb3VyY2VzIHNob3VsZCBiZSByZXRyaWV2ZWQgYnkgbmFtZS4NCgkJCSRzb3VyY2VNYXBbJ3NvdXJjZXNDb250ZW50J10gPSAkdGhpcy0+Z2V0U291cmNlc0NvbnRlbnQoKTsNCgkJfQ0KDQoJCS8vIGxlc3MuanMgY29tcGF0IGZpeGVzDQoJCWlmKCBjb3VudCgkc291cmNlTWFwWydzb3VyY2VzJ10pICYmIGVtcHR5KCRzb3VyY2VNYXBbJ3NvdXJjZVJvb3QnXSkgKXsNCgkJCXVuc2V0KCRzb3VyY2VNYXBbJ3NvdXJjZVJvb3QnXSk7DQoJCX0NCg0KCQlyZXR1cm4ganNvbl9lbmNvZGUoJHNvdXJjZU1hcCk7DQoJfQ0KDQoJLyoqDQoJICogUmV0dXJucyB0aGUgc291cmNlcyBjb250ZW50cw0KCSAqDQoJICogQHJldHVybiBhcnJheXxudWxsDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFNvdXJjZXNDb250ZW50KCl7DQoJCWlmKGVtcHR5KCR0aGlzLT5zb3VyY2VzKSl7DQoJCQlyZXR1cm47DQoJCX0NCgkJJGNvbnRlbnQgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCR0aGlzLT5zb3VyY2VzIGFzICRzb3VyY2VGaWxlKXsNCgkJCSRjb250ZW50W10gPSBmaWxlX2dldF9jb250ZW50cygkc291cmNlRmlsZSk7DQoJCX0NCgkJcmV0dXJuICRjb250ZW50Ow0KCX0NCg0KCS8qKg0KCSAqIEdlbmVyYXRlcyB0aGUgbWFwcGluZ3Mgc3RyaW5nDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZw0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZU1hcHBpbmdzKCl7DQoNCgkJaWYoICFjb3VudCgkdGhpcy0+bWFwcGluZ3MpICl7DQoJCQlyZXR1cm4gJyc7DQoJCX0NCg0KCQkkdGhpcy0+c291cmNlX2tleXMgPSBhcnJheV9mbGlwKGFycmF5X2tleXMoJHRoaXMtPnNvdXJjZXMpKTsNCg0KDQoJCS8vIGdyb3VwIG1hcHBpbmdzIGJ5IGdlbmVyYXRlZCBsaW5lIG51bWJlci4NCgkJJGdyb3VwZWRNYXAgPSAkZ3JvdXBlZE1hcEVuY29kZWQgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCR0aGlzLT5tYXBwaW5ncyBhcyAkbSl7DQoJCQkkZ3JvdXBlZE1hcFskbVsnZ2VuZXJhdGVkX2xpbmUnXV1bXSA9ICRtOw0KCQl9DQoJCWtzb3J0KCRncm91cGVkTWFwKTsNCg0KCQkkbGFzdEdlbmVyYXRlZExpbmUgPSAkbGFzdE9yaWdpbmFsSW5kZXggPSAkbGFzdE9yaWdpbmFsTGluZSA9ICRsYXN0T3JpZ2luYWxDb2x1bW4gPSAwOw0KDQoJCWZvcmVhY2goJGdyb3VwZWRNYXAgYXMgJGxpbmVOdW1iZXIgPT4gJGxpbmVfbWFwKXsNCgkJCXdoaWxlKCsrJGxhc3RHZW5lcmF0ZWRMaW5lIDwgJGxpbmVOdW1iZXIpew0KCQkJCSRncm91cGVkTWFwRW5jb2RlZFtdID0gJzsnOw0KCQkJfQ0KDQoJCQkkbGluZU1hcEVuY29kZWQgPSBhcnJheSgpOw0KCQkJJGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwOw0KDQoJCQlmb3JlYWNoKCRsaW5lX21hcCBhcyAkbSl7DQoJCQkJJG1hcEVuY29kZWQgPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCRtWydnZW5lcmF0ZWRfY29sdW1uJ10gLSAkbGFzdEdlbmVyYXRlZENvbHVtbik7DQoJCQkJJGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAkbVsnZ2VuZXJhdGVkX2NvbHVtbiddOw0KDQoJCQkJLy8gZmluZCB0aGUgaW5kZXgNCgkJCQlpZiggJG1bJ3NvdXJjZV9maWxlJ10gKXsNCgkJCQkJJGluZGV4ID0gJHRoaXMtPmZpbmRGaWxlSW5kZXgoJG1bJ3NvdXJjZV9maWxlJ10pOw0KCQkJCQlpZiggJGluZGV4ICE9PSBmYWxzZSApew0KCQkJCQkJJG1hcEVuY29kZWQgLj0gJHRoaXMtPmVuY29kZXItPmVuY29kZSgkaW5kZXggLSAkbGFzdE9yaWdpbmFsSW5kZXgpOw0KCQkJCQkJJGxhc3RPcmlnaW5hbEluZGV4ID0gJGluZGV4Ow0KDQoJCQkJCQkvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzDQoJCQkJCQkkbWFwRW5jb2RlZCAuPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCRtWydvcmlnaW5hbF9saW5lJ10gLSAxIC0gJGxhc3RPcmlnaW5hbExpbmUpOw0KCQkJCQkJJGxhc3RPcmlnaW5hbExpbmUgPSAkbVsnb3JpZ2luYWxfbGluZSddIC0gMTsNCg0KCQkJCQkJJG1hcEVuY29kZWQgLj0gJHRoaXMtPmVuY29kZXItPmVuY29kZSgkbVsnb3JpZ2luYWxfY29sdW1uJ10gLSAkbGFzdE9yaWdpbmFsQ29sdW1uKTsNCgkJCQkJCSRsYXN0T3JpZ2luYWxDb2x1bW4gPSAkbVsnb3JpZ2luYWxfY29sdW1uJ107DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkkbGluZU1hcEVuY29kZWRbXSA9ICRtYXBFbmNvZGVkOw0KCQkJfQ0KDQoJCQkkZ3JvdXBlZE1hcEVuY29kZWRbXSA9IGltcGxvZGUoJywnLCAkbGluZU1hcEVuY29kZWQpIC4gJzsnOw0KCQl9DQoNCgkJcmV0dXJuIHJ0cmltKGltcGxvZGUoJGdyb3VwZWRNYXBFbmNvZGVkKSwgJzsnKTsNCgl9DQoNCgkvKioNCgkgKiBGaW5kcyB0aGUgaW5kZXggZm9yIHRoZSBmaWxlbmFtZQ0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUNCgkgKiBAcmV0dXJuIGludGVnZXJ8ZmFsc2UNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZmluZEZpbGVJbmRleCgkZmlsZW5hbWUpew0KCQlyZXR1cm4gJHRoaXMtPnNvdXJjZV9rZXlzWyRmaWxlbmFtZV07DQoJfQ0KDQoJLyoqDQoJICogZml4IHdpbmRvd3MgcGF0aHMNCgkgKiBAcGFyYW0gIHN0cmluZyAkcGF0aA0KCSAqIEByZXR1cm4gc3RyaW5nICAgICAgDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGZpeFdpbmRvd3NQYXRoKCRwYXRoLCAkYWRkRW5kU2xhc2ggPSBmYWxzZSl7DQoJCSRzbGFzaCA9ICgkYWRkRW5kU2xhc2gpID8gJy8nIDogJyc7DQoJCWlmKCAhZW1wdHkoJHBhdGgpICl7DQoJCQkkcGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHBhdGgpOw0KCQkJJHBhdGggPSBydHJpbSgkcGF0aCwnLycpIC4gJHNsYXNoOw0KCQl9DQoNCgkJcmV0dXJuICRwYXRoOw0KCX0NCg0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/SourceMap/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUcmVlCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlewoKCXB1YmxpYyAkY2FjaGVfc3RyaW5nOwoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUygpewoJCSRvdXRwdXQgPSBuZXcgTGVzc19PdXRwdXQoKTsKCQkkdGhpcy0+Z2VuQ1NTKCRvdXRwdXQpOwoJCXJldHVybiAkb3V0cHV0LT50b1N0cmluZygpOwoJfQoKCiAgICAvKioKICAgICAqIEdlbmVyYXRlIENTUyBieSBhZGRpbmcgaXQgdG8gdGhlIG91dHB1dCBvYmplY3QKICAgICAqCiAgICAgKiBAcGFyYW0gTGVzc19PdXRwdXQgJG91dHB1dCBUaGUgb3V0cHV0CiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbkNTUygkb3V0cHV0KXt9CgoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0W10gJHJ1bGVzCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb3V0cHV0UnVsZXNldCggJG91dHB1dCwgJHJ1bGVzICl7CgoJCSRydWxlQ250ID0gY291bnQoJHJ1bGVzKTsKCQlMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwrKzsKCgoJCS8vIENvbXByZXNzZWQKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICl7CgkJCSRvdXRwdXQtPmFkZCgneycpOwoJCQlmb3IoICRpID0gMDsgJGkgPCAkcnVsZUNudDsgJGkrKyApewoJCQkJJHJ1bGVzWyRpXS0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJCX0KCgkJCSRvdXRwdXQtPmFkZCggJ30nICk7CgkJCUxlc3NfRW52aXJvbm1lbnQ6OiR0YWJMZXZlbC0tOwoJCQlyZXR1cm47CgkJfQoKCgkJLy8gTm9uLWNvbXByZXNzZWQKCQkkdGFiU2V0U3RyID0gIlxuIi5zdHJfcmVwZWF0KCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2luZGVudGF0aW9uJ10gLCBMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwtMSApOwoJCSR0YWJSdWxlU3RyID0gJHRhYlNldFN0ci5MZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2luZGVudGF0aW9uJ107CgoJCSRvdXRwdXQtPmFkZCggIiB7IiApOwoJCWZvcigkaSA9IDA7ICRpIDwgJHJ1bGVDbnQ7ICRpKysgKXsKCQkJJG91dHB1dC0+YWRkKCAkdGFiUnVsZVN0ciApOwoJCQkkcnVsZXNbJGldLT5nZW5DU1MoICRvdXRwdXQgKTsKCQl9CgkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsLS07CgkJJG91dHB1dC0+YWRkKCAkdGFiU2V0U3RyLid9JyApOwoKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCR2aXNpdG9yKXt9CgoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gUmVmZXJlbmNlZEFycmF5KCRydWxlcyl7CgkJZm9yZWFjaCgkcnVsZXMgYXMgJHJ1bGUpewoJCQlpZiggbWV0aG9kX2V4aXN0cygkcnVsZSwgJ21hcmtSZWZlcmVuY2VkJykgKXsKCQkJCSRydWxlLT5tYXJrUmVmZXJlbmNlZCgpOwoJCQl9CgkJfQoJfQoKCgkvKioKCSAqIFJlcXVpcmVzIHBocCA1LjMrCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gX19zZXRfc3RhdGUoJGFyZ3MpewoKCQkkY2xhc3MgPSBnZXRfY2FsbGVkX2NsYXNzKCk7CgkJJG9iaiA9IG5ldyAkY2xhc3MobnVsbCxudWxsLG51bGwsbnVsbCk7CgkJZm9yZWFjaCgkYXJncyBhcyAka2V5ID0+ICR2YWwpewoJCQkkb2JqLT4ka2V5ID0gJHZhbDsKCQl9CgkJcmV0dXJuICRvYmo7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Alpha.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBbHBoYQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9BbHBoYSBleHRlbmRzIExlc3NfVHJlZXsKCXB1YmxpYyAkdmFsdWU7CglwdWJsaWMgJHR5cGUgPSAnQWxwaGEnOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsKXsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsOwoJfQoKCS8vZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJLy8JJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0KCAkdGhpcy0+dmFsdWUgKTsKCS8vfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpewoKCQlpZiggaXNfb2JqZWN0KCR0aGlzLT52YWx1ZSkgKXsKCQkJJHRoaXMtPnZhbHVlID0gJHRoaXMtPnZhbHVlLT5jb21waWxlKCRlbnYpOwoJCX0KCgkJcmV0dXJuICR0aGlzOwoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgoJCSRvdXRwdXQtPmFkZCggImFscGhhKG9wYWNpdHk9IiApOwoKCQlpZiggaXNfc3RyaW5nKCR0aGlzLT52YWx1ZSkgKXsKCQkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dmFsdWUgKTsKCQl9ZWxzZXsKCQkJJHRoaXMtPnZhbHVlLT5nZW5DU1MoICRvdXRwdXQpOwoJCX0KCgkJJG91dHB1dC0+YWRkKCAnKScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKCQlyZXR1cm4gImFscGhhKG9wYWNpdHk9IiAuIChpc19zdHJpbmcoJHRoaXMtPnZhbHVlKSA/ICR0aGlzLT52YWx1ZSA6ICR0aGlzLT52YWx1ZS0+dG9DU1MoKSkgLiAiKSI7Cgl9CgoKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Anonymous.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBbm9ueW1vdXMKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQW5vbnltb3VzIGV4dGVuZHMgTGVzc19UcmVlewoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkcXVvdGU7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRtYXBMaW5lczsKCXB1YmxpYyAkY3VycmVudEZpbGVJbmZvOwoJcHVibGljICR0eXBlID0gJ0Fub255bW91cyc7CgoJLyoqCgkgKiBAcGFyYW0gaW50ZWdlciAkaW5kZXgKCSAqIEBwYXJhbSBib29sZWFuICRtYXBMaW5lcwoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgJG1hcExpbmVzID0gbnVsbCApewoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPm1hcExpbmVzID0gJG1hcExpbmVzOwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCR0aGlzLT52YWx1ZSwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+bWFwTGluZXMpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCR4KXsKCQlpZiggIWlzX29iamVjdCgkeCkgKXsKCQkJcmV0dXJuIC0xOwoJCX0KCgkJJGxlZnQgPSAkdGhpcy0+dG9DU1MoKTsKCQkkcmlnaHQgPSAkeC0+dG9DU1MoKTsKCgkJaWYoICRsZWZ0ID09PSAkcmlnaHQgKXsKCQkJcmV0dXJuIDA7CgkJfQoKCQlyZXR1cm4gJGxlZnQgPCAkcmlnaHQgPyAtMSA6IDE7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkb3V0cHV0LT5hZGQoICR0aGlzLT52YWx1ZSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4LCAkdGhpcy0+bWFwTGluZXMgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKCQlyZXR1cm4gJHRoaXMtPnZhbHVlOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Assignment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NpZ25tZW50CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0Fzc2lnbm1lbnQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICRrZXk7CglwdWJsaWMgJHZhbHVlOwoJcHVibGljICR0eXBlID0gJ0Fzc2lnbm1lbnQnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgka2V5LCAkdmFsKSB7CgkJJHRoaXMtPmtleSA9ICRrZXk7CgkJJHRoaXMtPnZhbHVlID0gJHZhbDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnZhbHVlICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudikgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fzc2lnbm1lbnQoICR0aGlzLT5rZXksICR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KSk7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5rZXkgLiAnPScgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0NzcygpewoJCXJldHVybiAkdGhpcy0+a2V5IC4gJz0nIC4gJHRoaXMtPnZhbHVlLT50b0NTUygpOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Attribute.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBdHRyaWJ1dGUKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQXR0cmlidXRlIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAka2V5OwoJcHVibGljICRvcDsKCXB1YmxpYyAkdmFsdWU7CglwdWJsaWMgJHR5cGUgPSAnQXR0cmlidXRlJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGtleSwgJG9wLCAkdmFsdWUpewoJCSR0aGlzLT5rZXkgPSAka2V5OwoJCSR0aGlzLT5vcCA9ICRvcDsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgoJCSRrZXlfb2JqID0gaXNfb2JqZWN0KCR0aGlzLT5rZXkpOwoJCSR2YWxfb2JqID0gaXNfb2JqZWN0KCR0aGlzLT52YWx1ZSk7CgoJCWlmKCAhJGtleV9vYmogJiYgISR2YWxfb2JqICl7CgkJCXJldHVybiAkdGhpczsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0F0dHJpYnV0ZSgKCQkJJGtleV9vYmogPyAkdGhpcy0+a2V5LT5jb21waWxlKCRlbnYpIDogJHRoaXMtPmtleSAsCgkJCSR0aGlzLT5vcCwKCQkJJHZhbF9vYmogPyAkdGhpcy0+dmFsdWUtPmNvbXBpbGUoJGVudikgOiAkdGhpcy0+dmFsdWUpOwoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dG9DU1MoKSApOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0NTUygpewoJCSR2YWx1ZSA9ICR0aGlzLT5rZXk7CgoJCWlmKCAkdGhpcy0+b3AgKXsKCQkJJHZhbHVlIC49ICR0aGlzLT5vcDsKCQkJJHZhbHVlIC49IChpc19vYmplY3QoJHRoaXMtPnZhbHVlKSA/ICR0aGlzLT52YWx1ZS0+dG9DU1MoKSA6ICR0aGlzLT52YWx1ZSk7CgkJfQoKCQlyZXR1cm4gJ1snIC4gJHZhbHVlIC4gJ10nOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Call.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgovKioKICogQ2FsbAogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9DYWxsIGV4dGVuZHMgTGVzc19UcmVlewogICAgcHVibGljICR2YWx1ZTsKCiAgICBwcm90ZWN0ZWQgJG5hbWU7CiAgICBwcm90ZWN0ZWQgJGFyZ3M7CiAgICBwcm90ZWN0ZWQgJGluZGV4OwogICAgcHJvdGVjdGVkICRjdXJyZW50RmlsZUluZm87CiAgICBwdWJsaWMgJHR5cGUgPSAnQ2FsbCc7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lLCAkYXJncywgJGluZGV4LCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApewoJCSR0aGlzLT5uYW1lID0gJG5hbWU7CgkJJHRoaXMtPmFyZ3MgPSAkYXJnczsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKXsKCQkkdGhpcy0+YXJncyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCAkdGhpcy0+YXJncyApOwoJfQoKICAgIC8vCiAgICAvLyBXaGVuIGV2YWx1YXRpbmcgYSBmdW5jdGlvbiBjYWxsLAogICAgLy8gd2UgZWl0aGVyIGZpbmQgdGhlIGZ1bmN0aW9uIGluIGB0cmVlLmZ1bmN0aW9uc2AgWzFdLAogICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBjYWxsIGl0LCBwYXNzaW5nIHRoZSAgZXZhbHVhdGVkIGFyZ3VtZW50cywKICAgIC8vIG9yIHdlIHNpbXBseSBwcmludCBpdCBvdXQgYXMgaXQgYXBwZWFyZWQgb3JpZ2luYWxseSBbMl0uCiAgICAvLwogICAgLy8gVGhlICpmdW5jdGlvbnMuanMqIGZpbGUgY29udGFpbnMgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucy4KICAgIC8vCiAgICAvLyBUaGUgcmVhc29uIHdoeSB3ZSBldmFsdWF0ZSB0aGUgYXJndW1lbnRzLCBpcyBpbiB0aGUgY2FzZSB3aGVyZQogICAgLy8gd2UgdHJ5IHRvIHBhc3MgYSB2YXJpYWJsZSB0byBhIGZ1bmN0aW9uLCBsaWtlOiBgc2F0dXJhdGUoQGNvbG9yKWAuCiAgICAvLyBUaGUgZnVuY3Rpb24gc2hvdWxkIHJlY2VpdmUgdGhlIHZhbHVlLCBub3QgdGhlIHZhcmlhYmxlLgogICAgLy8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnY9bnVsbCl7CgkJJGFyZ3MgPSBhcnJheSgpOwoJCWZvcmVhY2goJHRoaXMtPmFyZ3MgYXMgJGEpewoJCQkkYXJnc1tdID0gJGEtPmNvbXBpbGUoJGVudik7CgkJfQoKCQkkbmFtZUxDID0gc3RydG9sb3dlcigkdGhpcy0+bmFtZSk7CgkJc3dpdGNoKCRuYW1lTEMpewoJCQljYXNlICclJzoKCQkJJG5hbWVMQyA9ICdfcGVyY2VudCc7CgkJCWJyZWFrOwoKCQkJY2FzZSAnZ2V0LXVuaXQnOgoJCQkkbmFtZUxDID0gJ2dldHVuaXQnOwoJCQlicmVhazsKCgkJCWNhc2UgJ2RhdGEtdXJpJzoKCQkJJG5hbWVMQyA9ICdkYXRhdXJpJzsKCQkJYnJlYWs7CgoJCQljYXNlICdzdmctZ3JhZGllbnQnOgoJCQkkbmFtZUxDID0gJ3N2Z2dyYWRpZW50JzsKCQkJYnJlYWs7CgkJfQoKCQkkcmVzdWx0ID0gbnVsbDsKCQlpZiggJG5hbWVMQyA9PT0gJ2RlZmF1bHQnICl7CgkJCSRyZXN1bHQgPSBMZXNzX1RyZWVfRGVmYXVsdEZ1bmM6OmNvbXBpbGUoKTsKCgkJfWVsc2V7CgoJCQlpZiggbWV0aG9kX2V4aXN0cygnTGVzc19GdW5jdGlvbnMnLCRuYW1lTEMpICl7IC8vIDEuCgkJCQl0cnkgewoKCQkJCQkkZnVuYyA9IG5ldyBMZXNzX0Z1bmN0aW9ucygkZW52LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvKTsKCQkJCQkkcmVzdWx0ID0gY2FsbF91c2VyX2Z1bmNfYXJyYXkoIGFycmF5KCRmdW5jLCRuYW1lTEMpLCRhcmdzKTsKCgkJCQl9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKCQkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ2Vycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24gYCcgLiAkdGhpcy0+bmFtZSAuICdgICcuJGUtPmdldE1lc3NhZ2UoKS4nIGluZGV4OiAnLiAkdGhpcy0+aW5kZXgpOwoJCQkJfQoJCQl9IGVsc2VpZiggaXNzZXQoICRlbnYtPmZ1bmN0aW9uc1skbmFtZUxDXSApICYmIGlzX2NhbGxhYmxlKCAkZW52LT5mdW5jdGlvbnNbJG5hbWVMQ10gKSApIHsKCQkJCXRyeSB7CgkJCQkJJHJlc3VsdCA9IGNhbGxfdXNlcl9mdW5jX2FycmF5KCAkZW52LT5mdW5jdGlvbnNbJG5hbWVMQ10sICRhcmdzICk7CgkJCQl9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKCQkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ2Vycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24gYCcgLiAkdGhpcy0+bmFtZSAuICdgICcuJGUtPmdldE1lc3NhZ2UoKS4nIGluZGV4OiAnLiAkdGhpcy0+aW5kZXgpOwoJCQkJfQoJCQl9CgkJfQoKCQlpZiggJHJlc3VsdCAhPT0gbnVsbCApewoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9DYWxsKCAkdGhpcy0+bmFtZSwgJGFyZ3MsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPm5hbWUgLiAnKCcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCSRhcmdzX2xlbiA9IGNvdW50KCR0aGlzLT5hcmdzKTsKCQlmb3IoJGkgPSAwOyAkaSA8ICRhcmdzX2xlbjsgJGkrKyApewoJCQkkdGhpcy0+YXJnc1skaV0tPmdlbkNTUyggJG91dHB1dCApOwoJCQlpZiggJGkgKyAxIDwgJGFyZ3NfbGVuICl7CgkJCQkkb3V0cHV0LT5hZGQoICcsICcgKTsKCQkJfQoJCX0KCgkJJG91dHB1dC0+YWRkKCAnKScgKTsKCX0KCgogICAgLy9wdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKICAgIC8vICAgIHJldHVybiAkdGhpcy0+Y29tcGlsZSgpLT50b0NTUygpOwogICAgLy99Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Color.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDb2xvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9Db2xvciBleHRlbmRzIExlc3NfVHJlZXsKCXB1YmxpYyAkcmdiOwoJcHVibGljICRhbHBoYTsKCXB1YmxpYyAkaXNUcmFuc3BhcmVudEtleXdvcmQ7CglwdWJsaWMgJHR5cGUgPSAnQ29sb3InOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmdiLCAkYSA9IDEsICRpc1RyYW5zcGFyZW50S2V5d29yZCA9IG51bGwgKXsKCgkJaWYoICRpc1RyYW5zcGFyZW50S2V5d29yZCApewoJCQkkdGhpcy0+cmdiID0gJHJnYjsKCQkJJHRoaXMtPmFscGhhID0gJGE7CgkJCSR0aGlzLT5pc1RyYW5zcGFyZW50S2V5d29yZCA9IHRydWU7CgkJCXJldHVybjsKCQl9CgoJCSR0aGlzLT5yZ2IgPSBhcnJheSgpOwoJCWlmKCBpc19hcnJheSgkcmdiKSApewoJCQkkdGhpcy0+cmdiID0gJHJnYjsKCQl9ZWxzZSBpZiggc3RybGVuKCRyZ2IpID09IDYgKXsKCQkJZm9yZWFjaChzdHJfc3BsaXQoJHJnYiwgMikgYXMgJGMpewoJCQkJJHRoaXMtPnJnYltdID0gaGV4ZGVjKCRjKTsKCQkJfQoJCX1lbHNlewoJCQlmb3JlYWNoKHN0cl9zcGxpdCgkcmdiLCAxKSBhcyAkYyl7CgkJCQkkdGhpcy0+cmdiW10gPSBoZXhkZWMoJGMuJGMpOwoJCQl9CgkJfQoJCSR0aGlzLT5hbHBoYSA9IGlzX251bWVyaWMoJGEpID8gJGEgOiAxOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CgkJcmV0dXJuICR0aGlzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBsdW1hKCl7CgkJJHIgPSAkdGhpcy0+cmdiWzBdIC8gMjU1OwoJCSRnID0gJHRoaXMtPnJnYlsxXSAvIDI1NTsKCQkkYiA9ICR0aGlzLT5yZ2JbMl0gLyAyNTU7CgoJCSRyID0gKCRyIDw9IDAuMDM5MjgpID8gJHIgLyAxMi45MiA6IHBvdygoKCRyICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpOwoJCSRnID0gKCRnIDw9IDAuMDM5MjgpID8gJGcgLyAxMi45MiA6IHBvdygoKCRnICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpOwoJCSRiID0gKCRiIDw9IDAuMDM5MjgpID8gJGIgLyAxMi45MiA6IHBvdygoKCRiICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpOwoKCQlyZXR1cm4gMC4yMTI2ICogJHIgKyAwLjcxNTIgKiAkZyArIDAuMDcyMiAqICRiOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dG9DU1MoKSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUyggJGRvTm90Q29tcHJlc3MgPSBmYWxzZSApewoJCSRjb21wcmVzcyA9IExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSAmJiAhJGRvTm90Q29tcHJlc3M7CgkJJGFscGhhID0gTGVzc19GdW5jdGlvbnM6OmZyb3VuZCggJHRoaXMtPmFscGhhICk7CgoKCQkvLwoJCS8vIElmIHdlIGhhdmUgc29tZSB0cmFuc3BhcmVuY3ksIHRoZSBvbmx5IHdheSB0byByZXByZXNlbnQgaXQKCQkvLyBpcyB2aWEgYHJnYmFgLiBPdGhlcndpc2UsIHdlIHVzZSB0aGUgaGV4IHJlcHJlc2VudGF0aW9uLAoJCS8vIHdoaWNoIGhhcyBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGJyb3dzZXJzLgoJCS8vIFZhbHVlcyBhcmUgY2FwcGVkIGJldHdlZW4gYDBgIGFuZCBgMjU1YCwgcm91bmRlZCBhbmQgemVyby1wYWRkZWQuCgkJLy8KCQlpZiggJGFscGhhIDwgMSApewoJCQlpZiggKCAkYWxwaGEgPT09IDAgfHwgJGFscGhhID09PSAwLjAgKSAmJiBpc3NldCgkdGhpcy0+aXNUcmFuc3BhcmVudEtleXdvcmQpICYmICR0aGlzLT5pc1RyYW5zcGFyZW50S2V5d29yZCApewoJCQkJcmV0dXJuICd0cmFuc3BhcmVudCc7CgkJCX0KCgkJCSR2YWx1ZXMgPSBhcnJheSgpOwoJCQlmb3JlYWNoKCR0aGlzLT5yZ2IgYXMgJGMpewoJCQkJJHZhbHVlc1tdID0gTGVzc19GdW5jdGlvbnM6OmNsYW1wKCByb3VuZCgkYyksIDI1NSk7CgkJCX0KCQkJJHZhbHVlc1tdID0gJGFscGhhOwoKCQkJJGdsdWUgPSAoJGNvbXByZXNzID8gJywnIDogJywgJyk7CgkJCXJldHVybiAicmdiYSgiIC4gaW1wbG9kZSgkZ2x1ZSwgJHZhbHVlcykgLiAiKSI7CgkJfWVsc2V7CgoJCQkkY29sb3IgPSAkdGhpcy0+dG9SR0IoKTsKCgkJCWlmKCAkY29tcHJlc3MgKXsKCgkJCQkvLyBDb252ZXJ0IGNvbG9yIHRvIHNob3J0IGZvcm1hdAoJCQkJaWYoICRjb2xvclsxXSA9PT0gJGNvbG9yWzJdICYmICRjb2xvclszXSA9PT0gJGNvbG9yWzRdICYmICRjb2xvcls1XSA9PT0gJGNvbG9yWzZdKSB7CgkJCQkJJGNvbG9yID0gJyMnLiRjb2xvclsxXSAuICRjb2xvclszXSAuICRjb2xvcls1XTsKCQkJCX0KCQkJfQoKCQkJcmV0dXJuICRjb2xvcjsKCQl9Cgl9CgoJLy8KCS8vIE9wZXJhdGlvbnMgaGF2ZSB0byBiZSBkb25lIHBlci1jaGFubmVsLCBpZiBub3QsCgkvLyBjaGFubmVscyB3aWxsIHNwaWxsIG9udG8gZWFjaCBvdGhlci4gT25jZSB3ZSBoYXZlCgkvLyBvdXIgcmVzdWx0LCBpbiB0aGUgZm9ybSBvZiBhbiBpbnRlZ2VyIHRyaXBsZXQsCgkvLyB3ZSBjcmVhdGUgYSBuZXcgQ29sb3Igbm9kZSB0byBob2xkIHRoZSByZXN1bHQuCgkvLwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkb3AKCSAqLwoJcHVibGljIGZ1bmN0aW9uIG9wZXJhdGUoICRvcCwgJG90aGVyKSB7CgkJJHJnYiA9IGFycmF5KCk7CgkJJGFscGhhID0gJHRoaXMtPmFscGhhICogKDEgLSAkb3RoZXItPmFscGhhKSArICRvdGhlci0+YWxwaGE7CgkJZm9yICgkYyA9IDA7ICRjIDwgMzsgJGMrKykgewoJCQkkcmdiWyRjXSA9IExlc3NfRnVuY3Rpb25zOjpvcGVyYXRlKCAkb3AsICR0aGlzLT5yZ2JbJGNdLCAkb3RoZXItPnJnYlskY10pOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvcigkcmdiLCAkYWxwaGEpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b1JHQigpewoJCXJldHVybiAkdGhpcy0+dG9IZXgoJHRoaXMtPnJnYik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRvSFNMKCl7CgkJJHIgPSAkdGhpcy0+cmdiWzBdIC8gMjU1OwoJCSRnID0gJHRoaXMtPnJnYlsxXSAvIDI1NTsKCQkkYiA9ICR0aGlzLT5yZ2JbMl0gLyAyNTU7CgkJJGEgPSAkdGhpcy0+YWxwaGE7CgoJCSRtYXggPSBtYXgoJHIsICRnLCAkYik7CgkJJG1pbiA9IG1pbigkciwgJGcsICRiKTsKCQkkbCA9ICgkbWF4ICsgJG1pbikgLyAyOwoJCSRkID0gJG1heCAtICRtaW47CgoJCSRoID0gJHMgPSAwOwoJCWlmKCAkbWF4ICE9PSAkbWluICl7CgkJCSRzID0gJGwgPiAwLjUgPyAkZCAvICgyIC0gJG1heCAtICRtaW4pIDogJGQgLyAoJG1heCArICRtaW4pOwoKCQkJc3dpdGNoICgkbWF4KSB7CgkJCQljYXNlICRyOiAkaCA9ICgkZyAtICRiKSAvICRkICsgKCRnIDwgJGIgPyA2IDogMCk7IGJyZWFrOwoJCQkJY2FzZSAkZzogJGggPSAoJGIgLSAkcikgLyAkZCArIDI7CQkJCSBicmVhazsKCQkJCWNhc2UgJGI6ICRoID0gKCRyIC0gJGcpIC8gJGQgKyA0OwkJCQkgYnJlYWs7CgkJCX0KCQkJJGggLz0gNjsKCQl9CgkJcmV0dXJuIGFycmF5KCdoJyA9PiAkaCAqIDM2MCwgJ3MnID0+ICRzLCAnbCcgPT4gJGwsICdhJyA9PiAkYSApOwoJfQoKCS8vQWRhcHRlZCBmcm9tIGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHQKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0hTVigpIHsKCQkkciA9ICR0aGlzLT5yZ2JbMF0gLyAyNTU7CgkJJGcgPSAkdGhpcy0+cmdiWzFdIC8gMjU1OwoJCSRiID0gJHRoaXMtPnJnYlsyXSAvIDI1NTsKCQkkYSA9ICR0aGlzLT5hbHBoYTsKCgkJJG1heCA9IG1heCgkciwgJGcsICRiKTsKCQkkbWluID0gbWluKCRyLCAkZywgJGIpOwoKCQkkdiA9ICRtYXg7CgoJCSRkID0gJG1heCAtICRtaW47CgkJaWYgKCRtYXggPT09IDApIHsKCQkJJHMgPSAwOwoJCX0gZWxzZSB7CgkJCSRzID0gJGQgLyAkbWF4OwoJCX0KCgkJJGggPSAwOwoJCWlmKCAkbWF4ICE9PSAkbWluICl7CgkJCXN3aXRjaCgkbWF4KXsKCQkJCWNhc2UgJHI6ICRoID0gKCRnIC0gJGIpIC8gJGQgKyAoJGcgPCAkYiA/IDYgOiAwKTsgYnJlYWs7CgkJCQljYXNlICRnOiAkaCA9ICgkYiAtICRyKSAvICRkICsgMjsgYnJlYWs7CgkJCQljYXNlICRiOiAkaCA9ICgkciAtICRnKSAvICRkICsgNDsgYnJlYWs7CgkJCX0KCQkJJGggLz0gNjsKCQl9CgkJcmV0dXJuIGFycmF5KCdoJz0+ICRoICogMzYwLCAncyc9PiAkcywgJ3YnPT4gJHYsICdhJyA9PiAkYSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0FSR0IoKXsKCQkkYXJnYiA9IGFycmF5X21lcmdlKCAoYXJyYXkpIExlc3NfUGFyc2VyOjpyb3VuZCgkdGhpcy0+YWxwaGEgKiAyNTUpLCAkdGhpcy0+cmdiKTsKCQlyZXR1cm4gJHRoaXMtPnRvSGV4KCAkYXJnYiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCR4KXsKCgkJaWYoICFwcm9wZXJ0eV9leGlzdHMoICR4LCAncmdiJyApICl7CgkJCXJldHVybiAtMTsKCQl9CgoKCQlyZXR1cm4gKCR4LT5yZ2JbMF0gPT09ICR0aGlzLT5yZ2JbMF0gJiYKCQkJJHgtPnJnYlsxXSA9PT0gJHRoaXMtPnJnYlsxXSAmJgoJCQkkeC0+cmdiWzJdID09PSAkdGhpcy0+cmdiWzJdICYmCgkJCSR4LT5hbHBoYSA9PT0gJHRoaXMtPmFscGhhKSA/IDAgOiAtMTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9IZXgoICR2ICl7CgoJCSRyZXQgPSAnIyc7CgkJZm9yZWFjaCgkdiBhcyAkYyl7CgkJCSRjID0gTGVzc19GdW5jdGlvbnM6OmNsYW1wKCBMZXNzX1BhcnNlcjo6cm91bmQoJGMpLCAyNTUpOwoJCQlpZiggJGMgPCAxNiApewoJCQkJJHJldCAuPSAnMCc7CgkJCX0KCQkJJHJldCAuPSBkZWNoZXgoJGMpOwoJCX0KCgkJcmV0dXJuICRyZXQ7Cgl9CgoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAka2V5d29yZAoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21LZXl3b3JkKCAka2V5d29yZCApewoJCSRrZXl3b3JkID0gc3RydG9sb3dlcigka2V5d29yZCk7CgoJCWlmKCBMZXNzX0NvbG9yczo6aGFzT3duUHJvcGVydHkoJGtleXdvcmQpICl7CgkJCS8vIGRldGVjdCBuYW1lZCBjb2xvcgoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvcihzdWJzdHIoTGVzc19Db2xvcnM6OmNvbG9yKCRrZXl3b3JkKSwgMSkpOwoJCX0KCgkJaWYoICRrZXl3b3JkID09PSAndHJhbnNwYXJlbnQnICl7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0NvbG9yKCBhcnJheSgwLCAwLCAwKSwgMCwgdHJ1ZSk7CgkJfQoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Comment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDb21tZW50CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0NvbW1lbnQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkc2lsZW50OwoJcHVibGljICRpc1JlZmVyZW5jZWQ7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCXB1YmxpYyAkdHlwZSA9ICdDb21tZW50JzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkc2lsZW50LCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApewoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCQkkdGhpcy0+c2lsZW50ID0gISEgJHNpbGVudDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoJCS8vaWYoICR0aGlzLT5kZWJ1Z0luZm8gKXsKCQkJLy8kb3V0cHV0LT5hZGQoIHRyZWUuZGVidWdJbmZvKCRlbnYsICR0aGlzKSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4KTsKCQkvL30KCQkkb3V0cHV0LT5hZGQoIHRyaW0oJHRoaXMtPnZhbHVlKSApOy8vVE9ETyBzaG91bGRuJ3QgbmVlZCB0byB0cmltLCB3ZSBzaG91bGRuJ3QgZ3JhYiB0aGUgXG4KCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKCQlyZXR1cm4gTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddID8gJycgOiAkdGhpcy0+dmFsdWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzU2lsZW50KCl7CgkJJGlzUmVmZXJlbmNlID0gKCR0aGlzLT5jdXJyZW50RmlsZUluZm8gJiYgaXNzZXQoJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10pICYmICghaXNzZXQoJHRoaXMtPmlzUmVmZXJlbmNlZCkgfHwgISR0aGlzLT5pc1JlZmVyZW5jZWQpICk7CgkJJGlzQ29tcHJlc3NlZCA9IExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSAmJiAhcHJlZ19tYXRjaCgnL15cL1wqIS8nLCAkdGhpcy0+dmFsdWUpOwoJCXJldHVybiAkdGhpcy0+c2lsZW50IHx8ICRpc1JlZmVyZW5jZSB8fCAkaXNDb21wcmVzc2VkOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CgkJcmV0dXJuICR0aGlzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBtYXJrUmVmZXJlbmNlZCgpewoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSB0cnVlOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Condition.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDb25kaXRpb24KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQ29uZGl0aW9uIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkb3A7CglwdWJsaWMgJGx2YWx1ZTsKCXB1YmxpYyAkcnZhbHVlOwoJcHVibGljICRpbmRleDsKCXB1YmxpYyAkbmVnYXRlOwoJcHVibGljICR0eXBlID0gJ0NvbmRpdGlvbic7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvcCwgJGwsICRyLCAkaSA9IDAsICRuZWdhdGUgPSBmYWxzZSkgewoJCSR0aGlzLT5vcCA9IHRyaW0oJG9wKTsKCQkkdGhpcy0+bHZhbHVlID0gJGw7CgkJJHRoaXMtPnJ2YWx1ZSA9ICRyOwoJCSR0aGlzLT5pbmRleCA9ICRpOwoJCSR0aGlzLT5uZWdhdGUgPSAkbmVnYXRlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoJHZpc2l0b3IpewoJCSR0aGlzLT5sdmFsdWUgPSAkdmlzaXRvci0+dmlzaXRPYmooICR0aGlzLT5sdmFsdWUgKTsKCQkkdGhpcy0+cnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+cnZhbHVlICk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudikgewoJCSRhID0gJHRoaXMtPmx2YWx1ZS0+Y29tcGlsZSgkZW52KTsKCQkkYiA9ICR0aGlzLT5ydmFsdWUtPmNvbXBpbGUoJGVudik7CgoJCXN3aXRjaCggJHRoaXMtPm9wICl7CgkJCWNhc2UgJ2FuZCc6CgkJCQkkcmVzdWx0ID0gJGEgJiYgJGI7CgkJCWJyZWFrOwoKCQkJY2FzZSAnb3InOgoJCQkJJHJlc3VsdCA9ICRhIHx8ICRiOwoJCQlicmVhazsKCgkJCWRlZmF1bHQ6CgkJCQlpZiggTGVzc19QYXJzZXI6OmlzX21ldGhvZCgkYSwgJ2NvbXBhcmUnKSApewoJCQkJCSRyZXN1bHQgPSAkYS0+Y29tcGFyZSgkYik7CgkJCQl9ZWxzZWlmKCBMZXNzX1BhcnNlcjo6aXNfbWV0aG9kKCRiLCAnY29tcGFyZScpICl7CgkJCQkJJHJlc3VsdCA9ICRiLT5jb21wYXJlKCRhKTsKCQkJCX1lbHNlewoJCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVW5hYmxlIHRvIHBlcmZvcm0gY29tcGFyaXNvbicsIG51bGwsICR0aGlzLT5pbmRleCk7CgkJCQl9CgoJCQkJc3dpdGNoICgkcmVzdWx0KSB7CgkJCQkJY2FzZSAtMToKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPm9wID09PSAnPCcgfHwgJHRoaXMtPm9wID09PSAnPTwnIHx8ICR0aGlzLT5vcCA9PT0gJzw9JzsKCQkJCQlicmVhazsKCgkJCQkJY2FzZSAgMDoKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPm9wID09PSAnPScgfHwgJHRoaXMtPm9wID09PSAnPj0nIHx8ICR0aGlzLT5vcCA9PT0gJz08JyB8fCAkdGhpcy0+b3AgPT09ICc8PSc7CgkJCQkJYnJlYWs7CgoJCQkJCWNhc2UgIDE6CgkJCQkJJHJlc3VsdCA9ICR0aGlzLT5vcCA9PT0gJz4nIHx8ICR0aGlzLT5vcCA9PT0gJz49JzsKCQkJCQlicmVhazsKCQkJCX0KCQkJYnJlYWs7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPm5lZ2F0ZSA/ICEkcmVzdWx0IDogJHJlc3VsdDsKICAgIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/DefaultFunc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEZWZhdWx0RnVuYwogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9EZWZhdWx0RnVuY3sKCglzdGF0aWMgJGVycm9yXzsKCXN0YXRpYyAkdmFsdWVfOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29tcGlsZSgpewoJCWlmKCBzZWxmOjokZXJyb3JfICl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oc2VsZjo6JGVycm9yXyk7CgkJfQoJCWlmKCBzZWxmOjokdmFsdWVfICE9PSBudWxsICl7CgkJCXJldHVybiBzZWxmOjokdmFsdWVfID8gbmV3IExlc3NfVHJlZV9LZXl3b3JkKCd0cnVlJykgOiBuZXcgTGVzc19UcmVlX0tleXdvcmQoJ2ZhbHNlJyk7CgkJfQoJfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdmFsdWUoICR2ICl7CgkJc2VsZjo6JHZhbHVlXyA9ICR2OwoJfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXJyb3IoICRlICl7CgkJc2VsZjo6JGVycm9yXyA9ICRlOwoJfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzZXQoKXsKCQlzZWxmOjokdmFsdWVfID0gc2VsZjo6JGVycm9yXyA9IG51bGw7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/DetachedRuleset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEZXRhY2hlZFJ1bGVzZXQKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0IGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkcnVsZXNldDsKCXB1YmxpYyAkZnJhbWVzOwoJcHVibGljICR0eXBlID0gJ0RldGFjaGVkUnVsZXNldCc7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkcnVsZXNldCwgJGZyYW1lcyA9IG51bGwgKXsKCQkkdGhpcy0+cnVsZXNldCA9ICRydWxlc2V0OwoJCSR0aGlzLT5mcmFtZXMgPSAkZnJhbWVzOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoJHZpc2l0b3IpIHsKCQkkdGhpcy0+cnVsZXNldCA9ICR2aXNpdG9yLT52aXNpdE9iaigkdGhpcy0+cnVsZXNldCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgkJaWYoICR0aGlzLT5mcmFtZXMgKXsKCQkJJGZyYW1lcyA9ICR0aGlzLT5mcmFtZXM7CgkJfWVsc2V7CgkJCSRmcmFtZXMgPSAkZW52LT5mcmFtZXM7CgkJfQoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RldGFjaGVkUnVsZXNldCgkdGhpcy0+cnVsZXNldCwgJGZyYW1lcyk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNhbGxFdmFsKCRlbnYpIHsKCQlpZiggJHRoaXMtPmZyYW1lcyApewoJCQlyZXR1cm4gJHRoaXMtPnJ1bGVzZXQtPmNvbXBpbGUoICRlbnYtPmNvcHlFdmFsRW52KCBhcnJheV9tZXJnZSgkdGhpcy0+ZnJhbWVzLCRlbnYtPmZyYW1lcykgKSApOwoJCX0KCQlyZXR1cm4gJHRoaXMtPnJ1bGVzZXQtPmNvbXBpbGUoICRlbnYgKTsKCX0KfQoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Dimension.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEaW1lbnNpb24KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGltZW5zaW9uIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkdmFsdWU7CglwdWJsaWMgJHVuaXQ7CglwdWJsaWMgJHR5cGUgPSAnRGltZW5zaW9uJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkdW5pdCA9IG51bGwpewogICAgICAgICR0aGlzLT52YWx1ZSA9IGZsb2F0dmFsKCR2YWx1ZSk7CgoJCWlmKCAkdW5pdCAmJiAoJHVuaXQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfVW5pdCkgKXsKCQkJJHRoaXMtPnVuaXQgPSAkdW5pdDsKCQl9ZWxzZWlmKCAkdW5pdCApewoJCQkkdGhpcy0+dW5pdCA9IG5ldyBMZXNzX1RyZWVfVW5pdCggYXJyYXkoJHVuaXQpICk7CgkJfWVsc2V7CgkJCSR0aGlzLT51bml0ID0gbmV3IExlc3NfVHJlZV9Vbml0KCApOwoJCX0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCSR0aGlzLT51bml0ID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+dW5pdCApOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0NvbG9yKCkgewogICAgICAgIHJldHVybiBuZXcgTGVzc19UcmVlX0NvbG9yKGFycmF5KCR0aGlzLT52YWx1ZSwgJHRoaXMtPnZhbHVlLCAkdGhpcy0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydzdHJpY3RVbml0cyddICYmICEkdGhpcy0+dW5pdC0+aXNTaW5ndWxhcigpICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigiTXVsdGlwbGUgdW5pdHMgaW4gZGltZW5zaW9uLiBDb3JyZWN0IHRoZSB1bml0cyBvciB1c2UgdGhlIHVuaXQgZnVuY3Rpb24uIEJhZCB1bml0OiAiLiR0aGlzLT51bml0LT50b1N0cmluZygpKTsKCQl9CgoJCSR2YWx1ZSA9IExlc3NfRnVuY3Rpb25zOjpmcm91bmQoICR0aGlzLT52YWx1ZSApOwoJCSRzdHJWYWx1ZSA9IChzdHJpbmcpJHZhbHVlOwoKCQlpZiggJHZhbHVlICE9PSAwICYmICR2YWx1ZSA8IDAuMDAwMDAxICYmICR2YWx1ZSA+IC0wLjAwMDAwMSApewoJCQkvLyB3b3VsZCBiZSBvdXRwdXQgMWUtNiBldGMuCgkJCSRzdHJWYWx1ZSA9IG51bWJlcl9mb3JtYXQoJHN0clZhbHVlLDEwKTsKCQkJJHN0clZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXC4/MCskLycsJycsICRzdHJWYWx1ZSk7CgkJfQoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICl7CgkJCS8vIFplcm8gdmFsdWVzIGRvZXNuJ3QgbmVlZCBhIHVuaXQKCQkJaWYoICR2YWx1ZSA9PT0gMCAmJiAkdGhpcy0+dW5pdC0+aXNMZW5ndGgoKSApewoJCQkJJG91dHB1dC0+YWRkKCAkc3RyVmFsdWUgKTsKCQkJCXJldHVybiAkc3RyVmFsdWU7CgkJCX0KCgkJCS8vIEZsb2F0IHZhbHVlcyBkb2Vzbid0IG5lZWQgYSBsZWFkaW5nIHplcm8KCQkJaWYoICR2YWx1ZSA+IDAgJiYgJHZhbHVlIDwgMSAmJiAkc3RyVmFsdWVbMF0gPT09ICcwJyApewoJCQkJJHN0clZhbHVlID0gc3Vic3RyKCRzdHJWYWx1ZSwxKTsKCQkJfQoJCX0KCgkJJG91dHB1dC0+YWRkKCAkc3RyVmFsdWUgKTsKCQkkdGhpcy0+dW5pdC0+Z2VuQ1NTKCAkb3V0cHV0ICk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKXsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQ1NTKCk7CiAgICB9CgogICAgLy8gSW4gYW4gb3BlcmF0aW9uIGJldHdlZW4gdHdvIERpbWVuc2lvbnMsCiAgICAvLyB3ZSBkZWZhdWx0IHRvIHRoZSBmaXJzdCBEaW1lbnNpb24ncyB1bml0LAogICAgLy8gc28gYDFweCArIDJlbWAgd2lsbCB5aWVsZCBgM3B4YC4KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9wCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvcGVyYXRlKCAkb3AsICRvdGhlcil7CgoJCSR2YWx1ZSA9IExlc3NfRnVuY3Rpb25zOjpvcGVyYXRlKCAkb3AsICR0aGlzLT52YWx1ZSwgJG90aGVyLT52YWx1ZSk7CgkJJHVuaXQgPSBjbG9uZSAkdGhpcy0+dW5pdDsKCgkJaWYoICRvcCA9PT0gJysnIHx8ICRvcCA9PT0gJy0nICl7CgoJCQlpZiggISR1bml0LT5udW1lcmF0b3IgJiYgISR1bml0LT5kZW5vbWluYXRvciApewoJCQkJJHVuaXQtPm51bWVyYXRvciA9ICRvdGhlci0+dW5pdC0+bnVtZXJhdG9yOwoJCQkJJHVuaXQtPmRlbm9taW5hdG9yID0gJG90aGVyLT51bml0LT5kZW5vbWluYXRvcjsKCQkJfWVsc2VpZiggISRvdGhlci0+dW5pdC0+bnVtZXJhdG9yICYmICEkb3RoZXItPnVuaXQtPmRlbm9taW5hdG9yICl7CgkJCQkvLyBkbyBub3RoaW5nCgkJCX1lbHNlewoJCQkJJG90aGVyID0gJG90aGVyLT5jb252ZXJ0VG8oICR0aGlzLT51bml0LT51c2VkVW5pdHMoKSk7CgoJCQkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0VW5pdHMnXSAmJiAkb3RoZXItPnVuaXQtPnRvU3RyaW5nKCkgIT09ICR1bml0LT50b0NTUygpICl7CgkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJJbmNvbXBhdGlibGUgdW5pdHMuIENoYW5nZSB0aGUgdW5pdHMgb3IgdXNlIHRoZSB1bml0IGZ1bmN0aW9uLiBCYWQgdW5pdHM6ICciIC4gJHVuaXQtPnRvU3RyaW5nKCkgLiAiJyBhbmQgIiAuICRvdGhlci0+dW5pdC0+dG9TdHJpbmcoKSAuICInLiIpOwoJCQkJfQoKCQkJCSR2YWx1ZSA9IExlc3NfRnVuY3Rpb25zOjpvcGVyYXRlKCAkb3AsICR0aGlzLT52YWx1ZSwgJG90aGVyLT52YWx1ZSk7CgkJCX0KCQl9ZWxzZWlmKCAkb3AgPT09ICcqJyApewoJCQkkdW5pdC0+bnVtZXJhdG9yID0gYXJyYXlfbWVyZ2UoJHVuaXQtPm51bWVyYXRvciwgJG90aGVyLT51bml0LT5udW1lcmF0b3IpOwoJCQkkdW5pdC0+ZGVub21pbmF0b3IgPSBhcnJheV9tZXJnZSgkdW5pdC0+ZGVub21pbmF0b3IsICRvdGhlci0+dW5pdC0+ZGVub21pbmF0b3IpOwoJCQlzb3J0KCR1bml0LT5udW1lcmF0b3IpOwoJCQlzb3J0KCR1bml0LT5kZW5vbWluYXRvcik7CgkJCSR1bml0LT5jYW5jZWwoKTsKCQl9ZWxzZWlmKCAkb3AgPT09ICcvJyApewoJCQkkdW5pdC0+bnVtZXJhdG9yID0gYXJyYXlfbWVyZ2UoJHVuaXQtPm51bWVyYXRvciwgJG90aGVyLT51bml0LT5kZW5vbWluYXRvcik7CgkJCSR1bml0LT5kZW5vbWluYXRvciA9IGFycmF5X21lcmdlKCR1bml0LT5kZW5vbWluYXRvciwgJG90aGVyLT51bml0LT5udW1lcmF0b3IpOwoJCQlzb3J0KCR1bml0LT5udW1lcmF0b3IpOwoJCQlzb3J0KCR1bml0LT5kZW5vbWluYXRvcik7CgkJCSR1bml0LT5jYW5jZWwoKTsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkdmFsdWUsICR1bml0KTsKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGFyZSgkb3RoZXIpIHsKCQlpZiAoJG90aGVyIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoKCQkJaWYoICR0aGlzLT51bml0LT5pc0VtcHR5KCkgfHwgJG90aGVyLT51bml0LT5pc0VtcHR5KCkgKXsKCQkJCSRhID0gJHRoaXM7CgkJCQkkYiA9ICRvdGhlcjsKCQkJfSBlbHNlIHsKCQkJCSRhID0gJHRoaXMtPnVuaWZ5KCk7CgkJCQkkYiA9ICRvdGhlci0+dW5pZnkoKTsKCQkJCWlmKCAkYS0+dW5pdC0+Y29tcGFyZSgkYi0+dW5pdCkgIT09IDAgKXsKCQkJCQlyZXR1cm4gLTE7CgkJCQl9CgkJCX0KCQkJJGFWYWx1ZSA9ICRhLT52YWx1ZTsKCQkJJGJWYWx1ZSA9ICRiLT52YWx1ZTsKCgkJCWlmICgkYlZhbHVlID4gJGFWYWx1ZSkgewoJCQkJcmV0dXJuIC0xOwoJCQl9IGVsc2VpZiAoJGJWYWx1ZSA8ICRhVmFsdWUpIHsKCQkJCXJldHVybiAxOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIDA7CgkJCX0KCQl9IGVsc2UgewoJCQlyZXR1cm4gLTE7CgkJfQoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmlmeSgpIHsKCQlyZXR1cm4gJHRoaXMtPmNvbnZlcnRUbyhhcnJheSgnbGVuZ3RoJz0+ICdweCcsICdkdXJhdGlvbic9PiAncycsICdhbmdsZScgPT4gJ3JhZCcgKSk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbnZlcnRUbygkY29udmVyc2lvbnMpIHsKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJJHVuaXQgPSBjbG9uZSAkdGhpcy0+dW5pdDsKCgkJaWYoIGlzX3N0cmluZygkY29udmVyc2lvbnMpICl7CgkJCSRkZXJpdmVkQ29udmVyc2lvbnMgPSBhcnJheSgpOwoJCQlmb3JlYWNoKCBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zOjokZ3JvdXBzIGFzICRpICl7CgkJCQlpZiggaXNzZXQoTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JHskaX1bJGNvbnZlcnNpb25zXSkgKXsKCQkJCQkkZGVyaXZlZENvbnZlcnNpb25zID0gYXJyYXkoICRpID0+ICRjb252ZXJzaW9ucyk7CgkJCQl9CgkJCX0KCQkJJGNvbnZlcnNpb25zID0gJGRlcml2ZWRDb252ZXJzaW9uczsKCQl9CgoKCQlmb3JlYWNoKCRjb252ZXJzaW9ucyBhcyAkZ3JvdXBOYW1lID0+ICR0YXJnZXRVbml0KXsKCQkJJGdyb3VwID0gTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JHskZ3JvdXBOYW1lfTsKCgkJCS8vbnVtZXJhdG9yCgkJCWZvcmVhY2goJHVuaXQtPm51bWVyYXRvciBhcyAkaSA9PiAkYXRvbWljVW5pdCl7CgkJCQkkYXRvbWljVW5pdCA9ICR1bml0LT5udW1lcmF0b3JbJGldOwoJCQkJaWYoICFpc3NldCgkZ3JvdXBbJGF0b21pY1VuaXRdKSApewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCSR2YWx1ZSA9ICR2YWx1ZSAqICgkZ3JvdXBbJGF0b21pY1VuaXRdIC8gJGdyb3VwWyR0YXJnZXRVbml0XSk7CgoJCQkJJHVuaXQtPm51bWVyYXRvclskaV0gPSAkdGFyZ2V0VW5pdDsKCQkJfQoKCQkJLy9kZW5vbWluYXRvcgoJCQlmb3JlYWNoKCR1bml0LT5kZW5vbWluYXRvciBhcyAkaSA9PiAkYXRvbWljVW5pdCl7CgkJCQkkYXRvbWljVW5pdCA9ICR1bml0LT5kZW5vbWluYXRvclskaV07CgkJCQlpZiggIWlzc2V0KCRncm91cFskYXRvbWljVW5pdF0pICl7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJJHZhbHVlID0gJHZhbHVlIC8gKCRncm91cFskYXRvbWljVW5pdF0gLyAkZ3JvdXBbJHRhcmdldFVuaXRdKTsKCgkJCQkkdW5pdC0+ZGVub21pbmF0b3JbJGldID0gJHRhcmdldFVuaXQ7CgkJCX0KCQl9CgoJCSR1bml0LT5jYW5jZWwoKTsKCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkdmFsdWUsICR1bml0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Directive.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEaXJlY3RpdmUKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGlyZWN0aXZlIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkbmFtZTsKCXB1YmxpYyAkdmFsdWU7CglwdWJsaWMgJHJ1bGVzOwoJcHVibGljICRpbmRleDsKCXB1YmxpYyAkaXNSZWZlcmVuY2VkOwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJGRlYnVnSW5mbzsKCXB1YmxpYyAkdHlwZSA9ICdEaXJlY3RpdmUnOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwgJHZhbHVlID0gbnVsbCwgJHJ1bGVzLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgJGRlYnVnSW5mbyA9IG51bGwgKXsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCQlpZiggJHJ1bGVzICl7CgkJCSR0aGlzLT5ydWxlcyA9ICRydWxlczsKCQkJJHRoaXMtPnJ1bGVzLT5hbGxvd0ltcG9ydHMgPSB0cnVlOwoJCX0KCgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJCSR0aGlzLT5kZWJ1Z0luZm8gPSAkZGVidWdJbmZvOwoJfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCWlmKCAkdGhpcy0+cnVsZXMgKXsKCQkJJHRoaXMtPnJ1bGVzID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+cnVsZXMgKTsKCQl9CgkJaWYoICR0aGlzLT52YWx1ZSApewoJCQkkdGhpcy0+dmFsdWUgPSAkdmlzaXRvci0+dmlzaXRPYmooICR0aGlzLT52YWx1ZSApOwoJCX0KCX0KCgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJJHJ1bGVzID0gJHRoaXMtPnJ1bGVzOwoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPm5hbWUsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCWlmKCAkdGhpcy0+dmFsdWUgKXsKCQkJJG91dHB1dC0+YWRkKCcgJyk7CgkJCSR0aGlzLT52YWx1ZS0+Z2VuQ1NTKCRvdXRwdXQpOwoJCX0KCQlpZiggJHRoaXMtPnJ1bGVzICl7CgkJCUxlc3NfVHJlZTo6b3V0cHV0UnVsZXNldCggJG91dHB1dCwgYXJyYXkoJHRoaXMtPnJ1bGVzKSk7CgkJfSBlbHNlIHsKCQkJJG91dHB1dC0+YWRkKCc7Jyk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpewoKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJJHJ1bGVzID0gJHRoaXMtPnJ1bGVzOwoJCWlmKCAkdmFsdWUgKXsKCQkJJHZhbHVlID0gJHZhbHVlLT5jb21waWxlKCRlbnYpOwoJCX0KCgkJaWYoICRydWxlcyApewoJCQkkcnVsZXMgPSAkcnVsZXMtPmNvbXBpbGUoJGVudik7CgkJCSRydWxlcy0+cm9vdCA9IHRydWU7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaXJlY3RpdmUoICR0aGlzLT5uYW1lLCAkdmFsdWUsICRydWxlcywgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+ZGVidWdJbmZvICk7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiB2YXJpYWJsZSgkbmFtZSl7CgkJaWYoICR0aGlzLT5ydWxlcyApewoJCQlyZXR1cm4gJHRoaXMtPnJ1bGVzLT52YXJpYWJsZSgkbmFtZSk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmaW5kKCRzZWxlY3Rvcil7CgkJaWYoICR0aGlzLT5ydWxlcyApewoJCQlyZXR1cm4gJHRoaXMtPnJ1bGVzLT5maW5kKCRzZWxlY3RvciwgJHRoaXMpOwoJCX0KCX0KCgkvL3J1bGVzZXRzOiBmdW5jdGlvbiAoKSB7IGlmICh0aGlzLnJ1bGVzKSByZXR1cm4gdHJlZS5SdWxlc2V0LnByb3RvdHlwZS5ydWxlc2V0cy5hcHBseSh0aGlzLnJ1bGVzKTsgfSwKCglwdWJsaWMgZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKXsKCQkkdGhpcy0+aXNSZWZlcmVuY2VkID0gdHJ1ZTsKCQlpZiggJHRoaXMtPnJ1bGVzICl7CgkJCUxlc3NfVHJlZTo6UmVmZXJlbmNlZEFycmF5KCR0aGlzLT5ydWxlcy0+cnVsZXMpOwoJCX0KCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Element.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFbGVtZW50CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0VsZW1lbnQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICRjb21iaW5hdG9yID0gJyc7CglwdWJsaWMgJHZhbHVlID0gJyc7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJHR5cGUgPSAnRWxlbWVudCc7CgoJcHVibGljICR2YWx1ZV9pc19vYmplY3QgPSBmYWxzZTsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbWJpbmF0b3IsICR2YWx1ZSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKXsKCgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJCSR0aGlzLT52YWx1ZV9pc19vYmplY3QgPSBpc19vYmplY3QoJHZhbHVlKTsKCgkJaWYoICRjb21iaW5hdG9yICl7CgkJCSR0aGlzLT5jb21iaW5hdG9yID0gJGNvbWJpbmF0b3I7CgkJfQoKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKXsKCQlpZiggJHRoaXMtPnZhbHVlX2lzX29iamVjdCApeyAvL29iamVjdCBvciBzdHJpbmcKCQkJJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+dmFsdWUgKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgoJCWlmKCBMZXNzX0Vudmlyb25tZW50OjokbWl4aW5fc3RhY2sgKXsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRWxlbWVudCgkdGhpcy0+Y29tYmluYXRvciwgKCR0aGlzLT52YWx1ZV9pc19vYmplY3QgPyAkdGhpcy0+dmFsdWUtPmNvbXBpbGUoJGVudikgOiAkdGhpcy0+dmFsdWUpLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8gKTsKCQl9CgoJCWlmKCAkdGhpcy0+dmFsdWVfaXNfb2JqZWN0ICl7CgkJCSR0aGlzLT52YWx1ZSA9ICR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KTsKCQl9CgoJCXJldHVybiAkdGhpczsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnRvQ1NTKCksICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUygpewoKCQlpZiggJHRoaXMtPnZhbHVlX2lzX29iamVjdCApewoJCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWUtPnRvQ1NTKCk7CgkJfWVsc2V7CgkJCSR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKCQl9CgoKCQlpZiggJHZhbHVlID09PSAnJyAmJiAkdGhpcy0+Y29tYmluYXRvciAmJiAkdGhpcy0+Y29tYmluYXRvciA9PT0gJyYnICl7CgkJCXJldHVybiAnJzsKCQl9CgoKCQlyZXR1cm4gTGVzc19FbnZpcm9ubWVudDo6JF9vdXRwdXRNYXBbJHRoaXMtPmNvbWJpbmF0b3JdIC4gJHZhbHVlOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Expression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFeHByZXNzaW9uCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0V4cHJlc3Npb24gZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICR2YWx1ZSA9IGFycmF5KCk7CglwdWJsaWMgJHBhcmVucyA9IGZhbHNlOwoJcHVibGljICRwYXJlbnNJbk9wID0gZmFsc2U7CglwdWJsaWMgJHR5cGUgPSAnRXhwcmVzc2lvbic7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkdmFsdWUsICRwYXJlbnMgPSBudWxsICl7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJCSR0aGlzLT5wYXJlbnMgPSAkcGFyZW5zOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICl7CgkJJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoICR0aGlzLT52YWx1ZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpIHsKCgkJJGRvdWJsZVBhcmVuID0gZmFsc2U7CgoJCWlmKCAkdGhpcy0+cGFyZW5zICYmICEkdGhpcy0+cGFyZW5zSW5PcCApewoJCQlMZXNzX0Vudmlyb25tZW50OjokcGFyZW5zU3RhY2srKzsKCQl9CgoJCSRyZXR1cm5WYWx1ZSA9IG51bGw7CgkJaWYoICR0aGlzLT52YWx1ZSApewoKCQkJJGNvdW50ID0gY291bnQoJHRoaXMtPnZhbHVlKTsKCgkJCWlmKCAkY291bnQgPiAxICl7CgoJCQkJJHJldCA9IGFycmF5KCk7CgkJCQlmb3JlYWNoKCR0aGlzLT52YWx1ZSBhcyAkZSl7CgkJCQkJJHJldFtdID0gJGUtPmNvbXBpbGUoJGVudik7CgkJCQl9CgkJCQkkcmV0dXJuVmFsdWUgPSBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oJHJldCk7CgoJCQl9ZWxzZXsKCgkJCQlpZiggKCR0aGlzLT52YWx1ZVswXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uKSAmJiAkdGhpcy0+dmFsdWVbMF0tPnBhcmVucyAmJiAhJHRoaXMtPnZhbHVlWzBdLT5wYXJlbnNJbk9wICl7CgkJCQkJJGRvdWJsZVBhcmVuID0gdHJ1ZTsKCQkJCX0KCgkJCQkkcmV0dXJuVmFsdWUgPSAkdGhpcy0+dmFsdWVbMF0tPmNvbXBpbGUoJGVudik7CgkJCX0KCgkJfSBlbHNlIHsKCQkJJHJldHVyblZhbHVlID0gJHRoaXM7CgkJfQoKCQlpZiggJHRoaXMtPnBhcmVucyApewoJCQlpZiggISR0aGlzLT5wYXJlbnNJbk9wICl7CgkJCQlMZXNzX0Vudmlyb25tZW50OjokcGFyZW5zU3RhY2stLTsKCgkJCX1lbHNlaWYoICFMZXNzX0Vudmlyb25tZW50Ojppc01hdGhPbigpICYmICEkZG91YmxlUGFyZW4gKXsKCQkJCSRyZXR1cm5WYWx1ZSA9IG5ldyBMZXNzX1RyZWVfUGFyZW4oJHJldHVyblZhbHVlKTsKCgkJCX0KCQl9CgkJcmV0dXJuICRyZXR1cm5WYWx1ZTsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoJCSR2YWxfbGVuID0gY291bnQoJHRoaXMtPnZhbHVlKTsKCQlmb3IoICRpID0gMDsgJGkgPCAkdmFsX2xlbjsgJGkrKyApewoJCQkkdGhpcy0+dmFsdWVbJGldLT5nZW5DU1MoICRvdXRwdXQgKTsKCQkJaWYoICRpICsgMSA8ICR2YWxfbGVuICl7CgkJCQkkb3V0cHV0LT5hZGQoICcgJyApOwoJCQl9CgkJfQoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aHJvd0F3YXlDb21tZW50cygpIHsKCgkJaWYoIGlzX2FycmF5KCR0aGlzLT52YWx1ZSkgKXsKCQkJJG5ld192YWx1ZSA9IGFycmF5KCk7CgkJCWZvcmVhY2goJHRoaXMtPnZhbHVlIGFzICR2KXsKCQkJCWlmKCAkdiBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db21tZW50ICl7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCQkkbmV3X3ZhbHVlW10gPSAkdjsKCQkJfQoJCQkkdGhpcy0+dmFsdWUgPSAkbmV3X3ZhbHVlOwoJCX0KCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Extend.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFeHRlbmQKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRXh0ZW5kIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkc2VsZWN0b3I7CglwdWJsaWMgJG9wdGlvbjsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJHNlbGZTZWxlY3RvcnMgPSBhcnJheSgpOwoJcHVibGljICRhbGxvd0JlZm9yZTsKCXB1YmxpYyAkYWxsb3dBZnRlcjsKCXB1YmxpYyAkZmlyc3RFeHRlbmRPblRoaXNTZWxlY3RvclBhdGg7CglwdWJsaWMgJHR5cGUgPSAnRXh0ZW5kJzsKCXB1YmxpYyAkcnVsZXNldDsKCgoJcHVibGljICRvYmplY3RfaWQ7CglwdWJsaWMgJHBhcmVudF9pZHMgPSBhcnJheSgpOwoKCS8qKgoJICogQHBhcmFtIGludGVnZXIgJGluZGV4CgkgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc2VsZWN0b3IsICRvcHRpb24sICRpbmRleCl7CgkJc3RhdGljICRpID0gMDsKCQkkdGhpcy0+c2VsZWN0b3IgPSAkc2VsZWN0b3I7CgkJJHRoaXMtPm9wdGlvbiA9ICRvcHRpb247CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoKCQlzd2l0Y2goJG9wdGlvbil7CgkJCWNhc2UgImFsbCI6CgkJCQkkdGhpcy0+YWxsb3dCZWZvcmUgPSB0cnVlOwoJCQkJJHRoaXMtPmFsbG93QWZ0ZXIgPSB0cnVlOwoJCQlicmVhazsKCQkJZGVmYXVsdDoKCQkJCSR0aGlzLT5hbGxvd0JlZm9yZSA9IGZhbHNlOwoJCQkJJHRoaXMtPmFsbG93QWZ0ZXIgPSBmYWxzZTsKCQkJYnJlYWs7CgkJfQoKCQkkdGhpcy0+b2JqZWN0X2lkID0gJGkrKzsKCQkkdGhpcy0+cGFyZW50X2lkcyA9IGFycmF5KCR0aGlzLT5vYmplY3RfaWQpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICl7CgkJJHRoaXMtPnNlbGVjdG9yID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+c2VsZWN0b3IgKTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApewoJCUxlc3NfUGFyc2VyOjokaGFzX2V4dGVuZHMgPSB0cnVlOwoJCSR0aGlzLT5zZWxlY3RvciA9ICR0aGlzLT5zZWxlY3Rvci0+Y29tcGlsZSgkZW52KTsKCQlyZXR1cm4gJHRoaXM7CgkJLy9yZXR1cm4gbmV3IExlc3NfVHJlZV9FeHRlbmQoICR0aGlzLT5zZWxlY3Rvci0+Y29tcGlsZSgkZW52KSwgJHRoaXMtPm9wdGlvbiwgJHRoaXMtPmluZGV4KTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZmluZFNlbGZTZWxlY3RvcnMoICRzZWxlY3RvcnMgKXsKCQkkc2VsZkVsZW1lbnRzID0gYXJyYXkoKTsKCgoJCWZvciggJGkgPSAwLCAkc2VsZWN0b3JzX2xlbiA9IGNvdW50KCRzZWxlY3RvcnMpOyAkaSA8ICRzZWxlY3RvcnNfbGVuOyAkaSsrICl7CgkJCSRzZWxlY3RvckVsZW1lbnRzID0gJHNlbGVjdG9yc1skaV0tPmVsZW1lbnRzOwoJCQkvLyBkdXBsaWNhdGUgdGhlIGxvZ2ljIGluIGdlbkNTUyBmdW5jdGlvbiBpbnNpZGUgdGhlIHNlbGVjdG9yIG5vZGUuCgkJCS8vIGZ1dHVyZSBUT0RPIC0gbW92ZSBib3RoIGxvZ2ljcyBpbnRvIHRoZSBzZWxlY3RvciBqb2luZXIgdmlzaXRvcgoJCQlpZiggJGkgJiYgJHNlbGVjdG9yRWxlbWVudHMgJiYgJHNlbGVjdG9yRWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPT09ICIiKSB7CgkJCQkkc2VsZWN0b3JFbGVtZW50c1swXS0+Y29tYmluYXRvciA9ICcgJzsKCQkJfQoJCQkkc2VsZkVsZW1lbnRzID0gYXJyYXlfbWVyZ2UoICRzZWxmRWxlbWVudHMsICRzZWxlY3RvcnNbJGldLT5lbGVtZW50cyApOwoJCX0KCgkJJHRoaXMtPnNlbGZTZWxlY3RvcnMgPSBhcnJheShuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCRzZWxmRWxlbWVudHMpKTsKCX0KCn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDU1MgQGltcG9ydCBub2RlCiAqCiAqIFRoZSBnZW5lcmFsIHN0cmF0ZWd5IGhlcmUgaXMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHdhaXQKICogZm9yIHRoZSBwYXJzaW5nIHRvIGJlIGNvbXBsZXRlZCwgYmVmb3JlIHdlIHN0YXJ0IGltcG9ydGluZwogKiB0aGUgZmlsZS4gVGhhdCdzIGJlY2F1c2UgaW4gdGhlIGNvbnRleHQgb2YgYSBicm93c2VyLAogKiBtb3N0IG9mIHRoZSB0aW1lIHdpbGwgYmUgc3BlbnQgd2FpdGluZyBmb3IgdGhlIHNlcnZlciB0byByZXNwb25kLgogKgogKiBPbiBjcmVhdGlvbiwgd2UgcHVzaCB0aGUgaW1wb3J0IHBhdGggdG8gb3VyIGltcG9ydCBxdWV1ZSwgdGhvdWdoCiAqIGBpbXBvcnQscHVzaGAsIHdlIGFsc28gcGFzcyBpdCBhIGNhbGxiYWNrLCB3aGljaCBpdCdsbCBjYWxsIG9uY2UKICogdGhlIGZpbGUgaGFzIGJlZW4gZmV0Y2hlZCwgYW5kIHBhcnNlZC4KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfSW1wb3J0IGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkb3B0aW9uczsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJHBhdGg7CglwdWJsaWMgJGZlYXR1cmVzOwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJGNzczsKCXB1YmxpYyAkc2tpcDsKCXB1YmxpYyAkcm9vdDsKCXB1YmxpYyAkdHlwZSA9ICdJbXBvcnQnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcGF0aCwgJGZlYXR1cmVzLCAkb3B0aW9ucywgJGluZGV4LCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApewoJCSR0aGlzLT5vcHRpb25zID0gJG9wdGlvbnM7CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5wYXRoID0gJHBhdGg7CgkJJHRoaXMtPmZlYXR1cmVzID0gJGZlYXR1cmVzOwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoKCQlpZiggaXNfYXJyYXkoJG9wdGlvbnMpICl7CgkJCSR0aGlzLT5vcHRpb25zICs9IGFycmF5KCdpbmxpbmUnPT5mYWxzZSk7CgoJCQlpZiggaXNzZXQoJHRoaXMtPm9wdGlvbnNbJ2xlc3MnXSkgfHwgJHRoaXMtPm9wdGlvbnNbJ2lubGluZSddICl7CgkJCQkkdGhpcy0+Y3NzID0gIWlzc2V0KCR0aGlzLT5vcHRpb25zWydsZXNzJ10pIHx8ICEkdGhpcy0+b3B0aW9uc1snbGVzcyddIHx8ICR0aGlzLT5vcHRpb25zWydpbmxpbmUnXTsKCQkJfSBlbHNlIHsKCQkJCSRwYXRoVmFsdWUgPSAkdGhpcy0+Z2V0UGF0aCgpOwoJCQkJaWYoICRwYXRoVmFsdWUgJiYgcHJlZ19tYXRjaCgnL2NzcyhbXD87XS4qKT8kLycsJHBhdGhWYWx1ZSkgKXsKCQkJCQkkdGhpcy0+Y3NzID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCX0KCi8vCi8vIFRoZSBhY3R1YWwgaW1wb3J0IG5vZGUgZG9lc24ndCByZXR1cm4gYW55dGhpbmcsIHdoZW4gY29udmVydGVkIHRvIENTUy4KLy8gVGhlIHJlYXNvbiBpcyB0aGF0IGl0J3MgdXNlZCBhdCB0aGUgZXZhbHVhdGlvbiBzdGFnZSwgc28gdGhhdCB0aGUgcnVsZXMKLy8gaXQgaW1wb3J0cyBjYW4gYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBydWxlcy4KLy8KLy8gSW4gYGV2YWxgLCB3ZSBtYWtlIHN1cmUgYWxsIEltcG9ydCBub2RlcyBnZXQgZXZhbHVhdGVkLCByZWN1cnNpdmVseSwgc28KLy8gd2UgZW5kIHVwIHdpdGggYSBmbGF0IHN0cnVjdHVyZSwgd2hpY2ggY2FuIGVhc2lseSBiZSBpbXBvcnRlZCBpbiB0aGUgcGFyZW50Ci8vIHJ1bGVzZXQuCi8vCgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcil7CgoJCWlmKCAkdGhpcy0+ZmVhdHVyZXMgKXsKCQkJJHRoaXMtPmZlYXR1cmVzID0gJHZpc2l0b3ItPnZpc2l0T2JqKCR0aGlzLT5mZWF0dXJlcyk7CgkJfQoJCSR0aGlzLT5wYXRoID0gJHZpc2l0b3ItPnZpc2l0T2JqKCR0aGlzLT5wYXRoKTsKCgkJaWYoICEkdGhpcy0+b3B0aW9uc1snaW5saW5lJ10gJiYgJHRoaXMtPnJvb3QgKXsKCQkJJHRoaXMtPnJvb3QgPSAkdmlzaXRvci0+dmlzaXQoJHRoaXMtPnJvb3QpOwoJCX0KCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoJCWlmKCAkdGhpcy0+Y3NzICl7CgoJCQkkb3V0cHV0LT5hZGQoICdAaW1wb3J0ICcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoKCQkJJHRoaXMtPnBhdGgtPmdlbkNTUyggJG91dHB1dCApOwoJCQlpZiggJHRoaXMtPmZlYXR1cmVzICl7CgkJCQkkb3V0cHV0LT5hZGQoICcgJyApOwoJCQkJJHRoaXMtPmZlYXR1cmVzLT5nZW5DU1MoICRvdXRwdXQgKTsKCQkJfQoJCQkkb3V0cHV0LT5hZGQoICc7JyApOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKCQkkZmVhdHVyZXMgPSAkdGhpcy0+ZmVhdHVyZXMgPyAnICcgLiAkdGhpcy0+ZmVhdHVyZXMtPnRvQ1NTKCkgOiAnJzsKCgkJaWYgKCR0aGlzLT5jc3MpIHsKCQkJcmV0dXJuICJAaW1wb3J0ICIgLiAkdGhpcy0+cGF0aC0+dG9DU1MoKSAuICRmZWF0dXJlcyAuICI7XG4iOwoJCX0gZWxzZSB7CgkJCXJldHVybiAiIjsKCQl9Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGF0aCgpewoJCWlmICgkdGhpcy0+cGF0aCBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQpIHsKCQkJJHBhdGggPSAkdGhpcy0+cGF0aC0+dmFsdWU7CgkJCSRwYXRoID0gKCBpc3NldCgkdGhpcy0+Y3NzKSB8fCBwcmVnX21hdGNoKCcvKFwuW2Etel0qJCl8KFtcPztdLiopJC8nLCRwYXRoKSkgPyAkcGF0aCA6ICRwYXRoIC4gJy5sZXNzJzsKCQl9IGVsc2UgaWYgKCR0aGlzLT5wYXRoIGluc3RhbmNlb2YgTGVzc19UcmVlX1VSTCkgewoJCQkkcGF0aCA9ICR0aGlzLT5wYXRoLT52YWx1ZS0+dmFsdWU7CgkJfWVsc2V7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJLy9yZW1vdmUgcXVlcnkgc3RyaW5nIGFuZCBmcmFnbWVudAoJCXJldHVybiBwcmVnX3JlcGxhY2UoJy9bXD8jXVteXD9dKiQvJywnJywkcGF0aCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGVGb3JJbXBvcnQoICRlbnYgKXsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9JbXBvcnQoICR0aGlzLT5wYXRoLT5jb21waWxlKCRlbnYpLCAkdGhpcy0+ZmVhdHVyZXMsICR0aGlzLT5vcHRpb25zLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlUGF0aCgkZW52KSB7CgkJJHBhdGggPSAkdGhpcy0+cGF0aC0+Y29tcGlsZSgkZW52KTsKCQkkcm9vdHBhdGggPSAnJzsKCQlpZiggJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyAmJiAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyb290cGF0aCddICl7CgkJCSRyb290cGF0aCA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3Jvb3RwYXRoJ107CgkJfQoKCgkJaWYoICEoJHBhdGggaW5zdGFuY2VvZiBMZXNzX1RyZWVfVVJMKSApewoJCQlpZiggJHJvb3RwYXRoICl7CgkJCQkkcGF0aFZhbHVlID0gJHBhdGgtPnZhbHVlOwoJCQkJLy8gQWRkIHRoZSBiYXNlIHBhdGggaWYgdGhlIGltcG9ydCBpcyByZWxhdGl2ZQoJCQkJaWYoICRwYXRoVmFsdWUgJiYgTGVzc19FbnZpcm9ubWVudDo6aXNQYXRoUmVsYXRpdmUoJHBhdGhWYWx1ZSkgKXsKCQkJCQkkcGF0aC0+dmFsdWUgPSAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWyd1cmlfcm9vdCddLiRwYXRoVmFsdWU7CgkJCQl9CgkJCX0KCQkJJHBhdGgtPnZhbHVlID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCgkcGF0aC0+dmFsdWUpOwoJCX0KCgoKCQlyZXR1cm4gJHBhdGg7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKXsKCgkJJGV2YWxkID0gJHRoaXMtPmNvbXBpbGVGb3JJbXBvcnQoJGVudik7CgoJCS8vZ2V0IHBhdGggJiB1cmkKCQkkcGF0aF9hbmRfdXJpID0gbnVsbDsKCQlpZiggaXNfY2FsbGFibGUoTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbXBvcnRfY2FsbGJhY2snXSkgKXsKCQkJJHBhdGhfYW5kX3VyaSA9IGNhbGxfdXNlcl9mdW5jKExlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2NhbGxiYWNrJ10sJGV2YWxkKTsKCQl9CgoJCWlmKCAhJHBhdGhfYW5kX3VyaSApewoJCQkkcGF0aF9hbmRfdXJpID0gJGV2YWxkLT5QYXRoQW5kVXJpKCk7CgkJfQoKCQlpZiggJHBhdGhfYW5kX3VyaSApewoJCQlsaXN0KCRmdWxsX3BhdGgsICR1cmkpID0gJHBhdGhfYW5kX3VyaTsKCQl9ZWxzZXsKCQkJJGZ1bGxfcGF0aCA9ICR1cmkgPSAkZXZhbGQtPmdldFBhdGgoKTsKCQl9CgoKCQkvL2ltcG9ydCBvbmNlCgkJaWYoICRldmFsZC0+c2tpcCggJGZ1bGxfcGF0aCwgJGVudikgKXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoKCQlpZiggJHRoaXMtPm9wdGlvbnNbJ2lubGluZSddICl7CgkJCS8vdG9kbyBuZWVkcyB0byByZWZlcmVuY2UgY3NzIGZpbGUgbm90IGltcG9ydAoJCQkvLyRjb250ZW50cyA9IG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCR0aGlzLT5yb290LCAwLCBhcnJheSgnZmlsZW5hbWUnPT4kdGhpcy0+aW1wb3J0ZWRGaWxlbmFtZSksIHRydWUgKTsKCgkJCUxlc3NfUGFyc2VyOjpBZGRQYXJzZWRGaWxlKCRmdWxsX3BhdGgpOwoJCQkkY29udGVudHMgPSBuZXcgTGVzc19UcmVlX0Fub255bW91cyggZmlsZV9nZXRfY29udGVudHMoJGZ1bGxfcGF0aCksIDAsIGFycmF5KCksIHRydWUgKTsKCgkJCWlmKCAkdGhpcy0+ZmVhdHVyZXMgKXsKCQkJCXJldHVybiBuZXcgTGVzc19UcmVlX01lZGlhKCBhcnJheSgkY29udGVudHMpLCAkdGhpcy0+ZmVhdHVyZXMtPnZhbHVlICk7CgkJCX0KCgkJCXJldHVybiBhcnJheSggJGNvbnRlbnRzICk7CgkJfQoKCQkvLyBvcHRpb25hbCAobmVlZCB0byBiZSBiZWZvcmUgIkNTUyIgdG8gc3VwcG9ydCBvcHRpb25hbCBDU1MgaW1wb3J0cy4gQ1NTIHNob3VsZCBiZSBjaGVja2VkIG9ubHkgaWYgZW1wdHkoJHRoaXMtPmN1cnJlbnRGaWxlSW5mbykpCgkJaWYoIGlzc2V0KCR0aGlzLT5vcHRpb25zWydvcHRpb25hbCddKSAmJiAkdGhpcy0+b3B0aW9uc1snb3B0aW9uYWwnXSAmJiAhZmlsZV9leGlzdHMoJGZ1bGxfcGF0aCkgJiYgKCEkZXZhbGQtPmNzcyB8fCAhZW1wdHkoJHRoaXMtPmN1cnJlbnRGaWxlSW5mbykpKSB7CgkJCXJldHVybiBhcnJheSgpOwoJCX0KCgoJCS8vIGNzcyA/CgkJaWYoICRldmFsZC0+Y3NzICl7CgkJCSRmZWF0dXJlcyA9ICggJGV2YWxkLT5mZWF0dXJlcyA/ICRldmFsZC0+ZmVhdHVyZXMtPmNvbXBpbGUoJGVudikgOiBudWxsICk7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0ltcG9ydCggJHRoaXMtPmNvbXBpbGVQYXRoKCAkZW52KSwgJGZlYXR1cmVzLCAkdGhpcy0+b3B0aW9ucywgJHRoaXMtPmluZGV4KTsKCQl9CgoKCQlyZXR1cm4gJHRoaXMtPlBhcnNlSW1wb3J0KCAkZnVsbF9wYXRoLCAkdXJpLCAkZW52ICk7Cgl9CgoKCS8qKgoJICogVXNpbmcgdGhlIGltcG9ydCBkaXJlY3RvcmllcywgZ2V0IHRoZSBmdWxsIGFic29sdXRlIHBhdGggYW5kIHVyaSBvZiB0aGUgaW1wb3J0CgkgKgoJICogQHBhcmFtIExlc3NfVHJlZV9JbXBvcnQgJGV2YWxkCgkgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBQYXRoQW5kVXJpKCl7CgoJCSRldmFsZF9wYXRoID0gJHRoaXMtPmdldFBhdGgoKTsKCgkJaWYoICRldmFsZF9wYXRoICl7CgoJCQkkaW1wb3J0X2RpcnMgPSBhcnJheSgpOwoKCQkJaWYoIExlc3NfRW52aXJvbm1lbnQ6OmlzUGF0aFJlbGF0aXZlKCRldmFsZF9wYXRoKSApewoJCQkJLy9pZiB0aGUgcGF0aCBpcyByZWxhdGl2ZSwgdGhlIGZpbGUgc2hvdWxkIGJlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQoJCQkJJGltcG9ydF9kaXJzWyAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydjdXJyZW50RGlyZWN0b3J5J10gXSA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3VyaV9yb290J107CgoJCQl9ZWxzZXsKCQkJCS8vb3RoZXJ3aXNlLCB0aGUgZmlsZSBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIHNlcnZlciByb290CgkJCQkkaW1wb3J0X2RpcnNbICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ2VudHJ5UGF0aCddIF0gPSAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydlbnRyeVVyaSddOwoKCQkJCS8vaWYgdGhlIHVzZXIgc3VwcGxpZWQgZW50cnlQYXRoIGlzbid0IHRoZSBhY3R1YWwgcm9vdAoJCQkJJGltcG9ydF9kaXJzWyAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIF0gPSAnJzsKCgkJCX0KCgkJCS8vIGFsd2F5cyBsb29rIGluIHVzZXIgc3VwcGxpZWQgaW1wb3J0IGRpcmVjdG9yaWVzCgkJCSRpbXBvcnRfZGlycyA9IGFycmF5X21lcmdlKCAkaW1wb3J0X2RpcnMsIExlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2RpcnMnXSApOwoKCgkJCWZvcmVhY2goICRpbXBvcnRfZGlycyBhcyAkcm9vdHBhdGggPT4gJHJvb3R1cmkpewoJCQkJaWYoIGlzX2NhbGxhYmxlKCRyb290dXJpKSApewoJCQkJCWxpc3QoJHBhdGgsICR1cmkpID0gY2FsbF91c2VyX2Z1bmMoJHJvb3R1cmksICRldmFsZF9wYXRoKTsKCQkJCQlpZiggaXNfc3RyaW5nKCRwYXRoKSApewoJCQkJCQkkZnVsbF9wYXRoID0gJHBhdGg7CgkJCQkJCXJldHVybiBhcnJheSggJGZ1bGxfcGF0aCwgJHVyaSApOwoJCQkJCX0KCQkJCX1lbHNlaWYoICFlbXB0eSgkcm9vdHBhdGgpICl7CgoKCQkJCQlpZiggJHJvb3R1cmkgKXsKCQkJCQkJaWYoIHN0cnBvcygkZXZhbGRfcGF0aCwkcm9vdHVyaSkgPT09IDAgKXsKCQkJCQkJCSRldmFsZF9wYXRoID0gc3Vic3RyKCAkZXZhbGRfcGF0aCwgc3RybGVuKCRyb290dXJpKSApOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQkkcGF0aCA9IHJ0cmltKCRyb290cGF0aCwnL1xcJykuJy8nLmx0cmltKCRldmFsZF9wYXRoLCcvXFwnKTsKCgkJCQkJaWYoIGZpbGVfZXhpc3RzKCRwYXRoKSApewoJCQkJCQkkZnVsbF9wYXRoID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCgkcGF0aCk7CgkJCQkJCSR1cmkgPSBMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKGRpcm5hbWUoJHJvb3R1cmkuJGV2YWxkX3BhdGgpKTsKCQkJCQkJcmV0dXJuIGFycmF5KCAkZnVsbF9wYXRoLCAkdXJpICk7CgkJCQkJfSBlbHNlaWYoIGZpbGVfZXhpc3RzKCRwYXRoLicubGVzcycpICl7CgkJCQkJCSRmdWxsX3BhdGggPSBMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCRwYXRoLicubGVzcycpOwoJCQkJCQkkdXJpID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aChkaXJuYW1lKCRyb290dXJpLiRldmFsZF9wYXRoLicubGVzcycpKTsKCQkJCQkJcmV0dXJuIGFycmF5KCAkZnVsbF9wYXRoLCAkdXJpICk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoKCgkvKioKCSAqIFBhcnNlIHRoZSBpbXBvcnQgdXJsIGFuZCByZXR1cm4gdGhlIHJ1bGVzCgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfTWVkaWF8YXJyYXkKCSAqLwogICAgcHVibGljIGZ1bmN0aW9uIFBhcnNlSW1wb3J0KCAkZnVsbF9wYXRoLCAkdXJpLCAkZW52ICl7CgoJCSRpbXBvcnRfZW52ID0gY2xvbmUgJGVudjsKCQlpZiggKGlzc2V0KCR0aGlzLT5vcHRpb25zWydyZWZlcmVuY2UnXSkgJiYgJHRoaXMtPm9wdGlvbnNbJ3JlZmVyZW5jZSddKSB8fCBpc3NldCgkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSkgKXsKCQkJJGltcG9ydF9lbnYtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gPSB0cnVlOwoJCX0KCgkJaWYoIChpc3NldCgkdGhpcy0+b3B0aW9uc1snbXVsdGlwbGUnXSkgJiYgJHRoaXMtPm9wdGlvbnNbJ211bHRpcGxlJ10pICl7CgkJCSRpbXBvcnRfZW52LT5pbXBvcnRNdWx0aXBsZSA9IHRydWU7CgkJfQoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCRpbXBvcnRfZW52KTsKCQkkcm9vdCA9ICRwYXJzZXItPnBhcnNlRmlsZSgkZnVsbF9wYXRoLCAkdXJpLCB0cnVlKTsKCgoJCSRydWxlc2V0ID0gbmV3IExlc3NfVHJlZV9SdWxlc2V0KGFycmF5KCksICRyb290LT5ydWxlcyApOwoJCSRydWxlc2V0LT5ldmFsSW1wb3J0cygkaW1wb3J0X2Vudik7CgoJCXJldHVybiAkdGhpcy0+ZmVhdHVyZXMgPyBuZXcgTGVzc19UcmVlX01lZGlhKCRydWxlc2V0LT5ydWxlcywgJHRoaXMtPmZlYXR1cmVzLT52YWx1ZSkgOiAkcnVsZXNldC0+cnVsZXM7Cgl9CgoKCS8qKgoJICogU2hvdWxkIHRoZSBpbXBvcnQgYmUgc2tpcHBlZD8KCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW58bnVsbAoJICovCglwcml2YXRlIGZ1bmN0aW9uIFNraXAoJHBhdGgsICRlbnYpewoKCQkkcGF0aCA9IExlc3NfUGFyc2VyOjp3aW5QYXRoKHJlYWxwYXRoKCRwYXRoKSk7CgoJCWlmKCAkcGF0aCAmJiBMZXNzX1BhcnNlcjo6RmlsZVBhcnNlZCgkcGF0aCkgKXsKCgkJCWlmKCBpc3NldCgkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSkgKXsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgoJCQlyZXR1cm4gIWlzc2V0KCR0aGlzLT5vcHRpb25zWydtdWx0aXBsZSddKSAmJiAhJGVudi0+aW1wb3J0TXVsdGlwbGU7CgkJfQoKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Javascript.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBKYXZhc2NyaXB0CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0phdmFzY3JpcHQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICR0eXBlID0gJ0phdmFzY3JpcHQnOwoJcHVibGljICRlc2NhcGVkOwoJcHVibGljICRleHByZXNzaW9uOwoJcHVibGljICRpbmRleDsKCgkvKioKCSAqIEBwYXJhbSBib29sZWFuICRpbmRleAoJICogQHBhcmFtIGJvb2xlYW4gJGVzY2FwZWQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJpbmcsICRpbmRleCwgJGVzY2FwZWQpewoJCSR0aGlzLT5lc2NhcGVkID0gJGVzY2FwZWQ7CgkJJHRoaXMtPmV4cHJlc3Npb24gPSAkc3RyaW5nOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgpewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fub255bW91cygnLyogU29ycnksIGNhbiBub3QgZG8gSmF2YVNjcmlwdCBldmFsdWF0aW9uIGluIFBIUC4uLiA6KCAqLycpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Keyword.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBLZXl3b3JkCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0tleXdvcmQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkdHlwZSA9ICdLZXl3b3JkJzsKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpewoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgpewoJCXJldHVybiAkdGhpczsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoKCQlpZiggJHRoaXMtPnZhbHVlID09PSAnJScpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJJbnZhbGlkICUgd2l0aG91dCBudW1iZXIiKTsKCQl9CgoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnZhbHVlICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUoJG90aGVyKSB7CgkJaWYgKCRvdGhlciBpbnN0YW5jZW9mIExlc3NfVHJlZV9LZXl3b3JkKSB7CgkJCXJldHVybiAkb3RoZXItPnZhbHVlID09PSAkdGhpcy0+dmFsdWUgPyAwIDogMTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gLTE7CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Media.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBNZWRpYQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9NZWRpYSBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJGZlYXR1cmVzOwoJcHVibGljICRydWxlczsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCXB1YmxpYyAkaXNSZWZlcmVuY2VkOwoJcHVibGljICR0eXBlID0gJ01lZGlhJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlID0gYXJyYXkoKSwgJGZlYXR1cmVzID0gYXJyYXkoKSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKXsKCgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoKCQkkc2VsZWN0b3JzID0gJHRoaXMtPmVtcHR5U2VsZWN0b3JzKCk7CgoJCSR0aGlzLT5mZWF0dXJlcyA9IG5ldyBMZXNzX1RyZWVfVmFsdWUoJGZlYXR1cmVzKTsKCgkJJHRoaXMtPnJ1bGVzID0gYXJyYXkobmV3IExlc3NfVHJlZV9SdWxlc2V0KCRzZWxlY3RvcnMsICR2YWx1ZSkpOwoJCSR0aGlzLT5ydWxlc1swXS0+YWxsb3dJbXBvcnRzID0gdHJ1ZTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCSR0aGlzLT5mZWF0dXJlcyA9ICR2aXNpdG9yLT52aXNpdE9iaigkdGhpcy0+ZmVhdHVyZXMpOwoJCSR0aGlzLT5ydWxlcyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5ydWxlcyk7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCgkJJG91dHB1dC0+YWRkKCAnQG1lZGlhICcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCSR0aGlzLT5mZWF0dXJlcy0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJTGVzc19UcmVlOjpvdXRwdXRSdWxlc2V0KCAkb3V0cHV0LCAkdGhpcy0+cnVsZXMpOwoKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkZW52KSB7CgoJCSRtZWRpYSA9IG5ldyBMZXNzX1RyZWVfTWVkaWEoYXJyYXkoKSwgYXJyYXkoKSwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvICk7CgoJCSRzdHJpY3RNYXRoQnlwYXNzID0gZmFsc2U7CgkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0TWF0aCddID09PSBmYWxzZSkgewoJCQkkc3RyaWN0TWF0aEJ5cGFzcyA9IHRydWU7CgkJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0TWF0aCddID0gdHJ1ZTsKCQl9CgoJCSRtZWRpYS0+ZmVhdHVyZXMgPSAkdGhpcy0+ZmVhdHVyZXMtPmNvbXBpbGUoJGVudik7CgoJCWlmKCAkc3RyaWN0TWF0aEJ5cGFzcyApewoJCQlMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdE1hdGgnXSA9IGZhbHNlOwoJCX0KCgkJJGVudi0+bWVkaWFQYXRoW10gPSAkbWVkaWE7CgkJJGVudi0+bWVkaWFCbG9ja3NbXSA9ICRtZWRpYTsKCgkJYXJyYXlfdW5zaGlmdCgkZW52LT5mcmFtZXMsICR0aGlzLT5ydWxlc1swXSk7CgkJJG1lZGlhLT5ydWxlcyA9IGFycmF5KCR0aGlzLT5ydWxlc1swXS0+Y29tcGlsZSgkZW52KSk7CgkJYXJyYXlfc2hpZnQoJGVudi0+ZnJhbWVzKTsKCgkJYXJyYXlfcG9wKCRlbnYtPm1lZGlhUGF0aCk7CgoJCXJldHVybiAhJGVudi0+bWVkaWFQYXRoID8gJG1lZGlhLT5jb21waWxlVG9wKCRlbnYpIDogJG1lZGlhLT5jb21waWxlTmVzdGVkKCRlbnYpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2YXJpYWJsZSgkbmFtZSkgewoJCXJldHVybiAkdGhpcy0+cnVsZXNbMF0tPnZhcmlhYmxlKCRuYW1lKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZmluZCgkc2VsZWN0b3IpIHsKCQlyZXR1cm4gJHRoaXMtPnJ1bGVzWzBdLT5maW5kKCRzZWxlY3RvciwgJHRoaXMpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlbXB0eVNlbGVjdG9ycygpewoJCSRlbCA9IG5ldyBMZXNzX1RyZWVfRWxlbWVudCgnJywnJicsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCSRzZWxzID0gYXJyYXkoIG5ldyBMZXNzX1RyZWVfU2VsZWN0b3IoYXJyYXkoJGVsKSwgYXJyYXkoKSwgbnVsbCwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvKSApOwoJCSRzZWxzWzBdLT5tZWRpYUVtcHR5ID0gdHJ1ZTsKICAgICAgICByZXR1cm4gJHNlbHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hcmtSZWZlcmVuY2VkKCl7CgkJJHRoaXMtPnJ1bGVzWzBdLT5tYXJrUmVmZXJlbmNlZCgpOwoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSB0cnVlOwoJCUxlc3NfVHJlZTo6UmVmZXJlbmNlZEFycmF5KCR0aGlzLT5ydWxlc1swXS0+cnVsZXMpOwoJfQoKCS8vIGV2YWx0b3AKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlVG9wKCRlbnYpIHsKCQkkcmVzdWx0ID0gJHRoaXM7CgoJCWlmIChjb3VudCgkZW52LT5tZWRpYUJsb2NrcykgPiAxKSB7CgkJCSRzZWxlY3RvcnMgPSAkdGhpcy0+ZW1wdHlTZWxlY3RvcnMoKTsKCQkJJHJlc3VsdCA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldCgkc2VsZWN0b3JzLCAkZW52LT5tZWRpYUJsb2Nrcyk7CgkJCSRyZXN1bHQtPm11bHRpTWVkaWEgPSB0cnVlOwoJCX0KCgkJJGVudi0+bWVkaWFCbG9ja3MgPSBhcnJheSgpOwoJCSRlbnYtPm1lZGlhUGF0aCA9IGFycmF5KCk7CgoJCXJldHVybiAkcmVzdWx0OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlTmVzdGVkKCRlbnYpIHsKCQkkcGF0aCA9IGFycmF5X21lcmdlKCRlbnYtPm1lZGlhUGF0aCwgYXJyYXkoJHRoaXMpKTsKCgkJLy8gRXh0cmFjdCB0aGUgbWVkaWEtcXVlcnkgY29uZGl0aW9ucyBzZXBhcmF0ZWQgd2l0aCBgLGAgKE9SKS4KCQlmb3JlYWNoICgkcGF0aCBhcyAka2V5ID0+ICRwKSB7CgkJCSR2YWx1ZSA9ICRwLT5mZWF0dXJlcyBpbnN0YW5jZW9mIExlc3NfVHJlZV9WYWx1ZSA/ICRwLT5mZWF0dXJlcy0+dmFsdWUgOiAkcC0+ZmVhdHVyZXM7CgkJCSRwYXRoWyRrZXldID0gaXNfYXJyYXkoJHZhbHVlKSA/ICR2YWx1ZSA6IGFycmF5KCR2YWx1ZSk7CgkJfQoKCQkvLyBUcmFjZSBhbGwgcGVybXV0YXRpb25zIHRvIGdlbmVyYXRlIHRoZSByZXN1bHRpbmcgbWVkaWEtcXVlcnkuCgkJLy8KCQkvLyAoYSwgYiBhbmQgYykgd2l0aCBuZXN0ZWQgKGQsIGUpIC0+CgkJLy8JYSBhbmQgZAoJCS8vCWEgYW5kIGUKCQkvLwliIGFuZCBjIGFuZCBkCgkJLy8JYiBhbmQgYyBhbmQgZQoKCQkkcGVybXV0ZWQgPSAkdGhpcy0+cGVybXV0ZSgkcGF0aCk7CgkJJGV4cHJlc3Npb25zID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRwZXJtdXRlZCBhcyAkcGF0aCl7CgoJCQlmb3IoICRpPTAsICRsZW49Y291bnQoJHBhdGgpOyAkaSA8ICRsZW47ICRpKyspewoJCQkJJHBhdGhbJGldID0gTGVzc19QYXJzZXI6OmlzX21ldGhvZCgkcGF0aFskaV0sICd0b0NTUycpID8gJHBhdGhbJGldIDogbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoJHBhdGhbJGldKTsKCQkJfQoKCQkJZm9yKCAkaSA9IGNvdW50KCRwYXRoKSAtIDE7ICRpID4gMDsgJGktLSApewoJCQkJYXJyYXlfc3BsaWNlKCRwYXRoLCAkaSwgMCwgYXJyYXkobmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoJ2FuZCcpKSk7CgkJCX0KCgkJCSRleHByZXNzaW9uc1tdID0gbmV3IExlc3NfVHJlZV9FeHByZXNzaW9uKCRwYXRoKTsKCQl9CgkJJHRoaXMtPmZlYXR1cmVzID0gbmV3IExlc3NfVHJlZV9WYWx1ZSgkZXhwcmVzc2lvbnMpOwoKCgoJCS8vIEZha2UgYSB0cmVlLW5vZGUgdGhhdCBkb2Vzbid0IG91dHB1dCBhbnl0aGluZy4KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9SdWxlc2V0KGFycmF5KCksIGFycmF5KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwZXJtdXRlKCRhcnIpIHsKCQlpZiAoISRhcnIpCgkJCXJldHVybiBhcnJheSgpOwoKCQlpZiAoY291bnQoJGFycikgPT0gMSkKCQkJcmV0dXJuICRhcnJbMF07CgoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN0ID0gJHRoaXMtPnBlcm11dGUoYXJyYXlfc2xpY2UoJGFyciwgMSkpOwoJCWZvcmVhY2ggKCRyZXN0IGFzICRyKSB7CgkJCWZvcmVhY2ggKCRhcnJbMF0gYXMgJGEpIHsKCQkJCSRyZXN1bHRbXSA9IGFycmF5X21lcmdlKAoJCQkJCWlzX2FycmF5KCRhKSA/ICRhIDogYXJyYXkoJGEpLAoJCQkJCWlzX2FycmF5KCRyKSA/ICRyIDogYXJyYXkoJHIpCgkJCQkpOwoJCQl9CgkJfQoKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYnViYmxlU2VsZWN0b3JzKCRzZWxlY3RvcnMpIHsKCgkJaWYoICEkc2VsZWN0b3JzKSByZXR1cm47CgoJCSR0aGlzLT5ydWxlcyA9IGFycmF5KG5ldyBMZXNzX1RyZWVfUnVsZXNldCggJHNlbGVjdG9ycywgYXJyYXkoJHRoaXMtPnJ1bGVzWzBdKSkpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Mixin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Mixin/Call.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgpjbGFzcyBMZXNzX1RyZWVfTWl4aW5fQ2FsbCBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHNlbGVjdG9yOwoJcHVibGljICRhcmd1bWVudHM7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgoJcHVibGljICRpbXBvcnRhbnQ7CglwdWJsaWMgJHR5cGUgPSAnTWl4aW5DYWxsJzsKCgkvKioKCSAqIGxlc3MuanM6IHRyZWUubWl4aW4uQ2FsbAoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRlbGVtZW50cywgJGFyZ3MsICRpbmRleCwgJGN1cnJlbnRGaWxlSW5mbywgJGltcG9ydGFudCA9IGZhbHNlKXsKCQkkdGhpcy0+c2VsZWN0b3IgPSBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCRlbGVtZW50cyk7CgkJJHRoaXMtPmFyZ3VtZW50cyA9ICRhcmdzOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCQkkdGhpcy0+aW1wb3J0YW50ID0gJGltcG9ydGFudDsKCX0KCgkvL2Z1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcil7CgkvLwkkdGhpcy0+c2VsZWN0b3IgPSAkdmlzaXRvci0+dmlzaXQoJHRoaXMtPnNlbGVjdG9yKTsKCS8vCSR0aGlzLT5hcmd1bWVudHMgPSAkdmlzaXRvci0+dmlzaXQoJHRoaXMtPmFyZ3VtZW50cyk7CgkvL30KCgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgoJCSRydWxlcyA9IGFycmF5KCk7CgkJJG1hdGNoID0gZmFsc2U7CgkJJGlzT25lRm91bmQgPSBmYWxzZTsKCQkkY2FuZGlkYXRlcyA9IGFycmF5KCk7CgkJJGRlZmF1bHRVc2VkID0gZmFsc2U7CgkJJGNvbmRpdGlvblJlc3VsdCA9IGFycmF5KCk7CgoJCSRhcmdzID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR0aGlzLT5hcmd1bWVudHMgYXMgJGEpewoJCQkkYXJnc1tdID0gYXJyYXkoJ25hbWUnPT4gJGFbJ25hbWUnXSwgJ3ZhbHVlJyA9PiAkYVsndmFsdWUnXS0+Y29tcGlsZSgkZW52KSApOwoJCX0KCgkJZm9yZWFjaCgkZW52LT5mcmFtZXMgYXMgJGZyYW1lKXsKCgkJCSRtaXhpbnMgPSAkZnJhbWUtPmZpbmQoJHRoaXMtPnNlbGVjdG9yKTsKCgkJCWlmKCAhJG1peGlucyApewoJCQkJY29udGludWU7CgkJCX0KCgkJCSRpc09uZUZvdW5kID0gdHJ1ZTsKCQkJJGRlZk5vbmUgPSAwOwoJCQkkZGVmVHJ1ZSA9IDE7CgkJCSRkZWZGYWxzZSA9IDI7CgoJCQkvLyBUbyBtYWtlIGBkZWZhdWx0KClgIGZ1bmN0aW9uIGluZGVwZW5kZW50IG9mIGRlZmluaXRpb24gb3JkZXIgd2UgaGF2ZSB0d28gInN1YnBhc3NlcyIgaGVyZS4KCQkJLy8gQXQgZmlyc3Qgd2UgZXZhbHVhdGUgZWFjaCBndWFyZCAqdHdpY2UqICh3aXRoIGBkZWZhdWx0KCkgPT0gdHJ1ZWAgYW5kIGBkZWZhdWx0KCkgPT0gZmFsc2VgKSwKCQkJLy8gYW5kIGJ1aWxkIGNhbmRpZGF0ZSBsaXN0IHdpdGggY29ycmVzcG9uZGluZyBmbGFncy4gVGhlbiwgd2hlbiB3ZSBrbm93IGFsbCBwb3NzaWJsZSBtYXRjaGVzLAoJCQkvLyB3ZSBtYWtlIGEgZmluYWwgZGVjaXNpb24uCgoJCQkkbWl4aW5zX2xlbiA9IGNvdW50KCRtaXhpbnMpOwoJCQlmb3IoICRtID0gMDsgJG0gPCAkbWl4aW5zX2xlbjsgJG0rKyApewoJCQkJJG1peGluID0gJG1peGluc1skbV07CgoJCQkJaWYoICR0aGlzLT5Jc1JlY3Vyc2l2ZSggJGVudiwgJG1peGluICkgKXsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQlpZiggJG1peGluLT5tYXRjaEFyZ3MoJGFyZ3MsICRlbnYpICl7CgoJCQkJCSRjYW5kaWRhdGUgPSBhcnJheSgnbWl4aW4nID0+ICRtaXhpbiwgJ2dyb3VwJyA9PiAkZGVmTm9uZSk7CgoJCQkJCWlmKCAkbWl4aW4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldCApewoKCQkJCQkJZm9yKCAkZiA9IDA7ICRmIDwgMjsgJGYrKyApewoJCQkJCQkJTGVzc19UcmVlX0RlZmF1bHRGdW5jOjp2YWx1ZSgkZik7CgkJCQkJCQkkY29uZGl0aW9uUmVzdWx0WyRmXSA9ICRtaXhpbi0+bWF0Y2hDb25kaXRpb24oICRhcmdzLCAkZW52KTsKCQkJCQkJfQoJCQkJCQlpZiggJGNvbmRpdGlvblJlc3VsdFswXSB8fCAkY29uZGl0aW9uUmVzdWx0WzFdICl7CgkJCQkJCQlpZiggJGNvbmRpdGlvblJlc3VsdFswXSAhPSAkY29uZGl0aW9uUmVzdWx0WzFdICl7CgkJCQkJCQkJJGNhbmRpZGF0ZVsnZ3JvdXAnXSA9ICRjb25kaXRpb25SZXN1bHRbMV0gPyAkZGVmVHJ1ZSA6ICRkZWZGYWxzZTsKCQkJCQkJCX0KCgkJCQkJCQkkY2FuZGlkYXRlc1tdID0gJGNhbmRpZGF0ZTsKCQkJCQkJfQoJCQkJCX1lbHNlewoJCQkJCQkkY2FuZGlkYXRlc1tdID0gJGNhbmRpZGF0ZTsKCQkJCQl9CgoJCQkJCSRtYXRjaCA9IHRydWU7CgkJCQl9CgkJCX0KCgkJCUxlc3NfVHJlZV9EZWZhdWx0RnVuYzo6cmVzZXQoKTsKCgoJCQkkY291bnQgPSBhcnJheSgwLCAwLCAwKTsKCQkJZm9yKCAkbSA9IDA7ICRtIDwgY291bnQoJGNhbmRpZGF0ZXMpOyAkbSsrICl7CgkJCQkkY291bnRbICRjYW5kaWRhdGVzWyRtXVsnZ3JvdXAnXSBdKys7CgkJCX0KCgkJCWlmKCAkY291bnRbJGRlZk5vbmVdID4gMCApewoJCQkJJGRlZmF1bHRSZXN1bHQgPSAkZGVmRmFsc2U7CgkJCX0gZWxzZSB7CgkJCQkkZGVmYXVsdFJlc3VsdCA9ICRkZWZUcnVlOwoJCQkJaWYoICgkY291bnRbJGRlZlRydWVdICsgJGNvdW50WyRkZWZGYWxzZV0pID4gMSApewoJCQkJCXRocm93IG5ldyBFeGNlcHRpb24oICdBbWJpZ3VvdXMgdXNlIG9mIGBkZWZhdWx0KClgIGZvdW5kIHdoZW4gbWF0Y2hpbmcgZm9yIGAnIC4gJHRoaXMtPmZvcm1hdCgkYXJncykgLiAnYCcgKTsKCQkJCX0KCQkJfQoKCgkJCSRjYW5kaWRhdGVzX2xlbmd0aCA9IGNvdW50KCRjYW5kaWRhdGVzKTsKCQkJJGxlbmd0aF8xID0gKCRjYW5kaWRhdGVzX2xlbmd0aCA9PSAxKTsKCgkJCWZvciggJG0gPSAwOyAkbSA8ICRjYW5kaWRhdGVzX2xlbmd0aDsgJG0rKyl7CgkJCQkkY2FuZGlkYXRlID0gJGNhbmRpZGF0ZXNbJG1dWydncm91cCddOwoJCQkJaWYoICgkY2FuZGlkYXRlID09PSAkZGVmTm9uZSkgfHwgKCRjYW5kaWRhdGUgPT09ICRkZWZhdWx0UmVzdWx0KSApewoJCQkJCXRyeXsKCQkJCQkJJG1peGluID0gJGNhbmRpZGF0ZXNbJG1dWydtaXhpbiddOwoJCQkJCQlpZiggISgkbWl4aW4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfTWl4aW5fRGVmaW5pdGlvbikgKXsKCQkJCQkJCSRtaXhpbiA9IG5ldyBMZXNzX1RyZWVfTWl4aW5fRGVmaW5pdGlvbignJywgYXJyYXkoKSwgJG1peGluLT5ydWxlcywgbnVsbCwgZmFsc2UpOwoJCQkJCQkJJG1peGluLT5vcmlnaW5hbFJ1bGVzZXQgPSAkbWl4aW5zWyRtXS0+b3JpZ2luYWxSdWxlc2V0OwoJCQkJCQl9CgkJCQkJCSRydWxlcyA9IGFycmF5X21lcmdlKCRydWxlcywgJG1peGluLT5ldmFsQ2FsbCgkZW52LCAkYXJncywgJHRoaXMtPmltcG9ydGFudCktPnJ1bGVzKTsKCQkJCQl9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKCQkJCQkJLy90aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJGUtPmdldE1lc3NhZ2UoKSwgJGUtPmluZGV4LCBudWxsLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydmaWxlbmFtZSddKTsKCQkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCRlLT5nZXRNZXNzYWdlKCksIG51bGwsIG51bGwsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJaWYoICRtYXRjaCApewoJCQkJaWYoICEkdGhpcy0+Y3VycmVudEZpbGVJbmZvIHx8ICFpc3NldCgkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSkgfHwgISR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddICl7CgkJCQkJTGVzc19UcmVlOjpSZWZlcmVuY2VkQXJyYXkoJHJ1bGVzKTsKCQkJCX0KCgkJCQlyZXR1cm4gJHJ1bGVzOwoJCQl9CgkJfQoKCQlpZiggJGlzT25lRm91bmQgKXsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdObyBtYXRjaGluZyBkZWZpbml0aW9uIHdhcyBmb3VuZCBmb3IgYCcuJHRoaXMtPkZvcm1hdCggJGFyZ3MgKS4nYCcsIG51bGwsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyk7CgoJCX1lbHNlewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIodHJpbSgkdGhpcy0+c2VsZWN0b3ItPnRvQ1NTKCkpIC4gIiBpcyB1bmRlZmluZWQgaW4gIi4kdGhpcy0+Y3VycmVudEZpbGVJbmZvWydmaWxlbmFtZSddLCBudWxsLCAkdGhpcy0+aW5kZXgpOwoJCX0KCgl9CgoJLyoqCgkgKiBGb3JtYXQgdGhlIGFyZ3MgZm9yIHVzZSBpbiBleGNlcHRpb24gbWVzc2FnZXMKCSAqCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gRm9ybWF0KCRhcmdzKXsKCQkkbWVzc2FnZSA9IGFycmF5KCk7CgkJaWYoICRhcmdzICl7CgkJCWZvcmVhY2goJGFyZ3MgYXMgJGEpewoJCQkJJGFyZ1ZhbHVlID0gJyc7CgkJCQlpZiggJGFbJ25hbWUnXSApewoJCQkJCSRhcmdWYWx1ZSAuPSAkYVsnbmFtZSddIC4gJzonOwoJCQkJfQoJCQkJaWYoIGlzX29iamVjdCgkYVsndmFsdWUnXSkgKXsKCQkJCQkkYXJnVmFsdWUgLj0gJGFbJ3ZhbHVlJ10tPnRvQ1NTKCk7CgkJCQl9ZWxzZXsKCQkJCQkkYXJnVmFsdWUgLj0gJz8/Pyc7CgkJCQl9CgkJCQkkbWVzc2FnZVtdID0gJGFyZ1ZhbHVlOwoJCQl9CgkJfQoJCXJldHVybiBpbXBsb2RlKCcsICcsJG1lc3NhZ2UpOwoJfQoKCgkvKioKCSAqIEFyZSB3ZSBpbiBhIHJlY3Vyc2l2ZSBtaXhpbiBjYWxsPwoJICoKCSAqIEByZXR1cm4gYm9vbAoJICovCglwcml2YXRlIGZ1bmN0aW9uIElzUmVjdXJzaXZlKCAkZW52LCAkbWl4aW4gKXsKCgkJZm9yZWFjaCgkZW52LT5mcmFtZXMgYXMgJHJlY3VyX2ZyYW1lKXsKCQkJaWYoICEoJG1peGluIGluc3RhbmNlb2YgTGVzc19UcmVlX01peGluX0RlZmluaXRpb24pICl7CgoJCQkJaWYoICRtaXhpbiA9PT0gJHJlY3VyX2ZyYW1lICl7CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgoJCQkJaWYoIGlzc2V0KCRyZWN1cl9mcmFtZS0+b3JpZ2luYWxSdWxlc2V0KSAmJiAkbWl4aW4tPnJ1bGVzZXRfaWQgPT09ICRyZWN1cl9mcmFtZS0+b3JpZ2luYWxSdWxlc2V0ICl7CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCn0KCgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Mixin/Definition.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uIGV4dGVuZHMgTGVzc19UcmVlX1J1bGVzZXR7CglwdWJsaWMgJG5hbWU7CglwdWJsaWMgJHNlbGVjdG9yczsKCXB1YmxpYyAkcGFyYW1zOwoJcHVibGljICRhcml0eQkJPSAwOwoJcHVibGljICRydWxlczsKCXB1YmxpYyAkbG9va3VwcwkJPSBhcnJheSgpOwoJcHVibGljICRyZXF1aXJlZAk9IDA7CglwdWJsaWMgJGZyYW1lcwkJPSBhcnJheSgpOwoJcHVibGljICRjb25kaXRpb247CglwdWJsaWMgJHZhcmlhZGljOwoJcHVibGljICR0eXBlCQk9ICdNaXhpbkRlZmluaXRpb24nOwoKCgkvLyBsZXNzLmpzIDogL2xpYi9sZXNzL3RyZWUvbWl4aW4uanMgOiB0cmVlLm1peGluLkRlZmluaXRpb24KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwgJHBhcmFtcywgJHJ1bGVzLCAkY29uZGl0aW9uLCAkdmFyaWFkaWMgPSBmYWxzZSwgJGZyYW1lcyA9IGFycmF5KCkgKXsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCSR0aGlzLT5zZWxlY3RvcnMgPSBhcnJheShuZXcgTGVzc19UcmVlX1NlbGVjdG9yKGFycmF5KCBuZXcgTGVzc19UcmVlX0VsZW1lbnQobnVsbCwgJG5hbWUpKSkpOwoKCQkkdGhpcy0+cGFyYW1zID0gJHBhcmFtczsKCQkkdGhpcy0+Y29uZGl0aW9uID0gJGNvbmRpdGlvbjsKCQkkdGhpcy0+dmFyaWFkaWMgPSAkdmFyaWFkaWM7CgkJJHRoaXMtPnJ1bGVzID0gJHJ1bGVzOwoKCQlpZiggJHBhcmFtcyApewoJCQkkdGhpcy0+YXJpdHkgPSBjb3VudCgkcGFyYW1zKTsKCQkJZm9yZWFjaCggJHBhcmFtcyBhcyAkcCApewoJCQkJaWYgKCEgaXNzZXQoJHBbJ25hbWUnXSkgfHwgKCRwWyduYW1lJ10gJiYgIWlzc2V0KCRwWyd2YWx1ZSddKSkpIHsKCQkJCQkkdGhpcy0+cmVxdWlyZWQrKzsKCQkJCX0KCQkJfQoJCX0KCgkJJHRoaXMtPmZyYW1lcyA9ICRmcmFtZXM7CgkJJHRoaXMtPlNldFJ1bGVzZXRJbmRleCgpOwoJfQoKCgoJLy9mdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICl7CgkvLwkkdGhpcy0+cGFyYW1zID0gJHZpc2l0b3ItPnZpc2l0KCR0aGlzLT5wYXJhbXMpOwoJLy8JJHRoaXMtPnJ1bGVzID0gJHZpc2l0b3ItPnZpc2l0KCR0aGlzLT5ydWxlcyk7CgkvLwkkdGhpcy0+Y29uZGl0aW9uID0gJHZpc2l0b3ItPnZpc2l0KCR0aGlzLT5jb25kaXRpb24pOwoJLy99CgoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUygpewoJCXJldHVybiAnJzsKCX0KCgkvLyBsZXNzLmpzIDogL2xpYi9sZXNzL3RyZWUvbWl4aW4uanMgOiB0cmVlLm1peGluLkRlZmluaXRpb24uZXZhbFBhcmFtcwoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGVQYXJhbXMoJGVudiwgJG1peGluRnJhbWVzLCAkYXJncyA9IGFycmF5KCkgLCAmJGV2YWxkQXJndW1lbnRzID0gYXJyYXkoKSApewoJCSRmcmFtZSA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldChudWxsLCBhcnJheSgpKTsKCQkkcGFyYW1zID0gJHRoaXMtPnBhcmFtczsKCQkkbWl4aW5FbnYgPSBudWxsOwoJCSRhcmdzTGVuZ3RoID0gMDsKCgkJaWYoICRhcmdzICl7CgkJCSRhcmdzTGVuZ3RoID0gY291bnQoJGFyZ3MpOwoJCQlmb3IoJGkgPSAwOyAkaSA8ICRhcmdzTGVuZ3RoOyAkaSsrICl7CgkJCQkkYXJnID0gJGFyZ3NbJGldOwoKCQkJCWlmKCAkYXJnICYmICRhcmdbJ25hbWUnXSApewoJCQkJCSRpc05hbWVkRm91bmQgPSBmYWxzZTsKCgkJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRqID0+ICRwYXJhbSl7CgkJCQkJCWlmKCAhaXNzZXQoJGV2YWxkQXJndW1lbnRzWyRqXSkgJiYgJGFyZ1snbmFtZSddID09PSAkcGFyYW1zWyRqXVsnbmFtZSddKSB7CgkJCQkJCQkkZXZhbGRBcmd1bWVudHNbJGpdID0gJGFyZ1sndmFsdWUnXS0+Y29tcGlsZSgkZW52KTsKCQkJCQkJCWFycmF5X3Vuc2hpZnQoJGZyYW1lLT5ydWxlcywgbmV3IExlc3NfVHJlZV9SdWxlKCAkYXJnWyduYW1lJ10sICRhcmdbJ3ZhbHVlJ10tPmNvbXBpbGUoJGVudikgKSApOwoJCQkJCQkJJGlzTmFtZWRGb3VuZCA9IHRydWU7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCX0KCQkJCQlpZiAoJGlzTmFtZWRGb3VuZCkgewoJCQkJCQlhcnJheV9zcGxpY2UoJGFyZ3MsICRpLCAxKTsKCQkJCQkJJGktLTsKCQkJCQkJJGFyZ3NMZW5ndGgtLTsKCQkJCQkJY29udGludWU7CgkJCQkJfSBlbHNlIHsKCQkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJOYW1lZCBhcmd1bWVudCBmb3IgIiAuICR0aGlzLT5uYW1lIC4nICcuJGFyZ3NbJGldWyduYW1lJ10gLiAnIG5vdCBmb3VuZCcpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJJGFyZ0luZGV4ID0gMDsKCQlmb3JlYWNoKCRwYXJhbXMgYXMgJGkgPT4gJHBhcmFtKXsKCgkJCWlmICggaXNzZXQoJGV2YWxkQXJndW1lbnRzWyRpXSkgKXsgY29udGludWU7IH0KCgkJCSRhcmcgPSBudWxsOwoJCQlpZiggaXNzZXQoJGFyZ3NbJGFyZ0luZGV4XSkgKXsKCQkJCSRhcmcgPSAkYXJnc1skYXJnSW5kZXhdOwoJCQl9CgoJCQlpZiAoaXNzZXQoJHBhcmFtWyduYW1lJ10pICYmICRwYXJhbVsnbmFtZSddKSB7CgoJCQkJaWYoIGlzc2V0KCRwYXJhbVsndmFyaWFkaWMnXSkgKXsKCQkJCQkkdmFyYXJncyA9IGFycmF5KCk7CgkJCQkJZm9yICgkaiA9ICRhcmdJbmRleDsgJGogPCAkYXJnc0xlbmd0aDsgJGorKykgewoJCQkJCQkkdmFyYXJnc1tdID0gJGFyZ3NbJGpdWyd2YWx1ZSddLT5jb21waWxlKCRlbnYpOwoJCQkJCX0KCQkJCQkkZXhwcmVzc2lvbiA9IG5ldyBMZXNzX1RyZWVfRXhwcmVzc2lvbigkdmFyYXJncyk7CgkJCQkJYXJyYXlfdW5zaGlmdCgkZnJhbWUtPnJ1bGVzLCBuZXcgTGVzc19UcmVlX1J1bGUoJHBhcmFtWyduYW1lJ10sICRleHByZXNzaW9uLT5jb21waWxlKCRlbnYpKSk7CgkJCQl9ZWxzZXsKCQkJCQkkdmFsID0gKCRhcmcgJiYgJGFyZ1sndmFsdWUnXSkgPyAkYXJnWyd2YWx1ZSddIDogZmFsc2U7CgoJCQkJCWlmICgkdmFsKSB7CgkJCQkJCSR2YWwgPSAkdmFsLT5jb21waWxlKCRlbnYpOwoJCQkJCX0gZWxzZSBpZiAoIGlzc2V0KCRwYXJhbVsndmFsdWUnXSkgKSB7CgoJCQkJCQlpZiggISRtaXhpbkVudiApewoJCQkJCQkJJG1peGluRW52ID0gbmV3IExlc3NfRW52aXJvbm1lbnQoKTsKCQkJCQkJCSRtaXhpbkVudi0+ZnJhbWVzID0gYXJyYXlfbWVyZ2UoIGFycmF5KCRmcmFtZSksICRtaXhpbkZyYW1lcyk7CgkJCQkJCX0KCgkJCQkJCSR2YWwgPSAkcGFyYW1bJ3ZhbHVlJ10tPmNvbXBpbGUoJG1peGluRW52KTsKCQkJCQkJJGZyYW1lLT5yZXNldENhY2hlKCk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciAiIC4gJHRoaXMtPm5hbWUgLiAiICgiIC4gJGFyZ3NMZW5ndGggLiAnIGZvciAnIC4gJHRoaXMtPmFyaXR5IC4gIikiKTsKCQkJCQl9CgoJCQkJCWFycmF5X3Vuc2hpZnQoJGZyYW1lLT5ydWxlcywgbmV3IExlc3NfVHJlZV9SdWxlKCRwYXJhbVsnbmFtZSddLCAkdmFsKSk7CgkJCQkJJGV2YWxkQXJndW1lbnRzWyRpXSA9ICR2YWw7CgkJCQl9CgkJCX0KCgkJCWlmICggaXNzZXQoJHBhcmFtWyd2YXJpYWRpYyddKSAmJiAkYXJncykgewoJCQkJZm9yICgkaiA9ICRhcmdJbmRleDsgJGogPCAkYXJnc0xlbmd0aDsgJGorKykgewoJCQkJCSRldmFsZEFyZ3VtZW50c1skal0gPSAkYXJnc1skal1bJ3ZhbHVlJ10tPmNvbXBpbGUoJGVudik7CgkJCQl9CgkJCX0KCQkJJGFyZ0luZGV4Kys7CgkJfQoKCQlrc29ydCgkZXZhbGRBcmd1bWVudHMpOwoJCSRldmFsZEFyZ3VtZW50cyA9IGFycmF5X3ZhbHVlcygkZXZhbGRBcmd1bWVudHMpOwoKCQlyZXR1cm4gJGZyYW1lOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpIHsKCQlpZiggJHRoaXMtPmZyYW1lcyApewoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uKCR0aGlzLT5uYW1lLCAkdGhpcy0+cGFyYW1zLCAkdGhpcy0+cnVsZXMsICR0aGlzLT5jb25kaXRpb24sICR0aGlzLT52YXJpYWRpYywgJHRoaXMtPmZyYW1lcyApOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uKCR0aGlzLT5uYW1lLCAkdGhpcy0+cGFyYW1zLCAkdGhpcy0+cnVsZXMsICR0aGlzLT5jb25kaXRpb24sICR0aGlzLT52YXJpYWRpYywgJGVudi0+ZnJhbWVzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGV2YWxDYWxsKCRlbnYsICRhcmdzID0gTlVMTCwgJGltcG9ydGFudCA9IE5VTEwpIHsKCgkJTGVzc19FbnZpcm9ubWVudDo6JG1peGluX3N0YWNrKys7CgoJCSRfYXJndW1lbnRzID0gYXJyYXkoKTsKCgkJaWYoICR0aGlzLT5mcmFtZXMgKXsKCQkJJG1peGluRnJhbWVzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmZyYW1lcywgJGVudi0+ZnJhbWVzKTsKCQl9ZWxzZXsKCQkJJG1peGluRnJhbWVzID0gJGVudi0+ZnJhbWVzOwoJCX0KCgkJJGZyYW1lID0gJHRoaXMtPmNvbXBpbGVQYXJhbXMoJGVudiwgJG1peGluRnJhbWVzLCAkYXJncywgJF9hcmd1bWVudHMpOwoKCQkkZXggPSBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oJF9hcmd1bWVudHMpOwoJCWFycmF5X3Vuc2hpZnQoJGZyYW1lLT5ydWxlcywgbmV3IExlc3NfVHJlZV9SdWxlKCdAYXJndW1lbnRzJywgJGV4LT5jb21waWxlKCRlbnYpKSk7CgoKCQkkcnVsZXNldCA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldChudWxsLCAkdGhpcy0+cnVsZXMpOwoJCSRydWxlc2V0LT5vcmlnaW5hbFJ1bGVzZXQgPSAkdGhpcy0+cnVsZXNldF9pZDsKCgoJCSRydWxlU2V0RW52ID0gbmV3IExlc3NfRW52aXJvbm1lbnQoKTsKCQkkcnVsZVNldEVudi0+ZnJhbWVzID0gYXJyYXlfbWVyZ2UoIGFycmF5KCR0aGlzLCAkZnJhbWUpLCAkbWl4aW5GcmFtZXMgKTsKCQkkcnVsZXNldCA9ICRydWxlc2V0LT5jb21waWxlKCAkcnVsZVNldEVudiApOwoKCQlpZiggJGltcG9ydGFudCApewoJCQkkcnVsZXNldCA9ICRydWxlc2V0LT5tYWtlSW1wb3J0YW50KCk7CgkJfQoKCQlMZXNzX0Vudmlyb25tZW50OjokbWl4aW5fc3RhY2stLTsKCgkJcmV0dXJuICRydWxlc2V0OwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gbWF0Y2hDb25kaXRpb24oJGFyZ3MsICRlbnYpIHsKCgkJaWYoICEkdGhpcy0+Y29uZGl0aW9uICl7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJLy8gc2V0IGFycmF5IHRvIHByZXZlbnQgZXJyb3Igb24gYXJyYXlfbWVyZ2UKCQlpZighaXNfYXJyYXkoJHRoaXMtPmZyYW1lcykpIHsKICAgICAgICAgICAgICR0aGlzLT5mcmFtZXMgPSBhcnJheSgpOwogICAgICAgIH0KCgkJJGZyYW1lID0gJHRoaXMtPmNvbXBpbGVQYXJhbXMoJGVudiwgYXJyYXlfbWVyZ2UoJHRoaXMtPmZyYW1lcywkZW52LT5mcmFtZXMpLCAkYXJncyApOwoKCQkkY29tcGlsZV9lbnYgPSBuZXcgTGVzc19FbnZpcm9ubWVudCgpOwoJCSRjb21waWxlX2Vudi0+ZnJhbWVzID0gYXJyYXlfbWVyZ2UoCgkJCQlhcnJheSgkZnJhbWUpCQkvLyB0aGUgcGFyYW1ldGVyIHZhcmlhYmxlcwoJCQkJLCAkdGhpcy0+ZnJhbWVzCQkvLyB0aGUgcGFyZW50IG5hbWVzcGFjZS9taXhpbiBmcmFtZXMKCQkJCSwgJGVudi0+ZnJhbWVzCQkvLyB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBmcmFtZXMKCQkJKTsKCgkJJGNvbXBpbGVfZW52LT5mdW5jdGlvbnMgPSAkZW52LT5mdW5jdGlvbnM7CgoJCXJldHVybiAoYm9vbCkkdGhpcy0+Y29uZGl0aW9uLT5jb21waWxlKCRjb21waWxlX2Vudik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hdGNoQXJncygkYXJncywgJGVudiA9IE5VTEwpewoJCSRhcmdzTGVuZ3RoID0gY291bnQoJGFyZ3MpOwoKCQlpZiggISR0aGlzLT52YXJpYWRpYyApewoJCQlpZiggJGFyZ3NMZW5ndGggPCAkdGhpcy0+cmVxdWlyZWQgKXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQlpZiggJGFyZ3NMZW5ndGggPiBjb3VudCgkdGhpcy0+cGFyYW1zKSApewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfWVsc2V7CgkJCWlmKCAkYXJnc0xlbmd0aCA8ICgkdGhpcy0+cmVxdWlyZWQgLSAxKSl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJCSRsZW4gPSBtaW4oJGFyZ3NMZW5ndGgsICR0aGlzLT5hcml0eSk7CgoJCWZvciggJGkgPSAwOyAkaSA8ICRsZW47ICRpKysgKXsKCQkJaWYoICFpc3NldCgkdGhpcy0+cGFyYW1zWyRpXVsnbmFtZSddKSAmJiAhaXNzZXQoJHRoaXMtPnBhcmFtc1skaV1bJ3ZhcmlhZGljJ10pICl7CgkJCQlpZiggJGFyZ3NbJGldWyd2YWx1ZSddLT5jb21waWxlKCRlbnYpLT50b0NTUygpICE9ICR0aGlzLT5wYXJhbXNbJGldWyd2YWx1ZSddLT5jb21waWxlKCRlbnYpLT50b0NTUygpICl7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Mixin/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/NameValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBIHNpbXBsZSBjc3MgbmFtZS12YWx1ZSBwYWlyCiAqIGV4OiB3aWR0aDoxMDBweDsKICoKICogSW4gYm9vdHN0cmFwLCB0aGVyZSBhcmUgYWJvdXQgNjAwLTEsMDAwIHNpbXBsZSBuYW1lLXZhbHVlIHBhaXJzIChkZXBlbmRpbmcgb24gaG93IGZvcmdpdmluZyB0aGUgbWF0Y2ggaXMpIC12cy0gNiwwMjAgZHluYW1pYyBydWxlcyAoTGVzc19UcmVlX1J1bGUpCiAqIFVzaW5nIHRoZSBuYW1lLXZhbHVlIG9iamVjdCBjYW4gc3BlZWQgdXAgYm9vdHN0cmFwIGNvbXBpbGF0aW9uIHNsaWdodGx5LCBidXQgaXQgYnJlYWtzIGNvbG9yIGtleXdvcmQgaW50ZXJwcmV0YXRpb246IGNvbG9yOnJlZCAtPiBjb2xvcjojRkYwMDAwOwogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9OYW1lVmFsdWUgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICRuYW1lOwoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCXB1YmxpYyAkdHlwZSA9ICdOYW1lVmFsdWUnOwoJcHVibGljICRpbXBvcnRhbnQgPSAnJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5hbWUsICR2YWx1ZSA9IG51bGwsICRpbmRleCA9IG51bGwsICRjdXJyZW50RmlsZUluZm8gPSBudWxsICl7CgkJJHRoaXMtPm5hbWUgPSAkbmFtZTsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCgkJJG91dHB1dC0+YWRkKAoJCQkkdGhpcy0+bmFtZQoJCQkuIExlc3NfRW52aXJvbm1lbnQ6OiRfb3V0cHV0TWFwWyc6ICddCgkJCS4gJHRoaXMtPnZhbHVlCgkJCS4gJHRoaXMtPmltcG9ydGFudAoJCQkuICgoKExlc3NfRW52aXJvbm1lbnQ6OiRsYXN0UnVsZSAmJiBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10pKSA/ICIiIDogIjsiKQoJCQksICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUgKCRlbnYpewoJCXJldHVybiAkdGhpczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbWFrZUltcG9ydGFudCgpewoJCSRuZXcgPSBuZXcgTGVzc19UcmVlX05hbWVWYWx1ZSgkdGhpcy0+bmFtZSwgJHRoaXMtPnZhbHVlLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJCSRuZXctPmltcG9ydGFudCA9ICcgIWltcG9ydGFudCc7CgkJcmV0dXJuICRuZXc7Cgl9CgoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Negative.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBOZWdhdGl2ZQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9OZWdhdGl2ZSBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHZhbHVlOwoJcHVibGljICR0eXBlID0gJ05lZ2F0aXZlJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5vZGUpewoJCSR0aGlzLT52YWx1ZSA9ICRub2RlOwoJfQoKCS8vZnVuY3Rpb24gYWNjZXB0KCR2aXNpdG9yKSB7CgkvLwkkdGhpcy0+dmFsdWUgPSAkdmlzaXRvci0+dmlzaXQoJHRoaXMtPnZhbHVlKTsKCS8vfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAnLScgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpIHsKCQlpZiggTGVzc19FbnZpcm9ubWVudDo6aXNNYXRoT24oKSApewoJCQkkcmV0ID0gbmV3IExlc3NfVHJlZV9PcGVyYXRpb24oJyonLCBhcnJheSggbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oLTEpLCAkdGhpcy0+dmFsdWUgKSApOwoJCQlyZXR1cm4gJHJldC0+Y29tcGlsZSgkZW52KTsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfTmVnYXRpdmUoICR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KSApOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Operation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBPcGVyYXRpb24KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfT3BlcmF0aW9uIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkb3A7CglwdWJsaWMgJG9wZXJhbmRzOwoJcHVibGljICRpc1NwYWNlZDsKCXB1YmxpYyAkdHlwZSA9ICdPcGVyYXRpb24nOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkb3AKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvcCwgJG9wZXJhbmRzLCAkaXNTcGFjZWQgPSBmYWxzZSl7CgkJJHRoaXMtPm9wID0gdHJpbSgkb3ApOwoJCSR0aGlzLT5vcGVyYW5kcyA9ICRvcGVyYW5kczsKCQkkdGhpcy0+aXNTcGFjZWQgPSAkaXNTcGFjZWQ7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcikgewoJCSR0aGlzLT5vcGVyYW5kcyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5vcGVyYW5kcyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgkJJGEgPSAkdGhpcy0+b3BlcmFuZHNbMF0tPmNvbXBpbGUoJGVudik7CgkJJGIgPSAkdGhpcy0+b3BlcmFuZHNbMV0tPmNvbXBpbGUoJGVudik7CgoKCQlpZiggTGVzc19FbnZpcm9ubWVudDo6aXNNYXRoT24oKSApewoKCQkJaWYoICRhIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiAmJiAkYiBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApewoJCQkJJGEgPSAkYS0+dG9Db2xvcigpOwoKCQkJfWVsc2VpZiggJGIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICYmICRhIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICl7CgkJCQkkYiA9ICRiLT50b0NvbG9yKCk7CgoJCQl9CgoJCQlpZiggIW1ldGhvZF9leGlzdHMoJGEsJ29wZXJhdGUnKSApewoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJPcGVyYXRpb24gb24gYW4gaW52YWxpZCB0eXBlIik7CgkJCX0KCgkJCXJldHVybiAkYS0+b3BlcmF0ZSggJHRoaXMtPm9wLCAkYik7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9PcGVyYXRpb24oJHRoaXMtPm9wLCBhcnJheSgkYSwgJGIpLCAkdGhpcy0+aXNTcGFjZWQgKTsKCX0KCgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkdGhpcy0+b3BlcmFuZHNbMF0tPmdlbkNTUyggJG91dHB1dCApOwoJCWlmKCAkdGhpcy0+aXNTcGFjZWQgKXsKCQkJJG91dHB1dC0+YWRkKCAiICIgKTsKCQl9CgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+b3AgKTsKCQlpZiggJHRoaXMtPmlzU3BhY2VkICl7CgkJCSRvdXRwdXQtPmFkZCggJyAnICk7CgkJfQoJCSR0aGlzLT5vcGVyYW5kc1sxXS0+Z2VuQ1NTKCAkb3V0cHV0ICk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Paren.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBQYXJlbgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9QYXJlbiBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHZhbHVlOwoJcHVibGljICR0eXBlID0gJ1BhcmVuJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKSB7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoJHZpc2l0b3IpewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaigkdGhpcy0+dmFsdWUpOwoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAnKCcgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJCSRvdXRwdXQtPmFkZCggJyknICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudikgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX1BhcmVuKCR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Quoted.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBRdW90ZWQKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfUXVvdGVkIGV4dGVuZHMgTGVzc19UcmVlewoJcHVibGljICRlc2NhcGVkOwoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkcXVvdGU7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJHR5cGUgPSAnUXVvdGVkJzsKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0ciwgJGNvbnRlbnQgPSAnJywgJGVzY2FwZWQgPSBmYWxzZSwgJGluZGV4ID0gZmFsc2UsICRjdXJyZW50RmlsZUluZm8gPSBudWxsICl7CgkJJHRoaXMtPmVzY2FwZWQgPSAkZXNjYXBlZDsKCQkkdGhpcy0+dmFsdWUgPSAkY29udGVudDsKCQlpZiggJHN0ciApewoJCQkkdGhpcy0+cXVvdGUgPSAkc3RyWzBdOwoJCX0KCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQlpZiggISR0aGlzLT5lc2NhcGVkICl7CgkJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnF1b3RlLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+aW5kZXggKTsKICAgICAgICB9CiAgICAgICAgJG91dHB1dC0+YWRkKCAkdGhpcy0+dmFsdWUgKTsKICAgICAgICBpZiggISR0aGlzLT5lc2NhcGVkICl7CgkJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnF1b3RlICk7CiAgICAgICAgfQogICAgfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpewoKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJaWYoIHByZWdfbWF0Y2hfYWxsKCcvYChbXmBdKylgLycsICR0aGlzLT52YWx1ZSwgJG1hdGNoZXMpICl7CgkJCWZvcmVhY2goJG1hdGNoZXMgYXMgJGkgPT4gJG1hdGNoKXsKCQkJCSRqcyA9IG5ldyBMZXNzX1RyZWVfSmF2YVNjcmlwdCgkbWF0Y2hlc1sxXSwgJHRoaXMtPmluZGV4LCB0cnVlKTsKCQkJCSRqcyA9ICRqcy0+Y29tcGlsZSgpLT52YWx1ZTsKCQkJCSR2YWx1ZSA9IHN0cl9yZXBsYWNlKCRtYXRjaGVzWzBdWyRpXSwgJGpzLCAkdmFsdWUpOwoJCQl9CgkJfQoKCQlpZiggcHJlZ19tYXRjaF9hbGwoJy9AXHsoW1x3LV0rKVx9LycsJHZhbHVlLCRtYXRjaGVzKSApewoJCQlmb3JlYWNoKCRtYXRjaGVzWzFdIGFzICRpID0+ICRtYXRjaCl7CgkJCQkkdiA9IG5ldyBMZXNzX1RyZWVfVmFyaWFibGUoJ0AnIC4gJG1hdGNoLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8gKTsKCQkJCSR2ID0gJHYtPmNvbXBpbGUoJGVudik7CgkJCQkkdiA9ICgkdiBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQpID8gJHYtPnZhbHVlIDogJHYtPnRvQ1NTKCk7CgkJCQkkdmFsdWUgPSBzdHJfcmVwbGFjZSgkbWF0Y2hlc1swXVskaV0sICR2LCAkdmFsdWUpOwoJCQl9CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9RdW90ZWQoJHRoaXMtPnF1b3RlIC4gJHZhbHVlIC4gJHRoaXMtPnF1b3RlLCAkdmFsdWUsICR0aGlzLT5lc2NhcGVkLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCR4KSB7CgoJCWlmKCAhTGVzc19QYXJzZXI6OmlzX21ldGhvZCgkeCwgJ3RvQ1NTJykgKXsKCQkJcmV0dXJuIC0xOwoJCX0KCgkJJGxlZnQgPSAkdGhpcy0+dG9DU1MoKTsKCQkkcmlnaHQgPSAkeC0+dG9DU1MoKTsKCgkJaWYgKCRsZWZ0ID09PSAkcmlnaHQpIHsKCQkJcmV0dXJuIDA7CgkJfQoKCQlyZXR1cm4gJGxlZnQgPCAkcmlnaHQgPyAtMSA6IDE7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Rule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSdWxlCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX1J1bGUgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICRuYW1lOwoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkaW1wb3J0YW50OwoJcHVibGljICRtZXJnZTsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJGlubGluZTsKCXB1YmxpYyAkdmFyaWFibGU7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCXB1YmxpYyAkdHlwZSA9ICdSdWxlJzsKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJGltcG9ydGFudAoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5hbWUsICR2YWx1ZSA9IG51bGwsICRpbXBvcnRhbnQgPSBudWxsLCAkbWVyZ2UgPSBudWxsLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgICRpbmxpbmUgPSBmYWxzZSl7CgkJJHRoaXMtPm5hbWUgPSAkbmFtZTsKCQkkdGhpcy0+dmFsdWUgPSAoJHZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlX1ZhbHVlIHx8ICR2YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlc2V0KSA/ICR2YWx1ZSA6IG5ldyBMZXNzX1RyZWVfVmFsdWUoYXJyYXkoJHZhbHVlKSk7CgkJJHRoaXMtPmltcG9ydGFudCA9ICRpbXBvcnRhbnQgPyAnICcgLiB0cmltKCRpbXBvcnRhbnQpIDogJyc7CgkJJHRoaXMtPm1lcmdlID0gJG1lcmdlOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCQkkdGhpcy0+aW5saW5lID0gJGlubGluZTsKCQkkdGhpcy0+dmFyaWFibGUgPSAoIGlzX3N0cmluZygkbmFtZSkgJiYgJG5hbWVbMF0gPT09ICdAJyk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcikgewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnZhbHVlICk7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+bmFtZSAuIExlc3NfRW52aXJvbm1lbnQ6OiRfb3V0cHV0TWFwWyc6ICddLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+aW5kZXgpOwoJCXRyeXsKCQkJJHRoaXMtPnZhbHVlLT5nZW5DU1MoICRvdXRwdXQpOwoKCQl9Y2F0Y2goIExlc3NfRXhjZXB0aW9uX1BhcnNlciAkZSApewoJCQkkZS0+aW5kZXggPSAkdGhpcy0+aW5kZXg7CgkJCSRlLT5jdXJyZW50RmlsZSA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm87CgkJCXRocm93ICRlOwoJCX0KCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5pbXBvcnRhbnQgLiAoKCR0aGlzLT5pbmxpbmUgfHwgKExlc3NfRW52aXJvbm1lbnQ6OiRsYXN0UnVsZSAmJiBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10pKSA/ICIiIDogIjsiKSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4KTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSAoJGVudil7CgoJCSRuYW1lID0gJHRoaXMtPm5hbWU7CgkJaWYoIGlzX2FycmF5KCRuYW1lKSApewoJCQkvLyBleHBhbmQgJ3ByaW1pdGl2ZScgbmFtZSBkaXJlY3RseSB0byBnZXQKCQkJLy8gdGhpbmdzIGZhc3RlciAofjEwJSBmb3IgYmVuY2htYXJrLmxlc3MpOgoJCQlpZiggY291bnQoJG5hbWUpID09PSAxICYmICRuYW1lWzBdIGluc3RhbmNlb2YgTGVzc19UcmVlX0tleXdvcmQgKXsKCQkJCSRuYW1lID0gJG5hbWVbMF0tPnZhbHVlOwoJCQl9ZWxzZXsKCQkJCSRuYW1lID0gJHRoaXMtPkNvbXBpbGVOYW1lKCRlbnYsJG5hbWUpOwoJCQl9CgkJfQoKCQkkc3RyaWN0TWF0aEJ5cGFzcyA9IExlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0TWF0aCddOwoJCWlmKCAkbmFtZSA9PT0gImZvbnQiICYmICFMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdE1hdGgnXSApewoJCQlMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdE1hdGgnXSA9IHRydWU7CgkJfQoKCQl0cnkgewoJCQkkZXZhbGRWYWx1ZSA9ICR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KTsKCgkJCWlmKCAhJHRoaXMtPnZhcmlhYmxlICYmICRldmFsZFZhbHVlLT50eXBlID09PSAiRGV0YWNoZWRSdWxlc2V0IikgewoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJSdWxlc2V0cyBjYW5ub3QgYmUgZXZhbHVhdGVkIG9uIGEgcHJvcGVydHkuIiwgbnVsbCwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvKTsKCQkJfQoKCQkJaWYoIExlc3NfRW52aXJvbm1lbnQ6OiRtaXhpbl9zdGFjayApewoJCQkJJHJldHVybiA9IG5ldyBMZXNzX1RyZWVfUnVsZSgkbmFtZSwgJGV2YWxkVmFsdWUsICR0aGlzLT5pbXBvcnRhbnQsICR0aGlzLT5tZXJnZSwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+aW5saW5lKTsKCQkJfWVsc2V7CgkJCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCQkJJHRoaXMtPnZhbHVlID0gJGV2YWxkVmFsdWU7CgkJCQkkcmV0dXJuID0gJHRoaXM7CgkJCX0KCgkJfWNhdGNoKCBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIgJGUgKXsKCQkJaWYoICFpc19udW1lcmljKCRlLT5pbmRleCkgKXsKCQkJCSRlLT5pbmRleCA9ICR0aGlzLT5pbmRleDsKCQkJCSRlLT5jdXJyZW50RmlsZSA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm87CgkJCX0KCQkJdGhyb3cgJGU7CgkJfQoKCQlMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdE1hdGgnXSA9ICRzdHJpY3RNYXRoQnlwYXNzOwoKCQlyZXR1cm4gJHJldHVybjsKCX0KCgogICAgcHVibGljIGZ1bmN0aW9uIENvbXBpbGVOYW1lKCAkZW52LCAkbmFtZSApewoJCSRvdXRwdXQgPSBuZXcgTGVzc19PdXRwdXQoKTsKCQlmb3JlYWNoKCRuYW1lIGFzICRuKXsKCQkJJG4tPmNvbXBpbGUoJGVudiktPmdlbkNTUygkb3V0cHV0KTsKCQl9CgkJcmV0dXJuICRvdXRwdXQtPnRvU3RyaW5nKCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIG1ha2VJbXBvcnRhbnQoKXsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9SdWxlKCR0aGlzLT5uYW1lLCAkdGhpcy0+dmFsdWUsICchaW1wb3J0YW50JywgJHRoaXMtPm1lcmdlLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmxpbmUpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Ruleset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSdWxlc2V0CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX1J1bGVzZXQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHJvdGVjdGVkICRsb29rdXBzOwoJcHVibGljICRfdmFyaWFibGVzOwoJcHVibGljICRfcnVsZXNldHM7CgoJcHVibGljICRzdHJpY3RJbXBvcnRzOwoKCXB1YmxpYyAkc2VsZWN0b3JzOwoJcHVibGljICRydWxlczsKCXB1YmxpYyAkcm9vdDsKCXB1YmxpYyAkYWxsb3dJbXBvcnRzOwoJcHVibGljICRwYXRoczsKCXB1YmxpYyAkZmlyc3RSb290OwoJcHVibGljICR0eXBlID0gJ1J1bGVzZXQnOwoJcHVibGljICRtdWx0aU1lZGlhOwoJcHVibGljICRhbGxFeHRlbmRzOwoKCXB1YmxpYyAkcnVsZXNldF9pZDsKCXB1YmxpYyAkb3JpZ2luYWxSdWxlc2V0OwoKCXB1YmxpYyAkZmlyc3Rfb2VsZW1lbnRzOwoKCXB1YmxpYyBmdW5jdGlvbiBTZXRSdWxlc2V0SW5kZXgoKXsKCQkkdGhpcy0+cnVsZXNldF9pZCA9IExlc3NfUGFyc2VyOjokbmV4dF9pZCsrOwoJCSR0aGlzLT5vcmlnaW5hbFJ1bGVzZXQgPSAkdGhpcy0+cnVsZXNldF9pZDsKCgkJaWYoICR0aGlzLT5zZWxlY3RvcnMgKXsKCQkJZm9yZWFjaCgkdGhpcy0+c2VsZWN0b3JzIGFzICRzZWwpewoJCQkJaWYoICRzZWwtPl9vZWxlbWVudHMgKXsKCQkJCQkkdGhpcy0+Zmlyc3Rfb2VsZW1lbnRzWyRzZWwtPl9vZWxlbWVudHNbMF1dID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNlbGVjdG9ycywgJHJ1bGVzLCAkc3RyaWN0SW1wb3J0cyA9IG51bGwpewoJCSR0aGlzLT5zZWxlY3RvcnMgPSAkc2VsZWN0b3JzOwoJCSR0aGlzLT5ydWxlcyA9ICRydWxlczsKCQkkdGhpcy0+bG9va3VwcyA9IGFycmF5KCk7CgkJJHRoaXMtPnN0cmljdEltcG9ydHMgPSAkc3RyaWN0SW1wb3J0czsKCQkkdGhpcy0+U2V0UnVsZXNldEluZGV4KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKXsKCQlpZiggJHRoaXMtPnBhdGhzICl7CgkJCSRwYXRoc19sZW4gPSBjb3VudCgkdGhpcy0+cGF0aHMpOwoJCQlmb3IoJGkgPSAwLCRwYXRoc19sZW47ICRpIDwgJHBhdGhzX2xlbjsgJGkrKyApewoJCQkJJHRoaXMtPnBhdGhzWyRpXSA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5wYXRoc1skaV0pOwoJCQl9CgkJfWVsc2VpZiggJHRoaXMtPnNlbGVjdG9ycyApewoJCQkkdGhpcy0+c2VsZWN0b3JzID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoJHRoaXMtPnNlbGVjdG9ycyk7CgkJfQoKCQlpZiggJHRoaXMtPnJ1bGVzICl7CgkJCSR0aGlzLT5ydWxlcyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5ydWxlcyk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpewoKCQkkcnVsZXNldCA9ICR0aGlzLT5QcmVwYXJlUnVsZXNldCgkZW52KTsKCgoJCS8vIFN0b3JlIHRoZSBmcmFtZXMgYXJvdW5kIG1peGluIGRlZmluaXRpb25zLAoJCS8vIHNvIHRoZXkgY2FuIGJlIGV2YWx1YXRlZCBsaWtlIGNsb3N1cmVzIHdoZW4gdGhlIHRpbWUgY29tZXMuCgkJJHJzUnVsZUNudCA9IGNvdW50KCRydWxlc2V0LT5ydWxlcyk7CgkJZm9yKCAkaSA9IDA7ICRpIDwgJHJzUnVsZUNudDsgJGkrKyApewoJCQlpZiggJHJ1bGVzZXQtPnJ1bGVzWyRpXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uIHx8ICRydWxlc2V0LT5ydWxlc1skaV0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0ICl7CgkJCQkkcnVsZXNldC0+cnVsZXNbJGldID0gJHJ1bGVzZXQtPnJ1bGVzWyRpXS0+Y29tcGlsZSgkZW52KTsKCQkJfQoJCX0KCgkJJG1lZGlhQmxvY2tDb3VudCA9IDA7CgkJaWYoICRlbnYgaW5zdGFuY2VvZiBMZXNzX0Vudmlyb25tZW50ICl7CgkJCSRtZWRpYUJsb2NrQ291bnQgPSBjb3VudCgkZW52LT5tZWRpYUJsb2Nrcyk7CgkJfQoKCQkvLyBFdmFsdWF0ZSBtaXhpbiBjYWxscy4KCQkkdGhpcy0+RXZhbE1peGluQ2FsbHMoICRydWxlc2V0LCAkZW52LCAkcnNSdWxlQ250ICk7CgoKCQkvLyBFdmFsdWF0ZSBldmVyeXRoaW5nIGVsc2UKCQlmb3IoICRpPTA7ICRpPCRyc1J1bGVDbnQ7ICRpKysgKXsKCQkJaWYoISAoJHJ1bGVzZXQtPnJ1bGVzWyRpXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uIHx8ICRydWxlc2V0LT5ydWxlc1skaV0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0KSApewoJCQkJJHJ1bGVzZXQtPnJ1bGVzWyRpXSA9ICRydWxlc2V0LT5ydWxlc1skaV0tPmNvbXBpbGUoJGVudik7CgkJCX0KCQl9CgogICAgICAgIC8vIEV2YWx1YXRlIGV2ZXJ5dGhpbmcgZWxzZQoJCWZvciggJGk9MDsgJGk8JHJzUnVsZUNudDsgJGkrKyApewoJCQkkcnVsZSA9ICRydWxlc2V0LT5ydWxlc1skaV07CgogICAgICAgICAgICAvLyBmb3IgcnVsZXNldHMsIGNoZWNrIGlmIGl0IGlzIGEgY3NzIGd1YXJkIGFuZCBjYW4gYmUgcmVtb3ZlZAoJCQlpZiggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldCAmJiAkcnVsZS0+c2VsZWN0b3JzICYmIGNvdW50KCRydWxlLT5zZWxlY3RvcnMpID09PSAxICl7CgogICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaXQgY2FuIGJlIGZvbGRlZCBpbiAoZS5nLiAmIHdoZXJlKQoJCQkJaWYoICRydWxlLT5zZWxlY3RvcnNbMF0tPmlzSnVzdFBhcmVudFNlbGVjdG9yKCkgKXsKCQkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzZXQtPnJ1bGVzLCRpLS0sMSk7CgkJCQkJJHJzUnVsZUNudC0tOwoKCQkJCQlmb3IoJGogPSAwOyAkaiA8IGNvdW50KCRydWxlLT5ydWxlcyk7ICRqKysgKXsKCQkJCQkJJHN1YlJ1bGUgPSAkcnVsZS0+cnVsZXNbJGpdOwoJCQkJCQlpZiggISgkc3ViUnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlKSB8fCAhJHN1YlJ1bGUtPnZhcmlhYmxlICl7CgkJCQkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzZXQtPnJ1bGVzLCArKyRpLCAwLCBhcnJheSgkc3ViUnVsZSkpOwoJCQkJCQkJJHJzUnVsZUNudCsrOwoJCQkJCQl9CgkJCQkJfQoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCgoJCS8vIFBvcCB0aGUgc3RhY2sKCQkkZW52LT5zaGlmdEZyYW1lKCk7CgoJCWlmICgkbWVkaWFCbG9ja0NvdW50KSB7CgkJCSRsZW4gPSBjb3VudCgkZW52LT5tZWRpYUJsb2Nrcyk7CgkJCWZvcigkaSA9ICRtZWRpYUJsb2NrQ291bnQ7ICRpIDwgJGxlbjsgJGkrKyApewoJCQkJJGVudi0+bWVkaWFCbG9ja3NbJGldLT5idWJibGVTZWxlY3RvcnMoJHJ1bGVzZXQtPnNlbGVjdG9ycyk7CgkJCX0KCQl9CgoJCXJldHVybiAkcnVsZXNldDsKCX0KCgkvKioKCSAqIENvbXBpbGUgTGVzc19UcmVlX01peGluX0NhbGwgb2JqZWN0cwoJICoKCSAqIEBwYXJhbSBMZXNzX1RyZWVfUnVsZXNldCAkcnVsZXNldAoJICogQHBhcmFtIGludGVnZXIgJHJzUnVsZUNudAoJICovCglwcml2YXRlIGZ1bmN0aW9uIEV2YWxNaXhpbkNhbGxzKCAkcnVsZXNldCwgJGVudiwgJiRyc1J1bGVDbnQgKXsKCQlmb3IoJGk9MDsgJGkgPCAkcnNSdWxlQ250OyAkaSsrKXsKCQkJJHJ1bGUgPSAkcnVsZXNldC0+cnVsZXNbJGldOwoKCQkJaWYoICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX01peGluX0NhbGwgKXsKCQkJCSRydWxlID0gJHJ1bGUtPmNvbXBpbGUoJGVudik7CgoJCQkJJHRlbXAgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCgkcnVsZSBhcyAkcil7CgkJCQkJaWYoICgkciBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlKSAmJiAkci0+dmFyaWFibGUgKXsKCQkJCQkJLy8gZG8gbm90IHBvbGx1dGUgdGhlIHNjb3BlIGlmIHRoZSB2YXJpYWJsZSBpcwoJCQkJCQkvLyBhbHJlYWR5IHRoZXJlLiBjb25zaWRlciByZXR1cm5pbmcgZmFsc2UgaGVyZQoJCQkJCQkvLyBidXQgd2UgbmVlZCBhIHdheSB0byAicmV0dXJuIiB2YXJpYWJsZSBmcm9tIG1peGlucwoJCQkJCQlpZiggISRydWxlc2V0LT52YXJpYWJsZSgkci0+bmFtZSkgKXsKCQkJCQkJCSR0ZW1wW10gPSAkcjsKCQkJCQkJfQoJCQkJCX1lbHNlewoJCQkJCQkkdGVtcFtdID0gJHI7CgkJCQkJfQoJCQkJfQoJCQkJJHRlbXBfY291bnQgPSBjb3VudCgkdGVtcCktMTsKCQkJCWFycmF5X3NwbGljZSgkcnVsZXNldC0+cnVsZXMsICRpLCAxLCAkdGVtcCk7CgkJCQkkcnNSdWxlQ250ICs9ICR0ZW1wX2NvdW50OwoJCQkJJGkgKz0gJHRlbXBfY291bnQ7CgkJCQkkcnVsZXNldC0+cmVzZXRDYWNoZSgpOwoKCQkJfWVsc2VpZiggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldENhbGwgKXsKCgkJCQkkcnVsZSA9ICRydWxlLT5jb21waWxlKCRlbnYpOwoJCQkJJHJ1bGVzID0gYXJyYXkoKTsKCQkJCWZvcmVhY2goJHJ1bGUtPnJ1bGVzIGFzICRyKXsKCQkJCQlpZiggKCRyIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGUpICYmICRyLT52YXJpYWJsZSApewoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJJHJ1bGVzW10gPSAkcjsKCQkJCX0KCgkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzZXQtPnJ1bGVzLCAkaSwgMSwgJHJ1bGVzKTsKCQkJCSR0ZW1wX2NvdW50ID0gY291bnQoJHJ1bGVzKTsKCQkJCSRyc1J1bGVDbnQgKz0gJHRlbXBfY291bnQgLSAxOwoJCQkJJGkgKz0gJHRlbXBfY291bnQtMTsKCQkJCSRydWxlc2V0LT5yZXNldENhY2hlKCk7CgkJCX0KCgkJfQoJfQoKCgkvKioKCSAqIENvbXBpbGUgdGhlIHNlbGVjdG9ycyBhbmQgY3JlYXRlIGEgbmV3IHJ1bGVzZXQgb2JqZWN0IGZvciB0aGUgY29tcGlsZSgpIG1ldGhvZAoJICoKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBQcmVwYXJlUnVsZXNldCgkZW52KXsKCgkJJGhhc09uZVBhc3NpbmdTZWxlY3RvciA9IGZhbHNlOwoJCSRzZWxlY3RvcnMgPSBhcnJheSgpOwoJCWlmKCAkdGhpcy0+c2VsZWN0b3JzICl7CgkJCUxlc3NfVHJlZV9EZWZhdWx0RnVuYzo6ZXJyb3IoIml0IGlzIGN1cnJlbnRseSBvbmx5IGFsbG93ZWQgaW4gcGFyYW1ldHJpYyBtaXhpbiBndWFyZHMsIik7CgoJCQlmb3JlYWNoKCR0aGlzLT5zZWxlY3RvcnMgYXMgJHMpewoJCQkJJHNlbGVjdG9yID0gJHMtPmNvbXBpbGUoJGVudik7CgkJCQkkc2VsZWN0b3JzW10gPSAkc2VsZWN0b3I7CgkJCQlpZiggJHNlbGVjdG9yLT5ldmFsZENvbmRpdGlvbiApewoJCQkJCSRoYXNPbmVQYXNzaW5nU2VsZWN0b3IgPSB0cnVlOwoJCQkJfQoJCQl9CgoJCQlMZXNzX1RyZWVfRGVmYXVsdEZ1bmM6OnJlc2V0KCk7CgkJfSBlbHNlIHsKCQkJJGhhc09uZVBhc3NpbmdTZWxlY3RvciA9IHRydWU7CgkJfQoKCQlpZiggJHRoaXMtPnJ1bGVzICYmICRoYXNPbmVQYXNzaW5nU2VsZWN0b3IgKXsKCQkJJHJ1bGVzID0gJHRoaXMtPnJ1bGVzOwoJCX1lbHNlewoJCQkkcnVsZXMgPSBhcnJheSgpOwoJCX0KCgkJJHJ1bGVzZXQgPSBuZXcgTGVzc19UcmVlX1J1bGVzZXQoJHNlbGVjdG9ycywgJHJ1bGVzLCAkdGhpcy0+c3RyaWN0SW1wb3J0cyk7CgoJCSRydWxlc2V0LT5vcmlnaW5hbFJ1bGVzZXQgPSAkdGhpcy0+cnVsZXNldF9pZDsKCgkJJHJ1bGVzZXQtPnJvb3QgPSAkdGhpcy0+cm9vdDsKCQkkcnVsZXNldC0+Zmlyc3RSb290ID0gJHRoaXMtPmZpcnN0Um9vdDsKCQkkcnVsZXNldC0+YWxsb3dJbXBvcnRzID0gJHRoaXMtPmFsbG93SW1wb3J0czsKCgoJCS8vIHB1c2ggdGhlIGN1cnJlbnQgcnVsZXNldCB0byB0aGUgZnJhbWVzIHN0YWNrCgkJJGVudi0+dW5zaGlmdEZyYW1lKCRydWxlc2V0KTsKCgoJCS8vIEV2YWx1YXRlIGltcG9ydHMKCQlpZiggJHJ1bGVzZXQtPnJvb3QgfHwgJHJ1bGVzZXQtPmFsbG93SW1wb3J0cyB8fCAhJHJ1bGVzZXQtPnN0cmljdEltcG9ydHMgKXsKCQkJJHJ1bGVzZXQtPmV2YWxJbXBvcnRzKCRlbnYpOwoJCX0KCgkJcmV0dXJuICRydWxlc2V0OwoJfQoKCWZ1bmN0aW9uIGV2YWxJbXBvcnRzKCRlbnYpIHsKCgkJJHJ1bGVzX2xlbiA9IGNvdW50KCR0aGlzLT5ydWxlcyk7CgkJZm9yKCRpPTA7ICRpIDwgJHJ1bGVzX2xlbjsgJGkrKyl7CgkJCSRydWxlID0gJHRoaXMtPnJ1bGVzWyRpXTsKCgkJCWlmKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9JbXBvcnQgKXsKCQkJCSRydWxlcyA9ICRydWxlLT5jb21waWxlKCRlbnYpOwoJCQkJaWYoIGlzX2FycmF5KCRydWxlcykgKXsKCQkJCQlhcnJheV9zcGxpY2UoJHRoaXMtPnJ1bGVzLCAkaSwgMSwgJHJ1bGVzKTsKCQkJCQkkdGVtcF9jb3VudCA9IGNvdW50KCRydWxlcyktMTsKCQkJCQkkaSArPSAkdGVtcF9jb3VudDsKCQkJCQkkcnVsZXNfbGVuICs9ICR0ZW1wX2NvdW50OwoJCQkJfWVsc2V7CgkJCQkJYXJyYXlfc3BsaWNlKCR0aGlzLT5ydWxlcywgJGksIDEsIGFycmF5KCRydWxlcykpOwoJCQkJfQoKCQkJCSR0aGlzLT5yZXNldENhY2hlKCk7CgkJCX0KCQl9Cgl9CgoJZnVuY3Rpb24gbWFrZUltcG9ydGFudCgpewoKCQkkaW1wb3J0YW50X3J1bGVzID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR0aGlzLT5ydWxlcyBhcyAkcnVsZSl7CgkJCWlmKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlIHx8ICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGVzZXQgfHwgJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfTmFtZVZhbHVlICl7CgkJCQkkaW1wb3J0YW50X3J1bGVzW10gPSAkcnVsZS0+bWFrZUltcG9ydGFudCgpOwoJCQl9ZWxzZXsKCQkJCSRpbXBvcnRhbnRfcnVsZXNbXSA9ICRydWxlOwoJCQl9CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9SdWxlc2V0KCR0aGlzLT5zZWxlY3RvcnMsICRpbXBvcnRhbnRfcnVsZXMsICR0aGlzLT5zdHJpY3RJbXBvcnRzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hdGNoQXJncygkYXJncyl7CgkJcmV0dXJuICEkYXJnczsKCX0KCgkvLyBsZXRzIHlvdSBjYWxsIGEgY3NzIHNlbGVjdG9yIHdpdGggYSBndWFyZAoJcHVibGljIGZ1bmN0aW9uIG1hdGNoQ29uZGl0aW9uKCAkYXJncywgJGVudiApewoJCSRsYXN0U2VsZWN0b3IgPSBlbmQoJHRoaXMtPnNlbGVjdG9ycyk7CgoJCWlmKCAhJGxhc3RTZWxlY3Rvci0+ZXZhbGRDb25kaXRpb24gKXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlpZiggJGxhc3RTZWxlY3Rvci0+Y29uZGl0aW9uICYmICEkbGFzdFNlbGVjdG9yLT5jb25kaXRpb24tPmNvbXBpbGUoICRlbnYtPmNvcHlFdmFsRW52KCAkZW52LT5mcmFtZXMgKSApICl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJZnVuY3Rpb24gcmVzZXRDYWNoZSgpewoJCSR0aGlzLT5fcnVsZXNldHMgPSBudWxsOwoJCSR0aGlzLT5fdmFyaWFibGVzID0gbnVsbDsKCQkkdGhpcy0+bG9va3VwcyA9IGFycmF5KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZhcmlhYmxlcygpewoJCSR0aGlzLT5fdmFyaWFibGVzID0gYXJyYXkoKTsKCQlmb3JlYWNoKCAkdGhpcy0+cnVsZXMgYXMgJHIpewoJCQlpZiAoJHIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZSAmJiAkci0+dmFyaWFibGUgPT09IHRydWUpIHsKCQkJCSR0aGlzLT5fdmFyaWFibGVzWyRyLT5uYW1lXSA9ICRyOwoJCQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2YXJpYWJsZSgkbmFtZSl7CgoJCWlmKCBpc19udWxsKCR0aGlzLT5fdmFyaWFibGVzKSApewoJCQkkdGhpcy0+dmFyaWFibGVzKCk7CgkJfQoJCXJldHVybiBpc3NldCgkdGhpcy0+X3ZhcmlhYmxlc1skbmFtZV0pID8gJHRoaXMtPl92YXJpYWJsZXNbJG5hbWVdIDogbnVsbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZmluZCggJHNlbGVjdG9yLCAkc2VsZiA9IG51bGwgKXsKCgkJJGtleSA9IGltcGxvZGUoJyAnLCRzZWxlY3Rvci0+X29lbGVtZW50cyk7CgoJCWlmKCAhaXNzZXQoJHRoaXMtPmxvb2t1cHNbJGtleV0pICl7CgoJCQlpZiggISRzZWxmICl7CgkJCQkkc2VsZiA9ICR0aGlzLT5ydWxlc2V0X2lkOwoJCQl9CgoJCQkkdGhpcy0+bG9va3Vwc1ska2V5XSA9IGFycmF5KCk7CgoJCQkkZmlyc3Rfb2VsZW1lbnQgPSAkc2VsZWN0b3ItPl9vZWxlbWVudHNbMF07CgoJCQlmb3JlYWNoKCR0aGlzLT5ydWxlcyBhcyAkcnVsZSl7CgkJCQlpZiggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldCAmJiAkcnVsZS0+cnVsZXNldF9pZCAhPSAkc2VsZiApewoKCQkJCQlpZiggaXNzZXQoJHJ1bGUtPmZpcnN0X29lbGVtZW50c1skZmlyc3Rfb2VsZW1lbnRdKSApewoKCQkJCQkJZm9yZWFjaCggJHJ1bGUtPnNlbGVjdG9ycyBhcyAkcnVsZVNlbGVjdG9yICl7CgkJCQkJCQkkbWF0Y2ggPSAkc2VsZWN0b3ItPm1hdGNoKCRydWxlU2VsZWN0b3IpOwoJCQkJCQkJaWYoICRtYXRjaCApewoJCQkJCQkJCWlmKCAkc2VsZWN0b3ItPmVsZW1lbnRzX2xlbiA+ICRtYXRjaCApewoJCQkJCQkJCQkkdGhpcy0+bG9va3Vwc1ska2V5XSA9IGFycmF5X21lcmdlKCR0aGlzLT5sb29rdXBzWyRrZXldLCAkcnVsZS0+ZmluZCggbmV3IExlc3NfVHJlZV9TZWxlY3RvcihhcnJheV9zbGljZSgkc2VsZWN0b3ItPmVsZW1lbnRzLCAkbWF0Y2gpKSwgJHNlbGYpKTsKCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQkkdGhpcy0+bG9va3Vwc1ska2V5XVtdID0gJHJ1bGU7CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmxvb2t1cHNbJGtleV07Cgl9CgoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgoJCWlmKCAhJHRoaXMtPnJvb3QgKXsKCQkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsKys7CgkJfQoKCQkkdGFiUnVsZVN0ciA9ICR0YWJTZXRTdHIgPSAnJzsKCQlpZiggIUxlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSApewoJCQlpZiggTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsICl7CgkJCQkkdGFiUnVsZVN0ciA9ICJcbiIuc3RyX3JlcGVhdCggTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbmRlbnRhdGlvbiddICwgTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsICk7CgkJCQkkdGFiU2V0U3RyID0gIlxuIi5zdHJfcmVwZWF0KCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2luZGVudGF0aW9uJ10gLCBMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwtMSApOwoJCQl9ZWxzZXsKCQkJCSR0YWJTZXRTdHIgPSAkdGFiUnVsZVN0ciA9ICJcbiI7CgkJCX0KCQl9CgoKCQkkcnVsZU5vZGVzID0gYXJyYXkoKTsKCQkkcnVsZXNldE5vZGVzID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR0aGlzLT5ydWxlcyBhcyAkcnVsZSl7CgoJCQkkY2xhc3MgPSBnZXRfY2xhc3MoJHJ1bGUpOwoJCQlpZiggKCRjbGFzcyA9PT0gJ0xlc3NfVHJlZV9NZWRpYScpIHx8ICgkY2xhc3MgPT09ICdMZXNzX1RyZWVfRGlyZWN0aXZlJykgfHwgKCR0aGlzLT5yb290ICYmICRjbGFzcyA9PT0gJ0xlc3NfVHJlZV9Db21tZW50JykgfHwgKCRjbGFzcyA9PT0gJ0xlc3NfVHJlZV9SdWxlc2V0JyAmJiAkcnVsZS0+cnVsZXMpICl7CgkJCQkkcnVsZXNldE5vZGVzW10gPSAkcnVsZTsKCQkJfWVsc2V7CgkJCQkkcnVsZU5vZGVzW10gPSAkcnVsZTsKCQkJfQoJCX0KCgkJLy8gSWYgdGhpcyBpcyB0aGUgcm9vdCBub2RlLCB3ZSBkb24ndCByZW5kZXIKCQkvLyBhIHNlbGVjdG9yLCBvciB7fS4KCQlpZiggISR0aGlzLT5yb290ICl7CgoJCQkvKgoJCQlkZWJ1Z0luZm8gPSB0cmVlLmRlYnVnSW5mbyhlbnYsIHRoaXMsIHRhYlNldFN0cik7CgoJCQlpZiAoZGVidWdJbmZvKSB7CgkJCQlvdXRwdXQuYWRkKGRlYnVnSW5mbyk7CgkJCQlvdXRwdXQuYWRkKHRhYlNldFN0cik7CgkJCX0KCQkJKi8KCgkJCSRwYXRoc19sZW4gPSBjb3VudCgkdGhpcy0+cGF0aHMpOwoJCQlmb3IoICRpID0gMDsgJGkgPCAkcGF0aHNfbGVuOyAkaSsrICl7CgkJCQkkcGF0aCA9ICR0aGlzLT5wYXRoc1skaV07CgkJCQkkZmlyc3RTZWxlY3RvciA9IHRydWU7CgoJCQkJZm9yZWFjaCgkcGF0aCBhcyAkcCl7CgkJCQkJJHAtPmdlbkNTUyggJG91dHB1dCwgJGZpcnN0U2VsZWN0b3IgKTsKCQkJCQkkZmlyc3RTZWxlY3RvciA9IGZhbHNlOwoJCQkJfQoKCQkJCWlmKCAkaSArIDEgPCAkcGF0aHNfbGVuICl7CgkJCQkJJG91dHB1dC0+YWRkKCAnLCcgLiAkdGFiU2V0U3RyICk7CgkJCQl9CgkJCX0KCgkJCSRvdXRwdXQtPmFkZCggKExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSA/ICd7JyA6ICIgeyIpIC4gJHRhYlJ1bGVTdHIgKTsKCQl9CgoJCS8vIENvbXBpbGUgcnVsZXMgYW5kIHJ1bGVzZXRzCgkJJHJ1bGVOb2Rlc19sZW4gPSBjb3VudCgkcnVsZU5vZGVzKTsKCQkkcnVsZXNldE5vZGVzX2xlbiA9IGNvdW50KCRydWxlc2V0Tm9kZXMpOwoJCWZvciggJGkgPSAwOyAkaSA8ICRydWxlTm9kZXNfbGVuOyAkaSsrICl7CgkJCSRydWxlID0gJHJ1bGVOb2Rlc1skaV07CgoJCQkvLyBAcGFnZXsgZGlyZWN0aXZlIGVuZHMgdXAgd2l0aCByb290IGVsZW1lbnRzIGluc2lkZSBpdCwgYSBtaXggb2YgcnVsZXMgYW5kIHJ1bGVzZXRzCgkJCS8vIEluIHRoaXMgaW5zdGFuY2Ugd2UgZG8gbm90IGtub3cgd2hldGhlciBpdCBpcyB0aGUgbGFzdCBwcm9wZXJ0eQoJCQlpZiggJGkgKyAxID09PSAkcnVsZU5vZGVzX2xlbiAmJiAoISR0aGlzLT5yb290IHx8ICRydWxlc2V0Tm9kZXNfbGVuID09PSAwIHx8ICR0aGlzLT5maXJzdFJvb3QgKSApewoJCQkJTGVzc19FbnZpcm9ubWVudDo6JGxhc3RSdWxlID0gdHJ1ZTsKCQkJfQoKCQkJJHJ1bGUtPmdlbkNTUyggJG91dHB1dCApOwoKCQkJaWYoICFMZXNzX0Vudmlyb25tZW50OjokbGFzdFJ1bGUgKXsKCQkJCSRvdXRwdXQtPmFkZCggJHRhYlJ1bGVTdHIgKTsKCQkJfWVsc2V7CgkJCQlMZXNzX0Vudmlyb25tZW50OjokbGFzdFJ1bGUgPSBmYWxzZTsKCQkJfQoJCX0KCgkJaWYoICEkdGhpcy0+cm9vdCApewoJCQkkb3V0cHV0LT5hZGQoICR0YWJTZXRTdHIgLiAnfScgKTsKCQkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsLS07CgkJfQoKCQkkZmlyc3RSdWxlc2V0ID0gdHJ1ZTsKCQkkc3BhY2UgPSAoJHRoaXMtPnJvb3QgPyAkdGFiUnVsZVN0ciA6ICR0YWJTZXRTdHIpOwoJCWZvciggJGkgPSAwOyAkaSA8ICRydWxlc2V0Tm9kZXNfbGVuOyAkaSsrICl7CgoJCQlpZiggJHJ1bGVOb2Rlc19sZW4gJiYgJGZpcnN0UnVsZXNldCApewoJCQkJJG91dHB1dC0+YWRkKCAkc3BhY2UgKTsKCQkJfWVsc2VpZiggISRmaXJzdFJ1bGVzZXQgKXsKCQkJCSRvdXRwdXQtPmFkZCggJHNwYWNlICk7CgkJCX0KCQkJJGZpcnN0UnVsZXNldCA9IGZhbHNlOwoJCQkkcnVsZXNldE5vZGVzWyRpXS0+Z2VuQ1NTKCAkb3V0cHV0KTsKCQl9CgoJCWlmKCAhTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICYmICR0aGlzLT5maXJzdFJvb3QgKXsKCQkJJG91dHB1dC0+YWRkKCAiXG4iICk7CgkJfQoKCX0KCgoJZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKXsKCQlpZiggISR0aGlzLT5zZWxlY3RvcnMgKXsKCQkJcmV0dXJuOwoJCX0KCQlmb3JlYWNoKCR0aGlzLT5zZWxlY3RvcnMgYXMgJHNlbGVjdG9yKXsKCQkJJHNlbGVjdG9yLT5tYXJrUmVmZXJlbmNlZCgpOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gam9pblNlbGVjdG9ycyggJGNvbnRleHQsICRzZWxlY3RvcnMgKXsKCQkkcGF0aHMgPSBhcnJheSgpOwoJCWlmKCBpc19hcnJheSgkc2VsZWN0b3JzKSApewoJCQlmb3JlYWNoKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yKSB7CgkJCQkkdGhpcy0+am9pblNlbGVjdG9yKCAkcGF0aHMsICRjb250ZXh0LCAkc2VsZWN0b3IpOwoJCQl9CgkJfQoJCXJldHVybiAkcGF0aHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGpvaW5TZWxlY3RvciggJiRwYXRocywgJGNvbnRleHQsICRzZWxlY3Rvcil7CgoJCSRoYXNQYXJlbnRTZWxlY3RvciA9IGZhbHNlOwoKCQlmb3JlYWNoKCRzZWxlY3Rvci0+ZWxlbWVudHMgYXMgJGVsKSB7CgkJCWlmKCAkZWwtPnZhbHVlID09PSAnJicpIHsKCQkJCSRoYXNQYXJlbnRTZWxlY3RvciA9IHRydWU7CgkJCX0KCQl9CgoJCWlmKCAhJGhhc1BhcmVudFNlbGVjdG9yICl7CgkJCWlmKCAkY29udGV4dCApewoJCQkJZm9yZWFjaCgkY29udGV4dCBhcyAkY29udGV4dF9lbCl7CgkJCQkJJHBhdGhzW10gPSBhcnJheV9tZXJnZSgkY29udGV4dF9lbCwgYXJyYXkoJHNlbGVjdG9yKSApOwoJCQkJfQoJCQl9ZWxzZSB7CgkJCQkkcGF0aHNbXSA9IGFycmF5KCRzZWxlY3Rvcik7CgkJCX0KCQkJcmV0dXJuOwoJCX0KCgoJCS8vIFRoZSBwYXRocyBhcmUgW1tTZWxlY3Rvcl1dCgkJLy8gVGhlIGZpcnN0IGxpc3QgaXMgYSBsaXN0IG9mIGNvbW1hIHNlcGVyYXRlZCBzZWxlY3RvcnMKCQkvLyBUaGUgaW5uZXIgbGlzdCBpcyBhIGxpc3Qgb2YgaW5oZXJpdGFuY2Ugc2VwZXJhdGVkIHNlbGVjdG9ycwoJCS8vIGUuZy4KCQkvLyAuYSwgLmIgewoJCS8vICAgLmMgewoJCS8vICAgfQoJCS8vIH0KCQkvLyA9PSBbWy5hXSBbLmNdXSBbWy5iXSBbLmNdXQoJCS8vCgoJCS8vIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdG9yIHNvIGZhcgoJCSRjdXJyZW50RWxlbWVudHMgPSBhcnJheSgpOwoJCS8vIHRoZSBjdXJyZW50IGxpc3Qgb2YgbmV3IHNlbGVjdG9ycyB0byBhZGQgdG8gdGhlIHBhdGguCgkJLy8gV2Ugd2lsbCBidWlsZCBpdCB1cC4gV2UgaW5pdGlhdGUgaXQgd2l0aCBvbmUgZW1wdHkgc2VsZWN0b3IgYXMgd2UgIm11bHRpcGx5IiB0aGUgbmV3IHNlbGVjdG9ycwoJCS8vIGJ5IHRoZSBwYXJlbnRzCgkJJG5ld1NlbGVjdG9ycyA9IGFycmF5KGFycmF5KCkpOwoKCgkJZm9yZWFjaCggJHNlbGVjdG9yLT5lbGVtZW50cyBhcyAkZWwpewoKCQkJLy8gbm9uIHBhcmVudCByZWZlcmVuY2UgZWxlbWVudHMganVzdCBnZXQgYWRkZWQKCQkJaWYoICRlbC0+dmFsdWUgIT09ICcmJyApewoJCQkJJGN1cnJlbnRFbGVtZW50c1tdID0gJGVsOwoJCQl9IGVsc2UgewoJCQkJLy8gdGhlIG5ldyBsaXN0IG9mIHNlbGVjdG9ycyB0byBhZGQKCQkJCSRzZWxlY3RvcnNNdWx0aXBsaWVkID0gYXJyYXkoKTsKCgkJCQkvLyBtZXJnZSB0aGUgY3VycmVudCBsaXN0IG9mIG5vbiBwYXJlbnQgc2VsZWN0b3IgZWxlbWVudHMKCQkJCS8vIG9uIHRvIHRoZSBjdXJyZW50IGxpc3Qgb2Ygc2VsZWN0b3JzIHRvIGFkZAoJCQkJaWYoICRjdXJyZW50RWxlbWVudHMgKXsKCQkJCQkkdGhpcy0+bWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoICRjdXJyZW50RWxlbWVudHMsICRuZXdTZWxlY3RvcnMpOwoJCQkJfQoKCQkJCS8vIGxvb3AgdGhyb3VnaCBvdXIgY3VycmVudCBzZWxlY3RvcnMKCQkJCWZvcmVhY2goJG5ld1NlbGVjdG9ycyBhcyAkc2VsKXsKCgkJCQkJLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhbnkgcGFyZW50IHBhdGhzLCB0aGUgJiBtaWdodCBiZSBpbiBhIG1peGluIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQKCQkJCQkvLyB3aGV0aGVyIHRoZXJlIGFyZSBwYXJlbnRzIG9yIG5vdAoJCQkJCWlmKCAhJGNvbnRleHQgKXsKCQkJCQkJLy8gdGhlIGNvbWJpbmF0b3IgdXNlZCBvbiBlbCBzaG91bGQgbm93IGJlIGFwcGxpZWQgdG8gdGhlIG5leHQgZWxlbWVudCBpbnN0ZWFkIHNvIHRoYXQKCQkJCQkJLy8gaXQgaXMgbm90IGxvc3QKCQkJCQkJaWYoICRzZWwgKXsKCQkJCQkJCSRzZWxbMF0tPmVsZW1lbnRzID0gYXJyYXlfc2xpY2UoJHNlbFswXS0+ZWxlbWVudHMsMCk7CgkJCQkJCQkkc2VsWzBdLT5lbGVtZW50c1tdID0gbmV3IExlc3NfVHJlZV9FbGVtZW50KCRlbC0+Y29tYmluYXRvciwgJycsICRlbC0+aW5kZXgsICRlbC0+Y3VycmVudEZpbGVJbmZvICk7CgkJCQkJCX0KCQkJCQkJJHNlbGVjdG9yc011bHRpcGxpZWRbXSA9ICRzZWw7CgkJCQkJfWVsc2UgewoKCQkJCQkJLy8gYW5kIHRoZSBwYXJlbnQgc2VsZWN0b3JzCgkJCQkJCWZvcmVhY2goJGNvbnRleHQgYXMgJHBhcmVudFNlbCl7CgkJCQkJCQkvLyBXZSBuZWVkIHRvIHB1dCB0aGUgY3VycmVudCBzZWxlY3RvcnMKCQkJCQkJCS8vIHRoZW4gam9pbiB0aGUgbGFzdCBzZWxlY3RvcidzIGVsZW1lbnRzIG9uIHRvIHRoZSBwYXJlbnRzIHNlbGVjdG9ycwoKCQkJCQkJCS8vIG91ciBuZXcgc2VsZWN0b3IgcGF0aAoJCQkJCQkJJG5ld1NlbGVjdG9yUGF0aCA9IGFycmF5KCk7CgkJCQkJCQkvLyBzZWxlY3RvcnMgZnJvbSB0aGUgcGFyZW50IGFmdGVyIHRoZSBqb2luCgkJCQkJCQkkYWZ0ZXJQYXJlbnRKb2luID0gYXJyYXkoKTsKCQkJCQkJCSRuZXdKb2luZWRTZWxlY3RvckVtcHR5ID0gdHJ1ZTsKCgkJCQkJCQkvL2NvbnN0cnVjdCB0aGUgam9pbmVkIHNlbGVjdG9yIC0gaWYgJiBpcyB0aGUgZmlyc3QgdGhpbmcgdGhpcyB3aWxsIGJlIGVtcHR5LAoJCQkJCQkJLy8gaWYgbm90IG5ld0pvaW5lZFNlbGVjdG9yIHdpbGwgYmUgdGhlIGxhc3Qgc2V0IG9mIGVsZW1lbnRzIGluIHRoZSBzZWxlY3RvcgoJCQkJCQkJaWYoICRzZWwgKXsKCQkJCQkJCQkkbmV3U2VsZWN0b3JQYXRoID0gJHNlbDsKCQkJCQkJCQkkbGFzdFNlbGVjdG9yID0gYXJyYXlfcG9wKCRuZXdTZWxlY3RvclBhdGgpOwoJCQkJCQkJCSRuZXdKb2luZWRTZWxlY3RvciA9ICRzZWxlY3Rvci0+Y3JlYXRlRGVyaXZlZCggYXJyYXlfc2xpY2UoJGxhc3RTZWxlY3Rvci0+ZWxlbWVudHMsMCkgKTsKCQkJCQkJCQkkbmV3Sm9pbmVkU2VsZWN0b3JFbXB0eSA9IGZhbHNlOwoJCQkJCQkJfQoJCQkJCQkJZWxzZSB7CgkJCQkJCQkJJG5ld0pvaW5lZFNlbGVjdG9yID0gJHNlbGVjdG9yLT5jcmVhdGVEZXJpdmVkKGFycmF5KCkpOwoJCQkJCQkJfQoKCQkJCQkJCS8vcHV0IHRvZ2V0aGVyIHRoZSBwYXJlbnQgc2VsZWN0b3JzIGFmdGVyIHRoZSBqb2luCgkJCQkJCQlpZiAoIGNvdW50KCRwYXJlbnRTZWwpID4gMSkgewoJCQkJCQkJCSRhZnRlclBhcmVudEpvaW4gPSBhcnJheV9tZXJnZSgkYWZ0ZXJQYXJlbnRKb2luLCBhcnJheV9zbGljZSgkcGFyZW50U2VsLDEpICk7CgkJCQkJCQl9CgoJCQkJCQkJaWYgKCAkcGFyZW50U2VsICl7CgkJCQkJCQkJJG5ld0pvaW5lZFNlbGVjdG9yRW1wdHkgPSBmYWxzZTsKCgkJCQkJCQkJLy8gam9pbiB0aGUgZWxlbWVudHMgc28gZmFyIHdpdGggdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBhcmVudAoJCQkJCQkJCSRuZXdKb2luZWRTZWxlY3Rvci0+ZWxlbWVudHNbXSA9IG5ldyBMZXNzX1RyZWVfRWxlbWVudCggJGVsLT5jb21iaW5hdG9yLCAkcGFyZW50U2VsWzBdLT5lbGVtZW50c1swXS0+dmFsdWUsICRlbC0+aW5kZXgsICRlbC0+Y3VycmVudEZpbGVJbmZvKTsKCgkJCQkJCQkJJG5ld0pvaW5lZFNlbGVjdG9yLT5lbGVtZW50cyA9IGFycmF5X21lcmdlKCAkbmV3Sm9pbmVkU2VsZWN0b3ItPmVsZW1lbnRzLCBhcnJheV9zbGljZSgkcGFyZW50U2VsWzBdLT5lbGVtZW50cywgMSkgKTsKCQkJCQkJCX0KCgkJCQkJCQlpZiAoISRuZXdKb2luZWRTZWxlY3RvckVtcHR5KSB7CgkJCQkJCQkJLy8gbm93IGFkZCB0aGUgam9pbmVkIHNlbGVjdG9yCgkJCQkJCQkJJG5ld1NlbGVjdG9yUGF0aFtdID0gJG5ld0pvaW5lZFNlbGVjdG9yOwoJCQkJCQkJfQoKCQkJCQkJCS8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgcGFyZW50CgkJCQkJCQkkbmV3U2VsZWN0b3JQYXRoID0gYXJyYXlfbWVyZ2UoJG5ld1NlbGVjdG9yUGF0aCwgJGFmdGVyUGFyZW50Sm9pbik7CgoJCQkJCQkJLy8gYWRkIHRoYXQgdG8gb3VyIG5ldyBzZXQgb2Ygc2VsZWN0b3JzCgkJCQkJCQkkc2VsZWN0b3JzTXVsdGlwbGllZFtdID0gJG5ld1NlbGVjdG9yUGF0aDsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCgkJCQkvLyBvdXIgbmV3IHNlbGVjdG9ycyBoYXMgYmVlbiBtdWx0aXBsaWVkLCBzbyByZXNldCB0aGUgc3RhdGUKCQkJCSRuZXdTZWxlY3RvcnMgPSAkc2VsZWN0b3JzTXVsdGlwbGllZDsKCQkJCSRjdXJyZW50RWxlbWVudHMgPSBhcnJheSgpOwoJCQl9CgkJfQoKCQkvLyBpZiB3ZSBoYXZlIGFueSBlbGVtZW50cyBsZWZ0IG92ZXIgKGUuZy4gLmEmIC5iID09IC5iKQoJCS8vIGFkZCB0aGVtIG9uIHRvIGFsbCB0aGUgY3VycmVudCBzZWxlY3RvcnMKCQlpZiggJGN1cnJlbnRFbGVtZW50cyApewoJCQkkdGhpcy0+bWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoJGN1cnJlbnRFbGVtZW50cywgJG5ld1NlbGVjdG9ycyk7CgkJfQoJCWZvcmVhY2goICRuZXdTZWxlY3RvcnMgYXMgJG5ld19zZWwpewoJCQlpZiggJG5ld19zZWwgKXsKCQkJCSRwYXRoc1tdID0gJG5ld19zZWw7CgkJCX0KCQl9Cgl9CgoJZnVuY3Rpb24gbWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoICRlbGVtZW50cywgJiRzZWxlY3RvcnMpewoKCQlpZiggISRzZWxlY3RvcnMgKXsKCQkJJHNlbGVjdG9yc1tdID0gYXJyYXkoIG5ldyBMZXNzX1RyZWVfU2VsZWN0b3IoJGVsZW1lbnRzKSApOwoJCQlyZXR1cm47CgkJfQoKCgkJZm9yZWFjaCggJHNlbGVjdG9ycyBhcyAmJHNlbCl7CgoJCQkvLyBpZiB0aGUgcHJldmlvdXMgdGhpbmcgaW4gc2VsIGlzIGEgcGFyZW50IHRoaXMgbmVlZHMgdG8gam9pbiBvbiB0byBpdAoJCQlpZiggJHNlbCApewoJCQkJJGxhc3QgPSBjb3VudCgkc2VsKS0xOwoJCQkJJHNlbFskbGFzdF0gPSAkc2VsWyRsYXN0XS0+Y3JlYXRlRGVyaXZlZCggYXJyYXlfbWVyZ2UoJHNlbFskbGFzdF0tPmVsZW1lbnRzLCAkZWxlbWVudHMpICk7CgkJCX1lbHNlewoJCQkJJHNlbFtdID0gbmV3IExlc3NfVHJlZV9TZWxlY3RvciggJGVsZW1lbnRzICk7CgkJCX0KCQl9Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/RulesetCall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSdWxlc2V0Q2FsbAogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9SdWxlc2V0Q2FsbCBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHZhcmlhYmxlOwoJcHVibGljICR0eXBlID0gIlJ1bGVzZXRDYWxsIjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhcmlhYmxlKXsKCQkkdGhpcy0+dmFyaWFibGUgPSAkdmFyaWFibGU7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcikge30KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApewoJCSR2YXJpYWJsZSA9IG5ldyBMZXNzX1RyZWVfVmFyaWFibGUoJHRoaXMtPnZhcmlhYmxlKTsKCQkkZGV0YWNoZWRSdWxlc2V0ID0gJHZhcmlhYmxlLT5jb21waWxlKCRlbnYpOwoJCXJldHVybiAkZGV0YWNoZWRSdWxlc2V0LT5jYWxsRXZhbCgkZW52KTsKCX0KfQoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTZWxlY3RvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9TZWxlY3RvciBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJGVsZW1lbnRzOwoJcHVibGljICRjb25kaXRpb247CglwdWJsaWMgJGV4dGVuZExpc3QgPSBhcnJheSgpOwoJcHVibGljICRfY3NzOwoJcHVibGljICRpbmRleDsKCXB1YmxpYyAkZXZhbGRDb25kaXRpb24gPSBmYWxzZTsKCXB1YmxpYyAkdHlwZSA9ICdTZWxlY3Rvcic7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbyA9IGFycmF5KCk7CglwdWJsaWMgJGlzUmVmZXJlbmNlZDsKCXB1YmxpYyAkbWVkaWFFbXB0eTsKCglwdWJsaWMgJGVsZW1lbnRzX2xlbiA9IDA7CgoJcHVibGljICRfb2VsZW1lbnRzOwoJcHVibGljICRfb2VsZW1lbnRzX2xlbjsKCXB1YmxpYyAkY2FjaGVhYmxlID0gdHJ1ZTsKCgkvKioKCSAqIEBwYXJhbSBib29sZWFuICRpc1JlZmVyZW5jZWQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkZWxlbWVudHMsICRleHRlbmRMaXN0ID0gYXJyYXkoKSAsICRjb25kaXRpb24gPSBudWxsLCAkaW5kZXg9bnVsbCwgJGN1cnJlbnRGaWxlSW5mbz1udWxsLCAkaXNSZWZlcmVuY2VkPW51bGwgKXsKCgkJJHRoaXMtPmVsZW1lbnRzID0gJGVsZW1lbnRzOwoJCSR0aGlzLT5lbGVtZW50c19sZW4gPSBjb3VudCgkZWxlbWVudHMpOwoJCSR0aGlzLT5leHRlbmRMaXN0ID0gJGV4dGVuZExpc3Q7CgkJJHRoaXMtPmNvbmRpdGlvbiA9ICRjb25kaXRpb247CgkJaWYoICRjdXJyZW50RmlsZUluZm8gKXsKCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87CgkJfQoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSAkaXNSZWZlcmVuY2VkOwoJCWlmKCAhJGNvbmRpdGlvbiApewoJCQkkdGhpcy0+ZXZhbGRDb25kaXRpb24gPSB0cnVlOwoJCX0KCgkJJHRoaXMtPkNhY2hlRWxlbWVudHMoKTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCR2aXNpdG9yKSB7CgkJJHRoaXMtPmVsZW1lbnRzID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoJHRoaXMtPmVsZW1lbnRzKTsKCQkkdGhpcy0+ZXh0ZW5kTGlzdCA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5leHRlbmRMaXN0KTsKCQlpZiggJHRoaXMtPmNvbmRpdGlvbiApewoJCQkkdGhpcy0+Y29uZGl0aW9uID0gJHZpc2l0b3ItPnZpc2l0T2JqKCR0aGlzLT5jb25kaXRpb24pOwoJCX0KCgkJaWYoICR2aXNpdG9yIGluc3RhbmNlb2YgTGVzc19WaXNpdG9yX2V4dGVuZEZpbmRlciApewoJCQkkdGhpcy0+Q2FjaGVFbGVtZW50cygpOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlRGVyaXZlZCggJGVsZW1lbnRzLCAkZXh0ZW5kTGlzdCA9IG51bGwsICRldmFsZENvbmRpdGlvbiA9IG51bGwgKXsKCQkkbmV3U2VsZWN0b3IgPSBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCAkZWxlbWVudHMsICgkZXh0ZW5kTGlzdCA/ICRleHRlbmRMaXN0IDogJHRoaXMtPmV4dGVuZExpc3QpLCBudWxsLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pc1JlZmVyZW5jZWQpOwoJCSRuZXdTZWxlY3Rvci0+ZXZhbGRDb25kaXRpb24gPSAkZXZhbGRDb25kaXRpb24gPyAkZXZhbGRDb25kaXRpb24gOiAkdGhpcy0+ZXZhbGRDb25kaXRpb247CgkJcmV0dXJuICRuZXdTZWxlY3RvcjsKCX0KCgoJcHVibGljIGZ1bmN0aW9uIG1hdGNoKCAkb3RoZXIgKXsKCgkJaWYoICEkb3RoZXItPl9vZWxlbWVudHMgfHwgKCR0aGlzLT5lbGVtZW50c19sZW4gPCAkb3RoZXItPl9vZWxlbWVudHNfbGVuKSApewoJCQlyZXR1cm4gMDsKCQl9CgoJCWZvciggJGkgPSAwOyAkaSA8ICRvdGhlci0+X29lbGVtZW50c19sZW47ICRpKysgKXsKCQkJaWYoICR0aGlzLT5lbGVtZW50c1skaV0tPnZhbHVlICE9PSAkb3RoZXItPl9vZWxlbWVudHNbJGldKSB7CgkJCQlyZXR1cm4gMDsKCQkJfQoJCX0KCgkJcmV0dXJuICRvdGhlci0+X29lbGVtZW50c19sZW47IC8vIHJldHVybiBudW1iZXIgb2YgbWF0Y2hlZCBlbGVtZW50cwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gQ2FjaGVFbGVtZW50cygpewoKCQkkdGhpcy0+X29lbGVtZW50cyA9IGFycmF5KCk7CgkJJGNzcyA9ICcnOwoKCQlmb3JlYWNoKCR0aGlzLT5lbGVtZW50cyBhcyAkdil7CgoJCQkkY3NzIC49ICR2LT5jb21iaW5hdG9yOwoJCQlpZiggISR2LT52YWx1ZV9pc19vYmplY3QgKXsKCQkJCSRjc3MgLj0gJHYtPnZhbHVlOwoJCQkJY29udGludWU7CgkJCX0KCgkJCWlmKCAhcHJvcGVydHlfZXhpc3RzKCR2LT52YWx1ZSwndmFsdWUnKSB8fCAhaXNfc3RyaW5nKCR2LT52YWx1ZS0+dmFsdWUpICl7CgkJCQkkdGhpcy0+Y2FjaGVhYmxlID0gZmFsc2U7CgkJCQlyZXR1cm47CgkJCX0KCQkJJGNzcyAuPSAkdi0+dmFsdWUtPnZhbHVlOwoJCX0KCgkJJHRoaXMtPl9vZWxlbWVudHNfbGVuID0gcHJlZ19tYXRjaF9hbGwoJy9bLCYjXC5cdy1dKD86W1x3LV18KD86XFxcXC4pKSovJywgJGNzcywgJG1hdGNoZXMpOwoJCWlmKCAkdGhpcy0+X29lbGVtZW50c19sZW4gKXsKCQkJJHRoaXMtPl9vZWxlbWVudHMgPSAkbWF0Y2hlc1swXTsKCgkJCWlmKCAkdGhpcy0+X29lbGVtZW50c1swXSA9PT0gJyYnICl7CgkJCQlhcnJheV9zaGlmdCgkdGhpcy0+X29lbGVtZW50cyk7CgkJCQkkdGhpcy0+X29lbGVtZW50c19sZW4tLTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNKdXN0UGFyZW50U2VsZWN0b3IoKXsKCQlyZXR1cm4gISR0aGlzLT5tZWRpYUVtcHR5ICYmCgkJCWNvdW50KCR0aGlzLT5lbGVtZW50cykgPT09IDEgJiYKCQkJJHRoaXMtPmVsZW1lbnRzWzBdLT52YWx1ZSA9PT0gJyYnICYmCgkJCSgkdGhpcy0+ZWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPT09ICcgJyB8fCAkdGhpcy0+ZWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPT09ICcnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkZW52KSB7CgoJCSRlbGVtZW50cyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkdGhpcy0+ZWxlbWVudHMgYXMgJGVsKXsKCQkJJGVsZW1lbnRzW10gPSAkZWwtPmNvbXBpbGUoJGVudik7CgkJfQoKCQkkZXh0ZW5kTGlzdCA9IGFycmF5KCk7CgkJZm9yZWFjaCgkdGhpcy0+ZXh0ZW5kTGlzdCBhcyAkZWwpewoJCQkkZXh0ZW5kTGlzdFtdID0gJGVsLT5jb21waWxlKCRlbCk7CgkJfQoKCQkkZXZhbGRDb25kaXRpb24gPSBmYWxzZTsKCQlpZiggJHRoaXMtPmNvbmRpdGlvbiApewoJCQkkZXZhbGRDb25kaXRpb24gPSAkdGhpcy0+Y29uZGl0aW9uLT5jb21waWxlKCRlbnYpOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jcmVhdGVEZXJpdmVkKCAkZWxlbWVudHMsICRleHRlbmRMaXN0LCAkZXZhbGRDb25kaXRpb24gKTsKCX0KCgoJLyoqCgkgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCgkgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQsICRmaXJzdFNlbGVjdG9yID0gdHJ1ZSApewoKCQlpZiggISRmaXJzdFNlbGVjdG9yICYmICR0aGlzLT5lbGVtZW50c1swXS0+Y29tYmluYXRvciA9PT0gIiIgKXsKCQkJJG91dHB1dC0+YWRkKCcgJywgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4KTsKCQl9CgoJCWZvcmVhY2goJHRoaXMtPmVsZW1lbnRzIGFzICRlbGVtZW50KXsKCQkJJGVsZW1lbnQtPmdlbkNTUyggJG91dHB1dCApOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKXsKCQkkdGhpcy0+aXNSZWZlcmVuY2VkID0gdHJ1ZTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXNSZWZlcmVuY2VkKCl7CgkJcmV0dXJuICFpc3NldCgkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSkgfHwgISR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddIHx8ICR0aGlzLT5pc1JlZmVyZW5jZWQ7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldElzT3V0cHV0KCl7CgkJcmV0dXJuICR0aGlzLT5ldmFsZENvbmRpdGlvbjsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/UnicodeDescriptor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVbmljb2RlRGVzY3JpcHRvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9Vbmljb2RlRGVzY3JpcHRvciBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHZhbHVlOwoJcHVibGljICR0eXBlID0gJ1VuaWNvZGVEZXNjcmlwdG9yJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKXsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkb3V0cHV0LT5hZGQoICR0aGlzLT52YWx1ZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CgkJcmV0dXJuICR0aGlzOwoJfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Unit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVbml0CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX1VuaXQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJdmFyICRudW1lcmF0b3IgPSBhcnJheSgpOwoJdmFyICRkZW5vbWluYXRvciA9IGFycmF5KCk7CglwdWJsaWMgJGJhY2t1cFVuaXQ7CglwdWJsaWMgJHR5cGUgPSAnVW5pdCc7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRudW1lcmF0b3IgPSBhcnJheSgpLCAkZGVub21pbmF0b3IgPSBhcnJheSgpLCAkYmFja3VwVW5pdCA9IG51bGwgKXsKCQkkdGhpcy0+bnVtZXJhdG9yID0gJG51bWVyYXRvcjsKCQkkdGhpcy0+ZGVub21pbmF0b3IgPSAkZGVub21pbmF0b3I7CgkJJHRoaXMtPmJhY2t1cFVuaXQgPSAkYmFja3VwVW5pdDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jbG9uZSgpewoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgoJCWlmKCAkdGhpcy0+bnVtZXJhdG9yICl7CgkJCSRvdXRwdXQtPmFkZCggJHRoaXMtPm51bWVyYXRvclswXSApOwoJCX1lbHNlaWYoICR0aGlzLT5kZW5vbWluYXRvciApewoJCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5kZW5vbWluYXRvclswXSApOwoJCX1lbHNlaWYoICFMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdFVuaXRzJ10gJiYgJHRoaXMtPmJhY2t1cFVuaXQgKXsKCQkJJG91dHB1dC0+YWRkKCAkdGhpcy0+YmFja3VwVW5pdCApOwoJCQlyZXR1cm4gOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoKXsKCQkkcmV0dXJuU3RyID0gaW1wbG9kZSgnKicsJHRoaXMtPm51bWVyYXRvcik7CgkJZm9yZWFjaCgkdGhpcy0+ZGVub21pbmF0b3IgYXMgJGQpewoJCQkkcmV0dXJuU3RyIC49ICcvJy4kZDsKCQl9CgkJcmV0dXJuICRyZXR1cm5TdHI7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKXsKCQlyZXR1cm4gJHRoaXMtPnRvU3RyaW5nKCk7Cgl9CgoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9Vbml0ICRvdGhlcgoJICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGFyZSgkb3RoZXIpIHsKCQlyZXR1cm4gJHRoaXMtPmlzKCAkb3RoZXItPnRvU3RyaW5nKCkgKSA/IDAgOiAtMTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXMoJHVuaXRTdHJpbmcpewoJCXJldHVybiAkdGhpcy0+dG9TdHJpbmcoKSA9PT0gJHVuaXRTdHJpbmc7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzTGVuZ3RoKCl7CgkJJGNzcyA9ICR0aGlzLT50b0NTUygpOwoJCXJldHVybiAhIXByZWdfbWF0Y2goJy9weHxlbXwlfGlufGNtfG1tfHBjfHB0fGV4LycsJGNzcyk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzQW5nbGUoKSB7CgkJcmV0dXJuIGlzc2V0KCBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zOjokYW5nbGVbJHRoaXMtPnRvQ1NTKCldICk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzRW1wdHkoKXsKCQlyZXR1cm4gISR0aGlzLT5udW1lcmF0b3IgJiYgISR0aGlzLT5kZW5vbWluYXRvcjsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTaW5ndWxhcigpIHsKCQlyZXR1cm4gY291bnQoJHRoaXMtPm51bWVyYXRvcikgPD0gMSAmJiAhJHRoaXMtPmRlbm9taW5hdG9yOwoJfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gdXNlZFVuaXRzKCl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgoJCWZvcmVhY2goTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JGdyb3VwcyBhcyAkZ3JvdXBOYW1lKXsKCQkJJGdyb3VwID0gTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JHskZ3JvdXBOYW1lfTsKCgkJCWZvcmVhY2goJHRoaXMtPm51bWVyYXRvciBhcyAkYXRvbWljVW5pdCl7CgkJCQlpZiggaXNzZXQoJGdyb3VwWyRhdG9taWNVbml0XSkgJiYgIWlzc2V0KCRyZXN1bHRbJGdyb3VwTmFtZV0pICl7CgkJCQkJJHJlc3VsdFskZ3JvdXBOYW1lXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoKCR0aGlzLT5kZW5vbWluYXRvciBhcyAkYXRvbWljVW5pdCl7CgkJCQlpZiggaXNzZXQoJGdyb3VwWyRhdG9taWNVbml0XSkgJiYgIWlzc2V0KCRyZXN1bHRbJGdyb3VwTmFtZV0pICl7CgkJCQkJJHJlc3VsdFskZ3JvdXBOYW1lXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCl7CgkJJGNvdW50ZXIgPSBhcnJheSgpOwoJCSRiYWNrdXAgPSBudWxsOwoKCQlmb3JlYWNoKCR0aGlzLT5udW1lcmF0b3IgYXMgJGF0b21pY1VuaXQpewoJCQlpZiggISRiYWNrdXAgKXsKCQkJCSRiYWNrdXAgPSAkYXRvbWljVW5pdDsKCQkJfQoJCQkkY291bnRlclskYXRvbWljVW5pdF0gPSAoIGlzc2V0KCRjb3VudGVyWyRhdG9taWNVbml0XSkgPyAkY291bnRlclskYXRvbWljVW5pdF0gOiAwKSArIDE7CgkJfQoKCQlmb3JlYWNoKCR0aGlzLT5kZW5vbWluYXRvciBhcyAkYXRvbWljVW5pdCl7CgkJCWlmKCAhJGJhY2t1cCApewoJCQkJJGJhY2t1cCA9ICRhdG9taWNVbml0OwoJCQl9CgkJCSRjb3VudGVyWyRhdG9taWNVbml0XSA9ICggaXNzZXQoJGNvdW50ZXJbJGF0b21pY1VuaXRdKSA/ICRjb3VudGVyWyRhdG9taWNVbml0XSA6IDApIC0gMTsKCQl9CgoJCSR0aGlzLT5udW1lcmF0b3IgPSBhcnJheSgpOwoJCSR0aGlzLT5kZW5vbWluYXRvciA9IGFycmF5KCk7CgoJCWZvcmVhY2goJGNvdW50ZXIgYXMgJGF0b21pY1VuaXQgPT4gJGNvdW50KXsKCQkJaWYoICRjb3VudCA+IDAgKXsKCQkJCWZvciggJGkgPSAwOyAkaSA8ICRjb3VudDsgJGkrKyApewoJCQkJCSR0aGlzLT5udW1lcmF0b3JbXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9ZWxzZWlmKCAkY291bnQgPCAwICl7CgkJCQlmb3IoICRpID0gMDsgJGkgPCAtJGNvdW50OyAkaSsrICl7CgkJCQkJJHRoaXMtPmRlbm9taW5hdG9yW10gPSAkYXRvbWljVW5pdDsKCQkJCX0KCQkJfQoJCX0KCgkJaWYoICEkdGhpcy0+bnVtZXJhdG9yICYmICEkdGhpcy0+ZGVub21pbmF0b3IgJiYgJGJhY2t1cCApewoJCQkkdGhpcy0+YmFja3VwVW5pdCA9ICRiYWNrdXA7CgkJfQoKCQlzb3J0KCR0aGlzLT5udW1lcmF0b3IpOwoJCXNvcnQoJHRoaXMtPmRlbm9taW5hdG9yKTsKCX0KCgp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/UnitConversions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVbml0Q29udmVyc2lvbnMKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zewoKCXB1YmxpYyBzdGF0aWMgJGdyb3VwcyA9IGFycmF5KCdsZW5ndGgnLCdkdXJhdGlvbicsJ2FuZ2xlJyk7CgoJcHVibGljIHN0YXRpYyAkbGVuZ3RoID0gYXJyYXkoCgkJJ20nPT4gMSwKCQknY20nPT4gMC4wMSwKCQknbW0nPT4gMC4wMDEsCgkJJ2luJz0+IDAuMDI1NCwKCQkncHgnPT4gMC4wMDAyNjQ1ODMsIC8vIDAuMDI1NCAvIDk2LAoJCSdwdCc9PiAwLjAwMDM1Mjc3OCwgLy8gMC4wMjU0IC8gNzIsCgkJJ3BjJz0+IDAuMDA0MjMzMzMzLCAvLyAwLjAyNTQgLyA3MiAqIDEyCgkJKTsKCglwdWJsaWMgc3RhdGljICRkdXJhdGlvbiA9IGFycmF5KAoJCSdzJz0+IDEsCgkJJ21zJz0+IDAuMDAxCgkJKTsKCglwdWJsaWMgc3RhdGljICRhbmdsZSA9IGFycmF5KAoJCSdyYWQnID0+IDAuMTU5MTU0OTQzMDkxOSwJLy8gMS8oMipNX1BJKSwKCQknZGVnJyA9PiAwLjAwMjc3Nzc3OCwgCQkvLyAxLzM2MCwKCQknZ3JhZCc9PiAwLjAwMjUsCQkJLy8gMS80MDAsCgkJJ3R1cm4nPT4gMQoJCSk7Cgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Url.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVcmwKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVXJsIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkYXR0cnM7CglwdWJsaWMgJHZhbHVlOwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJGlzRXZhbGQ7CglwdWJsaWMgJHR5cGUgPSAnVXJsJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgJGlzRXZhbGQgPSBudWxsKXsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87CgkJJHRoaXMtPmlzRXZhbGQgPSAkaXNFdmFsZDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaigkdGhpcy0+dmFsdWUpOwoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAndXJsKCcgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJCSRvdXRwdXQtPmFkZCggJyknICk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19GdW5jdGlvbnMgJGN0eAoJICovCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkY3R4KXsKCQkkdmFsID0gJHRoaXMtPnZhbHVlLT5jb21waWxlKCRjdHgpOwoKCQlpZiggISR0aGlzLT5pc0V2YWxkICl7CgkJCS8vIEFkZCB0aGUgYmFzZSBwYXRoIGlmIHRoZSBVUkwgaXMgcmVsYXRpdmUKCQkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1sncmVsYXRpdmVVcmxzJ10KCQkJCSYmICR0aGlzLT5jdXJyZW50RmlsZUluZm8KCQkJCSYmIGlzX3N0cmluZygkdmFsLT52YWx1ZSkKCQkJCSYmIExlc3NfRW52aXJvbm1lbnQ6OmlzUGF0aFJlbGF0aXZlKCR2YWwtPnZhbHVlKQoJCQkpewoJCQkJJHJvb3RwYXRoID0gJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sndXJpX3Jvb3QnXTsKCQkJCWlmICggISR2YWwtPnF1b3RlICl7CgkJCQkJJHJvb3RwYXRoID0gcHJlZ19yZXBsYWNlKCcvW1woXClcJyJcc10vJywgJ1xcJDEnLCAkcm9vdHBhdGggKTsKCQkJCX0KCQkJCSR2YWwtPnZhbHVlID0gJHJvb3RwYXRoIC4gJHZhbC0+dmFsdWU7CgkJCX0KCgkJCSR2YWwtPnZhbHVlID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCggJHZhbC0+dmFsdWUpOwoJCX0KCgkJLy8gQWRkIGNhY2hlIGJ1c3RlciBpZiBlbmFibGVkCgkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1sndXJsQXJncyddICl7CgkJCWlmKCAhcHJlZ19tYXRjaCgnL15ccypkYXRhOi8nLCR2YWwtPnZhbHVlKSApewoJCQkJJGRlbGltaXRlciA9IHN0cnBvcygkdmFsLT52YWx1ZSwnPycpID09PSBmYWxzZSA/ICc/JyA6ICcmJzsKCQkJCSR1cmxBcmdzID0gJGRlbGltaXRlciAuIExlc3NfUGFyc2VyOjokb3B0aW9uc1sndXJsQXJncyddOwoJCQkJJGhhc2hfcG9zID0gc3RycG9zKCR2YWwtPnZhbHVlLCcjJyk7CgkJCQlpZiggJGhhc2hfcG9zICE9PSBmYWxzZSApewoJCQkJCSR2YWwtPnZhbHVlID0gc3Vic3RyX3JlcGxhY2UoJHZhbC0+dmFsdWUsJHVybEFyZ3MsICRoYXNoX3BvcywgMCk7CgkJCQl9IGVsc2UgewoJCQkJCSR2YWwtPnZhbHVlIC49ICR1cmxBcmdzOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9VUkwoJHZhbCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgdHJ1ZSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Value.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBWYWx1ZQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9WYWx1ZSBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHR5cGUgPSAnVmFsdWUnOwoJcHVibGljICR2YWx1ZTsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKXsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcikgewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT52YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgoJCSRyZXQgPSBhcnJheSgpOwoJCSRpID0gMDsKCQlmb3JlYWNoKCR0aGlzLT52YWx1ZSBhcyAkaSA9PiAkdil7CgkJCSRyZXRbXSA9ICR2LT5jb21waWxlKCRlbnYpOwoJCX0KCQlpZiggJGkgPiAwICl7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX1ZhbHVlKCRyZXQpOwoJCX0KCQlyZXR1cm4gJHJldFswXTsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJGxlbiA9IGNvdW50KCR0aGlzLT52YWx1ZSk7CgkJZm9yKCRpID0gMDsgJGkgPCAkbGVuOyAkaSsrICl7CgkJCSR0aGlzLT52YWx1ZVskaV0tPmdlbkNTUyggJG91dHB1dCApOwoJCQlpZiggJGkrMSA8ICRsZW4gKXsKCQkJCSRvdXRwdXQtPmFkZCggTGVzc19FbnZpcm9ubWVudDo6JF9vdXRwdXRNYXBbJywnXSApOwoJCQl9CgkJfQoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Variable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBWYXJpYWJsZQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9WYXJpYWJsZSBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJG5hbWU7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJGV2YWx1YXRpbmcgPSBmYWxzZTsKCXB1YmxpYyAkdHlwZSA9ICdWYXJpYWJsZSc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwpIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkZW52KSB7CgoJCWlmKCAkdGhpcy0+bmFtZVsxXSA9PT0gJ0AnICl7CgkJCSR2ID0gbmV3IExlc3NfVHJlZV9WYXJpYWJsZShzdWJzdHIoJHRoaXMtPm5hbWUsIDEpLCAkdGhpcy0+aW5kZXggKyAxLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvKTsKCQkJJG5hbWUgPSAnQCcgLiAkdi0+Y29tcGlsZSgkZW52KS0+dmFsdWU7CgkJfWVsc2V7CgkJCSRuYW1lID0gJHRoaXMtPm5hbWU7CgkJfQoKCQlpZiAoJHRoaXMtPmV2YWx1YXRpbmcpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJSZWN1cnNpdmUgdmFyaWFibGUgZGVmaW5pdGlvbiBmb3IgIiAuICRuYW1lLCBudWxsLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJCX0KCgkJJHRoaXMtPmV2YWx1YXRpbmcgPSB0cnVlOwoKCQlmb3JlYWNoKCRlbnYtPmZyYW1lcyBhcyAkZnJhbWUpewoJCQlpZiggJHYgPSAkZnJhbWUtPnZhcmlhYmxlKCRuYW1lKSApewoJCQkJJHIgPSAkdi0+dmFsdWUtPmNvbXBpbGUoJGVudik7CgkJCQkkdGhpcy0+ZXZhbHVhdGluZyA9IGZhbHNlOwoJCQkJcmV0dXJuICRyOwoJCQl9CgkJfQoKCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoInZhcmlhYmxlICIgLiAkbmFtZSAuICIgaXMgdW5kZWZpbmVkIGluIGZpbGUgIi4kdGhpcy0+Y3VycmVudEZpbGVJbmZvWyJmaWxlbmFtZSJdLCBudWxsLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Version.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSZWxlYXNlIG51bWJlcnMKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB2ZXJzaW9uCiAqLwpjbGFzcyBMZXNzX1ZlcnNpb257CgoJY29uc3QgdmVyc2lvbiA9ICcxLjcuMC4xMCc7CQkJLy8gVGhlIGN1cnJlbnQgYnVpbGQgbnVtYmVyIG9mIGxlc3MucGhwCgljb25zdCBsZXNzX3ZlcnNpb24gPSAnMS43LjAnOwkJLy8gVGhlIGxlc3MuanMgdmVyc2lvbiB0aGF0IHRoaXMgYnVpbGQgc2hvdWxkIGJlIGNvbXBhdGlibGUgd2l0aAoJY29uc3QgY2FjaGVfdmVyc2lvbiA9ICcxNzAnOwkJLy8gVGhlIHBhcnNlciBjYWNoZSB2ZXJzaW9uCgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBWaXNpdG9yCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdmlzaXRvcgogKi8KY2xhc3MgTGVzc19WaXNpdG9yewoKCXByb3RlY3RlZCAkbWV0aG9kcyA9IGFycmF5KCk7Cglwcm90ZWN0ZWQgJF92aXNpdEZuQ2FjaGUgPSBhcnJheSgpOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpewoJCSR0aGlzLT5fdmlzaXRGbkNhY2hlID0gZ2V0X2NsYXNzX21ldGhvZHMoZ2V0X2NsYXNzKCR0aGlzKSk7CgkJJHRoaXMtPl92aXNpdEZuQ2FjaGUgPSBhcnJheV9mbGlwKCR0aGlzLT5fdmlzaXRGbkNhY2hlKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRPYmooICRub2RlICl7CgoJCSRmdW5jTmFtZSA9ICd2aXNpdCcuJG5vZGUtPnR5cGU7CgkJaWYoIGlzc2V0KCR0aGlzLT5fdmlzaXRGbkNhY2hlWyRmdW5jTmFtZV0pICl7CgoJCQkkdmlzaXREZWVwZXIgPSB0cnVlOwoJCQkkdGhpcy0+JGZ1bmNOYW1lKCAkbm9kZSwgJHZpc2l0RGVlcGVyICk7CgoJCQlpZiggJHZpc2l0RGVlcGVyICl7CgkJCQkkbm9kZS0+YWNjZXB0KCR0aGlzKTsKCQkJfQoKCQkJJGZ1bmNOYW1lID0gJGZ1bmNOYW1lIC4gIk91dCI7CgkJCWlmKCBpc3NldCgkdGhpcy0+X3Zpc2l0Rm5DYWNoZVskZnVuY05hbWVdKSApewoJCQkJJHRoaXMtPiRmdW5jTmFtZSggJG5vZGUgKTsKCQkJfQoKCQl9ZWxzZXsKCQkJJG5vZGUtPmFjY2VwdCgkdGhpcyk7CgkJfQoKCQlyZXR1cm4gJG5vZGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0QXJyYXkoICRub2RlcyApewoKCQlhcnJheV9tYXAoIGFycmF5KCR0aGlzLCd2aXNpdE9iaicpLCAkbm9kZXMpOwoJCXJldHVybiAkbm9kZXM7Cgl9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/extendFinder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFeHRlbmQgRmluZGVyIFZpc2l0b3IKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB2aXNpdG9yCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3JfZXh0ZW5kRmluZGVyIGV4dGVuZHMgTGVzc19WaXNpdG9yewoKCXB1YmxpYyAkY29udGV4dHMgPSBhcnJheSgpOwoJcHVibGljICRhbGxFeHRlbmRzU3RhY2s7CglwdWJsaWMgJGZvdW5kRXh0ZW5kczsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXsKCQkkdGhpcy0+Y29udGV4dHMgPSBhcnJheSgpOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgPSBhcnJheShhcnJheSgpKTsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlX1J1bGVzZXQgJHJvb3QKCSAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJ1bigkcm9vdCl7CgkJJHJvb3QgPSAkdGhpcy0+dmlzaXRPYmooJHJvb3QpOwoJCSRyb290LT5hbGxFeHRlbmRzID0mICR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbMF07CgkJcmV0dXJuICRyb290OwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGUoJHJ1bGVOb2RlLCAmJHZpc2l0RGVlcGVyICl7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uKCAkbWl4aW5EZWZpbml0aW9uTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoJHJ1bGVzZXROb2RlKXsKCgkJaWYoICRydWxlc2V0Tm9kZS0+cm9vdCApewoJCQlyZXR1cm47CgkJfQoKCQkkYWxsU2VsZWN0b3JzRXh0ZW5kTGlzdCA9IGFycmF5KCk7CgoJCS8vIGdldCAmOmV4dGVuZCguYSk7IHJ1bGVzIHdoaWNoIGFwcGx5IHRvIGFsbCBzZWxlY3RvcnMgaW4gdGhpcyBydWxlc2V0CgkJaWYoICRydWxlc2V0Tm9kZS0+cnVsZXMgKXsKCQkJZm9yZWFjaCgkcnVsZXNldE5vZGUtPnJ1bGVzIGFzICRydWxlKXsKCQkJCWlmKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHRlbmQgKXsKCQkJCQkkYWxsU2VsZWN0b3JzRXh0ZW5kTGlzdFtdID0gJHJ1bGU7CgkJCQkJJHJ1bGVzZXROb2RlLT5leHRlbmRPbkV2ZXJ5UGF0aCA9IHRydWU7CgkJCQl9CgkJCX0KCQl9CgoKCQkvLyBub3cgZmluZCBldmVyeSBzZWxlY3RvciBhbmQgYXBwbHkgdGhlIGV4dGVuZHMgdGhhdCBhcHBseSB0byBhbGwgZXh0ZW5kcwoJCS8vIGFuZCB0aGUgb25lcyB3aGljaCBhcHBseSB0byBhbiBpbmRpdmlkdWFsIGV4dGVuZAoJCWZvcmVhY2goJHJ1bGVzZXROb2RlLT5wYXRocyBhcyAkc2VsZWN0b3JQYXRoKXsKCQkJJHNlbGVjdG9yID0gZW5kKCRzZWxlY3RvclBhdGgpOyAvLyRzZWxlY3RvclBhdGhbIGNvdW50KCRzZWxlY3RvclBhdGgpLTFdOwoKCQkJJGogPSAwOwoJCQlmb3JlYWNoKCRzZWxlY3Rvci0+ZXh0ZW5kTGlzdCBhcyAkZXh0ZW5kKXsKCQkJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tQdXNoKCRydWxlc2V0Tm9kZSwgJHNlbGVjdG9yUGF0aCwgJGV4dGVuZCwgJGopOwoJCQl9CgkJCWZvcmVhY2goJGFsbFNlbGVjdG9yc0V4dGVuZExpc3QgYXMgJGV4dGVuZCl7CgkJCQkkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrUHVzaCgkcnVsZXNldE5vZGUsICRzZWxlY3RvclBhdGgsICRleHRlbmQsICRqKTsKCQkJfQoJCX0KCgkJJHRoaXMtPmNvbnRleHRzW10gPSAkcnVsZXNldE5vZGUtPnNlbGVjdG9yczsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsRXh0ZW5kc1N0YWNrUHVzaCgkcnVsZXNldE5vZGUsICRzZWxlY3RvclBhdGgsICRleHRlbmQsICYkail7CgkJJHRoaXMtPmZvdW5kRXh0ZW5kcyA9IHRydWU7CgkJJGV4dGVuZCA9IGNsb25lICRleHRlbmQ7CgkJJGV4dGVuZC0+ZmluZFNlbGZTZWxlY3RvcnMoICRzZWxlY3RvclBhdGggKTsKCQkkZXh0ZW5kLT5ydWxlc2V0ID0gJHJ1bGVzZXROb2RlOwoJCWlmKCAkaiA9PT0gMCApewoJCQkkZXh0ZW5kLT5maXJzdEV4dGVuZE9uVGhpc1NlbGVjdG9yUGF0aCA9IHRydWU7CgkJfQoKCQkkZW5kX2tleSA9IGNvdW50KCR0aGlzLT5hbGxFeHRlbmRzU3RhY2spLTE7CgkJJHRoaXMtPmFsbEV4dGVuZHNTdGFja1skZW5kX2tleV1bXSA9ICRleHRlbmQ7CgkJJGorKzsKCX0KCgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZXNldE91dCggJHJ1bGVzZXROb2RlICl7CgkJaWYoICFpc19vYmplY3QoJHJ1bGVzZXROb2RlKSB8fCAhJHJ1bGVzZXROb2RlLT5yb290ICl7CgkJCWFycmF5X3BvcCgkdGhpcy0+Y29udGV4dHMpOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNZWRpYSggJG1lZGlhTm9kZSApewoJCSRtZWRpYU5vZGUtPmFsbEV4dGVuZHMgPSBhcnJheSgpOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbXSA9JiAkbWVkaWFOb2RlLT5hbGxFeHRlbmRzOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1lZGlhT3V0KCl7CgkJYXJyYXlfcG9wKCR0aGlzLT5hbGxFeHRlbmRzU3RhY2spOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZSggJGRpcmVjdGl2ZU5vZGUgKXsKCQkkZGlyZWN0aXZlTm9kZS0+YWxsRXh0ZW5kcyA9IGFycmF5KCk7CgkJJHRoaXMtPmFsbEV4dGVuZHNTdGFja1tdID0mICRkaXJlY3RpdmVOb2RlLT5hbGxFeHRlbmRzOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZU91dCgpewoJCWFycmF5X3BvcCgkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrKTsKCX0KfQoKCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCmNsYXNzIExlc3NfVmlzaXRvcl9pbXBvcnQgZXh0ZW5kcyBMZXNzX1Zpc2l0b3JSZXBsYWNpbmd7CgoJcHVibGljICRfdmlzaXRvcjsKCXB1YmxpYyAkX2ltcG9ydGVyOwoJcHVibGljICRpbXBvcnRDb3VudDsKCglmdW5jdGlvbiBfX2NvbnN0cnVjdCggJGV2YWxFbnYgKXsKCQkkdGhpcy0+ZW52ID0gJGV2YWxFbnY7CgkJJHRoaXMtPmltcG9ydENvdW50ID0gMDsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCk7Cgl9CgoKCWZ1bmN0aW9uIHJ1biggJHJvb3QgKXsKCQkkcm9vdCA9ICR0aGlzLT52aXNpdE9iaigkcm9vdCk7CgkJJHRoaXMtPmlzRmluaXNoZWQgPSB0cnVlOwoKCQkvL2lmKCAkdGhpcy0+aW1wb3J0Q291bnQgPT09IDApIHsKCQkvLwkkdGhpcy0+X2ZpbmlzaCgpOwoJCS8vfQoJfQoKCWZ1bmN0aW9uIHZpc2l0SW1wb3J0KCRpbXBvcnROb2RlLCAmJHZpc2l0RGVlcGVyICl7CgkJJGltcG9ydFZpc2l0b3IgPSAkdGhpczsKCQkkaW5saW5lQ1NTID0gJGltcG9ydE5vZGUtPm9wdGlvbnNbJ2lubGluZSddOwoKCQlpZiggISRpbXBvcnROb2RlLT5jc3MgfHwgJGlubGluZUNTUyApewoJCQkkZXZhbGRJbXBvcnROb2RlID0gJGltcG9ydE5vZGUtPmNvbXBpbGVGb3JJbXBvcnQoJHRoaXMtPmVudik7CgoJCQlpZiggJGV2YWxkSW1wb3J0Tm9kZSAmJiAoISRldmFsZEltcG9ydE5vZGUtPmNzcyB8fCAkaW5saW5lQ1NTKSApewoJCQkJJGltcG9ydE5vZGUgPSAkZXZhbGRJbXBvcnROb2RlOwoJCQkJJHRoaXMtPmltcG9ydENvdW50Kys7CgkJCQkkZW52ID0gY2xvbmUgJHRoaXMtPmVudjsKCgkJCQlpZiggKGlzc2V0KCRpbXBvcnROb2RlLT5vcHRpb25zWydtdWx0aXBsZSddKSAmJiAkaW1wb3J0Tm9kZS0+b3B0aW9uc1snbXVsdGlwbGUnXSkgKXsKCQkJCQkkZW52LT5pbXBvcnRNdWx0aXBsZSA9IHRydWU7CgkJCQl9CgoJCQkJLy9nZXQgcGF0aCAmIHVyaQoJCQkJJHBhdGhfYW5kX3VyaSA9IG51bGw7CgkJCQlpZiggaXNfY2FsbGFibGUoTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbXBvcnRfY2FsbGJhY2snXSkgKXsKCQkJCQkkcGF0aF9hbmRfdXJpID0gY2FsbF91c2VyX2Z1bmMoTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbXBvcnRfY2FsbGJhY2snXSwkaW1wb3J0Tm9kZSk7CgkJCQl9CgoJCQkJaWYoICEkcGF0aF9hbmRfdXJpICl7CgkJCQkJJHBhdGhfYW5kX3VyaSA9ICRpbXBvcnROb2RlLT5QYXRoQW5kVXJpKCk7CgkJCQl9CgoJCQkJaWYoICRwYXRoX2FuZF91cmkgKXsKCQkJCQlsaXN0KCRmdWxsX3BhdGgsICR1cmkpID0gJHBhdGhfYW5kX3VyaTsKCQkJCX1lbHNlewoJCQkJCSRmdWxsX3BhdGggPSAkdXJpID0gJGltcG9ydE5vZGUtPmdldFBhdGgoKTsKCQkJCX0KCgoJCQkJLy9pbXBvcnQgb25jZQoJCQkJaWYoICRpbXBvcnROb2RlLT5za2lwKCAkZnVsbF9wYXRoLCAkZW52KSApewoJCQkJCXJldHVybiBhcnJheSgpOwoJCQkJfQoKCQkJCWlmKCAkaW1wb3J0Tm9kZS0+b3B0aW9uc1snaW5saW5lJ10gKXsKCQkJCQkvL3RvZG8gbmVlZHMgdG8gcmVmZXJlbmNlIGNzcyBmaWxlIG5vdCBpbXBvcnQKCQkJCQkvLyRjb250ZW50cyA9IG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCRpbXBvcnROb2RlLT5yb290LCAwLCBhcnJheSgnZmlsZW5hbWUnPT4kaW1wb3J0Tm9kZS0+aW1wb3J0ZWRGaWxlbmFtZSksIHRydWUgKTsKCgkJCQkJTGVzc19QYXJzZXI6OkFkZFBhcnNlZEZpbGUoJGZ1bGxfcGF0aCk7CgkJCQkJJGNvbnRlbnRzID0gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoIGZpbGVfZ2V0X2NvbnRlbnRzKCRmdWxsX3BhdGgpLCAwLCBhcnJheSgpLCB0cnVlICk7CgoJCQkJCWlmKCAkaW1wb3J0Tm9kZS0+ZmVhdHVyZXMgKXsKCQkJCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfTWVkaWEoIGFycmF5KCRjb250ZW50cyksICRpbXBvcnROb2RlLT5mZWF0dXJlcy0+dmFsdWUgKTsKCQkJCQl9CgoJCQkJCXJldHVybiBhcnJheSggJGNvbnRlbnRzICk7CgkJCQl9CgoKCQkJCS8vIGNzcyA/CgkJCQlpZiggJGltcG9ydE5vZGUtPmNzcyApewoJCQkJCSRmZWF0dXJlcyA9ICggJGltcG9ydE5vZGUtPmZlYXR1cmVzID8gJGltcG9ydE5vZGUtPmZlYXR1cmVzLT5jb21waWxlKCRlbnYpIDogbnVsbCApOwoJCQkJCXJldHVybiBuZXcgTGVzc19UcmVlX0ltcG9ydCggJGltcG9ydE5vZGUtPmNvbXBpbGVQYXRoKCAkZW52KSwgJGZlYXR1cmVzLCAkaW1wb3J0Tm9kZS0+b3B0aW9ucywgJHRoaXMtPmluZGV4KTsKCQkJCX0KCgkJCQlyZXR1cm4gJGltcG9ydE5vZGUtPlBhcnNlSW1wb3J0KCAkZnVsbF9wYXRoLCAkdXJpLCAkZW52ICk7CgkJCX0KCgkJfQoKCQkkdmlzaXREZWVwZXIgPSBmYWxzZTsKCQlyZXR1cm4gJGltcG9ydE5vZGU7Cgl9CgoKCWZ1bmN0aW9uIHZpc2l0UnVsZSggJHJ1bGVOb2RlLCAmJHZpc2l0RGVlcGVyICl7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7CgkJcmV0dXJuICRydWxlTm9kZTsKCX0KCglmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZSgkZGlyZWN0aXZlTm9kZSwgJHZpc2l0QXJncyl7CgkJYXJyYXlfdW5zaGlmdCgkdGhpcy0+ZW52LT5mcmFtZXMsJGRpcmVjdGl2ZU5vZGUpOwoJCXJldHVybiAkZGlyZWN0aXZlTm9kZTsKCX0KCglmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZU91dCgkZGlyZWN0aXZlTm9kZSkgewoJCWFycmF5X3NoaWZ0KCR0aGlzLT5lbnYtPmZyYW1lcyk7Cgl9CgoJZnVuY3Rpb24gdmlzaXRNaXhpbkRlZmluaXRpb24oJG1peGluRGVmaW5pdGlvbk5vZGUsICR2aXNpdEFyZ3MpIHsKCQlhcnJheV91bnNoaWZ0KCR0aGlzLT5lbnYtPmZyYW1lcywkbWl4aW5EZWZpbml0aW9uTm9kZSk7CgkJcmV0dXJuICRtaXhpbkRlZmluaXRpb25Ob2RlOwoJfQoKCWZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uT3V0KCRtaXhpbkRlZmluaXRpb25Ob2RlKSB7CgkJYXJyYXlfc2hpZnQoJHRoaXMtPmVudi0+ZnJhbWVzKTsKCX0KCglmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoJHJ1bGVzZXROb2RlLCAkdmlzaXRBcmdzKSB7CgkJYXJyYXlfdW5zaGlmdCgkdGhpcy0+ZW52LT5mcmFtZXMsJHJ1bGVzZXROb2RlKTsKCQlyZXR1cm4gJHJ1bGVzZXROb2RlOwoJfQoKCWZ1bmN0aW9uIHZpc2l0UnVsZXNldE91dCgkcnVsZXNldE5vZGUpIHsKCQlhcnJheV9zaGlmdCgkdGhpcy0+ZW52LT5mcmFtZXMpOwoJfQoKCWZ1bmN0aW9uIHZpc2l0TWVkaWEoJG1lZGlhTm9kZSwgJHZpc2l0QXJncykgewoJCWFycmF5X3Vuc2hpZnQoJHRoaXMtPmVudi0+ZnJhbWVzLCAkbWVkaWFOb2RlLT5ydWxlc2V0KTsKCQlyZXR1cm4gJG1lZGlhTm9kZTsKCX0KCglmdW5jdGlvbiB2aXNpdE1lZGlhT3V0KCRtZWRpYU5vZGUpIHsKCQlhcnJheV9zaGlmdCgkdGhpcy0+ZW52LT5mcmFtZXMpOwoJfQoKfQoqLwoKCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/joinSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBKb2luIFNlbGVjdG9yIFZpc2l0b3IKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB2aXNpdG9yCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3Jfam9pblNlbGVjdG9yIGV4dGVuZHMgTGVzc19WaXNpdG9yewoKCXB1YmxpYyAkY29udGV4dHMgPSBhcnJheSggYXJyYXkoKSApOwoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBydW4oICRyb290ICl7CgkJcmV0dXJuICR0aGlzLT52aXNpdE9iaigkcm9vdCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZSggJHJ1bGVOb2RlLCAmJHZpc2l0RGVlcGVyICl7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uKCAkbWl4aW5EZWZpbml0aW9uTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoICRydWxlc2V0Tm9kZSApewoKCQkkcGF0aHMgPSBhcnJheSgpOwoKCQlpZiggISRydWxlc2V0Tm9kZS0+cm9vdCApewoJCQkkc2VsZWN0b3JzID0gYXJyYXkoKTsKCgkJCWlmKCAkcnVsZXNldE5vZGUtPnNlbGVjdG9ycyAmJiAkcnVsZXNldE5vZGUtPnNlbGVjdG9ycyApewoJCQkJZm9yZWFjaCgkcnVsZXNldE5vZGUtPnNlbGVjdG9ycyBhcyAkc2VsZWN0b3IpewoJCQkJCWlmKCAkc2VsZWN0b3ItPmdldElzT3V0cHV0KCkgKXsKCQkJCQkJJHNlbGVjdG9yc1tdID0gJHNlbGVjdG9yOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJaWYoICEkc2VsZWN0b3JzICl7CgkJCQkkcnVsZXNldE5vZGUtPnNlbGVjdG9ycyA9IG51bGw7CgkJCQkkcnVsZXNldE5vZGUtPnJ1bGVzID0gbnVsbDsKCQkJfWVsc2V7CgkJCQkkY29udGV4dCA9IGVuZCgkdGhpcy0+Y29udGV4dHMpOyAvLyRjb250ZXh0ID0gJHRoaXMtPmNvbnRleHRzWyBjb3VudCgkdGhpcy0+Y29udGV4dHMpIC0gMV07CgkJCQkkcGF0aHMgPSAkcnVsZXNldE5vZGUtPmpvaW5TZWxlY3RvcnMoICRjb250ZXh0LCAkc2VsZWN0b3JzKTsKCQkJfQoKCQkJJHJ1bGVzZXROb2RlLT5wYXRocyA9ICRwYXRoczsKCQl9CgoJCSR0aGlzLT5jb250ZXh0c1tdID0gJHBhdGhzOyAvL2RpZmZlcmVudCBmcm9tIGxlc3MuanMuIFBsYWNlZCBhZnRlciBqb2luU2VsZWN0b3JzKCkgc28gdGhhdCAkdGhpcy0+Y29udGV4dHMgd2lsbCBnZXQgY29ycmVjdCAkcGF0aHMKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRSdWxlc2V0T3V0KCl7CgkJYXJyYXlfcG9wKCR0aGlzLT5jb250ZXh0cyk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TWVkaWEoJG1lZGlhTm9kZSkgewoJCSRjb250ZXh0ID0gZW5kKCR0aGlzLT5jb250ZXh0cyk7IC8vJGNvbnRleHQgPSAkdGhpcy0+Y29udGV4dHNbIGNvdW50KCR0aGlzLT5jb250ZXh0cykgLSAxXTsKCgkJaWYoICFjb3VudCgkY29udGV4dCkgfHwgKGlzX29iamVjdCgkY29udGV4dFswXSkgJiYgJGNvbnRleHRbMF0tPm11bHRpTWVkaWEpICl7CgkJCSRtZWRpYU5vZGUtPnJ1bGVzWzBdLT5yb290ID0gdHJ1ZTsKCQl9Cgl9Cgp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/processExtends.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBQcm9jZXNzIEV4dGVuZHMgVmlzaXRvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHZpc2l0b3IKICovCmNsYXNzIExlc3NfVmlzaXRvcl9wcm9jZXNzRXh0ZW5kcyBleHRlbmRzIExlc3NfVmlzaXRvcnsKCglwdWJsaWMgJGFsbEV4dGVuZHNTdGFjazsKCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfUnVsZXNldCAkcm9vdAoJICovCglwdWJsaWMgZnVuY3Rpb24gcnVuKCAkcm9vdCApewoJCSRleHRlbmRGaW5kZXIgPSBuZXcgTGVzc19WaXNpdG9yX2V4dGVuZEZpbmRlcigpOwoJCSRleHRlbmRGaW5kZXItPnJ1biggJHJvb3QgKTsKCQlpZiggISRleHRlbmRGaW5kZXItPmZvdW5kRXh0ZW5kcyl7CgkJCXJldHVybiAkcm9vdDsKCQl9CgoJCSRyb290LT5hbGxFeHRlbmRzID0gJHRoaXMtPmRvRXh0ZW5kQ2hhaW5pbmcoICRyb290LT5hbGxFeHRlbmRzLCAkcm9vdC0+YWxsRXh0ZW5kcyk7CgoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgPSBhcnJheSgpOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbXSA9ICYkcm9vdC0+YWxsRXh0ZW5kczsKCgkJcmV0dXJuICR0aGlzLT52aXNpdE9iaiggJHJvb3QgKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGRvRXh0ZW5kQ2hhaW5pbmcoICRleHRlbmRzTGlzdCwgJGV4dGVuZHNMaXN0VGFyZ2V0LCAkaXRlcmF0aW9uQ291bnQgPSAwKXsKCQkvLwoJCS8vIGNoYWluaW5nIGlzIGRpZmZlcmVudCBmcm9tIG5vcm1hbCBleHRlbnNpb24uLiBpZiB3ZSBleHRlbmQgYW4gZXh0ZW5kIHRoZW4gd2UgYXJlIG5vdCBqdXN0IGNvcHlpbmcsIGFsdGVyaW5nIGFuZCBwYXN0aW5nCgkJLy8gdGhlIHNlbGVjdG9yIHdlIHdvdWxkIGRvIG5vcm1hbGx5LCBidXQgd2UgYXJlIGFsc28gYWRkaW5nIGFuIGV4dGVuZCB3aXRoIHRoZSBzYW1lIHRhcmdldCBzZWxlY3RvcgoJCS8vIHRoaXMgbWVhbnMgdGhpcyBuZXcgZXh0ZW5kIGNhbiB0aGVuIGdvIGFuZCBhbHRlciBvdGhlciBleHRlbmRzCgkJLy8KCQkvLyB0aGlzIG1ldGhvZCBkZWFscyB3aXRoIGFsbCB0aGUgY2hhaW5pbmcgd29yayAtIHdpdGhvdXQgaXQsIGV4dGVuZCBpcyBmbGF0IGFuZCBkb2Vzbid0IHdvcmsgb24gb3RoZXIgZXh0ZW5kIHNlbGVjdG9ycwoJCS8vIHRoaXMgaXMgYWxzbyB0aGUgbW9zdCBleHBlbnNpdmUuLiBhbmQgYSBtYXRjaCBvbiBvbmUgc2VsZWN0b3IgY2FuIGNhdXNlIGFuIGV4dGVuc2lvbiBvZiBhIHNlbGVjdG9yIHdlIGhhZCBhbHJlYWR5IHByb2Nlc3NlZCBpZgoJCS8vIHdlIGxvb2sgYXQgZWFjaCBzZWxlY3RvciBhdCBhIHRpbWUsIGFzIGlzIGRvbmUgaW4gdmlzaXRSdWxlc2V0CgoJCSRleHRlbmRzVG9BZGQgPSBhcnJheSgpOwoKCgkJLy9sb29wIHRocm91Z2ggY29tcGFyaW5nIGV2ZXJ5IGV4dGVuZCB3aXRoIGV2ZXJ5IHRhcmdldCBleHRlbmQuCgkJLy8gYSB0YXJnZXQgZXh0ZW5kIGlzIHRoZSBvbmUgb24gdGhlIHJ1bGVzZXQgd2UgYXJlIGxvb2tpbmcgYXQgY29weS9lZGl0L3Bhc3RpbmcgaW4gcGxhY2UKCQkvLyBlLmcuIC5hOmV4dGVuZCguYikge30gYW5kIC5iOmV4dGVuZCguYykge30gdGhlbiB0aGUgZmlyc3QgZXh0ZW5kIGV4dGVuZHMgdGhlIHNlY29uZCBvbmUKCQkvLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGFyZ2V0LgoJCS8vIHRoZSBzZXBlcmF0aW9uIGludG8gdHdvIGxpc3RzIGFsbG93cyB1cyB0byBwcm9jZXNzIGEgc3Vic2V0IG9mIGNoYWlucyB3aXRoIGEgYmlnZ2VyIHNldCwgYXMgaXMgdGhlCgkJLy8gY2FzZSB3aGVuIHByb2Nlc3NpbmcgbWVkaWEgcXVlcmllcwoJCWZvciggJGV4dGVuZEluZGV4ID0gMCwgJGV4dGVuZHNMaXN0X2xlbiA9IGNvdW50KCRleHRlbmRzTGlzdCk7ICRleHRlbmRJbmRleCA8ICRleHRlbmRzTGlzdF9sZW47ICRleHRlbmRJbmRleCsrICl7CgkJCWZvciggJHRhcmdldEV4dGVuZEluZGV4ID0gMDsgJHRhcmdldEV4dGVuZEluZGV4IDwgY291bnQoJGV4dGVuZHNMaXN0VGFyZ2V0KTsgJHRhcmdldEV4dGVuZEluZGV4KysgKXsKCgkJCQkkZXh0ZW5kID0gJGV4dGVuZHNMaXN0WyRleHRlbmRJbmRleF07CgkJCQkkdGFyZ2V0RXh0ZW5kID0gJGV4dGVuZHNMaXN0VGFyZ2V0WyR0YXJnZXRFeHRlbmRJbmRleF07CgoJCQkJLy8gbG9vayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcwoJCQkJaWYoIGluX2FycmF5KCR0YXJnZXRFeHRlbmQtPm9iamVjdF9pZCwgJGV4dGVuZC0+cGFyZW50X2lkcyx0cnVlKSApewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCS8vIGZpbmQgYSBtYXRjaCBpbiB0aGUgdGFyZ2V0IGV4dGVuZHMgc2VsZiBzZWxlY3RvciAodGhlIGJpdCBiZWZvcmUgOmV4dGVuZCkKCQkJCSRzZWxlY3RvclBhdGggPSBhcnJheSggJHRhcmdldEV4dGVuZC0+c2VsZlNlbGVjdG9yc1swXSApOwoJCQkJJG1hdGNoZXMgPSAkdGhpcy0+ZmluZE1hdGNoKCAkZXh0ZW5kLCAkc2VsZWN0b3JQYXRoKTsKCgoJCQkJaWYoICRtYXRjaGVzICl7CgoJCQkJCS8vIHdlIGZvdW5kIGEgbWF0Y2gsIHNvIGZvciBlYWNoIHNlbGYgc2VsZWN0b3IuLgoJCQkJCWZvcmVhY2goJGV4dGVuZC0+c2VsZlNlbGVjdG9ycyBhcyAkc2VsZlNlbGVjdG9yICl7CgoKCQkJCQkJLy8gcHJvY2VzcyB0aGUgZXh0ZW5kIGFzIHVzdWFsCgkJCQkJCSRuZXdTZWxlY3RvciA9ICR0aGlzLT5leHRlbmRTZWxlY3RvciggJG1hdGNoZXMsICRzZWxlY3RvclBhdGgsICRzZWxmU2VsZWN0b3IpOwoKCQkJCQkJLy8gYnV0IG5vdyB3ZSBjcmVhdGUgYSBuZXcgZXh0ZW5kIGZyb20gaXQKCQkJCQkJJG5ld0V4dGVuZCA9IG5ldyBMZXNzX1RyZWVfRXh0ZW5kKCAkdGFyZ2V0RXh0ZW5kLT5zZWxlY3RvciwgJHRhcmdldEV4dGVuZC0+b3B0aW9uLCAwKTsKCQkJCQkJJG5ld0V4dGVuZC0+c2VsZlNlbGVjdG9ycyA9ICRuZXdTZWxlY3RvcjsKCgkJCQkJCS8vIGFkZCB0aGUgZXh0ZW5kIG9udG8gdGhlIGxpc3Qgb2YgZXh0ZW5kcyBmb3IgdGhhdCBzZWxlY3RvcgoJCQkJCQllbmQoJG5ld1NlbGVjdG9yKS0+ZXh0ZW5kTGlzdCA9IGFycmF5KCRuZXdFeHRlbmQpOwoJCQkJCQkvLyRuZXdTZWxlY3RvclsgY291bnQoJG5ld1NlbGVjdG9yKS0xXS0+ZXh0ZW5kTGlzdCA9IGFycmF5KCRuZXdFeHRlbmQpOwoKCQkJCQkJLy8gcmVjb3JkIHRoYXQgd2UgbmVlZCB0byBhZGQgaXQuCgkJCQkJCSRleHRlbmRzVG9BZGRbXSA9ICRuZXdFeHRlbmQ7CgkJCQkJCSRuZXdFeHRlbmQtPnJ1bGVzZXQgPSAkdGFyZ2V0RXh0ZW5kLT5ydWxlc2V0OwoKCQkJCQkJLy9yZW1lbWJlciBpdHMgcGFyZW50cyBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcwoJCQkJCQkkbmV3RXh0ZW5kLT5wYXJlbnRfaWRzID0gYXJyYXlfbWVyZ2UoJG5ld0V4dGVuZC0+cGFyZW50X2lkcywkdGFyZ2V0RXh0ZW5kLT5wYXJlbnRfaWRzLCRleHRlbmQtPnBhcmVudF9pZHMpOwoKCQkJCQkJLy8gb25seSBwcm9jZXNzIHRoZSBzZWxlY3RvciBvbmNlLi4gaWYgd2UgaGF2ZSA6ZXh0ZW5kKC5hLC5iKSB0aGVuIG11bHRpcGxlCgkJCQkJCS8vIGV4dGVuZHMgd2lsbCBsb29rIGF0IHRoZSBzYW1lIHNlbGVjdG9yIHBhdGgsIHNvIHdoZW4gZXh0ZW5kaW5nCgkJCQkJCS8vIHdlIGtub3cgdGhhdCBhbnkgb3RoZXJzIHdpbGwgYmUgZHVwbGljYXRlcyBpbiB0ZXJtcyBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBjc3MKCQkJCQkJaWYoICR0YXJnZXRFeHRlbmQtPmZpcnN0RXh0ZW5kT25UaGlzU2VsZWN0b3JQYXRoICl7CgkJCQkJCQkkbmV3RXh0ZW5kLT5maXJzdEV4dGVuZE9uVGhpc1NlbGVjdG9yUGF0aCA9IHRydWU7CgkJCQkJCQkkdGFyZ2V0RXh0ZW5kLT5ydWxlc2V0LT5wYXRoc1tdID0gJG5ld1NlbGVjdG9yOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQlpZiggJGV4dGVuZHNUb0FkZCApewoJCQkvLyB0cnkgdG8gZGV0ZWN0IGNpcmN1bGFyIHJlZmVyZW5jZXMgdG8gc3RvcCBhIHN0YWNrIG92ZXJmbG93LgoJCQkvLyBtYXkgbm8gbG9uZ2VyIGJlIG5lZWRlZC4JCQkkdGhpcy0+ZXh0ZW5kQ2hhaW5Db3VudCsrOwoJCQlpZiggJGl0ZXJhdGlvbkNvdW50ID4gMTAwKSB7CgoJCQkJdHJ5ewoJCQkJCSRzZWxlY3Rvck9uZSA9ICRleHRlbmRzVG9BZGRbMF0tPnNlbGZTZWxlY3RvcnNbMF0tPnRvQ1NTKCk7CgkJCQkJJHNlbGVjdG9yVHdvID0gJGV4dGVuZHNUb0FkZFswXS0+c2VsZWN0b3ItPnRvQ1NTKCk7CgkJCQl9Y2F0Y2goRXhjZXB0aW9uICRlKXsKCQkJCQkkc2VsZWN0b3JPbmUgPSAie3VuYWJsZSB0byBjYWxjdWxhdGV9IjsKCQkJCQkkc2VsZWN0b3JUd28gPSAie3VuYWJsZSB0byBjYWxjdWxhdGV9IjsKCQkJCX0KCgkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fUGFyc2VyKCJleHRlbmQgY2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkLiBPbmUgb2YgdGhlIGNpcmN1bGFyIGV4dGVuZHMgaXMgY3VycmVudGx5OiIgLiAkc2VsZWN0b3JPbmUgLiAiOmV4dGVuZCgiIC4gJHNlbGVjdG9yVHdvIC4gIikiKTsKCQkJfQoKCQkJLy8gbm93IHByb2Nlc3MgdGhlIG5ldyBleHRlbmRzIG9uIHRoZSBleGlzdGluZyBydWxlcyBzbyB0aGF0IHdlIGNhbiBoYW5kbGUgYSBleHRlbmRpbmcgYiBleHRlbmRpbmcgYyBlY3RlbmRpbmcgZCBleHRlbmRpbmcgZS4uLgoJCQkkZXh0ZW5kc1RvQWRkID0gJHRoaXMtPmRvRXh0ZW5kQ2hhaW5pbmcoICRleHRlbmRzVG9BZGQsICRleHRlbmRzTGlzdFRhcmdldCwgJGl0ZXJhdGlvbkNvdW50KzEpOwoJCX0KCgkJcmV0dXJuIGFycmF5X21lcmdlKCRleHRlbmRzTGlzdCwgJGV4dGVuZHNUb0FkZCk7Cgl9CgoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdFJ1bGUoICRydWxlTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdE1peGluRGVmaW5pdGlvbiggJG1peGluRGVmaW5pdGlvbk5vZGUsICYkdmlzaXREZWVwZXIgKXsKCQkkdmlzaXREZWVwZXIgPSBmYWxzZTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gdmlzaXRTZWxlY3RvciggJHNlbGVjdG9yTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoJHJ1bGVzZXROb2RlKXsKCgoJCWlmKCAkcnVsZXNldE5vZGUtPnJvb3QgKXsKCQkJcmV0dXJuOwoJCX0KCgkJJGFsbEV4dGVuZHMJPSBlbmQoJHRoaXMtPmFsbEV4dGVuZHNTdGFjayk7CgkJJHBhdGhzX2xlbiA9IGNvdW50KCRydWxlc2V0Tm9kZS0+cGF0aHMpOwoKCQkvLyBsb29rIGF0IGVhY2ggc2VsZWN0b3IgcGF0aCBpbiB0aGUgcnVsZXNldCwgZmluZCBhbnkgZXh0ZW5kIG1hdGNoZXMgYW5kIHRoZW4gY29weSwgZmluZCBhbmQgcmVwbGFjZQoJCWZvcmVhY2goJGFsbEV4dGVuZHMgYXMgJGFsbEV4dGVuZCl7CgkJCWZvcigkcGF0aEluZGV4ID0gMDsgJHBhdGhJbmRleCA8ICRwYXRoc19sZW47ICRwYXRoSW5kZXgrKyApewoKCQkJCS8vIGV4dGVuZGluZyBleHRlbmRzIGhhcHBlbnMgaW5pdGlhbGx5LCBiZWZvcmUgdGhlIG1haW4gcGFzcwoJCQkJaWYoIGlzc2V0KCRydWxlc2V0Tm9kZS0+ZXh0ZW5kT25FdmVyeVBhdGgpICYmICRydWxlc2V0Tm9kZS0+ZXh0ZW5kT25FdmVyeVBhdGggKXsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQkkc2VsZWN0b3JQYXRoID0gJHJ1bGVzZXROb2RlLT5wYXRoc1skcGF0aEluZGV4XTsKCgkJCQlpZiggZW5kKCRzZWxlY3RvclBhdGgpLT5leHRlbmRMaXN0ICl7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJJHRoaXMtPkV4dGVuZE1hdGNoKCAkcnVsZXNldE5vZGUsICRhbGxFeHRlbmQsICRzZWxlY3RvclBhdGgpOwoKCQkJfQoJCX0KCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBFeHRlbmRNYXRjaCggJHJ1bGVzZXROb2RlLCAkZXh0ZW5kLCAkc2VsZWN0b3JQYXRoICl7CgkJJG1hdGNoZXMgPSAkdGhpcy0+ZmluZE1hdGNoKCRleHRlbmQsICRzZWxlY3RvclBhdGgpOwoKCQlpZiggJG1hdGNoZXMgKXsKCQkJZm9yZWFjaCgkZXh0ZW5kLT5zZWxmU2VsZWN0b3JzIGFzICRzZWxmU2VsZWN0b3IgKXsKCQkJCSRydWxlc2V0Tm9kZS0+cGF0aHNbXSA9ICR0aGlzLT5leHRlbmRTZWxlY3RvcigkbWF0Y2hlcywgJHNlbGVjdG9yUGF0aCwgJHNlbGZTZWxlY3Rvcik7CgkJCX0KCQl9Cgl9CgoKCglwcml2YXRlIGZ1bmN0aW9uIGZpbmRNYXRjaCgkZXh0ZW5kLCAkaGF5c3RhY2tTZWxlY3RvclBhdGggKXsKCgoJCWlmKCAhJHRoaXMtPkhhc01hdGNoZXMoJGV4dGVuZCwgJGhheXN0YWNrU2VsZWN0b3JQYXRoKSApewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCgkJLy8KCQkvLyBsb29rIHRocm91Z2ggdGhlIGhheXN0YWNrIHNlbGVjdG9yIHBhdGggdG8gdHJ5IGFuZCBmaW5kIHRoZSBuZWVkbGUgLSBleHRlbmQuc2VsZWN0b3IKCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHNlbGVjdG9yIG1hdGNoZXMgdGhhdCBjYW4gdGhlbiBiZSByZXBsYWNlZAoJCS8vCgkJJG5lZWRsZUVsZW1lbnRzID0gJGV4dGVuZC0+c2VsZWN0b3ItPmVsZW1lbnRzOwoJCSRwb3RlbnRpYWxNYXRjaGVzID0gYXJyYXkoKTsKCQkkcG90ZW50aWFsTWF0Y2hlc19sZW4gPSAwOwoJCSRwb3RlbnRpYWxNYXRjaCA9IG51bGw7CgkJJG1hdGNoZXMgPSBhcnJheSgpOwoKCgoJCS8vIGxvb3AgdGhyb3VnaCB0aGUgaGF5c3RhY2sgZWxlbWVudHMKCQkkaGF5c3RhY2tfcGF0aF9sZW4gPSBjb3VudCgkaGF5c3RhY2tTZWxlY3RvclBhdGgpOwoJCWZvcigkaGF5c3RhY2tTZWxlY3RvckluZGV4ID0gMDsgJGhheXN0YWNrU2VsZWN0b3JJbmRleCA8ICRoYXlzdGFja19wYXRoX2xlbjsgJGhheXN0YWNrU2VsZWN0b3JJbmRleCsrICl7CgkJCSRoYWNrc3RhY2tTZWxlY3RvciA9ICRoYXlzdGFja1NlbGVjdG9yUGF0aFskaGF5c3RhY2tTZWxlY3RvckluZGV4XTsKCgkJCSRoYXlzdGFja19lbGVtZW50c19sZW4gPSBjb3VudCgkaGFja3N0YWNrU2VsZWN0b3ItPmVsZW1lbnRzKTsKCQkJZm9yKCRoYWNrc3RhY2tFbGVtZW50SW5kZXggPSAwOyAkaGFja3N0YWNrRWxlbWVudEluZGV4IDwgJGhheXN0YWNrX2VsZW1lbnRzX2xlbjsgJGhhY2tzdGFja0VsZW1lbnRJbmRleCsrICl7CgoJCQkJJGhheXN0YWNrRWxlbWVudCA9ICRoYWNrc3RhY2tTZWxlY3Rvci0+ZWxlbWVudHNbJGhhY2tzdGFja0VsZW1lbnRJbmRleF07CgoJCQkJLy8gaWYgd2UgYWxsb3cgZWxlbWVudHMgYmVmb3JlIG91ciBtYXRjaCB3ZSBjYW4gYWRkIGEgcG90ZW50aWFsIG1hdGNoIGV2ZXJ5IHRpbWUuIG90aGVyd2lzZSBvbmx5IGF0IHRoZSBmaXJzdCBlbGVtZW50LgoJCQkJaWYoICRleHRlbmQtPmFsbG93QmVmb3JlIHx8ICgkaGF5c3RhY2tTZWxlY3RvckluZGV4ID09PSAwICYmICRoYWNrc3RhY2tFbGVtZW50SW5kZXggPT09IDApICl7CgkJCQkJJHBvdGVudGlhbE1hdGNoZXNbXSA9IGFycmF5KCdwYXRoSW5kZXgnPT4gJGhheXN0YWNrU2VsZWN0b3JJbmRleCwgJ2luZGV4Jz0+ICRoYWNrc3RhY2tFbGVtZW50SW5kZXgsICdtYXRjaGVkJz0+IDAsICdpbml0aWFsQ29tYmluYXRvcic9PiAkaGF5c3RhY2tFbGVtZW50LT5jb21iaW5hdG9yKTsKCQkJCQkkcG90ZW50aWFsTWF0Y2hlc19sZW4rKzsKCQkJCX0KCgkJCQlmb3IoJGkgPSAwOyAkaSA8ICRwb3RlbnRpYWxNYXRjaGVzX2xlbjsgJGkrKyApewoKCQkJCQkkcG90ZW50aWFsTWF0Y2ggPSAmJHBvdGVudGlhbE1hdGNoZXNbJGldOwoJCQkJCSRwb3RlbnRpYWxNYXRjaCA9ICR0aGlzLT5Qb3RlbnRpYWxNYXRjaCggJHBvdGVudGlhbE1hdGNoLCAkbmVlZGxlRWxlbWVudHMsICRoYXlzdGFja0VsZW1lbnQsICRoYWNrc3RhY2tFbGVtZW50SW5kZXggKTsKCgoJCQkJCS8vIGlmIHdlIGFyZSBzdGlsbCB2YWxpZCBhbmQgaGF2ZSBmaW5pc2hlZCwgdGVzdCB3aGV0aGVyIHdlIGhhdmUgZWxlbWVudHMgYWZ0ZXIgYW5kIHdoZXRoZXIgdGhlc2UgYXJlIGFsbG93ZWQKCQkJCQlpZiggJHBvdGVudGlhbE1hdGNoICYmICRwb3RlbnRpYWxNYXRjaFsnbWF0Y2hlZCddID09PSAkZXh0ZW5kLT5zZWxlY3Rvci0+ZWxlbWVudHNfbGVuICl7CgkJCQkJCSRwb3RlbnRpYWxNYXRjaFsnZmluaXNoZWQnXSA9IHRydWU7CgoJCQkJCQlpZiggISRleHRlbmQtPmFsbG93QWZ0ZXIgJiYgKCRoYWNrc3RhY2tFbGVtZW50SW5kZXgrMSA8ICRoYXlzdGFja19lbGVtZW50c19sZW4gfHwgJGhheXN0YWNrU2VsZWN0b3JJbmRleCsxIDwgJGhheXN0YWNrX3BhdGhfbGVuKSApewoJCQkJCQkJJHBvdGVudGlhbE1hdGNoID0gbnVsbDsKCQkJCQkJfQoJCQkJCX0KCgkJCQkJLy8gaWYgbnVsbCB3ZSByZW1vdmUsIGlmIG5vdCwgd2UgYXJlIHN0aWxsIHZhbGlkLCBzbyBlaXRoZXIgcHVzaCBhcyBhIHZhbGlkIG1hdGNoIG9yIGNvbnRpbnVlCgkJCQkJaWYoICRwb3RlbnRpYWxNYXRjaCApewoJCQkJCQlpZiggJHBvdGVudGlhbE1hdGNoWydmaW5pc2hlZCddICl7CgkJCQkJCQkkcG90ZW50aWFsTWF0Y2hbJ2xlbmd0aCddID0gJGV4dGVuZC0+c2VsZWN0b3ItPmVsZW1lbnRzX2xlbjsKCQkJCQkJCSRwb3RlbnRpYWxNYXRjaFsnZW5kUGF0aEluZGV4J10gPSAkaGF5c3RhY2tTZWxlY3RvckluZGV4OwoJCQkJCQkJJHBvdGVudGlhbE1hdGNoWydlbmRQYXRoRWxlbWVudEluZGV4J10gPSAkaGFja3N0YWNrRWxlbWVudEluZGV4ICsgMTsgLy8gaW5kZXggYWZ0ZXIgZW5kIG9mIG1hdGNoCgkJCQkJCQkkcG90ZW50aWFsTWF0Y2hlcyA9IGFycmF5KCk7IC8vIHdlIGRvbid0IGFsbG93IG1hdGNoZXMgdG8gb3ZlcmxhcCwgc28gc3RhcnQgbWF0Y2hpbmcgYWdhaW4KCQkJCQkJCSRwb3RlbnRpYWxNYXRjaGVzX2xlbiA9IDA7CgkJCQkJCQkkbWF0Y2hlc1tdID0gJHBvdGVudGlhbE1hdGNoOwoJCQkJCQl9CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCgkJCQkJYXJyYXlfc3BsaWNlKCRwb3RlbnRpYWxNYXRjaGVzLCAkaSwgMSk7CgkJCQkJJHBvdGVudGlhbE1hdGNoZXNfbGVuLS07CgkJCQkJJGktLTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuICRtYXRjaGVzOwoJfQoKCgkvLyBCZWZvcmUgZ29pbmcgdGhyb3VnaCBhbGwgdGhlIG5lc3RlZCBsb29wcywgbGV0cyBjaGVjayB0byBzZWUgaWYgYSBtYXRjaCBpcyBwb3NzaWJsZQoJLy8gUmVkdWNlcyBCb290c3RyYXAgMy4xIGNvbXBpbGUgdGltZSBmcm9tIH42LjVzIHRvIH41LjZzCglwcml2YXRlIGZ1bmN0aW9uIEhhc01hdGNoZXMoJGV4dGVuZCwgJGhheXN0YWNrU2VsZWN0b3JQYXRoKXsKCgkJaWYoICEkZXh0ZW5kLT5zZWxlY3Rvci0+Y2FjaGVhYmxlICl7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJJGZpcnN0X2VsID0gJGV4dGVuZC0+c2VsZWN0b3ItPl9vZWxlbWVudHNbMF07CgoJCWZvcmVhY2goJGhheXN0YWNrU2VsZWN0b3JQYXRoIGFzICRoYWNrc3RhY2tTZWxlY3Rvcil7CgkJCWlmKCAhJGhhY2tzdGFja1NlbGVjdG9yLT5jYWNoZWFibGUgKXsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgoJCQlpZiggaW5fYXJyYXkoJGZpcnN0X2VsLCAkaGFja3N0YWNrU2VsZWN0b3ItPl9vZWxlbWVudHMpICl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCgkvKioKCSAqIEBwYXJhbSBpbnRlZ2VyICRoYWNrc3RhY2tFbGVtZW50SW5kZXgKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBQb3RlbnRpYWxNYXRjaCggJHBvdGVudGlhbE1hdGNoLCAkbmVlZGxlRWxlbWVudHMsICRoYXlzdGFja0VsZW1lbnQsICRoYWNrc3RhY2tFbGVtZW50SW5kZXggKXsKCgoJCWlmKCAkcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSA+IDAgKXsKCgkJCS8vIHNlbGVjdG9ycyBhZGQgIiAiIG9udG8gdGhlIGZpcnN0IGVsZW1lbnQuIFdoZW4gd2UgdXNlICYgaXQgam9pbnMgdGhlIHNlbGVjdG9ycyB0b2dldGhlciwgYnV0IGlmIHdlIGRvbid0CgkJCS8vIHRoZW4gZWFjaCBzZWxlY3RvciBpbiBoYXlzdGFja1NlbGVjdG9yUGF0aCBoYXMgYSBzcGFjZSBiZWZvcmUgaXQgYWRkZWQgaW4gdGhlIHRvQ1NTIHBoYXNlLiBzbyB3ZSBuZWVkIHRvIHdvcmsgb3V0CgkJCS8vIHdoYXQgdGhlIHJlc3VsdGluZyBjb21iaW5hdG9yIHdpbGwgYmUKCQkJJHRhcmdldENvbWJpbmF0b3IgPSAkaGF5c3RhY2tFbGVtZW50LT5jb21iaW5hdG9yOwoJCQlpZiggJHRhcmdldENvbWJpbmF0b3IgPT09ICcnICYmICRoYWNrc3RhY2tFbGVtZW50SW5kZXggPT09IDAgKXsKCQkJCSR0YXJnZXRDb21iaW5hdG9yID0gJyAnOwoJCQl9CgoJCQlpZiggJG5lZWRsZUVsZW1lbnRzWyAkcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSBdLT5jb21iaW5hdG9yICE9PSAkdGFyZ2V0Q29tYmluYXRvciApewoJCQkJcmV0dXJuIG51bGw7CgkJCX0KCQl9CgoJCS8vIGlmIHdlIGRvbid0IG1hdGNoLCBudWxsIG91ciBtYXRjaCB0byBpbmRpY2F0ZSBmYWlsdXJlCgkJaWYoICEkdGhpcy0+aXNFbGVtZW50VmFsdWVzRXF1YWwoICRuZWVkbGVFbGVtZW50c1skcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSBdLT52YWx1ZSwgJGhheXN0YWNrRWxlbWVudC0+dmFsdWUpICl7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJJHBvdGVudGlhbE1hdGNoWydmaW5pc2hlZCddID0gZmFsc2U7CgkJJHBvdGVudGlhbE1hdGNoWydtYXRjaGVkJ10rKzsKCgkJcmV0dXJuICRwb3RlbnRpYWxNYXRjaDsKCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBpc0VsZW1lbnRWYWx1ZXNFcXVhbCggJGVsZW1lbnRWYWx1ZTEsICRlbGVtZW50VmFsdWUyICl7CgoJCWlmKCAkZWxlbWVudFZhbHVlMSA9PT0gJGVsZW1lbnRWYWx1ZTIgKXsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQlpZiggaXNfc3RyaW5nKCRlbGVtZW50VmFsdWUxKSB8fCBpc19zdHJpbmcoJGVsZW1lbnRWYWx1ZTIpICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiggJGVsZW1lbnRWYWx1ZTEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQXR0cmlidXRlICl7CgkJCXJldHVybiAkdGhpcy0+aXNBdHRyaWJ1dGVWYWx1ZXNFcXVhbCggJGVsZW1lbnRWYWx1ZTEsICRlbGVtZW50VmFsdWUyICk7CgkJfQoKCQkkZWxlbWVudFZhbHVlMSA9ICRlbGVtZW50VmFsdWUxLT52YWx1ZTsKCQlpZiggJGVsZW1lbnRWYWx1ZTEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfU2VsZWN0b3IgKXsKCQkJcmV0dXJuICR0aGlzLT5pc1NlbGVjdG9yVmFsdWVzRXF1YWwoICRlbGVtZW50VmFsdWUxLCAkZWxlbWVudFZhbHVlMiApOwoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfU2VsZWN0b3IgJGVsZW1lbnRWYWx1ZTEKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBpc1NlbGVjdG9yVmFsdWVzRXF1YWwoICRlbGVtZW50VmFsdWUxLCAkZWxlbWVudFZhbHVlMiApewoKCQkkZWxlbWVudFZhbHVlMiA9ICRlbGVtZW50VmFsdWUyLT52YWx1ZTsKCQlpZiggISgkZWxlbWVudFZhbHVlMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9TZWxlY3RvcikgfHwgJGVsZW1lbnRWYWx1ZTEtPmVsZW1lbnRzX2xlbiAhPT0gJGVsZW1lbnRWYWx1ZTItPmVsZW1lbnRzX2xlbiApewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmb3IoICRpID0gMDsgJGkgPCAkZWxlbWVudFZhbHVlMS0+ZWxlbWVudHNfbGVuOyAkaSsrICl7CgoJCQlpZiggJGVsZW1lbnRWYWx1ZTEtPmVsZW1lbnRzWyRpXS0+Y29tYmluYXRvciAhPT0gJGVsZW1lbnRWYWx1ZTItPmVsZW1lbnRzWyRpXS0+Y29tYmluYXRvciApewoJCQkJaWYoICRpICE9PSAwIHx8ICgkZWxlbWVudFZhbHVlMS0+ZWxlbWVudHNbJGldLT5jb21iaW5hdG9yIHx8ICcgJykgIT09ICgkZWxlbWVudFZhbHVlMi0+ZWxlbWVudHNbJGldLT5jb21iaW5hdG9yIHx8ICcgJykgKXsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCWlmKCAhJHRoaXMtPmlzRWxlbWVudFZhbHVlc0VxdWFsKCRlbGVtZW50VmFsdWUxLT5lbGVtZW50c1skaV0tPnZhbHVlLCAkZWxlbWVudFZhbHVlMi0+ZWxlbWVudHNbJGldLT52YWx1ZSkgKXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9BdHRyaWJ1dGUgJGVsZW1lbnRWYWx1ZTEKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBpc0F0dHJpYnV0ZVZhbHVlc0VxdWFsKCAkZWxlbWVudFZhbHVlMSwgJGVsZW1lbnRWYWx1ZTIgKXsKCgkJaWYoICRlbGVtZW50VmFsdWUxLT5vcCAhPT0gJGVsZW1lbnRWYWx1ZTItPm9wIHx8ICRlbGVtZW50VmFsdWUxLT5rZXkgIT09ICRlbGVtZW50VmFsdWUyLT5rZXkgKXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJaWYoICEkZWxlbWVudFZhbHVlMS0+dmFsdWUgfHwgISRlbGVtZW50VmFsdWUyLT52YWx1ZSApewoJCQlpZiggJGVsZW1lbnRWYWx1ZTEtPnZhbHVlIHx8ICRlbGVtZW50VmFsdWUyLT52YWx1ZSApIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCSRlbGVtZW50VmFsdWUxID0gKCRlbGVtZW50VmFsdWUxLT52YWx1ZS0+dmFsdWUgPyAkZWxlbWVudFZhbHVlMS0+dmFsdWUtPnZhbHVlIDogJGVsZW1lbnRWYWx1ZTEtPnZhbHVlICk7CgkJJGVsZW1lbnRWYWx1ZTIgPSAoJGVsZW1lbnRWYWx1ZTItPnZhbHVlLT52YWx1ZSA/ICRlbGVtZW50VmFsdWUyLT52YWx1ZS0+dmFsdWUgOiAkZWxlbWVudFZhbHVlMi0+dmFsdWUgKTsKCgkJcmV0dXJuICRlbGVtZW50VmFsdWUxID09PSAkZWxlbWVudFZhbHVlMjsKCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBleHRlbmRTZWxlY3RvcigkbWF0Y2hlcywgJHNlbGVjdG9yUGF0aCwgJHJlcGxhY2VtZW50U2VsZWN0b3IpewoKCQkvL2ZvciBhIHNldCBvZiBtYXRjaGVzLCByZXBsYWNlIGVhY2ggbWF0Y2ggd2l0aCB0aGUgcmVwbGFjZW1lbnQgc2VsZWN0b3IKCgkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9IDA7CgkJJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPSAwOwoJCSRwYXRoID0gYXJyYXkoKTsKCQkkc2VsZWN0b3JQYXRoX2xlbiA9IGNvdW50KCRzZWxlY3RvclBhdGgpOwoKCQlmb3IoJG1hdGNoSW5kZXggPSAwLCAkbWF0Y2hlc19sZW4gPSBjb3VudCgkbWF0Y2hlcyk7ICRtYXRjaEluZGV4IDwgJG1hdGNoZXNfbGVuOyAkbWF0Y2hJbmRleCsrICl7CgoKCQkJJG1hdGNoID0gJG1hdGNoZXNbJG1hdGNoSW5kZXhdOwoJCQkkc2VsZWN0b3IgPSAkc2VsZWN0b3JQYXRoWyAkbWF0Y2hbJ3BhdGhJbmRleCddIF07CgoJCQkkZmlyc3RFbGVtZW50ID0gbmV3IExlc3NfVHJlZV9FbGVtZW50KAoJCQkJJG1hdGNoWydpbml0aWFsQ29tYmluYXRvciddLAoJCQkJJHJlcGxhY2VtZW50U2VsZWN0b3ItPmVsZW1lbnRzWzBdLT52YWx1ZSwKCQkJCSRyZXBsYWNlbWVudFNlbGVjdG9yLT5lbGVtZW50c1swXS0+aW5kZXgsCgkJCQkkcmVwbGFjZW1lbnRTZWxlY3Rvci0+ZWxlbWVudHNbMF0tPmN1cnJlbnRGaWxlSW5mbwoJCQkpOwoKCQkJaWYoICRtYXRjaFsncGF0aEluZGV4J10gPiAkY3VycmVudFNlbGVjdG9yUGF0aEluZGV4ICYmICRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID4gMCApewoJCQkJJGxhc3RfcGF0aCA9IGVuZCgkcGF0aCk7CgkJCQkkbGFzdF9wYXRoLT5lbGVtZW50cyA9IGFycmF5X21lcmdlKCAkbGFzdF9wYXRoLT5lbGVtZW50cywgYXJyYXlfc2xpY2UoICRzZWxlY3RvclBhdGhbJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleF0tPmVsZW1lbnRzLCAkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCkpOwoJCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPSAwOwoJCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCsrOwoJCQl9CgoJCQkkbmV3RWxlbWVudHMgPSBhcnJheV9tZXJnZSgKCQkJCWFycmF5X3NsaWNlKCRzZWxlY3Rvci0+ZWxlbWVudHMsICRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4LCAoJG1hdGNoWydpbmRleCddIC0gJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXgpICkgLy8gbGFzdCBwYXJhbWV0ZXIgb2YgYXJyYXlfc2xpY2UgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGxhc3QgcGFyYW1ldGVyIG9mIGphdmFzY3JpcHQncyBzbGljZQoJCQkJLCBhcnJheSgkZmlyc3RFbGVtZW50KQoJCQkJLCBhcnJheV9zbGljZSgkcmVwbGFjZW1lbnRTZWxlY3Rvci0+ZWxlbWVudHMsMSkKCQkJCSk7CgoJCQlpZiggJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9PT0gJG1hdGNoWydwYXRoSW5kZXgnXSAmJiAkbWF0Y2hJbmRleCA+IDAgKXsKCQkJCSRsYXN0X2tleSA9IGNvdW50KCRwYXRoKS0xOwoJCQkJJHBhdGhbJGxhc3Rfa2V5XS0+ZWxlbWVudHMgPSBhcnJheV9tZXJnZSgkcGF0aFskbGFzdF9rZXldLT5lbGVtZW50cywkbmV3RWxlbWVudHMpOwoJCQl9ZWxzZXsKCQkJCSRwYXRoID0gYXJyYXlfbWVyZ2UoICRwYXRoLCBhcnJheV9zbGljZSggJHNlbGVjdG9yUGF0aCwgJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCwgJG1hdGNoWydwYXRoSW5kZXgnXSApKTsKCQkJCSRwYXRoW10gPSBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCAkbmV3RWxlbWVudHMgKTsKCQkJfQoKCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9ICRtYXRjaFsnZW5kUGF0aEluZGV4J107CgkJCSRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gJG1hdGNoWydlbmRQYXRoRWxlbWVudEluZGV4J107CgkJCWlmKCAkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCA+PSBjb3VudCgkc2VsZWN0b3JQYXRoWyRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXhdLT5lbGVtZW50cykgKXsKCQkJCSRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gMDsKCQkJCSRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXgrKzsKCQkJfQoJCX0KCgkJaWYoICRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXggPCAkc2VsZWN0b3JQYXRoX2xlbiAmJiAkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCA+IDAgKXsKCQkJJGxhc3RfcGF0aCA9IGVuZCgkcGF0aCk7CgkJCSRsYXN0X3BhdGgtPmVsZW1lbnRzID0gYXJyYXlfbWVyZ2UoICRsYXN0X3BhdGgtPmVsZW1lbnRzLCBhcnJheV9zbGljZSgkc2VsZWN0b3JQYXRoWyRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXhdLT5lbGVtZW50cywgJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXgpKTsKCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCsrOwoJCX0KCgkJJHNsaWNlX2xlbiA9ICRzZWxlY3RvclBhdGhfbGVuIC0gJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleDsKCQkkcGF0aCA9IGFycmF5X21lcmdlKCRwYXRoLCBhcnJheV9zbGljZSgkc2VsZWN0b3JQYXRoLCAkY3VycmVudFNlbGVjdG9yUGF0aEluZGV4LCAkc2xpY2VfbGVuKSk7CgoJCXJldHVybiAkcGF0aDsKCX0KCgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0TWVkaWEoICRtZWRpYU5vZGUgKXsKCQkkbmV3QWxsRXh0ZW5kcyA9IGFycmF5X21lcmdlKCAkbWVkaWFOb2RlLT5hbGxFeHRlbmRzLCBlbmQoJHRoaXMtPmFsbEV4dGVuZHNTdGFjaykgKTsKCQkkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrW10gPSAkdGhpcy0+ZG9FeHRlbmRDaGFpbmluZygkbmV3QWxsRXh0ZW5kcywgJG1lZGlhTm9kZS0+YWxsRXh0ZW5kcyk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0TWVkaWFPdXQoKXsKCQlhcnJheV9wb3AoICR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gdmlzaXREaXJlY3RpdmUoICRkaXJlY3RpdmVOb2RlICl7CgkJJG5ld0FsbEV4dGVuZHMgPSBhcnJheV9tZXJnZSggJGRpcmVjdGl2ZU5vZGUtPmFsbEV4dGVuZHMsIGVuZCgkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrKSApOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbXSA9ICR0aGlzLT5kb0V4dGVuZENoYWluaW5nKCRuZXdBbGxFeHRlbmRzLCAkZGlyZWN0aXZlTm9kZS0+YWxsRXh0ZW5kcyk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0RGlyZWN0aXZlT3V0KCl7CgkJYXJyYXlfcG9wKCR0aGlzLT5hbGxFeHRlbmRzU3RhY2spOwoJfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/toCSS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiB0b0NTUyBWaXNpdG9yCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdmlzaXRvcgogKi8KY2xhc3MgTGVzc19WaXNpdG9yX3RvQ1NTIGV4dGVuZHMgTGVzc19WaXNpdG9yUmVwbGFjaW5newoKCXByaXZhdGUgJGNoYXJzZXQ7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCl7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgpOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBydW4oICRyb290ICl7CgkJcmV0dXJuICR0aGlzLT52aXNpdE9iaigkcm9vdCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZSggJHJ1bGVOb2RlICl7CgkJaWYoICRydWxlTm9kZS0+dmFyaWFibGUgKXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJCXJldHVybiAkcnVsZU5vZGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uKCRtaXhpbk5vZGUpewoJCS8vIG1peGluIGRlZmluaXRpb25zIGRvIG5vdCBnZXQgZXZhbCdkIC0gdGhpcyBtZWFucyB0aGV5IGtlZXAgc3RhdGUKCQkvLyBzbyB3ZSBoYXZlIHRvIGNsZWFyIHRoYXQgc3RhdGUgaGVyZSBzbyBpdCBpc24ndCB1c2VkIGlmIHRvQ1NTIGlzIGNhbGxlZCB0d2ljZQoJCSRtaXhpbk5vZGUtPmZyYW1lcyA9IGFycmF5KCk7CgkJcmV0dXJuIGFycmF5KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0RXh0ZW5kKCl7CgkJcmV0dXJuIGFycmF5KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29tbWVudCggJGNvbW1lbnROb2RlICl7CgkJaWYoICRjb21tZW50Tm9kZS0+aXNTaWxlbnQoKSApewoJCQlyZXR1cm4gYXJyYXkoKTsKCQl9CgkJcmV0dXJuICRjb21tZW50Tm9kZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRNZWRpYSggJG1lZGlhTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSRtZWRpYU5vZGUtPmFjY2VwdCgkdGhpcyk7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7CgoJCWlmKCAhJG1lZGlhTm9kZS0+cnVsZXMgKXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJCXJldHVybiAkbWVkaWFOb2RlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZSggJGRpcmVjdGl2ZU5vZGUgKXsKCQlpZiggaXNzZXQoJGRpcmVjdGl2ZU5vZGUtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10pICYmICghcHJvcGVydHlfZXhpc3RzKCRkaXJlY3RpdmVOb2RlLCdpc1JlZmVyZW5jZWQnKSB8fCAhJGRpcmVjdGl2ZU5vZGUtPmlzUmVmZXJlbmNlZCkgKXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJCWlmKCAkZGlyZWN0aXZlTm9kZS0+bmFtZSA9PT0gJ0BjaGFyc2V0JyApewoJCQkvLyBPbmx5IG91dHB1dCB0aGUgZGVidWcgaW5mbyB0b2dldGhlciB3aXRoIHN1YnNlcXVlbnQgQGNoYXJzZXQgZGVmaW5pdGlvbnMKCQkJLy8gYSBjb21tZW50IChvciBAbWVkaWEgc3RhdGVtZW50KSBiZWZvcmUgdGhlIGFjdHVhbCBAY2hhcnNldCBkaXJlY3RpdmUgd291bGQKCQkJLy8gYmUgY29uc2lkZXJlZCBpbGxlZ2FsIGNzcyBhcyBpdCBoYXMgdG8gYmUgb24gdGhlIGZpcnN0IGxpbmUKCQkJaWYoIGlzc2V0KCR0aGlzLT5jaGFyc2V0KSAmJiAkdGhpcy0+Y2hhcnNldCApewoKCQkJCS8vaWYoICRkaXJlY3RpdmVOb2RlLT5kZWJ1Z0luZm8gKXsKCQkJCS8vCSRjb21tZW50ID0gbmV3IExlc3NfVHJlZV9Db21tZW50KCcvKiAnIC4gc3RyX3JlcGxhY2UoIlxuIiwnJywkZGlyZWN0aXZlTm9kZS0+dG9DU1MoKSkuIiAqL1xuIik7CgkJCQkvLwkkY29tbWVudC0+ZGVidWdJbmZvID0gJGRpcmVjdGl2ZU5vZGUtPmRlYnVnSW5mbzsKCQkJCS8vCXJldHVybiAkdGhpcy0+dmlzaXQoJGNvbW1lbnQpOwoJCQkJLy99CgoKCQkJCXJldHVybiBhcnJheSgpOwoJCQl9CgkJCSR0aGlzLT5jaGFyc2V0ID0gdHJ1ZTsKCQl9CgkJcmV0dXJuICRkaXJlY3RpdmVOb2RlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjaGVja1Byb3BlcnRpZXNJblJvb3QoICRydWxlc2V0Tm9kZSApewoKCQlpZiggISRydWxlc2V0Tm9kZS0+Zmlyc3RSb290ICl7CgkJCXJldHVybjsKCQl9CgoJCWZvcmVhY2goJHJ1bGVzZXROb2RlLT5ydWxlcyBhcyAkcnVsZU5vZGUpewoJCQlpZiggJHJ1bGVOb2RlIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGUgJiYgISRydWxlTm9kZS0+dmFyaWFibGUgKXsKCQkJCSRtc2cgPSAicHJvcGVydGllcyBtdXN0IGJlIGluc2lkZSBzZWxlY3RvciBibG9ja3MsIHRoZXkgY2Fubm90IGJlIGluIHRoZSByb290LiBJbmRleCAiLiRydWxlTm9kZS0+aW5kZXguKCRydWxlTm9kZS0+Y3VycmVudEZpbGVJbmZvID8gKCcgRmlsZW5hbWU6ICcuJHJ1bGVOb2RlLT5jdXJyZW50RmlsZUluZm9bJ2ZpbGVuYW1lJ10pIDogbnVsbCk7CgkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJG1zZyk7CgkJCX0KCQl9Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoICRydWxlc2V0Tm9kZSwgJiR2aXNpdERlZXBlciApewoKCQkkdmlzaXREZWVwZXIgPSBmYWxzZTsKCgkJJHRoaXMtPmNoZWNrUHJvcGVydGllc0luUm9vdCggJHJ1bGVzZXROb2RlICk7CgoJCWlmKCAkcnVsZXNldE5vZGUtPnJvb3QgKXsKCQkJcmV0dXJuICR0aGlzLT52aXNpdFJ1bGVzZXRSb290KCAkcnVsZXNldE5vZGUgKTsKCQl9CgoJCSRydWxlc2V0cyA9IGFycmF5KCk7CgkJJHJ1bGVzZXROb2RlLT5wYXRocyA9ICR0aGlzLT52aXNpdFJ1bGVzZXRQYXRocygkcnVsZXNldE5vZGUpOwoKCgkJLy8gQ29tcGlsZSBydWxlcyBhbmQgcnVsZXNldHMKCQkkbm9kZVJ1bGVDbnQgPSBjb3VudCgkcnVsZXNldE5vZGUtPnJ1bGVzKTsKCQlmb3IoICRpID0gMDsgJGkgPCAkbm9kZVJ1bGVDbnQ7ICl7CgkJCSRydWxlID0gJHJ1bGVzZXROb2RlLT5ydWxlc1skaV07CgoJCQlpZiggcHJvcGVydHlfZXhpc3RzKCRydWxlLCdydWxlcycpICl7CgkJCQkvLyB2aXNpdCBiZWNhdXNlIHdlIGFyZSBtb3ZpbmcgdGhlbSBvdXQgZnJvbSBiZWluZyBhIGNoaWxkCgkJCQkkcnVsZXNldHNbXSA9ICR0aGlzLT52aXNpdE9iaigkcnVsZSk7CgkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzZXROb2RlLT5ydWxlcywkaSwxKTsKCQkJCSRub2RlUnVsZUNudC0tOwoJCQkJY29udGludWU7CgkJCX0KCQkJJGkrKzsKCQl9CgoKCQkvLyBhY2NlcHQgdGhlIHZpc2l0b3IgdG8gcmVtb3ZlIHJ1bGVzIGFuZCByZWZhY3RvciBpdHNlbGYKCQkvLyB0aGVuIHdlIGNhbiBkZWNpZGUgbm93IHdoZXRoZXIgd2Ugd2FudCBpdCBvciBub3QKCQlpZiggJG5vZGVSdWxlQ250ID4gMCApewoJCQkkcnVsZXNldE5vZGUtPmFjY2VwdCgkdGhpcyk7CgoJCQlpZiggJHJ1bGVzZXROb2RlLT5ydWxlcyApewoKCQkJCWlmKCBjb3VudCgkcnVsZXNldE5vZGUtPnJ1bGVzKSA+ICAxICl7CgkJCQkJJHRoaXMtPl9tZXJnZVJ1bGVzKCAkcnVsZXNldE5vZGUtPnJ1bGVzICk7CgkJCQkJJHRoaXMtPl9yZW1vdmVEdXBsaWNhdGVSdWxlcyggJHJ1bGVzZXROb2RlLT5ydWxlcyApOwoJCQkJfQoKCQkJCS8vIG5vdyBkZWNpZGUgd2hldGhlciB3ZSBrZWVwIHRoZSBydWxlc2V0CgkJCQlpZiggJHJ1bGVzZXROb2RlLT5wYXRocyApewoJCQkJCS8vYXJyYXlfdW5zaGlmdCgkcnVsZXNldHMsICRydWxlc2V0Tm9kZSk7CgkJCQkJYXJyYXlfc3BsaWNlKCRydWxlc2V0cywwLDAsYXJyYXkoJHJ1bGVzZXROb2RlKSk7CgkJCQl9CgkJCX0KCgkJfQoKCgkJaWYoIGNvdW50KCRydWxlc2V0cykgPT09IDEgKXsKCQkJcmV0dXJuICRydWxlc2V0c1swXTsKCQl9CgkJcmV0dXJuICRydWxlc2V0czsKCX0KCgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZpc2l0aVJ1bGVzZXQKCSAqCgkgKiByZXR1cm4gYXJyYXl8TGVzc19UcmVlX1J1bGVzZXQKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiB2aXNpdFJ1bGVzZXRSb290KCAkcnVsZXNldE5vZGUgKXsKCQkkcnVsZXNldE5vZGUtPmFjY2VwdCggJHRoaXMgKTsKCQlpZiggJHJ1bGVzZXROb2RlLT5maXJzdFJvb3QgfHwgJHJ1bGVzZXROb2RlLT5ydWxlcyApewoJCQlyZXR1cm4gJHJ1bGVzZXROb2RlOwoJCX0KCQlyZXR1cm4gYXJyYXkoKTsKCX0KCgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZpc2l0UnVsZXNldCgpCgkgKgoJICogQHJldHVybiBhcnJheQoJICovCglwcml2YXRlIGZ1bmN0aW9uIHZpc2l0UnVsZXNldFBhdGhzKCRydWxlc2V0Tm9kZSl7CgoJCSRwYXRocyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkcnVsZXNldE5vZGUtPnBhdGhzIGFzICRwKXsKCQkJaWYoICRwWzBdLT5lbGVtZW50c1swXS0+Y29tYmluYXRvciA9PT0gJyAnICl7CgkJCQkkcFswXS0+ZWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPSAnJzsKCQkJfQoKCQkJZm9yZWFjaCgkcCBhcyAkcGkpewoJCQkJaWYoICRwaS0+Z2V0SXNSZWZlcmVuY2VkKCkgJiYgJHBpLT5nZXRJc091dHB1dCgpICl7CgkJCQkJJHBhdGhzW10gPSAkcDsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuICRwYXRoczsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gX3JlbW92ZUR1cGxpY2F0ZVJ1bGVzKCAmJHJ1bGVzICl7CgkJLy8gcmVtb3ZlIGR1cGxpY2F0ZXMKCQkkcnVsZUNhY2hlID0gYXJyYXkoKTsKCQlmb3IoICRpID0gY291bnQoJHJ1bGVzKS0xOyAkaSA+PSAwIDsgJGktLSApewoJCQkkcnVsZSA9ICRydWxlc1skaV07CgkJCWlmKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlIHx8ICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX05hbWVWYWx1ZSApewoKCQkJCWlmKCAhaXNzZXQoJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0pICl7CgkJCQkJJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0gPSAkcnVsZTsKCQkJCX1lbHNlewoJCQkJCSRydWxlTGlzdCA9JiAkcnVsZUNhY2hlWyRydWxlLT5uYW1lXTsKCgkJCQkJaWYoICRydWxlTGlzdCBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlIHx8ICRydWxlTGlzdCBpbnN0YW5jZW9mIExlc3NfVHJlZV9OYW1lVmFsdWUgKXsKCQkJCQkJJHJ1bGVMaXN0ID0gJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0gPSBhcnJheSggJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0tPnRvQ1NTKCkgKTsKCQkJCQl9CgoJCQkJCSRydWxlQ1NTID0gJHJ1bGUtPnRvQ1NTKCk7CgkJCQkJaWYoIGFycmF5X3NlYXJjaCgkcnVsZUNTUywkcnVsZUxpc3QpICE9PSBmYWxzZSApewoJCQkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzLCRpLDEpOwoJCQkJCX1lbHNlewoJCQkJCQkkcnVsZUxpc3RbXSA9ICRydWxlQ1NTOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gX21lcmdlUnVsZXMoICYkcnVsZXMgKXsKCQkkZ3JvdXBzID0gYXJyYXkoKTsKCgkJLy9vYmooJHJ1bGVzKTsKCgkJJHJ1bGVzX2xlbiA9IGNvdW50KCRydWxlcyk7CgkJZm9yKCAkaSA9IDA7ICRpIDwgJHJ1bGVzX2xlbjsgJGkrKyApewoJCQkkcnVsZSA9ICRydWxlc1skaV07CgoJCQlpZiggKCRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGUpICYmICRydWxlLT5tZXJnZSApewoKCQkJCSRrZXkgPSAkcnVsZS0+bmFtZTsKCQkJCWlmKCAkcnVsZS0+aW1wb3J0YW50ICl7CgkJCQkJJGtleSAuPSAnLCEnOwoJCQkJfQoKCQkJCWlmKCAhaXNzZXQoJGdyb3Vwc1ska2V5XSkgKXsKCQkJCQkkZ3JvdXBzWyRrZXldID0gYXJyYXkoKTsKCQkJCX1lbHNlewoJCQkJCWFycmF5X3NwbGljZSgkcnVsZXMsICRpLS0sIDEpOwoJCQkJCSRydWxlc19sZW4tLTsKCQkJCX0KCgkJCQkkZ3JvdXBzWyRrZXldW10gPSAkcnVsZTsKCQkJfQoJCX0KCgoJCWZvcmVhY2goJGdyb3VwcyBhcyAkcGFydHMpewoKCQkJaWYoIGNvdW50KCRwYXJ0cykgPiAxICl7CgkJCQkkcnVsZSA9ICRwYXJ0c1swXTsKCQkJCSRzcGFjZWRHcm91cHMgPSBhcnJheSgpOwoJCQkJJGxhc3RTcGFjZWRHcm91cCA9IGFycmF5KCk7CgkJCQkkcGFydHNfbWFwcGVkID0gYXJyYXkoKTsKCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwKXsKCQkJCQlpZiggJHAtPm1lcmdlID09PSAnKycgKXsKCQkJCQkJaWYoICRsYXN0U3BhY2VkR3JvdXAgKXsKCQkJCQkJCSRzcGFjZWRHcm91cHNbXSA9IHNlbGY6OnRvRXhwcmVzc2lvbigkbGFzdFNwYWNlZEdyb3VwKTsKCQkJCQkJfQoJCQkJCQkkbGFzdFNwYWNlZEdyb3VwID0gYXJyYXkoKTsKCQkJCQl9CgkJCQkJJGxhc3RTcGFjZWRHcm91cFtdID0gJHA7CgkJCQl9CgoJCQkJJHNwYWNlZEdyb3Vwc1tdID0gc2VsZjo6dG9FeHByZXNzaW9uKCRsYXN0U3BhY2VkR3JvdXApOwoJCQkJJHJ1bGUtPnZhbHVlID0gc2VsZjo6dG9WYWx1ZSgkc3BhY2VkR3JvdXBzKTsKCQkJfQoJCX0KCgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b0V4cHJlc3Npb24oJHZhbHVlcyl7CgkJJG1hcHBlZCA9IGFycmF5KCk7CgkJZm9yZWFjaCgkdmFsdWVzIGFzICRwKXsKCQkJJG1hcHBlZFtdID0gJHAtPnZhbHVlOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9FeHByZXNzaW9uKCAkbWFwcGVkICk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1ZhbHVlKCR2YWx1ZXMpewoJCS8vcmV0dXJuIG5ldyBMZXNzX1RyZWVfVmFsdWUoJHZhbHVlcyk7ID8/CgoJCSRtYXBwZWQgPSBhcnJheSgpOwoJCWZvcmVhY2goJHZhbHVlcyBhcyAkcCl7CgkJCSRtYXBwZWRbXSA9ICRwOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9WYWx1ZSgkbWFwcGVkKTsKCX0KfQoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/VisitorReplacing.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSZXBsYWNpbmcgVmlzaXRvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHZpc2l0b3IKICovCmNsYXNzIExlc3NfVmlzaXRvclJlcGxhY2luZyBleHRlbmRzIExlc3NfVmlzaXRvcnsKCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRPYmooICRub2RlICl7CgoJCSRmdW5jTmFtZSA9ICd2aXNpdCcuJG5vZGUtPnR5cGU7CgkJaWYoIGlzc2V0KCR0aGlzLT5fdmlzaXRGbkNhY2hlWyRmdW5jTmFtZV0pICl7CgoJCQkkdmlzaXREZWVwZXIgPSB0cnVlOwoJCQkkbm9kZSA9ICR0aGlzLT4kZnVuY05hbWUoICRub2RlLCAkdmlzaXREZWVwZXIgKTsKCgkJCWlmKCAkbm9kZSApewoJCQkJaWYoICR2aXNpdERlZXBlciAmJiBpc19vYmplY3QoJG5vZGUpICl7CgkJCQkJJG5vZGUtPmFjY2VwdCgkdGhpcyk7CgkJCQl9CgoJCQkJJGZ1bmNOYW1lID0gJGZ1bmNOYW1lIC4gIk91dCI7CgkJCQlpZiggaXNzZXQoJHRoaXMtPl92aXNpdEZuQ2FjaGVbJGZ1bmNOYW1lXSkgKXsKCQkJCQkkdGhpcy0+JGZ1bmNOYW1lKCAkbm9kZSApOwoJCQkJfQoJCQl9CgoJCX1lbHNlewoJCQkkbm9kZS0+YWNjZXB0KCR0aGlzKTsKCQl9CgoJCXJldHVybiAkbm9kZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRBcnJheSggJG5vZGVzICl7CgoJCSRuZXdOb2RlcyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkbm9kZXMgYXMgJG5vZGUpewoJCQkkZXZhbGQgPSAkdGhpcy0+dmlzaXRPYmooJG5vZGUpOwoJCQlpZiggJGV2YWxkICl7CgkJCQlpZiggaXNfYXJyYXkoJGV2YWxkKSApewoJCQkJCXNlbGY6OmZsYXR0ZW4oJGV2YWxkLCRuZXdOb2Rlcyk7CgkJCQl9ZWxzZXsKCQkJCQkkbmV3Tm9kZXNbXSA9ICRldmFsZDsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gJG5ld05vZGVzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmbGF0dGVuKCAkYXJyLCAmJG91dCApewoKCQlmb3JlYWNoKCRhcnIgYXMgJGl0ZW0pewoJCQlpZiggIWlzX2FycmF5KCRpdGVtKSApewoJCQkJJG91dFtdID0gJGl0ZW07CgkJCQljb250aW51ZTsKCQkJfQoKCQkJZm9yZWFjaCgkaXRlbSBhcyAkbmVzdGVkSXRlbSl7CgkJCQlpZiggaXNfYXJyYXkoJG5lc3RlZEl0ZW0pICl7CgkJCQkJc2VsZjo6ZmxhdHRlbiggJG5lc3RlZEl0ZW0sICRvdXQpOwoJCQkJfWVsc2V7CgkJCQkJJG91dFtdID0gJG5lc3RlZEl0ZW07CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiAkb3V0OwoJfQoKfQoKCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassCommand/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/SassCommand/class.Preprocessor_SassCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9TYXNzQ29tbWFuZCBleHRlbmRzIFByZXByb2Nlc3NvciB7CgoJY29uc3QgRlJJRU5ETFlfTkFNRSA9ICdTYXNzIGNvbXBpbGVyIGZyb20gY29tbWFuZCBsaW5lICg8ZW0+bm8gbG9uZ2VyIHN1cHBvcnRlZDwvZW0+KSc7Cgljb25zdCBERVNDUklQVElPTiA9ICdUaGUgb2ZmaWNpYWwgY29tbWFuZCBsaW5lIFNBU1MgY29tcGlsYXRvcic7Cgljb25zdCBBVVRIT1IgPSAnQ29yZSBTQVNTIHRlYW0nOwoJY29uc3QgV0VCU0lURSA9ICdodHRwczovL3Nhc3MtbGFuZy5jb20vcnVieS1zYXNzJzsKCWNvbnN0IE5PVEUgPSAnVXNlcyBSdWJ5IFNhc3Mgd2hpY2ggaXMgPHN0cm9uZz5ubyBsb25nZXIgc3VwcG9ydGVkPC9zdHJvbmc+LiBXaWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gQmV0dGVyIHVzZSBEYXJ0IFNhc3Mgbm93IG9yIFNjc3NQSFAgLSBjaGVjayB0aGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbnMnOwoJY29uc3QgTE9HTyA9ICdsb2dvLnBuZyc7CgkvL2NvbnN0IFNPVVJDRU1BUEZJTEUgPSAnY3NzcHJlcHJvY2Vzc29yX291dC5jc3MubWFwJzsKCWNvbnN0IFBSSU9SSVRZID0gMTU7CgoKCgkvLyBOb3RlIDogJGNzcyBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIC0gbm8gbmVlZCB0byByZXR1cm4KCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlQ1NTKCYkY3NzKQoJewoJCS8vIFB1dCBpbiBhIGNhY2hlIGZpbGUKCQkkZmlsZSA9IGNtc19qb2luX3BhdGgoVE1QX0NBQ0hFX0xPQ0FUSU9OLCAnY3NzcHJlcHJvY2Vzc29yLnNjc3MnKTsKCQlmaWxlX3B1dF9jb250ZW50cygkZmlsZSwgJGNzcyk7CgoJCWRlYnVnX3RvX2xvZygnV3JpdGUgQ1NTIGZpbGUnIC4gJGNzcyk7CgoJCSRmaWxlX291dHB1dCA9IGNtc19qb2luX3BhdGgoVE1QX0NBQ0hFX0xPQ0FUSU9OLCAnY3NzcHJlcHJvY2Vzc29yX291dC5jc3MnKTsKCgkJLy8gRVhFQyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCS8vIENvbXBpbGUKCQkkY29tbWFuZCA9ICdzYXNzIC1sIC1FICJVVEYtOCIgJzsgLy8gLWwgd2l0aCBsaW5lIG51bWJlcnMKCiAJCWlmICgkdGhpcy0+bWluaWZ5KQogCQl7CiAJCQkkY29tbWFuZCAuPSAnLS1zdHlsZSBjb21wcmVzc2VkICc7CgkJfQoKCQkvLyBTb3VyY2VtYXAKCQlpZiAoJHRoaXMtPmdlbmVyYXRlX3NvdXJjZW1hcCkKCQkJJGNvbW1hbmQgLj0gJy0tc291cmNlbWFwPWF1dG8gJzsKCQllbHNlCgkJCSRjb21tYW5kIC49ICctLXNvdXJjZW1hcD1ub25lICc7CgoKCQlpZiAoIWVtcHR5KCR0aGlzLT5pbXBvcnRfZGlycykpCgkJewoJCQkkc2VwYXJhdG9yID0gJywnOwoJCQkkY29tbWFuZCAuPSAnLS1sb2FkLXBhdGggJyAuIGltcGxvZGUoJHNlcGFyYXRvciwgJHRoaXMtPmltcG9ydF9kaXJzKTsKCQl9CgoJCSRjb21tYW5kIC49ICcgJyAuICRmaWxlIC4gJyAnIC4kZmlsZV9vdXRwdXQ7CgoJCS8vIEFzayBmb3IgY29tbWFuZCB0byBzeXN0ZW0KCQkkcmVzdWx0ID0gZXhlYygkY29tbWFuZCk7CgoJCWlmICghZW1wdHkoJHJlc3VsdCkpCgkJCWRlYnVnX3RvX2xvZygnQ1NTUHJlcHJvY2Vzc29yOiAnIC4gJHJlc3VsdCk7CgoJCSRjc3MgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZV9vdXRwdXQpOwoKCgkJLy8gUmVtb3ZlIHRlbXAgZmlsZXMKCQlAdW5saW5rKCRmaWxlKTsKCQlAdW5saW5rKCRmaWxlX291dHB1dCk7CgoJCXJldHVybiB0cnVlOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassCommand/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassCommand/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAasAAAFACAYAAAACklMsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjcxNTVCMTJCMkJBRTExRTM4RDJFQjVEMkVEN0FFOUE4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjcxNTVCMTJBMkJBRTExRTM4RDJFQjVEMkVEN0FFOUE4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZTE1Y2FhMmYtY2FjOC00OGM3LTg0NTEtMTk3MGMzM2VjMGIyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOmUx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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassDart/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/SassDart/class.Preprocessor_SassDart.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9TYXNzRGFydCBleHRlbmRzIFByZXByb2Nlc3NvciB7CgoJY29uc3QgRlJJRU5ETFlfTkFNRSA9ICdTYXNzIGNvbXBpbGVyIGZyb20gY29tbWFuZCBsaW5lIChEYXJ0KSc7Cgljb25zdCBERVNDUklQVElPTiA9ICdUaGUgb2ZmaWNpYWwgY29tbWFuZCBsaW5lIFNBU1MgY29tcGlsYXRvcic7Cgljb25zdCBBVVRIT1IgPSAnQ29yZSBTQVNTIHRlYW0nOwoJY29uc3QgV0VCU0lURSA9ICdodHRwczovL3Nhc3MtbGFuZy5jb20vZGFydC1zYXNzJzsKCWNvbnN0IE5PVEUgPSAnUHJpbWFyeSBpbXBsZW1lbnRhdGlvbiBvZiBTYXNzLiBZb3UgTkVFRCB0aGUgRGFydC1TYXNzIGNvbW1hbmQgbGluZSB0b29sIGluc3RhbGxlZCBvbiB5b3VyIHNlcnZlciB0byB1c2UgaXQgLSBjaGVjayB0aGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbnMuIFN1cHBvcnRzIHNvdXJjZW1hcHMuIFJlYWxseSBmYXN0ISc7Cgljb25zdCBMT0dPID0gJ2xvZ28ucG5nJzsKCWNvbnN0IFNPVVJDRU1BUEZJTEUgPSAnY3NzcHJlcHJvY2Vzc29yX291dC5jc3MubWFwJzsKICAgIGNvbnN0IFBSSU9SSVRZID0gMTA7CgoKCgkvLyBOb3RlIDogJGNzcyBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIC0gbm8gbmVlZCB0byByZXR1cm4KCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlQ1NTKCYkY3NzKQoJewoJICAgICRmaWxlID0gY21zX2pvaW5fcGF0aChUTVBfQ0FDSEVfTE9DQVRJT04sICdjc3NwcmVwcm9jZXNzb3Iuc2NzcycpOwoJICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlLCAkY3NzKTsKCgkgICAgJGZpbGVfb3V0cHV0ID0gY21zX2pvaW5fcGF0aChUTVBfQ0FDSEVfTE9DQVRJT04sICdjc3NwcmVwcm9jZXNzb3Jfb3V0LmNzcycpOwoKCSAgICAvLyBBYnNvbHV0ZSBzYXNzIHBhdGggKGZyb20gY2xpOiB3aGljaCBzYXNzKQoJICAgICRzYXNzID0gJy91c3IvbG9jYWwvYmluL3Nhc3MnOwoKCSAgICAkY29tbWFuZCA9IGVzY2FwZXNoZWxsYXJnKCRzYXNzKSAuICcgJzsKCgkgICAgaWYgKCR0aGlzLT5taW5pZnkpIHsKCSAgICAgICAgJGNvbW1hbmQgLj0gJy0tc3R5bGU9Y29tcHJlc3NlZCAnOwoJICAgIH0KCgkgICAgaWYgKCEkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKSB7CgkgICAgICAgICRjb21tYW5kIC49ICctLW5vLXNvdXJjZS1tYXAgJzsKCSAgICB9CgoJICAgIGlmICghZW1wdHkoJHRoaXMtPmltcG9ydF9kaXJzKSkgewoJICAgICAgICAkY29tbWFuZCAuPSAnLS1sb2FkLXBhdGg9JyAuIGVzY2FwZXNoZWxsYXJnKGltcGxvZGUoJywnLCAkdGhpcy0+aW1wb3J0X2RpcnMpKSAuICcgJzsKCSAgICB9CgoJICAgICRjb21tYW5kIC49IGVzY2FwZXNoZWxsYXJnKCRmaWxlKSAuICcgJyAuIGVzY2FwZXNoZWxsYXJnKCRmaWxlX291dHB1dCkgLiAnIDI+JjEnOwoKCSAgICAvLyBkZWJ1Z190b19sb2coJGNvbW1hbmQpOwoJICAgIGV4ZWMoJGNvbW1hbmQsICRvdXRwdXQsICRyZXR1cm5fdmFyKTsKCgkgICAgaWYgKCRyZXR1cm5fdmFyICE9PSAwKSB7CgkgICAgICAgIGRlYnVnX3RvX2xvZygnQ1NTUHJlcHJvY2Vzc29yIHNhc3MgZXJyb3IgKGNvZGUgJyAuICRyZXR1cm5fdmFyIC4gJyk6ICcgLiBpbXBsb2RlKCJcbiIsICRvdXRwdXQpKTsKCSAgICB9CgoJICAgICRjc3MgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZV9vdXRwdXQpOwoKCQlpZiAoJHRoaXMtPmdlbmVyYXRlX3NvdXJjZW1hcCAmJiAkdGhpcy0+c291cmNlX21hcF91cmwpIHsKCQkgICAgLy8gMS4gUmVtb3ZlIHRoZSBzb3VyY2VtYXAgbGluZSBmcm9tIERhcnQgU2FzcyAoYmFkIFVSSSkKCQkgICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnIVxzKi9cKiMgc291cmNlTWFwcGluZ1VSTD1bXipdKlwqL1xzKiQhJywgJycsICRjc3MpOwoJCSAgICAvLyAyLiBBZGQgb3VyIG93biBzb3VyY2VtYXAgcHVibGljeWx5IHJlYWNoYWJsZQoJCSAgICAkY3NzIC49ICJcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPSIgLiAkdGhpcy0+c291cmNlX21hcF91cmwgLiAiICovIjsKCQl9CgoJICAgIGlmICghJHRoaXMtPmdlbmVyYXRlX3NvdXJjZW1hcCkgewoJICAgICAgICBAdW5saW5rKCRmaWxlKTsKCSAgICB9CgkgICAgQHVubGluaygkZmlsZV9vdXRwdXQpOwoKCSAgICByZXR1cm4gdHJ1ZTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassDart/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassDart/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/class.Preprocessor_ScssPHP.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZShjbXNfam9pbl9wYXRoKF9fRElSX18sICdzY3NzcGhwJywgJ3Njc3MuaW5jLnBocCcpKTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxlcjsKCmNsYXNzIFByZXByb2Nlc3Nvcl9TY3NzUEhQIGV4dGVuZHMgUHJlcHJvY2Vzc29yIHsKCgljb25zdCBGUklFTkRMWV9OQU1FID0gJ1Njc3NQSFAgdjEgKDEuMTEuMCknOwoJY29uc3QgREVTQ1JJUFRJT04gPSAnQSBQSFAgLyBTQVNTIHByZS1wcm9jZXNzb3InOwoJY29uc3QgQVVUSE9SID0gJ0xlYWYnOwoJY29uc3QgV0VCU0lURSA9ICdodHRwOi8vbGVhZm8uZ2l0aHViLmlvL3Njc3NwaHAvJzsKCWNvbnN0IE5PVEUgPSAnUXVpdGUgYXMgZmFzdCBhcyBTYXNzIGZyb20gY29tbWFuZCBsaW5lLCBzdXBwb3J0cyBzb3VyY2VtYXBzIC0gT2xkZXIgdGhhbiB2MiBidXQgY291bGQgaGVscCBpZiB5b3VyIGNvZGUgZG9lc25cJ3Qgd29yayBvbiB2Mic7Cgljb25zdCBMT0dPID0gJ2xvZ28ucG5nJzsKCWNvbnN0IFBSSU9SSVRZID0gNTsKCgoJcHVibGljICRwYXJzZXI7CgoKCXB1YmxpYyBmdW5jdGlvbiBMb2FkKCkKCXsKCQlwYXJlbnQ6OkxvYWQoKTsKCQkkdGhpcy0+cGFyc2VyID0gbmV3IENvbXBpbGVyKCk7CgoJCS8vIE9wdGlvbnMKCQlpZiAoJHRoaXMtPm1pbmlmeSkgewoJCQkkdGhpcy0+cGFyc2VyLT5zZXRGb3JtYXR0ZXIoJ1Njc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcQ3J1bmNoZWQnKTsKCQl9CgoJCWlmICgkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKSB7CgkJCSRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CgoJCQkvLyBSZXRyaWV2ZSB0aGUgc3ViZGlyLCBpZiBhbnkgLSBuZWVkZWQgZm9yIHRoZSBzb3VyY2VtYXAubWFwIGZpbGUKCQkJbGlzdCgkZm9vLCAkdG1wKSA9IGV4cGxvZGUoJy8vJywgJGNvbmZpZ1sncm9vdF91cmwnXSk7CgkJCSR0bXAgPSBleHBsb2RlKCcvJywgJHRtcCk7CgkJCS8vIFJlbW92ZSB0aGUgZmlyc3QgKGl0J3MgdGhlIGRvbWFpbikKCQkJJGJhc2VQYXRoID0gJyc7CgkJCWlmIChpc3NldCgkdG1wWzFdKSkgewoJCQkJdW5zZXQoJHRtcFswXSk7CgkJCQkkYmFzZVBhdGggPSBpbXBsb2RlKCcvJywgJHRtcCk7CgkJCX0KCgkJCSR0aGlzLT5wYXJzZXItPnNldFNvdXJjZU1hcChDb21waWxlcjo6U09VUkNFX01BUF9GSUxFKTsKCQkJJHRoaXMtPnBhcnNlci0+c2V0U291cmNlTWFwT3B0aW9ucyhbCgkJCSAgICAvLyBhYnNvbHV0ZSBwYXRoIHRvIHdyaXRlIC5tYXAgZmlsZQoJCQkgICAgLy8gJ3NvdXJjZU1hcFdyaXRlVG8nICA9PiBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3RtcF9jYWNoZV9sb2NhdGlvbiddLCAnc291cmNlbWFwLm1hcCcpLAoJCQkgICAgJ3NvdXJjZU1hcFdyaXRlVG8nICA9PiAkdGhpcy0+c291cmNlX21hcF9maWxlLAoKCQkJICAgIC8vIHJlbGF0aXZlIG9yIGZ1bGwgdXJsIHRvIHRoZSBhYm92ZSAubWFwIGZpbGUKCQkJICAgIC8vICdzb3VyY2VNYXBVUkwnICAgICAgPT4gJGNvbmZpZ1sncHVibGljX2NhY2hlX3VybCddIC4gJy9zb3VyY2VtYXAubWFwJywKCQkJICAgICdzb3VyY2VNYXBVUkwnICAgICAgPT4gJHRoaXMtPnNvdXJjZV9tYXBfdXJsLAoKCQkJICAgIC8vIChvcHRpb25hbCkgcmVsYXRpdmUgb3IgZnVsbCB1cmwgdG8gdGhlIC5jc3MgZmlsZQoJCQkgICAgLy8nc291cmNlTWFwRmlsZW5hbWUnID0+ICdzb3VyY2VtYXAubWFwJywKCgkJCSAgICAvLyBwYXJ0aWFsIHBhdGggKHNlcnZlciByb290KSByZW1vdmVkIChub3JtYWxpemVkKSB0byBjcmVhdGUgYSByZWxhdGl2ZSB1cmwKCQkJICAgICdzb3VyY2VNYXBCYXNlcGF0aCcgPT4gJGNvbmZpZ1sncm9vdF9wYXRoJ10sCgoJCQkgICAgLy8gc3ViZGlycywgaWYgYW55CgkJCSAgICAnc291cmNlTWFwUm9vdHBhdGgnID0+IGNtc19qb2luX3BhdGgoJGJhc2VQYXRoLCAnJyksCgoJCQkgICAgLy8gKG9wdGlvbmFsKSBwcmVwZW5kZWQgdG8gJ3NvdXJjZScgZmllbGQgZW50cmllcyBmb3IgcmVsb2NhdGluZyBzb3VyY2UgZmlsZXMKCQkJICAgICdzb3VyY2VSb290JyAgICAgICAgPT4gJy8nLAoJCQldKTsKCQl9CgoJCS8vIEltcG9ydCBkaXJzCgkJJHRoaXMtPnBhcnNlci0+c2V0SW1wb3J0UGF0aHMoJHRoaXMtPmltcG9ydF9kaXJzKTsKCX0KCgkvLyBOb3RlIDogJGNzcyBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIGZvciBjbXNfc3R5bGVzaGVldCwgYnV0IG5lZWRzcyByZXR1cm4gZm9yIGNtc19yZW5kZXJfY3NzCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZUNTUygmJGNzcykKCXsKCQl0cnkgewoJCQkvLyBVc2luZyB0aGUgc2Vjb25kIHBhcmFtIHRvIGNvcnJlY3QgYSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS9sZWFmby9zY3NzcGhwL2lzc3Vlcy82NzcKCQkJJGNzcyA9ICR0aGlzLT5wYXJzZXItPmNvbXBpbGUoJGNzcywgJy8nKTsKCQl9CgkJY2F0Y2ggKGV4Y2VwdGlvbiAkZSkgewoJCQkkZXJyb3JfbWVzc2FnZSA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCWRlYnVnX3RvX2xvZygkZXJyb3JfbWVzc2FnZSk7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/bin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/bin/pscss</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2Jpbi9lbnYgcGhwCjw/cGhwCgovKioKICogU0NTU1BIUAogKgogKiBAY29weXJpZ2h0IDIwMTItMjAyMCBMZWFmIENvcmNvcmFuCiAqCiAqIEBsaWNlbnNlIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQgTUlUCiAqCiAqIEBsaW5rIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAqLwoKZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsKCmlmICh2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc1LjYnKSA8IDApIHsKICAgIGRpZSgnUmVxdWlyZXMgUEhQIDUuNiBvciBhYm92ZScpOwp9CgppbmNsdWRlIF9fRElSX18gLiAnLy4uL3Njc3MuaW5jLnBocCc7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzRXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXE91dHB1dFN0eWxlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFBhcnNlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWZXJzaW9uOwoKJHN0eWxlID0gbnVsbDsKJGxvYWRQYXRocyA9IFtdOwokZHVtcFRyZWUgPSBmYWxzZTsKJGlucHV0RmlsZSA9IG51bGw7CiRjaGFuZ2VEaXIgPSBmYWxzZTsKJGVuY29kaW5nID0gZmFsc2U7CiRzb3VyY2VNYXAgPSBmYWxzZTsKJGVtYmVkU291cmNlcyA9IGZhbHNlOwokZW1iZWRTb3VyY2VNYXAgPSBmYWxzZTsKCi8qKgogKiBQYXJzZSBhcmd1bWVudAogKgogKiBAcGFyYW0gaW50ICAgICAgJGkKICogQHBhcmFtIHN0cmluZ1tdICRvcHRpb25zCiAqCiAqIEByZXR1cm4gc3RyaW5nfG51bGwKICovCmZ1bmN0aW9uIHBhcnNlQXJndW1lbnQoJiRpLCAkb3B0aW9ucykgewogICAgZ2xvYmFsICRhcmdjOwogICAgZ2xvYmFsICRhcmd2OwoKICAgIGlmICghIHByZWdfbWF0Y2goJy9eKD86JyAuIGltcGxvZGUoJ3wnLCAoYXJyYXkpICRvcHRpb25zKSAuICcpPT8oLiopLycsICRhcmd2WyRpXSwgJG1hdGNoZXMpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChzdHJsZW4oJG1hdGNoZXNbMV0pKSB7CiAgICAgICAgcmV0dXJuICRtYXRjaGVzWzFdOwogICAgfQoKICAgIGlmICgkaSArIDEgPCAkYXJnYykgewogICAgICAgICRpKys7CgogICAgICAgIHJldHVybiAkYXJndlskaV07CiAgICB9Cn0KCiRhcmd1bWVudHMgPSBbXTsKCmZvciAoJGkgPSAxOyAkaSA8ICRhcmdjOyAkaSsrKSB7CiAgICBpZiAoJGFyZ3ZbJGldID09PSAnLT8nIHx8ICRhcmd2WyRpXSA9PT0gJy1oJyB8fCAkYXJndlskaV0gPT09ICctLWhlbHAnKSB7CiAgICAgICAgJGV4ZSA9ICRhcmd2WzBdOwoKICAgICAgICAkSEVMUCA9IDw8PEVPVApVc2FnZTogJGV4ZSBbb3B0aW9uc10gW2lucHV0LWZpbGVdIFtvdXRwdXQtZmlsZV0KCk9wdGlvbnMgaW5jbHVkZToKCiAgICAtLWhlbHAgICAgICAgICAgICAgIFNob3cgdGhpcyBtZXNzYWdlIFstaCwgLT9dCiAgICAtLWNvbnRpbnVlLW9uLWVycm9yIFtkZXByZWNhdGVkXSBJZ25vcmVkCiAgICAtLWRlYnVnLWluZm8gICAgICAgIFtkZXByZWNhdGVkXSBJZ25vcmVkIFstZ10KICAgIC0tZHVtcC10cmVlICAgICAgICAgW2RlcHJlY2F0ZWRdIER1bXAgZm9ybWF0dGVkIHBhcnNlIHRyZWUgWy1UXQogICAgLS1pc284ODU5LTEgICAgICAgICBVc2UgaXNvODg1OS0xIGVuY29kaW5nIGluc3RlYWQgb2YgZGVmYXVsdCB1dGYtOAogICAgLS1saW5lLW51bWJlcnMgICAgICBbZGVwcmVjYXRlZF0gSWdub3JlZCBbLS1saW5lLWNvbW1lbnRzXQogICAgLS1sb2FkLXBhdGg9UEFUSCAgICBTZXQgaW1wb3J0IHBhdGggWy1JXQogICAgLS1wcmVjaXNpb249TiAgICAgICBbZGVwcmVjYXRlZF0gSWdub3JlZC4gKGRlZmF1bHQgMTApIFstcF0KICAgIC0tc291cmNlbWFwICAgICAgICAgQ3JlYXRlIHNvdXJjZSBtYXAgZmlsZQogICAgLS1lbWJlZC1zb3VyY2VzICAgICBFbWJlZCBzb3VyY2UgZmlsZSBjb250ZW50cyBpbiBzb3VyY2UgbWFwcwogICAgLS1lbWJlZC1zb3VyY2UtbWFwICBFbWJlZCB0aGUgc291cmNlIG1hcCBjb250ZW50cyBpbiBDU1MgKGRlZmF1bHQgaWYgd3JpdGluZyB0byBzdGRvdXQpCiAgICAtLXN0eWxlPUZPUk1BVCAgICAgIFNldCB0aGUgb3V0cHV0IHN0eWxlIChjb21wcmVzc2VkIG9yIGV4cGFuZGVkKSBbLXMsIC10XQogICAgLS12ZXJzaW9uICAgICAgICAgICBQcmludCB0aGUgdmVyc2lvbiBbLXZdCgpFT1Q7CiAgICAgICAgZXhpdCgkSEVMUCk7CiAgICB9CgogICAgaWYgKCRhcmd2WyRpXSA9PT0gJy12JyB8fCAkYXJndlskaV0gPT09ICctLXZlcnNpb24nKSB7CiAgICAgICAgZXhpdChWZXJzaW9uOjpWRVJTSU9OIC4gIlxuIik7CiAgICB9CgogICAgLy8gS2VlcCBwYXJzaW5nIC0tY29udGludWUtb24tZXJyb3IgdG8gYXZvaWQgQkMgYnJlYWtzIGZvciBzY3JpcHRzIHVzaW5nIGl0CiAgICBpZiAoJGFyZ3ZbJGldID09PSAnLS1jb250aW51ZS1vbi1lcnJvcicpIHsKICAgICAgICAvLyBUT0RPIHJlcG9ydCBpdCBhcyBhIHdhcm5pbmcgPwogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIC8vIEtlZXAgcGFyc2luZyBpdCB0byBhdm9pZCBCQyBicmVha3MgZm9yIHNjcmlwdHMgdXNpbmcgaXQKICAgIGlmICgkYXJndlskaV0gPT09ICctZycgfHwgJGFyZ3ZbJGldID09PSAnLS1kZWJ1Zy1pbmZvJykgewogICAgICAgIC8vIFRPRE8gcmVwb3J0IGl0IGFzIGEgd2FybmluZyA/CiAgICAgICAgY29udGludWU7CiAgICB9CgogICAgaWYgKCRhcmd2WyRpXSA9PT0gJy0taXNvODg1OS0xJykgewogICAgICAgICRlbmNvZGluZyA9ICdpc284ODU5LTEnOwogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIC8vIEtlZXAgcGFyc2luZyBpdCB0byBhdm9pZCBCQyBicmVha3MgZm9yIHNjcmlwdHMgdXNpbmcgaXQKICAgIGlmICgkYXJndlskaV0gPT09ICctLWxpbmUtbnVtYmVycycgfHwgJGFyZ3ZbJGldID09PSAnLS1saW5lLWNvbW1lbnRzJykgewogICAgICAgIC8vIFRPRE8gcmVwb3J0IGl0IGFzIGEgd2FybmluZyA/CiAgICAgICAgY29udGludWU7CiAgICB9CgogICAgaWYgKCRhcmd2WyRpXSA9PT0gJy0tc291cmNlbWFwJykgewogICAgICAgICRzb3VyY2VNYXAgPSB0cnVlOwogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmICgkYXJndlskaV0gPT09ICctLWVtYmVkLXNvdXJjZXMnKSB7CiAgICAgICAgJGVtYmVkU291cmNlcyA9IHRydWU7CiAgICAgICAgY29udGludWU7CiAgICB9CgogICAgaWYgKCRhcmd2WyRpXSA9PT0gJy0tZW1iZWQtc291cmNlLW1hcCcpIHsKICAgICAgICAkZW1iZWRTb3VyY2VNYXAgPSB0cnVlOwogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmICgkYXJndlskaV0gPT09ICctVCcgfHwgJGFyZ3ZbJGldID09PSAnLS1kdW1wLXRyZWUnKSB7CiAgICAgICAgJGR1bXBUcmVlID0gdHJ1ZTsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICAkdmFsdWUgPSBwYXJzZUFyZ3VtZW50KCRpLCBhcnJheSgnLXQnLCAnLXMnLCAnLS1zdHlsZScpKTsKCiAgICBpZiAoaXNzZXQoJHZhbHVlKSkgewogICAgICAgICRzdHlsZSA9ICR2YWx1ZTsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICAkdmFsdWUgPSBwYXJzZUFyZ3VtZW50KCRpLCBhcnJheSgnLUknLCAnLS1sb2FkLXBhdGgnKSk7CgogICAgaWYgKGlzc2V0KCR2YWx1ZSkpIHsKICAgICAgICAkbG9hZFBhdGhzW10gPSAkdmFsdWU7CiAgICAgICAgY29udGludWU7CiAgICB9CgogICAgLy8gS2VlcCBwYXJzaW5nIC0tcHJlY2lzaW9uIHRvIGF2b2lkIEJDIGJyZWFrcyBmb3Igc2NyaXB0cyB1c2luZyBpdAogICAgJHZhbHVlID0gcGFyc2VBcmd1bWVudCgkaSwgYXJyYXkoJy1wJywgJy0tcHJlY2lzaW9uJykpOwoKICAgIGlmIChpc3NldCgkdmFsdWUpKSB7CiAgICAgICAgLy8gVE9ETyByZXBvcnQgaXQgYXMgYSB3YXJuaW5nID8KICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICAkYXJndW1lbnRzW10gPSAkYXJndlskaV07Cn0KCgppZiAoaXNzZXQoJGFyZ3VtZW50c1swXSkgJiYgZmlsZV9leGlzdHMoJGFyZ3VtZW50c1swXSkpIHsKICAgICRpbnB1dEZpbGUgPSAkYXJndW1lbnRzWzBdOwogICAgJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkaW5wdXRGaWxlKTsKfSBlbHNlIHsKICAgICRkYXRhID0gJyc7CgogICAgd2hpbGUgKCEgZmVvZihTVERJTikpIHsKICAgICAgICAkZGF0YSAuPSBmcmVhZChTVERJTiwgODE5Mik7CiAgICB9Cn0KCmlmICgkZHVtcFRyZWUpIHsKICAgICRwYXJzZXIgPSBuZXcgUGFyc2VyKCRpbnB1dEZpbGUpOwoKICAgIHByaW50X3IoanNvbl9kZWNvZGUoanNvbl9lbmNvZGUoJHBhcnNlci0+cGFyc2UoJGRhdGEpKSwgdHJ1ZSkpOwoKICAgIGZ3cml0ZShTVERFUlIsICdXYXJuaW5nOiB0aGUgLS1kdW1wLXRyZWUgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFVzZSBwcm9wZXIgZGVidWdnaW5nIHRvb2xzIGluc3RlYWQuJyk7CgogICAgZXhpdCgpOwp9Cgokc2NzcyA9IG5ldyBDb21waWxlcigpOwoKaWYgKCRsb2FkUGF0aHMpIHsKICAgICRzY3NzLT5zZXRJbXBvcnRQYXRocygkbG9hZFBhdGhzKTsKfQoKaWYgKCRzdHlsZSkgewogICAgaWYgKCRzdHlsZSA9PT0gT3V0cHV0U3R5bGU6OkNPTVBSRVNTRUQgfHwgJHN0eWxlID09PSBPdXRwdXRTdHlsZTo6RVhQQU5ERUQpIHsKICAgICAgICAkc2Nzcy0+c2V0T3V0cHV0U3R5bGUoJHN0eWxlKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZndyaXRlKFNUREVSUiwgIldBUk5JTkc6IHRoZSAkc3R5bGUgc3R5bGUgaXMgZGVwcmVjYXRlZC5cbiIpOwogICAgICAgICRzY3NzLT5zZXRGb3JtYXR0ZXIoJ1Njc3NQaHBcXFNjc3NQaHBcXEZvcm1hdHRlclxcJyAuIHVjZmlyc3QoJHN0eWxlKSk7CiAgICB9Cn0KCiRvdXRwdXRGaWxlID0gaXNzZXQoJGFyZ3VtZW50c1sxXSkgPyAkYXJndW1lbnRzWzFdIDogbnVsbDsKJHNvdXJjZU1hcEZpbGUgPSBudWxsOwoKaWYgKCRzb3VyY2VNYXApIHsKICAgICRzb3VyY2VNYXBPcHRpb25zID0gYXJyYXkoCiAgICAgICAgJ291dHB1dFNvdXJjZUZpbGVzJyA9PiAkZW1iZWRTb3VyY2VzLAogICAgKTsKICAgIGlmICgkZW1iZWRTb3VyY2VNYXAgfHwgJG91dHB1dEZpbGUgPT09IG51bGwpIHsKICAgICAgICAkc2Nzcy0+c2V0U291cmNlTWFwKENvbXBpbGVyOjpTT1VSQ0VfTUFQX0lOTElORSk7CiAgICB9IGVsc2UgewogICAgICAgICRzb3VyY2VNYXBGaWxlID0gJG91dHB1dEZpbGUgLiAnLm1hcCc7CiAgICAgICAgJHNvdXJjZU1hcE9wdGlvbnNbJ3NvdXJjZU1hcFdyaXRlVG8nXSA9ICRzb3VyY2VNYXBGaWxlOwogICAgICAgICRzb3VyY2VNYXBPcHRpb25zWydzb3VyY2VNYXBVUkwnXSA9IGJhc2VuYW1lKCRzb3VyY2VNYXBGaWxlKTsKICAgICAgICAkc291cmNlTWFwT3B0aW9uc1snc291cmNlTWFwQmFzZXBhdGgnXSA9IGdldGN3ZCgpOwogICAgICAgICRzb3VyY2VNYXBPcHRpb25zWydzb3VyY2VNYXBGaWxlbmFtZSddID0gYmFzZW5hbWUoJG91dHB1dEZpbGUpOwoKICAgICAgICAkc2Nzcy0+c2V0U291cmNlTWFwKENvbXBpbGVyOjpTT1VSQ0VfTUFQX0ZJTEUpOwogICAgfQoKICAgICRzY3NzLT5zZXRTb3VyY2VNYXBPcHRpb25zKCRzb3VyY2VNYXBPcHRpb25zKTsKfQoKaWYgKCRlbmNvZGluZykgewogICAgJHNjc3MtPnNldEVuY29kaW5nKCRlbmNvZGluZyk7Cn0KCnRyeSB7CiAgICAkcmVzdWx0ID0gJHNjc3MtPmNvbXBpbGVTdHJpbmcoJGRhdGEsICRpbnB1dEZpbGUpOwp9IGNhdGNoIChTYXNzRXhjZXB0aW9uICRlKSB7CiAgICBmd3JpdGUoU1RERVJSLCAnRXJyb3I6ICcuJGUtPmdldE1lc3NhZ2UoKS4iXG4iKTsKICAgIGV4aXQoMSk7Cn0KCmlmICgkb3V0cHV0RmlsZSkgewogICAgZmlsZV9wdXRfY29udGVudHMoJG91dHB1dEZpbGUsICRyZXN1bHQtPmdldENzcygpKTsKCiAgICBpZiAoJHNvdXJjZU1hcEZpbGUgIT09IG51bGwgJiYgJHJlc3VsdC0+Z2V0U291cmNlTWFwKCkgIT09IG51bGwpIHsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkc291cmNlTWFwRmlsZSwgJHJlc3VsdC0+Z2V0U291cmNlTWFwKCkpOwogICAgfQp9IGVsc2UgewogICAgZWNobyAkcmVzdWx0LT5nZXRDc3MoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic2Nzc3BocC9zY3NzcGhwIiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImRlc2NyaXB0aW9uIjogInNjc3NwaHAgaXMgYSBjb21waWxlciBmb3IgU0NTUyB3cml0dGVuIGluIFBIUC4iLAogICAgImtleXdvcmRzIjogWyJjc3MiLCAic3R5bGVzaGVldCIsICJzY3NzIiwgInNhc3MiLCAibGVzcyJdLAogICAgImhvbWVwYWdlIjogImh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwLyIsCiAgICAibGljZW5zZSI6IFsKICAgICAgICAiTUlUIgogICAgXSwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQW50aG9uIFBhbmciLAogICAgICAgICAgICAiZW1haWwiOiAiYXBhbmdAc29mdHdhcmVkZXZlbG9wbWVudC5jYSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcm9ib2NvZGVyIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJDw6lkcmljIE1vcmluIiwKICAgICAgICAgICAgImVtYWlsIjogImNlZHJpY0B5dGVyaXVtLmNvbSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2VyZGljIgogICAgICAgIH0KICAgIF0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogeyAiU2Nzc1BocFxcU2Nzc1BocFxcIjogInNyYy8iIH0KICAgIH0sCiAgICAiYXV0b2xvYWQtZGV2IjogewogICAgICAgICJwc3ItNCI6IHsgIlNjc3NQaHBcXFNjc3NQaHBcXFRlc3RzXFwiOiAidGVzdHMvIiB9CiAgICB9LAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTUuNi4wIiwKICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgImV4dC1jdHlwZSI6ICIqIgogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJleHQtbWJzdHJpbmciOiAiRm9yIGJlc3QgcGVyZm9ybWFuY2UsIG1ic3RyaW5nIHNob3VsZCBiZSBpbnN0YWxsZWQgYXMgaXQgaXMgZmFzdGVyIHRoYW4gZXh0LWljb252IiwKICAgICAgICAiZXh0LWljb252IjogIkNhbiBiZSB1c2VkIGFzIGZhbGxiYWNrIHdoZW4gZXh0LW1ic3RyaW5nIGlzIG5vdCBhdmFpbGFibGUiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJiYW1hcm5pL2NvbXBvc2VyLWJpbi1wbHVnaW4iOiAiXjEuNCIsCiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNS43IHx8IF42LjUgfHwgXjcuNSB8fCBeOC4zIHx8IF45LjQiLAogICAgICAgICJzYXNzL3Nhc3Mtc3BlYyI6ICIqIiwKICAgICAgICAic3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlciI6ICJ+My41IiwKICAgICAgICAic3ltZm9ueS9waHB1bml0LWJyaWRnZSI6ICJeNS4xIiwKICAgICAgICAidHdicy9ib290c3RyYXAiOiAifjUuMCIsCiAgICAgICAgInR3YnMvYm9vdHN0cmFwNCI6ICI0LjYuMCIsCiAgICAgICAgInp1cmIvZm91bmRhdGlvbiI6ICJ+Ni41IgogICAgfSwKICAgICJyZXBvc2l0b3JpZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJwYWNrYWdlIiwKICAgICAgICAgICAgInBhY2thZ2UiOiB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJzYXNzL3Nhc3Mtc3BlYyIsCiAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyMDIxLjA2LjMwIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3Mtc3BlYy5naXQiLAogICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZTM0ODk1OTY1N2YxZTI3NGNlZjY1ODI4MzQzNmEzMTFhOTI1YTY3MyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zYXNzL3Nhc3Mtc3BlYy96aXBiYWxsL2UzNDg5NTk2NTdmMWUyNzRjZWY2NTgyODM0MzZhMzExYTkyNWE2NzMiLAogICAgICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZTM0ODk1OTY1N2YxZTI3NGNlZjY1ODI4MzQzNmEzMTFhOTI1YTY3MyIsCiAgICAgICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicGFja2FnZSIsCiAgICAgICAgICAgICJwYWNrYWdlIjogewogICAgICAgICAgICAgICAgIm5hbWUiOiAidHdicy9ib290c3RyYXA0IiwKICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogInY0LjYuMCIsCiAgICAgICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAuZ2l0IiwKICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjZmZmIwYjQ4ZTQ1NTQzMGY4YTUzNTllZDY4OWFkNjRjMTE0M2ZhYzIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvdHdicy9ib290c3RyYXAvemlwYmFsbC82ZmZiMGI0OGU0NTU0MzBmOGE1MzU5ZWQ2ODlhZDY0YzExNDNmYWMyIiwKICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjZmZmIwYjQ4ZTQ1NTQzMGY4YTUzNTllZDY4OWFkNjRjMTE0M2ZhYzIiLAogICAgICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgXSwKICAgICJiaW4iOiBbImJpbi9wc2NzcyJdLAogICAgImNvbmZpZyI6IHsKICAgICAgICAic29ydC1wYWNrYWdlcyI6IHRydWUKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/LICENSE.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IExlYWYgQ29yY29yYW4sIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCmEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCndpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCnBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwp0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCkVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgpNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORApOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCkxJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCldJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/phpcs.xml.dist</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxydWxlc2V0IG5hbWU9IlBTUjEyIChhZGFwdGVkIGZvciBQSFAgNS42KykiPgogICAgPHJ1bGUgcmVmPSJQU1IxMiI+CiAgICAgICAgPCEtLSBJZ25vcmUgdGhpcyBQSFAgNy4xKyBzbmlmZiBhcyBsb25nIGFzIHdlIHN1cHBvcnQgUEhQIDUuNisgLS0+CiAgICAgICAgPGV4Y2x1ZGUgbmFtZT0iUFNSMTIuUHJvcGVydGllcy5Db25zdGFudFZpc2liaWxpdHkuTm90Rm91bmQiLz4KCiAgICAgICAgPCEtLSBUaGlzIHNuaWZmIGRvZXNuJ3QgaWdub3JlIGNvbW1lbnQgYmxvY2tzIC0tPgo8IS0tCiAgICAgICAgPGV4Y2x1ZGUgbmFtZT0iR2VuZXJpYy5GaWxlcy5MaW5lTGVuZ3RoIi8+Ci0tPgogICAgPC9ydWxlPgo8L3J1bGVzZXQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBzY3NzcGhwCiMjIyA8aHR0cHM6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwPgoKIVtCdWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL3Njc3NwaHAvc2Nzc3BocC93b3JrZmxvd3MvQ0kvYmFkZ2Uuc3ZnKQpbIVtMaWNlbnNlXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL3Njc3NwaHAvc2Nzc3BocC9saWNlbnNlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3Njc3NwaHAvc2Nzc3BocCkKCmBzY3NzcGhwYCBpcyBhIGNvbXBpbGVyIGZvciBTQ1NTIHdyaXR0ZW4gaW4gUEhQLgoKQ2hlY2tvdXQgdGhlIGhvbWVwYWdlLCA8aHR0cHM6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwPiwgZm9yIGRpcmVjdGlvbnMgb24gaG93IHRvIHVzZS4KCiMjIFJ1bm5pbmcgVGVzdHMKCmBzY3NzcGhwYCB1c2VzIFtQSFBVbml0XShodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdCkgZm9yIHRlc3RpbmcuCgpSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIHJ1biBldmVyeSB0ZXN0OgoKICAgIHZlbmRvci9iaW4vcGhwdW5pdCB0ZXN0cwoKVGhlcmUgYXJlIHNldmVyYWwgdGVzdHMgaW4gdGhlIGB0ZXN0cy9gIGRpcmVjdG9yeToKCiogYEFwaVRlc3QucGhwYCBjb250YWlucyB2YXJpb3VzIHVuaXQgdGVzdHMgdGhhdCB0ZXN0IHRoZSBQSFAgaW50ZXJmYWNlLgoqIGBFeGNlcHRpb25UZXN0LnBocGAgY29udGFpbnMgdW5pdCB0ZXN0cyB0aGF0IHRlc3QgZm9yIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZSBwYXJzZXIgYW5kIGNvbXBpbGVyLgoqIGBGYWlsaW5nVGVzdC5waHBgIGNvbnRhaW5zIHRlc3RzIHJlcG9ydGVkIGluIEdpdGh1YiBpc3N1ZXMgdGhhdCBkZW1vbnN0cmF0ZSBjb21wYXRpYmlsaXR5IGJ1Z3MuCiogYElucHV0VGVzdC5waHBgIGNvbXBpbGVzIGV2ZXJ5IGAuc2Nzc2AgZmlsZSBpbiB0aGUgYHRlc3RzL2lucHV0c2AgZGlyZWN0b3J5CiAgdGhlbiBjb21wYXJlcyB0byB0aGUgcmVzcGVjdGl2ZSBgLmNzc2AgZmlsZSBpbiB0aGUgYHRlc3RzL291dHB1dHNgIGRpcmVjdG9yeS4KKiBgU2Fzc1NwZWNUZXN0LnBocGAgZXh0cmFjdHMgdGVzdHMgZnJvbSB0aGUgYHNhc3Mvc2Fzcy1zcGVjYCByZXBvc2l0b3J5LgoKV2hlbiBjaGFuZ2luZyBhbnkgb2YgdGhlIHRlc3RzIGluIGB0ZXN0cy9pbnB1dHNgLCB0aGUgdGVzdHMgd2lsbCBtb3N0IGxpa2VseQpmYWlsIGJlY2F1c2UgdGhlIG91dHB1dCBoYXMgY2hhbmdlZC4gT25jZSB5b3UgdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBpcyBjb3JyZWN0CnlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byByZWJ1aWxkIGFsbCB0aGUgdGVzdHM6CgogICAgQlVJTEQ9MSB2ZW5kb3IvYmluL3BocHVuaXQgdGVzdHMKClRoaXMgd2lsbCBjb21waWxlIGFsbCB0aGUgdGVzdHMsIGFuZCBzYXZlIHJlc3VsdHMgaW50byBgdGVzdHMvb3V0cHV0c2AuIEl0IGFsc28KdXBkYXRlcyB0aGUgbGlzdCBvZiBleGNsdWRlZCBzcGVjcyBmcm9tIHNhc3Mtc3BlYy4KClRvIGVuYWJsZSB0aGUgZnVsbCBgc2Fzcy1zcGVjYCBjb21wYXRpYmlsaXR5IHRlc3RzOgoKICAgIFRFU1RfU0FTU19TUEVDPTEgdmVuZG9yL2Jpbi9waHB1bml0IHRlc3RzCgojIyBDb2RpbmcgU3RhbmRhcmQKCmBzY3NzcGhwYCBzb3VyY2UgY29uZm9ybXMgdG8gW1BTUjEyXShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTEyLykuCgpSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIGNoZWNrIHRoZSBjb2RlIGZvciAic25pZmZzIi4KCiAgICB2ZW5kb3IvYmluL3BocGNzIC0tc3RhbmRhcmQ9UFNSMTIgLS1leHRlbnNpb25zPXBocCBiaW4gc3JjIHRlc3RzICoucGhwCgojIyBTdGF0aWMgQW5hbHlzaXMKCmBzY3NzcGhwYCB1c2VzIFtwaHBzdGFuXShodHRwczovL3BocHN0YW4ub3JnLykgZm9yIHN0YXRpYyBhbmFseXNpcy4KClJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gYW5hbHlzZSB0aGUgY29kZWJhc2U6CgogICAgbWFrZSBwaHBzdGFuCgpBcyBtb3N0IG9mIHRoZSBjb2RlYmFzZSBpcyBjb21wb3NlZCBvZiBsZWdhY3kgY29kZSB3aGljaCBjYW5ub3QgYmUgdHlwZS1jaGVja2VkCmZ1bGx5LCB0aGUgc2V0dXAgY29udGFpbnMgYSBiYXNlbGluZSBmaWxlIHdpdGggYWxsIGVycm9ycyB3ZSB3YW50IHRvIGlnbm9yZS4gSW4KcGFydGljdWxhciwgd2UgaWdub3JlIGFsbCBlcnJvcnMgcmVsYXRlZCB0byBub3Qgc3BlY2lmeWluZyB0aGUgdHlwZXMgaW5zaWRlIGFycmF5cwp3aGVuIHRoZXNlIGFycmF5cyBjb3JyZXNwb25kIHRvIHRoZSByZXByZXNlbnRhdGlvbiBvZiBTYXNzIHZhbHVlcyBhbmQgU2FzcyBBU1Qgbm9kZXMKaW4gdGhlIHBhcnNlciBhbmQgY29tcGlsZXIuCldoZW4gY29udHJpYnV0aW5nLCB0aGUgcHJvcGVyIHByb2Nlc3MgdG8gZGVhbCB3aXRoIHN0YXRpYyBhbmFseXNpcyBpcyB0aGUgZm9sbG93aW5nOgoKMS4gTWFrZSB5b3VyIGNoYW5nZSBpbiB0aGUgY29kZWJhc2UKMi4gUnVuIGBtYWtlIHBocHN0YW5gCjMuIEZpeCBlcnJvcnMgcmVwb3J0ZWQgYnkgcGhwc3RhbiB3aGVuIHBvc3NpYmxlCjQuIFJlcGVhdCBzdGVwIDIgYW5kIDMgdW50aWwgbm90aGluZyBnZXRzIGZpeGVkIGFueW1vcmUgYXQgc3RlcCAzCjUuIFJ1biBgbWFrZSBwaHBzdGFuLWJhc2VsaW5lYCB0byByZWdlbmVyYXRlIHRoZSBwaHBzdGFuIGJhc2VsaW5lCgpBZGRpdGlvbnMgdG8gdGhlIGJhc2VsaW5lIHdpbGwgYmUgcmV2aWV3ZWQgdG8gYXZvaWQgaWdub3JpbmcgZXJyb3JzIHRoYXQgc2hvdWxkIGhhdmUKYmVlbiBmaXhlZC4K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/scss.inc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICh2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc1LjYnKSA8IDApIHsKICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdzY3NzcGhwIHJlcXVpcmVzIFBIUCA1LjYgb3IgYWJvdmUnKTsKfQoKaWYgKCEgY2xhc3NfZXhpc3RzKCdTY3NzUGhwXFNjc3NQaHBcVmVyc2lvbicpKSB7CiAgICBzcGxfYXV0b2xvYWRfcmVnaXN0ZXIoZnVuY3Rpb24gKCRjbGFzcykgewogICAgICAgIGlmICgwICE9PSBzdHJwb3MoJGNsYXNzLCAnU2Nzc1BocFxTY3NzUGhwXFwnKSkgewogICAgICAgICAgICAvLyBOb3QgYSBTY3NzUGhwIGNsYXNzCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRzdWJDbGFzcyA9IHN1YnN0cigkY2xhc3MsIHN0cmxlbignU2Nzc1BocFxTY3NzUGhwXFwnKSk7CiAgICAgICAgJHBhdGggPSBfX0RJUl9fIC4gJy9zcmMvJyAuIHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHN1YkNsYXNzKSAuICcucGhwJzsKCiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRwYXRoKSkgewogICAgICAgICAgICByZXF1aXJlICRwYXRoOwogICAgICAgIH0KICAgIH0pOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Base/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Base/Range.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxNS0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJhc2U7CgovKioKICogUmFuZ2UKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIFJhbmdlCnsKICAgIC8qKgogICAgICogQHZhciBmbG9hdHxpbnQKICAgICAqLwogICAgcHVibGljICRmaXJzdDsKCiAgICAvKioKICAgICAqIEB2YXIgZmxvYXR8aW50CiAgICAgKi8KICAgIHB1YmxpYyAkbGFzdDsKCiAgICAvKioKICAgICAqIEluaXRpYWxpemUgcmFuZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gaW50fGZsb2F0ICRmaXJzdAogICAgICogQHBhcmFtIGludHxmbG9hdCAkbGFzdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZpcnN0LCAkbGFzdCkKICAgIHsKICAgICAgICAkdGhpcy0+Zmlyc3QgPSAkZmlyc3Q7CiAgICAgICAgJHRoaXMtPmxhc3QgPSAkbGFzdDsKICAgIH0KCiAgICAvKioKICAgICAqIFRlc3QgZm9yIGluY2x1c2lvbiBpbiByYW5nZQogICAgICoKICAgICAqIEBwYXJhbSBpbnR8ZmxvYXQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbmNsdWRlcygkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZSA+PSAkdGhpcy0+Zmlyc3QgJiYgJHZhbHVlIDw9ICR0aGlzLT5sYXN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIEJsb2NrCiAqCiAqIEBhdXRob3IgQW50aG9uIFBhbmcgPGFudGhvbi5wYW5nQGdtYWlsLmNvbT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBCbG9jawp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljICR0eXBlOwoKICAgIC8qKgogICAgICogQHZhciBCbG9ja3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkcGFyZW50OwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRzb3VyY2VOYW1lOwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHVibGljICRzb3VyY2VJbmRleDsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHB1YmxpYyAkc291cmNlTGluZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHB1YmxpYyAkc291cmNlQ29sdW1uOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkc2VsZWN0b3JzOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGNvbW1lbnRzOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGNoaWxkcmVuOwoKICAgIC8qKgogICAgICogQHZhciBCbG9ja3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkc2VsZlBhcmVudDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/AtRootBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgQXRSb290QmxvY2sgZXh0ZW5kcyBCbG9jawp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXl8bnVsbAogICAgICovCiAgICBwdWJsaWMgJHNlbGVjdG9yOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkd2l0aDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgICR0aGlzLT50eXBlID0gVHlwZTo6VF9BVF9ST09UOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/CallableBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudDsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIENhbGxhYmxlQmxvY2sgZXh0ZW5kcyBCbG9jawp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkbmFtZTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXl8bnVsbAogICAgICovCiAgICBwdWJsaWMgJGFyZ3M7CgogICAgLyoqCiAgICAgKiBAdmFyIEVudmlyb25tZW50fG51bGwKICAgICAqLwogICAgcHVibGljICRwYXJlbnRFbnY7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdHlwZSkKICAgIHsKICAgICAgICAkdGhpcy0+dHlwZSA9ICR0eXBlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/ContentBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgQ29udGVudEJsb2NrIGV4dGVuZHMgQmxvY2sKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5fG51bGwKICAgICAqLwogICAgcHVibGljICRjaGlsZDsKCiAgICAvKioKICAgICAqIEB2YXIgRW52aXJvbm1lbnR8bnVsbAogICAgICovCiAgICBwdWJsaWMgJHNjb3BlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnR5cGUgPSBUeXBlOjpUX0lOQ0xVREU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/DirectiveBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRGlyZWN0aXZlQmxvY2sgZXh0ZW5kcyBCbG9jawp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkbmFtZTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfGFycmF5fG51bGwKICAgICAqLwogICAgcHVibGljICR2YWx1ZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgICR0aGlzLT50eXBlID0gVHlwZTo6VF9ESVJFQ1RJVkU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/EachBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRWFjaEJsb2NrIGV4dGVuZHMgQmxvY2sKewogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyAkdmFycyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGxpc3Q7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+dHlwZSA9IFR5cGU6OlRfRUFDSDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/ElseBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRWxzZUJsb2NrIGV4dGVuZHMgQmxvY2sKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+dHlwZSA9IFR5cGU6OlRfRUxTRTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/ElseifBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRWxzZWlmQmxvY2sgZXh0ZW5kcyBCbG9jawp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHVibGljICRjb25kOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnR5cGUgPSBUeXBlOjpUX0VMU0VJRjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/ForBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRm9yQmxvY2sgZXh0ZW5kcyBCbG9jawp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkdmFyOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJHN0YXJ0OwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGVuZDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwdWJsaWMgJHVudGlsOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnR5cGUgPSBUeXBlOjpUX0ZPUjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/IfBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgSWZCbG9jayBleHRlbmRzIEJsb2NrCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGNvbmQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PEVsc2VpZkJsb2NrfEVsc2VCbG9jaz4KICAgICAqLwogICAgcHVibGljICRjYXNlcyA9IFtdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnR5cGUgPSBUeXBlOjpUX0lGOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/MediaBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgTWVkaWFCbG9jayBleHRlbmRzIEJsb2NrCnsKICAgIC8qKgogICAgICogQHZhciBzdHJpbmd8YXJyYXl8bnVsbAogICAgICovCiAgICBwdWJsaWMgJHZhbHVlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkcXVlcnlMaXN0OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnR5cGUgPSBUeXBlOjpUX01FRElBOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/NestedPropertyBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgTmVzdGVkUHJvcGVydHlCbG9jayBleHRlbmRzIEJsb2NrCnsKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHB1YmxpYyAkaGFzVmFsdWU7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkcHJlZml4OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnR5cGUgPSBUeXBlOjpUX05FU1RFRF9QUk9QRVJUWTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block/WhileBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgV2hpbGVCbG9jayBleHRlbmRzIEJsb2NrCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGNvbmQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+dHlwZSA9IFR5cGU6OlRfV0hJTEU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Cache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxWZXJzaW9uOwoKLyoqCiAqIFRoZSBzY3NzIGNhY2hlIG1hbmFnZXIuCiAqCiAqIEluIHNob3J0OgogKgogKiBhbGxvdyB0byBwdXQgaW4gY2FjaGUvZ2V0IGZyb20gY2FjaGUgYSBnZW5lcmljIHJlc3VsdCBmcm9tIGEga25vd24gb3BlcmF0aW9uIG9uIGEgZ2VuZXJpYyBkYXRhc2V0LAogKiB0YWtpbmcgaW4gYWNjb3VudCBvcHRpb25zIHRoYXQgYWZmZWN0cyB0aGUgcmVzdWx0CiAqCiAqIFRoZSBjYWNoZSBtYW5hZ2VyIGlzIGFnbm9zdGljIGFib3V0IGRhdGEgZm9ybWF0IGFuZCBvbmx5IHRoZSBvcGVyYXRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgZGVzY3JpYmVkIGJ5IHN0cmluZwogKi8KCi8qKgogKiBTQ1NTIGNhY2hlCiAqCiAqIEBhdXRob3IgQ2VkcmljIE1vcmluIDxjZWRyaWNAeXRlcml1bS5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgQ2FjaGUKewogICAgY29uc3QgQ0FDSEVfVkVSU0lPTiA9IDE7CgogICAgLyoqCiAgICAgKiBkaXJlY3RvcnkgdXNlZCBmb3Igc3RvcmluZyBkYXRhCiAgICAgKgogICAgICogQHZhciBzdHJpbmd8ZmFsc2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyAkY2FjaGVEaXIgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIHByZWZpeCBmb3IgdGhlIHN0b3JpbmcgZGF0YQogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgJHByZWZpeCA9ICdzY3NzcGhwXyc7CgogICAgLyoqCiAgICAgKiBmb3JjZSBhIHJlZnJlc2ggOiAnb25jZScgZm9yIHJlZnJlc2hpbmcgdGhlIGZpcnN0IGhpdCBvbiBhIGNhY2hlIG9ubHksIHRydWUgdG8gbmV2ZXIgdXNlIHRoZSBjYWNoZSBpbiB0aGlzIGhpdAogICAgICoKICAgICAqIEB2YXIgYm9vbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyAkZm9yY2VSZWZyZXNoID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFmdGVyIHdoaWNoIGRhdGEgY2FjaGVkIHdpbGwgYmUgc2VlbiBhcyAnZ2FyYmFnZScgYW5kIHBvdGVudGlhbGx5IGNsZWFuZWQgdXAKICAgICAqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwdWJsaWMgc3RhdGljICRnY0xpZmV0aW1lID0gNjA0ODAwOwoKICAgIC8qKgogICAgICogYXJyYXkgb2YgYWxyZWFkeSByZWZyZXNoZWQgY2FjaGUgaWYgJGZvcmNlUmVmcmVzaD09PSdvbmNlJwogICAgICoKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBib29sPgogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRyZWZyZXNoZWQgPSBbXTsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvcHRpb25zCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gYXJyYXl7Y2FjaGVEaXI/OiBzdHJpbmcsIHByZWZpeD86IHN0cmluZywgZm9yY2VSZWZyZXNoPzogc3RyaW5nfSAkb3B0aW9ucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG9wdGlvbnMpCiAgICB7CiAgICAgICAgLy8gY2hlY2sgJGNhY2hlRGlyCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydjYWNoZURpciddKSkgewogICAgICAgICAgICBzZWxmOjokY2FjaGVEaXIgPSAkb3B0aW9uc1snY2FjaGVEaXInXTsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eShzZWxmOjokY2FjaGVEaXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2NhY2hlRGlyIG5vdCBzZXQnKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sncHJlZml4J10pKSB7CiAgICAgICAgICAgIHNlbGY6OiRwcmVmaXggPSAkb3B0aW9uc1sncHJlZml4J107CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoc2VsZjo6JHByZWZpeCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigncHJlZml4IG5vdCBzZXQnKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snZm9yY2VSZWZyZXNoJ10pKSB7CiAgICAgICAgICAgIHNlbGY6OiRmb3JjZVJlZnJlc2ggPSAkb3B0aW9uc1snZm9yY2VSZWZyZXNoJ107CiAgICAgICAgfQoKICAgICAgICBzZWxmOjpjaGVja0NhY2hlRGlyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNhY2hlZCByZXN1bHQgb2YgJG9wZXJhdGlvbiBvbiAkd2hhdCwKICAgICAqIHdoaWNoIGlzIGtub3duIGFzIGRlcGVuZGFudCBmcm9tIHRoZSBjb250ZW50IG9mICRvcHRpb25zCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICRvcGVyYXRpb24gICAgcGFyc2UsIGNvbXBpbGUuLi4KICAgICAqIEBwYXJhbSBtaXhlZCAgICAkd2hhdCAgICAgICAgIGNvbnRlbnQga2V5IChlLmcuLCBmaWxlbmFtZSB0byBiZSB0cmVhdGVkKQogICAgICogQHBhcmFtIGFycmF5ICAgICRvcHRpb25zICAgICAgYW55IG9wdGlvbiB0aGF0IGFmZmVjdCB0aGUgb3BlcmF0aW9uIHJlc3VsdCBvbiB0aGUgY29udGVudAogICAgICogQHBhcmFtIGludHxudWxsICRsYXN0TW9kaWZpZWQgbGFzdCBtb2RpZmllZCB0aW1lc3RhbXAKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDYWNoZSgkb3BlcmF0aW9uLCAkd2hhdCwgJG9wdGlvbnMgPSBbXSwgJGxhc3RNb2RpZmllZCA9IG51bGwpCiAgICB7CiAgICAgICAgJGZpbGVDYWNoZSA9IHNlbGY6OiRjYWNoZURpciAuIHNlbGY6OmNhY2hlTmFtZSgkb3BlcmF0aW9uLCAkd2hhdCwgJG9wdGlvbnMpOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICgoc2VsZjo6JGZvcmNlUmVmcmVzaCA9PT0gZmFsc2UpIHx8IChzZWxmOjokZm9yY2VSZWZyZXNoID09PSAnb25jZScgJiYKICAgICAgICAgICAgaXNzZXQoc2VsZjo6JHJlZnJlc2hlZFskZmlsZUNhY2hlXSkpKSAmJiBmaWxlX2V4aXN0cygkZmlsZUNhY2hlKQogICAgICAgICkgewogICAgICAgICAgICAkY2FjaGVUaW1lID0gZmlsZW10aW1lKCRmaWxlQ2FjaGUpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKFxpc19udWxsKCRsYXN0TW9kaWZpZWQpIHx8ICRjYWNoZVRpbWUgPiAkbGFzdE1vZGlmaWVkKSAmJgogICAgICAgICAgICAgICAgJGNhY2hlVGltZSArIHNlbGY6OiRnY0xpZmV0aW1lID4gdGltZSgpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGMgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZUNhY2hlKTsKICAgICAgICAgICAgICAgICRjID0gdW5zZXJpYWxpemUoJGMpOwoKICAgICAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJGMpICYmIGlzc2V0KCRjWyd2YWx1ZSddKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY1sndmFsdWUnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXQgaW4gY2FjaGUgdGhlIHJlc3VsdCBvZiAkb3BlcmF0aW9uIG9uICR3aGF0LAogICAgICogd2hpY2ggaXMga25vd24gYXMgZGVwZW5kYW50IGZyb20gdGhlIGNvbnRlbnQgb2YgJG9wdGlvbnMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRvcGVyYXRpb24KICAgICAqIEBwYXJhbSBtaXhlZCAgJHdoYXQKICAgICAqIEBwYXJhbSBtaXhlZCAgJHZhbHVlCiAgICAgKiBAcGFyYW0gYXJyYXkgICRvcHRpb25zCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDYWNoZSgkb3BlcmF0aW9uLCAkd2hhdCwgJHZhbHVlLCAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICRmaWxlQ2FjaGUgPSBzZWxmOjokY2FjaGVEaXIgLiBzZWxmOjpjYWNoZU5hbWUoJG9wZXJhdGlvbiwgJHdoYXQsICRvcHRpb25zKTsKCiAgICAgICAgJGMgPSBbJ3ZhbHVlJyA9PiAkdmFsdWVdOwogICAgICAgICRjID0gc2VyaWFsaXplKCRjKTsKCiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGVDYWNoZSwgJGMpOwoKICAgICAgICBpZiAoc2VsZjo6JGZvcmNlUmVmcmVzaCA9PT0gJ29uY2UnKSB7CiAgICAgICAgICAgIHNlbGY6OiRyZWZyZXNoZWRbJGZpbGVDYWNoZV0gPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY2FjaGUgbmFtZSBmb3IgdGhlIGNhY2hpbmcgb2YgJG9wZXJhdGlvbiBvbiAkd2hhdCwKICAgICAqIHdoaWNoIGlzIGtub3duIGFzIGRlcGVuZGFudCBmcm9tIHRoZSBjb250ZW50IG9mICRvcHRpb25zCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkb3BlcmF0aW9uCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR3aGF0CiAgICAgKiBAcGFyYW0gYXJyYXkgICRvcHRpb25zCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2FjaGVOYW1lKCRvcGVyYXRpb24sICR3aGF0LCAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICR0ID0gWwogICAgICAgICAgJ3ZlcnNpb24nID0+IHNlbGY6OkNBQ0hFX1ZFUlNJT04sCiAgICAgICAgICAnc2Nzc3BocFZlcnNpb24nID0+IFZlcnNpb246OlZFUlNJT04sCiAgICAgICAgICAnb3BlcmF0aW9uJyA9PiAkb3BlcmF0aW9uLAogICAgICAgICAgJ3doYXQnID0+ICR3aGF0LAogICAgICAgICAgJ29wdGlvbnMnID0+ICRvcHRpb25zCiAgICAgICAgXTsKCiAgICAgICAgJHQgPSBzZWxmOjokcHJlZml4CiAgICAgICAgICAuIHNoYTEoanNvbl9lbmNvZGUoJHQpKQogICAgICAgICAgLiAiLiRvcGVyYXRpb24iCiAgICAgICAgICAuICIuc2Nzc2NhY2hlIjsKCiAgICAgICAgcmV0dXJuICR0OwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgdGhhdCB0aGUgY2FjaGUgZGlyIGV4aXN0cyBhbmQgaXMgd3JpdGVhYmxlCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tDYWNoZURpcigpCiAgICB7CiAgICAgICAgc2VsZjo6JGNhY2hlRGlyID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBzZWxmOjokY2FjaGVEaXIpOwogICAgICAgIHNlbGY6OiRjYWNoZURpciA9IHJ0cmltKHNlbGY6OiRjYWNoZURpciwgJy8nKSAuICcvJzsKCiAgICAgICAgaWYgKCEgaXNfZGlyKHNlbGY6OiRjYWNoZURpcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQ2FjaGUgZGlyZWN0b3J5IGRvZXNuXCd0IGV4aXN0OiAnIC4gc2VsZjo6JGNhY2hlRGlyKTsKICAgICAgICB9CgogICAgICAgIGlmICghIGlzX3dyaXRhYmxlKHNlbGY6OiRjYWNoZURpcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQ2FjaGUgZGlyZWN0b3J5IGlzblwndCB3cml0YWJsZTogJyAuIHNlbGY6OiRjYWNoZURpcik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRGVsZXRlIHVudXNlZCBjYWNoZWQgZmlsZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjbGVhbkNhY2hlKCkKICAgIHsKICAgICAgICBzdGF0aWMgJGNsZWFuID0gZmFsc2U7CgogICAgICAgIGlmICgkY2xlYW4gfHwgZW1wdHkoc2VsZjo6JGNhY2hlRGlyKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkY2xlYW4gPSB0cnVlOwoKICAgICAgICAvLyBvbmx5IHJlbW92ZSBmaWxlcyB3aXRoIGV4dGVuc2lvbnMgY3JlYXRlZCBieSBTQ1NTUEhQIENhY2hlCiAgICAgICAgLy8gY3NzIGZpbGVzIHJlbW92ZWQgYmFzZWQgb24gdGhlIGxpc3QgZmlsZXMKICAgICAgICAkcmVtb3ZlVHlwZXMgPSBbJ3Njc3NjYWNoZScgPT4gMV07CgogICAgICAgICRmaWxlcyA9IHNjYW5kaXIoc2VsZjo6JGNhY2hlRGlyKTsKCiAgICAgICAgaWYgKCEgJGZpbGVzKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRjaGVja1RpbWUgPSB0aW1lKCkgLSBzZWxmOjokZ2NMaWZldGltZTsKCiAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSBpZiB0aGUgZmlsZSB3YXNuJ3QgY3JlYXRlZCB3aXRoIFNDU1NQSFAgQ2FjaGUKICAgICAgICAgICAgaWYgKHN0cnBvcygkZmlsZSwgc2VsZjo6JHByZWZpeCkgIT09IDApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcuJywgJGZpbGUpOwogICAgICAgICAgICAkdHlwZSA9IGFycmF5X3BvcCgkcGFydHMpOwoKICAgICAgICAgICAgaWYgKCEgaXNzZXQoJHJlbW92ZVR5cGVzWyR0eXBlXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZnVsbFBhdGggPSBzZWxmOjokY2FjaGVEaXIgLiAkZmlsZTsKICAgICAgICAgICAgJG10aW1lID0gZmlsZW10aW1lKCRmdWxsUGF0aCk7CgogICAgICAgICAgICAvLyBkb24ndCBkZWxldGUgaWYgaXQncyBhIHJlbGF0aXZlbHkgbmV3IGZpbGUKICAgICAgICAgICAgaWYgKCRtdGltZSA+ICRjaGVja1RpbWUpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1bmxpbmsoJGZ1bGxQYXRoKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Colors.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIENTUyBDb2xvcnMKICoKICogQGF1dGhvciBMZWFmIENvcmNvcmFuIDxsZWFmb3RAZ21haWwuY29tPgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIENvbG9ycwp7CiAgICAvKioKICAgICAqIENTUyBDb2xvcnMKICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29sb3IKICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgc3RyaW5nPgogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRjc3NDb2xvcnMgPSBbCiAgICAgICAgJ2FsaWNlYmx1ZScgPT4gJzI0MCwyNDgsMjU1JywKICAgICAgICAnYW50aXF1ZXdoaXRlJyA9PiAnMjUwLDIzNSwyMTUnLAogICAgICAgICdhcXVhJyA9PiAnMCwyNTUsMjU1JywKICAgICAgICAnY3lhbicgPT4gJzAsMjU1LDI1NScsCiAgICAgICAgJ2FxdWFtYXJpbmUnID0+ICcxMjcsMjU1LDIxMicsCiAgICAgICAgJ2F6dXJlJyA9PiAnMjQwLDI1NSwyNTUnLAogICAgICAgICdiZWlnZScgPT4gJzI0NSwyNDUsMjIwJywKICAgICAgICAnYmlzcXVlJyA9PiAnMjU1LDIyOCwxOTYnLAogICAgICAgICdibGFjaycgPT4gJzAsMCwwJywKICAgICAgICAnYmxhbmNoZWRhbG1vbmQnID0+ICcyNTUsMjM1LDIwNScsCiAgICAgICAgJ2JsdWUnID0+ICcwLDAsMjU1JywKICAgICAgICAnYmx1ZXZpb2xldCcgPT4gJzEzOCw0MywyMjYnLAogICAgICAgICdicm93bicgPT4gJzE2NSw0Miw0MicsCiAgICAgICAgJ2J1cmx5d29vZCcgPT4gJzIyMiwxODQsMTM1JywKICAgICAgICAnY2FkZXRibHVlJyA9PiAnOTUsMTU4LDE2MCcsCiAgICAgICAgJ2NoYXJ0cmV1c2UnID0+ICcxMjcsMjU1LDAnLAogICAgICAgICdjaG9jb2xhdGUnID0+ICcyMTAsMTA1LDMwJywKICAgICAgICAnY29yYWwnID0+ICcyNTUsMTI3LDgwJywKICAgICAgICAnY29ybmZsb3dlcmJsdWUnID0+ICcxMDAsMTQ5LDIzNycsCiAgICAgICAgJ2Nvcm5zaWxrJyA9PiAnMjU1LDI0OCwyMjAnLAogICAgICAgICdjcmltc29uJyA9PiAnMjIwLDIwLDYwJywKICAgICAgICAnZGFya2JsdWUnID0+ICcwLDAsMTM5JywKICAgICAgICAnZGFya2N5YW4nID0+ICcwLDEzOSwxMzknLAogICAgICAgICdkYXJrZ29sZGVucm9kJyA9PiAnMTg0LDEzNCwxMScsCiAgICAgICAgJ2RhcmtncmF5JyA9PiAnMTY5LDE2OSwxNjknLAogICAgICAgICdkYXJrZ3JleScgPT4gJzE2OSwxNjksMTY5JywKICAgICAgICAnZGFya2dyZWVuJyA9PiAnMCwxMDAsMCcsCiAgICAgICAgJ2RhcmtraGFraScgPT4gJzE4OSwxODMsMTA3JywKICAgICAgICAnZGFya21hZ2VudGEnID0+ICcxMzksMCwxMzknLAogICAgICAgICdkYXJrb2xpdmVncmVlbicgPT4gJzg1LDEwNyw0NycsCiAgICAgICAgJ2RhcmtvcmFuZ2UnID0+ICcyNTUsMTQwLDAnLAogICAgICAgICdkYXJrb3JjaGlkJyA9PiAnMTUzLDUwLDIwNCcsCiAgICAgICAgJ2RhcmtyZWQnID0+ICcxMzksMCwwJywKICAgICAgICAnZGFya3NhbG1vbicgPT4gJzIzMywxNTAsMTIyJywKICAgICAgICAnZGFya3NlYWdyZWVuJyA9PiAnMTQzLDE4OCwxNDMnLAogICAgICAgICdkYXJrc2xhdGVibHVlJyA9PiAnNzIsNjEsMTM5JywKICAgICAgICAnZGFya3NsYXRlZ3JheScgPT4gJzQ3LDc5LDc5JywKICAgICAgICAnZGFya3NsYXRlZ3JleScgPT4gJzQ3LDc5LDc5JywKICAgICAgICAnZGFya3R1cnF1b2lzZScgPT4gJzAsMjA2LDIwOScsCiAgICAgICAgJ2Rhcmt2aW9sZXQnID0+ICcxNDgsMCwyMTEnLAogICAgICAgICdkZWVwcGluaycgPT4gJzI1NSwyMCwxNDcnLAogICAgICAgICdkZWVwc2t5Ymx1ZScgPT4gJzAsMTkxLDI1NScsCiAgICAgICAgJ2RpbWdyYXknID0+ICcxMDUsMTA1LDEwNScsCiAgICAgICAgJ2RpbWdyZXknID0+ICcxMDUsMTA1LDEwNScsCiAgICAgICAgJ2RvZGdlcmJsdWUnID0+ICczMCwxNDQsMjU1JywKICAgICAgICAnZmlyZWJyaWNrJyA9PiAnMTc4LDM0LDM0JywKICAgICAgICAnZmxvcmFsd2hpdGUnID0+ICcyNTUsMjUwLDI0MCcsCiAgICAgICAgJ2ZvcmVzdGdyZWVuJyA9PiAnMzQsMTM5LDM0JywKICAgICAgICAnZnVjaHNpYScgPT4gJzI1NSwwLDI1NScsCiAgICAgICAgJ21hZ2VudGEnID0+ICcyNTUsMCwyNTUnLAogICAgICAgICdnYWluc2Jvcm8nID0+ICcyMjAsMjIwLDIyMCcsCiAgICAgICAgJ2dob3N0d2hpdGUnID0+ICcyNDgsMjQ4LDI1NScsCiAgICAgICAgJ2dvbGQnID0+ICcyNTUsMjE1LDAnLAogICAgICAgICdnb2xkZW5yb2QnID0+ICcyMTgsMTY1LDMyJywKICAgICAgICAnZ3JheScgPT4gJzEyOCwxMjgsMTI4JywKICAgICAgICAnZ3JleScgPT4gJzEyOCwxMjgsMTI4JywKICAgICAgICAnZ3JlZW4nID0+ICcwLDEyOCwwJywKICAgICAgICAnZ3JlZW55ZWxsb3cnID0+ICcxNzMsMjU1LDQ3JywKICAgICAgICAnaG9uZXlkZXcnID0+ICcyNDAsMjU1LDI0MCcsCiAgICAgICAgJ2hvdHBpbmsnID0+ICcyNTUsMTA1LDE4MCcsCiAgICAgICAgJ2luZGlhbnJlZCcgPT4gJzIwNSw5Miw5MicsCiAgICAgICAgJ2luZGlnbycgPT4gJzc1LDAsMTMwJywKICAgICAgICAnaXZvcnknID0+ICcyNTUsMjU1LDI0MCcsCiAgICAgICAgJ2toYWtpJyA9PiAnMjQwLDIzMCwxNDAnLAogICAgICAgICdsYXZlbmRlcicgPT4gJzIzMCwyMzAsMjUwJywKICAgICAgICAnbGF2ZW5kZXJibHVzaCcgPT4gJzI1NSwyNDAsMjQ1JywKICAgICAgICAnbGF3bmdyZWVuJyA9PiAnMTI0LDI1MiwwJywKICAgICAgICAnbGVtb25jaGlmZm9uJyA9PiAnMjU1LDI1MCwyMDUnLAogICAgICAgICdsaWdodGJsdWUnID0+ICcxNzMsMjE2LDIzMCcsCiAgICAgICAgJ2xpZ2h0Y29yYWwnID0+ICcyNDAsMTI4LDEyOCcsCiAgICAgICAgJ2xpZ2h0Y3lhbicgPT4gJzIyNCwyNTUsMjU1JywKICAgICAgICAnbGlnaHRnb2xkZW5yb2R5ZWxsb3cnID0+ICcyNTAsMjUwLDIxMCcsCiAgICAgICAgJ2xpZ2h0Z3JheScgPT4gJzIxMSwyMTEsMjExJywKICAgICAgICAnbGlnaHRncmV5JyA9PiAnMjExLDIxMSwyMTEnLAogICAgICAgICdsaWdodGdyZWVuJyA9PiAnMTQ0LDIzOCwxNDQnLAogICAgICAgICdsaWdodHBpbmsnID0+ICcyNTUsMTgyLDE5MycsCiAgICAgICAgJ2xpZ2h0c2FsbW9uJyA9PiAnMjU1LDE2MCwxMjInLAogICAgICAgICdsaWdodHNlYWdyZWVuJyA9PiAnMzIsMTc4LDE3MCcsCiAgICAgICAgJ2xpZ2h0c2t5Ymx1ZScgPT4gJzEzNSwyMDYsMjUwJywKICAgICAgICAnbGlnaHRzbGF0ZWdyYXknID0+ICcxMTksMTM2LDE1MycsCiAgICAgICAgJ2xpZ2h0c2xhdGVncmV5JyA9PiAnMTE5LDEzNiwxNTMnLAogICAgICAgICdsaWdodHN0ZWVsYmx1ZScgPT4gJzE3NiwxOTYsMjIyJywKICAgICAgICAnbGlnaHR5ZWxsb3cnID0+ICcyNTUsMjU1LDIyNCcsCiAgICAgICAgJ2xpbWUnID0+ICcwLDI1NSwwJywKICAgICAgICAnbGltZWdyZWVuJyA9PiAnNTAsMjA1LDUwJywKICAgICAgICAnbGluZW4nID0+ICcyNTAsMjQwLDIzMCcsCiAgICAgICAgJ21hcm9vbicgPT4gJzEyOCwwLDAnLAogICAgICAgICdtZWRpdW1hcXVhbWFyaW5lJyA9PiAnMTAyLDIwNSwxNzAnLAogICAgICAgICdtZWRpdW1ibHVlJyA9PiAnMCwwLDIwNScsCiAgICAgICAgJ21lZGl1bW9yY2hpZCcgPT4gJzE4Niw4NSwyMTEnLAogICAgICAgICdtZWRpdW1wdXJwbGUnID0+ICcxNDcsMTEyLDIxOScsCiAgICAgICAgJ21lZGl1bXNlYWdyZWVuJyA9PiAnNjAsMTc5LDExMycsCiAgICAgICAgJ21lZGl1bXNsYXRlYmx1ZScgPT4gJzEyMywxMDQsMjM4JywKICAgICAgICAnbWVkaXVtc3ByaW5nZ3JlZW4nID0+ICcwLDI1MCwxNTQnLAogICAgICAgICdtZWRpdW10dXJxdW9pc2UnID0+ICc3MiwyMDksMjA0JywKICAgICAgICAnbWVkaXVtdmlvbGV0cmVkJyA9PiAnMTk5LDIxLDEzMycsCiAgICAgICAgJ21pZG5pZ2h0Ymx1ZScgPT4gJzI1LDI1LDExMicsCiAgICAgICAgJ21pbnRjcmVhbScgPT4gJzI0NSwyNTUsMjUwJywKICAgICAgICAnbWlzdHlyb3NlJyA9PiAnMjU1LDIyOCwyMjUnLAogICAgICAgICdtb2NjYXNpbicgPT4gJzI1NSwyMjgsMTgxJywKICAgICAgICAnbmF2YWpvd2hpdGUnID0+ICcyNTUsMjIyLDE3MycsCiAgICAgICAgJ25hdnknID0+ICcwLDAsMTI4JywKICAgICAgICAnb2xkbGFjZScgPT4gJzI1MywyNDUsMjMwJywKICAgICAgICAnb2xpdmUnID0+ICcxMjgsMTI4LDAnLAogICAgICAgICdvbGl2ZWRyYWInID0+ICcxMDcsMTQyLDM1JywKICAgICAgICAnb3JhbmdlJyA9PiAnMjU1LDE2NSwwJywKICAgICAgICAnb3JhbmdlcmVkJyA9PiAnMjU1LDY5LDAnLAogICAgICAgICdvcmNoaWQnID0+ICcyMTgsMTEyLDIxNCcsCiAgICAgICAgJ3BhbGVnb2xkZW5yb2QnID0+ICcyMzgsMjMyLDE3MCcsCiAgICAgICAgJ3BhbGVncmVlbicgPT4gJzE1MiwyNTEsMTUyJywKICAgICAgICAncGFsZXR1cnF1b2lzZScgPT4gJzE3NSwyMzgsMjM4JywKICAgICAgICAncGFsZXZpb2xldHJlZCcgPT4gJzIxOSwxMTIsMTQ3JywKICAgICAgICAncGFwYXlhd2hpcCcgPT4gJzI1NSwyMzksMjEzJywKICAgICAgICAncGVhY2hwdWZmJyA9PiAnMjU1LDIxOCwxODUnLAogICAgICAgICdwZXJ1JyA9PiAnMjA1LDEzMyw2MycsCiAgICAgICAgJ3BpbmsnID0+ICcyNTUsMTkyLDIwMycsCiAgICAgICAgJ3BsdW0nID0+ICcyMjEsMTYwLDIyMScsCiAgICAgICAgJ3Bvd2RlcmJsdWUnID0+ICcxNzYsMjI0LDIzMCcsCiAgICAgICAgJ3B1cnBsZScgPT4gJzEyOCwwLDEyOCcsCiAgICAgICAgJ3JlZCcgPT4gJzI1NSwwLDAnLAogICAgICAgICdyb3N5YnJvd24nID0+ICcxODgsMTQzLDE0MycsCiAgICAgICAgJ3JveWFsYmx1ZScgPT4gJzY1LDEwNSwyMjUnLAogICAgICAgICdzYWRkbGVicm93bicgPT4gJzEzOSw2OSwxOScsCiAgICAgICAgJ3NhbG1vbicgPT4gJzI1MCwxMjgsMTE0JywKICAgICAgICAnc2FuZHlicm93bicgPT4gJzI0NCwxNjQsOTYnLAogICAgICAgICdzZWFncmVlbicgPT4gJzQ2LDEzOSw4NycsCiAgICAgICAgJ3NlYXNoZWxsJyA9PiAnMjU1LDI0NSwyMzgnLAogICAgICAgICdzaWVubmEnID0+ICcxNjAsODIsNDUnLAogICAgICAgICdzaWx2ZXInID0+ICcxOTIsMTkyLDE5MicsCiAgICAgICAgJ3NreWJsdWUnID0+ICcxMzUsMjA2LDIzNScsCiAgICAgICAgJ3NsYXRlYmx1ZScgPT4gJzEwNiw5MCwyMDUnLAogICAgICAgICdzbGF0ZWdyYXknID0+ICcxMTIsMTI4LDE0NCcsCiAgICAgICAgJ3NsYXRlZ3JleScgPT4gJzExMiwxMjgsMTQ0JywKICAgICAgICAnc25vdycgPT4gJzI1NSwyNTAsMjUwJywKICAgICAgICAnc3ByaW5nZ3JlZW4nID0+ICcwLDI1NSwxMjcnLAogICAgICAgICdzdGVlbGJsdWUnID0+ICc3MCwxMzAsMTgwJywKICAgICAgICAndGFuJyA9PiAnMjEwLDE4MCwxNDAnLAogICAgICAgICd0ZWFsJyA9PiAnMCwxMjgsMTI4JywKICAgICAgICAndGhpc3RsZScgPT4gJzIxNiwxOTEsMjE2JywKICAgICAgICAndG9tYXRvJyA9PiAnMjU1LDk5LDcxJywKICAgICAgICAndHVycXVvaXNlJyA9PiAnNjQsMjI0LDIwOCcsCiAgICAgICAgJ3Zpb2xldCcgPT4gJzIzOCwxMzAsMjM4JywKICAgICAgICAnd2hlYXQnID0+ICcyNDUsMjIyLDE3OScsCiAgICAgICAgJ3doaXRlJyA9PiAnMjU1LDI1NSwyNTUnLAogICAgICAgICd3aGl0ZXNtb2tlJyA9PiAnMjQ1LDI0NSwyNDUnLAogICAgICAgICd5ZWxsb3cnID0+ICcyNTUsMjU1LDAnLAogICAgICAgICd5ZWxsb3dncmVlbicgPT4gJzE1NCwyMDUsNTAnLAogICAgICAgICdyZWJlY2NhcHVycGxlJyA9PiAnMTAyLDUxLDE1MycsCiAgICAgICAgJ3RyYW5zcGFyZW50JyA9PiAnMCwwLDAsMCcsCiAgICBdOwoKICAgIC8qKgogICAgICogQ29udmVydCBuYW1lZCBjb2xvciBpbiBhIFtyLGcsYlssYV1dIGFycmF5CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY29sb3JOYW1lCiAgICAgKgogICAgICogQHJldHVybiBpbnRbXXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29sb3JOYW1lVG9SR0JhKCRjb2xvck5hbWUpCiAgICB7CiAgICAgICAgaWYgKFxpc19zdHJpbmcoJGNvbG9yTmFtZSkgJiYgaXNzZXQoc3RhdGljOjokY3NzQ29sb3JzWyRjb2xvck5hbWVdKSkgewogICAgICAgICAgICAkcmdiYSA9IGV4cGxvZGUoJywnLCBzdGF0aWM6OiRjc3NDb2xvcnNbJGNvbG9yTmFtZV0pOwoKICAgICAgICAgICAgLy8gb25seSBjYXNlIHdpdGggb3BhY2l0eSBpcyB0cmFuc3BhcmVudCwgd2l0aCBvcGFjaXR5PTAsIHNvIHdlIGNhbiBpbnR2YWwgb24gb3BhY2l0eSBhbHNvCiAgICAgICAgICAgICRyZ2JhID0gYXJyYXlfbWFwKCdpbnR2YWwnLCAkcmdiYSk7CgogICAgICAgICAgICByZXR1cm4gJHJnYmE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldmVyc2UgY29udmVyc2lvbiA6IGZyb20gUkdCQSB0byBhIGNvbG9yIG5hbWUgaWYgcG9zc2libGUKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICRyCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICRnCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICRiCiAgICAgKiBAcGFyYW0gaW50fGZsb2F0ICRhCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFJHQmFUb0NvbG9yTmFtZSgkciwgJGcsICRiLCAkYSA9IDEpCiAgICB7CiAgICAgICAgc3RhdGljICRyZXZlcnNlQ29sb3JUYWJsZSA9IG51bGw7CgogICAgICAgIGlmICghIGlzX251bWVyaWMoJHIpIHx8ICEgaXNfbnVtZXJpYygkZykgfHwgISBpc19udW1lcmljKCRiKSB8fCAhIGlzX251bWVyaWMoJGEpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhIDwgMSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfbnVsbCgkcmV2ZXJzZUNvbG9yVGFibGUpKSB7CiAgICAgICAgICAgICRyZXZlcnNlQ29sb3JUYWJsZSA9IFtdOwoKICAgICAgICAgICAgZm9yZWFjaCAoc3RhdGljOjokY3NzQ29sb3JzIGFzICRuYW1lID0+ICRyZ2Jfc3RyKSB7CiAgICAgICAgICAgICAgICAkcmdiX3N0ciA9IGV4cGxvZGUoJywnLCAkcmdiX3N0cik7CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIFxjb3VudCgkcmdiX3N0cikgPT0gMyAmJgogICAgICAgICAgICAgICAgICAgICEgaXNzZXQoJHJldmVyc2VDb2xvclRhYmxlW1xpbnR2YWwoJHJnYl9zdHJbMF0pXVtcaW50dmFsKCRyZ2Jfc3RyWzFdKV1bXGludHZhbCgkcmdiX3N0clsyXSldKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHJldmVyc2VDb2xvclRhYmxlW1xpbnR2YWwoJHJnYl9zdHJbMF0pXVtcaW50dmFsKCRyZ2Jfc3RyWzFdKV1bXGludHZhbCgkcmdiX3N0clsyXSldID0gJG5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkcmV2ZXJzZUNvbG9yVGFibGVbXGludHZhbCgkcildW1xpbnR2YWwoJGcpXVtcaW50dmFsKCRiKV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkcmV2ZXJzZUNvbG9yVGFibGVbXGludHZhbCgkcildW1xpbnR2YWwoJGcpXVtcaW50dmFsKCRiKV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/CompilationResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKY2xhc3MgQ29tcGlsYXRpb25SZXN1bHQKewogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRjc3M7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHNvdXJjZU1hcDsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSAkaW5jbHVkZWRGaWxlczsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNzcwogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRzb3VyY2VNYXAKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkaW5jbHVkZWRGaWxlcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNzcywgJHNvdXJjZU1hcCwgYXJyYXkgJGluY2x1ZGVkRmlsZXMpCiAgICB7CiAgICAgICAgJHRoaXMtPmNzcyA9ICRjc3M7CiAgICAgICAgJHRoaXMtPnNvdXJjZU1hcCA9ICRzb3VyY2VNYXA7CiAgICAgICAgJHRoaXMtPmluY2x1ZGVkRmlsZXMgPSAkaW5jbHVkZWRGaWxlczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDc3MoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y3NzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5jbHVkZWRGaWxlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pbmNsdWRlZEZpbGVzOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHNvdXJjZU1hcCBjb250ZW50LCBpZiBpdCB3YXMgZ2VuZXJhdGVkCiAgICAgKgogICAgICogQHJldHVybiBudWxsfHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U291cmNlTWFwKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZU1hcDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Compiler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCYXNlXFJhbmdlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXEF0Um9vdEJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXENhbGxhYmxlQmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQmxvY2tcRGlyZWN0aXZlQmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQmxvY2tcRWFjaEJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXEVsc2VCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xFbHNlaWZCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xGb3JCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xJZkJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXE1lZGlhQmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQmxvY2tcTmVzdGVkUHJvcGVydHlCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xXaGlsZUJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyXENhY2hlZFJlc3VsdDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cQ29tcGlsZXJFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc0V4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cU2Fzc1NjcmlwdEV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcQ29tcHJlc3NlZDsKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcRXhwYW5kZWQ7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxMb2dnZXJJbnRlcmZhY2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcTG9nZ2VyXFN0cmVhbUxvZ2dlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxOb2RlXE51bWJlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcU291cmNlTWFwR2VuZXJhdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWxcUGF0aDsKCi8qKgogKiBUaGUgc2NzcyBjb21waWxlciBhbmQgcGFyc2VyLgogKgogKiBDb252ZXJ0aW5nIFNDU1MgdG8gQ1NTIGlzIGEgdGhyZWUgc3RhZ2UgcHJvY2Vzcy4gVGhlIGluY29taW5nIGZpbGUgaXMgcGFyc2VkCiAqIGJ5IGBQYXJzZXJgIGludG8gYSBzeW50YXggdHJlZSwgdGhlbiBpdCBpcyBjb21waWxlZCBpbnRvIGFub3RoZXIgdHJlZQogKiByZXByZXNlbnRpbmcgdGhlIENTUyBzdHJ1Y3R1cmUgYnkgYENvbXBpbGVyYC4gVGhlIENTUyB0cmVlIGlzIGZlZCBpbnRvIGEKICogZm9ybWF0dGVyLCBsaWtlIGBGb3JtYXR0ZXJgIHdoaWNoIHRoZW4gb3V0cHV0cyBDU1MgYXMgYSBzdHJpbmcuCiAqCiAqIER1cmluZyB0aGUgZmlyc3QgY29tcGlsZSwgYWxsIHZhbHVlcyBhcmUgKnJlZHVjZWQqLCB3aGljaCBtZWFucyB0aGF0IHRoZWlyCiAqIHR5cGVzIGFyZSBicm91Z2h0IHRvIHRoZSBsb3dlc3QgZm9ybSBiZWZvcmUgYmVpbmcgZHVtcCBhcyBzdHJpbmdzLiBUaGlzCiAqIGhhbmRsZXMgbWF0aCBlcXVhdGlvbnMsIHZhcmlhYmxlIGRlcmVmZXJlbmNlcywgYW5kIHRoZSBsaWtlLgogKgogKiBUaGUgYGNvbXBpbGVgIGZ1bmN0aW9uIG9mIGBDb21waWxlcmAgaXMgdGhlIGVudHJ5IHBvaW50LgogKgogKiBJbiBzdW1tYXJ5OgogKgogKiBUaGUgYENvbXBpbGVyYCBjbGFzcyBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBwYXJzZXIsIGZlZWRzIGl0IFNDU1MgY29kZSwKICogdGhlbiB0cmFuc2Zvcm1zIHRoZSByZXN1bHRpbmcgdHJlZSB0byBhIENTUyB0cmVlLiBUaGlzIGNsYXNzIGFsc28gaG9sZHMgdGhlCiAqIGV2YWx1YXRpb24gY29udGV4dCwgc3VjaCBhcyBhbGwgYXZhaWxhYmxlIG1peGlucyBhbmQgdmFyaWFibGVzIGF0IGFueSBnaXZlbgogKiB0aW1lLgogKgogKiBUaGUgYFBhcnNlcmAgY2xhc3MgaXMgb25seSBjb25jZXJuZWQgd2l0aCBwYXJzaW5nIGl0cyBpbnB1dC4KICoKICogVGhlIGBGb3JtYXR0ZXJgIHRha2VzIGEgQ1NTIHRyZWUsIGFuZCBkdW1wcyBpdCB0byBhIGZvcm1hdHRlZCBzdHJpbmcsCiAqIGhhbmRsaW5nIHRoaW5ncyBsaWtlIGluZGVudGF0aW9uLgogKi8KCi8qKgogKiBTQ1NTIGNvbXBpbGVyCiAqCiAqIEBhdXRob3IgTGVhZiBDb3Jjb3JhbiA8bGVhZm90QGdtYWlsLmNvbT4KICoKICogQGZpbmFsIEV4dGVuZGluZyB0aGUgQ29tcGlsZXIgaXMgZGVwcmVjYXRlZAogKi8KY2xhc3MgQ29tcGlsZXIKewogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBjb25zdCBMSU5FX0NPTU1FTlRTID0gMTsKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqLwogICAgY29uc3QgREVCVUdfSU5GTyAgICA9IDI7CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBjb25zdCBXSVRIX1JVTEUgICAgID0gMTsKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqLwogICAgY29uc3QgV0lUSF9NRURJQSAgICA9IDI7CiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkCiAgICAgKi8KICAgIGNvbnN0IFdJVEhfU1VQUE9SVFMgPSA0OwogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBjb25zdCBXSVRIX0FMTCAgICAgID0gNzsKCiAgICBjb25zdCBTT1VSQ0VfTUFQX05PTkUgICA9IDA7CiAgICBjb25zdCBTT1VSQ0VfTUFQX0lOTElORSA9IDE7CiAgICBjb25zdCBTT1VSQ0VfTUFQX0ZJTEUgICA9IDI7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgc3RyaW5nPgogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRvcGVyYXRvck5hbWVzID0gWwogICAgICAgICcrJyAgID0+ICdhZGQnLAogICAgICAgICctJyAgID0+ICdzdWInLAogICAgICAgICcqJyAgID0+ICdtdWwnLAogICAgICAgICcvJyAgID0+ICdkaXYnLAogICAgICAgICclJyAgID0+ICdtb2QnLAoKICAgICAgICAnPT0nICA9PiAnZXEnLAogICAgICAgICchPScgID0+ICduZXEnLAogICAgICAgICc8JyAgID0+ICdsdCcsCiAgICAgICAgJz4nICAgPT4gJ2d0JywKCiAgICAgICAgJzw9JyAgPT4gJ2x0ZScsCiAgICAgICAgJz49JyAgPT4gJ2d0ZScsCiAgICBdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIHN0cmluZz4KICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkbmFtZXNwYWNlcyA9IFsKICAgICAgICAnc3BlY2lhbCcgID0+ICclJywKICAgICAgICAnbWl4aW4nICAgID0+ICdAJywKICAgICAgICAnZnVuY3Rpb24nID0+ICdeJywKICAgIF07CgogICAgcHVibGljIHN0YXRpYyAkdHJ1ZSAgICAgICAgID0gW1R5cGU6OlRfS0VZV09SRCwgJ3RydWUnXTsKICAgIHB1YmxpYyBzdGF0aWMgJGZhbHNlICAgICAgICA9IFtUeXBlOjpUX0tFWVdPUkQsICdmYWxzZSddOwogICAgLyoqIEBkZXByZWNhdGVkICovCiAgICBwdWJsaWMgc3RhdGljICROYU4gICAgICAgICAgPSBbVHlwZTo6VF9LRVlXT1JELCAnTmFOJ107CiAgICAvKiogQGRlcHJlY2F0ZWQgKi8KICAgIHB1YmxpYyBzdGF0aWMgJEluZmluaXR5ICAgICA9IFtUeXBlOjpUX0tFWVdPUkQsICdJbmZpbml0eSddOwogICAgcHVibGljIHN0YXRpYyAkbnVsbCAgICAgICAgID0gW1R5cGU6OlRfTlVMTF07CiAgICBwdWJsaWMgc3RhdGljICRudWxsU3RyaW5nICAgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbXV07CiAgICBwdWJsaWMgc3RhdGljICRkZWZhdWx0VmFsdWUgPSBbVHlwZTo6VF9LRVlXT1JELCAnJ107CiAgICBwdWJsaWMgc3RhdGljICRzZWxmU2VsZWN0b3IgPSBbVHlwZTo6VF9TRUxGXTsKICAgIHB1YmxpYyBzdGF0aWMgJGVtcHR5TGlzdCAgICA9IFtUeXBlOjpUX0xJU1QsICcnLCBbXV07CiAgICBwdWJsaWMgc3RhdGljICRlbXB0eU1hcCAgICAgPSBbVHlwZTo6VF9NQVAsIFtdLCBbXV07CiAgICBwdWJsaWMgc3RhdGljICRlbXB0eVN0cmluZyAgPSBbVHlwZTo6VF9TVFJJTkcsICciJywgW11dOwogICAgcHVibGljIHN0YXRpYyAkd2l0aCAgICAgICAgID0gW1R5cGU6OlRfS0VZV09SRCwgJ3dpdGgnXTsKICAgIHB1YmxpYyBzdGF0aWMgJHdpdGhvdXQgICAgICA9IFtUeXBlOjpUX0tFWVdPUkQsICd3aXRob3V0J107CiAgICBwcml2YXRlIHN0YXRpYyAkZW1wdHlBcmd1bWVudExpc3QgPSBbVHlwZTo6VF9MSVNULCAnJywgW10sIFtdXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8aW50LCBzdHJpbmd8Y2FsbGFibGU+CiAgICAgKi8KICAgIHByb3RlY3RlZCAkaW1wb3J0UGF0aHMgPSBbXTsKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIEJsb2NrPgogICAgICovCiAgICBwcm90ZWN0ZWQgJGltcG9ydENhY2hlID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ1tdCiAgICAgKi8KICAgIHByb3RlY3RlZCAkaW1wb3J0ZWRGaWxlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICogQHBocHN0YW4tdmFyIGFycmF5PHN0cmluZywgYXJyYXl7MDogY2FsbGFibGUsIDE6IHN0cmluZ1tdfG51bGx9PgogICAgICovCiAgICBwcm90ZWN0ZWQgJHVzZXJGdW5jdGlvbnMgPSBbXTsKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIG1peGVkPgogICAgICovCiAgICBwcm90ZWN0ZWQgJHJlZ2lzdGVyZWRWYXJzID0gW107CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBib29sPgogICAgICovCiAgICBwcm90ZWN0ZWQgJHJlZ2lzdGVyZWRGZWF0dXJlcyA9IFsKICAgICAgICAnZXh0ZW5kLXNlbGVjdG9yLXBzZXVkb2NsYXNzJyA9PiBmYWxzZSwKICAgICAgICAnYXQtZXJyb3InICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICd1bml0cy1sZXZlbC0zJyAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgJ2dsb2JhbC12YXJpYWJsZS1zaGFkb3dpbmcnICAgPT4gZmFsc2UsCiAgICBdOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgJGVuY29kaW5nID0gbnVsbDsKICAgIC8qKgogICAgICogQHZhciBudWxsCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBwcm90ZWN0ZWQgJGxpbmVOdW1iZXJTdHlsZSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIGludHxTb3VyY2VNYXBHZW5lcmF0b3IKICAgICAqIEBwaHBzdGFuLXZhciBzZWxmOjpTT1VSQ0VfTUFQXyp8U291cmNlTWFwR2VuZXJhdG9yCiAgICAgKi8KICAgIHByb3RlY3RlZCAkc291cmNlTWFwID0gc2VsZjo6U09VUkNFX01BUF9OT05FOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICogQHBocHN0YW4tdmFyIGFycmF5e3NvdXJjZVJvb3Q/OiBzdHJpbmcsIHNvdXJjZU1hcEZpbGVuYW1lPzogc3RyaW5nfG51bGwsIHNvdXJjZU1hcFVSTD86IHN0cmluZ3xudWxsLCBzb3VyY2VNYXBXcml0ZVRvPzogc3RyaW5nfG51bGwsIG91dHB1dFNvdXJjZUZpbGVzPzogYm9vbCwgc291cmNlTWFwUm9vdHBhdGg/OiBzdHJpbmcsIHNvdXJjZU1hcEJhc2VwYXRoPzogc3RyaW5nfQogICAgICovCiAgICBwcm90ZWN0ZWQgJHNvdXJjZU1hcE9wdGlvbnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRjaGFyc2V0ID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIEB2YXIgRm9ybWF0dGVyCiAgICAgKi8KICAgIHByb3RlY3RlZCAkZm9ybWF0dGVyOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqIEBwaHBzdGFuLXZhciBjbGFzcy1zdHJpbmc8Rm9ybWF0dGVyPgogICAgICovCiAgICBwcml2YXRlICRjb25maWd1cmVkRm9ybWF0dGVyID0gRXhwYW5kZWQ6OmNsYXNzOwoKICAgIC8qKgogICAgICogQHZhciBFbnZpcm9ubWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgJHJvb3RFbnY7CiAgICAvKioKICAgICAqIEB2YXIgT3V0cHV0QmxvY2t8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgJHJvb3RCbG9jazsKCiAgICAvKioKICAgICAqIEB2YXIgXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgJGVudjsKICAgIC8qKgogICAgICogQHZhciBPdXRwdXRCbG9ja3xudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCAkc2NvcGU7CiAgICAvKioKICAgICAqIEB2YXIgRW52aXJvbm1lbnR8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgJHN0b3JlRW52OwogICAgLyoqCiAgICAgKiBAdmFyIGJvb2x8bnVsbAogICAgICoKICAgICAqIEBkZXByZWNhdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY2hhcnNldFNlZW47CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8aW50LCBzdHJpbmd8bnVsbD4KICAgICAqLwogICAgcHJvdGVjdGVkICRzb3VyY2VOYW1lczsKCiAgICAvKioKICAgICAqIEB2YXIgQ2FjaGV8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgJGNhY2hlOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY2FjaGVDaGVja0ltcG9ydFJlc29sdXRpb25zID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcm90ZWN0ZWQgJGluZGVudExldmVsOwogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5W10KICAgICAqLwogICAgcHJvdGVjdGVkICRleHRlbmRzOwogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgaW50W10+CiAgICAgKi8KICAgIHByb3RlY3RlZCAkZXh0ZW5kc01hcDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBpbnQ+CiAgICAgKi8KICAgIHByb3RlY3RlZCAkcGFyc2VkRmlsZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgUGFyc2VyfG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRwYXJzZXI7CiAgICAvKioKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRzb3VyY2VJbmRleDsKICAgIC8qKgogICAgICogQHZhciBpbnR8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgJHNvdXJjZUxpbmU7CiAgICAvKioKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRzb3VyY2VDb2x1bW47CiAgICAvKioKICAgICAqIEB2YXIgYm9vbHxudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCAkc2hvdWxkRXZhbHVhdGU7CiAgICAvKioKICAgICAqIEB2YXIgbnVsbAogICAgICogQGRlcHJlY2F0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkICRpZ25vcmVFcnJvcnM7CiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgJGlnbm9yZUNhbGxTdGFja01lc3NhZ2UgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXlbXQogICAgICovCiAgICBwcm90ZWN0ZWQgJGNhbGxTdGFjayA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICogQHBocHN0YW4tdmFyIGxpc3Q8YXJyYXl7Y3VycmVudERpcjogc3RyaW5nfG51bGwsIHBhdGg6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZ30+CiAgICAgKi8KICAgIHByaXZhdGUgJHJlc29sdmVkSW1wb3J0cyA9IFtdOwoKICAgIC8qKgogICAgICogVGhlIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBmaWxlCiAgICAgKgogICAgICogQHZhciBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlICRjdXJyZW50RGlyZWN0b3J5OwoKICAgIC8qKgogICAgICogVGhlIGRpcmVjdG9yeSBvZiB0aGUgaW5wdXQgZmlsZQogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHJvb3REaXJlY3Rvcnk7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSAkbGVnYWN5Q3dkSW1wb3J0UGF0aCA9IHRydWU7CgogICAgLyoqCiAgICAgKiBAdmFyIExvZ2dlckludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRsb2dnZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgYm9vbD4KICAgICAqLwogICAgcHJpdmF0ZSAkd2FybmVkQ2hpbGRGdW5jdGlvbnMgPSBbXTsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fG51bGwgJGNhY2hlT3B0aW9ucwogICAgICogQHBocHN0YW4tcGFyYW0gYXJyYXl7Y2FjaGVEaXI/OiBzdHJpbmcsIHByZWZpeD86IHN0cmluZywgZm9yY2VSZWZyZXNoPzogc3RyaW5nLCBjaGVja0ltcG9ydFJlc29sdXRpb25zPzogYm9vbH18bnVsbCAkY2FjaGVPcHRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkY2FjaGVPcHRpb25zID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlTmFtZXMgPSBbXTsKCiAgICAgICAgaWYgKCRjYWNoZU9wdGlvbnMpIHsKICAgICAgICAgICAgJHRoaXMtPmNhY2hlID0gbmV3IENhY2hlKCRjYWNoZU9wdGlvbnMpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRjYWNoZU9wdGlvbnNbJ2NoZWNrSW1wb3J0UmVzb2x1dGlvbnMnXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jYWNoZUNoZWNrSW1wb3J0UmVzb2x1dGlvbnMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bG9nZ2VyID0gbmV3IFN0cmVhbUxvZ2dlcihmb3BlbigncGhwOi8vc3RkZXJyJywgJ3cnKSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgY29tcGlsZXIgb3B0aW9ucwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBtaXhlZD4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbXBpbGVPcHRpb25zKCkKICAgIHsKICAgICAgICAkb3B0aW9ucyA9IFsKICAgICAgICAgICAgJ2ltcG9ydFBhdGhzJyAgICAgICAgPT4gJHRoaXMtPmltcG9ydFBhdGhzLAogICAgICAgICAgICAncmVnaXN0ZXJlZFZhcnMnICAgICA9PiAkdGhpcy0+cmVnaXN0ZXJlZFZhcnMsCiAgICAgICAgICAgICdyZWdpc3RlcmVkRmVhdHVyZXMnID0+ICR0aGlzLT5yZWdpc3RlcmVkRmVhdHVyZXMsCiAgICAgICAgICAgICdlbmNvZGluZycgICAgICAgICAgID0+ICR0aGlzLT5lbmNvZGluZywKICAgICAgICAgICAgJ3NvdXJjZU1hcCcgICAgICAgICAgPT4gc2VyaWFsaXplKCR0aGlzLT5zb3VyY2VNYXApLAogICAgICAgICAgICAnc291cmNlTWFwT3B0aW9ucycgICA9PiAkdGhpcy0+c291cmNlTWFwT3B0aW9ucywKICAgICAgICAgICAgJ2Zvcm1hdHRlcicgICAgICAgICAgPT4gJHRoaXMtPmNvbmZpZ3VyZWRGb3JtYXR0ZXIsCiAgICAgICAgICAgICdsZWdhY3lJbXBvcnRQYXRoJyAgID0+ICR0aGlzLT5sZWdhY3lDd2RJbXBvcnRQYXRoLAogICAgICAgIF07CgogICAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIFNldHMgYW4gYWx0ZXJuYXRpdmUgbG9nZ2VyLgogICAgICoKICAgICAqIENoYW5naW5nIHRoZSBsb2dnZXIgaW4gdGhlIG1pZGRsZSBvZiB0aGUgY29tcGlsYXRpb24gaXMgbm90CiAgICAgKiBzdXBwb3J0ZWQgYW5kIHdpbGwgcmVzdWx0IGluIGFuIHVuZGVmaW5lZCBiZWhhdmlvci4KICAgICAqCiAgICAgKiBAcGFyYW0gTG9nZ2VySW50ZXJmYWNlICRsb2dnZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldExvZ2dlcihMb2dnZXJJbnRlcmZhY2UgJGxvZ2dlcikKICAgIHsKICAgICAgICAkdGhpcy0+bG9nZ2VyID0gJGxvZ2dlcjsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBhbiBhbHRlcm5hdGl2ZSBlcnJvciBvdXRwdXQgc3RyZWFtLCBmb3IgdGVzdGluZyBwdXJwb3NlIG9ubHkKICAgICAqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJGhhbmRsZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFVzZSB7QHNlZSBzZXRMb2dnZXJ9IGluc3RlYWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yT3VwdXQoJGhhbmRsZSkKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcignVGhlIG1ldGhvZCAic2V0RXJyb3JPdXB1dCIgaXMgZGVwcmVjYXRlZC4gVXNlICJzZXRMb2dnZXIiIGluc3RlYWQuJywgRV9VU0VSX0RFUFJFQ0FURUQpOwoKICAgICAgICAkdGhpcy0+bG9nZ2VyID0gbmV3IFN0cmVhbUxvZ2dlcigkaGFuZGxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgc2NzcwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkY29kZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NFeGNlcHRpb24gd2hlbiB0aGUgc291cmNlIGZhaWxzIHRvIGNvbXBpbGUKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BzZWUgY29tcGlsZVN0cmluZ30gaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGNvZGUsICRwYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCdUaGUgIiVzIiBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlICJjb21waWxlU3RyaW5nIiBpbnN0ZWFkLicsIF9fTUVUSE9EX18pLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+Y29tcGlsZVN0cmluZygkY29kZSwgJHBhdGgpOwoKICAgICAgICAkc291cmNlTWFwID0gJHJlc3VsdC0+Z2V0U291cmNlTWFwKCk7CgogICAgICAgIGlmICgkc291cmNlTWFwICE9PSBudWxsKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+c291cmNlTWFwIGluc3RhbmNlb2YgU291cmNlTWFwR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c291cmNlTWFwLT5zYXZlTWFwKCRzb3VyY2VNYXApOwogICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPnNvdXJjZU1hcCA9PT0gc2VsZjo6U09VUkNFX01BUF9GSUxFKSB7CiAgICAgICAgICAgICAgICAkc291cmNlTWFwR2VuZXJhdG9yID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcigkdGhpcy0+c291cmNlTWFwT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAkc291cmNlTWFwR2VuZXJhdG9yLT5zYXZlTWFwKCRzb3VyY2VNYXApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdC0+Z2V0Q3NzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIHNjc3MKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJHNvdXJjZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBDb21waWxhdGlvblJlc3VsdAogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc0V4Y2VwdGlvbiB3aGVuIHRoZSBzb3VyY2UgZmFpbHMgdG8gY29tcGlsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZVN0cmluZygkc291cmNlLCAkcGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jYWNoZSkgewogICAgICAgICAgICAkY2FjaGVLZXkgICAgICAgPSAoJHBhdGggPyAkcGF0aCA6ICcoc3RkaW4pJykgLiAnOicgLiBtZDUoJHNvdXJjZSk7CiAgICAgICAgICAgICRjb21waWxlT3B0aW9ucyA9ICR0aGlzLT5nZXRDb21waWxlT3B0aW9ucygpOwogICAgICAgICAgICAkY2FjaGVkUmVzdWx0ID0gJHRoaXMtPmNhY2hlLT5nZXRDYWNoZSgnY29tcGlsZScsICRjYWNoZUtleSwgJGNvbXBpbGVPcHRpb25zKTsKCiAgICAgICAgICAgIGlmICgkY2FjaGVkUmVzdWx0IGluc3RhbmNlb2YgQ2FjaGVkUmVzdWx0ICYmICR0aGlzLT5pc0ZyZXNoQ2FjaGVkUmVzdWx0KCRjYWNoZWRSZXN1bHQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGNhY2hlZFJlc3VsdC0+Z2V0UmVzdWx0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbmRlbnRMZXZlbCAgICA9IC0xOwogICAgICAgICR0aGlzLT5leHRlbmRzICAgICAgICA9IFtdOwogICAgICAgICR0aGlzLT5leHRlbmRzTWFwICAgICA9IFtdOwogICAgICAgICR0aGlzLT5zb3VyY2VJbmRleCAgICA9IG51bGw7CiAgICAgICAgJHRoaXMtPnNvdXJjZUxpbmUgICAgID0gbnVsbDsKICAgICAgICAkdGhpcy0+c291cmNlQ29sdW1uICAgPSBudWxsOwogICAgICAgICR0aGlzLT5lbnYgICAgICAgICAgICA9IG51bGw7CiAgICAgICAgJHRoaXMtPnNjb3BlICAgICAgICAgID0gbnVsbDsKICAgICAgICAkdGhpcy0+c3RvcmVFbnYgICAgICAgPSBudWxsOwogICAgICAgICR0aGlzLT5zaG91bGRFdmFsdWF0ZSA9IG51bGw7CiAgICAgICAgJHRoaXMtPmlnbm9yZUNhbGxTdGFja01lc3NhZ2UgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+cGFyc2VkRmlsZXMgPSBbXTsKICAgICAgICAkdGhpcy0+aW1wb3J0ZWRGaWxlcyA9IFtdOwogICAgICAgICR0aGlzLT5yZXNvbHZlZEltcG9ydHMgPSBbXTsKCiAgICAgICAgaWYgKCFcaXNfbnVsbCgkcGF0aCkgJiYgaXNfZmlsZSgkcGF0aCkpIHsKICAgICAgICAgICAgJHBhdGggPSByZWFscGF0aCgkcGF0aCkgPzogJHBhdGg7CiAgICAgICAgICAgICR0aGlzLT5jdXJyZW50RGlyZWN0b3J5ID0gZGlybmFtZSgkcGF0aCk7CiAgICAgICAgICAgICR0aGlzLT5yb290RGlyZWN0b3J5ID0gJHRoaXMtPmN1cnJlbnREaXJlY3Rvcnk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnREaXJlY3RvcnkgPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+cm9vdERpcmVjdG9yeSA9IGdldGN3ZCgpOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRoaXMtPnBhcnNlciA9ICR0aGlzLT5wYXJzZXJGYWN0b3J5KCRwYXRoKTsKICAgICAgICAgICAgJHRyZWUgICAgICAgICA9ICR0aGlzLT5wYXJzZXItPnBhcnNlKCRzb3VyY2UpOwogICAgICAgICAgICAkdGhpcy0+cGFyc2VyID0gbnVsbDsKCiAgICAgICAgICAgICR0aGlzLT5mb3JtYXR0ZXIgPSBuZXcgJHRoaXMtPmNvbmZpZ3VyZWRGb3JtYXR0ZXIoKTsKICAgICAgICAgICAgJHRoaXMtPnJvb3RCbG9jayA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5yb290RW52ICAgPSAkdGhpcy0+cHVzaEVudigkdHJlZSk7CgogICAgICAgICAgICAkd2FybkNhbGxiYWNrID0gZnVuY3Rpb24gKCRtZXNzYWdlLCAkZGVwcmVjYXRpb24pIHsKICAgICAgICAgICAgICAgICR0aGlzLT5sb2dnZXItPndhcm4oJG1lc3NhZ2UsICRkZXByZWNhdGlvbik7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgICRwcmV2aW91c1dhcm5DYWxsYmFjayA9IFdhcm46OnNldENhbGxiYWNrKCR3YXJuQ2FsbGJhY2spOwoKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICR0aGlzLT5pbmplY3RWYXJpYWJsZXMoJHRoaXMtPnJlZ2lzdGVyZWRWYXJzKTsKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlUm9vdCgkdHJlZSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+cG9wRW52KCk7CiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICBXYXJuOjpzZXRDYWxsYmFjaygkcHJldmlvdXNXYXJuQ2FsbGJhY2spOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc291cmNlTWFwR2VuZXJhdG9yID0gbnVsbDsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+c291cmNlTWFwKSB7CiAgICAgICAgICAgICAgICBpZiAoXGlzX29iamVjdCgkdGhpcy0+c291cmNlTWFwKSAmJiAkdGhpcy0+c291cmNlTWFwIGluc3RhbmNlb2YgU291cmNlTWFwR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgJHNvdXJjZU1hcEdlbmVyYXRvciA9ICR0aGlzLT5zb3VyY2VNYXA7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNvdXJjZU1hcCA9IHNlbGY6OlNPVVJDRV9NQVBfRklMRTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkdGhpcy0+c291cmNlTWFwICE9PSBzZWxmOjpTT1VSQ0VfTUFQX05PTkUpIHsKICAgICAgICAgICAgICAgICAgICAkc291cmNlTWFwR2VuZXJhdG9yID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcigkdGhpcy0+c291cmNlTWFwT3B0aW9ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXNzZXJ0KCR0aGlzLT5zY29wZSAhPT0gbnVsbCk7CgogICAgICAgICAgICAkb3V0ID0gJHRoaXMtPmZvcm1hdHRlci0+Zm9ybWF0KCR0aGlzLT5zY29wZSwgJHNvdXJjZU1hcEdlbmVyYXRvcik7CgogICAgICAgICAgICAkcHJlZml4ID0gJyc7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmNoYXJzZXQgJiYgc3RybGVuKCRvdXQpICE9PSBVdGlsOjptYlN0cmxlbigkb3V0KSkgewogICAgICAgICAgICAgICAgJHByZWZpeCA9ICdAY2hhcnNldCAiVVRGLTgiOycgLiAiXG4iOwogICAgICAgICAgICAgICAgJG91dCA9ICRwcmVmaXggLiAkb3V0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc291cmNlTWFwID0gbnVsbDsKCiAgICAgICAgICAgIGlmICghIGVtcHR5KCRvdXQpICYmICR0aGlzLT5zb3VyY2VNYXAgJiYgJHRoaXMtPnNvdXJjZU1hcCAhPT0gc2VsZjo6U09VUkNFX01BUF9OT05FKSB7CiAgICAgICAgICAgICAgICBhc3NlcnQoJHNvdXJjZU1hcEdlbmVyYXRvciAhPT0gbnVsbCk7CiAgICAgICAgICAgICAgICAkc291cmNlTWFwID0gJHNvdXJjZU1hcEdlbmVyYXRvci0+Z2VuZXJhdGVKc29uKCRwcmVmaXgpOwogICAgICAgICAgICAgICAgJHNvdXJjZU1hcFVybCA9IG51bGw7CgogICAgICAgICAgICAgICAgc3dpdGNoICgkdGhpcy0+c291cmNlTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmOjpTT1VSQ0VfTUFQX0lOTElORToKICAgICAgICAgICAgICAgICAgICAgICAgJHNvdXJjZU1hcFVybCA9IHNwcmludGYoJ2RhdGE6YXBwbGljYXRpb24vanNvbiwlcycsIFV0aWw6OmVuY29kZVVSSUNvbXBvbmVudCgkc291cmNlTWFwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGY6OlNPVVJDRV9NQVBfRklMRToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zb3VyY2VNYXBPcHRpb25zWydzb3VyY2VNYXBVUkwnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzb3VyY2VNYXBVcmwgPSAkdGhpcy0+c291cmNlTWFwT3B0aW9uc1snc291cmNlTWFwVVJMJ107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRzb3VyY2VNYXBVcmwgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0IC49IHNwcmludGYoJy8qIyBzb3VyY2VNYXBwaW5nVVJMPSVzICovJywgJHNvdXJjZU1hcFVybCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChTYXNzU2NyaXB0RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBDb21waWxlckV4Y2VwdGlvbigkdGhpcy0+YWRkTG9jYXRpb25Ub01lc3NhZ2UoJGUtPmdldE1lc3NhZ2UoKSksIDAsICRlKTsKICAgICAgICB9CgogICAgICAgICRpbmNsdWRlZEZpbGVzID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5yZXNvbHZlZEltcG9ydHMgYXMgJHJlc29sdmVkSW1wb3J0KSB7CiAgICAgICAgICAgICRpbmNsdWRlZEZpbGVzWyRyZXNvbHZlZEltcG9ydFsnZmlsZVBhdGgnXV0gPSAkcmVzb2x2ZWRJbXBvcnRbJ2ZpbGVQYXRoJ107CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gbmV3IENvbXBpbGF0aW9uUmVzdWx0KCRvdXQsICRzb3VyY2VNYXAsIGFycmF5X3ZhbHVlcygkaW5jbHVkZWRGaWxlcykpOwoKICAgICAgICBpZiAoJHRoaXMtPmNhY2hlICYmIGlzc2V0KCRjYWNoZUtleSkgJiYgaXNzZXQoJGNvbXBpbGVPcHRpb25zKSkgewogICAgICAgICAgICAkdGhpcy0+Y2FjaGUtPnNldENhY2hlKCdjb21waWxlJywgJGNhY2hlS2V5LCBuZXcgQ2FjaGVkUmVzdWx0KCRyZXN1bHQsICR0aGlzLT5wYXJzZWRGaWxlcywgJHRoaXMtPnJlc29sdmVkSW1wb3J0cyksICRjb21waWxlT3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZXNldCBzdGF0ZSB0byBmcmVlIG1lbW9yeQogICAgICAgIC8vIFRPRE8gaW4gMi4wLCByZXNldCBwYXJzZWRGaWxlcyBhcyB3ZWxsIHdoZW4gdGhlIGdldHRlciBpcyByZW1vdmVkLgogICAgICAgICR0aGlzLT5yZXNvbHZlZEltcG9ydHMgPSBbXTsKICAgICAgICAkdGhpcy0+aW1wb3J0ZWRGaWxlcyA9IFtdOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBDYWNoZWRSZXN1bHQgJHJlc3VsdAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzRnJlc2hDYWNoZWRSZXN1bHQoQ2FjaGVkUmVzdWx0ICRyZXN1bHQpCiAgICB7CiAgICAgICAgLy8gY2hlY2sgaWYgYW55IGRlcGVuZGVuY3kgZmlsZSBjaGFuZ2VkIHNpbmNlIHRoZSByZXN1bHQgd2FzIGNvbXBpbGVkCiAgICAgICAgZm9yZWFjaCAoJHJlc3VsdC0+Z2V0UGFyc2VkRmlsZXMoKSBhcyAkZmlsZSA9PiAkbXRpbWUpIHsKICAgICAgICAgICAgaWYgKCEgaXNfZmlsZSgkZmlsZSkgfHwgZmlsZW10aW1lKCRmaWxlKSAhPT0gJG10aW1lKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+Y2FjaGVDaGVja0ltcG9ydFJlc29sdXRpb25zKSB7CiAgICAgICAgICAgICRyZXNvbHZlZEltcG9ydHMgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRyZXN1bHQtPmdldFJlc29sdmVkSW1wb3J0cygpIGFzICRpbXBvcnQpIHsKICAgICAgICAgICAgICAgICRjdXJyZW50RGlyID0gJGltcG9ydFsnY3VycmVudERpciddOwogICAgICAgICAgICAgICAgJHBhdGggPSAkaW1wb3J0WydwYXRoJ107CiAgICAgICAgICAgICAgICAvLyBzdG9yZSB0aGUgY2hlY2sgYWNyb3NzIGFsbCB0aGUgcmVzdWx0cyBpbiBtZW1vcnkgdG8gYXZvaWQgbXVsdGlwbGUgZmluZEltcG9ydCgpIG9uIHRoZSBzYW1lIHBhdGgKICAgICAgICAgICAgICAgIC8vIHdpdGggc2FtZSBjb250ZXh0LgogICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBoYXBwZW5pbmcgaW4gYSBzYW1lIGhpdCB3aXRoIG11bHRpcGxlIGNvbXBpbGF0aW9ucyAoZXNwZWNpYWxseSB3aXRoIGJpZyBmcmFtZXdvcmtzKQogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRyZXNvbHZlZEltcG9ydHNbJGN1cnJlbnREaXJdWyRwYXRoXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcmVzb2x2ZWRJbXBvcnRzWyRjdXJyZW50RGlyXVskcGF0aF0gPSAkdGhpcy0+ZmluZEltcG9ydCgkcGF0aCwgJGN1cnJlbnREaXIpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkcmVzb2x2ZWRJbXBvcnRzWyRjdXJyZW50RGlyXVskcGF0aF0gIT09ICRpbXBvcnRbJ2ZpbGVQYXRoJ10pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogSW5zdGFudGlhdGUgcGFyc2VyCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBcU2Nzc1BocFxTY3NzUGhwXFBhcnNlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFyc2VyRmFjdG9yeSgkcGF0aCkKICAgIHsKICAgICAgICAvLyBodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9hdC1ydWxlcy9pbXBvcnQKICAgICAgICAvLyBDU1MgZmlsZXMgaW1wb3J0ZWQgYnkgU2FzcyBkb27igJl0IGFsbG93IGFueSBzcGVjaWFsIFNhc3MgZmVhdHVyZXMuCiAgICAgICAgLy8gSW4gb3JkZXIgdG8gbWFrZSBzdXJlIGF1dGhvcnMgZG9u4oCZdCBhY2NpZGVudGFsbHkgd3JpdGUgU2FzcyBpbiB0aGVpciBDU1MsCiAgICAgICAgLy8gYWxsIFNhc3MgZmVhdHVyZXMgdGhhdCBhcmVu4oCZdCBhbHNvIHZhbGlkIENTUyB3aWxsIHByb2R1Y2UgZXJyb3JzLgogICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIENTUyB3aWxsIGJlIHJlbmRlcmVkIGFzLWlzLiBJdCBjYW4gZXZlbiBiZSBleHRlbmRlZCEKICAgICAgICAkY3NzT25seSA9IGZhbHNlOwoKICAgICAgICBpZiAoJHBhdGggIT09IG51bGwgJiYgc3Vic3RyKCRwYXRoLCAtNCkgPT09ICcuY3NzJykgewogICAgICAgICAgICAkY3NzT25seSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VyID0gbmV3IFBhcnNlcigkcGF0aCwgXGNvdW50KCR0aGlzLT5zb3VyY2VOYW1lcyksICR0aGlzLT5lbmNvZGluZywgJHRoaXMtPmNhY2hlLCAkY3NzT25seSwgJHRoaXMtPmxvZ2dlcik7CgogICAgICAgICR0aGlzLT5zb3VyY2VOYW1lc1tdID0gJHBhdGg7CiAgICAgICAgJHRoaXMtPmFkZFBhcnNlZEZpbGUoJHBhdGgpOwoKICAgICAgICByZXR1cm4gJHBhcnNlcjsKICAgIH0KCiAgICAvKioKICAgICAqIElzIHNlbGYgZXh0ZW5kPwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdGFyZ2V0CiAgICAgKiBAcGFyYW0gYXJyYXkgJG9yaWdpbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNTZWxmRXh0ZW5kKCR0YXJnZXQsICRvcmlnaW4pCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJG9yaWdpbiBhcyAkc2VsKSB7CiAgICAgICAgICAgIGlmIChcaW5fYXJyYXkoJHRhcmdldCwgJHNlbCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIGV4dGVuZHMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gICAkdGFyZ2V0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAkb3JpZ2luCiAgICAgKiBAcGFyYW0gYXJyYXl8bnVsbCAkYmxvY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHB1c2hFeHRlbmRzKCR0YXJnZXQsICRvcmlnaW4sICRibG9jaykKICAgIHsKICAgICAgICAkaSA9IFxjb3VudCgkdGhpcy0+ZXh0ZW5kcyk7CiAgICAgICAgJHRoaXMtPmV4dGVuZHNbXSA9IFskdGFyZ2V0LCAkb3JpZ2luLCAkYmxvY2tdOwoKICAgICAgICBmb3JlYWNoICgkdGFyZ2V0IGFzICRwYXJ0KSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZXh0ZW5kc01hcFskcGFydF0pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXh0ZW5kc01hcFskcGFydF1bXSA9ICRpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmV4dGVuZHNNYXBbJHBhcnRdID0gWyRpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIE1ha2Ugb3V0cHV0IGJsb2NrCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgJHR5cGUKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxudWxsICRzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtYWtlT3V0cHV0QmxvY2soJHR5cGUsICRzZWxlY3RvcnMgPSBudWxsKQogICAgewogICAgICAgICRvdXQgPSBuZXcgT3V0cHV0QmxvY2soKTsKICAgICAgICAkb3V0LT50eXBlICAgICAgPSAkdHlwZTsKICAgICAgICAkb3V0LT5saW5lcyAgICAgPSBbXTsKICAgICAgICAkb3V0LT5jaGlsZHJlbiAgPSBbXTsKICAgICAgICAkb3V0LT5wYXJlbnQgICAgPSAkdGhpcy0+c2NvcGU7CiAgICAgICAgJG91dC0+c2VsZWN0b3JzID0gJHNlbGVjdG9yczsKICAgICAgICAkb3V0LT5kZXB0aCAgICAgPSAkdGhpcy0+ZW52LT5kZXB0aDsKCiAgICAgICAgaWYgKCR0aGlzLT5lbnYtPmJsb2NrIGluc3RhbmNlb2YgQmxvY2spIHsKICAgICAgICAgICAgJG91dC0+c291cmNlTmFtZSAgID0gJHRoaXMtPmVudi0+YmxvY2stPnNvdXJjZU5hbWU7CiAgICAgICAgICAgICRvdXQtPnNvdXJjZUxpbmUgICA9ICR0aGlzLT5lbnYtPmJsb2NrLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAkb3V0LT5zb3VyY2VDb2x1bW4gPSAkdGhpcy0+ZW52LT5ibG9jay0+c291cmNlQ29sdW1uOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRvdXQtPnNvdXJjZU5hbWUgPSBpc3NldCgkdGhpcy0+c291cmNlTmFtZXNbJHRoaXMtPnNvdXJjZUluZGV4XSkgPyAkdGhpcy0+c291cmNlTmFtZXNbJHRoaXMtPnNvdXJjZUluZGV4XSA6ICcoc3RkaW4pJzsKICAgICAgICAgICAgJG91dC0+c291cmNlTGluZSA9ICR0aGlzLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAkb3V0LT5zb3VyY2VDb2x1bW4gPSAkdGhpcy0+c291cmNlQ29sdW1uOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIHJvb3QKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCbG9jayAkcm9vdEJsb2NrCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlUm9vdChCbG9jayAkcm9vdEJsb2NrKQogICAgewogICAgICAgICR0aGlzLT5yb290QmxvY2sgPSAkdGhpcy0+c2NvcGUgPSAkdGhpcy0+bWFrZU91dHB1dEJsb2NrKFR5cGU6OlRfUk9PVCk7CgogICAgICAgICR0aGlzLT5jb21waWxlQ2hpbGRyZW5Ob1JldHVybigkcm9vdEJsb2NrLT5jaGlsZHJlbiwgJHRoaXMtPnNjb3BlKTsKICAgICAgICBhc3NlcnQoJHRoaXMtPnNjb3BlICE9PSBudWxsKTsKICAgICAgICAkdGhpcy0+ZmxhdHRlblNlbGVjdG9ycygkdGhpcy0+c2NvcGUpOwogICAgICAgICR0aGlzLT5taXNzaW5nU2VsZWN0b3JzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXBvcnQgbWlzc2luZyBzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1pc3NpbmdTZWxlY3RvcnMoKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5leHRlbmRzIGFzICRleHRlbmQpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRleHRlbmRbM10pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGlzdCgkdGFyZ2V0LCAkb3JpZ2luLCAkYmxvY2spID0gJGV4dGVuZDsKCiAgICAgICAgICAgIC8vIGlnbm9yZSBpZiAhb3B0aW9uYWwKICAgICAgICAgICAgaWYgKCRibG9ja1syXSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0YXJnZXQgPSBpbXBsb2RlKCcgJywgJHRhcmdldCk7CiAgICAgICAgICAgICRvcmlnaW4gPSAkdGhpcy0+Y29sbGFwc2VTZWxlY3RvcnMoJG9yaWdpbik7CgogICAgICAgICAgICAkdGhpcy0+c291cmNlTGluZSA9ICRibG9ja1tQYXJzZXI6OlNPVVJDRV9MSU5FXTsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCJcIiRvcmlnaW5cIiBmYWlsZWQgdG8gQGV4dGVuZCBcIiR0YXJnZXRcIi4gVGhlIHNlbGVjdG9yIFwiJHRhcmdldFwiIHdhcyBub3QgZm91bmQuIik7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRmxhdHRlbiBzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJGJsb2NrCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmVudEtleQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmxhdHRlblNlbGVjdG9ycyhPdXRwdXRCbG9jayAkYmxvY2ssICRwYXJlbnRLZXkgPSBudWxsKQogICAgewogICAgICAgIGlmICgkYmxvY2stPnNlbGVjdG9ycykgewogICAgICAgICAgICAkc2VsZWN0b3JzID0gW107CgogICAgICAgICAgICBmb3JlYWNoICgkYmxvY2stPnNlbGVjdG9ycyBhcyAkcykgewogICAgICAgICAgICAgICAgJHNlbGVjdG9yc1tdID0gJHM7CgogICAgICAgICAgICAgICAgaWYgKCEgXGlzX2FycmF5KCRzKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGNoZWNrIGV4dGVuZHMKICAgICAgICAgICAgICAgIGlmICghIGVtcHR5KCR0aGlzLT5leHRlbmRzTWFwKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaEV4dGVuZHMoJHMsICRzZWxlY3RvcnMpOwoKICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgZHVwbGljYXRlcwogICAgICAgICAgICAgICAgICAgIGFycmF5X3dhbGsoJHNlbGVjdG9ycywgZnVuY3Rpb24gKCYkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gc2VyaWFsaXplKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICRzZWxlY3RvcnMgPSBhcnJheV91bmlxdWUoJHNlbGVjdG9ycyk7CgogICAgICAgICAgICAgICAgICAgIGFycmF5X3dhbGsoJHNlbGVjdG9ycywgZnVuY3Rpb24gKCYkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gdW5zZXJpYWxpemUoJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGJsb2NrLT5zZWxlY3RvcnMgPSBbXTsKICAgICAgICAgICAgJHBsYWNlaG9sZGVyU2VsZWN0b3IgPSBmYWxzZTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmhhc1NlbGVjdG9yUGxhY2Vob2xkZXIoJHNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgICAgICRwbGFjZWhvbGRlclNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYmxvY2stPnNlbGVjdG9yc1tdID0gJHRoaXMtPmNvbXBpbGVTZWxlY3Rvcigkc2VsZWN0b3IpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHBsYWNlaG9sZGVyU2VsZWN0b3IgJiYgMCA9PT0gXGNvdW50KCRibG9jay0+c2VsZWN0b3JzKSAmJiBudWxsICE9PSAkcGFyZW50S2V5KSB7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGJsb2NrLT5wYXJlbnQgIT09IG51bGwpOwogICAgICAgICAgICAgICAgdW5zZXQoJGJsb2NrLT5wYXJlbnQtPmNoaWxkcmVuWyRwYXJlbnRLZXldKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRibG9jay0+Y2hpbGRyZW4gYXMgJGtleSA9PiAkY2hpbGQpIHsKICAgICAgICAgICAgJHRoaXMtPmZsYXR0ZW5TZWxlY3RvcnMoJGNoaWxkLCAka2V5KTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHbHVlIHBhcnRzIG9mIDpub3QoIG9yIDpudGgtY2hpbGQoIC4uLiB0aGF0IGFyZSBpbiBnZW5lcmFsIHNwbGl0IGluIHNlbGVjdG9ycyBwYXJ0cwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkcGFydHMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnbHVlRnVuY3Rpb25TZWxlY3RvcnMoJHBhcnRzKQogICAgewogICAgICAgICRuZXcgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJHBhcnQpKSB7CiAgICAgICAgICAgICAgICAkcGFydCA9ICR0aGlzLT5nbHVlRnVuY3Rpb25TZWxlY3RvcnMoJHBhcnQpOwogICAgICAgICAgICAgICAgJG5ld1tdID0gJHBhcnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBhIHNlbGVjdG9yIHBhcnQgZmluaXNoaW5nIHdpdGggYSApIGlzIHRoZSBsYXN0IHBhcnQgb2YgYSA6bm90KCBvciA6bnRoLWNoaWxkKAogICAgICAgICAgICAgICAgLy8gYW5kIG5lZWQgdG8gYmUgam9pbmVkIHRvIHRoaXMKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBcY291bnQoJG5ldykgJiYgXGlzX3N0cmluZygkbmV3W1xjb3VudCgkbmV3KSAtIDFdKSAmJgogICAgICAgICAgICAgICAgICAgIFxzdHJsZW4oJHBhcnQpICYmIHN1YnN0cigkcGFydCwgLTEpID09PSAnKScgJiYgc3RycG9zKCRwYXJ0LCAnKCcpID09PSBmYWxzZQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKFxjb3VudCgkbmV3KSA+IDEgJiYgc3Vic3RyKCRuZXdbXGNvdW50KCRuZXcpIC0gMV0sIC0xKSAhPT0gJygnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0ID0gYXJyYXlfcG9wKCRuZXcpIC4gJHBhcnQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRuZXdbXGNvdW50KCRuZXcpIC0gMV0gLj0gJHBhcnQ7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRuZXdbXSA9ICRwYXJ0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICAvKioKICAgICAqIE1hdGNoIGV4dGVuZHMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9yCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICogQHBhcmFtIGludCAgICRmcm9tCiAgICAgKiBAcGFyYW0gYm9vbCAgJGluaXRpYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1hdGNoRXh0ZW5kcygkc2VsZWN0b3IsICYkb3V0LCAkZnJvbSA9IDAsICRpbml0aWFsID0gdHJ1ZSkKICAgIHsKICAgICAgICBzdGF0aWMgJHBhcnRzUGlsZSA9IFtdOwogICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5nbHVlRnVuY3Rpb25TZWxlY3RvcnMoJHNlbGVjdG9yKTsKCiAgICAgICAgaWYgKFxjb3VudCgkc2VsZWN0b3IpID09IDEgJiYgXGluX2FycmF5KHJlc2V0KCRzZWxlY3RvciksICRwYXJ0c1BpbGUpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRvdXRSZWN1cnMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHNlbGVjdG9yIGFzICRpID0+ICRwYXJ0KSB7CiAgICAgICAgICAgIGlmICgkaSA8ICRmcm9tKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCB3ZSBhcmUgbm90IGJ1aWxkaW5nIGFuIGluZmluaXRlIGxvb3Agb2YgZXh0ZW5zaW9ucwogICAgICAgICAgICAvLyBpZiB0aGUgbmV3IHBhcnQgaXMganVzdCBpbmNsdWRpbmcgYSBwcmV2aW91cyBwYXJ0IGRvbid0IHRyeSB0byBleHRlbmQgYW55bW9yZQogICAgICAgICAgICBpZiAoXGNvdW50KCRwYXJ0KSA+IDEpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJ0c1BpbGUgYXMgJHByZXZpb3VzUGFydCkgewogICAgICAgICAgICAgICAgICAgIGlmICghIFxjb3VudChhcnJheV9kaWZmKCRwcmV2aW91c1BhcnQsICRwYXJ0KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXJ0c1BpbGVbXSA9ICRwYXJ0OwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaEV4dGVuZHNTaW5nbGUoJHBhcnQsICRvcmlnaW4sICRpbml0aWFsKSkgewogICAgICAgICAgICAgICAgJGFmdGVyICAgICAgID0gXGFycmF5X3NsaWNlKCRzZWxlY3RvciwgJGkgKyAxKTsKICAgICAgICAgICAgICAgICRiZWZvcmUgICAgICA9IFxhcnJheV9zbGljZSgkc2VsZWN0b3IsIDAsICRpKTsKICAgICAgICAgICAgICAgIGxpc3QoJGJlZm9yZSwgJG5vbkJyZWFrYWJsZUJlZm9yZSkgPSAkdGhpcy0+ZXh0cmFjdFJlbGF0aW9uc2hpcEZyb21GcmFnbWVudCgkYmVmb3JlKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkb3JpZ2luIGFzICRuZXcpIHsKICAgICAgICAgICAgICAgICAgICAkayA9IDA7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBzaGFyZWQgcGFydHMKICAgICAgICAgICAgICAgICAgICBpZiAoXGNvdW50KCRuZXcpID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJGsgPCAkaSAmJiBpc3NldCgkbmV3WyRrXSkgJiYgJHNlbGVjdG9yWyRrXSA9PT0gJG5ld1ska10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrKys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChcY291bnQoJG5vbkJyZWFrYWJsZUJlZm9yZSkgJiYgJGsgPT09IFxjb3VudCgkbmV3KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkay0tOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50ID0gW107CiAgICAgICAgICAgICAgICAgICAgJHRlbXBSZXBsYWNlbWVudCA9ICRrID4gMCA/IFxhcnJheV9zbGljZSgkbmV3LCAkaykgOiAkbmV3OwoKICAgICAgICAgICAgICAgICAgICBmb3IgKCRsID0gXGNvdW50KCR0ZW1wUmVwbGFjZW1lbnQpIC0gMTsgJGwgPj0gMDsgJGwtLSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc2xpY2UgPSBbXTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0ZW1wUmVwbGFjZW1lbnRbJGxdIGFzICRjaHVuaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgXGluX2FycmF5KCRjaHVuaywgJHNsaWNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzbGljZVtdID0gJGNodW5rOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRyZXBsYWNlbWVudCwgJHNsaWNlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghICR0aGlzLT5pc0ltbWVkaWF0ZVJlbGF0aW9uc2hpcENvbWJpbmF0b3IoZW5kKCRzbGljZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGFmdGVyQmVmb3JlID0gJGwgIT0gMCA/IFxhcnJheV9zbGljZSgkdGVtcFJlcGxhY2VtZW50LCAwLCAkbCkgOiBbXTsKCiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2Ugc2hhcmVkIGRpcmVjdCByZWxhdGlvbnNoaXBzLgogICAgICAgICAgICAgICAgICAgICRtZXJnZWRCZWZvcmUgPSAkdGhpcy0+bWVyZ2VEaXJlY3RSZWxhdGlvbnNoaXBzKCRhZnRlckJlZm9yZSwgJG5vbkJyZWFrYWJsZUJlZm9yZSk7CgogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICAgICAgICAgJGJlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1lcmdlZEJlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAkYWZ0ZXIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCA9PT0gJHNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnB1c2hPck1lcmdlRXh0ZW50ZWRTZWxlY3Rvcigkb3V0LCAkcmVzdWx0KTsKCiAgICAgICAgICAgICAgICAgICAgLy8gcmVjdXJzaXZlbHkgY2hlY2sgZm9yIG1vcmUgbWF0Y2hlcwogICAgICAgICAgICAgICAgICAgICRzdGFydFJlY3Vyc2VGcm9tID0gXGNvdW50KCRiZWZvcmUpICsgbWluKFxjb3VudCgkbm9uQnJlYWthYmxlQmVmb3JlKSwgXGNvdW50KCRtZXJnZWRCZWZvcmUpKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKFxjb3VudCgkb3JpZ2luKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoRXh0ZW5kcygkcmVzdWx0LCAkb3V0LCAkc3RhcnRSZWN1cnNlRnJvbSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaEV4dGVuZHMoJHJlc3VsdCwgJG91dFJlY3VycywgJHN0YXJ0UmVjdXJzZUZyb20sIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdG9yIHNlcXVlbmNlIG1lcmdpbmcKICAgICAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkYmVmb3JlKSAmJiBcY291bnQoJG5ldykgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwcmVTaGFyZWRQYXJ0cyA9ICRrID4gMCA/IFxhcnJheV9zbGljZSgkYmVmb3JlLCAwLCAkaykgOiBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBvc3RTaGFyZWRQYXJ0cyA9ICRrID4gMCA/IFxhcnJheV9zbGljZSgkYmVmb3JlLCAkaykgOiAkYmVmb3JlOwoKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCgkYmV0d2VlblNoYXJlZFBhcnRzLCAkbm9uQnJlYWthYmwyKSA9ICR0aGlzLT5leHRyYWN0UmVsYXRpb25zaGlwRnJvbUZyYWdtZW50KCRhZnRlckJlZm9yZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0MiA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByZVNoYXJlZFBhcnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJldHdlZW5TaGFyZWRQYXJ0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwb3N0U2hhcmVkUGFydHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9uQnJlYWthYmwyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vbkJyZWFrYWJsZUJlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXBsYWNlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZnRlcgogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnB1c2hPck1lcmdlRXh0ZW50ZWRTZWxlY3Rvcigkb3V0LCAkcmVzdWx0Mik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFycmF5X3BvcCgkcGFydHNQaWxlKTsKICAgICAgICB9CgogICAgICAgIHdoaWxlIChcY291bnQoJG91dFJlY3VycykpIHsKICAgICAgICAgICAgJHJlc3VsdCA9IGFycmF5X3NoaWZ0KCRvdXRSZWN1cnMpOwogICAgICAgICAgICAkdGhpcy0+cHVzaE9yTWVyZ2VFeHRlbnRlZFNlbGVjdG9yKCRvdXQsICRyZXN1bHQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFRlc3QgYSBwYXJ0IGZvciBiZWluZyBhIHBzZXVkbyBzZWxlY3RvcgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhcnQKICAgICAqIEBwYXJhbSBhcnJheSAgJG1hdGNoZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzUHNldWRvU2VsZWN0b3IoJHBhcnQsICYkbWF0Y2hlcykKICAgIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgIHN0cnBvcygkcGFydCwgJzonKSA9PT0gMCAmJgogICAgICAgICAgICBwcmVnX21hdGNoKCIsXjo6PyhbXHctXSspXCgoLispXCkkLCIsICRwYXJ0LCAkbWF0Y2hlcykKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIGV4dGVuZGVkIHNlbGVjdG9yIGV4Y2VwdCBpZgogICAgICogIC0gdGhpcyBpcyBhIHBzZXVkbyBzZWxlY3RvcgogICAgICogIC0gc2FtZSBhcyBwcmV2aW91cwogICAgICogIC0gaW4gYSB3aGl0ZSBsaXN0CiAgICAgKiBpbiB0aGlzIGNhc2Ugd2UgbWVyZ2UgdGhlIHBzZXVkbyBzZWxlY3RvciBjb250ZW50CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqIEBwYXJhbSBhcnJheSAkZXh0ZW5kZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHB1c2hPck1lcmdlRXh0ZW50ZWRTZWxlY3RvcigmJG91dCwgJGV4dGVuZGVkKQogICAgewogICAgICAgIGlmIChcY291bnQoJG91dCkgJiYgXGNvdW50KCRleHRlbmRlZCkgPT09IDEgJiYgXGNvdW50KHJlc2V0KCRleHRlbmRlZCkpID09PSAxKSB7CiAgICAgICAgICAgICRzaW5nbGUgPSByZXNldCgkZXh0ZW5kZWQpOwogICAgICAgICAgICAkcGFydCA9IHJlc2V0KCRzaW5nbGUpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmlzUHNldWRvU2VsZWN0b3IoJHBhcnQsICRtYXRjaGVzRXh0ZW5kZWQpICYmCiAgICAgICAgICAgICAgICBcaW5fYXJyYXkoJG1hdGNoZXNFeHRlbmRlZFsxXSwgWyAnc2xvdHRlZCcgXSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcHJldiA9IGVuZCgkb3V0KTsKICAgICAgICAgICAgICAgICRwcmV2ID0gJHRoaXMtPmdsdWVGdW5jdGlvblNlbGVjdG9ycygkcHJldik7CgogICAgICAgICAgICAgICAgaWYgKFxjb3VudCgkcHJldikgPT09IDEgJiYgXGNvdW50KHJlc2V0KCRwcmV2KSkgPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAkc2luZ2xlID0gcmVzZXQoJHByZXYpOwogICAgICAgICAgICAgICAgICAgICRwYXJ0ID0gcmVzZXQoJHNpbmdsZSk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmlzUHNldWRvU2VsZWN0b3IoJHBhcnQsICRtYXRjaGVzUHJldikgJiYKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoZXNQcmV2WzFdID09PSAkbWF0Y2hlc0V4dGVuZGVkWzFdCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRleHRlbmRlZCA9IGV4cGxvZGUoJG1hdGNoZXNFeHRlbmRlZFsxXSAuICcoJywgJG1hdGNoZXNFeHRlbmRlZFswXSwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICRleHRlbmRlZFsxXSA9ICRtYXRjaGVzUHJldlsyXSAuICcsICcgLiAkZXh0ZW5kZWRbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICRleHRlbmRlZCA9IGltcGxvZGUoJG1hdGNoZXNFeHRlbmRlZFsxXSAuICcoJywgJGV4dGVuZGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGV4dGVuZGVkID0gWyBbICRleHRlbmRlZCBdXTsKICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRvdXQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkb3V0W10gPSAkZXh0ZW5kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYXRjaCBleHRlbmRzIHNpbmdsZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkcmF3U2luZ2xlCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dE9yaWdpbgogICAgICogQHBhcmFtIGJvb2wgICRpbml0aWFsCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtYXRjaEV4dGVuZHNTaW5nbGUoJHJhd1NpbmdsZSwgJiRvdXRPcmlnaW4sICRpbml0aWFsID0gdHJ1ZSkKICAgIHsKICAgICAgICAkY291bnRzID0gW107CiAgICAgICAgJHNpbmdsZSA9IFtdOwoKICAgICAgICAvLyBzaW1wbGUgdXN1YWwgY2FzZXMsIG5vIG5lZWQgdG8gZG8gdGhlIHdob2xlIHRyaWNrCiAgICAgICAgaWYgKFxpbl9hcnJheSgkcmF3U2luZ2xlLCBbWyc+J10sWycrJ10sWyd+J11dKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkcmF3U2luZ2xlIGFzICRwYXJ0KSB7CiAgICAgICAgICAgIC8vIG1hdGNoZXMgTnVtYmVyCiAgICAgICAgICAgIGlmICghIFxpc19zdHJpbmcoJHBhcnQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghIHByZWdfbWF0Y2goJy9eW1xbLjojJV0vJywgJHBhcnQpICYmIFxjb3VudCgkc2luZ2xlKSkgewogICAgICAgICAgICAgICAgJHNpbmdsZVtcY291bnQoJHNpbmdsZSkgLSAxXSAuPSAkcGFydDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzaW5nbGVbXSA9ICRwYXJ0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkZXh0ZW5kaW5nRGVjb3JhdGVkVGFnID0gZmFsc2U7CgogICAgICAgIGlmIChcY291bnQoJHNpbmdsZSkgPiAxKSB7CiAgICAgICAgICAgICRtYXRjaGVzID0gbnVsbDsKICAgICAgICAgICAgJGV4dGVuZGluZ0RlY29yYXRlZFRhZyA9IHByZWdfbWF0Y2goJy9eW2EtejAtOV0rJC9pJywgJHNpbmdsZVswXSwgJG1hdGNoZXMpID8gJG1hdGNoZXNbMF0gOiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRvdXRPcmlnaW4gPSBbXTsKICAgICAgICAkZm91bmQgPSBmYWxzZTsKCiAgICAgICAgZm9yZWFjaCAoJHNpbmdsZSBhcyAkayA9PiAkcGFydCkgewogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmV4dGVuZHNNYXBbJHBhcnRdKSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmV4dGVuZHNNYXBbJHBhcnRdIGFzICRpZHgpIHsKICAgICAgICAgICAgICAgICAgICAkY291bnRzWyRpZHhdID0gaXNzZXQoJGNvdW50c1skaWR4XSkgPyAkY291bnRzWyRpZHhdICsgMSA6IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRpbml0aWFsICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+aXNQc2V1ZG9TZWxlY3RvcigkcGFydCwgJG1hdGNoZXMpICYmCiAgICAgICAgICAgICAgICAhIFxpbl9hcnJheSgkbWF0Y2hlc1sxXSwgWyAnbm90JyBdKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRidWZmZXIgICAgPSAkbWF0Y2hlc1syXTsKICAgICAgICAgICAgICAgICRwYXJzZXIgICAgPSAkdGhpcy0+cGFyc2VyRmFjdG9yeShfX01FVEhPRF9fKTsKCiAgICAgICAgICAgICAgICBpZiAoJHBhcnNlci0+cGFyc2VTZWxlY3RvcigkYnVmZmVyLCAkc3ViU2VsZWN0b3JzLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3ViU2VsZWN0b3JzIGFzICRrc3ViID0+ICRzdWJTZWxlY3RvcikgewogICAgICAgICAgICAgICAgICAgICAgICAkc3ViRXh0ZW5kZWQgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoRXh0ZW5kcygkc3ViU2VsZWN0b3IsICRzdWJFeHRlbmRlZCwgMCwgZmFsc2UpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdWJFeHRlbmRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN1YlNlbGVjdG9yc0V4dGVuZGVkID0gJHN1YlNlbGVjdG9yczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdWJTZWxlY3RvcnNFeHRlbmRlZFska3N1Yl0gPSAkc3ViRXh0ZW5kZWQ7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHN1YlNlbGVjdG9yc0V4dGVuZGVkIGFzICRrc3NlID0+ICRzc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3ViU2VsZWN0b3JzRXh0ZW5kZWRbJGtzc2VdID0gJHRoaXMtPmNvbGxhcHNlU2VsZWN0b3JzKCRzc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdWJTZWxlY3RvcnNFeHRlbmRlZCA9IGltcGxvZGUoJywgJywgJHN1YlNlbGVjdG9yc0V4dGVuZGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaW5nbGVFeHRlbmRlZCA9ICRzaW5nbGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2luZ2xlRXh0ZW5kZWRbJGtdID0gc3RyX3JlcGxhY2UoJygnIC4gJGJ1ZmZlciAuICcpJywgIigkc3ViU2VsZWN0b3JzRXh0ZW5kZWQpIiwgJHBhcnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dE9yaWdpbltdID0gWyAkc2luZ2xlRXh0ZW5kZWQgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRjb3VudHMgYXMgJGlkeCA9PiAkY291bnQpIHsKICAgICAgICAgICAgbGlzdCgkdGFyZ2V0LCAkb3JpZ2luLCAvKiAkYmxvY2sgKi8pID0gJHRoaXMtPmV4dGVuZHNbJGlkeF07CgogICAgICAgICAgICAkb3JpZ2luID0gJHRoaXMtPmdsdWVGdW5jdGlvblNlbGVjdG9ycygkb3JpZ2luKTsKCiAgICAgICAgICAgIC8vIGNoZWNrIGNvdW50CiAgICAgICAgICAgIGlmICgkY291bnQgIT09IFxjb3VudCgkdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5leHRlbmRzWyRpZHhdWzNdID0gdHJ1ZTsKCiAgICAgICAgICAgICRyZW0gPSBhcnJheV9kaWZmKCRzaW5nbGUsICR0YXJnZXQpOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG9yaWdpbiBhcyAkaiA9PiAkbmV3KSB7CiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGluZmluaXRlIGxvb3Agd2hlbiB0YXJnZXQgZXh0ZW5kcyBpdHNlbGYKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+aXNTZWxmRXh0ZW5kKCRzaW5nbGUsICRvcmlnaW4pICYmICEgJGluaXRpYWwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50ID0gZW5kKCRuZXcpOwoKICAgICAgICAgICAgICAgIC8vIEV4dGVuZGluZyBhIGRlY29yYXRlZCB0YWcgd2l0aCBhbm90aGVyIHRhZyBpcyBub3QgcG9zc2libGUuCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJGV4dGVuZGluZ0RlY29yYXRlZFRhZyAmJiAkcmVwbGFjZW1lbnRbMF0gIT0gJGV4dGVuZGluZ0RlY29yYXRlZFRhZyAmJgogICAgICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goJy9eW2EtejAtOV0rJC9pJywgJHJlcGxhY2VtZW50WzBdKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJG9yaWdpblskal0pOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjb21iaW5lZCA9ICR0aGlzLT5jb21iaW5lU2VsZWN0b3JTaW5nbGUoJHJlcGxhY2VtZW50LCAkcmVtKTsKCiAgICAgICAgICAgICAgICBpZiAoXGNvdW50KGFycmF5X2RpZmYoJGNvbWJpbmVkLCAkb3JpZ2luWyRqXVtcY291bnQoJG9yaWdpblskal0pIC0gMV0pKSkgewogICAgICAgICAgICAgICAgICAgICRvcmlnaW5bJGpdW1xjb3VudCgkb3JpZ2luWyRqXSkgLSAxXSA9ICRjb21iaW5lZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dE9yaWdpbiA9IGFycmF5X21lcmdlKCRvdXRPcmlnaW4sICRvcmlnaW4pOwoKICAgICAgICAgICAgJGZvdW5kID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHRyYWN0IGEgcmVsYXRpb25zaGlwIGZyb20gdGhlIGZyYWdtZW50LgogICAgICoKICAgICAqIFdoZW4gZXh0cmFjdGluZyB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgc2VsZWN0b3Igd2Ugd2lsbCBiZSBsZWZ0IHdpdGggYQogICAgICogZnJhZ21lbnQgd2hpY2ggbWF5IGVuZCB3aXRoIGEgZGlyZWN0aW9uIHJlbGF0aW9uc2hpcCBjb21iaW5hdG9yLiBUaGlzCiAgICAgKiBtZXRob2Qgd2lsbCBleHRyYWN0IHRoZSByZWxhdGlvbnNoaXAgZnJhZ21lbnQgYW5kIHJldHVybiBpdCBhbG9uZyBzaWRlCiAgICAgKiB0aGUgcmVzdC4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGZyYWdtZW50IFRoZSBzZWxlY3RvciBmcmFnbWVudCBtYXliZSBlbmRpbmcgd2l0aCBhIGRpcmVjdGlvbiByZWxhdGlvbnNoaXAgY29tYmluYXRvci4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IFRoZSBzZWxlY3RvciB3aXRob3V0IHRoZSByZWxhdGlvbnNoaXAgZnJhZ21lbnQgaWYgYW55LCB0aGUgcmVsYXRpb25zaGlwIGZyYWdtZW50LgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXh0cmFjdFJlbGF0aW9uc2hpcEZyb21GcmFnbWVudChhcnJheSAkZnJhZ21lbnQpCiAgICB7CiAgICAgICAgJHBhcmVudHMgPSBbXTsKICAgICAgICAkY2hpbGRyZW4gPSBbXTsKCiAgICAgICAgJGogPSAkaSA9IFxjb3VudCgkZnJhZ21lbnQpOwoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICRjaGlsZHJlbiA9ICRqICE9ICRpID8gXGFycmF5X3NsaWNlKCRmcmFnbWVudCwgJGosICRpIC0gJGopIDogW107CiAgICAgICAgICAgICRwYXJlbnRzICA9IFxhcnJheV9zbGljZSgkZnJhZ21lbnQsIDAsICRqKTsKICAgICAgICAgICAgJHNsaWNlICAgID0gZW5kKCRwYXJlbnRzKTsKCiAgICAgICAgICAgIGlmIChlbXB0eSgkc2xpY2UpIHx8ICEgJHRoaXMtPmlzSW1tZWRpYXRlUmVsYXRpb25zaGlwQ29tYmluYXRvcigkc2xpY2VbMF0pKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGogLT0gMjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHBhcmVudHMsICRjaGlsZHJlbl07CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21iaW5lIHNlbGVjdG9yIHNpbmdsZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkYmFzZQogICAgICogQHBhcmFtIGFycmF5ICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbWJpbmVTZWxlY3RvclNpbmdsZSgkYmFzZSwgJG90aGVyKQogICAgewogICAgICAgICR0YWcgICAgPSBbXTsKICAgICAgICAkb3V0ICAgID0gW107CiAgICAgICAgJHdhc1RhZyA9IGZhbHNlOwogICAgICAgICRwc2V1ZG8gPSBbXTsKCiAgICAgICAgd2hpbGUgKFxjb3VudCgkb3RoZXIpICYmIHN0cnBvcyhlbmQoJG90aGVyKSwgJzonKSA9PT0gMCkgewogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwc2V1ZG8sIGFycmF5X3BvcCgkb3RoZXIpKTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKFthcnJheV9yZXZlcnNlKCRiYXNlKSwgYXJyYXlfcmV2ZXJzZSgkb3RoZXIpXSBhcyAkc2luZ2xlKSB7CiAgICAgICAgICAgICRyYW5nID0gY291bnQoJHNpbmdsZSk7CgogICAgICAgICAgICBmb3JlYWNoICgkc2luZ2xlIGFzICRwYXJ0KSB7CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15bXFs6XS8nLCAkcGFydCkpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAkcGFydDsKICAgICAgICAgICAgICAgICAgICAkd2FzVGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL15bXC4jXS8nLCAkcGFydCkpIHsKICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRvdXQsICRwYXJ0KTsKICAgICAgICAgICAgICAgICAgICAkd2FzVGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL15bXl8tXS8nLCAkcGFydCkgJiYgJHJhbmcgPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAkdGFnW10gPSAkcGFydDsKICAgICAgICAgICAgICAgICAgICAkd2FzVGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkd2FzVGFnKSB7CiAgICAgICAgICAgICAgICAgICAgJHRhZ1tcY291bnQoJHRhZykgLSAxXSAuPSAkcGFydDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkb3V0LCAkcGFydCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmFuZy0tOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCR0YWcpKSB7CiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJG91dCwgJHRhZ1swXSk7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoXGNvdW50KCRwc2V1ZG8pKSB7CiAgICAgICAgICAgICRvdXRbXSA9IGFycmF5X3NoaWZ0KCRwc2V1ZG8pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIG1lZGlhCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sgJG1lZGlhCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlTWVkaWEoQmxvY2sgJG1lZGlhKQogICAgewogICAgICAgIGFzc2VydCgkbWVkaWEgaW5zdGFuY2VvZiBNZWRpYUJsb2NrKTsKICAgICAgICAkdGhpcy0+cHVzaEVudigkbWVkaWEpOwoKICAgICAgICAkbWVkaWFRdWVyaWVzID0gJHRoaXMtPmNvbXBpbGVNZWRpYVF1ZXJ5KCR0aGlzLT5tdWx0aXBseU1lZGlhKCR0aGlzLT5lbnYpKTsKCiAgICAgICAgaWYgKCEgZW1wdHkoJG1lZGlhUXVlcmllcykpIHsKICAgICAgICAgICAgYXNzZXJ0KCR0aGlzLT5zY29wZSAhPT0gbnVsbCk7CiAgICAgICAgICAgICRwcmV2aW91c1Njb3BlID0gJHRoaXMtPnNjb3BlOwogICAgICAgICAgICAkcGFyZW50U2NvcGUgPSAkdGhpcy0+bWVkaWFQYXJlbnQoJHRoaXMtPnNjb3BlKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRtZWRpYVF1ZXJpZXMgYXMgJG1lZGlhUXVlcnkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zY29wZSA9ICR0aGlzLT5tYWtlT3V0cHV0QmxvY2soVHlwZTo6VF9NRURJQSwgWyRtZWRpYVF1ZXJ5XSk7CgogICAgICAgICAgICAgICAgJHBhcmVudFNjb3BlLT5jaGlsZHJlbltdID0gJHRoaXMtPnNjb3BlOwogICAgICAgICAgICAgICAgJHBhcmVudFNjb3BlID0gJHRoaXMtPnNjb3BlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyB0b3AgbGV2ZWwgcHJvcGVydGllcyBpbiBhIG1lZGlhIGNhdXNlIGl0IHRvIGJlIHdyYXBwZWQKICAgICAgICAgICAgJG5lZWRzV3JhcCA9IGZhbHNlOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG1lZGlhLT5jaGlsZHJlbiBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJGNoaWxkWzBdOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkdHlwZSAhPT0gVHlwZTo6VF9CTE9DSyAmJgogICAgICAgICAgICAgICAgICAgICR0eXBlICE9PSBUeXBlOjpUX01FRElBICYmCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgIT09IFR5cGU6OlRfRElSRUNUSVZFICYmCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgIT09IFR5cGU6OlRfSU1QT1JUCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkbmVlZHNXcmFwID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZWVkc1dyYXApIHsKICAgICAgICAgICAgICAgICR3cmFwcGVkID0gbmV3IEJsb2NrKCk7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlTmFtZSAgID0gJG1lZGlhLT5zb3VyY2VOYW1lOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUluZGV4ICA9ICRtZWRpYS0+c291cmNlSW5kZXg7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlTGluZSAgID0gJG1lZGlhLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUNvbHVtbiA9ICRtZWRpYS0+c291cmNlQ29sdW1uOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNlbGVjdG9ycyAgICA9IFtdOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPmNvbW1lbnRzICAgICA9IFtdOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnBhcmVudCAgICAgICA9ICRtZWRpYTsKICAgICAgICAgICAgICAgICR3cmFwcGVkLT5jaGlsZHJlbiAgICAgPSAkbWVkaWEtPmNoaWxkcmVuOwoKICAgICAgICAgICAgICAgICRtZWRpYS0+Y2hpbGRyZW4gPSBbW1R5cGU6OlRfQkxPQ0ssICR3cmFwcGVkXV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5jb21waWxlQ2hpbGRyZW5Ob1JldHVybigkbWVkaWEtPmNoaWxkcmVuLCAkdGhpcy0+c2NvcGUpOwoKICAgICAgICAgICAgJHRoaXMtPnNjb3BlID0gJHByZXZpb3VzU2NvcGU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cG9wRW52KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNZWRpYSBwYXJlbnQKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJHNjb3BlCiAgICAgKgogICAgICogQHJldHVybiBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWVkaWFQYXJlbnQoT3V0cHV0QmxvY2sgJHNjb3BlKQogICAgewogICAgICAgIHdoaWxlICghIGVtcHR5KCRzY29wZS0+cGFyZW50KSkgewogICAgICAgICAgICBpZiAoISBlbXB0eSgkc2NvcGUtPnR5cGUpICYmICRzY29wZS0+dHlwZSAhPT0gVHlwZTo6VF9NRURJQSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzY29wZSA9ICRzY29wZS0+cGFyZW50OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzY29wZTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgZGlyZWN0aXZlCiAgICAgKgogICAgICogQHBhcmFtIERpcmVjdGl2ZUJsb2NrfGFycmF5ICAgICAgICAgICAgICAgICAgICRkaXJlY3RpdmUKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkb3V0CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlRGlyZWN0aXZlKCRkaXJlY3RpdmUsIE91dHB1dEJsb2NrICRvdXQpCiAgICB7CiAgICAgICAgaWYgKFxpc19hcnJheSgkZGlyZWN0aXZlKSkgewogICAgICAgICAgICAkZGlyZWN0aXZlTmFtZSA9ICR0aGlzLT5jb21waWxlRGlyZWN0aXZlTmFtZSgkZGlyZWN0aXZlWzBdKTsKICAgICAgICAgICAgJHMgPSAnQCcgLiAkZGlyZWN0aXZlTmFtZTsKCiAgICAgICAgICAgIGlmICghIGVtcHR5KCRkaXJlY3RpdmVbMV0pKSB7CiAgICAgICAgICAgICAgICAkcyAuPSAnICcgLiAkdGhpcy0+Y29tcGlsZVZhbHVlKCRkaXJlY3RpdmVbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIHNhc3Mtc3BlYyBjb21wbGlhbmNlIG9uIG5ld2xpbmUgYWZ0ZXIgZGlyZWN0aXZlcywgYSBiaXQgdHJpY2t5IDovCiAgICAgICAgICAgICRhcHBlbmROZXdMaW5lID0gKCEgZW1wdHkoJGRpcmVjdGl2ZVsyXSkgfHwgc3RycG9zKCRzLCAiXG4iKSkgPyAiXG4iIDogIiI7CiAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJGRpcmVjdGl2ZVswXSkgJiYgZW1wdHkoJGRpcmVjdGl2ZVsxXSkpIHsKICAgICAgICAgICAgICAgICRhcHBlbmROZXdMaW5lID0gIlxuIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGVtcHR5KCRkaXJlY3RpdmVbM10pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kUm9vdERpcmVjdGl2ZSgkcyAuICc7JyAuICRhcHBlbmROZXdMaW5lLCAkb3V0LCBbVHlwZTo6VF9DT01NRU5ULCBUeXBlOjpUX0RJUkVDVElWRV0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZE91dHB1dExpbmUoJG91dCwgVHlwZTo6VF9ESVJFQ1RJVkUsICRzIC4gJzsnKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkaXJlY3RpdmUtPm5hbWUgPSAkdGhpcy0+Y29tcGlsZURpcmVjdGl2ZU5hbWUoJGRpcmVjdGl2ZS0+bmFtZSk7CiAgICAgICAgICAgICRzID0gJ0AnIC4gJGRpcmVjdGl2ZS0+bmFtZTsKCiAgICAgICAgICAgIGlmICghIGVtcHR5KCRkaXJlY3RpdmUtPnZhbHVlKSkgewogICAgICAgICAgICAgICAgJHMgLj0gJyAnIC4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkZGlyZWN0aXZlLT52YWx1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkZGlyZWN0aXZlLT5uYW1lID09PSAna2V5ZnJhbWVzJyB8fCBzdWJzdHIoJGRpcmVjdGl2ZS0+bmFtZSwgLTEwKSA9PT0gJy1rZXlmcmFtZXMnKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUtleWZyYW1lQmxvY2soJGRpcmVjdGl2ZSwgWyRzXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZU5lc3RlZEJsb2NrKCRkaXJlY3RpdmUsIFskc10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogZGlyZWN0aXZlIG5hbWVzIGNhbiBpbmNsdWRlIHNvbWUgaW50ZXJwb2xhdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJGRpcmVjdGl2ZU5hbWUKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKiBAdGhyb3dzIENvbXBpbGVyRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlRGlyZWN0aXZlTmFtZSgkZGlyZWN0aXZlTmFtZSkKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRkaXJlY3RpdmVOYW1lKSkgewogICAgICAgICAgICByZXR1cm4gJGRpcmVjdGl2ZU5hbWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkZGlyZWN0aXZlTmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIGF0LXJvb3QKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCbG9jayAkYmxvY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVBdFJvb3QoQmxvY2sgJGJsb2NrKQogICAgewogICAgICAgIGFzc2VydCgkYmxvY2sgaW5zdGFuY2VvZiBBdFJvb3RCbG9jayk7CiAgICAgICAgJGVudiAgICAgPSAkdGhpcy0+cHVzaEVudigkYmxvY2spOwogICAgICAgICRlbnZzICAgID0gJHRoaXMtPmNvbXBhY3RFbnYoJGVudik7CiAgICAgICAgbGlzdCgkd2l0aCwgJHdpdGhvdXQpID0gJHRoaXMtPmNvbXBpbGVXaXRoKGlzc2V0KCRibG9jay0+d2l0aCkgPyAkYmxvY2stPndpdGggOiBudWxsKTsKCiAgICAgICAgLy8gd3JhcCBpbmxpbmUgc2VsZWN0b3IKICAgICAgICBpZiAoJGJsb2NrLT5zZWxlY3RvcikgewogICAgICAgICAgICAkd3JhcHBlZCA9IG5ldyBCbG9jaygpOwogICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlTmFtZSAgID0gJGJsb2NrLT5zb3VyY2VOYW1lOwogICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlSW5kZXggID0gJGJsb2NrLT5zb3VyY2VJbmRleDsKICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUxpbmUgICA9ICRibG9jay0+c291cmNlTGluZTsKICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUNvbHVtbiA9ICRibG9jay0+c291cmNlQ29sdW1uOwogICAgICAgICAgICAkd3JhcHBlZC0+c2VsZWN0b3JzICAgID0gJGJsb2NrLT5zZWxlY3RvcjsKICAgICAgICAgICAgJHdyYXBwZWQtPmNvbW1lbnRzICAgICA9IFtdOwogICAgICAgICAgICAkd3JhcHBlZC0+cGFyZW50ICAgICAgID0gJGJsb2NrOwogICAgICAgICAgICAkd3JhcHBlZC0+Y2hpbGRyZW4gICAgID0gJGJsb2NrLT5jaGlsZHJlbjsKICAgICAgICAgICAgJHdyYXBwZWQtPnNlbGZQYXJlbnQgICA9ICRibG9jay0+c2VsZlBhcmVudDsKCiAgICAgICAgICAgICRibG9jay0+Y2hpbGRyZW4gPSBbW1R5cGU6OlRfQkxPQ0ssICR3cmFwcGVkXV07CiAgICAgICAgICAgICRibG9jay0+c2VsZWN0b3IgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHNlbGZQYXJlbnQgPSAkYmxvY2stPnNlbGZQYXJlbnQ7CiAgICAgICAgYXNzZXJ0KCRzZWxmUGFyZW50ICE9PSBudWxsLCAnYXQtcm9vdCBibG9ja3MgbXVzdCBoYXZlIGEgc2VsZlBhcmVudCBzZXQuJyk7CgogICAgICAgIGlmICgKICAgICAgICAgICAgISAkc2VsZlBhcmVudC0+c2VsZWN0b3JzICYmCiAgICAgICAgICAgIGlzc2V0KCRibG9jay0+cGFyZW50KSAmJgogICAgICAgICAgICBpc3NldCgkYmxvY2stPnBhcmVudC0+c2VsZWN0b3JzKSAmJiAkYmxvY2stPnBhcmVudC0+c2VsZWN0b3JzCiAgICAgICAgKSB7CiAgICAgICAgICAgICRzZWxmUGFyZW50ID0gJGJsb2NrLT5wYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZW52ID0gJHRoaXMtPmZpbHRlcldpdGhXaXRob3V0KCRlbnZzLCAkd2l0aCwgJHdpdGhvdXQpOwoKICAgICAgICBhc3NlcnQoJHRoaXMtPnNjb3BlICE9PSBudWxsKTsKICAgICAgICAkc2F2ZVNjb3BlICAgPSAkdGhpcy0+c2NvcGU7CiAgICAgICAgJHRoaXMtPnNjb3BlID0gJHRoaXMtPmZpbHRlclNjb3BlV2l0aFdpdGhvdXQoJHNhdmVTY29wZSwgJHdpdGgsICR3aXRob3V0KTsKCiAgICAgICAgLy8gcHJvcGFnYXRlIHNlbGZQYXJlbnQgdG8gdGhlIGNoaWxkcmVuIHdoZXJlIHRoZXkgc3RpbGwgY2FuIGJlIHVzZWZ1bAogICAgICAgICR0aGlzLT5jb21waWxlQ2hpbGRyZW5Ob1JldHVybigkYmxvY2stPmNoaWxkcmVuLCAkdGhpcy0+c2NvcGUsICRzZWxmUGFyZW50KTsKCiAgICAgICAgYXNzZXJ0KCR0aGlzLT5zY29wZSAhPT0gbnVsbCk7CiAgICAgICAgJHRoaXMtPmNvbXBsZXRlU2NvcGUoJHRoaXMtPnNjb3BlLCAkc2F2ZVNjb3BlKTsKICAgICAgICAkdGhpcy0+c2NvcGUgPSAkc2F2ZVNjb3BlOwogICAgICAgICR0aGlzLT5lbnYgICA9ICR0aGlzLT5leHRyYWN0RW52KCRlbnZzKTsKCiAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgfQoKICAgIC8qKgogICAgICogRmlsdGVyIGF0LXJvb3Qgc2NvcGUgZGVwZW5kaW5nIG9uIHdpdGgvd2l0aG91dCBvcHRpb24KICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJHNjb3BlCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdpdGgKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2l0aG91dAogICAgICoKICAgICAqIEByZXR1cm4gT3V0cHV0QmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbHRlclNjb3BlV2l0aFdpdGhvdXQoJHNjb3BlLCAkd2l0aCwgJHdpdGhvdXQpCiAgICB7CiAgICAgICAgJGZpbHRlcmVkU2NvcGVzID0gW107CiAgICAgICAgJGNoaWxkU3Rhc2ggPSBbXTsKCiAgICAgICAgaWYgKCRzY29wZS0+dHlwZSA9PT0gVHlwZTo6VF9ST09UKSB7CiAgICAgICAgICAgIHJldHVybiAkc2NvcGU7CiAgICAgICAgfQogICAgICAgIGFzc2VydCgkdGhpcy0+cm9vdEJsb2NrICE9PSBudWxsKTsKCiAgICAgICAgLy8gc3RhcnQgZnJvbSB0aGUgcm9vdAogICAgICAgIHdoaWxlICgkc2NvcGUtPnBhcmVudCAmJiAkc2NvcGUtPnBhcmVudC0+dHlwZSAhPT0gVHlwZTo6VF9ST09UKSB7CiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGNoaWxkU3Rhc2gsICRzY29wZSk7CiAgICAgICAgICAgICRzY29wZSA9ICRzY29wZS0+cGFyZW50OwogICAgICAgIH0KCiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICBpZiAoISAkc2NvcGUpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPmlzV2l0aCgkc2NvcGUsICR3aXRoLCAkd2l0aG91dCkpIHsKICAgICAgICAgICAgICAgICRzID0gY2xvbmUgJHNjb3BlOwogICAgICAgICAgICAgICAgJHMtPmNoaWxkcmVuID0gW107CiAgICAgICAgICAgICAgICAkcy0+bGluZXMgICAgPSBbXTsKICAgICAgICAgICAgICAgICRzLT5wYXJlbnQgICA9IG51bGw7CgogICAgICAgICAgICAgICAgaWYgKCRzLT50eXBlICE9PSBUeXBlOjpUX01FRElBICYmICRzLT50eXBlICE9PSBUeXBlOjpUX0RJUkVDVElWRSkgewogICAgICAgICAgICAgICAgICAgICRzLT5zZWxlY3RvcnMgPSBbXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZmlsdGVyZWRTY29wZXNbXSA9ICRzOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXGNvdW50KCRjaGlsZFN0YXNoKSkgewogICAgICAgICAgICAgICAgJHNjb3BlID0gYXJyYXlfc2hpZnQoJGNoaWxkU3Rhc2gpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHNjb3BlLT5jaGlsZHJlbikgewogICAgICAgICAgICAgICAgJHNjb3BlID0gZW5kKCRzY29wZS0+Y2hpbGRyZW4pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNjb3BlID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCEgXGNvdW50KCRmaWx0ZXJlZFNjb3BlcykpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yb290QmxvY2s7CiAgICAgICAgfQoKICAgICAgICAkbmV3U2NvcGUgPSBhcnJheV9zaGlmdCgkZmlsdGVyZWRTY29wZXMpOwogICAgICAgICRuZXdTY29wZS0+cGFyZW50ID0gJHRoaXMtPnJvb3RCbG9jazsKCiAgICAgICAgJHRoaXMtPnJvb3RCbG9jay0+Y2hpbGRyZW5bXSA9ICRuZXdTY29wZTsKCiAgICAgICAgJHAgPSAmJG5ld1Njb3BlOwoKICAgICAgICB3aGlsZSAoXGNvdW50KCRmaWx0ZXJlZFNjb3BlcykpIHsKICAgICAgICAgICAgJHMgPSBhcnJheV9zaGlmdCgkZmlsdGVyZWRTY29wZXMpOwogICAgICAgICAgICAkcy0+cGFyZW50ID0gJHA7CiAgICAgICAgICAgICRwLT5jaGlsZHJlbltdID0gJHM7CiAgICAgICAgICAgICRuZXdTY29wZSA9ICYkcC0+Y2hpbGRyZW5bMF07CiAgICAgICAgICAgICRwID0gJiRwLT5jaGlsZHJlblswXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmV3U2NvcGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBmb3VuZCBtaXNzaW5nIHNlbGVjdG9yIGZyb20gYSBhdC1yb290IGNvbXBpbGF0aW9uIGluIHRoZSBwcmV2aW91cyBzY29wZQogICAgICogKGlmIGF0LXJvb3QgaXMganVzdCBlbmNsb3NpbmcgYSBwcm9wZXJ0eSwgdGhlIHNlbGVjdG9yIGlzIGluIHRoZSBwYXJlbnQgdHJlZSkKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJHNjb3BlCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJHByZXZpb3VzU2NvcGUKICAgICAqCiAgICAgKiBAcmV0dXJuIE91dHB1dEJsb2NrCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21wbGV0ZVNjb3BlKCRzY29wZSwgJHByZXZpb3VzU2NvcGUpCiAgICB7CiAgICAgICAgaWYgKCEgJHNjb3BlLT50eXBlICYmICEgJHNjb3BlLT5zZWxlY3RvcnMgJiYgXGNvdW50KCRzY29wZS0+bGluZXMpKSB7CiAgICAgICAgICAgICRzY29wZS0+c2VsZWN0b3JzID0gJHRoaXMtPmZpbmRTY29wZVNlbGVjdG9ycygkcHJldmlvdXNTY29wZSwgJHNjb3BlLT5kZXB0aCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNjb3BlLT5jaGlsZHJlbikgewogICAgICAgICAgICBmb3JlYWNoICgkc2NvcGUtPmNoaWxkcmVuIGFzICRrID0+ICRjKSB7CiAgICAgICAgICAgICAgICAkc2NvcGUtPmNoaWxkcmVuWyRrXSA9ICR0aGlzLT5jb21wbGV0ZVNjb3BlKCRjLCAkcHJldmlvdXNTY29wZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2NvcGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kIGEgc2VsZWN0b3IgYnkgdGhlIGRlcHRoIG5vZGUgaW4gdGhlIHNjb3BlCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRzY29wZQogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZXB0aAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbmRTY29wZVNlbGVjdG9ycygkc2NvcGUsICRkZXB0aCkKICAgIHsKICAgICAgICBpZiAoJHNjb3BlLT5kZXB0aCA9PT0gJGRlcHRoICYmICRzY29wZS0+c2VsZWN0b3JzKSB7CiAgICAgICAgICAgIHJldHVybiAkc2NvcGUtPnNlbGVjdG9yczsKICAgICAgICB9CgogICAgICAgIGlmICgkc2NvcGUtPmNoaWxkcmVuKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJHNjb3BlLT5jaGlsZHJlbikgYXMgJGMpIHsKICAgICAgICAgICAgICAgIGlmICgkcyA9ICR0aGlzLT5maW5kU2NvcGVTZWxlY3RvcnMoJGMsICRkZXB0aCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbXTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgQGF0LXJvb3QncyB3aXRoOiBpbmNsdXNpb24gLyB3aXRob3V0OiBleGNsdXNpb24gaW50byAyIGxpc3RzIHVzZXMgdG8gZmlsdGVyIHNjb3BlL2VudiBsYXRlcgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxudWxsICR3aXRoQ29uZGl0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEBwaHBzdGFuLXJldHVybiBhcnJheXthcnJheTxzdHJpbmcsIGJvb2w+LCBhcnJheTxzdHJpbmcsIGJvb2w+fQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZVdpdGgoJHdpdGhDb25kaXRpb24pCiAgICB7CiAgICAgICAgLy8ganVzdCBjb21waWxlIHdoYXQgd2UgaGF2ZSBpbiAyIGxpc3RzCiAgICAgICAgJHdpdGggPSBbXTsKICAgICAgICAkd2l0aG91dCA9IFsncnVsZScgPT4gdHJ1ZV07CgogICAgICAgIGlmICgkd2l0aENvbmRpdGlvbikgewogICAgICAgICAgICBpZiAoJHdpdGhDb25kaXRpb25bMF0gPT09IFR5cGU6OlRfSU5URVJQT0xBVEUpIHsKICAgICAgICAgICAgICAgICR3ID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkd2l0aENvbmRpdGlvbik7CgogICAgICAgICAgICAgICAgJGJ1ZmZlciA9ICIoJHcpIjsKICAgICAgICAgICAgICAgICRwYXJzZXIgPSAkdGhpcy0+cGFyc2VyRmFjdG9yeShfX01FVEhPRF9fKTsKCiAgICAgICAgICAgICAgICBpZiAoJHBhcnNlci0+cGFyc2VWYWx1ZSgkYnVmZmVyLCAkcmVQYXJzZWRXaXRoKSkgewogICAgICAgICAgICAgICAgICAgICR3aXRoQ29uZGl0aW9uID0gJHJlUGFyc2VkV2l0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHdpdGhDb25maWcgPSAkdGhpcy0+bWFwR2V0KCR3aXRoQ29uZGl0aW9uLCBzdGF0aWM6OiR3aXRoKTsKICAgICAgICAgICAgaWYgKCR3aXRoQ29uZmlnICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkd2l0aG91dCA9IFtdOyAvLyBjYW5jZWwgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgICRsaXN0ID0gJHRoaXMtPmNvZXJjZUxpc3QoJHdpdGhDb25maWcpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0WzJdIGFzICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgJGtleXdvcmQgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkaXRlbSkpOwoKICAgICAgICAgICAgICAgICAgICAkd2l0aFska2V5d29yZF0gPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkd2l0aG91dENvbmZpZyA9ICR0aGlzLT5tYXBHZXQoJHdpdGhDb25kaXRpb24sIHN0YXRpYzo6JHdpdGhvdXQpOwogICAgICAgICAgICBpZiAoJHdpdGhvdXRDb25maWcgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICR3aXRob3V0ID0gW107IC8vIGNhbmNlbCB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgJGxpc3QgPSAkdGhpcy0+Y29lcmNlTGlzdCgkd2l0aG91dENvbmZpZyk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3RbMl0gYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAka2V5d29yZCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkdGhpcy0+Y29lcmNlU3RyaW5nKCRpdGVtKSk7CgogICAgICAgICAgICAgICAgICAgICR3aXRob3V0WyRrZXl3b3JkXSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHdpdGgsICR3aXRob3V0XTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlciBlbnYgc3RhY2sKICAgICAqCiAgICAgKiBAcGFyYW0gRW52aXJvbm1lbnRbXSAkZW52cwogICAgICogQHBhcmFtIGFycmF5ICR3aXRoCiAgICAgKiBAcGFyYW0gYXJyYXkgJHdpdGhvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIEVudmlyb25tZW50CiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gIG5vbi1lbXB0eS1hcnJheTxFbnZpcm9ubWVudD4gJGVudnMKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbHRlcldpdGhXaXRob3V0KCRlbnZzLCAkd2l0aCwgJHdpdGhvdXQpCiAgICB7CiAgICAgICAgJGZpbHRlcmVkID0gW107CgogICAgICAgIGZvcmVhY2ggKCRlbnZzIGFzICRlKSB7CiAgICAgICAgICAgIGlmICgkZS0+YmxvY2sgJiYgISAkdGhpcy0+aXNXaXRoKCRlLT5ibG9jaywgJHdpdGgsICR3aXRob3V0KSkgewogICAgICAgICAgICAgICAgJGVjID0gY2xvbmUgJGU7CiAgICAgICAgICAgICAgICAkZWMtPmJsb2NrICAgICA9IG51bGw7CiAgICAgICAgICAgICAgICAkZWMtPnNlbGVjdG9ycyA9IFtdOwoKICAgICAgICAgICAgICAgICRmaWx0ZXJlZFtdID0gJGVjOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGZpbHRlcmVkW10gPSAkZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5leHRyYWN0RW52KCRmaWx0ZXJlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaWx0ZXIgV0lUSCBydWxlcwogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrfFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRibG9jawogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdpdGgKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aXRob3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc1dpdGgoJGJsb2NrLCAkd2l0aCwgJHdpdGhvdXQpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRibG9jay0+dHlwZSkpIHsKICAgICAgICAgICAgaWYgKCRibG9jay0+dHlwZSA9PT0gVHlwZTo6VF9NRURJQSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50ZXN0V2l0aFdpdGhvdXQoJ21lZGlhJywgJHdpdGgsICR3aXRob3V0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRibG9jay0+dHlwZSA9PT0gVHlwZTo6VF9ESVJFQ1RJVkUpIHsKICAgICAgICAgICAgICAgIGFzc2VydCgkYmxvY2sgaW5zdGFuY2VvZiBEaXJlY3RpdmVCbG9jayB8fCAkYmxvY2sgaW5zdGFuY2VvZiBPdXRwdXRCbG9jayk7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGJsb2NrLT5uYW1lKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dGVzdFdpdGhXaXRob3V0KCR0aGlzLT5jb21waWxlRGlyZWN0aXZlTmFtZSgkYmxvY2stPm5hbWUpLCAkd2l0aCwgJHdpdGhvdXQpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRibG9jay0+c2VsZWN0b3JzKSAmJiBwcmVnX21hdGNoKCcsQChcdyspLGltcycsIGpzb25fZW5jb2RlKCRibG9jay0+c2VsZWN0b3JzKSwgJG0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50ZXN0V2l0aFdpdGhvdXQoJG1bMV0sICR3aXRoLCAkd2l0aG91dCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dGVzdFdpdGhXaXRob3V0KCc/Pz8nLCAkd2l0aCwgJHdpdGhvdXQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRibG9jay0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAvLyBhIHNlbGVjdG9yIHN0YXJ0aW5nIHdpdGggbnVtYmVyIGlzIGEga2V5ZnJhbWUgcnVsZQogICAgICAgICAgICBpZiAoXGNvdW50KCRibG9jay0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAgICAgJHMgPSByZXNldCgkYmxvY2stPnNlbGVjdG9ycyk7CgogICAgICAgICAgICAgICAgd2hpbGUgKFxpc19hcnJheSgkcykpIHsKICAgICAgICAgICAgICAgICAgICAkcyA9IHJlc2V0KCRzKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoXGlzX29iamVjdCgkcykgJiYgJHMgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnRlc3RXaXRoV2l0aG91dCgna2V5ZnJhbWVzJywgJHdpdGgsICR3aXRob3V0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50ZXN0V2l0aFdpdGhvdXQoJ3J1bGUnLCAkd2l0aCwgJHdpdGhvdXQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0IGEgc2luZ2xlIHR5cGUgb2YgYmxvY2sgYWdhaW5zdCB3aXRoL3dpdGhvdXQgbGlzdHMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR3aGF0CiAgICAgKiBAcGFyYW0gYXJyYXkgICR3aXRoCiAgICAgKiBAcGFyYW0gYXJyYXkgICR3aXRob3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiAgIHRydWUgaWYgdGhlIGJsb2NrIHNob3VsZCBiZSBrZXB0LCBmYWxzZSB0byByZWplY3QKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHRlc3RXaXRoV2l0aG91dCgkd2hhdCwgJHdpdGgsICR3aXRob3V0KQogICAgewogICAgICAgIC8vIGlmIHdpdGhvdXQsIHJlamVjdCBvbmx5IGlmIGluIHRoZSBsaXN0IChvciAnYWxsJyBpcyBpbiB0aGUgbGlzdCkKICAgICAgICBpZiAoXGNvdW50KCR3aXRob3V0KSkgewogICAgICAgICAgICByZXR1cm4gKGlzc2V0KCR3aXRob3V0WyR3aGF0XSkgfHwgaXNzZXQoJHdpdGhvdXRbJ2FsbCddKSkgPyBmYWxzZSA6IHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBvdGhlcndpc2UgcmVqZWN0IGFsbCB3aGF0IGlzIG5vdCBpbiB0aGUgd2l0aCBsaXN0CiAgICAgICAgcmV0dXJuIChpc3NldCgkd2l0aFskd2hhdF0pIHx8IGlzc2V0KCR3aXRoWydhbGwnXSkpID8gdHJ1ZSA6IGZhbHNlOwogICAgfQoKCiAgICAvKioKICAgICAqIENvbXBpbGUga2V5ZnJhbWUgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCbG9jayAkYmxvY2sKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAgICAgICAgICAgICAgICRzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVLZXlmcmFtZUJsb2NrKEJsb2NrICRibG9jaywgJHNlbGVjdG9ycykKICAgIHsKICAgICAgICAkZW52ID0gJHRoaXMtPnB1c2hFbnYoJGJsb2NrKTsKCiAgICAgICAgJGVudnMgPSAkdGhpcy0+Y29tcGFjdEVudigkZW52KTsKCiAgICAgICAgJHRoaXMtPmVudiA9ICR0aGlzLT5leHRyYWN0RW52KGFycmF5X2ZpbHRlcigkZW52cywgZnVuY3Rpb24gKEVudmlyb25tZW50ICRlKSB7CiAgICAgICAgICAgIHJldHVybiAhIGlzc2V0KCRlLT5ibG9jay0+c2VsZWN0b3JzKTsKICAgICAgICB9KSk7CgogICAgICAgICR0aGlzLT5zY29wZSA9ICR0aGlzLT5tYWtlT3V0cHV0QmxvY2soJGJsb2NrLT50eXBlLCAkc2VsZWN0b3JzKTsKICAgICAgICAkdGhpcy0+c2NvcGUtPmRlcHRoID0gMTsKICAgICAgICBhc3NlcnQoJHRoaXMtPnNjb3BlLT5wYXJlbnQgIT09IG51bGwpOwogICAgICAgICR0aGlzLT5zY29wZS0+cGFyZW50LT5jaGlsZHJlbltdID0gJHRoaXMtPnNjb3BlOwoKICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuTm9SZXR1cm4oJGJsb2NrLT5jaGlsZHJlbiwgJHRoaXMtPnNjb3BlKTsKCiAgICAgICAgYXNzZXJ0KCR0aGlzLT5zY29wZSAhPT0gbnVsbCk7CiAgICAgICAgJHRoaXMtPnNjb3BlID0gJHRoaXMtPnNjb3BlLT5wYXJlbnQ7CiAgICAgICAgJHRoaXMtPmVudiAgID0gJHRoaXMtPmV4dHJhY3RFbnYoJGVudnMpOwoKICAgICAgICAkdGhpcy0+cG9wRW52KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIG5lc3RlZCBwcm9wZXJ0aWVzIGxpbmVzCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sgICAgICAgICAgICAgICAgICRibG9jawogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVOZXN0ZWRQcm9wZXJ0aWVzQmxvY2soQmxvY2sgJGJsb2NrLCBPdXRwdXRCbG9jayAkb3V0KQogICAgewogICAgICAgIGFzc2VydCgkYmxvY2sgaW5zdGFuY2VvZiBOZXN0ZWRQcm9wZXJ0eUJsb2NrKTsKICAgICAgICAkcHJlZml4ID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkYmxvY2stPnByZWZpeCkgLiAnLSc7CgogICAgICAgICRuZXN0ZWQgPSAkdGhpcy0+bWFrZU91dHB1dEJsb2NrKCRibG9jay0+dHlwZSk7CiAgICAgICAgJG5lc3RlZC0+cGFyZW50ID0gJG91dDsKCiAgICAgICAgaWYgKCRibG9jay0+aGFzVmFsdWUpIHsKICAgICAgICAgICAgJG5lc3RlZC0+ZGVwdGggPSAkb3V0LT5kZXB0aCArIDE7CiAgICAgICAgfQoKICAgICAgICAkb3V0LT5jaGlsZHJlbltdID0gJG5lc3RlZDsKCiAgICAgICAgZm9yZWFjaCAoJGJsb2NrLT5jaGlsZHJlbiBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgc3dpdGNoICgkY2hpbGRbMF0pIHsKICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9BU1NJR046CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkY2hpbGRbMV1bMl0sICRwcmVmaXgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9ORVNURURfUFJPUEVSVFk6CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KCRjaGlsZFsxXSBpbnN0YW5jZW9mIE5lc3RlZFByb3BlcnR5QmxvY2spOwogICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGNoaWxkWzFdLT5wcmVmaXhbMl0sICRwcmVmaXgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkKCRjaGlsZCwgJG5lc3RlZCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSBuZXN0ZWQgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCbG9jayAkYmxvY2sKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAgICAgICAgICAgICAgICRzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVOZXN0ZWRCbG9jayhCbG9jayAkYmxvY2ssICRzZWxlY3RvcnMpCiAgICB7CiAgICAgICAgJHRoaXMtPnB1c2hFbnYoJGJsb2NrKTsKCiAgICAgICAgJHRoaXMtPnNjb3BlID0gJHRoaXMtPm1ha2VPdXRwdXRCbG9jaygkYmxvY2stPnR5cGUsICRzZWxlY3RvcnMpOwogICAgICAgIGFzc2VydCgkdGhpcy0+c2NvcGUtPnBhcmVudCAhPT0gbnVsbCk7CiAgICAgICAgJHRoaXMtPnNjb3BlLT5wYXJlbnQtPmNoaWxkcmVuW10gPSAkdGhpcy0+c2NvcGU7CgogICAgICAgIC8vIHdyYXAgYXNzaWduIGNoaWxkcmVuIGluIGEgYmxvY2sKICAgICAgICAvLyBleGNlcHQgZm9yIEBmb250LWZhY2UKICAgICAgICBpZiAoISRibG9jayBpbnN0YW5jZW9mIERpcmVjdGl2ZUJsb2NrIHx8ICR0aGlzLT5jb21waWxlRGlyZWN0aXZlTmFtZSgkYmxvY2stPm5hbWUpICE9PSAnZm9udC1mYWNlJykgewogICAgICAgICAgICAvLyBuZWVkIHdyYXBwaW5nPwogICAgICAgICAgICAkbmVlZFdyYXBwaW5nID0gZmFsc2U7CgogICAgICAgICAgICBmb3JlYWNoICgkYmxvY2stPmNoaWxkcmVuIGFzICRjaGlsZCkgewogICAgICAgICAgICAgICAgaWYgKCRjaGlsZFswXSA9PT0gVHlwZTo6VF9BU1NJR04pIHsKICAgICAgICAgICAgICAgICAgICAkbmVlZFdyYXBwaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZWVkV3JhcHBpbmcpIHsKICAgICAgICAgICAgICAgICR3cmFwcGVkID0gbmV3IEJsb2NrKCk7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlTmFtZSAgID0gJGJsb2NrLT5zb3VyY2VOYW1lOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUluZGV4ICA9ICRibG9jay0+c291cmNlSW5kZXg7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlTGluZSAgID0gJGJsb2NrLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUNvbHVtbiA9ICRibG9jay0+c291cmNlQ29sdW1uOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNlbGVjdG9ycyAgICA9IFtdOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPmNvbW1lbnRzICAgICA9IFtdOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnBhcmVudCAgICAgICA9ICRibG9jazsKICAgICAgICAgICAgICAgICR3cmFwcGVkLT5jaGlsZHJlbiAgICAgPSAkYmxvY2stPmNoaWxkcmVuOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNlbGZQYXJlbnQgICA9ICRibG9jay0+c2VsZlBhcmVudDsKCiAgICAgICAgICAgICAgICAkYmxvY2stPmNoaWxkcmVuID0gW1tUeXBlOjpUX0JMT0NLLCAkd3JhcHBlZF1dOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuTm9SZXR1cm4oJGJsb2NrLT5jaGlsZHJlbiwgJHRoaXMtPnNjb3BlKTsKCiAgICAgICAgYXNzZXJ0KCR0aGlzLT5zY29wZSAhPT0gbnVsbCk7CiAgICAgICAgJHRoaXMtPnNjb3BlID0gJHRoaXMtPnNjb3BlLT5wYXJlbnQ7CgogICAgICAgICR0aGlzLT5wb3BFbnYoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlY3Vyc2l2ZWx5IGNvbXBpbGVzIGEgYmxvY2suCiAgICAgKgogICAgICogQSBibG9jayBpcyBhbmFsb2dvdXMgdG8gYSBDU1MgYmxvY2sgaW4gbW9zdCBjYXNlcy4gQSBzaW5nbGUgU0NTUyBkb2N1bWVudAogICAgICogaXMgZW5jYXBzdWxhdGVkIGluIGEgYmxvY2sgd2hlbiBwYXJzZWQsIGJ1dCBpdCBkb2VzIG5vdCBoYXZlIHBhcmVudCB0YWdzCiAgICAgKiBzbyBhbGwgb2YgaXRzIGNoaWxkcmVuIGFwcGVhciBvbiB0aGUgcm9vdCBsZXZlbCB3aGVuIGNvbXBpbGVkLgogICAgICoKICAgICAqIEJsb2NrcyBhcmUgbWFkZSB1cCBvZiBzZWxlY3RvcnMgYW5kIGNoaWxkcmVuLgogICAgICoKICAgICAqIFRoZSBjaGlsZHJlbiBvZiBhIGJsb2NrIGFyZSBqdXN0IGFsbCB0aGUgYmxvY2tzIHRoYXQgYXJlIGRlZmluZWQgd2l0aGluLgogICAgICoKICAgICAqIENvbXBpbGluZyB0aGUgYmxvY2sgaW52b2x2ZXMgcHVzaGluZyBhIGZyZXNoIGVudmlyb25tZW50IG9uIHRoZSBzdGFjaywKICAgICAqIGFuZCBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgcHJvcHMsIGNvbXBpbGluZyBlYWNoIG9uZS4KICAgICAqCiAgICAgKiBAc2VlIENvbXBpbGVyOjpjb21waWxlQ2hpbGQoKQogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrICRibG9jawogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZUJsb2NrKEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICAkZW52ID0gJHRoaXMtPnB1c2hFbnYoJGJsb2NrKTsKICAgICAgICBhc3NlcnQoJGJsb2NrLT5zZWxlY3RvcnMgIT09IG51bGwpOwogICAgICAgICRlbnYtPnNlbGVjdG9ycyA9ICR0aGlzLT5ldmFsU2VsZWN0b3JzKCRibG9jay0+c2VsZWN0b3JzKTsKCiAgICAgICAgJG91dCA9ICR0aGlzLT5tYWtlT3V0cHV0QmxvY2sobnVsbCk7CgogICAgICAgIGFzc2VydCgkdGhpcy0+c2NvcGUgIT09IG51bGwpOwogICAgICAgICR0aGlzLT5zY29wZS0+Y2hpbGRyZW5bXSA9ICRvdXQ7CgogICAgICAgIGlmIChcY291bnQoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJG91dC0+c2VsZWN0b3JzID0gJHRoaXMtPm11bHRpcGx5U2VsZWN0b3JzKCRlbnYsICRibG9jay0+c2VsZlBhcmVudCk7CgogICAgICAgICAgICAvLyBwcm9wYWdhdGUgc2VsZlBhcmVudCB0byB0aGUgY2hpbGRyZW4gd2hlcmUgdGhleSBzdGlsbCBjYW4gYmUgdXNlZnVsCiAgICAgICAgICAgICRzZWxmUGFyZW50U2VsZWN0b3JzID0gbnVsbDsKCiAgICAgICAgICAgIGlmIChpc3NldCgkYmxvY2stPnNlbGZQYXJlbnQtPnNlbGVjdG9ycykpIHsKICAgICAgICAgICAgICAgICRzZWxmUGFyZW50U2VsZWN0b3JzID0gJGJsb2NrLT5zZWxmUGFyZW50LT5zZWxlY3RvcnM7CiAgICAgICAgICAgICAgICAkYmxvY2stPnNlbGZQYXJlbnQtPnNlbGVjdG9ycyA9ICRvdXQtPnNlbGVjdG9yczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVDaGlsZHJlbk5vUmV0dXJuKCRibG9jay0+Y2hpbGRyZW4sICRvdXQsICRibG9jay0+c2VsZlBhcmVudCk7CgogICAgICAgICAgICAvLyBhbmQgcmV2ZXJ0IGZvciB0aGUgZm9sbG93aW5nIGNoaWxkcmVuIG9mIHRoZSBzYW1lIGJsb2NrCiAgICAgICAgICAgIGlmICgkc2VsZlBhcmVudFNlbGVjdG9ycykgewogICAgICAgICAgICAgICAgYXNzZXJ0KCRibG9jay0+c2VsZlBhcmVudCAhPT0gbnVsbCk7CiAgICAgICAgICAgICAgICAkYmxvY2stPnNlbGZQYXJlbnQtPnNlbGVjdG9ycyA9ICRzZWxmUGFyZW50U2VsZWN0b3JzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cG9wRW52KCk7CiAgICB9CgoKICAgIC8qKgogICAgICogQ29tcGlsZSB0aGUgdmFsdWUgb2YgYSBjb21tZW50IHRoYXQgY2FuIGhhdmUgaW50ZXJwb2xhdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWUKICAgICAqIEBwYXJhbSBib29sICAkcHVzaEVudgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlQ29tbWVudFZhbHVlKCR2YWx1ZSwgJHB1c2hFbnYgPSBmYWxzZSkKICAgIHsKICAgICAgICAkYyA9ICR2YWx1ZVsxXTsKCiAgICAgICAgaWYgKGlzc2V0KCR2YWx1ZVsyXSkpIHsKICAgICAgICAgICAgaWYgKCRwdXNoRW52KSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+cHVzaEVudigpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGMgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZVsyXSk7CiAgICAgICAgICAgIH0gY2F0Y2ggKFNhc3NTY3JpcHRFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5sb2dnZXItPndhcm4oJ0lnbm9yaW5nIGludGVycG9sYXRpb24gZXJyb3JzIGluIG11bHRpbGluZSBjb21tZW50cyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gU2Nzc1BocCAyLjAuICcgLiAkdGhpcy0+YWRkTG9jYXRpb25Ub01lc3NhZ2UoJGUtPmdldE1lc3NhZ2UoKSksIHRydWUpOwogICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yIGluIGNvbW1lbnQgY29tcGlsYXRpb24gd2hpY2ggYXJlIG9ubHkgaW50ZXJwb2xhdGlvbgogICAgICAgICAgICB9IGNhdGNoIChTYXNzRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+bG9nZ2VyLT53YXJuKCdJZ25vcmluZyBpbnRlcnBvbGF0aW9uIGVycm9ycyBpbiBtdWx0aWxpbmUgY29tbWVudHMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFNjc3NQaHAgMi4wLiAnIC4gJGUtPmdldE1lc3NhZ2UoKSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgZXJyb3IgaW4gY29tbWVudCBjb21waWxhdGlvbiB3aGljaCBhcmUgb25seSBpbnRlcnBvbGF0aW9uCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcHVzaEVudikgewogICAgICAgICAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIHJvb3QgbGV2ZWwgY29tbWVudAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkYmxvY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVDb21tZW50KCRibG9jaykKICAgIHsKICAgICAgICAkb3V0ID0gJHRoaXMtPm1ha2VPdXRwdXRCbG9jayhUeXBlOjpUX0NPTU1FTlQpOwogICAgICAgICRvdXQtPmxpbmVzW10gPSAkdGhpcy0+Y29tcGlsZUNvbW1lbnRWYWx1ZSgkYmxvY2ssIHRydWUpOwoKICAgICAgICBhc3NlcnQoJHRoaXMtPnNjb3BlICE9PSBudWxsKTsKICAgICAgICAkdGhpcy0+c2NvcGUtPmNoaWxkcmVuW10gPSAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGUgc2VsZWN0b3JzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBldmFsU2VsZWN0b3JzKCRzZWxlY3RvcnMpCiAgICB7CiAgICAgICAgJHRoaXMtPnNob3VsZEV2YWx1YXRlID0gZmFsc2U7CgogICAgICAgICRldmFsdWF0ZWRTZWxlY3RvcnMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3JzIGFzICRzZWxlY3RvcikgewogICAgICAgICAgICAkZXZhbHVhdGVkU2VsZWN0b3JzW10gPSAkdGhpcy0+ZXZhbFNlbGVjdG9yKCRzZWxlY3Rvcik7CiAgICAgICAgfQogICAgICAgICRzZWxlY3RvcnMgPSAkZXZhbHVhdGVkU2VsZWN0b3JzOwoKICAgICAgICAvLyBhZnRlciBldmFsdWF0aW5nIGludGVycG9sYXRlcywgd2UgbWlnaHQgbmVlZCBhIHNlY29uZCBwYXNzCiAgICAgICAgaWYgKCR0aGlzLT5zaG91bGRFdmFsdWF0ZSkgewogICAgICAgICAgICAkc2VsZWN0b3JzID0gJHRoaXMtPnJlcGxhY2VTZWxmU2VsZWN0b3IoJHNlbGVjdG9ycywgJyYnKTsKICAgICAgICAgICAgJGJ1ZmZlciAgICA9ICR0aGlzLT5jb2xsYXBzZVNlbGVjdG9ycygkc2VsZWN0b3JzKTsKICAgICAgICAgICAgJHBhcnNlciAgICA9ICR0aGlzLT5wYXJzZXJGYWN0b3J5KF9fTUVUSE9EX18pOwoKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRpc1ZhbGlkID0gJHBhcnNlci0+cGFyc2VTZWxlY3RvcigkYnVmZmVyLCAkbmV3U2VsZWN0b3JzLCB0cnVlKTsKICAgICAgICAgICAgfSBjYXRjaCAoUGFyc2VyRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJGUtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkaXNWYWxpZCkgewogICAgICAgICAgICAgICAgJHNlbGVjdG9ycyA9IGFycmF5X21hcChbJHRoaXMsICdldmFsU2VsZWN0b3InXSwgJG5ld1NlbGVjdG9ycyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2VsZWN0b3JzOwogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGUgc2VsZWN0b3IKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9yCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXZhbFNlbGVjdG9yKCRzZWxlY3RvcikKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfbWFwKFskdGhpcywgJ2V2YWxTZWxlY3RvclBhcnQnXSwgJHNlbGVjdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIEV2YWx1YXRlIHNlbGVjdG9yIHBhcnQ7IHJlcGxhY2VzIGFsbCB0aGUgaW50ZXJwb2xhdGVzLCBzdHJpcHBpbmcgcXVvdGVzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXZhbFNlbGVjdG9yUGFydCgkcGFydCkKICAgIHsKICAgICAgICBmb3JlYWNoICgkcGFydCBhcyAmJHApIHsKICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkcCkgJiYgKCRwWzBdID09PSBUeXBlOjpUX0lOVEVSUE9MQVRFIHx8ICRwWzBdID09PSBUeXBlOjpUX1NUUklORykpIHsKICAgICAgICAgICAgICAgICRwID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcCk7CgogICAgICAgICAgICAgICAgLy8gZm9yY2UgcmUtZXZhbHVhdGlvbiBpZiBzZWxmIGNoYXIgb3Igbm9uIHN0YW5kYXJkIGNoYXIKICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcsW15cdy1dLCcsICRwKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zaG91bGRFdmFsdWF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgKICAgICAgICAgICAgICAgIFxpc19zdHJpbmcoJHApICYmIFxzdHJsZW4oJHApID49IDIgJiYKICAgICAgICAgICAgICAgICgkcFswXSA9PT0gJyInIHx8ICRwWzBdID09PSAiJyIpICYmCiAgICAgICAgICAgICAgICBzdWJzdHIoJHAsIC0xKSA9PT0gJHBbMF0KICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcCA9IHN1YnN0cigkcCwgMSwgLTEpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmZsYXR0ZW5TZWxlY3RvclNpbmdsZSgkcGFydCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2xsYXBzZSBzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9ycwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb2xsYXBzZVNlbGVjdG9ycygkc2VsZWN0b3JzKQogICAgewogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3JzIGFzICRzZWxlY3RvcikgewogICAgICAgICAgICAkb3V0cHV0ID0gW107CgogICAgICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3IgYXMgJG5vZGUpIHsKICAgICAgICAgICAgICAgICRjb21wb3VuZCA9ICcnOwoKICAgICAgICAgICAgICAgIGFycmF5X3dhbGtfcmVjdXJzaXZlKAogICAgICAgICAgICAgICAgICAgICRub2RlLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUsICRrZXkpIHVzZSAoJiRjb21wb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29tcG91bmQgLj0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJG91dHB1dFtdID0gJGNvbXBvdW5kOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGFydHNbXSA9IGltcGxvZGUoJyAnLCAkb3V0cHV0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpbXBsb2RlKCcsICcsICRwYXJ0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2xsYXBzZSBzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9ycwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb2xsYXBzZVNlbGVjdG9yc0FzTGlzdCgkc2VsZWN0b3JzKQogICAgewogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3JzIGFzICRzZWxlY3RvcikgewogICAgICAgICAgICAkb3V0cHV0ID0gW107CiAgICAgICAgICAgICRnbHVlTmV4dCA9IGZhbHNlOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHNlbGVjdG9yIGFzICRub2RlKSB7CiAgICAgICAgICAgICAgICAkY29tcG91bmQgPSAnJzsKCiAgICAgICAgICAgICAgICBhcnJheV93YWxrX3JlY3Vyc2l2ZSgKICAgICAgICAgICAgICAgICAgICAkbm9kZSwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHZhbHVlLCAka2V5KSB1c2UgKCYkY29tcG91bmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBvdW5kIC49ICR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+aXNJbW1lZGlhdGVSZWxhdGlvbnNoaXBDb21iaW5hdG9yKCRjb21wb3VuZCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXGNvdW50KCRvdXRwdXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXRbXGNvdW50KCRvdXRwdXQpIC0gMV0gLj0gJyAnIC4gJGNvbXBvdW5kOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXRbXSA9ICRjb21wb3VuZDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRnbHVlTmV4dCA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGdsdWVOZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dFtcY291bnQoJG91dHB1dCkgLSAxXSAuPSAnICcgLiAkY29tcG91bmQ7CiAgICAgICAgICAgICAgICAgICAgJGdsdWVOZXh0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRvdXRwdXRbXSA9ICRjb21wb3VuZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yZWFjaCAoJG91dHB1dCBhcyAmJG8pIHsKICAgICAgICAgICAgICAgICRvID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgWyRvXV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXJ0c1tdID0gW1R5cGU6OlRfTElTVCwgJyAnLCAkb3V0cHV0XTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9MSVNULCAnLCcsICRwYXJ0c107CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBkb3duIHRoZSBzZWxlY3RvciBhbmQgcmV2ZXJ0IFtzZWxmXSB0byAiJiIgYmVmb3JlIGEgcmVwYXJzaW5nCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICRzZWxlY3RvcnMKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcmVwbGFjZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlcGxhY2VTZWxmU2VsZWN0b3IoJHNlbGVjdG9ycywgJHJlcGxhY2UgPSBudWxsKQogICAgewogICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJiRwYXJ0KSB7CiAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJHBhcnQpKSB7CiAgICAgICAgICAgICAgICBpZiAoJHBhcnQgPT09IFtUeXBlOjpUX1NFTEZdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFxpc19udWxsKCRyZXBsYWNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVwbGFjZSA9ICR0aGlzLT5yZWR1Y2UoW1R5cGU6OlRfU0VMRl0pOwogICAgICAgICAgICAgICAgICAgICAgICAkcmVwbGFjZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHJlcGxhY2UpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcGFydCA9ICRyZXBsYWNlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcGFydCA9ICR0aGlzLT5yZXBsYWNlU2VsZlNlbGVjdG9yKCRwYXJ0LCAkcmVwbGFjZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2VsZWN0b3JzOwogICAgfQoKICAgIC8qKgogICAgICogRmxhdHRlbiBzZWxlY3RvciBzaW5nbGU7IGpvaW5zIHRvZ2V0aGVyIC5jbGFzc2VzIGFuZCAjaWRzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzaW5nbGUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmbGF0dGVuU2VsZWN0b3JTaW5nbGUoJHNpbmdsZSkKICAgIHsKICAgICAgICAkam9pbmVkID0gW107CgogICAgICAgIGZvcmVhY2ggKCRzaW5nbGUgYXMgJHBhcnQpIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgZW1wdHkoJGpvaW5lZCkgfHwKICAgICAgICAgICAgICAgICEgXGlzX3N0cmluZygkcGFydCkgfHwKICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goJy9bXFsuOiMlXS8nLCAkcGFydCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkam9pbmVkW10gPSAkcGFydDsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXGlzX2FycmF5KGVuZCgkam9pbmVkKSkpIHsKICAgICAgICAgICAgICAgICRqb2luZWRbXSA9ICRwYXJ0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGpvaW5lZFtcY291bnQoJGpvaW5lZCkgLSAxXSAuPSAkcGFydDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqb2luZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIHNlbGVjdG9yIHRvIHN0cmluZzsgc2VsZigmKSBzaG91bGQgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IG5vdwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJHNlbGVjdG9yCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVTZWxlY3Rvcigkc2VsZWN0b3IpCiAgICB7CiAgICAgICAgaWYgKCEgXGlzX2FycmF5KCRzZWxlY3RvcikpIHsKICAgICAgICAgICAgcmV0dXJuICRzZWxlY3RvcjsgLy8gbWVkaWEgYW5kIHRoZSBsaWtlCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgKICAgICAgICAgICAgJyAnLAogICAgICAgICAgICBhcnJheV9tYXAoCiAgICAgICAgICAgICAgICBbJHRoaXMsICdjb21waWxlU2VsZWN0b3JQYXJ0J10sCiAgICAgICAgICAgICAgICAkc2VsZWN0b3IKICAgICAgICAgICAgKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIHNlbGVjdG9yIHBhcnQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBpZWNlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVTZWxlY3RvclBhcnQoJHBpZWNlKQogICAgewogICAgICAgIGZvcmVhY2ggKCRwaWVjZSBhcyAmJHApIHsKICAgICAgICAgICAgaWYgKCEgXGlzX2FycmF5KCRwKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHN3aXRjaCAoJHBbMF0pIHsKICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9TRUxGOgogICAgICAgICAgICAgICAgICAgICRwID0gJyYnOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgJHAgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRwKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJHBpZWNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEhhcyBzZWxlY3RvciBwbGFjZWhvbGRlcj8KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9yCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBoYXNTZWxlY3RvclBsYWNlaG9sZGVyKCRzZWxlY3RvcikKICAgIHsKICAgICAgICBpZiAoISBcaXNfYXJyYXkoJHNlbGVjdG9yKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3IgYXMgJHBhcnRzKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgewogICAgICAgICAgICAgICAgaWYgKFxzdHJsZW4oJHBhcnQpICYmICclJyA9PT0gJHBhcnRbMF0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHVzaENhbGxTdGFjaygkbmFtZSA9ICcnKQogICAgewogICAgICAgICR0aGlzLT5jYWxsU3RhY2tbXSA9IFsKICAgICAgICAgICduJyA9PiAkbmFtZSwKICAgICAgICAgIFBhcnNlcjo6U09VUkNFX0lOREVYID0+ICR0aGlzLT5zb3VyY2VJbmRleCwKICAgICAgICAgIFBhcnNlcjo6U09VUkNFX0xJTkUgPT4gJHRoaXMtPnNvdXJjZUxpbmUsCiAgICAgICAgICBQYXJzZXI6OlNPVVJDRV9DT0xVTU4gPT4gJHRoaXMtPnNvdXJjZUNvbHVtbgogICAgICAgIF07CgogICAgICAgIC8vIGluZmluaXRlIGNhbGxpbmcgbG9vcAogICAgICAgIGlmIChcY291bnQoJHRoaXMtPmNhbGxTdGFjaykgPiAyNTAwMCkgewogICAgICAgICAgICAvLyBub3QgZGlzcGxheWVkIGJ1dCB5b3UgY2FuIHZhcl9kdW1wIGl0IHRvIGRlZXAgZGVidWcKICAgICAgICAgICAgJG1zZyA9ICR0aGlzLT5jYWxsU3RhY2tNZXNzYWdlKHRydWUsIDEwMCk7CiAgICAgICAgICAgICRtc2cgPSAnSW5maW5pdGUgY2FsbGluZyBsb29wJzsKCiAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigkbXNnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBvcENhbGxTdGFjaygpCiAgICB7CiAgICAgICAgYXJyYXlfcG9wKCR0aGlzLT5jYWxsU3RhY2spOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSBjaGlsZHJlbiBhbmQgcmV0dXJuIHJlc3VsdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RtcwogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRvdXQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJhY2VOYW1lCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxOdW1iZXJ8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZUNoaWxkcmVuKCRzdG1zLCBPdXRwdXRCbG9jayAkb3V0LCAkdHJhY2VOYW1lID0gJycpCiAgICB7CiAgICAgICAgJHRoaXMtPnB1c2hDYWxsU3RhY2soJHRyYWNlTmFtZSk7CgogICAgICAgIGZvcmVhY2ggKCRzdG1zIGFzICRzdG0pIHsKICAgICAgICAgICAgJHJldCA9ICR0aGlzLT5jb21waWxlQ2hpbGQoJHN0bSwgJG91dCk7CgogICAgICAgICAgICBpZiAoaXNzZXQoJHJldCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5wb3BDYWxsU3RhY2soKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJHJldDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnBvcENhbGxTdGFjaygpOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgY2hpbGRyZW4gYW5kIHRocm93IGV4Y2VwdGlvbiBpZiB1bmV4cGVjdGVkIGF0LXJldHVybgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheVtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RtcwogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRvdXQKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrICAgICAgICAgICAgICAgICAkc2VsZlBhcmVudAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cmFjZU5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVDaGlsZHJlbk5vUmV0dXJuKCRzdG1zLCBPdXRwdXRCbG9jayAkb3V0LCAkc2VsZlBhcmVudCA9IG51bGwsICR0cmFjZU5hbWUgPSAnJykKICAgIHsKICAgICAgICAkdGhpcy0+cHVzaENhbGxTdGFjaygkdHJhY2VOYW1lKTsKCiAgICAgICAgZm9yZWFjaCAoJHN0bXMgYXMgJHN0bSkgewogICAgICAgICAgICBpZiAoJHNlbGZQYXJlbnQgJiYgaXNzZXQoJHN0bVsxXSkgJiYgXGlzX29iamVjdCgkc3RtWzFdKSAmJiAkc3RtWzFdIGluc3RhbmNlb2YgQmxvY2spIHsKICAgICAgICAgICAgICAgICRvbGRTZWxmUGFyZW50ID0gJHN0bVsxXS0+c2VsZlBhcmVudDsKICAgICAgICAgICAgICAgICRzdG1bMV0tPnNlbGZQYXJlbnQgPSAkc2VsZlBhcmVudDsKICAgICAgICAgICAgICAgICRyZXQgPSAkdGhpcy0+Y29tcGlsZUNoaWxkKCRzdG0sICRvdXQpOwogICAgICAgICAgICAgICAgJHN0bVsxXS0+c2VsZlBhcmVudCA9ICRvbGRTZWxmUGFyZW50OwogICAgICAgICAgICB9IGVsc2VpZiAoJHNlbGZQYXJlbnQgJiYgXGluX2FycmF5KCRzdG1bMF0sIFtUeXBlOjpUX0lOQ0xVREUsIFR5cGU6OlRfRVhURU5EXSkpIHsKICAgICAgICAgICAgICAgICRzdG1bJ3NlbGZQYXJlbnQnXSA9ICRzZWxmUGFyZW50OwogICAgICAgICAgICAgICAgJHJldCA9ICR0aGlzLT5jb21waWxlQ2hpbGQoJHN0bSwgJG91dCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmV0ID0gJHRoaXMtPmNvbXBpbGVDaGlsZCgkc3RtLCAkb3V0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlzc2V0KCRyZXQpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJ0ByZXR1cm4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoaW4gYSBmdW5jdGlvbicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cG9wQ2FsbFN0YWNrKCk7CiAgICB9CgoKICAgIC8qKgogICAgICogZXZhbHVhdGUgbWVkaWEgcXVlcnkgOiBjb21waWxlIGludGVybmFsIHZhbHVlIGtlZXBpbmcgdGhlIHN0cnVjdHVyZSB1bmNoYW5nZWQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHF1ZXJ5TGlzdAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV2YWx1YXRlTWVkaWFRdWVyeSgkcXVlcnlMaXN0KQogICAgewogICAgICAgIHN0YXRpYyAkcGFyc2VyID0gbnVsbDsKCiAgICAgICAgJG91dFF1ZXJ5TGlzdCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkcXVlcnlMaXN0IGFzICRrcWwgPT4gJHF1ZXJ5KSB7CiAgICAgICAgICAgICRzaG91bGRSZXBhcnNlID0gZmFsc2U7CgogICAgICAgICAgICBmb3JlYWNoICgkcXVlcnkgYXMgJGtxID0+ICRxKSB7CiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMTsgJGkgPCBcY291bnQoJHEpOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcVskaV0pOwoKICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcGFyc2VyIGhhZCBubyBtZWFuIHRvIGtub3cgaWYgbWVkaWEgdHlwZSBvciBleHByZXNzaW9uIGlmIGl0IHdhcyBhbiBpbnRlcnBvbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgLy8gc28geW91IG5lZWQgdG8gcmVwYXJzZSBpZiB0aGUgVF9NRURJQV9UWVBFIGxvb2tzIGxpa2UgYW55dGhpbmcgZWxzZSBhIG1lZGlhIHR5cGUKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRxWzBdID09IFR5cGU6OlRfTUVESUFfVFlQRSAmJgogICAgICAgICAgICAgICAgICAgICAgICAoc3RycG9zKCR2YWx1ZSwgJygnKSAhPT0gZmFsc2UgfHwKICAgICAgICAgICAgICAgICAgICAgICAgc3RycG9zKCR2YWx1ZSwgJyknKSAhPT0gZmFsc2UgfHwKICAgICAgICAgICAgICAgICAgICAgICAgc3RycG9zKCR2YWx1ZSwgJzonKSAhPT0gZmFsc2UgfHwKICAgICAgICAgICAgICAgICAgICAgICAgc3RycG9zKCR2YWx1ZSwgJywnKSAhPT0gZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzaG91bGRSZXBhcnNlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRxdWVyeUxpc3RbJGtxbF1bJGtxXVskaV0gPSBbVHlwZTo6VF9LRVlXT1JELCAkdmFsdWVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNob3VsZFJlcGFyc2UpIHsKICAgICAgICAgICAgICAgIGlmIChcaXNfbnVsbCgkcGFyc2VyKSkgewogICAgICAgICAgICAgICAgICAgICRwYXJzZXIgPSAkdGhpcy0+cGFyc2VyRmFjdG9yeShfX01FVEhPRF9fKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcXVlcnlTdHJpbmcgPSAkdGhpcy0+Y29tcGlsZU1lZGlhUXVlcnkoWyRxdWVyeUxpc3RbJGtxbF1dKTsKICAgICAgICAgICAgICAgICRxdWVyeVN0cmluZyA9IHJlc2V0KCRxdWVyeVN0cmluZyk7CgogICAgICAgICAgICAgICAgaWYgKCRxdWVyeVN0cmluZyAhPT0gZmFsc2UgJiYgc3RycG9zKCRxdWVyeVN0cmluZywgJ0BtZWRpYSAnKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICRxdWVyeVN0cmluZyA9IHN1YnN0cigkcXVlcnlTdHJpbmcsIDcpOwogICAgICAgICAgICAgICAgICAgICRxdWVyaWVzID0gW107CgogICAgICAgICAgICAgICAgICAgIGlmICgkcGFyc2VyLT5wYXJzZU1lZGlhUXVlcnlMaXN0KCRxdWVyeVN0cmluZywgJHF1ZXJpZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyaWVzID0gJHRoaXMtPmV2YWx1YXRlTWVkaWFRdWVyeSgkcXVlcmllc1syXSk7CgogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoXGNvdW50KCRxdWVyaWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dFF1ZXJ5TGlzdFtdID0gYXJyYXlfc2hpZnQoJHF1ZXJpZXMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRvdXRRdWVyeUxpc3RbXSA9ICRxdWVyeUxpc3RbJGtxbF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dFF1ZXJ5TGlzdDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgbWVkaWEgcXVlcnkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHF1ZXJ5TGlzdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVNZWRpYVF1ZXJ5KCRxdWVyeUxpc3QpCiAgICB7CiAgICAgICAgJHN0YXJ0ICAgPSAnQG1lZGlhICc7CiAgICAgICAgJGRlZmF1bHQgPSB0cmltKCRzdGFydCk7CiAgICAgICAgJG91dCAgICAgPSBbXTsKICAgICAgICAkY3VycmVudCA9ICcnOwoKICAgICAgICBmb3JlYWNoICgkcXVlcnlMaXN0IGFzICRxdWVyeSkgewogICAgICAgICAgICAkdHlwZSA9IG51bGw7CiAgICAgICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICAgICAgJG1lZGlhVHlwZU9ubHkgPSB0cnVlOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHF1ZXJ5IGFzICRxKSB7CiAgICAgICAgICAgICAgICBpZiAoJHFbMF0gIT09IFR5cGU6OlRfTUVESUFfVFlQRSkgewogICAgICAgICAgICAgICAgICAgICRtZWRpYVR5cGVPbmx5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRxdWVyeSBhcyAkcSkgewogICAgICAgICAgICAgICAgc3dpdGNoICgkcVswXSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9NRURJQV9UWVBFOgogICAgICAgICAgICAgICAgICAgICAgICAkbmV3VHlwZSA9IGFycmF5X21hcChbJHRoaXMsICdjb21waWxlVmFsdWUnXSwgXGFycmF5X3NsaWNlKCRxLCAxKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21iaW5pbmcgbm90IGFuZCBhbnl0aGluZyBlbHNlIHRoYW4gbWVkaWEgdHlwZSBpcyB0b28gcmlza3kgYW5kIHNob3VsZCBiZSBhdm9pZGVkCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghICRtZWRpYVR5cGVPbmx5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXGluX2FycmF5KFR5cGU6OlRfTk9ULCAkbmV3VHlwZSkgfHwgKCR0eXBlICYmIFxpbl9hcnJheShUeXBlOjpUX05PVCwgJHR5cGUpICkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFydHMsIGltcGxvZGUoJyAnLCBhcnJheV9maWx0ZXIoJHR5cGUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkcGFydHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcc3RybGVuKCRjdXJyZW50KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnQgLj0gJHRoaXMtPmZvcm1hdHRlci0+dGFnU2VwYXJhdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudCAuPSBpbXBsb2RlKCcgYW5kICcsICRwYXJ0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJHN0YXJ0IC4gJGN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudCA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlICAgID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHMgICA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5ld1R5cGUgPT09IFsnYWxsJ10gJiYgJGRlZmF1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0ID0gJHN0YXJ0IC4gJ2FsbCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCBjYW4gYmUgc2FmZWx5IGlnbm9yZWQgYW5kIG1peGVkIHdpdGggd2hhdGV2ZXIgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5ld1R5cGUgIT09IFsnYWxsJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJHRoaXMtPm1lcmdlTWVkaWFUeXBlcygkdHlwZSwgJG5ld1R5cGUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lcmdlIGZhaWxlZCA6IGlnbm9yZSB0aGlzIHF1ZXJ5IHRoYXQgaXMgbm90IHZhbGlkLCBza2lwIHRvIHRoZSBuZXh0IG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHQgPSAnJzsgLy8gaWYgZXZlcnl0aGluZyBmYWlsLCBubyBAbWVkaWEgYXQgYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICRuZXdUeXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIFR5cGU6OlRfTUVESUFfRVhQUkVTU0lPTjoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRxWzJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAnKCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5jb21waWxlVmFsdWUoJHFbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+Zm9ybWF0dGVyLT5hc3NpZ25TZXBhcmF0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5jb21waWxlVmFsdWUoJHFbMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnKSc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICcoJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcpJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSBUeXBlOjpUX01FRElBX1ZBTFVFOgogICAgICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHFbMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0eXBlKSB7CiAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJ0cywgaW1wbG9kZSgnICcsIGFycmF5X2ZpbHRlcigkdHlwZSkpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEgZW1wdHkoJHBhcnRzKSkgewogICAgICAgICAgICAgICAgaWYgKFxzdHJsZW4oJGN1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnQgLj0gJHRoaXMtPmZvcm1hdHRlci0+dGFnU2VwYXJhdG9yOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjdXJyZW50IC49IGltcGxvZGUoJyBhbmQgJywgJHBhcnRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRjdXJyZW50KSB7CiAgICAgICAgICAgICRvdXRbXSA9ICRzdGFydCAuICRjdXJyZW50OwogICAgICAgIH0KCiAgICAgICAgLy8gbm8gQG1lZGlhIHR5cGUgZXhjZXB0IGFsbCwgYW5kIG5vIGNvbmZsaWN0PwogICAgICAgIGlmICghICRvdXQgJiYgJGRlZmF1bHQpIHsKICAgICAgICAgICAgJG91dFtdID0gJGRlZmF1bHQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIE1lcmdlIGRpcmVjdCByZWxhdGlvbnNoaXBzIGJldHdlZW4gc2VsZWN0b3JzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzZWxlY3RvcnMxCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9yczIKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtZXJnZURpcmVjdFJlbGF0aW9uc2hpcHMoJHNlbGVjdG9yczEsICRzZWxlY3RvcnMyKQogICAgewogICAgICAgIGlmIChlbXB0eSgkc2VsZWN0b3JzMSkgfHwgZW1wdHkoJHNlbGVjdG9yczIpKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheV9tZXJnZSgkc2VsZWN0b3JzMSwgJHNlbGVjdG9yczIpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnQxID0gZW5kKCRzZWxlY3RvcnMxKTsKICAgICAgICAkcGFydDIgPSBlbmQoJHNlbGVjdG9yczIpOwoKICAgICAgICBpZiAoISAkdGhpcy0+aXNJbW1lZGlhdGVSZWxhdGlvbnNoaXBDb21iaW5hdG9yKCRwYXJ0MVswXSkgJiYgJHBhcnQxICE9PSAkcGFydDIpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5X21lcmdlKCRzZWxlY3RvcnMxLCAkc2VsZWN0b3JzMik7CiAgICAgICAgfQoKICAgICAgICAkbWVyZ2VkID0gW107CgogICAgICAgIGRvIHsKICAgICAgICAgICAgJHBhcnQxID0gYXJyYXlfcG9wKCRzZWxlY3RvcnMxKTsKICAgICAgICAgICAgJHBhcnQyID0gYXJyYXlfcG9wKCRzZWxlY3RvcnMyKTsKCiAgICAgICAgICAgIGlmICghICR0aGlzLT5pc0ltbWVkaWF0ZVJlbGF0aW9uc2hpcENvbWJpbmF0b3IoJHBhcnQxWzBdKSAmJiAkcGFydDEgIT09ICRwYXJ0MikgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0ltbWVkaWF0ZVJlbGF0aW9uc2hpcENvbWJpbmF0b3IocmVzZXQoJG1lcmdlZClbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkbWVyZ2VkLCBbJHBhcnQxWzBdIC4gJHBhcnQyWzBdXSk7CiAgICAgICAgICAgICAgICAgICAgJG1lcmdlZCA9IGFycmF5X21lcmdlKCRzZWxlY3RvcnMxLCAkc2VsZWN0b3JzMiwgJG1lcmdlZCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRtZXJnZWQgPSBhcnJheV9tZXJnZSgkc2VsZWN0b3JzMSwgWyRwYXJ0MV0sICRzZWxlY3RvcnMyLCBbJHBhcnQyXSwgJG1lcmdlZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJG1lcmdlZCwgJHBhcnQxKTsKICAgICAgICB9IHdoaWxlICghIGVtcHR5KCRzZWxlY3RvcnMxKSAmJiAhIGVtcHR5KCRzZWxlY3RvcnMyKSk7CgogICAgICAgIHJldHVybiAkbWVyZ2VkOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgbWVkaWEgdHlwZXMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHR5cGUxCiAgICAgKiBAcGFyYW0gYXJyYXkgJHR5cGUyCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtZXJnZU1lZGlhVHlwZXMoJHR5cGUxLCAkdHlwZTIpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCR0eXBlMSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0eXBlMjsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkdHlwZTIpKSB7CiAgICAgICAgICAgIHJldHVybiAkdHlwZTE7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCR0eXBlMSkgPiAxKSB7CiAgICAgICAgICAgICRtMSA9IHN0cnRvbG93ZXIoJHR5cGUxWzBdKTsKICAgICAgICAgICAgJHQxID0gc3RydG9sb3dlcigkdHlwZTFbMV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRtMSA9ICcnOwogICAgICAgICAgICAkdDEgPSBzdHJ0b2xvd2VyKCR0eXBlMVswXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGNvdW50KCR0eXBlMikgPiAxKSB7CiAgICAgICAgICAgICRtMiA9IHN0cnRvbG93ZXIoJHR5cGUyWzBdKTsKICAgICAgICAgICAgJHQyID0gc3RydG9sb3dlcigkdHlwZTJbMV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRtMiA9ICcnOwogICAgICAgICAgICAkdDIgPSBzdHJ0b2xvd2VyKCR0eXBlMlswXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoKCRtMSA9PT0gVHlwZTo6VF9OT1QpIF4gKCRtMiA9PT0gVHlwZTo6VF9OT1QpKSB7CiAgICAgICAgICAgIGlmICgkdDEgPT09ICR0MikgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICAkbTEgPT09IFR5cGU6OlRfTk9UID8gJG0yIDogJG0xLAogICAgICAgICAgICAgICAgJG0xID09PSBUeXBlOjpUX05PVCA/ICR0MiA6ICR0MSwKICAgICAgICAgICAgXTsKICAgICAgICB9CgogICAgICAgIGlmICgkbTEgPT09IFR5cGU6OlRfTk9UICYmICRtMiA9PT0gVHlwZTo6VF9OT1QpIHsKICAgICAgICAgICAgLy8gQ1NTIGhhcyBubyB3YXkgb2YgcmVwcmVzZW50aW5nICJuZWl0aGVyIHNjcmVlbiBub3IgcHJpbnQiCiAgICAgICAgICAgIGlmICgkdDEgIT09ICR0MikgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9OT1QsICR0MV07CiAgICAgICAgfQoKICAgICAgICBpZiAoJHQxICE9PSAkdDIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyB0MSA9PSB0MiwgbmVpdGhlciBtMSBub3IgbTIgYXJlICJub3QiCiAgICAgICAgcmV0dXJuIFtlbXB0eSgkbTEpID8gJG0yIDogJG0xLCAkdDFdOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSBpbXBvcnQ7IHJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgd2FzIHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIGltcG9ydGVkCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyYXdQYXRoCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJG91dAogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbmNlCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlSW1wb3J0KCRyYXdQYXRoLCBPdXRwdXRCbG9jayAkb3V0LCAkb25jZSA9IGZhbHNlKQogICAgewogICAgICAgIGlmICgkcmF3UGF0aFswXSA9PT0gVHlwZTo6VF9TVFJJTkcpIHsKICAgICAgICAgICAgJHBhdGggPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHJhd1BhdGgpOwoKICAgICAgICAgICAgaWYgKHN0cnBvcygkcGF0aCwgJ3VybCgnKSAhPT0gMCAmJiAkZmlsZVBhdGggPSAkdGhpcy0+ZmluZEltcG9ydCgkcGF0aCwgJHRoaXMtPmN1cnJlbnREaXJlY3RvcnkpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+cmVnaXN0ZXJJbXBvcnQoJHRoaXMtPmN1cnJlbnREaXJlY3RvcnksICRwYXRoLCAkZmlsZVBhdGgpOwoKICAgICAgICAgICAgICAgIGlmICghICRvbmNlIHx8ICEgXGluX2FycmF5KCRmaWxlUGF0aCwgJHRoaXMtPmltcG9ydGVkRmlsZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmltcG9ydEZpbGUoJGZpbGVQYXRoLCAkb3V0KTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW1wb3J0ZWRGaWxlc1tdID0gJGZpbGVQYXRoOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+YXBwZW5kUm9vdERpcmVjdGl2ZSgnQGltcG9ydCAnIC4gJHRoaXMtPmNvbXBpbGVJbXBvcnRQYXRoKCRyYXdQYXRoKSAuICc7JywgJG91dCk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHJhd1BhdGhbMF0gPT09IFR5cGU6OlRfTElTVCkgewogICAgICAgICAgICAvLyBoYW5kbGUgYSBsaXN0IG9mIHN0cmluZ3MKICAgICAgICAgICAgaWYgKFxjb3VudCgkcmF3UGF0aFsyXSkgPT09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yZWFjaCAoJHJhd1BhdGhbMl0gYXMgJHBhdGgpIHsKICAgICAgICAgICAgICAgIGlmICgkcGF0aFswXSAhPT0gVHlwZTo6VF9TVFJJTkcpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kUm9vdERpcmVjdGl2ZSgnQGltcG9ydCAnIC4gJHRoaXMtPmNvbXBpbGVJbXBvcnRQYXRoKCRyYXdQYXRoKSAuICc7JywgJG91dCk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yZWFjaCAoJHJhd1BhdGhbMl0gYXMgJHBhdGgpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlSW1wb3J0KCRwYXRoLCAkb3V0LCAkb25jZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmFwcGVuZFJvb3REaXJlY3RpdmUoJ0BpbXBvcnQgJyAuICR0aGlzLT5jb21waWxlSW1wb3J0UGF0aCgkcmF3UGF0aCkgLiAnOycsICRvdXQpOwoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHJhd1BhdGgKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKiBAdGhyb3dzIENvbXBpbGVyRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlSW1wb3J0UGF0aCgkcmF3UGF0aCkKICAgIHsKICAgICAgICAkcGF0aCA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHJhd1BhdGgpOwoKICAgICAgICAvLyBjYXNlIHVybCgpIHdpdGhvdXQgcXVvdGVzIDogc3VwcHJlc3MgXHIgXG4gcmVtYWluaW5nIGluIHRoZSBwYXRoCiAgICAgICAgLy8gaWYgdGhpcyBpcyBhIHJlYWwgc3RyaW5nIHRoZXJlIGNhbiBub3QgYmUgQ1Igb3IgTEYgY2hhcgogICAgICAgIGlmIChzdHJwb3MoJHBhdGgsICd1cmwoJykgPT09IDApIHsKICAgICAgICAgICAgJHBhdGggPSBzdHJfcmVwbGFjZShhcnJheSgiXHIiLCAiXG4iKSwgYXJyYXkoJycsICcgJyksICRwYXRoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGEgZmlsZSBuYW1lIGluIGEgc3RyaW5nLCBzcGFjZXMgc2hvdWxkIGJlIGVzY2FwZWQKICAgICAgICAgICAgJHBhdGggPSAkdGhpcy0+cmVkdWNlKCRyYXdQYXRoKTsKICAgICAgICAgICAgJHBhdGggPSAkdGhpcy0+ZXNjYXBlSW1wb3J0UGF0aFN0cmluZygkcGF0aCk7CiAgICAgICAgICAgICRwYXRoID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhdGgKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqIEB0aHJvd3MgQ29tcGlsZXJFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGVzY2FwZUltcG9ydFBhdGhTdHJpbmcoJHBhdGgpCiAgICB7CiAgICAgICAgc3dpdGNoICgkcGF0aFswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTElTVDoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXRoWzJdIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICAgICAgICAgJHBhdGhbMl1bJGtdID0gJHRoaXMtPmVzY2FwZUltcG9ydFBhdGhTdHJpbmcoJHYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9TVFJJTkc6CiAgICAgICAgICAgICAgICBpZiAoJHBhdGhbMV0pIHsKICAgICAgICAgICAgICAgICAgICAkcGF0aCA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHBhdGgpOwogICAgICAgICAgICAgICAgICAgICRwYXRoID0gc3RyX3JlcGxhY2UoJyAnLCAnXFwgJywgJHBhdGgpOwogICAgICAgICAgICAgICAgICAgICRwYXRoID0gW1R5cGU6OlRfS0VZV09SRCwgJHBhdGhdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBlbmQgYSByb290IGRpcmVjdGl2ZSBsaWtlIEBpbXBvcnQgb3IgQGNoYXJzZXQgYXMgbmVhciBhcyB0aGUgcG9zc2libGUgZnJvbSB0aGUgc291cmNlIGNvZGUKICAgICAqIChrZWVwaW5nIGJlZm9yZSBjb21tZW50cywgQGltcG9ydCBhbmQgQGNoYXJzZXQgY29taW5nIGJlZm9yZSBpbiB0aGUgc291cmNlIGNvZGUpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJG91dAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbGxvd2VkCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcHBlbmRSb290RGlyZWN0aXZlKCRsaW5lLCAkb3V0LCAkYWxsb3dlZCA9IFtUeXBlOjpUX0NPTU1FTlRdKQogICAgewogICAgICAgICRyb290ID0gJG91dDsKCiAgICAgICAgd2hpbGUgKCRyb290LT5wYXJlbnQpIHsKICAgICAgICAgICAgJHJvb3QgPSAkcm9vdC0+cGFyZW50OwogICAgICAgIH0KCiAgICAgICAgJGkgPSAwOwoKICAgICAgICB3aGlsZSAoJGkgPCBcY291bnQoJHJvb3QtPmNoaWxkcmVuKSkgewogICAgICAgICAgICBpZiAoISBpc3NldCgkcm9vdC0+Y2hpbGRyZW5bJGldLT50eXBlKSB8fCAhIFxpbl9hcnJheSgkcm9vdC0+Y2hpbGRyZW5bJGldLT50eXBlLCAkYWxsb3dlZCkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaSsrOwogICAgICAgIH0KCiAgICAgICAgLy8gcmVtb3ZlIGluY29tcGF0aWJsZSBjaGlsZHJlbiBmcm9tIHRoZSBib3R0b20gb2YgdGhlIGxpc3QKICAgICAgICAkc2F2ZUNoaWxkcmVuID0gW107CgogICAgICAgIHdoaWxlICgkaSA8IFxjb3VudCgkcm9vdC0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgICRzYXZlQ2hpbGRyZW5bXSA9IGFycmF5X3BvcCgkcm9vdC0+Y2hpbGRyZW4pOwogICAgICAgIH0KCiAgICAgICAgLy8gaW5zZXJ0IHRoZSBkaXJlY3RpdmUgYXMgYSBjb21tZW50CiAgICAgICAgJGNoaWxkID0gJHRoaXMtPm1ha2VPdXRwdXRCbG9jayhUeXBlOjpUX0NPTU1FTlQpOwogICAgICAgICRjaGlsZC0+bGluZXNbXSAgICAgID0gJGxpbmU7CiAgICAgICAgJGNoaWxkLT5zb3VyY2VOYW1lICAgPSAkdGhpcy0+c291cmNlTmFtZXNbJHRoaXMtPnNvdXJjZUluZGV4XSA/OiAnKHN0ZGluKSc7CiAgICAgICAgJGNoaWxkLT5zb3VyY2VMaW5lICAgPSAkdGhpcy0+c291cmNlTGluZTsKICAgICAgICAkY2hpbGQtPnNvdXJjZUNvbHVtbiA9ICR0aGlzLT5zb3VyY2VDb2x1bW47CgogICAgICAgICRyb290LT5jaGlsZHJlbltdID0gJGNoaWxkOwoKICAgICAgICAvLyByZXB1c2ggY2hpbGRyZW4KICAgICAgICB3aGlsZSAoXGNvdW50KCRzYXZlQ2hpbGRyZW4pKSB7CiAgICAgICAgICAgICRyb290LT5jaGlsZHJlbltdID0gYXJyYXlfcG9wKCRzYXZlQ2hpbGRyZW4pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEFwcGVuZCBsaW5lcyB0byB0aGUgY3VycmVudCBvdXRwdXQgYmxvY2s6CiAgICAgKiBkaXJlY3RseSB0byB0aGUgYmxvY2sgb3IgdGhyb3VnaCBhIGNoaWxkIGlmIG5lY2Vzc2FyeQogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkb3V0CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGluZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXBwZW5kT3V0cHV0TGluZShPdXRwdXRCbG9jayAkb3V0LCAkdHlwZSwgJGxpbmUpCiAgICB7CiAgICAgICAgJG91dFdyaXRlID0gJiRvdXQ7CgogICAgICAgIC8vIGNoZWNrIGlmIGl0J3MgYSBmbGF0IG91dHB1dCBvciBub3QKICAgICAgICBpZiAoXGNvdW50KCRvdXQtPmNoaWxkcmVuKSkgewogICAgICAgICAgICAkbGFzdENoaWxkID0gJiRvdXQtPmNoaWxkcmVuW1xjb3VudCgkb3V0LT5jaGlsZHJlbikgLSAxXTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRsYXN0Q2hpbGQtPmRlcHRoID09PSAkb3V0LT5kZXB0aCAmJgogICAgICAgICAgICAgICAgXGlzX251bGwoJGxhc3RDaGlsZC0+c2VsZWN0b3JzKSAmJgogICAgICAgICAgICAgICAgISBcY291bnQoJGxhc3RDaGlsZC0+Y2hpbGRyZW4pCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJG91dFdyaXRlID0gJGxhc3RDaGlsZDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuZXh0TGluZXMgPSAkdGhpcy0+bWFrZU91dHB1dEJsb2NrKCR0eXBlKTsKICAgICAgICAgICAgICAgICRuZXh0TGluZXMtPnBhcmVudCA9ICRvdXQ7CiAgICAgICAgICAgICAgICAkbmV4dExpbmVzLT5kZXB0aCAgPSAkb3V0LT5kZXB0aDsKCiAgICAgICAgICAgICAgICAkb3V0LT5jaGlsZHJlbltdID0gJG5leHRMaW5lczsKICAgICAgICAgICAgICAgICRvdXRXcml0ZSA9ICYkbmV4dExpbmVzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkb3V0V3JpdGUtPmxpbmVzW10gPSAkbGluZTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgY2hpbGQ7IHJldHVybnMgYSB2YWx1ZSB0byBoYWx0IGV4ZWN1dGlvbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hpbGQKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxOdW1iZXJ8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZUNoaWxkKCRjaGlsZCwgT3V0cHV0QmxvY2sgJG91dCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJGNoaWxkW1BhcnNlcjo6U09VUkNFX0xJTkVdKSkgewogICAgICAgICAgICAkdGhpcy0+c291cmNlSW5kZXggID0gaXNzZXQoJGNoaWxkW1BhcnNlcjo6U09VUkNFX0lOREVYXSkgPyAkY2hpbGRbUGFyc2VyOjpTT1VSQ0VfSU5ERVhdIDogbnVsbDsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZUxpbmUgICA9IGlzc2V0KCRjaGlsZFtQYXJzZXI6OlNPVVJDRV9MSU5FXSkgPyAkY2hpbGRbUGFyc2VyOjpTT1VSQ0VfTElORV0gOiAtMTsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZUNvbHVtbiA9IGlzc2V0KCRjaGlsZFtQYXJzZXI6OlNPVVJDRV9DT0xVTU5dKSA/ICRjaGlsZFtQYXJzZXI6OlNPVVJDRV9DT0xVTU5dIDogLTE7CiAgICAgICAgfSBlbHNlaWYgKFxpc19hcnJheSgkY2hpbGQpICYmIGlzc2V0KCRjaGlsZFsxXS0+c291cmNlTGluZSkgJiYgJGNoaWxkWzFdIGluc3RhbmNlb2YgQmxvY2spIHsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZUluZGV4ICA9ICRjaGlsZFsxXS0+c291cmNlSW5kZXg7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VMaW5lICAgPSAkY2hpbGRbMV0tPnNvdXJjZUxpbmU7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VDb2x1bW4gPSAkY2hpbGRbMV0tPnNvdXJjZUNvbHVtbjsKICAgICAgICB9IGVsc2VpZiAoISBlbXB0eSgkb3V0LT5zb3VyY2VMaW5lKSAmJiAhIGVtcHR5KCRvdXQtPnNvdXJjZU5hbWUpKSB7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VMaW5lICAgPSAkb3V0LT5zb3VyY2VMaW5lOwogICAgICAgICAgICAkc291cmNlSW5kZXggID0gYXJyYXlfc2VhcmNoKCRvdXQtPnNvdXJjZU5hbWUsICR0aGlzLT5zb3VyY2VOYW1lcyk7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VDb2x1bW4gPSAkb3V0LT5zb3VyY2VDb2x1bW47CgogICAgICAgICAgICBpZiAoJHNvdXJjZUluZGV4ID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJHNvdXJjZUluZGV4ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+c291cmNlSW5kZXggPSAkc291cmNlSW5kZXg7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRjaGlsZFswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfU0NTU1BIUF9JTVBPUlRfT05DRToKICAgICAgICAgICAgICAgICRyYXdQYXRoID0gJHRoaXMtPnJlZHVjZSgkY2hpbGRbMV0pOwoKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlSW1wb3J0KCRyYXdQYXRoLCAkb3V0LCB0cnVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0lNUE9SVDoKICAgICAgICAgICAgICAgICRyYXdQYXRoID0gJHRoaXMtPnJlZHVjZSgkY2hpbGRbMV0pOwoKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlSW1wb3J0KCRyYXdQYXRoLCAkb3V0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0RJUkVDVElWRToKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlRGlyZWN0aXZlKCRjaGlsZFsxXSwgJG91dCk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9BVF9ST09UOgogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVBdFJvb3QoJGNoaWxkWzFdKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX01FRElBOgogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVNZWRpYSgkY2hpbGRbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQkxPQ0s6CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUJsb2NrKCRjaGlsZFsxXSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9DSEFSU0VUOgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQ1VTVE9NX1BST1BFUlRZOgogICAgICAgICAgICAgICAgbGlzdCgsICRuYW1lLCAkdmFsdWUpID0gJGNoaWxkOwogICAgICAgICAgICAgICAgJGNvbXBpbGVkTmFtZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJG5hbWUpOwoKICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2YWx1ZSByZWR1Y2VzIHRvIG51bGwgZnJvbSBzb21ldGhpbmcgZWxzZSB0aGVuCiAgICAgICAgICAgICAgICAvLyB0aGUgcHJvcGVydHkgc2hvdWxkIGJlIGRpc2NhcmRlZAogICAgICAgICAgICAgICAgaWYgKCR2YWx1ZVswXSAhPT0gVHlwZTo6VF9OVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPnJlZHVjZSgkdmFsdWUpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlWzBdID09PSBUeXBlOjpUX05VTEwgfHwgJHZhbHVlID09PSBzdGF0aWM6OiRudWxsU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkY29tcGlsZWRWYWx1ZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlKTsKCiAgICAgICAgICAgICAgICAkbGluZSA9ICR0aGlzLT5mb3JtYXR0ZXItPmN1c3RvbVByb3BlcnR5KAogICAgICAgICAgICAgICAgICAgICRjb21waWxlZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgJGNvbXBpbGVkVmFsdWUKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZE91dHB1dExpbmUoJG91dCwgVHlwZTo6VF9BU1NJR04sICRsaW5lKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0FTU0lHTjoKICAgICAgICAgICAgICAgIGxpc3QoLCAkbmFtZSwgJHZhbHVlKSA9ICRjaGlsZDsKCiAgICAgICAgICAgICAgICBpZiAoJG5hbWVbMF0gPT09IFR5cGU6OlRfVkFSSUFCTEUpIHsKICAgICAgICAgICAgICAgICAgICAkZmxhZ3MgICAgID0gaXNzZXQoJGNoaWxkWzNdKSA/ICRjaGlsZFszXSA6IFtdOwogICAgICAgICAgICAgICAgICAgICRpc0RlZmF1bHQgPSBcaW5fYXJyYXkoJyFkZWZhdWx0JywgJGZsYWdzKTsKICAgICAgICAgICAgICAgICAgICAkaXNHbG9iYWwgID0gXGluX2FycmF5KCchZ2xvYmFsJywgJGZsYWdzKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRpc0dsb2JhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0KCRuYW1lWzFdLCAkdGhpcy0+cmVkdWNlKCR2YWx1ZSksIGZhbHNlLCAkdGhpcy0+cm9vdEVudiwgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkc2hvdWxkU2V0ID0gJGlzRGVmYXVsdCAmJgogICAgICAgICAgICAgICAgICAgICAgICAoXGlzX251bGwoJHJlc3VsdCA9ICR0aGlzLT5nZXQoJG5hbWVbMV0sIGZhbHNlKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9PT0gc3RhdGljOjokbnVsbCk7CgogICAgICAgICAgICAgICAgICAgIGlmICghICRpc0RlZmF1bHQgfHwgJHNob3VsZFNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0KCRuYW1lWzFdLCAkdGhpcy0+cmVkdWNlKCR2YWx1ZSksIHRydWUsIG51bGwsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjb21waWxlZE5hbWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRuYW1lKTsKCiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgc2hvcnRoYW5kIHN5bnRheGVzIDogc2l6ZSAvIGxpbmUtaGVpZ2h0Li4uCiAgICAgICAgICAgICAgICBpZiAoXGluX2FycmF5KCRjb21waWxlZE5hbWUsIFsnZm9udCcsICdncmlkLXJvdycsICdncmlkLWNvbHVtbicsICdib3JkZXItcmFkaXVzJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9WQVJJQUJMRSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZm9udCB2YWx1ZSBjb21lcyBmcm9tIHZhcmlhYmxlLCB0aGUgY29udGVudCBpcyBhbHJlYWR5IHJlZHVjZWQKICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGkuZS4sIGZvcm11bGFzIHdlcmUgYWxyZWFkeSBjYWxjdWxhdGVkKSwgc28gd2UgbmVlZCB0aGUgb3JpZ2luYWwgdW5yZWR1Y2VkIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5nZXQoJHZhbHVlWzFdLCB0cnVlLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRzaG9ydGhhbmRWYWx1ZT0mJHZhbHVlOwoKICAgICAgICAgICAgICAgICAgICAkc2hvcnRoYW5kRGl2aWRlck5lZWRzVW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICRtYXhMaXN0RWxlbWVudHMgICAgICAgICAgID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAkbWF4U2hvcnRoYW5kRGl2aWRlcnMgICAgICA9IDE7CgogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoJGNvbXBpbGVkTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdib3JkZXItcmFkaXVzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXhMaXN0RWxlbWVudHMgPSA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNob3J0aGFuZERpdmlkZXJOZWVkc1VuaXQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbXBpbGVkTmFtZSA9PT0gJ2ZvbnQnICYmICR2YWx1ZVswXSA9PT0gVHlwZTo6VF9MSVNUICYmICR2YWx1ZVsxXSA9PT0gJywnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIGNhc2UgaWYgbW9yZSB0aGFuIG9uZSBmb250IGlzIGdpdmVuOiBleGFtcGxlOiAiZm9udDogNDAwIDFlbS8xLjMgYXJpYWwsaGVsdmV0aWNhIgogICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUgZmlyc3QgbGlzdCBlbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICRzaG9ydGhhbmRWYWx1ZT0mJHZhbHVlWzJdWzBdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzaG9ydGhhbmRWYWx1ZVswXSA9PT0gVHlwZTo6VF9FWFBSRVNTSU9OICYmICRzaG9ydGhhbmRWYWx1ZVsxXSA9PT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXZlcnQgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzaG9ydGhhbmREaXZpZGVyTmVlZHNVbml0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGl2aWRlciA9ICRzaG9ydGhhbmRWYWx1ZVszXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRkaXZpZGVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXZpZGVyID0gJHRoaXMtPnJlZHVjZSgkZGl2aWRlciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkaXZpZGVyIGluc3RhbmNlb2YgTnVtYmVyICYmIFxpbnR2YWwoJGRpdmlkZXItPmdldERpbWVuc2lvbigpKSAmJiAkZGl2aWRlci0+dW5pdGxlc3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXZlcnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXZlcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaG9ydGhhbmRWYWx1ZSA9ICR0aGlzLT5leHBUb1N0cmluZygkc2hvcnRoYW5kVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzaG9ydGhhbmRWYWx1ZVswXSA9PT0gVHlwZTo6VF9MSVNUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzaG9ydGhhbmRWYWx1ZVsyXSBhcyAmJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXRlbVswXSA9PT0gVHlwZTo6VF9FWFBSRVNTSU9OICYmICRpdGVtWzFdID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG1heFNob3J0aGFuZERpdmlkZXJzID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV2ZXJ0ID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBsaXN0IG9mIHZhbHVlcyBpcyB0b28gbG9uZywgdGhpcyBoYXMgdG8gYmUgYSBzaG9ydGhhbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBpdCBjb3VsZCBiZSBhIHJlYWwgZGl2aXNpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxpc19udWxsKCRtYXhMaXN0RWxlbWVudHMpIHx8IFxjb3VudCgkc2hvcnRoYW5kVmFsdWVbMl0pIDw9ICRtYXhMaXN0RWxlbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2hvcnRoYW5kRGl2aWRlck5lZWRzVW5pdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXZpZGVyID0gJGl0ZW1bM107CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJGRpdmlkZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXZpZGVyID0gJHRoaXMtPnJlZHVjZSgkZGl2aWRlciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRpdmlkZXIgaW5zdGFuY2VvZiBOdW1iZXIgJiYgXGludHZhbCgkZGl2aWRlci0+Z2V0RGltZW5zaW9uKCkpICYmICRkaXZpZGVyLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXZlcnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcmV2ZXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbSA9ICR0aGlzLT5leHBUb1N0cmluZygkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF4U2hvcnRoYW5kRGl2aWRlcnMtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdmFsdWUgcmVkdWNlcyB0byBudWxsIGZyb20gc29tZXRoaW5nIGVsc2UgdGhlbgogICAgICAgICAgICAgICAgLy8gdGhlIHByb3BlcnR5IHNob3VsZCBiZSBkaXNjYXJkZWQKICAgICAgICAgICAgICAgIGlmICgkdmFsdWVbMF0gIT09IFR5cGU6OlRfTlVMTCkgewogICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5yZWR1Y2UoJHZhbHVlKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9OVUxMIHx8ICR2YWx1ZSA9PT0gc3RhdGljOjokbnVsbFN0cmluZykgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGNvbXBpbGVkVmFsdWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSk7CgogICAgICAgICAgICAgICAgLy8gaWdub3JlIGVtcHR5IHZhbHVlCiAgICAgICAgICAgICAgICBpZiAoXHN0cmxlbigkY29tcGlsZWRWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkbGluZSA9ICR0aGlzLT5mb3JtYXR0ZXItPnByb3BlcnR5KAogICAgICAgICAgICAgICAgICAgICAgICAkY29tcGlsZWROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAkY29tcGlsZWRWYWx1ZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZE91dHB1dExpbmUoJG91dCwgVHlwZTo6VF9BU1NJR04sICRsaW5lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0NPTU1FTlQ6CiAgICAgICAgICAgICAgICBpZiAoJG91dC0+dHlwZSA9PT0gVHlwZTo6VF9ST09UKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVDb21tZW50KCRjaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxpbmUgPSAkdGhpcy0+Y29tcGlsZUNvbW1lbnRWYWx1ZSgkY2hpbGQsIHRydWUpOwogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZE91dHB1dExpbmUoJG91dCwgVHlwZTo6VF9DT01NRU5ULCAkbGluZSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9NSVhJTjoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0ZVTkNUSU9OOgogICAgICAgICAgICAgICAgbGlzdCgsICRibG9jaykgPSAkY2hpbGQ7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGJsb2NrIGluc3RhbmNlb2YgQ2FsbGFibGVCbG9jayk7CiAgICAgICAgICAgICAgICAvLyB0aGUgYmxvY2sgbmVlZCB0byBiZSBhYmxlIHRvIGdvIHVwIHRvIGl0J3MgcGFyZW50IGVudiB0byByZXNvbHZlIHZhcnMKICAgICAgICAgICAgICAgICRibG9jay0+cGFyZW50RW52ID0gJHRoaXMtPmdldFN0b3JlRW52KCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0KHN0YXRpYzo6JG5hbWVzcGFjZXNbJGJsb2NrLT50eXBlXSAuICRibG9jay0+bmFtZSwgJGJsb2NrLCB0cnVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0VYVEVORDoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjaGlsZFsxXSBhcyAkc2VsKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VkU2VsID0gJHRoaXMtPnJlcGxhY2VTZWxmU2VsZWN0b3IoJHNlbCk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkcmVwbGFjZWRTZWwgIT09ICRzZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdQYXJlbnQgc2VsZWN0b3JzIGFyZW5cJ3QgYWxsb3dlZCBoZXJlLicpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHMgPSAkdGhpcy0+ZXZhbFNlbGVjdG9ycyhbJHNlbF0pOwoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcmVzdWx0cyBhcyAkcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcY291bnQoJHJlc3VsdCkgIT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcignY29tcGxleCBzZWxlY3RvcnMgbWF5IG5vdCBiZSBleHRlbmRlZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB1c2UgdGhlIGZpcnN0IG9uZQogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3VsdFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGVjdG9ycyA9ICRvdXQtPnNlbGVjdG9yczsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghICRzZWxlY3RvcnMgJiYgaXNzZXQoJGNoaWxkWydzZWxmUGFyZW50J10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3JzID0gJHRoaXMtPm11bHRpcGx5U2VsZWN0b3JzKCR0aGlzLT5lbnYsICRjaGlsZFsnc2VsZlBhcmVudCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoJHNlbGVjdG9ycyAhPT0gbnVsbCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoXGNvdW50KCRyZXN1bHQpID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50ID0gaW1wbG9kZSgnLCAnLCAkcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmbmFtZSA9ICR0aGlzLT5nZXRQcmV0dHlQYXRoKCR0aGlzLT5zb3VyY2VOYW1lc1skdGhpcy0+c291cmNlSW5kZXhdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lID0gJHRoaXMtPnNvdXJjZUxpbmU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSA8PDxFT0wKb24gbGluZSAkbGluZSBvZiAkZm5hbWU6CkNvbXBvdW5kIHNlbGVjdG9ycyBtYXkgbm8gbG9uZ2VyIGJlIGV4dGVuZGVkLgpDb25zaWRlciBgQGV4dGVuZCAkcmVwbGFjZW1lbnRgIGluc3RlYWQuClNlZSBodHRwOi8vYml0Lmx5L0V4dGVuZENvbXBvdW5kIGZvciBkZXRhaWxzLgpFT0w7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxvZ2dlci0+d2FybigkbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5wdXNoRXh0ZW5kcygkcmVzdWx0LCAkc2VsZWN0b3JzLCAkY2hpbGQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0lGOgogICAgICAgICAgICAgICAgbGlzdCgsICRpZikgPSAkY2hpbGQ7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGlmIGluc3RhbmNlb2YgSWZCbG9jayk7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pc1RydXRoeSgkdGhpcy0+cmVkdWNlKCRpZi0+Y29uZCwgdHJ1ZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jb21waWxlQ2hpbGRyZW4oJGlmLT5jaGlsZHJlbiwgJG91dCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGlmLT5jYXNlcyBhcyAkY2FzZSkgewogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJGNhc2UgaW5zdGFuY2VvZiBFbHNlQmxvY2sgfHwKICAgICAgICAgICAgICAgICAgICAgICAgJGNhc2UgaW5zdGFuY2VvZiBFbHNlaWZCbG9jayAmJiAkdGhpcy0+aXNUcnV0aHkoJHRoaXMtPnJlZHVjZSgkY2FzZS0+Y29uZCkpCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuKCRjYXNlLT5jaGlsZHJlbiwgJG91dCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRUFDSDoKICAgICAgICAgICAgICAgIGxpc3QoLCAkZWFjaCkgPSAkY2hpbGQ7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGVhY2ggaW5zdGFuY2VvZiBFYWNoQmxvY2spOwoKICAgICAgICAgICAgICAgICRsaXN0ID0gJHRoaXMtPmNvZXJjZUxpc3QoJHRoaXMtPnJlZHVjZSgkZWFjaC0+bGlzdCksICcsJywgdHJ1ZSk7CgogICAgICAgICAgICAgICAgJHRoaXMtPnB1c2hFbnYoKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbGlzdFsyXSBhcyAkaXRlbSkgewogICAgICAgICAgICAgICAgICAgIGlmIChcY291bnQoJGVhY2gtPnZhcnMpID09PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXQoJGVhY2gtPnZhcnNbMF0sICRpdGVtLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBsaXN0KCwsICR2YWx1ZXMpID0gJHRoaXMtPmNvZXJjZUxpc3QoJGl0ZW0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGVhY2gtPnZhcnMgYXMgJGkgPT4gJHZhcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldCgkdmFyLCBpc3NldCgkdmFsdWVzWyRpXSkgPyAkdmFsdWVzWyRpXSA6IHN0YXRpYzo6JG51bGwsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkcmV0ID0gJHRoaXMtPmNvbXBpbGVDaGlsZHJlbigkZWFjaC0+Y2hpbGRyZW4sICRvdXQpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHJldCkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3RvcmUgPSAkdGhpcy0+ZW52LT5zdG9yZTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YmFja1Byb3BhZ2F0ZUVudigkc3RvcmUsICRlYWNoLT52YXJzKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmV0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzdG9yZSA9ICR0aGlzLT5lbnYtPnN0b3JlOwogICAgICAgICAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgICAgICAgICAgICAgJHRoaXMtPmJhY2tQcm9wYWdhdGVFbnYoJHN0b3JlLCAkZWFjaC0+dmFycyk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfV0hJTEU6CiAgICAgICAgICAgICAgICBsaXN0KCwgJHdoaWxlKSA9ICRjaGlsZDsKICAgICAgICAgICAgICAgIGFzc2VydCgkd2hpbGUgaW5zdGFuY2VvZiBXaGlsZUJsb2NrKTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoJHRoaXMtPmlzVHJ1dGh5KCR0aGlzLT5yZWR1Y2UoJHdoaWxlLT5jb25kLCB0cnVlKSkpIHsKICAgICAgICAgICAgICAgICAgICAkcmV0ID0gJHRoaXMtPmNvbXBpbGVDaGlsZHJlbigkd2hpbGUtPmNoaWxkcmVuLCAkb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRk9SOgogICAgICAgICAgICAgICAgbGlzdCgsICRmb3IpID0gJGNoaWxkOwogICAgICAgICAgICAgICAgYXNzZXJ0KCRmb3IgaW5zdGFuY2VvZiBGb3JCbG9jayk7CgogICAgICAgICAgICAgICAgJHN0YXJ0TnVtYmVyID0gJHRoaXMtPmFzc2VydE51bWJlcigkdGhpcy0+cmVkdWNlKCRmb3ItPnN0YXJ0LCB0cnVlKSk7CiAgICAgICAgICAgICAgICAkZW5kTnVtYmVyID0gJHRoaXMtPmFzc2VydE51bWJlcigkdGhpcy0+cmVkdWNlKCRmb3ItPmVuZCwgdHJ1ZSkpOwoKICAgICAgICAgICAgICAgICRzdGFydCA9ICR0aGlzLT5hc3NlcnRJbnRlZ2VyKCRzdGFydE51bWJlcik7CgogICAgICAgICAgICAgICAgJG51bWVyYXRvclVuaXRzID0gJHN0YXJ0TnVtYmVyLT5nZXROdW1lcmF0b3JVbml0cygpOwogICAgICAgICAgICAgICAgJGRlbm9taW5hdG9yVW5pdHMgPSAkc3RhcnROdW1iZXItPmdldERlbm9taW5hdG9yVW5pdHMoKTsKCiAgICAgICAgICAgICAgICAkZW5kID0gJHRoaXMtPmFzc2VydEludGVnZXIoJGVuZE51bWJlci0+Y29lcmNlKCRudW1lcmF0b3JVbml0cywgJGRlbm9taW5hdG9yVW5pdHMpKTsKCiAgICAgICAgICAgICAgICAkZCA9ICRzdGFydCA8ICRlbmQgPyAxIDogLTE7CgogICAgICAgICAgICAgICAgJHRoaXMtPnB1c2hFbnYoKTsKCiAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAoISAkZm9yLT51bnRpbCAmJiAkc3RhcnQgLSAkZCA9PSAkZW5kKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAoJGZvci0+dW50aWwgJiYgJHN0YXJ0ID09ICRlbmQpCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldCgkZm9yLT52YXIsIG5ldyBOdW1iZXIoJHN0YXJ0LCAkbnVtZXJhdG9yVW5pdHMsICRkZW5vbWluYXRvclVuaXRzKSk7CiAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ICs9ICRkOwoKICAgICAgICAgICAgICAgICAgICAkcmV0ID0gJHRoaXMtPmNvbXBpbGVDaGlsZHJlbigkZm9yLT5jaGlsZHJlbiwgJG91dCk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkcmV0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9yZSA9ICR0aGlzLT5lbnYtPnN0b3JlOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cG9wRW52KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5iYWNrUHJvcGFnYXRlRW52KCRzdG9yZSwgWyRmb3ItPnZhcl0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRzdG9yZSA9ICR0aGlzLT5lbnYtPnN0b3JlOwogICAgICAgICAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgICAgICAgICAgICAgJHRoaXMtPmJhY2tQcm9wYWdhdGVFbnYoJHN0b3JlLCBbJGZvci0+dmFyXSk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfUkVUVVJOOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yZWR1Y2UoJGNoaWxkWzFdLCB0cnVlKTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9ORVNURURfUFJPUEVSVFk6CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZU5lc3RlZFByb3BlcnRpZXNCbG9jaygkY2hpbGRbMV0sICRvdXQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfSU5DTFVERToKICAgICAgICAgICAgICAgIC8vIGluY2x1ZGluZyBhIG1peGluCiAgICAgICAgICAgICAgICBsaXN0KCwgJG5hbWUsICRhcmdWYWx1ZXMsICRjb250ZW50LCAkYXJnVXNpbmcpID0gJGNoaWxkOwoKICAgICAgICAgICAgICAgICRtaXhpbiA9ICR0aGlzLT5nZXQoc3RhdGljOjokbmFtZXNwYWNlc1snbWl4aW4nXSAuICRuYW1lLCBmYWxzZSk7CgogICAgICAgICAgICAgICAgaWYgKCEgJG1peGluKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCJVbmRlZmluZWQgbWl4aW4gJG5hbWUiKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBhc3NlcnQoJG1peGluIGluc3RhbmNlb2YgQ2FsbGFibGVCbG9jayk7CgogICAgICAgICAgICAgICAgJGNhbGxpbmdTY29wZSA9ICR0aGlzLT5nZXRTdG9yZUVudigpOwoKICAgICAgICAgICAgICAgIC8vIHB1c2ggc2NvcGUsIGFwcGx5IGFyZ3MKICAgICAgICAgICAgICAgICR0aGlzLT5wdXNoRW52KCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZW52LT5kZXB0aC0tOwoKICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIHBhcmVudCBzZWxlY3RvcnMgaW4gdGhlIGVudiB0byBiZSBhYmxlIHRvIGtub3cgd2hhdCAnJicgcmVmZXJzIHRvIGluIHRoZSBtaXhpbgogICAgICAgICAgICAgICAgLy8gYW5kIGFzc2lnbiB0aGlzIGZha2UgcGFyZW50IHRvIGNoaWxkcwogICAgICAgICAgICAgICAgJHNlbGZQYXJlbnQgPSBudWxsOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2hpbGRbJ3NlbGZQYXJlbnQnXSkgJiYgJGNoaWxkWydzZWxmUGFyZW50J10gaW5zdGFuY2VvZiBCbG9jayAmJiBpc3NldCgkY2hpbGRbJ3NlbGZQYXJlbnQnXS0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICRzZWxmUGFyZW50ID0gJGNoaWxkWydzZWxmUGFyZW50J107CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRwYXJlbnRTZWxlY3RvcnMgPSAkdGhpcy0+bXVsdGlwbHlTZWxlY3RvcnMoJHRoaXMtPmVudik7CgogICAgICAgICAgICAgICAgICAgIGlmICgkcGFyZW50U2VsZWN0b3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJlbnQgPSBuZXcgQmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmVudC0+c2VsZWN0b3JzID0gJHBhcmVudFNlbGVjdG9yczsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRtaXhpbi0+Y2hpbGRyZW4gYXMgJGsgPT4gJGNoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGNoaWxkWzFdKSAmJiAkY2hpbGRbMV0gaW5zdGFuY2VvZiBCbG9jaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtaXhpbi0+Y2hpbGRyZW5bJGtdWzFdLT5wYXJlbnQgPSAkcGFyZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGNsb25lIHRoZSBzdG9yZWQgY29udGVudCB0byBub3QgaGF2ZSBpdHMgc2NvcGUgc3BvaWxlZCBieSBhIGZ1cnRoZXIgY2FsbCB0byB0aGUgc2FtZSBtaXhpbgogICAgICAgICAgICAgICAgLy8gaS5lLiwgcmVjdXJzaXZlIEBpbmNsdWRlIG9mIHRoZSBzYW1lIG1peGluCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGNvbnRlbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvcHlDb250ZW50ID0gY2xvbmUgJGNvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgJGNvcHlDb250ZW50LT5zY29wZSA9IGNsb25lICRjYWxsaW5nU2NvcGU7CgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRSYXcoc3RhdGljOjokbmFtZXNwYWNlc1snc3BlY2lhbCddIC4gJ2NvbnRlbnQnLCAkY29weUNvbnRlbnQsICR0aGlzLT5lbnYpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0UmF3KHN0YXRpYzo6JG5hbWVzcGFjZXNbJ3NwZWNpYWwnXSAuICdjb250ZW50JywgbnVsbCwgJHRoaXMtPmVudik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgInVzaW5nIiBhcmd1bWVudCBsaXN0IGZvciBhcHBseWluZyBpdCB0byB3aGVuICJAY29udGVudCIgaXMgaW52b2tlZAogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRhcmdVc2luZykpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0UmF3KHN0YXRpYzo6JG5hbWVzcGFjZXNbJ3NwZWNpYWwnXSAuICd1c2luZycsICRhcmdVc2luZywgJHRoaXMtPmVudik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRSYXcoc3RhdGljOjokbmFtZXNwYWNlc1snc3BlY2lhbCddIC4gJ3VzaW5nJywgbnVsbCwgJHRoaXMtPmVudik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRtaXhpbi0+YXJncykpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YXBwbHlBcmd1bWVudHMoJG1peGluLT5hcmdzLCAkYXJnVmFsdWVzKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+ZW52LT5tYXJrZXIgPSAnbWl4aW4nOwoKICAgICAgICAgICAgICAgIGlmICghIGVtcHR5KCRtaXhpbi0+cGFyZW50RW52KSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lbnYtPmRlY2xhcmF0aW9uU2NvcGVQYXJlbnQgPSAkbWl4aW4tPnBhcmVudEVudjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCJAbWl4aW4gJG5hbWUoKSB3aXRob3V0IHBhcmVudEVudiIpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlQ2hpbGRyZW5Ob1JldHVybigkbWl4aW4tPmNoaWxkcmVuLCAkb3V0LCAkc2VsZlBhcmVudCwgJHRoaXMtPmVudi0+bWFya2VyIC4gJyAnIC4gJG5hbWUpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5wb3BFbnYoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX01JWElOX0NPTlRFTlQ6CiAgICAgICAgICAgICAgICAkZW52ICAgICAgICA9IGlzc2V0KCR0aGlzLT5zdG9yZUVudikgPyAkdGhpcy0+c3RvcmVFbnYgOiAkdGhpcy0+ZW52OwogICAgICAgICAgICAgICAgJGNvbnRlbnQgICAgPSAkdGhpcy0+Z2V0KHN0YXRpYzo6JG5hbWVzcGFjZXNbJ3NwZWNpYWwnXSAuICdjb250ZW50JywgZmFsc2UsICRlbnYpOwogICAgICAgICAgICAgICAgJGFyZ1VzaW5nICAgPSAkdGhpcy0+Z2V0KHN0YXRpYzo6JG5hbWVzcGFjZXNbJ3NwZWNpYWwnXSAuICd1c2luZycsIGZhbHNlLCAkZW52KTsKICAgICAgICAgICAgICAgICRhcmdDb250ZW50ID0gJGNoaWxkWzFdOwoKICAgICAgICAgICAgICAgIGlmICghICRjb250ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHN0b3JlRW52ID0gJHRoaXMtPnN0b3JlRW52OwogICAgICAgICAgICAgICAgJHZhcnNVc2luZyA9IFtdOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkYXJnVXNpbmcpICYmIGlzc2V0KCRhcmdDb250ZW50KSkgewogICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgYXJndW1lbnRzIHByb3ZpZGVkIGZvciB0aGUgY29udGVudCB3aXRoIHRoZSBuYW1lcyBwcm92aWRlZCBpbiB0aGUgInVzaW5nIiBhcmd1bWVudCBsaXN0CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0b3JlRW52ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAkdmFyc1VzaW5nID0gJHRoaXMtPmFwcGx5QXJndW1lbnRzKCRhcmdVc2luZywgJGFyZ0NvbnRlbnQsIGZhbHNlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyByZXN0b3JlIHRoZSBzY29wZSBmcm9tIHRoZSBAY29udGVudAogICAgICAgICAgICAgICAgJHRoaXMtPnN0b3JlRW52ID0gJGNvbnRlbnQtPnNjb3BlOwoKICAgICAgICAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFycyBmcm9tIHVzaW5nIGlmIGFueQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhcnNVc2luZyBhcyAkbmFtZSA9PiAkdmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldCgkbmFtZSwgJHZhbCwgdHJ1ZSwgJHRoaXMtPnN0b3JlRW52KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuTm9SZXR1cm4oJGNvbnRlbnQtPmNoaWxkcmVuLCAkb3V0KTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+c3RvcmVFbnYgPSAkc3RvcmVFbnY7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9ERUJVRzoKICAgICAgICAgICAgICAgIGxpc3QoLCAkdmFsdWUpID0gJGNoaWxkOwoKICAgICAgICAgICAgICAgICRmbmFtZSA9ICR0aGlzLT5nZXRQcmV0dHlQYXRoKCR0aGlzLT5zb3VyY2VOYW1lc1skdGhpcy0+c291cmNlSW5kZXhdKTsKICAgICAgICAgICAgICAgICRsaW5lICA9ICR0aGlzLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvbXBpbGVEZWJ1Z1ZhbHVlKCR2YWx1ZSk7CgogICAgICAgICAgICAgICAgJHRoaXMtPmxvZ2dlci0+ZGVidWcoIiRmbmFtZTokbGluZSBERUJVRzogJHZhbHVlIik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9XQVJOOgogICAgICAgICAgICAgICAgbGlzdCgsICR2YWx1ZSkgPSAkY2hpbGQ7CgogICAgICAgICAgICAgICAgJGZuYW1lID0gJHRoaXMtPmdldFByZXR0eVBhdGgoJHRoaXMtPnNvdXJjZU5hbWVzWyR0aGlzLT5zb3VyY2VJbmRleF0pOwogICAgICAgICAgICAgICAgJGxpbmUgID0gJHRoaXMtPnNvdXJjZUxpbmU7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29tcGlsZURlYnVnVmFsdWUoJHZhbHVlKTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+bG9nZ2VyLT53YXJuKCIkdmFsdWVcbiAgICAgICAgIG9uIGxpbmUgJGxpbmUgb2YgJGZuYW1lIik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9FUlJPUjoKICAgICAgICAgICAgICAgIGxpc3QoLCAkdmFsdWUpID0gJGNoaWxkOwoKICAgICAgICAgICAgICAgICRmbmFtZSA9ICR0aGlzLT5nZXRQcmV0dHlQYXRoKCR0aGlzLT5zb3VyY2VOYW1lc1skdGhpcy0+c291cmNlSW5kZXhdKTsKICAgICAgICAgICAgICAgICRsaW5lICA9ICR0aGlzLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdGhpcy0+cmVkdWNlKCR2YWx1ZSwgdHJ1ZSkpOwoKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiRmlsZSAkZm5hbWUgb24gbGluZSAkbGluZSBFUlJPUjogJHZhbHVlXG4iKTsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoInVua25vd24gY2hpbGQgdHlwZTogJGNoaWxkWzBdIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZHVjZSBleHByZXNzaW9uIHRvIHN0cmluZwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkZXhwCiAgICAgKiBAcGFyYW0gYm9vbCAka2VlcFBhcmVucwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4cFRvU3RyaW5nKCRleHAsICRrZWVwUGFyZW5zID0gZmFsc2UpCiAgICB7CiAgICAgICAgbGlzdCgsICRvcCwgJGxlZnQsICRyaWdodCwgJGluUGFyZW5zLCAkd2hpdGVMZWZ0LCAkd2hpdGVSaWdodCkgPSAkZXhwOwoKICAgICAgICAkY29udGVudCA9IFtdOwoKICAgICAgICBpZiAoJGtlZXBQYXJlbnMgJiYgJGluUGFyZW5zKSB7CiAgICAgICAgICAgICRjb250ZW50W10gPSAnKCc7CiAgICAgICAgfQoKICAgICAgICAkY29udGVudFtdID0gJHRoaXMtPnJlZHVjZSgkbGVmdCk7CgogICAgICAgIGlmICgkd2hpdGVMZWZ0KSB7CiAgICAgICAgICAgICRjb250ZW50W10gPSAnICc7CiAgICAgICAgfQoKICAgICAgICAkY29udGVudFtdID0gJG9wOwoKICAgICAgICBpZiAoJHdoaXRlUmlnaHQpIHsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICcgJzsKICAgICAgICB9CgogICAgICAgICRjb250ZW50W10gPSAkdGhpcy0+cmVkdWNlKCRyaWdodCk7CgogICAgICAgIGlmICgka2VlcFBhcmVucyAmJiAkaW5QYXJlbnMpIHsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICcpJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9TVFJJTkcsICcnLCAkY29udGVudF07CiAgICB9CgogICAgLyoqCiAgICAgKiBJcyB0cnV0aHk/CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzVHJ1dGh5KCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJHZhbHVlICE9PSBzdGF0aWM6OiRmYWxzZSAmJiAkdmFsdWUgIT09IHN0YXRpYzo6JG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBJcyB0aGUgdmFsdWUgYSBkaXJlY3QgcmVsYXRpb25zaGlwIGNvbWJpbmF0b3I/CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzSW1tZWRpYXRlUmVsYXRpb25zaGlwQ29tYmluYXRvcigkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZSA9PT0gJz4nIHx8ICR2YWx1ZSA9PT0gJysnIHx8ICR2YWx1ZSA9PT0gJ34nOwogICAgfQoKICAgIC8qKgogICAgICogU2hvdWxkICR2YWx1ZSBjYXVzZSBpdHMgb3BlcmFuZCB0byBldmFsCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2hvdWxkRXZhbCgkdmFsdWUpCiAgICB7CiAgICAgICAgc3dpdGNoICgkdmFsdWVbMF0pIHsKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0VYUFJFU1NJT046CiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlWzFdID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNob3VsZEV2YWwoJHZhbHVlWzJdKSB8fCAkdGhpcy0+c2hvdWxkRXZhbCgkdmFsdWVbM10pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGZhbGwtdGhydQogICAgICAgICAgICBjYXNlIFR5cGU6OlRfVkFSSUFCTEU6CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9GVU5DVElPTl9DQUxMOgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgdmFsdWUKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAkaW5FeHAKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVkdWNlKCR2YWx1ZSwgJGluRXhwID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkdmFsdWVbMF0pIHsKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0VYUFJFU1NJT046CiAgICAgICAgICAgICAgICBsaXN0KCwgJG9wLCAkbGVmdCwgJHJpZ2h0LCAkaW5QYXJlbnMpID0gJHZhbHVlOwoKICAgICAgICAgICAgICAgICRvcE5hbWUgPSBpc3NldChzdGF0aWM6OiRvcGVyYXRvck5hbWVzWyRvcF0pID8gc3RhdGljOjokb3BlcmF0b3JOYW1lc1skb3BdIDogJG9wOwogICAgICAgICAgICAgICAgJGluRXhwID0gJGluRXhwIHx8ICR0aGlzLT5zaG91bGRFdmFsKCRsZWZ0KSB8fCAkdGhpcy0+c2hvdWxkRXZhbCgkcmlnaHQpOwoKICAgICAgICAgICAgICAgICRsZWZ0ID0gJHRoaXMtPnJlZHVjZSgkbGVmdCwgdHJ1ZSk7CgogICAgICAgICAgICAgICAgaWYgKCRvcCAhPT0gJ2FuZCcgJiYgJG9wICE9PSAnb3InKSB7CiAgICAgICAgICAgICAgICAgICAgJHJpZ2h0ID0gJHRoaXMtPnJlZHVjZSgkcmlnaHQsIHRydWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogbG9va3MgbGlrZSBjc3Mgc2hvcnRoYW5kCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJG9wTmFtZSA9PSAnZGl2JyAmJiAhICRpblBhcmVucyAmJiAhICRpbkV4cCAmJgogICAgICAgICAgICAgICAgICAgICgoJHJpZ2h0WzBdICE9PSBUeXBlOjpUX05VTUJFUiAmJiBpc3NldCgkcmlnaHRbMl0pICYmICRyaWdodFsyXSAhPSAnJykgfHwKICAgICAgICAgICAgICAgICAgICAoJHJpZ2h0WzBdID09PSBUeXBlOjpUX05VTUJFUiAmJiAhICRyaWdodC0+dW5pdGxlc3MoKSkpCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmV4cFRvU3RyaW5nKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxlZnQgID0gJHRoaXMtPmNvZXJjZUZvckV4cHJlc3Npb24oJGxlZnQpOwogICAgICAgICAgICAgICAgJHJpZ2h0ID0gJHRoaXMtPmNvZXJjZUZvckV4cHJlc3Npb24oJHJpZ2h0KTsKICAgICAgICAgICAgICAgICRsdHlwZSA9ICRsZWZ0WzBdOwogICAgICAgICAgICAgICAgJHJ0eXBlID0gJHJpZ2h0WzBdOwoKICAgICAgICAgICAgICAgICR1Y09wTmFtZSA9IHVjZmlyc3QoJG9wTmFtZSk7CiAgICAgICAgICAgICAgICAkdWNMVHlwZSAgPSB1Y2ZpcnN0KCRsdHlwZSk7CiAgICAgICAgICAgICAgICAkdWNSVHlwZSAgPSB1Y2ZpcnN0KCRydHlwZSk7CgogICAgICAgICAgICAgICAgJHNob3VsZEV2YWwgPSAkaW5QYXJlbnMgfHwgJGluRXhwOwoKICAgICAgICAgICAgICAgIC8vIHRoaXMgdHJpZXM6CiAgICAgICAgICAgICAgICAvLyAxLiBvcFtvcCBuYW1lXVtsZWZ0IHR5cGVdW3JpZ2h0IHR5cGVdCiAgICAgICAgICAgICAgICAvLyAyLiBvcFtsZWZ0IHR5cGVdW3JpZ2h0IHR5cGVdIChwYXNzaW5nIHRoZSBvcCBhcyBmaXJzdCBhcmcpCiAgICAgICAgICAgICAgICAvLyAzLiBvcFtvcCBuYW1lXQogICAgICAgICAgICAgICAgaWYgKFxpc19jYWxsYWJsZShbJHRoaXMsICRmbiA9ICJvcHskdWNPcE5hbWV9eyR1Y0xUeXBlfXskdWNSVHlwZX0iXSkpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0ID0gJHRoaXMtPiRmbigkbGVmdCwgJHJpZ2h0LCAkc2hvdWxkRXZhbCk7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoXGlzX2NhbGxhYmxlKFskdGhpcywgJGZuID0gIm9weyR1Y0xUeXBlfXskdWNSVHlwZX0iXSkpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0ID0gJHRoaXMtPiRmbigkb3AsICRsZWZ0LCAkcmlnaHQsICRzaG91bGRFdmFsKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChcaXNfY2FsbGFibGUoWyR0aGlzLCAkZm4gPSAib3B7JHVjT3BOYW1lfSJdKSkgewogICAgICAgICAgICAgICAgICAgICRvdXQgPSAkdGhpcy0+JGZuKCRsZWZ0LCAkcmlnaHQsICRzaG91bGRFdmFsKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRvdXQpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRvdXQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5leHBUb1N0cmluZygkdmFsdWUpOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1VOQVJZOgogICAgICAgICAgICAgICAgbGlzdCgsICRvcCwgJGV4cCwgJGluUGFyZW5zKSA9ICR2YWx1ZTsKCiAgICAgICAgICAgICAgICAkaW5FeHAgPSAkaW5FeHAgfHwgJHRoaXMtPnNob3VsZEV2YWwoJGV4cCk7CiAgICAgICAgICAgICAgICAkZXhwID0gJHRoaXMtPnJlZHVjZSgkZXhwKTsKCiAgICAgICAgICAgICAgICBpZiAoJGV4cCBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoJG9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJysnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRleHA7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICctJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZXhwLT51bmFyeU1pbnVzKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkb3AgPT09ICdub3QnKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRpbkV4cCB8fCAkaW5QYXJlbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRleHAgPT09IHN0YXRpYzo6JGZhbHNlIHx8ICRleHAgPT09IHN0YXRpYzo6JG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiR0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljOjokZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb3AgPSAkb3AgLiAnICc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIFtUeXBlOjpUX1NUUklORywgJycsIFskb3AsICRleHBdXTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9WQVJJQUJMRToKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVkdWNlKCR0aGlzLT5nZXQoJHZhbHVlWzFdKSk7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTElTVDoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZVsyXSBhcyAmJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbSA9ICR0aGlzLT5yZWR1Y2UoJGl0ZW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5zZXQoJGl0ZW0pOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdmFsdWVbM10pICYmIFxpc19hcnJheSgkdmFsdWVbM10pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlWzNdIGFzICYkaXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbSA9ICR0aGlzLT5yZWR1Y2UoJGl0ZW0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB1bnNldCgkaXRlbSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9NQVA6CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVbMV0gYXMgJiRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgJGl0ZW0gPSAkdGhpcy0+cmVkdWNlKCRpdGVtKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVbMl0gYXMgJiRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgJGl0ZW0gPSAkdGhpcy0+cmVkdWNlKCRpdGVtKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NUUklORzoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZVsyXSBhcyAmJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRpdGVtKSB8fCAkaXRlbSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbSA9ICR0aGlzLT5yZWR1Y2UoJGl0ZW0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0lOVEVSUE9MQVRFOgogICAgICAgICAgICAgICAgJHZhbHVlWzFdID0gJHRoaXMtPnJlZHVjZSgkdmFsdWVbMV0pOwoKICAgICAgICAgICAgICAgIGlmICgkaW5FeHApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfS0VZV09SRCwgJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdmFsdWUsIGZhbHNlKV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9GVU5DVElPTl9DQUxMOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5mbmNhbGwoJHZhbHVlWzFdLCAkdmFsdWVbMl0pOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NFTEY6CiAgICAgICAgICAgICAgICAkc2VsZlBhcmVudCA9ICEgZW1wdHkoJHRoaXMtPmVudi0+YmxvY2stPnNlbGZQYXJlbnQpID8gJHRoaXMtPmVudi0+YmxvY2stPnNlbGZQYXJlbnQgOiBudWxsOwogICAgICAgICAgICAgICAgJHNlbGZTZWxlY3RvciA9ICR0aGlzLT5tdWx0aXBseVNlbGVjdG9ycygkdGhpcy0+ZW52LCAkc2VsZlBhcmVudCk7CiAgICAgICAgICAgICAgICAkc2VsZlNlbGVjdG9yID0gJHRoaXMtPmNvbGxhcHNlU2VsZWN0b3JzQXNMaXN0KCRzZWxmU2VsZWN0b3IpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkc2VsZlNlbGVjdG9yOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRnVuY3Rpb24gY2FsbGVyCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xhcnJheSAkZnVuY3Rpb25SZWZlcmVuY2UKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgJGFyZ1ZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8TnVtYmVyCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmbmNhbGwoJGZ1bmN0aW9uUmVmZXJlbmNlLCAkYXJnVmFsdWVzKQogICAgewogICAgICAgIC8vIGEgc3RyaW5nIG1lYW5zIHRoaXMgaXMgYSBzdGF0aWMgaGFyZCByZWZlcmVuY2UgY29taW5nIGZyb20gdGhlIHBhcnNpbmcKICAgICAgICBpZiAoaXNfc3RyaW5nKCRmdW5jdGlvblJlZmVyZW5jZSkpIHsKICAgICAgICAgICAgJG5hbWUgPSAkZnVuY3Rpb25SZWZlcmVuY2U7CgogICAgICAgICAgICAkZnVuY3Rpb25SZWZlcmVuY2UgPSAkdGhpcy0+Z2V0RnVuY3Rpb25SZWZlcmVuY2UoJG5hbWUpOwogICAgICAgICAgICBpZiAoJGZ1bmN0aW9uUmVmZXJlbmNlID09PSBzdGF0aWM6OiRudWxsIHx8ICRmdW5jdGlvblJlZmVyZW5jZVswXSAhPT0gVHlwZTo6VF9GVU5DVElPTl9SRUZFUkVOQ0UpIHsKICAgICAgICAgICAgICAgICRmdW5jdGlvblJlZmVyZW5jZSA9IFtUeXBlOjpUX0ZVTkNUSU9OLCAkbmFtZSwgW1R5cGU6OlRfTElTVCwgJywnLCBbXV1dOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBhIGZ1bmN0aW9uIHR5cGUgbWVhbnMgd2UganVzdCB3YW50IGEgcGxhaW4gY3NzIGZ1bmN0aW9uIGNhbGwKICAgICAgICBpZiAoJGZ1bmN0aW9uUmVmZXJlbmNlWzBdID09PSBUeXBlOjpUX0ZVTkNUSU9OKSB7CiAgICAgICAgICAgIC8vIGZvciBDU1MgZnVuY3Rpb25zLCBzaW1wbHkgZmxhdHRlbiB0aGUgYXJndW1lbnRzIGludG8gYSBsaXN0CiAgICAgICAgICAgICRsaXN0QXJncyA9IFtdOwoKICAgICAgICAgICAgZm9yZWFjaCAoKGFycmF5KSAkYXJnVmFsdWVzIGFzICRhcmcpIHsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkYXJnWzBdKSB8fCBjb3VudCgkYXJnVmFsdWVzKSA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgICRsaXN0QXJnc1tdID0gJHRoaXMtPnJlZHVjZSgkdGhpcy0+c3RyaW5naWZ5Rm5jYWxsQXJncygkYXJnWzFdKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9GVU5DVElPTiwgJGZ1bmN0aW9uUmVmZXJlbmNlWzFdLCBbVHlwZTo6VF9MSVNULCAnLCcsICRsaXN0QXJnc11dOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmdW5jdGlvblJlZmVyZW5jZSA9PT0gc3RhdGljOjokbnVsbCB8fCAkZnVuY3Rpb25SZWZlcmVuY2VbMF0gIT09IFR5cGU6OlRfRlVOQ1RJT05fUkVGRVJFTkNFKSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRkZWZhdWx0VmFsdWU7CiAgICAgICAgfQoKCiAgICAgICAgc3dpdGNoICgkZnVuY3Rpb25SZWZlcmVuY2VbMV0pIHsKICAgICAgICAgICAgLy8gU0NTUyBAZnVuY3Rpb24KICAgICAgICAgICAgY2FzZSAnc2Nzcyc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNhbGxTY3NzRnVuY3Rpb24oJGZ1bmN0aW9uUmVmZXJlbmNlWzNdLCAkYXJnVmFsdWVzKTsKCiAgICAgICAgICAgIC8vIG5hdGl2ZSBQSFAgZnVuY3Rpb25zCiAgICAgICAgICAgIGNhc2UgJ3VzZXInOgogICAgICAgICAgICBjYXNlICduYXRpdmUnOgogICAgICAgICAgICAgICAgbGlzdCgsLCRuYW1lLCAkZm4sICRwcm90b3R5cGUpID0gJGZ1bmN0aW9uUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZXMgb2YgY3NzIHZhbGlkIGZ1bmN0aW9ucyBtaW4vbWF4CiAgICAgICAgICAgICAgICAkbmFtZSA9IHN0cnRvbG93ZXIoJG5hbWUpOwogICAgICAgICAgICAgICAgaWYgKFxpbl9hcnJheSgkbmFtZSwgWydtaW4nLCAnbWF4J10pICYmIGNvdW50KCRhcmdWYWx1ZXMpID49IDEpIHsKICAgICAgICAgICAgICAgICAgICAkY3NzRnVuY3Rpb24gPSAkdGhpcy0+Y3NzVmFsaWRBcmcoCiAgICAgICAgICAgICAgICAgICAgICAgIFtUeXBlOjpUX0ZVTkNUSU9OX0NBTEwsICRuYW1lLCAkYXJnVmFsdWVzXSwKICAgICAgICAgICAgICAgICAgICAgICAgWydtaW4nLCAnbWF4JywgJ2NhbGMnLCAnZW52JywgJ3ZhciddCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGNzc0Z1bmN0aW9uICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGNzc0Z1bmN0aW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZXR1cm5WYWx1ZSA9ICR0aGlzLT5jYWxsTmF0aXZlRnVuY3Rpb24oJG5hbWUsICRmbiwgJHByb3RvdHlwZSwgJGFyZ1ZhbHVlcyk7CgogICAgICAgICAgICAgICAgaWYgKCEgaXNzZXQoJHJldHVyblZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Zm5jYWxsKFtUeXBlOjpUX0ZVTkNUSU9OLCAkbmFtZSwgW1R5cGU6OlRfTElTVCwgJywnLCBbXV1dLCAkYXJnVmFsdWVzKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHJldHVyblZhbHVlOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRkZWZhdWx0VmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkYXJnCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gICAgICRhbGxvd2VkX2Z1bmN0aW9uCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICRpbkZ1bmN0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxOdW1iZXJ8ZmFsc2UKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNzc1ZhbGlkQXJnKCRhcmcsICRhbGxvd2VkX2Z1bmN0aW9uID0gW10sICRpbkZ1bmN0aW9uID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCRhcmcgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJpbmdpZnlGbmNhbGxBcmdzKCRhcmcpOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkYXJnWzBdKSB7CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9JTlRFUlBPTEFURToKICAgICAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9LRVlXT1JELCAkdGhpcy0+Q29tcGlsZVZhbHVlKCRhcmcpXTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9GVU5DVElPTjoKICAgICAgICAgICAgICAgIGlmICghIFxpbl9hcnJheSgkYXJnWzFdLCAkYWxsb3dlZF9mdW5jdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJGFyZ1syXVswXSA9PT0gVHlwZTo6VF9MSVNUKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ1syXVsyXSBhcyAkayA9PiAkc3ViYXJnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhcmdbMl1bMl1bJGtdID0gJHRoaXMtPmNzc1ZhbGlkQXJnKCRzdWJhcmcsICRhbGxvd2VkX2Z1bmN0aW9uLCAkYXJnWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhcmdbMl1bMl1bJGtdID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICRhcmc7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRlVOQ1RJT05fQ0FMTDoKICAgICAgICAgICAgICAgIGlmICghIFxpbl9hcnJheSgkYXJnWzFdLCAkYWxsb3dlZF9mdW5jdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkY3NzQXJncyA9IFtdOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ1syXSBhcyAkYXJnVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGFyZ1ZhbHVlID09PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGNzc0FyZyA9ICR0aGlzLT5jc3NWYWxpZEFyZygkYXJnVmFsdWVbMV0sICRhbGxvd2VkX2Z1bmN0aW9uLCAkYXJnWzFdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGFyZ1ZhbHVlWzBdKSAmJiAkY3NzQXJnICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY3NzQXJnc1tdID0gWyRhcmdWYWx1ZVswXSwgJGNzc0FyZ107CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZuY2FsbChbVHlwZTo6VF9GVU5DVElPTiwgJGFyZ1sxXSwgW1R5cGU6OlRfTElTVCwgJywnLCBbXV1dLCAkY3NzQXJncyk7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfU1RSSU5HOgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfS0VZV09SRDoKICAgICAgICAgICAgICAgIGlmICghJGluRnVuY3Rpb24gb3IgIVxpbl9hcnJheSgkaW5GdW5jdGlvbiwgWydjYWxjJywgJ2VudicsICd2YXInXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmluZ2lmeUZuY2FsbEFyZ3MoJGFyZyk7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTElTVDoKICAgICAgICAgICAgICAgIGlmICghJGluRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGFyZ1snZW5jbG9zaW5nJ10pIGFuZCAkYXJnWzFdID09PSAnJykgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRhcmdbMl0gYXMgJGsgPT4gJHN1YmFyZykgewogICAgICAgICAgICAgICAgICAgICAgICAkYXJnWzJdWyRrXSA9ICR0aGlzLT5jc3NWYWxpZEFyZygkc3ViYXJnLCAkYWxsb3dlZF9mdW5jdGlvbiwgJGluRnVuY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFyZ1syXVska10gPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGFyZ1swXSA9IFR5cGU6OlRfU1RSSU5HOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkYXJnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0VYUFJFU1NJT046CiAgICAgICAgICAgICAgICBpZiAoISBcaW5fYXJyYXkoJGFyZ1sxXSwgWycrJywgJy0nLCAnLycsICcqJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGFyZ1syXSA9ICR0aGlzLT5jc3NWYWxpZEFyZygkYXJnWzJdLCAkYWxsb3dlZF9mdW5jdGlvbiwgJGluRnVuY3Rpb24pOwogICAgICAgICAgICAgICAgJGFyZ1szXSA9ICR0aGlzLT5jc3NWYWxpZEFyZygkYXJnWzNdLCAkYWxsb3dlZF9mdW5jdGlvbiwgJGluRnVuY3Rpb24pOwogICAgICAgICAgICAgICAgaWYgKCRhcmdbMl0gPT09IGZhbHNlIHx8ICRhcmdbM10gPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5leHBUb1N0cmluZygkYXJnLCB0cnVlKTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9WQVJJQUJMRToKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NFTEY6CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKCiAgICAvKioKICAgICAqIFJlZm9ybWF0IGZuY2FsbCBhcmd1bWVudHMgdG8gcHJvcGVyIGNzcyBmdW5jdGlvbiBvdXRwdXQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICRhcmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3RyaW5naWZ5Rm5jYWxsQXJncygkYXJnKQogICAgewogICAgICAgIGlmICgkYXJnIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkYXJnOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkYXJnWzBdKSB7CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9MSVNUOgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ1syXSBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgICAgICRhcmdbMl1bJGtdID0gJHRoaXMtPnN0cmluZ2lmeUZuY2FsbEFyZ3MoJHYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRVhQUkVTU0lPTjoKICAgICAgICAgICAgICAgIGlmICgkYXJnWzFdID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAkYXJnWzJdID0gJHRoaXMtPnN0cmluZ2lmeUZuY2FsbEFyZ3MoJGFyZ1syXSk7CiAgICAgICAgICAgICAgICAgICAgJGFyZ1szXSA9ICR0aGlzLT5zdHJpbmdpZnlGbmNhbGxBcmdzKCRhcmdbM10pOwogICAgICAgICAgICAgICAgICAgICRhcmdbNV0gPSAkYXJnWzZdID0gZmFsc2U7IC8vIG5vIHNwYWNlIGFyb3VuZCAvCiAgICAgICAgICAgICAgICAgICAgJGFyZyA9ICR0aGlzLT5leHBUb1N0cmluZygkYXJnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0ZVTkNUSU9OX0NBTEw6CiAgICAgICAgICAgICAgICAkbmFtZSA9IHN0cnRvbG93ZXIoJGFyZ1sxXSk7CgogICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCRuYW1lLCBbJ21heCcsICdtaW4nLCAnY2FsYyddKSkgewogICAgICAgICAgICAgICAgICAgICRhcmdzID0gJGFyZ1syXTsKICAgICAgICAgICAgICAgICAgICAkYXJnID0gJHRoaXMtPmZuY2FsbChbVHlwZTo6VF9GVU5DVElPTiwgJG5hbWUsIFtUeXBlOjpUX0xJU1QsICcsJywgW11dXSwgJGFyZ3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGFyZzsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbmQgYSBmdW5jdGlvbiByZWZlcmVuY2UKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqIEBwYXJhbSBib29sICRzYWZlQ29weQogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RnVuY3Rpb25SZWZlcmVuY2UoJG5hbWUsICRzYWZlQ29weSA9IGZhbHNlKQogICAgewogICAgICAgIC8vIFNDU1MgQGZ1bmN0aW9uCiAgICAgICAgaWYgKCRmdW5jID0gJHRoaXMtPmdldChzdGF0aWM6OiRuYW1lc3BhY2VzWydmdW5jdGlvbiddIC4gJG5hbWUsIGZhbHNlKSkgewogICAgICAgICAgICBpZiAoJHNhZmVDb3B5KSB7CiAgICAgICAgICAgICAgICAkZnVuYyA9IGNsb25lICRmdW5jOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfRlVOQ1RJT05fUkVGRVJFTkNFLCAnc2NzcycsICRuYW1lLCAkZnVuY107CiAgICAgICAgfQoKICAgICAgICAvLyBuYXRpdmUgUEhQIGZ1bmN0aW9ucwoKICAgICAgICAvLyB0cnkgdG8gZmluZCBhIG5hdGl2ZSBsaWIgZnVuY3Rpb24KICAgICAgICAkbm9ybWFsaXplZE5hbWUgPSAkdGhpcy0+bm9ybWFsaXplTmFtZSgkbmFtZSk7CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+dXNlckZ1bmN0aW9uc1skbm9ybWFsaXplZE5hbWVdKSkgewogICAgICAgICAgICAvLyBzZWUgaWYgd2UgY2FuIGZpbmQgYSB1c2VyIGZ1bmN0aW9uCiAgICAgICAgICAgIGxpc3QoJGYsICRwcm90b3R5cGUpID0gJHRoaXMtPnVzZXJGdW5jdGlvbnNbJG5vcm1hbGl6ZWROYW1lXTsKCiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9GVU5DVElPTl9SRUZFUkVOQ0UsICd1c2VyJywgJG5hbWUsICRmLCAkcHJvdG90eXBlXTsKICAgICAgICB9CgogICAgICAgICRsb3dlcmNhc2VkTmFtZSA9IHN0cnRvbG93ZXIoJG5vcm1hbGl6ZWROYW1lKTsKCiAgICAgICAgLy8gU3BlY2lhbCBmdW5jdGlvbnMgb3ZlcnJpZGluZyBhIENTUyBmdW5jdGlvbiBhcmUgY2FzZS1pbnNlbnNpdGl2ZS4gV2Ugbm9ybWFsaXplIHRoZW0gYXMgbG93ZXJjYXNlCiAgICAgICAgLy8gdG8gYXZvaWQgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcgYWJvdXQgdGhlIHdyb25nIGNhc2UgYmVpbmcgdXNlZC4KICAgICAgICBpZiAoJGxvd2VyY2FzZWROYW1lID09PSAnbWluJyB8fCAkbG93ZXJjYXNlZE5hbWUgPT09ICdtYXgnIHx8ICRsb3dlcmNhc2VkTmFtZSA9PT0gJ3JnYicgfHwgJGxvd2VyY2FzZWROYW1lID09PSAncmdiYScgfHwgJGxvd2VyY2FzZWROYW1lID09PSAnaHNsJyB8fCAkbG93ZXJjYXNlZE5hbWUgPT09ICdoc2xhJykgewogICAgICAgICAgICAkbm9ybWFsaXplZE5hbWUgPSAkbG93ZXJjYXNlZE5hbWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoKCRmID0gJHRoaXMtPmdldEJ1aWx0aW5GdW5jdGlvbigkbm9ybWFsaXplZE5hbWUpKSAmJiBcaXNfY2FsbGFibGUoJGYpKSB7CiAgICAgICAgICAgIC8qKiBAdmFyIHN0cmluZyAkbGliTmFtZSAqLwogICAgICAgICAgICAkbGliTmFtZSAgID0gJGZbMV07CiAgICAgICAgICAgICRwcm90b3R5cGUgPSBpc3NldChzdGF0aWM6OiQkbGliTmFtZSkgPyBzdGF0aWM6OiQkbGliTmFtZSA6IG51bGw7CgogICAgICAgICAgICAvLyBBbGwgY29yZSBmdW5jdGlvbnMgaGF2ZSBhIHByb3RvdHlwZSBkZWZpbmVkLiBOb3QgZmluZGluZyB0aGUKICAgICAgICAgICAgLy8gcHJvdG90eXBlIGNhbiBtZWFuIDIgdGhpbmdzOgogICAgICAgICAgICAvLyAtIHRoZSBmdW5jdGlvbiBjb21lcyBmcm9tIGEgY2hpbGQgY2xhc3MgKGRlcHJlY2F0ZWQganVzdCBhZnRlcikKICAgICAgICAgICAgLy8gLSB0aGUgZnVuY3Rpb24gd2FzIGZvdW5kIHdpdGggYSBkaWZmZXJlbnQgY2FzZSwgd2hpY2ggcmVsYXRlcyB0byBjYWxsaW5nIHRoZQogICAgICAgICAgICAvLyAgIHdyb25nIFNhc3MgZnVuY3Rpb24gZHVlIHRvIG91ciBjYW1lbENhc2UgdXNhZ2UgKGBmYWRlLWluKClgIHZzIGBmYWRlaW4oKWApLAogICAgICAgICAgICAvLyAgIGJlY2F1c2UgUEhQIG1ldGhvZCBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSB3aGlsZSBwcm9wZXJ0eSBuYW1lcyBhcmUKICAgICAgICAgICAgLy8gICBjYXNlLXNlbnNpdGl2ZS4KICAgICAgICAgICAgaWYgKCRwcm90b3R5cGUgPT09IG51bGwgfHwgc3RydG9sb3dlcigkbm9ybWFsaXplZE5hbWUpICE9PSAkbm9ybWFsaXplZE5hbWUpIHsKICAgICAgICAgICAgICAgICRyID0gbmV3IFxSZWZsZWN0aW9uTWV0aG9kKCR0aGlzLCAkbGliTmFtZSk7CiAgICAgICAgICAgICAgICAkYWN0dWFsTGliTmFtZSA9ICRyLT5uYW1lOwoKICAgICAgICAgICAgICAgIGlmICgkYWN0dWFsTGliTmFtZSAhPT0gJGxpYk5hbWUgfHwgc3RydG9sb3dlcigkbm9ybWFsaXplZE5hbWUpICE9PSAkbm9ybWFsaXplZE5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAka2ViYWJDYXNlTmFtZSA9IHByZWdfcmVwbGFjZSgnfig/PD1cXHcpKFtBLVpdKX4nLCAnLSQxJywgc3Vic3RyKCRhY3R1YWxMaWJOYW1lLCAzKSk7CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KCRrZWJhYkNhc2VOYW1lICE9PSBudWxsKTsKICAgICAgICAgICAgICAgICAgICAkb3JpZ2luYWxOYW1lID0gc3RydG9sb3dlcigka2ViYWJDYXNlTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgJHdhcm5pbmcgPSAiQ2FsbGluZyBidWlsdC1pbiBmdW5jdGlvbnMgd2l0aCBhIG5vbi1zdGFuZGFyZCBuYW1lIGlzIGRlcHJlY2F0ZWQgc2luY2UgU2Nzc3BocCAxLjguMCBhbmQgd2lsbCBub3Qgd29yayBhbnltb3JlIGluIDIuMCAodGhleSB3aWxsIGJlIHRyZWF0ZWQgYXMgQ1NTIGZ1bmN0aW9uIGNhbGxzIGluc3RlYWQpLlxuVXNlIFwiJG9yaWdpbmFsTmFtZVwiIGluc3RlYWQgb2YgXCIkbmFtZVwiLiI7CiAgICAgICAgICAgICAgICAgICAgQHRyaWdnZXJfZXJyb3IoJHdhcm5pbmcsIEVfVVNFUl9ERVBSRUNBVEVEKTsKICAgICAgICAgICAgICAgICAgICAkZm5hbWUgPSAkdGhpcy0+Z2V0UHJldHR5UGF0aCgkdGhpcy0+c291cmNlTmFtZXNbJHRoaXMtPnNvdXJjZUluZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgJGxpbmUgID0gJHRoaXMtPnNvdXJjZUxpbmU7CiAgICAgICAgICAgICAgICAgICAgV2Fybjo6ZGVwcmVjYXRpb24oIiR3YXJuaW5nXG4gICAgICAgICBvbiBsaW5lICRsaW5lIG9mICRmbmFtZSIpOwoKICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGFjdHVhbCBmdW5jdGlvbiBkZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgICAgJHByb3RvdHlwZSA9IGlzc2V0KHN0YXRpYzo6JCRhY3R1YWxMaWJOYW1lKSA/IHN0YXRpYzo6JCRhY3R1YWxMaWJOYW1lIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAkZlsxXSA9ICRsaWJOYW1lID0gJGFjdHVhbExpYk5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChcZ2V0X2NsYXNzKCR0aGlzKSAhPT0gX19DTEFTU19fICYmICFpc3NldCgkdGhpcy0+d2FybmVkQ2hpbGRGdW5jdGlvbnNbJGxpYk5hbWVdKSkgewogICAgICAgICAgICAgICAgJHIgPSBuZXcgXFJlZmxlY3Rpb25NZXRob2QoJHRoaXMsICRsaWJOYW1lKTsKICAgICAgICAgICAgICAgICRkZWNsYXJpbmdDbGFzcyA9ICRyLT5nZXREZWNsYXJpbmdDbGFzcygpLT5uYW1lOwoKICAgICAgICAgICAgICAgICRuZWVkc1dhcm5pbmcgPSAkdGhpcy0+d2FybmVkQ2hpbGRGdW5jdGlvbnNbJGxpYk5hbWVdID0gJGRlY2xhcmluZ0NsYXNzICE9PSBfX0NMQVNTX187CgogICAgICAgICAgICAgICAgaWYgKCRuZWVkc1dhcm5pbmcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cyhfX0NMQVNTX18sICRsaWJOYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICBAdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCdPdmVycmlkaW5nIHRoZSAiJXMiIGNvcmUgZnVuY3Rpb24gYnkgZXh0ZW5kaW5nIHRoZSBDb21waWxlciBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHVuc3VwcG9ydGVkIGluIDIuMC4gUmVtb3ZlIHRoZSAiJXM6OiVzIiBtZXRob2QuJywgJG5vcm1hbGl6ZWROYW1lLCAkZGVjbGFyaW5nQ2xhc3MsICRsaWJOYW1lKSwgRV9VU0VSX0RFUFJFQ0FURUQpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEB0cmlnZ2VyX2Vycm9yKHNwcmludGYoJ1JlZ2lzdGVyaW5nIGN1c3RvbSBmdW5jdGlvbnMgYnkgZXh0ZW5kaW5nIHRoZSBDb21waWxlciBhbmQgdXNpbmcgdGhlIGxpYiogZGlzY292ZXJ5IG1lY2hhbmlzbSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMi4wLiBSZXBsYWNlIHRoZSAiJXM6OiVzIiBtZXRob2Qgd2l0aCByZWdpc3RlcmluZyB0aGUgIiVzIiBmdW5jdGlvbiB0aHJvdWdoICJDb21waWxlcjo6cmVnaXN0ZXJGdW5jdGlvbiIuJywgJGRlY2xhcmluZ0NsYXNzLCAkbGliTmFtZSwgJG5vcm1hbGl6ZWROYW1lKSwgRV9VU0VSX0RFUFJFQ0FURUQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0ZVTkNUSU9OX1JFRkVSRU5DRSwgJ25hdGl2ZScsICRuYW1lLCAkZiwgJHByb3RvdHlwZV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RhdGljOjokbnVsbDsKICAgIH0KCgogICAgLyoqCiAgICAgKiBOb3JtYWxpemUgbmFtZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbm9ybWFsaXplTmFtZSgkbmFtZSkKICAgIHsKICAgICAgICByZXR1cm4gc3RyX3JlcGxhY2UoJy0nLCAnXycsICRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZSB2YWx1ZQogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxOdW1iZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29lcmNlRm9yRXhwcmVzc2lvbigkdGhpcy0+cmVkdWNlKCR2YWx1ZSkpOwoKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCR2YWx1ZVswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTElTVDoKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5leHRyYWN0SW50ZXJwb2xhdGlvbigkdmFsdWUpOwoKICAgICAgICAgICAgICAgIGlmICgkdmFsdWVbMF0gIT09IFR5cGU6OlRfTElTVCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9LRVlXT1JELCAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSldOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZVsyXSBhcyAka2V5ID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlWzJdWyRrZXldID0gJHRoaXMtPm5vcm1hbGl6ZVZhbHVlKCRpdGVtKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkdmFsdWVbJ2VuY2xvc2luZyddKSkgewogICAgICAgICAgICAgICAgICAgIHVuc2V0KCR2YWx1ZVsnZW5jbG9zaW5nJ10pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkdmFsdWVbMV0gPT09ICcnICYmIGNvdW50KCR2YWx1ZVsyXSkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlWzFdID0gJyAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFskdmFsdWVbMF0sICciJywgWyR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkdmFsdWUpXV07CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfSU5URVJQT0xBVEU6CiAgICAgICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfS0VZV09SRCwgJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdmFsdWUpXTsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBudW1iZXJzCiAgICAgKgogICAgICogQHBhcmFtIE51bWJlciAkbGVmdAogICAgICogQHBhcmFtIE51bWJlciAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BBZGROdW1iZXJOdW1iZXIoTnVtYmVyICRsZWZ0LCBOdW1iZXIgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiAkbGVmdC0+cGx1cygkcmlnaHQpOwogICAgfQoKICAgIC8qKgogICAgICogTXVsdGlwbHkgbnVtYmVycwogICAgICoKICAgICAqIEBwYXJhbSBOdW1iZXIgJGxlZnQKICAgICAqIEBwYXJhbSBOdW1iZXIgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTXVsTnVtYmVyTnVtYmVyKE51bWJlciAkbGVmdCwgTnVtYmVyICRyaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gJGxlZnQtPnRpbWVzKCRyaWdodCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBudW1iZXJzCiAgICAgKgogICAgICogQHBhcmFtIE51bWJlciAkbGVmdAogICAgICogQHBhcmFtIE51bWJlciAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BTdWJOdW1iZXJOdW1iZXIoTnVtYmVyICRsZWZ0LCBOdW1iZXIgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiAkbGVmdC0+bWludXMoJHJpZ2h0KTsKICAgIH0KCiAgICAvKioKICAgICAqIERpdmlkZSBudW1iZXJzCiAgICAgKgogICAgICogQHBhcmFtIE51bWJlciAkbGVmdAogICAgICogQHBhcmFtIE51bWJlciAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BEaXZOdW1iZXJOdW1iZXIoTnVtYmVyICRsZWZ0LCBOdW1iZXIgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiAkbGVmdC0+ZGl2aWRlZEJ5KCRyaWdodCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNb2QgbnVtYmVycwogICAgICoKICAgICAqIEBwYXJhbSBOdW1iZXIgJGxlZnQKICAgICAqIEBwYXJhbSBOdW1iZXIgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTW9kTnVtYmVyTnVtYmVyKE51bWJlciAkbGVmdCwgTnVtYmVyICRyaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gJGxlZnQtPm1vZHVsbygkcmlnaHQpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIHN0cmluZ3MKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wQWRkKCRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgaWYgKCRzdHJMZWZ0ID0gJHRoaXMtPmNvZXJjZVN0cmluZygkbGVmdCkpIHsKICAgICAgICAgICAgaWYgKCRyaWdodFswXSA9PT0gVHlwZTo6VF9TVFJJTkcpIHsKICAgICAgICAgICAgICAgICRyaWdodFsxXSA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc3RyTGVmdFsyXVtdID0gJHJpZ2h0OwoKICAgICAgICAgICAgcmV0dXJuICRzdHJMZWZ0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzdHJSaWdodCA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJHJpZ2h0KSkgewogICAgICAgICAgICBpZiAoJGxlZnRbMF0gPT09IFR5cGU6OlRfU1RSSU5HKSB7CiAgICAgICAgICAgICAgICAkbGVmdFsxXSA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRzdHJSaWdodFsyXSwgJGxlZnQpOwoKICAgICAgICAgICAgcmV0dXJuICRzdHJSaWdodDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQm9vbGVhbiBhbmQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICRsZWZ0CiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICRyaWdodAogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAkc2hvdWxkRXZhbAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8TnVtYmVyfG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wQW5kKCRsZWZ0LCAkcmlnaHQsICRzaG91bGRFdmFsKQogICAgewogICAgICAgICR0cnV0aHkgPSAoJGxlZnQgPT09IHN0YXRpYzo6JG51bGwgfHwgJHJpZ2h0ID09PSBzdGF0aWM6OiRudWxsKSB8fAogICAgICAgICAgICAgICAgICAoJGxlZnQgPT09IHN0YXRpYzo6JGZhbHNlIHx8ICRsZWZ0ID09PSBzdGF0aWM6OiR0cnVlKSAmJgogICAgICAgICAgICAgICAgICAoJHJpZ2h0ID09PSBzdGF0aWM6OiRmYWxzZSB8fCAkcmlnaHQgPT09IHN0YXRpYzo6JHRydWUpOwoKICAgICAgICBpZiAoISAkc2hvdWxkRXZhbCkgewogICAgICAgICAgICBpZiAoISAkdHJ1dGh5KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRsZWZ0ICE9PSBzdGF0aWM6OiRmYWxzZSAmJiAkbGVmdCAhPT0gc3RhdGljOjokbnVsbCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJlZHVjZSgkcmlnaHQsIHRydWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsZWZ0OwogICAgfQoKICAgIC8qKgogICAgICogQm9vbGVhbiBvcgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHJpZ2h0CiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICRzaG91bGRFdmFsCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxOdW1iZXJ8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BPcigkbGVmdCwgJHJpZ2h0LCAkc2hvdWxkRXZhbCkKICAgIHsKICAgICAgICAkdHJ1dGh5ID0gKCRsZWZ0ID09PSBzdGF0aWM6OiRudWxsIHx8ICRyaWdodCA9PT0gc3RhdGljOjokbnVsbCkgfHwKICAgICAgICAgICAgICAgICAgKCRsZWZ0ID09PSBzdGF0aWM6OiRmYWxzZSB8fCAkbGVmdCA9PT0gc3RhdGljOjokdHJ1ZSkgJiYKICAgICAgICAgICAgICAgICAgKCRyaWdodCA9PT0gc3RhdGljOjokZmFsc2UgfHwgJHJpZ2h0ID09PSBzdGF0aWM6OiR0cnVlKTsKCiAgICAgICAgaWYgKCEgJHNob3VsZEV2YWwpIHsKICAgICAgICAgICAgaWYgKCEgJHRydXRoeSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkbGVmdCAhPT0gc3RhdGljOjokZmFsc2UgJiYgJGxlZnQgIT09IHN0YXRpYzo6JG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRsZWZ0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWR1Y2UoJHJpZ2h0LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmUgY29sb3JzCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkb3AKICAgICAqIEBwYXJhbSBhcnJheSAgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BDb2xvckNvbG9yKCRvcCwgJGxlZnQsICRyaWdodCkKICAgIHsKICAgICAgICBpZiAoJG9wICE9PSAnPT0nICYmICRvcCAhPT0gJyE9JykgewogICAgICAgICAgICAkd2FybmluZyA9ICJDb2xvciBhcml0aG1ldGljIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgYW4gZXJyb3IgaW4gZnV0dXJlIHZlcnNpb25zLlxuIgogICAgICAgICAgICAgICAgLiAiQ29uc2lkZXIgdXNpbmcgU2FzcydzIGNvbG9yIGZ1bmN0aW9ucyBpbnN0ZWFkLiI7CiAgICAgICAgICAgICRmbmFtZSA9ICR0aGlzLT5nZXRQcmV0dHlQYXRoKCR0aGlzLT5zb3VyY2VOYW1lc1skdGhpcy0+c291cmNlSW5kZXhdKTsKICAgICAgICAgICAgJGxpbmUgID0gJHRoaXMtPnNvdXJjZUxpbmU7CgogICAgICAgICAgICBXYXJuOjpkZXByZWNhdGlvbigiJHdhcm5pbmdcbiAgICAgICAgIG9uIGxpbmUgJGxpbmUgb2YgJGZuYW1lIik7CiAgICAgICAgfQoKICAgICAgICAkb3V0ID0gW1R5cGU6OlRfQ09MT1JdOwoKICAgICAgICBmb3JlYWNoIChbMSwgMiwgM10gYXMgJGkpIHsKICAgICAgICAgICAgJGx2YWwgPSBpc3NldCgkbGVmdFskaV0pID8gJGxlZnRbJGldIDogMDsKICAgICAgICAgICAgJHJ2YWwgPSBpc3NldCgkcmlnaHRbJGldKSA/ICRyaWdodFskaV0gOiAwOwoKICAgICAgICAgICAgc3dpdGNoICgkb3ApIHsKICAgICAgICAgICAgICAgIGNhc2UgJysnOgogICAgICAgICAgICAgICAgICAgICRvdXRbXSA9ICRsdmFsICsgJHJ2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJGx2YWwgLSAkcnZhbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcqJzoKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAkbHZhbCAqICRydmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJyUnOgogICAgICAgICAgICAgICAgICAgIGlmICgkcnZhbCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiY29sb3I6IENhbid0IHRha2UgbW9kdWxvIGJ5IHplcm8iKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRvdXRbXSA9ICRsdmFsICUgJHJ2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgICAgaWYgKCRydmFsID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCJjb2xvcjogQ2FuJ3QgZGl2aWRlIGJ5IHplcm8iKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRvdXRbXSA9IChpbnQpICgkbHZhbCAvICRydmFsKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICc9PSc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5vcEVxKCRsZWZ0LCAkcmlnaHQpOwoKICAgICAgICAgICAgICAgIGNhc2UgJyE9JzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPm9wTmVxKCRsZWZ0LCAkcmlnaHQpOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCJjb2xvcjogdW5rbm93biBvcCAkb3AiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRsZWZ0WzRdKSkgewogICAgICAgICAgICAkb3V0WzRdID0gJGxlZnRbNF07CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRyaWdodFs0XSkpIHsKICAgICAgICAgICAgJG91dFs0XSA9ICRyaWdodFs0XTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Zml4Q29sb3IoJG91dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wYXJlIGNvbG9yIGFuZCBudW1iZXIKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRvcAogICAgICogQHBhcmFtIGFycmF5ICAkbGVmdAogICAgICogQHBhcmFtIE51bWJlciAgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BDb2xvck51bWJlcigkb3AsICRsZWZ0LCBOdW1iZXIgJHJpZ2h0KQogICAgewogICAgICAgIGlmICgkb3AgPT09ICc9PScpIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvcCA9PT0gJyE9JykgewogICAgICAgICAgICByZXR1cm4gc3RhdGljOjokdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICRyaWdodC0+Z2V0RGltZW5zaW9uKCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+b3BDb2xvckNvbG9yKAogICAgICAgICAgICAkb3AsCiAgICAgICAgICAgICRsZWZ0LAogICAgICAgICAgICBbVHlwZTo6VF9DT0xPUiwgJHZhbHVlLCAkdmFsdWUsICR2YWx1ZV0KICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIgYW5kIGNvbG9yCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkb3AKICAgICAqIEBwYXJhbSBOdW1iZXIgICRsZWZ0CiAgICAgKiBAcGFyYW0gYXJyYXkgICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTnVtYmVyQ29sb3IoJG9wLCBOdW1iZXIgJGxlZnQsICRyaWdodCkKICAgIHsKICAgICAgICBpZiAoJG9wID09PSAnPT0nKSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkb3AgPT09ICchPScpIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkbGVmdC0+Z2V0RGltZW5zaW9uKCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+b3BDb2xvckNvbG9yKAogICAgICAgICAgICAkb3AsCiAgICAgICAgICAgIFtUeXBlOjpUX0NPTE9SLCAkdmFsdWUsICR2YWx1ZSwgJHZhbHVlXSwKICAgICAgICAgICAgJHJpZ2h0CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmUgbnVtYmVyMSA9PSBudW1iZXIyCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkbGVmdAogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBvcEVxKCRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgaWYgKCgkbFN0ciA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJGxlZnQpKSAmJiAoJHJTdHIgPSAkdGhpcy0+Y29lcmNlU3RyaW5nKCRyaWdodCkpKSB7CiAgICAgICAgICAgICRsU3RyWzFdID0gJyc7CiAgICAgICAgICAgICRyU3RyWzFdID0gJyc7CgogICAgICAgICAgICAkbGVmdCA9ICR0aGlzLT5jb21waWxlVmFsdWUoJGxTdHIpOwogICAgICAgICAgICAkcmlnaHQgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRyU3RyKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCRsZWZ0ID09PSAkcmlnaHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIxICE9IG51bWJlcjIKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICRsZWZ0CiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTmVxKCRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgaWYgKCgkbFN0ciA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJGxlZnQpKSAmJiAoJHJTdHIgPSAkdGhpcy0+Y29lcmNlU3RyaW5nKCRyaWdodCkpKSB7CiAgICAgICAgICAgICRsU3RyWzFdID0gJyc7CiAgICAgICAgICAgICRyU3RyWzFdID0gJyc7CgogICAgICAgICAgICAkbGVmdCA9ICR0aGlzLT5jb21waWxlVmFsdWUoJGxTdHIpOwogICAgICAgICAgICAkcmlnaHQgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRyU3RyKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCRsZWZ0ICE9PSAkcmlnaHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIxID09IG51bWJlcjIKICAgICAqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRsZWZ0CiAgICAgKiBAcGFyYW0gTnVtYmVyICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wRXFOdW1iZXJOdW1iZXIoTnVtYmVyICRsZWZ0LCBOdW1iZXIgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCRsZWZ0LT5lcXVhbHMoJHJpZ2h0KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wYXJlIG51bWJlcjEgIT0gbnVtYmVyMgogICAgICoKICAgICAqIEBwYXJhbSBOdW1iZXIgJGxlZnQKICAgICAqIEBwYXJhbSBOdW1iZXIgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BOZXFOdW1iZXJOdW1iZXIoTnVtYmVyICRsZWZ0LCBOdW1iZXIgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCEkbGVmdC0+ZXF1YWxzKCRyaWdodCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIxID49IG51bWJlcjIKICAgICAqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRsZWZ0CiAgICAgKiBAcGFyYW0gTnVtYmVyICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wR3RlTnVtYmVyTnVtYmVyKE51bWJlciAkbGVmdCwgTnVtYmVyICRyaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQm9vbCgkbGVmdC0+Z3JlYXRlclRoYW5PckVxdWFsKCRyaWdodCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIxID4gbnVtYmVyMgogICAgICoKICAgICAqIEBwYXJhbSBOdW1iZXIgJGxlZnQKICAgICAqIEBwYXJhbSBOdW1iZXIgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BHdE51bWJlck51bWJlcihOdW1iZXIgJGxlZnQsIE51bWJlciAkcmlnaHQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0Jvb2woJGxlZnQtPmdyZWF0ZXJUaGFuKCRyaWdodCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIxIDw9IG51bWJlcjIKICAgICAqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRsZWZ0CiAgICAgKiBAcGFyYW0gTnVtYmVyICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTHRlTnVtYmVyTnVtYmVyKE51bWJlciAkbGVmdCwgTnVtYmVyICRyaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQm9vbCgkbGVmdC0+bGVzc1RoYW5PckVxdWFsKCRyaWdodCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIxIDwgbnVtYmVyMgogICAgICoKICAgICAqIEBwYXJhbSBOdW1iZXIgJGxlZnQKICAgICAqIEBwYXJhbSBOdW1iZXIgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BMdE51bWJlck51bWJlcihOdW1iZXIgJGxlZnQsIE51bWJlciAkcmlnaHQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0Jvb2woJGxlZnQtPmxlc3NUaGFuKCRyaWdodCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ2FzdCB0byBib29sZWFuCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBib29sICR0aGluZwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQm9vbCgkdGhpbmcpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGluZyA/IHN0YXRpYzo6JHRydWUgOiBzdGF0aWM6OiRmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEVzY2FwZSBub24gcHJpbnRhYmxlIGNoYXJzIGluIHN0cmluZ3Mgb3V0cHV0IGFzIGluIGRhcnQtc2FzcwogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICogQHBhcmFtIGJvb2wgICAkaW5LZXl3b3JkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVzY2FwZU5vblByaW50YWJsZUNoYXJzKCRzdHJpbmcsICRpbktleXdvcmQgPSBmYWxzZSkKICAgIHsKICAgICAgICBzdGF0aWMgJHJlcGxhY2VtZW50ID0gW107CiAgICAgICAgaWYgKGVtcHR5KCRyZXBsYWNlbWVudFskaW5LZXl3b3JkXSkpIHsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgMzI7ICRpKyspIHsKICAgICAgICAgICAgICAgIGlmICgkaSAhPT0gOSB8fCAkaW5LZXl3b3JkKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50WyRpbktleXdvcmRdW2NocigkaSldID0gJ1xcJyAuIGRlY2hleCgkaSkgLiAoJGluS2V5d29yZCA/ICcgJyA6IGNocigwKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHN0cmluZyA9IHN0cl9yZXBsYWNlKGFycmF5X2tleXMoJHJlcGxhY2VtZW50WyRpbktleXdvcmRdKSwgYXJyYXlfdmFsdWVzKCRyZXBsYWNlbWVudFskaW5LZXl3b3JkXSksICRzdHJpbmcpOwogICAgICAgIC8vIGNocigwKSBpcyBub3QgYSBwb3NzaWJsZSBjaGFyIGZyb20gdGhlIGlucHV0LCBzbyBhbnkgY2hyKDApIGNvbWVzIGZyb20gb3VyIGVzY2FwaW5nIHJlcGxhY2VtZW50CiAgICAgICAgaWYgKHN0cnBvcygkc3RyaW5nLCBjaHIoMCkpICE9PSBmYWxzZSkgewogICAgICAgICAgICBpZiAoc3Vic3RyKCRzdHJpbmcsIC0xKSA9PT0gY2hyKDApKSB7CiAgICAgICAgICAgICAgICAkc3RyaW5nID0gc3Vic3RyKCRzdHJpbmcsIDAsIC0xKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc3RyaW5nID0gc3RyX3JlcGxhY2UoCiAgICAgICAgICAgICAgICBbY2hyKDApIC4gJ1xcJyxjaHIoMCkgLiAnICddLAogICAgICAgICAgICAgICAgWyAnXFwnLCAnICddLAogICAgICAgICAgICAgICAgJHN0cmluZwogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoc3RycG9zKCRzdHJpbmcsIGNocigwKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkcGFydHMgPSBleHBsb2RlKGNocigwKSwgJHN0cmluZyk7CiAgICAgICAgICAgICAgICAkc3RyaW5nID0gYXJyYXlfc2hpZnQoJHBhcnRzKTsKICAgICAgICAgICAgICAgIHdoaWxlIChjb3VudCgkcGFydHMpKSB7CiAgICAgICAgICAgICAgICAgICAgJG5leHQgPSBhcnJheV9zaGlmdCgkcGFydHMpOwogICAgICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoIjAxMjM0NTY3ODlhYmNkZWZBQkNERUYiIC4gY2hyKDkpLCAkbmV4dFswXSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgLj0gIiAiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkc3RyaW5nIC49ICRuZXh0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN0cmluZzsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGVzIGEgcHJpbWl0aXZlIHZhbHVlIGludG8gYSBDU1MgcHJvcGVydHkgdmFsdWUuCiAgICAgKgogICAgICogVmFsdWVzIGluIHNjc3NwaHAgYXJlIHR5cGVkIGJ5IGJlaW5nIHdyYXBwZWQgaW4gYXJyYXlzLCB0aGVpciBmb3JtYXQgaXMKICAgICAqIHR5cGljYWxseToKICAgICAqCiAgICAgKiAgICAgYXJyYXkodHlwZSwgY29udGVudHMgWywgYWRkaXRpb25hbF9jb250ZW50c10qKQogICAgICoKICAgICAqIFRoZSBpbnB1dCBpcyBleHBlY3RlZCB0byBiZSByZWR1Y2VkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IHdvcmsgb24KICAgICAqIHRoaW5ncyBsaWtlIGV4cHJlc3Npb25zIGFuZCB2YXJpYWJsZXMuCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICRxdW90ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlVmFsdWUoJHZhbHVlLCAkcXVvdGUgPSB0cnVlKQogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5yZWR1Y2UoJHZhbHVlKTsKCiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlLT5vdXRwdXQoJHRoaXMpOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkdmFsdWVbMF0pIHsKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0tFWVdPUkQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmVzY2FwZU5vblByaW50YWJsZUNoYXJzKCR2YWx1ZVsxXSwgdHJ1ZSk7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQ09MT1I6CiAgICAgICAgICAgICAgICAvLyBbMV0gLSByZWQgY29tcG9uZW50IChlaXRoZXIgbnVtYmVyIGZvciBhICUpCiAgICAgICAgICAgICAgICAvLyBbMl0gLSBncmVlbiBjb21wb25lbnQKICAgICAgICAgICAgICAgIC8vIFszXSAtIGJsdWUgY29tcG9uZW50CiAgICAgICAgICAgICAgICAvLyBbNF0gLSBvcHRpb25hbCBhbHBoYSBjb21wb25lbnQKICAgICAgICAgICAgICAgIGxpc3QoLCAkciwgJGcsICRiKSA9ICR2YWx1ZTsKCiAgICAgICAgICAgICAgICAkciA9ICR0aGlzLT5jb21waWxlUkdCQVZhbHVlKCRyKTsKICAgICAgICAgICAgICAgICRnID0gJHRoaXMtPmNvbXBpbGVSR0JBVmFsdWUoJGcpOwogICAgICAgICAgICAgICAgJGIgPSAkdGhpcy0+Y29tcGlsZVJHQkFWYWx1ZSgkYik7CgogICAgICAgICAgICAgICAgaWYgKFxjb3VudCgkdmFsdWUpID09PSA1KSB7CiAgICAgICAgICAgICAgICAgICAgJGFscGhhID0gJHRoaXMtPmNvbXBpbGVSR0JBVmFsdWUoJHZhbHVlWzRdLCB0cnVlKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCEgaXNfbnVtZXJpYygkYWxwaGEpIHx8ICRhbHBoYSA8IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yTmFtZSA9IENvbG9yczo6UkdCYVRvQ29sb3JOYW1lKCRyLCAkZywgJGIsICRhbHBoYSk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBcaXNfbnVsbCgkY29sb3JOYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjb2xvck5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKCRhbHBoYSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhID0gbmV3IE51bWJlcigkYWxwaGEsICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhID0gJGFscGhhOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JnYmEoJyAuICRyIC4gJywgJyAuICRnIC4gJywgJyAuICRiIC4gJywgJyAuICRhIC4gJyknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoISBpc19udW1lcmljKCRyKSB8fCAhIGlzX251bWVyaWMoJGcpIHx8ICEgaXNfbnVtZXJpYygkYikpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3JnYignIC4gJHIgLiAnLCAnIC4gJGcgLiAnLCAnIC4gJGIgLiAnKSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGNvbG9yTmFtZSA9IENvbG9yczo6UkdCYVRvQ29sb3JOYW1lKCRyLCAkZywgJGIpOwoKICAgICAgICAgICAgICAgIGlmICghIFxpc19udWxsKCRjb2xvck5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjb2xvck5hbWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGggPSBzcHJpbnRmKCcjJTAyeCUwMnglMDJ4JywgJHIsICRnLCAkYik7CgogICAgICAgICAgICAgICAgLy8gQ29udmVydGluZyBoZXggY29sb3IgdG8gc2hvcnQgbm90YXRpb24gKGUuZy4gIzAwMzM5OSB0byAjMDM5KQogICAgICAgICAgICAgICAgaWYgKCRoWzFdID09PSAkaFsyXSAmJiAkaFszXSA9PT0gJGhbNF0gJiYgJGhbNV0gPT09ICRoWzZdKSB7CiAgICAgICAgICAgICAgICAgICAgJGggPSAnIycgLiAkaFsxXSAuICRoWzNdIC4gJGhbNV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRoOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NUUklORzoKICAgICAgICAgICAgICAgICRjb250ZW50ID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR2YWx1ZSwgJHF1b3RlKTsKCiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlWzFdICYmICRxdW90ZSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gc3RyX3JlcGxhY2UoJ1xcJywgJ1xcXFwnLCAkY29udGVudCk7CgogICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJHRoaXMtPmVzY2FwZU5vblByaW50YWJsZUNoYXJzKCRjb250ZW50KTsKCiAgICAgICAgICAgICAgICAgICAgLy8gZm9yY2UgZG91YmxlIHF1b3RlIGFzIHN0cmluZyBxdW90ZSBmb3IgdGhlIG91dHB1dCBpbiBjZXJ0YWluIGNhc2VzCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVbMV0gPT09ICInIiAmJgogICAgICAgICAgICAgICAgICAgICAgICAoc3RycG9zKCRjb250ZW50LCAnIicpID09PSBmYWxzZSBvciBzdHJwb3MoJGNvbnRlbnQsICInIikgIT09IGZhbHNlKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVbMV0gPSAnIic7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVbMV0gPT09ICciJyAmJgogICAgICAgICAgICAgICAgICAgICAgICAoc3RycG9zKCRjb250ZW50LCAnIicpICE9PSBmYWxzZSBhbmQgc3RycG9zKCRjb250ZW50LCAiJyIpID09PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlWzFdID0gIiciOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSgkdmFsdWVbMV0sICdcXCcgLiAkdmFsdWVbMV0sICRjb250ZW50KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlWzFdIC4gJGNvbnRlbnQgLiAkdmFsdWVbMV07CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRlVOQ1RJT046CiAgICAgICAgICAgICAgICAkYXJncyA9ICEgZW1wdHkoJHZhbHVlWzJdKSA/ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlWzJdLCAkcXVvdGUpIDogJyc7CgogICAgICAgICAgICAgICAgcmV0dXJuICIkdmFsdWVbMV0oJGFyZ3MpIjsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9GVU5DVElPTl9SRUZFUkVOQ0U6CiAgICAgICAgICAgICAgICAkbmFtZSA9ICEgZW1wdHkoJHZhbHVlWzJdKSA/ICR2YWx1ZVsyXSA6ICcnOwoKICAgICAgICAgICAgICAgIHJldHVybiAiZ2V0LWZ1bmN0aW9uKFwiJG5hbWVcIikiOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0xJU1Q6CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+ZXh0cmFjdEludGVycG9sYXRpb24oJHZhbHVlKTsKCiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlWzBdICE9PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdmFsdWUsICRxdW90ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGlzdCgsICRkZWxpbSwgJGl0ZW1zKSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgICRwcmUgPSAkcG9zdCA9ICcnOwoKICAgICAgICAgICAgICAgIGlmICghIGVtcHR5KCR2YWx1ZVsnZW5jbG9zaW5nJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgkdmFsdWVbJ2VuY2xvc2luZyddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3BhcmVudCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwcmUgPSAnKCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwb3N0ID0gJyknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZvcmNlZF9wYXJlbnQnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByZSA9ICcoJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwb3N0ID0gJyknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JyYWNrZXQnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb3JjZWRfYnJhY2tldCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJlID0gJ1snOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBvc3QgPSAnXSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHNlcGFyYXRvciA9ICRkZWxpbSA9PT0gJy8nID8gJyAvJyA6ICRkZWxpbTsKCiAgICAgICAgICAgICAgICAkcHJlZml4X3ZhbHVlID0gJyc7CgogICAgICAgICAgICAgICAgaWYgKCRkZWxpbSAhPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgICAgJHByZWZpeF92YWx1ZSA9ICcgJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZmlsdGVyZWQgPSBbXTsKCiAgICAgICAgICAgICAgICAkc2FtZV9zdHJpbmdfcXVvdGUgPSBudWxsOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFxpc19udWxsKCRzYW1lX3N0cmluZ19xdW90ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNhbWVfc3RyaW5nX3F1b3RlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXRlbVswXSA9PT0gVHlwZTo6VF9TVFJJTkcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzYW1lX3N0cmluZ19xdW90ZSA9ICRpdGVtWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaWlbMF0gIT09IFR5cGU6OlRfU1RSSU5HKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzYW1lX3N0cmluZ19xdW90ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCRpdGVtWzBdID09PSBUeXBlOjpUX05VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgkc2FtZV9zdHJpbmdfcXVvdGUgPT09ICciJyAmJiAkaXRlbVswXSA9PT0gVHlwZTo6VF9TVFJJTkcgJiYgJGl0ZW1bMV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1bMV0gPSAkc2FtZV9zdHJpbmdfcXVvdGU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkY29tcGlsZWQgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRpdGVtLCAkcXVvdGUpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHByZWZpeF92YWx1ZSAmJiBcc3RybGVuKCRjb21waWxlZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBpbGVkID0gJHByZWZpeF92YWx1ZSAuICRjb21waWxlZDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRmaWx0ZXJlZFtdID0gJGNvbXBpbGVkOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkcHJlIC4gc3Vic3RyKGltcGxvZGUoJHNlcGFyYXRvciwgJGZpbHRlcmVkKSwgXHN0cmxlbigkcHJlZml4X3ZhbHVlKSkgLiAkcG9zdDsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9NQVA6CiAgICAgICAgICAgICAgICAka2V5cyAgICAgPSAkdmFsdWVbMV07CiAgICAgICAgICAgICAgICAkdmFsdWVzICAgPSAkdmFsdWVbMl07CiAgICAgICAgICAgICAgICAkZmlsdGVyZWQgPSBbXTsKCiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMCwgJHMgPSBcY291bnQoJGtleXMpOyAkaSA8ICRzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbHRlcmVkWyR0aGlzLT5jb21waWxlVmFsdWUoJGtleXNbJGldLCAkcXVvdGUpXSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlc1skaV0sICRxdW90ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYXJyYXlfd2FsaygkZmlsdGVyZWQsIGZ1bmN0aW9uICgmJHZhbHVlLCAka2V5KSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gJGtleSAuICc6ICcgLiAkdmFsdWU7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJygnIC4gaW1wbG9kZSgnLCAnLCAkZmlsdGVyZWQpIC4gJyknOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0lOVEVSUE9MQVRFRDoKICAgICAgICAgICAgICAgIC8vIG5vZGUgY3JlYXRlZCBieSBleHRyYWN0SW50ZXJwb2xhdGlvbgogICAgICAgICAgICAgICAgbGlzdCgsICRpbnRlcnBvbGF0ZSwgJGxlZnQsICRyaWdodCkgPSAkdmFsdWU7CiAgICAgICAgICAgICAgICBsaXN0KCwsICR3aGl0ZUxlZnQsICR3aGl0ZVJpZ2h0KSA9ICRpbnRlcnBvbGF0ZTsKCiAgICAgICAgICAgICAgICAkZGVsaW0gPSAkbGVmdFsxXTsKCiAgICAgICAgICAgICAgICBpZiAoJGRlbGltICYmICRkZWxpbSAhPT0gJyAnICYmICEgJHdoaXRlTGVmdCkgewogICAgICAgICAgICAgICAgICAgICRkZWxpbSAuPSAnICc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxlZnQgPSBcY291bnQoJGxlZnRbMl0pID4gMAogICAgICAgICAgICAgICAgICAgID8gICR0aGlzLT5jb21waWxlVmFsdWUoJGxlZnQsICRxdW90ZSkgLiAkZGVsaW0gLiAkd2hpdGVMZWZ0CiAgICAgICAgICAgICAgICAgICAgOiAnJzsKCiAgICAgICAgICAgICAgICAkZGVsaW0gPSAkcmlnaHRbMV07CgogICAgICAgICAgICAgICAgaWYgKCRkZWxpbSAmJiAkZGVsaW0gIT09ICcgJykgewogICAgICAgICAgICAgICAgICAgICRkZWxpbSAuPSAnICc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHJpZ2h0ID0gXGNvdW50KCRyaWdodFsyXSkgPiAwID8KICAgICAgICAgICAgICAgICAgICAkd2hpdGVSaWdodCAuICRkZWxpbSAuICR0aGlzLT5jb21waWxlVmFsdWUoJHJpZ2h0LCAkcXVvdGUpIDogJyc7CgogICAgICAgICAgICAgICAgcmV0dXJuICRsZWZ0IC4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkaW50ZXJwb2xhdGUsICRxdW90ZSkgLiAkcmlnaHQ7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfSU5URVJQT0xBVEU6CiAgICAgICAgICAgICAgICAvLyBzdHJpcCBxdW90ZXMgaWYgaXQncyBhIHN0cmluZwogICAgICAgICAgICAgICAgJHJlZHVjZWQgPSAkdGhpcy0+cmVkdWNlKCR2YWx1ZVsxXSk7CgogICAgICAgICAgICAgICAgaWYgKCRyZWR1Y2VkIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jb21waWxlVmFsdWUoJHJlZHVjZWQsICRxdW90ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc3dpdGNoICgkcmVkdWNlZFswXSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9MSVNUOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVkdWNlZCA9ICR0aGlzLT5leHRyYWN0SW50ZXJwb2xhdGlvbigkcmVkdWNlZCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJlZHVjZWRbMF0gIT09IFR5cGU6OlRfTElTVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoLCAkZGVsaW0sICRpdGVtcykgPSAkcmVkdWNlZDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVsaW0gIT09ICcgJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGltIC49ICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbHRlcmVkID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXRlbVswXSA9PT0gVHlwZTo6VF9OVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpdGVtWzBdID09PSBUeXBlOjpUX1NUUklORykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWx0ZXJlZFtdID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRpdGVtLCAkcXVvdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRpdGVtWzBdID09PSBUeXBlOjpUX0tFWVdPUkQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsdGVyZWRbXSA9ICRpdGVtWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsdGVyZWRbXSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJGl0ZW0sICRxdW90ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRyZWR1Y2VkID0gW1R5cGU6OlRfS0VZV09SRCwgaW1wbG9kZSgiJGRlbGltIiwgJGZpbHRlcmVkKV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIFR5cGU6OlRfU1RSSU5HOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVkdWNlZCA9IFtUeXBlOjpUX1NUUklORywgJycsIFskdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHJlZHVjZWQpXV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIFR5cGU6OlRfTlVMTDoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlZHVjZWQgPSBbVHlwZTo6VF9LRVlXT1JELCAnJ107CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jb21waWxlVmFsdWUoJHJlZHVjZWQsICRxdW90ZSk7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTlVMTDoKICAgICAgICAgICAgICAgIHJldHVybiAnbnVsbCc7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQ09NTUVOVDoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGlsZUNvbW1lbnRWYWx1ZSgkdmFsdWUpOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigndW5rbm93biB2YWx1ZSB0eXBlOiAnIC4ganNvbl9lbmNvZGUoJHZhbHVlKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZURlYnVnVmFsdWUoJHZhbHVlKQogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5yZWR1Y2UoJHZhbHVlLCB0cnVlKTsKCiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkdmFsdWVbMF0pIHsKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHZhbHVlKTsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdmFsdWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEZsYXR0ZW4gbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkbGlzdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZsYXR0ZW5MaXN0KCRsaXN0KQogICAgewogICAgICAgIEB0cmlnZ2VyX2Vycm9yKHNwcmludGYoJ1RoZSAiJXMiIG1ldGhvZCBpcyBkZXByZWNhdGVkLicsIF9fTUVUSE9EX18pLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGlsZVZhbHVlKCRsaXN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgdGhlIHRleHQgb2YgYSBTYXNzIHN0cmluZwogICAgICoKICAgICAqIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYW55dGhpbmcgZWxzZSB0aGFuIGEgU2Fzc1N0cmluZyBpcyB1bnN1cHBvcnRlZC4gVXNlIHtAc2VlIGFzc2VydFN0cmluZ30gZmlyc3QKICAgICAqIHRvIGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBpcyBpbmRlZWQgYSBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJpbmdUZXh0KGFycmF5ICR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlWzBdICE9PSBUeXBlOjpUX1NUUklORykgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIGFyZ3VtZW50IGlzIG5vdCBhIHNhc3Mgc3RyaW5nLiBEaWQgeW91IGZvcmdvdCB0byB1c2UgImFzc2VydFN0cmluZyI/Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIHN0cmluZyBjb250ZW50CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzdHJpbmcKICAgICAqIEBwYXJhbSBib29sICAkcXVvdGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZywgJHF1b3RlID0gdHJ1ZSkKICAgIHsKICAgICAgICAkcGFydHMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHN0cmluZ1syXSBhcyAkcGFydCkgewogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRwYXJ0KSB8fCAkcGFydCBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRwYXJ0LCAkcXVvdGUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkcGFydDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJHBhcnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEV4dHJhY3QgaW50ZXJwb2xhdGlvbjsgaXQgZG9lc24ndCBuZWVkIHRvIGJlIHJlY3Vyc2l2ZSwgY29tcGlsZVZhbHVlIHdpbGwgaGFuZGxlIHRoYXQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxpc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBleHRyYWN0SW50ZXJwb2xhdGlvbigkbGlzdCkKICAgIHsKICAgICAgICAkaXRlbXMgPSAkbGlzdFsyXTsKCiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpID0+ICRpdGVtKSB7CiAgICAgICAgICAgIGlmICgkaXRlbVswXSA9PT0gVHlwZTo6VF9JTlRFUlBPTEFURSkgewogICAgICAgICAgICAgICAgJGJlZm9yZSA9IFtUeXBlOjpUX0xJU1QsICRsaXN0WzFdLCBcYXJyYXlfc2xpY2UoJGl0ZW1zLCAwLCAkaSldOwogICAgICAgICAgICAgICAgJGFmdGVyICA9IFtUeXBlOjpUX0xJU1QsICRsaXN0WzFdLCBcYXJyYXlfc2xpY2UoJGl0ZW1zLCAkaSArIDEpXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfSU5URVJQT0xBVEVELCAkaXRlbSwgJGJlZm9yZSwgJGFmdGVyXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIC8qKgogICAgICogRmluZCB0aGUgZmluYWwgc2V0IG9mIHNlbGVjdG9ycwogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyXEVudmlyb25tZW50ICRlbnYKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrICAgICAgICAgICAgICAgICRzZWxmUGFyZW50CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbXVsdGlwbHlTZWxlY3RvcnMoRW52aXJvbm1lbnQgJGVudiwgJHNlbGZQYXJlbnQgPSBudWxsKQogICAgewogICAgICAgICRlbnZzICAgICAgICAgICAgPSAkdGhpcy0+Y29tcGFjdEVudigkZW52KTsKICAgICAgICAkc2VsZWN0b3JzICAgICAgID0gW107CiAgICAgICAgJHBhcmVudFNlbGVjdG9ycyA9IFtbXV07CgogICAgICAgICRzZWxmUGFyZW50U2VsZWN0b3JzID0gbnVsbDsKCiAgICAgICAgaWYgKCEgXGlzX251bGwoJHNlbGZQYXJlbnQpICYmICRzZWxmUGFyZW50LT5zZWxlY3RvcnMpIHsKICAgICAgICAgICAgJHNlbGZQYXJlbnRTZWxlY3RvcnMgPSAkdGhpcy0+ZXZhbFNlbGVjdG9ycygkc2VsZlBhcmVudC0+c2VsZWN0b3JzKTsKICAgICAgICB9CgogICAgICAgIHdoaWxlICgkZW52ID0gYXJyYXlfcG9wKCRlbnZzKSkgewogICAgICAgICAgICBpZiAoZW1wdHkoJGVudi0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzZWxlY3RvcnMgPSAkZW52LT5zZWxlY3RvcnM7CgogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkc3RpbGxIYXNTZWxmICA9IGZhbHNlOwogICAgICAgICAgICAgICAgJHByZXZTZWxlY3RvcnMgPSAkc2VsZWN0b3JzOwogICAgICAgICAgICAgICAgJHNlbGVjdG9ycyAgICAgPSBbXTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyZW50U2VsZWN0b3JzIGFzICRwYXJlbnQpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcHJldlNlbGVjdG9ycyBhcyAkc2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxmUGFyZW50U2VsZWN0b3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2VsZlBhcmVudFNlbGVjdG9ycyBhcyAkc2VsZlBhcmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vICcmJyBpbiB0aGUgc2VsZWN0b3IsIGVhY2ggY2FsbCB3aWxsIGdpdmUgc2FtZSByZXN1bHQsIG9ubHkgYWRkIG9uY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcyA9ICR0aGlzLT5qb2luU2VsZWN0b3JzKCRwYXJlbnQsICRzZWxlY3RvciwgJHN0aWxsSGFzU2VsZiwgJHNlbGZQYXJlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxlY3RvcnNbc2VyaWFsaXplKCRzKV0gPSAkczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzID0gJHRoaXMtPmpvaW5TZWxlY3RvcnMoJHBhcmVudCwgJHNlbGVjdG9yLCAkc3RpbGxIYXNTZWxmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxlY3RvcnNbc2VyaWFsaXplKCRzKV0gPSAkczsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSB3aGlsZSAoJHN0aWxsSGFzU2VsZik7CgogICAgICAgICAgICAkcGFyZW50U2VsZWN0b3JzID0gJHNlbGVjdG9yczsKICAgICAgICB9CgogICAgICAgICRzZWxlY3RvcnMgPSBhcnJheV92YWx1ZXMoJHNlbGVjdG9ycyk7CgogICAgICAgIC8vIGNhc2Ugd2UgYXJlIGp1c3Qgc3RhcnRpbmcgYSBhdC1yb290IDogbm90aGluZyB0byBtdWx0aXBseSBidXQgcGFyZW50U2VsZWN0b3JzCiAgICAgICAgaWYgKCEgJHNlbGVjdG9ycyAmJiAkc2VsZlBhcmVudFNlbGVjdG9ycykgewogICAgICAgICAgICAkc2VsZWN0b3JzID0gJHNlbGZQYXJlbnRTZWxlY3RvcnM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNlbGVjdG9yczsKICAgIH0KCiAgICAvKioKICAgICAqIEpvaW4gc2VsZWN0b3JzOyBsb29rcyBmb3IgJiB0byByZXBsYWNlLCBvciBhcHBlbmQgcGFyZW50IGJlZm9yZSBjaGlsZAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkcGFyZW50CiAgICAgKiBAcGFyYW0gYXJyYXkgJGNoaWxkCiAgICAgKiBAcGFyYW0gYm9vbCAgJHN0aWxsSGFzU2VsZgogICAgICogQHBhcmFtIGFycmF5ICRzZWxmUGFyZW50U2VsZWN0b3JzCgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gam9pblNlbGVjdG9ycygkcGFyZW50LCAkY2hpbGQsICYkc3RpbGxIYXNTZWxmLCAkc2VsZlBhcmVudFNlbGVjdG9ycyA9IG51bGwpCiAgICB7CiAgICAgICAgJHNldFNlbGYgPSBmYWxzZTsKICAgICAgICAkb3V0ID0gW107CgogICAgICAgIGZvcmVhY2ggKCRjaGlsZCBhcyAkcGFydCkgewogICAgICAgICAgICAkbmV3UGFydCA9IFtdOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHBhcnQgYXMgJHApIHsKICAgICAgICAgICAgICAgIC8vIG9ubHkgcmVwbGFjZSAmIG9uY2UgYW5kIHNob3VsZCBiZSByZWNhbGxlZCB0byBiZSBhYmxlIHRvIG1ha2UgY29tYmluYXRpb25zCiAgICAgICAgICAgICAgICBpZiAoJHAgPT09IHN0YXRpYzo6JHNlbGZTZWxlY3RvciAmJiAkc2V0U2VsZikgewogICAgICAgICAgICAgICAgICAgICRzdGlsbEhhc1NlbGYgPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkcCA9PT0gc3RhdGljOjokc2VsZlNlbGVjdG9yICYmICEgJHNldFNlbGYpIHsKICAgICAgICAgICAgICAgICAgICAkc2V0U2VsZiA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGlmIChcaXNfbnVsbCgkc2VsZlBhcmVudFNlbGVjdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGZQYXJlbnRTZWxlY3RvcnMgPSAkcGFyZW50OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHNlbGZQYXJlbnRTZWxlY3RvcnMgYXMgJGkgPT4gJHBhcmVudFBhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJG5ld1BhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3UGFydCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyZW50UGFydCBhcyAkcHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJHBwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmbGF0dGVuID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3dhbGtfcmVjdXJzaXZlKCRwcCwgZnVuY3Rpb24gKCRhKSB1c2UgKCYkZmxhdHRlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmxhdHRlbltdID0gJGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcCA9IGltcGxvZGUoJGZsYXR0ZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdQYXJ0W10gPSAkcHA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRuZXdQYXJ0W10gPSAkcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dFtdID0gJG5ld1BhcnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNldFNlbGYgPyAkb3V0IDogYXJyYXlfbWVyZ2UoJHBhcmVudCwgJGNoaWxkKTsKICAgIH0KCiAgICAvKioKICAgICAqIE11bHRpcGx5IG1lZGlhCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQgJGVudgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkUXVlcmllcwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG11bHRpcGx5TWVkaWEoRW52aXJvbm1lbnQgJGVudiA9IG51bGwsICRjaGlsZFF1ZXJpZXMgPSBudWxsKQogICAgewogICAgICAgIGlmICgKICAgICAgICAgICAgISBpc3NldCgkZW52KSB8fAogICAgICAgICAgICAhIGVtcHR5KCRlbnYtPmJsb2NrLT50eXBlKSAmJiAkZW52LT5ibG9jay0+dHlwZSAhPT0gVHlwZTo6VF9NRURJQQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gJGNoaWxkUXVlcmllczsKICAgICAgICB9CgogICAgICAgIC8vIHBsYWluIG9sZCBibG9jaywgc2tpcAogICAgICAgIGlmIChlbXB0eSgkZW52LT5ibG9jay0+dHlwZSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5tdWx0aXBseU1lZGlhKCRlbnYtPnBhcmVudCwgJGNoaWxkUXVlcmllcyk7CiAgICAgICAgfQoKICAgICAgICBhc3NlcnQoJGVudi0+YmxvY2sgaW5zdGFuY2VvZiBNZWRpYUJsb2NrKTsKCiAgICAgICAgJHBhcmVudFF1ZXJpZXMgPSBpc3NldCgkZW52LT5ibG9jay0+cXVlcnlMaXN0KQogICAgICAgICAgICA/ICRlbnYtPmJsb2NrLT5xdWVyeUxpc3QKICAgICAgICAgICAgOiBbW1tUeXBlOjpUX01FRElBX1ZBTFVFLCAkZW52LT5ibG9jay0+dmFsdWVdXV07CgogICAgICAgICRzdG9yZSA9IFskdGhpcy0+ZW52LCAkdGhpcy0+c3RvcmVFbnZdOwoKICAgICAgICAkdGhpcy0+ZW52ICAgICAgPSAkZW52OwogICAgICAgICR0aGlzLT5zdG9yZUVudiA9IG51bGw7CiAgICAgICAgJHBhcmVudFF1ZXJpZXMgID0gJHRoaXMtPmV2YWx1YXRlTWVkaWFRdWVyeSgkcGFyZW50UXVlcmllcyk7CgogICAgICAgIGxpc3QoJHRoaXMtPmVudiwgJHRoaXMtPnN0b3JlRW52KSA9ICRzdG9yZTsKCiAgICAgICAgaWYgKFxpc19udWxsKCRjaGlsZFF1ZXJpZXMpKSB7CiAgICAgICAgICAgICRjaGlsZFF1ZXJpZXMgPSAkcGFyZW50UXVlcmllczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkb3JpZ2luYWxRdWVyaWVzID0gJGNoaWxkUXVlcmllczsKICAgICAgICAgICAgJGNoaWxkUXVlcmllcyA9IFtdOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmVudFF1ZXJpZXMgYXMgJHBhcmVudFF1ZXJ5KSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkb3JpZ2luYWxRdWVyaWVzIGFzICRjaGlsZFF1ZXJ5KSB7CiAgICAgICAgICAgICAgICAgICAgJGNoaWxkUXVlcmllc1tdID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJlbnRRdWVyeSwKICAgICAgICAgICAgICAgICAgICAgICAgW1tUeXBlOjpUX01FRElBX1RZUEUsIFtUeXBlOjpUX0tFWVdPUkQsICdhbGwnXV1dLAogICAgICAgICAgICAgICAgICAgICAgICAkY2hpbGRRdWVyeQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+bXVsdGlwbHlNZWRpYSgkZW52LT5wYXJlbnQsICRjaGlsZFF1ZXJpZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCBlbnYgbGlua2VkIGxpc3QgdG8gc3RhY2sKICAgICAqCiAgICAgKiBAcGFyYW0gRW52aXJvbm1lbnQgJGVudgogICAgICoKICAgICAqIEByZXR1cm4gRW52aXJvbm1lbnRbXQogICAgICoKICAgICAqIEBwaHBzdGFuLXJldHVybiBub24tZW1wdHktYXJyYXk8RW52aXJvbm1lbnQ+CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21wYWN0RW52KEVudmlyb25tZW50ICRlbnYpCiAgICB7CiAgICAgICAgZm9yICgkZW52cyA9IFtdOyAkZW52OyAkZW52ID0gJGVudi0+cGFyZW50KSB7CiAgICAgICAgICAgICRlbnZzW10gPSAkZW52OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbnZzOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCBlbnYgc3RhY2sgdG8gc2luZ2x5IGxpbmtlZCBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIEVudmlyb25tZW50W10gJGVudnMKICAgICAqCiAgICAgKiBAcmV0dXJuIEVudmlyb25tZW50CiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gIG5vbi1lbXB0eS1hcnJheTxFbnZpcm9ubWVudD4gJGVudnMKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4dHJhY3RFbnYoJGVudnMpCiAgICB7CiAgICAgICAgZm9yICgkZW52ID0gbnVsbDsgJGUgPSBhcnJheV9wb3AoJGVudnMpOykgewogICAgICAgICAgICAkZS0+cGFyZW50ID0gJGVudjsKICAgICAgICAgICAgJGVudiA9ICRlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbnY7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIGVudmlyb25tZW50CiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sgJGJsb2NrCiAgICAgKgogICAgICogQHJldHVybiBcU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyXEVudmlyb25tZW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwdXNoRW52KEJsb2NrICRibG9jayA9IG51bGwpCiAgICB7CiAgICAgICAgJGVudiA9IG5ldyBFbnZpcm9ubWVudCgpOwogICAgICAgICRlbnYtPnBhcmVudCA9ICR0aGlzLT5lbnY7CiAgICAgICAgJGVudi0+cGFyZW50U3RvcmUgPSAkdGhpcy0+c3RvcmVFbnY7CiAgICAgICAgJGVudi0+c3RvcmUgID0gW107CiAgICAgICAgJGVudi0+YmxvY2sgID0gJGJsb2NrOwogICAgICAgICRlbnYtPmRlcHRoICA9IGlzc2V0KCR0aGlzLT5lbnYtPmRlcHRoKSA/ICR0aGlzLT5lbnYtPmRlcHRoICsgMSA6IDA7CgogICAgICAgICR0aGlzLT5lbnYgPSAkZW52OwogICAgICAgICR0aGlzLT5zdG9yZUVudiA9IG51bGw7CgogICAgICAgIHJldHVybiAkZW52OwogICAgfQoKICAgIC8qKgogICAgICogUG9wIGVudmlyb25tZW50CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwb3BFbnYoKQogICAgewogICAgICAgICR0aGlzLT5zdG9yZUVudiA9ICR0aGlzLT5lbnYtPnBhcmVudFN0b3JlOwogICAgICAgICR0aGlzLT5lbnYgPSAkdGhpcy0+ZW52LT5wYXJlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQcm9wYWdhdGUgdmFycyBmcm9tIGEganVzdCBwb3BlZCBFbnYgKHVzZWQgaW4gQGVhY2ggYW5kIEBmb3IpCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgJHN0b3JlCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmdbXSAkZXhjbHVkZWRWYXJzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBiYWNrUHJvcGFnYXRlRW52KCRzdG9yZSwgJGV4Y2x1ZGVkVmFycyA9IG51bGwpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHN0b3JlIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChlbXB0eSgkZXhjbHVkZWRWYXJzKSB8fCAhIFxpbl9hcnJheSgka2V5LCAkZXhjbHVkZWRWYXJzKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldCgka2V5LCAkdmFsdWUsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHN0b3JlIGVudmlyb25tZW50CiAgICAgKgogICAgICogQHJldHVybiBcU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyXEVudmlyb25tZW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTdG9yZUVudigpCiAgICB7CiAgICAgICAgcmV0dXJuIGlzc2V0KCR0aGlzLT5zdG9yZUVudikgPyAkdGhpcy0+c3RvcmVFbnYgOiAkdGhpcy0+ZW52OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHZhcmlhYmxlCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNoYWRvdwogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQgJGVudgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlVW5yZWR1Y2VkCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZXQoJG5hbWUsICR2YWx1ZSwgJHNoYWRvdyA9IGZhbHNlLCBFbnZpcm9ubWVudCAkZW52ID0gbnVsbCwgJHZhbHVlVW5yZWR1Y2VkID0gbnVsbCkKICAgIHsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5ub3JtYWxpemVOYW1lKCRuYW1lKTsKCiAgICAgICAgaWYgKCEgaXNzZXQoJGVudikpIHsKICAgICAgICAgICAgJGVudiA9ICR0aGlzLT5nZXRTdG9yZUVudigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzaGFkb3cpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFJhdygkbmFtZSwgJHZhbHVlLCAkZW52LCAkdmFsdWVVbnJlZHVjZWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFeGlzdGluZygkbmFtZSwgJHZhbHVlLCAkZW52LCAkdmFsdWVVbnJlZHVjZWQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNldCBleGlzdGluZyB2YXJpYWJsZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyXEVudmlyb25tZW50ICRlbnYKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZVVucmVkdWNlZAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0RXhpc3RpbmcoJG5hbWUsICR2YWx1ZSwgRW52aXJvbm1lbnQgJGVudiwgJHZhbHVlVW5yZWR1Y2VkID0gbnVsbCkKICAgIHsKICAgICAgICAkc3RvcmVFbnYgPSAkZW52OwogICAgICAgICRzcGVjaWFsQ29udGVudEtleSA9IHN0YXRpYzo6JG5hbWVzcGFjZXNbJ3NwZWNpYWwnXSAuICdjb250ZW50JzsKCiAgICAgICAgJGhhc05hbWVzcGFjZSA9ICRuYW1lWzBdID09PSAnXicgfHwgJG5hbWVbMF0gPT09ICdAJyB8fCAkbmFtZVswXSA9PT0gJyUnOwoKICAgICAgICAkbWF4RGVwdGggPSAxMDAwMDsKCiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICBpZiAoJG1heERlcHRoLS0gPD0gMCkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygkbmFtZSwgJGVudi0+c3RvcmUpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEgJGhhc05hbWVzcGFjZSAmJiBpc3NldCgkZW52LT5tYXJrZXIpKSB7CiAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkZW52LT5zdG9yZVskc3BlY2lhbENvbnRlbnRLZXldKSkgewogICAgICAgICAgICAgICAgICAgICRlbnYgPSAkZW52LT5zdG9yZVskc3BlY2lhbENvbnRlbnRLZXldLT5zY29wZTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkZW52LT5kZWNsYXJhdGlvblNjb3BlUGFyZW50KSkgewogICAgICAgICAgICAgICAgICAgICRlbnYgPSAkZW52LT5kZWNsYXJhdGlvblNjb3BlUGFyZW50OwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZW52ID0gJHN0b3JlRW52OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNzZXQoJGVudi0+cGFyZW50U3RvcmUpKSB7CiAgICAgICAgICAgICAgICAkZW52ID0gJGVudi0+cGFyZW50U3RvcmU7CiAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkZW52LT5wYXJlbnQpKSB7CiAgICAgICAgICAgICAgICAkZW52ID0gJGVudi0+cGFyZW50OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGVudiA9ICRzdG9yZUVudjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkZW52LT5zdG9yZVskbmFtZV0gPSAkdmFsdWU7CgogICAgICAgIGlmICgkdmFsdWVVbnJlZHVjZWQpIHsKICAgICAgICAgICAgJGVudi0+c3RvcmVVbnJlZHVjZWRbJG5hbWVdID0gJHZhbHVlVW5yZWR1Y2VkOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNldCByYXcgdmFyaWFibGUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudCAkZW52CiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVVbnJlZHVjZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFJhdygkbmFtZSwgJHZhbHVlLCBFbnZpcm9ubWVudCAkZW52LCAkdmFsdWVVbnJlZHVjZWQgPSBudWxsKQogICAgewogICAgICAgICRlbnYtPnN0b3JlWyRuYW1lXSA9ICR2YWx1ZTsKCiAgICAgICAgaWYgKCR2YWx1ZVVucmVkdWNlZCkgewogICAgICAgICAgICAkZW52LT5zdG9yZVVucmVkdWNlZFskbmFtZV0gPSAkdmFsdWVVbnJlZHVjZWQ7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHZhcmlhYmxlCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaG91bGRUaHJvdwogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQgJGVudgogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVucmVkdWNlZAogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWR8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCRuYW1lLCAkc2hvdWxkVGhyb3cgPSB0cnVlLCBFbnZpcm9ubWVudCAkZW52ID0gbnVsbCwgJHVucmVkdWNlZCA9IGZhbHNlKQogICAgewogICAgICAgICRub3JtYWxpemVkTmFtZSA9ICR0aGlzLT5ub3JtYWxpemVOYW1lKCRuYW1lKTsKICAgICAgICAkc3BlY2lhbENvbnRlbnRLZXkgPSBzdGF0aWM6OiRuYW1lc3BhY2VzWydzcGVjaWFsJ10gLiAnY29udGVudCc7CgogICAgICAgIGlmICghIGlzc2V0KCRlbnYpKSB7CiAgICAgICAgICAgICRlbnYgPSAkdGhpcy0+Z2V0U3RvcmVFbnYoKTsKICAgICAgICB9CgogICAgICAgICRoYXNOYW1lc3BhY2UgPSAkbm9ybWFsaXplZE5hbWVbMF0gPT09ICdeJyB8fCAkbm9ybWFsaXplZE5hbWVbMF0gPT09ICdAJyB8fCAkbm9ybWFsaXplZE5hbWVbMF0gPT09ICclJzsKCiAgICAgICAgJG1heERlcHRoID0gMTAwMDA7CgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaWYgKCRtYXhEZXB0aC0tIDw9IDApIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJG5vcm1hbGl6ZWROYW1lLCAkZW52LT5zdG9yZSkpIHsKICAgICAgICAgICAgICAgIGlmICgkdW5yZWR1Y2VkICYmIGlzc2V0KCRlbnYtPnN0b3JlVW5yZWR1Y2VkWyRub3JtYWxpemVkTmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbnYtPnN0b3JlVW5yZWR1Y2VkWyRub3JtYWxpemVkTmFtZV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRlbnYtPnN0b3JlWyRub3JtYWxpemVkTmFtZV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghICRoYXNOYW1lc3BhY2UgJiYgaXNzZXQoJGVudi0+bWFya2VyKSkgewogICAgICAgICAgICAgICAgaWYgKCEgZW1wdHkoJGVudi0+c3RvcmVbJHNwZWNpYWxDb250ZW50S2V5XSkpIHsKICAgICAgICAgICAgICAgICAgICAkZW52ID0gJGVudi0+c3RvcmVbJHNwZWNpYWxDb250ZW50S2V5XS0+c2NvcGU7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCEgZW1wdHkoJGVudi0+ZGVjbGFyYXRpb25TY29wZVBhcmVudCkpIHsKICAgICAgICAgICAgICAgICAgICAkZW52ID0gJGVudi0+ZGVjbGFyYXRpb25TY29wZVBhcmVudDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGVudiA9ICR0aGlzLT5yb290RW52OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkZW52LT5wYXJlbnRTdG9yZSkpIHsKICAgICAgICAgICAgICAgICRlbnYgPSAkZW52LT5wYXJlbnRTdG9yZTsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRlbnYtPnBhcmVudCkpIHsKICAgICAgICAgICAgICAgICRlbnYgPSAkZW52LT5wYXJlbnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRzaG91bGRUaHJvdykgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoIlVuZGVmaW5lZCB2YXJpYWJsZSBcJCRuYW1lIiAuICgkbWF4RGVwdGggPD0gMCA/ICcgKGluZmluaXRlIHJlY3Vyc2lvbiknIDogJycpKTsKICAgICAgICB9CgogICAgICAgIC8vIGZvdW5kIG5vdGhpbmcKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEhhcyB2YXJpYWJsZT8KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZQogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQgJGVudgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaGFzKCRuYW1lLCBFbnZpcm9ubWVudCAkZW52ID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gISBcaXNfbnVsbCgkdGhpcy0+Z2V0KCRuYW1lLCBmYWxzZSwgJGVudikpOwogICAgfQoKICAgIC8qKgogICAgICogSW5qZWN0IHZhcmlhYmxlcwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkYXJncwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5qZWN0VmFyaWFibGVzKGFycmF5ICRhcmdzKQogICAgewogICAgICAgIGlmIChlbXB0eSgkYXJncykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlciA9ICR0aGlzLT5wYXJzZXJGYWN0b3J5KF9fTUVUSE9EX18pOwoKICAgICAgICBmb3JlYWNoICgkYXJncyBhcyAkbmFtZSA9PiAkc3RyVmFsdWUpIHsKICAgICAgICAgICAgaWYgKCRuYW1lWzBdID09PSAnJCcpIHsKICAgICAgICAgICAgICAgICRuYW1lID0gc3Vic3RyKCRuYW1lLCAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRzdHJWYWx1ZSkgfHwgISAkcGFyc2VyLT5wYXJzZVZhbHVlKCRzdHJWYWx1ZSwgJHZhbHVlKSkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvZXJjZVZhbHVlKCRzdHJWYWx1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZXQoJG5hbWUsICR2YWx1ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVwbGFjZXMgdmFyaWFibGVzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIG1peGVkPiAkdmFyaWFibGVzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXBsYWNlVmFyaWFibGVzKGFycmF5ICR2YXJpYWJsZXMpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlZ2lzdGVyZWRWYXJzID0gW107CiAgICAgICAgJHRoaXMtPmFkZFZhcmlhYmxlcygkdmFyaWFibGVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlcGxhY2VzIHZhcmlhYmxlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBtaXhlZD4gJHZhcmlhYmxlcwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkVmFyaWFibGVzKGFycmF5ICR2YXJpYWJsZXMpCiAgICB7CiAgICAgICAgJHRyaWdnZXJXYXJuaW5nID0gZmFsc2U7CgogICAgICAgIGZvcmVhY2ggKCR2YXJpYWJsZXMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICghJHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyICYmICFcaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgJHRyaWdnZXJXYXJuaW5nID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnJlZ2lzdGVyZWRWYXJzWyRuYW1lXSA9ICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdHJpZ2dlcldhcm5pbmcpIHsKICAgICAgICAgICAgQHRyaWdnZXJfZXJyb3IoJ1Bhc3NpbmcgcmF3IHZhbHVlcyB0byBhcyBjdXN0b20gdmFyaWFibGVzIHRvIHRoZSBDb21waWxlciBpcyBkZXByZWNhdGVkLiBVc2UgIlxTY3NzUGhwXFNjc3NQaHBcVmFsdWVDb252ZXJ0ZXI6OnBhcnNlVmFsdWUiIG9yICJcU2Nzc1BocFxTY3NzUGhwXFZhbHVlQ29udmVydGVyOjpmcm9tUGhwIiB0byBjb252ZXJ0IHRoZW0gaW5zdGVhZC4nLCBFX1VTRVJfREVQUkVDQVRFRCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2V0IHZhcmlhYmxlcwogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhcmlhYmxlcwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFVzZSAiYWRkVmFyaWFibGVzIiBvciAicmVwbGFjZVZhcmlhYmxlcyIgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFZhcmlhYmxlcyhhcnJheSAkdmFyaWFibGVzKQogICAgewogICAgICAgIEB0cmlnZ2VyX2Vycm9yKCdUaGUgbWV0aG9kICJzZXRWYXJpYWJsZXMiIG9mIHRoZSBDb21waWxlciBpcyBkZXByZWNhdGVkLiBVc2UgdGhlICJhZGRWYXJpYWJsZXMiIG1ldGhvZCBmb3IgdGhlIGVxdWl2YWxlbnQgYmVoYXZpb3Igb3IgInJlcGxhY2VWYXJpYWJsZXMiIGlmIG1lcmdpbmcgd2l0aCBwcmV2aW91cyB2YXJpYWJsZXMgd2FzIG5vdCBkZXNpcmVkLicpOwoKICAgICAgICAkdGhpcy0+YWRkVmFyaWFibGVzKCR2YXJpYWJsZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVW5zZXQgdmFyaWFibGUKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zZXRWYXJpYWJsZSgkbmFtZSkKICAgIHsKICAgICAgICB1bnNldCgkdGhpcy0+cmVnaXN0ZXJlZFZhcnNbJG5hbWVdKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgbGlzdCBvZiB2YXJpYWJsZXMKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFyaWFibGVzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlZ2lzdGVyZWRWYXJzOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyB0byBsaXN0IG9mIHBhcnNlZCBmaWxlcwogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcGF0aAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkUGFyc2VkRmlsZSgkcGF0aCkKICAgIHsKICAgICAgICBpZiAoISBcaXNfbnVsbCgkcGF0aCkgJiYgaXNfZmlsZSgkcGF0aCkpIHsKICAgICAgICAgICAgJHRoaXMtPnBhcnNlZEZpbGVzW3JlYWxwYXRoKCRwYXRoKV0gPSBmaWxlbXRpbWUoJHBhdGgpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgbGlzdCBvZiBwYXJzZWQgZmlsZXMKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIGludD4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcnNlZEZpbGVzKCkKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcignVGhlIG1ldGhvZCAiZ2V0UGFyc2VkRmlsZXMiIG9mIHRoZSBDb21waWxlciBpcyBkZXByZWNhdGVkLiBVc2UgdGhlICJnZXRJbmNsdWRlZEZpbGVzIiBtZXRob2Qgb24gdGhlIENvbXBpbGF0aW9uUmVzdWx0IGluc3RhbmNlIHJldHVybmVkIGJ5IGNvbXBpbGVTdHJpbmcoKSBpbnN0ZWFkLiBCZSBjYXJlZnVsIHRoYXQgdGhlIHNpZ25hdHVyZSBvZiB0aGUgbWV0aG9kIGlzIGRpZmZlcmVudC4nLCBFX1VTRVJfREVQUkVDQVRFRCk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZWRGaWxlczsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBpbXBvcnQgcGF0aAogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRJbXBvcnRQYXRoKCRwYXRoKQogICAgewogICAgICAgIGlmICghIFxpbl9hcnJheSgkcGF0aCwgJHRoaXMtPmltcG9ydFBhdGhzKSkgewogICAgICAgICAgICAkdGhpcy0+aW1wb3J0UGF0aHNbXSA9ICRwYXRoOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNldCBpbXBvcnQgcGF0aHMKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xhcnJheTxzdHJpbmd8Y2FsbGFibGU+ICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRJbXBvcnRQYXRocygkcGF0aCkKICAgIHsKICAgICAgICAkcGF0aHMgPSAoYXJyYXkpICRwYXRoOwogICAgICAgICRhY3R1YWxJbXBvcnRQYXRocyA9IGFycmF5X2ZpbHRlcigkcGF0aHMsIGZ1bmN0aW9uICgkcGF0aCkgewogICAgICAgICAgICByZXR1cm4gJHBhdGggIT09ICcnOwogICAgICAgIH0pOwoKICAgICAgICAkdGhpcy0+bGVnYWN5Q3dkSW1wb3J0UGF0aCA9IFxjb3VudCgkYWN0dWFsSW1wb3J0UGF0aHMpICE9PSBcY291bnQoJHBhdGhzKTsKCiAgICAgICAgaWYgKCR0aGlzLT5sZWdhY3lDd2RJbXBvcnRQYXRoKSB7CiAgICAgICAgICAgIEB0cmlnZ2VyX2Vycm9yKCdQYXNzaW5nIGFuIGVtcHR5IHN0cmluZyBpbiB0aGUgaW1wb3J0IHBhdGhzIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlzIGRlcHJlY2F0ZWQuIElmIHRoYXRcJ3MgdGhlIGludGVuZGVkIGJlaGF2aW9yLCB0aGUgdmFsdWUgb2YgImdldGN3ZCgpIiBzaG91bGQgYmUgdXNlZCBkaXJlY3RseSBpbnN0ZWFkLiBJZiB0aGlzIHdhcyB1c2VkIGZvciByZXNvbHZpbmcgcmVsYXRpdmUgaW1wb3J0cyBvZiB0aGUgaW5wdXQgYWxvbmdzaWRlICJjaGRpciIgd2l0aCB0aGUgc291cmNlIGRpcmVjdG9yeSwgdGhlIHBhdGggb2YgdGhlIGlucHV0IGZpbGUgc2hvdWxkIGJlIHBhc3NlZCB0byAiY29tcGlsZVN0cmluZygpIiBpbnN0ZWFkLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbXBvcnRQYXRocyA9ICRhY3R1YWxJbXBvcnRQYXRoczsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBudW1iZXIgcHJlY2lzaW9uCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJG51bWJlclByZWNpc2lvbgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFRoZSBudW1iZXIgcHJlY2lzaW9uIGlzIG5vdCBjb25maWd1cmFibGUgYW55bW9yZS4gVGhlIGRlZmF1bHQgaXMgZW5vdWdoIGZvciBhbGwgYnJvd3NlcnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXROdW1iZXJQcmVjaXNpb24oJG51bWJlclByZWNpc2lvbikKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcignVGhlIG51bWJlciBwcmVjaXNpb24gaXMgbm90IGNvbmZpZ3VyYWJsZSBhbnltb3JlLiAnCiAgICAgICAgICAgIC4gJ1RoZSBkZWZhdWx0IGlzIGVub3VnaCBmb3IgYWxsIGJyb3dzZXJzLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldHMgdGhlIG91dHB1dCBzdHlsZS4KICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3R5bGUgT25lIG9mIHRoZSBPdXRwdXRTdHlsZSBjb25zdGFudHMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBPdXRwdXRTdHlsZTo6KiAkc3R5bGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldE91dHB1dFN0eWxlKCRzdHlsZSkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRzdHlsZSkgewogICAgICAgICAgICBjYXNlIE91dHB1dFN0eWxlOjpFWFBBTkRFRDoKICAgICAgICAgICAgICAgICR0aGlzLT5jb25maWd1cmVkRm9ybWF0dGVyID0gRXhwYW5kZWQ6OmNsYXNzOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIE91dHB1dFN0eWxlOjpDT01QUkVTU0VEOgogICAgICAgICAgICAgICAgJHRoaXMtPmNvbmZpZ3VyZWRGb3JtYXR0ZXIgPSBDb21wcmVzc2VkOjpjbGFzczsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ0ludmFsaWQgb3V0cHV0IHN0eWxlICIlcyIuJywgJHN0eWxlKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2V0IGZvcm1hdHRlcgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmb3JtYXR0ZXJOYW1lCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgVXNlIHtAc2VlIHNldE91dHB1dFN0eWxlfSBpbnN0ZWFkLgogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIGNsYXNzLXN0cmluZzxGb3JtYXR0ZXI+ICRmb3JtYXR0ZXJOYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRGb3JtYXR0ZXIoJGZvcm1hdHRlck5hbWUpCiAgICB7CiAgICAgICAgaWYgKCFcaW5fYXJyYXkoJGZvcm1hdHRlck5hbWUsIFtFeHBhbmRlZDo6Y2xhc3MsIENvbXByZXNzZWQ6OmNsYXNzXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgQHRyaWdnZXJfZXJyb3IoJ0Zvcm1hdHRlcnMgb3RoZXIgdGhhbiBFeHBhbmRlZCBhbmQgQ29tcHJlc3NlZCBhcmUgZGVwcmVjYXRlZC4nLCBFX1VTRVJfREVQUkVDQVRFRCk7CiAgICAgICAgfQogICAgICAgIEB0cmlnZ2VyX2Vycm9yKCdUaGUgbWV0aG9kICJzZXRGb3JtYXR0ZXIiIGlzIGRlcHJlY2F0ZWQuIFVzZSAic2V0T3V0cHV0U3R5bGUiIGluc3RlYWQuJywgRV9VU0VSX0RFUFJFQ0FURUQpOwoKICAgICAgICAkdGhpcy0+Y29uZmlndXJlZEZvcm1hdHRlciA9ICRmb3JtYXR0ZXJOYW1lOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IGxpbmUgbnVtYmVyIHN0eWxlCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxpbmVOdW1iZXJTdHlsZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFRoZSBsaW5lIG51bWJlciBvdXRwdXQgaXMgbm90IHN1cHBvcnRlZCBhbnltb3JlLiBVc2Ugc291cmNlIG1hcHMgaW5zdGVhZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldExpbmVOdW1iZXJTdHlsZSgkbGluZU51bWJlclN0eWxlKQogICAgewogICAgICAgIEB0cmlnZ2VyX2Vycm9yKCdUaGUgbGluZSBudW1iZXIgb3V0cHV0IGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZS4gJwogICAgICAgICAgICAgICAgICAgICAgIC4gJ1VzZSBzb3VyY2UgbWFwcyBpbnN0ZWFkLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbmZpZ3VyZXMgdGhlIGhhbmRsaW5nIG9mIG5vbi1BU0NJSSBvdXRwdXRzLgogICAgICoKICAgICAqIElmICRjaGFyc2V0IGlzIGB0cnVlYCwgdGhpcyB3aWxsIGluY2x1ZGUgYSBgQGNoYXJzZXRgIGRlY2xhcmF0aW9uIG9yIGEKICAgICAqIFVURi04IFtieXRlLW9yZGVyIG1hcmtdW10gaWYgdGhlIHN0eWxlc2hlZXQgY29udGFpbnMgYW55IG5vbi1BU0NJSQogICAgICogY2hhcmFjdGVycy4gT3RoZXJ3aXNlLCBpdCB3aWxsIG5ldmVyIGluY2x1ZGUgYSBgQGNoYXJzZXRgIGRlY2xhcmF0aW9uIG9yIGEKICAgICAqIGJ5dGUtb3JkZXIgbWFyay4KICAgICAqCiAgICAgKiBbYnl0ZS1vcmRlciBtYXJrXTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnl0ZV9vcmRlcl9tYXJrI1VURi04CiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJGNoYXJzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldENoYXJzZXQoJGNoYXJzZXQpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoYXJzZXQgPSAkY2hhcnNldDsKICAgIH0KCiAgICAvKioKICAgICAqIEVuYWJsZS9kaXNhYmxlIHNvdXJjZSBtYXBzCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJHNvdXJjZU1hcAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIHNlbGY6OlNPVVJDRV9NQVBfKiAkc291cmNlTWFwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRTb3VyY2VNYXAoJHNvdXJjZU1hcCkKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlTWFwID0gJHNvdXJjZU1hcDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBzb3VyY2UgbWFwIG9wdGlvbnMKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzb3VyY2VNYXBPcHRpb25zCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gIGFycmF5e3NvdXJjZVJvb3Q/OiBzdHJpbmcsIHNvdXJjZU1hcEZpbGVuYW1lPzogc3RyaW5nfG51bGwsIHNvdXJjZU1hcFVSTD86IHN0cmluZ3xudWxsLCBzb3VyY2VNYXBXcml0ZVRvPzogc3RyaW5nfG51bGwsIG91dHB1dFNvdXJjZUZpbGVzPzogYm9vbCwgc291cmNlTWFwUm9vdHBhdGg/OiBzdHJpbmcsIHNvdXJjZU1hcEJhc2VwYXRoPzogc3RyaW5nfSAkc291cmNlTWFwT3B0aW9ucwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U291cmNlTWFwT3B0aW9ucygkc291cmNlTWFwT3B0aW9ucykKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlTWFwT3B0aW9ucyA9ICRzb3VyY2VNYXBPcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXIgZnVuY3Rpb24KICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgJG5hbWUKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAgICAgICRjYWxsYmFjawogICAgICogQHBhcmFtIHN0cmluZ1tdfG51bGwgJGFyZ3VtZW50RGVjbGFyYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2lzdGVyRnVuY3Rpb24oJG5hbWUsICRjYWxsYmFjaywgJGFyZ3VtZW50RGVjbGFyYXRpb24gPSBudWxsKQogICAgewogICAgICAgIGlmIChzZWxmOjppc05hdGl2ZUZ1bmN0aW9uKCRuYW1lKSkgewogICAgICAgICAgICBAdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCdUaGUgIiVzIiBmdW5jdGlvbiBpcyBhIGNvcmUgc2FzcyBmdW5jdGlvbi4gT3ZlcnJpZGluZyBpdCB3aXRoIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIHRocm91Z2ggIiVzIiBpcyBkZXByZWNhdGVkIGFuZCB3b25cJ3QgYmUgc3VwcG9ydGVkIGluIFNjc3NQaHAgMi4wIGFueW1vcmUuJywgJG5hbWUsIF9fTUVUSE9EX18pLCBFX1VTRVJfREVQUkVDQVRFRCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGFyZ3VtZW50RGVjbGFyYXRpb24gPT09IG51bGwpIHsKICAgICAgICAgICAgQHRyaWdnZXJfZXJyb3IoJ09taXR0aW5nIHRoZSBhcmd1bWVudCBkZWNsYXJhdGlvbiB3aGVuIHJlZ2lzdGVyaW5nIGN1c3RvbSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3b25cJ3QgYmUgc3VwcG9ydGVkIGluIFNjc3NQaHAgMi4wIGFueW1vcmUuJywgRV9VU0VSX0RFUFJFQ0FURUQpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnVzZXJGdW5jdGlvbnNbJHRoaXMtPm5vcm1hbGl6ZU5hbWUoJG5hbWUpXSA9IFskY2FsbGJhY2ssICRhcmd1bWVudERlY2xhcmF0aW9uXTsKICAgIH0KCiAgICAvKioKICAgICAqIFVucmVnaXN0ZXIgZnVuY3Rpb24KICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5yZWdpc3RlckZ1bmN0aW9uKCRuYW1lKQogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT51c2VyRnVuY3Rpb25zWyR0aGlzLT5ub3JtYWxpemVOYW1lKCRuYW1lKV0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGZlYXR1cmUKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFJlZ2lzdGVyaW5nIGFkZGl0aW9uYWwgZmVhdHVyZXMgaXMgZGVwcmVjYXRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEZlYXR1cmUoJG5hbWUpCiAgICB7CiAgICAgICAgQHRyaWdnZXJfZXJyb3IoJ1JlZ2lzdGVyaW5nIGFkZGl0aW9uYWwgZmVhdHVyZXMgaXMgZGVwcmVjYXRlZC4nLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgICR0aGlzLT5yZWdpc3RlcmVkRmVhdHVyZXNbJG5hbWVdID0gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEltcG9ydCBmaWxlCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW1wb3J0RmlsZSgkcGF0aCwgT3V0cHV0QmxvY2sgJG91dCkKICAgIHsKICAgICAgICAkdGhpcy0+cHVzaENhbGxTdGFjaygnaW1wb3J0ICcgLiAkdGhpcy0+Z2V0UHJldHR5UGF0aCgkcGF0aCkpOwogICAgICAgIC8vIHNlZSBpZiB0cmVlIGlzIGNhY2hlZAogICAgICAgICRyZWFsUGF0aCA9IHJlYWxwYXRoKCRwYXRoKTsKCiAgICAgICAgaWYgKCRyZWFsUGF0aCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJHJlYWxQYXRoID0gJHBhdGg7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3Vic3RyKCRwYXRoLCAtNSkgPT09ICcuc2FzcycpIHsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZUluZGV4ID0gXGNvdW50KCR0aGlzLT5zb3VyY2VOYW1lcyk7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VOYW1lc1tdID0gJHBhdGg7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VMaW5lID0gMTsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZUNvbHVtbiA9IDE7CgogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJ1RoZSBTYXNzIGluZGVudGVkIHN5bnRheCBpcyBub3QgaW1wbGVtZW50ZWQuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmltcG9ydENhY2hlWyRyZWFsUGF0aF0pKSB7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVJbXBvcnRMb29wKCRyZWFsUGF0aCk7CgogICAgICAgICAgICAkdHJlZSA9ICR0aGlzLT5pbXBvcnRDYWNoZVskcmVhbFBhdGhdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjb2RlICAgPSBmaWxlX2dldF9jb250ZW50cygkcGF0aCk7CiAgICAgICAgICAgICRwYXJzZXIgPSAkdGhpcy0+cGFyc2VyRmFjdG9yeSgkcGF0aCk7CiAgICAgICAgICAgICR0cmVlICAgPSAkcGFyc2VyLT5wYXJzZSgkY29kZSk7CgogICAgICAgICAgICAkdGhpcy0+aW1wb3J0Q2FjaGVbJHJlYWxQYXRoXSA9ICR0cmVlOwogICAgICAgIH0KCiAgICAgICAgJGN1cnJlbnREaXJlY3RvcnkgPSAkdGhpcy0+Y3VycmVudERpcmVjdG9yeTsKICAgICAgICAkdGhpcy0+Y3VycmVudERpcmVjdG9yeSA9IGRpcm5hbWUoJHBhdGgpOwoKICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuTm9SZXR1cm4oJHRyZWUtPmNoaWxkcmVuLCAkb3V0KTsKICAgICAgICAkdGhpcy0+Y3VycmVudERpcmVjdG9yeSA9ICRjdXJyZW50RGlyZWN0b3J5OwogICAgICAgICR0aGlzLT5wb3BDYWxsU3RhY2soKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNhdmUgdGhlIGltcG9ydGVkIGZpbGVzIHdpdGggdGhlaXIgcmVzb2x2aW5nIHBhdGggY29udGV4dAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkY3VycmVudERpcmVjdG9yeQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRwYXRoCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGZpbGVQYXRoCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVnaXN0ZXJJbXBvcnQoJGN1cnJlbnREaXJlY3RvcnksICRwYXRoLCAkZmlsZVBhdGgpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlc29sdmVkSW1wb3J0c1tdID0gWydjdXJyZW50RGlyJyA9PiAkY3VycmVudERpcmVjdG9yeSwgJ3BhdGgnID0+ICRwYXRoLCAnZmlsZVBhdGgnID0+ICRmaWxlUGF0aF07CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlY3RzIHdoZXRoZXIgdGhlIGltcG9ydCBpcyBhIENTUyBpbXBvcnQuCiAgICAgKgogICAgICogRm9yIGxlZ2FjeSByZWFzb25zLCBjdXN0b20gaW1wb3J0ZXJzIGFyZSBjYWxsZWQgZm9yIHRob3NlLCBhbGxvd2luZyB0aGVtCiAgICAgKiB0byByZXBsYWNlIHRoZW0gd2l0aCBhbiBhY3R1YWwgU2FzcyBpbXBvcnQuIEhvd2V2ZXIgdGhpcyBiZWhhdmlvciBpcwogICAgICogZGVwcmVjYXRlZC4gQ3VzdG9tIGltcG9ydGVycyBhcmUgZXhwZWN0ZWQgdG8gcmV0dXJuIG51bGwgd2hlbiB0aGV5IHJlY2VpdmUKICAgICAqIGEgQ1NTIGltcG9ydC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1cmwKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0Nzc0ltcG9ydCgkdXJsKQogICAgewogICAgICAgIHJldHVybiAxID09PSBwcmVnX21hdGNoKCd+XC5jc3MkfF5odHRwcz86Ly98Xi8vficsICR1cmwpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBmaWxlIHBhdGggZm9yIGFuIGltcG9ydCB1cmwgaWYgaXQgZXhpc3RzCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICR1cmwKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkY3VycmVudERpcgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZpbmRJbXBvcnQoJHVybCwgJGN1cnJlbnREaXIgPSBudWxsKQogICAgewogICAgICAgIC8vIFZhbmlsbGEgY3NzIGFuZCBleHRlcm5hbCByZXF1ZXN0cy4gVGhlc2UgYXJlIG5vdCBtZWFudCB0byBiZSBTYXNzIGltcG9ydHMuCiAgICAgICAgLy8gQ2FsbGJhY2sgaW1wb3J0ZXJzIGFyZSBzdGlsbCBjYWxsZWQgZm9yIEJDLgogICAgICAgIGlmIChzZWxmOjppc0Nzc0ltcG9ydCgkdXJsKSkgewogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+aW1wb3J0UGF0aHMgYXMgJGRpcikgewogICAgICAgICAgICAgICAgaWYgKFxpc19zdHJpbmcoJGRpcikpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoXGlzX2NhbGxhYmxlKCRkaXIpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgY3VzdG9tIGNhbGxiYWNrIGZvciBpbXBvcnQgcGF0aAogICAgICAgICAgICAgICAgICAgICRmaWxlID0gXGNhbGxfdXNlcl9mdW5jKCRkaXIsICR1cmwpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoISBcaXNfbnVsbCgkZmlsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkZGlyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGxhYmxlRGVzY3JpcHRpb24gPSAoXGlzX29iamVjdCgkZGlyWzBdKSA/IFxnZXRfY2xhc3MoJGRpclswXSkgOiAkZGlyWzBdKS4nOjonLiRkaXJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZGlyIGluc3RhbmNlb2YgXENsb3N1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyID0gbmV3IFxSZWZsZWN0aW9uRnVuY3Rpb24oJGRpcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsc2UgIT09IHN0cnBvcygkci0+bmFtZSwgJ3tjbG9zdXJlfScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGxhYmxlRGVzY3JpcHRpb24gPSBzcHJpbnRmKCdjbG9zdXJleyVzOiVzfScsICRyLT5nZXRGaWxlTmFtZSgpLCAkci0+Z2V0U3RhcnRMaW5lKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRjbGFzcyA9ICRyLT5nZXRDbG9zdXJlU2NvcGVDbGFzcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGxhYmxlRGVzY3JpcHRpb24gPSAkY2xhc3MtPm5hbWUuJzo6Jy4kci0+bmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGxhYmxlRGVzY3JpcHRpb24gPSAkci0+bmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKFxpc19vYmplY3QoJGRpcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYWxsYWJsZURlc2NyaXB0aW9uID0gXGdldF9jbGFzcygkZGlyKSAuICc6Ol9faW52b2tlJzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYWxsYWJsZURlc2NyaXB0aW9uID0gJ2NhbGxhYmxlJzsgLy8gRmFsbGJhY2sgaWYgd2UgZG9uJ3QgaGF2ZSBhIGRlZGljYXRlZCBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEB0cmlnZ2VyX2Vycm9yKHNwcmludGYoJ1JldHVybmluZyBhIGZpbGUgdG8gaW1wb3J0IGZvciBDU1Mgb3IgZXh0ZXJuYWwgcmVmZXJlbmNlcyBpbiBjdXN0b20gaW1wb3J0ZXIgY2FsbGFibGVzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBhbnltb3JlIGluIFNjc3NQaHAgMi4wLiBUaGlzIGJlaGF2aW9yIGlzIG5vdCBjb21wbGlhbnQgd2l0aCB0aGUgU2FzcyBzcGVjaWZpY2F0aW9uLiBVcGRhdGUgeW91ciAiJXMiIGltcG9ydGVyLicsICRjYWxsYWJsZURlc2NyaXB0aW9uKSwgRV9VU0VSX0RFUFJFQ0FURUQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX251bGwoJGN1cnJlbnREaXIpKSB7CiAgICAgICAgICAgICRyZWxhdGl2ZVBhdGggPSAkdGhpcy0+cmVzb2x2ZUltcG9ydFBhdGgoJHVybCwgJGN1cnJlbnREaXIpOwoKICAgICAgICAgICAgaWYgKCFcaXNfbnVsbCgkcmVsYXRpdmVQYXRoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRyZWxhdGl2ZVBhdGg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5pbXBvcnRQYXRocyBhcyAkZGlyKSB7CiAgICAgICAgICAgIGlmIChcaXNfc3RyaW5nKCRkaXIpKSB7CiAgICAgICAgICAgICAgICAkcGF0aCA9ICR0aGlzLT5yZXNvbHZlSW1wb3J0UGF0aCgkdXJsLCAkZGlyKTsKCiAgICAgICAgICAgICAgICBpZiAoIVxpc19udWxsKCRwYXRoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGF0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKFxpc19jYWxsYWJsZSgkZGlyKSkgewogICAgICAgICAgICAgICAgLy8gY2hlY2sgY3VzdG9tIGNhbGxiYWNrIGZvciBpbXBvcnQgcGF0aAogICAgICAgICAgICAgICAgJGZpbGUgPSBcY2FsbF91c2VyX2Z1bmMoJGRpciwgJHVybCk7CgogICAgICAgICAgICAgICAgaWYgKCEgXGlzX251bGwoJGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmxlZ2FjeUN3ZEltcG9ydFBhdGgpIHsKICAgICAgICAgICAgJHBhdGggPSAkdGhpcy0+cmVzb2x2ZUltcG9ydFBhdGgoJHVybCwgZ2V0Y3dkKCkpOwoKICAgICAgICAgICAgaWYgKCFcaXNfbnVsbCgkcGF0aCkpIHsKICAgICAgICAgICAgICAgIEB0cmlnZ2VyX2Vycm9yKCdSZXNvbHZpbmcgaW1wb3J0cyByZWxhdGl2ZWx5IHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlzIGRlcHJlY2F0ZWQuIElmIHRoYXRcJ3MgdGhlIGludGVuZGVkIGJlaGF2aW9yLCB0aGUgdmFsdWUgb2YgImdldGN3ZCgpIiBzaG91bGQgYmUgYWRkZWQgYXMgYW4gaW1wb3J0IHBhdGggZXhwbGljaXRseSBpbnN0ZWFkLiBJZiB0aGlzIHdhcyB1c2VkIGZvciByZXNvbHZpbmcgcmVsYXRpdmUgaW1wb3J0cyBvZiB0aGUgaW5wdXQgYWxvbmdzaWRlICJjaGRpciIgd2l0aCB0aGUgc291cmNlIGRpcmVjdG9yeSwgdGhlIHBhdGggb2YgdGhlIGlucHV0IGZpbGUgc2hvdWxkIGJlIHBhc3NlZCB0byAiY29tcGlsZVN0cmluZygpIiBpbnN0ZWFkLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJHBhdGg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiYCR1cmxgIGZpbGUgbm90IGZvdW5kIGZvciBAaW1wb3J0Iik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1cmwKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJhc2VEaXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVzb2x2ZUltcG9ydFBhdGgoJHVybCwgJGJhc2VEaXIpCiAgICB7CiAgICAgICAgJHBhdGggPSBQYXRoOjpqb2luKCRiYXNlRGlyLCAkdXJsKTsKCiAgICAgICAgJGhhc0V4dGVuc2lvbiA9IHByZWdfbWF0Y2goJy8uc1thY11zcyQvJywgJHVybCk7CgogICAgICAgIGlmICgkaGFzRXh0ZW5zaW9uKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y2hlY2tJbXBvcnRQYXRoQ29uZmxpY3RzKCR0aGlzLT50cnlJbXBvcnRQYXRoKCRwYXRoKSk7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmNoZWNrSW1wb3J0UGF0aENvbmZsaWN0cygkdGhpcy0+dHJ5SW1wb3J0UGF0aFdpdGhFeHRlbnNpb25zKCRwYXRoKSk7CgogICAgICAgIGlmICghXGlzX251bGwoJHJlc3VsdCkpIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnRyeUltcG9ydFBhdGhBc0RpcmVjdG9yeSgkcGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJHBhdGhzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrSW1wb3J0UGF0aENvbmZsaWN0cyhhcnJheSAkcGF0aHMpCiAgICB7CiAgICAgICAgaWYgKFxjb3VudCgkcGF0aHMpID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxjb3VudCgkcGF0aHMpID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkcGF0aHNbMF07CiAgICAgICAgfQoKICAgICAgICAkZm9ybWF0dGVkUHJldHR5UGF0aHMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHBhdGhzIGFzICRwYXRoKSB7CiAgICAgICAgICAgICRmb3JtYXR0ZWRQcmV0dHlQYXRoc1tdID0gJyAgJyAuICR0aGlzLT5nZXRQcmV0dHlQYXRoKCRwYXRoKTsKICAgICAgICB9CgogICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiSXQncyBub3QgY2xlYXIgd2hpY2ggZmlsZSB0byBpbXBvcnQuIEZvdW5kOlxuIiAuIGltcGxvZGUoIlxuIiwgJGZvcm1hdHRlZFByZXR0eVBhdGhzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRyeUltcG9ydFBhdGhXaXRoRXh0ZW5zaW9ucygkcGF0aCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICR0aGlzLT50cnlJbXBvcnRQYXRoKCRwYXRoLicuc2FzcycpLAogICAgICAgICAgICAkdGhpcy0+dHJ5SW1wb3J0UGF0aCgkcGF0aC4nLnNjc3MnKQogICAgICAgICk7CgogICAgICAgIGlmICgkcmVzdWx0KSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT50cnlJbXBvcnRQYXRoKCRwYXRoLicuY3NzJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRyeUltcG9ydFBhdGgoJHBhdGgpCiAgICB7CiAgICAgICAgJHBhcnRpYWwgPSBkaXJuYW1lKCRwYXRoKS4nL18nLmJhc2VuYW1lKCRwYXRoKTsKCiAgICAgICAgJGNhbmRpZGF0ZXMgPSBbXTsKCiAgICAgICAgaWYgKGlzX2ZpbGUoJHBhcnRpYWwpKSB7CiAgICAgICAgICAgICRjYW5kaWRhdGVzW10gPSAkcGFydGlhbDsKICAgICAgICB9CgogICAgICAgIGlmIChpc19maWxlKCRwYXRoKSkgewogICAgICAgICAgICAkY2FuZGlkYXRlc1tdID0gJHBhdGg7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNhbmRpZGF0ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHRyeUltcG9ydFBhdGhBc0RpcmVjdG9yeSgkcGF0aCkKICAgIHsKICAgICAgICBpZiAoIWlzX2RpcigkcGF0aCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmNoZWNrSW1wb3J0UGF0aENvbmZsaWN0cygkdGhpcy0+dHJ5SW1wb3J0UGF0aFdpdGhFeHRlbnNpb25zKCRwYXRoLicvaW5kZXgnKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFByZXR0eVBhdGgoJHBhdGgpCiAgICB7CiAgICAgICAgaWYgKCRwYXRoID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAnKHVua25vd24gZmlsZSknOwogICAgICAgIH0KCiAgICAgICAgJG5vcm1hbGl6ZWRQYXRoID0gJHBhdGg7CiAgICAgICAgJG5vcm1hbGl6ZWRSb290RGlyZWN0b3J5ID0gJHRoaXMtPnJvb3REaXJlY3RvcnkuJy8nOwoKICAgICAgICBpZiAoXERJUkVDVE9SWV9TRVBBUkFUT1IgPT09ICdcXCcpIHsKICAgICAgICAgICAgJG5vcm1hbGl6ZWRSb290RGlyZWN0b3J5ID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkbm9ybWFsaXplZFJvb3REaXJlY3RvcnkpOwogICAgICAgICAgICAkbm9ybWFsaXplZFBhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRwYXRoKTsKICAgICAgICB9CgogICAgICAgIGlmICgwID09PSBzdHJwb3MoJG5vcm1hbGl6ZWRQYXRoLCAkbm9ybWFsaXplZFJvb3REaXJlY3RvcnkpKSB7CiAgICAgICAgICAgIHJldHVybiBzdWJzdHIoJHBhdGgsIFxzdHJsZW4oJG5vcm1hbGl6ZWRSb290RGlyZWN0b3J5KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgZW5jb2RpbmcKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIE5vbi1jb21wbGlhbnQgc3VwcG9ydCBmb3Igb3RoZXIgZW5jb2RpbmdzIHRoYW4gVVRGLTggaXMgZGVwcmVjYXRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEVuY29kaW5nKCRlbmNvZGluZykKICAgIHsKICAgICAgICBpZiAoISRlbmNvZGluZyB8fCBzdHJ0b2xvd2VyKCRlbmNvZGluZykgPT09ICd1dGYtOCcpIHsKICAgICAgICAgICAgQHRyaWdnZXJfZXJyb3Ioc3ByaW50ZignVGhlICIlcyIgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuJywgX19NRVRIT0RfXyksIEVfVVNFUl9ERVBSRUNBVEVEKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBAdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCdUaGUgIiVzIiBtZXRob2QgaXMgZGVwcmVjYXRlZC4gUGFyc2luZyB3aWxsIG9ubHkgc3VwcG9ydCBVVEYtOCBpbiBTY3NzUGhwIDIuMC4gVGhlIG5vbi1VVEYtOCBwYXJzaW5nIG9mIFNjc3NQaHAgMS54IGlzIG5vdCBzcGVjIGNvbXBsaWFudC4nLCBfX01FVEhPRF9fKSwgRV9VU0VSX0RFUFJFQ0FURUQpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVuY29kaW5nID0gJGVuY29kaW5nOwogICAgfQoKICAgIC8qKgogICAgICogSWdub3JlIGVycm9ycz8KICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJGlnbm9yZUVycm9ycwogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlcgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIElnbm9yaW5nIFNhc3MgZXJyb3JzIGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SWdub3JlRXJyb3JzKCRpZ25vcmVFcnJvcnMpCiAgICB7CiAgICAgICAgQHRyaWdnZXJfZXJyb3IoJ0lnbm9yaW5nIFNhc3MgZXJyb3JzIGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHNvdXJjZSBwb3NpdGlvbgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNvdXJjZVBvc2l0aW9uKCkKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCdUaGUgIiVzIiBtZXRob2QgaXMgZGVwcmVjYXRlZC4nLCBfX01FVEhPRF9fKSwgRV9VU0VSX0RFUFJFQ0FURUQpOwoKICAgICAgICAkc291cmNlRmlsZSA9IGlzc2V0KCR0aGlzLT5zb3VyY2VOYW1lc1skdGhpcy0+c291cmNlSW5kZXhdKSA/ICR0aGlzLT5zb3VyY2VOYW1lc1skdGhpcy0+c291cmNlSW5kZXhdIDogJyc7CgogICAgICAgIHJldHVybiBbJHNvdXJjZUZpbGUsICR0aGlzLT5zb3VyY2VMaW5lLCAkdGhpcy0+c291cmNlQ29sdW1uXTsKICAgIH0KCiAgICAvKioKICAgICAqIFRocm93IGVycm9yIChleGNlcHRpb24pCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1zZyBNZXNzYWdlIHdpdGggb3B0aW9uYWwgc3ByaW50ZigpLXN0eWxlIHZhcmFyZyBwYXJhbWV0ZXJzCiAgICAgKgogICAgICogQHJldHVybiBuZXZlcgogICAgICoKICAgICAqIEB0aHJvd3MgXFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cQ29tcGlsZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgImVycm9yIiBhbmQgdGhyb3cgdGhlIGV4Y2VwdGlvbiBpbiB0aGUgY2FsbGVyIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0aHJvd0Vycm9yKCRtc2cpCiAgICB7CiAgICAgICAgQHRyaWdnZXJfZXJyb3IoCiAgICAgICAgICAgICdUaGUgbWV0aG9kICJ0aHJvd0Vycm9yIiBpcyBkZXByZWNhdGVkLiBVc2UgImVycm9yIiBhbmQgdGhyb3cgdGhlIGV4Y2VwdGlvbiBpbiB0aGUgY2FsbGVyIGluc3RlYWQnLAogICAgICAgICAgICBFX1VTRVJfREVQUkVDQVRFRAogICAgICAgICk7CgogICAgICAgIHRocm93ICR0aGlzLT5lcnJvciguLi5mdW5jX2dldF9hcmdzKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQnVpbGQgYW4gZXJyb3IgKGV4Y2VwdGlvbikKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgJG1zZyBNZXNzYWdlIHdpdGggb3B0aW9uYWwgc3ByaW50ZigpLXN0eWxlIHZhcmFyZyBwYXJhbWV0ZXJzCiAgICAgKiBAcGFyYW0gYm9vbHxmbG9hdHxpbnR8c3RyaW5nfG51bGwgLi4uJGFyZ3MKICAgICAqCiAgICAgKiBAcmV0dXJuIENvbXBpbGVyRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlcnJvcigkbXNnLCAuLi4kYXJncykKICAgIHsKICAgICAgICBpZiAoJGFyZ3MpIHsKICAgICAgICAgICAgJG1zZyA9IHNwcmludGYoJG1zZywgLi4uJGFyZ3MpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgJHRoaXMtPmlnbm9yZUNhbGxTdGFja01lc3NhZ2UpIHsKICAgICAgICAgICAgJG1zZyA9ICR0aGlzLT5hZGRMb2NhdGlvblRvTWVzc2FnZSgkbXNnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQ29tcGlsZXJFeGNlcHRpb24oJG1zZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtc2cKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZExvY2F0aW9uVG9NZXNzYWdlKCRtc2cpCiAgICB7CiAgICAgICAgJGxpbmUgICA9ICR0aGlzLT5zb3VyY2VMaW5lOwogICAgICAgICRjb2x1bW4gPSAkdGhpcy0+c291cmNlQ29sdW1uOwoKICAgICAgICAkbG9jID0gaXNzZXQoJHRoaXMtPnNvdXJjZU5hbWVzWyR0aGlzLT5zb3VyY2VJbmRleF0pCiAgICAgICAgICAgID8gJHRoaXMtPmdldFByZXR0eVBhdGgoJHRoaXMtPnNvdXJjZU5hbWVzWyR0aGlzLT5zb3VyY2VJbmRleF0pIC4gIiBvbiBsaW5lICRsaW5lLCBhdCBjb2x1bW4gJGNvbHVtbiIKICAgICAgICAgICAgOiAibGluZTogJGxpbmUsIGNvbHVtbjogJGNvbHVtbiI7CgogICAgICAgICRtc2cgPSAiJG1zZzogJGxvYyI7CgogICAgICAgICRjYWxsU3RhY2tNc2cgPSAkdGhpcy0+Y2FsbFN0YWNrTWVzc2FnZSgpOwoKICAgICAgICBpZiAoJGNhbGxTdGFja01zZykgewogICAgICAgICAgICAkbXNnIC49ICJcbkNhbGwgU3RhY2s6XG4iIC4gJGNhbGxTdGFja01zZzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbXNnOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZnVuY3Rpb25OYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgJEV4cGVjdGVkQXJncwogICAgICogQHBhcmFtIGludCAkbmJBY3R1YWwKICAgICAqIEByZXR1cm4gQ29tcGlsZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXJyb3JBcmdzTnVtYmVyKCRmdW5jdGlvbk5hbWUsICRFeHBlY3RlZEFyZ3MsICRuYkFjdHVhbCkKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCdUaGUgIiVzIiBtZXRob2QgaXMgZGVwcmVjYXRlZC4nLCBfX01FVEhPRF9fKSwgRV9VU0VSX0RFUFJFQ0FURUQpOwoKICAgICAgICAkbmJFeHBlY3RlZCA9IFxjb3VudCgkRXhwZWN0ZWRBcmdzKTsKCiAgICAgICAgaWYgKCRuYkFjdHVhbCA+ICRuYkV4cGVjdGVkKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZXJyb3IoCiAgICAgICAgICAgICAgICAnRXJyb3I6IE9ubHkgJWQgYXJndW1lbnRzIGFsbG93ZWQgaW4gJXMoKSwgYnV0ICVkIHdlcmUgcGFzc2VkLicsCiAgICAgICAgICAgICAgICAkbmJFeHBlY3RlZCwKICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUsCiAgICAgICAgICAgICAgICAkbmJBY3R1YWwKICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbWlzc2luZyA9IFtdOwoKICAgICAgICAgICAgd2hpbGUgKGNvdW50KCRFeHBlY3RlZEFyZ3MpICYmIGNvdW50KCRFeHBlY3RlZEFyZ3MpID4gJG5iQWN0dWFsKSB7CiAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRtaXNzaW5nLCBhcnJheV9wb3AoJEV4cGVjdGVkQXJncykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmVycm9yKAogICAgICAgICAgICAgICAgJ0Vycm9yOiAlcygpIGFyZ3VtZW50JXMgJXMgbWlzc2luZy4nLAogICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSwKICAgICAgICAgICAgICAgIGNvdW50KCRtaXNzaW5nKSA+IDEgPyAncycgOiAnJywKICAgICAgICAgICAgICAgIGltcGxvZGUoJywgJywgJG1pc3NpbmcpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQmVhdXRpZnkgY2FsbCBzdGFjayBmb3Igb3V0cHV0CiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgICAgICRhbGwKICAgICAqIEBwYXJhbSBpbnR8bnVsbCAkbGltaXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsbFN0YWNrTWVzc2FnZSgkYWxsID0gZmFsc2UsICRsaW1pdCA9IG51bGwpCiAgICB7CiAgICAgICAgJGNhbGxTdGFja01zZyA9IFtdOwogICAgICAgICRuY2FsbCA9IDA7CgogICAgICAgIGlmICgkdGhpcy0+Y2FsbFN0YWNrKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJHRoaXMtPmNhbGxTdGFjaykgYXMgJGNhbGwpIHsKICAgICAgICAgICAgICAgIGlmICgkYWxsIHx8IChpc3NldCgkY2FsbFsnbiddKSAmJiAkY2FsbFsnbiddKSkgewogICAgICAgICAgICAgICAgICAgICRtc2cgPSAnIycgLiAkbmNhbGwrKyAuICcgJyAuICRjYWxsWyduJ10gLiAnICc7CiAgICAgICAgICAgICAgICAgICAgJG1zZyAuPSAoaXNzZXQoJHRoaXMtPnNvdXJjZU5hbWVzWyRjYWxsW1BhcnNlcjo6U09VUkNFX0lOREVYXV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkdGhpcy0+Z2V0UHJldHR5UGF0aCgkdGhpcy0+c291cmNlTmFtZXNbJGNhbGxbUGFyc2VyOjpTT1VSQ0VfSU5ERVhdXSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcodW5rbm93biBmaWxlKScpOwogICAgICAgICAgICAgICAgICAgICRtc2cgLj0gJyBvbiBsaW5lICcgLiAkY2FsbFtQYXJzZXI6OlNPVVJDRV9MSU5FXTsKCiAgICAgICAgICAgICAgICAgICAgJGNhbGxTdGFja01zZ1tdID0gJG1zZzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCEgXGlzX251bGwoJGxpbWl0KSAmJiAkbmNhbGwgPiAkbGltaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgiXG4iLCAkY2FsbFN0YWNrTXNnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEhhbmRsZSBpbXBvcnQgbG9vcAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGhhbmRsZUltcG9ydExvb3AoJG5hbWUpCiAgICB7CiAgICAgICAgZm9yICgkZW52ID0gJHRoaXMtPmVudjsgJGVudjsgJGVudiA9ICRlbnYtPnBhcmVudCkgewogICAgICAgICAgICBpZiAoISAkZW52LT5ibG9jaykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRmaWxlID0gJHRoaXMtPnNvdXJjZU5hbWVzWyRlbnYtPmJsb2NrLT5zb3VyY2VJbmRleF07CgogICAgICAgICAgICBpZiAoJGZpbGUgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAocmVhbHBhdGgoJGZpbGUpID09PSAkbmFtZSkgewogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdBbiBAaW1wb3J0IGxvb3AgaGFzIGJlZW4gZm91bmQ6ICVzIGltcG9ydHMgJXMnLCAkZmlsZSwgYmFzZW5hbWUoJGZpbGUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENhbGwgU0NTUyBAZnVuY3Rpb24KICAgICAqCiAgICAgKiBAcGFyYW0gQ2FsbGFibGVCbG9ja3xudWxsICRmdW5jCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICRhcmdWYWx1ZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsbFNjc3NGdW5jdGlvbigkZnVuYywgJGFyZ1ZhbHVlcykKICAgIHsKICAgICAgICBpZiAoISAkZnVuYykgewogICAgICAgICAgICByZXR1cm4gc3RhdGljOjokZGVmYXVsdFZhbHVlOwogICAgICAgIH0KICAgICAgICAkbmFtZSA9ICRmdW5jLT5uYW1lOwoKICAgICAgICAkdGhpcy0+cHVzaEVudigpOwoKICAgICAgICAvLyBzZXQgdGhlIGFyZ3MKICAgICAgICBpZiAoaXNzZXQoJGZ1bmMtPmFyZ3MpKSB7CiAgICAgICAgICAgICR0aGlzLT5hcHBseUFyZ3VtZW50cygkZnVuYy0+YXJncywgJGFyZ1ZhbHVlcyk7CiAgICAgICAgfQoKICAgICAgICAvLyB0aHJvdyBhd2F5IGxpbmVzIGFuZCBjaGlsZHJlbgogICAgICAgICR0bXAgPSBuZXcgT3V0cHV0QmxvY2soKTsKICAgICAgICAkdG1wLT5saW5lcyAgICA9IFtdOwogICAgICAgICR0bXAtPmNoaWxkcmVuID0gW107CgogICAgICAgICR0aGlzLT5lbnYtPm1hcmtlciA9ICdmdW5jdGlvbic7CgogICAgICAgIGlmICghIGVtcHR5KCRmdW5jLT5wYXJlbnRFbnYpKSB7CiAgICAgICAgICAgICR0aGlzLT5lbnYtPmRlY2xhcmF0aW9uU2NvcGVQYXJlbnQgPSAkZnVuYy0+cGFyZW50RW52OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiQGZ1bmN0aW9uICRuYW1lKCkgd2l0aG91dCBwYXJlbnRFbnYiKTsKICAgICAgICB9CgogICAgICAgICRyZXQgPSAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuKCRmdW5jLT5jaGlsZHJlbiwgJHRtcCwgJHRoaXMtPmVudi0+bWFya2VyIC4gJyAnIC4gJG5hbWUpOwoKICAgICAgICAkdGhpcy0+cG9wRW52KCk7CgogICAgICAgIHJldHVybiAhIGlzc2V0KCRyZXQpID8gc3RhdGljOjokZGVmYXVsdFZhbHVlIDogJHJldDsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGwgYnVpbHQtaW4gYW5kIHJlZ2lzdGVyZWQgKFBIUCkgZnVuY3Rpb25zCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICogQHBhcmFtIGNhbGxhYmxlICRmdW5jdGlvbgogICAgICogQHBhcmFtIGFycmF5ICAkcHJvdG90eXBlCiAgICAgKiBAcGFyYW0gYXJyYXkgICRhcmdzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxOdW1iZXJ8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsbE5hdGl2ZUZ1bmN0aW9uKCRuYW1lLCAkZnVuY3Rpb24sICRwcm90b3R5cGUsICRhcmdzKQogICAgewogICAgICAgICRsaWJOYW1lID0gKGlzX2FycmF5KCRmdW5jdGlvbikgPyBlbmQoJGZ1bmN0aW9uKSA6IG51bGwpOwogICAgICAgICRzb3J0ZWRfa3dhcmdzID0gJHRoaXMtPnNvcnROYXRpdmVGdW5jdGlvbkFyZ3MoJGxpYk5hbWUsICRwcm90b3R5cGUsICRhcmdzKTsKCiAgICAgICAgaWYgKFxpc19udWxsKCRzb3J0ZWRfa3dhcmdzKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgQGxpc3QoJHNvcnRlZCwgJGt3YXJncykgPSAkc29ydGVkX2t3YXJnczsKCiAgICAgICAgaWYgKCRuYW1lICE9PSAnaWYnKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRzb3J0ZWQgYXMgJiR2YWwpIHsKICAgICAgICAgICAgICAgIGlmICgkdmFsICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbCA9ICR0aGlzLT5yZWR1Y2UoJHZhbCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRyZXR1cm5WYWx1ZSA9IFxjYWxsX3VzZXJfZnVuYygkZnVuY3Rpb24sICRzb3J0ZWQsICRrd2FyZ3MpOwoKICAgICAgICBpZiAoISBpc3NldCgkcmV0dXJuVmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19hcnJheSgkcmV0dXJuVmFsdWUpIHx8ICRyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHJldHVyblZhbHVlOwogICAgICAgIH0KCiAgICAgICAgQHRyaWdnZXJfZXJyb3Ioc3ByaW50ZignUmV0dXJuaW5nIGEgUEhQIHZhbHVlIGZyb20gdGhlICIlcyIgY3VzdG9tIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuIEEgc2FzcyB2YWx1ZSBtdXN0IGJlIHJldHVybmVkIGluc3RlYWQuJywgJG5hbWUpLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Y29lcmNlVmFsdWUoJHJldHVyblZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBidWlsdC1pbiBmdW5jdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgTm9ybWFsaXplZCBuYW1lCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0QnVpbHRpbkZ1bmN0aW9uKCRuYW1lKQogICAgewogICAgICAgICRsaWJOYW1lID0gc2VsZjo6bm9ybWFsaXplTmF0aXZlRnVuY3Rpb25OYW1lKCRuYW1lKTsKICAgICAgICByZXR1cm4gWyR0aGlzLCAkbGliTmFtZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBOb3JtYWxpemUgbmF0aXZlIGZ1bmN0aW9uIG5hbWUKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVOYXRpdmVGdW5jdGlvbk5hbWUoJG5hbWUpCiAgICB7CiAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgiLSIsICJfIiwgJG5hbWUpOwogICAgICAgICRsaWJOYW1lID0gJ2xpYicgLiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcvXyguKS8nLAogICAgICAgICAgICBmdW5jdGlvbiAoJG0pIHsKICAgICAgICAgICAgICAgIHJldHVybiB1Y2ZpcnN0KCRtWzFdKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdWNmaXJzdCgkbmFtZSkKICAgICAgICApOwogICAgICAgIHJldHVybiAkbGliTmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGEgZnVuY3Rpb24gaXMgYSBuYXRpdmUgYnVpbHQtaW4gc2NzcyBmdW5jdGlvbiwgZm9yIGNzcyBwYXJzaW5nCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzTmF0aXZlRnVuY3Rpb24oJG5hbWUpCiAgICB7CiAgICAgICAgcmV0dXJuIG1ldGhvZF9leGlzdHMoQ29tcGlsZXI6OmNsYXNzLCBzZWxmOjpub3JtYWxpemVOYXRpdmVGdW5jdGlvbk5hbWUoJG5hbWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNvcnRzIGtleXdvcmQgYXJndW1lbnRzCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZnVuY3Rpb25OYW1lCiAgICAgKiBAcGFyYW0gYXJyYXl8bnVsbCAgJHByb3RvdHlwZXMKICAgICAqIEBwYXJhbSBhcnJheSAgJGFyZ3MKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNvcnROYXRpdmVGdW5jdGlvbkFyZ3MoJGZ1bmN0aW9uTmFtZSwgJHByb3RvdHlwZXMsICRhcmdzKQogICAgewogICAgICAgIHN0YXRpYyAkcGFyc2VyID0gbnVsbDsKCiAgICAgICAgaWYgKCEgaXNzZXQoJHByb3RvdHlwZXMpKSB7CiAgICAgICAgICAgICRrZXlBcmdzID0gW107CiAgICAgICAgICAgICRwb3NBcmdzID0gW107CgogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRhcmdzKSAmJiBcY291bnQoJGFyZ3MpICYmIFxlbmQoJGFyZ3MpID09PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGFyZ3MpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzZXBhcmF0ZSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cwogICAgICAgICAgICBmb3JlYWNoICgkYXJncyBhcyAkYXJnKSB7CiAgICAgICAgICAgICAgICBsaXN0KCRrZXksICR2YWx1ZSkgPSAkYXJnOwoKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgka2V5KSBvciBlbXB0eSgka2V5WzFdKSkgewogICAgICAgICAgICAgICAgICAgICRwb3NBcmdzW10gPSBlbXB0eSgkYXJnWzJdKSA/ICR2YWx1ZSA6ICRhcmc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRrZXlBcmdzWyRrZXlbMV1dID0gJHZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gWyRwb3NBcmdzLCAka2V5QXJnc107CiAgICAgICAgfQoKICAgICAgICAvLyBzcGVjaWZpYyBjYXNlcyA/CiAgICAgICAgaWYgKFxpbl9hcnJheSgkZnVuY3Rpb25OYW1lLCBbJ2xpYlJnYicsICdsaWJSZ2JhJywgJ2xpYkhzbCcsICdsaWJIc2xhJ10pKSB7CiAgICAgICAgICAgIC8vIG5vdGF0aW9uIDEwMCAxMjcgMjU1IC8gMCBpcyBpbiBmYWN0IGEgc2ltcGxlIGxpc3Qgb2YgNCB2YWx1ZXMKICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ3MgYXMgJGsgPT4gJGFyZykgewogICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkYXJnWzFdKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBUaGlzIGhhcHBlbnMgd2hlbiB1c2luZyBhIHRyYWlsaW5nIGNvbW1hCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJGFyZ1sxXVswXSA9PT0gVHlwZTo6VF9MSVNUICYmIFxjb3VudCgkYXJnWzFdWzJdKSA9PT0gMykgewogICAgICAgICAgICAgICAgICAgICRhcmdzWyRrXVsxXVsyXSA9ICR0aGlzLT5leHRyYWN0U2xhc2hBbHBoYUluQ29sb3JGdW5jdGlvbigkYXJnWzFdWzJdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbGlzdCgkcG9zaXRpb25hbEFyZ3MsICRuYW1lZEFyZ3MsICRuYW1lcywgJHNlcGFyYXRvciwgJGhhc1NwbGF0KSA9ICR0aGlzLT5ldmFsdWF0ZUFyZ3VtZW50cygkYXJncywgZmFsc2UpOwoKICAgICAgICBpZiAoISBcaXNfYXJyYXkocmVzZXQoJHByb3RvdHlwZXMpKSkgewogICAgICAgICAgICAkcHJvdG90eXBlcyA9IFskcHJvdG90eXBlc107CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkUHJvdG90eXBlcyA9IGFycmF5X21hcChbJHRoaXMsICdwYXJzZUZ1bmN0aW9uUHJvdG90eXBlJ10sICRwcm90b3R5cGVzKTsKICAgICAgICBhc3NlcnQoIWVtcHR5KCRwYXJzZWRQcm90b3R5cGVzKSk7CiAgICAgICAgJG1hdGNoZWRQcm90b3R5cGUgPSAkdGhpcy0+c2VsZWN0RnVuY3Rpb25Qcm90b3R5cGUoJHBhcnNlZFByb3RvdHlwZXMsIFxjb3VudCgkcG9zaXRpb25hbEFyZ3MpLCAkbmFtZXMpOwoKICAgICAgICAkdGhpcy0+dmVyaWZ5UHJvdG90eXBlKCRtYXRjaGVkUHJvdG90eXBlLCBcY291bnQoJHBvc2l0aW9uYWxBcmdzKSwgJG5hbWVzLCAkaGFzU3BsYXQpOwoKICAgICAgICAkdmFycyA9ICR0aGlzLT5hcHBseUFyZ3VtZW50c1RvRGVjbGFyYXRpb24oJG1hdGNoZWRQcm90b3R5cGUsICRwb3NpdGlvbmFsQXJncywgJG5hbWVkQXJncywgJHNlcGFyYXRvcik7CgogICAgICAgICRmaW5hbEFyZ3MgPSBbXTsKICAgICAgICAka2V5QXJncyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkbWF0Y2hlZFByb3RvdHlwZVsnYXJndW1lbnRzJ10gYXMgJGFyZ3VtZW50KSB7CiAgICAgICAgICAgIGxpc3QoJG5vcm1hbGl6ZWROYW1lLCAkb3JpZ2luYWxOYW1lLCAkZGVmYXVsdCkgPSAkYXJndW1lbnQ7CgogICAgICAgICAgICBpZiAoaXNzZXQoJHZhcnNbJG5vcm1hbGl6ZWROYW1lXSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR2YXJzWyRub3JtYWxpemVkTmFtZV07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkZGVmYXVsdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc3BlY2lhbCBudWxsIHZhbHVlIGFzIGRlZmF1bHQ6IHRyYW5zbGF0ZSB0byByZWFsIG51bGwgaGVyZQogICAgICAgICAgICBpZiAoJHZhbHVlID09PSBbVHlwZTo6VF9LRVlXT1JELCAnbnVsbCddKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZmluYWxBcmdzW10gPSAkdmFsdWU7CiAgICAgICAgICAgICRrZXlBcmdzWyRvcmlnaW5hbE5hbWVdID0gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtYXRjaGVkUHJvdG90eXBlWydyZXN0X2FyZ3VtZW50J10gIT09IG51bGwpIHsKICAgICAgICAgICAgJHZhbHVlID0gJHZhcnNbJG1hdGNoZWRQcm90b3R5cGVbJ3Jlc3RfYXJndW1lbnQnXV07CgogICAgICAgICAgICAkZmluYWxBcmdzW10gPSAkdmFsdWU7CiAgICAgICAgICAgICRrZXlBcmdzWyRtYXRjaGVkUHJvdG90eXBlWydyZXN0X2FyZ3VtZW50J11dID0gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskZmluYWxBcmdzLCAka2V5QXJnc107CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgYSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBUaGUgaW5wdXQgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBkZXNjcmliaW5nIGVhY2ggYXJndW1lbnQsIGFzIHN1cHBvcnRlZAogICAgICogaW4ge0BzZWUgcmVnaXN0ZXJGdW5jdGlvbn0uIEFyZ3VtZW50IG5hbWVzIGRvbid0IGluY2x1ZGUgdGhlIGAkYC4KICAgICAqIFRoZSBvdXRwdXQgY29udGFpbnMgdGhlIGxpc3Qgb2YgcG9zaXRpb25hbCBhcmd1bWVudCwgd2l0aCB0aGVpciBub3JtYWxpemVkCiAgICAgKiBuYW1lICh1bmRlcnNjb3JlcyBhcmUgcmVwbGFjZWQgYnkgZGFzaGVzKSwgdGhlaXIgb3JpZ2luYWwgbmFtZSAodG8gYmUgdXNlZAogICAgICogaW4gY2FzZSBvZiBlcnJvciByZXBvcnRpbmcpIGFuZCB0aGVpciBkZWZhdWx0IHZhbHVlLiBUaGUgb3V0cHV0IGFsc28gY29udGFpbnMKICAgICAqIHRoZSBub3JtYWxpemVkIG5hbWUgb2YgdGhlIHJlc3QgYXJndW1lbnQsIG9yIG51bGwgaWYgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZQogICAgICogaXMgbm90IHZhcmlhZGljLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkcHJvdG90eXBlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICogQHBocHN0YW4tcmV0dXJuIGFycmF5e2FyZ3VtZW50czogbGlzdDxhcnJheXswOiBzdHJpbmcsIDE6IHN0cmluZywgMjogYXJyYXl8TnVtYmVyfG51bGx9PiwgcmVzdF9hcmd1bWVudDogc3RyaW5nfG51bGx9CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcGFyc2VGdW5jdGlvblByb3RvdHlwZShhcnJheSAkcHJvdG90eXBlKQogICAgewogICAgICAgIHN0YXRpYyAkcGFyc2VyID0gbnVsbDsKCiAgICAgICAgJGFyZ3VtZW50cyA9IFtdOwogICAgICAgICRyZXN0QXJndW1lbnQgPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkcHJvdG90eXBlIGFzICRwKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAkcmVzdEFyZ3VtZW50KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIGFyZ3VtZW50IGRlY2xhcmF0aW9uIGlzIGludmFsaWQuIFRoZSByZXN0IGFyZ3VtZW50IG11c3QgYmUgdGhlIGxhc3Qgb25lLicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZGVmYXVsdCA9IG51bGw7CiAgICAgICAgICAgICRwID0gZXhwbG9kZSgnOicsICRwLCAyKTsKICAgICAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgnXycsICctJywgJHBbMF0pOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRwWzFdKSkgewogICAgICAgICAgICAgICAgJGRlZmF1bHRTb3VyY2UgPSB0cmltKCRwWzFdKTsKCiAgICAgICAgICAgICAgICBpZiAoJGRlZmF1bHRTb3VyY2UgPT09ICdudWxsJykgewogICAgICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVudGlhdGUgdGhpcyBudWxsIGZyb20gdGhlIHN0YXRpYzo6JG51bGwKICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdCA9IFtUeXBlOjpUX0tFWVdPUkQsICdudWxsJ107CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChcaXNfbnVsbCgkcGFyc2VyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcGFyc2VyID0gJHRoaXMtPnBhcnNlckZhY3RvcnkoX19NRVRIT0RfXyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkcGFyc2VyLT5wYXJzZVZhbHVlKCRkZWZhdWx0U291cmNlLCAkZGVmYXVsdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzdWJzdHIoJG5hbWUsIC0zKSA9PT0gJy4uLicpIHsKICAgICAgICAgICAgICAgICRyZXN0QXJndW1lbnQgPSBzdWJzdHIoJG5hbWUsIDAsIC0zKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRhcmd1bWVudHNbXSA9IFskbmFtZSwgJHBbMF0sICRkZWZhdWx0XTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ2FyZ3VtZW50cycgPT4gJGFyZ3VtZW50cywKICAgICAgICAgICAgJ3Jlc3RfYXJndW1lbnQnID0+ICRyZXN0QXJndW1lbnQsCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgdGhlIGdpdmVuIHBvc2l0aW9uYWwgYW5kIG5hbWVkIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBJZiBubyBleGFjdCBtYXRjaCBpcyBmb3VuZCwgZmluZHMgdGhlIGNsb3Nlc3QgYXBwcm94aW1hdGlvbi4gTm90ZSB0aGF0IHRoaXMKICAgICAqIGRvZXNuJ3QgZ3VhcmFudGVlIHRoYXQgJHBvc2l0aW9uYWwgYW5kICRuYW1lcyBhcmUgdmFsaWQgZm9yIHRoZSByZXR1cm5lZAogICAgICogcHJvdG90eXBlLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheVtdICAgICAgICAgICAgICAgJHByb3RvdHlwZXMKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgJHBvc2l0aW9uYWwKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJG5hbWVzIEEgc2V0IG9mIG5hbWVzLCBhcyBib3RoIGtleXMgYW5kIHZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBub24tZW1wdHktbGlzdDxhcnJheXthcmd1bWVudHM6IGxpc3Q8YXJyYXl7MDogc3RyaW5nLCAxOiBzdHJpbmcsIDI6IGFycmF5fE51bWJlcnxudWxsfT4sIHJlc3RfYXJndW1lbnQ6IHN0cmluZ3xudWxsfT4gJHByb3RvdHlwZXMKICAgICAqIEBwaHBzdGFuLXJldHVybiBhcnJheXthcmd1bWVudHM6IGxpc3Q8YXJyYXl7MDogc3RyaW5nLCAxOiBzdHJpbmcsIDI6IGFycmF5fE51bWJlcnxudWxsfT4sIHJlc3RfYXJndW1lbnQ6IHN0cmluZ3xudWxsfQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNlbGVjdEZ1bmN0aW9uUHJvdG90eXBlKGFycmF5ICRwcm90b3R5cGVzLCAkcG9zaXRpb25hbCwgYXJyYXkgJG5hbWVzKQogICAgewogICAgICAgICRmdXp6eU1hdGNoID0gbnVsbDsKICAgICAgICAkbWluTWlzbWF0Y2hEaXN0YW5jZSA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCRwcm90b3R5cGVzIGFzICRwcm90b3R5cGUpIHsKICAgICAgICAgICAgLy8gSWRlYWxseSwgZmluZCBhbiBleGFjdCBtYXRjaC4KICAgICAgICAgICAgaWYgKCR0aGlzLT5jaGVja1Byb3RvdHlwZU1hdGNoZXMoJHByb3RvdHlwZSwgJHBvc2l0aW9uYWwsICRuYW1lcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkcHJvdG90eXBlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWlzbWF0Y2hEaXN0YW5jZSA9IFxjb3VudCgkcHJvdG90eXBlWydhcmd1bWVudHMnXSkgLSAkcG9zaXRpb25hbDsKCiAgICAgICAgICAgIGlmICgkbWluTWlzbWF0Y2hEaXN0YW5jZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKGFicygkbWlzbWF0Y2hEaXN0YW5jZSkgPiBhYnMoJG1pbk1pc21hdGNoRGlzdGFuY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSWYgdHdvIG92ZXJsb2FkcyBoYXZlIHRoZSBzYW1lIG1pc21hdGNoIGRpc3RhbmNlLCBmYXZvciB0aGUgb3ZlcmxvYWQKICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIG1vcmUgYXJndW1lbnRzLgogICAgICAgICAgICAgICAgaWYgKGFicygkbWlzbWF0Y2hEaXN0YW5jZSkgPT09IGFicygkbWluTWlzbWF0Y2hEaXN0YW5jZSkgJiYgJG1pc21hdGNoRGlzdGFuY2UgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRtaW5NaXNtYXRjaERpc3RhbmNlID0gJG1pc21hdGNoRGlzdGFuY2U7CiAgICAgICAgICAgICRmdXp6eU1hdGNoID0gJHByb3RvdHlwZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZnV6enlNYXRjaDsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBhcmd1bWVudCBpbnZvY2F0aW9uIG1hdGNoZXMgdGhlIGNhbGxhYmxlIHByb3RvdHlwZS4KICAgICAqCiAgICAgKiBUaGUgcnVsZXMgYXJlIHNpbWlsYXIgdG8ge0BzZWUgdmVyaWZ5UHJvdG90eXBlfS4gVGhlIGJvb2xlYW4gcmV0dXJuIHZhbHVlCiAgICAgKiBhdm9pZHMgdGhlIG92ZXJoZWFkIG9mIGJ1aWxkaW5nIGFuZCBjYXRjaGluZyBleGNlcHRpb25zIHdoZW4gdGhlIHJlYXNvbiBvZgogICAgICogbm90IG1hdGNoaW5nIHRoZSBwcm90b3R5cGUgZG9lcyBub3QgbmVlZCB0byBiZSBrbm93bi4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICRwcm90b3R5cGUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgJHBvc2l0aW9uYWwKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJG5hbWVzCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gYXJyYXl7YXJndW1lbnRzOiBsaXN0PGFycmF5ezA6IHN0cmluZywgMTogc3RyaW5nLCAyOiBhcnJheXxOdW1iZXJ8bnVsbH0+LCByZXN0X2FyZ3VtZW50OiBzdHJpbmd8bnVsbH0gJHByb3RvdHlwZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrUHJvdG90eXBlTWF0Y2hlcyhhcnJheSAkcHJvdG90eXBlLCAkcG9zaXRpb25hbCwgYXJyYXkgJG5hbWVzKQogICAgewogICAgICAgICRuYW1lVXNlZCA9IDA7CgogICAgICAgIGZvcmVhY2ggKCRwcm90b3R5cGVbJ2FyZ3VtZW50cyddIGFzICRpID0+ICRhcmd1bWVudCkgewogICAgICAgICAgICBsaXN0ICgkbmFtZSwgJG9yaWdpbmFsTmFtZSwgJGRlZmF1bHQpID0gJGFyZ3VtZW50OwoKICAgICAgICAgICAgaWYgKCRpIDwgJHBvc2l0aW9uYWwpIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbmFtZXNbJG5hbWVdKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRuYW1lc1skbmFtZV0pKSB7CiAgICAgICAgICAgICAgICAkbmFtZVVzZWQrKzsKICAgICAgICAgICAgfSBlbHNlaWYgKCRkZWZhdWx0ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkcHJvdG90eXBlWydyZXN0X2FyZ3VtZW50J10gIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHBvc2l0aW9uYWwgPiBcY291bnQoJHByb3RvdHlwZVsnYXJndW1lbnRzJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkbmFtZVVzZWQgPCBcY291bnQoJG5hbWVzKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFZlcmlmaWVzIHRoYXQgdGhlIGFyZ3VtZW50IGludm9jYXRpb24gaXMgdmFsaWQgZm9yIHRoZSBjYWxsYWJsZSBwcm90b3R5cGUuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAkcHJvdG90eXBlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICRwb3NpdGlvbmFsCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBzdHJpbmc+ICRuYW1lcwogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAkaGFzU3BsYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBhcnJheXthcmd1bWVudHM6IGxpc3Q8YXJyYXl7MDogc3RyaW5nLCAxOiBzdHJpbmcsIDI6IGFycmF5fE51bWJlcnxudWxsfT4sIHJlc3RfYXJndW1lbnQ6IHN0cmluZ3xudWxsfSAkcHJvdG90eXBlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5UHJvdG90eXBlKGFycmF5ICRwcm90b3R5cGUsICRwb3NpdGlvbmFsLCBhcnJheSAkbmFtZXMsICRoYXNTcGxhdCkKICAgIHsKICAgICAgICAkbmFtZVVzZWQgPSAwOwoKICAgICAgICBmb3JlYWNoICgkcHJvdG90eXBlWydhcmd1bWVudHMnXSBhcyAkaSA9PiAkYXJndW1lbnQpIHsKICAgICAgICAgICAgbGlzdCAoJG5hbWUsICRvcmlnaW5hbE5hbWUsICRkZWZhdWx0KSA9ICRhcmd1bWVudDsKCiAgICAgICAgICAgIGlmICgkaSA8ICRwb3NpdGlvbmFsKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG5hbWVzWyRuYW1lXSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKCdBcmd1bWVudCAkJXMgd2FzIHBhc3NlZCBib3RoIGJ5IHBvc2l0aW9uIGFuZCBieSBuYW1lLicsICRvcmlnaW5hbE5hbWUpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRuYW1lc1skbmFtZV0pKSB7CiAgICAgICAgICAgICAgICAkbmFtZVVzZWQrKzsKICAgICAgICAgICAgfSBlbHNlaWYgKCRkZWZhdWx0ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKCdNaXNzaW5nIGFyZ3VtZW50ICQlcycsICRvcmlnaW5hbE5hbWUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRwcm90b3R5cGVbJ3Jlc3RfYXJndW1lbnQnXSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoJHBvc2l0aW9uYWwgPiBcY291bnQoJHByb3RvdHlwZVsnYXJndW1lbnRzJ10pKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gc3ByaW50ZigKICAgICAgICAgICAgICAgICdPbmx5ICVkICVzYXJndW1lbnQlcyBhbGxvd2VkLCBidXQgJWQgJXMgcGFzc2VkLicsCiAgICAgICAgICAgICAgICBcY291bnQoJHByb3RvdHlwZVsnYXJndW1lbnRzJ10pLAogICAgICAgICAgICAgICAgZW1wdHkoJG5hbWVzKSA/ICcnIDogJ3Bvc2l0aW9uYWwgJywKICAgICAgICAgICAgICAgIFxjb3VudCgkcHJvdG90eXBlWydhcmd1bWVudHMnXSkgPT09IDEgPyAnJyA6ICdzJywKICAgICAgICAgICAgICAgICRwb3NpdGlvbmFsLAogICAgICAgICAgICAgICAgJHBvc2l0aW9uYWwgPT09IDEgPyAnd2FzJyA6ICd3ZXJlJwogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoISRoYXNTcGxhdCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJG1lc3NhZ2UpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWVzc2FnZSA9ICR0aGlzLT5hZGRMb2NhdGlvblRvTWVzc2FnZSgkbWVzc2FnZSk7CiAgICAgICAgICAgICRtZXNzYWdlIC49ICJcblRoaXMgd2lsbCBiZSBhbiBlcnJvciBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2Fzcy4iOwogICAgICAgICAgICAkdGhpcy0+bG9nZ2VyLT53YXJuKCRtZXNzYWdlLCB0cnVlKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbmFtZVVzZWQgPCBcY291bnQoJG5hbWVzKSkgewogICAgICAgICAgICAkdW5rbm93bk5hbWVzID0gYXJyYXlfdmFsdWVzKGFycmF5X2RpZmYoJG5hbWVzLCBhcnJheV9jb2x1bW4oJHByb3RvdHlwZVsnYXJndW1lbnRzJ10sIDApKSk7CiAgICAgICAgICAgICRsYXN0TmFtZSA9IGFycmF5X3BvcCgkdW5rbm93bk5hbWVzKTsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgJ05vIGFyZ3VtZW50JXMgbmFtZWQgJCVzJXMuJywKICAgICAgICAgICAgICAgICR1bmtub3duTmFtZXMgPyAncycgOiAnJywKICAgICAgICAgICAgICAgICR1bmtub3duTmFtZXMgPyBpbXBsb2RlKCcsICQnLCAkdW5rbm93bk5hbWVzKSAuICcgb3IgJCcgOiAnJywKICAgICAgICAgICAgICAgICRsYXN0TmFtZQogICAgICAgICAgICApOwogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigkbWVzc2FnZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGVzIHRoZSBhcmd1bWVudCBmcm9tIHRoZSBpbnZvY2F0aW9uLgogICAgICoKICAgICAqIFRoaXMgcmV0dXJucyBzZXZlcmFsIHRoaW5ncyBhYm91dCB0aGlzIGludm9jYXRpb246CiAgICAgKiAtIHRoZSBsaXN0IG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzCiAgICAgKiAtIHRoZSBtYXAgb2YgbmFtZWQgYXJndW1lbnRzLCBpbmRleGVkIGJ5IG5vcm1hbGl6ZWQgbmFtZXMKICAgICAqIC0gdGhlIHNldCBvZiBuYW1lcyB1c2VkIGluIHRoZSBhcmd1bWVudHMgKHRoYXQncyBhbiBhcnJheSB1c2luZyB0aGUgbm9ybWFsaXplZCBuYW1lcyBhcyBrZXlzIGZvciBPKDEpIGFjY2VzcykKICAgICAqIC0gdGhlIHNlcGFyYXRvciB1c2VkIGJ5IHRoZSBsaXN0IHVzaW5nIHRoZSBzcGxhdCBvcGVyYXRvciwgaWYgYW55CiAgICAgKiAtIGEgYm9vbGVhbiBpbmRpY2F0b3Igd2hldGhlciBhbnkgc3BsYXQgYXJndW1lbnQgKGxpc3Qgb3IgbWFwKSB3YXMgdXNlZCwgdG8gc3VwcG9ydCB0aGUgaW5jb21wbGV0ZSBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5W10gJGFyZ3MKICAgICAqIEBwYXJhbSBib29sICAgICRyZWR1Y2UgV2hldGhlciBhcmd1bWVudHMgc2hvdWxkIGJlIHJlZHVjZWQgdG8gdGhlaXIgdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKgogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uCiAgICAgKgogICAgICogQHBocHN0YW4tcmV0dXJuIGFycmF5ezA6IGxpc3Q8YXJyYXl8TnVtYmVyPiwgMTogYXJyYXk8c3RyaW5nLCBhcnJheXxOdW1iZXI+LCAyOiBhcnJheTxzdHJpbmcsIHN0cmluZz4sIDM6IHN0cmluZ3xudWxsLCA0OiBib29sfQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV2YWx1YXRlQXJndW1lbnRzKGFycmF5ICRhcmdzLCAkcmVkdWNlID0gdHJ1ZSkKICAgIHsKICAgICAgICAvLyB0aGlzIHJlcHJlc2VudHMgdHJhaWxpbmcgY29tbWFzCiAgICAgICAgaWYgKFxjb3VudCgkYXJncykgJiYgZW5kKCRhcmdzKSA9PT0gc3RhdGljOjokbnVsbCkgewogICAgICAgICAgICBhcnJheV9wb3AoJGFyZ3MpOwogICAgICAgIH0KCiAgICAgICAgJHNwbGF0U2VwYXJhdG9yID0gbnVsbDsKICAgICAgICAka2V5d29yZEFyZ3MgPSBbXTsKICAgICAgICAkbmFtZXMgPSBbXTsKICAgICAgICAkcG9zaXRpb25hbEFyZ3MgPSBbXTsKICAgICAgICAkaGFzS2V5d29yZEFyZ3VtZW50ID0gZmFsc2U7CiAgICAgICAgJGhhc1NwbGF0ID0gZmFsc2U7CgogICAgICAgIGZvcmVhY2ggKCRhcmdzIGFzICRhcmcpIHsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkYXJnWzBdKSkgewogICAgICAgICAgICAgICAgJGhhc0tleXdvcmRBcmd1bWVudCA9IHRydWU7CgogICAgICAgICAgICAgICAgYXNzZXJ0KFxpc19zdHJpbmcoJGFyZ1swXVsxXSkpOwogICAgICAgICAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgnXycsICctJywgJGFyZ1swXVsxXSk7CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRrZXl3b3JkQXJnc1skbmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oc3ByaW50ZignRHVwbGljYXRlIG5hbWVkIGFyZ3VtZW50ICQlcy4nLCAkYXJnWzBdWzFdKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGtleXdvcmRBcmdzWyRuYW1lXSA9ICR0aGlzLT5tYXliZVJlZHVjZSgkcmVkdWNlLCAkYXJnWzFdKTsKICAgICAgICAgICAgICAgICRuYW1lc1skbmFtZV0gPSAkbmFtZTsKICAgICAgICAgICAgfSBlbHNlaWYgKCEgZW1wdHkoJGFyZ1syXSkpIHsKICAgICAgICAgICAgICAgIC8vICRhcmdbMl0gbWVhbnMgYSB2YXIgZm9sbG93ZWQgYnkgLi4uIGluIHRoZSBhcmcgKCRsaXN0Li4uICkKICAgICAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+cmVkdWNlKCRhcmdbMV0sIHRydWUpOwogICAgICAgICAgICAgICAgJGhhc1NwbGF0ID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICBpZiAoJHZhbFswXSA9PT0gVHlwZTo6VF9MSVNUKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbFsyXSBhcyAkaXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoXGlzX251bGwoJHNwbGF0U2VwYXJhdG9yKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNwbGF0U2VwYXJhdG9yID0gJHZhbFsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHBvc2l0aW9uYWxBcmdzW10gPSAkdGhpcy0+bWF5YmVSZWR1Y2UoJHJlZHVjZSwgJGl0ZW0pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWxbM10pICYmIFxpc19hcnJheSgkdmFsWzNdKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsWzNdIGFzICRuYW1lID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoXGlzX3N0cmluZygkbmFtZSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub3JtYWxpemVkTmFtZSA9IHN0cl9yZXBsYWNlKCdfJywgJy0nLCAkbmFtZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRrZXl3b3JkQXJnc1skbm9ybWFsaXplZE5hbWVdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKHNwcmludGYoJ0R1cGxpY2F0ZSBuYW1lZCBhcmd1bWVudCAkJXMuJywgJG5hbWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5d29yZEFyZ3NbJG5vcm1hbGl6ZWROYW1lXSA9ICR0aGlzLT5tYXliZVJlZHVjZSgkcmVkdWNlLCAkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZXNbJG5vcm1hbGl6ZWROYW1lXSA9ICRub3JtYWxpemVkTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoYXNLZXl3b3JkQXJndW1lbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2YWxbMF0gPT09IFR5cGU6OlRfTUFQKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbFsxXSBhcyAkaSA9PiAkbmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkdGhpcy0+Y29lcmNlU3RyaW5nKCRuYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtID0gJHZhbFsyXVskaV07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBpc19udW1lcmljKCRuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vcm1hbGl6ZWROYW1lID0gc3RyX3JlcGxhY2UoJ18nLCAnLScsICRuYW1lKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGtleXdvcmRBcmdzWyRub3JtYWxpemVkTmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oc3ByaW50ZignRHVwbGljYXRlIG5hbWVkIGFyZ3VtZW50ICQlcy4nLCAkbmFtZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrZXl3b3JkQXJnc1skbm9ybWFsaXplZE5hbWVdID0gJHRoaXMtPm1heWJlUmVkdWNlKCRyZWR1Y2UsICRpdGVtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc1skbm9ybWFsaXplZE5hbWVdID0gJG5vcm1hbGl6ZWROYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhhc0tleXdvcmRBcmd1bWVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXGlzX251bGwoJHNwbGF0U2VwYXJhdG9yKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcGxhdFNlcGFyYXRvciA9ICR2YWxbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBvc2l0aW9uYWxBcmdzW10gPSAkdGhpcy0+bWF5YmVSZWR1Y2UoJHJlZHVjZSwgJGl0ZW0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2YWxbMF0gIT09IFR5cGU6OlRfTlVMTCkgeyAvLyB2YWx1ZXMgb3RoZXIgdGhhbiBudWxsIGFyZSB0cmVhdGVkIGEgc2luZ2xlLWVsZW1lbnQgbGlzdHMsIHdoaWxlIG51bGwgaXMgdGhlIGVtcHR5IGxpc3QKICAgICAgICAgICAgICAgICAgICAkcG9zaXRpb25hbEFyZ3NbXSA9ICR0aGlzLT5tYXliZVJlZHVjZSgkcmVkdWNlLCAkdmFsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRoYXNLZXl3b3JkQXJndW1lbnQpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdQb3NpdGlvbmFsIGFyZ3VtZW50cyBtdXN0IGNvbWUgYmVmb3JlIGtleXdvcmQgYXJndW1lbnRzLicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHBvc2l0aW9uYWxBcmdzW10gPSAkdGhpcy0+bWF5YmVSZWR1Y2UoJHJlZHVjZSwgJGFyZ1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHBvc2l0aW9uYWxBcmdzLCAka2V5d29yZEFyZ3MsICRuYW1lcywgJHNwbGF0U2VwYXJhdG9yLCAkaGFzU3BsYXRdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAkcmVkdWNlCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8TnVtYmVyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWF5YmVSZWR1Y2UoJHJlZHVjZSwgJHZhbHVlKQogICAgewogICAgICAgIGlmICgkcmVkdWNlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVkdWNlKCR2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQXBwbHkgYXJndW1lbnQgdmFsdWVzIHBlciBkZWZpbml0aW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5W10gICAgJGFyZ0RlZgogICAgICogQHBhcmFtIGFycmF5fG51bGwgJGFyZ1ZhbHVlcwogICAgICogQHBhcmFtIGJvb2wgICAgICAgJHN0b3JlSW5FbnYKICAgICAqIEBwYXJhbSBib29sICAgICAgICRyZWR1Y2UgICAgIG9ubHkgdXNlZCBpZiAkc3RvcmVJbkVudiA9IGZhbHNlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIGFycmF5fE51bWJlcj4KICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PGFycmF5ezA6IHN0cmluZywgMTogYXJyYXl8TnVtYmVyfG51bGwsIDI6IGJvb2x9PiAkYXJnRGVmCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcHBseUFyZ3VtZW50cygkYXJnRGVmLCAkYXJnVmFsdWVzLCAkc3RvcmVJbkVudiA9IHRydWUsICRyZWR1Y2UgPSB0cnVlKQogICAgewogICAgICAgICRvdXRwdXQgPSBbXTsKCiAgICAgICAgaWYgKFxpc19udWxsKCRhcmdWYWx1ZXMpKSB7CiAgICAgICAgICAgICRhcmdWYWx1ZXMgPSBbXTsKICAgICAgICB9CgogICAgICAgIGlmICgkc3RvcmVJbkVudikgewogICAgICAgICAgICAkc3RvcmVFbnYgPSAkdGhpcy0+Z2V0U3RvcmVFbnYoKTsKCiAgICAgICAgICAgICRlbnYgPSBuZXcgRW52aXJvbm1lbnQoKTsKICAgICAgICAgICAgJGVudi0+c3RvcmUgPSAkc3RvcmVFbnYtPnN0b3JlOwogICAgICAgIH0KCiAgICAgICAgJHByb3RvdHlwZSA9IFsnYXJndW1lbnRzJyA9PiBbXSwgJ3Jlc3RfYXJndW1lbnQnID0+IG51bGxdOwogICAgICAgICRvcmlnaW5hbFJlc3RBcmd1bWVudE5hbWUgPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkYXJnRGVmIGFzICRhcmcpIHsKICAgICAgICAgICAgbGlzdCgkbmFtZSwgJGRlZmF1bHQsICRpc1ZhcmlhYmxlKSA9ICRhcmc7CiAgICAgICAgICAgICRub3JtYWxpemVkTmFtZSA9IHN0cl9yZXBsYWNlKCdfJywgJy0nLCAkbmFtZSk7CgogICAgICAgICAgICBpZiAoJGlzVmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICRvcmlnaW5hbFJlc3RBcmd1bWVudE5hbWUgPSAkbmFtZTsKICAgICAgICAgICAgICAgICRwcm90b3R5cGVbJ3Jlc3RfYXJndW1lbnQnXSA9ICRub3JtYWxpemVkTmFtZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwcm90b3R5cGVbJ2FyZ3VtZW50cyddW10gPSBbJG5vcm1hbGl6ZWROYW1lLCAkbmFtZSwgIWVtcHR5KCRkZWZhdWx0KSA/ICRkZWZhdWx0IDogbnVsbF07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGxpc3QoJHBvc2l0aW9uYWxBcmdzLCAkbmFtZWRBcmdzLCAkbmFtZXMsICRzcGxhdFNlcGFyYXRvciwgJGhhc1NwbGF0KSA9ICR0aGlzLT5ldmFsdWF0ZUFyZ3VtZW50cygkYXJnVmFsdWVzLCAkcmVkdWNlKTsKCiAgICAgICAgJHRoaXMtPnZlcmlmeVByb3RvdHlwZSgkcHJvdG90eXBlLCBcY291bnQoJHBvc2l0aW9uYWxBcmdzKSwgJG5hbWVzLCAkaGFzU3BsYXQpOwoKICAgICAgICAkdmFycyA9ICR0aGlzLT5hcHBseUFyZ3VtZW50c1RvRGVjbGFyYXRpb24oJHByb3RvdHlwZSwgJHBvc2l0aW9uYWxBcmdzLCAkbmFtZWRBcmdzLCAkc3BsYXRTZXBhcmF0b3IpOwoKICAgICAgICBmb3JlYWNoICgkcHJvdG90eXBlWydhcmd1bWVudHMnXSBhcyAkYXJndW1lbnQpIHsKICAgICAgICAgICAgbGlzdCgkbm9ybWFsaXplZE5hbWUsICRuYW1lKSA9ICRhcmd1bWVudDsKCiAgICAgICAgICAgIGlmICghaXNzZXQoJHZhcnNbJG5vcm1hbGl6ZWROYW1lXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdmFsID0gJHZhcnNbJG5vcm1hbGl6ZWROYW1lXTsKCiAgICAgICAgICAgIGlmICgkc3RvcmVJbkVudikgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldCgkbmFtZSwgJHRoaXMtPnJlZHVjZSgkdmFsLCB0cnVlKSwgdHJ1ZSwgJGVudik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0WyRuYW1lXSA9ICgkcmVkdWNlID8gJHRoaXMtPnJlZHVjZSgkdmFsLCB0cnVlKSA6ICR2YWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHByb3RvdHlwZVsncmVzdF9hcmd1bWVudCddICE9PSBudWxsKSB7CiAgICAgICAgICAgIGFzc2VydCgkb3JpZ2luYWxSZXN0QXJndW1lbnROYW1lICE9PSBudWxsKTsKICAgICAgICAgICAgJG5hbWUgPSAkb3JpZ2luYWxSZXN0QXJndW1lbnROYW1lOwogICAgICAgICAgICAkdmFsID0gJHZhcnNbJHByb3RvdHlwZVsncmVzdF9hcmd1bWVudCddXTsKCiAgICAgICAgICAgIGlmICgkc3RvcmVJbkVudikgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldCgkbmFtZSwgJHRoaXMtPnJlZHVjZSgkdmFsLCB0cnVlKSwgdHJ1ZSwgJGVudik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0WyRuYW1lXSA9ICgkcmVkdWNlID8gJHRoaXMtPnJlZHVjZSgkdmFsLCB0cnVlKSA6ICR2YWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHN0b3JlSW5FbnYpIHsKICAgICAgICAgICAgJHN0b3JlRW52LT5zdG9yZSA9ICRlbnYtPnN0b3JlOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHByb3RvdHlwZVsnYXJndW1lbnRzJ10gYXMgJGFyZ3VtZW50KSB7CiAgICAgICAgICAgIGxpc3QoJG5vcm1hbGl6ZWROYW1lLCAkbmFtZSwgJGRlZmF1bHQpID0gJGFyZ3VtZW50OwoKICAgICAgICAgICAgaWYgKGlzc2V0KCR2YXJzWyRub3JtYWxpemVkTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBhc3NlcnQoJGRlZmF1bHQgIT09IG51bGwpOwoKICAgICAgICAgICAgaWYgKCRzdG9yZUluRW52KSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0KCRuYW1lLCAkdGhpcy0+cmVkdWNlKCRkZWZhdWx0LCB0cnVlKSwgdHJ1ZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0WyRuYW1lXSA9ICgkcmVkdWNlID8gJHRoaXMtPnJlZHVjZSgkZGVmYXVsdCwgdHJ1ZSkgOiAkZGVmYXVsdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkb3V0cHV0OwogICAgfQoKICAgIC8qKgogICAgICogQXBwbHkgYXJndW1lbnQgdmFsdWVzIHBlciBkZWZpbml0aW9uLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCB0aGUgYXJndW1lbnRzIGFyZSB2YWxpZCBmb3IgdGhlIHByb3ZpZGVkIHByb3RvdHlwZS4KICAgICAqIFRoZSB2YWxpZGF0aW9uIHdpdGgge0BzZWUgdmVyaWZ5UHJvdG90eXBlfSBtdXN0IGhhdmUgYmVlbiBydW4gYmVmb3JlIGNhbGxpbmcKICAgICAqIGl0LgogICAgICogQXJndW1lbnRzIGFyZSByZXR1cm5lZCBhcyBhIG1hcCBmcm9tIHRoZSBub3JtYWxpemVkIGFyZ3VtZW50IG5hbWVzIHRvIHRoZQogICAgICogdmFsdWUuIEFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBjb2xsZWN0ZWQgaW4gYSBzYXNzIGFyZ3VtZW50IGxpc3QgYXZhaWxhYmxlCiAgICAgKiB1bmRlciB0aGUgbmFtZSBvZiB0aGUgcmVzdCBhcmd1bWVudCBpbiB0aGUgcmVzdWx0LgogICAgICoKICAgICAqIERlZmF1bHRzIGFyZSBub3QgYXBwbGllZCBhcyB0aGV5IGFyZSByZXNvbHZlZCBpbiBhIGRpZmZlcmVudCBlbnZpcm9ubWVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICRwcm90b3R5cGUKICAgICAqIEBwYXJhbSBhcnJheTxhcnJheXxOdW1iZXI+ICAgICAgICAgJHBvc2l0aW9uYWxBcmdzCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBhcnJheXxOdW1iZXI+ICRuYW1lZEFyZ3MKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAgICAgICAgJHNwbGF0U2VwYXJhdG9yCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIGFycmF5fE51bWJlcj4KICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBhcnJheXthcmd1bWVudHM6IGxpc3Q8YXJyYXl7MDogc3RyaW5nLCAxOiBzdHJpbmcsIDI6IGFycmF5fE51bWJlcnxudWxsfT4sIHJlc3RfYXJndW1lbnQ6IHN0cmluZ3xudWxsfSAkcHJvdG90eXBlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlBcmd1bWVudHNUb0RlY2xhcmF0aW9uKGFycmF5ICRwcm90b3R5cGUsIGFycmF5ICRwb3NpdGlvbmFsQXJncywgYXJyYXkgJG5hbWVkQXJncywgJHNwbGF0U2VwYXJhdG9yKQogICAgewogICAgICAgICRvdXRwdXQgPSBbXTsKICAgICAgICAkbWluTGVuZ3RoID0gbWluKFxjb3VudCgkcG9zaXRpb25hbEFyZ3MpLCBcY291bnQoJHByb3RvdHlwZVsnYXJndW1lbnRzJ10pKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG1pbkxlbmd0aDsgJGkrKykgewogICAgICAgICAgICBsaXN0KCRuYW1lKSA9ICRwcm90b3R5cGVbJ2FyZ3VtZW50cyddWyRpXTsKICAgICAgICAgICAgJHZhbCA9ICRwb3NpdGlvbmFsQXJnc1skaV07CgogICAgICAgICAgICAkb3V0cHV0WyRuYW1lXSA9ICR2YWw7CiAgICAgICAgfQoKICAgICAgICAkcmVzdE5hbWVkID0gJG5hbWVkQXJnczsKCiAgICAgICAgZm9yICgkaSA9IFxjb3VudCgkcG9zaXRpb25hbEFyZ3MpOyAkaSA8IFxjb3VudCgkcHJvdG90eXBlWydhcmd1bWVudHMnXSk7ICRpKyspIHsKICAgICAgICAgICAgJGFyZ3VtZW50ID0gJHByb3RvdHlwZVsnYXJndW1lbnRzJ11bJGldOwogICAgICAgICAgICBsaXN0KCRuYW1lKSA9ICRhcmd1bWVudDsKCiAgICAgICAgICAgIGlmIChpc3NldCgkbmFtZWRBcmdzWyRuYW1lXSkpIHsKICAgICAgICAgICAgICAgICR2YWwgPSAkbmFtZWRBcmdzWyRuYW1lXTsKICAgICAgICAgICAgICAgIHVuc2V0KCRyZXN0TmFtZWRbJG5hbWVdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkb3V0cHV0WyRuYW1lXSA9ICR2YWw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHByb3RvdHlwZVsncmVzdF9hcmd1bWVudCddICE9PSBudWxsKSB7CiAgICAgICAgICAgICRuYW1lID0gJHByb3RvdHlwZVsncmVzdF9hcmd1bWVudCddOwogICAgICAgICAgICAkcmVzdCA9IGFycmF5X3ZhbHVlcyhhcnJheV9zbGljZSgkcG9zaXRpb25hbEFyZ3MsIFxjb3VudCgkcHJvdG90eXBlWydhcmd1bWVudHMnXSkpKTsKCiAgICAgICAgICAgICR2YWwgPSBbVHlwZTo6VF9MSVNULCBcaXNfbnVsbCgkc3BsYXRTZXBhcmF0b3IpID8gJywnIDogJHNwbGF0U2VwYXJhdG9yICwgJHJlc3QsICRyZXN0TmFtZWRdOwoKICAgICAgICAgICAgJG91dHB1dFskbmFtZV0gPSAkdmFsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvdXRwdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2VyY2UgYSBwaHAgdmFsdWUgaW50byBhIHNjc3Mgb25lCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8TnVtYmVyCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb2VyY2VWYWx1ZSgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKFxpc19hcnJheSgkdmFsdWUpIHx8ICR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19ib29sKCR2YWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50b0Jvb2woJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIGlmIChcaXNfbnVsbCgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX251bWVyaWMoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IE51bWJlcigkdmFsdWUsICcnKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRlbXB0eVN0cmluZzsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9IFtUeXBlOjpUX0tFWVdPUkQsICR2YWx1ZV07CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCR2YWx1ZSk7CgogICAgICAgIGlmICgkY29sb3IpIHsKICAgICAgICAgICAgcmV0dXJuICRjb2xvcjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmllcyB0byBjb252ZXJ0IGFuIGl0ZW0gdG8gYSBTYXNzIG1hcAogICAgICoKICAgICAqIEBwYXJhbSBOdW1iZXJ8YXJyYXkgJGl0ZW0KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cnlNYXAoJGl0ZW0pCiAgICB7CiAgICAgICAgaWYgKCRpdGVtIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpdGVtWzBdID09PSBUeXBlOjpUX01BUCkgewogICAgICAgICAgICByZXR1cm4gJGl0ZW07CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRpdGVtWzBdID09PSBUeXBlOjpUX0xJU1QgJiYKICAgICAgICAgICAgJGl0ZW1bMl0gPT09IFtdCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRlbXB0eU1hcDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQ29lcmNlIHNvbWV0aGluZyB0byBtYXAKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICRpdGVtCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxOdW1iZXIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvZXJjZU1hcCgkaXRlbSkKICAgIHsKICAgICAgICAkbWFwID0gJHRoaXMtPnRyeU1hcCgkaXRlbSk7CgogICAgICAgIGlmICgkbWFwICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbWFwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpdGVtOwogICAgfQoKICAgIC8qKgogICAgICogQ29lcmNlIHNvbWV0aGluZyB0byBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkaXRlbQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAkZGVsaW0KICAgICAqIEBwYXJhbSBib29sICAgICAgICAgJHJlbW92ZVRyYWlsaW5nTnVsbAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvZXJjZUxpc3QoJGl0ZW0sICRkZWxpbSA9ICcsJywgJHJlbW92ZVRyYWlsaW5nTnVsbCA9IGZhbHNlKQogICAgewogICAgICAgIGlmICgkaXRlbSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfTElTVCwgJycsIFskaXRlbV1dOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpdGVtWzBdID09PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIG51bGwgZnJvbSB0aGUgbGlzdAogICAgICAgICAgICBpZiAoJHJlbW92ZVRyYWlsaW5nTnVsbCAmJiBlbmQoJGl0ZW1bMl0pID09PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGl0ZW1bMl0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGl0ZW07CiAgICAgICAgfQoKICAgICAgICBpZiAoJGl0ZW1bMF0gPT09IFR5cGU6OlRfTUFQKSB7CiAgICAgICAgICAgICRrZXlzID0gJGl0ZW1bMV07CiAgICAgICAgICAgICR2YWx1ZXMgPSAkaXRlbVsyXTsKICAgICAgICAgICAgJGxpc3QgPSBbXTsKCiAgICAgICAgICAgIGZvciAoJGkgPSAwLCAkcyA9IFxjb3VudCgka2V5cyk7ICRpIDwgJHM7ICRpKyspIHsKICAgICAgICAgICAgICAgICRrZXkgPSAka2V5c1skaV07CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkdmFsdWVzWyRpXTsKCiAgICAgICAgICAgICAgICAkbGlzdFtdID0gWwogICAgICAgICAgICAgICAgICAgIFR5cGU6OlRfTElTVCwKICAgICAgICAgICAgICAgICAgICAnICcsCiAgICAgICAgICAgICAgICAgICAgWyRrZXksICR2YWx1ZV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9MSVNULCAkbGlzdCA/ICcsJyA6ICcnLCAkbGlzdF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfTElTVCwgJycsIFskaXRlbV1dOwogICAgfQoKICAgIC8qKgogICAgICogQ29lcmNlIGNvbG9yIGZvciBleHByZXNzaW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29lcmNlRm9yRXhwcmVzc2lvbigkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCRjb2xvciA9ICR0aGlzLT5jb2VyY2VDb2xvcigkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkY29sb3I7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQ29lcmNlIHZhbHVlIHRvIGNvbG9yCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkdmFsdWUKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgJGluUkdCRnVuY3Rpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvZXJjZUNvbG9yKCR2YWx1ZSwgJGluUkdCRnVuY3Rpb24gPSBmYWxzZSkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICgkdmFsdWVbMF0pIHsKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0NPTE9SOgogICAgICAgICAgICAgICAgZm9yICgkaSA9IDE7ICRpIDw9IDM7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISBpc19udW1lcmljKCR2YWx1ZVskaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjdiA9ICR0aGlzLT5jb21waWxlUkdCQVZhbHVlKCR2YWx1ZVskaV0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgaXNfbnVtZXJpYygkY3YpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlWyRpXSA9ICRjdjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdmFsdWVbNF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGlzX251bWVyaWMoJHZhbHVlWzRdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN2ID0gJHRoaXMtPmNvbXBpbGVSR0JBVmFsdWUoJHZhbHVlWzRdLCB0cnVlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBpc19udW1lcmljKCRjdikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVbNF0gPSAkY3Y7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9MSVNUOgogICAgICAgICAgICAgICAgaWYgKCRpblJHQkZ1bmN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFxjb3VudCgkdmFsdWVbMl0pID09IDMgfHwgXGNvdW50KCR2YWx1ZVsyXSkgPT0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29sb3IgPSAkdmFsdWVbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGNvbG9yLCBUeXBlOjpUX0NPTE9SKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29lcmNlQ29sb3IoJGNvbG9yKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfS0VZV09SRDoKICAgICAgICAgICAgICAgIGlmICghIFxpc19zdHJpbmcoJHZhbHVlWzFdKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRuYW1lID0gc3RydG9sb3dlcigkdmFsdWVbMV0pOwoKICAgICAgICAgICAgICAgIC8vIGhleGEgY29sb3I/CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL14jKFswLTlhLWZdKykkL2knLCAkbmFtZSwgJG0pKSB7CiAgICAgICAgICAgICAgICAgICAgJG5vZlZhbHVlcyA9IFxzdHJsZW4oJG1bMV0pOwoKICAgICAgICAgICAgICAgICAgICBpZiAoXGluX2FycmF5KCRub2ZWYWx1ZXMsIFszLCA0LCA2LCA4XSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5iQ2hhbm5lbHMgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAkY29sb3IgICAgICA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAkbnVtICAgICAgICA9IGhleGRlYygkbVsxXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCRub2ZWYWx1ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmJDaGFubmVscyA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBjb250aW51aW5nIHdpdGggdGhlIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbmJDaGFubmVsczsgJGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdCA9ICRudW0gJiAweGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGNvbG9yLCAkdCA8PCA0IHwgJHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbnVtID4+PSA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYkNoYW5uZWxzID0gNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIGNvbnRpbnVpbmcgd2l0aCB0aGUgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuYkNoYW5uZWxzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGNvbG9yLCAkbnVtICYgMHhmZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRudW0gPj49IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRuYkNoYW5uZWxzID09PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbG9yWzNdID09PSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3JbM10gPSAxOyAvLyBmdWxseSBvcGFxdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yWzNdID0gcm91bmQoJGNvbG9yWzNdIC8gMjU1LCBOdW1iZXI6OlBSRUNJU0lPTik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGNvbG9yLCBUeXBlOjpUX0NPTE9SKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkY29sb3I7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkcmdiYSA9IENvbG9yczo6Y29sb3JOYW1lVG9SR0JhKCRuYW1lKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpc3NldCgkcmdiYVszXSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBbVHlwZTo6VF9DT0xPUiwgJHJnYmFbMF0sICRyZ2JhWzFdLCAkcmdiYVsyXSwgJHJnYmFbM11dCiAgICAgICAgICAgICAgICAgICAgICAgIDogW1R5cGU6OlRfQ09MT1IsICRyZ2JhWzBdLCAkcmdiYVsxXSwgJHJnYmFbMl1dOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50fE51bWJlciAkdmFsdWUKICAgICAqIEBwYXJhbSBib29sICAgICAgICRpc0FscGhhCiAgICAgKgogICAgICogQHJldHVybiBpbnR8bWl4ZWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVSR0JBVmFsdWUoJHZhbHVlLCAkaXNBbHBoYSA9IGZhbHNlKQogICAgewogICAgICAgIGlmICgkaXNBbHBoYSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBpbGVDb2xvclBhcnRWYWx1ZSgkdmFsdWUsIDAsIDEsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGlsZUNvbG9yUGFydFZhbHVlKCR2YWx1ZSwgMCwgMjU1LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gaW50fGZsb2F0ICRtaW4KICAgICAqIEBwYXJhbSBpbnR8ZmxvYXQgJG1heAogICAgICogQHBhcmFtIGJvb2wgICAgICAkaXNJbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxtaXhlZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZUNvbG9yUGFydFZhbHVlKCR2YWx1ZSwgJG1pbiwgJG1heCwgJGlzSW50ID0gdHJ1ZSkKICAgIHsKICAgICAgICBpZiAoISBpc19udW1lcmljKCR2YWx1ZSkpIHsKICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAkcmVkdWNlZCA9ICR0aGlzLT5yZWR1Y2UoJHZhbHVlKTsKCiAgICAgICAgICAgICAgICBpZiAoJHJlZHVjZWQgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAkcmVkdWNlZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICAgICAgaWYgKCR2YWx1ZS0+dW5pdGxlc3MoKSkgewogICAgICAgICAgICAgICAgICAgICRudW0gPSAkdmFsdWUtPmdldERpbWVuc2lvbigpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2YWx1ZS0+aGFzVW5pdCgnJScpKSB7CiAgICAgICAgICAgICAgICAgICAgJG51bSA9ICRtYXggKiAkdmFsdWUtPmdldERpbWVuc2lvbigpIC8gMTAwOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJ0V4cGVjdGVkICVzIHRvIGhhdmUgbm8gdW5pdHMgb3IgIiUlIi4nLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRudW07CiAgICAgICAgICAgIH0gZWxzZWlmIChcaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfbnVtZXJpYygkdmFsdWUpKSB7CiAgICAgICAgICAgIGlmICgkaXNJbnQpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IHJvdW5kKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR2YWx1ZSA9IG1pbigkbWF4LCBtYXgoJG1pbiwgJHZhbHVlKSk7CgogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIENvZXJjZSB2YWx1ZSB0byBzdHJpbmcKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvZXJjZVN0cmluZygkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9TVFJJTkcpIHsKICAgICAgICAgICAgYXNzZXJ0KFxpc19hcnJheSgkdmFsdWUpKTsKCiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAnJywgWyR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlKV1dOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHZhbHVlIGlzIGEgc3RyaW5nCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgZGVhbHMgd2l0aCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSB2YWx1ZQogICAgICogcmVwcmVzZW50YXRpb24gd2hlcmUgdW5xdW90ZWQgc3RyaW5ncyBjYW4gc29tZXRpbWVzIGJlIHN0b3JlZCB1bmRlcgogICAgICogb3RoZXIgdHlwZXMuCiAgICAgKiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYWx3YXlzIHVzaW5nIHRoZSBUX1NUUklORyB0eXBlLgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAkdmFyTmFtZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydFN0cmluZygkdmFsdWUsICR2YXJOYW1lID0gbnVsbCkKICAgIHsKICAgICAgICAvLyBjYXNlIG9mIHVybCguLi4pIHBhcnNlZCBhIGEgZnVuY3Rpb24KICAgICAgICBpZiAoJHZhbHVlWzBdID09PSBUeXBlOjpUX0ZVTkNUSU9OKSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIGlmICghIFxpbl9hcnJheSgkdmFsdWVbMF0sIFtUeXBlOjpUX1NUUklORywgVHlwZTo6VF9LRVlXT1JEXSkpIHsKICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdmFsdWUpOwogICAgICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHZhbHVlIGlzIG5vdCBhIHN0cmluZy4iLCAkdmFyTmFtZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmNvZXJjZVN0cmluZygkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ29lcmNlIHZhbHVlIHRvIGEgcGVyY2VudGFnZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBpbnR8ZmxvYXQKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29lcmNlUGVyY2VudCgkdmFsdWUpCiAgICB7CiAgICAgICAgQHRyaWdnZXJfZXJyb3Ioc3ByaW50ZignIiVzIiBpcyBkZXByZWNhdGVkIHNpbmNlIDEuNy4wLicsIF9fTUVUSE9EX18pLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZS0+aGFzVW5pdCgnJScpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlLT5nZXREaW1lbnNpb24oKSAvIDEwMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR2YWx1ZS0+Z2V0RGltZW5zaW9uKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB2YWx1ZSBpcyBhIG1hcAogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAkdmFyTmFtZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE1hcCgkdmFsdWUsICR2YXJOYW1lID0gbnVsbCkKICAgIHsKICAgICAgICAkbWFwID0gJHRoaXMtPnRyeU1hcCgkdmFsdWUpOwoKICAgICAgICBpZiAoJG1hcCA9PT0gbnVsbCkgewogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSk7CgogICAgICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHZhbHVlIGlzIG5vdCBhIG1hcC4iLCAkdmFyTmFtZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1hcDsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB2YWx1ZSBpcyBhIGxpc3QKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRMaXN0KCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlWzBdICE9PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdleHBlY3RpbmcgbGlzdCwgJXMgcmVjZWl2ZWQnLCAkdmFsdWVbMF0pOwogICAgICAgIH0KICAgICAgICBhc3NlcnQoXGlzX2FycmF5KCR2YWx1ZSkpOwoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0cyB0aGUga2V5d29yZHMgb2YgYW4gYXJndW1lbnQgbGlzdC4KICAgICAqCiAgICAgKiBLZXlzIGluIHRoZSByZXR1cm5lZCBhcnJheSBhcmUgbm9ybWFsaXplZCBuYW1lcyAodW5kZXJzY29yZXMgYXJlIHJlcGxhY2VkIHdpdGggZGFzaGVzKQogICAgICogd2l0aG91dCB0aGUgbGVhZGluZyBgJGAuCiAgICAgKiBDYWxsaW5nIHRoaXMgaGVscGVyIHdpdGggYW55dGhpbmcgdGhhdCBhbiBhcmd1bWVudCBsaXN0IHJlY2VpdmVkIGZvciBhIHJlc3QgYXJndW1lbnQKICAgICAqIG9mIHRoZSBmdW5jdGlvbiBhcmd1bWVudCBkZWNsYXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIGFycmF5fE51bWJlcj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFyZ3VtZW50TGlzdEtleXdvcmRzKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlWzBdICE9PSBUeXBlOjpUX0xJU1QgfHwgIWlzc2V0KCR2YWx1ZVszXSkgfHwgIVxpc19hcnJheSgkdmFsdWVbM10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgYXJndW1lbnQgaXMgbm90IGEgc2FzcyBhcmd1bWVudCBsaXN0LicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZVszXTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB2YWx1ZSBpcyBhIGNvbG9yCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICR2YXJOYW1lCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0Q29sb3IoJHZhbHVlLCAkdmFyTmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRjb2xvciA9ICR0aGlzLT5jb2VyY2VDb2xvcigkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkY29sb3I7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSk7CgogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdmFsdWUgaXMgbm90IGEgY29sb3IuIiwgJHZhck5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHZhbHVlIGlzIGEgbnVtYmVyCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICR2YXJOYW1lCiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydE51bWJlcigkdmFsdWUsICR2YXJOYW1lID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoISR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdmFsdWUgaXMgbm90IGEgbnVtYmVyLiIsICR2YXJOYW1lKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdmFsdWUgaXMgYSBpbnRlZ2VyCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICR2YXJOYW1lCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydEludGVnZXIoJHZhbHVlLCAkdmFyTmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmFzc2VydE51bWJlcigkdmFsdWUsICR2YXJOYW1lKS0+Z2V0RGltZW5zaW9uKCk7CiAgICAgICAgaWYgKHJvdW5kKCR2YWx1ZSAtIFxpbnR2YWwoJHZhbHVlKSwgTnVtYmVyOjpQUkVDSVNJT04pID4gMCkgewogICAgICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiJHZhbHVlIGlzIG5vdCBhbiBpbnRlZ2VyLiIsICR2YXJOYW1lKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpbnR2YWwoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEV4dHJhY3QgdGhlICAuLi4gLyBhbHBoYSBvbiB0aGUgbGFzdCBhcmd1bWVudCBvZiBjaGFubmVsIGFyZwogICAgICogaW4gY29sb3IgZnVuY3Rpb25zCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRhcmdzCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXh0cmFjdFNsYXNoQWxwaGFJbkNvbG9yRnVuY3Rpb24oJGFyZ3MpCiAgICB7CiAgICAgICAgJGxhc3QgPSBlbmQoJGFyZ3MpOwogICAgICAgIGlmIChcY291bnQoJGFyZ3MpID09PSAzICYmICRsYXN0WzBdID09PSBUeXBlOjpUX0VYUFJFU1NJT04gJiYgJGxhc3RbMV0gPT09ICcvJykgewogICAgICAgICAgICBhcnJheV9wb3AoJGFyZ3MpOwogICAgICAgICAgICAkYXJnc1tdID0gJGxhc3RbMl07CiAgICAgICAgICAgICRhcmdzW10gPSAkbGFzdFszXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRhcmdzOwogICAgfQoKCiAgICAvKioKICAgICAqIE1ha2Ugc3VyZSBhIGNvbG9yJ3MgY29tcG9uZW50cyBkb24ndCBnbyBvdXQgb2YgYm91bmRzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZml4Q29sb3IoJGMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoWzEsIDIsIDNdIGFzICRpKSB7CiAgICAgICAgICAgIGlmICgkY1skaV0gPCAwKSB7CiAgICAgICAgICAgICAgICAkY1skaV0gPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNbJGldID4gMjU1KSB7CiAgICAgICAgICAgICAgICAkY1skaV0gPSAyNTU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghXGlzX2ludCgkY1skaV0pKSB7CiAgICAgICAgICAgICAgICAkY1skaV0gPSByb3VuZCgkY1skaV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0IFJHQiB0byBIU0wKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRyZWQKICAgICAqIEBwYXJhbSBpbnQgJGdyZWVuCiAgICAgKiBAcGFyYW0gaW50ICRibHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9IU0woJHJlZCwgJGdyZWVuLCAkYmx1ZSkKICAgIHsKICAgICAgICAkbWluID0gbWluKCRyZWQsICRncmVlbiwgJGJsdWUpOwogICAgICAgICRtYXggPSBtYXgoJHJlZCwgJGdyZWVuLCAkYmx1ZSk7CgogICAgICAgICRsID0gJG1pbiArICRtYXg7CiAgICAgICAgJGQgPSAkbWF4IC0gJG1pbjsKCiAgICAgICAgaWYgKChpbnQpICRkID09PSAwKSB7CiAgICAgICAgICAgICRoID0gJHMgPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgkbCA8IDI1NSkgewogICAgICAgICAgICAgICAgJHMgPSAkZCAvICRsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHMgPSAkZCAvICg1MTAgLSAkbCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcmVkID09ICRtYXgpIHsKICAgICAgICAgICAgICAgICRoID0gNjAgKiAoJGdyZWVuIC0gJGJsdWUpIC8gJGQ7CiAgICAgICAgICAgIH0gZWxzZWlmICgkZ3JlZW4gPT0gJG1heCkgewogICAgICAgICAgICAgICAgJGggPSA2MCAqICgkYmx1ZSAtICRyZWQpIC8gJGQgKyAxMjA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaCA9IDYwICogKCRyZWQgLSAkZ3JlZW4pIC8gJGQgKyAyNDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9IU0wsIGZtb2QoJGggKyAzNjAsIDM2MCksICRzICogMTAwLCAkbCAvIDUuMV07CiAgICB9CgogICAgLyoqCiAgICAgKiBIdWUgdG8gUkdCIGhlbHBlcgogICAgICoKICAgICAqIEBwYXJhbSBmbG9hdCAkbTEKICAgICAqIEBwYXJhbSBmbG9hdCAkbTIKICAgICAqIEBwYXJhbSBmbG9hdCAkaAogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGh1ZVRvUkdCKCRtMSwgJG0yLCAkaCkKICAgIHsKICAgICAgICBpZiAoJGggPCAwKSB7CiAgICAgICAgICAgICRoICs9IDE7CiAgICAgICAgfSBlbHNlaWYgKCRoID4gMSkgewogICAgICAgICAgICAkaCAtPSAxOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRoICogNiA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRtMSArICgkbTIgLSAkbTEpICogJGggKiA2OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRoICogMiA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRtMjsKICAgICAgICB9CgogICAgICAgIGlmICgkaCAqIDMgPCAyKSB7CiAgICAgICAgICAgIHJldHVybiAkbTEgKyAoJG0yIC0gJG0xKSAqICgyIC8gMyAtICRoKSAqIDY7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG0xOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCBIU0wgdG8gUkdCCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHBhcmFtIGludHxmbG9hdCAkaHVlICAgICAgICBIIGZyb20gMCB0byAzNjAKICAgICAqIEBwYXJhbSBpbnR8ZmxvYXQgJHNhdHVyYXRpb24gUyBmcm9tIDAgdG8gMTAwCiAgICAgKiBAcGFyYW0gaW50fGZsb2F0ICRsaWdodG5lc3MgIEwgZnJvbSAwIHRvIDEwMAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvUkdCKCRodWUsICRzYXR1cmF0aW9uLCAkbGlnaHRuZXNzKQogICAgewogICAgICAgIGlmICgkaHVlIDwgMCkgewogICAgICAgICAgICAkaHVlICs9IDM2MDsKICAgICAgICB9CgogICAgICAgICRoID0gJGh1ZSAvIDM2MDsKICAgICAgICAkcyA9IG1pbigxMDAsIG1heCgwLCAkc2F0dXJhdGlvbikpIC8gMTAwOwogICAgICAgICRsID0gbWluKDEwMCwgbWF4KDAsICRsaWdodG5lc3MpKSAvIDEwMDsKCiAgICAgICAgJG0yID0gJGwgPD0gMC41ID8gJGwgKiAoJHMgKyAxKSA6ICRsICsgJHMgLSAkbCAqICRzOwogICAgICAgICRtMSA9ICRsICogMiAtICRtMjsKCiAgICAgICAgJHIgPSAkdGhpcy0+aHVlVG9SR0IoJG0xLCAkbTIsICRoICsgMSAvIDMpICogMjU1OwogICAgICAgICRnID0gJHRoaXMtPmh1ZVRvUkdCKCRtMSwgJG0yLCAkaCkgKiAyNTU7CiAgICAgICAgJGIgPSAkdGhpcy0+aHVlVG9SR0IoJG0xLCAkbTIsICRoIC0gMSAvIDMpICogMjU1OwoKICAgICAgICAkb3V0ID0gW1R5cGU6OlRfQ09MT1IsICRyLCAkZywgJGJdOwoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgSFdCIHRvIFJHQgogICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1jb2xvci00LyNod2ItdG8tcmdiCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBpbnR8ZmxvYXQgJGh1ZSAgICAgICAgSCBmcm9tIDAgdG8gMzYwCiAgICAgKiBAcGFyYW0gaW50fGZsb2F0ICR3aGl0ZW5lc3MgIFcgZnJvbSAwIHRvIDEwMAogICAgICogQHBhcmFtIGludHxmbG9hdCAkYmxhY2tuZXNzICBCIGZyb20gMCB0byAxMDAKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gSFdCdG9SR0IoJGh1ZSwgJHdoaXRlbmVzcywgJGJsYWNrbmVzcykKICAgIHsKICAgICAgICAkdyA9IG1pbigxMDAsIG1heCgwLCAkd2hpdGVuZXNzKSkgLyAxMDA7CiAgICAgICAgJGIgPSBtaW4oMTAwLCBtYXgoMCwgJGJsYWNrbmVzcykpIC8gMTAwOwoKICAgICAgICAkc3VtID0gJHcgKyAkYjsKICAgICAgICBpZiAoJHN1bSA+IDEuMCkgewogICAgICAgICAgICAkdyA9ICR3IC8gJHN1bTsKICAgICAgICAgICAgJGIgPSAkYiAvICRzdW07CiAgICAgICAgfQogICAgICAgICRiID0gbWluKDEuMCAtICR3LCAkYik7CgogICAgICAgICRyZ2IgPSAkdGhpcy0+dG9SR0IoJGh1ZSwgMTAwLCA1MCk7CiAgICAgICAgZm9yKCRpID0gMTsgJGkgPCA0OyAkaSsrKSB7CiAgICAgICAgICAkcmdiWyRpXSAqPSAoMS4wIC0gJHcgLSAkYik7CiAgICAgICAgICAkcmdiWyRpXSA9IHJvdW5kKCRyZ2JbJGldICsgMjU1ICogJHcgKyAwLjAwMDEpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZ2I7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0IFJHQiB0byBIV0IKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIGludCAkcmVkCiAgICAgKiBAcGFyYW0gaW50ICRncmVlbgogICAgICogQHBhcmFtIGludCAkYmx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBSR0J0b0hXQigkcmVkLCAkZ3JlZW4sICRibHVlKQogICAgewogICAgICAgICRtaW4gPSBtaW4oJHJlZCwgJGdyZWVuLCAkYmx1ZSk7CiAgICAgICAgJG1heCA9IG1heCgkcmVkLCAkZ3JlZW4sICRibHVlKTsKCiAgICAgICAgJGQgPSAkbWF4IC0gJG1pbjsKCiAgICAgICAgaWYgKChpbnQpICRkID09PSAwKSB7CiAgICAgICAgICAgICRoID0gMDsKICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgaWYgKCRyZWQgPT0gJG1heCkgewogICAgICAgICAgICAgICAgJGggPSA2MCAqICgkZ3JlZW4gLSAkYmx1ZSkgLyAkZDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRncmVlbiA9PSAkbWF4KSB7CiAgICAgICAgICAgICAgICAkaCA9IDYwICogKCRibHVlIC0gJHJlZCkgLyAkZCArIDEyMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRoID0gNjAgKiAoJHJlZCAtICRncmVlbikgLyAkZCArIDI0MDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0hXQiwgZm1vZCgkaCwgMzYwKSwgJG1pbiAvIDI1NSAqIDEwMCwgMTAwIC0gJG1heCAvIDI1NSAqMTAwXTsKICAgIH0KCgogICAgLy8gQnVpbHQgaW4gZnVuY3Rpb25zCgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliQ2FsbCA9IFsnZnVuY3Rpb24nLCAnYXJncy4uLiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkNhbGwoJGFyZ3MpCiAgICB7CiAgICAgICAgJGZ1bmN0aW9uUmVmZXJlbmNlID0gJGFyZ3NbMF07CgogICAgICAgIGlmIChpbl9hcnJheSgkZnVuY3Rpb25SZWZlcmVuY2VbMF0sIFtUeXBlOjpUX1NUUklORywgVHlwZTo6VF9LRVlXT1JEXSkpIHsKICAgICAgICAgICAgJG5hbWUgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkZnVuY3Rpb25SZWZlcmVuY2UpKTsKICAgICAgICAgICAgJHdhcm5pbmcgPSAiUGFzc2luZyBhIHN0cmluZyB0byBjYWxsKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBpbGxlZ2FsXG4iCiAgICAgICAgICAgICAgICAuICJpbiBTYXNzIDQuMC4gVXNlIGNhbGwoZnVuY3Rpb24tcmVmZXJlbmNlKCRuYW1lKSkgaW5zdGVhZC4iOwogICAgICAgICAgICBXYXJuOjpkZXByZWNhdGlvbigkd2FybmluZyk7CiAgICAgICAgICAgICRmdW5jdGlvblJlZmVyZW5jZSA9ICR0aGlzLT5saWJHZXRGdW5jdGlvbihbJHRoaXMtPmFzc2VydFN0cmluZygkZnVuY3Rpb25SZWZlcmVuY2UsICdmdW5jdGlvbicpXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZ1bmN0aW9uUmVmZXJlbmNlID09PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgaW5fYXJyYXkoJGZ1bmN0aW9uUmVmZXJlbmNlWzBdLCBbVHlwZTo6VF9GVU5DVElPTl9SRUZFUkVOQ0UsIFR5cGU6OlRfRlVOQ1RJT05dKSkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJ0Z1bmN0aW9uIHJlZmVyZW5jZSBleHBlY3RlZCwgZ290ICcgLiAkZnVuY3Rpb25SZWZlcmVuY2VbMF0pOwogICAgICAgIH0KCiAgICAgICAgJGNhbGxBcmdzID0gWwogICAgICAgICAgICBbbnVsbCwgJGFyZ3NbMV0sIHRydWVdCiAgICAgICAgXTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWR1Y2UoW1R5cGU6OlRfRlVOQ1RJT05fQ0FMTCwgJGZ1bmN0aW9uUmVmZXJlbmNlLCAkY2FsbEFyZ3NdKTsKICAgIH0KCgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliR2V0RnVuY3Rpb24gPSBbCiAgICAgICAgWyduYW1lJ10sCiAgICAgICAgWyduYW1lJywgJ2NzcyddCiAgICBdOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkdldEZ1bmN0aW9uKCRhcmdzKQogICAgewogICAgICAgICRuYW1lID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR0aGlzLT5hc3NlcnRTdHJpbmcoYXJyYXlfc2hpZnQoJGFyZ3MpLCAnbmFtZScpKTsKICAgICAgICAkaXNDc3MgPSBmYWxzZTsKCiAgICAgICAgaWYgKGNvdW50KCRhcmdzKSkgewogICAgICAgICAgICAkaXNDc3MgPSBhcnJheV9zaGlmdCgkYXJncyk7CiAgICAgICAgICAgICRpc0NzcyA9ICgoJGlzQ3NzID09PSBzdGF0aWM6OiR0cnVlKSA/IHRydWUgOiBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGlzQ3NzKSB7CiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9GVU5DVElPTiwgJG5hbWUsIFtUeXBlOjpUX0xJU1QsICcsJywgW11dXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RnVuY3Rpb25SZWZlcmVuY2UoJG5hbWUsIHRydWUpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYklmID0gWydjb25kaXRpb24nLCAnaWYtdHJ1ZScsICdpZi1mYWxzZTonXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJJZigkYXJncykKICAgIHsKICAgICAgICBsaXN0KCRjb25kLCAkdCwgJGYpID0gJGFyZ3M7CgogICAgICAgIGlmICghICR0aGlzLT5pc1RydXRoeSgkdGhpcy0+cmVkdWNlKCRjb25kLCB0cnVlKSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yZWR1Y2UoJGYsIHRydWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWR1Y2UoJHQsIHRydWUpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkluZGV4ID0gWydsaXN0JywgJ3ZhbHVlJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliSW5kZXgoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkbGlzdCwgJHZhbHVlKSA9ICRhcmdzOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRsaXN0WzBdID09PSBUeXBlOjpUX01BUCB8fAogICAgICAgICAgICAkbGlzdFswXSA9PT0gVHlwZTo6VF9TVFJJTkcgfHwKICAgICAgICAgICAgJGxpc3RbMF0gPT09IFR5cGU6OlRfS0VZV09SRCB8fAogICAgICAgICAgICAkbGlzdFswXSA9PT0gVHlwZTo6VF9JTlRFUlBPTEFURQogICAgICAgICkgewogICAgICAgICAgICAkbGlzdCA9ICR0aGlzLT5jb2VyY2VMaXN0KCRsaXN0LCAnICcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsaXN0WzBdICE9PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBOdW1iZXJzIGFyZSByZXByZXNlbnRlZCB3aXRoIHZhbHVlIG9iamVjdHMsIGZvciB3aGljaCB0aGUgUEhQIGVxdWFsaXR5IG9wZXJhdG9yIGRvZXMgbm90CiAgICAgICAgLy8gbWF0Y2ggdGhlIFNhc3MgcnVsZXMgKGFuZCB3ZSBjYW5ub3Qgb3ZlcmxvYWQgaXQpLiBBcyB0aGV5IGFyZSB0aGUgb25seSB0eXBlIG9mIHZhbHVlcwogICAgICAgIC8vIHJlcHJlc2VudGVkIHdpdGggYSB2YWx1ZSBvYmplY3QgZm9yIG5vdywgdGhleSByZXF1aXJlIGEgc3BlY2lhbCBjYXNlLgogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgJGtleSA9IDA7CiAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0WzJdIGFzICRpdGVtKSB7CiAgICAgICAgICAgICAgICAka2V5Kys7CiAgICAgICAgICAgICAgICAkaXRlbVZhbHVlID0gJHRoaXMtPm5vcm1hbGl6ZVZhbHVlKCRpdGVtKTsKCiAgICAgICAgICAgICAgICBpZiAoJGl0ZW1WYWx1ZSBpbnN0YW5jZW9mIE51bWJlciAmJiAkdmFsdWUtPmVxdWFscygkaXRlbVZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCRrZXksICcnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3RhdGljOjokbnVsbDsKICAgICAgICB9CgogICAgICAgICR2YWx1ZXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGxpc3RbMl0gYXMgJGl0ZW0pIHsKICAgICAgICAgICAgJHZhbHVlc1tdID0gJHRoaXMtPm5vcm1hbGl6ZVZhbHVlKCRpdGVtKTsKICAgICAgICB9CgogICAgICAgICRrZXkgPSBhcnJheV9zZWFyY2goJHRoaXMtPm5vcm1hbGl6ZVZhbHVlKCR2YWx1ZSksICR2YWx1ZXMpOwoKICAgICAgICByZXR1cm4gZmFsc2UgPT09ICRrZXkgPyBzdGF0aWM6OiRudWxsIDogbmV3IE51bWJlcigka2V5ICsgMSwgJycpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlJnYiA9IFsKICAgICAgICBbJ2NvbG9yJ10sCiAgICAgICAgWydjb2xvcicsICdhbHBoYSddLAogICAgICAgIFsnY2hhbm5lbHMnXSwKICAgICAgICBbJ3JlZCcsICdncmVlbicsICdibHVlJ10sCiAgICAgICAgWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZScsICdhbHBoYSddIF07CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGFyZ3MKICAgICAqIEBwYXJhbSBhcnJheSAka3dhcmdzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmdW5jTmFtZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlJnYigkYXJncywgJGt3YXJncywgJGZ1bmNOYW1lID0gJ3JnYicpCiAgICB7CiAgICAgICAgc3dpdGNoIChcY291bnQoJGFyZ3MpKSB7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGlmICghICRjb2xvciA9ICR0aGlzLT5jb2VyY2VDb2xvcigkYXJnc1swXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkY29sb3IgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJGZ1bmNOYW1lIC4gJygnLCAkYXJnc1swXSwgJyknXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICRjb2xvciA9IFtUeXBlOjpUX0NPTE9SLCAkYXJnc1swXSwgJGFyZ3NbMV0sICRhcmdzWzJdXTsKCiAgICAgICAgICAgICAgICBpZiAoISAkY29sb3IgPSAkdGhpcy0+Y29lcmNlQ29sb3IoJGNvbG9yKSkgewogICAgICAgICAgICAgICAgICAgICRjb2xvciA9IFtUeXBlOjpUX1NUUklORywgJycsIFskZnVuY05hbWUgLiAnKCcsICRhcmdzWzBdLCAnLCAnLCAkYXJnc1sxXSwgJywgJywgJGFyZ3NbMl0sICcpJ11dOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkY29sb3I7CgogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBpZiAoJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCRhcmdzWzBdLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgICRhbHBoYSA9ICR0aGlzLT5jb21waWxlUkdCQVZhbHVlKCRhcmdzWzFdLCB0cnVlKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX251bWVyaWMoJGFscGhhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29sb3JbNF0gPSAkYWxwaGE7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yID0gW1R5cGU6OlRfU1RSSU5HLCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFskZnVuY05hbWUgLiAnKCcsICRjb2xvclsxXSwgJywgJywgJGNvbG9yWzJdLCAnLCAnLCAkY29sb3JbM10sICcsICcsICRhbHBoYSwgJyknXV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY29sb3IgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJGZ1bmNOYW1lIC4gJygnLCAkYXJnc1swXSwgJywgJywgJGFyZ3NbMV0sICcpJ11dOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAkY29sb3IgPSBbVHlwZTo6VF9DT0xPUiwgJGFyZ3NbMF0sICRhcmdzWzFdLCAkYXJnc1syXSwgJGFyZ3NbM11dOwoKICAgICAgICAgICAgICAgIGlmICghICRjb2xvciA9ICR0aGlzLT5jb2VyY2VDb2xvcigkY29sb3IpKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbG9yID0gW1R5cGU6OlRfU1RSSU5HLCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgWyRmdW5jTmFtZSAuICcoJywgJGFyZ3NbMF0sICcsICcsICRhcmdzWzFdLCAnLCAnLCAkYXJnc1syXSwgJywgJywgJGFyZ3NbM10sICcpJ11dOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbG9yOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlJnYmEgPSBbCiAgICAgICAgWydjb2xvciddLAogICAgICAgIFsnY29sb3InLCAnYWxwaGEnXSwKICAgICAgICBbJ2NoYW5uZWxzJ10sCiAgICAgICAgWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZSddLAogICAgICAgIFsncmVkJywgJ2dyZWVuJywgJ2JsdWUnLCAnYWxwaGEnXSBdOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlJnYmEoJGFyZ3MsICRrd2FyZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5saWJSZ2IoJGFyZ3MsICRrd2FyZ3MsICdyZ2JhJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGFkanVzdF9jb2xvciwgY2hhbmdlX2NvbG9yLCBhbmQgc2NhbGVfY29sb3IKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXl8TnVtYmVyPiAkYXJncwogICAgICogQHBhcmFtIHN0cmluZyAkb3BlcmF0aW9uCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGZuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIGNhbGxhYmxlKGZsb2F0fGludCwgZmxvYXR8aW50fG51bGwsIGZsb2F0fGludCk6IChmbG9hdHxpbnQpICRmbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWx0ZXJDb2xvcihhcnJheSAkYXJncywgJG9wZXJhdGlvbiwgJGZuKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSwgJ2NvbG9yJyk7CgogICAgICAgIGlmICgkYXJnc1sxXVsyXSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignT25seSBvbmUgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBhbGxvd2VkLiBBbGwgb3RoZXIgYXJndW1lbnRzIG11c3QgYmUgcGFzc2VkIGJ5IG5hbWUuJyk7CiAgICAgICAgfQoKICAgICAgICAka3dhcmdzID0gJHRoaXMtPmdldEFyZ3VtZW50TGlzdEtleXdvcmRzKCRhcmdzWzFdKTsKCiAgICAgICAgJHNjYWxlID0gJG9wZXJhdGlvbiA9PT0gJ3NjYWxlJzsKICAgICAgICAkY2hhbmdlID0gJG9wZXJhdGlvbiA9PT0gJ2NoYW5nZSc7CgogICAgICAgIC8qKiBAcGhwc3Rhbi12YXIgY2FsbGFibGUoc3RyaW5nLCBmbG9hdHxpbnQsIGJvb2w9LCBib29sPSk6IChmbG9hdHxpbnR8bnVsbCkgJGdldFBhcmFtICovCiAgICAgICAgJGdldFBhcmFtID0gZnVuY3Rpb24gKCRuYW1lLCAkbWF4LCAkY2hlY2tQZXJjZW50ID0gZmFsc2UsICRhc3NlcnRQZXJjZW50ID0gZmFsc2UpIHVzZSAoJiRrd2FyZ3MsICRzY2FsZSwgJGNoYW5nZSkgewogICAgICAgICAgICBpZiAoIWlzc2V0KCRrd2FyZ3NbJG5hbWVdKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRudW1iZXIgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRrd2FyZ3NbJG5hbWVdLCAkbmFtZSk7CiAgICAgICAgICAgIHVuc2V0KCRrd2FyZ3NbJG5hbWVdKTsKCiAgICAgICAgICAgIGlmICghJHNjYWxlICYmICRjaGVja1BlcmNlbnQpIHsKICAgICAgICAgICAgICAgIGlmICghJG51bWJlci0+aGFzVW5pdCgnJScpKSB7CiAgICAgICAgICAgICAgICAgICAgJHdhcm5pbmcgPSAkdGhpcy0+ZXJyb3IoInskbmFtZX0gUGFzc2luZyBhIG51bWJlciBgJG51bWJlcmAgd2l0aG91dCB1bml0ICUgaXMgZGVwcmVjYXRlZC4iKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bG9nZ2VyLT53YXJuKCR3YXJuaW5nLT5nZXRNZXNzYWdlKCksIHRydWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNjYWxlIHx8ICRhc3NlcnRQZXJjZW50KSB7CiAgICAgICAgICAgICAgICAkbnVtYmVyLT5hc3NlcnRVbml0KCclJywgJG5hbWUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNjYWxlKSB7CiAgICAgICAgICAgICAgICAkbWF4ID0gMTAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNjYWxlIHx8ICRhc3NlcnRQZXJjZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG51bWJlci0+dmFsdWVJblJhbmdlKCRjaGFuZ2UgPyAwIDogLSRtYXgsICRtYXgsICRuYW1lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRudW1iZXItPnZhbHVlSW5SYW5nZVdpdGhVbml0KCRjaGFuZ2UgPyAwIDogLSRtYXgsICRtYXgsICRuYW1lLCAkY2hlY2tQZXJjZW50ID8gJyUnIDogJycpOwogICAgICAgIH07CgogICAgICAgICRhbHBoYSA9ICRnZXRQYXJhbSgnYWxwaGEnLCAxKTsKICAgICAgICAkcmVkID0gJGdldFBhcmFtKCdyZWQnLCAyNTUpOwogICAgICAgICRncmVlbiA9ICRnZXRQYXJhbSgnZ3JlZW4nLCAyNTUpOwogICAgICAgICRibHVlID0gJGdldFBhcmFtKCdibHVlJywgMjU1KTsKCiAgICAgICAgaWYgKCRzY2FsZSB8fCAhaXNzZXQoJGt3YXJnc1snaHVlJ10pKSB7CiAgICAgICAgICAgICRodWUgPSBudWxsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRodWVOdW1iZXIgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRrd2FyZ3NbJ2h1ZSddLCAnaHVlJyk7CiAgICAgICAgICAgIHVuc2V0KCRrd2FyZ3NbJ2h1ZSddKTsKICAgICAgICAgICAgJGh1ZSA9ICRodWVOdW1iZXItPmdldERpbWVuc2lvbigpOwogICAgICAgIH0KICAgICAgICAkc2F0dXJhdGlvbiA9ICRnZXRQYXJhbSgnc2F0dXJhdGlvbicsIDEwMCwgdHJ1ZSk7CiAgICAgICAgJGxpZ2h0bmVzcyA9ICRnZXRQYXJhbSgnbGlnaHRuZXNzJywgMTAwLCB0cnVlKTsKICAgICAgICAkd2hpdGVuZXNzID0gJGdldFBhcmFtKCd3aGl0ZW5lc3MnLCAxMDAsIGZhbHNlLCB0cnVlKTsKICAgICAgICAkYmxhY2tuZXNzID0gJGdldFBhcmFtKCdibGFja25lc3MnLCAxMDAsIGZhbHNlLCB0cnVlKTsKCiAgICAgICAgaWYgKCFlbXB0eSgka3dhcmdzKSkgewogICAgICAgICAgICAkdW5rbm93bk5hbWVzID0gYXJyYXlfa2V5cygka3dhcmdzKTsKICAgICAgICAgICAgJGxhc3ROYW1lID0gYXJyYXlfcG9wKCR1bmtub3duTmFtZXMpOwogICAgICAgICAgICAkbWVzc2FnZSA9IHNwcmludGYoCiAgICAgICAgICAgICAgICAnTm8gYXJndW1lbnQlcyBuYW1lZCAkJXMlcy4nLAogICAgICAgICAgICAgICAgJHVua25vd25OYW1lcyA/ICdzJyA6ICcnLAogICAgICAgICAgICAgICAgJHVua25vd25OYW1lcyA/IGltcGxvZGUoJywgJCcsICR1bmtub3duTmFtZXMpIC4gJyBvciAkJyA6ICcnLAogICAgICAgICAgICAgICAgJGxhc3ROYW1lCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCRtZXNzYWdlKTsKICAgICAgICB9CgogICAgICAgICRoYXNSZ2IgPSAkcmVkICE9PSBudWxsIHx8ICRncmVlbiAhPT0gbnVsbCB8fCAkYmx1ZSAhPT0gbnVsbDsKICAgICAgICAkaGFzU0wgPSAkc2F0dXJhdGlvbiAhPT0gbnVsbCB8fCAkbGlnaHRuZXNzICE9PSBudWxsOwogICAgICAgICRoYXNXQiA9ICR3aGl0ZW5lc3MgIT09IG51bGwgfHwgJGJsYWNrbmVzcyAhPT0gbnVsbDsKCiAgICAgICAgaWYgKCRoYXNSZ2IgJiYgKCRoYXNTTCB8fCAkaGFzV0IgfHwgJGh1ZSAhPT0gbnVsbCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oc3ByaW50ZignUkdCIHBhcmFtZXRlcnMgbWF5IG5vdCBiZSBwYXNzZWQgYWxvbmcgd2l0aCAlcyBwYXJhbWV0ZXJzLicsICRoYXNXQiA/ICdIV0InIDogJ0hTTCcpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkaGFzV0IgJiYgJGhhc1NMKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdIU0wgcGFyYW1ldGVycyBtYXkgbm90IGJlIHBhc3NlZCBhbG9uZyB3aXRoIEhXQiBwYXJhbWV0ZXJzLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRoYXNSZ2IpIHsKICAgICAgICAgICAgJGNvbG9yWzFdID0gcm91bmQoJGZuKCRjb2xvclsxXSwgJHJlZCwgMjU1KSk7CiAgICAgICAgICAgICRjb2xvclsyXSA9IHJvdW5kKCRmbigkY29sb3JbMl0sICRncmVlbiwgMjU1KSk7CiAgICAgICAgICAgICRjb2xvclszXSA9IHJvdW5kKCRmbigkY29sb3JbM10sICRibHVlLCAyNTUpKTsKICAgICAgICB9IGVsc2VpZiAoJGhhc1dCKSB7CiAgICAgICAgICAgICRod2IgPSAkdGhpcy0+UkdCdG9IV0IoJGNvbG9yWzFdLCAkY29sb3JbMl0sICRjb2xvclszXSk7CiAgICAgICAgICAgIGlmICgkaHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkaHdiWzFdID0gJGNoYW5nZSA/ICRodWUgOiAkaHdiWzFdICsgJGh1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaHdiWzJdID0gJGZuKCRod2JbMl0sICR3aGl0ZW5lc3MsIDEwMCk7CiAgICAgICAgICAgICRod2JbM10gPSAkZm4oJGh3YlszXSwgJGJsYWNrbmVzcywgMTAwKTsKCiAgICAgICAgICAgICRyZ2IgPSAkdGhpcy0+SFdCdG9SR0IoJGh3YlsxXSwgJGh3YlsyXSwgJGh3YlszXSk7CgogICAgICAgICAgICBpZiAoaXNzZXQoJGNvbG9yWzRdKSkgewogICAgICAgICAgICAgICAgJHJnYls0XSA9ICRjb2xvcls0XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbG9yID0gJHJnYjsKICAgICAgICB9IGVsc2VpZiAoJGh1ZSAhPT0gbnVsbCB8fCAkaGFzU0wpIHsKICAgICAgICAgICAgJGhzbCA9ICR0aGlzLT50b0hTTCgkY29sb3JbMV0sICRjb2xvclsyXSwgJGNvbG9yWzNdKTsKCiAgICAgICAgICAgIGlmICgkaHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkaHNsWzFdID0gJGNoYW5nZSA/ICRodWUgOiAkaHNsWzFdICsgJGh1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaHNsWzJdID0gJGZuKCRoc2xbMl0sICRzYXR1cmF0aW9uLCAxMDApOwogICAgICAgICAgICAkaHNsWzNdID0gJGZuKCRoc2xbM10sICRsaWdodG5lc3MsIDEwMCk7CgogICAgICAgICAgICAkcmdiID0gJHRoaXMtPnRvUkdCKCRoc2xbMV0sICRoc2xbMl0sICRoc2xbM10pOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRjb2xvcls0XSkpIHsKICAgICAgICAgICAgICAgICRyZ2JbNF0gPSAkY29sb3JbNF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjb2xvciA9ICRyZ2I7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGFscGhhICE9PSBudWxsKSB7CiAgICAgICAgICAgICRleGlzdGluZ0FscGhhID0gaXNzZXQoJGNvbG9yWzRdKSA/ICRjb2xvcls0XSA6IDE7CiAgICAgICAgICAgICRjb2xvcls0XSA9ICRmbigkZXhpc3RpbmdBbHBoYSwgJGFscGhhLCAxKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29sb3I7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliQWRqdXN0Q29sb3IgPSBbJ2NvbG9yJywgJ2t3YXJncy4uLiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkFkanVzdENvbG9yKCRhcmdzKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWx0ZXJDb2xvcigkYXJncywgJ2FkanVzdCcsIGZ1bmN0aW9uICgkYmFzZSwgJGFsdGVyLCAkbWF4KSB7CiAgICAgICAgICAgIGlmICgkYWx0ZXIgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYmFzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5ldyA9ICRiYXNlICsgJGFsdGVyOwoKICAgICAgICAgICAgaWYgKCRuZXcgPCAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZXcgPiAkbWF4KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG1heDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRuZXc7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliQ2hhbmdlQ29sb3IgPSBbJ2NvbG9yJywgJ2t3YXJncy4uLiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkNoYW5nZUNvbG9yKCRhcmdzKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWx0ZXJDb2xvcigkYXJncywnY2hhbmdlJywgZnVuY3Rpb24gKCRiYXNlLCAkYWx0ZXIsICRtYXgpIHsKICAgICAgICAgICAgaWYgKCRhbHRlciA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRiYXNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGFsdGVyOwogICAgICAgIH0pOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNjYWxlQ29sb3IgPSBbJ2NvbG9yJywgJ2t3YXJncy4uLiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNjYWxlQ29sb3IoJGFyZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbHRlckNvbG9yKCRhcmdzLCAnc2NhbGUnLCBmdW5jdGlvbiAoJGJhc2UsICRzY2FsZSwgJG1heCkgewogICAgICAgICAgICBpZiAoJHNjYWxlID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJhc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzY2FsZSA9ICRzY2FsZSAvIDEwMDsKCiAgICAgICAgICAgIGlmICgkc2NhbGUgPCAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJhc2UgKiAkc2NhbGUgKyAkYmFzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICgkbWF4IC0gJGJhc2UpICogJHNjYWxlICsgJGJhc2U7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSWVIZXhTdHIgPSBbJ2NvbG9yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliSWVIZXhTdHIoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCRhcmdzWzBdKTsKCiAgICAgICAgaWYgKFxpc19udWxsKCRjb2xvcikpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdFcnJvcjogYXJndW1lbnQgYCRjb2xvcmAgb2YgYGllLWhleC1zdHIoJGNvbG9yKWAgbXVzdCBiZSBhIGNvbG9yJyk7CiAgICAgICAgfQoKICAgICAgICAkY29sb3JbNF0gPSBpc3NldCgkY29sb3JbNF0pID8gcm91bmQoMjU1ICogJGNvbG9yWzRdKSA6IDI1NTsKCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX1NUUklORywgJycsIFtzcHJpbnRmKCcjJTAyWCUwMlglMDJYJTAyWCcsICRjb2xvcls0XSwgJGNvbG9yWzFdLCAkY29sb3JbMl0sICRjb2xvclszXSldXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJSZWQgPSBbJ2NvbG9yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliUmVkKCRhcmdzKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5jb2VyY2VDb2xvcigkYXJnc1swXSk7CgogICAgICAgIGlmIChcaXNfbnVsbCgkY29sb3IpKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcignRXJyb3I6IGFyZ3VtZW50IGAkY29sb3JgIG9mIGByZWQoJGNvbG9yKWAgbXVzdCBiZSBhIGNvbG9yJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigoaW50KSAkY29sb3JbMV0sICcnKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJHcmVlbiA9IFsnY29sb3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJHcmVlbigkYXJncykKICAgIHsKICAgICAgICAkY29sb3IgPSAkdGhpcy0+Y29lcmNlQ29sb3IoJGFyZ3NbMF0pOwoKICAgICAgICBpZiAoXGlzX251bGwoJGNvbG9yKSkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJ0Vycm9yOiBhcmd1bWVudCBgJGNvbG9yYCBvZiBgZ3JlZW4oJGNvbG9yKWAgbXVzdCBiZSBhIGNvbG9yJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigoaW50KSAkY29sb3JbMl0sICcnKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJCbHVlID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkJsdWUoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCRhcmdzWzBdKTsKCiAgICAgICAgaWYgKFxpc19udWxsKCRjb2xvcikpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdFcnJvcjogYXJndW1lbnQgYCRjb2xvcmAgb2YgYGJsdWUoJGNvbG9yKWAgbXVzdCBiZSBhIGNvbG9yJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigoaW50KSAkY29sb3JbM10sICcnKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJBbHBoYSA9IFsnY29sb3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJBbHBoYSgkYXJncykKICAgIHsKICAgICAgICBpZiAoJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCRhcmdzWzBdKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IE51bWJlcihpc3NldCgkY29sb3JbNF0pID8gJGNvbG9yWzRdIDogMSwgJycpOwogICAgICAgIH0KCiAgICAgICAgLy8gdGhpcyBtaWdodCBiZSB0aGUgSUUgZnVuY3Rpb24sIHNvIHJldHVybiB2YWx1ZSB1bmNoYW5nZWQKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJPcGFjaXR5ID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk9wYWNpdHkoJGFyZ3MpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJGFyZ3NbMF07CgogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmxpYkFscGhhKCRhcmdzKTsKICAgIH0KCiAgICAvLyBtaXggdHdvIGNvbG9ycwogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliTWl4ID0gWwogICAgICAgIFsnY29sb3IxJywgJ2NvbG9yMicsICd3ZWlnaHQ6NTAlJ10sCiAgICAgICAgWydjb2xvci0xJywgJ2NvbG9yLTInLCAnd2VpZ2h0OjUwJSddCiAgICAgICAgXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJNaXgoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkZmlyc3QsICRzZWNvbmQsICR3ZWlnaHQpID0gJGFyZ3M7CgogICAgICAgICRmaXJzdCA9ICR0aGlzLT5hc3NlcnRDb2xvcigkZmlyc3QsICdjb2xvcjEnKTsKICAgICAgICAkc2Vjb25kID0gJHRoaXMtPmFzc2VydENvbG9yKCRzZWNvbmQsICdjb2xvcjInKTsKICAgICAgICAkd2VpZ2h0U2NhbGUgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCR3ZWlnaHQsICd3ZWlnaHQnKS0+dmFsdWVJblJhbmdlKDAsIDEwMCwgJ3dlaWdodCcpIC8gMTAwOwoKICAgICAgICAkZmlyc3RBbHBoYSA9IGlzc2V0KCRmaXJzdFs0XSkgPyAkZmlyc3RbNF0gOiAxOwogICAgICAgICRzZWNvbmRBbHBoYSA9IGlzc2V0KCRzZWNvbmRbNF0pID8gJHNlY29uZFs0XSA6IDE7CgogICAgICAgICRub3JtYWxpemVkV2VpZ2h0ID0gJHdlaWdodFNjYWxlICogMiAtIDE7CiAgICAgICAgJGFscGhhRGlzdGFuY2UgPSAkZmlyc3RBbHBoYSAtICRzZWNvbmRBbHBoYTsKCiAgICAgICAgJGNvbWJpbmVkV2VpZ2h0ID0gJG5vcm1hbGl6ZWRXZWlnaHQgKiAkYWxwaGFEaXN0YW5jZSA9PSAtMSA/ICRub3JtYWxpemVkV2VpZ2h0IDogKCRub3JtYWxpemVkV2VpZ2h0ICsgJGFscGhhRGlzdGFuY2UpIC8gKDEgKyAkbm9ybWFsaXplZFdlaWdodCAqICRhbHBoYURpc3RhbmNlKTsKICAgICAgICAkd2VpZ2h0MSA9ICgkY29tYmluZWRXZWlnaHQgKyAxKSAvIDIuMDsKICAgICAgICAkd2VpZ2h0MiA9IDEuMCAtICR3ZWlnaHQxOwoKICAgICAgICAkbmV3ID0gW1R5cGU6OlRfQ09MT1IsCiAgICAgICAgICAgICR3ZWlnaHQxICogJGZpcnN0WzFdICsgJHdlaWdodDIgKiAkc2Vjb25kWzFdLAogICAgICAgICAgICAkd2VpZ2h0MSAqICRmaXJzdFsyXSArICR3ZWlnaHQyICogJHNlY29uZFsyXSwKICAgICAgICAgICAgJHdlaWdodDEgKiAkZmlyc3RbM10gKyAkd2VpZ2h0MiAqICRzZWNvbmRbM10sCiAgICAgICAgXTsKCiAgICAgICAgaWYgKCRmaXJzdEFscGhhICE9IDEuMCB8fCAkc2Vjb25kQWxwaGEgIT0gMS4wKSB7CiAgICAgICAgICAgICRuZXdbXSA9ICRmaXJzdEFscGhhICogJHdlaWdodFNjYWxlICsgJHNlY29uZEFscGhhICogKDEgLSAkd2VpZ2h0U2NhbGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5maXhDb2xvcigkbmV3KTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJIc2wgPSBbCiAgICAgICAgWydjaGFubmVscyddLAogICAgICAgIFsnaHVlJywgJ3NhdHVyYXRpb24nXSwKICAgICAgICBbJ2h1ZScsICdzYXR1cmF0aW9uJywgJ2xpZ2h0bmVzcyddLAogICAgICAgIFsnaHVlJywgJ3NhdHVyYXRpb24nLCAnbGlnaHRuZXNzJywgJ2FscGhhJ10gXTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkYXJncwogICAgICogQHBhcmFtIGFycmF5ICRrd2FyZ3MKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZ1bmNOYW1lCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJIc2woJGFyZ3MsICRrd2FyZ3MsICRmdW5jTmFtZSA9ICdoc2wnKQogICAgewogICAgICAgICRhcmdzX3RvX2NoZWNrID0gJGFyZ3M7CgogICAgICAgIGlmIChcY291bnQoJGFyZ3MpID09IDEpIHsKICAgICAgICAgICAgaWYgKCRhcmdzWzBdWzBdICE9PSBUeXBlOjpUX0xJU1QgfHwgXGNvdW50KCRhcmdzWzBdWzJdKSA8IDMgfHwgXGNvdW50KCRhcmdzWzBdWzJdKSA+IDQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJGZ1bmNOYW1lIC4gJygnLCAkYXJnc1swXSwgJyknXV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhcmdzID0gJGFyZ3NbMF1bMl07CiAgICAgICAgICAgICRhcmdzX3RvX2NoZWNrID0gJGt3YXJnc1snY2hhbm5lbHMnXVsyXTsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJGFyZ3MpID09PSAyKSB7CiAgICAgICAgICAgIC8vIGlmIHZhcigpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQsIHJldHVybiBhcyBhIGNzcyBmdW5jdGlvbgogICAgICAgICAgICBmb3JlYWNoICgkYXJncyBhcyAkYXJnKSB7CiAgICAgICAgICAgICAgICBpZiAoJGFyZ1swXSA9PT0gVHlwZTo6VF9GVU5DVElPTiAmJiBpbl9hcnJheSgkYXJnWzFdLCBbJ3ZhciddKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignTWlzc2luZyBhcmd1bWVudCAkbGlnaHRuZXNzLicpOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGt3YXJncyBhcyAkYXJnKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkYXJnWzBdLCBbVHlwZTo6VF9GVU5DVElPTl9DQUxMLCBUeXBlOjpUX0ZVTkNUSU9OXSkgJiYgaW5fYXJyYXkoJGFyZ1sxXSwgWydtaW4nLCAnbWF4J10pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGFyZ3NfdG9fY2hlY2sgYXMgJGsgPT4gJGFyZykgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJGFyZ1swXSwgW1R5cGU6OlRfRlVOQ1RJT05fQ0FMTCwgVHlwZTo6VF9GVU5DVElPTl0pICYmIGluX2FycmF5KCRhcmdbMV0sIFsnbWluJywgJ21heCddKSkgewogICAgICAgICAgICAgICAgaWYgKGNvdW50KCRrd2FyZ3MpID4gMSB8fCAoJGsgPj0gMiAmJiBjb3VudCgkYXJncykgPT09IDQpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGFyZ3NbJGtdID0gJHRoaXMtPnN0cmluZ2lmeUZuY2FsbEFyZ3MoJGFyZyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRrID49IDIgJiYgY291bnQoJGFyZ3MpID09PSA0ICYmCiAgICAgICAgICAgICAgICBpbl9hcnJheSgkYXJnWzBdLCBbVHlwZTo6VF9GVU5DVElPTl9DQUxMLCBUeXBlOjpUX0ZVTkNUSU9OXSkgJiYKICAgICAgICAgICAgICAgIGluX2FycmF5KCRhcmdbMV0sIFsnY2FsYycsJ2VudiddKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkaHVlID0gJHRoaXMtPnJlZHVjZSgkYXJnc1swXSk7CiAgICAgICAgJHNhdHVyYXRpb24gPSAkdGhpcy0+cmVkdWNlKCRhcmdzWzFdKTsKICAgICAgICAkbGlnaHRuZXNzID0gJHRoaXMtPnJlZHVjZSgkYXJnc1syXSk7CiAgICAgICAgJGFscGhhID0gbnVsbDsKCiAgICAgICAgaWYgKFxjb3VudCgkYXJncykgPT09IDQpIHsKICAgICAgICAgICAgJGFscGhhID0gJHRoaXMtPmNvbXBpbGVDb2xvclBhcnRWYWx1ZSgkYXJnc1szXSwgMCwgMTAwLCBmYWxzZSk7CgogICAgICAgICAgICBpZiAoISRodWUgaW5zdGFuY2VvZiBOdW1iZXIgfHwgISRzYXR1cmF0aW9uIGluc3RhbmNlb2YgTnVtYmVyIHx8ICEgJGxpZ2h0bmVzcyBpbnN0YW5jZW9mIE51bWJlciB8fCAhIGlzX251bWVyaWMoJGFscGhhKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFtUeXBlOjpUX1NUUklORywgJycsCiAgICAgICAgICAgICAgICAgICAgWyRmdW5jTmFtZSAuICcoJywgJGFyZ3NbMF0sICcsICcsICRhcmdzWzFdLCAnLCAnLCAkYXJnc1syXSwgJywgJywgJGFyZ3NbM10sICcpJ11dOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCEkaHVlIGluc3RhbmNlb2YgTnVtYmVyIHx8ICEkc2F0dXJhdGlvbiBpbnN0YW5jZW9mIE51bWJlciB8fCAhICRsaWdodG5lc3MgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJGZ1bmNOYW1lIC4gJygnLCAkYXJnc1swXSwgJywgJywgJGFyZ3NbMV0sICcsICcsICRhcmdzWzJdLCAnKSddXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGh1ZVZhbHVlID0gZm1vZCgkaHVlLT5nZXREaW1lbnNpb24oKSwgMzYwKTsKCiAgICAgICAgd2hpbGUgKCRodWVWYWx1ZSA8IDApIHsKICAgICAgICAgICAgJGh1ZVZhbHVlICs9IDM2MDsKICAgICAgICB9CgogICAgICAgICRjb2xvciA9ICR0aGlzLT50b1JHQigkaHVlVmFsdWUsIG1heCgwLCBtaW4oJHNhdHVyYXRpb24tPmdldERpbWVuc2lvbigpLCAxMDApKSwgbWF4KDAsIG1pbigkbGlnaHRuZXNzLT5nZXREaW1lbnNpb24oKSwgMTAwKSkpOwoKICAgICAgICBpZiAoISBcaXNfbnVsbCgkYWxwaGEpKSB7CiAgICAgICAgICAgICRjb2xvcls0XSA9ICRhbHBoYTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29sb3I7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSHNsYSA9IFsKICAgICAgICAgICAgWydjaGFubmVscyddLAogICAgICAgICAgICBbJ2h1ZScsICdzYXR1cmF0aW9uJ10sCiAgICAgICAgICAgIFsnaHVlJywgJ3NhdHVyYXRpb24nLCAnbGlnaHRuZXNzJ10sCiAgICAgICAgICAgIFsnaHVlJywgJ3NhdHVyYXRpb24nLCAnbGlnaHRuZXNzJywgJ2FscGhhJ11dOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkhzbGEoJGFyZ3MsICRrd2FyZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5saWJIc2woJGFyZ3MsICRrd2FyZ3MsICdoc2xhJyk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSHVlID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkh1ZSgkYXJncykKICAgIHsKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJGFyZ3NbMF0sICdjb2xvcicpOwogICAgICAgICRoc2wgPSAkdGhpcy0+dG9IU0woJGNvbG9yWzFdLCAkY29sb3JbMl0sICRjb2xvclszXSk7CgogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCRoc2xbMV0sICdkZWcnKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJTYXR1cmF0aW9uID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNhdHVyYXRpb24oJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdLCAnY29sb3InKTsKICAgICAgICAkaHNsID0gJHRoaXMtPnRvSFNMKCRjb2xvclsxXSwgJGNvbG9yWzJdLCAkY29sb3JbM10pOwoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigkaHNsWzJdLCAnJScpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkxpZ2h0bmVzcyA9IFsnY29sb3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJMaWdodG5lc3MoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdLCAnY29sb3InKTsKICAgICAgICAkaHNsID0gJHRoaXMtPnRvSFNMKCRjb2xvclsxXSwgJGNvbG9yWzJdLCAkY29sb3JbM10pOwoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigkaHNsWzNdLCAnJScpOwogICAgfQoKICAgIC8qCiAgICAgKiBUb2RvIDogYSBpbnRlZ3JlciBkYW5zIGxlIGZ1dHVyIG1vZHVsZSBjb2xvcgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSHdiID0gWwogICAgICAgIFsnY2hhbm5lbHMnXSwKICAgICAgICBbJ2h1ZScsICd3aGl0ZW5lc3MnLCAnYmxhY2tuZXNzJ10sCiAgICAgICAgWydodWUnLCAnd2hpdGVuZXNzJywgJ2JsYWNrbmVzcycsICdhbHBoYSddIF07CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliSHdiKCRhcmdzLCAka3dhcmdzLCAkZnVuY05hbWUgPSAnaHdiJykKICAgIHsKICAgICAgICAkYXJnc190b19jaGVjayA9ICRhcmdzOwoKICAgICAgICBpZiAoXGNvdW50KCRhcmdzKSA9PSAxKSB7CiAgICAgICAgICAgIGlmICgkYXJnc1swXVswXSAhPT0gVHlwZTo6VF9MSVNUKSB7CiAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoIk1pc3NpbmcgZWxlbWVudHMgXCR3aGl0ZW5lc3MgYW5kIFwkYmxhY2tuZXNzIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChcdHJpbSgkYXJnc1swXVsxXSkpIHsKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiXCRjaGFubmVscyBtdXN0IGJlIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3QuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghIGVtcHR5KCRhcmdzWzBdWydlbmNsb3NpbmcnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiXCRjaGFubmVscyBtdXN0IGJlIGFuIHVuYnJhY2tldGVkIGxpc3QuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhcmdzID0gJGFyZ3NbMF1bMl07CiAgICAgICAgICAgIGlmIChcY291bnQoJGFyZ3MpID4gMykgewogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCJod2IoKSA6IE9ubHkgMyBlbGVtZW50cyBhcmUgYWxsb3dlZCBidXQgIi4gXGNvdW50KCRhcmdzKSAuICJ3ZXJlIHBhc3NlZCIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYXJnc190b19jaGVjayA9ICR0aGlzLT5leHRyYWN0U2xhc2hBbHBoYUluQ29sb3JGdW5jdGlvbigka3dhcmdzWydjaGFubmVscyddWzJdKTsKICAgICAgICAgICAgaWYgKFxjb3VudCgkYXJnc190b19jaGVjaykgIT09IFxjb3VudCgka3dhcmdzWydjaGFubmVscyddWzJdKSkgewogICAgICAgICAgICAgICAgJGFyZ3MgPSAkYXJnc190b19jaGVjazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKFxjb3VudCgkYXJnc190b19jaGVjaykgPCAyKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiTWlzc2luZyBlbGVtZW50cyBcJHdoaXRlbmVzcyBhbmQgXCRibGFja25lc3MiKTsKICAgICAgICB9CiAgICAgICAgaWYgKFxjb3VudCgkYXJnc190b19jaGVjaykgPCAzKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiTWlzc2luZyBlbGVtZW50IFwkYmxhY2tuZXNzIik7CiAgICAgICAgfQogICAgICAgIGlmIChcY291bnQoJGFyZ3NfdG9fY2hlY2spID4gNCkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoImh3YigpIDogT25seSA0IGVsZW1lbnRzIGFyZSBhbGxvd2VkIGJ1dCAiLiBcY291bnQoJGFyZ3MpIC4gIndlcmUgcGFzc2VkIik7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgka3dhcmdzIGFzICRrID0+ICRhcmcpIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRhcmdbMF0sIFtUeXBlOjpUX0ZVTkNUSU9OX0NBTExdKSAmJiBpbl9hcnJheSgkYXJnWzFdLCBbJ21pbicsICdtYXgnXSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkYXJnc190b19jaGVjayBhcyAkayA9PiAkYXJnKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkYXJnWzBdLCBbVHlwZTo6VF9GVU5DVElPTl9DQUxMXSkgJiYgaW5fYXJyYXkoJGFyZ1sxXSwgWydtaW4nLCAnbWF4J10pKSB7CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJGt3YXJncykgPiAxIHx8ICgkayA+PSAyICYmIGNvdW50KCRhcmdzKSA9PT0gNCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYXJnc1ska10gPSAkdGhpcy0+c3RyaW5naWZ5Rm5jYWxsQXJncygkYXJnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJGsgPj0gMiAmJiBjb3VudCgkYXJncykgPT09IDQgJiYKICAgICAgICAgICAgICAgIGluX2FycmF5KCRhcmdbMF0sIFtUeXBlOjpUX0ZVTkNUSU9OX0NBTEwsIFR5cGU6OlRfRlVOQ1RJT05dKSAmJgogICAgICAgICAgICAgICAgaW5fYXJyYXkoJGFyZ1sxXSwgWydjYWxjJywnZW52J10pCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRodWUgPSAkdGhpcy0+cmVkdWNlKCRhcmdzWzBdKTsKICAgICAgICAkd2hpdGVuZXNzID0gJHRoaXMtPnJlZHVjZSgkYXJnc1sxXSk7CiAgICAgICAgJGJsYWNrbmVzcyA9ICR0aGlzLT5yZWR1Y2UoJGFyZ3NbMl0pOwogICAgICAgICRhbHBoYSA9IG51bGw7CgogICAgICAgIGlmIChcY291bnQoJGFyZ3MpID09PSA0KSB7CiAgICAgICAgICAgICRhbHBoYSA9ICR0aGlzLT5jb21waWxlQ29sb3JQYXJ0VmFsdWUoJGFyZ3NbM10sIDAsIDEsIGZhbHNlKTsKCiAgICAgICAgICAgIGlmICghIFxpc19udW1lcmljKCRhbHBoYSkpIHsKICAgICAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRhcmdzWzNdKTsKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcigiXCRhbHBoYTogJHZhbCBpcyBub3QgYSBudW1iZXIiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmFzc2VydE51bWJlcigkaHVlLCAnaHVlJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydFVuaXQoJHdoaXRlbmVzcywgWyclJ10sICd3aGl0ZW5lc3MnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VW5pdCgkYmxhY2tuZXNzLCBbJyUnXSwgJ2JsYWNrbmVzcycpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0UmFuZ2UoJHdoaXRlbmVzcywgMCwgMTAwLCAiMCUgYW5kIDEwMCUiLCAid2hpdGVuZXNzIik7CiAgICAgICAgJHRoaXMtPmFzc2VydFJhbmdlKCRibGFja25lc3MsIDAsIDEwMCwgIjAlIGFuZCAxMDAlIiwgImJsYWNrbmVzcyIpOwoKICAgICAgICAkdyA9ICR3aGl0ZW5lc3MtPmdldERpbWVuc2lvbigpOwogICAgICAgICRiID0gJGJsYWNrbmVzcy0+Z2V0RGltZW5zaW9uKCk7CgogICAgICAgICRodWVWYWx1ZSA9ICRodWUtPmdldERpbWVuc2lvbigpICUgMzYwOwoKICAgICAgICB3aGlsZSAoJGh1ZVZhbHVlIDwgMCkgewogICAgICAgICAgICAkaHVlVmFsdWUgKz0gMzYwOwogICAgICAgIH0KCiAgICAgICAgJGNvbG9yID0gJHRoaXMtPkhXQnRvUkdCKCRodWVWYWx1ZSwgJHcsICRiKTsKCiAgICAgICAgaWYgKCEgXGlzX251bGwoJGFscGhhKSkgewogICAgICAgICAgICAkY29sb3JbNF0gPSAkYWxwaGE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbG9yOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYldoaXRlbmVzcyA9IFsnY29sb3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJXaGl0ZW5lc3MoJGFyZ3MsICRrd2FyZ3MsICRmdW5jTmFtZSA9ICd3aGl0ZW5lc3MnKSB7CgogICAgICAgICRjb2xvciA9ICR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSk7CiAgICAgICAgJGh3YiA9ICR0aGlzLT5SR0J0b0hXQigkY29sb3JbMV0sICRjb2xvclsyXSwgJGNvbG9yWzNdKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXIoJGh3YlsyXSwgJyUnKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJCbGFja25lc3MgPSBbJ2NvbG9yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliQmxhY2tuZXNzKCRhcmdzLCAka3dhcmdzLCAkZnVuY05hbWUgPSAnYmxhY2tuZXNzJykgewoKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJGFyZ3NbMF0pOwogICAgICAgICRod2IgPSAkdGhpcy0+UkdCdG9IV0IoJGNvbG9yWzFdLCAkY29sb3JbMl0sICRjb2xvclszXSk7CgogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCRod2JbM10sICclJyk7CiAgICB9CiAgICAqLwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICAgICAkY29sb3IKICAgICAqIEBwYXJhbSBpbnQgICAgICAgJGlkeAogICAgICogQHBhcmFtIGludHxmbG9hdCAkYW1vdW50CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWRqdXN0SHNsKCRjb2xvciwgJGlkeCwgJGFtb3VudCkKICAgIHsKICAgICAgICAkaHNsID0gJHRoaXMtPnRvSFNMKCRjb2xvclsxXSwgJGNvbG9yWzJdLCAkY29sb3JbM10pOwogICAgICAgICRoc2xbJGlkeF0gKz0gJGFtb3VudDsKCiAgICAgICAgaWYgKCRpZHggIT09IDEpIHsKICAgICAgICAgICAgLy8gQ2xhbXAgdGhlIHNhdHVyYXRpb24gYW5kIGxpZ2h0bmVzcwogICAgICAgICAgICAkaHNsWyRpZHhdID0gbWluKG1heCgwLCAkaHNsWyRpZHhdKSwgMTAwKTsKICAgICAgICB9CgogICAgICAgICRvdXQgPSAkdGhpcy0+dG9SR0IoJGhzbFsxXSwgJGhzbFsyXSwgJGhzbFszXSk7CgogICAgICAgIGlmIChpc3NldCgkY29sb3JbNF0pKSB7CiAgICAgICAgICAgICRvdXRbNF0gPSAkY29sb3JbNF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJBZGp1c3RIdWUgPSBbJ2NvbG9yJywgJ2RlZ3JlZXMnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJBZGp1c3RIdWUoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdLCAnY29sb3InKTsKICAgICAgICAkZGVncmVlcyA9ICR0aGlzLT5hc3NlcnROdW1iZXIoJGFyZ3NbMV0sICdkZWdyZWVzJyktPmdldERpbWVuc2lvbigpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmFkanVzdEhzbCgkY29sb3IsIDEsICRkZWdyZWVzKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJMaWdodGVuID0gWydjb2xvcicsICdhbW91bnQnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJMaWdodGVuKCRhcmdzKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSwgJ2NvbG9yJyk7CiAgICAgICAgJGFtb3VudCA9IFV0aWw6OmNoZWNrUmFuZ2UoJ2Ftb3VudCcsIG5ldyBSYW5nZSgwLCAxMDApLCAkYXJnc1sxXSwgJyUnKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGp1c3RIc2woJGNvbG9yLCAzLCAkYW1vdW50KTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJEYXJrZW4gPSBbJ2NvbG9yJywgJ2Ftb3VudCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkRhcmtlbigkYXJncykKICAgIHsKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJGFyZ3NbMF0sICdjb2xvcicpOwogICAgICAgICRhbW91bnQgPSBVdGlsOjpjaGVja1JhbmdlKCdhbW91bnQnLCBuZXcgUmFuZ2UoMCwgMTAwKSwgJGFyZ3NbMV0sICclJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+YWRqdXN0SHNsKCRjb2xvciwgMywgLSRhbW91bnQpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNhdHVyYXRlID0gW1snY29sb3InLCAnYW1vdW50J10sIFsnYW1vdW50J11dOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNhdHVyYXRlKCRhcmdzKQogICAgewogICAgICAgICR2YWx1ZSA9ICRhcmdzWzBdOwoKICAgICAgICBpZiAoY291bnQoJGFyZ3MpID09PSAxKSB7CiAgICAgICAgICAgICR0aGlzLT5hc3NlcnROdW1iZXIoJGFyZ3NbMF0sICdhbW91bnQnKTsKCiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdLCAnY29sb3InKTsKICAgICAgICAkYW1vdW50ID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1sxXSwgJ2Ftb3VudCcpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmFkanVzdEhzbCgkY29sb3IsIDIsICRhbW91bnQtPnZhbHVlSW5SYW5nZSgwLCAxMDAsICdhbW91bnQnKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliRGVzYXR1cmF0ZSA9IFsnY29sb3InLCAnYW1vdW50J107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliRGVzYXR1cmF0ZSgkYXJncykKICAgIHsKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJGFyZ3NbMF0sICdjb2xvcicpOwogICAgICAgICRhbW91bnQgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWzFdLCAnYW1vdW50Jyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+YWRqdXN0SHNsKCRjb2xvciwgMiwgLSRhbW91bnQtPnZhbHVlSW5SYW5nZSgwLCAxMDAsICdhbW91bnQnKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliR3JheXNjYWxlID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkdyYXlzY2FsZSgkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJnc1swXTsKCiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+YWRqdXN0SHNsKCR0aGlzLT5hc3NlcnRDb2xvcigkdmFsdWUsICdjb2xvcicpLCAyLCAtMTAwKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJDb21wbGVtZW50ID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkNvbXBsZW1lbnQoJGFyZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGp1c3RIc2woJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdLCAnY29sb3InKSwgMSwgMTgwKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJJbnZlcnQgPSBbJ2NvbG9yJywgJ3dlaWdodDoxMDAlJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliSW52ZXJ0KCRhcmdzKQogICAgewogICAgICAgICR2YWx1ZSA9ICRhcmdzWzBdOwoKICAgICAgICAkd2VpZ2h0ID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1sxXSwgJ3dlaWdodCcpOwoKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyKSB7CiAgICAgICAgICAgIGlmICgkd2VpZ2h0LT5nZXREaW1lbnNpb24oKSAhPSAxMDAgfHwgISR3ZWlnaHQtPmhhc1VuaXQoJyUnKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oJ09ubHkgb25lIGFyZ3VtZW50IG1heSBiZSBwYXNzZWQgdG8gdGhlIHBsYWluLUNTUyBpbnZlcnQoKSBmdW5jdGlvbi4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJHZhbHVlLCAnY29sb3InKTsKICAgICAgICAkaW52ZXJ0ZWQgPSAkY29sb3I7CiAgICAgICAgJGludmVydGVkWzFdID0gMjU1IC0gJGludmVydGVkWzFdOwogICAgICAgICRpbnZlcnRlZFsyXSA9IDI1NSAtICRpbnZlcnRlZFsyXTsKICAgICAgICAkaW52ZXJ0ZWRbM10gPSAyNTUgLSAkaW52ZXJ0ZWRbM107CgogICAgICAgIHJldHVybiAkdGhpcy0+bGliTWl4KFskaW52ZXJ0ZWQsICRjb2xvciwgJHdlaWdodF0pOwogICAgfQoKICAgIC8vIGluY3JlYXNlcyBvcGFjaXR5IGJ5IGFtb3VudAogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliT3BhY2lmeSA9IFsnY29sb3InLCAnYW1vdW50J107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliT3BhY2lmeSgkYXJncykKICAgIHsKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJGFyZ3NbMF0sICdjb2xvcicpOwogICAgICAgICRhbW91bnQgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWzFdLCAnYW1vdW50Jyk7CgogICAgICAgICRjb2xvcls0XSA9IChpc3NldCgkY29sb3JbNF0pID8gJGNvbG9yWzRdIDogMSkgKyAkYW1vdW50LT52YWx1ZUluUmFuZ2VXaXRoVW5pdCgwLCAxLCAnYW1vdW50JywgJycpOwogICAgICAgICRjb2xvcls0XSA9IG1pbigxLCBtYXgoMCwgJGNvbG9yWzRdKSk7CgogICAgICAgIHJldHVybiAkY29sb3I7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliRmFkZUluID0gWydjb2xvcicsICdhbW91bnQnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJGYWRlSW4oJGFyZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5saWJPcGFjaWZ5KCRhcmdzKTsKICAgIH0KCiAgICAvLyBkZWNyZWFzZXMgb3BhY2l0eSBieSBhbW91bnQKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlRyYW5zcGFyZW50aXplID0gWydjb2xvcicsICdhbW91bnQnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJUcmFuc3BhcmVudGl6ZSgkYXJncykKICAgIHsKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJGFyZ3NbMF0sICdjb2xvcicpOwogICAgICAgICRhbW91bnQgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWzFdLCAnYW1vdW50Jyk7CgogICAgICAgICRjb2xvcls0XSA9IChpc3NldCgkY29sb3JbNF0pID8gJGNvbG9yWzRdIDogMSkgLSAkYW1vdW50LT52YWx1ZUluUmFuZ2VXaXRoVW5pdCgwLCAxLCAnYW1vdW50JywgJycpOwogICAgICAgICRjb2xvcls0XSA9IG1pbigxLCBtYXgoMCwgJGNvbG9yWzRdKSk7CgogICAgICAgIHJldHVybiAkY29sb3I7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliRmFkZU91dCA9IFsnY29sb3InLCAnYW1vdW50J107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliRmFkZU91dCgkYXJncykKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxpYlRyYW5zcGFyZW50aXplKCRhcmdzKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJVbnF1b3RlID0gWydzdHJpbmcnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJVbnF1b3RlKCRhcmdzKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRzdHIgPSAkdGhpcy0+YXNzZXJ0U3RyaW5nKCRhcmdzWzBdLCAnc3RyaW5nJyk7CiAgICAgICAgfSBjYXRjaCAoU2Fzc1NjcmlwdEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRhcmdzWzBdKTsKICAgICAgICAgICAgJGZuYW1lID0gJHRoaXMtPmdldFByZXR0eVBhdGgoJHRoaXMtPnNvdXJjZU5hbWVzWyR0aGlzLT5zb3VyY2VJbmRleF0pOwogICAgICAgICAgICAkbGluZSAgPSAkdGhpcy0+c291cmNlTGluZTsKCiAgICAgICAgICAgICRtZXNzYWdlID0gIlBhc3NpbmcgJHZhbHVlLCBhIG5vbi1zdHJpbmcgdmFsdWUsIHRvIHVucXVvdGUoKQp3aWxsIGJlIGFuIGVycm9yIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBTYXNzLlxuICAgICAgICAgb24gbGluZSAkbGluZSBvZiAkZm5hbWUiOwoKICAgICAgICAgICAgJHRoaXMtPmxvZ2dlci0+d2FybigkbWVzc2FnZSwgdHJ1ZSk7CgogICAgICAgICAgICByZXR1cm4gJGFyZ3NbMF07CiAgICAgICAgfQoKICAgICAgICAkc3RyWzFdID0gJyc7CgogICAgICAgIHJldHVybiAkc3RyOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlF1b3RlID0gWydzdHJpbmcnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJRdW90ZSgkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+YXNzZXJ0U3RyaW5nKCRhcmdzWzBdLCAnc3RyaW5nJyk7CgogICAgICAgICR2YWx1ZVsxXSA9ICciJzsKCiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJQZXJjZW50YWdlID0gWydudW1iZXInXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJQZXJjZW50YWdlKCRhcmdzKQogICAgewogICAgICAgICRudW0gPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWzBdLCAnbnVtYmVyJyk7CiAgICAgICAgJG51bS0+YXNzZXJ0Tm9Vbml0cygnbnVtYmVyJyk7CgogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCRudW0tPmdldERpbWVuc2lvbigpICogMTAwLCAnJScpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlJvdW5kID0gWydudW1iZXInXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJSb3VuZCgkYXJncykKICAgIHsKICAgICAgICAkbnVtID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1swXSwgJ251bWJlcicpOwoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcihyb3VuZCgkbnVtLT5nZXREaW1lbnNpb24oKSksICRudW0tPmdldE51bWVyYXRvclVuaXRzKCksICRudW0tPmdldERlbm9taW5hdG9yVW5pdHMoKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliRmxvb3IgPSBbJ251bWJlciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkZsb29yKCRhcmdzKQogICAgewogICAgICAgICRudW0gPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWzBdLCAnbnVtYmVyJyk7CgogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKGZsb29yKCRudW0tPmdldERpbWVuc2lvbigpKSwgJG51bS0+Z2V0TnVtZXJhdG9yVW5pdHMoKSwgJG51bS0+Z2V0RGVub21pbmF0b3JVbml0cygpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJDZWlsID0gWydudW1iZXInXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJDZWlsKCRhcmdzKQogICAgewogICAgICAgICRudW0gPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWzBdLCAnbnVtYmVyJyk7CgogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKGNlaWwoJG51bS0+Z2V0RGltZW5zaW9uKCkpLCAkbnVtLT5nZXROdW1lcmF0b3JVbml0cygpLCAkbnVtLT5nZXREZW5vbWluYXRvclVuaXRzKCkpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkFicyA9IFsnbnVtYmVyJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliQWJzKCRhcmdzKQogICAgewogICAgICAgICRudW0gPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWzBdLCAnbnVtYmVyJyk7CgogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKGFicygkbnVtLT5nZXREaW1lbnNpb24oKSksICRudW0tPmdldE51bWVyYXRvclVuaXRzKCksICRudW0tPmdldERlbm9taW5hdG9yVW5pdHMoKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliTWluID0gWydudW1iZXJzLi4uJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliTWluKCRhcmdzKQogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEB2YXIgTnVtYmVyfG51bGwKICAgICAgICAgKi8KICAgICAgICAkbWluID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJGFyZ3NbMF1bMl0gYXMgJGFyZykgewogICAgICAgICAgICAkbnVtYmVyID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnKTsKCiAgICAgICAgICAgIGlmIChcaXNfbnVsbCgkbWluKSB8fCAkbWluLT5ncmVhdGVyVGhhbigkbnVtYmVyKSkgewogICAgICAgICAgICAgICAgJG1pbiA9ICRudW1iZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghXGlzX251bGwoJG1pbikpIHsKICAgICAgICAgICAgcmV0dXJuICRtaW47CiAgICAgICAgfQoKICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJ0F0IGxlYXN0IG9uZSBhcmd1bWVudCBtdXN0IGJlIHBhc3NlZC4nKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJNYXggPSBbJ251bWJlcnMuLi4nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJNYXgoJGFyZ3MpCiAgICB7CiAgICAgICAgLyoqCiAgICAgICAgICogQHZhciBOdW1iZXJ8bnVsbAogICAgICAgICAqLwogICAgICAgICRtYXggPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkYXJnc1swXVsyXSBhcyAkYXJnKSB7CiAgICAgICAgICAgICRudW1iZXIgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmcpOwoKICAgICAgICAgICAgaWYgKFxpc19udWxsKCRtYXgpIHx8ICRtYXgtPmxlc3NUaGFuKCRudW1iZXIpKSB7CiAgICAgICAgICAgICAgICAkbWF4ID0gJG51bWJlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaXNfbnVsbCgkbWF4KSkgewogICAgICAgICAgICByZXR1cm4gJG1heDsKICAgICAgICB9CgogICAgICAgIHRocm93ICR0aGlzLT5lcnJvcignQXQgbGVhc3Qgb25lIGFyZ3VtZW50IG11c3QgYmUgcGFzc2VkLicpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkxlbmd0aCA9IFsnbGlzdCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkxlbmd0aCgkYXJncykKICAgIHsKICAgICAgICAkbGlzdCA9ICR0aGlzLT5jb2VyY2VMaXN0KCRhcmdzWzBdLCAnLCcsIHRydWUpOwoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcihcY291bnQoJGxpc3RbMl0pLCAnJyk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliTGlzdFNlcGFyYXRvciA9IFsnbGlzdCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkxpc3RTZXBhcmF0b3IoJGFyZ3MpCiAgICB7CiAgICAgICAgaWYgKCEgXGluX2FycmF5KCRhcmdzWzBdWzBdLCBbVHlwZTo6VF9MSVNULCBUeXBlOjpUX01BUF0pKSB7CiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9LRVlXT1JELCAnc3BhY2UnXTsKICAgICAgICB9CgogICAgICAgICRsaXN0ID0gJHRoaXMtPmNvZXJjZUxpc3QoJGFyZ3NbMF0pOwoKICAgICAgICBpZiAoJGxpc3RbMV0gPT09ICcnICYmIFxjb3VudCgkbGlzdFsyXSkgPD0gMSAmJiBlbXB0eSgkbGlzdFsnZW5jbG9zaW5nJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9LRVlXT1JELCAnc3BhY2UnXTsKICAgICAgICB9CgogICAgICAgIGlmICgkbGlzdFsxXSA9PT0gJywnKSB7CiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9LRVlXT1JELCAnY29tbWEnXTsKICAgICAgICB9CgogICAgICAgIGlmICgkbGlzdFsxXSA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9LRVlXT1JELCAnc2xhc2gnXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9LRVlXT1JELCAnc3BhY2UnXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJOdGggPSBbJ2xpc3QnLCAnbiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk50aCgkYXJncykKICAgIHsKICAgICAgICAkbGlzdCA9ICR0aGlzLT5jb2VyY2VMaXN0KCRhcmdzWzBdLCAnLCcsIGZhbHNlKTsKICAgICAgICAkbiA9ICR0aGlzLT5hc3NlcnRJbnRlZ2VyKCRhcmdzWzFdKTsKCiAgICAgICAgaWYgKCRuID4gMCkgewogICAgICAgICAgICAkbi0tOwogICAgICAgIH0gZWxzZWlmICgkbiA8IDApIHsKICAgICAgICAgICAgJG4gKz0gXGNvdW50KCRsaXN0WzJdKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpc3NldCgkbGlzdFsyXVskbl0pID8gJGxpc3RbMl1bJG5dIDogc3RhdGljOjokZGVmYXVsdFZhbHVlOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNldE50aCA9IFsnbGlzdCcsICduJywgJ3ZhbHVlJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU2V0TnRoKCRhcmdzKQogICAgewogICAgICAgICRsaXN0ID0gJHRoaXMtPmNvZXJjZUxpc3QoJGFyZ3NbMF0pOwogICAgICAgICRuID0gJHRoaXMtPmFzc2VydEludGVnZXIoJGFyZ3NbMV0pOwoKICAgICAgICBpZiAoJG4gPiAwKSB7CiAgICAgICAgICAgICRuLS07CiAgICAgICAgfSBlbHNlaWYgKCRuIDwgMCkgewogICAgICAgICAgICAkbiArPSBcY291bnQoJGxpc3RbMl0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgaXNzZXQoJGxpc3RbMl1bJG5dKSkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgZm9yICJuIicpOwogICAgICAgIH0KCiAgICAgICAgJGxpc3RbMl1bJG5dID0gJGFyZ3NbMl07CgogICAgICAgIHJldHVybiAkbGlzdDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJNYXBHZXQgPSBbJ21hcCcsICdrZXknLCAna2V5cy4uLiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1hcEdldCgkYXJncykKICAgIHsKICAgICAgICAkbWFwID0gJHRoaXMtPmFzc2VydE1hcCgkYXJnc1swXSwgJ21hcCcpOwogICAgICAgIGlmICghaXNzZXQoJGFyZ3NbMl0pKSB7CiAgICAgICAgICAgIC8vIEJDIGxheWVyIGZvciB1c2FnZXMgb2YgdGhlIGZ1bmN0aW9uIGZyb20gUEhQIGNvZGUgcmF0aGVyIHRoYW4gZnJvbSB0aGUgU2FzcyBmdW5jdGlvbgogICAgICAgICAgICAkYXJnc1syXSA9IHNlbGY6OiRlbXB0eUFyZ3VtZW50TGlzdDsKICAgICAgICB9CiAgICAgICAgJGtleXMgPSBhcnJheV9tZXJnZShbJGFyZ3NbMV1dLCAkYXJnc1syXVsyXSk7CiAgICAgICAgJHZhbHVlID0gc3RhdGljOjokbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJGtleXMgYXMgJGtleSkgewogICAgICAgICAgICBpZiAoIVxpc19hcnJheSgkbWFwKSB8fCAkbWFwWzBdICE9PSBUeXBlOjpUX01BUCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRtYXAgPSAkdGhpcy0+bWFwR2V0KCRtYXAsICRrZXkpOwoKICAgICAgICAgICAgaWYgKCRtYXAgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdmFsdWUgPSAkbWFwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhhdCBrZXkgaW4gdGhlIG1hcAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgJG1hcAogICAgICogQHBhcmFtIE51bWJlcnxhcnJheSAka2V5CiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXJ8YXJyYXl8bnVsbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1hcEdldChhcnJheSAkbWFwLCAka2V5KQogICAgewogICAgICAgICRpbmRleCA9ICR0aGlzLT5tYXBHZXRFbnRyeUluZGV4KCRtYXAsICRrZXkpOwoKICAgICAgICBpZiAoJGluZGV4ICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbWFwWzJdWyRpbmRleF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgdGhlIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gdGhhdCBrZXkgaW4gdGhlIG1hcCBlbnRyaWVzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAkbWFwCiAgICAgKiBAcGFyYW0gTnVtYmVyfGFycmF5ICRrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWFwR2V0RW50cnlJbmRleChhcnJheSAkbWFwLCAka2V5KQogICAgewogICAgICAgICRrZXkgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygka2V5KSk7CgogICAgICAgIGZvciAoJGkgPSBcY291bnQoJG1hcFsxXSkgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgIGlmICgka2V5ID09PSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkbWFwWzFdWyRpXSkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYk1hcEtleXMgPSBbJ21hcCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1hcEtleXMoJGFyZ3MpCiAgICB7CiAgICAgICAgJG1hcCA9ICR0aGlzLT5hc3NlcnRNYXAoJGFyZ3NbMF0sICdtYXAnKTsKICAgICAgICAka2V5cyA9ICRtYXBbMV07CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9MSVNULCAnLCcsICRrZXlzXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJNYXBWYWx1ZXMgPSBbJ21hcCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1hcFZhbHVlcygkYXJncykKICAgIHsKICAgICAgICAkbWFwID0gJHRoaXMtPmFzc2VydE1hcCgkYXJnc1swXSwgJ21hcCcpOwogICAgICAgICR2YWx1ZXMgPSAkbWFwWzJdOwoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfTElTVCwgJywnLCAkdmFsdWVzXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJNYXBSZW1vdmUgPSBbCiAgICAgICAgWydtYXAnXSwKICAgICAgICBbJ21hcCcsICdrZXknLCAna2V5cy4uLiddLAogICAgXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJNYXBSZW1vdmUoJGFyZ3MpCiAgICB7CiAgICAgICAgJG1hcCA9ICR0aGlzLT5hc3NlcnRNYXAoJGFyZ3NbMF0sICdtYXAnKTsKCiAgICAgICAgaWYgKFxjb3VudCgkYXJncykgPT09IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRtYXA7CiAgICAgICAgfQoKICAgICAgICAka2V5cyA9IFtdOwogICAgICAgICRrZXlzW10gPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkYXJnc1sxXSkpOwoKICAgICAgICBmb3JlYWNoICgkYXJnc1syXVsyXSBhcyAka2V5KSB7CiAgICAgICAgICAgICRrZXlzW10gPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygka2V5KSk7CiAgICAgICAgfQoKICAgICAgICBmb3IgKCRpID0gXGNvdW50KCRtYXBbMV0pIC0gMTsgJGkgPj0gMDsgJGktLSkgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR0aGlzLT5jb2VyY2VTdHJpbmcoJG1hcFsxXVskaV0pKSwgJGtleXMpKSB7CiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJG1hcFsxXSwgJGksIDEpOwogICAgICAgICAgICAgICAgYXJyYXlfc3BsaWNlKCRtYXBbMl0sICRpLCAxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtYXA7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliTWFwSGFzS2V5ID0gWydtYXAnLCAna2V5JywgJ2tleXMuLi4nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJNYXBIYXNLZXkoJGFyZ3MpCiAgICB7CiAgICAgICAgJG1hcCA9ICR0aGlzLT5hc3NlcnRNYXAoJGFyZ3NbMF0sICdtYXAnKTsKICAgICAgICBpZiAoIWlzc2V0KCRhcmdzWzJdKSkgewogICAgICAgICAgICAvLyBCQyBsYXllciBmb3IgdXNhZ2VzIG9mIHRoZSBmdW5jdGlvbiBmcm9tIFBIUCBjb2RlIHJhdGhlciB0aGFuIGZyb20gdGhlIFNhc3MgZnVuY3Rpb24KICAgICAgICAgICAgJGFyZ3NbMl0gPSBzZWxmOjokZW1wdHlBcmd1bWVudExpc3Q7CiAgICAgICAgfQogICAgICAgICRrZXlzID0gYXJyYXlfbWVyZ2UoWyRhcmdzWzFdXSwgJGFyZ3NbMl1bMl0pOwogICAgICAgICRsYXN0S2V5ID0gYXJyYXlfcG9wKCRrZXlzKTsKCiAgICAgICAgZm9yZWFjaCAoJGtleXMgYXMgJGtleSkgewogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+bWFwR2V0KCRtYXAsICRrZXkpOwoKICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PT0gbnVsbCB8fCAkdmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIgfHwgJHZhbHVlWzBdICE9PSBUeXBlOjpUX01BUCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1hcCA9ICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCR0aGlzLT5tYXBIYXNLZXkoJG1hcCwgJGxhc3RLZXkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJGtleVZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWFwSGFzS2V5KGFycmF5ICRtYXAsICRrZXlWYWx1ZSkKICAgIHsKICAgICAgICAka2V5ID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR0aGlzLT5jb2VyY2VTdHJpbmcoJGtleVZhbHVlKSk7CgogICAgICAgIGZvciAoJGkgPSBcY291bnQoJG1hcFsxXSkgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgIGlmICgka2V5ID09PSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkbWFwWzFdWyRpXSkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYk1hcE1lcmdlID0gWwogICAgICAgIFsnbWFwMScsICdtYXAyJ10sCiAgICAgICAgWydtYXAtMScsICdtYXAtMiddLAogICAgICAgIFsnbWFwMScsICdhcmdzLi4uJ10KICAgIF07CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliTWFwTWVyZ2UoJGFyZ3MpCiAgICB7CiAgICAgICAgJG1hcDEgPSAkdGhpcy0+YXNzZXJ0TWFwKCRhcmdzWzBdLCAnbWFwMScpOwogICAgICAgICRtYXAyID0gJGFyZ3NbMV07CiAgICAgICAgJGtleXMgPSBbXTsKICAgICAgICBpZiAoJG1hcDJbMF0gPT09IFR5cGU6OlRfTElTVCAmJiBpc3NldCgkbWFwMlszXSkgJiYgXGlzX2FycmF5KCRtYXAyWzNdKSkgewogICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSB2YXJpYWRpYyBzaWduYXR1cmUKICAgICAgICAgICAgaWYgKFxjb3VudCgkbWFwMlsyXSkgPT09IDApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKCdFeHBlY3RlZCAkYXJncyB0byBjb250YWluIGEga2V5LicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChcY291bnQoJG1hcDJbMl0pID09PSAxKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbignRXhwZWN0ZWQgJGFyZ3MgdG8gY29udGFpbiBhIHZhbHVlLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRrZXlzID0gJG1hcDJbMl07CiAgICAgICAgICAgICRtYXAyID0gYXJyYXlfcG9wKCRrZXlzKTsKICAgICAgICB9CiAgICAgICAgJG1hcDIgPSAkdGhpcy0+YXNzZXJ0TWFwKCRtYXAyLCAnbWFwMicpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPm1vZGlmeU1hcCgkbWFwMSwgJGtleXMsIGZ1bmN0aW9uICgkb2xkVmFsdWUpIHVzZSAoJG1hcDIpIHsKICAgICAgICAgICAgJG5lc3RlZE1hcCA9ICR0aGlzLT50cnlNYXAoJG9sZFZhbHVlKTsKCiAgICAgICAgICAgIGlmICgkbmVzdGVkTWFwID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG1hcDI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bWVyZ2VNYXBzKCRuZXN0ZWRNYXAsICRtYXAyKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAgICAkbWFwCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgJGtleXMKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkbW9kaWZ5CiAgICAgKiBAcGFyYW0gYm9vbCAgICAgJGFkZE5lc3RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcnxhcnJheQogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIGFycmF5PE51bWJlcnxhcnJheT4gJGtleXMKICAgICAqIEBwaHBzdGFuLXBhcmFtIGNhbGxhYmxlKE51bWJlcnxhcnJheSk6IChOdW1iZXJ8YXJyYXkpICRtb2RpZnkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBtb2RpZnlNYXAoYXJyYXkgJG1hcCwgYXJyYXkgJGtleXMsIGNhbGxhYmxlICRtb2RpZnksICRhZGROZXN0aW5nID0gdHJ1ZSkKICAgIHsKICAgICAgICBpZiAoJGtleXMgPT09IFtdKSB7CiAgICAgICAgICAgIHJldHVybiAkbW9kaWZ5KCRtYXApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5tb2RpZnlOZXN0ZWRNYXAoJG1hcCwgJGtleXMsICRtb2RpZnksICRhZGROZXN0aW5nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAgICAkbWFwCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgJGtleXMKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkbW9kaWZ5CiAgICAgKiBAcGFyYW0gYm9vbCAgICAgJGFkZE5lc3RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gbm9uLWVtcHR5LWFycmF5PE51bWJlcnxhcnJheT4gJGtleXMKICAgICAqIEBwaHBzdGFuLXBhcmFtIGNhbGxhYmxlKE51bWJlcnxhcnJheSk6IChOdW1iZXJ8YXJyYXkpICRtb2RpZnkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBtb2RpZnlOZXN0ZWRNYXAoYXJyYXkgJG1hcCwgYXJyYXkgJGtleXMsIGNhbGxhYmxlICRtb2RpZnksICRhZGROZXN0aW5nKQogICAgewogICAgICAgICRrZXkgPSBhcnJheV9zaGlmdCgka2V5cyk7CgogICAgICAgICRuZXN0ZWRWYWx1ZUluZGV4ID0gJHRoaXMtPm1hcEdldEVudHJ5SW5kZXgoJG1hcCwgJGtleSk7CgogICAgICAgIGlmICgka2V5cyA9PT0gW10pIHsKICAgICAgICAgICAgaWYgKCRuZXN0ZWRWYWx1ZUluZGV4ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkbWFwWzJdWyRuZXN0ZWRWYWx1ZUluZGV4XSA9ICRtb2RpZnkoJG1hcFsyXVskbmVzdGVkVmFsdWVJbmRleF0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG1hcFsxXVtdID0gJGtleTsKICAgICAgICAgICAgICAgICRtYXBbMl1bXSA9ICRtb2RpZnkoc2VsZjo6JG51bGwpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJG1hcDsKICAgICAgICB9CgogICAgICAgICRuZXN0ZWRNYXAgPSAkbmVzdGVkVmFsdWVJbmRleCAhPT0gbnVsbCA/ICR0aGlzLT50cnlNYXAoJG1hcFsyXVskbmVzdGVkVmFsdWVJbmRleF0pIDogbnVsbDsKCiAgICAgICAgaWYgKCRuZXN0ZWRNYXAgPT09IG51bGwgJiYgISRhZGROZXN0aW5nKSB7CiAgICAgICAgICAgIHJldHVybiAkbWFwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuZXN0ZWRNYXAgPT09IG51bGwpIHsKICAgICAgICAgICAgJG5lc3RlZE1hcCA9IHNlbGY6OiRlbXB0eU1hcDsKICAgICAgICB9CgogICAgICAgICRuZXdOZXN0ZWRNYXAgPSAkdGhpcy0+bW9kaWZ5TmVzdGVkTWFwKCRuZXN0ZWRNYXAsICRrZXlzLCAkbW9kaWZ5LCAkYWRkTmVzdGluZyk7CgogICAgICAgIGlmICgkbmVzdGVkVmFsdWVJbmRleCAhPT0gbnVsbCkgewogICAgICAgICAgICAkbWFwWzJdWyRuZXN0ZWRWYWx1ZUluZGV4XSA9ICRuZXdOZXN0ZWRNYXA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG1hcFsxXVtdID0gJGtleTsKICAgICAgICAgICAgJG1hcFsyXVtdID0gJG5ld05lc3RlZE1hcDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbWFwOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2VzIDIgU2FzcyBtYXBzIHRvZ2V0aGVyCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRtYXAxCiAgICAgKiBAcGFyYW0gYXJyYXkgJG1hcDIKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWVyZ2VNYXBzKGFycmF5ICRtYXAxLCBhcnJheSAkbWFwMikKICAgIHsKICAgICAgICBmb3JlYWNoICgkbWFwMlsxXSBhcyAkaTIgPT4gJGtleTIpIHsKICAgICAgICAgICAgJG1hcDFFbnRyeUluZGV4ID0gJHRoaXMtPm1hcEdldEVudHJ5SW5kZXgoJG1hcDEsICRrZXkyKTsKCiAgICAgICAgICAgIGlmICgkbWFwMUVudHJ5SW5kZXggIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRtYXAxWzJdWyRtYXAxRW50cnlJbmRleF0gPSAkbWFwMlsyXVskaTJdOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRtYXAxWzFdW10gPSAka2V5MjsKICAgICAgICAgICAgJG1hcDFbMl1bXSA9ICRtYXAyWzJdWyRpMl07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1hcDE7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliS2V5d29yZHMgPSBbJ2FyZ3MnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJLZXl3b3JkcygkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJnc1swXTsKCiAgICAgICAgaWYgKCR2YWx1ZVswXSAhPT0gVHlwZTo6VF9MSVNUIHx8ICFpc3NldCgkdmFsdWVbM10pIHx8ICFcaXNfYXJyYXkoJHZhbHVlWzNdKSkgewogICAgICAgICAgICAkY29tcGlsZWRWYWx1ZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlKTsKCiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCRjb21waWxlZFZhbHVlIC4gJyBpcyBub3QgYW4gYXJndW1lbnQgbGlzdC4nLCAnYXJncycpOwogICAgICAgIH0KCiAgICAgICAgJGtleXMgPSBbXTsKICAgICAgICAkdmFsdWVzID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5nZXRBcmd1bWVudExpc3RLZXl3b3JkcygkdmFsdWUpIGFzICRuYW1lID0+ICRhcmcpIHsKICAgICAgICAgICAgJGtleXNbXSA9IFtUeXBlOjpUX0tFWVdPUkQsICRuYW1lXTsKICAgICAgICAgICAgJHZhbHVlc1tdID0gJGFyZzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9NQVAsICRrZXlzLCAkdmFsdWVzXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJJc0JyYWNrZXRlZCA9IFsnbGlzdCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYklzQnJhY2tldGVkKCRhcmdzKQogICAgewogICAgICAgICRsaXN0ID0gJGFyZ3NbMF07CiAgICAgICAgJHRoaXMtPmNvZXJjZUxpc3QoJGxpc3QsICcgJyk7CgogICAgICAgIGlmICghIGVtcHR5KCRsaXN0WydlbmNsb3NpbmcnXSkgJiYgJGxpc3RbJ2VuY2xvc2luZyddID09PSAnYnJhY2tldCcpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiR0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OiRmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkbGlzdDEKICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXJ8bnVsbCAkc2VwCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEB0aHJvd3MgQ29tcGlsZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGlzdFNlcGFyYXRvckZvckpvaW4oJGxpc3QxLCAkc2VwKQogICAgewogICAgICAgIEB0cmlnZ2VyX2Vycm9yKHNwcmludGYoJ1RoZSAiJXMiIG1ldGhvZCBpcyBkZXByZWNhdGVkLicsIF9fTUVUSE9EX18pLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgIGlmICghIGlzc2V0KCRzZXApKSB7CiAgICAgICAgICAgIHJldHVybiAkbGlzdDFbMV07CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCR0aGlzLT5jb21waWxlVmFsdWUoJHNlcCkpIHsKICAgICAgICAgICAgY2FzZSAnY29tbWEnOgogICAgICAgICAgICAgICAgcmV0dXJuICcsJzsKCiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzoKICAgICAgICAgICAgICAgIHJldHVybiAnICc7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuICRsaXN0MVsxXTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSm9pbiA9IFsnbGlzdDEnLCAnbGlzdDInLCAnc2VwYXJhdG9yOmF1dG8nLCAnYnJhY2tldGVkOmF1dG8nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJKb2luKCRhcmdzKQogICAgewogICAgICAgIGxpc3QoJGxpc3QxLCAkbGlzdDIsICRzZXAsICRicmFja2V0ZWQpID0gJGFyZ3M7CgogICAgICAgICRsaXN0MSA9ICR0aGlzLT5jb2VyY2VMaXN0KCRsaXN0MSwgJyAnLCB0cnVlKTsKICAgICAgICAkbGlzdDIgPSAkdGhpcy0+Y29lcmNlTGlzdCgkbGlzdDIsICcgJywgdHJ1ZSk7CgogICAgICAgIHN3aXRjaCAoJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR0aGlzLT5hc3NlcnRTdHJpbmcoJHNlcCwgJ3NlcGFyYXRvcicpKSkgewogICAgICAgICAgICBjYXNlICdjb21tYSc6CiAgICAgICAgICAgICAgICAkc2VwYXJhdG9yID0gJywnOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdzcGFjZSc6CiAgICAgICAgICAgICAgICAkc2VwYXJhdG9yID0gJyAnOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdzbGFzaCc6CiAgICAgICAgICAgICAgICAkc2VwYXJhdG9yID0gJy8nOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgIGlmICgkbGlzdDFbMV0gIT09ICcnIHx8IGNvdW50KCRsaXN0MVsyXSkgPiAxIHx8ICFlbXB0eSgkbGlzdDFbJ2VuY2xvc2luZyddKSAmJiAkbGlzdDFbJ2VuY2xvc2luZyddICE9PSAncGFyZW50JykgewogICAgICAgICAgICAgICAgICAgICRzZXBhcmF0b3IgPSAkbGlzdDFbMV0gPzogJyAnOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRsaXN0MlsxXSAhPT0gJycgfHwgY291bnQoJGxpc3QyWzJdKSA+IDEgfHwgIWVtcHR5KCRsaXN0MlsnZW5jbG9zaW5nJ10pICYmICRsaXN0MlsnZW5jbG9zaW5nJ10gIT09ICdwYXJlbnQnKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlcGFyYXRvciA9ICRsaXN0MlsxXSA/OiAnICc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRzZXBhcmF0b3IgPSAnICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgnTXVzdCBiZSAic3BhY2UiLCAiY29tbWEiLCAic2xhc2giLCBvciAiYXV0byIuJywgJ3NlcGFyYXRvcicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRicmFja2V0ZWQgPT09IHN0YXRpYzo6JHRydWUpIHsKICAgICAgICAgICAgJGJyYWNrZXRlZCA9IHRydWU7CiAgICAgICAgfSBlbHNlaWYgKCRicmFja2V0ZWQgPT09IHN0YXRpYzo6JGZhbHNlKSB7CiAgICAgICAgICAgICRicmFja2V0ZWQgPSBmYWxzZTsKICAgICAgICB9IGVsc2VpZiAoJGJyYWNrZXRlZCA9PT0gW1R5cGU6OlRfS0VZV09SRCwgJ2F1dG8nXSkgewogICAgICAgICAgICAkYnJhY2tldGVkID0gJ2F1dG8nOwogICAgICAgIH0gZWxzZWlmICgkYnJhY2tldGVkID09PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgICRicmFja2V0ZWQgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkYnJhY2tldGVkID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkYnJhY2tldGVkKTsKICAgICAgICAgICAgJGJyYWNrZXRlZCA9ICEgISAkYnJhY2tldGVkOwoKICAgICAgICAgICAgaWYgKCRicmFja2V0ZWQgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICRicmFja2V0ZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJyYWNrZXRlZCA9PT0gJ2F1dG8nKSB7CiAgICAgICAgICAgICRicmFja2V0ZWQgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmICghIGVtcHR5KCRsaXN0MVsnZW5jbG9zaW5nJ10pICYmICRsaXN0MVsnZW5jbG9zaW5nJ10gPT09ICdicmFja2V0JykgewogICAgICAgICAgICAgICAgJGJyYWNrZXRlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRyZXMgPSBbVHlwZTo6VF9MSVNULCAkc2VwYXJhdG9yLCBhcnJheV9tZXJnZSgkbGlzdDFbMl0sICRsaXN0MlsyXSldOwoKICAgICAgICBpZiAoJGJyYWNrZXRlZCkgewogICAgICAgICAgICAkcmVzWydlbmNsb3NpbmcnXSA9ICdicmFja2V0JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkFwcGVuZCA9IFsnbGlzdCcsICd2YWwnLCAnc2VwYXJhdG9yOmF1dG8nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJBcHBlbmQoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkbGlzdDEsICR2YWx1ZSwgJHNlcCkgPSAkYXJnczsKCiAgICAgICAgJGxpc3QxID0gJHRoaXMtPmNvZXJjZUxpc3QoJGxpc3QxLCAnICcsIHRydWUpOwoKICAgICAgICBzd2l0Y2ggKCR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkdGhpcy0+YXNzZXJ0U3RyaW5nKCRzZXAsICdzZXBhcmF0b3InKSkpIHsKICAgICAgICAgICAgY2FzZSAnY29tbWEnOgogICAgICAgICAgICAgICAgJHNlcGFyYXRvciA9ICcsJzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnc3BhY2UnOgogICAgICAgICAgICAgICAgJHNlcGFyYXRvciA9ICcgJzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnc2xhc2gnOgogICAgICAgICAgICAgICAgJHNlcGFyYXRvciA9ICcvJzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnYXV0byc6CiAgICAgICAgICAgICAgICAkc2VwYXJhdG9yID0gJGxpc3QxWzFdID09PSAnJyAmJiBcY291bnQoJGxpc3QxWzJdKSA8PSAxICYmIChlbXB0eSgkbGlzdDFbJ2VuY2xvc2luZyddKSB8fCAkbGlzdDFbJ2VuY2xvc2luZyddID09PSAncGFyZW50JykgPyAnICcgOiAkbGlzdDFbMV07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgnTXVzdCBiZSAic3BhY2UiLCAiY29tbWEiLCAic2xhc2giLCBvciAiYXV0byIuJywgJ3NlcGFyYXRvcicpOwogICAgICAgIH0KCiAgICAgICAgJHJlcyA9IFtUeXBlOjpUX0xJU1QsICRzZXBhcmF0b3IsIGFycmF5X21lcmdlKCRsaXN0MVsyXSwgWyR2YWx1ZV0pXTsKCiAgICAgICAgaWYgKGlzc2V0KCRsaXN0MVsnZW5jbG9zaW5nJ10pKSB7CiAgICAgICAgICAgICRyZXNbJ2VuY2xvc2luZyddID0gJGxpc3QxWydlbmNsb3NpbmcnXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlppcCA9IFsnbGlzdHMuLi4nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJaaXAoJGFyZ3MpCiAgICB7CiAgICAgICAgJGFyZ0xpc3RzID0gW107CiAgICAgICAgZm9yZWFjaCAoJGFyZ3NbMF1bMl0gYXMgJGFyZykgewogICAgICAgICAgICAkYXJnTGlzdHNbXSA9ICR0aGlzLT5jb2VyY2VMaXN0KCRhcmcpOwogICAgICAgIH0KCiAgICAgICAgJGxpc3RzID0gW107CiAgICAgICAgJGZpcnN0TGlzdCA9IGFycmF5X3NoaWZ0KCRhcmdMaXN0cyk7CgogICAgICAgICRyZXN1bHQgPSBbVHlwZTo6VF9MSVNULCAnLCcsICRsaXN0c107CiAgICAgICAgaWYgKCEgXGlzX251bGwoJGZpcnN0TGlzdCkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGZpcnN0TGlzdFsyXSBhcyAka2V5ID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAkbGlzdCA9IFtUeXBlOjpUX0xJU1QsICcgJywgWyRpdGVtXV07CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ0xpc3RzIGFzICRhcmcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGFyZ1syXVska2V5XSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxpc3RbMl1bXSA9ICRhcmdbMl1bJGtleV07CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxpc3RzW10gPSAkbGlzdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlc3VsdFsyXSA9ICRsaXN0czsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzdWx0WydlbmNsb3NpbmcnXSA9ICdwYXJlbnQnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliVHlwZU9mID0gWyd2YWx1ZSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlR5cGVPZigkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJnc1swXTsKCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0tFWVdPUkQsICR0aGlzLT5nZXRUeXBlT2YoJHZhbHVlKV07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXl8TnVtYmVyICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0VHlwZU9mKCR2YWx1ZSkKICAgIHsKICAgICAgICBzd2l0Y2ggKCR2YWx1ZVswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfS0VZV09SRDoKICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgPT09IHN0YXRpYzo6JHRydWUgfHwgJHZhbHVlID09PSBzdGF0aWM6OiRmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAnYm9vbCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5jb2VyY2VDb2xvcigkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdjb2xvcic7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gZmFsbC10aHJ1CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9GVU5DVElPTjoKICAgICAgICAgICAgICAgIHJldHVybiAnc3RyaW5nJzsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9GVU5DVElPTl9SRUZFUkVOQ0U6CiAgICAgICAgICAgICAgICByZXR1cm4gJ2Z1bmN0aW9uJzsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9MSVNUOgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWx1ZVszXSkgJiYgXGlzX2FycmF5KCR2YWx1ZVszXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FyZ2xpc3QnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGZhbGwtdGhydQogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZVswXTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliVW5pdCA9IFsnbnVtYmVyJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliVW5pdCgkYXJncykKICAgIHsKICAgICAgICAkbnVtID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1swXSwgJ251bWJlcicpOwoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAnIicsIFskbnVtLT51bml0U3RyKCldXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJVbml0bGVzcyA9IFsnbnVtYmVyJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliVW5pdGxlc3MoJGFyZ3MpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1swXSwgJ251bWJlcicpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQm9vbCgkdmFsdWUtPnVuaXRsZXNzKCkpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkNvbXBhcmFibGUgPSBbCiAgICAgICAgWydudW1iZXIxJywgJ251bWJlcjInXSwKICAgICAgICBbJ251bWJlci0xJywgJ251bWJlci0yJ10KICAgIF07CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliQ29tcGFyYWJsZSgkYXJncykKICAgIHsKICAgICAgICBsaXN0KCRudW1iZXIxLCAkbnVtYmVyMikgPSAkYXJnczsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAhICRudW1iZXIxIGluc3RhbmNlb2YgTnVtYmVyIHx8CiAgICAgICAgICAgICEgJG51bWJlcjIgaW5zdGFuY2VvZiBOdW1iZXIKICAgICAgICApIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdJbnZhbGlkIGFyZ3VtZW50KHMpIGZvciAiY29tcGFyYWJsZSInKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCRudW1iZXIxLT5pc0NvbXBhcmFibGVUbygkbnVtYmVyMikpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlN0ckluZGV4ID0gWydzdHJpbmcnLCAnc3Vic3RyaW5nJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU3RySW5kZXgoJGFyZ3MpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5hc3NlcnRTdHJpbmcoJGFyZ3NbMF0sICdzdHJpbmcnKTsKICAgICAgICAkc3RyaW5nQ29udGVudCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3RyaW5nKTsKCiAgICAgICAgJHN1YnN0cmluZyA9ICR0aGlzLT5hc3NlcnRTdHJpbmcoJGFyZ3NbMV0sICdzdWJzdHJpbmcnKTsKICAgICAgICAkc3Vic3RyaW5nQ29udGVudCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3Vic3RyaW5nKTsKCiAgICAgICAgaWYgKCEgXHN0cmxlbigkc3Vic3RyaW5nQ29udGVudCkpIHsKICAgICAgICAgICAgJHJlc3VsdCA9IDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHJlc3VsdCA9IFV0aWw6Om1iU3RycG9zKCRzdHJpbmdDb250ZW50LCAkc3Vic3RyaW5nQ29udGVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdCA9PT0gZmFsc2UgPyBzdGF0aWM6OiRudWxsIDogbmV3IE51bWJlcigkcmVzdWx0ICsgMSwgJycpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlN0ckluc2VydCA9IFsnc3RyaW5nJywgJ2luc2VydCcsICdpbmRleCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlN0ckluc2VydCgkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmFzc2VydFN0cmluZygkYXJnc1swXSwgJ3N0cmluZycpOwogICAgICAgICRzdHJpbmdDb250ZW50ID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRzdHJpbmcpOwoKICAgICAgICAkaW5zZXJ0ID0gJHRoaXMtPmFzc2VydFN0cmluZygkYXJnc1sxXSwgJ2luc2VydCcpOwogICAgICAgICRpbnNlcnRDb250ZW50ID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRpbnNlcnQpOwoKICAgICAgICAkaW5kZXggPSAkdGhpcy0+YXNzZXJ0SW50ZWdlcigkYXJnc1syXSwgJ2luZGV4Jyk7CiAgICAgICAgaWYgKCRpbmRleCA+IDApIHsKICAgICAgICAgICAgJGluZGV4ID0gJGluZGV4IC0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCRpbmRleCA8IDApIHsKICAgICAgICAgICAgJGluZGV4ID0gbWF4KFV0aWw6Om1iU3RybGVuKCRzdHJpbmdDb250ZW50KSArIDEgKyAkaW5kZXgsIDApOwogICAgICAgIH0KCiAgICAgICAgJHN0cmluZ1syXSA9IFsKICAgICAgICAgICAgVXRpbDo6bWJTdWJzdHIoJHN0cmluZ0NvbnRlbnQsIDAsICRpbmRleCksCiAgICAgICAgICAgICRpbnNlcnRDb250ZW50LAogICAgICAgICAgICBVdGlsOjptYlN1YnN0cigkc3RyaW5nQ29udGVudCwgJGluZGV4KQogICAgICAgIF07CgogICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlN0ckxlbmd0aCA9IFsnc3RyaW5nJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU3RyTGVuZ3RoKCRhcmdzKQogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+YXNzZXJ0U3RyaW5nKCRhcmdzWzBdLCAnc3RyaW5nJyk7CiAgICAgICAgJHN0cmluZ0NvbnRlbnQgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CgogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKFV0aWw6Om1iU3RybGVuKCRzdHJpbmdDb250ZW50KSwgJycpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlN0clNsaWNlID0gWydzdHJpbmcnLCAnc3RhcnQtYXQnLCAnZW5kLWF0Oi0xJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU3RyU2xpY2UoJGFyZ3MpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5hc3NlcnRTdHJpbmcoJGFyZ3NbMF0sICdzdHJpbmcnKTsKICAgICAgICAkc3RyaW5nQ29udGVudCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3RyaW5nKTsKCiAgICAgICAgJHN0YXJ0ID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1sxXSwgJ3N0YXJ0LWF0Jyk7CiAgICAgICAgJHN0YXJ0LT5hc3NlcnROb1VuaXRzKCdzdGFydC1hdCcpOwogICAgICAgICRzdGFydEludCA9ICR0aGlzLT5hc3NlcnRJbnRlZ2VyKCRzdGFydCwgJ3N0YXJ0LWF0Jyk7CiAgICAgICAgJGVuZCA9ICR0aGlzLT5hc3NlcnROdW1iZXIoJGFyZ3NbMl0sICdlbmQtYXQnKTsKICAgICAgICAkZW5kLT5hc3NlcnROb1VuaXRzKCdlbmQtYXQnKTsKICAgICAgICAkZW5kSW50ID0gJHRoaXMtPmFzc2VydEludGVnZXIoJGVuZCwgJ2VuZC1hdCcpOwoKICAgICAgICBpZiAoJGVuZEludCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAkc3RyaW5nWzFdLCBbXV07CiAgICAgICAgfQoKICAgICAgICBpZiAoJHN0YXJ0SW50ID4gMCkgewogICAgICAgICAgICAkc3RhcnRJbnQtLTsKICAgICAgICB9CgogICAgICAgIGlmICgkZW5kSW50IDwgMCkgewogICAgICAgICAgICAkZW5kSW50ID0gVXRpbDo6bWJTdHJsZW4oJHN0cmluZ0NvbnRlbnQpICsgJGVuZEludDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZW5kSW50LS07CiAgICAgICAgfQoKICAgICAgICBpZiAoJGVuZEludCA8ICRzdGFydEludCkgewogICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAkc3RyaW5nWzFdLCBbXV07CiAgICAgICAgfQoKICAgICAgICAkbGVuZ3RoID0gJGVuZEludCAtICRzdGFydEludCArIDE7IC8vIFRoZSBlbmQgb2YgdGhlIHNsaWNlIGlzIGluY2x1c2l2ZQoKICAgICAgICAkc3RyaW5nWzJdID0gW1V0aWw6Om1iU3Vic3RyKCRzdHJpbmdDb250ZW50LCAkc3RhcnRJbnQsICRsZW5ndGgpXTsKCiAgICAgICAgcmV0dXJuICRzdHJpbmc7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliVG9Mb3dlckNhc2UgPSBbJ3N0cmluZyddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlRvTG93ZXJDYXNlKCRhcmdzKQogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+YXNzZXJ0U3RyaW5nKCRhcmdzWzBdLCAnc3RyaW5nJyk7CiAgICAgICAgJHN0cmluZ0NvbnRlbnQgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CgogICAgICAgICRzdHJpbmdbMl0gPSBbJHRoaXMtPnN0cmluZ1RyYW5zZm9ybUFzY2lpT25seSgkc3RyaW5nQ29udGVudCwgJ3N0cnRvbG93ZXInKV07CgogICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlRvVXBwZXJDYXNlID0gWydzdHJpbmcnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJUb1VwcGVyQ2FzZSgkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmFzc2VydFN0cmluZygkYXJnc1swXSwgJ3N0cmluZycpOwogICAgICAgICRzdHJpbmdDb250ZW50ID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRzdHJpbmcpOwoKICAgICAgICAkc3RyaW5nWzJdID0gWyR0aGlzLT5zdHJpbmdUcmFuc2Zvcm1Bc2NpaU9ubHkoJHN0cmluZ0NvbnRlbnQsICdzdHJ0b3VwcGVyJyldOwoKICAgICAgICByZXR1cm4gJHN0cmluZzsKICAgIH0KCiAgICAvKioKICAgICAqIEFwcGx5IGEgZmlsdGVyIG9uIGEgc3RyaW5nIGNvbnRlbnQsIG9ubHkgb24gYXNjaWkgY2hhcnMKICAgICAqIGxldCBleHRlbmRlZCBjaGFycyB1bnRvdWNoZWQKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmdDb250ZW50CiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGZpbHRlcgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHN0cmluZ1RyYW5zZm9ybUFzY2lpT25seSgkc3RyaW5nQ29udGVudCwgJGZpbHRlcikKICAgIHsKICAgICAgICAkbWJsZW5ndGggPSBVdGlsOjptYlN0cmxlbigkc3RyaW5nQ29udGVudCk7CiAgICAgICAgaWYgKCRtYmxlbmd0aCA9PT0gc3RybGVuKCRzdHJpbmdDb250ZW50KSkgewogICAgICAgICAgICByZXR1cm4gJGZpbHRlcigkc3RyaW5nQ29udGVudCk7CiAgICAgICAgfQogICAgICAgICRmaWx0ZXJlZFN0cmluZyA9ICIiOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRtYmxlbmd0aDsgJGkrKykgewogICAgICAgICAgICAkY2hhciA9IFV0aWw6Om1iU3Vic3RyKCRzdHJpbmdDb250ZW50LCAkaSwgMSk7CiAgICAgICAgICAgIGlmIChzdHJsZW4oJGNoYXIpID4gMSkgewogICAgICAgICAgICAgICAgJGZpbHRlcmVkU3RyaW5nIC49ICRjaGFyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGZpbHRlcmVkU3RyaW5nIC49ICRmaWx0ZXIoJGNoYXIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGZpbHRlcmVkU3RyaW5nOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkZlYXR1cmVFeGlzdHMgPSBbJ2ZlYXR1cmUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJGZWF0dXJlRXhpc3RzKCRhcmdzKQogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+YXNzZXJ0U3RyaW5nKCRhcmdzWzBdLCAnZmVhdHVyZScpOwogICAgICAgICRuYW1lID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRzdHJpbmcpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQm9vbCgKICAgICAgICAgICAgXGFycmF5X2tleV9leGlzdHMoJG5hbWUsICR0aGlzLT5yZWdpc3RlcmVkRmVhdHVyZXMpID8gJHRoaXMtPnJlZ2lzdGVyZWRGZWF0dXJlc1skbmFtZV0gOiBmYWxzZQogICAgICAgICk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliRnVuY3Rpb25FeGlzdHMgPSBbJ25hbWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJGdW5jdGlvbkV4aXN0cygkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmFzc2VydFN0cmluZygkYXJnc1swXSwgJ25hbWUnKTsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3RyaW5nKTsKCiAgICAgICAgLy8gdXNlciBkZWZpbmVkIGZ1bmN0aW9ucwogICAgICAgIGlmICgkdGhpcy0+aGFzKHN0YXRpYzo6JG5hbWVzcGFjZXNbJ2Z1bmN0aW9uJ10gLiAkbmFtZSkpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiR0cnVlOwogICAgICAgIH0KCiAgICAgICAgJG5hbWUgPSAkdGhpcy0+bm9ybWFsaXplTmFtZSgkbmFtZSk7CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+dXNlckZ1bmN0aW9uc1skbmFtZV0pKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIGJ1aWx0LWluIGZ1bmN0aW9ucwogICAgICAgICRmID0gJHRoaXMtPmdldEJ1aWx0aW5GdW5jdGlvbigkbmFtZSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKFxpc19jYWxsYWJsZSgkZikpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkdsb2JhbFZhcmlhYmxlRXhpc3RzID0gWyduYW1lJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliR2xvYmFsVmFyaWFibGVFeGlzdHMoJGFyZ3MpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5hc3NlcnRTdHJpbmcoJGFyZ3NbMF0sICduYW1lJyk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCR0aGlzLT5oYXMoJG5hbWUsICR0aGlzLT5yb290RW52KSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliTWl4aW5FeGlzdHMgPSBbJ25hbWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJNaXhpbkV4aXN0cygkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmFzc2VydFN0cmluZygkYXJnc1swXSwgJ25hbWUnKTsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3RyaW5nKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT50b0Jvb2woJHRoaXMtPmhhcyhzdGF0aWM6OiRuYW1lc3BhY2VzWydtaXhpbiddIC4gJG5hbWUpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJWYXJpYWJsZUV4aXN0cyA9IFsnbmFtZSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlZhcmlhYmxlRXhpc3RzKCRhcmdzKQogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+YXNzZXJ0U3RyaW5nKCRhcmdzWzBdLCAnbmFtZScpOwogICAgICAgICRuYW1lID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRzdHJpbmcpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQm9vbCgkdGhpcy0+aGFzKCRuYW1lKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliQ291bnRlciA9IFsnYXJncy4uLiddOwogICAgLyoqCiAgICAgKiBXb3JrYXJvdW5kIElFNydzIGNvbnRlbnQgY291bnRlciBidWcuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRhcmdzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliQ291bnRlcigkYXJncykKICAgIHsKICAgICAgICAkbGlzdCA9IGFycmF5X21hcChbJHRoaXMsICdjb21waWxlVmFsdWUnXSwgJGFyZ3NbMF1bMl0pOwoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAnJywgWydjb3VudGVyKCcgLiBpbXBsb2RlKCcsJywgJGxpc3QpIC4gJyknXV07CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliUmFuZG9tID0gWydsaW1pdDpudWxsJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliUmFuZG9tKCRhcmdzKQogICAgewogICAgICAgIGlmIChpc3NldCgkYXJnc1swXSkgJiYgJGFyZ3NbMF0gIT09IHN0YXRpYzo6JG51bGwpIHsKICAgICAgICAgICAgJGxpbWl0ID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1swXSwgJ2xpbWl0Jyk7CgogICAgICAgICAgICBpZiAoJGxpbWl0LT5oYXNVbml0cygpKSB7CiAgICAgICAgICAgICAgICAkdW5pdFN0cmluZyA9ICRsaW1pdC0+dW5pdFN0cigpOwogICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSA8PDxUWFQKcmFuZG9tKCkgd2lsbCBubyBsb25nZXIgaWdub3JlIFwkbGltaXQgdW5pdHMgKCRsaW1pdCkgaW4gYSBmdXR1cmUgcmVsZWFzZS4KClJlY29tbWVuZGF0aW9uOiByYW5kb20oXCRsaW1pdCAvIDEkdW5pdFN0cmluZykgKiAxJHVuaXRTdHJpbmcKClRvIHByZXNlcnZlIGN1cnJlbnQgYmVoYXZpb3I6IHJhbmRvbShcJGxpbWl0IC8gMSR1bml0U3RyaW5nKQoKTW9yZSBpbmZvOiBodHRwczovL3Nhc3MtbGFuZy5jb20vZC9yYW5kb20td2l0aC11bml0cwoKVFhUOwoKICAgICAgICAgICAgICAgIFdhcm46OmRlcHJlY2F0aW9uKCR0aGlzLT5hZGRMb2NhdGlvblRvTWVzc2FnZSgkbWVzc2FnZSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbiA9ICR0aGlzLT5hc3NlcnRJbnRlZ2VyKCRsaW1pdCwgJ2xpbWl0Jyk7CgogICAgICAgICAgICBpZiAoJG4gPCAxKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbigiXCRsaW1pdDogTXVzdCBiZSBncmVhdGVyIHRoYW4gMCwgd2FzICRuLiIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbmV3IE51bWJlcihtdF9yYW5kKDEsICRuKSwgJycpOwogICAgICAgIH0KCiAgICAgICAgJG1heCA9IG10X2dldHJhbmRtYXgoKTsKICAgICAgICByZXR1cm4gbmV3IE51bWJlcihtdF9yYW5kKDAsICRtYXggLSAxKSAvICRtYXgsICcnKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJVbmlxdWVJZCA9IFtdOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlVuaXF1ZUlkKCkKICAgIHsKICAgICAgICBzdGF0aWMgJGlkOwoKICAgICAgICBpZiAoISBpc3NldCgkaWQpKSB7CiAgICAgICAgICAgICRpZCA9IFBIUF9JTlRfU0laRSA9PT0gNAogICAgICAgICAgICAgICAgPyBtdF9yYW5kKDAsIHBvdygzNiwgNSkpIC4gc3RyX3BhZChtdF9yYW5kKDAsIHBvdygzNiwgNSkpICUgMTAwMDAwMDAsIDcsICcwJywgU1RSX1BBRF9MRUZUKQogICAgICAgICAgICAgICAgOiBtdF9yYW5kKDAsIHBvdygzNiwgOCkpOwogICAgICAgIH0KCiAgICAgICAgJGlkICs9IG10X3JhbmQoMCwgMTApICsgMTsKCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX1NUUklORywgJycsIFsndScgLiBzdHJfcGFkKGJhc2VfY29udmVydCgkaWQsIDEwLCAzNiksIDgsICcwJywgU1RSX1BBRF9MRUZUKV1dOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5fE51bWJlciAkdmFsdWUKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgJGZvcmNlX2VuY2xvc2luZ19kaXNwbGF5CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5zcGVjdEZvcm1hdFZhbHVlKCR2YWx1ZSwgJGZvcmNlX2VuY2xvc2luZ19kaXNwbGF5ID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gc3RhdGljOjokbnVsbCkgewogICAgICAgICAgICAkdmFsdWUgPSBbVHlwZTo6VF9LRVlXT1JELCAnbnVsbCddOwogICAgICAgIH0KCiAgICAgICAgJHN0cmluZ1ZhbHVlID0gWyR2YWx1ZV07CgogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIpIHsKICAgICAgICAgICAgcmV0dXJuIFtUeXBlOjpUX1NUUklORywgJycsICRzdHJpbmdWYWx1ZV07CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlWzBdID09PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgaWYgKGVuZCgkdmFsdWVbMl0pID09PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJHZhbHVlWzJdKTsKICAgICAgICAgICAgICAgICR2YWx1ZVsyXVtdID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgWycnXV07CiAgICAgICAgICAgICAgICAkZm9yY2VfZW5jbG9zaW5nX2Rpc3BsYXkgPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhIGVtcHR5KCR2YWx1ZVsnZW5jbG9zaW5nJ10pICYmCiAgICAgICAgICAgICAgICAoJGZvcmNlX2VuY2xvc2luZ19kaXNwbGF5IHx8CiAgICAgICAgICAgICAgICAgICAgKCR2YWx1ZVsnZW5jbG9zaW5nJ10gPT09ICdicmFja2V0JykgfHwKICAgICAgICAgICAgICAgICAgICAhIFxjb3VudCgkdmFsdWVbMl0pKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICR2YWx1ZVsnZW5jbG9zaW5nJ10gPSAnZm9yY2VkXycgLiAkdmFsdWVbJ2VuY2xvc2luZyddOwogICAgICAgICAgICAgICAgJGZvcmNlX2VuY2xvc2luZ19kaXNwbGF5ID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlaWYgKCEgXGNvdW50KCR2YWx1ZVsyXSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZVsnZW5jbG9zaW5nJ10gPSAnZm9yY2VkX3BhcmVudCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZVsyXSBhcyAkayA9PiAkbGlzdGVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICR2YWx1ZVsyXVska10gPSAkdGhpcy0+aW5zcGVjdEZvcm1hdFZhbHVlKCRsaXN0ZWxlbWVudCwgJGZvcmNlX2VuY2xvc2luZ19kaXNwbGF5KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHN0cmluZ1ZhbHVlID0gWyR2YWx1ZV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAnJywgJHN0cmluZ1ZhbHVlXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJJbnNwZWN0ID0gWyd2YWx1ZSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkluc3BlY3QoJGFyZ3MpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJGFyZ3NbMF07CgogICAgICAgIHJldHVybiAkdGhpcy0+aW5zcGVjdEZvcm1hdFZhbHVlKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQcmVwcm9jZXNzIHNlbGVjdG9yIGFyZ3MKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgJGFyZwogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICR2YXJuYW1lCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgJGFsbG93UGFyZW50CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2VsZWN0b3JBcmcoJGFyZywgJHZhcm5hbWUgPSBudWxsLCAkYWxsb3dQYXJlbnQgPSBmYWxzZSkKICAgIHsKICAgICAgICBzdGF0aWMgJHBhcnNlciA9IG51bGw7CgogICAgICAgIGlmIChcaXNfbnVsbCgkcGFyc2VyKSkgewogICAgICAgICAgICAkcGFyc2VyID0gJHRoaXMtPnBhcnNlckZhY3RvcnkoX19NRVRIT0RfXyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISAkdGhpcy0+Y2hlY2tTZWxlY3RvckFyZ1R5cGUoJGFyZykpIHsKICAgICAgICAgICAgJHZhcl92YWx1ZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJGFyZyk7CiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KCIkdmFyX3ZhbHVlIGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yOiBpdCBtdXN0IGJlIGEgc3RyaW5nLCBhIGxpc3Qgb2Ygc3RyaW5ncywgb3IgYSBsaXN0IG9mIGxpc3RzIG9mIHN0cmluZ3MiLCAkdmFybmFtZSk7CiAgICAgICAgfQoKCiAgICAgICAgaWYgKCRhcmdbMF0gPT09IFR5cGU6OlRfU1RSSU5HKSB7CiAgICAgICAgICAgICRhcmdbMV0gPSAnJzsKICAgICAgICB9CiAgICAgICAgJGFyZyA9ICR0aGlzLT5jb21waWxlVmFsdWUoJGFyZyk7CgogICAgICAgICRwYXJzZWRTZWxlY3RvciA9IFtdOwoKICAgICAgICBpZiAoJHBhcnNlci0+cGFyc2VTZWxlY3RvcigkYXJnLCAkcGFyc2VkU2VsZWN0b3IsIHRydWUpKSB7CiAgICAgICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5ldmFsU2VsZWN0b3JzKCRwYXJzZWRTZWxlY3Rvcik7CiAgICAgICAgICAgICRnbHVlZFNlbGVjdG9yID0gJHRoaXMtPmdsdWVGdW5jdGlvblNlbGVjdG9ycygkc2VsZWN0b3IpOwoKICAgICAgICAgICAgaWYgKCEgJGFsbG93UGFyZW50KSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZ2x1ZWRTZWxlY3RvciBhcyAkc2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3IgYXMgJHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KHN0YXRpYzo6JHNlbGZTZWxlY3RvciwgJHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBTYXNzU2NyaXB0RXhjZXB0aW9uOjpmb3JBcmd1bWVudCgiUGFyZW50IHNlbGVjdG9ycyBhcmVuJ3QgYWxsb3dlZCBoZXJlLiIsICR2YXJuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRnbHVlZFNlbGVjdG9yOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoImV4cGVjdGVkIG1vcmUgaW5wdXQsIGludmFsaWQgc2VsZWN0b3IuIiwgJHZhcm5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgdmFyaWFibGUgdHlwZSBmb3IgZ2V0U2VsZWN0b3JBcmcoKSBmdW5jdGlvbgogICAgICogQHBhcmFtIGFycmF5ICRhcmcKICAgICAqIEBwYXJhbSBpbnQgJG1heERlcHRoCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrU2VsZWN0b3JBcmdUeXBlKCRhcmcsICRtYXhEZXB0aCA9IDIpCiAgICB7CiAgICAgICAgaWYgKCRhcmdbMF0gPT09IFR5cGU6OlRfTElTVCAmJiAkbWF4RGVwdGggPiAwKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhcmdbMl0gYXMgJGVsdCkgewogICAgICAgICAgICAgICAgaWYgKCEgJHRoaXMtPmNoZWNrU2VsZWN0b3JBcmdUeXBlKCRlbHQsICRtYXhEZXB0aCAtIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoIWluX2FycmF5KCRhcmdbMF0sIFtUeXBlOjpUX1NUUklORywgVHlwZTo6VF9LRVlXT1JEXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBvc3Rwcm9jZXNzIHNlbGVjdG9yIHRvIG91dHB1dCBpbiByaWdodCBmb3JtYXQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9ycwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZvcm1hdE91dHB1dFNlbGVjdG9yKCRzZWxlY3RvcnMpCiAgICB7CiAgICAgICAgJHNlbGVjdG9ycyA9ICR0aGlzLT5jb2xsYXBzZVNlbGVjdG9yc0FzTGlzdCgkc2VsZWN0b3JzKTsKCiAgICAgICAgcmV0dXJuICRzZWxlY3RvcnM7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSXNTdXBlcnNlbGVjdG9yID0gWydzdXBlcicsICdzdWInXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJJc1N1cGVyc2VsZWN0b3IoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkc3VwZXIsICRzdWIpID0gJGFyZ3M7CgogICAgICAgICRzdXBlciA9ICR0aGlzLT5nZXRTZWxlY3RvckFyZygkc3VwZXIsICdzdXBlcicpOwogICAgICAgICRzdWIgPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJHN1YiwgJ3N1YicpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQm9vbCgkdGhpcy0+aXNTdXBlclNlbGVjdG9yKCRzdXBlciwgJHN1YikpOwogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBhICRzdXBlciBzZWxlY3RvciBhZ2FpbiAkc3ViCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzdXBlcgogICAgICogQHBhcmFtIGFycmF5ICRzdWIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzU3VwZXJTZWxlY3Rvcigkc3VwZXIsICRzdWIpCiAgICB7CiAgICAgICAgLy8gb25lIGFuZCBvbmx5IG9uZSBzZWxlY3RvciBmb3IgZWFjaCBhcmcKICAgICAgICBpZiAoISAkc3VwZXIpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdJbnZhbGlkIHN1cGVyIHNlbGVjdG9yIGZvciBpc1N1cGVyU2VsZWN0b3IoKScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgJHN1YikgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+ZXJyb3IoJ0ludmFsaWQgc3ViIHNlbGVjdG9yIGZvciBpc1N1cGVyU2VsZWN0b3IoKScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvdW50KCRzdWIpID4gMSkgewogICAgICAgICAgICBmb3JlYWNoICgkc3ViIGFzICRzKSB7CiAgICAgICAgICAgICAgICBpZiAoISAkdGhpcy0+aXNTdXBlclNlbGVjdG9yKCRzdXBlciwgWyRzXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoY291bnQoJHN1cGVyKSA+IDEpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHN1cGVyIGFzICRzKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmlzU3VwZXJTZWxlY3RvcihbJHNdLCAkc3ViKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRzdXBlciA9IHJlc2V0KCRzdXBlcik7CiAgICAgICAgJHN1YiA9IHJlc2V0KCRzdWIpOwoKICAgICAgICAkaSA9IDA7CiAgICAgICAgJG5leHRNdXN0TWF0Y2ggPSBmYWxzZTsKCiAgICAgICAgZm9yZWFjaCAoJHN1cGVyIGFzICRub2RlKSB7CiAgICAgICAgICAgICRjb21wb3VuZCA9ICcnOwoKICAgICAgICAgICAgYXJyYXlfd2Fsa19yZWN1cnNpdmUoCiAgICAgICAgICAgICAgICAkbm9kZSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUsICRrZXkpIHVzZSAoJiRjb21wb3VuZCkgewogICAgICAgICAgICAgICAgICAgICRjb21wb3VuZCAuPSAkdmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmlzSW1tZWRpYXRlUmVsYXRpb25zaGlwQ29tYmluYXRvcigkY29tcG91bmQpKSB7CiAgICAgICAgICAgICAgICBpZiAoJG5vZGUgIT09ICRzdWJbJGldKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRuZXh0TXVzdE1hdGNoID0gdHJ1ZTsKICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoJGkgPCBcY291bnQoJHN1YikgJiYgISAkdGhpcy0+aXNTdXBlclBhcnQoJG5vZGUsICRzdWJbJGldKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkbmV4dE11c3RNYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkaSA+PSBcY291bnQoJHN1YikpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG5leHRNdXN0TWF0Y2ggPSBmYWxzZTsKICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBhIHBhcnQgb2Ygc3VwZXIgc2VsZWN0b3IgYWdhaW4gYSBwYXJ0IG9mIHN1YiBzZWxlY3RvcgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkc3VwZXJQYXJ0cwogICAgICogQHBhcmFtIGFycmF5ICRzdWJQYXJ0cwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNTdXBlclBhcnQoJHN1cGVyUGFydHMsICRzdWJQYXJ0cykKICAgIHsKICAgICAgICAkaSA9IDA7CgogICAgICAgIGZvcmVhY2ggKCRzdXBlclBhcnRzIGFzICRzdXBlclBhcnQpIHsKICAgICAgICAgICAgd2hpbGUgKCRpIDwgXGNvdW50KCRzdWJQYXJ0cykgJiYgJHN1YlBhcnRzWyRpXSAhPT0gJHN1cGVyUGFydCkgewogICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRpID49IFxjb3VudCgkc3ViUGFydHMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRpKys7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJTZWxlY3RvckFwcGVuZCA9IFsnc2VsZWN0b3IuLi4nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJTZWxlY3RvckFwcGVuZCgkYXJncykKICAgIHsKICAgICAgICAvLyBnZXQgdGhlIHNlbGVjdG9yLi4uIGxpc3QKICAgICAgICAkYXJncyA9IHJlc2V0KCRhcmdzKTsKICAgICAgICAkYXJncyA9ICRhcmdzWzJdOwoKICAgICAgICBpZiAoXGNvdW50KCRhcmdzKSA8IDEpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdzZWxlY3Rvci1hcHBlbmQoKSBuZWVkcyBhdCBsZWFzdCAxIGFyZ3VtZW50Jyk7CiAgICAgICAgfQoKICAgICAgICAkc2VsZWN0b3JzID0gW107CiAgICAgICAgZm9yZWFjaCAoJGFyZ3MgYXMgJGFyZykgewogICAgICAgICAgICAkc2VsZWN0b3JzW10gPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJGFyZywgJ3NlbGVjdG9yJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdE91dHB1dFNlbGVjdG9yKCR0aGlzLT5zZWxlY3RvckFwcGVuZCgkc2VsZWN0b3JzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBlbmQgcGFydHMgb2YgdGhlIGxhc3Qgc2VsZWN0b3IgaW4gdGhlIGxpc3QgdG8gdGhlIHByZXZpb3VzLCByZWN1cnNpdmVseQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkc2VsZWN0b3JzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cQ29tcGlsZXJFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNlbGVjdG9yQXBwZW5kKCRzZWxlY3RvcnMpCiAgICB7CiAgICAgICAgJGxhc3RTZWxlY3RvcnMgPSBhcnJheV9wb3AoJHNlbGVjdG9ycyk7CgogICAgICAgIGlmICghICRsYXN0U2VsZWN0b3JzKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcignSW52YWxpZCBzZWxlY3RvciBsaXN0IGluIHNlbGVjdG9yLWFwcGVuZCgpJyk7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoXGNvdW50KCRzZWxlY3RvcnMpKSB7CiAgICAgICAgICAgICRwcmV2aW91c1NlbGVjdG9ycyA9IGFycmF5X3BvcCgkc2VsZWN0b3JzKTsKCiAgICAgICAgICAgIGlmICghICRwcmV2aW91c1NlbGVjdG9ycykgewogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdJbnZhbGlkIHNlbGVjdG9yIGxpc3QgaW4gc2VsZWN0b3ItYXBwZW5kKCknKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gZG8gdGhlIHRyaWNrLCBoYXBwZW5pbmcgJGxhc3RTZWxlY3RvciB0byAkcHJldmlvdXNTZWxlY3RvcgogICAgICAgICAgICAkYXBwZW5kZWQgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRwcmV2aW91c1NlbGVjdG9ycyBhcyAkcHJldmlvdXNTZWxlY3RvcikgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxhc3RTZWxlY3RvcnMgYXMgJGxhc3RTZWxlY3RvcikgewogICAgICAgICAgICAgICAgICAgICRwcmV2aW91cyA9ICRwcmV2aW91c1NlbGVjdG9yOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwcmV2aW91c1NlbGVjdG9yIGFzICRqID0+ICRwcmV2aW91c1NlbGVjdG9yUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxhc3RTZWxlY3RvciBhcyAkbGFzdFNlbGVjdG9yUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRsYXN0U2VsZWN0b3JQYXJ0cyBhcyAkbGFzdFNlbGVjdG9yUGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmV2aW91c1skal1bXSA9ICRsYXN0U2VsZWN0b3JQYXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkYXBwZW5kZWRbXSA9ICRwcmV2aW91czsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxhc3RTZWxlY3RvcnMgPSAkYXBwZW5kZWQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxhc3RTZWxlY3RvcnM7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliU2VsZWN0b3JFeHRlbmQgPSBbCiAgICAgICAgWydzZWxlY3RvcicsICdleHRlbmRlZScsICdleHRlbmRlciddLAogICAgICAgIFsnc2VsZWN0b3JzJywgJ2V4dGVuZGVlJywgJ2V4dGVuZGVyJ10KICAgIF07CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU2VsZWN0b3JFeHRlbmQoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkc2VsZWN0b3JzLCAkZXh0ZW5kZWUsICRleHRlbmRlcikgPSAkYXJnczsKCiAgICAgICAgJHNlbGVjdG9ycyA9ICR0aGlzLT5nZXRTZWxlY3RvckFyZygkc2VsZWN0b3JzLCAnc2VsZWN0b3InKTsKICAgICAgICAkZXh0ZW5kZWUgID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRleHRlbmRlZSwgJ2V4dGVuZGVlJyk7CiAgICAgICAgJGV4dGVuZGVyICA9ICR0aGlzLT5nZXRTZWxlY3RvckFyZygkZXh0ZW5kZXIsICdleHRlbmRlcicpOwoKICAgICAgICBpZiAoISAkc2VsZWN0b3JzIHx8ICEgJGV4dGVuZGVlIHx8ICEgJGV4dGVuZGVyKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcignc2VsZWN0b3ItZXh0ZW5kKCkgaW52YWxpZCBhcmd1bWVudHMnKTsKICAgICAgICB9CgogICAgICAgICRleHRlbmRlZCA9ICR0aGlzLT5leHRlbmRPclJlcGxhY2VTZWxlY3RvcnMoJHNlbGVjdG9ycywgJGV4dGVuZGVlLCAkZXh0ZW5kZXIpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdE91dHB1dFNlbGVjdG9yKCRleHRlbmRlZCk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliU2VsZWN0b3JSZXBsYWNlID0gWwogICAgICAgIFsnc2VsZWN0b3InLCAnb3JpZ2luYWwnLCAncmVwbGFjZW1lbnQnXSwKICAgICAgICBbJ3NlbGVjdG9ycycsICdvcmlnaW5hbCcsICdyZXBsYWNlbWVudCddCiAgICBdOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNlbGVjdG9yUmVwbGFjZSgkYXJncykKICAgIHsKICAgICAgICBsaXN0KCRzZWxlY3RvcnMsICRvcmlnaW5hbCwgJHJlcGxhY2VtZW50KSA9ICRhcmdzOwoKICAgICAgICAkc2VsZWN0b3JzICAgPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJHNlbGVjdG9ycywgJ3NlbGVjdG9yJyk7CiAgICAgICAgJG9yaWdpbmFsICAgID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRvcmlnaW5hbCwgJ29yaWdpbmFsJyk7CiAgICAgICAgJHJlcGxhY2VtZW50ID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRyZXBsYWNlbWVudCwgJ3JlcGxhY2VtZW50Jyk7CgogICAgICAgIGlmICghICRzZWxlY3RvcnMgfHwgISAkb3JpZ2luYWwgfHwgISAkcmVwbGFjZW1lbnQpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdzZWxlY3Rvci1yZXBsYWNlKCkgaW52YWxpZCBhcmd1bWVudHMnKTsKICAgICAgICB9CgogICAgICAgICRyZXBsYWNlZCA9ICR0aGlzLT5leHRlbmRPclJlcGxhY2VTZWxlY3RvcnMoJHNlbGVjdG9ycywgJG9yaWdpbmFsLCAkcmVwbGFjZW1lbnQsIHRydWUpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdE91dHB1dFNlbGVjdG9yKCRyZXBsYWNlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHRlbmQvcmVwbGFjZSBpbiBzZWxlY3RvcnMKICAgICAqIHVzZWQgYnkgc2VsZWN0b3ItZXh0ZW5kIGFuZCBzZWxlY3Rvci1yZXBsYWNlIHRoYXQgdXNlIHRoZSBzYW1lIGxvZ2ljCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzZWxlY3RvcnMKICAgICAqIEBwYXJhbSBhcnJheSAkZXh0ZW5kZWUKICAgICAqIEBwYXJhbSBhcnJheSAkZXh0ZW5kZXIKICAgICAqIEBwYXJhbSBib29sICAkcmVwbGFjZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4dGVuZE9yUmVwbGFjZVNlbGVjdG9ycygkc2VsZWN0b3JzLCAkZXh0ZW5kZWUsICRleHRlbmRlciwgJHJlcGxhY2UgPSBmYWxzZSkKICAgIHsKICAgICAgICAkc2F2ZUV4dGVuZHMgPSAkdGhpcy0+ZXh0ZW5kczsKICAgICAgICAkc2F2ZUV4dGVuZHNNYXAgPSAkdGhpcy0+ZXh0ZW5kc01hcDsKCiAgICAgICAgJHRoaXMtPmV4dGVuZHMgPSBbXTsKICAgICAgICAkdGhpcy0+ZXh0ZW5kc01hcCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkZXh0ZW5kZWUgYXMgJGVzKSB7CiAgICAgICAgICAgIGlmIChcY291bnQoJGVzKSAhPT0gMSkgewogICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdDYW5cJ3QgZXh0ZW5kIGNvbXBsZXggc2VsZWN0b3IuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIG9ubHkgdXNlIHRoZSBmaXJzdCBvbmUKICAgICAgICAgICAgJHRoaXMtPnB1c2hFeHRlbmRzKHJlc2V0KCRlcyksICRleHRlbmRlciwgbnVsbCk7CiAgICAgICAgfQoKICAgICAgICAkZXh0ZW5kZWQgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHNlbGVjdG9ycyBhcyAkc2VsZWN0b3IpIHsKICAgICAgICAgICAgaWYgKCEgJHJlcGxhY2UpIHsKICAgICAgICAgICAgICAgICRleHRlbmRlZFtdID0gJHNlbGVjdG9yOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbiA9IFxjb3VudCgkZXh0ZW5kZWQpOwoKICAgICAgICAgICAgJHRoaXMtPm1hdGNoRXh0ZW5kcygkc2VsZWN0b3IsICRleHRlbmRlZCk7CgogICAgICAgICAgICAvLyBpZiBkaWRudCBtYXRjaCwga2VlcCB0aGUgb3JpZ2luYWwgc2VsZWN0b3IgaWYgd2UgYXJlIGluIGEgcmVwbGFjZSBvcGVyYXRpb24KICAgICAgICAgICAgaWYgKCRyZXBsYWNlICYmIFxjb3VudCgkZXh0ZW5kZWQpID09PSAkbikgewogICAgICAgICAgICAgICAgJGV4dGVuZGVkW10gPSAkc2VsZWN0b3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5leHRlbmRzID0gJHNhdmVFeHRlbmRzOwogICAgICAgICR0aGlzLT5leHRlbmRzTWFwID0gJHNhdmVFeHRlbmRzTWFwOwoKICAgICAgICByZXR1cm4gJGV4dGVuZGVkOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNlbGVjdG9yTmVzdCA9IFsnc2VsZWN0b3IuLi4nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJTZWxlY3Rvck5lc3QoJGFyZ3MpCiAgICB7CiAgICAgICAgLy8gZ2V0IHRoZSBzZWxlY3Rvci4uLiBsaXN0CiAgICAgICAgJGFyZ3MgPSByZXNldCgkYXJncyk7CiAgICAgICAgJGFyZ3MgPSAkYXJnc1syXTsKCiAgICAgICAgaWYgKFxjb3VudCgkYXJncykgPCAxKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5lcnJvcignc2VsZWN0b3ItbmVzdCgpIG5lZWRzIGF0IGxlYXN0IDEgYXJndW1lbnQnKTsKICAgICAgICB9CgogICAgICAgICRzZWxlY3RvcnNNYXAgPSBbXTsKICAgICAgICBmb3JlYWNoICgkYXJncyBhcyAkYXJnKSB7CiAgICAgICAgICAgICRzZWxlY3RvcnNNYXBbXSA9ICR0aGlzLT5nZXRTZWxlY3RvckFyZygkYXJnLCAnc2VsZWN0b3InLCB0cnVlKTsKICAgICAgICB9CgogICAgICAgIGFzc2VydCghZW1wdHkoJHNlbGVjdG9yc01hcCkpOwoKICAgICAgICAkZW52cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3JzTWFwIGFzICRzZWxlY3RvcnMpIHsKICAgICAgICAgICAgJGVudiA9IG5ldyBFbnZpcm9ubWVudCgpOwogICAgICAgICAgICAkZW52LT5zZWxlY3RvcnMgPSAkc2VsZWN0b3JzOwoKICAgICAgICAgICAgJGVudnNbXSA9ICRlbnY7CiAgICAgICAgfQoKICAgICAgICAkZW52cyAgICAgICAgICAgID0gYXJyYXlfcmV2ZXJzZSgkZW52cyk7CiAgICAgICAgJGVudiAgICAgICAgICAgICA9ICR0aGlzLT5leHRyYWN0RW52KCRlbnZzKTsKICAgICAgICAkb3V0cHV0U2VsZWN0b3JzID0gJHRoaXMtPm11bHRpcGx5U2VsZWN0b3JzKCRlbnYpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdE91dHB1dFNlbGVjdG9yKCRvdXRwdXRTZWxlY3RvcnMpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNlbGVjdG9yUGFyc2UgPSBbCiAgICAgICAgWydzZWxlY3RvciddLAogICAgICAgIFsnc2VsZWN0b3JzJ10KICAgIF07CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU2VsZWN0b3JQYXJzZSgkYXJncykKICAgIHsKICAgICAgICAkc2VsZWN0b3JzID0gcmVzZXQoJGFyZ3MpOwogICAgICAgICRzZWxlY3RvcnMgPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJHNlbGVjdG9ycywgJ3NlbGVjdG9yJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Zm9ybWF0T3V0cHV0U2VsZWN0b3IoJHNlbGVjdG9ycyk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliU2VsZWN0b3JVbmlmeSA9IFsnc2VsZWN0b3JzMScsICdzZWxlY3RvcnMyJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU2VsZWN0b3JVbmlmeSgkYXJncykKICAgIHsKICAgICAgICBsaXN0KCRzZWxlY3RvcnMxLCAkc2VsZWN0b3JzMikgPSAkYXJnczsKCiAgICAgICAgJHNlbGVjdG9yczEgPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJHNlbGVjdG9yczEsICdzZWxlY3RvcnMxJyk7CiAgICAgICAgJHNlbGVjdG9yczIgPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJHNlbGVjdG9yczIsICdzZWxlY3RvcnMyJyk7CgogICAgICAgIGlmICghICRzZWxlY3RvcnMxIHx8ICEgJHNlbGVjdG9yczIpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmVycm9yKCdzZWxlY3Rvci11bmlmeSgpIGludmFsaWQgYXJndW1lbnRzJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBvbmx5IGNvbnNpZGVyIHRoZSBmaXJzdCBjb21wb3VuZCBvZiBlYWNoCiAgICAgICAgJGNvbXBvdW5kMSA9IHJlc2V0KCRzZWxlY3RvcnMxKTsKICAgICAgICAkY29tcG91bmQyID0gcmVzZXQoJHNlbGVjdG9yczIpOwoKICAgICAgICAvLyB1bmlmeSB0aGVtIGFuZCB0aGF0J3MgaXQKICAgICAgICAkdW5pZmllZCA9ICR0aGlzLT51bmlmeUNvbXBvdW5kU2VsZWN0b3JzKCRjb21wb3VuZDEsICRjb21wb3VuZDIpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdE91dHB1dFNlbGVjdG9yKCR1bmlmaWVkKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBzZWxlY3Rvci11bmlmeSBtYWdpYyBhcyBpdHMgYmVzdAogICAgICogKGF0IGxlYXN0IHdvcmtzIGFzIGV4cGVjdGVkIG9uIHRlc3QgY2FzZXMpCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjb21wb3VuZDEKICAgICAqIEBwYXJhbSBhcnJheSAkY29tcG91bmQyCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdW5pZnlDb21wb3VuZFNlbGVjdG9ycygkY29tcG91bmQxLCAkY29tcG91bmQyKQogICAgewogICAgICAgIGlmICghIFxjb3VudCgkY29tcG91bmQxKSkgewogICAgICAgICAgICByZXR1cm4gJGNvbXBvdW5kMjsKICAgICAgICB9CgogICAgICAgIGlmICghIFxjb3VudCgkY29tcG91bmQyKSkgewogICAgICAgICAgICByZXR1cm4gJGNvbXBvdW5kMTsKICAgICAgICB9CgogICAgICAgIC8vIGNoZWNrIHRoYXQgbGFzdCBwYXJ0IGFyZSBjb21wYXRpYmxlCiAgICAgICAgJGxhc3RQYXJ0MSA9IGFycmF5X3BvcCgkY29tcG91bmQxKTsKICAgICAgICAkbGFzdFBhcnQyID0gYXJyYXlfcG9wKCRjb21wb3VuZDIpOwogICAgICAgICRsYXN0ICAgICAgPSAkdGhpcy0+bWVyZ2VQYXJ0cygkbGFzdFBhcnQxLCAkbGFzdFBhcnQyKTsKCiAgICAgICAgaWYgKCEgJGxhc3QpIHsKICAgICAgICAgICAgcmV0dXJuIFtbXV07CiAgICAgICAgfQoKICAgICAgICAkdW5pZmllZENvbXBvdW5kID0gWyRsYXN0XTsKICAgICAgICAkdW5pZmllZFNlbGVjdG9ycyA9IFskdW5pZmllZENvbXBvdW5kXTsKCiAgICAgICAgLy8gZG8gdGhlIHJlc3QKICAgICAgICB3aGlsZSAoXGNvdW50KCRjb21wb3VuZDEpIHx8IFxjb3VudCgkY29tcG91bmQyKSkgewogICAgICAgICAgICAkcGFydDEgPSBlbmQoJGNvbXBvdW5kMSk7CiAgICAgICAgICAgICRwYXJ0MiA9IGVuZCgkY29tcG91bmQyKTsKCiAgICAgICAgICAgIGlmICgkcGFydDEgJiYgKCRtYXRjaDIgPSAkdGhpcy0+bWF0Y2hQYXJ0SW5Db21wb3VuZCgkcGFydDEsICRjb21wb3VuZDIpKSkgewogICAgICAgICAgICAgICAgbGlzdCgkY29tcG91bmQyLCAkcGFydDIsICRhZnRlcjIpID0gJG1hdGNoMjsKCiAgICAgICAgICAgICAgICBpZiAoJGFmdGVyMikgewogICAgICAgICAgICAgICAgICAgICR1bmlmaWVkU2VsZWN0b3JzID0gJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHVuaWZpZWRTZWxlY3RvcnMsICRhZnRlcjIpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjID0gJHRoaXMtPm1lcmdlUGFydHMoJHBhcnQxLCAkcGFydDIpOwogICAgICAgICAgICAgICAgJHVuaWZpZWRTZWxlY3RvcnMgPSAkdGhpcy0+cHJlcGVuZFNlbGVjdG9ycygkdW5pZmllZFNlbGVjdG9ycywgWyRjXSk7CgogICAgICAgICAgICAgICAgJHBhcnQxID0gJHBhcnQyID0gbnVsbDsKCiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGNvbXBvdW5kMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcGFydDIgJiYgKCRtYXRjaDEgPSAkdGhpcy0+bWF0Y2hQYXJ0SW5Db21wb3VuZCgkcGFydDIsICRjb21wb3VuZDEpKSkgewogICAgICAgICAgICAgICAgbGlzdCgkY29tcG91bmQxLCAkcGFydDEsICRhZnRlcjEpID0gJG1hdGNoMTsKCiAgICAgICAgICAgICAgICBpZiAoJGFmdGVyMSkgewogICAgICAgICAgICAgICAgICAgICR1bmlmaWVkU2VsZWN0b3JzID0gJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHVuaWZpZWRTZWxlY3RvcnMsICRhZnRlcjEpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjID0gJHRoaXMtPm1lcmdlUGFydHMoJHBhcnQyLCAkcGFydDEpOwogICAgICAgICAgICAgICAgJHVuaWZpZWRTZWxlY3RvcnMgPSAkdGhpcy0+cHJlcGVuZFNlbGVjdG9ycygkdW5pZmllZFNlbGVjdG9ycywgWyRjXSk7CgogICAgICAgICAgICAgICAgJHBhcnQxID0gJHBhcnQyID0gbnVsbDsKCiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGNvbXBvdW5kMik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRuZXcgPSBbXTsKCiAgICAgICAgICAgIGlmICgkcGFydDEgJiYgJHBhcnQyKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGNvbXBvdW5kMSk7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGNvbXBvdW5kMik7CgogICAgICAgICAgICAgICAgJHMgICA9ICR0aGlzLT5wcmVwZW5kU2VsZWN0b3JzKCR1bmlmaWVkU2VsZWN0b3JzLCBbJHBhcnQyXSk7CiAgICAgICAgICAgICAgICAkbmV3ID0gYXJyYXlfbWVyZ2UoJG5ldywgJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHMsIFskcGFydDFdKSk7CiAgICAgICAgICAgICAgICAkcyAgID0gJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHVuaWZpZWRTZWxlY3RvcnMsIFskcGFydDFdKTsKICAgICAgICAgICAgICAgICRuZXcgPSBhcnJheV9tZXJnZSgkbmV3LCAkdGhpcy0+cHJlcGVuZFNlbGVjdG9ycygkcywgWyRwYXJ0Ml0pKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRwYXJ0MSkgewogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRjb21wb3VuZDEpOwoKICAgICAgICAgICAgICAgICRuZXcgPSBhcnJheV9tZXJnZSgkbmV3LCAkdGhpcy0+cHJlcGVuZFNlbGVjdG9ycygkdW5pZmllZFNlbGVjdG9ycywgWyRwYXJ0MV0pKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRwYXJ0MikgewogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRjb21wb3VuZDIpOwoKICAgICAgICAgICAgICAgICRuZXcgPSBhcnJheV9tZXJnZSgkbmV3LCAkdGhpcy0+cHJlcGVuZFNlbGVjdG9ycygkdW5pZmllZFNlbGVjdG9ycywgWyRwYXJ0Ml0pKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZXcpIHsKICAgICAgICAgICAgICAgICR1bmlmaWVkU2VsZWN0b3JzID0gJG5ldzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1bmlmaWVkU2VsZWN0b3JzOwogICAgfQoKICAgIC8qKgogICAgICogUHJlcGVuZCBlYWNoIHNlbGVjdG9yIGZyb20gJHNlbGVjdG9ycyB3aXRoICRwYXJ0cwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkc2VsZWN0b3JzCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhcnRzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJlcGVuZFNlbGVjdG9ycygkc2VsZWN0b3JzLCAkcGFydHMpCiAgICB7CiAgICAgICAgJG5ldyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3JzIGFzICRjb21wb3VuZFNlbGVjdG9yKSB7CiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGNvbXBvdW5kU2VsZWN0b3IsICRwYXJ0cyk7CgogICAgICAgICAgICAkbmV3W10gPSAkY29tcG91bmRTZWxlY3RvcjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICogVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyBwYXJ0IGluIGEgY29tcG91bmQ6CiAgICAgKiAtIHdpdGggc2FtZSBodG1sIHRhZyBuYW1lCiAgICAgKiAtIHdpdGggc29tZSBjbGFzcyBvciBpZCBvciBzb21ldGhpbmcgaW4gY29tbW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0CiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbXBvdW5kCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxmYWxzZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWF0Y2hQYXJ0SW5Db21wb3VuZCgkcGFydCwgJGNvbXBvdW5kKQogICAgewogICAgICAgICRwYXJ0VGFnID0gJHRoaXMtPmZpbmRUYWdOYW1lKCRwYXJ0KTsKICAgICAgICAkYmVmb3JlICA9ICRjb21wb3VuZDsKICAgICAgICAkYWZ0ZXIgICA9IFtdOwoKICAgICAgICAvLyB0cnkgdG8gZmluZCBhIG1hdGNoIGJ5IHRhZyBuYW1lIGZpcnN0CiAgICAgICAgd2hpbGUgKFxjb3VudCgkYmVmb3JlKSkgewogICAgICAgICAgICAkcCA9IGFycmF5X3BvcCgkYmVmb3JlKTsKCiAgICAgICAgICAgIGlmICgkcGFydFRhZyAmJiAkcGFydFRhZyAhPT0gJyonICYmICRwYXJ0VGFnID09ICR0aGlzLT5maW5kVGFnTmFtZSgkcCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbJGJlZm9yZSwgJHAsICRhZnRlcl07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhZnRlcltdID0gJHA7CiAgICAgICAgfQoKICAgICAgICAvLyB0cnkgYWdhaW4gbWF0Y2hpbmcgYSBub24gZW1wdHkgaW50ZXJzZWN0aW9uIGFuZCBhIGNvbXBhdGlibGUgdGFnbmFtZQogICAgICAgICRiZWZvcmUgPSAkY29tcG91bmQ7CiAgICAgICAgJGFmdGVyID0gW107CgogICAgICAgIHdoaWxlIChcY291bnQoJGJlZm9yZSkpIHsKICAgICAgICAgICAgJHAgPSBhcnJheV9wb3AoJGJlZm9yZSk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmNoZWNrQ29tcGF0aWJsZVRhZ3MoJHBhcnRUYWcsICR0aGlzLT5maW5kVGFnTmFtZSgkcCkpKSB7CiAgICAgICAgICAgICAgICBpZiAoXGNvdW50KGFycmF5X2ludGVyc2VjdCgkcGFydCwgJHApKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbJGJlZm9yZSwgJHAsICRhZnRlcl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhZnRlcltdID0gJHA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBNZXJnZSB0d28gcGFydCBsaXN0IHRha2luZyBjYXJlIHRoYXQKICAgICAqIC0gdGhlIGh0bWwgdGFnIGlzIGNvbWluZyBmaXJzdCAtIGlmIGFueQogICAgICogLSB0aGUgOnNvbWV0aGluZyBhcmUgY29taW5nIGxhc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhcnRzMQogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0czIKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtZXJnZVBhcnRzKCRwYXJ0czEsICRwYXJ0czIpCiAgICB7CiAgICAgICAgJHRhZzEgPSAkdGhpcy0+ZmluZFRhZ05hbWUoJHBhcnRzMSk7CiAgICAgICAgJHRhZzIgPSAkdGhpcy0+ZmluZFRhZ05hbWUoJHBhcnRzMik7CiAgICAgICAgJHRhZyAgPSAkdGhpcy0+Y2hlY2tDb21wYXRpYmxlVGFncygkdGFnMSwgJHRhZzIpOwoKICAgICAgICAvLyBub3QgY29tcGF0aWJsZSB0YWdzCiAgICAgICAgaWYgKCR0YWcgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGFnKSB7CiAgICAgICAgICAgIGlmICgkdGFnMSkgewogICAgICAgICAgICAgICAgJHBhcnRzMSA9IGFycmF5X2RpZmYoJHBhcnRzMSwgWyR0YWcxXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGFnMikgewogICAgICAgICAgICAgICAgJHBhcnRzMiA9IGFycmF5X2RpZmYoJHBhcnRzMiwgWyR0YWcyXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRtZXJnZWRQYXJ0cyA9IGFycmF5X21lcmdlKCRwYXJ0czEsICRwYXJ0czIpOwogICAgICAgICRtZXJnZWRPcmRlcmVkUGFydHMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJG1lcmdlZFBhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgIGlmIChzdHJwb3MoJHBhcnQsICc6JykgPT09IDApIHsKICAgICAgICAgICAgICAgICRtZXJnZWRPcmRlcmVkUGFydHNbXSA9ICRwYXJ0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkbWVyZ2VkUGFydHMgPSBhcnJheV9kaWZmKCRtZXJnZWRQYXJ0cywgJG1lcmdlZE9yZGVyZWRQYXJ0cyk7CiAgICAgICAgJG1lcmdlZFBhcnRzID0gYXJyYXlfbWVyZ2UoJG1lcmdlZFBhcnRzLCAkbWVyZ2VkT3JkZXJlZFBhcnRzKTsKCiAgICAgICAgaWYgKCR0YWcpIHsKICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkbWVyZ2VkUGFydHMsICR0YWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtZXJnZWRQYXJ0czsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIHRoZSBjb21wYXRpYmlsaXR5IGJldHdlZW4gdHdvIHRhZyBuYW1lczoKICAgICAqIGlmIGJvdGggYXJlIGRlZmluZWQgdGhleSBzaG91bGQgYmUgaWRlbnRpY2FsIG9yIG9uZSBoYXMgdG8gYmUgJyonCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdGFnMQogICAgICogQHBhcmFtIHN0cmluZyAkdGFnMgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8ZmFsc2UKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrQ29tcGF0aWJsZVRhZ3MoJHRhZzEsICR0YWcyKQogICAgewogICAgICAgICR0YWdzID0gWyR0YWcxLCAkdGFnMl07CiAgICAgICAgJHRhZ3MgPSBhcnJheV91bmlxdWUoJHRhZ3MpOwogICAgICAgICR0YWdzID0gYXJyYXlfZmlsdGVyKCR0YWdzKTsKCiAgICAgICAgaWYgKFxjb3VudCgkdGFncykgPiAxKSB7CiAgICAgICAgICAgICR0YWdzID0gYXJyYXlfZGlmZigkdGFncywgWycqJ10pOwogICAgICAgIH0KCiAgICAgICAgLy8gbm90IGNvbXBhdGlibGUgbm9kZXMKICAgICAgICBpZiAoXGNvdW50KCR0YWdzKSA+IDEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0YWdzOwogICAgfQoKICAgIC8qKgogICAgICogRmluZCB0aGUgaHRtbCB0YWcgbmFtZSBpbiBhIHNlbGVjdG9yIHBhcnRzIGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJHBhcnRzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbmRUYWdOYW1lKCRwYXJ0cykKICAgIHsKICAgICAgICBmb3JlYWNoICgkcGFydHMgYXMgJHBhcnQpIHsKICAgICAgICAgICAgaWYgKCEgcHJlZ19tYXRjaCgnL15bXFsuOiMlXy1dLycsICRwYXJ0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRwYXJ0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliU2ltcGxlU2VsZWN0b3JzID0gWydzZWxlY3RvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNpbXBsZVNlbGVjdG9ycygkYXJncykKICAgIHsKICAgICAgICAkc2VsZWN0b3IgPSByZXNldCgkYXJncyk7CiAgICAgICAgJHNlbGVjdG9yID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRzZWxlY3RvciwgJ3NlbGVjdG9yJyk7CgogICAgICAgIC8vIHJlbW92ZSBzZWxlY3RvcnMgbGlzdCBsYXllciwga2VlcGluZyB0aGUgZmlyc3Qgb25lCiAgICAgICAgJHNlbGVjdG9yID0gcmVzZXQoJHNlbGVjdG9yKTsKCiAgICAgICAgLy8gcmVtb3ZlIHBhcnRzIGxpc3QgbGF5ZXIsIGtlZXBpbmcgdGhlIGZpcnN0IHBhcnQKICAgICAgICAkcGFydCA9IHJlc2V0KCRzZWxlY3Rvcik7CgogICAgICAgICRsaXN0UGFydHMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHBhcnQgYXMgJHApIHsKICAgICAgICAgICAgJGxpc3RQYXJ0c1tdID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgWyRwXV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfTElTVCwgJywnLCAkbGlzdFBhcnRzXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJTY3NzcGhwR2xvYiA9IFsncGF0dGVybiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNjc3NwaHBHbG9iKCRhcmdzKQogICAgewogICAgICAgIEB0cmlnZ2VyX2Vycm9yKHNwcmludGYoJ1RoZSAic2Nzc3BocC1nbG9iIiBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuIHdpbGwgYmUgcmVtb3ZlZCBpbiBTY3NzUGhwIDIuMC4gUmVnaXN0ZXIgeW91ciBvd24gYWx0ZXJuYXRpdmUgdGhyb3VnaCAiJXM6OnJlZ2lzdGVyRnVuY3Rpb24nLCBfX0NMQVNTX18pLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgICR0aGlzLT5sb2dnZXItPndhcm4oJ1RoZSAic2Nzc3BocC1nbG9iIiBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuIHdpbGwgYmUgcmVtb3ZlZCBpbiBTY3NzUGhwIDIuMC4nLCB0cnVlKTsKCiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5hc3NlcnRTdHJpbmcoJGFyZ3NbMF0sICdwYXR0ZXJuJyk7CiAgICAgICAgJHBhdHRlcm4gPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CiAgICAgICAgJG1hdGNoZXMgPSBnbG9iKCRwYXR0ZXJuKTsKICAgICAgICAkbGlzdFBhcnRzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRtYXRjaGVzIGFzICRtYXRjaCkgewogICAgICAgICAgICBpZiAoISBpc19maWxlKCRtYXRjaCkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbGlzdFBhcnRzW10gPSBbVHlwZTo6VF9TVFJJTkcsICciJywgWyRtYXRjaF1dOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0xJU1QsICcsJywgJGxpc3RQYXJ0c107CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Compiler/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Compiler/CachedResult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxhdGlvblJlc3VsdDsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIENhY2hlZFJlc3VsdAp7CiAgICAvKioKICAgICAqIEB2YXIgQ29tcGlsYXRpb25SZXN1bHQKICAgICAqLwogICAgcHJpdmF0ZSAkcmVzdWx0OwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGludD4KICAgICAqLwogICAgcHJpdmF0ZSAkcGFyc2VkRmlsZXM7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKiBAcGhwc3Rhbi12YXIgbGlzdDxhcnJheXtjdXJyZW50RGlyOiBzdHJpbmd8bnVsbCwgcGF0aDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nfT4KICAgICAqLwogICAgcHJpdmF0ZSAkcmVzb2x2ZWRJbXBvcnRzOwoKICAgIC8qKgogICAgICogQHBhcmFtIENvbXBpbGF0aW9uUmVzdWx0ICAkcmVzdWx0CiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLCBpbnQ+ICRwYXJzZWRGaWxlcwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAkcmVzb2x2ZWRJbXBvcnRzCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxhcnJheXtjdXJyZW50RGlyOiBzdHJpbmd8bnVsbCwgcGF0aDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nfT4gJHJlc29sdmVkSW1wb3J0cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ29tcGlsYXRpb25SZXN1bHQgJHJlc3VsdCwgYXJyYXkgJHBhcnNlZEZpbGVzLCBhcnJheSAkcmVzb2x2ZWRJbXBvcnRzKQogICAgewogICAgICAgICR0aGlzLT5yZXN1bHQgPSAkcmVzdWx0OwogICAgICAgICR0aGlzLT5wYXJzZWRGaWxlcyA9ICRwYXJzZWRGaWxlczsKICAgICAgICAkdGhpcy0+cmVzb2x2ZWRJbXBvcnRzID0gJHJlc29sdmVkSW1wb3J0czsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQ29tcGlsYXRpb25SZXN1bHQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3VsdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgaW50PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyc2VkRmlsZXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFyc2VkRmlsZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKgogICAgICogQHBocHN0YW4tcmV0dXJuIGxpc3Q8YXJyYXl7Y3VycmVudERpcjogc3RyaW5nfG51bGwsIHBhdGg6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZ30+CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXNvbHZlZEltcG9ydHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzb2x2ZWRJbXBvcnRzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Compiler/Environment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyOwoKLyoqCiAqIENvbXBpbGVyIGVudmlyb25tZW50CiAqCiAqIEBhdXRob3IgQW50aG9uIFBhbmcgPGFudGhvbi5wYW5nQGdtYWlsLmNvbT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBFbnZpcm9ubWVudAp7CiAgICAvKioKICAgICAqIEB2YXIgXFNjc3NQaHBcU2Nzc1BocFxCbG9ja3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkYmxvY2s7CgogICAgLyoqCiAgICAgKiBAdmFyIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnR8bnVsbAogICAgICovCiAgICBwdWJsaWMgJHBhcmVudDsKCiAgICAvKioKICAgICAqIEB2YXIgRW52aXJvbm1lbnR8bnVsbAogICAgICovCiAgICBwdWJsaWMgJGRlY2xhcmF0aW9uU2NvcGVQYXJlbnQ7CgogICAgLyoqCiAgICAgKiBAdmFyIEVudmlyb25tZW50fG51bGwKICAgICAqLwogICAgcHVibGljICRwYXJlbnRTdG9yZTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXl8bnVsbAogICAgICovCiAgICBwdWJsaWMgJHNlbGVjdG9yczsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljICRtYXJrZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkc3RvcmU7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkc3RvcmVVbnJlZHVjZWQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwdWJsaWMgJGRlcHRoOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/CompilerException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCi8qKgogKiBDb21waWxlciBleGNlcHRpb24KICoKICogQGF1dGhvciBPbGVrc2FuZHIgU2F2Y2hlbmtvIDx0cmF2ZWx0aW5vQGdtYWlsLmNvbT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBDb21waWxlckV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24gaW1wbGVtZW50cyBTYXNzRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/ParserException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCi8qKgogKiBQYXJzZXIgRXhjZXB0aW9uCiAqCiAqIEBhdXRob3IgT2xla3NhbmRyIFNhdmNoZW5rbyA8dHJhdmVsdGlub0BnbWFpbC5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgUGFyc2VyRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiBpbXBsZW1lbnRzIFNhc3NFeGNlcHRpb24KewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5fG51bGwKICAgICAqIEBwaHBzdGFuLXZhciBhcnJheXtzdHJpbmcsIGludCwgaW50fXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHNvdXJjZVBvc2l0aW9uOwoKICAgIC8qKgogICAgICogR2V0IHNvdXJjZSBwb3NpdGlvbgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqIEBwaHBzdGFuLXJldHVybiBhcnJheXtzdHJpbmcsIGludCwgaW50fXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTb3VyY2VQb3NpdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2VQb3NpdGlvbjsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBzb3VyY2UgcG9zaXRpb24KICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzb3VyY2VQb3NpdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIGFycmF5e3N0cmluZywgaW50LCBpbnR9ICRzb3VyY2VQb3NpdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U291cmNlUG9zaXRpb24oJHNvdXJjZVBvc2l0aW9uKQogICAgewogICAgICAgICR0aGlzLT5zb3VyY2VQb3NpdGlvbiA9ICRzb3VyY2VQb3NpdGlvbjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/RangeException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCi8qKgogKiBSYW5nZSBleGNlcHRpb24KICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIFJhbmdlRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiBpbXBsZW1lbnRzIFNhc3NFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/SassException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uOwoKaW50ZXJmYWNlIFNhc3NFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/SassScriptException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uOwoKLyoqCiAqIEFuIGV4Y2VwdGlvbiB0aHJvd24gYnkgU2Fzc1NjcmlwdC4KICoKICogVGhpcyBjbGFzcyBkb2VzIG5vdCBpbXBsZW1lbnQgU2Fzc0V4Y2VwdGlvbiBvbiBwdXJwb3NlLCBhcyBpdCBzaG91bGQKICogbmV2ZXIgYmUgcmV0dXJuZWQgdG8gdGhlIG91dHNpZGUgY29kZS4gVGhlIGNvbXBpbGF0aW9uIHdpbGwgY2F0Y2ggaXQKICogYW5kIHJlcGxhY2UgaXQgd2l0aCBhIFNhc3NFeGNlcHRpb24gcmVwb3J0aW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUKICogZXJyb3IuCiAqLwpjbGFzcyBTYXNzU2NyaXB0RXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbgp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBTYXNzU2NyaXB0RXhjZXB0aW9uIHdpdGggc3VwcG9ydCBmb3IgYW4gYXJndW1lbnQgbmFtZS4KICAgICAqCiAgICAgKiBUaGlzIGhlbHBlciBlbnN1cmVzIGEgY29uc2lzdGVudCBoYW5kbGluZyBvZiBhcmd1bWVudCBuYW1lcyBpbiB0aGUKICAgICAqIGVycm9yIG1lc3NhZ2UsIHdpdGhvdXQgZHVwbGljYXRpbmcgaXQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG5hbWUgICAgVGhlIGFyZ3VtZW50IG5hbWUsIHdpdGhvdXQgJAogICAgICoKICAgICAqIEByZXR1cm4gU2Fzc1NjcmlwdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZvckFyZ3VtZW50KCRtZXNzYWdlLCAkbmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgJHZhckRpc3BsYXkgPSAhXGlzX251bGwoJG5hbWUpID8gIlwkeyRuYW1lfTogIiA6ICcnOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhckRpc3BsYXkgLiAkbWVzc2FnZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/ServerException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvbjsKCkB0cmlnZ2VyX2Vycm9yKHNwcmludGYoJ1RoZSAiJXMiIGNsYXNzIGlzIGRlcHJlY2F0ZWQuJywgU2VydmVyRXhjZXB0aW9uOjpjbGFzcyksIEVfVVNFUl9ERVBSRUNBVEVEKTsKCi8qKgogKiBTZXJ2ZXIgRXhjZXB0aW9uCiAqCiAqIEBhdXRob3IgQW50aG9uIFBhbmcgPGFudGhvbi5wYW5nQGdtYWlsLmNvbT4KICoKICogQGRlcHJlY2F0ZWQgVGhlIFNjc3NwaHAgc2VydmVyIHNob3VsZCBkZWZpbmUgaXRzIG93biBleGNlcHRpb24gaW5zdGVhZC4KICovCmNsYXNzIFNlcnZlckV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24gaW1wbGVtZW50cyBTYXNzRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcU291cmNlTWFwXFNvdXJjZU1hcEdlbmVyYXRvcjsKCi8qKgogKiBCYXNlIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KYWJzdHJhY3QgY2xhc3MgRm9ybWF0dGVyCnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHVibGljICRpbmRlbnRMZXZlbDsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkaW5kZW50Q2hhcjsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkYnJlYWs7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJG9wZW47CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJGNsb3NlOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICR0YWdTZXBhcmF0b3I7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJGFzc2lnblNlcGFyYXRvcjsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwdWJsaWMgJGtlZXBTZW1pY29sb25zOwoKICAgIC8qKgogICAgICogQHZhciBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgJGN1cnJlbnRCbG9jazsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCAkY3VycmVudExpbmU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcm90ZWN0ZWQgJGN1cnJlbnRDb2x1bW47CgogICAgLyoqCiAgICAgKiBAdmFyIFxTY3NzUGhwXFNjc3NQaHBcU291cmNlTWFwXFNvdXJjZU1hcEdlbmVyYXRvcnxudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCAkc291cmNlTWFwR2VuZXJhdG9yOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkICRzdHJpcHBlZFNlbWljb2xvbjsKCiAgICAvKioKICAgICAqIEluaXRpYWxpemUgZm9ybWF0dGVyCiAgICAgKgogICAgICogQGFwaQogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKTsKCiAgICAvKioKICAgICAqIFJldHVybiBpbmRlbnRhdGlvbiAod2hpdGVzcGFjZSkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5kZW50U3RyKCkKICAgIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gcHJvcGVydHkgYXNzaWdubWVudAogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9wZXJ0eSgkbmFtZSwgJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBydHJpbSgkbmFtZSkgLiAkdGhpcy0+YXNzaWduU2VwYXJhdG9yIC4gJHZhbHVlIC4gJzsnOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGN1c3RvbSBwcm9wZXJ0eSBhc3NpZ25tZW50CiAgICAgKiBkaWZmZXJzIGluIHRoYXQgeW91IGhhdmUgdG8ga2VlcCBzcGFjZXMgaW4gdGhlIHZhbHVlIGFzIGlzCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqIEBwYXJhbSBtaXhlZCAgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGN1c3RvbVByb3BlcnR5KCRuYW1lLCAkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIHJ0cmltKCRuYW1lKSAuIHRyaW0oJHRoaXMtPmFzc2lnblNlcGFyYXRvcikgLiAkdmFsdWUgLiAnOyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBPdXRwdXQgbGluZXMgaW5zaWRlIGEgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJGJsb2NrCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9ja0xpbmVzKE91dHB1dEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICAkaW5uZXIgPSAkdGhpcy0+aW5kZW50U3RyKCk7CiAgICAgICAgJGdsdWUgID0gJHRoaXMtPmJyZWFrIC4gJGlubmVyOwoKICAgICAgICAkdGhpcy0+d3JpdGUoJGlubmVyIC4gaW1wbG9kZSgkZ2x1ZSwgJGJsb2NrLT5saW5lcykpOwoKICAgICAgICBpZiAoISBlbXB0eSgkYmxvY2stPmNoaWxkcmVuKSkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGUoJHRoaXMtPmJyZWFrKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBPdXRwdXQgYmxvY2sgc2VsZWN0b3JzCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRibG9jawogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2tTZWxlY3RvcnMoT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgIGFzc2VydCghIGVtcHR5KCRibG9jay0+c2VsZWN0b3JzKSk7CgogICAgICAgICRpbm5lciA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgJHRoaXMtPndyaXRlKCRpbm5lcgogICAgICAgICAgICAuIGltcGxvZGUoJHRoaXMtPnRhZ1NlcGFyYXRvciwgJGJsb2NrLT5zZWxlY3RvcnMpCiAgICAgICAgICAgIC4gJHRoaXMtPm9wZW4gLiAkdGhpcy0+YnJlYWspOwogICAgfQoKICAgIC8qKgogICAgICogT3V0cHV0IGJsb2NrIGNoaWxkcmVuCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRibG9jawogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2tDaGlsZHJlbihPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGJsb2NrLT5jaGlsZHJlbiBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgJHRoaXMtPmJsb2NrKCRjaGlsZCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogT3V0cHV0IG5vbi1lbXB0eSBibG9jawogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkYmxvY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGJsb2NrKE91dHB1dEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICBpZiAoZW1wdHkoJGJsb2NrLT5saW5lcykgJiYgZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmN1cnJlbnRCbG9jayA9ICRibG9jazsKCiAgICAgICAgJHByZSA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5zZWxlY3RvcnMpKSB7CiAgICAgICAgICAgICR0aGlzLT5ibG9ja1NlbGVjdG9ycygkYmxvY2spOwoKICAgICAgICAgICAgJHRoaXMtPmluZGVudExldmVsKys7CiAgICAgICAgfQoKICAgICAgICBpZiAoISBlbXB0eSgkYmxvY2stPmxpbmVzKSkgewogICAgICAgICAgICAkdGhpcy0+YmxvY2tMaW5lcygkYmxvY2spOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJHRoaXMtPmJsb2NrQ2hpbGRyZW4oJGJsb2NrKTsKICAgICAgICB9CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAkdGhpcy0+aW5kZW50TGV2ZWwtLTsKCiAgICAgICAgICAgIGlmICghICR0aGlzLT5rZWVwU2VtaWNvbG9ucykgewogICAgICAgICAgICAgICAgJHRoaXMtPnN0cmlwcGVkU2VtaWNvbG9uID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChlbXB0eSgkYmxvY2stPmNoaWxkcmVuKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlKCR0aGlzLT5icmVhayk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT53cml0ZSgkcHJlIC4gJHRoaXMtPmNsb3NlIC4gJHRoaXMtPmJyZWFrKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0IGFuZCBjbGVhbiBzYWZlbHkgZW1wdHkgY2hpbGRyZW4KICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJGJsb2NrCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB0ZXN0RW1wdHlDaGlsZHJlbigkYmxvY2spCiAgICB7CiAgICAgICAgJGlzRW1wdHkgPSBlbXB0eSgkYmxvY2stPmxpbmVzKTsKCiAgICAgICAgaWYgKCRibG9jay0+Y2hpbGRyZW4pIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGJsb2NrLT5jaGlsZHJlbiBhcyAkayA9PiAmJGNoaWxkKSB7CiAgICAgICAgICAgICAgICBpZiAoISAkdGhpcy0+dGVzdEVtcHR5Q2hpbGRyZW4oJGNoaWxkKSkgewogICAgICAgICAgICAgICAgICAgICRpc0VtcHR5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRjaGlsZC0+dHlwZSA9PT0gVHlwZTo6VF9NRURJQSB8fCAkY2hpbGQtPnR5cGUgPT09IFR5cGU6OlRfRElSRUNUSVZFKSB7CiAgICAgICAgICAgICAgICAgICAgJGNoaWxkLT5jaGlsZHJlbiA9IFtdOwogICAgICAgICAgICAgICAgICAgICRjaGlsZC0+c2VsZWN0b3JzID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpc0VtcHR5OwogICAgfQoKICAgIC8qKgogICAgICogRW50cnkgcG9pbnQgdG8gZm9ybWF0dGluZyBhIGJsb2NrCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAgICAgICAgICAgICAkYmxvY2sgICAgICAgICAgICAgIEFuIGFic3RyYWN0IHN5bnRheCB0cmVlCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcU291cmNlTWFwR2VuZXJhdG9yfG51bGwgJHNvdXJjZU1hcEdlbmVyYXRvciBPcHRpb25hbCBzb3VyY2UgbWFwIGdlbmVyYXRvcgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmb3JtYXQoT3V0cHV0QmxvY2sgJGJsb2NrLCBTb3VyY2VNYXBHZW5lcmF0b3IgJHNvdXJjZU1hcEdlbmVyYXRvciA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnNvdXJjZU1hcEdlbmVyYXRvciA9IG51bGw7CgogICAgICAgIGlmICgkc291cmNlTWFwR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICR0aGlzLT5jdXJyZW50TGluZSAgICAgICAgPSAxOwogICAgICAgICAgICAkdGhpcy0+Y3VycmVudENvbHVtbiAgICAgID0gMDsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZU1hcEdlbmVyYXRvciA9ICRzb3VyY2VNYXBHZW5lcmF0b3I7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dGVzdEVtcHR5Q2hpbGRyZW4oJGJsb2NrKTsKCiAgICAgICAgb2Jfc3RhcnQoKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRoaXMtPmJsb2NrKCRibG9jayk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICBvYl9lbmRfY2xlYW4oKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBvYl9lbmRfY2xlYW4oKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQoKICAgICAgICAkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgYXNzZXJ0KCRvdXQgIT09IGZhbHNlKTsKCiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBPdXRwdXQgY29udGVudAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gd3JpdGUoJHN0cikKICAgIHsKICAgICAgICBpZiAoISBlbXB0eSgkdGhpcy0+c3RyaXBwZWRTZW1pY29sb24pKSB7CiAgICAgICAgICAgIGVjaG8gJHRoaXMtPnN0cmlwcGVkU2VtaWNvbG9uOwoKICAgICAgICAgICAgJHRoaXMtPnN0cmlwcGVkU2VtaWNvbG9uID0gJyc7CiAgICAgICAgfQoKICAgICAgICAvKgogICAgICAgICAqIE1heWJlIFN0cmlwIHNlbWktY29sb24gYXBwZW5kZWQgYnkgcHJvcGVydHkoKTsgaXQncyBhIHNlcGFyYXRvciwgbm90IGEgdGVybWluYXRvcgogICAgICAgICAqIHdpbGwgYmUgc3RyaXBlZCBmb3IgcmVhbCBiZWZvcmUgYSBjbG9zaW5nLCBvdGhlcndpc2UgZGlzcGxheWVkIHVuY2hhbmdlZCBzdGFydGluZyB0aGUgbmV4dCB3cml0ZQogICAgICAgICAqLwogICAgICAgIGlmICgKICAgICAgICAgICAgISAkdGhpcy0+a2VlcFNlbWljb2xvbnMgJiYKICAgICAgICAgICAgJHN0ciAmJgogICAgICAgICAgICAoc3RycG9zKCRzdHIsICc7JykgIT09IGZhbHNlKSAmJgogICAgICAgICAgICAoc3Vic3RyKCRzdHIsIC0xKSA9PT0gJzsnKQogICAgICAgICkgewogICAgICAgICAgICAkc3RyID0gc3Vic3RyKCRzdHIsIDAsIC0xKTsKCiAgICAgICAgICAgICR0aGlzLT5zdHJpcHBlZFNlbWljb2xvbiA9ICc7JzsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+c291cmNlTWFwR2VuZXJhdG9yKSB7CiAgICAgICAgICAgICRsaW5lcyA9IGV4cGxvZGUoIlxuIiwgJHN0cik7CiAgICAgICAgICAgICRsYXN0TGluZSA9IGFycmF5X3BvcCgkbGluZXMpOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lKSB7CiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd3JpdHRlbiBsaW5lIHN0YXJ0cyBpcyBlbXB0eSwgYWRkaW5nIGEgbWFwcGluZyB3b3VsZCBhZGQgaXQgZm9yCiAgICAgICAgICAgICAgICAvLyBhIG5vbi1leGlzdGVudCBjb2x1bW4gYXMgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUKICAgICAgICAgICAgICAgIGlmICgkbGluZSAhPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICBhc3NlcnQoJHRoaXMtPmN1cnJlbnRCbG9jay0+c291cmNlTGluZSAhPT0gbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KCR0aGlzLT5jdXJyZW50QmxvY2stPnNvdXJjZU5hbWUgIT09IG51bGwpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zb3VyY2VNYXBHZW5lcmF0b3ItPmFkZE1hcHBpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5jdXJyZW50TGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5jdXJyZW50QmxvY2stPnNvdXJjZUxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29sdW1ucyBmcm9tIHBhcnNlciBhcmUgb2ZmIGJ5IG9uZQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y3VycmVudEJsb2NrLT5zb3VyY2VDb2x1bW4gPiAwID8gJHRoaXMtPmN1cnJlbnRCbG9jay0+c291cmNlQ29sdW1uIC0gMSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5jdXJyZW50QmxvY2stPnNvdXJjZU5hbWUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5jdXJyZW50TGluZSsrOwogICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRDb2x1bW4gPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGxhc3RMaW5lICE9PSAnJykgewogICAgICAgICAgICAgICAgYXNzZXJ0KCR0aGlzLT5jdXJyZW50QmxvY2stPnNvdXJjZUxpbmUgIT09IG51bGwpOwogICAgICAgICAgICAgICAgYXNzZXJ0KCR0aGlzLT5jdXJyZW50QmxvY2stPnNvdXJjZU5hbWUgIT09IG51bGwpOwogICAgICAgICAgICAgICAgJHRoaXMtPnNvdXJjZU1hcEdlbmVyYXRvci0+YWRkTWFwcGluZygKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y3VycmVudExpbmUsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRCbG9jay0+c291cmNlTGluZSwKICAgICAgICAgICAgICAgICAgICAvL2NvbHVtbnMgZnJvbSBwYXJzZXIgYXJlIG9mZiBieSBvbmUKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y3VycmVudEJsb2NrLT5zb3VyY2VDb2x1bW4gPiAwID8gJHRoaXMtPmN1cnJlbnRCbG9jay0+c291cmNlQ29sdW1uIC0gMSA6IDAsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRCbG9jay0+c291cmNlTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRDb2x1bW4gKz0gXHN0cmxlbigkbGFzdExpbmUpOwogICAgICAgIH0KCiAgICAgICAgZWNobyAkc3RyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Compact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKLyoqCiAqIENvbXBhY3QgZm9ybWF0dGVyCiAqCiAqIEBhdXRob3IgTGVhZiBDb3Jjb3JhbiA8bGVhZm90QGdtYWlsLmNvbT4KICoKICogQGRlcHJlY2F0ZWQgc2luY2UgMS40LjAuIFVzZSB0aGUgQ29tcHJlc3NlZCBmb3JtYXR0ZXIgaW5zdGVhZC4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBDb21wYWN0IGV4dGVuZHMgRm9ybWF0dGVyCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIEB0cmlnZ2VyX2Vycm9yKCdUaGUgQ29tcGFjdCBmb3JtYXR0ZXIgaXMgZGVwcmVjYXRlZCBzaW5jZSAxLjQuMC4gVXNlIHRoZSBDb21wcmVzc2VkIGZvcm1hdHRlciBpbnN0ZWFkLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKCiAgICAgICAgJHRoaXMtPmluZGVudExldmVsID0gMDsKICAgICAgICAkdGhpcy0+aW5kZW50Q2hhciA9ICcnOwogICAgICAgICR0aGlzLT5icmVhayA9ICcnOwogICAgICAgICR0aGlzLT5vcGVuID0gJyB7JzsKICAgICAgICAkdGhpcy0+Y2xvc2UgPSAifVxuXG4iOwogICAgICAgICR0aGlzLT50YWdTZXBhcmF0b3IgPSAnLCc7CiAgICAgICAgJHRoaXMtPmFzc2lnblNlcGFyYXRvciA9ICc6JzsKICAgICAgICAkdGhpcy0+a2VlcFNlbWljb2xvbnMgPSB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5kZW50U3RyKCkKICAgIHsKICAgICAgICByZXR1cm4gJyAnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Compressed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKLyoqCiAqIENvbXByZXNzZWQgZm9ybWF0dGVyCiAqCiAqIEBhdXRob3IgTGVhZiBDb3Jjb3JhbiA8bGVhZm90QGdtYWlsLmNvbT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBDb21wcmVzc2VkIGV4dGVuZHMgRm9ybWF0dGVyCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgICR0aGlzLT5pbmRlbnRMZXZlbCA9IDA7CiAgICAgICAgJHRoaXMtPmluZGVudENoYXIgPSAnICAnOwogICAgICAgICR0aGlzLT5icmVhayA9ICcnOwogICAgICAgICR0aGlzLT5vcGVuID0gJ3snOwogICAgICAgICR0aGlzLT5jbG9zZSA9ICd9JzsKICAgICAgICAkdGhpcy0+dGFnU2VwYXJhdG9yID0gJywnOwogICAgICAgICR0aGlzLT5hc3NpZ25TZXBhcmF0b3IgPSAnOic7CiAgICAgICAgJHRoaXMtPmtlZXBTZW1pY29sb25zID0gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBibG9ja0xpbmVzKE91dHB1dEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICAkaW5uZXIgPSAkdGhpcy0+aW5kZW50U3RyKCk7CgogICAgICAgICRnbHVlID0gJHRoaXMtPmJyZWFrIC4gJGlubmVyOwoKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmxpbmVzIGFzICRpbmRleCA9PiAkbGluZSkgewogICAgICAgICAgICBpZiAoc3Vic3RyKCRsaW5lLCAwLCAyKSA9PT0gJy8qJyAmJiBzdWJzdHIoJGxpbmUsIDIsIDEpICE9PSAnIScpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRibG9jay0+bGluZXNbJGluZGV4XSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT53cml0ZSgkaW5uZXIgLiBpbXBsb2RlKCRnbHVlLCAkYmxvY2stPmxpbmVzKSk7CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZSgkdGhpcy0+YnJlYWspOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIE91dHB1dCBibG9jayBzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJGJsb2NrCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9ja1NlbGVjdG9ycyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgYXNzZXJ0KCEgZW1wdHkoJGJsb2NrLT5zZWxlY3RvcnMpKTsKCiAgICAgICAgJGlubmVyID0gJHRoaXMtPmluZGVudFN0cigpOwoKICAgICAgICAkdGhpcy0+d3JpdGUoCiAgICAgICAgICAgICRpbm5lcgogICAgICAgICAgICAuIGltcGxvZGUoCiAgICAgICAgICAgICAgICAkdGhpcy0+dGFnU2VwYXJhdG9yLAogICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoWycgPiAnLCAnICsgJywgJyB+ICddLCBbJz4nLCAnKycsICd+J10sICRibG9jay0+c2VsZWN0b3JzKQogICAgICAgICAgICApCiAgICAgICAgICAgIC4gJHRoaXMtPm9wZW4gLiAkdGhpcy0+YnJlYWsKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Crunched.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKLyoqCiAqIENydW5jaGVkIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqCiAqIEBkZXByZWNhdGVkIHNpbmNlIDEuNC4wLiBVc2UgdGhlIENvbXByZXNzZWQgZm9ybWF0dGVyIGluc3RlYWQuCiAqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgQ3J1bmNoZWQgZXh0ZW5kcyBGb3JtYXR0ZXIKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgQHRyaWdnZXJfZXJyb3IoJ1RoZSBDcnVuY2hlZCBmb3JtYXR0ZXIgaXMgZGVwcmVjYXRlZCBzaW5jZSAxLjQuMC4gVXNlIHRoZSBDb21wcmVzc2VkIGZvcm1hdHRlciBpbnN0ZWFkLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKCiAgICAgICAgJHRoaXMtPmluZGVudExldmVsID0gMDsKICAgICAgICAkdGhpcy0+aW5kZW50Q2hhciA9ICcgICc7CiAgICAgICAgJHRoaXMtPmJyZWFrID0gJyc7CiAgICAgICAgJHRoaXMtPm9wZW4gPSAneyc7CiAgICAgICAgJHRoaXMtPmNsb3NlID0gJ30nOwogICAgICAgICR0aGlzLT50YWdTZXBhcmF0b3IgPSAnLCc7CiAgICAgICAgJHRoaXMtPmFzc2lnblNlcGFyYXRvciA9ICc6JzsKICAgICAgICAkdGhpcy0+a2VlcFNlbWljb2xvbnMgPSBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJsb2NrTGluZXMoT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgICRpbm5lciA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgJGdsdWUgPSAkdGhpcy0+YnJlYWsgLiAkaW5uZXI7CgogICAgICAgIGZvcmVhY2ggKCRibG9jay0+bGluZXMgYXMgJGluZGV4ID0+ICRsaW5lKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHIoJGxpbmUsIDAsIDIpID09PSAnLyonKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkYmxvY2stPmxpbmVzWyRpbmRleF0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d3JpdGUoJGlubmVyIC4gaW1wbG9kZSgkZ2x1ZSwgJGJsb2NrLT5saW5lcykpOwoKICAgICAgICBpZiAoISBlbXB0eSgkYmxvY2stPmNoaWxkcmVuKSkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGUoJHRoaXMtPmJyZWFrKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBPdXRwdXQgYmxvY2sgc2VsZWN0b3JzCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRibG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2tTZWxlY3RvcnMoT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgIGFzc2VydCghIGVtcHR5KCRibG9jay0+c2VsZWN0b3JzKSk7CgogICAgICAgICRpbm5lciA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgJHRoaXMtPndyaXRlKAogICAgICAgICAgICAkaW5uZXIKICAgICAgICAgICAgLiBpbXBsb2RlKAogICAgICAgICAgICAgICAgJHRoaXMtPnRhZ1NlcGFyYXRvciwKICAgICAgICAgICAgICAgIHN0cl9yZXBsYWNlKFsnID4gJywgJyArICcsICcgfiAnXSwgWyc+JywgJysnLCAnfiddLCAkYmxvY2stPnNlbGVjdG9ycykKICAgICAgICAgICAgKQogICAgICAgICAgICAuICR0aGlzLT5vcGVuIC4gJHRoaXMtPmJyZWFrCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Debug.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKLyoqCiAqIERlYnVnIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqCiAqIEBkZXByZWNhdGVkIHNpbmNlIDEuNC4wLgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIERlYnVnIGV4dGVuZHMgRm9ybWF0dGVyCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIEB0cmlnZ2VyX2Vycm9yKCdUaGUgRGVidWcgZm9ybWF0dGVyIGlzIGRlcHJlY2F0ZWQgc2luY2UgMS40LjAuJywgRV9VU0VSX0RFUFJFQ0FURUQpOwoKICAgICAgICAkdGhpcy0+aW5kZW50TGV2ZWwgPSAwOwogICAgICAgICR0aGlzLT5pbmRlbnRDaGFyID0gJyc7CiAgICAgICAgJHRoaXMtPmJyZWFrID0gIlxuIjsKICAgICAgICAkdGhpcy0+b3BlbiA9ICcgeyc7CiAgICAgICAgJHRoaXMtPmNsb3NlID0gJyB9JzsKICAgICAgICAkdGhpcy0+dGFnU2VwYXJhdG9yID0gJywgJzsKICAgICAgICAkdGhpcy0+YXNzaWduU2VwYXJhdG9yID0gJzogJzsKICAgICAgICAkdGhpcy0+a2VlcFNlbWljb2xvbnMgPSB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5kZW50U3RyKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RyX3JlcGVhdCgnICAnLCAkdGhpcy0+aW5kZW50TGV2ZWwpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2tMaW5lcyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGluZGVudCA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgaWYgKGVtcHR5KCRibG9jay0+bGluZXMpKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZSgieyRpbmRlbnR9YmxvY2stPmxpbmVzOiBbXVxuIik7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmxpbmVzIGFzICRpbmRleCA9PiAkbGluZSkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGUoInskaW5kZW50fWJsb2NrLT5saW5lc1t7JGluZGV4fV06ICRsaW5lXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9ja1NlbGVjdG9ycyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGluZGVudCA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgaWYgKGVtcHR5KCRibG9jay0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGUoInskaW5kZW50fWJsb2NrLT5zZWxlY3RvcnM6IFtdXG4iKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRibG9jay0+c2VsZWN0b3JzIGFzICRpbmRleCA9PiAkc2VsZWN0b3IpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCJ7JGluZGVudH1ibG9jay0+c2VsZWN0b3JzW3skaW5kZXh9XTogJHNlbGVjdG9yXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9ja0NoaWxkcmVuKE91dHB1dEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICAkaW5kZW50ID0gJHRoaXMtPmluZGVudFN0cigpOwoKICAgICAgICBpZiAoZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCJ7JGluZGVudH1ibG9jay0+Y2hpbGRyZW46IFtdXG4iKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbmRlbnRMZXZlbCsrOwoKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmNoaWxkcmVuIGFzICRpID0+ICRjaGlsZCkgewogICAgICAgICAgICAkdGhpcy0+YmxvY2soJGNoaWxkKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbmRlbnRMZXZlbC0tOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2soT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgICRpbmRlbnQgPSAkdGhpcy0+aW5kZW50U3RyKCk7CgogICAgICAgICR0aGlzLT53cml0ZSgieyRpbmRlbnR9YmxvY2stPnR5cGU6IHskYmxvY2stPnR5cGV9XG4iIC4KICAgICAgICAgICAgICJ7JGluZGVudH1ibG9jay0+ZGVwdGg6IHskYmxvY2stPmRlcHRofVxuIik7CgogICAgICAgICR0aGlzLT5jdXJyZW50QmxvY2sgPSAkYmxvY2s7CgogICAgICAgICR0aGlzLT5ibG9ja1NlbGVjdG9ycygkYmxvY2spOwogICAgICAgICR0aGlzLT5ibG9ja0xpbmVzKCRibG9jayk7CiAgICAgICAgJHRoaXMtPmJsb2NrQ2hpbGRyZW4oJGJsb2NrKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Expanded.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKLyoqCiAqIEV4cGFuZGVkIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRXhwYW5kZWQgZXh0ZW5kcyBGb3JtYXR0ZXIKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmluZGVudExldmVsID0gMDsKICAgICAgICAkdGhpcy0+aW5kZW50Q2hhciA9ICcgICc7CiAgICAgICAgJHRoaXMtPmJyZWFrID0gIlxuIjsKICAgICAgICAkdGhpcy0+b3BlbiA9ICcgeyc7CiAgICAgICAgJHRoaXMtPmNsb3NlID0gJ30nOwogICAgICAgICR0aGlzLT50YWdTZXBhcmF0b3IgPSAnLCAnOwogICAgICAgICR0aGlzLT5hc3NpZ25TZXBhcmF0b3IgPSAnOiAnOwogICAgICAgICR0aGlzLT5rZWVwU2VtaWNvbG9ucyA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbmRlbnRTdHIoKQogICAgewogICAgICAgIHJldHVybiBzdHJfcmVwZWF0KCR0aGlzLT5pbmRlbnRDaGFyLCAkdGhpcy0+aW5kZW50TGV2ZWwpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2tMaW5lcyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGlubmVyID0gJHRoaXMtPmluZGVudFN0cigpOwoKICAgICAgICAkZ2x1ZSA9ICR0aGlzLT5icmVhayAuICRpbm5lcjsKCiAgICAgICAgZm9yZWFjaCAoJGJsb2NrLT5saW5lcyBhcyAkaW5kZXggPT4gJGxpbmUpIHsKICAgICAgICAgICAgaWYgKHN1YnN0cigkbGluZSwgMCwgMikgPT09ICcvKicpIHsKICAgICAgICAgICAgICAgICRyZXBsYWNlZExpbmUgPSBwcmVnX3JlcGxhY2UoJy9cclxuP3xcbnxcZi8nLCAkdGhpcy0+YnJlYWssICRsaW5lKTsKICAgICAgICAgICAgICAgIGFzc2VydCgkcmVwbGFjZWRMaW5lICE9PSBudWxsKTsKICAgICAgICAgICAgICAgICRibG9jay0+bGluZXNbJGluZGV4XSA9ICRyZXBsYWNlZExpbmU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT53cml0ZSgkaW5uZXIgLiBpbXBsb2RlKCRnbHVlLCAkYmxvY2stPmxpbmVzKSk7CgogICAgICAgIGlmIChlbXB0eSgkYmxvY2stPnNlbGVjdG9ycykgfHwgISBlbXB0eSgkYmxvY2stPmNoaWxkcmVuKSkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGUoJHRoaXMtPmJyZWFrKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Nested.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlcjsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFR5cGU7CgovKioKICogTmVzdGVkIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqCiAqIEBkZXByZWNhdGVkIHNpbmNlIDEuNC4wLiBVc2UgdGhlIEV4cGFuZGVkIGZvcm1hdHRlciBpbnN0ZWFkLgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIE5lc3RlZCBleHRlbmRzIEZvcm1hdHRlcgp7CiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGRlcHRoOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIEB0cmlnZ2VyX2Vycm9yKCdUaGUgTmVzdGVkIGZvcm1hdHRlciBpcyBkZXByZWNhdGVkIHNpbmNlIDEuNC4wLiBVc2UgdGhlIEV4cGFuZGVkIGZvcm1hdHRlciBpbnN0ZWFkLicsIEVfVVNFUl9ERVBSRUNBVEVEKTsKCiAgICAgICAgJHRoaXMtPmluZGVudExldmVsID0gMDsKICAgICAgICAkdGhpcy0+aW5kZW50Q2hhciA9ICcgICc7CiAgICAgICAgJHRoaXMtPmJyZWFrID0gIlxuIjsKICAgICAgICAkdGhpcy0+b3BlbiA9ICcgeyc7CiAgICAgICAgJHRoaXMtPmNsb3NlID0gJyB9JzsKICAgICAgICAkdGhpcy0+dGFnU2VwYXJhdG9yID0gJywgJzsKICAgICAgICAkdGhpcy0+YXNzaWduU2VwYXJhdG9yID0gJzogJzsKICAgICAgICAkdGhpcy0+a2VlcFNlbWljb2xvbnMgPSB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5kZW50U3RyKCkKICAgIHsKICAgICAgICAkbiA9ICR0aGlzLT5kZXB0aCAtIDE7CgogICAgICAgIHJldHVybiBzdHJfcmVwZWF0KCR0aGlzLT5pbmRlbnRDaGFyLCBtYXgoJHRoaXMtPmluZGVudExldmVsICsgJG4sIDApKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGJsb2NrTGluZXMoT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgICRpbm5lciA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKICAgICAgICAkZ2x1ZSAgPSAkdGhpcy0+YnJlYWsgLiAkaW5uZXI7CgogICAgICAgIGZvcmVhY2ggKCRibG9jay0+bGluZXMgYXMgJGluZGV4ID0+ICRsaW5lKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHIoJGxpbmUsIDAsIDIpID09PSAnLyonKSB7CiAgICAgICAgICAgICAgICAkcmVwbGFjZWRMaW5lID0gcHJlZ19yZXBsYWNlKCcvXHJcbj98XG58XGYvJywgJHRoaXMtPmJyZWFrLCAkbGluZSk7CiAgICAgICAgICAgICAgICBhc3NlcnQoJHJlcGxhY2VkTGluZSAhPT0gbnVsbCk7CiAgICAgICAgICAgICAgICAkYmxvY2stPmxpbmVzWyRpbmRleF0gPSAkcmVwbGFjZWRMaW5lOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d3JpdGUoJGlubmVyIC4gaW1wbG9kZSgkZ2x1ZSwgJGJsb2NrLT5saW5lcykpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2soT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgIHN0YXRpYyAkZGVwdGhzOwogICAgICAgIHN0YXRpYyAkZG93bkxldmVsOwogICAgICAgIHN0YXRpYyAkY2xvc2VCbG9jazsKICAgICAgICBzdGF0aWMgJHByZXZpb3VzRW1wdHk7CiAgICAgICAgc3RhdGljICRwcmV2aW91c0hhc1NlbGVjdG9yOwoKICAgICAgICBpZiAoJGJsb2NrLT50eXBlID09PSAncm9vdCcpIHsKICAgICAgICAgICAgJGRlcHRocyA9IFsgMCBdOwogICAgICAgICAgICAkZG93bkxldmVsID0gJyc7CiAgICAgICAgICAgICRjbG9zZUJsb2NrID0gJyc7CiAgICAgICAgICAgICR0aGlzLT5kZXB0aCA9IDA7CiAgICAgICAgICAgICRwcmV2aW91c0VtcHR5ID0gZmFsc2U7CiAgICAgICAgICAgICRwcmV2aW91c0hhc1NlbGVjdG9yID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkaXNNZWRpYU9yRGlyZWN0aXZlID0gXGluX2FycmF5KCRibG9jay0+dHlwZSwgW1R5cGU6OlRfRElSRUNUSVZFLCBUeXBlOjpUX01FRElBXSk7CiAgICAgICAgJGlzU3VwcG9ydCA9ICgkYmxvY2stPnR5cGUgPT09IFR5cGU6OlRfRElSRUNUSVZFCiAgICAgICAgICAgICYmICRibG9jay0+c2VsZWN0b3JzICYmIHN0cnBvcyhpbXBsb2RlKCcnLCAkYmxvY2stPnNlbGVjdG9ycyksICdAc3VwcG9ydHMnKSAhPT0gZmFsc2UpOwoKICAgICAgICB3aGlsZSAoJGJsb2NrLT5kZXB0aCA8IGVuZCgkZGVwdGhzKSB8fCAoJGJsb2NrLT5kZXB0aCA9PSAxICYmIGVuZCgkZGVwdGhzKSA9PSAxKSkgewogICAgICAgICAgICBhcnJheV9wb3AoJGRlcHRocyk7CiAgICAgICAgICAgICR0aGlzLT5kZXB0aC0tOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgISAkdGhpcy0+ZGVwdGggJiYgKCRibG9jay0+ZGVwdGggPD0gMSB8fCAoISAkdGhpcy0+aW5kZW50TGV2ZWwgJiYgJGJsb2NrLT50eXBlID09PSBUeXBlOjpUX0NPTU1FTlQpKSAmJgogICAgICAgICAgICAgICAgKCgkYmxvY2stPnNlbGVjdG9ycyAmJiAhICRpc01lZGlhT3JEaXJlY3RpdmUpIHx8ICRwcmV2aW91c0hhc1NlbGVjdG9yKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRkb3duTGV2ZWwgPSAkdGhpcy0+YnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChlbXB0eSgkYmxvY2stPmxpbmVzKSAmJiBlbXB0eSgkYmxvY2stPmNoaWxkcmVuKSkgewogICAgICAgICAgICAgICAgJHByZXZpb3VzRW1wdHkgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJGJsb2NrLT5saW5lcykgJiYgZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmN1cnJlbnRCbG9jayA9ICRibG9jazsKCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5saW5lcykgfHwgKCEgZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikgJiYgKCR0aGlzLT5kZXB0aCA8IDEgfHwgJGlzU3VwcG9ydCkpKSB7CiAgICAgICAgICAgIGlmICgkYmxvY2stPmRlcHRoID4gZW5kKCRkZXB0aHMpKSB7CiAgICAgICAgICAgICAgICBpZiAoISAkcHJldmlvdXNFbXB0eSB8fCAkdGhpcy0+ZGVwdGggPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRlcHRoKys7CgogICAgICAgICAgICAgICAgICAgICRkZXB0aHNbXSA9ICRibG9jay0+ZGVwdGg7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlIGN1cnJlbnQgZGVwdGggdW5jaGFuZ2VkIGJ1dCB0YWtlIHRoZSBibG9jayBkZXB0aCBhcyBhIG5ldyByZWZlcmVuY2UgZm9yIGZvbGxvd2luZyBibG9ja3MKICAgICAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGRlcHRocyk7CgogICAgICAgICAgICAgICAgICAgICRkZXB0aHNbXSA9ICRibG9jay0+ZGVwdGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRwcmV2aW91c0VtcHR5ID0gKCRibG9jay0+dHlwZSA9PT0gVHlwZTo6VF9DT01NRU5UKTsKICAgICAgICAkcHJldmlvdXNIYXNTZWxlY3RvciA9IGZhbHNlOwoKICAgICAgICBpZiAoISBlbXB0eSgkYmxvY2stPnNlbGVjdG9ycykpIHsKICAgICAgICAgICAgaWYgKCRjbG9zZUJsb2NrKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGUoJGNsb3NlQmxvY2spOwogICAgICAgICAgICAgICAgJGNsb3NlQmxvY2sgPSAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRkb3duTGV2ZWwpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZSgkZG93bkxldmVsKTsKICAgICAgICAgICAgICAgICRkb3duTGV2ZWwgPSAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmJsb2NrU2VsZWN0b3JzKCRibG9jayk7CgogICAgICAgICAgICAkdGhpcy0+aW5kZW50TGV2ZWwrKzsKICAgICAgICB9CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+bGluZXMpKSB7CiAgICAgICAgICAgIGlmICgkY2xvc2VCbG9jaykgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlKCRjbG9zZUJsb2NrKTsKICAgICAgICAgICAgICAgICRjbG9zZUJsb2NrID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkZG93bkxldmVsKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGUoJGRvd25MZXZlbCk7CiAgICAgICAgICAgICAgICAkZG93bkxldmVsID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5ibG9ja0xpbmVzKCRibG9jayk7CgogICAgICAgICAgICAkY2xvc2VCbG9jayA9ICR0aGlzLT5icmVhazsKICAgICAgICB9CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+ZGVwdGggPiAwICYmICgkaXNNZWRpYU9yRGlyZWN0aXZlIHx8ICEgJHRoaXMtPmhhc0ZsYXRDaGlsZCgkYmxvY2spKSkgewogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRkZXB0aHMpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5kZXB0aC0tOwogICAgICAgICAgICAgICAgJHRoaXMtPmJsb2NrQ2hpbGRyZW4oJGJsb2NrKTsKICAgICAgICAgICAgICAgICR0aGlzLT5kZXB0aCsrOwoKICAgICAgICAgICAgICAgICRkZXB0aHNbXSA9ICRibG9jay0+ZGVwdGg7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YmxvY2tDaGlsZHJlbigkYmxvY2spOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyByZWNsZWFyIHRvIG5vdCBiZSBzcG9pbGVkIGJ5IGNoaWxkcmVuIGlmIFRfRElSRUNUSVZFCiAgICAgICAgaWYgKCRibG9jay0+dHlwZSA9PT0gVHlwZTo6VF9ESVJFQ1RJVkUpIHsKICAgICAgICAgICAgJHByZXZpb3VzSGFzU2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAkdGhpcy0+aW5kZW50TGV2ZWwtLTsKCiAgICAgICAgICAgIGlmICghICR0aGlzLT5rZWVwU2VtaWNvbG9ucykgewogICAgICAgICAgICAgICAgJHRoaXMtPnN0cmlwcGVkU2VtaWNvbG9uID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT53cml0ZSgkdGhpcy0+Y2xvc2UpOwoKICAgICAgICAgICAgJGNsb3NlQmxvY2sgPSAkdGhpcy0+YnJlYWs7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmRlcHRoID4gMSAmJiAhIGVtcHR5KCRibG9jay0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGRlcHRocyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGVwdGgtLTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEgJGlzTWVkaWFPckRpcmVjdGl2ZSkgewogICAgICAgICAgICAgICAgJHByZXZpb3VzSGFzU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJsb2NrLT50eXBlID09PSAncm9vdCcpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCR0aGlzLT5icmVhayk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQmxvY2sgaGFzIGZsYXQgY2hpbGQKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJGJsb2NrCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaGFzRmxhdENoaWxkKCRibG9jaykKICAgIHsKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmNoaWxkcmVuIGFzICRjaGlsZCkgewogICAgICAgICAgICBpZiAoZW1wdHkoJGNoaWxkLT5zZWxlY3RvcnMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/OutputBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlcjsKCi8qKgogKiBPdXRwdXQgYmxvY2sKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIE91dHB1dEJsb2NrCnsKICAgIC8qKgogICAgICogQHZhciBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgJHR5cGU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwdWJsaWMgJGRlcHRoOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkc2VsZWN0b3JzOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgJGxpbmVzOwoKICAgIC8qKgogICAgICogQHZhciBPdXRwdXRCbG9ja1tdCiAgICAgKi8KICAgIHB1YmxpYyAkY2hpbGRyZW47CgogICAgLyoqCiAgICAgKiBAdmFyIE91dHB1dEJsb2NrfG51bGwKICAgICAqLwogICAgcHVibGljICRwYXJlbnQ7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkc291cmNlTmFtZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHVibGljICRzb3VyY2VMaW5lOwoKICAgIC8qKgogICAgICogQHZhciBpbnR8bnVsbAogICAgICovCiAgICBwdWJsaWMgJHNvdXJjZUNvbHVtbjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Logger/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Logger/LoggerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlcjsKCi8qKgogKiBJbnRlcmZhY2UgaW1wbGVtZW50ZWQgYnkgbG9nZ2VycyBmb3Igd2FybmluZ3MgYW5kIGRlYnVnIG1lc3NhZ2VzLgogKgogKiBUaGUgb2ZmaWNpYWwgU2FzcyBpbXBsZW1lbnRhdGlvbiByZWNvbW1lbmRzIHRoYXQgbG9nZ2VycyByZXBvcnQgdGhlCiAqIG1lc3NhZ2VzIGltbWVkaWF0ZWx5IHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIHRoZSBlbmQgb2YgdGhlCiAqIGNvbXBpbGF0aW9uLCB0byBwcm92aWRlIGEgYmV0dGVyIGRlYnVnZ2luZyBleHBlcmllbmNlIHdoZW4gdGhlCiAqIGNvbXBpbGF0aW9uIGRvZXMgbm90IGVuZCAoZXJyb3Igb3IgaW5maW5pdGUgbG9vcCBhZnRlciB0aGUgd2FybmluZwogKiBmb3IgaW5zdGFuY2UpLgogKi8KaW50ZXJmYWNlIExvZ2dlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEVtaXRzIGEgd2FybmluZyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLgogICAgICoKICAgICAqIElmICRkZXByZWNhdGlvbiBpcyB0cnVlLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgZGVwcmVjYXRpb24KICAgICAqIHdhcm5pbmcuIEltcGxlbWVudGF0aW9ucyBzaG91bGQgc3VyZmFjZSBhbGwgdGhpcyBpbmZvcm1hdGlvbiB0bwogICAgICogdGhlIGVuZCB1c2VyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBib29sICAkZGVwcmVjYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdhcm4oJG1lc3NhZ2UsICRkZXByZWNhdGlvbiA9IGZhbHNlKTsKCiAgICAvKioKICAgICAqIEVtaXRzIGEgZGVidWdnaW5nIG1lc3NhZ2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVidWcoJG1lc3NhZ2UpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Logger/QuietLogger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlcjsKCi8qKgogKiBBIGxvZ2dlciB0aGF0IHNpbGVudGx5IGlnbm9yZXMgYWxsIG1lc3NhZ2VzLgogKgogKiBAZmluYWwKICovCmNsYXNzIFF1aWV0TG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VySW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB3YXJuKCRtZXNzYWdlLCAkZGVwcmVjYXRpb24gPSBmYWxzZSkKICAgIHsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVidWcoJG1lc3NhZ2UpCiAgICB7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Logger/StreamLogger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlcjsKCi8qKgogKiBBIGxvZ2dlciB0aGF0IHByaW50cyB0byBhIFBIUCBzdHJlYW0gKGZvciBpbnN0YW5jZSBzdGRlcnIpCiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgU3RyZWFtTG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VySW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHN0cmVhbTsKICAgIHByaXZhdGUgJGNsb3NlT25EZXN0cnVjdDsKCiAgICAvKioKICAgICAqIEBwYXJhbSByZXNvdXJjZSAkc3RyZWFtICAgICAgICAgIEEgc3RyZWFtIHJlc291cmNlCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgJGNsb3NlT25EZXN0cnVjdCBJZiB0cnVlLCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHN0cmVhbSBhbmQgY2xvc2UgaXQgb24gZGVzdHJ1Y3QgdG8gYXZvaWQgbGVha3MuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyZWFtLCAkY2xvc2VPbkRlc3RydWN0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICRzdHJlYW07CiAgICAgICAgJHRoaXMtPmNsb3NlT25EZXN0cnVjdCA9ICRjbG9zZU9uRGVzdHJ1Y3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y2xvc2VPbkRlc3RydWN0KSB7CiAgICAgICAgICAgIGZjbG9zZSgkdGhpcy0+c3RyZWFtKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW5oZXJpdERvYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FybigkbWVzc2FnZSwgJGRlcHJlY2F0aW9uID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHByZWZpeCA9ICgkZGVwcmVjYXRpb24gPyAnREVQUkVDQVRJT04gJyA6ICcnKSAuICdXQVJOSU5HOiAnOwoKICAgICAgICBmd3JpdGUoJHRoaXMtPnN0cmVhbSwgJHByZWZpeCAuICRtZXNzYWdlIC4gIlxuXG4iKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpbmhlcml0RG9jCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWJ1ZygkbWVzc2FnZSkKICAgIHsKICAgICAgICBmd3JpdGUoJHRoaXMtPnN0cmVhbSwgJG1lc3NhZ2UgLiAiXG4iKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Node.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIEJhc2Ugbm9kZQogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KYWJzdHJhY3QgY2xhc3MgTm9kZQp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkdHlwZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHB1YmxpYyAkc291cmNlSW5kZXg7CgogICAgLyoqCiAgICAgKiBAdmFyIGludHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyAkc291cmNlTGluZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHVibGljICRzb3VyY2VDb2x1bW47Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Node/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Node/Number.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXE5vZGU7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEJhc2VcUmFuZ2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFJhbmdlRXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxTYXNzU2NyaXB0RXhjZXB0aW9uOwp1c2UgU2Nzc1BocFxTY3NzUGhwXE5vZGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcVHlwZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxVdGlsOwoKLyoqCiAqIERpbWVuc2lvbiArIG9wdGlvbmFsIHVuaXRzCiAqCiAqIHtAaW50ZXJuYWwKICogICAgIFRoaXMgaXMgYSB3b3JrLWluLXByb2dyZXNzLgogKgogKiAgICAgVGhlIFxBcnJheUFjY2VzcyBpbnRlcmZhY2UgaXMgdGVtcG9yYXJ5IHVudGlsIHRoZSBtaWdyYXRpb24gaXMgY29tcGxldGUuCiAqIH19CiAqCiAqIEBhdXRob3IgQW50aG9uIFBhbmcgPGFudGhvbi5wYW5nQGdtYWlsLmNvbT4KICoKICogQHRlbXBsYXRlLWltcGxlbWVudHMgXEFycmF5QWNjZXNzPGludCwgbWl4ZWQ+CiAqLwpjbGFzcyBOdW1iZXIgZXh0ZW5kcyBOb2RlIGltcGxlbWVudHMgXEFycmF5QWNjZXNzCnsKICAgIGNvbnN0IFBSRUNJU0lPTiA9IDEwOwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqIEBkZXByZWNhdGVkIHVzZSB7TnVtYmVyOjpQUkVDSVNJT059IGluc3RlYWQgdG8gcmVhZCB0aGUgcHJlY2lzaW9uLiBDb25maWd1cmluZyBpdCBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgJHByZWNpc2lvbiA9IHNlbGY6OlBSRUNJU0lPTjsKCiAgICAvKioKICAgICAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1jc3MzLXZhbHVlcy0yMDEyMDMwOC8KICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKiBAcGhwc3Rhbi12YXIgYXJyYXk8c3RyaW5nLCBhcnJheTxzdHJpbmcsIGZsb2F0fGludD4+CiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgJHVuaXRUYWJsZSA9IFsKICAgICAgICAnaW4nID0+IFsKICAgICAgICAgICAgJ2luJyA9PiAxLAogICAgICAgICAgICAncGMnID0+IDYsCiAgICAgICAgICAgICdwdCcgPT4gNzIsCiAgICAgICAgICAgICdweCcgPT4gOTYsCiAgICAgICAgICAgICdjbScgPT4gMi41NCwKICAgICAgICAgICAgJ21tJyA9PiAyNS40LAogICAgICAgICAgICAncScgID0+IDEwMS42LAogICAgICAgIF0sCiAgICAgICAgJ3R1cm4nID0+IFsKICAgICAgICAgICAgJ2RlZycgID0+IDM2MCwKICAgICAgICAgICAgJ2dyYWQnID0+IDQwMCwKICAgICAgICAgICAgJ3JhZCcgID0+IDYuMjgzMTg1MzA3MTc5NTg2NDc2OTI1Mjg2NzYsIC8vIDIgKiBNX1BJCiAgICAgICAgICAgICd0dXJuJyA9PiAxLAogICAgICAgIF0sCiAgICAgICAgJ3MnID0+IFsKICAgICAgICAgICAgJ3MnICA9PiAxLAogICAgICAgICAgICAnbXMnID0+IDEwMDAsCiAgICAgICAgXSwKICAgICAgICAnSHonID0+IFsKICAgICAgICAgICAgJ0h6JyAgPT4gMSwKICAgICAgICAgICAgJ2tIeicgPT4gMC4wMDEsCiAgICAgICAgXSwKICAgICAgICAnZHBpJyA9PiBbCiAgICAgICAgICAgICdkcGknICA9PiAxLAogICAgICAgICAgICAnZHBjbScgPT4gMSAvIDIuNTQsCiAgICAgICAgICAgICdkcHB4JyA9PiAxIC8gOTYsCiAgICAgICAgXSwKICAgIF07CgogICAgLyoqCiAgICAgKiBAdmFyIGludHxmbG9hdAogICAgICovCiAgICBwcml2YXRlICRkaW1lbnNpb247CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ1tdCiAgICAgKiBAcGhwc3Rhbi12YXIgbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgJG51bWVyYXRvclVuaXRzOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmdbXQogICAgICogQHBocHN0YW4tdmFyIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlICRkZW5vbWluYXRvclVuaXRzOwoKICAgIC8qKgogICAgICogSW5pdGlhbGl6ZSBudW1iZXIKICAgICAqCiAgICAgKiBAcGFyYW0gaW50fGZsb2F0ICAgICAgICRkaW1lbnNpb24KICAgICAqIEBwYXJhbSBzdHJpbmdbXXxzdHJpbmcgJG51bWVyYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gICAgICAgICRkZW5vbWluYXRvclVuaXRzCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxzdHJpbmc+fHN0cmluZyAkbnVtZXJhdG9yVW5pdHMKICAgICAqIEBwaHBzdGFuLXBhcmFtIGxpc3Q8c3RyaW5nPiAgICAgICAgJGRlbm9taW5hdG9yVW5pdHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkaW1lbnNpb24sICRudW1lcmF0b3JVbml0cywgYXJyYXkgJGRlbm9taW5hdG9yVW5pdHMgPSBbXSkKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRudW1lcmF0b3JVbml0cykpIHsKICAgICAgICAgICAgJG51bWVyYXRvclVuaXRzID0gJG51bWVyYXRvclVuaXRzID8gWyRudW1lcmF0b3JVbml0c10gOiBbXTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJG51bWVyYXRvclVuaXRzWydudW1lcmF0b3JfdW5pdHMnXSwgJG51bWVyYXRvclVuaXRzWydkZW5vbWluYXRvcl91bml0cyddKSkgewogICAgICAgICAgICAvLyBUT0RPIGdldCByaWQgb2YgdGhpcyBvbmNlIGAkbnVtYmVyWzJdYCBpcyBub3QgdXNlZCBhbnltb3JlCiAgICAgICAgICAgICRkZW5vbWluYXRvclVuaXRzID0gJG51bWVyYXRvclVuaXRzWydkZW5vbWluYXRvcl91bml0cyddOwogICAgICAgICAgICAkbnVtZXJhdG9yVW5pdHMgPSAkbnVtZXJhdG9yVW5pdHNbJ251bWVyYXRvcl91bml0cyddOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmRpbWVuc2lvbiA9ICRkaW1lbnNpb247CiAgICAgICAgJHRoaXMtPm51bWVyYXRvclVuaXRzID0gJG51bWVyYXRvclVuaXRzOwogICAgICAgICR0aGlzLT5kZW5vbWluYXRvclVuaXRzID0gJGRlbm9taW5hdG9yVW5pdHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGZsb2F0fGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGltZW5zaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRpbWVuc2lvbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE51bWVyYXRvclVuaXRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bWVyYXRvclVuaXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGVub21pbmF0b3JVbml0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kZW5vbWluYXRvclVuaXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEV4aXN0cygkb2Zmc2V0KQogICAgewogICAgICAgIGlmICgkb2Zmc2V0ID09PSAtMykgewogICAgICAgICAgICByZXR1cm4gISBcaXNfbnVsbCgkdGhpcy0+c291cmNlQ29sdW1uKTsKICAgICAgICB9CgogICAgICAgIGlmICgkb2Zmc2V0ID09PSAtMikgewogICAgICAgICAgICByZXR1cm4gISBcaXNfbnVsbCgkdGhpcy0+c291cmNlTGluZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRvZmZzZXQgPT09IC0xIHx8CiAgICAgICAgICAgICRvZmZzZXQgPT09IDAgfHwKICAgICAgICAgICAgJG9mZnNldCA9PT0gMSB8fAogICAgICAgICAgICAkb2Zmc2V0ID09PSAyCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRHZXQoJG9mZnNldCkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRvZmZzZXQpIHsKICAgICAgICAgICAgY2FzZSAtMzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlQ29sdW1uOwoKICAgICAgICAgICAgY2FzZSAtMjoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlTGluZTsKCiAgICAgICAgICAgIGNhc2UgLTE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZUluZGV4OwoKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgcmV0dXJuIFR5cGU6OlRfTlVNQkVSOwoKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kaW1lbnNpb247CgogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkoJ251bWVyYXRvcl91bml0cycgPT4gJHRoaXMtPm51bWVyYXRvclVuaXRzLCAnZGVub21pbmF0b3JfdW5pdHMnID0+ICR0aGlzLT5kZW5vbWluYXRvclVuaXRzKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0U2V0KCRvZmZzZXQsICR2YWx1ZSkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oJ051bWJlciBpcyBpbW11dGFibGUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRVbnNldCgkb2Zmc2V0KQogICAgewogICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbignTnVtYmVyIGlzIGltbXV0YWJsZScpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgaXMgdW5pdGxlc3MKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuaXRsZXNzKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNvdW50KCR0aGlzLT5udW1lcmF0b3JVbml0cykgPT09IDAgJiYgXGNvdW50KCR0aGlzLT5kZW5vbWluYXRvclVuaXRzKSA9PT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgbnVtYmVyIGhhcyBhbnkgdW5pdHMKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1VuaXRzKCkKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT51bml0bGVzcygpOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIG51bWJlciBoYXMgZXhhY3RseSB0aGlzIHVuaXQKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNVbml0KCR1bml0KQogICAgewogICAgICAgIHJldHVybiBcY291bnQoJHRoaXMtPm51bWVyYXRvclVuaXRzKSA9PT0gMSAmJiBcY291bnQoJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpID09PSAwICYmICR0aGlzLT5udW1lcmF0b3JVbml0c1swXSA9PT0gJHVuaXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHVuaXQocykgYXMgdGhlIHByb2R1Y3Qgb2YgbnVtZXJhdG9yIHVuaXRzIGRpdmlkZWQgYnkgdGhlIHByb2R1Y3Qgb2YgZGVub21pbmF0b3IgdW5pdHMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5pdFN0cigpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpnZXRVbml0U3RyaW5nKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGZsb2F0fGludCAkbWluCiAgICAgKiBAcGFyYW0gZmxvYXR8aW50ICRtYXgKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXR8aW50CiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbHVlSW5SYW5nZSgkbWluLCAkbWF4LCAkbmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIFV0aWw6OmNoZWNrUmFuZ2UoJycsIG5ldyBSYW5nZSgkbWluLCAkbWF4KSwgJHRoaXMpOwogICAgICAgIH0gY2F0Y2ggKFJhbmdlRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KHNwcmludGYoJ0V4cGVjdGVkICVzIHRvIGJlIHdpdGhpbiAlcyVzIGFuZCAlcyUzJHMuJywgJHRoaXMsICRtaW4sICR0aGlzLT51bml0U3RyKCksICRtYXgpLCAkbmFtZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGZsb2F0fGludCAkbWluCiAgICAgKiBAcGFyYW0gZmxvYXR8aW50ICRtYXgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgJG5hbWUKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgJHVuaXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGZsb2F0fGludAogICAgICogQHRocm93cyBTYXNzU2NyaXB0RXhjZXB0aW9uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWx1ZUluUmFuZ2VXaXRoVW5pdCgkbWluLCAkbWF4LCAkbmFtZSwgJHVuaXQpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIFV0aWw6OmNoZWNrUmFuZ2UoJycsIG5ldyBSYW5nZSgkbWluLCAkbWF4KSwgJHRoaXMpOwogICAgICAgIH0gY2F0Y2ggKFJhbmdlRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KHNwcmludGYoJ0V4cGVjdGVkICVzIHRvIGJlIHdpdGhpbiAlcyVzIGFuZCAlcyUzJHMuJywgJHRoaXMsICRtaW4sICR1bml0LCAkbWF4KSwgJG5hbWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkdmFyTmFtZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0Tm9Vbml0cygkdmFyTmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRocm93IFNhc3NTY3JpcHRFeGNlcHRpb246OmZvckFyZ3VtZW50KHNwcmludGYoJ0V4cGVjdGVkICVzIHRvIGhhdmUgbm8gdW5pdHMuJywgJHRoaXMpLCAkdmFyTmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJHVuaXQKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkdmFyTmFtZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0VW5pdCgkdW5pdCwgJHZhck5hbWUgPSBudWxsKQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzVW5pdCgkdW5pdCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgU2Fzc1NjcmlwdEV4Y2VwdGlvbjo6Zm9yQXJndW1lbnQoc3ByaW50ZignRXhwZWN0ZWQgJXMgdG8gaGF2ZSB1bml0ICIlcyIuJywgJHRoaXMsICR1bml0KSwgJHZhck5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFzc2VydFNhbWVVbml0T3JVbml0bGVzcyhOdW1iZXIgJG90aGVyKQogICAgewogICAgICAgIGlmICgkb3RoZXItPnVuaXRsZXNzKCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5udW1lcmF0b3JVbml0cyA9PT0gJG90aGVyLT5udW1lcmF0b3JVbml0cyAmJiAkdGhpcy0+ZGVub21pbmF0b3JVbml0cyA9PT0gJG90aGVyLT5kZW5vbWluYXRvclVuaXRzKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBTYXNzU2NyaXB0RXhjZXB0aW9uKHNwcmludGYoCiAgICAgICAgICAgICdJbmNvbXBhdGlibGUgdW5pdHMgJXMgYW5kICVzLicsCiAgICAgICAgICAgIHNlbGY6OmdldFVuaXRTdHJpbmcoJHRoaXMtPm51bWVyYXRvclVuaXRzLCAkdGhpcy0+ZGVub21pbmF0b3JVbml0cyksCiAgICAgICAgICAgIHNlbGY6OmdldFVuaXRTdHJpbmcoJG90aGVyLT5udW1lcmF0b3JVbml0cywgJG90aGVyLT5kZW5vbWluYXRvclVuaXRzKQogICAgICAgICkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBudW1iZXIsIGNvbnZlcnRlZCB0byB0aGUgdW5pdHMgcmVwcmVzZW50ZWQgYnkgJG5ld051bWVyYXRvclVuaXRzIGFuZCAkbmV3RGVub21pbmF0b3JVbml0cy4KICAgICAqCiAgICAgKiBUaGlzIGRvZXMgbm90IHRocm93IGFuIGVycm9yIGlmIHRoaXMgbnVtYmVyIGlzIHVuaXRsZXNzIGFuZAogICAgICogJG5ld051bWVyYXRvclVuaXRzLyRuZXdEZW5vbWluYXRvclVuaXRzIGFyZSBub3QgZW1wdHksIG9yIHZpY2UgdmVyc2EuIEluc3RlYWQsCiAgICAgKiBpdCB0cmVhdHMgYWxsIHVuaXRsZXNzIG51bWJlcnMgYXMgY29udmVydGlibGUgdG8gYW5kIGZyb20gYWxsIHVuaXRzIHdpdGhvdXQKICAgICAqIGNoYW5naW5nIHRoZSB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG5ld051bWVyYXRvclVuaXRzCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG5ld0Rlbm9taW5hdG9yVW5pdHMKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIGxpc3Q8c3RyaW5nPiAkbmV3TnVtZXJhdG9yVW5pdHMKICAgICAqIEBwaHBzdGFuLXBhcmFtIGxpc3Q8c3RyaW5nPiAkbmV3RGVub21pbmF0b3JVbml0cwogICAgICoKICAgICAqIEB0aHJvd3MgU2Fzc1NjcmlwdEV4Y2VwdGlvbiBpZiB0aGlzIG51bWJlcidzIHVuaXRzIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoICRuZXdOdW1lcmF0b3JVbml0cyBhbmQgJG5ld0Rlbm9taW5hdG9yVW5pdHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvZXJjZShhcnJheSAkbmV3TnVtZXJhdG9yVW5pdHMsIGFycmF5ICRuZXdEZW5vbWluYXRvclVuaXRzKQogICAgewogICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCR0aGlzLT52YWx1ZUluVW5pdHMoJG5ld051bWVyYXRvclVuaXRzLCAkbmV3RGVub21pbmF0b3JVbml0cyksICRuZXdOdW1lcmF0b3JVbml0cywgJG5ld0Rlbm9taW5hdG9yVW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzQ29tcGFyYWJsZVRvKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT51bml0bGVzcygpIHx8ICRvdGhlci0+dW5pdGxlc3MoKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0aGlzLT5ncmVhdGVyVGhhbigkb3RoZXIpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChTYXNzU2NyaXB0RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGVzc1RoYW4oTnVtYmVyICRvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvZXJjZVVuaXRzKCRvdGhlciwgZnVuY3Rpb24gKCRudW0xLCAkbnVtMikgewogICAgICAgICAgICByZXR1cm4gJG51bTEgPCAkbnVtMjsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBOdW1iZXIgJG90aGVyCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsZXNzVGhhbk9yRXF1YWwoTnVtYmVyICRvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvZXJjZVVuaXRzKCRvdGhlciwgZnVuY3Rpb24gKCRudW0xLCAkbnVtMikgewogICAgICAgICAgICByZXR1cm4gJG51bTEgPD0gJG51bTI7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ3JlYXRlclRoYW4oTnVtYmVyICRvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvZXJjZVVuaXRzKCRvdGhlciwgZnVuY3Rpb24gKCRudW0xLCAkbnVtMikgewogICAgICAgICAgICByZXR1cm4gJG51bTEgPiAkbnVtMjsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBOdW1iZXIgJG90aGVyCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBncmVhdGVyVGhhbk9yRXF1YWwoTnVtYmVyICRvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvZXJjZVVuaXRzKCRvdGhlciwgZnVuY3Rpb24gKCRudW0xLCAkbnVtMikgewogICAgICAgICAgICByZXR1cm4gJG51bTEgPj0gJG51bTI7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gTnVtYmVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwbHVzKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2VyY2VOdW1iZXIoJG90aGVyLCBmdW5jdGlvbiAoJG51bTEsICRudW0yKSB7CiAgICAgICAgICAgIHJldHVybiAkbnVtMSArICRudW0yOwogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWludXMoTnVtYmVyICRvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvZXJjZU51bWJlcigkb3RoZXIsIGZ1bmN0aW9uICgkbnVtMSwgJG51bTIpIHsKICAgICAgICAgICAgcmV0dXJuICRudW0xIC0gJG51bTI7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5hcnlNaW51cygpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXIoLSR0aGlzLT5kaW1lbnNpb24sICR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE51bWJlciAkb3RoZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIE51bWJlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kdWxvKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb2VyY2VOdW1iZXIoJG90aGVyLCBmdW5jdGlvbiAoJG51bTEsICRudW0yKSB7CiAgICAgICAgICAgIGlmICgkbnVtMiA9PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTkFOOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzdWx0ID0gZm1vZCgkbnVtMSwgJG51bTIpOwoKICAgICAgICAgICAgaWYgKCRyZXN1bHQgPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbnVtMiA8IDAgeG9yICRudW0xIDwgMCkgewogICAgICAgICAgICAgICAgJHJlc3VsdCArPSAkbnVtMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gTnVtYmVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0aW1lcyhOdW1iZXIgJG90aGVyKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bXVsdGlwbHlVbml0cygkdGhpcy0+ZGltZW5zaW9uICogJG90aGVyLT5kaW1lbnNpb24sICR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMsICRvdGhlci0+bnVtZXJhdG9yVW5pdHMsICRvdGhlci0+ZGVub21pbmF0b3JVbml0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gTnVtYmVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZpZGVkQnkoTnVtYmVyICRvdGhlcikKICAgIHsKICAgICAgICBpZiAoJG90aGVyLT5kaW1lbnNpb24gPT0gMCkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmRpbWVuc2lvbiA9PSAwKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBOQU47CiAgICAgICAgICAgIH0gZWxzZWlmICgkdGhpcy0+ZGltZW5zaW9uID4gMCkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gSU5GOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHZhbHVlID0gLUlORjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5kaW1lbnNpb24gLyAkb3RoZXItPmRpbWVuc2lvbjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+bXVsdGlwbHlVbml0cygkdmFsdWUsICR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMsICRvdGhlci0+ZGVub21pbmF0b3JVbml0cywgJG90aGVyLT5udW1lcmF0b3JVbml0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICRvdGhlcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKE51bWJlciAkb3RoZXIpCiAgICB7CiAgICAgICAgLy8gVW5pdGxlc3MgbnVtYmVycyBhcmUgY29udmVydGFibGUgdG8gdW5pdCBudW1iZXJzLCBidXQgbm90IGVxdWFsLCBzbyB3ZSBzcGVjaWFsLWNhc2UgdW5pdGxlc3MgaGVyZS4KICAgICAgICBpZiAoJHRoaXMtPnVuaXRsZXNzKCkgIT09ICRvdGhlci0+dW5pdGxlc3MoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBJbiBTYXNzLCBuZWl0aGVyIE5hTiBub3IgSW5maW5pdHkgYXJlIGVxdWFsIHRvIHRoZW1zZWx2ZXMsIHdoaWxlIFBIUCBkZWZpbmVzIElORj09SU5GCiAgICAgICAgaWYgKGlzX25hbigkdGhpcy0+ZGltZW5zaW9uKSB8fCBpc19uYW4oJG90aGVyLT5kaW1lbnNpb24pIHx8ICFpc19maW5pdGUoJHRoaXMtPmRpbWVuc2lvbikgfHwgIWlzX2Zpbml0ZSgkb3RoZXItPmRpbWVuc2lvbikpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgIHJldHVybiByb3VuZCgkdGhpcy0+ZGltZW5zaW9uLCBzZWxmOjpQUkVDSVNJT04pID09IHJvdW5kKCRvdGhlci0+ZGltZW5zaW9uLCBzZWxmOjpQUkVDSVNJT04pOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsIGZ1bmN0aW9uICgkbnVtMSwgJG51bTIpIHsKICAgICAgICAgICAgICAgIHJldHVybiByb3VuZCgkbnVtMSxzZWxmOjpQUkVDSVNJT04pID09IHJvdW5kKCRudW0yLCBzZWxmOjpQUkVDSVNJT04pOwogICAgICAgICAgICB9KTsKICAgICAgICB9IGNhdGNoIChTYXNzU2NyaXB0RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBPdXRwdXQgbnVtYmVyCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXIgJGNvbXBpbGVyCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG91dHB1dChDb21waWxlciAkY29tcGlsZXIgPSBudWxsKQogICAgewogICAgICAgICRkaW1lbnNpb24gPSByb3VuZCgkdGhpcy0+ZGltZW5zaW9uLCBzZWxmOjpQUkVDSVNJT04pOwoKICAgICAgICBpZiAoaXNfbmFuKCRkaW1lbnNpb24pKSB7CiAgICAgICAgICAgIHJldHVybiAnTmFOJzsKICAgICAgICB9CgogICAgICAgIGlmICgkZGltZW5zaW9uID09PSBJTkYpIHsKICAgICAgICAgICAgcmV0dXJuICdJbmZpbml0eSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRpbWVuc2lvbiA9PT0gLUlORikgewogICAgICAgICAgICByZXR1cm4gJy1JbmZpbml0eSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbXBpbGVyKSB7CiAgICAgICAgICAgICR1bml0ID0gJHRoaXMtPnVuaXRTdHIoKTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPm51bWVyYXRvclVuaXRzWzBdKSkgewogICAgICAgICAgICAkdW5pdCA9ICR0aGlzLT5udW1lcmF0b3JVbml0c1swXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdW5pdCA9ICcnOwogICAgICAgIH0KCiAgICAgICAgJGRpbWVuc2lvbiA9IG51bWJlcl9mb3JtYXQoJGRpbWVuc2lvbiwgc2VsZjo6UFJFQ0lTSU9OLCAnLicsICcnKTsKCiAgICAgICAgcmV0dXJuIHJ0cmltKHJ0cmltKCRkaW1lbnNpb24sICcwJyksICcuJykgLiAkdW5pdDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3V0cHV0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTnVtYmVyICAgJG90aGVyCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG9wZXJhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gTnVtYmVyCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gY2FsbGFibGUoaW50fGZsb2F0LCBpbnR8ZmxvYXQpOiAoaW50fGZsb2F0KSAkb3BlcmF0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29lcmNlTnVtYmVyKE51bWJlciAkb3RoZXIsICRvcGVyYXRpb24pCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5jb2VyY2VVbml0cygkb3RoZXIsICRvcGVyYXRpb24pOwoKICAgICAgICBpZiAoISR0aGlzLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCRyZXN1bHQsICR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXIoJHJlc3VsdCwgJG90aGVyLT5udW1lcmF0b3JVbml0cywgJG90aGVyLT5kZW5vbWluYXRvclVuaXRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBOdW1iZXIgJG90aGVyCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG9wZXJhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqCiAgICAgKiBAcGhwc3Rhbi10ZW1wbGF0ZSBUCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBjYWxsYWJsZShpbnR8ZmxvYXQsIGludHxmbG9hdCk6IFQgJG9wZXJhdGlvbgogICAgICogQHBocHN0YW4tcmV0dXJuIFQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb2VyY2VVbml0cyhOdW1iZXIgJG90aGVyLCAkb3BlcmF0aW9uKQogICAgewogICAgICAgIGlmICghJHRoaXMtPnVuaXRsZXNzKCkpIHsKICAgICAgICAgICAgJG51bTEgPSAkdGhpcy0+ZGltZW5zaW9uOwogICAgICAgICAgICAkbnVtMiA9ICRvdGhlci0+dmFsdWVJblVuaXRzKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRudW0xID0gJHRoaXMtPnZhbHVlSW5Vbml0cygkb3RoZXItPm51bWVyYXRvclVuaXRzLCAkb3RoZXItPmRlbm9taW5hdG9yVW5pdHMpOwogICAgICAgICAgICAkbnVtMiA9ICRvdGhlci0+ZGltZW5zaW9uOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxjYWxsX3VzZXJfZnVuYygkb3BlcmF0aW9uLCAkbnVtMSwgJG51bTIpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRudW1lcmF0b3JVbml0cwogICAgICogQHBhcmFtIHN0cmluZ1tdICRkZW5vbWluYXRvclVuaXRzCiAgICAgKgogICAgICogQHJldHVybiBpbnR8ZmxvYXQKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJG51bWVyYXRvclVuaXRzCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJGRlbm9taW5hdG9yVW5pdHMKICAgICAqCiAgICAgKiBAdGhyb3dzIFNhc3NTY3JpcHRFeGNlcHRpb24gaWYgdGhpcyBudW1iZXIncyB1bml0cyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCAkbnVtZXJhdG9yVW5pdHMgYW5kICRkZW5vbWluYXRvclVuaXRzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsdWVJblVuaXRzKGFycmF5ICRudW1lcmF0b3JVbml0cywgYXJyYXkgJGRlbm9taW5hdG9yVW5pdHMpCiAgICB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+dW5pdGxlc3MoKQogICAgICAgICAgICB8fCAoXGNvdW50KCRudW1lcmF0b3JVbml0cykgPT09IDAgJiYgXGNvdW50KCRkZW5vbWluYXRvclVuaXRzKSA9PT0gMCkKICAgICAgICAgICAgfHwgKCR0aGlzLT5udW1lcmF0b3JVbml0cyA9PT0gJG51bWVyYXRvclVuaXRzICYmICR0aGlzLT5kZW5vbWluYXRvclVuaXRzID09PSAkZGVub21pbmF0b3JVbml0cykKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kaW1lbnNpb247CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+ZGltZW5zaW9uOwogICAgICAgICRvbGROdW1lcmF0b3JzID0gJHRoaXMtPm51bWVyYXRvclVuaXRzOwoKICAgICAgICBmb3JlYWNoICgkbnVtZXJhdG9yVW5pdHMgYXMgJG5ld051bWVyYXRvcikgewogICAgICAgICAgICBmb3JlYWNoICgkb2xkTnVtZXJhdG9ycyBhcyAka2V5ID0+ICRvbGROdW1lcmF0b3IpIHsKICAgICAgICAgICAgICAgICRjb252ZXJzaW9uRmFjdG9yID0gc2VsZjo6Z2V0Q29udmVyc2lvbkZhY3RvcigkbmV3TnVtZXJhdG9yLCAkb2xkTnVtZXJhdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAoXGlzX251bGwoJGNvbnZlcnNpb25GYWN0b3IpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhbHVlICo9ICRjb252ZXJzaW9uRmFjdG9yOwogICAgICAgICAgICAgICAgdW5zZXQoJG9sZE51bWVyYXRvcnNbJGtleV0pOwogICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdJbmNvbXBhdGlibGUgdW5pdHMgJXMgYW5kICVzLicsCiAgICAgICAgICAgICAgICBzZWxmOjpnZXRVbml0U3RyaW5nKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpLAogICAgICAgICAgICAgICAgc2VsZjo6Z2V0VW5pdFN0cmluZygkbnVtZXJhdG9yVW5pdHMsICRkZW5vbWluYXRvclVuaXRzKQogICAgICAgICAgICApKTsKICAgICAgICB9CgogICAgICAgICRvbGREZW5vbWluYXRvcnMgPSAkdGhpcy0+ZGVub21pbmF0b3JVbml0czsKCiAgICAgICAgZm9yZWFjaCAoJGRlbm9taW5hdG9yVW5pdHMgYXMgJG5ld0Rlbm9taW5hdG9yKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRvbGREZW5vbWluYXRvcnMgYXMgJGtleSA9PiAkb2xkRGVub21pbmF0b3IpIHsKICAgICAgICAgICAgICAgICRjb252ZXJzaW9uRmFjdG9yID0gc2VsZjo6Z2V0Q29udmVyc2lvbkZhY3RvcigkbmV3RGVub21pbmF0b3IsICRvbGREZW5vbWluYXRvcik7CgogICAgICAgICAgICAgICAgaWYgKFxpc19udWxsKCRjb252ZXJzaW9uRmFjdG9yKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR2YWx1ZSAvPSAkY29udmVyc2lvbkZhY3RvcjsKICAgICAgICAgICAgICAgIHVuc2V0KCRvbGREZW5vbWluYXRvcnNbJGtleV0pOwogICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhyb3cgbmV3IFNhc3NTY3JpcHRFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdJbmNvbXBhdGlibGUgdW5pdHMgJXMgYW5kICVzLicsCiAgICAgICAgICAgICAgICBzZWxmOjpnZXRVbml0U3RyaW5nKCR0aGlzLT5udW1lcmF0b3JVbml0cywgJHRoaXMtPmRlbm9taW5hdG9yVW5pdHMpLAogICAgICAgICAgICAgICAgc2VsZjo6Z2V0VW5pdFN0cmluZygkbnVtZXJhdG9yVW5pdHMsICRkZW5vbWluYXRvclVuaXRzKQogICAgICAgICAgICApKTsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJG9sZE51bWVyYXRvcnMpIHx8IFxjb3VudCgkb2xkRGVub21pbmF0b3JzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgU2Fzc1NjcmlwdEV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAgICAgJ0luY29tcGF0aWJsZSB1bml0cyAlcyBhbmQgJXMuJywKICAgICAgICAgICAgICAgIHNlbGY6OmdldFVuaXRTdHJpbmcoJHRoaXMtPm51bWVyYXRvclVuaXRzLCAkdGhpcy0+ZGVub21pbmF0b3JVbml0cyksCiAgICAgICAgICAgICAgICBzZWxmOjpnZXRVbml0U3RyaW5nKCRudW1lcmF0b3JVbml0cywgJGRlbm9taW5hdG9yVW5pdHMpCiAgICAgICAgICAgICkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnR8ZmxvYXQgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG51bWVyYXRvcnMxCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJGRlbm9taW5hdG9yczEKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkbnVtZXJhdG9yczIKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkZGVub21pbmF0b3JzMgogICAgICoKICAgICAqIEByZXR1cm4gTnVtYmVyCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxzdHJpbmc+ICRudW1lcmF0b3JzMQogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxzdHJpbmc+ICRkZW5vbWluYXRvcnMxCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJG51bWVyYXRvcnMyCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJGRlbm9taW5hdG9yczIKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBtdWx0aXBseVVuaXRzKCR2YWx1ZSwgYXJyYXkgJG51bWVyYXRvcnMxLCBhcnJheSAkZGVub21pbmF0b3JzMSwgYXJyYXkgJG51bWVyYXRvcnMyLCBhcnJheSAkZGVub21pbmF0b3JzMikKICAgIHsKICAgICAgICAkbmV3TnVtZXJhdG9ycyA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCRudW1lcmF0b3JzMSBhcyAkbnVtZXJhdG9yKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkZW5vbWluYXRvcnMyIGFzICRrZXkgPT4gJGRlbm9taW5hdG9yKSB7CiAgICAgICAgICAgICAgICAkY29udmVyc2lvbkZhY3RvciA9IHNlbGY6OmdldENvbnZlcnNpb25GYWN0b3IoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAoXGlzX251bGwoJGNvbnZlcnNpb25GYWN0b3IpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhbHVlIC89ICRjb252ZXJzaW9uRmFjdG9yOwogICAgICAgICAgICAgICAgdW5zZXQoJGRlbm9taW5hdG9yczJbJGtleV0pOwogICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5ld051bWVyYXRvcnNbXSA9ICRudW1lcmF0b3I7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkbnVtZXJhdG9yczIgYXMgJG51bWVyYXRvcikgewogICAgICAgICAgICBmb3JlYWNoICgkZGVub21pbmF0b3JzMSBhcyAka2V5ID0+ICRkZW5vbWluYXRvcikgewogICAgICAgICAgICAgICAgJGNvbnZlcnNpb25GYWN0b3IgPSBzZWxmOjpnZXRDb252ZXJzaW9uRmFjdG9yKCRudW1lcmF0b3IsICRkZW5vbWluYXRvcik7CgogICAgICAgICAgICAgICAgaWYgKFxpc19udWxsKCRjb252ZXJzaW9uRmFjdG9yKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR2YWx1ZSAvPSAkY29udmVyc2lvbkZhY3RvcjsKICAgICAgICAgICAgICAgIHVuc2V0KCRkZW5vbWluYXRvcnMxWyRrZXldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRuZXdOdW1lcmF0b3JzW10gPSAkbnVtZXJhdG9yOwogICAgICAgIH0KCiAgICAgICAgJG5ld0Rlbm9taW5hdG9ycyA9IGFycmF5X3ZhbHVlcyhhcnJheV9tZXJnZSgkZGVub21pbmF0b3JzMSwgJGRlbm9taW5hdG9yczIpKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXIoJHZhbHVlLCAkbmV3TnVtZXJhdG9ycywgJG5ld0Rlbm9taW5hdG9ycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgW3VuaXQxXXMgcGVyIFt1bml0Ml0uCiAgICAgKgogICAgICogRXF1aXZhbGVudGx5LCBgMXVuaXQxICogY29udmVyc2lvbkZhY3Rvcih1bml0MSwgdW5pdDIpID0gMXVuaXQyYC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0MQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdDIKICAgICAqCiAgICAgKiBAcmV0dXJuIGZsb2F0fGludHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldENvbnZlcnNpb25GYWN0b3IoJHVuaXQxLCAkdW5pdDIpCiAgICB7CiAgICAgICAgaWYgKCR1bml0MSA9PT0gJHVuaXQyKSB7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoc3RhdGljOjokdW5pdFRhYmxlIGFzICR1bml0VmFyaWFudHMpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR1bml0VmFyaWFudHNbJHVuaXQxXSkgJiYgaXNzZXQoJHVuaXRWYXJpYW50c1skdW5pdDJdKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR1bml0VmFyaWFudHNbJHVuaXQxXSAvICR1bml0VmFyaWFudHNbJHVuaXQyXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHVuaXQocykgYXMgdGhlIHByb2R1Y3Qgb2YgbnVtZXJhdG9yIHVuaXRzIGRpdmlkZWQgYnkgdGhlIHByb2R1Y3Qgb2YgZGVub21pbmF0b3IgdW5pdHMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG51bWVyYXRvcnMKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkZGVub21pbmF0b3JzCiAgICAgKgogICAgICogQHBocHN0YW4tcGFyYW0gbGlzdDxzdHJpbmc+ICRudW1lcmF0b3JzCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBsaXN0PHN0cmluZz4gJGRlbm9taW5hdG9ycwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFVuaXRTdHJpbmcoYXJyYXkgJG51bWVyYXRvcnMsIGFycmF5ICRkZW5vbWluYXRvcnMpCiAgICB7CiAgICAgICAgaWYgKCFcY291bnQoJG51bWVyYXRvcnMpKSB7CiAgICAgICAgICAgIGlmIChcY291bnQoJGRlbm9taW5hdG9ycykgPT09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAnbm8gdW5pdHMnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXGNvdW50KCRkZW5vbWluYXRvcnMpID09PSAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGRlbm9taW5hdG9yc1swXSAuICdeLTEnOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJygnIC4gaW1wbG9kZSgnKicsICRkZW5vbWluYXRvcnMpIC4gJyleLTEnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJyonLCAkbnVtZXJhdG9ycykgLiAoXGNvdW50KCRkZW5vbWluYXRvcnMpID8gJy8nIC4gaW1wbG9kZSgnKicsICRkZW5vbWluYXRvcnMpIDogJycpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/OutputStyle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7CgpmaW5hbCBjbGFzcyBPdXRwdXRTdHlsZQp7CiAgICBjb25zdCBFWFBBTkRFRCA9ICdleHBhbmRlZCc7CiAgICBjb25zdCBDT01QUkVTU0VEID0gJ2NvbXByZXNzZWQnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xBdFJvb3RCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xDYWxsYWJsZUJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXENvbnRlbnRCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xEaXJlY3RpdmVCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xFYWNoQmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQmxvY2tcRWxzZUJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXEVsc2VpZkJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXEZvckJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXElmQmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQmxvY2tcTWVkaWFCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxCbG9ja1xOZXN0ZWRQcm9wZXJ0eUJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrXFdoaWxlQmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxMb2dnZXJcTG9nZ2VySW50ZXJmYWNlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXExvZ2dlclxRdWlldExvZ2dlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxOb2RlXE51bWJlcjsKCi8qKgogKiBQYXJzZXIKICoKICogQGF1dGhvciBMZWFmIENvcmNvcmFuIDxsZWFmb3RAZ21haWwuY29tPgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIFBhcnNlcgp7CiAgICBjb25zdCBTT1VSQ0VfSU5ERVggID0gLTE7CiAgICBjb25zdCBTT1VSQ0VfTElORSAgID0gLTI7CiAgICBjb25zdCBTT1VSQ0VfQ09MVU1OID0gLTM7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgaW50PgogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRwcmVjZWRlbmNlID0gWwogICAgICAgICc9JyAgID0+IDAsCiAgICAgICAgJ29yJyAgPT4gMSwKICAgICAgICAnYW5kJyA9PiAyLAogICAgICAgICc9PScgID0+IDMsCiAgICAgICAgJyE9JyAgPT4gMywKICAgICAgICAnPD0nICA9PiA0LAogICAgICAgICc+PScgID0+IDQsCiAgICAgICAgJzwnICAgPT4gNCwKICAgICAgICAnPicgICA9PiA0LAogICAgICAgICcrJyAgID0+IDUsCiAgICAgICAgJy0nICAgPT4gNSwKICAgICAgICAnKicgICA9PiA2LAogICAgICAgICcvJyAgID0+IDYsCiAgICAgICAgJyUnICAgPT4gNiwKICAgIF07CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRjb21tZW50UGF0dGVybjsKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkb3BlcmF0b3JQYXR0ZXJuOwogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICR3aGl0ZVBhdHRlcm47CgogICAgLyoqCiAgICAgKiBAdmFyIENhY2hlfG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRjYWNoZTsKCiAgICBwcml2YXRlICRzb3VyY2VOYW1lOwogICAgcHJpdmF0ZSAkc291cmNlSW5kZXg7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8aW50LCBpbnQ+CiAgICAgKi8KICAgIHByaXZhdGUgJHNvdXJjZVBvc2l0aW9uczsKICAgIC8qKgogICAgICogVGhlIGN1cnJlbnQgb2Zmc2V0IGluIHRoZSBidWZmZXIKICAgICAqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRjb3VudDsKICAgIC8qKgogICAgICogQHZhciBCbG9ja3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGVudjsKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGluUGFyZW5zOwogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSAkZWF0V2hpdGVEZWZhdWx0OwogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSAkZGlzY2FyZENvbW1lbnRzOwogICAgcHJpdmF0ZSAkYWxsb3dWYXJzOwogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRidWZmZXI7CiAgICBwcml2YXRlICR1dGY4OwogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGVuY29kaW5nOwogICAgcHJpdmF0ZSAkcGF0dGVybk1vZGlmaWVyczsKICAgIHByaXZhdGUgJGNvbW1lbnRzU2VlbjsKCiAgICBwcml2YXRlICRjc3NPbmx5OwoKICAgIC8qKgogICAgICogQHZhciBMb2dnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkbG9nZ2VyOwoKICAgIC8qKgogICAgICogQ29uc3RydWN0b3IKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRzb3VyY2VOYW1lCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgJHNvdXJjZUluZGV4CiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJGVuY29kaW5nCiAgICAgKiBAcGFyYW0gQ2FjaGV8bnVsbCAgICAgICAgICAgJGNhY2hlCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgICAgJGNzc09ubHkKICAgICAqIEBwYXJhbSBMb2dnZXJJbnRlcmZhY2V8bnVsbCAkbG9nZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc291cmNlTmFtZSwgJHNvdXJjZUluZGV4ID0gMCwgJGVuY29kaW5nID0gJ3V0Zi04JywgQ2FjaGUgJGNhY2hlID0gbnVsbCwgJGNzc09ubHkgPSBmYWxzZSwgTG9nZ2VySW50ZXJmYWNlICRsb2dnZXIgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5zb3VyY2VOYW1lICAgICAgID0gJHNvdXJjZU5hbWUgPzogJyhzdGRpbiknOwogICAgICAgICR0aGlzLT5zb3VyY2VJbmRleCAgICAgID0gJHNvdXJjZUluZGV4OwogICAgICAgICR0aGlzLT51dGY4ICAgICAgICAgICAgID0gISAkZW5jb2RpbmcgfHwgc3RydG9sb3dlcigkZW5jb2RpbmcpID09PSAndXRmLTgnOwogICAgICAgICR0aGlzLT5wYXR0ZXJuTW9kaWZpZXJzID0gJHRoaXMtPnV0ZjggPyAnQWlzdScgOiAnQWlzJzsKICAgICAgICAkdGhpcy0+Y29tbWVudHNTZWVuICAgICA9IFtdOwogICAgICAgICR0aGlzLT5hbGxvd1ZhcnMgICAgICAgID0gdHJ1ZTsKICAgICAgICAkdGhpcy0+Y3NzT25seSAgICAgICAgICA9ICRjc3NPbmx5OwogICAgICAgICR0aGlzLT5sb2dnZXIgPSAkbG9nZ2VyID86IG5ldyBRdWlldExvZ2dlcigpOwoKICAgICAgICBpZiAoZW1wdHkoc3RhdGljOjokb3BlcmF0b3JQYXR0ZXJuKSkgewogICAgICAgICAgICBzdGF0aWM6OiRvcGVyYXRvclBhdHRlcm4gPSAnKFsqXC8lKy1dfFshPV1cPXxcPlw9P3xcPFw9P3xhbmR8b3IpJzsKCiAgICAgICAgICAgICRjb21tZW50U2luZ2xlICAgICAgPSAnXC9cLyc7CiAgICAgICAgICAgICRjb21tZW50TXVsdGlMZWZ0ICAgPSAnXC9cKic7CiAgICAgICAgICAgICRjb21tZW50TXVsdGlSaWdodCAgPSAnXCpcLyc7CgogICAgICAgICAgICBzdGF0aWM6OiRjb21tZW50UGF0dGVybiA9ICRjb21tZW50TXVsdGlMZWZ0IC4gJy4qPycgLiAkY29tbWVudE11bHRpUmlnaHQ7CiAgICAgICAgICAgIHN0YXRpYzo6JHdoaXRlUGF0dGVybiA9ICR0aGlzLT51dGY4CiAgICAgICAgICAgICAgICA/ICcvJyAuICRjb21tZW50U2luZ2xlIC4gJ1teXG5dKlxzKnwoJyAuIHN0YXRpYzo6JGNvbW1lbnRQYXR0ZXJuIC4gJylccyp8XHMrL0Fpc3VTJwogICAgICAgICAgICAgICAgOiAnLycgLiAkY29tbWVudFNpbmdsZSAuICdbXlxuXSpccyp8KCcgLiBzdGF0aWM6OiRjb21tZW50UGF0dGVybiAuICcpXHMqfFxzKy9BaXNTJzsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jYWNoZSA9ICRjYWNoZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBzb3VyY2UgZmlsZSBuYW1lCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTb3VyY2VOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZU5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaHJvdyBwYXJzZXIgZXJyb3IKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbXNnCiAgICAgKgogICAgICogQHBocHN0YW4tcmV0dXJuIG5ldmVyLXJldHVybgogICAgICoKICAgICAqIEB0aHJvd3MgUGFyc2VyRXhjZXB0aW9uCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgdXNlICJwYXJzZUVycm9yIiBhbmQgdGhyb3cgdGhlIGV4Y2VwdGlvbiBpbiB0aGUgY2FsbGVyIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0aHJvd1BhcnNlRXJyb3IoJG1zZyA9ICdwYXJzZSBlcnJvcicpCiAgICB7CiAgICAgICAgQHRyaWdnZXJfZXJyb3IoCiAgICAgICAgICAgICdUaGUgbWV0aG9kICJ0aHJvd1BhcnNlRXJyb3IiIGlzIGRlcHJlY2F0ZWQuIFVzZSAicGFyc2VFcnJvciIgYW5kIHRocm93IHRoZSBleGNlcHRpb24gaW4gdGhlIGNhbGxlciBpbnN0ZWFkJywKICAgICAgICAgICAgRV9VU0VSX0RFUFJFQ0FURUQKICAgICAgICApOwoKICAgICAgICB0aHJvdyAkdGhpcy0+cGFyc2VFcnJvcigkbXNnKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBwYXJzZXIgZXJyb3IKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbXNnCiAgICAgKgogICAgICogQHJldHVybiBQYXJzZXJFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlRXJyb3IoJG1zZyA9ICdwYXJzZSBlcnJvcicpCiAgICB7CiAgICAgICAgbGlzdCgkbGluZSwgJGNvbHVtbikgPSAkdGhpcy0+Z2V0U291cmNlUG9zaXRpb24oJHRoaXMtPmNvdW50KTsKCiAgICAgICAgJGxvYyA9IGVtcHR5KCR0aGlzLT5zb3VyY2VOYW1lKQogICAgICAgICAgICAgPyAibGluZTogJGxpbmUsIGNvbHVtbjogJGNvbHVtbiIKICAgICAgICAgICAgIDogIiR0aGlzLT5zb3VyY2VOYW1lIG9uIGxpbmUgJGxpbmUsIGF0IGNvbHVtbiAkY29sdW1uIjsKCiAgICAgICAgaWYgKCR0aGlzLT5wZWVrKCcoLio/KShcbnwkKScsICRtLCAkdGhpcy0+Y291bnQpKSB7CiAgICAgICAgICAgICR0aGlzLT5yZXN0b3JlRW5jb2RpbmcoKTsKCiAgICAgICAgICAgICRlID0gbmV3IFBhcnNlckV4Y2VwdGlvbigiJG1zZzogZmFpbGVkIGF0IGAkbVsxXWAgJGxvYyIpOwogICAgICAgICAgICAkZS0+c2V0U291cmNlUG9zaXRpb24oWyR0aGlzLT5zb3VyY2VOYW1lLCAkbGluZSwgJGNvbHVtbl0pOwoKICAgICAgICAgICAgcmV0dXJuICRlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnJlc3RvcmVFbmNvZGluZygpOwoKICAgICAgICAkZSA9IG5ldyBQYXJzZXJFeGNlcHRpb24oIiRtc2c6ICRsb2MiKTsKICAgICAgICAkZS0+c2V0U291cmNlUG9zaXRpb24oWyR0aGlzLT5zb3VyY2VOYW1lLCAkbGluZSwgJGNvbHVtbl0pOwoKICAgICAgICByZXR1cm4gJGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXIgYnVmZmVyCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJ1ZmZlcgogICAgICoKICAgICAqIEByZXR1cm4gQmxvY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlKCRidWZmZXIpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jYWNoZSkgewogICAgICAgICAgICAkY2FjaGVLZXkgPSAkdGhpcy0+c291cmNlTmFtZSAuICc6JyAuIG1kNSgkYnVmZmVyKTsKICAgICAgICAgICAgJHBhcnNlT3B0aW9ucyA9IFsKICAgICAgICAgICAgICAgICd1dGY4JyA9PiAkdGhpcy0+dXRmOCwKICAgICAgICAgICAgXTsKICAgICAgICAgICAgJHYgPSAkdGhpcy0+Y2FjaGUtPmdldENhY2hlKCdwYXJzZScsICRjYWNoZUtleSwgJHBhcnNlT3B0aW9ucyk7CgogICAgICAgICAgICBpZiAoISBcaXNfbnVsbCgkdikpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gc3RyaXAgQk9NIChieXRlIG9yZGVyIG1hcmtlcikKICAgICAgICBpZiAoc3Vic3RyKCRidWZmZXIsIDAsIDMpID09PSAiXHhlZlx4YmJceGJmIikgewogICAgICAgICAgICAkYnVmZmVyID0gc3Vic3RyKCRidWZmZXIsIDMpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmJ1ZmZlciAgICAgICAgICA9IHJ0cmltKCRidWZmZXIsICJceDAwLi5ceDFmIik7CiAgICAgICAgJHRoaXMtPmNvdW50ICAgICAgICAgICA9IDA7CiAgICAgICAgJHRoaXMtPmVudiAgICAgICAgICAgICA9IG51bGw7CiAgICAgICAgJHRoaXMtPmluUGFyZW5zICAgICAgICA9IGZhbHNlOwogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSB0cnVlOwoKICAgICAgICAkdGhpcy0+c2F2ZUVuY29kaW5nKCk7CiAgICAgICAgJHRoaXMtPmV4dHJhY3RMaW5lTnVtYmVycygkYnVmZmVyKTsKCiAgICAgICAgJHRoaXMtPnB1c2hCbG9jayhudWxsKTsgLy8gcm9vdCBibG9jawogICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgJHRoaXMtPnB1c2hCbG9jayhudWxsKTsKICAgICAgICAkdGhpcy0+cG9wQmxvY2soKTsKCiAgICAgICAgd2hpbGUgKCR0aGlzLT5wYXJzZUNodW5rKCkpIHsKICAgICAgICAgICAgOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5jb3VudCAhPT0gXHN0cmxlbigkdGhpcy0+YnVmZmVyKSkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+cGFyc2VFcnJvcigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgZW1wdHkoJHRoaXMtPmVudi0+cGFyZW50KSkgewogICAgICAgICAgICB0aHJvdyAkdGhpcy0+cGFyc2VFcnJvcigndW5jbG9zZWQgYmxvY2snKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5yZXN0b3JlRW5jb2RpbmcoKTsKICAgICAgICBhc3NlcnQoJHRoaXMtPmVudiAhPT0gbnVsbCk7CgogICAgICAgIGlmICgkdGhpcy0+Y2FjaGUpIHsKICAgICAgICAgICAgJHRoaXMtPmNhY2hlLT5zZXRDYWNoZSgncGFyc2UnLCAkY2FjaGVLZXksICR0aGlzLT5lbnYsICRwYXJzZU9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5lbnY7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhIHZhbHVlIG9yIHZhbHVlIGxpc3QKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAkYnVmZmVyCiAgICAgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlVmFsdWUoJGJ1ZmZlciwgJiRvdXQpCiAgICB7CiAgICAgICAgJHRoaXMtPmNvdW50ICAgICAgICAgICA9IDA7CiAgICAgICAgJHRoaXMtPmVudiAgICAgICAgICAgICA9IG51bGw7CiAgICAgICAgJHRoaXMtPmluUGFyZW5zICAgICAgICA9IGZhbHNlOwogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSB0cnVlOwogICAgICAgICR0aGlzLT5idWZmZXIgICAgICAgICAgPSAoc3RyaW5nKSAkYnVmZmVyOwoKICAgICAgICAkdGhpcy0+c2F2ZUVuY29kaW5nKCk7CiAgICAgICAgJHRoaXMtPmV4dHJhY3RMaW5lTnVtYmVycygkdGhpcy0+YnVmZmVyKTsKCiAgICAgICAgJGxpc3QgPSAkdGhpcy0+dmFsdWVMaXN0KCRvdXQpOwoKICAgICAgICAkdGhpcy0+cmVzdG9yZUVuY29kaW5nKCk7CgogICAgICAgIHJldHVybiAkbGlzdDsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGEgc2VsZWN0b3Igb3Igc2VsZWN0b3IgbGlzdAogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICRidWZmZXIKICAgICAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJG91dAogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAkc2hvdWxkVmFsaWRhdGUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlU2VsZWN0b3IoJGJ1ZmZlciwgJiRvdXQsICRzaG91bGRWYWxpZGF0ZSA9IHRydWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNvdW50ICAgICAgICAgICA9IDA7CiAgICAgICAgJHRoaXMtPmVudiAgICAgICAgICAgICA9IG51bGw7CiAgICAgICAgJHRoaXMtPmluUGFyZW5zICAgICAgICA9IGZhbHNlOwogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSB0cnVlOwogICAgICAgICR0aGlzLT5idWZmZXIgICAgICAgICAgPSAoc3RyaW5nKSAkYnVmZmVyOwoKICAgICAgICAkdGhpcy0+c2F2ZUVuY29kaW5nKCk7CiAgICAgICAgJHRoaXMtPmV4dHJhY3RMaW5lTnVtYmVycygkdGhpcy0+YnVmZmVyKTsKCiAgICAgICAgLy8gZGlzY2FyZCBzcGFjZS9jb21tZW50cyBhdCB0aGUgc3RhcnQKICAgICAgICAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzID0gdHJ1ZTsKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICR0aGlzLT5kaXNjYXJkQ29tbWVudHMgPSBmYWxzZTsKCiAgICAgICAgJHNlbGVjdG9yID0gJHRoaXMtPnNlbGVjdG9ycygkb3V0KTsKCiAgICAgICAgJHRoaXMtPnJlc3RvcmVFbmNvZGluZygpOwoKICAgICAgICBpZiAoJHNob3VsZFZhbGlkYXRlICYmICR0aGlzLT5jb3VudCAhPT0gc3RybGVuKCRidWZmZXIpKSB7CiAgICAgICAgICAgIHRocm93ICR0aGlzLT5wYXJzZUVycm9yKCJgIiAuIHN1YnN0cigkYnVmZmVyLCAkdGhpcy0+Y291bnQpIC4gImAgaXMgbm90IGEgdmFsaWQgU2VsZWN0b3IgaW4gYCRidWZmZXJgIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNlbGVjdG9yOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSBtZWRpYSBRdWVyeQogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRidWZmZXIKICAgICAqIEBwYXJhbSBhcnJheSAgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VNZWRpYVF1ZXJ5TGlzdCgkYnVmZmVyLCAmJG91dCkKICAgIHsKICAgICAgICAkdGhpcy0+Y291bnQgICAgICAgICAgID0gMDsKICAgICAgICAkdGhpcy0+ZW52ICAgICAgICAgICAgID0gbnVsbDsKICAgICAgICAkdGhpcy0+aW5QYXJlbnMgICAgICAgID0gZmFsc2U7CiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9IHRydWU7CiAgICAgICAgJHRoaXMtPmJ1ZmZlciAgICAgICAgICA9IChzdHJpbmcpICRidWZmZXI7CgogICAgICAgICR0aGlzLT5zYXZlRW5jb2RpbmcoKTsKICAgICAgICAkdGhpcy0+ZXh0cmFjdExpbmVOdW1iZXJzKCR0aGlzLT5idWZmZXIpOwoKICAgICAgICAkaXNNZWRpYVF1ZXJ5ID0gJHRoaXMtPm1lZGlhUXVlcnlMaXN0KCRvdXQpOwoKICAgICAgICAkdGhpcy0+cmVzdG9yZUVuY29kaW5nKCk7CgogICAgICAgIHJldHVybiAkaXNNZWRpYVF1ZXJ5OwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSBzaW5nbGUgY2h1bmsgb2ZmIHRoZSBoZWFkIG9mIHRoZSBidWZmZXIgYW5kIGFwcGVuZCBpdCB0byB0aGUKICAgICAqIGN1cnJlbnQgcGFyc2UgZW52aXJvbm1lbnQuCiAgICAgKgogICAgICogUmV0dXJucyBmYWxzZSB3aGVuIHRoZSBidWZmZXIgaXMgZW1wdHksIG9yIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCiAgICAgKgogICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCB0aGUgZW50aXJlIGRvY3VtZW50IGlzCiAgICAgKiBwYXJzZWQuCiAgICAgKgogICAgICogVGhpcyBwYXJzZXIgaXMgbW9zdCBzaW1pbGFyIHRvIGEgcmVjdXJzaXZlIGRlc2NlbnQgcGFyc2VyLiBTaW5nbGUKICAgICAqIGZ1bmN0aW9ucyByZXByZXNlbnQgZGlzY3JldGUgZ3JhbW1hdGljYWwgcnVsZXMgZm9yIHRoZSBsYW5ndWFnZSwgYW5kCiAgICAgKiB0aGV5IGFyZSBhYmxlIHRvIGNhcHR1cmUgdGhlIHRleHQgdGhhdCByZXByZXNlbnRzIHRob3NlIHJ1bGVzLgogICAgICoKICAgICAqIENvbnNpZGVyIHRoZSBmdW5jdGlvbiBDb21waWxlcjo6a2V5d29yZCgpLiAoQWxsIHBhcnNlIGZ1bmN0aW9ucyBhcmUKICAgICAqIHN0cnVjdHVyZWQgdGhlIHNhbWUuKQogICAgICoKICAgICAqIFRoZSBmdW5jdGlvbiB0YWtlcyBhIHNpbmdsZSByZWZlcmVuY2UgYXJndW1lbnQuIFdoZW4gY2FsbGluZyB0aGUKICAgICAqIGZ1bmN0aW9uIGl0IHdpbGwgYXR0ZW1wdCB0byBtYXRjaCBhIGtleXdvcmQgb24gdGhlIGhlYWQgb2YgdGhlIGJ1ZmZlci4KICAgICAqIElmIGl0IGlzIHN1Y2Nlc3NmdWwsIGl0IHdpbGwgcGxhY2UgdGhlIGtleXdvcmQgaW4gdGhlIHJlZmVyZW5jZWQKICAgICAqIGFyZ3VtZW50LCBhZHZhbmNlIHRoZSBwb3NpdGlvbiBpbiB0aGUgYnVmZmVyLCBhbmQgcmV0dXJuIHRydWUuIElmIGl0CiAgICAgKiBmYWlscyB0aGVuIGl0IHdvbid0IGFkdmFuY2UgdGhlIGJ1ZmZlciBhbmQgaXQgd2lsbCByZXR1cm4gZmFsc2UuCiAgICAgKgogICAgICogQWxsIG9mIHRoZXNlIHBhcnNlIGZ1bmN0aW9ucyBhcmUgcG93ZXJlZCBieSBDb21waWxlcjo6bWF0Y2goKSwgd2hpY2ggYmVoYXZlcwogICAgICogdGhlIHNhbWUgd2F5LCBidXQgdGFrZXMgYSBsaXRlcmFsIHJlZ3VsYXIgZXhwcmVzc2lvbi4gU29tZXRpbWVzIGl0IGlzCiAgICAgKiBtb3JlIGNvbnZlbmllbnQgdG8gdXNlIG1hdGNoIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgZnVuY3Rpb24uCiAgICAgKgogICAgICogQmVjYXVzZSBvZiB0aGUgZm9ybWF0IG9mIHRoZSBmdW5jdGlvbnMsIHRvIHBhcnNlIGFuIGVudGlyZSBzdHJpbmcgb2YKICAgICAqIGdyYW1tYXRpY2FsIHJ1bGVzLCB5b3UgY2FuIGNoYWluIHRoZW0gdG9nZXRoZXIgdXNpbmcgJiYuCiAgICAgKgogICAgICogQnV0LCBpZiBzb21lIG9mIHRoZSBydWxlcyBpbiB0aGUgY2hhaW4gc3VjY2VlZCBiZWZvcmUgb25lIGZhaWxzLCB0aGVuCiAgICAgKiB0aGUgYnVmZmVyIHBvc2l0aW9uIHdpbGwgYmUgbGVmdCBhdCBhbiBpbnZhbGlkIHN0YXRlLiBJbiBvcmRlciB0bwogICAgICogYXZvaWQgdGhpcywgQ29tcGlsZXI6OnNlZWsoKSBpcyB1c2VkIHRvIHJlbWVtYmVyIGFuZCBzZXQgYnVmZmVyIHBvc2l0aW9ucy4KICAgICAqCiAgICAgKiBCZWZvcmUgcGFyc2luZyBhIGNoYWluLCB1c2UgJHMgPSAkdGhpcy0+Y291bnQgdG8gcmVtZW1iZXIgdGhlIGN1cnJlbnQKICAgICAqIHBvc2l0aW9uIGludG8gJHMuIFRoZW4gaWYgYSBjaGFpbiBmYWlscywgdXNlICR0aGlzLT5zZWVrKCRzKSB0bwogICAgICogZ28gYmFjayB3aGVyZSB3ZSBzdGFydGVkLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFyc2VDaHVuaygpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CgogICAgICAgIC8vIHRoZSBkaXJlY3RpdmVzCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkgJiYgJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnRdID09PSAnQCcpIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ0BhdC1yb290JywgOCkgJiYKICAgICAgICAgICAgICAgICgkdGhpcy0+c2VsZWN0b3JzKCRzZWxlY3RvcikgfHwgdHJ1ZSkgJiYKICAgICAgICAgICAgICAgICgkdGhpcy0+bWFwKCR3aXRoKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgKCgkdGhpcy0+bWF0Y2hDaGFyKCcoJykgJiYKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW50ZXJwb2xhdGlvbigkd2l0aCkgJiYKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykpIHx8IHRydWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgISAkdGhpcy0+Y3NzT25seSB8fCAkdGhpcy0+YXNzZXJ0UGxhaW5Dc3NWYWxpZChmYWxzZSwgJHMpOwoKICAgICAgICAgICAgICAgICRhdFJvb3QgPSBuZXcgQXRSb290QmxvY2soKTsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlclB1c2hlZEJsb2NrKCRhdFJvb3QsICRzKTsKICAgICAgICAgICAgICAgICRhdFJvb3QtPnNlbGVjdG9yID0gJHNlbGVjdG9yOwogICAgICAgICAgICAgICAgJGF0Um9vdC0+d2l0aCAgICAgPSAkd2l0aDsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ0BtZWRpYScsIDYpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWVkaWFRdWVyeUxpc3QoJG1lZGlhUXVlcnlMaXN0KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigneycsIGZhbHNlKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRtZWRpYSA9IG5ldyBNZWRpYUJsb2NrKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+cmVnaXN0ZXJQdXNoZWRCbG9jaygkbWVkaWEsICRzKTsKICAgICAgICAgICAgICAgICRtZWRpYS0+cXVlcnlMaXN0ID0gJG1lZGlhUXVlcnlMaXN0WzJdOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQG1peGluJywgNikgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5rZXl3b3JkKCRtaXhpbk5hbWUpICYmCiAgICAgICAgICAgICAgICAoJHRoaXMtPmFyZ3VtZW50RGVmKCRhcmdzKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigneycsIGZhbHNlKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICEgJHRoaXMtPmNzc09ubHkgfHwgJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoZmFsc2UsICRzKTsKCiAgICAgICAgICAgICAgICAkbWl4aW4gPSBuZXcgQ2FsbGFibGVCbG9jayhUeXBlOjpUX01JWElOKTsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlclB1c2hlZEJsb2NrKCRtaXhpbiwgJHMpOwogICAgICAgICAgICAgICAgJG1peGluLT5uYW1lID0gJG1peGluTmFtZTsKICAgICAgICAgICAgICAgICRtaXhpbi0+YXJncyA9ICRhcmdzOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoJHRoaXMtPmxpdGVyYWwoJ0BpbmNsdWRlJywgOCkgJiYKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+a2V5d29yZCgkbWl4aW5OYW1lKSAmJgogICAgICAgICAgICAgICAgICAgICgkdGhpcy0+bWF0Y2hDaGFyKCcoJykgJiYKICAgICAgICAgICAgICAgICAgICAoJHRoaXMtPmFyZ1ZhbHVlcygkYXJnVmFsdWVzKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgICAgICgkdGhpcy0+ZW5kKCkpIHx8CiAgICAgICAgICAgICAgICAoJHRoaXMtPmxpdGVyYWwoJ3VzaW5nJywgNSkgJiYKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YXJndW1lbnREZWYoJGFyZ1VzaW5nKSAmJgogICAgICAgICAgICAgICAgICAgICgkdGhpcy0+ZW5kKCkgfHwgJHRoaXMtPm1hdGNoQ2hhcigneycpICYmICRoYXNCbG9jayA9IHRydWUpKSB8fAogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigneycpICYmICRoYXNCbG9jayA9IHRydWUpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgISAkdGhpcy0+Y3NzT25seSB8fCAkdGhpcy0+YXNzZXJ0UGxhaW5Dc3NWYWxpZChmYWxzZSwgJHMpOwoKICAgICAgICAgICAgICAgICRjaGlsZCA9IFsKICAgICAgICAgICAgICAgICAgICBUeXBlOjpUX0lOQ0xVREUsCiAgICAgICAgICAgICAgICAgICAgJG1peGluTmFtZSwKICAgICAgICAgICAgICAgICAgICBpc3NldCgkYXJnVmFsdWVzKSA/ICRhcmdWYWx1ZXMgOiBudWxsLAogICAgICAgICAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICAgICAgICAgaXNzZXQoJGFyZ1VzaW5nKSA/ICRhcmdVc2luZyA6IG51bGwKICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgaWYgKCEgZW1wdHkoJGhhc0Jsb2NrKSkgewogICAgICAgICAgICAgICAgICAgICRpbmNsdWRlID0gbmV3IENvbnRlbnRCbG9jaygpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlclB1c2hlZEJsb2NrKCRpbmNsdWRlLCAkcyk7CiAgICAgICAgICAgICAgICAgICAgJGluY2x1ZGUtPmNoaWxkID0gJGNoaWxkOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKCRjaGlsZCwgJHMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQHNjc3NwaHAtaW1wb3J0LW9uY2UnLCAyMCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT52YWx1ZUxpc3QoJGltcG9ydFBhdGgpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+ZW5kKCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlLCAkcyk7CgogICAgICAgICAgICAgICAgbGlzdCgkbGluZSwgJGNvbHVtbikgPSAkdGhpcy0+Z2V0U291cmNlUG9zaXRpb24oJHMpOwogICAgICAgICAgICAgICAgJGZpbGUgPSAkdGhpcy0+c291cmNlTmFtZTsKICAgICAgICAgICAgICAgICR0aGlzLT5sb2dnZXItPndhcm4oIlRoZSBcIkBzY3NzcGhwLWltcG9ydC1vbmNlXCIgZGlyZWN0aXZlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBTY3NzUGhwIDIuMCwgaW4gXCIkZmlsZVwiLCBsaW5lICRsaW5lLCBjb2x1bW4gJGNvbHVtbi4iLCB0cnVlKTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKFtUeXBlOjpUX1NDU1NQSFBfSU1QT1JUX09OQ0UsICRpbXBvcnRQYXRoXSwgJHMpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQGltcG9ydCcsIDcpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+dmFsdWVMaXN0KCRpbXBvcnRQYXRoKSAmJgogICAgICAgICAgICAgICAgJGltcG9ydFBhdGhbMF0gIT09IFR5cGU6OlRfRlVOQ1RJT05fQ0FMTCAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmVuZCgpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5jc3NPbmx5KSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoW1R5cGU6OlRfSU1QT1JULCAkaW1wb3J0UGF0aF0sICRzKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKFtUeXBlOjpUX0NPTU1FTlQsIHJ0cmltKHN1YnN0cigkdGhpcy0+YnVmZmVyLCAkcywgJHRoaXMtPmNvdW50IC0gJHMpKV0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfSU1QT1JULCAkaW1wb3J0UGF0aF0sICRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ0BpbXBvcnQnLCA3KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPnVybCgkaW1wb3J0UGF0aCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5lbmQoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Y3NzT25seSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKFtUeXBlOjpUX0lNUE9SVCwgJGltcG9ydFBhdGhdLCAkcyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9DT01NRU5ULCBydHJpbShzdWJzdHIoJHRoaXMtPmJ1ZmZlciwgJHMsICR0aGlzLT5jb3VudCAtICRzKSldKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKFtUeXBlOjpUX0lNUE9SVCwgJGltcG9ydFBhdGhdLCAkcyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdAZXh0ZW5kJywgNykgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5zZWxlY3RvcnMoJHNlbGVjdG9ycykgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5lbmQoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICEgJHRoaXMtPmNzc09ubHkgfHwgJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoZmFsc2UsICRzKTsKCiAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgJyFmbGFnJwogICAgICAgICAgICAgICAgJG9wdGlvbmFsID0gJHRoaXMtPnN0cmlwT3B0aW9uYWxGbGFnKCRzZWxlY3RvcnMpOwogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9FWFRFTkQsICRzZWxlY3RvcnMsICRvcHRpb25hbF0sICRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ0BmdW5jdGlvbicsIDkpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+a2V5d29yZCgkZm5OYW1lKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmFyZ3VtZW50RGVmKCRhcmdzKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigneycsIGZhbHNlKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICEgJHRoaXMtPmNzc09ubHkgfHwgJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoZmFsc2UsICRzKTsKCiAgICAgICAgICAgICAgICAkZnVuYyA9IG5ldyBDYWxsYWJsZUJsb2NrKFR5cGU6OlRfRlVOQ1RJT04pOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlZ2lzdGVyUHVzaGVkQmxvY2soJGZ1bmMsICRzKTsKICAgICAgICAgICAgICAgICRmdW5jLT5uYW1lID0gJGZuTmFtZTsKICAgICAgICAgICAgICAgICRmdW5jLT5hcmdzID0gJGFyZ3M7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdAcmV0dXJuJywgNykgJiYKICAgICAgICAgICAgICAgICgkdGhpcy0+dmFsdWVMaXN0KCRyZXRWYWwpIHx8IHRydWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+ZW5kKCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlLCAkcyk7CgogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9SRVRVUk4sIGlzc2V0KCRyZXRWYWwpID8gJHJldFZhbCA6IFtUeXBlOjpUX05VTExdXSwgJHMpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQGVhY2gnLCA1KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmdlbmVyaWNMaXN0KCR2YXJOYW1lcywgJ3ZhcmlhYmxlJywgJywnLCBmYWxzZSkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdpbicsIDIpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+dmFsdWVMaXN0KCRsaXN0KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigneycsIGZhbHNlKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICEgJHRoaXMtPmNzc09ubHkgfHwgJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoZmFsc2UsICRzKTsKCiAgICAgICAgICAgICAgICAkZWFjaCA9IG5ldyBFYWNoQmxvY2soKTsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlclB1c2hlZEJsb2NrKCRlYWNoLCAkcyk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhck5hbWVzWzJdIGFzICR2YXJOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgJGVhY2gtPnZhcnNbXSA9ICR2YXJOYW1lWzFdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRlYWNoLT5saXN0ID0gJGxpc3Q7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdAd2hpbGUnLCA2KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24oJGNvbmQpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgISAkdGhpcy0+Y3NzT25seSB8fCAkdGhpcy0+YXNzZXJ0UGxhaW5Dc3NWYWxpZChmYWxzZSwgJHMpOwoKICAgICAgICAgICAgICAgIHdoaWxlICgKICAgICAgICAgICAgICAgICAgICAkY29uZFswXSA9PT0gVHlwZTo6VF9MSVNUICYmCiAgICAgICAgICAgICAgICAgICAgISBlbXB0eSgkY29uZFsnZW5jbG9zaW5nJ10pICYmCiAgICAgICAgICAgICAgICAgICAgJGNvbmRbJ2VuY2xvc2luZyddID09PSAncGFyZW50JyAmJgogICAgICAgICAgICAgICAgICAgIFxjb3VudCgkY29uZFsyXSkgPT0gMQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbmQgPSByZXNldCgkY29uZFsyXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHdoaWxlID0gbmV3IFdoaWxlQmxvY2soKTsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlclB1c2hlZEJsb2NrKCR3aGlsZSwgJHMpOwogICAgICAgICAgICAgICAgJHdoaWxlLT5jb25kID0gJGNvbmQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdAZm9yJywgNCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT52YXJpYWJsZSgkdmFyTmFtZSkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdmcm9tJywgNCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5leHByZXNzaW9uKCRzdGFydCkgJiYKICAgICAgICAgICAgICAgICgkdGhpcy0+bGl0ZXJhbCgndGhyb3VnaCcsIDcpIHx8CiAgICAgICAgICAgICAgICAgICAgKCRmb3JVbnRpbCA9IHRydWUgJiYgJHRoaXMtPmxpdGVyYWwoJ3RvJywgMikpKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24oJGVuZCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJ3snLCBmYWxzZSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlLCAkcyk7CgogICAgICAgICAgICAgICAgJGZvciA9IG5ldyBGb3JCbG9jaygpOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlZ2lzdGVyUHVzaGVkQmxvY2soJGZvciwgJHMpOwogICAgICAgICAgICAgICAgJGZvci0+dmFyICAgPSAkdmFyTmFtZVsxXTsKICAgICAgICAgICAgICAgICRmb3ItPnN0YXJ0ID0gJHN0YXJ0OwogICAgICAgICAgICAgICAgJGZvci0+ZW5kICAgPSAkZW5kOwogICAgICAgICAgICAgICAgJGZvci0+dW50aWwgPSBpc3NldCgkZm9yVW50aWwpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQGlmJywgMykgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5mdW5jdGlvbkNhbGxBcmd1bWVudHNMaXN0KCRjb25kLCBmYWxzZSwgJ3snLCBmYWxzZSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlLCAkcyk7CgogICAgICAgICAgICAgICAgJGlmID0gbmV3IElmQmxvY2soKTsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlclB1c2hlZEJsb2NrKCRpZiwgJHMpOwoKICAgICAgICAgICAgICAgIHdoaWxlICgKICAgICAgICAgICAgICAgICAgICAkY29uZFswXSA9PT0gVHlwZTo6VF9MSVNUICYmCiAgICAgICAgICAgICAgICAgICAgISBlbXB0eSgkY29uZFsnZW5jbG9zaW5nJ10pICYmCiAgICAgICAgICAgICAgICAgICAgJGNvbmRbJ2VuY2xvc2luZyddID09PSAncGFyZW50JyAmJgogICAgICAgICAgICAgICAgICAgIFxjb3VudCgkY29uZFsyXSkgPT0gMQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbmQgPSByZXNldCgkY29uZFsyXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGlmLT5jb25kICA9ICRjb25kOwogICAgICAgICAgICAgICAgJGlmLT5jYXNlcyA9IFtdOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQGRlYnVnJywgNikgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5mdW5jdGlvbkNhbGxBcmd1bWVudHNMaXN0KCR2YWx1ZSwgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgISAkdGhpcy0+Y3NzT25seSB8fCAkdGhpcy0+YXNzZXJ0UGxhaW5Dc3NWYWxpZChmYWxzZSwgJHMpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfREVCVUcsICR2YWx1ZV0sICRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ0B3YXJuJywgNSkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5mdW5jdGlvbkNhbGxBcmd1bWVudHNMaXN0KCR2YWx1ZSwgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgISAkdGhpcy0+Y3NzT25seSB8fCAkdGhpcy0+YXNzZXJ0UGxhaW5Dc3NWYWxpZChmYWxzZSwgJHMpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfV0FSTiwgJHZhbHVlXSwgJHMpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQGVycm9yJywgNikgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5mdW5jdGlvbkNhbGxBcmd1bWVudHNMaXN0KCR2YWx1ZSwgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgISAkdGhpcy0+Y3NzT25seSB8fCAkdGhpcy0+YXNzZXJ0UGxhaW5Dc3NWYWxpZChmYWxzZSwgJHMpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfRVJST1IsICR2YWx1ZV0sICRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ0Bjb250ZW50JywgOCkgJiYKICAgICAgICAgICAgICAgICgkdGhpcy0+ZW5kKCkgfHwKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcoJykgJiYKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YXJnVmFsdWVzKCRhcmdDb250ZW50KSAmJgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKSAmJgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lbmQoKSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlLCAkcyk7CgogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9NSVhJTl9DT05URU5ULCBpc3NldCgkYXJnQ29udGVudCkgPyAkYXJnQ29udGVudCA6IG51bGxdLCAkcyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgICRsYXN0ID0gJHRoaXMtPmxhc3QoKTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkbGFzdCkgJiYgJGxhc3RbMF0gPT09IFR5cGU6OlRfSUYpIHsKICAgICAgICAgICAgICAgIGxpc3QoLCAkaWYpID0gJGxhc3Q7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGlmIGluc3RhbmNlb2YgSWZCbG9jayk7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAZWxzZScsIDUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJ3snLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsc2UgPSBuZXcgRWxzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnaWYnLCAyKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnVuY3Rpb25DYWxsQXJndW1lbnRzTGlzdCgkY29uZCwgZmFsc2UsICd7JywgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbHNlID0gbmV3IEVsc2VpZkJsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbHNlLT5jb25kID0gJGNvbmQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlclB1c2hlZEJsb2NrKCRlbHNlLCAkcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZi0+Y2FzZXNbXSA9ICRlbHNlOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gb25seSByZXRhaW4gdGhlIGZpcnN0IEBjaGFyc2V0IGRpcmVjdGl2ZSBlbmNvdW50ZXJlZAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQGNoYXJzZXQnLCA4KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPnZhbHVlTGlzdCgkY2hhcnNldCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5lbmQoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnQHN1cHBvcnRzJywgOSkgJiYKICAgICAgICAgICAgICAgICgkdDEgPSAkdGhpcy0+c3VwcG9ydHNRdWVyeSgkc3VwcG9ydFF1ZXJ5KSkgJiYKICAgICAgICAgICAgICAgICgkdDIgPSAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRkaXJlY3RpdmUgPSBuZXcgRGlyZWN0aXZlQmxvY2soKTsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWdpc3RlclB1c2hlZEJsb2NrKCRkaXJlY3RpdmUsICRzKTsKICAgICAgICAgICAgICAgICRkaXJlY3RpdmUtPm5hbWUgID0gJ3N1cHBvcnRzJzsKICAgICAgICAgICAgICAgICRkaXJlY3RpdmUtPnZhbHVlID0gJHN1cHBvcnRRdWVyeTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgLy8gZG9lc24ndCBtYXRjaCBidWlsdCBpbiBkaXJlY3RpdmUsIGRvIGdlbmVyaWMgb25lCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJ0AnLCBmYWxzZSkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5taXhlZEtleXdvcmQoJGRpck5hbWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+ZGlyZWN0aXZlVmFsdWUoJGRpclZhbHVlLCAneycpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgaWYgKGNvdW50KCRkaXJOYW1lKSA9PT0gMSAmJiBpc19zdHJpbmcocmVzZXQoJGRpck5hbWUpKSkgewogICAgICAgICAgICAgICAgICAgICRkaXJOYW1lID0gcmVzZXQoJGRpck5hbWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZGlyTmFtZSA9IFtUeXBlOjpUX1NUUklORywgJycsICRkaXJOYW1lXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkZGlyTmFtZSA9PT0gJ21lZGlhJykgewogICAgICAgICAgICAgICAgICAgICRkaXJlY3RpdmUgPSBuZXcgTWVkaWFCbG9jaygpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZGlyZWN0aXZlID0gbmV3IERpcmVjdGl2ZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgJGRpcmVjdGl2ZS0+bmFtZSA9ICRkaXJOYW1lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPnJlZ2lzdGVyUHVzaGVkQmxvY2soJGRpcmVjdGl2ZSwgJHMpOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkZGlyVmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgISAkdGhpcy0+Y3NzT25seSB8fCAoJGRpclZhbHVlID0gJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoJGRpclZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgJGRpcmVjdGl2ZS0+dmFsdWUgPSAkZGlyVmFsdWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIC8vIG1heWJlIGl0J3MgYSBnZW5lcmljIGJsb2NrbGVzcyBkaXJlY3RpdmUKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignQCcsIGZhbHNlKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1peGVkS2V5d29yZCgkZGlyTmFtZSkgJiYKICAgICAgICAgICAgICAgICEgJHRoaXMtPmlzS25vd25HZW5lcmljRGlyZWN0aXZlKCRkaXJOYW1lKSAmJgogICAgICAgICAgICAgICAgKCR0aGlzLT5lbmQoZmFsc2UpIHx8ICgkdGhpcy0+ZGlyZWN0aXZlVmFsdWUoJGRpclZhbHVlLCAnJykgJiYgJHRoaXMtPmVuZChmYWxzZSkpKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGlmIChcY291bnQoJGRpck5hbWUpID09PSAxICYmIFxpc19zdHJpbmcoXHJlc2V0KCRkaXJOYW1lKSkpIHsKICAgICAgICAgICAgICAgICAgICAkZGlyTmFtZSA9IFxyZXNldCgkZGlyTmFtZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRkaXJOYW1lID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgJGRpck5hbWVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICEgZW1wdHkoJHRoaXMtPmVudi0+cGFyZW50KSAmJgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lbnYtPnR5cGUgJiYKICAgICAgICAgICAgICAgICAgICAhIFxpbl9hcnJheSgkdGhpcy0+ZW52LT50eXBlLCBbVHlwZTo6VF9ESVJFQ1RJVkUsIFR5cGU6OlRfTUVESUFdKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHBsYWluID0gXHRyaW0oXHN1YnN0cigkdGhpcy0+YnVmZmVyLCAkcywgJHRoaXMtPmNvdW50IC0gJHMpKTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+cGFyc2VFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZGlyZWN0aXZlIGB7JHBsYWlufWAgbm90IGFsbG93ZWQgaW4gYCIgLiAkdGhpcy0+ZW52LT50eXBlIC4gImAgYmxvY2siCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIGJsb2NrbGVzcyBkaXJlY3RpdmVzIHdpdGggYSBibGFuayBsaW5lIGFmdGVyIGtlZXBzIHRoZWlyIGJsYW5rIGxpbmVzIGFmdGVyCiAgICAgICAgICAgICAgICAvLyBzYXNzLXNwZWMgY29tcGxpYW5jZSBwdXJwb3NlCiAgICAgICAgICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICAgICAgICAgICRoYXNCbGFua0xpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2goJ1xzKj9cblxzKlxuJywgJG91dCwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgJGhhc0JsYW5rTGluZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGlzTm90Um9vdCA9ICEgZW1wdHkoJHRoaXMtPmVudi0+cGFyZW50KTsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfRElSRUNUSVZFLCBbJGRpck5hbWUsICRkaXJWYWx1ZSwgJGhhc0JsYW5rTGluZSwgJGlzTm90Um9vdF1dLCAkcyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkaW5Dc3NTZWxlY3RvciA9IG51bGw7CiAgICAgICAgaWYgKCR0aGlzLT5jc3NPbmx5KSB7CiAgICAgICAgICAgICRpbkNzc1NlbGVjdG9yID0gKCEgZW1wdHkoJHRoaXMtPmVudi0+cGFyZW50KSAmJgogICAgICAgICAgICAgICAgISBpbl9hcnJheSgkdGhpcy0+ZW52LT50eXBlLCBbVHlwZTo6VF9ESVJFQ1RJVkUsIFR5cGU6OlRfTUVESUFdKSk7CiAgICAgICAgfQogICAgICAgIC8vIGN1c3RvbSBwcm9wZXJ0aWVzIDogcmlnaHQgcGFydCBpcyBzdGF0aWMKICAgICAgICBpZiAoKCR0aGlzLT5jdXN0b21Qcm9wZXJ0eSgkbmFtZSkgKSAmJiAkdGhpcy0+bWF0Y2hDaGFyKCc6JywgZmFsc2UpKSB7CiAgICAgICAgICAgICRzdGFydCA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgICAgIC8vIGJ1dCBjYW4gYmUgY29tcGxleCBhbmQgZmluaXNoIHdpdGggOyBvciB9CiAgICAgICAgICAgIGZvcmVhY2ggKFsnOycsJ30nXSBhcyAkZW5kaW5nKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm9wZW5TdHJpbmcoJGVuZGluZywgJHN0cmluZ1ZhbHVlLCAnKCcsICcpJywgZmFsc2UpICYmCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVuZCgpCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkZW5kID0gJHRoaXMtPmNvdW50OwogICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRzdHJpbmdWYWx1ZTsKCiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBvbmx5IGEgcGFydGlhbCB2YWx1ZSBkdWUgdG8gbmVzdGVkIFtdIG9yIHsgfSB0byB0YWtlIGluIGFjY291bnQKICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ1BhaXJzID0gW1snWycsICddJ10sIFsneycsICd9J11dOwoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkbmVzdGluZ1BhaXJzIGFzICRuZXN0aW5nUGFpcikgewogICAgICAgICAgICAgICAgICAgICAgICAkcCA9IHN0cnBvcygkdGhpcy0+YnVmZmVyLCAkbmVzdGluZ1BhaXJbMF0sICRzdGFydCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHAgJiYgJHAgPCAkZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2Vlaygkc3RhcnQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+b3BlblN0cmluZygkZW5kaW5nLCAkc3RyaW5nVmFsdWUsICRuZXN0aW5nUGFpclswXSwgJG5lc3RpbmdQYWlyWzFdLCBmYWxzZSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZW5kKCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQgPiAkZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZW5kID0gJHRoaXMtPmNvdW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRzdHJpbmdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJGVuZCk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9DVVNUT01fUFJPUEVSVFksICRuYW1lLCAkdmFsdWVdLCAkcyk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBUT0RPOiBvdXRwdXQgYW4gZXJyb3IgaGVyZSBpZiBub3RoaW5nIGZvdW5kIGFjY29yZGluZyB0byBzYXNzIHNwZWMKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgLy8gcHJvcGVydHkgc2hvcnRjdXQKICAgICAgICAvLyBjYXB0dXJlcyBtb3N0IHByb3BlcnRpZXMgYmVmb3JlIGhhdmluZyB0byBwYXJzZSBhIHNlbGVjdG9yCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+a2V5d29yZCgkbmFtZSwgZmFsc2UpICYmCiAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCc6ICcsIDIpICYmCiAgICAgICAgICAgICR0aGlzLT52YWx1ZUxpc3QoJHZhbHVlKSAmJgogICAgICAgICAgICAkdGhpcy0+ZW5kKCkKICAgICAgICApIHsKICAgICAgICAgICAgJG5hbWUgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJG5hbWVdXTsKICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9BU1NJR04sICRuYW1lLCAkdmFsdWVdLCAkcyk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgLy8gdmFyaWFibGUgYXNzaWducwogICAgICAgIGlmICgKICAgICAgICAgICAgJHRoaXMtPnZhcmlhYmxlKCRuYW1lKSAmJgogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCc6JykgJiYKICAgICAgICAgICAgJHRoaXMtPnZhbHVlTGlzdCgkdmFsdWUpICYmCiAgICAgICAgICAgICR0aGlzLT5lbmQoKQogICAgICAgICkgewogICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlLCAkcyk7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgJyFmbGFnJwogICAgICAgICAgICAkYXNzaWdubWVudEZsYWdzID0gJHRoaXMtPnN0cmlwQXNzaWdubWVudEZsYWdzKCR2YWx1ZSk7CiAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfQVNTSUdOLCAkbmFtZSwgJHZhbHVlLCAkYXNzaWdubWVudEZsYWdzXSwgJHMpOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIC8vIG9wZW5pbmcgY3NzIGJsb2NrCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+c2VsZWN0b3JzKCRzZWxlY3RvcnMpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJ3snLCBmYWxzZSkKICAgICAgICApIHsKICAgICAgICAgICAgISAkdGhpcy0+Y3NzT25seSB8fCAhICRpbkNzc1NlbGVjdG9yIHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlKTsKCiAgICAgICAgICAgICR0aGlzLT5wdXNoQmxvY2soJHNlbGVjdG9ycywgJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5lYXRXaGl0ZURlZmF1bHQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKG51bGwpOyAvLyBjb2xsZWN0IGNvbW1lbnRzIGF0IHRoZSBiZWdpbm5pbmcgaWYgbmVlZGVkCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAvLyBwcm9wZXJ0eSBhc3NpZ24sIG9yIG5lc3RlZCBhc3NpZ24KICAgICAgICBpZiAoCiAgICAgICAgICAgICR0aGlzLT5wcm9wZXJ0eU5hbWUoJG5hbWUpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJzonKQogICAgICAgICkgewogICAgICAgICAgICAkZm91bmRTb21ldGhpbmcgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+dmFsdWVMaXN0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+ZW52LT5wYXJlbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPnBhcnNlRXJyb3IoJ2V4cGVjdGVkICJ7IicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfQVNTSUdOLCAkbmFtZSwgJHZhbHVlXSwgJHMpOwogICAgICAgICAgICAgICAgJGZvdW5kU29tZXRoaW5nID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJ3snLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICEgJHRoaXMtPmNzc09ubHkgfHwgJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoZmFsc2UpOwoKICAgICAgICAgICAgICAgICRwcm9wQmxvY2sgPSBuZXcgTmVzdGVkUHJvcGVydHlCbG9jaygpOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlZ2lzdGVyUHVzaGVkQmxvY2soJHByb3BCbG9jaywgJHMpOwogICAgICAgICAgICAgICAgJHByb3BCbG9jay0+cHJlZml4ID0gJG5hbWU7CiAgICAgICAgICAgICAgICAkcHJvcEJsb2NrLT5oYXNWYWx1ZSA9ICRmb3VuZFNvbWV0aGluZzsKCiAgICAgICAgICAgICAgICAkZm91bmRTb21ldGhpbmcgPSB0cnVlOwogICAgICAgICAgICB9IGVsc2VpZiAoJGZvdW5kU29tZXRoaW5nKSB7CiAgICAgICAgICAgICAgICAkZm91bmRTb21ldGhpbmcgPSAkdGhpcy0+ZW5kKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkZm91bmRTb21ldGhpbmcpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIC8vIGNsb3NpbmcgYSBibG9jawogICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCd9JywgZmFsc2UpKSB7CiAgICAgICAgICAgICRibG9jayA9ICR0aGlzLT5wb3BCbG9jaygpOwoKICAgICAgICAgICAgaWYgKCEgaXNzZXQoJGJsb2NrLT50eXBlKSB8fCAkYmxvY2stPnR5cGUgIT09IFR5cGU6OlRfSUYpIHsKICAgICAgICAgICAgICAgIGFzc2VydCgkdGhpcy0+ZW52ICE9PSBudWxsKTsKCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmVudi0+cGFyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChudWxsKTsgLy8gY29sbGVjdCBjb21tZW50cyBiZWZvcmUgbmV4dCBzdGF0ZW1lbnQgaWYgbmVlZGVkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkYmxvY2sgaW5zdGFuY2VvZiBDb250ZW50QmxvY2spIHsKICAgICAgICAgICAgICAgICRpbmNsdWRlID0gJGJsb2NrLT5jaGlsZDsKICAgICAgICAgICAgICAgIGFzc2VydChcaXNfYXJyYXkoJGluY2x1ZGUpKTsKICAgICAgICAgICAgICAgIHVuc2V0KCRibG9jay0+Y2hpbGQpOwogICAgICAgICAgICAgICAgJGluY2x1ZGVbM10gPSAkYmxvY2s7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKCRpbmNsdWRlLCAkcyk7CiAgICAgICAgICAgIH0gZWxzZWlmICghJGJsb2NrIGluc3RhbmNlb2YgRWxzZUJsb2NrICYmICEkYmxvY2sgaW5zdGFuY2VvZiBFbHNlaWZCbG9jaykgewogICAgICAgICAgICAgICAgJHR5cGUgPSBpc3NldCgkYmxvY2stPnR5cGUpID8gJGJsb2NrLT50eXBlIDogVHlwZTo6VF9CTE9DSzsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoWyR0eXBlLCAkYmxvY2tdLCAkcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGNvbGxlY3QgY29tbWVudHMganVzdCBhZnRlciB0aGUgYmxvY2sgY2xvc2luZyBpZiBuZWVkZWQKICAgICAgICAgICAgaWYgKCR0aGlzLT5lYXRXaGl0ZURlZmF1bHQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICAgICBhc3NlcnQoJHRoaXMtPmVudiAhPT0gbnVsbCk7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5lbnYtPmNvbW1lbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChudWxsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBleHRyYSBzdHVmZgogICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCc7JykpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIGJsb2NrIG9udG8gcGFyc2UgdHJlZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxudWxsICRzZWxlY3RvcnMKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICRwb3MKICAgICAqCiAgICAgKiBAcmV0dXJuIEJsb2NrCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwdXNoQmxvY2soJHNlbGVjdG9ycywgJHBvcyA9IDApCiAgICB7CiAgICAgICAgJGIgPSBuZXcgQmxvY2soKTsKICAgICAgICAkYi0+c2VsZWN0b3JzID0gJHNlbGVjdG9yczsKCiAgICAgICAgJHRoaXMtPnJlZ2lzdGVyUHVzaGVkQmxvY2soJGIsICRwb3MpOwoKICAgICAgICByZXR1cm4gJGI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmxvY2sgJGIKICAgICAqIEBwYXJhbSBpbnQgICAkcG9zCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVnaXN0ZXJQdXNoZWRCbG9jayhCbG9jayAkYiwgJHBvcykKICAgIHsKICAgICAgICBsaXN0KCRsaW5lLCAkY29sdW1uKSA9ICR0aGlzLT5nZXRTb3VyY2VQb3NpdGlvbigkcG9zKTsKCiAgICAgICAgJGItPnNvdXJjZU5hbWUgICA9ICR0aGlzLT5zb3VyY2VOYW1lOwogICAgICAgICRiLT5zb3VyY2VMaW5lICAgPSAkbGluZTsKICAgICAgICAkYi0+c291cmNlQ29sdW1uID0gJGNvbHVtbjsKICAgICAgICAkYi0+c291cmNlSW5kZXggID0gJHRoaXMtPnNvdXJjZUluZGV4OwogICAgICAgICRiLT5jb21tZW50cyAgICAgPSBbXTsKICAgICAgICAkYi0+cGFyZW50ICAgICAgID0gJHRoaXMtPmVudjsKCiAgICAgICAgaWYgKCEgJHRoaXMtPmVudikgewogICAgICAgICAgICAkYi0+Y2hpbGRyZW4gPSBbXTsKICAgICAgICB9IGVsc2VpZiAoZW1wdHkoJHRoaXMtPmVudi0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgICR0aGlzLT5lbnYtPmNoaWxkcmVuID0gJHRoaXMtPmVudi0+Y29tbWVudHM7CiAgICAgICAgICAgICRiLT5jaGlsZHJlbiA9IFtdOwogICAgICAgICAgICAkdGhpcy0+ZW52LT5jb21tZW50cyA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRiLT5jaGlsZHJlbiA9ICR0aGlzLT5lbnYtPmNvbW1lbnRzOwogICAgICAgICAgICAkdGhpcy0+ZW52LT5jb21tZW50cyA9IFtdOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVudiA9ICRiOwoKICAgICAgICAvLyBjb2xsZWN0IGNvbW1lbnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBibG9jayBpZiBuZWVkZWQKICAgICAgICBpZiAoJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICBhc3NlcnQoJHRoaXMtPmVudiAhPT0gbnVsbCk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmVudi0+Y29tbWVudHMpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQobnVsbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIHNwZWNpYWwgKG5hbWVkKSBibG9jayBvbnRvIHBhcnNlIHRyZWUKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICR0eXBlCiAgICAgKiBAcGFyYW0gaW50ICAgICAkcG9zCiAgICAgKgogICAgICogQHJldHVybiBCbG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHVzaFNwZWNpYWxCbG9jaygkdHlwZSwgJHBvcykKICAgIHsKICAgICAgICAkYmxvY2sgPSAkdGhpcy0+cHVzaEJsb2NrKG51bGwsICRwb3MpOwogICAgICAgICRibG9jay0+dHlwZSA9ICR0eXBlOwoKICAgICAgICByZXR1cm4gJGJsb2NrOwogICAgfQoKICAgIC8qKgogICAgICogUG9wIHNjb3BlIGFuZCByZXR1cm4gbGFzdCBibG9jawogICAgICoKICAgICAqIEByZXR1cm4gQmxvY2sKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBvcEJsb2NrKCkKICAgIHsKICAgICAgICBhc3NlcnQoJHRoaXMtPmVudiAhPT0gbnVsbCk7CgogICAgICAgIC8vIGNvbGxlY3QgY29tbWVudHMgZW5kaW5nIGp1c3QgYmVmb3JlIG9mIGEgYmxvY2sgY2xvc2luZwogICAgICAgIGlmICgkdGhpcy0+ZW52LT5jb21tZW50cykgewogICAgICAgICAgICAkdGhpcy0+YXBwZW5kKG51bGwpOwogICAgICAgIH0KCiAgICAgICAgLy8gcG9wIHRoZSBibG9jawogICAgICAgICRibG9jayA9ICR0aGlzLT5lbnY7CgogICAgICAgIGlmIChlbXB0eSgkYmxvY2stPnBhcmVudCkpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPnBhcnNlRXJyb3IoJ3VuZXhwZWN0ZWQgfScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRibG9jay0+dHlwZSA9PSBUeXBlOjpUX0FUX1JPT1QpIHsKICAgICAgICAgICAgLy8ga2VlcHMgdGhlIHBhcmVudCBpbiBjYXNlIG9mIHNlbGYgc2VsZWN0b3IgJgogICAgICAgICAgICAkYmxvY2stPnNlbGZQYXJlbnQgPSAkYmxvY2stPnBhcmVudDsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5lbnYgPSAkYmxvY2stPnBhcmVudDsKCiAgICAgICAgdW5zZXQoJGJsb2NrLT5wYXJlbnQpOwoKICAgICAgICByZXR1cm4gJGJsb2NrOwogICAgfQoKICAgIC8qKgogICAgICogUGVlayBpbnB1dCBzdHJlYW0KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyZWdleAogICAgICogQHBhcmFtIGFycmF5ICAkb3V0CiAgICAgKiBAcGFyYW0gaW50ICAgICRmcm9tCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBlZWsoJHJlZ2V4LCAmJG91dCwgJGZyb20gPSBudWxsKQogICAgewogICAgICAgIGlmICghIGlzc2V0KCRmcm9tKSkgewogICAgICAgICAgICAkZnJvbSA9ICR0aGlzLT5jb3VudDsKICAgICAgICB9CgogICAgICAgICRyID0gJy8nIC4gJHJlZ2V4IC4gJy8nIC4gJHRoaXMtPnBhdHRlcm5Nb2RpZmllcnM7CiAgICAgICAgJHJlc3VsdCA9IHByZWdfbWF0Y2goJHIsICR0aGlzLT5idWZmZXIsICRvdXQsIDAsICRmcm9tKTsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZWVrIHRvIHBvc2l0aW9uIGluIGlucHV0IHN0cmVhbSAob3IgcmV0dXJuIGN1cnJlbnQgcG9zaXRpb24gaW4gaW5wdXQgc3RyZWFtKQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJHdoZXJlCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZWVrKCR3aGVyZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y291bnQgPSAkd2hlcmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgYSBwYXJzZWQgcGFydCBpcyBwbGFpbiBDU1MgVmFsaWQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8ZmFsc2UgJHBhcnNlZAogICAgICogQHBhcmFtIGludCAgICAgICAgICRzdGFydFBvcwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFBhcnNlckV4Y2VwdGlvbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXNzZXJ0UGxhaW5Dc3NWYWxpZCgkcGFyc2VkLCAkc3RhcnRQb3MgPSBudWxsKQogICAgewogICAgICAgICR0eXBlID0gJyc7CiAgICAgICAgaWYgKCRwYXJzZWQpIHsKICAgICAgICAgICAgJHR5cGUgPSAkcGFyc2VkWzBdOwogICAgICAgICAgICAkcGFyc2VkID0gJHRoaXMtPmlzUGxhaW5Dc3NWYWxpZEVsZW1lbnQoJHBhcnNlZCk7CiAgICAgICAgfQogICAgICAgIGlmICghICRwYXJzZWQpIHsKICAgICAgICAgICAgaWYgKCEgXGlzX251bGwoJHN0YXJ0UG9zKSkgewogICAgICAgICAgICAgICAgJHBsYWluID0gcnRyaW0oc3Vic3RyKCR0aGlzLT5idWZmZXIsICRzdGFydFBvcywgJHRoaXMtPmNvdW50IC0gJHN0YXJ0UG9zKSk7CiAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICJFcnJvciA6IGB7JHBsYWlufWAgaXNuJ3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAnRXJyb3I6IFNDU1Mgc3ludGF4IG5vdCBhbGxvd2VkIGluIENTUyBmaWxlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHR5cGUpIHsKICAgICAgICAgICAgICAgICRtZXNzYWdlIC49ICIgKCR0eXBlKSI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgJHRoaXMtPnBhcnNlRXJyb3IoJG1lc3NhZ2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwYXJzZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBhIHBhcnNlZCBlbGVtZW50IGlzIHBsYWluIENTUyBWYWxpZAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkcGFyc2VkCiAgICAgKiBAcGFyYW0gYm9vbCAgJGFsbG93RXhwcmVzc2lvbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8ZmFsc2UKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzUGxhaW5Dc3NWYWxpZEVsZW1lbnQoJHBhcnNlZCwgJGFsbG93RXhwcmVzc2lvbiA9IGZhbHNlKQogICAgewogICAgICAgIC8vIGtlZXAgc3RyaW5nIGFzIGlzCiAgICAgICAgaWYgKGlzX3N0cmluZygkcGFyc2VkKSkgewogICAgICAgICAgICByZXR1cm4gJHBhcnNlZDsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgXGluX2FycmF5KCRwYXJzZWRbMF0sIFtUeXBlOjpUX0ZVTkNUSU9OLCBUeXBlOjpUX0ZVTkNUSU9OX0NBTExdKSAmJgogICAgICAgICAgICAhXGluX2FycmF5KCRwYXJzZWRbMV0sIFsKICAgICAgICAgICAgICAgICdhbHBoYScsCiAgICAgICAgICAgICAgICAnYXR0cicsCiAgICAgICAgICAgICAgICAnY2FsYycsCiAgICAgICAgICAgICAgICAnY3ViaWMtYmV6aWVyJywKICAgICAgICAgICAgICAgICdlbnYnLAogICAgICAgICAgICAgICAgJ2dyYXlzY2FsZScsCiAgICAgICAgICAgICAgICAnaHNsJywKICAgICAgICAgICAgICAgICdoc2xhJywKICAgICAgICAgICAgICAgICdod2InLAogICAgICAgICAgICAgICAgJ2ludmVydCcsCiAgICAgICAgICAgICAgICAnbGluZWFyLWdyYWRpZW50JywKICAgICAgICAgICAgICAgICdtaW4nLAogICAgICAgICAgICAgICAgJ21heCcsCiAgICAgICAgICAgICAgICAncmFkaWFsLWdyYWRpZW50JywKICAgICAgICAgICAgICAgICdyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50JywKICAgICAgICAgICAgICAgICdyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50JywKICAgICAgICAgICAgICAgICdyZ2InLAogICAgICAgICAgICAgICAgJ3JnYmEnLAogICAgICAgICAgICAgICAgJ3JvdGF0ZScsCiAgICAgICAgICAgICAgICAnc2F0dXJhdGUnLAogICAgICAgICAgICAgICAgJ3ZhcicsCiAgICAgICAgICAgIF0pICYmCiAgICAgICAgICAgIENvbXBpbGVyOjppc05hdGl2ZUZ1bmN0aW9uKCRwYXJzZWRbMV0pCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoJHBhcnNlZFswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQkxPQ0s6CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9LRVlXT1JEOgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTlVMTDoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX05VTUJFUjoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX01FRElBOgogICAgICAgICAgICAgICAgcmV0dXJuICRwYXJzZWQ7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQ09NTUVOVDoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkcGFyc2VkWzJdKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAkcGFyc2VkOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0RJUkVDVElWRToKICAgICAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJHBhcnNlZFsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcGFyc2VkWzFdWzFdID0gJHRoaXMtPmlzUGxhaW5Dc3NWYWxpZEVsZW1lbnQoJHBhcnNlZFsxXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEgJHBhcnNlZFsxXVsxXSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkcGFyc2VkOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0lNUE9SVDoKICAgICAgICAgICAgICAgIGlmICgkcGFyc2VkWzFdWzBdID09PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcGFyc2VkWzFdID0gJHRoaXMtPmlzUGxhaW5Dc3NWYWxpZEVsZW1lbnQoJHBhcnNlZFsxXSk7CiAgICAgICAgICAgICAgICBpZiAoJHBhcnNlZFsxXSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHBhcnNlZDsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9TVFJJTkc6CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyc2VkWzJdIGFzICRrID0+ICRzdWJzdHIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRzdWJzdHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJzZWRbMl1bJGtdID0gJHRoaXMtPmlzUGxhaW5Dc3NWYWxpZEVsZW1lbnQoJHN1YnN0cik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghICRwYXJzZWRbMl1bJGtdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHBhcnNlZDsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9MSVNUOgogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkcGFyc2VkWydlbmNsb3NpbmcnXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyc2VkWzJdIGFzICRrID0+ICRsaXN0RWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICRwYXJzZWRbMl1bJGtdID0gJHRoaXMtPmlzUGxhaW5Dc3NWYWxpZEVsZW1lbnQoJGxpc3RFbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICBpZiAoISAkcGFyc2VkWzJdWyRrXSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICRwYXJzZWQ7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQVNTSUdOOgogICAgICAgICAgICAgICAgZm9yZWFjaCAoWzEsIDIsIDNdIGFzICRrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEgZW1wdHkoJHBhcnNlZFska10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJzZWRbJGtdID0gJHRoaXMtPmlzUGxhaW5Dc3NWYWxpZEVsZW1lbnQoJHBhcnNlZFska10pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISAkcGFyc2VkWyRrXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICRwYXJzZWQ7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRVhQUkVTU0lPTjoKICAgICAgICAgICAgICAgIGxpc3QoICwkb3AsICRsaHMsICRyaHMsICRpblBhcmVucywgJHdoaXRlQmVmb3JlLCAkd2hpdGVBZnRlcikgPSAkcGFyc2VkOwogICAgICAgICAgICAgICAgaWYgKCEgJGFsbG93RXhwcmVzc2lvbiAmJiAgISBcaW5fYXJyYXkoJG9wLCBbJ2FuZCcsICdvcicsICcvJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGxocyA9ICR0aGlzLT5pc1BsYWluQ3NzVmFsaWRFbGVtZW50KCRsaHMsIHRydWUpOwogICAgICAgICAgICAgICAgaWYgKCEgJGxocykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyaHMgPSAkdGhpcy0+aXNQbGFpbkNzc1ZhbGlkRWxlbWVudCgkcmhzLCB0cnVlKTsKICAgICAgICAgICAgICAgIGlmICghICRyaHMpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgICBUeXBlOjpUX1NUUklORywKICAgICAgICAgICAgICAgICAgICAnJywgWwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW5QYXJlbnMgPyAnKCcgOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJGxocywKICAgICAgICAgICAgICAgICAgICAgICAgKCR3aGl0ZUJlZm9yZSA/ICcgJyA6ICcnKSAuICRvcCAuICgkd2hpdGVBZnRlciA/ICcgJyA6ICcnKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHJocywKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmluUGFyZW5zID8gJyknIDogJycKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0NVU1RPTV9QUk9QRVJUWToKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1VOQVJZOgogICAgICAgICAgICAgICAgJHBhcnNlZFsyXSA9ICR0aGlzLT5pc1BsYWluQ3NzVmFsaWRFbGVtZW50KCRwYXJzZWRbMl0pOwogICAgICAgICAgICAgICAgaWYgKCEgJHBhcnNlZFsyXSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAkcGFyc2VkOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0ZVTkNUSU9OOgogICAgICAgICAgICAgICAgJGFyZ3NMaXN0ID0gJHBhcnNlZFsyXTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRhcmdzTGlzdFsyXSBhcyAkYXJnRWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgIGlmICghICR0aGlzLT5pc1BsYWluQ3NzVmFsaWRFbGVtZW50KCRhcmdFbGVtZW50KSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICRwYXJzZWQ7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRlVOQ1RJT05fQ0FMTDoKICAgICAgICAgICAgICAgICRwYXJzZWRbMF0gPSBUeXBlOjpUX0ZVTkNUSU9OOwogICAgICAgICAgICAgICAgJGFyZ3NMaXN0ID0gW1R5cGU6OlRfTElTVCwgJywnLCBbXV07CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyc2VkWzJdIGFzICRhcmcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGFyZ1swXSB8fCAhIGVtcHR5KCRhcmdbMl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vIG5hbWVkIGFyZ3VtZW50cyBwb3NzaWJsZSBpbiBhIGNzcyBmdW5jdGlvbiBjYWxsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vciAuLi4gYXJndW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkYXJnID0gJHRoaXMtPmlzUGxhaW5Dc3NWYWxpZEVsZW1lbnQoJGFyZ1sxXSwgJHBhcnNlZFsxXSA9PT0gJ2NhbGMnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoISAkYXJnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGFyZ3NMaXN0WzJdW10gPSAkYXJnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHBhcnNlZFsyXSA9ICRhcmdzTGlzdDsKICAgICAgICAgICAgICAgIHJldHVybiAkcGFyc2VkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogTWF0Y2ggc3RyaW5nIGxvb2tpbmcgZm9yIGVpdGhlciBlbmRpbmcgZGVsaW0sIGVzY2FwZSwgb3Igc3RyaW5nIGludGVycG9sYXRpb24KICAgICAqCiAgICAgKiB7QGludGVybmFsIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBwcmVnX21hdGNoJ3MgMjUwSyBzdHJpbmcgbWF0Y2ggbGltaXQuIH19CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAkbSAgICAgTWF0Y2hlcyAocGFzc2VkIGJ5IHJlZmVyZW5jZSkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRlbGltIERlbGltaXRlcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbCBUcnVlIGlmIG1hdGNoOyBmYWxzZSBvdGhlcndpc2UKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1pbXB1cmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1hdGNoU3RyaW5nKCYkbSwgJGRlbGltKQogICAgewogICAgICAgICR0b2tlbiA9IG51bGw7CgogICAgICAgICRlbmQgPSBcc3RybGVuKCR0aGlzLT5idWZmZXIpOwoKICAgICAgICAvLyBsb29rIGZvciBlaXRoZXIgZW5kaW5nIGRlbGltLCBlc2NhcGUsIG9yIHN0cmluZyBpbnRlcnBvbGF0aW9uCiAgICAgICAgZm9yZWFjaCAoWycjeycsICdcXCcsICJcciIsICRkZWxpbV0gYXMgJGxvb2thaGVhZCkgewogICAgICAgICAgICAkcG9zID0gc3RycG9zKCR0aGlzLT5idWZmZXIsICRsb29rYWhlYWQsICR0aGlzLT5jb3VudCk7CgogICAgICAgICAgICBpZiAoJHBvcyAhPT0gZmFsc2UgJiYgJHBvcyA8ICRlbmQpIHsKICAgICAgICAgICAgICAgICRlbmQgPSAkcG9zOwogICAgICAgICAgICAgICAgJHRva2VuID0gJGxvb2thaGVhZDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCEgaXNzZXQoJHRva2VuKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkbWF0Y2ggPSBzdWJzdHIoJHRoaXMtPmJ1ZmZlciwgJHRoaXMtPmNvdW50LCAkZW5kIC0gJHRoaXMtPmNvdW50KTsKICAgICAgICAkbSA9IFsKICAgICAgICAgICAgJG1hdGNoIC4gJHRva2VuLAogICAgICAgICAgICAkbWF0Y2gsCiAgICAgICAgICAgICR0b2tlbgogICAgICAgIF07CiAgICAgICAgJHRoaXMtPmNvdW50ID0gJGVuZCArIFxzdHJsZW4oJHRva2VuKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcnkgdG8gbWF0Y2ggc29tZXRoaW5nIG9uIGhlYWQgb2YgYnVmZmVyCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcmVnZXgKICAgICAqIEBwYXJhbSBhcnJheSAgJG91dAogICAgICogQHBhcmFtIGJvb2wgICAkZWF0V2hpdGVzcGFjZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWF0Y2goJHJlZ2V4LCAmJG91dCwgJGVhdFdoaXRlc3BhY2UgPSBudWxsKQogICAgewogICAgICAgICRyID0gJy8nIC4gJHJlZ2V4IC4gJy8nIC4gJHRoaXMtPnBhdHRlcm5Nb2RpZmllcnM7CgogICAgICAgIGlmICghIHByZWdfbWF0Y2goJHIsICR0aGlzLT5idWZmZXIsICRvdXQsIDAsICR0aGlzLT5jb3VudCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvdW50ICs9IFxzdHJsZW4oJG91dFswXSk7CgogICAgICAgIGlmICghIGlzc2V0KCRlYXRXaGl0ZXNwYWNlKSkgewogICAgICAgICAgICAkZWF0V2hpdGVzcGFjZSA9ICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGVhdFdoaXRlc3BhY2UpIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogTWF0Y2ggYSBzaW5nbGUgc3RyaW5nCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY2hhcgogICAgICogQHBhcmFtIGJvb2wgICAkZWF0V2hpdGVzcGFjZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWF0Y2hDaGFyKCRjaGFyLCAkZWF0V2hpdGVzcGFjZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCEgaXNzZXQoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnRdKSB8fCAkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudF0gIT09ICRjaGFyKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jb3VudCsrOwoKICAgICAgICBpZiAoISBpc3NldCgkZWF0V2hpdGVzcGFjZSkpIHsKICAgICAgICAgICAgJGVhdFdoaXRlc3BhY2UgPSAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRlYXRXaGl0ZXNwYWNlKSB7CiAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIE1hdGNoIGxpdGVyYWwgc3RyaW5nCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkd2hhdAogICAgICogQHBhcmFtIGludCAgICAkbGVuCiAgICAgKiBAcGFyYW0gYm9vbCAgICRlYXRXaGl0ZXNwYWNlCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHBocHN0YW4taW1wdXJlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaXRlcmFsKCR3aGF0LCAkbGVuLCAkZWF0V2hpdGVzcGFjZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKHN0cmNhc2VjbXAoc3Vic3RyKCR0aGlzLT5idWZmZXIsICR0aGlzLT5jb3VudCwgJGxlbiksICR3aGF0KSAhPT0gMCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y291bnQgKz0gJGxlbjsKCiAgICAgICAgaWYgKCEgaXNzZXQoJGVhdFdoaXRlc3BhY2UpKSB7CiAgICAgICAgICAgICRlYXRXaGl0ZXNwYWNlID0gJHRoaXMtPmVhdFdoaXRlRGVmYXVsdDsKICAgICAgICB9CgogICAgICAgIGlmICgkZWF0V2hpdGVzcGFjZSkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYXRjaCBzb21lIHdoaXRlc3BhY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1pbXB1cmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHdoaXRlc3BhY2UoKQogICAgewogICAgICAgICRnb3RXaGl0ZSA9IGZhbHNlOwoKICAgICAgICB3aGlsZSAocHJlZ19tYXRjaChzdGF0aWM6OiR3aGl0ZVBhdHRlcm4sICR0aGlzLT5idWZmZXIsICRtLCAwLCAkdGhpcy0+Y291bnQpKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkbVsxXSkgJiYgZW1wdHkoJHRoaXMtPmNvbW1lbnRzU2VlblskdGhpcy0+Y291bnRdKSkgewogICAgICAgICAgICAgICAgLy8gY29tbWVudCB0aGF0IGFyZSBrZXB0IGluIHRoZSBvdXRwdXQgQ1NTCiAgICAgICAgICAgICAgICAkY29tbWVudCA9IFtdOwogICAgICAgICAgICAgICAgJHN0YXJ0Q29tbWVudENvdW50ID0gJHRoaXMtPmNvdW50OwogICAgICAgICAgICAgICAgJGVuZENvbW1lbnRDb3VudCA9ICR0aGlzLT5jb3VudCArIFxzdHJsZW4oJG1bMV0pOwoKICAgICAgICAgICAgICAgIC8vIGZpbmQgaW50ZXJwb2xhdGlvbnMgaW4gY29tbWVudAogICAgICAgICAgICAgICAgJHAgPSBzdHJwb3MoJHRoaXMtPmJ1ZmZlciwgJyN7JywgJHRoaXMtPmNvdW50KTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoJHAgIT09IGZhbHNlICYmICRwIDwgJGVuZENvbW1lbnRDb3VudCkgewogICAgICAgICAgICAgICAgICAgICRjICAgICAgICAgICA9IHN1YnN0cigkdGhpcy0+YnVmZmVyLCAkdGhpcy0+Y291bnQsICRwIC0gJHRoaXMtPmNvdW50KTsKICAgICAgICAgICAgICAgICAgICAkY29tbWVudFtdICAgPSAkYzsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQgPSAkcDsKICAgICAgICAgICAgICAgICAgICAkb3V0ICAgICAgICAgPSBudWxsOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmludGVycG9sYXRpb24oJG91dCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8ga2VlcCByaWdodCBzcGFjZXMgaW4gdGhlIGZvbGxvd2luZyBzdHJpbmcgcGFydAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG91dFszXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50IC0gMV0gIT09ICd9JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudC0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXRbM10gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1lbnRbXSA9IFtUeXBlOjpUX0NPTU1FTlQsIHN1YnN0cigkdGhpcy0+YnVmZmVyLCAkcCwgJHRoaXMtPmNvdW50IC0gJHApLCAkb3V0XTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBsaXN0KCRsaW5lLCAkY29sdW1uKSA9ICR0aGlzLT5nZXRTb3VyY2VQb3NpdGlvbigkdGhpcy0+Y291bnQpOwogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5zb3VyY2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5kaXNjYXJkQ29tbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sb2dnZXItPndhcm4oIlVudGVybWluYXRlZCBpbnRlcnBvbGF0aW9ucyBpbiBtdWx0aWxpbmUgY29tbWVudHMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBTY3NzUGhwIDIuMCwgaW4gXCIkZmlsZVwiLCBsaW5lICRsaW5lLCBjb2x1bW4gJGNvbHVtbi4iLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWVudFtdID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsICR0aGlzLT5jb3VudCwgMik7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQgKz0gMjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRwID0gc3RycG9zKCR0aGlzLT5idWZmZXIsICcjeycsICR0aGlzLT5jb3VudCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gcmVtYWluaW5nIHBhcnQKICAgICAgICAgICAgICAgICRjID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsICR0aGlzLT5jb3VudCwgJGVuZENvbW1lbnRDb3VudCAtICR0aGlzLT5jb3VudCk7CgogICAgICAgICAgICAgICAgaWYgKCEgJGNvbW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBzaW5nbGUgcGFydCBzdGF0aWMgY29tbWVudAogICAgICAgICAgICAgICAgICAgICRjb21tZW50U3RhdGVtZW50ID0gW1R5cGU6OlRfQ09NTUVOVCwgJGNdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY29tbWVudFtdID0gJGM7CiAgICAgICAgICAgICAgICAgICAgJHN0YXRpY0NvbW1lbnQgPSBzdWJzdHIoJHRoaXMtPmJ1ZmZlciwgJHN0YXJ0Q29tbWVudENvdW50LCAkZW5kQ29tbWVudENvdW50IC0gJHN0YXJ0Q29tbWVudENvdW50KTsKICAgICAgICAgICAgICAgICAgICAkY29tbWVudFN0YXRlbWVudCA9IFtUeXBlOjpUX0NPTU1FTlQsICRzdGF0aWNDb21tZW50LCBbVHlwZTo6VF9TVFJJTkcsICcnLCAkY29tbWVudF1dOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxpc3QoJGxpbmUsICRjb2x1bW4pID0gJHRoaXMtPmdldFNvdXJjZVBvc2l0aW9uKCRzdGFydENvbW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAkY29tbWVudFN0YXRlbWVudFtzZWxmOjpTT1VSQ0VfTElORV0gPSAkbGluZTsKICAgICAgICAgICAgICAgICRjb21tZW50U3RhdGVtZW50W3NlbGY6OlNPVVJDRV9DT0xVTU5dID0gJGNvbHVtbjsKICAgICAgICAgICAgICAgICRjb21tZW50U3RhdGVtZW50W3NlbGY6OlNPVVJDRV9JTkRFWF0gPSAkdGhpcy0+c291cmNlSW5kZXg7CgogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZENvbW1lbnQoJGNvbW1lbnRTdGF0ZW1lbnQpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5jb21tZW50c1NlZW5bJHN0YXJ0Q29tbWVudENvdW50XSA9IHRydWU7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQgPSAkZW5kQ29tbWVudENvdW50OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gY29tbWVudCB0aGF0IGFyZSBpZ25vcmVkIGFuZCBub3Qga2VwdCBpbiB0aGUgb3V0cHV0IGNzcwogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50ICs9IFxzdHJsZW4oJG1bMF0pOwogICAgICAgICAgICAgICAgLy8gc2lsZW50IGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBwbGFpbiBDU1MgZmlsZXMKICAgICAgICAgICAgICAgICEgJHRoaXMtPmNzc09ubHkKICAgICAgICAgICAgICAgICAgfHwgISBcc3RybGVuKHRyaW0oJG1bMF0pKQogICAgICAgICAgICAgICAgICB8fCAkdGhpcy0+YXNzZXJ0UGxhaW5Dc3NWYWxpZChmYWxzZSwgJHRoaXMtPmNvdW50IC0gXHN0cmxlbigkbVswXSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZ290V2hpdGUgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRnb3RXaGl0ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFwcGVuZCBjb21tZW50IHRvIGN1cnJlbnQgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbW1lbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFwcGVuZENvbW1lbnQoJGNvbW1lbnQpCiAgICB7CiAgICAgICAgYXNzZXJ0KCR0aGlzLT5lbnYgIT09IG51bGwpOwoKICAgICAgICBpZiAoISAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzKSB7CiAgICAgICAgICAgICR0aGlzLT5lbnYtPmNvbW1lbnRzW10gPSAkY29tbWVudDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBlbmQgc3RhdGVtZW50IHRvIGN1cnJlbnQgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8bnVsbCAkc3RhdGVtZW50CiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAkcG9zCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcHBlbmQoJHN0YXRlbWVudCwgJHBvcyA9IG51bGwpCiAgICB7CiAgICAgICAgYXNzZXJ0KCR0aGlzLT5lbnYgIT09IG51bGwpOwoKICAgICAgICBpZiAoISBcaXNfbnVsbCgkc3RhdGVtZW50KSkgewogICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICgkc3RhdGVtZW50ID0gJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoJHN0YXRlbWVudCwgJHBvcykpOwoKICAgICAgICAgICAgaWYgKCEgXGlzX251bGwoJHBvcykpIHsKICAgICAgICAgICAgICAgIGxpc3QoJGxpbmUsICRjb2x1bW4pID0gJHRoaXMtPmdldFNvdXJjZVBvc2l0aW9uKCRwb3MpOwoKICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRbc3RhdGljOjpTT1VSQ0VfTElORV0gICA9ICRsaW5lOwogICAgICAgICAgICAgICAgJHN0YXRlbWVudFtzdGF0aWM6OlNPVVJDRV9DT0xVTU5dID0gJGNvbHVtbjsKICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRbc3RhdGljOjpTT1VSQ0VfSU5ERVhdICA9ICR0aGlzLT5zb3VyY2VJbmRleDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmVudi0+Y2hpbGRyZW5bXSA9ICRzdGF0ZW1lbnQ7CiAgICAgICAgfQoKICAgICAgICAkY29tbWVudHMgPSAkdGhpcy0+ZW52LT5jb21tZW50czsKCiAgICAgICAgaWYgKCRjb21tZW50cykgewogICAgICAgICAgICAkdGhpcy0+ZW52LT5jaGlsZHJlbiA9IGFycmF5X21lcmdlKCR0aGlzLT5lbnYtPmNoaWxkcmVuLCAkY29tbWVudHMpOwogICAgICAgICAgICAkdGhpcy0+ZW52LT5jb21tZW50cyA9IFtdOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgbGFzdCBjaGlsZCB3YXMgYXBwZW5kZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxhc3QoKQogICAgewogICAgICAgIGFzc2VydCgkdGhpcy0+ZW52ICE9PSBudWxsKTsKCiAgICAgICAgJGkgPSBcY291bnQoJHRoaXMtPmVudi0+Y2hpbGRyZW4pIC0gMTsKCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5lbnYtPmNoaWxkcmVuWyRpXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5lbnYtPmNoaWxkcmVuWyRpXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgbWVkaWEgcXVlcnkgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtZWRpYVF1ZXJ5TGlzdCgmJG91dCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdlbmVyaWNMaXN0KCRvdXQsICdtZWRpYVF1ZXJ5JywgJywnLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBtZWRpYSBxdWVyeQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtZWRpYVF1ZXJ5KCYkb3V0KQogICAgewogICAgICAgICRleHByZXNzaW9ucyA9IG51bGw7CiAgICAgICAgJHBhcnRzID0gW107CgogICAgICAgIGlmICgKICAgICAgICAgICAgKCR0aGlzLT5saXRlcmFsKCdvbmx5JywgNCkgJiYgKCRvbmx5ID0gdHJ1ZSkgfHwKICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ25vdCcsIDMpICYmICgkbm90ID0gdHJ1ZSkgfHwgdHJ1ZSkgJiYKICAgICAgICAgICAgJHRoaXMtPm1peGVkS2V5d29yZCgkbWVkaWFUeXBlKQogICAgICAgICkgewogICAgICAgICAgICAkcHJvcCA9IFtUeXBlOjpUX01FRElBX1RZUEVdOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRvbmx5KSkgewogICAgICAgICAgICAgICAgJHByb3BbXSA9IFtUeXBlOjpUX0tFWVdPUkQsICdvbmx5J107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkbm90KSkgewogICAgICAgICAgICAgICAgJHByb3BbXSA9IFtUeXBlOjpUX0tFWVdPUkQsICdub3QnXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1lZGlhID0gW1R5cGU6OlRfTElTVCwgJycsIFtdXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKChhcnJheSkgJG1lZGlhVHlwZSBhcyAkdHlwZSkgewogICAgICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAkbWVkaWFbMl1bXSA9ICR0eXBlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbWVkaWFbMl1bXSA9IFtUeXBlOjpUX0tFWVdPUkQsICR0eXBlXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHByb3BbXSAgPSAkbWVkaWE7CiAgICAgICAgICAgICRwYXJ0c1tdID0gJHByb3A7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJHBhcnRzKSB8fCAkdGhpcy0+bGl0ZXJhbCgnYW5kJywgMykpIHsKICAgICAgICAgICAgJHRoaXMtPmdlbmVyaWNMaXN0KCRleHByZXNzaW9ucywgJ21lZGlhRXhwcmVzc2lvbicsICdhbmQnLCBmYWxzZSk7CgogICAgICAgICAgICBpZiAoXGlzX2FycmF5KCRleHByZXNzaW9ucykpIHsKICAgICAgICAgICAgICAgICRwYXJ0cyA9IGFycmF5X21lcmdlKCRwYXJ0cywgJGV4cHJlc3Npb25zWzJdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRwYXJ0czsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBzdXBwb3J0cyBxdWVyeQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzdXBwb3J0c1F1ZXJ5KCYkb3V0KQogICAgewogICAgICAgICRleHByZXNzaW9ucyA9IG51bGw7CiAgICAgICAgJHBhcnRzID0gW107CgogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAkbm90ID0gZmFsc2U7CgogICAgICAgIGlmICgKICAgICAgICAgICAgKCR0aGlzLT5saXRlcmFsKCdub3QnLCAzKSAmJiAoJG5vdCA9IHRydWUpIHx8IHRydWUpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJygnKSAmJgogICAgICAgICAgICAoJHRoaXMtPmV4cHJlc3Npb24oJHByb3BlcnR5KSkgJiYKICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJzogJywgMikgJiYKICAgICAgICAgICAgJHRoaXMtPnZhbHVlTGlzdCgkdmFsdWUpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKQogICAgICAgICkgewogICAgICAgICAgICAkc3VwcG9ydCA9IFtUeXBlOjpUX1NUUklORywgJycsIFtbVHlwZTo6VF9LRVlXT1JELCAoJG5vdCA/ICdub3QgJyA6ICcnKSAuICcoJ11dXTsKICAgICAgICAgICAgJHN1cHBvcnRbMl1bXSA9ICRwcm9wZXJ0eTsKICAgICAgICAgICAgJHN1cHBvcnRbMl1bXSA9IFtUeXBlOjpUX0tFWVdPUkQsICc6ICddOwogICAgICAgICAgICAkc3VwcG9ydFsyXVtdID0gJHZhbHVlOwogICAgICAgICAgICAkc3VwcG9ydFsyXVtdID0gW1R5cGU6OlRfS0VZV09SRCwgJyknXTsKCiAgICAgICAgICAgICRwYXJ0c1tdID0gJHN1cHBvcnQ7CiAgICAgICAgICAgICRzID0gJHRoaXMtPmNvdW50OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKCcpICYmCiAgICAgICAgICAgICR0aGlzLT5zdXBwb3J0c1F1ZXJ5KCRzdWJRdWVyeSkgJiYKICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKScpCiAgICAgICAgKSB7CiAgICAgICAgICAgICRwYXJ0c1tdID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgW1tUeXBlOjpUX0tFWVdPUkQsICcoJ10sICRzdWJRdWVyeSwgW1R5cGU6OlRfS0VZV09SRCwgJyknXV1dOwogICAgICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdub3QnLCAzKSAmJgogICAgICAgICAgICAkdGhpcy0+c3VwcG9ydHNRdWVyeSgkc3ViUXVlcnkpCiAgICAgICAgKSB7CiAgICAgICAgICAgICRwYXJ0c1tdID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgW1tUeXBlOjpUX0tFWVdPUkQsICdub3QgJ10sICRzdWJRdWVyeV1dOwogICAgICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdzZWxlY3RvcignLCA5KSAmJgogICAgICAgICAgICAkdGhpcy0+c2VsZWN0b3IoJHNlbGVjdG9yKSAmJgogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykKICAgICAgICApIHsKICAgICAgICAgICAgJHN1cHBvcnQgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbW1R5cGU6OlRfS0VZV09SRCwgJ3NlbGVjdG9yKCddXV07CgogICAgICAgICAgICAkc2VsZWN0b3JMaXN0ID0gW1R5cGU6OlRfTElTVCwgJycsIFtdXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvciBhcyAkc2MpIHsKICAgICAgICAgICAgICAgICRjb21wb3VuZCA9IFtUeXBlOjpUX1NUUklORywgJycsIFtdXTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2MgYXMgJHNjcCkgewogICAgICAgICAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJHNjcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBvdW5kWzJdW10gPSAkc2NwOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21wb3VuZFsyXVtdID0gW1R5cGU6OlRfS0VZV09SRCwgJHNjcF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRzZWxlY3Rvckxpc3RbMl1bXSA9ICRjb21wb3VuZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHN1cHBvcnRbMl1bXSA9ICRzZWxlY3Rvckxpc3Q7CiAgICAgICAgICAgICRzdXBwb3J0WzJdW10gPSBbVHlwZTo6VF9LRVlXT1JELCAnKSddOwogICAgICAgICAgICAkcGFydHNbXSA9ICRzdXBwb3J0OwogICAgICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnZhcmlhYmxlKCR2YXIpIG9yICR0aGlzLT5pbnRlcnBvbGF0aW9uKCR2YXIpKSB7CiAgICAgICAgICAgICRwYXJ0c1tdID0gJHZhcjsKICAgICAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnYW5kJywgMykgJiYKICAgICAgICAgICAgJHRoaXMtPmdlbmVyaWNMaXN0KCRleHByZXNzaW9ucywgJ3N1cHBvcnRzUXVlcnknLCAnIGFuZCcsIGZhbHNlKQogICAgICAgICkgewogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRleHByZXNzaW9uc1syXSwgW1R5cGU6OlRfU1RSSU5HLCAnJywgJHBhcnRzXSk7CgogICAgICAgICAgICAkcGFydHMgPSBbJGV4cHJlc3Npb25zXTsKICAgICAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnb3InLCAyKSAmJgogICAgICAgICAgICAkdGhpcy0+Z2VuZXJpY0xpc3QoJGV4cHJlc3Npb25zLCAnc3VwcG9ydHNRdWVyeScsICcgb3InLCBmYWxzZSkKICAgICAgICApIHsKICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkZXhwcmVzc2lvbnNbMl0sIFtUeXBlOjpUX1NUUklORywgJycsICRwYXJ0c10pOwoKICAgICAgICAgICAgJHBhcnRzID0gWyRleHByZXNzaW9uc107CiAgICAgICAgICAgICRzID0gJHRoaXMtPmNvdW50OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKICAgICAgICB9CgogICAgICAgIGlmIChcY291bnQoJHBhcnRzKSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCkgewogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1NUUklORywgJycsICRwYXJ0c107CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCgogICAgLyoqCiAgICAgKiBQYXJzZSBtZWRpYSBleHByZXNzaW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1lZGlhRXhwcmVzc2lvbigmJG91dCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICAkdmFsdWUgPSBudWxsOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJygnKSAmJgogICAgICAgICAgICAkdGhpcy0+ZXhwcmVzc2lvbigkZmVhdHVyZSkgJiYKICAgICAgICAgICAgKCR0aGlzLT5tYXRjaENoYXIoJzonKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24oJHZhbHVlKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykKICAgICAgICApIHsKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX01FRElBX0VYUFJFU1NJT04sICRmZWF0dXJlXTsKCiAgICAgICAgICAgIGlmICgkdmFsdWUpIHsKICAgICAgICAgICAgICAgICRvdXRbXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGFyZ3VtZW50IHZhbHVlcwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcmdWYWx1ZXMoJiRvdXQpCiAgICB7CiAgICAgICAgJGRpc2NhcmRDb21tZW50cyA9ICR0aGlzLT5kaXNjYXJkQ29tbWVudHM7CiAgICAgICAgJHRoaXMtPmRpc2NhcmRDb21tZW50cyA9IHRydWU7CgogICAgICAgIGlmICgkdGhpcy0+Z2VuZXJpY0xpc3QoJGxpc3QsICdhcmdWYWx1ZScsICcsJywgZmFsc2UpKSB7CiAgICAgICAgICAgICRvdXQgPSAkbGlzdFsyXTsKCiAgICAgICAgICAgICR0aGlzLT5kaXNjYXJkQ29tbWVudHMgPSAkZGlzY2FyZENvbW1lbnRzOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzID0gJGRpc2NhcmRDb21tZW50czsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYXJndW1lbnQgdmFsdWUKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXJnVmFsdWUoJiRvdXQpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CgogICAgICAgICRrZXl3b3JkID0gbnVsbDsKCiAgICAgICAgaWYgKCEgJHRoaXMtPnZhcmlhYmxlKCRrZXl3b3JkKSB8fCAhICR0aGlzLT5tYXRjaENoYXIoJzonKSkgewogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICAka2V5d29yZCA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmdlbmVyaWNMaXN0KCR2YWx1ZSwgJ2V4cHJlc3Npb24nLCAnJywgdHJ1ZSkpIHsKICAgICAgICAgICAgJG91dCA9IFska2V5d29yZCwgJHZhbHVlLCBmYWxzZV07CiAgICAgICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCcuLi4nLCAzKSkgewogICAgICAgICAgICAgICAgJG91dFsyXSA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYSBnZW5lcmljIGRpcmVjdGl2ZSBpcyBrbm93biB0byBiZSBhYmxlIHRvIGFsbG93IGFsbW9zdCBhbnkgc3ludGF4IG9yIG5vdAogICAgICogQHBhcmFtIG1peGVkICRkaXJlY3RpdmVOYW1lCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzS25vd25HZW5lcmljRGlyZWN0aXZlKCRkaXJlY3RpdmVOYW1lKQogICAgewogICAgICAgIGlmIChcaXNfYXJyYXkoJGRpcmVjdGl2ZU5hbWUpICYmIFxpc19zdHJpbmcocmVzZXQoJGRpcmVjdGl2ZU5hbWUpKSkgewogICAgICAgICAgICAkZGlyZWN0aXZlTmFtZSA9IHJlc2V0KCRkaXJlY3RpdmVOYW1lKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEgXGlzX3N0cmluZygkZGlyZWN0aXZlTmFtZSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoCiAgICAgICAgICAgIFxpbl9hcnJheSgkZGlyZWN0aXZlTmFtZSwgWwogICAgICAgICAgICAnYXQtcm9vdCcsCiAgICAgICAgICAgICdtZWRpYScsCiAgICAgICAgICAgICdtaXhpbicsCiAgICAgICAgICAgICdpbmNsdWRlJywKICAgICAgICAgICAgJ3Njc3NwaHAtaW1wb3J0LW9uY2UnLAogICAgICAgICAgICAnaW1wb3J0JywKICAgICAgICAgICAgJ2V4dGVuZCcsCiAgICAgICAgICAgICdmdW5jdGlvbicsCiAgICAgICAgICAgICdicmVhaycsCiAgICAgICAgICAgICdjb250aW51ZScsCiAgICAgICAgICAgICdyZXR1cm4nLAogICAgICAgICAgICAnZWFjaCcsCiAgICAgICAgICAgICd3aGlsZScsCiAgICAgICAgICAgICdmb3InLAogICAgICAgICAgICAnaWYnLAogICAgICAgICAgICAnZGVidWcnLAogICAgICAgICAgICAnd2FybicsCiAgICAgICAgICAgICdlcnJvcicsCiAgICAgICAgICAgICdjb250ZW50JywKICAgICAgICAgICAgJ2Vsc2UnLAogICAgICAgICAgICAnY2hhcnNldCcsCiAgICAgICAgICAgICdzdXBwb3J0cycsCiAgICAgICAgICAgIC8vIFRvZG8KICAgICAgICAgICAgJ3VzZScsCiAgICAgICAgICAgICdmb3J3YXJkJywKICAgICAgICAgICAgXSkKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGRpcmVjdGl2ZSB2YWx1ZSBsaXN0IHRoYXQgY29uc2lkZXJzICR2YXJzIGFzIGtleXdvcmQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICRvdXQKICAgICAqIEBwYXJhbSBzdHJpbmd8ZmFsc2UgJGVuZENoYXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAcGhwc3Rhbi1pbXB1cmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRpcmVjdGl2ZVZhbHVlKCYkb3V0LCAkZW5kQ2hhciA9IGZhbHNlKQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoJHRoaXMtPnZhcmlhYmxlKCRvdXQpKSB7CiAgICAgICAgICAgIGlmICgkZW5kQ2hhciAmJiAkdGhpcy0+bWF0Y2hDaGFyKCRlbmRDaGFyLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISAkZW5kQ2hhciAmJiAkdGhpcy0+ZW5kKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIGlmIChcaXNfc3RyaW5nKCRlbmRDaGFyKSAmJiAkdGhpcy0+b3BlblN0cmluZygkZW5kQ2hhciA/ICRlbmRDaGFyIDogJzsnLCAkb3V0LCBudWxsLCBudWxsLCB0cnVlLCAiO317IikpIHsKICAgICAgICAgICAgaWYgKCRlbmRDaGFyICYmICR0aGlzLT5tYXRjaENoYXIoJGVuZENoYXIsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNzID0gJHRoaXMtPmNvdW50OwogICAgICAgICAgICBpZiAoISRlbmRDaGFyICYmICR0aGlzLT5lbmQoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHNzKTsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICRhbGxvd1ZhcnMgPSAkdGhpcy0+YWxsb3dWYXJzOwogICAgICAgICR0aGlzLT5hbGxvd1ZhcnMgPSBmYWxzZTsKCiAgICAgICAgJHJlcyA9ICR0aGlzLT5nZW5lcmljTGlzdCgkb3V0LCAnc3BhY2VMaXN0JywgJywnKTsKICAgICAgICAkdGhpcy0+YWxsb3dWYXJzID0gJGFsbG93VmFyczsKCiAgICAgICAgaWYgKCRyZXMpIHsKICAgICAgICAgICAgaWYgKCRlbmRDaGFyICYmICR0aGlzLT5tYXRjaENoYXIoJGVuZENoYXIsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghICRlbmRDaGFyICYmICR0aGlzLT5lbmQoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgaWYgKCRlbmRDaGFyICYmICR0aGlzLT5tYXRjaENoYXIoJGVuZENoYXIsIGZhbHNlKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGNvbW1hIHNlcGFyYXRlZCB2YWx1ZSBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHZhbHVlTGlzdCgmJG91dCkKICAgIHsKICAgICAgICAkZGlzY2FyZENvbW1lbnRzID0gJHRoaXMtPmRpc2NhcmRDb21tZW50czsKICAgICAgICAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzID0gdHJ1ZTsKICAgICAgICAkcmVzID0gJHRoaXMtPmdlbmVyaWNMaXN0KCRvdXQsICdzcGFjZUxpc3QnLCAnLCcpOwogICAgICAgICR0aGlzLT5kaXNjYXJkQ29tbWVudHMgPSAkZGlzY2FyZENvbW1lbnRzOwoKICAgICAgICByZXR1cm4gJHJlczsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGEgZnVuY3Rpb24gY2FsbCwgd2hlcmUgZXh0ZXJuYWxzICgpIGFyZSBwYXJ0IG9mIHRoZSBjYWxsCiAgICAgKiBhbmQgbm90IG9mIHRoZSB2YWx1ZSBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICRvdXQKICAgICAqIEBwYXJhbSBib29sICAgICAgICAkbWFuZGF0b3J5RW5jbG9zCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGNoYXJBZnRlcgogICAgICogQHBhcmFtIG51bGx8Ym9vbCAgICRlYXRXaGl0ZVNwCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmdW5jdGlvbkNhbGxBcmd1bWVudHNMaXN0KCYkb3V0LCAkbWFuZGF0b3J5RW5jbG9zID0gdHJ1ZSwgJGNoYXJBZnRlciA9IG51bGwsICRlYXRXaGl0ZVNwID0gbnVsbCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcoJykgJiYKICAgICAgICAgICAgJHRoaXMtPnZhbHVlTGlzdCgkb3V0KSAmJgogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykgJiYKICAgICAgICAgICAgKCRjaGFyQWZ0ZXIgPyAkdGhpcy0+bWF0Y2hDaGFyKCRjaGFyQWZ0ZXIsICRlYXRXaGl0ZVNwKSA6ICR0aGlzLT5lbmQoKSkKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoISAkbWFuZGF0b3J5RW5jbG9zKSB7CiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0aGlzLT52YWx1ZUxpc3QoJG91dCkgJiYKICAgICAgICAgICAgICAgICgkY2hhckFmdGVyID8gJHRoaXMtPm1hdGNoQ2hhcigkY2hhckFmdGVyLCAkZWF0V2hpdGVTcCkgOiAkdGhpcy0+ZW5kKCkpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2Ugc3BhY2Ugc2VwYXJhdGVkIHZhbHVlIGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3BhY2VMaXN0KCYkb3V0KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2VuZXJpY0xpc3QoJG91dCwgJ2V4cHJlc3Npb24nKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGdlbmVyaWMgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgJG91dAogICAgICogQHBhcmFtIHN0cmluZyAkcGFyc2VJdGVtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdXNlZCB0byBwYXJzZSBpdGVtcwogICAgICogQHBhcmFtIHN0cmluZyAkZGVsaW0KICAgICAqIEBwYXJhbSBib29sICAgJGZsYXR0ZW4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdlbmVyaWNMaXN0KCYkb3V0LCAkcGFyc2VJdGVtLCAkZGVsaW0gPSAnJywgJGZsYXR0ZW4gPSB0cnVlKQogICAgewogICAgICAgICRzICAgICA9ICR0aGlzLT5jb3VudDsKICAgICAgICAkaXRlbXMgPSBbXTsKICAgICAgICAvKiogQHZhciBhcnJheXxOdW1iZXJ8bnVsbCAkdmFsdWUgKi8KICAgICAgICAkdmFsdWUgPSBudWxsOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPiRwYXJzZUl0ZW0oJHZhbHVlKSkgewogICAgICAgICAgICAkdHJhaWxpbmdfZGVsaW0gPSBmYWxzZTsKICAgICAgICAgICAgJGl0ZW1zW10gPSAkdmFsdWU7CgogICAgICAgICAgICBpZiAoJGRlbGltKSB7CiAgICAgICAgICAgICAgICBpZiAoISAkdGhpcy0+bGl0ZXJhbCgkZGVsaW0sIFxzdHJsZW4oJGRlbGltKSkpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdHJhaWxpbmdfZGVsaW0gPSB0cnVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYXNzZXJ0KFxpc19hcnJheSgkdmFsdWUpIHx8ICR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcik7CiAgICAgICAgICAgICAgICAvLyBpZiBubyBkZWxpbSB3YXRjaCB0aGF0IGEga2V5d29yZCBkaWRuJ3QgZWF0IHRoZSBzaW5nbGUvZG91YmxlIHF1b3RlCiAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBmb2xsb3dpbmcgc3RhcnRpbmcgc3RyaW5nCiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlWzBdID09PSBUeXBlOjpUX0tFWVdPUkQpIHsKICAgICAgICAgICAgICAgICAgICBhc3NlcnQoXGlzX2FycmF5KCR2YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgIC8qKiBAdmFyIHN0cmluZyAkd29yZCAqLwogICAgICAgICAgICAgICAgICAgICR3b3JkID0gJHZhbHVlWzFdOwoKICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyID0gc3Vic3RyKCR3b3JkLCAtMSk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKCR3b3JkKSA+IDEgJiYKICAgICAgICAgICAgICAgICAgICAgICAgaW5fYXJyYXkoJGxhc3RfY2hhciwgWyAiJyIsICciJ10pICYmCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cigkd29yZCwgLTIsIDEpICE9PSAnXFwnCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgbm9uIGVzY2FwZWQgb3BlbmluZyBxdW90ZSBpbiB0aGUga2V5d29yZCwgdGhpcyBzZWVtcyB1bmxpa2VseSBhIG1pc3Rha2UKICAgICAgICAgICAgICAgICAgICAgICAgJHdvcmQgPSBzdHJfcmVwbGFjZSgnXFwnIC4gJGxhc3RfY2hhciwgJ1xcXFwnLCAkd29yZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJHdvcmQsICRsYXN0X2NoYXIpIDwgc3RybGVuKCR3b3JkKSAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudENvdW50ID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGV0J3MgdHJ5IHRvIHJld2luZCB0byBwcmV2aW91cyBjaGFyIGFuZCB0cnkgYSBwYXJzZQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQtLTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gY2FzZSB0aGUga2V5d29yZCBhbHNvIGVhdCBzcGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHN1YnN0cigkdGhpcy0+YnVmZmVyLCAkdGhpcy0+Y291bnQsIDEpICE9PSAkbGFzdF9jaGFyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQtLTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB2YXIgYXJyYXl8TnVtYmVyfG51bGwgJG5leHRWYWx1ZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAkbmV4dFZhbHVlID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT4kcGFyc2VJdGVtKCRuZXh0VmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoXGlzX2FycmF5KCRuZXh0VmFsdWUpIHx8ICRuZXh0VmFsdWUgaW5zdGFuY2VvZiBOdW1iZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRuZXh0VmFsdWVbMF0gPT09IFR5cGU6OlRfS0VZV09SRCAmJiAkbmV4dFZhbHVlWzFdID09PSAkbGFzdF9jaGFyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFkIHRyeSwgZm9yZ2V0IGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJGN1cnJlbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5leHRWYWx1ZVswXSAhPT0gVHlwZTo6VF9TVFJJTkcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWQgdHJ5LCBmb3JnZXQgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2VlaygkY3VycmVudENvdW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPSyBpdCB3YXMgYSBnb29kIGlkZWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZVsxXSA9IHN1YnN0cigkdmFsdWVbMV0sIDAsIC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkaXRlbXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1zW10gPSAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbXNbXSA9ICRuZXh0VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWQgdHJ5LCBmb3JnZXQgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZWVrKCRjdXJyZW50Q291bnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghICRpdGVtcykgewogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRyYWlsaW5nX2RlbGltKSB7CiAgICAgICAgICAgICRpdGVtc1tdID0gW1R5cGU6OlRfTlVMTF07CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYXR0ZW4gJiYgXGNvdW50KCRpdGVtcykgPT09IDEpIHsKICAgICAgICAgICAgJG91dCA9ICRpdGVtc1swXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfTElTVCwgJGRlbGltLCAkaXRlbXNdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBleHByZXNzaW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqIEBwYXJhbSBib29sICAkbGlzdE9ubHkKICAgICAqIEBwYXJhbSBib29sICAkbG9va0ZvckV4cAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEBwaHBzdGFuLWltcHVyZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXhwcmVzc2lvbigmJG91dCwgJGxpc3RPbmx5ID0gZmFsc2UsICRsb29rRm9yRXhwID0gdHJ1ZSkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICAkZGlzY2FyZCA9ICR0aGlzLT5kaXNjYXJkQ29tbWVudHM7CiAgICAgICAgJHRoaXMtPmRpc2NhcmRDb21tZW50cyA9IHRydWU7CiAgICAgICAgJGFsbG93ZWRUeXBlcyA9ICgkbGlzdE9ubHkgPyBbVHlwZTo6VF9MSVNUXSA6IFtUeXBlOjpUX0xJU1QsIFR5cGU6OlRfTUFQXSk7CgogICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcoJykpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5lbmNsb3NlZEV4cHJlc3Npb24oJGxocywgJHMsICcpJywgJGFsbG93ZWRUeXBlcykpIHsKICAgICAgICAgICAgICAgIGlmICgkbG9va0ZvckV4cCkgewogICAgICAgICAgICAgICAgICAgICRvdXQgPSAkdGhpcy0+ZXhwSGVscGVyKCRsaHMsIDApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkb3V0ID0gJGxoczsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzID0gJGRpc2NhcmQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKICAgICAgICB9CgogICAgICAgIGlmIChcaW5fYXJyYXkoVHlwZTo6VF9MSVNULCAkYWxsb3dlZFR5cGVzKSAmJiAkdGhpcy0+bWF0Y2hDaGFyKCdbJykpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5lbmNsb3NlZEV4cHJlc3Npb24oJGxocywgJHMsICddJywgW1R5cGU6OlRfTElTVF0pKSB7CiAgICAgICAgICAgICAgICBpZiAoJGxvb2tGb3JFeHApIHsKICAgICAgICAgICAgICAgICAgICAkb3V0ID0gJHRoaXMtPmV4cEhlbHBlcigkbGhzLCAwKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJG91dCA9ICRsaHM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPmRpc2NhcmRDb21tZW50cyA9ICRkaXNjYXJkOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISAkbGlzdE9ubHkgJiYgJHRoaXMtPnZhbHVlKCRsaHMpKSB7CiAgICAgICAgICAgIGlmICgkbG9va0ZvckV4cCkgewogICAgICAgICAgICAgICAgJG91dCA9ICR0aGlzLT5leHBIZWxwZXIoJGxocywgMCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gJGxoczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmRpc2NhcmRDb21tZW50cyA9ICRkaXNjYXJkOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzID0gJGRpc2NhcmQ7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGV4cHJlc3Npb24gc3BlY2lmaWNhbGx5IGNoZWNraW5nIGZvciBsaXN0cyBpbiBwYXJlbnRoZXNpcyBvciBicmFja2V0cwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICAkb3V0CiAgICAgKiBAcGFyYW0gaW50ICAgICAgJHMKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkY2xvc2luZ1BhcmVuCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJGFsbG93ZWRUeXBlcwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIGFycmF5PFR5cGU6Oio+ICRhbGxvd2VkVHlwZXMKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGVuY2xvc2VkRXhwcmVzc2lvbigmJG91dCwgJHMsICRjbG9zaW5nUGFyZW4gPSAnKScsICRhbGxvd2VkVHlwZXMgPSBbVHlwZTo6VF9MSVNULCBUeXBlOjpUX01BUF0pCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJGNsb3NpbmdQYXJlbikgJiYgXGluX2FycmF5KFR5cGU6OlRfTElTVCwgJGFsbG93ZWRUeXBlcykpIHsKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX0xJU1QsICcnLCBbXV07CgogICAgICAgICAgICBzd2l0Y2ggKCRjbG9zaW5nUGFyZW4pIHsKICAgICAgICAgICAgICAgIGNhc2UgJyknOgogICAgICAgICAgICAgICAgICAgICRvdXRbJ2VuY2xvc2luZyddID0gJ3BhcmVudCc7IC8vIHBhcmVudGhlc2lzIGxpc3QKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICddJzoKICAgICAgICAgICAgICAgICAgICAkb3V0WydlbmNsb3NpbmcnXSA9ICdicmFja2V0JzsgLy8gYnJhY2tldGVkIGxpc3QKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICR0aGlzLT52YWx1ZUxpc3QoJG91dCkgJiYKICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigkY2xvc2luZ1BhcmVuKSAmJiAhICgkY2xvc2luZ1BhcmVuID09PSAnKScgJiYKICAgICAgICAgICAgXGluX2FycmF5KCRvdXRbMF0sIFtUeXBlOjpUX0VYUFJFU1NJT04sIFR5cGU6OlRfVU5BUlldKSkgJiYKICAgICAgICAgICAgXGluX2FycmF5KFR5cGU6OlRfTElTVCwgJGFsbG93ZWRUeXBlcykKICAgICAgICApIHsKICAgICAgICAgICAgaWYgKCRvdXRbMF0gIT09IFR5cGU6OlRfTElTVCB8fCAhIGVtcHR5KCRvdXRbJ2VuY2xvc2luZyddKSkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX0xJU1QsICcnLCBbJG91dF1dOwogICAgICAgICAgICB9CgogICAgICAgICAgICBzd2l0Y2ggKCRjbG9zaW5nUGFyZW4pIHsKICAgICAgICAgICAgICAgIGNhc2UgJyknOgogICAgICAgICAgICAgICAgICAgICRvdXRbJ2VuY2xvc2luZyddID0gJ3BhcmVudCc7IC8vIHBhcmVudGhlc2lzIGxpc3QKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICddJzoKICAgICAgICAgICAgICAgICAgICAkb3V0WydlbmNsb3NpbmcnXSA9ICdicmFja2V0JzsgLy8gYnJhY2tldGVkIGxpc3QKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIGlmIChcaW5fYXJyYXkoVHlwZTo6VF9NQVAsICRhbGxvd2VkVHlwZXMpICYmICR0aGlzLT5tYXAoJG91dCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBsZWZ0LWhhbmQgc2lkZSBvZiBzdWJleHByZXNzaW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRsaHMKICAgICAqIEBwYXJhbSBpbnQgICAkbWluUAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4cEhlbHBlcigkbGhzLCAkbWluUCkKICAgIHsKICAgICAgICAkb3BlcmF0b3JzID0gc3RhdGljOjokb3BlcmF0b3JQYXR0ZXJuOwoKICAgICAgICAkc3MgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgJHdoaXRlQmVmb3JlID0gaXNzZXQoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnQgLSAxXSkgJiYKICAgICAgICAgICAgY3R5cGVfc3BhY2UoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnQgLSAxXSk7CgogICAgICAgIHdoaWxlICgkdGhpcy0+bWF0Y2goJG9wZXJhdG9ycywgJG0sIGZhbHNlKSAmJiBzdGF0aWM6OiRwcmVjZWRlbmNlW3N0cnRvbG93ZXIoJG1bMV0pXSA+PSAkbWluUCkgewogICAgICAgICAgICAkd2hpdGVBZnRlciA9IGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkgJiYKICAgICAgICAgICAgICAgIGN0eXBlX3NwYWNlKCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSk7CiAgICAgICAgICAgICR2YXJBZnRlciA9IGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSA9PT0gJyQnOwoKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICRvcCA9ICRtWzFdOwoKICAgICAgICAgICAgLy8gZG9uJ3QgdHVybiBuZWdhdGl2ZSBudW1iZXJzIGludG8gZXhwcmVzc2lvbnMKICAgICAgICAgICAgaWYgKCRvcCA9PT0gJy0nICYmICR3aGl0ZUJlZm9yZSAmJiAhICR3aGl0ZUFmdGVyICYmICEgJHZhckFmdGVyKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEgJHRoaXMtPnZhbHVlKCRyaHMpICYmICEgJHRoaXMtPmV4cHJlc3Npb24oJHJocywgdHJ1ZSwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRvcCA9PT0gJy0nICYmICEgJHdoaXRlQWZ0ZXIgJiYgJHJoc1swXSA9PT0gVHlwZTo6VF9LRVlXT1JEKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gY29uc3VtZSBoaWdoZXItcHJlY2VkZW5jZSBvcGVyYXRvcnMgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZQogICAgICAgICAgICAkcmhzID0gJHRoaXMtPmV4cEhlbHBlcigkcmhzLCBzdGF0aWM6OiRwcmVjZWRlbmNlW3N0cnRvbG93ZXIoJG9wKV0gKyAxKTsKCiAgICAgICAgICAgICRsaHMgPSBbVHlwZTo6VF9FWFBSRVNTSU9OLCAkb3AsICRsaHMsICRyaHMsICR0aGlzLT5pblBhcmVucywgJHdoaXRlQmVmb3JlLCAkd2hpdGVBZnRlcl07CgogICAgICAgICAgICAkc3MgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgICAgICR3aGl0ZUJlZm9yZSA9IGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50IC0gMV0pICYmCiAgICAgICAgICAgICAgICBjdHlwZV9zcGFjZSgkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudCAtIDFdKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzcyk7CgogICAgICAgIHJldHVybiAkbGhzOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgdmFsdWUKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdmFsdWUoJiRvdXQpCiAgICB7CiAgICAgICAgaWYgKCEgaXNzZXQoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnRdKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICAkY2hhciA9ICR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgndXJsKCcsIDQpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaCgnZGF0YTooW2Etel0rKVwvKFthLXowLTkuKy1dKyk7YmFzZTY0LCcsICRtLCBmYWxzZSkKICAgICAgICApIHsKICAgICAgICAgICAgJGxlbiA9IHN0cnNwbigKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXIsCiAgICAgICAgICAgICAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3l4ejAxMjM0NTY3ODkrLz0nLAogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkdGhpcy0+Y291bnQgKz0gJGxlbjsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICRjb250ZW50ID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsICRzLCAkdGhpcy0+Y291bnQgLSAkcyk7CiAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfS0VZV09SRCwgJGNvbnRlbnRdOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIGlmICgKICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ3VybCgnLCA0LCBmYWxzZSkgJiYKICAgICAgICAgICAgJHRoaXMtPm1hdGNoKCdccyooXC9cL1teXHNcKV0rKVxzKicsICRtKQogICAgICAgICkgewogICAgICAgICAgICAkY29udGVudCA9ICd1cmwoJyAuICRtWzFdOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJyknKSkgewogICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gJyknOwogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX0tFWVdPUkQsICRjb250ZW50XTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAvLyBub3QKICAgICAgICBpZiAoJGNoYXIgPT09ICduJyAmJiAkdGhpcy0+bGl0ZXJhbCgnbm90JywgMywgZmFsc2UpKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT52YWx1ZSgkaW5uZXIpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1VOQVJZLCAnbm90JywgJGlubmVyLCAkdGhpcy0+aW5QYXJlbnNdOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPnBhcmVuVmFsdWUoJGlubmVyKSkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1VOQVJZLCAnbm90JywgJGlubmVyLCAkdGhpcy0+aW5QYXJlbnNdOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICAvLyBhZGRpdGlvbgogICAgICAgIGlmICgkY2hhciA9PT0gJysnKSB7CiAgICAgICAgICAgICR0aGlzLT5jb3VudCsrOwoKICAgICAgICAgICAgJGZvbGxvd193aGl0ZSA9ICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPnZhbHVlKCRpbm5lcikpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9VTkFSWSwgJysnLCAkaW5uZXIsICR0aGlzLT5pblBhcmVuc107CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkZm9sbG93X3doaXRlKSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfS0VZV09SRCwgJGNoYXJdOwogICAgICAgICAgICAgICAgcmV0dXJuICB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBuZWdhdGlvbgogICAgICAgIGlmICgkY2hhciA9PT0gJy0nKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+Y3VzdG9tUHJvcGVydHkoJG91dCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+Y291bnQrKzsKCiAgICAgICAgICAgICRmb2xsb3dfd2hpdGUgPSAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT52YXJpYWJsZSgkaW5uZXIpIHx8ICR0aGlzLT51bml0KCRpbm5lcikgfHwgJHRoaXMtPnBhcmVuVmFsdWUoJGlubmVyKSkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1VOQVJZLCAnLScsICRpbm5lciwgJHRoaXMtPmluUGFyZW5zXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmtleXdvcmQoJGlubmVyKSAmJgogICAgICAgICAgICAgICAgISAkdGhpcy0+ZnVuYygkaW5uZXIsICRvdXQpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1VOQVJZLCAnLScsICRpbm5lciwgJHRoaXMtPmluUGFyZW5zXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRmb2xsb3dfd2hpdGUpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9LRVlXT1JELCAkY2hhcl07CgogICAgICAgICAgICAgICAgcmV0dXJuICB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICAvLyBwYXJlbgogICAgICAgIGlmICgkY2hhciA9PT0gJygnICYmICR0aGlzLT5wYXJlblZhbHVlKCRvdXQpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjaGFyID09PSAnIycpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5pbnRlcnBvbGF0aW9uKCRvdXQpIHx8ICR0aGlzLT5jb2xvcigkb3V0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5jb3VudCsrOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5rZXl3b3JkKCRrZXl3b3JkKSkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX0tFWVdPUkQsICcjJyAuICRrZXl3b3JkXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmNvdW50LS07CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignJicsIHRydWUpKSB7CiAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9TRUxGXTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjaGFyID09PSAnJCcgJiYgJHRoaXMtPnZhcmlhYmxlKCRvdXQpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjaGFyID09PSAncCcgJiYgJHRoaXMtPnByb2dpZCgkb3V0KSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgoJGNoYXIgPT09ICciJyB8fCAkY2hhciA9PT0gIiciKSAmJiAkdGhpcy0+c3RyaW5nKCRvdXQpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT51bml0KCRvdXQpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gdW5pY29kZSByYW5nZSB3aXRoIHdpbGRjYXJkcwogICAgICAgIGlmICgKICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ1UrJywgMikgJiYKICAgICAgICAgICAgJHRoaXMtPm1hdGNoKCdcPyt8KFswLTlBLUZdKyhcPyt8KC1bMC05QS1GXSspKT8pJywgJG0sIGZhbHNlKQogICAgICAgICkgewogICAgICAgICAgICAkdW5pY29kZSA9IGV4cGxvZGUoJy0nLCAkbVswXSk7CiAgICAgICAgICAgIGlmIChzdHJsZW4ocmVzZXQoJHVuaWNvZGUpKSA8PSA2ICYmIHN0cmxlbihlbmQoJHVuaWNvZGUpKSA8PSA2KSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfS0VZV09SRCwgJ1UrJyAuICRtWzBdXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+Y291bnQgLT0gc3RybGVuKCRtWzBdKSArIDI7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmtleXdvcmQoJGtleXdvcmQsIGZhbHNlKSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmZ1bmMoJGtleXdvcmQsICRvdXQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIGlmICgka2V5d29yZCA9PT0gJ251bGwnKSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfTlVMTF07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfS0VZV09SRCwgJGtleXdvcmRdOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIHBhcmVudGhlc2l6ZWQgdmFsdWUKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFyZW5WYWx1ZSgmJG91dCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgJGluUGFyZW5zID0gJHRoaXMtPmluUGFyZW5zOwoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignKCcpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9MSVNULCAnJywgW11dOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+aW5QYXJlbnMgPSB0cnVlOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24oJGV4cCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRvdXQgPSAkZXhwOwogICAgICAgICAgICAgICAgJHRoaXMtPmluUGFyZW5zID0gJGluUGFyZW5zOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+aW5QYXJlbnMgPSAkaW5QYXJlbnM7CiAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSAicHJvZ2lkOiIKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJvZ2lkKCYkb3V0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCdwcm9naWQ6JywgNywgZmFsc2UpICYmCiAgICAgICAgICAgICR0aGlzLT5vcGVuU3RyaW5nKCcoJywgJGZuKSAmJgogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcoJykKICAgICAgICApIHsKICAgICAgICAgICAgJHRoaXMtPm9wZW5TdHJpbmcoJyknLCAkYXJncywgJygnKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbCiAgICAgICAgICAgICAgICAgICAgJ3Byb2dpZDonLCAkZm4sICcoJywgJGFyZ3MsICcpJwogICAgICAgICAgICAgICAgXV07CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgZnVuY3Rpb24gY2FsbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqIEBwYXJhbSBhcnJheSAgJGZ1bmMKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZ1bmMoJG5hbWUsICYkZnVuYykKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJygnKSkgewogICAgICAgICAgICBpZiAoJG5hbWUgPT09ICdhbHBoYScgJiYgJHRoaXMtPmFyZ3VtZW50TGlzdCgkYXJncykpIHsKICAgICAgICAgICAgICAgICRmdW5jID0gW1R5cGU6OlRfRlVOQ1RJT04sICRuYW1lLCBbVHlwZTo6VF9TVFJJTkcsICcnLCAkYXJnc11dOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG5hbWUgIT09ICdleHByZXNzaW9uJyAmJiAhIHByZWdfbWF0Y2goJy9eKC1bYS16XSstKT9jYWxjJC8nLCAkbmFtZSkpIHsKICAgICAgICAgICAgICAgICRzcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFyZ1ZhbHVlcygkYXJncykgJiYKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIGlmIChzdHJ0b2xvd2VyKCRuYW1lKSA9PT0gJ3ZhcicgJiYgXGNvdW50KCRhcmdzKSA9PT0gMiAmJiAkYXJnc1sxXVswXSA9PT0gVHlwZTo6VF9OVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhcmdzWzFdID0gW251bGwsIFtUeXBlOjpUX1NUUklORywgJycsIFsnICddXSwgZmFsc2VdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGZ1bmMgPSBbVHlwZTo6VF9GVU5DVElPTl9DQUxMLCAkbmFtZSwgJGFyZ3NdOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+c2Vlaygkc3MpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoJHRoaXMtPm9wZW5TdHJpbmcoJyknLCAkc3RyLCAnKCcpIHx8IHRydWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkYXJncyA9IFtdOwoKICAgICAgICAgICAgICAgIGlmICghIGVtcHR5KCRzdHIpKSB7CiAgICAgICAgICAgICAgICAgICAgJGFyZ3NbXSA9IFtudWxsLCBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJHN0cl1dXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZnVuYyA9IFtUeXBlOjpUX0ZVTkNUSU9OX0NBTEwsICRuYW1lLCAkYXJnc107CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgZnVuY3Rpb24gY2FsbCBhcmd1bWVudCBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFyZ3VtZW50TGlzdCgmJG91dCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcoJyk7CgogICAgICAgICRhcmdzID0gW107CgogICAgICAgIHdoaWxlICgkdGhpcy0+a2V5d29yZCgkdmFyKSkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCc9JykgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5leHByZXNzaW9uKCRleHApCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGFyZ3NbXSA9IFtUeXBlOjpUX1NUUklORywgJycsIFskdmFyIC4gJz0nXV07CiAgICAgICAgICAgICAgICAkYXJnID0gJGV4cDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYXJnc1tdID0gJGFyZzsKCiAgICAgICAgICAgIGlmICghICR0aGlzLT5tYXRjaENoYXIoJywnKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhcmdzW10gPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJywgJ11dOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgJHRoaXMtPm1hdGNoQ2hhcignKScpIHx8ICEgJGFyZ3MpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRhcmdzOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIG1peGluL2Z1bmN0aW9uIGRlZmluaXRpb24gIGFyZ3VtZW50IGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXJndW1lbnREZWYoJiRvdXQpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKCcpOwoKICAgICAgICAkYXJncyA9IFtdOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPnZhcmlhYmxlKCR2YXIpKSB7CiAgICAgICAgICAgICRhcmcgPSBbJHZhclsxXSwgbnVsbCwgZmFsc2VdOwoKICAgICAgICAgICAgJHNzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignOicpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+Z2VuZXJpY0xpc3QoJGRlZmF1bHRWYWwsICdleHByZXNzaW9uJywgJycsIHRydWUpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGFyZ1sxXSA9ICRkZWZhdWx0VmFsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHNzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHNzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCcuLi4nLCAzKSkgewogICAgICAgICAgICAgICAgJHNzcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgICAgICAgICBpZiAoISAkdGhpcy0+bWF0Y2hDaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkdGhpcy0+cGFyc2VFcnJvcignLi4uIGhhcyB0byBiZSBhZnRlciB0aGUgZmluYWwgYXJndW1lbnQnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYXJnWzJdID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+c2Vlaygkc3NzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhcmdzW10gPSAkYXJnOwoKICAgICAgICAgICAgaWYgKCEgJHRoaXMtPm1hdGNoQ2hhcignLCcpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCEgJHRoaXMtPm1hdGNoQ2hhcignKScpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRvdXQgPSAkYXJnczsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBtYXAKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWFwKCYkb3V0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoISAkdGhpcy0+bWF0Y2hDaGFyKCcoJykpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJGtleXMgPSBbXTsKICAgICAgICAkdmFsdWVzID0gW107CgogICAgICAgIHdoaWxlICgKICAgICAgICAgICAgJHRoaXMtPmdlbmVyaWNMaXN0KCRrZXksICdleHByZXNzaW9uJywgJycsIHRydWUpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJzonKSAmJgogICAgICAgICAgICAkdGhpcy0+Z2VuZXJpY0xpc3QoJHZhbHVlLCAnZXhwcmVzc2lvbicsICcnLCB0cnVlKQogICAgICAgICkgewogICAgICAgICAgICAka2V5c1tdID0gJGtleTsKICAgICAgICAgICAgJHZhbHVlc1tdID0gJHZhbHVlOwoKICAgICAgICAgICAgaWYgKCEgJHRoaXMtPm1hdGNoQ2hhcignLCcpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCEgJGtleXMgfHwgISAkdGhpcy0+bWF0Y2hDaGFyKCcpJykpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9IFtUeXBlOjpUX01BUCwgJGtleXMsICR2YWx1ZXNdOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGNvbG9yCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbG9yKCYkb3V0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoKCcoIyhbMC05YS1mXSspXGIpJywgJG0pKSB7CiAgICAgICAgICAgIGlmIChcaW5fYXJyYXkoXHN0cmxlbigkbVsyXSksIFszLDQsNiw4XSkpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9LRVlXT1JELCAkbVswXV07CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIG51bWJlciB3aXRoIHVuaXQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHVuaXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHVuaXQoJiR1bml0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoKCcoWzAtOV0qKFwuKT9bMC05XSspKFslYS16QS1aXSspPycsICRtLCBmYWxzZSkpIHsKICAgICAgICAgICAgaWYgKFxzdHJsZW4oJHRoaXMtPmJ1ZmZlcikgPT09ICR0aGlzLT5jb3VudCB8fCAhIGN0eXBlX2RpZ2l0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICAgICAgJHVuaXQgPSBuZXcgTm9kZVxOdW1iZXIoJG1bMV0sIGVtcHR5KCRtWzNdKSA/ICcnIDogJG1bM10pOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBzdHJpbmcKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICogQHBhcmFtIGJvb2wgICRrZWVwRGVsaW1XaXRoSW50ZXJwb2xhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3RyaW5nKCYkb3V0LCAka2VlcERlbGltV2l0aEludGVycG9sYXRpb24gPSBmYWxzZSkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJyInLCBmYWxzZSkpIHsKICAgICAgICAgICAgJGRlbGltID0gJyInOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+bWF0Y2hDaGFyKCInIiwgZmFsc2UpKSB7CiAgICAgICAgICAgICRkZWxpbSA9ICInIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkY29udGVudCA9IFtdOwogICAgICAgICRvbGRXaGl0ZSA9ICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQ7CiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9IGZhbHNlOwogICAgICAgICRoYXNJbnRlcnBvbGF0aW9uID0gZmFsc2U7CgogICAgICAgIHdoaWxlICgkdGhpcy0+bWF0Y2hTdHJpbmcoJG0sICRkZWxpbSkpIHsKICAgICAgICAgICAgaWYgKCRtWzFdICE9PSAnJykgewogICAgICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICRtWzFdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG1bMl0gPT09ICcjeycpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCAtPSBcc3RybGVuKCRtWzJdKTsKCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmludGVycG9sYXRpb24oJGludGVyLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAkY29udGVudFtdID0gJGludGVyOwogICAgICAgICAgICAgICAgICAgICRoYXNJbnRlcnBvbGF0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50ICs9IFxzdHJsZW4oJG1bMl0pOwogICAgICAgICAgICAgICAgICAgICRjb250ZW50W10gPSAnI3snOyAvLyBpZ25vcmUgaXQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRtWzJdID09PSAiXHIiKSB7CiAgICAgICAgICAgICAgICAkY29udGVudFtdID0gY2hyKDEwKTsKICAgICAgICAgICAgICAgIC8vIFRPRE8gOiB3YXJuaW5nCiAgICAgICAgICAgICAgICAjIERFUFJFQ0FUSU9OIFdBUk5JTkcgb24gbGluZSB4LCBjb2x1bW4geSBvZiB6eno6CiAgICAgICAgICAgICAgICAjIFVuZXNjYXBlZCBtdWx0aWxpbmUgc3RyaW5ncyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgU2Fzcy4KICAgICAgICAgICAgICAgICMgVG8gaW5jbHVkZSBhIG5ld2xpbmUgaW4gYSBzdHJpbmcsIHVzZSAiXGEiIG9yICJcYSAiIGFzIGluIENTUy4KICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCJcbiIsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50W10gPSAnICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkbVsyXSA9PT0gJ1xcJykgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCJcclxuIiwgMiwgZmFsc2UpIHx8CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigiXHIiLCBmYWxzZSkgfHwKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCJcbiIsIGZhbHNlKSB8fAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoIlxmIiwgZmFsc2UpCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgY29udGludWF0aW9uIGVzY2FwaW5nLCB0byBiZSBpZ25vcmVkCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPm1hdGNoRXNjYXBlQ2hhcmFjdGVyKCRjKSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50W10gPSAkYzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgJHRoaXMtPnBhcnNlRXJyb3IoJ1VudGVybWluYXRlZCBlc2NhcGUgc2VxdWVuY2UnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCAtPSBcc3RybGVuKCRkZWxpbSk7CiAgICAgICAgICAgICAgICBicmVhazsgLy8gZGVsaW0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9ICRvbGRXaGl0ZTsKCiAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCRkZWxpbSwgXHN0cmxlbigkZGVsaW0pKSkgewogICAgICAgICAgICBpZiAoJGhhc0ludGVycG9sYXRpb24gJiYgISAka2VlcERlbGltV2l0aEludGVycG9sYXRpb24pIHsKICAgICAgICAgICAgICAgICRkZWxpbSA9ICciJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1NUUklORywgJGRlbGltLCAkY29udGVudF07CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkb3V0CiAgICAgKiBAcGFyYW0gYm9vbCAgICRpbktleXdvcmRzCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtYXRjaEVzY2FwZUNoYXJhY3RlcigmJG91dCwgJGluS2V5d29yZHMgPSBmYWxzZSkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoKCdbYS1mMC05XScsICRtLCBmYWxzZSkpIHsKICAgICAgICAgICAgJGhleCA9ICRtWzBdOwoKICAgICAgICAgICAgZm9yICgkaSA9IDU7ICRpLS07KSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGNoKCdbYS1mMC05XScsICRtLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAkaGV4IC49ICRtWzBdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gQ1NTIGFsbG93cyBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZXMgdG8gYmUgZm9sbG93ZWQgYnkgYSBkZWxpbWl0ZXIgc3BhY2UKICAgICAgICAgICAgLy8gKG5lY2Vzc2FyeSBpbiBzb21lIGNhc2VzIGZvciBzaG9ydGVyIHNlcXVlbmNlcyB0byBkaXNhbWJpZ3VhdGUgdGhlaXIgZW5kKQogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcgJywgZmFsc2UpOwoKICAgICAgICAgICAgJHZhbHVlID0gaGV4ZGVjKCRoZXgpOwoKICAgICAgICAgICAgaWYgKCEkaW5LZXl3b3JkcyAmJiAoJHZhbHVlID09IDAgfHwgKCR2YWx1ZSA+PSAweEQ4MDAgJiYgJHZhbHVlIDw9IDB4REZGRikgfHwgJHZhbHVlID49IDB4MTBGRkZGKSkgewogICAgICAgICAgICAgICAgJG91dCA9ICJceEVGXHhCRlx4QkQiOyAvLyAiXHV7RkZGRH0iIGJ1dCB3aXRoIGEgc3ludGF4IHN1cHBvcnRlZCBvbiBQSFAgNQogICAgICAgICAgICB9IGVsc2VpZiAoJHZhbHVlIDwgMHgyMCkgewogICAgICAgICAgICAgICAgJG91dCA9IFV0aWw6Om1iQ2hyKCR2YWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gVXRpbDo6bWJDaHIoJHZhbHVlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoKCcuJywgJG0sIGZhbHNlKSkgewogICAgICAgICAgICBpZiAoJGluS2V5d29yZHMgJiYgaW5fYXJyYXkoJG1bMF0sIFsiJyIsJyInLCdAJywnJicsJyAnLCdcXCcsJzonLCcvJywnJSddKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvdXQgPSAkbVswXTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2Uga2V5d29yZCBvciBpbnRlcnBvbGF0aW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqIEBwYXJhbSBib29sICAkcmVzdHJpY3RlZAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWl4ZWRLZXl3b3JkKCYkb3V0LCAkcmVzdHJpY3RlZCA9IGZhbHNlKQogICAgewogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICAkb2xkV2hpdGUgPSAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0OwogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSBmYWxzZTsKCiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICBpZiAoJHJlc3RyaWN0ZWQgPyAkdGhpcy0+cmVzdHJpY3RlZEtleXdvcmQoJGtleSkgOiAkdGhpcy0+a2V5d29yZCgka2V5KSkgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAka2V5OwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+aW50ZXJwb2xhdGlvbigkaW50ZXIpKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRpbnRlcjsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSAkb2xkV2hpdGU7CgogICAgICAgIGlmICghICRwYXJ0cykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRwYXJ0czsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhbiB1bmJvdW5kZWQgc3RyaW5nIHN0b3BwZWQgYnkgJGVuZAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGVuZAogICAgICogQHBhcmFtIGFycmF5ICAkb3V0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRuZXN0T3BlbgogICAgICogQHBhcmFtIHN0cmluZyAkbmVzdENsb3NlCiAgICAgKiBAcGFyYW0gYm9vbCAgICRydHJpbQogICAgICogQHBhcmFtIHN0cmluZyAkZGlzYWxsb3cKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wZW5TdHJpbmcoJGVuZCwgJiRvdXQsICRuZXN0T3BlbiA9IG51bGwsICRuZXN0Q2xvc2UgPSBudWxsLCAkcnRyaW0gPSB0cnVlLCAkZGlzYWxsb3cgPSBudWxsKQogICAgewogICAgICAgICRvbGRXaGl0ZSA9ICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQ7CiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9IGZhbHNlOwoKICAgICAgICBpZiAoJG5lc3RPcGVuICYmICEgJG5lc3RDbG9zZSkgewogICAgICAgICAgICAkbmVzdENsb3NlID0gJGVuZDsKICAgICAgICB9CgogICAgICAgICRwYXR0ID0gKCRkaXNhbGxvdyA/ICdbXicgLiAkdGhpcy0+cHJlZ1F1b3RlKCRkaXNhbGxvdykgLiAnXScgOiAnLicpOwogICAgICAgICRwYXR0ID0gJygnIC4gJHBhdHQgLiAnKj8pKFtcJyJdfCNce3wnCiAgICAgICAgICAgIC4gJHRoaXMtPnByZWdRdW90ZSgkZW5kKSAuICd8JwogICAgICAgICAgICAuICgoJG5lc3RDbG9zZSAmJiAkbmVzdENsb3NlICE9PSAkZW5kKSA/ICR0aGlzLT5wcmVnUXVvdGUoJG5lc3RDbG9zZSkgLiAnfCcgOiAnJykKICAgICAgICAgICAgLiBzdGF0aWM6OiRjb21tZW50UGF0dGVybiAuICcpJzsKCiAgICAgICAgJG5lc3RpbmdMZXZlbCA9IDA7CgogICAgICAgICRjb250ZW50ID0gW107CgogICAgICAgIHdoaWxlICgkdGhpcy0+bWF0Y2goJHBhdHQsICRtLCBmYWxzZSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRtWzFdKSAmJiAkbVsxXSAhPT0gJycpIHsKICAgICAgICAgICAgICAgICRjb250ZW50W10gPSAkbVsxXTsKCiAgICAgICAgICAgICAgICBpZiAoJG5lc3RPcGVuKSB7CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdMZXZlbCArPSBzdWJzdHJfY291bnQoJG1bMV0sICRuZXN0T3Blbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0b2sgPSAkbVsyXTsKCiAgICAgICAgICAgICR0aGlzLT5jb3VudCAtPSBcc3RybGVuKCR0b2spOwoKICAgICAgICAgICAgaWYgKCR0b2sgPT09ICRlbmQgJiYgISAkbmVzdGluZ0xldmVsKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0b2sgPT09ICRuZXN0Q2xvc2UpIHsKICAgICAgICAgICAgICAgICRuZXN0aW5nTGV2ZWwtLTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCgkdG9rID09PSAiJyIgfHwgJHRvayA9PT0gJyInKSAmJiAkdGhpcy0+c3RyaW5nKCRzdHIsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAkY29udGVudFtdID0gJHN0cjsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRvayA9PT0gJyN7JyAmJiAkdGhpcy0+aW50ZXJwb2xhdGlvbigkaW50ZXIpKSB7CiAgICAgICAgICAgICAgICAkY29udGVudFtdID0gJGludGVyOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjb250ZW50W10gPSAkdG9rOwogICAgICAgICAgICAkdGhpcy0+Y291bnQgKz0gXHN0cmxlbigkdG9rKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSAkb2xkV2hpdGU7CgogICAgICAgIGlmICghICRjb250ZW50IHx8ICR0b2sgIT09ICRlbmQpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gdHJpbSB0aGUgZW5kCiAgICAgICAgaWYgKCRydHJpbSAmJiBcaXNfc3RyaW5nKGVuZCgkY29udGVudCkpKSB7CiAgICAgICAgICAgICRjb250ZW50W1xjb3VudCgkY29udGVudCkgLSAxXSA9IHJ0cmltKGVuZCgkY29udGVudCkpOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9IFtUeXBlOjpUX1NUUklORywgJycsICRjb250ZW50XTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXIgaW50ZXJwb2xhdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJG91dAogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAkbG9va1doaXRlIHNhdmUgaW5mb3JtYXRpb24gYWJvdXQgd2hpdGVzcGFjZSBiZWZvcmUgYW5kIGFmdGVyCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbnRlcnBvbGF0aW9uKCYkb3V0LCAkbG9va1doaXRlID0gdHJ1ZSkKICAgIHsKICAgICAgICAkb2xkV2hpdGUgPSAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0OwogICAgICAgICRhbGxvd1ZhcnMgPSAkdGhpcy0+YWxsb3dWYXJzOwogICAgICAgICR0aGlzLT5hbGxvd1ZhcnMgPSB0cnVlOwogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSB0cnVlOwoKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnI3snLCAyKSAmJgogICAgICAgICAgICAkdGhpcy0+dmFsdWVMaXN0KCR2YWx1ZSkgJiYKICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignfScsIGZhbHNlKQogICAgICAgICkgewogICAgICAgICAgICBpZiAoJHZhbHVlID09PSBbVHlwZTo6VF9TRUxGXSkgewogICAgICAgICAgICAgICAgJG91dCA9ICR2YWx1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkbG9va1doaXRlKSB7CiAgICAgICAgICAgICAgICAgICAgJGxlZnQgPSAoJHMgPiAwICYmIHByZWdfbWF0Y2goJy9ccy8nLCAkdGhpcy0+YnVmZmVyWyRzIC0gMV0pKSA/ICcgJyA6ICcnOwogICAgICAgICAgICAgICAgICAgICRyaWdodCA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgISBlbXB0eSgkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudF0pICYmCiAgICAgICAgICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goJy9ccy8nLCAkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudF0pCiAgICAgICAgICAgICAgICAgICAgKSA/ICcgJyA6ICcnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbGVmdCA9ICRyaWdodCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9JTlRFUlBPTEFURSwgJHZhbHVlLCAkbGVmdCwgJHJpZ2h0XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9ICRvbGRXaGl0ZTsKICAgICAgICAgICAgJHRoaXMtPmFsbG93VmFycyA9ICRhbGxvd1ZhcnM7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCkgewogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSAkb2xkV2hpdGU7CiAgICAgICAgJHRoaXMtPmFsbG93VmFycyA9ICRhbGxvd1ZhcnM7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIHByb3BlcnR5IG5hbWUgKGFzIGFuIGFycmF5IG9mIHBhcnRzIG9yIGEgc3RyaW5nKQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwcm9wZXJ0eU5hbWUoJiRvdXQpCiAgICB7CiAgICAgICAgJHBhcnRzID0gW107CgogICAgICAgICRvbGRXaGl0ZSA9ICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQ7CiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9IGZhbHNlOwoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aW50ZXJwb2xhdGlvbigkaW50ZXIpKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRpbnRlcjsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPmtleXdvcmQoJHRleHQpKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICR0ZXh0OwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghICRwYXJ0cyAmJiAkdGhpcy0+bWF0Y2goJ1s6LiNdJywgJG0sIGZhbHNlKSkgewogICAgICAgICAgICAgICAgLy8gY3NzIGhhY2tzCiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRtWzBdOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9ICRvbGRXaGl0ZTsKCiAgICAgICAgaWYgKCEgJHBhcnRzKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8vIG1hdGNoIGNvbW1lbnQgaGFjawogICAgICAgIGlmIChwcmVnX21hdGNoKHN0YXRpYzo6JHdoaXRlUGF0dGVybiwgJHRoaXMtPmJ1ZmZlciwgJG0sIDAsICR0aGlzLT5jb3VudCkpIHsKICAgICAgICAgICAgaWYgKCEgZW1wdHkoJG1bMF0pKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRtWzBdOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50ICs9IFxzdHJsZW4oJG1bMF0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOyAvLyBnZXQgYW55IGV4dHJhIHdoaXRlc3BhY2UKCiAgICAgICAgJG91dCA9IFtUeXBlOjpUX1NUUklORywgJycsICRwYXJ0c107CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgY3VzdG9tIHByb3BlcnR5IG5hbWUgKGFzIGFuIGFycmF5IG9mIHBhcnRzIG9yIGEgc3RyaW5nKQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjdXN0b21Qcm9wZXJ0eSgmJG91dCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKCEgJHRoaXMtPmxpdGVyYWwoJy0tJywgMiwgZmFsc2UpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRwYXJ0cyA9IFsnLS0nXTsKCiAgICAgICAgJG9sZFdoaXRlID0gJHRoaXMtPmVhdFdoaXRlRGVmYXVsdDsKICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gZmFsc2U7CgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5pbnRlcnBvbGF0aW9uKCRpbnRlcikpIHsKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJGludGVyOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcmJywgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9IFtUeXBlOjpUX1NFTEZdOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+dmFyaWFibGUoJHZhcikpIHsKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHZhcjsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPmtleXdvcmQoJHRleHQpKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICR0ZXh0OwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9ICRvbGRXaGl0ZTsKCiAgICAgICAgaWYgKFxjb3VudCgkcGFydHMpID09IDEpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsgLy8gZ2V0IGFueSBleHRyYSB3aGl0ZXNwYWNlCgogICAgICAgICRvdXQgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCAkcGFydHNdOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGNvbW1hIHNlcGFyYXRlZCBzZWxlY3RvciBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqIEBwYXJhbSBzdHJpbmd8Ym9vbCAkc3ViU2VsZWN0b3IKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNlbGVjdG9ycygmJG91dCwgJHN1YlNlbGVjdG9yID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgJHNlbGVjdG9ycyA9IFtdOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPnNlbGVjdG9yKCRzZWwsICRzdWJTZWxlY3RvcikpIHsKICAgICAgICAgICAgJHNlbGVjdG9yc1tdID0gJHNlbDsKCiAgICAgICAgICAgIGlmICghICR0aGlzLT5tYXRjaENoYXIoJywnLCB0cnVlKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHdoaWxlICgkdGhpcy0+bWF0Y2hDaGFyKCcsJywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgIDsgLy8gaWdub3JlIGV4dHJhCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghICRzZWxlY3RvcnMpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRzZWxlY3RvcnM7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2Ugd2hpdGVzcGFjZSBzZXBhcmF0ZWQgc2VsZWN0b3IgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAkb3V0CiAgICAgKiBAcGFyYW0gc3RyaW5nfGJvb2wgJHN1YlNlbGVjdG9yCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZWxlY3RvcigmJG91dCwgJHN1YlNlbGVjdG9yID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHNlbGVjdG9yID0gW107CgogICAgICAgICRkaXNjYXJkQ29tbWVudHMgPSAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzOwogICAgICAgICR0aGlzLT5kaXNjYXJkQ29tbWVudHMgPSB0cnVlOwoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaCgnWz4rfl0rJywgJG0sIHRydWUpKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJHN1YlNlbGVjdG9yICYmIFxpc19zdHJpbmcoJHN1YlNlbGVjdG9yKSAmJiBzdHJwb3MoJHN1YlNlbGVjdG9yLCAnbnRoLScpID09PSAwICYmCiAgICAgICAgICAgICAgICAgICAgJG1bMF0gPT09ICcrJyAmJiAkdGhpcy0+bWF0Y2goIihcZCt8blxiKSIsICRjb3VudGVyKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3JbXSA9IFskbVswXV07CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2VsZWN0b3JTaW5nbGUoJHBhcnQsICRzdWJTZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICRzZWxlY3RvcltdID0gJHBhcnQ7CiAgICAgICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmRpc2NhcmRDb21tZW50cyA9ICRkaXNjYXJkQ29tbWVudHM7CgogICAgICAgIGlmICghICRzZWxlY3RvcikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkb3V0ID0gJHNlbGVjdG9yOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHBhcnNpbmcgZXNjYXBlZCBjaGFycyBpbiBzZWxlY3RvcnM6CiAgICAgKiAtIGVzY2FwZWQgc2luZ2xlIGNoYXJzIGFyZSBrZXB0IGVzY2FwZWQgaW4gdGhlIHNlbGVjdG9yIGJ1dCBpbiBhIG5vcm1hbGl6ZWQgZm9ybQogICAgICogICAoaWYgbm90IGluIDAtOWEtZiByYW5nZSBhcyB0aGlzIHdvdWxkIGJlIGFtYmlnb3VzKQogICAgICogLSBvdGhlciBlc2NhcGVkIHNlcXVlbmNlcyAobXVsdGlieXRlIGNoYXJzIG9yIDAtOWEtZikgYXJlIGtlcHQgaW4gdGhlaXIgaW5pdGlhbCBlc2NhcGVkIGZvcm0sCiAgICAgKiAgIG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlCiAgICAgKgogICAgICogVE9ETzogdGhpcyBpcyBhIGZhbGxiYWNrIHNvbHV0aW9uLiBJZGVhbGx5IGVzY2FwZWQgY2hhcnMgaW4gc2VsZWN0b3JzIHNob3VsZCBiZSBlbmNvZGVkIGFzIHRoZSBnZW51aW5lIGNoYXJzLAogICAgICogYW5kIGVzY2FwaW5nIGFkZGVkIHdoZW4gcHJpbnRpbmcgaW4gdGhlIENvbXBpbGVyLCB3aGVyZS9pZiBpdCdzIG1hbmRhdG9yeQogICAgICogLSBidXQgdGhpcyByZXF1aXJlIGEgYmV0dGVyIGZvcm1hbCBzZWxlY3RvciByZXByZXNlbnRhdGlvbiBpbnN0ZWFkIG9mIHRoZSBhcnJheSB3ZSBoYXZlIG5vdwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG91dAogICAgICogQHBhcmFtIGJvb2wgICAka2VlcEVzY2FwZWROdW1iZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1hdGNoRXNjYXBlQ2hhcmFjdGVySW5TZWxlY3RvcigmJG91dCwgJGtlZXBFc2NhcGVkTnVtYmVyID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHNfZXNjYXBlID0gJHRoaXMtPmNvdW50OwogICAgICAgIGlmICgkdGhpcy0+bWF0Y2goJ1xcXFwnLCAkbSkpIHsKICAgICAgICAgICAgJG91dCA9ICdcXCcgLiAkbVswXTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoRXNjYXBlQ2hhcmFjdGVyKCRlc2NhcGVkb3V0LCB0cnVlKSkgewogICAgICAgICAgICBpZiAoc3RybGVuKCRlc2NhcGVkb3V0KSA9PT0gMSkgewogICAgICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCIsXHcsIiwgJGVzY2FwZWRvdXQpKSB7CiAgICAgICAgICAgICAgICAgICAgJG91dCA9ICdcXCcgLiAkZXNjYXBlZG91dDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICghICRrZWVwRXNjYXBlZE51bWJlciB8fCAhIFxpc19udW1lcmljKCRlc2NhcGVkb3V0KSkgewogICAgICAgICAgICAgICAgICAgICRvdXQgPSAkZXNjYXBlZG91dDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkZXNjYXBlX3NlcXVlbmNlID0gcnRyaW0oc3Vic3RyKCR0aGlzLT5idWZmZXIsICRzX2VzY2FwZSwgJHRoaXMtPmNvdW50IC0gJHNfZXNjYXBlKSk7CiAgICAgICAgICAgIGlmIChzdHJsZW4oJGVzY2FwZV9zZXF1ZW5jZSkgPCA2KSB7CiAgICAgICAgICAgICAgICAkZXNjYXBlX3NlcXVlbmNlIC49ICcgJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3V0ID0gJ1xcJyAuIHN0cnRvbG93ZXIoJGVzY2FwZV9zZXF1ZW5jZSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPm1hdGNoKCdcXFMnLCAkbSkpIHsKICAgICAgICAgICAgJG91dCA9ICdcXCcgLiAkbVswXTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgdGhlIHBhcnRzIHRoYXQgbWFrZSB1cCBhIHNlbGVjdG9yCiAgICAgKgogICAgICoge0BpbnRlcm5hbAogICAgICogICAgIGRpdlt5ZXM9bm9dI3NvbWV0aGluZy5oZWxsby53b3JsZDpudGgtY2hpbGQoLTJuKzEpJXBsYWNlaG9sZGVyCiAgICAgKiB9fQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAkb3V0CiAgICAgKiBAcGFyYW0gc3RyaW5nfGJvb2wgJHN1YlNlbGVjdG9yCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZWxlY3RvclNpbmdsZSgmJG91dCwgJHN1YlNlbGVjdG9yID0gZmFsc2UpCiAgICB7CiAgICAgICAgJG9sZFdoaXRlID0gJHRoaXMtPmVhdFdoaXRlRGVmYXVsdDsKICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gZmFsc2U7CgogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignKicsIGZhbHNlKSkgewogICAgICAgICAgICAkcGFydHNbXSA9ICcqJzsKICAgICAgICB9CgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaWYgKCEgaXNzZXQoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnRdKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzID0gJHRoaXMtPmNvdW50OwogICAgICAgICAgICAkY2hhciA9ICR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XTsKCiAgICAgICAgICAgIC8vIHNlZSBpZiB3ZSBjYW4gc3RvcCBlYXJseQogICAgICAgICAgICBpZiAoJGNoYXIgPT09ICd7JyB8fCAkY2hhciA9PT0gJywnIHx8ICRjaGFyID09PSAnOycgfHwgJGNoYXIgPT09ICd9JyB8fCAkY2hhciA9PT0gJ0AnKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gcGFyc2luZyBhIHN1YiBzZWxlY3RvciBpbiAoKSBzdG9wIHdpdGggdGhlIGNsb3NpbmcgKQogICAgICAgICAgICBpZiAoJHN1YlNlbGVjdG9yICYmICRjaGFyID09PSAnKScpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL3NlbGYKICAgICAgICAgICAgc3dpdGNoICgkY2hhcikgewogICAgICAgICAgICAgICAgY2FzZSAnJic6CiAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSBDb21waWxlcjo6JHNlbGZTZWxlY3RvcjsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlLCAkcyk7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKCiAgICAgICAgICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICcuJzsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3wnOgogICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJ3wnOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCsrOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGhhbmRsaW5nIG9mIGVzY2FwaW5nIGluIHNlbGVjdG9ycyA6IGdldCB0aGUgZXNjYXBlZCBjaGFyCiAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJ1xcJykgewogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50Kys7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGNoRXNjYXBlQ2hhcmFjdGVySW5TZWxlY3RvcigkZXNjYXBlZCwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRlc2NhcGVkOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50LS07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJyUnKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQrKzsKCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnBsYWNlaG9sZGVyKCRwbGFjZWhvbGRlcikpIHsKICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICclJzsKICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRwbGFjZWhvbGRlcjsKICAgICAgICAgICAgICAgICAgICAhICR0aGlzLT5jc3NPbmx5IHx8ICR0aGlzLT5hc3NlcnRQbGFpbkNzc1ZhbGlkKGZhbHNlLCAkcyk7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJyMnKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmludGVycG9sYXRpb24oJGludGVyKSkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJGludGVyOwogICAgICAgICAgICAgICAgICAgICEgJHRoaXMtPmNzc09ubHkgfHwgJHRoaXMtPmFzc2VydFBsYWluQ3NzVmFsaWQoZmFsc2UsICRzKTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICcjJzsKICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCsrOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGEgcHNldWRvIHNlbGVjdG9yCiAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJzonKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnQgKyAxXSA9PT0gJzonKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50ICs9IDI7CiAgICAgICAgICAgICAgICAgICAgJHBhcnQgPSAnOjonOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICAkcGFydCA9ICc6JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1peGVkS2V5d29yZCgkbmFtZVBhcnRzLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHBhcnQ7CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRuYW1lUGFydHMgYXMgJHN1YikgewogICAgICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRzdWI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkc3MgPSAkdGhpcy0+Y291bnQ7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVQYXJ0cyA9PT0gWydub3QnXSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZVBhcnRzID09PSBbJ2lzJ10gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVQYXJ0cyA9PT0gWydoYXMnXSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZVBhcnRzID09PSBbJ3doZXJlJ10gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVQYXJ0cyA9PT0gWydzbG90dGVkJ10gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVQYXJ0cyA9PT0gWydudGgtY2hpbGQnXSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZVBhcnRzID09PSBbJ250aC1sYXN0LWNoaWxkJ10gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVQYXJ0cyA9PT0gWydudGgtb2YtdHlwZSddIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lUGFydHMgPT09IFsnbnRoLWxhc3Qtb2YtdHlwZSddCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJygnLCB0cnVlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCR0aGlzLT5zZWxlY3RvcnMoJHN1YnMsIHJlc2V0KCRuYW1lUGFydHMpKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKScpCiAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAnKCc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCRzdWIgPSBhcnJheV9zaGlmdCgkc3VicykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHBzID0gYXJyYXlfc2hpZnQoJHN1YikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHBzIGFzICYkcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxjb3VudCgkc3ViKSAmJiByZXNldCgkc3ViKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAnICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcY291bnQoJHN1YnMpICYmIHJlc2V0KCRzdWJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICcsICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJyknOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKCcsIHRydWUpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICgkdGhpcy0+b3BlblN0cmluZygnKScsICRzdHIsICcoJykgfHwgdHJ1ZSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKScpCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJygnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgZW1wdHkoJHN0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHN0cjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAnKSc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHNzKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICAvLyAybisxCiAgICAgICAgICAgIGlmICgkc3ViU2VsZWN0b3IgJiYgXGlzX3N0cmluZygkc3ViU2VsZWN0b3IpICYmIHN0cnBvcygkc3ViU2VsZWN0b3IsICdudGgtJykgPT09IDApIHsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2goIihccyooXCtccyp8XC1ccyopPyhcZCt8bnxcZCtuKSkrIiwgJGNvdW50ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkY291bnRlclswXTsKICAgICAgICAgICAgICAgICAgICAvLyRwYXJ0c1tdID0gc3RyX3JlcGxhY2UoJyAnLCAnJywgJGNvdW50ZXJbMF0pOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICAvLyBhdHRyaWJ1dGUgc2VsZWN0b3IKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJGNoYXIgPT09ICdbJyAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignWycpICYmCiAgICAgICAgICAgICAgICAoJHRoaXMtPm9wZW5TdHJpbmcoJ10nLCAkc3RyLCAnWycpIHx8IHRydWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCddJykKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICdbJzsKCiAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHN0cjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICddJzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICAvLyBmb3Iga2V5ZnJhbWVzCiAgICAgICAgICAgIGlmICgkdGhpcy0+dW5pdCgkdW5pdCkpIHsKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHVuaXQ7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5yZXN0cmljdGVkS2V5d29yZCgkbmFtZSwgZmFsc2UsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRuYW1lOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9ICRvbGRXaGl0ZTsKCiAgICAgICAgaWYgKCEgJHBhcnRzKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRvdXQgPSAkcGFydHM7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSB2YXJpYWJsZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB2YXJpYWJsZSgmJG91dCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCckJywgZmFsc2UpICYmCiAgICAgICAgICAgICR0aGlzLT5rZXl3b3JkKCRuYW1lKQogICAgICAgICkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmFsbG93VmFycykgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1ZBUklBQkxFLCAkbmFtZV07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfS0VZV09SRCwgJyQnIC4gJG5hbWVdOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSBrZXl3b3JkCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkd29yZAogICAgICogQHBhcmFtIGJvb2wgICAkZWF0V2hpdGVzcGFjZQogICAgICogQHBhcmFtIGJvb2wgICAkaW5TZWxlY3RvcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24ga2V5d29yZCgmJHdvcmQsICRlYXRXaGl0ZXNwYWNlID0gbnVsbCwgJGluU2VsZWN0b3IgPSBmYWxzZSkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICAkbWF0Y2ggPSAkdGhpcy0+bWF0Y2goCiAgICAgICAgICAgICR0aGlzLT51dGY4CiAgICAgICAgICAgICAgICA/ICcoKFtccExcd1x4ezAwQTB9LVx4ezEwRkZGRn1fXC1cKiEiXCddfFxcXFxbYS1mMC05XXs2fSA/fFxcXFxbYS1mMC05XXsxLDV9KD8hW2EtZjAtOV0pID98W1xcXFxdLikoW1xwTFx3XHh7MDBBMH0tXHh7MTBGRkZGfVwtXyJcJ118XFxcXFthLWYwLTldezZ9ID98XFxcXFthLWYwLTldezEsNX0oPyFbYS1mMC05XSkgP3xbXFxcXF0uKSopJwogICAgICAgICAgICAgICAgOiAnKChbXHdfXC1cKiEiXCddfFxcXFxbYS1mMC05XXs2fSA/fFxcXFxbYS1mMC05XXsxLDV9KD8hW2EtZjAtOV0pID98W1xcXFxdLikoW1x3XC1fIlwnXXxcXFxcW2EtZjAtOV17Nn0gP3xcXFxcW2EtZjAtOV17MSw1fSg/IVthLWYwLTldKSA/fFtcXFxcXS4pKiknLAogICAgICAgICAgICAkbSwKICAgICAgICAgICAgZmFsc2UKICAgICAgICApOwoKICAgICAgICBpZiAoJG1hdGNoKSB7CiAgICAgICAgICAgICR3b3JkID0gJG1bMV07CgogICAgICAgICAgICAvLyBoYW5kbGluZyBvZiBlc2NhcGluZyBpbiBrZXl3b3JkIDogZ2V0IHRoZSBlc2NhcGVkIGNoYXIKICAgICAgICAgICAgaWYgKHN0cnBvcygkd29yZCwgJ1xcJykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkc2VuZCA9ICR0aGlzLT5jb3VudDsKICAgICAgICAgICAgICAgICRlc2NhcGVkV29yZCA9IFtdOwogICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgICAgICAgICAgJHByZXZpb3VzRXNjYXBlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB3aGlsZSAoJHRoaXMtPmNvdW50IDwgJHNlbmQpIHsKICAgICAgICAgICAgICAgICAgICAkY2hhciA9ICR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCA8ICRzZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRjaGFyID09PSAnXFwnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICEkcHJldmlvdXNFc2NhcGUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluU2VsZWN0b3IgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaEVzY2FwZUNoYXJhY3RlckluU2VsZWN0b3IoJG91dCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoRXNjYXBlQ2hhcmFjdGVyKCRvdXQsIHRydWUpCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVzY2FwZWRXb3JkW10gPSAkb3V0OwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcHJldmlvdXNFc2NhcGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmV2aW91c0VzY2FwZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGNoYXIgPT09ICdcXCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmV2aW91c0VzY2FwZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGVzY2FwZWRXb3JkW10gPSAkY2hhcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHdvcmQgPSBpbXBsb2RlKCcnLCAkZXNjYXBlZFdvcmQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNfbnVsbCgkZWF0V2hpdGVzcGFjZSkgPyAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0IDogJGVhdFdoaXRlc3BhY2UpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSBrZXl3b3JkIHRoYXQgc2hvdWxkIG5vdCBzdGFydCB3aXRoIGEgbnVtYmVyCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkd29yZAogICAgICogQHBhcmFtIGJvb2wgICAkZWF0V2hpdGVzcGFjZQogICAgICogQHBhcmFtIGJvb2wgICAkaW5TZWxlY3RvcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVzdHJpY3RlZEtleXdvcmQoJiR3b3JkLCAkZWF0V2hpdGVzcGFjZSA9IG51bGwsICRpblNlbGVjdG9yID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CgogICAgICAgIGlmICgkdGhpcy0+a2V5d29yZCgkd29yZCwgJGVhdFdoaXRlc3BhY2UsICRpblNlbGVjdG9yKSAmJiAoXG9yZCgkd29yZFswXSkgPiA1NyB8fCBcb3JkKCR3b3JkWzBdKSA8IDQ4KSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSBwbGFjZWhvbGRlcgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJHBsYWNlaG9sZGVyCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwbGFjZWhvbGRlcigmJHBsYWNlaG9sZGVyKQogICAgewogICAgICAgICRtYXRjaCA9ICR0aGlzLT5tYXRjaCgKICAgICAgICAgICAgJHRoaXMtPnV0ZjgKICAgICAgICAgICAgICAgID8gJyhbXHBMXHdcLV9dKyknCiAgICAgICAgICAgICAgICA6ICcoW1x3XC1fXSspJywKICAgICAgICAgICAgJG0KICAgICAgICApOwoKICAgICAgICBpZiAoJG1hdGNoKSB7CiAgICAgICAgICAgICRwbGFjZWhvbGRlciA9ICRtWzFdOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmludGVycG9sYXRpb24oJHBsYWNlaG9sZGVyKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGEgdXJsCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHVybCgmJG91dCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ3VybCgnLCA0KSkgewogICAgICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICgkdGhpcy0+c3RyaW5nKCRvdXQpIHx8ICR0aGlzLT5zcGFjZUxpc3QoJG91dCkpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgWyd1cmwoJywgJG91dCwgJyknXV07CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0aGlzLT5vcGVuU3RyaW5nKCcpJywgJG91dCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJ3VybCgnLCAkb3V0LCAnKSddXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZSBhbiBlbmQgb2Ygc3RhdGVtZW50IGRlbGltaXRlcgogICAgICogQHBhcmFtIGJvb2wgJGVhdFdoaXRlc3BhY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGVuZCgkZWF0V2hpdGVzcGFjZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJzsnLCAkZWF0V2hpdGVzcGFjZSkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmNvdW50ID09PSBcc3RybGVuKCR0aGlzLT5idWZmZXIpIHx8ICR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSA9PT0gJ30nKSB7CiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGVuZCBvZiBmaWxlIG9yIGEgY2xvc2luZyBibG9jayBuZXh0IHRoZW4gd2UgZG9uJ3QgbmVlZCBhIDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdHJpcCBhc3NpZ25tZW50IGZsYWcgZnJvbSB0aGUgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzdHJpcEFzc2lnbm1lbnRGbGFncygmJHZhbHVlKQogICAgewogICAgICAgICRmbGFncyA9IFtdOwoKICAgICAgICBmb3IgKCR0b2tlbiA9ICYkdmFsdWU7ICR0b2tlblswXSA9PT0gVHlwZTo6VF9MSVNUICYmICgkcyA9IFxjb3VudCgkdG9rZW5bMl0pKTsgJHRva2VuID0gJiRsYXN0Tm9kZSkgewogICAgICAgICAgICAkbGFzdE5vZGUgPSAmJHRva2VuWzJdWyRzIC0gMV07CgogICAgICAgICAgICB3aGlsZSAoJGxhc3ROb2RlWzBdID09PSBUeXBlOjpUX0tFWVdPUkQgJiYgXGluX2FycmF5KCRsYXN0Tm9kZVsxXSwgWychZGVmYXVsdCcsICchZ2xvYmFsJ10pKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJHRva2VuWzJdKTsKCiAgICAgICAgICAgICAgICAkbm9kZSAgICAgPSBlbmQoJHRva2VuWzJdKTsKICAgICAgICAgICAgICAgICR0b2tlbiAgICA9ICR0aGlzLT5mbGF0dGVuTGlzdCgkdG9rZW4pOwogICAgICAgICAgICAgICAgJGZsYWdzW10gID0gJGxhc3ROb2RlWzFdOwogICAgICAgICAgICAgICAgJGxhc3ROb2RlID0gJG5vZGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZmxhZ3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdHJpcCBvcHRpb25hbCBmbGFnIGZyb20gc2VsZWN0b3IgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkc2VsZWN0b3JzCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzdHJpcE9wdGlvbmFsRmxhZygmJHNlbGVjdG9ycykKICAgIHsKICAgICAgICAkb3B0aW9uYWwgPSBmYWxzZTsKICAgICAgICAkc2VsZWN0b3IgPSBlbmQoJHNlbGVjdG9ycyk7CiAgICAgICAgJHBhcnQgICAgID0gZW5kKCRzZWxlY3Rvcik7CgogICAgICAgIGlmICgkcGFydCA9PT0gWychb3B0aW9uYWwnXSkgewogICAgICAgICAgICBhcnJheV9wb3AoJHNlbGVjdG9yc1tcY291bnQoJHNlbGVjdG9ycykgLSAxXSk7CgogICAgICAgICAgICAkb3B0aW9uYWwgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvcHRpb25hbDsKICAgIH0KCiAgICAvKioKICAgICAqIFR1cm4gbGlzdCBvZiBsZW5ndGggMSBpbnRvIHZhbHVlIHR5cGUKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmxhdHRlbkxpc3QoJHZhbHVlKQogICAgewogICAgICAgIGlmICgkdmFsdWVbMF0gPT09IFR5cGU6OlRfTElTVCAmJiBcY291bnQoJHZhbHVlWzJdKSA9PT0gMSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZsYXR0ZW5MaXN0KCR2YWx1ZVsyXVswXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogUXVvdGUgcmVndWxhciBleHByZXNzaW9uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkd2hhdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcHJlZ1F1b3RlKCR3aGF0KQogICAgewogICAgICAgIHJldHVybiBwcmVnX3F1b3RlKCR3aGF0LCAnLycpOwogICAgfQoKICAgIC8qKgogICAgICogRXh0cmFjdCBsaW5lIG51bWJlcnMgZnJvbSBidWZmZXIKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRidWZmZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBleHRyYWN0TGluZU51bWJlcnMoJGJ1ZmZlcikKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlUG9zaXRpb25zID0gWzAgPT4gMF07CiAgICAgICAgJHByZXYgPSAwOwoKICAgICAgICB3aGlsZSAoKCRwb3MgPSBzdHJwb3MoJGJ1ZmZlciwgIlxuIiwgJHByZXYpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZVBvc2l0aW9uc1tdID0gJHBvczsKICAgICAgICAgICAgJHByZXYgPSAkcG9zICsgMTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zb3VyY2VQb3NpdGlvbnNbXSA9IFxzdHJsZW4oJGJ1ZmZlcik7CgogICAgICAgIGlmIChzdWJzdHIoJGJ1ZmZlciwgLTEpICE9PSAiXG4iKSB7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VQb3NpdGlvbnNbXSA9IFxzdHJsZW4oJGJ1ZmZlcikgKyAxOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBzb3VyY2UgbGluZSBudW1iZXIgYW5kIGNvbHVtbiAoZ2l2ZW4gY2hhcmFjdGVyIHBvc2l0aW9uIGluIHRoZSBidWZmZXIpCiAgICAgKgogICAgICogQHBhcmFtIGludCAkcG9zCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICogQHBocHN0YW4tcmV0dXJuIGFycmF5e2ludCwgaW50fQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFNvdXJjZVBvc2l0aW9uKCRwb3MpCiAgICB7CiAgICAgICAgJGxvdyA9IDA7CiAgICAgICAgJGhpZ2ggPSBcY291bnQoJHRoaXMtPnNvdXJjZVBvc2l0aW9ucyk7CgogICAgICAgIHdoaWxlICgkbG93IDwgJGhpZ2gpIHsKICAgICAgICAgICAgJG1pZCA9IChpbnQpICgoJGhpZ2ggKyAkbG93KSAvIDIpOwoKICAgICAgICAgICAgaWYgKCRwb3MgPCAkdGhpcy0+c291cmNlUG9zaXRpb25zWyRtaWRdKSB7CiAgICAgICAgICAgICAgICAkaGlnaCA9ICRtaWQgLSAxOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcG9zID49ICR0aGlzLT5zb3VyY2VQb3NpdGlvbnNbJG1pZCArIDFdKSB7CiAgICAgICAgICAgICAgICAkbG93ID0gJG1pZCArIDE7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFskbWlkICsgMSwgJHBvcyAtICR0aGlzLT5zb3VyY2VQb3NpdGlvbnNbJG1pZF1dOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskbG93ICsgMSwgJHBvcyAtICR0aGlzLT5zb3VyY2VQb3NpdGlvbnNbJGxvd11dOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZSBpbnRlcm5hbCBlbmNvZGluZyBvZiBtYnN0cmluZwogICAgICoKICAgICAqIFdoZW4gbWJzdHJpbmcuZnVuY19vdmVybG9hZCBpcyB1c2VkIHRvIHJlcGxhY2UgdGhlIHN0YW5kYXJkIFBIUCBzdHJpbmcgZnVuY3Rpb25zLAogICAgICogdGhpcyBtZXRob2QgY29uZmlndXJlcyB0aGUgaW50ZXJuYWwgZW5jb2RpbmcgdG8gYSBzaW5nbGUtYnl0ZSBvbmUgc28gdGhhdCB0aGUKICAgICAqIGJlaGF2aW9yIG1hdGNoZXMgdGhlIG5vcm1hbCBiZWhhdmlvciBvZiBQSFAgc3RyaW5nIGZ1bmN0aW9ucyB3aGlsZSB1c2luZyB0aGUgcGFyc2VyLgogICAgICogVGhlIGV4aXN0aW5nIGludGVybmFsIGVuY29kaW5nIGlzIHNhdmVkIGFuZCB3aWxsIGJlIHJlc3RvcmVkIHdoZW4gY2FsbGluZyB7QHNlZSByZXN0b3JlRW5jb2Rpbmd9LgogICAgICoKICAgICAqIElmIG1ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQgaXMgbm90IHVzZWQgKG9yIGRvZXMgbm90IG92ZXJyaWRlIHN0cmluZyBmdW5jdGlvbnMpLCB0aGlzIG1ldGhvZCBpcyBhIG5vLW9wLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNhdmVFbmNvZGluZygpCiAgICB7CiAgICAgICAgaWYgKFxQSFBfVkVSU0lPTl9JRCA8IDgwMDAwICYmIFxleHRlbnNpb25fbG9hZGVkKCdtYnN0cmluZycpICYmICgyICYgKGludCkgaW5pX2dldCgnbWJzdHJpbmcuZnVuY19vdmVybG9hZCcpKSA+IDApIHsKICAgICAgICAgICAgJHRoaXMtPmVuY29kaW5nID0gbWJfaW50ZXJuYWxfZW5jb2RpbmcoKTsKCiAgICAgICAgICAgIG1iX2ludGVybmFsX2VuY29kaW5nKCdpc28tODg1OS0xJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVzdG9yZSBpbnRlcm5hbCBlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlc3RvcmVFbmNvZGluZygpCiAgICB7CiAgICAgICAgaWYgKFxleHRlbnNpb25fbG9hZGVkKCdtYnN0cmluZycpICYmICR0aGlzLT5lbmNvZGluZykgewogICAgICAgICAgICBtYl9pbnRlcm5hbF9lbmNvZGluZygkdGhpcy0+ZW5jb2RpbmcpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/Base64.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcDsKCi8qKgogKiBCYXNlIDY0IEVuY29kZS9EZWNvZGUKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIEJhc2U2NAp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8aW50LCBzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRlbmNvZGluZ01hcCA9IFsKICAgICAgICAwID0+ICdBJywKICAgICAgICAxID0+ICdCJywKICAgICAgICAyID0+ICdDJywKICAgICAgICAzID0+ICdEJywKICAgICAgICA0ID0+ICdFJywKICAgICAgICA1ID0+ICdGJywKICAgICAgICA2ID0+ICdHJywKICAgICAgICA3ID0+ICdIJywKICAgICAgICA4ID0+ICdJJywKICAgICAgICA5ID0+ICdKJywKICAgICAgICAxMCA9PiAnSycsCiAgICAgICAgMTEgPT4gJ0wnLAogICAgICAgIDEyID0+ICdNJywKICAgICAgICAxMyA9PiAnTicsCiAgICAgICAgMTQgPT4gJ08nLAogICAgICAgIDE1ID0+ICdQJywKICAgICAgICAxNiA9PiAnUScsCiAgICAgICAgMTcgPT4gJ1InLAogICAgICAgIDE4ID0+ICdTJywKICAgICAgICAxOSA9PiAnVCcsCiAgICAgICAgMjAgPT4gJ1UnLAogICAgICAgIDIxID0+ICdWJywKICAgICAgICAyMiA9PiAnVycsCiAgICAgICAgMjMgPT4gJ1gnLAogICAgICAgIDI0ID0+ICdZJywKICAgICAgICAyNSA9PiAnWicsCiAgICAgICAgMjYgPT4gJ2EnLAogICAgICAgIDI3ID0+ICdiJywKICAgICAgICAyOCA9PiAnYycsCiAgICAgICAgMjkgPT4gJ2QnLAogICAgICAgIDMwID0+ICdlJywKICAgICAgICAzMSA9PiAnZicsCiAgICAgICAgMzIgPT4gJ2cnLAogICAgICAgIDMzID0+ICdoJywKICAgICAgICAzNCA9PiAnaScsCiAgICAgICAgMzUgPT4gJ2onLAogICAgICAgIDM2ID0+ICdrJywKICAgICAgICAzNyA9PiAnbCcsCiAgICAgICAgMzggPT4gJ20nLAogICAgICAgIDM5ID0+ICduJywKICAgICAgICA0MCA9PiAnbycsCiAgICAgICAgNDEgPT4gJ3AnLAogICAgICAgIDQyID0+ICdxJywKICAgICAgICA0MyA9PiAncicsCiAgICAgICAgNDQgPT4gJ3MnLAogICAgICAgIDQ1ID0+ICd0JywKICAgICAgICA0NiA9PiAndScsCiAgICAgICAgNDcgPT4gJ3YnLAogICAgICAgIDQ4ID0+ICd3JywKICAgICAgICA0OSA9PiAneCcsCiAgICAgICAgNTAgPT4gJ3knLAogICAgICAgIDUxID0+ICd6JywKICAgICAgICA1MiA9PiAnMCcsCiAgICAgICAgNTMgPT4gJzEnLAogICAgICAgIDU0ID0+ICcyJywKICAgICAgICA1NSA9PiAnMycsCiAgICAgICAgNTYgPT4gJzQnLAogICAgICAgIDU3ID0+ICc1JywKICAgICAgICA1OCA9PiAnNicsCiAgICAgICAgNTkgPT4gJzcnLAogICAgICAgIDYwID0+ICc4JywKICAgICAgICA2MSA9PiAnOScsCiAgICAgICAgNjIgPT4gJysnLAogICAgICAgIDYzID0+ICcvJywKICAgIF07CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZ3xpbnQsIGludD4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJGRlY29kaW5nTWFwID0gWwogICAgICAgICdBJyA9PiAwLAogICAgICAgICdCJyA9PiAxLAogICAgICAgICdDJyA9PiAyLAogICAgICAgICdEJyA9PiAzLAogICAgICAgICdFJyA9PiA0LAogICAgICAgICdGJyA9PiA1LAogICAgICAgICdHJyA9PiA2LAogICAgICAgICdIJyA9PiA3LAogICAgICAgICdJJyA9PiA4LAogICAgICAgICdKJyA9PiA5LAogICAgICAgICdLJyA9PiAxMCwKICAgICAgICAnTCcgPT4gMTEsCiAgICAgICAgJ00nID0+IDEyLAogICAgICAgICdOJyA9PiAxMywKICAgICAgICAnTycgPT4gMTQsCiAgICAgICAgJ1AnID0+IDE1LAogICAgICAgICdRJyA9PiAxNiwKICAgICAgICAnUicgPT4gMTcsCiAgICAgICAgJ1MnID0+IDE4LAogICAgICAgICdUJyA9PiAxOSwKICAgICAgICAnVScgPT4gMjAsCiAgICAgICAgJ1YnID0+IDIxLAogICAgICAgICdXJyA9PiAyMiwKICAgICAgICAnWCcgPT4gMjMsCiAgICAgICAgJ1knID0+IDI0LAogICAgICAgICdaJyA9PiAyNSwKICAgICAgICAnYScgPT4gMjYsCiAgICAgICAgJ2InID0+IDI3LAogICAgICAgICdjJyA9PiAyOCwKICAgICAgICAnZCcgPT4gMjksCiAgICAgICAgJ2UnID0+IDMwLAogICAgICAgICdmJyA9PiAzMSwKICAgICAgICAnZycgPT4gMzIsCiAgICAgICAgJ2gnID0+IDMzLAogICAgICAgICdpJyA9PiAzNCwKICAgICAgICAnaicgPT4gMzUsCiAgICAgICAgJ2snID0+IDM2LAogICAgICAgICdsJyA9PiAzNywKICAgICAgICAnbScgPT4gMzgsCiAgICAgICAgJ24nID0+IDM5LAogICAgICAgICdvJyA9PiA0MCwKICAgICAgICAncCcgPT4gNDEsCiAgICAgICAgJ3EnID0+IDQyLAogICAgICAgICdyJyA9PiA0MywKICAgICAgICAncycgPT4gNDQsCiAgICAgICAgJ3QnID0+IDQ1LAogICAgICAgICd1JyA9PiA0NiwKICAgICAgICAndicgPT4gNDcsCiAgICAgICAgJ3cnID0+IDQ4LAogICAgICAgICd4JyA9PiA0OSwKICAgICAgICAneScgPT4gNTAsCiAgICAgICAgJ3onID0+IDUxLAogICAgICAgIDAgPT4gNTIsCiAgICAgICAgMSA9PiA1MywKICAgICAgICAyID0+IDU0LAogICAgICAgIDMgPT4gNTUsCiAgICAgICAgNCA9PiA1NiwKICAgICAgICA1ID0+IDU3LAogICAgICAgIDYgPT4gNTgsCiAgICAgICAgNyA9PiA1OSwKICAgICAgICA4ID0+IDYwLAogICAgICAgIDkgPT4gNjEsCiAgICAgICAgJysnID0+IDYyLAogICAgICAgICcvJyA9PiA2MywKICAgIF07CgogICAgLyoqCiAgICAgKiBDb252ZXJ0IHRvIGJhc2U2NAogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbmNvZGUoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjokZW5jb2RpbmdNYXBbJHZhbHVlXTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgZnJvbSBiYXNlNjQKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6JGRlY29kaW5nTWFwWyR2YWx1ZV07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/Base64VLQ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcDsKCi8qKgogKiBCYXNlIDY0IFZMUQogKgogKiBCYXNlZCBvbiB0aGUgQmFzZSA2NCBWTFEgaW1wbGVtZW50YXRpb24gaW4gQ2xvc3VyZSBDb21waWxlcjoKICogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWNvbXBpbGVyL2Jsb2IvbWFzdGVyL3NyYy9jb20vZ29vZ2xlL2RlYnVnZ2luZy9zb3VyY2VtYXAvQmFzZTY0VkxRLmphdmEKICoKICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4KICoKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqCiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICoKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICoKICogQGF1dGhvciBKb2huIExlbnogPGpvaG5sZW56QGdvb2dsZS5jb20+CiAqIEBhdXRob3IgQW50aG9uIFBhbmcgPGFudGhvbi5wYW5nQGdtYWlsLmNvbT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBCYXNlNjRWTFEKewogICAgLy8gQSBCYXNlNjQgVkxRIGRpZ2l0IGNhbiByZXByZXNlbnQgNSBiaXRzLCBzbyBpdCBpcyBiYXNlLTMyLgogICAgY29uc3QgVkxRX0JBU0VfU0hJRlQgPSA1OwoKICAgIC8vIEEgbWFzayBvZiBiaXRzIGZvciBhIFZMUSBkaWdpdCAoMTExMTEpLCAzMSBkZWNpbWFsLgogICAgY29uc3QgVkxRX0JBU0VfTUFTSyA9IDMxOwoKICAgIC8vIFRoZSBjb250aW51YXRpb24gYml0IGlzIHRoZSA2dGggYml0LgogICAgY29uc3QgVkxRX0NPTlRJTlVBVElPTl9CSVQgPSAzMjsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIFZMUSBlbmNvZGVkIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbmNvZGUoJHZhbHVlKQogICAgewogICAgICAgICRlbmNvZGVkID0gJyc7CiAgICAgICAgJHZscSA9IHNlbGY6OnRvVkxRU2lnbmVkKCR2YWx1ZSk7CgogICAgICAgIGRvIHsKICAgICAgICAgICAgJGRpZ2l0ID0gJHZscSAmIHNlbGY6OlZMUV9CQVNFX01BU0s7CgogICAgICAgICAgICAvLyR2bHEgPj4+PSBzZWxmOjpWTFFfQkFTRV9TSElGVDsgLy8gdW5zaWduZWQgcmlnaHQgc2hpZnQKICAgICAgICAgICAgJHZscSA9ICgoJHZscSA+PiAxKSAmIFBIUF9JTlRfTUFYKSA+PiAoc2VsZjo6VkxRX0JBU0VfU0hJRlQgLSAxKTsKCiAgICAgICAgICAgIGlmICgkdmxxID4gMCkgewogICAgICAgICAgICAgICAgJGRpZ2l0IHw9IHNlbGY6OlZMUV9DT05USU5VQVRJT05fQklUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZW5jb2RlZCAuPSBCYXNlNjQ6OmVuY29kZSgkZGlnaXQpOwogICAgICAgIH0gd2hpbGUgKCR2bHEgPiAwKTsKCiAgICAgICAgcmV0dXJuICRlbmNvZGVkOwogICAgfQoKICAgIC8qKgogICAgICogRGVjb2RlcyBWTFFWYWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIKICAgICAqIEBwYXJhbSBpbnQgICAgJGluZGV4CiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGUoJHN0ciwgJiRpbmRleCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gMDsKICAgICAgICAkc2hpZnQgPSAwOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICRjID0gJHN0clskaW5kZXgrK107CiAgICAgICAgICAgICRkaWdpdCA9IEJhc2U2NDo6ZGVjb2RlKCRjKTsKICAgICAgICAgICAgJGNvbnRpbnVhdGlvbiA9ICgkZGlnaXQgJiBzZWxmOjpWTFFfQ09OVElOVUFUSU9OX0JJVCkgIT0gMDsKICAgICAgICAgICAgJGRpZ2l0ICY9IHNlbGY6OlZMUV9CQVNFX01BU0s7CiAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzdWx0ICsgKCRkaWdpdCA8PCAkc2hpZnQpOwogICAgICAgICAgICAkc2hpZnQgPSAkc2hpZnQgKyBzZWxmOjpWTFFfQkFTRV9TSElGVDsKICAgICAgICB9IHdoaWxlICgkY29udGludWF0aW9uKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21WTFFTaWduZWQoJHJlc3VsdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBmcm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXMKICAgICAqIGlzIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiAgRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOgogICAgICogICAxIGJlY29tZXMgMiAoMTAgYmluYXJ5KSwgLTEgYmVjb21lcyAzICgxMSBiaW5hcnkpCiAgICAgKiAgIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdG9WTFFTaWduZWQoJHZhbHVlKQogICAgewogICAgICAgIGlmICgkdmFsdWUgPCAwKSB7CiAgICAgICAgICAgIHJldHVybiAoKC0kdmFsdWUpIDw8IDEpICsgMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoJHZhbHVlIDw8IDEpICsgMDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRvIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgZnJvbSBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpcwogICAgICogaXMgcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6CiAgICAgKiAgIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTEKICAgICAqICAgNCAoMTAwIGJpbmFyeSkgYmVjb21lcyAyLCA1ICgxMDEgYmluYXJ5KSBiZWNvbWVzIC0yCiAgICAgKgogICAgICogQHBhcmFtIGludCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmcm9tVkxRU2lnbmVkKCR2YWx1ZSkKICAgIHsKICAgICAgICAkbmVnYXRlID0gKCR2YWx1ZSAmIDEpID09PSAxOwoKICAgICAgICAvLyR2YWx1ZSA+Pj49IDE7IC8vIHVuc2lnbmVkIHJpZ2h0IHNoaWZ0CiAgICAgICAgJHZhbHVlID0gKCR2YWx1ZSA+PiAxKSAmIFBIUF9JTlRfTUFYOwoKICAgICAgICBpZiAoISAkbmVnYXRlKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICAvLyBXZSBuZWVkIHRvIE9SIDB4ODAwMDAwMDAgaGVyZSB0byBlbnN1cmUgdGhlIDMybmQgYml0ICh0aGUgc2lnbiBiaXQpIGlzCiAgICAgICAgLy8gYWx3YXlzIHNldCBmb3IgbmVnYXRpdmUgbnVtYmVycy4gSWYgYHZhbHVlYCB3ZXJlIDEsIChtZWFuaW5nIGBuZWdhdGVgIGlzCiAgICAgICAgLy8gdHJ1ZSBhbmQgYWxsIG90aGVyIGJpdHMgd2VyZSB6ZXJvcyksIGB2YWx1ZWAgd291bGQgbm93IGJlIDAuIC0wIGlzIGp1c3QKICAgICAgICAvLyAwLCBhbmQgZG9lc24ndCBmbGlwIHRoZSAzMm5kIGJpdCBhcyBpbnRlbmRlZC4gQWxsIHBvc2l0aXZlIG51bWJlcnMgd2lsbAogICAgICAgIC8vIHN1Y2Nlc3NmdWxseSBmbGlwIHRoZSAzMm5kIGJpdCB3aXRob3V0IGlzc3VlLCBzbyBpdCdzIGEgbm9vcCBmb3IgdGhlbS4KICAgICAgICByZXR1cm4gLSR2YWx1ZSB8IDB4ODAwMDAwMDA7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/SourceMapGenerator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcDsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXENvbXBpbGVyRXhjZXB0aW9uOwoKLyoqCiAqIFNvdXJjZSBNYXAgR2VuZXJhdG9yCiAqCiAqIHtAaW50ZXJuYWwgRGVyaXZhdGl2ZSBvZiBveWVqb3JnZS9sZXNzLnBocCdzIGxpYi9Tb3VyY2VNYXAvR2VuZXJhdG9yLnBocCwgcmVsaWNlbnNlZCB3aXRoIHBlcm1pc3Npb24uIH19CiAqCiAqIEBhdXRob3IgSm9zaCBTY2htaWR0IDxveWVqb3JnZUBnbWFpbC5jb20+CiAqIEBhdXRob3IgTmljb2xhcyBGUkFOw4dPSVMgPG5pY29sYXMuZnJhbmNvaXNAZnJvZy1sYWJzLmNvbT4KICoKICogQGludGVybmFsCiAqLwpjbGFzcyBTb3VyY2VNYXBHZW5lcmF0b3IKewogICAgLyoqCiAgICAgKiBXaGF0IHZlcnNpb24gb2Ygc291cmNlIG1hcCBkb2VzIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGU/CiAgICAgKi8KICAgIGNvbnN0IFZFUlNJT04gPSAzOwoKICAgIC8qKgogICAgICogQXJyYXkgb2YgZGVmYXVsdCBvcHRpb25zCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICogQHBocHN0YW4tdmFyIGFycmF5e3NvdXJjZVJvb3Q6IHN0cmluZywgc291cmNlTWFwRmlsZW5hbWU6IHN0cmluZ3xudWxsLCBzb3VyY2VNYXBVUkw6IHN0cmluZ3xudWxsLCBzb3VyY2VNYXBXcml0ZVRvOiBzdHJpbmd8bnVsbCwgb3V0cHV0U291cmNlRmlsZXM6IGJvb2wsIHNvdXJjZU1hcFJvb3RwYXRoOiBzdHJpbmcsIHNvdXJjZU1hcEJhc2VwYXRoOiBzdHJpbmd9CiAgICAgKi8KICAgIHByb3RlY3RlZCAkZGVmYXVsdE9wdGlvbnMgPSBbCiAgICAgICAgLy8gYW4gb3B0aW9uYWwgc291cmNlIHJvb3QsIHVzZWZ1bCBmb3IgcmVsb2NhdGluZyBzb3VyY2UgZmlsZXMKICAgICAgICAvLyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlICdzb3VyY2VzJyBlbnRyeS4KICAgICAgICAvLyBUaGlzIHZhbHVlIGlzIHByZXBlbmRlZCB0byB0aGUgaW5kaXZpZHVhbCBlbnRyaWVzIGluIHRoZSAnc291cmNlJyBmaWVsZC4KICAgICAgICAnc291cmNlUm9vdCcgPT4gJycsCgogICAgICAgIC8vIGFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBjb2RlIHRoYXQgdGhpcyBzb3VyY2UgbWFwIGlzIGFzc29jaWF0ZWQgd2l0aC4KICAgICAgICAnc291cmNlTWFwRmlsZW5hbWUnID0+IG51bGwsCgogICAgICAgIC8vIHVybCBvZiB0aGUgbWFwCiAgICAgICAgJ3NvdXJjZU1hcFVSTCcgPT4gbnVsbCwKCiAgICAgICAgLy8gYWJzb2x1dGUgcGF0aCB0byBhIGZpbGUgdG8gd3JpdGUgdGhlIG1hcCB0bwogICAgICAgICdzb3VyY2VNYXBXcml0ZVRvJyA9PiBudWxsLAoKICAgICAgICAvLyBvdXRwdXQgc291cmNlIGNvbnRlbnRzPwogICAgICAgICdvdXRwdXRTb3VyY2VGaWxlcycgPT4gZmFsc2UsCgogICAgICAgIC8vIGJhc2UgcGF0aCBmb3IgZmlsZW5hbWUgbm9ybWFsaXphdGlvbgogICAgICAgICdzb3VyY2VNYXBSb290cGF0aCcgPT4gJycsCgogICAgICAgIC8vIGJhc2UgcGF0aCBmb3IgZmlsZW5hbWUgbm9ybWFsaXphdGlvbgogICAgICAgICdzb3VyY2VNYXBCYXNlcGF0aCcgPT4gJycKICAgIF07CgogICAgLyoqCiAgICAgKiBUaGUgYmFzZTY0IFZMUSBlbmNvZGVyCiAgICAgKgogICAgICogQHZhciBcU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcFxCYXNlNjRWTFEKICAgICAqLwogICAgcHJvdGVjdGVkICRlbmNvZGVyOwoKICAgIC8qKgogICAgICogQXJyYXkgb2YgbWFwcGluZ3MKICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKiBAcGhwc3Rhbi12YXIgbGlzdDxhcnJheXtnZW5lcmF0ZWRfbGluZTogaW50LCBnZW5lcmF0ZWRfY29sdW1uOiBpbnQsIG9yaWdpbmFsX2xpbmU6IGludCwgb3JpZ2luYWxfY29sdW1uOiBpbnQsIHNvdXJjZV9maWxlOiBzdHJpbmd9PgogICAgICovCiAgICBwcm90ZWN0ZWQgJG1hcHBpbmdzID0gW107CgogICAgLyoqCiAgICAgKiBBcnJheSBvZiBjb250ZW50cyBtYXAKICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCAkY29udGVudHNNYXAgPSBbXTsKCiAgICAvKioKICAgICAqIEZpbGUgdG8gY29udGVudCBtYXAKICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgc3RyaW5nPgogICAgICovCiAgICBwcm90ZWN0ZWQgJHNvdXJjZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBpbnQ+CiAgICAgKi8KICAgIHByb3RlY3RlZCAkc291cmNlS2V5cyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICogQHBocHN0YW4tdmFyIGFycmF5e3NvdXJjZVJvb3Q6IHN0cmluZywgc291cmNlTWFwRmlsZW5hbWU6IHN0cmluZ3xudWxsLCBzb3VyY2VNYXBVUkw6IHN0cmluZ3xudWxsLCBzb3VyY2VNYXBXcml0ZVRvOiBzdHJpbmd8bnVsbCwgb3V0cHV0U291cmNlRmlsZXM6IGJvb2wsIHNvdXJjZU1hcFJvb3RwYXRoOiBzdHJpbmcsIHNvdXJjZU1hcEJhc2VwYXRoOiBzdHJpbmd9CiAgICAgKi8KICAgIHByaXZhdGUgJG9wdGlvbnM7CgogICAgLyoqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBhcnJheXtzb3VyY2VSb290Pzogc3RyaW5nLCBzb3VyY2VNYXBGaWxlbmFtZT86IHN0cmluZ3xudWxsLCBzb3VyY2VNYXBVUkw/OiBzdHJpbmd8bnVsbCwgc291cmNlTWFwV3JpdGVUbz86IHN0cmluZ3xudWxsLCBvdXRwdXRTb3VyY2VGaWxlcz86IGJvb2wsIHNvdXJjZU1hcFJvb3RwYXRoPzogc3RyaW5nLCBzb3VyY2VNYXBCYXNlcGF0aD86IHN0cmluZ30gJG9wdGlvbnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRvcHRpb25zID0gW10pCiAgICB7CiAgICAgICAgJHRoaXMtPm9wdGlvbnMgPSBhcnJheV9yZXBsYWNlKCR0aGlzLT5kZWZhdWx0T3B0aW9ucywgJG9wdGlvbnMpOwogICAgICAgICR0aGlzLT5lbmNvZGVyID0gbmV3IEJhc2U2NFZMUSgpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyBhIG1hcHBpbmcKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICAgICRnZW5lcmF0ZWRMaW5lICAgVGhlIGxpbmUgbnVtYmVyIGluIGdlbmVyYXRlZCBmaWxlCiAgICAgKiBAcGFyYW0gaW50ICAgICRnZW5lcmF0ZWRDb2x1bW4gVGhlIGNvbHVtbiBudW1iZXIgaW4gZ2VuZXJhdGVkIGZpbGUKICAgICAqIEBwYXJhbSBpbnQgICAgJG9yaWdpbmFsTGluZSAgICBUaGUgbGluZSBudW1iZXIgaW4gb3JpZ2luYWwgZmlsZQogICAgICogQHBhcmFtIGludCAgICAkb3JpZ2luYWxDb2x1bW4gIFRoZSBjb2x1bW4gbnVtYmVyIGluIG9yaWdpbmFsIGZpbGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNvdXJjZUZpbGUgICAgICBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZE1hcHBpbmcoJGdlbmVyYXRlZExpbmUsICRnZW5lcmF0ZWRDb2x1bW4sICRvcmlnaW5hbExpbmUsICRvcmlnaW5hbENvbHVtbiwgJHNvdXJjZUZpbGUpCiAgICB7CiAgICAgICAgJHRoaXMtPm1hcHBpbmdzW10gPSBbCiAgICAgICAgICAgICdnZW5lcmF0ZWRfbGluZScgICA9PiAkZ2VuZXJhdGVkTGluZSwKICAgICAgICAgICAgJ2dlbmVyYXRlZF9jb2x1bW4nID0+ICRnZW5lcmF0ZWRDb2x1bW4sCiAgICAgICAgICAgICdvcmlnaW5hbF9saW5lJyAgICA9PiAkb3JpZ2luYWxMaW5lLAogICAgICAgICAgICAnb3JpZ2luYWxfY29sdW1uJyAgPT4gJG9yaWdpbmFsQ29sdW1uLAogICAgICAgICAgICAnc291cmNlX2ZpbGUnICAgICAgPT4gJHNvdXJjZUZpbGUKICAgICAgICBdOwoKICAgICAgICAkdGhpcy0+c291cmNlc1skc291cmNlRmlsZV0gPSAkc291cmNlRmlsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNhdmVzIHRoZSBzb3VyY2UgbWFwIHRvIGEgZmlsZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnQgVGhlIGNvbnRlbnQgdG8gd3JpdGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKgogICAgICogQHRocm93cyBcU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxDb21waWxlckV4Y2VwdGlvbiBJZiB0aGUgZmlsZSBjb3VsZCBub3QgYmUgc2F2ZWQKICAgICAqIEBkZXByZWNhdGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlTWFwKCRjb250ZW50KQogICAgewogICAgICAgICRmaWxlID0gJHRoaXMtPm9wdGlvbnNbJ3NvdXJjZU1hcFdyaXRlVG8nXTsKICAgICAgICBhc3NlcnQoJGZpbGUgIT09IG51bGwpOwogICAgICAgICRkaXIgID0gXGRpcm5hbWUoJGZpbGUpOwoKICAgICAgICAvLyBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QKICAgICAgICBpZiAoISBpc19kaXIoJGRpcikpIHsKICAgICAgICAgICAgLy8gRklYTUU6IGNyZWF0ZSB0aGUgZGlyIGF1dG9tYXRpY2FsbHk/CiAgICAgICAgICAgIHRocm93IG5ldyBDb21waWxlckV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIHNwcmludGYoJ1RoZSBkaXJlY3RvcnkgIiVzIiBkb2VzIG5vdCBleGlzdC4gQ2Fubm90IHNhdmUgdGhlIHNvdXJjZSBtYXAuJywgJGRpcikKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8vIEZJWE1FOiBwcm9wZXIgc2F2aW5nLCB3aXRoIGRpciB3cml0ZSBjaGVjayEKICAgICAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGZpbGUsICRjb250ZW50KSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IENvbXBpbGVyRXhjZXB0aW9uKHNwcmludGYoJ0Nhbm5vdCBzYXZlIHRoZSBzb3VyY2UgbWFwIHRvICIlcyInLCAkZmlsZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBVUkwnXTsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlcyB0aGUgSlNPTiBzb3VyY2UgbWFwCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcHJlZml4IEEgcHJlZml4IGFkZGVkIGluIHRoZSBvdXRwdXQgZmlsZSwgd2hpY2ggbmVlZHMgdG8gc2hpZnQgbWFwcGluZ3MKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0IwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdGVKc29uKCRwcmVmaXggPSAnJykKICAgIHsKICAgICAgICAkc291cmNlTWFwID0gW107CiAgICAgICAgJG1hcHBpbmdzICA9ICR0aGlzLT5nZW5lcmF0ZU1hcHBpbmdzKCRwcmVmaXgpOwoKICAgICAgICAvLyBGaWxlIHZlcnNpb24gKGFsd2F5cyB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIG9iamVjdCkgYW5kIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLgogICAgICAgICRzb3VyY2VNYXBbJ3ZlcnNpb24nXSA9IHNlbGY6OlZFUlNJT047CgogICAgICAgIC8vIEFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBjb2RlIHRoYXQgdGhpcyBzb3VyY2UgbWFwIGlzIGFzc29jaWF0ZWQgd2l0aC4KICAgICAgICAkZmlsZSA9ICR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBGaWxlbmFtZSddOwoKICAgICAgICBpZiAoJGZpbGUpIHsKICAgICAgICAgICAgJHNvdXJjZU1hcFsnZmlsZSddID0gJGZpbGU7CiAgICAgICAgfQoKICAgICAgICAvLyBBbiBvcHRpb25hbCBzb3VyY2Ugcm9vdCwgdXNlZnVsIGZvciByZWxvY2F0aW5nIHNvdXJjZSBmaWxlcyBvbiBhIHNlcnZlciBvciByZW1vdmluZyByZXBlYXRlZCB2YWx1ZXMgaW4gdGhlCiAgICAgICAgLy8gJ3NvdXJjZXMnIGVudHJ5LiBUaGlzIHZhbHVlIGlzIHByZXBlbmRlZCB0byB0aGUgaW5kaXZpZHVhbCBlbnRyaWVzIGluIHRoZSAnc291cmNlJyBmaWVsZC4KICAgICAgICAkcm9vdCA9ICR0aGlzLT5vcHRpb25zWydzb3VyY2VSb290J107CgogICAgICAgIGlmICgkcm9vdCkgewogICAgICAgICAgICAkc291cmNlTWFwWydzb3VyY2VSb290J10gPSAkcm9vdDsKICAgICAgICB9CgogICAgICAgIC8vIEEgbGlzdCBvZiBvcmlnaW5hbCBzb3VyY2VzIHVzZWQgYnkgdGhlICdtYXBwaW5ncycgZW50cnkuCiAgICAgICAgJHNvdXJjZU1hcFsnc291cmNlcyddID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zb3VyY2VzIGFzICRzb3VyY2VGaWxlbmFtZSkgewogICAgICAgICAgICAkc291cmNlTWFwWydzb3VyY2VzJ11bXSA9ICR0aGlzLT5ub3JtYWxpemVGaWxlbmFtZSgkc291cmNlRmlsZW5hbWUpOwogICAgICAgIH0KCiAgICAgICAgLy8gQSBsaXN0IG9mIHN5bWJvbCBuYW1lcyB1c2VkIGJ5IHRoZSAnbWFwcGluZ3MnIGVudHJ5LgogICAgICAgICRzb3VyY2VNYXBbJ25hbWVzJ10gPSBbXTsKCiAgICAgICAgLy8gQSBzdHJpbmcgd2l0aCB0aGUgZW5jb2RlZCBtYXBwaW5nIGRhdGEuCiAgICAgICAgJHNvdXJjZU1hcFsnbWFwcGluZ3MnXSA9ICRtYXBwaW5nczsKCiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydvdXRwdXRTb3VyY2VGaWxlcyddKSB7CiAgICAgICAgICAgIC8vIEFuIG9wdGlvbmFsIGxpc3Qgb2Ygc291cmNlIGNvbnRlbnQsIHVzZWZ1bCB3aGVuIHRoZSAnc291cmNlJyBjYW4ndCBiZSBob3N0ZWQuCiAgICAgICAgICAgIC8vIFRoZSBjb250ZW50cyBhcmUgbGlzdGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBzb3VyY2VzIGFib3ZlLgogICAgICAgICAgICAvLyAnbnVsbCcgbWF5IGJlIHVzZWQgaWYgc29tZSBvcmlnaW5hbCBzb3VyY2VzIHNob3VsZCBiZSByZXRyaWV2ZWQgYnkgbmFtZS4KICAgICAgICAgICAgJHNvdXJjZU1hcFsnc291cmNlc0NvbnRlbnQnXSA9ICR0aGlzLT5nZXRTb3VyY2VzQ29udGVudCgpOwogICAgICAgIH0KCiAgICAgICAgLy8gbGVzcy5qcyBjb21wYXQgZml4ZXMKICAgICAgICBpZiAoXGNvdW50KCRzb3VyY2VNYXBbJ3NvdXJjZXMnXSkgJiYgZW1wdHkoJHNvdXJjZU1hcFsnc291cmNlUm9vdCddKSkgewogICAgICAgICAgICB1bnNldCgkc291cmNlTWFwWydzb3VyY2VSb290J10pOwogICAgICAgIH0KCiAgICAgICAgJGpzb25Tb3VyY2VNYXAgPSBqc29uX2VuY29kZSgkc291cmNlTWFwLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTKTsKCiAgICAgICAgaWYgKGpzb25fbGFzdF9lcnJvcigpICE9PSBKU09OX0VSUk9SX05PTkUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKGpzb25fbGFzdF9lcnJvcl9tc2coKSk7CiAgICAgICAgfQoKICAgICAgICBhc3NlcnQoJGpzb25Tb3VyY2VNYXAgIT09IGZhbHNlKTsKCiAgICAgICAgcmV0dXJuICRqc29uU291cmNlTWFwOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc291cmNlcyBjb250ZW50cwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW118bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U291cmNlc0NvbnRlbnQoKQogICAgewogICAgICAgIGlmIChlbXB0eSgkdGhpcy0+c291cmNlcykpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkY29udGVudCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c291cmNlcyBhcyAkc291cmNlRmlsZSkgewogICAgICAgICAgICAkY29udGVudFtdID0gZmlsZV9nZXRfY29udGVudHMoJHNvdXJjZUZpbGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjb250ZW50OwogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGVzIHRoZSBtYXBwaW5ncyBzdHJpbmcKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwcmVmaXggQSBwcmVmaXggYWRkZWQgaW4gdGhlIG91dHB1dCBmaWxlLCB3aGljaCBuZWVkcyB0byBzaGlmdCBtYXBwaW5ncwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZU1hcHBpbmdzKCRwcmVmaXggPSAnJykKICAgIHsKICAgICAgICBpZiAoISBcY291bnQoJHRoaXMtPm1hcHBpbmdzKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkcHJlZml4TGluZXMgPSBzdWJzdHJfY291bnQoJHByZWZpeCwgIlxuIik7CiAgICAgICAgJGxhc3RQcmVmaXhOZXdMaW5lID0gc3RycnBvcygkcHJlZml4LCAiXG4iKTsKICAgICAgICAkbGFzdFByZWZpeExpbmVTdGFydCA9IGZhbHNlID09PSAkbGFzdFByZWZpeE5ld0xpbmUgPyAwIDogJGxhc3RQcmVmaXhOZXdMaW5lICsgMTsKICAgICAgICAkcHJlZml4Q29sdW1uID0gc3RybGVuKCRwcmVmaXgpIC0gJGxhc3RQcmVmaXhMaW5lU3RhcnQ7CgogICAgICAgICR0aGlzLT5zb3VyY2VLZXlzID0gYXJyYXlfZmxpcChhcnJheV9rZXlzKCR0aGlzLT5zb3VyY2VzKSk7CgogICAgICAgIC8vIGdyb3VwIG1hcHBpbmdzIGJ5IGdlbmVyYXRlZCBsaW5lIG51bWJlci4KICAgICAgICAkZ3JvdXBlZE1hcCA9ICRncm91cGVkTWFwRW5jb2RlZCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+bWFwcGluZ3MgYXMgJG0pIHsKICAgICAgICAgICAgJGdyb3VwZWRNYXBbJG1bJ2dlbmVyYXRlZF9saW5lJ11dW10gPSAkbTsKICAgICAgICB9CgogICAgICAgIGtzb3J0KCRncm91cGVkTWFwKTsKCiAgICAgICAgJGxhc3RHZW5lcmF0ZWRMaW5lID0gJGxhc3RPcmlnaW5hbEluZGV4ID0gJGxhc3RPcmlnaW5hbExpbmUgPSAkbGFzdE9yaWdpbmFsQ29sdW1uID0gMDsKCiAgICAgICAgZm9yZWFjaCAoJGdyb3VwZWRNYXAgYXMgJGxpbmVOdW1iZXIgPT4gJGxpbmVNYXApIHsKICAgICAgICAgICAgaWYgKCRsaW5lTnVtYmVyID4gMSkgewogICAgICAgICAgICAgICAgLy8gVGhlIHByZWZpeCBvbmx5IGltcGFjdHMgdGhlIGNvbHVtbiBmb3IgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG9yaWdpbmFsIG91dHB1dAogICAgICAgICAgICAgICAgJHByZWZpeENvbHVtbiA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGxpbmVOdW1iZXIgKz0gJHByZWZpeExpbmVzOwoKICAgICAgICAgICAgd2hpbGUgKCsrJGxhc3RHZW5lcmF0ZWRMaW5lIDwgJGxpbmVOdW1iZXIpIHsKICAgICAgICAgICAgICAgICRncm91cGVkTWFwRW5jb2RlZFtdID0gJzsnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbGluZU1hcEVuY29kZWQgPSBbXTsKICAgICAgICAgICAgJGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGxpbmVNYXAgYXMgJG0pIHsKICAgICAgICAgICAgICAgICRnZW5lcmF0ZWRDb2x1bW4gPSAkbVsnZ2VuZXJhdGVkX2NvbHVtbiddICsgJHByZWZpeENvbHVtbjsKCiAgICAgICAgICAgICAgICAkbWFwRW5jb2RlZCA9ICR0aGlzLT5lbmNvZGVyLT5lbmNvZGUoJGdlbmVyYXRlZENvbHVtbiAtICRsYXN0R2VuZXJhdGVkQ29sdW1uKTsKICAgICAgICAgICAgICAgICRsYXN0R2VuZXJhdGVkQ29sdW1uID0gJGdlbmVyYXRlZENvbHVtbjsKCiAgICAgICAgICAgICAgICAvLyBmaW5kIHRoZSBpbmRleAogICAgICAgICAgICAgICAgaWYgKCRtWydzb3VyY2VfZmlsZSddKSB7CiAgICAgICAgICAgICAgICAgICAgJGluZGV4ID0gJHRoaXMtPmZpbmRGaWxlSW5kZXgoJG1bJ3NvdXJjZV9maWxlJ10pOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJGluZGV4ICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbWFwRW5jb2RlZCAuPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCRpbmRleCAtICRsYXN0T3JpZ2luYWxJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0T3JpZ2luYWxJbmRleCA9ICRpbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkIGluIFNvdXJjZU1hcCBzcGVjIHZlcnNpb24gMwogICAgICAgICAgICAgICAgICAgICAgICAkbWFwRW5jb2RlZCAuPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCRtWydvcmlnaW5hbF9saW5lJ10gLSAxIC0gJGxhc3RPcmlnaW5hbExpbmUpOwogICAgICAgICAgICAgICAgICAgICAgICAkbGFzdE9yaWdpbmFsTGluZSA9ICRtWydvcmlnaW5hbF9saW5lJ10gLSAxOwogICAgICAgICAgICAgICAgICAgICAgICAkbWFwRW5jb2RlZCAuPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCRtWydvcmlnaW5hbF9jb2x1bW4nXSAtICRsYXN0T3JpZ2luYWxDb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAkbGFzdE9yaWdpbmFsQ29sdW1uID0gJG1bJ29yaWdpbmFsX2NvbHVtbiddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkbGluZU1hcEVuY29kZWRbXSA9ICRtYXBFbmNvZGVkOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZ3JvdXBlZE1hcEVuY29kZWRbXSA9IGltcGxvZGUoJywnLCAkbGluZU1hcEVuY29kZWQpIC4gJzsnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJ0cmltKGltcGxvZGUoJGdyb3VwZWRNYXBFbmNvZGVkKSwgJzsnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbmRzIHRoZSBpbmRleCBmb3IgdGhlIGZpbGVuYW1lCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxmYWxzZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmluZEZpbGVJbmRleCgkZmlsZW5hbWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2VLZXlzWyRmaWxlbmFtZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBOb3JtYWxpemUgZmlsZW5hbWUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBub3JtYWxpemVGaWxlbmFtZSgkZmlsZW5hbWUpCiAgICB7CiAgICAgICAgJGZpbGVuYW1lID0gJHRoaXMtPmZpeFdpbmRvd3NQYXRoKCRmaWxlbmFtZSk7CiAgICAgICAgJHJvb3RwYXRoID0gJHRoaXMtPm9wdGlvbnNbJ3NvdXJjZU1hcFJvb3RwYXRoJ107CiAgICAgICAgJGJhc2VQYXRoID0gJHRoaXMtPm9wdGlvbnNbJ3NvdXJjZU1hcEJhc2VwYXRoJ107CgogICAgICAgIC8vICJUcmltIiB0aGUgJ3NvdXJjZU1hcEJhc2VwYXRoJyBmcm9tIHRoZSBvdXRwdXQgZmlsZW5hbWUuCiAgICAgICAgaWYgKFxzdHJsZW4oJGJhc2VQYXRoKSAmJiBzdHJwb3MoJGZpbGVuYW1lLCAkYmFzZVBhdGgpID09PSAwKSB7CiAgICAgICAgICAgICRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZW5hbWUsIFxzdHJsZW4oJGJhc2VQYXRoKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1vdmUgZXh0cmEgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMuCiAgICAgICAgaWYgKHN0cnBvcygkZmlsZW5hbWUsICdcXCcpID09PSAwIHx8IHN0cnBvcygkZmlsZW5hbWUsICcvJykgPT09IDApIHsKICAgICAgICAgICAgJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlbmFtZSwgMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJvb3RwYXRoIC4gJGZpbGVuYW1lOwogICAgfQoKICAgIC8qKgogICAgICogRml4IHdpbmRvd3MgcGF0aHMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoCiAgICAgKiBAcGFyYW0gYm9vbCAgICRhZGRFbmRTbGFzaAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmaXhXaW5kb3dzUGF0aCgkcGF0aCwgJGFkZEVuZFNsYXNoID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHNsYXNoID0gKCRhZGRFbmRTbGFzaCkgPyAnLycgOiAnJzsKCiAgICAgICAgaWYgKCEgZW1wdHkoJHBhdGgpKSB7CiAgICAgICAgICAgICRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCk7CiAgICAgICAgICAgICRwYXRoID0gcnRyaW0oJHBhdGgsICcvJykgLiAkc2xhc2g7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBhdGg7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Type.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIEJsb2NrL25vZGUgdHlwZXMKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKi8KY2xhc3MgVHlwZQp7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0FTU0lHTiA9ICdhc3NpZ24nOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9BVF9ST09UID0gJ2F0LXJvb3QnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9CTE9DSyA9ICdibG9jayc7CiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9CUkVBSyA9ICdicmVhayc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0NIQVJTRVQgPSAnY2hhcnNldCc7CiAgICBjb25zdCBUX0NPTE9SID0gJ2NvbG9yJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfQ09NTUVOVCA9ICdjb21tZW50JzsKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0NPTlRJTlVFID0gJ2NvbnRpbnVlJzsKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0NPTlRST0wgPSAnY29udHJvbCc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0NVU1RPTV9QUk9QRVJUWSA9ICdjdXN0b20nOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9ERUJVRyA9ICdkZWJ1Zyc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0RJUkVDVElWRSA9ICdkaXJlY3RpdmUnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9FQUNIID0gJ2VhY2gnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9FTFNFID0gJ2Vsc2UnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9FTFNFSUYgPSAnZWxzZWlmJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfRVJST1IgPSAnZXJyb3InOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9FWFBSRVNTSU9OID0gJ2V4cCc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0VYVEVORCA9ICdleHRlbmQnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9GT1IgPSAnZm9yJzsKICAgIGNvbnN0IFRfRlVOQ1RJT04gPSAnZnVuY3Rpb24nOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9GVU5DVElPTl9SRUZFUkVOQ0UgPSAnZnVuY3Rpb24tcmVmZXJlbmNlJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfRlVOQ1RJT05fQ0FMTCA9ICdmbmNhbGwnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9IU0wgPSAnaHNsJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfSFdCID0gJ2h3Yic7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0lGID0gJ2lmJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfSU1QT1JUID0gJ2ltcG9ydCc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0lOQ0xVREUgPSAnaW5jbHVkZSc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0lOVEVSUE9MQVRFID0gJ2ludGVycG9sYXRlJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfSU5URVJQT0xBVEVEID0gJ2ludGVycG9sYXRlZCc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX0tFWVdPUkQgPSAna2V5d29yZCc7CiAgICBjb25zdCBUX0xJU1QgPSAnbGlzdCc7CiAgICBjb25zdCBUX01BUCA9ICdtYXAnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9NRURJQSA9ICdtZWRpYSc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX01FRElBX0VYUFJFU1NJT04gPSAnbWVkaWFFeHAnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9NRURJQV9UWVBFID0gJ21lZGlhVHlwZSc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX01FRElBX1ZBTFVFID0gJ21lZGlhVmFsdWUnOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9NSVhJTiA9ICdtaXhpbic7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX01JWElOX0NPTlRFTlQgPSAnbWl4aW5fY29udGVudCc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX05FU1RFRF9QUk9QRVJUWSA9ICduZXN0ZWRwcm9wJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfTk9UID0gJ25vdCc7CiAgICBjb25zdCBUX05VTEwgPSAnbnVsbCc7CiAgICBjb25zdCBUX05VTUJFUiA9ICdudW1iZXInOwogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgY29uc3QgVF9SRVRVUk4gPSAncmV0dXJuJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfUk9PVCA9ICdyb290JzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfU0NTU1BIUF9JTVBPUlRfT05DRSA9ICdzY3NzcGhwLWltcG9ydC1vbmNlJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfU0VMRiA9ICdzZWxmJzsKICAgIGNvbnN0IFRfU1RSSU5HID0gJ3N0cmluZyc7CiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBjb25zdCBUX1VOQVJZID0gJ3VuYXJ5JzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfVkFSSUFCTEUgPSAndmFyJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfV0FSTiA9ICd3YXJuJzsKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGNvbnN0IFRfV0hJTEUgPSAnd2hpbGUnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Util.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxCYXNlXFJhbmdlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxSYW5nZUV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxOb2RlXE51bWJlcjsKCi8qKgogKiBVdGlsaXR5IGZ1bmN0aW9ucwogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgVXRpbAp7CiAgICAvKioKICAgICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGZhbGxzIHdpdGhpbiBgcmFuZ2VgIChpbmNsdXNpdmUpLCBsZWF2aW5nCiAgICAgKiByb29tIGZvciBzbGlnaHQgZmxvYXRpbmctcG9pbnQgZXJyb3JzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgJG5hbWUgIFRoZSBuYW1lIG9mIHRoZSB2YWx1ZS4gVXNlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZS4KICAgICAqIEBwYXJhbSBSYW5nZSAgICAgICAgJHJhbmdlIFJhbmdlIG9mIHZhbHVlcy4KICAgICAqIEBwYXJhbSBhcnJheXxOdW1iZXIgJHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgJHVuaXQgIFRoZSB1bml0IG9mIHRoZSB2YWx1ZS4gVXNlZCBpbiBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZCBgdmFsdWVgIGFkanVzdGVkIHRvIGZhbGwgd2l0aGluIHJhbmdlLCBpZiBpdCB3YXMgb3V0c2lkZSBieSBhIGZsb2F0aW5nLXBvaW50IG1hcmdpbi4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFJhbmdlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tSYW5nZSgkbmFtZSwgUmFuZ2UgJHJhbmdlLCAkdmFsdWUsICR1bml0ID0gJycpCiAgICB7CiAgICAgICAgJHZhbCA9ICR2YWx1ZVsxXTsKICAgICAgICAkZ3JhY2UgPSBuZXcgUmFuZ2UoLTAuMDAwMDEsIDAuMDAwMDEpOwoKICAgICAgICBpZiAoISBcaXNfbnVtZXJpYygkdmFsKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFeGNlcHRpb24oIiRuYW1lIHskdmFsfSBpcyBub3QgYSBudW1iZXIuIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHJhbmdlLT5pbmNsdWRlcygkdmFsKSkgewogICAgICAgICAgICByZXR1cm4gJHZhbDsKICAgICAgICB9CgogICAgICAgIGlmICgkZ3JhY2UtPmluY2x1ZGVzKCR2YWwgLSAkcmFuZ2UtPmZpcnN0KSkgewogICAgICAgICAgICByZXR1cm4gJHJhbmdlLT5maXJzdDsKICAgICAgICB9CgogICAgICAgIGlmICgkZ3JhY2UtPmluY2x1ZGVzKCR2YWwgLSAkcmFuZ2UtPmxhc3QpKSB7CiAgICAgICAgICAgIHJldHVybiAkcmFuZ2UtPmxhc3Q7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFeGNlcHRpb24oIiRuYW1lIHskdmFsfSBtdXN0IGJlIGJldHdlZW4geyRyYW5nZS0+Zmlyc3R9IGFuZCB7JHJhbmdlLT5sYXN0fSR1bml0Iik7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgVVJJIGNvbXBvbmVudAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50KCRzdHJpbmcpCiAgICB7CiAgICAgICAgJHJldmVydCA9IFsnJTIxJyA9PiAnIScsICclMkEnID0+ICcqJywgJyUyNycgPT4gIiciLCAnJTI4JyA9PiAnKCcsICclMjknID0+ICcpJ107CgogICAgICAgIHJldHVybiBzdHJ0cihyYXd1cmxlbmNvZGUoJHN0cmluZyksICRyZXZlcnQpOwogICAgfQoKICAgIC8qKgogICAgICogbWJfY2hyKCkgd3JhcHBlcgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGNvZGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iQ2hyKCRjb2RlKQogICAgewogICAgICAgIC8vIFVzZSB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uIGlmIGF2YWlsYWJsZSwgYnV0IG5vdCBvbiBQSFAgNy4yIGFzIG1iX2NocigwKSBpcyBidWdneSB0aGVyZQogICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPiA3MDMwMCAmJiBcZnVuY3Rpb25fZXhpc3RzKCdtYl9jaHInKSkgewogICAgICAgICAgICByZXR1cm4gbWJfY2hyKCRjb2RlLCAnVVRGLTgnKTsKICAgICAgICB9CgogICAgICAgIGlmICgweDgwID4gJGNvZGUgJT0gMHgyMDAwMDApIHsKICAgICAgICAgICAgJHMgPSBcY2hyKCRjb2RlKTsKICAgICAgICB9IGVsc2VpZiAoMHg4MDAgPiAkY29kZSkgewogICAgICAgICAgICAkcyA9IFxjaHIoMHhDMCB8ICRjb2RlID4+IDYpIC4gXGNocigweDgwIHwgJGNvZGUgJiAweDNGKTsKICAgICAgICB9IGVsc2VpZiAoMHgxMDAwMCA+ICRjb2RlKSB7CiAgICAgICAgICAgICRzID0gXGNocigweEUwIHwgJGNvZGUgPj4gMTIpIC4gXGNocigweDgwIHwgJGNvZGUgPj4gNiAmIDB4M0YpIC4gXGNocigweDgwIHwgJGNvZGUgJiAweDNGKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcyA9IFxjaHIoMHhGMCB8ICRjb2RlID4+IDE4KSAuIFxjaHIoMHg4MCB8ICRjb2RlID4+IDEyICYgMHgzRikKICAgICAgICAgICAgICAgIC4gXGNocigweDgwIHwgJGNvZGUgPj4gNiAmIDB4M0YpIC4gXGNocigweDgwIHwgJGNvZGUgJiAweDNGKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkczsKICAgIH0KCiAgICAvKioKICAgICAqIG1iX3N0cmxlbigpIHdyYXBwZXIKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJTdHJsZW4oJHN0cmluZykKICAgIHsKICAgICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpZiBhdmFpbGFibGUuCiAgICAgICAgaWYgKFxmdW5jdGlvbl9leGlzdHMoJ21iX3N0cmxlbicpKSB7CiAgICAgICAgICAgIHJldHVybiBtYl9zdHJsZW4oJHN0cmluZywgJ1VURi04Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGZ1bmN0aW9uX2V4aXN0cygnaWNvbnZfc3RybGVuJykpIHsKICAgICAgICAgICAgcmV0dXJuIChpbnQpIEBpY29udl9zdHJsZW4oJHN0cmluZywgJ1VURi04Jyk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdFaXRoZXIgbWJzdHJpbmcgKHJlY29tbWVuZGVkKSBvciBpY29udiBpcyBuZWNlc3NhcnkgdG8gdXNlIFNjc3NwaHAuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBtYl9zdWJzdHIoKSB3cmFwcGVyCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcKICAgICAqIEBwYXJhbSBpbnQgJHN0YXJ0CiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgJGxlbmd0aAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYlN1YnN0cigkc3RyaW5nLCAkc3RhcnQsICRsZW5ndGggPSBudWxsKQogICAgewogICAgICAgIC8vIFVzZSB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uIGlmIGF2YWlsYWJsZS4KICAgICAgICBpZiAoXGZ1bmN0aW9uX2V4aXN0cygnbWJfc3Vic3RyJykpIHsKICAgICAgICAgICAgcmV0dXJuIG1iX3N1YnN0cigkc3RyaW5nLCAkc3RhcnQsICRsZW5ndGgsICdVVEYtOCcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxmdW5jdGlvbl9leGlzdHMoJ2ljb252X3N1YnN0cicpKSB7CiAgICAgICAgICAgIGlmICgkc3RhcnQgPCAwKSB7CiAgICAgICAgICAgICAgICAkc3RhcnQgPSBzdGF0aWM6Om1iU3RybGVuKCRzdHJpbmcpICsgJHN0YXJ0OwogICAgICAgICAgICAgICAgaWYgKCRzdGFydCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAkc3RhcnQgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAobnVsbCA9PT0gJGxlbmd0aCkgewogICAgICAgICAgICAgICAgJGxlbmd0aCA9IDIxNDc0ODM2NDc7CiAgICAgICAgICAgIH0gZWxzZWlmICgkbGVuZ3RoIDwgMCkgewogICAgICAgICAgICAgICAgJGxlbmd0aCA9IHN0YXRpYzo6bWJTdHJsZW4oJHN0cmluZykgKyAkbGVuZ3RoIC0gJHN0YXJ0OwogICAgICAgICAgICAgICAgaWYgKCRsZW5ndGggPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gKHN0cmluZylpY29udl9zdWJzdHIoJHN0cmluZywgJHN0YXJ0LCAkbGVuZ3RoLCAnVVRGLTgnKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0VpdGhlciBtYnN0cmluZyAocmVjb21tZW5kZWQpIG9yIGljb252IGlzIG5lY2Vzc2FyeSB0byB1c2UgU2Nzc3BocC4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIG1iX3N0cnBvcyB3cmFwcGVyCiAgICAgKiBAcGFyYW0gc3RyaW5nICRoYXlzdGFjawogICAgICogQHBhcmFtIHN0cmluZyAkbmVlZGxlCiAgICAgKiBAcGFyYW0gaW50ICRvZmZzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxmYWxzZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iU3RycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCA9IDApCiAgICB7CiAgICAgICAgaWYgKFxmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnBvcycpKSB7CiAgICAgICAgICAgIHJldHVybiBtYl9zdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0LCAnVVRGLTgnKTsKICAgICAgICB9CgogICAgICAgIGlmIChcZnVuY3Rpb25fZXhpc3RzKCdpY29udl9zdHJwb3MnKSkgewogICAgICAgICAgICByZXR1cm4gaWNvbnZfc3RycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCwgJ1VURi04Jyk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdFaXRoZXIgbWJzdHJpbmcgKHJlY29tbWVuZGVkKSBvciBpY29udiBpcyBuZWNlc3NhcnkgdG8gdXNlIFNjc3NwaHAuJyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Util/Path.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcVXRpbDsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIFBhdGgKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBYnNvbHV0ZSgkcGF0aCkKICAgIHsKICAgICAgICBpZiAoJHBhdGggPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcGF0aFswXSA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxESVJFQ1RPUllfU0VQQVJBVE9SICE9PSAnXFwnKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcGF0aFswXSA9PT0gJ1xcJykgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChcc3RybGVuKCRwYXRoKSA8IDMpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwYXRoWzFdICE9PSAnOicpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwYXRoWzJdICE9PSAnLycgJiYgJHBhdGhbMl0gIT09ICdcXCcpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXltBLVphLXpdJC8nLCAkcGF0aFswXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXJ0MQogICAgICogQHBhcmFtIHN0cmluZyAkcGFydDIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGpvaW4oJHBhcnQxLCAkcGFydDIpCiAgICB7CiAgICAgICAgaWYgKCRwYXJ0MSA9PT0gJycgfHwgc2VsZjo6aXNBYnNvbHV0ZSgkcGFydDIpKSB7CiAgICAgICAgICAgIHJldHVybiAkcGFydDI7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHBhcnQyID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gJHBhcnQxOwogICAgICAgIH0KCiAgICAgICAgJGxhc3QgPSAkcGFydDFbXHN0cmxlbigkcGFydDEpIC0gMV07CiAgICAgICAgJHNlcGFyYXRvciA9IFxESVJFQ1RPUllfU0VQQVJBVE9SOwoKICAgICAgICBpZiAoJGxhc3QgPT09ICcvJyB8fCAkbGFzdCA9PT0gXERJUkVDVE9SWV9TRVBBUkFUT1IpIHsKICAgICAgICAgICAgJHNlcGFyYXRvciA9ICcnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwYXJ0MSAuICRzZXBhcmF0b3IgLiAkcGFydDI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/ValueConverter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxOb2RlXE51bWJlcjsKCmZpbmFsIGNsYXNzIFZhbHVlQ29udmVydGVyCnsKICAgIC8vIFByZXZlbnQgaW5zdGFudGlhdGluZyBpdAogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXMgYSB2YWx1ZSBmcm9tIGEgU2NzcyBzb3VyY2Ugc3RyaW5nLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBndWFyYW50ZWVkIHRvIGJlIHN1cHBvcnRlZCBieSB0aGUKICAgICAqIENvbXBpbGVyIG1ldGhvZHMgZm9yIHJlZ2lzdGVyaW5nIGN1c3RvbSB2YXJpYWJsZXMuIE5vIG90aGVyCiAgICAgKiBndWFyYW50ZWUgYWJvdXQgaXQgaXMgcHJvdmlkZWQuIEl0IHNob3VsZCBiZSBjb25zaWRlcmVkCiAgICAgKiBvcGFxdWUgdmFsdWVzIGJ5IHRoZSBjYWxsZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc291cmNlCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlVmFsdWUoJHNvdXJjZSkKICAgIHsKICAgICAgICAkcGFyc2VyID0gbmV3IFBhcnNlcihfX0NMQVNTX18pOwoKICAgICAgICBpZiAoISRwYXJzZXItPnBhcnNlVmFsdWUoJHNvdXJjZSwgJHZhbHVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdJbnZhbGlkIHZhbHVlIHNvdXJjZSAiJXMiLicsICRzb3VyY2UpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIFBIUCB2YWx1ZSB0byBhIFNhc3MgdmFsdWUKICAgICAqCiAgICAgKiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgZ3VhcmFudGVlZCB0byBiZSBzdXBwb3J0ZWQgYnkgdGhlCiAgICAgKiBDb21waWxlciBtZXRob2RzIGZvciByZWdpc3RlcmluZyBjdXN0b20gdmFyaWFibGVzLiBObyBvdGhlcgogICAgICogZ3VhcmFudGVlIGFib3V0IGl0IGlzIHByb3ZpZGVkLiBJdCBzaG91bGQgYmUgY29uc2lkZXJlZAogICAgICogb3BhcXVlIHZhbHVlcyBieSB0aGUgY2FsbGVyLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbVBocCgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIE51bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkgJiYgaXNzZXQoJHZhbHVlWzBdKSAmJiBcaW5fYXJyYXkoJHZhbHVlWzBdLCBbVHlwZTo6VF9OVUxMLCBUeXBlOjpUX0NPTE9SLCBUeXBlOjpUX0tFWVdPUkQsIFR5cGU6OlRfTElTVCwgVHlwZTo6VF9NQVAsIFR5cGU6OlRfU1RSSU5HXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIENvbXBpbGVyOjokbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUgPT09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuIENvbXBpbGVyOjokdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBDb21waWxlcjo6JGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuIENvbXBpbGVyOjokZW1wdHlTdHJpbmc7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX2ludCgkdmFsdWUpIHx8IFxpc19mbG9hdCgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCR2YWx1ZSwgJycpOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19zdHJpbmcoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAnIicsIFskdmFsdWVdXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ0Nhbm5vdCBjb252ZXJ0IHRoZSB2YWx1ZSBvZiB0eXBlICIlcyIgdG8gYSBTYXNzIHZhbHVlLicsIGdldHR5cGUoJHZhbHVlKSkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Version.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKLyoqCiAqIFNDU1NQSFAgdmVyc2lvbgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqLwpjbGFzcyBWZXJzaW9uCnsKICAgIGNvbnN0IFZFUlNJT04gPSAnMS4xMS4wJzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Warn.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDIwIExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgU2Nzc1BocFxTY3NzUGhwOwoKZmluYWwgY2xhc3MgV2Fybgp7CiAgICAvKioKICAgICAqIEB2YXIgY2FsbGFibGV8bnVsbAogICAgICogQHBocHN0YW4tdmFyIChjYWxsYWJsZShzdHJpbmcsIGJvb2wpOiB2b2lkKXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRjYWxsYmFjazsKCiAgICAvKioKICAgICAqIFByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYEBpbXBvcnRgIG9yIGZ1bmN0aW9uIGNhbGwuCiAgICAgKgogICAgICogVGhpcyBtYXkgb25seSBiZSBjYWxsZWQgd2l0aGluIGEgY3VzdG9tIGZ1bmN0aW9uIG9yIGltcG9ydGVyIGNhbGxiYWNrLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3YXJuaW5nKCRtZXNzYWdlKQogICAgewogICAgICAgIHNlbGY6OnJlcG9ydFdhcm5pbmcoJG1lc3NhZ2UsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFByaW50cyBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYEBpbXBvcnRgIG9yIGZ1bmN0aW9uIGNhbGwuCiAgICAgKgogICAgICogVGhpcyBtYXkgb25seSBiZSBjYWxsZWQgd2l0aGluIGEgY3VzdG9tIGZ1bmN0aW9uIG9yIGltcG9ydGVyIGNhbGxiYWNrLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZXByZWNhdGlvbigkbWVzc2FnZSkKICAgIHsKICAgICAgICBzZWxmOjpyZXBvcnRXYXJuaW5nKCRtZXNzYWdlLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBjYWxsYWJsZXxudWxsICRjYWxsYmFjawogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGV8bnVsbCBUaGUgcHJldmlvdXMgd2FybiBjYWxsYmFjawogICAgICoKICAgICAqIEBwaHBzdGFuLXBhcmFtIChjYWxsYWJsZShzdHJpbmcsIGJvb2wpOiB2b2lkKXxudWxsICRjYWxsYmFjawogICAgICoKICAgICAqIEBwaHBzdGFuLXJldHVybiAoY2FsbGFibGUoc3RyaW5nLCBib29sKTogdm9pZCl8bnVsbAogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldENhbGxiYWNrKGNhbGxhYmxlICRjYWxsYmFjayA9IG51bGwpCiAgICB7CiAgICAgICAgJHByZXZpb3VzQ2FsbGJhY2sgPSBzZWxmOjokY2FsbGJhY2s7CiAgICAgICAgc2VsZjo6JGNhbGxiYWNrID0gJGNhbGxiYWNrOwoKICAgICAgICByZXR1cm4gJHByZXZpb3VzQ2FsbGJhY2s7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gYm9vbCAgICRkZXByZWNhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZXBvcnRXYXJuaW5nKCRtZXNzYWdlLCAkZGVwcmVjYXRpb24pCiAgICB7CiAgICAgICAgaWYgKHNlbGY6OiRjYWxsYmFjayA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oJ1RoZSB3YXJuaW5nIFJlcG9ydGVyIG1heSBvbmx5IGJlIGNhbGxlZCB3aXRoaW4gYSBjdXN0b20gZnVuY3Rpb24gb3IgaW1wb3J0ZXIgY2FsbGJhY2suJyk7CiAgICAgICAgfQoKICAgICAgICBcY2FsbF91c2VyX2Z1bmMoc2VsZjo6JGNhbGxiYWNrLCAkbWVzc2FnZSwgJGRlcHJlY2F0aW9uKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP2/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP2/class.Preprocessor_ScssPHP2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZShjbXNfam9pbl9wYXRoKCR0aGlzLT5nZXRNb2R1bGVQYXRoKCksICdsaWInLCAndmVuZG9yJywgJ2F1dG9sb2FkLnBocCcpKTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxlcjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxPdXRwdXRTdHlsZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxEZXByZWNhdGlvbjsKCmNsYXNzIFByZXByb2Nlc3Nvcl9TY3NzUEhQMiBleHRlbmRzIFByZXByb2Nlc3NvciB7CgogICAgY29uc3QgRlJJRU5ETFlfTkFNRSA9ICdTY3NzUEhQIHYyICgyLjEuMCknOwogICAgY29uc3QgREVTQ1JJUFRJT04gPSAnQSBQSFAgLyBTQVNTIHByZS1wcm9jZXNzb3InOwogICAgY29uc3QgQVVUSE9SID0gJ0xlYWYnOwogICAgY29uc3QgV0VCU0lURSA9ICdodHRwczovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAvJzsKICAgIGNvbnN0IE5PVEUgPSAnVmVyc2lvbiAyIGhhcyBiZWVuIHJld3JpdHRlbiBhbmQgaXMgbm93IGEgcG9ydCBvZiBEYXJ0LVNhc3MuIERvZXMgbm90IGltcGxlbWVudCBTYXNzIG1vZHVsZXMgeWV0LiBOZWVkcyBQSFA4LjErJzsKICAgIGNvbnN0IExPR08gPSAnbG9nby5wbmcnOwogICAgY29uc3QgUFJJT1JJVFkgPSA0OwoKICAgIHB1YmxpYyAkcGFyc2VyOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OkxvYWQoKTsKICAgICAgICAkdGhpcy0+cGFyc2VyID0gbmV3IENvbXBpbGVyKCk7CgogICAgICAgIGlmICgkdGhpcy0+bWluaWZ5KSB7CiAgICAgICAgICAgICR0aGlzLT5wYXJzZXItPnNldE91dHB1dFN0eWxlKE91dHB1dFN0eWxlOjpDT01QUkVTU0VEKTsKICAgICAgICB9CgogICAgICAgIC8vIFNpbGVuY2UgZGVwcmVjYXRpb25zIGZyb20gZGVwZW5kZW5jaWVzIChlLmcuIEZvdW5kYXRpb24pCiAgICAgICAgJHRoaXMtPnBhcnNlci0+c2V0UXVpZXREZXBzKHRydWUpOwogICAgICAgICR0aGlzLT5wYXJzZXItPnNldFNpbGVuY2VEZXByZWNhdGlvbnMoWwogICAgICAgICAgICBEZXByZWNhdGlvbjo6bWl4ZWREZWNscywKICAgICAgICAgICAgRGVwcmVjYXRpb246OmFic1BlcmNlbnQsCiAgICAgICAgXSk7CgogICAgICAgIGlmICgkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKSB7CiAgICAgICAgICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CgogICAgICAgICAgICBsaXN0KCRmb28sICR0bXApID0gZXhwbG9kZSgnLy8nLCAkY29uZmlnWydyb290X3VybCddKTsKICAgICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJy8nLCAkdG1wKTsKICAgICAgICAgICAgJGJhc2VQYXRoID0gJyc7CiAgICAgICAgICAgIGlmIChpc3NldCgkdG1wWzFdKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRtcFswXSk7CiAgICAgICAgICAgICAgICAkYmFzZVBhdGggPSBpbXBsb2RlKCcvJywgJHRtcCk7CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICAkdGhpcy0+cGFyc2VyLT5zZXRTb3VyY2VNYXAoQ29tcGlsZXI6OlNPVVJDRV9NQVBfRklMRSk7CiAgICAgICAgICAgICR0aGlzLT5wYXJzZXItPnNldFNvdXJjZU1hcE9wdGlvbnMoWwogICAgICAgICAgICAgICAgJ3NvdXJjZU1hcFVSTCcgICAgICA9PiAkdGhpcy0+c291cmNlX21hcF91cmwsCiAgICAgICAgICAgICAgICAnc291cmNlTWFwQmFzZXBhdGgnID0+ICRjb25maWdbJ3Jvb3RfcGF0aCddLAogICAgICAgICAgICAgICAgJ3NvdXJjZU1hcFJvb3RwYXRoJyA9PiBjbXNfam9pbl9wYXRoKCRiYXNlUGF0aCwgJycpLAogICAgICAgICAgICAgICAgJ3NvdXJjZVJvb3QnICAgICAgICA9PiAnLycsCiAgICAgICAgICAgIF0pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnBhcnNlci0+c2V0SW1wb3J0UGF0aHMoJHRoaXMtPmltcG9ydF9kaXJzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZUNTUygmJGNzcykKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnBhcnNlci0+Y29tcGlsZVN0cmluZygkY3NzKTsKICAgICAgICAgICAgJGNzcyA9ICRyZXN1bHQtPmdldENzcygpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5nZW5lcmF0ZV9zb3VyY2VtYXAgJiYgKCRtYXAgPSAkcmVzdWx0LT5nZXRTb3VyY2VNYXAoKSkgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkdGhpcy0+c291cmNlX21hcF9maWxlLCAkbWFwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICBkZWJ1Z190b19sb2coJGUtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP2/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP2/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q1NTUHJlcHJvY2Vzc29yCj09PT09PT09PT09PT09PQoKQSBtb2R1bGUgdGhhdCBleHRlbmRzIHRoZSBzdHlsZXNoZWV0cyBzeXN0ZW0gb2YgQ01TIE1hZGUgU2ltcGxlIHdpdGggdmFyaW91cyBDU1MgUHJlcHJvY2Vzc29ycy4KClVzZXMgdGhlIHN0YW5kYXJkIFN0eWxlc2hlZXRzIC8gRGVzaWduIG1hbmFnZXIgYW5kIGNhY2hpbmcgc3lzdGVtLiBXb3JrcyB3aXRoIENNU01TIDEuMTEuMTEgKHVudGlsIDEuMykgYW5kIDIuMSsgc2VyaWVzLgoKRm9yIHRoZSBtb21lbnQsIG9ubHkgTEVTUyAvIFNBU1MgcHJlcHJvY2Vzc29ycyBhcmUgcHJvdmlkZWQgKFBIUCBhbmQgY29tbWFuZC1saW5lIC0gaWYgYXZhaWxhYmxlIG9uIHlvdXIgc2VydmVyKSwgYnV0IHlvdSBjYW4gZXh0ZW5kIGl0LiBDb21waWxlcyBCb290c3RyYXAgYW5kIEZvdW5kYXRpb24uClN1cHBvcnRzIFNNQVJUWSBpbnNpZGUgc3R5bGVzaGVldHMgYW5kIGJlZm9yZSBjb21waWxhdGlvbi4KCkNNUyBNYWRlIFNpbXBsZSBtb2R1bGUgcGFnZSBvbiB0aGUgZm9yZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Nzc3ByZXByb2Nlc3Nvcgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/preferences.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnsqIDxoMT57JG1vZC0+TGFuZygncHJlZmVyZW5jZXMnKX08L2gxPiAqfQoKeyRmb3JtX3N0YXJ0fQoKCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KCQk8L3A+Cgk8L2Rpdj4KCgk8YnI+CgoKCTxmaWVsZHNldD4KCQk8bGVnZW5kPgoJCQk8aDM+eyRtb2QtPkxhbmcoJ2Nob29zZV9wcmVwcm9jZXNzb3InKX08L2gzPgoJCTwvbGVnZW5kPgoKCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQl7Zm9yZWFjaCAkcHJlcHJvY2Vzc29ycyBhcyAkZGlyID0+ICRwcmVwcm9jZXNzb3J9CgoJCQkJPGxhYmVsIGNsYXNzPSJwcmVwcm9jZXNzb3IgY19mdWxsIj4KCQkJCQk8ZGl2IGNsYXNzPSJpbnB1dF9yYWRpbyBncmlkXzIiPgoJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InskYWN0aW9uaWR9cHJlcHJvY2Vzc29yIiB2YWx1ZT0ieyRwcmVwcm9jZXNzb3ItPmRpcn0iIHtpZiAkY3VycmVudF9wcmVwcm9jZXNzb3IgZXEgJHByZXByb2Nlc3Nvci0+ZGlyfWNoZWNrZWR7L2lmfT4KCQkJCQk8L2Rpdj4KCgkJCQkJe2lmIGlzc2V0KCRwcmVwcm9jZXNzb3ItPmxvZ28pIGFuZCAhZW1wdHkoJHByZXByb2Nlc3Nvci0+bG9nbyl9CgkJCQkJCTxkaXYgY2xhc3M9ImxvZ28gZ3JpZF8yIj4KCQkJCQkJCTxpbWcgc3JjPSJ7JG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpfS9wcmVwcm9jZXNzb3JzL3skcHJlcHJvY2Vzc29yLT5kaXJ9L3skcHJlcHJvY2Vzc29yLT5sb2dvfSIgd2lkdGg9IjEwMCI+CgkJCQkJCTwvZGl2PgoJCQkJCXsvaWZ9CgoJCQkJCTxkaXYgY2xhc3M9ImRlc2NyaXB0aW9uIGdyaWRfe2lmIGlzc2V0KCRwcmVwcm9jZXNzb3ItPmxvZ28pIGFuZCAhZW1wdHkoJHByZXByb2Nlc3Nvci0+bG9nbyl9OHtlbHNlfTEwey9pZn0iPgoJCQkJCQk8aDI+eyRwcmVwcm9jZXNzb3ItPmZyaWVuZGx5X25hbWV9PC9oMj4KCQkJCQkJPHA+CgkJCQkJCQl7JHByZXByb2Nlc3Nvci0+ZGVzY3JpcHRpb259IC0gQnkgPGEgaHJlZj0ieyRwcmVwcm9jZXNzb3ItPndlYnNpdGV9IiB0YXJnZXQ9Il9ibGFuayI+PGVtPnskcHJlcHJvY2Vzc29yLT5hdXRob3J9PC9lbT48L2E+CgoJCQkJCQkJe2lmICFlbXB0eSgkcHJlcHJvY2Vzc29yLT5ub3RlKX0KCQkJCQkJCQk8YnI+PHN0cm9uZz57JG1vZC0+TGFuZygnbm90ZScpfTwvc3Ryb25nPiB7JHByZXByb2Nlc3Nvci0+bm90ZX0KCQkJCQkJCXsvaWZ9CgkJCQkJCTwvcD4KCQkJCQk8L2Rpdj4KCQkJCTwvbGFiZWw+CgkJCXsvZm9yZWFjaH0KCQk8L2Rpdj4KCgk8L2ZpZWxkc2V0PiB7KkVuZCBwcmUgcHJvY2Vzc29yKn0KCgoJPGZpZWxkc2V0PgoJCTxsZWdlbmQ+PGgzPnskbW9kLT5MYW5nKCdvcHRpb25zJyl9PC9oMz48L2xlZ2VuZD4KCgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJCTxsYWJlbCBmb3I9J2ltcG9ydF9kaXJzJz57JG1vZC0+TGFuZygnaW1wb3J0X2RpcnMnKX08L2xhYmVsPgoJCQk8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9J3skYWN0aW9uaWR9aW1wb3J0X2RpcnMnIGlkPSdpbXBvcnRfZGlycycgdmFsdWU9J3skaW1wb3J0X2RpcnN9JyBzdHlsZT0id2lkdGg6IDkwJSI+CgkJCTwvcD4KCQk8L2Rpdj4KCgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJCTxsYWJlbD57JG1vZC0+TGFuZygnbWluaWZ5Jyl9PC9sYWJlbD4KCQkJPC9wPgoJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJCTxsYWJlbCBmb3I9J21pbmlmeSc+CgkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0neyRhY3Rpb25pZH1taW5pZnknIHZhbHVlPScwJz4KCQkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9J3skYWN0aW9uaWR9bWluaWZ5JyBpZD0nbWluaWZ5JyB2YWx1ZT0nMScge2lmICRtaW5pZnl9Y2hlY2tlZD0iY2hlY2tlZCJ7L2lmfT4KCgkJCQkJeyRtb2QtPkxhbmcoJ21pbmlmeV9sYWJlbCcpfQoJCQkJPC9sYWJlbD4KCQkJPC9wPgoJCTwvZGl2PgoKCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQkJPGxhYmVsPnskbW9kLT5MYW5nKCdnZW5lcmF0ZV9zb3VyY2VtYXAnKX08L2xhYmVsPgoJCQk8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQkJPGxhYmVsIGZvcj0nZ2VuZXJhdGVfc291cmNlbWFwJz4KCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSd7JGFjdGlvbmlkfWdlbmVyYXRlX3NvdXJjZW1hcCcgdmFsdWU9JzAnPgoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0neyRhY3Rpb25pZH1nZW5lcmF0ZV9zb3VyY2VtYXAnIGlkPSdnZW5lcmF0ZV9zb3VyY2VtYXAnIHZhbHVlPScxJyB7aWYgJGdlbmVyYXRlX3NvdXJjZW1hcH1jaGVja2VkPSJjaGVja2VkInsvaWZ9PgoKCQkJCQl7JG1vZC0+TGFuZygnZ2VuZXJhdGVfc291cmNlbWFwX2xhYmVsJyl9CgkJCQk8L2xhYmVsPgoJCQk8L3A+CgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCQk8bGFiZWw+QXV0b3ByZWZpeGVyPC9sYWJlbD4KCQkJPC9wPgoJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJCTxsYWJlbCBmb3I9J3VzZV9hdXRvcHJlZml4ZXInPgoJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9J3skYWN0aW9uaWR9dXNlX2F1dG9wcmVmaXhlcicgdmFsdWU9JzAnPgoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0neyRhY3Rpb25pZH11c2VfYXV0b3ByZWZpeGVyJyBpZD0ndXNlX2F1dG9wcmVmaXhlcicgdmFsdWU9JzEnIHtpZiAkdXNlX2F1dG9wcmVmaXhlcn1jaGVja2VkPSJjaGVja2VkInsvaWZ9PgoKCQkJCQl7JG1vZC0+TGFuZygndXNlX2F1dG9wcmVmaXhlcicpfQoJCQkJPC9sYWJlbD4KCQkJPC9wPgoJCTwvZGl2PgoKCgk8L2ZpZWxkc2V0PgoKCgoKCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CgkJPC9wPgoJPC9kaXY+CgoKCnskZm9ybV9lbmR9Cg==]]></data>
	</file>
</module>
